summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r--tests/auto/corelib/animation/animation.pro9
-rw-r--r--tests/auto/corelib/animation/qabstractanimation/qabstractanimation.pro6
-rw-r--r--tests/auto/corelib/animation/qabstractanimation/tst_qabstractanimation.cpp171
-rw-r--r--tests/auto/corelib/animation/qanimationgroup/qanimationgroup.pro6
-rw-r--r--tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp413
-rw-r--r--tests/auto/corelib/animation/qparallelanimationgroup/qparallelanimationgroup.pro5
-rw-r--r--tests/auto/corelib/animation/qparallelanimationgroup/tst_qparallelanimationgroup.cpp1024
-rw-r--r--tests/auto/corelib/animation/qpauseanimation/qpauseanimation.pro5
-rw-r--r--tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp426
-rw-r--r--tests/auto/corelib/animation/qpropertyanimation/qpropertyanimation.pro5
-rw-r--r--tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp1243
-rw-r--r--tests/auto/corelib/animation/qsequentialanimationgroup/qsequentialanimationgroup.pro6
-rw-r--r--tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp1672
-rw-r--r--tests/auto/corelib/animation/qvariantanimation/qvariantanimation.pro6
-rw-r--r--tests/auto/corelib/animation/qvariantanimation/tst_qvariantanimation.cpp164
-rw-r--r--tests/auto/corelib/codecs/codecs.pro3
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/.gitattributes1
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/.gitignore1
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/QT4-crashtest.txtbin0 -> 34 bytes
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/echo/echo.pro6
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/echo/main.cpp60
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/korean.txt1
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/qtextcodec.pro4
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/test/test.pro35
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp2265
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/utf8.txt1
-rw-r--r--tests/auto/corelib/concurrent/concurrent.pro19
-rw-r--r--tests/auto/corelib/concurrent/qfuture/.gitignore1
-rw-r--r--tests/auto/corelib/concurrent/qfuture/qfuture.pro5
-rw-r--r--tests/auto/corelib/concurrent/qfuture/tst_qfuture.cpp1474
-rw-r--r--tests/auto/corelib/concurrent/qfuture/versioncheck.h49
-rw-r--r--tests/auto/corelib/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro5
-rw-r--r--tests/auto/corelib/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp158
-rw-r--r--tests/auto/corelib/concurrent/qfuturewatcher/.gitignore1
-rw-r--r--tests/auto/corelib/concurrent/qfuturewatcher/qfuturewatcher.pro4
-rw-r--r--tests/auto/corelib/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp930
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentfilter/.gitignore1
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro6
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp1548
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentiteratekernel/.gitignore1
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro5
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp360
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentmap/.gitignore1
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentmap/functions.h130
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentmap/qtconcurrentmap.pro6
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp2448
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro5
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp491
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentrun/.gitignore1
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentrun/qtconcurrentrun.pro5
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp518
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentthreadengine/.gitignore1
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro5
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp536
-rw-r--r--tests/auto/corelib/concurrent/qthreadpool/.gitignore1
-rw-r--r--tests/auto/corelib/concurrent/qthreadpool/qthreadpool.pro4
-rw-r--r--tests/auto/corelib/concurrent/qthreadpool/tst_qthreadpool.cpp870
-rw-r--r--tests/auto/corelib/corelib.pro13
-rw-r--r--tests/auto/corelib/global/global.pro8
-rw-r--r--tests/auto/corelib/global/q_func_info/.gitignore1
-rw-r--r--tests/auto/corelib/global/q_func_info/q_func_info.pro4
-rw-r--r--tests/auto/corelib/global/q_func_info/tst_q_func_info.cpp145
-rw-r--r--tests/auto/corelib/global/qflags/.gitignore1
-rw-r--r--tests/auto/corelib/global/qflags/qflags.pro4
-rw-r--r--tests/auto/corelib/global/qflags/tst_qflags.cpp128
-rw-r--r--tests/auto/corelib/global/qgetputenv/.gitignore1
-rw-r--r--tests/auto/corelib/global/qgetputenv/qgetputenv.pro4
-rw-r--r--tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp84
-rw-r--r--tests/auto/corelib/global/qglobal/.gitignore1
-rw-r--r--tests/auto/corelib/global/qglobal/qglobal.pro4
-rw-r--r--tests/auto/corelib/global/qglobal/tst_qglobal.cpp271
-rw-r--r--tests/auto/corelib/global/qnumeric/.gitignore1
-rw-r--r--tests/auto/corelib/global/qnumeric/qnumeric.pro7
-rw-r--r--tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp124
-rw-r--r--tests/auto/corelib/global/qrand/.gitignore1
-rw-r--r--tests/auto/corelib/global/qrand/qrand.pro4
-rw-r--r--tests/auto/corelib/global/qrand/tst_qrand.cpp87
-rw-r--r--tests/auto/corelib/io/io.pro23
-rw-r--r--tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.pro6
-rw-r--r--tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.qrc5
-rw-r--r--tests/auto/corelib/io/qabstractfileengine/resources/file.txt1
-rw-r--r--tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp794
-rw-r--r--tests/auto/corelib/io/qbuffer/.gitignore1
-rw-r--r--tests/auto/corelib/io/qbuffer/qbuffer.pro4
-rw-r--r--tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp608
-rw-r--r--tests/auto/corelib/io/qdatastream/.gitignore2
-rw-r--r--tests/auto/corelib/io/qdatastream/datastream.q42bin0 -> 668 bytes
-rw-r--r--tests/auto/corelib/io/qdatastream/qdatastream.pro20
-rw-r--r--tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp3232
-rw-r--r--tests/auto/corelib/io/qdebug/.gitignore1
-rw-r--r--tests/auto/corelib/io/qdebug/qdebug.pro4
-rw-r--r--tests/auto/corelib/io/qdebug/tst_qdebug.cpp158
-rw-r--r--tests/auto/corelib/io/qdir/.gitignore1
-rw-r--r--tests/auto/corelib/io/qdir/entrylist/directory/dummy0
-rw-r--r--tests/auto/corelib/io/qdir/entrylist/file0
-rw-r--r--tests/auto/corelib/io/qdir/qdir.pro24
-rw-r--r--tests/auto/corelib/io/qdir/qdir.qrc5
-rw-r--r--tests/auto/corelib/io/qdir/resources/entryList/file1.data0
-rw-r--r--tests/auto/corelib/io/qdir/resources/entryList/file2.data0
-rw-r--r--tests/auto/corelib/io/qdir/resources/entryList/file3.data0
-rw-r--r--tests/auto/corelib/io/qdir/resources/entryList/file4.nothing0
-rw-r--r--tests/auto/corelib/io/qdir/searchdir/subdir1/picker.png1
-rw-r--r--tests/auto/corelib/io/qdir/searchdir/subdir2/picker.png1
-rw-r--r--tests/auto/corelib/io/qdir/testData/empty1
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir/qdir.pro2
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir/qrc_qdir.cpp42
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir/tmp/empty0
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir/tst_qdir.cpp42
-rw-r--r--tests/auto/corelib/io/qdir/testdir/spaces/foo. bar0
-rw-r--r--tests/auto/corelib/io/qdir/testdir/spaces/foo.bar0
-rw-r--r--tests/auto/corelib/io/qdir/tst_qdir.cpp1965
-rw-r--r--tests/auto/corelib/io/qdir/types/a0
-rw-r--r--tests/auto/corelib/io/qdir/types/a.a1
-rw-r--r--tests/auto/corelib/io/qdir/types/a.b1
-rw-r--r--tests/auto/corelib/io/qdir/types/a.c1
-rw-r--r--tests/auto/corelib/io/qdir/types/b0
-rw-r--r--tests/auto/corelib/io/qdir/types/b.a1
-rw-r--r--tests/auto/corelib/io/qdir/types/b.b1
-rw-r--r--tests/auto/corelib/io/qdir/types/b.c1
-rw-r--r--tests/auto/corelib/io/qdir/types/c0
-rw-r--r--tests/auto/corelib/io/qdir/types/c.a1
-rw-r--r--tests/auto/corelib/io/qdir/types/c.b1
-rw-r--r--tests/auto/corelib/io/qdir/types/c.c1
-rw-r--r--tests/auto/corelib/io/qdir/types/d.a/dummy0
-rw-r--r--tests/auto/corelib/io/qdir/types/d.b/dummy0
-rw-r--r--tests/auto/corelib/io/qdir/types/d.c/dummy0
-rw-r--r--tests/auto/corelib/io/qdir/types/d/dummy0
-rw-r--r--tests/auto/corelib/io/qdir/types/e.a/dummy0
-rw-r--r--tests/auto/corelib/io/qdir/types/e.b/dummy0
-rw-r--r--tests/auto/corelib/io/qdir/types/e.c/dummy0
-rw-r--r--tests/auto/corelib/io/qdir/types/e/dummy0
-rw-r--r--tests/auto/corelib/io/qdir/types/f.a/dummy0
-rw-r--r--tests/auto/corelib/io/qdir/types/f.b/dummy0
-rw-r--r--tests/auto/corelib/io/qdir/types/f.c/dummy0
-rw-r--r--tests/auto/corelib/io/qdir/types/f/dummy0
-rw-r--r--tests/auto/corelib/io/qdiriterator/.gitignore1
-rw-r--r--tests/auto/corelib/io/qdiriterator/entrylist/directory/dummy0
-rw-r--r--tests/auto/corelib/io/qdiriterator/entrylist/file0
-rw-r--r--tests/auto/corelib/io/qdiriterator/qdiriterator.pro9
-rw-r--r--tests/auto/corelib/io/qdiriterator/qdiriterator.qrc6
-rw-r--r--tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp639
-rw-r--r--tests/auto/corelib/io/qfile/.gitattributes2
-rw-r--r--tests/auto/corelib/io/qfile/.gitignore8
-rw-r--r--tests/auto/corelib/io/qfile/copy-fallback.qrc5
-rw-r--r--tests/auto/corelib/io/qfile/dosfile.txt14
-rw-r--r--tests/auto/corelib/io/qfile/forCopying.txt1
-rw-r--r--tests/auto/corelib/io/qfile/forRenaming.txt7
-rw-r--r--tests/auto/corelib/io/qfile/largefile/largefile.pro9
-rw-r--r--tests/auto/corelib/io/qfile/largefile/tst_largefile.cpp538
-rw-r--r--tests/auto/corelib/io/qfile/noendofline.txt3
-rw-r--r--tests/auto/corelib/io/qfile/qfile.pro10
-rw-r--r--tests/auto/corelib/io/qfile/qfile.qrc5
-rw-r--r--tests/auto/corelib/io/qfile/rename-fallback.qrc5
-rw-r--r--tests/auto/corelib/io/qfile/resources/file1.ext11
-rw-r--r--tests/auto/corelib/io/qfile/stdinprocess/main.cpp72
-rw-r--r--tests/auto/corelib/io/qfile/stdinprocess/stdinprocess.pro6
-rw-r--r--tests/auto/corelib/io/qfile/test/test.pro45
-rw-r--r--tests/auto/corelib/io/qfile/testfile.txt6
-rw-r--r--tests/auto/corelib/io/qfile/testlog.txt144
-rw-r--r--tests/auto/corelib/io/qfile/tst_qfile.cpp3406
-rw-r--r--tests/auto/corelib/io/qfile/two.dots.file1
-rw-r--r--tests/auto/corelib/io/qfileinfo/.gitignore1
-rw-r--r--tests/auto/corelib/io/qfileinfo/qfileinfo.pro33
-rw-r--r--tests/auto/corelib/io/qfileinfo/qfileinfo.qrc5
-rw-r--r--tests/auto/corelib/io/qfileinfo/resources/file10
-rw-r--r--tests/auto/corelib/io/qfileinfo/resources/file1.ext10
-rw-r--r--tests/auto/corelib/io/qfileinfo/resources/file1.ext1.ext20
-rw-r--r--tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp1811
-rw-r--r--tests/auto/corelib/io/qfilesystementry/qfilesystementry.pro8
-rw-r--r--tests/auto/corelib/io/qfilesystementry/tst_qfilesystementry.cpp419
-rw-r--r--tests/auto/corelib/io/qfilesystemwatcher/.gitignore1
-rw-r--r--tests/auto/corelib/io/qfilesystemwatcher/qfilesystemwatcher.pro6
-rw-r--r--tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp574
-rw-r--r--tests/auto/corelib/io/qiodevice/.gitignore2
-rw-r--r--tests/auto/corelib/io/qiodevice/qiodevice.pro23
-rw-r--r--tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp611
-rw-r--r--tests/auto/corelib/io/qprocess/.gitignore22
-rw-r--r--tests/auto/corelib/io/qprocess/fileWriterProcess/fileWriterProcess.pro10
-rw-r--r--tests/auto/corelib/io/qprocess/fileWriterProcess/main.cpp59
-rw-r--r--tests/auto/corelib/io/qprocess/qprocess.pro32
-rw-r--r--tests/auto/corelib/io/qprocess/test/test.pro124
-rwxr-xr-xtests/auto/corelib/io/qprocess/testBatFiles/simple.bat2
-rwxr-xr-xtests/auto/corelib/io/qprocess/testBatFiles/with space.bat2
-rw-r--r--tests/auto/corelib/io/qprocess/testDetached/main.cpp84
-rw-r--r--tests/auto/corelib/io/qprocess/testDetached/testDetached.pro10
-rw-r--r--tests/auto/corelib/io/qprocess/testExitCodes/main.cpp48
-rw-r--r--tests/auto/corelib/io/qprocess/testExitCodes/testExitCodes.pro5
-rw-r--r--tests/auto/corelib/io/qprocess/testGuiProcess/main.cpp59
-rw-r--r--tests/auto/corelib/io/qprocess/testGuiProcess/testGuiProcess.pro5
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessCrash/main.cpp53
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessCrash/testProcessCrash.pro8
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/main.cpp52
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/testProcessDeadWhileReading.pro10
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEOF/main.cpp58
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEOF/testProcessEOF.pro9
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho/main.cpp59
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho/testProcessEcho.pro8
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho2/main.cpp58
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho2/testProcessEcho2.pro10
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho3/main.cpp61
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho3/testProcessEcho3.pro9
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp67
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEchoGui/testProcessEchoGui.pro13
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEnvironment/main.cpp61
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEnvironment/testProcessEnvironment.pro12
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp57
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro8
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessNormal/main.cpp46
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessNormal/testProcessNormal.pro9
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessOutput/main.cpp66
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessOutput/testProcessOutput.pro9
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessSpacesArgs/main.cpp69
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessSpacesArgs/nospace.pro9
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessSpacesArgs/onespace.pro11
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessSpacesArgs/twospaces.pro12
-rw-r--r--tests/auto/corelib/io/qprocess/testSetWorkingDirectory/main.cpp51
-rw-r--r--tests/auto/corelib/io/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro7
-rw-r--r--tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp62
-rw-r--r--tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp58
-rw-r--r--tests/auto/corelib/io/qprocess/testSoftExit/testSoftExit.pro16
-rw-r--r--tests/auto/corelib/io/qprocess/testSpaceInName/main.cpp56
-rw-r--r--tests/auto/corelib/io/qprocess/testSpaceInName/testSpaceInName.pro13
-rw-r--r--tests/auto/corelib/io/qprocess/tst_qprocess.cpp2472
-rw-r--r--tests/auto/corelib/io/qprocessenvironment/qprocessenvironment.pro6
-rw-r--r--tests/auto/corelib/io/qprocessenvironment/tst_qprocessenvironment.cpp320
-rw-r--r--tests/auto/corelib/io/qresourceengine/.gitattributes1
-rw-r--r--tests/auto/corelib/io/qresourceengine/.gitignore1
-rw-r--r--tests/auto/corelib/io/qresourceengine/parentdir.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/qresourceengine.pro47
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/aliasdir.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/compressme.txt322
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/blahblah.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/currentdir.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/currentdir2.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/otherdir/otherdir.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/search_file.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/searchpath1/search_file.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/searchpath2/search_file.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/subdir/subdir.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/test.qrc30
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/test/german.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/test/test/test1.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/test/test/test2.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/test/testdir.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/testqrc/test/testdir2.txt1
-rw-r--r--tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp488
-rw-r--r--tests/auto/corelib/io/qsettings/.gitattributes5
-rw-r--r--tests/auto/corelib/io/qsettings/.gitignore1
-rw-r--r--tests/auto/corelib/io/qsettings/qsettings.pro10
-rw-r--r--tests/auto/corelib/io/qsettings/qsettings.qrc9
-rw-r--r--tests/auto/corelib/io/qsettings/resourcefile.ini46
-rw-r--r--tests/auto/corelib/io/qsettings/resourcefile2.ini46
-rw-r--r--tests/auto/corelib/io/qsettings/resourcefile3.ini50
-rw-r--r--tests/auto/corelib/io/qsettings/resourcefile4.ini2
-rw-r--r--tests/auto/corelib/io/qsettings/resourcefile5.ini2
-rw-r--r--tests/auto/corelib/io/qsettings/tst_qsettings.cpp3179
-rw-r--r--tests/auto/corelib/io/qtemporaryfile/.gitignore1
-rw-r--r--tests/auto/corelib/io/qtemporaryfile/qtemporaryfile.pro14
-rw-r--r--tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp729
-rw-r--r--tests/auto/corelib/io/qtextstream/.gitattributes3
-rw-r--r--tests/auto/corelib/io/qtextstream/.gitignore11
-rw-r--r--tests/auto/corelib/io/qtextstream/qtextstream.pro6
-rw-r--r--tests/auto/corelib/io/qtextstream/qtextstream.qrc6
-rw-r--r--tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp50
-rw-r--r--tests/auto/corelib/io/qtextstream/readAllStdinProcess/readAllStdinProcess.pro7
-rw-r--r--tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp57
-rw-r--r--tests/auto/corelib/io/qtextstream/readLineStdinProcess/readLineStdinProcess.pro7
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data2
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data2
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.databin0 -> 6 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.databin0 -> 116 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.databin0 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.databin0 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.databin0 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.databin0 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data2
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.databin0 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.databin0 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data2
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data2
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.databin0 -> 6 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.databin0 -> 116 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.databin0 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.databin0 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.databin0 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.databin0 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data2
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.databin0 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.databin0 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.databin0 -> 32 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.databin0 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.databin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.databin0 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.databin0 -> 36 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.databin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.databin0 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.databin0 -> 36 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.databin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.databin0 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.databin0 -> 36 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.databin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.databin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.databin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource10.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource11.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource12.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource20.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource21.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource9.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data2
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data2
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.databin0 -> 6 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.databin0 -> 116 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.databin0 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.databin0 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.databin0 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.databin0 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data2
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.databin0 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.databin0 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data2
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data2
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.databin0 -> 6 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.databin0 -> 116 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.databin0 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.databin0 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.databin0 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.databin0 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_0.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_1.data0
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data2
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.databin0 -> 8 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.databin0 -> 118 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.databin0 -> 2 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.databin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.databin0 -> 32 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.databin0 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.databin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.databin0 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.databin0 -> 36 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.databin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.databin0 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.databin0 -> 36 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.databin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.databin0 -> 34 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.databin0 -> 36 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.databin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.databin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.databin0 -> 28 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.databin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.databin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.databin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.databin0 -> 24 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.databin0 -> 14 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.databin0 -> 16 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.databin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.databin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource0.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource1.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource10.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource11.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource12.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource2.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource20.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource21.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource3.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource4.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource5.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource6.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource7.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource8.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource9.data1
-rw-r--r--tests/auto/corelib/io/qtextstream/rfc3261.txt15067
-rw-r--r--tests/auto/corelib/io/qtextstream/shift-jis.txt764
-rw-r--r--tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp55
-rw-r--r--tests/auto/corelib/io/qtextstream/stdinProcess/stdinProcess.pro7
-rw-r--r--tests/auto/corelib/io/qtextstream/task113817.txt1095
-rw-r--r--tests/auto/corelib/io/qtextstream/test/test.pro40
-rw-r--r--tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp2919
-rw-r--r--tests/auto/corelib/io/qurl/.gitignore1
-rw-r--r--tests/auto/corelib/io/qurl/idna-test.c199
-rw-r--r--tests/auto/corelib/io/qurl/qurl.pro5
-rw-r--r--tests/auto/corelib/io/qurl/tst_qurl.cpp4049
-rw-r--r--tests/auto/corelib/kernel/kernel.pro22
-rw-r--r--tests/auto/corelib/kernel/qabstractitemmodel/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qabstractitemmodel/qabstractitemmodel.pro9
-rw-r--r--tests/auto/corelib/kernel/qabstractitemmodel/tst_qabstractitemmodel.cpp1816
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro4
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp582
-rw-r--r--tests/auto/corelib/kernel/qeventloop/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qeventloop/qeventloop.pro8
-rw-r--r--tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp937
-rw-r--r--tests/auto/corelib/kernel/qitemmodel/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qitemmodel/README3
-rw-r--r--tests/auto/corelib/kernel/qitemmodel/modelstotest.cpp424
-rw-r--r--tests/auto/corelib/kernel/qitemmodel/qitemmodel.pro26
-rw-r--r--tests/auto/corelib/kernel/qitemmodel/tst_qitemmodel.cpp1397
-rw-r--r--tests/auto/corelib/kernel/qmath/qmath.pro7
-rw-r--r--tests/auto/corelib/kernel/qmath/tst_qmath.cpp67
-rw-r--r--tests/auto/corelib/kernel/qmetaobject/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qmetaobject/qmetaobject.pro8
-rw-r--r--tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp1120
-rw-r--r--tests/auto/corelib/kernel/qmetaproperty/qmetaproperty.pro4
-rw-r--r--tests/auto/corelib/kernel/qmetaproperty/tst_qmetaproperty.cpp115
-rw-r--r--tests/auto/corelib/kernel/qmetatype/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qmetatype/qmetatype.pro4
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp365
-rw-r--r--tests/auto/corelib/kernel/qmimedata/qmimedata.pro4
-rw-r--r--tests/auto/corelib/kernel/qmimedata/tst_qmimedata.cpp343
-rw-r--r--tests/auto/corelib/kernel/qobject/.gitignore3
-rw-r--r--tests/auto/corelib/kernel/qobject/moc_oldnormalizeobject.cpp154
-rw-r--r--tests/auto/corelib/kernel/qobject/oldnormalizeobject.h69
-rw-r--r--tests/auto/corelib/kernel/qobject/qobject.pro3
-rw-r--r--tests/auto/corelib/kernel/qobject/signalbug.cpp154
-rw-r--r--tests/auto/corelib/kernel/qobject/signalbug.h103
-rw-r--r--tests/auto/corelib/kernel/qobject/signalbug.pro19
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.cpp4065
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.pro21
-rw-r--r--tests/auto/corelib/kernel/qpointer/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qpointer/qpointer.pro5
-rw-r--r--tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp343
-rw-r--r--tests/auto/corelib/kernel/qsignalmapper/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qsignalmapper/qsignalmapper.pro6
-rw-r--r--tests/auto/corelib/kernel/qsignalmapper/tst_qsignalmapper.cpp156
-rw-r--r--tests/auto/corelib/kernel/qsocketnotifier/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qsocketnotifier/qsocketnotifier.pro11
-rw-r--r--tests/auto/corelib/kernel/qsocketnotifier/tst_qsocketnotifier.cpp367
-rw-r--r--tests/auto/corelib/kernel/qtimer/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qtimer/qtimer.pro5
-rw-r--r--tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp794
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/lackey.pro16
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/main.cpp370
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/consumer.js41
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/producer.js44
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/readonly_segfault.js4
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_read.js11
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_readwrite.js11
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquire.js18
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquirerelease.js11
-rw-r--r--tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_release.js11
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/.gitignore3
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/qsharedmemory.pro4
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/qsystemlock.pro22
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/tst_qsystemlock.cpp239
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.cpp246
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.h135
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_p.h109
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_unix.cpp234
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_win.cpp183
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/src/src.pri11
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/test/test.pro37
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsharedmemory/tst_qsharedmemory.cpp836
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsystemsemaphore/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsystemsemaphore/files.qrc7
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsystemsemaphore/qsystemsemaphore.pro38
-rw-r--r--tests/auto/corelib/kernel/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp319
-rw-r--r--tests/auto/corelib/kernel/qtipc/qtipc.pro6
-rw-r--r--tests/auto/corelib/kernel/qtranslator/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qtranslator/hellotr_la.qmbin0 -> 230 bytes
-rw-r--r--tests/auto/corelib/kernel/qtranslator/hellotr_la.ts16
-rw-r--r--tests/auto/corelib/kernel/qtranslator/msgfmt_from_po.qmbin0 -> 176988 bytes
-rw-r--r--tests/auto/corelib/kernel/qtranslator/qtranslator.pro12
-rw-r--r--tests/auto/corelib/kernel/qtranslator/qtranslator.qrc5
-rw-r--r--tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp260
-rw-r--r--tests/auto/corelib/kernel/qvariant/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qvariant/qvariant.pro5
-rw-r--r--tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp3235
-rw-r--r--tests/auto/corelib/kernel/qwineventnotifier/.gitignore1
-rw-r--r--tests/auto/corelib/kernel/qwineventnotifier/qwineventnotifier.pro4
-rw-r--r--tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp146
-rw-r--r--tests/auto/corelib/plugin/plugin.pro6
-rw-r--r--tests/auto/corelib/plugin/qlibrary/.gitignore10
-rw-r--r--tests/auto/corelib/plugin/qlibrary/lib/lib.pro17
-rw-r--r--tests/auto/corelib/plugin/qlibrary/lib/mylib.c60
-rw-r--r--tests/auto/corelib/plugin/qlibrary/lib2/lib2.pro57
-rw-r--r--tests/auto/corelib/plugin/qlibrary/lib2/mylib.c60
-rw-r--r--tests/auto/corelib/plugin/qlibrary/library_path/invalid.so1
-rw-r--r--tests/auto/corelib/plugin/qlibrary/qlibrary.pro18
-rw-r--r--tests/auto/corelib/plugin/qlibrary/tst/tst.pro33
-rw-r--r--tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp630
-rw-r--r--tests/auto/corelib/plugin/qplugin/.gitignore2
-rw-r--r--tests/auto/corelib/plugin/qplugin/debugplugin/debugplugin.pro11
-rw-r--r--tests/auto/corelib/plugin/qplugin/debugplugin/main.cpp43
-rw-r--r--tests/auto/corelib/plugin/qplugin/qplugin.pro28
-rw-r--r--tests/auto/corelib/plugin/qplugin/releaseplugin/main.cpp43
-rw-r--r--tests/auto/corelib/plugin/qplugin/releaseplugin/releaseplugin.pro11
-rw-r--r--tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp120
-rw-r--r--tests/auto/corelib/plugin/qplugin/tst_qplugin.pro16
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/.gitignore2
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.cpp51
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.h57
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.pro7
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/.gitattributes10
-rwxr-xr-xtests/auto/corelib/plugin/qpluginloader/elftest/corrupt1.elf64.sobin0 -> 239745 bytes
-rwxr-xr-xtests/auto/corelib/plugin/qpluginloader/elftest/corrupt2.elf64.sobin0 -> 240097 bytes
-rwxr-xr-xtests/auto/corelib/plugin/qpluginloader/elftest/corrupt3.elf64.sobin0 -> 240097 bytes
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/debugobj.sobin0 -> 507232 bytes
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage1.so4
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage2.so1
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage3.so1
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage4.so1
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/elftest/garbage5.so2
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/lib/lib.pro18
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/lib/mylib.c60
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/qpluginloader.pro14
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/plugininterface.h54
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp51
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.h57
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.pro11
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/tst/tst.pro34
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp406
-rw-r--r--tests/auto/corelib/plugin/quuid/.gitignore1
-rw-r--r--tests/auto/corelib/plugin/quuid/quuid.pro7
-rw-r--r--tests/auto/corelib/plugin/quuid/test/test.pro29
-rw-r--r--tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp62
-rw-r--r--tests/auto/corelib/plugin/quuid/testProcessUniqueness/testProcessUniqueness.pro8
-rw-r--r--tests/auto/corelib/plugin/quuid/tst_quuid.cpp337
-rw-r--r--tests/auto/corelib/statemachine/qstate/qstate.pro6
-rw-r--r--tests/auto/corelib/statemachine/qstate/tst_qstate.cpp408
-rw-r--r--tests/auto/corelib/statemachine/qstatemachine/qstatemachine.pro5
-rw-r--r--tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp4448
-rw-r--r--tests/auto/corelib/statemachine/statemachine.pro4
-rw-r--r--tests/auto/corelib/thread/qatomicint/.gitignore1
-rw-r--r--tests/auto/corelib/thread/qatomicint/qatomicint.pro4
-rw-r--r--tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp791
-rw-r--r--tests/auto/corelib/thread/qatomicpointer/.gitignore1
-rw-r--r--tests/auto/corelib/thread/qatomicpointer/qatomicpointer.pro4
-rw-r--r--tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp674
-rw-r--r--tests/auto/corelib/thread/qmutex/.gitignore1
-rw-r--r--tests/auto/corelib/thread/qmutex/qmutex.pro5
-rw-r--r--tests/auto/corelib/thread/qmutex/tst_qmutex.cpp640
-rw-r--r--tests/auto/corelib/thread/qmutexlocker/.gitignore1
-rw-r--r--tests/auto/corelib/thread/qmutexlocker/qmutexlocker.pro4
-rw-r--r--tests/auto/corelib/thread/qmutexlocker/tst_qmutexlocker.cpp236
-rw-r--r--tests/auto/corelib/thread/qreadlocker/.gitignore1
-rw-r--r--tests/auto/corelib/thread/qreadlocker/qreadlocker.pro4
-rw-r--r--tests/auto/corelib/thread/qreadlocker/tst_qreadlocker.cpp231
-rw-r--r--tests/auto/corelib/thread/qreadwritelock/.gitignore1
-rw-r--r--tests/auto/corelib/thread/qreadwritelock/qreadwritelock.pro4
-rw-r--r--tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp1140
-rw-r--r--tests/auto/corelib/thread/qsemaphore/.gitignore1
-rw-r--r--tests/auto/corelib/thread/qsemaphore/qsemaphore.pro7
-rw-r--r--tests/auto/corelib/thread/qsemaphore/tst_qsemaphore.cpp450
-rw-r--r--tests/auto/corelib/thread/qthread/.gitignore1
-rw-r--r--tests/auto/corelib/thread/qthread/qthread.pro5
-rw-r--r--tests/auto/corelib/thread/qthread/tst_qthread.cpp1249
-rw-r--r--tests/auto/corelib/thread/qthreadonce/.gitignore1
-rw-r--r--tests/auto/corelib/thread/qthreadonce/qthreadonce.cpp121
-rw-r--r--tests/auto/corelib/thread/qthreadonce/qthreadonce.h114
-rw-r--r--tests/auto/corelib/thread/qthreadonce/qthreadonce.pro13
-rw-r--r--tests/auto/corelib/thread/qthreadonce/tst_qthreadonce.cpp234
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/.gitignore1
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/crashOnExit.cpp64
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/crashOnExit.pro4
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/qthreadstorage.pro5
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp503
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.pro4
-rw-r--r--tests/auto/corelib/thread/qwaitcondition/.gitignore1
-rw-r--r--tests/auto/corelib/thread/qwaitcondition/qwaitcondition.pro6
-rw-r--r--tests/auto/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp845
-rw-r--r--tests/auto/corelib/thread/qwritelocker/.gitignore1
-rw-r--r--tests/auto/corelib/thread/qwritelocker/qwritelocker.pro4
-rw-r--r--tests/auto/corelib/thread/qwritelocker/tst_qwritelocker.cpp231
-rw-r--r--tests/auto/corelib/thread/thread.pro14
-rw-r--r--tests/auto/corelib/tools/qalgorithms/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qalgorithms/qalgorithms.pro4
-rw-r--r--tests/auto/corelib/tools/qalgorithms/tst_qalgorithms.cpp1048
-rw-r--r--tests/auto/corelib/tools/qbitarray/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qbitarray/qbitarray.pro4
-rw-r--r--tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp668
-rw-r--r--tests/auto/corelib/tools/qbytearray/.gitattributes1
-rw-r--r--tests/auto/corelib/tools/qbytearray/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qbytearray/qbytearray.pro21
-rw-r--r--tests/auto/corelib/tools/qbytearray/rfc3252.txt899
-rw-r--r--tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp1569
-rw-r--r--tests/auto/corelib/tools/qbytearraymatcher/qbytearraymatcher.pro5
-rw-r--r--tests/auto/corelib/tools/qbytearraymatcher/tst_qbytearraymatcher.cpp129
-rw-r--r--tests/auto/corelib/tools/qcache/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qcache/qcache.pro4
-rw-r--r--tests/auto/corelib/tools/qcache/tst_qcache.cpp431
-rw-r--r--tests/auto/corelib/tools/qchar/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qchar/NormalizationTest.txt17650
-rw-r--r--tests/auto/corelib/tools/qchar/qchar.pro16
-rw-r--r--tests/auto/corelib/tools/qchar/tst_qchar.cpp700
-rw-r--r--tests/auto/corelib/tools/qcontiguouscache/qcontiguouscache.pro9
-rw-r--r--tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp504
-rw-r--r--tests/auto/corelib/tools/qcryptographichash/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qcryptographichash/qcryptographichash.pro9
-rw-r--r--tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp154
-rw-r--r--tests/auto/corelib/tools/qdate/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qdate/qdate.pro4
-rw-r--r--tests/auto/corelib/tools/qdate/tst_qdate.cpp948
-rw-r--r--tests/auto/corelib/tools/qdatetime/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qdatetime/qdatetime.pro15
-rw-r--r--tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp1740
-rw-r--r--tests/auto/corelib/tools/qeasingcurve/qeasingcurve.pro4
-rw-r--r--tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp576
-rw-r--r--tests/auto/corelib/tools/qelapsedtimer/qelapsedtimer.pro14
-rw-r--r--tests/auto/corelib/tools/qelapsedtimer/tst_qelapsedtimer.cpp175
-rw-r--r--tests/auto/corelib/tools/qexplicitlyshareddatapointer/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro4
-rw-r--r--tests/auto/corelib/tools/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp259
-rw-r--r--tests/auto/corelib/tools/qfreelist/qfreelist.pro5
-rw-r--r--tests/auto/corelib/tools/qfreelist/tst_qfreelist.cpp179
-rw-r--r--tests/auto/corelib/tools/qhash/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qhash/qhash.pro9
-rw-r--r--tests/auto/corelib/tools/qhash/tst_qhash.cpp1241
-rw-r--r--tests/auto/corelib/tools/qline/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qline/qline.pro7
-rw-r--r--tests/auto/corelib/tools/qline/tst_qline.cpp492
-rw-r--r--tests/auto/corelib/tools/qlist/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qlist/qlist.pro5
-rw-r--r--tests/auto/corelib/tools/qlist/tst_qlist.cpp692
-rw-r--r--tests/auto/corelib/tools/qlocale/.gitignore3
-rw-r--r--tests/auto/corelib/tools/qlocale/qlocale.pro4
-rw-r--r--tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.cpp53
-rw-r--r--tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.pro8
-rw-r--r--tests/auto/corelib/tools/qlocale/test/test.pro41
-rw-r--r--tests/auto/corelib/tools/qlocale/tst_qlocale.cpp2282
-rw-r--r--tests/auto/corelib/tools/qmap/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qmap/qmap.pro7
-rw-r--r--tests/auto/corelib/tools/qmap/tst_qmap.cpp875
-rw-r--r--tests/auto/corelib/tools/qmargins/qmargins.pro4
-rw-r--r--tests/auto/corelib/tools/qmargins/tst_qmargins.cpp108
-rw-r--r--tests/auto/corelib/tools/qpoint/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qpoint/qpoint.pro8
-rw-r--r--tests/auto/corelib/tools/qpoint/tst_qpoint.cpp151
-rw-r--r--tests/auto/corelib/tools/qqueue/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qqueue/qqueue.pro7
-rw-r--r--tests/auto/corelib/tools/qqueue/tst_qqueue.cpp100
-rw-r--r--tests/auto/corelib/tools/qrect/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qrect/qrect.pro4
-rw-r--r--tests/auto/corelib/tools/qrect/tst_qrect.cpp4432
-rw-r--r--tests/auto/corelib/tools/qregexp/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qregexp/qregexp.pro9
-rw-r--r--tests/auto/corelib/tools/qregexp/tst_qregexp.cpp1457
-rw-r--r--tests/auto/corelib/tools/qringbuffer/qringbuffer.pro7
-rw-r--r--tests/auto/corelib/tools/qringbuffer/tst_qringbuffer.cpp200
-rw-r--r--tests/auto/corelib/tools/qscopedpointer/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qscopedpointer/qscopedpointer.pro4
-rw-r--r--tests/auto/corelib/tools/qscopedpointer/tst_qscopedpointer.cpp463
-rw-r--r--tests/auto/corelib/tools/qscopedvaluerollback/qscopedvaluerollback.pro4
-rw-r--r--tests/auto/corelib/tools/qscopedvaluerollback/tst_qscopedvaluerollback.cpp203
-rw-r--r--tests/auto/corelib/tools/qset/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qset/qset.pro9
-rw-r--r--tests/auto/corelib/tools/qset/tst_qset.cpp931
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/externaltests.cpp745
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/externaltests.h132
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/externaltests.pri8
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/forwarddeclaration.cpp52
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/forwarddeclared.cpp53
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/forwarddeclared.h54
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/qsharedpointer.pro17
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp1922
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/wrapper.cpp60
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/wrapper.h58
-rw-r--r--tests/auto/corelib/tools/qsize/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qsize/qsize.pro4
-rw-r--r--tests/auto/corelib/tools/qsize/tst_qsize.cpp254
-rw-r--r--tests/auto/corelib/tools/qsizef/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qsizef/qsizef.pro4
-rw-r--r--tests/auto/corelib/tools/qsizef/tst_qsizef.cpp181
-rw-r--r--tests/auto/corelib/tools/qstl/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qstl/qstl.pro4
-rw-r--r--tests/auto/corelib/tools/qstl/tst_qstl.cpp98
-rw-r--r--tests/auto/corelib/tools/qstring/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qstring/double_data.h10036
-rw-r--r--tests/auto/corelib/tools/qstring/qstring.pro11
-rw-r--r--tests/auto/corelib/tools/qstring/tst_qstring.cpp5143
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder.pro6
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/qstringbuilder1.pro7
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp239
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/tst_qstringbuilder1.cpp72
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/qstringbuilder2.pro6
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/tst_qstringbuilder2.cpp73
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/qstringbuilder3.pro6
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/tst_qstringbuilder3.cpp72
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/qstringbuilder4.pro6
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/tst_qstringbuilder4.cpp73
-rw-r--r--tests/auto/corelib/tools/qstringlist/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qstringlist/qstringlist.pro4
-rw-r--r--tests/auto/corelib/tools/qstringlist/tst_qstringlist.cpp338
-rw-r--r--tests/auto/corelib/tools/qstringmatcher/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qstringmatcher/qstringmatcher.pro6
-rw-r--r--tests/auto/corelib/tools/qstringmatcher/tst_qstringmatcher.cpp163
-rw-r--r--tests/auto/corelib/tools/qstringref/qstringref.pro5
-rw-r--r--tests/auto/corelib/tools/qstringref/tst_qstringref.cpp881
-rw-r--r--tests/auto/corelib/tools/qtextboundaryfinder/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qtextboundaryfinder/data/GraphemeBreakTest.txt123
-rw-r--r--tests/auto/corelib/tools/qtextboundaryfinder/data/SentenceBreakTest.txt307
-rw-r--r--tests/auto/corelib/tools/qtextboundaryfinder/data/WordBreakTest.txt517
-rw-r--r--tests/auto/corelib/tools/qtextboundaryfinder/qtextboundaryfinder.pro12
-rw-r--r--tests/auto/corelib/tools/qtextboundaryfinder/tst_qtextboundaryfinder.cpp415
-rw-r--r--tests/auto/corelib/tools/qtime/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qtime/qtime.pro4
-rw-r--r--tests/auto/corelib/tools/qtime/tst_qtime.cpp689
-rw-r--r--tests/auto/corelib/tools/qtimeline/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qtimeline/qtimeline.pro5
-rw-r--r--tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp730
-rw-r--r--tests/auto/corelib/tools/qvarlengtharray/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qvarlengtharray/qvarlengtharray.pro5
-rw-r--r--tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp606
-rw-r--r--tests/auto/corelib/tools/qvector/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qvector/qvector.pro4
-rw-r--r--tests/auto/corelib/tools/qvector/tst_qvector.cpp944
-rw-r--r--tests/auto/corelib/tools/tools.pro44
-rw-r--r--tests/auto/corelib/xml/qxmlstream/.gitattributes10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/.gitignore1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite-LICENSE.txt59
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/matrix.html4597
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Entries17
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/changes.html384
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Entries46
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15a.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15b.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15c.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15d.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15e.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15f.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15g.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15h.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15i.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15j.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15k.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15l.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18-ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E20.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E22.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E24.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E27.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E29.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2a.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2b.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E34.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E41.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E48.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E50.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E55.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E57.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E61.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9a.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9b.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/errata2e.xml222
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E18.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E19.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E24.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-pe2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-extpe1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/testcases.dtd103
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/xmlconf.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Entries17
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05a.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05b.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06a.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06b.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06c.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06d.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06e.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06f.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06g.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06h.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06i.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E12.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E13.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/errata3e.xml67
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/testcases.dtd103
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/xmlconf.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/001.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/002.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/003.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/004.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/005.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/006.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/007.xml20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/008.xml20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/009.xml19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/010.xml19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/011.xml20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/012.xml19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/013.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/014.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/015.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/016.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/017.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/018.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/019.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/020.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/021.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/022.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/023.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/024.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/025.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/026.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/027.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/028.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/029.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/030.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/031.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/032.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/033.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/034.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/035.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/036.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/037.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/038.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/039.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/040.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/041.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/042.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/043.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/044.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/045.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/046.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Entries48
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/rmt-ns10.xml151
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/001.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/002.xml20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/003.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/004.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/005.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/006.xml20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Entries8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/rmt-ns11.xml23
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries.Log3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13a.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13b.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13c.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/errata1e.xml18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/testcases.dtd103
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/xmlconf.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/testcases.dtd103
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/xmlconf.xml20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.pe2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_1.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_2.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_1.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_2.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/007.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/008.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/010.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/011.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/012.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/013.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/014.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/015.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/016.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/017.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/018.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/019.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/020.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/021.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/022.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/023.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/024.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/025.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/026.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/027.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/028.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/029.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/030.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/031.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/032.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/033.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/034.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/035.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/036.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/037.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/038.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/039.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/040.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/041.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/042.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/043.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/044.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/045.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/046.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/047.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/048.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/049.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/050.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/051.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/052.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/053.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/054.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/055.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/056.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/057.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Entries70
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/006.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/007.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/010.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/012.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/015.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/017.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/018.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/022.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/023.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/024.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/025.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/026.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/027.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/028.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/029.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/030.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/031.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/032.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/033.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/034.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/035.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/036.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/037.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/040.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/043.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/044.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/045.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/046.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/047.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/048.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/049.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/050.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/051.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/052.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/053.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/054.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Entries37
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/testcases.dtd103
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xml11.xml286
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xmlconf.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/a_oasis-logo.gifbin0 -> 9383 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/committee.css63
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/top3.jpebin0 -> 22775 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/finalCatalog.xml8741
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Entries8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_invalid.xml283
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_not-wf.xml3125
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_readme.txt43
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_valid.xml743
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Entries15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/ibm28i01.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/ibm28i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.dtd1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.dtd1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.dtd4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i01.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i02.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i03.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i04.xml17
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i02.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/ibm45i01.xml19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/ibm45i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.dtd11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i02.xml0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.dtd10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/ibm50i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.dtd16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Entries18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i02.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i03.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i05.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i06.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i07.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i08.xml18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i09.xml19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i10.xml21
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i11.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i12.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i13.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i14.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i15.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i16.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i17.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i18.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Entries18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i05.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i06.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i07.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i08.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i09.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i10.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i11.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i12.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i13.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i14.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i15.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i16.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i17.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i18.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i01.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i02.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i02.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/ibm59i01.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/ibm59i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i01.xml17
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i02.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i03.xml21
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i04.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Entries9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.dtd4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.dtd4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.ent4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.ent4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Entries9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.ent7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.ent8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/ibm76i01.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/ibm76i01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Entries79
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n02.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Entries34
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n01.xmlbin0 -> 91 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n07.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n08.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n09.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n10.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n11.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n12.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n13.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n14.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n15.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n16.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n17.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n18.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n19.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n20.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n21.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n22.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n23.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n24.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n25.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n26.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n27.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n28.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n29.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n30.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n31.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n32.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n33.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/ibm03n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Entries19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n02.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n03.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n04.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n05.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n06.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n07.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n08.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n09.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n10.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n11.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n12.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n13.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n14.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n15.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n16.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n17.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n18.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Entries6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n01.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n02.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n03.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n04.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n05.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n01.xml21
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n04.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Entries9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n01.xml19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n02.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n03.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n04.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n05.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n06.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n07.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n08.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n01.xml18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n03.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n04.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n01.xml18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n01.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/student.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n01.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n04.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n04.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n04.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n02.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/ibm20n01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n03.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Entries10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n07.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n08.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n09.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/ibm26n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/ibm27n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Entries10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.dtd1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n04.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n07.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n08.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Entries9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/cat.txt1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n01.xml20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n04.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n05.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n06.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n07.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Entries12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.dtd1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n07.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n08.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.dtd1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n02.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n04.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n05.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n06.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Entries6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n03.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n04.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n05.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Entries18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n01.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n03.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n04.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n05.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n06.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n07.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n08.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n09.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n12.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n13.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n14.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Entries6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n02.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n04.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n05.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n03.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n04.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Entries10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n03.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n04.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n05.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n06.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n07.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n08.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n09.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Entries6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n03.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n04.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n05.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n01.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n03.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n04.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n05.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n06.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Entries8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n04.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n05.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n06.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n07.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n04.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n05.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n06.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Entries8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n04.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n05.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n06.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n07.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Entries8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n04.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n05.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n06.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n07.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n04.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n05.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n06.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Entries9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n04.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n05.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n06.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n07.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n08.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n02.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n02.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n03.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Entries8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n02.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n03.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n04.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n05.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n06.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n07.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/ibm57n01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Entries9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n01.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n02.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n03.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n04.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n05.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n06.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n07.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n08.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n01.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n02.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n03.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n04.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n05.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n06.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Entries9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n01.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n02.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n03.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n04.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n05.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n06.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n07.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n08.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Entries17
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.dtd9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.dtd9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.dtd9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.dtd9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.dtd9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.dtd9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.dtd8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.dtd9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Entries15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.dtd8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.dtd9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.dtd8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.dtd10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.dtd10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.dtd10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.dtd12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.dtd13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Entries16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n01.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n03.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n04.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n05.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n06.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n07.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n08.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n09.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n10.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n11.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n12.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n13.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n14.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n15.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Entries12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n01.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n04.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n07.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n08.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n09.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n10.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Entries8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n03.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n04.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n05.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n06.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n07.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Entries10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm70n01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n04.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n05.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n06.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n07.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n08.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Entries10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n01.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n04.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n05.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n06.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n07.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n08.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n09.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/ibm74n01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Entries15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/empty.dtd1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n04.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n05.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n06.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n07.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n08.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n09.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n10.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n11.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n12.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n13.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Entries8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n02.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n03.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n04.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n05.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n06.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n07.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Entries9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.ent4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.ent4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.ent4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n04.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n05.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n06.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Entries10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n04.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n05.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n06.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n07.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n08.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n09.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Entries9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n02.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n03.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n04.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n05.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n06.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n07.xml18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n08.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n02.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n03.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n04.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n05.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n06.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Entries199
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n07.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n08.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n09.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n10.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n100.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n101.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n102.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n103.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n104.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n105.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n106.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n107.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n108.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n109.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n11.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n110.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n111.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n112.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n113.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n114.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n115.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n116.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n117.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n118.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n119.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n12.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n120.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n121.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n122.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n123.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n124.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n125.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n126.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n127.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n128.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n129.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n13.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n130.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n131.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n132.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n133.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n134.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n135.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n136.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n137.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n138.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n139.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n14.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n140.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n141.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n142.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n143.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n144.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n145.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n146.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n147.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n148.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n149.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n15.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n150.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n151.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n152.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n153.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n154.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n155.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n156.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n157.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n158.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n159.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n16.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n160.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n161.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n162.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n163.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n164.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n165.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n166.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n167.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n168.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n169.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n17.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n170.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n171.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n172.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n173.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n174.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n175.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n176.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n177.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n178.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n179.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n18.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n180.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n181.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n182.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n183.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n184.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n185.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n186.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n187.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n188.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n189.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n19.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n190.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n191.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n192.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n193.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n194.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n195.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n196.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n197.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n198.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n20.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n21.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n22.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n23.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n24.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n25.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n26.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n27.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n28.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n29.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n30.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n31.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n32.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n33.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n34.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n35.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n36.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n37.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n38.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n39.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n40.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n41.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n42.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n43.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n44.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n45.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n46.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n47.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n48.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n49.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n50.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n51.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n52.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n53.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n54.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n55.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n56.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n57.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n58.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n59.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n60.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n61.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n62.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n63.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n64.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n65.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n66.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n67.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n68.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n69.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n70.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n71.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n72.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n73.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n74.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n75.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n76.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n77.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n78.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n79.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n80.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n81.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n82.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n83.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n84.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n85.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n86.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n87.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n88.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n89.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n90.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n91.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n92.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n93.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n94.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n95.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n96.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n97.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n98.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n99.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Entries85
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n07.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n08.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n09.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n10.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n11.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n12.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n13.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n14.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n15.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n16.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n17.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n18.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n19.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n20.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n21.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n22.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n23.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n24.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n25.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n26.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n27.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n28.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n29.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n30.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n31.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n32.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n33.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n34.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n35.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n36.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n37.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n38.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n39.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n40.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n41.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n42.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n43.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n44.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n45.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n46.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n47.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n48.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n49.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n50.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n51.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n52.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n53.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n54.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n55.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n56.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n57.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n58.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n59.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n60.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n61.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n62.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n63.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n64.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n66.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n67.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n68.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n69.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n70.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n71.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n72.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n73.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n74.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n75.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n76.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n77.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n78.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n79.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n80.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n81.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n82.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n83.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n84.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n85.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Entries16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n02.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n08.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n09.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n10.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n11.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n12.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n13.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n14.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n15.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n16.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Entries13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n02.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n03.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n04.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n05.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n07.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n08.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n09.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n10.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n11.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n12.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/432gewf.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/ltinentval.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/simpleltinentval.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.xml22
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Entries70
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/ibm01v01.xml24
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/ibm01v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/ibm02v01.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/ibm03v01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/ibm03v01.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Entries8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v01.xml21
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.dtd4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v04.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v05.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Entries6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v05.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/student.dtd4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Entries9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v01.xml19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v02.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v03.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v04.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v05.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v06.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v07.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v08.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Entries9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v05.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v06.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v07.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v08.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Entries6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v01.xml17
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v03.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v04.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/student.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Entries6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v01.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/student.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/ibm13v01.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/ibm13v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/student.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v02.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v03.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v04.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v02.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v03.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/ibm17v01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/ibm17v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/ibm18v01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/ibm18v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/ibm19v01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/ibm19v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/ibm21v01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/ibm21v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Entries8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v02.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v03.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v04.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v07.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Entries8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v05.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v06.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v07.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v02.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v03.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v04.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v05.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v06.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v05.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v06.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v02.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v02.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v03.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v04.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/ibm26v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/ibm26v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v03.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.dtd1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.txt1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.xml26
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v02.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.txt1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.xml24
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v02.xml25
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v01.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v02.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.dtd1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.dtd15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/ibm31v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Entries9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/ibm33v01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/ibm33v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/ibm34v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/ibm34v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/ibm35v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/ibm35v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/ibm36v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/ibm36v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/ibm37v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/ibm37v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/ibm38v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/ibm38v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/ibm39v01.xml18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/ibm39v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/ibm40v01.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/ibm40v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/ibm41v01.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/ibm41v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/ibm42v01.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/ibm42v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/ibm43v01.xml24
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/ibm43v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/ibm44v01.xml18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/ibm44v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/ibm45v01.xml21
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/ibm45v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/ibm47v01.xml27
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/ibm47v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.dtd13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/ibm49v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.dtd13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/ibm50v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v01.xml22
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.dtd20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/ibm52v01.xml17
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/ibm52v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Entries6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v01.xml50
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v02.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v03.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibmlogo.gifbin0 -> 1082 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/xmltech.gifbin0 -> 4070 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/ibm55v01.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/ibm55v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Entries11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v01.xml21
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v02.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v03.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v04.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v05.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v06.xml18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v07.xml21
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v08.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v09.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v10.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Entries11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v05.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v06.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v07.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v08.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v09.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v10.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/ibm57v01.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/ibm57v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v01.xml21
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v02.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v01.xml18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v02.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v02.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v03.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v04.xml17
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.dtd7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Entries11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.dtd8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.dtd8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.dtd8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.dtd8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.dtd7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Entries6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v05.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Entries11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.dtd8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.dtd8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Entries6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v05.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.dtd8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.dtd10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.dtd20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Entries4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.dtd10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.dtd10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/ibm67v01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/ibm67v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.dtd4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.dtd4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.ent6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.xml17
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/ibm70v01.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v02.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v03.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/ibm78v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/ibm79v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/ibm82v01.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/ibm82v01.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/ibm85v01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/ibm85v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/ibm86v01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/ibm86v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/ibm87v01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/ibm87v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/ibm88v01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/ibm88v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/ibm89v01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/ibm89v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Entries6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_invalid.xml35
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_not-wf.xml700
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_valid.xml332
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Entries1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i01.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i02.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Entries5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Entries75
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n01.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n02.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n03.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n04.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n05.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n06.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n07.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n08.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n09.xmlbin0 -> 121 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n10.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n11.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n12.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n13.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n14.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n15.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n16.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n17.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n18.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n19.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n20.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n21.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n22.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n23.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n24.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n25.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n26.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n27.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n28.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n29.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n30.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n31.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n32.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n33.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n34.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n35.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n36.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n37.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n38.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n39.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n40.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n41.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n42.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n43.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n44.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n45.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n46.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n47.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n48.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n49.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n50.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n51.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n52.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n53.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n54.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n55.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n56.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n57.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n58.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n59.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n60.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n61.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n62.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n63.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n67.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n68.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n69.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n70.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n71.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Entries29
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n07.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n08.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n09.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n10.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n11.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n12.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n13.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n14.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n15.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n16.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n17.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n18.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n19.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n20.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n21.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n22.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n23.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n24.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n25.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n26.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n27.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n28.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Entries29
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an07.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an08.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an09.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an10.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an11.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an12.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an13.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an14.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an15.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an16.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an17.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an18.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an19.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an20.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an21.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an22.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an23.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an24.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an25.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an26.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an27.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an28.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n04.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n05.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n06.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Entries48
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.ent4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Entries8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v01.xml22
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v02.xml17
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v03.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v04.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v05.xml31
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.ent17
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Entries15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v05.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v06.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v07.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v08.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Entries10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v05.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v06.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v07.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v08.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v09.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/ibm04v01.xml66
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/ibm04av01.xml97
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Entries6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v01.xml103
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v02.xml55
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v03.xml103
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v04.xml199
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v05.xml183
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/ibm07v01.xml82
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Entries61
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.dtd4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.dtd4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.dtd4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Entries20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/japanese.xml88
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-euc-jp.xml3549
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-iso-2022-jp.xml3549
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-little-endian.xmlbin0 -> 313076 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-shift_jis.xml3549
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-16.xmlbin0 -> 313074 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-8.xml3548
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/spec.dtd975
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.dtd72
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.xml78
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.dtd72
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.xml78
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-little-endian.xmlbin0 -> 3186 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.dtd72
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.xml78
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.dtdbin0 -> 5222 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.xmlbin0 -> 3186 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.dtd71
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.xml78
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Entries373
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/e2.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/oasis.xml1637
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail1.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail2.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail3.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail4.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass1.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass2.xml23
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass3.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail1.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail10.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail11.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail12.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail13.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail14.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail15.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail16.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail17.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail18.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail19.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail2.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail20.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail21.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail22.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail23.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail24.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail25.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail26.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail27.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail28.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail29.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail3.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail30.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail31.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail4.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail5.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail6.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail7.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail8.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail9.xmlbin0 -> 26 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail1.xmlbin0 -> 7 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail10.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail11.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail12.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail13.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail14.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail15.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail16.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail17.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail18.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail19.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail20.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail21.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail22.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail23.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail24.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail25.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail26.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail27.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail28.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail29.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail3.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail4.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail5.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail7.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail8.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail9.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03pass1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail3.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04pass1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail3.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail4.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail5.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05pass1.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06fail1.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06pass1.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p07pass1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail1.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail2.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08pass1.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail3.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail4.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail5.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.dtd5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail3.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10pass1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail1.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail2.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11pass1.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail1.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail2.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail3.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail4.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail5.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail6.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail7.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12pass1.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail3.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14pass1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail3.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15pass1.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail1.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail3.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass1.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass3.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail3.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18pass1.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail1.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail2.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass3.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass4.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass5.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass6.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail3.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail4.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail5.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass3.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass4.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass3.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass4.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25fail1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass2.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26pass1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27fail1.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass1.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass2.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass3.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass4.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28fail1.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass1.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass2.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass3.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.dtd1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29fail1.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29pass1.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.dtd4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.dtd0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.dtd11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail3.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail4.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail5.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail3.xml0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail4.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail5.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail3.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail4.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass2.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass3.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass4.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail1.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail2.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail3.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass2.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail3.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail1.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail2.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail3.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43pass1.xml27
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail3.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail4.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail5.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass3.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass4.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass5.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail1.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail2.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail3.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail4.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45pass1.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail2.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail3.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail4.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail5.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail6.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46pass1.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail2.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail3.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail4.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47pass1.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail2.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48pass1.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49fail1.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49pass1.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50fail1.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50pass1.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail1.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail2.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail3.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail4.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail5.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail6.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail7.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51pass1.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail2.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52pass1.xml23
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail2.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail3.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail4.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail5.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53pass1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54pass1.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55pass1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail2.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail3.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail4.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail5.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56pass1.xml19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57pass1.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail1.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail2.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail3.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail4.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail5.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail6.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail7.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail8.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58pass1.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail2.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail3.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59pass1.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail2.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail3.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail4.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail5.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60pass1.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.dtd4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.dtd12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.dtd13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.dtd2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.dtd13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail3.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail4.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail5.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail6.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66pass1.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail1.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail2.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail3.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68pass1.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail1.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail2.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail3.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69pass1.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70pass1.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail2.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail3.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail4.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71pass1.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail2.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail3.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail4.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72pass1.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail1.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail2.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail3.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail4.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail5.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73pass1.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail2.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail3.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74pass1.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail1.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail2.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail3.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail4.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail5.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail6.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75pass1.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail1.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail2.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail3.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail4.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76pass1.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/readme.html201
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Entries8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/cxml.html155
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Entries76
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr02.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr03.xml17
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr04.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr05.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr06.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr07.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr08.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr09.xml20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr10.xml20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr11.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr12.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr13.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr14.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr15.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr16.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd01.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd02.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd03.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el02.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el03.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el05.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/empty.xml22
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id01.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id03.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id04.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id05.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id06.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id07.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id08.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id09.xml17
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa02.xml31
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa04.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa05.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa06.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa07.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa08.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa09.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa10.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa11.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa12.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa13.xml16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa14.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional01.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional02.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional03.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional04.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional05.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional07.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional08.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional09.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional10.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional11.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional12.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional13.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional14.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional20.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional21.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional22.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional23.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional24.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional25.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required00.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required01.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/root.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16b.xmlbin0 -> 98 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16l.xmlbin0 -> 98 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Entries61
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist01.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist02.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist03.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist04.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist05.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist06.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist07.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist08.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist09.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist10.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist11.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond.dtd3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd00.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd01.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd03.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd04.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd05.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.dtd7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element00.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element01.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element02.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element03.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element04.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding01.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding02.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding03.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding04.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding05.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding06.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding07.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/not-sa03.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pi.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid02.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid03.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid04.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid05.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml01.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml02.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml03.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml04.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml05.xml12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml06.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml07.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml08.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml09.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml10.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml11.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml12.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml13.xml11
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/uri01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-error.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-invalid.xml359
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-not-wf.xml179
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-valid.xml147
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Entries37
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd00.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtdtest.dtd43
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/element.xml38
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.ent7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext02.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa01.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa02.xml30
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa03.xml25
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa04.xml30
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.dtd8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/null.ent0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/optional.xml50
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Entries28
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd00.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/element.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa01.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/notation01.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/optional.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe00.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/required00.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sgml01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang01.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang02.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang03.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang04.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang05.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang06.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.dtd6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe02.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe03.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/required00.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa.dtd39
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa01.xml13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa02.xml52
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa03.xml28
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa04.xml38
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa05.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sgml01.xml14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang01.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang02.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang03.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang04.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang05.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang06.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/testcases.dtd140
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.htm39994
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.xml54
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20020521.htm39943
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20031030.htm54207
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf.xml94
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.msxsl527
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.xsl512
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html44
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries22
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries189
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html60
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.entbin0 -> 4 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.entbin0 -> 54 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.entbin0 -> 12 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries29
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent0
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries65
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries32
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xmlbin0 -> 124 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xmlbin0 -> 132 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xmlbin0 -> 140 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries121
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/069.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/076.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/090.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/091.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries120
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml1433
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/001.ref12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/001.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/002.ref13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/002.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/003.ref12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/003.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/004.ref12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/004.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/005.ref12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/005.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/006.ref12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/006.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/007.ref36
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/007.xml20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/008.ref36
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/008.xml20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/009.ref27
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/009.xml19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/010.ref27
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/010.xml19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/011.ref30
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/011.xml20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/012.ref27
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/012.xml19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/013.ref7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/013.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/014.ref4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/014.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/015.ref4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/015.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/016.ref4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/016.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/017.ref5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/017.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/018.ref7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/018.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/019.ref7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/019.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/020.ref9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/020.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/021.ref15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/021.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/022.ref15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/022.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/023.ref9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/023.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/024.ref15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/024.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/025.ref4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/025.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/026.ref6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/026.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/027.ref7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/027.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/028.ref7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/028.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/029.ref4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/029.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/030.ref5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/030.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/031.ref5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/031.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/032.ref5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/032.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/033.ref5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/033.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/034.ref7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/034.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/035.ref16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/035.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/036.ref16
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/036.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/037.ref21
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/037.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/038.ref20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/038.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/039.ref24
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/039.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/040.ref22
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/040.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/041.ref20
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/041.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/042.ref4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/042.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/043.ref4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/043.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/044.ref4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/044.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/045.ref12
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/045.xml7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/046.ref21
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/046.xml10
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/047.ref5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/047.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/048.ref4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/048.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/051reduced.ref4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/051reduced.xmlbin0 -> 22 bytes
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/1.ref8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/1.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/10.ref6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/10.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/11.ref6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/11.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/12.ref19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/12.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/13.ref14
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/13.xml6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/14.ref18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/14.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/15.ref67
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/15.xml15
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/16.ref6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/16.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/2.ref9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/2.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/20.ref21
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/20.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/21.ref56
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/21.xml26
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/22.ref4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/22.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/3.ref6
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/3.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/4.ref21
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/4.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/5.ref19
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/5.xml9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/6.ref13
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/6.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/7.ref7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/7.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/8.ref3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/8.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/9.ref2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/9.xml2
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/books.ref18
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/books.xml5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/colonInPI.ref7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/colonInPI.xml4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.ref7
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.xml3
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/mixedContent.ref207
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/mixedContent.xml35
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.ref22
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.xml8
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/namespaces151
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/org_module.ref2780
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/org_module.xml389
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/spaceBracket.ref5
-rw-r--r--tests/auto/corelib/xml/qxmlstream/data/spaceBracket.xml1
-rw-r--r--tests/auto/corelib/xml/qxmlstream/qc14n.h199
-rw-r--r--tests/auto/corelib/xml/qxmlstream/qxmlstream.pro14
-rwxr-xr-xtests/auto/corelib/xml/qxmlstream/setupSuite.sh61
-rw-r--r--tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp1650
-rw-r--r--tests/auto/corelib/xml/xml.pro3
5670 files changed, 373645 insertions, 0 deletions
diff --git a/tests/auto/corelib/animation/animation.pro b/tests/auto/corelib/animation/animation.pro
new file mode 100644
index 0000000000..0d852acc60
--- /dev/null
+++ b/tests/auto/corelib/animation/animation.pro
@@ -0,0 +1,9 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qabstractanimation \
+ qanimationgroup \
+ qparallelanimationgroup \
+ qpauseanimation \
+ qpropertyanimation \
+ qsequentialanimationgroup \
+ qvariantanimation
diff --git a/tests/auto/corelib/animation/qabstractanimation/qabstractanimation.pro b/tests/auto/corelib/animation/qabstractanimation/qabstractanimation.pro
new file mode 100644
index 0000000000..f518423765
--- /dev/null
+++ b/tests/auto/corelib/animation/qabstractanimation/qabstractanimation.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT = core
+SOURCES += tst_qabstractanimation.cpp \
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/animation/qabstractanimation/tst_qabstractanimation.cpp b/tests/auto/corelib/animation/qabstractanimation/tst_qabstractanimation.cpp
new file mode 100644
index 0000000000..f9dad9154a
--- /dev/null
+++ b/tests/auto/corelib/animation/qabstractanimation/tst_qabstractanimation.cpp
@@ -0,0 +1,171 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/qabstractanimation.h>
+#include <QtCore/qanimationgroup.h>
+#include <QtTest>
+
+class tst_QAbstractAnimation : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QAbstractAnimation() {};
+ virtual ~tst_QAbstractAnimation() {};
+
+public Q_SLOTS:
+ void init();
+ void cleanup();
+
+private slots:
+ void construction();
+ void destruction();
+ void currentLoop();
+ void currentLoopTime();
+ void currentTime();
+ void direction();
+ void group();
+ void loopCount();
+ void state();
+ void totalDuration();
+};
+
+class TestableQAbstractAnimation : public QAbstractAnimation
+{
+ Q_OBJECT
+
+public:
+ virtual ~TestableQAbstractAnimation() {};
+
+ int duration() const { return 10; }
+ virtual void updateCurrentTime(int) {}
+};
+
+class DummyQAnimationGroup : public QAnimationGroup
+{
+ Q_OBJECT
+public:
+ int duration() const { return 10; }
+ virtual void updateCurrentTime(int) {}
+};
+
+void tst_QAbstractAnimation::init()
+{
+}
+
+void tst_QAbstractAnimation::cleanup()
+{
+}
+
+void tst_QAbstractAnimation::construction()
+{
+ TestableQAbstractAnimation anim;
+}
+
+void tst_QAbstractAnimation::destruction()
+{
+ TestableQAbstractAnimation *anim = new TestableQAbstractAnimation;
+ delete anim;
+}
+
+void tst_QAbstractAnimation::currentLoop()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.currentLoop(), 0);
+}
+
+void tst_QAbstractAnimation::currentLoopTime()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.currentLoopTime(), 0);
+}
+
+void tst_QAbstractAnimation::currentTime()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.currentTime(), 0);
+ anim.setCurrentTime(10);
+ QCOMPARE(anim.currentTime(), 10);
+}
+
+void tst_QAbstractAnimation::direction()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.direction(), QAbstractAnimation::Forward);
+ anim.setDirection(QAbstractAnimation::Backward);
+ QCOMPARE(anim.direction(), QAbstractAnimation::Backward);
+ anim.setDirection(QAbstractAnimation::Forward);
+ QCOMPARE(anim.direction(), QAbstractAnimation::Forward);
+}
+
+void tst_QAbstractAnimation::group()
+{
+ TestableQAbstractAnimation *anim = new TestableQAbstractAnimation;
+ DummyQAnimationGroup group;
+ group.addAnimation(anim);
+ QCOMPARE(anim->group(), &group);
+}
+
+void tst_QAbstractAnimation::loopCount()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.loopCount(), 1);
+ anim.setLoopCount(10);
+ QCOMPARE(anim.loopCount(), 10);
+}
+
+void tst_QAbstractAnimation::state()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+}
+
+void tst_QAbstractAnimation::totalDuration()
+{
+ TestableQAbstractAnimation anim;
+ QCOMPARE(anim.duration(), 10);
+ anim.setLoopCount(5);
+ QCOMPARE(anim.totalDuration(), 50);
+}
+
+QTEST_MAIN(tst_QAbstractAnimation)
+
+#include "tst_qabstractanimation.moc"
diff --git a/tests/auto/corelib/animation/qanimationgroup/qanimationgroup.pro b/tests/auto/corelib/animation/qanimationgroup/qanimationgroup.pro
new file mode 100644
index 0000000000..5e1be0cb10
--- /dev/null
+++ b/tests/auto/corelib/animation/qanimationgroup/qanimationgroup.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT = core
+SOURCES += tst_qanimationgroup.cpp
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp b/tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp
new file mode 100644
index 0000000000..26e2f2f4d8
--- /dev/null
+++ b/tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp
@@ -0,0 +1,413 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <QtCore/qanimationgroup.h>
+#include <QtCore/qsequentialanimationgroup.h>
+#include <QtCore/qparallelanimationgroup.h>
+
+//TESTED_CLASS=QAnimationGroup
+//TESTED_FILES=
+
+Q_DECLARE_METATYPE(QAbstractAnimation::State)
+
+class tst_QAnimationGroup : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QAnimationGroup();
+ virtual ~tst_QAnimationGroup();
+
+public Q_SLOTS:
+ void init();
+ void cleanup();
+
+private slots:
+ void construction();
+ void emptyGroup();
+ void setCurrentTime();
+ void statesAndSignals();
+ void setParentAutoAdd();
+ void beginNestedGroup();
+ void addChildTwice();
+ void loopWithoutStartValue();
+};
+
+tst_QAnimationGroup::tst_QAnimationGroup()
+{
+}
+
+tst_QAnimationGroup::~tst_QAnimationGroup()
+{
+}
+
+void tst_QAnimationGroup::init()
+{
+ qRegisterMetaType<QAbstractAnimation::State>("QAbstractAnimation::State");
+}
+
+void tst_QAnimationGroup::cleanup()
+{
+}
+
+void tst_QAnimationGroup::construction()
+{
+ QSequentialAnimationGroup animationgroup;
+}
+
+class AnimationObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int value READ value WRITE setValue)
+public:
+ AnimationObject(int startValue = 0)
+ : v(startValue)
+ { }
+
+ int value() const { return v; }
+ void setValue(int value) { v = value; }
+
+ int v;
+};
+
+class TestAnimation : public QVariantAnimation
+{
+ Q_OBJECT
+public:
+ virtual void updateCurrentValue(const QVariant &value) { Q_UNUSED(value)};
+ virtual void updateState(QAbstractAnimation::State oldState,
+ QAbstractAnimation::State newState)
+ {
+ Q_UNUSED(oldState)
+ Q_UNUSED(newState)
+ };
+};
+
+class UncontrolledAnimation : public QPropertyAnimation
+{
+ Q_OBJECT
+public:
+ UncontrolledAnimation(QObject *target, const QByteArray &propertyName, QObject *parent = 0)
+ : QPropertyAnimation(target, propertyName, parent), id(0)
+ {
+ setDuration(250);
+ }
+
+ int duration() const { return -1; /* not time driven */ }
+
+protected:
+ void timerEvent(QTimerEvent *event)
+ {
+ if (event->timerId() == id)
+ stop();
+ }
+
+ void updateRunning(bool running)
+ {
+ if (running) {
+ id = startTimer(500);
+ } else {
+ killTimer(id);
+ id = 0;
+ }
+ }
+
+private:
+ int id;
+};
+
+void tst_QAnimationGroup::emptyGroup()
+{
+ QSequentialAnimationGroup group;
+ QSignalSpy groupStateChangedSpy(&group, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ group.start();
+
+ QCOMPARE(groupStateChangedSpy.count(), 2);
+
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(1).first()),
+ QAnimationGroup::Stopped);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+
+ QTest::ignoreMessage(QtWarningMsg, "QAbstractAnimation::pause: Cannot pause a stopped animation");
+ group.pause();
+
+ QCOMPARE(groupStateChangedSpy.count(), 2);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+
+ group.start();
+
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(2).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(3).first()),
+ QAnimationGroup::Stopped);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+
+ group.stop();
+
+ QCOMPARE(groupStateChangedSpy.count(), 4);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+}
+
+void tst_QAnimationGroup::setCurrentTime()
+{
+ AnimationObject s_o1;
+ AnimationObject s_o2;
+ AnimationObject s_o3;
+ AnimationObject p_o1;
+ AnimationObject p_o2;
+ AnimationObject p_o3;
+ AnimationObject t_o1;
+ AnimationObject t_o2;
+
+ // sequence operating on same object/property
+ QSequentialAnimationGroup *sequence = new QSequentialAnimationGroup();
+ QAbstractAnimation *a1_s_o1 = new QPropertyAnimation(&s_o1, "value");
+ QAbstractAnimation *a2_s_o1 = new QPropertyAnimation(&s_o1, "value");
+ QAbstractAnimation *a3_s_o1 = new QPropertyAnimation(&s_o1, "value");
+ a2_s_o1->setLoopCount(3);
+ sequence->addAnimation(a1_s_o1);
+ sequence->addAnimation(a2_s_o1);
+ sequence->addAnimation(a3_s_o1);
+
+ // sequence operating on different object/properties
+ QAnimationGroup *sequence2 = new QSequentialAnimationGroup();
+ QAbstractAnimation *a1_s_o2 = new QPropertyAnimation(&s_o2, "value");
+ QAbstractAnimation *a1_s_o3 = new QPropertyAnimation(&s_o3, "value");
+ sequence2->addAnimation(a1_s_o2);
+ sequence2->addAnimation(a1_s_o3);
+
+ // parallel operating on different object/properties
+ QAnimationGroup *parallel = new QParallelAnimationGroup();
+ QAbstractAnimation *a1_p_o1 = new QPropertyAnimation(&p_o1, "value");
+ QAbstractAnimation *a1_p_o2 = new QPropertyAnimation(&p_o2, "value");
+ QAbstractAnimation *a1_p_o3 = new QPropertyAnimation(&p_o3, "value");
+ a1_p_o2->setLoopCount(3);
+ parallel->addAnimation(a1_p_o1);
+ parallel->addAnimation(a1_p_o2);
+ parallel->addAnimation(a1_p_o3);
+
+ QAbstractAnimation *notTimeDriven = new UncontrolledAnimation(&t_o1, "value");
+ QCOMPARE(notTimeDriven->totalDuration(), -1);
+
+ QAbstractAnimation *loopsForever = new QPropertyAnimation(&t_o2, "value");
+ loopsForever->setLoopCount(-1);
+ QCOMPARE(loopsForever->totalDuration(), -1);
+
+ QParallelAnimationGroup group;
+ group.addAnimation(sequence);
+ group.addAnimation(sequence2);
+ group.addAnimation(parallel);
+ group.addAnimation(notTimeDriven);
+ group.addAnimation(loopsForever);
+
+ // Current time = 1
+ group.setCurrentTime(1);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(parallel->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_p_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_p_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_p_o3->state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped);
+
+ QCOMPARE(group.currentLoopTime(), 1);
+ QCOMPARE(sequence->currentLoopTime(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 1);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 1);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+ QCOMPARE(a1_p_o1->currentLoopTime(), 1);
+ QCOMPARE(a1_p_o2->currentLoopTime(), 1);
+ QCOMPARE(a1_p_o3->currentLoopTime(), 1);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 1);
+ QCOMPARE(loopsForever->currentLoopTime(), 1);
+
+ // Current time = 250
+ group.setCurrentTime(250);
+ QCOMPARE(group.currentLoopTime(), 250);
+ QCOMPARE(sequence->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+ QCOMPARE(a1_p_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_p_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_p_o2->currentLoop(), 1);
+ QCOMPARE(a1_p_o3->currentLoopTime(), 250);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 250);
+ QCOMPARE(loopsForever->currentLoopTime(), 0);
+ QCOMPARE(loopsForever->currentLoop(), 1);
+ QCOMPARE(sequence->currentAnimation(), a2_s_o1);
+
+ // Current time = 251
+ group.setCurrentTime(251);
+ QCOMPARE(group.currentLoopTime(), 251);
+ QCOMPARE(sequence->currentLoopTime(), 251);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 1);
+ QCOMPARE(a2_s_o1->currentLoop(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(sequence2->currentLoopTime(), 251);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 1);
+ QCOMPARE(a1_p_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_p_o2->currentLoopTime(), 1);
+ QCOMPARE(a1_p_o2->currentLoop(), 1);
+ QCOMPARE(a1_p_o3->currentLoopTime(), 250);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 251);
+ QCOMPARE(loopsForever->currentLoopTime(), 1);
+ QCOMPARE(sequence->currentAnimation(), a2_s_o1);
+}
+
+void tst_QAnimationGroup::statesAndSignals()
+{
+}
+
+void tst_QAnimationGroup::setParentAutoAdd()
+{
+ QParallelAnimationGroup group;
+ QVariantAnimation *animation = new QPropertyAnimation(&group);
+ QCOMPARE(animation->group(), static_cast<QAnimationGroup*>(&group));
+}
+
+void tst_QAnimationGroup::beginNestedGroup()
+{
+ QAnimationGroup *subGroup;
+ QAnimationGroup *parent = new QParallelAnimationGroup();
+
+ for (int i = 0; i < 10; ++i) {
+ if (i & 1)
+ subGroup = new QParallelAnimationGroup(parent);
+ else
+ subGroup = new QSequentialAnimationGroup(parent);
+
+ QCOMPARE(parent->animationCount(), 1);
+ QAnimationGroup *child = static_cast<QAnimationGroup *>(parent->animationAt(0));
+
+ QCOMPARE(child->parent(), static_cast<QObject *>(parent));
+ if (i & 1)
+ QVERIFY(qobject_cast<QParallelAnimationGroup *> (child));
+ else
+ QVERIFY(qobject_cast<QSequentialAnimationGroup *> (child));
+
+ parent = child;
+ }
+}
+
+void tst_QAnimationGroup::addChildTwice()
+{
+ QAbstractAnimation *subGroup;
+ QAbstractAnimation *subGroup2;
+ QAnimationGroup *parent = new QSequentialAnimationGroup();
+
+ subGroup = new QPropertyAnimation();
+ subGroup->setParent(parent);
+ parent->addAnimation(subGroup);
+ QCOMPARE(parent->animationCount(), 1);
+
+ parent->clear();
+
+ QCOMPARE(parent->animationCount(), 0);
+
+ // adding the same item twice to a group will remove the item from its current position
+ // and append it to the end
+ subGroup = new QPropertyAnimation(parent);
+ subGroup2 = new QPropertyAnimation(parent);
+
+ QCOMPARE(parent->animationCount(), 2);
+ QCOMPARE(parent->animationAt(0), subGroup);
+ QCOMPARE(parent->animationAt(1), subGroup2);
+
+ parent->addAnimation(subGroup);
+
+ QCOMPARE(parent->animationCount(), 2);
+ QCOMPARE(parent->animationAt(0), subGroup2);
+ QCOMPARE(parent->animationAt(1), subGroup);
+
+ delete parent;
+}
+
+void tst_QAnimationGroup::loopWithoutStartValue()
+{
+ QAnimationGroup *parent = new QSequentialAnimationGroup();
+ QObject o;
+ o.setProperty("ole", 0);
+ QCOMPARE(o.property("ole").toInt(), 0);
+
+ QPropertyAnimation anim1(&o, "ole");
+ anim1.setEndValue(-50);
+ anim1.setDuration(100);
+
+ QPropertyAnimation anim2(&o, "ole");
+ anim2.setEndValue(50);
+ anim2.setDuration(100);
+
+ parent->addAnimation(&anim1);
+ parent->addAnimation(&anim2);
+
+ parent->setLoopCount(-1);
+ parent->start();
+
+ QVERIFY(anim1.startValue().isNull());
+ QCOMPARE(anim1.currentValue().toInt(), 0);
+ QCOMPARE(parent->currentLoop(), 0);
+
+ parent->setCurrentTime(200);
+ QCOMPARE(parent->currentLoop(), 1);
+ QCOMPARE(anim1.currentValue().toInt(), 50);
+ parent->stop();
+}
+
+QTEST_MAIN(tst_QAnimationGroup)
+#include "tst_qanimationgroup.moc"
diff --git a/tests/auto/corelib/animation/qparallelanimationgroup/qparallelanimationgroup.pro b/tests/auto/corelib/animation/qparallelanimationgroup/qparallelanimationgroup.pro
new file mode 100644
index 0000000000..f2cacd3452
--- /dev/null
+++ b/tests/auto/corelib/animation/qparallelanimationgroup/qparallelanimationgroup.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT = core gui
+SOURCES += tst_qparallelanimationgroup.cpp
+
+
diff --git a/tests/auto/corelib/animation/qparallelanimationgroup/tst_qparallelanimationgroup.cpp b/tests/auto/corelib/animation/qparallelanimationgroup/tst_qparallelanimationgroup.cpp
new file mode 100644
index 0000000000..d1d2860369
--- /dev/null
+++ b/tests/auto/corelib/animation/qparallelanimationgroup/tst_qparallelanimationgroup.cpp
@@ -0,0 +1,1024 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <QtCore/qparallelanimationgroup.h>
+
+//TESTED_CLASS=QParallelAnimationGroup
+//TESTED_FILES=
+
+Q_DECLARE_METATYPE(QAbstractAnimation::State)
+
+class tst_QParallelAnimationGroup : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QParallelAnimationGroup();
+ virtual ~tst_QParallelAnimationGroup();
+
+public Q_SLOTS:
+ void initTestCase();
+
+private slots:
+ void construction();
+ void setCurrentTime();
+ void stateChanged();
+ void clearGroup();
+ void propagateGroupUpdateToChildren();
+ void updateChildrenWithRunningGroup();
+ void deleteChildrenWithRunningGroup();
+ void startChildrenWithStoppedGroup();
+ void stopGroupWithRunningChild();
+ void startGroupWithRunningChild();
+ void zeroDurationAnimation();
+ void stopUncontrolledAnimations();
+ void loopCount_data();
+ void loopCount();
+ void autoAdd();
+ void pauseResume();
+
+ void QTBUG8910_crashWhenRemovingUncontrolledAnimation();
+};
+
+tst_QParallelAnimationGroup::tst_QParallelAnimationGroup()
+{
+}
+
+tst_QParallelAnimationGroup::~tst_QParallelAnimationGroup()
+{
+}
+
+void tst_QParallelAnimationGroup::initTestCase()
+{
+ qRegisterMetaType<QAbstractAnimation::State>("QAbstractAnimation::State");
+#if defined(Q_OS_SYMBIAN) || defined(Q_WS_MAC) || defined(Q_WS_WINCE)
+ // give the Symbian and mac app start event queue time to clear
+ QTest::qWait(1000);
+#endif
+}
+
+void tst_QParallelAnimationGroup::construction()
+{
+ QParallelAnimationGroup animationgroup;
+}
+
+class AnimationObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int value READ value WRITE setValue)
+public:
+ AnimationObject(int startValue = 0)
+ : v(startValue)
+ { }
+
+ int value() const { return v; }
+ void setValue(int value) { v = value; }
+
+ int v;
+};
+
+class TestAnimation : public QVariantAnimation
+{
+ Q_OBJECT
+public:
+ virtual void updateCurrentValue(const QVariant &value) { Q_UNUSED(value)};
+ virtual void updateState(QAbstractAnimation::State newState,
+ QAbstractAnimation::State oldState)
+ {
+ Q_UNUSED(oldState)
+ Q_UNUSED(newState)
+ };
+};
+
+class TestAnimation2 : public QVariantAnimation
+{
+ Q_OBJECT
+public:
+ TestAnimation2(QAbstractAnimation *animation) : QVariantAnimation(animation) {}
+ TestAnimation2(int duration, QAbstractAnimation *animation) : QVariantAnimation(animation), m_duration(duration) {}
+
+ virtual void updateCurrentValue(const QVariant &value) { Q_UNUSED(value)};
+ virtual void updateState(QAbstractAnimation::State newState,
+ QAbstractAnimation::State oldState)
+ {
+ Q_UNUSED(oldState)
+ Q_UNUSED(newState)
+ };
+
+ virtual int duration() const {
+ return m_duration;
+ }
+private:
+ int m_duration;
+};
+
+class UncontrolledAnimation : public QPropertyAnimation
+{
+ Q_OBJECT
+public:
+ UncontrolledAnimation(QObject *target, const QByteArray &propertyName, QObject *parent = 0)
+ : QPropertyAnimation(target, propertyName, parent), id(0)
+ {
+ setDuration(250);
+ setEndValue(0);
+ }
+
+ int duration() const { return -1; /* not time driven */ }
+
+protected:
+ void timerEvent(QTimerEvent *event)
+ {
+ if (event->timerId() == id)
+ stop();
+ }
+
+ void updateRunning(bool running)
+ {
+ if (running) {
+ id = startTimer(500);
+ } else {
+ killTimer(id);
+ id = 0;
+ }
+ }
+
+private:
+ int id;
+};
+
+void tst_QParallelAnimationGroup::setCurrentTime()
+{
+ AnimationObject p_o1;
+ AnimationObject p_o2;
+ AnimationObject p_o3;
+ AnimationObject t_o1;
+ AnimationObject t_o2;
+
+ // parallel operating on different object/properties
+ QAnimationGroup *parallel = new QParallelAnimationGroup();
+ QVariantAnimation *a1_p_o1 = new QPropertyAnimation(&p_o1, "value");
+ QVariantAnimation *a1_p_o2 = new QPropertyAnimation(&p_o2, "value");
+ QVariantAnimation *a1_p_o3 = new QPropertyAnimation(&p_o3, "value");
+ a1_p_o2->setLoopCount(3);
+ parallel->addAnimation(a1_p_o1);
+ parallel->addAnimation(a1_p_o2);
+ parallel->addAnimation(a1_p_o3);
+
+ UncontrolledAnimation *notTimeDriven = new UncontrolledAnimation(&t_o1, "value");
+ QCOMPARE(notTimeDriven->totalDuration(), -1);
+
+ QVariantAnimation *loopsForever = new QPropertyAnimation(&t_o2, "value");
+ loopsForever->setLoopCount(-1);
+ QCOMPARE(loopsForever->totalDuration(), -1);
+
+ QParallelAnimationGroup group;
+ group.addAnimation(parallel);
+ group.addAnimation(notTimeDriven);
+ group.addAnimation(loopsForever);
+
+ // Current time = 1
+ group.setCurrentTime(1);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(parallel->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_p_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_p_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_p_o3->state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped);
+
+ QCOMPARE(group.currentLoopTime(), 1);
+ QCOMPARE(a1_p_o1->currentLoopTime(), 1);
+ QCOMPARE(a1_p_o2->currentLoopTime(), 1);
+ QCOMPARE(a1_p_o3->currentLoopTime(), 1);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 1);
+ QCOMPARE(loopsForever->currentLoopTime(), 1);
+
+ // Current time = 250
+ group.setCurrentTime(250);
+ QCOMPARE(group.currentLoopTime(), 250);
+ QCOMPARE(a1_p_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_p_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_p_o2->currentLoop(), 1);
+ QCOMPARE(a1_p_o3->currentLoopTime(), 250);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 250);
+ QCOMPARE(loopsForever->currentLoopTime(), 0);
+ QCOMPARE(loopsForever->currentLoop(), 1);
+
+ // Current time = 251
+ group.setCurrentTime(251);
+ QCOMPARE(group.currentLoopTime(), 251);
+ QCOMPARE(a1_p_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_p_o2->currentLoopTime(), 1);
+ QCOMPARE(a1_p_o2->currentLoop(), 1);
+ QCOMPARE(a1_p_o3->currentLoopTime(), 250);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 251);
+ QCOMPARE(loopsForever->currentLoopTime(), 1);
+}
+
+void tst_QParallelAnimationGroup::stateChanged()
+{
+ //this ensures that the correct animations are started when starting the group
+ TestAnimation *anim1 = new TestAnimation;
+ TestAnimation *anim2 = new TestAnimation;
+ TestAnimation *anim3 = new TestAnimation;
+ TestAnimation *anim4 = new TestAnimation;
+ anim1->setDuration(1000);
+ anim2->setDuration(2000);
+ anim3->setDuration(3000);
+ anim4->setDuration(3000);
+ QParallelAnimationGroup group;
+ group.addAnimation(anim1);
+ group.addAnimation(anim2);
+ group.addAnimation(anim3);
+ group.addAnimation(anim4);
+
+ QSignalSpy spy1(anim1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy spy2(anim2, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy spy3(anim3, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy spy4(anim4, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ //first; let's start forward
+ group.start();
+ //all the animations should be started
+ QCOMPARE(spy1.count(), 1);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy1.last().first()), TestAnimation::Running);
+ QCOMPARE(spy2.count(), 1);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy2.last().first()), TestAnimation::Running);
+ QCOMPARE(spy3.count(), 1);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy3.last().first()), TestAnimation::Running);
+ QCOMPARE(spy4.count(), 1);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy4.last().first()), TestAnimation::Running);
+
+ group.setCurrentTime(1500); //anim1 should be finished
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(spy1.count(), 2);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy1.last().first()), TestAnimation::Stopped);
+ QCOMPARE(spy2.count(), 1); //no change
+ QCOMPARE(spy3.count(), 1); //no change
+ QCOMPARE(spy4.count(), 1); //no change
+
+ group.setCurrentTime(2500); //anim2 should be finished
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(spy1.count(), 2); //no change
+ QCOMPARE(spy2.count(), 2);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy2.last().first()), TestAnimation::Stopped);
+ QCOMPARE(spy3.count(), 1); //no change
+ QCOMPARE(spy4.count(), 1); //no change
+
+ group.setCurrentTime(3500); //everything should be finished
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(spy1.count(), 2); //no change
+ QCOMPARE(spy2.count(), 2); //no change
+ QCOMPARE(spy3.count(), 2);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy3.last().first()), TestAnimation::Stopped);
+ QCOMPARE(spy4.count(), 2);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy4.last().first()), TestAnimation::Stopped);
+
+ //cleanup
+ spy1.clear();
+ spy2.clear();
+ spy3.clear();
+ spy4.clear();
+
+ //now let's try to reverse that
+ group.setDirection(QAbstractAnimation::Backward);
+ group.start();
+
+ //only anim3 and anim4 should be started
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(spy1.count(), 0);
+ QCOMPARE(spy2.count(), 0);
+ QCOMPARE(spy3.count(), 1);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy3.last().first()), TestAnimation::Running);
+ QCOMPARE(spy4.count(), 1);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy4.last().first()), TestAnimation::Running);
+
+ group.setCurrentTime(1500); //anim2 should be started
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(spy1.count(), 0); //no change
+ QCOMPARE(spy2.count(), 1);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy2.last().first()), TestAnimation::Running);
+ QCOMPARE(spy3.count(), 1); //no change
+ QCOMPARE(spy4.count(), 1); //no change
+
+ group.setCurrentTime(500); //anim1 is finally also started
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(spy1.count(), 1);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy1.last().first()), TestAnimation::Running);
+ QCOMPARE(spy2.count(), 1); //no change
+ QCOMPARE(spy3.count(), 1); //no change
+ QCOMPARE(spy4.count(), 1); //no change
+
+ group.setCurrentTime(0); //everything should be stopped
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(spy1.count(), 2);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy1.last().first()), TestAnimation::Stopped);
+ QCOMPARE(spy2.count(), 2);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy2.last().first()), TestAnimation::Stopped);
+ QCOMPARE(spy3.count(), 2);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy3.last().first()), TestAnimation::Stopped);
+ QCOMPARE(spy4.count(), 2);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy4.last().first()), TestAnimation::Stopped);
+}
+
+void tst_QParallelAnimationGroup::clearGroup()
+{
+ QParallelAnimationGroup group;
+ static const int animationCount = 10;
+
+ for (int i = 0; i < animationCount; ++i) {
+ new QParallelAnimationGroup(&group);
+ }
+
+ QCOMPARE(group.animationCount(), animationCount);
+
+ QPointer<QAbstractAnimation> children[animationCount];
+ for (int i = 0; i < animationCount; ++i) {
+ QVERIFY(group.animationAt(i) != 0);
+ children[i] = group.animationAt(i);
+ }
+
+ group.clear();
+ QCOMPARE(group.animationCount(), 0);
+ QCOMPARE(group.currentLoopTime(), 0);
+ for (int i = 0; i < animationCount; ++i)
+ QVERIFY(children[i].isNull());
+}
+
+void tst_QParallelAnimationGroup::propagateGroupUpdateToChildren()
+{
+ // this test verifies if group state changes are updating its children correctly
+ QParallelAnimationGroup group;
+
+ QObject o;
+ o.setProperty("ole", 42);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ QPropertyAnimation anim1(&o, "ole");
+ anim1.setEndValue(43);
+ anim1.setDuration(100);
+ QVERIFY(!anim1.currentValue().isValid());
+ QCOMPARE(anim1.currentValue().toInt(), 0);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ TestAnimation anim2;
+ anim2.setStartValue(0);
+ anim2.setEndValue(100);
+ anim2.setDuration(200);
+
+ QVERIFY(anim2.currentValue().isValid());
+ QCOMPARE(anim2.currentValue().toInt(), 0);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&anim2);
+
+ group.start();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Running);
+
+ group.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(anim1.state(), QAnimationGroup::Paused);
+ QCOMPARE(anim2.state(), QAnimationGroup::Paused);
+
+ group.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+}
+
+void tst_QParallelAnimationGroup::updateChildrenWithRunningGroup()
+{
+ // assert that its possible to modify a child's state directly while their group is running
+ QParallelAnimationGroup group;
+
+ TestAnimation anim;
+ anim.setStartValue(0);
+ anim.setEndValue(100);
+ anim.setDuration(200);
+
+ QSignalSpy groupStateChangedSpy(&group, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy childStateChangedSpy(&anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ QCOMPARE(groupStateChangedSpy.count(), 0);
+ QCOMPARE(childStateChangedSpy.count(), 0);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim.state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(&anim);
+
+ group.start();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim.state(), QAnimationGroup::Running);
+
+ QCOMPARE(groupStateChangedSpy.count(), 1);
+ QCOMPARE(childStateChangedSpy.count(), 1);
+
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(childStateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+
+ // starting directly a running child will not have any effect
+ anim.start();
+
+ QCOMPARE(groupStateChangedSpy.count(), 1);
+ QCOMPARE(childStateChangedSpy.count(), 1);
+
+ anim.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim.state(), QAnimationGroup::Paused);
+
+ // in the animation stops directly, the group will still be running
+ anim.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim.state(), QAnimationGroup::Stopped);
+}
+
+void tst_QParallelAnimationGroup::deleteChildrenWithRunningGroup()
+{
+ // test if children can be activated when their group is stopped
+ QParallelAnimationGroup group;
+
+ QVariantAnimation *anim1 = new TestAnimation;
+ anim1->setStartValue(0);
+ anim1->setEndValue(100);
+ anim1->setDuration(200);
+ group.addAnimation(anim1);
+
+ QCOMPARE(group.duration(), anim1->duration());
+
+ group.start();
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim1->state(), QAnimationGroup::Running);
+
+ QTest::qWait(80);
+ QVERIFY(group.currentLoopTime() > 0);
+
+ delete anim1;
+ QVERIFY(group.animationCount() == 0);
+ QCOMPARE(group.duration(), 0);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(group.currentLoopTime(), 0); //that's the invariant
+}
+
+void tst_QParallelAnimationGroup::startChildrenWithStoppedGroup()
+{
+ // test if children can be activated when their group is stopped
+ QParallelAnimationGroup group;
+
+ TestAnimation anim1;
+ anim1.setStartValue(0);
+ anim1.setEndValue(100);
+ anim1.setDuration(200);
+
+ TestAnimation anim2;
+ anim2.setStartValue(0);
+ anim2.setEndValue(100);
+ anim2.setDuration(200);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&anim2);
+
+ group.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ anim1.start();
+ anim2.start();
+ anim2.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Paused);
+}
+
+void tst_QParallelAnimationGroup::stopGroupWithRunningChild()
+{
+ // children that started independently will not be affected by a group stop
+ QParallelAnimationGroup group;
+
+ TestAnimation anim1;
+ anim1.setStartValue(0);
+ anim1.setEndValue(100);
+ anim1.setDuration(200);
+
+ TestAnimation anim2;
+ anim2.setStartValue(0);
+ anim2.setEndValue(100);
+ anim2.setDuration(200);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&anim2);
+
+ anim1.start();
+ anim2.start();
+ anim2.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Paused);
+
+ group.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Paused);
+
+ anim1.stop();
+ anim2.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+}
+
+void tst_QParallelAnimationGroup::startGroupWithRunningChild()
+{
+ // as the group has precedence over its children, starting a group will restart all the children
+ QParallelAnimationGroup group;
+
+ TestAnimation anim1;
+ anim1.setStartValue(0);
+ anim1.setEndValue(100);
+ anim1.setDuration(200);
+
+ TestAnimation anim2;
+ anim2.setStartValue(0);
+ anim2.setEndValue(100);
+ anim2.setDuration(200);
+
+ QSignalSpy stateChangedSpy1(&anim1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy stateChangedSpy2(&anim2, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ QCOMPARE(stateChangedSpy1.count(), 0);
+ QCOMPARE(stateChangedSpy2.count(), 0);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&anim2);
+
+ anim1.start();
+ anim2.start();
+ anim2.pause();
+
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(1).first()),
+ QAnimationGroup::Paused);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Paused);
+
+ group.start();
+
+ QCOMPARE(stateChangedSpy1.count(), 3);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(1).first()),
+ QAnimationGroup::Stopped);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(2).first()),
+ QAnimationGroup::Running);
+
+ QCOMPARE(stateChangedSpy2.count(), 4);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(2).first()),
+ QAnimationGroup::Stopped);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(3).first()),
+ QAnimationGroup::Running);
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Running);
+}
+
+void tst_QParallelAnimationGroup::zeroDurationAnimation()
+{
+ QParallelAnimationGroup group;
+
+ TestAnimation anim1;
+ anim1.setStartValue(0);
+ anim1.setEndValue(100);
+ anim1.setDuration(0);
+
+ TestAnimation anim2;
+ anim2.setStartValue(0);
+ anim2.setEndValue(100);
+ anim2.setDuration(100);
+
+ TestAnimation anim3;
+ anim3.setStartValue(0);
+ anim3.setEndValue(100);
+ anim3.setDuration(10);
+
+ QSignalSpy stateChangedSpy1(&anim1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy finishedSpy1(&anim1, SIGNAL(finished()));
+
+ QSignalSpy stateChangedSpy2(&anim2, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy finishedSpy2(&anim2, SIGNAL(finished()));
+
+ QSignalSpy stateChangedSpy3(&anim3, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy finishedSpy3(&anim3, SIGNAL(finished()));
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&anim2);
+ group.addAnimation(&anim3);
+ QCOMPARE(stateChangedSpy1.count(), 0);
+ group.start();
+ QCOMPARE(stateChangedSpy1.count(), 2);
+ QCOMPARE(finishedSpy1.count(), 1);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(1).first()),
+ QAnimationGroup::Stopped);
+
+ QCOMPARE(stateChangedSpy2.count(), 1);
+ QCOMPARE(finishedSpy2.count(), 0);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy1.at(0).first()),
+ QAnimationGroup::Running);
+
+ QCOMPARE(stateChangedSpy3.count(), 1);
+ QCOMPARE(finishedSpy3.count(), 0);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy3.at(0).first()),
+ QAnimationGroup::Running);
+
+
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Running);
+ QCOMPARE(anim3.state(), QAnimationGroup::Running);
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+
+
+ group.stop();
+ group.setLoopCount(4);
+ stateChangedSpy1.clear();
+ stateChangedSpy2.clear();
+ stateChangedSpy3.clear();
+
+ group.start();
+ QCOMPARE(stateChangedSpy1.count(), 2);
+ QCOMPARE(stateChangedSpy2.count(), 1);
+ QCOMPARE(stateChangedSpy3.count(), 1);
+ group.setCurrentTime(50);
+ QCOMPARE(stateChangedSpy1.count(), 2);
+ QCOMPARE(stateChangedSpy2.count(), 1);
+ QCOMPARE(stateChangedSpy3.count(), 2);
+ group.setCurrentTime(150);
+ QCOMPARE(stateChangedSpy1.count(), 4);
+ QCOMPARE(stateChangedSpy2.count(), 3);
+ QCOMPARE(stateChangedSpy3.count(), 4);
+ group.setCurrentTime(50);
+ QCOMPARE(stateChangedSpy1.count(), 6);
+ QCOMPARE(stateChangedSpy2.count(), 5);
+ QCOMPARE(stateChangedSpy3.count(), 6);
+
+}
+
+void tst_QParallelAnimationGroup::stopUncontrolledAnimations()
+{
+ QParallelAnimationGroup group;
+
+ TestAnimation anim1;
+ anim1.setStartValue(0);
+ anim1.setEndValue(100);
+ anim1.setDuration(0);
+
+ AnimationObject o1;
+ UncontrolledAnimation notTimeDriven(&o1, "value");
+ QCOMPARE(notTimeDriven.totalDuration(), -1);
+
+ TestAnimation loopsForever;
+ loopsForever.setStartValue(0);
+ loopsForever.setEndValue(100);
+ loopsForever.setDuration(100);
+ loopsForever.setLoopCount(-1);
+
+ QSignalSpy stateChangedSpy(&anim1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&notTimeDriven);
+ group.addAnimation(&loopsForever);
+
+ group.start();
+
+ QCOMPARE(stateChangedSpy.count(), 2);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(1).first()),
+ QAnimationGroup::Stopped);
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(notTimeDriven.state(), QAnimationGroup::Running);
+ QCOMPARE(loopsForever.state(), QAnimationGroup::Running);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+
+ notTimeDriven.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever.state(), QAnimationGroup::Running);
+
+ loopsForever.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever.state(), QAnimationGroup::Stopped);
+}
+
+struct AnimState {
+ AnimState(int time = -1) : time(time), state(-1) {}
+ AnimState(int time, int state) : time(time), state(state) {}
+ int time;
+ int state;
+};
+
+#define Running QAbstractAnimation::Running
+#define Stopped QAbstractAnimation::Stopped
+
+Q_DECLARE_METATYPE(AnimState)
+void tst_QParallelAnimationGroup::loopCount_data()
+{
+ QTest::addColumn<bool>("directionBackward");
+ QTest::addColumn<int>("setLoopCount");
+ QTest::addColumn<int>("initialGroupTime");
+ QTest::addColumn<int>("currentGroupTime");
+ QTest::addColumn<AnimState>("expected1");
+ QTest::addColumn<AnimState>("expected2");
+ QTest::addColumn<AnimState>("expected3");
+
+ // D U R A T I O N
+ // 100 60*2 0
+ // direction = Forward
+ QTest::newRow("50") << false << 3 << 0 << 50 << AnimState( 50, Running) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("100") << false << 3 << 0 << 100 << AnimState(100 ) << AnimState( 40, Running) << AnimState( 0, Stopped);
+ QTest::newRow("110") << false << 3 << 0 << 110 << AnimState(100, Stopped) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("120") << false << 3 << 0 << 120 << AnimState( 0, Running) << AnimState( 0, Running) << AnimState( 0, Stopped);
+
+ QTest::newRow("170") << false << 3 << 0 << 170 << AnimState( 50, Running) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("220") << false << 3 << 0 << 220 << AnimState(100 ) << AnimState( 40, Running) << AnimState( 0, Stopped);
+ QTest::newRow("230") << false << 3 << 0 << 230 << AnimState(100, Stopped) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("240") << false << 3 << 0 << 240 << AnimState( 0, Running) << AnimState( 0, Running) << AnimState( 0, Stopped);
+
+ QTest::newRow("290") << false << 3 << 0 << 290 << AnimState( 50, Running) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("340") << false << 3 << 0 << 340 << AnimState(100 ) << AnimState( 40, Running) << AnimState( 0, Stopped);
+ QTest::newRow("350") << false << 3 << 0 << 350 << AnimState(100, Stopped) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("360") << false << 3 << 0 << 360 << AnimState(100, Stopped) << AnimState( 60 ) << AnimState( 0, Stopped);
+
+ QTest::newRow("410") << false << 3 << 0 << 410 << AnimState(100, Stopped) << AnimState( 60, Stopped) << AnimState( 0, Stopped);
+ QTest::newRow("460") << false << 3 << 0 << 460 << AnimState(100, Stopped) << AnimState( 60, Stopped) << AnimState( 0, Stopped);
+ QTest::newRow("470") << false << 3 << 0 << 470 << AnimState(100, Stopped) << AnimState( 60, Stopped) << AnimState( 0, Stopped);
+ QTest::newRow("480") << false << 3 << 0 << 480 << AnimState(100, Stopped) << AnimState( 60, Stopped) << AnimState( 0, Stopped);
+
+ // direction = Forward, rewind
+ QTest::newRow("120-110") << false << 3 << 120 << 110 << AnimState( 0, Stopped) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("120-50") << false << 3 << 120 << 50 << AnimState( 50, Running) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("120-0") << false << 3 << 120 << 0 << AnimState( 0, Running) << AnimState( 0, Running) << AnimState( 0, Stopped);
+ QTest::newRow("300-110") << false << 3 << 300 << 110 << AnimState( 0, Stopped) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("300-50") << false << 3 << 300 << 50 << AnimState( 50, Running) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("300-0") << false << 3 << 300 << 0 << AnimState( 0, Running) << AnimState( 0, Running) << AnimState( 0, Stopped);
+ QTest::newRow("115-105") << false << 3 << 115 << 105 << AnimState( 42, Stopped) << AnimState( 45, Running) << AnimState( 0, Stopped);
+
+ // direction = Backward
+ QTest::newRow("b120-120") << true << 3 << 120 << 120 << AnimState( 42, Stopped) << AnimState( 60, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b120-110") << true << 3 << 120 << 110 << AnimState( 42, Stopped) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b120-100") << true << 3 << 120 << 100 << AnimState(100, Running) << AnimState( 40, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b120-50") << true << 3 << 120 << 50 << AnimState( 50, Running) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b120-0") << true << 3 << 120 << 0 << AnimState( 0, Stopped) << AnimState( 0, Stopped) << AnimState( 0, Stopped);
+ QTest::newRow("b360-170") << true << 3 << 360 << 170 << AnimState( 50, Running) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b360-220") << true << 3 << 360 << 220 << AnimState(100, Running) << AnimState( 40, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b360-210") << true << 3 << 360 << 210 << AnimState( 90, Running) << AnimState( 30, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b360-120") << true << 3 << 360 << 120 << AnimState( 0, Stopped) << AnimState( 60, Running) << AnimState( 0, Stopped);
+
+ // rewind, direction = Backward
+ QTest::newRow("b50-110") << true << 3 << 50 << 110 << AnimState(100, Stopped) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b50-120") << true << 3 << 50 << 120 << AnimState(100, Stopped) << AnimState( 60, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b50-140") << true << 3 << 50 << 140 << AnimState( 20, Running) << AnimState( 20, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b50-240") << true << 3 << 50 << 240 << AnimState(100, Stopped) << AnimState( 60, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b50-260") << true << 3 << 50 << 260 << AnimState( 20, Running) << AnimState( 20, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b50-350") << true << 3 << 50 << 350 << AnimState(100, Stopped) << AnimState( 50, Running) << AnimState( 0, Stopped);
+
+ // infinite looping
+ QTest::newRow("inf1220") << false << -1 << 0 << 1220 << AnimState( 20, Running) << AnimState( 20, Running) << AnimState( 0, Stopped);
+ QTest::newRow("inf1310") << false << -1 << 0 << 1310 << AnimState( 100, Stopped) << AnimState( 50, Running) << AnimState( 0, Stopped);
+ // infinite looping, direction = Backward (will only loop once)
+ QTest::newRow("b.inf120-120") << true << -1 << 120 << 120 << AnimState( 42, Stopped) << AnimState( 60, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b.inf120-20") << true << -1 << 120 << 20 << AnimState( 20, Running) << AnimState( 20, Running) << AnimState( 0, Stopped);
+ QTest::newRow("b.inf120-110") << true << -1 << 120 << 110 << AnimState( 42, Stopped) << AnimState( 50, Running) << AnimState( 0, Stopped);
+
+
+}
+
+void tst_QParallelAnimationGroup::loopCount()
+{
+ QFETCH(bool, directionBackward);
+ QFETCH(int, setLoopCount);
+ QFETCH(int, initialGroupTime);
+ QFETCH(int, currentGroupTime);
+ QFETCH(AnimState, expected1);
+ QFETCH(AnimState, expected2);
+ QFETCH(AnimState, expected3);
+
+ QParallelAnimationGroup group;
+
+ TestAnimation anim1;
+ anim1.setStartValue(0);
+ anim1.setEndValue(100);
+ anim1.setDuration(100);
+
+ TestAnimation anim2;
+ anim2.setStartValue(0);
+ anim2.setEndValue(100);
+ anim2.setDuration(60); //total 120
+ anim2.setLoopCount(2);
+
+ TestAnimation anim3;
+ anim3.setStartValue(0);
+ anim3.setEndValue(100);
+ anim3.setDuration(0);
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&anim2);
+ group.addAnimation(&anim3);
+
+ group.setLoopCount(setLoopCount);
+ if (initialGroupTime >= 0)
+ group.setCurrentTime(initialGroupTime);
+ if (directionBackward)
+ group.setDirection(QAbstractAnimation::Backward);
+
+ group.start();
+ if (initialGroupTime >= 0)
+ group.setCurrentTime(initialGroupTime);
+
+ anim1.setCurrentTime(42); // 42 is "untouched"
+ anim2.setCurrentTime(42);
+
+ group.setCurrentTime(currentGroupTime);
+
+ QCOMPARE(anim1.currentLoopTime(), expected1.time);
+ QCOMPARE(anim2.currentLoopTime(), expected2.time);
+ QCOMPARE(anim3.currentLoopTime(), expected3.time);
+
+ if (expected1.state >=0)
+ QCOMPARE(int(anim1.state()), expected1.state);
+ if (expected2.state >=0)
+ QCOMPARE(int(anim2.state()), expected2.state);
+ if (expected3.state >=0)
+ QCOMPARE(int(anim3.state()), expected3.state);
+
+}
+
+void tst_QParallelAnimationGroup::autoAdd()
+{
+ QParallelAnimationGroup group;
+ QCOMPARE(group.duration(), 0);
+ TestAnimation2 *test = new TestAnimation2(250, &group); // 0, duration = 250;
+ QCOMPARE(test->group(), static_cast<QAnimationGroup*>(&group));
+ QCOMPARE(test->duration(), 250);
+ QCOMPARE(group.duration(), 250);
+
+ test = new TestAnimation2(750, &group); // 1
+ QCOMPARE(test->group(), static_cast<QAnimationGroup*>(&group));
+ QCOMPARE(group.duration(), 750);
+ test = new TestAnimation2(500, &group); // 2
+ QCOMPARE(test->group(), static_cast<QAnimationGroup*>(&group));
+ QCOMPARE(group.duration(), 750);
+
+ delete group.animationAt(1); // remove the one with duration = 750
+ QCOMPARE(group.duration(), 500);
+
+ delete group.animationAt(1); // remove the one with duration = 500
+ QCOMPARE(group.duration(), 250);
+
+ test = static_cast<TestAnimation2*>(group.animationAt(0));
+ test->setParent(0); // remove the last one (with duration = 250)
+ QCOMPARE(test->group(), static_cast<QAnimationGroup*>(0));
+ QCOMPARE(group.duration(), 0);
+}
+
+void tst_QParallelAnimationGroup::pauseResume()
+{
+ QParallelAnimationGroup group;
+ TestAnimation2 *anim = new TestAnimation2(250, &group); // 0, duration = 250;
+ QSignalSpy spy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QCOMPARE(group.duration(), 250);
+ group.start();
+ QTest::qWait(100);
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QCOMPARE(spy.count(), 1);
+ spy.clear();
+ const int currentTime = group.currentLoopTime();
+ QCOMPARE(anim->currentLoopTime(), currentTime);
+
+ group.pause();
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(group.currentLoopTime(), currentTime);
+ QCOMPARE(anim->state(), QAnimationGroup::Paused);
+ QCOMPARE(anim->currentLoopTime(), currentTime);
+ QCOMPARE(spy.count(), 1);
+ spy.clear();
+
+ group.resume();
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(group.currentLoopTime(), currentTime);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QCOMPARE(anim->currentLoopTime(), currentTime);
+ QCOMPARE(spy.count(), 1);
+
+ group.stop();
+ spy.clear();
+ new TestAnimation2(500, &group);
+ group.start();
+ QCOMPARE(spy.count(), 1); //the animation should have been started
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy.last().first()), TestAnimation::Running);
+ group.setCurrentTime(250); //end of first animation
+ QCOMPARE(spy.count(), 2); //the animation should have been stopped
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(spy.last().first()), TestAnimation::Stopped);
+ group.pause();
+ QCOMPARE(spy.count(), 2); //this shouldn't have changed
+ group.resume();
+ QCOMPARE(spy.count(), 2); //this shouldn't have changed
+}
+
+
+void tst_QParallelAnimationGroup::QTBUG8910_crashWhenRemovingUncontrolledAnimation()
+{
+ QParallelAnimationGroup group;
+ TestAnimation *anim = new TestAnimation;
+ anim->setLoopCount(-1);
+ TestAnimation *anim2 = new TestAnimation;
+ anim2->setLoopCount(-1);
+ group.addAnimation(anim);
+ group.addAnimation(anim2);
+ group.start();
+ delete anim;
+ // it would crash here because the internals of the group would still have a reference to anim
+ delete anim2;
+}
+
+
+QTEST_MAIN(tst_QParallelAnimationGroup)
+#include "tst_qparallelanimationgroup.moc"
diff --git a/tests/auto/corelib/animation/qpauseanimation/qpauseanimation.pro b/tests/auto/corelib/animation/qpauseanimation/qpauseanimation.pro
new file mode 100644
index 0000000000..7f612b69fe
--- /dev/null
+++ b/tests/auto/corelib/animation/qpauseanimation/qpauseanimation.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT = core core-private gui gui-private
+SOURCES += tst_qpauseanimation.cpp
+
+
diff --git a/tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp b/tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp
new file mode 100644
index 0000000000..ea99e19fb3
--- /dev/null
+++ b/tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp
@@ -0,0 +1,426 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <QtCore/qpauseanimation.h>
+#include <QtCore/qpropertyanimation.h>
+#include <QtCore/qsequentialanimationgroup.h>
+
+#include <private/qabstractanimation_p.h>
+
+//TESTED_CLASS=QPauseAnimation
+//TESTED_FILES=
+
+class TestablePauseAnimation : public QPauseAnimation
+{
+ Q_OBJECT
+public:
+ TestablePauseAnimation(QObject *parent = 0)
+ : QPauseAnimation(parent),
+ m_updateCurrentTimeCount(0)
+ {
+ }
+
+ int m_updateCurrentTimeCount;
+protected:
+ void updateCurrentTime(int currentTime)
+ {
+ //qDebug() << this << "update current time: " << currentTime;
+ QPauseAnimation::updateCurrentTime(currentTime);
+ ++m_updateCurrentTimeCount;
+ }
+};
+
+class EnableConsistentTiming
+{
+public:
+ EnableConsistentTiming()
+ {
+ QUnifiedTimer *timer = QUnifiedTimer::instance();
+ timer->setConsistentTiming(true);
+ }
+ ~EnableConsistentTiming()
+ {
+ QUnifiedTimer *timer = QUnifiedTimer::instance();
+ timer->setConsistentTiming(false);
+ }
+};
+
+class tst_QPauseAnimation : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QPauseAnimation();
+ virtual ~tst_QPauseAnimation();
+
+public Q_SLOTS:
+ void initTestCase();
+
+private slots:
+ void changeDirectionWhileRunning();
+ void noTimerUpdates_data();
+ void noTimerUpdates();
+ void multiplePauseAnimations();
+ void pauseAndPropertyAnimations();
+ void pauseResume();
+ void sequentialPauseGroup();
+ void sequentialGroupWithPause();
+ void multipleSequentialGroups();
+ void zeroDuration();
+};
+
+tst_QPauseAnimation::tst_QPauseAnimation()
+{
+}
+
+tst_QPauseAnimation::~tst_QPauseAnimation()
+{
+}
+
+void tst_QPauseAnimation::initTestCase()
+{
+ qRegisterMetaType<QAbstractAnimation::State>("QAbstractAnimation::State");
+ qRegisterMetaType<QAbstractAnimation::DeletionPolicy>("QAbstractAnimation::DeletionPolicy");
+}
+
+void tst_QPauseAnimation::changeDirectionWhileRunning()
+{
+ EnableConsistentTiming enabled;
+
+ TestablePauseAnimation animation;
+ animation.setDuration(400);
+ animation.start();
+ QTest::qWait(100);
+ QVERIFY(animation.state() == QAbstractAnimation::Running);
+ animation.setDirection(QAbstractAnimation::Backward);
+ QTest::qWait(animation.totalDuration() + 50);
+ QVERIFY(animation.state() == QAbstractAnimation::Stopped);
+}
+
+void tst_QPauseAnimation::noTimerUpdates_data()
+{
+ QTest::addColumn<int>("duration");
+ QTest::addColumn<int>("loopCount");
+
+ QTest::newRow("0") << 200 << 1;
+ QTest::newRow("1") << 160 << 1;
+ QTest::newRow("2") << 160 << 2;
+ QTest::newRow("3") << 200 << 3;
+}
+
+void tst_QPauseAnimation::noTimerUpdates()
+{
+ EnableConsistentTiming enabled;
+
+ QFETCH(int, duration);
+ QFETCH(int, loopCount);
+
+ TestablePauseAnimation animation;
+ animation.setDuration(duration);
+ animation.setLoopCount(loopCount);
+ animation.start();
+ QTest::qWait(animation.totalDuration() + 100);
+
+#ifdef Q_OS_WIN
+ if (animation.state() != QAbstractAnimation::Stopped)
+ QEXPECT_FAIL("", "On windows, consistent timing is not working properly due to bad timer resolution", Abort);
+#endif
+
+ QVERIFY(animation.state() == QAbstractAnimation::Stopped);
+ QCOMPARE(animation.m_updateCurrentTimeCount, 1 + loopCount);
+}
+
+void tst_QPauseAnimation::multiplePauseAnimations()
+{
+ EnableConsistentTiming enabled;
+
+ TestablePauseAnimation animation;
+ animation.setDuration(200);
+
+ TestablePauseAnimation animation2;
+ animation2.setDuration(800);
+
+ animation.start();
+ animation2.start();
+ QTest::qWait(animation.totalDuration() + 100);
+
+#ifdef Q_OS_WIN
+ if (animation.state() != QAbstractAnimation::Stopped)
+ QEXPECT_FAIL("", "On windows, consistent timing is not working properly due to bad timer resolution", Abort);
+#endif
+
+ QVERIFY(animation.state() == QAbstractAnimation::Stopped);
+ QVERIFY(animation2.state() == QAbstractAnimation::Running);
+ QCOMPARE(animation.m_updateCurrentTimeCount, 2);
+ QCOMPARE(animation2.m_updateCurrentTimeCount, 2);
+
+ QTest::qWait(550);
+
+#ifdef Q_OS_WIN
+ if (animation2.state() != QAbstractAnimation::Stopped)
+ QEXPECT_FAIL("", "On windows, consistent timing is not working properly due to bad timer resolution", Abort);
+#endif
+
+ QVERIFY(animation2.state() == QAbstractAnimation::Stopped);
+ QCOMPARE(animation2.m_updateCurrentTimeCount, 3);
+}
+
+void tst_QPauseAnimation::pauseAndPropertyAnimations()
+{
+ EnableConsistentTiming enabled;
+
+ TestablePauseAnimation pause;
+ pause.setDuration(200);
+
+ QObject o;
+ o.setProperty("ole", 42);
+
+ QPropertyAnimation animation(&o, "ole");
+ animation.setEndValue(43);
+
+ pause.start();
+
+ QTest::qWait(100);
+ animation.start();
+
+ QVERIFY(animation.state() == QAbstractAnimation::Running);
+ QVERIFY(pause.state() == QAbstractAnimation::Running);
+ QCOMPARE(pause.m_updateCurrentTimeCount, 2);
+
+ QTest::qWait(animation.totalDuration() + 100);
+
+#ifdef Q_OS_WIN
+ if (animation.state() != QAbstractAnimation::Stopped)
+ QEXPECT_FAIL("", "On windows, consistent timing is not working properly due to bad timer resolution", Abort);
+#endif
+ QVERIFY(animation.state() == QAbstractAnimation::Stopped);
+ QVERIFY(pause.state() == QAbstractAnimation::Stopped);
+ QVERIFY(pause.m_updateCurrentTimeCount > 3);
+}
+
+void tst_QPauseAnimation::pauseResume()
+{
+ TestablePauseAnimation animation;
+ animation.setDuration(400);
+ animation.start();
+ QVERIFY(animation.state() == QAbstractAnimation::Running);
+ QTest::qWait(200);
+ animation.pause();
+ QVERIFY(animation.state() == QAbstractAnimation::Paused);
+ animation.start();
+ QTest::qWait(300);
+ QVERIFY(animation.state() == QAbstractAnimation::Stopped);
+ QCOMPARE(animation.m_updateCurrentTimeCount, 3);
+}
+
+void tst_QPauseAnimation::sequentialPauseGroup()
+{
+ QSequentialAnimationGroup group;
+
+ TestablePauseAnimation animation1(&group);
+ animation1.setDuration(200);
+ TestablePauseAnimation animation2(&group);
+ animation2.setDuration(200);
+ TestablePauseAnimation animation3(&group);
+ animation3.setDuration(200);
+
+ group.start();
+ QCOMPARE(animation1.m_updateCurrentTimeCount, 1);
+ QCOMPARE(animation2.m_updateCurrentTimeCount, 0);
+ QCOMPARE(animation3.m_updateCurrentTimeCount, 0);
+
+ QVERIFY(group.state() == QAbstractAnimation::Running);
+ QVERIFY(animation1.state() == QAbstractAnimation::Running);
+ QVERIFY(animation2.state() == QAbstractAnimation::Stopped);
+ QVERIFY(animation3.state() == QAbstractAnimation::Stopped);
+
+ group.setCurrentTime(250);
+ QCOMPARE(animation1.m_updateCurrentTimeCount, 2);
+ QCOMPARE(animation2.m_updateCurrentTimeCount, 1);
+ QCOMPARE(animation3.m_updateCurrentTimeCount, 0);
+
+ QVERIFY(group.state() == QAbstractAnimation::Running);
+ QVERIFY(animation1.state() == QAbstractAnimation::Stopped);
+ QCOMPARE((QAbstractAnimation*)&animation2, group.currentAnimation());
+ QVERIFY(animation2.state() == QAbstractAnimation::Running);
+ QVERIFY(animation3.state() == QAbstractAnimation::Stopped);
+
+ group.setCurrentTime(500);
+ QCOMPARE(animation1.m_updateCurrentTimeCount, 2);
+ QCOMPARE(animation2.m_updateCurrentTimeCount, 2);
+ QCOMPARE(animation3.m_updateCurrentTimeCount, 1);
+
+ QVERIFY(group.state() == QAbstractAnimation::Running);
+ QVERIFY(animation1.state() == QAbstractAnimation::Stopped);
+ QVERIFY(animation2.state() == QAbstractAnimation::Stopped);
+ QCOMPARE((QAbstractAnimation*)&animation3, group.currentAnimation());
+ QVERIFY(animation3.state() == QAbstractAnimation::Running);
+
+ group.setCurrentTime(750);
+
+ QVERIFY(group.state() == QAbstractAnimation::Stopped);
+ QVERIFY(animation1.state() == QAbstractAnimation::Stopped);
+ QVERIFY(animation2.state() == QAbstractAnimation::Stopped);
+ QVERIFY(animation3.state() == QAbstractAnimation::Stopped);
+
+ QCOMPARE(animation1.m_updateCurrentTimeCount, 2);
+ QCOMPARE(animation2.m_updateCurrentTimeCount, 2);
+ QCOMPARE(animation3.m_updateCurrentTimeCount, 2);
+}
+
+void tst_QPauseAnimation::sequentialGroupWithPause()
+{
+ QSequentialAnimationGroup group;
+
+ QObject o;
+ o.setProperty("ole", 42);
+
+ QPropertyAnimation animation(&o, "ole", &group);
+ animation.setEndValue(43);
+ TestablePauseAnimation pause(&group);
+ pause.setDuration(250);
+
+ group.start();
+
+ QVERIFY(group.state() == QAbstractAnimation::Running);
+ QVERIFY(animation.state() == QAbstractAnimation::Running);
+ QVERIFY(pause.state() == QAbstractAnimation::Stopped);
+
+ group.setCurrentTime(300);
+
+ QVERIFY(group.state() == QAbstractAnimation::Running);
+ QVERIFY(animation.state() == QAbstractAnimation::Stopped);
+ QCOMPARE((QAbstractAnimation*)&pause, group.currentAnimation());
+ QVERIFY(pause.state() == QAbstractAnimation::Running);
+
+ group.setCurrentTime(600);
+
+ QVERIFY(group.state() == QAbstractAnimation::Stopped);
+ QVERIFY(animation.state() == QAbstractAnimation::Stopped);
+ QVERIFY(pause.state() == QAbstractAnimation::Stopped);
+
+ QCOMPARE(pause.m_updateCurrentTimeCount, 2);
+}
+
+void tst_QPauseAnimation::multipleSequentialGroups()
+{
+ EnableConsistentTiming enabled;
+
+ QParallelAnimationGroup group;
+ group.setLoopCount(2);
+
+ QSequentialAnimationGroup subgroup1(&group);
+
+ QObject o;
+ o.setProperty("ole", 42);
+
+ QPropertyAnimation animation(&o, "ole", &subgroup1);
+ animation.setEndValue(43);
+ animation.setDuration(300);
+ TestablePauseAnimation pause(&subgroup1);
+ pause.setDuration(200);
+
+ QSequentialAnimationGroup subgroup2(&group);
+
+ o.setProperty("ole2", 42);
+ QPropertyAnimation animation2(&o, "ole2", &subgroup2);
+ animation2.setEndValue(43);
+ animation2.setDuration(200);
+ TestablePauseAnimation pause2(&subgroup2);
+ pause2.setDuration(250);
+
+ QSequentialAnimationGroup subgroup3(&group);
+
+ TestablePauseAnimation pause3(&subgroup3);
+ pause3.setDuration(400);
+
+ o.setProperty("ole3", 42);
+ QPropertyAnimation animation3(&o, "ole3", &subgroup3);
+ animation3.setEndValue(43);
+ animation3.setDuration(200);
+
+ QSequentialAnimationGroup subgroup4(&group);
+
+ TestablePauseAnimation pause4(&subgroup4);
+ pause4.setDuration(310);
+
+ TestablePauseAnimation pause5(&subgroup4);
+ pause5.setDuration(60);
+
+ group.start();
+
+ QVERIFY(group.state() == QAbstractAnimation::Running);
+ QVERIFY(subgroup1.state() == QAbstractAnimation::Running);
+ QVERIFY(subgroup2.state() == QAbstractAnimation::Running);
+ QVERIFY(subgroup3.state() == QAbstractAnimation::Running);
+ QVERIFY(subgroup4.state() == QAbstractAnimation::Running);
+
+ // This is a pretty long animation so it tends to get rather out of sync
+ // when using the consistent timer, so run for an extra half second for good
+ // measure...
+ QTest::qWait(group.totalDuration() + 500);
+
+#ifdef Q_OS_WIN
+ if (group.state() != QAbstractAnimation::Stopped)
+ QEXPECT_FAIL("", "On windows, consistent timing is not working properly due to bad timer resolution", Abort);
+#endif
+ QVERIFY(group.state() == QAbstractAnimation::Stopped);
+ QVERIFY(subgroup1.state() == QAbstractAnimation::Stopped);
+ QVERIFY(subgroup2.state() == QAbstractAnimation::Stopped);
+ QVERIFY(subgroup3.state() == QAbstractAnimation::Stopped);
+ QVERIFY(subgroup4.state() == QAbstractAnimation::Stopped);
+
+ QCOMPARE(pause5.m_updateCurrentTimeCount, 4);
+}
+
+void tst_QPauseAnimation::zeroDuration()
+{
+ TestablePauseAnimation animation;
+ animation.setDuration(0);
+ animation.start();
+ QTest::qWait(animation.totalDuration() + 100);
+ QVERIFY(animation.state() == QAbstractAnimation::Stopped);
+ QCOMPARE(animation.m_updateCurrentTimeCount, 1);
+}
+
+QTEST_MAIN(tst_QPauseAnimation)
+#include "tst_qpauseanimation.moc"
diff --git a/tests/auto/corelib/animation/qpropertyanimation/qpropertyanimation.pro b/tests/auto/corelib/animation/qpropertyanimation/qpropertyanimation.pro
new file mode 100644
index 0000000000..4dfd558610
--- /dev/null
+++ b/tests/auto/corelib/animation/qpropertyanimation/qpropertyanimation.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT = core gui widgets
+SOURCES += tst_qpropertyanimation.cpp
+
+
diff --git a/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp b/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp
new file mode 100644
index 0000000000..e5feab4aa6
--- /dev/null
+++ b/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp
@@ -0,0 +1,1243 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include "../../../../shared/util.h"
+
+#include <QtCore/qpropertyanimation.h>
+#include <QtCore/qvariantanimation.h>
+#include <QtWidgets/qwidget.h>
+#include "../../../../shared/util.h"
+
+//TESTED_CLASS=QPropertyAnimation
+//TESTED_FILES=
+
+class UncontrolledAnimation : public QPropertyAnimation
+{
+ Q_OBJECT
+public:
+ int duration() const { return -1; /* not time driven */ }
+
+protected:
+ void updateCurrentTime(int currentTime)
+ {
+ QPropertyAnimation::updateCurrentTime(currentTime);
+ if (currentTime >= QPropertyAnimation::duration() || currentLoop() >= 1)
+ stop();
+ }
+};
+
+class MyObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(qreal x READ x WRITE setX)
+public:
+ MyObject() : m_x(0) { }
+ qreal x() const { return m_x; }
+ void setX(qreal x) { m_x = x; }
+private:
+ qreal m_x;
+};
+
+class DummyPropertyAnimation : public QPropertyAnimation
+{
+public:
+ DummyPropertyAnimation(QObject *parent = 0) : QPropertyAnimation(parent)
+ {
+ setTargetObject(&o);
+ this->setPropertyName("x");
+ setEndValue(100);
+ }
+
+ MyObject o;
+};
+
+
+class tst_QPropertyAnimation : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QPropertyAnimation();
+ virtual ~tst_QPropertyAnimation();
+
+public Q_SLOTS:
+ void init();
+ void cleanup();
+
+private slots:
+ void construction();
+ void setCurrentTime_data();
+ void setCurrentTime();
+ void statesAndSignals_data();
+ void statesAndSignals();
+ void deletion1();
+ void deletion2();
+ void deletion3();
+ void duration0();
+ void noStartValue();
+ void noStartValueWithLoop();
+ void startWhenAnotherIsRunning();
+ void easingcurve_data();
+ void easingcurve();
+ void startWithoutStartValue();
+ void startBackwardWithoutEndValue();
+ void playForwardBackward();
+ void interpolated();
+ void setStartEndValues_data();
+ void setStartEndValues();
+ void zeroDurationStart();
+ void operationsInStates_data();
+ void operationsInStates();
+ void oneKeyValue();
+ void updateOnSetKeyValues();
+ void restart();
+ void valueChanged();
+ void twoAnimations();
+ void deletedInUpdateCurrentTime();
+ void totalDuration();
+ void zeroLoopCount();
+};
+
+tst_QPropertyAnimation::tst_QPropertyAnimation()
+{
+}
+
+tst_QPropertyAnimation::~tst_QPropertyAnimation()
+{
+}
+
+void tst_QPropertyAnimation::init()
+{
+ qRegisterMetaType<QAbstractAnimation::State>("QAbstractAnimation::State");
+ qRegisterMetaType<QAbstractAnimation::DeletionPolicy>("QAbstractAnimation::DeletionPolicy");
+}
+
+void tst_QPropertyAnimation::cleanup()
+{
+}
+
+class AnimationObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int value READ value WRITE setValue)
+ Q_PROPERTY(qreal realValue READ realValue WRITE setRealValue)
+public:
+ AnimationObject(int startValue = 0)
+ : v(startValue), rv(startValue)
+ { }
+
+ int value() const { return v; }
+ void setValue(int value) { v = value; }
+
+ qreal realValue() const { return rv; }
+ void setRealValue(qreal value) { rv = value; }
+
+ int v;
+ qreal rv;
+};
+
+
+void tst_QPropertyAnimation::construction()
+{
+ QPropertyAnimation panimation;
+}
+
+void tst_QPropertyAnimation::setCurrentTime_data()
+{
+ QTest::addColumn<int>("duration");
+ QTest::addColumn<int>("loopCount");
+ QTest::addColumn<int>("currentTime");
+ QTest::addColumn<int>("testCurrentTime");
+ QTest::addColumn<int>("testCurrentLoop");
+
+ QTest::newRow("-1") << -1 << 1 << 0 << 0 << 0;
+ QTest::newRow("0") << 0 << 1 << 0 << 0 << 0;
+ QTest::newRow("1") << 0 << 1 << 1 << 0 << 0;
+ QTest::newRow("2") << 0 << 2 << 1 << 0 << 0;
+ QTest::newRow("3") << 1 << 1 << 0 << 0 << 0;
+ QTest::newRow("4") << 1 << 1 << 1 << 1 << 0;
+ QTest::newRow("5") << 1 << 2 << 1 << 0 << 1;
+ QTest::newRow("6") << 1 << 2 << 2 << 1 << 1;
+ QTest::newRow("7") << 1 << 2 << 3 << 1 << 1;
+ QTest::newRow("8") << 1 << 3 << 2 << 0 << 2;
+ QTest::newRow("9") << 1 << 3 << 3 << 1 << 2;
+ QTest::newRow("a") << 10 << 1 << 0 << 0 << 0;
+ QTest::newRow("b") << 10 << 1 << 1 << 1 << 0;
+ QTest::newRow("c") << 10 << 1 << 10 << 10 << 0;
+ QTest::newRow("d") << 10 << 2 << 10 << 0 << 1;
+ QTest::newRow("e") << 10 << 2 << 11 << 1 << 1;
+ QTest::newRow("f") << 10 << 2 << 20 << 10 << 1;
+ QTest::newRow("g") << 10 << 2 << 21 << 10 << 1;
+ QTest::newRow("negloop 0") << 10 << -1 << 0 << 0 << 0;
+ QTest::newRow("negloop 1") << 10 << -1 << 10 << 0 << 1;
+ QTest::newRow("negloop 2") << 10 << -1 << 15 << 5 << 1;
+ QTest::newRow("negloop 3") << 10 << -1 << 20 << 0 << 2;
+ QTest::newRow("negloop 4") << 10 << -1 << 30 << 0 << 3;
+}
+
+void tst_QPropertyAnimation::setCurrentTime()
+{
+ QFETCH(int, duration);
+ QFETCH(int, loopCount);
+ QFETCH(int, currentTime);
+ QFETCH(int, testCurrentTime);
+ QFETCH(int, testCurrentLoop);
+
+ QPropertyAnimation animation;
+ if (duration < 0)
+ QTest::ignoreMessage(QtWarningMsg, "QVariantAnimation::setDuration: cannot set a negative duration");
+ animation.setDuration(duration);
+ animation.setLoopCount(loopCount);
+ animation.setCurrentTime(currentTime);
+
+ QCOMPARE(animation.currentLoopTime(), testCurrentTime);
+ QCOMPARE(animation.currentLoop(), testCurrentLoop);
+}
+
+void tst_QPropertyAnimation::statesAndSignals_data()
+{
+ QTest::addColumn<bool>("uncontrolled");
+ QTest::newRow("normal animation") << false;
+ QTest::newRow("animation with undefined duration") << true;
+}
+
+void tst_QPropertyAnimation::statesAndSignals()
+{
+ QFETCH(bool, uncontrolled);
+ QPropertyAnimation *anim;
+ if (uncontrolled)
+ anim = new UncontrolledAnimation;
+ else
+ anim = new DummyPropertyAnimation;
+ anim->setDuration(100);
+
+ QSignalSpy finishedSpy(anim, SIGNAL(finished()));
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy currentLoopSpy(anim, SIGNAL(currentLoopChanged(int)));
+
+ anim->setCurrentTime(1);
+ anim->setCurrentTime(100);
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(runningSpy.count(), 0);
+ QCOMPARE(currentLoopSpy.count(), 0);
+ QCOMPARE(anim->state(), QAnimationGroup::Stopped);
+
+ anim->setLoopCount(3);
+ anim->setCurrentTime(101);
+
+ if (uncontrolled)
+ QSKIP("Uncontrolled animations don't handle looping", SkipSingle);
+
+ QCOMPARE(currentLoopSpy.count(), 1);
+ QCOMPARE(anim->currentLoop(), 1);
+
+ anim->setCurrentTime(0);
+ QCOMPARE(currentLoopSpy.count(), 2);
+ QCOMPARE(anim->currentLoop(), 0);
+
+ anim->start();
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QCOMPARE(runningSpy.count(), 1); //anim must have started
+ QCOMPARE(anim->currentLoop(), 0);
+ runningSpy.clear();
+
+ anim->stop();
+ QCOMPARE(anim->state(), QAnimationGroup::Stopped);
+ QCOMPARE(runningSpy.count(), 1); //anim must have stopped
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(anim->currentLoopTime(), 0);
+ QCOMPARE(anim->currentLoop(), 0);
+ QCOMPARE(currentLoopSpy.count(), 2);
+ runningSpy.clear();
+
+ anim->start();
+ QTest::qWait(1000);
+ QTRY_COMPARE(anim->state(), QAnimationGroup::Stopped);
+ QCOMPARE(runningSpy.count(), 2); //started and stopped again
+ runningSpy.clear();
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(anim->currentLoopTime(), 100);
+ QCOMPARE(anim->currentLoop(), 2);
+ QCOMPARE(currentLoopSpy.count(), 4);
+
+ anim->start(); // auto-rewinds
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QCOMPARE(anim->currentTime(), 0);
+ QCOMPARE(anim->currentLoop(), 0);
+ QCOMPARE(currentLoopSpy.count(), 5);
+ QCOMPARE(runningSpy.count(), 1); // anim has started
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(anim->currentLoop(), 0);
+ runningSpy.clear();
+
+ QTest::qWait(1000);
+
+ QCOMPARE(currentLoopSpy.count(), 7);
+ QCOMPARE(anim->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim->currentLoop(), 2);
+ QCOMPARE(runningSpy.count(), 1); // anim has stopped
+ QCOMPARE(finishedSpy.count(), 2);
+ QCOMPARE(anim->currentLoopTime(), 100);
+
+ delete anim;
+}
+
+void tst_QPropertyAnimation::deletion1()
+{
+ QObject *object = new QWidget;
+ QPointer<QPropertyAnimation> anim = new QPropertyAnimation(object, "minimumWidth");
+
+ //test that the animation is deleted correctly depending of the deletion flag passed in start()
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy finishedSpy(anim, SIGNAL(finished()));
+ anim->setStartValue(10);
+ anim->setEndValue(20);
+ anim->setDuration(200);
+ anim->start();
+ QCOMPARE(runningSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+
+ QVERIFY(anim);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QTest::qWait(100);
+ QVERIFY(anim);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QTest::qWait(150);
+ QVERIFY(anim); //The animation should not have been deleted
+ QTRY_COMPARE(anim->state(), QAnimationGroup::Stopped);
+ QCOMPARE(runningSpy.count(), 2);
+ QCOMPARE(finishedSpy.count(), 1);
+
+ anim->start(QVariantAnimation::DeleteWhenStopped);
+ QVERIFY(anim);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QTest::qWait(100);
+ QVERIFY(anim);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QTest::qWait(150);
+ QTRY_COMPARE(runningSpy.count(), 4);
+ QCOMPARE(finishedSpy.count(), 2);
+ QVERIFY(!anim); //The animation must have been deleted
+ delete object;
+}
+
+void tst_QPropertyAnimation::deletion2()
+{
+ //test that the animation get deleted if the object is deleted
+ QObject *object = new QWidget;
+ QPointer<QPropertyAnimation> anim = new QPropertyAnimation(object,"minimumWidth");
+ anim->setStartValue(10);
+ anim->setEndValue(20);
+ anim->setDuration(200);
+
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy finishedSpy(anim, SIGNAL(finished()));
+
+ anim->setStartValue(10);
+ anim->setEndValue(20);
+ anim->setDuration(200);
+ anim->start();
+
+ QTest::qWait(50);
+ QVERIFY(anim);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+
+ QCOMPARE(runningSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+
+ //we can't call deletaLater directly because the delete would only happen in the next loop of _this_ event loop
+ QTimer::singleShot(0, object, SLOT(deleteLater()));
+ QTest::qWait(50);
+
+ QVERIFY(anim->targetObject() == 0);
+}
+
+void tst_QPropertyAnimation::deletion3()
+{
+ //test that the stopped signal is emit when the animation is destroyed
+ QObject *object = new QWidget;
+ QPropertyAnimation *anim = new QPropertyAnimation(object,"minimumWidth");
+ anim->setStartValue(10);
+ anim->setEndValue(20);
+ anim->setDuration(200);
+
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy finishedSpy(anim, SIGNAL(finished()));
+ anim->start();
+
+ QTest::qWait(50);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QCOMPARE(runningSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+ delete anim;
+ QCOMPARE(runningSpy.count(), 2);
+ QCOMPARE(finishedSpy.count(), 0);
+}
+
+void tst_QPropertyAnimation::duration0()
+{
+ QObject o;
+ o.setProperty("ole", 42);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ QPropertyAnimation animation(&o, "ole");
+ animation.setEndValue(43);
+ QVERIFY(!animation.currentValue().isValid());
+ QCOMPARE(animation.currentValue().toInt(), 0);
+ animation.setStartValue(42);
+ QVERIFY(animation.currentValue().isValid());
+ QCOMPARE(animation.currentValue().toInt(), 42);
+
+ QCOMPARE(o.property("ole").toInt(), 42);
+ animation.setDuration(0);
+ QCOMPARE(animation.currentValue().toInt(), 43); //it is at the end
+ animation.start();
+ QCOMPARE(animation.state(), QAnimationGroup::Stopped);
+ QCOMPARE(animation.currentTime(), 0);
+ QCOMPARE(o.property("ole").toInt(), 43);
+}
+
+class StartValueTester : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int ole READ ole WRITE setOle)
+public:
+ StartValueTester() : o(0) { }
+ int ole() const { return o; }
+ void setOle(int v) { o = v; values << v; }
+
+ int o;
+ QList<int> values;
+};
+
+void tst_QPropertyAnimation::noStartValue()
+{
+ StartValueTester o;
+ o.setProperty("ole", 42);
+ o.values.clear();
+
+ QPropertyAnimation a(&o, "ole");
+ a.setEndValue(420);
+ a.setDuration(250);
+ a.start();
+
+ QTest::qWait(300);
+
+ QTRY_COMPARE(o.values.first(), 42);
+ QCOMPARE(o.values.last(), 420);
+}
+
+void tst_QPropertyAnimation::noStartValueWithLoop()
+{
+ StartValueTester o;
+ o.setProperty("ole", 42);
+ o.values.clear();
+
+ QPropertyAnimation a(&o, "ole");
+ a.setEndValue(420);
+ a.setDuration(250);
+ a.setLoopCount(2);
+ a.start();
+
+ a.setCurrentTime(250);
+ QCOMPARE(o.values.first(), 42);
+ QCOMPARE(a.currentValue().toInt(), 42);
+ QCOMPARE(o.values.last(), 42);
+
+ a.setCurrentTime(500);
+ QCOMPARE(a.currentValue().toInt(), 420);
+}
+
+void tst_QPropertyAnimation::startWhenAnotherIsRunning()
+{
+ StartValueTester o;
+ o.setProperty("ole", 42);
+ o.values.clear();
+
+ {
+ //normal case: the animation finishes and is deleted
+ QPointer<QVariantAnimation> anim = new QPropertyAnimation(&o, "ole");
+ anim->setEndValue(100);
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ anim->start(QVariantAnimation::DeleteWhenStopped);
+ QTest::qWait(anim->duration() + 100);
+ QTRY_COMPARE(runningSpy.count(), 2); //started and then stopped
+ QVERIFY(!anim);
+ }
+
+ {
+ QPointer<QVariantAnimation> anim = new QPropertyAnimation(&o, "ole");
+ anim->setEndValue(100);
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ anim->start(QVariantAnimation::DeleteWhenStopped);
+ QTest::qWait(anim->duration()/2);
+ QPointer<QVariantAnimation> anim2 = new QPropertyAnimation(&o, "ole");
+ anim2->setEndValue(100);
+ QCOMPARE(runningSpy.count(), 1);
+ QCOMPARE(anim->state(), QVariantAnimation::Running);
+
+ //anim2 will interrupt anim1
+ QMetaObject::invokeMethod(anim2, "start", Qt::QueuedConnection, Q_ARG(QAbstractAnimation::DeletionPolicy, QVariantAnimation::DeleteWhenStopped));
+ QTest::qWait(50);
+ QVERIFY(!anim); //anim should have been deleted
+ QVERIFY(anim2);
+ QTest::qWait(anim2->duration());
+ QTRY_VERIFY(!anim2); //anim2 is finished: it should have been deleted by now
+ QVERIFY(!anim);
+ }
+
+}
+
+// copy from easing.cpp in case that function changes definition
+static qreal easeInOutBack(qreal t)
+{
+ qreal s = 1.70158;
+ qreal t_adj = 2.0f * (qreal)t;
+ if (t_adj < 1) {
+ s *= 1.525f;
+ return 1.0/2*(t_adj*t_adj*((s+1)*t_adj - s));
+ } else {
+ t_adj -= 2;
+ s *= 1.525f;
+ return 1.0/2*(t_adj*t_adj*((s+1)*t_adj + s) + 2);
+ }
+}
+
+void tst_QPropertyAnimation::easingcurve_data()
+{
+ QTest::addColumn<int>("currentTime");
+ QTest::addColumn<int>("expectedvalue");
+
+ QTest::newRow("interpolation1") << 0 << 0;
+ QTest::newRow("interpolation2") << 1000 << 1000;
+ QTest::newRow("extrapolationbelow") << 250 << -99;
+ QTest::newRow("extrapolationabove") << 750 << 1099;
+}
+
+void tst_QPropertyAnimation::easingcurve()
+{
+ QFETCH(int, currentTime);
+ QFETCH(int, expectedvalue);
+ QObject o;
+ o.setProperty("ole", 42);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ QPropertyAnimation pAnimation(&o, "ole");
+ pAnimation.setStartValue(0);
+ pAnimation.setEndValue(1000);
+ pAnimation.setDuration(1000);
+
+ // this easingcurve assumes that we extrapolate before startValue and after endValue
+ QEasingCurve easingCurve;
+ easingCurve.setCustomType(easeInOutBack);
+ pAnimation.setEasingCurve(easingCurve);
+ pAnimation.start();
+ pAnimation.pause();
+ pAnimation.setCurrentTime(currentTime);
+ QCOMPARE(o.property("ole").toInt(), expectedvalue);
+}
+
+void tst_QPropertyAnimation::startWithoutStartValue()
+{
+ QObject o;
+ o.setProperty("ole", 42);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ QPropertyAnimation anim(&o, "ole");
+ anim.setEndValue(100);
+
+ anim.start();
+
+ QTest::qWait(100);
+ int current = anim.currentValue().toInt();
+ //it is somewhere in the animation
+ QVERIFY(current > 42);
+ QVERIFY(current < 100);
+
+ QTest::qWait(200);
+ QTRY_COMPARE(anim.state(), QVariantAnimation::Stopped);
+ current = anim.currentValue().toInt();
+ QCOMPARE(current, 100);
+ QCOMPARE(o.property("ole").toInt(), current);
+
+ anim.setEndValue(110);
+ anim.start();
+ current = anim.currentValue().toInt();
+ // the default start value will reevaluate the current property
+ // and set it to the end value of the last iteration
+ QCOMPARE(current, 100);
+ QTest::qWait(100);
+ current = anim.currentValue().toInt();
+ //it is somewhere in the animation
+ QVERIFY(current >= 100);
+ QVERIFY(current <= 110);
+}
+
+void tst_QPropertyAnimation::startBackwardWithoutEndValue()
+{
+ QObject o;
+ o.setProperty("ole", 42);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ QPropertyAnimation anim(&o, "ole");
+ anim.setStartValue(100);
+ anim.setDirection(QAbstractAnimation::Backward);
+
+ //we start without an end value
+ anim.start();
+ QCOMPARE(anim.state(), QAbstractAnimation::Running);
+ QCOMPARE(o.property("ole").toInt(), 42); //the initial value
+
+ QTest::qWait(100);
+ int current = anim.currentValue().toInt();
+ //it is somewhere in the animation
+ QVERIFY(current > 42);
+ QVERIFY(current < 100);
+
+ QTest::qWait(200);
+ QTRY_COMPARE(anim.state(), QVariantAnimation::Stopped);
+ current = anim.currentValue().toInt();
+ QCOMPARE(current, 100);
+ QCOMPARE(o.property("ole").toInt(), current);
+
+ anim.setStartValue(110);
+ anim.start();
+ current = anim.currentValue().toInt();
+ // the default start value will reevaluate the current property
+ // and set it to the end value of the last iteration
+ QCOMPARE(current, 100);
+ QTest::qWait(100);
+ current = anim.currentValue().toInt();
+ //it is somewhere in the animation
+ QVERIFY(current >= 100);
+ QVERIFY(current <= 110);
+}
+
+
+void tst_QPropertyAnimation::playForwardBackward()
+{
+ QObject o;
+ o.setProperty("ole", 0);
+ QCOMPARE(o.property("ole").toInt(), 0);
+
+ QPropertyAnimation anim(&o, "ole");
+ anim.setStartValue(0);
+ anim.setEndValue(100);
+ anim.start();
+ QTest::qWait(anim.duration() + 100);
+ QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(anim.currentTime(), anim.duration());
+
+ //the animation is at the end
+ anim.setDirection(QVariantAnimation::Backward);
+ anim.start();
+ QCOMPARE(anim.state(), QAbstractAnimation::Running);
+ QTest::qWait(anim.duration() + 100);
+ QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(anim.currentTime(), 0);
+
+ //the direction is backward
+ //restarting should jump to the end
+ anim.start();
+ QCOMPARE(anim.state(), QAbstractAnimation::Running);
+ QCOMPARE(anim.currentTime(), anim.duration());
+ QTest::qWait(anim.duration() + 100);
+ QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(anim.currentTime(), 0);
+}
+
+struct Number
+{
+ Number() {}
+ Number(int n)
+ : n(n) {}
+
+ Number(const Number &other)
+ : n(other.n){}
+
+ Number &operator=(const Number &other) {
+ n = other.n;
+ return *this;
+ }
+ bool operator==(const Number &other) const {
+ return n == other.n;
+ }
+
+ int n;
+};
+
+Q_DECLARE_METATYPE(Number)
+Q_DECLARE_METATYPE(QAbstractAnimation::State)
+
+QVariant numberInterpolator(const Number &f, const Number &t, qreal progress)
+{
+ return qVariantFromValue<Number>(Number(f.n + (t.n - f.n)*progress));
+}
+
+QVariant xaxisQPointInterpolator(const QPointF &f, const QPointF &t, qreal progress)
+{
+ return QPointF(f.x() + (t.x() - f.x())*progress, f.y());
+}
+
+void tst_QPropertyAnimation::interpolated()
+{
+ QObject o;
+ o.setProperty("point", QPointF()); //this will avoid warnings
+ o.setProperty("number", qVariantFromValue<Number>(Number(42)));
+ QCOMPARE(qVariantValue<Number>(o.property("number")), Number(42));
+ {
+ qRegisterAnimationInterpolator<Number>(numberInterpolator);
+ QPropertyAnimation anim(&o, "number");
+ anim.setStartValue(qVariantFromValue<Number>(Number(0)));
+ anim.setEndValue(qVariantFromValue<Number>(Number(100)));
+ anim.setDuration(1000);
+ anim.start();
+ anim.pause();
+ anim.setCurrentTime(100);
+ Number t(qVariantValue<Number>(o.property("number")));
+ QCOMPARE(t, Number(10));
+ anim.setCurrentTime(500);
+ QCOMPARE(qVariantValue<Number>(o.property("number")), Number(50));
+ }
+ {
+ qRegisterAnimationInterpolator<QPointF>(xaxisQPointInterpolator);
+ QPropertyAnimation anim(&o, "point");
+ anim.setStartValue(QPointF(0,0));
+ anim.setEndValue(QPointF(100, 100));
+ anim.setDuration(1000);
+ anim.start();
+ anim.pause();
+ anim.setCurrentTime(100);
+ QCOMPARE(o.property("point"), QVariant(QPointF(10, 0)));
+ anim.setCurrentTime(500);
+ QCOMPARE(o.property("point"), QVariant(QPointF(50, 0)));
+ }
+ {
+ // unregister it and see if we get back the default behaviour
+ qRegisterAnimationInterpolator<QPointF>(0);
+ QPropertyAnimation anim(&o, "point");
+ anim.setStartValue(QPointF(0,0));
+ anim.setEndValue(QPointF(100, 100));
+ anim.setDuration(1000);
+ anim.start();
+ anim.pause();
+ anim.setCurrentTime(100);
+ QCOMPARE(o.property("point").toPointF(), QPointF(10, 10));
+ anim.setCurrentTime(500);
+ QCOMPARE(o.property("point").toPointF(), QPointF(50, 50));
+ }
+
+ {
+ // Interpolate a qreal property with a int interpolator
+ AnimationObject o1;
+ o1.setRealValue(42.42);
+ QPropertyAnimation anim(&o1, "realValue");
+ anim.setStartValue(0);
+ anim.setEndValue(100);
+ anim.start();
+ QCOMPARE(o1.realValue(), qreal(0));
+ anim.setCurrentTime(250);
+ QCOMPARE(o1.realValue(), qreal(100));
+ }
+}
+
+Q_DECLARE_METATYPE(QVariant)
+
+void tst_QPropertyAnimation::setStartEndValues_data()
+{
+ QTest::addColumn<QByteArray>("propertyName");
+ QTest::addColumn<QVariant>("initialValue");
+ QTest::addColumn<QVariant>("startValue");
+ QTest::addColumn<QVariant>("endValue");
+
+ QTest::newRow("dynamic property") << QByteArray("ole") << QVariant(42) << QVariant(0) << QVariant(10);
+ QTest::newRow("real property, with unmatching types") << QByteArray("x") << QVariant(42.) << QVariant(0) << QVariant(10.);
+}
+
+void tst_QPropertyAnimation::setStartEndValues()
+{
+ MyObject object;
+ QFETCH(QByteArray, propertyName);
+ QFETCH(QVariant, initialValue);
+ QFETCH(QVariant, startValue);
+ QFETCH(QVariant, endValue);
+
+ //this tests the start value, end value and default start value
+ object.setProperty(propertyName, initialValue);
+ QPropertyAnimation anim(&object, propertyName);
+ QVariantAnimation::KeyValues values;
+ QCOMPARE(anim.keyValues(), values);
+
+ //let's add a start value
+ anim.setStartValue(startValue);
+ values << QVariantAnimation::KeyValue(0, startValue);
+ QCOMPARE(anim.keyValues(), values);
+
+ anim.setEndValue(endValue);
+ values << QVariantAnimation::KeyValue(1, endValue);
+ QCOMPARE(anim.keyValues(), values);
+
+ //now we can play with objects
+ QCOMPARE(object.property(propertyName).toDouble(), initialValue.toDouble());
+ anim.start();
+ QVERIFY(anim.startValue().isValid());
+ QCOMPARE(object.property(propertyName), anim.startValue());
+ anim.setCurrentTime(anim.duration()/2);
+ QCOMPARE(object.property(propertyName).toDouble(), (startValue.toDouble() + endValue.toDouble())/2 ); //just in the middle of the animation
+ anim.setCurrentTime(anim.duration()); //we go to the end of the animation
+ QCOMPARE(anim.state(), QAnimationGroup::Stopped); //it should have stopped
+ QVERIFY(anim.endValue().isValid());
+ QCOMPARE(object.property(propertyName), anim.endValue()); //end of the animations
+
+ //now we remove the explicit start value and test the implicit one
+ anim.stop();
+ object.setProperty(propertyName, initialValue);
+
+ //let's reset the start value
+ values.remove(0);
+ anim.setStartValue(QVariant());
+ QCOMPARE(anim.keyValues(), values);
+ QVERIFY(!anim.startValue().isValid());
+
+ anim.start();
+ QCOMPARE(object.property(propertyName), initialValue);
+ anim.setCurrentTime(anim.duration()/2);
+ QCOMPARE(object.property(propertyName).toDouble(), (initialValue.toDouble() + endValue.toDouble())/2 ); //just in the middle of the animation
+ anim.setCurrentTime(anim.duration()); //we go to the end of the animation
+ QCOMPARE(anim.state(), QAnimationGroup::Stopped); //it should have stopped
+ QVERIFY(anim.endValue().isValid());
+ QCOMPARE(object.property(propertyName), anim.endValue()); //end of the animations
+
+ //now we set back the startValue
+ anim.setStartValue(startValue);
+ QVERIFY(anim.startValue().isValid());
+ anim.start();
+ QCOMPARE(object.property(propertyName), startValue);
+}
+
+void tst_QPropertyAnimation::zeroDurationStart()
+{
+ DummyPropertyAnimation anim;
+ QSignalSpy spy(&anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ anim.setDuration(0);
+ QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+ anim.start();
+ //the animation stops immediately
+ QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(spy.count(), 2);
+
+ //let's check the first state change
+ const QVariantList firstChange = spy.first();
+ //old state
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(firstChange.last()), QAbstractAnimation::Stopped);
+ //new state
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(firstChange.first()), QAbstractAnimation::Running);
+
+ //let's check the first state change
+ const QVariantList secondChange = spy.last();
+ //old state
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(secondChange.last()), QAbstractAnimation::Running);
+ //new state
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(secondChange.first()), QAbstractAnimation::Stopped);
+}
+
+#define Pause 1
+#define Start 2
+#define Resume 3
+#define Stop 4
+
+void tst_QPropertyAnimation::operationsInStates_data()
+{
+ QTest::addColumn<QAbstractAnimation::State>("originState");
+ QTest::addColumn<int>("operation");
+ QTest::addColumn<QString>("expectedWarning");
+ QTest::addColumn<QAbstractAnimation::State>("expectedState");
+
+ QString pauseWarn(QLatin1String("QAbstractAnimation::pause: Cannot pause a stopped animation"));
+ QString resumeWarn(QLatin1String("QAbstractAnimation::resume: Cannot resume an animation that is not paused"));
+
+ QTest::newRow("S-pause") << QAbstractAnimation::Stopped << Pause << pauseWarn << QAbstractAnimation::Stopped;
+ QTest::newRow("S-start") << QAbstractAnimation::Stopped << Start << QString() << QAbstractAnimation::Running;
+ QTest::newRow("S-resume") << QAbstractAnimation::Stopped << Resume << resumeWarn << QAbstractAnimation::Stopped;
+ QTest::newRow("S-stop") << QAbstractAnimation::Stopped << Stop << QString() << QAbstractAnimation::Stopped;
+
+ QTest::newRow("P-pause") << QAbstractAnimation::Paused << Pause << QString() << QAbstractAnimation::Paused;
+ QTest::newRow("P-start") << QAbstractAnimation::Paused << Start << QString() << QAbstractAnimation::Running;
+ QTest::newRow("P-resume") << QAbstractAnimation::Paused << Resume << QString() << QAbstractAnimation::Running;
+ QTest::newRow("P-stop") << QAbstractAnimation::Paused << Stop << QString() << QAbstractAnimation::Stopped;
+
+ QTest::newRow("R-pause") << QAbstractAnimation::Running << Pause << QString() << QAbstractAnimation::Paused;
+ QTest::newRow("R-start") << QAbstractAnimation::Running << Start << QString() << QAbstractAnimation::Running;
+ QTest::newRow("R-resume") << QAbstractAnimation::Running << Resume << resumeWarn << QAbstractAnimation::Running;
+ QTest::newRow("R-stop") << QAbstractAnimation::Running << Stop << QString() << QAbstractAnimation::Stopped;
+}
+
+void tst_QPropertyAnimation::operationsInStates()
+{
+/**
+ * | pause() |start() |resume() |stop()
+ * ----------+------------+-----------+-----------+-------------------+
+ * Stopped | Stopped |Running |Stopped |Stopped |
+ * _| qWarning |restart |qWarning | |
+ * Paused | Paused |Running |Running |Stopped |
+ * _| | | | |
+ * Running | Paused |Running |Running |Stopped |
+ * | |restart |qWarning | |
+ * ----------+------------+-----------+-----------+-------------------+
+**/
+
+ QFETCH(QAbstractAnimation::State, originState);
+ QFETCH(int, operation);
+ QFETCH(QString, expectedWarning);
+ QFETCH(QAbstractAnimation::State, expectedState);
+
+ QObject o;
+ o.setProperty("ole", 42);
+ QPropertyAnimation anim(&o, "ole");
+ anim.setEndValue(100);
+ QSignalSpy spy(&anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ anim.stop();
+ switch (originState) {
+ case QAbstractAnimation::Stopped:
+ break;
+ case QAbstractAnimation::Paused:
+ anim.start();
+ anim.pause();
+ break;
+ case QAbstractAnimation::Running:
+ anim.start();
+ break;
+ }
+ if (!expectedWarning.isEmpty()) {
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(expectedWarning));
+ }
+ QCOMPARE(anim.state(), originState);
+ switch (operation) {
+ case Pause:
+ anim.pause();
+ break;
+ case Start:
+ anim.start();
+ break;
+ case Resume:
+ anim.resume();
+ break;
+ case Stop:
+ anim.stop();
+ break;
+ }
+
+ QCOMPARE(anim.state(), expectedState);
+}
+#undef Pause
+#undef Start
+#undef Resume
+#undef Stop
+
+void tst_QPropertyAnimation::oneKeyValue()
+{
+ QObject o;
+ o.setProperty("ole", 42);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ QPropertyAnimation animation(&o, "ole");
+ animation.setStartValue(43);
+ animation.setEndValue(44);
+ animation.setDuration(100);
+
+ animation.setCurrentTime(0);
+
+ QVERIFY(animation.currentValue().isValid());
+ QCOMPARE(animation.currentValue().toInt(), 43);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ // remove the last key value
+ animation.setKeyValueAt(1.0, QVariant());
+
+ // we will neither interpolate, nor update the current value
+ // since there is only one 1 key value defined
+ animation.setCurrentTime(100);
+
+ // the animation should not have been modified
+ QVERIFY(animation.currentValue().isValid());
+ QCOMPARE(animation.currentValue().toInt(), 43);
+ QCOMPARE(o.property("ole").toInt(), 42);
+}
+
+void tst_QPropertyAnimation::updateOnSetKeyValues()
+{
+ QObject o;
+ o.setProperty("ole", 100);
+ QCOMPARE(o.property("ole").toInt(), 100);
+
+ QPropertyAnimation animation(&o, "ole");
+ animation.setStartValue(100);
+ animation.setEndValue(200);
+ animation.setDuration(100);
+
+ animation.setCurrentTime(50);
+ QCOMPARE(animation.currentValue().toInt(), 150);
+ animation.setKeyValueAt(0.0, 300);
+ QCOMPARE(animation.currentValue().toInt(), 250);
+
+ o.setProperty("ole", 100);
+ QPropertyAnimation animation2(&o, "ole");
+ QVariantAnimation::KeyValues kValues;
+ kValues << QVariantAnimation::KeyValue(0.0, 100) << QVariantAnimation::KeyValue(1.0, 200);
+ animation2.setKeyValues(kValues);
+ animation2.setDuration(100);
+ animation2.setCurrentTime(50);
+ QCOMPARE(animation2.currentValue().toInt(), 150);
+
+ kValues.clear();
+ kValues << QVariantAnimation::KeyValue(0.0, 300) << QVariantAnimation::KeyValue(1.0, 200);
+ animation2.setKeyValues(kValues);
+
+ QCOMPARE(animation2.currentValue().toInt(), animation.currentValue().toInt());
+}
+
+
+//this class will 'throw' an error in the test lib
+// if the property ole is set to ErrorValue
+class MyErrorObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int ole READ ole WRITE setOle)
+public:
+
+ static const int ErrorValue = 10000;
+
+ MyErrorObject() : m_ole(0) { }
+ int ole() const { return m_ole; }
+ void setOle(int o)
+ {
+ QVERIFY(o != ErrorValue);
+ m_ole = o;
+ }
+
+private:
+ int m_ole;
+
+
+};
+
+void tst_QPropertyAnimation::restart()
+{
+ //here we check that be restarting an animation
+ //it doesn't get an bogus intermediate value (end value)
+ //because the time is not yet reset to 0
+ MyErrorObject o;
+ o.setOle(100);
+ QCOMPARE(o.property("ole").toInt(), 100);
+
+ QPropertyAnimation anim(&o, "ole");
+ anim.setEndValue(200);
+ anim.start();
+ anim.setCurrentTime(anim.duration());
+ QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(o.property("ole").toInt(), 200);
+
+ //we'll check that the animation never gets a wrong value when starting it
+ //after having changed the end value
+ anim.setEndValue(MyErrorObject::ErrorValue);
+ anim.start();
+}
+
+void tst_QPropertyAnimation::valueChanged()
+{
+ qRegisterMetaType<QVariant>("QVariant");
+
+ //we check that we receive the valueChanged signal
+ MyErrorObject o;
+ o.setOle(0);
+ QCOMPARE(o.property("ole").toInt(), 0);
+ QPropertyAnimation anim(&o, "ole");
+ anim.setEndValue(5);
+ anim.setDuration(1000);
+ QSignalSpy spy(&anim, SIGNAL(valueChanged(QVariant)));
+ anim.start();
+
+ QTest::qWait(anim.duration() + 100);
+
+ QTRY_COMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(anim.currentTime(), anim.duration());
+
+ //let's check that the values go forward
+ QCOMPARE(spy.count(), 6); //we should have got everything from 0 to 5
+ for (int i = 0; i < spy.count(); ++i) {
+ QCOMPARE(qvariant_cast<QVariant>(spy.at(i).first()).toInt(), i);
+ }
+}
+
+//this class will help us make sure that 2 animations started
+//at the same time also end at the same time
+class MySyncObject : public MyErrorObject
+{
+ Q_OBJECT
+public:
+ MySyncObject() : anim(this, "ole")
+ {
+ anim.setEndValue(1000);
+ }
+public slots:
+ void checkAnimationFinished()
+ {
+ QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(ole(), 1000);
+ }
+
+public:
+ QPropertyAnimation anim;
+};
+
+void tst_QPropertyAnimation::twoAnimations()
+{
+ MySyncObject o1, o2;
+ o1.setOle(0);
+ o2.setOle(0);
+
+ //when the animation in o1 is finished
+ //the animation in o2 should stop around the same time
+ //We use a queued connection to check just after the tick from the common timer
+ //the other way is true too
+ QObject::connect(&o1.anim, SIGNAL(finished()),
+ &o2, SLOT(checkAnimationFinished()), Qt::QueuedConnection);
+ QObject::connect(&o2.anim, SIGNAL(finished()),
+ &o1, SLOT(checkAnimationFinished()), Qt::QueuedConnection);
+
+ o1.anim.start();
+ o2.anim.start();
+
+ QTest::qWait(o1.anim.duration() + 100);
+ QTRY_COMPARE(o1.anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(o2.anim.state(), QAbstractAnimation::Stopped);
+
+ QCOMPARE(o1.ole(), 1000);
+ QCOMPARE(o2.ole(), 1000);
+}
+
+class MyComposedAnimation : public QPropertyAnimation
+{
+ Q_OBJECT
+public:
+ MyComposedAnimation(QObject *target, const QByteArray &propertyName, const QByteArray &innerPropertyName)
+ : QPropertyAnimation(target, propertyName)
+ {
+ innerAnim = new QPropertyAnimation(target, innerPropertyName);
+ this->setEndValue(1000);
+ innerAnim->setEndValue(1000);
+ innerAnim->setDuration(duration() + 100);
+ }
+
+ void start()
+ {
+ QPropertyAnimation::start();
+ innerAnim->start();
+ }
+
+ void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
+ {
+ QPropertyAnimation::updateState(newState, oldState);
+ if (newState == QAbstractAnimation::Stopped)
+ delete innerAnim;
+ }
+
+public:
+ QPropertyAnimation *innerAnim;
+};
+
+void tst_QPropertyAnimation::deletedInUpdateCurrentTime()
+{
+ // this test case reproduces an animation being deleted in the updateCurrentTime of
+ // another animation(was causing segfault).
+ // the deleted animation must have been started after the animation that is deleting.
+ AnimationObject o;
+ o.setValue(0);
+ o.setRealValue(0.0);
+
+ MyComposedAnimation composedAnimation(&o, "value", "realValue");
+ composedAnimation.start();
+ QCOMPARE(composedAnimation.state(), QAbstractAnimation::Running);
+ QTest::qWait(composedAnimation.duration() + 100);
+
+ QTRY_COMPARE(composedAnimation.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(o.value(), 1000);
+}
+
+void tst_QPropertyAnimation::totalDuration()
+{
+ QPropertyAnimation anim;
+ QCOMPARE(anim.totalDuration(), 250);
+ anim.setLoopCount(2);
+ QCOMPARE(anim.totalDuration(), 2*250);
+ anim.setLoopCount(-1);
+ QCOMPARE(anim.totalDuration(), -1);
+ anim.setDuration(0);
+ QCOMPARE(anim.totalDuration(), 0);
+}
+
+void tst_QPropertyAnimation::zeroLoopCount()
+{
+ DummyPropertyAnimation* anim;
+ anim = new DummyPropertyAnimation;
+ anim->setStartValue(0);
+ anim->setDuration(20);
+ anim->setLoopCount(0);
+
+ QSignalSpy runningSpy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy finishedSpy(anim, SIGNAL(finished()));
+
+ QCOMPARE(anim->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim->currentValue().toInt(), 0);
+ QCOMPARE(runningSpy.count(), 0);
+ QCOMPARE(finishedSpy.count(), 0);
+
+ anim->start();
+
+ QCOMPARE(anim->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim->currentValue().toInt(), 0);
+ QCOMPARE(runningSpy.count(), 0);
+ QCOMPARE(finishedSpy.count(), 0);
+}
+
+QTEST_MAIN(tst_QPropertyAnimation)
+#include "tst_qpropertyanimation.moc"
diff --git a/tests/auto/corelib/animation/qsequentialanimationgroup/qsequentialanimationgroup.pro b/tests/auto/corelib/animation/qsequentialanimationgroup/qsequentialanimationgroup.pro
new file mode 100644
index 0000000000..c0c10c054d
--- /dev/null
+++ b/tests/auto/corelib/animation/qsequentialanimationgroup/qsequentialanimationgroup.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT = core
+SOURCES += tst_qsequentialanimationgroup.cpp
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp b/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
new file mode 100644
index 0000000000..00c038b948
--- /dev/null
+++ b/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
@@ -0,0 +1,1672 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include "../../../../shared/util.h"
+
+#include <QtCore/qanimationgroup.h>
+#include <QtCore/qsequentialanimationgroup.h>
+
+//TESTED_CLASS=QSequentialAnimationGroup
+//TESTED_FILES=
+
+Q_DECLARE_METATYPE(QAbstractAnimation::State)
+Q_DECLARE_METATYPE(QAbstractAnimation*)
+
+class tst_QSequentialAnimationGroup : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QSequentialAnimationGroup();
+ virtual ~tst_QSequentialAnimationGroup();
+
+public Q_SLOTS:
+ void init();
+ void cleanup();
+
+private slots:
+ void construction();
+ void setCurrentTime();
+ void setCurrentTimeWithUncontrolledAnimation();
+ void seekingForwards();
+ void seekingBackwards();
+ void pauseAndResume();
+ void restart();
+ void looping();
+ void startDelay();
+ void clearGroup();
+ void groupWithZeroDurationAnimations();
+ void propagateGroupUpdateToChildren();
+ void updateChildrenWithRunningGroup();
+ void deleteChildrenWithRunningGroup();
+ void startChildrenWithStoppedGroup();
+ void stopGroupWithRunningChild();
+ void startGroupWithRunningChild();
+ void zeroDurationAnimation();
+ void stopUncontrolledAnimations();
+ void finishWithUncontrolledAnimation();
+ void addRemoveAnimation();
+ void currentAnimation();
+ void currentAnimationWithZeroDuration();
+ void insertAnimation();
+ void clear();
+ void pauseResume();
+};
+
+tst_QSequentialAnimationGroup::tst_QSequentialAnimationGroup()
+{
+}
+
+tst_QSequentialAnimationGroup::~tst_QSequentialAnimationGroup()
+{
+}
+
+void tst_QSequentialAnimationGroup::init()
+{
+ qRegisterMetaType<QAbstractAnimation::State>("QAbstractAnimation::State");
+ qRegisterMetaType<QAbstractAnimation*>("QAbstractAnimation*");
+}
+
+void tst_QSequentialAnimationGroup::cleanup()
+{
+}
+
+void tst_QSequentialAnimationGroup::construction()
+{
+ QSequentialAnimationGroup animationgroup;
+}
+
+class AnimationObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int value READ value WRITE setValue)
+public:
+ AnimationObject(int startValue = 0)
+ : v(startValue)
+ { }
+
+ int value() const { return v; }
+ void setValue(int value) { v = value; }
+
+ int v;
+};
+
+class TestAnimation : public QVariantAnimation
+{
+ Q_OBJECT
+public:
+ virtual void updateCurrentValue(const QVariant &value) { Q_UNUSED(value)};
+ virtual void updateState(QAbstractAnimation::State newState,
+ QAbstractAnimation::State oldState)
+ {
+ Q_UNUSED(oldState)
+ Q_UNUSED(newState)
+ };
+};
+
+class DummyPropertyAnimation : public QPropertyAnimation
+{
+public:
+ DummyPropertyAnimation(QObject *parent = 0) : QPropertyAnimation(parent)
+ {
+ setTargetObject(&o);
+ this->setPropertyName("value");
+ setEndValue(0);
+ }
+
+ AnimationObject o;
+};
+
+class UncontrolledAnimation : public QPropertyAnimation
+{
+ Q_OBJECT
+public:
+ UncontrolledAnimation(QObject *target, QObject *parent = 0)
+ : QPropertyAnimation(target, "value", parent)
+ {
+ setDuration(250);
+ setEndValue(0);
+ }
+
+ int duration() const { return -1; /* not time driven */ }
+
+protected:
+ void updateCurrentTime(int currentTime)
+ {
+ QPropertyAnimation::updateCurrentTime(currentTime);
+ if (currentTime >= QPropertyAnimation::duration())
+ stop();
+ }
+};
+
+void tst_QSequentialAnimationGroup::setCurrentTime()
+{
+ // sequence operating on same object/property
+ QAnimationGroup *sequence = new QSequentialAnimationGroup();
+ QVariantAnimation *a1_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a2_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a3_s_o1 = new DummyPropertyAnimation;
+ a2_s_o1->setLoopCount(3);
+ sequence->addAnimation(a1_s_o1);
+ sequence->addAnimation(a2_s_o1);
+ sequence->addAnimation(a3_s_o1);
+
+ // sequence operating on different object/properties
+ QAnimationGroup *sequence2 = new QSequentialAnimationGroup();
+ QVariantAnimation *a1_s_o2 = new DummyPropertyAnimation;
+ QVariantAnimation *a1_s_o3 = new DummyPropertyAnimation;
+ sequence2->addAnimation(a1_s_o2);
+ sequence2->addAnimation(a1_s_o3);
+
+ QSequentialAnimationGroup group;
+ group.addAnimation(sequence);
+ group.addAnimation(sequence2);
+
+ // Current time = 1
+ group.setCurrentTime(1);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+
+ QCOMPARE(group.currentLoopTime(), 1);
+ QCOMPARE(sequence->currentLoopTime(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 1);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 250
+ group.setCurrentTime(250);
+ QCOMPARE(group.currentLoopTime(), 250);
+ QCOMPARE(sequence->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 251
+ group.setCurrentTime(251);
+ QCOMPARE(group.currentLoopTime(), 251);
+ QCOMPARE(sequence->currentLoopTime(), 251);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 1);
+ QCOMPARE(a2_s_o1->currentLoop(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 750
+ group.setCurrentTime(750);
+ QCOMPARE(group.currentLoopTime(), 750);
+ QCOMPARE(sequence->currentLoopTime(), 750);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 1000
+ group.setCurrentTime(1000);
+ QCOMPARE(group.currentLoopTime(), 1000);
+ QCOMPARE(sequence->currentLoopTime(), 1000);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 1010
+ group.setCurrentTime(1010);
+ QCOMPARE(group.currentLoopTime(), 1010);
+ QCOMPARE(sequence->currentLoopTime(), 1010);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 10);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 1250
+ group.setCurrentTime(1250);
+ QCOMPARE(group.currentLoopTime(), 1250);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 1500
+ group.setCurrentTime(1500);
+ QCOMPARE(group.currentLoopTime(), 1500);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 1750
+ group.setCurrentTime(1750);
+ QCOMPARE(group.currentLoopTime(), 1750);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 250);
+
+ // Current time = 2000
+ group.setCurrentTime(2000);
+ QCOMPARE(group.currentLoopTime(), 1750);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 250);
+}
+
+void tst_QSequentialAnimationGroup::setCurrentTimeWithUncontrolledAnimation()
+{
+ AnimationObject t_o1;
+
+ // sequence operating on different object/properties
+ QAnimationGroup *sequence = new QSequentialAnimationGroup();
+ QPropertyAnimation *a1_s_o1 = new DummyPropertyAnimation;
+ QPropertyAnimation *a1_s_o2 = new DummyPropertyAnimation;
+ sequence->addAnimation(a1_s_o1);
+ sequence->addAnimation(a1_s_o2);
+
+ QPropertyAnimation *notTimeDriven = new UncontrolledAnimation(&t_o1);
+ QCOMPARE(notTimeDriven->totalDuration(), -1);
+
+ QAbstractAnimation *loopsForever = new DummyPropertyAnimation;
+ loopsForever->setLoopCount(-1);
+ QCOMPARE(loopsForever->totalDuration(), -1);
+
+ QSequentialAnimationGroup group;
+ group.addAnimation(sequence);
+ group.addAnimation(notTimeDriven);
+ group.addAnimation(loopsForever);
+ group.start();
+ group.pause(); // this allows the group to listen for the finish signal of its children
+
+ // Current time = 1
+ group.setCurrentTime(1);
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped);
+
+ QCOMPARE(group.currentLoopTime(), 1);
+ QCOMPARE(sequence->currentLoopTime(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 1);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 0);
+ QCOMPARE(loopsForever->currentLoopTime(), 0);
+
+ // Current time = 250
+ group.setCurrentTime(250);
+ QCOMPARE(group.currentLoopTime(), 250);
+ QCOMPARE(sequence->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 0);
+ QCOMPARE(loopsForever->currentLoopTime(), 0);
+
+ // Current time = 500
+ group.setCurrentTime(500);
+ QCOMPARE(group.currentLoopTime(), 500);
+ QCOMPARE(sequence->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 0);
+ QCOMPARE(loopsForever->currentLoopTime(), 0);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation *>(notTimeDriven));
+
+ // Current time = 505
+ group.setCurrentTime(505);
+ QCOMPARE(group.currentLoopTime(), 505);
+ QCOMPARE(sequence->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 5);
+ QCOMPARE(loopsForever->currentLoopTime(), 0);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation *>(notTimeDriven));
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven->state(), QAnimationGroup::Paused);
+ QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped);
+
+ // Current time = 750 (end of notTimeDriven animation)
+ group.setCurrentTime(750);
+ QCOMPARE(group.currentLoopTime(), 750);
+ QCOMPARE(sequence->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 250);
+ QCOMPARE(loopsForever->currentLoopTime(), 0);
+ QCOMPARE(group.currentAnimation(), loopsForever);
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever->state(), QAnimationGroup::Paused);
+
+ // Current time = 800 (as notTimeDriven was finished at 750, loopsforever should still run)
+ group.setCurrentTime(800);
+ QCOMPARE(group.currentLoopTime(), 800);
+ QCOMPARE(group.currentAnimation(), loopsForever);
+ QCOMPARE(sequence->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(notTimeDriven->currentLoopTime(), 250);
+ QCOMPARE(loopsForever->currentLoopTime(), 50);
+
+ loopsForever->stop(); // this should stop the group
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven->state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever->state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::seekingForwards()
+{
+
+ // sequence operating on same object/property
+ QAnimationGroup *sequence = new QSequentialAnimationGroup;
+ QVariantAnimation *a1_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a2_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a3_s_o1 = new DummyPropertyAnimation;
+ a2_s_o1->setLoopCount(3);
+ sequence->addAnimation(a1_s_o1);
+ sequence->addAnimation(a2_s_o1);
+ sequence->addAnimation(a3_s_o1);
+
+ // sequence operating on different object/properties
+ QAnimationGroup *sequence2 = new QSequentialAnimationGroup;
+ QVariantAnimation *a1_s_o2 = new DummyPropertyAnimation;
+ QVariantAnimation *a1_s_o3 = new DummyPropertyAnimation;
+ sequence2->addAnimation(a1_s_o2);
+ sequence2->addAnimation(a1_s_o3);
+
+ QSequentialAnimationGroup group;
+ group.addAnimation(sequence);
+ group.addAnimation(sequence2);
+
+ // Current time = 1
+ group.setCurrentTime(1);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o3->state(), QAnimationGroup::Stopped);
+
+ QCOMPARE(group.currentLoopTime(), 1);
+ QCOMPARE(sequence->currentLoopTime(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 1);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // Current time = 1500
+ group.setCurrentTime(1500);
+ QCOMPARE(group.currentLoopTime(), 1500);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ // this will restart the group
+ group.start();
+ group.pause();
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o3->state(), QAnimationGroup::Stopped);
+
+ // Current time = 1750
+ group.setCurrentTime(1750);
+ QCOMPARE(group.currentLoopTime(), 1750);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 250);
+}
+
+void tst_QSequentialAnimationGroup::seekingBackwards()
+{
+ // sequence operating on same object/property
+ QAnimationGroup *sequence = new QSequentialAnimationGroup();
+ QVariantAnimation *a1_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a2_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a3_s_o1 = new DummyPropertyAnimation;
+ a2_s_o1->setLoopCount(3);
+ sequence->addAnimation(a1_s_o1);
+ sequence->addAnimation(a2_s_o1);
+ sequence->addAnimation(a3_s_o1);
+
+ // sequence operating on different object/properties
+ QAnimationGroup *sequence2 = new QSequentialAnimationGroup();
+ QVariantAnimation *a1_s_o2 = new DummyPropertyAnimation;
+ QVariantAnimation *a1_s_o3 = new DummyPropertyAnimation;
+ sequence2->addAnimation(a1_s_o2);
+ sequence2->addAnimation(a1_s_o3);
+
+ QSequentialAnimationGroup group;
+ group.addAnimation(sequence);
+ group.addAnimation(sequence2);
+
+ group.start();
+
+ // Current time = 1600
+ group.setCurrentTime(1600);
+ QCOMPARE(group.currentLoopTime(), 1600);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 350);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 100);
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence2->state(), QAnimationGroup::Running);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o3->state(), QAnimationGroup::Running);
+
+ // Seeking backwards, current time = 1
+ group.setCurrentTime(1);
+ QCOMPARE(group.currentLoopTime(), 1);
+ QCOMPARE(sequence->currentLoopTime(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 1);
+
+ QEXPECT_FAIL("", "rewinding in nested groups is considered as a restart from the children,"
+ "hence they don't reset from their current animation", Continue);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 0);
+ QEXPECT_FAIL("", "rewinding in nested groups is considered as a restart from the children,"
+ "hence they don't reset from their current animation", Continue);
+ QCOMPARE(a2_s_o1->currentLoop(), 0);
+ QEXPECT_FAIL("", "rewinding in nested groups is considered as a restart from the children,"
+ "hence they don't reset from their current animation", Continue);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(sequence2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 0);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 0);
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(sequence->state(), QAnimationGroup::Running);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Running);
+ QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o3->state(), QAnimationGroup::Stopped);
+
+ // Current time = 2000
+ group.setCurrentTime(2000);
+ QCOMPARE(group.currentLoopTime(), 1750);
+ QCOMPARE(sequence->currentLoopTime(), 1250);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 2);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+ QCOMPARE(sequence2->currentLoopTime(), 500);
+ QCOMPARE(a1_s_o2->currentLoopTime(), 250);
+ QCOMPARE(a1_s_o3->currentLoopTime(), 250);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(sequence2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a1_s_o3->state(), QAnimationGroup::Stopped);
+}
+
+typedef QList<QAbstractAnimation::State> StateList;
+
+static bool compareStates(const QSignalSpy& spy, const StateList &expectedStates)
+{
+ bool equals = true;
+ for (int i = 0; i < qMax(expectedStates.count(), spy.count()); ++i) {
+ if (i >= spy.count() || i >= expectedStates.count()) {
+ equals = false;
+ break;
+ }
+ QList<QVariant> args = spy.at(i);
+ QAbstractAnimation::State st = expectedStates.at(i);
+ QAbstractAnimation::State actual = qVariantValue<QAbstractAnimation::State>(args.first());
+ if (equals && actual != st) {
+ equals = false;
+ break;
+ }
+ }
+ if (!equals) {
+ const char *stateStrings[] = {"Stopped", "Paused", "Running"};
+ QString e,a;
+ for (int i = 0; i < qMax(expectedStates.count(), spy.count()); ++i) {
+ if (i < expectedStates.count()) {
+ int exp = int(expectedStates.at(i));
+ if (!e.isEmpty())
+ e += QLatin1String(", ");
+ e += QLatin1String(stateStrings[exp]);
+ }
+ if (i < spy.count()) {
+ QList<QVariant> args = spy.at(i);
+ QAbstractAnimation::State actual = qVariantValue<QAbstractAnimation::State>(args.value(1));
+ if (!a.isEmpty())
+ a += QLatin1String(", ");
+ if (int(actual) >= 0 && int(actual) <= 2) {
+ a += QLatin1String(stateStrings[int(actual)]);
+ } else {
+ a += QLatin1String("NaN");
+ }
+ }
+
+ }
+ qDebug("\n"
+ "expected (count == %d): %s\n"
+ "actual (count == %d): %s\n", expectedStates.count(), qPrintable(e), spy.count(), qPrintable(a));
+ }
+ return equals;
+}
+
+void tst_QSequentialAnimationGroup::pauseAndResume()
+{
+ // sequence operating on same object/property
+ QAnimationGroup *sequence = new QSequentialAnimationGroup();
+ QVariantAnimation *a1_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a2_s_o1 = new DummyPropertyAnimation;
+ QVariantAnimation *a3_s_o1 = new DummyPropertyAnimation;
+ a2_s_o1->setLoopCount(2);
+ sequence->addAnimation(a1_s_o1);
+ sequence->addAnimation(a2_s_o1);
+ sequence->addAnimation(a3_s_o1);
+ sequence->setLoopCount(2);
+
+ QSignalSpy a1StateChangedSpy(a1_s_o1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy seqStateChangedSpy(sequence, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ QSequentialAnimationGroup group;
+ group.addAnimation(sequence);
+
+ group.start();
+ group.pause();
+
+ // Current time = 1751
+ group.setCurrentTime(1751);
+ QCOMPARE(group.currentLoopTime(), 1751);
+ QCOMPARE(sequence->currentLoopTime(), 751);
+ QCOMPARE(sequence->currentLoop(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 1);
+ QCOMPARE(a3_s_o1->currentLoop(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 1);
+
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3_s_o1->state(), QAnimationGroup::Paused);
+
+ QCOMPARE(a1StateChangedSpy.count(), 5); // Running,Paused,Stopped,Running,Stopped
+ QCOMPARE(seqStateChangedSpy.count(), 2); // Running,Paused
+
+ QVERIFY(compareStates(a1StateChangedSpy, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused
+ << QAbstractAnimation::Stopped
+ << QAbstractAnimation::Running
+ << QAbstractAnimation::Stopped)));
+
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(1).first()),
+ QAnimationGroup::Paused);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(2).first()),
+ QAnimationGroup::Stopped);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(3).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(a1StateChangedSpy.at(4).first()),
+ QAnimationGroup::Stopped);
+
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(1).first()),
+ QAnimationGroup::Paused);
+
+ group.resume();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(sequence->state(), QAnimationGroup::Running);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3_s_o1->state(), QAnimationGroup::Running);
+
+ QVERIFY(group.currentLoopTime() >= 1751);
+ QVERIFY(sequence->currentLoopTime() >= 751);
+ QCOMPARE(sequence->currentLoop(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 1);
+ QCOMPARE(a3_s_o1->currentLoop(), 0);
+ QVERIFY(a3_s_o1->currentLoopTime() >= 1);
+
+ QCOMPARE(seqStateChangedSpy.count(), 3); // Running,Paused,Running
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(2).first()),
+ QAnimationGroup::Running);
+
+ group.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3_s_o1->state(), QAnimationGroup::Paused);
+
+ QVERIFY(group.currentLoopTime() >= 1751);
+ QVERIFY(sequence->currentLoopTime() >= 751);
+ QCOMPARE(sequence->currentLoop(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 1);
+ QCOMPARE(a3_s_o1->currentLoop(), 0);
+ QVERIFY(a3_s_o1->currentLoopTime() >= 1);
+
+ QCOMPARE(seqStateChangedSpy.count(), 4); // Running,Paused,Running,Paused
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(3).first()),
+ QAnimationGroup::Paused);
+
+ group.stop();
+
+ QCOMPARE(seqStateChangedSpy.count(), 5); // Running,Paused,Running,Paused,Stopped
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(4).first()),
+ QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::restart()
+{
+ // sequence operating on same object/property
+ QAnimationGroup *sequence = new QSequentialAnimationGroup();
+ QSignalSpy seqCurrentAnimChangedSpy(sequence, SIGNAL(currentAnimationChanged(QAbstractAnimation*)));
+ QSignalSpy seqStateChangedSpy(sequence, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ QVariantAnimation *anims[3];
+ QSignalSpy *animsStateChanged[3];
+
+ for (int i = 0; i < 3; i++) {
+ anims[i] = new DummyPropertyAnimation;
+ anims[i]->setDuration(100);
+ animsStateChanged[i] = new QSignalSpy(anims[i], SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ }
+
+ anims[1]->setLoopCount(2);
+ sequence->addAnimation(anims[0]);
+ sequence->addAnimation(anims[1]);
+ sequence->addAnimation(anims[2]);
+ sequence->setLoopCount(2);
+
+ QSequentialAnimationGroup group;
+ group.addAnimation(sequence);
+
+ group.start();
+
+ QTest::qWait(500);
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+
+ QTest::qWait(300);
+ QTRY_COMPARE(group.state(), QAnimationGroup::Stopped);
+
+ for (int i = 0; i < 3; i++) {
+ QCOMPARE(animsStateChanged[i]->count(), 4);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(1).first()),
+ QAnimationGroup::Stopped);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(2).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(animsStateChanged[i]->at(3).first()),
+ QAnimationGroup::Stopped);
+ }
+
+ QCOMPARE(seqStateChangedSpy.count(), 2);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(seqStateChangedSpy.at(1).first()),
+ QAnimationGroup::Stopped);
+
+ QCOMPARE(seqCurrentAnimChangedSpy.count(), 6);
+ for(int i=0; i<seqCurrentAnimChangedSpy.count(); i++)
+ QCOMPARE(static_cast<QAbstractAnimation*>(anims[i%3]), qVariantValue<QAbstractAnimation*>(seqCurrentAnimChangedSpy.at(i).at(0)));
+
+ group.start();
+
+ QCOMPARE(animsStateChanged[0]->count(), 5);
+ QCOMPARE(animsStateChanged[1]->count(), 4);
+ QCOMPARE(animsStateChanged[2]->count(), 4);
+ QCOMPARE(seqStateChangedSpy.count(), 3);
+}
+
+void tst_QSequentialAnimationGroup::looping()
+{
+ // sequence operating on same object/property
+ QSequentialAnimationGroup *sequence = new QSequentialAnimationGroup();
+ QAbstractAnimation *a1_s_o1 = new DummyPropertyAnimation;
+ QAbstractAnimation *a2_s_o1 = new DummyPropertyAnimation;
+ QAbstractAnimation *a3_s_o1 = new DummyPropertyAnimation;
+
+ QSignalSpy a1Spy(a1_s_o1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy a2Spy(a2_s_o1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy a3Spy(a3_s_o1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy seqSpy(sequence, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ a2_s_o1->setLoopCount(2);
+ sequence->addAnimation(a1_s_o1);
+ sequence->addAnimation(a2_s_o1);
+ sequence->addAnimation(a3_s_o1);
+ sequence->setLoopCount(2);
+
+ QSequentialAnimationGroup group;
+ QSignalSpy groupSpy(&group, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ group.addAnimation(sequence);
+ group.setLoopCount(2);
+
+ group.start();
+ group.pause();
+
+ // Current time = 1750
+ group.setCurrentTime(1750);
+ QCOMPARE(group.currentLoopTime(), 1750);
+ QCOMPARE(sequence->currentLoopTime(), 750);
+ QCOMPARE(sequence->currentLoop(), 1);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 1);
+ // this animation is at the beginning because it is the current one inside sequence
+ QCOMPARE(a3_s_o1->currentLoop(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 0);
+ QCOMPARE(sequence->currentAnimation(), a3_s_o1);
+
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3_s_o1->state(), QAnimationGroup::Paused);
+
+ QCOMPARE(a1Spy.count(), 5); // Running,Paused,Stopped,Running,Stopped
+ QVERIFY(compareStates(a1Spy, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused
+ << QAbstractAnimation::Stopped
+ << QAbstractAnimation::Running
+ << QAbstractAnimation::Stopped)));
+
+ QCOMPARE(a2Spy.count(), 4); // Running,Stopped,Running,Stopped
+ QVERIFY(compareStates(a3Spy, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Stopped
+ << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused)));
+
+ QCOMPARE(seqSpy.count(), 2); // Running,Paused
+ QCOMPARE(groupSpy.count(), 2); // Running,Paused
+
+ // Looping, current time = duration + 1
+ group.setCurrentTime(group.duration() + 1);
+ QCOMPARE(group.currentLoopTime(), 1);
+ QCOMPARE(group.currentLoop(), 1);
+ QCOMPARE(sequence->currentLoopTime(), 1);
+ QCOMPARE(sequence->currentLoop(), 0);
+ QCOMPARE(a1_s_o1->currentLoopTime(), 1);
+ QCOMPARE(a2_s_o1->currentLoopTime(), 250);
+ QCOMPARE(a2_s_o1->currentLoop(), 1);
+ // this animation is at the end because it was run on the previous loop
+ QCOMPARE(a3_s_o1->currentLoop(), 0);
+ QCOMPARE(a3_s_o1->currentLoopTime(), 250);
+
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(sequence->state(), QAnimationGroup::Paused);
+ QCOMPARE(a1_s_o1->state(), QAnimationGroup::Paused);
+ QCOMPARE(a2_s_o1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3_s_o1->state(), QAnimationGroup::Stopped);
+
+ QCOMPARE(a1Spy.count(), 7); // Running,Paused,Stopped,Running,Stopped,Running,Stopped
+ QCOMPARE(a2Spy.count(), 4); // Running, Stopped, Running, Stopped
+ QVERIFY(compareStates(a3Spy, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Stopped
+ << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused
+ << QAbstractAnimation::Stopped)));
+ QVERIFY(compareStates(seqSpy, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused
+ << QAbstractAnimation::Stopped
+ << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused)));
+ QCOMPARE(groupSpy.count(), 2);
+}
+
+void tst_QSequentialAnimationGroup::startDelay()
+{
+ QSequentialAnimationGroup group;
+ group.addPause(250);
+ group.addPause(125);
+ QCOMPARE(group.totalDuration(), 375);
+
+ group.start();
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+
+ QTest::qWait(500);
+
+ QTRY_COMPARE(group.state(), QAnimationGroup::Stopped);
+ QVERIFY(group.currentLoopTime() == 375);
+}
+
+void tst_QSequentialAnimationGroup::clearGroup()
+{
+ QSequentialAnimationGroup group;
+
+ static const int animationCount = 20;
+
+ for (int i = 0; i < animationCount/2; ++i) {
+ QSequentialAnimationGroup *subGroup = new QSequentialAnimationGroup(&group);
+ group.addPause(100);
+ subGroup->addPause(10);
+ }
+
+ QCOMPARE(group.animationCount(), animationCount);
+
+ QPointer<QAbstractAnimation> children[animationCount];
+ for (int i = 0; i < animationCount; ++i) {
+ QVERIFY(group.animationAt(i) != 0);
+ children[i] = group.animationAt(i);
+ }
+
+ group.clear();
+ QCOMPARE(group.animationCount(), 0);
+ QCOMPARE(group.currentLoopTime(), 0);
+ for (int i = 0; i < animationCount; ++i)
+ QVERIFY(children[i].isNull());
+}
+
+void tst_QSequentialAnimationGroup::groupWithZeroDurationAnimations()
+{
+ QObject o;
+ QObject o2;
+
+ o.setProperty("myProperty", 42);
+ o.setProperty("myOtherProperty", 13);
+ o2.setProperty("myProperty", 42);
+ o2.setProperty("myOtherProperty", 13);
+
+ QSequentialAnimationGroup group;
+
+ QVariantAnimation *a1 = new QPropertyAnimation(&o, "myProperty");
+ a1->setDuration(0);
+ a1->setEndValue(43);
+ group.addAnimation(a1);
+
+ //this should just run fine and change nothing
+ group.setCurrentTime(0);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(a1));
+
+ QVariantAnimation *a2 = new QPropertyAnimation(&o2, "myOtherProperty");
+ a2->setDuration(500);
+ a2->setEndValue(31);
+ group.addAnimation(a2);
+
+ QVariantAnimation *a3 = new QPropertyAnimation(&o, "myProperty");
+ a3->setDuration(0);
+ a3->setEndValue(44);
+ group.addAnimation(a3);
+
+ QVariantAnimation *a4 = new QPropertyAnimation(&o, "myOtherProperty");
+ a4->setDuration(250);
+ a4->setEndValue(75);
+ group.addAnimation(a4);
+
+ QVariantAnimation *a5 = new QPropertyAnimation(&o2, "myProperty");
+ a5->setDuration(0);
+ a5->setEndValue(12);
+ group.addAnimation(a5);
+
+ QCOMPARE(o.property("myProperty").toInt(), 42);
+ QCOMPARE(o.property("myOtherProperty").toInt(), 13);
+ QCOMPARE(o2.property("myProperty").toInt(), 42);
+ QCOMPARE(o2.property("myOtherProperty").toInt(), 13);
+
+
+ group.start();
+
+ QCOMPARE(o.property("myProperty").toInt(), 43);
+ QCOMPARE(o.property("myOtherProperty").toInt(), 13);
+ QCOMPARE(o2.property("myProperty").toInt(), 42);
+ QCOMPARE(o2.property("myOtherProperty").toInt(), 13);
+
+ QTest::qWait(100);
+
+ int o2val = o2.property("myOtherProperty").toInt();
+ QVERIFY(o2val > 13);
+ QVERIFY(o2val < 31);
+ QCOMPARE(o.property("myProperty").toInt(), 43);
+ QCOMPARE(o.property("myOtherProperty").toInt(), 13);
+
+ QTest::qWait(500);
+
+ QTRY_COMPARE(o.property("myProperty").toInt(), 44);
+ QCOMPARE(o2.property("myProperty").toInt(), 42);
+ QCOMPARE(o2.property("myOtherProperty").toInt(), 31);
+ QCOMPARE(a1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a4->state(), QAnimationGroup::Running);
+ QCOMPARE(a5->state(), QAnimationGroup::Stopped);
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QTest::qWait(500);
+
+ QTRY_COMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(o.property("myProperty").toInt(), 44);
+ QCOMPARE(o.property("myOtherProperty").toInt(), 75);
+ QCOMPARE(o2.property("myProperty").toInt(), 12);
+ QCOMPARE(o2.property("myOtherProperty").toInt(), 31);
+ QCOMPARE(a1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a2->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a3->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a4->state(), QAnimationGroup::Stopped);
+ QCOMPARE(a5->state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::propagateGroupUpdateToChildren()
+{
+ // this test verifies if group state changes are updating its children correctly
+ QSequentialAnimationGroup group;
+
+ QObject o;
+ o.setProperty("ole", 42);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ QPropertyAnimation anim1(&o, "ole");
+ anim1.setEndValue(43);
+ anim1.setDuration(100);
+ QVERIFY(!anim1.currentValue().isValid());
+ QCOMPARE(anim1.currentValue().toInt(), 0);
+ QCOMPARE(o.property("ole").toInt(), 42);
+
+ TestAnimation anim2;
+ anim2.setStartValue(0);
+ anim2.setEndValue(100);
+ anim2.setDuration(200);
+
+ QVERIFY(anim2.currentValue().isValid());
+ QCOMPARE(anim2.currentValue().toInt(), 0);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&anim2);
+
+ group.start();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(anim1.state(), QAnimationGroup::Paused);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::updateChildrenWithRunningGroup()
+{
+ // assert that its possible to modify a child's state directly while their group is running
+ QSequentialAnimationGroup group;
+
+ TestAnimation anim;
+ anim.setStartValue(0);
+ anim.setEndValue(100);
+ anim.setDuration(200);
+
+ QSignalSpy groupStateChangedSpy(&group, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy childStateChangedSpy(&anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ QCOMPARE(groupStateChangedSpy.count(), 0);
+ QCOMPARE(childStateChangedSpy.count(), 0);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim.state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(&anim);
+
+ group.start();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim.state(), QAnimationGroup::Running);
+
+ QCOMPARE(groupStateChangedSpy.count(), 1);
+ QCOMPARE(childStateChangedSpy.count(), 1);
+
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(groupStateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(childStateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+
+ // starting directly a running child will not have any effect
+ anim.start();
+
+ QCOMPARE(groupStateChangedSpy.count(), 1);
+ QCOMPARE(childStateChangedSpy.count(), 1);
+
+ anim.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim.state(), QAnimationGroup::Paused);
+
+ // in the animation stops directly, the group will still be running
+ anim.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim.state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::deleteChildrenWithRunningGroup()
+{
+ // test if children can be activated when their group is stopped
+ QSequentialAnimationGroup group;
+
+ QVariantAnimation *anim1 = new TestAnimation;
+ anim1->setStartValue(0);
+ anim1->setEndValue(100);
+ anim1->setDuration(200);
+ group.addAnimation(anim1);
+
+ QCOMPARE(group.duration(), anim1->duration());
+
+ group.start();
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim1->state(), QAnimationGroup::Running);
+
+ QTest::qWait(100);
+ QTRY_VERIFY(group.currentLoopTime() > 0);
+
+ delete anim1;
+ QCOMPARE(group.animationCount(), 0);
+ QCOMPARE(group.duration(), 0);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(group.currentLoopTime(), 0); //that's the invariant
+}
+
+void tst_QSequentialAnimationGroup::startChildrenWithStoppedGroup()
+{
+ // test if children can be activated when their group is stopped
+ QSequentialAnimationGroup group;
+
+ TestAnimation anim1;
+ anim1.setStartValue(0);
+ anim1.setEndValue(100);
+ anim1.setDuration(200);
+
+ TestAnimation anim2;
+ anim2.setStartValue(0);
+ anim2.setEndValue(100);
+ anim2.setDuration(200);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&anim2);
+
+ group.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ anim1.start();
+ anim2.start();
+ anim2.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Paused);
+}
+
+void tst_QSequentialAnimationGroup::stopGroupWithRunningChild()
+{
+ // children that started independently will not be affected by a group stop
+ QSequentialAnimationGroup group;
+
+ TestAnimation anim1;
+ anim1.setStartValue(0);
+ anim1.setEndValue(100);
+ anim1.setDuration(200);
+
+ TestAnimation anim2;
+ anim2.setStartValue(0);
+ anim2.setEndValue(100);
+ anim2.setDuration(200);
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&anim2);
+
+ anim1.start();
+ anim2.start();
+ anim2.pause();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Paused);
+
+ group.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Running);
+ QCOMPARE(anim2.state(), QAnimationGroup::Paused);
+
+ anim1.stop();
+ anim2.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2.state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::startGroupWithRunningChild()
+{
+ // as the group has precedence over its children, starting a group will restart all the children
+ QSequentialAnimationGroup group;
+
+ TestAnimation *anim1 = new TestAnimation();
+ anim1->setStartValue(0);
+ anim1->setEndValue(100);
+ anim1->setDuration(200);
+
+ TestAnimation *anim2 = new TestAnimation();
+ anim2->setStartValue(0);
+ anim2->setEndValue(100);
+ anim2->setDuration(200);
+
+ QSignalSpy stateChangedSpy1(anim1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QSignalSpy stateChangedSpy2(anim2, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ QCOMPARE(stateChangedSpy1.count(), 0);
+ QCOMPARE(stateChangedSpy2.count(), 0);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2->state(), QAnimationGroup::Stopped);
+
+ group.addAnimation(anim1);
+ group.addAnimation(anim2);
+
+ anim1->start();
+ anim2->start();
+ anim2->pause();
+
+ QVERIFY(compareStates(stateChangedSpy1, (StateList() << QAbstractAnimation::Running)));
+
+ QVERIFY(compareStates(stateChangedSpy2, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused)));
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1->state(), QAnimationGroup::Running);
+ QCOMPARE(anim2->state(), QAnimationGroup::Paused);
+
+ group.start();
+
+ QVERIFY(compareStates(stateChangedSpy1, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Stopped
+ << QAbstractAnimation::Running)));
+ QVERIFY(compareStates(stateChangedSpy2, (StateList() << QAbstractAnimation::Running
+ << QAbstractAnimation::Paused)));
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim1->state(), QAnimationGroup::Running);
+ QCOMPARE(anim2->state(), QAnimationGroup::Paused);
+
+ QTest::qWait(300);
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2->state(), QAnimationGroup::Running);
+
+ QCOMPARE(stateChangedSpy2.count(), 4);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(2).first()),
+ QAnimationGroup::Stopped);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy2.at(3).first()),
+ QAnimationGroup::Running);
+
+ group.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2->state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::zeroDurationAnimation()
+{
+ QSequentialAnimationGroup group;
+
+ TestAnimation *anim1 = new TestAnimation();
+ anim1->setStartValue(0);
+ anim1->setEndValue(100);
+ anim1->setDuration(0);
+
+ TestAnimation *anim2 = new TestAnimation();
+ anim2->setStartValue(0);
+ anim2->setEndValue(100);
+ anim2->setDuration(100);
+
+ DummyPropertyAnimation *anim3 = new DummyPropertyAnimation;
+ anim3->setEndValue(100);
+ anim3->setDuration(0);
+
+ QSignalSpy stateChangedSpy(anim1, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ group.addAnimation(anim1);
+ group.addAnimation(anim2);
+ group.addAnimation(anim3);
+ group.setLoopCount(2);
+ group.start();
+
+ QCOMPARE(stateChangedSpy.count(), 2);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(0).first()),
+ QAnimationGroup::Running);
+ QCOMPARE(qVariantValue<QAbstractAnimation::State>(stateChangedSpy.at(1).first()),
+ QAnimationGroup::Stopped);
+
+ QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2->state(), QAnimationGroup::Running);
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+
+ //now let's try to seek to the next loop
+ group.setCurrentTime(group.duration() + 1);
+ QCOMPARE(anim1->state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim2->state(), QAnimationGroup::Running);
+ QCOMPARE(anim3->state(), QAnimationGroup::Stopped);
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim3->o.value(), 100); //anim3 should have been run
+}
+
+void tst_QSequentialAnimationGroup::stopUncontrolledAnimations()
+{
+ QSequentialAnimationGroup group;
+
+ AnimationObject o1;
+ UncontrolledAnimation notTimeDriven(&o1);
+ QCOMPARE(notTimeDriven.totalDuration(), -1);
+
+ TestAnimation loopsForever;
+ loopsForever.setStartValue(0);
+ loopsForever.setEndValue(100);
+ loopsForever.setDuration(100);
+ loopsForever.setLoopCount(-1);
+
+ group.addAnimation(&notTimeDriven);
+ group.addAnimation(&loopsForever);
+
+ group.start();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(notTimeDriven.state(), QAnimationGroup::Running);
+ QCOMPARE(loopsForever.state(), QAnimationGroup::Stopped);
+
+ notTimeDriven.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever.state(), QAnimationGroup::Running);
+
+ loopsForever.stop();
+
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
+ QCOMPARE(loopsForever.state(), QAnimationGroup::Stopped);
+}
+
+void tst_QSequentialAnimationGroup::finishWithUncontrolledAnimation()
+{
+ AnimationObject o1;
+
+ //1st case:
+ //first we test a group with one uncontrolled animation
+ QSequentialAnimationGroup group;
+ UncontrolledAnimation notTimeDriven(&o1, &group);
+ QSignalSpy spy(&group, SIGNAL(finished()));
+
+ group.start();
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(notTimeDriven.state(), QAnimationGroup::Running);
+ QCOMPARE(group.currentLoopTime(), 0);
+ QCOMPARE(notTimeDriven.currentLoopTime(), 0);
+
+ QTest::qWait(300); //wait for the end of notTimeDriven
+ QTRY_COMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
+ const int actualDuration = notTimeDriven.currentLoopTime();
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(group.currentLoopTime(), actualDuration);
+ QCOMPARE(spy.count(), 1);
+
+ //2nd case:
+ // lets make sure the seeking will work again
+ spy.clear();
+ DummyPropertyAnimation anim(&group);
+ QSignalSpy animStateChangedSpy(&anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+
+ group.setCurrentTime(300);
+ QCOMPARE(group.state(), QAnimationGroup::Stopped);
+ QCOMPARE(notTimeDriven.currentLoopTime(), actualDuration);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
+
+ //3rd case:
+ //now let's add a perfectly defined animation at the end
+ QCOMPARE(animStateChangedSpy.count(), 0);
+ group.start();
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(notTimeDriven.state(), QAnimationGroup::Running);
+ QCOMPARE(group.currentLoopTime(), 0);
+ QCOMPARE(notTimeDriven.currentLoopTime(), 0);
+
+ QCOMPARE(animStateChangedSpy.count(), 0);
+
+ QTest::qWait(300); //wait for the end of notTimeDriven
+ QTRY_COMPARE(notTimeDriven.state(), QAnimationGroup::Stopped);
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim.state(), QAnimationGroup::Running);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
+ QCOMPARE(animStateChangedSpy.count(), 1);
+ QTest::qWait(300); //wait for the end of anim
+
+ QTRY_COMPARE(anim.state(), QAnimationGroup::Stopped);
+ QCOMPARE(anim.currentLoopTime(), anim.duration());
+
+ //we should simply be at the end
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(animStateChangedSpy.count(), 2);
+ QCOMPARE(group.currentLoopTime(), notTimeDriven.currentLoopTime() + anim.currentLoopTime());
+}
+
+void tst_QSequentialAnimationGroup::addRemoveAnimation()
+{
+ //this test is specific to the sequential animation group
+ QSequentialAnimationGroup group;
+
+ QCOMPARE(group.duration(), 0);
+ QCOMPARE(group.currentLoopTime(), 0);
+ QAbstractAnimation *anim1 = new QPropertyAnimation;
+ group.addAnimation(anim1);
+ QCOMPARE(group.duration(), 250);
+ QCOMPARE(group.currentLoopTime(), 0);
+ QCOMPARE(group.currentAnimation(), anim1);
+
+ //let's append an animation
+ QAbstractAnimation *anim2 = new QPropertyAnimation;
+ group.addAnimation(anim2);
+ QCOMPARE(group.duration(), 500);
+ QCOMPARE(group.currentLoopTime(), 0);
+ QCOMPARE(group.currentAnimation(), anim1);
+
+ //let's prepend an animation
+ QAbstractAnimation *anim0 = new QPropertyAnimation;
+ group.insertAnimation(0, anim0);
+ QCOMPARE(group.duration(), 750);
+ QCOMPARE(group.currentLoopTime(), 0);
+ QCOMPARE(group.currentAnimation(), anim0); //anim0 has become the new currentAnimation
+
+ group.setCurrentTime(300); //anim0 | anim1 | anim2
+ QCOMPARE(group.currentLoopTime(), 300);
+ QCOMPARE(group.currentAnimation(), anim1);
+ QCOMPARE(anim1->currentLoopTime(), 50);
+
+ group.removeAnimation(anim0); //anim1 | anim2
+ QCOMPARE(group.currentLoopTime(), 50);
+ QCOMPARE(group.currentAnimation(), anim1);
+ QCOMPARE(anim1->currentLoopTime(), 50);
+
+ group.setCurrentTime(0);
+ group.insertAnimation(0, anim0); //anim0 | anim1 | anim2
+ group.setCurrentTime(300);
+ QCOMPARE(group.currentLoopTime(), 300);
+ QCOMPARE(group.currentAnimation(), anim1);
+ QCOMPARE(anim1->currentLoopTime(), 50);
+
+ group.removeAnimation(anim1); //anim0 | anim2
+ QCOMPARE(group.currentLoopTime(), 250);
+ QCOMPARE(group.currentAnimation(), anim2);
+ QCOMPARE(anim0->currentLoopTime(), 250);
+}
+
+void tst_QSequentialAnimationGroup::currentAnimation()
+{
+ QSequentialAnimationGroup group;
+ QVERIFY(group.currentAnimation() == 0);
+
+ QPropertyAnimation anim;
+ anim.setDuration(0);
+ group.addAnimation(&anim);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
+}
+
+void tst_QSequentialAnimationGroup::currentAnimationWithZeroDuration()
+{
+ QSequentialAnimationGroup group;
+ QVERIFY(group.currentAnimation() == 0);
+
+ QPropertyAnimation zero1;
+ zero1.setDuration(0);
+ QPropertyAnimation zero2;
+ zero2.setDuration(0);
+
+ QPropertyAnimation anim;
+
+ QPropertyAnimation zero3;
+ zero3.setDuration(0);
+ QPropertyAnimation zero4;
+ zero4.setDuration(0);
+
+
+ group.addAnimation(&zero1);
+ group.addAnimation(&zero2);
+ group.addAnimation(&anim);
+ group.addAnimation(&zero3);
+ group.addAnimation(&zero4);
+
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&zero1));
+
+ group.setCurrentTime(0);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
+
+ group.setCurrentTime(group.duration());
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&zero4));
+
+ group.setDirection(QAbstractAnimation::Backward);
+
+ group.setCurrentTime(0);
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&zero1));
+
+ group.setCurrentTime(group.duration());
+ QCOMPARE(group.currentAnimation(), static_cast<QAbstractAnimation*>(&anim));
+}
+
+void tst_QSequentialAnimationGroup::insertAnimation()
+{
+ QSequentialAnimationGroup group;
+ group.setLoopCount(2);
+ QPropertyAnimation *anim = new DummyPropertyAnimation(&group);
+ QCOMPARE(group.duration(), anim->duration());
+ group.setCurrentTime(300);
+ QCOMPARE(group.currentLoop(), 1);
+
+ //this will crash if the sequential group calls duration on the created animation
+ new QPropertyAnimation(&group);
+}
+
+
+class SequentialAnimationGroup : public QSequentialAnimationGroup
+{
+ Q_OBJECT
+public slots:
+ void clear()
+ {
+ QSequentialAnimationGroup::clear();
+ }
+
+ void refill()
+ {
+ stop();
+ clear();
+ new DummyPropertyAnimation(this);
+ start();
+ }
+
+};
+
+
+void tst_QSequentialAnimationGroup::clear()
+{
+ SequentialAnimationGroup group;
+ QPointer<QAbstractAnimation> anim1 = new DummyPropertyAnimation(&group);
+ group.connect(anim1, SIGNAL(finished()), SLOT(clear()));
+ new DummyPropertyAnimation(&group);
+ QCOMPARE(group.animationCount(), 2);
+
+ group.start();
+ QTest::qWait(anim1->duration() + 100);
+ QTRY_COMPARE(group.animationCount(), 0);
+ QCOMPARE(group.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(group.currentLoopTime(), 0);
+
+ anim1 = new DummyPropertyAnimation(&group);
+ group.connect(anim1, SIGNAL(finished()), SLOT(refill()));
+ group.start();
+ QTest::qWait(anim1->duration() + 100);
+ QTRY_COMPARE(group.state(), QAbstractAnimation::Running);
+ QVERIFY(anim1 == 0); //anim1 should have been deleted
+}
+
+void tst_QSequentialAnimationGroup::pauseResume()
+{
+ QObject dummy;
+ dummy.setProperty("foo", 0);
+ QParallelAnimationGroup group;
+ QPropertyAnimation *anim = new QPropertyAnimation(&dummy, "foo", &group);
+ anim->setDuration(250);
+ anim->setEndValue(250);
+ QSignalSpy spy(anim, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)));
+ QCOMPARE(group.duration(), 250);
+ group.start();
+ QTest::qWait(100);
+ QTRY_COMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QCOMPARE(spy.count(), 1);
+ spy.clear();
+ const int currentTime = group.currentLoopTime();
+ QCOMPARE(anim->currentLoopTime(), currentTime);
+
+ group.pause();
+ QCOMPARE(group.state(), QAnimationGroup::Paused);
+ QCOMPARE(group.currentLoopTime(), currentTime);
+ QCOMPARE(anim->state(), QAnimationGroup::Paused);
+ QCOMPARE(anim->currentLoopTime(), currentTime);
+ QCOMPARE(spy.count(), 1);
+ spy.clear();
+
+ group.resume();
+ QCOMPARE(group.state(), QAnimationGroup::Running);
+ QCOMPARE(group.currentLoopTime(), currentTime);
+ QCOMPARE(anim->state(), QAnimationGroup::Running);
+ QCOMPARE(anim->currentLoopTime(), currentTime);
+ QCOMPARE(spy.count(), 1);
+}
+
+QTEST_MAIN(tst_QSequentialAnimationGroup)
+#include "tst_qsequentialanimationgroup.moc"
diff --git a/tests/auto/corelib/animation/qvariantanimation/qvariantanimation.pro b/tests/auto/corelib/animation/qvariantanimation/qvariantanimation.pro
new file mode 100644
index 0000000000..6c463051e8
--- /dev/null
+++ b/tests/auto/corelib/animation/qvariantanimation/qvariantanimation.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT = core
+SOURCES += tst_qvariantanimation.cpp \
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/animation/qvariantanimation/tst_qvariantanimation.cpp b/tests/auto/corelib/animation/qvariantanimation/tst_qvariantanimation.cpp
new file mode 100644
index 0000000000..7dcfd1d4f5
--- /dev/null
+++ b/tests/auto/corelib/animation/qvariantanimation/tst_qvariantanimation.cpp
@@ -0,0 +1,164 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/qvariantanimation.h>
+#include <QtTest>
+
+class tst_QVariantAnimation : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QVariantAnimation() {}
+ virtual ~tst_QVariantAnimation() {}
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void construction();
+ void destruction();
+ void currentValue();
+ void easingCurve();
+ void startValue();
+ void endValue();
+ void keyValueAt();
+ void keyValues();
+ void duration();
+};
+
+class TestableQVariantAnimation : public QVariantAnimation
+{
+ Q_OBJECT
+public:
+ void updateCurrentValue(const QVariant&) {}
+};
+
+void tst_QVariantAnimation::init()
+{
+}
+
+void tst_QVariantAnimation::cleanup()
+{
+}
+
+void tst_QVariantAnimation::construction()
+{
+ TestableQVariantAnimation anim;
+}
+
+void tst_QVariantAnimation::destruction()
+{
+ TestableQVariantAnimation *anim = new TestableQVariantAnimation;
+ delete anim;
+}
+
+void tst_QVariantAnimation::currentValue()
+{
+ TestableQVariantAnimation anim;
+ QVERIFY(!anim.currentValue().isValid());
+}
+
+void tst_QVariantAnimation::easingCurve()
+{
+ TestableQVariantAnimation anim;
+ QVERIFY(anim.easingCurve() == QEasingCurve::Linear);
+ anim.setEasingCurve(QEasingCurve::InQuad);
+ QVERIFY(anim.easingCurve() == QEasingCurve::InQuad);
+}
+
+void tst_QVariantAnimation::endValue()
+{
+ TestableQVariantAnimation anim;
+ anim.setEndValue(QVariant(1));
+ QCOMPARE(anim.endValue().toInt(), 1);
+}
+
+void tst_QVariantAnimation::startValue()
+{
+ TestableQVariantAnimation anim;
+ anim.setStartValue(QVariant(1));
+ QCOMPARE(anim.startValue().toInt(), 1);
+ anim.setStartValue(QVariant(-1));
+ QCOMPARE(anim.startValue().toInt(), -1);
+}
+
+void tst_QVariantAnimation::keyValueAt()
+{
+ TestableQVariantAnimation anim;
+
+ int i=0;
+ for (qreal r=0.0; r<1.0; r+=0.1) {
+ anim.setKeyValueAt(0.1, ++i);
+ QCOMPARE(anim.keyValueAt(0.1).toInt(), i);
+ }
+}
+
+void tst_QVariantAnimation::keyValues()
+{
+ TestableQVariantAnimation anim;
+
+ QVariantAnimation::KeyValues values;
+ int i=0;
+ for (qreal r=0.0; r<1.0; r+=0.1) {
+ values.append(QVariantAnimation::KeyValue(r, i));
+ }
+
+ anim.setKeyValues(values);
+ QCOMPARE(anim.keyValues(), values);
+}
+
+void tst_QVariantAnimation::duration()
+{
+ TestableQVariantAnimation anim;
+ QCOMPARE(anim.duration(), 250);
+ anim.setDuration(500);
+ QCOMPARE(anim.duration(), 500);
+ QTest::ignoreMessage(QtWarningMsg, "QVariantAnimation::setDuration: cannot set a negative duration");
+ anim.setDuration(-1);
+ QCOMPARE(anim.duration(), 500);
+}
+
+QTEST_MAIN(tst_QVariantAnimation)
+
+#include "tst_qvariantanimation.moc"
diff --git a/tests/auto/corelib/codecs/codecs.pro b/tests/auto/corelib/codecs/codecs.pro
new file mode 100644
index 0000000000..41c5d8e46d
--- /dev/null
+++ b/tests/auto/corelib/codecs/codecs.pro
@@ -0,0 +1,3 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qtextcodec
diff --git a/tests/auto/corelib/codecs/qtextcodec/.gitattributes b/tests/auto/corelib/codecs/qtextcodec/.gitattributes
new file mode 100644
index 0000000000..a27a4d9153
--- /dev/null
+++ b/tests/auto/corelib/codecs/qtextcodec/.gitattributes
@@ -0,0 +1 @@
+utf8.txt -crlf
diff --git a/tests/auto/corelib/codecs/qtextcodec/.gitignore b/tests/auto/corelib/codecs/qtextcodec/.gitignore
new file mode 100644
index 0000000000..bdbd16ad43
--- /dev/null
+++ b/tests/auto/corelib/codecs/qtextcodec/.gitignore
@@ -0,0 +1 @@
+tst_qtextcodec
diff --git a/tests/auto/corelib/codecs/qtextcodec/QT4-crashtest.txt b/tests/auto/corelib/codecs/qtextcodec/QT4-crashtest.txt
new file mode 100644
index 0000000000..d64a06e206
--- /dev/null
+++ b/tests/auto/corelib/codecs/qtextcodec/QT4-crashtest.txt
Binary files differ
diff --git a/tests/auto/corelib/codecs/qtextcodec/echo/echo.pro b/tests/auto/corelib/codecs/qtextcodec/echo/echo.pro
new file mode 100644
index 0000000000..bf791ffc61
--- /dev/null
+++ b/tests/auto/corelib/codecs/qtextcodec/echo/echo.pro
@@ -0,0 +1,6 @@
+SOURCES += main.cpp
+QT = core
+CONFIG -= app_bundle debug_and_release_target
+CONFIG += console
+
+
diff --git a/tests/auto/corelib/codecs/qtextcodec/echo/main.cpp b/tests/auto/corelib/codecs/qtextcodec/echo/main.cpp
new file mode 100644
index 0000000000..774cab1a9b
--- /dev/null
+++ b/tests/auto/corelib/codecs/qtextcodec/echo/main.cpp
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <QtCore>
+
+int main(int argc, char **argv)
+{
+ static char lc_all[] = "LC_ALL=C";
+ putenv(lc_all);
+ QCoreApplication app(argc, argv);
+
+ QString string(QChar(0x410));
+ QTextCodec *locale = QTextCodec::codecForLocale();
+ QTextEncoder *encoder = locale->makeEncoder();
+ QByteArray output = encoder->fromUnicode(string);
+ printf("%s\n", output.data());
+
+ return 0;
+}
diff --git a/tests/auto/corelib/codecs/qtextcodec/korean.txt b/tests/auto/corelib/codecs/qtextcodec/korean.txt
new file mode 100644
index 0000000000..07e1b07f76
--- /dev/null
+++ b/tests/auto/corelib/codecs/qtextcodec/korean.txt
@@ -0,0 +1 @@
+¾È³çµé ÇϽÃÁÒ?
diff --git a/tests/auto/corelib/codecs/qtextcodec/qtextcodec.pro b/tests/auto/corelib/codecs/qtextcodec/qtextcodec.pro
new file mode 100644
index 0000000000..6cb13a9e06
--- /dev/null
+++ b/tests/auto/corelib/codecs/qtextcodec/qtextcodec.pro
@@ -0,0 +1,4 @@
+TEMPLATE = subdirs
+SUBDIRS = test
+
+!wince*:!symbian:SUBDIRS += echo
diff --git a/tests/auto/corelib/codecs/qtextcodec/test/test.pro b/tests/auto/corelib/codecs/qtextcodec/test/test.pro
new file mode 100644
index 0000000000..2188d2f22f
--- /dev/null
+++ b/tests/auto/corelib/codecs/qtextcodec/test/test.pro
@@ -0,0 +1,35 @@
+load(qttest_p4)
+
+SOURCES += ../tst_qtextcodec.cpp
+
+!wince*: {
+TARGET = ../tst_qtextcodec
+
+win32: {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_qtextcodec
+} else {
+ TARGET = ../../release/tst_qtextcodec
+ }
+}
+} else {
+ TARGET = tst_qtextcodec
+}
+
+wince*|symbian {
+ addFiles.files = ../*.txt
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+ wince*|qt_not_deployed {
+ DEPLOYMENT_PLUGIN += qcncodecs qjpcodecs qkrcodecs qtwcodecs
+ }
+}
+
+wince*: {
+ DEFINES += SRCDIR=\\\"\\\"
+}else:symbian {
+ # Symbian can't define SRCDIR meaningfully here
+ LIBS += -lcharconv -lconvnames -lgb2312_shared -ljisx0201 -ljisx0208 -lefsrv
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/../\\\"
+}
diff --git a/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp b/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp
new file mode 100644
index 0000000000..4813f90652
--- /dev/null
+++ b/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp
@@ -0,0 +1,2265 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qtextcodec.h>
+#include <qfile.h>
+#include <qtextdocument.h>
+#include <time.h>
+#include <qprocess.h>
+#include <QtConcurrentMap>
+#include <QThreadPool>
+
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR ""
+#endif
+
+
+class tst_QTextCodec : public QObject
+{
+ Q_OBJECT
+
+private slots:
+
+ void threadSafety();
+
+ void toUnicode_data();
+ void toUnicode();
+ void codecForName_data();
+ void codecForName();
+ void fromUnicode_data();
+ void fromUnicode();
+ void toUnicode_codecForHtml();
+ void toUnicode_incremental();
+ void codecForLocale();
+
+ void asciiToIscii() const;
+ void flagCodepointFFFF() const;
+ void flagF7808080() const;
+ void flagEFBFBF() const;
+ void decode0D() const;
+ void codecForIndex() const;
+ void aliasForUTF16() const;
+ void mibForTSCII() const;
+
+ void utf8Codec_data();
+ void utf8Codec();
+
+ void utf8bom_data();
+ void utf8bom();
+
+ void utfHeaders_data();
+ void utfHeaders();
+
+ void codecForHtml();
+
+ void codecForUtfText_data();
+ void codecForUtfText();
+
+#ifdef Q_OS_UNIX
+ void toLocal8Bit();
+#endif
+
+ void invalidNames();
+ void checkAliases_data();
+ void checkAliases();
+
+ void moreToFromUnicode_data();
+ void moreToFromUnicode();
+
+ void shiftJis();
+};
+
+void tst_QTextCodec::toUnicode_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QString>("codecName");
+
+ QTest::newRow( "korean-eucKR" ) << SRCDIR "korean.txt" << "eucKR";
+ QTest::newRow( "UTF-8" ) << SRCDIR "utf8.txt" << "UTF-8";
+}
+
+void tst_QTextCodec::toUnicode()
+{
+ QFETCH( QString, fileName );
+ QFETCH( QString, codecName );
+
+ QFile file( fileName );
+
+ if ( file.open( QIODevice::ReadOnly ) ) {
+ QByteArray ba = file.readAll();
+ QVERIFY(!ba.isEmpty());
+ QTextCodec *c = QTextCodec::codecForName( codecName.toLatin1() );
+ QVERIFY(c != 0);
+ QString uniString = c->toUnicode( ba );
+ if (codecName == QLatin1String("UTF-8")) {
+ QCOMPARE(uniString, QString::fromUtf8(ba));
+ QCOMPARE(ba, uniString.toUtf8());
+ }
+ QVERIFY(!uniString.isEmpty());
+ QCOMPARE( ba, c->fromUnicode( uniString ) );
+
+ if (codecName == QLatin1String("eucKR")) {
+ char ch = '\0';
+ QVERIFY(c->toUnicode(&ch, 1).isEmpty());
+ QVERIFY(c->toUnicode(&ch, 1).isNull());
+ }
+ } else {
+ QFAIL(qPrintable("File could not be opened: " + file.errorString()));
+ }
+}
+
+void tst_QTextCodec::codecForName_data()
+{
+ QTest::addColumn<QString>("hint");
+ QTest::addColumn<QString>("actualCodecName");
+
+ QTest::newRow("data1") << "iso88591" << "ISO-8859-1";
+ QTest::newRow("data2") << "iso88592" << "ISO-8859-2";
+ QTest::newRow("data3") << " IsO(8)8/5*9-2 " << "ISO-8859-2";
+ QTest::newRow("data4") << " IsO(8)8/5*2-9 " << "";
+ QTest::newRow("data5") << "latin2" << "ISO-8859-2";
+}
+
+void tst_QTextCodec::codecForName()
+{
+ QFETCH(QString, hint);
+ QFETCH(QString, actualCodecName);
+
+ QTextCodec *codec = QTextCodec::codecForName(hint.toLatin1());
+ if (actualCodecName.isEmpty()) {
+ QVERIFY(codec == 0);
+ } else {
+ QVERIFY(codec != 0);
+ QCOMPARE(QString(codec->name()), actualCodecName);
+ }
+}
+
+void tst_QTextCodec::fromUnicode_data()
+{
+ QTest::addColumn<QString>("codecName");
+ QTest::addColumn<bool>("eightBit");
+
+ QTest::newRow("data1") << "ISO-8859-1" << true;
+ QTest::newRow("data2") << "ISO-8859-2" << true;
+ QTest::newRow("data3") << "ISO-8859-3" << true;
+ QTest::newRow("data4") << "ISO-8859-4" << true;
+ QTest::newRow("data5") << "ISO-8859-5" << true;
+ QTest::newRow("data6") << "ISO-8859-6" << true;
+ QTest::newRow("data7") << "ISO-8859-7" << true;
+ QTest::newRow("data8") << "ISO-8859-8" << true;
+ QTest::newRow("data9") << "ISO-8859-9" << true;
+ QTest::newRow("data10") << "ISO-8859-10" << true;
+ QTest::newRow("data13") << "ISO-8859-13" << true;
+ QTest::newRow("data14") << "ISO-8859-14" << true;
+ QTest::newRow("data15") << "ISO-8859-15" << true;
+ QTest::newRow("data16") << "ISO-8859-16" << true;
+
+ QTest::newRow("data18") << "IBM850" << true;
+#ifndef Q_OS_SYMBIAN //symbian implementation will return empty string if all char are invalid
+ QTest::newRow("data19") << "IBM874" << true;
+#endif
+ QTest::newRow("data20") << "IBM866" << true;
+
+ QTest::newRow("data21") << "windows-1250" << true;
+ QTest::newRow("data22") << "windows-1251" << true;
+ QTest::newRow("data23") << "windows-1252" << true;
+ QTest::newRow("data24") << "windows-1253" << true;
+ QTest::newRow("data25") << "windows-1254" << true;
+#ifndef Q_OS_SYMBIAN //symbian implementation will return empty string if all char are invalid
+ QTest::newRow("data26") << "windows-1255" << true;
+#endif
+ QTest::newRow("data27") << "windows-1256" << true;
+ QTest::newRow("data28") << "windows-1257" << true;
+ QTest::newRow("data28") << "windows-1258" << true;
+
+ QTest::newRow("data29") << "Apple Roman" << true;
+ QTest::newRow("data29") << "WINSAMI2" << true;
+ QTest::newRow("data30") << "TIS-620" << true;
+ QTest::newRow("data31") << "roman8" << true;
+
+ QTest::newRow("data32") << "SJIS" << false;
+ QTest::newRow("data33") << "EUC-KR" << false;
+
+ // all codecs from documentation
+ QTest::newRow("doc2") << "Big5" << false;
+ QTest::newRow("doc3") << "Big5-HKSCS" << false;
+ QTest::newRow("doc4") << "CP949" << false;
+ QTest::newRow("doc5") << "EUC-JP" << false;
+ QTest::newRow("doc6") << "EUC-KR" << false;
+ //QTest::newRow("doc7") << "GB18030-0" << false; // only GB18030 works
+ QTest::newRow("doc7-bis") << "GB18030" << false;
+ QTest::newRow("doc8") << "IBM 850" << false;
+ QTest::newRow("doc9") << "IBM 866" << false;
+ QTest::newRow("doc10") << "IBM 874" << false;
+ QTest::newRow("doc11") << "ISO 2022-JP" << false;
+ //ISO 8859-1 to 10 and ISO 8859-13 to 16 tested previously
+ // Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml tested in Iscii test
+ //QTest::newRow("doc12") << "JIS X 0201" << false; //actually not there
+ //QTest::newRow("doc13") << "JIS X 0208" << false; // actually not there
+ QTest::newRow("doc14") << "KOI8-R" << false;
+ QTest::newRow("doc15") << "KOI8-U" << false;
+ //QTest::newRow("doc16") << "MuleLao-1" << false; //only on x11
+ QTest::newRow("doc17") << "ROMAN8" << false;
+ QTest::newRow("doc18") << "Shift-JIS" << false;
+ QTest::newRow("doc19") << "TIS-620" << false;
+ QTest::newRow("doc20") << "TSCII" << false;
+ QTest::newRow("doc21") << "UTF-8" << false;
+ QTest::newRow("doc22") << "UTF-16" << false;
+ QTest::newRow("doc23") << "UTF-16BE" << false;
+ QTest::newRow("doc24") << "UTF-16LE" << false;
+ QTest::newRow("doc25") << "UTF-32" << false;
+ QTest::newRow("doc26") << "UTF-32BE" << false;
+ QTest::newRow("doc27") << "UTF-32LE" << false;
+ //Windows-1250 to 1258 tested previously
+ QTest::newRow("doc3") << "WINSAMI2" << false;
+}
+
+void tst_QTextCodec::fromUnicode()
+{
+ QFETCH(QString, codecName);
+ QFETCH(bool, eightBit);
+
+ QTextCodec *codec = QTextCodec::codecForName(codecName.toLatin1());
+ QVERIFY(codec != 0);
+
+ // Check if the reverse lookup is what we expect
+ if (eightBit) {
+ char chars[128];
+ for (int i = 0; i < 128; ++i)
+ chars[i] = i + 128;
+ QString s = codec->toUnicode(chars, 128);
+ QByteArray c = codec->fromUnicode(s);
+ QCOMPARE(c.size(), 128);
+
+ int numberOfQuestionMarks = 0;
+ for (int i = 0; i < 128; ++i) {
+ if (c.at(i) == '?')
+ ++numberOfQuestionMarks;
+ else
+ QCOMPARE(c.at(i), char(i + 128));
+ }
+ QVERIFY(numberOfQuestionMarks != 128);
+ }
+
+ /*
+ If the encoding is a superset of ASCII, test that the byte
+ array is correct (no off by one, no trailing '\0').
+ */
+ QByteArray result = codec->fromUnicode(QString("abc"));
+ if (result.startsWith("a")) {
+ QCOMPARE(result.size(), 3);
+ QCOMPARE(result, QByteArray("abc"));
+ } else {
+ QVERIFY(true);
+ }
+}
+
+void tst_QTextCodec::toUnicode_codecForHtml()
+{
+ QFile file(QString(SRCDIR "QT4-crashtest.txt"));
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ QByteArray data = file.readAll();
+ QTextCodec *codec = Qt::codecForHtml(data);
+ codec->toUnicode(data); // this line crashes
+}
+
+
+void tst_QTextCodec::toUnicode_incremental()
+{
+ QByteArray ba;
+ ba += char(0xf0);
+ ba += char(0x90);
+ ba += char(0x80);
+ ba += char(0x80);
+ ba += char(0xf4);
+ ba += char(0x8f);
+ ba += char(0xbf);
+ ba += char(0xbd);
+
+ QString expected = QString::fromUtf8(ba);
+
+ QString incremental;
+ QTextDecoder *utf8Decoder = QTextCodec::codecForMib(106)->makeDecoder();
+
+ QString actual;
+ for (int i = 0; i < ba.size(); ++i)
+ utf8Decoder->toUnicode(&actual, ba.constData() + i, 1);
+
+ QCOMPARE(actual, expected);
+
+
+ delete utf8Decoder;
+}
+
+void tst_QTextCodec::codecForLocale()
+{
+ QTextCodec *codec = QTextCodec::codecForLocale();
+ QVERIFY(codec != 0);
+
+#if defined(Q_OS_UNIX)
+ // get a time string that is locale-encoded
+ QByteArray originalLocaleEncodedTimeString;
+ originalLocaleEncodedTimeString.resize(1024);
+ time_t t;
+ time(&t);
+ int r = strftime(originalLocaleEncodedTimeString.data(),
+ originalLocaleEncodedTimeString.size(),
+ "%A%a%B%b%Z",
+ localtime(&t));
+ if (r == 0)
+ QSKIP("strftime() failed", SkipAll);
+ originalLocaleEncodedTimeString.resize(r);
+
+ QString unicodeTimeString = codec->toUnicode(originalLocaleEncodedTimeString);
+ QByteArray localeEncodedTimeString = codec->fromUnicode(unicodeTimeString);
+ QCOMPARE(localeEncodedTimeString, originalLocaleEncodedTimeString);
+#else
+ QSKIP("This test is not implemented on Windows", SkipAll);
+#endif
+
+ // find a codec that is not the codecForLocale()
+ QTextCodec *codec2 = 0;
+ foreach (int mib, QTextCodec::availableMibs()) {
+ if (mib != codec->mibEnum()) {
+ codec2 = QTextCodec::codecForMib(mib);
+ if (codec2)
+ break;
+ }
+ }
+ if (!codec2) {
+ QSKIP("Could not find a codec that is not already the codecForLocale()", SkipAll);
+ }
+
+ // set it, codecForLocale() should return it now
+ QTextCodec::setCodecForLocale(codec2);
+ QCOMPARE(QTextCodec::codecForLocale(), codec2);
+
+ // reset back to the default
+ QTextCodec::setCodecForLocale(0);
+ QCOMPARE(QTextCodec::codecForLocale(), codec);
+}
+
+void tst_QTextCodec::asciiToIscii() const
+{
+ /* Add all low, 7-bit ASCII characters. */
+ QString ascii;
+ const int len = 0xA0 - 1;
+ ascii.resize(len);
+
+ for(int i = 0; i < len; ++i)
+ ascii[i] = QChar(i + 1);
+
+ static const char *const isciiCodecs[] =
+ {
+ "Iscii-Mlm",
+ "Iscii-Knd",
+ "Iscii-Tlg",
+ "Iscii-Tml",
+ "Iscii-Ori",
+ "Iscii-Gjr",
+ "Iscii-Pnj",
+ "Iscii-Bng",
+ "Iscii-Dev"
+ };
+ const int isciiCodecsLen = sizeof(isciiCodecs) / sizeof(const char *);
+
+ for(int i = 0; i < isciiCodecsLen; ++i) {
+ /* For each codec. */
+
+ const QTextCodec *const textCodec = QTextCodec::codecForName(isciiCodecs[i]);
+ QVERIFY(textCodec);
+
+ for(int i2 = 0; i2 < len; ++i2) {
+ /* For each character in ascii. */
+ const QChar c(ascii[i2]);
+ QVERIFY2(textCodec->canEncode(c), qPrintable(QString::fromLatin1("Failed to encode %1 with encoding %2")
+ .arg(QString::number(c.unicode()), QString::fromLatin1(textCodec->name().constData()))));
+ }
+
+ QVERIFY2(textCodec->canEncode(ascii), qPrintable(QString::fromLatin1("Failed for full string with encoding %1")
+ .arg(QString::fromLatin1(textCodec->name().constData()))));
+ }
+}
+
+void tst_QTextCodec::flagCodepointFFFF() const
+{
+ // This is an invalid Unicode codepoint.
+ const QChar ch(0xFFFF);
+ QString input(ch);
+
+ QTextCodec *const codec = QTextCodec::codecForMib(106); // UTF-8
+ QVERIFY(codec);
+
+ const QByteArray asDecoded(codec->fromUnicode(input));
+ QCOMPARE(asDecoded, QByteArray("?"));
+
+ QByteArray ffff("\357\277\277");
+ QTextCodec::ConverterState state(QTextCodec::ConvertInvalidToNull);
+ QVERIFY(codec->toUnicode(ffff.constData(), ffff.length(), &state) == QChar(0));
+ QVERIFY(codec->toUnicode(ffff) == QChar(0xfffd));
+}
+
+void tst_QTextCodec::flagF7808080() const
+{
+ /* This test case stems from test not-wf-sa-170, tests/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml,
+ * whose description reads:
+ *
+ * "Four byte UTF-8 encodings can encode UCS-4 characters
+ * which are beyond the range of legal XML characters
+ * (and can't be expressed in Unicode surrogate pairs).
+ * This document holds such a character."
+ *
+ * In binary, this is:
+ * 11110111100000001000000010000000
+ * * * * *
+ * 11110www10xxxxxx10yyyyyy10zzzzzz
+ *
+ * With multibyte logic removed it is the codepoint 0x1C0000.
+ */
+ QByteArray input;
+ input.resize(4);
+ input[0] = char(0xF7);
+ input[1] = char(0x80);
+ input[2] = char(0x80);
+ input[3] = char(0x80);
+
+
+ QTextCodec *const codec = QTextCodec::codecForMib(106); // UTF-8
+ QVERIFY(codec);
+
+ //QVERIFY(!codec->canEncode(QChar(0x1C0000)));
+
+ QTextCodec::ConverterState state(QTextCodec::ConvertInvalidToNull);
+ QVERIFY(codec->toUnicode(input.constData(), input.length(), &state) == QChar(0));
+}
+
+void tst_QTextCodec::flagEFBFBF() const
+{
+ QByteArray invalidInput;
+ invalidInput.resize(3);
+ invalidInput[0] = char(0xEF);
+ invalidInput[1] = char(0xBF);
+ invalidInput[2] = char(0xBF);
+
+ const QTextCodec *const codec = QTextCodec::codecForMib(106); // UTF-8
+ QVERIFY(codec);
+
+ {
+ //QVERIFY(!codec->canEncode(QChar(0xFFFF)));
+ QTextCodec::ConverterState state(QTextCodec::ConvertInvalidToNull);
+ QVERIFY(codec->toUnicode(invalidInput.constData(), invalidInput.length(), &state) == QChar(0));
+
+ QByteArray start("<?pi ");
+ start.append(invalidInput);
+ start.append("?>");
+ }
+
+ /* When 0xEFBFBF is preceded by what seems to be an arbitrary character,
+ * QTextCodec fails to flag it. */
+ {
+ QByteArray start("B");
+ start.append(invalidInput);
+
+ QTextCodec::ConverterState state(QTextCodec::ConvertInvalidToNull);
+ QVERIFY(codec->toUnicode(start.constData(), start.length(), &state) == QString::fromLatin1("B\0", 2));
+ }
+}
+
+void tst_QTextCodec::decode0D() const
+{
+ QByteArray input;
+ input.resize(3);
+ input[0] = 'A';
+ input[1] = '\r';
+ input[2] = 'B';
+
+ QCOMPARE(QString::fromUtf8(input.constData()).toUtf8(), input);
+}
+
+void tst_QTextCodec::codecForIndex() const
+{
+}
+
+void tst_QTextCodec::aliasForUTF16() const
+{
+ QVERIFY(QTextCodec::codecForName("UTF-16")->aliases().isEmpty());
+}
+
+void tst_QTextCodec::mibForTSCII() const
+{
+ QTextCodec *codec = QTextCodec::codecForName("TSCII");
+ QVERIFY(codec);
+ QCOMPARE(codec->mibEnum(), 2107);
+}
+
+static QString fromInvalidUtf8Sequence(const QByteArray &ba)
+{
+ return QString().fill(QChar::ReplacementCharacter, ba.size());
+}
+
+// copied from tst_QString::fromUtf8_data()
+void tst_QTextCodec::utf8Codec_data()
+{
+ QTest::addColumn<QByteArray>("utf8");
+ QTest::addColumn<QString>("res");
+ QTest::addColumn<int>("len");
+ QString str;
+
+ QTest::newRow("str0") << QByteArray("abcdefgh") << QString("abcdefgh") << -1;
+ QTest::newRow("str0-len") << QByteArray("abcdefgh") << QString("abc") << 3;
+ QTest::newRow("str1") << QByteArray("\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205") << QString("\366\344\374\326\304\334\370\346\345\330\306\305") << -1;
+ QTest::newRow("str1-len") << QByteArray("\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205") << QString("\366\344\374\326\304") << 10;
+
+ str += QChar(0x05e9);
+ str += QChar(0x05d3);
+ str += QChar(0x05d2);
+ QTest::newRow("str2") << QByteArray("\327\251\327\223\327\222") << str << -1;
+
+ str = QChar(0x05e9);
+ QTest::newRow("str2-len") << QByteArray("\327\251\327\223\327\222") << str << 2;
+
+ str = QChar(0x20ac);
+ str += " some text";
+ QTest::newRow("str3") << QByteArray("\342\202\254 some text") << str << -1;
+
+ str = QChar(0x20ac);
+ str += " some ";
+ QTest::newRow("str3-len") << QByteArray("\342\202\254 some text") << str << 9;
+
+ str = "hello";
+ str += QChar::ReplacementCharacter;
+ str += QChar(0x68);
+ str += QChar::ReplacementCharacter;
+ str += QChar::ReplacementCharacter;
+ str += QChar::ReplacementCharacter;
+ str += QChar::ReplacementCharacter;
+ str += QChar(0x61);
+ str += QChar::ReplacementCharacter;
+ QTest::newRow("invalid utf8") << QByteArray("hello\344h\344\344\366\344a\304") << str << -1;
+ QTest::newRow("invalid utf8-len") << QByteArray("hello\344h\344\344\366\344a\304") << QString("hello") << 5;
+
+ str = "Prohl";
+ str += QChar::ReplacementCharacter;
+ str += QChar::ReplacementCharacter;
+ str += "e";
+ str += QChar::ReplacementCharacter;
+ str += " plugin";
+ str += QChar::ReplacementCharacter;
+ str += " Netscape";
+
+ QTest::newRow("task28417") << QByteArray("Prohl\355\276e\350 plugin\371 Netscape") << str << -1;
+ QTest::newRow("task28417-len") << QByteArray("Prohl\355\276e\350 plugin\371 Netscape") << QString("") << 0;
+
+ QTest::newRow("null-1") << QByteArray() << QString() << -1;
+ QTest::newRow("null0") << QByteArray() << QString() << 0;
+ // QTest::newRow("null5") << QByteArray() << QString() << 5;
+ QTest::newRow("empty-1") << QByteArray("\0abcd", 5) << QString() << -1;
+ QTest::newRow("empty0") << QByteArray() << QString() << 0;
+ QTest::newRow("empty5") << QByteArray("\0abcd", 5) << QString::fromAscii("\0abcd", 5) << 5;
+ QTest::newRow("other-1") << QByteArray("ab\0cd", 5) << QString::fromAscii("ab") << -1;
+ QTest::newRow("other5") << QByteArray("ab\0cd", 5) << QString::fromAscii("ab\0cd", 5) << 5;
+
+ str = "Old Italic: ";
+ str += QChar(0xd800);
+ str += QChar(0xdf00);
+ str += QChar(0xd800);
+ str += QChar(0xdf01);
+ str += QChar(0xd800);
+ str += QChar(0xdf02);
+ str += QChar(0xd800);
+ str += QChar(0xdf03);
+ str += QChar(0xd800);
+ str += QChar(0xdf04);
+ QTest::newRow("surrogate") << QByteArray("Old Italic: \360\220\214\200\360\220\214\201\360\220\214\202\360\220\214\203\360\220\214\204") << str << -1;
+
+ QTest::newRow("surrogate-len") << QByteArray("Old Italic: \360\220\214\200\360\220\214\201\360\220\214\202\360\220\214\203\360\220\214\204") << str.left(16) << 20;
+
+ // from http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html
+
+ // 2.1.1 U+00000000
+ QByteArray utf8;
+ utf8 += char(0x00);
+ str = QChar(QChar::Null);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.1.1") << utf8 << str << 1;
+
+ // 2.1.2 U+00000080
+ utf8.clear();
+ utf8 += char(0xc2);
+ utf8 += char(0x80);
+ str = QChar(0x80);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.1.2") << utf8 << str << -1;
+
+ // 2.1.3 U+00000800
+ utf8.clear();
+ utf8 += char(0xe0);
+ utf8 += char(0xa0);
+ utf8 += char(0x80);
+ str = QChar(0x800);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.1.3") << utf8 << str << -1;
+
+ // 2.1.4 U+00010000
+ utf8.clear();
+ utf8 += char(0xf0);
+ utf8 += char(0x90);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str.clear();
+ str += QChar(0xd800);
+ str += QChar(0xdc00);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.1.4") << utf8 << str << -1;
+
+ // 2.1.5 U+00200000 (not a valid Unicode character)
+ utf8.clear();
+ utf8 += char(0xf8);
+ utf8 += char(0x88);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.1.5") << utf8 << str << -1;
+
+ // 2.1.6 U+04000000 (not a valid Unicode character)
+ utf8.clear();
+ utf8 += char(0xfc);
+ utf8 += char(0x84);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.1.6") << utf8 << str << -1;
+
+ // 2.2.1 U+0000007F
+ utf8.clear();
+ utf8 += char(0x7f);
+ str = QChar(0x7f);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.2.1") << utf8 << str << -1;
+
+ // 2.2.2 U+000007FF
+ utf8.clear();
+ utf8 += char(0xdf);
+ utf8 += char(0xbf);
+ str = QChar(0x7ff);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.2.2") << utf8 << str << -1;
+
+ // 2.2.3 U+000FFFF
+ utf8.clear();
+ utf8 += char(0xef);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str.clear();
+ str += QChar::ReplacementCharacter;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.2.3") << utf8 << str << -1;
+
+ // 2.2.4 U+001FFFFF
+ utf8.clear();
+ utf8 += char(0xf7);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str.clear();
+ str += QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.2.4") << utf8 << str << -1;
+
+ // 2.2.5 U+03FFFFFF (not a valid Unicode character)
+ utf8.clear();
+ utf8 += char(0xfb);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.2.5") << utf8 << str << -1;
+
+ // 2.2.6 U+7FFFFFFF
+ utf8.clear();
+ utf8 += char(0xfd);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.2.6") << utf8 << str << -1;
+
+ // 2.3.1 U+0000D7FF
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0x9f);
+ utf8 += char(0xbf);
+ str = QChar(0xd7ff);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.3.1") << utf8 << str << -1;
+
+ // 2.3.2 U+0000E000
+ utf8.clear();
+ utf8 += char(0xee);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str = QChar(0xe000);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.3.2") << utf8 << str << -1;
+
+ // 2.3.3 U+0000FFFD
+ utf8.clear();
+ utf8 += char(0xef);
+ utf8 += char(0xbf);
+ utf8 += char(0xbd);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.3.3") << utf8 << str << -1;
+
+ // 2.3.4 U+0010FFFD
+ utf8.clear();
+ utf8 += char(0xf4);
+ utf8 += char(0x8f);
+ utf8 += char(0xbf);
+ utf8 += char(0xbd);
+ str.clear();
+ str += QChar(0xdbff);
+ str += QChar(0xdffd);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.3.4") << utf8 << str << -1;
+
+ // 2.3.5 U+00110000
+ utf8.clear();
+ utf8 += char(0xf4);
+ utf8 += char(0x90);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str.clear();
+ str += QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.3.5") << utf8 << str << -1;
+
+ // 3.1.1
+ utf8.clear();
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.1.1") << utf8 << str << -1;
+
+ // 3.1.2
+ utf8.clear();
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.1.2") << utf8 << str << -1;
+
+ // 3.1.3
+ utf8.clear();
+ utf8 += char(0x80);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.1.3") << utf8 << str << -1;
+
+ // 3.1.4
+ utf8.clear();
+ utf8 += char(0x80);
+ utf8 += char(0xbf);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.1.4") << utf8 << str << -1;
+
+ // 3.1.5
+ utf8.clear();
+ utf8 += char(0x80);
+ utf8 += char(0xbf);
+ utf8 += char(0x80);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.1.5") << utf8 << str << -1;
+
+ // 3.1.6
+ utf8.clear();
+ utf8 += char(0x80);
+ utf8 += char(0xbf);
+ utf8 += char(0x80);
+ utf8 += char(0xbf);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.1.6") << utf8 << str << -1;
+
+ // 3.1.7
+ utf8.clear();
+ utf8 += char(0x80);
+ utf8 += char(0xbf);
+ utf8 += char(0x80);
+ utf8 += char(0xbf);
+ utf8 += char(0x80);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.1.7") << utf8 << str << -1;
+
+ // 3.1.8
+ utf8.clear();
+ utf8 += char(0x80);
+ utf8 += char(0xbf);
+ utf8 += char(0x80);
+ utf8 += char(0xbf);
+ utf8 += char(0x80);
+ utf8 += char(0xbf);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.1.8") << utf8 << str << -1;
+
+ // 3.1.9
+ utf8.clear();
+ for (uint i = 0x80; i<= 0xbf; ++i)
+ utf8 += i;
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.1.9") << utf8 << str << -1;
+
+ // 3.2.1
+ utf8.clear();
+ str.clear();
+ for (uint i = 0xc8; i <= 0xdf; ++i) {
+ utf8 += i;
+ utf8 += char(0x20);
+
+ str += QChar::ReplacementCharacter;
+ str += QChar(0x0020);
+ }
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.2.1") << utf8 << str << -1;
+
+ // 3.2.2
+ utf8.clear();
+ str.clear();
+ for (uint i = 0xe0; i <= 0xef; ++i) {
+ utf8 += i;
+ utf8 += char(0x20);
+
+ str += QChar::ReplacementCharacter;
+ str += QChar(0x0020);
+ }
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.2.2") << utf8 << str << -1;
+
+ // 3.2.3
+ utf8.clear();
+ str.clear();
+ for (uint i = 0xf0; i <= 0xf7; ++i) {
+ utf8 += i;
+ utf8 += 0x20;
+
+ str += QChar::ReplacementCharacter;
+ str += QChar(0x0020);
+ }
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.2.3") << utf8 << str << -1;
+
+ // 3.2.4
+ utf8.clear();
+ str.clear();
+ for (uint i = 0xf8; i <= 0xfb; ++i) {
+ utf8 += i;
+ utf8 += 0x20;
+
+ str += QChar::ReplacementCharacter;
+ str += QChar(0x0020);
+ }
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.2.4") << utf8 << str << -1;
+
+ // 3.2.5
+ utf8.clear();
+ str.clear();
+ for (uint i = 0xfc; i <= 0xfd; ++i) {
+ utf8 += i;
+ utf8 += 0x20;
+
+ str += QChar::ReplacementCharacter;
+ str += QChar(0x0020);
+ }
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.2.5") << utf8 << str << -1;
+
+ // 3.3.1
+ utf8.clear();
+ utf8 += char(0xc0);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.1") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.1-1") << utf8 << str << -1;
+
+ // 3.3.2
+ utf8.clear();
+ utf8 += char(0xe0);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.2") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.2-1") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xe0);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.2-2") << utf8 << str << -1;
+ utf8 += 0x30;
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.2-3") << utf8 << str << -1;
+
+ // 3.3.3
+ utf8.clear();
+ utf8 += char(0xf0);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.3") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.3-1") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xf0);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.3-2") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.3-3") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xf0);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.3-4") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.3-5") << utf8 << str << -1;
+
+ // 3.3.4
+ utf8.clear();
+ utf8 += char(0xf8);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.4") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.4-1") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xf8);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.4-2") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.4-3") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xf8);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.4-4") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.4-5") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xf8);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.4-6") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.4-7") << utf8 << str << -1;
+
+ // 3.3.5
+ utf8.clear();
+ utf8 += char(0xfc);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.5") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.5-1") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xfc);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.5-2") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.5-3") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xfc);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.5-4") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.5-5") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xfc);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.5-6") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.5-7") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xfc);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.5-8") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.5-9") << utf8 << str << -1;
+
+ // 3.3.6
+ utf8.clear();
+ utf8 += char(0xdf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.6") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.6-1") << utf8 << str << -1;
+
+ // 3.3.7
+ utf8.clear();
+ utf8 += char(0xef);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.7") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.7-1") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xef);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.7-2") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.7-3") << utf8 << str << -1;
+
+ // 3.3.8
+ utf8.clear();
+ utf8 += char(0xf7);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.8") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.8-1") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xf7);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.8-2") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.8-3") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xf7);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.8-4") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.8-5") << utf8 << str << -1;
+
+ // 3.3.9
+ utf8.clear();
+ utf8 += char(0xfb);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.9") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.9-1") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xfb);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.9-2") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.9-3") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xfb);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.9-4") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.9-5") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xfb);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.9-6") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.9-7") << utf8 << str << -1;
+
+ // 3.3.10
+ utf8.clear();
+ utf8 += char(0xfd);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.10") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.10-1") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xfd);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.10-2") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.10-3") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xfd);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.10-4") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.10-5") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xfd);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.10-6") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.10-7") << utf8 << str << -1;
+
+ utf8.clear();
+ utf8 += char(0xfd);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.10-8") << utf8 << str << -1;
+ utf8 += char(0x30);
+ str += 0x30;
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.3.10-9") << utf8 << str << -1;
+
+ // 3.4
+ utf8.clear();
+ utf8 += char(0xc0);
+ utf8 += char(0xe0);
+ utf8 += char(0x80);
+ utf8 += char(0xf0);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0xf8);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0xfc);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0xdf);
+ utf8 += char(0xef);
+ utf8 += char(0xbf);
+ utf8 += char(0xf7);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xfb);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xfd);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.4") << utf8 << str << -1;
+
+ // 3.5.1
+ utf8.clear();
+ utf8 += char(0xfe);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.5.1") << utf8 << str << -1;
+
+ // 3.5.2
+ utf8.clear();
+ utf8 += char(0xff);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.5.1") << utf8 << str << -1;
+
+ // 3.5.2
+ utf8.clear();
+ utf8 += char(0xfe);
+ utf8 += char(0xfe);
+ utf8 += char(0xff);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 3.5.1") << utf8 << str << -1;
+
+ // 4.1.1
+ utf8.clear();
+ utf8 += char(0xc0);
+ utf8 += char(0xaf);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.1.1") << utf8 << str << -1;
+
+ // 4.1.2
+ utf8.clear();
+ utf8 += char(0xe0);
+ utf8 += char(0x80);
+ utf8 += char(0xaf);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.1.2") << utf8 << str << -1;
+
+ // 4.1.3
+ utf8.clear();
+ utf8 += char(0xf0);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0xaf);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.1.3") << utf8 << str << -1;
+
+ // 4.1.4
+ utf8.clear();
+ utf8 += char(0xf8);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0xaf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.1.4") << utf8 << str << -1;
+
+ // 4.1.5
+ utf8.clear();
+ utf8 += char(0xfc);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0xaf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.1.5") << utf8 << str << -1;
+
+ // 4.2.1
+ utf8.clear();
+ utf8 += char(0xc1);
+ utf8 += char(0xbf);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.2.1") << utf8 << str << -1;
+
+ // 4.2.2
+ utf8.clear();
+ utf8 += char(0xe0);
+ utf8 += char(0x9f);
+ utf8 += char(0xbf);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.2.2") << utf8 << str << -1;
+
+ // 4.2.3
+ utf8.clear();
+ utf8 += char(0xf0);
+ utf8 += char(0x8f);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.2.3") << utf8 << str << -1;
+
+ // 4.2.4
+ utf8.clear();
+ utf8 += char(0xf8);
+ utf8 += char(0x87);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.2.4") << utf8 << str << -1;
+
+ // 4.2.5
+ utf8.clear();
+ utf8 += char(0xfc);
+ utf8 += char(0x83);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.2.5") << utf8 << str << -1;
+
+ // 4.3.1
+ utf8.clear();
+ utf8 += char(0xc0);
+ utf8 += char(0x80);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.3.1") << utf8 << str << -1;
+
+ // 4.3.2
+ utf8.clear();
+ utf8 += char(0xe0);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.3.2") << utf8 << str << -1;
+
+ // 4.3.3
+ utf8.clear();
+ utf8 += char(0xf0);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.3.3") << utf8 << str << -1;
+
+ // 4.3.4
+ utf8.clear();
+ utf8 += char(0xf8);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.3.4") << utf8 << str << -1;
+
+ // 4.3.5
+ utf8.clear();
+ utf8 += char(0xfc);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ utf8 += char(0x80);
+ str = fromInvalidUtf8Sequence(utf8);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 4.3.5") << utf8 << str << -1;
+
+ // 5.1.1
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xa0);
+ utf8 += char(0x80);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.1.1") << utf8 << str << -1;
+
+ // 5.1.2
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xad);
+ utf8 += char(0xbf);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.1.2") << utf8 << str << -1;
+
+ // 5.1.3
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xae);
+ utf8 += char(0x80);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.1.3") << utf8 << str << -1;
+
+ // 5.1.4
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xaf);
+ utf8 += char(0xbf);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.1.4") << utf8 << str << -1;
+
+ // 5.1.5
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xb0);
+ utf8 += char(0x80);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.1.5") << utf8 << str << -1;
+
+ // 5.1.6
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xbe);
+ utf8 += char(0x80);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.1.6") << utf8 << str << -1;
+
+ // 5.1.7
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.1.7") << utf8 << str << -1;
+
+ // 5.2.1
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xa0);
+ utf8 += char(0x80);
+ utf8 += char(0xed);
+ utf8 += char(0xb0);
+ utf8 += char(0x80);
+ str.clear();
+ str += QChar(QChar::ReplacementCharacter);
+ str += QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.2.1") << utf8 << str << -1;
+
+ // 5.2.2
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xa0);
+ utf8 += char(0x80);
+ utf8 += char(0xed);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str.clear();
+ str += QChar(QChar::ReplacementCharacter);
+ str += QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.2.2") << utf8 << str << -1;
+
+ // 5.2.3
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xad);
+ utf8 += char(0xbf);
+ utf8 += char(0xed);
+ utf8 += char(0xb0);
+ utf8 += char(0x80);
+ str.clear();
+ str += QChar(QChar::ReplacementCharacter);
+ str += QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.2.3") << utf8 << str << -1;
+
+ // 5.2.4
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xad);
+ utf8 += char(0xbf);
+ utf8 += char(0xed);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str.clear();
+ str += QChar(QChar::ReplacementCharacter);
+ str += QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.2.4") << utf8 << str << -1;
+
+ // 5.2.5
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xae);
+ utf8 += char(0x80);
+ utf8 += char(0xed);
+ utf8 += char(0xb0);
+ utf8 += char(0x80);
+ str.clear();
+ str += QChar(QChar::ReplacementCharacter);
+ str += QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.2.5") << utf8 << str << -1;
+
+ // 5.2.6
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xae);
+ utf8 += char(0x80);
+ utf8 += char(0xed);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str.clear();
+ str += QChar(QChar::ReplacementCharacter);
+ str += QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.2.6") << utf8 << str << -1;
+
+ // 5.2.7
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xaf);
+ utf8 += char(0xbf);
+ utf8 += char(0xed);
+ utf8 += char(0xb0);
+ utf8 += char(0x80);
+ str.clear();
+ str += QChar(QChar::ReplacementCharacter);
+ str += QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.2.7") << utf8 << str << -1;
+
+ // 5.2.8
+ utf8.clear();
+ utf8 += char(0xed);
+ utf8 += char(0xaf);
+ utf8 += char(0xbf);
+ utf8 += char(0xed);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str.clear();
+ str += QChar(QChar::ReplacementCharacter);
+ str += QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.2.8") << utf8 << str << -1;
+
+ // 5.3.1
+ utf8.clear();
+ utf8 += char(0xef);
+ utf8 += char(0xbf);
+ utf8 += char(0xbe);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.3.1") << utf8 << str << -1;
+
+ // 5.3.2
+ utf8.clear();
+ utf8 += char(0xef);
+ utf8 += char(0xbf);
+ utf8 += char(0xbf);
+ str = QChar(QChar::ReplacementCharacter);
+ QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 5.3.2") << utf8 << str << -1;
+}
+
+void tst_QTextCodec::utf8Codec()
+{
+ QTextCodec *codec = QTextCodec::codecForMib(106); // UTF-8
+ QVERIFY(codec != 0);
+
+ QFETCH(QByteArray, utf8);
+ QFETCH(QString, res);
+ QFETCH(int, len);
+
+ QString str = codec->toUnicode(utf8.isNull() ? 0 : utf8.constData(),
+ len < 0 ? qstrlen(utf8.constData()) : len);
+ QCOMPARE(str, res);
+
+ str = QString::fromUtf8(utf8.isNull() ? 0 : utf8.constData(), len);
+ QCOMPARE(str, res);
+}
+
+void tst_QTextCodec::utf8bom_data()
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("nobom")
+ << QByteArray("\302\240", 2)
+ << QString("\240");
+
+ {
+ static const ushort data[] = { 0x201d };
+ QTest::newRow("nobom 2")
+ << QByteArray("\342\200\235", 3)
+ << QString::fromUtf16(data, sizeof(data)/sizeof(short));
+ }
+
+ {
+ static const ushort data[] = { 0xf000 };
+ QTest::newRow("bom1")
+ << QByteArray("\357\200\200", 3)
+ << QString::fromUtf16(data, sizeof(data)/sizeof(short));
+ }
+
+ {
+ static const ushort data[] = { 0xfec0 };
+ QTest::newRow("bom2")
+ << QByteArray("\357\273\200", 3)
+ << QString::fromUtf16(data, sizeof(data)/sizeof(short));
+ }
+
+ {
+ QTest::newRow("normal-bom")
+ << QByteArray("\357\273\277a", 4)
+ << QString("a");
+ }
+
+ {
+ static const ushort data[] = { 0x61, 0xfeff, 0x62 };
+ QTest::newRow("middle-bom")
+ << QByteArray("a\357\273\277b", 5)
+ << QString::fromUtf16(data, sizeof(data)/sizeof(short));
+ }
+}
+
+void tst_QTextCodec::utf8bom()
+{
+ QFETCH(QByteArray, data);
+ QFETCH(QString, result);
+
+ QTextCodec *const codec = QTextCodec::codecForMib(106); // UTF-8
+ QVERIFY(codec);
+
+ QCOMPARE(codec->toUnicode(data.constData(), data.length(), 0), result);
+
+ QTextCodec::ConverterState state;
+ QCOMPARE(codec->toUnicode(data.constData(), data.length(), &state), result);
+}
+
+void tst_QTextCodec::utfHeaders_data()
+{
+ QTest::addColumn<QByteArray>("codecName");
+ QTest::addColumn<int>("flags");
+ QTest::addColumn<QByteArray>("encoded");
+ QTest::addColumn<QString>("unicode");
+ QTest::addColumn<bool>("toUnicode");
+
+ QTest::newRow("utf8 bom")
+ << QByteArray("UTF-8")
+ << 0
+ << QByteArray("\xef\xbb\xbfhello")
+ << QString::fromLatin1("hello")
+ << true;
+ QTest::newRow("utf8 nobom")
+ << QByteArray("UTF-8")
+ << 0
+ << QByteArray("hello")
+ << QString::fromLatin1("hello")
+ << true;
+ QTest::newRow("utf8 bom ignore header")
+ << QByteArray("UTF-8")
+ << (int)QTextCodec::IgnoreHeader
+ << QByteArray("\xef\xbb\xbfhello")
+ << (QString(QChar(0xfeff)) + QString::fromLatin1("hello"))
+ << true;
+ QTest::newRow("utf8 nobom ignore header")
+ << QByteArray("UTF-8")
+ << (int)QTextCodec::IgnoreHeader
+ << QByteArray("hello")
+ << QString::fromLatin1("hello")
+ << true;
+
+ QTest::newRow("utf16 bom be")
+ << QByteArray("UTF-16")
+ << 0
+ << QByteArray("\xfe\xff\0h\0e\0l", 8)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf16 bom le")
+ << QByteArray("UTF-16")
+ << 0
+ << QByteArray("\xff\xfeh\0e\0l\0", 8)
+ << QString::fromLatin1("hel")
+ << true;
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ QTest::newRow("utf16 nobom")
+ << QByteArray("UTF-16")
+ << 0
+ << QByteArray("\0h\0e\0l", 6)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf16 bom be ignore header")
+ << QByteArray("UTF-16")
+ << (int)QTextCodec::IgnoreHeader
+ << QByteArray("\xfe\xff\0h\0e\0l", 8)
+ << (QString(QChar(0xfeff)) + QString::fromLatin1("hel"))
+ << true;
+ } else {
+ QTest::newRow("utf16 nobom")
+ << QByteArray("UTF-16")
+ << 0
+ << QByteArray("h\0e\0l\0", 6)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf16 bom le ignore header")
+ << QByteArray("UTF-16")
+ << (int)QTextCodec::IgnoreHeader
+ << QByteArray("\xff\xfeh\0e\0l\0", 8)
+ << (QString(QChar(0xfeff)) + QString::fromLatin1("hel"))
+ << true;
+ }
+
+ QTest::newRow("utf16-be bom be")
+ << QByteArray("UTF-16BE")
+ << 0
+ << QByteArray("\xfe\xff\0h\0e\0l", 8)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf16-be nobom")
+ << QByteArray("UTF-16BE")
+ << 0
+ << QByteArray("\0h\0e\0l", 6)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf16-be bom be ignore header")
+ << QByteArray("UTF-16BE")
+ << (int)QTextCodec::IgnoreHeader
+ << QByteArray("\xfe\xff\0h\0e\0l", 8)
+ << (QString(QChar(0xfeff)) + QString::fromLatin1("hel"))
+ << true;
+
+ QTest::newRow("utf16-le bom le")
+ << QByteArray("UTF-16LE")
+ << 0
+ << QByteArray("\xff\xfeh\0e\0l\0", 8)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf16-le nobom")
+ << QByteArray("UTF-16LE")
+ << 0
+ << QByteArray("h\0e\0l\0", 6)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf16-le bom le ignore header")
+ << QByteArray("UTF-16LE")
+ << (int)QTextCodec::IgnoreHeader
+ << QByteArray("\xff\xfeh\0e\0l\0", 8)
+ << (QString(QChar(0xfeff)) + QString::fromLatin1("hel"))
+ << true;
+
+
+ QTest::newRow("utf32 bom be")
+ << QByteArray("UTF-32")
+ << 0
+ << QByteArray("\0\0\xfe\xff\0\0\0h\0\0\0e\0\0\0l", 16)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf32 bom le")
+ << QByteArray("UTF-32")
+ << 0
+ << QByteArray("\xff\xfe\0\0h\0\0\0e\0\0\0l\0\0\0", 16)
+ << QString::fromLatin1("hel")
+ << true;
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ QTest::newRow("utf32 nobom")
+ << QByteArray("UTF-32")
+ << 0
+ << QByteArray("\0\0\0h\0\0\0e\0\0\0l", 12)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf32 bom be ignore header")
+ << QByteArray("UTF-32")
+ << (int)QTextCodec::IgnoreHeader
+ << QByteArray("\0\0\xfe\xff\0\0\0h\0\0\0e\0\0\0l", 16)
+ << (QString(QChar(0xfeff)) + QString::fromLatin1("hel"))
+ << true;
+ } else {
+ QTest::newRow("utf32 nobom")
+ << QByteArray("UTF-32")
+ << 0
+ << QByteArray("h\0\0\0e\0\0\0l\0\0\0", 12)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf32 bom le ignore header")
+ << QByteArray("UTF-32")
+ << (int)QTextCodec::IgnoreHeader
+ << QByteArray("\xff\xfe\0\0h\0\0\0e\0\0\0l\0\0\0", 16)
+ << (QString(QChar(0xfeff)) + QString::fromLatin1("hel"))
+ << true;
+ }
+
+
+ QTest::newRow("utf32-be bom be")
+ << QByteArray("UTF-32BE")
+ << 0
+ << QByteArray("\0\0\xfe\xff\0\0\0h\0\0\0e\0\0\0l", 16)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf32-be nobom")
+ << QByteArray("UTF-32BE")
+ << 0
+ << QByteArray("\0\0\0h\0\0\0e\0\0\0l", 12)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf32-be bom be ignore header")
+ << QByteArray("UTF-32BE")
+ << (int)QTextCodec::IgnoreHeader
+ << QByteArray("\0\0\xfe\xff\0\0\0h\0\0\0e\0\0\0l", 16)
+ << (QString(QChar(0xfeff)) + QString::fromLatin1("hel"))
+ << true;
+
+
+ QTest::newRow("utf32-le bom le")
+ << QByteArray("UTF-32LE")
+ << 0
+ << QByteArray("\xff\xfe\0\0h\0\0\0e\0\0\0l\0\0\0", 16)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf32-le nobom")
+ << QByteArray("UTF-32LE")
+ << 0
+ << QByteArray("h\0\0\0e\0\0\0l\0\0\0", 12)
+ << QString::fromLatin1("hel")
+ << true;
+ QTest::newRow("utf32-le bom le ignore header")
+ << QByteArray("UTF-32LE")
+ << (int)QTextCodec::IgnoreHeader
+ << QByteArray("\xff\xfe\0\0h\0\0\0e\0\0\0l\0\0\0", 16)
+ << (QString(QChar(0xfeff)) + QString::fromLatin1("hel"))
+ << true;
+}
+
+void tst_QTextCodec::utfHeaders()
+{
+ QFETCH(QByteArray, codecName);
+ QTextCodec *codec = QTextCodec::codecForName(codecName);
+ QVERIFY(codec != 0);
+
+ QFETCH(int, flags);
+ QTextCodec::ConversionFlags cFlags = QTextCodec::ConversionFlags(flags);
+ QTextCodec::ConverterState state(cFlags);
+
+ QFETCH(QByteArray, encoded);
+ QFETCH(QString, unicode);
+
+ QFETCH(bool, toUnicode);
+
+ QLatin1String ignoreReverseTestOn = (QSysInfo::ByteOrder == QSysInfo::BigEndian) ? QLatin1String(" le") : QLatin1String(" be");
+ QString rowName(QTest::currentDataTag());
+
+ /*for (int i = 0; i < encoded.length(); ++i)
+ qDebug() << hex << " " << (uint)(uchar)encoded.at(i);*/
+ if (toUnicode) {
+ QString result = codec->toUnicode(encoded.constData(), encoded.length(), &state);
+ /*for (int i = 0; i < result.length(); ++i)
+ qDebug() << hex << " " << (uint)result.at(i).unicode();*/
+ QCOMPARE(result.length(), unicode.length());
+ QCOMPARE(result, unicode);
+
+ if (!rowName.endsWith("nobom") && !rowName.contains(ignoreReverseTestOn)) {
+ QTextCodec::ConverterState state2(cFlags);
+ QByteArray reencoded = codec->fromUnicode(unicode.unicode(), unicode.length(), &state2);
+ QCOMPARE(reencoded, encoded);
+ }
+ } else {
+ QByteArray result = codec->fromUnicode(unicode.unicode(), unicode.length(), &state);
+ QCOMPARE(result, encoded);
+ }
+}
+
+void tst_QTextCodec::codecForHtml()
+{
+ QByteArray html("<html><head></head><body>blah</body></html>");
+
+ QCOMPARE(QTextCodec::codecForHtml(html)->mibEnum(), 4); // latin 1
+
+ QCOMPARE(QTextCodec::codecForHtml(html, QTextCodec::codecForMib(106))->mibEnum(), 106); // UTF-8
+
+ html = "<html><head><meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-15\" /></head></html>";
+ QCOMPARE(QTextCodec::codecForHtml(html, QTextCodec::codecForMib(106))->mibEnum(), 111); // latin 15
+
+ html = "<html><head><meta content=\"text/html; charset=ISO-8859-15\" http-equiv=\"content-type\" /></head></html>";
+ QCOMPARE(QTextCodec::codecForHtml(html, QTextCodec::codecForMib(106))->mibEnum(), 111); // latin 15
+
+ html = "<html><head><meta http-equiv=\"content-type\" content=\"text/html; charset=invalid-foo\" /></head></html>";
+ QCOMPARE(QTextCodec::codecForHtml(html, QTextCodec::codecForMib(106))->mibEnum(), 106); // UTF-8
+ QCOMPARE(QTextCodec::codecForHtml(html)->mibEnum(), 4); // latin 1
+}
+
+void tst_QTextCodec::codecForUtfText_data()
+{
+ QTest::addColumn<QByteArray>("encoded");
+ QTest::addColumn<bool>("detected");
+ QTest::addColumn<int>("mib");
+
+
+ QTest::newRow("utf8 bom")
+ << QByteArray("\xef\xbb\xbfhello")
+ << true
+ << 106;
+ QTest::newRow("utf8 nobom")
+ << QByteArray("hello")
+ << false
+ << 0;
+
+ QTest::newRow("utf16 bom be")
+ << QByteArray("\xfe\xff\0h\0e\0l", 8)
+ << true
+ << 1013;
+ QTest::newRow("utf16 bom le")
+ << QByteArray("\xff\xfeh\0e\0l\0", 8)
+ << true
+ << 1014;
+ QTest::newRow("utf16 nobom")
+ << QByteArray("\0h\0e\0l", 6)
+ << false
+ << 0;
+
+ QTest::newRow("utf32 bom be")
+ << QByteArray("\0\0\xfe\xff\0\0\0h\0\0\0e\0\0\0l", 16)
+ << true
+ << 1018;
+ QTest::newRow("utf32 bom le")
+ << QByteArray("\xff\xfe\0\0h\0\0\0e\0\0\0l\0\0\0", 16)
+ << true
+ << 1019;
+ QTest::newRow("utf32 nobom")
+ << QByteArray("\0\0\0h\0\0\0e\0\0\0l", 12)
+ << false
+ << 0;
+}
+
+void tst_QTextCodec::codecForUtfText()
+{
+ QFETCH(QByteArray, encoded);
+ QFETCH(bool, detected);
+ QFETCH(int, mib);
+
+ QTextCodec *codec = QTextCodec::codecForUtfText(encoded, 0);
+ if (detected)
+ QCOMPARE(codec->mibEnum(), mib);
+ else
+ QVERIFY(codec == 0);
+}
+
+#ifdef Q_OS_UNIX
+void tst_QTextCodec::toLocal8Bit()
+{
+#ifdef QT_NO_PROCESS
+ QSKIP("This test requires QProcess", SkipAll);
+#elif defined(Q_OS_SYMBIAN)
+ QSKIP("This test requires streams support in QProcess", SkipAll);
+#else
+ QProcess process;
+ process.start("echo/echo");
+ QString string(QChar(0x410));
+ process.write((const char*)string.utf16(), string.length()*2);
+
+ process.closeWriteChannel();
+ process.waitForFinished();
+ QCOMPARE(process.exitStatus(), QProcess::NormalExit);
+ QCOMPARE(process.exitCode(), 0);
+#endif
+}
+#endif
+
+static QByteArray loadAndConvert(const QByteArray &codecName)
+{
+ QTextCodec *c = QTextCodec::codecForName(codecName);
+ if (!c) {
+ qDebug() << "WARNING " << codecName << " not found? ";
+ return QByteArray();
+ }
+ QString str = QString::fromLatin1(codecName);
+ QByteArray b = c->fromUnicode(str);
+ c->toUnicode(b);
+ return codecName;
+}
+
+static int loadAndConvertMIB(int mib)
+{
+ QTextCodec *c = QTextCodec::codecForMib(mib);
+ if (!c) {
+ qDebug() << "WARNING " << mib << " not found? ";
+ return 0;
+ }
+ QString str = QString::number(mib);
+ QByteArray b = c->fromUnicode(str);
+ c->toUnicode(b);
+ return mib;
+}
+
+
+void tst_QTextCodec::threadSafety()
+{
+ QList<QByteArray> codecList = QTextCodec::availableCodecs();
+ QList<int> mibList = QTextCodec::availableMibs();
+#ifndef QT_NO_CONCURRENT
+ QThreadPool::globalInstance()->setMaxThreadCount(12);
+
+ QFuture<QByteArray> res = QtConcurrent::mapped(codecList, loadAndConvert);
+
+
+ QFuture<int> res2 = QtConcurrent::mapped(mibList, loadAndConvertMIB);
+
+ QCOMPARE(res.results(), codecList);
+ QCOMPARE(res2.results(), mibList);
+#else
+ QSKIP("This function is not yet supported with QT_NO_CONCURRENT defined.", SkipAll);
+#endif
+}
+
+void tst_QTextCodec::invalidNames()
+{
+ QVERIFY(!QTextCodec::codecForName(""));
+ QVERIFY(!QTextCodec::codecForName(QByteArray()));
+ QVERIFY(!QTextCodec::codecForName("-"));
+ QVERIFY(!QTextCodec::codecForName("\1a\2b\3a\4d\5c\6s\7a\xffr\xec_\x9c_"));
+ QVERIFY(!QTextCodec::codecForName("\n"));
+ QVERIFY(!QTextCodec::codecForName("don't exist"));
+ QByteArray huge = "azertyuiop^$qsdfghjklm<wxcvbn,;:=1234567890�_";
+ huge = huge + huge + huge + huge + huge + huge + huge + huge;
+ huge = huge + huge + huge + huge + huge + huge + huge + huge;
+ huge = huge + huge + huge + huge + huge + huge + huge + huge;
+ huge = huge + huge + huge + huge + huge + huge + huge + huge;
+ QVERIFY(!QTextCodec::codecForName(huge));
+}
+
+void tst_QTextCodec::checkAliases_data()
+{
+ QTest::addColumn<QByteArray>("codecName");
+ QList<QByteArray> codecList = QTextCodec::availableCodecs();
+ foreach (const QByteArray &a, codecList) {
+ QTest::newRow( a.constData() ) << a;
+ }
+}
+
+void tst_QTextCodec::checkAliases()
+{
+ QFETCH( QByteArray, codecName );
+ QTextCodec *c = QTextCodec::codecForName(codecName);
+ QVERIFY(c);
+ QCOMPARE(QTextCodec::codecForName(codecName), c);
+ QCOMPARE(QTextCodec::codecForName(c->name()), c);
+
+ foreach(const QByteArray &a, c->aliases()) {
+ QCOMPARE(QTextCodec::codecForName(a), c);
+ }
+}
+
+
+void tst_QTextCodec::moreToFromUnicode_data() {
+ QTest::addColumn<QByteArray>("codecName");
+ QTest::addColumn<QByteArray>("testData");
+
+ QTest::newRow("russian") << QByteArray("ISO-8859-5")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00");
+
+ QTest::newRow("arabic") << QByteArray("ISO-8859-6")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA4\xAC\xAD\xBB\xBF\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2");
+
+ QTest::newRow("greek") << QByteArray("ISO-8859-7")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA6\xA7\xA8\xA9\xAB\xAC\xAD\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE");
+
+ QTest::newRow("turkish") << QByteArray("ISO-8859-9")
+ << QByteArray("\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+#ifdef Q_OS_SYMBIAN
+ QTest::newRow("thai") << QByteArray("TIS-620")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB");
+#endif
+
+ QTest::newRow("latin1") << QByteArray("ISO-8859-1")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QByteArray sms7bit_ba;
+ for (int i=1; i <= 0x7f; ++i) {
+ if (i!='\x1b') {
+ sms7bit_ba.append(i);
+ }
+ }
+#ifdef Q_OS_SYMBIAN
+ QTest::newRow("sms7bit") << QByteArray("SMS 7-bit") << sms7bit_ba;
+#endif
+
+ QTest::newRow("latin2") << QByteArray("ISO-8859-2")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("latin3") << QByteArray("ISO-8859-3")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBF\xC0\xC1\xC2\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("latin4") << QByteArray("ISO-8859-4")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("russian 2") << QByteArray("ISO-8859-5")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("arabic 2") << QByteArray("ISO-8859-6")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA4\xAC\xAD\xBB\xBF\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2");
+
+ QTest::newRow("greek 2") << QByteArray("ISO-8859-7")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA6\xA7\xA8\xA9\xAB\xAC\xAD\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE");
+
+#ifdef Q_OS_SYMBIAN
+ QTest::newRow("hebriew") << QByteArray("ISO-8859-8")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFD\xFE");
+#endif
+
+ QTest::newRow("latin5") << QByteArray("ISO-8859-9")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("latin6") << QByteArray("ISO-8859-10")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+#if 0
+ QByteArray iso8859_11_ba;
+ for (int x=0x20; x<=0x7f; ++x) {
+ iso8859_11_ba.append(x);
+ }
+ for (int x=0xa0; x<0xff; ++x) {
+ if ((x>=0xdb && x<0xdf) || x>0xfb){
+ continue;
+ }
+ iso8859_11_ba.append(x);
+ }
+ QTest::newRow("latin-thai") << QByteArray("ISO-8859-11") << iso8859_11_ba;
+#endif
+
+ QTest::newRow("latin7") << QByteArray("ISO-8859-13")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("celtic") << QByteArray("ISO-8859-14")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("latin9") << QByteArray("ISO-8859-15")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("latin10") << QByteArray("ISO-8859-16")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("cp850") << QByteArray("CP850")
+ << QByteArray("\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff");
+
+ QTest::newRow("cp874") << QByteArray("CP874")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x85\x91\x92\x93\x94\x95\x96\x97\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB");
+
+ QTest::newRow("cp1250") << QByteArray("CP1250")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x84\x85\x86\x87\x89\x8A\x8B\x8C\x8D\x8E\x8F\x91\x92\x93\x94\x95\x96\x97\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("cp1251") << QByteArray("CP1251")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("cp1252") << QByteArray("CP1252")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8E\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("cp1253") << QByteArray("CP1253")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x83\x84\x85\x86\x87\x89\x8B\x91\x92\x93\x94\x95\x96\x97\x99\x9B\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE");
+
+ QTest::newRow("cp1254") << QByteArray("CP1254")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("cp1255") << QByteArray("CP1255")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x83\x84\x85\x86\x87\x88\x89,x8B\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9B\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFD\xFE");
+
+ QTest::newRow("cp1256") << QByteArray("CP1256")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("cp1257") << QByteArray("CP1257")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x84\x85\x86\x87\x89\x8B\x8D\x8E\x8F\x91\x92\x93\x94\x95\x96\x97\x99\x9B\x9D\x9E\xA0\xA2\xA3\xA4\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QTest::newRow("cp1258") << QByteArray("CP1258")
+ << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x83\x84\x85\x86\x87\x88\x89\x8B\x8C\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9B\x9C\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF");
+
+ QByteArray koi8_r_ba;
+ for (int x=0x20; x<=0xff; ++x) {
+ if (x!=0x9A && x!=0xbf) {
+ koi8_r_ba.append(x);
+ }
+ }
+ QTest::newRow("KOI8-R") << QByteArray("KOI8-R") << koi8_r_ba;
+
+ QByteArray koi8_u_ba;
+ for (int x=0x20; x<=0xff; ++x) {
+ koi8_u_ba.append(x);
+ }
+ QTest::newRow("KOI8-U") << QByteArray("KOI8-U") << koi8_u_ba;
+
+
+ QByteArray big5_ba;
+ for (unsigned char u=0xa1; u<=0xf9; u++) {
+ if (u==0xc8) {
+ continue;
+ }
+ for (unsigned char v=0x40; v<=0x7e; v++) {
+ big5_ba.append(u);
+ big5_ba.append(v);
+ }
+ unsigned char v_up;
+ switch (u) {
+ case 0xa3: v_up=0xbf; break;
+ case 0xc7: v_up=0xfc; break;
+ case 0xf9: v_up=0xd5; break;
+ default: v_up=0xfe;
+ }
+
+ for (unsigned char v=0xa1; v<=v_up; v++) {
+ if (u==0xa2 && (v==0xcc || v==0xce)) {
+ continue;
+ }
+ big5_ba.append(u);
+ big5_ba.append(v);
+ }
+ }
+
+ QTest::newRow("BIG5") << QByteArray("BIG5") << big5_ba;
+
+ QByteArray gb2312_ba;
+ for (unsigned char u=0xa1; u<=0xf7; u++) {
+ for (unsigned char v=0xa1; v<=0xfe; v++) {
+ gb2312_ba.append(u);
+ gb2312_ba.append(v);
+ }
+ }
+
+ QTest::newRow("GB2312") << QByteArray("GB2312") << gb2312_ba;
+}
+
+void tst_QTextCodec::moreToFromUnicode()
+{
+ QFETCH( QByteArray, codecName );
+ QFETCH( QByteArray, testData );
+
+ QTextCodec *c = QTextCodec::codecForName( codecName.data() );
+ QVERIFY(c);
+
+ QString uStr = c->toUnicode(testData);
+ QByteArray cStr = c->fromUnicode(uStr);
+ QCOMPARE(testData, cStr);
+}
+
+void tst_QTextCodec::shiftJis()
+{
+ QByteArray backslashTilde("\\~");
+ QTextCodec* codec = QTextCodec::codecForName("shift_jis");
+ QString string = codec->toUnicode(backslashTilde);
+ QCOMPARE(string.length(), 2);
+ QCOMPARE(string.at(0), QChar(QLatin1Char('\\')));
+ QCOMPARE(string.at(1), QChar(QLatin1Char('~')));
+
+ QByteArray encoded = codec->fromUnicode(string);
+ QCOMPARE(encoded, backslashTilde);
+}
+
+struct DontCrashAtExit {
+ ~DontCrashAtExit() {
+ QTextCodec *c = QTextCodec::codecForName("utf8");
+ if (c)
+ c->toUnicode("azerty");
+
+ }
+} dontCrashAtExit;
+
+
+QTEST_MAIN(tst_QTextCodec)
+#include "tst_qtextcodec.moc"
diff --git a/tests/auto/corelib/codecs/qtextcodec/utf8.txt b/tests/auto/corelib/codecs/qtextcodec/utf8.txt
new file mode 100644
index 0000000000..f5ab44c8f4
--- /dev/null
+++ b/tests/auto/corelib/codecs/qtextcodec/utf8.txt
@@ -0,0 +1 @@
+<doc>ð€€ô¿½</doc>
diff --git a/tests/auto/corelib/concurrent/concurrent.pro b/tests/auto/corelib/concurrent/concurrent.pro
new file mode 100644
index 0000000000..6d7850b18f
--- /dev/null
+++ b/tests/auto/corelib/concurrent/concurrent.pro
@@ -0,0 +1,19 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qfuture \
+ qfuturesynchronizer \
+ qfuturewatcher \
+ qtconcurrentfilter \
+ qtconcurrentiteratekernel \
+ qtconcurrentmap \
+ qtconcurrentresultstore \
+ qtconcurrentrun \
+ qtconcurrentthreadengine \
+ qthreadpool
+
+symbian:SUBDIRS -= \
+ qtconcurrentfilter \
+ qtconcurrentiteratekernel \
+ qtconcurrentmap \
+ qtconcurrentrun \
+ qtconcurrentthreadengine \
diff --git a/tests/auto/corelib/concurrent/qfuture/.gitignore b/tests/auto/corelib/concurrent/qfuture/.gitignore
new file mode 100644
index 0000000000..77c055c874
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qfuture/.gitignore
@@ -0,0 +1 @@
+tst_qfuture
diff --git a/tests/auto/corelib/concurrent/qfuture/qfuture.pro b/tests/auto/corelib/concurrent/qfuture/qfuture.pro
new file mode 100644
index 0000000000..0e74f47678
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qfuture/qfuture.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+DEFINES += QT_STRICT_ITERATORS
+SOURCES += tst_qfuture.cpp
+QT = core core-private
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/concurrent/qfuture/tst_qfuture.cpp b/tests/auto/corelib/concurrent/qfuture/tst_qfuture.cpp
new file mode 100644
index 0000000000..d81df0d863
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qfuture/tst_qfuture.cpp
@@ -0,0 +1,1474 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDebug>
+
+#define QFUTURE_TEST
+
+#include <QtTest/QtTest>
+#include <qfuture.h>
+#include "versioncheck.h"
+#include <qfuturewatcher.h>
+#include <qtconcurrentresultstore.h>
+#include <qtconcurrentexception.h>
+
+#ifndef QT_NO_CONCURRENT_TEST
+#include <private/qfutureinterface_p.h>
+
+using namespace QtConcurrent;
+
+// COM interface macro.
+#if defined(Q_OS_WIN) && defined(interface)
+# undef interface
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QFuture: public QObject
+{
+ Q_OBJECT
+private slots:
+ void resultStore();
+ void future();
+ void futureInterface();
+ void refcounting();
+ void cancel();
+ void statePropagation();
+ void multipleResults();
+ void indexedResults();
+ void progress();
+ void progressText();
+ void resultsAfterFinished();
+ void resultsAsList();
+ void implicitConversions();
+ void iterators();
+ void pause();
+ void throttling();
+ void voidConversions();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+ void exceptions_QTBUG18149();
+#endif
+};
+
+QTEST_MAIN(tst_QFuture)
+
+void tst_QFuture::resultStore()
+{
+ int int0 = 0;
+ int int1 = 1;
+ int int2 = 2;
+
+ {
+ ResultStore<int> store;
+ ResultIteratorBase it = store.begin();
+ QVERIFY(store.begin() == store.end());
+ QVERIFY(store.resultAt(0) == store.end());
+ QVERIFY(store.resultAt(1) == store.end());
+ }
+
+
+ {
+ ResultStoreBase store;
+ store.addResult(-1, &int0); // note to self: adding a pointer to the stack here is ok since
+ store.addResult(1, &int1); // ResultStoreBase does not take ownership, only ResultStore<> does.
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QVERIFY(it != store.begin());
+ QVERIFY(it == store.end());
+ }
+
+ QVector<int> vec0 = QVector<int>() << 2 << 3;
+ QVector<int> vec1 = QVector<int>() << 4 << 5;
+
+ {
+ ResultStoreBase store;
+ store.addResults(-1, &vec0, 2, 2);
+ store.addResults(-1, &vec1, 2, 2);
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+
+ ++it;
+ QVERIFY(it == store.end());
+ }
+ {
+ ResultStoreBase store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec1, 2, 2);
+ store.addResult(-1, &int1);
+
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+ QVERIFY(it != store.end());
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+ QVERIFY(it != store.end());
+ ++it;
+ QVERIFY(it == store.end());
+
+ QCOMPARE(store.resultAt(0).resultIndex(), 0);
+ QCOMPARE(store.resultAt(1).resultIndex(), 1);
+ QCOMPARE(store.resultAt(2).resultIndex(), 2);
+ QCOMPARE(store.resultAt(3).resultIndex(), 3);
+ QCOMPARE(store.resultAt(4), store.end());
+ }
+ {
+ ResultStore<int> store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec0);
+ store.addResult(-1, &int1);
+
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+ QVERIFY(it != store.end());
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+ QVERIFY(it != store.end());
+ ++it;
+ QVERIFY(it == store.end());
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), vec0[0]);
+ QCOMPARE(store.resultAt(2).value(), vec0[1]);
+ QCOMPARE(store.resultAt(3).value(), int1);
+ }
+ {
+ ResultStore<int> store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec0);
+ store.addResult(200, &int1);
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), vec0[0]);
+ QCOMPARE(store.resultAt(2).value(), vec0[1]);
+ QCOMPARE(store.resultAt(200).value(), int1);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResult(1, &int1);
+ store.addResult(0, &int0);
+ store.addResult(-1, &int2);
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), int1);
+ QCOMPARE(store.resultAt(2).value(), int2);
+ }
+
+ {
+ ResultStore<int> store;
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), false);
+ QCOMPARE(store.contains(INT_MAX), false);
+ }
+
+ {
+ // Test filter mode, where "gaps" in the result array aren't allowed.
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int2); // add result at index 2
+ QCOMPARE(store.contains(2), false); // but 1 is missing, so this 2 won't be reported yet.
+
+ store.addResult(1, &int1);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), true); // 2 should be visible now.
+
+ store.addResult(4, &int0);
+ store.addResult(5, &int0);
+ store.addResult(7, &int0);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(7), false);
+
+ store.addResult(3, &int0); // adding 3 makes 4 and 5 visible
+ QCOMPARE(store.contains(4), true);
+ QCOMPARE(store.contains(5), true);
+ QCOMPARE(store.contains(7), false);
+
+ store.addResult(6, &int0); // adding 6 makes 7 visible
+
+ QCOMPARE(store.contains(6), true);
+ QCOMPARE(store.contains(7), true);
+ QCOMPARE(store.contains(8), false);
+ }
+
+ {
+ // test canceled results
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.contains(2), false);
+
+ store.addCanceledResult(1); // report no result at 1
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true); // 2 gets renamed to 1
+ QCOMPARE(store.contains(2), false);
+
+ store.addResult(3, &int0);
+ QCOMPARE(store.contains(2), true); //3 gets renamed to 2
+
+ store.addResult(6, &int0);
+ store.addResult(7, &int0);
+ QCOMPARE(store.contains(3), false);
+
+ store.addCanceledResult(4);
+ store.addCanceledResult(5);
+
+ QCOMPARE(store.contains(3), true); //6 gets renamed to 3
+ QCOMPARE(store.contains(4), true); //7 gets renamed to 4
+
+ store.addResult(8, &int0);
+ QCOMPARE(store.contains(5), true); //8 gets renamed to 4
+
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+
+ {
+ // test addResult return value
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 1); // result 0 becomes available
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 1);
+ QCOMPARE(store.contains(2), false);
+
+ store.addCanceledResult(1);
+ QCOMPARE(store.count(), 2); // result 2 is renamed to 1 and becomes available
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), false);
+
+ store.addResult(3, &int0);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.contains(2), true);
+
+ store.addResult(6, &int0);
+ QCOMPARE(store.count(), 3);
+ store.addResult(7, &int0);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.contains(3), false);
+
+ store.addCanceledResult(4);
+ store.addCanceledResult(5);
+ QCOMPARE(store.count(), 5); // 6 and 7 is renamed to 3 and 4 and becomes available
+
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), true);
+
+ store.addResult(8, &int0);
+ QCOMPARE(store.contains(5), true);
+ QCOMPARE(store.count(), 6);
+
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+
+ {
+ // test resultCount in non-filtered mode. It should always be possible
+ // to iterate through the results 0 to resultCount.
+ ResultStore<int> store;
+ store.addResult(0, &int0);
+
+ QCOMPARE(store.count(), 1);
+
+ store.addResult(2, &int0);
+
+ QCOMPARE(store.count(), 1);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 3);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 3);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResults(2, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 4);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResults(2, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 4);
+ }
+ {
+ ResultStore<int> store;
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 2);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 5);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 2);
+
+ store.addCanceledResult(2);
+ QCOMPARE(store.count(), 4);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addCanceledResults(0, 3);
+ QCOMPARE(store.count(), 2);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addCanceledResults(0, 3);
+ QCOMPARE(store.count(), 2); // results at 3 and 4 become available at index 0, 1
+
+ store.addResult(5, &int0);
+ QCOMPARE(store.count(), 3);// result 5 becomes available at index 2
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResult(1, &int0);
+ store.addResult(3, &int0);
+ store.addResults(6, &vec0);
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), true);
+ QCOMPARE(store.contains(7), true);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResult(1, &int0);
+ store.addResult(3, &int0);
+ store.addResults(6, &vec0);
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), false);
+ QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(3), false);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+
+ store.addCanceledResult(0);
+ store.addCanceledResult(2);
+ store.addCanceledResults(4, 2);
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), true);
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addCanceledResult(0);
+ QCOMPARE(store.contains(0), false);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), false);
+ }
+}
+
+void tst_QFuture::future()
+{
+ // default constructors
+ QFuture<int> intFuture;
+ intFuture.waitForFinished();
+ QFuture<QString> stringFuture;
+ stringFuture.waitForFinished();
+ QFuture<void> voidFuture;
+ voidFuture.waitForFinished();
+ QFuture<void> defaultVoidFuture;
+ defaultVoidFuture.waitForFinished();
+
+ // copy constructor
+ QFuture<int> intFuture2(intFuture);
+ QFuture<void> voidFuture2(defaultVoidFuture);
+
+ // assigmnent operator
+ intFuture2 = QFuture<int>();
+ voidFuture2 = QFuture<void>();
+
+ // state
+ QCOMPARE(intFuture2.isStarted(), true);
+ QCOMPARE(intFuture2.isFinished(), true);
+}
+
+class IntResult : public QFutureInterface<int>
+{
+public:
+ QFuture<int> run()
+ {
+ this->reportStarted();
+ QFuture<int> future = QFuture<int>(this);
+
+ int res = 10;
+ reportFinished(&res);
+ return future;
+ }
+};
+
+int value = 10;
+
+class VoidResult : public QFutureInterfaceBase
+{
+public:
+ QFuture<void> run()
+ {
+ this->reportStarted();
+ QFuture<void> future = QFuture<void>(this);
+ reportFinished();
+ return future;
+ }
+};
+
+void tst_QFuture::futureInterface()
+{
+ {
+ QFuture<void> future;
+ {
+ QFutureInterface<void> i;
+ i.reportStarted();
+ future = i.future();
+ i.reportFinished();
+ }
+ }
+ {
+ QFuture<int> future;
+ {
+ QFutureInterface<int> i;
+ i.reportStarted();
+ i.reportResult(10);
+ future = i.future();
+ i.reportFinished();
+ }
+ QCOMPARE(future.resultAt(0), 10);
+ }
+
+ {
+ QFuture<int> intFuture;
+
+ QCOMPARE(intFuture.isStarted(), true);
+ QCOMPARE(intFuture.isFinished(), true);
+
+ IntResult result;
+
+ result.reportStarted();
+ intFuture = result.future();
+
+ QCOMPARE(intFuture.isStarted(), true);
+ QCOMPARE(intFuture.isFinished(), false);
+
+ result.reportFinished(&value);
+
+ QCOMPARE(intFuture.isStarted(), true);
+ QCOMPARE(intFuture.isFinished(), true);
+
+ int e = intFuture.result();
+
+ QCOMPARE(intFuture.isStarted(), true);
+ QCOMPARE(intFuture.isFinished(), true);
+ QCOMPARE(intFuture.isCanceled(), false);
+
+ QCOMPARE(e, value);
+ intFuture.waitForFinished();
+
+ IntResult intAlgo;
+ intFuture = intAlgo.run();
+ QFuture<int> intFuture2(intFuture);
+ QCOMPARE(intFuture.result(), value);
+ QCOMPARE(intFuture2.result(), value);
+ intFuture.waitForFinished();
+
+ VoidResult a;
+ a.run().waitForFinished();
+ }
+}
+
+template <typename T>
+void testRefCounting()
+{
+ QFutureInterface<T> interface;
+ QCOMPARE(int(interface.d->refCount), 1);
+
+ {
+ interface.reportStarted();
+
+ QFuture<T> f = interface.future();
+ QCOMPARE(int(interface.d->refCount), 2);
+
+ QFuture<T> f2(f);
+ QCOMPARE(int(interface.d->refCount), 3);
+
+ QFuture<T> f3;
+ f3 = f2;
+ QCOMPARE(int(interface.d->refCount), 4);
+
+ interface.reportFinished(0);
+ QCOMPARE(int(interface.d->refCount), 4);
+ }
+
+ QCOMPARE(int(interface.d->refCount), 1);
+}
+
+void tst_QFuture::refcounting()
+{
+ testRefCounting<int>();
+}
+
+void tst_QFuture::cancel()
+{
+ {
+ QFuture<void> f;
+ QFutureInterface<void> result;
+
+ result.reportStarted();
+ f = result.future();
+ QVERIFY(f.isCanceled() == false);
+ result.reportCanceled();
+ QVERIFY(f.isCanceled());
+ result.reportFinished();
+ QVERIFY(f.isCanceled());
+ f.waitForFinished();
+ QVERIFY(f.isCanceled());
+ }
+
+ // Cancel from the QFuture side and test if the result
+ // interface detects it.
+ {
+ QFutureInterface<void> result;
+
+ QFuture<void> f;
+ QVERIFY(f.isStarted() == true);
+
+ result.reportStarted();
+ f = result.future();
+
+ QVERIFY(f.isStarted() == true);
+
+ QVERIFY(result.isCanceled() == false);
+ f.cancel();
+
+ QVERIFY(result.isCanceled());
+
+ result.reportFinished();
+ }
+
+ // Test that finished futures can be canceled.
+ {
+ QFutureInterface<void> result;
+
+ QFuture<void> f;
+ QVERIFY(f.isStarted() == true);
+
+ result.reportStarted();
+ f = result.future();
+
+ QVERIFY(f.isStarted() == true);
+
+ result.reportFinished();
+
+ f.cancel();
+
+ QVERIFY(result.isCanceled());
+ QVERIFY(f.isCanceled());
+ }
+
+ // Results reported after canceled is called should not be propagated.
+ {
+
+ QFutureInterface<int> futureInterface;
+ futureInterface.reportStarted();
+ QFuture<int> f = futureInterface.future();
+
+ int result = 0;
+ futureInterface.reportResult(&result);
+ result = 1;
+ futureInterface.reportResult(&result);
+ f.cancel();
+ result = 2;
+ futureInterface.reportResult(&result);
+ result = 3;
+ futureInterface.reportResult(&result);
+ futureInterface.reportFinished();
+ QCOMPARE(f.results(), QList<int>());
+ }
+}
+
+void tst_QFuture::statePropagation()
+{
+ QFuture<void> f1;
+ QFuture<void> f2;
+
+ QCOMPARE(f1.isStarted(), true);
+
+ QFutureInterface<void> result;
+ result.reportStarted();
+ f1 = result.future();
+
+ f2 = f1;
+
+ QCOMPARE(f2.isStarted(), true);
+
+ result.reportCanceled();
+
+ QCOMPARE(f2.isStarted(), true);
+ QCOMPARE(f2.isCanceled(), true);
+
+ QFuture<void> f3 = f2;
+
+ QCOMPARE(f3.isStarted(), true);
+ QCOMPARE(f3.isCanceled(), true);
+
+ result.reportFinished();
+
+ QCOMPARE(f2.isStarted(), true);
+ QCOMPARE(f2.isCanceled(), true);
+
+ QCOMPARE(f3.isStarted(), true);
+ QCOMPARE(f3.isCanceled(), true);
+}
+
+/*
+ Tests that a QFuture can return multiple results.
+*/
+void tst_QFuture::multipleResults()
+{
+ IntResult a;
+ a.reportStarted();
+ QFuture<int> f = a.future();
+
+ QFuture<int> copy = f;
+ int result;
+
+ result = 1;
+ a.reportResult(&result);
+ QCOMPARE(f.resultAt(0), 1);
+
+ result = 2;
+ a.reportResult(&result);
+ QCOMPARE(f.resultAt(1), 2);
+
+ result = 3;
+ a.reportResult(&result);
+
+ result = 4;
+ a.reportFinished(&result);
+
+ QCOMPARE(f.results(), QList<int>() << 1 << 2 << 3 << 4);
+
+ // test foreach
+ QList<int> fasit = QList<int>() << 1 << 2 << 3 << 4;
+ {
+ QList<int> results;
+ foreach(int result, f)
+ results.append(result);
+ QCOMPARE(results, fasit);
+ }
+ {
+ QList<int> results;
+ foreach(int result, copy)
+ results.append(result);
+ QCOMPARE(results, fasit);
+ }
+}
+
+/*
+ Test out-of-order result reporting using indexes
+*/
+void tst_QFuture::indexedResults()
+{
+ {
+ QFutureInterface<QChar> Interface;
+ QFuture<QChar> f;
+ QVERIFY(f.isStarted() == true);
+
+ Interface.reportStarted();
+ f = Interface.future();
+
+ QVERIFY(f.isStarted() == true);
+
+ QChar result;
+
+ result = 'B';
+ Interface.reportResult(&result, 1);
+
+ QCOMPARE(f.resultAt(1), result);
+
+ result = 'A';
+ Interface.reportResult(&result, 0);
+ QCOMPARE(f.resultAt(0), result);
+
+ result = 'C';
+ Interface.reportResult(&result); // no index
+ QCOMPARE(f.resultAt(2), result);
+
+ Interface.reportFinished();
+
+ QCOMPARE(f.results(), QList<QChar>() << 'A' << 'B' << 'C');
+ }
+
+ {
+ // Test result reporting with a missing result in the middle
+ QFutureInterface<int> Interface;
+ Interface.reportStarted();
+ QFuture<int> f = Interface.future();
+ int result;
+
+ result = 0;
+ Interface.reportResult(&result, 0);
+ QVERIFY(f.isResultReadyAt(0));
+ QCOMPARE(f.resultAt(0), 0);
+
+ result = 3;
+ Interface.reportResult(&result, 3);
+ QVERIFY(f.isResultReadyAt(3));
+ QCOMPARE(f.resultAt(3), 3);
+
+ result = 2;
+ Interface.reportResult(&result, 2);
+ QVERIFY(f.isResultReadyAt(2));
+ QCOMPARE(f.resultAt(2), 2);
+
+ result = 4;
+ Interface.reportResult(&result); // no index
+ QVERIFY(f.isResultReadyAt(4));
+ QCOMPARE(f.resultAt(4), 4);
+
+ Interface.reportFinished();
+
+ QCOMPARE(f.results(), QList<int>() << 0 << 2 << 3 << 4);
+ }
+}
+
+void tst_QFuture::progress()
+{
+ QFutureInterface<QChar> result;
+ QFuture<QChar> f;
+
+ QCOMPARE (f.progressValue(), 0);
+
+ result.reportStarted();
+ f = result.future();
+
+ QCOMPARE (f.progressValue(), 0);
+
+ result.setProgressValue(50);
+
+ QCOMPARE (f.progressValue(), 50);
+
+ result.reportFinished();
+
+ QCOMPARE (f.progressValue(), 50);
+}
+
+void tst_QFuture::progressText()
+{
+ QFutureInterface<void> i;
+ i.reportStarted();
+ QFuture<void> f = i.future();
+
+ QCOMPARE(f.progressText(), QLatin1String(""));
+ i.setProgressValueAndText(1, QLatin1String("foo"));
+ QCOMPARE(f.progressText(), QLatin1String("foo"));
+ i.reportFinished();
+}
+
+/*
+ Test that results reported after finished are ignored.
+*/
+void tst_QFuture::resultsAfterFinished()
+{
+ {
+ IntResult a;
+ a.reportStarted();
+ QFuture<int> f = a.future();
+ int result;
+
+ QCOMPARE(f.resultCount(), 0);
+
+ result = 1;
+ a.reportResult(&result);
+ QCOMPARE(f.resultAt(0), 1);
+
+ a.reportFinished();
+
+ QCOMPARE(f.resultAt(0), 1);
+ QCOMPARE(f.resultCount(), 1);
+ result = 2;
+ a.reportResult(&result);
+ QCOMPARE(f.resultCount(), 1);
+ }
+ // cancel it
+ {
+ IntResult a;
+ a.reportStarted();
+ QFuture<int> f = a.future();
+ int result;
+
+ QCOMPARE(f.resultCount(), 0);
+
+ result = 1;
+ a.reportResult(&result);
+ QCOMPARE(f.resultAt(0), 1);
+ QCOMPARE(f.resultCount(), 1);
+
+ a.reportCanceled();
+
+ QCOMPARE(f.resultAt(0), 1);
+ QCOMPARE(f.resultCount(), 1);
+
+ result = 2;
+ a.reportResult(&result);
+ a.reportFinished();
+ }
+}
+
+void tst_QFuture::resultsAsList()
+{
+ IntResult a;
+ a.reportStarted();
+ QFuture<int> f = a.future();
+
+ int result;
+ result = 1;
+ a.reportResult(&result);
+ result = 2;
+ a.reportResult(&result);
+
+ a.reportFinished();
+
+ QList<int> results = f.results();
+ QCOMPARE(results, QList<int>() << 1 << 2);
+}
+
+/*
+ Test that QFuture<T> can be implicitly converted to T
+*/
+void tst_QFuture::implicitConversions()
+{
+ QFutureInterface<QString> iface;
+ iface.reportStarted();
+
+ QFuture<QString> f(&iface);
+
+ const QString input("FooBar 2000");
+ iface.reportFinished(&input);
+
+ const QString result = f;
+ QCOMPARE(result, input);
+ QCOMPARE(QString(f), input);
+ QCOMPARE(static_cast<QString>(f), input);
+}
+
+void tst_QFuture::iterators()
+{
+ {
+ QFutureInterface<int> e;
+ e.reportStarted();
+ QFuture<int> f = e.future();
+
+ int result;
+ result = 1;
+ e.reportResult(&result);
+ result = 2;
+ e.reportResult(&result);
+ result = 3;
+ e.reportResult(&result);
+ e.reportFinished();
+
+ QList<int> results;
+ QFutureIterator<int> i(f);
+ while (i.hasNext()) {
+ results.append(i.next());
+ }
+
+ QCOMPARE(results, f.results());
+
+ QFuture<int>::const_iterator i1 = f.begin(), i2 = i1 + 1;
+ QFuture<int>::const_iterator c1 = i1, c2 = c1 + 1;
+
+ QVERIFY(i1 == i1);
+ QVERIFY(i1 == c1);
+ QVERIFY(c1 == i1);
+ QVERIFY(c1 == c1);
+ QVERIFY(i2 == i2);
+ QVERIFY(i2 == c2);
+ QVERIFY(c2 == i2);
+ QVERIFY(c2 == c2);
+
+ QVERIFY(i1 != i2);
+ QVERIFY(i1 != c2);
+ QVERIFY(c1 != i2);
+ QVERIFY(c1 != c2);
+ QVERIFY(i2 != i1);
+ QVERIFY(i2 != c1);
+ QVERIFY(c2 != i1);
+ QVERIFY(c2 != c1);
+
+ int x1 = *i1;
+ Q_UNUSED(x1);
+ int x2 = *i2;
+ Q_UNUSED(x2);
+ int y1 = *c1;
+ Q_UNUSED(y1);
+ int y2 = *c2;
+ Q_UNUSED(y2);
+ }
+
+ {
+ QFutureInterface<QString> e;
+ e.reportStarted();
+ QFuture<QString> f = e.future();
+
+ e.reportResult(QString("one"));
+ e.reportResult(QString("two"));
+ e.reportResult(QString("three"));
+ e.reportFinished();
+
+ QList<QString> results;
+ QFutureIterator<QString> i(f);
+ while (i.hasNext()) {
+ results.append(i.next());
+ }
+
+ QCOMPARE(results, f.results());
+
+ QFuture<QString>::const_iterator i1 = f.begin(), i2 = i1 + 1;
+ QFuture<QString>::const_iterator c1 = i1, c2 = c1 + 1;
+
+ QVERIFY(i1 == i1);
+ QVERIFY(i1 == c1);
+ QVERIFY(c1 == i1);
+ QVERIFY(c1 == c1);
+ QVERIFY(i2 == i2);
+ QVERIFY(i2 == c2);
+ QVERIFY(c2 == i2);
+ QVERIFY(c2 == c2);
+
+ QVERIFY(i1 != i2);
+ QVERIFY(i1 != c2);
+ QVERIFY(c1 != i2);
+ QVERIFY(c1 != c2);
+ QVERIFY(i2 != i1);
+ QVERIFY(i2 != c1);
+ QVERIFY(c2 != i1);
+ QVERIFY(c2 != c1);
+
+ QString x1 = *i1;
+ QString x2 = *i2;
+ QString y1 = *c1;
+ QString y2 = *c2;
+
+ QCOMPARE(x1, y1);
+ QCOMPARE(x2, y2);
+
+ int i1Size = i1->size();
+ int i2Size = i2->size();
+ int c1Size = c1->size();
+ int c2Size = c2->size();
+
+ QCOMPARE(i1Size, c1Size);
+ QCOMPARE(i2Size, c2Size);
+ }
+
+ {
+ const int resultCount = 20;
+
+ QFutureInterface<int> e;
+ e.reportStarted();
+ QFuture<int> f = e.future();
+
+ for (int i = 0; i < resultCount; ++i) {
+ e.reportResult(i);
+ }
+
+ e.reportFinished();
+
+ {
+ QFutureIterator<int> it(f);
+ QFutureIterator<int> it2(it);
+ }
+
+ {
+ QFutureIterator<int> it(f);
+
+ for (int i = 0; i < resultCount - 1; ++i) {
+ QVERIFY(it.hasNext());
+ QCOMPARE(it.peekNext(), i);
+ QCOMPARE(it.next(), i);
+ }
+
+ QVERIFY(it.hasNext());
+ QCOMPARE(it.peekNext(), resultCount - 1);
+ QCOMPARE(it.next(), resultCount - 1);
+ QVERIFY(it.hasNext() == false);
+ }
+
+ {
+ QFutureIterator<int> it(f);
+ QVERIFY(it.hasNext());
+ it.toBack();
+ QVERIFY(it.hasNext() == false);
+ it.toFront();
+ QVERIFY(it.hasNext());
+ }
+ }
+}
+
+class SignalSlotObject : public QObject
+{
+Q_OBJECT
+public:
+ SignalSlotObject()
+ : finishedCalled(false),
+ canceledCalled(false),
+ rangeBegin(0),
+ rangeEnd(0) { }
+
+public slots:
+ void finished()
+ {
+// qDebug() << "finished called";
+ finishedCalled = true;
+ }
+
+ void canceled()
+ {
+// qDebug() << "canceled called";
+ canceledCalled = true;
+ }
+
+ void resultReady(int index)
+ {
+// qDebug() << "result" << index << "ready";
+ results.insert(index);
+ }
+
+ void progressRange(int begin, int end)
+ {
+// qDebug() << "progress range" << begin << end;
+ rangeBegin = begin;
+ rangeEnd = end;
+ }
+
+ void progress(int progress)
+ {
+// qDebug() << "progress" << progress;
+ reportedProgress.insert(progress);
+ }
+public:
+ bool finishedCalled;
+ bool canceledCalled;
+ QSet<int> results;
+ int rangeBegin;
+ int rangeEnd;
+ QSet<int> reportedProgress;
+};
+
+void tst_QFuture::pause()
+{
+ QFutureInterface<void> Interface;
+
+ Interface.reportStarted();
+ QFuture<void> f = Interface.future();
+
+ QVERIFY(Interface.isPaused() == false);
+ f.pause();
+ QVERIFY(Interface.isPaused() == true);
+ f.resume();
+ QVERIFY(Interface.isPaused() == false);
+ f.togglePaused();
+ QVERIFY(Interface.isPaused() == true);
+ f.togglePaused();
+ QVERIFY(Interface.isPaused() == false);
+
+ Interface.reportFinished();
+}
+
+const int resultCount = 1000;
+
+class ResultObject : public QObject
+{
+Q_OBJECT
+public slots:
+ void resultReady(int)
+ {
+
+ }
+public:
+};
+
+// Test that that the isPaused() on future result interface returns true
+// if we report a lot of results that are not handled.
+void tst_QFuture::throttling()
+{
+ {
+ QFutureInterface<void> i;
+
+ i.reportStarted();
+ QFuture<void> f = i.future();
+
+ QVERIFY(i.isThrottled() == false);
+
+ i.setThrottled(true);
+ QVERIFY(i.isThrottled());
+
+ i.setThrottled(false);
+ QVERIFY(i.isThrottled() == false);
+
+ i.setThrottled(true);
+ QVERIFY(i.isThrottled());
+
+ i.reportFinished();
+ }
+/*
+ QFutureInterface<int> *Interface = new QFutureInterface<int>();
+ Interface.reportStarted();
+ QFuture<int> f = QFuture<int>(Interface);
+
+ ResultObject object;
+ f.connectTo(ThrottledResultReadyAtSignal, &object, SLOT(resultReady(int)), Qt::DirectConnection);
+
+ for (int i = 0; i < 100; ++i)
+ Interface.reportResult(&i);
+
+ QVERIFY(Interface.isPaused() == true);
+
+ // read the results, this should resume the task.
+ for (int i = 0; i < 100; ++i)
+ f.throttledResult(i);
+
+ QVERIFY(Interface.isPaused() == false);
+ Interface.reportFinished();
+*/
+}
+
+void tst_QFuture::voidConversions()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> intFuture(&iface);
+
+ int value = 10;
+ iface.reportFinished(&value);
+
+ QFuture<void> voidFuture(intFuture);
+ voidFuture = intFuture;
+
+ QVERIFY(voidFuture == intFuture);
+}
+
+
+#ifndef QT_NO_EXCEPTIONS
+
+QFuture<void> createExceptionFuture()
+{
+ QFutureInterface<void> i;
+ i.reportStarted();
+ QFuture<void> f = i.future();
+
+ Exception e;
+ i.reportException(e);
+ i.reportFinished();
+ return f;
+}
+
+QFuture<int> createExceptionResultFuture()
+{
+ QFutureInterface<int> i;
+ i.reportStarted();
+ QFuture<int> f = i.future();
+ int r = 0;
+ i.reportResult(r);
+
+ Exception e;
+ i.reportException(e);
+ i.reportFinished();
+ return f;
+}
+
+class DerivedException : public Exception
+{
+public:
+ void raise() const { throw *this; }
+ Exception *clone() const { return new DerivedException(*this); }
+};
+
+QFuture<void> createDerivedExceptionFuture()
+{
+ QFutureInterface<void> i;
+ i.reportStarted();
+ QFuture<void> f = i.future();
+
+ DerivedException e;
+ i.reportException(e);
+ i.reportFinished();
+ return f;
+}
+
+void tst_QFuture::exceptions()
+{
+
+// test throwing from waitForFinished
+{
+ QFuture<void> f = createExceptionFuture();
+ bool caught = false;
+ try {
+ f.waitForFinished();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+// test result()
+{
+ QFuture<int> f = createExceptionResultFuture();
+ bool caught = false;
+ try {
+ f.result();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+// test result() and destroy
+{
+ bool caught = false;
+ try {
+ createExceptionResultFuture().result();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+// test results()
+{
+ QFuture<int> f = createExceptionResultFuture();
+ bool caught = false;
+ try {
+ f.results();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+// test foreach
+{
+ QFuture<int> f = createExceptionResultFuture();
+ bool caught = false;
+ try {
+ foreach (int e, f.results()) {
+ Q_UNUSED(e);
+ QFAIL("did not get exception");
+ }
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+// catch derived exceptions
+{
+ bool caught = false;
+ try {
+ createDerivedExceptionFuture().waitForFinished();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+{
+ bool caught = false;
+ try {
+ createDerivedExceptionFuture().waitForFinished();
+ } catch (DerivedException &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+}
+
+}
+
+
+void tst_QFuture::exceptions_QTBUG18149()
+{
+ class MyClass
+ {
+ public:
+ ~MyClass()
+ {
+ QFuture<void> f = createExceptionFuture();
+ bool caught = false;
+ try {
+ f.waitForFinished();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+ }
+ };
+
+ try {
+ MyClass m;
+ Q_UNUSED(m);
+ throw 0;
+ } catch (int) {}
+
+}
+
+
+#endif // QT_NO_EXCEPTIONS
+
+#include "tst_qfuture.moc"
+
+#else
+QTEST_NOOP_MAIN
+#endif
diff --git a/tests/auto/corelib/concurrent/qfuture/versioncheck.h b/tests/auto/corelib/concurrent/qfuture/versioncheck.h
new file mode 100644
index 0000000000..9e4d0c6eeb
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qfuture/versioncheck.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qglobal.h>
+
+#ifdef QT_NO_CONCURRENT
+#define QT_NO_CONCURRENT_TEST
+#endif
+
+#if defined(Q_CC_MSVC) && _MSC_VER < 1400
+#define QT_NO_CONCURRENT_TEST
+#endif
diff --git a/tests/auto/corelib/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro b/tests/auto/corelib/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro
new file mode 100644
index 0000000000..11012cce24
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT = core
+SOURCES += tst_qfuturesynchronizer.cpp \
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp b/tests/auto/corelib/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp
new file mode 100644
index 0000000000..5aced3f8c1
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp
@@ -0,0 +1,158 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest>
+
+#include <QtCore/qfuturesynchronizer.h>
+#include <QtCore/qfuture.h>
+
+class tst_QFutureSynchronizer : public QObject
+{
+ Q_OBJECT
+
+
+private Q_SLOTS:
+ void construction();
+ void addFuture();
+ void cancelOnWait();
+ void clearFutures();
+ void futures();
+ void setFuture();
+ void waitForFinished();
+};
+
+
+void tst_QFutureSynchronizer::construction()
+{
+
+ QFuture<void> future;
+ QFutureSynchronizer<void> synchronizer;
+ QFutureSynchronizer<void> synchronizerWithFuture(future);
+
+ QCOMPARE(synchronizer.futures().size(), 0);
+ QCOMPARE(synchronizerWithFuture.futures().size(), 1);
+}
+
+void tst_QFutureSynchronizer::addFuture()
+{
+ QFutureSynchronizer<void> synchronizer;
+
+ synchronizer.addFuture(QFuture<void>());
+ QFuture<void> future;
+ synchronizer.addFuture(future);
+ synchronizer.addFuture(future);
+
+ QCOMPARE(synchronizer.futures().size(), 3);
+}
+
+void tst_QFutureSynchronizer::cancelOnWait()
+{
+ QFutureSynchronizer<void> synchronizer;
+ QVERIFY(!synchronizer.cancelOnWait());
+ synchronizer.setCancelOnWait(true);
+ QVERIFY(synchronizer.cancelOnWait());
+ synchronizer.setCancelOnWait(false);
+ QVERIFY(!synchronizer.cancelOnWait());
+ synchronizer.setCancelOnWait(true);
+ QVERIFY(synchronizer.cancelOnWait());
+}
+
+void tst_QFutureSynchronizer::clearFutures()
+{
+ QFutureSynchronizer<void> synchronizer;
+ synchronizer.clearFutures();
+ QVERIFY(synchronizer.futures().isEmpty());
+
+ synchronizer.addFuture(QFuture<void>());
+ QFuture<void> future;
+ synchronizer.addFuture(future);
+ synchronizer.addFuture(future);
+ synchronizer.clearFutures();
+ QVERIFY(synchronizer.futures().isEmpty());
+}
+
+void tst_QFutureSynchronizer::futures()
+{
+ QFutureSynchronizer<void> synchronizer;
+
+ QList<QFuture<void> > futures;
+ for (int i=0; i<100; i++) {
+ QFuture<void> future;
+ futures.append(future);
+ synchronizer.addFuture(future);
+ }
+
+ QCOMPARE(futures, synchronizer.futures());
+}
+
+void tst_QFutureSynchronizer::setFuture()
+{
+ QFutureSynchronizer<void> synchronizer;
+
+ for (int i=0; i<100; i++) {
+ synchronizer.addFuture(QFuture<void>());
+ }
+ QCOMPARE(synchronizer.futures().size(), 100);
+
+ QFuture<void> future;
+ synchronizer.setFuture(future);
+ QCOMPARE(synchronizer.futures().size(), 1);
+ QCOMPARE(synchronizer.futures().first(), future);
+}
+
+void tst_QFutureSynchronizer::waitForFinished()
+{
+ QFutureSynchronizer<void> synchronizer;
+
+ for (int i=0; i<100; i++) {
+ synchronizer.addFuture(QFuture<void>());
+ }
+ synchronizer.waitForFinished();
+ const QList<QFuture<void> > futures = synchronizer.futures();
+
+ for (int i=0; i<100; i++) {
+ QVERIFY(futures.at(i).isFinished());
+ }
+}
+
+QTEST_MAIN(tst_QFutureSynchronizer)
+
+#include "tst_qfuturesynchronizer.moc"
diff --git a/tests/auto/corelib/concurrent/qfuturewatcher/.gitignore b/tests/auto/corelib/concurrent/qfuturewatcher/.gitignore
new file mode 100644
index 0000000000..1d778431c5
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qfuturewatcher/.gitignore
@@ -0,0 +1 @@
+tst_qfuturewatcher
diff --git a/tests/auto/corelib/concurrent/qfuturewatcher/qfuturewatcher.pro b/tests/auto/corelib/concurrent/qfuturewatcher/qfuturewatcher.pro
new file mode 100644
index 0000000000..9de37d014f
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qfuturewatcher/qfuturewatcher.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qfuturewatcher.cpp
+QT = core core-private
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp b/tests/auto/corelib/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp
new file mode 100644
index 0000000000..d8fa2230f3
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp
@@ -0,0 +1,930 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDebug>
+#include <QtTest/QtTest>
+
+#include <qfuture.h>
+#include "../qfuture/versioncheck.h"
+#include <qfuturewatcher.h>
+#include <qtconcurrentrun.h>
+#include <qtconcurrentmap.h>
+#include "../../../../shared/util.h"
+
+#ifndef QT_NO_CONCURRENT_TEST
+#include <private/qfutureinterface_p.h>
+
+using namespace QtConcurrent;
+
+#include <QtTest/QtTest>
+
+//#define PRINT
+
+class tst_QFutureWatcher: public QObject
+{
+ Q_OBJECT
+private slots:
+ void startFinish();
+ void progressValueChanged();
+ void canceled();
+ void resultAt();
+ void resultReadyAt();
+ void futureSignals();
+ void watchFinishedFuture();
+ void watchCanceledFuture();
+ void disconnectRunningFuture();
+ void toMuchProgress();
+ void progressText();
+ void sharedFutureInterface();
+ void changeFuture();
+ void cancelEvents();
+ void pauseEvents();
+ void finishedState();
+ void throttling();
+ void incrementalMapResults();
+ void incrementalFilterResults();
+ void qfutureSynchornizer();
+ void warnRace();
+};
+
+QTEST_MAIN(tst_QFutureWatcher)
+
+void sleeper()
+{
+ QTest::qSleep(100);
+}
+
+void tst_QFutureWatcher::startFinish()
+{
+ QFutureWatcher<void> futureWatcher;
+
+ QSignalSpy started(&futureWatcher, SIGNAL(started()));
+ QSignalSpy finished(&futureWatcher, SIGNAL(finished()));
+
+ futureWatcher.setFuture(QtConcurrent::run(sleeper));
+ QTest::qWait(10); // spin the event loop to deliver queued signals.
+ QCOMPARE(started.count(), 1);
+ QCOMPARE(finished.count(), 0);
+ futureWatcher.future().waitForFinished();
+ QTest::qWait(10);
+ QCOMPARE(started.count(), 1);
+ QCOMPARE(finished.count(), 1);
+}
+
+void mapSleeper(int &)
+{
+ QTest::qSleep(100);
+}
+
+QSet<int> progressValues;
+QSet<QString> progressTexts;
+QMutex mutex;
+class ProgressObject : public QObject
+{
+Q_OBJECT
+public slots:
+ void printProgress(int);
+ void printText(const QString &text);
+ void registerProgress(int);
+ void registerText(const QString &text);
+};
+
+void ProgressObject::printProgress(int progress)
+{
+ qDebug() << "thread" << QThread::currentThread() << "reports progress" << progress;
+}
+
+void ProgressObject::printText(const QString &text)
+{
+ qDebug() << "thread" << QThread::currentThread() << "reports progress text" << text;
+}
+
+void ProgressObject::registerProgress(int progress)
+{
+ QTest::qSleep(1);
+ progressValues.insert(progress);
+}
+
+void ProgressObject::registerText(const QString &text)
+{
+ QTest::qSleep(1);
+ progressTexts.insert(text);
+}
+
+
+QList<int> createList(int listSize)
+{
+ QList<int> list;
+ for (int i = 0; i < listSize; ++i) {
+ list.append(i);
+ }
+ return list;
+}
+
+void tst_QFutureWatcher::progressValueChanged()
+{
+#ifdef PRINT
+ qDebug() << "main thread" << QThread::currentThread();
+#endif
+
+ progressValues.clear();
+ const int listSize = 20;
+ QList<int> list = createList(listSize);
+
+ QFutureWatcher<void> futureWatcher;
+ ProgressObject progressObject;
+ QObject::connect(&futureWatcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+#ifdef PRINT
+ QObject::connect(&futureWatcher, SIGNAL(progressValueChanged(int)), &progressObject, SLOT(printProgress(int)), Qt::DirectConnection );
+#endif
+ QObject::connect(&futureWatcher, SIGNAL(progressValueChanged(int)), &progressObject, SLOT(registerProgress(int)));
+
+ futureWatcher.setFuture(QtConcurrent::map(list, mapSleeper));
+
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ futureWatcher.disconnect();
+ QVERIFY(progressValues.contains(0));
+ QVERIFY(progressValues.contains(listSize));
+}
+
+class CancelObject : public QObject
+{
+Q_OBJECT
+public:
+ bool wasCanceled;
+ CancelObject() : wasCanceled(false) {};
+public slots:
+ void cancel();
+};
+
+void CancelObject::cancel()
+{
+#ifdef PRINT
+ qDebug() << "thread" << QThread::currentThread() << "reports canceled";
+#endif
+ wasCanceled = true;
+}
+
+void tst_QFutureWatcher::canceled()
+{
+ const int listSize = 20;
+ QList<int> list = createList(listSize);
+
+ QFutureWatcher<void> futureWatcher;
+ QFuture<void> future;
+ CancelObject cancelObject;
+
+ QObject::connect(&futureWatcher, SIGNAL(canceled()), &cancelObject, SLOT(cancel()));
+ QObject::connect(&futureWatcher, SIGNAL(canceled()),
+ &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+
+ future = QtConcurrent::map(list, mapSleeper);
+ futureWatcher.setFuture(future);
+ futureWatcher.cancel();
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QVERIFY(future.isCanceled());
+ QVERIFY(cancelObject.wasCanceled);
+ futureWatcher.disconnect();
+ future.waitForFinished();
+}
+
+class IntTask : public RunFunctionTask<int>
+{
+public:
+ void runFunctor()
+ {
+ result = 10;
+ }
+};
+
+void tst_QFutureWatcher::resultAt()
+{
+ QFutureWatcher<int> futureWatcher;
+ futureWatcher.setFuture((new IntTask())->start());
+ futureWatcher.waitForFinished();
+ QCOMPARE(futureWatcher.result(), 10);
+ QCOMPARE(futureWatcher.resultAt(0), 10);
+}
+
+void tst_QFutureWatcher::resultReadyAt()
+{
+ QFutureWatcher<int> futureWatcher;
+ QObject::connect(&futureWatcher, SIGNAL(resultReadyAt(int)), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+
+ QFuture<int> future = (new IntTask())->start();
+ futureWatcher.setFuture(future);
+
+ QTestEventLoop::instance().enterLoop(1);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ // Setting the future again should give us another signal.
+ // (this is to prevent the race where the task associated
+ // with the future finishes before setFuture is called.)
+ futureWatcher.setFuture(QFuture<int>());
+ futureWatcher.setFuture(future);
+
+ QTestEventLoop::instance().enterLoop(1);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+}
+
+class SignalSlotObject : public QObject
+{
+Q_OBJECT
+
+signals:
+ void cancel();
+
+public slots:
+ void started()
+ {
+ qDebug() << "started called";
+ }
+
+ void finished()
+ {
+ qDebug() << "finished called";
+ }
+
+ void canceled()
+ {
+ qDebug() << "canceled called";
+ }
+
+#ifdef PRINT
+ void resultReadyAt(int index)
+ {
+ qDebug() << "result" << index << "ready";
+ }
+#else
+ void resultReadyAt(int) { }
+#endif
+ void progressValueChanged(int progress)
+ {
+ qDebug() << "progress" << progress;
+ }
+
+ void progressRangeChanged(int min, int max)
+ {
+ qDebug() << "progress range" << min << max;
+ }
+
+};
+
+void tst_QFutureWatcher::futureSignals()
+{
+ {
+ QFutureInterface<int> a;
+ QFutureWatcher<int> f;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&f, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&f, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+#endif
+ // must connect to resultReadyAt so that the watcher can detect the connection
+ // (QSignalSpy does not trigger it.)
+ connect(&f, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ a.reportStarted();
+ f.setFuture(a.future());
+
+ QSignalSpy progressSpy(&f, SIGNAL(progressValueChanged(int)));
+ const int progress = 1;
+ a.setProgressValue(progress);
+ QTest::qWait(10);
+ QCOMPARE(progressSpy.count(), 2);
+ QCOMPARE(progressSpy.takeFirst().at(0).toInt(), 0);
+ QCOMPARE(progressSpy.takeFirst().at(0).toInt(), 1);
+
+ QSignalSpy finishedSpy(&f, SIGNAL(finished()));
+ QSignalSpy resultReadySpy(&f, SIGNAL(resultReadyAt(int)));
+
+ const int result = 10;
+ a.reportResult(&result);
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 1);
+ a.reportFinished(&result);
+ QTest::qWait(10);
+
+ QCOMPARE(resultReadySpy.count(), 2);
+ QCOMPARE(resultReadySpy.takeFirst().at(0).toInt(), 0); // check the index
+ QCOMPARE(resultReadySpy.takeFirst().at(0).toInt(), 1);
+
+ QCOMPARE(finishedSpy.count(), 1);
+ }
+}
+
+void tst_QFutureWatcher::watchFinishedFuture()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> f = iface.future();
+
+ int value = 100;
+ iface.reportFinished(&value);
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&watcher, SIGNAL(started()), &object, SLOT(started()));
+ connect(&watcher, SIGNAL(canceled()), &object, SLOT(canceled()));
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+ connect(&watcher, SIGNAL(progressRangeChanged(int, int)), &object, SLOT(progressRangeChanged(int, int)));
+#endif
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+
+ QSignalSpy startedSpy(&watcher, SIGNAL(started()));
+ QSignalSpy finishedSpy(&watcher, SIGNAL(finished()));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+ QSignalSpy canceledSpy(&watcher, SIGNAL(canceled()));
+
+ watcher.setFuture(f);
+ QTest::qWait(10);
+
+ QCOMPARE(startedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(resultReadySpy.count(), 1);
+ QCOMPARE(canceledSpy.count(), 0);
+}
+
+void tst_QFutureWatcher::watchCanceledFuture()
+{
+ QFuture<int> f;
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&watcher, SIGNAL(started()), &object, SLOT(started()));
+ connect(&watcher, SIGNAL(canceled()), &object, SLOT(canceled()));
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+ connect(&watcher, SIGNAL(progressRangeChanged(int, int)), &object, SLOT(progressRangeChanged(int, int)));
+#endif
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+
+ QSignalSpy startedSpy(&watcher, SIGNAL(started()));
+ QSignalSpy finishedSpy(&watcher, SIGNAL(finished()));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+ QSignalSpy canceledSpy(&watcher, SIGNAL(canceled()));
+
+ watcher.setFuture(f);
+ QTest::qWait(10);
+
+ QCOMPARE(startedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(resultReadySpy.count(), 0);
+ QCOMPARE(canceledSpy.count(), 1);
+}
+
+void tst_QFutureWatcher::disconnectRunningFuture()
+{
+ QFutureInterface<int> a;
+ a.reportStarted();
+
+ QFuture<int> f = a.future();
+ QFutureWatcher<int> *watcher = new QFutureWatcher<int>();
+ watcher->setFuture(f);
+
+ SignalSlotObject object;
+ connect(watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+
+ QSignalSpy finishedSpy(watcher, SIGNAL(finished()));
+ QSignalSpy resultReadySpy(watcher, SIGNAL(resultReadyAt(int)));
+
+ const int result = 10;
+ a.reportResult(&result);
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 1);
+
+ delete watcher;
+
+ a.reportResult(&result);
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 1);
+
+ a.reportFinished(&result);
+ QTest::qWait(10);
+ QCOMPARE(finishedSpy.count(), 0);
+}
+
+const int maxProgress = 100000;
+class ProgressEmitterTask : public RunFunctionTask<void>
+{
+public:
+ void runFunctor()
+ {
+ setProgressRange(0, maxProgress);
+ for (int p = 0; p <= maxProgress; ++p)
+ setProgressValue(p);
+ }
+};
+
+void tst_QFutureWatcher::toMuchProgress()
+{
+ progressValues.clear();
+ ProgressObject o;
+
+ QFutureWatcher<void> f;
+ QObject::connect(&f, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+#ifdef PRINT
+ QObject::connect(&f, SIGNAL(progressValueChanged(int)), &o, SLOT(printProgress(int)));
+#endif
+ QObject::connect(&f, SIGNAL(progressValueChanged(int)), &o, SLOT(registerProgress(int)));
+ f.setFuture((new ProgressEmitterTask())->start());
+
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(progressValues.contains(maxProgress));
+}
+
+template <typename T>
+class ProgressTextTask : public RunFunctionTask<T>
+{
+public:
+ void runFunctor()
+ {
+ this->setProgressValueAndText(1, QLatin1String("Foo 1"));
+
+ while (this->isProgressUpdateNeeded() == false)
+ QTest::qSleep(1);
+ this->setProgressValueAndText(2, QLatin1String("Foo 2"));
+
+ while (this->isProgressUpdateNeeded() == false)
+ QTest::qSleep(1);
+ this->setProgressValueAndText(3, QLatin1String("Foo 3"));
+
+ while (this->isProgressUpdateNeeded() == false)
+ QTest::qSleep(1);
+ this->setProgressValueAndText(4, QLatin1String("Foo 4"));
+ }
+};
+
+void tst_QFutureWatcher::progressText()
+{
+ { // instantiate API for T=int and T=void.
+ ProgressTextTask<int> a;
+ ProgressTextTask<void> b;
+ }
+ {
+ progressValues.clear();
+ progressTexts.clear();
+ QFuture<int> f = ((new ProgressTextTask<int>())->start());
+ QFutureWatcher<int> watcher;
+ ProgressObject o;
+ QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+#ifdef PRINT
+ QObject::connect(&watcher, SIGNAL(progressValueChanged(int)), &o, SLOT(printProgress(int)));
+ QObject::connect(&watcher, SIGNAL(progressTextChanged(const QString &)), &o, SLOT(printText(const QString &)));
+#endif
+ QObject::connect(&watcher, SIGNAL(progressValueChanged(int)), &o, SLOT(registerProgress(int)));
+ QObject::connect(&watcher, SIGNAL(progressTextChanged(const QString &)), &o, SLOT(registerText(const QString &)));
+
+ watcher.setFuture(f);
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(f.progressText(), QLatin1String("Foo 4"));
+ QCOMPARE(f.progressValue(), 4);
+ QVERIFY(progressValues.contains(1));
+ QVERIFY(progressValues.contains(2));
+ QVERIFY(progressValues.contains(3));
+ QVERIFY(progressValues.contains(4));
+ QVERIFY(progressTexts.contains(QLatin1String("Foo 1")));
+ QVERIFY(progressTexts.contains(QLatin1String("Foo 2")));
+ QVERIFY(progressTexts.contains(QLatin1String("Foo 3")));
+ QVERIFY(progressTexts.contains(QLatin1String("Foo 4")));
+ }
+}
+
+template <typename T>
+void callInterface(T &obj)
+{
+ obj.progressValue();
+ obj.progressMinimum();
+ obj.progressMaximum();
+ obj.progressText();
+
+ obj.isStarted();
+ obj.isFinished();
+ obj.isRunning();
+ obj.isCanceled();
+ obj.isPaused();
+
+ obj.cancel();
+ obj.pause();
+ obj.resume();
+ obj.togglePaused();
+ obj.waitForFinished();
+
+ const T& objConst = obj;
+ objConst.progressValue();
+ objConst.progressMinimum();
+ objConst.progressMaximum();
+ objConst.progressText();
+
+ objConst.isStarted();
+ objConst.isFinished();
+ objConst.isRunning();
+ objConst.isCanceled();
+ objConst.isPaused();
+}
+
+template <typename T>
+void callInterface(const T &obj)
+{
+ obj.result();
+ obj.resultAt(0);
+}
+
+
+// QFutureWatcher and QFuture has a similar interface. Test
+// that the functions we want ot have in both are actually
+// there.
+void tst_QFutureWatcher::sharedFutureInterface()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> intFuture = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFuture<void> voidFuture;
+ QFutureWatcher<int> intWatcher;
+ intWatcher.setFuture(intFuture);
+ QFutureWatcher<void> voidWatcher;
+
+ callInterface(intFuture);
+ callInterface(voidFuture);
+ callInterface(intWatcher);
+ callInterface(voidWatcher);
+
+ callInterface(intFuture);
+ callInterface(intWatcher);
+}
+
+void tst_QFutureWatcher::changeFuture()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> a = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFuture<int> b;
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+
+ watcher.setFuture(a); // Watch 'a' which will genere a resultReady event.
+ watcher.setFuture(b); // But oh no! we're switching to another future
+ QTest::qWait(10); // before the event gets delivered.
+
+ QCOMPARE(resultReadySpy.count(), 0);
+
+ watcher.setFuture(a);
+ watcher.setFuture(b);
+ watcher.setFuture(a); // setting it back gets us one event, not two.
+ QTest::qWait(10);
+
+ QCOMPARE(resultReadySpy.count(), 1);
+}
+
+// Test that events aren't delivered from canceled futures
+void tst_QFutureWatcher::cancelEvents()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> a = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+
+ watcher.setFuture(a);
+ watcher.cancel();
+
+ QTest::qWait(10);
+
+ QCOMPARE(resultReadySpy.count(), 0);
+}
+
+// Tests that events from paused futures are saved and
+// delivered on resume.
+void tst_QFutureWatcher::pauseEvents()
+{
+ {
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> a = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+
+ watcher.setFuture(a);
+ watcher.pause();
+
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 0);
+
+ watcher.resume();
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 1);
+ }
+ {
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> a = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+
+ watcher.setFuture(a);
+ a.pause();
+
+ QFuture<int> b;
+ watcher.setFuture(b); // If we watch b instead, resuming a
+ a.resume(); // should give us no results.
+
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 0);
+ }
+}
+
+// Test that the finished state for the watcher gets
+// set when the finished event is delivered.
+// This means it will lag the finished state for the future,
+// but makes it more useful.
+void tst_QFutureWatcher::finishedState()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+ QFuture<int> future = iface.future();
+ QFutureWatcher<int> watcher;
+
+ watcher.setFuture(future);
+ QTest::qWait(10);
+
+ iface.reportFinished();
+ QVERIFY(future.isFinished());
+ QVERIFY(watcher.isFinished() == false);
+
+ QTest::qWait(10);
+ QVERIFY(watcher.isFinished());
+}
+
+/*
+ Verify that throttling kicks in if you report a lot of results,
+ and that it clears when the result events are processed.
+*/
+void tst_QFutureWatcher::throttling()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+ QFuture<int> future = iface.future();
+ QFutureWatcher<int> watcher;
+ watcher.setFuture(future);
+
+ QVERIFY(iface.isThrottled() == false);
+
+ for (int i = 0; i < 1000; ++i) {
+ int result = 0;
+ iface.reportResult(result);
+ }
+
+ QVERIFY(iface.isThrottled() == true);
+
+ QTest::qWait(100); // process events.
+
+ QVERIFY(iface.isThrottled() == false);
+
+ iface.reportFinished();
+}
+
+int mapper(const int &i)
+{
+ return i;
+}
+
+class ResultReadyTester : public QObject
+{
+Q_OBJECT
+public:
+ ResultReadyTester(QFutureWatcher<int> *watcher)
+ :m_watcher(watcher), filter(false), ok(true), count(0)
+ {
+
+ }
+public slots:
+ void resultReadyAt(int index)
+ {
+ ++count;
+ if (m_watcher->future().isResultReadyAt(index) == false)
+ ok = false;
+ if (!filter && m_watcher->future().resultAt(index) != index)
+ ok = false;
+ if (filter && m_watcher->future().resultAt(index) != index * 2 + 1)
+ ok = false;
+ }
+public:
+ QFutureWatcher<int> *m_watcher;
+ bool filter;
+ bool ok;
+ int count;
+};
+
+void tst_QFutureWatcher::incrementalMapResults()
+{
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+#endif
+
+ QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ ResultReadyTester resultReadyTester(&watcher);
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &resultReadyTester, SLOT(resultReadyAt(int)));
+
+ const int count = 10000;
+ QList<int> ints;
+ for (int i = 0; i < count; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::mapped(ints, mapper);
+ watcher.setFuture(future);
+
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(resultReadyTester.count, count);
+ QVERIFY(resultReadyTester.ok);
+ QVERIFY(watcher.isFinished());
+ future.waitForFinished();
+}
+
+bool filterer(int i)
+{
+ return (i % 2);
+}
+
+void tst_QFutureWatcher::incrementalFilterResults()
+{
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+#endif
+
+ QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+
+ ResultReadyTester resultReadyTester(&watcher);
+ resultReadyTester.filter = true;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &resultReadyTester, SLOT(resultReadyAt(int)));
+
+ const int count = 10000;
+ QList<int> ints;
+ for (int i = 0; i < count; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::filtered(ints, filterer);
+ watcher.setFuture(future);
+
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(resultReadyTester.count, count / 2);
+ QVERIFY(resultReadyTester.ok);
+ QVERIFY(watcher.isFinished());
+ future.waitForFinished();
+}
+
+void tst_QFutureWatcher::qfutureSynchornizer()
+{
+ int taskCount = 1000;
+ QTime t;
+ t.start();
+
+ {
+ QFutureSynchronizer<void> sync;
+
+ sync.setCancelOnWait(true);
+ for (int i = 0; i < taskCount; ++i) {
+ sync.addFuture(run(sleeper));
+ }
+ }
+
+ // Test that we're not running each task.
+ QVERIFY(t.elapsed() < taskCount * 10);
+}
+
+class DummyObject : public QObject {
+ Q_OBJECT
+public slots:
+ void dummySlot() {}
+public:
+ static void function(QMutex *m)
+ {
+ QMutexLocker lock(m);
+ }
+};
+
+void tst_QFutureWatcher::warnRace()
+{
+#ifndef Q_OS_MAC //I don't know why it is not working on mac
+#ifndef QT_NO_DEBUG
+ QTest::ignoreMessage(QtWarningMsg, "QFutureWatcher::connect: connecting after calling setFuture() is likely to produce race");
+#endif
+#endif
+ QFutureWatcher<void> watcher;
+ DummyObject object;
+ QMutex mutex;
+ mutex.lock();
+
+ QFuture<void> future = QtConcurrent::run(DummyObject::function, &mutex);
+ watcher.setFuture(future);
+ QTRY_VERIFY(future.isStarted());
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(dummySlot()));
+ mutex.unlock();
+ future.waitForFinished();
+}
+
+#include "tst_qfuturewatcher.moc"
+
+#else
+QTEST_NOOP_MAIN
+#endif
diff --git a/tests/auto/corelib/concurrent/qtconcurrentfilter/.gitignore b/tests/auto/corelib/concurrent/qtconcurrentfilter/.gitignore
new file mode 100644
index 0000000000..f93d27e009
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentfilter/.gitignore
@@ -0,0 +1 @@
+tst_qtconcurrentfilter
diff --git a/tests/auto/corelib/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro b/tests/auto/corelib/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro
new file mode 100644
index 0000000000..62d4908e69
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+DEFINES += QT_STRICT_ITERATORS
+SOURCES += tst_qtconcurrentfilter.cpp
+QT = core
+CONFIG += parallel_test
+linux*:CONFIG += insignificant_test
diff --git a/tests/auto/corelib/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp b/tests/auto/corelib/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp
new file mode 100644
index 0000000000..970784c5d3
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp
@@ -0,0 +1,1548 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtconcurrentfilter.h>
+#include <QCoreApplication>
+#include <QList>
+#include <QLinkedList>
+#include <QtTest/QtTest>
+
+#include "../qtconcurrentmap/functions.h"
+#include "../qfuture/versioncheck.h"
+
+class tst_QtConcurrentFilter : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void filter();
+ void filtered();
+ void filteredReduced();
+ void resultAt();
+ void incrementalResults();
+ void noDetatch();
+ void stlContainers();
+};
+
+#if !defined (QT_NO_CONCURRENT_TEST) && !defined(QT_NO_CONCURRENT_FILTER)
+
+void tst_QtConcurrentFilter::filter()
+{
+ // functor
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(list, KeepEvenIntegers()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(list, KeepEvenIntegers());
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(linkedList, KeepEvenIntegers()).waitForFinished();
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(linkedList, KeepEvenIntegers());
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(vector, KeepEvenIntegers()).waitForFinished();
+ QCOMPARE(vector, QVector<int>() << 2 << 4);
+ }
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(vector, KeepEvenIntegers());
+ QCOMPARE(vector, QVector<int>() << 2 << 4);
+ }
+
+
+ // function
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(list, keepEvenIntegers).waitForFinished();
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(list, keepEvenIntegers);
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(linkedList, keepEvenIntegers).waitForFinished();
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(linkedList, keepEvenIntegers);
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+
+ // bound function
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(list, keepEvenIntegers).waitForFinished();
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(list, keepEvenIntegers);
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(linkedList, keepEvenIntegers).waitForFinished();
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(linkedList, keepEvenIntegers);
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+
+ // member
+ {
+ QList<Number> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(list, &Number::isEven).waitForFinished();
+ QCOMPARE(list, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(list, &Number::isEven);
+ QCOMPARE(list, QList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(linkedList, &Number::isEven).waitForFinished();
+ QCOMPARE(linkedList, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(linkedList, &Number::isEven);
+ QCOMPARE(linkedList, QLinkedList<Number>() << 2 << 4);
+ }
+}
+
+void tst_QtConcurrentFilter::filtered()
+{
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+
+ // functor
+ {
+ QFuture<int> f = QtConcurrent::filtered(list, KeepEvenIntegers());
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), KeepEvenIntegers());
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers());
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered(list, KeepEvenIntegers());
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
+ list.end(),
+ KeepEvenIntegers());
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers());
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ QVector<int> vector2 = QtConcurrent::blockingFiltered(vector, KeepEvenIntegers());
+ QCOMPARE(vector2, QVector<int>() << 2 << 4);
+ }
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ QFuture<int> f = QtConcurrent::filtered(vector, KeepEvenIntegers());
+ QCOMPARE(f.results(), QList<int>() << 2 << 4);
+ }
+
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, KeepEvenIntegers());
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QFuture<int> f = QtConcurrent::filtered(linkedList, KeepEvenIntegers());
+ QCOMPARE(f.results(), QList<int>() << 2 << 4);
+ }
+
+ // function
+ {
+ QFuture<int> f = QtConcurrent::filtered(list, keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered(list, keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
+ list.end(),
+ keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ // bound function
+ {
+ QFuture<int> f = QtConcurrent::filtered(list, keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered(list, keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
+ list.end(),
+ keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ // const member function
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers, &Number::isEven);
+ QList<Number> list2 = f.results();
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers.begin(),
+ integers.end(),
+ &Number::isEven);
+ QList<Number> list2 = f.results();
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers.constBegin(),
+ integers.constEnd(),
+ &Number::isEven);
+ QList<Number> list2 = f.results();
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFiltered(integers, &Number::isEven);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFiltered<QList<Number> >(integers.begin(),
+ integers.end(),
+ &Number::isEven);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QList<Number> list2 =
+ QtConcurrent::blockingFiltered<QList<Number> >(integers.constBegin(),
+ integers.constEnd(),
+ &Number::isEven);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+
+ // same thing on linked lists
+
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+
+ // functor
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList, KeepEvenIntegers());
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers());
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers());
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, KeepEvenIntegers());
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers());
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers());
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // function
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList, keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // bound function
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList, keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // const member function
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers, &Number::isEven);
+ QList<Number> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers.begin(),
+ integers.end(),
+ &Number::isEven);
+ QList<Number> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers.constBegin(),
+ integers.constEnd(),
+ &Number::isEven);
+ QList<Number> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFiltered(integers, &Number::isEven);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<Number> >(integers.begin(),
+ integers.end(),
+ &Number::isEven);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 =
+ QtConcurrent::blockingFiltered<QLinkedList<Number> >(integers.constBegin(),
+ integers.constEnd(),
+ &Number::isEven);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+}
+
+void tst_QtConcurrentFilter::filteredReduced()
+{
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3 << 4;
+
+ // functor-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(list, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ int sum = QtConcurrent::filteredReduced<int>(vector, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(list, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+
+ // function-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list, keepEvenIntegers, IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list, keepEvenIntegers, IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ // functor-function
+ {
+ int sum = QtConcurrent::filteredReduced(list, KeepEvenIntegers(), intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list, KeepEvenIntegers(), intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // function-function
+ {
+ int sum = QtConcurrent::filteredReduced(list, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // functor-member
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list, KeepEvenIntegers(), &QList<int>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list, KeepEvenIntegers(), &QList<int>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ // member-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberList, &Number::isEven, NumberSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(QList<Number>(numberList),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberList.begin(),
+ numberList.end(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberList, &Number::isEven, NumberSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(QList<Number>(numberList),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberList.begin(),
+ numberList.end(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ // member-member
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::filteredReduced(numbers,
+ &Number::isEven,
+ &QList<Number>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::filteredReduced(numbers.begin(),
+ numbers.end(),
+ &Number::isEven,
+ &QList<Number>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::filteredReduced(numbers.constBegin(),
+ numbers.constEnd(),
+ &Number::isEven,
+ &QList<Number>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers,
+ &Number::isEven,
+ &QList<Number>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers.begin(),
+ numbers.end(),
+ &Number::isEven,
+ &QList<Number>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers.constBegin(),
+ numbers.constEnd(),
+ &Number::isEven,
+ &QList<Number>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+
+ // function-member
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list, keepEvenIntegers, &QList<int>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list, keepEvenIntegers, &QList<int>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ // member-function
+ {
+ int sum = QtConcurrent::filteredReduced(numberList, &Number::isEven, numberSumReduce);
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced(QList<Number>(numberList),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(numberList.begin(),
+ numberList.end(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberList, &Number::isEven, numberSumReduce);
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced(QList<Number>(numberList),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberList.begin(),
+ numberList.end(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // same as above on linked lists
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3 << 4;
+
+ // functor-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(linkedList, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+
+ // function-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList, keepEvenIntegers, IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList, keepEvenIntegers, IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ // functor-function
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList, KeepEvenIntegers(), intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList, KeepEvenIntegers(), intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // function-function
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // functor-member
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList, KeepEvenIntegers(), &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList, KeepEvenIntegers(), &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // member-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberLinkedList, &Number::isEven, NumberSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(QLinkedList<Number>(numberLinkedList),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberLinkedList.begin(),
+ numberLinkedList.end(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList, &Number::isEven, NumberSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(QLinkedList<Number>(numberLinkedList),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList.begin(),
+ numberLinkedList.end(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ // member-member
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers,
+ &Number::isEven,
+ &QLinkedList<Number>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers.begin(),
+ numbers.end(),
+ &Number::isEven,
+ &QLinkedList<Number>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers.constBegin(),
+ numbers.constEnd(),
+ &Number::isEven,
+ &QLinkedList<Number>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers,
+ &Number::isEven,
+ &QLinkedList<Number>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers.begin(),
+ numbers.end(),
+ &Number::isEven,
+ &QLinkedList<Number>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers.constBegin(),
+ numbers.constEnd(),
+ &Number::isEven,
+ &QLinkedList<Number>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+
+ // function-member
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList, keepEvenIntegers, &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList, keepEvenIntegers, &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // member-function
+ {
+ int sum = QtConcurrent::filteredReduced(numberLinkedList, &Number::isEven, numberSumReduce);
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(numberLinkedList.begin(),
+ numberLinkedList.end(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList, &Number::isEven, numberSumReduce);
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList.begin(),
+ numberLinkedList.end(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // ### the same as above, with an initial result value
+}
+
+bool filterfn(int i)
+{
+ return (i % 2);
+}
+
+void tst_QtConcurrentFilter::resultAt()
+{
+
+ QList<int> ints;
+ for (int i=0; i < 1000; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::filtered(ints, filterfn);
+ future.waitForFinished();
+
+
+ for (int i = 0; i < future.resultCount(); ++i) {
+ QCOMPARE(future.resultAt(i), ints.at(i * 2 + 1));
+ }
+
+}
+
+bool waitFilterfn(const int &i)
+{
+ QTest::qWait(1);
+ return (i % 2);
+}
+
+void tst_QtConcurrentFilter::incrementalResults()
+{
+ const int count = 200;
+ QList<int> ints;
+ for (int i=0; i < count; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::filtered(ints, waitFilterfn);
+
+ QList<int> results;
+
+ while (future.isFinished() == false) {
+ for (int i = 0; i < future.resultCount(); ++i) {
+ results += future.resultAt(i);
+ }
+ QTest::qWait(1);
+ }
+
+ QCOMPARE(future.isFinished(), true);
+ QCOMPARE(future.resultCount(), count / 2);
+ QCOMPARE(future.results().count(), count / 2);
+}
+
+void tst_QtConcurrentFilter::noDetatch()
+{
+ {
+ QList<int> l = QList<int>() << 1;
+ QVERIFY(l.isDetached());
+
+ QList<int> ll = l;
+ QVERIFY(l.isDetached() == false);
+
+ QtConcurrent::filtered(l, waitFilterfn).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::blockingFiltered(l, waitFilterfn);
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::filteredReduced(l, waitFilterfn, intSumReduce).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::filter(l, waitFilterfn).waitForFinished();
+ QVERIFY(l.isDetached() == true);
+ QVERIFY(ll.isDetached() == true);
+ }
+ {
+ const QList<int> l = QList<int>() << 1;
+ QVERIFY(l.isDetached());
+
+ const QList<int> ll = l;
+ QVERIFY(l.isDetached() == false);
+
+ QtConcurrent::filtered(l, waitFilterfn).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::filteredReduced(l, waitFilterfn, intSumReduce).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+ }
+}
+
+void tst_QtConcurrentFilter::stlContainers()
+{
+#if defined(QT_NO_STL)
+ QSKIP("Qt compiled without STL support", SkipAll);
+#elif defined(_MSC_VER) && _MSC_VER >= 1600
+ QSKIP("Test does not compile with MSVC 2010 (see QTBUG-18996)", SkipAll);
+#else
+ std::vector<int> vector;
+ vector.push_back(1);
+ vector.push_back(2);
+
+ std::vector<int> vector2 = QtConcurrent::blockingFiltered(vector, waitFilterfn);
+ QCOMPARE(vector2.size(), (std::vector<int>::size_type)(1));
+ QCOMPARE(vector2[0], 1);
+
+ std::list<int> list;
+ list.push_back(1);
+ list.push_back(2);
+
+ std::list<int> list2 = QtConcurrent::blockingFiltered(list, waitFilterfn);
+ QCOMPARE(list2.size(), (std::list<int>::size_type)(1));
+ QCOMPARE(*list2.begin(), 1);
+
+ QtConcurrent::filtered(list, waitFilterfn).waitForFinished();
+ QtConcurrent::filtered(vector, waitFilterfn).waitForFinished();
+ QtConcurrent::filtered(vector.begin(), vector.end(), waitFilterfn).waitForFinished();
+
+ QtConcurrent::blockingFilter(list, waitFilterfn);
+ QCOMPARE(list2.size(), (std::list<int>::size_type)(1));
+ QCOMPARE(*list2.begin(), 1);
+#endif
+}
+
+QTEST_MAIN(tst_QtConcurrentFilter)
+
+#else
+
+void tst_QtConcurrentFilter::filter() {}
+void tst_QtConcurrentFilter::filtered() {}
+void tst_QtConcurrentFilter::filteredReduced() {}
+void tst_QtConcurrentFilter::resultAt() {}
+void tst_QtConcurrentFilter::incrementalResults() {}
+void tst_QtConcurrentFilter::stlContainers() {}
+void tst_QtConcurrentFilter::noDetatch() {}
+
+QTEST_NOOP_MAIN
+#endif
+
+#include "tst_qtconcurrentfilter.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/.gitignore b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/.gitignore
new file mode 100644
index 0000000000..ac5dec4db6
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/.gitignore
@@ -0,0 +1 @@
+tst_qtconcurrentiteratekernel
diff --git a/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
new file mode 100644
index 0000000000..a61d275241
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qtconcurrentiteratekernel.cpp
+QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
new file mode 100644
index 0000000000..521c517d90
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
@@ -0,0 +1,360 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QThread>
+#include "../qfuture/versioncheck.h"
+
+struct TestIterator
+{
+ TestIterator(int i)
+ :i(i) { }
+
+ int operator-(const TestIterator &other)
+ {
+ return i - other.i;
+ }
+
+ TestIterator& operator++()
+ {
+ ++i;
+ return *this;
+ }
+
+ bool operator!=(const TestIterator &other) const
+ {
+ return i != other.i;
+ }
+
+ int i;
+};
+
+#include <qiterator.h>
+#ifndef QT_NO_STL
+namespace std {
+template <>
+struct iterator_traits<TestIterator>
+{
+ typedef random_access_iterator_tag iterator_category;
+};
+
+int distance(TestIterator &a, TestIterator &b)
+{
+ return b - a;
+}
+
+}
+#endif
+
+
+#include <qtconcurrentiteratekernel.h>
+#include <QtTest/QtTest>
+
+#ifndef QT_NO_CONCURRENT_TEST
+
+using namespace QtConcurrent;
+
+class tst_QtConcurrentIterateKernel: public QObject
+{
+ Q_OBJECT
+private slots:
+ // "for" iteration tests:
+ void instantiate();
+ void cancel();
+ void stresstest();
+ void noIterations();
+ void throttling();
+ void blockSize();
+ void multipleResults();
+#if 0
+ //"while" iterations tests:
+ void instantiateWhile();
+ void stresstestWhile();
+#endif
+};
+
+QAtomicInt iterations;
+class PrintFor : public IterateKernel<TestIterator, void>
+{
+public:
+ PrintFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) {iterations = 0; }
+ bool runIterations(TestIterator/*beginIterator*/, int begin, int end, void *)
+ {
+ iterations.fetchAndAddRelaxed(end - begin);
+#ifdef PRINT
+ qDebug() << QThread::currentThread() << "iteration" << begin << "to" << end << "(exclusive)";
+#endif
+ return false;
+ }
+ bool runIteration(TestIterator it, int index , void *result)
+ {
+ return runIterations(it, index, index + 1, result);
+ }
+
+};
+
+class SleepPrintFor : public IterateKernel<TestIterator, void>
+{
+public:
+ SleepPrintFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) {iterations = 0; }
+ inline bool runIterations(TestIterator/*beginIterator*/, int begin, int end, void *)
+ {
+ QTest::qSleep(200);
+ iterations.fetchAndAddRelaxed(end - begin);
+#ifdef PRINT
+ qDebug() << QThread::currentThread() << "iteration" << begin << "to" << end << "(exclusive)";
+#endif
+ return false;
+ }
+ bool runIteration(TestIterator it, int index , void *result)
+ {
+ return runIterations(it, index, index + 1, result);
+ }
+};
+
+
+void tst_QtConcurrentIterateKernel::instantiate()
+{
+ startThreadEngine(new PrintFor(0, 40)).startBlocking();
+ QCOMPARE((int)iterations, 40);
+}
+
+void tst_QtConcurrentIterateKernel::cancel()
+{
+ {
+ QFuture<void> f = startThreadEngine(new SleepPrintFor(0, 40)).startAsynchronously();
+ f.cancel();
+ f.waitForFinished();
+ QVERIFY(f.isCanceled());
+ QVERIFY(int(iterations) <= QThread::idealThreadCount()); // the threads might run one iteration each before they are canceled.
+ }
+}
+
+QAtomicInt counter;
+class CountFor : public IterateKernel<TestIterator, void>
+{
+public:
+ CountFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) {iterations = 0; }
+ inline bool runIterations(TestIterator/*beginIterator*/, int begin, int end, void *)
+ {
+ counter.fetchAndAddRelaxed(end - begin);
+ return false;
+ }
+ bool runIteration(TestIterator it, int index , void *result)
+ {
+ return runIterations(it, index, index + 1, result);
+ }
+};
+
+void tst_QtConcurrentIterateKernel::stresstest()
+{
+ const int iterations = 1000;
+ const int times = 50;
+ for (int i = 0; i < times; ++i) {
+ counter = 0;
+ CountFor f(0, iterations);
+ f.startBlocking();
+ QCOMPARE((int)counter, iterations);
+ }
+}
+
+void tst_QtConcurrentIterateKernel::noIterations()
+{
+ const int times = 20000;
+ for (int i = 0; i < times; ++i)
+ startThreadEngine(new IterateKernel<TestIterator, void>(0, 0)).startBlocking();
+}
+
+QMutex threadsMutex;
+QSet<QThread *> threads;
+class ThrottleFor : public IterateKernel<TestIterator, void>
+{
+public:
+ // this class throttles between iterations 100 and 200,
+ // and then records how many threads that run between
+ // iterations 140 and 160.
+ ThrottleFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) {iterations = 0; throttling = false; }
+ inline bool runIterations(TestIterator/*beginIterator*/, int begin, int end, void *)
+ {
+ if (200 >= begin && 200 < end) {
+ throttling = false;
+ }
+
+ iterations.fetchAndAddRelaxed(end - begin);
+
+ QThread *thread = QThread::currentThread();
+
+ if (begin > 140 && end < 160) {
+ QMutexLocker locker(&threadsMutex);
+ threads.insert(thread);
+ }
+
+ if (100 >= begin && 100 < end) {
+ throttling = true;
+ }
+
+ QTest::qWait(1);
+
+ return false;
+ }
+ bool runIteration(TestIterator it, int index , void *result)
+ {
+ return runIterations(it, index, index + 1, result);
+ }
+
+ bool shouldThrottleThread()
+ {
+ return (iterations > 100 && iterations < 200);
+ }
+ bool throttling;
+};
+
+void tst_QtConcurrentIterateKernel::throttling()
+{
+ const int totalIterations = 400;
+ iterations = 0;
+
+ threads.clear();
+
+ ThrottleFor f(0, totalIterations);
+ f.startBlocking();
+
+ QCOMPARE((int)iterations, totalIterations);
+
+
+ QCOMPARE(threads.count(), 1);
+}
+
+
+int peakBlockSize = 0;
+class BlockSizeRecorder : public IterateKernel<TestIterator, void>
+{
+public:
+ BlockSizeRecorder(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) { }
+ inline bool runIterations(TestIterator, int begin, int end, void *)
+ {
+ peakBlockSize = qMax(peakBlockSize, end - begin);
+ return false;
+ }
+};
+
+void tst_QtConcurrentIterateKernel::blockSize()
+{
+#ifdef QT_NO_STL
+ QSKIP("Missing stl iterators prevent correct block size calculation", SkipAll);
+#endif
+ const int expectedMinimumBlockSize = 1024 / QThread::idealThreadCount();
+ BlockSizeRecorder(0, 10000).startBlocking();
+ if (peakBlockSize < expectedMinimumBlockSize)
+ qDebug() << "block size" << peakBlockSize;
+ QVERIFY(peakBlockSize >= expectedMinimumBlockSize);
+}
+
+class MultipleResultsFor : public IterateKernel<TestIterator, int>
+{
+public:
+ MultipleResultsFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, int>(begin, end) { }
+ inline bool runIterations(TestIterator, int begin, int end, int *results)
+ {
+ for (int i = begin; i < end; ++i)
+ results[i - begin] = i;
+ return true;
+ }
+};
+
+
+void tst_QtConcurrentIterateKernel::multipleResults()
+{
+#ifdef QT_NO_STL
+ QSKIP("Missing stl iterators prevent correct summation", SkipAll);
+#endif
+ QFuture<int> f = startThreadEngine(new MultipleResultsFor(0, 10)).startAsynchronously();
+ QCOMPARE(f.results().count() , 10);
+ QCOMPARE(f.resultAt(0), 0);
+ QCOMPARE(f.resultAt(5), 5);
+ QCOMPARE(f.resultAt(9), 9);
+ f.waitForFinished();
+}
+
+#if 0
+class PrintWhile : public IterateKernel<TestIterator, void>
+{
+public:
+ PrintWhile() : IterateKernel<TestIterator, void>(0, 10, WhileIteration) { }
+ bool runIteration(TestIterator it, TestIterator, void *)
+ {
+ return false;
+ }
+};
+
+void tst_QtConcurrentIterateKernel::instantiateWhile()
+{
+ PrintWhile w;
+ w.startBlocking();
+}
+
+QAtomicInt iterationCount;
+class StressWhile : public IterateKernel<TestIterator, void>
+{
+public:
+ StressWhile(TestIterator iterations) : IterateKernel<TestIterator, void>(0, iterations, WhileIteration) { }
+ bool runIteration(TestIterator it, TestIterator index, void *)
+ {
+ if (it == index) // should match.
+ ::iterationCount.ref();
+ return false;
+ }
+};
+
+void tst_QtConcurrentIterateKernel::stresstestWhile()
+{
+ int iterations = 100000;
+ StressWhile w(iterations);
+ w.startBlocking();
+ QCOMPARE(int(iterationCount), iterations);
+}
+#endif
+
+QTEST_MAIN(tst_QtConcurrentIterateKernel)
+
+#include "tst_qtconcurrentiteratekernel.moc"
+
+#else
+QTEST_NOOP_MAIN
+#endif
diff --git a/tests/auto/corelib/concurrent/qtconcurrentmap/.gitignore b/tests/auto/corelib/concurrent/qtconcurrentmap/.gitignore
new file mode 100644
index 0000000000..f1c563e979
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentmap/.gitignore
@@ -0,0 +1 @@
+tst_qtconcurrentmap
diff --git a/tests/auto/corelib/concurrent/qtconcurrentmap/functions.h b/tests/auto/corelib/concurrent/qtconcurrentmap/functions.h
new file mode 100644
index 0000000000..a3dcd3c300
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentmap/functions.h
@@ -0,0 +1,130 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef FUNCTIONS_H
+#define FUNCTIONS_H
+
+bool keepEvenIntegers(const int &x)
+{
+ return (x & 1) == 0;
+}
+
+class KeepEvenIntegers
+{
+public:
+ bool operator()(const int &x)
+ {
+ return (x & 1) == 0;
+ }
+};
+
+class Number
+{
+ int n;
+
+public:
+ Number()
+ : n(0)
+ { }
+
+ Number(int n)
+ : n(n)
+ { }
+
+ void multiplyBy2()
+ {
+ n *= 2;
+ }
+
+ Number multipliedBy2() const
+ {
+ return n * 2;
+ }
+
+ bool isEven() const
+ {
+ return (n & 1) == 0;
+ }
+
+ int toInt() const
+ {
+ return n;
+ }
+
+ QString toString() const
+ {
+ return QString::number(n);
+ }
+
+ bool operator==(const Number &other) const
+ {
+ return n == other.n;
+ }
+};
+
+void intSumReduce(int &sum, int x)
+{
+ sum += x;
+}
+
+class IntSumReduce
+{
+public:
+ void operator()(int &sum, int x)
+ {
+ sum += x;
+ }
+};
+
+void numberSumReduce(int &sum, const Number &x)
+{
+ sum += x.toInt();
+}
+
+class NumberSumReduce
+{
+public:
+ void operator()(int &sum, const Number &x)
+ {
+ sum += x.toInt();
+ }
+};
+
+#endif
diff --git a/tests/auto/corelib/concurrent/qtconcurrentmap/qtconcurrentmap.pro b/tests/auto/corelib/concurrent/qtconcurrentmap/qtconcurrentmap.pro
new file mode 100644
index 0000000000..6fc358514e
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentmap/qtconcurrentmap.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+DEFINES += QT_STRICT_ITERATORS
+SOURCES += tst_qtconcurrentmap.cpp
+QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp b/tests/auto/corelib/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp
new file mode 100644
index 0000000000..8ec49accdf
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp
@@ -0,0 +1,2448 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtconcurrentmap.h>
+#include <qtconcurrentexception.h>
+
+#include <qdebug.h>
+#include <QThread>
+
+#include <QtTest/QtTest>
+
+#include "functions.h"
+#include "../qfuture/versioncheck.h"
+
+Q_DECLARE_METATYPE(QVector<int>);
+Q_DECLARE_METATYPE(QVector<double>);
+Q_DECLARE_METATYPE(QVector<QString>);
+Q_DECLARE_METATYPE(QList<int>);
+Q_DECLARE_METATYPE(QList<double>);
+Q_DECLARE_METATYPE(QList<QString>);
+
+class tst_QtConcurrentMap: public QObject
+{
+ Q_OBJECT
+private slots:
+ void map();
+ void blocking_map();
+ void mapped();
+ void blocking_mapped();
+ void mappedReduced();
+ void blocking_mappedReduced();
+ void assignResult();
+ void functionOverloads();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+#endif
+ void incrementalResults();
+ void noDetatch();
+ void stlContainers();
+ void qFutureAssignmentLeak();
+ void stressTest();
+public slots:
+ void throttling();
+};
+
+#if !defined (QT_NO_CONCURRENT_TEST) && !defined(QT_NO_CONCURRENT_MAP)
+
+using namespace QtConcurrent;
+
+void multiplyBy2Immutable(int x)
+{
+ x *= 2;
+}
+
+class MultiplyBy2Immutable
+{
+public:
+ void operator()(int x)
+ {
+ x *= 2;
+ }
+};
+
+void multiplyBy2InPlace(int &x)
+{
+ x *= 2;
+}
+
+class MultiplyBy2InPlace
+{
+public:
+ void operator()(int &x)
+ {
+ x *= 2;
+ }
+};
+
+Q_DECLARE_METATYPE(QList<Number>);
+
+void tst_QtConcurrentMap::map()
+{
+ // functors take arguments by reference, modifying the sequence in place
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::map(list, MultiplyBy2InPlace()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 2 << 4 << 6);
+ QtConcurrent::map(list.begin(), list.end(), MultiplyBy2InPlace()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 4 << 8 << 12);
+
+ // function
+ QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QList<int>() << 8 << 16 << 24);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QList<int>() << 16 << 32 << 48);
+
+ // bound function
+ QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QList<int>() << 32 << 64 << 96);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QList<int>() << 64 << 128 << 192);
+
+ // member function
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::map(numberList, &Number::multiplyBy2).waitForFinished();
+ QCOMPARE(numberList, QList<Number>() << 2 << 4 << 6);
+ QtConcurrent::map(numberList.begin(), numberList.end(), &Number::multiplyBy2).waitForFinished();
+ QCOMPARE(numberList, QList<Number>() << 4 << 8 << 12);
+
+#ifdef Q_COMPILER_LAMBDA
+ // lambda
+ QtConcurrent::map(list, [](int &x){x *= 2;}).waitForFinished();
+ QCOMPARE(list, QList<int>() << 128 << 256 << 384);
+ QtConcurrent::map(list.begin(), list.end(), [](int &x){x *= 2;}).waitForFinished();
+ QCOMPARE(list, QList<int>() << 256 << 512 << 768);
+#endif
+
+ }
+
+ // functors don't take arguments by reference, making these no-ops
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::map(list, MultiplyBy2Immutable()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::map(list.begin(), list.end(), MultiplyBy2Immutable()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ // function
+ QtConcurrent::map(list, multiplyBy2Immutable).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2Immutable).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ // bound function
+ QtConcurrent::map(list, multiplyBy2Immutable).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2Immutable).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+#ifdef Q_COMPILER_LAMBDA
+ // lambda
+ QtConcurrent::map(list, [](int x){x *= 2;}).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::map(list.begin(), list.end(), [](int x){x *= 2;}).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+#endif
+ }
+
+ // Linked lists and forward iterators
+ {
+ QLinkedList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::map(list, MultiplyBy2InPlace()).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 2 << 4 << 6);
+ QtConcurrent::map(list.begin(), list.end(), MultiplyBy2InPlace()).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 4 << 8 << 12);
+
+ // function
+ QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 8 << 16 << 24);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 16 << 32 << 48);
+
+ // bound function
+ QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 32 << 64 << 96);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 64 << 128 << 192);
+
+ // member function
+ QLinkedList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::map(numberList, &Number::multiplyBy2).waitForFinished();
+ QCOMPARE(numberList, QLinkedList<Number>() << 2 << 4 << 6);
+ QtConcurrent::map(numberList.begin(), numberList.end(), &Number::multiplyBy2).waitForFinished();
+ QCOMPARE(numberList, QLinkedList<Number>() << 4 << 8 << 12);
+ }
+
+#if 0
+ // not allowed: map() with immutable sequences makes no sense
+ {
+ const QList<int> list = QList<int>() << 1 << 2 << 3;
+
+ QtConcurrent::map(list, MultiplyBy2Immutable());
+ QtConcurrent::map(list, multiplyBy2Immutable);
+ QtConcurrent::map(list, multiplyBy2Immutable);
+ }
+#endif
+
+#if 0
+ // not allowed: in place modification of a temp copy (since temp copy goes out of scope)
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ QtConcurrent::map(QList<int>(list), MultiplyBy2InPlace());
+ QtConcurrent::map(QList<int>(list), multiplyBy2);
+ QtConcurrent::map(QList<int>(list), multiplyBy2InPlace);
+
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::map(QList<Number>(numberList), &Number::multiplyBy2);
+ }
+#endif
+
+#if 0
+ // not allowed: map() on a const list, where functors try to modify the items in the list
+ {
+ const QList<int> list = QList<int>() << 1 << 2 << 3;;
+
+ QtConcurrent::map(list, MultiplyBy2InPlace());
+ QtConcurrent::map(list, multiplyBy2InPlace);
+ QtConcurrent::map(list, multiplyBy2InPlace);
+
+ const QList<Number> numberList = QList<Number>() << 1 << 2 << 3;
+ QtConcurrent::map(numberList, &Number::multiplyBy2);
+ }
+#endif
+}
+
+void tst_QtConcurrentMap::blocking_map()
+{
+ // functors take arguments by reference, modifying the sequence in place
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
+ QCOMPARE(list, QList<int>() << 2 << 4 << 6);
+ QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2InPlace());
+ QCOMPARE(list, QList<int>() << 4 << 8 << 12);
+
+ // function
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QCOMPARE(list, QList<int>() << 8 << 16 << 24);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
+ QCOMPARE(list, QList<int>() << 16 << 32 << 48);
+
+ // bound function
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QCOMPARE(list, QList<int>() << 32 << 64 << 96);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
+ QCOMPARE(list, QList<int>() << 64 << 128 << 192);
+
+ // member function
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
+ QCOMPARE(numberList, QList<Number>() << 2 << 4 << 6);
+ QtConcurrent::blockingMap(numberList.begin(), numberList.end(), &Number::multiplyBy2);
+ QCOMPARE(numberList, QList<Number>() << 4 << 8 << 12);
+ }
+
+ // functors don't take arguments by reference, making these no-ops
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::blockingMap(list, MultiplyBy2Immutable());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2Immutable());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ // function
+ QtConcurrent::blockingMap(list, multiplyBy2Immutable);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2Immutable);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ // bound function
+ QtConcurrent::blockingMap(list, multiplyBy2Immutable);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2Immutable);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ }
+
+ // Linked lists and forward iterators
+ {
+ QLinkedList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
+ QCOMPARE(list, QLinkedList<int>() << 2 << 4 << 6);
+ QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2InPlace());
+ QCOMPARE(list, QLinkedList<int>() << 4 << 8 << 12);
+
+ // function
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QCOMPARE(list, QLinkedList<int>() << 8 << 16 << 24);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
+ QCOMPARE(list, QLinkedList<int>() << 16 << 32 << 48);
+
+ // bound function
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QCOMPARE(list, QLinkedList<int>() << 32 << 64 << 96);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
+ QCOMPARE(list, QLinkedList<int>() << 64 << 128 << 192);
+
+ // member function
+ QLinkedList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
+ QCOMPARE(numberList, QLinkedList<Number>() << 2 << 4 << 6);
+ QtConcurrent::blockingMap(numberList.begin(), numberList.end(), &Number::multiplyBy2);
+ QCOMPARE(numberList, QLinkedList<Number>() << 4 << 8 << 12);
+ }
+
+#if 0
+ // not allowed: map() with immutable sequences makes no sense
+ {
+ const QList<int> list = QList<int>() << 1 << 2 << 3;
+
+ QtConcurrent::blockingMap(list, MultiplyBy2Immutable());
+ QtConcurrent::blockkng::map(list, multiplyBy2Immutable);
+ QtConcurrent::blockingMap(list, multiplyBy2Immutable);
+ }
+#endif
+
+#if 0
+ // not allowed: in place modification of a temp copy (since temp copy goes out of scope)
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ QtConcurrent::blockingMap(QList<int>(list), MultiplyBy2InPlace());
+ QtConcurrent::blockingMap(QList<int>(list), multiplyBy2);
+ QtConcurrent::blockingMap(QList<int>(list), multiplyBy2InPlace);
+
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::blockingMap(QList<Number>(numberList), &Number::multiplyBy2);
+ }
+#endif
+
+#if 0
+ // not allowed: map() on a const list, where functors try to modify the items in the list
+ {
+ const QList<int> list = QList<int>() << 1 << 2 << 3;;
+
+ QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+
+ const QList<Number> numberList = QList<Number>() << 1 << 2 << 3;
+ QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
+ }
+#endif
+}
+
+int multiplyBy2(int x)
+{
+ int y = x * 2;
+ return y;
+}
+
+class MultiplyBy2
+{
+public:
+ typedef int result_type;
+
+ int operator()(int x) const
+ {
+ int y = x * 2;
+ return y;
+ }
+};
+
+double intToDouble(int x)
+{
+ return double(x);
+}
+
+class IntToDouble
+{
+public:
+ typedef double result_type;
+
+ double operator()(int x) const
+ {
+ return double(x);
+ }
+};
+
+int stringToInt(const QString &string)
+{
+ return string.toInt();
+}
+
+class StringToInt
+{
+public:
+ typedef int result_type;
+
+ int operator()(const QString &string) const
+ {
+ return string.toInt();
+ }
+};
+
+void tst_QtConcurrentMap::mapped()
+{
+ QList<int> list;
+ list << 1 << 2 << 3;
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3;
+
+ // functor
+ {
+ QList<int> list2 = QtConcurrent::mapped(list, MultiplyBy2()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ MultiplyBy2()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::mapped(QList<int>(list), MultiplyBy2()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QList<int> list2 = QtConcurrent::mapped(linkedList, MultiplyBy2()).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ MultiplyBy2()).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 =
+ QtConcurrent::mapped(QLinkedList<int>(linkedList), MultiplyBy2()).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+
+ // function
+ {
+ QList<int> list2 = QtConcurrent::mapped(list, multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::mapped(QList<int>(list), multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QList<int> list2 = QtConcurrent::mapped(linkedList, multiplyBy2).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ multiplyBy2).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 =
+ QtConcurrent::mapped(QLinkedList<int>(linkedList), multiplyBy2).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+
+ // bound function
+ {
+ QList<int> list2 = QtConcurrent::mapped(list, multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::mapped(QList<int>(list), multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QList<int> list2 = QtConcurrent::mapped(linkedList, multiplyBy2).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ multiplyBy2)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList), multiplyBy2)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+
+ // const member function
+ {
+ QList<Number> numberList2 = QtConcurrent::mapped(numberList, &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList3 = QtConcurrent::mapped(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList4 = QtConcurrent::mapped(QList<Number>(numberList),
+ &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
+ }
+ {
+ QList<Number> numberList2 = QtConcurrent::mapped(numberLinkedList, &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList3 = QtConcurrent::mapped(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList4 = QtConcurrent::mapped(QLinkedList<Number>(numberLinkedList),
+ &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
+ }
+
+ // change the value_type, same container
+
+ // functor
+ {
+ QList<double> list2 = QtConcurrent::mapped(list, IntToDouble()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ IntToDouble())
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::mapped(QList<int>(list),
+ IntToDouble())
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QList<double> list2 = QtConcurrent::mapped(linkedList, IntToDouble()).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntToDouble())
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList),
+ IntToDouble())
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // function
+ {
+ QList<double> list2 = QtConcurrent::mapped(list, intToDouble).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ intToDouble)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::mapped(QList<int>(list), intToDouble).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QList<double> list2 = QtConcurrent::mapped(linkedList, intToDouble).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intToDouble)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList), intToDouble)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // bound function
+ {
+ QList<double> list2 = QtConcurrent::mapped(list, intToDouble).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ intToDouble)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+
+ QList<double> list4 = QtConcurrent::mapped(QList<int>(list),
+ intToDouble)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QList<double> list2 = QtConcurrent::mapped(linkedList, intToDouble).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intToDouble)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+
+ QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList),
+ intToDouble)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // const member function
+ {
+ QList<QString> list2 = QtConcurrent::mapped(numberList, &Number::toString).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list3 = QtConcurrent::mapped(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toString)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list4 = QtConcurrent::mapped(QList<Number>(numberList), &Number::toString)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
+ }
+ {
+ QList<QString> list2 = QtConcurrent::mapped(numberLinkedList, &Number::toString).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list3 = QtConcurrent::mapped(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toString)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list4 = QtConcurrent::mapped(QLinkedList<Number>(numberLinkedList),
+ &Number::toString)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
+ }
+
+ // change the value_type
+ {
+ QList<QString> strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::mapped(strings, StringToInt()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt())
+ .results();
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QList<QString> strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::mapped(strings, stringToInt).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt).results();
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+
+ {
+ QList<int> numberList2 = QtConcurrent::mapped(numberList, &Number::toInt).results();
+ QCOMPARE(numberList2, QList<int>() << 1 << 2 << 3);
+
+ QList<int> numberList3 = QtConcurrent::mapped(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt)
+ .results();
+ QCOMPARE(numberList3, QList<int>() << 1 << 2 << 3);
+ }
+
+ // change the value_type from QStringList
+ {
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::mapped(strings, StringToInt()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt())
+ .results();
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::mapped(strings, stringToInt).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt)
+ .results();
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+}
+
+void tst_QtConcurrentMap::blocking_mapped()
+{
+ QList<int> list;
+ list << 1 << 2 << 3;
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3;
+
+ // functor
+ {
+ QList<int> list2 = QtConcurrent::blockingMapped(list, MultiplyBy2());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ MultiplyBy2());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), MultiplyBy2());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, MultiplyBy2());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ MultiplyBy2());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), MultiplyBy2());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
+ }
+
+ // function
+ {
+ QList<int> list2 = QtConcurrent::blockingMapped(list, multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
+ }
+
+ // bound function
+ {
+ QList<int> list2 = QtConcurrent::blockingMapped(list, multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
+ }
+
+ // const member function
+ {
+ QList<Number> numberList2 = QtConcurrent::blockingMapped(numberList, &Number::multipliedBy2);
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList3 = QtConcurrent::blockingMapped<QList<Number> >(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::multipliedBy2);
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList4 = QtConcurrent::blockingMapped(QList<Number>(numberList),
+ &Number::multipliedBy2);
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
+ }
+ {
+ QLinkedList<Number> numberLinkedList2 = QtConcurrent::blockingMapped(numberLinkedList, &Number::multipliedBy2);
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberLinkedList2, QLinkedList<Number>() << 2 << 4 << 6);
+
+ QLinkedList<Number> numberLinkedList3 = QtConcurrent::blockingMapped<QLinkedList<Number> >(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::multipliedBy2);
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberLinkedList3, QLinkedList<Number>() << 2 << 4 << 6);
+
+ QLinkedList<Number> numberLinkedList4 = QtConcurrent::blockingMapped(QLinkedList<Number>(numberLinkedList),
+ &Number::multipliedBy2);
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberLinkedList4, QLinkedList<Number>() << 2 << 4 << 6);
+ }
+
+ // change the value_type, same container
+
+ // functor
+ {
+ QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
+ list.constEnd(),
+ IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list),
+ IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, IntToDouble());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntToDouble());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList),
+ IntToDouble());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // function
+ {
+ QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
+ list.constEnd(),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list), intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList), intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // bound function
+ {
+ QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
+ list.constEnd(),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+
+ QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+
+ QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList),
+ intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // const member function
+ {
+ QList<QString> list2 =
+ QtConcurrent::blockingMapped<QList<QString> >(numberList, &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list3 = QtConcurrent::blockingMapped<QList<QString> >(numberList.constBegin(),
+ numberList.constEnd()
+ , &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list4 =
+ QtConcurrent::blockingMapped<QList<QString> >(QList<Number>(numberList), &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
+ }
+ {
+ QLinkedList<QString> linkedList2 =
+ QtConcurrent::blockingMapped<QLinkedList<QString> >(numberLinkedList, &Number::toString);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<QString>() << "1" << "2" << "3");
+
+ QLinkedList<QString> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<QString> >(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd()
+ , &Number::toString);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<QString>() << "1" << "2" << "3");
+
+ QLinkedList<QString> linkedList4 =
+ QtConcurrent::blockingMapped<QLinkedList<QString> >(QLinkedList<Number>(numberLinkedList), &Number::toString);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<QString>() << "1" << "2" << "3");
+ }
+
+ // change the value_type
+ {
+ QList<QString> strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::blockingMapped(strings, StringToInt());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt());
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QList<QString> strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::blockingMapped(strings, stringToInt);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt);
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+
+ {
+ QList<int> numberList2 = QtConcurrent::blockingMapped(numberList, &Number::toInt);
+ QCOMPARE(numberList2, QList<int>() << 1 << 2 << 3);
+
+ QList<int> numberList3 = QtConcurrent::blockingMapped<QList<int> >(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt);
+ QCOMPARE(numberList3, QList<int>() << 1 << 2 << 3);
+ }
+
+ // change the value_type from QStringList
+ {
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::blockingMapped(strings, StringToInt());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt());
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::blockingMapped(strings, stringToInt);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt);
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+
+ // functor
+ {
+ QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(list.constBegin(),
+ list.constEnd(),
+ IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list4 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list),
+ IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(strings, StringToInt());
+ QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list6 = QtConcurrent::blockingMapped<QVector<int> >(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt());
+ QCOMPARE(list6, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list7 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings),
+ StringToInt());
+ QCOMPARE(list7, QVector<int>() << 1 << 2 << 3);
+ }
+
+ // function
+ {
+ QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(list.constBegin(),
+ list.constEnd(),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list4 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(strings, stringToInt);
+ QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list6 = QtConcurrent::blockingMapped<QVector<int> >(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt);
+ QCOMPARE(list6, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list7 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings),
+ stringToInt);
+ QCOMPARE(list7, QVector<int>() << 1 << 2 << 3);
+ }
+
+ // bound function
+ {
+ QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list), intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QVector<int> list4 = QtConcurrent::blockingMapped<QVector<int> >(strings, stringToInt);
+ QCOMPARE(list4, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings), stringToInt);
+ QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
+ }
+
+ // const member function
+ {
+ QVector<QString> list2 = QtConcurrent::blockingMapped<QVector<QString> >(numberList, &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QVector<QString>() << "1" << "2" << "3");
+
+ QVector<QString> list3 =
+ QtConcurrent::blockingMapped<QVector<QString> >(QList<Number>(numberList), &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QVector<QString>() << "1" << "2" << "3");
+
+ // not allowed: const member function where all arguments have default values
+#if 0
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QVector<int> list4 = QtConcurrent::blockingMapped<QVector<int> >(strings, &QString::toInt);
+ QCOMPARE(list4, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings), &QString::toInt);
+ QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
+#endif
+ }
+}
+
+int intSquare(int x)
+{
+ return x * x;
+}
+
+class IntSquare
+{
+public:
+ typedef int result_type;
+
+ int operator()(int x)
+ {
+ return x * x;
+ }
+};
+
+void tst_QtConcurrentMap::mappedReduced()
+{
+ QList<int> list;
+ list << 1 << 2 << 3;
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3;
+
+ // test Q_DECLARE_OPERATORS_FOR_FLAGS
+ QtConcurrent::ReduceOptions opt = (QtConcurrent::UnorderedReduce | QtConcurrent::SequentialReduce);
+
+ // functor-functor
+ {
+ int sum = QtConcurrent::mappedReduced<int>(list, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QList<int>(list), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::mappedReduced<int>(list, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::mappedReduced<int>(QList<int>(list),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced<int>(linkedList, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::mappedReduced<int>(linkedList, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+
+ // function-functor
+ {
+ int sum = QtConcurrent::mappedReduced<int>(list, intSquare, IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QList<int>(list), intSquare, IntSumReduce());
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced<int>(linkedList, intSquare, IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList), intSquare, IntSumReduce());
+ QCOMPARE(sum3, 14);
+ }
+
+ // functor-function
+ {
+ int sum = QtConcurrent::mappedReduced(list, IntSquare(), intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced(QList<int>(list), IntSquare(), intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced(linkedList, IntSquare(), intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList), IntSquare(), intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+
+ // function-function
+ {
+ int sum = QtConcurrent::mappedReduced(list, intSquare, intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced(QList<int>(list), intSquare, intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced(linkedList, intSquare, intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList), intSquare, intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+
+ // functor-member
+ {
+ QList<int> list2 = QtConcurrent::mappedReduced(list,
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list3 = QtConcurrent::mappedReduced(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list4 = QtConcurrent::mappedReduced(QList<int>(list),
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(linkedList,
+ IntSquare(),
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList),
+ IntSquare(),
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
+ }
+
+ // member-functor
+ {
+ int sum = QtConcurrent::mappedReduced<int>(numberList, &Number::toInt, IntSumReduce());
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::mappedReduced<int>(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QList<Number>(numberList),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum3, 6);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced<int>(numberLinkedList, &Number::toInt, IntSumReduce());
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::mappedReduced<int>(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum3, 6);
+ }
+
+ // member-member
+ {
+ QList<int> list2 = QtConcurrent::mappedReduced(numberList,
+ &Number::toInt,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list3 = QtConcurrent::mappedReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list3, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list4 = QtConcurrent::mappedReduced(QList<Number>(numberList),
+ &Number::toInt,
+ &QList<int>::push_back, OrderedReduce);
+ QCOMPARE(list4, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(numberLinkedList,
+ &Number::toInt,
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 2 << 3);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 2 << 3);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ &QLinkedList<int>::push_back, OrderedReduce);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 2 << 3);
+ }
+
+ // function-member
+ {
+ QList<int> list2 = QtConcurrent::mappedReduced(list,
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list3 = QtConcurrent::mappedReduced(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list4 = QtConcurrent::mappedReduced(QList<int>(list),
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(linkedList,
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList),
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
+ }
+
+ // member-function
+ {
+ int sum = QtConcurrent::mappedReduced(numberList,
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::mappedReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::mappedReduced(QList<Number>(numberList),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum3, 6);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced(numberLinkedList,
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::mappedReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::mappedReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum3, 6);
+ }
+
+ // linked lists
+ {
+
+ QLinkedList<int> list;
+ list << 1 << 2 << 3;
+
+ QLinkedList<Number> numberList;
+ numberList << 1 << 2 << 3;
+
+ int sum = QtConcurrent::mappedReduced<int>(list, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(list), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::mappedReduced<int>(list, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(list),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+
+ // ### the same as above, with an initial result value
+}
+
+void tst_QtConcurrentMap::blocking_mappedReduced()
+{
+ QList<int> list;
+ list << 1 << 2 << 3;
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3;
+
+ // functor-functor
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(list, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::blockingMappedReduced<int>(list, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(linkedList, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::blockingMappedReduced<int>(linkedList, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+
+ // function-functor
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(list, intSquare, IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list), intSquare, IntSumReduce());
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(linkedList, intSquare, IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList), intSquare, IntSumReduce());
+ QCOMPARE(sum3, 14);
+ }
+
+ // functor-function
+ {
+ int sum = QtConcurrent::blockingMappedReduced(list, IntSquare(), intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QList<int>(list), IntSquare(), intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced(linkedList, IntSquare(), intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList), IntSquare(), intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+
+ // function-function
+ {
+ int sum = QtConcurrent::blockingMappedReduced(list, intSquare, intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QList<int>(list), intSquare, intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced(linkedList, intSquare, intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList), intSquare, intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+
+ // functor-member
+ {
+ QList<int> list2 = QtConcurrent::blockingMappedReduced(list,
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list3 = QtConcurrent::blockingMappedReduced(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<int>(list),
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(linkedList,
+ IntSquare(),
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList),
+ IntSquare(),
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
+ }
+
+ // member-functor
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(numberList, &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<Number>(numberList),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum3, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(numberLinkedList, &Number::toInt, IntSumReduce());
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum3, 6);
+ }
+
+ // member-member
+ {
+ QList<int> list2 = QtConcurrent::blockingMappedReduced(numberList,
+ &Number::toInt,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list3 = QtConcurrent::blockingMappedReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list3, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<Number>(numberList),
+ &Number::toInt,
+ &QList<int>::push_back, OrderedReduce);
+ QCOMPARE(list4, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(numberLinkedList,
+ &Number::toInt,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 2 << 3);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 2 << 3);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ &QLinkedList<int>::append, OrderedReduce);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 2 << 3);
+ }
+
+ // function-member
+ {
+ QList<int> list2 = QtConcurrent::blockingMappedReduced(list,
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list3 = QtConcurrent::blockingMappedReduced(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<int>(list),
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(linkedList,
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList),
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
+ }
+
+ // member-function
+ {
+ int sum = QtConcurrent::blockingMappedReduced(numberList,
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::blockingMappedReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QList<Number>(numberList),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum3, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced(numberLinkedList,
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::blockingMappedReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum3, 6);
+ }
+
+ // linked lists
+ {
+
+ QLinkedList<int> list;
+ list << 1 << 2 << 3;
+
+ QLinkedList<Number> numberList;
+ numberList << 1 << 2 << 3;
+
+ int sum = QtConcurrent::blockingMappedReduced<int>(list, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(list), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::blockingMappedReduced<int>(list, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(list),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+
+ // ### the same as above, with an initial result value
+}
+
+int sleeper(int val)
+{
+ QTest::qSleep(100);
+ return val;
+}
+
+void tst_QtConcurrentMap::assignResult()
+{
+ const QList<int> startList = QList<int>() << 0 << 1 << 2;
+ QList<int> list = QtConcurrent::blockingMapped(startList, sleeper);
+ QCOMPARE(list.at(0), 0);
+ QCOMPARE(list.at(1), 1);
+}
+
+int fnConst(const int &i)
+{
+ return i;
+}
+
+int fn(int &i)
+{
+ return i;
+}
+
+QString changeTypeConst(const int &)
+{
+ return QString();
+}
+
+QString changeType(int &)
+{
+ return QString();
+}
+
+int changeTypeQStringListConst(const QStringList &)
+{
+ return 0;
+}
+
+int changeTypeQStringList(QStringList &)
+{
+ return 0;
+}
+
+class MemFnTester
+{
+public:
+ MemFnTester() {}
+
+ MemFnTester fn()
+ {
+ return MemFnTester();
+ }
+
+ MemFnTester fnConst() const
+ {
+ return MemFnTester();
+ }
+
+ QString changeType()
+ {
+ return QString();
+ }
+
+ QString changeTypeConst() const
+ {
+ return QString();
+ }
+};
+
+Q_DECLARE_METATYPE(QVector<MemFnTester>);
+Q_DECLARE_METATYPE(QList<MemFnTester>);
+
+void tst_QtConcurrentMap::functionOverloads()
+{
+ QList<int> intList;
+ const QList<int> constIntList;
+ QList<MemFnTester> classList;
+ const QList<MemFnTester> constMemFnTesterList;
+
+ QtConcurrent::mapped(intList, fnConst);
+ QtConcurrent::mapped(constIntList, fnConst);
+ QtConcurrent::mapped(classList, &MemFnTester::fnConst);
+ QtConcurrent::mapped(constMemFnTesterList, &MemFnTester::fnConst);
+
+ QtConcurrent::blockingMapped<QVector<int> >(intList, fnConst);
+ QtConcurrent::blockingMapped<QVector<int> >(constIntList, fnConst);
+ QtConcurrent::blockingMapped<QVector<MemFnTester> >(classList, &MemFnTester::fnConst);
+ QtConcurrent::blockingMapped<QVector<MemFnTester> >(constMemFnTesterList, &MemFnTester::fnConst);
+
+ QtConcurrent::blockingMapped<QList<QString> >(intList, changeTypeConst);
+ QtConcurrent::blockingMapped<QList<QString> >(constIntList, changeTypeConst);
+ QtConcurrent::blockingMapped<QList<QString> >(classList, &MemFnTester::changeTypeConst);
+ QtConcurrent::blockingMapped<QList<QString> >(constMemFnTesterList, &MemFnTester::changeTypeConst);
+
+ QStringList stringList;
+ const QStringList constStringList;
+ // QtConcurrent::map(stringList, changeTypeQStringListConst);
+ // QtConcurrent::map(intList, changeTypeNonConst);
+ // QList<QString>(QtConcurrent::map(constStringList, changeTypeQStringList));
+ // QtConcurrent::map(classList, &MemFnTester::changeType);
+ // QtConcurrent::map(classList, &MemFnTester::changeTypeConst);
+ // QtConcurrent::map(constMemFnTesterList, &MemFnTester::changeTypeConst);
+}
+
+QAtomicInt currentInstanceCount;
+QAtomicInt peakInstanceCount;
+class InstanceCounter
+{
+public:
+ inline InstanceCounter()
+ { currentInstanceCount.fetchAndAddRelaxed(1); updatePeak(); }
+ inline ~InstanceCounter()
+ { currentInstanceCount.fetchAndAddRelaxed(-1);}
+ inline InstanceCounter(const InstanceCounter &)
+ { currentInstanceCount.fetchAndAddRelaxed(1); updatePeak(); }
+
+ void updatePeak()
+ {
+ forever {
+ const int localPeak = peakInstanceCount;
+ const int localCurrent = currentInstanceCount;
+ if (localCurrent <= localPeak)
+ break;
+ if (peakInstanceCount.testAndSetOrdered(localPeak, localCurrent))
+ break;
+ }
+ }
+};
+
+InstanceCounter slowMap(const InstanceCounter &in)
+{
+ QTest::qSleep(2);
+ return in;
+}
+
+InstanceCounter fastMap(const InstanceCounter &in)
+{
+ QTest::qSleep(rand() % 2 + 1);
+// qDebug() << "map " << QThread::currentThread();
+ return in;
+}
+
+void slowReduce(int &result, const InstanceCounter&)
+{
+ QTest::qSleep(rand() % 4 + 1);
+// qDebug() << "reduce" << QThread::currentThread();
+ ++result;
+}
+
+void fastReduce(int &result, const InstanceCounter&)
+{
+ ++result;
+}
+
+void tst_QtConcurrentMap::throttling()
+{
+ const int itemcount = 100;
+ const int allowedTemporaries = QThread::idealThreadCount() * 40;
+
+ {
+ currentInstanceCount = 0;
+ peakInstanceCount = 0;
+
+ QList<InstanceCounter> instances;
+ for (int i = 0; i < itemcount; ++i)
+ instances.append(InstanceCounter());
+
+ QCOMPARE((int)currentInstanceCount, itemcount);
+
+ int results = QtConcurrent::blockingMappedReduced(instances, slowMap, fastReduce);
+ QCOMPARE(results, itemcount);
+ qDebug() << (int)currentInstanceCount;
+ qDebug() << (int)peakInstanceCount;
+ QCOMPARE(int(currentInstanceCount), itemcount);
+ QVERIFY(int(peakInstanceCount) < itemcount + allowedTemporaries);
+ }
+
+ {
+ QCOMPARE(int(currentInstanceCount), 0);
+ peakInstanceCount = 0;
+
+ QList<InstanceCounter> instances;
+ for (int i = 0; i < itemcount; ++i)
+ instances.append(InstanceCounter());
+
+ QCOMPARE(int(currentInstanceCount), itemcount);
+ int results = QtConcurrent::blockingMappedReduced(instances, fastMap, slowReduce);
+
+ QCOMPARE(results, itemcount);
+ qDebug() << (int)currentInstanceCount;
+ qDebug() << (int)peakInstanceCount;
+ QCOMPARE((int)currentInstanceCount, itemcount);
+ QVERIFY(int(peakInstanceCount) < itemcount + allowedTemporaries);
+ }
+}
+
+#ifndef QT_NO_EXCEPTIONS
+void throwMapper(int &e)
+{
+ Q_UNUSED(e);
+ throw QtConcurrent::Exception();
+}
+
+void tst_QtConcurrentMap::exceptions()
+{
+ bool caught = false;
+ try {
+ QList<int> list = QList<int>() << 1 << 2 << 3;
+ QtConcurrent::map(list, throwMapper).waitForFinished();
+ } catch (const Exception &) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+}
+#endif
+
+int mapper(const int &i)
+{
+ QTest::qWait(1);
+ return i;
+}
+
+void tst_QtConcurrentMap::incrementalResults()
+{
+ const int count = 200;
+ QList<int> ints;
+ for (int i=0; i < count; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::mapped(ints, mapper);
+
+ QList<int> results;
+
+ while (future.isFinished() == false) {
+ for (int i = 0; i < future.resultCount(); ++i) {
+ results += future.resultAt(i);
+ }
+
+ QTest::qWait(1);
+ }
+
+ QCOMPARE(future.isFinished(), true);
+ QCOMPARE(future.resultCount(), count);
+ QCOMPARE(future.results().count(), count);
+}
+
+/*
+ Test that mapped does not cause deep copies when holding
+ references to Qt containers.
+*/
+void tst_QtConcurrentMap::noDetatch()
+{
+ {
+ QList<int> l = QList<int>() << 1;
+ QVERIFY(l.isDetached());
+
+ QList<int> ll = l;
+ QVERIFY(l.isDetached() == false);
+
+ QtConcurrent::mapped(l, mapper).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::mappedReduced(l, mapper, intSumReduce).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::map(l, multiplyBy2Immutable).waitForFinished();
+ QVERIFY(l.isDetached() == true);
+ QVERIFY(ll.isDetached() == true);
+ }
+ {
+ const QList<int> l = QList<int>() << 1;
+ QVERIFY(l.isDetached());
+
+ const QList<int> ll = l;
+ QVERIFY(l.isDetached() == false);
+
+ QtConcurrent::mapped(l, mapper).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::mappedReduced(l, mapper, intSumReduce).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+ }
+
+}
+
+void tst_QtConcurrentMap::stlContainers()
+{
+#ifdef QT_NO_STL
+ QSKIP("Qt compiled without STL support", SkipAll);
+#elif defined(Q_COMPILER_RVALUE_REFS)
+ //mapped uses &Container::push_back, but in c++0x, std::vector has two overload of it
+ // meaning it is not possible to take the address of that function anymore.
+ QSKIP("mapped do not work with c++0x stl vector", SkipAll);
+#else
+ std::vector<int> vector;
+ vector.push_back(1);
+ vector.push_back(2);
+
+ std::vector<int> vector2 = QtConcurrent::blockingMapped<std::vector<int> >(vector, mapper);
+ QCOMPARE(vector2.size(), (std::vector<int>::size_type)(2));
+
+ std::list<int> list;
+ list.push_back(1);
+ list.push_back(2);
+
+ std::list<int> list2 = QtConcurrent::blockingMapped<std::list<int> >(list, mapper);
+ QCOMPARE(list2.size(), (std::vector<int>::size_type)(2));
+
+ QtConcurrent::mapped(list, mapper).waitForFinished();
+
+ QtConcurrent::blockingMap(list, multiplyBy2Immutable);
+#endif
+}
+
+InstanceCounter ic_fn(const InstanceCounter & ic)
+{
+ return InstanceCounter(ic);
+};
+
+// Verify that held results are deleted when a future is
+// assigned over with operator ==
+void tst_QtConcurrentMap::qFutureAssignmentLeak()
+{
+ currentInstanceCount = 0;
+ peakInstanceCount = 0;
+ QFuture<InstanceCounter> future;
+ {
+ QList<InstanceCounter> list;
+ for (int i=0;i<1000;++i)
+ list += InstanceCounter();
+ future = QtConcurrent::mapped(list, ic_fn);
+ future.waitForFinished();
+
+ future = QtConcurrent::mapped(list, ic_fn);
+ future.waitForFinished();
+
+ future = QtConcurrent::mapped(list, ic_fn);
+ future.waitForFinished();
+ }
+
+ QCOMPARE(int(currentInstanceCount), 1000);
+ future = QFuture<InstanceCounter>();
+ QCOMPARE(int(currentInstanceCount), 0);
+}
+
+inline void increment(int &num)
+{
+ ++num;
+}
+
+inline int echo(const int &num)
+{
+ return num;
+}
+
+void add(int &result, const int &sum)
+{
+ result += sum;
+}
+
+void tst_QtConcurrentMap::stressTest()
+{
+ const int listSize = 1000;
+ const int sum = (listSize - 1) * (listSize / 2);
+ QList<int> list;
+
+
+ for (int i = 0; i < listSize; ++i) {
+ list.append(i);
+ }
+
+ for (int i =0 ; i < 100; ++i) {
+ QList<int> result = QtConcurrent::blockingMapped(list, echo);
+ for (int j = 0; j < listSize; ++j)
+ QCOMPARE(result.at(j), j);
+ }
+
+ for (int i = 0 ; i < 100; ++i) {
+ int result = QtConcurrent::blockingMappedReduced(list, echo, add);
+ QCOMPARE(result, sum);
+ }
+
+ for (int i = 0 ; i < 100; ++i) {
+ QtConcurrent::map(list, increment).waitForFinished();
+ for (int j = 0; j < listSize; ++j)
+ QCOMPARE(list.at(j), i + j + 1);
+ }
+}
+
+QTEST_MAIN(tst_QtConcurrentMap)
+
+#else
+
+void tst_QtConcurrentMap::map() {}
+void tst_QtConcurrentMap::blocking_map() {}
+void tst_QtConcurrentMap::mapped() {}
+void tst_QtConcurrentMap::blocking_mapped() {}
+void tst_QtConcurrentMap::mappedReduced() {}
+void tst_QtConcurrentMap::blocking_mappedReduced() {}
+void tst_QtConcurrentMap::assignResult() {}
+void tst_QtConcurrentMap::functionOverloads() {}
+#ifndef QT_NO_EXCEPTIONS
+void tst_QtConcurrentMap::exceptions() {}
+#endif
+void tst_QtConcurrentMap::incrementalResults() {}
+void tst_QtConcurrentMap::stressTest() {}
+void tst_QtConcurrentMap::throttling() {}
+void tst_QtConcurrentMap::stlContainers() {}
+void tst_QtConcurrentMap::noDetatch() {}
+
+QTEST_NOOP_MAIN
+
+#endif
+
+#include "tst_qtconcurrentmap.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro b/tests/auto/corelib/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro
new file mode 100644
index 0000000000..8bc20c3f13
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+DEFINES += QT_STRICT_ITERATORS
+SOURCES += tst_qtconcurrentresultstore.cpp
+QT = core core-private
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp b/tests/auto/corelib/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp
new file mode 100644
index 0000000000..1728be68fe
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp
@@ -0,0 +1,491 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <qtconcurrentresultstore.h>
+
+using namespace QtConcurrent;
+
+class tst_QtConcurrentResultStore : public QObject
+{
+ Q_OBJECT
+public slots:
+ void init();
+private slots:
+ void construction();
+ void iterators();
+ void addResult();
+ void addResults();
+ void resultIndex();
+ void resultAt();
+ void contains();
+ void filterMode();
+ void addCanceledResult();
+ void count();
+private:
+ int int0;
+ int int1;
+ int int2;
+ QVector<int> vec0;
+ QVector<int> vec1;
+};
+
+void tst_QtConcurrentResultStore::init()
+{
+ int0 = 0;
+ int1 = 1;
+ int2 = 2;
+ vec0 = QVector<int>() << 2 << 3;
+ vec1 = QVector<int>() << 4 << 5;
+}
+
+void tst_QtConcurrentResultStore::construction()
+{
+ ResultStore<int> store;
+ QCOMPARE(store.count(), 0);
+}
+
+void tst_QtConcurrentResultStore::iterators()
+{
+ {
+ ResultStore<int> store;
+ ResultIteratorBase it = store.begin();
+ QVERIFY(store.begin() == store.end());
+ QVERIFY(store.resultAt(0) == store.end());
+ QVERIFY(store.resultAt(1) == store.end());
+ }
+ {
+ ResultStoreBase storebase;
+ storebase.addResult(-1, &int0); // note to self: adding a pointer to the stack here is ok since
+ storebase.addResult(1, &int1); // ResultStoreBase does not take ownership, only ResultStore<> does.
+ ResultIteratorBase it = storebase.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == storebase.begin());
+ QVERIFY(it != storebase.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != storebase.begin());
+ QVERIFY(it != storebase.end());
+
+ ++it;
+ QVERIFY(it != storebase.begin());
+ QVERIFY(it == storebase.end());
+ }
+}
+
+void tst_QtConcurrentResultStore::addResult()
+{
+ {
+ // test addResult return value
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ QCOMPARE(store.addResult(0, &int0), 0);
+ QCOMPARE(store.count(), 1); // result 0 becomes available
+ QCOMPARE(store.contains(0), true);
+
+ QCOMPARE(store.addResult(2, &int0), 2);
+ QCOMPARE(store.count(), 1);
+ QCOMPARE(store.contains(2), false);
+
+ QCOMPARE(store.addCanceledResult(1), 1);
+ QCOMPARE(store.count(), 2); // result 2 is renamed to 1 and becomes available
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), false);
+
+ QCOMPARE(store.addResult(3, &int0), 3);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.contains(2), true);
+
+ QCOMPARE(store.addResult(6, &int0), 6);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.addResult(7, &int0), 7);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.contains(3), false);
+
+ QCOMPARE(store.addCanceledResult(4), 4);
+ QCOMPARE(store.addCanceledResult(5), 5);
+ QCOMPARE(store.count(), 5); // 6 and 7 is renamed to 3 and 4 and becomes available
+
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), true);
+
+ QCOMPARE(store.addResult(8, &int0), 8);
+ QCOMPARE(store.contains(5), true);
+ QCOMPARE(store.count(), 6);
+
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+}
+
+void tst_QtConcurrentResultStore::addResults()
+{
+
+ ResultStoreBase store;
+ store.addResults(-1, &vec0, 2, 2);
+ store.addResults(-1, &vec1, 2, 2);
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+
+ ++it;
+ QVERIFY(it == store.end());
+}
+
+void tst_QtConcurrentResultStore::resultIndex()
+{
+ ResultStore<int> store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec0);
+ store.addResult(-1, &int1);
+
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+ QVERIFY(it != store.end());
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+ QVERIFY(it != store.end());
+ ++it;
+ QVERIFY(it == store.end());
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), vec0[0]);
+ QCOMPARE(store.resultAt(2).value(), vec0[1]);
+ QCOMPARE(store.resultAt(3).value(), int1);
+}
+
+void tst_QtConcurrentResultStore::resultAt()
+{
+ {
+ ResultStore<int> store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec0);
+ store.addResult(200, &int1);
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), vec0[0]);
+ QCOMPARE(store.resultAt(2).value(), vec0[1]);
+ QCOMPARE(store.resultAt(200).value(), int1);
+ }
+ {
+ ResultStore<int> store;
+ store.addResult(1, &int1);
+ store.addResult(0, &int0);
+ store.addResult(-1, &int2);
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), int1);
+ QCOMPARE(store.resultAt(2).value(), int2);
+ }
+}
+
+void tst_QtConcurrentResultStore::contains()
+{
+ {
+ ResultStore<int> store;
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), false);
+ QCOMPARE(store.contains(INT_MAX), false);
+ store.addResult(1, &int1);
+ QVERIFY(store.contains(int1));
+ store.addResult(0, &int0);
+ QVERIFY(store.contains(int0));
+ store.addResult(-1, &int2);
+ QVERIFY(store.contains(int2));
+ }
+ {
+ ResultStore<int> store;
+ store.addResult(1, &int0);
+ store.addResult(3, &int0);
+ store.addResults(6, &vec0);
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), true);
+ QCOMPARE(store.contains(7), true);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResult(1, &int0);
+ store.addResult(3, &int0);
+ store.addResults(6, &vec0);
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), false);
+ QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(3), false);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+
+ store.addCanceledResult(0);
+ store.addCanceledResult(2);
+ store.addCanceledResults(4, 2);
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), true);
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addCanceledResult(0);
+ QCOMPARE(store.contains(0), false);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), false);
+ }
+}
+
+void tst_QtConcurrentResultStore::filterMode()
+{
+ // Test filter mode, where "gaps" in the result array aren't allowed.
+ ResultStore<int> store;
+ QCOMPARE(store.filterMode(), false);
+ store.setFilterMode(true);
+ QVERIFY(store.filterMode());
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int2); // add result at index 2
+ QCOMPARE(store.contains(2), false); // but 1 is missing, so this 2 won't be reported yet.
+
+ store.addResult(1, &int1);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), true); // 2 should be visible now.
+
+ store.addResult(4, &int0);
+ store.addResult(5, &int0);
+ store.addResult(7, &int0);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(7), false);
+
+ store.addResult(3, &int0); // adding 3 makes 4 and 5 visible
+ QCOMPARE(store.contains(4), true);
+ QCOMPARE(store.contains(5), true);
+ QCOMPARE(store.contains(7), false);
+
+ store.addResult(6, &int0); // adding 6 makes 7 visible
+
+ QCOMPARE(store.contains(6), true);
+ QCOMPARE(store.contains(7), true);
+ QCOMPARE(store.contains(8), false);
+}
+
+void tst_QtConcurrentResultStore::addCanceledResult()
+{
+ // test canceled results
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.contains(2), false);
+
+ store.addCanceledResult(1); // report no result at 1
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true); // 2 gets renamed to 1
+ QCOMPARE(store.contains(2), false);
+
+ store.addResult(3, &int0);
+ QCOMPARE(store.contains(2), true); //3 gets renamed to 2
+
+ store.addResult(6, &int0);
+ store.addResult(7, &int0);
+ QCOMPARE(store.contains(3), false);
+
+ store.addCanceledResult(4);
+ store.addCanceledResult(5);
+
+ QCOMPARE(store.contains(3), true); //6 gets renamed to 3
+ QCOMPARE(store.contains(4), true); //7 gets renamed to 4
+
+ store.addResult(8, &int0);
+ QCOMPARE(store.contains(5), true); //8 gets renamed to 4
+
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+}
+
+void tst_QtConcurrentResultStore::count()
+{
+ {
+ // test resultCount in non-filtered mode. It should always be possible
+ // to iterate through the results 0 to resultCount.
+ ResultStore<int> store;
+ store.addResult(0, &int0);
+
+ QCOMPARE(store.count(), 1);
+
+ store.addResult(2, &int0);
+
+ QCOMPARE(store.count(), 1);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 3);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 3);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResults(2, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 4);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResults(2, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 4);
+ }
+ {
+ ResultStore<int> store;
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 2);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 5);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 2);
+
+ store.addCanceledResult(2);
+ QCOMPARE(store.count(), 4);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addCanceledResults(0, 3);
+ QCOMPARE(store.count(), 2);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addCanceledResults(0, 3);
+ QCOMPARE(store.count(), 2); // results at 3 and 4 become available at index 0, 1
+
+ store.addResult(5, &int0);
+ QCOMPARE(store.count(), 3);// result 5 becomes available at index 2
+ }
+}
+
+QTEST_MAIN(tst_QtConcurrentResultStore)
+#include "tst_qtconcurrentresultstore.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentrun/.gitignore b/tests/auto/corelib/concurrent/qtconcurrentrun/.gitignore
new file mode 100644
index 0000000000..d7a8334ec4
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentrun/.gitignore
@@ -0,0 +1 @@
+tst_qtconcurrentrun
diff --git a/tests/auto/corelib/concurrent/qtconcurrentrun/qtconcurrentrun.pro b/tests/auto/corelib/concurrent/qtconcurrentrun/qtconcurrentrun.pro
new file mode 100644
index 0000000000..24576048e9
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentrun/qtconcurrentrun.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qtconcurrentrun.cpp
+QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp b/tests/auto/corelib/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
new file mode 100644
index 0000000000..cacb09aae1
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
@@ -0,0 +1,518 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtconcurrentrun.h>
+// #include <qtconcurrentcreatefunctor.h>
+#include <qfuture.h>
+#include <QString>
+#include <QtTest/QtTest>
+#include "../qfuture/versioncheck.h"
+
+#ifndef QT_NO_CONCURRENT_TEST
+
+using namespace QtConcurrent;
+
+class tst_QtConcurrentRun: public QObject
+{
+ Q_OBJECT
+private slots:
+ void runLightFunction();
+ void runHeavyFunction();
+ void returnValue();
+ void functionObject();
+ void memberFunctions();
+ void implicitConvertibleTypes();
+ void runWaitLoop();
+ void recursive();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+#endif
+#if 0
+ void createFunctor();
+#endif
+ void functor();
+ void lambda();
+};
+
+#if 0
+# define F(X) createFunctor(X)
+#else
+# define F(X) X
+#endif
+
+
+QTEST_MAIN(tst_QtConcurrentRun)
+
+void light()
+{
+ qDebug("in function");
+ qDebug("done function");
+}
+
+void heavy()
+{
+ qDebug("in function");
+ QString str;
+ for (int i = 0; i < 1000000; ++i)
+ str.append("a");
+ qDebug("done function");
+}
+
+
+void tst_QtConcurrentRun::runLightFunction()
+{
+ qDebug("starting function");
+ QFuture<void> future = run(F(light));
+ qDebug("waiting");
+ future.waitForFinished();
+ qDebug("done");
+}
+
+void tst_QtConcurrentRun::runHeavyFunction()
+{
+ qDebug("starting function");
+ QFuture<void> future = run(F(heavy));
+ qDebug("waiting");
+ future.waitForFinished();
+ qDebug("done");
+}
+
+int returnInt0()
+{
+ return 10;
+}
+
+int returnInt1(int i)
+{
+ return i;
+}
+
+class A
+{
+public:
+ int member0() { return 10; }
+ int member1(int in) { return in; }
+
+ typedef int result_type;
+ int operator()() { return 10; }
+ int operator()(int in) { return in; }
+};
+
+class AConst
+{
+public:
+ int member0() const { return 10; }
+ int member1(int in) const { return in; }
+
+ typedef int result_type;
+ int operator()() const { return 10; }
+ int operator()(int in) const { return in; }
+};
+
+void tst_QtConcurrentRun::returnValue()
+{
+ QFuture<int> f;
+
+ f = run(F(returnInt0));
+ QCOMPARE(f.result(), 10);
+
+ A a;
+ f = run(&a, F(&A::member0));
+ QCOMPARE(f.result(), 10);
+
+ f = run(&a, F(&A::member1), 20);
+ QCOMPARE(f.result(), 20);
+
+ f = run(a, F(&A::member0));
+ QCOMPARE(f.result(), 10);
+
+ f = run(a, F(&A::member1), 20);
+ QCOMPARE(f.result(), 20);
+
+ f = run(a);
+ QCOMPARE(f.result(), 10);
+
+ f = run(&a);
+ QCOMPARE(f.result(), 10);
+
+ f = run(a, 20);
+ QCOMPARE(f.result(), 20);
+
+ f = run(&a, 20);
+ QCOMPARE(f.result(), 20);
+
+ const AConst aConst = AConst();
+ f = run(&aConst, &AConst::member0);
+ QCOMPARE(f.result(), 10);
+
+ f = run(&aConst, F(&AConst::member1), 20);
+ QCOMPARE(f.result(), 20);
+
+ f = run(aConst, F(&AConst::member0));
+ QCOMPARE(f.result(), 10);
+
+ f = run(aConst, F(&AConst::member1), 20);
+ QCOMPARE(f.result(), 20);
+
+ f = run(aConst);
+ QCOMPARE(f.result(), 10);
+
+ f = run(&aConst);
+ QCOMPARE(f.result(), 10);
+
+ f = run(aConst, 20);
+ QCOMPARE(f.result(), 20);
+
+ f = run(&aConst, 20);
+ QCOMPARE(f.result(), 20);
+}
+
+struct TestClass
+{
+ void foo() { }
+ typedef void result_type;
+ void operator()() { }
+ void operator()(int) { }
+ void fooInt(int){ };
+};
+
+struct TestConstClass
+{
+ void foo() const { }
+ typedef void result_type;
+ void operator()() const { }
+ void operator()(int) const { }
+ void fooInt(int) const { };
+};
+
+void tst_QtConcurrentRun::functionObject()
+{
+ QFuture<void> f;
+ TestClass c;
+
+ f = run(c);
+ f = run(F(&c));
+ f = run(c, 10);
+ f = run(F(&c), 10);
+
+ const TestConstClass cc = TestConstClass();
+ f = run(cc);
+ f = run(F(&cc));
+ f = run(cc, 10);
+ f = run(F(&cc), 10);
+}
+
+
+void tst_QtConcurrentRun::memberFunctions()
+{
+ TestClass c;
+
+ run(c, F(&TestClass::foo)).waitForFinished();
+ run(&c, F(&TestClass::foo)).waitForFinished();
+ run(c, F(&TestClass::fooInt), 10).waitForFinished();
+ run(&c, F(&TestClass::fooInt), 10).waitForFinished();
+
+ const TestConstClass cc = TestConstClass();
+ run(cc, F(&TestConstClass::foo)).waitForFinished();
+ run(&cc, F(&TestConstClass::foo)).waitForFinished();
+ run(cc, F(&TestConstClass::fooInt), 10).waitForFinished();
+ run(&cc, F(&TestConstClass::fooInt), 10).waitForFinished();
+}
+
+
+void doubleFunction(double)
+{
+
+}
+
+void stringConstRefFunction(const QString &)
+{
+
+}
+
+void stringRefFunction(QString &)
+{
+
+}
+
+void stringFunction(QString)
+{
+
+}
+
+void stringIntFunction(QString)
+{
+
+}
+
+
+void tst_QtConcurrentRun::implicitConvertibleTypes()
+{
+ double d;
+ run(F(doubleFunction), d).waitForFinished();
+ int i;
+ run(F(doubleFunction), d).waitForFinished();
+ run(F(doubleFunction), i).waitForFinished();
+ run(F(doubleFunction), 10).waitForFinished();
+ run(F(stringFunction), QLatin1String("Foo")).waitForFinished();
+ run(F(stringConstRefFunction), QLatin1String("Foo")).waitForFinished();
+ QString string;
+ run(F(stringRefFunction), string).waitForFinished();
+}
+
+void fn() { }
+
+void tst_QtConcurrentRun::runWaitLoop()
+{
+ for (int i = 0; i < 1000; ++i)
+ run(fn).waitForFinished();
+}
+
+QAtomicInt count;
+
+void recursiveRun(int level)
+{
+ count.ref();
+ if (--level > 0) {
+ QFuture<void> f1 = run(recursiveRun, level);
+ QFuture<void> f2 = run(recursiveRun, level);
+ f1.waitForFinished();
+ f2.waitForFinished();
+ }
+}
+
+int recursiveResult(int level)
+{
+ count.ref();
+ if (--level > 0) {
+ QFuture<int> f1 = run(recursiveResult, level);
+ QFuture<int> f2 = run(recursiveResult, level);
+ return f1.result() + f2.result();
+ }
+ return 1;
+}
+
+void tst_QtConcurrentRun::recursive()
+{
+ int levels = 15;
+
+ for (int i = 0; i < QThread::idealThreadCount(); ++i) {
+ count = 0;
+ QThreadPool::globalInstance()->setMaxThreadCount(i);
+ recursiveRun(levels);
+ QCOMPARE((int)count, (int)pow(2.0, levels) - 1);
+ }
+
+ for (int i = 0; i < QThread::idealThreadCount(); ++i) {
+ count = 0;
+ QThreadPool::globalInstance()->setMaxThreadCount(i);
+ recursiveResult(levels);
+ QCOMPARE((int)count, (int)pow(2.0, levels) - 1);
+ }
+}
+
+int e;
+void vfn0()
+{
+ ++e;
+}
+
+int fn0()
+{
+ return 1;
+}
+
+void vfn1(double)
+{
+ ++e;
+}
+
+int fn1(int)
+{
+ return 1;
+}
+
+void vfn2(double, int *)
+{
+ ++e;
+}
+
+int fn2(double, int *)
+{
+ return 1;
+}
+
+
+#ifndef QT_NO_EXCEPTIONS
+void throwFunction()
+{
+ throw QtConcurrent::Exception();
+}
+
+int throwFunctionReturn()
+{
+ throw QtConcurrent::Exception();
+ return 0;
+}
+
+void tst_QtConcurrentRun::exceptions()
+{
+ bool caught = false;
+ try {
+ QtConcurrent::run(throwFunction).waitForFinished();
+ } catch (Exception &e) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+
+ caught = false;
+ try {
+ QtConcurrent::run(throwFunctionReturn).waitForFinished();
+ } catch (Exception &e) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+}
+#endif
+
+#if 0
+void tst_QtConcurrentRun::createFunctor()
+{
+ e = 0;
+ ::QtConcurrent::createFunctor(vfn0)();
+ e += QtConcurrent::createFunctor(fn0)();
+ ::QtConcurrent::createFunctor(vfn1)(1); // implicit conversions should work
+ e += QtConcurrent::createFunctor(fn1)(2);
+ ::QtConcurrent::createFunctor(vfn2)(1.0, &e);
+ e += QtConcurrent::createFunctor(fn2)(2, &e);
+ QCOMPARE(e, 6);
+
+
+ e = 0;
+ TestClass c;
+
+// ::QtConcurrent::createFunctor(c, &TestClass::foo)();
+ ::QtConcurrent::createFunctor(&c, &TestClass::foo)();
+// ::QtConcurrent::createFunctor(c, &TestClass::fooInt)(10);
+ ::QtConcurrent::createFunctor(&c, &TestClass::fooInt)(10);
+
+ const TestConstClass cc = TestConstClass();
+/*
+ ::QtConcurrent::createFunctor(cc, &TestConstClass::foo)();
+ ::QtConcurrent::createFunctor(&cc, &TestConstClass::foo)();
+ ::QtConcurrent::createFunctor(cc, &TestConstClass::fooInt(10);
+ ::QtConcurrent::createFunctor(&cc, &TestConstClass::fooInt)(10);
+*/
+ qDebug() << e;
+}
+#endif
+
+struct Functor {
+ int operator()() { return 42; }
+ double operator()(double a, double b) { return a/b; }
+ int operator()(int a, int b) { return a/b; }
+ void operator()(int) { }
+ void operator()(int, int, int) { }
+ void operator()(int, int, int, int) { }
+ void operator()(int, int, int, int, int) { }
+ void operator()(int, int, int, int, int, int) { }
+};
+
+void tst_QtConcurrentRun::functor()
+{
+ //this test functor without result_type, decltype need to be supported by the compiler
+#ifndef Q_COMPILER_DECLTYPE
+ QSKIP("Compiler do not suport decltype", SkipAll);
+#else
+ Functor f;
+ {
+ QFuture<int> fut = QtConcurrent::run(f);
+ QCOMPARE(fut.result(), 42);
+ }
+ {
+ QFuture<double> fut = QtConcurrent::run(f, 8.5, 1.8);
+ QCOMPARE(fut.result(), (8.5/1.8));
+ }
+ {
+ QFuture<int> fut = QtConcurrent::run(f, 19, 3);
+ QCOMPARE(fut.result(), int(19/3));
+ }
+ {
+ QtConcurrent::run(f, 1).waitForFinished();
+ QtConcurrent::run(f, 1,2).waitForFinished();
+ QtConcurrent::run(f, 1,2,3).waitForFinished();
+ QtConcurrent::run(f, 1,2,3,4).waitForFinished();
+ QtConcurrent::run(f, 1,2,3,4,5).waitForFinished();
+ }
+#endif
+}
+
+
+void tst_QtConcurrentRun::lambda()
+{
+#ifndef Q_COMPILER_LAMBDA
+ QSKIP("Compiler do not suport lambda", SkipAll);
+#else
+
+ QCOMPARE(QtConcurrent::run([](){ return 45; }).result(), 45);
+ QCOMPARE(QtConcurrent::run([](int a){ return a+15; }, 12).result(), 12+15);
+ QCOMPARE(QtConcurrent::run([](int a, double b){ return a + b; }, 12, 15).result(), double(12+15));
+ QCOMPARE(QtConcurrent::run([](int a , int, int, int, int b){ return a + b; }, 1, 2, 3, 4, 5).result(), 1 + 5);
+
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+ {
+ QString str { "Hello World Foo" };
+ QFuture<QStringList> f1 = QtConcurrent::run([&](){ return str.split(' '); });
+ auto r = f1.result();
+ QCOMPARE(r, QStringList({"Hello", "World", "Foo"}));
+ }
+#endif
+
+#endif
+}
+
+
+#include "tst_qtconcurrentrun.moc"
+
+#else
+QTEST_NOOP_MAIN
+#endif
diff --git a/tests/auto/corelib/concurrent/qtconcurrentthreadengine/.gitignore b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/.gitignore
new file mode 100644
index 0000000000..a2e2896246
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/.gitignore
@@ -0,0 +1 @@
+tst_qtconcurrentthreadengine
diff --git a/tests/auto/corelib/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
new file mode 100644
index 0000000000..bbfcf5ebe3
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qtconcurrentthreadengine.cpp
+QT = core
+CONFIG += parallel_test
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp
new file mode 100644
index 0000000000..f22a2ed64b
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp
@@ -0,0 +1,536 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtconcurrentthreadengine.h>
+#include <qtconcurrentexception.h>
+#include <QThread>
+#include <QtTest/QtTest>
+#include "../qfuture/versioncheck.h"
+
+#ifndef QT_NO_CONCURRENT_TEST
+
+using namespace QtConcurrent;
+
+class tst_QtConcurrentThreadEngine: public QObject
+{
+ Q_OBJECT
+public:
+ void threadCount();
+private slots:
+ void runDirectly();
+ void result();
+ void runThroughStarter();
+ void cancel();
+ void throttle();
+ void multipleResults();
+ void stresstest();
+ void cancelQueuedSlowUser();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+#endif
+};
+
+
+class PrintUser : public ThreadEngine<void>
+{
+public:
+ ThreadFunctionResult threadFunction()
+ {
+ QTest::qSleep(50);
+ QTest::qSleep(100);
+ return ThreadFinished;
+ }
+};
+
+void tst_QtConcurrentThreadEngine::runDirectly()
+{
+ {
+ PrintUser engine;
+ engine.startSingleThreaded();
+ engine.startBlocking();
+ }
+ {
+ PrintUser *engine = new PrintUser();
+ QFuture<void> f = engine->startAsynchronously();
+ f.waitForFinished();
+ }
+}
+
+class StringResultUser : public ThreadEngine<QString>
+{
+public:
+ typedef QString ResultType;
+ StringResultUser()
+ : done(false) { }
+
+ bool shouldStartThread()
+ {
+ return !done;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ done = true;
+ return ThreadFinished;
+ }
+
+ QString *result()
+ {
+ foo = "Foo";
+ return &foo;
+ }
+ QString foo;
+ bool done;
+};
+
+void tst_QtConcurrentThreadEngine::result()
+{
+ StringResultUser engine;
+ QCOMPARE(*engine.startBlocking(), QString("Foo"));
+}
+
+class VoidResultUser : public ThreadEngine<void>
+{
+public:
+ bool shouldStartThread()
+ {
+ return !done;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ done = true;
+ return ThreadFinished;
+ }
+
+ void *result()
+ {
+ return 0;
+ }
+ bool done;
+};
+
+void tst_QtConcurrentThreadEngine::runThroughStarter()
+{
+ {
+ ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser());
+ QFuture<QString> f = starter.startAsynchronously();
+ QCOMPARE(f.result(), QString("Foo"));
+ }
+
+ {
+ ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser());
+ QString str = starter.startBlocking();
+ QCOMPARE(str, QString("Foo"));
+ }
+}
+
+class CancelUser : public ThreadEngine<void>
+{
+public:
+ void *result()
+ {
+ return 0;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ while (this->isCanceled() == false)
+ {
+ QTest::qSleep(10);
+ }
+ return ThreadFinished;
+ }
+};
+
+void tst_QtConcurrentThreadEngine::cancel()
+{
+ {
+ CancelUser *engine = new CancelUser();
+ QFuture<void> f = engine->startAsynchronously();
+ f.cancel();
+ f.waitForFinished();
+ }
+ {
+ CancelUser *engine = new CancelUser();
+ QFuture<void> f = engine->startAsynchronously();
+ QTest::qSleep(10);
+ f.cancel();
+ f.waitForFinished();
+ }
+}
+
+QAtomicInt count;
+class ThrottleAlwaysUser : public ThreadEngine<void>
+{
+public:
+ ThrottleAlwaysUser()
+ {
+ count = initialCount = 100;
+ finishing = false;
+ }
+
+ bool shouldStartThread()
+ {
+ return !finishing;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ forever {
+ const int local = count;
+ if (local == 0) {
+ finishing = true;
+ return ThreadFinished;
+ }
+
+ if (count.testAndSetOrdered(local, local - 1))
+ break;
+ }
+ return ThrottleThread;
+ }
+
+ bool finishing;
+ int initialCount;
+};
+
+// Test that a user task with a thread function that always
+// want to be throttled still completes. The thread engine
+// should make keep one thread running at all times.
+void tst_QtConcurrentThreadEngine::throttle()
+{
+ const int repeats = 10;
+ for (int i = 0; i < repeats; ++i) {
+ QFuture<void> f = (new ThrottleAlwaysUser())->startAsynchronously();
+ f.waitForFinished();
+ QCOMPARE(int(count), 0);
+ }
+
+ for (int i = 0; i < repeats; ++i) {
+ ThrottleAlwaysUser t;
+ t.startBlocking();
+ QCOMPARE(int(count), 0);
+ }
+}
+
+QSet<QThread *> threads;
+QMutex mutex;
+class ThreadCountUser : public ThreadEngine<void>
+{
+public:
+ ThreadCountUser(bool finishImmediately = false)
+ {
+ threads.clear();
+ finishing = finishImmediately;
+ }
+
+ bool shouldStartThread()
+ {
+ return !finishing;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ {
+ QMutexLocker lock(&mutex);
+ threads.insert(QThread::currentThread());
+ }
+ QTest::qSleep(10);
+ finishing = true;
+ return ThreadFinished;
+ }
+
+ bool finishing;
+};
+
+void tst_QtConcurrentThreadEngine::threadCount()
+{
+ const int repeats = 10;
+ for (int i = 0; i < repeats; ++i) {
+ ThreadCountUser t;
+ t.startBlocking();
+ QCOMPARE(threads.count(), QThreadPool::globalInstance()->maxThreadCount() + 1); // +1 for the main thread.
+
+ (new ThreadCountUser())->startAsynchronously().waitForFinished();
+ QCOMPARE(threads.count(), QThreadPool::globalInstance()->maxThreadCount());
+ }
+
+ // Set the finish flag immediately, this should give us one thread only.
+ for (int i = 0; i < repeats; ++i) {
+ ThreadCountUser t(true /*finishImmediately*/);
+ t.startBlocking();
+ QCOMPARE(threads.count(), 1);
+
+ (new ThreadCountUser(true /*finishImmediately*/))->startAsynchronously().waitForFinished();
+ QCOMPARE(threads.count(), 1);
+ }
+}
+
+class MultipleResultsUser : public ThreadEngine<int>
+{
+public:
+ bool shouldStartThread()
+ {
+ return false;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ for (int i = 0; i < 10; ++i)
+ this->reportResult(&i);
+ return ThreadFinished;
+ }
+};
+
+
+void tst_QtConcurrentThreadEngine::multipleResults()
+{
+ MultipleResultsUser *engine = new MultipleResultsUser();
+ QFuture<int> f = engine->startAsynchronously();
+ QCOMPARE(f.results().count() , 10);
+ QCOMPARE(f.resultAt(0), 0);
+ QCOMPARE(f.resultAt(5), 5);
+ QCOMPARE(f.resultAt(9), 9);
+ f.waitForFinished();
+}
+
+
+class NoThreadsUser : public ThreadEngine<void>
+{
+public:
+ bool shouldStartThread()
+ {
+ return false;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ return ThreadFinished;
+ }
+
+ void *result()
+ {
+ return 0;
+ }
+};
+
+void tst_QtConcurrentThreadEngine::stresstest()
+{
+ const int times = 20000;
+
+ for (int i = 0; i < times; ++i) {
+ VoidResultUser *engine = new VoidResultUser();
+ engine->startAsynchronously().waitForFinished();
+ }
+
+ for (int i = 0; i < times; ++i) {
+ VoidResultUser *engine = new VoidResultUser();
+ engine->startAsynchronously();
+ }
+
+ for (int i = 0; i < times; ++i) {
+ VoidResultUser *engine = new VoidResultUser();
+ engine->startAsynchronously().waitForFinished();
+ }
+}
+
+const int sleepTime = 20;
+class SlowUser : public ThreadEngine<void>
+{
+public:
+ bool shouldStartThread() { return false; }
+ ThreadFunctionResult threadFunction() { QTest::qSleep(sleepTime); return ThreadFinished; }
+};
+
+void tst_QtConcurrentThreadEngine::cancelQueuedSlowUser()
+{
+ const int times = 100;
+
+ QTime t;
+ t.start();
+
+ {
+ QList<QFuture<void> > futures;
+ for (int i = 0; i < times; ++i) {
+ SlowUser *engine = new SlowUser();
+ futures.append(engine->startAsynchronously());
+ }
+
+ foreach(QFuture<void> future, futures)
+ future.cancel();
+ }
+
+ QVERIFY(t.elapsed() < (sleepTime * times) / 2);
+}
+
+#ifndef QT_NO_EXCEPTIONS
+
+class QtConcurrentExceptionThrower : public ThreadEngine<void>
+{
+public:
+ QtConcurrentExceptionThrower(QThread *blockThread = 0)
+ {
+ this->blockThread = blockThread;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ QTest::qSleep(50);
+ throw QtConcurrent::Exception();
+ return ThreadFinished;
+ }
+ QThread *blockThread;
+};
+
+class UnrelatedExceptionThrower : public ThreadEngine<void>
+{
+public:
+ UnrelatedExceptionThrower(QThread *blockThread = 0)
+ {
+ this->blockThread = blockThread;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ QTest::qSleep(50);
+ throw int();
+ return ThreadFinished;
+ }
+ QThread *blockThread;
+};
+
+void tst_QtConcurrentThreadEngine::exceptions()
+{
+ // Asynchronous mode:
+ {
+ bool caught = false;
+ try {
+ QtConcurrentExceptionThrower *e = new QtConcurrentExceptionThrower();
+ QFuture<void> f = e->startAsynchronously();
+ f.waitForFinished();
+ } catch (const Exception &) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+ }
+
+ // Blocking mode:
+ // test throwing the exception from a worker thread.
+ {
+ bool caught = false;
+ try {
+ QtConcurrentExceptionThrower e(QThread::currentThread());
+ e.startBlocking();
+ } catch (const Exception &) {
+ caught = true;
+ }
+
+ if (!caught)
+ QFAIL("did not get exception");
+ }
+
+ // test throwing the exception from the main thread (different code path)
+ {
+ bool caught = false;
+ try {
+ QtConcurrentExceptionThrower e(0);
+ e.startBlocking();
+ } catch (const Exception &) {
+ caught = true;
+ }
+
+ if (!caught)
+ QFAIL("did not get exception");
+ }
+
+ // Asynchronous mode:
+ {
+ bool caught = false;
+ try {
+ UnrelatedExceptionThrower *e = new UnrelatedExceptionThrower();
+ QFuture<void> f = e->startAsynchronously();
+ f.waitForFinished();
+ } catch (const QtConcurrent::UnhandledException &) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+ }
+
+ // Blocking mode:
+ // test throwing the exception from a worker thread.
+ {
+ bool caught = false;
+ try {
+ UnrelatedExceptionThrower e(QThread::currentThread());
+ e.startBlocking();
+ } catch (const QtConcurrent::UnhandledException &) {
+ caught = true;
+ }
+
+ if (!caught)
+ QFAIL("did not get exception");
+ }
+
+ // test throwing the exception from the main thread (different code path)
+ {
+ bool caught = false;
+ try {
+ UnrelatedExceptionThrower e(0);
+ e.startBlocking();
+ } catch (const QtConcurrent::UnhandledException &) {
+ caught = true;
+ }
+
+ if (!caught)
+ QFAIL("did not get exception");
+ }
+}
+
+#endif
+
+QTEST_MAIN(tst_QtConcurrentThreadEngine)
+
+#include "tst_qtconcurrentthreadengine.moc"
+
+#else
+QTEST_NOOP_MAIN
+#endif
diff --git a/tests/auto/corelib/concurrent/qthreadpool/.gitignore b/tests/auto/corelib/concurrent/qthreadpool/.gitignore
new file mode 100644
index 0000000000..16105821a2
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qthreadpool/.gitignore
@@ -0,0 +1 @@
+tst_qthreadpool
diff --git a/tests/auto/corelib/concurrent/qthreadpool/qthreadpool.pro b/tests/auto/corelib/concurrent/qthreadpool/qthreadpool.pro
new file mode 100644
index 0000000000..dbaeb208dd
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qthreadpool/qthreadpool.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qthreadpool.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/concurrent/qthreadpool/tst_qthreadpool.cpp b/tests/auto/corelib/concurrent/qthreadpool/tst_qthreadpool.cpp
new file mode 100644
index 0000000000..49c517a569
--- /dev/null
+++ b/tests/auto/corelib/concurrent/qthreadpool/tst_qthreadpool.cpp
@@ -0,0 +1,870 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtTest/QtTest>
+#include <qdatetime.h>
+#include <qthreadpool.h>
+#include <qstring.h>
+#include <qmutex.h>
+
+typedef void (*FunctionPointer)();
+
+class FunctionPointerTask : public QRunnable
+{
+public:
+ FunctionPointerTask(FunctionPointer function)
+ :function(function) {}
+ void run() { function(); }
+private:
+ FunctionPointer function;
+};
+
+QRunnable *createTask(FunctionPointer pointer)
+{
+ return new FunctionPointerTask(pointer);
+}
+
+class tst_QThreadPool : public QObject
+{
+ Q_OBJECT
+private slots:
+ void runFunction();
+ void createThreadRunFunction();
+ void runMultiple();
+ void waitcomplete();
+ void runTask();
+ void singleton();
+ void destruction();
+ void threadRecycling();
+ void expiryTimeout();
+ void exceptions();
+ void maxThreadCount();
+ void setMaxThreadCount_data();
+ void setMaxThreadCount();
+ void setMaxThreadCountStartsAndStopsThreads();
+ void activeThreadCount();
+ void reserveThread_data();
+ void reserveThread();
+ void releaseThread_data();
+ void releaseThread();
+ void start();
+ void tryStart();
+ void tryStartPeakThreadCount();
+ void tryStartCount();
+ void waitForDone();
+ void waitForDoneTimeout();
+ void destroyingWaitsForTasksToFinish();
+ void stressTest();
+};
+
+int testFunctionCount;
+
+void sleepTestFunction()
+{
+ QTest::qSleep(1000);
+ ++testFunctionCount;
+}
+
+void emptyFunct()
+{
+
+}
+
+void noSleepTestFunction()
+{
+ ++testFunctionCount;
+}
+
+void sleepTestFunctionMutex()
+{
+ static QMutex testMutex;
+ QTest::qSleep(1000);
+ testMutex.lock();
+ ++testFunctionCount;
+ testMutex.unlock();
+}
+
+void noSleepTestFunctionMutex()
+{
+ static QMutex testMutex;
+ testMutex.lock();
+ ++testFunctionCount;
+ testMutex.unlock();
+}
+
+void tst_QThreadPool::runFunction()
+{
+ {
+ QThreadPool manager;
+ testFunctionCount = 0;
+ manager.start(createTask(noSleepTestFunction));
+ }
+ QCOMPARE(testFunctionCount, 1);
+}
+
+void tst_QThreadPool::createThreadRunFunction()
+{
+ {
+ QThreadPool manager;
+ testFunctionCount = 0;
+ manager.start(createTask(noSleepTestFunction));
+ }
+
+ QCOMPARE(testFunctionCount, 1);
+}
+
+void tst_QThreadPool::runMultiple()
+{
+ const int runs = 10;
+
+ {
+ QThreadPool manager;
+ testFunctionCount = 0;
+ for (int i = 0; i < runs; ++i) {
+ manager.start(createTask(sleepTestFunctionMutex));
+ }
+ }
+ QCOMPARE(testFunctionCount, runs);
+
+ {
+ QThreadPool manager;
+ testFunctionCount = 0;
+ for (int i = 0; i < runs; ++i) {
+ manager.start(createTask(noSleepTestFunctionMutex));
+ }
+ }
+ QCOMPARE(testFunctionCount, runs);
+
+ {
+ QThreadPool manager;
+ for (int i = 0; i < 500; ++i)
+ manager.start(createTask(emptyFunct));
+ }
+}
+
+void tst_QThreadPool::waitcomplete()
+{
+ testFunctionCount = 0;
+ const int runs = 500;
+ for (int i = 0; i < 500; ++i) {
+ QThreadPool pool;
+ pool.start(createTask(noSleepTestFunction));
+ }
+ QCOMPARE(testFunctionCount, runs);
+}
+
+volatile bool ran;
+class TestTask : public QRunnable
+{
+public:
+ void run()
+ {
+ ran = true;
+ }
+};
+
+void tst_QThreadPool::runTask()
+{
+ QThreadPool manager;
+ ran = false;
+ manager.start(new TestTask());
+ // Hang if task is not runned.
+ while (ran == false)
+ QTest::qSleep(100); // no busy loop - this doesn't work with FIFO schedulers
+}
+
+/*
+ Test running via QThreadPool::globalInstance()
+*/
+void tst_QThreadPool::singleton()
+{
+ ran = false;
+ QThreadPool::globalInstance()->start(new TestTask());
+ while (ran == false)
+ QTest::qSleep(100); // no busy loop - this doesn't work with FIFO schedulers
+}
+
+int *value = 0;
+class IntAccessor : public QRunnable
+{
+public:
+ void run()
+ {
+ for (int i = 0; i < 100; ++i) {
+ ++(*value);
+ QTest::qSleep(1);
+ }
+ }
+};
+
+/*
+ Test that the ThreadManager destructor waits until
+ all threads have completed.
+*/
+void tst_QThreadPool::destruction()
+{
+ value = new int;
+ QThreadPool *threadManager = new QThreadPool();
+ threadManager->start(new IntAccessor());
+ threadManager->start(new IntAccessor());
+ delete threadManager;
+ delete value;
+ value = 0;
+}
+
+QSemaphore threadRecyclingSemaphore;
+QThread *recycledThread = 0;
+
+class ThreadRecorderTask : public QRunnable
+{
+public:
+ void run()
+ {
+ recycledThread = QThread::currentThread();
+ threadRecyclingSemaphore.release();
+ }
+};
+
+/*
+ Test that the thread pool really reuses threads.
+*/
+void tst_QThreadPool::threadRecycling()
+{
+ QThreadPool threadPool;
+
+ threadPool.start(new ThreadRecorderTask());
+ threadRecyclingSemaphore.acquire();
+ QThread *thread1 = recycledThread;
+
+ QTest::qSleep(100);
+
+ threadPool.start(new ThreadRecorderTask());
+ threadRecyclingSemaphore.acquire();
+ QThread *thread2 = recycledThread;
+ QCOMPARE(thread1, thread2);
+
+ QTest::qSleep(100);
+
+ threadPool.start(new ThreadRecorderTask());
+ threadRecyclingSemaphore.acquire();
+ QThread *thread3 = recycledThread;
+ QCOMPARE(thread2, thread3);
+}
+
+class ExpiryTimeoutTask : public QRunnable
+{
+public:
+ QThread *thread;
+ int runCount;
+ QSemaphore semaphore;
+
+ ExpiryTimeoutTask()
+ : thread(0), runCount(0)
+ {
+ setAutoDelete(false);
+ }
+
+ void run()
+ {
+ thread = QThread::currentThread();
+ ++runCount;
+ semaphore.release();
+ }
+};
+
+void tst_QThreadPool::expiryTimeout()
+{
+ ExpiryTimeoutTask task;
+
+ QThreadPool threadPool;
+ threadPool.setMaxThreadCount(1);
+
+ int expiryTimeout = threadPool.expiryTimeout();
+ threadPool.setExpiryTimeout(1000);
+ QCOMPARE(threadPool.expiryTimeout(), 1000);
+
+ // run the task
+ threadPool.start(&task);
+ QVERIFY(task.semaphore.tryAcquire(1, 10000));
+ QCOMPARE(task.runCount, 1);
+ QVERIFY(!task.thread->wait(100));
+ // thread should expire
+ QThread *firstThread = task.thread;
+ QVERIFY(task.thread->wait(10000));
+
+ // run task again, thread should be restarted
+ threadPool.start(&task);
+ QVERIFY(task.semaphore.tryAcquire(1, 10000));
+ QCOMPARE(task.runCount, 2);
+ QVERIFY(!task.thread->wait(100));
+ // thread should expire again
+ QVERIFY(task.thread->wait(10000));
+
+ // thread pool should have reused the expired thread (instead of
+ // starting a new one)
+ QCOMPARE(firstThread, task.thread);
+
+ threadPool.setExpiryTimeout(expiryTimeout);
+ QCOMPARE(threadPool.expiryTimeout(), expiryTimeout);
+}
+
+#ifndef QT_NO_EXCEPTIONS
+class ExceptionTask : public QRunnable
+{
+public:
+ void run()
+ {
+ throw new int;
+ }
+};
+#endif
+
+void tst_QThreadPool::exceptions()
+{
+#ifndef QT_NO_EXCEPTIONS
+ ExceptionTask task;
+ {
+ QThreadPool threadPool;
+// Uncomment this for a nice crash.
+// threadPool.start(&task);
+ }
+#else
+ QSKIP("No exception support", SkipAll);
+#endif
+}
+
+void tst_QThreadPool::maxThreadCount()
+{
+ DEPENDS_ON("setMaxThreadCount()");
+}
+
+void tst_QThreadPool::setMaxThreadCount_data()
+{
+ QTest::addColumn<int>("limit");
+
+ QTest::newRow("") << 1;
+ QTest::newRow("") << -1;
+ QTest::newRow("") << 2;
+ QTest::newRow("") << -2;
+ QTest::newRow("") << 4;
+ QTest::newRow("") << -4;
+ QTest::newRow("") << 0;
+ QTest::newRow("") << 12345;
+ QTest::newRow("") << -6789;
+ QTest::newRow("") << 42;
+ QTest::newRow("") << -666;
+}
+
+void tst_QThreadPool::setMaxThreadCount()
+{
+ QFETCH(int, limit);
+ QThreadPool *threadPool = QThreadPool::globalInstance();
+ int savedLimit = threadPool->maxThreadCount();
+
+ // maxThreadCount() should always return the previous argument to
+ // setMaxThreadCount(), regardless of input
+ threadPool->setMaxThreadCount(limit);
+ QCOMPARE(threadPool->maxThreadCount(), limit);
+
+ // the value returned from maxThreadCount() should always be valid input for setMaxThreadCount()
+ threadPool->setMaxThreadCount(savedLimit);
+ QCOMPARE(threadPool->maxThreadCount(), savedLimit);
+
+ // setting the limit on children should have no effect on the parent
+ {
+ QThreadPool threadPool2(threadPool);
+ savedLimit = threadPool2.maxThreadCount();
+
+ // maxThreadCount() should always return the previous argument to
+ // setMaxThreadCount(), regardless of input
+ threadPool2.setMaxThreadCount(limit);
+ QCOMPARE(threadPool2.maxThreadCount(), limit);
+
+ // the value returned from maxThreadCount() should always be valid input for setMaxThreadCount()
+ threadPool2.setMaxThreadCount(savedLimit);
+ QCOMPARE(threadPool2.maxThreadCount(), savedLimit);
+ }
+}
+
+void tst_QThreadPool::setMaxThreadCountStartsAndStopsThreads()
+{
+ class WaitingTask : public QRunnable
+ {
+ public:
+ QSemaphore waitForStarted, waitToFinish;
+
+ WaitingTask() { setAutoDelete(false); }
+
+ void run()
+ {
+ waitForStarted.release();
+ waitToFinish.acquire();
+ }
+ };
+
+ QThreadPool threadPool;
+ threadPool.setMaxThreadCount(1);
+
+ WaitingTask *task = new WaitingTask;
+ threadPool.start(task);
+ QVERIFY(task->waitForStarted.tryAcquire(1, 1000));
+
+ // thread limit is 1, cannot start more tasks
+ threadPool.start(task);
+ QVERIFY(!task->waitForStarted.tryAcquire(1, 1000));
+
+ // increasing the limit by 1 should start the task immediately
+ threadPool.setMaxThreadCount(2);
+ QVERIFY(task->waitForStarted.tryAcquire(1, 1000));
+
+ // ... but we still cannot start more tasks
+ threadPool.start(task);
+ QVERIFY(!task->waitForStarted.tryAcquire(1, 1000));
+
+ // increasing the limit should be able to start more than one at a time
+ threadPool.start(task);
+ threadPool.setMaxThreadCount(4);
+ QVERIFY(task->waitForStarted.tryAcquire(2, 1000));
+
+ // ... but we still cannot start more tasks
+ threadPool.start(task);
+ threadPool.start(task);
+ QVERIFY(!task->waitForStarted.tryAcquire(2, 1000));
+
+ // decreasing the thread limit should cause the active thread count to go down
+ threadPool.setMaxThreadCount(2);
+ QCOMPARE(threadPool.activeThreadCount(), 4);
+ task->waitToFinish.release(2);
+ QTest::qWait(1000);
+ QCOMPARE(threadPool.activeThreadCount(), 2);
+
+ // ... and we still cannot start more tasks
+ threadPool.start(task);
+ threadPool.start(task);
+ QVERIFY(!task->waitForStarted.tryAcquire(2, 1000));
+
+ // start all remaining tasks
+ threadPool.start(task);
+ threadPool.start(task);
+ threadPool.start(task);
+ threadPool.start(task);
+ threadPool.setMaxThreadCount(8);
+ QVERIFY(task->waitForStarted.tryAcquire(6, 1000));
+
+ task->waitToFinish.release(10);
+// delete task;
+}
+
+
+void tst_QThreadPool::activeThreadCount()
+{
+ DEPENDS_ON("tryReserveThread()");
+ DEPENDS_ON("reserveThread()");
+ DEPENDS_ON("releaseThread()");
+}
+
+void tst_QThreadPool::reserveThread_data()
+{
+ setMaxThreadCount_data();
+}
+
+void tst_QThreadPool::reserveThread()
+{
+ QFETCH(int, limit);
+ QThreadPool *threadpool = QThreadPool::globalInstance();
+ int savedLimit = threadpool->maxThreadCount();
+ threadpool->setMaxThreadCount(limit);
+
+ // reserve up to the limit
+ for (int i = 0; i < limit; ++i)
+ threadpool->reserveThread();
+
+ // reserveThread() should always reserve a thread, regardless of
+ // how many have been previously reserved
+ threadpool->reserveThread();
+ QCOMPARE(threadpool->activeThreadCount(), (limit > 0 ? limit : 0) + 1);
+ threadpool->reserveThread();
+ QCOMPARE(threadpool->activeThreadCount(), (limit > 0 ? limit : 0) + 2);
+
+ // cleanup
+ threadpool->releaseThread();
+ threadpool->releaseThread();
+ for (int i = 0; i < limit; ++i)
+ threadpool->releaseThread();
+
+ // reserving threads in children should not effect the parent
+ {
+ QThreadPool threadpool2(threadpool);
+ threadpool2.setMaxThreadCount(limit);
+
+ // reserve up to the limit
+ for (int i = 0; i < limit; ++i)
+ threadpool2.reserveThread();
+
+ // reserveThread() should always reserve a thread, regardless
+ // of how many have been previously reserved
+ threadpool2.reserveThread();
+ QCOMPARE(threadpool2.activeThreadCount(), (limit > 0 ? limit : 0) + 1);
+ threadpool2.reserveThread();
+ QCOMPARE(threadpool2.activeThreadCount(), (limit > 0 ? limit : 0) + 2);
+
+ threadpool->reserveThread();
+ QCOMPARE(threadpool->activeThreadCount(), 1);
+ threadpool->reserveThread();
+ QCOMPARE(threadpool->activeThreadCount(), 2);
+
+ // cleanup
+ threadpool2.releaseThread();
+ threadpool2.releaseThread();
+ threadpool->releaseThread();
+ threadpool->releaseThread();
+ while (threadpool2.activeThreadCount() > 0)
+ threadpool2.releaseThread();
+ }
+
+ // reset limit on global QThreadPool
+ threadpool->setMaxThreadCount(savedLimit);
+}
+
+void tst_QThreadPool::releaseThread_data()
+{
+ setMaxThreadCount_data();
+}
+
+void tst_QThreadPool::releaseThread()
+{
+ QFETCH(int, limit);
+ QThreadPool *threadpool = QThreadPool::globalInstance();
+ int savedLimit = threadpool->maxThreadCount();
+ threadpool->setMaxThreadCount(limit);
+
+ // reserve up to the limit
+ for (int i = 0; i < limit; ++i)
+ threadpool->reserveThread();
+
+ // release should decrease the number of reserved threads
+ int reserved = threadpool->activeThreadCount();
+ while (reserved-- > 0) {
+ threadpool->releaseThread();
+ QCOMPARE(threadpool->activeThreadCount(), reserved);
+ }
+ QCOMPARE(threadpool->activeThreadCount(), 0);
+
+ // releaseThread() can release more than have been reserved
+ threadpool->releaseThread();
+ QCOMPARE(threadpool->activeThreadCount(), -1);
+ threadpool->reserveThread();
+ QCOMPARE(threadpool->activeThreadCount(), 0);
+
+ // releasing threads in children should not effect the parent
+ {
+ QThreadPool threadpool2(threadpool);
+ threadpool2.setMaxThreadCount(limit);
+
+ // reserve up to the limit
+ for (int i = 0; i < limit; ++i)
+ threadpool2.reserveThread();
+
+ // release should decrease the number of reserved threads
+ int reserved = threadpool2.activeThreadCount();
+ while (reserved-- > 0) {
+ threadpool2.releaseThread();
+ QCOMPARE(threadpool2.activeThreadCount(), reserved);
+ QCOMPARE(threadpool->activeThreadCount(), 0);
+ }
+ QCOMPARE(threadpool2.activeThreadCount(), 0);
+ QCOMPARE(threadpool->activeThreadCount(), 0);
+
+ // releaseThread() can release more than have been reserved
+ threadpool2.releaseThread();
+ QCOMPARE(threadpool2.activeThreadCount(), -1);
+ QCOMPARE(threadpool->activeThreadCount(), 0);
+ threadpool2.reserveThread();
+ QCOMPARE(threadpool2.activeThreadCount(), 0);
+ QCOMPARE(threadpool->activeThreadCount(), 0);
+ }
+
+ // reset limit on global QThreadPool
+ threadpool->setMaxThreadCount(savedLimit);
+}
+
+QAtomicInt count;
+class CountingRunnable : public QRunnable
+{
+ public: void run()
+ {
+ count.ref();
+ }
+};
+
+void tst_QThreadPool::start()
+{
+ const int runs = 1000;
+ count = 0;
+ {
+ QThreadPool threadPool;
+ for (int i = 0; i< runs; ++i) {
+ threadPool.start(new CountingRunnable());
+ }
+ }
+ QCOMPARE(int(count), runs);
+}
+
+void tst_QThreadPool::tryStart()
+{
+ class WaitingTask : public QRunnable
+ {
+ public:
+ QSemaphore semaphore;
+
+ WaitingTask() { setAutoDelete(false); }
+
+ void run()
+ {
+ semaphore.acquire();
+ count.ref();
+ }
+ };
+
+ count = 0;
+
+ WaitingTask task;
+ QThreadPool threadPool;
+ for (int i = 0; i < threadPool.maxThreadCount(); ++i) {
+ threadPool.start(&task);
+ }
+ QVERIFY(!threadPool.tryStart(&task));
+ task.semaphore.release(threadPool.maxThreadCount());
+ threadPool.waitForDone();
+ QCOMPARE(int(count), threadPool.maxThreadCount());
+}
+
+QMutex mutex;
+int activeThreads = 0;
+int peakActiveThreads = 0;
+void tst_QThreadPool::tryStartPeakThreadCount()
+{
+ class CounterTask : public QRunnable
+ {
+ public:
+ CounterTask() { setAutoDelete(false); }
+
+ void run()
+ {
+ {
+ QMutexLocker lock(&mutex);
+ ++activeThreads;
+ peakActiveThreads = qMax(peakActiveThreads, activeThreads);
+ }
+
+ QTest::qWait(100);
+ {
+ QMutexLocker lock(&mutex);
+ --activeThreads;
+ }
+ }
+ };
+
+ CounterTask task;
+ QThreadPool threadPool;
+
+ for (int i = 0; i < 20; ++i) {
+ if (threadPool.tryStart(&task) == false)
+ QTest::qWait(10);
+ }
+ QCOMPARE(peakActiveThreads, QThread::idealThreadCount());
+
+ for (int i = 0; i < 20; ++i) {
+ if (threadPool.tryStart(&task) == false)
+ QTest::qWait(10);
+ }
+ QCOMPARE(peakActiveThreads, QThread::idealThreadCount());
+}
+
+void tst_QThreadPool::tryStartCount()
+{
+ class SleeperTask : public QRunnable
+ {
+ public:
+ SleeperTask() { setAutoDelete(false); }
+
+ void run()
+ {
+ QTest::qWait(50);
+ }
+ };
+
+ SleeperTask task;
+ QThreadPool threadPool;
+ const int runs = 5;
+
+ for (int i = 0; i < runs; ++i) {
+// qDebug() << "iteration" << i;
+ int count = 0;
+ while (threadPool.tryStart(&task))
+ ++count;
+ QCOMPARE(count, QThread::idealThreadCount());
+
+ QTest::qWait(100);
+ }
+}
+
+void tst_QThreadPool::waitForDone()
+{
+ QTime total, pass;
+ total.start();
+
+ QThreadPool threadPool;
+ while (total.elapsed() < 10000) {
+ int runs;
+ runs = count = 0;
+ pass.restart();
+ while (pass.elapsed() < 100) {
+ threadPool.start(new CountingRunnable());
+ ++runs;
+ }
+ threadPool.waitForDone();
+ QCOMPARE(int(count), runs);
+
+ runs = count = 0;
+ pass.restart();
+ while (pass.elapsed() < 100) {
+ threadPool.start(new CountingRunnable());
+ threadPool.start(new CountingRunnable());
+ runs += 2;
+ }
+ threadPool.waitForDone();
+ QCOMPARE(int(count), runs);
+ }
+}
+
+void tst_QThreadPool::waitForDoneTimeout()
+{
+ class BlockedTask : public QRunnable
+ {
+ public:
+ QMutex mutex;
+ BlockedTask() { setAutoDelete(false); }
+
+ void run()
+ {
+ mutex.lock();
+ mutex.unlock();
+ QTest::qSleep(50);
+ }
+ };
+
+ QThreadPool threadPool;
+
+ BlockedTask *task = new BlockedTask;
+ task->mutex.lock();
+ threadPool.start(task);
+ QVERIFY(!threadPool.waitForDone(100));
+ task->mutex.unlock();
+ QVERIFY(threadPool.waitForDone(400));
+}
+
+void tst_QThreadPool::destroyingWaitsForTasksToFinish()
+{
+ QTime total, pass;
+ total.start();
+
+ while (total.elapsed() < 10000) {
+ int runs;
+ runs = count = 0;
+ {
+ QThreadPool threadPool;
+ pass.restart();
+ while (pass.elapsed() < 100) {
+ threadPool.start(new CountingRunnable());
+ ++runs;
+ }
+ }
+ QCOMPARE(int(count), runs);
+
+ runs = count = 0;
+ {
+ QThreadPool threadPool;
+ pass.restart();
+ while (pass.elapsed() < 100) {
+ threadPool.start(new CountingRunnable());
+ threadPool.start(new CountingRunnable());
+ runs += 2;
+ }
+ }
+ QCOMPARE(int(count), runs);
+ }
+}
+
+void tst_QThreadPool::stressTest()
+{
+ class Task : public QRunnable
+ {
+ QSemaphore semaphore;
+ public:
+ Task() { setAutoDelete(false); }
+
+ void start()
+ {
+ QThreadPool::globalInstance()->start(this);
+ }
+
+ void wait()
+ {
+ semaphore.acquire();
+ }
+
+ void run()
+ {
+ semaphore.release();
+ }
+ };
+
+ QTime total;
+ total.start();
+ while (total.elapsed() < 30000) {
+ Task t;
+ t.start();
+ t.wait();
+ }
+}
+
+QTEST_MAIN(tst_QThreadPool);
+#include "tst_qthreadpool.moc"
diff --git a/tests/auto/corelib/corelib.pro b/tests/auto/corelib/corelib.pro
new file mode 100644
index 0000000000..b9063e5306
--- /dev/null
+++ b/tests/auto/corelib/corelib.pro
@@ -0,0 +1,13 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ animation \
+ codecs \
+ concurrent \
+ global \
+ io \
+ kernel \
+ plugin \
+ statemachine \
+ thread \
+ tools \
+ xml
diff --git a/tests/auto/corelib/global/global.pro b/tests/auto/corelib/global/global.pro
new file mode 100644
index 0000000000..e9b547be68
--- /dev/null
+++ b/tests/auto/corelib/global/global.pro
@@ -0,0 +1,8 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qflags \
+ q_func_info \
+ qgetputenv \
+ qglobal \
+ qnumeric \
+ qrand
diff --git a/tests/auto/corelib/global/q_func_info/.gitignore b/tests/auto/corelib/global/q_func_info/.gitignore
new file mode 100644
index 0000000000..ff7d730764
--- /dev/null
+++ b/tests/auto/corelib/global/q_func_info/.gitignore
@@ -0,0 +1 @@
+tst_q_func_info
diff --git a/tests/auto/corelib/global/q_func_info/q_func_info.pro b/tests/auto/corelib/global/q_func_info/q_func_info.pro
new file mode 100644
index 0000000000..64f08d4d8d
--- /dev/null
+++ b/tests/auto/corelib/global/q_func_info/q_func_info.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_q_func_info.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/global/q_func_info/tst_q_func_info.cpp b/tests/auto/corelib/global/q_func_info/tst_q_func_info.cpp
new file mode 100644
index 0000000000..0a2a259462
--- /dev/null
+++ b/tests/auto/corelib/global/q_func_info/tst_q_func_info.cpp
@@ -0,0 +1,145 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QString>
+#include <QtTest/QtTest>
+#include <QtDebug>
+
+class tst_q_func_info : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void callFunctions() const;
+ void isOfTypeConstChar() const;
+ void availableWithoutDebug() const;
+
+private:
+
+ static void staticMember();
+ void regularMember() const;
+ void memberWithArguments(const QString &string, int value, const int value2) const;
+};
+
+static void staticRegularFunction()
+{
+ qDebug() << Q_FUNC_INFO;
+}
+
+void regularFunction()
+{
+ qDebug() << Q_FUNC_INFO;
+}
+
+template<typename T>
+void templateFunction()
+{
+ qDebug() << Q_FUNC_INFO;
+}
+
+template<typename T, const int value>
+void valueTemplateFunction()
+{
+ qDebug() << Q_FUNC_INFO;
+}
+
+void tst_q_func_info::staticMember()
+{
+ qDebug() << Q_FUNC_INFO;
+}
+
+void tst_q_func_info::regularMember() const
+{
+ qDebug() << Q_FUNC_INFO;
+}
+
+void tst_q_func_info::memberWithArguments(const QString &, int, const int) const
+{
+ qDebug() << Q_FUNC_INFO;
+}
+
+/*! \internal
+ We don't do much here. We call different kinds of
+ functions to make sure we don't crash anything or that valgrind
+ is unhappy.
+ */
+void tst_q_func_info::callFunctions() const
+{
+ staticRegularFunction();
+ regularFunction();
+ templateFunction<char>();
+ valueTemplateFunction<int, 3>();
+
+ staticMember();
+ regularMember();
+ memberWithArguments(QString(), 3, 4);
+}
+
+void tst_q_func_info::isOfTypeConstChar() const
+{
+#ifndef QT_NO_DEBUG
+ QString::fromLatin1(Q_FUNC_INFO);
+#endif
+}
+
+/* \internal
+ Ensure that the macro is available even though QT_NO_DEBUG
+ is defined. We do this by undefining it, and turning it on again
+ backwards(just so we don't break stuff), if it was in fact defined.
+ */
+void tst_q_func_info::availableWithoutDebug() const
+{
+#ifndef QT_NO_DEBUG
+# define USE_DEBUG
+# define QT_NO_DEBUG
+#endif
+#undef QT_NO_DEBUG
+ QString::fromLatin1(Q_FUNC_INFO);
+#ifdef USE_DEBUG
+# undef QT_NO_DEBUG
+# undef USE_DEBUG
+#endif
+}
+
+QTEST_MAIN(tst_q_func_info)
+
+#include "tst_q_func_info.moc"
diff --git a/tests/auto/corelib/global/qflags/.gitignore b/tests/auto/corelib/global/qflags/.gitignore
new file mode 100644
index 0000000000..52e998ad15
--- /dev/null
+++ b/tests/auto/corelib/global/qflags/.gitignore
@@ -0,0 +1 @@
+tst_qflags
diff --git a/tests/auto/corelib/global/qflags/qflags.pro b/tests/auto/corelib/global/qflags/qflags.pro
new file mode 100644
index 0000000000..097a218a5a
--- /dev/null
+++ b/tests/auto/corelib/global/qflags/qflags.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qflags.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/global/qflags/tst_qflags.cpp b/tests/auto/corelib/global/qflags/tst_qflags.cpp
new file mode 100644
index 0000000000..85e64a6d63
--- /dev/null
+++ b/tests/auto/corelib/global/qflags/tst_qflags.cpp
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtTest/QtTest>
+
+class tst_QFlags: public QObject
+{
+ Q_OBJECT
+private slots:
+ void testFlag() const;
+ void testFlagZeroFlag() const;
+ void testFlagMultiBits() const;
+ void constExpr();
+};
+
+void tst_QFlags::testFlag() const
+{
+ Qt::MouseButtons btn = Qt::LeftButton | Qt::RightButton;
+
+ QVERIFY(btn.testFlag(Qt::LeftButton));
+ QVERIFY(!btn.testFlag(Qt::MidButton));
+
+ btn = 0;
+ QVERIFY(!btn.testFlag(Qt::LeftButton));
+}
+
+void tst_QFlags::testFlagZeroFlag() const
+{
+ {
+ Qt::MouseButtons btn = Qt::LeftButton | Qt::RightButton;
+ /* Qt::NoButton has the value 0. */
+
+ QVERIFY(!btn.testFlag(Qt::NoButton));
+ }
+
+ {
+ /* A zero enum set should test true with zero. */
+ QVERIFY(Qt::MouseButtons().testFlag(Qt::NoButton));
+ }
+
+ {
+ Qt::MouseButtons btn = Qt::NoButton;
+ QVERIFY(btn.testFlag(Qt::NoButton));
+ }
+}
+
+void tst_QFlags::testFlagMultiBits() const
+{
+ /* Qt::Window is 0x00000001
+ * Qt::Dialog is 0x00000002 | Window
+ */
+ {
+ const Qt::WindowFlags onlyWindow(Qt::Window);
+ QVERIFY(!onlyWindow.testFlag(Qt::Dialog));
+ }
+
+ {
+ const Qt::WindowFlags hasDialog(Qt::Dialog);
+ QVERIFY(hasDialog.testFlag(Qt::Dialog));
+ }
+}
+
+template <int N, typename T> bool verifyConstExpr(T n) { return n == N; }
+
+void tst_QFlags::constExpr()
+{
+#ifdef Q_COMPILER_CONSTEXPR
+ Qt::MouseButtons btn = Qt::LeftButton | Qt::RightButton;
+ switch (btn) {
+ case Qt::LeftButton: QVERIFY(false); break;
+ case Qt::RightButton: QVERIFY(false); break;
+ case Qt::LeftButton | Qt::RightButton: QVERIFY(true); break;
+ default: QVERIFY(false);
+ }
+
+ QVERIFY(verifyConstExpr<(Qt::LeftButton | Qt::RightButton) & Qt::LeftButton>(Qt::LeftButton));
+ QVERIFY(verifyConstExpr<(Qt::LeftButton | Qt::RightButton) & Qt::MiddleButton>(0));
+ QVERIFY(verifyConstExpr<(Qt::LeftButton | Qt::RightButton) | Qt::MiddleButton>(Qt::LeftButton | Qt::RightButton | Qt::MiddleButton));
+ QVERIFY(verifyConstExpr<~(Qt::LeftButton | Qt::RightButton)>(~(Qt::LeftButton | Qt::RightButton)));
+ QVERIFY(verifyConstExpr<Qt::MouseButtons(Qt::LeftButton) ^ Qt::RightButton>(Qt::LeftButton ^ Qt::RightButton));
+ QVERIFY(verifyConstExpr<Qt::MouseButtons(0)>(0));
+ QVERIFY(verifyConstExpr<Qt::MouseButtons(Qt::RightButton) & 0xff>(Qt::RightButton));
+ QVERIFY(verifyConstExpr<Qt::MouseButtons(Qt::RightButton) | 0xff>(0xff));
+
+ QVERIFY(!verifyConstExpr<Qt::RightButton>(!Qt::MouseButtons(Qt::LeftButton)));
+#endif
+}
+
+
+QTEST_MAIN(tst_QFlags)
+#include "tst_qflags.moc"
diff --git a/tests/auto/corelib/global/qgetputenv/.gitignore b/tests/auto/corelib/global/qgetputenv/.gitignore
new file mode 100644
index 0000000000..c045a3cc03
--- /dev/null
+++ b/tests/auto/corelib/global/qgetputenv/.gitignore
@@ -0,0 +1 @@
+tst_qgetputenv
diff --git a/tests/auto/corelib/global/qgetputenv/qgetputenv.pro b/tests/auto/corelib/global/qgetputenv/qgetputenv.pro
new file mode 100644
index 0000000000..df94f14473
--- /dev/null
+++ b/tests/auto/corelib/global/qgetputenv/qgetputenv.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qgetputenv.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp b/tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp
new file mode 100644
index 0000000000..9ad98122bc
--- /dev/null
+++ b/tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <qdebug.h>
+#include <QtTest/QtTest>
+
+#include <qglobal.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=corelib/global/qglobal.h corelib/global/qglobal.cpp
+
+class tst_QGetPutEnv : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QGetPutEnv();
+ virtual ~tst_QGetPutEnv();
+
+private slots:
+ void getSetCheck();
+private:
+};
+
+void tst_QGetPutEnv::getSetCheck()
+{
+ const char* varName = "should_not_exist";
+ QByteArray result = qgetenv(varName);
+ QCOMPARE(result, QByteArray());
+ QVERIFY(qputenv(varName, QByteArray("supervalue")));
+ result = qgetenv(varName);
+ QVERIFY(result == "supervalue");
+ qputenv(varName,QByteArray());
+}
+
+tst_QGetPutEnv::tst_QGetPutEnv()
+{
+}
+
+tst_QGetPutEnv::~tst_QGetPutEnv()
+{
+}
+
+QTEST_MAIN(tst_QGetPutEnv)
+#include "tst_qgetputenv.moc"
diff --git a/tests/auto/corelib/global/qglobal/.gitignore b/tests/auto/corelib/global/qglobal/.gitignore
new file mode 100644
index 0000000000..5b3248d6cf
--- /dev/null
+++ b/tests/auto/corelib/global/qglobal/.gitignore
@@ -0,0 +1 @@
+tst_qglobal
diff --git a/tests/auto/corelib/global/qglobal/qglobal.pro b/tests/auto/corelib/global/qglobal/qglobal.pro
new file mode 100644
index 0000000000..a4dffac815
--- /dev/null
+++ b/tests/auto/corelib/global/qglobal/qglobal.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qglobal.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/global/qglobal/tst_qglobal.cpp b/tests/auto/corelib/global/qglobal/tst_qglobal.cpp
new file mode 100644
index 0000000000..85aa03f642
--- /dev/null
+++ b/tests/auto/corelib/global/qglobal/tst_qglobal.cpp
@@ -0,0 +1,271 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+class tst_QGlobal: public QObject
+{
+ Q_OBJECT
+private slots:
+ void qIsNull();
+ void qInternalCallbacks();
+ void for_each();
+ void qassert();
+ void qtry();
+ void checkptr();
+};
+
+void tst_QGlobal::qIsNull()
+{
+ double d = 0.0;
+ float f = 0.0f;
+
+ QVERIFY(::qIsNull(d));
+ QVERIFY(::qIsNull(f));
+
+ d += 0.000000001;
+ f += 0.0000001f;
+
+ QVERIFY(!::qIsNull(d));
+ QVERIFY(!::qIsNull(f));
+}
+
+struct ConnectInfo {
+ QObject *sender;
+ QObject *receiver;
+ QString signal, slot;
+ int type;
+ void reset() {
+ sender = receiver = 0;
+ signal = slot = QString();
+ type = -1;
+ }
+} connect_info;
+
+bool disconnect_callback(void **data)
+{
+ connect_info.sender = (QObject *)(data[0]);
+ connect_info.receiver = (QObject *)(data[2]);
+ connect_info.signal = QString::fromLatin1((const char *) data[1]);
+ connect_info.slot = QString::fromLatin1((const char *) data[3]);
+ return true;
+}
+
+bool connect_callback(void **data)
+{
+ disconnect_callback(data);
+ connect_info.type = *(int *) data[4];
+ return true;
+}
+
+void tst_QGlobal::qInternalCallbacks()
+{
+ QInternal::registerCallback(QInternal::ConnectCallback, connect_callback);
+ QInternal::registerCallback(QInternal::DisconnectCallback, disconnect_callback);
+
+ QObject a, b;
+ QString signal = QLatin1String("2mysignal(x)");
+ QString slot = QLatin1String("1myslot(x)");
+
+ // Test that connect works as expected...
+ connect_info.reset();
+ bool ok = QObject::connect(&a, signal.toLatin1(), &b, slot.toLatin1(), Qt::AutoConnection);
+ QVERIFY(ok);
+ QCOMPARE(&a, connect_info.sender);
+ QCOMPARE(&b, connect_info.receiver);
+ QCOMPARE(signal, connect_info.signal);
+ QCOMPARE(slot, connect_info.slot);
+ QCOMPARE((int) Qt::AutoConnection, connect_info.type);
+
+ // Test that disconnect works as expected
+ connect_info.reset();
+ ok = QObject::disconnect(&a, signal.toLatin1(), &b, slot.toLatin1());
+ QVERIFY(ok);
+ QCOMPARE(&a, connect_info.sender);
+ QCOMPARE(&b, connect_info.receiver);
+ QCOMPARE(signal, connect_info.signal);
+ QCOMPARE(slot, connect_info.slot);
+
+ // Unregister callbacks and verify that they are not triggered...
+ QInternal::unregisterCallback(QInternal::ConnectCallback, connect_callback);
+ QInternal::unregisterCallback(QInternal::DisconnectCallback, disconnect_callback);
+
+ connect_info.reset();
+ QTest::ignoreMessage(QtWarningMsg, "Object::connect: No such signal QObject::mysignal(x)");
+ ok = QObject::connect(&a, signal.toLatin1(), &b, slot.toLatin1(), Qt::AutoConnection);
+ QVERIFY(!ok);
+ QCOMPARE(connect_info.sender, (QObject *) 0);
+
+ QTest::ignoreMessage(QtWarningMsg, "Object::disconnect: No such signal QObject::mysignal(x)");
+ ok = QObject::disconnect(&a, signal.toLatin1(), &b, slot.toLatin1());
+ QVERIFY(!ok);
+ QCOMPARE(connect_info.sender, (QObject *) 0);
+}
+
+void tst_QGlobal::for_each()
+{
+ QList<int> list;
+ list << 0 << 1 << 2 << 3 << 4 << 5;
+
+ int counter = 0;
+ foreach(int i, list) {
+ QCOMPARE(i, counter++);
+ }
+ QCOMPARE(counter, list.count());
+
+ // do it again, to make sure we don't have any for-scoping
+ // problems with older compilers
+ counter = 0;
+ foreach(int i, list) {
+ QCOMPARE(i, counter++);
+ }
+ QCOMPARE(counter, list.count());
+}
+
+void tst_QGlobal::qassert()
+{
+ bool passed = false;
+ if (false) {
+ Q_ASSERT(false);
+ } else {
+ passed = true;
+ }
+ QVERIFY(passed);
+
+ passed = false;
+ if (false) {
+ Q_ASSERT_X(false, "tst_QGlobal", "qassert");
+ } else {
+ passed = true;
+ }
+ QVERIFY(passed);
+
+ passed = false;
+ if (false)
+ Q_ASSERT(false);
+ else
+ passed = true;
+ QVERIFY(passed);
+
+ passed = false;
+ if (false)
+ Q_ASSERT_X(false, "tst_QGlobal", "qassert");
+ else
+ passed = true;
+ QVERIFY(passed);
+}
+
+void tst_QGlobal::qtry()
+{
+ int i = 0;
+ QT_TRY {
+ i = 1;
+ QT_THROW(42);
+ i = 2;
+ } QT_CATCH(int) {
+ QCOMPARE(i, 1);
+ i = 7;
+ }
+#ifdef QT_NO_EXCEPTIONS
+ QCOMPARE(i, 2);
+#else
+ QCOMPARE(i, 7);
+#endif
+
+ // check propper if/else scoping
+ i = 0;
+ if (true) {
+ QT_TRY {
+ i = 2;
+ QT_THROW(42);
+ i = 4;
+ } QT_CATCH(int) {
+ QCOMPARE(i, 2);
+ i = 4;
+ }
+ } else {
+ QCOMPARE(i, 0);
+ }
+ QCOMPARE(i, 4);
+
+ i = 0;
+ if (false) {
+ QT_TRY {
+ i = 2;
+ QT_THROW(42);
+ i = 4;
+ } QT_CATCH(int) {
+ QCOMPARE(i, 2);
+ i = 2;
+ }
+ } else {
+ i = 8;
+ }
+ QCOMPARE(i, 8);
+
+ i = 0;
+ if (false) {
+ i = 42;
+ } else {
+ QT_TRY {
+ i = 2;
+ QT_THROW(42);
+ i = 4;
+ } QT_CATCH(int) {
+ QCOMPARE(i, 2);
+ i = 4;
+ }
+ }
+ QCOMPARE(i, 4);
+}
+
+void tst_QGlobal::checkptr()
+{
+ int i;
+ QCOMPARE(q_check_ptr(&i), &i);
+
+ const char *c = "hello";
+ QCOMPARE(q_check_ptr(c), c);
+}
+
+QTEST_MAIN(tst_QGlobal)
+#include "tst_qglobal.moc"
diff --git a/tests/auto/corelib/global/qnumeric/.gitignore b/tests/auto/corelib/global/qnumeric/.gitignore
new file mode 100644
index 0000000000..c00531dd33
--- /dev/null
+++ b/tests/auto/corelib/global/qnumeric/.gitignore
@@ -0,0 +1 @@
+tst_qnumeric
diff --git a/tests/auto/corelib/global/qnumeric/qnumeric.pro b/tests/auto/corelib/global/qnumeric/qnumeric.pro
new file mode 100644
index 0000000000..c0af962a79
--- /dev/null
+++ b/tests/auto/corelib/global/qnumeric/qnumeric.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+
+QT = core
+
+SOURCES += tst_qnumeric.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp b/tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp
new file mode 100644
index 0000000000..8eb4e468a1
--- /dev/null
+++ b/tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp
@@ -0,0 +1,124 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtGlobal>
+
+#include <math.h>
+
+class tst_QNumeric: public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void fuzzyCompare_data();
+ void fuzzyCompare();
+ void qNan();
+};
+
+void tst_QNumeric::fuzzyCompare_data()
+{
+ QTest::addColumn<double>("val1");
+ QTest::addColumn<double>("val2");
+ QTest::addColumn<bool>("isEqual");
+
+ QTest::newRow("zero") << 0.0 << 0.0 << true;
+ QTest::newRow("ten") << 10.0 << 10.0 << true;
+ QTest::newRow("large") << 1000000000.0 << 1000000000.0 << true;
+ QTest::newRow("small") << 0.00000000001 << 0.00000000001 << true;
+ QTest::newRow("eps") << 10.000000000000001 << 10.00000000000002 << true;
+ QTest::newRow("eps2") << 10.000000000000001 << 10.000000000000009 << true;
+
+ QTest::newRow("mis1") << 0.0 << 1.0 << false;
+ QTest::newRow("mis2") << 0.0 << 10000000.0 << false;
+ QTest::newRow("mis3") << 0.0 << 0.000000001 << false;
+ QTest::newRow("mis4") << 100000000.0 << 0.000000001 << false;
+ QTest::newRow("mis4") << 0.0000000001 << 0.000000001 << false;
+}
+
+void tst_QNumeric::fuzzyCompare()
+{
+ QFETCH(double, val1);
+ QFETCH(double, val2);
+ QFETCH(bool, isEqual);
+
+ QCOMPARE(::qFuzzyCompare(val1, val2), isEqual);
+ QCOMPARE(::qFuzzyCompare(val2, val1), isEqual);
+ QCOMPARE(::qFuzzyCompare(-val1, -val2), isEqual);
+ QCOMPARE(::qFuzzyCompare(-val2, -val1), isEqual);
+}
+
+void tst_QNumeric::qNan()
+{
+ double nan = qQNaN();
+#if defined( __INTEL_COMPILER)
+ QCOMPARE((0 > nan), false);
+ QCOMPARE((0 < nan), false);
+ QSKIP("This fails due to a bug in the Intel Compiler", SkipAll);
+#else
+ if (0 > nan)
+ QFAIL("compiler thinks 0 > nan");
+
+# if defined(Q_CC_DIAB)
+ QWARN("!(0 < nan) would fail due to a bug in dcc");
+# else
+ if (0 < nan)
+ QFAIL("compiler thinks 0 < nan");
+# endif
+#endif
+ QVERIFY(qIsNaN(nan));
+ QVERIFY(qIsNaN(nan + 1));
+ QVERIFY(qIsNaN(-nan));
+ double inf = qInf();
+ QVERIFY(inf > 0);
+ QVERIFY(-inf < 0);
+ QVERIFY(qIsInf(inf));
+ QVERIFY(qIsInf(-inf));
+ QVERIFY(qIsInf(2*inf));
+ QCOMPARE(1/inf, 0.0);
+ QVERIFY(qIsNaN(0*nan));
+ QVERIFY(qIsNaN(0*inf));
+ QVERIFY(qFuzzyCompare(1/inf, 0.0));
+}
+
+QTEST_APPLESS_MAIN(tst_QNumeric)
+#include "tst_qnumeric.moc"
diff --git a/tests/auto/corelib/global/qrand/.gitignore b/tests/auto/corelib/global/qrand/.gitignore
new file mode 100644
index 0000000000..e8ec2ebfd1
--- /dev/null
+++ b/tests/auto/corelib/global/qrand/.gitignore
@@ -0,0 +1 @@
+tst_qrand
diff --git a/tests/auto/corelib/global/qrand/qrand.pro b/tests/auto/corelib/global/qrand/qrand.pro
new file mode 100644
index 0000000000..0db8af821c
--- /dev/null
+++ b/tests/auto/corelib/global/qrand/qrand.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qrand.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/global/qrand/tst_qrand.cpp b/tests/auto/corelib/global/qrand/tst_qrand.cpp
new file mode 100644
index 0000000000..7ac778211c
--- /dev/null
+++ b/tests/auto/corelib/global/qrand/tst_qrand.cpp
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtTest/QtTest>
+
+class tst_QRand: public QObject
+{
+ Q_OBJECT
+private slots:
+ void testqrand();
+};
+
+void tst_QRand::testqrand()
+{
+ const int numTestValues = 100;
+
+ int generatedNumbers[numTestValues];
+ bool generatesSameSequence = true;
+
+ // test without calling srand() first
+ // should give same sequence as with srand(1)
+
+ for (int i=0; i<numTestValues; ++i)
+ generatedNumbers[i] = qrand();
+
+ qsrand(1);
+ for (int i=0; i<numTestValues; ++i)
+ if (generatedNumbers[i] != qrand())
+ generatesSameSequence = false;
+
+ QVERIFY(generatesSameSequence);
+
+ for (unsigned int seed=1; seed < 10; seed+=100) {
+
+ qsrand(seed);
+ for (int i=0; i<numTestValues; ++i)
+ generatedNumbers[i] = qrand();
+
+ qsrand(seed);
+ generatesSameSequence = true;
+ for (int i=0; i<numTestValues; ++i)
+ if (generatedNumbers[i] != qrand())
+ generatesSameSequence = false;
+
+ QVERIFY(generatesSameSequence);
+ }
+}
+
+QTEST_MAIN(tst_QRand)
+#include "tst_qrand.moc"
diff --git a/tests/auto/corelib/io/io.pro b/tests/auto/corelib/io/io.pro
new file mode 100644
index 0000000000..cbe2b609b9
--- /dev/null
+++ b/tests/auto/corelib/io/io.pro
@@ -0,0 +1,23 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qabstractfileengine \
+ qbuffer \
+ qdatastream \
+ qdebug \
+ qdir \
+ qdiriterator \
+ qfile \
+ qfileinfo \
+ qfilesystementry \
+ qfilesystemwatcher \
+ qiodevice \
+ qprocess \
+ qprocessenvironment \
+ qresourceengine \
+ qsettings \
+ qtemporaryfile \
+ qtextstream \
+ qurl \
+
+!contains(QT_CONFIG, private_tests): SUBDIRS -= \
+ qfileinfo
diff --git a/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.pro b/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.pro
new file mode 100644
index 0000000000..870473a4cb
--- /dev/null
+++ b/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT = core
+
+SOURCES = tst_qabstractfileengine.cpp
+RESOURCES += qabstractfileengine.qrc
+
diff --git a/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.qrc b/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.qrc
new file mode 100644
index 0000000000..5401b086b2
--- /dev/null
+++ b/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/tst_qabstractfileengine/">
+ <file>resources/</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/corelib/io/qabstractfileengine/resources/file.txt b/tests/auto/corelib/io/qabstractfileengine/resources/file.txt
new file mode 100644
index 0000000000..8a03e0e55f
--- /dev/null
+++ b/tests/auto/corelib/io/qabstractfileengine/resources/file.txt
@@ -0,0 +1 @@
+This is a simple text file.
diff --git a/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp b/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp
new file mode 100644
index 0000000000..a81633341d
--- /dev/null
+++ b/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp
@@ -0,0 +1,794 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the FOO module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QAbstractFileEngine>
+#include <QtCore/QFSFileEngine>
+
+#include <QtCore/QMutex>
+#include <QtCore/QMutexLocker>
+#include <QtCore/QSharedPointer>
+#include <QtCore/QScopedPointer>
+#include <QtCore/QHash>
+
+#include <QtTest/QTest>
+
+#include <QtCore/QDebug>
+
+class tst_QAbstractFileEngine
+ : public QObject
+{
+ Q_OBJECT
+public slots:
+ void cleanupTestCase();
+
+private slots:
+ void customHandler();
+
+ void fileIO_data();
+ void fileIO();
+
+private:
+ QStringList filesForRemoval;
+};
+
+class ReferenceFileEngine
+ : public QAbstractFileEngine
+{
+public:
+ ReferenceFileEngine(const QString &fileName)
+ : fileName_(fileName)
+ , position_(-1)
+ , openForRead_(false)
+ , openForWrite_(false)
+ {
+ }
+
+ bool open(QIODevice::OpenMode openMode)
+ {
+ if (openForRead_ || openForWrite_) {
+ qWarning("%s: file is already open for %s",
+ Q_FUNC_INFO,
+ (openForRead_ ? "reading" : "writing"));
+ return false;
+ }
+
+ openFile_ = resolveFile(openMode & QIODevice::WriteOnly);
+ if (!openFile_)
+ return false;
+
+ position_ = 0;
+ if (openMode & QIODevice::ReadOnly)
+ openForRead_ = true;
+
+ if (openMode & QIODevice::WriteOnly) {
+ openForWrite_ = true;
+
+ QMutexLocker lock(&openFile_->mutex);
+ if (openMode & QIODevice::Truncate
+ || !(openForRead_ || openMode & QIODevice::Append))
+ openFile_->content.clear();
+
+ if (openMode & QIODevice::Append)
+ position_ = openFile_->content.size();
+ }
+
+ return true;
+ }
+
+ bool close()
+ {
+ openFile_.clear();
+
+ openForRead_ = false;
+ openForWrite_ = false;
+ position_ = -1;
+
+ return true;
+ }
+
+ qint64 size() const
+ {
+ QSharedPointer<File> file = resolveFile(false);
+ if (!file)
+ return 0;
+
+ QMutexLocker lock(&file->mutex);
+ return file->content.size();
+ }
+
+ qint64 pos() const
+ {
+ if (!openForRead_ && !openForWrite_) {
+ qWarning("%s: file is not open", Q_FUNC_INFO);
+ return -1;
+ }
+ return position_;
+ }
+
+ bool seek(qint64 pos)
+ {
+ if (!openForRead_ && !openForWrite_) {
+ qWarning("%s: file is not open", Q_FUNC_INFO);
+ return false;
+ }
+
+ if (pos >= 0) {
+ position_ = pos;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool flush()
+ {
+ if (!openForRead_ && !openForWrite_) {
+ qWarning("%s: file is not open", Q_FUNC_INFO);
+ return false;
+ }
+
+ return true;
+ }
+
+ bool remove()
+ {
+ QMutexLocker lock(&fileSystemMutex);
+ int count = fileSystem.remove(fileName_);
+
+ return (count == 1);
+ }
+
+ bool copy(const QString &newName)
+ {
+ QMutexLocker lock(&fileSystemMutex);
+ if (!fileSystem.contains(fileName_)
+ || fileSystem.contains(newName))
+ return false;
+
+ fileSystem.insert(newName, fileSystem.value(fileName_));
+ return true;
+ }
+
+ bool rename(const QString &newName)
+ {
+ QMutexLocker lock(&fileSystemMutex);
+ if (!fileSystem.contains(fileName_)
+ || fileSystem.contains(newName))
+ return false;
+
+ fileSystem.insert(newName, fileSystem.take(fileName_));
+ return true;
+ }
+
+ // bool link(const QString &newName)
+ // {
+ // Q_UNUSED(newName)
+ // return false;
+ // }
+
+ // bool mkdir(const QString &dirName, bool createParentDirectories) const
+ // {
+ // Q_UNUSED(dirName)
+ // Q_UNUSED(createParentDirectories)
+
+ // return false;
+ // }
+
+ // bool rmdir(const QString &dirName, bool recurseParentDirectories) const
+ // {
+ // Q_UNUSED(dirName)
+ // Q_UNUSED(recurseParentDirectories)
+
+ // return false;
+ // }
+
+ bool setSize(qint64 size)
+ {
+ if (size < 0)
+ return false;
+
+ QSharedPointer<File> file = resolveFile(false);
+ if (!file)
+ return false;
+
+ QMutexLocker lock(&file->mutex);
+ file->content.resize(size);
+
+ if (openForRead_ || openForWrite_)
+ if (position_ > size)
+ position_ = size;
+
+ return (file->content.size() == size);
+ }
+
+ FileFlags fileFlags(FileFlags type) const
+ {
+ QSharedPointer<File> file = resolveFile(false);
+ if (file) {
+ QMutexLocker lock(&file->mutex);
+ return (file->fileFlags & type);
+ }
+
+ return FileFlags();
+ }
+
+ // bool setPermissions(uint perms)
+ // {
+ // Q_UNUSED(perms)
+
+ // return false;
+ // }
+
+ QString fileName(FileName file) const
+ {
+ switch (file) {
+ case DefaultName:
+ return QLatin1String("DefaultName");
+ case BaseName:
+ return QLatin1String("BaseName");
+ case PathName:
+ return QLatin1String("PathName");
+ case AbsoluteName:
+ return QLatin1String("AbsoluteName");
+ case AbsolutePathName:
+ return QLatin1String("AbsolutePathName");
+ case LinkName:
+ return QLatin1String("LinkName");
+ case CanonicalName:
+ return QLatin1String("CanonicalName");
+ case CanonicalPathName:
+ return QLatin1String("CanonicalPathName");
+ case BundleName:
+ return QLatin1String("BundleName");
+
+ default:
+ break;
+ }
+
+ return QString();
+ }
+
+ uint ownerId(FileOwner owner) const
+ {
+ QSharedPointer<File> file = resolveFile(false);
+ if (file) {
+ switch (owner) {
+ case OwnerUser:
+ {
+ QMutexLocker lock(&file->mutex);
+ return file->userId;
+ }
+ case OwnerGroup:
+ {
+ QMutexLocker lock(&file->mutex);
+ return file->groupId;
+ }
+ }
+ }
+
+ return -2;
+ }
+
+ QString owner(FileOwner owner) const
+ {
+ QSharedPointer<File> file = resolveFile(false);
+ if (file) {
+ uint ownerId;
+ switch (owner) {
+ case OwnerUser:
+ {
+ QMutexLocker lock(&file->mutex);
+ ownerId = file->userId;
+ }
+
+ {
+ QMutexLocker lock(&fileSystemMutex);
+ return fileSystemUsers.value(ownerId);
+ }
+
+ case OwnerGroup:
+ {
+ QMutexLocker lock(&file->mutex);
+ ownerId = file->groupId;
+ }
+
+ {
+ QMutexLocker lock(&fileSystemMutex);
+ return fileSystemGroups.value(ownerId);
+ }
+ }
+ }
+
+ return QString();
+ }
+
+ QDateTime fileTime(FileTime time) const
+ {
+ QSharedPointer<File> file = resolveFile(false);
+ if (file) {
+ QMutexLocker lock(&file->mutex);
+ switch (time) {
+ case CreationTime:
+ return file->creation;
+ case ModificationTime:
+ return file->modification;
+ case AccessTime:
+ return file->access;
+ }
+ }
+
+ return QDateTime();
+ }
+
+ void setFileName(const QString &file)
+ {
+ if (openForRead_ || openForWrite_)
+ qWarning("%s: Can't set file name while file is open", Q_FUNC_INFO);
+ else
+ fileName_ = file;
+ }
+
+ // typedef QAbstractFileEngineIterator Iterator;
+ // Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames)
+ // {
+ // Q_UNUSED(filters)
+ // Q_UNUSED(filterNames)
+
+ // return 0;
+ // }
+
+ // Iterator *endEntryList()
+ // {
+ // return 0;
+ // }
+
+ qint64 read(char *data, qint64 maxLen)
+ {
+ if (!openForRead_) {
+ qWarning("%s: file must be open for reading", Q_FUNC_INFO);
+ return -1;
+ }
+
+ if (openFile_.isNull()) {
+ qWarning("%s: file must not be null", Q_FUNC_INFO);
+ return -1;
+ }
+
+ QMutexLocker lock(&openFile_->mutex);
+ qint64 readSize = qMin(openFile_->content.size() - position_, maxLen);
+ if (readSize < 0)
+ return -1;
+
+ qMemCopy(data, openFile_->content.constData() + position_, readSize);
+ position_ += readSize;
+
+ return readSize;
+ }
+
+ qint64 write(const char *data, qint64 length)
+ {
+ if (!openForWrite_) {
+ qWarning("%s: file must be open for writing", Q_FUNC_INFO);
+ return -1;
+ }
+
+ if (openFile_.isNull()) {
+ qWarning("%s: file must not be null", Q_FUNC_INFO);
+ return -1;
+ }
+
+ if (length < 0)
+ return -1;
+
+ QMutexLocker lock(&openFile_->mutex);
+ if (openFile_->content.size() == position_)
+ openFile_->content.append(data, length);
+ else {
+ if (position_ + length > openFile_->content.size())
+ openFile_->content.resize(position_ + length);
+ openFile_->content.replace(position_, length, data, length);
+ }
+
+ qint64 writeSize = qMin(length, openFile_->content.size() - position_);
+ position_ += writeSize;
+
+ return writeSize;
+ }
+
+protected:
+ // void setError(QFile::FileError error, const QString &str);
+
+ struct File
+ {
+ File()
+ : userId(0)
+ , groupId(0)
+ , fileFlags(
+ ReadOwnerPerm | WriteOwnerPerm | ExeOwnerPerm
+ | ReadUserPerm | WriteUserPerm | ExeUserPerm
+ | ReadGroupPerm | WriteGroupPerm | ExeGroupPerm
+ | ReadOtherPerm | WriteOtherPerm | ExeOtherPerm
+ | FileType | ExistsFlag)
+ {
+ }
+
+ QMutex mutex;
+
+ uint userId, groupId;
+ QAbstractFileEngine::FileFlags fileFlags;
+ QDateTime creation, modification, access;
+
+ QByteArray content;
+ };
+
+ QSharedPointer<File> resolveFile(bool create) const
+ {
+ if (openForRead_ || openForWrite_) {
+ if (!openFile_)
+ qWarning("%s: file should not be null", Q_FUNC_INFO);
+ return openFile_;
+ }
+
+ QMutexLocker lock(&fileSystemMutex);
+ if (create) {
+ QSharedPointer<File> &p = fileSystem[fileName_];
+ if (p.isNull())
+ p = QSharedPointer<File>(new File);
+ return p;
+ }
+
+ return fileSystem.value(fileName_);
+ }
+
+ static QMutex fileSystemMutex;
+ static QHash<uint, QString> fileSystemUsers, fileSystemGroups;
+ static QHash<QString, QSharedPointer<File> > fileSystem;
+
+private:
+ QString fileName_;
+ qint64 position_;
+ bool openForRead_;
+ bool openForWrite_;
+
+ mutable QSharedPointer<File> openFile_;
+};
+
+QMutex ReferenceFileEngine::fileSystemMutex;
+QHash<uint, QString> ReferenceFileEngine::fileSystemUsers, ReferenceFileEngine::fileSystemGroups;
+QHash<QString, QSharedPointer<ReferenceFileEngine::File> > ReferenceFileEngine::fileSystem;
+
+class FileEngineHandler
+ : QAbstractFileEngineHandler
+{
+ QAbstractFileEngine *create(const QString &fileName) const
+ {
+ if (fileName.startsWith("QFSFileEngine:"))
+ return new QFSFileEngine(fileName.mid(14));
+ if (fileName.startsWith("reference-file-engine:"))
+ return new ReferenceFileEngine(fileName.mid(22));
+ if (fileName.startsWith("resource:"))
+ return QAbstractFileEngine::create(QLatin1String(":/tst_qabstractfileengine/resources/") + fileName.mid(9));
+ return 0;
+ }
+};
+
+void tst_QAbstractFileEngine::cleanupTestCase()
+{
+ bool failed = false;
+
+ FileEngineHandler handler;
+ Q_FOREACH(QString file, filesForRemoval)
+ if (!QFile::remove(file)
+ || QFile::exists(file)) {
+ failed = true;
+ qDebug() << "Couldn't remove file:" << file;
+ }
+
+ QVERIFY(!failed);
+}
+
+void tst_QAbstractFileEngine::customHandler()
+{
+ QScopedPointer<QAbstractFileEngine> file;
+ {
+ file.reset(QAbstractFileEngine::create("resource:file.txt"));
+
+ QVERIFY(file);
+ }
+
+ {
+ FileEngineHandler handler;
+
+ QFile file("resource:file.txt");
+ QVERIFY(file.exists());
+ }
+
+ {
+ QFile file("resource:file.txt");
+ QVERIFY(!file.exists());
+ }
+}
+
+void tst_QAbstractFileEngine::fileIO_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QByteArray>("readContent");
+ QTest::addColumn<QByteArray>("writeContent");
+ QTest::addColumn<bool>("fileExists");
+
+ QString resourceTxtFile(":/tst_qabstractfileengine/resources/file.txt");
+ QByteArray readContent("This is a simple text file.\n");
+ QByteArray writeContent("This contains two lines of text.\n");
+
+ QTest::newRow("resource") << resourceTxtFile << readContent << QByteArray() << true;
+ QTest::newRow("native") << "native-file.txt" << readContent << writeContent << false;
+ QTest::newRow("Forced QFSFileEngine") << "QFSFileEngine:QFSFileEngine-file.txt" << readContent << writeContent << false;
+ QTest::newRow("Custom FE") << "reference-file-engine:file.txt" << readContent << writeContent << false;
+
+ QTest::newRow("Forced QFSFileEngine (native)") << "QFSFileEngine:native-file.txt" << readContent << writeContent << true;
+ QTest::newRow("native (Forced QFSFileEngine)") << "QFSFileEngine-file.txt" << readContent << writeContent << true;
+ QTest::newRow("Custom FE (2)") << "reference-file-engine:file.txt" << readContent << writeContent << true;
+}
+
+void tst_QAbstractFileEngine::fileIO()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QByteArray, readContent);
+ QFETCH(QByteArray, writeContent);
+ QFETCH(bool, fileExists);
+
+ FileEngineHandler handler;
+
+
+ {
+ QFile file(fileName);
+ QCOMPARE(file.exists(), fileExists);
+
+ if (!fileExists) {
+ QVERIFY(file.open(QIODevice::WriteOnly | QIODevice::Unbuffered));
+ filesForRemoval.append(fileName);
+
+ QCOMPARE(file.write(readContent), qint64(readContent.size()));
+ }
+ }
+
+ //
+ // File content is: readContent
+ //
+
+ qint64 fileSize = readContent.size();
+ {
+ // Reading
+ QFile file(fileName);
+
+ QVERIFY(!file.isOpen());
+ QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Unbuffered));
+
+ QVERIFY(file.isOpen());
+ QCOMPARE(file.size(), fileSize);
+ QCOMPARE(file.pos(), qint64(0));
+
+ QCOMPARE(file.size(), fileSize);
+ QCOMPARE(file.readAll(), readContent);
+ QCOMPARE(file.pos(), fileSize);
+
+ file.close();
+ QVERIFY(!file.isOpen());
+ QCOMPARE(file.size(), fileSize);
+ }
+
+ if (writeContent.isEmpty())
+ return;
+
+ {
+ // Writing / appending
+ QFile file(fileName);
+
+ QVERIFY(!file.isOpen());
+ QVERIFY(file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Unbuffered));
+
+ QVERIFY(file.isOpen());
+ QCOMPARE(file.size(), fileSize);
+ QCOMPARE(file.pos(), fileSize);
+
+ QCOMPARE(file.write(writeContent), qint64(writeContent.size()));
+
+ fileSize += writeContent.size();
+ QCOMPARE(file.pos(), fileSize);
+ QCOMPARE(file.size(), fileSize);
+
+ file.close();
+ QVERIFY(!file.isOpen());
+ QCOMPARE(file.size(), fileSize);
+ }
+
+ //
+ // File content is: readContent + writeContent
+ //
+
+ {
+ // Reading and Writing
+ QFile file(fileName);
+
+ QVERIFY(!file.isOpen());
+ QVERIFY(file.open(QIODevice::ReadWrite | QIODevice::Unbuffered));
+
+ QVERIFY(file.isOpen());
+ QCOMPARE(file.size(), fileSize);
+ QCOMPARE(file.pos(), qint64(0));
+
+ QCOMPARE(file.readAll(), readContent + writeContent);
+ QCOMPARE(file.pos(), fileSize);
+ QCOMPARE(file.size(), fileSize);
+
+ QVERIFY(file.seek(writeContent.size()));
+ QCOMPARE(file.pos(), qint64(writeContent.size()));
+ QCOMPARE(file.size(), fileSize);
+
+ QCOMPARE(file.write(readContent), qint64(readContent.size()));
+ QCOMPARE(file.pos(), fileSize);
+ QCOMPARE(file.size(), fileSize);
+
+ QVERIFY(file.seek(0));
+ QCOMPARE(file.pos(), qint64(0));
+ QCOMPARE(file.size(), fileSize);
+
+ QCOMPARE(file.write(writeContent), qint64(writeContent.size()));
+ QCOMPARE(file.pos(), qint64(writeContent.size()));
+ QCOMPARE(file.size(), fileSize);
+
+ QVERIFY(file.seek(0));
+ QCOMPARE(file.read(writeContent.size()), writeContent);
+ QCOMPARE(file.pos(), qint64(writeContent.size()));
+ QCOMPARE(file.size(), fileSize);
+
+ QCOMPARE(file.readAll(), readContent);
+ QCOMPARE(file.pos(), fileSize);
+ QCOMPARE(file.size(), fileSize);
+
+ file.close();
+ QVERIFY(!file.isOpen());
+ QCOMPARE(file.size(), fileSize);
+ }
+
+ //
+ // File content is: writeContent + readContent
+ //
+
+ {
+ // Writing
+ QFile file(fileName);
+
+ QVERIFY(!file.isOpen());
+ QVERIFY(file.open(QIODevice::ReadWrite | QIODevice::Unbuffered));
+
+ QVERIFY(file.isOpen());
+ QCOMPARE(file.size(), fileSize);
+ QCOMPARE(file.pos(), qint64(0));
+
+ QCOMPARE(file.write(writeContent), qint64(writeContent.size()));
+ QCOMPARE(file.pos(), qint64(writeContent.size()));
+ QCOMPARE(file.size(), fileSize);
+
+ QVERIFY(file.resize(writeContent.size()));
+ QCOMPARE(file.size(), qint64(writeContent.size()));
+
+ file.close();
+ QVERIFY(!file.isOpen());
+ QCOMPARE(file.size(), qint64(writeContent.size()));
+
+ QVERIFY(file.resize(fileSize));
+ QCOMPARE(file.size(), fileSize);
+ }
+
+ //
+ // File content is: writeContent + <undefined>
+ // File size is : (readContent + writeContent).size()
+ //
+
+ {
+ // Writing / extending
+ QFile file(fileName);
+
+ QVERIFY(!file.isOpen());
+ QVERIFY(file.open(QIODevice::ReadWrite | QIODevice::Unbuffered));
+
+ QVERIFY(file.isOpen());
+ QCOMPARE(file.size(), fileSize);
+ QCOMPARE(file.pos(), qint64(0));
+
+ QVERIFY(file.seek(1024));
+ QCOMPARE(file.pos(), qint64(1024));
+ QCOMPARE(file.size(), fileSize);
+
+ fileSize = 1024 + writeContent.size();
+ QCOMPARE(file.write(writeContent), qint64(writeContent.size()));
+ QCOMPARE(file.pos(), fileSize);
+ QCOMPARE(file.size(), fileSize);
+
+ QVERIFY(file.seek(1028));
+ QCOMPARE(file.pos(), qint64(1028));
+ QCOMPARE(file.size(), fileSize);
+
+ fileSize = 1028 + writeContent.size();
+ QCOMPARE(file.write(writeContent), qint64(writeContent.size()));
+ QCOMPARE(file.pos(), fileSize);
+ QCOMPARE(file.size(), fileSize);
+
+ file.close();
+ QVERIFY(!file.isOpen());
+ QCOMPARE(file.size(), fileSize);
+ }
+
+ //
+ // File content is: writeContent + <undefined> + writeContent
+ // File size is : 1024 + writeContent.size()
+ //
+
+ {
+ // Writing / truncating
+ QFile file(fileName);
+
+ QVERIFY(!file.isOpen());
+ QVERIFY(file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Unbuffered));
+
+ QVERIFY(file.isOpen());
+ QCOMPARE(file.size(), qint64(0));
+ QCOMPARE(file.pos(), qint64(0));
+
+ fileSize = readContent.size();
+ QCOMPARE(file.write(readContent), fileSize);
+ QCOMPARE(file.pos(), fileSize);
+ QCOMPARE(file.size(), fileSize);
+
+ file.close();
+ QVERIFY(!file.isOpen());
+ QCOMPARE(file.size(), fileSize);
+ }
+
+ //
+ // File content is: readContent
+ //
+}
+
+QTEST_APPLESS_MAIN(tst_QAbstractFileEngine)
+#include "tst_qabstractfileengine.moc"
+
diff --git a/tests/auto/corelib/io/qbuffer/.gitignore b/tests/auto/corelib/io/qbuffer/.gitignore
new file mode 100644
index 0000000000..40447ec0db
--- /dev/null
+++ b/tests/auto/corelib/io/qbuffer/.gitignore
@@ -0,0 +1 @@
+tst_qbuffer
diff --git a/tests/auto/corelib/io/qbuffer/qbuffer.pro b/tests/auto/corelib/io/qbuffer/qbuffer.pro
new file mode 100644
index 0000000000..b768eb82d8
--- /dev/null
+++ b/tests/auto/corelib/io/qbuffer/qbuffer.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qbuffer.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp b/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp
new file mode 100644
index 0000000000..bf4842ff94
--- /dev/null
+++ b/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp
@@ -0,0 +1,608 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+
+#include <QBuffer>
+#include <QByteArray>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QBuffer : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QBuffer();
+
+private slots:
+ void open();
+ void getSetCheck();
+ void readBlock();
+ void readBlockPastEnd();
+ void writeBlock_data();
+ void writeBlock();
+ void seek();
+ void seekTest_data();
+ void seekTest();
+ void read_rawdata();
+ void isSequential();
+ void signalTest_data();
+ void signalTest();
+ void isClosedAfterClose();
+ void readLine_data();
+ void readLine();
+ void canReadLine_data();
+ void canReadLine();
+ void atEnd();
+ void readLineBoundaries();
+ void writeAfterQByteArrayResize();
+ void read_null();
+
+protected slots:
+ void readyReadSlot();
+ void bytesWrittenSlot(qint64 written);
+
+private:
+ qint64 totalBytesWritten;
+ bool gotReadyRead;
+};
+
+// Testing get/set functions
+void tst_QBuffer::getSetCheck()
+{
+ QBuffer obj1;
+ // const QByteArray & QBuffer::data()
+ // void QBuffer::setData(const QByteArray &)
+ QByteArray var1("Bogus data");
+ obj1.setData(var1);
+ QCOMPARE(var1, obj1.data());
+ obj1.setData(QByteArray());
+ QCOMPARE(QByteArray(), obj1.data());
+}
+
+tst_QBuffer::tst_QBuffer()
+{
+}
+
+void tst_QBuffer::open()
+{
+ QByteArray data(10, 'f');
+
+ QBuffer b;
+
+ QTest::ignoreMessage(QtWarningMsg, "QBuffer::open: Buffer access not specified");
+ QVERIFY(!b.open(QIODevice::NotOpen));
+ QVERIFY(!b.isOpen());
+ b.close();
+
+ QTest::ignoreMessage(QtWarningMsg, "QBuffer::open: Buffer access not specified");
+ QVERIFY(!b.open(QIODevice::Text));
+ QVERIFY(!b.isOpen());
+ b.close();
+
+ QTest::ignoreMessage(QtWarningMsg, "QBuffer::open: Buffer access not specified");
+ QVERIFY(!b.open(QIODevice::Unbuffered));
+ QVERIFY(!b.isOpen());
+ b.close();
+
+ QVERIFY(b.open(QIODevice::ReadOnly));
+ QVERIFY(b.isReadable());
+ b.close();
+
+ QVERIFY(b.open(QIODevice::WriteOnly));
+ QVERIFY(b.isWritable());
+ b.close();
+
+ b.setData(data);
+ QVERIFY(b.open(QIODevice::Append));
+ QVERIFY(b.isWritable());
+ QCOMPARE(b.size(), qint64(10));
+ QCOMPARE(b.pos(), b.size());
+ b.close();
+
+ b.setData(data);
+ QVERIFY(b.open(QIODevice::Truncate));
+ QVERIFY(b.isWritable());
+ QCOMPARE(b.size(), qint64(0));
+ QCOMPARE(b.pos(), qint64(0));
+ b.close();
+
+ QVERIFY(b.open(QIODevice::ReadWrite));
+ QVERIFY(b.isReadable());
+ QVERIFY(b.isWritable());
+ b.close();
+}
+
+// some status() tests, too
+void tst_QBuffer::readBlock()
+{
+// QTest::ignoreMessage(QtWarningMsg, "QIODevice::read: File not open");
+// QTest::ignoreMessage(QtWarningMsg, "QIODevice::read: Read operation not permitted");
+
+ const int arraySize = 10;
+ char a[arraySize];
+ QBuffer b;
+ QCOMPARE(b.read(a, arraySize), (qint64) -1); // not opened
+ QVERIFY(b.atEnd());
+
+ QByteArray ba;
+ ba.resize(arraySize);
+ b.setBuffer(&ba);
+ b.open(QIODevice::WriteOnly);
+ QTest::ignoreMessage(QtWarningMsg, "QIODevice::read: WriteOnly device");
+ QCOMPARE(b.read(a, arraySize), (qint64) -1); // no read access
+ b.close();
+
+ b.open(QIODevice::ReadOnly);
+ QCOMPARE(b.read(a, arraySize), (qint64) arraySize);
+ QVERIFY(b.atEnd());
+
+ // up to 3.0.x reading beyond the end was an error while ok
+ // this has been made consistent with other QIODevice sub classes in 3.1
+ QCOMPARE(b.read(a, 1), qint64(0));
+ QVERIFY(b.atEnd());
+
+ // read in two chunks
+ b.close();
+ b.open(QIODevice::ReadOnly);
+ QCOMPARE(b.read(a, arraySize/2), (qint64) arraySize/2);
+ QCOMPARE(b.read(a + arraySize/2, arraySize - arraySize/2),
+ (qint64)(arraySize - arraySize/2));
+ QVERIFY(b.atEnd());
+}
+
+void tst_QBuffer::readBlockPastEnd()
+{
+ QByteArray arr(4096 + 3616, 'd');
+ QBuffer buf(&arr);
+
+ buf.open(QIODevice::ReadOnly);
+ char dummy[4096];
+
+ buf.read(1);
+
+ QCOMPARE(buf.read(dummy, 4096), qint64(4096));
+ QCOMPARE(buf.read(dummy, 4096), qint64(3615));
+ QVERIFY(buf.atEnd());
+}
+
+void tst_QBuffer::writeBlock_data()
+{
+ QTest::addColumn<QString>("str");
+
+ QTest::newRow( "small_bytearray" ) << QString("Test");
+ QTest::newRow( "large_bytearray" ) << QString("The QBuffer class is an I/O device that operates on a QByteArray.\n"
+ "QBuffer is used to read and write to a memory buffer. It is normally "
+ "used with a QTextStream or a QDataStream. QBuffer has an associated "
+ "QByteArray which holds the buffer data. The size() of the buffer is "
+ "automatically adjusted as data is written.\n"
+ "The constructor QBuffer(QByteArray) creates a QBuffer using an existing "
+ "byte array. The byte array can also be set with setBuffer(). Writing to "
+ "the QBuffer will modify the original byte array because QByteArray is "
+ "explicitly shared.\n"
+ "Use open() to open the buffer before use and to set the mode (read-only, "
+ "write-only, etc.). close() closes the buffer. The buffer must be closed "
+ "before reopening or calling setBuffer().\n"
+ "A common way to use QBuffer is through QDataStream or QTextStream, which "
+ "have constructors that take a QBuffer parameter. For convenience, there "
+ "are also QDataStream and QTextStream constructors that take a QByteArray "
+ "parameter. These constructors create and open an internal QBuffer.\n"
+ "Note that QTextStream can also operate on a QString (a Unicode string); a "
+ "QBuffer cannot.\n"
+ "You can also use QBuffer directly through the standard QIODevice functions "
+ "readBlock(), writeBlock() readLine(), at(), getch(), putch() and ungetch().\n"
+ "See also QFile, QDataStream, QTextStream, QByteArray, Shared Classes, Collection "
+ "Classes and Input/Output and Networking.\n\n"
+ "The QBuffer class is an I/O device that operates on a QByteArray.\n"
+ "QBuffer is used to read and write to a memory buffer. It is normally "
+ "used with a QTextStream or a QDataStream. QBuffer has an associated "
+ "QByteArray which holds the buffer data. The size() of the buffer is "
+ "automatically adjusted as data is written.\n"
+ "The constructor QBuffer(QByteArray) creates a QBuffer using an existing "
+ "byte array. The byte array can also be set with setBuffer(). Writing to "
+ "the QBuffer will modify the original byte array because QByteArray is "
+ "explicitly shared.\n"
+ "Use open() to open the buffer before use and to set the mode (read-only, "
+ "write-only, etc.). close() closes the buffer. The buffer must be closed "
+ "before reopening or calling setBuffer().\n"
+ "A common way to use QBuffer is through QDataStream or QTextStream, which "
+ "have constructors that take a QBuffer parameter. For convenience, there "
+ "are also QDataStream and QTextStream constructors that take a QByteArray "
+ "parameter. These constructors create and open an internal QBuffer.\n"
+ "Note that QTextStream can also operate on a QString (a Unicode string); a "
+ "QBuffer cannot.\n"
+ "You can also use QBuffer directly through the standard QIODevice functions "
+ "readBlock(), writeBlock() readLine(), at(), getch(), putch() and ungetch().\n"
+ "See also QFile, QDataStream, QTextStream, QByteArray, Shared Classes, Collection "
+ "Classes and Input/Output and Networking.\n\n"
+ "The QBuffer class is an I/O device that operates on a QByteArray.\n"
+ "QBuffer is used to read and write to a memory buffer. It is normally "
+ "used with a QTextStream or a QDataStream. QBuffer has an associated "
+ "QByteArray which holds the buffer data. The size() of the buffer is "
+ "automatically adjusted as data is written.\n"
+ "The constructor QBuffer(QByteArray) creates a QBuffer using an existing "
+ "byte array. The byte array can also be set with setBuffer(). Writing to "
+ "the QBuffer will modify the original byte array because QByteArray is "
+ "explicitly shared.\n"
+ "Use open() to open the buffer before use and to set the mode (read-only, "
+ "write-only, etc.). close() closes the buffer. The buffer must be closed "
+ "before reopening or calling setBuffer().\n"
+ "A common way to use QBuffer is through QDataStream or QTextStream, which "
+ "have constructors that take a QBuffer parameter. For convenience, there "
+ "are also QDataStream and QTextStream constructors that take a QByteArray "
+ "parameter. These constructors create and open an internal QBuffer.\n"
+ "Note that QTextStream can also operate on a QString (a Unicode string); a "
+ "QBuffer cannot.\n"
+ "You can also use QBuffer directly through the standard QIODevice functions "
+ "readBlock(), writeBlock() readLine(), at(), getch(), putch() and ungetch().\n"
+ "See also QFile, QDataStream, QTextStream, QByteArray, Shared Classes, Collection "
+ "Classes and Input/Output and Networking.");
+}
+
+void tst_QBuffer::writeBlock()
+{
+ QFETCH( QString, str );
+
+ QByteArray ba;
+ QBuffer buf( &ba );
+ buf.open(QIODevice::ReadWrite);
+ QByteArray data = str.toLatin1();
+ QCOMPARE(buf.write( data.constData(), data.size() ), qint64(data.size()));
+
+ QCOMPARE(buf.data(), str.toLatin1());
+}
+
+void tst_QBuffer::seek()
+{
+ QBuffer buffer;
+ buffer.open(QIODevice::WriteOnly);
+ QCOMPARE(buffer.size(), qint64(0));
+ QCOMPARE(buffer.pos(), qint64(0));
+ const qint64 pos = 10;
+ QVERIFY(buffer.seek(pos));
+ QCOMPARE(buffer.size(), pos);
+}
+
+void tst_QBuffer::seekTest_data()
+{
+ writeBlock_data();
+}
+
+#define DO_VALID_SEEK(position) { \
+ char c; \
+ QVERIFY(buf.seek(qint64(position))); \
+ QCOMPARE(buf.pos(), qint64(position)); \
+ QVERIFY(buf.getChar(&c)); \
+ QCOMPARE(QChar(c), str.at(qint64(position))); \
+}
+#define DO_INVALID_SEEK(position) { \
+ qint64 prev_pos = buf.pos(); \
+ QVERIFY(!buf.seek(qint64(position))); \
+ QCOMPARE(buf.pos(), prev_pos); /* position should not be changed */ \
+}
+
+void tst_QBuffer::seekTest()
+{
+ QFETCH(QString, str);
+
+ QByteArray ba;
+ QBuffer buf(&ba);
+#if 0
+ QCOMPARE(buf.pos(), qint64(-1));
+#endif
+ buf.open(QIODevice::ReadWrite);
+ QCOMPARE(buf.pos(), qint64(0));
+
+ QByteArray data = str.toLatin1();
+ QCOMPARE(buf.write( data.constData(), data.size() ), qint64(data.size()));
+
+ QTest::ignoreMessage(QtWarningMsg, "QBuffer::seek: Invalid pos: -1");
+ DO_INVALID_SEEK(-1);
+
+ DO_VALID_SEEK(0);
+ DO_VALID_SEEK(str.size() - 1);
+ QVERIFY(buf.atEnd());
+ DO_VALID_SEEK(str.size() / 2);
+
+ // Special case: valid to seek one position past the buffer.
+ // Its then legal to write, but not read.
+ {
+ char c = 'a';
+ QVERIFY(buf.seek(qint64(str.size())));
+ QCOMPARE(buf.read(&c, qint64(1)), qint64(0));
+ QCOMPARE(c, 'a');
+ QCOMPARE(buf.write(&c, qint64(1)), qint64(1));
+ }
+
+ // Special case 2: seeking to an arbitrary position beyond the buffer auto-expands it
+ // (see Task 184730)
+ {
+ char c;
+ const int offset = 1; // any positive integer will do
+ const qint64 pos = buf.size() + offset;
+ QVERIFY(buf.seek(pos));
+ QCOMPARE(buf.pos(), pos);
+ QVERIFY(!buf.getChar(&c));
+ QVERIFY(buf.seek(pos - 1));
+ QVERIFY(buf.getChar(&c));
+ QCOMPARE(c, buf.data().at(pos - 1));
+ QVERIFY(buf.seek(pos));
+ QVERIFY(buf.putChar(c));
+ }
+}
+
+void tst_QBuffer::read_rawdata()
+{
+ static const unsigned char mydata[] = {
+ 0x01, 0x00, 0x03, 0x84, 0x78, 0x9c, 0x3b, 0x76,
+ 0xec, 0x18, 0xc3, 0x31, 0x0a, 0xf1, 0xcc, 0x99,
+ 0x6d, 0x5b
+ };
+
+ QByteArray data = QByteArray::fromRawData((const char *)mydata, sizeof(mydata));
+ QBuffer buffer(&data);
+ buffer.open(QIODevice::ReadOnly);
+ QDataStream in(&buffer);
+ quint8 ch;
+ for (int i = 0; i < (int)sizeof(mydata); ++i) {
+ QVERIFY(!buffer.atEnd());
+ in >> ch;
+ QVERIFY(ch == (quint8)mydata[i]);
+ }
+ QVERIFY(buffer.atEnd());
+}
+
+void tst_QBuffer::isSequential()
+{
+ QBuffer buf;
+ QVERIFY(!buf.isSequential());
+}
+
+void tst_QBuffer::signalTest_data()
+{
+ QTest::addColumn<QByteArray>("sample");
+
+ QTest::newRow("empty") << QByteArray();
+ QTest::newRow("size 1") << QByteArray("1");
+ QTest::newRow("size 2") << QByteArray("11");
+ QTest::newRow("size 100") << QByteArray(100, '1');
+}
+
+void tst_QBuffer::signalTest()
+{
+ QFETCH(QByteArray, sample);
+
+ totalBytesWritten = 0;
+
+ QBuffer buf;
+ buf.open(QIODevice::WriteOnly);
+
+ buf.buffer().resize(sample.size() * 10);
+ connect(&buf, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
+ connect(&buf, SIGNAL(bytesWritten(qint64)), this, SLOT(bytesWrittenSlot(qint64)));
+
+ for (int i = 0; i < 10; ++i) {
+ gotReadyRead = false;
+ QCOMPARE(buf.write(sample), qint64(sample.size()));
+ if (sample.size() > 0) {
+ QTestEventLoop::instance().enterLoop(5);
+ if (QTestEventLoop::instance().timeout())
+ QFAIL("Timed out when waiting for readyRead()");
+ QCOMPARE(totalBytesWritten, qint64(sample.size() * (i + 1)));
+ QVERIFY(gotReadyRead);
+ } else {
+ QCOMPARE(totalBytesWritten, qint64(0));
+ QVERIFY(!gotReadyRead);
+ }
+ }
+}
+
+void tst_QBuffer::readyReadSlot()
+{
+ gotReadyRead = true;
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QBuffer::bytesWrittenSlot(qint64 written)
+{
+ totalBytesWritten += written;
+}
+
+void tst_QBuffer::isClosedAfterClose()
+{
+ QBuffer buffer;
+ buffer.open(QBuffer::ReadOnly);
+ QVERIFY(buffer.isOpen());
+ buffer.close();
+ QVERIFY(!buffer.isOpen());
+}
+
+void tst_QBuffer::readLine_data()
+{
+ QTest::addColumn<QByteArray>("src");
+ QTest::addColumn<int>("maxlen");
+ QTest::addColumn<QByteArray>("expected");
+
+ QTest::newRow("1") << QByteArray("line1\nline2\n") << 1024
+ << QByteArray("line1\n");
+ QTest::newRow("2") << QByteArray("hi there") << 1024
+ << QByteArray("hi there");
+ QTest::newRow("3") << QByteArray("l\n") << 3 << QByteArray("l\n");
+ QTest::newRow("4") << QByteArray("l\n") << 2 << QByteArray("l");
+}
+
+void tst_QBuffer::readLine()
+{
+ QFETCH(QByteArray, src);
+ QFETCH(int, maxlen);
+ QFETCH(QByteArray, expected);
+
+ QBuffer buf;
+ buf.setBuffer(&src);
+ char *result = new char[maxlen + 1];
+ result[maxlen] = '\0';
+
+ QVERIFY(buf.open(QIODevice::ReadOnly));
+
+ qint64 bytes_read = buf.readLine(result, maxlen);
+
+ QCOMPARE(bytes_read, qint64(expected.size()));
+ QCOMPARE(QByteArray(result), expected);
+
+ buf.close();
+ delete[] result;
+
+}
+
+void tst_QBuffer::canReadLine_data()
+{
+ QTest::addColumn<QByteArray>("src");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("1") << QByteArray("no newline") << false;
+ QTest::newRow("2") << QByteArray("two \n lines\n") << true;
+ QTest::newRow("3") << QByteArray("\n") << true;
+ QTest::newRow("4") << QByteArray() << false;
+}
+
+void tst_QBuffer::canReadLine()
+{
+ QFETCH(QByteArray, src);
+ QFETCH(bool, expected);
+
+ QBuffer buf;
+ buf.setBuffer(&src);
+ QVERIFY(!buf.canReadLine());
+ QVERIFY(buf.open(QIODevice::ReadOnly));
+ QCOMPARE(buf.canReadLine(), expected);
+}
+
+void tst_QBuffer::atEnd()
+{
+ QBuffer buffer;
+ buffer.open(QBuffer::Append);
+ buffer.write("heisann");
+ buffer.close();
+
+ buffer.open(QBuffer::ReadOnly);
+ buffer.seek(buffer.size());
+ char c;
+ QVERIFY(!buffer.getChar(&c));
+ QCOMPARE(buffer.read(&c, 1), qint64(0));
+}
+
+void tst_QBuffer::readLineBoundaries()
+{
+ QByteArray line = "This is a line\n";
+ QBuffer buffer;
+ buffer.open(QIODevice::ReadWrite);
+ while (buffer.size() < 16384)
+ buffer.write(line);
+
+/*
+ buffer.seek(0);
+ QFile out1("out1.txt");
+ out1.open(QFile::WriteOnly);
+ out1.write(buffer.readAll());
+ out1.close();
+*/
+ buffer.seek(0);
+
+ char c;
+ buffer.getChar(&c);
+ buffer.ungetChar(c);
+
+ QFile out2("out2.txt");
+ out2.open(QFile::WriteOnly);
+ while (!buffer.atEnd())
+ out2.write(buffer.readLine());
+
+ out2.close();
+ out2.remove();
+}
+
+void tst_QBuffer::writeAfterQByteArrayResize()
+{
+ QBuffer buffer;
+ QVERIFY(buffer.open(QIODevice::WriteOnly));
+
+ buffer.write(QByteArray().fill('a', 1000));
+ QCOMPARE(buffer.buffer().size(), 1000);
+
+ // resize the QByteArray behind QBuffer's back
+ buffer.buffer().clear();
+ buffer.seek(0);
+ QCOMPARE(buffer.buffer().size(), 0);
+
+ buffer.write(QByteArray().fill('b', 1000));
+ QCOMPARE(buffer.buffer().size(), 1000);
+}
+
+void tst_QBuffer::read_null()
+{
+ QByteArray buffer;
+ buffer.resize(32000);
+ for (int i = 0; i < buffer.size(); ++i)
+ buffer[i] = char(i & 0xff);
+
+ QBuffer in(&buffer);
+ in.open(QIODevice::ReadOnly);
+
+ QByteArray chunk;
+
+ chunk.resize(16380);
+ in.read(chunk.data(), 16380);
+
+ QCOMPARE(chunk, buffer.mid(0, chunk.size()));
+
+ in.read(chunk.data(), 0);
+
+ chunk.resize(8);
+ in.read(chunk.data(), chunk.size());
+
+ QCOMPARE(chunk, buffer.mid(16380, chunk.size()));
+}
+
+QTEST_MAIN(tst_QBuffer)
+#include "tst_qbuffer.moc"
diff --git a/tests/auto/corelib/io/qdatastream/.gitignore b/tests/auto/corelib/io/qdatastream/.gitignore
new file mode 100644
index 0000000000..cdcbaa591e
--- /dev/null
+++ b/tests/auto/corelib/io/qdatastream/.gitignore
@@ -0,0 +1,2 @@
+datastream.tmp
+tst_qdatastream
diff --git a/tests/auto/corelib/io/qdatastream/datastream.q42 b/tests/auto/corelib/io/qdatastream/datastream.q42
new file mode 100644
index 0000000000..5c83f5c7fc
--- /dev/null
+++ b/tests/auto/corelib/io/qdatastream/datastream.q42
Binary files differ
diff --git a/tests/auto/corelib/io/qdatastream/qdatastream.pro b/tests/auto/corelib/io/qdatastream/qdatastream.pro
new file mode 100644
index 0000000000..51c342c350
--- /dev/null
+++ b/tests/auto/corelib/io/qdatastream/qdatastream.pro
@@ -0,0 +1,20 @@
+load(qttest_p4)
+SOURCES += tst_qdatastream.cpp
+QT += gui widgets
+wince*: {
+ addFiles.files = datastream.q42
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+ DEFINES += SRCDIR=\\\"\\\"
+} else:symbian {
+ # SRCDIR defined in code in symbian
+ addFiles.files = datastream.q42
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+ TARGET.EPOCHEAPSIZE = 1000000 10000000
+ TARGET.UID3 = 0xE0340001
+ DEFINES += SYMBIAN_SRCDIR_UID=$$lower($$replace(TARGET.UID3,"0x",""))
+}else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+
diff --git a/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp b/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp
new file mode 100644
index 0000000000..e5a80d9bf3
--- /dev/null
+++ b/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp
@@ -0,0 +1,3232 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtGui/QtGui>
+
+#if defined(Q_OS_SYMBIAN)
+# define STRINGIFY(x) #x
+# define TOSTRING(x) STRINGIFY(x)
+# define SRCDIR "C:/Private/" TOSTRING(SYMBIAN_SRCDIR_UID) "/"
+#endif
+
+Q_DECLARE_METATYPE(QBitArray)
+Q_DECLARE_METATYPE(qint64)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QDataStream : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QDataStream();
+ virtual ~tst_QDataStream();
+
+ void stream_data(int noOfElements);
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void getSetCheck();
+ void stream_bool_data();
+ void stream_bool();
+
+ void stream_QBool_data();
+ void stream_QBool();
+
+ void stream_QBool_in_4_0();
+
+ void stream_QBitArray_data();
+ void stream_QBitArray();
+
+ void stream_QBrush_data();
+ void stream_QBrush();
+
+ void stream_QColor_data();
+ void stream_QColor();
+
+ void stream_QByteArray_data();
+ void stream_QByteArray();
+
+ void stream_QCursor_data();
+ void stream_QCursor();
+
+ void stream_QDate_data();
+ void stream_QDate();
+
+ void stream_QTime_data();
+ void stream_QTime();
+
+ void stream_QDateTime_data();
+ void stream_QDateTime();
+
+ void stream_QFont_data();
+ void stream_QFont();
+
+ void stream_QImage_data();
+ void stream_QImage();
+
+ void stream_QPen_data();
+ void stream_QPen();
+
+ void stream_QPixmap_data();
+ void stream_QPixmap();
+
+ void stream_QPoint_data();
+ void stream_QPoint();
+
+ void stream_QRect_data();
+ void stream_QRect();
+
+ void stream_QPolygon_data();
+ void stream_QPolygon();
+
+ void stream_QRegion_data();
+ void stream_QRegion();
+
+ void stream_QSize_data();
+ void stream_QSize();
+
+ void stream_QString_data();
+ void stream_QString();
+
+ void stream_QRegExp_data();
+ void stream_QRegExp();
+
+ void stream_Map_data();
+ void stream_Map();
+
+ void stream_Hash_data();
+ void stream_Hash();
+
+ void stream_qint64_data();
+ void stream_qint64();
+
+ void stream_QIcon_data();
+ void stream_QIcon();
+
+ void stream_QEasingCurve_data();
+ void stream_QEasingCurve();
+
+ void stream_atEnd_data();
+ void stream_atEnd();
+
+ void stream_writeError();
+
+ void stream_QByteArray2();
+
+ void setVersion_data();
+ void setVersion();
+
+ void skipRawData_data();
+ void skipRawData();
+
+ void status_qint8_data();
+ void status_qint8();
+ void status_qint16_data();
+ void status_qint16();
+ void status_qint32_data();
+ void status_qint32();
+ void status_qint64_data();
+ void status_qint64();
+
+ void status_float_data();
+ void status_float();
+ void status_double_data();
+ void status_double();
+
+ void status_charptr_QByteArray_data();
+ void status_charptr_QByteArray();
+
+ void status_QString_data();
+ void status_QString();
+
+ void status_QBitArray_data();
+ void status_QBitArray();
+
+ void status_QHash_QMap();
+
+ void status_QLinkedList_QList_QVector();
+
+ void streamToAndFromQByteArray();
+
+ void streamRealDataTypes();
+
+ void floatingPointPrecision();
+
+ void compatibility_Qt3();
+ void compatibility_Qt2();
+
+private:
+ void writebool(QDataStream *s);
+ void writeQBool(QDataStream *s);
+ void writeQBitArray(QDataStream *s);
+ void writeQBrush(QDataStream *s);
+ void writeQColor(QDataStream *s);
+ void writeQByteArray(QDataStream *s);
+ void writeQCursor(QDataStream *s);
+ void writeQWaitCursor(QDataStream *s);
+ void writeQDate(QDataStream *s);
+ void writeQTime(QDataStream *s);
+ void writeQDateTime(QDataStream *s);
+ void writeQFont(QDataStream *s);
+ void writeQImage(QDataStream *s);
+ void writeQPen(QDataStream *s);
+ void writeQPixmap(QDataStream *s);
+ void writeQPoint(QDataStream *s);
+ void writeQRect(QDataStream *s);
+ void writeQPolygon(QDataStream *s);
+ void writeQRegion(QDataStream *s);
+ void writeQSize(QDataStream *s);
+ void writeQString(QDataStream* dev);
+ void writeQRegExp(QDataStream* dev);
+ void writeMap(QDataStream* dev);
+ void writeHash(QDataStream* dev);
+ void writeqint64(QDataStream *s);
+ void writeQIcon(QDataStream *s);
+ void writeQEasingCurve(QDataStream *s);
+
+ void readbool(QDataStream *s);
+ void readQBool(QDataStream *s);
+ void readQBitArray(QDataStream *s);
+ void readQBrush(QDataStream *s);
+ void readQColor(QDataStream *s);
+ void readQByteArray(QDataStream *s);
+ void readQCursor(QDataStream *s);
+ void readQDate(QDataStream *s);
+ void readQTime(QDataStream *s);
+ void readQDateTime(QDataStream *s);
+ void readQFont(QDataStream *s);
+ void readQImage(QDataStream *s);
+ void readQPen(QDataStream *s);
+ void readQPixmap(QDataStream *s);
+ void readQPoint(QDataStream *s);
+ void readQRect(QDataStream *s);
+ void readQPolygon(QDataStream *s);
+ void readQRegion(QDataStream *s);
+ void readQSize(QDataStream *s);
+ void readQString(QDataStream *s);
+ void readQRegExp(QDataStream *s);
+ void readMap(QDataStream *s);
+ void readHash(QDataStream *s);
+ void readqint64(QDataStream *s);
+ void readQIcon(QDataStream *s);
+ void readQEasingCurve(QDataStream *s);
+};
+
+static int NColorRoles[] = {
+ QPalette::NoRole, // No Version
+ QPalette::NoRole, // Qt_1_0
+ QPalette::HighlightedText + 1, // Qt_2_0
+ QPalette::HighlightedText + 1, // Qt_2_1
+ QPalette::LinkVisited + 1, // Qt_3_0
+ QPalette::HighlightedText + 1, // Qt_3_1
+ QPalette::HighlightedText + 1, // Qt_3_3
+ QPalette::HighlightedText + 1, // Qt_4_0, Qt_4_1
+ QPalette::HighlightedText + 1, // Qt_4_2
+ QPalette::AlternateBase + 1, // Qt_4_3
+ QPalette::ToolTipText + 1, // Qt_4_4
+ QPalette::ToolTipText + 1, // Qt_4_5
+ QPalette::ToolTipText + 1, // Qt_4_6
+ 0 // add the correct value for Qt_4_7 here later
+};
+
+// Testing get/set functions
+void tst_QDataStream::getSetCheck()
+{
+ QDataStream obj1;
+ // QIODevice * QDataStream::device()
+ // void QDataStream::setDevice(QIODevice *)
+ QFile *var1 = new QFile;
+ obj1.setDevice(var1);
+ QCOMPARE((QIODevice *)var1, (QIODevice *)obj1.device());
+ obj1.setDevice((QIODevice *)0);
+ QCOMPARE((QIODevice *)0, (QIODevice *)obj1.device());
+ delete var1;
+
+ // Status QDataStream::status()
+ // void QDataStream::setStatus(Status)
+ obj1.setStatus(QDataStream::Ok);
+ QCOMPARE(QDataStream::Ok, obj1.status());
+ obj1.setStatus(QDataStream::ReadPastEnd);
+ QCOMPARE(QDataStream::ReadPastEnd, obj1.status());
+ obj1.resetStatus();
+ obj1.setStatus(QDataStream::ReadCorruptData);
+ QCOMPARE(QDataStream::ReadCorruptData, obj1.status());
+}
+
+tst_QDataStream::tst_QDataStream()
+{
+}
+
+tst_QDataStream::~tst_QDataStream()
+{
+ QFile::remove(QLatin1String("qdatastream.out"));
+}
+
+void tst_QDataStream::init()
+{
+}
+
+void tst_QDataStream::cleanup()
+{
+}
+
+static int dataIndex(const QString &tag)
+{
+ int pos = tag.lastIndexOf("_");
+ if (pos >= 0) {
+ int ret = 0;
+ QString count = tag.mid(pos + 1);
+ bool ok;
+ ret = count.toInt(&ok);
+ if (ok)
+ return ret;
+ }
+ return -1;
+}
+
+static const char * const devices[] = {
+ "file",
+ "bytearray",
+ "buffer",
+ 0
+};
+
+/*
+ IMPORTANT.
+ In this testcase i follow a different approach than usual: I don't use the full power of
+ QtTestTable and QtTestData. This is done deliberately because QtTestData uses a QDataStream
+ itself to handle its data. So it would be a bit inapropriate to fully rely on QtTestData in this
+ testcase.
+ I do use QString in QtTestData because this is thouroughly tested in the selftest.
+*/
+void tst_QDataStream::stream_data(int noOfElements)
+{
+ QTest::addColumn<QString>("device");
+ QTest::addColumn<QString>("byteOrder");
+
+ for (int d=0; devices[d] != 0; d++) {
+ QString device = devices[d];
+ for (int b=0; b<2; b++) {
+ QString byte_order = b == 0 ? "BigEndian" : "LittleEndian";
+
+ QString tag = device + "_" + byte_order;
+ for (int e=0; e<noOfElements; e++) {
+ QTest::newRow(qPrintable(tag + QString("_%1").arg(e))) << device << QString(byte_order);
+ }
+ }
+ }
+}
+
+static const char* open_xpm[]={
+"16 13 6 1",
+". c None",
+"b c #ffff00",
+"d c #000000",
+"* c #999999",
+"c c #cccccc",
+"a c #ffffff",
+"...*****........",
+"..*aaaaa*.......",
+".*abcbcba******.",
+".*acbcbcaaaaaa*d",
+".*abcbcbcbcbcb*d",
+"*************b*d",
+"*aaaaaaaaaa**c*d",
+"*abcbcbcbcbbd**d",
+".*abcbcbcbcbcd*d",
+".*acbcbcbcbcbd*d",
+"..*acbcbcbcbb*dd",
+"..*************d",
+"...ddddddddddddd"};
+
+#define STREAM_IMPL(TYPE) \
+ QFETCH(QString, device); \
+ if (device == "bytearray") { \
+ QByteArray ba; \
+ QDataStream sout(&ba, QIODevice::WriteOnly); \
+ write##TYPE(&sout); \
+ QDataStream sin(&ba, QIODevice::ReadOnly); \
+ read##TYPE(&sin); \
+ } else if (device == "file") { \
+ QString fileName = "qdatastream.out"; \
+ QFile fOut(fileName); \
+ QVERIFY(fOut.open(QIODevice::WriteOnly)); \
+ QDataStream sout(&fOut); \
+ write##TYPE(&sout); \
+ fOut.close(); \
+ QFile fIn(fileName); \
+ QVERIFY(fIn.open(QIODevice::ReadOnly)); \
+ QDataStream sin(&fIn); \
+ read##TYPE(&sin); \
+ fIn.close(); \
+ } else if (device == "buffer") { \
+ QByteArray ba(10000, '\0'); \
+ QBuffer bOut(&ba); \
+ bOut.open(QIODevice::WriteOnly); \
+ QDataStream sout(&bOut); \
+ write##TYPE(&sout); \
+ bOut.close(); \
+ QBuffer bIn(&ba); \
+ bIn.open(QIODevice::ReadOnly); \
+ QDataStream sin(&bIn); \
+ read##TYPE(&sin); \
+ bIn.close(); \
+ }
+
+// ************************************
+
+static QString QStringData(int index)
+{
+ switch (index) {
+ case 0: return QString();
+ case 1: return QString("");
+ case 2: return QString("A");
+ case 3: return QString("ABCDE FGHI");
+ case 4: return QString("This is a long string");
+ case 5: return QString("And again a string with a \nCRLF");
+ case 6: return QString("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRESTUVWXYZ 1234567890 ~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/");
+ }
+ return QString("foo");
+}
+#define MAX_QSTRING_DATA 7
+
+void tst_QDataStream::stream_QString_data()
+{
+ stream_data(MAX_QSTRING_DATA);
+}
+
+void tst_QDataStream::stream_QString()
+{
+ STREAM_IMPL(QString);
+}
+
+void tst_QDataStream::writeQString(QDataStream* s)
+{
+ QString test(QStringData(dataIndex(QTest::currentDataTag())));
+ *s << test;
+ *s << QString("Her er det noe tekst");
+ *s << test;
+ *s << QString();
+ *s << test;
+ *s << QString("");
+ *s << test;
+ *s << QString("nonempty");
+ *s << test;
+}
+
+void tst_QDataStream::readQString(QDataStream *s)
+{
+ QString S;
+ QString test(QStringData(dataIndex(QTest::currentDataTag())));
+
+ *s >> S;
+ QCOMPARE(S, test);
+ *s >> S;
+ QCOMPARE(S, QString("Her er det noe tekst"));
+ *s >> S;
+ QCOMPARE(S, test);
+ *s >> S;
+ QVERIFY(S.isNull());
+ *s >> S;
+ QCOMPARE(S, test);
+ *s >> S;
+ QVERIFY(S.isEmpty());
+ *s >> S;
+ QCOMPARE(S, test);
+ *s >> S;
+ QCOMPARE(S, QString("nonempty"));
+ *s >> S;
+ QCOMPARE(S, test);
+}
+
+// ************************************
+
+static QRegExp QRegExpData(int index)
+{
+ switch (index) {
+ case 0: return QRegExp();
+ case 1: return QRegExp("");
+ case 2: return QRegExp("A", Qt::CaseInsensitive);
+ case 3: return QRegExp("ABCDE FGHI", Qt::CaseSensitive, QRegExp::Wildcard);
+ case 4: return QRegExp("This is a long string", Qt::CaseInsensitive, QRegExp::FixedString);
+ case 5: return QRegExp("And again a string with a \nCRLF", Qt::CaseInsensitive, QRegExp::RegExp);
+ case 6:
+ {
+ QRegExp rx("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRESTUVWXYZ 1234567890 ~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/");
+ rx.setMinimal(true);
+ return rx;
+ }
+ }
+ return QRegExp("foo");
+}
+#define MAX_QREGEXP_DATA 7
+
+void tst_QDataStream::stream_QRegExp_data()
+{
+ stream_data(MAX_QREGEXP_DATA);
+}
+
+void tst_QDataStream::stream_QRegExp()
+{
+ STREAM_IMPL(QRegExp);
+}
+
+void tst_QDataStream::writeQRegExp(QDataStream* s)
+{
+ QRegExp test(QRegExpData(dataIndex(QTest::currentDataTag())));
+ *s << test;
+ *s << QString("Her er det noe tekst");
+ *s << test;
+ *s << QString("nonempty");
+ *s << test;
+ *s << QVariant(test);
+}
+
+void tst_QDataStream::readQRegExp(QDataStream *s)
+{
+ QRegExp R;
+ QString S;
+ QVariant V;
+ QRegExp test(QRegExpData(dataIndex(QTest::currentDataTag())));
+
+ *s >> R;
+ QCOMPARE(R, test);
+ *s >> S;
+ QCOMPARE(S, QString("Her er det noe tekst"));
+ *s >> R;
+ QCOMPARE(R, test);
+ *s >> S;
+ QCOMPARE(S, QString("nonempty"));
+ *s >> R;
+ QCOMPARE(R, test);
+ *s >> V;
+ QVERIFY(V.type() == QVariant::RegExp);
+ QCOMPARE(V.toRegExp(), test);
+}
+
+// ************************************
+
+typedef QMap<int, QString> Map;
+
+static Map MapData(int index)
+{
+ Map map;
+
+ switch (index) {
+ case 0:
+ default:
+ break;
+ case 1:
+ map.insert(1, "a");
+ map.insert(2, "bbb");
+ map.insert(3, "cccccc");
+ break;
+ case 2:
+ map.insert(1, "a");
+ map.insert(2, "one");
+ map.insertMulti(2, "two");
+ map.insertMulti(2, "three");
+ map.insert(3, "cccccc");
+ }
+ return map;
+}
+#define MAX_MAP_DATA 3
+
+void tst_QDataStream::stream_Map_data()
+{
+ stream_data(MAX_MAP_DATA);
+}
+
+void tst_QDataStream::stream_Map()
+{
+ STREAM_IMPL(Map);
+}
+
+void tst_QDataStream::writeMap(QDataStream* s)
+{
+ Map test(MapData(dataIndex(QTest::currentDataTag())));
+ *s << test;
+ *s << test;
+}
+
+void tst_QDataStream::readMap(QDataStream *s)
+{
+ Map S;
+ Map test(MapData(dataIndex(QTest::currentDataTag())));
+
+ *s >> S;
+ QCOMPARE(S, test);
+ *s >> S;
+ QCOMPARE(S, test);
+}
+
+// ************************************
+
+typedef QHash<int, QString> Hash;
+
+static Hash HashData(int index)
+{
+ Hash map;
+
+ switch (index) {
+ case 0:
+ default:
+ break;
+ case 1:
+ map.insert(1, "a");
+ map.insert(2, "bbb");
+ map.insert(3, "cccccc");
+ break;
+ case 2:
+ map.insert(1, "a");
+ map.insert(2, "one");
+ map.insertMulti(2, "two");
+ map.insertMulti(2, "three");
+ map.insert(3, "cccccc");
+ }
+ return map;
+}
+#define MAX_HASH_DATA 3
+
+void tst_QDataStream::stream_Hash_data()
+{
+ stream_data(MAX_HASH_DATA);
+}
+
+void tst_QDataStream::stream_Hash()
+{
+ STREAM_IMPL(Hash);
+}
+
+void tst_QDataStream::writeHash(QDataStream* s)
+{
+ Hash test(HashData(dataIndex(QTest::currentDataTag())));
+ *s << test;
+ *s << test;
+}
+
+void tst_QDataStream::readHash(QDataStream *s)
+{
+ Hash S;
+ Hash test(HashData(dataIndex(QTest::currentDataTag())));
+
+ *s >> S;
+ QCOMPARE(S, test);
+ *s >> S;
+ QCOMPARE(S, test);
+}
+
+// ************************************
+
+static QEasingCurve QEasingCurveData(int index)
+{
+ QEasingCurve easing;
+
+ switch (index) {
+ case 0:
+ default:
+ break;
+ case 1:
+ easing.setType(QEasingCurve::Linear);
+ break;
+ case 2:
+ easing.setType(QEasingCurve::OutCubic);
+ break;
+ case 3:
+ easing.setType(QEasingCurve::InOutSine);
+ break;
+ case 4:
+ easing.setType(QEasingCurve::InOutElastic);
+ easing.setPeriod(1.5);
+ easing.setAmplitude(2.0);
+ break;
+ case 5:
+ easing.setType(QEasingCurve::OutInBack);
+ break;
+ case 6:
+ easing.setType(QEasingCurve::OutCurve);
+ break;
+ case 7:
+ easing.setType(QEasingCurve::InOutBack);
+ easing.setOvershoot(0.5);
+ break;
+ }
+ return easing;
+}
+#define MAX_EASING_DATA 8
+
+void tst_QDataStream::stream_QEasingCurve_data()
+{
+ stream_data(MAX_EASING_DATA);
+}
+
+void tst_QDataStream::stream_QEasingCurve()
+{
+ STREAM_IMPL(QEasingCurve);
+}
+
+void tst_QDataStream::writeQEasingCurve(QDataStream* s)
+{
+ QEasingCurve test(QEasingCurveData(dataIndex(QTest::currentDataTag())));
+ *s << test;
+}
+
+void tst_QDataStream::readQEasingCurve(QDataStream *s)
+{
+ QEasingCurve S;
+ QEasingCurve expected(QEasingCurveData(dataIndex(QTest::currentDataTag())));
+
+ *s >> S;
+ QCOMPARE(S, expected);
+}
+
+// ************************************
+
+// contains some quint64 testing as well
+
+#define MAX_qint64_DATA 4
+
+static qint64 qint64Data(int index)
+{
+ switch (index) {
+ case 0: return qint64(0);
+ case 1: return qint64(1);
+ case 2: return qint64(-1);
+ case 3: return qint64(1) << 40;
+ case MAX_qint64_DATA: return -(qint64(1) << 40);
+ }
+
+ return -1;
+}
+
+void tst_QDataStream::stream_qint64_data()
+{
+ stream_data(MAX_qint64_DATA+1);
+}
+
+void tst_QDataStream::stream_qint64()
+{
+ STREAM_IMPL(qint64);
+}
+
+void tst_QDataStream::writeqint64(QDataStream* s)
+{
+ qint64 test = qint64Data(dataIndex(QTest::currentDataTag()));
+ *s << test;
+ *s << int(1);
+ *s << (quint64)test;
+}
+
+void tst_QDataStream::readqint64(QDataStream *s)
+{
+ qint64 test = qint64Data(dataIndex(QTest::currentDataTag()));
+ qint64 i64;
+ quint64 ui64;
+ int i;
+ *s >> i64;
+ QCOMPARE(i64, test);
+ *s >> i;
+ QCOMPARE(i, int(1));
+ *s >> ui64;
+ QCOMPARE(ui64, (quint64)test);
+}
+
+// ************************************
+
+static bool boolData(int index)
+{
+ switch (index) {
+ case 0: return true;
+ case 1: return false;
+ case 2: return bool(2);
+ case 3: return bool(-1);
+ case 4: return bool(127);
+ }
+
+ return false;
+}
+
+void tst_QDataStream::stream_bool_data()
+{
+ stream_data(5);
+}
+
+void tst_QDataStream::stream_bool()
+{
+ STREAM_IMPL(bool);
+}
+
+void tst_QDataStream::writebool(QDataStream *s)
+{
+ bool d1 = boolData(dataIndex(QTest::currentDataTag()));
+ *s << d1;
+}
+
+void tst_QDataStream::readbool(QDataStream *s)
+{
+ bool expected = boolData(dataIndex(QTest::currentDataTag()));
+
+ bool d1;
+ *s >> d1;
+ QVERIFY(d1 == expected);
+}
+
+// ************************************
+
+static QBool QBoolData(int index)
+{
+ switch (index) {
+ case 0: return QBool(true);
+ case 1: return QBool(false);
+ case 2: return QBool(bool(2));
+ case 3: return QBool(bool(-1));
+ case 4: return QBool(bool(127));
+ }
+
+ return QBool(false);
+}
+
+void tst_QDataStream::stream_QBool_data()
+{
+ stream_data(5);
+}
+
+void tst_QDataStream::stream_QBool()
+{
+ STREAM_IMPL(QBool);
+}
+
+void tst_QDataStream::writeQBool(QDataStream *s)
+{
+ QBool d1 = QBoolData(dataIndex(QTest::currentDataTag()));
+ *s << d1;
+}
+
+void tst_QDataStream::readQBool(QDataStream *s)
+{
+ QBool expected = QBoolData(dataIndex(QTest::currentDataTag()));
+
+ bool d1 = true;
+ *s >> d1;
+ QVERIFY(d1 == expected);
+}
+
+void tst_QDataStream::stream_QBool_in_4_0()
+{
+ QByteArray byteArray;
+ QDataStream out(&byteArray, QIODevice::WriteOnly);
+
+ QString str("ABC");
+ out << str.contains('A') << str.contains('Z');
+
+ QCOMPARE(byteArray.size(), 2);
+}
+
+// ************************************
+
+static void QBitArrayData(QBitArray *b, int index)
+{
+ QString filler = "";
+ switch (index) {
+ case 0: filler = ""; break;
+ case 1: filler = ""; break;
+ case 2: filler = "0"; break;
+ case 3: filler = "1"; break;
+ case 4: filler = "0000"; break;
+ case 5: filler = "0001"; break;
+ case 6: filler = "0010"; break;
+ case 7: filler = "0100"; break;
+ case 8: filler = "1000"; break;
+ case 9: filler = "1111"; break;
+ case 10: filler = "00000000"; break;
+ case 11: filler = "00000001"; break;
+ case 12: filler = "11111111"; break;
+ case 13: filler = "000000001"; break;
+ case 14: filler = "000000000001"; break;
+ case 15: filler = "0000000000000001"; break;
+ case 16: filler = "0101010101010101010101010101010101010101010101010101010101010101"; break;
+ case 17: filler = "1010101010101010101010101010101010101010101010101010101010101010"; break;
+ case 18: filler = "1111111111111111111111111111111111111111111111111111111111111111"; break;
+ }
+
+ b->resize(filler.length());
+ b->fill(0); // reset all bits to zero
+
+ for (int i = 0; i < filler.length(); ++i) {
+ if (filler.at(i) == '1')
+ b->setBit(i, TRUE);
+ }
+}
+
+void tst_QDataStream::stream_QBitArray_data()
+{
+ stream_data(19);
+}
+
+void tst_QDataStream::stream_QBitArray()
+{
+ STREAM_IMPL(QBitArray);
+}
+
+void tst_QDataStream::writeQBitArray(QDataStream *s)
+{
+ QBitArray d1;
+ QBitArrayData(&d1, dataIndex(QTest::currentDataTag()));
+ *s << d1;
+}
+
+void tst_QDataStream::readQBitArray(QDataStream *s)
+{
+ QBitArray expected;
+ QBitArrayData(&expected, dataIndex(QTest::currentDataTag()));
+
+ QBitArray d1;
+ *s >> d1;
+ QVERIFY(d1 == expected);
+}
+
+// ************************************
+
+static QBrush qBrushData(int index)
+{
+ switch (index) {
+ case 0: return QBrush(Qt::NoBrush);
+ case 1: return QBrush(Qt::SolidPattern);
+ case 2: return QBrush(Qt::Dense7Pattern);
+ case 3: return QBrush(Qt::red, Qt::NoBrush);
+ case 4: return QBrush(Qt::green, Qt::SolidPattern);
+ case 5: return QBrush(Qt::blue, Qt::Dense7Pattern);
+ case 6:
+ {
+ QPixmap pm(open_xpm);
+ QBrush custom(Qt::black, pm);
+ return custom;
+ }
+ case 7:
+ QLinearGradient gradient(QPoint(2.718, 3.142), QPoint(3.1337, 42));
+ gradient.setCoordinateMode(QGradient::ObjectBoundingMode);
+ gradient.setSpread(QGradient::ReflectSpread);
+ gradient.setInterpolationMode(QGradient::ComponentInterpolation);
+ gradient.setColorAt(0.2, Qt::red);
+ gradient.setColorAt(0.6, Qt::transparent);
+ gradient.setColorAt(0.8, Qt::blue);
+ return QBrush(gradient);
+ }
+
+ return QBrush(Qt::NoBrush);
+}
+
+void tst_QDataStream::stream_QBrush_data()
+{
+ stream_data(8);
+}
+
+void tst_QDataStream::stream_QBrush()
+{
+ if (QString(QTest::currentDataTag()).endsWith("6"))
+ QSKIP("Custom brushes don't seem to be supported with QDataStream", SkipSingle);
+
+ STREAM_IMPL(QBrush);
+}
+
+void tst_QDataStream::writeQBrush(QDataStream *s)
+{
+ QBrush brush = qBrushData(dataIndex(QTest::currentDataTag()));
+ *s << brush;
+}
+
+void tst_QDataStream::readQBrush(QDataStream *s)
+{
+ QBrush d2;
+ *s >> d2;
+
+ QBrush brush = qBrushData(dataIndex(QTest::currentDataTag()));
+ QVERIFY(d2 == brush);
+}
+
+// ************************************
+
+static QColor QColorData(int index)
+{
+ switch (index) {
+ case 0: return QColor(0,0,0);
+ case 1: return QColor(0,0,0);
+ case 2: return QColor(0,0,0);
+ case 3: return QColor(0,0,0);
+ case 4: return QColor(0,0,0);
+ case 5: return QColor(0,0,0);
+ case 6: return QColor(0,0,0);
+ case 7: return QColor(0,0,0);
+ }
+
+ return QColor(0,0,0);
+}
+
+void tst_QDataStream::stream_QColor_data()
+{
+ stream_data(8);
+}
+
+void tst_QDataStream::stream_QColor()
+{
+ STREAM_IMPL(QColor);
+}
+
+void tst_QDataStream::writeQColor(QDataStream *s)
+{
+ QColor d3(QColorData(dataIndex(QTest::currentDataTag())));
+ *s << d3;
+}
+
+void tst_QDataStream::readQColor(QDataStream *s)
+{
+ QColor test(QColorData(dataIndex(QTest::currentDataTag())));
+ QColor d3;
+ *s >> d3;
+ QVERIFY(d3 == test);
+}
+
+
+// ************************************
+
+static QByteArray qByteArrayData(int index)
+{
+ switch (index) {
+ case 0: return QByteArray();
+ case 1: return QByteArray("");
+ case 2: return QByteArray("foo");
+ case 3: return QByteArray("foo bar");
+ case 4: return QByteArray("two\nlines");
+ case 5: return QByteArray("ABCDEFG");
+ case 6: return QByteArray("baec zxv 123"); // kept for nostalgic reasons
+ case 7: return QByteArray("jbc;UBC;jd clhdbcahd vcbd vgdv dhvb laifv kadf jkhfbvljd khd lhvjh ");
+ }
+
+ return QByteArray("foo");
+}
+
+void tst_QDataStream::stream_QByteArray_data()
+{
+ stream_data(8);
+}
+
+void tst_QDataStream::stream_QByteArray()
+{
+ STREAM_IMPL(QByteArray);
+}
+
+void tst_QDataStream::writeQByteArray(QDataStream *s)
+{
+ QByteArray d4(qByteArrayData(dataIndex(QTest::currentDataTag())));
+ *s << d4;
+}
+
+void tst_QDataStream::readQByteArray(QDataStream *s)
+{
+ QByteArray test(qByteArrayData(dataIndex(QTest::currentDataTag())));
+ QByteArray d4;
+ *s >> d4;
+ QCOMPARE(d4, test);
+}
+
+// ************************************
+#ifndef QT_NO_CURSOR
+static QCursor qCursorData(int index)
+{
+ switch (index) {
+ case 0: return QCursor(Qt::ArrowCursor);
+ case 1: return QCursor(Qt::WaitCursor);
+ case 2: return QCursor(Qt::BitmapCursor);
+ case 3: return QCursor(Qt::BlankCursor);
+ case 4: return QCursor(Qt::BlankCursor);
+ case 5: return QCursor(QPixmap(open_xpm), 1, 1);
+ case 6: { QPixmap pm(open_xpm); return QCursor(QBitmap(pm), pm.mask(), 3, 4); }
+ case 7: return QCursor(QPixmap(open_xpm), -1, 5);
+ case 8: return QCursor(QPixmap(open_xpm), 5, -1);
+ }
+
+ return QCursor();
+}
+#endif
+
+void tst_QDataStream::stream_QCursor_data()
+{
+#ifndef QT_NO_CURSOR
+ stream_data(9);
+#endif
+}
+
+void tst_QDataStream::stream_QCursor()
+{
+#ifndef QT_NO_CURSOR
+ STREAM_IMPL(QCursor);
+#endif
+}
+
+void tst_QDataStream::writeQCursor(QDataStream *s)
+{
+#ifndef QT_NO_CURSOR
+ QCursor d5(qCursorData(dataIndex(QTest::currentDataTag())));
+ *s << d5;
+#endif
+}
+
+void tst_QDataStream::readQCursor(QDataStream *s)
+{
+#ifndef QT_NO_CURSOR
+ QCursor test(qCursorData(dataIndex(QTest::currentDataTag())));
+ QCursor d5;
+ *s >> d5;
+
+ QVERIFY(d5.shape() == test.shape()); //## lacks operator==
+ QVERIFY(d5.hotSpot() == test.hotSpot());
+ QVERIFY((d5.bitmap() != 0 && test.bitmap() != 0) || (d5.bitmap() == 0 && test.bitmap() == 0));
+ if (d5.bitmap() != 0)
+ QVERIFY(pixmapsAreEqual(d5.bitmap(), test.bitmap()));
+ QVERIFY((d5.mask() != 0 && test.mask() != 0) || (d5.mask() == 0 && test.mask() == 0));
+ if (d5.mask() != 0)
+ QVERIFY(pixmapsAreEqual(d5.mask(), test.mask()));
+#endif
+}
+
+// ************************************
+
+static QDate qDateData(int index)
+{
+ switch (index) {
+ case 0: return QDate(1752, 9, 14); // the first valid date
+ case 1: return QDate(1900, 1, 1);
+ case 2: return QDate(1976, 4, 5);
+ case 3: return QDate(1960, 5, 27);
+ case 4: return QDate(1999, 12, 31); // w2k effects?
+ case 5: return QDate(2000, 1, 1);
+ case 6: return QDate(2050, 1, 1);// test some values far in the future too
+ case 7: return QDate(3001, 12, 31);
+ case 8: return QDate(4002, 1, 1);
+ case 9: return QDate(4003, 12, 31);
+ case 10: return QDate(5004, 1, 1);
+ case 11: return QDate(5005, 12, 31);
+ case 12: return QDate(6006, 1, 1);
+ case 13: return QDate(6007, 12, 31);
+ case 14: return QDate(7008, 1, 1);
+ case 15: return QDate(7009, 12, 31);
+ }
+ return QDate();
+}
+#define MAX_QDATE_DATA 16
+
+void tst_QDataStream::stream_QDate_data()
+{
+ stream_data(MAX_QDATE_DATA);
+}
+
+void tst_QDataStream::stream_QDate()
+{
+ STREAM_IMPL(QDate);
+}
+
+void tst_QDataStream::writeQDate(QDataStream *s)
+{
+ QDate d6(qDateData(dataIndex(QTest::currentDataTag())));
+ *s << d6;
+}
+
+void tst_QDataStream::readQDate(QDataStream *s)
+{
+ QDate test(qDateData(dataIndex(QTest::currentDataTag())));
+ QDate d6;
+ *s >> d6;
+ QVERIFY(d6 == test);
+}
+
+// ************************************
+
+static QTime qTimeData(int index)
+{
+ switch (index) {
+ case 0 : return QTime(0, 0, 0, 0);
+ case 1 : return QTime(0, 0, 0, 1);
+ case 2 : return QTime(0, 0, 0, 99);
+ case 3 : return QTime(0, 0, 0, 100);
+ case 4 : return QTime(0, 0, 0, 999);
+ case 5 : return QTime(0, 0, 1, 0);
+ case 6 : return QTime(0, 0, 1, 1);
+ case 7 : return QTime(0, 0, 1, 99);
+ case 8 : return QTime(0, 0, 1, 100);
+ case 9 : return QTime(0, 0, 1, 999);
+ case 10: return QTime(0, 0, 59, 0);
+ case 11: return QTime(0, 0, 59, 1);
+ case 12: return QTime(0, 0, 59, 99);
+ case 13: return QTime(0, 0, 59, 100);
+ case 14: return QTime(0, 0, 59, 999);
+ case 15: return QTime(0, 59, 0, 0);
+ case 16: return QTime(0, 59, 0, 1);
+ case 17: return QTime(0, 59, 0, 99);
+ case 18: return QTime(0, 59, 0, 100);
+ case 19: return QTime(0, 59, 0, 999);
+ case 20: return QTime(0, 59, 1, 0);
+ case 21: return QTime(0, 59, 1, 1);
+ case 22: return QTime(0, 59, 1, 99);
+ case 23: return QTime(0, 59, 1, 100);
+ case 24: return QTime(0, 59, 1, 999);
+ case 25: return QTime(0, 59, 59, 0);
+ case 26: return QTime(0, 59, 59, 1);
+ case 27: return QTime(0, 59, 59, 99);
+ case 28: return QTime(0, 59, 59, 100);
+ case 29: return QTime(0, 59, 59, 999);
+ case 30: return QTime(23, 0, 0, 0);
+ case 31: return QTime(23, 0, 0, 1);
+ case 32: return QTime(23, 0, 0, 99);
+ case 33: return QTime(23, 0, 0, 100);
+ case 34: return QTime(23, 0, 0, 999);
+ case 35: return QTime(23, 0, 1, 0);
+ case 36: return QTime(23, 0, 1, 1);
+ case 37: return QTime(23, 0, 1, 99);
+ case 38: return QTime(23, 0, 1, 100);
+ case 39: return QTime(23, 0, 1, 999);
+ case 40: return QTime(23, 0, 59, 0);
+ case 41: return QTime(23, 0, 59, 1);
+ case 42: return QTime(23, 0, 59, 99);
+ case 43: return QTime(23, 0, 59, 100);
+ case 44: return QTime(23, 0, 59, 999);
+ case 45: return QTime(23, 59, 0, 0);
+ case 46: return QTime(23, 59, 0, 1);
+ case 47: return QTime(23, 59, 0, 99);
+ case 48: return QTime(23, 59, 0, 100);
+ case 49: return QTime(23, 59, 0, 999);
+ case 50: return QTime(23, 59, 1, 0);
+ case 51: return QTime(23, 59, 1, 1);
+ case 52: return QTime(23, 59, 1, 99);
+ case 53: return QTime(23, 59, 1, 100);
+ case 54: return QTime(23, 59, 1, 999);
+ case 55: return QTime(23, 59, 59, 0);
+ case 56: return QTime(23, 59, 59, 1);
+ case 57: return QTime(23, 59, 59, 99);
+ case 58: return QTime(23, 59, 59, 100);
+ case 59: return QTime(23, 59, 59, 999);
+ }
+ return QTime(0, 0, 0);
+}
+#define MAX_QTIME_DATA 60
+
+void tst_QDataStream::stream_QTime_data()
+{
+ stream_data(MAX_QTIME_DATA);
+}
+
+void tst_QDataStream::stream_QTime()
+{
+ STREAM_IMPL(QTime);
+}
+
+void tst_QDataStream::writeQTime(QDataStream *s)
+{
+ QTime d7 = qTimeData(dataIndex(QTest::currentDataTag()));
+ *s << d7;
+}
+
+void tst_QDataStream::readQTime(QDataStream *s)
+{
+ QTime test = qTimeData(dataIndex(QTest::currentDataTag()));
+ QTime d7;
+ *s >> d7;
+ QVERIFY(d7 == test);
+}
+
+// ************************************
+
+static QDateTime qDateTimeData(int index)
+{
+ switch (index) {
+ case 0: return QDateTime(QDate(1900, 1, 1), QTime(0,0,0,0));
+ case 1: return QDateTime(QDate(1900, 1, 2), QTime(1,1,1,1));
+ case 2: return QDateTime(QDate(1900, 1, 3), QTime(12,0,0,0));
+ case 3: return QDateTime(QDate(1900, 1, 4), QTime(23,59,59,999));
+ case 4: return QDateTime(QDate(1999, 1, 1), QTime(0,0,0,0));
+ case 5: return QDateTime(QDate(1999, 1, 2), QTime(1,1,1,1));
+ case 6: return QDateTime(QDate(1999, 1, 3), QTime(12,0,0,0));
+ case 7: return QDateTime(QDate(1999, 1, 4), QTime(23,59,59,999));
+ case 8: return QDateTime(QDate(2000, 1, 1), QTime(0,0,0,0));
+ case 9: return QDateTime(QDate(2000, 1, 2), QTime(1,1,1,1));
+ case 10: return QDateTime(QDate(2000, 1, 3), QTime(12,0,0,0));
+ case 11: return QDateTime(QDate(2000, 1, 4), QTime(23,59,59,999));
+ case 12: return QDateTime(QDate(2000, 12, 31), QTime(0,0,0,0));
+ case 13: return QDateTime(QDate(2000, 12, 31), QTime(1,1,1,1));
+ case 14: return QDateTime(QDate(2000, 12, 31), QTime(12,0,0,0));
+ case 15: return QDateTime(QDate(2000, 12, 31), QTime(23,59,59,999));
+ }
+ return QDateTime(QDate(1900, 1, 1), QTime(0,0,0));
+}
+#define MAX_QDATETIME_DATA 16
+
+void tst_QDataStream::stream_QDateTime_data()
+{
+ stream_data(MAX_QDATETIME_DATA);
+}
+
+void tst_QDataStream::stream_QDateTime()
+{
+ STREAM_IMPL(QDateTime);
+}
+
+void tst_QDataStream::writeQDateTime(QDataStream *s)
+{
+ QDateTime dt(qDateTimeData(dataIndex(QTest::currentDataTag())));
+ *s << dt;
+}
+
+void tst_QDataStream::readQDateTime(QDataStream *s)
+{
+ QDateTime test(qDateTimeData(dataIndex(QTest::currentDataTag())));
+ QDateTime d8;
+ *s >> d8;
+ QVERIFY(d8 == test);
+}
+
+// ************************************
+
+static QFont qFontData(int index)
+{
+ switch (index) {
+ case 0: return QFont("Courier", 20, QFont::Bold, TRUE);
+ case 1: return QFont("Courier", 18, QFont::Bold, FALSE);
+ case 2: return QFont("Courier", 16, QFont::Light, TRUE);
+ case 3: return QFont("Courier", 14, QFont::Normal, FALSE);
+ case 4: return QFont("Courier", 12, QFont::DemiBold, TRUE);
+ case 5: return QFont("Courier", 10, QFont::Black, FALSE);
+ case 6:
+ {
+ QFont f("Helvetica", 10, QFont::Normal, FALSE);
+ f.setPixelSize(2);
+ f.setUnderline(FALSE);
+ f.setStrikeOut(FALSE);
+ f.setFixedPitch(FALSE);
+ return f;
+ }
+ case 7:
+ {
+ QFont f("Helvetica", 10, QFont::Bold, FALSE);
+ f.setPixelSize(4);
+ f.setUnderline(TRUE);
+ f.setStrikeOut(FALSE);
+ f.setFixedPitch(FALSE);
+ return f;
+ }
+ case 8:
+ {
+ QFont f("Helvetica", 10, QFont::Light, FALSE);
+ f.setPixelSize(6);
+ f.setUnderline(FALSE);
+ f.setStrikeOut(TRUE);
+ f.setFixedPitch(FALSE);
+ return f;
+ }
+ case 9:
+ {
+ QFont f("Helvetica", 10, QFont::DemiBold, FALSE);
+ f.setPixelSize(8);
+ f.setUnderline(FALSE);
+ f.setStrikeOut(FALSE);
+ f.setFixedPitch(TRUE);
+ return f;
+ }
+ case 10:
+ {
+ QFont f("Helvetica", 10, QFont::Black, FALSE);
+ f.setPixelSize(10);
+ f.setUnderline(TRUE);
+ f.setStrikeOut(TRUE);
+ f.setFixedPitch(FALSE);
+ return f;
+ }
+ case 11:
+ {
+ QFont f("Helvetica", 10, QFont::Normal, TRUE);
+ f.setPixelSize(12);
+ f.setUnderline(FALSE);
+ f.setStrikeOut(TRUE);
+ f.setFixedPitch(TRUE);
+ return f;
+ }
+ case 12:
+ {
+ QFont f("Helvetica", 10, QFont::Bold, TRUE);
+ f.setPixelSize(14);
+ f.setUnderline(TRUE);
+ f.setStrikeOut(TRUE);
+ f.setFixedPitch(TRUE);
+ return f;
+ }
+ case 13:
+ {
+ QFont f("Helvetica", 10, QFont::Bold, TRUE);
+ f.setStretch(200);
+ return f;
+ }
+ }
+ return QFont("Courier", 18, QFont::Bold, TRUE);
+}
+#define MAX_QFONT_DATA 14
+
+void tst_QDataStream::stream_QFont_data()
+{
+ stream_data(MAX_QFONT_DATA);
+}
+
+void tst_QDataStream::stream_QFont()
+{
+ STREAM_IMPL(QFont);
+}
+
+void tst_QDataStream::writeQFont(QDataStream *s)
+{
+ QFont d9(qFontData(dataIndex(QTest::currentDataTag())));
+ *s << d9;
+}
+
+void tst_QDataStream::readQFont(QDataStream *s)
+{
+ QFont test(qFontData(dataIndex(QTest::currentDataTag())));
+ QFont d9;
+ *s >> d9;
+
+ // maybe a bit overkill ...
+ QCOMPARE(d9.family(), test.family());
+ QCOMPARE(d9.pointSize(), test.pointSize());
+ QCOMPARE(d9.pixelSize(), test.pixelSize());
+ QCOMPARE(d9.weight(), test.weight());
+ QCOMPARE(d9.bold(), test.bold());
+ QCOMPARE(d9.italic(), test.italic());
+ QCOMPARE(d9.underline(), test.underline());
+ QCOMPARE(d9.overline(), test.overline());
+ QCOMPARE(d9.strikeOut(), test.strikeOut());
+ QCOMPARE(d9.fixedPitch(), test.fixedPitch());
+ QCOMPARE(d9.styleHint(), test.styleHint());
+ QCOMPARE(d9.toString(), test.toString());
+
+ QCOMPARE(d9, test);
+}
+
+// ************************************
+
+void tst_QDataStream::stream_QImage_data()
+{
+ stream_data(1);
+}
+
+void tst_QDataStream::stream_QImage()
+{
+ STREAM_IMPL(QImage);
+}
+
+void tst_QDataStream::writeQImage(QDataStream *s)
+{
+ QImage d12(open_xpm);
+ *s << d12;
+}
+
+void tst_QDataStream::readQImage(QDataStream *s)
+{
+ QImage ref(open_xpm);
+
+ QImage d12;
+ *s >> d12;
+ QVERIFY(d12 == ref);
+
+ // do some extra neurotic tests
+ QVERIFY(d12.size() == ref.size());
+ QVERIFY(d12.isNull() == ref.isNull());
+ QVERIFY(d12.width() == ref.width());
+ QVERIFY(d12.height() == ref.height());
+ QVERIFY(d12.depth() == ref.depth());
+ QVERIFY(d12.colorCount() == ref.colorCount());
+ QVERIFY(d12.hasAlphaChannel() == ref.hasAlphaChannel());
+
+// ################ Bug : ref and orig has ff in alpha; readback has 0
+// ### (Was like this in 1.44 as well)
+//
+// for(int i = 0; i < d12.height(); i++)
+// for(int j = 0; j < d12.width(); j++)
+// if (d12.pixel(j, i) != ref.pixel(j, i))
+// qDebug("Feil %i %i", j, i);
+//
+}
+
+// ************************************
+
+static QPen qPenData(int index)
+{
+ switch (index) {
+ case 0:
+ {
+ QPen p(Qt::blue, 0, Qt::NoPen);
+ p.setCapStyle(Qt::FlatCap);
+ p.setJoinStyle(Qt::MiterJoin);
+ return p;
+ }
+ case 1:
+ {
+ QPen p(Qt::red, 1, Qt::SolidLine);
+ p.setCapStyle(Qt::SquareCap);
+ p.setJoinStyle(Qt::BevelJoin);
+ return p;
+ }
+ case 2:
+ {
+ QPen p(Qt::red, 4, Qt::DashDotDotLine);
+ p.setCapStyle(Qt::RoundCap);
+ p.setJoinStyle(Qt::RoundJoin);
+ return p;
+ }
+ case 3:
+ {
+ QPen p(Qt::blue, 12, Qt::NoPen);
+ p.setCapStyle(Qt::FlatCap);
+ p.setJoinStyle(Qt::RoundJoin);
+ return p;
+ }
+ case 4:
+ {
+ QPen p(Qt::red, 99, Qt::SolidLine);
+ p.setCapStyle(Qt::SquareCap);
+ p.setJoinStyle(Qt::MiterJoin);
+ return p;
+ }
+ case 5:
+ {
+ QPen p(Qt::red, 255, Qt::DashDotLine);
+ p.setCapStyle(Qt::RoundCap);
+ p.setJoinStyle(Qt::BevelJoin);
+ return p;
+ }
+ case 6:
+ {
+ QPen p(Qt::red, 256, Qt::DashDotLine);
+ p.setCapStyle(Qt::RoundCap);
+ p.setJoinStyle(Qt::BevelJoin);
+ return p;
+ }
+ case 7:
+ {
+ QPen p(Qt::red, 0.25, Qt::DashDotLine);
+ p.setCapStyle(Qt::RoundCap);
+ p.setJoinStyle(Qt::BevelJoin);
+ return p;
+ }
+ }
+
+ return QPen();
+}
+#define MAX_QPEN_DATA 8
+
+void tst_QDataStream::stream_QPen_data()
+{
+ stream_data(MAX_QPEN_DATA);
+}
+
+void tst_QDataStream::stream_QPen()
+{
+ /*
+ edba:
+ data6 fails because the width is clipped to a byte (max 255) in the datastream.
+ This limitation is not documented.
+ */
+
+ STREAM_IMPL(QPen);
+}
+
+void tst_QDataStream::writeQPen(QDataStream *s)
+{
+ QPen d15(qPenData(dataIndex(QTest::currentDataTag())));
+ *s << d15;
+}
+
+void tst_QDataStream::readQPen(QDataStream *s)
+{
+ QPen origPen(qPenData(dataIndex(QTest::currentDataTag())));
+ QPen d15;
+ *s >> d15;
+ QCOMPARE(d15.style(), origPen.style());
+ QCOMPARE(d15.width(), origPen.width());
+ QCOMPARE(d15.color(), origPen.color());
+ QVERIFY(d15.capStyle() == origPen.capStyle());
+ QVERIFY(d15.joinStyle() == origPen.joinStyle());
+ QVERIFY(d15 == origPen);
+}
+
+// ************************************
+
+// pixmap testing is currently limited to one pixmap only.
+//
+void tst_QDataStream::stream_QPixmap_data()
+{
+#ifndef Q_OS_WINCE
+ stream_data(1);
+#endif
+}
+
+void tst_QDataStream::stream_QPixmap()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Test depends on more memory than available on Qt/CE", SkipAll);
+#endif
+ STREAM_IMPL(QPixmap);
+}
+
+void tst_QDataStream::stream_QIcon_data()
+{
+#ifndef Q_OS_WINCE
+ stream_data(1);
+#endif
+}
+
+void tst_QDataStream::stream_QIcon()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Test depends on more memory than available on Qt/CE", SkipAll);
+#endif
+ STREAM_IMPL(QIcon);
+}
+
+void tst_QDataStream::writeQPixmap(QDataStream *s)
+{
+ QPixmap d16(open_xpm);
+ *s << d16;
+}
+
+void tst_QDataStream::readQPixmap(QDataStream *s)
+{
+ QPixmap pm(open_xpm);
+ QPixmap d16;
+ *s >> d16;
+ QVERIFY(!d16.isNull() && !pm.isNull());
+ QVERIFY(d16.width() == pm.width());
+ QVERIFY(d16.height() == pm.height());
+ QVERIFY(d16.size() == pm.size());
+ QVERIFY(d16.rect() == pm.rect());
+ QVERIFY(d16.depth() == pm.depth());
+}
+
+void tst_QDataStream::writeQIcon(QDataStream *s)
+{
+ QPixmap pm(open_xpm);
+ QIcon d16(pm);
+ *s << d16;
+}
+
+void tst_QDataStream::readQIcon(QDataStream *s)
+{
+ QPixmap pm(open_xpm);
+ QIcon icon(pm);
+ QIcon d16;
+ *s >> d16;
+ QVERIFY(!d16.isNull() && !icon.isNull());
+ QCOMPARE(d16.pixmap(100), pm);
+}
+
+// ************************************
+
+QPoint qPointData(int index)
+{
+ switch (index) {
+ case 0: return QPoint(0, 0);
+ case 1: return QPoint(-1, 0);
+ case 2: return QPoint(0, -1);
+ case 3: return QPoint(1, 0);
+ case 4: return QPoint(0, 1);
+ case 5: return QPoint(-1, -1);
+ case 6: return QPoint(1, 1);
+ case 7: return QPoint(255, 255);
+ case 8: return QPoint(256, 256);
+ case 9: return QPoint(-254, -254);
+ case 10: return QPoint(-255, -255);
+ }
+
+ return QPoint();
+}
+#define MAX_QPOINT_DATA 11
+
+
+void tst_QDataStream::stream_QPoint_data()
+{
+ stream_data(MAX_QPOINT_DATA);
+}
+
+void tst_QDataStream::stream_QPoint()
+{
+ STREAM_IMPL(QPoint);
+}
+
+void tst_QDataStream::writeQPoint(QDataStream *s)
+{
+ QPoint d17(qPointData(dataIndex(QTest::currentDataTag())));
+ *s << d17;
+
+ QPointF d17f = d17;
+ *s << d17f;
+}
+
+void tst_QDataStream::readQPoint(QDataStream *s)
+{
+ QPoint ref(qPointData(dataIndex(QTest::currentDataTag())));
+ QPoint d17;
+ *s >> d17;
+ QVERIFY(d17 == ref);
+
+ QPointF d17f;
+ *s >> d17f;
+ QVERIFY(d17f == QPointF(ref));
+}
+
+// ************************************
+
+static QRect qRectData(int index)
+{
+ switch (index) {
+ case 0: return QRect(0, 0, 0, 0);
+ case 1: return QRect(1, 1, 1, 1);
+ case 2: return QRect(1, 2, 3, 4);
+ case 3: return QRect(-1, -1, -1, -1);
+ case 4: return QRect(-1, -2, -3, -4);
+ case 5: return QRect(255, -5, 256, -6);
+ case 6: return QRect(-7, 255, -8, 256);
+ case 7: return QRect(9, -255, 10, -255);
+ case 8: return QRect(-255, 11, -255, 12);
+ case 9: return QRect(256, 512, 1024, 2048);
+ case 10: return QRect(-256, -512, -1024, -2048);
+ }
+ return QRect();
+}
+#define MAX_QRECT_DATA 11
+
+void tst_QDataStream::stream_QRect_data()
+{
+ stream_data(MAX_QRECT_DATA);
+}
+
+void tst_QDataStream::stream_QRect()
+{
+ STREAM_IMPL(QRect);
+}
+
+void tst_QDataStream::writeQRect(QDataStream *s)
+{
+ QRect d18(qRectData(dataIndex(QTest::currentDataTag())));
+ *s << d18;
+
+ QRectF d18f(d18);
+ *s << d18f;
+}
+
+void tst_QDataStream::readQRect(QDataStream *s)
+{
+ QRect ref(qRectData(dataIndex(QTest::currentDataTag())));
+ QRect d18;
+ *s >> d18;
+ QVERIFY(d18 == ref);
+
+ QRectF d18f;
+ *s >> d18f;
+ QVERIFY(d18f == QRectF(ref));
+}
+
+// ************************************
+
+static QPolygon qPolygonData(int index)
+{
+ QPoint p0(0, 0);
+ QPoint p1(1, 1);
+ QPoint p2(-1, -1);
+ QPoint p3(1, -1);
+ QPoint p4(-1, 1);
+ QPoint p5(0, 255);
+ QPoint p6(0, 256);
+ QPoint p7(0, 1024);
+ QPoint p8(255, 0);
+ QPoint p9(256, 0);
+ QPoint p10(1024, 0);
+ QPoint p11(345, 678);
+ QPoint p12(23456, 99999);
+ QPoint p13(-99998, -34567);
+ QPoint p14(45678, -99999);
+
+ switch (index) {
+ case 0:
+ return QPolygon(0);
+ case 1:
+ {
+ QPolygon p(1);
+ p.setPoint(0, p0);
+ return p;
+ }
+ case 2:
+ {
+ QPolygon p(1);
+ p.setPoint(0, p5);
+ return p;
+ }
+ case 3:
+ {
+ QPolygon p(1);
+ p.setPoint(0, p12);
+ return p;
+ }
+ case 4:
+ {
+ QPolygon p(3);
+ p.setPoint(0, p1);
+ p.setPoint(1, p10);
+ p.setPoint(2, p13);
+ return p;
+ }
+ case 5:
+ {
+ QPolygon p(6);
+ p.setPoint(0, p2);
+ p.setPoint(1, p11);
+ p.setPoint(2, p14);
+ return p;
+ }
+ case 6:
+ {
+ QPolygon p(15);
+ p.setPoint(0, p0);
+ p.setPoint(1, p1);
+ p.setPoint(2, p2);
+ p.setPoint(3, p3);
+ p.setPoint(4, p4);
+ p.setPoint(5, p5);
+ p.setPoint(6, p6);
+ p.setPoint(7, p7);
+ p.setPoint(8, p8);
+ p.setPoint(9, p9);
+ p.setPoint(10, p10);
+ p.setPoint(11, p11);
+ p.setPoint(12, p12);
+ p.setPoint(13, p13);
+ p.setPoint(14, p14);
+ return p;
+ }
+ }
+ return QRect();
+}
+#define MAX_QPOINTARRAY_DATA 7
+
+void tst_QDataStream::stream_QPolygon_data()
+{
+ stream_data(1);
+}
+
+void tst_QDataStream::stream_QPolygon()
+{
+ STREAM_IMPL(QPolygon);
+}
+
+void tst_QDataStream::writeQPolygon(QDataStream *s)
+{
+ QPolygon d19(qPolygonData(dataIndex(QTest::currentDataTag())));
+ *s << d19;
+
+ QPolygonF d19f(d19);
+ *s << d19f;
+}
+
+void tst_QDataStream::readQPolygon(QDataStream *s)
+{
+ QPolygon ref(qPolygonData(dataIndex(QTest::currentDataTag())));
+ QPolygon d19;
+ *s >> d19;
+ QVERIFY(d19 == ref);
+
+ QPolygonF d19f;
+ *s >> d19f;
+ QVERIFY(d19f == QPolygonF(ref));
+}
+
+// ************************************
+
+static QRegion qRegionData(int index)
+{
+ switch (index) {
+ case 0: return QRegion(0, 0, 0, 0, QRegion::Rectangle);
+ case 1:
+ {
+ QRegion r(1, 2, 300, 400, QRegion::Rectangle);
+ if (r != QRegion(1, 2, 300, 400, QRegion::Rectangle))
+ qDebug("Error creating a region");
+ return r;
+ }
+ case 2: return QRegion(100, 100, 1024, 768, QRegion::Rectangle);
+ case 3: return QRegion(-100, -100, 1024, 1024, QRegion::Rectangle);
+ case 4: return QRegion(100, -100, 2048, 4096, QRegion::Rectangle);
+ case 5: return QRegion(-100, 100, 4096, 2048, QRegion::Rectangle);
+ case 6: return QRegion(0, 0, 0, 0, QRegion::Ellipse);
+#if defined(Q_OS_SYMBIAN) || (!defined(Q_OS_UNIX) && !defined(Q_OS_WINCE)) // all our Unix platforms use X regions.
+ case 7: return QRegion(1, 2, 300, 400, QRegion::Ellipse);
+ case 8: return QRegion(100, 100, 1024, 768, QRegion::Ellipse);
+ case 9: return QRegion(-100, -100, 1024, 1024, QRegion::Ellipse);
+ case 10: return QRegion(100, -100, 2048, 4096, QRegion::Ellipse);
+ case 11: return QRegion(-100, 100, 4096, 2048, QRegion::Ellipse);
+ // simplest X11 case that fails:
+ case 12: return QRegion(0, 0, 3, 3, QRegion::Ellipse);
+#else
+ case 7:
+ qWarning("Skipping streaming of elliptical regions on embedded, Mac OS X, and X11;"
+ " our pointarray stuff is not that great at approximating.");
+#endif
+ }
+ return QRegion();
+}
+#define MAX_QREGION_DATA 12
+
+void tst_QDataStream::stream_QRegion_data()
+{
+ stream_data(MAX_QREGION_DATA);
+}
+
+void tst_QDataStream::stream_QRegion()
+{
+ STREAM_IMPL(QRegion);
+}
+
+void tst_QDataStream::writeQRegion(QDataStream *s)
+{
+ QRegion r(qRegionData(dataIndex(QTest::currentDataTag())));
+ *s << r;
+}
+
+void tst_QDataStream::readQRegion(QDataStream *s)
+{
+ QRegion ref(qRegionData(dataIndex(QTest::currentDataTag())));
+ QRegion r;
+ *s >> r;
+ QVERIFY(r == ref);
+}
+
+// ************************************
+
+static QSize qSizeData(int index)
+{
+ switch (index) {
+ case 0: return QSize(0, 0);
+ case 1: return QSize(-1, 0);
+ case 2: return QSize(0, -1);
+ case 3: return QSize(1, 0);
+ case 4: return QSize(0, 1);
+ case 5: return QSize(-1, -1);
+ case 6: return QSize(1, 1);
+ case 7: return QSize(255, 255);
+ case 8: return QSize(256, 256);
+ case 9: return QSize(-254, -254);
+ case 10: return QSize(-255, -255);
+ }
+ return QSize();
+}
+#define MAX_QSIZE_DATA 11
+
+void tst_QDataStream::stream_QSize_data()
+{
+ stream_data(MAX_QSIZE_DATA);
+}
+
+void tst_QDataStream::stream_QSize()
+{
+ STREAM_IMPL(QSize);
+}
+
+void tst_QDataStream::writeQSize(QDataStream *s)
+{
+ QSize d21(qSizeData(dataIndex(QTest::currentDataTag())));
+ *s << d21;
+
+ QSizeF d21f(d21);
+ *s << d21f;
+}
+
+void tst_QDataStream::readQSize(QDataStream *s)
+{
+ QSize ref(qSizeData(dataIndex(QTest::currentDataTag())));
+ QSize d21;
+ *s >> d21;
+ QVERIFY(d21 == ref);
+
+ QSizeF d21f;
+ *s >> d21f;
+ QVERIFY(d21f == QSizeF(ref));
+}
+
+// *********************** atEnd ******************************
+
+void tst_QDataStream::stream_atEnd_data()
+{
+ stream_data(MAX_QSTRING_DATA);
+}
+
+void tst_QDataStream::stream_atEnd()
+{
+ QFETCH(QString, device);
+ if (device == "bytearray") {
+ QByteArray ba;
+ QDataStream sout(&ba, QIODevice::WriteOnly);
+ writeQString(&sout);
+
+ QDataStream sin(&ba, QIODevice::ReadOnly);
+ readQString(&sin);
+ QVERIFY(sin.atEnd());
+ } else if (device == "file") {
+ QString fileName = "qdatastream.out";
+ QFile fOut(fileName);
+ QVERIFY(fOut.open(QIODevice::WriteOnly));
+ QDataStream sout(&fOut);
+ writeQString(&sout);
+ fOut.close();
+
+ QFile fIn(fileName);
+ QVERIFY(fIn.open(QIODevice::ReadOnly));
+ QDataStream sin(&fIn);
+ readQString(&sin);
+ QVERIFY(sin.atEnd());
+ fIn.close();
+ } else if (device == "buffer") {
+ {
+ QByteArray ba(0);
+ QBuffer bOut(&ba);
+ bOut.open(QIODevice::WriteOnly);
+ QDataStream sout(&bOut);
+ writeQString(&sout);
+ bOut.close();
+
+ QBuffer bIn(&ba);
+ bIn.open(QIODevice::ReadOnly);
+ QDataStream sin(&bIn);
+ readQString(&sin);
+ QVERIFY(sin.atEnd());
+ bIn.close();
+ }
+
+ // Do the same test again, but this time with an initial size for the bytearray.
+ {
+ QByteArray ba(10000, '\0');
+ QBuffer bOut(&ba);
+ bOut.open(QIODevice::WriteOnly | QIODevice::Truncate);
+ QDataStream sout(&bOut);
+ writeQString(&sout);
+ bOut.close();
+
+ QBuffer bIn(&ba);
+ bIn.open(QIODevice::ReadOnly);
+ QDataStream sin(&bIn);
+ readQString(&sin);
+ QVERIFY(sin.atEnd());
+ bIn.close();
+ }
+ }
+}
+
+class FakeBuffer : public QBuffer
+{
+protected:
+ qint64 writeData(const char *c, qint64 i) { return m_lock ? 0 : QBuffer::writeData(c, i); }
+public:
+ FakeBuffer(bool locked = false) : m_lock(locked) {}
+ void setLocked(bool locked) { m_lock = locked; }
+private:
+ bool m_lock;
+};
+
+#define TEST_WRITE_ERROR(op) \
+ { \
+ FakeBuffer fb(false); \
+ QVERIFY(fb.open(QBuffer::ReadWrite)); \
+ QDataStream fs(&fb); \
+ fs.writeRawData("hello", 5); \
+ /* first write some initial content */ \
+ QCOMPARE(fs.status(), QDataStream::Ok); \
+ QCOMPARE(fb.data(), QByteArray("hello")); \
+ /* then test that writing can cause an error */ \
+ fb.setLocked(true); \
+ fs op; \
+ QCOMPARE(fs.status(), QDataStream::WriteFailed); \
+ QCOMPARE(fb.data(), QByteArray("hello")); \
+ /* finally test that writing after an error doesn't change the stream any more */ \
+ fb.setLocked(false); \
+ fs op; \
+ QCOMPARE(fs.status(), QDataStream::WriteFailed); \
+ QCOMPARE(fb.data(), QByteArray("hello")); \
+ }
+
+void tst_QDataStream::stream_writeError()
+{
+ TEST_WRITE_ERROR(<< true)
+ TEST_WRITE_ERROR(<< (qint8)1)
+ TEST_WRITE_ERROR(<< (quint8)1)
+ TEST_WRITE_ERROR(<< (qint16)1)
+ TEST_WRITE_ERROR(<< (quint16)1)
+ TEST_WRITE_ERROR(<< (qint32)1)
+ TEST_WRITE_ERROR(<< (quint32)1)
+ TEST_WRITE_ERROR(<< (qint64)1)
+ TEST_WRITE_ERROR(<< (quint64)1)
+ TEST_WRITE_ERROR(<< "hello")
+ TEST_WRITE_ERROR(<< (float)1.0)
+ TEST_WRITE_ERROR(<< (double)1.0)
+ TEST_WRITE_ERROR(.writeRawData("test", 4))
+}
+
+void tst_QDataStream::stream_QByteArray2()
+{
+ QByteArray ba;
+ {
+ QDataStream s(&ba, QIODevice::WriteOnly);
+ s << QByteArray("hallo");
+ s << QByteArray("");
+ s << QByteArray();
+ }
+
+ {
+ QDataStream s(&ba, QIODevice::ReadOnly);
+ QByteArray res;
+ s >> res;
+ QCOMPARE(res, QByteArray("hallo"));
+ s >> res;
+ QCOMPARE(res, QByteArray(""));
+ QVERIFY(res.isEmpty());
+ QVERIFY(!res.isNull());
+ s >> res;
+ QCOMPARE(res, QByteArray());
+ QVERIFY(res.isEmpty());
+ QVERIFY(res.isNull());
+ }
+}
+
+void tst_QDataStream::setVersion_data()
+{
+ QTest::addColumn<int>("vers");
+ QDataStream latest;
+
+ for (int vers = 1; vers <= latest.version(); ++vers)
+ QTest::newRow(qPrintable(QString("v_%1").arg(vers))) << vers;
+}
+
+void tst_QDataStream::setVersion()
+{
+ QDataStream latest;
+ QFETCH(int, vers);
+
+ /*
+ Test QKeySequence.
+ */
+ QByteArray ba1;
+ {
+ QDataStream out(&ba1, QIODevice::WriteOnly);
+ out.setVersion(vers);
+ out << QKeySequence(Qt::Key_A) << QKeySequence(Qt::Key_B, Qt::Key_C)
+ << (quint32)0xDEADBEEF;
+ }
+ {
+ QKeySequence keyseq1, keyseq2;
+ quint32 deadbeef;
+ QDataStream in(&ba1, QIODevice::ReadOnly);
+ in.setVersion(vers);
+ in >> keyseq1 >> keyseq2 >> deadbeef;
+ QVERIFY(keyseq1 == QKeySequence(Qt::Key_A));
+ if (vers >= 5) {
+ QVERIFY(keyseq2 == QKeySequence(Qt::Key_B, Qt::Key_C));
+ } else {
+ QVERIFY(keyseq2 == QKeySequence(Qt::Key_B));
+ }
+ QVERIFY(deadbeef == 0xDEADBEEF);
+ }
+
+ /*
+ Test QPalette.
+ */
+
+ // revise the test if new color roles or color groups are added
+ QVERIFY(QPalette::NColorRoles == QPalette::ToolTipText + 1);
+ QVERIFY(QPalette::NColorGroups == 3);
+
+ QByteArray ba2;
+ QPalette pal1, pal2;
+ for (int grp = 0; grp < (int)QPalette::NColorGroups; ++grp) {
+ for (int role = 0; role < (int)QPalette::NColorRoles; ++role) {
+ // random stuff
+ pal1.setColor((QPalette::ColorGroup)grp, (QPalette::ColorRole)role,
+ QColor(grp * 13, 255 - grp, role));
+ pal2.setColor((QPalette::ColorGroup)grp, (QPalette::ColorRole)role,
+ QColor(role * 11, 254 - role, grp));
+ }
+ }
+
+ {
+ QDataStream out(&ba2, QIODevice::WriteOnly);
+ out.setVersion(vers);
+ out << pal1 << pal2 << (quint32)0xCAFEBABE;
+ }
+ {
+ QPalette inPal1, inPal2;
+ quint32 cafebabe;
+ QDataStream in(&ba2, QIODevice::ReadOnly);
+ in.setVersion(vers);
+ in >> inPal1 >> inPal2;
+ in >> cafebabe;
+
+ QCOMPARE(cafebabe, 0xCAFEBABE);
+
+ QCOMPARE(NColorRoles[latest.version()], (int)QPalette::NColorRoles); //if this fails you need to update the NColorRoles array
+
+ if (vers == 1) {
+ for (int grp = 0; grp < (int)QPalette::NColorGroups; ++grp) {
+ QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Foreground)
+ == inPal1.color((QPalette::ColorGroup)grp, QPalette::Foreground));
+ QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Background)
+ == inPal1.color((QPalette::ColorGroup)grp, QPalette::Background));
+ QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Light)
+ == inPal1.color((QPalette::ColorGroup)grp, QPalette::Light));
+ QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Dark)
+ == inPal1.color((QPalette::ColorGroup)grp, QPalette::Dark));
+ QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Mid)
+ == inPal1.color((QPalette::ColorGroup)grp, QPalette::Mid));
+ QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Text)
+ == inPal1.color((QPalette::ColorGroup)grp, QPalette::Text));
+ QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Base)
+ == inPal1.color((QPalette::ColorGroup)grp, QPalette::Base));
+
+ QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Midlight)
+ != inPal1.color((QPalette::ColorGroup)grp, QPalette::Midlight));
+ }
+ } else {
+ if (NColorRoles[vers] < QPalette::NColorRoles) {
+ QVERIFY(pal1 != inPal1);
+ QVERIFY(pal2 != inPal2);
+
+ for (int grp = 0; grp < (int)QPalette::NColorGroups; ++grp) {
+ for (int i = NColorRoles[vers]; i < QPalette::NColorRoles; ++i) {
+ inPal1.setColor((QPalette::ColorGroup)grp, (QPalette::ColorRole)i,
+ pal1.color((QPalette::ColorGroup)grp, (QPalette::ColorRole)i));
+ inPal2.setColor((QPalette::ColorGroup)grp, (QPalette::ColorRole)i,
+ pal2.color((QPalette::ColorGroup)grp, (QPalette::ColorRole)i));
+ }
+ }
+ }
+ QVERIFY(pal1 == inPal1);
+ QVERIFY(pal2 == inPal2);
+ }
+ }
+}
+
+class SequentialBuffer : public QBuffer
+{
+public:
+ SequentialBuffer(QByteArray *data) : QBuffer(data) { offset = 0; }
+
+ bool isSequential() const { return true; }
+ bool seek(qint64 pos) { offset = pos; return QBuffer::seek(pos); }
+ qint64 pos() const { return qint64(offset); }
+
+protected:
+ qint64 readData(char *data, qint64 maxSize)
+ {
+ qint64 ret = QBuffer::readData(data, maxSize);
+ offset += ret;
+ return ret;
+ }
+
+private:
+ int offset;
+};
+
+void tst_QDataStream::skipRawData_data()
+{
+ QTest::addColumn<QString>("deviceType");
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<int>("read");
+ QTest::addColumn<int>("skip");
+ QTest::addColumn<int>("skipped");
+ QTest::addColumn<char>("expect");
+
+ QByteArray bigData;
+ bigData.fill('a', 20000);
+ bigData[10001] = 'x';
+
+ QTest::newRow("1") << QString("sequential") << QByteArray("abcdefghij") << 3 << 6 << 6 << 'j';
+ QTest::newRow("2") << QString("random-access") << QByteArray("abcdefghij") << 3 << 6 << 6 << 'j';
+ QTest::newRow("3") << QString("sequential") << bigData << 1 << 10000 << 10000 << 'x';
+ QTest::newRow("4") << QString("random-access") << bigData << 1 << 10000 << 10000 << 'x';
+ QTest::newRow("5") << QString("sequential") << bigData << 1 << 20000 << 19999 << '\0';
+ QTest::newRow("6") << QString("random-access") << bigData << 1 << 20000 << 19999 << '\0';
+}
+
+void tst_QDataStream::skipRawData()
+{
+ QFETCH(QString, deviceType);
+ QFETCH(QByteArray, data);
+ QFETCH(int, read);
+ QFETCH(int, skip);
+ QFETCH(int, skipped);
+ QFETCH(char, expect);
+ qint8 dummy;
+
+ QIODevice *dev = 0;
+ if (deviceType == "sequential") {
+ dev = new SequentialBuffer(&data);
+ } else if (deviceType == "random-access") {
+ dev = new QBuffer(&data);
+ }
+ QVERIFY(dev);
+ dev->open(QIODevice::ReadOnly);
+
+ QDataStream in(dev);
+ for (int i = 0; i < read; ++i)
+ in >> dummy;
+
+ QCOMPARE(in.skipRawData(skip), skipped);
+ in >> dummy;
+ QCOMPARE((char)dummy, expect);
+
+ delete dev;
+}
+
+#define TEST_qint(T, UT) \
+ void tst_QDataStream::status_##T() \
+ { \
+ QFETCH(QByteArray, bigEndianData); \
+ QFETCH(QByteArray, littleEndianData); \
+ QFETCH(int, expectedStatus); \
+ QFETCH(qint64, expectedValue); \
+ \
+ { \
+ QDataStream stream(&bigEndianData, QIODevice::ReadOnly); \
+ T i; \
+ stream >> i; \
+ QCOMPARE((int) stream.status(), expectedStatus); \
+ QCOMPARE(i, (T) expectedValue); \
+ } \
+ { \
+ QDataStream stream(&bigEndianData, QIODevice::ReadOnly); \
+ UT i; \
+ stream >> i; \
+ QCOMPARE((int) stream.status(), expectedStatus); \
+ QCOMPARE((T) i, (T) expectedValue); \
+ } \
+ { \
+ QDataStream stream(&littleEndianData, QIODevice::ReadOnly); \
+ stream.setByteOrder(QDataStream::LittleEndian); \
+ T i; \
+ stream >> i; \
+ QCOMPARE((int) stream.status(), expectedStatus); \
+ QCOMPARE(i, (T) expectedValue); \
+ } \
+ { \
+ QDataStream stream(&littleEndianData, QIODevice::ReadOnly); \
+ stream.setByteOrder(QDataStream::LittleEndian); \
+ UT i; \
+ stream >> i; \
+ QCOMPARE((int) stream.status(), expectedStatus); \
+ QCOMPARE((T) i, (T) expectedValue); \
+ } \
+ }
+
+#define TEST_FLOAT(T) \
+ void tst_QDataStream::status_##T() \
+ { \
+ QFETCH(QByteArray, bigEndianData); \
+ QFETCH(QByteArray, littleEndianData); \
+ QFETCH(int, expectedStatus); \
+ QFETCH(double, expectedValue); \
+ \
+ QDataStream::FloatingPointPrecision prec = sizeof(T) == sizeof(double) ? QDataStream::DoublePrecision : QDataStream::SinglePrecision; \
+ \
+ { \
+ QDataStream stream(&bigEndianData, QIODevice::ReadOnly); \
+ stream.setFloatingPointPrecision(prec); \
+ T i; \
+ stream >> i; \
+ QCOMPARE((int) stream.status(), expectedStatus); \
+ QCOMPARE((float) i, (float) expectedValue); \
+ } \
+ { \
+ QDataStream stream(&littleEndianData, QIODevice::ReadOnly); \
+ stream.setByteOrder(QDataStream::LittleEndian); \
+ stream.setFloatingPointPrecision(prec); \
+ T i; \
+ stream >> i; \
+ QCOMPARE((int) stream.status(), expectedStatus); \
+ QCOMPARE((float) i, (float) expectedValue); \
+ } \
+ }
+
+void tst_QDataStream::status_qint8_data()
+{
+ QTest::addColumn<QByteArray>("bigEndianData");
+ QTest::addColumn<QByteArray>("littleEndianData");
+ QTest::addColumn<int>("expectedStatus");
+ QTest::addColumn<qint64>("expectedValue");
+
+ // ok
+ QTest::newRow("0") << QByteArray(1, '\x0') << QByteArray(1, '\x0') << (int) QDataStream::Ok << qint64(0);
+ QTest::newRow("-1") << QByteArray(1, '\xff') << QByteArray(1, '\xff') << (int) QDataStream::Ok << qint64(-1);
+ QTest::newRow("1") << QByteArray(1, '\x01') << QByteArray(1, '\x01') << (int) QDataStream::Ok << qint64(1);
+ QTest::newRow("37") << QByteArray(1, '\x25') << QByteArray(1, '\x25') << (int) QDataStream::Ok << qint64(37);
+ QTest::newRow("37j") << QByteArray("\x25j") << QByteArray("\x25j") << (int) QDataStream::Ok << qint64(37);
+
+ // past end
+ QTest::newRow("empty") << QByteArray() << QByteArray() << (int) QDataStream::ReadPastEnd << qint64(0);
+}
+
+TEST_qint(qint8, quint8)
+
+void tst_QDataStream::status_qint16_data()
+{
+ QTest::addColumn<QByteArray>("bigEndianData");
+ QTest::addColumn<QByteArray>("littleEndianData");
+ QTest::addColumn<int>("expectedStatus");
+ QTest::addColumn<qint64>("expectedValue");
+
+ // ok
+ QTest::newRow("0") << QByteArray(2, '\x0') << QByteArray(2, '\x0') << (int) QDataStream::Ok << qint64(0);
+ QTest::newRow("-1") << QByteArray("\xff\xff", 2) << QByteArray("\xff\xff", 2) << (int) QDataStream::Ok << qint64(-1);
+ QTest::newRow("1") << QByteArray("\x00\x01", 2) << QByteArray("\x01\x00", 2) << (int) QDataStream::Ok << qint64(1);
+ QTest::newRow("37") << QByteArray("\x00\x25", 2) << QByteArray("\x25\x00", 2) << (int) QDataStream::Ok << qint64(37);
+ QTest::newRow("37j") << QByteArray("\x00\x25j", 3) << QByteArray("\x25\x00j", 3) << (int) QDataStream::Ok << qint64(37);
+ QTest::newRow("0x1234") << QByteArray("\x12\x34", 2) << QByteArray("\x34\x12", 2) << (int) QDataStream::Ok << qint64(0x1234);
+
+ // past end
+ QTest::newRow("empty") << QByteArray() << QByteArray() << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 1") << QByteArray("", 1) << QByteArray("", 1) << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 2") << QByteArray("\x25", 1) << QByteArray("\x25", 1) << (int) QDataStream::ReadPastEnd << qint64(0);
+}
+
+TEST_qint(qint16, quint16)
+
+void tst_QDataStream::status_qint32_data()
+{
+ QTest::addColumn<QByteArray>("bigEndianData");
+ QTest::addColumn<QByteArray>("littleEndianData");
+ QTest::addColumn<int>("expectedStatus");
+ QTest::addColumn<qint64>("expectedValue");
+
+ // ok
+ QTest::newRow("0") << QByteArray(4, '\x0') << QByteArray(4, '\x0') << (int) QDataStream::Ok << qint64(0);
+ QTest::newRow("-1") << QByteArray("\xff\xff\xff\xff", 4) << QByteArray("\xff\xff\xff\xff", 4) << (int) QDataStream::Ok << qint64(-1);
+ QTest::newRow("1") << QByteArray("\x00\x00\x00\x01", 4) << QByteArray("\x01\x00\x00\x00", 4) << (int) QDataStream::Ok << qint64(1);
+ QTest::newRow("37") << QByteArray("\x00\x00\x00\x25", 4) << QByteArray("\x25\x00\x00\x00", 4) << (int) QDataStream::Ok << qint64(37);
+ QTest::newRow("37j") << QByteArray("\x00\x00\x00\x25j", 5) << QByteArray("\x25\x00\x00\x00j", 5) << (int) QDataStream::Ok << qint64(37);
+ QTest::newRow("0x12345678") << QByteArray("\x12\x34\x56\x78", 4) << QByteArray("\x78\x56\x34\x12", 4) << (int) QDataStream::Ok << qint64(0x12345678);
+
+ // past end
+ QTest::newRow("empty") << QByteArray() << QByteArray() << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 1") << QByteArray("", 1) << QByteArray("", 1) << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 2") << QByteArray("\x25", 1) << QByteArray("\x25", 1) << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 3") << QByteArray("11", 2) << QByteArray("11", 2) << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 4") << QByteArray("111", 3) << QByteArray("111", 3) << (int) QDataStream::ReadPastEnd << qint64(0);
+}
+
+TEST_qint(qint32, quint32)
+
+void tst_QDataStream::status_qint64_data()
+{
+ QTest::addColumn<QByteArray>("bigEndianData");
+ QTest::addColumn<QByteArray>("littleEndianData");
+ QTest::addColumn<int>("expectedStatus");
+ QTest::addColumn<qint64>("expectedValue");
+
+ // ok
+ QTest::newRow("0") << QByteArray(8, '\x0') << QByteArray(8, '\x0') << (int) QDataStream::Ok << qint64(0);
+ QTest::newRow("-1") << QByteArray("\xff\xff\xff\xff\xff\xff\xff\xff", 8) << QByteArray("\xff\xff\xff\xff\xff\xff\xff\xff", 8) << (int) QDataStream::Ok << qint64(-1);
+ QTest::newRow("1") << QByteArray("\x00\x00\x00\x00\x00\x00\x00\x01", 8) << QByteArray("\x01\x00\x00\x00\x00\x00\x00\x00", 8) << (int) QDataStream::Ok << qint64(1);
+ QTest::newRow("37") << QByteArray("\x00\x00\x00\x00\x00\x00\x00\x25", 8) << QByteArray("\x25\x00\x00\x00\x00\x00\x00\x00", 8) << (int) QDataStream::Ok << qint64(37);
+ QTest::newRow("37j") << QByteArray("\x00\x00\x00\x00\x00\x00\x00\x25j", 9) << QByteArray("\x25\x00\x00\x00\x00\x00\x00\x00j", 9) << (int) QDataStream::Ok << qint64(37);
+ QTest::newRow("0x123456789ABCDEF0") << QByteArray("\x12\x34\x56\x78\x9a\xbc\xde\xf0", 8) << QByteArray("\xf0\xde\xbc\x9a\x78\x56\x34\x12", 8) << (int) QDataStream::Ok << (qint64)Q_INT64_C(0x123456789ABCDEF0);
+
+ // past end
+ QTest::newRow("empty") << QByteArray() << QByteArray() << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 1") << QByteArray("", 1) << QByteArray("", 1) << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 2") << QByteArray("\x25", 1) << QByteArray("\x25", 1) << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 3") << QByteArray("11", 2) << QByteArray("11", 2) << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 4") << QByteArray("111", 3) << QByteArray("111", 3) << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 5") << QByteArray("1111", 4) << QByteArray("1111", 4) << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 6") << QByteArray("11111", 5) << QByteArray("11111", 5) << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 7") << QByteArray("111111", 6) << QByteArray("111111", 6) << (int) QDataStream::ReadPastEnd << qint64(0);
+ QTest::newRow("end 8") << QByteArray("1111111", 7) << QByteArray("1111111", 7) << (int) QDataStream::ReadPastEnd << qint64(0);
+}
+
+TEST_qint(qint64, quint64)
+
+void tst_QDataStream::status_float_data()
+{
+ QTest::addColumn<QByteArray>("bigEndianData");
+ QTest::addColumn<QByteArray>("littleEndianData");
+ QTest::addColumn<int>("expectedStatus");
+ QTest::addColumn<double>("expectedValue");
+
+ // ok
+ QTest::newRow("0") << QByteArray(4, '\0') << QByteArray(4, '\0') << (int) QDataStream::Ok << (double) 0.0;
+ QTest::newRow("-1") << QByteArray("\xbf\x80\x00\x00", 4) << QByteArray("\x00\x00\x80\xbf", 4) << (int) QDataStream::Ok << (double) -1;
+ QTest::newRow("1") << QByteArray("\x3f\x80\x00\x00", 4) << QByteArray("\x00\x00\x80\x3f", 4) << (int) QDataStream::Ok << (double) 1;
+ QTest::newRow("37") << QByteArray("\x42\x14\x00\x00", 4) << QByteArray("\x00\x00\x14\x42", 4) << (int) QDataStream::Ok << (double) 37;
+ QTest::newRow("37j") << QByteArray("\x42\x14\x00\x00j", 5) << QByteArray("\x00\x00\x14\x42j", 5) << (int) QDataStream::Ok << (double) 37;
+ QTest::newRow("3.14") << QByteArray("\x40\x48\xf5\xc3", 4) << QByteArray("\xc3\xf5\x48\x40", 4) << (int) QDataStream::Ok << (double) 3.14;
+
+ // past end
+ QTest::newRow("empty") << QByteArray() << QByteArray() << (int) QDataStream::ReadPastEnd << double(0);
+ QTest::newRow("end 1") << QByteArray("", 1) << QByteArray("", 1) << (int) QDataStream::ReadPastEnd << double(0);
+ QTest::newRow("end 2") << QByteArray("\x25", 1) << QByteArray("\x25", 1) << (int) QDataStream::ReadPastEnd << double(0);
+ QTest::newRow("end 3") << QByteArray("11", 2) << QByteArray("11", 2) << (int) QDataStream::ReadPastEnd << double(0);
+ QTest::newRow("end 4") << QByteArray("111", 3) << QByteArray("111", 3) << (int) QDataStream::ReadPastEnd << double(0);
+}
+
+TEST_FLOAT(float)
+
+void tst_QDataStream::status_double_data()
+{
+ QTest::addColumn<QByteArray>("bigEndianData");
+ QTest::addColumn<QByteArray>("littleEndianData");
+ QTest::addColumn<int>("expectedStatus");
+ QTest::addColumn<double>("expectedValue");
+
+ // ok
+ QTest::newRow("0") << QByteArray("\x00\x00\x00\x00\x00\x00\x00\x00", 8) << QByteArray("\x00\x00\x00\x00\x00\x00\x00\x00", 8) << (int) QDataStream::Ok << (double) 0;
+ QTest::newRow("-1") << QByteArray("\xbf\xf0\x00\x00\x00\x00\x00\x00", 8) << QByteArray("\x00\x00\x00\x00\x00\x00\xf0\xbf", 8) << (int) QDataStream::Ok << (double) -1;
+ QTest::newRow("1") << QByteArray("\x3f\xf0\x00\x00\x00\x00\x00\x00", 8) << QByteArray("\x00\x00\x00\x00\x00\x00\xf0\x3f", 8) << (int) QDataStream::Ok << (double) 1;
+ QTest::newRow("37") << QByteArray("\x40\x42\x80\x00\x00\x00\x00\x00", 8) << QByteArray("\x00\x00\x00\x00\x00\x80\x42\x40", 8) << (int) QDataStream::Ok << (double) 37;
+ QTest::newRow("37j") << QByteArray("\x40\x42\x80\x00\x00\x00\x00\x00j", 9) << QByteArray("\x00\x00\x00\x00\x00\x80\x42\x40j", 9) << (int) QDataStream::Ok << (double) 37;
+ QTest::newRow("3.14") << QByteArray("\x40\x09\x1e\xb8\x60\x00\x00\x00", 8) << QByteArray("\x00\x00\x00\x60\xb8\x1e\x09\x40", 8) << (int) QDataStream::Ok << (double) 3.14;
+ QTest::newRow("1234.5678") << QByteArray("\x40\x93\x4a\x45\x6d\x5c\xfa\xad", 8) << QByteArray("\xad\xfa\x5c\x6d\x45\x4a\x93\x40", 8) << (int) QDataStream::Ok << (double) 1234.5678;
+
+ // past end
+ QTest::newRow("empty") << QByteArray() << QByteArray() << (int) QDataStream::ReadPastEnd << double(0);
+ QTest::newRow("end 1") << QByteArray("", 1) << QByteArray("", 1) << (int) QDataStream::ReadPastEnd << double(0);
+ QTest::newRow("end 2") << QByteArray("\x25", 1) << QByteArray("\x25", 1) << (int) QDataStream::ReadPastEnd << double(0);
+ QTest::newRow("end 3") << QByteArray("11", 2) << QByteArray("11", 2) << (int) QDataStream::ReadPastEnd << double(0);
+ QTest::newRow("end 4") << QByteArray("111", 3) << QByteArray("111", 3) << (int) QDataStream::ReadPastEnd << double(0);
+ QTest::newRow("end 5") << QByteArray("1111", 4) << QByteArray("1111", 4) << (int) QDataStream::ReadPastEnd << double(0);
+ QTest::newRow("end 6") << QByteArray("11111", 5) << QByteArray("11111", 5) << (int) QDataStream::ReadPastEnd << double(0);
+ QTest::newRow("end 7") << QByteArray("111111", 6) << QByteArray("111111", 6) << (int) QDataStream::ReadPastEnd << double(0);
+ QTest::newRow("end 8") << QByteArray("1111111", 7) << QByteArray("1111111", 7) << (int) QDataStream::ReadPastEnd << double(0);
+}
+
+TEST_FLOAT(double)
+
+void tst_QDataStream::status_charptr_QByteArray_data()
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<int>("expectedStatus");
+ QTest::addColumn<QByteArray>("expectedString");
+
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QByteArray oneMbMinus1(1024 * 1024 - 1, '\0');
+ for (int i = 0; i < oneMbMinus1.size(); ++i)
+ oneMbMinus1[i] = 0x1 | (8 * ((uchar)i / 9));
+ QByteArray threeMbMinus1 = oneMbMinus1 + 'j' + oneMbMinus1 + 'k' + oneMbMinus1;
+#endif
+
+ // ok
+ QTest::newRow("size 0") << QByteArray("\x00\x00\x00\x00", 4) << (int) QDataStream::Ok << QByteArray();
+ QTest::newRow("size 1") << QByteArray("\x00\x00\x00\x01j", 5) << (int) QDataStream::Ok << QByteArray("j");
+ QTest::newRow("size 2") << QByteArray("\x00\x00\x00\x02jk", 6) << (int) QDataStream::Ok << QByteArray("jk");
+ QTest::newRow("size 3") << QByteArray("\x00\x00\x00\x03jkl", 7) << (int) QDataStream::Ok << QByteArray("jkl");
+ QTest::newRow("size 4") << QByteArray("\x00\x00\x00\x04jklm", 8) << (int) QDataStream::Ok << QByteArray("jklm");
+ QTest::newRow("size 4j") << QByteArray("\x00\x00\x00\x04jklmj", 8) << (int) QDataStream::Ok << QByteArray("jklm");
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QTest::newRow("size 1MB-1") << QByteArray("\x00\x0f\xff\xff", 4) + oneMbMinus1 + QByteArray("j") << (int) QDataStream::Ok << oneMbMinus1;
+ QTest::newRow("size 1MB") << QByteArray("\x00\x10\x00\x00", 4) + oneMbMinus1 + QByteArray("jkl") << (int) QDataStream::Ok << oneMbMinus1 + "j";
+ QTest::newRow("size 1MB+1") << QByteArray("\x00\x10\x00\x01", 4) + oneMbMinus1 + QByteArray("jkl") << (int) QDataStream::Ok << oneMbMinus1 + "jk";
+ QTest::newRow("size 3MB-1") << QByteArray("\x00\x2f\xff\xff", 4) + threeMbMinus1 + QByteArray("j") << (int) QDataStream::Ok << threeMbMinus1;
+ QTest::newRow("size 3MB") << QByteArray("\x00\x30\x00\x00", 4) + threeMbMinus1 + QByteArray("jkl") << (int) QDataStream::Ok << threeMbMinus1 + "j";
+ QTest::newRow("size 3MB+1") << QByteArray("\x00\x30\x00\x01", 4) + threeMbMinus1 + QByteArray("jkl") << (int) QDataStream::Ok << threeMbMinus1 + "jk";
+#endif
+
+ // past end
+ QTest::newRow("empty") << QByteArray() << (int) QDataStream::ReadPastEnd << QByteArray();
+ QTest::newRow("trunclen 1") << QByteArray("x") << (int) QDataStream::ReadPastEnd << QByteArray();
+ QTest::newRow("trunclen 2") << QByteArray("xx") << (int) QDataStream::ReadPastEnd << QByteArray();
+ QTest::newRow("trunclen 3") << QByteArray("xxx") << (int) QDataStream::ReadPastEnd << QByteArray();
+ QTest::newRow("truncdata 1") << QByteArray("xxxx") << (int) QDataStream::ReadPastEnd << QByteArray();
+ QTest::newRow("truncdata 2") << QByteArray("xxxxyyyy") << (int) QDataStream::ReadPastEnd << QByteArray();
+ QTest::newRow("badsize 1") << QByteArray("\x00\x00\x00\x01", 4) << (int) QDataStream::ReadPastEnd << QByteArray();
+ QTest::newRow("badsize 2") << QByteArray("\x00\x00\x00\x02j", 5) << (int) QDataStream::ReadPastEnd << QByteArray();
+ QTest::newRow("badsize 3") << QByteArray("\x00\x00\x00\x03jk", 6) << (int) QDataStream::ReadPastEnd << QByteArray();
+ QTest::newRow("badsize 4") << QByteArray("\x00\x00\x00\x04jkl", 7) << (int) QDataStream::ReadPastEnd << QByteArray();
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QTest::newRow("badsize 1MB") << QByteArray("\x00\x10\x00\x00", 4) + oneMbMinus1 << (int) QDataStream::ReadPastEnd << QByteArray();
+ QTest::newRow("badsize 1MB+1") << QByteArray("\x00\x10\x00\x01", 4) + oneMbMinus1 + QByteArray("j") << (int) QDataStream::ReadPastEnd << QByteArray();
+ QTest::newRow("badsize 3MB") << QByteArray("\x00\x30\x00\x00", 4) + threeMbMinus1 << (int) QDataStream::ReadPastEnd << QByteArray();
+ QTest::newRow("badsize 3MB+1") << QByteArray("\x00\x30\x00\x01", 4) + threeMbMinus1 + QByteArray("j") << (int) QDataStream::ReadPastEnd << QByteArray();
+#endif
+ QTest::newRow("size -1") << QByteArray("\xff\xff\xff\xff", 4) << (int) QDataStream::ReadPastEnd << QByteArray();
+ QTest::newRow("size -2") << QByteArray("\xff\xff\xff\xfe", 4) << (int) QDataStream::ReadPastEnd << QByteArray();
+}
+
+void tst_QDataStream::status_charptr_QByteArray()
+{
+ QFETCH(QByteArray, data);
+ QFETCH(int, expectedStatus);
+ QFETCH(QByteArray, expectedString);
+
+ {
+ QDataStream stream(&data, QIODevice::ReadOnly);
+ char *buf;
+ stream >> buf;
+
+ QCOMPARE((int)qstrlen(buf), expectedString.size());
+ QCOMPARE(QByteArray(buf), expectedString);
+ QCOMPARE(int(stream.status()), expectedStatus);
+ delete [] buf;
+ }
+ {
+ QDataStream stream(&data, QIODevice::ReadOnly);
+ char *buf;
+ uint len;
+ stream.readBytes(buf, len);
+
+ QCOMPARE((int)len, expectedString.size());
+ QCOMPARE(QByteArray(buf, len), expectedString);
+ QCOMPARE(int(stream.status()), expectedStatus);
+ delete [] buf;
+ }
+ {
+ QDataStream stream(&data, QIODevice::ReadOnly);
+ QByteArray buf;
+ stream >> buf;
+
+ if (data.startsWith("\xff\xff\xff\xff")) {
+ // QByteArray, unlike 'char *', supports the null/empty distinction
+ QVERIFY(buf.isNull());
+ } else {
+ QCOMPARE(buf.size(), expectedString.size());
+ QCOMPARE(buf, expectedString);
+ QCOMPARE(int(stream.status()), expectedStatus);
+ }
+ }
+}
+
+static QByteArray qstring2qbytearray(const QString &str)
+{
+ QByteArray ba(str.size() * 2 , '\0');
+ for (int i = 0; i < str.size(); ++i) {
+ // BigEndian
+ ba[2 * i] = str[i].row();
+ ba[2 * i + 1] = str[i].cell();
+ }
+ return ba;
+}
+
+void tst_QDataStream::status_QString_data()
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<int>("expectedStatus");
+ QTest::addColumn<QString>("expectedString");
+
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QString oneMbMinus1;
+ oneMbMinus1.resize(1024 * 1024 - 1);
+ for (int i = 0; i < oneMbMinus1.size(); ++i)
+ oneMbMinus1[i] = 0x1 | (8 * ((uchar)i / 9));
+ QString threeMbMinus1 = oneMbMinus1 + QChar('j') + oneMbMinus1 + QChar('k') + oneMbMinus1;
+
+ QByteArray threeMbMinus1Data = qstring2qbytearray(threeMbMinus1);
+ QByteArray oneMbMinus1Data = qstring2qbytearray(oneMbMinus1);
+#endif
+
+ // ok
+ QTest::newRow("size 0") << QByteArray("\x00\x00\x00\x00", 4) << (int) QDataStream::Ok << QString();
+ QTest::newRow("size 1") << QByteArray("\x00\x00\x00\x02\x00j", 6) << (int) QDataStream::Ok << QString("j");
+ QTest::newRow("size 2") << QByteArray("\x00\x00\x00\x04\x00j\x00k", 8) << (int) QDataStream::Ok << QString("jk");
+ QTest::newRow("size 3") << QByteArray("\x00\x00\x00\x06\x00j\x00k\x00l", 10) << (int) QDataStream::Ok << QString("jkl");
+ QTest::newRow("size 4") << QByteArray("\x00\x00\x00\x08\x00j\x00k\x00l\x00m", 12) << (int) QDataStream::Ok << QString("jklm");
+ QTest::newRow("size 4j") << QByteArray("\x00\x00\x00\x08\x00j\x00k\x00l\x00mjj", 14) << (int) QDataStream::Ok << QString("jklm");
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QTest::newRow("size 1MB-1") << QByteArray("\x00\x1f\xff\xfe", 4) + oneMbMinus1Data + QByteArray("jj") << (int) QDataStream::Ok << oneMbMinus1;
+ QTest::newRow("size 1MB") << QByteArray("\x00\x20\x00\x00", 4) + oneMbMinus1Data + QByteArray("\x00j\x00k\x00l", 6) << (int) QDataStream::Ok << oneMbMinus1 + "j";
+ QTest::newRow("size 1MB+1") << QByteArray("\x00\x20\x00\x02", 4) + oneMbMinus1Data + QByteArray("\x00j\x00k\x00l", 6) << (int) QDataStream::Ok << oneMbMinus1 + "jk";
+ QTest::newRow("size 3MB-1") << QByteArray("\x00\x5f\xff\xfe", 4) + threeMbMinus1Data + QByteArray("jj") << (int) QDataStream::Ok << threeMbMinus1;
+ QTest::newRow("size 3MB") << QByteArray("\x00\x60\x00\x00", 4) + threeMbMinus1Data + QByteArray("\x00j\x00k\x00l", 6) << (int) QDataStream::Ok << threeMbMinus1 + "j";
+ QTest::newRow("size 3MB+1") << QByteArray("\x00\x60\x00\x02", 4) + threeMbMinus1Data + QByteArray("\x00j\x00k\x00l", 6) << (int) QDataStream::Ok << threeMbMinus1 + "jk";
+#endif
+
+ // past end
+ QTest::newRow("empty") << QByteArray() << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("trunclen 1") << QByteArray("x") << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("trunclen 2") << QByteArray("xx") << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("trunclen 3") << QByteArray("xxx") << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("truncdata 1") << QByteArray("xxxx") << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("truncdata 2") << QByteArray("xxxxyyyy") << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("badsize 1") << QByteArray("\x00\x00\x00\x02", 4) << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("badsize 2") << QByteArray("\x00\x00\x00\x04jj", 6) << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("badsize 3") << QByteArray("\x00\x00\x00\x06jjkk", 8) << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("badsize 4") << QByteArray("\x00\x00\x00\x08jjkkll", 10) << (int) QDataStream::ReadPastEnd << QString();
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QTest::newRow("badsize 1MB") << QByteArray("\x00\x20\x00\x00", 4) + oneMbMinus1Data << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("badsize 1MB+1") << QByteArray("\x00\x20\x00\x02", 4) + oneMbMinus1Data + QByteArray("j") << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("badsize 3MB") << QByteArray("\x00\x60\x00\x00", 4) + threeMbMinus1Data << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("badsize 3MB+1") << QByteArray("\x00\x60\x00\x02", 4) + threeMbMinus1Data + QByteArray("j") << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("size -2") << QByteArray("\xff\xff\xff\xfe", 4) << (int) QDataStream::ReadPastEnd << QString();
+ QTest::newRow("size MAX") << QByteArray("\x7f\xff\xff\xfe", 4) << (int) QDataStream::ReadPastEnd << QString();
+#endif
+
+ // corrupt data
+ QTest::newRow("corrupt1") << QByteArray("yyyy") << (int) QDataStream::ReadCorruptData << QString();
+ QTest::newRow("size -3") << QByteArray("\xff\xff\xff\xfd", 4) << (int) QDataStream::ReadCorruptData << QString();
+}
+
+void tst_QDataStream::status_QString()
+{
+ QFETCH(QByteArray, data);
+ QFETCH(int, expectedStatus);
+ QFETCH(QString, expectedString);
+
+ QDataStream stream(&data, QIODevice::ReadOnly);
+ QString str;
+ stream >> str;
+
+ QCOMPARE(str.size(), expectedString.size());
+ QCOMPARE(str, expectedString);
+ QCOMPARE(int(stream.status()), expectedStatus);
+}
+
+static QBitArray bitarray(const QString &str)
+{
+ QBitArray array(str.size());
+ for (int i = 0; i < str.size(); ++i)
+ array[i] = (str[i] != '0');
+ return array;
+}
+
+void tst_QDataStream::status_QBitArray_data()
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<int>("expectedStatus");
+ QTest::addColumn<QBitArray>("expectedString");
+
+ // ok
+ QTest::newRow("size 0") << QByteArray("\x00\x00\x00\x00", 4) << (int) QDataStream::Ok << QBitArray();
+ QTest::newRow("size 1a") << QByteArray("\x00\x00\x00\x01\x00", 5) << (int) QDataStream::Ok << bitarray("0");
+ QTest::newRow("size 1b") << QByteArray("\x00\x00\x00\x01\x01", 5) << (int) QDataStream::Ok << bitarray("1");
+ QTest::newRow("size 2") << QByteArray("\x00\x00\x00\x02\x03", 5) << (int) QDataStream::Ok << bitarray("11");
+ QTest::newRow("size 3") << QByteArray("\x00\x00\x00\x03\x07", 5) << (int) QDataStream::Ok << bitarray("111");
+ QTest::newRow("size 4") << QByteArray("\x00\x00\x00\x04\x0f", 5) << (int) QDataStream::Ok << bitarray("1111");
+ QTest::newRow("size 5") << QByteArray("\x00\x00\x00\x05\x1f", 5) << (int) QDataStream::Ok << bitarray("11111");
+ QTest::newRow("size 6") << QByteArray("\x00\x00\x00\x06\x3f", 5) << (int) QDataStream::Ok << bitarray("111111");
+ QTest::newRow("size 7a") << QByteArray("\x00\x00\x00\x07\x7f", 5) << (int) QDataStream::Ok << bitarray("1111111");
+ QTest::newRow("size 7b") << QByteArray("\x00\x00\x00\x07\x7e", 5) << (int) QDataStream::Ok << bitarray("0111111");
+ QTest::newRow("size 7c") << QByteArray("\x00\x00\x00\x07\x00", 5) << (int) QDataStream::Ok << bitarray("0000000");
+ QTest::newRow("size 7d") << QByteArray("\x00\x00\x00\x07\x39", 5) << (int) QDataStream::Ok << bitarray("1001110");
+ QTest::newRow("size 8") << QByteArray("\x00\x00\x00\x08\xff", 5) << (int) QDataStream::Ok << bitarray("11111111");
+ QTest::newRow("size 9") << QByteArray("\x00\x00\x00\x09\xff\x01", 6) << (int) QDataStream::Ok << bitarray("111111111");
+ QTest::newRow("size 15") << QByteArray("\x00\x00\x00\x0f\xff\x7f", 6) << (int) QDataStream::Ok << bitarray("111111111111111");
+ QTest::newRow("size 16") << QByteArray("\x00\x00\x00\x10\xff\xff", 6) << (int) QDataStream::Ok << bitarray("1111111111111111");
+ QTest::newRow("size 17") << QByteArray("\x00\x00\x00\x11\xff\xff\x01", 7) << (int) QDataStream::Ok << bitarray("11111111111111111");
+ QTest::newRow("size 32") << QByteArray("\x00\x00\x00\x20\xff\xff\xff\xff", 8) << (int) QDataStream::Ok << bitarray("11111111111111111111111111111111");
+
+ // past end
+ QTest::newRow("empty") << QByteArray() << (int) QDataStream::ReadPastEnd << QBitArray();
+ QTest::newRow("badsize 0a") << QByteArray("\x00", 1) << (int) QDataStream::ReadPastEnd << QBitArray();
+ QTest::newRow("badsize 0a") << QByteArray("\x00\x00", 2) << (int) QDataStream::ReadPastEnd << QBitArray();
+ QTest::newRow("badsize 0a") << QByteArray("\x00\x00\x00", 3) << (int) QDataStream::ReadPastEnd << QBitArray();
+ QTest::newRow("badsize 1") << QByteArray("\x00\x00\x00\x01", 4) << (int) QDataStream::ReadPastEnd << QBitArray();
+ QTest::newRow("badsize 2") << QByteArray("\x00\x00\x00\x02", 4) << (int) QDataStream::ReadPastEnd << QBitArray();
+ QTest::newRow("badsize 3") << QByteArray("\x00\x00\x00\x03", 4) << (int) QDataStream::ReadPastEnd << QBitArray();
+ QTest::newRow("badsize 7") << QByteArray("\x00\x00\x00\x04", 4) << (int) QDataStream::ReadPastEnd << QBitArray();
+ QTest::newRow("size 8") << QByteArray("\x00\x00\x00\x08", 4) << (int) QDataStream::ReadPastEnd << QBitArray();
+ QTest::newRow("size 9") << QByteArray("\x00\x00\x00\x09\xff", 5) << (int) QDataStream::ReadPastEnd << QBitArray();
+ QTest::newRow("size 15") << QByteArray("\x00\x00\x00\x0f\xff", 5) << (int) QDataStream::ReadPastEnd << QBitArray();
+ QTest::newRow("size 16") << QByteArray("\x00\x00\x00\x10\xff", 5) << (int) QDataStream::ReadPastEnd << QBitArray();
+ QTest::newRow("size 17") << QByteArray("\x00\x00\x00\x11\xff\xff", 6) << (int) QDataStream::ReadPastEnd << QBitArray();
+ QTest::newRow("size 32") << QByteArray("\x00\x00\x00\x20\xff\xff\xff", 7) << (int) QDataStream::ReadPastEnd << QBitArray();
+
+ // corrupt data
+ QTest::newRow("junk 1a") << QByteArray("\x00\x00\x00\x01\x02", 5) << (int) QDataStream::ReadCorruptData << QBitArray();
+ QTest::newRow("junk 1b") << QByteArray("\x00\x00\x00\x01\x04", 5) << (int) QDataStream::ReadCorruptData << QBitArray();
+ QTest::newRow("junk 1c") << QByteArray("\x00\x00\x00\x01\x08", 5) << (int) QDataStream::ReadCorruptData << QBitArray();
+ QTest::newRow("junk 1d") << QByteArray("\x00\x00\x00\x01\x10", 5) << (int) QDataStream::ReadCorruptData << QBitArray();
+ QTest::newRow("junk 1e") << QByteArray("\x00\x00\x00\x01\x20", 5) << (int) QDataStream::ReadCorruptData << QBitArray();
+ QTest::newRow("junk 1f") << QByteArray("\x00\x00\x00\x01\x40", 5) << (int) QDataStream::ReadCorruptData << QBitArray();
+ QTest::newRow("junk 1g") << QByteArray("\x00\x00\x00\x01\x80", 5) << (int) QDataStream::ReadCorruptData << QBitArray();
+ QTest::newRow("junk 2") << QByteArray("\x00\x00\x00\x02\x04", 5) << (int) QDataStream::ReadCorruptData << QBitArray();
+ QTest::newRow("junk 3") << QByteArray("\x00\x00\x00\x03\x08", 5) << (int) QDataStream::ReadCorruptData << QBitArray();
+ QTest::newRow("junk 4") << QByteArray("\x00\x00\x00\x04\x10", 5) << (int) QDataStream::ReadCorruptData << QBitArray();
+ QTest::newRow("junk 5") << QByteArray("\x00\x00\x00\x05\x20", 5) << (int) QDataStream::ReadCorruptData << QBitArray();
+ QTest::newRow("junk 6") << QByteArray("\x00\x00\x00\x06\x40", 5) << (int) QDataStream::ReadCorruptData << QBitArray();
+ QTest::newRow("junk 7") << QByteArray("\x00\x00\x00\x07\x80", 5) << (int) QDataStream::ReadCorruptData << QBitArray();
+}
+
+void tst_QDataStream::status_QBitArray()
+{
+ QFETCH(QByteArray, data);
+ QFETCH(int, expectedStatus);
+ QFETCH(QBitArray, expectedString);
+
+ QDataStream stream(&data, QIODevice::ReadOnly);
+ QBitArray str;
+ stream >> str;
+
+ QCOMPARE(int(stream.status()), expectedStatus);
+ QCOMPARE(str.size(), expectedString.size());
+ QCOMPARE(str, expectedString);
+}
+
+#define MAP_TEST(byteArray, expectedStatus, expectedHash) \
+ { \
+ QByteArray ba = byteArray; \
+ QDataStream stream(&ba, QIODevice::ReadOnly); \
+ stream >> hash; \
+ QCOMPARE((int)stream.status(), (int)expectedStatus); \
+ QCOMPARE(hash.size(), expectedHash.size()); \
+ QCOMPARE(hash, expectedHash); \
+ } \
+ { \
+ QByteArray ba = byteArray; \
+ StringMap expectedMap; \
+ StringHash::const_iterator it = expectedHash.constBegin(); \
+ for (; it != expectedHash.constEnd(); ++it) \
+ expectedMap.insert(it.key(), it.value()); \
+ QDataStream stream(&ba, QIODevice::ReadOnly); \
+ stream >> map; \
+ QCOMPARE((int)stream.status(), (int)expectedStatus); \
+ QCOMPARE(map.size(), expectedMap.size()); \
+ QCOMPARE(map, expectedMap); \
+ }
+
+void tst_QDataStream::status_QHash_QMap()
+{
+ typedef QHash<QString, QString> StringHash;
+ typedef QMap<QString, QString> StringMap;
+ StringHash hash;
+ StringMap map;
+
+ StringHash hash1;
+ hash1.insert("", "");
+
+ StringHash hash2;
+ hash2.insert("J", "K");
+ hash2.insert("L", "MN");
+
+ // ok
+ MAP_TEST(QByteArray("\x00\x00\x00\x00", 4), QDataStream::Ok, StringHash());
+ MAP_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", 12), QDataStream::Ok, hash1);
+ MAP_TEST(QByteArray("\x00\x00\x00\x02\x00\x00\x00\x02\x00J\x00\x00\x00\x02\x00K"
+ "\x00\x00\x00\x02\x00L\x00\x00\x00\x04\x00M\x00N", 30), QDataStream::Ok, hash2);
+
+ // past end
+ MAP_TEST(QByteArray(), QDataStream::ReadPastEnd, StringHash());
+ MAP_TEST(QByteArray("\x00", 1), QDataStream::ReadPastEnd, StringHash());
+ MAP_TEST(QByteArray("\x00\x00", 2), QDataStream::ReadPastEnd, StringHash());
+ MAP_TEST(QByteArray("\x00\x00\x00", 3), QDataStream::ReadPastEnd, StringHash());
+ MAP_TEST(QByteArray("\x00\x00\x00\x01", 4), QDataStream::ReadPastEnd, StringHash());
+ for (int i = 4; i < 12; ++i) {
+ MAP_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", i), QDataStream::ReadPastEnd, StringHash());
+ }
+
+ // corrupt data
+ MAP_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x01", 8), QDataStream::ReadCorruptData, StringHash());
+ MAP_TEST(QByteArray("\x00\x00\x00\x02\x00\x00\x00\x01\x00J\x00\x00\x00\x01\x00K"
+ "\x00\x00\x00\x01\x00L\x00\x00\x00\x02\x00M\x00N", 30), QDataStream::ReadCorruptData, StringHash());
+}
+
+#define LIST_TEST(byteArray, expectedStatus, expectedList) \
+ { \
+ QByteArray ba = byteArray; \
+ QDataStream stream(&ba, QIODevice::ReadOnly); \
+ stream >> list; \
+ QCOMPARE((int)stream.status(), (int)expectedStatus); \
+ QCOMPARE(list.size(), expectedList.size()); \
+ QCOMPARE(list, expectedList); \
+ } \
+ { \
+ LinkedList expectedLinkedList; \
+ for (int i = 0; i < expectedList.count(); ++i) \
+ expectedLinkedList << expectedList.at(i); \
+ QByteArray ba = byteArray; \
+ QDataStream stream(&ba, QIODevice::ReadOnly); \
+ stream >> linkedList; \
+ QCOMPARE((int)stream.status(), (int)expectedStatus); \
+ QCOMPARE(linkedList.size(), expectedLinkedList.size()); \
+ QCOMPARE(linkedList, expectedLinkedList); \
+ } \
+ { \
+ Vector expectedVector; \
+ for (int i = 0; i < expectedList.count(); ++i) \
+ expectedVector << expectedList.at(i); \
+ QByteArray ba = byteArray; \
+ QDataStream stream(&ba, QIODevice::ReadOnly); \
+ stream >> vector; \
+ QCOMPARE((int)stream.status(), (int)expectedStatus); \
+ QCOMPARE(vector.size(), expectedVector.size()); \
+ QCOMPARE(vector, expectedVector); \
+ }
+
+void tst_QDataStream::status_QLinkedList_QList_QVector()
+{
+ typedef QLinkedList<QString> LinkedList;
+ typedef QList<QString> List;
+ typedef QVector<QString> Vector;
+ LinkedList linkedList;
+ List list;
+ Vector vector;
+
+ LIST_TEST(QByteArray(), QDataStream::ReadPastEnd, List());
+ LIST_TEST(QByteArray("\x00\x00\x00\x00", 4), QDataStream::Ok, List());
+}
+
+void tst_QDataStream::streamToAndFromQByteArray()
+{
+ QByteArray data;
+ QDataStream in(&data, QIODevice::WriteOnly);
+ QDataStream out(&data, QIODevice::ReadOnly);
+
+ quint32 x = 0xdeadbeef;
+ quint32 y;
+ in << x;
+ out >> y;
+
+ QCOMPARE(y, x);
+}
+
+void tst_QDataStream::streamRealDataTypes()
+{
+ // Generate QPicture from pixmap.
+ QPixmap pm(open_xpm);
+ QVERIFY(!pm.isNull());
+ QPicture picture;
+ picture.setBoundingRect(QRect(QPoint(0, 0), pm.size()));
+ QPainter painter(&picture);
+ painter.drawPixmap(0, 0, pm);
+ painter.end();
+
+ // Generate path
+ QPainterPath path;
+ path.lineTo(10, 0);
+ path.cubicTo(0, 0, 10, 10, 20, 20);
+ path.arcTo(4, 5, 6, 7, 8, 9);
+ path.quadTo(1, 2, 3, 4);
+
+ QColor color(64, 64, 64);
+ color.setAlphaF(0.5);
+ QRadialGradient radialGradient(5, 6, 7, 8, 9);
+ QBrush radialBrush(radialGradient);
+ QConicalGradient conicalGradient(5, 6, 7);
+ QBrush conicalBrush(conicalGradient);
+
+ for (int i = 0; i < 2; ++i) {
+ QFile file;
+ if (i == 0) {
+ file.setFileName(SRCDIR "datastream.q42");
+ } else {
+ file.setFileName("datastream.tmp");
+
+ // Generate data
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ QDataStream stream(&file);
+ stream.setVersion(QDataStream::Qt_4_2);
+ stream << qreal(0) << qreal(1.0) << qreal(1.1) << qreal(3.14) << qreal(-3.14) << qreal(-1);
+ stream << QPointF(3, 5) << QRectF(-1, -2, 3, 4) << (QPolygonF() << QPointF(0, 0) << QPointF(1, 2));
+ stream << QMatrix().rotate(90).scale(2, 2);
+ stream << path;
+ stream << picture;
+ stream << QTextLength(QTextLength::VariableLength, 1.5);
+ stream << color;
+ stream << radialBrush << conicalBrush;
+ stream << QPen(QBrush(Qt::red), 1.5);
+
+ file.close();
+ }
+
+ QPointF point;
+ QRectF rect;
+ QPolygonF polygon;
+ QMatrix matrix;
+ QPainterPath p;
+ QPicture pict;
+ QTextLength textLength;
+ QColor col;
+ QBrush rGrad;
+ QBrush cGrad;
+ QPen pen;
+
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QDataStream stream(&file);
+ stream.setVersion(QDataStream::Qt_4_2);
+
+ if (i == 0) {
+ // the reference stream for 4.2 contains doubles,
+ // so we must read them out as doubles!
+ double a, b, c, d, e, f;
+ stream >> a;
+ QCOMPARE(a, 0.0);
+ stream >> b;
+ QCOMPARE(b, 1.0);
+ stream >> c;
+ QCOMPARE(c, 1.1);
+ stream >> d;
+ QCOMPARE(d, 3.14);
+ stream >> e;
+ QCOMPARE(e, -3.14);
+ stream >> f;
+ QCOMPARE(f, -1.0);
+ } else {
+ qreal a, b, c, d, e, f;
+ stream >> a;
+ QCOMPARE(a, qreal(0));
+ stream >> b;
+ QCOMPARE(b, qreal(1.0));
+ stream >> c;
+ QCOMPARE(c, qreal(1.1));
+ stream >> d;
+ QCOMPARE(d, qreal(3.14));
+ stream >> e;
+ QCOMPARE(e, qreal(-3.14));
+ stream >> f;
+ QCOMPARE(f, qreal(-1));
+ }
+ stream >> point;
+ QCOMPARE(point, QPointF(3, 5));
+ stream >> rect;
+ QCOMPARE(rect, QRectF(-1, -2, 3, 4));
+ stream >> polygon;
+ QCOMPARE((QVector<QPointF> &)polygon, (QPolygonF() << QPointF(0, 0) << QPointF(1, 2)));
+ stream >> matrix;
+ QCOMPARE(matrix, QMatrix().rotate(90).scale(2, 2));
+ stream >> p;
+ QCOMPARE(p, path);
+ if (i == 1) {
+ stream >> pict;
+
+ QByteArray pictA, pictB;
+ QBuffer bufA, bufB;
+ QVERIFY(bufA.open(QIODevice::ReadWrite));
+ QVERIFY(bufB.open(QIODevice::ReadWrite));
+
+ picture.save(&bufA);
+ pict.save(&bufB);
+
+ QCOMPARE(pictA, pictB);
+ }
+ stream >> textLength;
+ QCOMPARE(textLength, QTextLength(QTextLength::VariableLength, 1.5));
+ stream >> col;
+ QCOMPARE(col, color);
+ stream >> rGrad;
+ QCOMPARE(rGrad.style(), radialBrush.style());
+ QCOMPARE(rGrad.matrix(), radialBrush.matrix());
+ QCOMPARE(rGrad.gradient()->type(), radialBrush.gradient()->type());
+ QCOMPARE(rGrad.gradient()->stops(), radialBrush.gradient()->stops());
+ QCOMPARE(rGrad.gradient()->spread(), radialBrush.gradient()->spread());
+ QCOMPARE(((QRadialGradient *)rGrad.gradient())->center(), ((QRadialGradient *)radialBrush.gradient())->center());
+ QCOMPARE(((QRadialGradient *)rGrad.gradient())->focalPoint(), ((QRadialGradient *)radialBrush.gradient())->focalPoint());
+ QCOMPARE(((QRadialGradient *)rGrad.gradient())->radius(), ((QRadialGradient *)radialBrush.gradient())->radius());
+ stream >> cGrad;
+ QCOMPARE(cGrad.style(), conicalBrush.style());
+ QCOMPARE(cGrad.matrix(), conicalBrush.matrix());
+ QCOMPARE(cGrad.gradient()->type(), conicalBrush.gradient()->type());
+ QCOMPARE(cGrad.gradient()->stops(), conicalBrush.gradient()->stops());
+ QCOMPARE(cGrad.gradient()->spread(), conicalBrush.gradient()->spread());
+ QCOMPARE(((QConicalGradient *)cGrad.gradient())->center(), ((QConicalGradient *)conicalBrush.gradient())->center());
+ QCOMPARE(((QConicalGradient *)cGrad.gradient())->angle(), ((QConicalGradient *)conicalBrush.gradient())->angle());
+
+ QCOMPARE(cGrad, conicalBrush);
+ stream >> pen;
+ QCOMPARE(pen.widthF(), qreal(1.5));
+
+ QCOMPARE(stream.status(), QDataStream::Ok);
+ }
+}
+
+void tst_QDataStream::compatibility_Qt3()
+{
+ QByteArray ba("hello");
+ QVariant var = ba;
+ const quint32 invalidColor = 0x49000000;
+ QByteArray stream;
+ {
+ QDataStream out(&stream, QIODevice::WriteOnly);
+ out.setVersion(QDataStream::Qt_3_3);
+ out << var;
+ out << QColor();
+ out << QColor(Qt::darkYellow);
+ out << QColor(Qt::darkCyan);
+ out << invalidColor;
+ }
+ {
+ QDataStream in(stream);
+ in.setVersion(QDataStream::Qt_3_3);
+
+ //task 196100
+ quint32 type;
+ in >> type;
+ //29 is the type of a QByteArray in Qt3
+ QCOMPARE(type, quint32(29));
+ QByteArray ba2;
+ in >> ba2;
+ QCOMPARE(ba2, ba);
+
+ //task196415
+ quint32 color;
+ in >> color;
+ QCOMPARE(color, invalidColor);
+ in >> color;
+ QCOMPARE(color, QColor(Qt::darkYellow).rgb());
+ QColor col;
+ in >> col;
+ QCOMPARE(col, QColor(Qt::darkCyan));
+ in >> col;
+ QVERIFY(!col.isValid());
+ }
+ {
+ QLinearGradient gradient(QPointF(0,0), QPointF(1,1));
+ gradient.setColorAt(0, Qt::red);
+ gradient.setColorAt(1, Qt::blue);
+
+ QBrush brush(gradient);
+ QPalette palette;
+ palette.setBrush(QPalette::Button, brush);
+ palette.setColor(QPalette::Light, Qt::green);
+
+ QByteArray stream;
+ {
+ QDataStream out(&stream, QIODevice::WriteOnly);
+ out.setVersion(QDataStream::Qt_3_3);
+ out << palette;
+ out << brush;
+ }
+ QBrush in_brush;
+ QPalette in_palette;
+ {
+ QDataStream in(stream);
+ in.setVersion(QDataStream::Qt_3_3);
+ in >> in_palette;
+ in >> in_brush;
+ }
+ QVERIFY(in_brush.style() == Qt::NoBrush);
+ QVERIFY(in_palette.brush(QPalette::Button).style() == Qt::NoBrush);
+ QVERIFY(in_palette.color(QPalette::Light) == Qt::green);
+ }
+}
+
+void tst_QDataStream::compatibility_Qt2()
+{
+ QLinearGradient gradient(QPointF(0,0), QPointF(1,1));
+ gradient.setColorAt(0, Qt::red);
+ gradient.setColorAt(1, Qt::blue);
+
+ QBrush brush(gradient);
+ QPalette palette;
+ palette.setBrush(QPalette::Button, brush);
+ palette.setColor(QPalette::Light, Qt::green);
+
+ QByteArray stream;
+ {
+ QDataStream out(&stream, QIODevice::WriteOnly);
+ out.setVersion(QDataStream::Qt_2_1);
+ out << palette;
+ out << brush;
+ }
+ QBrush in_brush;
+ QPalette in_palette;
+ {
+ QDataStream in(stream);
+ in.setVersion(QDataStream::Qt_2_1);
+ in >> in_palette;
+ in >> in_brush;
+ }
+ QVERIFY(in_brush.style() == Qt::NoBrush);
+ QVERIFY(in_palette.brush(QPalette::Button).style() == Qt::NoBrush);
+ QVERIFY(in_palette.color(QPalette::Light) == Qt::green);
+}
+
+void tst_QDataStream::floatingPointPrecision()
+{
+ QByteArray ba;
+ {
+ QDataStream stream(&ba, QIODevice::WriteOnly);
+ QCOMPARE(QDataStream::DoublePrecision, stream.floatingPointPrecision());
+
+ float f = 123.0f;
+ stream << f;
+ QCOMPARE(ba.size(), int(sizeof(double)));
+
+ double d = 234.0;
+ stream << d;
+ QCOMPARE(ba.size(), int(sizeof(double)*2));
+
+ stream.setFloatingPointPrecision(QDataStream::SinglePrecision);
+
+ f = 123.0f;
+ stream << f;
+ QCOMPARE(ba.size(), int(sizeof(double)*2 + sizeof(float)));
+
+ d = 234.0;
+ stream << d;
+ QCOMPARE(ba.size(), int(sizeof(double)*2 + sizeof(float)*2));
+ }
+
+ {
+ QDataStream stream(ba);
+
+ float f = 0.0f;
+ stream >> f;
+ QCOMPARE(123.0f, f);
+
+ double d = 0.0;
+ stream >> d;
+ QCOMPARE(234.0, d);
+
+ f = 0.0f;
+ stream.setFloatingPointPrecision(QDataStream::SinglePrecision);
+ stream >> f;
+ QCOMPARE(123.0f, f);
+
+ d = 0.0;
+ stream >> d;
+ QCOMPARE(234.0, d);
+ }
+
+}
+
+QTEST_MAIN(tst_QDataStream)
+#include "tst_qdatastream.moc"
+
diff --git a/tests/auto/corelib/io/qdebug/.gitignore b/tests/auto/corelib/io/qdebug/.gitignore
new file mode 100644
index 0000000000..af993e9625
--- /dev/null
+++ b/tests/auto/corelib/io/qdebug/.gitignore
@@ -0,0 +1 @@
+tst_qdebug
diff --git a/tests/auto/corelib/io/qdebug/qdebug.pro b/tests/auto/corelib/io/qdebug/qdebug.pro
new file mode 100644
index 0000000000..2b5716860c
--- /dev/null
+++ b/tests/auto/corelib/io/qdebug/qdebug.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qdebug.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
new file mode 100644
index 0000000000..772fd9fd04
--- /dev/null
+++ b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
@@ -0,0 +1,158 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/QtCore>
+#include <QtCore/QtDebug>
+#include <QtTest/QtTest>
+
+class tst_QDebug: public QObject
+{
+ Q_OBJECT
+private slots:
+ void assignment() const;
+ void warningWithoutDebug() const;
+ void criticalWithoutDebug() const;
+ void debugWithQBool() const;
+ void veryLongWarningMessage() const;
+ void qDebugQStringRef() const;
+};
+
+void tst_QDebug::assignment() const
+{
+ QDebug debug1(QtDebugMsg);
+ QDebug debug2(QtWarningMsg);
+
+ QTest::ignoreMessage(QtDebugMsg, "foo ");
+ QTest::ignoreMessage(QtWarningMsg, "bar 1 2 ");
+
+ debug1 << "foo";
+ debug2 << "bar";
+ debug1 = debug2;
+ debug1 << "1";
+ debug2 << "2";
+}
+
+static QtMsgType s_msgType;
+static QByteArray s_msg;
+
+static void myMessageHandler(QtMsgType type, const char *msg)
+{
+ s_msg = msg;
+ s_msgType = type;
+}
+
+/*! \internal
+ The qWarning() stream should be usable even if QT_NO_DEBUG is defined.
+ */
+void tst_QDebug::warningWithoutDebug() const
+{
+ qInstallMsgHandler(myMessageHandler);
+ { qWarning() << "A qWarning() message"; }
+ QCOMPARE(s_msgType, QtWarningMsg);
+ QCOMPARE(QString::fromLatin1(s_msg.data()), QString::fromLatin1("A qWarning() message "));
+ qInstallMsgHandler(0);
+}
+
+/*! \internal
+ The qCritical() stream should be usable even if QT_NO_DEBUG is defined.
+ */
+void tst_QDebug::criticalWithoutDebug() const
+{
+ qInstallMsgHandler(myMessageHandler);
+ { qCritical() << "A qCritical() message"; }
+ QCOMPARE(s_msgType, QtCriticalMsg);
+ QCOMPARE(QString::fromLatin1(s_msg), QString::fromLatin1("A qCritical() message "));
+ qInstallMsgHandler(0);
+}
+
+void tst_QDebug::debugWithQBool() const
+{
+ qInstallMsgHandler(myMessageHandler);
+ { qDebug() << QBool(false) << QBool(true); }
+ QCOMPARE(s_msgType, QtDebugMsg);
+ QCOMPARE(QString::fromLatin1(s_msg), QString::fromLatin1("false true "));
+ qInstallMsgHandler(0);
+}
+
+void tst_QDebug::veryLongWarningMessage() const
+{
+ qInstallMsgHandler(myMessageHandler);
+ QString test;
+ {
+ QString part("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n");
+ for (int i = 0; i < 1000; ++i)
+ test.append(part);
+ qWarning("Test output:\n%s\nend", qPrintable(test));
+ }
+ QCOMPARE(s_msgType, QtWarningMsg);
+ QCOMPARE(QString::fromLatin1(s_msg), QString::fromLatin1("Test output:\n")+test+QString::fromLatin1("\nend"));
+ qInstallMsgHandler(0);
+}
+
+void tst_QDebug::qDebugQStringRef() const
+{
+ /* Use a basic string. */
+ {
+ const QString in(QLatin1String("input"));
+ const QStringRef inRef(&in);
+
+ qInstallMsgHandler(myMessageHandler);
+ { qDebug() << inRef; }
+ QCOMPARE(s_msgType, QtDebugMsg);
+ QCOMPARE(QString::fromLatin1(s_msg), QString::fromLatin1("\"input\" "));
+ qInstallMsgHandler(0);
+ }
+
+ /* Use a null QStringRef. */
+ {
+ const QStringRef inRef;
+
+ qInstallMsgHandler(myMessageHandler);
+ { qDebug() << inRef; }
+ QCOMPARE(s_msgType, QtDebugMsg);
+ QCOMPARE(QString::fromLatin1(s_msg), QString::fromLatin1("\"\" "));
+ qInstallMsgHandler(0);
+ }
+}
+
+QTEST_MAIN(tst_QDebug);
+#include "tst_qdebug.moc"
diff --git a/tests/auto/corelib/io/qdir/.gitignore b/tests/auto/corelib/io/qdir/.gitignore
new file mode 100644
index 0000000000..889f51029c
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/.gitignore
@@ -0,0 +1 @@
+tst_qdir
diff --git a/tests/auto/corelib/io/qdir/entrylist/directory/dummy b/tests/auto/corelib/io/qdir/entrylist/directory/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/entrylist/directory/dummy
diff --git a/tests/auto/corelib/io/qdir/entrylist/file b/tests/auto/corelib/io/qdir/entrylist/file
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/entrylist/file
diff --git a/tests/auto/corelib/io/qdir/qdir.pro b/tests/auto/corelib/io/qdir/qdir.pro
new file mode 100644
index 0000000000..fc266a2a97
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/qdir.pro
@@ -0,0 +1,24 @@
+load(qttest_p4)
+SOURCES += tst_qdir.cpp
+RESOURCES += qdir.qrc
+QT = core
+
+wince*|symbian {
+ DirFiles.files = testdir testData searchdir resources entrylist types tst_qdir.cpp
+ DirFiles.path = .
+ DEPLOYMENT += DirFiles
+}
+
+wince* {
+ DEFINES += SRCDIR=\\\"\\\"
+} else:symbian {
+ TARGET.CAPABILITY += AllFiles
+ TARGET.UID3 = 0xE0340002
+ DEFINES += SYMBIAN_SRCDIR_UID=$$lower($$replace(TARGET.UID3,"0x",""))
+ LIBS += -lefsrv
+ INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/io/qdir/qdir.qrc b/tests/auto/corelib/io/qdir/qdir.qrc
new file mode 100644
index 0000000000..4c5b5af3b8
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/qdir.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/tst_qdir/">
+ <file>resources/entryList/</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/corelib/io/qdir/resources/entryList/file1.data b/tests/auto/corelib/io/qdir/resources/entryList/file1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/resources/entryList/file1.data
diff --git a/tests/auto/corelib/io/qdir/resources/entryList/file2.data b/tests/auto/corelib/io/qdir/resources/entryList/file2.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/resources/entryList/file2.data
diff --git a/tests/auto/corelib/io/qdir/resources/entryList/file3.data b/tests/auto/corelib/io/qdir/resources/entryList/file3.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/resources/entryList/file3.data
diff --git a/tests/auto/corelib/io/qdir/resources/entryList/file4.nothing b/tests/auto/corelib/io/qdir/resources/entryList/file4.nothing
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/resources/entryList/file4.nothing
diff --git a/tests/auto/corelib/io/qdir/searchdir/subdir1/picker.png b/tests/auto/corelib/io/qdir/searchdir/subdir1/picker.png
new file mode 100644
index 0000000000..52eee4fe28
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/searchdir/subdir1/picker.png
@@ -0,0 +1 @@
+mostly empty
diff --git a/tests/auto/corelib/io/qdir/searchdir/subdir2/picker.png b/tests/auto/corelib/io/qdir/searchdir/subdir2/picker.png
new file mode 100644
index 0000000000..52eee4fe28
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/searchdir/subdir2/picker.png
@@ -0,0 +1 @@
+mostly empty
diff --git a/tests/auto/corelib/io/qdir/testData/empty b/tests/auto/corelib/io/qdir/testData/empty
new file mode 100644
index 0000000000..a437d5b711
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/testData/empty
@@ -0,0 +1 @@
+this is just so QDir has something to dive into.
diff --git a/tests/auto/corelib/io/qdir/testdir/dir/qdir.pro b/tests/auto/corelib/io/qdir/testdir/dir/qdir.pro
new file mode 100644
index 0000000000..139597f9cb
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/testdir/dir/qdir.pro
@@ -0,0 +1,2 @@
+
+
diff --git a/tests/auto/corelib/io/qdir/testdir/dir/qrc_qdir.cpp b/tests/auto/corelib/io/qdir/testdir/dir/qrc_qdir.cpp
new file mode 100644
index 0000000000..74114760c9
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/testdir/dir/qrc_qdir.cpp
@@ -0,0 +1,42 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
diff --git a/tests/auto/corelib/io/qdir/testdir/dir/tmp/empty b/tests/auto/corelib/io/qdir/testdir/dir/tmp/empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/testdir/dir/tmp/empty
diff --git a/tests/auto/corelib/io/qdir/testdir/dir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/testdir/dir/tst_qdir.cpp
new file mode 100644
index 0000000000..74114760c9
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/testdir/dir/tst_qdir.cpp
@@ -0,0 +1,42 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
diff --git a/tests/auto/corelib/io/qdir/testdir/spaces/foo. bar b/tests/auto/corelib/io/qdir/testdir/spaces/foo. bar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/testdir/spaces/foo. bar
diff --git a/tests/auto/corelib/io/qdir/testdir/spaces/foo.bar b/tests/auto/corelib/io/qdir/testdir/spaces/foo.bar
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/testdir/spaces/foo.bar
diff --git a/tests/auto/corelib/io/qdir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/tst_qdir.cpp
new file mode 100644
index 0000000000..b317991570
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/tst_qdir.cpp
@@ -0,0 +1,1965 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qdebug.h>
+#include <qdir.h>
+#include <qfileinfo.h>
+#include <qregexp.h>
+#include <qstringlist.h>
+#include "../../../network-settings.h"
+
+#if defined(Q_OS_WIN)
+#define _WIN32_WINNT 0x500
+#endif
+
+#include "../../../../shared/filesystem.h"
+
+#if defined(Q_OS_SYMBIAN)
+# include <f32file.h>
+# define STRINGIFY(x) #x
+# define TOSTRING(x) STRINGIFY(x)
+# define SRCDIR "C:/Private/" TOSTRING(SYMBIAN_SRCDIR_UID) "/"
+#elif defined(Q_OS_UNIX)
+# include <unistd.h>
+# include <sys/stat.h>
+#endif
+
+#if defined(Q_OS_VXWORKS)
+#define Q_NO_SYMLINKS
+#endif
+
+#if defined(Q_OS_SYMBIAN)
+#define Q_NO_SYMLINKS
+#define Q_NO_SYMLINKS_TO_DIRS
+#endif
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QDir : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QDir();
+ virtual ~tst_QDir();
+
+private slots:
+ void getSetCheck();
+ void construction();
+
+ void setPath_data();
+ void setPath();
+
+ void entryList_data();
+ void entryList();
+
+ void entryListSimple_data();
+ void entryListSimple();
+
+ void entryListWithSymLinks();
+
+ void mkdir_data();
+ void mkdir();
+
+ void makedirReturnCode();
+
+ void rmdir_data();
+ void rmdir();
+
+ void exists_data();
+ void exists();
+
+ void isRelativePath_data();
+ void isRelativePath();
+
+ void canonicalPath_data();
+ void canonicalPath();
+
+ void current_data();
+ void current();
+
+ void cd_data();
+ void cd();
+
+ void setNameFilters_data();
+ void setNameFilters();
+
+ void cleanPath_data();
+ void cleanPath();
+
+ void compare();
+ void QDir_default();
+
+ void filePath_data();
+ void filePath();
+
+ void absoluteFilePath_data();
+ void absoluteFilePath();
+
+ void absolutePath_data();
+ void absolutePath();
+
+ void relativeFilePath_data();
+ void relativeFilePath();
+
+ void remove();
+ void rename();
+
+ void exists2_data();
+ void exists2();
+
+ void dirName_data();
+ void dirName();
+
+ void operator_eq();
+
+ void dotAndDotDot();
+ void homePath();
+ void tempPath();
+ void rootPath();
+
+ void nativeSeparators();
+
+ void searchPaths();
+ void searchPaths_data();
+
+ void entryListWithSearchPaths();
+
+ void longFileName_data();
+ void longFileName();
+
+ void updateFileLists();
+
+ void detachingOperations();
+
+ void testCaching();
+
+ void isRoot_data();
+ void isRoot();
+
+#ifndef QT_NO_REGEXP
+ void match_data();
+ void match();
+#endif
+
+ void drives();
+
+ void arrayOperator();
+
+ void equalityOperator_data();
+ void equalityOperator();
+
+ void isRelative_data();
+ void isRelative();
+
+ void isReadable();
+};
+
+// Testing get/set functions
+void tst_QDir::getSetCheck()
+{
+ QDir obj1;
+ // Filters QDir::filter()
+ // void QDir::setFilter(Filters)
+ obj1.setFilter(QDir::Filters(QDir::Dirs));
+ QCOMPARE(QDir::Filters(QDir::Dirs), obj1.filter());
+ obj1.setFilter(QDir::Filters(QDir::Dirs | QDir::Files));
+ QCOMPARE(QDir::Filters(QDir::Dirs | QDir::Files), obj1.filter());
+ obj1.setFilter(QDir::Filters(QDir::NoFilter));
+ QCOMPARE(QDir::Filters(QDir::NoFilter), obj1.filter());
+
+ // SortFlags QDir::sorting()
+ // void QDir::setSorting(SortFlags)
+ obj1.setSorting(QDir::SortFlags(QDir::Name));
+ QCOMPARE(QDir::SortFlags(QDir::Name), obj1.sorting());
+ obj1.setSorting(QDir::SortFlags(QDir::Name | QDir::IgnoreCase));
+ QCOMPARE(QDir::SortFlags(QDir::Name | QDir::IgnoreCase), obj1.sorting());
+ obj1.setSorting(QDir::SortFlags(QDir::NoSort));
+ QCOMPARE(QDir::SortFlags(QDir::NoSort), obj1.sorting());
+}
+
+tst_QDir::tst_QDir()
+{
+#ifdef Q_OS_SYMBIAN
+ // Can't deploy empty test dir, so create it here
+ QDir dir(SRCDIR);
+ dir.mkdir("testData");
+#endif
+}
+
+tst_QDir::~tst_QDir()
+{
+#ifdef Q_OS_SYMBIAN
+ // Remove created test dir
+ QDir dir(SRCDIR);
+ dir.rmdir("testData");
+#endif
+}
+
+void tst_QDir::construction()
+{
+ QFileInfo myFileInfo("/machine/share/dir1/file1");
+ QDir myDir(myFileInfo.absoluteDir()); // this asserted
+ QCOMPARE(myFileInfo.absoluteDir().absolutePath(), myDir.absolutePath());
+}
+
+void tst_QDir::setPath_data()
+{
+ QTest::addColumn<QString>("dir1");
+ QTest::addColumn<QString>("dir2");
+
+ QTest::newRow("data0") << QString(".") << QString("..");
+#if (defined(Q_WS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("data1") << QString("c:/") << QDir::currentPath();
+#endif
+}
+
+void tst_QDir::setPath()
+{
+ QFETCH(QString, dir1);
+ QFETCH(QString, dir2);
+
+ QDir shared;
+ QDir qDir1(dir1);
+ QStringList entries1 = qDir1.entryList();
+ shared.setPath(dir1);
+ QCOMPARE(shared.entryList(), entries1);
+
+ QDir qDir2(dir2);
+ QStringList entries2 = qDir2.entryList();
+ shared.setPath(dir2);
+ QCOMPARE(shared.entryList(), entries2);
+}
+
+void tst_QDir::mkdir_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("recurse");
+
+ QStringList dirs;
+ dirs << QDir::currentPath() + "/testdir/one/two/three"
+ << QDir::currentPath() + "/testdir/two"
+ << QDir::currentPath() + "/testdir/two/three";
+ QTest::newRow("data0") << dirs.at(0) << true;
+ QTest::newRow("data1") << dirs.at(1) << false;
+ QTest::newRow("data2") << dirs.at(2) << false;
+
+ // Ensure that none of these directories already exist
+ QDir dir;
+ for (int i = 0; i < dirs.count(); ++i)
+ dir.rmpath(dirs.at(i));
+}
+
+void tst_QDir::mkdir()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, recurse);
+
+ QDir dir;
+ dir.rmdir(path);
+ if (recurse)
+ QVERIFY(dir.mkpath(path));
+ else
+ QVERIFY(dir.mkdir(path));
+
+ //make sure it really exists (ie that mkdir returns the right value)
+ QFileInfo fi(path);
+ QVERIFY(fi.exists() && fi.isDir());
+}
+
+void tst_QDir::makedirReturnCode()
+{
+ QString dirName = QString::fromLatin1("makedirReturnCode");
+ QDir::current().rmdir(dirName); // cleanup a previous run.
+ QDir dir(dirName);
+ QVERIFY(!dir.exists());
+ QVERIFY(QDir::current().mkdir(dirName));
+ QVERIFY(!QDir::current().mkdir(dirName)); // calling mkdir on an existing dir will fail.
+ QVERIFY(QDir::current().mkpath(dirName)); // calling mkpath on an existing dir will pass
+}
+
+void tst_QDir::rmdir_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("recurse");
+
+ QTest::newRow("data0") << QDir::currentPath() + "/testdir/one/two/three" << true;
+ QTest::newRow("data1") << QDir::currentPath() + "/testdir/two/three" << false;
+ QTest::newRow("data2") << QDir::currentPath() + "/testdir/two" << false;
+}
+
+void tst_QDir::rmdir()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, recurse);
+
+ QDir dir;
+ if (recurse)
+ QVERIFY(dir.rmpath(path));
+ else
+ QVERIFY(dir.rmdir(path));
+
+ //make sure it really doesn't exist (ie that rmdir returns the right value)
+ QFileInfo fi(path);
+ QVERIFY(!fi.exists());
+}
+
+void tst_QDir::exists_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("data0") << QDir::currentPath() << true;
+ QTest::newRow("data0.1") << QDir::currentPath() + "/" << true;
+ QTest::newRow("data1") << QString("/I/Do_not_expect_this_path_to_exist/") << false;
+ QTest::newRow("resource0") << QString(":/tst_qdir/") << true;
+ QTest::newRow("resource1") << QString(":/I/Do_not_expect_this_resource_to_exist/") << false;
+
+ QTest::newRow("simple dir") << SRCDIR "resources" << true;
+ QTest::newRow("simple dir with slash") << SRCDIR "resources/" << true;
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE))
+ QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << true;
+ QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << true;
+ QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << true;
+ QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << true;
+ QTest::newRow("unc 5") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp" << true;
+ QTest::newRow("unc 6") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp/" << true;
+ QTest::newRow("unc 7") << "//" + QtNetworkSettings::winServerName() + "/testshare/adirthatshouldnotexist" << false;
+ QTest::newRow("unc 8") << "//" + QtNetworkSettings::winServerName() + "/asharethatshouldnotexist" << false;
+ QTest::newRow("unc 9") << "//ahostthatshouldnotexist" << false;
+#endif
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("This drive should exist") << "C:/" << true;
+ // find a non-existing drive and check if it does not exist
+ QFileInfoList drives = QFSFileEngine::drives();
+ QStringList driveLetters;
+ for (int i = 0; i < drives.count(); ++i) {
+ driveLetters+=drives.at(i).absoluteFilePath();
+ }
+ char drive = 'Z';
+ QString driv;
+ do {
+ driv = QString::fromAscii("%1:/").arg(drive);
+ if (!driveLetters.contains(driv)) break;
+ --drive;
+ } while (drive >= 'A');
+ if (drive >= 'A') {
+ QTest::newRow("This drive should not exist") << driv << false;
+ }
+#endif
+}
+
+void tst_QDir::exists()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, expected);
+
+ QDir dir(path);
+ QCOMPARE(dir.exists(), expected);
+}
+
+void tst_QDir::isRelativePath_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("relative");
+
+ QTest::newRow("data0") << "../somedir" << true;
+#if (defined(Q_WS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("data1") << "C:/sOmedir" << false;
+#endif
+ QTest::newRow("data2") << "somedir" << true;
+ QTest::newRow("data3") << "/somedir" << false;
+
+ QTest::newRow("resource0") << ":/prefix" << false;
+ QTest::newRow("resource1") << ":/prefix/foo.bar" << false;
+}
+
+void tst_QDir::isRelativePath()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, relative);
+
+ QCOMPARE(QDir::isRelativePath(path),relative);
+}
+
+
+void tst_QDir::QDir_default()
+{
+ //default constructor QDir();
+ QDir dir; // according to documentation should be currentDirPath
+ QCOMPARE(dir.absolutePath(), QDir::currentPath());
+}
+
+void tst_QDir::compare()
+{
+ // operator==
+ QDir dir;
+ dir.makeAbsolute();
+ QVERIFY(dir == QDir::currentPath());
+}
+
+static QStringList filterLinks(const QStringList &list)
+{
+#ifndef Q_NO_SYMLINKS
+ return list;
+#else
+ QStringList result;
+ foreach (QString str, list) {
+ if (!str.endsWith(QLatin1String(".lnk")))
+ result.append(str);
+ }
+ return result;
+#endif
+}
+
+void tst_QDir::entryList_data()
+{
+ QTest::addColumn<QString>("dirName"); // relative from current path or abs
+ QTest::addColumn<QStringList>("nameFilters");
+ QTest::addColumn<int>("filterspec");
+ QTest::addColumn<int>("sortspec");
+ QTest::addColumn<QStringList>("expected");
+ QTest::newRow("spaces1") << SRCDIR "testdir/spaces" << QStringList("*. bar")
+ << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
+ << QStringList("foo. bar"); // notice how spaces5 works
+ QTest::newRow("spaces2") << SRCDIR "testdir/spaces" << QStringList("*.bar")
+ << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
+ << QStringList("foo.bar");
+ QTest::newRow("spaces3") << SRCDIR "testdir/spaces" << QStringList("foo.*")
+ << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
+ << QString("foo. bar,foo.bar").split(',');
+ QTest::newRow("files1") << SRCDIR "testdir/dir" << QString("*r.cpp *.pro").split(" ")
+ << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
+ << QString("qdir.pro,qrc_qdir.cpp,tst_qdir.cpp").split(',');
+ QTest::newRow("testdir1") << SRCDIR "testdir" << QStringList()
+ << (int)(QDir::AllDirs) << (int)(QDir::NoSort)
+ << QString(".,..,dir,spaces").split(',');
+// #### this test uses filenames that cannot be represented on all filesystems we test, in
+// particular HFS+ on the Mac. When checking out the files with perforce it silently ignores the
+// error that it cannot represent the file names stored in the repository and the test fails. That
+// is why the test is marked as 'skip' for the mac. When checking out the files with git on the mac
+// the error of not being able to represent the files stored in the repository is not silently
+// ignored but git reports an error. The test only tried to prevent QDir from _hanging_ when listing
+// the directory.
+// QTest::newRow("unprintablenames") << SRCDIR "unprintablenames" << QStringList("*")
+// << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
+// << QString(".,..").split(",");
+ QTest::newRow("resources1") << QString(":/tst_qdir/resources/entryList") << QStringList("*.data")
+ << (int)(QDir::NoFilter) << (int)(QDir::NoSort)
+ << QString("file1.data,file2.data,file3.data").split(',');
+ QTest::newRow("resources2") << QString(":/tst_qdir/resources/entryList") << QStringList("*.data")
+ << (int)(QDir::Files) << (int)(QDir::NoSort)
+ << QString("file1.data,file2.data,file3.data").split(',');
+
+ QTest::newRow("nofilter") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::AllEntries") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllEntries) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::Files") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Files) << int(QDir::Name)
+ << filterLinks(QString("file,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::Dirs") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Dirs) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,linktodirectory.lnk").split(','));
+ QTest::newRow("QDir::Dirs | QDir::NoDotAndDotDot") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Dirs | QDir::NoDotAndDotDot) << int(QDir::Name)
+ << filterLinks(QString("directory,linktodirectory.lnk").split(','));
+ QTest::newRow("QDir::AllDirs") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllDirs) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,linktodirectory.lnk").split(','));
+ QTest::newRow("QDir::AllDirs | QDir::Dirs") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllDirs | QDir::Dirs) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,linktodirectory.lnk").split(','));
+ QTest::newRow("QDir::AllDirs | QDir::Files") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllDirs | QDir::Files) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::AllEntries | QDir::NoSymLinks") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllEntries | QDir::NoSymLinks) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,file,writable").split(','));
+ QTest::newRow("QDir::AllEntries | QDir::NoSymLinks | QDir::NoDotAndDotDot") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllEntries | QDir::NoSymLinks | QDir::NoDotAndDotDot) << int(QDir::Name)
+ << filterLinks(QString("directory,file,writable").split(','));
+ QTest::newRow("QDir::Files | QDir::NoSymLinks") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Files | QDir::NoSymLinks) << int(QDir::Name)
+ << filterLinks(QString("file,writable").split(','));
+ QTest::newRow("QDir::Dirs | QDir::NoSymLinks") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Dirs | QDir::NoSymLinks) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory").split(','));
+ QTest::newRow("QDir::Drives | QDir::Files | QDir::NoDotAndDotDot") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Drives | QDir::Files | QDir::NoDotAndDotDot) << int(QDir::Name)
+ << filterLinks(QString("file,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::System") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::System) << int(QDir::Name)
+ << filterLinks(QStringList("brokenlink.lnk"));
+ QTest::newRow("QDir::Hidden") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Hidden) << int(QDir::Name)
+ << QStringList();
+ QTest::newRow("QDir::System | QDir::Hidden") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::System | QDir::Hidden) << int(QDir::Name)
+ << filterLinks(QStringList("brokenlink.lnk"));
+ QTest::newRow("QDir::AllDirs | QDir::NoSymLinks") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllDirs | QDir::NoSymLinks) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory").split(','));
+ QTest::newRow("QDir::AllEntries | QDir::Hidden | QDir::System") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllEntries | QDir::Hidden | QDir::System) << int(QDir::Name)
+ << filterLinks(QString(".,..,brokenlink.lnk,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::AllEntries | QDir::Readable") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllEntries | QDir::Readable) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::AllEntries | QDir::Writable") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::AllEntries | QDir::Writable) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,linktodirectory.lnk,writable").split(','));
+ QTest::newRow("QDir::Files | QDir::Readable") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Files | QDir::Readable) << int(QDir::Name)
+ << filterLinks(QString("file,linktofile.lnk,writable").split(','));
+ QTest::newRow("QDir::Dirs | QDir::Readable") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::Dirs | QDir::Readable) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,linktodirectory.lnk").split(','));
+ QTest::newRow("Namefilters b*") << SRCDIR "entrylist/" << QStringList("d*")
+ << int(QDir::NoFilter) << int(QDir::Name)
+ << filterLinks(QString("directory").split(','));
+ QTest::newRow("Namefilters f*") << SRCDIR "entrylist/" << QStringList("f*")
+ << int(QDir::NoFilter) << int(QDir::Name)
+ << filterLinks(QString("file").split(','));
+ QTest::newRow("Namefilters link*") << SRCDIR "entrylist/" << QStringList("link*")
+ << int(QDir::NoFilter) << int(QDir::Name)
+ << filterLinks(QString("linktodirectory.lnk,linktofile.lnk").split(','));
+ QTest::newRow("Namefilters *to*") << SRCDIR "entrylist/" << QStringList("*to*")
+ << int(QDir::NoFilter) << int(QDir::Name)
+ << filterLinks(QString("directory,linktodirectory.lnk,linktofile.lnk").split(','));
+ QTest::newRow("Sorting QDir::Name") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Name)
+ << filterLinks(QString(".,..,directory,file,linktodirectory.lnk,linktofile.lnk,writable").split(','));
+ QTest::newRow("Sorting QDir::Name | QDir::Reversed") << SRCDIR "entrylist/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Name | QDir::Reversed)
+ << filterLinks(QString("writable,linktofile.lnk,linktodirectory.lnk,file,directory,..,.").split(','));
+
+ QTest::newRow("Sorting QDir::Type") << SRCDIR "types/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Type)
+ << QString(".,..,a,b,c,d,e,f,a.a,b.a,c.a,d.a,e.a,f.a,a.b,b.b,c.b,d.b,e.b,f.b,a.c,b.c,c.c,d.c,e.c,f.c").split(',');
+ QTest::newRow("Sorting QDir::Type | QDir::Reversed") << SRCDIR "types/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Type | QDir::Reversed)
+ << QString("f.c,e.c,d.c,c.c,b.c,a.c,f.b,e.b,d.b,c.b,b.b,a.b,f.a,e.a,d.a,c.a,b.a,a.a,f,e,d,c,b,a,..,.").split(',');
+ QTest::newRow("Sorting QDir::Type | QDir::DirsLast") << SRCDIR "types/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Type | QDir::DirsLast)
+ << QString("a,b,c,a.a,b.a,c.a,a.b,b.b,c.b,a.c,b.c,c.c,.,..,d,e,f,d.a,e.a,f.a,d.b,e.b,f.b,d.c,e.c,f.c").split(',');
+ QTest::newRow("Sorting QDir::Type | QDir::DirsFirst") << SRCDIR "types/" << QStringList("*")
+ << int(QDir::NoFilter) << int(QDir::Type | QDir::DirsFirst)
+ << QString(".,..,d,e,f,d.a,e.a,f.a,d.b,e.b,f.b,d.c,e.c,f.c,a,b,c,a.a,b.a,c.a,a.b,b.b,c.b,a.c,b.c,c.c").split(',');
+ QTest::newRow("Sorting QDir::Size") << SRCDIR "types/" << QStringList("*")
+ << int(QDir::AllEntries|QDir::NoDotAndDotDot) << int(QDir::Size | QDir::DirsFirst)
+ << QString("d,d.a,d.b,d.c,e,e.a,e.b,e.c,f,f.a,f.b,f.c,c.a,c.b,c.c,b.a,b.c,b.b,a.c,a.b,a.a,a,b,c").split(',');
+ QTest::newRow("Sorting QDir::Size | QDir::Reversed") << SRCDIR "types/" << QStringList("*")
+ << int(QDir::AllEntries|QDir::NoDotAndDotDot) << int(QDir::Size | QDir::Reversed | QDir::DirsLast)
+ << QString("c,b,a,a.a,a.b,a.c,b.b,b.c,b.a,c.c,c.b,c.a,f.c,f.b,f.a,f,e.c,e.b,e.a,e,d.c,d.b,d.a,d").split(',');
+}
+
+void tst_QDir::entryList()
+{
+ QFETCH(QString, dirName);
+ QFETCH(QStringList, nameFilters);
+ QFETCH(int, filterspec);
+ QFETCH(int, sortspec);
+ QFETCH(QStringList, expected);
+
+ QFile(SRCDIR "entrylist/writable").open(QIODevice::ReadWrite);
+ QFile(SRCDIR "entrylist/file").setPermissions(QFile::ReadOwner | QFile::ReadUser);
+ QFile::remove(SRCDIR "entrylist/linktofile");
+ QFile::remove(SRCDIR "entrylist/linktodirectory");
+ QFile::remove(SRCDIR "entrylist/linktofile.lnk");
+ QFile::remove(SRCDIR "entrylist/linktodirectory.lnk");
+ QFile::remove(SRCDIR "entrylist/brokenlink.lnk");
+ QFile::remove(SRCDIR "entrylist/brokenlink");
+
+ // WinCE/Symbian does not have . and .. in the directory listing
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ expected.removeAll(".");
+ expected.removeAll("..");
+#endif
+
+#ifndef Q_NO_SYMLINKS
+#if defined(Q_OS_WIN)
+ // ### Sadly, this is a platform difference right now.
+ QFile::link(SRCDIR "entryList/file", SRCDIR "entrylist/linktofile.lnk");
+ QFile::link(SRCDIR "entryList/directory", SRCDIR "entrylist/linktodirectory.lnk");
+ QFile::link(SRCDIR "entryList/nothing", SRCDIR "entrylist/brokenlink.lnk");
+#elif defined(Q_OS_SYMBIAN)
+ // Symbian doesn't support links to directories
+ expected.removeAll("linktodirectory.lnk");
+
+ // Expecting failures from a couple of OpenC bugs. Do checks only once.
+ static int xFailChecked = false;
+ static int expectedFail1 = false;
+ static int expectedFail2 = false;
+
+ if (!expectedFail1) {
+ // Can't create link if file doesn't exist in symbian, so create file temporarily,
+ // But only if testing for
+ QFile tempFile(SRCDIR "entryList/nothing");
+ tempFile.open(QIODevice::WriteOnly);
+ tempFile.link(SRCDIR "entryList/brokenlink.lnk");
+ tempFile.remove();
+ }
+
+ if (!expectedFail2) {
+ QFile::link(SRCDIR "entryList/file", SRCDIR "entrylist/linktofile.lnk");
+ }
+
+ if (!xFailChecked) {
+ // ### Until OpenC supports stat correctly for symbolic links, expect them to fail.
+ expectedFail1 = QFileInfo(SRCDIR "entryList/brokenlink.lnk").exists();
+ expectedFail2 = !(QFileInfo(SRCDIR "entryList/linktofile.lnk").isFile());
+
+ QEXPECT_FAIL("", "OpenC bug, stat for broken links returns normally, when it should return error.", Continue);
+ QVERIFY(!expectedFail1);
+
+ QEXPECT_FAIL("", "OpenC bug, stat for file links doesn't indicate them as such.", Continue);
+ QVERIFY(!expectedFail2);
+ xFailChecked = true;
+ }
+
+ if (expectedFail1) {
+ expected.removeAll("brokenlink.lnk");
+ QFile::remove(SRCDIR "entrylist/brokenlink.lnk");
+ }
+
+ if (expectedFail2) {
+ expected.removeAll("linktofile.lnk");
+ QFile::remove(SRCDIR "entrylist/linktofile.lnk");
+ }
+#else
+ QFile::link("file", SRCDIR "entrylist/linktofile.lnk");
+ QFile::link("directory", SRCDIR "entrylist/linktodirectory.lnk");
+ QFile::link("nothing", SRCDIR "entrylist/brokenlink.lnk");
+#endif
+#endif //Q_NO_SYMLINKS
+
+#ifdef Q_WS_MAC
+ if (qstrcmp(QTest::currentDataTag(), "unprintablenames") == 0)
+ QSKIP("p4 doesn't sync the files with the unprintable names properly on Mac",SkipSingle);
+#endif
+ QDir dir(dirName);
+ QVERIFY(dir.exists());
+
+ QStringList actual = dir.entryList(nameFilters, (QDir::Filters)filterspec,
+ (QDir::SortFlags)sortspec);
+
+ int max = qMin(actual.count(), expected.count());
+
+ if (qstrcmp(QTest::currentDataTag(), "unprintablenames") == 0) {
+ // The purpose of this entry is to check that QDir doesn't
+ // lock up. The actual result depends on the file system.
+ return;
+ }
+ bool doContentCheck = true;
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ if (qstrcmp(QTest::currentDataTag(), "QDir::AllEntries | QDir::Writable") == 0) {
+ // for root, everything is writeable
+ if (::getuid() == 0)
+ doContentCheck = false;
+ }
+#endif
+
+ if (doContentCheck) {
+ for (int i=0; i<max; ++i)
+ QCOMPARE(actual[i], expected[i]);
+
+ QCOMPARE(actual.count(), expected.count());
+ }
+
+#if defined(Q_OS_SYMBIAN)
+ // Test cleanup on device requires setting the permissions back to normal
+ QFile(SRCDIR "entrylist/file").setPermissions(QFile::WriteUser | QFile::ReadUser);
+#endif
+
+ QFile::remove(SRCDIR "entrylist/writable");
+ QFile::remove(SRCDIR "entrylist/linktofile");
+ QFile::remove(SRCDIR "entrylist/linktodirectory");
+ QFile::remove(SRCDIR "entrylist/linktofile.lnk");
+ QFile::remove(SRCDIR "entrylist/linktodirectory.lnk");
+ QFile::remove(SRCDIR "entrylist/brokenlink.lnk");
+ QFile::remove(SRCDIR "entrylist/brokenlink");
+}
+
+void tst_QDir::entryListSimple_data()
+{
+ QTest::addColumn<QString>("dirName");
+ QTest::addColumn<int>("countMin");
+
+ QTest::newRow("data2") << "do_not_expect_this_path_to_exist/" << 0;
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("simple dir") << SRCDIR "resources" << 0;
+ QTest::newRow("simple dir with slash") << SRCDIR "resources/" << 0;
+#else
+ QTest::newRow("simple dir") << SRCDIR "resources" << 2;
+ QTest::newRow("simple dir with slash") << SRCDIR "resources/" << 2;
+#endif
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << 2;
+ QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << 2;
+ QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << 2;
+ QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << 2;
+ QTest::newRow("unc 5") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp" << 2;
+ QTest::newRow("unc 6") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp/" << 2;
+ QTest::newRow("unc 7") << "//" + QtNetworkSettings::winServerName() + "/testshare/adirthatshouldnotexist" << 0;
+ QTest::newRow("unc 8") << "//" + QtNetworkSettings::winServerName() + "/asharethatshouldnotexist" << 0;
+ QTest::newRow("unc 9") << "//ahostthatshouldnotexist" << 0;
+#endif
+}
+
+void tst_QDir::entryListSimple()
+{
+ QFETCH(QString, dirName);
+ QFETCH(int, countMin);
+
+ QDir dir(dirName);
+ QStringList actual = dir.entryList();
+ QVERIFY(actual.count() >= countMin);
+}
+
+void tst_QDir::entryListWithSymLinks()
+{
+#ifndef Q_NO_SYMLINKS
+# ifndef Q_NO_SYMLINKS_TO_DIRS
+ QFile::remove("myLinkToDir.lnk");
+# endif
+ QFile::remove("myLinkToFile.lnk");
+ QFile::remove("testfile.cpp");
+ QDir dir;
+ dir.mkdir("myDir");
+ QFile("testfile.cpp").open(QIODevice::WriteOnly);
+# ifndef Q_NO_SYMLINKS_TO_DIRS
+ QVERIFY(QFile::link("myDir", "myLinkToDir.lnk"));
+# endif
+ QVERIFY(QFile::link("testfile.cpp", "myLinkToFile.lnk"));
+
+ {
+ QStringList entryList = QDir().entryList();
+ QVERIFY(entryList.contains("myDir"));
+# ifndef Q_NO_SYMLINKS_TO_DIRS
+ QVERIFY(entryList.contains("myLinkToDir.lnk"));
+#endif
+ QVERIFY(entryList.contains("myLinkToFile.lnk"));
+ }
+ {
+ QStringList entryList = QDir().entryList(QDir::Dirs);
+ QVERIFY(entryList.contains("myDir"));
+# ifndef Q_NO_SYMLINKS_TO_DIRS
+ QVERIFY(entryList.contains("myLinkToDir.lnk"));
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QEXPECT_FAIL("", "OpenC stat for symlinks is buggy.", Continue);
+#endif
+ QVERIFY(!entryList.contains("myLinkToFile.lnk"));
+ }
+ {
+ QStringList entryList = QDir().entryList(QDir::Dirs | QDir::NoSymLinks);
+ QVERIFY(entryList.contains("myDir"));
+ QVERIFY(!entryList.contains("myLinkToDir.lnk"));
+ QVERIFY(!entryList.contains("myLinkToFile.lnk"));
+ }
+
+ QFile::remove("myLinkToDir.lnk");
+ QFile::remove("myLinkToFile.lnk");
+ QFile::remove("testfile.cpp");
+ dir.rmdir("myDir");
+#endif
+}
+
+void tst_QDir::canonicalPath_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("canonicalPath");
+ QString appPath = SRCDIR;
+ if (appPath.isEmpty())
+ appPath = QCoreApplication::instance()->applicationDirPath();
+ else
+ appPath.chop(1); // remove the ending slash
+
+#if defined Q_WS_WIN
+ if (appPath.endsWith("release", Qt::CaseInsensitive) || appPath.endsWith("debug", Qt::CaseInsensitive)) {
+ QDir appDir(appPath);
+ QVERIFY(appDir.cdUp());
+ appPath = appDir.absolutePath();
+ }
+#endif
+
+ QTest::newRow("relative") << "." << appPath;
+ QTest::newRow("relativeSubDir") << "./testData/../testData" << appPath + "/testData";
+
+#ifndef Q_WS_WIN
+ QTest::newRow("absPath") << appPath + "/testData/../testData" << appPath + "/testData";
+#else
+ QTest::newRow("absPath") << appPath + "\\testData\\..\\testData" << appPath + "/testData";
+#endif
+ QTest::newRow("nonexistant") << "testd" << QString();
+
+ QTest::newRow("rootPath") << QDir::rootPath() << QDir::rootPath();
+
+#ifdef Q_OS_MAC
+ // On Mac OS X 10.5 and earlier, canonicalPath depends on cleanPath which
+ // is itself very broken and fundamentally wrong on "/./" which, this would
+ // exercise
+ if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_6)
+#endif
+ QTest::newRow("rootPath + ./") << QDir::rootPath().append("./") << QDir::rootPath();
+
+ QTest::newRow("rootPath + ../.. ") << QDir::rootPath().append("../..") << QDir::rootPath();
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("drive:\\") << QDir::toNativeSeparators(QDir::rootPath()) << QDir::rootPath();
+ QTest::newRow("drive:\\.\\") << QDir::toNativeSeparators(QDir::rootPath().append("./")) << QDir::rootPath();
+ QTest::newRow("drive:\\..\\..") << QDir::toNativeSeparators(QDir::rootPath().append("../..")) << QDir::rootPath();
+ QTest::newRow("drive:") << QDir().canonicalPath().left(2) << QDir().canonicalPath();
+#endif
+
+ QTest::newRow("resource") << ":/tst_qdir/resources/entryList" << ":/tst_qdir/resources/entryList";
+}
+
+void tst_QDir::canonicalPath()
+{
+ QDir srcPath;
+ if (strlen(SRCDIR) > 0)
+ srcPath = QDir(SRCDIR);
+ else
+ srcPath = QDir(".");
+ if (srcPath.absolutePath() != srcPath.canonicalPath())
+ QSKIP("This test does not work if this directory path consists of symlinks.", SkipAll);
+
+ QString oldpwd = QDir::currentPath();
+ QDir::setCurrent(srcPath.absolutePath());
+
+ QFETCH(QString, path);
+ QFETCH(QString, canonicalPath);
+
+ QDir dir(path);
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QCOMPARE(dir.canonicalPath().toLower(), canonicalPath.toLower());
+#else
+ QCOMPARE(dir.canonicalPath(), canonicalPath);
+#endif
+
+ QDir::setCurrent(oldpwd);
+}
+
+void tst_QDir::current_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("currentDir");
+ QString appPath = SRCDIR;
+ if (appPath.isEmpty())
+ appPath = QCoreApplication::instance()->applicationDirPath();
+ else
+ appPath.chop(1); // remove the ending slash
+#if defined Q_WS_WIN
+ if (appPath.endsWith("release", Qt::CaseInsensitive))
+ appPath = appPath.left(appPath.length()-8);
+ else if (appPath.endsWith("debug", Qt::CaseInsensitive))
+ appPath = appPath.left(appPath.length()-6);
+#endif
+
+ QTest::newRow("startup") << QString() << appPath;
+ QTest::newRow("relPath") << "testData" << appPath + "/testData";
+#ifndef Q_WS_WIN
+ QTest::newRow("absPath") << appPath + "/testData" << appPath + "/testData";
+#else
+ QTest::newRow("absPath") << appPath + "\\testData" << appPath + "/testData";
+#endif
+ QTest::newRow("nonexistant") << "testd" << QString();
+
+ QTest::newRow("parent") << ".." << appPath.left(appPath.lastIndexOf('/'));
+}
+
+void tst_QDir::current()
+{
+ QString oldDir = QDir::currentPath();
+ QString appPath = SRCDIR;
+ if (appPath.isEmpty())
+ appPath = QCoreApplication::instance()->applicationDirPath();
+ QDir::setCurrent(appPath);
+ QFETCH(QString, path);
+ QFETCH(QString, currentDir);
+
+ if (!path.isEmpty()) {
+ bool b = QDir::setCurrent(path);
+ // If path is non existent, then setCurrent should be false (currentDir is empty in testData)
+ QVERIFY(b == !currentDir.isEmpty());
+ }
+ if (!currentDir.isEmpty()) {
+ QDir newCurrent = QDir::current();
+ QDir::setCurrent(oldDir);
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QCOMPARE(newCurrent.absolutePath().toLower(), currentDir.toLower());
+#else
+ QCOMPARE(newCurrent.absolutePath(), currentDir);
+#endif
+ }
+
+ QDir::setCurrent(oldDir);
+}
+
+void tst_QDir::cd_data()
+{
+ QTest::addColumn<QString>("startDir");
+ QTest::addColumn<QString>("cdDir");
+ QTest::addColumn<bool>("successExpected");
+ QTest::addColumn<QString>("newDir");
+
+ QString appPath = QDir::currentPath();
+ int index = appPath.lastIndexOf("/");
+ QTest::newRow("cdUp") << QDir::currentPath() << ".." << true << appPath.left(index==0?1:index);
+ QTest::newRow("noChange") << QDir::currentPath() << "." << true << appPath;
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN) // on windows QDir::root() is usually c:/ but cd "/" will not force it to be root
+ QTest::newRow("absolute") << QDir::currentPath() << "/" << true << "/";
+#else
+ QTest::newRow("absolute") << QDir::currentPath() << "/" << true << QDir::root().absolutePath();
+#endif
+ QTest::newRow("non existant") << "." << "../anonexistingdir" << false << QDir::currentPath();
+ QTest::newRow("self") << "." << (QString("../") + QFileInfo(QDir::currentPath()).fileName()) << true << QDir::currentPath();
+ QTest::newRow("file") << "." << "qdir.pro" << false << "";
+}
+
+void tst_QDir::cd()
+{
+ QFETCH(QString, startDir);
+ QFETCH(QString, cdDir);
+ QFETCH(bool, successExpected);
+ QFETCH(QString, newDir);
+
+ QDir d = startDir;
+ bool notUsed = d.exists(); // make sure we cache this before so we can see if 'cd' fails to flush this
+ Q_UNUSED(notUsed);
+ QCOMPARE(d.cd(cdDir), successExpected);
+ if (successExpected)
+ QCOMPARE(d.absolutePath(), newDir);
+}
+
+void tst_QDir::setNameFilters_data()
+{
+ // Effectively copied from entryList2() test
+
+ QTest::addColumn<QString>("dirName"); // relative from current path or abs
+ QTest::addColumn<QStringList>("nameFilters");
+ QTest::addColumn<QStringList>("expected");
+
+ QString appPath = SRCDIR;
+ if (appPath.isEmpty())
+ appPath = QCoreApplication::instance()->applicationDirPath();
+ if (!appPath.endsWith("/"))
+ appPath.append("/");
+
+ QTest::newRow("spaces1") << appPath + "testdir/spaces" << QStringList("*. bar")
+ << QStringList("foo. bar");
+ QTest::newRow("spaces2") << appPath + "testdir/spaces" << QStringList("*.bar")
+ << QStringList("foo.bar");
+ QTest::newRow("spaces3") << appPath + "testdir/spaces" << QStringList("foo.*")
+ << QString("foo. bar,foo.bar").split(",");
+ QTest::newRow("files1") << appPath + "testdir/dir" << QString("*r.cpp *.pro").split(" ")
+ << QString("qdir.pro,qrc_qdir.cpp,tst_qdir.cpp").split(",");
+ QTest::newRow("resources1") << QString(":/tst_qdir/resources/entryList") << QStringList("*.data")
+ << QString("file1.data,file2.data,file3.data").split(',');
+}
+
+void tst_QDir::setNameFilters()
+{
+ QFETCH(QString, dirName);
+ QFETCH(QStringList, nameFilters);
+ QFETCH(QStringList, expected);
+
+ QDir dir(dirName);
+ QVERIFY(dir.exists());
+
+ dir.setNameFilters(nameFilters);
+ QStringList actual = dir.entryList();
+ int max = qMin(actual.count(), expected.count());
+
+ for (int i=0; i<max; ++i)
+ QCOMPARE(actual[i], expected[i]);
+ QCOMPARE(actual.count(), expected.count());
+}
+
+void
+tst_QDir::cleanPath_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("data0") << "/Users/sam/troll/qt4.0//.." << "/Users/sam/troll";
+ QTest::newRow("data1") << "/Users/sam////troll/qt4.0//.." << "/Users/sam/troll";
+ QTest::newRow("data2") << "/" << "/";
+ QTest::newRow("data3") << QDir::cleanPath("../.") << "..";
+ QTest::newRow("data4") << QDir::cleanPath("../..") << "../..";
+#if !defined(Q_OS_WINCE)
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("data5") << "d:\\a\\bc\\def\\.." << "d:/a/bc";
+ QTest::newRow("data6") << "d:\\a\\bc\\def\\../../.." << "d:/";
+#else
+ QTest::newRow("data5") << "d:\\a\\bc\\def\\.." << "d:\\a\\bc\\def\\..";
+ QTest::newRow("data6") << "d:\\a\\bc\\def\\../../.." << "d:\\a\\bc\\def\\../../..";
+#endif
+#endif
+ QTest::newRow("data7") << ".//file1.txt" << "file1.txt";
+ QTest::newRow("data8") << "/foo/bar/..//file1.txt" << "/foo/file1.txt";
+ QTest::newRow("data9") << "//" << "/";
+#if !defined(Q_OS_WINCE)
+#if defined Q_OS_WIN
+ QTest::newRow("data10") << "c:\\" << "c:/";
+#else
+ QTest::newRow("data10") << "/:/" << "/:";
+#endif
+#endif
+
+ QTest::newRow("resource0") << ":/prefix/foo.bar" << ":/prefix/foo.bar";
+ QTest::newRow("resource1") << "://prefix/..//prefix/foo.bar" << ":/prefix/foo.bar";
+}
+
+
+void
+tst_QDir::cleanPath()
+{
+ QFETCH(QString, path);
+ QFETCH(QString, expected);
+ QString cleaned = QDir::cleanPath(path);
+ QCOMPARE(cleaned, expected);
+}
+
+void tst_QDir::absoluteFilePath_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QString>("expectedFilePath");
+
+ QTest::newRow("0") << "/etc" << "/passwd" << "/passwd";
+ QTest::newRow("1") << "/etc" << "passwd" << "/etc/passwd";
+ QTest::newRow("2") << "/" << "passwd" << "/passwd";
+ QTest::newRow("3") << "relative" << "path" << QDir::currentPath() + "/relative/path";
+ QTest::newRow("4") << "" << "" << QDir::currentPath();
+ QTest::newRow("resource") << ":/prefix" << "foo.bar" << ":/prefix/foo.bar";
+}
+
+void tst_QDir::absoluteFilePath()
+{
+ QFETCH(QString, path);
+ QFETCH(QString, fileName);
+ QFETCH(QString, expectedFilePath);
+
+ QDir dir(path);
+ QString absFilePath = dir.absoluteFilePath(fileName);
+ QCOMPARE(absFilePath, expectedFilePath);
+}
+
+void tst_QDir::absolutePath_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("expectedPath");
+
+ QTest::newRow("0") << "/machine/share/dir1" << "/machine/share/dir1";
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("1") << "\\machine\\share\\dir1" << "/machine/share/dir1";
+# if !defined(Q_OS_SYMBIAN)
+ QTest::newRow("2") << "//machine/share/dir1" << "//machine/share/dir1";
+ QTest::newRow("3") << "\\\\machine\\share\\dir1" << "//machine/share/dir1";
+# endif
+ QTest::newRow("4") << "c:/machine/share/dir1" << "c:/machine/share/dir1";
+ QTest::newRow("5") << "c:\\machine\\share\\dir1" << "c:/machine/share/dir1";
+#endif
+ //test dirty paths are cleaned (QTBUG-19995)
+ QTest::newRow("/home/qt/.") << QDir::rootPath() + "home/qt/." << QDir::rootPath() + "home/qt";
+ QTest::newRow("/system/data/../config") << QDir::rootPath() + "system/data/../config" << QDir::rootPath() + "system/config";
+ QTest::newRow("//home//qt/") << QDir::rootPath() + "/home//qt/" << QDir::rootPath() + "home/qt";
+ QTest::newRow("foo/../bar") << "foo/../bar" << QDir::currentPath() + "/bar";
+ QTest::newRow("resource") << ":/prefix/foo.bar" << ":/prefix/foo.bar";
+}
+
+void tst_QDir::absolutePath()
+{
+ QFETCH(QString, path);
+ QFETCH(QString, expectedPath);
+
+ QDir dir(path);
+ QCOMPARE(dir.absolutePath(), expectedPath);
+}
+
+void tst_QDir::relativeFilePath_data()
+{
+ QTest::addColumn<QString>("dir");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("0") << "/foo/bar" << "ding.txt" << "ding.txt";
+ QTest::newRow("1") << "/foo/bar" << "ding/dong.txt" << "ding/dong.txt";
+ QTest::newRow("2") << "/foo/bar" << "../ding/dong.txt" << "../ding/dong.txt";
+
+ QTest::newRow("3") << "/foo/bar" << "/foo/bar/ding.txt" << "ding.txt";
+ QTest::newRow("4") << "/foo/bar/" << "/foo/bar/ding/dong.txt" << "ding/dong.txt";
+ QTest::newRow("5") << "/foo/bar/" << "/ding/dong.txt" << "../../ding/dong.txt";
+
+ QTest::newRow("6") << "/" << "/ding/dong.txt" << "ding/dong.txt";
+ QTest::newRow("7") << "/" << "/ding/" << "ding";
+ QTest::newRow("8") << "/" << "/ding//" << "ding";
+ QTest::newRow("9") << "/" << "/ding/../dong" << "dong";
+ QTest::newRow("10") << "/" << "/ding/../../../../dong" << "../../../dong";
+
+ QTest::newRow("11") << "" << "" << "";
+
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("12") << "C:/foo/bar" << "ding" << "ding";
+ QTest::newRow("13") << "C:/foo/bar" << "C:/ding/dong" << "../../ding/dong";
+ QTest::newRow("14") << "C:/foo/bar" << "/ding/dong" << "../../ding/dong";
+ QTest::newRow("15") << "C:/foo/bar" << "D:/ding/dong" << "D:/ding/dong";
+ QTest::newRow("16") << "C:" << "C:/ding/dong" << "ding/dong";
+ QTest::newRow("17") << "C:/" << "C:/ding/dong" << "ding/dong";
+ QTest::newRow("18") << "C:" << "C:" << "";
+ QTest::newRow("19") << "C:/" << "C:" << "";
+ QTest::newRow("20") << "C:" << "C:/" << "";
+ QTest::newRow("21") << "C:/" << "C:/" << "";
+ QTest::newRow("22") << "C:" << "C:file.txt" << "file.txt";
+ QTest::newRow("23") << "C:/" << "C:file.txt" << "file.txt";
+ QTest::newRow("24") << "C:" << "C:/file.txt" << "file.txt";
+ QTest::newRow("25") << "C:/" << "C:/file.txt" << "file.txt";
+ QTest::newRow("26") << "C:" << "D:" << "D:";
+ QTest::newRow("27") << "C:" << "D:/" << "D:/";
+ QTest::newRow("28") << "C:/" << "D:" << "D:";
+ QTest::newRow("29") << "C:/" << "D:/" << "D:/";
+# if !defined(Q_OS_SYMBIAN)
+ QTest::newRow("30") << "C:/foo/bar" << "//anotherHost/foo/bar" << "//anotherHost/foo/bar";
+ QTest::newRow("31") << "//anotherHost/foo" << "//anotherHost/foo/bar" << "bar";
+ QTest::newRow("32") << "//anotherHost/foo" << "bar" << "bar";
+ QTest::newRow("33") << "//anotherHost/foo" << "C:/foo/bar" << "C:/foo/bar";
+# endif
+#endif
+
+ QTest::newRow("resource0") << ":/prefix" << "foo.bar" << "foo.bar";
+ QTest::newRow("resource1") << ":/prefix" << ":/prefix/foo.bar" << "foo.bar";
+}
+
+void tst_QDir::relativeFilePath()
+{
+ QFETCH(QString, dir);
+ QFETCH(QString, path);
+ QFETCH(QString, expected);
+
+ QCOMPARE(QDir(dir).relativeFilePath(path), expected);
+}
+
+void tst_QDir::filePath_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QString>("expectedFilePath");
+
+ QTest::newRow("0") << "/etc" << "/passwd" << "/passwd";
+ QTest::newRow("1") << "/etc" << "passwd" << "/etc/passwd";
+ QTest::newRow("2") << "/" << "passwd" << "/passwd";
+ QTest::newRow("3") << "relative" << "path" << "relative/path";
+ QTest::newRow("4") << "" << "" << ".";
+ QTest::newRow("resource") << ":/prefix" << "foo.bar" << ":/prefix/foo.bar";
+}
+
+void tst_QDir::filePath()
+{
+ QFETCH(QString, path);
+ QFETCH(QString, fileName);
+ QFETCH(QString, expectedFilePath);
+
+ QDir dir(path);
+ QString absFilePath = dir.filePath(fileName);
+ QCOMPARE(absFilePath, expectedFilePath);
+}
+
+void tst_QDir::remove()
+{
+ QFile f("remove-test");
+ f.open(QIODevice::WriteOnly);
+ f.close();
+ QDir dir;
+ QVERIFY(dir.remove("remove-test"));
+ QVERIFY(!dir.remove("/remove-test"));
+ QTest::ignoreMessage(QtWarningMsg, "QDir::remove: Empty or null file name");
+ QVERIFY(!dir.remove(""));
+}
+
+void tst_QDir::rename()
+{
+ QFile f("rename-test");
+ f.open(QIODevice::WriteOnly);
+ f.close();
+ QDir dir;
+ QVERIFY(dir.rename("rename-test", "rename-test-renamed"));
+ QVERIFY(dir.rename("rename-test-renamed", "rename-test"));
+#if defined(Q_OS_MAC)
+ QVERIFY(!dir.rename("rename-test", "/etc/rename-test-renamed"));
+#elif defined(Q_OS_SYMBIAN)
+ QVERIFY(!dir.rename("rename-test", "/resource/rename-test-renamed"));
+#elif !defined(Q_OS_WIN)
+ // on windows this is possible - maybe make the test a bit better
+ QVERIFY(!dir.rename("rename-test", "/rename-test-renamed"));
+#endif
+ QTest::ignoreMessage(QtWarningMsg, "QDir::rename: Empty or null file name(s)");
+ QVERIFY(!dir.rename("rename-test", ""));
+ QTest::ignoreMessage(QtWarningMsg, "QDir::rename: Empty or null file name(s)");
+ QVERIFY(!dir.rename("", "rename-test-renamed"));
+ QVERIFY(!dir.rename("some-file-that-does-not-exist", "rename-test-renamed"));
+
+ QVERIFY(dir.remove("rename-test"));
+}
+
+void tst_QDir::exists2_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("exists");
+
+ QTest::newRow("0") << "." << true;
+ QTest::newRow("1") << "/" << true;
+ QTest::newRow("2") << "" << false;
+ QTest::newRow("3") << "testData" << true;
+ QTest::newRow("4") << "/testData" << false;
+ QTest::newRow("5") << "tst_qdir.cpp" << true;
+ QTest::newRow("6") << "/resources.cpp" << false;
+ QTest::newRow("resource0") << ":/prefix/foo.bar" << false;
+ QTest::newRow("resource1") << ":/tst_qdir/resources/entryList/file1.data" << true;
+}
+
+void tst_QDir::exists2()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, exists);
+
+ QString oldpwd = QDir::currentPath();
+ if (strlen(SRCDIR) > 0)
+ QDir::setCurrent(SRCDIR);
+
+ if (path.isEmpty())
+ QTest::ignoreMessage(QtWarningMsg, "QDir::exists: Empty or null file name");
+
+ QDir dir;
+ if (exists)
+ QVERIFY(dir.exists(path));
+ else
+ QVERIFY(!dir.exists(path));
+
+ QDir::setCurrent(oldpwd);
+}
+
+void tst_QDir::dirName_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("dirName");
+
+ QTest::newRow("slash0") << "c:/winnt/system32" << "system32";
+ QTest::newRow("slash1") << "/winnt/system32" << "system32";
+ QTest::newRow("slash2") << "c:/winnt/system32/kernel32.dll" << "kernel32.dll";
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("bslash0") << "c:\\winnt\\system32" << "system32";
+ QTest::newRow("bslash1") << "\\winnt\\system32" << "system32";
+ QTest::newRow("bslash2") << "c:\\winnt\\system32\\kernel32.dll" << "kernel32.dll";
+#endif
+
+ QTest::newRow("resource") << ":/prefix" << "prefix";
+}
+
+void tst_QDir::dirName()
+{
+ QFETCH(QString, path);
+ QFETCH(QString, dirName);
+
+ QDir dir(path);
+ QCOMPARE(dir.dirName(), dirName);
+}
+
+void tst_QDir::operator_eq()
+{
+ QDir dir1(".");
+ dir1 = dir1;
+ dir1.setPath("..");
+}
+
+void tst_QDir::dotAndDotDot()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("WinCE and Symbian do not have . nor ..", SkipAll);
+#else
+ QDir dir(QString(SRCDIR "testdir/"));
+ QStringList entryList = dir.entryList(QDir::Dirs);
+ QCOMPARE(entryList, QStringList() << QString(".") << QString("..") << QString("dir") << QString("spaces"));
+ entryList = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
+ QCOMPARE(entryList, QStringList() << QString("dir") << QString("spaces"));
+#endif
+}
+
+void tst_QDir::homePath()
+{
+ QDir homeDir = QDir::home();
+ QString strHome = QDir::homePath();
+
+ // docs say that homePath() is an absolute path
+ QCOMPARE(strHome, homeDir.absolutePath());
+ QVERIFY(QDir::isAbsolutePath(strHome));
+
+#ifdef Q_OS_UNIX
+ if (strHome.length() > 1) // root dir = "/"
+ QVERIFY(!strHome.endsWith('/'));
+#elif defined(Q_OS_WIN)
+ if (strHome.length() > 3) // root dir = "c:/"; "//" is not really valid...
+ QVERIFY(!strHome.endsWith('/'));
+#endif
+
+ QStringList entries = homeDir.entryList();
+ for (int i = 0; i < entries.count(); ++i) {
+ QFileInfo fi(QDir::homePath() + "/" + entries[i]);
+ QCOMPARE(fi.exists(), true);
+ }
+}
+
+void tst_QDir::tempPath()
+{
+ QDir dir = QDir::temp();
+ QString path = QDir::tempPath();
+
+ // docs say that tempPath() is an absolute path
+ QCOMPARE(path, dir.absolutePath());
+ QVERIFY(QDir::isAbsolutePath(path));
+
+#ifdef Q_OS_UNIX
+ if (path.length() > 1) // root dir = "/"
+ QVERIFY(!path.endsWith('/'));
+#elif defined(Q_OS_WIN)
+ if (path.length() > 3) // root dir = "c:/"; "//" is not really valid...
+ QVERIFY(!path.endsWith('/'));
+#endif
+}
+
+void tst_QDir::rootPath()
+{
+ QDir dir = QDir::root();
+ QString path = QDir::rootPath();
+
+ // docs say that tempPath() is an absolute path
+ QCOMPARE(path, dir.absolutePath());
+ QVERIFY(QDir::isAbsolutePath(path));
+
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ QCOMPARE(path, QString("/"));
+#endif
+}
+
+void tst_QDir::nativeSeparators()
+{
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QCOMPARE(QDir::toNativeSeparators(QLatin1String("/")), QString("\\"));
+ QCOMPARE(QDir::toNativeSeparators(QLatin1String("\\")), QString("\\"));
+ QCOMPARE(QDir::fromNativeSeparators(QLatin1String("/")), QString("/"));
+ QCOMPARE(QDir::fromNativeSeparators(QLatin1String("\\")), QString("/"));
+#else
+ QCOMPARE(QDir::toNativeSeparators(QLatin1String("/")), QString("/"));
+ QCOMPARE(QDir::toNativeSeparators(QLatin1String("\\")), QString("\\"));
+ QCOMPARE(QDir::fromNativeSeparators(QLatin1String("/")), QString("/"));
+ QCOMPARE(QDir::fromNativeSeparators(QLatin1String("\\")), QString("\\"));
+#endif
+}
+
+void tst_QDir::searchPaths_data()
+{
+ QTest::addColumn<QString>("filename");
+ QTest::addColumn<QString>("searchPathPrefixes");
+ QTest::addColumn<QString>("searchPaths");
+ QTest::addColumn<QString>("expectedAbsolutePath");
+
+ QString srcdir = SRCDIR;
+ if (srcdir.isEmpty())
+ srcdir = QDir::currentPath();
+ else
+ srcdir.chop(1); // remove ending slash
+ QString searchDir = srcdir + "/searchdir";
+
+ // sanity
+ QTest::newRow("nopath") << "picker.png" << QString() << QString() << QString();
+ QTest::newRow("emptysearchpath") << "subdir1/picker.png" << QString() << QString() << QString();
+ QTest::newRow("searchpathwithoutprefix") << SRCDIR "searchdir/subdir1/picker.png" << QString("searchpath") << QString("searchdir") << (searchDir+"/subdir1/picker.png");
+
+ // new
+ QTest::newRow("novalidsearchpath") << "searchpath:subdir1/picker.png" << QString() << QString() << QString();
+ QTest::newRow("invalidsearchpath") << "searchpath:subdir1/picker.png" << QString("invalid") << QString("invalid") << QString();
+ QTest::newRow("onlyvalidsearchpath") << "searchpath:subdir1/picker.png" << QString("searchpath") << QString(SRCDIR "searchdir") << (searchDir+"/subdir1/picker.png");
+ QTest::newRow("validandinvalidsearchpath") << "searchpath:subdir1/picker.png" << QString("invalid;searchpath") << QString("invalid;" SRCDIR "searchdir") << (searchDir+"/subdir1/picker.png");
+ QTest::newRow("precedence1") << "searchpath:picker.png" << QString("invalid;searchpath") << QString("invalid;" SRCDIR "searchdir/subdir1," SRCDIR "searchdir/subdir2") << (searchDir+"/subdir1/picker.png");
+ QTest::newRow("precedence2") << "searchpath:picker.png" << QString("invalid;searchpath") << QString("invalid;" SRCDIR "searchdir/subdir2," SRCDIR "searchdir/subdir1") << (searchDir+"/subdir2/picker.png");
+ QTest::newRow("precedence3") << "searchpath2:picker.png" << QString("searchpath1;searchpath2") << QString(SRCDIR "searchdir/subdir1;" SRCDIR "searchdir/subdir2") << (searchDir+"/subdir2/picker.png");
+
+ // re
+}
+
+void tst_QDir::searchPaths()
+{
+ QFETCH(QString, filename);
+ QFETCH(QString, searchPathPrefixes);
+ QStringList searchPathPrefixList = searchPathPrefixes.split(";", QString::SkipEmptyParts);
+ QFETCH(QString, searchPaths);
+ QStringList searchPathsList = searchPaths.split(";", QString::SkipEmptyParts);
+ QFETCH(QString, expectedAbsolutePath);
+ bool exists = !expectedAbsolutePath.isEmpty();
+
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QDir::setSearchPaths(searchPathPrefixList.at(i), searchPathsList.at(i).split(","));
+ }
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)) == searchPathsList.at(i).split(","));
+ }
+
+ QCOMPARE(QFile(filename).exists(), exists);
+ QCOMPARE(QFileInfo(filename).exists(), exists);
+
+ if (exists) {
+ QCOMPARE(QFileInfo(filename).absoluteFilePath(), expectedAbsolutePath);
+ }
+
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QDir::setSearchPaths(searchPathPrefixList.at(i), QStringList());
+ }
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)).isEmpty());
+ }
+
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ foreach (QString path, searchPathsList.at(i).split(",")) {
+ QDir::addSearchPath(searchPathPrefixList.at(i), path);
+ }
+ }
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)) == searchPathsList.at(i).split(","));
+ }
+
+ QCOMPARE(QFile(filename).exists(), exists);
+ QCOMPARE(QFileInfo(filename).exists(), exists);
+
+ if (exists) {
+ QCOMPARE(QFileInfo(filename).absoluteFilePath(), expectedAbsolutePath);
+ }
+
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QDir::setSearchPaths(searchPathPrefixList.at(i), QStringList());
+ }
+ for (int i = 0; i < searchPathPrefixList.count(); ++i) {
+ QVERIFY(QDir::searchPaths(searchPathPrefixList.at(i)).isEmpty());
+ }
+}
+
+void tst_QDir::entryListWithSearchPaths()
+{
+ QDir realDir(":/tst_qdir/resources/entryList");
+ QVERIFY(realDir.exists());
+ QVERIFY(!realDir.entryList().isEmpty());
+ QVERIFY(realDir.entryList().contains("file3.data"));
+
+ QDir::setSearchPaths("searchpath", QStringList(":/tst_qdir/resources"));
+ QDir dir("searchpath:entryList/");
+ QCOMPARE(dir.path(), QString(":/tst_qdir/resources/entryList"));
+ QVERIFY(dir.exists());
+ QStringList entryList = dir.entryList();
+ QVERIFY(entryList.contains("file3.data"));
+}
+
+void tst_QDir::longFileName_data()
+{
+ QTest::addColumn<int>("length");
+
+ QTest::newRow("128") << 128;
+ QTest::newRow("256") << 256;
+ QTest::newRow("512") << 512;
+ QTest::newRow("1024") << 1024;
+ QTest::newRow("2048") << 2048;
+ QTest::newRow("4096") << 4096;
+}
+
+void tst_QDir::longFileName()
+{
+ QFETCH(int, length);
+
+ QString fileName(length, QLatin1Char('a'));
+ fileName += QLatin1String(".txt");
+
+ QFile file(fileName);
+ if (!file.open(QFile::WriteOnly))
+ QSKIP("Cannot create long file names", SkipAll);
+
+ QFile file2(fileName);
+ QVERIFY(file2.open(QFile::ReadOnly));
+
+ QVERIFY(QDir().entryList().contains(fileName));
+
+ file.close();
+ file2.close();
+
+ QFile::remove(fileName);
+}
+
+void tst_QDir::updateFileLists()
+{
+ // Test setup
+
+ FileSystem fs;
+
+ QVERIFY( fs.createDirectory("update-file-lists") );
+ QVERIFY( fs.createFile("update-file-lists/file1.txt") );
+ QVERIFY( fs.createFile("update-file-lists/file2.doc") );
+
+ QVERIFY( fs.createDirectory("update-file-lists/sub-dir1") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir1/file3.txt") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir1/file4.doc") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir1/file5.txt") );
+
+ QVERIFY( fs.createDirectory("update-file-lists/sub-dir2") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir2/file6.txt") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir2/file7.txt") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir2/file8.doc") );
+ QVERIFY( fs.createFile("update-file-lists/sub-dir2/file9.doc") );
+
+ // Actual test
+
+ QDir dir("update-file-lists");
+
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE)
+ //no . and .. on these OS.
+ QCOMPARE(dir.count(), uint(4));
+ QCOMPARE(dir.entryList().size(), 4);
+ QCOMPARE(dir.entryInfoList().size(), 4);
+#else
+ QCOMPARE(dir.count(), uint(6));
+ QCOMPARE(dir.entryList().size(), 6);
+ QCOMPARE(dir.entryInfoList().size(), 6);
+#endif
+
+ dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot);
+
+ QCOMPARE(dir.entryList().size(), 4);
+ QCOMPARE(dir.count(), uint(4));
+ QCOMPARE(dir.entryInfoList().size(), 4);
+
+ dir.setPath("update-file-lists/sub-dir1");
+
+ QCOMPARE(dir.entryInfoList().size(), 3);
+ QCOMPARE(dir.count(), uint(3));
+ QCOMPARE(dir.entryList().size(), 3);
+
+ dir.setNameFilters(QStringList("*.txt"));
+
+ QCOMPARE(dir.entryInfoList().size(), 2);
+ QCOMPARE(dir.entryList().size(), 2);
+ QCOMPARE(dir.count(), uint(2));
+
+ dir.setPath("update-file-lists");
+ dir = QDir(dir.path(),
+ "*.txt",
+ QDir::Name | QDir::DirsLast,
+ QDir::AllEntries | QDir::AllDirs | QDir::NoDotAndDotDot);
+
+ QCOMPARE(dir.count(), uint(3));
+ QCOMPARE(dir.entryList().size(), 3);
+ QCOMPARE(dir.entryInfoList().size(), 3);
+ QCOMPARE(dir.entryList(), QStringList() << "file1.txt" << "sub-dir1" << "sub-dir2");
+
+ dir.setSorting(QDir::Name | QDir::DirsFirst);
+
+ QCOMPARE(dir.count(), uint(3));
+ QCOMPARE(dir.entryList().size(), 3);
+ QCOMPARE(dir.entryInfoList().size(), 3);
+ QCOMPARE(dir.entryList(), QStringList() << "sub-dir1" << "sub-dir2" << "file1.txt");
+
+ {
+ QVERIFY( fs.createFile("update-file-lists/extra-file.txt") );
+
+ QDir dir2(dir);
+
+ QCOMPARE(dir2.count(), uint(3));
+ QCOMPARE(dir2.entryList().size(), 3);
+ QCOMPARE(dir2.entryInfoList().size(), 3);
+ QCOMPARE(dir2.entryList(), QStringList() << "sub-dir1" << "sub-dir2" << "file1.txt");
+
+ dir2.refresh();
+
+ QCOMPARE(dir2.count(), uint(4));
+ QCOMPARE(dir2.entryList().size(), 4);
+ QCOMPARE(dir2.entryInfoList().size(), 4);
+ QCOMPARE(dir2.entryList(), QStringList() << "sub-dir1" << "sub-dir2" << "extra-file.txt" << "file1.txt");
+ }
+
+ QCOMPARE(dir.count(), uint(3));
+ QCOMPARE(dir.entryList().size(), 3);
+ QCOMPARE(dir.entryInfoList().size(), 3);
+ QCOMPARE(dir.entryList(), QStringList() << "sub-dir1" << "sub-dir2" << "file1.txt");
+}
+
+void tst_QDir::detachingOperations()
+{
+ QString const defaultPath(".");
+ QStringList const defaultNameFilters = QStringList("*");
+ QDir::SortFlags const defaultSorting = QDir::Name | QDir::IgnoreCase;
+ QDir::Filters const defaultFilter = QDir::AllEntries;
+
+ QString const path1("..");
+ QString const path2("./foo");
+ QStringList const nameFilters = QStringList(QString("*.txt"));
+ QDir::SortFlags const sorting = QDir::Name | QDir::DirsLast | QDir::Reversed;
+ QDir::Filters const filter = QDir::Writable;
+
+ QDir dir1;
+
+ QCOMPARE(dir1.path(), defaultPath);
+ QCOMPARE(dir1.filter(), defaultFilter);
+ QCOMPARE(dir1.nameFilters(), defaultNameFilters);
+ QCOMPARE(dir1.sorting(), defaultSorting);
+
+ dir1.setPath(path1);
+ QCOMPARE(dir1.path(), path1);
+ QCOMPARE(dir1.filter(), defaultFilter);
+ QCOMPARE(dir1.nameFilters(), defaultNameFilters);
+ QCOMPARE(dir1.sorting(), defaultSorting);
+
+ dir1.setFilter(filter);
+ QCOMPARE(dir1.path(), path1);
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), defaultNameFilters);
+ QCOMPARE(dir1.sorting(), defaultSorting);
+
+ dir1.setNameFilters(nameFilters);
+ QCOMPARE(dir1.path(), path1);
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), nameFilters);
+ QCOMPARE(dir1.sorting(), defaultSorting);
+
+ dir1.setSorting(sorting);
+ QCOMPARE(dir1.path(), path1);
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), nameFilters);
+ QCOMPARE(dir1.sorting(), sorting);
+
+ dir1.setPath(path2);
+ QCOMPARE(dir1.path(), path2);
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), nameFilters);
+ QCOMPARE(dir1.sorting(), sorting);
+
+ {
+ QDir dir2(dir1);
+ QCOMPARE(dir2.path(), path2);
+ QCOMPARE(dir2.filter(), filter);
+ QCOMPARE(dir2.nameFilters(), nameFilters);
+ QCOMPARE(dir2.sorting(), sorting);
+ }
+
+ {
+ QDir dir2;
+ QCOMPARE(dir2.path(), defaultPath);
+ QCOMPARE(dir2.filter(), defaultFilter);
+ QCOMPARE(dir2.nameFilters(), defaultNameFilters);
+ QCOMPARE(dir2.sorting(), defaultSorting);
+
+ dir2 = dir1;
+ QCOMPARE(dir2.path(), path2);
+ QCOMPARE(dir2.filter(), filter);
+ QCOMPARE(dir2.nameFilters(), nameFilters);
+ QCOMPARE(dir2.sorting(), sorting);
+
+ dir2 = path1;
+ QCOMPARE(dir2.path(), path1);
+ QCOMPARE(dir2.filter(), filter);
+ QCOMPARE(dir2.nameFilters(), nameFilters);
+ QCOMPARE(dir2.sorting(), sorting);
+ }
+
+ dir1.refresh();
+ QCOMPARE(dir1.path(), path2);
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), nameFilters);
+ QCOMPARE(dir1.sorting(), sorting);
+
+ QString const currentPath = QDir::currentPath();
+ QVERIFY(dir1.cd(currentPath));
+ QCOMPARE(dir1.path(), currentPath);
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), nameFilters);
+ QCOMPARE(dir1.sorting(), sorting);
+
+ QVERIFY(dir1.cdUp());
+ QCOMPARE(dir1.filter(), filter);
+ QCOMPARE(dir1.nameFilters(), nameFilters);
+ QCOMPARE(dir1.sorting(), sorting);
+}
+
+void tst_QDir::testCaching()
+{
+ QString dirName = QString::fromLatin1("testCaching");
+ QDir::current().rmdir(dirName); // cleanup a previous run.
+ QDir dir(dirName);
+ QVERIFY(!dir.exists());
+ QDir::current().mkdir(dirName);
+ QVERIFY(QDir(dirName).exists()); // dir exists
+ QVERIFY(dir.exists()); // QDir doesn't cache the 'exist' between calls.
+}
+
+void tst_QDir::isRoot_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isRoot");
+
+ QString test = QDir::rootPath();
+ QTest::newRow(QString("rootPath " + test).toLatin1()) << test << true;
+ test = QDir::rootPath().append("./");
+ QTest::newRow(QString("./ appended " + test).toLatin1()) << test << false;
+
+ test = QDir(QDir::rootPath().append("./")).canonicalPath();
+#ifdef Q_OS_MAC
+ // On Mac OS X 10.5 and earlier, canonicalPath depends on cleanPath which
+ // is itself very broken and fundamentally wrong on "/./", which this would
+ // exercise
+ if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_6)
+#endif
+ QTest::newRow(QString("canonicalPath " + test).toLatin1()) << test << true;
+
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ test = QDir::rootPath().left(2);
+ QTest::newRow(QString("drive relative " + test).toLatin1()) << test << false;
+#endif
+
+ QTest::newRow("resources root") << ":/" << true;
+ QTest::newRow("resources nonroot") << ":/entrylist" << false;
+}
+
+void tst_QDir::isRoot()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, isRoot);
+
+ QDir dir(path);
+ QCOMPARE(dir.isRoot(),isRoot);
+}
+
+#ifndef QT_NO_REGEXP
+void tst_QDir::match_data()
+{
+ QTest::addColumn<QString>("filter");
+ QTest::addColumn<QString>("filename");
+ QTest::addColumn<bool>("match");
+
+ QTest::newRow("single, matching") << "*.cpp" << "tst_qdir.cpp" << true;
+ QTest::newRow("single, not matching") << "*.cpp" << "tst_qdir.h" << false;
+ QTest::newRow("multi, matching") << "*.cpp;*.h" << "tst_qdir.cpp" << true;
+ QTest::newRow("multi, matching2") << "*.cpp;*.h" << "tst_qdir.h" << true;
+ QTest::newRow("multi, not matching") << "*.cpp;*.h" << "readme.txt" << false;
+}
+
+void tst_QDir::match()
+{
+ QFETCH(QString, filter);
+ QFETCH(QString, filename);
+ QFETCH(bool, match);
+
+ QCOMPARE(QDir::match(filter, filename), match);
+ QCOMPARE(QDir::match(filter.split(QLatin1Char(';')), filename), match);
+}
+#endif
+
+void tst_QDir::drives()
+{
+ QFileInfoList list(QDir::drives());
+#if defined(Q_OS_WIN)
+ QVERIFY(list.count() >= 1); //system
+ QLatin1Char systemdrive('c');
+#elif defined(Q_OS_SYMBIAN)
+ QVERIFY(list.count() >= 2); //system, rom
+ QLatin1Char romdrive('z');
+ QLatin1Char systemdrive('a' + int(RFs::GetSystemDrive()));
+#endif
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QVERIFY(list.count() <= 26);
+ bool foundsystem = false;
+#ifdef Q_OS_SYMBIAN
+ bool foundrom = false;
+#endif
+ foreach (QFileInfo fi, list) {
+ QCOMPARE(fi.absolutePath().size(), 3); //"x:/"
+ QCOMPARE(fi.absolutePath().at(1), QChar(QLatin1Char(':')));
+ QCOMPARE(fi.absolutePath().at(2), QChar(QLatin1Char('/')));
+ if (fi.absolutePath().at(0).toLower() == systemdrive)
+ foundsystem = true;
+#ifdef Q_OS_SYMBIAN
+ if (fi.absolutePath().at(0).toLower() == romdrive)
+ foundrom = true;
+#endif
+ }
+ QCOMPARE(foundsystem, true);
+#ifdef Q_OS_SYMBIAN
+ QCOMPARE(foundrom, true);
+#endif
+#else
+ QCOMPARE(list.count(), 1); //root
+ QCOMPARE(list.at(0).absolutePath(), QLatin1String("/"));
+#endif
+}
+
+void tst_QDir::arrayOperator()
+{
+ QDir dir1(SRCDIR "entrylist/");
+ QDir dir2(SRCDIR "entrylist/");
+
+ QStringList entries(dir1.entryList());
+ int i = dir2.count();
+ QCOMPARE(i, entries.count());
+ --i;
+ for (;i>=0;--i) {
+ QCOMPARE(dir2[i], entries.at(i));
+ }
+}
+
+void tst_QDir::equalityOperator_data()
+{
+ QTest::addColumn<QString>("leftPath");
+ QTest::addColumn<QString>("leftNameFilters");
+ QTest::addColumn<int>("leftSort");
+ QTest::addColumn<int>("leftFilters");
+ QTest::addColumn<QString>("rightPath");
+ QTest::addColumn<QString>("rightNameFilters");
+ QTest::addColumn<int>("rightSort");
+ QTest::addColumn<int>("rightFilters");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("same") << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << true;
+
+ QTest::newRow("relativepaths") << "entrylist/" << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << "./entrylist" << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << true;
+
+ QTest::newRow("QTBUG-20495") << QDir::currentPath() + "/entrylist/.." << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << "." << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << true;
+
+ QTest::newRow("QTBUG-20495-root") << QDir::rootPath() + "tmp/.." << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << QDir::rootPath() << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << true;
+
+ QTest::newRow("diff-filters") << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Dirs)
+ << false;
+
+ QTest::newRow("diff-sort") << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << SRCDIR << "*.cpp" << int(QDir::Time) << int(QDir::Files)
+ << false;
+
+ QTest::newRow("diff-namefilters") << SRCDIR << "*.cpp" << int(QDir::Name) << int(QDir::Files)
+ << SRCDIR << "*.jpg" << int(QDir::Name) << int(QDir::Files)
+ << false;
+}
+
+void tst_QDir::equalityOperator()
+{
+ QFETCH(QString, leftPath);
+ QFETCH(QString, leftNameFilters);
+ QFETCH(int, leftSort);
+ QFETCH(int, leftFilters);
+ QFETCH(QString, rightPath);
+ QFETCH(QString, rightNameFilters);
+ QFETCH(int, rightSort);
+ QFETCH(int, rightFilters);
+ QFETCH(bool, expected);
+
+ QDir dir1(leftPath, leftNameFilters, QDir::SortFlags(leftSort), QDir::Filters(leftFilters));
+ QDir dir2(rightPath, rightNameFilters, QDir::SortFlags(rightSort), QDir::Filters(rightFilters));
+
+ QCOMPARE((dir1 == dir2), expected);
+ QCOMPARE((dir2 == dir1), expected);
+ QCOMPARE((dir1 != dir2), !expected);
+ QCOMPARE((dir2 != dir1), !expected);
+}
+
+void tst_QDir::isRelative_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("relative");
+
+ QTest::newRow(".") << "./" << true;
+ QTest::newRow("..") << "../" << true;
+ QTest::newRow("content") << "entrylist/" << true;
+ QTest::newRow("current") << QDir::currentPath() << false;
+ QTest::newRow("homepath") << QDir::homePath() << false;
+ QTest::newRow("temppath") << QDir::tempPath() << false;
+ QTest::newRow("rootpath") << QDir::rootPath() << false;
+ foreach (QFileInfo root, QDir::drives()) {
+ QTest::newRow(root.absolutePath().toLocal8Bit()) << root.absolutePath() << false;
+ }
+
+ QTest::newRow("resource") << ":/prefix" << false;
+}
+
+void tst_QDir::isRelative()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, relative);
+
+ QCOMPARE(QDir(path).isRelative(), relative);
+}
+
+void tst_QDir::isReadable()
+{
+ QDir dir;
+
+ QVERIFY(dir.isReadable());
+#if defined (Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)
+ QVERIFY(dir.mkdir("nonreadabledir"));
+ QVERIFY(0 == ::chmod("nonreadabledir", 0));
+ QVERIFY(!QDir("nonreadabledir").isReadable());
+ QVERIFY(0 == ::chmod("nonreadabledir", S_IRUSR | S_IWUSR | S_IXUSR));
+ QVERIFY(dir.rmdir("nonreadabledir"));
+#endif
+}
+
+QTEST_MAIN(tst_QDir)
+#include "tst_qdir.moc"
+
diff --git a/tests/auto/corelib/io/qdir/types/a b/tests/auto/corelib/io/qdir/types/a
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/a
diff --git a/tests/auto/corelib/io/qdir/types/a.a b/tests/auto/corelib/io/qdir/types/a.a
new file mode 100644
index 0000000000..7898192261
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/a.a
@@ -0,0 +1 @@
+a
diff --git a/tests/auto/corelib/io/qdir/types/a.b b/tests/auto/corelib/io/qdir/types/a.b
new file mode 100644
index 0000000000..e61ef7b965
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/a.b
@@ -0,0 +1 @@
+aa
diff --git a/tests/auto/corelib/io/qdir/types/a.c b/tests/auto/corelib/io/qdir/types/a.c
new file mode 100644
index 0000000000..72943a16fb
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/a.c
@@ -0,0 +1 @@
+aaa
diff --git a/tests/auto/corelib/io/qdir/types/b b/tests/auto/corelib/io/qdir/types/b
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/b
diff --git a/tests/auto/corelib/io/qdir/types/b.a b/tests/auto/corelib/io/qdir/types/b.a
new file mode 100644
index 0000000000..90b451628d
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/b.a
@@ -0,0 +1 @@
+aaaaaa
diff --git a/tests/auto/corelib/io/qdir/types/b.b b/tests/auto/corelib/io/qdir/types/b.b
new file mode 100644
index 0000000000..5d308e1d06
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/b.b
@@ -0,0 +1 @@
+aaaa
diff --git a/tests/auto/corelib/io/qdir/types/b.c b/tests/auto/corelib/io/qdir/types/b.c
new file mode 100644
index 0000000000..ccc3e7b48d
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/b.c
@@ -0,0 +1 @@
+aaaaa
diff --git a/tests/auto/corelib/io/qdir/types/c b/tests/auto/corelib/io/qdir/types/c
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/c
diff --git a/tests/auto/corelib/io/qdir/types/c.a b/tests/auto/corelib/io/qdir/types/c.a
new file mode 100644
index 0000000000..2b932011c2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/c.a
@@ -0,0 +1 @@
+aaaaaaaaa
diff --git a/tests/auto/corelib/io/qdir/types/c.b b/tests/auto/corelib/io/qdir/types/c.b
new file mode 100644
index 0000000000..ea8f022358
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/c.b
@@ -0,0 +1 @@
+aaaaaaaa
diff --git a/tests/auto/corelib/io/qdir/types/c.c b/tests/auto/corelib/io/qdir/types/c.c
new file mode 100644
index 0000000000..e5a0c33b87
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/c.c
@@ -0,0 +1 @@
+aaaaaaa
diff --git a/tests/auto/corelib/io/qdir/types/d.a/dummy b/tests/auto/corelib/io/qdir/types/d.a/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/d.a/dummy
diff --git a/tests/auto/corelib/io/qdir/types/d.b/dummy b/tests/auto/corelib/io/qdir/types/d.b/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/d.b/dummy
diff --git a/tests/auto/corelib/io/qdir/types/d.c/dummy b/tests/auto/corelib/io/qdir/types/d.c/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/d.c/dummy
diff --git a/tests/auto/corelib/io/qdir/types/d/dummy b/tests/auto/corelib/io/qdir/types/d/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/d/dummy
diff --git a/tests/auto/corelib/io/qdir/types/e.a/dummy b/tests/auto/corelib/io/qdir/types/e.a/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/e.a/dummy
diff --git a/tests/auto/corelib/io/qdir/types/e.b/dummy b/tests/auto/corelib/io/qdir/types/e.b/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/e.b/dummy
diff --git a/tests/auto/corelib/io/qdir/types/e.c/dummy b/tests/auto/corelib/io/qdir/types/e.c/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/e.c/dummy
diff --git a/tests/auto/corelib/io/qdir/types/e/dummy b/tests/auto/corelib/io/qdir/types/e/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/e/dummy
diff --git a/tests/auto/corelib/io/qdir/types/f.a/dummy b/tests/auto/corelib/io/qdir/types/f.a/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/f.a/dummy
diff --git a/tests/auto/corelib/io/qdir/types/f.b/dummy b/tests/auto/corelib/io/qdir/types/f.b/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/f.b/dummy
diff --git a/tests/auto/corelib/io/qdir/types/f.c/dummy b/tests/auto/corelib/io/qdir/types/f.c/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/f.c/dummy
diff --git a/tests/auto/corelib/io/qdir/types/f/dummy b/tests/auto/corelib/io/qdir/types/f/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdir/types/f/dummy
diff --git a/tests/auto/corelib/io/qdiriterator/.gitignore b/tests/auto/corelib/io/qdiriterator/.gitignore
new file mode 100644
index 0000000000..cf5974f1a5
--- /dev/null
+++ b/tests/auto/corelib/io/qdiriterator/.gitignore
@@ -0,0 +1 @@
+tst_qdiriterator
diff --git a/tests/auto/corelib/io/qdiriterator/entrylist/directory/dummy b/tests/auto/corelib/io/qdiriterator/entrylist/directory/dummy
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdiriterator/entrylist/directory/dummy
diff --git a/tests/auto/corelib/io/qdiriterator/entrylist/file b/tests/auto/corelib/io/qdiriterator/entrylist/file
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qdiriterator/entrylist/file
diff --git a/tests/auto/corelib/io/qdiriterator/qdiriterator.pro b/tests/auto/corelib/io/qdiriterator/qdiriterator.pro
new file mode 100644
index 0000000000..f9f5c8d664
--- /dev/null
+++ b/tests/auto/corelib/io/qdiriterator/qdiriterator.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+SOURCES += tst_qdiriterator.cpp
+RESOURCES += qdiriterator.qrc
+QT = core
+
+wince*mips*|wincewm50smart-msvc200*: DEFINES += WINCE_BROKEN_ITERATE=1
+
+CONFIG += parallel_test
+CONFIG += insignificant_test # QTBUG-21160
diff --git a/tests/auto/corelib/io/qdiriterator/qdiriterator.qrc b/tests/auto/corelib/io/qdiriterator/qdiriterator.qrc
new file mode 100644
index 0000000000..058d474780
--- /dev/null
+++ b/tests/auto/corelib/io/qdiriterator/qdiriterator.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>entrylist/file</file>
+ <file>entrylist/directory/dummy</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp
new file mode 100644
index 0000000000..9014da9033
--- /dev/null
+++ b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp
@@ -0,0 +1,639 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qdebug.h>
+#include <qdiriterator.h>
+#include <qfileinfo.h>
+#include <qstringlist.h>
+
+#if defined(Q_OS_VXWORKS)
+#define Q_NO_SYMLINKS
+#endif
+
+#if defined(Q_OS_SYMBIAN)
+#define Q_NO_SYMLINKS
+#define Q_NO_SYMLINKS_TO_DIRS
+#endif
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+# include "../../../network-settings.h"
+#endif
+
+Q_DECLARE_METATYPE(QDirIterator::IteratorFlags)
+Q_DECLARE_METATYPE(QDir::Filters)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QDirIterator : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QDirIterator();
+ virtual ~tst_QDirIterator();
+
+private: // convenience functions
+ QStringList createdDirectories;
+ QStringList createdFiles;
+
+ QDir currentDir;
+ bool createDirectory(const QString &dirName)
+ {
+ if (currentDir.mkdir(dirName)) {
+ createdDirectories.prepend(dirName);
+ return true;
+ }
+ return false;
+ }
+
+ enum Cleanup { DoDelete, DontDelete };
+ bool createFile(const QString &fileName, Cleanup cleanup = DoDelete)
+ {
+ QFile file(fileName);
+ if (file.open(QIODevice::WriteOnly)) {
+ if (cleanup == DoDelete)
+ createdFiles << fileName;
+ return true;
+ }
+ return false;
+ }
+
+ bool createLink(const QString &destination, const QString &linkName)
+ {
+ if (QFile::link(destination, linkName)) {
+ createdFiles << linkName;
+ return true;
+ }
+ return false;
+ }
+
+private slots:
+ void iterateRelativeDirectory_data();
+ void iterateRelativeDirectory();
+ void iterateResource_data();
+ void iterateResource();
+ void stopLinkLoop();
+ void engineWithNoIterator();
+ void absoluteFilePathsFromRelativeIteratorPath();
+ void recurseWithFilters() const;
+ void longPath();
+ void task185502_dirorder();
+ void relativePaths();
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ void uncPaths_data();
+ void uncPaths();
+#endif
+ void qtbug15421_hiddenDirs_hiddenFiles();
+};
+
+tst_QDirIterator::tst_QDirIterator()
+{
+ QFile::remove("entrylist/entrylist1.lnk");
+ QFile::remove("entrylist/entrylist2.lnk");
+ QFile::remove("entrylist/entrylist3.lnk");
+ QFile::remove("entrylist/entrylist4.lnk");
+ QFile::remove("entrylist/directory/entrylist1.lnk");
+ QFile::remove("entrylist/directory/entrylist2.lnk");
+ QFile::remove("entrylist/directory/entrylist3.lnk");
+ QFile::remove("entrylist/directory/entrylist4.lnk");
+
+ createDirectory("entrylist");
+ createDirectory("entrylist/directory");
+ createFile("entrylist/file", DontDelete);
+ createFile("entrylist/writable");
+ createFile("entrylist/directory/dummy", DontDelete);
+
+ createDirectory("recursiveDirs");
+ createDirectory("recursiveDirs/dir1");
+ createFile("recursiveDirs/textFileA.txt");
+ createFile("recursiveDirs/dir1/aPage.html");
+ createFile("recursiveDirs/dir1/textFileB.txt");
+
+ createDirectory("foo");
+ createDirectory("foo/bar");
+ createFile("foo/bar/readme.txt");
+
+ createDirectory("empty");
+
+#ifndef Q_NO_SYMLINKS
+# if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ // ### Sadly, this is a platform difference right now.
+ createLink("entrylist/file", "entrylist/linktofile.lnk");
+# ifndef Q_NO_SYMLINKS_TO_DIRS
+ createLink("entrylist/directory", "entrylist/linktodirectory.lnk");
+# endif
+ createLink("entrylist/nothing", "entrylist/brokenlink.lnk");
+# else
+ createLink("file", "entrylist/linktofile.lnk");
+# ifndef Q_NO_SYMLINKS_TO_DIRS
+ createLink("directory", "entrylist/linktodirectory.lnk");
+# endif
+ createLink("nothing", "entrylist/brokenlink.lnk");
+# endif
+#endif
+
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/normalFile");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/.hiddenFile");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/normalFile");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/.hiddenFile");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/normalFile");
+ createFile("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenFile");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/normalDirectory");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/normalDirectory/.hiddenDirectory");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/normalDirectory");
+ createDirectory("qtbug15421_hiddenDirs_hiddenFiles/.hiddenDirectory/.hiddenDirectory");
+}
+
+tst_QDirIterator::~tst_QDirIterator()
+{
+ Q_FOREACH(QString fileName, createdFiles)
+ QFile::remove(fileName);
+
+ Q_FOREACH(QString dirName, createdDirectories)
+ currentDir.rmdir(dirName);
+}
+
+void tst_QDirIterator::iterateRelativeDirectory_data()
+{
+ QTest::addColumn<QString>("dirName"); // relative from current path or abs
+ QTest::addColumn<QDirIterator::IteratorFlags>("flags");
+ QTest::addColumn<QDir::Filters>("filters");
+ QTest::addColumn<QStringList>("nameFilters");
+ QTest::addColumn<QStringList>("entries");
+
+ QTest::newRow("no flags")
+ << QString("entrylist") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::NoFilter) << QStringList("*")
+ << QString(
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ "entrylist/.,"
+ "entrylist/..,"
+#endif
+ "entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/directory,"
+#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
+ "entrylist/linktodirectory.lnk,"
+#endif
+ "entrylist/writable").split(',');
+
+ QTest::newRow("NoDot")
+ << QString("entrylist") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::AllEntries | QDir::NoDot) << QStringList("*")
+ << QString(
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ "entrylist/..,"
+#endif
+ "entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/directory,"
+#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
+ "entrylist/linktodirectory.lnk,"
+#endif
+ "entrylist/writable").split(',');
+
+ QTest::newRow("NoDotDot")
+ << QString("entrylist") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::AllEntries | QDir::NoDotDot) << QStringList("*")
+ << QString(
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ "entrylist/.,"
+#endif
+ "entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/directory,"
+#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
+ "entrylist/linktodirectory.lnk,"
+#endif
+ "entrylist/writable").split(',');
+
+ QTest::newRow("NoDotAndDotDot")
+ << QString("entrylist") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::AllEntries | QDir::NoDotAndDotDot) << QStringList("*")
+ << QString(
+ "entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/directory,"
+#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
+ "entrylist/linktodirectory.lnk,"
+#endif
+ "entrylist/writable").split(',');
+
+ QTest::newRow("QDir::Subdirectories | QDir::FollowSymlinks")
+ << QString("entrylist") << QDirIterator::IteratorFlags(QDirIterator::Subdirectories | QDirIterator::FollowSymlinks)
+ << QDir::Filters(QDir::NoFilter) << QStringList("*")
+ << QString(
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ "entrylist/.,"
+ "entrylist/..,"
+ "entrylist/directory/.,"
+ "entrylist/directory/..,"
+#endif
+ "entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/directory,"
+ "entrylist/directory/dummy,"
+#if !defined(Q_NO_SYMLINKS) && !defined(Q_NO_SYMLINKS_TO_DIRS)
+ "entrylist/linktodirectory.lnk,"
+#endif
+ "entrylist/writable").split(',');
+
+ QTest::newRow("QDir::Subdirectories / QDir::Files")
+ << QString("entrylist") << QDirIterator::IteratorFlags(QDirIterator::Subdirectories)
+ << QDir::Filters(QDir::Files) << QStringList("*")
+ << QString("entrylist/directory/dummy,"
+ "entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/writable").split(',');
+
+ QTest::newRow("QDir::Subdirectories | QDir::FollowSymlinks / QDir::Files")
+ << QString("entrylist") << QDirIterator::IteratorFlags(QDirIterator::Subdirectories | QDirIterator::FollowSymlinks)
+ << QDir::Filters(QDir::Files) << QStringList("*")
+ << QString("entrylist/file,"
+#ifndef Q_NO_SYMLINKS
+ "entrylist/linktofile.lnk,"
+#endif
+ "entrylist/directory/dummy,"
+ "entrylist/writable").split(',');
+
+ QTest::newRow("empty, default")
+ << QString("empty") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::NoFilter) << QStringList("*")
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE)
+ << QStringList();
+#else
+ << QString("empty/.,empty/..").split(',');
+#endif
+
+ QTest::newRow("empty, QDir::NoDotAndDotDot")
+ << QString("empty") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::NoDotAndDotDot) << QStringList("*")
+ << QStringList();
+}
+
+void tst_QDirIterator::iterateRelativeDirectory()
+{
+ QFETCH(QString, dirName);
+ QFETCH(QDirIterator::IteratorFlags, flags);
+ QFETCH(QDir::Filters, filters);
+ QFETCH(QStringList, nameFilters);
+ QFETCH(QStringList, entries);
+
+ QDirIterator it(dirName, nameFilters, filters, flags);
+ QStringList list;
+ while (it.hasNext()) {
+ QString next = it.next();
+
+ QString fileName = it.fileName();
+ QString filePath = it.filePath();
+ QString path = it.path();
+
+ QFileInfo info = it.fileInfo();
+
+ QCOMPARE(path, dirName);
+ QCOMPARE(next, filePath);
+
+ QCOMPARE(info, QFileInfo(next));
+ QCOMPARE(fileName, info.fileName());
+ QCOMPARE(filePath, info.filePath());
+
+ // Using canonical file paths for final comparison
+ list << info.canonicalFilePath();
+ }
+
+ // The order of items returned by QDirIterator is not guaranteed.
+ list.sort();
+
+ QStringList sortedEntries;
+ foreach(QString item, entries)
+ sortedEntries.append(QFileInfo(item).canonicalFilePath());
+ sortedEntries.sort();
+
+ if (sortedEntries != list) {
+ qDebug() << "EXPECTED:" << sortedEntries;
+ qDebug() << "ACTUAL: " << list;
+ }
+
+ QCOMPARE(list, sortedEntries);
+}
+
+void tst_QDirIterator::iterateResource_data()
+{
+ QTest::addColumn<QString>("dirName"); // relative from current path or abs
+ QTest::addColumn<QDirIterator::IteratorFlags>("flags");
+ QTest::addColumn<QDir::Filters>("filters");
+ QTest::addColumn<QStringList>("nameFilters");
+ QTest::addColumn<QStringList>("entries");
+
+ QTest::newRow("invalid") << QString::fromLatin1(":/burpaburpa") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::NoFilter) << QStringList(QLatin1String("*"))
+ << QStringList();
+ QTest::newRow(":/") << QString::fromLatin1(":/") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::NoFilter) << QStringList(QLatin1String("*"))
+ << QString::fromLatin1(":/entrylist").split(QLatin1String(","));
+ QTest::newRow(":/entrylist") << QString::fromLatin1(":/entrylist") << QDirIterator::IteratorFlags(0)
+ << QDir::Filters(QDir::NoFilter) << QStringList(QLatin1String("*"))
+ << QString::fromLatin1(":/entrylist/directory,:/entrylist/file").split(QLatin1String(","));
+ QTest::newRow(":/ recursive") << QString::fromLatin1(":/") << QDirIterator::IteratorFlags(QDirIterator::Subdirectories)
+ << QDir::Filters(QDir::NoFilter) << QStringList(QLatin1String("*"))
+ << QString::fromLatin1(":/entrylist,:/entrylist/directory,:/entrylist/directory/dummy,:/entrylist/file").split(QLatin1String(","));
+}
+
+void tst_QDirIterator::iterateResource()
+{
+ QFETCH(QString, dirName);
+ QFETCH(QDirIterator::IteratorFlags, flags);
+ QFETCH(QDir::Filters, filters);
+ QFETCH(QStringList, nameFilters);
+ QFETCH(QStringList, entries);
+
+ QDirIterator it(dirName, nameFilters, filters, flags);
+ QStringList list;
+ while (it.hasNext())
+ list << it.next();
+
+ list.sort();
+ QStringList sortedEntries = entries;
+ sortedEntries.sort();
+
+ if (sortedEntries != list) {
+ qDebug() << "EXPECTED:" << sortedEntries;
+ qDebug() << "ACTUAL:" << list;
+ }
+
+ QCOMPARE(list, sortedEntries);
+}
+
+void tst_QDirIterator::stopLinkLoop()
+{
+#ifdef Q_OS_WIN
+ // ### Sadly, this is a platform difference right now.
+ createLink(QDir::currentPath() + QLatin1String("/entrylist"), "entrylist/entrylist1.lnk");
+ createLink("entrylist/.", "entrylist/entrylist2.lnk");
+ createLink("entrylist/../entrylist/.", "entrylist/entrylist3.lnk");
+ createLink("entrylist/..", "entrylist/entrylist4.lnk");
+ createLink(QDir::currentPath() + QLatin1String("/entrylist"), "entrylist/directory/entrylist1.lnk");
+ createLink("entrylist/.", "entrylist/directory/entrylist2.lnk");
+ createLink("entrylist/../directory/.", "entrylist/directory/entrylist3.lnk");
+ createLink("entrylist/..", "entrylist/directory/entrylist4.lnk");
+#else
+ createLink(QDir::currentPath() + QLatin1String("/entrylist"), "entrylist/entrylist1.lnk");
+ createLink(".", "entrylist/entrylist2.lnk");
+ createLink("../entrylist/.", "entrylist/entrylist3.lnk");
+ createLink("..", "entrylist/entrylist4.lnk");
+ createLink(QDir::currentPath() + QLatin1String("/entrylist"), "entrylist/directory/entrylist1.lnk");
+ createLink(".", "entrylist/directory/entrylist2.lnk");
+ createLink("../directory/.", "entrylist/directory/entrylist3.lnk");
+ createLink("..", "entrylist/directory/entrylist4.lnk");
+#endif
+
+ QDirIterator it(QLatin1String("entrylist"), QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+ QStringList list;
+ int max = 200;
+ while (--max && it.hasNext())
+ it.next();
+ QVERIFY(max);
+
+ // The goal of this test is only to ensure that the test above don't malfunction
+}
+
+class EngineWithNoIterator : public QFSFileEngine
+{
+public:
+ EngineWithNoIterator(const QString &fileName)
+ : QFSFileEngine(fileName)
+ { }
+
+ QAbstractFileEngineIterator *beginEntryList(QDir::Filters, const QStringList &)
+ { return 0; }
+};
+
+class EngineWithNoIteratorHandler : public QAbstractFileEngineHandler
+{
+public:
+ QAbstractFileEngine *create(const QString &fileName) const
+ {
+ return new EngineWithNoIterator(fileName);
+ }
+};
+
+void tst_QDirIterator::engineWithNoIterator()
+{
+ EngineWithNoIteratorHandler handler;
+
+ QDir("entrylist").entryList();
+ QVERIFY(true); // test that the above line doesn't crash
+}
+
+void tst_QDirIterator::absoluteFilePathsFromRelativeIteratorPath()
+{
+ QDirIterator it("entrylist/", QDir::NoDotAndDotDot);
+ while (it.hasNext()) {
+ it.next();
+ QVERIFY(QFileInfo(it.filePath()).absoluteFilePath().contains("entrylist"));
+ }
+}
+
+void tst_QDirIterator::recurseWithFilters() const
+{
+ QStringList nameFilters;
+ nameFilters.append("*.txt");
+
+ QDirIterator it("recursiveDirs/", nameFilters, QDir::Files,
+ QDirIterator::Subdirectories);
+
+ QSet<QString> actualEntries;
+ QSet<QString> expectedEntries;
+ expectedEntries.insert(QString::fromLatin1("recursiveDirs/dir1/textFileB.txt"));
+ expectedEntries.insert(QString::fromLatin1("recursiveDirs/textFileA.txt"));
+
+ QVERIFY(it.hasNext());
+ it.next();
+ actualEntries.insert(it.fileInfo().filePath());
+ QVERIFY(it.hasNext());
+ it.next();
+ actualEntries.insert(it.fileInfo().filePath());
+ QVERIFY(actualEntries == expectedEntries);
+
+ QVERIFY(!it.hasNext());
+}
+
+void tst_QDirIterator::longPath()
+{
+ QDir dir;
+ dir.mkdir("longpaths");
+ dir.cd("longpaths");
+
+ QString dirName = "x";
+ int n = 0;
+ while (dir.exists(dirName) || dir.mkdir(dirName)) {
+ ++n;
+ dirName.append('x');
+#if defined(Q_OS_WINCE) && defined(WINCE_BROKEN_ITERATE)
+ // Some Windows CE devices/emulators are broken.
+ // though one can create directories of length <= 217,
+ // FindNextFile only reports entries until ~ 214.
+ if (n >= 210)
+ break;
+#endif
+ }
+
+ QDirIterator it(dir.absolutePath(), QDir::NoDotAndDotDot|QDir::Dirs, QDirIterator::Subdirectories);
+ int m = 0;
+ while (it.hasNext()) {
+ ++m;
+ it.next();
+ }
+
+ QCOMPARE(n, m);
+
+ dirName.chop(1);
+ while (dirName.length() > 0 && dir.exists(dirName) && dir.rmdir(dirName)) {
+ dirName.chop(1);
+ }
+ dir.cdUp();
+ dir.rmdir("longpaths");
+}
+
+void tst_QDirIterator::task185502_dirorder()
+{
+ QDirIterator iterator("foo", QDirIterator::Subdirectories);
+ while (iterator.hasNext() && iterator.next() != "foo/bar")
+ { }
+
+ QCOMPARE(iterator.filePath(), QString("foo/bar"));
+ QCOMPARE(iterator.fileInfo().filePath(), QString("foo/bar"));
+}
+
+void tst_QDirIterator::relativePaths()
+{
+ QDirIterator iterator("*", QDirIterator::Subdirectories);
+ while(iterator.hasNext()) {
+ QCOMPARE(iterator.filePath(), QDir::cleanPath(iterator.filePath()));
+ }
+}
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+void tst_QDirIterator::uncPaths_data()
+{
+ QTest::addColumn<QString>("dirName");
+ QTest::newRow("uncserver")
+ <<QString("//" + QtNetworkSettings::winServerName());
+ QTest::newRow("uncserver/testshare")
+ <<QString("//" + QtNetworkSettings::winServerName() + "/testshare");
+ QTest::newRow("uncserver/testshare/tmp")
+ <<QString("//" + QtNetworkSettings::winServerName() + "/testshare/tmp");
+}
+void tst_QDirIterator::uncPaths()
+{
+ QFETCH(QString, dirName);
+ QDirIterator iterator(dirName, QDir::AllEntries|QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
+ while(iterator.hasNext()) {
+ iterator.next();
+ QCOMPARE(iterator.filePath(), QDir::cleanPath(iterator.filePath()));
+ }
+}
+#endif
+
+void tst_QDirIterator::qtbug15421_hiddenDirs_hiddenFiles()
+{
+ // In Unix it is easy to create hidden files, but in Windows it requires
+ // a special call since hidden files need to be "marked" while in Unix
+ // anything starting by a '.' is a hidden file.
+ // For that reason this test is not run in Windows.
+#if defined Q_OS_WIN || Q_OS_WINCE
+ QSKIP("To create hidden files a special call is required in Windows.", SkipAll);
+#else
+ // Only files
+ {
+ int matches = 0;
+ int failures = 0;
+ QDirIterator di("qtbug15421_hiddenDirs_hiddenFiles", QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
+ while (di.hasNext()) {
+ ++matches;
+ QString filename = di.next();
+ if (QFileInfo(filename).isDir())
+ ++failures; // search was only supposed to find files
+ }
+ QCOMPARE(matches, 6);
+ QCOMPARE(failures, 0);
+ }
+ // Only directories
+ {
+ int matches = 0;
+ int failures = 0;
+ QDirIterator di("qtbug15421_hiddenDirs_hiddenFiles", QDir::Dirs | QDir::Hidden | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
+ while (di.hasNext()) {
+ ++matches;
+ QString filename = di.next();
+ if (!QFileInfo(filename).isDir())
+ ++failures; // search was only supposed to find files
+ }
+ QCOMPARE(matches, 6);
+ QCOMPARE(failures, 0);
+ }
+#endif // Q_OS_WIN || Q_OS_WINCE
+}
+
+QTEST_MAIN(tst_QDirIterator)
+
+#include "tst_qdiriterator.moc"
+
diff --git a/tests/auto/corelib/io/qfile/.gitattributes b/tests/auto/corelib/io/qfile/.gitattributes
new file mode 100644
index 0000000000..3be66dc5eb
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/.gitattributes
@@ -0,0 +1,2 @@
+dosfile.txt -crlf
+testfile.txt -crlf \ No newline at end of file
diff --git a/tests/auto/corelib/io/qfile/.gitignore b/tests/auto/corelib/io/qfile/.gitignore
new file mode 100644
index 0000000000..c508239722
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/.gitignore
@@ -0,0 +1,8 @@
+tst_qfile
+stdinprocess/stdinprocess
+stdinprocess/stdinprocess.exe
+readonlyfile
+newfile.txt
+appendfile.txt
+oldfile.txt
+simplefile.txt
diff --git a/tests/auto/corelib/io/qfile/copy-fallback.qrc b/tests/auto/corelib/io/qfile/copy-fallback.qrc
new file mode 100644
index 0000000000..864491f326
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/copy-fallback.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>copy-fallback.qrc</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/corelib/io/qfile/dosfile.txt b/tests/auto/corelib/io/qfile/dosfile.txt
new file mode 100644
index 0000000000..47205062e1
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/dosfile.txt
@@ -0,0 +1,14 @@
+/dev/system/root / reiserfs acl,user_xattr 1 1
+/dev/sda1 /boot ext3 acl,user_xattr 1 2
+/dev/system/home /home reiserfs acl,user_xattr 1 2
+/dev/system/temp /tmp reiserfs acl,user_xattr 1 2
+/dev/sda2 swap swap pri=42 0 0
+devpts /dev/pts devpts mode=0620,gid=5 0 0
+proc /proc proc defaults 0 0
+usbfs /proc/bus/usb usbfs noauto 0 0
+sysfs /sys sysfs noauto 0 0
+/dev/dvd /media/dvd subfs noauto,fs=cdfss,ro,procuid,nosuid,nodev,exec,iocharset=utf8 0 0
+/dev/fd0 /media/floppy subfs noauto,fs=floppyfss,procuid,nodev,nosuid,sync 0 0
+/dev/sdb2 /media/ipod subfs noauto,rw,noexec,nosuid,nodev,sync,procuid,user,iocharset=utf8 1 2
+/dev/sdc1 /media/usbkey vfat rw,nosuid,nodev,sync,procuid,user 1 2
+
diff --git a/tests/auto/corelib/io/qfile/forCopying.txt b/tests/auto/corelib/io/qfile/forCopying.txt
new file mode 100644
index 0000000000..d4143d5958
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/forCopying.txt
@@ -0,0 +1 @@
+A basic file for copying.
diff --git a/tests/auto/corelib/io/qfile/forRenaming.txt b/tests/auto/corelib/io/qfile/forRenaming.txt
new file mode 100644
index 0000000000..7032162406
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/forRenaming.txt
@@ -0,0 +1,7 @@
+----------------------------------------------------------
+DO NOT CHANGE ANY CONTENT OR ACCESS RIGHTS OF THIS FILE!!!
+----------------------------------------------------------
+
+This file is larger than QFile::rename()'s buffer, which is 4096 bytes. This means it is more than what is returned in its call to read().
+
+112345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890234567890
diff --git a/tests/auto/corelib/io/qfile/largefile/largefile.pro b/tests/auto/corelib/io/qfile/largefile/largefile.pro
new file mode 100644
index 0000000000..7786bdb892
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/largefile/largefile.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+
+QT = core
+SOURCES += tst_largefile.cpp
+
+wince*: SOURCES += $$QT_SOURCE_TREE/src/corelib/kernel/qfunctions_wince.cpp
+
+CONFIG += parallel_test
+CONFIG += insignificant_test # QTBUG-21175
diff --git a/tests/auto/corelib/io/qfile/largefile/tst_largefile.cpp b/tests/auto/corelib/io/qfile/largefile/tst_largefile.cpp
new file mode 100644
index 0000000000..bf6cc688ba
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/largefile/tst_largefile.cpp
@@ -0,0 +1,538 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QTest>
+
+#include <QtAlgorithms>
+#include <QFile>
+#include <QFileInfo>
+#include <qplatformdefs.h>
+
+#include <QDebug>
+
+#include <cstdlib>
+#include <cstdio>
+
+#ifdef Q_OS_WIN
+
+#include <windows.h>
+
+#ifndef Q_OS_WINCE
+#include <io.h>
+#endif
+
+#ifndef FSCTL_SET_SPARSE
+// MinGW doesn't define this.
+#define FSCTL_SET_SPARSE (0x900C4)
+#endif
+
+#endif // Q_OS_WIN
+
+class tst_LargeFile
+ : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_LargeFile()
+ : blockSize(1 << 12)
+ , maxSizeBits()
+ , fd_(-1)
+ , stream_(0)
+ {
+ #if defined(QT_LARGEFILE_SUPPORT) && !defined(Q_OS_MAC)
+ maxSizeBits = 36; // 64 GiB
+ #elif defined(Q_OS_MAC)
+ // HFS+ does not support sparse files, so we limit file size for the test
+ // on Mac OS.
+ maxSizeBits = 32; // 4 GiB
+ #else
+ maxSizeBits = 24; // 16 MiB
+ #endif
+ }
+
+private:
+ void sparseFileData();
+ QByteArray const &getDataBlock(int index, qint64 position);
+
+private slots:
+ // The LargeFile test case was designed to be run in order as a single unit
+
+ void initTestCase();
+ void cleanupTestCase();
+
+ void init();
+ void cleanup();
+
+ // Create and fill large file
+ void createSparseFile();
+ void fillFileSparsely();
+ void closeSparseFile();
+
+ // Verify file was created
+ void fileCreated();
+
+ // Positioning in large files
+ void filePositioning();
+ void fdPositioning();
+ void streamPositioning();
+
+ // Read data from file
+ void openFileForReading();
+ void readFile();
+
+ // Map/unmap large file
+ void mapFile();
+ void mapOffsetOverflow();
+
+ void closeFile() { largeFile.close(); }
+
+ // Test data
+ void fillFileSparsely_data() { sparseFileData(); }
+ void filePositioning_data() { sparseFileData(); }
+ void fdPositioning_data() { sparseFileData(); }
+ void streamPositioning_data() { sparseFileData(); }
+ void readFile_data() { sparseFileData(); }
+ void mapFile_data() { sparseFileData(); }
+
+private:
+ const int blockSize;
+ int maxSizeBits;
+
+ QFile largeFile;
+
+ QVector<QByteArray> generatedBlocks;
+
+ int fd_;
+ FILE *stream_;
+};
+
+/*
+ Convenience function to hide reinterpret_cast when copying a POD directly
+ into a QByteArray.
+ */
+template <class T>
+static inline void appendRaw(QByteArray &array, T data)
+{
+ array.append(reinterpret_cast<char *>(&data), sizeof(T));
+}
+
+/*
+ Pad array with filler up to size. On return, array.size() returns size.
+ */
+static inline void topUpWith(QByteArray &array, QByteArray filler, int size)
+{
+ for (int i = (size - array.size()) / filler.size(); i > 0; --i)
+ array.append(filler);
+
+ if (array.size() < size) {
+ array.append(filler.left(size - array.size()));
+ }
+}
+
+/*
+ Generate a unique data block containing identifiable data. Unaligned,
+ overlapping and partial blocks should not compare equal.
+ */
+static inline QByteArray generateDataBlock(int blockSize, QString text, qint64 userBits = -1)
+{
+ QByteArray block;
+ block.reserve(blockSize);
+
+ // Use of counter and randomBits means content of block will be dependent
+ // on the generation order. For (file-)systems that do not support sparse
+ // files, these can be removed so the test file can be reused and doesn't
+ // have to be generated for every run.
+
+ static qint64 counter = 0;
+
+ qint64 randomBits = ((qint64)qrand() << 32)
+ | ((qint64)qrand() & 0x00000000ffffffff);
+
+ appendRaw(block, randomBits);
+ appendRaw(block, userBits);
+ appendRaw(block, counter);
+ appendRaw(block, (qint32)0xdeadbeef);
+ appendRaw(block, blockSize);
+
+ QByteArray userContent = text.toUtf8();
+ appendRaw(block, userContent.size());
+ block.append(userContent);
+ appendRaw(block, (qint64)0);
+
+ // size, so far
+ appendRaw(block, block.size());
+
+ QByteArray filler("0123456789");
+ block.append(filler.right(10 - block.size() % 10));
+ topUpWith(block, filler, blockSize - 3 * sizeof(qint64));
+
+ appendRaw(block, counter);
+ appendRaw(block, userBits);
+ appendRaw(block, randomBits);
+
+ ++counter;
+ return block;
+}
+
+/*
+ Generates data blocks the first time they are requested. Keeps copies for reuse.
+ */
+QByteArray const &tst_LargeFile::getDataBlock(int index, qint64 position)
+{
+ if (index >= generatedBlocks.size())
+ generatedBlocks.resize(index + 1);
+
+ if (generatedBlocks[index].isNull()) {
+ QString text = QString("Current %1-byte block (index = %2) "
+ "starts %3 bytes into the file '%4'.")
+ .arg(blockSize)
+ .arg(index)
+ .arg(position)
+ .arg("qt_largefile.tmp");
+
+ generatedBlocks[index] = generateDataBlock(blockSize, text, (qint64)1 << index);
+ }
+
+ return generatedBlocks[index];
+}
+
+void tst_LargeFile::initTestCase()
+{
+ QFile file("qt_largefile.tmp");
+ QVERIFY( !file.exists() || file.remove() );
+}
+
+void tst_LargeFile::cleanupTestCase()
+{
+ if (largeFile.isOpen())
+ largeFile.close();
+
+ QFile file("qt_largefile.tmp");
+ QVERIFY( !file.exists() || file.remove() );
+}
+
+void tst_LargeFile::init()
+{
+ fd_ = -1;
+ stream_ = 0;
+}
+
+void tst_LargeFile::cleanup()
+{
+ if (-1 != fd_)
+ QT_CLOSE(fd_);
+ if (stream_)
+ ::fclose(stream_);
+}
+
+void tst_LargeFile::sparseFileData()
+{
+ QTest::addColumn<int>("index");
+ QTest::addColumn<qint64>("position");
+ QTest::addColumn<QByteArray>("block");
+
+ QTest::newRow(QString("block[%1] @%2)")
+ .arg(0).arg(0)
+ .toLocal8Bit().constData())
+ << 0 << (qint64)0 << getDataBlock(0, 0);
+
+ // While on Linux sparse files scale well, on Windows, testing at every
+ // power of 2 leads to very large files. i += 4 gives us a good coverage
+ // without taxing too much on resources.
+ for (int index = 12; index <= maxSizeBits; index += 4) {
+ qint64 position = (qint64)1 << index;
+ QByteArray block = getDataBlock(index, position);
+
+ QTest::newRow(
+ QString("block[%1] @%2)")
+ .arg(index).arg(position)
+ .toLocal8Bit().constData())
+ << index << position << block;
+ }
+}
+
+void tst_LargeFile::createSparseFile()
+{
+#if defined(Q_OS_WIN32)
+ // On Windows platforms, we must explicitly set the file to be sparse,
+ // so disk space is not allocated for the full file when writing to it.
+ HANDLE handle = ::CreateFileA("qt_largefile.tmp",
+ GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
+ QVERIFY( INVALID_HANDLE_VALUE != handle );
+
+ DWORD bytes;
+ if (!::DeviceIoControl(handle, FSCTL_SET_SPARSE, NULL, 0, NULL, 0,
+ &bytes, NULL)) {
+ QWARN("Unable to set test file as sparse. "
+ "Limiting test file to 16MiB.");
+ maxSizeBits = 24;
+ }
+
+ int fd = ::_open_osfhandle((intptr_t)handle, 0);
+ QVERIFY( -1 != fd );
+ QVERIFY( largeFile.open(fd, QIODevice::WriteOnly | QIODevice::Unbuffered) );
+#else // !Q_OS_WIN32
+ largeFile.setFileName("qt_largefile.tmp");
+ QVERIFY( largeFile.open(QIODevice::WriteOnly | QIODevice::Unbuffered) );
+#endif
+}
+
+void tst_LargeFile::closeSparseFile()
+{
+#if defined(Q_OS_WIN32)
+ int fd = largeFile.handle();
+#endif
+
+ largeFile.close();
+
+#if defined(Q_OS_WIN32)
+ if (-1 != fd)
+ ::_close(fd);
+#endif
+}
+
+void tst_LargeFile::fillFileSparsely()
+{
+ QFETCH( qint64, position );
+ QFETCH( QByteArray, block );
+ QCOMPARE( block.size(), blockSize );
+
+ static int lastKnownGoodIndex = 0;
+ struct ScopeGuard {
+ ScopeGuard(tst_LargeFile* test)
+ : this_(test)
+ , failed(true)
+ {
+ QFETCH( int, index );
+ index_ = index;
+ }
+
+ ~ScopeGuard()
+ {
+ if (failed) {
+ this_->maxSizeBits = lastKnownGoodIndex;
+ QWARN( qPrintable(
+ QString("QFile::error %1: '%2'. Maximum size bits reset to %3.")
+ .arg(this_->largeFile.error())
+ .arg(this_->largeFile.errorString())
+ .arg(this_->maxSizeBits)) );
+ } else
+ lastKnownGoodIndex = qMax<int>(index_, lastKnownGoodIndex);
+ }
+
+ private:
+ tst_LargeFile * const this_;
+ int index_;
+
+ public:
+ bool failed;
+ };
+
+ ScopeGuard resetMaxSizeBitsOnFailure(this);
+
+ QVERIFY( largeFile.seek(position) );
+ QCOMPARE( largeFile.pos(), position );
+
+ QCOMPARE( largeFile.write(block), (qint64)blockSize );
+ QCOMPARE( largeFile.pos(), position + blockSize );
+ QVERIFY( largeFile.flush() );
+
+ resetMaxSizeBitsOnFailure.failed = false;
+}
+
+void tst_LargeFile::fileCreated()
+{
+ QFileInfo info("qt_largefile.tmp");
+
+ QVERIFY( info.exists() );
+ QVERIFY( info.isFile() );
+ QVERIFY( info.size() >= ((qint64)1 << maxSizeBits) + blockSize );
+}
+
+void tst_LargeFile::filePositioning()
+{
+ QFETCH( qint64, position );
+
+ QFile file("qt_largefile.tmp");
+ QVERIFY( file.open(QIODevice::ReadOnly) );
+
+ QVERIFY( file.seek(position) );
+ QCOMPARE( file.pos(), position );
+}
+
+void tst_LargeFile::fdPositioning()
+{
+ QFETCH( qint64, position );
+
+ fd_ = QT_OPEN("qt_largefile.tmp",
+ QT_OPEN_RDONLY | QT_OPEN_LARGEFILE);
+ QVERIFY( -1 != fd_ );
+
+ QFile file;
+ QVERIFY( file.open(fd_, QIODevice::ReadOnly) );
+ QCOMPARE( file.pos(), (qint64)0 );
+ QVERIFY( file.seek(position) );
+ QCOMPARE( file.pos(), position );
+
+ file.close();
+
+ QCOMPARE( QT_LSEEK(fd_, QT_OFF_T(0), SEEK_SET), QT_OFF_T(0) );
+ QCOMPARE( QT_LSEEK(fd_, QT_OFF_T(position), SEEK_SET), QT_OFF_T(position) );
+
+ QVERIFY( file.open(fd_, QIODevice::ReadOnly) );
+ QCOMPARE( QT_LSEEK(fd_, QT_OFF_T(0), SEEK_CUR), QT_OFF_T(position) );
+ QCOMPARE( file.pos(), position );
+ QVERIFY( file.seek(0) );
+ QCOMPARE( file.pos(), (qint64)0 );
+
+ file.close();
+
+ QVERIFY( !QT_CLOSE(fd_) );
+ fd_ = -1;
+}
+
+void tst_LargeFile::streamPositioning()
+{
+ QFETCH( qint64, position );
+
+#if defined(QT_LARGEFILE_SUPPORT) && defined(Q_CC_MSVC) && _MSC_VER < 1400
+ if (position >= (qint64)1 << 31)
+ QSKIP("MSVC 2003 doesn't have 64 bit versions of fseek/ftell.", SkipSingle);
+#endif
+
+ stream_ = QT_FOPEN("qt_largefile.tmp", "rb");
+ QVERIFY( 0 != stream_ );
+
+ QFile file;
+ QVERIFY( file.open(stream_, QIODevice::ReadOnly) );
+ QCOMPARE( file.pos(), (qint64)0 );
+ QVERIFY( file.seek(position) );
+ QCOMPARE( file.pos(), position );
+
+ file.close();
+
+ QVERIFY( !QT_FSEEK(stream_, QT_OFF_T(0), SEEK_SET) );
+ QCOMPARE( QT_FTELL(stream_), QT_OFF_T(0) );
+ QVERIFY( !QT_FSEEK(stream_, QT_OFF_T(position), SEEK_SET) );
+ QCOMPARE( QT_FTELL(stream_), QT_OFF_T(position) );
+
+ QVERIFY( file.open(stream_, QIODevice::ReadOnly) );
+ QCOMPARE( QT_FTELL(stream_), QT_OFF_T(position) );
+ QCOMPARE( file.pos(), position );
+ QVERIFY( file.seek(0) );
+ QCOMPARE( file.pos(), (qint64)0 );
+
+ file.close();
+
+ QVERIFY( !::fclose(stream_) );
+ stream_ = 0;
+}
+
+void tst_LargeFile::openFileForReading()
+{
+ largeFile.setFileName("qt_largefile.tmp");
+ QVERIFY( largeFile.open(QIODevice::ReadOnly) );
+}
+
+void tst_LargeFile::readFile()
+{
+ QFETCH( qint64, position );
+ QFETCH( QByteArray, block );
+ QCOMPARE( block.size(), blockSize );
+
+ QVERIFY( largeFile.size() >= position + blockSize );
+
+ QVERIFY( largeFile.seek(position) );
+ QCOMPARE( largeFile.pos(), position );
+
+ QCOMPARE( largeFile.read(blockSize), block );
+ QCOMPARE( largeFile.pos(), position + blockSize );
+}
+
+void tst_LargeFile::mapFile()
+{
+ QFETCH( qint64, position );
+ QFETCH( QByteArray, block );
+ QCOMPARE( block.size(), blockSize );
+
+ // Keep full block mapped to facilitate OS and/or internal reuse by Qt.
+ uchar *baseAddress = largeFile.map(position, blockSize);
+ QVERIFY( baseAddress );
+ QVERIFY( qEqual(block.begin(), block.end(), reinterpret_cast<char*>(baseAddress)) );
+
+ for (int offset = 1; offset < blockSize; ++offset) {
+ uchar *address = largeFile.map(position + offset, blockSize - offset);
+
+ QVERIFY( address );
+ if ( !qEqual(block.begin() + offset, block.end(), reinterpret_cast<char*>(address)) ) {
+ qDebug() << "Expected:" << block.toHex();
+ qDebug() << "Actual :" << QByteArray(reinterpret_cast<char*>(address), blockSize).toHex();
+ QVERIFY(false);
+ }
+
+ QVERIFY( largeFile.unmap( address ) );
+ }
+
+ QVERIFY( largeFile.unmap( baseAddress ) );
+}
+
+void tst_LargeFile::mapOffsetOverflow()
+{
+#if defined(Q_OS_MAC)
+ QSKIP("mmap'ping beyond EOF may succeed; generate bus error on access", SkipAll);
+#endif
+
+ // Out-of-range mappings should fail, and not silently clip the offset
+ for (int i = 50; i < 63; ++i) {
+ uchar *address = 0;
+
+ address = largeFile.map(((qint64)1 << i), blockSize);
+ QVERIFY( !address );
+
+ address = largeFile.map(((qint64)1 << i) + blockSize, blockSize);
+ QVERIFY( !address );
+ }
+}
+
+QTEST_APPLESS_MAIN(tst_LargeFile)
+#include "tst_largefile.moc"
+
diff --git a/tests/auto/corelib/io/qfile/noendofline.txt b/tests/auto/corelib/io/qfile/noendofline.txt
new file mode 100644
index 0000000000..e120842ad9
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/noendofline.txt
@@ -0,0 +1,3 @@
+Do not touch the content of this file.
+It shows a text file
+with no end-of-line-character on the last line \ No newline at end of file
diff --git a/tests/auto/corelib/io/qfile/qfile.pro b/tests/auto/corelib/io/qfile/qfile.pro
new file mode 100644
index 0000000000..f41d32789a
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/qfile.pro
@@ -0,0 +1,10 @@
+TEMPLATE = subdirs
+wince*|symbian:{
+ SUBDIRS = test
+} else {
+ SUBDIRS = test stdinprocess
+}
+
+!symbian:SUBDIRS += largefile
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/io/qfile/qfile.qrc b/tests/auto/corelib/io/qfile/qfile.qrc
new file mode 100644
index 0000000000..2c63d8afeb
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/qfile.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/tst_qfileinfo/">
+ <file>resources/</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/corelib/io/qfile/rename-fallback.qrc b/tests/auto/corelib/io/qfile/rename-fallback.qrc
new file mode 100644
index 0000000000..c8a894a61d
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/rename-fallback.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>rename-fallback.qrc</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/corelib/io/qfile/resources/file1.ext1 b/tests/auto/corelib/io/qfile/resources/file1.ext1
new file mode 100644
index 0000000000..e56e15bb7d
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/resources/file1.ext1
@@ -0,0 +1 @@
+12345
diff --git a/tests/auto/corelib/io/qfile/stdinprocess/main.cpp b/tests/auto/corelib/io/qfile/stdinprocess/main.cpp
new file mode 100644
index 0000000000..57a8d904f5
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/stdinprocess/main.cpp
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore>
+
+int main(int argc, char *argv[])
+{
+ if (argc < 2) {
+ printf("usage: stdinprocess <all|line <0|1>>\n");
+ printf("echos all its input to its output.\n");
+ return 1;
+ }
+
+ QFile file;
+
+ if (strcmp(argv[1], "all") == 0) {
+ file.open(stdin, QFile::ReadWrite);
+ printf("%s", file.readAll().constData());
+ } else if (strcmp(argv[1], "line") == 0) {
+ if (strcmp(argv[2], "0") == 0) {
+ file.open(stdin, QFile::ReadWrite);
+ } else {
+ file.open(0, QFile::ReadWrite);
+ }
+
+ char line[1024];
+ while (file.readLine(line, sizeof(line)) > 0) {
+ printf("%s", line);
+ fflush(stdout);
+ }
+ }
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qfile/stdinprocess/stdinprocess.pro b/tests/auto/corelib/io/qfile/stdinprocess/stdinprocess.pro
new file mode 100644
index 0000000000..bf791ffc61
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/stdinprocess/stdinprocess.pro
@@ -0,0 +1,6 @@
+SOURCES += main.cpp
+QT = core
+CONFIG -= app_bundle debug_and_release_target
+CONFIG += console
+
+
diff --git a/tests/auto/corelib/io/qfile/test/test.pro b/tests/auto/corelib/io/qfile/test/test.pro
new file mode 100644
index 0000000000..4117d3f690
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/test/test.pro
@@ -0,0 +1,45 @@
+load(qttest_p4)
+SOURCES += ../tst_qfile.cpp
+
+wince*|symbian {
+ QT = core gui
+ files.files += ..\\dosfile.txt ..\\noendofline.txt ..\\testfile.txt \
+ ..\\testlog.txt ..\\two.dots.file ..\\tst_qfile.cpp \
+ ..\\Makefile ..\\forCopying.txt ..\\forRenaming.txt
+ files.path = .
+ resour.files += ..\\resources\\file1.ext1
+ resour.path = resources
+
+ DEPLOYMENT += files resour
+}
+
+wince* {
+ SOURCES += $$QT_SOURCE_TREE/src/corelib/kernel/qfunctions_wince.cpp # needed for QT_OPEN
+ DEFINES += SRCDIR=\\\"\\\"
+} else:symbian {
+ # do not define SRCDIR at all
+ TARGET.EPOCHEAPSIZE = 0x100000 0x3000000
+} else {
+ QT = core network
+ DEFINES += SRCDIR=\\\"$$PWD/../\\\"
+}
+
+RESOURCES += ../qfile.qrc ../rename-fallback.qrc ../copy-fallback.qrc
+
+TARGET = ../tst_qfile
+
+win32 {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_qfile
+ } else {
+ TARGET = ../../release/tst_qfile
+ }
+ LIBS+=-lole32 -luuid
+}
+
+symbian {
+ LIBS+=-lefsrv
+}
+
+mac*:CONFIG+=insignificant_test
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/corelib/io/qfile/testfile.txt b/tests/auto/corelib/io/qfile/testfile.txt
new file mode 100644
index 0000000000..a5f25a118a
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/testfile.txt
@@ -0,0 +1,6 @@
+----------------------------------------------------------
+DO NOT CHANGE ANY CONTENT OR ACCESS RIGHTS OF THIS FILE!!!
+----------------------------------------------------------
+
+This demo file has only six lines
+and a size of exactly 245 Bytes.
diff --git a/tests/auto/corelib/io/qfile/testlog.txt b/tests/auto/corelib/io/qfile/testlog.txt
new file mode 100644
index 0000000000..bcc7222b2f
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/testlog.txt
@@ -0,0 +1,144 @@
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts
+2006-09-29 13:50:08.349: -- File log starts_
+2006-09-29 13:50:08.349: -- File log starts
diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp
new file mode 100644
index 0000000000..f2031497ed
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp
@@ -0,0 +1,3406 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qplatformdefs.h>
+
+#include <QAbstractFileEngine>
+#include <QFSFileEngine>
+#include <QCoreApplication>
+#include <QDebug>
+#include <QDir>
+#include <QFile>
+#include <QFileInfo>
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+#include <QHostInfo>
+#endif
+#include <QProcess>
+#ifndef Q_OS_WIN
+# include <sys/types.h>
+# include <unistd.h>
+#endif
+#ifdef Q_OS_MAC
+# include <sys/mount.h>
+#elif defined(Q_OS_LINUX)
+# include <sys/vfs.h>
+#elif defined(Q_OS_FREEBSD)
+# include <sys/param.h>
+# include <sys/mount.h>
+#elif defined(Q_OS_IRIX)
+# include <sys/statfs.h>
+#elif defined(Q_OS_WINCE)
+# include <qplatformdefs.h>
+# include <private/qfsfileengine_p.h>
+#elif defined(Q_OS_SYMBIAN)
+# include <f32file.h>
+#endif
+
+#include <stdio.h>
+#include <errno.h>
+#include "../../../network-settings.h"
+
+#if defined(Q_OS_SYMBIAN)
+# define SRCDIR ""
+#endif
+
+#ifndef STDIN_FILENO
+#define STDIN_FILENO 0
+#endif
+
+#ifndef STDOUT_FILENO
+#define STDOUT_FILENO 1
+#endif
+
+#ifndef STDERR_FILENO
+#define STDERR_FILENO 2
+#endif
+
+#ifndef QT_OPEN_BINARY
+#define QT_OPEN_BINARY 0
+#endif
+
+Q_DECLARE_METATYPE(QFile::FileError)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QFile : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QFile();
+ virtual ~tst_QFile();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void exists();
+ void open_data();
+ void open();
+ void openUnbuffered();
+ void size_data();
+ void size();
+ void sizeNoExist();
+ void seek();
+ void setSize();
+ void setSizeSeek();
+ void atEnd();
+ void readLine();
+ void readLine2();
+ void readLineNullInLine();
+ void readAll_data();
+ void readAll();
+ void readAllBuffer();
+ void readAllStdin();
+ void readLineStdin();
+ void readLineStdin_lineByLine();
+ void text();
+ void missingEndOfLine();
+ void readBlock();
+ void getch();
+ void ungetChar();
+ void createFile();
+ void append();
+ void permissions_data();
+ void permissions();
+ void setPermissions();
+ void copy();
+ void copyAfterFail();
+ void copyRemovesTemporaryFile() const;
+ void copyShouldntOverwrite();
+ void copyFallback();
+ void link();
+ void linkToDir();
+ void absolutePathLinkToRelativePath();
+ void readBrokenLink();
+ void readTextFile_data();
+ void readTextFile();
+ void readTextFile2();
+ void writeTextFile_data();
+ void writeTextFile();
+ /* void largeFileSupport(); */
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ void largeUncFileSupport();
+#endif
+ void tailFile();
+ void flush();
+ void bufferedRead();
+ void isSequential();
+ void encodeName();
+ void truncate();
+ void seekToPos();
+ void seekAfterEndOfFile();
+ void FILEReadWrite();
+ void i18nFileName_data();
+ void i18nFileName();
+ void longFileName_data();
+ void longFileName();
+ void fileEngineHandler();
+ void useQFileInAFileHandler();
+ void getCharFF();
+ void remove_and_exists();
+ void removeOpenFile();
+ void fullDisk();
+ void writeLargeDataBlock_data();
+ void writeLargeDataBlock();
+ void readFromWriteOnlyFile();
+ void writeToReadOnlyFile();
+ void virtualFile();
+ void textFile();
+ void rename_data();
+ void rename();
+ void renameWithAtEndSpecialFile() const;
+ void renameFallback();
+ void renameMultiple();
+ void appendAndRead();
+ void miscWithUncPathAsCurrentDir();
+ void standarderror();
+ void handle();
+ void nativeHandleLeaks();
+
+ void readEof_data();
+ void readEof();
+
+ void map_data();
+ void map();
+ void mapResource_data();
+ void mapResource();
+ void mapOpenMode_data();
+ void mapOpenMode();
+
+ void openStandardStreams();
+
+ void resize_data();
+ void resize();
+
+ void objectConstructors();
+#ifdef Q_OS_SYMBIAN
+ void platformSecurity_data();
+ void platformSecurity();
+#endif
+ void caseSensitivity();
+
+ void autocloseHandle();
+
+ // --- Task related tests below this line
+ void task167217();
+
+ void openDirectory();
+ void writeNothing();
+
+public:
+// disabled this test for the moment... it hangs
+ void invalidFile_data();
+ void invalidFile();
+
+private:
+ enum FileType {
+ OpenQFile,
+ OpenFd,
+ OpenStream,
+#ifdef Q_OS_SYMBIAN
+ OpenRFile,
+#endif
+ NumberOfFileTypes
+ };
+
+ void openStandardStreamsFileDescriptors();
+ void openStandardStreamsBufferedStreams();
+
+ bool openFd(QFile &file, QIODevice::OpenMode mode, QFile::FileHandleFlags handleFlags)
+ {
+ int fdMode = QT_OPEN_LARGEFILE | QT_OPEN_BINARY;
+
+ // File will be truncated if in Write mode.
+ if (mode & QIODevice::WriteOnly)
+ fdMode |= QT_OPEN_WRONLY | QT_OPEN_TRUNC;
+ if (mode & QIODevice::ReadOnly)
+ fdMode |= QT_OPEN_RDONLY;
+
+ fd_ = QT_OPEN(qPrintable(file.fileName()), fdMode);
+
+ return (-1 != fd_) && file.open(fd_, mode, handleFlags);
+ }
+
+ bool openStream(QFile &file, QIODevice::OpenMode mode, QFile::FileHandleFlags handleFlags)
+ {
+ char const *streamMode = "";
+
+ // File will be truncated if in Write mode.
+ if (mode & QIODevice::WriteOnly)
+ streamMode = "wb+";
+ else if (mode & QIODevice::ReadOnly)
+ streamMode = "rb";
+
+ stream_ = QT_FOPEN(qPrintable(file.fileName()), streamMode);
+
+ return stream_ && file.open(stream_, mode, handleFlags);
+ }
+
+#ifdef Q_OS_SYMBIAN
+ bool openRFile(QFile &file, QIODevice::OpenMode mode, QFile::FileHandleFlags handleFlags)
+ {
+ //connect file server first time
+ if (!rfs_.Handle() && rfs_.Connect() != KErrNone)
+ return false;
+ //symbian does not like ./ in filenames, so open by absolute path
+ QString fileName(QDir::toNativeSeparators(QFileInfo(file).absoluteFilePath()));
+ TPtrC fn(fileName.utf16(), fileName.length());
+ TInt smode = 0;
+ if (mode & QIODevice::WriteOnly)
+ smode |= EFileWrite;
+ if (mode & QIODevice::ReadOnly)
+ smode |= EFileRead;
+ TInt r;
+ if ((mode & QIODevice::Truncate) || (!(mode & QIODevice::ReadOnly) && !(mode & QIODevice::Append))) {
+ r = rfile_.Replace(rfs_, fn, smode);
+ } else {
+ r = rfile_.Open(rfs_, fn, smode);
+ if (r == KErrNotFound && (mode & QIODevice::WriteOnly)) {
+ r = rfile_.Create(rfs_, fn, smode);
+ }
+ }
+ return (r == KErrNone) && file.open(rfile_, mode, handleFlags);
+ }
+#endif
+
+ bool openFile(QFile &file, QIODevice::OpenMode mode, FileType type = OpenQFile, QFile::FileHandleFlags handleFlags = QFile::DontCloseHandle)
+ {
+ if (mode & QIODevice::WriteOnly && !file.exists())
+ {
+ // Make sure the file exists
+ QFile createFile(file.fileName());
+ if (!createFile.open(QIODevice::ReadWrite))
+ return false;
+ }
+
+ // Note: openFd and openStream will truncate the file if write mode.
+ switch (type)
+ {
+ case OpenQFile:
+ return file.open(mode);
+
+ case OpenFd:
+ return openFd(file, mode, handleFlags);
+
+ case OpenStream:
+ return openStream(file, mode, handleFlags);
+#ifdef Q_OS_SYMBIAN
+ case OpenRFile:
+ return openRFile(file, mode, handleFlags);
+#endif
+ case NumberOfFileTypes:
+ break;
+ }
+
+ return false;
+ }
+
+ void closeFile(QFile &file)
+ {
+ file.close();
+
+ if (-1 != fd_)
+ QT_CLOSE(fd_);
+ if (stream_)
+ ::fclose(stream_);
+#ifdef Q_OS_SYMBIAN
+ if (rfile_.SubSessionHandle())
+ rfile_.Close();
+#endif
+
+ fd_ = -1;
+ stream_ = 0;
+ }
+
+ int fd_;
+ FILE *stream_;
+#ifdef Q_OS_SYMBIAN
+ RFs rfs_;
+ RFile rfile_;
+#endif
+};
+
+tst_QFile::tst_QFile()
+{
+}
+
+tst_QFile::~tst_QFile()
+{
+
+}
+
+void tst_QFile::init()
+{
+// TODO: Add initialization code here.
+// This will be executed immediately before each test is run.
+ fd_ = -1;
+ stream_ = 0;
+}
+
+void tst_QFile::cleanup()
+{
+// TODO: Add cleanup code here.
+// This will be executed immediately after each test is run.
+
+ // for copyFallback()
+ if (QFile::exists("file-copy-destination.txt")) {
+ QFile::setPermissions("file-copy-destination.txt",
+ QFile::ReadOwner | QFile::WriteOwner);
+ QFile::remove("file-copy-destination.txt");
+ }
+
+ // for renameFallback()
+ QFile::remove("file-rename-destination.txt");
+
+ // for copyAfterFail()
+ QFile::remove("file-to-be-copied.txt");
+ QFile::remove("existing-file.txt");
+ QFile::remove("copied-file-1.txt");
+ QFile::remove("copied-file-2.txt");
+
+ // for renameMultiple()
+ QFile::remove("file-to-be-renamed.txt");
+ QFile::remove("existing-file.txt");
+ QFile::remove("file-renamed-once.txt");
+ QFile::remove("file-renamed-twice.txt");
+
+ if (-1 != fd_)
+ QT_CLOSE(fd_);
+ if (stream_)
+ ::fclose(stream_);
+}
+
+void tst_QFile::initTestCase()
+{
+ QFile::remove("noreadfile");
+
+ // create a file and make it read-only
+ QFile file("readonlyfile");
+ file.open(QFile::WriteOnly);
+ file.write("a", 1);
+ file.close();
+ file.setPermissions(QFile::ReadOwner);
+
+ // create another file and make it not readable
+ file.setFileName("noreadfile");
+ file.open(QFile::WriteOnly);
+ file.write("b", 1);
+ file.close();
+ file.setPermissions(0);
+}
+
+void tst_QFile::cleanupTestCase()
+{
+ // clean up the files we created
+ QFile::remove("readonlyfile");
+ QFile::remove("noreadfile");
+ QFile::remove("myLink.lnk");
+ QFile::remove("appendme.txt");
+ QFile::remove("createme.txt");
+ QFile::remove("file.txt");
+ QFile::remove("genfile.txt");
+ QFile::remove("seekToPos.txt");
+ QFile::remove("setsizeseek.txt");
+ QFile::remove("stdfile.txt");
+ QFile::remove("textfile.txt");
+ QFile::remove("truncate.txt");
+ QFile::remove("winfile.txt");
+ QFile::remove("writeonlyfile");
+ QFile::remove("largeblockfile.txt");
+ QFile::remove("tst_qfile_copy.cpp");
+ QFile::remove("nullinline.txt");
+ QFile::remove("myLink2.lnk");
+ QFile::remove("resources");
+ QFile::remove("qfile_map_testfile");
+ QFile::remove("readAllBuffer.txt");
+ QFile::remove("qt_file.tmp");
+ QFile::remove("File.txt");
+}
+
+//------------------------------------------
+// The 'testfile' is currently just a
+// testfile. The path of this file, the
+// attributes and the contents itself
+// will be changed as far as we have a
+// proper way to handle files in the
+// testing environment.
+//------------------------------------------
+
+void tst_QFile::exists()
+{
+ QFile f( SRCDIR "testfile.txt" );
+ QCOMPARE( f.exists(), (bool)TRUE );
+
+ QFile file("nobodyhassuchafile");
+ file.remove();
+ QVERIFY(!file.exists());
+
+ QFile file2("nobodyhassuchafile");
+ QVERIFY(file2.open(QIODevice::WriteOnly));
+ file2.close();
+
+ QVERIFY(file.exists());
+
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ file.close();
+ QVERIFY(file.exists());
+
+ file.remove();
+ QVERIFY(!file.exists());
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QFile unc("//" + QtNetworkSettings::winServerName() + "/testshare/readme.txt");
+ QVERIFY(unc.exists());
+#endif
+}
+
+void tst_QFile::open_data()
+{
+ QTest::addColumn<QString>("filename");
+ QTest::addColumn<int>("mode");
+ QTest::addColumn<bool>("ok");
+ QTest::addColumn<QFile::FileError>("status");
+
+#ifdef Q_OS_MAC
+ static const QString denied("Operation not permitted");
+#else
+ static const QString denied("Permission denied");
+#endif
+ QTest::newRow( "exist_readOnly" )
+ << QString(SRCDIR "testfile.txt") << int(QIODevice::ReadOnly)
+ << (bool)TRUE << QFile::NoError;
+
+ QTest::newRow( "exist_writeOnly" )
+ << QString("readonlyfile")
+ << int(QIODevice::WriteOnly)
+ << (bool)FALSE
+ << QFile::OpenError;
+
+ QTest::newRow( "exist_append" )
+ << QString("readonlyfile") << int(QIODevice::Append)
+ << (bool)FALSE << QFile::OpenError;
+
+ QTest::newRow( "nonexist_readOnly" )
+ << QString("nonExist.txt") << int(QIODevice::ReadOnly)
+ << (bool)FALSE << QFile::OpenError;
+
+ QTest::newRow("emptyfile")
+ << QString("")
+ << int(QIODevice::ReadOnly)
+ << (bool)FALSE
+ << QFile::OpenError;
+
+ QTest::newRow("nullfile") << QString() << int(QIODevice::ReadOnly) << (bool)FALSE
+ << QFile::OpenError;
+
+ QTest::newRow("two-dots") << QString(SRCDIR "two.dots.file") << int(QIODevice::ReadOnly) << (bool)TRUE
+ << QFile::NoError;
+
+ QTest::newRow("readonlyfile") << QString("readonlyfile") << int(QIODevice::WriteOnly)
+ << (bool)FALSE << QFile::OpenError;
+ QTest::newRow("noreadfile") << QString("noreadfile") << int(QIODevice::ReadOnly)
+ << (bool)FALSE << QFile::OpenError;
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QTest::newRow("//./PhysicalDrive0") << QString("//./PhysicalDrive0") << int(QIODevice::ReadOnly)
+ << (bool)TRUE << QFile::NoError;
+ QTest::newRow("uncFile") << "//" + QtNetworkSettings::winServerName() + "/testshare/test.pri" << int(QIODevice::ReadOnly)
+ << true << QFile::NoError;
+#endif
+}
+
+void tst_QFile::open()
+{
+ QFETCH( QString, filename );
+ QFETCH( int, mode );
+
+ QFile f( filename );
+
+ QFETCH( bool, ok );
+
+#if defined(Q_OS_SYMBIAN)
+ if (qstrcmp(QTest::currentDataTag(), "noreadfile") == 0)
+ QSKIP("Symbian does not support non-readable files", SkipSingle);
+#elif defined(Q_OS_UNIX)
+ if (::getuid() == 0)
+ // root and Chuck Norris don't care for file permissions. Skip.
+ QSKIP("Running this test as root doesn't make sense", SkipAll);
+#endif
+
+#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
+ QEXPECT_FAIL("noreadfile", "Windows does not currently support non-readable files.", Abort);
+#endif
+ if (filename.isEmpty())
+ QTest::ignoreMessage(QtWarningMsg, "QFSFileEngine::open: No file name specified");
+
+ QCOMPARE(f.open( QIODevice::OpenMode(mode) ), ok);
+
+ QTEST( f.error(), "status" );
+}
+
+void tst_QFile::openUnbuffered()
+{
+ QFile file(SRCDIR "testfile.txt");
+ QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Unbuffered));
+ char c = '\0';
+ QVERIFY(file.seek(1));
+ QCOMPARE(file.pos(), qint64(1));
+ QVERIFY(file.getChar(&c));
+ QCOMPARE(file.pos(), qint64(2));
+ char d = '\0';
+ QVERIFY(file.seek(3));
+ QCOMPARE(file.pos(), qint64(3));
+ QVERIFY(file.getChar(&d));
+ QCOMPARE(file.pos(), qint64(4));
+ QVERIFY(file.seek(1));
+ QCOMPARE(file.pos(), qint64(1));
+ char c2 = '\0';
+ QVERIFY(file.getChar(&c2));
+ QCOMPARE(file.pos(), qint64(2));
+ QVERIFY(file.seek(3));
+ QCOMPARE(file.pos(), qint64(3));
+ char d2 = '\0';
+ QVERIFY(file.getChar(&d2));
+ QCOMPARE(file.pos(), qint64(4));
+ QCOMPARE(c, c2);
+ QCOMPARE(d, d2);
+ QCOMPARE(c, '-');
+ QCOMPARE(d, '-');
+}
+
+void tst_QFile::size_data()
+{
+ QTest::addColumn<QString>("filename");
+ QTest::addColumn<qint64>("size");
+
+ QTest::newRow( "exist01" ) << QString(SRCDIR "testfile.txt") << (qint64)245;
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ // Only test UNC on Windows./
+ QTest::newRow("unc") << "//" + QString(QtNetworkSettings::winServerName() + "/testshare/test.pri") << (qint64)34;
+#endif
+}
+
+void tst_QFile::size()
+{
+ QFETCH( QString, filename );
+ QFETCH( qint64, size );
+
+#ifdef Q_WS_WINCE
+ filename = QFileInfo(filename).absoluteFilePath();
+#endif
+
+ {
+ QFile f( filename );
+ QCOMPARE( f.size(), size );
+
+ QVERIFY( f.open(QIODevice::ReadOnly) );
+ QCOMPARE( f.size(), size );
+ }
+
+ {
+ QFile f;
+ FILE* stream = QT_FOPEN(filename.toLocal8Bit().constData(), "rb");
+ QVERIFY( stream );
+ QVERIFY( f.open(stream, QIODevice::ReadOnly) );
+ QCOMPARE( f.size(), size );
+
+ f.close();
+ fclose(stream);
+ }
+
+ {
+#ifdef Q_WS_WINCE
+ QSKIP("Currently low level file I/O not well supported on Windows CE", SkipSingle);
+#endif
+ QFile f;
+
+ int fd = QT_OPEN(filename.toLocal8Bit().constData(), QT_OPEN_RDONLY);
+
+ QVERIFY( fd != -1 );
+ QVERIFY( f.open(fd, QIODevice::ReadOnly) );
+ QCOMPARE( f.size(), size );
+
+ f.close();
+ QT_CLOSE(fd);
+ }
+}
+
+void tst_QFile::sizeNoExist()
+{
+ QFile file("nonexist01");
+ QVERIFY( !file.exists() );
+ QCOMPARE( file.size(), (qint64)0 );
+ QVERIFY( !file.open(QIODevice::ReadOnly) );
+}
+
+void tst_QFile::seek()
+{
+ QFile::remove("newfile.txt");
+ QFile file("newfile.txt");
+ file.open(QIODevice::WriteOnly);
+ QCOMPARE(file.size(), qint64(0));
+ QCOMPARE(file.pos(), qint64(0));
+ QVERIFY(file.seek(10));
+ QCOMPARE(file.pos(), qint64(10));
+ QCOMPARE(file.size(), qint64(0));
+ file.close();
+ QFile::remove("newfile.txt");
+}
+
+void tst_QFile::setSize()
+{
+ DEPENDS_ON( "size" );
+
+ if ( QFile::exists( "createme.txt" ) )
+ QFile::remove( "createme.txt" );
+ QVERIFY( !QFile::exists( "createme.txt" ) );
+
+ QFile f("createme.txt");
+ QVERIFY(f.open(QIODevice::Truncate | QIODevice::ReadWrite));
+ f.putChar('a');
+
+ f.seek(0);
+ char c = '\0';
+ f.getChar(&c);
+ QCOMPARE(c, 'a');
+
+ QCOMPARE(f.size(), (qlonglong)1);
+ bool ok = f.resize(99);
+ QVERIFY(ok);
+ QCOMPARE(f.size(), (qlonglong)99);
+
+ f.seek(0);
+ c = '\0';
+ f.getChar(&c);
+ QCOMPARE(c, 'a');
+
+ QVERIFY(f.resize(1));
+ QCOMPARE(f.size(), (qlonglong)1);
+
+ f.seek(0);
+ c = '\0';
+ f.getChar(&c);
+ QCOMPARE(c, 'a');
+
+ f.close();
+
+ QCOMPARE(f.size(), (qlonglong)1);
+ QVERIFY(f.resize(100));
+ QCOMPARE(f.size(), (qlonglong)100);
+ QVERIFY(f.resize(50));
+ QCOMPARE(f.size(), (qlonglong)50);
+}
+
+void tst_QFile::setSizeSeek()
+{
+ QFile::remove("setsizeseek.txt");
+ QFile f("setsizeseek.txt");
+ QVERIFY(f.open(QFile::WriteOnly));
+ f.write("ABCD");
+
+ QCOMPARE(f.pos(), qint64(4));
+ f.resize(2);
+ QCOMPARE(f.pos(), qint64(2));
+ f.resize(4);
+ QCOMPARE(f.pos(), qint64(2));
+ f.resize(0);
+ QCOMPARE(f.pos(), qint64(0));
+ f.resize(4);
+ QCOMPARE(f.pos(), qint64(0));
+
+ f.seek(3);
+ QCOMPARE(f.pos(), qint64(3));
+ f.resize(2);
+ QCOMPARE(f.pos(), qint64(2));
+}
+
+void tst_QFile::atEnd()
+{
+ QFile f( SRCDIR "testfile.txt" );
+ QVERIFY(f.open( QIODevice::ReadOnly ));
+
+ int size = f.size();
+ f.seek( size );
+
+ bool end = f.atEnd();
+ f.close();
+ QCOMPARE( end, (bool)TRUE );
+}
+
+void tst_QFile::readLine()
+{
+ QFile f( SRCDIR "testfile.txt" );
+ QVERIFY(f.open( QIODevice::ReadOnly ));
+
+ int i = 0;
+ char p[128];
+ int foo;
+ while ( (foo=f.readLine( p, 128 )) > 0 ) {
+ ++i;
+ if ( i == 5 ) {
+ QCOMPARE( p[0], 'T' );
+ QCOMPARE( p[3], 's' );
+ QCOMPARE( p[11], 'i' );
+ }
+ }
+ f.close();
+ QCOMPARE( i, 6 );
+}
+
+void tst_QFile::readLine2()
+{
+ QFile f( SRCDIR "testfile.txt" );
+ f.open( QIODevice::ReadOnly );
+
+ char p[128];
+ QCOMPARE(f.readLine(p, 60), qlonglong(59));
+ QCOMPARE(f.readLine(p, 60), qlonglong(59));
+ memset(p, '@', sizeof(p));
+ QCOMPARE(f.readLine(p, 60), qlonglong(59));
+
+ QCOMPARE(p[57], '-');
+ QCOMPARE(p[58], '\n');
+ QCOMPARE(p[59], '\0');
+ QCOMPARE(p[60], '@');
+}
+
+void tst_QFile::readLineNullInLine()
+{
+ QFile::remove("nullinline.txt");
+ QFile file("nullinline.txt");
+ QVERIFY(file.open(QIODevice::ReadWrite));
+ QVERIFY(file.write("linewith\0null\nanotherline\0withnull\n\0\nnull\0", 42) > 0);
+ QVERIFY(file.flush());
+ file.reset();
+
+ QCOMPARE(file.readLine(), QByteArray("linewith\0null\n", 14));
+ QCOMPARE(file.readLine(), QByteArray("anotherline\0withnull\n", 21));
+ QCOMPARE(file.readLine(), QByteArray("\0\n", 2));
+ QCOMPARE(file.readLine(), QByteArray("null\0", 5));
+ QCOMPARE(file.readLine(), QByteArray());
+}
+
+void tst_QFile::readAll_data()
+{
+ QTest::addColumn<bool>("textMode");
+ QTest::addColumn<QString>("fileName");
+ QTest::newRow( "TextMode unixfile" ) << true << SRCDIR "testfile.txt";
+ QTest::newRow( "BinaryMode unixfile" ) << false << SRCDIR "testfile.txt";
+ QTest::newRow( "TextMode dosfile" ) << true << SRCDIR "dosfile.txt";
+ QTest::newRow( "BinaryMode dosfile" ) << false << SRCDIR "dosfile.txt";
+ QTest::newRow( "TextMode bigfile" ) << true << SRCDIR "tst_qfile.cpp";
+ QTest::newRow( "BinaryMode bigfile" ) << false << SRCDIR "tst_qfile.cpp";
+ QVERIFY(QFile(SRCDIR "tst_qfile.cpp").size() > 64*1024);
+}
+
+void tst_QFile::readAll()
+{
+ QFETCH( bool, textMode );
+ QFETCH( QString, fileName );
+
+ QFile file(fileName);
+ if (textMode)
+ QVERIFY(file.open(QFile::Text | QFile::ReadOnly));
+ else
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ QByteArray a = file.readAll();
+ file.reset();
+ QVERIFY(file.pos() == 0);
+
+ QVERIFY(file.bytesAvailable() > 7);
+ QByteArray b = file.read(1);
+ char x;
+ file.getChar(&x);
+ b.append(x);
+ b.append(file.read(5));
+ b.append(file.readAll());
+
+ QCOMPARE(a, b);
+}
+
+void tst_QFile::readAllBuffer()
+{
+ QString fileName = QLatin1String("readAllBuffer.txt");
+
+ QFile::remove(fileName);
+
+ QFile writer(fileName);
+ QFile reader(fileName);
+
+ QByteArray data1("This is arguably a very simple text.");
+ QByteArray data2("This is surely not as simple a test.");
+
+ QVERIFY( writer.open(QIODevice::ReadWrite | QIODevice::Unbuffered) );
+ QVERIFY( reader.open(QIODevice::ReadOnly) );
+
+ QCOMPARE( writer.write(data1), qint64(data1.size()) );
+ QVERIFY( writer.seek(0) );
+
+ QByteArray result;
+ result = reader.read(18);
+ QCOMPARE( result.size(), 18 );
+
+ QCOMPARE( writer.write(data2), qint64(data2.size()) ); // new data, old version buffered in reader
+ QCOMPARE( writer.write(data2), qint64(data2.size()) ); // new data, unbuffered in reader
+
+ result += reader.readAll();
+
+ QCOMPARE( result, data1 + data2 );
+
+ QFile::remove(fileName);
+}
+
+void tst_QFile::readAllStdin()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("Currently no stdin/out supported for Windows CE or Symbian", SkipAll);
+#endif
+#if defined(QT_NO_PROCESS)
+ QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
+#else
+ QByteArray lotsOfData(1024, '@'); // 10 megs
+
+ QProcess process;
+ process.start("stdinprocess/stdinprocess all");
+ QVERIFY( process.waitForStarted() );
+ for (int i = 0; i < 5; ++i) {
+ QTest::qWait(1000);
+ process.write(lotsOfData);
+ while (process.bytesToWrite() > 0) {
+ QVERIFY(process.waitForBytesWritten());
+ }
+ }
+
+ process.closeWriteChannel();
+ process.waitForFinished();
+ QCOMPARE(process.readAll().size(), lotsOfData.size() * 5);
+#endif
+}
+
+void tst_QFile::readLineStdin()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("Currently no stdin/out supported for Windows CE or Symbian", SkipAll);
+#endif
+#if defined(QT_NO_PROCESS)
+ QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
+#else
+
+ QByteArray lotsOfData(1024, '@'); // 10 megs
+ for (int i = 0; i < lotsOfData.size(); ++i) {
+ if ((i % 32) == 31)
+ lotsOfData[i] = '\n';
+ else
+ lotsOfData[i] = char('0' + i % 32);
+ }
+
+ for (int i = 0; i < 2; ++i) {
+ QProcess process;
+ process.start(QString("stdinprocess/stdinprocess line %1").arg(i), QIODevice::Text | QIODevice::ReadWrite);
+ for (int i = 0; i < 5; ++i) {
+ QTest::qWait(1000);
+ process.write(lotsOfData);
+ while (process.bytesToWrite() > 0) {
+ QVERIFY(process.waitForBytesWritten());
+ }
+ }
+
+ process.closeWriteChannel();
+ QVERIFY(process.waitForFinished(5000));
+
+ QByteArray array = process.readAll();
+ QCOMPARE(array.size(), lotsOfData.size() * 5);
+ for (int i = 0; i < array.size(); ++i) {
+ if ((i % 32) == 31)
+ QCOMPARE(char(array[i]), '\n');
+ else
+ QCOMPARE(char(array[i]), char('0' + i % 32));
+ }
+ }
+#endif
+}
+
+void tst_QFile::readLineStdin_lineByLine()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("Currently no stdin/out supported for Windows CE", SkipAll);
+#endif
+#if defined(QT_NO_PROCESS)
+ QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
+#else
+ for (int i = 0; i < 2; ++i) {
+ QProcess process;
+ process.start(QString("stdinprocess/stdinprocess line %1").arg(i), QIODevice::Text | QIODevice::ReadWrite);
+ QVERIFY(process.waitForStarted());
+
+ for (int j = 0; j < 3; ++j) {
+ QByteArray line = "line " + QByteArray::number(j) + "\n";
+ QCOMPARE(process.write(line), qint64(line.size()));
+ QVERIFY(process.waitForBytesWritten(2000));
+ if (process.bytesAvailable() == 0)
+ QVERIFY(process.waitForReadyRead(2000));
+ QCOMPARE(process.readAll(), line);
+ }
+
+ process.closeWriteChannel();
+ QVERIFY(process.waitForFinished(5000));
+ }
+#endif
+}
+
+void tst_QFile::text()
+{
+ // dosfile.txt is a binary CRLF file
+ QFile file(SRCDIR "dosfile.txt");
+ QVERIFY(file.open(QFile::Text | QFile::ReadOnly));
+ QCOMPARE(file.readLine(),
+ QByteArray("/dev/system/root / reiserfs acl,user_xattr 1 1\n"));
+ QCOMPARE(file.readLine(),
+ QByteArray("/dev/sda1 /boot ext3 acl,user_xattr 1 2\n"));
+ file.ungetChar('\n');
+ file.ungetChar('2');
+ QCOMPARE(file.readLine().constData(), QByteArray("2\n").constData());
+}
+
+void tst_QFile::missingEndOfLine()
+{
+ QFile file(SRCDIR "noendofline.txt");
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ int nlines = 0;
+ while (!file.atEnd()) {
+ ++nlines;
+ file.readLine();
+ }
+
+ QCOMPARE(nlines, 3);
+}
+
+void tst_QFile::readBlock()
+{
+ QFile f( SRCDIR "testfile.txt" );
+ f.open( QIODevice::ReadOnly );
+
+ int length = 0;
+ char p[256];
+ length = f.read( p, 256 );
+ f.close();
+ QCOMPARE( length, 245 );
+ QCOMPARE( p[59], 'D' );
+ QCOMPARE( p[178], 'T' );
+ QCOMPARE( p[199], 'l' );
+}
+
+void tst_QFile::getch()
+{
+ QFile f( SRCDIR "testfile.txt" );
+ f.open( QIODevice::ReadOnly );
+
+ char c;
+ int i = 0;
+ while (f.getChar(&c)) {
+ QCOMPARE(f.pos(), qint64(i + 1));
+ if ( i == 59 )
+ QCOMPARE( c, 'D' );
+ ++i;
+ }
+ f.close();
+ QCOMPARE( i, 245 );
+}
+
+void tst_QFile::ungetChar()
+{
+ QFile f(SRCDIR "testfile.txt");
+ QVERIFY(f.open(QIODevice::ReadOnly));
+
+ QByteArray array = f.readLine();
+ QCOMPARE(array.constData(), "----------------------------------------------------------\n");
+ f.ungetChar('\n');
+
+ array = f.readLine();
+ QCOMPARE(array.constData(), "\n");
+
+ f.ungetChar('\n');
+ f.ungetChar('-');
+ f.ungetChar('-');
+
+ array = f.readLine();
+ QCOMPARE(array.constData(), "--\n");
+
+ QFile::remove("genfile.txt");
+ QFile out("genfile.txt");
+ QVERIFY(out.open(QIODevice::ReadWrite));
+ out.write("123");
+ out.seek(0);
+ QCOMPARE(out.readAll().constData(), "123");
+ out.ungetChar('3');
+ out.write("4");
+ out.seek(0);
+ QCOMPARE(out.readAll().constData(), "124");
+ out.ungetChar('4');
+ out.ungetChar('2');
+ out.ungetChar('1');
+ char buf[3];
+ QCOMPARE(out.read(buf, sizeof(buf)), qint64(3));
+ QCOMPARE(buf[0], '1');
+ QCOMPARE(buf[1], '2');
+ QCOMPARE(buf[2], '4');
+}
+
+void tst_QFile::invalidFile_data()
+{
+ QTest::addColumn<QString>("fileName");
+#if !defined(Q_WS_WIN) && !defined(Q_OS_SYMBIAN)
+ QTest::newRow( "x11" ) << QString( "qwe//" );
+#else
+ QTest::newRow( "colon1" ) << QString( "fail:invalid" );
+ QTest::newRow( "colon2" ) << QString( "f:ail:invalid" );
+ QTest::newRow( "colon3" ) << QString( ":failinvalid" );
+ QTest::newRow( "forwardslash" ) << QString( "fail/invalid" );
+ QTest::newRow( "asterisk" ) << QString( "fail*invalid" );
+ QTest::newRow( "questionmark" ) << QString( "fail?invalid" );
+ QTest::newRow( "quote" ) << QString( "fail\"invalid" );
+ QTest::newRow( "lt" ) << QString( "fail<invalid" );
+ QTest::newRow( "gt" ) << QString( "fail>invalid" );
+ QTest::newRow( "pipe" ) << QString( "fail|invalid" );
+#endif
+}
+
+void tst_QFile::invalidFile()
+{
+ QFETCH( QString, fileName );
+ QFile f( fileName );
+ QVERIFY( !f.open( QIODevice::ReadWrite ) );
+}
+
+void tst_QFile::createFile()
+{
+ if ( QFile::exists( "createme.txt" ) )
+ QFile::remove( "createme.txt" );
+ QVERIFY( !QFile::exists( "createme.txt" ) );
+
+ QFile f( "createme.txt" );
+ QVERIFY( f.open( QIODevice::WriteOnly ) );
+ f.close();
+ QVERIFY( QFile::exists( "createme.txt" ) );
+}
+
+void tst_QFile::append()
+{
+ const QString name("appendme.txt");
+ if (QFile::exists(name))
+ QFile::remove(name);
+ QVERIFY(!QFile::exists(name));
+
+ QFile f(name);
+ QVERIFY(f.open(QIODevice::WriteOnly | QIODevice::Truncate));
+ f.putChar('a');
+ f.close();
+
+ QVERIFY(f.open(QIODevice::Append));
+ QVERIFY(f.pos() == 1);
+ f.putChar('a');
+ f.close();
+ QCOMPARE(int(f.size()), 2);
+}
+
+void tst_QFile::permissions_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<uint>("perms");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("data0") << QCoreApplication::instance()->applicationFilePath() << uint(QFile::ExeUser) << true;
+ QTest::newRow("data1") << SRCDIR "tst_qfile.cpp" << uint(QFile::ReadUser) << true;
+// QTest::newRow("data2") << "tst_qfile.cpp" << int(QFile::WriteUser) << false;
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << uint(QFile::ReadUser) << true;
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1" << uint(QFile::WriteUser) << false;
+ QTest::newRow("resource3") << ":/tst_qfileinfo/resources/file1.ext1" << uint(QFile::ExeUser) << false;
+}
+
+void tst_QFile::permissions()
+{
+#if defined(Q_OS_SYMBIAN)
+ if (qstrcmp(QTest::currentDataTag(), "data0") == 0)
+ QSKIP("Symbian does not have execution permissions", SkipSingle);
+#endif
+ QFETCH(QString, file);
+ QFETCH(uint, perms);
+ QFETCH(bool, expected);
+ QFile f(file);
+ QCOMPARE(((f.permissions() & perms) == QFile::Permissions(perms)), expected);
+ QCOMPARE(((QFile::permissions(file) & perms) == QFile::Permissions(perms)), expected);
+}
+
+void tst_QFile::setPermissions()
+{
+ DEPENDS_ON( "permissions" ); //if that doesn't work...
+
+ if ( QFile::exists( "createme.txt" ) )
+ QFile::remove( "createme.txt" );
+ QVERIFY( !QFile::exists( "createme.txt" ) );
+
+ QFile f("createme.txt");
+ QVERIFY(f.open(QIODevice::WriteOnly | QIODevice::Truncate));
+ f.putChar('a');
+ f.close();
+
+ QFile::Permissions perms(QFile::WriteUser | QFile::ReadUser);
+ QVERIFY(f.setPermissions(perms));
+ QVERIFY((f.permissions() & perms) == perms);
+
+}
+
+void tst_QFile::copy()
+{
+ QFile::setPermissions("tst_qfile_copy.cpp", QFile::WriteUser);
+ QFile::remove("tst_qfile_copy.cpp");
+ QFile::remove("test2");
+ QVERIFY(QFile::copy(SRCDIR "tst_qfile.cpp", "tst_qfile_copy.cpp"));
+ QFile in1(SRCDIR "tst_qfile.cpp"), in2("tst_qfile_copy.cpp");
+ QVERIFY(in1.open(QFile::ReadOnly));
+ QVERIFY(in2.open(QFile::ReadOnly));
+ QByteArray data1 = in1.readAll(), data2 = in2.readAll();
+ QCOMPARE(data1, data2);
+ QFile::remove( "main_copy.cpp" );
+
+ QFile::copy(QDir::currentPath(), QDir::currentPath() + QLatin1String("/test2"));
+}
+
+void tst_QFile::copyAfterFail()
+{
+ QFile file1("file-to-be-copied.txt");
+ QFile file2("existing-file.txt");
+
+ QVERIFY(file1.open(QIODevice::ReadWrite) && "(test-precondition)");
+ QVERIFY(file2.open(QIODevice::ReadWrite) && "(test-precondition)");
+ file2.close();
+ QVERIFY(!QFile::exists("copied-file-1.txt") && "(test-precondition)");
+ QVERIFY(!QFile::exists("copied-file-2.txt") && "(test-precondition)");
+
+ QVERIFY(!file1.copy("existing-file.txt"));
+ QCOMPARE(file1.error(), QFile::CopyError);
+
+ QVERIFY(file1.copy("copied-file-1.txt"));
+ QVERIFY(!file1.isOpen());
+ QCOMPARE(file1.error(), QFile::NoError);
+
+ QVERIFY(!file1.copy("existing-file.txt"));
+ QCOMPARE(file1.error(), QFile::CopyError);
+
+ QVERIFY(file1.copy("copied-file-2.txt"));
+ QVERIFY(!file1.isOpen());
+ QCOMPARE(file1.error(), QFile::NoError);
+
+ QVERIFY(QFile::exists("copied-file-1.txt"));
+ QVERIFY(QFile::exists("copied-file-2.txt"));
+
+ QVERIFY(QFile::remove("file-to-be-copied.txt") && "(test-cleanup)");
+ QVERIFY(QFile::remove("existing-file.txt") && "(test-cleanup)");
+ QVERIFY(QFile::remove("copied-file-1.txt") && "(test-cleanup)");
+ QVERIFY(QFile::remove("copied-file-2.txt") && "(test-cleanup)");
+}
+
+void tst_QFile::copyRemovesTemporaryFile() const
+{
+ const QString newName(QLatin1String("copyRemovesTemporaryFile"));
+ QVERIFY(QFile::copy(SRCDIR "forCopying.txt", newName));
+
+ QVERIFY(!QFile::exists(QLatin1String( SRCDIR "qt_temp.XXXXXX")));
+ QVERIFY(QFile::remove(newName));
+}
+
+void tst_QFile::copyShouldntOverwrite()
+{
+ // Copy should not overwrite existing files.
+ QFile::remove("tst_qfile.cpy");
+ QFile file(SRCDIR "tst_qfile.cpp");
+ QVERIFY(file.copy("tst_qfile.cpy"));
+#if defined(Q_OS_SYMBIAN)
+ bool ok = QFile::setPermissions("tst_qfile.cpy", QFile::WriteUser);
+#else
+ bool ok = QFile::setPermissions("tst_qfile.cpy", QFile::WriteOther);
+#endif
+ QVERIFY(ok);
+ QVERIFY(!file.copy("tst_qfile.cpy"));
+ QFile::remove("tst_qfile.cpy");
+}
+
+void tst_QFile::copyFallback()
+{
+ // Using a resource file to trigger QFile::copy's fallback handling
+ QFile file(":/copy-fallback.qrc");
+ QFile::remove("file-copy-destination.txt");
+
+ QVERIFY2(file.exists(), "test precondition");
+ QVERIFY2(!QFile::exists("file-copy-destination.txt"), "test precondition");
+
+ // Fallback copy of closed file.
+ QVERIFY(file.copy("file-copy-destination.txt"));
+ QVERIFY(QFile::exists("file-copy-destination.txt"));
+ QVERIFY(!file.isOpen());
+
+#ifdef Q_WS_WINCE
+ // Need to reset permissions on Windows to be able to delete
+ QVERIFY(QFile::setPermissions("file-copy-destination.txt",
+ QFile::WriteOther));
+#else
+ // Need to reset permissions on Windows to be able to delete
+ QVERIFY(QFile::setPermissions("file-copy-destination.txt",
+ QFile::ReadOwner | QFile::WriteOwner));
+#endif
+ QVERIFY(QFile::remove("file-copy-destination.txt"));
+
+ // Fallback copy of open file.
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QVERIFY(file.copy("file-copy-destination.txt"));
+ QVERIFY(QFile::exists("file-copy-destination.txt"));
+ QVERIFY(!file.isOpen());
+
+ file.close();
+ QFile::remove("file-copy-destination.txt");
+}
+
+#ifdef Q_OS_WIN
+#include <objbase.h>
+#include <shlobj.h>
+#endif
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+static QString getWorkingDirectoryForLink(const QString &linkFileName)
+{
+ bool neededCoInit = false;
+ QString ret;
+
+ IShellLink *psl;
+ HRESULT hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl);
+ if (hres == CO_E_NOTINITIALIZED) { // COM was not initialized
+ neededCoInit = true;
+ CoInitialize(NULL);
+ hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl);
+ }
+
+ if (SUCCEEDED(hres)) { // Get pointer to the IPersistFile interface.
+ IPersistFile *ppf;
+ hres = psl->QueryInterface(IID_IPersistFile, (LPVOID *)&ppf);
+ if (SUCCEEDED(hres)) {
+ hres = ppf->Load((LPOLESTR)linkFileName.utf16(), STGM_READ);
+ //The original path of the link is retrieved. If the file/folder
+ //was moved, the return value still have the old path.
+ if(SUCCEEDED(hres)) {
+ wchar_t szGotPath[MAX_PATH];
+ if (psl->GetWorkingDirectory(szGotPath, MAX_PATH) == NOERROR)
+ ret = QString::fromWCharArray(szGotPath);
+ }
+ ppf->Release();
+ }
+ psl->Release();
+ }
+
+ if (neededCoInit) {
+ CoUninitialize();
+ }
+
+ return ret;
+}
+#endif
+
+void tst_QFile::link()
+{
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Symbian does not support links", SkipAll);
+#endif
+ QFile::remove("myLink.lnk");
+
+ QFileInfo info1(SRCDIR "tst_qfile.cpp");
+ QString referenceTarget = QDir::cleanPath(info1.absoluteFilePath());
+
+ QVERIFY(QFile::link(SRCDIR "tst_qfile.cpp", "myLink.lnk"));
+
+ QFileInfo info2("myLink.lnk");
+ QVERIFY(info2.isSymLink());
+ QCOMPARE(info2.symLinkTarget(), referenceTarget);
+
+ QFile link("myLink.lnk");
+ QVERIFY(link.open(QIODevice::ReadOnly));
+ QCOMPARE(link.symLinkTarget(), referenceTarget);
+ link.close();
+
+ QCOMPARE(QFile::symLinkTarget("myLink.lnk"), referenceTarget);
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QString wd = getWorkingDirectoryForLink(info2.absoluteFilePath());
+ QCOMPARE(QDir::fromNativeSeparators(wd), QDir::cleanPath(info1.absolutePath()));
+#endif
+
+ QVERIFY(QFile::remove(info2.absoluteFilePath()));
+}
+
+void tst_QFile::linkToDir()
+{
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Symbian does not support linking to directories", SkipAll);
+#endif
+ QFile::remove("myLinkToDir.lnk");
+ QDir dir;
+ dir.mkdir("myDir");
+ QFileInfo info1("myDir");
+ QVERIFY(QFile::link("myDir", "myLinkToDir.lnk"));
+ QFileInfo info2("myLinkToDir.lnk");
+#if !(defined Q_OS_HPUX && defined(__ia64))
+ // absurd HP-UX filesystem bug on gravlaks - checking if a symlink
+ // resolves or not alters the file system to make the broken symlink
+ // later fail...
+ QVERIFY(info2.isSymLink());
+#endif
+ QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath());
+ QVERIFY(QFile::remove(info2.absoluteFilePath()));
+ QFile::remove("myLinkToDir.lnk");
+ dir.rmdir("myDir");
+}
+
+void tst_QFile::absolutePathLinkToRelativePath()
+{
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Symbian does not support links", SkipAll);
+#endif
+ QFile::remove("myDir/test.txt");
+ QFile::remove("myDir/myLink.lnk");
+ QDir dir;
+ dir.mkdir("myDir");
+ QFile("myDir/test.txt").open(QFile::WriteOnly);
+
+#ifdef Q_OS_WIN
+ QVERIFY(QFile::link("test.txt", "myDir/myLink.lnk"));
+#else
+ QVERIFY(QFile::link("myDir/test.txt", "myDir/myLink.lnk"));
+#endif
+ QEXPECT_FAIL("", "Symlinking using relative paths is currently different on Windows and Unix/Symbian", Continue);
+ QCOMPARE(QFileInfo(QFile(QFileInfo("myDir/myLink.lnk").absoluteFilePath()).symLinkTarget()).absoluteFilePath(),
+ QFileInfo("myDir/test.txt").absoluteFilePath());
+
+ QFile::remove("myDir/test.txt");
+ QFile::remove("myDir/myLink.lnk");
+ dir.rmdir("myDir");
+}
+
+void tst_QFile::readBrokenLink()
+{
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Symbian does not support links", SkipAll);
+#endif
+ QFile::remove("myLink2.lnk");
+ QFileInfo info1("file12");
+#if defined(Q_OS_SYMBIAN)
+ // In Symbian can't link to nonexisting file directly, so create the file temporarily
+ QFile tempFile("file12");
+ tempFile.open(QIODevice::WriteOnly);
+ tempFile.link("myLink2.lnk");
+ tempFile.remove();
+#else
+ QVERIFY(QFile::link("file12", "myLink2.lnk"));
+#endif
+ QFileInfo info2("myLink2.lnk");
+ QVERIFY(info2.isSymLink());
+ QCOMPARE(info2.symLinkTarget(), info1.absoluteFilePath());
+ QVERIFY(QFile::remove(info2.absoluteFilePath()));
+
+#if !defined(Q_OS_SYMBIAN)
+ QVERIFY(QFile::link("ole/..", "myLink2.lnk"));
+ QCOMPARE(QFileInfo("myLink2.lnk").symLinkTarget(), QDir::currentPath());
+#endif
+}
+
+void tst_QFile::readTextFile_data()
+{
+ QTest::addColumn<QByteArray>("in");
+ QTest::addColumn<QByteArray>("out");
+
+ QTest::newRow("empty") << QByteArray() << QByteArray();
+ QTest::newRow("a") << QByteArray("a") << QByteArray("a");
+ QTest::newRow("a\\rb") << QByteArray("a\rb") << QByteArray("ab");
+ QTest::newRow("\\n") << QByteArray("\n") << QByteArray("\n");
+ QTest::newRow("\\r\\n") << QByteArray("\r\n") << QByteArray("\n");
+ QTest::newRow("\\r") << QByteArray("\r") << QByteArray();
+ QTest::newRow("twolines") << QByteArray("Hello\r\nWorld\r\n") << QByteArray("Hello\nWorld\n");
+ QTest::newRow("twolines no endline") << QByteArray("Hello\r\nWorld") << QByteArray("Hello\nWorld");
+}
+
+void tst_QFile::readTextFile()
+{
+ QFETCH(QByteArray, in);
+ QFETCH(QByteArray, out);
+
+ QFile winfile("winfile.txt");
+ QVERIFY(winfile.open(QFile::WriteOnly | QFile::Truncate));
+ winfile.write(in);
+ winfile.close();
+
+ QVERIFY(winfile.open(QFile::ReadOnly));
+ QCOMPARE(winfile.readAll(), in);
+ winfile.close();
+
+ QVERIFY(winfile.open(QFile::ReadOnly | QFile::Text));
+ QCOMPARE(winfile.readAll(), out);
+}
+
+void tst_QFile::readTextFile2()
+{
+ {
+ QFile file(SRCDIR "testlog.txt");
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ file.read(4097);
+ }
+
+ {
+ QFile file(SRCDIR "testlog.txt");
+ QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
+ file.read(4097);
+ }
+}
+
+void tst_QFile::writeTextFile_data()
+{
+ QTest::addColumn<QByteArray>("in");
+
+ QTest::newRow("empty") << QByteArray();
+ QTest::newRow("a") << QByteArray("a");
+ QTest::newRow("a\\rb") << QByteArray("a\rb");
+ QTest::newRow("\\n") << QByteArray("\n");
+ QTest::newRow("\\r\\n") << QByteArray("\r\n");
+ QTest::newRow("\\r") << QByteArray("\r");
+ QTest::newRow("twolines crlf") << QByteArray("Hello\r\nWorld\r\n");
+ QTest::newRow("twolines crlf no endline") << QByteArray("Hello\r\nWorld");
+ QTest::newRow("twolines lf") << QByteArray("Hello\nWorld\n");
+ QTest::newRow("twolines lf no endline") << QByteArray("Hello\nWorld");
+ QTest::newRow("mixed") << QByteArray("this\nis\r\na\nmixed\r\nfile\n");
+}
+
+void tst_QFile::writeTextFile()
+{
+ QFETCH(QByteArray, in);
+
+ QFile file("textfile.txt");
+ QVERIFY(file.open(QFile::WriteOnly | QFile::Truncate | QFile::Text));
+ QByteArray out = in;
+#ifdef Q_OS_WIN
+ out.replace('\n', "\r\n");
+#endif
+ QCOMPARE(file.write(in), qlonglong(in.size()));
+ file.close();
+
+ file.open(QFile::ReadOnly);
+ QCOMPARE(file.readAll(), out);
+}
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+void tst_QFile::largeUncFileSupport()
+{
+ qint64 size = Q_INT64_C(8589934592);
+ qint64 dataOffset = Q_INT64_C(8589914592);
+ QByteArray knownData("LargeFile content at offset 8589914592");
+ QString largeFile("//" + QtNetworkSettings::winServerName() + "/testsharelargefile/file.bin");
+
+ {
+ // 1) Native file handling.
+ QFile file(largeFile);
+ QCOMPARE(file.size(), size);
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QCOMPARE(file.size(), size);
+ QVERIFY(file.seek(dataOffset));
+ QCOMPARE(file.read(knownData.size()), knownData);
+ }
+ {
+ // 2) stdlib file handling.
+#if _MSC_VER <= 1310
+ QSKIP("platform SDK for MSVC 2003 does not support large files", SkipAll);
+#endif
+ QFile file;
+ FILE *fh = fopen(QFile::encodeName(largeFile).data(), "rb");
+ QVERIFY(file.open(fh, QIODevice::ReadOnly));
+ QCOMPARE(file.size(), size);
+ QVERIFY(file.seek(dataOffset));
+ QCOMPARE(file.read(knownData.size()), knownData);
+ fclose(fh);
+ }
+ {
+ // 3) stdio file handling.
+ QFile file;
+ FILE *fh = fopen(QFile::encodeName(largeFile).data(), "rb");
+ int fd = int(_fileno(fh));
+ QVERIFY(file.open(fd, QIODevice::ReadOnly));
+ QCOMPARE(file.size(), size);
+ QVERIFY(file.seek(dataOffset));
+ QCOMPARE(file.read(knownData.size()), knownData);
+ fclose(fh);
+ }
+}
+#endif
+
+void tst_QFile::tailFile()
+{
+ QSKIP("File change notifications are so far unsupported.", SkipAll);
+
+ QFile file("tail.txt");
+ QVERIFY(file.open(QFile::WriteOnly | QFile::Append));
+
+ QFile tailFile("tail.txt");
+ QVERIFY(tailFile.open(QFile::ReadOnly));
+ tailFile.seek(file.size());
+
+ QSignalSpy readSignal(&tailFile, SIGNAL(readyRead()));
+
+ file.write("", 1);
+
+ QTestEventLoop::instance().enterLoop(5);
+
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(readSignal.count(), 1);
+}
+
+void tst_QFile::flush()
+{
+ QString fileName("stdfile.txt");
+
+ QFile::remove(fileName);
+
+ {
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::WriteOnly));
+ QCOMPARE(file.write("abc", 3),qint64(3));
+ }
+
+ {
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::WriteOnly | QFile::Append));
+ QCOMPARE(file.pos(), qlonglong(3));
+ QCOMPARE(file.write("def", 3), qlonglong(3));
+ QCOMPARE(file.pos(), qlonglong(6));
+ }
+
+ {
+ QFile file("stdfile.txt");
+ QVERIFY(file.open(QFile::ReadOnly));
+ QCOMPARE(file.readAll(), QByteArray("abcdef"));
+ }
+
+ QFile::remove(fileName);
+}
+
+void tst_QFile::bufferedRead()
+{
+ QFile::remove("stdfile.txt");
+
+ QFile file("stdfile.txt");
+ QVERIFY(file.open(QFile::WriteOnly));
+ file.write("abcdef");
+ file.close();
+
+#if defined(Q_OS_WINCE)
+ FILE *stdFile = fopen((QCoreApplication::applicationDirPath() + "/stdfile.txt").toAscii() , "r");
+#else
+ FILE *stdFile = fopen("stdfile.txt", "r");
+#endif
+ QVERIFY(stdFile);
+ char c;
+ QCOMPARE(int(fread(&c, 1, 1, stdFile)), 1);
+ QCOMPARE(c, 'a');
+ QCOMPARE(int(ftell(stdFile)), 1);
+
+ {
+ QFile file;
+ QVERIFY(file.open(stdFile, QFile::ReadOnly));
+ QCOMPARE(file.pos(), qlonglong(1));
+ QCOMPARE(file.read(&c, 1), qlonglong(1));
+ QCOMPARE(c, 'b');
+ QCOMPARE(file.pos(), qlonglong(2));
+ }
+
+ fclose(stdFile);
+}
+
+void tst_QFile::isSequential()
+{
+#if defined (Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QSKIP("Unix only test.", SkipAll);
+#endif
+
+ QFile zero("/dev/null");
+ QVERIFY(zero.open(QFile::ReadOnly));
+ QVERIFY(zero.isSequential());
+}
+
+void tst_QFile::encodeName()
+{
+ QCOMPARE(QFile::encodeName(QString::null), QByteArray());
+}
+
+void tst_QFile::truncate()
+{
+ for (int i = 0; i < 2; ++i) {
+ QFile file("truncate.txt");
+ QVERIFY(file.open(QFile::WriteOnly));
+ file.write(QByteArray(200, '@'));
+ file.close();
+
+ QVERIFY(file.open((i ? QFile::WriteOnly : QFile::ReadWrite) | QFile::Truncate));
+ file.write(QByteArray(100, '$'));
+ file.close();
+
+ QVERIFY(file.open(QFile::ReadOnly));
+ QCOMPARE(file.readAll(), QByteArray(100, '$'));
+ }
+}
+
+void tst_QFile::seekToPos()
+{
+ {
+ QFile file("seekToPos.txt");
+ QVERIFY(file.open(QFile::WriteOnly));
+ file.write("a\r\nb\r\nc\r\n");
+ file.flush();
+ }
+
+ QFile file("seekToPos.txt");
+ QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
+ file.seek(1);
+ char c;
+ QVERIFY(file.getChar(&c));
+ QCOMPARE(c, '\n');
+
+ QCOMPARE(file.pos(), qint64(3));
+ file.seek(file.pos());
+ QCOMPARE(file.pos(), qint64(3));
+
+ file.seek(1);
+ file.seek(file.pos());
+ QCOMPARE(file.pos(), qint64(1));
+
+}
+
+void tst_QFile::seekAfterEndOfFile()
+{
+ QLatin1String filename("seekAfterEof.dat");
+ QFile::remove(filename);
+ {
+ QFile file(filename);
+ QVERIFY(file.open(QFile::WriteOnly));
+ file.write("abcd");
+ QCOMPARE(file.size(), qint64(4));
+ file.seek(8);
+ file.write("ijkl");
+ QCOMPARE(file.size(), qint64(12));
+ file.seek(4);
+ file.write("efgh");
+ QCOMPARE(file.size(), qint64(12));
+ file.seek(16);
+ file.write("----");
+ QCOMPARE(file.size(), qint64(20));
+ file.flush();
+ }
+
+ QFile file(filename);
+ QVERIFY(file.open(QFile::ReadOnly));
+ QByteArray contents = file.readAll();
+ QCOMPARE(contents.left(12), QByteArray("abcdefghijkl", 12));
+ //bytes 12-15 are uninitialised so we don't care what they read as.
+ QCOMPARE(contents.mid(16), QByteArray("----", 4));
+ file.close();
+ QFile::remove(filename);
+}
+
+void tst_QFile::FILEReadWrite()
+{
+ // Tests modifying a file. First creates it then reads in 4 bytes and then overwrites these
+ // 4 bytes with new values. At the end check to see the file contains the new values.
+
+ QFile::remove("FILEReadWrite.txt");
+
+ // create test file
+ {
+ QFile f("FILEReadWrite.txt");
+ QVERIFY(f.open(QFile::WriteOnly));
+ QDataStream ds(&f);
+ qint8 c = 0;
+ ds << c;
+ c = 1;
+ ds << c;
+ c = 2;
+ ds << c;
+ c = 3;
+ ds << c;
+ c = 4;
+ ds << c;
+ c = 5;
+ ds << c;
+ c = 6;
+ ds << c;
+ c = 7;
+ ds << c;
+ c = 8;
+ ds << c;
+ c = 9;
+ ds << c;
+ c = 10;
+ ds << c;
+ c = 11;
+ ds << c;
+ f.close();
+ }
+
+#ifdef Q_OS_WINCE
+ FILE *fp = fopen(qPrintable(QCoreApplication::applicationDirPath() + "\\FILEReadWrite.txt"), "r+b");
+#else
+ FILE *fp = fopen("FILEReadWrite.txt", "r+b");
+#endif
+ QVERIFY(fp);
+ QFile file;
+ QVERIFY(file.open(fp, QFile::ReadWrite));
+ QDataStream sfile(&file) ;
+
+ qint8 var1,var2,var3,var4;
+ while (!sfile.atEnd())
+ {
+ qint64 base = file.pos();
+
+ QCOMPARE(file.pos(), base + 0);
+ sfile >> var1;
+ QCOMPARE(file.pos(), base + 1);
+ file.flush(); // flushing should not change the base
+ QCOMPARE(file.pos(), base + 1);
+ sfile >> var2;
+ QCOMPARE(file.pos(), base + 2);
+ sfile >> var3;
+ QCOMPARE(file.pos(), base + 3);
+ sfile >> var4;
+ QCOMPARE(file.pos(), base + 4);
+ file.seek(file.pos() - 4) ; // Move it back 4, for we are going to write new values based on old ones
+ QCOMPARE(file.pos(), base + 0);
+ sfile << qint8(var1 + 5);
+ QCOMPARE(file.pos(), base + 1);
+ sfile << qint8(var2 + 5);
+ QCOMPARE(file.pos(), base + 2);
+ sfile << qint8(var3 + 5);
+ QCOMPARE(file.pos(), base + 3);
+ sfile << qint8(var4 + 5);
+ QCOMPARE(file.pos(), base + 4);
+
+ }
+ file.close();
+ fclose(fp);
+
+ // check modified file
+ {
+ QFile f("FILEReadWrite.txt");
+ QVERIFY(f.open(QFile::ReadOnly));
+ QDataStream ds(&f);
+ qint8 c = 0;
+ ds >> c;
+ QCOMPARE(c, (qint8)5);
+ ds >> c;
+ QCOMPARE(c, (qint8)6);
+ ds >> c;
+ QCOMPARE(c, (qint8)7);
+ ds >> c;
+ QCOMPARE(c, (qint8)8);
+ ds >> c;
+ QCOMPARE(c, (qint8)9);
+ ds >> c;
+ QCOMPARE(c, (qint8)10);
+ ds >> c;
+ QCOMPARE(c, (qint8)11);
+ ds >> c;
+ QCOMPARE(c, (qint8)12);
+ ds >> c;
+ QCOMPARE(c, (qint8)13);
+ ds >> c;
+ QCOMPARE(c, (qint8)14);
+ ds >> c;
+ QCOMPARE(c, (qint8)15);
+ ds >> c;
+ QCOMPARE(c, (qint8)16);
+ f.close();
+ }
+
+ QFile::remove("FILEReadWrite.txt");
+}
+
+
+/*
+#include <qglobal.h>
+#define BUFFSIZE 1
+#define FILESIZE 0x10000000f
+void tst_QFile::largeFileSupport()
+{
+#ifdef Q_OS_SOLARIS
+ QSKIP("Solaris does not support statfs", SkipAll);
+#else
+ qlonglong sizeNeeded = 2147483647;
+ sizeNeeded *= 2;
+ sizeNeeded += 1024;
+ qlonglong freespace = qlonglong(0);
+#ifdef Q_WS_WIN
+ _ULARGE_INTEGER free;
+ if (::GetDiskFreeSpaceEx((wchar_t*)QDir::currentPath().utf16(), &free, 0, 0))
+ freespace = free.QuadPart;
+ if (freespace != 0) {
+#elif defined(Q_OS_IRIX)
+ struct statfs info;
+ if (statfs(QDir::currentPath().local8Bit(), &info, sizeof(struct statfs), 0) == 0) {
+ freespace = qlonglong(info.f_bfree * info.f_bsize);
+#else
+ struct statfs info;
+ if (statfs(const_cast<char *>(QDir::currentPath().toLocal8Bit().constData()), &info) == 0) {
+ freespace = qlonglong(info.f_bavail * info.f_bsize);
+#endif
+ if (freespace > sizeNeeded) {
+ QFile bigFile("bigfile");
+ if (bigFile.open(QFile::ReadWrite)) {
+ char c[BUFFSIZE] = {'a'};
+ QVERIFY(bigFile.write(c, BUFFSIZE) == BUFFSIZE);
+ qlonglong oldPos = bigFile.pos();
+ QVERIFY(bigFile.resize(sizeNeeded));
+ QCOMPARE(oldPos, bigFile.pos());
+ QVERIFY(bigFile.seek(sizeNeeded - BUFFSIZE));
+ QVERIFY(bigFile.write(c, BUFFSIZE) == BUFFSIZE);
+
+ bigFile.close();
+ if (bigFile.open(QFile::ReadOnly)) {
+ QVERIFY(bigFile.read(c, BUFFSIZE) == BUFFSIZE);
+ int i = 0;
+ for (i=0; i<BUFFSIZE; i++)
+ QCOMPARE(c[i], 'a');
+ QVERIFY(bigFile.seek(sizeNeeded - BUFFSIZE));
+ QVERIFY(bigFile.read(c, BUFFSIZE) == BUFFSIZE);
+ for (i=0; i<BUFFSIZE; i++)
+ QCOMPARE(c[i], 'a');
+ bigFile.close();
+ QVERIFY(bigFile.remove());
+ } else {
+ QVERIFY(bigFile.remove());
+ QFAIL("Could not reopen file");
+ }
+ } else {
+ QFAIL("Could not open file");
+ }
+ } else {
+ QSKIP("Not enough space to run test", SkipSingle);
+ }
+ } else {
+ QFAIL("Could not determin disk space");
+ }
+#endif
+}
+*/
+
+void tst_QFile::i18nFileName_data()
+{
+ QTest::addColumn<QString>("fileName");
+
+ QTest::newRow( "01" ) << QString::fromUtf8("xxxxxxx.txt");
+}
+
+void tst_QFile::i18nFileName()
+{
+ QFETCH(QString, fileName);
+ if (QFile::exists(fileName)) {
+ QVERIFY(QFile::remove(fileName));
+ }
+ {
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::WriteOnly | QFile::Text));
+ QTextStream ts(&file);
+ ts.setCodec("UTF-8");
+ ts << fileName << endl;
+ }
+ {
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
+ QTextStream ts(&file);
+ ts.setCodec("UTF-8");
+ QString line = ts.readLine();
+ QCOMPARE(line, fileName);
+ }
+ QVERIFY(QFile::remove(fileName));
+}
+
+
+void tst_QFile::longFileName_data()
+{
+ QTest::addColumn<QString>("fileName");
+
+ QTest::newRow( "16 chars" ) << QString::fromLatin1("longFileName.txt");
+ QTest::newRow( "52 chars" ) << QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName.txt");
+ QTest::newRow( "148 chars" ) << QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName.txt");
+ QTest::newRow( "244 chars" ) << QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName.txt");
+ QTest::newRow( "244 chars to absolutepath" ) << QFileInfo(QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName.txt")).absoluteFilePath();
+ /* needs to be put on a windows 2000 > test machine
+ QTest::newRow( "244 chars on UNC" ) << QString::fromLatin1("//arsia/D/troll/tmp/longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName.txt");*/
+}
+
+void tst_QFile::longFileName()
+{
+ QFETCH(QString, fileName);
+ if (QFile::exists(fileName)) {
+ QVERIFY(QFile::remove(fileName));
+ }
+ {
+ QFile file(fileName);
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QEXPECT_FAIL("244 chars", "Full pathname must be less than 260 chars", Abort);
+ QEXPECT_FAIL("244 chars to absolutepath", "Full pathname must be less than 260 chars", Abort);
+#endif
+ QVERIFY(file.open(QFile::WriteOnly | QFile::Text));
+ QTextStream ts(&file);
+ ts << fileName << endl;
+ }
+ {
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
+ QTextStream ts(&file);
+ QString line = ts.readLine();
+ QCOMPARE(line, fileName);
+ }
+ QString newName = fileName + QLatin1String("1");
+ {
+ QVERIFY(QFile::copy(fileName, newName));
+ QFile file(newName);
+ QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
+ QTextStream ts(&file);
+ QString line = ts.readLine();
+ QCOMPARE(line, fileName);
+
+ }
+ QVERIFY(QFile::remove(newName));
+ {
+ QVERIFY(QFile::rename(fileName, newName));
+ QFile file(newName);
+ QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
+ QTextStream ts(&file);
+ QString line = ts.readLine();
+ QCOMPARE(line, fileName);
+ }
+ QVERIFY(QFile::exists(newName));
+ QVERIFY(QFile::remove(newName));
+}
+
+class MyEngine : public QAbstractFileEngine
+{
+public:
+ MyEngine(int n) { number = n; }
+ virtual ~MyEngine() {}
+
+ void setFileName(const QString &) {}
+ bool open(int ) { return false; }
+ bool close() { return false; }
+ bool flush() { return false; }
+ qint64 size() const { return 123 + number; }
+ qint64 at() const { return -1; }
+ bool seek(qint64) { return false; }
+ bool isSequential() const { return false; }
+ qint64 read(char *, qint64) { return -1; }
+ qint64 write(const char *, qint64) { return -1; }
+ bool remove() { return false; }
+ bool copy(const QString &) { return false; }
+ bool rename(const QString &) { return false; }
+ bool link(const QString &) { return false; }
+ bool mkdir(const QString &, bool) const { return false; }
+ bool rmdir(const QString &, bool) const { return false; }
+ bool setSize(qint64) { return false; }
+ QStringList entryList(QDir::Filters, const QStringList &) const { return QStringList(); }
+ bool caseSensitive() const { return false; }
+ bool isRelativePath() const { return false; }
+ FileFlags fileFlags(FileFlags) const { return 0; }
+ bool chmod(uint) { return false; }
+ QString fileName(FileName) const { return name; }
+ uint ownerId(FileOwner) const { return 0; }
+ QString owner(FileOwner) const { return QString(); }
+ QDateTime fileTime(FileTime) const { return QDateTime(); }
+
+private:
+ int number;
+ QString name;
+};
+
+class MyHandler : public QAbstractFileEngineHandler
+{
+public:
+ inline QAbstractFileEngine *create(const QString &) const
+ {
+ return new MyEngine(1);
+ }
+};
+
+class MyHandler2 : public QAbstractFileEngineHandler
+{
+public:
+ inline QAbstractFileEngine *create(const QString &) const
+ {
+ return new MyEngine(2);
+ }
+};
+
+void tst_QFile::fileEngineHandler()
+{
+ // A file that does not exist has a size of 0.
+ QFile::remove("ole.bull");
+ QFile file("ole.bull");
+ QCOMPARE(file.size(), qint64(0));
+
+ // Instantiating our handler will enable the new engine.
+ MyHandler handler;
+ file.setFileName("ole.bull");
+ QCOMPARE(file.size(), qint64(124));
+
+ // A new, identical handler should take preference over the last one.
+ MyHandler2 handler2;
+ file.setFileName("ole.bull");
+ QCOMPARE(file.size(), qint64(125));
+
+}
+
+class MyRecursiveHandler : public QAbstractFileEngineHandler
+{
+public:
+ inline QAbstractFileEngine *create(const QString &fileName) const
+ {
+ if (fileName.startsWith(":!")) {
+ QDir dir;
+ QString realFile = SRCDIR + fileName.mid(2);
+ if (dir.exists(realFile))
+ return new QFSFileEngine(realFile);
+ }
+ return 0;
+ }
+};
+
+void tst_QFile::useQFileInAFileHandler()
+{
+ // This test should not dead-lock
+ MyRecursiveHandler handler;
+ QFile file(":!tst_qfile.cpp");
+ QVERIFY(file.exists());
+}
+
+void tst_QFile::getCharFF()
+{
+ QFile file("file.txt");
+ file.open(QFile::ReadWrite);
+ file.write("\xff\xff\xff");
+ file.flush();
+ file.seek(0);
+
+ char c;
+ QVERIFY(file.getChar(&c));
+ QVERIFY(file.getChar(&c));
+ QVERIFY(file.getChar(&c));
+}
+
+void tst_QFile::remove_and_exists()
+{
+ QFile::remove("tull_i_grunn.txt");
+ QFile f("tull_i_grunn.txt");
+
+ QVERIFY(!f.exists());
+
+ bool opened = f.open(QIODevice::WriteOnly);
+ QVERIFY(opened);
+
+ f.write(QString("testing that remove/exists work...").toLatin1());
+ f.close();
+
+ QVERIFY(f.exists());
+
+ f.remove();
+ QVERIFY(!f.exists());
+}
+
+void tst_QFile::removeOpenFile()
+{
+ {
+ // remove an opened, write-only file
+ QFile::remove("remove_unclosed.txt");
+ QFile f("remove_unclosed.txt");
+
+ QVERIFY(!f.exists());
+ bool opened = f.open(QIODevice::WriteOnly);
+ QVERIFY(opened);
+ f.write(QString("testing that remove closes the file first...").toLatin1());
+
+ bool removed = f.remove(); // remove should both close and remove the file
+ QVERIFY(removed);
+ QVERIFY(!f.isOpen());
+ QVERIFY(!f.exists());
+ QVERIFY(f.error() == QFile::NoError);
+ }
+
+ {
+ // remove an opened, read-only file
+ QFile::remove("remove_unclosed.txt");
+
+ // first, write a file that we can remove
+ {
+ QFile f("remove_unclosed.txt");
+ QVERIFY(!f.exists());
+ bool opened = f.open(QIODevice::WriteOnly);
+ QVERIFY(opened);
+ f.write(QString("testing that remove closes the file first...").toLatin1());
+ f.close();
+ }
+
+ QFile f("remove_unclosed.txt");
+ bool opened = f.open(QIODevice::ReadOnly);
+ QVERIFY(opened);
+ f.readAll();
+ // this used to only fail on FreeBSD (and Mac OS X)
+ QVERIFY(f.flush());
+ bool removed = f.remove(); // remove should both close and remove the file
+ QVERIFY(removed);
+ QVERIFY(!f.isOpen());
+ QVERIFY(!f.exists());
+ QVERIFY(f.error() == QFile::NoError);
+ }
+}
+
+void tst_QFile::fullDisk()
+{
+ QFile file("/dev/full");
+ if (!file.exists())
+ QSKIP("/dev/full doesn't exist on this system", SkipAll);
+
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ file.write("foobar", 6);
+
+ QVERIFY(!file.flush());
+ QCOMPARE(file.error(), QFile::ResourceError);
+ QVERIFY(!file.flush());
+ QCOMPARE(file.error(), QFile::ResourceError);
+
+ char c = 0;
+ file.write(&c, 0);
+ QVERIFY(!file.flush());
+ QCOMPARE(file.error(), QFile::ResourceError);
+ QCOMPARE(file.write(&c, 1), qint64(1));
+ QVERIFY(!file.flush());
+ QCOMPARE(file.error(), QFile::ResourceError);
+
+ file.close();
+ QVERIFY(!file.isOpen());
+ QCOMPARE(file.error(), QFile::ResourceError);
+
+ file.open(QIODevice::WriteOnly);
+ QCOMPARE(file.error(), QFile::NoError);
+ QVERIFY(file.flush()); // Shouldn't inherit write buffer
+ file.close();
+ QCOMPARE(file.error(), QFile::NoError);
+
+ // try again without flush:
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ file.write("foobar", 6);
+ file.close();
+ QVERIFY(file.error() != QFile::NoError);
+}
+
+void tst_QFile::writeLargeDataBlock_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<int>("type");
+
+ QTest::newRow("localfile-QFile") << "./largeblockfile.txt" << (int)OpenQFile;
+ QTest::newRow("localfile-Fd") << "./largeblockfile.txt" << (int)OpenFd;
+ QTest::newRow("localfile-Stream") << "./largeblockfile.txt" << (int)OpenStream;
+#ifdef Q_OS_SYMBIAN
+ QTest::newRow("localfile-RFile") << "./largeblockfile.txt" << (int)OpenRFile;
+#endif
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ // Some semi-randomness to avoid collisions.
+ QTest::newRow("unc file")
+ << QString("//" + QtNetworkSettings::winServerName() + "/TESTSHAREWRITABLE/largefile-%1-%2.txt")
+ .arg(QHostInfo::localHostName())
+ .arg(QTime::currentTime().msec()) << (int)OpenQFile;
+#endif
+}
+
+static QByteArray getLargeDataBlock()
+{
+ static QByteArray array;
+
+ if (array.isNull())
+ {
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ int resizeSize = 1024 * 1024; // WinCE and Symbian do not have much space
+#else
+ int resizeSize = 64 * 1024 * 1024;
+#endif
+ array.resize(resizeSize);
+ for (int i = 0; i < array.size(); ++i)
+ array[i] = uchar(i);
+ }
+
+ return array;
+}
+
+void tst_QFile::writeLargeDataBlock()
+{
+ QFETCH(QString, fileName);
+ QFETCH( int, type );
+
+ QByteArray const originalData = getLargeDataBlock();
+
+ {
+ QFile file(fileName);
+
+ QVERIFY2( openFile(file, QIODevice::WriteOnly, (FileType)type),
+ qPrintable(QString("Couldn't open file for writing: [%1]").arg(fileName)) );
+ QCOMPARE( file.write(originalData), (qint64)originalData.size() );
+ QVERIFY( file.flush() );
+
+ closeFile(file);
+ }
+
+ QByteArray readData;
+
+ {
+ QFile file(fileName);
+
+ QVERIFY2( openFile(file, QIODevice::ReadOnly, (FileType)type),
+ qPrintable(QString("Couldn't open file for reading: [%1]").arg(fileName)) );
+ readData = file.readAll();
+ closeFile(file);
+ }
+
+ QCOMPARE( readData, originalData );
+ QVERIFY( QFile::remove(fileName) );
+}
+
+void tst_QFile::readFromWriteOnlyFile()
+{
+ QFile file("writeonlyfile");
+ QVERIFY(file.open(QFile::WriteOnly));
+ char c;
+ QTest::ignoreMessage(QtWarningMsg, "QIODevice::read: WriteOnly device");
+ QCOMPARE(file.read(&c, 1), qint64(-1));
+}
+
+void tst_QFile::writeToReadOnlyFile()
+{
+ QFile file("readonlyfile");
+ QVERIFY(file.open(QFile::ReadOnly));
+ char c = 0;
+ QTest::ignoreMessage(QtWarningMsg, "QIODevice::write: ReadOnly device");
+ QCOMPARE(file.write(&c, 1), qint64(-1));
+}
+
+void tst_QFile::virtualFile()
+{
+ // test if QFile works with virtual files
+ QString fname;
+#if defined(Q_OS_LINUX)
+ fname = "/proc/self/maps";
+#elif defined(Q_OS_AIX)
+ fname = QString("/proc/%1/map").arg(getpid());
+#elif defined(Q_OS_FREEBSD) || defined(Q_OS_NETBSD)
+ fname = "/proc/curproc/map";
+#else
+ QSKIP("This platform does not have 0-sized virtual files", SkipAll);
+#endif
+
+ // consistency check
+ QFileInfo fi(fname);
+ QVERIFY(fi.exists());
+ QVERIFY(fi.isFile());
+ QCOMPARE(fi.size(), Q_INT64_C(0));
+
+ // open the file
+ QFile f(fname);
+ QVERIFY(f.open(QIODevice::ReadOnly));
+ QCOMPARE(f.size(), Q_INT64_C(0));
+ QVERIFY(f.atEnd());
+
+ // read data
+ QByteArray data = f.read(16);
+ QCOMPARE(data.size(), 16);
+ QCOMPARE(f.pos(), Q_INT64_C(16));
+
+ // line-reading
+ data = f.readLine();
+ QVERIFY(!data.isEmpty());
+
+ // read all:
+ data = f.readAll();
+ QVERIFY(f.pos() != 0);
+ QVERIFY(!data.isEmpty());
+
+ // seeking
+ QVERIFY(f.seek(1));
+ QCOMPARE(f.pos(), Q_INT64_C(1));
+}
+
+void tst_QFile::textFile()
+{
+#if defined(Q_OS_WINCE)
+ FILE *fs = ::fopen((QCoreApplication::applicationDirPath() + "/writeabletextfile").toAscii() , "wt");
+#elif defined(Q_OS_WIN)
+ FILE *fs = ::fopen("writeabletextfile", "wt");
+#else
+ FILE *fs = ::fopen("writeabletextfile", "w");
+#endif
+ QFile f;
+ QByteArray part1("This\nis\na\nfile\nwith\nnewlines\n");
+ QByteArray part2("Add\nsome\nmore\nnewlines\n");
+
+ QVERIFY(f.open(fs, QIODevice::WriteOnly));
+ f.write(part1);
+ f.write(part2);
+ f.close();
+ ::fclose(fs);
+
+ QFile file("writeabletextfile");
+ QVERIFY(file.open(QIODevice::ReadOnly));
+
+ QByteArray data = file.readAll();
+
+ QByteArray expected = part1 + part2;
+#ifdef Q_OS_WIN
+ expected.replace("\n", "\015\012");
+#endif
+ QCOMPARE(data, expected);
+ file.close();
+ file.remove();
+}
+
+void tst_QFile::rename_data()
+{
+ QTest::addColumn<QString>("source");
+ QTest::addColumn<QString>("destination");
+ QTest::addColumn<bool>("result");
+
+ QTest::newRow("a -> b") << QString("a") << QString("b") << false;
+ QTest::newRow("a -> .") << QString("a") << QString(".") << false;
+ QTest::newRow("renamefile -> renamefile") << QString("renamefile") << QString("renamefile") << false;
+ QTest::newRow("renamefile -> noreadfile") << QString("renamefile") << QString("noreadfile") << false;
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ QTest::newRow("renamefile -> /etc/renamefile") << QString("renamefile") << QString("/etc/renamefile") << false;
+#endif
+ QTest::newRow("renamefile -> renamedfile") << QString("renamefile") << QString("renamedfile") << true;
+ QTest::newRow("renamefile -> ..") << QString("renamefile") << QString("..") << false;
+}
+
+void tst_QFile::rename()
+{
+ QFETCH(QString, source);
+ QFETCH(QString, destination);
+ QFETCH(bool, result);
+
+ QFile::remove("renamedfile");
+ QFile f("renamefile");
+ f.open(QFile::WriteOnly);
+ f.close();
+
+ QFile file(source);
+ QCOMPARE(file.rename(destination), result);
+
+ if (result)
+ QCOMPARE(file.error(), QFile::NoError);
+ else
+ QCOMPARE(file.error(), QFile::RenameError);
+
+ QFile::remove("renamefile");
+}
+
+/*!
+ \since 4.5
+
+ Some special files have QFile::atEnd() returning true, even though there is
+ more data available. True for corner cases, as well as some mounts on OS X.
+
+ Here, we reproduce that condition by having a QFile sub-class with this
+ peculiar atEnd() behavior.
+
+ See task 231583.
+ */
+void tst_QFile::renameWithAtEndSpecialFile() const
+{
+ class PeculiarAtEnd : public QFile
+ {
+ public:
+ virtual bool atEnd() const
+ {
+ return true;
+ }
+ };
+
+ const QString newName(QLatin1String("newName.txt"));
+ /* Cleanup, so we're a bit more robust. */
+ QFile::remove(newName);
+
+ const QString originalName(QString(SRCDIR "forRenaming.txt"));
+
+ PeculiarAtEnd file;
+ file.setFileName(originalName);
+ QVERIFY(file.open(QIODevice::ReadOnly));
+
+ QVERIFY(file.rename(newName));
+
+ file.close();
+ /* Guess what, we have to rename it back, otherwise we'll fail on second
+ * invocation. */
+ QVERIFY(QFile::rename(newName, originalName));
+}
+
+void tst_QFile::renameFallback()
+{
+ // Using a resource file both to trigger QFile::rename's fallback handling
+ // and as a *read-only* source whose move should fail.
+ QFile file(":/rename-fallback.qrc");
+ QVERIFY(file.exists() && "(test-precondition)");
+ QFile::remove("file-rename-destination.txt");
+
+ QVERIFY(!file.rename("file-rename-destination.txt"));
+ QVERIFY(!QFile::exists("file-rename-destination.txt"));
+ QVERIFY(!file.isOpen());
+}
+
+void tst_QFile::renameMultiple()
+{
+ // create the file if it doesn't exist
+ QFile file("file-to-be-renamed.txt");
+ QFile file2("existing-file.txt");
+ QVERIFY(file.open(QIODevice::ReadWrite) && "(test-precondition)");
+ QVERIFY(file2.open(QIODevice::ReadWrite) && "(test-precondition)");
+
+ // any stale files from previous test failures?
+ QFile::remove("file-renamed-once.txt");
+ QFile::remove("file-renamed-twice.txt");
+
+ // begin testing
+ QVERIFY(QFile::exists("existing-file.txt"));
+ QVERIFY(!file.rename("existing-file.txt"));
+ QCOMPARE(file.error(), QFile::RenameError);
+ QCOMPARE(file.fileName(), QString("file-to-be-renamed.txt"));
+
+ QVERIFY(file.rename("file-renamed-once.txt"));
+ QVERIFY(!file.isOpen());
+ QCOMPARE(file.fileName(), QString("file-renamed-once.txt"));
+
+ QVERIFY(QFile::exists("existing-file.txt"));
+ QVERIFY(!file.rename("existing-file.txt"));
+ QCOMPARE(file.error(), QFile::RenameError);
+ QCOMPARE(file.fileName(), QString("file-renamed-once.txt"));
+
+ QVERIFY(file.rename("file-renamed-twice.txt"));
+ QVERIFY(!file.isOpen());
+ QCOMPARE(file.fileName(), QString("file-renamed-twice.txt"));
+
+ QVERIFY(QFile::exists("existing-file.txt"));
+ QVERIFY(!QFile::exists("file-to-be-renamed.txt"));
+ QVERIFY(!QFile::exists("file-renamed-once.txt"));
+ QVERIFY(QFile::exists("file-renamed-twice.txt"));
+
+ file.remove();
+ file2.remove();
+ QVERIFY(!QFile::exists("file-renamed-twice.txt"));
+ QVERIFY(!QFile::exists("existing-file.txt"));
+}
+
+void tst_QFile::appendAndRead()
+{
+ QFile writeFile(QLatin1String("appendfile.txt"));
+ QVERIFY(writeFile.open(QIODevice::WriteOnly | QIODevice::Truncate));
+
+ QFile readFile(QLatin1String("appendfile.txt"));
+ QVERIFY(readFile.open(QIODevice::ReadOnly));
+
+ // Write to the end of the file, then read that character back, and so on.
+ for (int i = 0; i < 100; ++i) {
+ char c = '\0';
+ writeFile.putChar(char(i % 256));
+ writeFile.flush();
+ QVERIFY(readFile.getChar(&c));
+ QCOMPARE(c, char(i % 256));
+ QCOMPARE(readFile.pos(), writeFile.pos());
+ }
+
+ // Write blocks and read them back
+ for (int j = 0; j < 18; ++j) {
+ writeFile.write(QByteArray(1 << j, '@'));
+ writeFile.flush();
+ QCOMPARE(readFile.read(1 << j).size(), 1 << j);
+ }
+
+ readFile.close();
+ QFile::remove(QLatin1String("appendfile.txt"));
+}
+
+void tst_QFile::miscWithUncPathAsCurrentDir()
+{
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QString current = QDir::currentPath();
+ QVERIFY(QDir::setCurrent("//" + QtNetworkSettings::winServerName() + "/testshare"));
+ QFile file("test.pri");
+ QVERIFY(file.exists());
+ QCOMPARE(int(file.size()), 34);
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QVERIFY(QDir::setCurrent(current));
+#endif
+}
+
+void tst_QFile::standarderror()
+{
+ QFile f;
+ bool ok = f.open(stderr, QFile::WriteOnly);
+ QVERIFY(ok);
+ f.close();
+}
+
+void tst_QFile::handle()
+{
+ int fd;
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QFile file(SRCDIR "tst_qfile.cpp");
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ fd = int(file.handle());
+ QVERIFY(fd > 2);
+ QCOMPARE(int(file.handle()), fd);
+ char c = '\0';
+ QT_READ(int(file.handle()), &c, 1);
+ QCOMPARE(c, '/');
+
+ // test if the QFile and the handle remain in sync
+ QVERIFY(file.getChar(&c));
+ QCOMPARE(c, '*');
+
+ // same, but read from QFile first now
+ file.close();
+ QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Unbuffered));
+ fd = int(file.handle());
+ QVERIFY(fd > 2);
+ QVERIFY(file.getChar(&c));
+ QCOMPARE(c, '/');
+#ifdef Q_OS_UNIX
+ QCOMPARE(QT_READ(fd, &c, 1), ssize_t(1));
+#else
+ QCOMPARE(QT_READ(fd, &c, 1), 1);
+#endif
+
+ QCOMPARE(c, '*');
+#endif
+
+ //test round trip of adopted stdio file handle
+ QFile file2;
+ FILE *fp = fopen(SRCDIR "tst_qfile.cpp", "r");
+ file2.open(fp, QIODevice::ReadOnly);
+ QCOMPARE(int(file2.handle()), int(fileno(fp)));
+ QCOMPARE(int(file2.handle()), int(fileno(fp)));
+ fclose(fp);
+
+ //test round trip of adopted posix file handle
+#ifdef Q_OS_UNIX
+ QFile file3;
+ fd = QT_OPEN(SRCDIR "tst_qfile.cpp", QT_OPEN_RDONLY);
+ file3.open(fd, QIODevice::ReadOnly);
+ QCOMPARE(int(file3.handle()), fd);
+ QT_CLOSE(fd);
+#endif
+}
+
+void tst_QFile::nativeHandleLeaks()
+{
+#ifdef Q_OS_SYMBIAN
+ QSKIP("test assumptions invalid for symbian", SkipAll);
+#else
+ int fd1, fd2;
+
+#ifdef Q_OS_WIN
+ HANDLE handle1, handle2;
+#endif
+
+ {
+ QFile file("qt_file.tmp");
+ QVERIFY( file.open(QIODevice::ReadWrite) );
+
+ fd1 = file.handle();
+ QVERIFY( -1 != fd1 );
+ }
+
+#ifdef Q_OS_WIN
+ handle1 = ::CreateFileA("qt_file.tmp", GENERIC_READ, 0, NULL,
+ OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ QVERIFY( INVALID_HANDLE_VALUE != handle1 );
+ QVERIFY( ::CloseHandle(handle1) );
+#endif
+
+ {
+ QFile file("qt_file.tmp");
+ QVERIFY( file.open(QIODevice::ReadOnly) );
+
+ fd2 = file.handle();
+ QVERIFY( -1 != fd2 );
+ }
+
+#ifdef Q_OS_WIN
+ handle2 = ::CreateFileA("qt_file.tmp", GENERIC_READ, 0, NULL,
+ OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ QVERIFY( INVALID_HANDLE_VALUE != handle2 );
+ QVERIFY( ::CloseHandle(handle2) );
+#endif
+
+ QCOMPARE( fd2, fd1 );
+
+#ifdef Q_OS_WIN
+ QCOMPARE( handle2, handle1 );
+#endif
+#endif
+}
+
+void tst_QFile::readEof_data()
+{
+ QTest::addColumn<QString>("filename");
+ QTest::addColumn<int>("imode");
+
+ QTest::newRow("buffered") << SRCDIR "testfile.txt" << 0;
+ QTest::newRow("unbuffered") << SRCDIR "testfile.txt" << int(QIODevice::Unbuffered);
+
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ QTest::newRow("sequential,buffered") << "/dev/null" << 0;
+ QTest::newRow("sequential,unbuffered") << "/dev/null" << int(QIODevice::Unbuffered);
+#endif
+}
+
+void tst_QFile::readEof()
+{
+ QFETCH(QString, filename);
+ QFETCH(int, imode);
+ QIODevice::OpenMode mode = QIODevice::OpenMode(imode);
+
+ {
+ QFile file(filename);
+ QVERIFY(file.open(QIODevice::ReadOnly | mode));
+ bool isSequential = file.isSequential();
+ if (!isSequential) {
+ QVERIFY(file.seek(245));
+ QVERIFY(file.atEnd());
+ }
+
+ char buf[10];
+ int ret = file.read(buf, sizeof buf);
+ QCOMPARE(ret, 0);
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+
+ // Do it again to ensure that we get the same result
+ ret = file.read(buf, sizeof buf);
+ QCOMPARE(ret, 0);
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+ }
+
+ {
+ QFile file(filename);
+ QVERIFY(file.open(QIODevice::ReadOnly | mode));
+ bool isSequential = file.isSequential();
+ if (!isSequential) {
+ QVERIFY(file.seek(245));
+ QVERIFY(file.atEnd());
+ }
+
+ QByteArray ret = file.read(10);
+ QVERIFY(ret.isEmpty());
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+
+ // Do it again to ensure that we get the same result
+ ret = file.read(10);
+ QVERIFY(ret.isEmpty());
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+ }
+
+ {
+ QFile file(filename);
+ QVERIFY(file.open(QIODevice::ReadOnly | mode));
+ bool isSequential = file.isSequential();
+ if (!isSequential) {
+ QVERIFY(file.seek(245));
+ QVERIFY(file.atEnd());
+ }
+
+ char buf[10];
+ int ret = file.readLine(buf, sizeof buf);
+ QCOMPARE(ret, -1);
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+
+ // Do it again to ensure that we get the same result
+ ret = file.readLine(buf, sizeof buf);
+ QCOMPARE(ret, -1);
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+ }
+
+ {
+ QFile file(filename);
+ QVERIFY(file.open(QIODevice::ReadOnly | mode));
+ bool isSequential = file.isSequential();
+ if (!isSequential) {
+ QVERIFY(file.seek(245));
+ QVERIFY(file.atEnd());
+ }
+
+ QByteArray ret = file.readLine();
+ QVERIFY(ret.isNull());
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+
+ // Do it again to ensure that we get the same result
+ ret = file.readLine();
+ QVERIFY(ret.isNull());
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+ }
+
+ {
+ QFile file(filename);
+ QVERIFY(file.open(QIODevice::ReadOnly | mode));
+ bool isSequential = file.isSequential();
+ if (!isSequential) {
+ QVERIFY(file.seek(245));
+ QVERIFY(file.atEnd());
+ }
+
+ char c;
+ QVERIFY(!file.getChar(&c));
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+
+ // Do it again to ensure that we get the same result
+ QVERIFY(!file.getChar(&c));
+ QVERIFY(file.error() == QFile::NoError);
+ QVERIFY(file.atEnd());
+ }
+}
+
+void tst_QFile::task167217()
+{
+ // Regression introduced in 4.3.0; after a failed stat, pos() could no
+ // longer be calculated correctly.
+ QFile::remove("tmp.txt");
+ QFile file("tmp.txt");
+ QVERIFY(!file.exists());
+ QVERIFY(file.open(QIODevice::Append));
+ QVERIFY(file.exists());
+ file.write("qt430", 5);
+ QVERIFY(!file.isSequential());
+ QCOMPARE(file.pos(), qint64(5));
+ file.remove();
+}
+
+#define FILESIZE 65536 * 3
+
+void tst_QFile::map_data()
+{
+ QTest::addColumn<int>("fileSize");
+ QTest::addColumn<int>("offset");
+ QTest::addColumn<int>("size");
+ QTest::addColumn<QFile::FileError>("error");
+
+ QTest::newRow("zero") << FILESIZE << 0 << FILESIZE << QFile::NoError;
+ QTest::newRow("small, but 0") << FILESIZE << 30 << FILESIZE - 30 << QFile::NoError;
+ QTest::newRow("a page") << FILESIZE << 4096 << FILESIZE - 4096 << QFile::NoError;
+ QTest::newRow("+page") << FILESIZE << 5000 << FILESIZE - 5000 << QFile::NoError;
+ QTest::newRow("++page") << FILESIZE << 65576 << FILESIZE - 65576 << QFile::NoError;
+ QTest::newRow("bad size") << FILESIZE << 0 << -1 << QFile::ResourceError;
+ QTest::newRow("bad offset") << FILESIZE << -1 << 1 << QFile::UnspecifiedError;
+ QTest::newRow("zerozero") << FILESIZE << 0 << 0 << QFile::UnspecifiedError;
+}
+
+void tst_QFile::map()
+{
+ QFETCH(int, fileSize);
+ QFETCH(int, offset);
+ QFETCH(int, size);
+ QFETCH(QFile::FileError, error);
+
+ QString fileName = QDir::currentPath() + '/' + "qfile_map_testfile";
+
+#ifdef Q_WS_WINCE
+ fileName = QFileInfo(fileName).absoluteFilePath();
+#endif
+
+ if (QFile::exists(fileName)) {
+ QVERIFY(QFile::setPermissions(fileName,
+ QFile::WriteOwner | QFile::ReadOwner | QFile::WriteUser | QFile::ReadUser));
+ QFile::remove(fileName);
+ }
+ QFile file(fileName);
+
+ // invalid, not open
+ uchar *memory = file.map(0, size);
+ QVERIFY(!memory);
+ QCOMPARE(file.error(), QFile::PermissionsError);
+ QVERIFY(!file.unmap(memory));
+ QCOMPARE(file.error(), QFile::PermissionsError);
+
+ // make a file
+ QVERIFY(file.open(QFile::ReadWrite));
+ QVERIFY(file.resize(fileSize));
+ QVERIFY(file.flush());
+ file.close();
+ QVERIFY(file.open(QFile::ReadWrite));
+ memory = file.map(offset, size);
+ if (error != QFile::NoError) {
+
+ QVERIFY(file.error() != QFile::NoError);
+ return;
+ }
+
+ QCOMPARE(file.error(), error);
+ QVERIFY(memory);
+ memory[0] = 'Q';
+ QVERIFY(file.unmap(memory));
+ QCOMPARE(file.error(), QFile::NoError);
+
+ // Verify changes were saved
+ memory = file.map(offset, size);
+ QCOMPARE(file.error(), QFile::NoError);
+ QVERIFY(memory);
+ QVERIFY(memory[0] == 'Q');
+ QVERIFY(file.unmap(memory));
+ QCOMPARE(file.error(), QFile::NoError);
+
+ // hpux wont let you map multiple times.
+#if !defined(Q_OS_HPUX) && !defined(Q_USE_DEPRECATED_MAP_API) && !defined(Q_OS_WINCE)
+ // exotic test to make sure that multiple maps work
+
+ // note: windows ce does not reference count mutliple maps
+ // it's essentially just the same reference but it
+ // cause a resource lock on the file which prevents it
+ // from being removed uchar *memory1 = file.map(0, file.size());
+ uchar *memory1 = file.map(0, file.size());
+ QCOMPARE(file.error(), QFile::NoError);
+ uchar *memory2 = file.map(0, file.size());
+ QCOMPARE(file.error(), QFile::NoError);
+ QVERIFY(memory1);
+ QVERIFY(memory2);
+ QVERIFY(file.unmap(memory1));
+ QCOMPARE(file.error(), QFile::NoError);
+ QVERIFY(file.unmap(memory2));
+ QCOMPARE(file.error(), QFile::NoError);
+ memory1 = file.map(0, file.size());
+ QCOMPARE(file.error(), QFile::NoError);
+ QVERIFY(memory1);
+ QVERIFY(file.unmap(memory1));
+ QCOMPARE(file.error(), QFile::NoError);
+#endif
+
+ file.close();
+
+#if defined(Q_OS_SYMBIAN)
+ if (false) // No permissions for user makes no sense in Symbian
+#elif defined(Q_OS_UNIX)
+ if (::getuid() != 0)
+ // root always has permissions
+#endif
+ {
+ // Change permissions on a file, just to confirm it would fail
+ QFile::Permissions originalPermissions = file.permissions();
+ QVERIFY(file.setPermissions(QFile::ReadOther));
+ QVERIFY(!file.open(QFile::ReadWrite));
+ memory = file.map(offset, size);
+ QCOMPARE(file.error(), QFile::PermissionsError);
+ QVERIFY(!memory);
+ QVERIFY(file.setPermissions(originalPermissions));
+ }
+ QVERIFY(file.remove());
+}
+
+void tst_QFile::mapResource_data()
+{
+ QTest::addColumn<int>("offset");
+ QTest::addColumn<int>("size");
+ QTest::addColumn<QFile::FileError>("error");
+ QTest::addColumn<QString>("fileName");
+
+ QString validFile = ":/tst_qfileinfo/resources/file1.ext1";
+ QString invalidFile = ":/tst_qfileinfo/resources/filefoo.ext1";
+
+ for (int i = 0; i < 2; ++i) {
+ QString file = (i == 0) ? validFile : invalidFile;
+ QTest::newRow("0, 0") << 0 << 0 << QFile::UnspecifiedError << file;
+ QTest::newRow("0, BIG") << 0 << 4096 << QFile::UnspecifiedError << file;
+ QTest::newRow("-1, 0") << -1 << 0 << QFile::UnspecifiedError << file;
+ QTest::newRow("0, -1") << 0 << -1 << QFile::UnspecifiedError << file;
+ }
+
+ QTest::newRow("0, 1") << 0 << 1 << QFile::NoError << validFile;
+}
+
+void tst_QFile::mapResource()
+{
+ QFETCH(QString, fileName);
+ QFETCH(int, offset);
+ QFETCH(int, size);
+ QFETCH(QFile::FileError, error);
+
+ QFile file(fileName);
+ uchar *memory = file.map(offset, size);
+ QCOMPARE(file.error(), error);
+ QVERIFY((error == QFile::NoError) ? (memory != 0) : (memory == 0));
+ if (error == QFile::NoError)
+ QCOMPARE(QString(memory[0]), QString::number(offset + 1));
+ QVERIFY(file.unmap(memory));
+}
+
+void tst_QFile::mapOpenMode_data()
+{
+ QTest::addColumn<int>("openMode");
+
+ QTest::newRow("ReadOnly") << int(QIODevice::ReadOnly);
+ //QTest::newRow("WriteOnly") << int(QIODevice::WriteOnly); // this doesn't make sense
+ QTest::newRow("ReadWrite") << int(QIODevice::ReadWrite);
+ QTest::newRow("ReadOnly,Unbuffered") << int(QIODevice::ReadOnly | QIODevice::Unbuffered);
+ QTest::newRow("ReadWrite,Unbuffered") << int(QIODevice::ReadWrite | QIODevice::Unbuffered);
+}
+
+void tst_QFile::mapOpenMode()
+{
+ QFETCH(int, openMode);
+ static const qint64 fileSize = 4096;
+
+ QByteArray pattern(fileSize, 'A');
+
+ QString fileName = QDir::currentPath() + '/' + "qfile_map_testfile";
+ if (QFile::exists(fileName)) {
+ QVERIFY(QFile::setPermissions(fileName,
+ QFile::WriteOwner | QFile::ReadOwner | QFile::WriteUser | QFile::ReadUser));
+ QFile::remove(fileName);
+ }
+ QFile file(fileName);
+
+ // make a file
+ QVERIFY(file.open(QFile::ReadWrite));
+ QVERIFY(file.write(pattern));
+ QVERIFY(file.flush());
+ file.close();
+
+ // open according to our mode
+ QVERIFY(file.open(QIODevice::OpenMode(openMode)));
+
+ uchar *memory = file.map(0, fileSize);
+ QVERIFY(memory);
+ QVERIFY(memcmp(memory, pattern, fileSize) == 0);
+
+ if (openMode & QIODevice::WriteOnly) {
+ // try to write to the file
+ *memory = 'a';
+ file.unmap(memory);
+ file.close();
+ file.open(QIODevice::OpenMode(openMode));
+ file.seek(0);
+ char c;
+ QVERIFY(file.getChar(&c));
+ QCOMPARE(c, 'a');
+ }
+
+ file.close();
+}
+
+void tst_QFile::openDirectory()
+{
+ QFile f1(SRCDIR "resources");
+ // it's a directory, it must exist
+ QVERIFY(f1.exists());
+
+ // ...but not be openable
+ QVERIFY(!f1.open(QIODevice::ReadOnly));
+ f1.close();
+ QVERIFY(!f1.open(QIODevice::ReadOnly|QIODevice::Unbuffered));
+ f1.close();
+ QVERIFY(!f1.open(QIODevice::ReadWrite));
+ f1.close();
+ QVERIFY(!f1.open(QIODevice::WriteOnly));
+ f1.close();
+ QVERIFY(!f1.open(QIODevice::WriteOnly|QIODevice::Unbuffered));
+ f1.close();
+}
+
+void tst_QFile::openStandardStreamsFileDescriptors()
+{
+#ifdef Q_WS_WINCE
+ //allthough Windows CE (not mobile!) has functions that allow redirecting
+ //the standard file descriptors to a file (see SetStdioPathW/GetStdioPathW)
+ //it does not have functions to simply open them like below .
+ QSKIP("Opening standard streams on Windows CE via descriptor not implemented", SkipAll);
+#endif
+ // Using file descriptors
+ {
+ QFile in;
+ in.open(STDIN_FILENO, QIODevice::ReadOnly);
+ QCOMPARE( in.pos(), (qint64)0 );
+ QCOMPARE( in.size(), (qint64)0 );
+ QVERIFY( in.isSequential() );
+ }
+
+ {
+ QFile out;
+ out.open(STDOUT_FILENO, QIODevice::WriteOnly);
+ QCOMPARE( out.pos(), (qint64)0 );
+ QCOMPARE( out.size(), (qint64)0 );
+ QVERIFY( out.isSequential() );
+ }
+
+ {
+ QFile err;
+ err.open(STDERR_FILENO, QIODevice::WriteOnly);
+ QCOMPARE( err.pos(), (qint64)0 );
+ QCOMPARE( err.size(), (qint64)0 );
+ QVERIFY( err.isSequential() );
+ }
+}
+
+void tst_QFile::openStandardStreamsBufferedStreams()
+{
+#if defined (Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QSKIP("Unix only test.", SkipAll);
+#endif
+ // Using streams
+ {
+ QFile in;
+ in.open(stdin, QIODevice::ReadOnly);
+ QCOMPARE( in.pos(), (qint64)0 );
+ QCOMPARE( in.size(), (qint64)0 );
+ QVERIFY( in.isSequential() );
+ }
+
+ {
+ QFile out;
+ out.open(stdout, QIODevice::WriteOnly);
+ QCOMPARE( out.pos(), (qint64)0 );
+ QCOMPARE( out.size(), (qint64)0 );
+ QVERIFY( out.isSequential() );
+ }
+
+ {
+ QFile err;
+ err.open(stderr, QIODevice::WriteOnly);
+ QCOMPARE( err.pos(), (qint64)0 );
+ QCOMPARE( err.size(), (qint64)0 );
+ QVERIFY( err.isSequential() );
+ }
+}
+
+void tst_QFile::openStandardStreams()
+{
+ openStandardStreamsFileDescriptors();
+ openStandardStreamsBufferedStreams();
+}
+
+void tst_QFile::writeNothing()
+{
+ for (int i = 0; i < NumberOfFileTypes; ++i) {
+ QFile file("file.txt");
+ QVERIFY( openFile(file, QIODevice::WriteOnly | QIODevice::Unbuffered, FileType(i)) );
+ QVERIFY( 0 == file.write((char *)0, 0) );
+ QCOMPARE( file.error(), QFile::NoError );
+ closeFile(file);
+ }
+}
+
+void tst_QFile::resize_data()
+{
+ QTest::addColumn<int>("filetype");
+
+ QTest::newRow("native") << int(OpenQFile);
+ QTest::newRow("fileno") << int(OpenFd);
+ QTest::newRow("stream") << int(OpenStream);
+#ifdef Q_OS_SYMBIAN
+ QTest::newRow("rfile") << int(OpenRFile);
+#endif
+}
+
+void tst_QFile::resize()
+{
+ QFETCH(int, filetype);
+ QString filename(QLatin1String("file.txt"));
+ QFile file(filename);
+ QVERIFY(openFile(file, QIODevice::ReadWrite, FileType(filetype)));
+ QVERIFY(file.resize(8));
+ QCOMPARE(file.size(), qint64(8));
+ closeFile(file);
+ QFile::resize(filename, 4);
+ QCOMPARE(QFileInfo(filename).size(), qint64(4));
+ QVERIFY(QFile::remove(filename));
+}
+
+void tst_QFile::objectConstructors()
+{
+ QObject ob;
+ QFile* file1 = new QFile(SRCDIR "testfile.txt", &ob);
+ QFile* file2 = new QFile(&ob);
+ QVERIFY(file1->exists());
+ QVERIFY(!file2->exists());
+}
+
+#ifdef Q_OS_SYMBIAN
+void tst_QFile::platformSecurity_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<bool>("readable");
+ QTest::addColumn<bool>("writable");
+
+ QString selfname = QCoreApplication::applicationFilePath();
+ QString ownprivate = QCoreApplication::applicationDirPath();
+ QString owndrive = selfname.left(2);
+ bool amiprivileged = RProcess().HasCapability(ECapabilityAllFiles);
+ QTest::newRow("resource") << owndrive + "/resource/apps/tst_qfile.rsc" << true << amiprivileged;
+ QTest::newRow("sys") << selfname << amiprivileged << false;
+ QTest::newRow("own private") << ownprivate + "/testfile.txt" << true << true;
+ QTest::newRow("other private") << owndrive + "/private/10003a3f/import/apps/tst_qfile_reg.rsc" << amiprivileged << amiprivileged;
+}
+
+void tst_QFile::platformSecurity()
+{
+ QFETCH(QString,file);
+ QFETCH(bool,readable);
+ QFETCH(bool,writable);
+
+ {
+ QFile f(file);
+ QCOMPARE(f.open(QIODevice::ReadOnly), readable);
+ }
+
+ {
+ QFile f(file);
+ QCOMPARE(f.open(QIODevice::ReadOnly | QIODevice::Unbuffered), readable);
+ }
+
+ //append mode used to avoid truncating the files.
+ {
+ QFile f(file);
+ QCOMPARE(f.open(QIODevice::WriteOnly | QIODevice::Append), writable);
+ }
+
+ {
+ QFile f(file);
+ QCOMPARE(f.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Unbuffered), writable);
+ }
+
+ {
+ QFile f(file);
+ QCOMPARE(f.open(QIODevice::ReadWrite), writable);
+ }
+
+ {
+ QFile f(file);
+ QCOMPARE(f.open(QIODevice::ReadWrite | QIODevice::Unbuffered), writable);
+ }
+}
+#endif
+
+void tst_QFile::caseSensitivity()
+{
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WIN) || defined(Q_OS_MAC)
+ const bool caseSensitive = false;
+#else
+ const bool caseSensitive = true;
+#endif
+ QByteArray testData("a little test");
+ QString filename("File.txt");
+ {
+ QFile f(filename);
+ QVERIFY(f.open(QIODevice::WriteOnly));
+ QVERIFY(f.write(testData));
+ f.close();
+ }
+ QStringList alternates;
+ QFileInfo fi(filename);
+ QVERIFY(fi.exists());
+ alternates << "file.txt" << "File.TXT" << "fIlE.TxT" << fi.absoluteFilePath().toUpper() << fi.absoluteFilePath().toLower();
+ foreach (QString alt, alternates) {
+ QFileInfo fi2(alt);
+ QCOMPARE(fi2.exists(), !caseSensitive);
+ QCOMPARE(fi.size() == fi2.size(), !caseSensitive);
+ QFile f2(alt);
+ QCOMPARE(f2.open(QIODevice::ReadOnly), !caseSensitive);
+ if (!caseSensitive)
+ QCOMPARE(f2.readAll(), testData);
+ }
+}
+
+//MSVCRT asserts when any function is called with a closed file handle.
+//This replaces the default crashing error handler with one that ignores the error (allowing EBADF to be returned)
+class AutoIgnoreInvalidParameter
+{
+public:
+#if defined(Q_OS_WIN) && defined (Q_CC_MSVC)
+ static void ignore_invalid_parameter(const wchar_t*, const wchar_t*, const wchar_t*, unsigned int, uintptr_t) {}
+ AutoIgnoreInvalidParameter()
+ {
+ oldHandler = _set_invalid_parameter_handler(ignore_invalid_parameter);
+ //also disable the abort/retry/ignore popup
+ oldReportMode = _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG);
+ }
+ ~AutoIgnoreInvalidParameter()
+ {
+ //restore previous settings
+ _set_invalid_parameter_handler(oldHandler);
+ _CrtSetReportMode(_CRT_ASSERT, oldReportMode);
+ }
+ _invalid_parameter_handler oldHandler;
+ int oldReportMode;
+#endif
+};
+
+void tst_QFile::autocloseHandle()
+{
+#ifdef Q_OS_SYMBIAN
+ // these tests are a bit different, because using a closed file handle results in a panic rather than error
+ {
+ QFile file("readonlyfile");
+ QFile file2("readonlyfile");
+ QVERIFY(openFile(file, QIODevice::ReadOnly, OpenRFile, QFile::AutoCloseHandle));
+ // file is opened with mandatory lock, so opening again should fail
+ QVERIFY(!file2.open(QIODevice::ReadOnly));
+
+ file.close();
+ // opening again should now succeed (because handle is closed)
+ QVERIFY(file2.open(QIODevice::ReadOnly));
+ }
+
+ {
+ QFile file("readonlyfile");
+ QFile file2("readonlyfile");
+ QVERIFY(openFile(file, QIODevice::ReadOnly, OpenRFile, QFile::DontCloseHandle));
+ // file is opened with mandatory lock, so opening again should fail
+ QVERIFY(!file2.open(QIODevice::ReadOnly));
+
+ file.close();
+ // opening again should still fail (because handle is not auto closed)
+ QVERIFY(!file2.open(QIODevice::ReadOnly));
+
+ rfile_.Close();
+ // now it should succeed
+ QVERIFY(file2.open(QIODevice::ReadOnly));
+ }
+#endif
+
+ {
+ QFile file("readonlyfile");
+ QVERIFY(openFile(file, QIODevice::ReadOnly, OpenFd, QFile::AutoCloseHandle));
+ int fd = fd_;
+ QCOMPARE(file.handle(), fd);
+ file.close();
+ fd_ = -1;
+ QCOMPARE(file.handle(), -1);
+ AutoIgnoreInvalidParameter a;
+ Q_UNUSED(a);
+ //file is closed, read should fail
+ char buf;
+ QCOMPARE((int)QT_READ(fd, &buf, 1), -1);
+ QVERIFY(errno = EBADF);
+ }
+
+ {
+ QFile file("readonlyfile");
+ QVERIFY(openFile(file, QIODevice::ReadOnly, OpenFd, QFile::DontCloseHandle));
+ QCOMPARE(file.handle(), fd_);
+ file.close();
+ QCOMPARE(file.handle(), -1);
+ //file is not closed, read should succeed
+ char buf;
+ QCOMPARE((int)QT_READ(fd_, &buf, 1), 1);
+ ::close(fd_);
+ fd_ = -1;
+ }
+
+ {
+ QFile file("readonlyfile");
+ QVERIFY(openFile(file, QIODevice::ReadOnly, OpenStream, QFile::AutoCloseHandle));
+ int fd = fileno(stream_);
+ QCOMPARE(file.handle(), fd);
+ file.close();
+ stream_ = 0;
+ QCOMPARE(file.handle(), -1);
+ AutoIgnoreInvalidParameter a;
+ Q_UNUSED(a);
+ //file is closed, read should fail
+ char buf;
+ QCOMPARE((int)QT_READ(fd, &buf, 1), -1); //not using fread because the FILE* was freed by fclose
+ }
+
+ {
+ QFile file("readonlyfile");
+ QVERIFY(openFile(file, QIODevice::ReadOnly, OpenStream, QFile::DontCloseHandle));
+ QCOMPARE(file.handle(), fileno(stream_));
+ file.close();
+ QCOMPARE(file.handle(), -1);
+ //file is not closed, read should succeed
+ char buf;
+ QCOMPARE(int(::fread(&buf, 1, 1, stream_)), 1);
+ ::fclose(stream_);
+ stream_ = 0;
+ }
+}
+
+QTEST_MAIN(tst_QFile)
+#include "tst_qfile.moc"
diff --git a/tests/auto/corelib/io/qfile/two.dots.file b/tests/auto/corelib/io/qfile/two.dots.file
new file mode 100644
index 0000000000..1910281566
--- /dev/null
+++ b/tests/auto/corelib/io/qfile/two.dots.file
@@ -0,0 +1 @@
+foo \ No newline at end of file
diff --git a/tests/auto/corelib/io/qfileinfo/.gitignore b/tests/auto/corelib/io/qfileinfo/.gitignore
new file mode 100644
index 0000000000..fc1a8906af
--- /dev/null
+++ b/tests/auto/corelib/io/qfileinfo/.gitignore
@@ -0,0 +1 @@
+tst_qfileinfo
diff --git a/tests/auto/corelib/io/qfileinfo/qfileinfo.pro b/tests/auto/corelib/io/qfileinfo/qfileinfo.pro
new file mode 100644
index 0000000000..2fd626a57e
--- /dev/null
+++ b/tests/auto/corelib/io/qfileinfo/qfileinfo.pro
@@ -0,0 +1,33 @@
+load(qttest_p4)
+SOURCES += tst_qfileinfo.cpp
+
+QT = core-private
+
+
+RESOURCES += qfileinfo.qrc
+
+wince*:|symbian: {
+ deploy.files += qfileinfo.qrc tst_qfileinfo.cpp
+ res.files = resources\\file1 resources\\file1.ext1 resources\\file1.ext1.ext2
+ res.path = resources
+ DEPLOYMENT += deploy res
+}
+
+win32*:LIBS += -ladvapi32 -lnetapi32
+
+symbian {
+ TARGET.CAPABILITY=AllFiles
+ LIBS *= -lefsrv
+ INCLUDEPATH *= $$MW_LAYER_SYSTEMINCLUDE # Needed for e32svr.h in S^3 envs
+ }
+
+# support for running test from shadow build directory
+wince* {
+ DEFINES += SRCDIR=\\\"\\\"
+} else:symbian {
+ # do not define SRCDIR at all
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/io/qfileinfo/qfileinfo.qrc b/tests/auto/corelib/io/qfileinfo/qfileinfo.qrc
new file mode 100644
index 0000000000..2c63d8afeb
--- /dev/null
+++ b/tests/auto/corelib/io/qfileinfo/qfileinfo.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/tst_qfileinfo/">
+ <file>resources/</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/corelib/io/qfileinfo/resources/file1 b/tests/auto/corelib/io/qfileinfo/resources/file1
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qfileinfo/resources/file1
diff --git a/tests/auto/corelib/io/qfileinfo/resources/file1.ext1 b/tests/auto/corelib/io/qfileinfo/resources/file1.ext1
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qfileinfo/resources/file1.ext1
diff --git a/tests/auto/corelib/io/qfileinfo/resources/file1.ext1.ext2 b/tests/auto/corelib/io/qfileinfo/resources/file1.ext1.ext2
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qfileinfo/resources/file1.ext1.ext2
diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
new file mode 100644
index 0000000000..1eb59ac96a
--- /dev/null
+++ b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
@@ -0,0 +1,1811 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qfile.h>
+#include <qdir.h>
+#include <qcoreapplication.h>
+#include <qlibrary.h>
+#include <qtemporaryfile.h>
+#include <qdir.h>
+#include <qfileinfo.h>
+#ifdef Q_OS_UNIX
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <pwd.h>
+#endif
+#ifdef Q_OS_WIN
+#define _WIN32_WINNT 0x500
+#include <qt_windows.h>
+#include <qlibrary.h>
+#include <lm.h>
+#endif
+#include <qplatformdefs.h>
+#include <qdebug.h>
+#ifdef Q_OS_SYMBIAN
+#include <f32file.h>
+#include <private/qcore_symbian_p.h>
+#endif
+#include "../../../network-settings.h"
+#include <private/qfileinfo_p.h>
+#include "../../../../shared/filesystem.h"
+
+#if defined(Q_OS_SYMBIAN)
+# define SRCDIR ""
+# define NO_SYMLINKS
+#endif
+
+QT_BEGIN_NAMESPACE
+extern Q_AUTOTEST_EXPORT bool qIsLikelyToBeNfs(int /* handle */);
+QT_END_NAMESPACE
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QFileInfo : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QFileInfo();
+ ~tst_QFileInfo();
+
+private slots:
+ void getSetCheck();
+
+ void copy();
+
+ void isFile_data();
+ void isFile();
+
+ void isDir_data();
+ void isDir();
+
+ void isRoot_data();
+ void isRoot();
+
+ void exists_data();
+ void exists();
+
+ void absolutePath_data();
+ void absolutePath();
+
+ void absFilePath_data();
+ void absFilePath();
+
+ void canonicalPath();
+ void canonicalFilePath();
+
+ void fileName_data();
+ void fileName();
+
+ void bundleName_data();
+ void bundleName();
+
+ void dir_data();
+ void dir();
+
+ void suffix_data();
+ void suffix();
+
+ void completeSuffix_data();
+ void completeSuffix();
+
+ void baseName_data();
+ void baseName();
+
+ void completeBaseName_data();
+ void completeBaseName();
+
+ void permission_data();
+ void permission();
+
+ void size_data();
+ void size();
+
+ void systemFiles();
+
+ void compare_data();
+ void compare();
+
+ void consistent_data();
+ void consistent();
+
+ void fileTimes_data();
+ void fileTimes();
+ void fileTimes_oldFile();
+
+ void isSymLink_data();
+ void isSymLink();
+
+ void isHidden_data();
+ void isHidden();
+#if defined(Q_OS_MAC)
+ void isHiddenFromFinder();
+#endif
+
+ void isBundle_data();
+ void isBundle();
+
+ void isLocalFs_data();
+ void isLocalFs();
+
+ void refresh();
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ void ntfsJunctionPointsAndSymlinks_data();
+ void ntfsJunctionPointsAndSymlinks();
+ void brokenShortcut();
+#endif
+
+ void isWritable();
+ void isExecutable();
+ void testDecomposedUnicodeNames_data();
+ void testDecomposedUnicodeNames();
+
+ void equalOperator() const;
+ void equalOperatorWithDifferentSlashes() const;
+ void notEqualOperator() const;
+
+ void detachingOperations();
+
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ void owner();
+#endif
+ void group();
+
+ void invalidState();
+};
+
+tst_QFileInfo::tst_QFileInfo()
+{
+}
+
+tst_QFileInfo::~tst_QFileInfo()
+{
+ QFile::remove("brokenlink.lnk");
+ QFile::remove("link.lnk");
+ QFile::remove("file1");
+ QFile::remove("dummyfile");
+ QFile::remove("simplefile.txt");
+ QFile::remove("longFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileName.txt");
+#ifdef Q_OS_SYMBIAN
+ QFile::remove("hidden.txt");
+ QFile::remove("nothidden.txt");
+#else
+ QFile::remove("tempfile.txt");
+#endif
+
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ QDir().rmdir("./.hidden-directory");
+ QFile::remove("link_to_tst_qfileinfo");
+#endif
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QDir().rmdir("./hidden-directory");
+ QDir().rmdir("abs_symlink");
+ QDir().rmdir("rel_symlink");
+ QDir().rmdir("junction_pwd");
+ QDir().rmdir("junction_root");
+ QDir().rmdir("mountpoint");
+ QFile::remove("abs_symlink.cpp");
+ QFile::remove("rel_symlink.cpp");
+#endif
+}
+
+// Testing get/set functions
+void tst_QFileInfo::getSetCheck()
+{
+ QFileInfo obj1;
+ // bool QFileInfo::caching()
+ // void QFileInfo::setCaching(bool)
+ obj1.setCaching(false);
+ QCOMPARE(false, obj1.caching());
+ obj1.setCaching(true);
+ QCOMPARE(true, obj1.caching());
+}
+
+static QFileInfoPrivate* getPrivate(QFileInfo &info)
+{
+ return (*reinterpret_cast<QFileInfoPrivate**>(&info));
+}
+
+void tst_QFileInfo::copy()
+{
+ QTemporaryFile *t;
+ t = new QTemporaryFile;
+ t->open();
+ QFileInfo info(t->fileName());
+ QVERIFY(info.exists());
+
+ //copy constructor
+ QFileInfo info2(info);
+ QFileInfoPrivate *privateInfo = getPrivate(info);
+ QFileInfoPrivate *privateInfo2 = getPrivate(info2);
+ QCOMPARE(privateInfo, privateInfo2);
+
+ //operator =
+ QFileInfo info3 = info;
+ QFileInfoPrivate *privateInfo3 = getPrivate(info3);
+ QCOMPARE(privateInfo, privateInfo3);
+ QCOMPARE(privateInfo2, privateInfo3);
+
+ //refreshing info3 will detach it
+ QFile file(info.absoluteFilePath());
+ QVERIFY(file.open(QFile::WriteOnly));
+ QCOMPARE(file.write("JAJAJAA"), qint64(7));
+ file.flush();
+
+ QTest::qWait(250);
+#if defined(Q_OS_WIN) || defined(Q_OS_WINCE)
+ if (QSysInfo::windowsVersion() & QSysInfo::WV_VISTA ||
+ QSysInfo::windowsVersion() & QSysInfo::WV_CE_based)
+ file.close();
+#endif
+#if defined(Q_OS_WINCE)
+ // On Windows CE we need to close the file.
+ // Otherwise the content will be cached and not
+ // flushed to the storage, although we flushed it
+ // manually!!! CE has interim cache, we cannot influence.
+ QTest::qWait(5000);
+#endif
+ info3.refresh();
+ privateInfo3 = getPrivate(info3);
+ QVERIFY(privateInfo != privateInfo3);
+ QVERIFY(privateInfo2 != privateInfo3);
+ QCOMPARE(privateInfo, privateInfo2);
+}
+
+void tst_QFileInfo::isFile_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("data0") << QDir::currentPath() << false;
+ QTest::newRow("data1") << SRCDIR "tst_qfileinfo.cpp" << true;
+ QTest::newRow("data2") << ":/tst_qfileinfo/resources/" << false;
+ QTest::newRow("data3") << ":/tst_qfileinfo/resources/file1" << true;
+ QTest::newRow("data4") << ":/tst_qfileinfo/resources/afilethatshouldnotexist" << false;
+}
+
+void tst_QFileInfo::isFile()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, expected);
+
+ QFileInfo fi(path);
+ QCOMPARE(fi.isFile(), expected);
+}
+
+
+void tst_QFileInfo::isDir_data()
+{
+ // create a broken symlink
+ QFile::remove("brokenlink.lnk");
+ QFile::remove("dummyfile");
+ QFile file3("dummyfile");
+ file3.open(QIODevice::WriteOnly);
+ if (file3.link("brokenlink.lnk")) {
+ file3.remove();
+ QFileInfo info3("brokenlink.lnk");
+ QVERIFY( info3.isSymLink() );
+ }
+
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("data0") << QDir::currentPath() << true;
+ QTest::newRow("data1") << SRCDIR "tst_qfileinfo.cpp" << false;
+ QTest::newRow("data2") << ":/tst_qfileinfo/resources/" << true;
+ QTest::newRow("data3") << ":/tst_qfileinfo/resources/file1" << false;
+ QTest::newRow("data4") << ":/tst_qfileinfo/resources/afilethatshouldnotexist" << false;
+
+ QTest::newRow("simple dir") << SRCDIR "resources" << true;
+ QTest::newRow("simple dir with slash") << SRCDIR "resources/" << true;
+
+ QTest::newRow("broken link") << "brokenlink.lnk" << false;
+
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("drive 1") << "c:" << true;
+ QTest::newRow("drive 2") << "c:/" << true;
+ //QTest::newRow("drive 2") << "t:s" << false;
+#endif
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << true;
+ QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << true;
+ QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << true;
+ QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << true;
+ QTest::newRow("unc 5") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp" << true;
+ QTest::newRow("unc 6") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp/" << true;
+ QTest::newRow("unc 7") << "//" + QtNetworkSettings::winServerName() + "/testshare/adirthatshouldnotexist" << false;
+#endif
+}
+
+void tst_QFileInfo::isDir()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, expected);
+
+ QFileInfo fi(path);
+ QCOMPARE(fi.isDir(), expected);
+}
+
+void tst_QFileInfo::isRoot_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("expected");
+ QTest::newRow("data0") << QDir::currentPath() << false;
+ QTest::newRow("data1") << "/" << true;
+ QTest::newRow("data2") << "*" << false;
+ QTest::newRow("data3") << "/*" << false;
+ QTest::newRow("data4") << ":/tst_qfileinfo/resources/" << false;
+ QTest::newRow("data5") << ":/" << true;
+
+ QTest::newRow("simple dir") << SRCDIR "resources" << false;
+ QTest::newRow("simple dir with slash") << SRCDIR "resources/" << false;
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("drive 1") << "c:" << false;
+ QTest::newRow("drive 2") << "c:/" << true;
+ QTest::newRow("drive 3") << "p:/" << false;
+#endif
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << true;
+ QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << true;
+ QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << false;
+ QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << false;
+ QTest::newRow("unc 7") << "//ahostthatshouldnotexist" << false;
+#endif
+}
+
+void tst_QFileInfo::isRoot()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, expected);
+
+ QFileInfo fi(path);
+ QCOMPARE(fi.isRoot(), expected);
+}
+
+void tst_QFileInfo::exists_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("data0") << QDir::currentPath() << true;
+ QTest::newRow("data1") << SRCDIR "tst_qfileinfo.cpp" << true;
+ QTest::newRow("data2") << "/I/do_not_expect_this_path_to_exist/" << false;
+ QTest::newRow("data3") << ":/tst_qfileinfo/resources/" << true;
+ QTest::newRow("data4") << ":/tst_qfileinfo/resources/file1" << true;
+ QTest::newRow("data5") << ":/I/do_not_expect_this_path_to_exist/" << false;
+ QTest::newRow("data6") << SRCDIR "resources/*" << false;
+ QTest::newRow("data7") << SRCDIR "resources/*.foo" << false;
+ QTest::newRow("data8") << SRCDIR "resources/*.ext1" << false;
+ QTest::newRow("data9") << SRCDIR "resources/file?.ext1" << false;
+ QTest::newRow("data10") << "." << true;
+ QTest::newRow("data11") << ". " << false;
+ QTest::newRow("empty") << "" << false;
+
+ QTest::newRow("simple dir") << SRCDIR "resources" << true;
+ QTest::newRow("simple dir with slash") << SRCDIR "resources/" << true;
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << true;
+ QTest::newRow("unc 2") << "//" + QtNetworkSettings::winServerName() + "/" << true;
+ QTest::newRow("unc 3") << "//" + QtNetworkSettings::winServerName() + "/testshare" << true;
+ QTest::newRow("unc 4") << "//" + QtNetworkSettings::winServerName() + "/testshare/" << true;
+ QTest::newRow("unc 5") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp" << true;
+ QTest::newRow("unc 6") << "//" + QtNetworkSettings::winServerName() + "/testshare/tmp/" << true;
+ QTest::newRow("unc 7") << "//" + QtNetworkSettings::winServerName() + "/testshare/adirthatshouldnotexist" << false;
+ QTest::newRow("unc 8") << "//" + QtNetworkSettings::winServerName() + "/asharethatshouldnotexist" << false;
+ QTest::newRow("unc 9") << "//ahostthatshouldnotexist" << false;
+#endif
+}
+
+void tst_QFileInfo::exists()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, expected);
+
+ QFileInfo fi(path);
+ QCOMPARE(fi.exists(), expected);
+}
+
+void tst_QFileInfo::absolutePath_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QString>("filename");
+
+ QString drivePrefix;
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ drivePrefix = QDir::currentPath().left(2);
+ QString nonCurrentDrivePrefix =
+ drivePrefix.left(1).compare("X", Qt::CaseInsensitive) == 0 ? QString("Y:") : QString("X:");
+
+ // Make sure drive-relative paths return correct absolute paths (task 255326)
+ QTest::newRow("<current drive>:my.dll") << drivePrefix + "my.dll" << QDir::currentPath() << "my.dll";
+ QTest::newRow("<not current drive>:my.dll") << nonCurrentDrivePrefix + "my.dll"
+ << nonCurrentDrivePrefix + "/"
+ << "my.dll";
+#endif
+ QTest::newRow("0") << "/machine/share/dir1/" << drivePrefix + "/machine/share/dir1" << "";
+ QTest::newRow("1") << "/machine/share/dir1" << drivePrefix + "/machine/share" << "dir1";
+ QTest::newRow("2") << "/usr/local/bin" << drivePrefix + "/usr/local" << "bin";
+ QTest::newRow("3") << "/usr/local/bin/" << drivePrefix + "/usr/local/bin" << "";
+ QTest::newRow("/test") << "/test" << drivePrefix + "/" << "test";
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ // see task 102898
+ QTest::newRow("c:\\autoexec.bat") << "c:\\autoexec.bat" << "C:/"
+ << "autoexec.bat";
+#endif
+ QTest::newRow("QTBUG-19995.1") << drivePrefix + "/System/Library/StartupItems/../Frameworks"
+ << drivePrefix + "/System/Library"
+ << "Frameworks";
+ QTest::newRow("QTBUG-19995.2") << drivePrefix + "/System/Library/StartupItems/../Frameworks/"
+ << drivePrefix + "/System/Library/Frameworks" << "";
+}
+
+void tst_QFileInfo::absolutePath()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, path);
+ QFETCH(QString, filename);
+
+ QFileInfo fi(file);
+
+ QCOMPARE(fi.absolutePath(), path);
+ QCOMPARE(fi.fileName(), filename);
+}
+
+void tst_QFileInfo::absFilePath_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("relativeFile") << "tmp.txt" << QDir::currentPath() + "/tmp.txt";
+ QTest::newRow("relativeFileInSubDir") << "temp/tmp.txt" << QDir::currentPath() + "/" + "temp/tmp.txt";
+ QString drivePrefix;
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QString curr = QDir::currentPath();
+
+ curr.remove(0, 2); // Make it a absolute path with no drive specifier: \depot\qt-4.2\tests\auto\qfileinfo
+ QTest::newRow(".") << curr << QDir::currentPath();
+ QTest::newRow("absFilePath") << "c:\\home\\andy\\tmp.txt" << "C:/home/andy/tmp.txt";
+
+ // Make sure drive-relative paths return correct absolute paths (task 255326)
+ drivePrefix = QDir::currentPath().left(2);
+ QString nonCurrentDrivePrefix =
+ drivePrefix.left(1).compare("X", Qt::CaseInsensitive) == 0 ? QString("Y:") : QString("X:");
+
+ QTest::newRow("<current drive>:my.dll") << drivePrefix + "temp/my.dll" << QDir::currentPath() + "/temp/my.dll";
+ QTest::newRow("<not current drive>:my.dll") << nonCurrentDrivePrefix + "temp/my.dll"
+ << nonCurrentDrivePrefix + "/temp/my.dll";
+#else
+ QTest::newRow("absFilePath") << "/home/andy/tmp.txt" << "/home/andy/tmp.txt";
+#endif
+ QTest::newRow("QTBUG-19995") << drivePrefix + "/System/Library/StartupItems/../Frameworks"
+ << drivePrefix + "/System/Library/Frameworks";
+}
+
+void tst_QFileInfo::absFilePath()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QVERIFY(QString::compare(fi.absoluteFilePath(), expected, Qt::CaseInsensitive) == 0);
+#else
+ QCOMPARE(fi.absoluteFilePath(), expected);
+#endif
+}
+
+void tst_QFileInfo::canonicalPath()
+{
+ QTemporaryFile tempFile;
+ tempFile.setAutoRemove(true);
+ tempFile.open();
+ QFileInfo fi(tempFile.fileName());
+ QCOMPARE(fi.canonicalPath(), QFileInfo(QDir::tempPath()).canonicalFilePath());
+}
+
+void tst_QFileInfo::canonicalFilePath()
+{
+ const QString fileName("tmp.canon");
+ QFile tempFile(fileName);
+ QVERIFY(tempFile.open(QFile::WriteOnly));
+ QFileInfo fi(tempFile.fileName());
+ QCOMPARE(fi.canonicalFilePath(), QDir::currentPath() + "/" + fileName);
+ tempFile.remove();
+
+ // This used to crash on Mac, verify that it doesn't anymore.
+ QFileInfo info("/tmp/../../../../../../../../../../../../../../../../../");
+ info.canonicalFilePath();
+
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ // This used to crash on Mac
+ QFileInfo dontCrash(QLatin1String("/"));
+ QCOMPARE(dontCrash.canonicalFilePath(), QLatin1String("/"));
+#endif
+
+#ifndef Q_OS_WIN
+ // test symlinks
+ QFile::remove("link.lnk");
+ {
+ QFile file(SRCDIR "tst_qfileinfo.cpp");
+ if (file.link("link.lnk")) {
+ QFileInfo info1(file);
+ QFileInfo info2("link.lnk");
+ QCOMPARE(info1.canonicalFilePath(), info2.canonicalFilePath());
+ }
+ }
+# if !defined(Q_OS_SYMBIAN)
+ // Symbian doesn't support links to directories
+ {
+ const QString link(QDir::tempPath() + QDir::separator() + "tst_qfileinfo");
+ QFile::remove(link);
+ QFile file(QDir::currentPath());
+ if (file.link(link)) {
+ QFile tempfile("tempfile.txt");
+ tempfile.open(QIODevice::ReadWrite);
+ tempfile.write("This file is generated by the QFileInfo autotest.");
+ QVERIFY(tempfile.flush());
+ tempfile.close();
+
+ QFileInfo info1("tempfile.txt");
+ QFileInfo info2(link + QDir::separator() + "tempfile.txt");
+
+ QVERIFY(info1.exists());
+ QVERIFY(info2.exists());
+ QCOMPARE(info1.canonicalFilePath(), info2.canonicalFilePath());
+
+ QFileInfo info3(link + QDir::separator() + "link.lnk");
+ QFileInfo info4(SRCDIR "tst_qfileinfo.cpp");
+ QVERIFY(!info3.canonicalFilePath().isEmpty());
+ QCOMPARE(info4.canonicalFilePath(), info3.canonicalFilePath());
+
+ tempfile.remove();
+ }
+ }
+ {
+ QString link(QDir::tempPath() + QDir::separator() + "tst_qfileinfo"
+ + QDir::separator() + "link_to_tst_qfileinfo");
+ QFile::remove(link);
+
+ QFile file(QDir::tempPath() + QDir::separator() + "tst_qfileinfo"
+ + QDir::separator() + "tst_qfileinfo.cpp");
+ if (file.link(link))
+ {
+ QFileInfo info1("tst_qfileinfo.cpp");
+ QFileInfo info2(link);
+ QCOMPARE(info1.canonicalFilePath(), info2.canonicalFilePath());
+ }
+ }
+# endif
+#endif
+
+#ifdef Q_OS_WIN
+ typedef BOOL (WINAPI *PtrCreateSymbolicLink)(LPTSTR, LPTSTR, DWORD);
+ PtrCreateSymbolicLink ptrCreateSymbolicLink =
+ (PtrCreateSymbolicLink)QLibrary::resolve(QLatin1String("kernel32"), "CreateSymbolicLinkW");
+
+ if (!ptrCreateSymbolicLink) {
+ QSKIP("Symbolic links aren't supported by FS", SkipAll);
+ } else {
+ // CreateSymbolicLink can return TRUE & still fail to create the link,
+ // the error code in that case is ERROR_PRIVILEGE_NOT_HELD (1314)
+ SetLastError(0);
+ BOOL ret = ptrCreateSymbolicLink((wchar_t*)QString("res").utf16(), (wchar_t*)QString("resources").utf16(), 1);
+ DWORD dwErr = GetLastError();
+ if (!ret)
+ QSKIP("Symbolic links aren't supported by FS", SkipAll);
+ QString currentPath = QDir::currentPath();
+ bool is_res_Current = QDir::setCurrent("res");
+ if (!is_res_Current && dwErr == 1314)
+ QSKIP("Not enough privilages to create Symbolic links", SkipAll);
+ QCOMPARE(is_res_Current, true);
+
+ QCOMPARE(QFileInfo("file1").canonicalFilePath(), currentPath + "/resources/file1");
+
+ QCOMPARE(QDir::setCurrent(currentPath), true);
+ QDir::current().rmdir("res");
+ }
+#endif
+}
+
+void tst_QFileInfo::fileName_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("relativeFile") << "tmp.txt" << "tmp.txt";
+ QTest::newRow("relativeFileInSubDir") << "temp/tmp.txt" << "tmp.txt";
+#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("absFilePath") << "c:\\home\\andy\\tmp.txt" << "tmp.txt";
+#else
+ QTest::newRow("absFilePath") << "/home/andy/tmp.txt" << "tmp.txt";
+#endif
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "file1.ext1";
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "file1.ext1.ext2";
+
+ QTest::newRow("ending slash [small]") << QString::fromLatin1("/a/") << QString::fromLatin1("");
+ QTest::newRow("no ending slash [small]") << QString::fromLatin1("/a") << QString::fromLatin1("a");
+
+ QTest::newRow("ending slash") << QString::fromLatin1("/somedir/") << QString::fromLatin1("");
+ QTest::newRow("no ending slash") << QString::fromLatin1("/somedir") << QString::fromLatin1("somedir");
+}
+
+void tst_QFileInfo::fileName()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.fileName(), expected);
+}
+
+void tst_QFileInfo::bundleName_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("root") << "/" << "";
+ QTest::newRow("etc") << "/etc" << "";
+#ifdef Q_OS_MAC
+ QTest::newRow("safari") << "/Applications/Safari.app" << "Safari";
+#endif
+}
+
+void tst_QFileInfo::bundleName()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.bundleName(), expected);
+}
+
+void tst_QFileInfo::dir_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<bool>("absPath");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("relativeFile") << "tmp.txt" << false << ".";
+ QTest::newRow("relativeFileAbsPath") << "tmp.txt" << true << QDir::currentPath();
+ QTest::newRow("relativeFileInSubDir") << "temp/tmp.txt" << false << "temp";
+ QTest::newRow("relativeFileInSubDirAbsPath") << "temp/tmp.txt" << true << QDir::currentPath() + "/temp";
+ QTest::newRow("absFilePath") << QDir::currentPath() + "/tmp.txt" << false << QDir::currentPath();
+ QTest::newRow("absFilePathAbsPath") << QDir::currentPath() + "/tmp.txt" << true << QDir::currentPath();
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << true << ":/tst_qfileinfo/resources";
+}
+
+void tst_QFileInfo::dir()
+{
+ QFETCH(QString, file);
+ QFETCH(bool, absPath);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ if (absPath) {
+ QCOMPARE(fi.absolutePath(), expected);
+ QCOMPARE(fi.absoluteDir().path(), expected);
+ } else {
+ QCOMPARE(fi.path(), expected);
+ QCOMPARE(fi.dir().path(), expected);
+ }
+}
+
+
+void tst_QFileInfo::suffix_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("noextension0") << "file" << "";
+ QTest::newRow("noextension1") << "/path/to/file" << "";
+ QTest::newRow("data0") << "file.tar" << "tar";
+ QTest::newRow("data1") << "file.tar.gz" << "gz";
+ QTest::newRow("data2") << "/path/file/file.tar.gz" << "gz";
+ QTest::newRow("data3") << "/path/file.tar" << "tar";
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "ext1";
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "ext2";
+ QTest::newRow("hidden1") << ".ext1" << "ext1";
+ QTest::newRow("hidden1") << ".ext" << "ext";
+ QTest::newRow("hidden1") << ".ex" << "ex";
+ QTest::newRow("hidden1") << ".e" << "e";
+ QTest::newRow("hidden2") << ".ext1.ext2" << "ext2";
+ QTest::newRow("hidden2") << ".ext.ext2" << "ext2";
+ QTest::newRow("hidden2") << ".ex.ext2" << "ext2";
+ QTest::newRow("hidden2") << ".e.ext2" << "ext2";
+ QTest::newRow("hidden2") << "..ext2" << "ext2";
+}
+
+void tst_QFileInfo::suffix()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.suffix(), expected);
+}
+
+
+void tst_QFileInfo::completeSuffix_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("noextension0") << "file" << "";
+ QTest::newRow("noextension1") << "/path/to/file" << "";
+ QTest::newRow("data0") << "file.tar" << "tar";
+ QTest::newRow("data1") << "file.tar.gz" << "tar.gz";
+ QTest::newRow("data2") << "/path/file/file.tar.gz" << "tar.gz";
+ QTest::newRow("data3") << "/path/file.tar" << "tar";
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "ext1";
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "ext1.ext2";
+}
+
+void tst_QFileInfo::completeSuffix()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.completeSuffix(), expected);
+}
+
+void tst_QFileInfo::baseName_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("data0") << "file.tar" << "file";
+ QTest::newRow("data1") << "file.tar.gz" << "file";
+ QTest::newRow("data2") << "/path/file/file.tar.gz" << "file";
+ QTest::newRow("data3") << "/path/file.tar" << "file";
+ QTest::newRow("data4") << "/path/file" << "file";
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "file1";
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "file1";
+}
+
+void tst_QFileInfo::baseName()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.baseName(), expected);
+}
+
+void tst_QFileInfo::completeBaseName_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("data0") << "file.tar" << "file";
+ QTest::newRow("data1") << "file.tar.gz" << "file.tar";
+ QTest::newRow("data2") << "/path/file/file.tar.gz" << "file.tar";
+ QTest::newRow("data3") << "/path/file.tar" << "file";
+ QTest::newRow("data4") << "/path/file" << "file";
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << "file1";
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << "file1.ext1";
+}
+
+void tst_QFileInfo::completeBaseName()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.completeBaseName(), expected);
+}
+
+void tst_QFileInfo::permission_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<int>("perms");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("data0") << QCoreApplication::instance()->applicationFilePath() << int(QFile::ExeUser) << true;
+ QTest::newRow("data1") << SRCDIR "tst_qfileinfo.cpp" << int(QFile::ReadUser) << true;
+// QTest::newRow("data2") << "tst_qfileinfo.cpp" << int(QFile::WriteUser) << false;
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << int(QFile::ReadUser) << true;
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1" << int(QFile::WriteUser) << false;
+ QTest::newRow("resource3") << ":/tst_qfileinfo/resources/file1.ext1" << int(QFile::ExeUser) << false;
+}
+
+void tst_QFileInfo::permission()
+{
+ QFETCH(QString, file);
+ QFETCH(int, perms);
+ QFETCH(bool, expected);
+#ifdef Q_OS_SYMBIAN
+ QSKIP("No user based rights in Symbian OS - SOS needs platform security tests instead", SkipAll);
+#endif
+ QFileInfo fi(file);
+ QCOMPARE(fi.permission(QFile::Permissions(perms)), expected);
+}
+
+void tst_QFileInfo::size_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<int>("size");
+
+ QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << 0;
+ QFile::remove("file1");
+ QFile file("file1");
+ QVERIFY(file.open(QFile::WriteOnly));
+ QCOMPARE(file.write("JAJAJAA"), qint64(7));
+ QTest::newRow("created-file") << "file1" << 7;
+
+ QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1.ext2" << 0;
+}
+
+void tst_QFileInfo::size()
+{
+ QFETCH(QString, file);
+
+ QFileInfo fi(file);
+ (void)fi.permissions(); // see task 104198
+ QTEST(int(fi.size()), "size");
+}
+
+void tst_QFileInfo::systemFiles()
+{
+#if !defined(Q_OS_WIN) || defined(Q_OS_WINCE)
+ QSKIP("This is a Windows only test", SkipAll);
+#endif
+ QFileInfo fi("c:\\pagefile.sys");
+ QVERIFY(fi.exists()); // task 167099
+ QVERIFY(fi.size() > 0); // task 189202
+ QVERIFY(fi.lastModified().isValid());
+}
+
+void tst_QFileInfo::compare_data()
+{
+ QTest::addColumn<QString>("file1");
+ QTest::addColumn<QString>("file2");
+ QTest::addColumn<bool>("same");
+
+#if defined(Q_OS_MAC)
+ // Since 10.6 we use realpath() in qfsfileengine, and it properly handles
+ // file system case sensitivity. However here in the autotest we don't
+ // check if the file system is case sensitive, so to make it pass in the
+ // default OS X installation we assume we are running on a case insensitive
+ // file system if on 10.6 and on a case sensitive file system if on 10.5
+ bool caseSensitiveOnMac = true;
+ if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_6)
+ caseSensitiveOnMac = false;
+#endif
+
+ QTest::newRow("data0")
+ << QString::fromLatin1(SRCDIR "tst_qfileinfo.cpp")
+ << QString::fromLatin1(SRCDIR "tst_qfileinfo.cpp")
+ << true;
+ QTest::newRow("data1")
+ << QString::fromLatin1(SRCDIR "tst_qfileinfo.cpp")
+ << QString::fromLatin1("/tst_qfileinfo.cpp")
+ << false;
+ QTest::newRow("data2")
+ << QString::fromLatin1("tst_qfileinfo.cpp")
+ << QDir::currentPath() + QString::fromLatin1("/tst_qfileinfo.cpp")
+ << true;
+ QTest::newRow("casesense1")
+ << QString::fromLatin1(SRCDIR "tst_qfileInfo.cpp")
+ << QString::fromLatin1(SRCDIR "tst_qfileinfo.cpp")
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ << true;
+#elif defined(Q_OS_MAC)
+ << !caseSensitiveOnMac;
+#else
+ << false;
+#endif
+}
+
+void tst_QFileInfo::compare()
+{
+ QFETCH(QString, file1);
+ QFETCH(QString, file2);
+ QFETCH(bool, same);
+ QFileInfo fi1(file1), fi2(file2);
+ QCOMPARE(fi1 == fi2, same);
+}
+
+void tst_QFileInfo::consistent_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("slashes") << QString::fromLatin1("\\a\\a\\a\\a") << QString::fromLatin1("/a/a/a/a");
+#endif
+ QTest::newRow("ending slash") << QString::fromLatin1("/a/somedir/") << QString::fromLatin1("/a/somedir/");
+ QTest::newRow("no ending slash") << QString::fromLatin1("/a/somedir") << QString::fromLatin1("/a/somedir");
+}
+
+void tst_QFileInfo::consistent()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileInfo fi(file);
+ QCOMPARE(fi.filePath(), expected);
+ QCOMPARE(fi.dir().path() + "/" + fi.fileName(), expected);
+}
+
+
+void tst_QFileInfo::fileTimes_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::newRow("simple") << QString::fromLatin1("simplefile.txt");
+ QTest::newRow( "longfile" ) << QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName.txt");
+ QTest::newRow( "longfile absolutepath" ) << QFileInfo(QString::fromLatin1("longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName"
+ "longFileNamelongFileNamelongFileNamelongFileName.txt")).absoluteFilePath();
+}
+
+void tst_QFileInfo::fileTimes()
+{
+#if defined(Q_OS_WINCE)
+ int sleepTime = 3000;
+#else
+ int sleepTime = 2000;
+#endif
+ QFETCH(QString, fileName);
+ if (QFile::exists(fileName)) {
+ QVERIFY(QFile::remove(fileName));
+ }
+ QTest::qSleep(sleepTime);
+ {
+ QFile file(fileName);
+#if defined(Q_OS_WINCE)
+ QEXPECT_FAIL("longfile", "No long filenames on WinCE", Abort);
+ QEXPECT_FAIL("longfile absolutepath", "No long filenames on WinCE", Abort);
+#elif defined(Q_OS_SYMBIAN)
+ QEXPECT_FAIL("longfile", "Maximum total filepath cannot exceed 256 characters in Symbian", Abort);
+ QEXPECT_FAIL("longfile absolutepath", "Maximum total filepath cannot exceed 256 characters in Symbian", Abort);
+#endif
+ QVERIFY(file.open(QFile::WriteOnly | QFile::Text));
+#ifdef Q_OS_UNIX
+ if (qIsLikelyToBeNfs(file.handle()))
+ QSKIP("This Test doesn't work on NFS", SkipAll);
+#endif
+ QTextStream ts(&file);
+ ts << fileName << endl;
+ }
+ QTest::qSleep(sleepTime);
+ QDateTime beforeWrite = QDateTime::currentDateTime();
+ QTest::qSleep(sleepTime);
+ {
+ QFileInfo fileInfo(fileName);
+ QVERIFY(fileInfo.created() < beforeWrite);
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::ReadWrite | QFile::Text));
+ QTextStream ts(&file);
+ ts << fileName << endl;
+ }
+ QTest::qSleep(sleepTime);
+ QDateTime beforeRead = QDateTime::currentDateTime();
+ QTest::qSleep(sleepTime);
+ {
+ QFileInfo fileInfo(fileName);
+// On unix created() returns the same as lastModified().
+#if !defined(Q_OS_UNIX) && !defined(Q_OS_WINCE)
+ QVERIFY(fileInfo.created() < beforeWrite);
+#endif
+ QVERIFY(fileInfo.lastModified() > beforeWrite);
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::ReadOnly | QFile::Text));
+ QTextStream ts(&file);
+ QString line = ts.readLine();
+ QCOMPARE(line, fileName);
+ }
+
+ QFileInfo fileInfo(fileName);
+#if !defined(Q_OS_UNIX) && !defined(Q_OS_WINCE)
+ QVERIFY(fileInfo.created() < beforeWrite);
+#endif
+ //In Vista the last-access timestamp is not updated when the file is accessed/touched (by default).
+ //To enable this the HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisableLastAccessUpdate
+ //is set to 0, in the test machine.
+#ifdef Q_OS_WINCE
+ QEXPECT_FAIL("simple", "WinCE only stores date of access data, not the time", Continue);
+#endif
+#ifdef Q_OS_SYMBIAN
+ QEXPECT_FAIL("simple", "Symbian implementation of stat doesn't return read time right", Abort);
+#endif
+ QVERIFY(fileInfo.lastRead() > beforeRead);
+ QVERIFY(fileInfo.lastModified() > beforeWrite);
+ QVERIFY(fileInfo.lastModified() < beforeRead);
+}
+
+void tst_QFileInfo::fileTimes_oldFile()
+{
+ // This is not supported on WinCE
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ // All files are opened in share mode (both read and write).
+ DWORD shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
+
+ // All files on Windows can be read; there's no such thing as an
+ // unreadable file. Add GENERIC_WRITE if WriteOnly is passed.
+ int accessRights = GENERIC_READ | GENERIC_WRITE;
+
+ SECURITY_ATTRIBUTES securityAtts = { sizeof(SECURITY_ATTRIBUTES), NULL, TRUE };
+
+ // Regular file mode. In Unbuffered mode, pass the no-buffering flag.
+ DWORD flagsAndAtts = FILE_ATTRIBUTE_NORMAL;
+
+ // WriteOnly can create files, ReadOnly cannot.
+ DWORD creationDisp = OPEN_ALWAYS;
+
+ // Create the file handle.
+ HANDLE fileHandle = CreateFile(L"oldfile.txt",
+ accessRights,
+ shareMode,
+ &securityAtts,
+ creationDisp,
+ flagsAndAtts,
+ NULL);
+
+ // Set file times back to 1601.
+ SYSTEMTIME stime;
+ stime.wYear = 1601;
+ stime.wMonth = 1;
+ stime.wDayOfWeek = 1;
+ stime.wDay = 1;
+ stime.wHour = 1;
+ stime.wMinute = 0;
+ stime.wSecond = 0;
+ stime.wMilliseconds = 0;
+
+ FILETIME ctime;
+ QVERIFY(SystemTimeToFileTime(&stime, &ctime));
+ FILETIME atime = ctime;
+ FILETIME mtime = atime;
+ QVERIFY(fileHandle);
+ QVERIFY(SetFileTime(fileHandle, &ctime, &atime, &mtime) != 0);
+
+ CloseHandle(fileHandle);
+
+ QFileInfo info("oldfile.txt");
+ QCOMPARE(info.lastModified(), QDateTime(QDate(1601, 1, 1), QTime(1, 0), Qt::UTC).toLocalTime());
+#endif
+}
+
+void tst_QFileInfo::isSymLink_data()
+{
+#ifndef NO_SYMLINKS
+ QFile::remove("link.lnk");
+ QFile::remove("brokenlink.lnk");
+ QFile::remove("dummyfile");
+
+ QFile file1(SRCDIR "tst_qfileinfo.cpp");
+ QVERIFY(file1.link("link.lnk"));
+
+ QFile file2("dummyfile");
+ file2.open(QIODevice::WriteOnly);
+ QVERIFY(file2.link("brokenlink.lnk"));
+ file2.remove();
+
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isSymLink");
+ QTest::addColumn<QString>("linkTarget");
+
+ QTest::newRow("existent file") << SRCDIR "tst_qfileinfo.cpp" << false << "";
+ QTest::newRow("link") << "link.lnk" << true << QFileInfo(SRCDIR "tst_qfileinfo.cpp").absoluteFilePath();
+ QTest::newRow("broken link") << "brokenlink.lnk" << true << QFileInfo("dummyfile").absoluteFilePath();
+#endif
+}
+
+void tst_QFileInfo::isSymLink()
+{
+#ifndef NO_SYMLINKS
+ QFETCH(QString, path);
+ QFETCH(bool, isSymLink);
+ QFETCH(QString, linkTarget);
+
+ QFileInfo fi(path);
+ QCOMPARE(fi.isSymLink(), isSymLink);
+ QCOMPARE(fi.symLinkTarget(), linkTarget);
+#else
+ QSKIP("no symbolic link support on this platform", SkipAll);
+#endif
+}
+
+void tst_QFileInfo::isHidden_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isHidden");
+ foreach (const QFileInfo& info, QDir::drives()) {
+ QTest::newRow(qPrintable("drive." + info.path())) << info.path() << false;
+ }
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ QVERIFY(QDir("./hidden-directory").exists() || QDir().mkdir("./hidden-directory"));
+ QVERIFY(SetFileAttributesW(reinterpret_cast<LPCWSTR>(QString("./hidden-directory").utf16()),FILE_ATTRIBUTE_HIDDEN));
+ QTest::newRow("C:/path/to/hidden-directory") << QDir::currentPath() + QString::fromLatin1("/hidden-directory") << true;
+ QTest::newRow("C:/path/to/hidden-directory/.") << QDir::currentPath() + QString::fromLatin1("/hidden-directory/.") << true;
+#endif
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ QVERIFY(QDir("./.hidden-directory").exists() || QDir().mkdir("./.hidden-directory"));
+ QTest::newRow("/path/to/.hidden-directory") << QDir::currentPath() + QString("/.hidden-directory") << true;
+ QTest::newRow("/path/to/.hidden-directory/.") << QDir::currentPath() + QString("/.hidden-directory/.") << true;
+ QTest::newRow("/path/to/.hidden-directory/..") << QDir::currentPath() + QString("/.hidden-directory/..") << true;
+#endif
+
+#if defined(Q_OS_MAC)
+ // /bin has the hidden attribute on Mac OS X
+ QTest::newRow("/bin/") << QString::fromLatin1("/bin/") << true;
+#elif !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+ QTest::newRow("/bin/") << QString::fromLatin1("/bin/") << false;
+#endif
+
+#ifdef Q_OS_MAC
+ QTest::newRow("mac_etc") << QString::fromLatin1("/etc") << true;
+ QTest::newRow("mac_private_etc") << QString::fromLatin1("/private/etc") << false;
+ QTest::newRow("mac_Applications") << QString::fromLatin1("/Applications") << false;
+#endif
+
+#ifdef Q_OS_SYMBIAN
+ // No guaranteed hidden file knows to exist in Symbian filesystem, so make one.
+ QString hiddenFileName("hidden.txt");
+ QString notHiddenFileName("nothidden.txt");
+ QTest::newRow("hidden file") << hiddenFileName << true;
+ QTest::newRow("non-hidden file") << notHiddenFileName << false;
+
+ {
+ QFile file(hiddenFileName);
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ QTextStream t(&file);
+ t << "foobar";
+
+ QFile file2(notHiddenFileName);
+ QVERIFY(file2.open(QIODevice::WriteOnly));
+ QTextStream t2(&file2);
+ t2 << "foobar";
+ }
+
+ RFs rfs;
+ TInt err = rfs.Connect();
+ QCOMPARE(err, KErrNone);
+ HBufC* symFile = qt_QString2HBufC(hiddenFileName);
+ err = rfs.SetAtt(*symFile, KEntryAttHidden, 0);
+ rfs.Close();
+ delete symFile;
+ QCOMPARE(err, KErrNone);
+#endif
+}
+
+void tst_QFileInfo::isHidden()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, isHidden);
+ QFileInfo fi(path);
+
+ QCOMPARE(fi.isHidden(), isHidden);
+}
+
+#if defined(Q_OS_MAC)
+void tst_QFileInfo::isHiddenFromFinder()
+{
+ const char *filename = "test_foobar.txt";
+
+ QFile testFile(filename);
+ testFile.open(QIODevice::WriteOnly | QIODevice::Append);
+ testFile.write(QByteArray("world"));
+ testFile.close();
+
+ struct stat buf;
+ stat(filename, &buf);
+ chflags(filename, buf.st_flags | UF_HIDDEN);
+
+ QFileInfo fi(filename);
+ QCOMPARE(fi.isHidden(), true);
+
+ testFile.remove();
+}
+#endif
+
+void tst_QFileInfo::isBundle_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isBundle");
+ QTest::newRow("root") << QString::fromLatin1("/") << false;
+#ifdef Q_OS_MAC
+ QTest::newRow("mac_Applications") << QString::fromLatin1("/Applications") << false;
+ QTest::newRow("mac_Applications") << QString::fromLatin1("/Applications/Safari.app") << true;
+#endif
+}
+
+void tst_QFileInfo::isBundle()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, isBundle);
+ QFileInfo fi(path);
+ QCOMPARE(fi.isBundle(), isBundle);
+}
+
+void tst_QFileInfo::isLocalFs_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isLocalFs");
+
+ QTest::newRow("local root") << QString::fromLatin1("/") << true;
+ QTest::newRow("local non-existent file") << QString::fromLatin1("/abrakadabra.boo") << true;
+
+ QTest::newRow("qresource root") << QString::fromLatin1(":/") << false;
+}
+
+void tst_QFileInfo::isLocalFs()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, isLocalFs);
+
+ QFileInfo info(path);
+ QFileInfoPrivate *privateInfo = getPrivate(info);
+ QCOMPARE((privateInfo->fileEngine == 0), isLocalFs);
+ if (privateInfo->fileEngine)
+ QCOMPARE(bool(privateInfo->fileEngine->fileFlags(QAbstractFileEngine::LocalDiskFlag)
+ & QAbstractFileEngine::LocalDiskFlag), isLocalFs);
+}
+
+void tst_QFileInfo::refresh()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_WIN)
+ int sleepTime = 3000;
+#else
+ int sleepTime = 2000;
+#endif
+
+ QFile::remove("file1");
+ QFile file("file1");
+ QVERIFY(file.open(QFile::WriteOnly));
+ QCOMPARE(file.write("JAJAJAA"), qint64(7));
+ file.flush();
+
+ QFileInfo info(file);
+ QDateTime lastModified = info.lastModified();
+ QCOMPARE(info.size(), qint64(7));
+
+ QTest::qSleep(sleepTime);
+
+ QCOMPARE(file.write("JOJOJO"), qint64(6));
+ file.flush();
+ QVERIFY(info.lastModified() == lastModified);
+
+ QCOMPARE(info.size(), qint64(7));
+#if defined(Q_OS_WIN) || defined(Q_OS_WINCE)
+ if (QSysInfo::windowsVersion() & QSysInfo::WV_VISTA ||
+ QSysInfo::windowsVersion() & QSysInfo::WV_CE_based)
+ file.close();
+#endif
+#if defined(Q_OS_WINCE)
+ // On Windows CE we need to close the file.
+ // Otherwise the content will be cached and not
+ // flushed to the storage, although we flushed it
+ // manually!!! CE has interim cache, we cannot influence.
+ QTest::qWait(5000);
+#endif
+ info.refresh();
+ QCOMPARE(info.size(), qint64(13));
+ QVERIFY(info.lastModified() > lastModified);
+
+ QFileInfo info2 = info;
+ QCOMPARE(info2.size(), info.size());
+
+ info2.refresh();
+ QCOMPARE(info2.size(), info.size());
+}
+
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+void tst_QFileInfo::ntfsJunctionPointsAndSymlinks_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isSymLink");
+ QTest::addColumn<QString>("linkTarget");
+ QTest::addColumn<QString>("canonicalFilePath");
+
+ QDir pwd;
+ pwd.mkdir("target");
+
+ QLibrary kernel32("kernel32");
+ typedef BOOLEAN (WINAPI *PtrCreateSymbolicLink)(LPCWSTR, LPCWSTR, DWORD);
+ PtrCreateSymbolicLink createSymbolicLinkW = 0;
+ createSymbolicLinkW = (PtrCreateSymbolicLink) kernel32.resolve("CreateSymbolicLinkW");
+ if (!createSymbolicLinkW) {
+ //we need at least one data set for the test not to fail when skipping _data function
+ QDir target("target");
+ QTest::newRow("dummy") << target.path() << false << "" << target.canonicalPath();
+ QSKIP("symbolic links not supported by operating system",SkipSingle);
+ }
+ {
+ //Directory symlinks
+ QDir target("target");
+ QVERIFY(target.exists());
+
+ QString absTarget = QDir::toNativeSeparators(target.absolutePath());
+ QString absSymlink = QDir::toNativeSeparators(pwd.absolutePath()).append("\\abs_symlink");
+ QString relTarget = "target";
+ QString relSymlink = "rel_symlink";
+ QString fileInTarget(absTarget);
+ fileInTarget.append("\\file");
+ QString fileInSymlink(absSymlink);
+ fileInSymlink.append("\\file");
+ QFile file(fileInTarget);
+ file.open(QIODevice::ReadWrite);
+ file.close();
+
+ DWORD err = ERROR_SUCCESS ;
+ if (!pwd.exists("abs_symlink"))
+ if (!createSymbolicLinkW((wchar_t*)absSymlink.utf16(),(wchar_t*)absTarget.utf16(),0x1))
+ err = GetLastError();
+ if (err == ERROR_SUCCESS && !pwd.exists(relSymlink))
+ if (!createSymbolicLinkW((wchar_t*)relSymlink.utf16(),(wchar_t*)relTarget.utf16(),0x1))
+ err = GetLastError();
+ if (err != ERROR_SUCCESS) {
+ wchar_t errstr[0x100];
+ DWORD count = FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM,
+ 0, err, 0, errstr, 0x100, 0);
+ QString error(QString::fromWCharArray(errstr, count));
+ qWarning() << error;
+ //we need at least one data set for the test not to assert fail when skipping _data function
+ QDir target("target");
+ QTest::newRow("dummy") << target.path() << false << "" << target.canonicalPath();
+ QSKIP("link not supported by FS or insufficient privilege", SkipSingle);
+ }
+ QVERIFY(file.exists());
+
+ QTest::newRow("absolute dir symlink") << absSymlink << true << QDir::fromNativeSeparators(absTarget) << target.canonicalPath();
+ QTest::newRow("relative dir symlink") << relSymlink << true << QDir::fromNativeSeparators(relTarget) << target.canonicalPath();
+ QTest::newRow("file in symlink dir") << fileInSymlink << false << "" << target.canonicalPath().append("/file");
+ }
+ {
+ //File symlinks
+ QFileInfo target(SRCDIR "tst_qfileinfo.cpp");
+ QString absTarget = QDir::toNativeSeparators(target.absoluteFilePath());
+ QString absSymlink = QDir::toNativeSeparators(pwd.absolutePath()).append("\\abs_symlink.cpp");
+ QString relTarget = QDir::toNativeSeparators(pwd.relativeFilePath(target.absoluteFilePath()));
+ QString relSymlink = "rel_symlink.cpp";
+ QVERIFY(pwd.exists("abs_symlink.cpp") || createSymbolicLinkW((wchar_t*)absSymlink.utf16(),(wchar_t*)absTarget.utf16(),0x0));
+ QVERIFY(pwd.exists(relSymlink) || createSymbolicLinkW((wchar_t*)relSymlink.utf16(),(wchar_t*)relTarget.utf16(),0x0));
+
+ QTest::newRow("absolute file symlink") << absSymlink << true << QDir::fromNativeSeparators(absTarget) << target.canonicalFilePath();
+ QTest::newRow("relative file symlink") << relSymlink << true << QDir::fromNativeSeparators(relTarget) << target.canonicalFilePath();
+ }
+
+ //Junctions
+ QString target = "target";
+ QString junction = "junction_pwd";
+ FileSystem::createNtfsJunction(target, junction);
+ QFileInfo targetInfo(target);
+ QTest::newRow("junction_pwd") << junction << true << targetInfo.absoluteFilePath() << targetInfo.canonicalFilePath();
+
+ QFileInfo fileInJunction(targetInfo.absoluteFilePath().append("/file"));
+ QFile file(fileInJunction.absoluteFilePath());
+ file.open(QIODevice::ReadWrite);
+ file.close();
+ QVERIFY(file.exists());
+ QTest::newRow("file in junction") << fileInJunction.absoluteFilePath() << false << "" << fileInJunction.canonicalFilePath();
+
+ target = QDir::rootPath();
+ junction = "junction_root";
+ FileSystem::createNtfsJunction(target, junction);
+ targetInfo.setFile(target);
+ QTest::newRow("junction_root") << junction << true << targetInfo.absoluteFilePath() << targetInfo.canonicalFilePath();
+
+ //Mountpoint
+ typedef BOOLEAN (WINAPI *PtrGetVolumeNameForVolumeMountPointW)(LPCWSTR, LPWSTR, DWORD);
+ PtrGetVolumeNameForVolumeMountPointW getVolumeNameForVolumeMountPointW = 0;
+ getVolumeNameForVolumeMountPointW = (PtrGetVolumeNameForVolumeMountPointW) kernel32.resolve("GetVolumeNameForVolumeMountPointW");
+ if(getVolumeNameForVolumeMountPointW)
+ {
+ wchar_t buffer[MAX_PATH];
+ QString rootPath = QDir::toNativeSeparators(QDir::rootPath());
+ QVERIFY(getVolumeNameForVolumeMountPointW((wchar_t*)rootPath.utf16(), buffer, MAX_PATH));
+ QString rootVolume = QString::fromWCharArray(buffer);
+ junction = "mountpoint";
+ rootVolume.replace("\\\\?\\","\\??\\");
+ FileSystem::createNtfsJunction(rootVolume, junction);
+ QTest::newRow("mountpoint") << junction << true << QDir::fromNativeSeparators(rootPath) << QDir::rootPath();
+ }
+}
+
+void tst_QFileInfo::ntfsJunctionPointsAndSymlinks()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, isSymLink);
+ QFETCH(QString, linkTarget);
+ QFETCH(QString, canonicalFilePath);
+
+ QFileInfo fi(path);
+ QCOMPARE(fi.isSymLink(), isSymLink);
+ QCOMPARE(fi.symLinkTarget(), linkTarget);
+ QCOMPARE(fi.canonicalFilePath(), canonicalFilePath);
+}
+
+void tst_QFileInfo::brokenShortcut()
+{
+ QString linkName("borkenlink.lnk");
+ QFile::remove(linkName);
+ QFile file(linkName);
+ file.open(QFile::WriteOnly);
+ file.write("b0rk");
+ file.close();
+
+ QFileInfo info(linkName);
+ QVERIFY(info.isSymLink());
+ QVERIFY(!info.exists());
+ QFile::remove(linkName);
+}
+#endif
+
+void tst_QFileInfo::isWritable()
+{
+ QFile tempfile("tempfile.txt");
+ tempfile.open(QIODevice::WriteOnly);
+ tempfile.write("This file is generated by the QFileInfo autotest.");
+ tempfile.close();
+
+ QVERIFY(QFileInfo("tempfile.txt").isWritable());
+ tempfile.remove();
+
+#ifdef Q_OS_WIN
+#ifdef Q_OS_WINCE
+ QFileInfo fi("\\Windows\\wince.nls");
+#else
+ QFileInfo fi("c:\\pagefile.sys");
+#endif
+ QVERIFY(fi.exists());
+ QVERIFY(!fi.isWritable());
+#endif
+#if defined (Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)
+ if (::getuid() == 0)
+ QVERIFY(QFileInfo("/etc/passwd").isWritable());
+ else
+ QVERIFY(!QFileInfo("/etc/passwd").isWritable());
+#endif
+}
+
+void tst_QFileInfo::isExecutable()
+{
+#ifdef Q_OS_SYMBIAN
+ QString appPath = "c:/sys/bin/tst_qfileinfo.exe";
+#else
+ QString appPath = QCoreApplication::applicationDirPath();
+ appPath += "/tst_qfileinfo";
+# if defined(Q_OS_WIN)
+ appPath += ".exe";
+# endif
+#endif
+ QFileInfo fi(appPath);
+ QCOMPARE(fi.isExecutable(), true);
+
+ QCOMPARE(QFileInfo("qfileinfo.pro").isExecutable(), false);
+}
+
+
+void tst_QFileInfo::testDecomposedUnicodeNames_data()
+{
+ QTest::addColumn<QString>("filePath");
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<bool>("exists");
+ QString currPath = QDir::currentPath();
+ QTest::newRow("latin-only") << currPath + "/4.pdf" << "4.pdf" << true;
+ QTest::newRow("one-decomposed uni") << currPath + QString::fromUtf8("/4 ä.pdf") << QString::fromUtf8("4 ä.pdf") << true;
+ QTest::newRow("many-decomposed uni") << currPath + QString::fromUtf8("/4 äääcopy.pdf") << QString::fromUtf8("4 äääcopy.pdf") << true;
+ QTest::newRow("no decomposed") << currPath + QString::fromUtf8("/4 øøøcopy.pdf") << QString::fromUtf8("4 øøøcopy.pdf") << true;
+}
+
+static void createFileNative(const QString &filePath)
+{
+#ifdef Q_OS_UNIX
+ int fd = open(filePath.normalized(QString::NormalizationForm_D).toUtf8().constData(), O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
+ if (fd < 0) {
+ QFAIL("couldn't create file");
+ } else {
+ close(fd);
+ }
+#else
+ Q_UNUSED(filePath);
+#endif
+}
+
+static void removeFileNative(const QString &filePath)
+{
+#ifdef Q_OS_UNIX
+ unlink(filePath.normalized(QString::NormalizationForm_D).toUtf8().constData());
+#else
+ Q_UNUSED(filePath);
+#endif
+}
+
+void tst_QFileInfo::testDecomposedUnicodeNames()
+{
+#ifndef Q_OS_MAC
+ QSKIP("This is a OS X only test (unless you know more about filesystems, then maybe you should try it ;)", SkipAll);
+#endif
+ QFETCH(QString, filePath);
+ createFileNative(filePath);
+
+ QFileInfo file(filePath);
+ QTEST(file.fileName(), "fileName");
+ QTEST(file.exists(), "exists");
+ removeFileNative(filePath);
+}
+
+void tst_QFileInfo::equalOperator() const
+{
+ /* Compare two default constructed values. Yes, to me it seems it should be the opposite too, but
+ * this is how the code was written. */
+ QVERIFY(!(QFileInfo() == QFileInfo()));
+}
+
+
+void tst_QFileInfo::equalOperatorWithDifferentSlashes() const
+{
+ const QFileInfo fi1("/usr");
+ const QFileInfo fi2("/usr/");
+
+ QCOMPARE(fi1, fi2);
+}
+
+void tst_QFileInfo::notEqualOperator() const
+{
+ /* Compare two default constructed values. Yes, to me it seems it should be the opposite too, but
+ * this is how the code was written. */
+ QVERIFY(QFileInfo() != QFileInfo());
+}
+
+void tst_QFileInfo::detachingOperations()
+{
+ QFileInfo info1;
+ QVERIFY(info1.caching());
+ info1.setCaching(false);
+
+ {
+ QFileInfo info2 = info1;
+
+ QVERIFY(!info1.caching());
+ QVERIFY(!info2.caching());
+
+ info2.setCaching(true);
+ QVERIFY(info2.caching());
+
+ info1.setFile("foo");
+ QVERIFY(!info1.caching());
+ }
+
+ {
+ QFile file("foo");
+ info1.setFile(file);
+ QVERIFY(!info1.caching());
+ }
+
+ info1.setFile(QDir(), "foo");
+ QVERIFY(!info1.caching());
+
+ {
+ QFileInfo info3;
+ QVERIFY(info3.caching());
+
+ info3 = info1;
+ QVERIFY(!info3.caching());
+ }
+
+ info1.refresh();
+ QVERIFY(!info1.caching());
+
+ QVERIFY(info1.makeAbsolute());
+ QVERIFY(!info1.caching());
+
+ info1.detach();
+ QVERIFY(!info1.caching());
+}
+
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+#if defined (Q_OS_WIN)
+BOOL IsUserAdmin()
+{
+ BOOL b;
+ SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
+ PSID AdministratorsGroup;
+ b = AllocateAndInitializeSid(
+ &NtAuthority,
+ 2,
+ SECURITY_BUILTIN_DOMAIN_RID,
+ DOMAIN_ALIAS_RID_ADMINS,
+ 0, 0, 0, 0, 0, 0,
+ &AdministratorsGroup);
+ if (b) {
+ if (!CheckTokenMembership( NULL, AdministratorsGroup, &b))
+ b = FALSE;
+ FreeSid(AdministratorsGroup);
+ }
+
+ return(b);
+}
+#endif
+
+void tst_QFileInfo::owner()
+{
+ QString userName;
+#if defined(Q_OS_UNIX)
+ {
+ passwd *user = getpwuid(geteuid());
+ QVERIFY(user);
+ char *usernameBuf = user->pw_name;
+ userName = QString::fromLocal8Bit(usernameBuf);
+ }
+#endif
+#if defined(Q_OS_WIN)
+ wchar_t usernameBuf[1024];
+ DWORD bufSize = 1024;
+ if (GetUserNameW(usernameBuf, &bufSize)) {
+ userName = QString::fromWCharArray(usernameBuf);
+ if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && IsUserAdmin()) {
+ // Special case : If the user is a member of Administrators group, all files
+ // created by the current user are owned by the Administrators group.
+ LPLOCALGROUP_USERS_INFO_0 pBuf = NULL;
+ DWORD dwLevel = 0;
+ DWORD dwFlags = LG_INCLUDE_INDIRECT ;
+ DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;
+ DWORD dwEntriesRead = 0;
+ DWORD dwTotalEntries = 0;
+ NET_API_STATUS nStatus;
+ nStatus = NetUserGetLocalGroups(0, usernameBuf, dwLevel, dwFlags, (LPBYTE *) &pBuf,
+ dwPrefMaxLen, &dwEntriesRead, &dwTotalEntries);
+ // Check if the current user is a member of Administrators group
+ if (nStatus == NERR_Success && pBuf){
+ for (int i = 0; i < dwEntriesRead; i++) {
+ QString groupName = QString::fromWCharArray(pBuf[i].lgrui0_name);
+ if (!groupName.compare(QLatin1String("Administrators")))
+ userName = groupName;
+ }
+ }
+ if (pBuf != NULL)
+ NetApiBufferFree(pBuf);
+ }
+ }
+ extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
+ qt_ntfs_permission_lookup = 1;
+#endif
+ if (userName.isEmpty())
+ QSKIP("Can't retrieve the user name", SkipAll);
+ QString fileName("ownertest.txt");
+ QVERIFY(!QFile::exists(fileName) || QFile::remove(fileName));
+ {
+ QFile testFile(fileName);
+ QVERIFY(testFile.open(QIODevice::WriteOnly | QIODevice::Text));
+ QByteArray testData("testfile");
+ QVERIFY(testFile.write(testData) != -1);
+ }
+ QFileInfo fi(fileName);
+ QVERIFY(fi.exists());
+ QCOMPARE(fi.owner(), userName);
+
+ QFile::remove(fileName);
+#if defined(Q_OS_WIN)
+ qt_ntfs_permission_lookup = 0;
+#endif
+}
+#endif
+
+void tst_QFileInfo::group()
+{
+ QString expected;
+#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ struct group *gr;
+ gid_t gid = getegid();
+ gr = getgrgid(gid);
+ expected = QString::fromLocal8Bit(gr->gr_name);
+#endif
+
+ QString fileName("ownertest.txt");
+ if (QFile::exists(fileName))
+ QFile::remove(fileName);
+ QFile testFile(fileName);
+ QVERIFY(testFile.open(QIODevice::WriteOnly | QIODevice::Text));
+ QByteArray testData("testfile");
+ QVERIFY(testFile.write(testData) != -1);
+ testFile.close();
+ QFileInfo fi(fileName);
+ QVERIFY(fi.exists());
+
+ QCOMPARE(fi.group(), expected);
+}
+
+void tst_QFileInfo::invalidState()
+{
+ // Shouldn't crash;
+
+ {
+ QFileInfo info;
+ QCOMPARE(info.size(), qint64(0));
+ QVERIFY(!info.exists());
+
+ info.setCaching(false);
+
+ info.created();
+ info.lastRead();
+ info.lastModified();
+ }
+
+ {
+ QFileInfo info("");
+ QCOMPARE(info.size(), qint64(0));
+ QVERIFY(!info.exists());
+
+ info.setCaching(false);
+
+ info.created();
+ info.lastRead();
+ info.lastModified();
+ }
+
+ {
+ QFileInfo info("file-doesn't-really-exist.txt");
+ QCOMPARE(info.size(), qint64(0));
+ QVERIFY(!info.exists());
+
+ info.setCaching(false);
+
+ info.created();
+ info.lastRead();
+ info.lastModified();
+ }
+
+ QVERIFY(true);
+}
+
+QTEST_MAIN(tst_QFileInfo)
+#include "tst_qfileinfo.moc"
diff --git a/tests/auto/corelib/io/qfilesystementry/qfilesystementry.pro b/tests/auto/corelib/io/qfilesystementry/qfilesystementry.pro
new file mode 100644
index 0000000000..992c90cfcc
--- /dev/null
+++ b/tests/auto/corelib/io/qfilesystementry/qfilesystementry.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+
+SOURCES += tst_qfilesystementry.cpp \
+ $${QT.core.sources}/io/qfilesystementry.cpp
+HEADERS += $${QT.core.sources}/io/qfilesystementry_p.h
+QT = core core-private
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/io/qfilesystementry/tst_qfilesystementry.cpp b/tests/auto/corelib/io/qfilesystementry/tst_qfilesystementry.cpp
new file mode 100644
index 0000000000..2daabee48f
--- /dev/null
+++ b/tests/auto/corelib/io/qfilesystementry/tst_qfilesystementry.cpp
@@ -0,0 +1,419 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtTest/QtTest>
+
+#include <QtCore/private/qfilesystementry_p.h>
+
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+# define WIN_STUFF
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QFileSystemEntry : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void getSetCheck_data();
+ void getSetCheck();
+ void suffix_data();
+ void suffix();
+ void completeSuffix_data();
+ void completeSuffix();
+ void baseName_data();
+ void baseName();
+ void completeBaseName_data();
+ void completeBaseName();
+#if defined(WIN_STUFF)
+ void absoluteOrRelative_data();
+ void absoluteOrRelative();
+#endif
+ void isClean_data();
+ void isClean();
+};
+
+#if defined(WIN_STUFF)
+void tst_QFileSystemEntry::getSetCheck_data()
+{
+ QTest::addColumn<QString>("nativeFilePath");
+ QTest::addColumn<QString>("internalnativeFilePath");
+ QTest::addColumn<QString>("filepath");
+ QTest::addColumn<QString>("filename");
+ QTest::addColumn<QString>("baseName");
+ QTest::addColumn<QString>("completeBasename");
+ QTest::addColumn<QString>("suffix");
+ QTest::addColumn<QString>("completeSuffix");
+ QTest::addColumn<bool>("absolute");
+ QTest::addColumn<bool>("relative");
+
+ QString absPrefix = QLatin1String("\\\\?\\");
+ QString relPrefix = absPrefix
+ + QDir::toNativeSeparators(QDir::currentPath())
+ + QLatin1String("\\");
+
+ QTest::newRow("simple")
+ << QString("A:\\home\\qt\\in\\a\\dir.tar.gz")
+ << absPrefix + QString("A:\\home\\qt\\in\\a\\dir.tar.gz")
+ << "A:/home/qt/in/a/dir.tar.gz"
+ << "dir.tar.gz" << "dir" << "dir.tar" << "gz" << "tar.gz" << true << false;
+
+ QTest::newRow("relative")
+ << QString("in\\a\\dir.tar.gz")
+ << relPrefix + QString("in\\a\\dir.tar.gz")
+ << "in/a/dir.tar.gz"
+ << "dir.tar.gz" << "dir" << "dir.tar" << "gz" << "tar.gz" << false <<true;
+
+ QTest::newRow("noSuffix")
+ << QString("myDir\\myfile")
+ << relPrefix + QString("myDir\\myfile")
+ << "myDir/myfile" << "myfile" << "myfile" << "myfile" << "" << "" << false <<true;
+
+ QTest::newRow("noLongSuffix")
+ << QString("myDir\\myfile.txt")
+ << relPrefix + QString("myDir\\myfile.txt")
+ << "myDir/myfile.txt" << "myfile.txt" << "myfile" << "myfile" << "txt" << "txt" << false << true;
+
+ QTest::newRow("endingSlash")
+ << QString("myDir\\myfile.bla\\")
+ << relPrefix + QString("myDir\\myfile.bla\\")
+ << "myDir/myfile.bla/" << "" << "" << "" << "" << "" << false << true;
+
+ QTest::newRow("absolutePath")
+ << QString("A:dir\\without\\leading\\backslash.bat")
+ << absPrefix + QString("A:\\dir\\without\\leading\\backslash.bat")
+ << "A:dir/without/leading/backslash.bat" << "backslash.bat" << "backslash" << "backslash" << "bat" << "bat" << false << false;
+}
+
+void tst_QFileSystemEntry::getSetCheck()
+{
+ QFETCH(QString, nativeFilePath);
+ QFETCH(QString, internalnativeFilePath);
+ QFETCH(QString, filepath);
+ QFETCH(QString, filename);
+ QFETCH(QString, baseName);
+ QFETCH(QString, completeBasename);
+ QFETCH(QString, suffix);
+ QFETCH(QString, completeSuffix);
+ QFETCH(bool, absolute);
+ QFETCH(bool, relative);
+
+ QFileSystemEntry entry1(filepath);
+ QCOMPARE(entry1.filePath(), filepath);
+ QCOMPARE(entry1.nativeFilePath().toLower(), internalnativeFilePath.toLower());
+ QCOMPARE(entry1.fileName(), filename);
+ QCOMPARE(entry1.suffix(), suffix);
+ QCOMPARE(entry1.completeSuffix(), completeSuffix);
+ QCOMPARE(entry1.isAbsolute(), absolute);
+ QCOMPARE(entry1.isRelative(), relative);
+ QCOMPARE(entry1.baseName(), baseName);
+ QCOMPARE(entry1.completeBaseName(), completeBasename);
+
+ QFileSystemEntry entry2(nativeFilePath, QFileSystemEntry::FromNativePath());
+ QCOMPARE(entry2.suffix(), suffix);
+ QCOMPARE(entry2.completeSuffix(), completeSuffix);
+ QCOMPARE(entry2.isAbsolute(), absolute);
+ QCOMPARE(entry2.isRelative(), relative);
+ QCOMPARE(entry2.filePath(), filepath);
+ // Since this entry was created using the native path,
+ // the object shouldnot change nativeFilePath.
+ QCOMPARE(entry2.nativeFilePath(), nativeFilePath);
+ QCOMPARE(entry2.fileName(), filename);
+ QCOMPARE(entry2.baseName(), baseName);
+ QCOMPARE(entry2.completeBaseName(), completeBasename);
+}
+
+#else
+
+void tst_QFileSystemEntry::getSetCheck_data()
+{
+ QTest::addColumn<QByteArray>("nativeFilePath");
+ QTest::addColumn<QString>("filepath");
+ QTest::addColumn<QString>("filename");
+ QTest::addColumn<QString>("basename");
+ QTest::addColumn<QString>("completeBasename");
+ QTest::addColumn<QString>("suffix");
+ QTest::addColumn<QString>("completeSuffix");
+ QTest::addColumn<bool>("absolute");
+
+ QTest::newRow("simple")
+ << QByteArray("/home/qt/in/a/dir.tar.gz")
+ << "/home/qt/in/a/dir.tar.gz"
+ << "dir.tar.gz" << "dir" << "dir.tar" << "gz" << "tar.gz" << true;
+ QTest::newRow("relative")
+ << QByteArray("in/a/dir.tar.gz")
+ << "in/a/dir.tar.gz"
+ << "dir.tar.gz" << "dir" << "dir.tar" << "gz" << "tar.gz" << false;
+
+ QTest::newRow("noSuffix")
+ << QByteArray("myDir/myfile")
+ << "myDir/myfile" << "myfile" << "myfile" << "myfile" << "" << "" << false;
+
+ QTest::newRow("noLongSuffix")
+ << QByteArray("myDir/myfile.txt")
+ << "myDir/myfile.txt" << "myfile.txt" << "myfile" << "myfile" << "txt" << "txt" << false;
+
+ QTest::newRow("endingSlash")
+ << QByteArray("myDir/myfile.bla/")
+ << "myDir/myfile.bla/" << "" << "" << "" << "" << "" << false;
+
+ QTest::newRow("relativePath")
+ << QByteArray("A:dir/without/leading/backslash.bat")
+ << "A:dir/without/leading/backslash.bat" << "backslash.bat" << "backslash" << "backslash" << "bat" << "bat" << false;
+}
+
+void tst_QFileSystemEntry::getSetCheck()
+{
+ QFETCH(QByteArray, nativeFilePath);
+ QFETCH(QString, filepath);
+ QFETCH(QString, filename);
+ QFETCH(QString, basename);
+ QFETCH(QString, completeBasename);
+ QFETCH(QString, suffix);
+ QFETCH(QString, completeSuffix);
+ QFETCH(bool, absolute);
+
+ QFileSystemEntry entry1(filepath);
+ QCOMPARE(entry1.filePath(), filepath);
+ QCOMPARE(entry1.nativeFilePath(), nativeFilePath);
+ QCOMPARE(entry1.fileName(), filename);
+ QCOMPARE(entry1.suffix(), suffix);
+ QCOMPARE(entry1.completeSuffix(), completeSuffix);
+ QCOMPARE(entry1.isAbsolute(), absolute);
+ QCOMPARE(entry1.isRelative(), !absolute);
+ QCOMPARE(entry1.baseName(), basename);
+ QCOMPARE(entry1.completeBaseName(), completeBasename);
+
+ QFileSystemEntry entry2(nativeFilePath, QFileSystemEntry::FromNativePath());
+ QCOMPARE(entry2.suffix(), suffix);
+ QCOMPARE(entry2.completeSuffix(), completeSuffix);
+ QCOMPARE(entry2.isAbsolute(), absolute);
+ QCOMPARE(entry2.isRelative(), !absolute);
+ QCOMPARE(entry2.filePath(), filepath);
+ QCOMPARE(entry2.nativeFilePath(), nativeFilePath);
+ QCOMPARE(entry2.fileName(), filename);
+ QCOMPARE(entry2.baseName(), basename);
+ QCOMPARE(entry2.completeBaseName(), completeBasename);
+}
+#endif
+
+void tst_QFileSystemEntry::suffix_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("noextension0") << "file" << "";
+ QTest::newRow("noextension1") << "/path/to/file" << "";
+ QTest::newRow("data0") << "file.tar" << "tar";
+ QTest::newRow("data1") << "file.tar.gz" << "gz";
+ QTest::newRow("data2") << "/path/file/file.tar.gz" << "gz";
+ QTest::newRow("data3") << "/path/file.tar" << "tar";
+ QTest::newRow("hidden1") << ".ext1" << "ext1";
+ QTest::newRow("hidden1") << ".ext" << "ext";
+ QTest::newRow("hidden1") << ".ex" << "ex";
+ QTest::newRow("hidden1") << ".e" << "e";
+ QTest::newRow("hidden2") << ".ext1.ext2" << "ext2";
+ QTest::newRow("hidden2") << ".ext.ext2" << "ext2";
+ QTest::newRow("hidden2") << ".ex.ext2" << "ext2";
+ QTest::newRow("hidden2") << ".e.ext2" << "ext2";
+ QTest::newRow("hidden2") << "..ext2" << "ext2";
+ QTest::newRow("dots") << "/path/file.with.dots/file..ext2" << "ext2";
+ QTest::newRow("dots2") << "/path/file.with.dots/.file..ext2" << "ext2";
+}
+
+void tst_QFileSystemEntry::suffix()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileSystemEntry fe(file);
+ QCOMPARE(fe.suffix(), expected);
+
+ QFileSystemEntry fi2(file);
+ // first resolve the last slash
+ (void) fi2.path();
+ QCOMPARE(fi2.suffix(), expected);
+}
+
+void tst_QFileSystemEntry::completeSuffix_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("noextension0") << "file" << "";
+ QTest::newRow("noextension1") << "/path/to/file" << "";
+ QTest::newRow("data0") << "file.tar" << "tar";
+ QTest::newRow("data1") << "file.tar.gz" << "tar.gz";
+ QTest::newRow("data2") << "/path/file/file.tar.gz" << "tar.gz";
+ QTest::newRow("data3") << "/path/file.tar" << "tar";
+ QTest::newRow("dots") << "/path/file.with.dots/file..ext2" << ".ext2";
+ QTest::newRow("dots2") << "/path/file.with.dots/.file..ext2" << "file..ext2";
+}
+
+void tst_QFileSystemEntry::completeSuffix()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileSystemEntry fi(file);
+ QCOMPARE(fi.completeSuffix(), expected);
+
+ QFileSystemEntry fi2(file);
+ // first resolve the last slash
+ (void) fi2.path();
+ QCOMPARE(fi2.completeSuffix(), expected);
+}
+
+void tst_QFileSystemEntry::baseName_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("data0") << "file.tar" << "file";
+ QTest::newRow("data1") << "file.tar.gz" << "file";
+ QTest::newRow("data2") << "/path/file/file.tar.gz" << "file";
+ QTest::newRow("data3") << "/path/file.tar" << "file";
+ QTest::newRow("data4") << "/path/file" << "file";
+ QTest::newRow("dots") << "/path/file.with.dots/file..ext2" << "file";
+ QTest::newRow("dots2") << "/path/file.with.dots/.file..ext2" << "";
+}
+
+void tst_QFileSystemEntry::baseName()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileSystemEntry fi(file);
+ QCOMPARE(fi.baseName(), expected);
+
+ QFileSystemEntry fi2(file);
+ // first resolve the last slash
+ (void) fi2.path();
+ QCOMPARE(fi2.baseName(), expected);
+}
+
+void tst_QFileSystemEntry::completeBaseName_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("expected");
+
+ QTest::newRow("data0") << "file.tar" << "file";
+ QTest::newRow("data1") << "file.tar.gz" << "file.tar";
+ QTest::newRow("data2") << "/path/file/file.tar.gz" << "file.tar";
+ QTest::newRow("data3") << "/path/file.tar" << "file";
+ QTest::newRow("data4") << "/path/file" << "file";
+ QTest::newRow("dots") << "/path/file.with.dots/file..ext2" << "file.";
+ QTest::newRow("dots2") << "/path/file.with.dots/.file..ext2" << ".file.";
+}
+
+void tst_QFileSystemEntry::completeBaseName()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, expected);
+
+ QFileSystemEntry fi(file);
+ QCOMPARE(fi.completeBaseName(), expected);
+
+ QFileSystemEntry fi2(file);
+ // first resolve the last slash
+ (void) fi2.path();
+ QCOMPARE(fi2.completeBaseName(), expected);
+}
+
+#if defined(WIN_STUFF)
+void tst_QFileSystemEntry::absoluteOrRelative_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isAbsolute");
+ QTest::addColumn<bool>("isRelative");
+
+ QTest::newRow("data0") << "file.tar" << false << true;
+ QTest::newRow("data1") << "/path/file/file.tar.gz" << false << false;
+ QTest::newRow("data1") << "C:path/file/file.tar.gz" << false << false;
+ QTest::newRow("data3") << "C:/path/file" << true << false;
+ QTest::newRow("data3") << "//machine/share" << true << false;
+}
+
+void tst_QFileSystemEntry::absoluteOrRelative()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, isAbsolute);
+ QFETCH(bool, isRelative);
+
+ QFileSystemEntry fi(path);
+ QCOMPARE(fi.isAbsolute(), isAbsolute);
+ QCOMPARE(fi.isRelative(), isRelative);
+}
+#endif
+
+void tst_QFileSystemEntry::isClean_data()
+{
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("isClean");
+
+ QTest::newRow("simple") << "foo" << true;
+ QTest::newRow("complex") << "/foo/bar/bz" << true;
+ QTest::newRow(".file") << "/foo/.file" << true;
+ QTest::newRow("..file") << "/foo/..file" << true;
+ QTest::newRow("...") << "/foo/.../bar" << true;
+ QTest::newRow("./") << "./" << false;
+ QTest::newRow("../") << "../" << false;
+ QTest::newRow(".") << "." << false;
+ QTest::newRow("..") << ".." << false;
+ QTest::newRow("/.") << "/." << false;
+ QTest::newRow("/..") << "/.." << false;
+ QTest::newRow("/../") << "foo/../bar" << false;
+ QTest::newRow("/./") << "foo/./bar" << false;
+ QTest::newRow("//") << "foo//bar" << false;
+}
+
+void tst_QFileSystemEntry::isClean()
+{
+ QFETCH(QString, path);
+ QFETCH(bool, isClean);
+
+ QFileSystemEntry fi(path);
+ QCOMPARE(fi.isClean(), isClean);
+}
+
+QTEST_MAIN(tst_QFileSystemEntry)
+#include <tst_qfilesystementry.moc>
diff --git a/tests/auto/corelib/io/qfilesystemwatcher/.gitignore b/tests/auto/corelib/io/qfilesystemwatcher/.gitignore
new file mode 100644
index 0000000000..19c6c08e03
--- /dev/null
+++ b/tests/auto/corelib/io/qfilesystemwatcher/.gitignore
@@ -0,0 +1 @@
+tst_qfilesystemwatcher
diff --git a/tests/auto/corelib/io/qfilesystemwatcher/qfilesystemwatcher.pro b/tests/auto/corelib/io/qfilesystemwatcher/qfilesystemwatcher.pro
new file mode 100644
index 0000000000..d3549b2f05
--- /dev/null
+++ b/tests/auto/corelib/io/qfilesystemwatcher/qfilesystemwatcher.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+SOURCES += tst_qfilesystemwatcher.cpp
+QT = core
+
+CONFIG += parallel_test
+CONFIG += insignificant_test
diff --git a/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
new file mode 100644
index 0000000000..9d46a8d863
--- /dev/null
+++ b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
@@ -0,0 +1,574 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtTest/QtTest>
+
+#include <QCoreApplication>
+
+#include <QFileSystemWatcher>
+
+#ifdef Q_OS_LINUX
+# ifdef QT_NO_INOTIFY
+# include <linux/version.h>
+# else
+# include <sys/inotify.h>
+# endif
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QFileSystemWatcher : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QFileSystemWatcher();
+
+private slots:
+ void basicTest_data();
+ void basicTest();
+
+ void watchDirectory_data() { basicTest_data(); }
+ void watchDirectory();
+
+ void addPath();
+ void removePath();
+ void addPaths();
+ void removePaths();
+
+ void watchFileAndItsDirectory_data() { basicTest_data(); }
+ void watchFileAndItsDirectory();
+
+ void nonExistingFile();
+
+ void removeFileAndUnWatch();
+
+ void cleanup();
+
+ void QTBUG15255_deadlock();
+private:
+ QStringList do_force_engines;
+ bool do_force_native;
+};
+
+tst_QFileSystemWatcher::tst_QFileSystemWatcher()
+ : do_force_native(false)
+{
+#ifdef Q_OS_LINUX
+ // the inotify implementation in the kernel is known to be buggy in certain versions of the linux kernel
+ do_force_engines << "native";
+ do_force_engines << "dnotify";
+
+#ifdef QT_NO_INOTIFY
+ if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13))
+ do_force_engines << "inotify";
+#else
+ if (inotify_init() != -1)
+ do_force_engines << "inotify";
+#endif
+#elif defined(Q_OS_WIN) || defined(Q_OS_DARWIN) || defined(Q_OS_FREEBSD) || defined(Q_OS_SYMBIAN)
+ // we have native engines for win32, macosx and freebsd
+ do_force_engines << "native";
+#endif
+}
+
+void tst_QFileSystemWatcher::basicTest_data()
+{
+ QTest::addColumn<QString>("backend");
+ foreach(QString engine, do_force_engines)
+ QTest::newRow(engine.toLatin1().constData()) << engine;
+ QTest::newRow("poller") << "poller";
+}
+
+void tst_QFileSystemWatcher::basicTest()
+{
+ QFETCH(QString, backend);
+ qDebug() << "Testing" << backend << "engine";
+
+ // create test file
+ QFile testFile("testfile.txt");
+ testFile.setPermissions(QFile::ReadOwner | QFile::WriteOwner);
+ testFile.remove();
+ QVERIFY(testFile.open(QIODevice::WriteOnly | QIODevice::Truncate));
+ testFile.write(QByteArray("hello"));
+ testFile.close();
+
+ // set some file permissions
+ testFile.setPermissions(QFile::ReadOwner | QFile::WriteOwner);
+
+ // create watcher, forcing it to use a specific backend
+ QFileSystemWatcher watcher;
+ watcher.setObjectName(QLatin1String("_qt_autotest_force_engine_") + backend);
+ watcher.removePath(testFile.fileName());
+ watcher.addPath(testFile.fileName());
+
+ QSignalSpy changedSpy(&watcher, SIGNAL(fileChanged(const QString &)));
+ QEventLoop eventLoop;
+ QTimer timer;
+ connect(&timer, SIGNAL(timeout()), &eventLoop, SLOT(quit()));
+
+ // modify the file, should get a signal from the watcher
+
+ // resolution of the modification time is system dependent, but it's at most 1 second when using
+ // the polling engine. I've heard rumors that FAT32 has a 2 second resolution. So, we have to
+ // wait a bit before we can modify the file (hrmph)...
+#ifndef Q_OS_WINCE
+ QTest::qWait(2000);
+#else
+ // WinCE is always a little bit slower. Give it a little bit more time
+ QTest::qWait(5000);
+#endif
+
+ testFile.open(QIODevice::WriteOnly | QIODevice::Append);
+ testFile.write(QByteArray("world"));
+ testFile.close();
+
+ // qDebug() << "waiting max 5 seconds for notification for file modification to trigger(1)";
+ timer.start(5000);
+ eventLoop.exec();
+
+ QCOMPARE(changedSpy.count(), 1);
+ QCOMPARE(changedSpy.at(0).count(), 1);
+
+ QString fileName = changedSpy.at(0).at(0).toString();
+ QCOMPARE(fileName, testFile.fileName());
+
+ changedSpy.clear();
+
+ // remove the watch and modify the file, should not get a signal from the watcher
+ watcher.removePath(testFile.fileName());
+ testFile.open(QIODevice::WriteOnly | QIODevice::Truncate);
+ testFile.write(QByteArray("hello universe!"));
+ testFile.close();
+
+ // qDebug() << "waiting max 5 seconds for notification for file modification to trigger (2)";
+ timer.start(5000);
+ eventLoop.exec();
+
+ QCOMPARE(changedSpy.count(), 0);
+
+ // readd the file watch with a relative path
+ watcher.addPath(testFile.fileName().prepend("./"));
+ testFile.open(QIODevice::WriteOnly | QIODevice::Truncate);
+ testFile.write(QByteArray("hello multiverse!"));
+ testFile.close();
+
+ timer.start(5000);
+ eventLoop.exec();
+
+ QVERIFY(changedSpy.count() > 0);
+
+ watcher.removePath(testFile.fileName().prepend("./"));
+
+ changedSpy.clear();
+
+ // readd the file watch
+ watcher.addPath(testFile.fileName());
+
+ // change the permissions, should get a signal from the watcher
+ testFile.setPermissions(QFile::ReadOwner);
+
+ // qDebug() << "waiting max 5 seconds for notification for file permission modification to trigger(1)";
+ timer.start(5000);
+ eventLoop.exec();
+
+ QCOMPARE(changedSpy.count(), 1);
+ QCOMPARE(changedSpy.at(0).count(), 1);
+
+ fileName = changedSpy.at(0).at(0).toString();
+ QCOMPARE(fileName, testFile.fileName());
+
+ changedSpy.clear();
+
+ // remove the watch and modify file permissions, should not get a signal from the watcher
+ watcher.removePath(testFile.fileName());
+ testFile.setPermissions(QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOther);
+
+ // qDebug() << "waiting max 5 seconds for notification for file modification to trigger (2)";
+ timer.start(5000);
+ eventLoop.exec();
+
+ QCOMPARE(changedSpy.count(), 0);
+
+ // readd the file watch
+ watcher.addPath(testFile.fileName());
+
+ // remove the file, should get a signal from the watcher
+ QVERIFY(testFile.remove());
+
+ // qDebug() << "waiting max 5 seconds for notification for file removal to trigger";
+ timer.start(5000);
+ eventLoop.exec();
+
+ QVERIFY(changedSpy.count() == 1 || changedSpy.count() == 2); // removing a file on some filesystems seems to deliver 2 notifications
+ QCOMPARE(changedSpy.at(0).count(), 1);
+
+ fileName = changedSpy.at(0).at(0).toString();
+ QCOMPARE(fileName, testFile.fileName());
+
+ changedSpy.clear();
+
+ // recreate the file, we should not get any notification
+ QVERIFY(testFile.open(QIODevice::WriteOnly | QIODevice::Truncate));
+ testFile.write(QByteArray("hello"));
+ testFile.close();
+
+ // qDebug() << "waiting max 5 seconds for notification for file recreation to trigger";
+ timer.start(5000);
+ eventLoop.exec();
+
+ QCOMPARE(changedSpy.count(), 0);
+
+ QVERIFY(testFile.remove());
+}
+
+void tst_QFileSystemWatcher::watchDirectory()
+{
+ QFETCH(QString, backend);
+ qDebug() << "Testing" << backend << "engine";
+
+ QDir().mkdir("testDir");
+ QDir testDir("testDir");
+
+ QString testFileName = testDir.filePath("testFile.txt");
+ QFile::remove(testFileName);
+
+ QFileSystemWatcher watcher;
+ watcher.setObjectName(QLatin1String("_qt_autotest_force_engine_") + backend);
+ watcher.addPath(testDir.dirName());
+
+ QSignalSpy changedSpy(&watcher, SIGNAL(directoryChanged(const QString &)));
+ QEventLoop eventLoop;
+ QTimer timer;
+ connect(&timer, SIGNAL(timeout()), &eventLoop, SLOT(quit()));
+
+ // resolution of the modification time is system dependent, but it's at most 1 second when using
+ // the polling engine. From what I know, FAT32 has a 2 second resolution. So we have to
+ // wait before modifying the directory...
+ QTest::qWait(2000);
+ QFile testFile(testFileName);
+ QString fileName;
+
+ // remove the watch, should not get notification of a new file
+ watcher.removePath(testDir.dirName());
+ QVERIFY(testFile.open(QIODevice::WriteOnly | QIODevice::Truncate));
+ testFile.close();
+
+ // qDebug() << "waiting max 5 seconds for notification for file recreationg to trigger";
+ timer.start(5000);
+ eventLoop.exec();
+
+ QCOMPARE(changedSpy.count(), 0);
+
+ watcher.addPath(testDir.dirName());
+
+ // remove the file again, should get a signal from the watcher
+ QVERIFY(testFile.remove());
+
+ timer.start(5000);
+ eventLoop.exec();
+
+ // remove the directory, should get a signal from the watcher
+ QVERIFY(QDir().rmdir("testDir"));
+
+ // qDebug() << "waiting max 5 seconds for notification for directory removal to trigger";
+ timer.start(5000);
+ eventLoop.exec();
+
+#ifdef Q_OS_WINCE
+ QEXPECT_FAIL("poller", "Directory does not get updated on file removal(See #137910)", Abort);
+#endif
+ QCOMPARE(changedSpy.count(), 2);
+ QCOMPARE(changedSpy.at(0).count(), 1);
+ QCOMPARE(changedSpy.at(1).count(), 1);
+
+ fileName = changedSpy.at(0).at(0).toString();
+ QCOMPARE(fileName, testDir.dirName());
+ fileName = changedSpy.at(1).at(0).toString();
+ QCOMPARE(fileName, testDir.dirName());
+
+ changedSpy.clear();
+
+ // recreate the file, we should not get any notification
+ if (!QDir().mkdir("testDir"))
+ QSKIP("Failed to recreate directory, skipping final test.", SkipSingle);
+
+ // qDebug() << "waiting max 5 seconds for notification for dir recreation to trigger";
+ timer.start(5000);
+ eventLoop.exec();
+
+ QCOMPARE(changedSpy.count(), 0);
+
+ QVERIFY(QDir().rmdir("testDir"));
+}
+
+void tst_QFileSystemWatcher::addPath()
+{
+ QFileSystemWatcher watcher;
+ QString home = QDir::homePath();
+ watcher.addPath(home);
+ QCOMPARE(watcher.directories().count(), 1);
+ QCOMPARE(watcher.directories().first(), home);
+ watcher.addPath(home);
+ QCOMPARE(watcher.directories().count(), 1);
+
+ // With empty string
+ QTest::ignoreMessage(QtWarningMsg, "QFileSystemWatcher::addPath: path is empty");
+ watcher.addPath(QString());
+}
+
+void tst_QFileSystemWatcher::removePath()
+{
+ QFileSystemWatcher watcher;
+ QString home = QDir::homePath();
+ watcher.addPath(home);
+ watcher.removePath(home);
+ QCOMPARE(watcher.directories().count(), 0);
+ watcher.removePath(home);
+ QCOMPARE(watcher.directories().count(), 0);
+
+ // With empty string
+ QTest::ignoreMessage(QtWarningMsg, "QFileSystemWatcher::removePath: path is empty");
+ watcher.removePath(QString());
+}
+
+void tst_QFileSystemWatcher::addPaths()
+{
+ QFileSystemWatcher watcher;
+ QStringList paths;
+ paths << QDir::homePath() << QDir::currentPath();
+ watcher.addPaths(paths);
+ QCOMPARE(watcher.directories().count(), 2);
+
+ // With empty list
+ paths.clear();
+ QTest::ignoreMessage(QtWarningMsg, "QFileSystemWatcher::addPaths: list is empty");
+ watcher.addPaths(paths);
+}
+
+void tst_QFileSystemWatcher::removePaths()
+{
+ QFileSystemWatcher watcher;
+ QStringList paths;
+ paths << QDir::homePath() << QDir::currentPath();
+ watcher.addPaths(paths);
+ QCOMPARE(watcher.directories().count(), 2);
+ watcher.removePaths(paths);
+ QCOMPARE(watcher.directories().count(), 0);
+
+ //With empty list
+ paths.clear();
+ QTest::ignoreMessage(QtWarningMsg, "QFileSystemWatcher::removePaths: list is empty");
+ watcher.removePaths(paths);
+}
+
+#if 0
+class SignalTest : public QObject {
+ Q_OBJECT
+ public slots:
+ void fileSlot(const QString &file) { qDebug() << "file " << file;}
+ void dirSlot(const QString &dir) { qDebug() << "dir" << dir;}
+};
+#endif
+
+void tst_QFileSystemWatcher::watchFileAndItsDirectory()
+{
+ QFETCH(QString, backend);
+ QDir().mkdir("testDir");
+ QDir testDir("testDir");
+
+ QString testFileName = testDir.filePath("testFile.txt");
+ QString secondFileName = testDir.filePath("testFile2.txt");
+ QFile::remove(secondFileName);
+
+ QFile testFile(testFileName);
+ testFile.setPermissions(QFile::ReadOwner | QFile::WriteOwner);
+ testFile.remove();
+
+ QVERIFY(testFile.open(QIODevice::WriteOnly | QIODevice::Truncate));
+ testFile.write(QByteArray("hello"));
+ testFile.close();
+
+ QFileSystemWatcher watcher;
+ watcher.setObjectName(QLatin1String("_qt_autotest_force_engine_") + backend);
+
+ watcher.addPath(testDir.dirName());
+ watcher.addPath(testFileName);
+
+ /*
+ SignalTest signalTest;
+ QObject::connect(&watcher, SIGNAL(fileChanged(const QString &)), &signalTest, SLOT(fileSlot(const QString &)));
+ QObject::connect(&watcher, SIGNAL(directoryChanged(const QString &)), &signalTest, SLOT(dirSlot(const QString &)));
+ */
+
+ QSignalSpy fileChangedSpy(&watcher, SIGNAL(fileChanged(const QString &)));
+ QSignalSpy dirChangedSpy(&watcher, SIGNAL(directoryChanged(const QString &)));
+ QEventLoop eventLoop;
+ QTimer timer;
+ connect(&timer, SIGNAL(timeout()), &eventLoop, SLOT(quit()));
+
+ // resolution of the modification time is system dependent, but it's at most 1 second when using
+ // the polling engine. From what I know, FAT32 has a 2 second resolution. So we have to
+ // wait before modifying the directory...
+ QTest::qWait(2000);
+
+ QVERIFY(testFile.open(QIODevice::WriteOnly | QIODevice::Truncate));
+ testFile.write(QByteArray("hello again"));
+ testFile.close();
+
+ timer.start(3000);
+ eventLoop.exec();
+ QVERIFY(fileChangedSpy.count() > 0);
+ //according to Qt 4 documentation:
+ //void QFileSystemWatcher::directoryChanged ( const QString & path ) [signal]
+ //This signal is emitted when the directory at a specified path, is modified
+ //(e.g., when a file is added, -->modified<-- or deleted) or removed from disk.
+ //Note that if there are several changes during a short period of time, some
+ //of the changes might not emit this signal. However, the last change in the
+ //sequence of changes will always generate this signal.
+ //Symbian behaves as documented (and can't be filtered), but the other platforms don't
+ //so test should not assert this
+ QVERIFY(dirChangedSpy.count() < 2);
+
+ if (backend == "dnotify")
+ QSKIP("dnotify is broken, skipping the rest of the test.", SkipSingle);
+
+ fileChangedSpy.clear();
+ dirChangedSpy.clear();
+ QFile secondFile(secondFileName);
+ secondFile.open(QIODevice::WriteOnly | QIODevice::Truncate);
+ secondFile.write("Foo");
+ secondFile.close();
+
+ timer.start(3000);
+ eventLoop.exec();
+ QCOMPARE(fileChangedSpy.count(), 0);
+#ifdef Q_OS_WINCE
+ QEXPECT_FAIL("poller", "Directory does not get updated on file removal(See #137910)", Abort);
+#endif
+ QCOMPARE(dirChangedSpy.count(), 1);
+
+ dirChangedSpy.clear();
+
+ QFile::remove(testFileName);
+
+ timer.start(3000);
+ eventLoop.exec();
+ QVERIFY(fileChangedSpy.count() > 0);
+ QCOMPARE(dirChangedSpy.count(), 1);
+
+ fileChangedSpy.clear();
+ dirChangedSpy.clear();
+
+ watcher.removePath(testFileName);
+ QFile::remove(secondFileName);
+
+ timer.start(3000);
+ eventLoop.exec();
+ QCOMPARE(fileChangedSpy.count(), 0);
+ // polling watcher has generated separate events for content and time change
+ // on Symbian emulator, so allow possibility of 2 events
+ QVERIFY(dirChangedSpy.count() == 1 || dirChangedSpy.count() == 2);
+
+ QVERIFY(QDir().rmdir("testDir"));
+}
+
+void tst_QFileSystemWatcher::cleanup()
+{
+ QDir testDir("testDir");
+ QString testFileName = testDir.filePath("testFile.txt");
+ QString secondFileName = testDir.filePath("testFile2.txt");
+ QFile::remove(testFileName);
+ QFile::remove(secondFileName);
+ QDir().rmdir("testDir");
+}
+
+void tst_QFileSystemWatcher::nonExistingFile()
+{
+ // Don't crash...
+ QFileSystemWatcher watcher;
+ watcher.addPath("file_that_does_not_exist.txt");
+ QVERIFY(true);
+}
+
+void tst_QFileSystemWatcher::removeFileAndUnWatch()
+{
+ static const char * const filename = "foo.txt";
+ QFileSystemWatcher watcher;
+
+ {
+ QFile testFile(filename);
+ testFile.open(QIODevice::WriteOnly);
+ testFile.close();
+ }
+ watcher.addPath(filename);
+
+ QFile::remove(filename);
+ watcher.removePath(filename);
+
+ {
+ QFile testFile(filename);
+ testFile.open(QIODevice::WriteOnly);
+ testFile.close();
+ }
+ watcher.addPath(filename);
+}
+
+class SomeSingleton : public QObject
+{
+public:
+ SomeSingleton() : mFsWatcher(new QFileSystemWatcher(this)) { mFsWatcher->addPath(QLatin1String("/usr/lib"));}
+ void bla() const {}
+ QFileSystemWatcher* mFsWatcher;
+};
+
+Q_GLOBAL_STATIC(SomeSingleton, someSingleton)
+
+void tst_QFileSystemWatcher::QTBUG15255_deadlock()
+{
+ someSingleton()->bla();
+ //the test must still finish
+ QTest::qWait(30);
+}
+
+
+QTEST_MAIN(tst_QFileSystemWatcher)
+#include "tst_qfilesystemwatcher.moc"
diff --git a/tests/auto/corelib/io/qiodevice/.gitignore b/tests/auto/corelib/io/qiodevice/.gitignore
new file mode 100644
index 0000000000..e503843519
--- /dev/null
+++ b/tests/auto/corelib/io/qiodevice/.gitignore
@@ -0,0 +1,2 @@
+tst_qiodevice
+peektestfile
diff --git a/tests/auto/corelib/io/qiodevice/qiodevice.pro b/tests/auto/corelib/io/qiodevice/qiodevice.pro
new file mode 100644
index 0000000000..08996e8cd4
--- /dev/null
+++ b/tests/auto/corelib/io/qiodevice/qiodevice.pro
@@ -0,0 +1,23 @@
+load(qttest_p4)
+SOURCES += tst_qiodevice.cpp
+
+QT = core network
+
+wince*: {
+ addFiles.files = tst_qiodevice.cpp
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+ DEFINES += SRCDIR=\\\"\\\"
+ !wince50standard-x86-msvc2005: DEFINES += WINCE_EMULATOR_TEST=1
+} else:symbian {
+ # SRCDIR defined in code in symbian
+ addFiles.files = tst_qiodevice.cpp
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+ TARGET.CAPABILITY = NetworkServices
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+MOC_DIR=tmp
+
+
diff --git a/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
new file mode 100644
index 0000000000..425b3b6bd1
--- /dev/null
+++ b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
@@ -0,0 +1,611 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/QtCore>
+#include <QtNetwork/QtNetwork>
+#include <QtTest/QtTest>
+
+#include "../../../network-settings.h"
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR ""
+#endif
+
+class tst_QIODevice : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QIODevice();
+ virtual ~tst_QIODevice();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void getSetCheck();
+ void constructing_QTcpSocket();
+ void constructing_QFile();
+ void read_QByteArray();
+ void unget();
+ void peek();
+ void peekAndRead();
+
+ void readLine_data();
+ void readLine();
+
+ void readLine2_data();
+ void readLine2();
+
+ void peekBug();
+};
+
+// Testing get/set functions
+void tst_QIODevice::getSetCheck()
+{
+ // OpenMode QIODevice::openMode()
+ // void QIODevice::setOpenMode(OpenMode)
+ class MyIODevice : public QIODevice {
+ public:
+ void setOpenMode(OpenMode openMode) { QIODevice::setOpenMode(openMode); }
+ };
+ QTcpSocket var1;
+ MyIODevice *obj1 = reinterpret_cast<MyIODevice*>(&var1);
+ obj1->setOpenMode(QIODevice::OpenMode(QIODevice::NotOpen));
+ QCOMPARE(QIODevice::OpenMode(QIODevice::NotOpen), obj1->openMode());
+ obj1->setOpenMode(QIODevice::OpenMode(QIODevice::ReadWrite));
+ QCOMPARE(QIODevice::OpenMode(QIODevice::ReadWrite), obj1->openMode());
+}
+
+tst_QIODevice::tst_QIODevice()
+{
+ Q_SET_DEFAULT_IAP
+}
+
+tst_QIODevice::~tst_QIODevice()
+{
+}
+
+void tst_QIODevice::init()
+{
+}
+
+void tst_QIODevice::cleanup()
+{
+}
+
+//----------------------------------------------------------------------------------
+void tst_QIODevice::constructing_QTcpSocket()
+{
+#if defined(Q_OS_WINCE) && defined(WINCE_EMULATOR_TEST)
+ QSKIP("Networking tests in a WinCE emulator are unstable", SkipAll);
+#endif
+ QTcpSocket socket;
+ QIODevice *device = &socket;
+
+ QVERIFY(!device->isOpen());
+
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket.waitForConnected(30000));
+ QVERIFY(device->isOpen());
+
+ while (!device->canReadLine())
+ QVERIFY(device->waitForReadyRead(30000));
+
+ char buf[1024];
+ memset(buf, 0, sizeof(buf));
+ qlonglong lineLength = device->readLine(buf, sizeof(buf));
+ QVERIFY(lineLength > 0);
+ QCOMPARE(socket.pos(), qlonglong(0));
+
+ socket.close();
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY(socket.waitForConnected(30000));
+ QVERIFY(device->isOpen());
+
+ while (!device->canReadLine())
+ QVERIFY(device->waitForReadyRead(30000));
+
+ char buf2[1024];
+ memset(buf2, 0, sizeof(buf2));
+ QCOMPARE(socket.readLine(buf2, sizeof(buf2)), lineLength);
+
+ char *c1 = buf;
+ char *c2 = buf2;
+ while (*c1 && *c2) {
+ QCOMPARE(*c1, *c2);
+ ++c1;
+ ++c2;
+ }
+ QCOMPARE(*c1, *c2);
+}
+
+//----------------------------------------------------------------------------------
+void tst_QIODevice::constructing_QFile()
+{
+ QFile file;
+ QIODevice *device = &file;
+
+ QVERIFY(!device->isOpen());
+
+ file.setFileName(SRCDIR "tst_qiodevice.cpp");
+ QVERIFY(file.open(QFile::ReadOnly));
+ QVERIFY(device->isOpen());
+ QCOMPARE((int) device->openMode(), (int) QFile::ReadOnly);
+
+ char buf[1024];
+ memset(buf, 0, sizeof(buf));
+ qlonglong lineLength = device->readLine(buf, sizeof(buf));
+ QVERIFY(lineLength > 0);
+ QCOMPARE(file.pos(), lineLength);
+
+ file.seek(0);
+ char buf2[1024];
+ memset(buf2, 0, sizeof(buf2));
+ QCOMPARE(file.readLine(buf2, sizeof(buf2)), lineLength);
+
+ char *c1 = buf;
+ char *c2 = buf2;
+ while (*c1 && *c2) {
+ QCOMPARE(*c1, *c2);
+ ++c1;
+ ++c2;
+ }
+ QCOMPARE(*c1, *c2);
+}
+
+
+void tst_QIODevice::read_QByteArray()
+{
+ QFile f(SRCDIR "tst_qiodevice.cpp");
+ f.open(QIODevice::ReadOnly);
+
+ QByteArray b = f.read(10);
+ QCOMPARE(b.length(), 10);
+
+ b = f.read(256);
+ QCOMPARE(b.length(), 256);
+
+ b = f.read(0);
+ QCOMPARE(b.length(), 0);
+}
+
+//--------------------------------------------------------------------
+void tst_QIODevice::unget()
+{
+#if defined(Q_OS_WINCE) && defined(WINCE_EMULATOR_TEST)
+ QSKIP("Networking tests in a WinCE emulator are unstable", SkipAll);
+#endif
+ QBuffer buffer;
+ buffer.open(QBuffer::ReadWrite);
+ buffer.write("ZXCV");
+ buffer.seek(0);
+ QCOMPARE(buffer.read(4), QByteArray("ZXCV"));
+ QCOMPARE(buffer.pos(), qint64(4));
+
+ buffer.ungetChar('a');
+ buffer.ungetChar('b');
+ buffer.ungetChar('c');
+ buffer.ungetChar('d');
+
+ QCOMPARE(buffer.pos(), qint64(0));
+
+ char buf[6];
+ QCOMPARE(buffer.readLine(buf, 5), qint64(4));
+ QCOMPARE(buffer.pos(), qint64(4));
+ QCOMPARE(static_cast<const char*>(buf), "dcba");
+
+ buffer.ungetChar('a');
+ buffer.ungetChar('b');
+ buffer.ungetChar('c');
+ buffer.ungetChar('d');
+
+ QCOMPARE(buffer.pos(), qint64(0));
+
+ for (int i = 0; i < 5; ++i) {
+ buf[0] = '@';
+ buf[1] = '@';
+ QTest::ignoreMessage(QtWarningMsg,
+ "QIODevice::readLine: Called with maxSize < 2");
+ QCOMPARE(buffer.readLine(buf, 1), qint64(-1));
+ QCOMPARE(buffer.readLine(buf, 2), qint64(i < 4 ? 1 : -1));
+ switch (i) {
+ case 0: QCOMPARE(buf[0], 'd'); break;
+ case 1: QCOMPARE(buf[0], 'c'); break;
+ case 2: QCOMPARE(buf[0], 'b'); break;
+ case 3: QCOMPARE(buf[0], 'a'); break;
+ case 4: QCOMPARE(buf[0], '\0'); break;
+ }
+ QCOMPARE(buf[1], i < 4 ? '\0' : '@');
+ }
+
+ buffer.ungetChar('\n');
+ QCOMPARE(buffer.readLine(), QByteArray("\n"));
+
+ buffer.seek(1);
+ buffer.readLine(buf, 3);
+ QCOMPARE(static_cast<const char*>(buf), "XC");
+
+ buffer.seek(4);
+ buffer.ungetChar('Q');
+ QCOMPARE(buffer.readLine(buf, 3), qint64(1));
+
+ for (int i = 0; i < 2; ++i) {
+ QTcpSocket socket;
+ QIODevice *dev;
+ QByteArray result;
+ const char *lineResult;
+ if (i == 0) {
+ dev = &buffer;
+ result = QByteArray("ZXCV");
+ lineResult = "ZXCV";
+ } else {
+ socket.connectToHost(QtNetworkSettings::serverName(), 80);
+ socket.write("GET / HTTP/1.0\r\n\r\n");
+ QVERIFY(socket.waitForReadyRead());
+ dev = &socket;
+ result = QByteArray("HTTP");
+ lineResult = "Date";
+ }
+ char ch, ch2;
+ dev->seek(0);
+ dev->getChar(&ch);
+ dev->ungetChar(ch);
+ QCOMPARE(dev->peek(4), result);
+ dev->getChar(&ch);
+ dev->getChar(&ch2);
+ dev->ungetChar(ch2);
+ dev->ungetChar(ch);
+ QCOMPARE(dev->read(1), result.left(1));
+ QCOMPARE(dev->read(3), result.right(3));
+
+ if (i == 0)
+ dev->seek(0);
+ else
+ dev->readLine();
+ dev->getChar(&ch);
+ dev->ungetChar(ch);
+ dev->readLine(buf, 5);
+ QCOMPARE(static_cast<const char*>(buf), lineResult);
+
+ if (i == 1)
+ socket.close();
+ }
+}
+
+//--------------------------------------------------------------------
+void tst_QIODevice::peek()
+{
+ QBuffer buffer;
+ QFile::remove("peektestfile");
+ QFile file("peektestfile");
+
+ for (int i = 0; i < 2; ++i) {
+ QIODevice *device = i ? (QIODevice *)&file : (QIODevice *)&buffer;
+
+ device->open(QBuffer::ReadWrite);
+ device->write("ZXCV");
+
+ device->seek(0);
+ QCOMPARE(device->peek(4), QByteArray("ZXCV"));
+ QCOMPARE(device->pos(), qint64(0));
+ device->write("ABCDE");
+ device->seek(3);
+ QCOMPARE(device->peek(1), QByteArray("D"));
+ QCOMPARE(device->peek(5), QByteArray("DE"));
+ device->seek(0);
+ QCOMPARE(device->read(4), QByteArray("ABCD"));
+ QCOMPARE(device->pos(), qint64(4));
+
+ device->seek(0);
+ device->write("ZXCV");
+ device->seek(0);
+ char buf[5];
+ buf[4] = 0;
+ device->peek(buf, 4);
+ QCOMPARE(static_cast<const char *>(buf), "ZXCV");
+ QCOMPARE(device->pos(), qint64(0));
+ device->read(buf, 4);
+ QCOMPARE(static_cast<const char *>(buf), "ZXCV");
+ QCOMPARE(device->pos(), qint64(4));
+ }
+ QFile::remove("peektestfile");
+}
+
+void tst_QIODevice::peekAndRead()
+{
+ QByteArray originalData;
+ for (int i=0;i<1000;i++)
+ originalData += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ QBuffer buffer;
+ QFile::remove("peektestfile");
+ QFile file("peektestfile");
+
+ for (int i = 0; i < 2; ++i) {
+ QByteArray readData;
+ QIODevice *device = i ? (QIODevice *)&file : (QIODevice *)&buffer;
+ device->open(QBuffer::ReadWrite);
+ device->write(originalData);
+ device->seek(0);
+ while (!device->atEnd()) {
+ char peekIn[26];
+ device->peek(peekIn, 26);
+ readData += device->read(26);
+ }
+ QCOMPARE(readData, originalData);
+ }
+ QFile::remove("peektestfile");
+}
+
+void tst_QIODevice::readLine_data()
+{
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << QByteArray("\nAA");
+ QTest::newRow("1") << QByteArray("A\nAA");
+
+ QByteArray data(9000, 'A');
+ data[8193] = '\n';
+ QTest::newRow("8194") << data;
+ data[8193] = 'A';
+ data[8192] = '\n';
+ QTest::newRow("8193") << data;
+ data[8192] = 'A';
+ data[8191] = '\n';
+ QTest::newRow("8192") << data;
+ data[8191] = 'A';
+ data[8190] = '\n';
+ QTest::newRow("8191") << data;
+
+ data[5999] = '\n';
+ QTest::newRow("6000") << data;
+
+ data[4095] = '\n';
+ QTest::newRow("4096") << data;
+
+ data[4094] = '\n';
+ data[4095] = 'A';
+ QTest::newRow("4095") << data;
+}
+
+void tst_QIODevice::readLine()
+{
+ QFETCH(QByteArray, data);
+ QBuffer buffer(&data);
+ QVERIFY(buffer.open(QIODevice::ReadWrite));
+ QVERIFY(buffer.canReadLine());
+
+ int linelen = data.indexOf('\n') + 1;
+ QByteArray line;
+ line.reserve(linelen + 100);
+
+ int result = buffer.readLine(line.data(), linelen + 100);
+ QCOMPARE(result, linelen);
+
+ // try the exact length of the line (plus terminating \0)
+ QVERIFY(buffer.seek(0));
+ result = buffer.readLine(line.data(), linelen + 1);
+ QCOMPARE(result, linelen);
+
+ // try with a line length limit
+ QVERIFY(buffer.seek(0));
+ line = buffer.readLine(linelen + 100);
+ QCOMPARE(line.size(), linelen);
+
+ // try without a length limit
+ QVERIFY(buffer.seek(0));
+ line = buffer.readLine();
+ QCOMPARE(line.size(), linelen);
+}
+
+void tst_QIODevice::readLine2_data()
+{
+ QTest::addColumn<QByteArray>("line");
+
+ QTest::newRow("1024 - 4") << QByteArray(1024 - 4, 'x');
+ QTest::newRow("1024 - 3") << QByteArray(1024 - 3, 'x');
+ QTest::newRow("1024 - 2") << QByteArray(1024 - 2, 'x');
+ QTest::newRow("1024 - 1") << QByteArray(1024 - 1, 'x');
+ QTest::newRow("1024" ) << QByteArray(1024 , 'x');
+ QTest::newRow("1024 + 1") << QByteArray(1024 + 1, 'x');
+ QTest::newRow("1024 + 2") << QByteArray(1024 + 2, 'x');
+
+ QTest::newRow("4096 - 4") << QByteArray(4096 - 4, 'x');
+ QTest::newRow("4096 - 3") << QByteArray(4096 - 3, 'x');
+ QTest::newRow("4096 - 2") << QByteArray(4096 - 2, 'x');
+ QTest::newRow("4096 - 1") << QByteArray(4096 - 1, 'x');
+ QTest::newRow("4096" ) << QByteArray(4096 , 'x');
+ QTest::newRow("4096 + 1") << QByteArray(4096 + 1, 'x');
+ QTest::newRow("4096 + 2") << QByteArray(4096 + 2, 'x');
+
+ QTest::newRow("8192 - 4") << QByteArray(8192 - 4, 'x');
+ QTest::newRow("8192 - 3") << QByteArray(8192 - 3, 'x');
+ QTest::newRow("8192 - 2") << QByteArray(8192 - 2, 'x');
+ QTest::newRow("8192 - 1") << QByteArray(8192 - 1, 'x');
+ QTest::newRow("8192" ) << QByteArray(8192 , 'x');
+ QTest::newRow("8192 + 1") << QByteArray(8192 + 1, 'x');
+ QTest::newRow("8192 + 2") << QByteArray(8192 + 2, 'x');
+
+ QTest::newRow("16384 - 4") << QByteArray(16384 - 4, 'x');
+ QTest::newRow("16384 - 3") << QByteArray(16384 - 3, 'x');
+ QTest::newRow("16384 - 2") << QByteArray(16384 - 2, 'x');
+ QTest::newRow("16384 - 1") << QByteArray(16384 - 1, 'x');
+ QTest::newRow("16384" ) << QByteArray(16384 , 'x');
+ QTest::newRow("16384 + 1") << QByteArray(16384 + 1, 'x');
+ QTest::newRow("16384 + 2") << QByteArray(16384 + 2, 'x');
+
+ QTest::newRow("20000") << QByteArray(20000, 'x');
+
+ QTest::newRow("32768 - 4") << QByteArray(32768 - 4, 'x');
+ QTest::newRow("32768 - 3") << QByteArray(32768 - 3, 'x');
+ QTest::newRow("32768 - 2") << QByteArray(32768 - 2, 'x');
+ QTest::newRow("32768 - 1") << QByteArray(32768 - 1, 'x');
+ QTest::newRow("32768" ) << QByteArray(32768 , 'x');
+ QTest::newRow("32768 + 1") << QByteArray(32768 + 1, 'x');
+ QTest::newRow("32768 + 2") << QByteArray(32768 + 2, 'x');
+
+ QTest::newRow("40000") << QByteArray(40000, 'x');
+}
+
+void tst_QIODevice::readLine2()
+{
+ QFETCH(QByteArray, line);
+
+ int length = line.size();
+
+ QByteArray data("First line.\r\n");
+ data.append(line);
+ data.append("\r\n");
+ data.append(line);
+ data.append("\r\n");
+ data.append("\r\n0123456789");
+
+ {
+ QBuffer buffer(&data);
+ buffer.open(QIODevice::ReadOnly);
+
+ buffer.seek(0);
+ QByteArray temp;
+ temp.resize(64536);
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(13));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(length + 2));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(length + 2));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(2));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(10));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(-1));
+
+ buffer.seek(0);
+ QCOMPARE(buffer.readLine().size(), 13);
+ QCOMPARE(buffer.readLine().size(), length + 2);
+ QCOMPARE(buffer.readLine().size(), length + 2);
+ QCOMPARE(buffer.readLine().size(), 2);
+ QCOMPARE(buffer.readLine().size(), 10);
+ QVERIFY(buffer.readLine().isNull());
+ }
+
+ {
+ QBuffer buffer(&data);
+ buffer.open(QIODevice::ReadOnly | QIODevice::Text);
+
+ buffer.seek(0);
+ QByteArray temp;
+ temp.resize(64536);
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(12));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(length + 1));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(length + 1));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(1));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(10));
+ QCOMPARE(buffer.readLine(temp.data(), temp.size()), qint64(-1));
+
+ buffer.seek(0);
+ QCOMPARE(buffer.readLine().size(), 12);
+ QCOMPARE(buffer.readLine().size(), length + 1);
+ QCOMPARE(buffer.readLine().size(), length + 1);
+ QCOMPARE(buffer.readLine().size(), 1);
+ QCOMPARE(buffer.readLine().size(), 10);
+ QVERIFY(buffer.readLine().isNull());
+ }
+}
+
+
+class PeekBug : public QIODevice {
+ Q_OBJECT
+public:
+ char alphabet[27];
+ qint64 counter;
+ PeekBug() : QIODevice(), counter(0) {
+ memcpy(alphabet,"abcdefghijklmnopqrstuvqxyz",27);
+ };
+ qint64 readData(char *data, qint64 maxlen) {
+ qint64 pos = 0;
+ while (pos < maxlen) {
+ *(data + pos) = alphabet[counter];
+ pos++;
+ counter++;
+ if (counter == 26)
+ counter = 0;
+ }
+ return maxlen;
+ }
+ qint64 writeData(const char * /* data */, qint64 /* maxlen */) {
+ return -1;
+ }
+
+};
+
+// This is a testcase for the bug fixed with bd287865
+void tst_QIODevice::peekBug()
+{
+ PeekBug peekBug;
+ peekBug.open(QIODevice::ReadOnly | QIODevice::Unbuffered);
+
+ char onetwo[2];
+ peekBug.peek(onetwo, 2);
+ QCOMPARE(onetwo[0], 'a');
+ QCOMPARE(onetwo[1], 'b');
+
+ peekBug.read(onetwo, 1);
+ QCOMPARE(onetwo[0], 'a');
+
+ peekBug.peek(onetwo, 2);
+ QCOMPARE(onetwo[0], 'b');
+ QCOMPARE(onetwo[1], 'c');
+
+ peekBug.read(onetwo, 1);
+ QCOMPARE(onetwo[0], 'b');
+ peekBug.read(onetwo, 1);
+ QCOMPARE(onetwo[0], 'c');
+ peekBug.read(onetwo, 1);
+ QCOMPARE(onetwo[0], 'd');
+
+ peekBug.peek(onetwo, 2);
+ QCOMPARE(onetwo[0], 'e');
+ QCOMPARE(onetwo[1], 'f');
+
+}
+
+QTEST_MAIN(tst_QIODevice)
+#include "tst_qiodevice.moc"
diff --git a/tests/auto/corelib/io/qprocess/.gitignore b/tests/auto/corelib/io/qprocess/.gitignore
new file mode 100644
index 0000000000..a273810042
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/.gitignore
@@ -0,0 +1,22 @@
+tst_qprocess
+fileWriterProcess/fileWriterProcess
+test Space In Name/
+testDetached/testDetached
+testExitCodes/testExitCodes
+testGuiProcess/testGuiProcess
+testProcessCrash/testProcessCrash
+testProcessDeadWhileReading/testProcessDeadWhileReading
+testProcessEOF/testProcessEOF
+testProcessEcho/testProcessEcho
+testProcessEcho2/testProcessEcho2
+testProcessEcho3/testProcessEcho3
+testProcessEnvironment/testProcessEnvironment
+testProcessLoopback/testProcessLoopback
+testProcessNormal/testProcessNormal
+testProcessOutput/testProcessOutput
+testProcessSpacesArgs/nospace
+testProcessSpacesArgs/one space
+testProcessSpacesArgs/two space s
+testSetWorkingDirectory/testSetWorkingDirectory
+testSoftExit/testSoftExit
+data
diff --git a/tests/auto/corelib/io/qprocess/fileWriterProcess/fileWriterProcess.pro b/tests/auto/corelib/io/qprocess/fileWriterProcess/fileWriterProcess.pro
new file mode 100644
index 0000000000..c9f87ba361
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/fileWriterProcess/fileWriterProcess.pro
@@ -0,0 +1,10 @@
+SOURCES = main.cpp
+CONFIG += console
+CONFIG -= app_bundle
+QT = core
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
+
+
diff --git a/tests/auto/corelib/io/qprocess/fileWriterProcess/main.cpp b/tests/auto/corelib/io/qprocess/fileWriterProcess/main.cpp
new file mode 100644
index 0000000000..40e92c69be
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/fileWriterProcess/main.cpp
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+
+int main(int argc, char **argv)
+{
+ QCoreApplication ca(argc, argv);
+ QFile f;
+ f.open(stdin, QIODevice::ReadOnly);
+ QString input;
+ char buf[1024];
+ qint64 len;
+ while ((len = f.read(buf, 1024)) > 0)
+ input += QByteArray(buf, len);
+ f.close();
+ QFile f2("fileWriterProcess.txt");
+ f2.open(QIODevice::WriteOnly | QIODevice::Truncate);
+ f2.write(input.toLatin1());
+ f2.close();
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/qprocess.pro b/tests/auto/corelib/io/qprocess/qprocess.pro
new file mode 100644
index 0000000000..77cfc8252e
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/qprocess.pro
@@ -0,0 +1,32 @@
+TEMPLATE = subdirs
+
+SUBDIRS = \
+ testProcessCrash \
+ testProcessEcho \
+ testProcessEcho2 \
+ testProcessEcho3 \
+ testProcessEnvironment \
+ testProcessLoopback \
+ testProcessNormal \
+ testProcessOutput \
+ testProcessDeadWhileReading \
+ testProcessEOF \
+ testProcessSpacesArgs/nospace.pro \
+ testExitCodes \
+ testSpaceInName \
+ testGuiProcess \
+ testDetached \
+ fileWriterProcess \
+ testSetWorkingDirectory
+
+!symbian: {
+SUBDIRS +=testProcessSpacesArgs/onespace.pro \
+ testProcessSpacesArgs/twospaces.pro \
+ testSoftExit
+}
+
+win32:!wince*:SUBDIRS+=testProcessEchoGui
+
+SUBDIRS += test
+
+
diff --git a/tests/auto/corelib/io/qprocess/test/test.pro b/tests/auto/corelib/io/qprocess/test/test.pro
new file mode 100644
index 0000000000..a91caddd2f
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/test/test.pro
@@ -0,0 +1,124 @@
+load(qttest_p4)
+
+SOURCES += ../tst_qprocess.cpp
+!wince*: {
+TARGET = ../tst_qprocess
+
+win32: {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_qprocess
+} else {
+ TARGET = ../../release/tst_qprocess
+ }
+}
+} else {
+ TARGET = tst_qprocess
+}
+
+
+
+QT = core
+
+!symbian: {
+ QT += network
+}
+
+embedded: QT += gui
+
+wince*: {
+
+ addFile_fileWriterProcess.files = $$OUT_PWD/../fileWriterProcess/fileWriterProcess.exe
+ addFile_fileWriterProcess.path = fileWriterProcess
+
+ addFile_testBatFiles.files = $$PWD/../testBatFiles/*
+ addFile_testBatFiles.path = testBatFiles
+
+ addFile_testDetached.files = $$OUT_PWD/../testDetached/testDetached.exe
+ addFile_testDetached.path = testDetached
+
+ addFile_testExitCodes.files = $$OUT_PWD/../testExitCodes/testExitCodes.exe
+ addFile_testExitCodes.path = testExitCodes
+
+ addFile_testGuiProcess.files = $$OUT_PWD/../testGuiProcess/testGuiProcess.exe
+ addFile_testGuiProcess.path = testGuiProcess
+
+ addFile_testProcessCrash.files = $$OUT_PWD/../testProcessCrash/testProcessCrash.exe
+ addFile_testProcessCrash.path = testProcessCrash
+
+ addFile_testProcessDeadWhileReading.files = $$OUT_PWD/../testProcessDeadWhileReading/testProcessDeadWhileReading.exe
+ addFile_testProcessDeadWhileReading.path = testProcessDeadWhileReading
+
+ addFile_testProcessEcho.files = $$OUT_PWD/../testProcessEcho/testProcessEcho.exe
+ addFile_testProcessEcho.path = testProcessEcho
+
+ addFile_testProcessEcho2.files = $$OUT_PWD/../testProcessEcho2/testProcessEcho2.exe
+ addFile_testProcessEcho2.path = testProcessEcho2
+
+ addFile_testProcessEcho3.files = $$OUT_PWD/../testProcessEcho3/testProcessEcho3.exe
+ addFile_testProcessEcho3.path = testProcessEcho3
+
+ addFile_testProcessEOF.files = $$OUT_PWD/../testProcessEOF/testProcessEOF.exe
+ addFile_testProcessEOF.path = testProcessEOF
+
+ addFile_testProcessLoopback.files = $$OUT_PWD/../testProcessLoopback/testProcessLoopback.exe
+ addFile_testProcessLoopback.path = testProcessLoopback
+
+ addFile_testProcessNormal.files = $$OUT_PWD/../testProcessNormal/testProcessNormal.exe
+ addFile_testProcessNormal.path = testProcessNormal
+
+ addFile_testProcessOutput.files = $$OUT_PWD/../testProcessOutput/testProcessOutput.exe
+ addFile_testProcessOutput.path = testProcessOutput
+
+ addFile_testProcessNoSpacesArgs.files = $$OUT_PWD/../testProcessSpacesArgs/nospace.exe
+ addFile_testProcessNoSpacesArgs.path = testProcessSpacesArgs
+
+ addFile_testProcessOneSpacesArgs.files = $$OUT_PWD/../testProcessSpacesArgs/"one space".exe
+ addFile_testProcessOneSpacesArgs.path = testProcessSpacesArgs
+
+ addFile_testProcessTwoSpacesArgs.files = $$OUT_PWD/../testProcessSpacesArgs/"two space s".exe
+ addFile_testProcessTwoSpacesArgs.path = testProcessSpacesArgs
+
+ addFile_testSoftExit.files = $$OUT_PWD/../testSoftExit/testSoftExit.exe
+ addFile_testSoftExit.path = testSoftExit
+
+ addFile_testSpaceInName.files = $$OUT_PWD/../"test Space In Name"/testSpaceInName.exe
+ addFile_testSpaceInName.path = "test Space In Name"
+
+
+ DEPLOYMENT += addFile_fileWriterProcess \
+ addFile_testBatFiles \
+ addFile_testDetached \
+ addFile_testExitCodes \
+ addFile_testGuiProcess \
+ addFile_testProcessCrash \
+ addFile_testProcessDeadWhileReading \
+ addFile_testProcessEcho \
+ addFile_testProcessEcho2 \
+ addFile_testProcessEcho3 \
+ addFile_testProcessEchoGui \
+ addFile_testProcessEOF \
+ addFile_testProcessLoopback \
+ addFile_testProcessNormal \
+ addFile_testProcessOutput \
+ addFile_testProcessNoSpacesArgs \
+ addFile_testProcessOneSpacesArgs \
+ addFile_testProcessTwoSpacesArgs \
+ addFile_testSoftExit \
+ addFile_testSpaceInName
+}
+
+symbian: {
+ binDep.files = \
+ fileWriterProcess.exe \
+ testDetached.exe \
+ testExitCodes.exe \
+ testProcessCrash.exe \
+ testProcessEcho.exe \
+ testProcessNormal.exe \
+ testProcessOutput.exe \
+ nospace.exe \
+ testSpaceInName.exe
+ binDep.path = \\sys\\bin
+
+ DEPLOYMENT += binDep
+}
diff --git a/tests/auto/corelib/io/qprocess/testBatFiles/simple.bat b/tests/auto/corelib/io/qprocess/testBatFiles/simple.bat
new file mode 100755
index 0000000000..900f7ae356
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testBatFiles/simple.bat
@@ -0,0 +1,2 @@
+@echo off
+echo Hello \ No newline at end of file
diff --git a/tests/auto/corelib/io/qprocess/testBatFiles/with space.bat b/tests/auto/corelib/io/qprocess/testBatFiles/with space.bat
new file mode 100755
index 0000000000..900f7ae356
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testBatFiles/with space.bat
@@ -0,0 +1,2 @@
+@echo off
+echo Hello \ No newline at end of file
diff --git a/tests/auto/corelib/io/qprocess/testDetached/main.cpp b/tests/auto/corelib/io/qprocess/testDetached/main.cpp
new file mode 100644
index 0000000000..5b4ee790b9
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testDetached/main.cpp
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QCoreApplication>
+#include <QDebug>
+#include <QStringList>
+#include <QFile>
+#include <QDir>
+
+#include <stdio.h>
+
+#if defined(Q_OS_UNIX)
+#include <sys/types.h>
+#include <unistd.h>
+#elif defined(Q_OS_WIN)
+#include <windows.h>
+#endif
+
+int main(int argc, char **argv)
+{
+ QCoreApplication app(argc, argv);
+
+ QStringList args = app.arguments();
+ if (args.count() != 2) {
+ fprintf(stderr, "Usage: testDetached filename.txt\n");
+ return 128;
+ }
+
+ QFile f(args.at(1));
+ if (!f.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) {
+ fprintf(stderr, "Cannot open %s for writing", qPrintable(f.fileName()));
+ return 1;
+ }
+
+ f.write(QDir::currentPath().toUtf8());
+ f.putChar('\n');
+#if defined(Q_OS_UNIX)
+ f.write(QByteArray::number(quint64(getpid())));
+#elif defined(Q_OS_WIN)
+ f.write(QByteArray::number(quint64(GetCurrentProcessId())));
+#endif
+ f.putChar('\n');
+
+ f.close();
+
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/testDetached/testDetached.pro b/tests/auto/corelib/io/qprocess/testDetached/testDetached.pro
new file mode 100644
index 0000000000..80a616b3e9
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testDetached/testDetached.pro
@@ -0,0 +1,10 @@
+SOURCES = main.cpp
+QT = core
+CONFIG += console
+CONFIG -= app_bundle
+INSTALLS =
+DESTDIR = ./
+
+symbian: {
+TARGET.EPOCSTACKSIZE =0x14000
+}
diff --git a/tests/auto/corelib/io/qprocess/testExitCodes/main.cpp b/tests/auto/corelib/io/qprocess/testExitCodes/main.cpp
new file mode 100644
index 0000000000..4d6a49e8f5
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testExitCodes/main.cpp
@@ -0,0 +1,48 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <stdlib.h>
+int main(int /* argc */, char **argv)
+{
+ return atoi(argv[1]);
+}
+
diff --git a/tests/auto/corelib/io/qprocess/testExitCodes/testExitCodes.pro b/tests/auto/corelib/io/qprocess/testExitCodes/testExitCodes.pro
new file mode 100644
index 0000000000..b08371804f
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testExitCodes/testExitCodes.pro
@@ -0,0 +1,5 @@
+SOURCES += main.cpp
+CONFIG -= qt app_bundle
+CONFIG += console
+
+DESTDIR = ./
diff --git a/tests/auto/corelib/io/qprocess/testGuiProcess/main.cpp b/tests/auto/corelib/io/qprocess/testGuiProcess/main.cpp
new file mode 100644
index 0000000000..90d4d4a962
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testGuiProcess/main.cpp
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtWidgets/QApplication>
+#include <QtWidgets/QLabel>
+#include <stdio.h>
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+
+ QLabel label("This process is just waiting to die");
+ label.show();
+
+ int c;
+ Q_UNUSED(c);
+ fgetc(stdin); // block until fed
+
+ qDebug("Process is running");
+
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/testGuiProcess/testGuiProcess.pro b/tests/auto/corelib/io/qprocess/testGuiProcess/testGuiProcess.pro
new file mode 100644
index 0000000000..b26a583dee
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testGuiProcess/testGuiProcess.pro
@@ -0,0 +1,5 @@
+SOURCES += main.cpp
+QT += widgets
+CONFIG += console
+DESTDIR = ./
+
diff --git a/tests/auto/corelib/io/qprocess/testProcessCrash/main.cpp b/tests/auto/corelib/io/qprocess/testProcessCrash/main.cpp
new file mode 100644
index 0000000000..e2ec87b3aa
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessCrash/main.cpp
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+struct Foo
+{
+ int i;
+};
+
+int main()
+{
+ *(char*)0 = 0;
+ Foo *f = 0;
+ return f->i;
+}
diff --git a/tests/auto/corelib/io/qprocess/testProcessCrash/testProcessCrash.pro b/tests/auto/corelib/io/qprocess/testProcessCrash/testProcessCrash.pro
new file mode 100644
index 0000000000..abd8167313
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessCrash/testProcessCrash.pro
@@ -0,0 +1,8 @@
+SOURCES = main.cpp
+CONFIG += console
+CONFIG -= qt app_bundle
+
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
diff --git a/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/main.cpp b/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/main.cpp
new file mode 100644
index 0000000000..9e285b5012
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/main.cpp
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <stdio.h>
+
+int main()
+{
+ for (int i=0; i<10240; i++)
+ fprintf(stdout, "%d dead while reading\n", i);
+ fflush(stdout);
+
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/testProcessDeadWhileReading.pro b/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/testProcessDeadWhileReading.pro
new file mode 100644
index 0000000000..2168ba5672
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/testProcessDeadWhileReading.pro
@@ -0,0 +1,10 @@
+SOURCES = main.cpp
+CONFIG -= qt
+CONFIG += console
+
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
+
+
diff --git a/tests/auto/corelib/io/qprocess/testProcessEOF/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEOF/main.cpp
new file mode 100644
index 0000000000..28de5c2f3a
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessEOF/main.cpp
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <stdio.h>
+#include <string.h>
+
+int main()
+{
+ char buf[32];
+ memset(buf, 0, sizeof(buf));
+
+ char *cptr = buf;
+ int c;
+ while (cptr != buf + 31 && (c = fgetc(stdin)) != EOF)
+ *cptr++ = (char) c;
+
+ printf("%s", buf);
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/testProcessEOF/testProcessEOF.pro b/tests/auto/corelib/io/qprocess/testProcessEOF/testProcessEOF.pro
new file mode 100644
index 0000000000..756bd23bb0
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessEOF/testProcessEOF.pro
@@ -0,0 +1,9 @@
+SOURCES = main.cpp
+CONFIG -= qt app_bundle
+CONFIG += console
+
+win32:!win32-g++*:!equals(TEMPLATE_PREFIX, "vc"):QMAKE_CXXFLAGS += /GS-
+DESTDIR = ./
+
+
+
diff --git a/tests/auto/corelib/io/qprocess/testProcessEcho/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEcho/main.cpp
new file mode 100644
index 0000000000..a7eedff56d
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho/main.cpp
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <stdio.h>
+
+int main()
+{
+#if defined(_WIN32_WCE) && defined(_X86_)
+ return 0;
+#else
+ int c;
+ while ((c = fgetc(stdin)) != -1) {
+ if (c == '\0')
+ break;
+ fputc(c, stdout);
+ fflush(stdout);
+ }
+ return 0;
+#endif
+}
diff --git a/tests/auto/corelib/io/qprocess/testProcessEcho/testProcessEcho.pro b/tests/auto/corelib/io/qprocess/testProcessEcho/testProcessEcho.pro
new file mode 100644
index 0000000000..a14c1fe163
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho/testProcessEcho.pro
@@ -0,0 +1,8 @@
+SOURCES = main.cpp
+CONFIG -= qt
+CONFIG += console
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
+
diff --git a/tests/auto/corelib/io/qprocess/testProcessEcho2/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEcho2/main.cpp
new file mode 100644
index 0000000000..1c18319bca
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho2/main.cpp
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <stdio.h>
+
+int main()
+{
+ int c;
+ while ((c = fgetc(stdin)) != -1) {
+ if (c == '\0')
+ break;
+ fputc(c, stdout);
+ fputc(c, stderr);
+ fflush(stdout);
+ fflush(stderr);
+ }
+
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/testProcessEcho2/testProcessEcho2.pro b/tests/auto/corelib/io/qprocess/testProcessEcho2/testProcessEcho2.pro
new file mode 100644
index 0000000000..d8a303a22b
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho2/testProcessEcho2.pro
@@ -0,0 +1,10 @@
+SOURCES = main.cpp
+CONFIG -= qt
+CONFIG += console
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
+
+
+
diff --git a/tests/auto/corelib/io/qprocess/testProcessEcho3/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEcho3/main.cpp
new file mode 100644
index 0000000000..62901a7789
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho3/main.cpp
@@ -0,0 +1,61 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <stdio.h>
+
+int main()
+{
+ int c;
+ for (;;) {
+ c = fgetc(stdin);
+ if (c == '\0')
+ break;
+ if (c != -1) {
+ fputc(c, stdout);
+ fputc(c, stderr);
+ fflush(stdout);
+ fflush(stderr);
+ }
+ }
+
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/testProcessEcho3/testProcessEcho3.pro b/tests/auto/corelib/io/qprocess/testProcessEcho3/testProcessEcho3.pro
new file mode 100644
index 0000000000..3b8f2fb0d7
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho3/testProcessEcho3.pro
@@ -0,0 +1,9 @@
+SOURCES = main.cpp
+CONFIG -= qt
+CONFIG += console
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
+
+
diff --git a/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp b/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp
new file mode 100644
index 0000000000..b8c2bd6abd
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <windows.h>
+
+int APIENTRY WinMain(HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine,
+ int nCmdShow)
+{
+
+ HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
+ HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
+
+ HANDLE hStderr = GetStdHandle(STD_ERROR_HANDLE);
+
+ for (;;) {
+
+ char c = 0;
+ DWORD read = 0;
+ if (!ReadFile(hStdin, &c, 1, &read, 0) || read == 0 || c == 'q' || c == '\0')
+ break;
+ DWORD wrote = 0;
+ WriteFile(hStdout, &c, 1, &wrote, 0);
+ WriteFile(hStderr, &c, 1, &wrote, 0);
+ }
+ return 0;
+} \ No newline at end of file
diff --git a/tests/auto/corelib/io/qprocess/testProcessEchoGui/testProcessEchoGui.pro b/tests/auto/corelib/io/qprocess/testProcessEchoGui/testProcessEchoGui.pro
new file mode 100644
index 0000000000..b3be74cbd1
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessEchoGui/testProcessEchoGui.pro
@@ -0,0 +1,13 @@
+win32 {
+ SOURCES = main_win.cpp
+ !win32-borland:LIBS += -lUser32
+}
+
+CONFIG -= qt
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
+
+
+
diff --git a/tests/auto/corelib/io/qprocess/testProcessEnvironment/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEnvironment/main.cpp
new file mode 100644
index 0000000000..17ed5c61dc
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessEnvironment/main.cpp
@@ -0,0 +1,61 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char **argv)
+{
+#if defined(_WIN32_WCE)
+ // no environment in Windows CE
+ return 0;
+#else
+ if (argc == 1)
+ return 1;
+
+ char *env = getenv(argv[1]);
+ if (env) {
+ printf("%s", env);
+ return 0;
+ }
+ return 1;
+#endif
+}
diff --git a/tests/auto/corelib/io/qprocess/testProcessEnvironment/testProcessEnvironment.pro b/tests/auto/corelib/io/qprocess/testProcessEnvironment/testProcessEnvironment.pro
new file mode 100644
index 0000000000..14ddae50f3
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessEnvironment/testProcessEnvironment.pro
@@ -0,0 +1,12 @@
+SOURCES = main.cpp
+CONFIG -= qt
+CONFIG += console
+DESTDIR = ./
+
+mac {
+ CONFIG -= app_bundle
+}
+
+# no install rule for application used by test
+INSTALLS =
+
diff --git a/tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp b/tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp
new file mode 100644
index 0000000000..6803518400
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <stdio.h>
+
+int main()
+{
+ char buffer[1024];
+ for (;;) {
+ size_t num = fread(buffer, 1, sizeof(buffer), stdin);
+ if (num <= 0)
+ break;
+ fwrite(buffer, num, 1, stdout);
+ fflush(stdout);
+ }
+
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro b/tests/auto/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro
new file mode 100644
index 0000000000..a14c1fe163
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro
@@ -0,0 +1,8 @@
+SOURCES = main.cpp
+CONFIG -= qt
+CONFIG += console
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
+
diff --git a/tests/auto/corelib/io/qprocess/testProcessNormal/main.cpp b/tests/auto/corelib/io/qprocess/testProcessNormal/main.cpp
new file mode 100644
index 0000000000..008a0a2430
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessNormal/main.cpp
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+int main()
+{
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/testProcessNormal/testProcessNormal.pro b/tests/auto/corelib/io/qprocess/testProcessNormal/testProcessNormal.pro
new file mode 100644
index 0000000000..3c6a595d85
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessNormal/testProcessNormal.pro
@@ -0,0 +1,9 @@
+SOURCES = main.cpp
+CONFIG += console
+CONFIG -= qt app_bundle
+
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
+
diff --git a/tests/auto/corelib/io/qprocess/testProcessOutput/main.cpp b/tests/auto/corelib/io/qprocess/testProcessOutput/main.cpp
new file mode 100644
index 0000000000..b648d1bec3
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessOutput/main.cpp
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <stdio.h>
+
+int main()
+{
+#if defined(__SYMBIAN32__)
+ // Printing to stdout messes up the out.txt, so open a file and print there.
+ FILE* file = fopen("c:\\logs\\qprocess_output_test.txt","w+");
+ for (int i=0; i<200; i++) {
+ fprintf(file, "%d -this is a number\n", i);
+ fflush(file);
+ }
+ fclose(file);
+#else
+# if defined(_WIN32_WCE)
+ for (int i=0; i<240; i++) {
+# else //fprintf Output is very slow on Windows CE/Symbian
+ for (int i=0; i<10240; i++) {
+# endif
+ fprintf(stdout, "%d -this is a number\n", i);
+ fflush(stderr);
+ }
+#endif
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/testProcessOutput/testProcessOutput.pro b/tests/auto/corelib/io/qprocess/testProcessOutput/testProcessOutput.pro
new file mode 100644
index 0000000000..3b8f2fb0d7
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessOutput/testProcessOutput.pro
@@ -0,0 +1,9 @@
+SOURCES = main.cpp
+CONFIG -= qt
+CONFIG += console
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
+
+
diff --git a/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/main.cpp b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/main.cpp
new file mode 100644
index 0000000000..39a0b3bac1
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/main.cpp
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <stdio.h>
+
+int main(int argc, char ** argv)
+{
+#if defined(__SYMBIAN32__) || defined(WINCE) || defined(_WIN32_WCE)
+# if defined(__SYMBIAN32__)
+ // Printing to stdout messes up the out.txt, so open a file and print there.
+ FILE* file = fopen("c:\\logs\\qprocess_args_test.txt","w+");
+# else
+ // No pipes on this "OS"
+ FILE* file = fopen("\\temp\\qprocess_args_test.txt","w+");
+# endif
+ for (int i = 0; i < argc; ++i) {
+ if (i)
+ fprintf(file, "|");
+ fprintf(file, argv[i]);
+ }
+ fclose(file);
+#else
+ for (int i = 0; i < argc; ++i) {
+ if (i)
+ printf("|");
+ printf("%s", argv[i]);
+ }
+#endif
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/nospace.pro b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/nospace.pro
new file mode 100644
index 0000000000..f55f02e425
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/nospace.pro
@@ -0,0 +1,9 @@
+SOURCES = main.cpp
+CONFIG -= qt app_bundle
+CONFIG += console
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
+
+
diff --git a/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/onespace.pro b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/onespace.pro
new file mode 100644
index 0000000000..2a56a95606
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/onespace.pro
@@ -0,0 +1,11 @@
+SOURCES = main.cpp
+CONFIG -= qt app_bundle
+CONFIG += console
+DESTDIR = ./
+
+TARGET = "one space"
+
+# no install rule for application used by test
+INSTALLS =
+
+
diff --git a/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/twospaces.pro b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/twospaces.pro
new file mode 100644
index 0000000000..d7c74a64c9
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/twospaces.pro
@@ -0,0 +1,12 @@
+SOURCES = main.cpp
+CONFIG -= qt app_bundle
+CONFIG += console
+DESTDIR = ./
+
+TARGET = "two space s"
+
+# no install rule for application used by test
+INSTALLS =
+
+
+
diff --git a/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/main.cpp b/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/main.cpp
new file mode 100644
index 0000000000..0035c6253a
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/main.cpp
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore>
+
+int main(int argc, char **argv)
+{
+ QCoreApplication app(argc, argv);
+ QByteArray currentPath = QDir::currentPath().toLocal8Bit();
+ fprintf(stdout, "%s", currentPath.constData());
+ app.exit();
+}
diff --git a/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro b/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro
new file mode 100644
index 0000000000..b723604171
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro
@@ -0,0 +1,7 @@
+SOURCES = main.cpp
+CONFIG += console
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
+
diff --git a/tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp b/tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp
new file mode 100644
index 0000000000..b17ab4d9a6
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <sys/types.h>
+#include <signal.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdio.h>
+
+int main()
+{
+ struct sigaction noaction;
+ memset(&noaction, 0, sizeof(noaction));
+ noaction.sa_handler = SIG_IGN;
+ ::sigaction(SIGTERM, &noaction, 0);
+
+ printf("Ready\n");
+ fflush(stdout);
+
+ for (int i = 0; i < 5; ++i)
+ sleep(1);
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp b/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp
new file mode 100644
index 0000000000..7bdf796926
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <windows.h>
+#include <stdio.h>
+
+int main()
+{
+ printf("Ready\n");
+ fflush(stdout);
+
+ MSG msg;
+ while (GetMessage(&msg, NULL, 0, 0)) {
+ if (msg.message == WM_CLOSE)
+ PostQuitMessage(0);
+ }
+
+ return int(msg.wParam);
+}
diff --git a/tests/auto/corelib/io/qprocess/testSoftExit/testSoftExit.pro b/tests/auto/corelib/io/qprocess/testSoftExit/testSoftExit.pro
new file mode 100644
index 0000000000..922035907a
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testSoftExit/testSoftExit.pro
@@ -0,0 +1,16 @@
+win32 {
+ SOURCES = main_win.cpp
+ !win32-borland:!wince*:LIBS += -lUser32
+}
+unix {
+ SOURCES = main_unix.cpp
+}
+
+CONFIG -= qt app_bundle
+CONFIG += console
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
+
+
diff --git a/tests/auto/corelib/io/qprocess/testSpaceInName/main.cpp b/tests/auto/corelib/io/qprocess/testSpaceInName/main.cpp
new file mode 100644
index 0000000000..3fadc68095
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testSpaceInName/main.cpp
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <stdio.h>
+
+int main()
+{
+ int c;
+ while ((c = fgetc(stdin)) != -1) {
+ if (c == '\0')
+ break;
+ fputc(c, stdout);
+ fflush(stdout);
+ }
+
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qprocess/testSpaceInName/testSpaceInName.pro b/tests/auto/corelib/io/qprocess/testSpaceInName/testSpaceInName.pro
new file mode 100644
index 0000000000..913e868d03
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/testSpaceInName/testSpaceInName.pro
@@ -0,0 +1,13 @@
+SOURCES = main.cpp
+CONFIG -= qt
+CONFIG += console
+DESTDIR = "../test Space In Name"
+
+mac {
+ CONFIG -= app_bundle
+}
+
+# no install rule for application used by test
+INSTALLS =
+
+
diff --git a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
new file mode 100644
index 0000000000..9873c3e357
--- /dev/null
+++ b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
@@ -0,0 +1,2472 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtCore/QProcess>
+#include <QtCore/QDir>
+#include <QtCore/QFile>
+#include <QtCore/QThread>
+#include <QtCore/QRegExp>
+#include <QtCore/QDebug>
+#include <QtCore/QMetaType>
+#if !defined(Q_OS_SYMBIAN)
+// Network test unnecessary?
+#include <QtNetwork/QHostInfo>
+#endif
+#include <stdlib.h>
+
+#ifdef QT_NO_PROCESS
+QTEST_NOOP_MAIN
+#else
+
+#if defined(Q_OS_WIN)
+#include <windows.h>
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+Q_DECLARE_METATYPE(QList<QProcess::ExitStatus>);
+Q_DECLARE_METATYPE(QProcess::ExitStatus);
+Q_DECLARE_METATYPE(QProcess::ProcessState);
+
+#define QPROCESS_VERIFY(Process, Fn) \
+{ \
+const bool ret = Process.Fn; \
+if (ret == false) \
+ qWarning("QProcess error: %d: %s", Process.error(), qPrintable(Process.errorString())); \
+QVERIFY(ret); \
+}
+
+class tst_QProcess : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QProcess();
+ virtual ~tst_QProcess();
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void getSetCheck();
+ void constructing();
+ void simpleStart();
+ void execute();
+ void startDetached();
+ void crashTest();
+ void crashTest2();
+ void echoTest_data();
+ void echoTest();
+ void echoTest2();
+ void echoTest_performance();
+#if defined Q_OS_WIN
+ void echoTestGui();
+ void batFiles_data();
+ void batFiles();
+#endif
+ void exitStatus_data();
+ void exitStatus();
+ void loopBackTest();
+ void readTimeoutAndThenCrash();
+ void waitForFinished();
+ void deadWhileReading();
+ void restartProcessDeadlock();
+ void closeWriteChannel();
+ void closeReadChannel();
+ void openModes();
+ void emitReadyReadOnlyWhenNewDataArrives();
+ void hardExit();
+ void softExit();
+ void softExitInSlots_data();
+ void softExitInSlots();
+ void mergedChannels();
+ void forwardedChannels();
+ void atEnd();
+ void atEnd2();
+ void processInAThread();
+ void processesInMultipleThreads();
+ void waitForFinishedWithTimeout();
+ void waitForReadyReadInAReadyReadSlot();
+ void waitForBytesWrittenInABytesWrittenSlot();
+ void spaceArgsTest_data();
+ void spaceArgsTest();
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ void nativeArguments();
+#endif
+ void exitCodeTest();
+ void setEnvironment_data();
+ void setEnvironment();
+ void setProcessEnvironment_data();
+ void setProcessEnvironment();
+ void systemEnvironment();
+ void spaceInName();
+ void lockupsInStartDetached();
+ void waitForReadyReadForNonexistantProcess();
+ void setStandardInputFile();
+ void setStandardOutputFile_data();
+ void setStandardOutputFile();
+ void setStandardOutputProcess_data();
+ void setStandardOutputProcess();
+ void removeFileWhileProcessIsRunning();
+ void fileWriterProcess();
+ void detachedWorkingDirectoryAndPid();
+ void switchReadChannels();
+ void setWorkingDirectory();
+ void startFinishStartFinish();
+ void invalidProgramString_data();
+ void invalidProgramString();
+ void onlyOneStartedSignal();
+
+ // keep these at the end, since they use lots of processes and sometimes
+ // caused obscure failures to occur in tests that followed them (esp. on the Mac)
+ void failToStart();
+ void failToStartWithWait();
+ void failToStartWithEventLoop();
+
+protected slots:
+ void readFromProcess();
+ void exitLoopSlot();
+ void restartProcess();
+ void waitForReadyReadInAReadyReadSlotSlot();
+ void waitForBytesWrittenInABytesWrittenSlotSlot();
+
+private:
+ QProcess *process;
+ qint64 bytesAvailable;
+};
+
+// Testing get/set functions
+void tst_QProcess::getSetCheck()
+{
+ QProcess obj1;
+ // ProcessChannelMode QProcess::readChannelMode()
+ // void QProcess::setReadChannelMode(ProcessChannelMode)
+ obj1.setReadChannelMode(QProcess::ProcessChannelMode(QProcess::SeparateChannels));
+ QCOMPARE(QProcess::ProcessChannelMode(QProcess::SeparateChannels), obj1.readChannelMode());
+ obj1.setReadChannelMode(QProcess::ProcessChannelMode(QProcess::MergedChannels));
+ QCOMPARE(QProcess::ProcessChannelMode(QProcess::MergedChannels), obj1.readChannelMode());
+ obj1.setReadChannelMode(QProcess::ProcessChannelMode(QProcess::ForwardedChannels));
+ QCOMPARE(QProcess::ProcessChannelMode(QProcess::ForwardedChannels), obj1.readChannelMode());
+
+ // ProcessChannel QProcess::readChannel()
+ // void QProcess::setReadChannel(ProcessChannel)
+ obj1.setReadChannel(QProcess::ProcessChannel(QProcess::StandardOutput));
+ QCOMPARE(QProcess::ProcessChannel(QProcess::StandardOutput), obj1.readChannel());
+ obj1.setReadChannel(QProcess::ProcessChannel(QProcess::StandardError));
+ QCOMPARE(QProcess::ProcessChannel(QProcess::StandardError), obj1.readChannel());
+}
+
+tst_QProcess::tst_QProcess()
+{
+}
+
+tst_QProcess::~tst_QProcess()
+{
+}
+
+void tst_QProcess::init()
+{
+#ifdef Q_OS_SYMBIAN
+ QString dirStr = QString::fromLatin1("c:\\logs");
+ QDir dir;
+ if (!dir.exists(dirStr))
+ dir.mkpath(dirStr);
+#endif
+}
+
+void tst_QProcess::cleanup()
+{
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::constructing()
+{
+ QProcess process;
+ QCOMPARE(process.readChannel(), QProcess::StandardOutput);
+ QCOMPARE(process.workingDirectory(), QString());
+ QCOMPARE(process.environment(), QStringList());
+ QCOMPARE(process.error(), QProcess::UnknownError);
+ QCOMPARE(process.state(), QProcess::NotRunning);
+ QCOMPARE(process.pid(), Q_PID(0));
+ QCOMPARE(process.readAllStandardOutput(), QByteArray());
+ QCOMPARE(process.readAllStandardError(), QByteArray());
+ QCOMPARE(process.canReadLine(), false);
+
+ // QIODevice
+ QCOMPARE(process.openMode(), QIODevice::NotOpen);
+ QVERIFY(!process.isOpen());
+ QVERIFY(!process.isReadable());
+ QVERIFY(!process.isWritable());
+ QVERIFY(process.isSequential());
+ QCOMPARE(process.pos(), qlonglong(0));
+ QCOMPARE(process.size(), qlonglong(0));
+ QVERIFY(process.atEnd());
+ QCOMPARE(process.bytesAvailable(), qlonglong(0));
+ QCOMPARE(process.bytesToWrite(), qlonglong(0));
+ QVERIFY(!process.errorString().isEmpty());
+
+ char c;
+ QCOMPARE(process.read(&c, 1), qlonglong(-1));
+ QCOMPARE(process.write(&c, 1), qlonglong(-1));
+
+ QProcess proc2;
+}
+
+void tst_QProcess::simpleStart()
+{
+ qRegisterMetaType<QProcess::ProcessState>("QProcess::ProcessState");
+
+ process = new QProcess;
+ QSignalSpy spy(process, SIGNAL(stateChanged(QProcess::ProcessState)));
+ connect(process, SIGNAL(readyRead()), this, SLOT(readFromProcess()));
+
+ /* valgrind dislike SUID binaries(those that have the `s'-flag set), which
+ * makes it fail to start the process. For this reason utilities like `ping' won't
+ * start, when the auto test is run through `valgrind'. */
+ process->start("testProcessNormal/testProcessNormal");
+ if (process->state() != QProcess::Starting)
+ QCOMPARE(process->state(), QProcess::Running);
+ QVERIFY2(process->waitForStarted(5000), qPrintable(process->errorString()));
+ QCOMPARE(process->state(), QProcess::Running);
+#if defined(Q_OS_WINCE)
+ // Note: This actually seems incorrect, it will only exit the while loop when finishing fails
+ while (process->waitForFinished(5000))
+ { }
+#elif defined(Q_OS_SYMBIAN)
+ QVERIFY(process->waitForFinished(5000));
+#else
+ while (process->waitForReadyRead(5000))
+ { }
+#endif
+ QCOMPARE(int(process->state()), int(QProcess::NotRunning));
+
+ delete process;
+ process = 0;
+
+ QCOMPARE(spy.count(), 3);
+ QCOMPARE(qVariantValue<QProcess::ProcessState>(spy.at(0).at(0)), QProcess::Starting);
+ QCOMPARE(qVariantValue<QProcess::ProcessState>(spy.at(1).at(0)), QProcess::Running);
+ QCOMPARE(qVariantValue<QProcess::ProcessState>(spy.at(2).at(0)), QProcess::NotRunning);
+}
+//-----------------------------------------------------------------------------
+void tst_QProcess::execute()
+{
+ QCOMPARE(QProcess::execute("testProcessNormal/testProcessNormal",
+ QStringList() << "arg1" << "arg2"), 0);
+ QCOMPARE(QProcess::execute("nonexistingexe"), -2);
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::startDetached()
+{
+ QProcess proc;
+ QVERIFY(proc.startDetached("testProcessNormal/testProcessNormal",
+ QStringList() << "arg1" << "arg2"));
+ QCOMPARE(QProcess::startDetached("nonexistingexe"), false);
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::readFromProcess()
+{
+ int lines = 0;
+ while (process->canReadLine()) {
+ ++lines;
+ QByteArray line = process->readLine();
+ }
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::crashTest()
+{
+ qRegisterMetaType<QProcess::ProcessState>("QProcess::ProcessState");
+#ifdef Q_OS_WIN
+ QSKIP("This test opens a crash dialog on Windows", SkipSingle);
+#endif
+ process = new QProcess;
+ QSignalSpy stateSpy(process, SIGNAL(stateChanged(QProcess::ProcessState)));
+ process->start("testProcessCrash/testProcessCrash");
+ QVERIFY(process->waitForStarted(5000));
+
+ qRegisterMetaType<QProcess::ProcessError>("QProcess::ProcessError");
+ qRegisterMetaType<QProcess::ProcessError>("QProcess::ExitStatus");
+
+ QSignalSpy spy(process, SIGNAL(error(QProcess::ProcessError)));
+ QSignalSpy spy2(process, SIGNAL(finished(int, QProcess::ExitStatus)));
+
+ QVERIFY(process->waitForFinished(30000));
+
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(*static_cast<const QProcess::ProcessError *>(spy.at(0).at(0).constData()), QProcess::Crashed);
+
+ QCOMPARE(spy2.count(), 1);
+ QCOMPARE(*static_cast<const QProcess::ExitStatus *>(spy2.at(0).at(1).constData()), QProcess::CrashExit);
+
+ QCOMPARE(process->exitStatus(), QProcess::CrashExit);
+
+ delete process;
+ process = 0;
+
+ QCOMPARE(stateSpy.count(), 3);
+ QCOMPARE(qVariantValue<QProcess::ProcessState>(stateSpy.at(0).at(0)), QProcess::Starting);
+ QCOMPARE(qVariantValue<QProcess::ProcessState>(stateSpy.at(1).at(0)), QProcess::Running);
+ QCOMPARE(qVariantValue<QProcess::ProcessState>(stateSpy.at(2).at(0)), QProcess::NotRunning);
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::crashTest2()
+{
+#ifdef Q_OS_WIN
+ QSKIP("This test opens a crash dialog on Windows", SkipSingle);
+#endif
+ process = new QProcess;
+ process->start("testProcessCrash/testProcessCrash");
+ QVERIFY(process->waitForStarted(5000));
+
+ qRegisterMetaType<QProcess::ProcessError>("QProcess::ProcessError");
+ qRegisterMetaType<QProcess::ProcessError>("QProcess::ExitStatus");
+
+ QSignalSpy spy(process, SIGNAL(error(QProcess::ProcessError)));
+ QSignalSpy spy2(process, SIGNAL(finished(int, QProcess::ExitStatus)));
+
+ QObject::connect(process, SIGNAL(finished(int)), this, SLOT(exitLoopSlot()));
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout())
+ QFAIL("Failed to detect crash : operation timed out");
+
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(*static_cast<const QProcess::ProcessError *>(spy.at(0).at(0).constData()), QProcess::Crashed);
+
+ QCOMPARE(spy2.count(), 1);
+ QCOMPARE(*static_cast<const QProcess::ExitStatus *>(spy2.at(0).at(1).constData()), QProcess::CrashExit);
+
+ QCOMPARE(process->exitStatus(), QProcess::CrashExit);
+
+ delete process;
+ process = 0;
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::echoTest_data()
+{
+ QTest::addColumn<QByteArray>("input");
+
+ QTest::newRow("1") << QByteArray("H");
+ QTest::newRow("2") << QByteArray("He");
+ QTest::newRow("3") << QByteArray("Hel");
+ QTest::newRow("4") << QByteArray("Hell");
+ QTest::newRow("5") << QByteArray("Hello");
+ QTest::newRow("100 bytes") << QByteArray(100, '@');
+ QTest::newRow("1000 bytes") << QByteArray(1000, '@');
+ QTest::newRow("10000 bytes") << QByteArray(10000, '@');
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::echoTest()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QFETCH(QByteArray, input);
+
+ process = new QProcess;
+ connect(process, SIGNAL(readyRead()), this, SLOT(exitLoopSlot()));
+
+#ifdef Q_OS_MAC
+ process->start("testProcessEcho/testProcessEcho.app");
+#else
+ process->start("testProcessEcho/testProcessEcho");
+#endif
+ QVERIFY(process->waitForStarted(5000));
+
+ process->write(input);
+
+ QTime stopWatch;
+ stopWatch.start();
+ do {
+ QVERIFY(process->isOpen());
+ QTestEventLoop::instance().enterLoop(2);
+ } while (stopWatch.elapsed() < 60000 && process->bytesAvailable() < input.size());
+ if (stopWatch.elapsed() >= 60000)
+ QFAIL("Timed out");
+
+ QByteArray message = process->readAll();
+ QCOMPARE(message.size(), input.size());
+
+ char *c1 = message.data();
+ char *c2 = input.data();
+ while (*c1 && *c2) {
+ if (*c1 != *c2)
+ QCOMPARE(*c1, *c2);
+ ++c1;
+ ++c2;
+ }
+ QCOMPARE(*c1, *c2);
+
+ process->write("", 1);
+
+ QVERIFY(process->waitForFinished(5000));
+
+
+ delete process;
+ process = 0;
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::exitLoopSlot()
+{
+ QTestEventLoop::instance().exitLoop();
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::echoTest2()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ process = new QProcess;
+ connect(process, SIGNAL(readyRead()), this, SLOT(exitLoopSlot()));
+
+#ifdef Q_OS_MAC
+ process->start("testProcessEcho2/testProcessEcho2.app");
+#else
+ process->start("testProcessEcho2/testProcessEcho2");
+#endif
+ QVERIFY(process->waitForStarted(5000));
+ QVERIFY(!process->waitForReadyRead(250));
+ QCOMPARE(process->error(), QProcess::Timedout);
+
+ process->write("Hello");
+ QSignalSpy spy1(process, SIGNAL(readyReadStandardOutput()));
+ QSignalSpy spy2(process, SIGNAL(readyReadStandardError()));
+
+ QTime stopWatch;
+ stopWatch.start();
+ forever {
+ QTestEventLoop::instance().enterLoop(1);
+ if (stopWatch.elapsed() >= 30000)
+ QFAIL("Timed out");
+ process->setReadChannel(QProcess::StandardOutput);
+ qint64 baso = process->bytesAvailable();
+
+ process->setReadChannel(QProcess::StandardError);
+ qint64 base = process->bytesAvailable();
+ if (baso == 5 && base == 5)
+ break;
+ }
+
+ QVERIFY(spy1.count() > 0);
+ QVERIFY(spy2.count() > 0);
+
+ QCOMPARE(process->readAllStandardOutput(), QByteArray("Hello"));
+ QCOMPARE(process->readAllStandardError(), QByteArray("Hello"));
+
+ process->write("", 1);
+ QVERIFY(process->waitForFinished(5000));
+
+ delete process;
+ process = 0;
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::echoTest_performance()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QProcess process;
+#ifdef Q_OS_MAC
+ process.start("testProcessLoopback/testProcessLoopback.app");
+#else
+ process.start("testProcessLoopback/testProcessLoopback");
+#endif
+
+ QByteArray array;
+ array.resize(1024 * 1024);
+ for (int j = 0; j < array.size(); ++j)
+ array[j] = 'a' + (j % 20);
+
+ QVERIFY(process.waitForStarted());
+
+ QTime stopWatch;
+ stopWatch.start();
+
+ qint64 totalBytes = 0;
+ QByteArray dump;
+ QSignalSpy readyReadSpy(&process, SIGNAL(readyRead()));
+ while (stopWatch.elapsed() < 2000) {
+ process.write(array);
+ while (process.bytesToWrite() > 0) {
+ int readCount = readyReadSpy.count();
+ QVERIFY(process.waitForBytesWritten(5000));
+ if (readyReadSpy.count() == readCount)
+ QVERIFY(process.waitForReadyRead(5000));
+ }
+
+ while (process.bytesAvailable() < array.size())
+ QVERIFY2(process.waitForReadyRead(5000), qPrintable(process.errorString()));
+ dump = process.readAll();
+ totalBytes += dump.size();
+ }
+
+ qDebug() << "Elapsed time:" << stopWatch.elapsed() << "ms;"
+ << "transfer rate:" << totalBytes / (1048.576) / stopWatch.elapsed()
+ << "MB/s";
+
+ for (int j = 0; j < array.size(); ++j)
+ QCOMPARE(char(dump.at(j)), char('a' + (j % 20)));
+
+ process.closeWriteChannel();
+ QVERIFY(process.waitForFinished());
+}
+
+#if defined Q_OS_WIN
+//-----------------------------------------------------------------------------
+void tst_QProcess::echoTestGui()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QProcess process;
+
+ process.start("testProcessEchoGui/testProcessEchoGui");
+
+
+ process.write("Hello");
+ process.write("q");
+
+ QVERIFY(process.waitForFinished(50000));
+
+ QCOMPARE(process.readAllStandardOutput(), QByteArray("Hello"));
+ QCOMPARE(process.readAllStandardError(), QByteArray("Hello"));
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::batFiles_data()
+{
+ QTest::addColumn<QString>("batFile");
+ QTest::addColumn<QByteArray>("output");
+
+ QTest::newRow("simple") << QString::fromLatin1("testBatFiles/simple.bat") << QByteArray("Hello");
+ QTest::newRow("with space") << QString::fromLatin1("testBatFiles/with space.bat") << QByteArray("Hello");
+}
+
+void tst_QProcess::batFiles()
+{
+#if defined(Q_OS_WINCE)
+ QSKIP("Batch files are not supported on Windows CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Batch files are not supported on Symbian", SkipAll);
+#endif
+ QFETCH(QString, batFile);
+ QFETCH(QByteArray, output);
+
+ QProcess proc;
+
+ proc.start(batFile, QStringList());
+
+ QVERIFY(proc.waitForFinished(5000));
+
+ QVERIFY(proc.bytesAvailable() > 0);
+
+ QVERIFY(proc.readAll().startsWith(output));
+}
+
+#endif
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::exitStatus_data()
+{
+ QTest::addColumn<QStringList>("processList");
+ QTest::addColumn<QList<QProcess::ExitStatus> >("exitStatus");
+
+ QTest::newRow("normal") << (QStringList() << "testProcessNormal/testProcessNormal")
+ << (QList<QProcess::ExitStatus>() << QProcess::NormalExit);
+ QTest::newRow("crash") << (QStringList() << "testProcessCrash/testProcessCrash")
+ << (QList<QProcess::ExitStatus>() << QProcess::CrashExit);
+
+ QTest::newRow("normal-crash") << (QStringList()
+ << "testProcessNormal/testProcessNormal"
+ << "testProcessCrash/testProcessCrash")
+ << (QList<QProcess::ExitStatus>()
+ << QProcess::NormalExit
+ << QProcess::CrashExit);
+ QTest::newRow("crash-normal") << (QStringList()
+ << "testProcessCrash/testProcessCrash"
+ << "testProcessNormal/testProcessNormal")
+ << (QList<QProcess::ExitStatus>()
+ << QProcess::CrashExit
+ << QProcess::NormalExit);
+}
+
+void tst_QProcess::exitStatus()
+{
+ process = new QProcess;
+ QFETCH(QStringList, processList);
+ QFETCH(QList<QProcess::ExitStatus>, exitStatus);
+
+#ifdef Q_OS_WIN
+ if (exitStatus.contains(QProcess::CrashExit))
+ QSKIP("This test opens a crash dialog on Windows", SkipSingle);
+#endif
+
+ QCOMPARE(exitStatus.count(), processList.count());
+ for (int i = 0; i < processList.count(); ++i) {
+ process->start(processList.at(i));
+ QVERIFY(process->waitForStarted(5000));
+ QVERIFY(process->waitForFinished(30000));
+
+ QCOMPARE(process->exitStatus(), exitStatus.at(i));
+ }
+
+ process->deleteLater();
+ process = 0;
+}
+//-----------------------------------------------------------------------------
+void tst_QProcess::loopBackTest()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ process = new QProcess;
+#ifdef Q_OS_MAC
+ process->start("testProcessEcho/testProcessEcho.app");
+#else
+ process->start("testProcessEcho/testProcessEcho");
+#endif
+ QVERIFY(process->waitForStarted(5000));
+
+ for (int i = 0; i < 100; ++i) {
+ process->write("Hello");
+ do {
+ QVERIFY(process->waitForReadyRead(5000));
+ } while (process->bytesAvailable() < 5);
+ QCOMPARE(process->readAll(), QByteArray("Hello"));
+ }
+
+ process->write("", 1);
+ QVERIFY(process->waitForFinished(5000));
+
+ delete process;
+ process = 0;
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::readTimeoutAndThenCrash()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ process = new QProcess;
+#ifdef Q_OS_MAC
+ process->start("testProcessEcho/testProcessEcho.app");
+#else
+ process->start("testProcessEcho/testProcessEcho");
+#endif
+ if (process->state() != QProcess::Starting)
+ QCOMPARE(process->state(), QProcess::Running);
+
+ QVERIFY(process->waitForStarted(5000));
+ QCOMPARE(process->state(), QProcess::Running);
+
+ QVERIFY(!process->waitForReadyRead(5000));
+ QCOMPARE(process->error(), QProcess::Timedout);
+
+ qRegisterMetaType<QProcess::ProcessError>("QProcess::ProcessError");
+ QSignalSpy spy(process, SIGNAL(error(QProcess::ProcessError)));
+
+ process->kill();
+
+ QVERIFY(process->waitForFinished(5000));
+ QCOMPARE(process->state(), QProcess::NotRunning);
+
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(*static_cast<const QProcess::ProcessError *>(spy.at(0).at(0).constData()), QProcess::Crashed);
+
+ delete process;
+ process = 0;
+}
+
+void tst_QProcess::waitForFinished()
+{
+ QProcess process;
+
+#ifdef Q_OS_MAC
+ process.start("testProcessOutput/testProcessOutput.app");
+#else
+ process.start("testProcessOutput/testProcessOutput");
+#endif
+
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QVERIFY(process.waitForFinished(5000));
+#else
+ QVERIFY(process.waitForFinished(30000));
+#endif
+ QCOMPARE(process.exitStatus(), QProcess::NormalExit);
+
+#if defined(Q_OS_SYMBIAN)
+ // Symbian test outputs to a file, so check that
+ FILE* file = fopen("c:\\logs\\qprocess_output_test.txt","r");
+ int retval = 0;
+ int count = 0;
+ while((int)(retval = fgetc(file) )!= EOF)
+ if (retval == '\n')
+ count++;
+ fclose(file);
+ QCOMPARE(count, 200);
+#else
+# if defined (Q_OS_WINCE)
+ QEXPECT_FAIL("", "Reading and writing to a process is not supported on Qt/CE", Continue);
+# endif
+ QString output = process.readAll();
+ QCOMPARE(output.count("\n"), 10*1024);
+#endif
+
+ process.start("blurdybloop");
+ QVERIFY(!process.waitForFinished());
+ QCOMPARE(process.error(), QProcess::FailedToStart);
+}
+
+
+void tst_QProcess::deadWhileReading()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QProcess process;
+
+#ifdef Q_OS_MAC
+ process.start("testProcessDeadWhileReading/testProcessDeadWhileReading.app");
+#else
+ process.start("testProcessDeadWhileReading/testProcessDeadWhileReading");
+#endif
+
+ QString output;
+
+ QVERIFY(process.waitForStarted(5000));
+ while (process.waitForReadyRead(5000))
+ output += process.readAll();
+
+ QCOMPARE(output.count("\n"), 10*1024);
+ process.waitForFinished();
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::restartProcessDeadlock()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ // The purpose of this test is to detect whether restarting a
+ // process in the finished() connected slot causes a deadlock
+ // because of the way QProcessManager uses its locks.
+ QProcess proc;
+ process = &proc;
+ connect(process, SIGNAL(finished(int)), this, SLOT(restartProcess()));
+
+#ifdef Q_OS_MAC
+ process->start("testProcessEcho/testProcessEcho.app");
+#else
+ process->start("testProcessEcho/testProcessEcho");
+#endif
+
+ QCOMPARE(process->write("", 1), qlonglong(1));
+ QVERIFY(process->waitForFinished(5000));
+
+ process->disconnect(SIGNAL(finished(int)));
+
+ QCOMPARE(process->write("", 1), qlonglong(1));
+ QVERIFY(process->waitForFinished(5000));
+}
+
+void tst_QProcess::restartProcess()
+{
+#ifdef Q_OS_MAC
+ process->start("testProcessEcho/testProcessEcho.app");
+#else
+ process->start("testProcessEcho/testProcessEcho");
+#endif
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::closeWriteChannel()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QProcess more;
+ more.start("testProcessEOF/testProcessEOF");
+
+ QVERIFY(more.waitForStarted(5000));
+ QVERIFY(!more.waitForReadyRead(250));
+ QCOMPARE(more.error(), QProcess::Timedout);
+
+ QVERIFY(more.write("Data to read") != -1);
+
+ QVERIFY(!more.waitForReadyRead(250));
+ QCOMPARE(more.error(), QProcess::Timedout);
+
+ more.closeWriteChannel();
+
+ QVERIFY(more.waitForReadyRead(5000));
+ QVERIFY(more.readAll().startsWith("Data to read"));
+
+ if (more.state() == QProcess::Running)
+ more.write("q");
+ QVERIFY(more.waitForFinished(5000));
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::closeReadChannel()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ for (int i = 0; i < 10; ++i) {
+ QProcess::ProcessChannel channel1 = QProcess::StandardOutput;
+ QProcess::ProcessChannel channel2 = QProcess::StandardError;
+
+ QProcess proc;
+#ifdef Q_OS_MAC
+ proc.start("testProcessEcho2/testProcessEcho2.app");
+#else
+ proc.start("testProcessEcho2/testProcessEcho2");
+#endif
+ QVERIFY(proc.waitForStarted(5000));
+ proc.closeReadChannel(i&1 ? channel2 : channel1);
+ proc.setReadChannel(i&1 ? channel2 : channel1);
+ proc.write("Data");
+
+ QVERIFY(!proc.waitForReadyRead(5000));
+ QVERIFY(proc.readAll().isEmpty());
+
+ proc.setReadChannel(i&1 ? channel1 : channel2);
+
+ while (proc.bytesAvailable() < 4 && proc.waitForReadyRead(5000))
+ { }
+
+ QCOMPARE(proc.readAll(), QByteArray("Data"));
+
+ proc.write("", 1);
+ QVERIFY(proc.waitForFinished(5000));
+ }
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::openModes()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QProcess proc;
+ QVERIFY(!proc.isOpen());
+ QVERIFY(proc.openMode() == QProcess::NotOpen);
+#ifdef Q_OS_MAC
+ proc.start("testProcessEcho3/testProcessEcho3.app");
+#else
+ proc.start("testProcessEcho3/testProcessEcho3");
+#endif
+ QVERIFY(proc.waitForStarted(5000));
+ QVERIFY(proc.isOpen());
+ QVERIFY(proc.openMode() == QProcess::ReadWrite);
+ QVERIFY(proc.isReadable());
+ QVERIFY(proc.isWritable());
+
+ proc.write("Data");
+
+ proc.closeWriteChannel();
+
+ QVERIFY(proc.isWritable());
+ QVERIFY(proc.openMode() == QProcess::ReadWrite);
+
+ while (proc.bytesAvailable() < 4 && proc.waitForReadyRead(5000))
+ { }
+
+ QCOMPARE(proc.readAll().constData(), QByteArray("Data").constData());
+
+ proc.closeReadChannel(QProcess::StandardOutput);
+
+ QVERIFY(proc.openMode() == QProcess::ReadWrite);
+ QVERIFY(proc.isReadable());
+
+ proc.closeReadChannel(QProcess::StandardError);
+
+ QVERIFY(proc.openMode() == QProcess::ReadWrite);
+ QVERIFY(proc.isReadable());
+
+ proc.close();
+ QVERIFY(!proc.isOpen());
+ QVERIFY(!proc.isReadable());
+ QVERIFY(!proc.isWritable());
+ QCOMPARE(proc.state(), QProcess::NotRunning);
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::emitReadyReadOnlyWhenNewDataArrives()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QProcess proc;
+ connect(&proc, SIGNAL(readyRead()), this, SLOT(exitLoopSlot()));
+ QSignalSpy spy(&proc, SIGNAL(readyRead()));
+
+#ifdef Q_OS_MAC
+ proc.start("testProcessEcho/testProcessEcho.app");
+#else
+ proc.start("testProcessEcho/testProcessEcho");
+#endif
+
+ QCOMPARE(spy.count(), 0);
+
+ proc.write("A");
+
+ QTestEventLoop::instance().enterLoop(5);
+ if (QTestEventLoop::instance().timeout())
+ QFAIL("Operation timed out");
+
+ QCOMPARE(spy.count(), 1);
+
+ QTestEventLoop::instance().enterLoop(1);
+ QVERIFY(QTestEventLoop::instance().timeout());
+ QVERIFY(!proc.waitForReadyRead(250));
+
+ QObject::disconnect(&proc, SIGNAL(readyRead()), 0, 0);
+ proc.write("B");
+ QVERIFY(proc.waitForReadyRead(5000));
+
+ proc.write("", 1);
+ QVERIFY(proc.waitForFinished(5000));
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::hardExit()
+{
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Killing started processes is not supported on Qt/Symbian due platform security", SkipAll);
+#endif
+ QProcess proc;
+
+#if defined(Q_OS_MAC)
+ proc.start("testProcessEcho/testProcessEcho.app");
+#elif defined(Q_OS_WINCE)
+ proc.start("testSoftExit/testSoftExit");
+#else
+ proc.start("testProcessEcho/testProcessEcho");
+#endif
+
+#ifndef Q_OS_WINCE
+ QVERIFY(proc.waitForStarted(5000));
+#else
+ QVERIFY(proc.waitForStarted(10000));
+#endif
+
+ proc.kill();
+
+ QVERIFY(proc.waitForFinished(5000));
+ QCOMPARE(int(proc.state()), int(QProcess::NotRunning));
+ QCOMPARE(int(proc.error()), int(QProcess::Crashed));
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::softExit()
+{
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Terminating started processes is not supported on Qt/Symbian due platform security", SkipAll);
+#endif
+ QProcess proc;
+
+ proc.start("testSoftExit/testSoftExit");
+
+ QVERIFY(proc.waitForStarted(10000));
+#if !defined(Q_OS_WINCE)
+ QVERIFY(proc.waitForReadyRead(10000));
+#endif
+
+ proc.terminate();
+
+ QVERIFY(proc.waitForFinished(10000));
+ QCOMPARE(int(proc.state()), int(QProcess::NotRunning));
+ QCOMPARE(int(proc.error()), int(QProcess::UnknownError));
+}
+
+class SoftExitProcess : public QProcess
+{
+ Q_OBJECT
+public:
+ bool waitedForFinished;
+
+ SoftExitProcess(int n) : waitedForFinished(false), n(n), killing(false)
+ {
+ connect(this, SIGNAL(finished(int, QProcess::ExitStatus)),
+ this, SLOT(finishedSlot(int, QProcess::ExitStatus)));
+
+ switch (n) {
+ case 0:
+ setReadChannelMode(QProcess::MergedChannels);
+ connect(this, SIGNAL(readyRead()), this, SLOT(terminateSlot()));
+ break;
+ case 1:
+ connect(this, SIGNAL(readyReadStandardOutput()),
+ this, SLOT(terminateSlot()));
+ break;
+ case 2:
+ connect(this, SIGNAL(readyReadStandardError()),
+ this, SLOT(terminateSlot()));
+ break;
+ case 3:
+ connect(this, SIGNAL(started()),
+ this, SLOT(terminateSlot()));
+ break;
+ case 4:
+ default:
+ connect(this, SIGNAL(stateChanged(QProcess::ProcessState)),
+ this, SLOT(terminateSlot()));
+ break;
+ }
+ }
+
+public slots:
+ void terminateSlot()
+ {
+ if (killing || (n == 4 && state() != Running)) {
+ // Don't try to kill the process before it is running - that can
+ // be hazardous, as the actual child process might not be running
+ // yet. Also, don't kill it "recursively".
+ return;
+ }
+ killing = true;
+ readAll();
+ terminate();
+ if ((waitedForFinished = waitForFinished(5000)) == false) {
+ kill();
+ if (state() != NotRunning)
+ waitedForFinished = waitForFinished(5000);
+ }
+ }
+
+ void finishedSlot(int, QProcess::ExitStatus)
+ {
+ waitedForFinished = true;
+ }
+
+private:
+ int n;
+ bool killing;
+};
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::softExitInSlots_data()
+{
+ QTest::addColumn<QString>("appName");
+
+#ifdef Q_OS_MAC
+ QTest::newRow("gui app") << "testGuiProcess/testGuiProcess.app";
+#else
+ QTest::newRow("gui app") << "testGuiProcess/testGuiProcess";
+#endif
+#ifdef Q_OS_MAC
+ QTest::newRow("console app") << "testProcessEcho2/testProcessEcho2.app";
+#else
+ QTest::newRow("console app") << "testProcessEcho2/testProcessEcho2";
+#endif
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::softExitInSlots()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QFETCH(QString, appName);
+
+ for (int i = 0; i < 5; ++i) {
+ SoftExitProcess proc(i);
+ proc.start(appName);
+ proc.write("OLEBOLE", 8); // include the \0
+ QTestEventLoop::instance().enterLoop(10);
+ QCOMPARE(proc.state(), QProcess::NotRunning);
+ QVERIFY(proc.waitedForFinished);
+ }
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::mergedChannels()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QProcess process;
+ process.setReadChannelMode(QProcess::MergedChannels);
+ QCOMPARE(process.readChannelMode(), QProcess::MergedChannels);
+
+#ifdef Q_OS_MAC
+ process.start("testProcessEcho2/testProcessEcho2.app");
+#else
+ process.start("testProcessEcho2/testProcessEcho2");
+#endif
+
+ QVERIFY(process.waitForStarted(5000));
+
+ for (int i = 0; i < 100; ++i) {
+ QCOMPARE(process.write("abc"), qlonglong(3));
+ while (process.bytesAvailable() < 6)
+ QVERIFY(process.waitForReadyRead(5000));
+ QCOMPARE(process.readAll(), QByteArray("aabbcc"));
+ }
+
+ process.closeWriteChannel();
+ QVERIFY(process.waitForFinished(5000));
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::forwardedChannels()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QProcess process;
+ process.setReadChannelMode(QProcess::ForwardedChannels);
+ QCOMPARE(process.readChannelMode(), QProcess::ForwardedChannels);
+
+#ifdef Q_OS_MAC
+ process.start("testProcessEcho2/testProcessEcho2.app");
+#else
+ process.start("testProcessEcho2/testProcessEcho2");
+#endif
+
+ QVERIFY(process.waitForStarted(5000));
+ QCOMPARE(process.write("forwarded\n"), qlonglong(10));
+ QVERIFY(!process.waitForReadyRead(250));
+ QCOMPARE(process.bytesAvailable(), qlonglong(0));
+
+ process.closeWriteChannel();
+ QVERIFY(process.waitForFinished(5000));
+}
+
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::atEnd()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QProcess process;
+
+#ifdef Q_OS_MAC
+ process.start("testProcessEcho/testProcessEcho.app");
+#else
+ process.start("testProcessEcho/testProcessEcho");
+#endif
+ process.write("abcdefgh\n");
+
+ while (process.bytesAvailable() < 8)
+ QVERIFY(process.waitForReadyRead(5000));
+
+ QTextStream stream(&process);
+ QVERIFY(!stream.atEnd());
+ QString tmp = stream.readLine();
+ QVERIFY(stream.atEnd());
+ QCOMPARE(tmp, QString::fromLatin1("abcdefgh"));
+
+ process.write("", 1);
+ QVERIFY(process.waitForFinished(5000));
+}
+
+class TestThread : public QThread
+{
+ Q_OBJECT
+public:
+ inline int code()
+ {
+ return exitCode;
+ }
+
+#if defined(Q_OS_SYMBIAN)
+ int serial;
+#endif
+
+protected:
+ inline void run()
+ {
+ exitCode = 90210;
+
+ QProcess process;
+ connect(&process, SIGNAL(finished(int)), this, SLOT(catchExitCode(int)),
+ Qt::DirectConnection);
+
+#ifdef Q_OS_MAC
+ process.start("testProcessEcho/testProcessEcho.app");
+#elif defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+ // WINSCW builds in Symbian do not allow multiple processes to load Qt libraries,
+ // so use just a simple process instead of testDetached.
+ process.start("testProcessNormal");
+#elif defined(Q_OS_SYMBIAN)
+ // testDetached used because it does something, but doesn't take too long.
+ QFile infoFile(QString("c:\\logs\\detinfo%1").arg(serial));
+ QStringList args;
+ args << infoFile.fileName();
+ process.start("testDetached", args);
+#else
+ process.start("testProcessEcho/testProcessEcho");
+#endif
+
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QCOMPARE(process.write("abc\0", 4), qint64(4));
+#endif
+ exitCode = exec();
+ }
+
+protected slots:
+ inline void catchExitCode(int exitCode)
+ {
+ this->exitCode = exitCode;
+ exit(exitCode);
+ }
+
+private:
+ int exitCode;
+};
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::processInAThread()
+{
+ for (int i = 0; i < 10; ++i) {
+ TestThread thread;
+ thread.start();
+ QVERIFY(thread.wait(10000));
+ QCOMPARE(thread.code(), 0);
+ }
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::processesInMultipleThreads()
+{
+#if defined(Q_OS_SYMBIAN)
+ int serialCounter = 0;
+#endif
+
+ for (int i = 0; i < 10; ++i) {
+ TestThread thread1;
+ TestThread thread2;
+ TestThread thread3;
+
+#if defined(Q_OS_SYMBIAN)
+ thread1.serial = serialCounter++;
+ thread2.serial = serialCounter++;
+ thread3.serial = serialCounter++;
+#endif
+ thread1.start();
+ thread2.start();
+ thread3.start();
+
+ QVERIFY(thread2.wait(10000));
+ QVERIFY(thread3.wait(10000));
+ QVERIFY(thread1.wait(10000));
+
+ QCOMPARE(thread1.code(), 0);
+ QCOMPARE(thread2.code(), 0);
+ QCOMPARE(thread3.code(), 0);
+ }
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::waitForFinishedWithTimeout()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+
+ process = new QProcess(this);
+
+#ifdef Q_OS_MAC
+ process->start("testProcessEcho/testProcessEcho.app");
+#elif defined(Q_OS_SYMBIAN)
+ process->start("testProcessOutput");
+#else
+ process->start("testProcessEcho/testProcessEcho");
+#endif
+
+#if defined(Q_OS_SYMBIAN)
+ QVERIFY(process->waitForStarted(50));
+ QVERIFY(!process->waitForFinished(1));
+#else
+ QVERIFY(process->waitForStarted(5000));
+ QVERIFY(!process->waitForFinished(1));
+
+ process->write("", 1);
+#endif
+
+ QVERIFY(process->waitForFinished());
+
+ delete process;
+ process = 0;
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::waitForReadyReadInAReadyReadSlot()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ process = new QProcess(this);
+ connect(process, SIGNAL(readyRead()), this, SLOT(waitForReadyReadInAReadyReadSlotSlot()));
+ connect(process, SIGNAL(finished(int)), this, SLOT(exitLoopSlot()));
+ bytesAvailable = 0;
+
+#ifdef Q_OS_MAC
+ process->start("testProcessEcho/testProcessEcho.app");
+#else
+ process->start("testProcessEcho/testProcessEcho");
+#endif
+ QVERIFY(process->waitForStarted(5000));
+
+ QSignalSpy spy(process, SIGNAL(readyRead()));
+ process->write("foo");
+ QTestEventLoop::instance().enterLoop(30);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(spy.count(), 1);
+
+ process->disconnect();
+ QVERIFY(process->waitForFinished(5000));
+ QVERIFY(process->bytesAvailable() > bytesAvailable);
+ delete process;
+ process = 0;
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::waitForReadyReadInAReadyReadSlotSlot()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ bytesAvailable = process->bytesAvailable();
+ process->write("bar", 4);
+ QVERIFY(process->waitForReadyRead(5000));
+ QTestEventLoop::instance().exitLoop();
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::waitForBytesWrittenInABytesWrittenSlot()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ process = new QProcess(this);
+ connect(process, SIGNAL(bytesWritten(qint64)), this, SLOT(waitForBytesWrittenInABytesWrittenSlotSlot()));
+ bytesAvailable = 0;
+
+#ifdef Q_OS_MAC
+ process->start("testProcessEcho/testProcessEcho.app");
+#else
+ process->start("testProcessEcho/testProcessEcho");
+#endif
+ QVERIFY(process->waitForStarted(5000));
+
+ qRegisterMetaType<qint64>("qint64");
+ QSignalSpy spy(process, SIGNAL(bytesWritten(qint64)));
+ process->write("f");
+ QTestEventLoop::instance().enterLoop(30);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(spy.count(), 1);
+ process->write("", 1);
+ process->disconnect();
+ QVERIFY(process->waitForFinished());
+ delete process;
+ process = 0;
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::waitForBytesWrittenInABytesWrittenSlotSlot()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ process->write("b");
+ QVERIFY(process->waitForBytesWritten(5000));
+ QTestEventLoop::instance().exitLoop();
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::spaceArgsTest_data()
+{
+ QTest::addColumn<QStringList>("args");
+ QTest::addColumn<QString>("stringArgs");
+
+ // arg1 | arg2
+ QTest::newRow("arg1 arg2") << (QStringList() << QString::fromLatin1("arg1") << QString::fromLatin1("arg2"))
+ << QString::fromLatin1("arg1 arg2");
+ // "arg1" | ar "g2
+ QTest::newRow("\"\"\"\"arg1\"\"\"\" \"ar \"\"\"g2\"") << (QStringList() << QString::fromLatin1("\"arg1\"") << QString::fromLatin1("ar \"g2"))
+ << QString::fromLatin1("\"\"\"\"arg1\"\"\"\" \"ar \"\"\"g2\"");
+ // ar g1 | a rg 2
+ QTest::newRow("\"ar g1\" \"a rg 2\"") << (QStringList() << QString::fromLatin1("ar g1") << QString::fromLatin1("a rg 2"))
+ << QString::fromLatin1("\"ar g1\" \"a rg 2\"");
+ // -lar g1 | -l"ar g2"
+ QTest::newRow("\"-lar g1\" \"-l\"\"\"ar g2\"\"\"\"") << (QStringList() << QString::fromLatin1("-lar g1") << QString::fromLatin1("-l\"ar g2\""))
+ << QString::fromLatin1("\"-lar g1\" \"-l\"\"\"ar g2\"\"\"\"");
+ // ar"g1
+ QTest::newRow("ar\"\"\"\"g1") << (QStringList() << QString::fromLatin1("ar\"g1"))
+ << QString::fromLatin1("ar\"\"\"\"g1");
+ // ar/g1
+ QTest::newRow("ar\\g1") << (QStringList() << QString::fromLatin1("ar\\g1"))
+ << QString::fromLatin1("ar\\g1");
+ // ar\g"1
+ QTest::newRow("ar\\g\"\"\"\"1") << (QStringList() << QString::fromLatin1("ar\\g\"1"))
+ << QString::fromLatin1("ar\\g\"\"\"\"1");
+ // arg\"1
+ QTest::newRow("arg\\\"\"\"1") << (QStringList() << QString::fromLatin1("arg\\\"1"))
+ << QString::fromLatin1("arg\\\"\"\"1");
+ // """"
+ QTest::newRow("\"\"\"\"\"\"\"\"\"\"\"\"") << (QStringList() << QString::fromLatin1("\"\"\"\""))
+ << QString::fromLatin1("\"\"\"\"\"\"\"\"\"\"\"\"");
+ // """" | "" ""
+ QTest::newRow("\"\"\"\"\"\"\"\"\"\"\"\" \"\"\"\"\"\"\" \"\"\"\"\"\"\"") << (QStringList() << QString::fromLatin1("\"\"\"\"") << QString::fromLatin1("\"\" \"\""))
+ << QString::fromLatin1("\"\"\"\"\"\"\"\"\"\"\"\" \"\"\"\"\"\"\" \"\"\"\"\"\"\"");
+ // "" ""
+ QTest::newRow("\"\"\"\"\"\"\" \"\" \"\"\"\"\"\"\" (bogus double quotes)") << (QStringList() << QString::fromLatin1("\"\" \"\""))
+ << QString::fromLatin1("\"\"\"\"\"\"\" \"\" \"\"\"\"\"\"\"");
+ // "" ""
+ QTest::newRow(" \"\"\"\"\"\"\" \"\" \"\"\"\"\"\"\" (bogus double quotes)") << (QStringList() << QString::fromLatin1("\"\" \"\""))
+ << QString::fromLatin1(" \"\"\"\"\"\"\" \"\" \"\"\"\"\"\"\" ");
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::spaceArgsTest()
+{
+ QFETCH(QStringList, args);
+ QFETCH(QString, stringArgs);
+
+ QStringList programs;
+ programs << QString::fromLatin1("testProcessSpacesArgs/nospace")
+#if defined(Q_OS_SYMBIAN)
+ ; // Symbian toolchain doesn't like exes with spaces in the name
+#else
+ << QString::fromLatin1("testProcessSpacesArgs/one space")
+ << QString::fromLatin1("testProcessSpacesArgs/two space s");
+#endif
+
+ process = new QProcess(this);
+
+ for (int i = 0; i < programs.size(); ++i) {
+ QString program = programs.at(i);
+ process->start(program, args);
+
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QVERIFY(process->waitForStarted(5000));
+ QVERIFY(process->waitForFinished(5000));
+#else
+ QVERIFY(process->waitForStarted(10000));
+ QVERIFY(process->waitForFinished(10000));
+#endif
+
+#if defined(Q_OS_SYMBIAN)
+ // Symbian test outputs to a file, so check that
+ FILE* file = fopen("c:\\logs\\qprocess_args_test.txt","r");
+ QVERIFY(file);
+ char buf[256];
+ fgets(buf, 256, file);
+ fclose(file);
+ QStringList actual = QString::fromLatin1(buf).split("|");
+#elif !defined(Q_OS_WINCE)
+ QStringList actual = QString::fromLatin1(process->readAll()).split("|");
+#endif
+#if !defined(Q_OS_WINCE)
+ QVERIFY(!actual.isEmpty());
+ // not interested in the program name, it might be different.
+ actual.removeFirst();
+
+ QCOMPARE(actual, args);
+#endif
+
+ if (program.contains(" "))
+ program = "\"" + program + "\"";
+
+ if (!stringArgs.isEmpty())
+ program += QString::fromLatin1(" ") + stringArgs;
+
+ process->start(program);
+
+ QVERIFY(process->waitForStarted(5000));
+ QVERIFY(process->waitForFinished(5000));
+
+#if defined(Q_OS_SYMBIAN)
+ // Symbian test outputs to a file, so check that
+ file = fopen("c:\\logs\\qprocess_args_test.txt","r");
+ QVERIFY(file);
+ fgets(buf, 256, file);
+ fclose(file);
+ actual = QString::fromLatin1(buf).split("|");
+#elif !defined(Q_OS_WINCE)
+ actual = QString::fromLatin1(process->readAll()).split("|");
+#endif
+#if !defined(Q_OS_WINCE)
+ QVERIFY(!actual.isEmpty());
+ // not interested in the program name, it might be different.
+ actual.removeFirst();
+
+ QCOMPARE(actual, args);
+#endif
+ }
+
+ delete process;
+ process = 0;
+}
+
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::nativeArguments()
+{
+ QProcess proc;
+
+ // This doesn't actually need special quoting, so it is pointless to use
+ // native arguments here, but that's not the point of this test.
+ proc.setNativeArguments("hello kitty, \"*\"!");
+
+ proc.start(QString::fromLatin1("testProcessSpacesArgs/nospace"), QStringList());
+
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QVERIFY(proc.waitForStarted(5000));
+ QVERIFY(proc.waitForFinished(5000));
+#else
+ QVERIFY(proc.waitForStarted(10000));
+ QVERIFY(proc.waitForFinished(10000));
+#endif
+
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE)
+ // Symbian test outputs to a file, so check that
+# ifdef Q_OS_SYMBIAN
+ FILE* file = fopen("c:\\logs\\qprocess_args_test.txt","r");
+# else
+ FILE* file = fopen("\\temp\\qprocess_args_test.txt","r");
+# endif
+ QVERIFY(file);
+ char buf[256];
+ fgets(buf, 256, file);
+ fclose(file);
+ QStringList actual = QString::fromLatin1(buf).split("|");
+#else
+ QStringList actual = QString::fromLatin1(proc.readAll()).split("|");
+#endif
+ QVERIFY(!actual.isEmpty());
+ // not interested in the program name, it might be different.
+ actual.removeFirst();
+ QStringList expected;
+#if defined(Q_OS_WINCE)
+ expected << "hello" << "kitty," << "\"*\"!"; // Weird, weird ...
+#else
+ expected << "hello" << "kitty," << "*!";
+#endif
+ QCOMPARE(actual, expected);
+}
+
+#endif
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::exitCodeTest()
+{
+#if defined(Q_OS_SYMBIAN)
+ // Kernel will run out of process handles on some hw, as there is some
+ // delay before they are recycled, so limit the amount of processes.
+ for (int i = 0; i < 50; ++i) {
+#else
+ for (int i = 0; i < 255; ++i) {
+#endif
+ QProcess process;
+ process.start("testExitCodes/testExitCodes " + QString::number(i));
+ QVERIFY(process.waitForFinished(5000));
+ QCOMPARE(process.exitCode(), i);
+ QCOMPARE(process.error(), QProcess::UnknownError);
+ }
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::failToStart()
+{
+ qRegisterMetaType<QProcess::ProcessError>("QProcess::ProcessError");
+ qRegisterMetaType<QProcess::ExitStatus>("QProcess::ExitStatus");
+ qRegisterMetaType<QProcess::ProcessState>("QProcess::ProcessState");
+
+ QProcess process;
+ QSignalSpy stateSpy(&process, SIGNAL(stateChanged(QProcess::ProcessState)));
+ QSignalSpy errorSpy(&process, SIGNAL(error(QProcess::ProcessError)));
+ QSignalSpy finishedSpy(&process, SIGNAL(finished(int)));
+ QSignalSpy finishedSpy2(&process, SIGNAL(finished(int, QProcess::ExitStatus)));
+
+// Mac OS X and HP-UX have a really low default process limit (~100), so spawning
+// to many processes here will cause test failures later on.
+#if defined Q_OS_HPUX
+ const int attempts = 15;
+#elif defined Q_OS_MAC
+ const int attempts = 15;
+#else
+ const int attempts = 50;
+#endif
+
+ for (int j = 0; j < 8; ++j) {
+ for (int i = 0; i < attempts; ++i) {
+ QCOMPARE(errorSpy.count(), j * attempts + i);
+ process.start("/blurp");
+
+ switch (j) {
+ case 0:
+ case 1:
+ QVERIFY(!process.waitForStarted());
+ break;
+ case 2:
+ case 3:
+ QVERIFY(!process.waitForFinished());
+ break;
+ case 4:
+ case 5:
+ QVERIFY(!process.waitForReadyRead());
+ break;
+ case 6:
+ case 7:
+ default:
+ QVERIFY(!process.waitForBytesWritten());
+ break;
+ }
+
+ QCOMPARE(process.error(), QProcess::FailedToStart);
+ QCOMPARE(errorSpy.count(), j * attempts + i + 1);
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(finishedSpy2.count(), 0);
+
+ int it = j * attempts + i + 1;
+
+ QCOMPARE(stateSpy.count(), it * 2);
+ QCOMPARE(qVariantValue<QProcess::ProcessState>(stateSpy.at(it * 2 - 2).at(0)), QProcess::Starting);
+ QCOMPARE(qVariantValue<QProcess::ProcessState>(stateSpy.at(it * 2 - 1).at(0)), QProcess::NotRunning);
+ }
+ }
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::failToStartWithWait()
+{
+ qRegisterMetaType<QProcess::ProcessError>("QProcess::ProcessError");
+ qRegisterMetaType<QProcess::ExitStatus>("QProcess::ExitStatus");
+
+ QProcess process;
+ QEventLoop loop;
+ QSignalSpy errorSpy(&process, SIGNAL(error(QProcess::ProcessError)));
+ QSignalSpy finishedSpy(&process, SIGNAL(finished(int)));
+ QSignalSpy finishedSpy2(&process, SIGNAL(finished(int, QProcess::ExitStatus)));
+
+ for (int i = 0; i < 50; ++i) {
+ process.start("/blurp", QStringList() << "-v" << "-debug");
+ process.waitForStarted();
+
+ QCOMPARE(process.error(), QProcess::FailedToStart);
+ QCOMPARE(errorSpy.count(), i + 1);
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(finishedSpy2.count(), 0);
+ }
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::failToStartWithEventLoop()
+{
+ qRegisterMetaType<QProcess::ProcessError>("QProcess::ProcessError");
+ qRegisterMetaType<QProcess::ExitStatus>("QProcess::ExitStatus");
+
+ QProcess process;
+ QEventLoop loop;
+ QSignalSpy errorSpy(&process, SIGNAL(error(QProcess::ProcessError)));
+ QSignalSpy finishedSpy(&process, SIGNAL(finished(int)));
+ QSignalSpy finishedSpy2(&process, SIGNAL(finished(int, QProcess::ExitStatus)));
+
+ // The error signal may be emitted before start() returns
+ connect(&process, SIGNAL(error(QProcess::ProcessError)), &loop, SLOT(quit()), Qt::QueuedConnection);
+
+
+ for (int i = 0; i < 50; ++i) {
+ process.start("/blurp", QStringList() << "-v" << "-debug");
+
+ loop.exec();
+
+ QCOMPARE(process.error(), QProcess::FailedToStart);
+ QCOMPARE(errorSpy.count(), i + 1);
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(finishedSpy2.count(), 0);
+ }
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::removeFileWhileProcessIsRunning()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QFile file("removeFile.txt");
+ QVERIFY(file.open(QFile::WriteOnly));
+
+ QProcess process;
+#ifdef Q_OS_MAC
+ process.start("testProcessEcho/testProcessEcho.app");
+#else
+ process.start("testProcessEcho/testProcessEcho");
+#endif
+
+ QVERIFY(process.waitForStarted(5000));
+
+ QVERIFY(file.remove());
+
+ process.write("", 1);
+ QVERIFY(process.waitForFinished(5000));
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::setEnvironment_data()
+{
+ QTest::addColumn<QString>("name");
+ QTest::addColumn<QString>("value");
+
+ QTest::newRow("setting-empty") << "tst_QProcess" << "";
+ QTest::newRow("setting") << "tst_QProcess" << "value";
+
+#ifdef Q_OS_WIN
+ QTest::newRow("unsetting") << "PROMPT" << QString();
+ QTest::newRow("overriding") << "PROMPT" << "value";
+#else
+ QTest::newRow("unsetting") << "PATH" << QString();
+ QTest::newRow("overriding") << "PATH" << "value";
+#endif
+}
+
+void tst_QProcess::setEnvironment()
+{
+#if defined (Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("OS doesn't support environment variables", SkipAll);
+#endif
+
+ // make sure our environment variables are correct
+ QVERIFY(qgetenv("tst_QProcess").isEmpty());
+ QVERIFY(!qgetenv("PATH").isEmpty());
+#ifdef Q_OS_WIN
+ QVERIFY(!qgetenv("PROMPT").isEmpty());
+#endif
+
+ QFETCH(QString, name);
+ QFETCH(QString, value);
+ QString executable = QDir::currentPath() + "/testProcessEnvironment/testProcessEnvironment";
+
+ {
+ QProcess process;
+ QStringList environment = QProcess::systemEnvironment();
+ if (value.isNull()) {
+ int pos;
+ QRegExp rx(name + "=.*");
+#ifdef Q_OS_WIN
+ rx.setCaseSensitivity(Qt::CaseInsensitive);
+#endif
+ while ((pos = environment.indexOf(rx)) != -1)
+ environment.removeAt(pos);
+ } else {
+ environment.append(name + '=' + value);
+ }
+ process.setEnvironment(environment);
+ process.start(executable, QStringList() << name);
+
+ QVERIFY(process.waitForFinished());
+ if (value.isNull())
+ QCOMPARE(process.exitCode(), 1);
+ else if (!value.isEmpty())
+ QCOMPARE(process.exitCode(), 0);
+
+ QCOMPARE(process.readAll(), value.toLocal8Bit());
+ }
+
+ // re-do the test but set the environment twice, to make sure
+ // that the latter addition overrides
+ // this test doesn't make sense in unsetting
+ if (!value.isNull()) {
+ QProcess process;
+ QStringList environment = QProcess::systemEnvironment();
+ environment.prepend(name + "=This is not the right value");
+ environment.append(name + '=' + value);
+ process.setEnvironment(environment);
+ process.start(executable, QStringList() << name);
+
+ QVERIFY(process.waitForFinished());
+ if (!value.isEmpty())
+ QCOMPARE(process.exitCode(), 0);
+
+ QCOMPARE(process.readAll(), value.toLocal8Bit());
+ }
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::setProcessEnvironment_data()
+{
+ setEnvironment_data();
+}
+
+void tst_QProcess::setProcessEnvironment()
+{
+#if defined (Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("OS doesn't support environment variables", SkipAll);
+#endif
+
+ // make sure our environment variables are correct
+ QVERIFY(qgetenv("tst_QProcess").isEmpty());
+ QVERIFY(!qgetenv("PATH").isEmpty());
+#ifdef Q_OS_WIN
+ QVERIFY(!qgetenv("PROMPT").isEmpty());
+#endif
+
+ QFETCH(QString, name);
+ QFETCH(QString, value);
+ QString executable = QDir::currentPath() + "/testProcessEnvironment/testProcessEnvironment";
+
+ {
+ QProcess process;
+ QProcessEnvironment environment = QProcessEnvironment::systemEnvironment();
+ if (value.isNull())
+ environment.remove(name);
+ else
+ environment.insert(name, value);
+ process.setProcessEnvironment(environment);
+ process.start(executable, QStringList() << name);
+
+ QVERIFY(process.waitForFinished());
+ if (value.isNull())
+ QCOMPARE(process.exitCode(), 1);
+ else if (!value.isEmpty())
+ QCOMPARE(process.exitCode(), 0);
+
+ QCOMPARE(process.readAll(), value.toLocal8Bit());
+ }
+}
+//-----------------------------------------------------------------------------
+void tst_QProcess::systemEnvironment()
+{
+#if defined (Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ // there is no concept of system variables on Windows CE as there is no console
+ QVERIFY(QProcess::systemEnvironment().isEmpty());
+ QVERIFY(QProcessEnvironment::systemEnvironment().isEmpty());
+#else
+ QVERIFY(!QProcess::systemEnvironment().isEmpty());
+ QVERIFY(!QProcessEnvironment::systemEnvironment().isEmpty());
+
+ QVERIFY(QProcessEnvironment::systemEnvironment().contains("PATH"));
+ QVERIFY(!QProcess::systemEnvironment().filter(QRegExp("^PATH=", Qt::CaseInsensitive)).isEmpty());
+#endif
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::spaceInName()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+ QProcess process;
+ process.start("test Space In Name/testSpaceInName", QStringList());
+ QVERIFY(process.waitForStarted());
+ process.write("", 1);
+ QVERIFY(process.waitForFinished());
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::lockupsInStartDetached()
+{
+#if !defined(Q_OS_SYMBIAN)
+ // Check that QProcess doesn't cause a lock up at this program's
+ // exit if a thread was started and we tried to run a program that
+ // doesn't exist. Before Qt 4.2, this used to lock up on Unix due
+ // to calling ::exit instead of ::_exit if execve failed.
+
+ QHostInfo::lookupHost(QString("something.invalid"), 0, 0);
+ QProcess::execute("yjhbrty");
+ QProcess::startDetached("yjhbrty");
+#endif
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::atEnd2()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QProcess process;
+
+#ifdef Q_OS_MAC
+ process.start("testProcessEcho/testProcessEcho.app");
+#else
+ process.start("testProcessEcho/testProcessEcho");
+#endif
+ process.write("Foo\nBar\nBaz\nBodukon\nHadukan\nTorwukan\nend\n");
+ process.putChar('\0');
+ QVERIFY(process.waitForFinished());
+ QList<QByteArray> lines;
+ while (!process.atEnd()) {
+ lines << process.readLine();
+ }
+ QCOMPARE(lines.size(), 7);
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::waitForReadyReadForNonexistantProcess()
+{
+ // This comes from task 108968
+ // Start a program that doesn't exist, process events and then try to waitForReadyRead
+ qRegisterMetaType<QProcess::ProcessError>("QProcess::ProcessError");
+ qRegisterMetaType<QProcess::ExitStatus>("QProcess::ExitStatus");
+
+ QProcess process;
+ QSignalSpy errorSpy(&process, SIGNAL(error(QProcess::ProcessError)));
+ QSignalSpy finishedSpy1(&process, SIGNAL(finished(int)));
+ QSignalSpy finishedSpy2(&process, SIGNAL(finished(int, QProcess::ExitStatus)));
+ QVERIFY(!process.waitForReadyRead()); // used to crash
+ process.start("doesntexist");
+ QVERIFY(!process.waitForReadyRead());
+ QCOMPARE(errorSpy.count(), 1);
+ QCOMPARE(errorSpy.at(0).at(0).toInt(), 0);
+ QCOMPARE(finishedSpy1.count(), 0);
+ QCOMPARE(finishedSpy2.count(), 0);
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::setStandardInputFile()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ static const char data[] = "A bunch\1of\2data\3\4\5\6\7...";
+ QProcess process;
+ QFile file("data");
+
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ file.write(data, sizeof data);
+ file.close();
+
+ process.setStandardInputFile("data");
+#ifdef Q_OS_MAC
+ process.start("testProcessEcho/testProcessEcho.app");
+#else
+ process.start("testProcessEcho/testProcessEcho");
+#endif
+
+ QPROCESS_VERIFY(process, waitForFinished());
+ QByteArray all = process.readAll();
+ QCOMPARE(all.size(), int(sizeof data) - 1); // testProcessEcho drops the ending \0
+ QVERIFY(all == data);
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::setStandardOutputFile_data()
+{
+ QTest::addColumn<int>("channelToTest");
+ QTest::addColumn<int>("_channelMode");
+ QTest::addColumn<bool>("append");
+
+ QTest::newRow("stdout-truncate") << int(QProcess::StandardOutput)
+ << int(QProcess::SeparateChannels)
+ << false;
+ QTest::newRow("stdout-append") << int(QProcess::StandardOutput)
+ << int(QProcess::SeparateChannels)
+ << true;
+
+ QTest::newRow("stderr-truncate") << int(QProcess::StandardError)
+ << int(QProcess::SeparateChannels)
+ << false;
+ QTest::newRow("stderr-append") << int(QProcess::StandardError)
+ << int(QProcess::SeparateChannels)
+ << true;
+
+ QTest::newRow("merged-truncate") << int(QProcess::StandardOutput)
+ << int(QProcess::MergedChannels)
+ << false;
+ QTest::newRow("merged-append") << int(QProcess::StandardOutput)
+ << int(QProcess::MergedChannels)
+ << true;
+}
+
+void tst_QProcess::setStandardOutputFile()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ static const char data[] = "Original data. ";
+ static const char testdata[] = "Test data.";
+
+ QFETCH(int, channelToTest);
+ QFETCH(int, _channelMode);
+ QFETCH(bool, append);
+
+ QProcess::ProcessChannelMode channelMode = QProcess::ProcessChannelMode(_channelMode);
+ QIODevice::OpenMode mode = append ? QIODevice::Append : QIODevice::Truncate;
+
+ // create the destination file with data
+ QFile file("data");
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ file.write(data, sizeof data - 1);
+ file.close();
+
+ // run the process
+ QProcess process;
+ process.setReadChannelMode(channelMode);
+ if (channelToTest == QProcess::StandardOutput)
+ process.setStandardOutputFile("data", mode);
+ else
+ process.setStandardErrorFile("data", mode);
+
+#ifdef Q_OS_MAC
+ process.start("testProcessEcho2/testProcessEcho2.app");
+#else
+ process.start("testProcessEcho2/testProcessEcho2");
+#endif
+ process.write(testdata, sizeof testdata);
+ QPROCESS_VERIFY(process,waitForFinished());
+
+ // open the file again and verify the data
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QByteArray all = file.readAll();
+ file.close();
+
+ int expectedsize = sizeof testdata - 1;
+ if (mode == QIODevice::Append) {
+ QVERIFY(all.startsWith(data));
+ expectedsize += sizeof data - 1;
+ }
+ if (channelMode == QProcess::MergedChannels) {
+ expectedsize += sizeof testdata - 1;
+ } else {
+ QVERIFY(all.endsWith(testdata));
+ }
+
+ QCOMPARE(all.size(), expectedsize);
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::setStandardOutputProcess_data()
+{
+ QTest::addColumn<bool>("merged");
+ QTest::newRow("separate") << false;
+ QTest::newRow("merged") << true;
+}
+
+void tst_QProcess::setStandardOutputProcess()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QProcess source;
+ QProcess sink;
+
+ QFETCH(bool, merged);
+ source.setReadChannelMode(merged ? QProcess::MergedChannels : QProcess::SeparateChannels);
+ source.setStandardOutputProcess(&sink);
+
+#ifdef Q_OS_MAC
+ source.start("testProcessEcho2/testProcessEcho2.app");
+ sink.start("testProcessEcho2/testProcessEcho2.app");
+#else
+ source.start("testProcessEcho2/testProcessEcho2");
+ sink.start("testProcessEcho2/testProcessEcho2");
+#endif
+
+ QByteArray data("Hello, World");
+ source.write(data);
+ source.closeWriteChannel();
+ QPROCESS_VERIFY(source, waitForFinished());
+ QPROCESS_VERIFY(sink, waitForFinished());
+ QByteArray all = sink.readAll();
+
+ if (!merged)
+ QCOMPARE(all, data);
+ else
+ QCOMPARE(all, QByteArray("HHeelllloo,, WWoorrlldd"));
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::fileWriterProcess()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+
+ QString stdinStr;
+ for (int i = 0; i < 5000; ++i)
+ stdinStr += QString::fromLatin1("%1 -- testing testing 1 2 3\n").arg(i);
+
+ QTime stopWatch;
+ stopWatch.start();
+ do {
+ QFile::remove("fileWriterProcess.txt");
+ QProcess process;
+ process.start("fileWriterProcess/fileWriterProcess",
+ QIODevice::ReadWrite | QIODevice::Text);
+ process.write(stdinStr.toLatin1());
+ process.closeWriteChannel();
+ while (process.bytesToWrite()) {
+ QVERIFY(stopWatch.elapsed() < 3500);
+ QVERIFY(process.waitForBytesWritten(2000));
+ }
+ QVERIFY(process.waitForFinished());
+ QCOMPARE(QFile("fileWriterProcess.txt").size(), qint64(stdinStr.size()));
+ } while (stopWatch.elapsed() < 3000);
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::detachedWorkingDirectoryAndPid()
+{
+#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+ // WINSCW builds in Symbian do not allow multiple processes to load Qt libraries,
+ // so this test must be skipped.
+ QSKIP("Multiple processes loading Qt are not allowed in Qt/Symbian emulator.", SkipAll);
+#endif
+ qint64 pid;
+
+#ifdef Q_OS_WINCE
+ QTest::qSleep(1000);
+#endif
+
+#if defined(Q_OS_SYMBIAN)
+ // Symbian has no working directory support, so use logs dir as a shared directory
+ QFile infoFile(QLatin1String("c:\\logs\\detachedinfo.txt"));
+#else
+ QFile infoFile(QDir::currentPath() + QLatin1String("/detachedinfo.txt"));
+#endif
+ infoFile.remove();
+
+ QString workingDir = QDir::currentPath() + "/testDetached";
+
+#ifndef Q_OS_SYMBIAN
+ QVERIFY(QFile::exists(workingDir));
+#endif
+
+ QStringList args;
+ args << infoFile.fileName();
+ QVERIFY(QProcess::startDetached(QDir::currentPath() + QLatin1String("/testDetached/testDetached"), args, workingDir, &pid));
+
+ QFileInfo fi(infoFile);
+ fi.setCaching(false);
+ //The guard counter ensures the test does not hang if the sub process fails.
+ //Instead, the test will fail when trying to open & verify the sub process output file.
+ for (int guard = 0; guard < 100 && fi.size() == 0; guard++) {
+ QTest::qSleep(100);
+ }
+
+ QVERIFY(infoFile.open(QIODevice::ReadOnly | QIODevice::Text));
+ QString actualWorkingDir = QString::fromUtf8(infoFile.readLine());
+ actualWorkingDir.chop(1); // strip off newline
+ QByteArray processIdString = infoFile.readLine();
+ processIdString.chop(1);
+ infoFile.close();
+ infoFile.remove();
+
+ bool ok = false;
+ qint64 actualPid = processIdString.toLongLong(&ok);
+ QVERIFY(ok);
+
+#if defined(Q_OS_SYMBIAN)
+ QEXPECT_FAIL("", "Working directory is not supported on Qt/symbian", Continue);
+#endif
+ QCOMPARE(actualWorkingDir, workingDir);
+ QCOMPARE(actualPid, pid);
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::switchReadChannels()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Reading and writing to a process is not supported on Qt/CE", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Reading and writing to a process is not supported on Qt/Symbian", SkipAll);
+#endif
+ const char data[] = "ABCD";
+
+ QProcess process;
+
+#ifdef Q_OS_MAC
+ process.start("testProcessEcho2/testProcessEcho2.app");
+#else
+ process.start("testProcessEcho2/testProcessEcho2");
+#endif
+ process.write(data);
+ process.closeWriteChannel();
+ QVERIFY(process.waitForFinished(5000));
+
+ for (int i = 0; i < 4; ++i) {
+ process.setReadChannel(QProcess::StandardOutput);
+ QCOMPARE(process.read(1), QByteArray(&data[i], 1));
+ process.setReadChannel(QProcess::StandardError);
+ QCOMPARE(process.read(1), QByteArray(&data[i], 1));
+ }
+
+ process.ungetChar('D');
+ process.setReadChannel(QProcess::StandardOutput);
+ process.ungetChar('D');
+ process.setReadChannel(QProcess::StandardError);
+ QCOMPARE(process.read(1), QByteArray("D"));
+ process.setReadChannel(QProcess::StandardOutput);
+ QCOMPARE(process.read(1), QByteArray("D"));
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::setWorkingDirectory()
+{
+#ifdef Q_OS_WINCE
+ QSKIP("Windows CE does not support working directory logic", SkipAll);
+#endif
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("Symbian does not support working directory logic", SkipAll);
+#endif
+ process = new QProcess;
+ process->setWorkingDirectory("test");
+#ifdef Q_OS_MAC
+ process->start("testSetWorkingDirectory/testSetWorkingDirectory.app");
+#else
+ process->start("testSetWorkingDirectory/testSetWorkingDirectory");
+#endif
+#ifndef Q_OS_WIN
+ QSKIP("setWorkingDirectory will chdir before starting the process on unices", SkipAll);
+#endif
+ QVERIFY(process->waitForFinished());
+
+ QByteArray workingDir = process->readAllStandardOutput();
+ QCOMPARE(QDir("test").canonicalPath(), QDir(workingDir.constData()).canonicalPath());
+
+ delete process;
+ process = 0;
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::startFinishStartFinish()
+{
+ QProcess process;
+
+ for (int i = 0; i < 3; ++i) {
+ QCOMPARE(process.state(), QProcess::NotRunning);
+
+#ifdef Q_OS_MAC
+ process.start("testProcessOutput/testProcessOutput.app");
+#else
+ process.start("testProcessOutput/testProcessOutput");
+#endif
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QVERIFY(process.waitForReadyRead(10000));
+ QCOMPARE(QString::fromLatin1(process.readLine().trimmed()),
+ QString("0 -this is a number"));
+#endif
+ if (process.state() != QProcess::NotRunning)
+ QVERIFY(process.waitForFinished(10000));
+#if defined(Q_OS_SYMBIAN)
+ // Symbian test outputs to a file, so check that
+ FILE* file = fopen("c:\\logs\\qprocess_output_test.txt","r");
+ QVERIFY(file);
+ char buf[30];
+ fgets(buf, 30, file);
+ QCOMPARE(QString::fromLatin1(buf),
+ QString("0 -this is a number\n"));
+ fclose(file);
+#endif
+ }
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::invalidProgramString_data()
+{
+ QTest::addColumn<QString>("programString");
+ QTest::newRow("null string") << QString();
+ QTest::newRow("empty string") << QString("");
+ QTest::newRow("only blank string") << QString(" ");
+}
+
+void tst_QProcess::invalidProgramString()
+{
+ QFETCH(QString, programString);
+ QProcess process;
+
+ qRegisterMetaType<QProcess::ProcessError>("QProcess::ProcessError");
+ QSignalSpy spy(&process, SIGNAL(error(QProcess::ProcessError)));
+
+ process.start(programString);
+ QCOMPARE(process.error(), QProcess::FailedToStart);
+ QCOMPARE(spy.count(), 1);
+
+ QVERIFY(!QProcess::startDetached(programString));
+}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::onlyOneStartedSignal()
+{
+ QProcess process;
+
+ QSignalSpy spyStarted(&process, SIGNAL(started()));
+ QSignalSpy spyFinished(&process, SIGNAL(finished(int, QProcess::ExitStatus)));
+
+ process.start("testProcessNormal/testProcessNormal");
+ QVERIFY(process.waitForStarted(5000));
+ QVERIFY(process.waitForFinished(5000));
+ QCOMPARE(spyStarted.count(), 1);
+ QCOMPARE(spyFinished.count(), 1);
+
+ spyStarted.clear();
+ spyFinished.clear();
+
+ process.start("testProcessNormal/testProcessNormal");
+ QVERIFY(process.waitForFinished(5000));
+ QCOMPARE(spyStarted.count(), 1);
+ QCOMPARE(spyFinished.count(), 1);
+}
+
+QTEST_MAIN(tst_QProcess)
+#include "tst_qprocess.moc"
+#endif
+
diff --git a/tests/auto/corelib/io/qprocessenvironment/qprocessenvironment.pro b/tests/auto/corelib/io/qprocessenvironment/qprocessenvironment.pro
new file mode 100644
index 0000000000..60dba50813
--- /dev/null
+++ b/tests/auto/corelib/io/qprocessenvironment/qprocessenvironment.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+
+QT = core
+
+SOURCES += tst_qprocessenvironment.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/io/qprocessenvironment/tst_qprocessenvironment.cpp b/tests/auto/corelib/io/qprocessenvironment/tst_qprocessenvironment.cpp
new file mode 100644
index 0000000000..d88ffdedb7
--- /dev/null
+++ b/tests/auto/corelib/io/qprocessenvironment/tst_qprocessenvironment.cpp
@@ -0,0 +1,320 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest>
+#include <QObject>
+#include <QProcessEnvironment>
+
+class tst_QProcessEnvironment: public QObject
+{
+ Q_OBJECT
+private slots:
+ void operator_eq();
+ void clearAndIsEmpty();
+ void insert();
+ void emptyNull();
+ void toStringList();
+ void keys();
+ void insertEnv();
+
+ void caseSensitivity();
+ void systemEnvironment();
+ void putenv();
+};
+
+void tst_QProcessEnvironment::operator_eq()
+{
+ QProcessEnvironment e1;
+ QVERIFY(e1 == e1);
+ e1.clear();
+ QVERIFY(e1 == e1);
+
+ e1 = QProcessEnvironment();
+ QProcessEnvironment e2;
+ QVERIFY(e1 == e2);
+
+ e1.clear();
+ QVERIFY(e1 != e2);
+
+ e2.clear();
+
+ QVERIFY(e1 == e2);
+}
+
+void tst_QProcessEnvironment::clearAndIsEmpty()
+{
+ QProcessEnvironment e;
+ e.insert("FOO", "bar");
+ QVERIFY(!e.isEmpty());
+ e.clear();
+ QVERIFY(e.isEmpty());
+}
+
+void tst_QProcessEnvironment::insert()
+{
+ QProcessEnvironment e;
+ e.insert("FOO", "bar");
+ QVERIFY(!e.isEmpty());
+ QVERIFY(e.contains("FOO"));
+ QCOMPARE(e.value("FOO"), QString("bar"));
+
+ e.remove("FOO");
+ QVERIFY(!e.contains("FOO"));
+ QVERIFY(e.value("FOO").isNull());
+
+ e.clear();
+ QVERIFY(!e.contains("FOO"));
+}
+
+void tst_QProcessEnvironment::emptyNull()
+{
+ QProcessEnvironment e;
+
+ e.insert("FOO", "");
+ QVERIFY(e.contains("FOO"));
+ QVERIFY(e.value("FOO").isEmpty());
+ QVERIFY(!e.value("FOO").isNull());
+
+ e.insert("FOO", QString());
+ QVERIFY(e.contains("FOO"));
+ QVERIFY(e.value("FOO").isEmpty());
+ // don't test if it's NULL, since we shall not make a guarantee
+
+ e.remove("FOO");
+ QVERIFY(!e.contains("FOO"));
+}
+
+void tst_QProcessEnvironment::toStringList()
+{
+ QProcessEnvironment e;
+ QVERIFY(e.isEmpty());
+ QVERIFY(e.toStringList().isEmpty());
+
+ e.insert("FOO", "bar");
+ QStringList result = e.toStringList();
+ QVERIFY(!result.isEmpty());
+ QCOMPARE(result.length(), 1);
+ QCOMPARE(result.at(0), QString("FOO=bar"));
+
+ e.clear();
+ e.insert("BAZ", "");
+ result = e.toStringList();
+ QCOMPARE(result.at(0), QString("BAZ="));
+
+ e.insert("FOO", "bar");
+ e.insert("A", "bc");
+ e.insert("HELLO", "World");
+ result = e.toStringList();
+ QCOMPARE(result.length(), 4);
+
+ // order is not specified, so use contains()
+ QVERIFY(result.contains("FOO=bar"));
+ QVERIFY(result.contains("BAZ="));
+ QVERIFY(result.contains("A=bc"));
+ QVERIFY(result.contains("HELLO=World"));
+}
+
+void tst_QProcessEnvironment::keys()
+{
+ QProcessEnvironment e;
+ QVERIFY(e.isEmpty());
+ QVERIFY(e.keys().isEmpty());
+
+ e.insert("FOO", "bar");
+ QStringList result = e.keys();
+ QCOMPARE(result.length(), 1);
+ QCOMPARE(result.at(0), QString("FOO"));
+
+ e.clear();
+ e.insert("BAZ", "");
+ result = e.keys();
+ QCOMPARE(result.at(0), QString("BAZ"));
+
+ e.insert("FOO", "bar");
+ e.insert("A", "bc");
+ e.insert("HELLO", "World");
+ result = e.keys();
+ QCOMPARE(result.length(), 4);
+
+ // order is not specified, so use contains()
+ QVERIFY(result.contains("FOO"));
+ QVERIFY(result.contains("BAZ"));
+ QVERIFY(result.contains("A"));
+ QVERIFY(result.contains("HELLO"));
+}
+
+void tst_QProcessEnvironment::insertEnv()
+{
+ QProcessEnvironment e;
+ e.insert("FOO", "bar");
+ e.insert("A", "bc");
+ e.insert("Hello", "World");
+
+ QProcessEnvironment e2;
+ e2.insert("FOO2", "bar2");
+ e2.insert("A2", "bc2");
+ e2.insert("Hello", "Another World");
+
+ e.insert(e2);
+ QStringList keys = e.keys();
+ QCOMPARE(keys.length(), 5);
+
+ QCOMPARE(e.value("FOO"), QString("bar"));
+ QCOMPARE(e.value("A"), QString("bc"));
+ QCOMPARE(e.value("Hello"), QString("Another World"));
+ QCOMPARE(e.value("FOO2"), QString("bar2"));
+ QCOMPARE(e.value("A2"), QString("bc2"));
+}
+
+void tst_QProcessEnvironment::caseSensitivity()
+{
+ QProcessEnvironment e;
+ e.insert("foo", "bar");
+
+#ifdef Q_OS_WIN
+ // Windows is case-insensitive, but case-preserving
+ QVERIFY(e.contains("foo"));
+ QVERIFY(e.contains("FOO"));
+ QVERIFY(e.contains("FoO"));
+
+ QCOMPARE(e.value("foo"), QString("bar"));
+ QCOMPARE(e.value("FOO"), QString("bar"));
+ QCOMPARE(e.value("FoO"), QString("bar"));
+
+ // Per Windows, this overwrites the value, but keeps the name's original capitalization
+ e.insert("Foo", "Bar");
+
+ QStringList list = e.toStringList();
+ QCOMPARE(list.length(), 1);
+ QCOMPARE(list.at(0), QString("foo=Bar"));
+#else
+ // otherwise, it's case sensitive
+ QVERIFY(e.contains("foo"));
+ QVERIFY(!e.contains("FOO"));
+
+ e.insert("FOO", "baz");
+ QVERIFY(e.contains("FOO"));
+ QCOMPARE(e.value("FOO"), QString("baz"));
+ QCOMPARE(e.value("foo"), QString("bar"));
+
+ QStringList list = e.toStringList();
+ QCOMPARE(list.length(), 2);
+ QVERIFY(list.contains("foo=bar"));
+ QVERIFY(list.contains("FOO=baz"));
+#endif
+}
+
+void tst_QProcessEnvironment::systemEnvironment()
+{
+ static const char envname[] = "THIS_ENVIRONMENT_VARIABLE_HOPEFULLY_DOESNT_EXIST";
+ QByteArray path = qgetenv("PATH");
+ QByteArray nonexistant = qgetenv(envname);
+ QProcessEnvironment system = QProcessEnvironment::systemEnvironment();
+
+ QVERIFY(nonexistant.isNull());
+
+#ifdef Q_WS_WINCE
+ // Windows CE has no environment
+ QVERIFY(path.isEmpty());
+ QVERIFY(!system.contains("PATH"));
+ QVERIFY(system.isEmpty());
+#else
+ // all other system have environments
+ if (path.isEmpty())
+ QFAIL("Could not find the PATH environment variable -- please correct the test environment");
+
+ QVERIFY(system.contains("PATH"));
+ QCOMPARE(system.value("PATH"), QString::fromLocal8Bit(path));
+
+ QVERIFY(!system.contains(envname));
+
+# ifdef Q_OS_WIN
+ // check case-insensitive too
+ QVERIFY(system.contains("path"));
+ QCOMPARE(system.value("path"), QString::fromLocal8Bit(path));
+
+ QVERIFY(!system.contains(QString(envname).toLower()));
+# endif
+#endif
+}
+
+void tst_QProcessEnvironment::putenv()
+{
+#ifdef Q_WS_WINCE
+ QSKIP("Windows CE has no environment", SkipAll);
+#else
+ static const char envname[] = "WE_RE_SETTING_THIS_ENVIRONMENT_VARIABLE";
+ static bool testRan = false;
+
+ if (testRan)
+ QFAIL("You cannot run this test more than once, since we modify the environment");
+ testRan = true;
+
+ QByteArray valBefore = qgetenv(envname);
+ if (!valBefore.isNull())
+ QFAIL("The environment variable we set in the environment is already set! -- please correct the test environment");
+ QProcessEnvironment eBefore = QProcessEnvironment::systemEnvironment();
+
+ qputenv(envname, "Hello, World");
+ QByteArray valAfter = qgetenv(envname);
+ if (valAfter != "Hello, World")
+ QSKIP("Could not test: qputenv did not do its job", SkipAll);
+
+ QProcessEnvironment eAfter = QProcessEnvironment::systemEnvironment();
+
+ QVERIFY(!eBefore.contains(envname));
+ QVERIFY(eAfter.contains(envname));
+ QCOMPARE(eAfter.value(envname), QString("Hello, World"));
+
+# ifdef Q_OS_WIN
+ // check case-insensitive too
+ QString lower = envname;
+ lower = lower.toLower();
+ QVERIFY(!eBefore.contains(lower));
+ QVERIFY(eAfter.contains(lower));
+ QCOMPARE(eAfter.value(lower), QString("Hello, World"));
+# endif
+#endif
+}
+
+QTEST_MAIN(tst_QProcessEnvironment)
+
+#include "tst_qprocessenvironment.moc"
diff --git a/tests/auto/corelib/io/qresourceengine/.gitattributes b/tests/auto/corelib/io/qresourceengine/.gitattributes
new file mode 100644
index 0000000000..add3716d81
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/.gitattributes
@@ -0,0 +1 @@
+testqrc/test.qrc -crlf
diff --git a/tests/auto/corelib/io/qresourceengine/.gitignore b/tests/auto/corelib/io/qresourceengine/.gitignore
new file mode 100644
index 0000000000..eb48d60239
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/.gitignore
@@ -0,0 +1 @@
+tst_qresourceengine
diff --git a/tests/auto/corelib/io/qresourceengine/parentdir.txt b/tests/auto/corelib/io/qresourceengine/parentdir.txt
new file mode 100644
index 0000000000..a94edee379
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/parentdir.txt
@@ -0,0 +1 @@
+abcdefgihklmnopqrstuvwxyz
diff --git a/tests/auto/corelib/io/qresourceengine/qresourceengine.pro b/tests/auto/corelib/io/qresourceengine/qresourceengine.pro
new file mode 100644
index 0000000000..abbf39bd83
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/qresourceengine.pro
@@ -0,0 +1,47 @@
+######################################################################
+# Automatically generated by qmake (2.00a) ma 2. mai 16:14:33 2005
+######################################################################
+
+load(qttest_p4)
+load(resources)
+
+# Input
+SOURCES += tst_qresourceengine.cpp
+RESOURCES += testqrc/test.qrc
+
+symbian-sbsv2 {
+ runtime_resource.target = $$PWD/runtime_resource.rcc
+} else {
+ runtime_resource.target = runtime_resource.rcc
+}
+runtime_resource.depends = $$PWD/testqrc/test.qrc
+runtime_resource.commands = $$QMAKE_RCC -root /runtime_resource/ -binary $${runtime_resource.depends} -o $${runtime_resource.target}
+QMAKE_EXTRA_TARGETS = runtime_resource
+PRE_TARGETDEPS += $${runtime_resource.target}
+
+QT = core
+wince*|symbian:{
+ deploy.files += runtime_resource.rcc parentdir.txt
+ test.files = testqrc/*
+ test.path = testqrc
+ alias.files = testqrc/aliasdir/*
+ alias.path = testqrc/aliasdir
+ other.files = testqrc/otherdir/*
+ other.path = testqrc/otherdir
+ search1.files = testqrc/searchpath1/*
+ search1.path = testqrc/searchpath1
+ search2.files = testqrc/searchpath2/*
+ search2.path = testqrc/searchpath2
+ sub.files = testqrc/subdir/*
+ sub.path = testqrc/subdir
+ testsub.files = testqrc/test/*
+ testsub.path = testqrc/test
+ testsub2.files = testqrc/test/test/*
+ testsub2.path = testqrc/test/test
+ DEPLOYMENT += deploy test alias other search1 search2 sub testsub testsub2
+ !symbian:DEFINES += SRCDIR=\\\"\\\"
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+CONFIG += parallel_test
+CONFIG += insignificant_test # QTBUG-21159
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/aliasdir.txt b/tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/aliasdir.txt
new file mode 100644
index 0000000000..21a3dfa0b8
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/aliasdir.txt
@@ -0,0 +1 @@
+"This is a korean text file"
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/compressme.txt b/tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/compressme.txt
new file mode 100644
index 0000000000..bd596cdacd
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/aliasdir/compressme.txt
@@ -0,0 +1,322 @@
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/blahblah.txt b/tests/auto/corelib/io/qresourceengine/testqrc/blahblah.txt
new file mode 100644
index 0000000000..436c4d11c3
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/blahblah.txt
@@ -0,0 +1 @@
+qwerty
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/currentdir.txt b/tests/auto/corelib/io/qresourceengine/testqrc/currentdir.txt
new file mode 100644
index 0000000000..38e389979a
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/currentdir.txt
@@ -0,0 +1 @@
+"This is the current dir"
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/currentdir2.txt b/tests/auto/corelib/io/qresourceengine/testqrc/currentdir2.txt
new file mode 100644
index 0000000000..6ac16a3306
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/currentdir2.txt
@@ -0,0 +1 @@
+"This is also the current dir"
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/otherdir/otherdir.txt b/tests/auto/corelib/io/qresourceengine/testqrc/otherdir/otherdir.txt
new file mode 100644
index 0000000000..b0e4a124ee
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/otherdir/otherdir.txt
@@ -0,0 +1 @@
+"This is the other dir"
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/search_file.txt b/tests/auto/corelib/io/qresourceengine/testqrc/search_file.txt
new file mode 100644
index 0000000000..d8649da39d
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/search_file.txt
@@ -0,0 +1 @@
+root
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/searchpath1/search_file.txt b/tests/auto/corelib/io/qresourceengine/testqrc/searchpath1/search_file.txt
new file mode 100644
index 0000000000..3f31b59496
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/searchpath1/search_file.txt
@@ -0,0 +1 @@
+path1
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/searchpath2/search_file.txt b/tests/auto/corelib/io/qresourceengine/testqrc/searchpath2/search_file.txt
new file mode 100644
index 0000000000..8e3be1fa2e
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/searchpath2/search_file.txt
@@ -0,0 +1 @@
+path2
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/subdir/subdir.txt b/tests/auto/corelib/io/qresourceengine/testqrc/subdir/subdir.txt
new file mode 100644
index 0000000000..b6115207a2
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/subdir/subdir.txt
@@ -0,0 +1 @@
+"This is in the sub directory"
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/test.qrc b/tests/auto/corelib/io/qresourceengine/testqrc/test.qrc
new file mode 100644
index 0000000000..f5e8c849a6
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/test.qrc
@@ -0,0 +1,30 @@
+<!DOCTYPE RCC><RCC version="1.0">
+ <qresource prefix="/test/abc/123/+++">
+ <file>currentdir.txt</file>
+ <file>./currentdir2.txt</file>
+ <file>../parentdir.txt</file>
+ <file>subdir/subdir.txt</file>
+ </qresource>
+ <qresource prefix="/">
+ <file>searchpath1/search_file.txt</file>
+ <file>searchpath2/search_file.txt</file>
+ <file>search_file.txt</file>
+ </qresource>
+ <qresource><file>test/testdir.txt</file>
+ <file>otherdir/otherdir.txt</file>
+ <file alias="aliasdir/aliasdir.txt">test/testdir2.txt</file>
+ <file>test/test</file>
+ </qresource>
+ <qresource lang="ko">
+ <file>aliasdir/aliasdir.txt</file>
+ </qresource>
+ <qresource lang="de_CH">
+ <file alias="aliasdir/aliasdir.txt" compress="9" threshold="30">aliasdir/compressme.txt</file>
+ </qresource>
+ <qresource lang="de">
+ <file alias="aliasdir/aliasdir.txt">test/german.txt</file>
+ </qresource>
+ <qresource prefix="withoutslashes">
+ <file>blahblah.txt</file>
+ </qresource>
+</RCC>
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/test/german.txt b/tests/auto/corelib/io/qresourceengine/testqrc/test/german.txt
new file mode 100644
index 0000000000..12b1cb7320
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/test/german.txt
@@ -0,0 +1 @@
+Deutsch
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/test/test/test1.txt b/tests/auto/corelib/io/qresourceengine/testqrc/test/test/test1.txt
new file mode 100644
index 0000000000..adc01d1354
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/test/test/test1.txt
@@ -0,0 +1 @@
+abc
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/test/test/test2.txt b/tests/auto/corelib/io/qresourceengine/testqrc/test/test/test2.txt
new file mode 100644
index 0000000000..3f48e3cdc3
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/test/test/test2.txt
@@ -0,0 +1 @@
+def
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/test/testdir.txt b/tests/auto/corelib/io/qresourceengine/testqrc/test/testdir.txt
new file mode 100644
index 0000000000..40ee68dccb
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/test/testdir.txt
@@ -0,0 +1 @@
+"This is in the test directory"
diff --git a/tests/auto/corelib/io/qresourceengine/testqrc/test/testdir2.txt b/tests/auto/corelib/io/qresourceengine/testqrc/test/testdir2.txt
new file mode 100644
index 0000000000..051430298a
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/testqrc/test/testdir2.txt
@@ -0,0 +1 @@
+"This is another file in this directory"
diff --git a/tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp b/tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp
new file mode 100644
index 0000000000..7914fc8bfc
--- /dev/null
+++ b/tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp
@@ -0,0 +1,488 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtCore>
+
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR "."
+#endif
+
+class tst_QResourceEngine: public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void initTestCase();
+ void cleanupTestCase();
+
+ void checkUnregisterResource_data();
+ void checkUnregisterResource();
+ void checkStructure_data();
+ void checkStructure();
+ void searchPath_data();
+ void searchPath();
+ void doubleSlashInRoot();
+ void setLocale();
+
+private:
+ QString builddir;
+};
+
+Q_DECLARE_METATYPE(QLocale)
+Q_DECLARE_METATYPE(qlonglong)
+
+void tst_QResourceEngine::initTestCase()
+{
+ QVERIFY(QResource::registerResource("runtime_resource.rcc"));
+ QVERIFY(QResource::registerResource("runtime_resource.rcc", "/secondary_root/"));
+ QString srcdir(QLatin1String(SRCDIR));
+ if (!srcdir.isEmpty()) {
+ builddir = QDir::current().absolutePath();
+ if (!builddir.endsWith(QDir::separator()))
+ builddir.append(QDir::separator());
+ QDir::setCurrent(srcdir);
+ }
+}
+
+void tst_QResourceEngine::cleanupTestCase()
+{
+ if (!builddir.isEmpty()) {
+ QDir::setCurrent(builddir);
+ }
+
+ // make sure we don't leak memory
+ QVERIFY(QResource::unregisterResource("runtime_resource.rcc"));
+ QVERIFY(QResource::unregisterResource("runtime_resource.rcc", "/secondary_root/"));
+}
+
+void tst_QResourceEngine::checkStructure_data()
+{
+ QTest::addColumn<QString>("pathName");
+ QTest::addColumn<QString>("contents");
+ QTest::addColumn<QStringList>("containedFiles");
+ QTest::addColumn<QStringList>("containedDirs");
+ QTest::addColumn<QLocale>("locale");
+ QTest::addColumn<qlonglong>("contentsSize");
+
+ QFileInfo info;
+
+ QTest::newRow("root dir") << QString(":/")
+ << QString()
+ << (QStringList() << "search_file.txt")
+ << (QStringList() << QLatin1String("aliasdir") << QLatin1String("otherdir")
+ << QLatin1String("runtime_resource")
+ << QLatin1String("searchpath1") << QLatin1String("searchpath2")
+ << QLatin1String("secondary_root")
+ << QLatin1String("test")
+ << QLatin1String("withoutslashes"))
+ << QLocale::c()
+ << qlonglong(0);
+
+ QTest::newRow("secondary root") << QString(":/secondary_root/")
+ << QString()
+ << QStringList()
+ << (QStringList() << QLatin1String("runtime_resource"))
+ << QLocale::c()
+ << qlonglong(0);
+
+ QStringList roots;
+ roots << QString(":/") << QString(":/runtime_resource/") << QString(":/secondary_root/runtime_resource/");
+ for(int i = 0; i < roots.size(); ++i) {
+ const QString root = roots.at(i);
+
+ QTest::newRow(QString(root + "prefix dir").toLatin1().constData()) << QString(root + "test/abc/123/+++")
+ << QString()
+ << (QStringList() << QLatin1String("currentdir.txt") << QLatin1String("currentdir2.txt") << QLatin1String("parentdir.txt"))
+ << (QStringList() << QLatin1String("subdir"))
+ << QLocale::c()
+ << qlonglong(0);
+
+ QTest::newRow(QString(root + "parent to prefix").toLatin1().constData()) << QString(root + "test/abc/123")
+ << QString()
+ << QStringList()
+ << (QStringList() << QLatin1String("+++"))
+ << QLocale::c()
+ << qlonglong(0);
+
+ QTest::newRow(QString(root + "two parents prefix").toLatin1().constData()) << QString(root + "test/abc")
+ << QString()
+ << QStringList()
+ << QStringList(QLatin1String("123"))
+ << QLocale::c()
+ << qlonglong(0);
+
+ QTest::newRow(QString(root + "test dir ").toLatin1().constData()) << QString(root + "test")
+ << QString()
+ << (QStringList() << QLatin1String("testdir.txt"))
+ << (QStringList() << QLatin1String("abc") << QLatin1String("test"))
+ << QLocale::c()
+ << qlonglong(0);
+
+ QTest::newRow(QString(root + "prefix no slashes").toLatin1().constData()) << QString(root + "withoutslashes")
+ << QString()
+ << QStringList("blahblah.txt")
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(0);
+
+ QTest::newRow(QString(root + "other dir").toLatin1().constData()) << QString(root + "otherdir")
+ << QString()
+ << QStringList(QLatin1String("otherdir.txt"))
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(0);
+
+ QTest::newRow(QString(root + "alias dir").toLatin1().constData()) << QString(root + "aliasdir")
+ << QString()
+ << QStringList(QLatin1String("aliasdir.txt"))
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(0);
+
+ QTest::newRow(QString(root + "second test dir").toLatin1().constData()) << QString(root + "test/test")
+ << QString()
+ << (QStringList() << QLatin1String("test1.txt") << QLatin1String("test2.txt"))
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(0);
+
+ info = QFileInfo("testqrc/test/test/test1.txt");
+ QTest::newRow(QString(root + "test1 text").toLatin1().constData()) << QString(root + "test/test/test1.txt")
+ << QString("abc")
+ << QStringList()
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(info.size());
+
+ info = QFileInfo("testqrc/blahblah.txt");
+ QTest::newRow(QString(root + "text no slashes").toLatin1().constData()) << QString(root + "withoutslashes/blahblah.txt")
+ << QString("qwerty")
+ << QStringList()
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(info.size());
+
+
+ info = QFileInfo("testqrc/test/test/test2.txt");
+ QTest::newRow(QString(root + "test1 text").toLatin1().constData()) << QString(root + "test/test/test2.txt")
+ << QString("def")
+ << QStringList()
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(info.size());
+
+ info = QFileInfo("testqrc/currentdir.txt");
+ QTest::newRow(QString(root + "currentdir text").toLatin1().constData()) << QString(root + "test/abc/123/+++/currentdir.txt")
+ << QString("\"This is the current dir\" ")
+ << QStringList()
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(info.size());
+
+ info = QFileInfo("testqrc/currentdir2.txt");
+ QTest::newRow(QString(root + "currentdir text2").toLatin1().constData()) << QString(root + "test/abc/123/+++/currentdir2.txt")
+ << QString("\"This is also the current dir\" ")
+ << QStringList()
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(info.size());
+
+ info = QFileInfo("parentdir.txt");
+ QTest::newRow(QString(root + "parentdir text").toLatin1().constData()) << QString(root + "test/abc/123/+++/parentdir.txt")
+ << QString("abcdefgihklmnopqrstuvwxyz ")
+ << QStringList()
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(info.size());
+
+ info = QFileInfo("testqrc/subdir/subdir.txt");
+ QTest::newRow(QString(root + "subdir text").toLatin1().constData()) << QString(root + "test/abc/123/+++/subdir/subdir.txt")
+ << QString("\"This is in the sub directory\" ")
+ << QStringList()
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(info.size());
+
+ info = QFileInfo("testqrc/test/testdir.txt");
+ QTest::newRow(QString(root + "testdir text").toLatin1().constData()) << QString(root + "test/testdir.txt")
+ << QString("\"This is in the test directory\" ")
+ << QStringList()
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(info.size());
+
+ info = QFileInfo("testqrc/otherdir/otherdir.txt");
+ QTest::newRow(QString(root + "otherdir text").toLatin1().constData()) << QString(root + "otherdir/otherdir.txt")
+ << QString("\"This is the other dir\" ")
+ << QStringList()
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(info.size());
+
+ info = QFileInfo("testqrc/test/testdir2.txt");
+ QTest::newRow(QString(root + "alias text").toLatin1().constData()) << QString(root + "aliasdir/aliasdir.txt")
+ << QString("\"This is another file in this directory\" ")
+ << QStringList()
+ << QStringList()
+ << QLocale::c()
+ << qlonglong(info.size());
+
+ info = QFileInfo("testqrc/aliasdir/aliasdir.txt");
+ QTest::newRow(QString(root + "korean text").toLatin1().constData()) << QString(root + "aliasdir/aliasdir.txt")
+ << QString("\"This is a korean text file\" ")
+ << QStringList()
+ << QStringList()
+ << QLocale("ko")
+ << qlonglong(info.size());
+
+ info = QFileInfo("testqrc/aliasdir/aliasdir.txt");
+ QTest::newRow(QString(root + "korean text 2").toLatin1().constData()) << QString(root + "aliasdir/aliasdir.txt")
+ << QString("\"This is a korean text file\" ")
+ << QStringList()
+ << QStringList()
+ << QLocale("ko_KR")
+ << qlonglong(info.size());
+
+ info = QFileInfo("testqrc/test/german.txt");
+ QTest::newRow(QString(root + "german text").toLatin1().constData()) << QString(root + "aliasdir/aliasdir.txt")
+ << QString("Deutsch")
+ << QStringList()
+ << QStringList()
+ << QLocale("de")
+ << qlonglong(info.size());
+
+ info = QFileInfo("testqrc/test/german.txt");
+ QTest::newRow(QString(root + "german text 2").toLatin1().constData()) << QString(root + "aliasdir/aliasdir.txt")
+ << QString("Deutsch")
+ << QStringList()
+ << QStringList()
+ << QLocale("de_DE")
+ << qlonglong(info.size());
+
+ QFile file("testqrc/aliasdir/compressme.txt");
+ file.open(QFile::ReadOnly);
+ info = QFileInfo("testqrc/aliasdir/compressme.txt");
+ QTest::newRow(QString(root + "compressed text").toLatin1().constData()) << QString(root + "aliasdir/aliasdir.txt")
+ << QString(file.readAll())
+ << QStringList()
+ << QStringList()
+ << QLocale("de_CH")
+ << qlonglong(info.size());
+ }
+}
+
+void tst_QResourceEngine::checkStructure()
+{
+ QFETCH(QString, pathName);
+ QFETCH(QString, contents);
+ QFETCH(QStringList, containedFiles);
+ QFETCH(QStringList, containedDirs);
+ QFETCH(QLocale, locale);
+ QFETCH(qlonglong, contentsSize);
+
+ bool directory = (containedDirs.size() + containedFiles.size() > 0);
+ QLocale::setDefault(locale);
+
+ QFileInfo fileInfo(pathName);
+
+ QVERIFY(fileInfo.exists());
+ QCOMPARE(fileInfo.isDir(), directory);
+ QCOMPARE(fileInfo.size(), contentsSize);
+ //QVERIFY(fileInfo.isReadable());
+ QVERIFY(!fileInfo.isWritable());
+ QVERIFY(!fileInfo.isExecutable());
+
+ if (directory) {
+ QDir dir(pathName);
+
+ // Test the Dir filter
+ QFileInfoList list = dir.entryInfoList(QDir::Dirs, QDir::Name);
+// for(int i = 0; i < list.size(); ++i)
+// qDebug() << "one" << i << list.at(i).fileName();
+// for(int i = 0; i < containedDirs.size(); ++i)
+// qDebug() << "two" << i << containedDirs.at(i);
+// qDebug() << "one" << list.size() << containedDirs.size();
+ QCOMPARE(list.size(), containedDirs.size());
+// qDebug() << "two";
+
+ int i;
+ for (i=0; i<list.size(); ++i) {
+ QVERIFY(list.at(i).isDir());
+ QCOMPARE(list.at(i).fileName(), containedDirs.at(i));
+ }
+
+ list = dir.entryInfoList(QDir::Files, QDir::Name);
+ QCOMPARE(containedFiles.size(), list.size());
+
+ for (i=0; i<list.size(); ++i) {
+ QVERIFY(!list.at(i).isDir());
+ QCOMPARE(list.at(i).fileName(), containedFiles.at(i));
+ }
+
+ list = dir.entryInfoList(QDir::NoFilter, QDir::SortFlags(QDir::Name | QDir::DirsFirst));
+ QCOMPARE(containedFiles.size() + containedDirs.size(), list.size());
+
+ for (i=0; i<list.size(); ++i) {
+ QString expectedName;
+ if (i < containedDirs.size())
+ expectedName = containedDirs.at(i);
+ else
+ expectedName = containedFiles.at(i - containedDirs.size());
+
+ QCOMPARE(list.at(i).fileName(), expectedName);
+ }
+ } else {
+ QFile file(pathName);
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ QByteArray ba = file.readAll();
+ QVERIFY(QString(ba).startsWith(contents));
+ }
+ QLocale::setDefault(QLocale::system());
+}
+
+void tst_QResourceEngine::searchPath_data()
+{
+ QTest::addColumn<QString>("searchPath");
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QByteArray>("expected");
+
+ QTest::newRow("no_search_path") << QString()
+ << ":search_file.txt"
+ << QByteArray("root\n");
+ QTest::newRow("path1") << "/searchpath1"
+ << ":search_file.txt"
+ << QByteArray("path1\n");
+ QTest::newRow("no_search_path2") << QString()
+ << ":/search_file.txt"
+ << QByteArray("root\n");
+ QTest::newRow("path2") << "/searchpath2"
+ << ":search_file.txt"
+ << QByteArray("path2\n");
+}
+
+void tst_QResourceEngine::searchPath()
+{
+ QFETCH(QString, searchPath);
+ QFETCH(QString, file);
+ QFETCH(QByteArray, expected);
+
+ if(!searchPath.isEmpty())
+ QDir::addResourceSearchPath(searchPath);
+ QFile qf(file);
+ QVERIFY(qf.open(QFile::ReadOnly));
+ QByteArray actual = qf.readAll();
+
+ actual.replace('\r', "");
+
+ QCOMPARE(actual, expected);
+ qf.close();
+}
+
+void tst_QResourceEngine::checkUnregisterResource_data()
+{
+ QTest::addColumn<QString>("rcc_file");
+ QTest::addColumn<QString>("root");
+ QTest::addColumn<QString>("file_check");
+ QTest::addColumn<int>("size");
+
+ QTest::newRow("currentdir.txt") << builddir + QString("runtime_resource.rcc") << QString("/check_unregister/")
+ << QString(":/check_unregister/runtime_resource/test/abc/123/+++/currentdir.txt")
+ << (int)QFileInfo("testqrc/currentdir.txt").size();
+}
+
+void tst_QResourceEngine::checkUnregisterResource()
+{
+ QFETCH(QString, rcc_file);
+ QFETCH(QString, root);
+ QFETCH(QString, file_check);
+ QFETCH(int, size);
+
+
+
+ QVERIFY(!QFile::exists(file_check));
+ QVERIFY(QResource::registerResource(rcc_file, root));
+ QVERIFY(QFile::exists(file_check));
+ QVERIFY(QResource::unregisterResource(rcc_file, root));
+ QVERIFY(!QFile::exists(file_check));
+ QVERIFY(QResource::registerResource(rcc_file, root));
+ QVERIFY(QFile::exists(file_check));
+ QFileInfo fileInfo(file_check);
+ fileInfo.setCaching(false);
+ QVERIFY(fileInfo.exists());
+ QVERIFY(!QResource::unregisterResource(rcc_file, root));
+ QVERIFY(!QFile::exists(file_check));
+ QCOMPARE((int)fileInfo.size(), size);
+}
+
+void tst_QResourceEngine::doubleSlashInRoot()
+{
+ QVERIFY(QFile::exists(":/secondary_root/runtime_resource/search_file.txt"));
+ QVERIFY(QFile::exists("://secondary_root/runtime_resource/search_file.txt"));
+}
+
+void tst_QResourceEngine::setLocale()
+{
+ QLocale::setDefault(QLocale::c());
+
+ // default constructed QResource gets the default locale
+ QResource resource;
+ resource.setFileName("aliasdir/aliasdir.txt");
+ QVERIFY(!resource.isCompressed());
+
+ // change the default locale and make sure it doesn't affect the resource
+ QLocale::setDefault(QLocale("de_CH"));
+ QVERIFY(!resource.isCompressed());
+
+ // then explicitly set the locale on qresource
+ resource.setLocale(QLocale("de_CH"));
+ QVERIFY(resource.isCompressed());
+
+ // the reset the default locale back
+ QLocale::setDefault(QLocale::system());
+}
+
+QTEST_MAIN(tst_QResourceEngine)
+
+#include "tst_qresourceengine.moc"
+
diff --git a/tests/auto/corelib/io/qsettings/.gitattributes b/tests/auto/corelib/io/qsettings/.gitattributes
new file mode 100644
index 0000000000..a4ad8d7644
--- /dev/null
+++ b/tests/auto/corelib/io/qsettings/.gitattributes
@@ -0,0 +1,5 @@
+resourcefile.ini -crlf
+resourcefile2.ini -crlf
+resourcefile3.ini -crlf
+resourcefile4.ini -crlf
+resourcefile5.ini -crlf
diff --git a/tests/auto/corelib/io/qsettings/.gitignore b/tests/auto/corelib/io/qsettings/.gitignore
new file mode 100644
index 0000000000..090588b922
--- /dev/null
+++ b/tests/auto/corelib/io/qsettings/.gitignore
@@ -0,0 +1 @@
+tst_qsettings
diff --git a/tests/auto/corelib/io/qsettings/qsettings.pro b/tests/auto/corelib/io/qsettings/qsettings.pro
new file mode 100644
index 0000000000..f15e40b267
--- /dev/null
+++ b/tests/auto/corelib/io/qsettings/qsettings.pro
@@ -0,0 +1,10 @@
+load(qttest_p4)
+
+QT += core-private
+
+SOURCES += tst_qsettings.cpp
+RESOURCES += qsettings.qrc
+
+win32-msvc*:LIBS += advapi32.lib
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/io/qsettings/qsettings.qrc b/tests/auto/corelib/io/qsettings/qsettings.qrc
new file mode 100644
index 0000000000..587c22ebe3
--- /dev/null
+++ b/tests/auto/corelib/io/qsettings/qsettings.qrc
@@ -0,0 +1,9 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>resourcefile.ini</file>
+ <file>resourcefile2.ini</file>
+ <file>resourcefile3.ini</file>
+ <file>resourcefile4.ini</file>
+ <file>resourcefile5.ini</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/corelib/io/qsettings/resourcefile.ini b/tests/auto/corelib/io/qsettings/resourcefile.ini
new file mode 100644
index 0000000000..608d1b7885
--- /dev/null
+++ b/tests/auto/corelib/io/qsettings/resourcefile.ini
@@ -0,0 +1,46 @@
+[Field%201]
+Bottom=89
+Flags=MULTILINE|VSCROLL|READONLY
+Left=4
+Right=296
+State=No license agreement file found. Please contact support.
+Top=14
+Type=Text
+
+[Field%202]
+Bottom=8
+Left=4
+Right=294
+Text=Press Page Down to see the rest of the agreement.
+Top=0
+Type=Label
+
+[Field%203]
+Bottom=111
+Left=4
+Right=297
+Text=If you accept the terms of the agreement, select the first option below. You must accept the agreement to install this software. Click Next to continue.
+Top=92
+Type=Label
+
+[Field%204]
+Bottom=129
+Flags=GROUP|NOTIFY
+Left=4
+Right=299
+Text=I &accept the terms in the License Agreement
+Top=120
+Type=RadioButton
+
+[Field%205]
+Bottom=140
+Flags=NOTIFY
+Left=4
+Right=300
+State=1
+Text=I &do not accept the terms in the License Agreement
+Top=129
+Type=RadioButton
+
+[Settings]
+NumFields=5
diff --git a/tests/auto/corelib/io/qsettings/resourcefile2.ini b/tests/auto/corelib/io/qsettings/resourcefile2.ini
new file mode 100644
index 0000000000..cd06b3b4de
--- /dev/null
+++ b/tests/auto/corelib/io/qsettings/resourcefile2.ini
@@ -0,0 +1,46 @@
+[Field%202]
+Flags=MULTILINE|VSCROLL|READONLY
+Left=4
+Right=296
+State=No license agreement file found. Please contact support.
+Bottom=89
+Top=14
+Type=Text
+
+[Field%201]
+Left=4
+Text=Press Page Down to see the rest of the agreement.
+Bottom=8
+Top=0
+Right=294
+Type=Label
+
+[Field%203]
+Bottom=111
+Left=4
+Right=297
+Text=If you accept the terms of the agreement, select the first option below. You must accept the agreement to install this software. Click Next to continue.
+Top=92
+Type=Label
+
+[Field%204]
+Bottom=129
+Flags=GROUP|NOTIFY
+Left=4
+Right=299
+Text=I &accept the terms in the License Agreement
+Top=120
+Type=RadioButton
+
+[Field%205]
+Bottom=140
+Flags=NOTIFY
+Left=4
+Right=300
+State=1
+Text=I &do not accept the terms in the License Agreement
+Top=129
+Type=RadioButton
+
+[Settings]
+NumFields=5
diff --git a/tests/auto/corelib/io/qsettings/resourcefile3.ini b/tests/auto/corelib/io/qsettings/resourcefile3.ini
new file mode 100644
index 0000000000..ee54cfbbaf
--- /dev/null
+++ b/tests/auto/corelib/io/qsettings/resourcefile3.ini
@@ -0,0 +1,50 @@
+[Field%202]
+Flags=MULTILINE|VSCROLL|READONLY
+Left=4
+Right=296
+State=No license agreement file found. Please contact support.
+Bottom=89
+Top=14
+Type=Text
+
+[Field%201]
+Left=4
+Text=Press Page Down to see the rest of the agreement.
+Bottom=90
+Top=0
+Right=294
+Type=Label
+x=1
+y=1
+width=1
+height=1
+
+[Field%203]
+Bottom=111
+Left=4
+Right=297
+Text=If you accept the terms of the agreement, select the first option below. You must accept the agreement to install this software. Click Next to continue.
+Top=92
+Type=Label
+
+[Field%204]
+Bottom=129
+Flags=GROUP|NOTIFY
+Left=4
+Right=299
+Text=I &accept the terms in the License Agreement
+Top=120
+Type=RadioButton
+
+[Field%205]
+Bottom=140
+Flags=NOTIFY
+Left=4
+Right=300
+State=1
+Text=I &do not accept the terms in the License Agreement
+Top=129
+Type=RadioButton
+
+[Settings]
+NumFields=5
diff --git a/tests/auto/corelib/io/qsettings/resourcefile4.ini b/tests/auto/corelib/io/qsettings/resourcefile4.ini
new file mode 100644
index 0000000000..09c21b1591
--- /dev/null
+++ b/tests/auto/corelib/io/qsettings/resourcefile4.ini
@@ -0,0 +1,2 @@
+[Fa%E7ade]
+QU%C9BEC=Façade/QUÉBEC
diff --git a/tests/auto/corelib/io/qsettings/resourcefile5.ini b/tests/auto/corelib/io/qsettings/resourcefile5.ini
new file mode 100644
index 0000000000..d2d2103560
--- /dev/null
+++ b/tests/auto/corelib/io/qsettings/resourcefile5.ini
@@ -0,0 +1,2 @@
+[Fa%E7ade]
+QU%C9BEC=Façade/QUÉBEC
diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
new file mode 100644
index 0000000000..7436edcd8c
--- /dev/null
+++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
@@ -0,0 +1,3179 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <qdebug.h>
+#include <QtTest/QtTest>
+
+#include <QtCore/QSettings>
+#include <private/qsettings_p.h>
+//#include <QtGui/QApplication>
+#include <QtCore/QCoreApplication>
+#include <QtCore/QtGlobal>
+#include <QtCore/QMetaType>
+#include <QtCore/QtDebug>
+#include <QtCore/QString>
+#include "../../../../shared/util.h"
+
+#if !defined(Q_OS_SYMBIAN)
+# include <cctype>
+#endif
+#if defined(Q_OS_WIN) && defined(Q_CC_GNU)
+// need for unlink on mingw
+#include <io.h>
+#endif
+
+#if defined(Q_OS_WIN)
+#include <QtCore/qt_windows.h>
+#endif
+
+#ifndef QSETTINGS_P_H_VERSION
+#define QSETTINGS_P_H_VERSION 1
+#endif
+
+//TESTED_FILES=
+
+QT_FORWARD_DECLARE_CLASS(QSettings)
+QT_FORWARD_DECLARE_CLASS(QSettings)
+
+class tst_QSettings : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QSettings();
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void getSetCheck();
+ void ctor_data();
+ void ctor();
+ void beginGroup();
+ void setValue();
+ void remove();
+ void contains();
+ void sync();
+ void setFallbacksEnabled();
+ void setFallbacksEnabled_data();
+ void fromFile_data();
+ void fromFile();
+ void setIniCodec();
+ void testArrays_data();
+ void testArrays();
+ void testEscapes();
+ void testCaseSensitivity_data();
+ void testCaseSensitivity();
+ void testErrorHandling_data();
+ void testErrorHandling();
+ void testIniParsing_data();
+ void testIniParsing();
+ void testChildKeysAndGroups_data();
+ void testChildKeysAndGroups();
+ void testUpdateRequestEvent();
+ void testThreadSafety();
+ void testNormalizedKey_data();
+ void testNormalizedKey();
+ void testEmptyData();
+ void testResourceFiles();
+ void fileName();
+ void isWritable_data();
+ void isWritable();
+ void childGroups_data();
+ void childGroups();
+ void childKeys_data();
+ void childKeys();
+ void allKeys_data();
+ void allKeys();
+ void registerFormat();
+ void setPath();
+ void setDefaultFormat();
+ void dontCreateNeedlessPaths();
+#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+ void dontReorderIniKeysNeedlessly();
+#endif
+#if defined(Q_OS_WIN)
+ void qtbug_13249();
+#endif
+
+ void testVariantTypes_data();
+ void testVariantTypes();
+ void rainersSyncBugOnMac_data();
+ void rainersSyncBugOnMac();
+ void recursionBug();
+
+ void testByteArray_data();
+ void testByteArray();
+
+private:
+ void oldWriteEntry_data();
+ void oldReadEntry_data();
+ void oldWriteEntryHelper(QSettings &settings);
+ void oldReadEntryHelper(QSettings &settings);
+};
+
+// Testing get/set functions
+void tst_QSettings::getSetCheck()
+{
+ QSettings obj1;
+ // bool QSettings::fallbacksEnabled()
+ // void QSettings::setFallbacksEnabled(bool)
+ obj1.setFallbacksEnabled(false);
+ QCOMPARE(false, obj1.fallbacksEnabled());
+ obj1.setFallbacksEnabled(true);
+ QCOMPARE(true, obj1.fallbacksEnabled());
+}
+
+//using namespace std;
+
+//#include <qapplication.h>
+#include <qcoreapplication.h>
+#include <qdir.h>
+#include <qregexp.h>
+#include <qthread.h>
+#include <stdlib.h>
+#ifndef Q_OS_WIN
+#include <unistd.h>
+#endif
+
+Q_DECLARE_METATYPE(QSettings::Format)
+
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+static void removePath(const QString& _path)
+{
+ QString path = _path;
+ QDir dir(path);
+ if (!dir.exists())
+ return;
+ QStringList entries = dir.entryList();
+ foreach(QString name, entries) {
+ QString absolute = path + name;
+ if (QFileInfo(absolute).isDir())
+ removePath(absolute+"\\");
+ else
+ QFile::remove(absolute);
+ }
+ dir.cdUp();
+ if (path[path.size()-1] == '\\')
+ path = path.left(path.size()-1);
+ dir.rmdir(path.mid(path.lastIndexOf('\\')+1));
+}
+#endif
+
+static QString settingsPath(const char *path = "")
+{
+ // Temporary path for files that are specified explictly in the constructor.
+ QString tempPath = QDir::tempPath();
+ if (tempPath.endsWith("/"))
+ tempPath.truncate(tempPath.size() - 1);
+ return QDir::toNativeSeparators(tempPath + "/tst_QSettings/" + QLatin1String(path));
+}
+
+static bool readCustom1File(QIODevice &device, QSettings::SettingsMap &map)
+{
+ QDataStream in(&device);
+ quint32 magic;
+ in >> magic;
+ in >> map;
+ return (magic == 0x01010101 && in.status() == QDataStream::Ok);
+}
+
+static bool writeCustom1File(QIODevice &device, const QSettings::SettingsMap &map)
+{
+ QDataStream out(&device);
+ out << quint32(0x01010101);
+ out << map;
+ return out.status() == QDataStream::Ok;
+}
+
+static bool readCustom2File(QIODevice &device, QSettings::SettingsMap &map)
+{
+ QDataStream in(&device);
+ quint64 magic;
+ in >> magic;
+ in >> map;
+ return (magic == Q_UINT64_C(0x0202020202020202) && in.status() == QDataStream::Ok);
+}
+
+static bool writeCustom2File(QIODevice &device, const QSettings::SettingsMap &map)
+{
+ QDataStream out(&device);
+ out << Q_UINT64_C(0x0202020202020202);
+ out << map;
+ return out.status() == QDataStream::Ok;
+}
+
+static bool readCustom3File(QIODevice &device, QSettings::SettingsMap &map)
+{
+ QTextStream in(&device);
+ QString tag;
+ in >> tag;
+ if (tag == "OK") {
+ map.insert("retval", "OK");
+ return true;
+ } else {
+ return false;
+ }
+}
+
+static bool writeCustom3File(QIODevice &device, const QSettings::SettingsMap &map)
+{
+ QTextStream out(&device);
+ if (map.value("retval") != "OK")
+ return false;
+
+ out << "OK";
+ return true;
+}
+
+static void populateWithFormats()
+{
+ QTest::addColumn<QSettings::Format>("format");
+
+ QTest::newRow("native") << QSettings::NativeFormat;
+ QTest::newRow("ini") << QSettings::IniFormat;
+ QTest::newRow("custom1") << QSettings::CustomFormat1;
+ QTest::newRow("custom2") << QSettings::CustomFormat2;
+}
+
+tst_QSettings::tst_QSettings()
+{
+ QSettings::Format custom1 = QSettings::registerFormat("custom1", readCustom1File, writeCustom1File);
+ QSettings::Format custom2 = QSettings::registerFormat("custom2", readCustom2File, writeCustom2File
+#ifndef QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER
+ , Qt::CaseInsensitive
+#endif
+ );
+ QVERIFY(custom1 == QSettings::CustomFormat1);
+ QVERIFY(custom2 == QSettings::CustomFormat2);
+}
+
+void tst_QSettings::init()
+{
+ QSettings::setSystemIniPath(settingsPath("__system__"));
+ QSettings::setUserIniPath(settingsPath("__user__"));
+
+#if defined(Q_OS_WIN)
+ QSettings("HKEY_CURRENT_USER\\Software\\software.org", QSettings::NativeFormat).clear();
+ QSettings("HKEY_LOCAL_MACHINE\\Software\\software.org", QSettings::NativeFormat).clear();
+ QSettings("HKEY_CURRENT_USER\\Software\\other.software.org", QSettings::NativeFormat).clear();
+ QSettings("HKEY_LOCAL_MACHINE\\Software\\other.software.org", QSettings::NativeFormat).clear();
+ QSettings("HKEY_CURRENT_USER\\Software\\foo", QSettings::NativeFormat).clear();
+ QSettings("HKEY_CURRENT_USER\\Software\\bar", QSettings::NativeFormat).clear();
+ QSettings("HKEY_CURRENT_USER\\Software\\bat", QSettings::NativeFormat).clear();
+ QSettings("HKEY_CURRENT_USER\\Software\\baz", QSettings::NativeFormat).clear();
+ QSettings("HKEY_LOCAL_MACHINE\\Software\\foo", QSettings::NativeFormat).clear();
+ QSettings("HKEY_LOCAL_MACHINE\\Software\\bar", QSettings::NativeFormat).clear();
+ QSettings("HKEY_LOCAL_MACHINE\\Software\\bat", QSettings::NativeFormat).clear();
+ QSettings("HKEY_LOCAL_MACHINE\\Software\\baz", QSettings::NativeFormat).clear();
+ if (QDir(settingsPath()).exists()) {
+#if defined(Q_OS_WINCE)
+ removePath(settingsPath());
+#else
+ if (QSysInfo::windowsVersion() & QSysInfo::WV_NT_based)
+ system(QString("rmdir /Q /S %1").arg(settingsPath()).toLatin1());
+ else
+ system(QString("deltree /Y %1").arg(settingsPath()).toLatin1());
+#endif
+ }
+#elif defined(Q_OS_DARWIN)
+ QSettings(QSettings::UserScope, "software.org", "KillerAPP").clear();
+ QSettings(QSettings::SystemScope, "software.org", "KillerAPP").clear();
+ QSettings(QSettings::UserScope, "other.software.org", "KillerAPP").clear();
+ QSettings(QSettings::SystemScope, "other.software.org", "KillerAPP").clear();
+ QSettings(QSettings::UserScope, "software.org").clear();
+ QSettings(QSettings::SystemScope, "software.org").clear();
+ QSettings(QSettings::UserScope, "other.software.org").clear();
+ QSettings(QSettings::SystemScope, "other.software.org").clear();
+#elif defined(Q_OS_SYMBIAN)
+ removePath(settingsPath());
+#endif
+
+#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+ system(QString("chmod -R u+rw %1 2> /dev/null").arg(settingsPath()).toLatin1());
+ system(QString("rm -fr %1 2> /dev/null").arg(settingsPath()).toLatin1());
+#endif
+
+ QFile::remove("foo");
+}
+
+void tst_QSettings::cleanup()
+{
+ init();
+}
+
+/*
+ Test the constructors and the assignment operator.
+*/
+
+void tst_QSettings::ctor_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::ctor()
+{
+ QFETCH(QSettings::Format, format);
+
+ {
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings2(format, QSettings::UserScope, "software.org");
+ QSettings settings3(format, QSettings::SystemScope, "software.org", "KillerAPP");
+ QSettings settings4(format, QSettings::SystemScope, "software.org");
+
+ QSettings settings5(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings6(format, QSettings::UserScope, "software.org");
+ QSettings settings7(format, QSettings::SystemScope, "software.org", "KillerAPP");
+ QSettings settings8(format, QSettings::SystemScope, "software.org");
+
+ // test QSettings::format() while we're at it
+ QVERIFY(settings1.format() == format);
+ QVERIFY(settings2.format() == format);
+ QVERIFY(settings3.format() == format);
+ QVERIFY(settings4.format() == format);
+
+ // test QSettings::scope() while we're at it
+ QVERIFY(settings1.scope() == QSettings::UserScope);
+ QVERIFY(settings2.scope() == QSettings::UserScope);
+ QVERIFY(settings3.scope() == QSettings::SystemScope);
+ QVERIFY(settings4.scope() == QSettings::SystemScope);
+
+ // test QSettings::organizationName() while we're at it
+ QVERIFY(settings1.organizationName() == "software.org");
+ QVERIFY(settings2.organizationName() == "software.org");
+ QVERIFY(settings3.organizationName() == "software.org");
+ QVERIFY(settings4.organizationName() == "software.org");
+
+ // test QSettings::applicationName() while we're at it
+ QCOMPARE(settings1.applicationName(), QString("KillerAPP"));
+ QVERIFY(settings2.applicationName().isEmpty());
+ QVERIFY(settings3.applicationName() == "KillerAPP");
+ QVERIFY(settings4.applicationName().isEmpty());
+
+ /*
+ Go forwards.
+ */
+ settings4.setValue("key 1", QString("doodah"));
+
+ QCOMPARE(settings1.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings3.setValue("key 1", QString("blah"));
+ QCOMPARE(settings1.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings2.setValue("key 1", QString("whoa"));
+ QCOMPARE(settings1.value("key 1").toString(), QString("whoa"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("whoa"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings1.setValue("key 1", QString("gurgle"));
+ QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("whoa"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ /*
+ Test the copies.
+ */
+ QCOMPARE(settings5.value("key 1").toString(), settings1.value("key 1").toString());
+ QCOMPARE(settings6.value("key 1").toString(), settings2.value("key 1").toString());
+ QCOMPARE(settings7.value("key 1").toString(), settings3.value("key 1").toString());
+ QCOMPARE(settings8.value("key 1").toString(), settings4.value("key 1").toString());
+
+ /*
+ Go backwards.
+ */
+
+ settings2.setValue("key 1", QString("bilboh"));
+ QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("bilboh"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings3.setValue("key 1", QString("catha"));
+ QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("bilboh"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("catha"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings4.setValue("key 1", QString("quirko"));
+ QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("bilboh"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("catha"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("quirko"));
+
+ /*
+ Test the copies again.
+ */
+ QCOMPARE(settings5.value("key 1").toString(), settings1.value("key 1").toString());
+ QCOMPARE(settings6.value("key 1").toString(), settings2.value("key 1").toString());
+ QCOMPARE(settings7.value("key 1").toString(), settings3.value("key 1").toString());
+ QCOMPARE(settings8.value("key 1").toString(), settings4.value("key 1").toString());
+
+ /*
+ "General" is a problem key for .ini files.
+ */
+ settings1.setValue("General", 1);
+ settings1.setValue("%General", 2);
+ settings1.setValue("alpha", 3);
+ settings1.setValue("General/alpha", 4);
+ settings1.setValue("%General/alpha", 5);
+ settings1.setValue("alpha/General", 6);
+ settings1.setValue("alpha/%General", 7);
+ settings1.setValue("General/General", 8);
+ settings1.setValue("General/%General", 9);
+ settings1.setValue("%General/General", 10);
+ settings1.setValue("%General/%General", 11);
+ }
+
+ {
+ /*
+ Test that the data was stored on disk after all instances
+ of QSettings are destroyed.
+ */
+
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings2(format, QSettings::UserScope, "software.org");
+ QSettings settings3(format, QSettings::SystemScope, "software.org", "KillerAPP");
+ QSettings settings4(format, QSettings::SystemScope, "software.org");
+
+ QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("bilboh"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("catha"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("quirko"));
+
+ /*
+ Test problem keys.
+ */
+
+ QCOMPARE(settings1.value("General").toInt(), 1);
+ QCOMPARE(settings1.value("%General").toInt(), 2);
+ QCOMPARE(settings1.value("alpha").toInt(), 3);
+ QCOMPARE(settings1.value("General/alpha").toInt(), 4);
+ QCOMPARE(settings1.value("%General/alpha").toInt(), 5);
+ QCOMPARE(settings1.value("alpha/General").toInt(), 6);
+ QCOMPARE(settings1.value("alpha/%General").toInt(), 7);
+ QCOMPARE(settings1.value("General/General").toInt(), 8);
+ QCOMPARE(settings1.value("General/%General").toInt(), 9);
+ QCOMPARE(settings1.value("%General/General").toInt(), 10);
+ QCOMPARE(settings1.value("%General/%General").toInt(), 11);
+
+ /*
+ Test that the organization and product parameters is
+ case-insensitive on Windows and Mac, case-sensitive on
+ Unix.
+ */
+ QSettings settings5(format, QSettings::UserScope, "SoftWare.ORG", "killerApp");
+ if (format == QSettings::NativeFormat) {
+#if defined(Q_OS_WIN) || defined(Q_OS_DARWIN) || defined(Q_OS_SYMBIAN)
+ QCOMPARE(settings5.value("key 1").toString(), QString("gurgle"));
+#else
+ QVERIFY(!settings5.contains("key 1"));
+#endif
+ } else {
+#if defined(Q_OS_WIN) || defined(Q_OS_DARWIN) || defined(Q_OS_SYMBIAN)
+ QCOMPARE(settings5.value("key 1").toString(), QString("gurgle"));
+#else
+ QVERIFY(!settings5.contains("key 1"));
+#endif
+ }
+ }
+
+ {
+ QSettings settings1(settingsPath("custom/custom.conf"), QSettings::IniFormat);
+ settings1.beginGroup("alpha/beta");
+ settings1.setValue("geometry", -7);
+ settings1.setValue("geometry/x", 1);
+ settings1.setValue("geometry/y", 2);
+ QSettings settings2(settingsPath("custom/custom.conf"), QSettings::IniFormat);
+ settings1.setValue("geometry/width", 3);
+ settings2.setValue("alpha/beta/geometry/height", 4);
+ settings2.setValue("alpha/gamma/splitter", 5);
+ settings1.endGroup();
+
+ // test QSettings::scope() while we're at it
+ QVERIFY(settings1.scope() == QSettings::UserScope);
+
+ // test QSettings::organizationName() while we're at it
+ QVERIFY(settings1.organizationName().isEmpty());
+
+ // test QSettings::applicationName() while we're at it
+ QVERIFY(settings1.organizationName().isEmpty());
+
+ QSettings settings3(settingsPath("custom/custom2.conf"), QSettings::IniFormat);
+ settings3.beginGroup("doodley/beta");
+ settings3.setValue("geometry", -7);
+ settings3.setValue("geometry/x", 1);
+ settings3.setValue("geometry/y", 2);
+ settings3.setValue("geometry/width", 3);
+ settings3.setValue("geometry/height", 4);
+ settings3.endGroup();
+ settings3.setValue("alpha/gamma/splitter", 5);
+
+ QCOMPARE(settings1.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings1.value("alpha/beta/geometry/x").toInt(), 1);
+ QCOMPARE(settings1.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings1.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings1.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings1.value("alpha/gamma/splitter").toInt(), 5);
+ QCOMPARE(settings1.allKeys().count(), 6);
+
+ QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings2.value("alpha/beta/geometry/x").toInt(), 1);
+ QCOMPARE(settings2.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings2.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings2.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings2.value("alpha/gamma/splitter").toInt(), 5);
+ QCOMPARE(settings2.allKeys().count(), 6);
+ }
+
+ {
+ QSettings settings1(settingsPath("custom/custom.conf"), QSettings::IniFormat);
+ QCOMPARE(settings1.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings1.value("alpha/beta/geometry/x").toInt(), 1);
+ QCOMPARE(settings1.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings1.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings1.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings1.value("alpha/gamma/splitter").toInt(), 5);
+ QCOMPARE(settings1.allKeys().count(), 6);
+ }
+
+ {
+ // QSettings's default constructor is native by default
+ if (format == QSettings::NativeFormat) {
+ QCoreApplication::instance()->setOrganizationName("");
+ QCoreApplication::instance()->setApplicationName("");
+ QSettings settings;
+ QCOMPARE(settings.status(), QSettings::AccessError);
+ QCoreApplication::instance()->setOrganizationName("software.org");
+ QCoreApplication::instance()->setApplicationName("KillerAPP");
+ QSettings settings2;
+ QCOMPARE(settings2.status(), QSettings::NoError);
+ QSettings settings3("software.org", "KillerAPP");
+ QCOMPARE(settings2.fileName(), settings3.fileName());
+ QCoreApplication::instance()->setOrganizationName("");
+ QCoreApplication::instance()->setApplicationName("");
+ }
+
+ QSettings settings(format, QSettings::UserScope, "", "");
+ QCOMPARE(settings.status(), QSettings::AccessError);
+ QSettings settings2(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QCOMPARE(settings2.status(), QSettings::NoError);
+
+ // test QSettings::format() while we're at it
+ QVERIFY(settings.format() == format);
+ QVERIFY(settings2.format() == format);
+
+ // test QSettings::scope() while we're at it
+ QVERIFY(settings.scope() == QSettings::UserScope);
+ QVERIFY(settings2.scope() == QSettings::UserScope);
+
+ // test QSettings::organizationName() while we're at it
+ QVERIFY(settings.organizationName().isEmpty());
+ QVERIFY(settings2.organizationName() == "software.org");
+
+ // test QSettings::applicationName() while we're at it
+ QVERIFY(settings.applicationName().isEmpty());
+ QVERIFY(settings2.applicationName() == "KillerAPP");
+ }
+}
+
+void tst_QSettings::testByteArray_data()
+{
+ QTest::addColumn<QByteArray>("data");
+
+ QByteArray bytes("Hello world!");
+
+ QTest::newRow("latin1") << bytes;
+#ifndef QT_NO_COMPRESS
+ QTest::newRow("compressed") << qCompress(bytes);
+#endif
+ QTest::newRow("with \\0") << bytes + '\0' + bytes;
+}
+
+void tst_QSettings::testByteArray()
+{
+ QFETCH(QByteArray, data);
+
+ // write
+ {
+ QSettings settings("Trolltech", "tst_qsettings");
+ settings.setValue("byteArray", data);
+ }
+ // read
+ {
+ QSettings settings("Trolltech", "tst_qsettings");
+ QByteArray ret = settings.value("byteArray", data).toByteArray();
+ QCOMPARE(ret, data);
+ }
+}
+
+void tst_QSettings::testErrorHandling_data()
+{
+ QTest::addColumn<int>("filePerms"); // -1 means file should not exist
+ QTest::addColumn<int>("dirPerms");
+ QTest::addColumn<int>("statusAfterCtor");
+ QTest::addColumn<bool>("shouldBeEmpty");
+ QTest::addColumn<int>("statusAfterGet");
+ QTest::addColumn<int>("statusAfterSetAndSync");
+
+ // file dir afterCtor empty afterGet afterSetAndSync
+ QTest::newRow("0600 0700") << 0600 << 0700 << (int)QSettings::NoError << false << (int)QSettings::NoError << (int)QSettings::NoError;
+
+ QTest::newRow("0400 0700") << 0400 << 0700 << (int)QSettings::NoError
+ << false << (int)QSettings::NoError << (int)QSettings::AccessError;
+ QTest::newRow("0200 0700") << 0200 << 0700 << (int)QSettings::AccessError
+ << true << (int)QSettings::AccessError << (int)QSettings::AccessError;
+
+ QTest::newRow(" -1 0700") << -1 << 0700 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::NoError;
+
+ QTest::newRow(" -1 0000") << -1 << 0000 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::AccessError;
+ QTest::newRow(" -1 0100") << -1 << 0100 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::AccessError;
+ QTest::newRow("0600 0100") << 0600 << 0100 << (int)QSettings::NoError << false << (int)QSettings::NoError << (int)QSettings::NoError;
+ QTest::newRow(" -1 0300") << -1 << 0300 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::NoError;
+ QTest::newRow("0600 0300") << 0600 << 0300 << (int)QSettings::NoError << false << (int)QSettings::NoError << (int)QSettings::NoError;
+ QTest::newRow(" -1 0500") << -1 << 0500 << (int)QSettings::NoError << true << (int)QSettings::NoError << (int)QSettings::AccessError;
+ QTest::newRow("0600 0500") << 0600 << 0500 << (int)QSettings::NoError << false << (int)QSettings::NoError << (int)QSettings::NoError;
+}
+
+void tst_QSettings::testErrorHandling()
+{
+#ifdef QT_BUILD_INTERNAL
+#ifdef Q_OS_WIN
+ QSKIP("Windows doesn't support most file modes, including read-only directories, so this test is moot.", SkipAll);
+#elif defined(Q_OS_SYMBIAN)
+ QSKIP("Symbian/Open C doesn't support execute or write only file modes, or directory permissions, so this test is mostly moot.", SkipAll);
+#elif defined(Q_OS_UNIX)
+ if (::getuid() == 0)
+ QSKIP("Running this test as root doesn't work, since file perms do not bother him", SkipAll);
+#else
+ QFETCH(int, filePerms);
+ QFETCH(int, dirPerms);
+ QFETCH(int, statusAfterCtor);
+ QFETCH(bool, shouldBeEmpty);
+ QFETCH(int, statusAfterGet);
+ QFETCH(int, statusAfterSetAndSync);
+
+ system(QString("chmod 700 %1 2>/dev/null").arg(settingsPath("someDir")).toLatin1());
+ system(QString("chmod -R u+rwx %1 2>/dev/null").arg(settingsPath("someDir")).toLatin1());
+ system(QString("rm -fr %1").arg(settingsPath("someDir")).toLatin1());
+
+ // prepare a file with some settings
+ if (filePerms != -1) {
+ QSettings settings(settingsPath("someDir/someSettings.ini"), QSettings::IniFormat);
+ QCOMPARE((int) settings.status(), (int) QSettings::NoError);
+
+ settings.beginGroup("alpha/beta");
+ settings.setValue("geometry", -7);
+ settings.setValue("geometry/x", 1);
+ settings.setValue("geometry/y", 2);
+ settings.setValue("geometry/width", 3);
+ settings.setValue("geometry/height", 4);
+ settings.endGroup();
+ settings.setValue("alpha/gamma/splitter", 5);
+ } else {
+ system(QString("mkdir -p %1").arg(settingsPath("someDir")).toLatin1());
+ }
+
+ if (filePerms != -1) {
+ system(QString("chmod %1 %2")
+ .arg(QString::number(filePerms, 8))
+ .arg(settingsPath("someDir/someSettings.ini"))
+ .toLatin1());
+ }
+ system(QString("chmod %1 %2")
+ .arg(QString::number(dirPerms, 8))
+ .arg(settingsPath("someDir"))
+ .toLatin1());
+
+ // the test
+ {
+ QConfFile::clearCache();
+ QSettings settings(settingsPath("someDir/someSettings.ini"), QSettings::IniFormat);
+ QCOMPARE((int)settings.status(), statusAfterCtor);
+ if (shouldBeEmpty) {
+ QCOMPARE(settings.allKeys().count(), 0);
+ } else {
+ QVERIFY(settings.allKeys().count() > 0);
+ }
+ settings.value("alpha/beta/geometry");
+ QCOMPARE((int)settings.status(), statusAfterGet);
+ settings.setValue("alpha/beta/geometry", 100);
+ QCOMPARE((int)settings.status(), statusAfterGet);
+ QCOMPARE(settings.value("alpha/beta/geometry").toInt(), 100);
+ settings.sync();
+ QCOMPARE(settings.value("alpha/beta/geometry").toInt(), 100);
+ QCOMPARE((int)settings.status(), statusAfterSetAndSync);
+ }
+#endif // !Q_OS_WIN
+#endif
+}
+
+Q_DECLARE_METATYPE(QVariant)
+Q_DECLARE_METATYPE(QSettings::Status)
+
+void tst_QSettings::testIniParsing_data()
+{
+ QTest::addColumn<QByteArray>("inicontent");
+ QTest::addColumn<QString>("key");
+ QTest::addColumn<QVariant>("expect");
+ QTest::addColumn<QSettings::Status>("status");
+
+ // Test "forgiving" parsing of entries not terminated with newline or unterminated strings
+ QTest::newRow("good1") << QByteArray("v=1\n") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("good2") << QByteArray("v=1\\\n2") << "v" << QVariant(12) << QSettings::NoError;
+ QTest::newRow("good3") << QByteArray("v=1\\\r2") << "v" << QVariant(12) << QSettings::NoError;
+ QTest::newRow("good4") << QByteArray("v=1\\\n\r2") << "v" << QVariant(12) << QSettings::NoError;
+ QTest::newRow("good5") << QByteArray("v=1\\\r\n2") << "v" << QVariant(12) << QSettings::NoError;
+ QTest::newRow("good6") << QByteArray("v \t = \t 1\\\r\n2") << "v" << QVariant(12) << QSettings::NoError;
+ QTest::newRow("garbage1") << QByteArray("v") << "v" << QVariant() << QSettings::FormatError;
+ QTest::newRow("nonterm1") << QByteArray("v=str") << "v" << QVariant("str") << QSettings::NoError;
+ QTest::newRow("nonterm2") << QByteArray("v=\"str\"") << "v" << QVariant("str") << QSettings::NoError;
+ QTest::newRow("nonterm3") << QByteArray("v=\"str") << "v" << QVariant("str") << QSettings::NoError;
+ QTest::newRow("nonterm4") << QByteArray("v=\\") << "v" << QVariant("") << QSettings::NoError;
+ QTest::newRow("nonterm5") << QByteArray("u=s\nv=\"str") << "v" << QVariant("str") << QSettings::NoError;
+ QTest::newRow("nonterm6") << QByteArray("v=\"str\nw=ok") << "v" << QVariant("str\nw=ok") << QSettings::NoError;
+ QTest::newRow("nonterm7") << QByteArray("v=") << "v" << QVariant("") << QSettings::NoError;
+ QTest::newRow("nonterm8") << QByteArray("v=\"str\njnk") << "v" << QVariant("str\njnk") << QSettings::NoError;
+ QTest::newRow("nonterm9") << QByteArray("v=1\\") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm10") << QByteArray("v=1\\\n") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm11") << QByteArray("v=1\\\r") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm12") << QByteArray("v=1\\\n\r") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm13") << QByteArray("v=1\\\r\n") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm14") << QByteArray("v=1\\\n\nx=2") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm15") << QByteArray("v=1\\\r\rx=2") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm16") << QByteArray("v=1\\\n\n\nx=2") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm17") << QByteArray("; foo\nv=1") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm18") << QByteArray("; foo\n\nv=1") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm19") << QByteArray("\nv=1;foo") << "v" << QVariant(1) << QSettings::NoError;
+ QTest::newRow("nonterm20") << QByteArray("v=x ") << "v" << QVariant("x") << QSettings::NoError;
+ QTest::newRow("nonterm21") << QByteArray("v=x ;") << "v" << QVariant("x") << QSettings::NoError;
+}
+
+void tst_QSettings::testIniParsing()
+{
+#ifdef QT_BUILD_INTERNAL
+ qRegisterMetaType<QVariant>("QVariant");
+ qRegisterMetaType<QSettings::Status>("QSettings::Status");
+
+ QDir dir(settingsPath());
+ QVERIFY(dir.mkpath("someDir"));
+ QFile f(dir.path()+"/someDir/someSettings.ini");
+
+ QFETCH(QByteArray, inicontent);
+ QFETCH(QString, key);
+ QFETCH(QVariant, expect);
+ QFETCH(QSettings::Status, status);
+
+ QVERIFY(f.open(QFile::WriteOnly));
+ f.write(inicontent);
+ f.close();
+
+ QConfFile::clearCache();
+ QSettings settings(settingsPath("someDir/someSettings.ini"), QSettings::IniFormat);
+
+ if ( settings.status() == QSettings::NoError ) { // else no point proceeding
+ QVariant v = settings.value(key);
+ QVERIFY(v.canConvert(expect.type()));
+ // check some types so as to give prettier error messages
+ if ( v.type() == QVariant::String ) {
+ QCOMPARE(v.toString(), expect.toString());
+ } else if ( v.type() == QVariant::Int ) {
+ QCOMPARE(v.toInt(), expect.toInt());
+ } else {
+ QCOMPARE(v, expect);
+ }
+ }
+
+ QCOMPARE(settings.status(), status);
+#endif
+}
+
+/*
+ Tests beginGroup(), endGroup(), and group().
+*/
+void tst_QSettings::beginGroup()
+{
+ QSettings settings1(QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings2(QSettings::UserScope, "software.org", "KillerAPP");
+
+ /*
+ Let's start with some back and forthing.
+ */
+
+ settings1.beginGroup("alpha");
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString());
+ settings1.beginGroup("/beta");
+ QCOMPARE(settings1.group(), QString("beta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString());
+
+ settings1.beginGroup("///gamma//");
+ QCOMPARE(settings1.group(), QString("gamma"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString());
+
+ settings1.setValue("geometry", 5);
+ QCOMPARE(settings1.value("geometry").toInt(), 5);
+ QCOMPARE(settings1.value("/geometry///").toInt(), 5);
+ QCOMPARE(settings2.value("geometry").toInt(), 5);
+ QCOMPARE(settings2.value("/geometry///").toInt(), 5);
+
+ /*
+ OK, now start for real.
+ */
+
+ settings1.beginGroup("alpha");
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.setValue("geometry", 66);
+ QCOMPARE(settings1.value("geometry").toInt(), 66);
+ QCOMPARE(settings2.value("geometry").toInt(), 5);
+ QCOMPARE(settings2.value("alpha/geometry").toInt(), 66);
+
+ QSettings settings3(QSettings::UserScope, "software.org", "KillerAPP");
+ settings3.beginGroup("alpha");
+ QCOMPARE(settings3.value("geometry").toInt(), 66);
+
+ settings1.beginGroup("/beta///");
+ QCOMPARE(settings1.group(), QString("alpha/beta"));
+ settings1.setValue("geometry", 777);
+ QCOMPARE(settings1.value("geometry").toInt(), 777);
+ QCOMPARE(settings2.value("geometry").toInt(), 5);
+ QCOMPARE(settings2.value("alpha/geometry").toInt(), 66);
+ QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), 777);
+ QCOMPARE(settings3.value("geometry").toInt(), 66);
+ QCOMPARE(settings3.value("beta/geometry").toInt(), 777);
+
+ settings3.beginGroup("gamma");
+ settings3.setValue("geometry", 8888);
+ QCOMPARE(settings3.value("geometry").toInt(), 8888);
+ QCOMPARE(settings2.value("geometry").toInt(), 5);
+ QCOMPARE(settings2.value("alpha/geometry").toInt(), 66);
+ QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), 777);
+ QCOMPARE(settings2.value("alpha/gamma/geometry").toInt(), 8888);
+ QCOMPARE(settings1.value("geometry").toInt(), 777);
+
+ // endGroup() should do nothing if group() is empty
+ for (int i = 0; i < 10; ++i)
+ settings2.endGroup();
+ QCOMPARE(settings2.value("geometry").toInt(), 5);
+ QCOMPARE(settings2.value("alpha/geometry").toInt(), 66);
+ QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), 777);
+ QCOMPARE(settings2.value("alpha/gamma/geometry").toInt(), 8888);
+
+ QCOMPARE(settings1.group(), QString("alpha/beta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString());
+ QCOMPARE(settings1.value("geometry").toInt(), 5);
+ QCOMPARE(settings1.value("alpha/geometry").toInt(), 66);
+ QCOMPARE(settings1.value("alpha/beta/geometry").toInt(), 777);
+ QCOMPARE(settings1.value("alpha/gamma/geometry").toInt(), 8888);
+
+ settings1.beginGroup("delta");
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.beginGroup("");
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.beginGroup("/");
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.beginGroup("////");
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.beginGroup("////omega///epsilon zeta eta theta/ / /");
+ QCOMPARE(settings1.group(), QString("delta/omega/epsilon zeta eta theta/ / "));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("delta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString());
+}
+
+/*
+ Tests setValue() and getXxx().
+*/
+void tst_QSettings::setValue()
+{
+ QSettings settings(QSettings::UserScope, "software.org", "KillerAPP");
+
+ settings.setValue("key 2", (int)0x7fffffff);
+ QCOMPARE(settings.value("key 2").toInt(), (int)0x7fffffff);
+ QCOMPARE(settings.value("key 2").toString(), QString::number((int)0x7fffffff));
+ settings.setValue("key 2", -1);
+ QCOMPARE(settings.value("key 2").toInt(), -1);
+ QCOMPARE(settings.value("key 2").toString(), QString("-1"));
+ settings.setValue("key 2", (int)0x80000000);
+ QCOMPARE(settings.value("key 2").toInt(), (int)0x80000000);
+ settings.setValue("key 2", (int)0);
+ QCOMPARE(settings.value("key 2", 123).toInt(), (int)0);
+ settings.setValue("key 2", (int)12345);
+ QCOMPARE(settings.value("key 2").toInt(), (int)12345);
+ QCOMPARE(settings.value("no such key", 1234).toInt(), (int)1234);
+ QCOMPARE(settings.value("no such key").toInt(), (int)0);
+
+ settings.setValue("key 2", true);
+ QCOMPARE(settings.value("key 2").toBool(), true);
+ settings.setValue("key 2", false);
+ QCOMPARE(settings.value("key 2", true).toBool(), false);
+ settings.setValue("key 2", (int)1);
+ QCOMPARE(settings.value("key 2").toBool(), true);
+ settings.setValue("key 2", (int)-1);
+ QCOMPARE(settings.value("key 2").toBool(), true);
+ settings.setValue("key 2", (int)0);
+ QCOMPARE(settings.value("key 2", true).toBool(), false);
+ settings.setValue("key 2", QString("true"));
+ QCOMPARE(settings.value("key 2").toBool(), true);
+ settings.setValue("key 2", QString("false"));
+ QCOMPARE(settings.value("key 2", true).toBool(), false);
+/*
+ settings.setValue("key 2", "true");
+ QCOMPARE(settings.value("key 2").toBool(), true);
+ settings.setValue("key 2", "false");
+ QCOMPARE(settings.value("key 2", true).toBool(), false);
+ settings.setValue("key 2", "");
+ QCOMPARE(settings.value("key 2", true).toBool(), true);
+ settings.setValue("key 2", "");
+ QCOMPARE(settings.value("key 2", false).toBool(), false);
+ settings.setValue("key 2", "0.000e-00"); // cannot convert double to a bool
+ QCOMPARE(settings.value("key 2", true).toBool(), true);
+ settings.setValue("key 2", "0.000e-00");
+ QCOMPARE(settings.value("key 2", false).toBool(), false);
+
+*/
+ settings.setValue("key 2", QStringList());
+ QCOMPARE(settings.value("key 2").toStringList(), QStringList());
+ settings.setValue("key 2", QStringList(""));
+ QCOMPARE(settings.value("key 2").toStringList(), QStringList(""));
+ settings.setValue("key 2", QStringList() << "" << "");
+ QCOMPARE(settings.value("key 2").toStringList(), QStringList() << "" << "");
+ settings.setValue("key 2", QStringList() << "" << "a" << "" << "bc" << "");
+ QCOMPARE(settings.value("key 2").toStringList(), QStringList() << "" << "a" << "" << "bc" << "");
+
+ settings.setValue("key 3", QList<QVariant>());
+ QCOMPARE(settings.value("key 3").toList(), QList<QVariant>());
+ settings.setValue("key 3", QList<QVariant>() << 1 << QString("a"));
+ QCOMPARE(settings.value("key 3").toList(), QList<QVariant>() << 1 << QString("a"));
+
+ QList<QVariant> outerList;
+ outerList << 1 << QString("b");
+ QList<QVariant> innerList = outerList;
+ outerList.append(QVariant(innerList));
+ outerList.append(QVariant(innerList));
+ outerList << 2 << QString("c");
+ innerList = outerList;
+ outerList.append(QVariant(innerList));
+ // outerList: [1, "b", [1, "b"], [1, "b"], 2, "c", [1, "b", [1, "b"], [1, "b"], 2, "c"]]
+
+ settings.setValue("key 3", outerList);
+ QCOMPARE(settings.value("key 3").toList(), outerList);
+ QCOMPARE(settings.value("key 3").toList().size(), 7);
+
+ QMap<QString, QVariant> map;
+ map.insert("1", "one");
+ map.insert("2", "two");
+ map.insert("3", outerList);
+ map.insert("5", "cinco");
+ map.insert("10", "zehn");
+ settings.setValue("key 4", map);
+ QCOMPARE(settings.value("key 4").toMap(), map);
+}
+
+void tst_QSettings::testVariantTypes_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::testVariantTypes()
+{
+#ifdef QT_BUILD_INTERNAL
+#define testVal(key, val, tp, rtype) \
+ { \
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP"); \
+ settings1.setValue(key, qVariantFromValue(val)); \
+ } \
+ QConfFile::clearCache(); \
+ { \
+ QSettings settings2(format, QSettings::UserScope, "software.org", "KillerAPP"); \
+ QVariant v = settings2.value(key); \
+ QVERIFY(qvariant_cast<tp >(v) == val); \
+ QVERIFY(v.type() == QVariant::rtype); \
+ }
+
+ typedef QMap<QString, QVariant> TestVariantMap;
+
+ QFETCH(QSettings::Format, format);
+
+ TestVariantMap m2;
+ m2.insert("ene", "due");
+ m2.insert("rike", "fake");
+ m2.insert("borba", "dorba");
+ testVal("key2", m2, TestVariantMap, Map);
+
+ QStringList l2;
+
+ l2 << "ene" << "due" << "@Point(1 2)" << "@fake";
+ testVal("key3", l2, QStringList, StringList);
+
+ l2.clear();
+ l2 << "ene" << "due" << "rike" << "fake";
+ testVal("key3", l2, QStringList, StringList);
+
+ QList<QVariant> l3;
+ QDate date = QDate::currentDate();
+ QTime time = QTime::currentTime();
+ l3 << QString("ene") << 10 << qVariantFromValue(QColor(1, 2, 3)) << QVariant(QRect(1, 2, 3, 4))
+ << QVariant(QSize(4, 56)) << QVariant(QPoint(4, 2)) << true << false << date << time;
+ testVal("key3", l3, QVariantList, List);
+
+ testVal("key4", QString("hello"), QString, String);
+ testVal("key5", QColor(1, 2, 3), QColor, Color);
+ testVal("key6", QRect(1, 2, 3, 4), QRect, Rect);
+ testVal("key7", QSize(4, 56), QSize, Size);
+ testVal("key8", QPoint(4, 2), QPoint, Point);
+ testVal("key10", date, QDate, Date);
+ testVal("key11", time, QTime, Time);
+ testVal("key12", QByteArray("foo bar"), QByteArray, ByteArray);
+
+ {
+ QSettings settings(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QVERIFY(!settings.contains("key99"));
+ QCOMPARE(settings.value("key99"), QVariant());
+
+ settings.setValue("key99", QVariant());
+ QVERIFY(settings.contains("key99"));
+ QCOMPARE(settings.value("key99"), QVariant());
+
+ settings.setValue("key99", QVariant(1));
+ QVERIFY(settings.contains("key99"));
+ QCOMPARE(settings.value("key99"), QVariant(1));
+
+ settings.setValue("key99", QVariant());
+ QVERIFY(settings.contains("key99"));
+ QCOMPARE(settings.value("key99"), QVariant());
+
+ settings.remove("key99");
+ QVERIFY(!settings.contains("key99"));
+ QCOMPARE(settings.value("key99"), QVariant());
+ }
+
+ QList<QVariant> l4;
+ l4 << QVariant(m2) << QVariant(l2) << QVariant(l3);
+ testVal("key13", l4, QVariantList, List);
+
+ // We store key sequences as strings instead of binary variant blob, for improved
+ // readability in the resulting format.
+ if (format >= QSettings::InvalidFormat) {
+ testVal("keysequence", QKeySequence(Qt::ControlModifier + Qt::Key_F1), QKeySequence, KeySequence);
+ } else {
+ testVal("keysequence", QKeySequence(Qt::ControlModifier + Qt::Key_F1), QString, String);
+ }
+
+#undef testVal
+#endif
+}
+
+void tst_QSettings::remove()
+{
+ QSettings settings0(QSettings::UserScope, "software.org", "KillerAPP");
+ int initialNumKeys = settings0.allKeys().size();
+ QCOMPARE(settings0.value("key 1", "123").toString(), QString("123"));
+ settings0.remove("key 1");
+ QCOMPARE(settings0.value("key 1", "456").toString(), QString("456"));
+
+ settings0.setValue("key 1", "bubloo");
+ QCOMPARE(settings0.value("key 1").toString(), QString("bubloo"));
+ settings0.remove("key 2");
+ QCOMPARE(settings0.value("key 1").toString(), QString("bubloo"));
+ settings0.remove("key 1");
+ QCOMPARE(settings0.value("key 1", "789").toString(), QString("789"));
+
+ /*
+ Make sure that removing a key removes all the subkeys.
+ */
+ settings0.setValue("alpha/beta/geometry", -7);
+ settings0.setValue("alpha/beta/geometry/x", 1);
+ settings0.setValue("alpha/beta/geometry/y", 2);
+ settings0.setValue("alpha/beta/geometry/width", 3);
+ settings0.setValue("alpha/beta/geometry/height", 4);
+ settings0.setValue("alpha/gamma/splitter", 5);
+
+ settings0.remove("alpha/beta/geometry/x");
+ QCOMPARE(settings0.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings0.value("alpha/beta/geometry/x", 999).toInt(), 999);
+ QCOMPARE(settings0.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings0.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings0.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
+
+ settings0.remove("alpha/beta/geometry");
+ QCOMPARE(settings0.value("alpha/beta/geometry", 777).toInt(), 777);
+ QCOMPARE(settings0.value("alpha/beta/geometry/x", 111).toInt(), 111);
+ QCOMPARE(settings0.value("alpha/beta/geometry/y", 222).toInt(), 222);
+ QCOMPARE(settings0.value("alpha/beta/geometry/width", 333).toInt(), 333);
+ QCOMPARE(settings0.value("alpha/beta/geometry/height", 444).toInt(), 444);
+ QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
+
+ settings0.setValue("alpha/beta/geometry", -7);
+ settings0.setValue("alpha/beta/geometry/x", 1);
+ settings0.setValue("alpha/beta/geometry/y", 2);
+ settings0.setValue("alpha/beta/geometry/width", 3);
+ settings0.setValue("alpha/beta/geometry/height", 4);
+ settings0.setValue("alpha/gamma/splitter", 5);
+ QCOMPARE(settings0.allKeys().size(), initialNumKeys + 6);
+
+ settings0.beginGroup("alpha/beta/geometry");
+ settings0.remove("");
+ settings0.endGroup();
+ QVERIFY(!settings0.contains("alpha/beta/geometry"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/x"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/y"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/width"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/height"));
+ QVERIFY(settings0.contains("alpha/gamma/splitter"));
+ QCOMPARE(settings0.allKeys().size(), initialNumKeys + 1);
+
+ settings0.beginGroup("alpha/beta");
+ settings0.remove("");
+ settings0.endGroup();
+ QVERIFY(!settings0.contains("alpha/beta/geometry"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/x"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/y"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/width"));
+ QVERIFY(!settings0.contains("alpha/beta/geometry/height"));
+ QVERIFY(settings0.contains("alpha/gamma/splitter"));
+ QCOMPARE(settings0.allKeys().size(), initialNumKeys + 1);
+
+ settings0.remove("");
+ QVERIFY(!settings0.contains("alpha/gamma/splitter"));
+ QCOMPARE(settings0.allKeys().size(), initialNumKeys);
+
+ /*
+ Do it again, but this time let's use setGroup().
+ */
+
+ settings0.setValue("alpha/beta/geometry", -7);
+ settings0.setValue("alpha/beta/geometry/x", 1);
+ settings0.setValue("alpha/beta/geometry/y", 2);
+ settings0.setValue("alpha/beta/geometry/width", 3);
+ settings0.setValue("alpha/beta/geometry/height", 4);
+ settings0.setValue("alpha/gamma/splitter", 5);
+
+ settings0.beginGroup("foo/bar/baz/doesn't");
+ settings0.remove("exist");
+ settings0.endGroup();
+ QCOMPARE(settings0.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings0.value("alpha/beta/geometry/x").toInt(), 1);
+ QCOMPARE(settings0.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings0.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings0.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
+
+ settings0.beginGroup("alpha/beta/geometry");
+ settings0.remove("x");
+ settings0.endGroup();
+ QCOMPARE(settings0.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings0.value("alpha/beta/geometry/x", 999).toInt(), 999);
+ QCOMPARE(settings0.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings0.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings0.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
+
+ settings0.remove("alpha/beta");
+ QCOMPARE(settings0.value("alpha/beta/geometry", 777).toInt(), 777);
+ QCOMPARE(settings0.value("alpha/beta/geometry/x", 111).toInt(), 111);
+ QCOMPARE(settings0.value("alpha/beta/geometry/y", 222).toInt(), 222);
+ QCOMPARE(settings0.value("alpha/beta/geometry/width", 333).toInt(), 333);
+ QCOMPARE(settings0.value("alpha/beta/geometry/height", 444).toInt(), 444);
+ QCOMPARE(settings0.value("alpha/gamma/splitter").toInt(), 5);
+
+ settings0.clear();
+ QCOMPARE(settings0.value("alpha/gamma/splitter", 888).toInt(), 888);
+
+ /*
+ OK, now let's check what happens if settings are spread across
+ multiple files (user vs. global, product-specific vs.
+ company-wide).
+ */
+
+ QSettings settings1(QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings2(QSettings::UserScope, "software.org");
+ QSettings settings3(QSettings::SystemScope, "software.org", "KillerAPP");
+ QSettings settings4(QSettings::SystemScope, "software.org");
+
+ settings4.setValue("key 1", "doodah");
+ settings3.setValue("key 1", "blah");
+ settings2.setValue("key 1", "whoa");
+ settings1.setValue("key 1", "gurgle");
+ QCOMPARE(settings1.value("key 1").toString(), QString("gurgle"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("whoa"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings1.remove("key 1");
+ QCOMPARE(settings1.value("key 1").toString(), QString("whoa"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("whoa"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings2.remove("key 1");
+ QCOMPARE(settings1.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("blah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings3.remove("key 1");
+ QCOMPARE(settings1.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("doodah"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("doodah"));
+
+ settings4.remove("key 1");
+ QVERIFY(!settings1.contains("key 1"));
+ QVERIFY(!settings2.contains("key 1"));
+ QVERIFY(!settings3.contains("key 1"));
+ QVERIFY(!settings4.contains("key 1"));
+
+ /*
+ Get ready for the next part of the test.
+ */
+
+ settings1.clear();
+ settings2.clear();
+ settings3.clear();
+ settings4.clear();
+
+ settings1.sync();
+ settings2.sync();
+ settings3.sync();
+ settings4.sync();
+
+ /*
+ Check that recursive removes work correctly when some of the
+ keys are loaded from the file and others have been modified in
+ memory (corresponds to originalKeys vs. addedKeys in the
+ QSettingsFile code).
+ */
+
+ settings1.setValue("alpha/beta/geometry", -7);
+ settings1.setValue("alpha/beta/geometry/x", 1);
+ settings1.setValue("alpha/beta/geometry/y", 2);
+ settings1.setValue("alpha/gamma/splitter", 5);
+ settings1.sync();
+
+ settings1.setValue("alpha/beta/geometry/width", 3);
+ settings1.setValue("alpha/beta/geometry/height", 4);
+
+ settings1.remove("alpha/beta/geometry/y");
+ QVERIFY(settings1.contains("alpha/beta/geometry"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/x"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/y"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/width"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/height"));
+ QCOMPARE(settings1.allKeys().size(), initialNumKeys + 5);
+
+ settings1.remove("alpha/beta/geometry/y");
+ QCOMPARE(settings1.allKeys().size(), initialNumKeys + 5);
+
+ settings1.remove("alpha/beta/geometry/height");
+ QVERIFY(settings1.contains("alpha/beta/geometry"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/x"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/y"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/width"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/height"));
+ QCOMPARE(settings1.allKeys().size(), initialNumKeys + 4);
+
+ settings1.remove("alpha/beta/geometry");
+ QVERIFY(!settings1.contains("alpha/beta/geometry"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/x"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/y"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/width"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/height"));
+ QVERIFY(settings1.contains("alpha/gamma/splitter"));
+ QCOMPARE(settings1.allKeys().size(), initialNumKeys + 1);
+
+ settings1.sync();
+ QVERIFY(!settings1.contains("alpha/beta/geometry"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/x"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/y"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/width"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/height"));
+ QVERIFY(settings1.contains("alpha/gamma/splitter"));
+ QCOMPARE(settings1.allKeys().size(), initialNumKeys + 1);
+}
+
+/*
+ Tests contains() and keys().
+*/
+void tst_QSettings::contains()
+{
+ QSettings settings1(QSettings::UserScope, "software.org", "KillerAPP");
+ int initialNumKeys = settings1.allKeys().size(); // 0 on all platforms but Mac OS X.
+ settings1.setValue("alpha/beta/geometry", -7);
+ settings1.setValue("alpha/beta/geometry/x", 1);
+ settings1.setValue("alpha/beta/geometry/y", 2);
+ settings1.setValue("alpha/beta/geometry/width", 3);
+ settings1.setValue("alpha/beta/geometry/height", 4);
+ settings1.setValue("alpha/gamma/splitter", 5);
+ settings1.setValue("alpha/gamma/splitter/ /", 5);
+
+ QVERIFY(!settings1.contains("alpha"));
+ QVERIFY(!settings1.contains("alpha/beta"));
+ QVERIFY(!settings1.contains("///alpha///beta///"));
+ QVERIFY(settings1.contains("alpha/beta/geometry"));
+ QVERIFY(settings1.contains("///alpha///beta//geometry//"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/x"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/y"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/width"));
+ QVERIFY(settings1.contains("alpha/beta/geometry/height"));
+ QVERIFY(!settings1.contains("alpha/beta/geometry/height/foo/bar/doesn't/exist"));
+ QVERIFY(!settings1.contains("alpha/gamma"));
+ QVERIFY(settings1.contains("alpha/gamma/splitter"));
+ QVERIFY(settings1.contains("alpha/gamma/splitter/ "));
+ QVERIFY(settings1.contains("////alpha/gamma/splitter// ////"));
+
+ settings1.beginGroup("alpha");
+ QVERIFY(!settings1.contains("beta"));
+ QVERIFY(!settings1.contains("/////beta///"));
+ QVERIFY(settings1.contains("beta/geometry"));
+ QVERIFY(settings1.contains("/////beta//geometry//"));
+ QVERIFY(settings1.contains("beta/geometry/x"));
+ QVERIFY(settings1.contains("beta/geometry/y"));
+ QVERIFY(settings1.contains("beta/geometry/width"));
+ QVERIFY(settings1.contains("beta/geometry/height"));
+ QVERIFY(!settings1.contains("beta/geometry/height/foo/bar/doesn't/exist"));
+ QVERIFY(!settings1.contains("gamma"));
+ QVERIFY(settings1.contains("gamma/splitter"));
+ QVERIFY(settings1.contains("gamma/splitter/ "));
+ QVERIFY(settings1.contains("////gamma/splitter// ////"));
+
+ settings1.beginGroup("beta/geometry");
+ QVERIFY(settings1.contains("x"));
+ QVERIFY(settings1.contains("y"));
+ QVERIFY(settings1.contains("width"));
+ QVERIFY(settings1.contains("height"));
+ QVERIFY(!settings1.contains("height/foo/bar/doesn't/exist"));
+
+ QStringList keys = settings1.allKeys();
+ QStringList expectedResult = QStringList() << "x" << "y" << "width" << "height";
+ keys.sort();
+ expectedResult.sort();
+ int i;
+ QCOMPARE(keys, expectedResult);
+ for (i = 0; i < keys.size(); ++i) {
+ QVERIFY(settings1.contains(keys.at(i)));
+ }
+
+ settings1.endGroup();
+ QVERIFY(settings1.group() == "alpha");
+ keys = settings1.allKeys();
+ QCOMPARE(keys.size(), expectedResult.size() + 3);
+ for (i = 0; i < keys.size(); ++i) {
+ QVERIFY(settings1.contains(keys.at(i)));
+ }
+
+ settings1.endGroup();
+ QVERIFY(settings1.group().isEmpty());
+ keys = settings1.allKeys();
+
+ QCOMPARE(keys.size(), initialNumKeys + 7);
+ for (i = 0; i < keys.size(); ++i) {
+ QVERIFY(settings1.contains(keys.at(i)));
+ }
+}
+
+void tst_QSettings::sync()
+{
+ /*
+ What we're trying to test here is the case where two
+ instances of the same application access the same preference
+ files. We want to make sure that the results are 'merged',
+ rather than having the last application overwrite settings
+ set by the first application (like in Qt 3).
+
+ This is only applicable to the INI format. The Windows
+ registry and Mac's CFPreferences API should take care of this
+ by themselves.
+ */
+
+ QSettings settings1(QSettings::IniFormat, QSettings::UserScope, "software.org");
+ settings1.setValue("alpha/beta/geometry", -7);
+ settings1.setValue("alpha/beta/geometry/x", 1);
+ settings1.setValue("alpha/beta/geometry/y", 2);
+ settings1.setValue("alpha/beta/geometry/width", 3);
+ settings1.setValue("alpha/beta/geometry/height", 4);
+ settings1.setValue("alpha/gamma/splitter", 5);
+ settings1.sync(); // and it all goes into the file
+
+ QSettings settings2(QSettings::IniFormat, QSettings::UserScope, "other.software.org");
+ settings2.setValue("alpha/beta/geometry/x", 8);
+ settings2.sync();
+
+ settings2.setValue("moo/beta/geometry", -7);
+ settings2.setValue("moo/beta/geometry/x", 1);
+ settings2.setValue("moo/beta/geometry/y", 2);
+ settings2.setValue("moo/beta/geometry/width", 3);
+ settings2.setValue("moo/beta/geometry/height", 4);
+ settings2.setValue("moo/gamma/splitter", 5);
+ settings2.setValue("alpha/gamma/splitter", 15);
+ settings2.remove("alpha/beta/geometry/x");
+ settings2.remove("alpha/beta/geometry/y"); // should do nothing
+
+ // Now "some other app" will change other.software.org.ini
+ QString userConfDir = settingsPath("__user__") + QDir::separator();
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ unlink((userConfDir + "other.software.org.ini").toLatin1());
+ rename((userConfDir + "software.org.ini").toLatin1(),
+ (userConfDir + "other.software.org.ini").toLatin1());
+#else
+ QFile::remove(userConfDir + "other.software.org.ini");
+ QFile::rename(userConfDir + "software.org.ini" , userConfDir + "other.software.org.ini");
+#endif
+
+ settings2.sync();
+
+ // And voila, we should be merged
+
+ QCOMPARE(settings2.value("alpha/beta/geometry").toInt(), -7);
+ QVERIFY(!settings2.contains("alpha/beta/geometry/x")); // <----- removed by settings2
+ QCOMPARE(settings2.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings2.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings2.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings2.value("alpha/gamma/splitter").toInt(), 15); // <---- set by settings2
+ QCOMPARE(settings2.value("moo/beta/geometry").toInt(), -7);
+ QCOMPARE(settings2.value("moo/beta/geometry/x").toInt(), 1);
+ QCOMPARE(settings2.value("moo/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings2.value("moo/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings2.value("moo/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings2.value("moo/gamma/splitter").toInt(), 5);
+ QCOMPARE(settings2.allKeys().count(), 11);
+
+ // Now, software.org.ini no longer exists, this is same as another app
+ // clearing all settings.
+ settings1.sync();
+ QCOMPARE(settings1.allKeys().count(), 0);
+
+/*
+ // Now "some other app" will change software.org.conf
+ unlink((userConfDir + "software.org.ini").toLatin1());
+ rename((userConfDir + "other.software.org.ini").toLatin1(),
+ (userConfDir + "software.org.ini").toLatin1());
+
+ settings1.sync();
+ QCOMPARE(settings1.value("alpha/beta/geometry").toInt(), -7);
+ QCOMPARE(settings1.value("alpha/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings1.value("alpha/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings1.value("alpha/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings1.value("alpha/gamma/splitter").toInt(), 15);
+ QCOMPARE(settings1.value("moo/beta/geometry").toInt(), -7);
+ QCOMPARE(settings1.value("moo/beta/geometry/x").toInt(), 1);
+ QCOMPARE(settings1.value("moo/beta/geometry/y").toInt(), 2);
+ QCOMPARE(settings1.value("moo/beta/geometry/width").toInt(), 3);
+ QCOMPARE(settings1.value("moo/beta/geometry/height").toInt(), 4);
+ QCOMPARE(settings1.value("moo/gamma/splitter").toInt(), 5);
+ QCOMPARE(settings1.allKeys().count(), 11);
+*/
+}
+
+void tst_QSettings::setFallbacksEnabled_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::setFallbacksEnabled()
+{
+ QFETCH(QSettings::Format, format);
+
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings2(format, QSettings::UserScope, "software.org");
+ QSettings settings3(format, QSettings::SystemScope, "software.org", "KillerAPP");
+ QSettings settings4(format, QSettings::SystemScope, "software.org");
+
+ settings1.setValue("key 1", "alpha");
+ settings2.setValue("key 1", "beta");
+ settings3.setValue("key 1", "gamma");
+ settings4.setValue("key 1", "delta");
+
+ settings1.setValue("key 2", "alpha");
+ settings2.setValue("key 2", "beta");
+ settings3.setValue("key 2", "gamma");
+
+ settings1.setValue("key 3", "alpha");
+ settings3.setValue("key 3", "gamma");
+ settings4.setValue("key 3", "delta");
+
+ settings1.setValue("key 4", "alpha");
+ settings2.setValue("key 4", "beta");
+ settings4.setValue("key 4", "delta");
+
+ settings2.setValue("key 5", "beta");
+ settings3.setValue("key 5", "gamma");
+ settings4.setValue("key 5", "delta");
+
+ QVERIFY(settings1.fallbacksEnabled());
+ QVERIFY(settings2.fallbacksEnabled());
+ QVERIFY(settings3.fallbacksEnabled());
+ QVERIFY(settings4.fallbacksEnabled());
+
+ settings1.setFallbacksEnabled(false);
+ settings2.setFallbacksEnabled(false);
+ settings3.setFallbacksEnabled(false);
+ settings4.setFallbacksEnabled(false);
+
+ QVERIFY(!settings1.fallbacksEnabled());
+ QVERIFY(!settings2.fallbacksEnabled());
+ QVERIFY(!settings3.fallbacksEnabled());
+ QVERIFY(!settings4.fallbacksEnabled());
+
+ /*
+ Make sure that the QSettings objects can still access their
+ main associated file when fallbacks are turned off.
+ */
+
+ QCOMPARE(settings1.value("key 1").toString(), QString("alpha"));
+ QCOMPARE(settings2.value("key 1").toString(), QString("beta"));
+ QCOMPARE(settings3.value("key 1").toString(), QString("gamma"));
+ QCOMPARE(settings4.value("key 1").toString(), QString("delta"));
+
+ QCOMPARE(settings1.value("key 2").toString(), QString("alpha"));
+ QCOMPARE(settings2.value("key 2").toString(), QString("beta"));
+ QCOMPARE(settings3.value("key 2").toString(), QString("gamma"));
+ QVERIFY(!settings4.contains("key 2"));
+
+ QCOMPARE(settings1.value("key 3").toString(), QString("alpha"));
+ QCOMPARE(settings3.value("key 3").toString(), QString("gamma"));
+ QCOMPARE(settings4.value("key 3").toString(), QString("delta"));
+ QVERIFY(!settings2.contains("key 3"));
+
+ QCOMPARE(settings1.value("key 4").toString(), QString("alpha"));
+ QCOMPARE(settings2.value("key 4").toString(), QString("beta"));
+ QCOMPARE(settings4.value("key 4").toString(), QString("delta"));
+ QVERIFY(!settings3.contains("key 4"));
+
+ QCOMPARE(settings2.value("key 5").toString(), QString("beta"));
+ QCOMPARE(settings3.value("key 5").toString(), QString("gamma"));
+ QCOMPARE(settings4.value("key 5").toString(), QString("delta"));
+ QVERIFY(!settings1.contains("key 5"));
+
+ QCOMPARE(settings1.value("key 1").toString(), QString("alpha"));
+ QCOMPARE(settings1.value("key 5").toString(), QString(""));
+ QVERIFY(settings1.contains("key 1"));
+ QVERIFY(!settings1.contains("key 5"));
+}
+
+void tst_QSettings::testChildKeysAndGroups_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::testChildKeysAndGroups()
+{
+ QFETCH(QSettings::Format, format);
+
+ QSettings settings1(format, QSettings::UserScope, "software.org");
+ settings1.setFallbacksEnabled(false);
+ settings1.setValue("alpha/beta/geometry", -7);
+ settings1.setValue("alpha/beta/geometry/x", 1);
+ settings1.setValue("alpha/beta/geometry/y", 2);
+ settings1.setValue("alpha/beta/geometry/width", 3);
+ settings1.setValue("alpha/beta/geometry/height", 4);
+ settings1.setValue("alpha/gamma/splitter", 5);
+
+ QCOMPARE(settings1.childKeys(), QStringList());
+ QCOMPARE(settings1.childGroups(), QStringList() << "alpha");
+
+ settings1.beginGroup("/alpha");
+ QCOMPARE(settings1.childKeys(), QStringList());
+ QCOMPARE(settings1.childGroups(), QStringList() << "beta" << "gamma");
+
+ settings1.beginGroup("/beta");
+ QCOMPARE(settings1.childKeys(), QStringList() << "geometry");
+ QCOMPARE(settings1.childGroups(), QStringList() << "geometry");
+
+ settings1.beginGroup("/geometry");
+ QCOMPARE(settings1.childKeys(), QStringList() << "height" << "width" << "x" << "y");
+ QCOMPARE(settings1.childGroups(), QStringList());
+
+ settings1.beginGroup("/width");
+ QCOMPARE(settings1.childKeys(), QStringList());
+ QCOMPARE(settings1.childGroups(), QStringList());
+
+ settings1.endGroup();
+ settings1.endGroup();
+ settings1.endGroup();
+ settings1.endGroup();
+
+ { // task 53792
+ QSettings settings2("other.software.org");
+ settings2.setValue("viewbar/foo/test1", "1");
+ settings2.setValue("viewbar/foo/test2", "2");
+ settings2.setValue("viewbar/foo/test3", "3");
+ settings2.setValue("viewbar/foo/test4", "4");
+ settings2.setValue("viewbar/foo/test5", "5");
+ settings2.setValue("viewbar/bar/test1", "1");
+ settings2.setValue("viewbar/bar/test2", "2");
+ settings2.setValue("viewbar/bar/test3", "3");
+ settings2.setValue("viewbar/bar/test4", "4");
+ settings2.setValue("viewbar/bar/test5", "5");
+
+ settings2.beginGroup("viewbar");
+ QStringList l = settings2.childGroups();
+ settings2.endGroup();
+ l.sort();
+ QCOMPARE(l, QStringList() << "bar" << "foo");
+ }
+}
+
+void tst_QSettings::testUpdateRequestEvent()
+{
+ QFile::remove("foo");
+ QVERIFY(!QFile::exists("foo"));
+
+ QSettings settings1("foo", QSettings::IniFormat);
+ QVERIFY(!QFile::exists("foo"));
+ QVERIFY(QFileInfo("foo").size() == 0);
+ settings1.setValue("key1", 1);
+ QVERIFY(QFileInfo("foo").size() == 0);
+
+ QTRY_VERIFY(QFileInfo("foo").size() > 0);
+
+ settings1.remove("key1");
+ QVERIFY(QFileInfo("foo").size() > 0);
+
+ QTRY_VERIFY(QFileInfo("foo").size() == 0);
+
+ settings1.setValue("key2", 2);
+ QVERIFY(QFileInfo("foo").size() == 0);
+
+ QTRY_VERIFY(QFileInfo("foo").size() > 0);
+
+ settings1.clear();
+ QVERIFY(QFileInfo("foo").size() > 0);
+
+ QTRY_VERIFY(QFileInfo("foo").size() == 0);
+}
+
+const int NumIterations = 5;
+const int NumThreads = 4;
+
+class SettingsThread : public QThread
+{
+public:
+ void run();
+ void start(int n) { param = n; QThread::start(); }
+
+private:
+ int param;
+};
+
+void SettingsThread::run()
+{
+ for (int i = 0; i < NumIterations; ++i) {
+ QSettings settings("software.org", "KillerAPP");
+ settings.setValue(QString::number((param * NumIterations) + i), param);
+ settings.sync();
+ QCOMPARE((int)settings.status(), (int)QSettings::NoError);
+ }
+}
+
+void tst_QSettings::testThreadSafety()
+{
+ SettingsThread threads[NumThreads];
+ int i, j;
+
+ for (i = 0; i < NumThreads; ++i)
+ threads[i].start(i + 1);
+ for (i = 0; i < NumThreads; ++i)
+ threads[i].wait();
+
+ QSettings settings("software.org", "KillerAPP");
+ for (i = 0; i < NumThreads; ++i) {
+ int param = i + 1;
+ for (j = 0; j < NumIterations; ++j) {
+ QCOMPARE(settings.value(QString::number((param * NumIterations) + j)).toInt(), param);
+ }
+ }
+}
+
+void tst_QSettings::testNormalizedKey_data()
+{
+ QTest::addColumn<QString>("inKey");
+ QTest::addColumn<QString>("outKey");
+
+ QTest::newRow("empty1") << "" << "";
+ QTest::newRow("empty2") << "/" << "";
+ QTest::newRow("empty3") << "//" << "";
+ QTest::newRow("empty4") << "///" << "";
+
+ QTest::newRow("a1") << "a" << "a";
+ QTest::newRow("a2") << "/a" << "a";
+ QTest::newRow("a3") << "a/" << "a";
+ QTest::newRow("a4") << "//a" << "a";
+ QTest::newRow("a5") << "a//" << "a";
+ QTest::newRow("a6") << "///a" << "a";
+ QTest::newRow("a7") << "a///" << "a";
+ QTest::newRow("a8") << "///a/" << "a";
+ QTest::newRow("a9") << "/a///" << "a";
+
+ QTest::newRow("ab1") << "aaa/bbb" << "aaa/bbb";
+ QTest::newRow("ab2") << "/aaa/bbb" << "aaa/bbb";
+ QTest::newRow("ab3") << "aaa/bbb/" << "aaa/bbb";
+ QTest::newRow("ab4") << "/aaa/bbb/" << "aaa/bbb";
+ QTest::newRow("ab5") << "aaa///bbb" << "aaa/bbb";
+ QTest::newRow("ab6") << "aaa///bbb/" << "aaa/bbb";
+ QTest::newRow("ab7") << "/aaa///bbb/" << "aaa/bbb";
+ QTest::newRow("ab8") << "////aaa///bbb////" << "aaa/bbb";
+}
+
+void tst_QSettings::testNormalizedKey()
+{
+#ifdef QT_BUILD_INTERNAL
+ QFETCH(QString, inKey);
+ QFETCH(QString, outKey);
+
+ inKey.detach();
+
+ QString result = QSettingsPrivate::normalizedKey(inKey);
+ QCOMPARE(result, outKey);
+
+ /*
+ If the key is already normalized, we verify that outKey is
+ just a shallow copy of the input string. This is an important
+ optimization that shouldn't be removed accidentally.
+ */
+ if (inKey == outKey) {
+ QVERIFY(!result.isDetached());
+ } else {
+ if (!result.isEmpty()) {
+ QVERIFY(result.isDetached());
+ }
+ }
+#endif
+}
+
+void tst_QSettings::testEmptyData()
+{
+ QString filename(QDir::tempPath() + "/empty.ini");
+ QFile::remove(filename);
+ QVERIFY(!QFile::exists(filename));
+
+ QString nullString;
+ QString emptyString("");
+ QStringList emptyList;
+ QStringList list;
+ QStringList list2;
+
+ QVariantList emptyVList;
+ QVariantList vList, vList2, vList3;
+
+ list << emptyString << nullString;
+ list2 << emptyString;
+ vList << emptyString;
+ vList2 << emptyString << nullString;
+ vList3 << QString("foo");
+
+ {
+ QSettings settings(filename, QSettings::IniFormat);
+ settings.setValue("nullString", nullString);
+ settings.setValue("emptyString", emptyString);
+ settings.setValue("emptyList", emptyList);
+ settings.setValue("list", list);
+ settings.setValue("list2", list2);
+ settings.setValue("emptyVList", emptyVList);
+ settings.setValue("vList", vList);
+ settings.setValue("vList2", vList2);
+ settings.setValue("vList3", vList3);
+ QVERIFY(settings.status() == QSettings::NoError);
+ }
+ {
+ QSettings settings(filename, QSettings::IniFormat);
+ QCOMPARE(settings.value("nullString").toString(), nullString);
+ QCOMPARE(settings.value("emptyString").toString(), emptyString);
+ QCOMPARE(settings.value("emptyList").toStringList(), emptyList);
+ QCOMPARE(settings.value("list").toStringList(), list);
+ QCOMPARE(settings.value("list2").toStringList(), list2);
+ QCOMPARE(settings.value("emptyVList").toList(), emptyVList);
+ QCOMPARE(settings.value("vList").toList(), vList);
+ QCOMPARE(settings.value("vList2").toList(), vList2);
+ QCOMPARE(settings.value("vList3").toList(), vList3);
+ QVERIFY(settings.status() == QSettings::NoError);
+ }
+
+ {
+ QSettings settings("Trolltech", "tst_qsettings");
+ settings.setValue("nullString", nullString);
+ settings.setValue("emptyString", emptyString);
+ settings.setValue("emptyList", emptyList);
+ settings.setValue("list", list);
+ settings.setValue("list2", list2);
+ settings.setValue("emptyVList", emptyVList);
+ settings.setValue("vList", vList);
+ settings.setValue("vList2", vList2);
+ settings.setValue("vList3", vList3);
+ QVERIFY(settings.status() == QSettings::NoError);
+ }
+ {
+ QSettings settings("Trolltech", "tst_qsettings");
+ QCOMPARE(settings.value("nullString").toString(), nullString);
+ QCOMPARE(settings.value("emptyString").toString(), emptyString);
+ QCOMPARE(settings.value("emptyList").toStringList(), emptyList);
+ QCOMPARE(settings.value("list").toStringList(), list);
+ QCOMPARE(settings.value("list2").toStringList(), list2);
+ QCOMPARE(settings.value("emptyVList").toList(), emptyVList);
+ QCOMPARE(settings.value("vList").toList(), vList);
+ QCOMPARE(settings.value("vList2").toList(), vList2);
+ QCOMPARE(settings.value("vList3").toList(), vList3);
+ QVERIFY(settings.status() == QSettings::NoError);
+ }
+ QFile::remove(filename);
+}
+
+void tst_QSettings::testResourceFiles()
+{
+ QSettings settings(":/resourcefile.ini", QSettings::IniFormat);
+ QVERIFY(settings.status() == QSettings::NoError);
+ QVERIFY(!settings.isWritable());
+ QCOMPARE(settings.value("Field 1/Bottom").toInt(), 89);
+ settings.setValue("Field 1/Bottom", 90);
+
+ // the next two lines check the statu quo; another behavior would be possible
+ QVERIFY(settings.status() == QSettings::NoError);
+ QCOMPARE(settings.value("Field 1/Bottom").toInt(), 90);
+
+ settings.sync();
+ QVERIFY(settings.status() == QSettings::AccessError);
+ QCOMPARE(settings.value("Field 1/Bottom").toInt(), 90);
+}
+
+void tst_QSettings::fromFile_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::fromFile()
+{
+ QFETCH(QSettings::Format, format);
+
+ QFile::remove("foo");
+ QVERIFY(!QFile::exists("foo"));
+
+ QString path = "foo";
+
+#ifdef Q_OS_WIN
+ if (format == QSettings::NativeFormat)
+ path = "\\HKEY_CURRENT_USER\\Software\\foo";
+#endif
+
+ QStringList strList = QStringList() << "hope" << "destiny" << "chastity";
+
+ {
+ QSettings settings1(path, format);
+ QVERIFY(settings1.allKeys().isEmpty());
+
+ settings1.setValue("alpha", 1);
+ settings1.setValue("alpha", 2);
+ settings1.setValue("beta", strList);
+
+ QSettings settings2(path, format);
+ QCOMPARE(settings2.value("alpha").toInt(), 2);
+
+ settings1.sync();
+#ifndef Q_OS_WIN
+ QVERIFY(QFile::exists("foo"));
+#endif
+ QCOMPARE(settings1.value("alpha").toInt(), 2);
+ QCOMPARE(settings2.value("alpha").toInt(), 2);
+
+ settings2.setValue("alpha", 3);
+ settings2.setValue("gamma/foo.bar", 4);
+ QCOMPARE(settings1.value("alpha").toInt(), 3);
+ QCOMPARE(settings2.value("alpha").toInt(), 3);
+ QCOMPARE(settings1.value("beta").toStringList(), strList);
+ QCOMPARE(settings2.value("beta").toStringList(), strList);
+ QCOMPARE(settings1.value("gamma/foo.bar").toInt(), 4);
+ QCOMPARE(settings2.value("gamma/foo.bar").toInt(), 4);
+ }
+
+ {
+ QSettings settings1(path, format);
+ QCOMPARE(settings1.value("alpha").toInt(), 3);
+ QCOMPARE(settings1.value("beta").toStringList(), strList);
+ QCOMPARE(settings1.value("gamma/foo.bar").toInt(), 4);
+ QCOMPARE(settings1.allKeys().size(), 3);
+ }
+}
+
+void tst_QSettings::setIniCodec()
+{
+#ifdef QT_BUILD_INTERNAL
+ QByteArray expeContents4, expeContents5;
+ QByteArray actualContents4, actualContents5;
+
+ {
+ QFile inFile(":/resourcefile4.ini");
+ inFile.open(QIODevice::ReadOnly);
+ expeContents4 = inFile.readAll();
+ inFile.close();
+ }
+
+ {
+ QFile inFile(":/resourcefile5.ini");
+ inFile.open(QIODevice::ReadOnly);
+ expeContents5 = inFile.readAll();
+ inFile.close();
+ }
+
+ {
+ QSettings settings4(QSettings::IniFormat, QSettings::UserScope, "software.org", "KillerAPP");
+ settings4.setIniCodec("UTF-8");
+ settings4.setValue(QLatin1String("Fa\xe7" "ade/QU\xc9" "BEC"), QLatin1String("Fa\xe7" "ade/QU\xc9" "BEC"));
+ settings4.sync();
+
+ QSettings settings5(QSettings::IniFormat, QSettings::UserScope, "other.software.org", "KillerAPP");
+ settings5.setIniCodec("ISO 8859-1");
+ settings5.setValue(QLatin1String("Fa\xe7" "ade/QU\xc9" "BEC"), QLatin1String("Fa\xe7" "ade/QU\xc9" "BEC"));
+ settings5.sync();
+
+ {
+ QFile inFile(settings4.fileName());
+ inFile.open(QIODevice::ReadOnly);
+ actualContents4 = inFile.readAll();
+ inFile.close();
+ }
+
+ {
+ QFile inFile(settings5.fileName());
+ inFile.open(QIODevice::ReadOnly);
+ actualContents5 = inFile.readAll();
+ inFile.close();
+ }
+ }
+
+ QConfFile::clearCache();
+
+ QCOMPARE(actualContents4, expeContents4);
+ QCOMPARE(actualContents5, expeContents5);
+
+ QSettings settings4(QSettings::IniFormat, QSettings::UserScope, "software.org", "KillerAPP");
+ settings4.setIniCodec("UTF-8");
+ QSettings settings5(QSettings::IniFormat, QSettings::UserScope, "other.software.org", "KillerAPP");
+ settings5.setIniCodec("Latin-1");
+
+ QCOMPARE(settings4.allKeys().count(), 1);
+ QCOMPARE(settings5.allKeys().count(), 1);
+
+ QCOMPARE(settings4.allKeys().first(), settings5.allKeys().first());
+ QCOMPARE(settings4.value(settings4.allKeys().first()).toString(),
+ settings5.value(settings5.allKeys().first()).toString());
+#endif
+}
+
+static bool containsSubList(QStringList mom, QStringList son)
+{
+ for (int i = 0; i < son.size(); ++i) {
+ if (!mom.contains(son.at(i)))
+ return false;
+ }
+ return true;
+}
+
+void tst_QSettings::testArrays_data()
+{
+ populateWithFormats();
+}
+
+/*
+ Tests beginReadArray(), beginWriteArray(), endArray(), and
+ setArrayIndex().
+*/
+void tst_QSettings::testArrays()
+{
+ QFETCH(QSettings::Format, format);
+
+ {
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
+
+ settings1.beginWriteArray("foo/bar", 3);
+ settings1.setValue("bip", 1);
+ settings1.setArrayIndex(0);
+ settings1.setValue("ene", 2);
+ settings1.setValue("due", 3);
+ settings1.setValue("rike", 4);
+ settings1.setArrayIndex(1);
+ settings1.setValue("ene", 5);
+ settings1.setValue("due", 6);
+ settings1.setValue("rike", 7);
+ settings1.setArrayIndex(2);
+ settings1.setValue("ene", 8);
+ settings1.setValue("due", 9);
+ settings1.setValue("rike", 10);
+ settings1.endArray();
+
+ QStringList expectedList;
+ expectedList
+ << "foo/bar/bip"
+ << "foo/bar/size"
+ << "foo/bar/1/ene"
+ << "foo/bar/1/due"
+ << "foo/bar/1/rike"
+ << "foo/bar/2/ene"
+ << "foo/bar/2/due"
+ << "foo/bar/2/rike"
+ << "foo/bar/3/ene"
+ << "foo/bar/3/due"
+ << "foo/bar/3/rike";
+ expectedList.sort();
+
+ QStringList actualList = settings1.allKeys();
+ actualList.sort();
+ QVERIFY(containsSubList(actualList, expectedList));
+
+ QCOMPARE(settings1.value("/foo/bar/bip").toInt(), 1);
+ QCOMPARE(settings1.value("/foo/bar/1/ene").toInt(), 2);
+ QCOMPARE(settings1.value("/foo/bar/1/due").toInt(), 3);
+ QCOMPARE(settings1.value("/foo/bar/1/rike").toInt(), 4);
+ QCOMPARE(settings1.value("/foo/bar/2/ene").toInt(), 5);
+ QCOMPARE(settings1.value("/foo/bar/2/due").toInt(), 6);
+ QCOMPARE(settings1.value("/foo/bar/2/rike").toInt(), 7);
+ QCOMPARE(settings1.value("/foo/bar/3/ene").toInt(), 8);
+ QCOMPARE(settings1.value("/foo/bar/3/due").toInt(), 9);
+ QCOMPARE(settings1.value("/foo/bar/3/rike").toInt(), 10);
+
+ settings1.beginGroup("/foo");
+ int count = settings1.beginReadArray("bar");
+ QCOMPARE(count, 3);
+ QCOMPARE(settings1.value("bip").toInt(), 1);
+ settings1.setArrayIndex(0);
+ QCOMPARE(settings1.value("ene").toInt(), 2);
+ QCOMPARE(settings1.value("due").toInt(), 3);
+ QCOMPARE(settings1.value("rike").toInt(), 4);
+ QCOMPARE(settings1.allKeys().count(), 3);
+ settings1.setArrayIndex(1);
+ QCOMPARE(settings1.value("ene").toInt(), 5);
+ QCOMPARE(settings1.value("due").toInt(), 6);
+ QCOMPARE(settings1.value("rike").toInt(), 7);
+ QCOMPARE(settings1.allKeys().count(), 3);
+ settings1.setArrayIndex(2);
+ QCOMPARE(settings1.value("ene").toInt(), 8);
+ QCOMPARE(settings1.value("due").toInt(), 9);
+ QCOMPARE(settings1.value("rike").toInt(), 10);
+ QCOMPARE(settings1.allKeys().count(), 3);
+
+ settings1.endArray();
+ settings1.endGroup();
+ }
+ /*
+ Check that we get the arrays right when we load them again
+ */
+
+ {
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
+
+ QStringList expectedList;
+ expectedList
+ << "foo/bar/bip"
+ << "foo/bar/size"
+ << "foo/bar/1/ene"
+ << "foo/bar/1/due"
+ << "foo/bar/1/rike"
+ << "foo/bar/2/ene"
+ << "foo/bar/2/due"
+ << "foo/bar/2/rike"
+ << "foo/bar/3/ene"
+ << "foo/bar/3/due"
+ << "foo/bar/3/rike";
+ expectedList.sort();
+
+ QStringList actualList = settings1.allKeys();
+ actualList.sort();
+ QVERIFY(containsSubList(actualList, expectedList));
+
+ QCOMPARE(settings1.value("/foo/bar/bip").toInt(), 1);
+ QCOMPARE(settings1.value("/foo/bar/1/ene").toInt(), 2);
+ QCOMPARE(settings1.value("/foo/bar/1/due").toInt(), 3);
+ QCOMPARE(settings1.value("/foo/bar/1/rike").toInt(), 4);
+ QCOMPARE(settings1.value("/foo/bar/2/ene").toInt(), 5);
+ QCOMPARE(settings1.value("/foo/bar/2/due").toInt(), 6);
+ QCOMPARE(settings1.value("/foo/bar/2/rike").toInt(), 7);
+ QCOMPARE(settings1.value("/foo/bar/3/ene").toInt(), 8);
+ QCOMPARE(settings1.value("/foo/bar/3/due").toInt(), 9);
+ QCOMPARE(settings1.value("/foo/bar/3/rike").toInt(), 10);
+
+ settings1.beginGroup("/foo");
+ int count = settings1.beginReadArray("bar");
+ QCOMPARE(count, 3);
+ QCOMPARE(settings1.value("bip").toInt(), 1);
+ settings1.setArrayIndex(0);
+ QCOMPARE(settings1.value("ene").toInt(), 2);
+ QCOMPARE(settings1.value("due").toInt(), 3);
+ QCOMPARE(settings1.value("rike").toInt(), 4);
+ QCOMPARE(settings1.allKeys().count(), 3);
+ settings1.setArrayIndex(1);
+ QCOMPARE(settings1.value("ene").toInt(), 5);
+ QCOMPARE(settings1.value("due").toInt(), 6);
+ QCOMPARE(settings1.value("rike").toInt(), 7);
+ QCOMPARE(settings1.allKeys().count(), 3);
+ settings1.setArrayIndex(2);
+ QCOMPARE(settings1.value("ene").toInt(), 8);
+ QCOMPARE(settings1.value("due").toInt(), 9);
+ QCOMPARE(settings1.value("rike").toInt(), 10);
+ QCOMPARE(settings1.allKeys().count(), 3);
+
+ settings1.endArray();
+ settings1.endGroup();
+ }
+ /*
+ This code generates lots of warnings, but that's on purpose.
+ Basically, we check that endGroup() can be used instead of
+ endArray() and vice versa. This is not documented, but this
+ is the behavior that we have chosen.
+ */
+ QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ settings1.clear();
+ settings1.beginGroup("/alpha");
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.setArrayIndex(0);
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.setArrayIndex(1);
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.setArrayIndex(2);
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.beginGroup("/beta");
+ QCOMPARE(settings1.group(), QString("alpha/beta"));
+ settings1.beginGroup("");
+ QCOMPARE(settings1.group(), QString("alpha/beta"));
+ settings1.beginWriteArray("DO", 4);
+ QCOMPARE(settings1.value("size").toInt(), 4);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO"));
+ settings1.setArrayIndex(0);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/1"));
+ settings1.setArrayIndex(1);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2"));
+ settings1.beginGroup("1");
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1"));
+ settings1.setArrayIndex(3);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1"));
+ settings1.setArrayIndex(4);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1"));
+ settings1.beginWriteArray("RE");
+ QVERIFY(!settings1.contains("size"));
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1/RE"));
+ settings1.setArrayIndex(0);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1/RE/1"));
+ settings1.setArrayIndex(1);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1/RE/2"));
+ settings1.endArray();
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2/1"));
+ settings1.endArray();
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/2"));
+ settings1.setArrayIndex(2);
+ QCOMPARE(settings1.group(), QString("alpha/beta/DO/3"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("alpha/beta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("alpha/beta"));
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString("alpha"));
+ settings1.endArray();
+ QCOMPARE(settings1.group(), QString());
+ settings1.endGroup();
+ QCOMPARE(settings1.group(), QString());
+
+ /*
+ Now, let's make sure that things work well if an array
+ is spread across multiple files.
+ */
+ int i;
+
+ settings1.clear();
+ QSettings settings2(format, QSettings::UserScope, "software.org");
+
+ QStringList threeStrings;
+ threeStrings << "Uno" << "Dos" << "Tres";
+
+ QStringList fiveStrings;
+ fiveStrings << "alpha" << "beta" << "gamma" << "delta" << "epsilon";
+
+ settings1.beginWriteArray("strings");
+ for (i = threeStrings.size() - 1; i >= 0; --i) {
+ settings1.setArrayIndex(i);
+ settings1.setValue("fileName", threeStrings.at(i));
+ }
+ settings1.endArray();
+
+ settings2.beginWriteArray("strings");
+ for (i = fiveStrings.size() - 1; i >= 0; --i) {
+ settings2.setArrayIndex(i);
+ settings2.setValue("fileName", fiveStrings.at(i));
+ }
+ settings2.endArray();
+
+ int size1 = settings1.beginReadArray("strings");
+ QCOMPARE(size1, 3);
+ QCOMPARE(settings1.value("size").toInt(), 3);
+
+ for (i = 0; i < size1; ++i) {
+ settings1.setArrayIndex(i);
+ QString str = settings1.value("fileName").toString();
+ QCOMPARE(str, threeStrings.at(i));
+ }
+ settings1.endArray();
+
+ int size2 = settings2.beginReadArray("strings");
+ QCOMPARE(size2, 5);
+ QCOMPARE(settings2.value("size").toInt(), 5);
+
+ for (i = 0; i < size2; ++i) {
+ settings2.setArrayIndex(i);
+ QString str = settings2.value("fileName").toString();
+ QCOMPARE(str, fiveStrings.at(i));
+ }
+ settings2.endArray();
+
+ size1 = settings1.beginReadArray("strings");
+ QCOMPARE(size1, 3);
+
+ // accessing entries beyond the end of settings1 goes to settings2
+ for (i = size1; i < size2; ++i) {
+ settings1.setArrayIndex(i);
+ QString str = settings1.value("fileName").toString();
+ QCOMPARE(str, fiveStrings.at(i));
+ }
+ settings1.endArray();
+}
+
+#ifdef QT_BUILD_INTERNAL
+static QByteArray iniEscapedKey(const QString &str)
+{
+ QByteArray result;
+ QSettingsPrivate::iniEscapedKey(str, result);
+ return result;
+}
+
+static QString iniUnescapedKey(const QByteArray &ba)
+{
+ QString result;
+ QSettingsPrivate::iniUnescapedKey(ba, 0, ba.size(), result);
+ return result;
+}
+
+static QByteArray iniEscapedStringList(const QStringList &strList)
+{
+ QByteArray result;
+ QSettingsPrivate::iniEscapedStringList(strList, result, 0);
+ return result;
+}
+
+static QStringList iniUnescapedStringList(const QByteArray &ba)
+{
+ QStringList result;
+ QString str;
+#if QSETTINGS_P_H_VERSION >= 2
+ bool isStringList = QSettingsPrivate::iniUnescapedStringList(ba, 0, ba.size(), str, result
+#if QSETTINGS_P_H_VERSION >= 3
+ , 0
+#endif
+ );
+ if (!isStringList)
+ result = QStringList(str);
+#else
+ QStringList *strList = QSettingsPrivate::iniUnescapedStringList(ba, 0, ba.size(), str);
+ if (strList) {
+ result = *strList;
+ delete strList;
+ } else {
+ result = QStringList(str);
+ }
+#endif
+ return result;
+}
+#endif
+
+QString escapeWeirdChars(const QString &s)
+{
+ QString result;
+ bool escapeNextDigit = false;
+
+ for (int i = 0; i < s.length(); ++i) {
+ QChar c = s.at(i);
+ if (c.unicode() < ' ' || c.unicode() > '~'
+ || (escapeNextDigit && c.unicode() >= '0' && c.unicode() <= 'f')) {
+ result += QString("\\x%1").arg(c.unicode(), 0, 16);
+ escapeNextDigit = true;
+ } else {
+ result += c;
+ escapeNextDigit = false;
+ }
+ }
+
+ return result;
+}
+
+void tst_QSettings::testEscapes()
+{
+#ifdef QT_BUILD_INTERNAL
+ QSettings settings(QSettings::UserScope, "software.org", "KillerAPP");
+
+#define testEscapedKey(plainKey, escKey) \
+ QCOMPARE(iniEscapedKey(plainKey), QByteArray(escKey)); \
+ QCOMPARE(iniUnescapedKey(escKey), QString(plainKey));
+
+#define testUnescapedKey(escKey, plainKey, reescKey) \
+ QCOMPARE(iniUnescapedKey(escKey), QString(plainKey)); \
+ QCOMPARE(iniEscapedKey(plainKey), QByteArray(reescKey)); \
+ QCOMPARE(iniUnescapedKey(reescKey), QString(plainKey));
+
+#define testEscapedStringList(plainStrList, escStrList) \
+ { \
+ QStringList plainList(plainStrList); \
+ QByteArray escList(escStrList); \
+ QCOMPARE(iniEscapedStringList(plainList), escList); \
+ QCOMPARE(iniUnescapedStringList(escList), plainList); \
+ } \
+
+
+#define testUnescapedStringList(escStrList, plainStrList, reescStrList) \
+ { \
+ QStringList plainList(plainStrList); \
+ QByteArray escList(escStrList); \
+ QByteArray reescList(reescStrList); \
+ QCOMPARE(iniUnescapedStringList(escList), plainList); \
+ QCOMPARE(iniEscapedStringList(plainList), reescList); \
+ QCOMPARE(iniUnescapedStringList(reescList), plainList); \
+ } \
+
+
+#define testVariant(val, escStr, func) \
+ { \
+ QVariant v(val); \
+ QString s = QSettingsPrivate::variantToString(v); \
+ /*qDebug() << QString("testVariant(): reference=\"%1\" result=\"%2\"").arg(escStr).arg(s); */\
+ QCOMPARE(s, escStr); \
+ QCOMPARE(QVariant(QSettingsPrivate::stringToVariant(escStr)), v); \
+ QVERIFY(val == v.func()); \
+ }
+
+#define testBadEscape(escStr, vStr) \
+ { \
+ QVariant v = QSettingsPrivate::stringToVariant(QString(escStr)); \
+ QCOMPARE(v.toString(), QString(vStr)); \
+ }
+
+ testEscapedKey("", "");
+ testEscapedKey(" ", "%20");
+ testEscapedKey(" 0123 abcd ", "%200123%20abcd%20");
+ testEscapedKey("~!@#$%^&*()_+.-/\\=", "%7E%21%40%23%24%25%5E%26%2A%28%29_%2B.-\\%5C%3D");
+ testEscapedKey(QString() + QChar(0xabcd) + QChar(0x1234) + QChar(0x0081), "%UABCD%U1234%81");
+ testEscapedKey(QString() + QChar(0xFE) + QChar(0xFF) + QChar(0x100) + QChar(0x101), "%FE%FF%U0100%U0101");
+
+ testUnescapedKey("", "", "");
+ testUnescapedKey("%20", " ", "%20");
+ testUnescapedKey("/alpha/beta", "/alpha/beta", "\\alpha\\beta");
+ testUnescapedKey("\\alpha\\beta", "/alpha/beta", "\\alpha\\beta");
+ testUnescapedKey("%5Calpha%5Cbeta", "\\alpha\\beta", "%5Calpha%5Cbeta");
+ testUnescapedKey("%", "%", "%25");
+ testUnescapedKey("%f%!%%%%1x%x1%U%Uz%U123%U1234%1234%", QString("%f%!%%%%1x%x1%U%Uz%U123") + QChar(0x1234) + "\x12" + "34%",
+ "%25f%25%21%25%25%25%251x%25x1%25U%25Uz%25U123%U1234%1234%25");
+
+ testEscapedStringList("", "");
+ testEscapedStringList(" ", "\" \"");
+ testEscapedStringList(";", "\";\"");
+ testEscapedStringList(",", "\",\"");
+ testEscapedStringList("=", "\"=\"");
+ testEscapedStringList("abc-def", "abc-def");
+ testEscapedStringList(QChar(0) + QString("0"), "\\0\\x30");
+ testEscapedStringList("~!@#$%^&*()_+.-/\\=", "\"~!@#$%^&*()_+.-/\\\\=\"");
+ testEscapedStringList("~!@#$%^&*()_+.-/\\", "~!@#$%^&*()_+.-/\\\\");
+ testEscapedStringList(QString("\x7F") + "12aFz", "\\x7f\\x31\\x32\\x61\\x46z");
+ testEscapedStringList(QString(" \t\n\\n") + QChar(0x123) + QChar(0x4567), "\" \\t\\n\\\\n\\x123\\x4567\"");
+ testEscapedStringList(QString("\a\b\f\n\r\t\v'\"?\001\002\x03\x04"), "\\a\\b\\f\\n\\r\\t\\v'\\\"?\\x1\\x2\\x3\\x4");
+ testEscapedStringList(QStringList() << "," << ";" << "a" << "ab, \tc, d ", "\",\", \";\", a, \"ab, \\tc, d \"");
+
+ /*
+ Test .ini syntax that cannot be generated by QSettings (but can be entered by users).
+ */
+ testUnescapedStringList("", "", "");
+ testUnescapedStringList("\"\"", "", "");
+ testUnescapedStringList("\"abcdef\"", "abcdef", "abcdef");
+ testUnescapedStringList("\"\\?\\'\\\"\"", "?'\"", "?'\\\"");
+ testUnescapedStringList("\\0\\00\\000\\0000000\\1\\111\\11111\\x\\x0\\xABCDEFGH\\x0123456\\",
+ QString() + QChar(0) + QChar(0) + QChar(0) + QChar(0) + QChar(1)
+ + QChar(0111) + QChar(011111) + QChar(0) + QChar(0xCDEF) + "GH"
+ + QChar(0x3456),
+ "\\0\\0\\0\\0\\x1I\\x1249\\0\\xcdefGH\\x3456");
+ testUnescapedStringList(QByteArray("\\c\\d\\e\\f\\g\\$\\*\\\0", 16), "\f", "\\f");
+ testUnescapedStringList("\"a\", \t\"bc \", \" d\" , \"ef \" ,,g, hi i,,, ,",
+ QStringList() << "a" << "bc " << " d" << "ef " << "" << "g" << "hi i"
+ << "" << "" << "" << "",
+ "a, \"bc \", \" d\", \"ef \", , g, hi i, , , , ");
+ testUnescapedStringList("a , b , c d , efg ",
+ QStringList() << "a" << "b" << "c d" << "efg",
+ "a, b, c d, efg");
+
+ // streaming qvariant into a string
+ testVariant(QString("Hello World!"), QString("Hello World!"), toString);
+ testVariant(QString("Hello, World!"), QString("Hello, World!"), toString);
+ testVariant(QString("@Hello World!"), QString("@@Hello World!"), toString);
+ testVariant(QString("@@Hello World!"), QString("@@@Hello World!"), toString);
+ testVariant(QByteArray("Hello World!"), QString("@ByteArray(Hello World!)"), toString);
+ testVariant(QByteArray("@Hello World!"), QString("@ByteArray(@Hello World!)"), toString);
+ testVariant(QVariant(100), QString("100"), toString);
+ testVariant(QStringList() << "ene" << "due" << "rike", QString::fromLatin1("@Variant(\x0\x0\x0\xb\x0\x0\x0\x3\x0\x0\x0\x6\x0\x65\x0n\x0\x65\x0\x0\x0\x6\x0\x64\x0u\x0\x65\x0\x0\x0\x8\x0r\x0i\x0k\x0\x65)", 50), toStringList);
+ testVariant(QRect(1, 2, 3, 4), QString("@Rect(1 2 3 4)"), toRect);
+ testVariant(QSize(5, 6), QString("@Size(5 6)"), toSize);
+ testVariant(QPoint(7, 8), QString("@Point(7 8)"), toPoint);
+
+ testBadEscape("", "");
+ testBadEscape("@", "@");
+ testBadEscape("@@", "@");
+ testBadEscape("@@@", "@@");
+ testBadEscape(" ", " ");
+ testBadEscape("@Rect", "@Rect");
+ testBadEscape("@Rect(", "@Rect(");
+ testBadEscape("@Rect()", "@Rect()");
+ testBadEscape("@Rect)", "@Rect)");
+ testBadEscape("@Rect(1 2 3)", "@Rect(1 2 3)");
+ testBadEscape("@@Rect(1 2 3)", "@Rect(1 2 3)");
+#endif
+}
+
+void tst_QSettings::testCaseSensitivity_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::testCaseSensitivity()
+{
+ QFETCH(QSettings::Format, format);
+
+ for (int pass = 0; pass < 2; ++pass) {
+ QSettings settings(format, QSettings::UserScope, "software.org", "KillerAPP");
+ settings.beginGroup("caseSensitivity");
+
+ bool cs = true;
+#ifndef QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER
+ switch (format) {
+ case QSettings::NativeFormat:
+#ifdef Q_OS_DARWIN
+ cs = true;
+#else
+ cs = false;
+#endif
+ break;
+ case QSettings::IniFormat:
+ cs = false;
+ break;
+ case QSettings::CustomFormat1:
+ cs = true;
+ break;
+ case QSettings::CustomFormat2:
+ cs = false;
+ break;
+ default:
+ ;
+ }
+#endif
+
+ if (pass == 0) {
+ settings.setValue("key 1", 1);
+ settings.setValue("KEY 1", 2);
+ settings.setValue("key 2", 3);
+ }
+
+ for (int i = 0; i < 2; ++i) {
+ QVERIFY(settings.contains("key 1"));
+ QVERIFY(settings.contains("KEY 1"));
+ QCOMPARE(settings.value("KEY 1").toInt(), 2);
+/* QVERIFY(settings.allKeys().contains("/KEY 1"));
+ QVERIFY(settings.allKeys().contains("/key 2")); */
+
+ if (cs) {
+ QVERIFY(!settings.contains("kEy 1"));
+ QCOMPARE(settings.value("key 1").toInt(), 1);
+ QCOMPARE(settings.allKeys().size(), 3);
+ QVERIFY(settings.allKeys().contains("key 1"));
+ } else {
+ QVERIFY(settings.contains("kEy 1"));
+ QCOMPARE(settings.value("kEy 1").toInt(), 2);
+ QCOMPARE(settings.value("key 1").toInt(), 2);
+ QCOMPARE(settings.allKeys().size(), 2);
+ }
+
+ settings.sync();
+ }
+
+ settings.remove("KeY 1");
+
+ if (cs) {
+ QVERIFY(!settings.contains("KeY 1"));
+ QVERIFY(settings.contains("key 1"));
+ QVERIFY(settings.contains("KEY 1"));
+ QCOMPARE(settings.value("key 1").toInt(), 1);
+ QCOMPARE(settings.value("KEY 1").toInt(), 2);
+ QCOMPARE(settings.allKeys().size(), 3);
+ } else {
+ QVERIFY(!settings.contains("KeY 1"));
+ QVERIFY(!settings.contains("key 1"));
+ QVERIFY(!settings.contains("KEY 1"));
+ QCOMPARE(settings.allKeys().size(), 1);
+ }
+ settings.setValue("KEY 1", 2);
+ }
+}
+
+void tst_QSettings::fileName()
+{
+#ifdef Q_OS_MAC
+ QSettings s1(QSettings::UserScope, "Apple", "Console");
+ QSettings s2(QSettings::UserScope, "Apple");
+ QSettings s3(QSettings::SystemScope, "Apple", "Console");
+ QSettings s4(QSettings::SystemScope, "Apple");
+
+ QCOMPARE(s1.fileName(), QDir::homePath() + "/Library/Preferences/com.apple.Console.plist");
+ QCOMPARE(s2.fileName(), QDir::homePath() + "/Library/Preferences/com.apple.plist");
+ QCOMPARE(s3.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
+ QCOMPARE(s4.fileName(), QString("/Library/Preferences/com.apple.plist"));
+
+ QSettings s5(QSettings::SystemScope, "Apple.com", "Console");
+ QCOMPARE(s5.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
+
+ QSettings s6(QSettings::SystemScope, "apple.com", "Console");
+ QCOMPARE(s6.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
+
+ QSettings s7(QSettings::SystemScope, "apple.Com", "Console");
+ QCOMPARE(s7.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
+
+ QSettings s8(QSettings::SystemScope, "apple.fr", "Console");
+ QCOMPARE(s8.fileName(), QString("/Library/Preferences/fr.apple.Console.plist"));
+
+ QSettings s9(QSettings::SystemScope, "apple.co.jp", "Console");
+ QCOMPARE(s9.fileName(), QString("/Library/Preferences/jp.co.apple.Console.plist"));
+
+ QSettings s10(QSettings::SystemScope, "apple.org", "Console");
+ QCOMPARE(s10.fileName(), QString("/Library/Preferences/org.apple.Console.plist"));
+
+ QSettings s11(QSettings::SystemScope, "apple.net", "Console");
+ QCOMPARE(s11.fileName(), QString("/Library/Preferences/net.apple.Console.plist"));
+
+ QSettings s12(QSettings::SystemScope, "apple.museum", "Console");
+ QCOMPARE(s12.fileName(), QString("/Library/Preferences/museum.apple.Console.plist"));
+
+ QSettings s13(QSettings::SystemScope, "apple.FR", "Console");
+ QCOMPARE(s13.fileName(), QString("/Library/Preferences/fr.apple.Console.plist"));
+
+ QSettings s14(QSettings::SystemScope, "apple.mUseum", "Console");
+ QCOMPARE(s14.fileName(), QString("/Library/Preferences/museum.apple.Console.plist"));
+
+ QSettings s15(QSettings::SystemScope, "apple.zz", "Console");
+ QCOMPARE(s15.fileName(), QString("/Library/Preferences/zz.apple.Console.plist"));
+
+ QSettings s15_prime(QSettings::SystemScope, "apple.foo", "Console");
+ QCOMPARE(s15_prime.fileName(), QString("/Library/Preferences/com.apple-foo.Console.plist"));
+
+ QSettings s16(QSettings::SystemScope, "apple.f", "Console");
+ QCOMPARE(s16.fileName(), QString("/Library/Preferences/com.apple-f.Console.plist"));
+
+ QSettings s17(QSettings::SystemScope, "apple.", "Console");
+ QCOMPARE(s17.fileName(), QString("/Library/Preferences/com.apple.Console.plist"));
+
+ QSettings s18(QSettings::SystemScope, "Foo, Inc.", "Console");
+ QCOMPARE(s18.fileName(), QString("/Library/Preferences/com.foo-inc.Console.plist"));
+
+ QSettings s19(QSettings::SystemScope, "Foo, Inc.com", "Console");
+ QCOMPARE(s19.fileName(), QString("/Library/Preferences/com.foo, inc.Console.plist"));
+
+ QSettings s20(QSettings::SystemScope, QLatin1String(" ") + QChar(0xbd) + QLatin1String("Foo//:/Barxxx Baz!()#@.com"), "Console");
+ QCOMPARE(s20.fileName(), QLatin1String("/Library/Preferences/com. ") + QChar(0xbd) + QLatin1String("foo : barxxx baz!()#@.Console.plist"));
+
+ QSettings s21(QSettings::SystemScope, QLatin1String(" ") + QChar(0xbd) + QLatin1String("Foo//:/Bar,,, Baz!()#"), "Console");
+ QCOMPARE(s21.fileName(), QString("/Library/Preferences/com.foo-bar-baz.Console.plist"));
+#else
+ QSKIP("Please write a fileName() test for the other platforms", SkipAll);
+#endif
+}
+
+void tst_QSettings::isWritable_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::isWritable()
+{
+ QFETCH(QSettings::Format, format);
+
+ {
+ QSettings s1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ s1.setValue("foo", 1);
+ s1.sync();
+ // that should create the file
+ }
+
+ {
+ QSettings s1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QVERIFY(s1.isWritable());
+ }
+
+ {
+ QSettings s1(format, QSettings::SystemScope, "software.org", "KillerAPP");
+ s1.setValue("foo", 1);
+ s1.sync();
+ // that should create the file, *if* we have the permissions
+ }
+
+ {
+ QSettings s1(format, QSettings::SystemScope, "software.org", "KillerAPP");
+ QSettings s2(format, QSettings::SystemScope, "software.org", "Something Different");
+ QSettings s3(format, QSettings::SystemScope, "foo.org", "Something Different");
+ if (s1.contains("foo")) {
+ QVERIFY(s1.isWritable());
+ QVERIFY(s2.isWritable());
+ QVERIFY(s3.isWritable());
+ } else {
+ QVERIFY(!s1.isWritable());
+ QVERIFY(!s2.isWritable());
+ QVERIFY(!s3.isWritable());
+ }
+ }
+}
+
+void tst_QSettings::childGroups_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::childGroups()
+{
+#ifdef QT_BUILD_INTERNAL
+ QFETCH(QSettings::Format, format);
+
+ {
+ QSettings settings(format, QSettings::SystemScope, "software.org");
+ settings.setValue("alpha", "1");
+ settings.setValue("alpha/a", "2");
+ settings.setValue("alpha/b", "3");
+ settings.setValue("alpha/c", "4");
+ settings.setValue("beta", "5");
+ settings.setValue("gamma", "6");
+ settings.setValue("gamma/d", "7");
+ settings.setValue("gamma/d/e", "8");
+ settings.setValue("gamma/f/g", "9");
+ settings.setValue("omicron/h/i/j/x", "10");
+ settings.setValue("omicron/h/i/k/y", "11");
+ settings.setValue("zeta/z", "12");
+ }
+
+ for (int pass = 0; pass < 3; ++pass) {
+ QConfFile::clearCache();
+ QSettings settings(format, QSettings::SystemScope, "software.org");
+ settings.setFallbacksEnabled(false);
+ if (pass == 1) {
+ settings.value("gamma/d");
+ } else if (pass == 2) {
+ settings.value("gamma");
+ }
+
+ settings.beginGroup("gamma");
+ QCOMPARE(settings.childGroups(), QStringList() << "d" << "f");
+ settings.beginGroup("d");
+ QCOMPARE(settings.childGroups(), QStringList());
+ settings.endGroup();
+ settings.endGroup();
+
+ settings.beginGroup("alpha");
+ QCOMPARE(settings.childGroups(), QStringList());
+ settings.endGroup();
+
+ settings.beginGroup("d");
+ QCOMPARE(settings.childGroups(), QStringList());
+ settings.endGroup();
+
+ settings.beginGroup("/omicron///h/i///");
+ QCOMPARE(settings.childGroups(), QStringList() << "j" << "k");
+ settings.endGroup();
+
+ settings.beginGroup("////");
+ QCOMPARE(settings.childGroups(), QStringList() << "alpha" << "gamma" << "omicron" << "zeta");
+ settings.endGroup();
+
+ QCOMPARE(settings.childGroups(), QStringList() << "alpha" << "gamma" << "omicron" << "zeta");
+ }
+#endif
+}
+
+void tst_QSettings::childKeys_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::childKeys()
+{
+#ifdef QT_BUILD_INTERNAL
+ QFETCH(QSettings::Format, format);
+
+ {
+ QSettings settings(format, QSettings::SystemScope, "software.org");
+ settings.setValue("alpha", "1");
+ settings.setValue("alpha/a", "2");
+ settings.setValue("alpha/b", "3");
+ settings.setValue("alpha/c", "4");
+ settings.setValue("beta", "5");
+ settings.setValue("gamma", "6");
+ settings.setValue("gamma/d", "7");
+ settings.setValue("gamma/d/e", "8");
+ settings.setValue("gamma/f/g", "9");
+ settings.setValue("omicron/h/i/j/x", "10");
+ settings.setValue("omicron/h/i/k/y", "11");
+ settings.setValue("zeta/z", "12");
+ }
+
+ for (int pass = 0; pass < 3; ++pass) {
+ QConfFile::clearCache();
+ QSettings settings(format, QSettings::SystemScope, "software.org");
+ settings.setFallbacksEnabled(false);
+ if (pass == 1) {
+ settings.value("gamma/d");
+ } else if (pass == 2) {
+ settings.value("gamma");
+ }
+
+ settings.beginGroup("gamma");
+ QCOMPARE(settings.childKeys(), QStringList() << "d");
+ settings.beginGroup("d");
+ QCOMPARE(settings.childKeys(), QStringList() << "e");
+ settings.endGroup();
+ settings.endGroup();
+
+ settings.beginGroup("alpha");
+ QCOMPARE(settings.childKeys(), QStringList() << "a" << "b" << "c");
+ settings.endGroup();
+
+ settings.beginGroup("d");
+ QCOMPARE(settings.childKeys(), QStringList());
+ settings.endGroup();
+
+ settings.beginGroup("/omicron///h/i///");
+ QCOMPARE(settings.childKeys(), QStringList());
+ settings.endGroup();
+
+ settings.beginGroup("////");
+ QCOMPARE(settings.childKeys(), QStringList() << "alpha" << "beta" << "gamma");
+ settings.endGroup();
+
+ QCOMPARE(settings.childKeys(), QStringList() << "alpha" << "beta" << "gamma");
+ }
+#endif
+}
+
+void tst_QSettings::allKeys_data()
+{
+ populateWithFormats();
+}
+
+void tst_QSettings::allKeys()
+{
+#ifdef QT_BUILD_INTERNAL
+ QFETCH(QSettings::Format, format);
+
+ QStringList allKeys;
+ allKeys << "alpha" << "alpha/a" << "alpha/b" << "alpha/c" << "beta" << "gamma" << "gamma/d"
+ << "gamma/d/e" << "gamma/f/g" << "omicron/h/i/j/x" << "omicron/h/i/k/y" << "zeta/z";
+
+ {
+ QSettings settings(format, QSettings::SystemScope, "software.org");
+ for (int i = 0; i < allKeys.size(); ++i)
+ settings.setValue(allKeys.at(i), QString::number(i + 1));
+ }
+
+ for (int pass = 0; pass < 3; ++pass) {
+ QConfFile::clearCache();
+ QSettings settings(format, QSettings::SystemScope, "software.org");
+ settings.setFallbacksEnabled(false);
+
+ if (pass == 1) {
+ settings.value("gamma/d");
+ } else if (pass == 2) {
+ settings.value("gamma");
+ }
+
+ settings.beginGroup("gamma");
+ QCOMPARE(settings.allKeys(), QStringList() << "d" << "d/e" << "f/g");
+ settings.beginGroup("d");
+ QCOMPARE(settings.allKeys(), QStringList() << "e");
+ settings.endGroup();
+ settings.endGroup();
+
+ settings.beginGroup("alpha");
+ QCOMPARE(settings.allKeys(), QStringList() << "a" << "b" << "c");
+ settings.endGroup();
+
+ settings.beginGroup("d");
+ QCOMPARE(settings.allKeys(), QStringList());
+ settings.endGroup();
+
+ settings.beginGroup("/omicron///h/i///");
+ QCOMPARE(settings.allKeys(), QStringList() << "j/x" << "k/y");
+ settings.endGroup();
+
+ settings.beginGroup("////");
+ QCOMPARE(settings.allKeys(), allKeys);
+ settings.endGroup();
+
+ QCOMPARE(settings.allKeys(), allKeys);
+ }
+#endif
+}
+
+void tst_QSettings::registerFormat()
+{
+ QSettings settings1(QSettings::IniFormat, QSettings::UserScope, "software.org", "KillerAPP");
+ QSettings settings2(QSettings::CustomFormat1, QSettings::UserScope, "software.org", "KillerAPP");
+
+ QString fileName = settings1.fileName();
+ fileName.chop(3); // "ini";
+ fileName.append("custom1");
+ QCOMPARE(settings2.fileName(), fileName);
+
+ // OK, let's see if it can read a generated file of a custom type
+ // Beware: readCustom3File() and writeCustom3File() have unintuitive behavior
+ // so we can test error handling
+
+ QSettings::Format custom3 = QSettings::registerFormat("custom3", readCustom3File, writeCustom3File);
+ QVERIFY(custom3 == QSettings::CustomFormat3);
+
+ QDir dir(settingsPath());
+ QVERIFY(dir.mkpath("someDir"));
+ QFile f(dir.path()+"/someDir/someSettings.custom3");
+
+ QVERIFY(f.open(QFile::WriteOnly));
+ f.write("OK");
+ f.close();
+
+ {
+ QSettings settings(settingsPath("someDir/someSettings.custom3"), QSettings::CustomFormat3);
+ QCOMPARE(settings.status(), QSettings::NoError);
+ QCOMPARE(settings.value("retval").toString(), QString("OK"));
+ QVERIFY(settings.isWritable());
+ }
+
+ QVERIFY(f.open(QFile::WriteOnly));
+ f.write("NotOK");
+ f.close();
+
+ {
+ QSettings settings(settingsPath("someDir/someSettings.custom3"), QSettings::CustomFormat3);
+ QCOMPARE(settings.status(), QSettings::FormatError);
+ QCOMPARE(settings.value("retval").toString(), QString());
+ QVERIFY(settings.isWritable());
+ }
+
+ QVERIFY(f.open(QFile::WriteOnly));
+ f.write("OK");
+ f.close();
+
+ {
+ QSettings settings(settingsPath("someDir/someSettings.custom3"), QSettings::CustomFormat3);
+ QCOMPARE(settings.status(), QSettings::NoError);
+ settings.setValue("zzz", "bar");
+ settings.sync();
+ QCOMPARE(settings.status(), QSettings::NoError);
+
+ settings.setValue("retval", "NotOK");
+ settings.sync();
+ QCOMPARE(settings.status(), QSettings::AccessError);
+
+ QCOMPARE(settings.value("retval").toString(), QString("NotOK"));
+ QVERIFY(settings.isWritable());
+ }
+
+ {
+ QSettings settings(settingsPath("someDir/someSettings.custom3"), QSettings::CustomFormat4);
+ QCOMPARE(settings.status(), QSettings::AccessError);
+ QVERIFY(!settings.isWritable());
+ }
+}
+
+void tst_QSettings::setPath()
+{
+#define TEST_PATH(doSet, ext, format, scope, path) \
+ { \
+ if (doSet) \
+ QSettings::setPath(QSettings::format, QSettings::scope, settingsPath(path)); \
+ QSettings settings1(QSettings::format, QSettings::scope, "software.org", "KillerAPP"); \
+ QCOMPARE(QDir(settings1.fileName()), QDir(settingsPath(path) + QDir::separator() + "software.org" \
+ + QDir::separator() + "KillerAPP." + ext)); \
+ }
+
+ /*
+ The first pass checks that setPath() works; the second
+ path checks that it has no bad side effects.
+ */
+ for (int i = 0; i < 2; ++i) {
+#if !defined(Q_OS_WIN) && !defined(Q_OS_MAC)
+ TEST_PATH(i == 0, "conf", NativeFormat, UserScope, "alpha")
+ TEST_PATH(i == 0, "conf", NativeFormat, SystemScope, "beta")
+#endif
+ TEST_PATH(i == 0, "ini", IniFormat, UserScope, "gamma")
+ TEST_PATH(i == 0, "ini", IniFormat, SystemScope, "omicron")
+ TEST_PATH(i == 0, "custom1", CustomFormat1, UserScope, "epsilon")
+ TEST_PATH(i == 0, "custom1", CustomFormat1, SystemScope, "zeta")
+ TEST_PATH(i == 0, "custom2", CustomFormat2, UserScope, "eta")
+ TEST_PATH(i == 0, "custom2", CustomFormat2, SystemScope, "iota")
+ }
+}
+
+void tst_QSettings::setDefaultFormat()
+{
+ QVERIFY(QSettings::defaultFormat() == QSettings::NativeFormat);
+
+ QSettings::setDefaultFormat(QSettings::CustomFormat1);
+ QSettings settings1("org", "app");
+ QSettings settings2(QSettings::SystemScope, "org", "app");
+ QSettings settings3;
+
+ QVERIFY(settings1.format() == QSettings::NativeFormat);
+ QVERIFY(settings2.format() == QSettings::NativeFormat);
+ QVERIFY(settings3.format() == QSettings::CustomFormat1);
+
+ QSettings::setDefaultFormat(QSettings::NativeFormat);
+ QVERIFY(QSettings::defaultFormat() == QSettings::NativeFormat);
+
+ QVERIFY(settings1.format() == QSettings::NativeFormat);
+ QVERIFY(settings2.format() == QSettings::NativeFormat);
+ QVERIFY(settings3.format() == QSettings::CustomFormat1);
+}
+
+void tst_QSettings::dontCreateNeedlessPaths()
+{
+ QString path;
+ {
+ QSettings settings(QSettings::IniFormat, QSettings::UserScope, "Hello", "Test");
+ QVariant val = settings.value("foo", "bar");
+ path = settings.fileName();
+ }
+
+ QFileInfo fileInfo(path);
+ QVERIFY(!fileInfo.dir().exists());
+}
+
+#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+void tst_QSettings::dontReorderIniKeysNeedlessly()
+{
+#ifdef QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER
+ QSKIP("This Qt build does not preserve ordering, as a code size optimization.", SkipAll);
+#endif
+
+ /*
+ This is a very strong test. It asserts that modifying
+ resourcefile2.ini will lead to the exact contents of
+ resourcefile3.ini. Right now it's run only on Unix
+ systems, but that should be enough since the INI
+ code (unlike this test) is platform-agnostic.
+
+ Things that are tested:
+
+ * keys are written in the same order that they were
+ read in
+
+ * new keys are put at the end of their respective
+ sections
+ */
+
+ QFile inFile(":/resourcefile2.ini");
+ inFile.open(QIODevice::ReadOnly);
+ QByteArray contentsBefore = inFile.readAll();
+ inFile.close();
+
+ QByteArray expectedContentsAfter;
+
+ {
+ QFile inFile(":/resourcefile3.ini");
+ inFile.open(QIODevice::ReadOnly);
+ expectedContentsAfter = inFile.readAll();
+ inFile.close();
+ }
+
+ QString outFileName;
+ QString outFileName2;
+
+ QTemporaryFile outFile;
+ outFile.open();
+ outFile.write(contentsBefore);
+ outFileName = outFile.fileName();
+ outFile.close();
+
+ QSettings settings(outFileName, QSettings::IniFormat);
+ QVERIFY(settings.status() == QSettings::NoError);
+ QVERIFY(settings.isWritable());
+
+ settings.setValue("Field 1/Bottom", 90);
+ settings.setValue("Field 1/x", 1);
+ settings.setValue("Field 1/y", 1);
+ settings.setValue("Field 1/width", 1);
+ settings.setValue("Field 1/height", 1);
+ settings.sync();
+
+ QFile outFile2(outFileName);
+ QVERIFY(outFile2.open(QIODevice::ReadOnly));
+ QCOMPARE(outFile2.readAll(), expectedContentsAfter);
+ outFile2.close();
+}
+#endif
+
+void tst_QSettings::rainersSyncBugOnMac_data()
+{
+ ctor_data();
+}
+
+void tst_QSettings::rainersSyncBugOnMac()
+{
+ QFETCH(QSettings::Format, format);
+
+ QString fileName;
+
+ {
+ QSettings s1(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QCOMPARE(s1.value("key1", 5).toInt(), 5);
+ fileName = s1.fileName();
+ }
+
+ {
+ QSettings s2(fileName, format);
+ s2.setValue("key1", 25);
+ }
+
+ {
+ QSettings s3(format, QSettings::UserScope, "software.org", "KillerAPP");
+ QCOMPARE(s3.value("key1", 30).toInt(), 25);
+ }
+}
+
+void tst_QSettings::recursionBug()
+{
+ QPixmap pix(10,10);
+ pix.fill("blue");
+
+ {
+ QSettings settings(settingsPath("starrunner.ini"), QSettings::IniFormat);
+ settings.setValue("General/Pixmap", pix );
+ }
+}
+
+#if defined(Q_OS_WIN)
+
+static DWORD readKeyType(HKEY handle, const QString &rSubKey)
+{
+ DWORD dataType;
+ DWORD dataSize;
+ LONG res = RegQueryValueEx(handle, reinterpret_cast<const wchar_t *>(rSubKey.utf16()), 0, &dataType, 0, &dataSize);
+
+ if (res == ERROR_SUCCESS)
+ return dataType;
+
+ return 0;
+}
+
+void tst_QSettings::qtbug_13249()
+{
+ QSettings settings1(QSettings::UserScope, "software.org", "KillerAPP");
+
+ qint32 x = 1024;
+ settings1.setValue("qtbug_13249_a", (qint32)x);
+ QCOMPARE(settings1.value("qtbug_13249_a").toInt(), (qint32)1024);
+ settings1.setValue("qtbug_13249_b", (quint32)x);
+ QCOMPARE(settings1.value("qtbug_13249_b").toUInt(), (quint32)1024);
+ settings1.setValue("qtbug_13249_c", (qint64)x);
+ QCOMPARE(settings1.value("qtbug_13249_c").toLongLong(), (qint64)1024);
+ settings1.setValue("qtbug_13249_d", (quint64)x);
+ QCOMPARE(settings1.value("qtbug_13249_d").toULongLong(), (quint64)1024);
+ settings1.sync();
+
+ HKEY handle;
+ LONG res;
+ QString keyName = "Software\\software.org\\KillerAPP";
+ res = RegOpenKeyEx(HKEY_CURRENT_USER, reinterpret_cast<const wchar_t *>(keyName.utf16()), 0, KEY_READ, &handle);
+ if (res == ERROR_SUCCESS)
+ {
+ DWORD dataType;
+ dataType = readKeyType(handle, QString("qtbug_13249_a"));
+ if (dataType != 0) {
+ QCOMPARE((int)REG_DWORD, (int)dataType);
+ }
+ dataType = readKeyType(handle, QString("qtbug_13249_b"));
+ if (dataType != 0) {
+ QCOMPARE((int)REG_DWORD, (int)dataType);
+ }
+ dataType = readKeyType(handle, QString("qtbug_13249_c"));
+ if (dataType != 0) {
+ QCOMPARE((int)REG_QWORD, (int)dataType);
+ }
+ dataType = readKeyType(handle, QString("qtbug_13249_d"));
+ if (dataType != 0) {
+ QCOMPARE((int)REG_QWORD, (int)dataType);
+ }
+ RegCloseKey(handle);
+ }
+}
+#endif
+/*
+// Not tested at the moment.
+void tst_QSettings::oldSubkeyList()
+{
+ QVERIFY( TRUE );
+}
+*/
+
+QTEST_MAIN(tst_QSettings)
+#include "tst_qsettings.moc"
+
+
+// foo
diff --git a/tests/auto/corelib/io/qtemporaryfile/.gitignore b/tests/auto/corelib/io/qtemporaryfile/.gitignore
new file mode 100644
index 0000000000..67cb8bf69e
--- /dev/null
+++ b/tests/auto/corelib/io/qtemporaryfile/.gitignore
@@ -0,0 +1 @@
+tst_qtemporaryfile
diff --git a/tests/auto/corelib/io/qtemporaryfile/qtemporaryfile.pro b/tests/auto/corelib/io/qtemporaryfile/qtemporaryfile.pro
new file mode 100644
index 0000000000..64a043b19a
--- /dev/null
+++ b/tests/auto/corelib/io/qtemporaryfile/qtemporaryfile.pro
@@ -0,0 +1,14 @@
+load(qttest_p4)
+SOURCES += tst_qtemporaryfile.cpp
+QT = core
+
+
+symbian {
+ testData.files = tst_qtemporaryfile.cpp
+ testData.path = .
+ DEPLOYMENT += testData
+}else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp b/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
new file mode 100644
index 0000000000..2edb93aee2
--- /dev/null
+++ b/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
@@ -0,0 +1,729 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qcoreapplication.h>
+#include <qstring.h>
+#include <qtemporaryfile.h>
+#include <qfile.h>
+#include <qdir.h>
+#include <qset.h>
+
+#if defined(Q_OS_WIN)
+# include <windows.h>
+#endif
+#if defined(Q_OS_UNIX)
+# include <sys/types.h>
+# include <sys/stat.h>
+# include <errno.h>
+# include <fcntl.h> // open(2)
+# include <unistd.h> // close(2)
+#endif
+
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR ""
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QTemporaryFile : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QTemporaryFile();
+ virtual ~tst_QTemporaryFile();
+public slots:
+ void init();
+ void cleanup();
+
+ void initTestCase();
+ void cleanupTestCase();
+
+private slots:
+ void construction();
+ void fileTemplate();
+ void fileTemplate_data();
+ void getSetCheck();
+ void fileName();
+ void fileNameIsEmpty();
+ void autoRemove();
+ void write();
+ void openCloseOpenClose();
+ void size();
+ void resize();
+ void openOnRootDrives();
+ void stressTest();
+ void rename();
+ void renameFdLeak();
+ void reOpenThroughQFile();
+ void keepOpenMode();
+ void resetTemplateAfterError();
+ void setTemplateAfterOpen();
+ void autoRemoveAfterFailedRename();
+
+ void QTBUG_4796_data();
+ void QTBUG_4796();
+
+public:
+};
+
+void tst_QTemporaryFile::initTestCase()
+{
+ // For QTBUG_4796
+ QVERIFY(QDir("test-XXXXXX").exists() || QDir().mkdir("test-XXXXXX"));
+}
+
+void tst_QTemporaryFile::cleanupTestCase()
+{
+ // From QTBUG_4796
+ QVERIFY(QDir().rmdir("test-XXXXXX"));
+}
+
+void tst_QTemporaryFile::construction()
+{
+ QTemporaryFile file(0);
+ QString tmp = QDir::tempPath();
+ QCOMPARE(file.fileTemplate().left(tmp.size()), tmp);
+ QCOMPARE(file.fileTemplate().at(tmp.size()), QChar('/'));
+}
+
+// Testing get/set functions
+void tst_QTemporaryFile::getSetCheck()
+{
+ QTemporaryFile obj1;
+ // bool QTemporaryFile::autoRemove()
+ // void QTemporaryFile::setAutoRemove(bool)
+ obj1.setAutoRemove(false);
+ QCOMPARE(false, obj1.autoRemove());
+ obj1.setAutoRemove(true);
+ QCOMPARE(true, obj1.autoRemove());
+}
+
+tst_QTemporaryFile::tst_QTemporaryFile()
+{
+}
+
+tst_QTemporaryFile::~tst_QTemporaryFile()
+{
+
+}
+
+void tst_QTemporaryFile::init()
+{
+// TODO: Add initialization code here.
+// This will be executed immediately before each test is run.
+}
+
+void tst_QTemporaryFile::cleanup()
+{
+// TODO: Add cleanup code here.
+// This will be executed immediately after each test is run.
+}
+
+void tst_QTemporaryFile::fileTemplate_data()
+{
+ QTest::addColumn<QString>("constructorTemplate");
+ QTest::addColumn<QString>("prefix");
+ QTest::addColumn<QString>("suffix");
+ QTest::addColumn<QString>("fileTemplate");
+
+ QTest::newRow("constructor default") << "" << "." << "" << "";
+ QTest::newRow("constructor with xxx sufix") << "qt_XXXXXXxxx" << "qt_" << "xxx" << "";
+ QTest::newRow("constructor with xXx sufix") << "qt_XXXXXXxXx" << "qt_" << "xXx" << "";
+ QTest::newRow("constructor with no sufix") << "qt_XXXXXX" << "qt_" << "" << "";
+ QTest::newRow("constructor with >6 X's and xxx suffix") << "qt_XXXXXXXXXXxxx" << "qt_" << "xxx" << "";
+ QTest::newRow("constructor with >6 X's, no suffix") << "qt_XXXXXXXXXX" << "qt_" << "" << "";
+
+ QTest::newRow("constructor with XXXX suffix") << "qt_XXXXXX_XXXX" << "qt_" << "_XXXX" << "";
+ QTest::newRow("constructor with XXXXX suffix") << "qt_XXXXXX_XXXXX" << "qt_" << "_XXXXX" << "";
+ QTest::newRow("constructor with XXXX prefix") << "qt_XXXX" << "qt_XXXX." << "" << "";
+ QTest::newRow("constructor with XXXXX prefix") << "qt_XXXXX" << "qt_XXXXX." << "" << "";
+ QTest::newRow("constructor with XXXX prefix and suffix") << "qt_XXXX_XXXXXX_XXXX" << "qt_XXXX_" << "_XXXX" << "";
+ QTest::newRow("constructor with XXXXX prefix and suffix") << "qt_XXXXX_XXXXXX_XXXXX" << "qt_XXXXX_" << "_XXXXX" << "";
+
+ QTest::newRow("set template, no suffix") << "" << "foo" << "" << "foo";
+ QTest::newRow("set template, with lowercase XXXXXX") << "" << "qt_" << "xxxxxx" << "qt_XXXXXXxxxxxx";
+ QTest::newRow("set template, with xxx") << "" << "qt_" << ".xxx" << "qt_XXXXXX.xxx";
+ QTest::newRow("set template, with >6 X's") << "" << "qt_" << ".xxx" << "qt_XXXXXXXXXXXXXX.xxx";
+ QTest::newRow("set template, with >6 X's, no suffix") << "" << "qt_" << "" << "qt_XXXXXXXXXXXXXX";
+}
+
+void tst_QTemporaryFile::fileTemplate()
+{
+ QFETCH(QString, constructorTemplate);
+ QFETCH(QString, prefix);
+ QFETCH(QString, suffix);
+ QFETCH(QString, fileTemplate);
+
+ QTemporaryFile file(constructorTemplate);
+ if (!fileTemplate.isEmpty())
+ file.setFileTemplate(fileTemplate);
+
+ QCOMPARE(file.open(), true);
+
+ if (prefix.length())
+ QCOMPARE(file.fileName().left(prefix.length()), prefix);
+
+ if (suffix.length())
+ QCOMPARE(file.fileName().right(suffix.length()), suffix);
+}
+
+
+/*
+ This tests whether the temporary file really gets placed in QDir::tempPath
+*/
+void tst_QTemporaryFile::fileName()
+{
+ // Get QDir::tempPath and make an absolute path.
+ QString tempPath = QDir::tempPath();
+ QString absoluteTempPath = QDir(tempPath).absolutePath();
+ QTemporaryFile file;
+ file.setAutoRemove(true);
+ file.open();
+ QString fileName = file.fileName();
+ QVERIFY(QFile::exists(fileName));
+ // Get path to the temp file, whithout the file name.
+ QString absoluteFilePath = QFileInfo(fileName).absolutePath();
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ absoluteFilePath = absoluteFilePath.toLower();
+ absoluteTempPath = absoluteTempPath.toLower();
+#endif
+ QCOMPARE(absoluteFilePath, absoluteTempPath);
+}
+
+void tst_QTemporaryFile::fileNameIsEmpty()
+{
+ QString filename;
+ {
+ QTemporaryFile file;
+ QVERIFY(file.fileName().isEmpty());
+
+ QVERIFY(file.open());
+ QVERIFY(!file.fileName().isEmpty());
+
+ filename = file.fileName();
+ QVERIFY(QFile::exists(filename));
+
+ file.close();
+ QVERIFY(!file.isOpen());
+ QVERIFY(QFile::exists(filename));
+ QVERIFY(!file.fileName().isEmpty());
+ }
+ QVERIFY(!QFile::exists(filename));
+}
+
+void tst_QTemporaryFile::autoRemove()
+{
+ // Test auto remove
+ QString fileName;
+ {
+ QTemporaryFile file("tempXXXXXX");
+ file.setAutoRemove(true);
+ QVERIFY(file.open());
+ fileName = file.fileName();
+ file.close();
+ }
+ QVERIFY(!QFile::exists(fileName));
+
+ // Test if disabling auto remove works.
+ {
+ QTemporaryFile file("tempXXXXXX");
+ file.setAutoRemove(false);
+ QVERIFY(file.open());
+ fileName = file.fileName();
+ file.close();
+ }
+ QVERIFY(QFile::exists(fileName));
+ QVERIFY(QFile::remove(fileName));
+
+
+ // Do not explicitly call setAutoRemove (tests if it really is the default as documented)
+ {
+ QTemporaryFile file("tempXXXXXX");
+ QVERIFY(file.open());
+ fileName = file.fileName();
+ file.close();
+ }
+ QVERIFY(!QFile::exists(fileName));
+
+}
+
+void tst_QTemporaryFile::write()
+{
+ QByteArray data("OLE\nOLE\nOLE");
+ QTemporaryFile file;
+ QVERIFY(file.open());
+ QCOMPARE((int)file.write(data), data.size());
+ file.reset();
+ QFile compare(file.fileName());
+ compare.open(QIODevice::ReadOnly);
+ QCOMPARE(compare.readAll() , data);
+ file.close();
+}
+
+void tst_QTemporaryFile::openCloseOpenClose()
+{
+ QString fileName;
+ {
+ // Create a temp file
+ QTemporaryFile file("tempXXXXXX");
+ file.setAutoRemove(true);
+ QVERIFY(file.open());
+ file.write("OLE");
+ fileName = file.fileName();
+ QVERIFY(QFile::exists(fileName));
+ file.close();
+
+ // Check that it still exists after being closed
+ QVERIFY(QFile::exists(fileName));
+ QVERIFY(!file.isOpen());
+ QVERIFY(file.open());
+ QCOMPARE(file.readAll(), QByteArray("OLE"));
+ // Check that it's still the same file after being opened again.
+ QCOMPARE(file.fileName(), fileName);
+ }
+ QVERIFY(!QFile::exists(fileName));
+}
+
+void tst_QTemporaryFile::size()
+{
+ QTemporaryFile file;
+ QVERIFY(file.open());
+ QVERIFY(file.exists());
+ QVERIFY(!file.isSequential());
+ QByteArray str("foobar");
+ file.write(str);
+ QVERIFY(QFile::exists(file.fileName()));
+ // On CE it takes more time for the filesystem to update
+ // the information. Usually you have to close it or seek
+ // to get latest information. flush() does not help either.
+#if !defined(Q_OS_WINCE)
+ QCOMPARE(file.size(), qint64(6));
+#endif
+ file.seek(0);
+ QCOMPARE(file.size(), qint64(6));
+}
+
+void tst_QTemporaryFile::resize()
+{
+ QTemporaryFile file;
+ file.setAutoRemove(true);
+ QVERIFY(file.open());
+ QVERIFY(file.resize(100));
+
+ QCOMPARE(QFileInfo(file.fileName()).size(), qint64(100));
+
+ file.close();
+}
+
+void tst_QTemporaryFile::openOnRootDrives()
+{
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ unsigned int lastErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS);
+#endif
+ // If it's possible to create a file in the root directory, it
+ // must be possible to create a temp file there too.
+ foreach (QFileInfo driveInfo, QDir::drives()) {
+ QFile testFile(driveInfo.filePath() + "XXXXXX.txt");
+ if (testFile.open(QIODevice::ReadWrite)) {
+ testFile.remove();
+ QTemporaryFile file(driveInfo.filePath() + "XXXXXX.txt");
+ file.setAutoRemove(true);
+ QVERIFY(file.open());
+ }
+ }
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ SetErrorMode(lastErrorMode);
+#endif
+}
+
+void tst_QTemporaryFile::stressTest()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ // 200 is still ok, first colision happens after ~30
+ const int iterations = 200;
+#else
+ const int iterations = 1000;
+#endif
+
+ QSet<QString> names;
+ for (int i = 0; i < iterations; ++i) {
+ QTemporaryFile file;
+ file.setAutoRemove(false);
+ QVERIFY2(file.open(), qPrintable(file.errorString()));
+ QVERIFY(!names.contains(file.fileName()));
+ names.insert(file.fileName());
+ }
+ for (QSet<QString>::const_iterator it = names.constBegin(); it != names.constEnd(); ++it) {
+ QFile::remove(*it);
+ }
+}
+
+void tst_QTemporaryFile::rename()
+{
+ // This test checks that the temporary file is deleted, even after a
+ // rename.
+
+ QDir dir;
+ QVERIFY(!dir.exists("temporary-file.txt"));
+
+ QString tempname;
+ {
+ QTemporaryFile file(dir.filePath("temporary-file.XXXXXX"));
+
+ QVERIFY(file.open());
+ tempname = file.fileName();
+ QVERIFY(dir.exists(tempname));
+
+ QVERIFY(file.rename("temporary-file.txt"));
+ QVERIFY(!dir.exists(tempname));
+ QVERIFY(dir.exists("temporary-file.txt"));
+ QCOMPARE(file.fileName(), QString("temporary-file.txt"));
+ }
+
+ QVERIFY(!dir.exists(tempname));
+ QVERIFY(!dir.exists("temporary-file.txt"));
+}
+
+void tst_QTemporaryFile::renameFdLeak()
+{
+#ifdef Q_OS_UNIX
+ // Test this on Unix only
+
+ // Open a bunch of files to force the fd count to go up
+ static const int count = 10;
+ int bunch_of_files[count];
+ for (int i = 0; i < count; ++i) {
+ bunch_of_files[i] = ::open(SRCDIR "tst_qtemporaryfile.cpp", O_RDONLY);
+ QVERIFY(bunch_of_files[i] != -1);
+ }
+
+ int fd;
+ {
+ QTemporaryFile file;
+ file.setAutoRemove(false);
+ QVERIFY(file.open());
+
+ // close the bunch of files
+ for (int i = 0; i < count; ++i)
+ ::close(bunch_of_files[i]);
+
+ // save the file descriptor for later
+ fd = file.handle();
+
+ // rename the file to something
+ QString newPath = QDir::tempPath() + "/tst_qtemporaryfile-renameFdLeak-" + QString::number(getpid());
+ file.rename(newPath);
+ QFile::remove(newPath);
+ }
+
+ // check if QTemporaryFile closed the file
+ QVERIFY(::close(fd) == -1 && errno == EBADF);
+#endif
+}
+
+void tst_QTemporaryFile::reOpenThroughQFile()
+{
+ QByteArray data("abcdefghij");
+
+ QTemporaryFile file;
+ QVERIFY(((QFile &)file).open(QIODevice::WriteOnly));
+ QCOMPARE(file.write(data), (qint64)data.size());
+
+ file.close();
+ QVERIFY(file.open());
+ QCOMPARE(file.readAll(), data);
+}
+
+void tst_QTemporaryFile::keepOpenMode()
+{
+ QByteArray data("abcdefghij");
+
+ {
+ QTemporaryFile file;
+ QVERIFY(((QFile &)file).open(QIODevice::WriteOnly));
+ QVERIFY(QIODevice::WriteOnly == file.openMode());
+
+ QCOMPARE(file.write(data), (qint64)data.size());
+ file.close();
+
+ QVERIFY(((QFile &)file).open(QIODevice::ReadOnly));
+ QVERIFY(QIODevice::ReadOnly == file.openMode());
+ QCOMPARE(file.readAll(), data);
+ }
+
+ {
+ QTemporaryFile file;
+ QVERIFY(file.open());
+ QCOMPARE(file.write(data), (qint64)data.size());
+ QVERIFY(file.rename("temporary-file.txt"));
+
+ QVERIFY(((QFile &)file).open(QIODevice::ReadOnly));
+ QVERIFY(QIODevice::ReadOnly == file.openMode());
+ QCOMPARE(file.readAll(), data);
+
+ QVERIFY(((QFile &)file).open(QIODevice::WriteOnly));
+ QVERIFY(QIODevice::WriteOnly == file.openMode());
+ }
+}
+
+void tst_QTemporaryFile::resetTemplateAfterError()
+{
+ // calling setFileTemplate on a failed open
+
+ QString tempPath = QDir::tempPath();
+
+ QString const fileTemplate("destination/qt_temp_file_test.XXXXXX");
+ QString const fileTemplate2(tempPath + "/qt_temp_file_test.XXXXXX");
+
+ QVERIFY2( QDir(tempPath).exists() || QDir().mkpath(tempPath), "Test precondition" );
+ QVERIFY2( !QFile::exists("destination"), "Test precondition" );
+ QVERIFY2( !QFile::exists(fileTemplate2) || QFile::remove(fileTemplate2), "Test precondition" );
+
+ QFile file(fileTemplate2);
+ QByteArray fileContent("This file is intentionally NOT left empty.");
+
+ QVERIFY( file.open(QIODevice::ReadWrite | QIODevice::Truncate) );
+ QCOMPARE( file.write(fileContent), (qint64)fileContent.size() );
+ QVERIFY( file.flush() );
+
+ QString fileName;
+ {
+ QTemporaryFile temp;
+
+ QVERIFY( temp.fileName().isEmpty() );
+ QVERIFY( !temp.fileTemplate().isEmpty() );
+
+ temp.setFileTemplate( fileTemplate );
+
+ QVERIFY( temp.fileName().isEmpty() );
+ QCOMPARE( temp.fileTemplate(), fileTemplate );
+
+ QVERIFY( !temp.open() );
+
+ QVERIFY( temp.fileName().isEmpty() );
+ QCOMPARE( temp.fileTemplate(), fileTemplate );
+
+ temp.setFileTemplate( fileTemplate2 );
+ QVERIFY( temp.open() );
+
+ fileName = temp.fileName();
+ QVERIFY( QFile::exists(fileName) );
+ QVERIFY( !fileName.isEmpty() );
+ QVERIFY2( fileName != fileTemplate2,
+ ("Generated name shouldn't be same as template: " + fileTemplate2).toLocal8Bit().constData() );
+ }
+
+ QVERIFY( !QFile::exists(fileName) );
+
+ file.seek(0);
+ QCOMPARE( QString(file.readAll()), QString(fileContent) );
+ QVERIFY( file.remove() );
+}
+
+void tst_QTemporaryFile::setTemplateAfterOpen()
+{
+ QTemporaryFile temp;
+
+ QVERIFY( temp.fileName().isEmpty() );
+ QVERIFY( !temp.fileTemplate().isEmpty() );
+
+ QVERIFY( temp.open() );
+
+ QString const fileName = temp.fileName();
+ QString const newTemplate("funny-path/funny-name-XXXXXX.tmp");
+
+ QVERIFY( !fileName.isEmpty() );
+ QVERIFY( QFile::exists(fileName) );
+ QVERIFY( !temp.fileTemplate().isEmpty() );
+ QVERIFY( temp.fileTemplate() != newTemplate );
+
+ temp.close(); // QTemporaryFile::setFileTemplate will assert on isOpen() up to 4.5.2
+ temp.setFileTemplate(newTemplate);
+ QCOMPARE( temp.fileTemplate(), newTemplate );
+
+ QVERIFY( temp.open() );
+ QCOMPARE( temp.fileName(), fileName );
+ QCOMPARE( temp.fileTemplate(), newTemplate );
+}
+
+void tst_QTemporaryFile::autoRemoveAfterFailedRename()
+{
+ struct CleanOnReturn
+ {
+ ~CleanOnReturn()
+ {
+ if (!tempName.isEmpty())
+ QFile::remove(tempName);
+ }
+
+ void reset()
+ {
+ tempName.clear();
+ }
+
+ QString tempName;
+ };
+
+ CleanOnReturn cleaner;
+
+ {
+ QTemporaryFile file;
+ QVERIFY( file.open() );
+ cleaner.tempName = file.fileName();
+
+ QVERIFY( QFile::exists(cleaner.tempName) );
+ QVERIFY( !QFileInfo("i-do-not-exist").isDir() );
+ QVERIFY( !file.rename("i-do-not-exist/file.txt") );
+ QVERIFY( QFile::exists(cleaner.tempName) );
+ }
+
+ QVERIFY( !QFile::exists(cleaner.tempName) );
+ cleaner.reset();
+}
+
+void tst_QTemporaryFile::QTBUG_4796_data()
+{
+ QTest::addColumn<QString>("prefix");
+ QTest::addColumn<QString>("suffix");
+ QTest::addColumn<bool>("openResult");
+
+ QString unicode = QString::fromUtf8("\xc3\xa5\xc3\xa6\xc3\xb8");
+
+ QTest::newRow("<empty>") << QString() << QString() << true;
+ QTest::newRow("blaXXXXXX") << QString("bla") << QString() << true;
+ QTest::newRow("XXXXXXbla") << QString() << QString("bla") << true;
+ QTest::newRow("does-not-exist/qt_temp.XXXXXX") << QString("does-not-exist/qt_temp") << QString() << false;
+ QTest::newRow("XXXXXX<unicode>") << QString() << unicode << true;
+ QTest::newRow("<unicode>XXXXXX") << unicode << QString() << true;
+ QTest::newRow("<unicode>XXXXXX<unicode>") << unicode << unicode << true;
+}
+
+void tst_QTemporaryFile::QTBUG_4796()
+{
+ QVERIFY(QDir("test-XXXXXX").exists());
+
+ struct CleanOnReturn
+ {
+ ~CleanOnReturn()
+ {
+ Q_FOREACH(QString tempName, tempNames)
+ QFile::remove(tempName);
+ }
+
+ void reset()
+ {
+ tempNames.clear();
+ }
+
+ QStringList tempNames;
+ };
+
+ CleanOnReturn cleaner;
+
+ QFETCH(QString, prefix);
+ QFETCH(QString, suffix);
+ QFETCH(bool, openResult);
+
+ {
+ QString fileTemplate1 = prefix + QString("XX") + suffix;
+ QString fileTemplate2 = prefix + QString("XXXX") + suffix;
+ QString fileTemplate3 = prefix + QString("XXXXXX") + suffix;
+ QString fileTemplate4 = prefix + QString("XXXXXXXX") + suffix;
+
+ QTemporaryFile file1(fileTemplate1);
+ QTemporaryFile file2(fileTemplate2);
+ QTemporaryFile file3(fileTemplate3);
+ QTemporaryFile file4(fileTemplate4);
+ QTemporaryFile file5("test-XXXXXX/" + fileTemplate1);
+ QTemporaryFile file6("test-XXXXXX/" + fileTemplate3);
+
+ QCOMPARE(file1.open(), openResult);
+ QCOMPARE(file2.open(), openResult);
+ QCOMPARE(file3.open(), openResult);
+ QCOMPARE(file4.open(), openResult);
+ QCOMPARE(file5.open(), openResult);
+ QCOMPARE(file6.open(), openResult);
+
+ QCOMPARE(file1.exists(), openResult);
+ QCOMPARE(file2.exists(), openResult);
+ QCOMPARE(file3.exists(), openResult);
+ QCOMPARE(file4.exists(), openResult);
+ QCOMPARE(file5.exists(), openResult);
+ QCOMPARE(file6.exists(), openResult);
+
+ // make sure the file exists under the *correct* name
+ if (openResult) {
+ cleaner.tempNames << file1.fileName()
+ << file2.fileName()
+ << file3.fileName()
+ << file4.fileName()
+ << file5.fileName()
+ << file6.fileName();
+
+ QVERIFY(file1.fileName().startsWith(fileTemplate1 + QLatin1Char('.')));
+ QVERIFY(file2.fileName().startsWith(fileTemplate2 + QLatin1Char('.')));
+ QVERIFY(file5.fileName().startsWith("test-XXXXXX/" + fileTemplate1 + QLatin1Char('.')));
+ QVERIFY(file6.fileName().startsWith("test-XXXXXX/" + prefix));
+
+ if (!prefix.isEmpty()) {
+ QVERIFY(file3.fileName().startsWith(prefix));
+ QVERIFY(file4.fileName().startsWith(prefix));
+ }
+
+ if (!suffix.isEmpty()) {
+ QVERIFY(file3.fileName().endsWith(suffix));
+ QVERIFY(file4.fileName().endsWith(suffix));
+ QVERIFY(file6.fileName().endsWith(suffix));
+ }
+ }
+ }
+
+ Q_FOREACH(QString const &tempName, cleaner.tempNames)
+ QVERIFY( !QFile::exists(tempName) );
+
+ cleaner.reset();
+}
+
+QTEST_MAIN(tst_QTemporaryFile)
+#include "tst_qtemporaryfile.moc"
diff --git a/tests/auto/corelib/io/qtextstream/.gitattributes b/tests/auto/corelib/io/qtextstream/.gitattributes
new file mode 100644
index 0000000000..eb78a3cecf
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/.gitattributes
@@ -0,0 +1,3 @@
+rfc3261.txt -crlf
+task113817.txt -crlf
+shift-jis.txt -crlf
diff --git a/tests/auto/corelib/io/qtextstream/.gitignore b/tests/auto/corelib/io/qtextstream/.gitignore
new file mode 100644
index 0000000000..01f26ae749
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/.gitignore
@@ -0,0 +1,11 @@
+bom.txt
+out.txt
+readAllStdinProcess/readAllStdinProcess
+readAllStdinProcess/readAllStdinProcess.exe
+readLineStdinProcess/readLineStdinProcess
+readLineStdinProcess/readLineStdinProcess.exe
+stdinProcess/stdinProcess
+stdinProcess/stdinProcess.exe
+testfile
+tst_qtextstream
+utf8bom
diff --git a/tests/auto/corelib/io/qtextstream/qtextstream.pro b/tests/auto/corelib/io/qtextstream/qtextstream.pro
new file mode 100644
index 0000000000..a2dcc8108d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/qtextstream.pro
@@ -0,0 +1,6 @@
+TEMPLATE = subdirs
+SUBDIRS = test
+!symbian: SUBDIRS += stdinProcess readAllStdinProcess readLineStdinProcess
+
+
+
diff --git a/tests/auto/corelib/io/qtextstream/qtextstream.qrc b/tests/auto/corelib/io/qtextstream/qtextstream.qrc
new file mode 100644
index 0000000000..a750e35d4a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/qtextstream.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/tst_textstream/">
+ <file>resources/big_endian/</file>
+ <file>resources/little_endian/</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp b/tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp
new file mode 100644
index 0000000000..ca541d053a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore>
+
+int main(int argc, char **argv)
+{
+ QCoreApplication a(argc, argv);
+ qDebug() << QTextStream(stdin).readAll();
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qtextstream/readAllStdinProcess/readAllStdinProcess.pro b/tests/auto/corelib/io/qtextstream/readAllStdinProcess/readAllStdinProcess.pro
new file mode 100644
index 0000000000..9cf4d19387
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/readAllStdinProcess/readAllStdinProcess.pro
@@ -0,0 +1,7 @@
+SOURCES += main.cpp
+QT = core
+CONFIG += console
+CONFIG -= app_bundle
+DESTDIR = ./
+
+
diff --git a/tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp b/tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp
new file mode 100644
index 0000000000..d8d2eed000
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore>
+
+int main(int argc, char **argv)
+{
+ QCoreApplication a(argc, argv);
+ QTextStream qin(stdin);
+ QTextStream qerr(stderr);
+ QString line;
+ do {
+ line = qin.readLine();
+ if (!line.isNull())
+ qerr << line << flush;
+ } while (!line.isNull());
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qtextstream/readLineStdinProcess/readLineStdinProcess.pro b/tests/auto/corelib/io/qtextstream/readLineStdinProcess/readLineStdinProcess.pro
new file mode 100644
index 0000000000..9cf4d19387
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/readLineStdinProcess/readLineStdinProcess.pro
@@ -0,0 +1,7 @@
+SOURCES += main.cpp
+QT = core
+CONFIG += console
+CONFIG -= app_bundle
+DESTDIR = ./
+
+
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data
new file mode 100644
index 0000000000..1910281566
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data
@@ -0,0 +1 @@
+foo \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data
new file mode 100644
index 0000000000..a907ec3f43
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data
@@ -0,0 +1,2 @@
+foo
+bar \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data
new file mode 100644
index 0000000000..61cd46aacc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data
@@ -0,0 +1 @@
+cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data
new file mode 100644
index 0000000000..1910281566
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data
@@ -0,0 +1 @@
+foo \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data
new file mode 100644
index 0000000000..a907ec3f43
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data
@@ -0,0 +1,2 @@
+foo
+bar \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data
new file mode 100644
index 0000000000..61cd46aacc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data
@@ -0,0 +1 @@
+cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..849ecb39ed
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..8b9647f06f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..d73722e724
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..e2df5e2ee7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data
@@ -0,0 +1 @@
+þÿ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..e2df5e2ee7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data
@@ -0,0 +1 @@
+þÿ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..fcb209d377
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..7939963f78
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..d155ca2863
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..46b134b197
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data
@@ -0,0 +1 @@
+ÿþ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..46b134b197
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data
@@ -0,0 +1 @@
+ÿþ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..104e45f940
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..3135276780
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..993d0b9e19
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..1910281566
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+foo \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..a907ec3f43
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data
@@ -0,0 +1,2 @@
+foo
+bar \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..61cd46aacc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data
new file mode 100644
index 0000000000..e2df5e2ee7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data
@@ -0,0 +1 @@
+þÿ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data
new file mode 100644
index 0000000000..e2df5e2ee7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data
@@ -0,0 +1 @@
+þÿ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.data
new file mode 100644
index 0000000000..fcb209d377
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.data
new file mode 100644
index 0000000000..7939963f78
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.data
new file mode 100644
index 0000000000..d155ca2863
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data
new file mode 100644
index 0000000000..8c7e5a667f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data
@@ -0,0 +1 @@
+A \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data
new file mode 100644
index 0000000000..7371f47a6f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data
@@ -0,0 +1 @@
+B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data
new file mode 100644
index 0000000000..fa7af8bf5f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data
@@ -0,0 +1 @@
+z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data
new file mode 100644
index 0000000000..b516b2c489
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data
@@ -0,0 +1 @@
+@ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data
new file mode 100644
index 0000000000..8c7e5a667f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data
@@ -0,0 +1 @@
+A \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data
new file mode 100644
index 0000000000..7371f47a6f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data
@@ -0,0 +1 @@
+B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data
new file mode 100644
index 0000000000..fa7af8bf5f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data
@@ -0,0 +1 @@
+z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data
new file mode 100644
index 0000000000..b516b2c489
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data
@@ -0,0 +1 @@
+@ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..6def16c99e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..57302ad8e7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..239c14d498
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..8fbd3327c8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..d745e1be7b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..db52135603
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..0a4ca93c16
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e7c7d5a76b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..7501b59181
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..1565aaa95f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..9ac3ad9a6b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..bb28df16b9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..8c0f57437b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d494004e64
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..de421979ea
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..8c7e5a667f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+A \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..7371f47a6f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..fa7af8bf5f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..b516b2c489
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+@ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.data
new file mode 100644
index 0000000000..db52135603
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.data
new file mode 100644
index 0000000000..0a4ca93c16
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.data
new file mode 100644
index 0000000000..e7c7d5a76b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.data
new file mode 100644
index 0000000000..7501b59181
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.data
new file mode 100644
index 0000000000..1565aaa95f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data
new file mode 100644
index 0000000000..1910281566
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data
@@ -0,0 +1 @@
+foo \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data
new file mode 100644
index 0000000000..a907ec3f43
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data
@@ -0,0 +1,2 @@
+foo
+bar \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data
new file mode 100644
index 0000000000..61cd46aacc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data
@@ -0,0 +1 @@
+cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data
new file mode 100644
index 0000000000..1910281566
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data
@@ -0,0 +1 @@
+foo \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data
new file mode 100644
index 0000000000..a907ec3f43
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data
@@ -0,0 +1,2 @@
+foo
+bar \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data
new file mode 100644
index 0000000000..61cd46aacc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data
@@ -0,0 +1 @@
+cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..849ecb39ed
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..8b9647f06f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..d73722e724
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..e2df5e2ee7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data
@@ -0,0 +1 @@
+þÿ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..e2df5e2ee7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data
@@ -0,0 +1 @@
+þÿ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..fcb209d377
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..7939963f78
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..d155ca2863
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..104e45f940
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..3135276780
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..993d0b9e19
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..1910281566
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+foo \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..a907ec3f43
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data
@@ -0,0 +1,2 @@
+foo
+bar \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..61cd46aacc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data
new file mode 100644
index 0000000000..e2df5e2ee7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data
@@ -0,0 +1 @@
+þÿ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data
new file mode 100644
index 0000000000..e2df5e2ee7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data
@@ -0,0 +1 @@
+þÿ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.data
new file mode 100644
index 0000000000..fcb209d377
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.data
new file mode 100644
index 0000000000..7939963f78
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.data
new file mode 100644
index 0000000000..d155ca2863
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data
new file mode 100644
index 0000000000..8c7e5a667f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data
@@ -0,0 +1 @@
+A \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data
new file mode 100644
index 0000000000..7371f47a6f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data
@@ -0,0 +1 @@
+B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data
new file mode 100644
index 0000000000..9280c0d31d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data
new file mode 100644
index 0000000000..c227083464
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data
@@ -0,0 +1 @@
+0 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data
new file mode 100644
index 0000000000..8c7e5a667f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data
@@ -0,0 +1 @@
+A \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data
new file mode 100644
index 0000000000..7371f47a6f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data
@@ -0,0 +1 @@
+B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data
new file mode 100644
index 0000000000..9280c0d31d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data
new file mode 100644
index 0000000000..c227083464
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data
@@ -0,0 +1 @@
+0 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..6def16c99e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..57302ad8e7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..239c14d498
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..819b31d1f2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..a6ff072af1
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..db52135603
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..0a4ca93c16
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e7c7d5a76b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..bf9cec8ea7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..ec4665f7ff
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..9ac3ad9a6b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..bb28df16b9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..8c0f57437b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..878dc8a26e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..fd0779e0f3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..8c7e5a667f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+A \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..7371f47a6f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..9280c0d31d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..c227083464
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+0 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.data
new file mode 100644
index 0000000000..db52135603
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.data
new file mode 100644
index 0000000000..0a4ca93c16
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.data
new file mode 100644
index 0000000000..e7c7d5a76b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.data
new file mode 100644
index 0000000000..bf9cec8ea7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.data
new file mode 100644
index 0000000000..ec4665f7ff
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data
new file mode 100644
index 0000000000..d2fa166d7d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data
new file mode 100644
index 0000000000..1d0fa9e6a6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A -0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data
new file mode 100644
index 0000000000..e47d45c143
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data
new file mode 100644
index 0000000000..47ce07d283
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A -3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data
new file mode 100644
index 0000000000..80aed3622e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data
@@ -0,0 +1 @@
+ A 1.23456789 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data
new file mode 100644
index 0000000000..aec027753d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data
@@ -0,0 +1 @@
+ A -1.23456789 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data
new file mode 100644
index 0000000000..d2fa166d7d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data
new file mode 100644
index 0000000000..1d0fa9e6a6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data
@@ -0,0 +1 @@
+ A -0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data
new file mode 100644
index 0000000000..e47d45c143
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data
new file mode 100644
index 0000000000..47ce07d283
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data
@@ -0,0 +1 @@
+ A -3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data
new file mode 100644
index 0000000000..80aed3622e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data
@@ -0,0 +1 @@
+ A 1.23456789 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data
new file mode 100644
index 0000000000..aec027753d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data
@@ -0,0 +1 @@
+ A -1.23456789 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..feac21f921
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..67ce8d83c8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..9662a9aaa1
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..a74511b101
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..bdc06a6ec2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.data
new file mode 100644
index 0000000000..79b15d4d8a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.data
new file mode 100644
index 0000000000..2141e65843
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..61cc689e1e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..cf914bc67e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..5e08ff706a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..b6f4541bb8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data
new file mode 100644
index 0000000000..f4a50d829a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data
new file mode 100644
index 0000000000..2d8f67152c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..e6b94bbeb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..fb0a550264
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..48fe53930f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..811e93212d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.data
new file mode 100644
index 0000000000..7041fa9b4d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.data
new file mode 100644
index 0000000000..9fd21fade0
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..d2fa166d7d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..1d0fa9e6a6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A -0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..e47d45c143
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..47ce07d283
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A -3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data
new file mode 100644
index 0000000000..80aed3622e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data
@@ -0,0 +1 @@
+ A 1.23456789 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data
new file mode 100644
index 0000000000..aec027753d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data
@@ -0,0 +1 @@
+ A -1.23456789 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.data
new file mode 100644
index 0000000000..61cc689e1e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.data
new file mode 100644
index 0000000000..cf914bc67e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.data
new file mode 100644
index 0000000000..5e08ff706a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.data
new file mode 100644
index 0000000000..b6f4541bb8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.data
new file mode 100644
index 0000000000..f4a50d829a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.data
new file mode 100644
index 0000000000..2d8f67152c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data
new file mode 100644
index 0000000000..d2fa166d7d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data
new file mode 100644
index 0000000000..1d0fa9e6a6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A -0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data
new file mode 100644
index 0000000000..e47d45c143
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data
new file mode 100644
index 0000000000..47ce07d283
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A -3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data
new file mode 100644
index 0000000000..d2fa166d7d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data
new file mode 100644
index 0000000000..1d0fa9e6a6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data
@@ -0,0 +1 @@
+ A -0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data
new file mode 100644
index 0000000000..e47d45c143
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data
new file mode 100644
index 0000000000..47ce07d283
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data
@@ -0,0 +1 @@
+ A -3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..feac21f921
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..67ce8d83c8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..9662a9aaa1
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..a74511b101
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..bdc06a6ec2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..61cc689e1e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..cf914bc67e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..5e08ff706a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..b6f4541bb8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..e6b94bbeb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..fb0a550264
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..48fe53930f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..811e93212d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..d2fa166d7d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..1d0fa9e6a6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A -0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..e47d45c143
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..47ce07d283
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A -3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.data
new file mode 100644
index 0000000000..61cc689e1e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.data
new file mode 100644
index 0000000000..cf914bc67e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.data
new file mode 100644
index 0000000000..5e08ff706a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.data
new file mode 100644
index 0000000000..b6f4541bb8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data
new file mode 100644
index 0000000000..f171cb6c0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data
@@ -0,0 +1 @@
+ A -10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data
new file mode 100644
index 0000000000..de18d40ee8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data
@@ -0,0 +1 @@
+ A -255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data
new file mode 100644
index 0000000000..f4aefab396
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data
@@ -0,0 +1 @@
+ A -512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data
new file mode 100644
index 0000000000..f171cb6c0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data
@@ -0,0 +1 @@
+ A -10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data
new file mode 100644
index 0000000000..de18d40ee8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data
@@ -0,0 +1 @@
+ A -255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data
new file mode 100644
index 0000000000..f4aefab396
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data
@@ -0,0 +1 @@
+ A -512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..feac21f921
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..815d4fc7db
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..c933a04c07
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..69de5ef2bd
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..c45139955a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.data
new file mode 100644
index 0000000000..396352f4d6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.data
new file mode 100644
index 0000000000..ea73fac731
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.data
new file mode 100644
index 0000000000..1f4f1a58de
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.data
new file mode 100644
index 0000000000..9469ca407f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..9a9a22daef
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data
new file mode 100644
index 0000000000..c52b277d9c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data
new file mode 100644
index 0000000000..18c3344c26
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data
new file mode 100644
index 0000000000..5193701ae3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data
new file mode 100644
index 0000000000..fab38d24ef
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..f5a0d874d4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.data
new file mode 100644
index 0000000000..95742ec8f2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.data
new file mode 100644
index 0000000000..ebb14b2fbd
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.data
new file mode 100644
index 0000000000..a9e1432ca9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.data
new file mode 100644
index 0000000000..b7e6743c28
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data
new file mode 100644
index 0000000000..f171cb6c0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data
@@ -0,0 +1 @@
+ A -10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data
new file mode 100644
index 0000000000..de18d40ee8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data
@@ -0,0 +1 @@
+ A -255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data
new file mode 100644
index 0000000000..f4aefab396
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data
@@ -0,0 +1 @@
+ A -512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.data
new file mode 100644
index 0000000000..9a9a22daef
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.data
new file mode 100644
index 0000000000..c52b277d9c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.data
new file mode 100644
index 0000000000..18c3344c26
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.data
new file mode 100644
index 0000000000..5193701ae3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.data
new file mode 100644
index 0000000000..fab38d24ef
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data
new file mode 100644
index 0000000000..f667f77c45
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A 65535 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data
new file mode 100644
index 0000000000..f171cb6c0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data
@@ -0,0 +1 @@
+ A -10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data
new file mode 100644
index 0000000000..de18d40ee8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data
@@ -0,0 +1 @@
+ A -255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data
new file mode 100644
index 0000000000..cab2ee4938
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data
@@ -0,0 +1 @@
+ A -65534 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data
new file mode 100644
index 0000000000..f667f77c45
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data
@@ -0,0 +1 @@
+ A 65535 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data
new file mode 100644
index 0000000000..f171cb6c0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data
@@ -0,0 +1 @@
+ A -10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data
new file mode 100644
index 0000000000..de18d40ee8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data
@@ -0,0 +1 @@
+ A -255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data
new file mode 100644
index 0000000000..cab2ee4938
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data
@@ -0,0 +1 @@
+ A -65534 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..feac21f921
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..815d4fc7db
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..c933a04c07
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..69de5ef2bd
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..40269f4e0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.data
new file mode 100644
index 0000000000..396352f4d6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.data
new file mode 100644
index 0000000000..ea73fac731
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.data
new file mode 100644
index 0000000000..1f4f1a58de
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.data
new file mode 100644
index 0000000000..e8051f8906
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..e50e2d02a9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data
new file mode 100644
index 0000000000..c52b277d9c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data
new file mode 100644
index 0000000000..18c3344c26
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data
new file mode 100644
index 0000000000..5193701ae3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data
new file mode 100644
index 0000000000..5a9cb07f57
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..e20c76a82c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.data
new file mode 100644
index 0000000000..95742ec8f2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.data
new file mode 100644
index 0000000000..ebb14b2fbd
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.data
new file mode 100644
index 0000000000..a9e1432ca9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.data
new file mode 100644
index 0000000000..f8ec5bc443
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..f667f77c45
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A 65535 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data
new file mode 100644
index 0000000000..f171cb6c0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data
@@ -0,0 +1 @@
+ A -10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data
new file mode 100644
index 0000000000..de18d40ee8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data
@@ -0,0 +1 @@
+ A -255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data
new file mode 100644
index 0000000000..cab2ee4938
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data
@@ -0,0 +1 @@
+ A -65534 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.data
new file mode 100644
index 0000000000..e50e2d02a9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.data
new file mode 100644
index 0000000000..c52b277d9c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.data
new file mode 100644
index 0000000000..18c3344c26
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.data
new file mode 100644
index 0000000000..5193701ae3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.data
new file mode 100644
index 0000000000..5a9cb07f57
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data
new file mode 100644
index 0000000000..02b7f3ab7b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A -254 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data
new file mode 100644
index 0000000000..02b7f3ab7b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data
@@ -0,0 +1 @@
+ A -254 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..feac21f921
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..396352f4d6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..815d4fc7db
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..69de5ef2bd
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..0dc83d2713
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..c52b277d9c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..b951b56531
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..95742ec8f2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..80d3ca2ef1
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..02b7f3ab7b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A -254 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.data
new file mode 100644
index 0000000000..c52b277d9c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.data
new file mode 100644
index 0000000000..b951b56531
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..feac21f921
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..815d4fc7db
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..c933a04c07
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..69de5ef2bd
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..c45139955a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..9a9a22daef
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..f5a0d874d4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.data
new file mode 100644
index 0000000000..9a9a22daef
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data
new file mode 100644
index 0000000000..f667f77c45
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A 65535 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data
new file mode 100644
index 0000000000..f667f77c45
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data
@@ -0,0 +1 @@
+ A 65535 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..feac21f921
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..815d4fc7db
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..c933a04c07
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..69de5ef2bd
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..40269f4e0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..e50e2d02a9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..e20c76a82c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..f667f77c45
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A 65535 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.data
new file mode 100644
index 0000000000..e50e2d02a9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..feac21f921
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..815d4fc7db
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..c933a04c07
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..69de5ef2bd
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..c45139955a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..9a9a22daef
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..f5a0d874d4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.data
new file mode 100644
index 0000000000..9a9a22daef
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource0.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource0.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource1.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource1.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource10.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource10.data
new file mode 100644
index 0000000000..597f94465c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource10.data
@@ -0,0 +1 @@
+I-am-a-string \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource11.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource11.data
new file mode 100644
index 0000000000..597f94465c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource11.data
@@ -0,0 +1 @@
+I-am-a-string \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource12.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource12.data
new file mode 100644
index 0000000000..597f94465c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource12.data
@@ -0,0 +1 @@
+I-am-a-string \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource2.data
new file mode 100644
index 0000000000..bd41cba781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource2.data
@@ -0,0 +1 @@
+12345 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource20.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource20.data
new file mode 100644
index 0000000000..b9e3a5a7c7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource20.data
@@ -0,0 +1 @@
+フ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource21.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource21.data
new file mode 100644
index 0000000000..7014dc882f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource21.data
@@ -0,0 +1 @@
+賿 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource3.data
new file mode 100644
index 0000000000..bd41cba781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource3.data
@@ -0,0 +1 @@
+12345 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource4.data
new file mode 100644
index 0000000000..bd41cba781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource4.data
@@ -0,0 +1 @@
+12345 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource5.data
new file mode 100644
index 0000000000..bd41cba781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource5.data
@@ -0,0 +1 @@
+12345 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource6.data
new file mode 100644
index 0000000000..bd41cba781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource6.data
@@ -0,0 +1 @@
+12345 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource7.data
new file mode 100644
index 0000000000..bd41cba781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource7.data
@@ -0,0 +1 @@
+12345 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource8.data
new file mode 100644
index 0000000000..4f3af7006e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource8.data
@@ -0,0 +1 @@
+3.1415 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource9.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource9.data
new file mode 100644
index 0000000000..4f3af7006e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource9.data
@@ -0,0 +1 @@
+3.1415 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data
new file mode 100644
index 0000000000..1910281566
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data
@@ -0,0 +1 @@
+foo \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data
new file mode 100644
index 0000000000..a907ec3f43
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data
@@ -0,0 +1,2 @@
+foo
+bar \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data
new file mode 100644
index 0000000000..61cd46aacc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data
@@ -0,0 +1 @@
+cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data
new file mode 100644
index 0000000000..1910281566
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data
@@ -0,0 +1 @@
+foo \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data
new file mode 100644
index 0000000000..a907ec3f43
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data
@@ -0,0 +1,2 @@
+foo
+bar \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data
new file mode 100644
index 0000000000..61cd46aacc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data
@@ -0,0 +1 @@
+cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..4d5bdc553e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..3cf181c23c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..f7f74e56a0
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..e2df5e2ee7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data
@@ -0,0 +1 @@
+þÿ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..e2df5e2ee7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data
@@ -0,0 +1 @@
+þÿ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..fcb209d377
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..7939963f78
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..d155ca2863
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..46b134b197
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data
@@ -0,0 +1 @@
+ÿþ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..46b134b197
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data
@@ -0,0 +1 @@
+ÿþ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..104e45f940
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..3135276780
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..993d0b9e19
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..1910281566
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+foo \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..a907ec3f43
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data
@@ -0,0 +1,2 @@
+foo
+bar \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..61cd46aacc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data
new file mode 100644
index 0000000000..46b134b197
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data
@@ -0,0 +1 @@
+ÿþ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data
new file mode 100644
index 0000000000..46b134b197
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data
@@ -0,0 +1 @@
+ÿþ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.data
new file mode 100644
index 0000000000..104e45f940
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.data
new file mode 100644
index 0000000000..3135276780
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.data
new file mode 100644
index 0000000000..993d0b9e19
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data
new file mode 100644
index 0000000000..8c7e5a667f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data
@@ -0,0 +1 @@
+A \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data
new file mode 100644
index 0000000000..7371f47a6f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data
@@ -0,0 +1 @@
+B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data
new file mode 100644
index 0000000000..fa7af8bf5f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data
@@ -0,0 +1 @@
+z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data
new file mode 100644
index 0000000000..b516b2c489
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data
@@ -0,0 +1 @@
+@ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data
new file mode 100644
index 0000000000..8c7e5a667f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data
@@ -0,0 +1 @@
+A \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data
new file mode 100644
index 0000000000..7371f47a6f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data
@@ -0,0 +1 @@
+B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data
new file mode 100644
index 0000000000..fa7af8bf5f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data
@@ -0,0 +1 @@
+z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data
new file mode 100644
index 0000000000..b516b2c489
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data
@@ -0,0 +1 @@
+@ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..e2b43e3781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..962fc922ad
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..839cc09ec8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..f71ac66a63
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..88f99805e3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..db52135603
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..0a4ca93c16
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e7c7d5a76b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..7501b59181
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..1565aaa95f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..9ac3ad9a6b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..bb28df16b9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..8c0f57437b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d494004e64
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..de421979ea
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..8c7e5a667f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+A \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..7371f47a6f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..fa7af8bf5f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..b516b2c489
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+@ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.data
new file mode 100644
index 0000000000..9ac3ad9a6b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.data
new file mode 100644
index 0000000000..bb28df16b9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.data
new file mode 100644
index 0000000000..8c0f57437b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.data
new file mode 100644
index 0000000000..d494004e64
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.data
new file mode 100644
index 0000000000..de421979ea
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data
new file mode 100644
index 0000000000..1910281566
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data
@@ -0,0 +1 @@
+foo \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data
new file mode 100644
index 0000000000..a907ec3f43
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data
@@ -0,0 +1,2 @@
+foo
+bar \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data
new file mode 100644
index 0000000000..61cd46aacc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data
@@ -0,0 +1 @@
+cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data
new file mode 100644
index 0000000000..1910281566
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data
@@ -0,0 +1 @@
+foo \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data
new file mode 100644
index 0000000000..a907ec3f43
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data
@@ -0,0 +1,2 @@
+foo
+bar \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data
new file mode 100644
index 0000000000..61cd46aacc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data
@@ -0,0 +1 @@
+cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..4d5bdc553e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..3cf181c23c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..f7f74e56a0
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..fcb209d377
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..7939963f78
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..d155ca2863
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..46b134b197
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data
@@ -0,0 +1 @@
+ÿþ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..46b134b197
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data
@@ -0,0 +1 @@
+ÿþ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..104e45f940
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..3135276780
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..993d0b9e19
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_0.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_1.data
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..1910281566
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+foo \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..a907ec3f43
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data
@@ -0,0 +1,2 @@
+foo
+bar \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..61cd46aacc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data
new file mode 100644
index 0000000000..46b134b197
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data
@@ -0,0 +1 @@
+ÿþ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data
new file mode 100644
index 0000000000..46b134b197
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data
@@ -0,0 +1 @@
+ÿþ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.data
new file mode 100644
index 0000000000..104e45f940
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.data
new file mode 100644
index 0000000000..3135276780
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.data
new file mode 100644
index 0000000000..993d0b9e19
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data
new file mode 100644
index 0000000000..8c7e5a667f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data
@@ -0,0 +1 @@
+A \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data
new file mode 100644
index 0000000000..7371f47a6f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data
@@ -0,0 +1 @@
+B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data
new file mode 100644
index 0000000000..9280c0d31d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data
new file mode 100644
index 0000000000..c227083464
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data
@@ -0,0 +1 @@
+0 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data
new file mode 100644
index 0000000000..8c7e5a667f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data
@@ -0,0 +1 @@
+A \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data
new file mode 100644
index 0000000000..7371f47a6f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data
@@ -0,0 +1 @@
+B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data
new file mode 100644
index 0000000000..9280c0d31d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data
new file mode 100644
index 0000000000..c227083464
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data
@@ -0,0 +1 @@
+0 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..e2b43e3781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..962fc922ad
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..839cc09ec8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..c33473a370
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..def7fcb589
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..db52135603
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..0a4ca93c16
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e7c7d5a76b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..bf9cec8ea7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..ec4665f7ff
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..9ac3ad9a6b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..bb28df16b9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..8c0f57437b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..878dc8a26e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..fd0779e0f3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..8c7e5a667f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+A \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..7371f47a6f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..9280c0d31d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..c227083464
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+0 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.data
new file mode 100644
index 0000000000..9ac3ad9a6b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.data
new file mode 100644
index 0000000000..bb28df16b9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.data
new file mode 100644
index 0000000000..8c0f57437b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.data
new file mode 100644
index 0000000000..878dc8a26e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.data
new file mode 100644
index 0000000000..fd0779e0f3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data
new file mode 100644
index 0000000000..d2fa166d7d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data
new file mode 100644
index 0000000000..1d0fa9e6a6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A -0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data
new file mode 100644
index 0000000000..e47d45c143
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data
new file mode 100644
index 0000000000..47ce07d283
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A -3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data
new file mode 100644
index 0000000000..80aed3622e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data
@@ -0,0 +1 @@
+ A 1.23456789 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data
new file mode 100644
index 0000000000..aec027753d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data
@@ -0,0 +1 @@
+ A -1.23456789 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data
new file mode 100644
index 0000000000..d2fa166d7d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data
new file mode 100644
index 0000000000..1d0fa9e6a6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data
@@ -0,0 +1 @@
+ A -0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data
new file mode 100644
index 0000000000..e47d45c143
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data
new file mode 100644
index 0000000000..47ce07d283
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data
@@ -0,0 +1 @@
+ A -3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data
new file mode 100644
index 0000000000..80aed3622e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data
@@ -0,0 +1 @@
+ A 1.23456789 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data
new file mode 100644
index 0000000000..aec027753d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data
@@ -0,0 +1 @@
+ A -1.23456789 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..775ae0f25b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..fb911f7352
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..efbc06bf26
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..4d857caa13
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..b125e2084f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.data
new file mode 100644
index 0000000000..f39fbde113
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.data
new file mode 100644
index 0000000000..5436b427ed
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..61cc689e1e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..cf914bc67e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..5e08ff706a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..b6f4541bb8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data
new file mode 100644
index 0000000000..f4a50d829a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data
new file mode 100644
index 0000000000..2d8f67152c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..e6b94bbeb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..fb0a550264
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..48fe53930f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..811e93212d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.data
new file mode 100644
index 0000000000..7041fa9b4d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.data
new file mode 100644
index 0000000000..9fd21fade0
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..d2fa166d7d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..1d0fa9e6a6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A -0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..e47d45c143
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..47ce07d283
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A -3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data
new file mode 100644
index 0000000000..80aed3622e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data
@@ -0,0 +1 @@
+ A 1.23456789 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data
new file mode 100644
index 0000000000..aec027753d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data
@@ -0,0 +1 @@
+ A -1.23456789 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.data
new file mode 100644
index 0000000000..e6b94bbeb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.data
new file mode 100644
index 0000000000..fb0a550264
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.data
new file mode 100644
index 0000000000..48fe53930f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.data
new file mode 100644
index 0000000000..811e93212d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.data
new file mode 100644
index 0000000000..7041fa9b4d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.data
new file mode 100644
index 0000000000..9fd21fade0
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data
new file mode 100644
index 0000000000..d2fa166d7d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data
new file mode 100644
index 0000000000..1d0fa9e6a6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A -0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data
new file mode 100644
index 0000000000..e47d45c143
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data
new file mode 100644
index 0000000000..47ce07d283
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A -3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data
new file mode 100644
index 0000000000..d2fa166d7d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data
new file mode 100644
index 0000000000..1d0fa9e6a6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data
@@ -0,0 +1 @@
+ A -0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data
new file mode 100644
index 0000000000..e47d45c143
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data
new file mode 100644
index 0000000000..47ce07d283
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data
@@ -0,0 +1 @@
+ A -3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..775ae0f25b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..fb911f7352
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..efbc06bf26
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..4d857caa13
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..b125e2084f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..61cc689e1e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..cf914bc67e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..5e08ff706a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..b6f4541bb8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..e6b94bbeb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..fb0a550264
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..48fe53930f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..811e93212d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..d2fa166d7d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..1d0fa9e6a6
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A -0.0001 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..e47d45c143
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..47ce07d283
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A -3.45678 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.data
new file mode 100644
index 0000000000..e6b94bbeb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.data
new file mode 100644
index 0000000000..fb0a550264
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.data
new file mode 100644
index 0000000000..48fe53930f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.data
new file mode 100644
index 0000000000..811e93212d
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data
new file mode 100644
index 0000000000..f171cb6c0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data
@@ -0,0 +1 @@
+ A -10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data
new file mode 100644
index 0000000000..de18d40ee8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data
@@ -0,0 +1 @@
+ A -255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data
new file mode 100644
index 0000000000..f4aefab396
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data
@@ -0,0 +1 @@
+ A -512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data
new file mode 100644
index 0000000000..f171cb6c0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data
@@ -0,0 +1 @@
+ A -10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data
new file mode 100644
index 0000000000..de18d40ee8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data
@@ -0,0 +1 @@
+ A -255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data
new file mode 100644
index 0000000000..f4aefab396
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data
@@ -0,0 +1 @@
+ A -512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..775ae0f25b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..ee113d1cf3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..1e07040ef4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..cc7ab7dff8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..450072bc4e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.data
new file mode 100644
index 0000000000..73f5f259f8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.data
new file mode 100644
index 0000000000..9805422dfb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.data
new file mode 100644
index 0000000000..77f557a494
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.data
new file mode 100644
index 0000000000..8dd6a4b38e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..9a9a22daef
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data
new file mode 100644
index 0000000000..c52b277d9c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data
new file mode 100644
index 0000000000..18c3344c26
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data
new file mode 100644
index 0000000000..5193701ae3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data
new file mode 100644
index 0000000000..fab38d24ef
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..f5a0d874d4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.data
new file mode 100644
index 0000000000..95742ec8f2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.data
new file mode 100644
index 0000000000..ebb14b2fbd
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.data
new file mode 100644
index 0000000000..a9e1432ca9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.data
new file mode 100644
index 0000000000..b7e6743c28
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data
new file mode 100644
index 0000000000..f171cb6c0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data
@@ -0,0 +1 @@
+ A -10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data
new file mode 100644
index 0000000000..de18d40ee8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data
@@ -0,0 +1 @@
+ A -255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data
new file mode 100644
index 0000000000..f4aefab396
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data
@@ -0,0 +1 @@
+ A -512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.data
new file mode 100644
index 0000000000..f5a0d874d4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.data
new file mode 100644
index 0000000000..95742ec8f2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.data
new file mode 100644
index 0000000000..ebb14b2fbd
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.data
new file mode 100644
index 0000000000..a9e1432ca9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.data
new file mode 100644
index 0000000000..b7e6743c28
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data
new file mode 100644
index 0000000000..f667f77c45
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A 65535 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data
new file mode 100644
index 0000000000..f171cb6c0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data
@@ -0,0 +1 @@
+ A -10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data
new file mode 100644
index 0000000000..de18d40ee8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data
@@ -0,0 +1 @@
+ A -255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data
new file mode 100644
index 0000000000..cab2ee4938
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data
@@ -0,0 +1 @@
+ A -65534 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data
new file mode 100644
index 0000000000..f667f77c45
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data
@@ -0,0 +1 @@
+ A 65535 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data
new file mode 100644
index 0000000000..f171cb6c0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data
@@ -0,0 +1 @@
+ A -10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data
new file mode 100644
index 0000000000..de18d40ee8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data
@@ -0,0 +1 @@
+ A -255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data
new file mode 100644
index 0000000000..cab2ee4938
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data
@@ -0,0 +1 @@
+ A -65534 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..775ae0f25b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..ee113d1cf3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..1e07040ef4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..cc7ab7dff8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..beea1c3663
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.data
new file mode 100644
index 0000000000..73f5f259f8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.data
new file mode 100644
index 0000000000..9805422dfb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.data
new file mode 100644
index 0000000000..77f557a494
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.data
new file mode 100644
index 0000000000..be6f22a5ea
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..e50e2d02a9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data
new file mode 100644
index 0000000000..c52b277d9c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data
new file mode 100644
index 0000000000..18c3344c26
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data
new file mode 100644
index 0000000000..5193701ae3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data
new file mode 100644
index 0000000000..5a9cb07f57
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..e20c76a82c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.data
new file mode 100644
index 0000000000..95742ec8f2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.data
new file mode 100644
index 0000000000..ebb14b2fbd
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.data
new file mode 100644
index 0000000000..a9e1432ca9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.data
new file mode 100644
index 0000000000..f8ec5bc443
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..f667f77c45
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A 65535 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data
new file mode 100644
index 0000000000..f171cb6c0c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data
@@ -0,0 +1 @@
+ A -10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data
new file mode 100644
index 0000000000..de18d40ee8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data
@@ -0,0 +1 @@
+ A -255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data
new file mode 100644
index 0000000000..cab2ee4938
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data
@@ -0,0 +1 @@
+ A -65534 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.data
new file mode 100644
index 0000000000..e20c76a82c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.data
new file mode 100644
index 0000000000..95742ec8f2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.data
new file mode 100644
index 0000000000..ebb14b2fbd
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.data
new file mode 100644
index 0000000000..a9e1432ca9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.data
new file mode 100644
index 0000000000..f8ec5bc443
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data
new file mode 100644
index 0000000000..02b7f3ab7b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A -254 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data
new file mode 100644
index 0000000000..02b7f3ab7b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data
@@ -0,0 +1 @@
+ A -254 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..775ae0f25b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..73f5f259f8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..ee113d1cf3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..cc7ab7dff8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..584b17ea18
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..c52b277d9c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..b951b56531
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..95742ec8f2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..80d3ca2ef1
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..ef70e7dc3a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A -1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..02b7f3ab7b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A -254 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.data
new file mode 100644
index 0000000000..95742ec8f2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.data
new file mode 100644
index 0000000000..80d3ca2ef1
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..775ae0f25b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..ee113d1cf3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..1e07040ef4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..cc7ab7dff8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..450072bc4e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..9a9a22daef
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..f5a0d874d4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.data
new file mode 100644
index 0000000000..f5a0d874d4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data
new file mode 100644
index 0000000000..f667f77c45
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A 65535 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data
new file mode 100644
index 0000000000..f667f77c45
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data
@@ -0,0 +1 @@
+ A 65535 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..775ae0f25b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..ee113d1cf3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..1e07040ef4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..cc7ab7dff8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..beea1c3663
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..e50e2d02a9
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..e20c76a82c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..f667f77c45
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A 65535 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.data
new file mode 100644
index 0000000000..e20c76a82c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.data
new file mode 100644
index 0000000000..775ae0f25b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.data
new file mode 100644
index 0000000000..ee113d1cf3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.data
new file mode 100644
index 0000000000..1e07040ef4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.data
new file mode 100644
index 0000000000..cc7ab7dff8
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.data
new file mode 100644
index 0000000000..450072bc4e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data
new file mode 100644
index 0000000000..2262f5ecdb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data
new file mode 100644
index 0000000000..d7a098948e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data
new file mode 100644
index 0000000000..e333a695b7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data
new file mode 100644
index 0000000000..18bb47b042
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data
new file mode 100644
index 0000000000..9a9a22daef
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.data
new file mode 100644
index 0000000000..f5a0d874d4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data
new file mode 100644
index 0000000000..35282318cb
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data
@@ -0,0 +1 @@
+ A 0 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data
new file mode 100644
index 0000000000..30c3a50213
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data
@@ -0,0 +1 @@
+ A 1 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data
new file mode 100644
index 0000000000..9d64c07ef2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data
@@ -0,0 +1 @@
+ A 10 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data
new file mode 100644
index 0000000000..6b37eb602b
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data
@@ -0,0 +1 @@
+ A 255 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data
new file mode 100644
index 0000000000..c0e22423bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data
@@ -0,0 +1 @@
+ A 512 B \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.data
new file mode 100644
index 0000000000..379e87b914
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.data
new file mode 100644
index 0000000000..2785156fb3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.data
new file mode 100644
index 0000000000..6dc818abc3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.data
new file mode 100644
index 0000000000..d41a1f75d3
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.data
new file mode 100644
index 0000000000..f5a0d874d4
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.data
Binary files differ
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource0.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource0.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource1.data
new file mode 100644
index 0000000000..0f13712411
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource1.data
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource10.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource10.data
new file mode 100644
index 0000000000..597f94465c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource10.data
@@ -0,0 +1 @@
+I-am-a-string \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource11.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource11.data
new file mode 100644
index 0000000000..597f94465c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource11.data
@@ -0,0 +1 @@
+I-am-a-string \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource12.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource12.data
new file mode 100644
index 0000000000..597f94465c
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource12.data
@@ -0,0 +1 @@
+I-am-a-string \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource2.data
new file mode 100644
index 0000000000..bd41cba781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource2.data
@@ -0,0 +1 @@
+12345 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource20.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource20.data
new file mode 100644
index 0000000000..b9e3a5a7c7
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource20.data
@@ -0,0 +1 @@
+フ \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource21.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource21.data
new file mode 100644
index 0000000000..7014dc882f
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource21.data
@@ -0,0 +1 @@
+賿 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource3.data
new file mode 100644
index 0000000000..bd41cba781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource3.data
@@ -0,0 +1 @@
+12345 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource4.data
new file mode 100644
index 0000000000..bd41cba781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource4.data
@@ -0,0 +1 @@
+12345 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource5.data
new file mode 100644
index 0000000000..bd41cba781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource5.data
@@ -0,0 +1 @@
+12345 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource6.data
new file mode 100644
index 0000000000..bd41cba781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource6.data
@@ -0,0 +1 @@
+12345 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource7.data
new file mode 100644
index 0000000000..bd41cba781
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource7.data
@@ -0,0 +1 @@
+12345 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource8.data
new file mode 100644
index 0000000000..4f3af7006e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource8.data
@@ -0,0 +1 @@
+3.1415 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource9.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource9.data
new file mode 100644
index 0000000000..4f3af7006e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource9.data
@@ -0,0 +1 @@
+3.1415 \ No newline at end of file
diff --git a/tests/auto/corelib/io/qtextstream/rfc3261.txt b/tests/auto/corelib/io/qtextstream/rfc3261.txt
new file mode 100644
index 0000000000..4cf4df93bc
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/rfc3261.txt
@@ -0,0 +1,15067 @@
+
+
+
+
+
+
+Network Working Group J. Rosenberg
+Request for Comments: 3261 dynamicsoft
+Obsoletes: 2543 H. Schulzrinne
+Category: Standards Track Columbia U.
+ G. Camarillo
+ Ericsson
+ A. Johnston
+ WorldCom
+ J. Peterson
+ Neustar
+ R. Sparks
+ dynamicsoft
+ M. Handley
+ ICIR
+ E. Schooler
+ AT&T
+ June 2002
+
+ SIP: Session Initiation Protocol
+
+Status of this Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2002). All Rights Reserved.
+
+Abstract
+
+ This document describes Session Initiation Protocol (SIP), an
+ application-layer control (signaling) protocol for creating,
+ modifying, and terminating sessions with one or more participants.
+ These sessions include Internet telephone calls, multimedia
+ distribution, and multimedia conferences.
+
+ SIP invitations used to create sessions carry session descriptions
+ that allow participants to agree on a set of compatible media types.
+ SIP makes use of elements called proxy servers to help route requests
+ to the user's current location, authenticate and authorize users for
+ services, implement provider call-routing policies, and provide
+ features to users. SIP also provides a registration function that
+ allows users to upload their current locations for use by proxy
+ servers. SIP runs on top of several different transport protocols.
+
+
+
+Rosenberg, et. al. Standards Track [Page 1]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+Table of Contents
+
+ 1 Introduction ........................................ 8
+ 2 Overview of SIP Functionality ....................... 9
+ 3 Terminology ......................................... 10
+ 4 Overview of Operation ............................... 10
+ 5 Structure of the Protocol ........................... 18
+ 6 Definitions ......................................... 20
+ 7 SIP Messages ........................................ 26
+ 7.1 Requests ............................................ 27
+ 7.2 Responses ........................................... 28
+ 7.3 Header Fields ....................................... 29
+ 7.3.1 Header Field Format ................................. 30
+ 7.3.2 Header Field Classification ......................... 32
+ 7.3.3 Compact Form ........................................ 32
+ 7.4 Bodies .............................................. 33
+ 7.4.1 Message Body Type ................................... 33
+ 7.4.2 Message Body Length ................................. 33
+ 7.5 Framing SIP Messages ................................ 34
+ 8 General User Agent Behavior ......................... 34
+ 8.1 UAC Behavior ........................................ 35
+ 8.1.1 Generating the Request .............................. 35
+ 8.1.1.1 Request-URI ......................................... 35
+ 8.1.1.2 To .................................................. 36
+ 8.1.1.3 From ................................................ 37
+ 8.1.1.4 Call-ID ............................................. 37
+ 8.1.1.5 CSeq ................................................ 38
+ 8.1.1.6 Max-Forwards ........................................ 38
+ 8.1.1.7 Via ................................................. 39
+ 8.1.1.8 Contact ............................................. 40
+ 8.1.1.9 Supported and Require ............................... 40
+ 8.1.1.10 Additional Message Components ....................... 41
+ 8.1.2 Sending the Request ................................. 41
+ 8.1.3 Processing Responses ................................ 42
+ 8.1.3.1 Transaction Layer Errors ............................ 42
+ 8.1.3.2 Unrecognized Responses .............................. 42
+ 8.1.3.3 Vias ................................................ 43
+ 8.1.3.4 Processing 3xx Responses ............................ 43
+ 8.1.3.5 Processing 4xx Responses ............................ 45
+ 8.2 UAS Behavior ........................................ 46
+ 8.2.1 Method Inspection ................................... 46
+ 8.2.2 Header Inspection ................................... 46
+ 8.2.2.1 To and Request-URI .................................. 46
+ 8.2.2.2 Merged Requests ..................................... 47
+ 8.2.2.3 Require ............................................. 47
+ 8.2.3 Content Processing .................................. 48
+ 8.2.4 Applying Extensions ................................. 49
+ 8.2.5 Processing the Request .............................. 49
+
+
+
+Rosenberg, et. al. Standards Track [Page 2]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ 8.2.6 Generating the Response ............................. 49
+ 8.2.6.1 Sending a Provisional Response ...................... 49
+ 8.2.6.2 Headers and Tags .................................... 50
+ 8.2.7 Stateless UAS Behavior .............................. 50
+ 8.3 Redirect Servers .................................... 51
+ 9 Canceling a Request ................................. 53
+ 9.1 Client Behavior ..................................... 53
+ 9.2 Server Behavior ..................................... 55
+ 10 Registrations ....................................... 56
+ 10.1 Overview ............................................ 56
+ 10.2 Constructing the REGISTER Request ................... 57
+ 10.2.1 Adding Bindings ..................................... 59
+ 10.2.1.1 Setting the Expiration Interval of Contact Addresses 60
+ 10.2.1.2 Preferences among Contact Addresses ................. 61
+ 10.2.2 Removing Bindings ................................... 61
+ 10.2.3 Fetching Bindings ................................... 61
+ 10.2.4 Refreshing Bindings ................................. 61
+ 10.2.5 Setting the Internal Clock .......................... 62
+ 10.2.6 Discovering a Registrar ............................. 62
+ 10.2.7 Transmitting a Request .............................. 62
+ 10.2.8 Error Responses ..................................... 63
+ 10.3 Processing REGISTER Requests ........................ 63
+ 11 Querying for Capabilities ........................... 66
+ 11.1 Construction of OPTIONS Request ..................... 67
+ 11.2 Processing of OPTIONS Request ....................... 68
+ 12 Dialogs ............................................. 69
+ 12.1 Creation of a Dialog ................................ 70
+ 12.1.1 UAS behavior ........................................ 70
+ 12.1.2 UAC Behavior ........................................ 71
+ 12.2 Requests within a Dialog ............................ 72
+ 12.2.1 UAC Behavior ........................................ 73
+ 12.2.1.1 Generating the Request .............................. 73
+ 12.2.1.2 Processing the Responses ............................ 75
+ 12.2.2 UAS Behavior ........................................ 76
+ 12.3 Termination of a Dialog ............................. 77
+ 13 Initiating a Session ................................ 77
+ 13.1 Overview ............................................ 77
+ 13.2 UAC Processing ...................................... 78
+ 13.2.1 Creating the Initial INVITE ......................... 78
+ 13.2.2 Processing INVITE Responses ......................... 81
+ 13.2.2.1 1xx Responses ....................................... 81
+ 13.2.2.2 3xx Responses ....................................... 81
+ 13.2.2.3 4xx, 5xx and 6xx Responses .......................... 81
+ 13.2.2.4 2xx Responses ....................................... 82
+ 13.3 UAS Processing ...................................... 83
+ 13.3.1 Processing of the INVITE ............................ 83
+ 13.3.1.1 Progress ............................................ 84
+ 13.3.1.2 The INVITE is Redirected ............................ 84
+
+
+
+Rosenberg, et. al. Standards Track [Page 3]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ 13.3.1.3 The INVITE is Rejected .............................. 85
+ 13.3.1.4 The INVITE is Accepted .............................. 85
+ 14 Modifying an Existing Session ....................... 86
+ 14.1 UAC Behavior ........................................ 86
+ 14.2 UAS Behavior ........................................ 88
+ 15 Terminating a Session ............................... 89
+ 15.1 Terminating a Session with a BYE Request ............ 90
+ 15.1.1 UAC Behavior ........................................ 90
+ 15.1.2 UAS Behavior ........................................ 91
+ 16 Proxy Behavior ...................................... 91
+ 16.1 Overview ............................................ 91
+ 16.2 Stateful Proxy ...................................... 92
+ 16.3 Request Validation .................................. 94
+ 16.4 Route Information Preprocessing ..................... 96
+ 16.5 Determining Request Targets ......................... 97
+ 16.6 Request Forwarding .................................. 99
+ 16.7 Response Processing ................................. 107
+ 16.8 Processing Timer C .................................. 114
+ 16.9 Handling Transport Errors ........................... 115
+ 16.10 CANCEL Processing ................................... 115
+ 16.11 Stateless Proxy ..................................... 116
+ 16.12 Summary of Proxy Route Processing ................... 118
+ 16.12.1 Examples ............................................ 118
+ 16.12.1.1 Basic SIP Trapezoid ................................. 118
+ 16.12.1.2 Traversing a Strict-Routing Proxy ................... 120
+ 16.12.1.3 Rewriting Record-Route Header Field Values .......... 121
+ 17 Transactions ........................................ 122
+ 17.1 Client Transaction .................................. 124
+ 17.1.1 INVITE Client Transaction ........................... 125
+ 17.1.1.1 Overview of INVITE Transaction ...................... 125
+ 17.1.1.2 Formal Description .................................. 125
+ 17.1.1.3 Construction of the ACK Request ..................... 129
+ 17.1.2 Non-INVITE Client Transaction ....................... 130
+ 17.1.2.1 Overview of the non-INVITE Transaction .............. 130
+ 17.1.2.2 Formal Description .................................. 131
+ 17.1.3 Matching Responses to Client Transactions ........... 132
+ 17.1.4 Handling Transport Errors ........................... 133
+ 17.2 Server Transaction .................................. 134
+ 17.2.1 INVITE Server Transaction ........................... 134
+ 17.2.2 Non-INVITE Server Transaction ....................... 137
+ 17.2.3 Matching Requests to Server Transactions ............ 138
+ 17.2.4 Handling Transport Errors ........................... 141
+ 18 Transport ........................................... 141
+ 18.1 Clients ............................................. 142
+ 18.1.1 Sending Requests .................................... 142
+ 18.1.2 Receiving Responses ................................. 144
+ 18.2 Servers ............................................. 145
+ 18.2.1 Receiving Requests .................................. 145
+
+
+
+Rosenberg, et. al. Standards Track [Page 4]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ 18.2.2 Sending Responses ................................... 146
+ 18.3 Framing ............................................. 147
+ 18.4 Error Handling ...................................... 147
+ 19 Common Message Components ........................... 147
+ 19.1 SIP and SIPS Uniform Resource Indicators ............ 148
+ 19.1.1 SIP and SIPS URI Components ......................... 148
+ 19.1.2 Character Escaping Requirements ..................... 152
+ 19.1.3 Example SIP and SIPS URIs ........................... 153
+ 19.1.4 URI Comparison ...................................... 153
+ 19.1.5 Forming Requests from a URI ......................... 156
+ 19.1.6 Relating SIP URIs and tel URLs ...................... 157
+ 19.2 Option Tags ......................................... 158
+ 19.3 Tags ................................................ 159
+ 20 Header Fields ....................................... 159
+ 20.1 Accept .............................................. 161
+ 20.2 Accept-Encoding ..................................... 163
+ 20.3 Accept-Language ..................................... 164
+ 20.4 Alert-Info .......................................... 164
+ 20.5 Allow ............................................... 165
+ 20.6 Authentication-Info ................................. 165
+ 20.7 Authorization ....................................... 165
+ 20.8 Call-ID ............................................. 166
+ 20.9 Call-Info ........................................... 166
+ 20.10 Contact ............................................. 167
+ 20.11 Content-Disposition ................................. 168
+ 20.12 Content-Encoding .................................... 169
+ 20.13 Content-Language .................................... 169
+ 20.14 Content-Length ...................................... 169
+ 20.15 Content-Type ........................................ 170
+ 20.16 CSeq ................................................ 170
+ 20.17 Date ................................................ 170
+ 20.18 Error-Info .......................................... 171
+ 20.19 Expires ............................................. 171
+ 20.20 From ................................................ 172
+ 20.21 In-Reply-To ......................................... 172
+ 20.22 Max-Forwards ........................................ 173
+ 20.23 Min-Expires ......................................... 173
+ 20.24 MIME-Version ........................................ 173
+ 20.25 Organization ........................................ 174
+ 20.26 Priority ............................................ 174
+ 20.27 Proxy-Authenticate .................................. 174
+ 20.28 Proxy-Authorization ................................. 175
+ 20.29 Proxy-Require ....................................... 175
+ 20.30 Record-Route ........................................ 175
+ 20.31 Reply-To ............................................ 176
+ 20.32 Require ............................................. 176
+ 20.33 Retry-After ......................................... 176
+ 20.34 Route ............................................... 177
+
+
+
+Rosenberg, et. al. Standards Track [Page 5]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ 20.35 Server .............................................. 177
+ 20.36 Subject ............................................. 177
+ 20.37 Supported ........................................... 178
+ 20.38 Timestamp ........................................... 178
+ 20.39 To .................................................. 178
+ 20.40 Unsupported ......................................... 179
+ 20.41 User-Agent .......................................... 179
+ 20.42 Via ................................................. 179
+ 20.43 Warning ............................................. 180
+ 20.44 WWW-Authenticate .................................... 182
+ 21 Response Codes ...................................... 182
+ 21.1 Provisional 1xx ..................................... 182
+ 21.1.1 100 Trying .......................................... 183
+ 21.1.2 180 Ringing ......................................... 183
+ 21.1.3 181 Call Is Being Forwarded ......................... 183
+ 21.1.4 182 Queued .......................................... 183
+ 21.1.5 183 Session Progress ................................ 183
+ 21.2 Successful 2xx ...................................... 183
+ 21.2.1 200 OK .............................................. 183
+ 21.3 Redirection 3xx ..................................... 184
+ 21.3.1 300 Multiple Choices ................................ 184
+ 21.3.2 301 Moved Permanently ............................... 184
+ 21.3.3 302 Moved Temporarily ............................... 184
+ 21.3.4 305 Use Proxy ....................................... 185
+ 21.3.5 380 Alternative Service ............................. 185
+ 21.4 Request Failure 4xx ................................. 185
+ 21.4.1 400 Bad Request ..................................... 185
+ 21.4.2 401 Unauthorized .................................... 185
+ 21.4.3 402 Payment Required ................................ 186
+ 21.4.4 403 Forbidden ....................................... 186
+ 21.4.5 404 Not Found ....................................... 186
+ 21.4.6 405 Method Not Allowed .............................. 186
+ 21.4.7 406 Not Acceptable .................................. 186
+ 21.4.8 407 Proxy Authentication Required ................... 186
+ 21.4.9 408 Request Timeout ................................. 186
+ 21.4.10 410 Gone ............................................ 187
+ 21.4.11 413 Request Entity Too Large ........................ 187
+ 21.4.12 414 Request-URI Too Long ............................ 187
+ 21.4.13 415 Unsupported Media Type .......................... 187
+ 21.4.14 416 Unsupported URI Scheme .......................... 187
+ 21.4.15 420 Bad Extension ................................... 187
+ 21.4.16 421 Extension Required .............................. 188
+ 21.4.17 423 Interval Too Brief .............................. 188
+ 21.4.18 480 Temporarily Unavailable ......................... 188
+ 21.4.19 481 Call/Transaction Does Not Exist ................. 188
+ 21.4.20 482 Loop Detected ................................... 188
+ 21.4.21 483 Too Many Hops ................................... 189
+ 21.4.22 484 Address Incomplete .............................. 189
+
+
+
+Rosenberg, et. al. Standards Track [Page 6]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ 21.4.23 485 Ambiguous ....................................... 189
+ 21.4.24 486 Busy Here ....................................... 189
+ 21.4.25 487 Request Terminated .............................. 190
+ 21.4.26 488 Not Acceptable Here ............................. 190
+ 21.4.27 491 Request Pending ................................. 190
+ 21.4.28 493 Undecipherable .................................. 190
+ 21.5 Server Failure 5xx .................................. 190
+ 21.5.1 500 Server Internal Error ........................... 190
+ 21.5.2 501 Not Implemented ................................. 191
+ 21.5.3 502 Bad Gateway ..................................... 191
+ 21.5.4 503 Service Unavailable ............................. 191
+ 21.5.5 504 Server Time-out ................................. 191
+ 21.5.6 505 Version Not Supported ........................... 192
+ 21.5.7 513 Message Too Large ............................... 192
+ 21.6 Global Failures 6xx ................................. 192
+ 21.6.1 600 Busy Everywhere ................................. 192
+ 21.6.2 603 Decline ......................................... 192
+ 21.6.3 604 Does Not Exist Anywhere ......................... 192
+ 21.6.4 606 Not Acceptable .................................. 192
+ 22 Usage of HTTP Authentication ........................ 193
+ 22.1 Framework ........................................... 193
+ 22.2 User-to-User Authentication ......................... 195
+ 22.3 Proxy-to-User Authentication ........................ 197
+ 22.4 The Digest Authentication Scheme .................... 199
+ 23 S/MIME .............................................. 201
+ 23.1 S/MIME Certificates ................................. 201
+ 23.2 S/MIME Key Exchange ................................. 202
+ 23.3 Securing MIME bodies ................................ 205
+ 23.4 SIP Header Privacy and Integrity using S/MIME:
+ Tunneling SIP ....................................... 207
+ 23.4.1 Integrity and Confidentiality Properties of SIP
+ Headers ............................................. 207
+ 23.4.1.1 Integrity ........................................... 207
+ 23.4.1.2 Confidentiality ..................................... 208
+ 23.4.2 Tunneling Integrity and Authentication .............. 209
+ 23.4.3 Tunneling Encryption ................................ 211
+ 24 Examples ............................................ 213
+ 24.1 Registration ........................................ 213
+ 24.2 Session Setup ....................................... 214
+ 25 Augmented BNF for the SIP Protocol .................. 219
+ 25.1 Basic Rules ......................................... 219
+ 26 Security Considerations: Threat Model and Security
+ Usage Recommendations ............................... 232
+ 26.1 Attacks and Threat Models ........................... 233
+ 26.1.1 Registration Hijacking .............................. 233
+ 26.1.2 Impersonating a Server .............................. 234
+ 26.1.3 Tampering with Message Bodies ....................... 235
+ 26.1.4 Tearing Down Sessions ............................... 235
+
+
+
+Rosenberg, et. al. Standards Track [Page 7]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ 26.1.5 Denial of Service and Amplification ................. 236
+ 26.2 Security Mechanisms ................................. 237
+ 26.2.1 Transport and Network Layer Security ................ 238
+ 26.2.2 SIPS URI Scheme ..................................... 239
+ 26.2.3 HTTP Authentication ................................. 240
+ 26.2.4 S/MIME .............................................. 240
+ 26.3 Implementing Security Mechanisms .................... 241
+ 26.3.1 Requirements for Implementers of SIP ................ 241
+ 26.3.2 Security Solutions .................................. 242
+ 26.3.2.1 Registration ........................................ 242
+ 26.3.2.2 Interdomain Requests ................................ 243
+ 26.3.2.3 Peer-to-Peer Requests ............................... 245
+ 26.3.2.4 DoS Protection ...................................... 246
+ 26.4 Limitations ......................................... 247
+ 26.4.1 HTTP Digest ......................................... 247
+ 26.4.2 S/MIME .............................................. 248
+ 26.4.3 TLS ................................................. 249
+ 26.4.4 SIPS URIs ........................................... 249
+ 26.5 Privacy ............................................. 251
+ 27 IANA Considerations ................................. 252
+ 27.1 Option Tags ......................................... 252
+ 27.2 Warn-Codes .......................................... 252
+ 27.3 Header Field Names .................................. 253
+ 27.4 Method and Response Codes ........................... 253
+ 27.5 The "message/sip" MIME type. ....................... 254
+ 27.6 New Content-Disposition Parameter Registrations ..... 255
+ 28 Changes From RFC 2543 ............................... 255
+ 28.1 Major Functional Changes ............................ 255
+ 28.2 Minor Functional Changes ............................ 260
+ 29 Normative References ................................ 261
+ 30 Informative References .............................. 262
+ A Table of Timer Values ............................... 265
+ Acknowledgments ................................................ 266
+ Authors' Addresses ............................................. 267
+ Full Copyright Statement ....................................... 269
+
+1 Introduction
+
+ There are many applications of the Internet that require the creation
+ and management of a session, where a session is considered an
+ exchange of data between an association of participants. The
+ implementation of these applications is complicated by the practices
+ of participants: users may move between endpoints, they may be
+ addressable by multiple names, and they may communicate in several
+ different media - sometimes simultaneously. Numerous protocols have
+ been authored that carry various forms of real-time multimedia
+ session data such as voice, video, or text messages. The Session
+ Initiation Protocol (SIP) works in concert with these protocols by
+
+
+
+Rosenberg, et. al. Standards Track [Page 8]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ enabling Internet endpoints (called user agents) to discover one
+ another and to agree on a characterization of a session they would
+ like to share. For locating prospective session participants, and
+ for other functions, SIP enables the creation of an infrastructure of
+ network hosts (called proxy servers) to which user agents can send
+ registrations, invitations to sessions, and other requests. SIP is
+ an agile, general-purpose tool for creating, modifying, and
+ terminating sessions that works independently of underlying transport
+ protocols and without dependency on the type of session that is being
+ established.
+
+2 Overview of SIP Functionality
+
+ SIP is an application-layer control protocol that can establish,
+ modify, and terminate multimedia sessions (conferences) such as
+ Internet telephony calls. SIP can also invite participants to
+ already existing sessions, such as multicast conferences. Media can
+ be added to (and removed from) an existing session. SIP
+ transparently supports name mapping and redirection services, which
+ supports personal mobility [27] - users can maintain a single
+ externally visible identifier regardless of their network location.
+
+ SIP supports five facets of establishing and terminating multimedia
+ communications:
+
+ User location: determination of the end system to be used for
+ communication;
+
+ User availability: determination of the willingness of the called
+ party to engage in communications;
+
+ User capabilities: determination of the media and media parameters
+ to be used;
+
+ Session setup: "ringing", establishment of session parameters at
+ both called and calling party;
+
+ Session management: including transfer and termination of
+ sessions, modifying session parameters, and invoking
+ services.
+
+ SIP is not a vertically integrated communications system. SIP is
+ rather a component that can be used with other IETF protocols to
+ build a complete multimedia architecture. Typically, these
+ architectures will include protocols such as the Real-time Transport
+ Protocol (RTP) (RFC 1889 [28]) for transporting real-time data and
+ providing QoS feedback, the Real-Time streaming protocol (RTSP) (RFC
+ 2326 [29]) for controlling delivery of streaming media, the Media
+
+
+
+Rosenberg, et. al. Standards Track [Page 9]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Gateway Control Protocol (MEGACO) (RFC 3015 [30]) for controlling
+ gateways to the Public Switched Telephone Network (PSTN), and the
+ Session Description Protocol (SDP) (RFC 2327 [1]) for describing
+ multimedia sessions. Therefore, SIP should be used in conjunction
+ with other protocols in order to provide complete services to the
+ users. However, the basic functionality and operation of SIP does
+ not depend on any of these protocols.
+
+ SIP does not provide services. Rather, SIP provides primitives that
+ can be used to implement different services. For example, SIP can
+ locate a user and deliver an opaque object to his current location.
+ If this primitive is used to deliver a session description written in
+ SDP, for instance, the endpoints can agree on the parameters of a
+ session. If the same primitive is used to deliver a photo of the
+ caller as well as the session description, a "caller ID" service can
+ be easily implemented. As this example shows, a single primitive is
+ typically used to provide several different services.
+
+ SIP does not offer conference control services such as floor control
+ or voting and does not prescribe how a conference is to be managed.
+ SIP can be used to initiate a session that uses some other conference
+ control protocol. Since SIP messages and the sessions they establish
+ can pass through entirely different networks, SIP cannot, and does
+ not, provide any kind of network resource reservation capabilities.
+
+ The nature of the services provided make security particularly
+ important. To that end, SIP provides a suite of security services,
+ which include denial-of-service prevention, authentication (both user
+ to user and proxy to user), integrity protection, and encryption and
+ privacy services.
+
+ SIP works with both IPv4 and IPv6.
+
+3 Terminology
+
+ In this document, the key words "MUST", "MUST NOT", "REQUIRED",
+ "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
+ RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as
+ described in BCP 14, RFC 2119 [2] and indicate requirement levels for
+ compliant SIP implementations.
+
+4 Overview of Operation
+
+ This section introduces the basic operations of SIP using simple
+ examples. This section is tutorial in nature and does not contain
+ any normative statements.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 10]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The first example shows the basic functions of SIP: location of an
+ end point, signal of a desire to communicate, negotiation of session
+ parameters to establish the session, and teardown of the session once
+ established.
+
+ Figure 1 shows a typical example of a SIP message exchange between
+ two users, Alice and Bob. (Each message is labeled with the letter
+ "F" and a number for reference by the text.) In this example, Alice
+ uses a SIP application on her PC (referred to as a softphone) to call
+ Bob on his SIP phone over the Internet. Also shown are two SIP proxy
+ servers that act on behalf of Alice and Bob to facilitate the session
+ establishment. This typical arrangement is often referred to as the
+ "SIP trapezoid" as shown by the geometric shape of the dotted lines
+ in Figure 1.
+
+ Alice "calls" Bob using his SIP identity, a type of Uniform Resource
+ Identifier (URI) called a SIP URI. SIP URIs are defined in Section
+ 19.1. It has a similar form to an email address, typically
+ containing a username and a host name. In this case, it is
+ sip:bob@biloxi.com, where biloxi.com is the domain of Bob's SIP
+ service provider. Alice has a SIP URI of sip:alice@atlanta.com.
+ Alice might have typed in Bob's URI or perhaps clicked on a hyperlink
+ or an entry in an address book. SIP also provides a secure URI,
+ called a SIPS URI. An example would be sips:bob@biloxi.com. A call
+ made to a SIPS URI guarantees that secure, encrypted transport
+ (namely TLS) is used to carry all SIP messages from the caller to the
+ domain of the callee. From there, the request is sent securely to
+ the callee, but with security mechanisms that depend on the policy of
+ the domain of the callee.
+
+ SIP is based on an HTTP-like request/response transaction model.
+ Each transaction consists of a request that invokes a particular
+ method, or function, on the server and at least one response. In
+ this example, the transaction begins with Alice's softphone sending
+ an INVITE request addressed to Bob's SIP URI. INVITE is an example
+ of a SIP method that specifies the action that the requestor (Alice)
+ wants the server (Bob) to take. The INVITE request contains a number
+ of header fields. Header fields are named attributes that provide
+ additional information about a message. The ones present in an
+ INVITE include a unique identifier for the call, the destination
+ address, Alice's address, and information about the type of session
+ that Alice wishes to establish with Bob. The INVITE (message F1 in
+ Figure 1) might look like this:
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 11]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ atlanta.com . . . biloxi.com
+ . proxy proxy .
+ . .
+ Alice's . . . . . . . . . . . . . . . . . . . . Bob's
+ softphone SIP Phone
+ | | | |
+ | INVITE F1 | | |
+ |--------------->| INVITE F2 | |
+ | 100 Trying F3 |--------------->| INVITE F4 |
+ |<---------------| 100 Trying F5 |--------------->|
+ | |<-------------- | 180 Ringing F6 |
+ | | 180 Ringing F7 |<---------------|
+ | 180 Ringing F8 |<---------------| 200 OK F9 |
+ |<---------------| 200 OK F10 |<---------------|
+ | 200 OK F11 |<---------------| |
+ |<---------------| | |
+ | ACK F12 |
+ |------------------------------------------------->|
+ | Media Session |
+ |<================================================>|
+ | BYE F13 |
+ |<-------------------------------------------------|
+ | 200 OK F14 |
+ |------------------------------------------------->|
+ | |
+
+ Figure 1: SIP session setup example with SIP trapezoid
+
+ INVITE sip:bob@biloxi.com SIP/2.0
+ Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds
+ Max-Forwards: 70
+ To: Bob <sip:bob@biloxi.com>
+ From: Alice <sip:alice@atlanta.com>;tag=1928301774
+ Call-ID: a84b4c76e66710@pc33.atlanta.com
+ CSeq: 314159 INVITE
+ Contact: <sip:alice@pc33.atlanta.com>
+ Content-Type: application/sdp
+ Content-Length: 142
+
+ (Alice's SDP not shown)
+
+ The first line of the text-encoded message contains the method name
+ (INVITE). The lines that follow are a list of header fields. This
+ example contains a minimum required set. The header fields are
+ briefly described below:
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 12]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Via contains the address (pc33.atlanta.com) at which Alice is
+ expecting to receive responses to this request. It also contains a
+ branch parameter that identifies this transaction.
+
+ To contains a display name (Bob) and a SIP or SIPS URI
+ (sip:bob@biloxi.com) towards which the request was originally
+ directed. Display names are described in RFC 2822 [3].
+
+ From also contains a display name (Alice) and a SIP or SIPS URI
+ (sip:alice@atlanta.com) that indicate the originator of the request.
+ This header field also has a tag parameter containing a random string
+ (1928301774) that was added to the URI by the softphone. It is used
+ for identification purposes.
+
+ Call-ID contains a globally unique identifier for this call,
+ generated by the combination of a random string and the softphone's
+ host name or IP address. The combination of the To tag, From tag,
+ and Call-ID completely defines a peer-to-peer SIP relationship
+ between Alice and Bob and is referred to as a dialog.
+
+ CSeq or Command Sequence contains an integer and a method name. The
+ CSeq number is incremented for each new request within a dialog and
+ is a traditional sequence number.
+
+ Contact contains a SIP or SIPS URI that represents a direct route to
+ contact Alice, usually composed of a username at a fully qualified
+ domain name (FQDN). While an FQDN is preferred, many end systems do
+ not have registered domain names, so IP addresses are permitted.
+ While the Via header field tells other elements where to send the
+ response, the Contact header field tells other elements where to send
+ future requests.
+
+ Max-Forwards serves to limit the number of hops a request can make on
+ the way to its destination. It consists of an integer that is
+ decremented by one at each hop.
+
+ Content-Type contains a description of the message body (not shown).
+
+ Content-Length contains an octet (byte) count of the message body.
+
+ The complete set of SIP header fields is defined in Section 20.
+
+ The details of the session, such as the type of media, codec, or
+ sampling rate, are not described using SIP. Rather, the body of a
+ SIP message contains a description of the session, encoded in some
+ other protocol format. One such format is the Session Description
+ Protocol (SDP) (RFC 2327 [1]). This SDP message (not shown in the
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 13]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ example) is carried by the SIP message in a way that is analogous to
+ a document attachment being carried by an email message, or a web
+ page being carried in an HTTP message.
+
+ Since the softphone does not know the location of Bob or the SIP
+ server in the biloxi.com domain, the softphone sends the INVITE to
+ the SIP server that serves Alice's domain, atlanta.com. The address
+ of the atlanta.com SIP server could have been configured in Alice's
+ softphone, or it could have been discovered by DHCP, for example.
+
+ The atlanta.com SIP server is a type of SIP server known as a proxy
+ server. A proxy server receives SIP requests and forwards them on
+ behalf of the requestor. In this example, the proxy server receives
+ the INVITE request and sends a 100 (Trying) response back to Alice's
+ softphone. The 100 (Trying) response indicates that the INVITE has
+ been received and that the proxy is working on her behalf to route
+ the INVITE to the destination. Responses in SIP use a three-digit
+ code followed by a descriptive phrase. This response contains the
+ same To, From, Call-ID, CSeq and branch parameter in the Via as the
+ INVITE, which allows Alice's softphone to correlate this response to
+ the sent INVITE. The atlanta.com proxy server locates the proxy
+ server at biloxi.com, possibly by performing a particular type of DNS
+ (Domain Name Service) lookup to find the SIP server that serves the
+ biloxi.com domain. This is described in [4]. As a result, it
+ obtains the IP address of the biloxi.com proxy server and forwards,
+ or proxies, the INVITE request there. Before forwarding the request,
+ the atlanta.com proxy server adds an additional Via header field
+ value that contains its own address (the INVITE already contains
+ Alice's address in the first Via). The biloxi.com proxy server
+ receives the INVITE and responds with a 100 (Trying) response back to
+ the atlanta.com proxy server to indicate that it has received the
+ INVITE and is processing the request. The proxy server consults a
+ database, generically called a location service, that contains the
+ current IP address of Bob. (We shall see in the next section how
+ this database can be populated.) The biloxi.com proxy server adds
+ another Via header field value with its own address to the INVITE and
+ proxies it to Bob's SIP phone.
+
+ Bob's SIP phone receives the INVITE and alerts Bob to the incoming
+ call from Alice so that Bob can decide whether to answer the call,
+ that is, Bob's phone rings. Bob's SIP phone indicates this in a 180
+ (Ringing) response, which is routed back through the two proxies in
+ the reverse direction. Each proxy uses the Via header field to
+ determine where to send the response and removes its own address from
+ the top. As a result, although DNS and location service lookups were
+ required to route the initial INVITE, the 180 (Ringing) response can
+ be returned to the caller without lookups or without state being
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 14]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ maintained in the proxies. This also has the desirable property that
+ each proxy that sees the INVITE will also see all responses to the
+ INVITE.
+
+ When Alice's softphone receives the 180 (Ringing) response, it passes
+ this information to Alice, perhaps using an audio ringback tone or by
+ displaying a message on Alice's screen.
+
+ In this example, Bob decides to answer the call. When he picks up
+ the handset, his SIP phone sends a 200 (OK) response to indicate that
+ the call has been answered. The 200 (OK) contains a message body
+ with the SDP media description of the type of session that Bob is
+ willing to establish with Alice. As a result, there is a two-phase
+ exchange of SDP messages: Alice sent one to Bob, and Bob sent one
+ back to Alice. This two-phase exchange provides basic negotiation
+ capabilities and is based on a simple offer/answer model of SDP
+ exchange. If Bob did not wish to answer the call or was busy on
+ another call, an error response would have been sent instead of the
+ 200 (OK), which would have resulted in no media session being
+ established. The complete list of SIP response codes is in Section
+ 21. The 200 (OK) (message F9 in Figure 1) might look like this as
+ Bob sends it out:
+
+ SIP/2.0 200 OK
+ Via: SIP/2.0/UDP server10.biloxi.com
+ ;branch=z9hG4bKnashds8;received=192.0.2.3
+ Via: SIP/2.0/UDP bigbox3.site3.atlanta.com
+ ;branch=z9hG4bK77ef4c2312983.1;received=192.0.2.2
+ Via: SIP/2.0/UDP pc33.atlanta.com
+ ;branch=z9hG4bK776asdhds ;received=192.0.2.1
+ To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
+ From: Alice <sip:alice@atlanta.com>;tag=1928301774
+ Call-ID: a84b4c76e66710@pc33.atlanta.com
+ CSeq: 314159 INVITE
+ Contact: <sip:bob@192.0.2.4>
+ Content-Type: application/sdp
+ Content-Length: 131
+
+ (Bob's SDP not shown)
+
+ The first line of the response contains the response code (200) and
+ the reason phrase (OK). The remaining lines contain header fields.
+ The Via, To, From, Call-ID, and CSeq header fields are copied from
+ the INVITE request. (There are three Via header field values - one
+ added by Alice's SIP phone, one added by the atlanta.com proxy, and
+ one added by the biloxi.com proxy.) Bob's SIP phone has added a tag
+ parameter to the To header field. This tag will be incorporated by
+ both endpoints into the dialog and will be included in all future
+
+
+
+Rosenberg, et. al. Standards Track [Page 15]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ requests and responses in this call. The Contact header field
+ contains a URI at which Bob can be directly reached at his SIP phone.
+ The Content-Type and Content-Length refer to the message body (not
+ shown) that contains Bob's SDP media information.
+
+ In addition to DNS and location service lookups shown in this
+ example, proxy servers can make flexible "routing decisions" to
+ decide where to send a request. For example, if Bob's SIP phone
+ returned a 486 (Busy Here) response, the biloxi.com proxy server
+ could proxy the INVITE to Bob's voicemail server. A proxy server can
+ also send an INVITE to a number of locations at the same time. This
+ type of parallel search is known as forking.
+
+ In this case, the 200 (OK) is routed back through the two proxies and
+ is received by Alice's softphone, which then stops the ringback tone
+ and indicates that the call has been answered. Finally, Alice's
+ softphone sends an acknowledgement message, ACK, to Bob's SIP phone
+ to confirm the reception of the final response (200 (OK)). In this
+ example, the ACK is sent directly from Alice's softphone to Bob's SIP
+ phone, bypassing the two proxies. This occurs because the endpoints
+ have learned each other's address from the Contact header fields
+ through the INVITE/200 (OK) exchange, which was not known when the
+ initial INVITE was sent. The lookups performed by the two proxies
+ are no longer needed, so the proxies drop out of the call flow. This
+ completes the INVITE/200/ACK three-way handshake used to establish
+ SIP sessions. Full details on session setup are in Section 13.
+
+ Alice and Bob's media session has now begun, and they send media
+ packets using the format to which they agreed in the exchange of SDP.
+ In general, the end-to-end media packets take a different path from
+ the SIP signaling messages.
+
+ During the session, either Alice or Bob may decide to change the
+ characteristics of the media session. This is accomplished by
+ sending a re-INVITE containing a new media description. This re-
+ INVITE references the existing dialog so that the other party knows
+ that it is to modify an existing session instead of establishing a
+ new session. The other party sends a 200 (OK) to accept the change.
+ The requestor responds to the 200 (OK) with an ACK. If the other
+ party does not accept the change, he sends an error response such as
+ 488 (Not Acceptable Here), which also receives an ACK. However, the
+ failure of the re-INVITE does not cause the existing call to fail -
+ the session continues using the previously negotiated
+ characteristics. Full details on session modification are in Section
+ 14.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 16]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ At the end of the call, Bob disconnects (hangs up) first and
+ generates a BYE message. This BYE is routed directly to Alice's
+ softphone, again bypassing the proxies. Alice confirms receipt of
+ the BYE with a 200 (OK) response, which terminates the session and
+ the BYE transaction. No ACK is sent - an ACK is only sent in
+ response to a response to an INVITE request. The reasons for this
+ special handling for INVITE will be discussed later, but relate to
+ the reliability mechanisms in SIP, the length of time it can take for
+ a ringing phone to be answered, and forking. For this reason,
+ request handling in SIP is often classified as either INVITE or non-
+ INVITE, referring to all other methods besides INVITE. Full details
+ on session termination are in Section 15.
+
+ Section 24.2 describes the messages shown in Figure 1 in full.
+
+ In some cases, it may be useful for proxies in the SIP signaling path
+ to see all the messaging between the endpoints for the duration of
+ the session. For example, if the biloxi.com proxy server wished to
+ remain in the SIP messaging path beyond the initial INVITE, it would
+ add to the INVITE a required routing header field known as Record-
+ Route that contained a URI resolving to the hostname or IP address of
+ the proxy. This information would be received by both Bob's SIP
+ phone and (due to the Record-Route header field being passed back in
+ the 200 (OK)) Alice's softphone and stored for the duration of the
+ dialog. The biloxi.com proxy server would then receive and proxy the
+ ACK, BYE, and 200 (OK) to the BYE. Each proxy can independently
+ decide to receive subsequent messages, and those messages will pass
+ through all proxies that elect to receive it. This capability is
+ frequently used for proxies that are providing mid-call features.
+
+ Registration is another common operation in SIP. Registration is one
+ way that the biloxi.com server can learn the current location of Bob.
+ Upon initialization, and at periodic intervals, Bob's SIP phone sends
+ REGISTER messages to a server in the biloxi.com domain known as a SIP
+ registrar. The REGISTER messages associate Bob's SIP or SIPS URI
+ (sip:bob@biloxi.com) with the machine into which he is currently
+ logged (conveyed as a SIP or SIPS URI in the Contact header field).
+ The registrar writes this association, also called a binding, to a
+ database, called the location service, where it can be used by the
+ proxy in the biloxi.com domain. Often, a registrar server for a
+ domain is co-located with the proxy for that domain. It is an
+ important concept that the distinction between types of SIP servers
+ is logical, not physical.
+
+ Bob is not limited to registering from a single device. For example,
+ both his SIP phone at home and the one in the office could send
+ registrations. This information is stored together in the location
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 17]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ service and allows a proxy to perform various types of searches to
+ locate Bob. Similarly, more than one user can be registered on a
+ single device at the same time.
+
+ The location service is just an abstract concept. It generally
+ contains information that allows a proxy to input a URI and receive a
+ set of zero or more URIs that tell the proxy where to send the
+ request. Registrations are one way to create this information, but
+ not the only way. Arbitrary mapping functions can be configured at
+ the discretion of the administrator.
+
+ Finally, it is important to note that in SIP, registration is used
+ for routing incoming SIP requests and has no role in authorizing
+ outgoing requests. Authorization and authentication are handled in
+ SIP either on a request-by-request basis with a challenge/response
+ mechanism, or by using a lower layer scheme as discussed in Section
+ 26.
+
+ The complete set of SIP message details for this registration example
+ is in Section 24.1.
+
+ Additional operations in SIP, such as querying for the capabilities
+ of a SIP server or client using OPTIONS, or canceling a pending
+ request using CANCEL, will be introduced in later sections.
+
+5 Structure of the Protocol
+
+ SIP is structured as a layered protocol, which means that its
+ behavior is described in terms of a set of fairly independent
+ processing stages with only a loose coupling between each stage. The
+ protocol behavior is described as layers for the purpose of
+ presentation, allowing the description of functions common across
+ elements in a single section. It does not dictate an implementation
+ in any way. When we say that an element "contains" a layer, we mean
+ it is compliant to the set of rules defined by that layer.
+
+ Not every element specified by the protocol contains every layer.
+ Furthermore, the elements specified by SIP are logical elements, not
+ physical ones. A physical realization can choose to act as different
+ logical elements, perhaps even on a transaction-by-transaction basis.
+
+ The lowest layer of SIP is its syntax and encoding. Its encoding is
+ specified using an augmented Backus-Naur Form grammar (BNF). The
+ complete BNF is specified in Section 25; an overview of a SIP
+ message's structure can be found in Section 7.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 18]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The second layer is the transport layer. It defines how a client
+ sends requests and receives responses and how a server receives
+ requests and sends responses over the network. All SIP elements
+ contain a transport layer. The transport layer is described in
+ Section 18.
+
+ The third layer is the transaction layer. Transactions are a
+ fundamental component of SIP. A transaction is a request sent by a
+ client transaction (using the transport layer) to a server
+ transaction, along with all responses to that request sent from the
+ server transaction back to the client. The transaction layer handles
+ application-layer retransmissions, matching of responses to requests,
+ and application-layer timeouts. Any task that a user agent client
+ (UAC) accomplishes takes place using a series of transactions.
+ Discussion of transactions can be found in Section 17. User agents
+ contain a transaction layer, as do stateful proxies. Stateless
+ proxies do not contain a transaction layer. The transaction layer
+ has a client component (referred to as a client transaction) and a
+ server component (referred to as a server transaction), each of which
+ are represented by a finite state machine that is constructed to
+ process a particular request.
+
+ The layer above the transaction layer is called the transaction user
+ (TU). Each of the SIP entities, except the stateless proxy, is a
+ transaction user. When a TU wishes to send a request, it creates a
+ client transaction instance and passes it the request along with the
+ destination IP address, port, and transport to which to send the
+ request. A TU that creates a client transaction can also cancel it.
+ When a client cancels a transaction, it requests that the server stop
+ further processing, revert to the state that existed before the
+ transaction was initiated, and generate a specific error response to
+ that transaction. This is done with a CANCEL request, which
+ constitutes its own transaction, but references the transaction to be
+ cancelled (Section 9).
+
+ The SIP elements, that is, user agent clients and servers, stateless
+ and stateful proxies and registrars, contain a core that
+ distinguishes them from each other. Cores, except for the stateless
+ proxy, are transaction users. While the behavior of the UAC and UAS
+ cores depends on the method, there are some common rules for all
+ methods (Section 8). For a UAC, these rules govern the construction
+ of a request; for a UAS, they govern the processing of a request and
+ generating a response. Since registrations play an important role in
+ SIP, a UAS that handles a REGISTER is given the special name
+ registrar. Section 10 describes UAC and UAS core behavior for the
+ REGISTER method. Section 11 describes UAC and UAS core behavior for
+ the OPTIONS method, used for determining the capabilities of a UA.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 19]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Certain other requests are sent within a dialog. A dialog is a
+ peer-to-peer SIP relationship between two user agents that persists
+ for some time. The dialog facilitates sequencing of messages and
+ proper routing of requests between the user agents. The INVITE
+ method is the only way defined in this specification to establish a
+ dialog. When a UAC sends a request that is within the context of a
+ dialog, it follows the common UAC rules as discussed in Section 8 but
+ also the rules for mid-dialog requests. Section 12 discusses dialogs
+ and presents the procedures for their construction and maintenance,
+ in addition to construction of requests within a dialog.
+
+ The most important method in SIP is the INVITE method, which is used
+ to establish a session between participants. A session is a
+ collection of participants, and streams of media between them, for
+ the purposes of communication. Section 13 discusses how sessions are
+ initiated, resulting in one or more SIP dialogs. Section 14
+ discusses how characteristics of that session are modified through
+ the use of an INVITE request within a dialog. Finally, section 15
+ discusses how a session is terminated.
+
+ The procedures of Sections 8, 10, 11, 12, 13, 14, and 15 deal
+ entirely with the UA core (Section 9 describes cancellation, which
+ applies to both UA core and proxy core). Section 16 discusses the
+ proxy element, which facilitates routing of messages between user
+ agents.
+
+6 Definitions
+
+ The following terms have special significance for SIP.
+
+ Address-of-Record: An address-of-record (AOR) is a SIP or SIPS URI
+ that points to a domain with a location service that can map
+ the URI to another URI where the user might be available.
+ Typically, the location service is populated through
+ registrations. An AOR is frequently thought of as the "public
+ address" of the user.
+
+ Back-to-Back User Agent: A back-to-back user agent (B2BUA) is a
+ logical entity that receives a request and processes it as a
+ user agent server (UAS). In order to determine how the request
+ should be answered, it acts as a user agent client (UAC) and
+ generates requests. Unlike a proxy server, it maintains dialog
+ state and must participate in all requests sent on the dialogs
+ it has established. Since it is a concatenation of a UAC and
+ UAS, no explicit definitions are needed for its behavior.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 20]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Call: A call is an informal term that refers to some communication
+ between peers, generally set up for the purposes of a
+ multimedia conversation.
+
+ Call Leg: Another name for a dialog [31]; no longer used in this
+ specification.
+
+ Call Stateful: A proxy is call stateful if it retains state for a
+ dialog from the initiating INVITE to the terminating BYE
+ request. A call stateful proxy is always transaction stateful,
+ but the converse is not necessarily true.
+
+ Client: A client is any network element that sends SIP requests
+ and receives SIP responses. Clients may or may not interact
+ directly with a human user. User agent clients and proxies are
+ clients.
+
+ Conference: A multimedia session (see below) that contains
+ multiple participants.
+
+ Core: Core designates the functions specific to a particular type
+ of SIP entity, i.e., specific to either a stateful or stateless
+ proxy, a user agent or registrar. All cores, except those for
+ the stateless proxy, are transaction users.
+
+ Dialog: A dialog is a peer-to-peer SIP relationship between two
+ UAs that persists for some time. A dialog is established by
+ SIP messages, such as a 2xx response to an INVITE request. A
+ dialog is identified by a call identifier, local tag, and a
+ remote tag. A dialog was formerly known as a call leg in RFC
+ 2543.
+
+ Downstream: A direction of message forwarding within a transaction
+ that refers to the direction that requests flow from the user
+ agent client to user agent server.
+
+ Final Response: A response that terminates a SIP transaction, as
+ opposed to a provisional response that does not. All 2xx, 3xx,
+ 4xx, 5xx and 6xx responses are final.
+
+ Header: A header is a component of a SIP message that conveys
+ information about the message. It is structured as a sequence
+ of header fields.
+
+ Header Field: A header field is a component of the SIP message
+ header. A header field can appear as one or more header field
+ rows. Header field rows consist of a header field name and zero
+ or more header field values. Multiple header field values on a
+
+
+
+Rosenberg, et. al. Standards Track [Page 21]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ given header field row are separated by commas. Some header
+ fields can only have a single header field value, and as a
+ result, always appear as a single header field row.
+
+ Header Field Value: A header field value is a single value; a
+ header field consists of zero or more header field values.
+
+ Home Domain: The domain providing service to a SIP user.
+ Typically, this is the domain present in the URI in the
+ address-of-record of a registration.
+
+ Informational Response: Same as a provisional response.
+
+ Initiator, Calling Party, Caller: The party initiating a session
+ (and dialog) with an INVITE request. A caller retains this
+ role from the time it sends the initial INVITE that established
+ a dialog until the termination of that dialog.
+
+ Invitation: An INVITE request.
+
+ Invitee, Invited User, Called Party, Callee: The party that
+ receives an INVITE request for the purpose of establishing a
+ new session. A callee retains this role from the time it
+ receives the INVITE until the termination of the dialog
+ established by that INVITE.
+
+ Location Service: A location service is used by a SIP redirect or
+ proxy server to obtain information about a callee's possible
+ location(s). It contains a list of bindings of address-of-
+ record keys to zero or more contact addresses. The bindings
+ can be created and removed in many ways; this specification
+ defines a REGISTER method that updates the bindings.
+
+ Loop: A request that arrives at a proxy, is forwarded, and later
+ arrives back at the same proxy. When it arrives the second
+ time, its Request-URI is identical to the first time, and other
+ header fields that affect proxy operation are unchanged, so
+ that the proxy would make the same processing decision on the
+ request it made the first time. Looped requests are errors,
+ and the procedures for detecting them and handling them are
+ described by the protocol.
+
+ Loose Routing: A proxy is said to be loose routing if it follows
+ the procedures defined in this specification for processing of
+ the Route header field. These procedures separate the
+ destination of the request (present in the Request-URI) from
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 22]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ the set of proxies that need to be visited along the way
+ (present in the Route header field). A proxy compliant to
+ these mechanisms is also known as a loose router.
+
+ Message: Data sent between SIP elements as part of the protocol.
+ SIP messages are either requests or responses.
+
+ Method: The method is the primary function that a request is meant
+ to invoke on a server. The method is carried in the request
+ message itself. Example methods are INVITE and BYE.
+
+ Outbound Proxy: A proxy that receives requests from a client, even
+ though it may not be the server resolved by the Request-URI.
+ Typically, a UA is manually configured with an outbound proxy,
+ or can learn about one through auto-configuration protocols.
+
+ Parallel Search: In a parallel search, a proxy issues several
+ requests to possible user locations upon receiving an incoming
+ request. Rather than issuing one request and then waiting for
+ the final response before issuing the next request as in a
+ sequential search, a parallel search issues requests without
+ waiting for the result of previous requests.
+
+ Provisional Response: A response used by the server to indicate
+ progress, but that does not terminate a SIP transaction. 1xx
+ responses are provisional, other responses are considered
+ final.
+
+ Proxy, Proxy Server: An intermediary entity that acts as both a
+ server and a client for the purpose of making requests on
+ behalf of other clients. A proxy server primarily plays the
+ role of routing, which means its job is to ensure that a
+ request is sent to another entity "closer" to the targeted
+ user. Proxies are also useful for enforcing policy (for
+ example, making sure a user is allowed to make a call). A
+ proxy interprets, and, if necessary, rewrites specific parts of
+ a request message before forwarding it.
+
+ Recursion: A client recurses on a 3xx response when it generates a
+ new request to one or more of the URIs in the Contact header
+ field in the response.
+
+ Redirect Server: A redirect server is a user agent server that
+ generates 3xx responses to requests it receives, directing the
+ client to contact an alternate set of URIs.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 23]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Registrar: A registrar is a server that accepts REGISTER requests
+ and places the information it receives in those requests into
+ the location service for the domain it handles.
+
+ Regular Transaction: A regular transaction is any transaction with
+ a method other than INVITE, ACK, or CANCEL.
+
+ Request: A SIP message sent from a client to a server, for the
+ purpose of invoking a particular operation.
+
+ Response: A SIP message sent from a server to a client, for
+ indicating the status of a request sent from the client to the
+ server.
+
+ Ringback: Ringback is the signaling tone produced by the calling
+ party's application indicating that a called party is being
+ alerted (ringing).
+
+ Route Set: A route set is a collection of ordered SIP or SIPS URI
+ which represent a list of proxies that must be traversed when
+ sending a particular request. A route set can be learned,
+ through headers like Record-Route, or it can be configured.
+
+ Server: A server is a network element that receives requests in
+ order to service them and sends back responses to those
+ requests. Examples of servers are proxies, user agent servers,
+ redirect servers, and registrars.
+
+ Sequential Search: In a sequential search, a proxy server attempts
+ each contact address in sequence, proceeding to the next one
+ only after the previous has generated a final response. A 2xx
+ or 6xx class final response always terminates a sequential
+ search.
+
+ Session: From the SDP specification: "A multimedia session is a
+ set of multimedia senders and receivers and the data streams
+ flowing from senders to receivers. A multimedia conference is
+ an example of a multimedia session." (RFC 2327 [1]) (A session
+ as defined for SDP can comprise one or more RTP sessions.) As
+ defined, a callee can be invited several times, by different
+ calls, to the same session. If SDP is used, a session is
+ defined by the concatenation of the SDP user name, session id,
+ network type, address type, and address elements in the origin
+ field.
+
+ SIP Transaction: A SIP transaction occurs between a client and a
+ server and comprises all messages from the first request sent
+ from the client to the server up to a final (non-1xx) response
+
+
+
+Rosenberg, et. al. Standards Track [Page 24]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ sent from the server to the client. If the request is INVITE
+ and the final response is a non-2xx, the transaction also
+ includes an ACK to the response. The ACK for a 2xx response to
+ an INVITE request is a separate transaction.
+
+ Spiral: A spiral is a SIP request that is routed to a proxy,
+ forwarded onwards, and arrives once again at that proxy, but
+ this time differs in a way that will result in a different
+ processing decision than the original request. Typically, this
+ means that the request's Request-URI differs from its previous
+ arrival. A spiral is not an error condition, unlike a loop. A
+ typical cause for this is call forwarding. A user calls
+ joe@example.com. The example.com proxy forwards it to Joe's
+ PC, which in turn, forwards it to bob@example.com. This
+ request is proxied back to the example.com proxy. However,
+ this is not a loop. Since the request is targeted at a
+ different user, it is considered a spiral, and is a valid
+ condition.
+
+ Stateful Proxy: A logical entity that maintains the client and
+ server transaction state machines defined by this specification
+ during the processing of a request, also known as a transaction
+ stateful proxy. The behavior of a stateful proxy is further
+ defined in Section 16. A (transaction) stateful proxy is not
+ the same as a call stateful proxy.
+
+ Stateless Proxy: A logical entity that does not maintain the
+ client or server transaction state machines defined in this
+ specification when it processes requests. A stateless proxy
+ forwards every request it receives downstream and every
+ response it receives upstream.
+
+ Strict Routing: A proxy is said to be strict routing if it follows
+ the Route processing rules of RFC 2543 and many prior work in
+ progress versions of this RFC. That rule caused proxies to
+ destroy the contents of the Request-URI when a Route header
+ field was present. Strict routing behavior is not used in this
+ specification, in favor of a loose routing behavior. Proxies
+ that perform strict routing are also known as strict routers.
+
+ Target Refresh Request: A target refresh request sent within a
+ dialog is defined as a request that can modify the remote
+ target of the dialog.
+
+ Transaction User (TU): The layer of protocol processing that
+ resides above the transaction layer. Transaction users include
+ the UAC core, UAS core, and proxy core.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 25]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Upstream: A direction of message forwarding within a transaction
+ that refers to the direction that responses flow from the user
+ agent server back to the user agent client.
+
+ URL-encoded: A character string encoded according to RFC 2396,
+ Section 2.4 [5].
+
+ User Agent Client (UAC): A user agent client is a logical entity
+ that creates a new request, and then uses the client
+ transaction state machinery to send it. The role of UAC lasts
+ only for the duration of that transaction. In other words, if
+ a piece of software initiates a request, it acts as a UAC for
+ the duration of that transaction. If it receives a request
+ later, it assumes the role of a user agent server for the
+ processing of that transaction.
+
+ UAC Core: The set of processing functions required of a UAC that
+ reside above the transaction and transport layers.
+
+ User Agent Server (UAS): A user agent server is a logical entity
+ that generates a response to a SIP request. The response
+ accepts, rejects, or redirects the request. This role lasts
+ only for the duration of that transaction. In other words, if
+ a piece of software responds to a request, it acts as a UAS for
+ the duration of that transaction. If it generates a request
+ later, it assumes the role of a user agent client for the
+ processing of that transaction.
+
+ UAS Core: The set of processing functions required at a UAS that
+ resides above the transaction and transport layers.
+
+ User Agent (UA): A logical entity that can act as both a user
+ agent client and user agent server.
+
+ The role of UAC and UAS, as well as proxy and redirect servers, are
+ defined on a transaction-by-transaction basis. For example, the user
+ agent initiating a call acts as a UAC when sending the initial INVITE
+ request and as a UAS when receiving a BYE request from the callee.
+ Similarly, the same software can act as a proxy server for one
+ request and as a redirect server for the next request.
+
+ Proxy, location, and registrar servers defined above are logical
+ entities; implementations MAY combine them into a single application.
+
+7 SIP Messages
+
+ SIP is a text-based protocol and uses the UTF-8 charset (RFC 2279
+ [7]).
+
+
+
+Rosenberg, et. al. Standards Track [Page 26]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ A SIP message is either a request from a client to a server, or a
+ response from a server to a client.
+
+ Both Request (section 7.1) and Response (section 7.2) messages use
+ the basic format of RFC 2822 [3], even though the syntax differs in
+ character set and syntax specifics. (SIP allows header fields that
+ would not be valid RFC 2822 header fields, for example.) Both types
+ of messages consist of a start-line, one or more header fields, an
+ empty line indicating the end of the header fields, and an optional
+ message-body.
+
+ generic-message = start-line
+ *message-header
+ CRLF
+ [ message-body ]
+ start-line = Request-Line / Status-Line
+
+ The start-line, each message-header line, and the empty line MUST be
+ terminated by a carriage-return line-feed sequence (CRLF). Note that
+ the empty line MUST be present even if the message-body is not.
+
+ Except for the above difference in character sets, much of SIP's
+ message and header field syntax is identical to HTTP/1.1. Rather
+ than repeating the syntax and semantics here, we use [HX.Y] to refer
+ to Section X.Y of the current HTTP/1.1 specification (RFC 2616 [8]).
+
+ However, SIP is not an extension of HTTP.
+
+7.1 Requests
+
+ SIP requests are distinguished by having a Request-Line for a start-
+ line. A Request-Line contains a method name, a Request-URI, and the
+ protocol version separated by a single space (SP) character.
+
+ The Request-Line ends with CRLF. No CR or LF are allowed except in
+ the end-of-line CRLF sequence. No linear whitespace (LWS) is allowed
+ in any of the elements.
+
+ Request-Line = Method SP Request-URI SP SIP-Version CRLF
+
+ Method: This specification defines six methods: REGISTER for
+ registering contact information, INVITE, ACK, and CANCEL for
+ setting up sessions, BYE for terminating sessions, and
+ OPTIONS for querying servers about their capabilities. SIP
+ extensions, documented in standards track RFCs, may define
+ additional methods.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 27]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Request-URI: The Request-URI is a SIP or SIPS URI as described in
+ Section 19.1 or a general URI (RFC 2396 [5]). It indicates
+ the user or service to which this request is being addressed.
+ The Request-URI MUST NOT contain unescaped spaces or control
+ characters and MUST NOT be enclosed in "<>".
+
+ SIP elements MAY support Request-URIs with schemes other than
+ "sip" and "sips", for example the "tel" URI scheme of RFC
+ 2806 [9]. SIP elements MAY translate non-SIP URIs using any
+ mechanism at their disposal, resulting in SIP URI, SIPS URI,
+ or some other scheme.
+
+ SIP-Version: Both request and response messages include the
+ version of SIP in use, and follow [H3.1] (with HTTP replaced
+ by SIP, and HTTP/1.1 replaced by SIP/2.0) regarding version
+ ordering, compliance requirements, and upgrading of version
+ numbers. To be compliant with this specification,
+ applications sending SIP messages MUST include a SIP-Version
+ of "SIP/2.0". The SIP-Version string is case-insensitive,
+ but implementations MUST send upper-case.
+
+ Unlike HTTP/1.1, SIP treats the version number as a literal
+ string. In practice, this should make no difference.
+
+7.2 Responses
+
+ SIP responses are distinguished from requests by having a Status-Line
+ as their start-line. A Status-Line consists of the protocol version
+ followed by a numeric Status-Code and its associated textual phrase,
+ with each element separated by a single SP character.
+
+ No CR or LF is allowed except in the final CRLF sequence.
+
+ Status-Line = SIP-Version SP Status-Code SP Reason-Phrase CRLF
+
+ The Status-Code is a 3-digit integer result code that indicates the
+ outcome of an attempt to understand and satisfy a request. The
+ Reason-Phrase is intended to give a short textual description of the
+ Status-Code. The Status-Code is intended for use by automata,
+ whereas the Reason-Phrase is intended for the human user. A client
+ is not required to examine or display the Reason-Phrase.
+
+ While this specification suggests specific wording for the reason
+ phrase, implementations MAY choose other text, for example, in the
+ language indicated in the Accept-Language header field of the
+ request.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 28]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The first digit of the Status-Code defines the class of response.
+ The last two digits do not have any categorization role. For this
+ reason, any response with a status code between 100 and 199 is
+ referred to as a "1xx response", any response with a status code
+ between 200 and 299 as a "2xx response", and so on. SIP/2.0 allows
+ six values for the first digit:
+
+ 1xx: Provisional -- request received, continuing to process the
+ request;
+
+ 2xx: Success -- the action was successfully received, understood,
+ and accepted;
+
+ 3xx: Redirection -- further action needs to be taken in order to
+ complete the request;
+
+ 4xx: Client Error -- the request contains bad syntax or cannot be
+ fulfilled at this server;
+
+ 5xx: Server Error -- the server failed to fulfill an apparently
+ valid request;
+
+ 6xx: Global Failure -- the request cannot be fulfilled at any
+ server.
+
+ Section 21 defines these classes and describes the individual codes.
+
+7.3 Header Fields
+
+ SIP header fields are similar to HTTP header fields in both syntax
+ and semantics. In particular, SIP header fields follow the [H4.2]
+ definitions of syntax for the message-header and the rules for
+ extending header fields over multiple lines. However, the latter is
+ specified in HTTP with implicit whitespace and folding. This
+ specification conforms to RFC 2234 [10] and uses only explicit
+ whitespace and folding as an integral part of the grammar.
+
+ [H4.2] also specifies that multiple header fields of the same field
+ name whose value is a comma-separated list can be combined into one
+ header field. That applies to SIP as well, but the specific rule is
+ different because of the different grammars. Specifically, any SIP
+ header whose grammar is of the form
+
+ header = "header-name" HCOLON header-value *(COMMA header-value)
+
+ allows for combining header fields of the same name into a comma-
+ separated list. The Contact header field allows a comma-separated
+ list unless the header field value is "*".
+
+
+
+Rosenberg, et. al. Standards Track [Page 29]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+7.3.1 Header Field Format
+
+ Header fields follow the same generic header format as that given in
+ Section 2.2 of RFC 2822 [3]. Each header field consists of a field
+ name followed by a colon (":") and the field value.
+
+ field-name: field-value
+
+ The formal grammar for a message-header specified in Section 25
+ allows for an arbitrary amount of whitespace on either side of the
+ colon; however, implementations should avoid spaces between the field
+ name and the colon and use a single space (SP) between the colon and
+ the field-value.
+
+ Subject: lunch
+ Subject : lunch
+ Subject :lunch
+ Subject: lunch
+
+ Thus, the above are all valid and equivalent, but the last is the
+ preferred form.
+
+ Header fields can be extended over multiple lines by preceding each
+ extra line with at least one SP or horizontal tab (HT). The line
+ break and the whitespace at the beginning of the next line are
+ treated as a single SP character. Thus, the following are
+ equivalent:
+
+ Subject: I know you're there, pick up the phone and talk to me!
+ Subject: I know you're there,
+ pick up the phone
+ and talk to me!
+
+ The relative order of header fields with different field names is not
+ significant. However, it is RECOMMENDED that header fields which are
+ needed for proxy processing (Via, Route, Record-Route, Proxy-Require,
+ Max-Forwards, and Proxy-Authorization, for example) appear towards
+ the top of the message to facilitate rapid parsing. The relative
+ order of header field rows with the same field name is important.
+ Multiple header field rows with the same field-name MAY be present in
+ a message if and only if the entire field-value for that header field
+ is defined as a comma-separated list (that is, if follows the grammar
+ defined in Section 7.3). It MUST be possible to combine the multiple
+ header field rows into one "field-name: field-value" pair, without
+ changing the semantics of the message, by appending each subsequent
+ field-value to the first, each separated by a comma. The exceptions
+ to this rule are the WWW-Authenticate, Authorization, Proxy-
+ Authenticate, and Proxy-Authorization header fields. Multiple header
+
+
+
+Rosenberg, et. al. Standards Track [Page 30]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ field rows with these names MAY be present in a message, but since
+ their grammar does not follow the general form listed in Section 7.3,
+ they MUST NOT be combined into a single header field row.
+
+ Implementations MUST be able to process multiple header field rows
+ with the same name in any combination of the single-value-per-line or
+ comma-separated value forms.
+
+ The following groups of header field rows are valid and equivalent:
+
+ Route: <sip:alice@atlanta.com>
+ Subject: Lunch
+ Route: <sip:bob@biloxi.com>
+ Route: <sip:carol@chicago.com>
+
+ Route: <sip:alice@atlanta.com>, <sip:bob@biloxi.com>
+ Route: <sip:carol@chicago.com>
+ Subject: Lunch
+
+ Subject: Lunch
+ Route: <sip:alice@atlanta.com>, <sip:bob@biloxi.com>,
+ <sip:carol@chicago.com>
+
+ Each of the following blocks is valid but not equivalent to the
+ others:
+
+ Route: <sip:alice@atlanta.com>
+ Route: <sip:bob@biloxi.com>
+ Route: <sip:carol@chicago.com>
+
+ Route: <sip:bob@biloxi.com>
+ Route: <sip:alice@atlanta.com>
+ Route: <sip:carol@chicago.com>
+
+ Route: <sip:alice@atlanta.com>,<sip:carol@chicago.com>,
+ <sip:bob@biloxi.com>
+
+ The format of a header field-value is defined per header-name. It
+ will always be either an opaque sequence of TEXT-UTF8 octets, or a
+ combination of whitespace, tokens, separators, and quoted strings.
+ Many existing header fields will adhere to the general form of a
+ value followed by a semi-colon separated sequence of parameter-name,
+ parameter-value pairs:
+
+ field-name: field-value *(;parameter-name=parameter-value)
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 31]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Even though an arbitrary number of parameter pairs may be attached to
+ a header field value, any given parameter-name MUST NOT appear more
+ than once.
+
+ When comparing header fields, field names are always case-
+ insensitive. Unless otherwise stated in the definition of a
+ particular header field, field values, parameter names, and parameter
+ values are case-insensitive. Tokens are always case-insensitive.
+ Unless specified otherwise, values expressed as quoted strings are
+ case-sensitive. For example,
+
+ Contact: <sip:alice@atlanta.com>;expires=3600
+
+ is equivalent to
+
+ CONTACT: <sip:alice@atlanta.com>;ExPiReS=3600
+
+ and
+
+ Content-Disposition: session;handling=optional
+
+ is equivalent to
+
+ content-disposition: Session;HANDLING=OPTIONAL
+
+ The following two header fields are not equivalent:
+
+ Warning: 370 devnull "Choose a bigger pipe"
+ Warning: 370 devnull "CHOOSE A BIGGER PIPE"
+
+7.3.2 Header Field Classification
+
+ Some header fields only make sense in requests or responses. These
+ are called request header fields and response header fields,
+ respectively. If a header field appears in a message not matching
+ its category (such as a request header field in a response), it MUST
+ be ignored. Section 20 defines the classification of each header
+ field.
+
+7.3.3 Compact Form
+
+ SIP provides a mechanism to represent common header field names in an
+ abbreviated form. This may be useful when messages would otherwise
+ become too large to be carried on the transport available to it
+ (exceeding the maximum transmission unit (MTU) when using UDP, for
+ example). These compact forms are defined in Section 20. A compact
+ form MAY be substituted for the longer form of a header field name at
+ any time without changing the semantics of the message. A header
+
+
+
+Rosenberg, et. al. Standards Track [Page 32]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ field name MAY appear in both long and short forms within the same
+ message. Implementations MUST accept both the long and short forms
+ of each header name.
+
+7.4 Bodies
+
+ Requests, including new requests defined in extensions to this
+ specification, MAY contain message bodies unless otherwise noted.
+ The interpretation of the body depends on the request method.
+
+ For response messages, the request method and the response status
+ code determine the type and interpretation of any message body. All
+ responses MAY include a body.
+
+7.4.1 Message Body Type
+
+ The Internet media type of the message body MUST be given by the
+ Content-Type header field. If the body has undergone any encoding
+ such as compression, then this MUST be indicated by the Content-
+ Encoding header field; otherwise, Content-Encoding MUST be omitted.
+ If applicable, the character set of the message body is indicated as
+ part of the Content-Type header-field value.
+
+ The "multipart" MIME type defined in RFC 2046 [11] MAY be used within
+ the body of the message. Implementations that send requests
+ containing multipart message bodies MUST send a session description
+ as a non-multipart message body if the remote implementation requests
+ this through an Accept header field that does not contain multipart.
+
+ SIP messages MAY contain binary bodies or body parts. When no
+ explicit charset parameter is provided by the sender, media subtypes
+ of the "text" type are defined to have a default charset value of
+ "UTF-8".
+
+7.4.2 Message Body Length
+
+ The body length in bytes is provided by the Content-Length header
+ field. Section 20.14 describes the necessary contents of this header
+ field in detail.
+
+ The "chunked" transfer encoding of HTTP/1.1 MUST NOT be used for SIP.
+ (Note: The chunked encoding modifies the body of a message in order
+ to transfer it as a series of chunks, each with its own size
+ indicator.)
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 33]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+7.5 Framing SIP Messages
+
+ Unlike HTTP, SIP implementations can use UDP or other unreliable
+ datagram protocols. Each such datagram carries one request or
+ response. See Section 18 on constraints on usage of unreliable
+ transports.
+
+ Implementations processing SIP messages over stream-oriented
+ transports MUST ignore any CRLF appearing before the start-line
+ [H4.1].
+
+ The Content-Length header field value is used to locate the end of
+ each SIP message in a stream. It will always be present when SIP
+ messages are sent over stream-oriented transports.
+
+8 General User Agent Behavior
+
+ A user agent represents an end system. It contains a user agent
+ client (UAC), which generates requests, and a user agent server
+ (UAS), which responds to them. A UAC is capable of generating a
+ request based on some external stimulus (the user clicking a button,
+ or a signal on a PSTN line) and processing a response. A UAS is
+ capable of receiving a request and generating a response based on
+ user input, external stimulus, the result of a program execution, or
+ some other mechanism.
+
+ When a UAC sends a request, the request passes through some number of
+ proxy servers, which forward the request towards the UAS. When the
+ UAS generates a response, the response is forwarded towards the UAC.
+
+ UAC and UAS procedures depend strongly on two factors. First, based
+ on whether the request or response is inside or outside of a dialog,
+ and second, based on the method of a request. Dialogs are discussed
+ thoroughly in Section 12; they represent a peer-to-peer relationship
+ between user agents and are established by specific SIP methods, such
+ as INVITE.
+
+ In this section, we discuss the method-independent rules for UAC and
+ UAS behavior when processing requests that are outside of a dialog.
+ This includes, of course, the requests which themselves establish a
+ dialog.
+
+ Security procedures for requests and responses outside of a dialog
+ are described in Section 26. Specifically, mechanisms exist for the
+ UAS and UAC to mutually authenticate. A limited set of privacy
+ features are also supported through encryption of bodies using
+ S/MIME.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 34]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+8.1 UAC Behavior
+
+ This section covers UAC behavior outside of a dialog.
+
+8.1.1 Generating the Request
+
+ A valid SIP request formulated by a UAC MUST, at a minimum, contain
+ the following header fields: To, From, CSeq, Call-ID, Max-Forwards,
+ and Via; all of these header fields are mandatory in all SIP
+ requests. These six header fields are the fundamental building
+ blocks of a SIP message, as they jointly provide for most of the
+ critical message routing services including the addressing of
+ messages, the routing of responses, limiting message propagation,
+ ordering of messages, and the unique identification of transactions.
+ These header fields are in addition to the mandatory request line,
+ which contains the method, Request-URI, and SIP version.
+
+ Examples of requests sent outside of a dialog include an INVITE to
+ establish a session (Section 13) and an OPTIONS to query for
+ capabilities (Section 11).
+
+8.1.1.1 Request-URI
+
+ The initial Request-URI of the message SHOULD be set to the value of
+ the URI in the To field. One notable exception is the REGISTER
+ method; behavior for setting the Request-URI of REGISTER is given in
+ Section 10. It may also be undesirable for privacy reasons or
+ convenience to set these fields to the same value (especially if the
+ originating UA expects that the Request-URI will be changed during
+ transit).
+
+ In some special circumstances, the presence of a pre-existing route
+ set can affect the Request-URI of the message. A pre-existing route
+ set is an ordered set of URIs that identify a chain of servers, to
+ which a UAC will send outgoing requests that are outside of a dialog.
+ Commonly, they are configured on the UA by a user or service provider
+ manually, or through some other non-SIP mechanism. When a provider
+ wishes to configure a UA with an outbound proxy, it is RECOMMENDED
+ that this be done by providing it with a pre-existing route set with
+ a single URI, that of the outbound proxy.
+
+ When a pre-existing route set is present, the procedures for
+ populating the Request-URI and Route header field detailed in Section
+ 12.2.1.1 MUST be followed (even though there is no dialog), using the
+ desired Request-URI as the remote target URI.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 35]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+8.1.1.2 To
+
+ The To header field first and foremost specifies the desired
+ "logical" recipient of the request, or the address-of-record of the
+ user or resource that is the target of this request. This may or may
+ not be the ultimate recipient of the request. The To header field
+ MAY contain a SIP or SIPS URI, but it may also make use of other URI
+ schemes (the tel URL (RFC 2806 [9]), for example) when appropriate.
+ All SIP implementations MUST support the SIP URI scheme. Any
+ implementation that supports TLS MUST support the SIPS URI scheme.
+ The To header field allows for a display name.
+
+ A UAC may learn how to populate the To header field for a particular
+ request in a number of ways. Usually the user will suggest the To
+ header field through a human interface, perhaps inputting the URI
+ manually or selecting it from some sort of address book. Frequently,
+ the user will not enter a complete URI, but rather a string of digits
+ or letters (for example, "bob"). It is at the discretion of the UA
+ to choose how to interpret this input. Using the string to form the
+ user part of a SIP URI implies that the UA wishes the name to be
+ resolved in the domain to the right-hand side (RHS) of the at-sign in
+ the SIP URI (for instance, sip:bob@example.com). Using the string to
+ form the user part of a SIPS URI implies that the UA wishes to
+ communicate securely, and that the name is to be resolved in the
+ domain to the RHS of the at-sign. The RHS will frequently be the
+ home domain of the requestor, which allows for the home domain to
+ process the outgoing request. This is useful for features like
+ "speed dial" that require interpretation of the user part in the home
+ domain. The tel URL may be used when the UA does not wish to specify
+ the domain that should interpret a telephone number that has been
+ input by the user. Rather, each domain through which the request
+ passes would be given that opportunity. As an example, a user in an
+ airport might log in and send requests through an outbound proxy in
+ the airport. If they enter "411" (this is the phone number for local
+ directory assistance in the United States), that needs to be
+ interpreted and processed by the outbound proxy in the airport, not
+ the user's home domain. In this case, tel:411 would be the right
+ choice.
+
+ A request outside of a dialog MUST NOT contain a To tag; the tag in
+ the To field of a request identifies the peer of the dialog. Since
+ no dialog is established, no tag is present.
+
+ For further information on the To header field, see Section 20.39.
+ The following is an example of a valid To header field:
+
+ To: Carol <sip:carol@chicago.com>
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 36]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+8.1.1.3 From
+
+ The From header field indicates the logical identity of the initiator
+ of the request, possibly the user's address-of-record. Like the To
+ header field, it contains a URI and optionally a display name. It is
+ used by SIP elements to determine which processing rules to apply to
+ a request (for example, automatic call rejection). As such, it is
+ very important that the From URI not contain IP addresses or the FQDN
+ of the host on which the UA is running, since these are not logical
+ names.
+
+ The From header field allows for a display name. A UAC SHOULD use
+ the display name "Anonymous", along with a syntactically correct, but
+ otherwise meaningless URI (like sip:thisis@anonymous.invalid), if the
+ identity of the client is to remain hidden.
+
+ Usually, the value that populates the From header field in requests
+ generated by a particular UA is pre-provisioned by the user or by the
+ administrators of the user's local domain. If a particular UA is
+ used by multiple users, it might have switchable profiles that
+ include a URI corresponding to the identity of the profiled user.
+ Recipients of requests can authenticate the originator of a request
+ in order to ascertain that they are who their From header field
+ claims they are (see Section 22 for more on authentication).
+
+ The From field MUST contain a new "tag" parameter, chosen by the UAC.
+ See Section 19.3 for details on choosing a tag.
+
+ For further information on the From header field, see Section 20.20.
+ Examples:
+
+ From: "Bob" <sips:bob@biloxi.com> ;tag=a48s
+ From: sip:+12125551212@phone2net.com;tag=887s
+ From: Anonymous <sip:c8oqz84zk7z@privacy.org>;tag=hyh8
+
+8.1.1.4 Call-ID
+
+ The Call-ID header field acts as a unique identifier to group
+ together a series of messages. It MUST be the same for all requests
+ and responses sent by either UA in a dialog. It SHOULD be the same
+ in each registration from a UA.
+
+ In a new request created by a UAC outside of any dialog, the Call-ID
+ header field MUST be selected by the UAC as a globally unique
+ identifier over space and time unless overridden by method-specific
+ behavior. All SIP UAs must have a means to guarantee that the Call-
+ ID header fields they produce will not be inadvertently generated by
+ any other UA. Note that when requests are retried after certain
+
+
+
+Rosenberg, et. al. Standards Track [Page 37]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ failure responses that solicit an amendment to a request (for
+ example, a challenge for authentication), these retried requests are
+ not considered new requests, and therefore do not need new Call-ID
+ header fields; see Section 8.1.3.5.
+
+ Use of cryptographically random identifiers (RFC 1750 [12]) in the
+ generation of Call-IDs is RECOMMENDED. Implementations MAY use the
+ form "localid@host". Call-IDs are case-sensitive and are simply
+ compared byte-by-byte.
+
+ Using cryptographically random identifiers provides some
+ protection against session hijacking and reduces the likelihood of
+ unintentional Call-ID collisions.
+
+ No provisioning or human interface is required for the selection of
+ the Call-ID header field value for a request.
+
+ For further information on the Call-ID header field, see Section
+ 20.8.
+
+ Example:
+
+ Call-ID: f81d4fae-7dec-11d0-a765-00a0c91e6bf6@foo.bar.com
+
+8.1.1.5 CSeq
+
+ The CSeq header field serves as a way to identify and order
+ transactions. It consists of a sequence number and a method. The
+ method MUST match that of the request. For non-REGISTER requests
+ outside of a dialog, the sequence number value is arbitrary. The
+ sequence number value MUST be expressible as a 32-bit unsigned
+ integer and MUST be less than 2**31. As long as it follows the above
+ guidelines, a client may use any mechanism it would like to select
+ CSeq header field values.
+
+ Section 12.2.1.1 discusses construction of the CSeq for requests
+ within a dialog.
+
+ Example:
+
+ CSeq: 4711 INVITE
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 38]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+8.1.1.6 Max-Forwards
+
+ The Max-Forwards header field serves to limit the number of hops a
+ request can transit on the way to its destination. It consists of an
+ integer that is decremented by one at each hop. If the Max-Forwards
+ value reaches 0 before the request reaches its destination, it will
+ be rejected with a 483(Too Many Hops) error response.
+
+ A UAC MUST insert a Max-Forwards header field into each request it
+ originates with a value that SHOULD be 70. This number was chosen to
+ be sufficiently large to guarantee that a request would not be
+ dropped in any SIP network when there were no loops, but not so large
+ as to consume proxy resources when a loop does occur. Lower values
+ should be used with caution and only in networks where topologies are
+ known by the UA.
+
+8.1.1.7 Via
+
+ The Via header field indicates the transport used for the transaction
+ and identifies the location where the response is to be sent. A Via
+ header field value is added only after the transport that will be
+ used to reach the next hop has been selected (which may involve the
+ usage of the procedures in [4]).
+
+ When the UAC creates a request, it MUST insert a Via into that
+ request. The protocol name and protocol version in the header field
+ MUST be SIP and 2.0, respectively. The Via header field value MUST
+ contain a branch parameter. This parameter is used to identify the
+ transaction created by that request. This parameter is used by both
+ the client and the server.
+
+ The branch parameter value MUST be unique across space and time for
+ all requests sent by the UA. The exceptions to this rule are CANCEL
+ and ACK for non-2xx responses. As discussed below, a CANCEL request
+ will have the same value of the branch parameter as the request it
+ cancels. As discussed in Section 17.1.1.3, an ACK for a non-2xx
+ response will also have the same branch ID as the INVITE whose
+ response it acknowledges.
+
+ The uniqueness property of the branch ID parameter, to facilitate
+ its use as a transaction ID, was not part of RFC 2543.
+
+ The branch ID inserted by an element compliant with this
+ specification MUST always begin with the characters "z9hG4bK". These
+ 7 characters are used as a magic cookie (7 is deemed sufficient to
+ ensure that an older RFC 2543 implementation would not pick such a
+ value), so that servers receiving the request can determine that the
+ branch ID was constructed in the fashion described by this
+
+
+
+Rosenberg, et. al. Standards Track [Page 39]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ specification (that is, globally unique). Beyond this requirement,
+ the precise format of the branch token is implementation-defined.
+
+ The Via header maddr, ttl, and sent-by components will be set when
+ the request is processed by the transport layer (Section 18).
+
+ Via processing for proxies is described in Section 16.6 Item 8 and
+ Section 16.7 Item 3.
+
+8.1.1.8 Contact
+
+ The Contact header field provides a SIP or SIPS URI that can be used
+ to contact that specific instance of the UA for subsequent requests.
+ The Contact header field MUST be present and contain exactly one SIP
+ or SIPS URI in any request that can result in the establishment of a
+ dialog. For the methods defined in this specification, that includes
+ only the INVITE request. For these requests, the scope of the
+ Contact is global. That is, the Contact header field value contains
+ the URI at which the UA would like to receive requests, and this URI
+ MUST be valid even if used in subsequent requests outside of any
+ dialogs.
+
+ If the Request-URI or top Route header field value contains a SIPS
+ URI, the Contact header field MUST contain a SIPS URI as well.
+
+ For further information on the Contact header field, see Section
+ 20.10.
+
+8.1.1.9 Supported and Require
+
+ If the UAC supports extensions to SIP that can be applied by the
+ server to the response, the UAC SHOULD include a Supported header
+ field in the request listing the option tags (Section 19.2) for those
+ extensions.
+
+ The option tags listed MUST only refer to extensions defined in
+ standards-track RFCs. This is to prevent servers from insisting that
+ clients implement non-standard, vendor-defined features in order to
+ receive service. Extensions defined by experimental and
+ informational RFCs are explicitly excluded from usage with the
+ Supported header field in a request, since they too are often used to
+ document vendor-defined extensions.
+
+ If the UAC wishes to insist that a UAS understand an extension that
+ the UAC will apply to the request in order to process the request, it
+ MUST insert a Require header field into the request listing the
+ option tag for that extension. If the UAC wishes to apply an
+ extension to the request and insist that any proxies that are
+
+
+
+Rosenberg, et. al. Standards Track [Page 40]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ traversed understand that extension, it MUST insert a Proxy-Require
+ header field into the request listing the option tag for that
+ extension.
+
+ As with the Supported header field, the option tags in the Require
+ and Proxy-Require header fields MUST only refer to extensions defined
+ in standards-track RFCs.
+
+8.1.1.10 Additional Message Components
+
+ After a new request has been created, and the header fields described
+ above have been properly constructed, any additional optional header
+ fields are added, as are any header fields specific to the method.
+
+ SIP requests MAY contain a MIME-encoded message-body. Regardless of
+ the type of body that a request contains, certain header fields must
+ be formulated to characterize the contents of the body. For further
+ information on these header fields, see Sections 20.11 through 20.15.
+
+8.1.2 Sending the Request
+
+ The destination for the request is then computed. Unless there is
+ local policy specifying otherwise, the destination MUST be determined
+ by applying the DNS procedures described in [4] as follows. If the
+ first element in the route set indicated a strict router (resulting
+ in forming the request as described in Section 12.2.1.1), the
+ procedures MUST be applied to the Request-URI of the request.
+ Otherwise, the procedures are applied to the first Route header field
+ value in the request (if one exists), or to the request's Request-URI
+ if there is no Route header field present. These procedures yield an
+ ordered set of address, port, and transports to attempt. Independent
+ of which URI is used as input to the procedures of [4], if the
+ Request-URI specifies a SIPS resource, the UAC MUST follow the
+ procedures of [4] as if the input URI were a SIPS URI.
+
+ Local policy MAY specify an alternate set of destinations to attempt.
+ If the Request-URI contains a SIPS URI, any alternate destinations
+ MUST be contacted with TLS. Beyond that, there are no restrictions
+ on the alternate destinations if the request contains no Route header
+ field. This provides a simple alternative to a pre-existing route
+ set as a way to specify an outbound proxy. However, that approach
+ for configuring an outbound proxy is NOT RECOMMENDED; a pre-existing
+ route set with a single URI SHOULD be used instead. If the request
+ contains a Route header field, the request SHOULD be sent to the
+ locations derived from its topmost value, but MAY be sent to any
+ server that the UA is certain will honor the Route and Request-URI
+ policies specified in this document (as opposed to those in RFC
+ 2543). In particular, a UAC configured with an outbound proxy SHOULD
+
+
+
+Rosenberg, et. al. Standards Track [Page 41]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ attempt to send the request to the location indicated in the first
+ Route header field value instead of adopting the policy of sending
+ all messages to the outbound proxy.
+
+ This ensures that outbound proxies that do not add Record-Route
+ header field values will drop out of the path of subsequent
+ requests. It allows endpoints that cannot resolve the first Route
+ URI to delegate that task to an outbound proxy.
+
+ The UAC SHOULD follow the procedures defined in [4] for stateful
+ elements, trying each address until a server is contacted. Each try
+ constitutes a new transaction, and therefore each carries a different
+ topmost Via header field value with a new branch parameter.
+ Furthermore, the transport value in the Via header field is set to
+ whatever transport was determined for the target server.
+
+8.1.3 Processing Responses
+
+ Responses are first processed by the transport layer and then passed
+ up to the transaction layer. The transaction layer performs its
+ processing and then passes the response up to the TU. The majority
+ of response processing in the TU is method specific. However, there
+ are some general behaviors independent of the method.
+
+8.1.3.1 Transaction Layer Errors
+
+ In some cases, the response returned by the transaction layer will
+ not be a SIP message, but rather a transaction layer error. When a
+ timeout error is received from the transaction layer, it MUST be
+ treated as if a 408 (Request Timeout) status code has been received.
+ If a fatal transport error is reported by the transport layer
+ (generally, due to fatal ICMP errors in UDP or connection failures in
+ TCP), the condition MUST be treated as a 503 (Service Unavailable)
+ status code.
+
+8.1.3.2 Unrecognized Responses
+
+ A UAC MUST treat any final response it does not recognize as being
+ equivalent to the x00 response code of that class, and MUST be able
+ to process the x00 response code for all classes. For example, if a
+ UAC receives an unrecognized response code of 431, it can safely
+ assume that there was something wrong with its request and treat the
+ response as if it had received a 400 (Bad Request) response code. A
+ UAC MUST treat any provisional response different than 100 that it
+ does not recognize as 183 (Session Progress). A UAC MUST be able to
+ process 100 and 183 responses.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 42]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+8.1.3.3 Vias
+
+ If more than one Via header field value is present in a response, the
+ UAC SHOULD discard the message.
+
+ The presence of additional Via header field values that precede
+ the originator of the request suggests that the message was
+ misrouted or possibly corrupted.
+
+8.1.3.4 Processing 3xx Responses
+
+ Upon receipt of a redirection response (for example, a 301 response
+ status code), clients SHOULD use the URI(s) in the Contact header
+ field to formulate one or more new requests based on the redirected
+ request. This process is similar to that of a proxy recursing on a
+ 3xx class response as detailed in Sections 16.5 and 16.6. A client
+ starts with an initial target set containing exactly one URI, the
+ Request-URI of the original request. If a client wishes to formulate
+ new requests based on a 3xx class response to that request, it places
+ the URIs to try into the target set. Subject to the restrictions in
+ this specification, a client can choose which Contact URIs it places
+ into the target set. As with proxy recursion, a client processing
+ 3xx class responses MUST NOT add any given URI to the target set more
+ than once. If the original request had a SIPS URI in the Request-
+ URI, the client MAY choose to recurse to a non-SIPS URI, but SHOULD
+ inform the user of the redirection to an insecure URI.
+
+ Any new request may receive 3xx responses themselves containing
+ the original URI as a contact. Two locations can be configured to
+ redirect to each other. Placing any given URI in the target set
+ only once prevents infinite redirection loops.
+
+ As the target set grows, the client MAY generate new requests to the
+ URIs in any order. A common mechanism is to order the set by the "q"
+ parameter value from the Contact header field value. Requests to the
+ URIs MAY be generated serially or in parallel. One approach is to
+ process groups of decreasing q-values serially and process the URIs
+ in each q-value group in parallel. Another is to perform only serial
+ processing in decreasing q-value order, arbitrarily choosing between
+ contacts of equal q-value.
+
+ If contacting an address in the list results in a failure, as defined
+ in the next paragraph, the element moves to the next address in the
+ list, until the list is exhausted. If the list is exhausted, then
+ the request has failed.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 43]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Failures SHOULD be detected through failure response codes (codes
+ greater than 399); for network errors the client transaction will
+ report any transport layer failures to the transaction user. Note
+ that some response codes (detailed in 8.1.3.5) indicate that the
+ request can be retried; requests that are reattempted should not be
+ considered failures.
+
+ When a failure for a particular contact address is received, the
+ client SHOULD try the next contact address. This will involve
+ creating a new client transaction to deliver a new request.
+
+ In order to create a request based on a contact address in a 3xx
+ response, a UAC MUST copy the entire URI from the target set into the
+ Request-URI, except for the "method-param" and "header" URI
+ parameters (see Section 19.1.1 for a definition of these parameters).
+ It uses the "header" parameters to create header field values for the
+ new request, overwriting header field values associated with the
+ redirected request in accordance with the guidelines in Section
+ 19.1.5.
+
+ Note that in some instances, header fields that have been
+ communicated in the contact address may instead append to existing
+ request header fields in the original redirected request. As a
+ general rule, if the header field can accept a comma-separated list
+ of values, then the new header field value MAY be appended to any
+ existing values in the original redirected request. If the header
+ field does not accept multiple values, the value in the original
+ redirected request MAY be overwritten by the header field value
+ communicated in the contact address. For example, if a contact
+ address is returned with the following value:
+
+ sip:user@host?Subject=foo&Call-Info=<http://www.foo.com>
+
+ Then any Subject header field in the original redirected request is
+ overwritten, but the HTTP URL is merely appended to any existing
+ Call-Info header field values.
+
+ It is RECOMMENDED that the UAC reuse the same To, From, and Call-ID
+ used in the original redirected request, but the UAC MAY also choose
+ to update the Call-ID header field value for new requests, for
+ example.
+
+ Finally, once the new request has been constructed, it is sent using
+ a new client transaction, and therefore MUST have a new branch ID in
+ the top Via field as discussed in Section 8.1.1.7.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 44]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ In all other respects, requests sent upon receipt of a redirect
+ response SHOULD re-use the header fields and bodies of the original
+ request.
+
+ In some instances, Contact header field values may be cached at UAC
+ temporarily or permanently depending on the status code received and
+ the presence of an expiration interval; see Sections 21.3.2 and
+ 21.3.3.
+
+8.1.3.5 Processing 4xx Responses
+
+ Certain 4xx response codes require specific UA processing,
+ independent of the method.
+
+ If a 401 (Unauthorized) or 407 (Proxy Authentication Required)
+ response is received, the UAC SHOULD follow the authorization
+ procedures of Section 22.2 and Section 22.3 to retry the request with
+ credentials.
+
+ If a 413 (Request Entity Too Large) response is received (Section
+ 21.4.11), the request contained a body that was longer than the UAS
+ was willing to accept. If possible, the UAC SHOULD retry the
+ request, either omitting the body or using one of a smaller length.
+
+ If a 415 (Unsupported Media Type) response is received (Section
+ 21.4.13), the request contained media types not supported by the UAS.
+ The UAC SHOULD retry sending the request, this time only using
+ content with types listed in the Accept header field in the response,
+ with encodings listed in the Accept-Encoding header field in the
+ response, and with languages listed in the Accept-Language in the
+ response.
+
+ If a 416 (Unsupported URI Scheme) response is received (Section
+ 21.4.14), the Request-URI used a URI scheme not supported by the
+ server. The client SHOULD retry the request, this time, using a SIP
+ URI.
+
+ If a 420 (Bad Extension) response is received (Section 21.4.15), the
+ request contained a Require or Proxy-Require header field listing an
+ option-tag for a feature not supported by a proxy or UAS. The UAC
+ SHOULD retry the request, this time omitting any extensions listed in
+ the Unsupported header field in the response.
+
+ In all of the above cases, the request is retried by creating a new
+ request with the appropriate modifications. This new request
+ constitutes a new transaction and SHOULD have the same value of the
+ Call-ID, To, and From of the previous request, but the CSeq should
+ contain a new sequence number that is one higher than the previous.
+
+
+
+Rosenberg, et. al. Standards Track [Page 45]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ With other 4xx responses, including those yet to be defined, a retry
+ may or may not be possible depending on the method and the use case.
+
+8.2 UAS Behavior
+
+ When a request outside of a dialog is processed by a UAS, there is a
+ set of processing rules that are followed, independent of the method.
+ Section 12 gives guidance on how a UAS can tell whether a request is
+ inside or outside of a dialog.
+
+ Note that request processing is atomic. If a request is accepted,
+ all state changes associated with it MUST be performed. If it is
+ rejected, all state changes MUST NOT be performed.
+
+ UASs SHOULD process the requests in the order of the steps that
+ follow in this section (that is, starting with authentication, then
+ inspecting the method, the header fields, and so on throughout the
+ remainder of this section).
+
+8.2.1 Method Inspection
+
+ Once a request is authenticated (or authentication is skipped), the
+ UAS MUST inspect the method of the request. If the UAS recognizes
+ but does not support the method of a request, it MUST generate a 405
+ (Method Not Allowed) response. Procedures for generating responses
+ are described in Section 8.2.6. The UAS MUST also add an Allow
+ header field to the 405 (Method Not Allowed) response. The Allow
+ header field MUST list the set of methods supported by the UAS
+ generating the message. The Allow header field is presented in
+ Section 20.5.
+
+ If the method is one supported by the server, processing continues.
+
+8.2.2 Header Inspection
+
+ If a UAS does not understand a header field in a request (that is,
+ the header field is not defined in this specification or in any
+ supported extension), the server MUST ignore that header field and
+ continue processing the message. A UAS SHOULD ignore any malformed
+ header fields that are not necessary for processing requests.
+
+8.2.2.1 To and Request-URI
+
+ The To header field identifies the original recipient of the request
+ designated by the user identified in the From field. The original
+ recipient may or may not be the UAS processing the request, due to
+ call forwarding or other proxy operations. A UAS MAY apply any
+ policy it wishes to determine whether to accept requests when the To
+
+
+
+Rosenberg, et. al. Standards Track [Page 46]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ header field is not the identity of the UAS. However, it is
+ RECOMMENDED that a UAS accept requests even if they do not recognize
+ the URI scheme (for example, a tel: URI) in the To header field, or
+ if the To header field does not address a known or current user of
+ this UAS. If, on the other hand, the UAS decides to reject the
+ request, it SHOULD generate a response with a 403 (Forbidden) status
+ code and pass it to the server transaction for transmission.
+
+ However, the Request-URI identifies the UAS that is to process the
+ request. If the Request-URI uses a scheme not supported by the UAS,
+ it SHOULD reject the request with a 416 (Unsupported URI Scheme)
+ response. If the Request-URI does not identify an address that the
+ UAS is willing to accept requests for, it SHOULD reject the request
+ with a 404 (Not Found) response. Typically, a UA that uses the
+ REGISTER method to bind its address-of-record to a specific contact
+ address will see requests whose Request-URI equals that contact
+ address. Other potential sources of received Request-URIs include
+ the Contact header fields of requests and responses sent by the UA
+ that establish or refresh dialogs.
+
+8.2.2.2 Merged Requests
+
+ If the request has no tag in the To header field, the UAS core MUST
+ check the request against ongoing transactions. If the From tag,
+ Call-ID, and CSeq exactly match those associated with an ongoing
+ transaction, but the request does not match that transaction (based
+ on the matching rules in Section 17.2.3), the UAS core SHOULD
+ generate a 482 (Loop Detected) response and pass it to the server
+ transaction.
+
+ The same request has arrived at the UAS more than once, following
+ different paths, most likely due to forking. The UAS processes
+ the first such request received and responds with a 482 (Loop
+ Detected) to the rest of them.
+
+8.2.2.3 Require
+
+ Assuming the UAS decides that it is the proper element to process the
+ request, it examines the Require header field, if present.
+
+ The Require header field is used by a UAC to tell a UAS about SIP
+ extensions that the UAC expects the UAS to support in order to
+ process the request properly. Its format is described in Section
+ 20.32. If a UAS does not understand an option-tag listed in a
+ Require header field, it MUST respond by generating a response with
+ status code 420 (Bad Extension). The UAS MUST add an Unsupported
+ header field, and list in it those options it does not understand
+ amongst those in the Require header field of the request.
+
+
+
+Rosenberg, et. al. Standards Track [Page 47]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Note that Require and Proxy-Require MUST NOT be used in a SIP CANCEL
+ request, or in an ACK request sent for a non-2xx response. These
+ header fields MUST be ignored if they are present in these requests.
+
+ An ACK request for a 2xx response MUST contain only those Require and
+ Proxy-Require values that were present in the initial request.
+
+ Example:
+
+ UAC->UAS: INVITE sip:watson@bell-telephone.com SIP/2.0
+ Require: 100rel
+
+ UAS->UAC: SIP/2.0 420 Bad Extension
+ Unsupported: 100rel
+
+ This behavior ensures that the client-server interaction will
+ proceed without delay when all options are understood by both
+ sides, and only slow down if options are not understood (as in the
+ example above). For a well-matched client-server pair, the
+ interaction proceeds quickly, saving a round-trip often required
+ by negotiation mechanisms. In addition, it also removes ambiguity
+ when the client requires features that the server does not
+ understand. Some features, such as call handling fields, are only
+ of interest to end systems.
+
+8.2.3 Content Processing
+
+ Assuming the UAS understands any extensions required by the client,
+ the UAS examines the body of the message, and the header fields that
+ describe it. If there are any bodies whose type (indicated by the
+ Content-Type), language (indicated by the Content-Language) or
+ encoding (indicated by the Content-Encoding) are not understood, and
+ that body part is not optional (as indicated by the Content-
+ Disposition header field), the UAS MUST reject the request with a 415
+ (Unsupported Media Type) response. The response MUST contain an
+ Accept header field listing the types of all bodies it understands,
+ in the event the request contained bodies of types not supported by
+ the UAS. If the request contained content encodings not understood
+ by the UAS, the response MUST contain an Accept-Encoding header field
+ listing the encodings understood by the UAS. If the request
+ contained content with languages not understood by the UAS, the
+ response MUST contain an Accept-Language header field indicating the
+ languages understood by the UAS. Beyond these checks, body handling
+ depends on the method and type. For further information on the
+ processing of content-specific header fields, see Section 7.4 as well
+ as Section 20.11 through 20.15.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 48]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+8.2.4 Applying Extensions
+
+ A UAS that wishes to apply some extension when generating the
+ response MUST NOT do so unless support for that extension is
+ indicated in the Supported header field in the request. If the
+ desired extension is not supported, the server SHOULD rely only on
+ baseline SIP and any other extensions supported by the client. In
+ rare circumstances, where the server cannot process the request
+ without the extension, the server MAY send a 421 (Extension Required)
+ response. This response indicates that the proper response cannot be
+ generated without support of a specific extension. The needed
+ extension(s) MUST be included in a Require header field in the
+ response. This behavior is NOT RECOMMENDED, as it will generally
+ break interoperability.
+
+ Any extensions applied to a non-421 response MUST be listed in a
+ Require header field included in the response. Of course, the server
+ MUST NOT apply extensions not listed in the Supported header field in
+ the request. As a result of this, the Require header field in a
+ response will only ever contain option tags defined in standards-
+ track RFCs.
+
+8.2.5 Processing the Request
+
+ Assuming all of the checks in the previous subsections are passed,
+ the UAS processing becomes method-specific. Section 10 covers the
+ REGISTER request, Section 11 covers the OPTIONS request, Section 13
+ covers the INVITE request, and Section 15 covers the BYE request.
+
+8.2.6 Generating the Response
+
+ When a UAS wishes to construct a response to a request, it follows
+ the general procedures detailed in the following subsections.
+ Additional behaviors specific to the response code in question, which
+ are not detailed in this section, may also be required.
+
+ Once all procedures associated with the creation of a response have
+ been completed, the UAS hands the response back to the server
+ transaction from which it received the request.
+
+8.2.6.1 Sending a Provisional Response
+
+ One largely non-method-specific guideline for the generation of
+ responses is that UASs SHOULD NOT issue a provisional response for a
+ non-INVITE request. Rather, UASs SHOULD generate a final response to
+ a non-INVITE request as soon as possible.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 49]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ When a 100 (Trying) response is generated, any Timestamp header field
+ present in the request MUST be copied into this 100 (Trying)
+ response. If there is a delay in generating the response, the UAS
+ SHOULD add a delay value into the Timestamp value in the response.
+ This value MUST contain the difference between the time of sending of
+ the response and receipt of the request, measured in seconds.
+
+8.2.6.2 Headers and Tags
+
+ The From field of the response MUST equal the From header field of
+ the request. The Call-ID header field of the response MUST equal the
+ Call-ID header field of the request. The CSeq header field of the
+ response MUST equal the CSeq field of the request. The Via header
+ field values in the response MUST equal the Via header field values
+ in the request and MUST maintain the same ordering.
+
+ If a request contained a To tag in the request, the To header field
+ in the response MUST equal that of the request. However, if the To
+ header field in the request did not contain a tag, the URI in the To
+ header field in the response MUST equal the URI in the To header
+ field; additionally, the UAS MUST add a tag to the To header field in
+ the response (with the exception of the 100 (Trying) response, in
+ which a tag MAY be present). This serves to identify the UAS that is
+ responding, possibly resulting in a component of a dialog ID. The
+ same tag MUST be used for all responses to that request, both final
+ and provisional (again excepting the 100 (Trying)). Procedures for
+ the generation of tags are defined in Section 19.3.
+
+8.2.7 Stateless UAS Behavior
+
+ A stateless UAS is a UAS that does not maintain transaction state.
+ It replies to requests normally, but discards any state that would
+ ordinarily be retained by a UAS after a response has been sent. If a
+ stateless UAS receives a retransmission of a request, it regenerates
+ the response and resends it, just as if it were replying to the first
+ instance of the request. A UAS cannot be stateless unless the request
+ processing for that method would always result in the same response
+ if the requests are identical. This rules out stateless registrars,
+ for example. Stateless UASs do not use a transaction layer; they
+ receive requests directly from the transport layer and send responses
+ directly to the transport layer.
+
+ The stateless UAS role is needed primarily to handle unauthenticated
+ requests for which a challenge response is issued. If
+ unauthenticated requests were handled statefully, then malicious
+ floods of unauthenticated requests could create massive amounts of
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 50]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ transaction state that might slow or completely halt call processing
+ in a UAS, effectively creating a denial of service condition; for
+ more information see Section 26.1.5.
+
+ The most important behaviors of a stateless UAS are the following:
+
+ o A stateless UAS MUST NOT send provisional (1xx) responses.
+
+ o A stateless UAS MUST NOT retransmit responses.
+
+ o A stateless UAS MUST ignore ACK requests.
+
+ o A stateless UAS MUST ignore CANCEL requests.
+
+ o To header tags MUST be generated for responses in a stateless
+ manner - in a manner that will generate the same tag for the
+ same request consistently. For information on tag construction
+ see Section 19.3.
+
+ In all other respects, a stateless UAS behaves in the same manner as
+ a stateful UAS. A UAS can operate in either a stateful or stateless
+ mode for each new request.
+
+8.3 Redirect Servers
+
+ In some architectures it may be desirable to reduce the processing
+ load on proxy servers that are responsible for routing requests, and
+ improve signaling path robustness, by relying on redirection.
+
+ Redirection allows servers to push routing information for a request
+ back in a response to the client, thereby taking themselves out of
+ the loop of further messaging for this transaction while still aiding
+ in locating the target of the request. When the originator of the
+ request receives the redirection, it will send a new request based on
+ the URI(s) it has received. By propagating URIs from the core of the
+ network to its edges, redirection allows for considerable network
+ scalability.
+
+ A redirect server is logically constituted of a server transaction
+ layer and a transaction user that has access to a location service of
+ some kind (see Section 10 for more on registrars and location
+ services). This location service is effectively a database
+ containing mappings between a single URI and a set of one or more
+ alternative locations at which the target of that URI can be found.
+
+ A redirect server does not issue any SIP requests of its own. After
+ receiving a request other than CANCEL, the server either refuses the
+ request or gathers the list of alternative locations from the
+
+
+
+Rosenberg, et. al. Standards Track [Page 51]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ location service and returns a final response of class 3xx. For
+ well-formed CANCEL requests, it SHOULD return a 2xx response. This
+ response ends the SIP transaction. The redirect server maintains
+ transaction state for an entire SIP transaction. It is the
+ responsibility of clients to detect forwarding loops between redirect
+ servers.
+
+ When a redirect server returns a 3xx response to a request, it
+ populates the list of (one or more) alternative locations into the
+ Contact header field. An "expires" parameter to the Contact header
+ field values may also be supplied to indicate the lifetime of the
+ Contact data.
+
+ The Contact header field contains URIs giving the new locations or
+ user names to try, or may simply specify additional transport
+ parameters. A 301 (Moved Permanently) or 302 (Moved Temporarily)
+ response may also give the same location and username that was
+ targeted by the initial request but specify additional transport
+ parameters such as a different server or multicast address to try, or
+ a change of SIP transport from UDP to TCP or vice versa.
+
+ However, redirect servers MUST NOT redirect a request to a URI equal
+ to the one in the Request-URI; instead, provided that the URI does
+ not point to itself, the server MAY proxy the request to the
+ destination URI, or MAY reject it with a 404.
+
+ If a client is using an outbound proxy, and that proxy actually
+ redirects requests, a potential arises for infinite redirection
+ loops.
+
+ Note that a Contact header field value MAY also refer to a different
+ resource than the one originally called. For example, a SIP call
+ connected to PSTN gateway may need to deliver a special informational
+ announcement such as "The number you have dialed has been changed."
+
+ A Contact response header field can contain any suitable URI
+ indicating where the called party can be reached, not limited to SIP
+ URIs. For example, it could contain URIs for phones, fax, or irc (if
+ they were defined) or a mailto: (RFC 2368 [32]) URL. Section 26.4.4
+ discusses implications and limitations of redirecting a SIPS URI to a
+ non-SIPS URI.
+
+ The "expires" parameter of a Contact header field value indicates how
+ long the URI is valid. The value of the parameter is a number
+ indicating seconds. If this parameter is not provided, the value of
+ the Expires header field determines how long the URI is valid.
+ Malformed values SHOULD be treated as equivalent to 3600.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 52]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ This provides a modest level of backwards compatibility with RFC
+ 2543, which allowed absolute times in this header field. If an
+ absolute time is received, it will be treated as malformed, and
+ then default to 3600.
+
+ Redirect servers MUST ignore features that are not understood
+ (including unrecognized header fields, any unknown option tags in
+ Require, or even method names) and proceed with the redirection of
+ the request in question.
+
+9 Canceling a Request
+
+ The previous section has discussed general UA behavior for generating
+ requests and processing responses for requests of all methods. In
+ this section, we discuss a general purpose method, called CANCEL.
+
+ The CANCEL request, as the name implies, is used to cancel a previous
+ request sent by a client. Specifically, it asks the UAS to cease
+ processing the request and to generate an error response to that
+ request. CANCEL has no effect on a request to which a UAS has
+ already given a final response. Because of this, it is most useful
+ to CANCEL requests to which it can take a server long time to
+ respond. For this reason, CANCEL is best for INVITE requests, which
+ can take a long time to generate a response. In that usage, a UAS
+ that receives a CANCEL request for an INVITE, but has not yet sent a
+ final response, would "stop ringing", and then respond to the INVITE
+ with a specific error response (a 487).
+
+ CANCEL requests can be constructed and sent by both proxies and user
+ agent clients. Section 15 discusses under what conditions a UAC
+ would CANCEL an INVITE request, and Section 16.10 discusses proxy
+ usage of CANCEL.
+
+ A stateful proxy responds to a CANCEL, rather than simply forwarding
+ a response it would receive from a downstream element. For that
+ reason, CANCEL is referred to as a "hop-by-hop" request, since it is
+ responded to at each stateful proxy hop.
+
+9.1 Client Behavior
+
+ A CANCEL request SHOULD NOT be sent to cancel a request other than
+ INVITE.
+
+ Since requests other than INVITE are responded to immediately,
+ sending a CANCEL for a non-INVITE request would always create a
+ race condition.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 53]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The following procedures are used to construct a CANCEL request. The
+ Request-URI, Call-ID, To, the numeric part of CSeq, and From header
+ fields in the CANCEL request MUST be identical to those in the
+ request being cancelled, including tags. A CANCEL constructed by a
+ client MUST have only a single Via header field value matching the
+ top Via value in the request being cancelled. Using the same values
+ for these header fields allows the CANCEL to be matched with the
+ request it cancels (Section 9.2 indicates how such matching occurs).
+ However, the method part of the CSeq header field MUST have a value
+ of CANCEL. This allows it to be identified and processed as a
+ transaction in its own right (See Section 17).
+
+ If the request being cancelled contains a Route header field, the
+ CANCEL request MUST include that Route header field's values.
+
+ This is needed so that stateless proxies are able to route CANCEL
+ requests properly.
+
+ The CANCEL request MUST NOT contain any Require or Proxy-Require
+ header fields.
+
+ Once the CANCEL is constructed, the client SHOULD check whether it
+ has received any response (provisional or final) for the request
+ being cancelled (herein referred to as the "original request").
+
+ If no provisional response has been received, the CANCEL request MUST
+ NOT be sent; rather, the client MUST wait for the arrival of a
+ provisional response before sending the request. If the original
+ request has generated a final response, the CANCEL SHOULD NOT be
+ sent, as it is an effective no-op, since CANCEL has no effect on
+ requests that have already generated a final response. When the
+ client decides to send the CANCEL, it creates a client transaction
+ for the CANCEL and passes it the CANCEL request along with the
+ destination address, port, and transport. The destination address,
+ port, and transport for the CANCEL MUST be identical to those used to
+ send the original request.
+
+ If it was allowed to send the CANCEL before receiving a response
+ for the previous request, the server could receive the CANCEL
+ before the original request.
+
+ Note that both the transaction corresponding to the original request
+ and the CANCEL transaction will complete independently. However, a
+ UAC canceling a request cannot rely on receiving a 487 (Request
+ Terminated) response for the original request, as an RFC 2543-
+ compliant UAS will not generate such a response. If there is no
+ final response for the original request in 64*T1 seconds (T1 is
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 54]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ defined in Section 17.1.1.1), the client SHOULD then consider the
+ original transaction cancelled and SHOULD destroy the client
+ transaction handling the original request.
+
+9.2 Server Behavior
+
+ The CANCEL method requests that the TU at the server side cancel a
+ pending transaction. The TU determines the transaction to be
+ cancelled by taking the CANCEL request, and then assuming that the
+ request method is anything but CANCEL or ACK and applying the
+ transaction matching procedures of Section 17.2.3. The matching
+ transaction is the one to be cancelled.
+
+ The processing of a CANCEL request at a server depends on the type of
+ server. A stateless proxy will forward it, a stateful proxy might
+ respond to it and generate some CANCEL requests of its own, and a UAS
+ will respond to it. See Section 16.10 for proxy treatment of CANCEL.
+
+ A UAS first processes the CANCEL request according to the general UAS
+ processing described in Section 8.2. However, since CANCEL requests
+ are hop-by-hop and cannot be resubmitted, they cannot be challenged
+ by the server in order to get proper credentials in an Authorization
+ header field. Note also that CANCEL requests do not contain a
+ Require header field.
+
+ If the UAS did not find a matching transaction for the CANCEL
+ according to the procedure above, it SHOULD respond to the CANCEL
+ with a 481 (Call Leg/Transaction Does Not Exist). If the transaction
+ for the original request still exists, the behavior of the UAS on
+ receiving a CANCEL request depends on whether it has already sent a
+ final response for the original request. If it has, the CANCEL
+ request has no effect on the processing of the original request, no
+ effect on any session state, and no effect on the responses generated
+ for the original request. If the UAS has not issued a final response
+ for the original request, its behavior depends on the method of the
+ original request. If the original request was an INVITE, the UAS
+ SHOULD immediately respond to the INVITE with a 487 (Request
+ Terminated). A CANCEL request has no impact on the processing of
+ transactions with any other method defined in this specification.
+
+ Regardless of the method of the original request, as long as the
+ CANCEL matched an existing transaction, the UAS answers the CANCEL
+ request itself with a 200 (OK) response. This response is
+ constructed following the procedures described in Section 8.2.6
+ noting that the To tag of the response to the CANCEL and the To tag
+ in the response to the original request SHOULD be the same. The
+ response to CANCEL is passed to the server transaction for
+ transmission.
+
+
+
+Rosenberg, et. al. Standards Track [Page 55]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+10 Registrations
+
+10.1 Overview
+
+ SIP offers a discovery capability. If a user wants to initiate a
+ session with another user, SIP must discover the current host(s) at
+ which the destination user is reachable. This discovery process is
+ frequently accomplished by SIP network elements such as proxy servers
+ and redirect servers which are responsible for receiving a request,
+ determining where to send it based on knowledge of the location of
+ the user, and then sending it there. To do this, SIP network
+ elements consult an abstract service known as a location service,
+ which provides address bindings for a particular domain. These
+ address bindings map an incoming SIP or SIPS URI, sip:bob@biloxi.com,
+ for example, to one or more URIs that are somehow "closer" to the
+ desired user, sip:bob@engineering.biloxi.com, for example.
+ Ultimately, a proxy will consult a location service that maps a
+ received URI to the user agent(s) at which the desired recipient is
+ currently residing.
+
+ Registration creates bindings in a location service for a particular
+ domain that associates an address-of-record URI with one or more
+ contact addresses. Thus, when a proxy for that domain receives a
+ request whose Request-URI matches the address-of-record, the proxy
+ will forward the request to the contact addresses registered to that
+ address-of-record. Generally, it only makes sense to register an
+ address-of-record at a domain's location service when requests for
+ that address-of-record would be routed to that domain. In most
+ cases, this means that the domain of the registration will need to
+ match the domain in the URI of the address-of-record.
+
+ There are many ways by which the contents of the location service can
+ be established. One way is administratively. In the above example,
+ Bob is known to be a member of the engineering department through
+ access to a corporate database. However, SIP provides a mechanism
+ for a UA to create a binding explicitly. This mechanism is known as
+ registration.
+
+ Registration entails sending a REGISTER request to a special type of
+ UAS known as a registrar. A registrar acts as the front end to the
+ location service for a domain, reading and writing mappings based on
+ the contents of REGISTER requests. This location service is then
+ typically consulted by a proxy server that is responsible for routing
+ requests for that domain.
+
+ An illustration of the overall registration process is given in
+ Figure 2. Note that the registrar and proxy server are logical roles
+ that can be played by a single device in a network; for purposes of
+
+
+
+Rosenberg, et. al. Standards Track [Page 56]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ clarity the two are separated in this illustration. Also note that
+ UAs may send requests through a proxy server in order to reach a
+ registrar if the two are separate elements.
+
+ SIP does not mandate a particular mechanism for implementing the
+ location service. The only requirement is that a registrar for some
+ domain MUST be able to read and write data to the location service,
+ and a proxy or a redirect server for that domain MUST be capable of
+ reading that same data. A registrar MAY be co-located with a
+ particular SIP proxy server for the same domain.
+
+10.2 Constructing the REGISTER Request
+
+ REGISTER requests add, remove, and query bindings. A REGISTER
+ request can add a new binding between an address-of-record and one or
+ more contact addresses. Registration on behalf of a particular
+ address-of-record can be performed by a suitably authorized third
+ party. A client can also remove previous bindings or query to
+ determine which bindings are currently in place for an address-of-
+ record.
+
+ Except as noted, the construction of the REGISTER request and the
+ behavior of clients sending a REGISTER request is identical to the
+ general UAC behavior described in Section 8.1 and Section 17.1.
+
+ A REGISTER request does not establish a dialog. A UAC MAY include a
+ Route header field in a REGISTER request based on a pre-existing
+ route set as described in Section 8.1. The Record-Route header field
+ has no meaning in REGISTER requests or responses, and MUST be ignored
+ if present. In particular, the UAC MUST NOT create a new route set
+ based on the presence or absence of a Record-Route header field in
+ any response to a REGISTER request.
+
+ The following header fields, except Contact, MUST be included in a
+ REGISTER request. A Contact header field MAY be included:
+
+ Request-URI: The Request-URI names the domain of the location
+ service for which the registration is meant (for example,
+ "sip:chicago.com"). The "userinfo" and "@" components of the
+ SIP URI MUST NOT be present.
+
+ To: The To header field contains the address of record whose
+ registration is to be created, queried, or modified. The To
+ header field and the Request-URI field typically differ, as
+ the former contains a user name. This address-of-record MUST
+ be a SIP URI or SIPS URI.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 57]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ From: The From header field contains the address-of-record of the
+ person responsible for the registration. The value is the
+ same as the To header field unless the request is a third-
+ party registration.
+
+ Call-ID: All registrations from a UAC SHOULD use the same Call-ID
+ header field value for registrations sent to a particular
+ registrar.
+
+ If the same client were to use different Call-ID values, a
+ registrar could not detect whether a delayed REGISTER request
+ might have arrived out of order.
+
+ CSeq: The CSeq value guarantees proper ordering of REGISTER
+ requests. A UA MUST increment the CSeq value by one for each
+ REGISTER request with the same Call-ID.
+
+ Contact: REGISTER requests MAY contain a Contact header field with
+ zero or more values containing address bindings.
+
+ UAs MUST NOT send a new registration (that is, containing new Contact
+ header field values, as opposed to a retransmission) until they have
+ received a final response from the registrar for the previous one or
+ the previous REGISTER request has timed out.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 58]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ bob
+ +----+
+ | UA |
+ | |
+ +----+
+ |
+ |3)INVITE
+ | carol@chicago.com
+ chicago.com +--------+ V
+ +---------+ 2)Store|Location|4)Query +-----+
+ |Registrar|=======>| Service|<=======|Proxy|sip.chicago.com
+ +---------+ +--------+=======>+-----+
+ A 5)Resp |
+ | |
+ | |
+ 1)REGISTER| |
+ | |
+ +----+ |
+ | UA |<-------------------------------+
+ cube2214a| | 6)INVITE
+ +----+ carol@cube2214a.chicago.com
+ carol
+
+ Figure 2: REGISTER example
+
+ The following Contact header parameters have a special meaning in
+ REGISTER requests:
+
+ action: The "action" parameter from RFC 2543 has been deprecated.
+ UACs SHOULD NOT use the "action" parameter.
+
+ expires: The "expires" parameter indicates how long the UA would
+ like the binding to be valid. The value is a number
+ indicating seconds. If this parameter is not provided, the
+ value of the Expires header field is used instead.
+ Implementations MAY treat values larger than 2**32-1
+ (4294967295 seconds or 136 years) as equivalent to 2**32-1.
+ Malformed values SHOULD be treated as equivalent to 3600.
+
+10.2.1 Adding Bindings
+
+ The REGISTER request sent to a registrar includes the contact
+ address(es) to which SIP requests for the address-of-record should be
+ forwarded. The address-of-record is included in the To header field
+ of the REGISTER request.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 59]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The Contact header field values of the request typically consist of
+ SIP or SIPS URIs that identify particular SIP endpoints (for example,
+ "sip:carol@cube2214a.chicago.com"), but they MAY use any URI scheme.
+ A SIP UA can choose to register telephone numbers (with the tel URL,
+ RFC 2806 [9]) or email addresses (with a mailto URL, RFC 2368 [32])
+ as Contacts for an address-of-record, for example.
+
+ For example, Carol, with address-of-record "sip:carol@chicago.com",
+ would register with the SIP registrar of the domain chicago.com. Her
+ registrations would then be used by a proxy server in the chicago.com
+ domain to route requests for Carol's address-of-record to her SIP
+ endpoint.
+
+ Once a client has established bindings at a registrar, it MAY send
+ subsequent registrations containing new bindings or modifications to
+ existing bindings as necessary. The 2xx response to the REGISTER
+ request will contain, in a Contact header field, a complete list of
+ bindings that have been registered for this address-of-record at this
+ registrar.
+
+ If the address-of-record in the To header field of a REGISTER request
+ is a SIPS URI, then any Contact header field values in the request
+ SHOULD also be SIPS URIs. Clients should only register non-SIPS URIs
+ under a SIPS address-of-record when the security of the resource
+ represented by the contact address is guaranteed by other means.
+ This may be applicable to URIs that invoke protocols other than SIP,
+ or SIP devices secured by protocols other than TLS.
+
+ Registrations do not need to update all bindings. Typically, a UA
+ only updates its own contact addresses.
+
+10.2.1.1 Setting the Expiration Interval of Contact Addresses
+
+ When a client sends a REGISTER request, it MAY suggest an expiration
+ interval that indicates how long the client would like the
+ registration to be valid. (As described in Section 10.3, the
+ registrar selects the actual time interval based on its local
+ policy.)
+
+ There are two ways in which a client can suggest an expiration
+ interval for a binding: through an Expires header field or an
+ "expires" Contact header parameter. The latter allows expiration
+ intervals to be suggested on a per-binding basis when more than one
+ binding is given in a single REGISTER request, whereas the former
+ suggests an expiration interval for all Contact header field values
+ that do not contain the "expires" parameter.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 60]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ If neither mechanism for expressing a suggested expiration time is
+ present in a REGISTER, the client is indicating its desire for the
+ server to choose.
+
+10.2.1.2 Preferences among Contact Addresses
+
+ If more than one Contact is sent in a REGISTER request, the
+ registering UA intends to associate all of the URIs in these Contact
+ header field values with the address-of-record present in the To
+ field. This list can be prioritized with the "q" parameter in the
+ Contact header field. The "q" parameter indicates a relative
+ preference for the particular Contact header field value compared to
+ other bindings for this address-of-record. Section 16.6 describes
+ how a proxy server uses this preference indication.
+
+10.2.2 Removing Bindings
+
+ Registrations are soft state and expire unless refreshed, but can
+ also be explicitly removed. A client can attempt to influence the
+ expiration interval selected by the registrar as described in Section
+ 10.2.1. A UA requests the immediate removal of a binding by
+ specifying an expiration interval of "0" for that contact address in
+ a REGISTER request. UAs SHOULD support this mechanism so that
+ bindings can be removed before their expiration interval has passed.
+
+ The REGISTER-specific Contact header field value of "*" applies to
+ all registrations, but it MUST NOT be used unless the Expires header
+ field is present with a value of "0".
+
+ Use of the "*" Contact header field value allows a registering UA
+ to remove all bindings associated with an address-of-record
+ without knowing their precise values.
+
+10.2.3 Fetching Bindings
+
+ A success response to any REGISTER request contains the complete list
+ of existing bindings, regardless of whether the request contained a
+ Contact header field. If no Contact header field is present in a
+ REGISTER request, the list of bindings is left unchanged.
+
+10.2.4 Refreshing Bindings
+
+ Each UA is responsible for refreshing the bindings that it has
+ previously established. A UA SHOULD NOT refresh bindings set up by
+ other UAs.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 61]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The 200 (OK) response from the registrar contains a list of Contact
+ fields enumerating all current bindings. The UA compares each
+ contact address to see if it created the contact address, using
+ comparison rules in Section 19.1.4. If so, it updates the expiration
+ time interval according to the expires parameter or, if absent, the
+ Expires field value. The UA then issues a REGISTER request for each
+ of its bindings before the expiration interval has elapsed. It MAY
+ combine several updates into one REGISTER request.
+
+ A UA SHOULD use the same Call-ID for all registrations during a
+ single boot cycle. Registration refreshes SHOULD be sent to the same
+ network address as the original registration, unless redirected.
+
+10.2.5 Setting the Internal Clock
+
+ If the response for a REGISTER request contains a Date header field,
+ the client MAY use this header field to learn the current time in
+ order to set any internal clocks.
+
+10.2.6 Discovering a Registrar
+
+ UAs can use three ways to determine the address to which to send
+ registrations: by configuration, using the address-of-record, and
+ multicast. A UA can be configured, in ways beyond the scope of this
+ specification, with a registrar address. If there is no configured
+ registrar address, the UA SHOULD use the host part of the address-
+ of-record as the Request-URI and address the request there, using the
+ normal SIP server location mechanisms [4]. For example, the UA for
+ the user "sip:carol@chicago.com" addresses the REGISTER request to
+ "sip:chicago.com".
+
+ Finally, a UA can be configured to use multicast. Multicast
+ registrations are addressed to the well-known "all SIP servers"
+ multicast address "sip.mcast.net" (224.0.1.75 for IPv4). No well-
+ known IPv6 multicast address has been allocated; such an allocation
+ will be documented separately when needed. SIP UAs MAY listen to
+ that address and use it to become aware of the location of other
+ local users (see [33]); however, they do not respond to the request.
+
+ Multicast registration may be inappropriate in some environments,
+ for example, if multiple businesses share the same local area
+ network.
+
+10.2.7 Transmitting a Request
+
+ Once the REGISTER method has been constructed, and the destination of
+ the message identified, UACs follow the procedures described in
+ Section 8.1.2 to hand off the REGISTER to the transaction layer.
+
+
+
+Rosenberg, et. al. Standards Track [Page 62]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ If the transaction layer returns a timeout error because the REGISTER
+ yielded no response, the UAC SHOULD NOT immediately re-attempt a
+ registration to the same registrar.
+
+ An immediate re-attempt is likely to also timeout. Waiting some
+ reasonable time interval for the conditions causing the timeout to
+ be corrected reduces unnecessary load on the network. No specific
+ interval is mandated.
+
+10.2.8 Error Responses
+
+ If a UA receives a 423 (Interval Too Brief) response, it MAY retry
+ the registration after making the expiration interval of all contact
+ addresses in the REGISTER request equal to or greater than the
+ expiration interval within the Min-Expires header field of the 423
+ (Interval Too Brief) response.
+
+10.3 Processing REGISTER Requests
+
+ A registrar is a UAS that responds to REGISTER requests and maintains
+ a list of bindings that are accessible to proxy servers and redirect
+ servers within its administrative domain. A registrar handles
+ requests according to Section 8.2 and Section 17.2, but it accepts
+ only REGISTER requests. A registrar MUST not generate 6xx responses.
+
+ A registrar MAY redirect REGISTER requests as appropriate. One
+ common usage would be for a registrar listening on a multicast
+ interface to redirect multicast REGISTER requests to its own unicast
+ interface with a 302 (Moved Temporarily) response.
+
+ Registrars MUST ignore the Record-Route header field if it is
+ included in a REGISTER request. Registrars MUST NOT include a
+ Record-Route header field in any response to a REGISTER request.
+
+ A registrar might receive a request that traversed a proxy which
+ treats REGISTER as an unknown request and which added a Record-
+ Route header field value.
+
+ A registrar has to know (for example, through configuration) the set
+ of domain(s) for which it maintains bindings. REGISTER requests MUST
+ be processed by a registrar in the order that they are received.
+ REGISTER requests MUST also be processed atomically, meaning that a
+ particular REGISTER request is either processed completely or not at
+ all. Each REGISTER message MUST be processed independently of any
+ other registration or binding changes.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 63]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ When receiving a REGISTER request, a registrar follows these steps:
+
+ 1. The registrar inspects the Request-URI to determine whether it
+ has access to bindings for the domain identified in the
+ Request-URI. If not, and if the server also acts as a proxy
+ server, the server SHOULD forward the request to the addressed
+ domain, following the general behavior for proxying messages
+ described in Section 16.
+
+ 2. To guarantee that the registrar supports any necessary
+ extensions, the registrar MUST process the Require header field
+ values as described for UASs in Section 8.2.2.
+
+ 3. A registrar SHOULD authenticate the UAC. Mechanisms for the
+ authentication of SIP user agents are described in Section 22.
+ Registration behavior in no way overrides the generic
+ authentication framework for SIP. If no authentication
+ mechanism is available, the registrar MAY take the From address
+ as the asserted identity of the originator of the request.
+
+ 4. The registrar SHOULD determine if the authenticated user is
+ authorized to modify registrations for this address-of-record.
+ For example, a registrar might consult an authorization
+ database that maps user names to a list of addresses-of-record
+ for which that user has authorization to modify bindings. If
+ the authenticated user is not authorized to modify bindings,
+ the registrar MUST return a 403 (Forbidden) and skip the
+ remaining steps.
+
+ In architectures that support third-party registration, one
+ entity may be responsible for updating the registrations
+ associated with multiple addresses-of-record.
+
+ 5. The registrar extracts the address-of-record from the To header
+ field of the request. If the address-of-record is not valid
+ for the domain in the Request-URI, the registrar MUST send a
+ 404 (Not Found) response and skip the remaining steps. The URI
+ MUST then be converted to a canonical form. To do that, all
+ URI parameters MUST be removed (including the user-param), and
+ any escaped characters MUST be converted to their unescaped
+ form. The result serves as an index into the list of bindings.
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 64]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ 6. The registrar checks whether the request contains the Contact
+ header field. If not, it skips to the last step. If the
+ Contact header field is present, the registrar checks if there
+ is one Contact field value that contains the special value "*"
+ and an Expires field. If the request has additional Contact
+ fields or an expiration time other than zero, the request is
+ invalid, and the server MUST return a 400 (Invalid Request) and
+ skip the remaining steps. If not, the registrar checks whether
+ the Call-ID agrees with the value stored for each binding. If
+ not, it MUST remove the binding. If it does agree, it MUST
+ remove the binding only if the CSeq in the request is higher
+ than the value stored for that binding. Otherwise, the update
+ MUST be aborted and the request fails.
+
+ 7. The registrar now processes each contact address in the Contact
+ header field in turn. For each address, it determines the
+ expiration interval as follows:
+
+ - If the field value has an "expires" parameter, that value
+ MUST be taken as the requested expiration.
+
+ - If there is no such parameter, but the request has an
+ Expires header field, that value MUST be taken as the
+ requested expiration.
+
+ - If there is neither, a locally-configured default value MUST
+ be taken as the requested expiration.
+
+ The registrar MAY choose an expiration less than the requested
+ expiration interval. If and only if the requested expiration
+ interval is greater than zero AND smaller than one hour AND
+ less than a registrar-configured minimum, the registrar MAY
+ reject the registration with a response of 423 (Interval Too
+ Brief). This response MUST contain a Min-Expires header field
+ that states the minimum expiration interval the registrar is
+ willing to honor. It then skips the remaining steps.
+
+ Allowing the registrar to set the registration interval
+ protects it against excessively frequent registration refreshes
+ while limiting the state that it needs to maintain and
+ decreasing the likelihood of registrations going stale. The
+ expiration interval of a registration is frequently used in the
+ creation of services. An example is a follow-me service, where
+ the user may only be available at a terminal for a brief
+ period. Therefore, registrars should accept brief
+ registrations; a request should only be rejected if the
+ interval is so short that the refreshes would degrade registrar
+ performance.
+
+
+
+Rosenberg, et. al. Standards Track [Page 65]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ For each address, the registrar then searches the list of
+ current bindings using the URI comparison rules. If the
+ binding does not exist, it is tentatively added. If the
+ binding does exist, the registrar checks the Call-ID value. If
+ the Call-ID value in the existing binding differs from the
+ Call-ID value in the request, the binding MUST be removed if
+ the expiration time is zero and updated otherwise. If they are
+ the same, the registrar compares the CSeq value. If the value
+ is higher than that of the existing binding, it MUST update or
+ remove the binding as above. If not, the update MUST be
+ aborted and the request fails.
+
+ This algorithm ensures that out-of-order requests from the same
+ UA are ignored.
+
+ Each binding record records the Call-ID and CSeq values from
+ the request.
+
+ The binding updates MUST be committed (that is, made visible to
+ the proxy or redirect server) if and only if all binding
+ updates and additions succeed. If any one of them fails (for
+ example, because the back-end database commit failed), the
+ request MUST fail with a 500 (Server Error) response and all
+ tentative binding updates MUST be removed.
+
+ 8. The registrar returns a 200 (OK) response. The response MUST
+ contain Contact header field values enumerating all current
+ bindings. Each Contact value MUST feature an "expires"
+ parameter indicating its expiration interval chosen by the
+ registrar. The response SHOULD include a Date header field.
+
+11 Querying for Capabilities
+
+ The SIP method OPTIONS allows a UA to query another UA or a proxy
+ server as to its capabilities. This allows a client to discover
+ information about the supported methods, content types, extensions,
+ codecs, etc. without "ringing" the other party. For example, before
+ a client inserts a Require header field into an INVITE listing an
+ option that it is not certain the destination UAS supports, the
+ client can query the destination UAS with an OPTIONS to see if this
+ option is returned in a Supported header field. All UAs MUST support
+ the OPTIONS method.
+
+ The target of the OPTIONS request is identified by the Request-URI,
+ which could identify another UA or a SIP server. If the OPTIONS is
+ addressed to a proxy server, the Request-URI is set without a user
+ part, similar to the way a Request-URI is set for a REGISTER request.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 66]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Alternatively, a server receiving an OPTIONS request with a Max-
+ Forwards header field value of 0 MAY respond to the request
+ regardless of the Request-URI.
+
+ This behavior is common with HTTP/1.1. This behavior can be used
+ as a "traceroute" functionality to check the capabilities of
+ individual hop servers by sending a series of OPTIONS requests
+ with incremented Max-Forwards values.
+
+ As is the case for general UA behavior, the transaction layer can
+ return a timeout error if the OPTIONS yields no response. This may
+ indicate that the target is unreachable and hence unavailable.
+
+ An OPTIONS request MAY be sent as part of an established dialog to
+ query the peer on capabilities that may be utilized later in the
+ dialog.
+
+11.1 Construction of OPTIONS Request
+
+ An OPTIONS request is constructed using the standard rules for a SIP
+ request as discussed in Section 8.1.1.
+
+ A Contact header field MAY be present in an OPTIONS.
+
+ An Accept header field SHOULD be included to indicate the type of
+ message body the UAC wishes to receive in the response. Typically,
+ this is set to a format that is used to describe the media
+ capabilities of a UA, such as SDP (application/sdp).
+
+ The response to an OPTIONS request is assumed to be scoped to the
+ Request-URI in the original request. However, only when an OPTIONS
+ is sent as part of an established dialog is it guaranteed that future
+ requests will be received by the server that generated the OPTIONS
+ response.
+
+ Example OPTIONS request:
+
+ OPTIONS sip:carol@chicago.com SIP/2.0
+ Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKhjhs8ass877
+ Max-Forwards: 70
+ To: <sip:carol@chicago.com>
+ From: Alice <sip:alice@atlanta.com>;tag=1928301774
+ Call-ID: a84b4c76e66710
+ CSeq: 63104 OPTIONS
+ Contact: <sip:alice@pc33.atlanta.com>
+ Accept: application/sdp
+ Content-Length: 0
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 67]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+11.2 Processing of OPTIONS Request
+
+ The response to an OPTIONS is constructed using the standard rules
+ for a SIP response as discussed in Section 8.2.6. The response code
+ chosen MUST be the same that would have been chosen had the request
+ been an INVITE. That is, a 200 (OK) would be returned if the UAS is
+ ready to accept a call, a 486 (Busy Here) would be returned if the
+ UAS is busy, etc. This allows an OPTIONS request to be used to
+ determine the basic state of a UAS, which can be an indication of
+ whether the UAS will accept an INVITE request.
+
+ An OPTIONS request received within a dialog generates a 200 (OK)
+ response that is identical to one constructed outside a dialog and
+ does not have any impact on the dialog.
+
+ This use of OPTIONS has limitations due to the differences in proxy
+ handling of OPTIONS and INVITE requests. While a forked INVITE can
+ result in multiple 200 (OK) responses being returned, a forked
+ OPTIONS will only result in a single 200 (OK) response, since it is
+ treated by proxies using the non-INVITE handling. See Section 16.7
+ for the normative details.
+
+ If the response to an OPTIONS is generated by a proxy server, the
+ proxy returns a 200 (OK), listing the capabilities of the server.
+ The response does not contain a message body.
+
+ Allow, Accept, Accept-Encoding, Accept-Language, and Supported header
+ fields SHOULD be present in a 200 (OK) response to an OPTIONS
+ request. If the response is generated by a proxy, the Allow header
+ field SHOULD be omitted as it is ambiguous since a proxy is method
+ agnostic. Contact header fields MAY be present in a 200 (OK)
+ response and have the same semantics as in a 3xx response. That is,
+ they may list a set of alternative names and methods of reaching the
+ user. A Warning header field MAY be present.
+
+ A message body MAY be sent, the type of which is determined by the
+ Accept header field in the OPTIONS request (application/sdp is the
+ default if the Accept header field is not present). If the types
+ include one that can describe media capabilities, the UAS SHOULD
+ include a body in the response for that purpose. Details on the
+ construction of such a body in the case of application/sdp are
+ described in [13].
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 68]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Example OPTIONS response generated by a UAS (corresponding to the
+ request in Section 11.1):
+
+ SIP/2.0 200 OK
+ Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKhjhs8ass877
+ ;received=192.0.2.4
+ To: <sip:carol@chicago.com>;tag=93810874
+ From: Alice <sip:alice@atlanta.com>;tag=1928301774
+ Call-ID: a84b4c76e66710
+ CSeq: 63104 OPTIONS
+ Contact: <sip:carol@chicago.com>
+ Contact: <mailto:carol@chicago.com>
+ Allow: INVITE, ACK, CANCEL, OPTIONS, BYE
+ Accept: application/sdp
+ Accept-Encoding: gzip
+ Accept-Language: en
+ Supported: foo
+ Content-Type: application/sdp
+ Content-Length: 274
+
+ (SDP not shown)
+
+12 Dialogs
+
+ A key concept for a user agent is that of a dialog. A dialog
+ represents a peer-to-peer SIP relationship between two user agents
+ that persists for some time. The dialog facilitates sequencing of
+ messages between the user agents and proper routing of requests
+ between both of them. The dialog represents a context in which to
+ interpret SIP messages. Section 8 discussed method independent UA
+ processing for requests and responses outside of a dialog. This
+ section discusses how those requests and responses are used to
+ construct a dialog, and then how subsequent requests and responses
+ are sent within a dialog.
+
+ A dialog is identified at each UA with a dialog ID, which consists of
+ a Call-ID value, a local tag and a remote tag. The dialog ID at each
+ UA involved in the dialog is not the same. Specifically, the local
+ tag at one UA is identical to the remote tag at the peer UA. The
+ tags are opaque tokens that facilitate the generation of unique
+ dialog IDs.
+
+ A dialog ID is also associated with all responses and with any
+ request that contains a tag in the To field. The rules for computing
+ the dialog ID of a message depend on whether the SIP element is a UAC
+ or UAS. For a UAC, the Call-ID value of the dialog ID is set to the
+ Call-ID of the message, the remote tag is set to the tag in the To
+ field of the message, and the local tag is set to the tag in the From
+
+
+
+Rosenberg, et. al. Standards Track [Page 69]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ field of the message (these rules apply to both requests and
+ responses). As one would expect for a UAS, the Call-ID value of the
+ dialog ID is set to the Call-ID of the message, the remote tag is set
+ to the tag in the From field of the message, and the local tag is set
+ to the tag in the To field of the message.
+
+ A dialog contains certain pieces of state needed for further message
+ transmissions within the dialog. This state consists of the dialog
+ ID, a local sequence number (used to order requests from the UA to
+ its peer), a remote sequence number (used to order requests from its
+ peer to the UA), a local URI, a remote URI, remote target, a boolean
+ flag called "secure", and a route set, which is an ordered list of
+ URIs. The route set is the list of servers that need to be traversed
+ to send a request to the peer. A dialog can also be in the "early"
+ state, which occurs when it is created with a provisional response,
+ and then transition to the "confirmed" state when a 2xx final
+ response arrives. For other responses, or if no response arrives at
+ all on that dialog, the early dialog terminates.
+
+12.1 Creation of a Dialog
+
+ Dialogs are created through the generation of non-failure responses
+ to requests with specific methods. Within this specification, only
+ 2xx and 101-199 responses with a To tag, where the request was
+ INVITE, will establish a dialog. A dialog established by a non-final
+ response to a request is in the "early" state and it is called an
+ early dialog. Extensions MAY define other means for creating
+ dialogs. Section 13 gives more details that are specific to the
+ INVITE method. Here, we describe the process for creation of dialog
+ state that is not dependent on the method.
+
+ UAs MUST assign values to the dialog ID components as described
+ below.
+
+12.1.1 UAS behavior
+
+ When a UAS responds to a request with a response that establishes a
+ dialog (such as a 2xx to INVITE), the UAS MUST copy all Record-Route
+ header field values from the request into the response (including the
+ URIs, URI parameters, and any Record-Route header field parameters,
+ whether they are known or unknown to the UAS) and MUST maintain the
+ order of those values. The UAS MUST add a Contact header field to
+ the response. The Contact header field contains an address where the
+ UAS would like to be contacted for subsequent requests in the dialog
+ (which includes the ACK for a 2xx response in the case of an INVITE).
+ Generally, the host portion of this URI is the IP address or FQDN of
+ the host. The URI provided in the Contact header field MUST be a SIP
+ or SIPS URI. If the request that initiated the dialog contained a
+
+
+
+Rosenberg, et. al. Standards Track [Page 70]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ SIPS URI in the Request-URI or in the top Record-Route header field
+ value, if there was any, or the Contact header field if there was no
+ Record-Route header field, the Contact header field in the response
+ MUST be a SIPS URI. The URI SHOULD have global scope (that is, the
+ same URI can be used in messages outside this dialog). The same way,
+ the scope of the URI in the Contact header field of the INVITE is not
+ limited to this dialog either. It can therefore be used in messages
+ to the UAC even outside this dialog.
+
+ The UAS then constructs the state of the dialog. This state MUST be
+ maintained for the duration of the dialog.
+
+ If the request arrived over TLS, and the Request-URI contained a SIPS
+ URI, the "secure" flag is set to TRUE.
+
+ The route set MUST be set to the list of URIs in the Record-Route
+ header field from the request, taken in order and preserving all URI
+ parameters. If no Record-Route header field is present in the
+ request, the route set MUST be set to the empty set. This route set,
+ even if empty, overrides any pre-existing route set for future
+ requests in this dialog. The remote target MUST be set to the URI
+ from the Contact header field of the request.
+
+ The remote sequence number MUST be set to the value of the sequence
+ number in the CSeq header field of the request. The local sequence
+ number MUST be empty. The call identifier component of the dialog ID
+ MUST be set to the value of the Call-ID in the request. The local
+ tag component of the dialog ID MUST be set to the tag in the To field
+ in the response to the request (which always includes a tag), and the
+ remote tag component of the dialog ID MUST be set to the tag from the
+ From field in the request. A UAS MUST be prepared to receive a
+ request without a tag in the From field, in which case the tag is
+ considered to have a value of null.
+
+ This is to maintain backwards compatibility with RFC 2543, which
+ did not mandate From tags.
+
+ The remote URI MUST be set to the URI in the From field, and the
+ local URI MUST be set to the URI in the To field.
+
+12.1.2 UAC Behavior
+
+ When a UAC sends a request that can establish a dialog (such as an
+ INVITE) it MUST provide a SIP or SIPS URI with global scope (i.e.,
+ the same SIP URI can be used in messages outside this dialog) in the
+ Contact header field of the request. If the request has a Request-
+ URI or a topmost Route header field value with a SIPS URI, the
+ Contact header field MUST contain a SIPS URI.
+
+
+
+Rosenberg, et. al. Standards Track [Page 71]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ When a UAC receives a response that establishes a dialog, it
+ constructs the state of the dialog. This state MUST be maintained
+ for the duration of the dialog.
+
+ If the request was sent over TLS, and the Request-URI contained a
+ SIPS URI, the "secure" flag is set to TRUE.
+
+ The route set MUST be set to the list of URIs in the Record-Route
+ header field from the response, taken in reverse order and preserving
+ all URI parameters. If no Record-Route header field is present in
+ the response, the route set MUST be set to the empty set. This route
+ set, even if empty, overrides any pre-existing route set for future
+ requests in this dialog. The remote target MUST be set to the URI
+ from the Contact header field of the response.
+
+ The local sequence number MUST be set to the value of the sequence
+ number in the CSeq header field of the request. The remote sequence
+ number MUST be empty (it is established when the remote UA sends a
+ request within the dialog). The call identifier component of the
+ dialog ID MUST be set to the value of the Call-ID in the request.
+ The local tag component of the dialog ID MUST be set to the tag in
+ the From field in the request, and the remote tag component of the
+ dialog ID MUST be set to the tag in the To field of the response. A
+ UAC MUST be prepared to receive a response without a tag in the To
+ field, in which case the tag is considered to have a value of null.
+
+ This is to maintain backwards compatibility with RFC 2543, which
+ did not mandate To tags.
+
+ The remote URI MUST be set to the URI in the To field, and the local
+ URI MUST be set to the URI in the From field.
+
+12.2 Requests within a Dialog
+
+ Once a dialog has been established between two UAs, either of them
+ MAY initiate new transactions as needed within the dialog. The UA
+ sending the request will take the UAC role for the transaction. The
+ UA receiving the request will take the UAS role. Note that these may
+ be different roles than the UAs held during the transaction that
+ established the dialog.
+
+ Requests within a dialog MAY contain Record-Route and Contact header
+ fields. However, these requests do not cause the dialog's route set
+ to be modified, although they may modify the remote target URI.
+ Specifically, requests that are not target refresh requests do not
+ modify the dialog's remote target URI, and requests that are target
+ refresh requests do. For dialogs that have been established with an
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 72]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ INVITE, the only target refresh request defined is re-INVITE (see
+ Section 14). Other extensions may define different target refresh
+ requests for dialogs established in other ways.
+
+ Note that an ACK is NOT a target refresh request.
+
+ Target refresh requests only update the dialog's remote target URI,
+ and not the route set formed from the Record-Route. Updating the
+ latter would introduce severe backwards compatibility problems with
+ RFC 2543-compliant systems.
+
+12.2.1 UAC Behavior
+
+12.2.1.1 Generating the Request
+
+ A request within a dialog is constructed by using many of the
+ components of the state stored as part of the dialog.
+
+ The URI in the To field of the request MUST be set to the remote URI
+ from the dialog state. The tag in the To header field of the request
+ MUST be set to the remote tag of the dialog ID. The From URI of the
+ request MUST be set to the local URI from the dialog state. The tag
+ in the From header field of the request MUST be set to the local tag
+ of the dialog ID. If the value of the remote or local tags is null,
+ the tag parameter MUST be omitted from the To or From header fields,
+ respectively.
+
+ Usage of the URI from the To and From fields in the original
+ request within subsequent requests is done for backwards
+ compatibility with RFC 2543, which used the URI for dialog
+ identification. In this specification, only the tags are used for
+ dialog identification. It is expected that mandatory reflection
+ of the original To and From URI in mid-dialog requests will be
+ deprecated in a subsequent revision of this specification.
+
+ The Call-ID of the request MUST be set to the Call-ID of the dialog.
+ Requests within a dialog MUST contain strictly monotonically
+ increasing and contiguous CSeq sequence numbers (increasing-by-one)
+ in each direction (excepting ACK and CANCEL of course, whose numbers
+ equal the requests being acknowledged or cancelled). Therefore, if
+ the local sequence number is not empty, the value of the local
+ sequence number MUST be incremented by one, and this value MUST be
+ placed into the CSeq header field. If the local sequence number is
+ empty, an initial value MUST be chosen using the guidelines of
+ Section 8.1.1.5. The method field in the CSeq header field value
+ MUST match the method of the request.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 73]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ With a length of 32 bits, a client could generate, within a single
+ call, one request a second for about 136 years before needing to
+ wrap around. The initial value of the sequence number is chosen
+ so that subsequent requests within the same call will not wrap
+ around. A non-zero initial value allows clients to use a time-
+ based initial sequence number. A client could, for example,
+ choose the 31 most significant bits of a 32-bit second clock as an
+ initial sequence number.
+
+ The UAC uses the remote target and route set to build the Request-URI
+ and Route header field of the request.
+
+ If the route set is empty, the UAC MUST place the remote target URI
+ into the Request-URI. The UAC MUST NOT add a Route header field to
+ the request.
+
+ If the route set is not empty, and the first URI in the route set
+ contains the lr parameter (see Section 19.1.1), the UAC MUST place
+ the remote target URI into the Request-URI and MUST include a Route
+ header field containing the route set values in order, including all
+ parameters.
+
+ If the route set is not empty, and its first URI does not contain the
+ lr parameter, the UAC MUST place the first URI from the route set
+ into the Request-URI, stripping any parameters that are not allowed
+ in a Request-URI. The UAC MUST add a Route header field containing
+ the remainder of the route set values in order, including all
+ parameters. The UAC MUST then place the remote target URI into the
+ Route header field as the last value.
+
+ For example, if the remote target is sip:user@remoteua and the route
+ set contains:
+
+ <sip:proxy1>,<sip:proxy2>,<sip:proxy3;lr>,<sip:proxy4>
+
+ The request will be formed with the following Request-URI and Route
+ header field:
+
+ METHOD sip:proxy1
+ Route: <sip:proxy2>,<sip:proxy3;lr>,<sip:proxy4>,<sip:user@remoteua>
+
+ If the first URI of the route set does not contain the lr
+ parameter, the proxy indicated does not understand the routing
+ mechanisms described in this document and will act as specified in
+ RFC 2543, replacing the Request-URI with the first Route header
+ field value it receives while forwarding the message. Placing the
+ Request-URI at the end of the Route header field preserves the
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 74]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ information in that Request-URI across the strict router (it will
+ be returned to the Request-URI when the request reaches a loose-
+ router).
+
+ A UAC SHOULD include a Contact header field in any target refresh
+ requests within a dialog, and unless there is a need to change it,
+ the URI SHOULD be the same as used in previous requests within the
+ dialog. If the "secure" flag is true, that URI MUST be a SIPS URI.
+ As discussed in Section 12.2.2, a Contact header field in a target
+ refresh request updates the remote target URI. This allows a UA to
+ provide a new contact address, should its address change during the
+ duration of the dialog.
+
+ However, requests that are not target refresh requests do not affect
+ the remote target URI for the dialog.
+
+ The rest of the request is formed as described in Section 8.1.1.
+
+ Once the request has been constructed, the address of the server is
+ computed and the request is sent, using the same procedures for
+ requests outside of a dialog (Section 8.1.2).
+
+ The procedures in Section 8.1.2 will normally result in the
+ request being sent to the address indicated by the topmost Route
+ header field value or the Request-URI if no Route header field is
+ present. Subject to certain restrictions, they allow the request
+ to be sent to an alternate address (such as a default outbound
+ proxy not represented in the route set).
+
+12.2.1.2 Processing the Responses
+
+ The UAC will receive responses to the request from the transaction
+ layer. If the client transaction returns a timeout, this is treated
+ as a 408 (Request Timeout) response.
+
+ The behavior of a UAC that receives a 3xx response for a request sent
+ within a dialog is the same as if the request had been sent outside a
+ dialog. This behavior is described in Section 8.1.3.4.
+
+ Note, however, that when the UAC tries alternative locations, it
+ still uses the route set for the dialog to build the Route header
+ of the request.
+
+ When a UAC receives a 2xx response to a target refresh request, it
+ MUST replace the dialog's remote target URI with the URI from the
+ Contact header field in that response, if present.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 75]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ If the response for a request within a dialog is a 481
+ (Call/Transaction Does Not Exist) or a 408 (Request Timeout), the UAC
+ SHOULD terminate the dialog. A UAC SHOULD also terminate a dialog if
+ no response at all is received for the request (the client
+ transaction would inform the TU about the timeout.)
+
+ For INVITE initiated dialogs, terminating the dialog consists of
+ sending a BYE.
+
+12.2.2 UAS Behavior
+
+ Requests sent within a dialog, as any other requests, are atomic. If
+ a particular request is accepted by the UAS, all the state changes
+ associated with it are performed. If the request is rejected, none
+ of the state changes are performed.
+
+ Note that some requests, such as INVITEs, affect several pieces of
+ state.
+
+ The UAS will receive the request from the transaction layer. If the
+ request has a tag in the To header field, the UAS core computes the
+ dialog identifier corresponding to the request and compares it with
+ existing dialogs. If there is a match, this is a mid-dialog request.
+ In that case, the UAS first applies the same processing rules for
+ requests outside of a dialog, discussed in Section 8.2.
+
+ If the request has a tag in the To header field, but the dialog
+ identifier does not match any existing dialogs, the UAS may have
+ crashed and restarted, or it may have received a request for a
+ different (possibly failed) UAS (the UASs can construct the To tags
+ so that a UAS can identify that the tag was for a UAS for which it is
+ providing recovery). Another possibility is that the incoming
+ request has been simply misrouted. Based on the To tag, the UAS MAY
+ either accept or reject the request. Accepting the request for
+ acceptable To tags provides robustness, so that dialogs can persist
+ even through crashes. UAs wishing to support this capability must
+ take into consideration some issues such as choosing monotonically
+ increasing CSeq sequence numbers even across reboots, reconstructing
+ the route set, and accepting out-of-range RTP timestamps and sequence
+ numbers.
+
+ If the UAS wishes to reject the request because it does not wish to
+ recreate the dialog, it MUST respond to the request with a 481
+ (Call/Transaction Does Not Exist) status code and pass that to the
+ server transaction.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 76]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Requests that do not change in any way the state of a dialog may be
+ received within a dialog (for example, an OPTIONS request). They are
+ processed as if they had been received outside the dialog.
+
+ If the remote sequence number is empty, it MUST be set to the value
+ of the sequence number in the CSeq header field value in the request.
+ If the remote sequence number was not empty, but the sequence number
+ of the request is lower than the remote sequence number, the request
+ is out of order and MUST be rejected with a 500 (Server Internal
+ Error) response. If the remote sequence number was not empty, and
+ the sequence number of the request is greater than the remote
+ sequence number, the request is in order. It is possible for the
+ CSeq sequence number to be higher than the remote sequence number by
+ more than one. This is not an error condition, and a UAS SHOULD be
+ prepared to receive and process requests with CSeq values more than
+ one higher than the previous received request. The UAS MUST then set
+ the remote sequence number to the value of the sequence number in the
+ CSeq header field value in the request.
+
+ If a proxy challenges a request generated by the UAC, the UAC has
+ to resubmit the request with credentials. The resubmitted request
+ will have a new CSeq number. The UAS will never see the first
+ request, and thus, it will notice a gap in the CSeq number space.
+ Such a gap does not represent any error condition.
+
+ When a UAS receives a target refresh request, it MUST replace the
+ dialog's remote target URI with the URI from the Contact header field
+ in that request, if present.
+
+12.3 Termination of a Dialog
+
+ Independent of the method, if a request outside of a dialog generates
+ a non-2xx final response, any early dialogs created through
+ provisional responses to that request are terminated. The mechanism
+ for terminating confirmed dialogs is method specific. In this
+ specification, the BYE method terminates a session and the dialog
+ associated with it. See Section 15 for details.
+
+13 Initiating a Session
+
+13.1 Overview
+
+ When a user agent client desires to initiate a session (for example,
+ audio, video, or a game), it formulates an INVITE request. The
+ INVITE request asks a server to establish a session. This request
+ may be forwarded by proxies, eventually arriving at one or more UAS
+ that can potentially accept the invitation. These UASs will
+ frequently need to query the user about whether to accept the
+
+
+
+Rosenberg, et. al. Standards Track [Page 77]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ invitation. After some time, those UASs can accept the invitation
+ (meaning the session is to be established) by sending a 2xx response.
+ If the invitation is not accepted, a 3xx, 4xx, 5xx or 6xx response is
+ sent, depending on the reason for the rejection. Before sending a
+ final response, the UAS can also send provisional responses (1xx) to
+ advise the UAC of progress in contacting the called user.
+
+ After possibly receiving one or more provisional responses, the UAC
+ will get one or more 2xx responses or one non-2xx final response.
+ Because of the protracted amount of time it can take to receive final
+ responses to INVITE, the reliability mechanisms for INVITE
+ transactions differ from those of other requests (like OPTIONS).
+ Once it receives a final response, the UAC needs to send an ACK for
+ every final response it receives. The procedure for sending this ACK
+ depends on the type of response. For final responses between 300 and
+ 699, the ACK processing is done in the transaction layer and follows
+ one set of rules (See Section 17). For 2xx responses, the ACK is
+ generated by the UAC core.
+
+ A 2xx response to an INVITE establishes a session, and it also
+ creates a dialog between the UA that issued the INVITE and the UA
+ that generated the 2xx response. Therefore, when multiple 2xx
+ responses are received from different remote UAs (because the INVITE
+ forked), each 2xx establishes a different dialog. All these dialogs
+ are part of the same call.
+
+ This section provides details on the establishment of a session using
+ INVITE. A UA that supports INVITE MUST also support ACK, CANCEL and
+ BYE.
+
+13.2 UAC Processing
+
+13.2.1 Creating the Initial INVITE
+
+ Since the initial INVITE represents a request outside of a dialog,
+ its construction follows the procedures of Section 8.1.1. Additional
+ processing is required for the specific case of INVITE.
+
+ An Allow header field (Section 20.5) SHOULD be present in the INVITE.
+ It indicates what methods can be invoked within a dialog, on the UA
+ sending the INVITE, for the duration of the dialog. For example, a
+ UA capable of receiving INFO requests within a dialog [34] SHOULD
+ include an Allow header field listing the INFO method.
+
+ A Supported header field (Section 20.37) SHOULD be present in the
+ INVITE. It enumerates all the extensions understood by the UAC.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 78]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ An Accept (Section 20.1) header field MAY be present in the INVITE.
+ It indicates which Content-Types are acceptable to the UA, in both
+ the response received by it, and in any subsequent requests sent to
+ it within dialogs established by the INVITE. The Accept header field
+ is especially useful for indicating support of various session
+ description formats.
+
+ The UAC MAY add an Expires header field (Section 20.19) to limit the
+ validity of the invitation. If the time indicated in the Expires
+ header field is reached and no final answer for the INVITE has been
+ received, the UAC core SHOULD generate a CANCEL request for the
+ INVITE, as per Section 9.
+
+ A UAC MAY also find it useful to add, among others, Subject (Section
+ 20.36), Organization (Section 20.25) and User-Agent (Section 20.41)
+ header fields. They all contain information related to the INVITE.
+
+ The UAC MAY choose to add a message body to the INVITE. Section
+ 8.1.1.10 deals with how to construct the header fields -- Content-
+ Type among others -- needed to describe the message body.
+
+ There are special rules for message bodies that contain a session
+ description - their corresponding Content-Disposition is "session".
+ SIP uses an offer/answer model where one UA sends a session
+ description, called the offer, which contains a proposed description
+ of the session. The offer indicates the desired communications means
+ (audio, video, games), parameters of those means (such as codec
+ types) and addresses for receiving media from the answerer. The
+ other UA responds with another session description, called the
+ answer, which indicates which communications means are accepted, the
+ parameters that apply to those means, and addresses for receiving
+ media from the offerer. An offer/answer exchange is within the
+ context of a dialog, so that if a SIP INVITE results in multiple
+ dialogs, each is a separate offer/answer exchange. The offer/answer
+ model defines restrictions on when offers and answers can be made
+ (for example, you cannot make a new offer while one is in progress).
+ This results in restrictions on where the offers and answers can
+ appear in SIP messages. In this specification, offers and answers
+ can only appear in INVITE requests and responses, and ACK. The usage
+ of offers and answers is further restricted. For the initial INVITE
+ transaction, the rules are:
+
+ o The initial offer MUST be in either an INVITE or, if not there,
+ in the first reliable non-failure message from the UAS back to
+ the UAC. In this specification, that is the final 2xx
+ response.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 79]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ o If the initial offer is in an INVITE, the answer MUST be in a
+ reliable non-failure message from UAS back to UAC which is
+ correlated to that INVITE. For this specification, that is
+ only the final 2xx response to that INVITE. That same exact
+ answer MAY also be placed in any provisional responses sent
+ prior to the answer. The UAC MUST treat the first session
+ description it receives as the answer, and MUST ignore any
+ session descriptions in subsequent responses to the initial
+ INVITE.
+
+ o If the initial offer is in the first reliable non-failure
+ message from the UAS back to UAC, the answer MUST be in the
+ acknowledgement for that message (in this specification, ACK
+ for a 2xx response).
+
+ o After having sent or received an answer to the first offer, the
+ UAC MAY generate subsequent offers in requests based on rules
+ specified for that method, but only if it has received answers
+ to any previous offers, and has not sent any offers to which it
+ hasn't gotten an answer.
+
+ o Once the UAS has sent or received an answer to the initial
+ offer, it MUST NOT generate subsequent offers in any responses
+ to the initial INVITE. This means that a UAS based on this
+ specification alone can never generate subsequent offers until
+ completion of the initial transaction.
+
+ Concretely, the above rules specify two exchanges for UAs compliant
+ to this specification alone - the offer is in the INVITE, and the
+ answer in the 2xx (and possibly in a 1xx as well, with the same
+ value), or the offer is in the 2xx, and the answer is in the ACK.
+ All user agents that support INVITE MUST support these two exchanges.
+
+ The Session Description Protocol (SDP) (RFC 2327 [1]) MUST be
+ supported by all user agents as a means to describe sessions, and its
+ usage for constructing offers and answers MUST follow the procedures
+ defined in [13].
+
+ The restrictions of the offer-answer model just described only apply
+ to bodies whose Content-Disposition header field value is "session".
+ Therefore, it is possible that both the INVITE and the ACK contain a
+ body message (for example, the INVITE carries a photo (Content-
+ Disposition: render) and the ACK a session description (Content-
+ Disposition: session)).
+
+ If the Content-Disposition header field is missing, bodies of
+ Content-Type application/sdp imply the disposition "session", while
+ other content types imply "render".
+
+
+
+Rosenberg, et. al. Standards Track [Page 80]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Once the INVITE has been created, the UAC follows the procedures
+ defined for sending requests outside of a dialog (Section 8). This
+ results in the construction of a client transaction that will
+ ultimately send the request and deliver responses to the UAC.
+
+13.2.2 Processing INVITE Responses
+
+ Once the INVITE has been passed to the INVITE client transaction, the
+ UAC waits for responses for the INVITE. If the INVITE client
+ transaction returns a timeout rather than a response the TU acts as
+ if a 408 (Request Timeout) response had been received, as described
+ in Section 8.1.3.
+
+13.2.2.1 1xx Responses
+
+ Zero, one or multiple provisional responses may arrive before one or
+ more final responses are received. Provisional responses for an
+ INVITE request can create "early dialogs". If a provisional response
+ has a tag in the To field, and if the dialog ID of the response does
+ not match an existing dialog, one is constructed using the procedures
+ defined in Section 12.1.2.
+
+ The early dialog will only be needed if the UAC needs to send a
+ request to its peer within the dialog before the initial INVITE
+ transaction completes. Header fields present in a provisional
+ response are applicable as long as the dialog is in the early state
+ (for example, an Allow header field in a provisional response
+ contains the methods that can be used in the dialog while this is in
+ the early state).
+
+13.2.2.2 3xx Responses
+
+ A 3xx response may contain one or more Contact header field values
+ providing new addresses where the callee might be reachable.
+ Depending on the status code of the 3xx response (see Section 21.3),
+ the UAC MAY choose to try those new addresses.
+
+13.2.2.3 4xx, 5xx and 6xx Responses
+
+ A single non-2xx final response may be received for the INVITE. 4xx,
+ 5xx and 6xx responses may contain a Contact header field value
+ indicating the location where additional information about the error
+ can be found. Subsequent final responses (which would only arrive
+ under error conditions) MUST be ignored.
+
+ All early dialogs are considered terminated upon reception of the
+ non-2xx final response.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 81]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ After having received the non-2xx final response the UAC core
+ considers the INVITE transaction completed. The INVITE client
+ transaction handles the generation of ACKs for the response (see
+ Section 17).
+
+13.2.2.4 2xx Responses
+
+ Multiple 2xx responses may arrive at the UAC for a single INVITE
+ request due to a forking proxy. Each response is distinguished by
+ the tag parameter in the To header field, and each represents a
+ distinct dialog, with a distinct dialog identifier.
+
+ If the dialog identifier in the 2xx response matches the dialog
+ identifier of an existing dialog, the dialog MUST be transitioned to
+ the "confirmed" state, and the route set for the dialog MUST be
+ recomputed based on the 2xx response using the procedures of Section
+ 12.2.1.2. Otherwise, a new dialog in the "confirmed" state MUST be
+ constructed using the procedures of Section 12.1.2.
+
+ Note that the only piece of state that is recomputed is the route
+ set. Other pieces of state such as the highest sequence numbers
+ (remote and local) sent within the dialog are not recomputed. The
+ route set only is recomputed for backwards compatibility. RFC
+ 2543 did not mandate mirroring of the Record-Route header field in
+ a 1xx, only 2xx. However, we cannot update the entire state of
+ the dialog, since mid-dialog requests may have been sent within
+ the early dialog, modifying the sequence numbers, for example.
+
+ The UAC core MUST generate an ACK request for each 2xx received from
+ the transaction layer. The header fields of the ACK are constructed
+ in the same way as for any request sent within a dialog (see Section
+ 12) with the exception of the CSeq and the header fields related to
+ authentication. The sequence number of the CSeq header field MUST be
+ the same as the INVITE being acknowledged, but the CSeq method MUST
+ be ACK. The ACK MUST contain the same credentials as the INVITE. If
+ the 2xx contains an offer (based on the rules above), the ACK MUST
+ carry an answer in its body. If the offer in the 2xx response is not
+ acceptable, the UAC core MUST generate a valid answer in the ACK and
+ then send a BYE immediately.
+
+ Once the ACK has been constructed, the procedures of [4] are used to
+ determine the destination address, port and transport. However, the
+ request is passed to the transport layer directly for transmission,
+ rather than a client transaction. This is because the UAC core
+ handles retransmissions of the ACK, not the transaction layer. The
+ ACK MUST be passed to the client transport every time a
+ retransmission of the 2xx final response that triggered the ACK
+ arrives.
+
+
+
+Rosenberg, et. al. Standards Track [Page 82]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The UAC core considers the INVITE transaction completed 64*T1 seconds
+ after the reception of the first 2xx response. At this point all the
+ early dialogs that have not transitioned to established dialogs are
+ terminated. Once the INVITE transaction is considered completed by
+ the UAC core, no more new 2xx responses are expected to arrive.
+
+ If, after acknowledging any 2xx response to an INVITE, the UAC does
+ not want to continue with that dialog, then the UAC MUST terminate
+ the dialog by sending a BYE request as described in Section 15.
+
+13.3 UAS Processing
+
+13.3.1 Processing of the INVITE
+
+ The UAS core will receive INVITE requests from the transaction layer.
+ It first performs the request processing procedures of Section 8.2,
+ which are applied for both requests inside and outside of a dialog.
+
+ Assuming these processing states are completed without generating a
+ response, the UAS core performs the additional processing steps:
+
+ 1. If the request is an INVITE that contains an Expires header
+ field, the UAS core sets a timer for the number of seconds
+ indicated in the header field value. When the timer fires, the
+ invitation is considered to be expired. If the invitation
+ expires before the UAS has generated a final response, a 487
+ (Request Terminated) response SHOULD be generated.
+
+ 2. If the request is a mid-dialog request, the method-independent
+ processing described in Section 12.2.2 is first applied. It
+ might also modify the session; Section 14 provides details.
+
+ 3. If the request has a tag in the To header field but the dialog
+ identifier does not match any of the existing dialogs, the UAS
+ may have crashed and restarted, or may have received a request
+ for a different (possibly failed) UAS. Section 12.2.2 provides
+ guidelines to achieve a robust behavior under such a situation.
+
+ Processing from here forward assumes that the INVITE is outside of a
+ dialog, and is thus for the purposes of establishing a new session.
+
+ The INVITE may contain a session description, in which case the UAS
+ is being presented with an offer for that session. It is possible
+ that the user is already a participant in that session, even though
+ the INVITE is outside of a dialog. This can happen when a user is
+ invited to the same multicast conference by multiple other
+ participants. If desired, the UAS MAY use identifiers within the
+ session description to detect this duplication. For example, SDP
+
+
+
+Rosenberg, et. al. Standards Track [Page 83]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ contains a session id and version number in the origin (o) field. If
+ the user is already a member of the session, and the session
+ parameters contained in the session description have not changed, the
+ UAS MAY silently accept the INVITE (that is, send a 2xx response
+ without prompting the user).
+
+ If the INVITE does not contain a session description, the UAS is
+ being asked to participate in a session, and the UAC has asked that
+ the UAS provide the offer of the session. It MUST provide the offer
+ in its first non-failure reliable message back to the UAC. In this
+ specification, that is a 2xx response to the INVITE.
+
+ The UAS can indicate progress, accept, redirect, or reject the
+ invitation. In all of these cases, it formulates a response using
+ the procedures described in Section 8.2.6.
+
+13.3.1.1 Progress
+
+ If the UAS is not able to answer the invitation immediately, it can
+ choose to indicate some kind of progress to the UAC (for example, an
+ indication that a phone is ringing). This is accomplished with a
+ provisional response between 101 and 199. These provisional
+ responses establish early dialogs and therefore follow the procedures
+ of Section 12.1.1 in addition to those of Section 8.2.6. A UAS MAY
+ send as many provisional responses as it likes. Each of these MUST
+ indicate the same dialog ID. However, these will not be delivered
+ reliably.
+
+ If the UAS desires an extended period of time to answer the INVITE,
+ it will need to ask for an "extension" in order to prevent proxies
+ from canceling the transaction. A proxy has the option of canceling
+ a transaction when there is a gap of 3 minutes between responses in a
+ transaction. To prevent cancellation, the UAS MUST send a non-100
+ provisional response at every minute, to handle the possibility of
+ lost provisional responses.
+
+ An INVITE transaction can go on for extended durations when the
+ user is placed on hold, or when interworking with PSTN systems
+ which allow communications to take place without answering the
+ call. The latter is common in Interactive Voice Response (IVR)
+ systems.
+
+13.3.1.2 The INVITE is Redirected
+
+ If the UAS decides to redirect the call, a 3xx response is sent. A
+ 300 (Multiple Choices), 301 (Moved Permanently) or 302 (Moved
+ Temporarily) response SHOULD contain a Contact header field
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 84]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ containing one or more URIs of new addresses to be tried. The
+ response is passed to the INVITE server transaction, which will deal
+ with its retransmissions.
+
+13.3.1.3 The INVITE is Rejected
+
+ A common scenario occurs when the callee is currently not willing or
+ able to take additional calls at this end system. A 486 (Busy Here)
+ SHOULD be returned in such a scenario. If the UAS knows that no
+ other end system will be able to accept this call, a 600 (Busy
+ Everywhere) response SHOULD be sent instead. However, it is unlikely
+ that a UAS will be able to know this in general, and thus this
+ response will not usually be used. The response is passed to the
+ INVITE server transaction, which will deal with its retransmissions.
+
+ A UAS rejecting an offer contained in an INVITE SHOULD return a 488
+ (Not Acceptable Here) response. Such a response SHOULD include a
+ Warning header field value explaining why the offer was rejected.
+
+13.3.1.4 The INVITE is Accepted
+
+ The UAS core generates a 2xx response. This response establishes a
+ dialog, and therefore follows the procedures of Section 12.1.1 in
+ addition to those of Section 8.2.6.
+
+ A 2xx response to an INVITE SHOULD contain the Allow header field and
+ the Supported header field, and MAY contain the Accept header field.
+ Including these header fields allows the UAC to determine the
+ features and extensions supported by the UAS for the duration of the
+ call, without probing.
+
+ If the INVITE request contained an offer, and the UAS had not yet
+ sent an answer, the 2xx MUST contain an answer. If the INVITE did
+ not contain an offer, the 2xx MUST contain an offer if the UAS had
+ not yet sent an offer.
+
+ Once the response has been constructed, it is passed to the INVITE
+ server transaction. Note, however, that the INVITE server
+ transaction will be destroyed as soon as it receives this final
+ response and passes it to the transport. Therefore, it is necessary
+ to periodically pass the response directly to the transport until the
+ ACK arrives. The 2xx response is passed to the transport with an
+ interval that starts at T1 seconds and doubles for each
+ retransmission until it reaches T2 seconds (T1 and T2 are defined in
+ Section 17). Response retransmissions cease when an ACK request for
+ the response is received. This is independent of whatever transport
+ protocols are used to send the response.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 85]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Since 2xx is retransmitted end-to-end, there may be hops between
+ UAS and UAC that are UDP. To ensure reliable delivery across
+ these hops, the response is retransmitted periodically even if the
+ transport at the UAS is reliable.
+
+ If the server retransmits the 2xx response for 64*T1 seconds without
+ receiving an ACK, the dialog is confirmed, but the session SHOULD be
+ terminated. This is accomplished with a BYE, as described in Section
+ 15.
+
+14 Modifying an Existing Session
+
+ A successful INVITE request (see Section 13) establishes both a
+ dialog between two user agents and a session using the offer-answer
+ model. Section 12 explains how to modify an existing dialog using a
+ target refresh request (for example, changing the remote target URI
+ of the dialog). This section describes how to modify the actual
+ session. This modification can involve changing addresses or ports,
+ adding a media stream, deleting a media stream, and so on. This is
+ accomplished by sending a new INVITE request within the same dialog
+ that established the session. An INVITE request sent within an
+ existing dialog is known as a re-INVITE.
+
+ Note that a single re-INVITE can modify the dialog and the
+ parameters of the session at the same time.
+
+ Either the caller or callee can modify an existing session.
+
+ The behavior of a UA on detection of media failure is a matter of
+ local policy. However, automated generation of re-INVITE or BYE is
+ NOT RECOMMENDED to avoid flooding the network with traffic when there
+ is congestion. In any case, if these messages are sent
+ automatically, they SHOULD be sent after some randomized interval.
+
+ Note that the paragraph above refers to automatically generated
+ BYEs and re-INVITEs. If the user hangs up upon media failure, the
+ UA would send a BYE request as usual.
+
+14.1 UAC Behavior
+
+ The same offer-answer model that applies to session descriptions in
+ INVITEs (Section 13.2.1) applies to re-INVITEs. As a result, a UAC
+ that wants to add a media stream, for example, will create a new
+ offer that contains this media stream, and send that in an INVITE
+ request to its peer. It is important to note that the full
+ description of the session, not just the change, is sent. This
+ supports stateless session processing in various elements, and
+ supports failover and recovery capabilities. Of course, a UAC MAY
+
+
+
+Rosenberg, et. al. Standards Track [Page 86]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ send a re-INVITE with no session description, in which case the first
+ reliable non-failure response to the re-INVITE will contain the offer
+ (in this specification, that is a 2xx response).
+
+ If the session description format has the capability for version
+ numbers, the offerer SHOULD indicate that the version of the session
+ description has changed.
+
+ The To, From, Call-ID, CSeq, and Request-URI of a re-INVITE are set
+ following the same rules as for regular requests within an existing
+ dialog, described in Section 12.
+
+ A UAC MAY choose not to add an Alert-Info header field or a body with
+ Content-Disposition "alert" to re-INVITEs because UASs do not
+ typically alert the user upon reception of a re-INVITE.
+
+ Unlike an INVITE, which can fork, a re-INVITE will never fork, and
+ therefore, only ever generate a single final response. The reason a
+ re-INVITE will never fork is that the Request-URI identifies the
+ target as the UA instance it established the dialog with, rather than
+ identifying an address-of-record for the user.
+
+ Note that a UAC MUST NOT initiate a new INVITE transaction within a
+ dialog while another INVITE transaction is in progress in either
+ direction.
+
+ 1. If there is an ongoing INVITE client transaction, the TU MUST
+ wait until the transaction reaches the completed or terminated
+ state before initiating the new INVITE.
+
+ 2. If there is an ongoing INVITE server transaction, the TU MUST
+ wait until the transaction reaches the confirmed or terminated
+ state before initiating the new INVITE.
+
+ However, a UA MAY initiate a regular transaction while an INVITE
+ transaction is in progress. A UA MAY also initiate an INVITE
+ transaction while a regular transaction is in progress.
+
+ If a UA receives a non-2xx final response to a re-INVITE, the session
+ parameters MUST remain unchanged, as if no re-INVITE had been issued.
+ Note that, as stated in Section 12.2.1.2, if the non-2xx final
+ response is a 481 (Call/Transaction Does Not Exist), or a 408
+ (Request Timeout), or no response at all is received for the re-
+ INVITE (that is, a timeout is returned by the INVITE client
+ transaction), the UAC will terminate the dialog.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 87]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ If a UAC receives a 491 response to a re-INVITE, it SHOULD start a
+ timer with a value T chosen as follows:
+
+ 1. If the UAC is the owner of the Call-ID of the dialog ID
+ (meaning it generated the value), T has a randomly chosen value
+ between 2.1 and 4 seconds in units of 10 ms.
+
+ 2. If the UAC is not the owner of the Call-ID of the dialog ID, T
+ has a randomly chosen value of between 0 and 2 seconds in units
+ of 10 ms.
+
+ When the timer fires, the UAC SHOULD attempt the re-INVITE once more,
+ if it still desires for that session modification to take place. For
+ example, if the call was already hung up with a BYE, the re-INVITE
+ would not take place.
+
+ The rules for transmitting a re-INVITE and for generating an ACK for
+ a 2xx response to re-INVITE are the same as for the initial INVITE
+ (Section 13.2.1).
+
+14.2 UAS Behavior
+
+ Section 13.3.1 describes the procedure for distinguishing incoming
+ re-INVITEs from incoming initial INVITEs and handling a re-INVITE for
+ an existing dialog.
+
+ A UAS that receives a second INVITE before it sends the final
+ response to a first INVITE with a lower CSeq sequence number on the
+ same dialog MUST return a 500 (Server Internal Error) response to the
+ second INVITE and MUST include a Retry-After header field with a
+ randomly chosen value of between 0 and 10 seconds.
+
+ A UAS that receives an INVITE on a dialog while an INVITE it had sent
+ on that dialog is in progress MUST return a 491 (Request Pending)
+ response to the received INVITE.
+
+ If a UA receives a re-INVITE for an existing dialog, it MUST check
+ any version identifiers in the session description or, if there are
+ no version identifiers, the content of the session description to see
+ if it has changed. If the session description has changed, the UAS
+ MUST adjust the session parameters accordingly, possibly after asking
+ the user for confirmation.
+
+ Versioning of the session description can be used to accommodate
+ the capabilities of new arrivals to a conference, add or delete
+ media, or change from a unicast to a multicast conference.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 88]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ If the new session description is not acceptable, the UAS can reject
+ it by returning a 488 (Not Acceptable Here) response for the re-
+ INVITE. This response SHOULD include a Warning header field.
+
+ If a UAS generates a 2xx response and never receives an ACK, it
+ SHOULD generate a BYE to terminate the dialog.
+
+ A UAS MAY choose not to generate 180 (Ringing) responses for a re-
+ INVITE because UACs do not typically render this information to the
+ user. For the same reason, UASs MAY choose not to use an Alert-Info
+ header field or a body with Content-Disposition "alert" in responses
+ to a re-INVITE.
+
+ A UAS providing an offer in a 2xx (because the INVITE did not contain
+ an offer) SHOULD construct the offer as if the UAS were making a
+ brand new call, subject to the constraints of sending an offer that
+ updates an existing session, as described in [13] in the case of SDP.
+ Specifically, this means that it SHOULD include as many media formats
+ and media types that the UA is willing to support. The UAS MUST
+ ensure that the session description overlaps with its previous
+ session description in media formats, transports, or other parameters
+ that require support from the peer. This is to avoid the need for
+ the peer to reject the session description. If, however, it is
+ unacceptable to the UAC, the UAC SHOULD generate an answer with a
+ valid session description, and then send a BYE to terminate the
+ session.
+
+15 Terminating a Session
+
+ This section describes the procedures for terminating a session
+ established by SIP. The state of the session and the state of the
+ dialog are very closely related. When a session is initiated with an
+ INVITE, each 1xx or 2xx response from a distinct UAS creates a
+ dialog, and if that response completes the offer/answer exchange, it
+ also creates a session. As a result, each session is "associated"
+ with a single dialog - the one which resulted in its creation. If an
+ initial INVITE generates a non-2xx final response, that terminates
+ all sessions (if any) and all dialogs (if any) that were created
+ through responses to the request. By virtue of completing the
+ transaction, a non-2xx final response also prevents further sessions
+ from being created as a result of the INVITE. The BYE request is
+ used to terminate a specific session or attempted session. In this
+ case, the specific session is the one with the peer UA on the other
+ side of the dialog. When a BYE is received on a dialog, any session
+ associated with that dialog SHOULD terminate. A UA MUST NOT send a
+ BYE outside of a dialog. The caller's UA MAY send a BYE for either
+ confirmed or early dialogs, and the callee's UA MAY send a BYE on
+ confirmed dialogs, but MUST NOT send a BYE on early dialogs.
+
+
+
+Rosenberg, et. al. Standards Track [Page 89]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ However, the callee's UA MUST NOT send a BYE on a confirmed dialog
+ until it has received an ACK for its 2xx response or until the server
+ transaction times out. If no SIP extensions have defined other
+ application layer states associated with the dialog, the BYE also
+ terminates the dialog.
+
+ The impact of a non-2xx final response to INVITE on dialogs and
+ sessions makes the use of CANCEL attractive. The CANCEL attempts to
+ force a non-2xx response to the INVITE (in particular, a 487).
+ Therefore, if a UAC wishes to give up on its call attempt entirely,
+ it can send a CANCEL. If the INVITE results in 2xx final response(s)
+ to the INVITE, this means that a UAS accepted the invitation while
+ the CANCEL was in progress. The UAC MAY continue with the sessions
+ established by any 2xx responses, or MAY terminate them with BYE.
+
+ The notion of "hanging up" is not well defined within SIP. It is
+ specific to a particular, albeit common, user interface.
+ Typically, when the user hangs up, it indicates a desire to
+ terminate the attempt to establish a session, and to terminate any
+ sessions already created. For the caller's UA, this would imply a
+ CANCEL request if the initial INVITE has not generated a final
+ response, and a BYE to all confirmed dialogs after a final
+ response. For the callee's UA, it would typically imply a BYE;
+ presumably, when the user picked up the phone, a 2xx was
+ generated, and so hanging up would result in a BYE after the ACK
+ is received. This does not mean a user cannot hang up before
+ receipt of the ACK, it just means that the software in his phone
+ needs to maintain state for a short while in order to clean up
+ properly. If the particular UI allows for the user to reject a
+ call before its answered, a 403 (Forbidden) is a good way to
+ express that. As per the rules above, a BYE can't be sent.
+
+15.1 Terminating a Session with a BYE Request
+
+15.1.1 UAC Behavior
+
+ A BYE request is constructed as would any other request within a
+ dialog, as described in Section 12.
+
+ Once the BYE is constructed, the UAC core creates a new non-INVITE
+ client transaction, and passes it the BYE request. The UAC MUST
+ consider the session terminated (and therefore stop sending or
+ listening for media) as soon as the BYE request is passed to the
+ client transaction. If the response for the BYE is a 481
+ (Call/Transaction Does Not Exist) or a 408 (Request Timeout) or no
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 90]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ response at all is received for the BYE (that is, a timeout is
+ returned by the client transaction), the UAC MUST consider the
+ session and the dialog terminated.
+
+15.1.2 UAS Behavior
+
+ A UAS first processes the BYE request according to the general UAS
+ processing described in Section 8.2. A UAS core receiving a BYE
+ request checks if it matches an existing dialog. If the BYE does not
+ match an existing dialog, the UAS core SHOULD generate a 481
+ (Call/Transaction Does Not Exist) response and pass that to the
+ server transaction.
+
+ This rule means that a BYE sent without tags by a UAC will be
+ rejected. This is a change from RFC 2543, which allowed BYE
+ without tags.
+
+ A UAS core receiving a BYE request for an existing dialog MUST follow
+ the procedures of Section 12.2.2 to process the request. Once done,
+ the UAS SHOULD terminate the session (and therefore stop sending and
+ listening for media). The only case where it can elect not to are
+ multicast sessions, where participation is possible even if the other
+ participant in the dialog has terminated its involvement in the
+ session. Whether or not it ends its participation on the session,
+ the UAS core MUST generate a 2xx response to the BYE, and MUST pass
+ that to the server transaction for transmission.
+
+ The UAS MUST still respond to any pending requests received for that
+ dialog. It is RECOMMENDED that a 487 (Request Terminated) response
+ be generated to those pending requests.
+
+16 Proxy Behavior
+
+16.1 Overview
+
+ SIP proxies are elements that route SIP requests to user agent
+ servers and SIP responses to user agent clients. A request may
+ traverse several proxies on its way to a UAS. Each will make routing
+ decisions, modifying the request before forwarding it to the next
+ element. Responses will route through the same set of proxies
+ traversed by the request in the reverse order.
+
+ Being a proxy is a logical role for a SIP element. When a request
+ arrives, an element that can play the role of a proxy first decides
+ if it needs to respond to the request on its own. For instance, the
+ request may be malformed or the element may need credentials from the
+ client before acting as a proxy. The element MAY respond with any
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 91]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ appropriate error code. When responding directly to a request, the
+ element is playing the role of a UAS and MUST behave as described in
+ Section 8.2.
+
+ A proxy can operate in either a stateful or stateless mode for each
+ new request. When stateless, a proxy acts as a simple forwarding
+ element. It forwards each request downstream to a single element
+ determined by making a targeting and routing decision based on the
+ request. It simply forwards every response it receives upstream. A
+ stateless proxy discards information about a message once the message
+ has been forwarded. A stateful proxy remembers information
+ (specifically, transaction state) about each incoming request and any
+ requests it sends as a result of processing the incoming request. It
+ uses this information to affect the processing of future messages
+ associated with that request. A stateful proxy MAY choose to "fork"
+ a request, routing it to multiple destinations. Any request that is
+ forwarded to more than one location MUST be handled statefully.
+
+ In some circumstances, a proxy MAY forward requests using stateful
+ transports (such as TCP) without being transaction-stateful. For
+ instance, a proxy MAY forward a request from one TCP connection to
+ another transaction statelessly as long as it places enough
+ information in the message to be able to forward the response down
+ the same connection the request arrived on. Requests forwarded
+ between different types of transports where the proxy's TU must take
+ an active role in ensuring reliable delivery on one of the transports
+ MUST be forwarded transaction statefully.
+
+ A stateful proxy MAY transition to stateless operation at any time
+ during the processing of a request, so long as it did not do anything
+ that would otherwise prevent it from being stateless initially
+ (forking, for example, or generation of a 100 response). When
+ performing such a transition, all state is simply discarded. The
+ proxy SHOULD NOT initiate a CANCEL request.
+
+ Much of the processing involved when acting statelessly or statefully
+ for a request is identical. The next several subsections are written
+ from the point of view of a stateful proxy. The last section calls
+ out those places where a stateless proxy behaves differently.
+
+16.2 Stateful Proxy
+
+ When stateful, a proxy is purely a SIP transaction processing engine.
+ Its behavior is modeled here in terms of the server and client
+ transactions defined in Section 17. A stateful proxy has a server
+ transaction associated with one or more client transactions by a
+ higher layer proxy processing component (see figure 3), known as a
+ proxy core. An incoming request is processed by a server
+
+
+
+Rosenberg, et. al. Standards Track [Page 92]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ transaction. Requests from the server transaction are passed to a
+ proxy core. The proxy core determines where to route the request,
+ choosing one or more next-hop locations. An outgoing request for
+ each next-hop location is processed by its own associated client
+ transaction. The proxy core collects the responses from the client
+ transactions and uses them to send responses to the server
+ transaction.
+
+ A stateful proxy creates a new server transaction for each new
+ request received. Any retransmissions of the request will then be
+ handled by that server transaction per Section 17. The proxy core
+ MUST behave as a UAS with respect to sending an immediate provisional
+ on that server transaction (such as 100 Trying) as described in
+ Section 8.2.6. Thus, a stateful proxy SHOULD NOT generate 100
+ (Trying) responses to non-INVITE requests.
+
+ This is a model of proxy behavior, not of software. An
+ implementation is free to take any approach that replicates the
+ external behavior this model defines.
+
+ For all new requests, including any with unknown methods, an element
+ intending to proxy the request MUST:
+
+ 1. Validate the request (Section 16.3)
+
+ 2. Preprocess routing information (Section 16.4)
+
+ 3. Determine target(s) for the request (Section 16.5)
+
+ +--------------------+
+ | | +---+
+ | | | C |
+ | | | T |
+ | | +---+
+ +---+ | Proxy | +---+ CT = Client Transaction
+ | S | | "Higher" Layer | | C |
+ | T | | | | T | ST = Server Transaction
+ +---+ | | +---+
+ | | +---+
+ | | | C |
+ | | | T |
+ | | +---+
+ +--------------------+
+
+ Figure 3: Stateful Proxy Model
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 93]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ 4. Forward the request to each target (Section 16.6)
+
+ 5. Process all responses (Section 16.7)
+
+16.3 Request Validation
+
+ Before an element can proxy a request, it MUST verify the message's
+ validity. A valid message must pass the following checks:
+
+ 1. Reasonable Syntax
+
+ 2. URI scheme
+
+ 3. Max-Forwards
+
+ 4. (Optional) Loop Detection
+
+ 5. Proxy-Require
+
+ 6. Proxy-Authorization
+
+ If any of these checks fail, the element MUST behave as a user agent
+ server (see Section 8.2) and respond with an error code.
+
+ Notice that a proxy is not required to detect merged requests and
+ MUST NOT treat merged requests as an error condition. The endpoints
+ receiving the requests will resolve the merge as described in Section
+ 8.2.2.2.
+
+ 1. Reasonable syntax check
+
+ The request MUST be well-formed enough to be handled with a server
+ transaction. Any components involved in the remainder of these
+ Request Validation steps or the Request Forwarding section MUST be
+ well-formed. Any other components, well-formed or not, SHOULD be
+ ignored and remain unchanged when the message is forwarded. For
+ instance, an element would not reject a request because of a
+ malformed Date header field. Likewise, a proxy would not remove a
+ malformed Date header field before forwarding a request.
+
+ This protocol is designed to be extended. Future extensions may
+ define new methods and header fields at any time. An element MUST
+ NOT refuse to proxy a request because it contains a method or
+ header field it does not know about.
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 94]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ 2. URI scheme check
+
+ If the Request-URI has a URI whose scheme is not understood by the
+ proxy, the proxy SHOULD reject the request with a 416 (Unsupported
+ URI Scheme) response.
+
+ 3. Max-Forwards check
+
+ The Max-Forwards header field (Section 20.22) is used to limit the
+ number of elements a SIP request can traverse.
+
+ If the request does not contain a Max-Forwards header field, this
+ check is passed.
+
+ If the request contains a Max-Forwards header field with a field
+ value greater than zero, the check is passed.
+
+ If the request contains a Max-Forwards header field with a field
+ value of zero (0), the element MUST NOT forward the request. If
+ the request was for OPTIONS, the element MAY act as the final
+ recipient and respond per Section 11. Otherwise, the element MUST
+ return a 483 (Too many hops) response.
+
+ 4. Optional Loop Detection check
+
+ An element MAY check for forwarding loops before forwarding a
+ request. If the request contains a Via header field with a sent-
+ by value that equals a value placed into previous requests by the
+ proxy, the request has been forwarded by this element before. The
+ request has either looped or is legitimately spiraling through the
+ element. To determine if the request has looped, the element MAY
+ perform the branch parameter calculation described in Step 8 of
+ Section 16.6 on this message and compare it to the parameter
+ received in that Via header field. If the parameters match, the
+ request has looped. If they differ, the request is spiraling, and
+ processing continues. If a loop is detected, the element MAY
+ return a 482 (Loop Detected) response.
+
+ 5. Proxy-Require check
+
+ Future extensions to this protocol may introduce features that
+ require special handling by proxies. Endpoints will include a
+ Proxy-Require header field in requests that use these features,
+ telling the proxy not to process the request unless the feature is
+ understood.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 95]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ If the request contains a Proxy-Require header field (Section
+ 20.29) with one or more option-tags this element does not
+ understand, the element MUST return a 420 (Bad Extension)
+ response. The response MUST include an Unsupported (Section
+ 20.40) header field listing those option-tags the element did not
+ understand.
+
+ 6. Proxy-Authorization check
+
+ If an element requires credentials before forwarding a request,
+ the request MUST be inspected as described in Section 22.3. That
+ section also defines what the element must do if the inspection
+ fails.
+
+16.4 Route Information Preprocessing
+
+ The proxy MUST inspect the Request-URI of the request. If the
+ Request-URI of the request contains a value this proxy previously
+ placed into a Record-Route header field (see Section 16.6 item 4),
+ the proxy MUST replace the Request-URI in the request with the last
+ value from the Route header field, and remove that value from the
+ Route header field. The proxy MUST then proceed as if it received
+ this modified request.
+
+ This will only happen when the element sending the request to the
+ proxy (which may have been an endpoint) is a strict router. This
+ rewrite on receive is necessary to enable backwards compatibility
+ with those elements. It also allows elements following this
+ specification to preserve the Request-URI through strict-routing
+ proxies (see Section 12.2.1.1).
+
+ This requirement does not obligate a proxy to keep state in order
+ to detect URIs it previously placed in Record-Route header fields.
+ Instead, a proxy need only place enough information in those URIs
+ to recognize them as values it provided when they later appear.
+
+ If the Request-URI contains a maddr parameter, the proxy MUST check
+ to see if its value is in the set of addresses or domains the proxy
+ is configured to be responsible for. If the Request-URI has a maddr
+ parameter with a value the proxy is responsible for, and the request
+ was received using the port and transport indicated (explicitly or by
+ default) in the Request-URI, the proxy MUST strip the maddr and any
+ non-default port or transport parameter and continue processing as if
+ those values had not been present in the request.
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 96]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ A request may arrive with a maddr matching the proxy, but on a
+ port or transport different from that indicated in the URI. Such
+ a request needs to be forwarded to the proxy using the indicated
+ port and transport.
+
+ If the first value in the Route header field indicates this proxy,
+ the proxy MUST remove that value from the request.
+
+16.5 Determining Request Targets
+
+ Next, the proxy calculates the target(s) of the request. The set of
+ targets will either be predetermined by the contents of the request
+ or will be obtained from an abstract location service. Each target
+ in the set is represented as a URI.
+
+ If the Request-URI of the request contains an maddr parameter, the
+ Request-URI MUST be placed into the target set as the only target
+ URI, and the proxy MUST proceed to Section 16.6.
+
+ If the domain of the Request-URI indicates a domain this element is
+ not responsible for, the Request-URI MUST be placed into the target
+ set as the only target, and the element MUST proceed to the task of
+ Request Forwarding (Section 16.6).
+
+ There are many circumstances in which a proxy might receive a
+ request for a domain it is not responsible for. A firewall proxy
+ handling outgoing calls (the way HTTP proxies handle outgoing
+ requests) is an example of where this is likely to occur.
+
+ If the target set for the request has not been predetermined as
+ described above, this implies that the element is responsible for the
+ domain in the Request-URI, and the element MAY use whatever mechanism
+ it desires to determine where to send the request. Any of these
+ mechanisms can be modeled as accessing an abstract Location Service.
+ This may consist of obtaining information from a location service
+ created by a SIP Registrar, reading a database, consulting a presence
+ server, utilizing other protocols, or simply performing an
+ algorithmic substitution on the Request-URI. When accessing the
+ location service constructed by a registrar, the Request-URI MUST
+ first be canonicalized as described in Section 10.3 before being used
+ as an index. The output of these mechanisms is used to construct the
+ target set.
+
+ If the Request-URI does not provide sufficient information for the
+ proxy to determine the target set, it SHOULD return a 485 (Ambiguous)
+ response. This response SHOULD contain a Contact header field
+ containing URIs of new addresses to be tried. For example, an INVITE
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 97]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ to sip:John.Smith@company.com may be ambiguous at a proxy whose
+ location service has multiple John Smiths listed. See Section
+ 21.4.23 for details.
+
+ Any information in or about the request or the current environment of
+ the element MAY be used in the construction of the target set. For
+ instance, different sets may be constructed depending on contents or
+ the presence of header fields and bodies, the time of day of the
+ request's arrival, the interface on which the request arrived,
+ failure of previous requests, or even the element's current level of
+ utilization.
+
+ As potential targets are located through these services, their URIs
+ are added to the target set. Targets can only be placed in the
+ target set once. If a target URI is already present in the set
+ (based on the definition of equality for the URI type), it MUST NOT
+ be added again.
+
+ A proxy MUST NOT add additional targets to the target set if the
+ Request-URI of the original request does not indicate a resource this
+ proxy is responsible for.
+
+ A proxy can only change the Request-URI of a request during
+ forwarding if it is responsible for that URI. If the proxy is not
+ responsible for that URI, it will not recurse on 3xx or 416
+ responses as described below.
+
+ If the Request-URI of the original request indicates a resource this
+ proxy is responsible for, the proxy MAY continue to add targets to
+ the set after beginning Request Forwarding. It MAY use any
+ information obtained during that processing to determine new targets.
+ For instance, a proxy may choose to incorporate contacts obtained in
+ a redirect response (3xx) into the target set. If a proxy uses a
+ dynamic source of information while building the target set (for
+ instance, if it consults a SIP Registrar), it SHOULD monitor that
+ source for the duration of processing the request. New locations
+ SHOULD be added to the target set as they become available. As
+ above, any given URI MUST NOT be added to the set more than once.
+
+ Allowing a URI to be added to the set only once reduces
+ unnecessary network traffic, and in the case of incorporating
+ contacts from redirect requests prevents infinite recursion.
+
+ For example, a trivial location service is a "no-op", where the
+ target URI is equal to the incoming request URI. The request is sent
+ to a specific next hop proxy for further processing. During request
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 98]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ forwarding of Section 16.6, Item 6, the identity of that next hop,
+ expressed as a SIP or SIPS URI, is inserted as the top-most Route
+ header field value into the request.
+
+ If the Request-URI indicates a resource at this proxy that does not
+ exist, the proxy MUST return a 404 (Not Found) response.
+
+ If the target set remains empty after applying all of the above, the
+ proxy MUST return an error response, which SHOULD be the 480
+ (Temporarily Unavailable) response.
+
+16.6 Request Forwarding
+
+ As soon as the target set is non-empty, a proxy MAY begin forwarding
+ the request. A stateful proxy MAY process the set in any order. It
+ MAY process multiple targets serially, allowing each client
+ transaction to complete before starting the next. It MAY start
+ client transactions with every target in parallel. It also MAY
+ arbitrarily divide the set into groups, processing the groups
+ serially and processing the targets in each group in parallel.
+
+ A common ordering mechanism is to use the qvalue parameter of targets
+ obtained from Contact header fields (see Section 20.10). Targets are
+ processed from highest qvalue to lowest. Targets with equal qvalues
+ may be processed in parallel.
+
+ A stateful proxy must have a mechanism to maintain the target set as
+ responses are received and associate the responses to each forwarded
+ request with the original request. For the purposes of this model,
+ this mechanism is a "response context" created by the proxy layer
+ before forwarding the first request.
+
+ For each target, the proxy forwards the request following these
+ steps:
+
+ 1. Make a copy of the received request
+
+ 2. Update the Request-URI
+
+ 3. Update the Max-Forwards header field
+
+ 4. Optionally add a Record-route header field value
+
+ 5. Optionally add additional header fields
+
+ 6. Postprocess routing information
+
+ 7. Determine the next-hop address, port, and transport
+
+
+
+Rosenberg, et. al. Standards Track [Page 99]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ 8. Add a Via header field value
+
+ 9. Add a Content-Length header field if necessary
+
+ 10. Forward the new request
+
+ 11. Set timer C
+
+ Each of these steps is detailed below:
+
+ 1. Copy request
+
+ The proxy starts with a copy of the received request. The copy
+ MUST initially contain all of the header fields from the
+ received request. Fields not detailed in the processing
+ described below MUST NOT be removed. The copy SHOULD maintain
+ the ordering of the header fields as in the received request.
+ The proxy MUST NOT reorder field values with a common field
+ name (See Section 7.3.1). The proxy MUST NOT add to, modify,
+ or remove the message body.
+
+ An actual implementation need not perform a copy; the primary
+ requirement is that the processing for each next hop begin with
+ the same request.
+
+ 2. Request-URI
+
+ The Request-URI in the copy's start line MUST be replaced with
+ the URI for this target. If the URI contains any parameters
+ not allowed in a Request-URI, they MUST be removed.
+
+ This is the essence of a proxy's role. This is the mechanism
+ through which a proxy routes a request toward its destination.
+
+ In some circumstances, the received Request-URI is placed into
+ the target set without being modified. For that target, the
+ replacement above is effectively a no-op.
+
+ 3. Max-Forwards
+
+ If the copy contains a Max-Forwards header field, the proxy
+ MUST decrement its value by one (1).
+
+ If the copy does not contain a Max-Forwards header field, the
+ proxy MUST add one with a field value, which SHOULD be 70.
+
+ Some existing UAs will not provide a Max-Forwards header field
+ in a request.
+
+
+
+Rosenberg, et. al. Standards Track [Page 100]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ 4. Record-Route
+
+ If this proxy wishes to remain on the path of future requests
+ in a dialog created by this request (assuming the request
+ creates a dialog), it MUST insert a Record-Route header field
+ value into the copy before any existing Record-Route header
+ field values, even if a Route header field is already present.
+
+ Requests establishing a dialog may contain a preloaded Route
+ header field.
+
+ If this request is already part of a dialog, the proxy SHOULD
+ insert a Record-Route header field value if it wishes to remain
+ on the path of future requests in the dialog. In normal
+ endpoint operation as described in Section 12, these Record-
+ Route header field values will not have any effect on the route
+ sets used by the endpoints.
+
+ The proxy will remain on the path if it chooses to not insert a
+ Record-Route header field value into requests that are already
+ part of a dialog. However, it would be removed from the path
+ when an endpoint that has failed reconstitutes the dialog.
+
+ A proxy MAY insert a Record-Route header field value into any
+ request. If the request does not initiate a dialog, the
+ endpoints will ignore the value. See Section 12 for details on
+ how endpoints use the Record-Route header field values to
+ construct Route header fields.
+
+ Each proxy in the path of a request chooses whether to add a
+ Record-Route header field value independently - the presence of
+ a Record-Route header field in a request does not obligate this
+ proxy to add a value.
+
+ The URI placed in the Record-Route header field value MUST be a
+ SIP or SIPS URI. This URI MUST contain an lr parameter (see
+ Section 19.1.1). This URI MAY be different for each
+ destination the request is forwarded to. The URI SHOULD NOT
+ contain the transport parameter unless the proxy has knowledge
+ (such as in a private network) that the next downstream element
+ that will be in the path of subsequent requests supports that
+ transport.
+
+ The URI this proxy provides will be used by some other element
+ to make a routing decision. This proxy, in general, has no way
+ of knowing the capabilities of that element, so it must
+ restrict itself to the mandatory elements of a SIP
+ implementation: SIP URIs and either the TCP or UDP transports.
+
+
+
+Rosenberg, et. al. Standards Track [Page 101]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The URI placed in the Record-Route header field MUST resolve to
+ the element inserting it (or a suitable stand-in) when the
+ server location procedures of [4] are applied to it, so that
+ subsequent requests reach the same SIP element. If the
+ Request-URI contains a SIPS URI, or the topmost Route header
+ field value (after the post processing of bullet 6) contains a
+ SIPS URI, the URI placed into the Record-Route header field
+ MUST be a SIPS URI. Furthermore, if the request was not
+ received over TLS, the proxy MUST insert a Record-Route header
+ field. In a similar fashion, a proxy that receives a request
+ over TLS, but generates a request without a SIPS URI in the
+ Request-URI or topmost Route header field value (after the post
+ processing of bullet 6), MUST insert a Record-Route header
+ field that is not a SIPS URI.
+
+ A proxy at a security perimeter must remain on the perimeter
+ throughout the dialog.
+
+ If the URI placed in the Record-Route header field needs to be
+ rewritten when it passes back through in a response, the URI
+ MUST be distinct enough to locate at that time. (The request
+ may spiral through this proxy, resulting in more than one
+ Record-Route header field value being added). Item 8 of
+ Section 16.7 recommends a mechanism to make the URI
+ sufficiently distinct.
+
+ The proxy MAY include parameters in the Record-Route header
+ field value. These will be echoed in some responses to the
+ request such as the 200 (OK) responses to INVITE. Such
+ parameters may be useful for keeping state in the message
+ rather than the proxy.
+
+ If a proxy needs to be in the path of any type of dialog (such
+ as one straddling a firewall), it SHOULD add a Record-Route
+ header field value to every request with a method it does not
+ understand since that method may have dialog semantics.
+
+ The URI a proxy places into a Record-Route header field is only
+ valid for the lifetime of any dialog created by the transaction
+ in which it occurs. A dialog-stateful proxy, for example, MAY
+ refuse to accept future requests with that value in the
+ Request-URI after the dialog has terminated. Non-dialog-
+ stateful proxies, of course, have no concept of when the dialog
+ has terminated, but they MAY encode enough information in the
+ value to compare it against the dialog identifier of future
+ requests and MAY reject requests not matching that information.
+ Endpoints MUST NOT use a URI obtained from a Record-Route
+ header field outside the dialog in which it was provided. See
+
+
+
+Rosenberg, et. al. Standards Track [Page 102]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Section 12 for more information on an endpoint's use of
+ Record-Route header fields.
+
+ Record-routing may be required by certain services where the
+ proxy needs to observe all messages in a dialog. However, it
+ slows down processing and impairs scalability and thus proxies
+ should only record-route if required for a particular service.
+
+ The Record-Route process is designed to work for any SIP
+ request that initiates a dialog. INVITE is the only such
+ request in this specification, but extensions to the protocol
+ MAY define others.
+
+ 5. Add Additional Header Fields
+
+ The proxy MAY add any other appropriate header fields to the
+ copy at this point.
+
+ 6. Postprocess routing information
+
+ A proxy MAY have a local policy that mandates that a request
+ visit a specific set of proxies before being delivered to the
+ destination. A proxy MUST ensure that all such proxies are
+ loose routers. Generally, this can only be known with
+ certainty if the proxies are within the same administrative
+ domain. This set of proxies is represented by a set of URIs
+ (each of which contains the lr parameter). This set MUST be
+ pushed into the Route header field of the copy ahead of any
+ existing values, if present. If the Route header field is
+ absent, it MUST be added, containing that list of URIs.
+
+ If the proxy has a local policy that mandates that the request
+ visit one specific proxy, an alternative to pushing a Route
+ value into the Route header field is to bypass the forwarding
+ logic of item 10 below, and instead just send the request to
+ the address, port, and transport for that specific proxy. If
+ the request has a Route header field, this alternative MUST NOT
+ be used unless it is known that next hop proxy is a loose
+ router. Otherwise, this approach MAY be used, but the Route
+ insertion mechanism above is preferred for its robustness,
+ flexibility, generality and consistency of operation.
+ Furthermore, if the Request-URI contains a SIPS URI, TLS MUST
+ be used to communicate with that proxy.
+
+ If the copy contains a Route header field, the proxy MUST
+ inspect the URI in its first value. If that URI does not
+ contain an lr parameter, the proxy MUST modify the copy as
+ follows:
+
+
+
+Rosenberg, et. al. Standards Track [Page 103]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ - The proxy MUST place the Request-URI into the Route header
+ field as the last value.
+
+ - The proxy MUST then place the first Route header field value
+ into the Request-URI and remove that value from the Route
+ header field.
+
+ Appending the Request-URI to the Route header field is part of
+ a mechanism used to pass the information in that Request-URI
+ through strict-routing elements. "Popping" the first Route
+ header field value into the Request-URI formats the message the
+ way a strict-routing element expects to receive it (with its
+ own URI in the Request-URI and the next location to visit in
+ the first Route header field value).
+
+ 7. Determine Next-Hop Address, Port, and Transport
+
+ The proxy MAY have a local policy to send the request to a
+ specific IP address, port, and transport, independent of the
+ values of the Route and Request-URI. Such a policy MUST NOT be
+ used if the proxy is not certain that the IP address, port, and
+ transport correspond to a server that is a loose router.
+ However, this mechanism for sending the request through a
+ specific next hop is NOT RECOMMENDED; instead a Route header
+ field should be used for that purpose as described above.
+
+ In the absence of such an overriding mechanism, the proxy
+ applies the procedures listed in [4] as follows to determine
+ where to send the request. If the proxy has reformatted the
+ request to send to a strict-routing element as described in
+ step 6 above, the proxy MUST apply those procedures to the
+ Request-URI of the request. Otherwise, the proxy MUST apply
+ the procedures to the first value in the Route header field, if
+ present, else the Request-URI. The procedures will produce an
+ ordered set of (address, port, transport) tuples.
+ Independently of which URI is being used as input to the
+ procedures of [4], if the Request-URI specifies a SIPS
+ resource, the proxy MUST follow the procedures of [4] as if the
+ input URI were a SIPS URI.
+
+ As described in [4], the proxy MUST attempt to deliver the
+ message to the first tuple in that set, and proceed through the
+ set in order until the delivery attempt succeeds.
+
+ For each tuple attempted, the proxy MUST format the message as
+ appropriate for the tuple and send the request using a new
+ client transaction as detailed in steps 8 through 10.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 104]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Since each attempt uses a new client transaction, it represents
+ a new branch. Thus, the branch parameter provided with the Via
+ header field inserted in step 8 MUST be different for each
+ attempt.
+
+ If the client transaction reports failure to send the request
+ or a timeout from its state machine, the proxy continues to the
+ next address in that ordered set. If the ordered set is
+ exhausted, the request cannot be forwarded to this element in
+ the target set. The proxy does not need to place anything in
+ the response context, but otherwise acts as if this element of
+ the target set returned a 408 (Request Timeout) final response.
+
+ 8. Add a Via header field value
+
+ The proxy MUST insert a Via header field value into the copy
+ before the existing Via header field values. The construction
+ of this value follows the same guidelines of Section 8.1.1.7.
+ This implies that the proxy will compute its own branch
+ parameter, which will be globally unique for that branch, and
+ contain the requisite magic cookie. Note that this implies that
+ the branch parameter will be different for different instances
+ of a spiraled or looped request through a proxy.
+
+ Proxies choosing to detect loops have an additional constraint
+ in the value they use for construction of the branch parameter.
+ A proxy choosing to detect loops SHOULD create a branch
+ parameter separable into two parts by the implementation. The
+ first part MUST satisfy the constraints of Section 8.1.1.7 as
+ described above. The second is used to perform loop detection
+ and distinguish loops from spirals.
+
+ Loop detection is performed by verifying that, when a request
+ returns to a proxy, those fields having an impact on the
+ processing of the request have not changed. The value placed
+ in this part of the branch parameter SHOULD reflect all of
+ those fields (including any Route, Proxy-Require and Proxy-
+ Authorization header fields). This is to ensure that if the
+ request is routed back to the proxy and one of those fields
+ changes, it is treated as a spiral and not a loop (see Section
+ 16.3). A common way to create this value is to compute a
+ cryptographic hash of the To tag, From tag, Call-ID header
+ field, the Request-URI of the request received (before
+ translation), the topmost Via header, and the sequence number
+ from the CSeq header field, in addition to any Proxy-Require
+ and Proxy-Authorization header fields that may be present. The
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 105]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ algorithm used to compute the hash is implementation-dependent,
+ but MD5 (RFC 1321 [35]), expressed in hexadecimal, is a
+ reasonable choice. (Base64 is not permissible for a token.)
+
+ If a proxy wishes to detect loops, the "branch" parameter it
+ supplies MUST depend on all information affecting processing of
+ a request, including the incoming Request-URI and any header
+ fields affecting the request's admission or routing. This is
+ necessary to distinguish looped requests from requests whose
+ routing parameters have changed before returning to this
+ server.
+
+ The request method MUST NOT be included in the calculation of
+ the branch parameter. In particular, CANCEL and ACK requests
+ (for non-2xx responses) MUST have the same branch value as the
+ corresponding request they cancel or acknowledge. The branch
+ parameter is used in correlating those requests at the server
+ handling them (see Sections 17.2.3 and 9.2).
+
+ 9. Add a Content-Length header field if necessary
+
+ If the request will be sent to the next hop using a stream-
+ based transport and the copy contains no Content-Length header
+ field, the proxy MUST insert one with the correct value for the
+ body of the request (see Section 20.14).
+
+ 10. Forward Request
+
+ A stateful proxy MUST create a new client transaction for this
+ request as described in Section 17.1 and instructs the
+ transaction to send the request using the address, port and
+ transport determined in step 7.
+
+ 11. Set timer C
+
+ In order to handle the case where an INVITE request never
+ generates a final response, the TU uses a timer which is called
+ timer C. Timer C MUST be set for each client transaction when
+ an INVITE request is proxied. The timer MUST be larger than 3
+ minutes. Section 16.7 bullet 2 discusses how this timer is
+ updated with provisional responses, and Section 16.8 discusses
+ processing when it fires.
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 106]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+16.7 Response Processing
+
+ When a response is received by an element, it first tries to locate a
+ client transaction (Section 17.1.3) matching the response. If none
+ is found, the element MUST process the response (even if it is an
+ informational response) as a stateless proxy (described below). If a
+ match is found, the response is handed to the client transaction.
+
+ Forwarding responses for which a client transaction (or more
+ generally any knowledge of having sent an associated request) is
+ not found improves robustness. In particular, it ensures that
+ "late" 2xx responses to INVITE requests are forwarded properly.
+
+ As client transactions pass responses to the proxy layer, the
+ following processing MUST take place:
+
+ 1. Find the appropriate response context
+
+ 2. Update timer C for provisional responses
+
+ 3. Remove the topmost Via
+
+ 4. Add the response to the response context
+
+ 5. Check to see if this response should be forwarded immediately
+
+ 6. When necessary, choose the best final response from the
+ response context
+
+ If no final response has been forwarded after every client
+ transaction associated with the response context has been terminated,
+ the proxy must choose and forward the "best" response from those it
+ has seen so far.
+
+ The following processing MUST be performed on each response that is
+ forwarded. It is likely that more than one response to each request
+ will be forwarded: at least each provisional and one final response.
+
+ 7. Aggregate authorization header field values if necessary
+
+ 8. Optionally rewrite Record-Route header field values
+
+ 9. Forward the response
+
+ 10. Generate any necessary CANCEL requests
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 107]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Each of the above steps are detailed below:
+
+ 1. Find Context
+
+ The proxy locates the "response context" it created before
+ forwarding the original request using the key described in
+ Section 16.6. The remaining processing steps take place in
+ this context.
+
+ 2. Update timer C for provisional responses
+
+ For an INVITE transaction, if the response is a provisional
+ response with status codes 101 to 199 inclusive (i.e., anything
+ but 100), the proxy MUST reset timer C for that client
+ transaction. The timer MAY be reset to a different value, but
+ this value MUST be greater than 3 minutes.
+
+ 3. Via
+
+ The proxy removes the topmost Via header field value from the
+ response.
+
+ If no Via header field values remain in the response, the
+ response was meant for this element and MUST NOT be forwarded.
+ The remainder of the processing described in this section is
+ not performed on this message, the UAC processing rules
+ described in Section 8.1.3 are followed instead (transport
+ layer processing has already occurred).
+
+ This will happen, for instance, when the element generates
+ CANCEL requests as described in Section 10.
+
+ 4. Add response to context
+
+ Final responses received are stored in the response context
+ until a final response is generated on the server transaction
+ associated with this context. The response may be a candidate
+ for the best final response to be returned on that server
+ transaction. Information from this response may be needed in
+ forming the best response, even if this response is not chosen.
+
+ If the proxy chooses to recurse on any contacts in a 3xx
+ response by adding them to the target set, it MUST remove them
+ from the response before adding the response to the response
+ context. However, a proxy SHOULD NOT recurse to a non-SIPS URI
+ if the Request-URI of the original request was a SIPS URI. If
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 108]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ the proxy recurses on all of the contacts in a 3xx response,
+ the proxy SHOULD NOT add the resulting contactless response to
+ the response context.
+
+ Removing the contact before adding the response to the response
+ context prevents the next element upstream from retrying a
+ location this proxy has already attempted.
+
+ 3xx responses may contain a mixture of SIP, SIPS, and non-SIP
+ URIs. A proxy may choose to recurse on the SIP and SIPS URIs
+ and place the remainder into the response context to be
+ returned, potentially in the final response.
+
+ If a proxy receives a 416 (Unsupported URI Scheme) response to
+ a request whose Request-URI scheme was not SIP, but the scheme
+ in the original received request was SIP or SIPS (that is, the
+ proxy changed the scheme from SIP or SIPS to something else
+ when it proxied a request), the proxy SHOULD add a new URI to
+ the target set. This URI SHOULD be a SIP URI version of the
+ non-SIP URI that was just tried. In the case of the tel URL,
+ this is accomplished by placing the telephone-subscriber part
+ of the tel URL into the user part of the SIP URI, and setting
+ the hostpart to the domain where the prior request was sent.
+ See Section 19.1.6 for more detail on forming SIP URIs from tel
+ URLs.
+
+ As with a 3xx response, if a proxy "recurses" on the 416 by
+ trying a SIP or SIPS URI instead, the 416 response SHOULD NOT
+ be added to the response context.
+
+ 5. Check response for forwarding
+
+ Until a final response has been sent on the server transaction,
+ the following responses MUST be forwarded immediately:
+
+ - Any provisional response other than 100 (Trying)
+
+ - Any 2xx response
+
+ If a 6xx response is received, it is not immediately forwarded,
+ but the stateful proxy SHOULD cancel all client pending
+ transactions as described in Section 10, and it MUST NOT create
+ any new branches in this context.
+
+ This is a change from RFC 2543, which mandated that the proxy
+ was to forward the 6xx response immediately. For an INVITE
+ transaction, this approach had the problem that a 2xx response
+ could arrive on another branch, in which case the proxy would
+
+
+
+Rosenberg, et. al. Standards Track [Page 109]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ have to forward the 2xx. The result was that the UAC could
+ receive a 6xx response followed by a 2xx response, which should
+ never be allowed to happen. Under the new rules, upon
+ receiving a 6xx, a proxy will issue a CANCEL request, which
+ will generally result in 487 responses from all outstanding
+ client transactions, and then at that point the 6xx is
+ forwarded upstream.
+
+ After a final response has been sent on the server transaction,
+ the following responses MUST be forwarded immediately:
+
+ - Any 2xx response to an INVITE request
+
+ A stateful proxy MUST NOT immediately forward any other
+ responses. In particular, a stateful proxy MUST NOT forward
+ any 100 (Trying) response. Those responses that are candidates
+ for forwarding later as the "best" response have been gathered
+ as described in step "Add Response to Context".
+
+ Any response chosen for immediate forwarding MUST be processed
+ as described in steps "Aggregate Authorization Header Field
+ Values" through "Record-Route".
+
+ This step, combined with the next, ensures that a stateful
+ proxy will forward exactly one final response to a non-INVITE
+ request, and either exactly one non-2xx response or one or more
+ 2xx responses to an INVITE request.
+
+ 6. Choosing the best response
+
+ A stateful proxy MUST send a final response to a response
+ context's server transaction if no final responses have been
+ immediately forwarded by the above rules and all client
+ transactions in this response context have been terminated.
+
+ The stateful proxy MUST choose the "best" final response among
+ those received and stored in the response context.
+
+ If there are no final responses in the context, the proxy MUST
+ send a 408 (Request Timeout) response to the server
+ transaction.
+
+ Otherwise, the proxy MUST forward a response from the responses
+ stored in the response context. It MUST choose from the 6xx
+ class responses if any exist in the context. If no 6xx class
+ responses are present, the proxy SHOULD choose from the lowest
+ response class stored in the response context. The proxy MAY
+ select any response within that chosen class. The proxy SHOULD
+
+
+
+Rosenberg, et. al. Standards Track [Page 110]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ give preference to responses that provide information affecting
+ resubmission of this request, such as 401, 407, 415, 420, and
+ 484 if the 4xx class is chosen.
+
+ A proxy which receives a 503 (Service Unavailable) response
+ SHOULD NOT forward it upstream unless it can determine that any
+ subsequent requests it might proxy will also generate a 503.
+ In other words, forwarding a 503 means that the proxy knows it
+ cannot service any requests, not just the one for the Request-
+ URI in the request which generated the 503. If the only
+ response that was received is a 503, the proxy SHOULD generate
+ a 500 response and forward that upstream.
+
+ The forwarded response MUST be processed as described in steps
+ "Aggregate Authorization Header Field Values" through "Record-
+ Route".
+
+ For example, if a proxy forwarded a request to 4 locations, and
+ received 503, 407, 501, and 404 responses, it may choose to
+ forward the 407 (Proxy Authentication Required) response.
+
+ 1xx and 2xx responses may be involved in the establishment of
+ dialogs. When a request does not contain a To tag, the To tag
+ in the response is used by the UAC to distinguish multiple
+ responses to a dialog creating request. A proxy MUST NOT
+ insert a tag into the To header field of a 1xx or 2xx response
+ if the request did not contain one. A proxy MUST NOT modify
+ the tag in the To header field of a 1xx or 2xx response.
+
+ Since a proxy may not insert a tag into the To header field of
+ a 1xx response to a request that did not contain one, it cannot
+ issue non-100 provisional responses on its own. However, it
+ can branch the request to a UAS sharing the same element as the
+ proxy. This UAS can return its own provisional responses,
+ entering into an early dialog with the initiator of the
+ request. The UAS does not have to be a discreet process from
+ the proxy. It could be a virtual UAS implemented in the same
+ code space as the proxy.
+
+ 3-6xx responses are delivered hop-by-hop. When issuing a 3-6xx
+ response, the element is effectively acting as a UAS, issuing
+ its own response, usually based on the responses received from
+ downstream elements. An element SHOULD preserve the To tag
+ when simply forwarding a 3-6xx response to a request that did
+ not contain a To tag.
+
+ A proxy MUST NOT modify the To tag in any forwarded response to
+ a request that contains a To tag.
+
+
+
+Rosenberg, et. al. Standards Track [Page 111]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ While it makes no difference to the upstream elements if the
+ proxy replaced the To tag in a forwarded 3-6xx response,
+ preserving the original tag may assist with debugging.
+
+ When the proxy is aggregating information from several
+ responses, choosing a To tag from among them is arbitrary, and
+ generating a new To tag may make debugging easier. This
+ happens, for instance, when combining 401 (Unauthorized) and
+ 407 (Proxy Authentication Required) challenges, or combining
+ Contact values from unencrypted and unauthenticated 3xx
+ responses.
+
+ 7. Aggregate Authorization Header Field Values
+
+ If the selected response is a 401 (Unauthorized) or 407 (Proxy
+ Authentication Required), the proxy MUST collect any WWW-
+ Authenticate and Proxy-Authenticate header field values from
+ all other 401 (Unauthorized) and 407 (Proxy Authentication
+ Required) responses received so far in this response context
+ and add them to this response without modification before
+ forwarding. The resulting 401 (Unauthorized) or 407 (Proxy
+ Authentication Required) response could have several WWW-
+ Authenticate AND Proxy-Authenticate header field values.
+
+ This is necessary because any or all of the destinations the
+ request was forwarded to may have requested credentials. The
+ client needs to receive all of those challenges and supply
+ credentials for each of them when it retries the request.
+ Motivation for this behavior is provided in Section 26.
+
+ 8. Record-Route
+
+ If the selected response contains a Record-Route header field
+ value originally provided by this proxy, the proxy MAY choose
+ to rewrite the value before forwarding the response. This
+ allows the proxy to provide different URIs for itself to the
+ next upstream and downstream elements. A proxy may choose to
+ use this mechanism for any reason. For instance, it is useful
+ for multi-homed hosts.
+
+ If the proxy received the request over TLS, and sent it out
+ over a non-TLS connection, the proxy MUST rewrite the URI in
+ the Record-Route header field to be a SIPS URI. If the proxy
+ received the request over a non-TLS connection, and sent it out
+ over TLS, the proxy MUST rewrite the URI in the Record-Route
+ header field to be a SIP URI.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 112]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The new URI provided by the proxy MUST satisfy the same
+ constraints on URIs placed in Record-Route header fields in
+ requests (see Step 4 of Section 16.6) with the following
+ modifications:
+
+ The URI SHOULD NOT contain the transport parameter unless the
+ proxy has knowledge that the next upstream (as opposed to
+ downstream) element that will be in the path of subsequent
+ requests supports that transport.
+
+ When a proxy does decide to modify the Record-Route header
+ field in the response, one of the operations it performs is
+ locating the Record-Route value that it had inserted. If the
+ request spiraled, and the proxy inserted a Record-Route value
+ in each iteration of the spiral, locating the correct value in
+ the response (which must be the proper iteration in the reverse
+ direction) is tricky. The rules above recommend that a proxy
+ wishing to rewrite Record-Route header field values insert
+ sufficiently distinct URIs into the Record-Route header field
+ so that the right one may be selected for rewriting. A
+ RECOMMENDED mechanism to achieve this is for the proxy to
+ append a unique identifier for the proxy instance to the user
+ portion of the URI.
+
+ When the response arrives, the proxy modifies the first
+ Record-Route whose identifier matches the proxy instance. The
+ modification results in a URI without this piece of data
+ appended to the user portion of the URI. Upon the next
+ iteration, the same algorithm (find the topmost Record-Route
+ header field value with the parameter) will correctly extract
+ the next Record-Route header field value inserted by that
+ proxy.
+
+ Not every response to a request to which a proxy adds a
+ Record-Route header field value will contain a Record-Route
+ header field. If the response does contain a Record-Route
+ header field, it will contain the value the proxy added.
+
+ 9. Forward response
+
+ After performing the processing described in steps "Aggregate
+ Authorization Header Field Values" through "Record-Route", the
+ proxy MAY perform any feature specific manipulations on the
+ selected response. The proxy MUST NOT add to, modify, or
+ remove the message body. Unless otherwise specified, the proxy
+ MUST NOT remove any header field values other than the Via
+ header field value discussed in Section 16.7 Item 3. In
+ particular, the proxy MUST NOT remove any "received" parameter
+
+
+
+Rosenberg, et. al. Standards Track [Page 113]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ it may have added to the next Via header field value while
+ processing the request associated with this response. The
+ proxy MUST pass the response to the server transaction
+ associated with the response context. This will result in the
+ response being sent to the location now indicated in the
+ topmost Via header field value. If the server transaction is
+ no longer available to handle the transmission, the element
+ MUST forward the response statelessly by sending it to the
+ server transport. The server transaction might indicate
+ failure to send the response or signal a timeout in its state
+ machine. These errors would be logged for diagnostic purposes
+ as appropriate, but the protocol requires no remedial action
+ from the proxy.
+
+ The proxy MUST maintain the response context until all of its
+ associated transactions have been terminated, even after
+ forwarding a final response.
+
+ 10. Generate CANCELs
+
+ If the forwarded response was a final response, the proxy MUST
+ generate a CANCEL request for all pending client transactions
+ associated with this response context. A proxy SHOULD also
+ generate a CANCEL request for all pending client transactions
+ associated with this response context when it receives a 6xx
+ response. A pending client transaction is one that has
+ received a provisional response, but no final response (it is
+ in the proceeding state) and has not had an associated CANCEL
+ generated for it. Generating CANCEL requests is described in
+ Section 9.1.
+
+ The requirement to CANCEL pending client transactions upon
+ forwarding a final response does not guarantee that an endpoint
+ will not receive multiple 200 (OK) responses to an INVITE. 200
+ (OK) responses on more than one branch may be generated before
+ the CANCEL requests can be sent and processed. Further, it is
+ reasonable to expect that a future extension may override this
+ requirement to issue CANCEL requests.
+
+16.8 Processing Timer C
+
+ If timer C should fire, the proxy MUST either reset the timer with
+ any value it chooses, or terminate the client transaction. If the
+ client transaction has received a provisional response, the proxy
+ MUST generate a CANCEL request matching that transaction. If the
+ client transaction has not received a provisional response, the proxy
+ MUST behave as if the transaction received a 408 (Request Timeout)
+ response.
+
+
+
+Rosenberg, et. al. Standards Track [Page 114]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Allowing the proxy to reset the timer allows the proxy to dynamically
+ extend the transaction's lifetime based on current conditions (such
+ as utilization) when the timer fires.
+
+16.9 Handling Transport Errors
+
+ If the transport layer notifies a proxy of an error when it tries to
+ forward a request (see Section 18.4), the proxy MUST behave as if the
+ forwarded request received a 503 (Service Unavailable) response.
+
+ If the proxy is notified of an error when forwarding a response, it
+ drops the response. The proxy SHOULD NOT cancel any outstanding
+ client transactions associated with this response context due to this
+ notification.
+
+ If a proxy cancels its outstanding client transactions, a single
+ malicious or misbehaving client can cause all transactions to fail
+ through its Via header field.
+
+16.10 CANCEL Processing
+
+ A stateful proxy MAY generate a CANCEL to any other request it has
+ generated at any time (subject to receiving a provisional response to
+ that request as described in section 9.1). A proxy MUST cancel any
+ pending client transactions associated with a response context when
+ it receives a matching CANCEL request.
+
+ A stateful proxy MAY generate CANCEL requests for pending INVITE
+ client transactions based on the period specified in the INVITE's
+ Expires header field elapsing. However, this is generally
+ unnecessary since the endpoints involved will take care of signaling
+ the end of the transaction.
+
+ While a CANCEL request is handled in a stateful proxy by its own
+ server transaction, a new response context is not created for it.
+ Instead, the proxy layer searches its existing response contexts for
+ the server transaction handling the request associated with this
+ CANCEL. If a matching response context is found, the element MUST
+ immediately return a 200 (OK) response to the CANCEL request. In
+ this case, the element is acting as a user agent server as defined in
+ Section 8.2. Furthermore, the element MUST generate CANCEL requests
+ for all pending client transactions in the context as described in
+ Section 16.7 step 10.
+
+ If a response context is not found, the element does not have any
+ knowledge of the request to apply the CANCEL to. It MUST statelessly
+ forward the CANCEL request (it may have statelessly forwarded the
+ associated request previously).
+
+
+
+Rosenberg, et. al. Standards Track [Page 115]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+16.11 Stateless Proxy
+
+ When acting statelessly, a proxy is a simple message forwarder. Much
+ of the processing performed when acting statelessly is the same as
+ when behaving statefully. The differences are detailed here.
+
+ A stateless proxy does not have any notion of a transaction, or of
+ the response context used to describe stateful proxy behavior.
+ Instead, the stateless proxy takes messages, both requests and
+ responses, directly from the transport layer (See section 18). As a
+ result, stateless proxies do not retransmit messages on their own.
+ They do, however, forward all retransmissions they receive (they do
+ not have the ability to distinguish a retransmission from the
+ original message). Furthermore, when handling a request statelessly,
+ an element MUST NOT generate its own 100 (Trying) or any other
+ provisional response.
+
+ A stateless proxy MUST validate a request as described in Section
+ 16.3
+
+ A stateless proxy MUST follow the request processing steps described
+ in Sections 16.4 through 16.5 with the following exception:
+
+ o A stateless proxy MUST choose one and only one target from the
+ target set. This choice MUST only rely on fields in the
+ message and time-invariant properties of the server. In
+ particular, a retransmitted request MUST be forwarded to the
+ same destination each time it is processed. Furthermore,
+ CANCEL and non-Routed ACK requests MUST generate the same
+ choice as their associated INVITE.
+
+ A stateless proxy MUST follow the request processing steps described
+ in Section 16.6 with the following exceptions:
+
+ o The requirement for unique branch IDs across space and time
+ applies to stateless proxies as well. However, a stateless
+ proxy cannot simply use a random number generator to compute
+ the first component of the branch ID, as described in Section
+ 16.6 bullet 8. This is because retransmissions of a request
+ need to have the same value, and a stateless proxy cannot tell
+ a retransmission from the original request. Therefore, the
+ component of the branch parameter that makes it unique MUST be
+ the same each time a retransmitted request is forwarded. Thus
+ for a stateless proxy, the branch parameter MUST be computed as
+ a combinatoric function of message parameters which are
+ invariant on retransmission.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 116]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The stateless proxy MAY use any technique it likes to guarantee
+ uniqueness of its branch IDs across transactions. However, the
+ following procedure is RECOMMENDED. The proxy examines the
+ branch ID in the topmost Via header field of the received
+ request. If it begins with the magic cookie, the first
+ component of the branch ID of the outgoing request is computed
+ as a hash of the received branch ID. Otherwise, the first
+ component of the branch ID is computed as a hash of the topmost
+ Via, the tag in the To header field, the tag in the From header
+ field, the Call-ID header field, the CSeq number (but not
+ method), and the Request-URI from the received request. One of
+ these fields will always vary across two different
+ transactions.
+
+ o All other message transformations specified in Section 16.6
+ MUST result in the same transformation of a retransmitted
+ request. In particular, if the proxy inserts a Record-Route
+ value or pushes URIs into the Route header field, it MUST place
+ the same values in retransmissions of the request. As for the
+ Via branch parameter, this implies that the transformations
+ MUST be based on time-invariant configuration or
+ retransmission-invariant properties of the request.
+
+ o A stateless proxy determines where to forward the request as
+ described for stateful proxies in Section 16.6 Item 10. The
+ request is sent directly to the transport layer instead of
+ through a client transaction.
+
+ Since a stateless proxy must forward retransmitted requests to
+ the same destination and add identical branch parameters to
+ each of them, it can only use information from the message
+ itself and time-invariant configuration data for those
+ calculations. If the configuration state is not time-invariant
+ (for example, if a routing table is updated) any requests that
+ could be affected by the change may not be forwarded
+ statelessly during an interval equal to the transaction timeout
+ window before or after the change. The method of processing
+ the affected requests in that interval is an implementation
+ decision. A common solution is to forward them transaction
+ statefully.
+
+ Stateless proxies MUST NOT perform special processing for CANCEL
+ requests. They are processed by the above rules as any other
+ requests. In particular, a stateless proxy applies the same Route
+ header field processing to CANCEL requests that it applies to any
+ other request.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 117]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Response processing as described in Section 16.7 does not apply to a
+ proxy behaving statelessly. When a response arrives at a stateless
+ proxy, the proxy MUST inspect the sent-by value in the first
+ (topmost) Via header field value. If that address matches the proxy,
+ (it equals a value this proxy has inserted into previous requests)
+ the proxy MUST remove that header field value from the response and
+ forward the result to the location indicated in the next Via header
+ field value. The proxy MUST NOT add to, modify, or remove the
+ message body. Unless specified otherwise, the proxy MUST NOT remove
+ any other header field values. If the address does not match the
+ proxy, the message MUST be silently discarded.
+
+16.12 Summary of Proxy Route Processing
+
+ In the absence of local policy to the contrary, the processing a
+ proxy performs on a request containing a Route header field can be
+ summarized in the following steps.
+
+ 1. The proxy will inspect the Request-URI. If it indicates a
+ resource owned by this proxy, the proxy will replace it with
+ the results of running a location service. Otherwise, the
+ proxy will not change the Request-URI.
+
+ 2. The proxy will inspect the URI in the topmost Route header
+ field value. If it indicates this proxy, the proxy removes it
+ from the Route header field (this route node has been
+ reached).
+
+ 3. The proxy will forward the request to the resource indicated
+ by the URI in the topmost Route header field value or in the
+ Request-URI if no Route header field is present. The proxy
+ determines the address, port and transport to use when
+ forwarding the request by applying the procedures in [4] to
+ that URI.
+
+ If no strict-routing elements are encountered on the path of the
+ request, the Request-URI will always indicate the target of the
+ request.
+
+16.12.1 Examples
+
+16.12.1.1 Basic SIP Trapezoid
+
+ This scenario is the basic SIP trapezoid, U1 -> P1 -> P2 -> U2, with
+ both proxies record-routing. Here is the flow.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 118]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ U1 sends:
+
+ INVITE sip:callee@domain.com SIP/2.0
+ Contact: sip:caller@u1.example.com
+
+ to P1. P1 is an outbound proxy. P1 is not responsible for
+ domain.com, so it looks it up in DNS and sends it there. It also
+ adds a Record-Route header field value:
+
+ INVITE sip:callee@domain.com SIP/2.0
+ Contact: sip:caller@u1.example.com
+ Record-Route: <sip:p1.example.com;lr>
+
+ P2 gets this. It is responsible for domain.com so it runs a location
+ service and rewrites the Request-URI. It also adds a Record-Route
+ header field value. There is no Route header field, so it resolves
+ the new Request-URI to determine where to send the request:
+
+ INVITE sip:callee@u2.domain.com SIP/2.0
+ Contact: sip:caller@u1.example.com
+ Record-Route: <sip:p2.domain.com;lr>
+ Record-Route: <sip:p1.example.com;lr>
+
+ The callee at u2.domain.com gets this and responds with a 200 OK:
+
+ SIP/2.0 200 OK
+ Contact: sip:callee@u2.domain.com
+ Record-Route: <sip:p2.domain.com;lr>
+ Record-Route: <sip:p1.example.com;lr>
+
+ The callee at u2 also sets its dialog state's remote target URI to
+ sip:caller@u1.example.com and its route set to:
+
+ (<sip:p2.domain.com;lr>,<sip:p1.example.com;lr>)
+
+ This is forwarded by P2 to P1 to U1 as normal. Now, U1 sets its
+ dialog state's remote target URI to sip:callee@u2.domain.com and its
+ route set to:
+
+ (<sip:p1.example.com;lr>,<sip:p2.domain.com;lr>)
+
+ Since all the route set elements contain the lr parameter, U1
+ constructs the following BYE request:
+
+ BYE sip:callee@u2.domain.com SIP/2.0
+ Route: <sip:p1.example.com;lr>,<sip:p2.domain.com;lr>
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 119]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ As any other element (including proxies) would do, it resolves the
+ URI in the topmost Route header field value using DNS to determine
+ where to send the request. This goes to P1. P1 notices that it is
+ not responsible for the resource indicated in the Request-URI so it
+ doesn't change it. It does see that it is the first value in the
+ Route header field, so it removes that value, and forwards the
+ request to P2:
+
+ BYE sip:callee@u2.domain.com SIP/2.0
+ Route: <sip:p2.domain.com;lr>
+
+ P2 also notices it is not responsible for the resource indicated by
+ the Request-URI (it is responsible for domain.com, not
+ u2.domain.com), so it doesn't change it. It does see itself in the
+ first Route header field value, so it removes it and forwards the
+ following to u2.domain.com based on a DNS lookup against the
+ Request-URI:
+
+ BYE sip:callee@u2.domain.com SIP/2.0
+
+16.12.1.2 Traversing a Strict-Routing Proxy
+
+ In this scenario, a dialog is established across four proxies, each
+ of which adds Record-Route header field values. The third proxy
+ implements the strict-routing procedures specified in RFC 2543 and
+ many works in progress.
+
+ U1->P1->P2->P3->P4->U2
+
+ The INVITE arriving at U2 contains:
+
+ INVITE sip:callee@u2.domain.com SIP/2.0
+ Contact: sip:caller@u1.example.com
+ Record-Route: <sip:p4.domain.com;lr>
+ Record-Route: <sip:p3.middle.com>
+ Record-Route: <sip:p2.example.com;lr>
+ Record-Route: <sip:p1.example.com;lr>
+
+ Which U2 responds to with a 200 OK. Later, U2 sends the following
+ BYE request to P4 based on the first Route header field value.
+
+ BYE sip:caller@u1.example.com SIP/2.0
+ Route: <sip:p4.domain.com;lr>
+ Route: <sip:p3.middle.com>
+ Route: <sip:p2.example.com;lr>
+ Route: <sip:p1.example.com;lr>
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 120]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ P4 is not responsible for the resource indicated in the Request-URI
+ so it will leave it alone. It notices that it is the element in the
+ first Route header field value so it removes it. It then prepares to
+ send the request based on the now first Route header field value of
+ sip:p3.middle.com, but it notices that this URI does not contain the
+ lr parameter, so before sending, it reformats the request to be:
+
+ BYE sip:p3.middle.com SIP/2.0
+ Route: <sip:p2.example.com;lr>
+ Route: <sip:p1.example.com;lr>
+ Route: <sip:caller@u1.example.com>
+
+ P3 is a strict router, so it forwards the following to P2:
+
+ BYE sip:p2.example.com;lr SIP/2.0
+ Route: <sip:p1.example.com;lr>
+ Route: <sip:caller@u1.example.com>
+
+ P2 sees the request-URI is a value it placed into a Record-Route
+ header field, so before further processing, it rewrites the request
+ to be:
+
+ BYE sip:caller@u1.example.com SIP/2.0
+ Route: <sip:p1.example.com;lr>
+
+ P2 is not responsible for u1.example.com, so it sends the request to
+ P1 based on the resolution of the Route header field value.
+
+ P1 notices itself in the topmost Route header field value, so it
+ removes it, resulting in:
+
+ BYE sip:caller@u1.example.com SIP/2.0
+
+ Since P1 is not responsible for u1.example.com and there is no Route
+ header field, P1 will forward the request to u1.example.com based on
+ the Request-URI.
+
+16.12.1.3 Rewriting Record-Route Header Field Values
+
+ In this scenario, U1 and U2 are in different private namespaces and
+ they enter a dialog through a proxy P1, which acts as a gateway
+ between the namespaces.
+
+ U1->P1->U2
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 121]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ U1 sends:
+
+ INVITE sip:callee@gateway.leftprivatespace.com SIP/2.0
+ Contact: <sip:caller@u1.leftprivatespace.com>
+
+ P1 uses its location service and sends the following to U2:
+
+ INVITE sip:callee@rightprivatespace.com SIP/2.0
+ Contact: <sip:caller@u1.leftprivatespace.com>
+ Record-Route: <sip:gateway.rightprivatespace.com;lr>
+
+ U2 sends this 200 (OK) back to P1:
+
+ SIP/2.0 200 OK
+ Contact: <sip:callee@u2.rightprivatespace.com>
+ Record-Route: <sip:gateway.rightprivatespace.com;lr>
+
+ P1 rewrites its Record-Route header parameter to provide a value that
+ U1 will find useful, and sends the following to U1:
+
+ SIP/2.0 200 OK
+ Contact: <sip:callee@u2.rightprivatespace.com>
+ Record-Route: <sip:gateway.leftprivatespace.com;lr>
+
+ Later, U1 sends the following BYE request to P1:
+
+ BYE sip:callee@u2.rightprivatespace.com SIP/2.0
+ Route: <sip:gateway.leftprivatespace.com;lr>
+
+ which P1 forwards to U2 as:
+
+ BYE sip:callee@u2.rightprivatespace.com SIP/2.0
+
+17 Transactions
+
+ SIP is a transactional protocol: interactions between components take
+ place in a series of independent message exchanges. Specifically, a
+ SIP transaction consists of a single request and any responses to
+ that request, which include zero or more provisional responses and
+ one or more final responses. In the case of a transaction where the
+ request was an INVITE (known as an INVITE transaction), the
+ transaction also includes the ACK only if the final response was not
+ a 2xx response. If the response was a 2xx, the ACK is not considered
+ part of the transaction.
+
+ The reason for this separation is rooted in the importance of
+ delivering all 200 (OK) responses to an INVITE to the UAC. To
+ deliver them all to the UAC, the UAS alone takes responsibility
+
+
+
+Rosenberg, et. al. Standards Track [Page 122]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ for retransmitting them (see Section 13.3.1.4), and the UAC alone
+ takes responsibility for acknowledging them with ACK (see Section
+ 13.2.2.4). Since this ACK is retransmitted only by the UAC, it is
+ effectively considered its own transaction.
+
+ Transactions have a client side and a server side. The client side
+ is known as a client transaction and the server side as a server
+ transaction. The client transaction sends the request, and the
+ server transaction sends the response. The client and server
+ transactions are logical functions that are embedded in any number of
+ elements. Specifically, they exist within user agents and stateful
+ proxy servers. Consider the example in Section 4. In this example,
+ the UAC executes the client transaction, and its outbound proxy
+ executes the server transaction. The outbound proxy also executes a
+ client transaction, which sends the request to a server transaction
+ in the inbound proxy. That proxy also executes a client transaction,
+ which in turn sends the request to a server transaction in the UAS.
+ This is shown in Figure 4.
+
+ +---------+ +---------+ +---------+ +---------+
+ | +-+|Request |+-+ +-+|Request |+-+ +-+|Request |+-+ |
+ | |C||------->||S| |C||------->||S| |C||------->||S| |
+ | |l|| ||e| |l|| ||e| |l|| ||e| |
+ | |i|| ||r| |i|| ||r| |i|| ||r| |
+ | |e|| ||v| |e|| ||v| |e|| ||v| |
+ | |n|| ||e| |n|| ||e| |n|| ||e| |
+ | |t|| ||r| |t|| ||r| |t|| ||r| |
+ | | || || | | || || | | || || | |
+ | |T|| ||T| |T|| ||T| |T|| ||T| |
+ | |r|| ||r| |r|| ||r| |r|| ||r| |
+ | |a|| ||a| |a|| ||a| |a|| ||a| |
+ | |n|| ||n| |n|| ||n| |n|| ||n| |
+ | |s||Response||s| |s||Response||s| |s||Response||s| |
+ | +-+|<-------|+-+ +-+|<-------|+-+ +-+|<-------|+-+ |
+ +---------+ +---------+ +---------+ +---------+
+ UAC Outbound Inbound UAS
+ Proxy Proxy
+
+ Figure 4: Transaction relationships
+
+ A stateless proxy does not contain a client or server transaction.
+ The transaction exists between the UA or stateful proxy on one side,
+ and the UA or stateful proxy on the other side. As far as SIP
+ transactions are concerned, stateless proxies are effectively
+ transparent. The purpose of the client transaction is to receive a
+ request from the element in which the client is embedded (call this
+ element the "Transaction User" or TU; it can be a UA or a stateful
+ proxy), and reliably deliver the request to a server transaction.
+
+
+
+Rosenberg, et. al. Standards Track [Page 123]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The client transaction is also responsible for receiving responses
+ and delivering them to the TU, filtering out any response
+ retransmissions or disallowed responses (such as a response to ACK).
+ Additionally, in the case of an INVITE request, the client
+ transaction is responsible for generating the ACK request for any
+ final response accepting a 2xx response.
+
+ Similarly, the purpose of the server transaction is to receive
+ requests from the transport layer and deliver them to the TU. The
+ server transaction filters any request retransmissions from the
+ network. The server transaction accepts responses from the TU and
+ delivers them to the transport layer for transmission over the
+ network. In the case of an INVITE transaction, it absorbs the ACK
+ request for any final response excepting a 2xx response.
+
+ The 2xx response and its ACK receive special treatment. This
+ response is retransmitted only by a UAS, and its ACK generated only
+ by the UAC. This end-to-end treatment is needed so that a caller
+ knows the entire set of users that have accepted the call. Because
+ of this special handling, retransmissions of the 2xx response are
+ handled by the UA core, not the transaction layer. Similarly,
+ generation of the ACK for the 2xx is handled by the UA core. Each
+ proxy along the path merely forwards each 2xx response to INVITE and
+ its corresponding ACK.
+
+17.1 Client Transaction
+
+ The client transaction provides its functionality through the
+ maintenance of a state machine.
+
+ The TU communicates with the client transaction through a simple
+ interface. When the TU wishes to initiate a new transaction, it
+ creates a client transaction and passes it the SIP request to send
+ and an IP address, port, and transport to which to send it. The
+ client transaction begins execution of its state machine. Valid
+ responses are passed up to the TU from the client transaction.
+
+ There are two types of client transaction state machines, depending
+ on the method of the request passed by the TU. One handles client
+ transactions for INVITE requests. This type of machine is referred
+ to as an INVITE client transaction. Another type handles client
+ transactions for all requests except INVITE and ACK. This is
+ referred to as a non-INVITE client transaction. There is no client
+ transaction for ACK. If the TU wishes to send an ACK, it passes one
+ directly to the transport layer for transmission.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 124]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The INVITE transaction is different from those of other methods
+ because of its extended duration. Normally, human input is required
+ in order to respond to an INVITE. The long delays expected for
+ sending a response argue for a three-way handshake. On the other
+ hand, requests of other methods are expected to complete rapidly.
+ Because of the non-INVITE transaction's reliance on a two-way
+ handshake, TUs SHOULD respond immediately to non-INVITE requests.
+
+17.1.1 INVITE Client Transaction
+
+17.1.1.1 Overview of INVITE Transaction
+
+ The INVITE transaction consists of a three-way handshake. The client
+ transaction sends an INVITE, the server transaction sends responses,
+ and the client transaction sends an ACK. For unreliable transports
+ (such as UDP), the client transaction retransmits requests at an
+ interval that starts at T1 seconds and doubles after every
+ retransmission. T1 is an estimate of the round-trip time (RTT), and
+ it defaults to 500 ms. Nearly all of the transaction timers
+ described here scale with T1, and changing T1 adjusts their values.
+ The request is not retransmitted over reliable transports. After
+ receiving a 1xx response, any retransmissions cease altogether, and
+ the client waits for further responses. The server transaction can
+ send additional 1xx responses, which are not transmitted reliably by
+ the server transaction. Eventually, the server transaction decides
+ to send a final response. For unreliable transports, that response
+ is retransmitted periodically, and for reliable transports, it is
+ sent once. For each final response that is received at the client
+ transaction, the client transaction sends an ACK, the purpose of
+ which is to quench retransmissions of the response.
+
+17.1.1.2 Formal Description
+
+ The state machine for the INVITE client transaction is shown in
+ Figure 5. The initial state, "calling", MUST be entered when the TU
+ initiates a new client transaction with an INVITE request. The
+ client transaction MUST pass the request to the transport layer for
+ transmission (see Section 18). If an unreliable transport is being
+ used, the client transaction MUST start timer A with a value of T1.
+ If a reliable transport is being used, the client transaction SHOULD
+ NOT start timer A (Timer A controls request retransmissions). For
+ any transport, the client transaction MUST start timer B with a value
+ of 64*T1 seconds (Timer B controls transaction timeouts).
+
+ When timer A fires, the client transaction MUST retransmit the
+ request by passing it to the transport layer, and MUST reset the
+ timer with a value of 2*T1. The formal definition of retransmit
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 125]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ within the context of the transaction layer is to take the message
+ previously sent to the transport layer and pass it to the transport
+ layer once more.
+
+ When timer A fires 2*T1 seconds later, the request MUST be
+ retransmitted again (assuming the client transaction is still in this
+ state). This process MUST continue so that the request is
+ retransmitted with intervals that double after each transmission.
+ These retransmissions SHOULD only be done while the client
+ transaction is in the "calling" state.
+
+ The default value for T1 is 500 ms. T1 is an estimate of the RTT
+ between the client and server transactions. Elements MAY (though it
+ is NOT RECOMMENDED) use smaller values of T1 within closed, private
+ networks that do not permit general Internet connection. T1 MAY be
+ chosen larger, and this is RECOMMENDED if it is known in advance
+ (such as on high latency access links) that the RTT is larger.
+ Whatever the value of T1, the exponential backoffs on retransmissions
+ described in this section MUST be used.
+
+ If the client transaction is still in the "Calling" state when timer
+ B fires, the client transaction SHOULD inform the TU that a timeout
+ has occurred. The client transaction MUST NOT generate an ACK. The
+ value of 64*T1 is equal to the amount of time required to send seven
+ requests in the case of an unreliable transport.
+
+ If the client transaction receives a provisional response while in
+ the "Calling" state, it transitions to the "Proceeding" state. In the
+ "Proceeding" state, the client transaction SHOULD NOT retransmit the
+ request any longer. Furthermore, the provisional response MUST be
+ passed to the TU. Any further provisional responses MUST be passed
+ up to the TU while in the "Proceeding" state.
+
+ When in either the "Calling" or "Proceeding" states, reception of a
+ response with status code from 300-699 MUST cause the client
+ transaction to transition to "Completed". The client transaction
+ MUST pass the received response up to the TU, and the client
+ transaction MUST generate an ACK request, even if the transport is
+ reliable (guidelines for constructing the ACK from the response are
+ given in Section 17.1.1.3) and then pass the ACK to the transport
+ layer for transmission. The ACK MUST be sent to the same address,
+ port, and transport to which the original request was sent. The
+ client transaction SHOULD start timer D when it enters the
+ "Completed" state, with a value of at least 32 seconds for unreliable
+ transports, and a value of zero seconds for reliable transports.
+ Timer D reflects the amount of time that the server transaction can
+ remain in the "Completed" state when unreliable transports are used.
+ This is equal to Timer H in the INVITE server transaction, whose
+
+
+
+Rosenberg, et. al. Standards Track [Page 126]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ default is 64*T1. However, the client transaction does not know the
+ value of T1 in use by the server transaction, so an absolute minimum
+ of 32s is used instead of basing Timer D on T1.
+
+ Any retransmissions of the final response that are received while in
+ the "Completed" state MUST cause the ACK to be re-passed to the
+ transport layer for retransmission, but the newly received response
+ MUST NOT be passed up to the TU. A retransmission of the response is
+ defined as any response which would match the same client transaction
+ based on the rules of Section 17.1.3.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 127]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ |INVITE from TU
+ Timer A fires |INVITE sent
+ Reset A, V Timer B fires
+ INVITE sent +-----------+ or Transport Err.
+ +---------| |---------------+inform TU
+ | | Calling | |
+ +-------->| |-------------->|
+ +-----------+ 2xx |
+ | | 2xx to TU |
+ | |1xx |
+ 300-699 +---------------+ |1xx to TU |
+ ACK sent | | |
+resp. to TU | 1xx V |
+ | 1xx to TU -----------+ |
+ | +---------| | |
+ | | |Proceeding |-------------->|
+ | +-------->| | 2xx |
+ | +-----------+ 2xx to TU |
+ | 300-699 | |
+ | ACK sent, | |
+ | resp. to TU| |
+ | | | NOTE:
+ | 300-699 V |
+ | ACK sent +-----------+Transport Err. | transitions
+ | +---------| |Inform TU | labeled with
+ | | | Completed |-------------->| the event
+ | +-------->| | | over the action
+ | +-----------+ | to take
+ | ^ | |
+ | | | Timer D fires |
+ +--------------+ | - |
+ | |
+ V |
+ +-----------+ |
+ | | |
+ | Terminated|<--------------+
+ | |
+ +-----------+
+
+ Figure 5: INVITE client transaction
+
+ If timer D fires while the client transaction is in the "Completed"
+ state, the client transaction MUST move to the terminated state.
+
+ When in either the "Calling" or "Proceeding" states, reception of a
+ 2xx response MUST cause the client transaction to enter the
+ "Terminated" state, and the response MUST be passed up to the TU.
+ The handling of this response depends on whether the TU is a proxy
+
+
+
+Rosenberg, et. al. Standards Track [Page 128]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ core or a UAC core. A UAC core will handle generation of the ACK for
+ this response, while a proxy core will always forward the 200 (OK)
+ upstream. The differing treatment of 200 (OK) between proxy and UAC
+ is the reason that handling of it does not take place in the
+ transaction layer.
+
+ The client transaction MUST be destroyed the instant it enters the
+ "Terminated" state. This is actually necessary to guarantee correct
+ operation. The reason is that 2xx responses to an INVITE are treated
+ differently; each one is forwarded by proxies, and the ACK handling
+ in a UAC is different. Thus, each 2xx needs to be passed to a proxy
+ core (so that it can be forwarded) and to a UAC core (so it can be
+ acknowledged). No transaction layer processing takes place.
+ Whenever a response is received by the transport, if the transport
+ layer finds no matching client transaction (using the rules of
+ Section 17.1.3), the response is passed directly to the core. Since
+ the matching client transaction is destroyed by the first 2xx,
+ subsequent 2xx will find no match and therefore be passed to the
+ core.
+
+17.1.1.3 Construction of the ACK Request
+
+ This section specifies the construction of ACK requests sent within
+ the client transaction. A UAC core that generates an ACK for 2xx
+ MUST instead follow the rules described in Section 13.
+
+ The ACK request constructed by the client transaction MUST contain
+ values for the Call-ID, From, and Request-URI that are equal to the
+ values of those header fields in the request passed to the transport
+ by the client transaction (call this the "original request"). The To
+ header field in the ACK MUST equal the To header field in the
+ response being acknowledged, and therefore will usually differ from
+ the To header field in the original request by the addition of the
+ tag parameter. The ACK MUST contain a single Via header field, and
+ this MUST be equal to the top Via header field of the original
+ request. The CSeq header field in the ACK MUST contain the same
+ value for the sequence number as was present in the original request,
+ but the method parameter MUST be equal to "ACK".
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 129]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ If the INVITE request whose response is being acknowledged had Route
+ header fields, those header fields MUST appear in the ACK. This is
+ to ensure that the ACK can be routed properly through any downstream
+ stateless proxies.
+
+ Although any request MAY contain a body, a body in an ACK is special
+ since the request cannot be rejected if the body is not understood.
+ Therefore, placement of bodies in ACK for non-2xx is NOT RECOMMENDED,
+ but if done, the body types are restricted to any that appeared in
+ the INVITE, assuming that the response to the INVITE was not 415. If
+ it was, the body in the ACK MAY be any type listed in the Accept
+ header field in the 415.
+
+ For example, consider the following request:
+
+ INVITE sip:bob@biloxi.com SIP/2.0
+ Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKkjshdyff
+ To: Bob <sip:bob@biloxi.com>
+ From: Alice <sip:alice@atlanta.com>;tag=88sja8x
+ Max-Forwards: 70
+ Call-ID: 987asjd97y7atg
+ CSeq: 986759 INVITE
+
+ The ACK request for a non-2xx final response to this request would
+ look like this:
+
+ ACK sip:bob@biloxi.com SIP/2.0
+ Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKkjshdyff
+ To: Bob <sip:bob@biloxi.com>;tag=99sa0xk
+ From: Alice <sip:alice@atlanta.com>;tag=88sja8x
+ Max-Forwards: 70
+ Call-ID: 987asjd97y7atg
+ CSeq: 986759 ACK
+
+17.1.2 Non-INVITE Client Transaction
+
+17.1.2.1 Overview of the non-INVITE Transaction
+
+ Non-INVITE transactions do not make use of ACK. They are simple
+ request-response interactions. For unreliable transports, requests
+ are retransmitted at an interval which starts at T1 and doubles until
+ it hits T2. If a provisional response is received, retransmissions
+ continue for unreliable transports, but at an interval of T2. The
+ server transaction retransmits the last response it sent, which can
+ be a provisional or final response, only when a retransmission of the
+ request is received. This is why request retransmissions need to
+ continue even after a provisional response; they are to ensure
+ reliable delivery of the final response.
+
+
+
+Rosenberg, et. al. Standards Track [Page 130]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Unlike an INVITE transaction, a non-INVITE transaction has no special
+ handling for the 2xx response. The result is that only a single 2xx
+ response to a non-INVITE is ever delivered to a UAC.
+
+17.1.2.2 Formal Description
+
+ The state machine for the non-INVITE client transaction is shown in
+ Figure 6. It is very similar to the state machine for INVITE.
+
+ The "Trying" state is entered when the TU initiates a new client
+ transaction with a request. When entering this state, the client
+ transaction SHOULD set timer F to fire in 64*T1 seconds. The request
+ MUST be passed to the transport layer for transmission. If an
+ unreliable transport is in use, the client transaction MUST set timer
+ E to fire in T1 seconds. If timer E fires while still in this state,
+ the timer is reset, but this time with a value of MIN(2*T1, T2).
+ When the timer fires again, it is reset to a MIN(4*T1, T2). This
+ process continues so that retransmissions occur with an exponentially
+ increasing interval that caps at T2. The default value of T2 is 4s,
+ and it represents the amount of time a non-INVITE server transaction
+ will take to respond to a request, if it does not respond
+ immediately. For the default values of T1 and T2, this results in
+ intervals of 500 ms, 1 s, 2 s, 4 s, 4 s, 4 s, etc.
+
+ If Timer F fires while the client transaction is still in the
+ "Trying" state, the client transaction SHOULD inform the TU about the
+ timeout, and then it SHOULD enter the "Terminated" state. If a
+ provisional response is received while in the "Trying" state, the
+ response MUST be passed to the TU, and then the client transaction
+ SHOULD move to the "Proceeding" state. If a final response (status
+ codes 200-699) is received while in the "Trying" state, the response
+ MUST be passed to the TU, and the client transaction MUST transition
+ to the "Completed" state.
+
+ If Timer E fires while in the "Proceeding" state, the request MUST be
+ passed to the transport layer for retransmission, and Timer E MUST be
+ reset with a value of T2 seconds. If timer F fires while in the
+ "Proceeding" state, the TU MUST be informed of a timeout, and the
+ client transaction MUST transition to the terminated state. If a
+ final response (status codes 200-699) is received while in the
+ "Proceeding" state, the response MUST be passed to the TU, and the
+ client transaction MUST transition to the "Completed" state.
+
+ Once the client transaction enters the "Completed" state, it MUST set
+ Timer K to fire in T4 seconds for unreliable transports, and zero
+ seconds for reliable transports. The "Completed" state exists to
+ buffer any additional response retransmissions that may be received
+ (which is why the client transaction remains there only for
+
+
+
+Rosenberg, et. al. Standards Track [Page 131]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ unreliable transports). T4 represents the amount of time the network
+ will take to clear messages between client and server transactions.
+ The default value of T4 is 5s. A response is a retransmission when
+ it matches the same transaction, using the rules specified in Section
+ 17.1.3. If Timer K fires while in this state, the client transaction
+ MUST transition to the "Terminated" state.
+
+ Once the transaction is in the terminated state, it MUST be destroyed
+ immediately.
+
+17.1.3 Matching Responses to Client Transactions
+
+ When the transport layer in the client receives a response, it has to
+ determine which client transaction will handle the response, so that
+ the processing of Sections 17.1.1 and 17.1.2 can take place. The
+ branch parameter in the top Via header field is used for this
+ purpose. A response matches a client transaction under two
+ conditions:
+
+ 1. If the response has the same value of the branch parameter in
+ the top Via header field as the branch parameter in the top
+ Via header field of the request that created the transaction.
+
+ 2. If the method parameter in the CSeq header field matches the
+ method of the request that created the transaction. The
+ method is needed since a CANCEL request constitutes a
+ different transaction, but shares the same value of the branch
+ parameter.
+
+ If a request is sent via multicast, it is possible that it will
+ generate multiple responses from different servers. These responses
+ will all have the same branch parameter in the topmost Via, but vary
+ in the To tag. The first response received, based on the rules
+ above, will be used, and others will be viewed as retransmissions.
+ That is not an error; multicast SIP provides only a rudimentary
+ "single-hop-discovery-like" service that is limited to processing a
+ single response. See Section 18.1.1 for details.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 132]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+17.1.4 Handling Transport Errors
+
+ |Request from TU
+ |send request
+ Timer E V
+ send request +-----------+
+ +---------| |-------------------+
+ | | Trying | Timer F |
+ +-------->| | or Transport Err.|
+ +-----------+ inform TU |
+ 200-699 | | |
+ resp. to TU | |1xx |
+ +---------------+ |resp. to TU |
+ | | |
+ | Timer E V Timer F |
+ | send req +-----------+ or Transport Err. |
+ | +---------| | inform TU |
+ | | |Proceeding |------------------>|
+ | +-------->| |-----+ |
+ | +-----------+ |1xx |
+ | | ^ |resp to TU |
+ | 200-699 | +--------+ |
+ | resp. to TU | |
+ | | |
+ | V |
+ | +-----------+ |
+ | | | |
+ | | Completed | |
+ | | | |
+ | +-----------+ |
+ | ^ | |
+ | | | Timer K |
+ +--------------+ | - |
+ | |
+ V |
+ NOTE: +-----------+ |
+ | | |
+ transitions | Terminated|<------------------+
+ labeled with | |
+ the event +-----------+
+ over the action
+ to take
+
+ Figure 6: non-INVITE client transaction
+
+ When the client transaction sends a request to the transport layer to
+ be sent, the following procedures are followed if the transport layer
+ indicates a failure.
+
+
+
+Rosenberg, et. al. Standards Track [Page 133]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The client transaction SHOULD inform the TU that a transport failure
+ has occurred, and the client transaction SHOULD transition directly
+ to the "Terminated" state. The TU will handle the failover
+ mechanisms described in [4].
+
+17.2 Server Transaction
+
+ The server transaction is responsible for the delivery of requests to
+ the TU and the reliable transmission of responses. It accomplishes
+ this through a state machine. Server transactions are created by the
+ core when a request is received, and transaction handling is desired
+ for that request (this is not always the case).
+
+ As with the client transactions, the state machine depends on whether
+ the received request is an INVITE request.
+
+17.2.1 INVITE Server Transaction
+
+ The state diagram for the INVITE server transaction is shown in
+ Figure 7.
+
+ When a server transaction is constructed for a request, it enters the
+ "Proceeding" state. The server transaction MUST generate a 100
+ (Trying) response unless it knows that the TU will generate a
+ provisional or final response within 200 ms, in which case it MAY
+ generate a 100 (Trying) response. This provisional response is
+ needed to quench request retransmissions rapidly in order to avoid
+ network congestion. The 100 (Trying) response is constructed
+ according to the procedures in Section 8.2.6, except that the
+ insertion of tags in the To header field of the response (when none
+ was present in the request) is downgraded from MAY to SHOULD NOT.
+ The request MUST be passed to the TU.
+
+ The TU passes any number of provisional responses to the server
+ transaction. So long as the server transaction is in the
+ "Proceeding" state, each of these MUST be passed to the transport
+ layer for transmission. They are not sent reliably by the
+ transaction layer (they are not retransmitted by it) and do not cause
+ a change in the state of the server transaction. If a request
+ retransmission is received while in the "Proceeding" state, the most
+ recent provisional response that was received from the TU MUST be
+ passed to the transport layer for retransmission. A request is a
+ retransmission if it matches the same server transaction based on the
+ rules of Section 17.2.3.
+
+ If, while in the "Proceeding" state, the TU passes a 2xx response to
+ the server transaction, the server transaction MUST pass this
+ response to the transport layer for transmission. It is not
+
+
+
+Rosenberg, et. al. Standards Track [Page 134]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ retransmitted by the server transaction; retransmissions of 2xx
+ responses are handled by the TU. The server transaction MUST then
+ transition to the "Terminated" state.
+
+ While in the "Proceeding" state, if the TU passes a response with
+ status code from 300 to 699 to the server transaction, the response
+ MUST be passed to the transport layer for transmission, and the state
+ machine MUST enter the "Completed" state. For unreliable transports,
+ timer G is set to fire in T1 seconds, and is not set to fire for
+ reliable transports.
+
+ This is a change from RFC 2543, where responses were always
+ retransmitted, even over reliable transports.
+
+ When the "Completed" state is entered, timer H MUST be set to fire in
+ 64*T1 seconds for all transports. Timer H determines when the server
+ transaction abandons retransmitting the response. Its value is
+ chosen to equal Timer B, the amount of time a client transaction will
+ continue to retry sending a request. If timer G fires, the response
+ is passed to the transport layer once more for retransmission, and
+ timer G is set to fire in MIN(2*T1, T2) seconds. From then on, when
+ timer G fires, the response is passed to the transport again for
+ transmission, and timer G is reset with a value that doubles, unless
+ that value exceeds T2, in which case it is reset with the value of
+ T2. This is identical to the retransmit behavior for requests in the
+ "Trying" state of the non-INVITE client transaction. Furthermore,
+ while in the "Completed" state, if a request retransmission is
+ received, the server SHOULD pass the response to the transport for
+ retransmission.
+
+ If an ACK is received while the server transaction is in the
+ "Completed" state, the server transaction MUST transition to the
+ "Confirmed" state. As Timer G is ignored in this state, any
+ retransmissions of the response will cease.
+
+ If timer H fires while in the "Completed" state, it implies that the
+ ACK was never received. In this case, the server transaction MUST
+ transition to the "Terminated" state, and MUST indicate to the TU
+ that a transaction failure has occurred.
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 135]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ |INVITE
+ |pass INV to TU
+ INVITE V send 100 if TU won't in 200ms
+ send response+-----------+
+ +--------| |--------+101-199 from TU
+ | | Proceeding| |send response
+ +------->| |<-------+
+ | | Transport Err.
+ | | Inform TU
+ | |--------------->+
+ +-----------+ |
+ 300-699 from TU | |2xx from TU |
+ send response | |send response |
+ | +------------------>+
+ | |
+ INVITE V Timer G fires |
+ send response+-----------+ send response |
+ +--------| |--------+ |
+ | | Completed | | |
+ +------->| |<-------+ |
+ +-----------+ |
+ | | |
+ ACK | | |
+ - | +------------------>+
+ | Timer H fires |
+ V or Transport Err.|
+ +-----------+ Inform TU |
+ | | |
+ | Confirmed | |
+ | | |
+ +-----------+ |
+ | |
+ |Timer I fires |
+ |- |
+ | |
+ V |
+ +-----------+ |
+ | | |
+ | Terminated|<---------------+
+ | |
+ +-----------+
+
+ Figure 7: INVITE server transaction
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 136]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The purpose of the "Confirmed" state is to absorb any additional ACK
+ messages that arrive, triggered from retransmissions of the final
+ response. When this state is entered, timer I is set to fire in T4
+ seconds for unreliable transports, and zero seconds for reliable
+ transports. Once timer I fires, the server MUST transition to the
+ "Terminated" state.
+
+ Once the transaction is in the "Terminated" state, it MUST be
+ destroyed immediately. As with client transactions, this is needed
+ to ensure reliability of the 2xx responses to INVITE.
+
+17.2.2 Non-INVITE Server Transaction
+
+ The state machine for the non-INVITE server transaction is shown in
+ Figure 8.
+
+ The state machine is initialized in the "Trying" state and is passed
+ a request other than INVITE or ACK when initialized. This request is
+ passed up to the TU. Once in the "Trying" state, any further request
+ retransmissions are discarded. A request is a retransmission if it
+ matches the same server transaction, using the rules specified in
+ Section 17.2.3.
+
+ While in the "Trying" state, if the TU passes a provisional response
+ to the server transaction, the server transaction MUST enter the
+ "Proceeding" state. The response MUST be passed to the transport
+ layer for transmission. Any further provisional responses that are
+ received from the TU while in the "Proceeding" state MUST be passed
+ to the transport layer for transmission. If a retransmission of the
+ request is received while in the "Proceeding" state, the most
+ recently sent provisional response MUST be passed to the transport
+ layer for retransmission. If the TU passes a final response (status
+ codes 200-699) to the server while in the "Proceeding" state, the
+ transaction MUST enter the "Completed" state, and the response MUST
+ be passed to the transport layer for transmission.
+
+ When the server transaction enters the "Completed" state, it MUST set
+ Timer J to fire in 64*T1 seconds for unreliable transports, and zero
+ seconds for reliable transports. While in the "Completed" state, the
+ server transaction MUST pass the final response to the transport
+ layer for retransmission whenever a retransmission of the request is
+ received. Any other final responses passed by the TU to the server
+ transaction MUST be discarded while in the "Completed" state. The
+ server transaction remains in this state until Timer J fires, at
+ which point it MUST transition to the "Terminated" state.
+
+ The server transaction MUST be destroyed the instant it enters the
+ "Terminated" state.
+
+
+
+Rosenberg, et. al. Standards Track [Page 137]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+17.2.3 Matching Requests to Server Transactions
+
+ When a request is received from the network by the server, it has to
+ be matched to an existing transaction. This is accomplished in the
+ following manner.
+
+ The branch parameter in the topmost Via header field of the request
+ is examined. If it is present and begins with the magic cookie
+ "z9hG4bK", the request was generated by a client transaction
+ compliant to this specification. Therefore, the branch parameter
+ will be unique across all transactions sent by that client. The
+ request matches a transaction if:
+
+ 1. the branch parameter in the request is equal to the one in the
+ top Via header field of the request that created the
+ transaction, and
+
+ 2. the sent-by value in the top Via of the request is equal to the
+ one in the request that created the transaction, and
+
+ 3. the method of the request matches the one that created the
+ transaction, except for ACK, where the method of the request
+ that created the transaction is INVITE.
+
+ This matching rule applies to both INVITE and non-INVITE transactions
+ alike.
+
+ The sent-by value is used as part of the matching process because
+ there could be accidental or malicious duplication of branch
+ parameters from different clients.
+
+ If the branch parameter in the top Via header field is not present,
+ or does not contain the magic cookie, the following procedures are
+ used. These exist to handle backwards compatibility with RFC 2543
+ compliant implementations.
+
+ The INVITE request matches a transaction if the Request-URI, To tag,
+ From tag, Call-ID, CSeq, and top Via header field match those of the
+ INVITE request which created the transaction. In this case, the
+ INVITE is a retransmission of the original one that created the
+ transaction. The ACK request matches a transaction if the Request-
+ URI, From tag, Call-ID, CSeq number (not the method), and top Via
+ header field match those of the INVITE request which created the
+ transaction, and the To tag of the ACK matches the To tag of the
+ response sent by the server transaction. Matching is done based on
+ the matching rules defined for each of those header fields.
+ Inclusion of the tag in the To header field in the ACK matching
+ process helps disambiguate ACK for 2xx from ACK for other responses
+
+
+
+Rosenberg, et. al. Standards Track [Page 138]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ at a proxy, which may have forwarded both responses (This can occur
+ in unusual conditions. Specifically, when a proxy forked a request,
+ and then crashes, the responses may be delivered to another proxy,
+ which might end up forwarding multiple responses upstream). An ACK
+ request that matches an INVITE transaction matched by a previous ACK
+ is considered a retransmission of that previous ACK.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 139]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ |Request received
+ |pass to TU
+ V
+ +-----------+
+ | |
+ | Trying |-------------+
+ | | |
+ +-----------+ |200-699 from TU
+ | |send response
+ |1xx from TU |
+ |send response |
+ | |
+ Request V 1xx from TU |
+ send response+-----------+send response|
+ +--------| |--------+ |
+ | | Proceeding| | |
+ +------->| |<-------+ |
+ +<--------------| | |
+ |Trnsprt Err +-----------+ |
+ |Inform TU | |
+ | | |
+ | |200-699 from TU |
+ | |send response |
+ | Request V |
+ | send response+-----------+ |
+ | +--------| | |
+ | | | Completed |<------------+
+ | +------->| |
+ +<--------------| |
+ |Trnsprt Err +-----------+
+ |Inform TU |
+ | |Timer J fires
+ | |-
+ | |
+ | V
+ | +-----------+
+ | | |
+ +-------------->| Terminated|
+ | |
+ +-----------+
+
+ Figure 8: non-INVITE server transaction
+
+ For all other request methods, a request is matched to a transaction
+ if the Request-URI, To tag, From tag, Call-ID, CSeq (including the
+ method), and top Via header field match those of the request that
+ created the transaction. Matching is done based on the matching
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 140]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ rules defined for each of those header fields. When a non-INVITE
+ request matches an existing transaction, it is a retransmission of
+ the request that created that transaction.
+
+ Because the matching rules include the Request-URI, the server cannot
+ match a response to a transaction. When the TU passes a response to
+ the server transaction, it must pass it to the specific server
+ transaction for which the response is targeted.
+
+17.2.4 Handling Transport Errors
+
+ When the server transaction sends a response to the transport layer
+ to be sent, the following procedures are followed if the transport
+ layer indicates a failure.
+
+ First, the procedures in [4] are followed, which attempt to deliver
+ the response to a backup. If those should all fail, based on the
+ definition of failure in [4], the server transaction SHOULD inform
+ the TU that a failure has occurred, and SHOULD transition to the
+ terminated state.
+
+18 Transport
+
+ The transport layer is responsible for the actual transmission of
+ requests and responses over network transports. This includes
+ determination of the connection to use for a request or response in
+ the case of connection-oriented transports.
+
+ The transport layer is responsible for managing persistent
+ connections for transport protocols like TCP and SCTP, or TLS over
+ those, including ones opened to the transport layer. This includes
+ connections opened by the client or server transports, so that
+ connections are shared between client and server transport functions.
+ These connections are indexed by the tuple formed from the address,
+ port, and transport protocol at the far end of the connection. When
+ a connection is opened by the transport layer, this index is set to
+ the destination IP, port and transport. When the connection is
+ accepted by the transport layer, this index is set to the source IP
+ address, port number, and transport. Note that, because the source
+ port is often ephemeral, but it cannot be known whether it is
+ ephemeral or selected through procedures in [4], connections accepted
+ by the transport layer will frequently not be reused. The result is
+ that two proxies in a "peering" relationship using a connection-
+ oriented transport frequently will have two connections in use, one
+ for transactions initiated in each direction.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 141]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ It is RECOMMENDED that connections be kept open for some
+ implementation-defined duration after the last message was sent or
+ received over that connection. This duration SHOULD at least equal
+ the longest amount of time the element would need in order to bring a
+ transaction from instantiation to the terminated state. This is to
+ make it likely that transactions are completed over the same
+ connection on which they are initiated (for example, request,
+ response, and in the case of INVITE, ACK for non-2xx responses).
+ This usually means at least 64*T1 (see Section 17.1.1.1 for a
+ definition of T1). However, it could be larger in an element that
+ has a TU using a large value for timer C (bullet 11 of Section 16.6),
+ for example.
+
+ All SIP elements MUST implement UDP and TCP. SIP elements MAY
+ implement other protocols.
+
+ Making TCP mandatory for the UA is a substantial change from RFC
+ 2543. It has arisen out of the need to handle larger messages,
+ which MUST use TCP, as discussed below. Thus, even if an element
+ never sends large messages, it may receive one and needs to be
+ able to handle them.
+
+18.1 Clients
+
+18.1.1 Sending Requests
+
+ The client side of the transport layer is responsible for sending the
+ request and receiving responses. The user of the transport layer
+ passes the client transport the request, an IP address, port,
+ transport, and possibly TTL for multicast destinations.
+
+ If a request is within 200 bytes of the path MTU, or if it is larger
+ than 1300 bytes and the path MTU is unknown, the request MUST be sent
+ using an RFC 2914 [43] congestion controlled transport protocol, such
+ as TCP. If this causes a change in the transport protocol from the
+ one indicated in the top Via, the value in the top Via MUST be
+ changed. This prevents fragmentation of messages over UDP and
+ provides congestion control for larger messages. However,
+ implementations MUST be able to handle messages up to the maximum
+ datagram packet size. For UDP, this size is 65,535 bytes, including
+ IP and UDP headers.
+
+ The 200 byte "buffer" between the message size and the MTU
+ accommodates the fact that the response in SIP can be larger than
+ the request. This happens due to the addition of Record-Route
+ header field values to the responses to INVITE, for example. With
+ the extra buffer, the response can be about 170 bytes larger than
+ the request, and still not be fragmented on IPv4 (about 30 bytes
+
+
+
+Rosenberg, et. al. Standards Track [Page 142]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ is consumed by IP/UDP, assuming no IPSec). 1300 is chosen when
+ path MTU is not known, based on the assumption of a 1500 byte
+ Ethernet MTU.
+
+ If an element sends a request over TCP because of these message size
+ constraints, and that request would have otherwise been sent over
+ UDP, if the attempt to establish the connection generates either an
+ ICMP Protocol Not Supported, or results in a TCP reset, the element
+ SHOULD retry the request, using UDP. This is only to provide
+ backwards compatibility with RFC 2543 compliant implementations that
+ do not support TCP. It is anticipated that this behavior will be
+ deprecated in a future revision of this specification.
+
+ A client that sends a request to a multicast address MUST add the
+ "maddr" parameter to its Via header field value containing the
+ destination multicast address, and for IPv4, SHOULD add the "ttl"
+ parameter with a value of 1. Usage of IPv6 multicast is not defined
+ in this specification, and will be a subject of future
+ standardization when the need arises.
+
+ These rules result in a purposeful limitation of multicast in SIP.
+ Its primary function is to provide a "single-hop-discovery-like"
+ service, delivering a request to a group of homogeneous servers,
+ where it is only required to process the response from any one of
+ them. This functionality is most useful for registrations. In fact,
+ based on the transaction processing rules in Section 17.1.3, the
+ client transaction will accept the first response, and view any
+ others as retransmissions because they all contain the same Via
+ branch identifier.
+
+ Before a request is sent, the client transport MUST insert a value of
+ the "sent-by" field into the Via header field. This field contains
+ an IP address or host name, and port. The usage of an FQDN is
+ RECOMMENDED. This field is used for sending responses under certain
+ conditions, described below. If the port is absent, the default
+ value depends on the transport. It is 5060 for UDP, TCP and SCTP,
+ 5061 for TLS.
+
+ For reliable transports, the response is normally sent on the
+ connection on which the request was received. Therefore, the client
+ transport MUST be prepared to receive the response on the same
+ connection used to send the request. Under error conditions, the
+ server may attempt to open a new connection to send the response. To
+ handle this case, the transport layer MUST also be prepared to
+ receive an incoming connection on the source IP address from which
+ the request was sent and port number in the "sent-by" field. It also
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 143]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ MUST be prepared to receive incoming connections on any address and
+ port that would be selected by a server based on the procedures
+ described in Section 5 of [4].
+
+ For unreliable unicast transports, the client transport MUST be
+ prepared to receive responses on the source IP address from which the
+ request is sent (as responses are sent back to the source address)
+ and the port number in the "sent-by" field. Furthermore, as with
+ reliable transports, in certain cases the response will be sent
+ elsewhere. The client MUST be prepared to receive responses on any
+ address and port that would be selected by a server based on the
+ procedures described in Section 5 of [4].
+
+ For multicast, the client transport MUST be prepared to receive
+ responses on the same multicast group and port to which the request
+ is sent (that is, it needs to be a member of the multicast group it
+ sent the request to.)
+
+ If a request is destined to an IP address, port, and transport to
+ which an existing connection is open, it is RECOMMENDED that this
+ connection be used to send the request, but another connection MAY be
+ opened and used.
+
+ If a request is sent using multicast, it is sent to the group
+ address, port, and TTL provided by the transport user. If a request
+ is sent using unicast unreliable transports, it is sent to the IP
+ address and port provided by the transport user.
+
+18.1.2 Receiving Responses
+
+ When a response is received, the client transport examines the top
+ Via header field value. If the value of the "sent-by" parameter in
+ that header field value does not correspond to a value that the
+ client transport is configured to insert into requests, the response
+ MUST be silently discarded.
+
+ If there are any client transactions in existence, the client
+ transport uses the matching procedures of Section 17.1.3 to attempt
+ to match the response to an existing transaction. If there is a
+ match, the response MUST be passed to that transaction. Otherwise,
+ the response MUST be passed to the core (whether it be stateless
+ proxy, stateful proxy, or UA) for further processing. Handling of
+ these "stray" responses is dependent on the core (a proxy will
+ forward them, while a UA will discard, for example).
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 144]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+18.2 Servers
+
+18.2.1 Receiving Requests
+
+ A server SHOULD be prepared to receive requests on any IP address,
+ port and transport combination that can be the result of a DNS lookup
+ on a SIP or SIPS URI [4] that is handed out for the purposes of
+ communicating with that server. In this context, "handing out"
+ includes placing a URI in a Contact header field in a REGISTER
+ request or a redirect response, or in a Record-Route header field in
+ a request or response. A URI can also be "handed out" by placing it
+ on a web page or business card. It is also RECOMMENDED that a server
+ listen for requests on the default SIP ports (5060 for TCP and UDP,
+ 5061 for TLS over TCP) on all public interfaces. The typical
+ exception would be private networks, or when multiple server
+ instances are running on the same host. For any port and interface
+ that a server listens on for UDP, it MUST listen on that same port
+ and interface for TCP. This is because a message may need to be sent
+ using TCP, rather than UDP, if it is too large. As a result, the
+ converse is not true. A server need not listen for UDP on a
+ particular address and port just because it is listening on that same
+ address and port for TCP. There may, of course, be other reasons why
+ a server needs to listen for UDP on a particular address and port.
+
+ When the server transport receives a request over any transport, it
+ MUST examine the value of the "sent-by" parameter in the top Via
+ header field value. If the host portion of the "sent-by" parameter
+ contains a domain name, or if it contains an IP address that differs
+ from the packet source address, the server MUST add a "received"
+ parameter to that Via header field value. This parameter MUST
+ contain the source address from which the packet was received. This
+ is to assist the server transport layer in sending the response,
+ since it must be sent to the source IP address from which the request
+ came.
+
+ Consider a request received by the server transport which looks like,
+ in part:
+
+ INVITE sip:bob@Biloxi.com SIP/2.0
+ Via: SIP/2.0/UDP bobspc.biloxi.com:5060
+
+ The request is received with a source IP address of 192.0.2.4.
+ Before passing the request up, the transport adds a "received"
+ parameter, so that the request would look like, in part:
+
+ INVITE sip:bob@Biloxi.com SIP/2.0
+ Via: SIP/2.0/UDP bobspc.biloxi.com:5060;received=192.0.2.4
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 145]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Next, the server transport attempts to match the request to a server
+ transaction. It does so using the matching rules described in
+ Section 17.2.3. If a matching server transaction is found, the
+ request is passed to that transaction for processing. If no match is
+ found, the request is passed to the core, which may decide to
+ construct a new server transaction for that request. Note that when
+ a UAS core sends a 2xx response to INVITE, the server transaction is
+ destroyed. This means that when the ACK arrives, there will be no
+ matching server transaction, and based on this rule, the ACK is
+ passed to the UAS core, where it is processed.
+
+18.2.2 Sending Responses
+
+ The server transport uses the value of the top Via header field in
+ order to determine where to send a response. It MUST follow the
+ following process:
+
+ o If the "sent-protocol" is a reliable transport protocol such as
+ TCP or SCTP, or TLS over those, the response MUST be sent using
+ the existing connection to the source of the original request
+ that created the transaction, if that connection is still open.
+ This requires the server transport to maintain an association
+ between server transactions and transport connections. If that
+ connection is no longer open, the server SHOULD open a
+ connection to the IP address in the "received" parameter, if
+ present, using the port in the "sent-by" value, or the default
+ port for that transport, if no port is specified. If that
+ connection attempt fails, the server SHOULD use the procedures
+ in [4] for servers in order to determine the IP address and
+ port to open the connection and send the response to.
+
+ o Otherwise, if the Via header field value contains a "maddr"
+ parameter, the response MUST be forwarded to the address listed
+ there, using the port indicated in "sent-by", or port 5060 if
+ none is present. If the address is a multicast address, the
+ response SHOULD be sent using the TTL indicated in the "ttl"
+ parameter, or with a TTL of 1 if that parameter is not present.
+
+ o Otherwise (for unreliable unicast transports), if the top Via
+ has a "received" parameter, the response MUST be sent to the
+ address in the "received" parameter, using the port indicated
+ in the "sent-by" value, or using port 5060 if none is specified
+ explicitly. If this fails, for example, elicits an ICMP "port
+ unreachable" response, the procedures of Section 5 of [4]
+ SHOULD be used to determine where to send the response.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 146]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ o Otherwise, if it is not receiver-tagged, the response MUST be
+ sent to the address indicated by the "sent-by" value, using the
+ procedures in Section 5 of [4].
+
+18.3 Framing
+
+ In the case of message-oriented transports (such as UDP), if the
+ message has a Content-Length header field, the message body is
+ assumed to contain that many bytes. If there are additional bytes in
+ the transport packet beyond the end of the body, they MUST be
+ discarded. If the transport packet ends before the end of the
+ message body, this is considered an error. If the message is a
+ response, it MUST be discarded. If the message is a request, the
+ element SHOULD generate a 400 (Bad Request) response. If the message
+ has no Content-Length header field, the message body is assumed to
+ end at the end of the transport packet.
+
+ In the case of stream-oriented transports such as TCP, the Content-
+ Length header field indicates the size of the body. The Content-
+ Length header field MUST be used with stream oriented transports.
+
+18.4 Error Handling
+
+ Error handling is independent of whether the message was a request or
+ response.
+
+ If the transport user asks for a message to be sent over an
+ unreliable transport, and the result is an ICMP error, the behavior
+ depends on the type of ICMP error. Host, network, port or protocol
+ unreachable errors, or parameter problem errors SHOULD cause the
+ transport layer to inform the transport user of a failure in sending.
+ Source quench and TTL exceeded ICMP errors SHOULD be ignored.
+
+ If the transport user asks for a request to be sent over a reliable
+ transport, and the result is a connection failure, the transport
+ layer SHOULD inform the transport user of a failure in sending.
+
+19 Common Message Components
+
+ There are certain components of SIP messages that appear in various
+ places within SIP messages (and sometimes, outside of them) that
+ merit separate discussion.
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 147]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+19.1 SIP and SIPS Uniform Resource Indicators
+
+ A SIP or SIPS URI identifies a communications resource. Like all
+ URIs, SIP and SIPS URIs may be placed in web pages, email messages,
+ or printed literature. They contain sufficient information to
+ initiate and maintain a communication session with the resource.
+
+ Examples of communications resources include the following:
+
+ o a user of an online service
+
+ o an appearance on a multi-line phone
+
+ o a mailbox on a messaging system
+
+ o a PSTN number at a gateway service
+
+ o a group (such as "sales" or "helpdesk") in an organization
+
+ A SIPS URI specifies that the resource be contacted securely. This
+ means, in particular, that TLS is to be used between the UAC and the
+ domain that owns the URI. From there, secure communications are used
+ to reach the user, where the specific security mechanism depends on
+ the policy of the domain. Any resource described by a SIP URI can be
+ "upgraded" to a SIPS URI by just changing the scheme, if it is
+ desired to communicate with that resource securely.
+
+19.1.1 SIP and SIPS URI Components
+
+ The "sip:" and "sips:" schemes follow the guidelines in RFC 2396 [5].
+ They use a form similar to the mailto URL, allowing the specification
+ of SIP request-header fields and the SIP message-body. This makes it
+ possible to specify the subject, media type, or urgency of sessions
+ initiated by using a URI on a web page or in an email message. The
+ formal syntax for a SIP or SIPS URI is presented in Section 25. Its
+ general form, in the case of a SIP URI, is:
+
+ sip:user:password@host:port;uri-parameters?headers
+
+ The format for a SIPS URI is the same, except that the scheme is
+ "sips" instead of sip. These tokens, and some of the tokens in their
+ expansions, have the following meanings:
+
+ user: The identifier of a particular resource at the host being
+ addressed. The term "host" in this context frequently refers
+ to a domain. The "userinfo" of a URI consists of this user
+ field, the password field, and the @ sign following them. The
+ userinfo part of a URI is optional and MAY be absent when the
+
+
+
+Rosenberg, et. al. Standards Track [Page 148]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ destination host does not have a notion of users or when the
+ host itself is the resource being identified. If the @ sign is
+ present in a SIP or SIPS URI, the user field MUST NOT be empty.
+
+ If the host being addressed can process telephone numbers, for
+ instance, an Internet telephony gateway, a telephone-
+ subscriber field defined in RFC 2806 [9] MAY be used to
+ populate the user field. There are special escaping rules for
+ encoding telephone-subscriber fields in SIP and SIPS URIs
+ described in Section 19.1.2.
+
+ password: A password associated with the user. While the SIP and
+ SIPS URI syntax allows this field to be present, its use is NOT
+ RECOMMENDED, because the passing of authentication information
+ in clear text (such as URIs) has proven to be a security risk
+ in almost every case where it has been used. For instance,
+ transporting a PIN number in this field exposes the PIN.
+
+ Note that the password field is just an extension of the user
+ portion. Implementations not wishing to give special
+ significance to the password portion of the field MAY simply
+ treat "user:password" as a single string.
+
+ host: The host providing the SIP resource. The host part contains
+ either a fully-qualified domain name or numeric IPv4 or IPv6
+ address. Using the fully-qualified domain name form is
+ RECOMMENDED whenever possible.
+
+ port: The port number where the request is to be sent.
+
+ URI parameters: Parameters affecting a request constructed from
+ the URI.
+
+ URI parameters are added after the hostport component and are
+ separated by semi-colons.
+
+ URI parameters take the form:
+
+ parameter-name "=" parameter-value
+
+ Even though an arbitrary number of URI parameters may be
+ included in a URI, any given parameter-name MUST NOT appear
+ more than once.
+
+ This extensible mechanism includes the transport, maddr, ttl,
+ user, method and lr parameters.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 149]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The transport parameter determines the transport mechanism to
+ be used for sending SIP messages, as specified in [4]. SIP can
+ use any network transport protocol. Parameter names are
+ defined for UDP (RFC 768 [14]), TCP (RFC 761 [15]), and SCTP
+ (RFC 2960 [16]). For a SIPS URI, the transport parameter MUST
+ indicate a reliable transport.
+
+ The maddr parameter indicates the server address to be
+ contacted for this user, overriding any address derived from
+ the host field. When an maddr parameter is present, the port
+ and transport components of the URI apply to the address
+ indicated in the maddr parameter value. [4] describes the
+ proper interpretation of the transport, maddr, and hostport in
+ order to obtain the destination address, port, and transport
+ for sending a request.
+
+ The maddr field has been used as a simple form of loose source
+ routing. It allows a URI to specify a proxy that must be
+ traversed en-route to the destination. Continuing to use the
+ maddr parameter this way is strongly discouraged (the
+ mechanisms that enable it are deprecated). Implementations
+ should instead use the Route mechanism described in this
+ document, establishing a pre-existing route set if necessary
+ (see Section 8.1.1.1). This provides a full URI to describe
+ the node to be traversed.
+
+ The ttl parameter determines the time-to-live value of the UDP
+ multicast packet and MUST only be used if maddr is a multicast
+ address and the transport protocol is UDP. For example, to
+ specify a call to alice@atlanta.com using multicast to
+ 239.255.255.1 with a ttl of 15, the following URI would be
+ used:
+
+ sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15
+
+ The set of valid telephone-subscriber strings is a subset of
+ valid user strings. The user URI parameter exists to
+ distinguish telephone numbers from user names that happen to
+ look like telephone numbers. If the user string contains a
+ telephone number formatted as a telephone-subscriber, the user
+ parameter value "phone" SHOULD be present. Even without this
+ parameter, recipients of SIP and SIPS URIs MAY interpret the
+ pre-@ part as a telephone number if local restrictions on the
+ name space for user name allow it.
+
+ The method of the SIP request constructed from the URI can be
+ specified with the method parameter.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 150]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The lr parameter, when present, indicates that the element
+ responsible for this resource implements the routing mechanisms
+ specified in this document. This parameter will be used in the
+ URIs proxies place into Record-Route header field values, and
+ may appear in the URIs in a pre-existing route set.
+
+ This parameter is used to achieve backwards compatibility with
+ systems implementing the strict-routing mechanisms of RFC 2543
+ and the rfc2543bis drafts up to bis-05. An element preparing
+ to send a request based on a URI not containing this parameter
+ can assume the receiving element implements strict-routing and
+ reformat the message to preserve the information in the
+ Request-URI.
+
+ Since the uri-parameter mechanism is extensible, SIP elements
+ MUST silently ignore any uri-parameters that they do not
+ understand.
+
+ Headers: Header fields to be included in a request constructed
+ from the URI.
+
+ Headers fields in the SIP request can be specified with the "?"
+ mechanism within a URI. The header names and values are
+ encoded in ampersand separated hname = hvalue pairs. The
+ special hname "body" indicates that the associated hvalue is
+ the message-body of the SIP request.
+
+ Table 1 summarizes the use of SIP and SIPS URI components based on
+ the context in which the URI appears. The external column describes
+ URIs appearing anywhere outside of a SIP message, for instance on a
+ web page or business card. Entries marked "m" are mandatory, those
+ marked "o" are optional, and those marked "-" are not allowed.
+ Elements processing URIs SHOULD ignore any disallowed components if
+ they are present. The second column indicates the default value of
+ an optional element if it is not present. "--" indicates that the
+ element is either not optional, or has no default value.
+
+ URIs in Contact header fields have different restrictions depending
+ on the context in which the header field appears. One set applies to
+ messages that establish and maintain dialogs (INVITE and its 200 (OK)
+ response). The other applies to registration and redirection
+ messages (REGISTER, its 200 (OK) response, and 3xx class responses to
+ any method).
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 151]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+19.1.2 Character Escaping Requirements
+
+ dialog
+ reg./redir. Contact/
+ default Req.-URI To From Contact R-R/Route external
+user -- o o o o o o
+password -- o o o o o o
+host -- m m m m m m
+port (1) o - - o o o
+user-param ip o o o o o o
+method INVITE - - - - - o
+maddr-param -- o - - o o o
+ttl-param 1 o - - o - o
+transp.-param (2) o - - o o o
+lr-param -- o - - - o o
+other-param -- o o o o o o
+headers -- - - - o - o
+
+ (1): The default port value is transport and scheme dependent. The
+ default is 5060 for sip: using UDP, TCP, or SCTP. The default is
+ 5061 for sip: using TLS over TCP and sips: over TCP.
+
+ (2): The default transport is scheme dependent. For sip:, it is UDP.
+ For sips:, it is TCP.
+
+ Table 1: Use and default values of URI components for SIP header
+ field values, Request-URI and references
+
+ SIP follows the requirements and guidelines of RFC 2396 [5] when
+ defining the set of characters that must be escaped in a SIP URI, and
+ uses its ""%" HEX HEX" mechanism for escaping. From RFC 2396 [5]:
+
+ The set of characters actually reserved within any given URI
+ component is defined by that component. In general, a character
+ is reserved if the semantics of the URI changes if the character
+ is replaced with its escaped US-ASCII encoding [5]. Excluded US-
+ ASCII characters (RFC 2396 [5]), such as space and control
+ characters and characters used as URI delimiters, also MUST be
+ escaped. URIs MUST NOT contain unescaped space and control
+ characters.
+
+ For each component, the set of valid BNF expansions defines exactly
+ which characters may appear unescaped. All other characters MUST be
+ escaped.
+
+ For example, "@" is not in the set of characters in the user
+ component, so the user "j@s0n" must have at least the @ sign encoded,
+ as in "j%40s0n".
+
+
+
+Rosenberg, et. al. Standards Track [Page 152]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Expanding the hname and hvalue tokens in Section 25 show that all URI
+ reserved characters in header field names and values MUST be escaped.
+
+ The telephone-subscriber subset of the user component has special
+ escaping considerations. The set of characters not reserved in the
+ RFC 2806 [9] description of telephone-subscriber contains a number of
+ characters in various syntax elements that need to be escaped when
+ used in SIP URIs. Any characters occurring in a telephone-subscriber
+ that do not appear in an expansion of the BNF for the user rule MUST
+ be escaped.
+
+ Note that character escaping is not allowed in the host component of
+ a SIP or SIPS URI (the % character is not valid in its expansion).
+ This is likely to change in the future as requirements for
+ Internationalized Domain Names are finalized. Current
+ implementations MUST NOT attempt to improve robustness by treating
+ received escaped characters in the host component as literally
+ equivalent to their unescaped counterpart. The behavior required to
+ meet the requirements of IDN may be significantly different.
+
+19.1.3 Example SIP and SIPS URIs
+
+ sip:alice@atlanta.com
+ sip:alice:secretword@atlanta.com;transport=tcp
+ sips:alice@atlanta.com?subject=project%20x&priority=urgent
+ sip:+1-212-555-1212:1234@gateway.com;user=phone
+ sips:1212@gateway.com
+ sip:alice@192.0.2.4
+ sip:atlanta.com;method=REGISTER?to=alice%40atlanta.com
+ sip:alice;day=tuesday@atlanta.com
+
+ The last sample URI above has a user field value of
+ "alice;day=tuesday". The escaping rules defined above allow a
+ semicolon to appear unescaped in this field. For the purposes of
+ this protocol, the field is opaque. The structure of that value is
+ only useful to the SIP element responsible for the resource.
+
+19.1.4 URI Comparison
+
+ Some operations in this specification require determining whether two
+ SIP or SIPS URIs are equivalent. In this specification, registrars
+ need to compare bindings in Contact URIs in REGISTER requests (see
+ Section 10.3.). SIP and SIPS URIs are compared for equality
+ according to the following rules:
+
+ o A SIP and SIPS URI are never equivalent.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 153]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ o Comparison of the userinfo of SIP and SIPS URIs is case-
+ sensitive. This includes userinfo containing passwords or
+ formatted as telephone-subscribers. Comparison of all other
+ components of the URI is case-insensitive unless explicitly
+ defined otherwise.
+
+ o The ordering of parameters and header fields is not significant
+ in comparing SIP and SIPS URIs.
+
+ o Characters other than those in the "reserved" set (see RFC 2396
+ [5]) are equivalent to their ""%" HEX HEX" encoding.
+
+ o An IP address that is the result of a DNS lookup of a host name
+ does not match that host name.
+
+ o For two URIs to be equal, the user, password, host, and port
+ components must match.
+
+ A URI omitting the user component will not match a URI that
+ includes one. A URI omitting the password component will not
+ match a URI that includes one.
+
+ A URI omitting any component with a default value will not
+ match a URI explicitly containing that component with its
+ default value. For instance, a URI omitting the optional port
+ component will not match a URI explicitly declaring port 5060.
+ The same is true for the transport-parameter, ttl-parameter,
+ user-parameter, and method components.
+
+ Defining sip:user@host to not be equivalent to
+ sip:user@host:5060 is a change from RFC 2543. When deriving
+ addresses from URIs, equivalent addresses are expected from
+ equivalent URIs. The URI sip:user@host:5060 will always
+ resolve to port 5060. The URI sip:user@host may resolve to
+ other ports through the DNS SRV mechanisms detailed in [4].
+
+ o URI uri-parameter components are compared as follows:
+
+ - Any uri-parameter appearing in both URIs must match.
+
+ - A user, ttl, or method uri-parameter appearing in only one
+ URI never matches, even if it contains the default value.
+
+ - A URI that includes an maddr parameter will not match a URI
+ that contains no maddr parameter.
+
+ - All other uri-parameters appearing in only one URI are
+ ignored when comparing the URIs.
+
+
+
+Rosenberg, et. al. Standards Track [Page 154]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ o URI header components are never ignored. Any present header
+ component MUST be present in both URIs and match for the URIs
+ to match. The matching rules are defined for each header field
+ in Section 20.
+
+ The URIs within each of the following sets are equivalent:
+
+ sip:%61lice@atlanta.com;transport=TCP
+ sip:alice@AtLanTa.CoM;Transport=tcp
+
+ sip:carol@chicago.com
+ sip:carol@chicago.com;newparam=5
+ sip:carol@chicago.com;security=on
+
+ sip:biloxi.com;transport=tcp;method=REGISTER?to=sip:bob%40biloxi.com
+ sip:biloxi.com;method=REGISTER;transport=tcp?to=sip:bob%40biloxi.com
+
+ sip:alice@atlanta.com?subject=project%20x&priority=urgent
+ sip:alice@atlanta.com?priority=urgent&subject=project%20x
+
+ The URIs within each of the following sets are not equivalent:
+
+ SIP:ALICE@AtLanTa.CoM;Transport=udp (different usernames)
+ sip:alice@AtLanTa.CoM;Transport=UDP
+
+ sip:bob@biloxi.com (can resolve to different ports)
+ sip:bob@biloxi.com:5060
+
+ sip:bob@biloxi.com (can resolve to different transports)
+ sip:bob@biloxi.com;transport=udp
+
+ sip:bob@biloxi.com (can resolve to different port and transports)
+ sip:bob@biloxi.com:6000;transport=tcp
+
+ sip:carol@chicago.com (different header component)
+ sip:carol@chicago.com?Subject=next%20meeting
+
+ sip:bob@phone21.boxesbybob.com (even though that's what
+ sip:bob@192.0.2.4 phone21.boxesbybob.com resolves to)
+
+ Note that equality is not transitive:
+
+ o sip:carol@chicago.com and sip:carol@chicago.com;security=on are
+ equivalent
+
+ o sip:carol@chicago.com and sip:carol@chicago.com;security=off
+ are equivalent
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 155]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ o sip:carol@chicago.com;security=on and
+ sip:carol@chicago.com;security=off are not equivalent
+
+19.1.5 Forming Requests from a URI
+
+ An implementation needs to take care when forming requests directly
+ from a URI. URIs from business cards, web pages, and even from
+ sources inside the protocol such as registered contacts may contain
+ inappropriate header fields or body parts.
+
+ An implementation MUST include any provided transport, maddr, ttl, or
+ user parameter in the Request-URI of the formed request. If the URI
+ contains a method parameter, its value MUST be used as the method of
+ the request. The method parameter MUST NOT be placed in the
+ Request-URI. Unknown URI parameters MUST be placed in the message's
+ Request-URI.
+
+ An implementation SHOULD treat the presence of any headers or body
+ parts in the URI as a desire to include them in the message, and
+ choose to honor the request on a per-component basis.
+
+ An implementation SHOULD NOT honor these obviously dangerous header
+ fields: From, Call-ID, CSeq, Via, and Record-Route.
+
+ An implementation SHOULD NOT honor any requested Route header field
+ values in order to not be used as an unwitting agent in malicious
+ attacks.
+
+ An implementation SHOULD NOT honor requests to include header fields
+ that may cause it to falsely advertise its location or capabilities.
+ These include: Accept, Accept-Encoding, Accept-Language, Allow,
+ Contact (in its dialog usage), Organization, Supported, and User-
+ Agent.
+
+ An implementation SHOULD verify the accuracy of any requested
+ descriptive header fields, including: Content-Disposition, Content-
+ Encoding, Content-Language, Content-Length, Content-Type, Date,
+ Mime-Version, and Timestamp.
+
+ If the request formed from constructing a message from a given URI is
+ not a valid SIP request, the URI is invalid. An implementation MUST
+ NOT proceed with transmitting the request. It should instead pursue
+ the course of action due an invalid URI in the context it occurs.
+
+ The constructed request can be invalid in many ways. These
+ include, but are not limited to, syntax error in header fields,
+ invalid combinations of URI parameters, or an incorrect
+ description of the message body.
+
+
+
+Rosenberg, et. al. Standards Track [Page 156]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Sending a request formed from a given URI may require capabilities
+ unavailable to the implementation. The URI might indicate use of an
+ unimplemented transport or extension, for example. An implementation
+ SHOULD refuse to send these requests rather than modifying them to
+ match their capabilities. An implementation MUST NOT send a request
+ requiring an extension that it does not support.
+
+ For example, such a request can be formed through the presence of
+ a Require header parameter or a method URI parameter with an
+ unknown or explicitly unsupported value.
+
+19.1.6 Relating SIP URIs and tel URLs
+
+ When a tel URL (RFC 2806 [9]) is converted to a SIP or SIPS URI, the
+ entire telephone-subscriber portion of the tel URL, including any
+ parameters, is placed into the userinfo part of the SIP or SIPS URI.
+
+ Thus, tel:+358-555-1234567;postd=pp22 becomes
+
+ sip:+358-555-1234567;postd=pp22@foo.com;user=phone
+
+ or
+ sips:+358-555-1234567;postd=pp22@foo.com;user=phone
+
+ not
+ sip:+358-555-1234567@foo.com;postd=pp22;user=phone
+
+ or
+
+ sips:+358-555-1234567@foo.com;postd=pp22;user=phone
+
+ In general, equivalent "tel" URLs converted to SIP or SIPS URIs in
+ this fashion may not produce equivalent SIP or SIPS URIs. The
+ userinfo of SIP and SIPS URIs are compared as a case-sensitive
+ string. Variance in case-insensitive portions of tel URLs and
+ reordering of tel URL parameters does not affect tel URL equivalence,
+ but does affect the equivalence of SIP URIs formed from them.
+
+ For example,
+
+ tel:+358-555-1234567;postd=pp22
+ tel:+358-555-1234567;POSTD=PP22
+
+ are equivalent, while
+
+ sip:+358-555-1234567;postd=pp22@foo.com;user=phone
+ sip:+358-555-1234567;POSTD=PP22@foo.com;user=phone
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 157]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ are not.
+
+ Likewise,
+
+ tel:+358-555-1234567;postd=pp22;isub=1411
+ tel:+358-555-1234567;isub=1411;postd=pp22
+
+ are equivalent, while
+
+ sip:+358-555-1234567;postd=pp22;isub=1411@foo.com;user=phone
+ sip:+358-555-1234567;isub=1411;postd=pp22@foo.com;user=phone
+
+ are not.
+
+ To mitigate this problem, elements constructing telephone-subscriber
+ fields to place in the userinfo part of a SIP or SIPS URI SHOULD fold
+ any case-insensitive portion of telephone-subscriber to lower case,
+ and order the telephone-subscriber parameters lexically by parameter
+ name, excepting isdn-subaddress and post-dial, which occur first and
+ in that order. (All components of a tel URL except for future-
+ extension parameters are defined to be compared case-insensitive.)
+
+ Following this suggestion, both
+
+ tel:+358-555-1234567;postd=pp22
+ tel:+358-555-1234567;POSTD=PP22
+
+ become
+
+ sip:+358-555-1234567;postd=pp22@foo.com;user=phone
+
+ and both
+
+ tel:+358-555-1234567;tsp=a.b;phone-context=5
+ tel:+358-555-1234567;phone-context=5;tsp=a.b
+
+ become
+
+ sip:+358-555-1234567;phone-context=5;tsp=a.b@foo.com;user=phone
+
+19.2 Option Tags
+
+ Option tags are unique identifiers used to designate new options
+ (extensions) in SIP. These tags are used in Require (Section 20.32),
+ Proxy-Require (Section 20.29), Supported (Section 20.37) and
+ Unsupported (Section 20.40) header fields. Note that these options
+ appear as parameters in those header fields in an option-tag = token
+ form (see Section 25 for the definition of token).
+
+
+
+Rosenberg, et. al. Standards Track [Page 158]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Option tags are defined in standards track RFCs. This is a change
+ from past practice, and is instituted to ensure continuing multi-
+ vendor interoperability (see discussion in Section 20.32 and Section
+ 20.37). An IANA registry of option tags is used to ensure easy
+ reference.
+
+19.3 Tags
+
+ The "tag" parameter is used in the To and From header fields of SIP
+ messages. It serves as a general mechanism to identify a dialog,
+ which is the combination of the Call-ID along with two tags, one from
+ each participant in the dialog. When a UA sends a request outside of
+ a dialog, it contains a From tag only, providing "half" of the dialog
+ ID. The dialog is completed from the response(s), each of which
+ contributes the second half in the To header field. The forking of
+ SIP requests means that multiple dialogs can be established from a
+ single request. This also explains the need for the two-sided dialog
+ identifier; without a contribution from the recipients, the
+ originator could not disambiguate the multiple dialogs established
+ from a single request.
+
+ When a tag is generated by a UA for insertion into a request or
+ response, it MUST be globally unique and cryptographically random
+ with at least 32 bits of randomness. A property of this selection
+ requirement is that a UA will place a different tag into the From
+ header of an INVITE than it would place into the To header of the
+ response to the same INVITE. This is needed in order for a UA to
+ invite itself to a session, a common case for "hairpinning" of calls
+ in PSTN gateways. Similarly, two INVITEs for different calls will
+ have different From tags, and two responses for different calls will
+ have different To tags.
+
+ Besides the requirement for global uniqueness, the algorithm for
+ generating a tag is implementation-specific. Tags are helpful in
+ fault tolerant systems, where a dialog is to be recovered on an
+ alternate server after a failure. A UAS can select the tag in such a
+ way that a backup can recognize a request as part of a dialog on the
+ failed server, and therefore determine that it should attempt to
+ recover the dialog and any other state associated with it.
+
+20 Header Fields
+
+ The general syntax for header fields is covered in Section 7.3. This
+ section lists the full set of header fields along with notes on
+ syntax, meaning, and usage. Throughout this section, we use [HX.Y]
+ to refer to Section X.Y of the current HTTP/1.1 specification RFC
+ 2616 [8]. Examples of each header field are given.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 159]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Information about header fields in relation to methods and proxy
+ processing is summarized in Tables 2 and 3.
+
+ The "where" column describes the request and response types in which
+ the header field can be used. Values in this column are:
+
+ R: header field may only appear in requests;
+
+ r: header field may only appear in responses;
+
+ 2xx, 4xx, etc.: A numerical value or range indicates response
+ codes with which the header field can be used;
+
+ c: header field is copied from the request to the response.
+
+ An empty entry in the "where" column indicates that the header
+ field may be present in all requests and responses.
+
+ The "proxy" column describes the operations a proxy may perform on a
+ header field:
+
+ a: A proxy can add or concatenate the header field if not present.
+
+ m: A proxy can modify an existing header field value.
+
+ d: A proxy can delete a header field value.
+
+ r: A proxy must be able to read the header field, and thus this
+ header field cannot be encrypted.
+
+ The next six columns relate to the presence of a header field in a
+ method:
+
+ c: Conditional; requirements on the header field depend on the
+ context of the message.
+
+ m: The header field is mandatory.
+
+ m*: The header field SHOULD be sent, but clients/servers need to
+ be prepared to receive messages without that header field.
+
+ o: The header field is optional.
+
+ t: The header field SHOULD be sent, but clients/servers need to be
+ prepared to receive messages without that header field.
+
+ If a stream-based protocol (such as TCP) is used as a
+ transport, then the header field MUST be sent.
+
+
+
+Rosenberg, et. al. Standards Track [Page 160]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ *: The header field is required if the message body is not empty.
+ See Sections 20.14, 20.15 and 7.4 for details.
+
+ -: The header field is not applicable.
+
+ "Optional" means that an element MAY include the header field in a
+ request or response, and a UA MAY ignore the header field if present
+ in the request or response (The exception to this rule is the Require
+ header field discussed in 20.32). A "mandatory" header field MUST be
+ present in a request, and MUST be understood by the UAS receiving the
+ request. A mandatory response header field MUST be present in the
+ response, and the header field MUST be understood by the UAC
+ processing the response. "Not applicable" means that the header
+ field MUST NOT be present in a request. If one is placed in a
+ request by mistake, it MUST be ignored by the UAS receiving the
+ request. Similarly, a header field labeled "not applicable" for a
+ response means that the UAS MUST NOT place the header field in the
+ response, and the UAC MUST ignore the header field in the response.
+
+ A UA SHOULD ignore extension header parameters that are not
+ understood.
+
+ A compact form of some common header field names is also defined for
+ use when overall message size is an issue.
+
+ The Contact, From, and To header fields contain a URI. If the URI
+ contains a comma, question mark or semicolon, the URI MUST be
+ enclosed in angle brackets (< and >). Any URI parameters are
+ contained within these brackets. If the URI is not enclosed in angle
+ brackets, any semicolon-delimited parameters are header-parameters,
+ not URI parameters.
+
+20.1 Accept
+
+ The Accept header field follows the syntax defined in [H14.1]. The
+ semantics are also identical, with the exception that if no Accept
+ header field is present, the server SHOULD assume a default value of
+ application/sdp.
+
+ An empty Accept header field means that no formats are acceptable.
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 161]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Example:
+
+ Header field where proxy ACK BYE CAN INV OPT REG
+ ___________________________________________________________
+ Accept R - o - o m* o
+ Accept 2xx - - - o m* o
+ Accept 415 - c - c c c
+ Accept-Encoding R - o - o o o
+ Accept-Encoding 2xx - - - o m* o
+ Accept-Encoding 415 - c - c c c
+ Accept-Language R - o - o o o
+ Accept-Language 2xx - - - o m* o
+ Accept-Language 415 - c - c c c
+ Alert-Info R ar - - - o - -
+ Alert-Info 180 ar - - - o - -
+ Allow R - o - o o o
+ Allow 2xx - o - m* m* o
+ Allow r - o - o o o
+ Allow 405 - m - m m m
+ Authentication-Info 2xx - o - o o o
+ Authorization R o o o o o o
+ Call-ID c r m m m m m m
+ Call-Info ar - - - o o o
+ Contact R o - - m o o
+ Contact 1xx - - - o - -
+ Contact 2xx - - - m o o
+ Contact 3xx d - o - o o o
+ Contact 485 - o - o o o
+ Content-Disposition o o - o o o
+ Content-Encoding o o - o o o
+ Content-Language o o - o o o
+ Content-Length ar t t t t t t
+ Content-Type * * - * * *
+ CSeq c r m m m m m m
+ Date a o o o o o o
+ Error-Info 300-699 a - o o o o o
+ Expires - - - o - o
+ From c r m m m m m m
+ In-Reply-To R - - - o - -
+ Max-Forwards R amr m m m m m m
+ Min-Expires 423 - - - - - m
+ MIME-Version o o - o o o
+ Organization ar - - - o o o
+
+ Table 2: Summary of header fields, A--O
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 162]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Header field where proxy ACK BYE CAN INV OPT REG
+ ___________________________________________________________________
+ Priority R ar - - - o - -
+ Proxy-Authenticate 407 ar - m - m m m
+ Proxy-Authenticate 401 ar - o o o o o
+ Proxy-Authorization R dr o o - o o o
+ Proxy-Require R ar - o - o o o
+ Record-Route R ar o o o o o -
+ Record-Route 2xx,18x mr - o o o o -
+ Reply-To - - - o - -
+ Require ar - c - c c c
+ Retry-After 404,413,480,486 - o o o o o
+ 500,503 - o o o o o
+ 600,603 - o o o o o
+ Route R adr c c c c c c
+ Server r - o o o o o
+ Subject R - - - o - -
+ Supported R - o o m* o o
+ Supported 2xx - o o m* m* o
+ Timestamp o o o o o o
+ To c(1) r m m m m m m
+ Unsupported 420 - m - m m m
+ User-Agent o o o o o o
+ Via R amr m m m m m m
+ Via rc dr m m m m m m
+ Warning r - o o o o o
+ WWW-Authenticate 401 ar - m - m m m
+ WWW-Authenticate 407 ar - o - o o o
+
+ Table 3: Summary of header fields, P--Z; (1): copied with possible
+ addition of tag
+
+ Accept: application/sdp;level=1, application/x-private, text/html
+
+20.2 Accept-Encoding
+
+ The Accept-Encoding header field is similar to Accept, but restricts
+ the content-codings [H3.5] that are acceptable in the response. See
+ [H14.3]. The semantics in SIP are identical to those defined in
+ [H14.3].
+
+ An empty Accept-Encoding header field is permissible. It is
+ equivalent to Accept-Encoding: identity, that is, only the identity
+ encoding, meaning no encoding, is permissible.
+
+ If no Accept-Encoding header field is present, the server SHOULD
+ assume a default value of identity.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 163]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ This differs slightly from the HTTP definition, which indicates that
+ when not present, any encoding can be used, but the identity encoding
+ is preferred.
+
+ Example:
+
+ Accept-Encoding: gzip
+
+20.3 Accept-Language
+
+ The Accept-Language header field is used in requests to indicate the
+ preferred languages for reason phrases, session descriptions, or
+ status responses carried as message bodies in the response. If no
+ Accept-Language header field is present, the server SHOULD assume all
+ languages are acceptable to the client.
+
+ The Accept-Language header field follows the syntax defined in
+ [H14.4]. The rules for ordering the languages based on the "q"
+ parameter apply to SIP as well.
+
+ Example:
+
+ Accept-Language: da, en-gb;q=0.8, en;q=0.7
+
+20.4 Alert-Info
+
+ When present in an INVITE request, the Alert-Info header field
+ specifies an alternative ring tone to the UAS. When present in a 180
+ (Ringing) response, the Alert-Info header field specifies an
+ alternative ringback tone to the UAC. A typical usage is for a proxy
+ to insert this header field to provide a distinctive ring feature.
+
+ The Alert-Info header field can introduce security risks. These
+ risks and the ways to handle them are discussed in Section 20.9,
+ which discusses the Call-Info header field since the risks are
+ identical.
+
+ In addition, a user SHOULD be able to disable this feature
+ selectively.
+
+ This helps prevent disruptions that could result from the use of
+ this header field by untrusted elements.
+
+ Example:
+
+ Alert-Info: <http://www.example.com/sounds/moo.wav>
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 164]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+20.5 Allow
+
+ The Allow header field lists the set of methods supported by the UA
+ generating the message.
+
+ All methods, including ACK and CANCEL, understood by the UA MUST be
+ included in the list of methods in the Allow header field, when
+ present. The absence of an Allow header field MUST NOT be
+ interpreted to mean that the UA sending the message supports no
+ methods. Rather, it implies that the UA is not providing any
+ information on what methods it supports.
+
+ Supplying an Allow header field in responses to methods other than
+ OPTIONS reduces the number of messages needed.
+
+ Example:
+
+ Allow: INVITE, ACK, OPTIONS, CANCEL, BYE
+
+20.6 Authentication-Info
+
+ The Authentication-Info header field provides for mutual
+ authentication with HTTP Digest. A UAS MAY include this header field
+ in a 2xx response to a request that was successfully authenticated
+ using digest based on the Authorization header field.
+
+ Syntax and semantics follow those specified in RFC 2617 [17].
+
+ Example:
+
+ Authentication-Info: nextnonce="47364c23432d2e131a5fb210812c"
+
+20.7 Authorization
+
+ The Authorization header field contains authentication credentials of
+ a UA. Section 22.2 overviews the use of the Authorization header
+ field, and Section 22.4 describes the syntax and semantics when used
+ with HTTP authentication.
+
+ This header field, along with Proxy-Authorization, breaks the general
+ rules about multiple header field values. Although not a comma-
+ separated list, this header field name may be present multiple times,
+ and MUST NOT be combined into a single header line using the usual
+ rules described in Section 7.3.
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 165]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ In the example below, there are no quotes around the Digest
+ parameter:
+
+ Authorization: Digest username="Alice", realm="atlanta.com",
+ nonce="84a4cc6f3082121f32b42a2187831a9e",
+ response="7587245234b3434cc3412213e5f113a5432"
+
+20.8 Call-ID
+
+ The Call-ID header field uniquely identifies a particular invitation
+ or all registrations of a particular client. A single multimedia
+ conference can give rise to several calls with different Call-IDs,
+ for example, if a user invites a single individual several times to
+ the same (long-running) conference. Call-IDs are case-sensitive and
+ are simply compared byte-by-byte.
+
+ The compact form of the Call-ID header field is i.
+
+ Examples:
+
+ Call-ID: f81d4fae-7dec-11d0-a765-00a0c91e6bf6@biloxi.com
+ i:f81d4fae-7dec-11d0-a765-00a0c91e6bf6@192.0.2.4
+
+20.9 Call-Info
+
+ The Call-Info header field provides additional information about the
+ caller or callee, depending on whether it is found in a request or
+ response. The purpose of the URI is described by the "purpose"
+ parameter. The "icon" parameter designates an image suitable as an
+ iconic representation of the caller or callee. The "info" parameter
+ describes the caller or callee in general, for example, through a web
+ page. The "card" parameter provides a business card, for example, in
+ vCard [36] or LDIF [37] formats. Additional tokens can be registered
+ using IANA and the procedures in Section 27.
+
+ Use of the Call-Info header field can pose a security risk. If a
+ callee fetches the URIs provided by a malicious caller, the callee
+ may be at risk for displaying inappropriate or offensive content,
+ dangerous or illegal content, and so on. Therefore, it is
+ RECOMMENDED that a UA only render the information in the Call-Info
+ header field if it can verify the authenticity of the element that
+ originated the header field and trusts that element. This need not
+ be the peer UA; a proxy can insert this header field into requests.
+
+ Example:
+
+ Call-Info: <http://wwww.example.com/alice/photo.jpg> ;purpose=icon,
+ <http://www.example.com/alice/> ;purpose=info
+
+
+
+Rosenberg, et. al. Standards Track [Page 166]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+20.10 Contact
+
+ A Contact header field value provides a URI whose meaning depends on
+ the type of request or response it is in.
+
+ A Contact header field value can contain a display name, a URI with
+ URI parameters, and header parameters.
+
+ This document defines the Contact parameters "q" and "expires".
+ These parameters are only used when the Contact is present in a
+ REGISTER request or response, or in a 3xx response. Additional
+ parameters may be defined in other specifications.
+
+ When the header field value contains a display name, the URI
+ including all URI parameters is enclosed in "<" and ">". If no "<"
+ and ">" are present, all parameters after the URI are header
+ parameters, not URI parameters. The display name can be tokens, or a
+ quoted string, if a larger character set is desired.
+
+ Even if the "display-name" is empty, the "name-addr" form MUST be
+ used if the "addr-spec" contains a comma, semicolon, or question
+ mark. There may or may not be LWS between the display-name and the
+ "<".
+
+ These rules for parsing a display name, URI and URI parameters, and
+ header parameters also apply for the header fields To and From.
+
+ The Contact header field has a role similar to the Location header
+ field in HTTP. However, the HTTP header field only allows one
+ address, unquoted. Since URIs can contain commas and semicolons
+ as reserved characters, they can be mistaken for header or
+ parameter delimiters, respectively.
+
+ The compact form of the Contact header field is m (for "moved").
+
+ Examples:
+
+ Contact: "Mr. Watson" <sip:watson@worcester.bell-telephone.com>
+ ;q=0.7; expires=3600,
+ "Mr. Watson" <mailto:watson@bell-telephone.com> ;q=0.1
+ m: <sips:bob@192.0.2.4>;expires=60
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 167]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+20.11 Content-Disposition
+
+ The Content-Disposition header field describes how the message body
+ or, for multipart messages, a message body part is to be interpreted
+ by the UAC or UAS. This SIP header field extends the MIME Content-
+ Type (RFC 2183 [18]).
+
+ Several new "disposition-types" of the Content-Disposition header are
+ defined by SIP. The value "session" indicates that the body part
+ describes a session, for either calls or early (pre-call) media. The
+ value "render" indicates that the body part should be displayed or
+ otherwise rendered to the user. Note that the value "render" is used
+ rather than "inline" to avoid the connotation that the MIME body is
+ displayed as a part of the rendering of the entire message (since the
+ MIME bodies of SIP messages oftentimes are not displayed to users).
+ For backward-compatibility, if the Content-Disposition header field
+ is missing, the server SHOULD assume bodies of Content-Type
+ application/sdp are the disposition "session", while other content
+ types are "render".
+
+ The disposition type "icon" indicates that the body part contains an
+ image suitable as an iconic representation of the caller or callee
+ that could be rendered informationally by a user agent when a message
+ has been received, or persistently while a dialog takes place. The
+ value "alert" indicates that the body part contains information, such
+ as an audio clip, that should be rendered by the user agent in an
+ attempt to alert the user to the receipt of a request, generally a
+ request that initiates a dialog; this alerting body could for example
+ be rendered as a ring tone for a phone call after a 180 Ringing
+ provisional response has been sent.
+
+ Any MIME body with a "disposition-type" that renders content to the
+ user should only be processed when a message has been properly
+ authenticated.
+
+ The handling parameter, handling-param, describes how the UAS should
+ react if it receives a message body whose content type or disposition
+ type it does not understand. The parameter has defined values of
+ "optional" and "required". If the handling parameter is missing, the
+ value "required" SHOULD be assumed. The handling parameter is
+ described in RFC 3204 [19].
+
+ If this header field is missing, the MIME type determines the default
+ content disposition. If there is none, "render" is assumed.
+
+ Example:
+
+ Content-Disposition: session
+
+
+
+Rosenberg, et. al. Standards Track [Page 168]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+20.12 Content-Encoding
+
+ The Content-Encoding header field is used as a modifier to the
+ "media-type". When present, its value indicates what additional
+ content codings have been applied to the entity-body, and thus what
+ decoding mechanisms MUST be applied in order to obtain the media-type
+ referenced by the Content-Type header field. Content-Encoding is
+ primarily used to allow a body to be compressed without losing the
+ identity of its underlying media type.
+
+ If multiple encodings have been applied to an entity-body, the
+ content codings MUST be listed in the order in which they were
+ applied.
+
+ All content-coding values are case-insensitive. IANA acts as a
+ registry for content-coding value tokens. See [H3.5] for a
+ definition of the syntax for content-coding.
+
+ Clients MAY apply content encodings to the body in requests. A
+ server MAY apply content encodings to the bodies in responses. The
+ server MUST only use encodings listed in the Accept-Encoding header
+ field in the request.
+
+ The compact form of the Content-Encoding header field is e.
+ Examples:
+
+ Content-Encoding: gzip
+ e: tar
+
+20.13 Content-Language
+
+ See [H14.12]. Example:
+
+ Content-Language: fr
+
+20.14 Content-Length
+
+ The Content-Length header field indicates the size of the message-
+ body, in decimal number of octets, sent to the recipient.
+ Applications SHOULD use this field to indicate the size of the
+ message-body to be transferred, regardless of the media type of the
+ entity. If a stream-based protocol (such as TCP) is used as
+ transport, the header field MUST be used.
+
+ The size of the message-body does not include the CRLF separating
+ header fields and body. Any Content-Length greater than or equal to
+ zero is a valid value. If no body is present in a message, then the
+ Content-Length header field value MUST be set to zero.
+
+
+
+Rosenberg, et. al. Standards Track [Page 169]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The ability to omit Content-Length simplifies the creation of
+ cgi-like scripts that dynamically generate responses.
+
+ The compact form of the header field is l.
+
+ Examples:
+
+ Content-Length: 349
+ l: 173
+
+20.15 Content-Type
+
+ The Content-Type header field indicates the media type of the
+ message-body sent to the recipient. The "media-type" element is
+ defined in [H3.7]. The Content-Type header field MUST be present if
+ the body is not empty. If the body is empty, and a Content-Type
+ header field is present, it indicates that the body of the specific
+ type has zero length (for example, an empty audio file).
+
+ The compact form of the header field is c.
+
+ Examples:
+
+ Content-Type: application/sdp
+ c: text/html; charset=ISO-8859-4
+
+20.16 CSeq
+
+ A CSeq header field in a request contains a single decimal sequence
+ number and the request method. The sequence number MUST be
+ expressible as a 32-bit unsigned integer. The method part of CSeq is
+ case-sensitive. The CSeq header field serves to order transactions
+ within a dialog, to provide a means to uniquely identify
+ transactions, and to differentiate between new requests and request
+ retransmissions. Two CSeq header fields are considered equal if the
+ sequence number and the request method are identical. Example:
+
+ CSeq: 4711 INVITE
+
+20.17 Date
+
+ The Date header field contains the date and time. Unlike HTTP/1.1,
+ SIP only supports the most recent RFC 1123 [20] format for dates. As
+ in [H3.3], SIP restricts the time zone in SIP-date to "GMT", while
+ RFC 1123 allows any time zone. An RFC 1123 date is case-sensitive.
+
+ The Date header field reflects the time when the request or response
+ is first sent.
+
+
+
+Rosenberg, et. al. Standards Track [Page 170]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The Date header field can be used by simple end systems without a
+ battery-backed clock to acquire a notion of current time.
+ However, in its GMT form, it requires clients to know their offset
+ from GMT.
+
+ Example:
+
+ Date: Sat, 13 Nov 2010 23:29:00 GMT
+
+20.18 Error-Info
+
+ The Error-Info header field provides a pointer to additional
+ information about the error status response.
+
+ SIP UACs have user interface capabilities ranging from pop-up
+ windows and audio on PC softclients to audio-only on "black"
+ phones or endpoints connected via gateways. Rather than forcing a
+ server generating an error to choose between sending an error
+ status code with a detailed reason phrase and playing an audio
+ recording, the Error-Info header field allows both to be sent.
+ The UAC then has the choice of which error indicator to render to
+ the caller.
+
+ A UAC MAY treat a SIP or SIPS URI in an Error-Info header field as if
+ it were a Contact in a redirect and generate a new INVITE, resulting
+ in a recorded announcement session being established. A non-SIP URI
+ MAY be rendered to the user.
+
+ Examples:
+
+ SIP/2.0 404 The number you have dialed is not in service
+ Error-Info: <sip:not-in-service-recording@atlanta.com>
+
+20.19 Expires
+
+ The Expires header field gives the relative time after which the
+ message (or content) expires.
+
+ The precise meaning of this is method dependent.
+
+ The expiration time in an INVITE does not affect the duration of the
+ actual session that may result from the invitation. Session
+ description protocols may offer the ability to express time limits on
+ the session duration, however.
+
+ The value of this field is an integral number of seconds (in decimal)
+ between 0 and (2**32)-1, measured from the receipt of the request.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 171]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Example:
+
+ Expires: 5
+
+20.20 From
+
+ The From header field indicates the initiator of the request. This
+ may be different from the initiator of the dialog. Requests sent by
+ the callee to the caller use the callee's address in the From header
+ field.
+
+ The optional "display-name" is meant to be rendered by a human user
+ interface. A system SHOULD use the display name "Anonymous" if the
+ identity of the client is to remain hidden. Even if the "display-
+ name" is empty, the "name-addr" form MUST be used if the "addr-spec"
+ contains a comma, question mark, or semicolon. Syntax issues are
+ discussed in Section 7.3.1.
+
+ Two From header fields are equivalent if their URIs match, and their
+ parameters match. Extension parameters in one header field, not
+ present in the other are ignored for the purposes of comparison. This
+ means that the display name and presence or absence of angle brackets
+ do not affect matching.
+
+ See Section 20.10 for the rules for parsing a display name, URI and
+ URI parameters, and header field parameters.
+
+ The compact form of the From header field is f.
+
+ Examples:
+
+ From: "A. G. Bell" <sip:agb@bell-telephone.com> ;tag=a48s
+ From: sip:+12125551212@server.phone2net.com;tag=887s
+ f: Anonymous <sip:c8oqz84zk7z@privacy.org>;tag=hyh8
+
+20.21 In-Reply-To
+
+ The In-Reply-To header field enumerates the Call-IDs that this call
+ references or returns. These Call-IDs may have been cached by the
+ client then included in this header field in a return call.
+
+ This allows automatic call distribution systems to route return
+ calls to the originator of the first call. This also allows
+ callees to filter calls, so that only return calls for calls they
+ originated will be accepted. This field is not a substitute for
+ request authentication.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 172]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Example:
+
+ In-Reply-To: 70710@saturn.bell-tel.com, 17320@saturn.bell-tel.com
+
+20.22 Max-Forwards
+
+ The Max-Forwards header field must be used with any SIP method to
+ limit the number of proxies or gateways that can forward the request
+ to the next downstream server. This can also be useful when the
+ client is attempting to trace a request chain that appears to be
+ failing or looping in mid-chain.
+
+ The Max-Forwards value is an integer in the range 0-255 indicating
+ the remaining number of times this request message is allowed to be
+ forwarded. This count is decremented by each server that forwards
+ the request. The recommended initial value is 70.
+
+ This header field should be inserted by elements that can not
+ otherwise guarantee loop detection. For example, a B2BUA should
+ insert a Max-Forwards header field.
+
+ Example:
+
+ Max-Forwards: 6
+
+20.23 Min-Expires
+
+ The Min-Expires header field conveys the minimum refresh interval
+ supported for soft-state elements managed by that server. This
+ includes Contact header fields that are stored by a registrar. The
+ header field contains a decimal integer number of seconds from 0 to
+ (2**32)-1. The use of the header field in a 423 (Interval Too Brief)
+ response is described in Sections 10.2.8, 10.3, and 21.4.17.
+
+ Example:
+
+ Min-Expires: 60
+
+20.24 MIME-Version
+
+ See [H19.4.1].
+
+ Example:
+
+ MIME-Version: 1.0
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 173]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+20.25 Organization
+
+ The Organization header field conveys the name of the organization to
+ which the SIP element issuing the request or response belongs.
+
+ The field MAY be used by client software to filter calls.
+
+ Example:
+
+ Organization: Boxes by Bob
+
+20.26 Priority
+
+ The Priority header field indicates the urgency of the request as
+ perceived by the client. The Priority header field describes the
+ priority that the SIP request should have to the receiving human or
+ its agent. For example, it may be factored into decisions about call
+ routing and acceptance. For these decisions, a message containing no
+ Priority header field SHOULD be treated as if it specified a Priority
+ of "normal". The Priority header field does not influence the use of
+ communications resources such as packet forwarding priority in
+ routers or access to circuits in PSTN gateways. The header field can
+ have the values "non-urgent", "normal", "urgent", and "emergency",
+ but additional values can be defined elsewhere. It is RECOMMENDED
+ that the value of "emergency" only be used when life, limb, or
+ property are in imminent danger. Otherwise, there are no semantics
+ defined for this header field.
+
+ These are the values of RFC 2076 [38], with the addition of
+ "emergency".
+
+ Examples:
+
+ Subject: A tornado is heading our way!
+ Priority: emergency
+
+ or
+
+ Subject: Weekend plans
+ Priority: non-urgent
+
+20.27 Proxy-Authenticate
+
+ A Proxy-Authenticate header field value contains an authentication
+ challenge.
+
+ The use of this header field is defined in [H14.33]. See Section
+ 22.3 for further details on its usage.
+
+
+
+Rosenberg, et. al. Standards Track [Page 174]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Example:
+
+ Proxy-Authenticate: Digest realm="atlanta.com",
+ domain="sip:ss1.carrier.com", qop="auth",
+ nonce="f84f1cec41e6cbe5aea9c8e88d359",
+ opaque="", stale=FALSE, algorithm=MD5
+
+20.28 Proxy-Authorization
+
+ The Proxy-Authorization header field allows the client to identify
+ itself (or its user) to a proxy that requires authentication. A
+ Proxy-Authorization field value consists of credentials containing
+ the authentication information of the user agent for the proxy and/or
+ realm of the resource being requested.
+
+ See Section 22.3 for a definition of the usage of this header field.
+
+ This header field, along with Authorization, breaks the general rules
+ about multiple header field names. Although not a comma-separated
+ list, this header field name may be present multiple times, and MUST
+ NOT be combined into a single header line using the usual rules
+ described in Section 7.3.1.
+
+ Example:
+
+ Proxy-Authorization: Digest username="Alice", realm="atlanta.com",
+ nonce="c60f3082ee1212b402a21831ae",
+ response="245f23415f11432b3434341c022"
+
+20.29 Proxy-Require
+
+ The Proxy-Require header field is used to indicate proxy-sensitive
+ features that must be supported by the proxy. See Section 20.32 for
+ more details on the mechanics of this message and a usage example.
+
+ Example:
+
+ Proxy-Require: foo
+
+20.30 Record-Route
+
+ The Record-Route header field is inserted by proxies in a request to
+ force future requests in the dialog to be routed through the proxy.
+
+ Examples of its use with the Route header field are described in
+ Sections 16.12.1.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 175]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Example:
+
+ Record-Route: <sip:server10.biloxi.com;lr>,
+ <sip:bigbox3.site3.atlanta.com;lr>
+
+20.31 Reply-To
+
+ The Reply-To header field contains a logical return URI that may be
+ different from the From header field. For example, the URI MAY be
+ used to return missed calls or unestablished sessions. If the user
+ wished to remain anonymous, the header field SHOULD either be omitted
+ from the request or populated in such a way that does not reveal any
+ private information.
+
+ Even if the "display-name" is empty, the "name-addr" form MUST be
+ used if the "addr-spec" contains a comma, question mark, or
+ semicolon. Syntax issues are discussed in Section 7.3.1.
+
+ Example:
+
+ Reply-To: Bob <sip:bob@biloxi.com>
+
+20.32 Require
+
+ The Require header field is used by UACs to tell UASs about options
+ that the UAC expects the UAS to support in order to process the
+ request. Although an optional header field, the Require MUST NOT be
+ ignored if it is present.
+
+ The Require header field contains a list of option tags, described in
+ Section 19.2. Each option tag defines a SIP extension that MUST be
+ understood to process the request. Frequently, this is used to
+ indicate that a specific set of extension header fields need to be
+ understood. A UAC compliant to this specification MUST only include
+ option tags corresponding to standards-track RFCs.
+
+ Example:
+
+ Require: 100rel
+
+20.33 Retry-After
+
+ The Retry-After header field can be used with a 500 (Server Internal
+ Error) or 503 (Service Unavailable) response to indicate how long the
+ service is expected to be unavailable to the requesting client and
+ with a 404 (Not Found), 413 (Request Entity Too Large), 480
+ (Temporarily Unavailable), 486 (Busy Here), 600 (Busy), or 603
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 176]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ (Decline) response to indicate when the called party anticipates
+ being available again. The value of this field is a positive integer
+ number of seconds (in decimal) after the time of the response.
+
+ An optional comment can be used to indicate additional information
+ about the time of callback. An optional "duration" parameter
+ indicates how long the called party will be reachable starting at the
+ initial time of availability. If no duration parameter is given, the
+ service is assumed to be available indefinitely.
+
+ Examples:
+
+ Retry-After: 18000;duration=3600
+ Retry-After: 120 (I'm in a meeting)
+
+20.34 Route
+
+ The Route header field is used to force routing for a request through
+ the listed set of proxies. Examples of the use of the Route header
+ field are in Section 16.12.1.
+
+ Example:
+
+ Route: <sip:bigbox3.site3.atlanta.com;lr>,
+ <sip:server10.biloxi.com;lr>
+
+20.35 Server
+
+ The Server header field contains information about the software used
+ by the UAS to handle the request.
+
+ Revealing the specific software version of the server might allow the
+ server to become more vulnerable to attacks against software that is
+ known to contain security holes. Implementers SHOULD make the Server
+ header field a configurable option.
+
+ Example:
+
+ Server: HomeServer v2
+
+20.36 Subject
+
+ The Subject header field provides a summary or indicates the nature
+ of the call, allowing call filtering without having to parse the
+ session description. The session description does not have to use
+ the same subject indication as the invitation.
+
+ The compact form of the Subject header field is s.
+
+
+
+Rosenberg, et. al. Standards Track [Page 177]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Example:
+
+ Subject: Need more boxes
+ s: Tech Support
+
+20.37 Supported
+
+ The Supported header field enumerates all the extensions supported by
+ the UAC or UAS.
+
+ The Supported header field contains a list of option tags, described
+ in Section 19.2, that are understood by the UAC or UAS. A UA
+ compliant to this specification MUST only include option tags
+ corresponding to standards-track RFCs. If empty, it means that no
+ extensions are supported.
+
+ The compact form of the Supported header field is k.
+
+ Example:
+
+ Supported: 100rel
+
+20.38 Timestamp
+
+ The Timestamp header field describes when the UAC sent the request to
+ the UAS.
+
+ See Section 8.2.6 for details on how to generate a response to a
+ request that contains the header field. Although there is no
+ normative behavior defined here that makes use of the header, it
+ allows for extensions or SIP applications to obtain RTT estimates.
+
+ Example:
+
+ Timestamp: 54
+
+20.39 To
+
+ The To header field specifies the logical recipient of the request.
+
+ The optional "display-name" is meant to be rendered by a human-user
+ interface. The "tag" parameter serves as a general mechanism for
+ dialog identification.
+
+ See Section 19.3 for details of the "tag" parameter.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 178]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Comparison of To header fields for equality is identical to
+ comparison of From header fields. See Section 20.10 for the rules
+ for parsing a display name, URI and URI parameters, and header field
+ parameters.
+
+ The compact form of the To header field is t.
+
+ The following are examples of valid To header fields:
+
+ To: The Operator <sip:operator@cs.columbia.edu>;tag=287447
+ t: sip:+12125551212@server.phone2net.com
+
+20.40 Unsupported
+
+ The Unsupported header field lists the features not supported by the
+ UAS. See Section 20.32 for motivation.
+
+ Example:
+
+ Unsupported: foo
+
+20.41 User-Agent
+
+ The User-Agent header field contains information about the UAC
+ originating the request. The semantics of this header field are
+ defined in [H14.43].
+
+ Revealing the specific software version of the user agent might allow
+ the user agent to become more vulnerable to attacks against software
+ that is known to contain security holes. Implementers SHOULD make
+ the User-Agent header field a configurable option.
+
+ Example:
+
+ User-Agent: Softphone Beta1.5
+
+20.42 Via
+
+ The Via header field indicates the path taken by the request so far
+ and indicates the path that should be followed in routing responses.
+ The branch ID parameter in the Via header field values serves as a
+ transaction identifier, and is used by proxies to detect loops.
+
+ A Via header field value contains the transport protocol used to send
+ the message, the client's host name or network address, and possibly
+ the port number at which it wishes to receive responses. A Via
+ header field value can also contain parameters such as "maddr",
+ "ttl", "received", and "branch", whose meaning and use are described
+
+
+
+Rosenberg, et. al. Standards Track [Page 179]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ in other sections. For implementations compliant to this
+ specification, the value of the branch parameter MUST start with the
+ magic cookie "z9hG4bK", as discussed in Section 8.1.1.7.
+
+ Transport protocols defined here are "UDP", "TCP", "TLS", and "SCTP".
+ "TLS" means TLS over TCP. When a request is sent to a SIPS URI, the
+ protocol still indicates "SIP", and the transport protocol is TLS.
+
+Via: SIP/2.0/UDP erlang.bell-telephone.com:5060;branch=z9hG4bK87asdks7
+Via: SIP/2.0/UDP 192.0.2.1:5060 ;received=192.0.2.207
+ ;branch=z9hG4bK77asjd
+
+ The compact form of the Via header field is v.
+
+ In this example, the message originated from a multi-homed host with
+ two addresses, 192.0.2.1 and 192.0.2.207. The sender guessed wrong
+ as to which network interface would be used. Erlang.bell-
+ telephone.com noticed the mismatch and added a parameter to the
+ previous hop's Via header field value, containing the address that
+ the packet actually came from.
+
+ The host or network address and port number are not required to
+ follow the SIP URI syntax. Specifically, LWS on either side of the
+ ":" or "/" is allowed, as shown here:
+
+ Via: SIP / 2.0 / UDP first.example.com: 4000;ttl=16
+ ;maddr=224.2.0.1 ;branch=z9hG4bKa7c6a8dlze.1
+
+ Even though this specification mandates that the branch parameter be
+ present in all requests, the BNF for the header field indicates that
+ it is optional. This allows interoperation with RFC 2543 elements,
+ which did not have to insert the branch parameter.
+
+ Two Via header fields are equal if their sent-protocol and sent-by
+ fields are equal, both have the same set of parameters, and the
+ values of all parameters are equal.
+
+20.43 Warning
+
+ The Warning header field is used to carry additional information
+ about the status of a response. Warning header field values are sent
+ with responses and contain a three-digit warning code, host name, and
+ warning text.
+
+ The "warn-text" should be in a natural language that is most likely
+ to be intelligible to the human user receiving the response. This
+ decision can be based on any available knowledge, such as the
+ location of the user, the Accept-Language field in a request, or the
+
+
+
+Rosenberg, et. al. Standards Track [Page 180]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Content-Language field in a response. The default language is i-
+ default [21].
+
+ The currently-defined "warn-code"s are listed below, with a
+ recommended warn-text in English and a description of their meaning.
+ These warnings describe failures induced by the session description.
+ The first digit of warning codes beginning with "3" indicates
+ warnings specific to SIP. Warnings 300 through 329 are reserved for
+ indicating problems with keywords in the session description, 330
+ through 339 are warnings related to basic network services requested
+ in the session description, 370 through 379 are warnings related to
+ quantitative QoS parameters requested in the session description, and
+ 390 through 399 are miscellaneous warnings that do not fall into one
+ of the above categories.
+
+ 300 Incompatible network protocol: One or more network protocols
+ contained in the session description are not available.
+
+ 301 Incompatible network address formats: One or more network
+ address formats contained in the session description are not
+ available.
+
+ 302 Incompatible transport protocol: One or more transport
+ protocols described in the session description are not
+ available.
+
+ 303 Incompatible bandwidth units: One or more bandwidth
+ measurement units contained in the session description were
+ not understood.
+
+ 304 Media type not available: One or more media types contained in
+ the session description are not available.
+
+ 305 Incompatible media format: One or more media formats contained
+ in the session description are not available.
+
+ 306 Attribute not understood: One or more of the media attributes
+ in the session description are not supported.
+
+ 307 Session description parameter not understood: A parameter
+ other than those listed above was not understood.
+
+ 330 Multicast not available: The site where the user is located
+ does not support multicast.
+
+ 331 Unicast not available: The site where the user is located does
+ not support unicast communication (usually due to the presence
+ of a firewall).
+
+
+
+Rosenberg, et. al. Standards Track [Page 181]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ 370 Insufficient bandwidth: The bandwidth specified in the session
+ description or defined by the media exceeds that known to be
+ available.
+
+ 399 Miscellaneous warning: The warning text can include arbitrary
+ information to be presented to a human user or logged. A
+ system receiving this warning MUST NOT take any automated
+ action.
+
+ 1xx and 2xx have been taken by HTTP/1.1.
+
+ Additional "warn-code"s can be defined through IANA, as defined in
+ Section 27.2.
+
+ Examples:
+
+ Warning: 307 isi.edu "Session parameter 'foo' not understood"
+ Warning: 301 isi.edu "Incompatible network address type 'E.164'"
+
+20.44 WWW-Authenticate
+
+ A WWW-Authenticate header field value contains an authentication
+ challenge. See Section 22.2 for further details on its usage.
+
+ Example:
+
+ WWW-Authenticate: Digest realm="atlanta.com",
+ domain="sip:boxesbybob.com", qop="auth",
+ nonce="f84f1cec41e6cbe5aea9c8e88d359",
+ opaque="", stale=FALSE, algorithm=MD5
+
+21 Response Codes
+
+ The response codes are consistent with, and extend, HTTP/1.1 response
+ codes. Not all HTTP/1.1 response codes are appropriate, and only
+ those that are appropriate are given here. Other HTTP/1.1 response
+ codes SHOULD NOT be used. Also, SIP defines a new class, 6xx.
+
+21.1 Provisional 1xx
+
+ Provisional responses, also known as informational responses,
+ indicate that the server contacted is performing some further action
+ and does not yet have a definitive response. A server sends a 1xx
+ response if it expects to take more than 200 ms to obtain a final
+ response. Note that 1xx responses are not transmitted reliably.
+ They never cause the client to send an ACK. Provisional (1xx)
+ responses MAY contain message bodies, including session descriptions.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 182]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+21.1.1 100 Trying
+
+ This response indicates that the request has been received by the
+ next-hop server and that some unspecified action is being taken on
+ behalf of this call (for example, a database is being consulted).
+ This response, like all other provisional responses, stops
+ retransmissions of an INVITE by a UAC. The 100 (Trying) response is
+ different from other provisional responses, in that it is never
+ forwarded upstream by a stateful proxy.
+
+21.1.2 180 Ringing
+
+ The UA receiving the INVITE is trying to alert the user. This
+ response MAY be used to initiate local ringback.
+
+21.1.3 181 Call Is Being Forwarded
+
+ A server MAY use this status code to indicate that the call is being
+ forwarded to a different set of destinations.
+
+21.1.4 182 Queued
+
+ The called party is temporarily unavailable, but the server has
+ decided to queue the call rather than reject it. When the callee
+ becomes available, it will return the appropriate final status
+ response. The reason phrase MAY give further details about the
+ status of the call, for example, "5 calls queued; expected waiting
+ time is 15 minutes". The server MAY issue several 182 (Queued)
+ responses to update the caller about the status of the queued call.
+
+21.1.5 183 Session Progress
+
+ The 183 (Session Progress) response is used to convey information
+ about the progress of the call that is not otherwise classified. The
+ Reason-Phrase, header fields, or message body MAY be used to convey
+ more details about the call progress.
+
+21.2 Successful 2xx
+
+ The request was successful.
+
+21.2.1 200 OK
+
+ The request has succeeded. The information returned with the
+ response depends on the method used in the request.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 183]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+21.3 Redirection 3xx
+
+ 3xx responses give information about the user's new location, or
+ about alternative services that might be able to satisfy the call.
+
+21.3.1 300 Multiple Choices
+
+ The address in the request resolved to several choices, each with its
+ own specific location, and the user (or UA) can select a preferred
+ communication end point and redirect its request to that location.
+
+ The response MAY include a message body containing a list of resource
+ characteristics and location(s) from which the user or UA can choose
+ the one most appropriate, if allowed by the Accept request header
+ field. However, no MIME types have been defined for this message
+ body.
+
+ The choices SHOULD also be listed as Contact fields (Section 20.10).
+ Unlike HTTP, the SIP response MAY contain several Contact fields or a
+ list of addresses in a Contact field. UAs MAY use the Contact header
+ field value for automatic redirection or MAY ask the user to confirm
+ a choice. However, this specification does not define any standard
+ for such automatic selection.
+
+ This status response is appropriate if the callee can be reached
+ at several different locations and the server cannot or prefers
+ not to proxy the request.
+
+21.3.2 301 Moved Permanently
+
+ The user can no longer be found at the address in the Request-URI,
+ and the requesting client SHOULD retry at the new address given by
+ the Contact header field (Section 20.10). The requestor SHOULD
+ update any local directories, address books, and user location caches
+ with this new value and redirect future requests to the address(es)
+ listed.
+
+21.3.3 302 Moved Temporarily
+
+ The requesting client SHOULD retry the request at the new address(es)
+ given by the Contact header field (Section 20.10). The Request-URI
+ of the new request uses the value of the Contact header field in the
+ response.
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 184]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The duration of the validity of the Contact URI can be indicated
+ through an Expires (Section 20.19) header field or an expires
+ parameter in the Contact header field. Both proxies and UAs MAY
+ cache this URI for the duration of the expiration time. If there is
+ no explicit expiration time, the address is only valid once for
+ recursing, and MUST NOT be cached for future transactions.
+
+ If the URI cached from the Contact header field fails, the Request-
+ URI from the redirected request MAY be tried again a single time.
+
+ The temporary URI may have become out-of-date sooner than the
+ expiration time, and a new temporary URI may be available.
+
+21.3.4 305 Use Proxy
+
+ The requested resource MUST be accessed through the proxy given by
+ the Contact field. The Contact field gives the URI of the proxy.
+ The recipient is expected to repeat this single request via the
+ proxy. 305 (Use Proxy) responses MUST only be generated by UASs.
+
+21.3.5 380 Alternative Service
+
+ The call was not successful, but alternative services are possible.
+
+ The alternative services are described in the message body of the
+ response. Formats for such bodies are not defined here, and may be
+ the subject of future standardization.
+
+21.4 Request Failure 4xx
+
+ 4xx responses are definite failure responses from a particular
+ server. The client SHOULD NOT retry the same request without
+ modification (for example, adding appropriate authorization).
+ However, the same request to a different server might be successful.
+
+21.4.1 400 Bad Request
+
+ The request could not be understood due to malformed syntax. The
+ Reason-Phrase SHOULD identify the syntax problem in more detail, for
+ example, "Missing Call-ID header field".
+
+21.4.2 401 Unauthorized
+
+ The request requires user authentication. This response is issued by
+ UASs and registrars, while 407 (Proxy Authentication Required) is
+ used by proxy servers.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 185]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+21.4.3 402 Payment Required
+
+ Reserved for future use.
+
+21.4.4 403 Forbidden
+
+ The server understood the request, but is refusing to fulfill it.
+ Authorization will not help, and the request SHOULD NOT be repeated.
+
+21.4.5 404 Not Found
+
+ The server has definitive information that the user does not exist at
+ the domain specified in the Request-URI. This status is also
+ returned if the domain in the Request-URI does not match any of the
+ domains handled by the recipient of the request.
+
+21.4.6 405 Method Not Allowed
+
+ The method specified in the Request-Line is understood, but not
+ allowed for the address identified by the Request-URI.
+
+ The response MUST include an Allow header field containing a list of
+ valid methods for the indicated address.
+
+21.4.7 406 Not Acceptable
+
+ The resource identified by the request is only capable of generating
+ response entities that have content characteristics not acceptable
+ according to the Accept header field sent in the request.
+
+21.4.8 407 Proxy Authentication Required
+
+ This code is similar to 401 (Unauthorized), but indicates that the
+ client MUST first authenticate itself with the proxy. SIP access
+ authentication is explained in Sections 26 and 22.3.
+
+ This status code can be used for applications where access to the
+ communication channel (for example, a telephony gateway) rather than
+ the callee requires authentication.
+
+21.4.9 408 Request Timeout
+
+ The server could not produce a response within a suitable amount of
+ time, for example, if it could not determine the location of the user
+ in time. The client MAY repeat the request without modifications at
+ any later time.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 186]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+21.4.10 410 Gone
+
+ The requested resource is no longer available at the server and no
+ forwarding address is known. This condition is expected to be
+ considered permanent. If the server does not know, or has no
+ facility to determine, whether or not the condition is permanent, the
+ status code 404 (Not Found) SHOULD be used instead.
+
+21.4.11 413 Request Entity Too Large
+
+ The server is refusing to process a request because the request
+ entity-body is larger than the server is willing or able to process.
+ The server MAY close the connection to prevent the client from
+ continuing the request.
+
+ If the condition is temporary, the server SHOULD include a Retry-
+ After header field to indicate that it is temporary and after what
+ time the client MAY try again.
+
+21.4.12 414 Request-URI Too Long
+
+ The server is refusing to service the request because the Request-URI
+ is longer than the server is willing to interpret.
+
+21.4.13 415 Unsupported Media Type
+
+ The server is refusing to service the request because the message
+ body of the request is in a format not supported by the server for
+ the requested method. The server MUST return a list of acceptable
+ formats using the Accept, Accept-Encoding, or Accept-Language header
+ field, depending on the specific problem with the content. UAC
+ processing of this response is described in Section 8.1.3.5.
+
+21.4.14 416 Unsupported URI Scheme
+
+ The server cannot process the request because the scheme of the URI
+ in the Request-URI is unknown to the server. Client processing of
+ this response is described in Section 8.1.3.5.
+
+21.4.15 420 Bad Extension
+
+ The server did not understand the protocol extension specified in a
+ Proxy-Require (Section 20.29) or Require (Section 20.32) header
+ field. The server MUST include a list of the unsupported extensions
+ in an Unsupported header field in the response. UAC processing of
+ this response is described in Section 8.1.3.5.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 187]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+21.4.16 421 Extension Required
+
+ The UAS needs a particular extension to process the request, but this
+ extension is not listed in a Supported header field in the request.
+ Responses with this status code MUST contain a Require header field
+ listing the required extensions.
+
+ A UAS SHOULD NOT use this response unless it truly cannot provide any
+ useful service to the client. Instead, if a desirable extension is
+ not listed in the Supported header field, servers SHOULD process the
+ request using baseline SIP capabilities and any extensions supported
+ by the client.
+
+21.4.17 423 Interval Too Brief
+
+ The server is rejecting the request because the expiration time of
+ the resource refreshed by the request is too short. This response
+ can be used by a registrar to reject a registration whose Contact
+ header field expiration time was too small. The use of this response
+ and the related Min-Expires header field are described in Sections
+ 10.2.8, 10.3, and 20.23.
+
+21.4.18 480 Temporarily Unavailable
+
+ The callee's end system was contacted successfully but the callee is
+ currently unavailable (for example, is not logged in, logged in but
+ in a state that precludes communication with the callee, or has
+ activated the "do not disturb" feature). The response MAY indicate a
+ better time to call in the Retry-After header field. The user could
+ also be available elsewhere (unbeknownst to this server). The reason
+ phrase SHOULD indicate a more precise cause as to why the callee is
+ unavailable. This value SHOULD be settable by the UA. Status 486
+ (Busy Here) MAY be used to more precisely indicate a particular
+ reason for the call failure.
+
+ This status is also returned by a redirect or proxy server that
+ recognizes the user identified by the Request-URI, but does not
+ currently have a valid forwarding location for that user.
+
+21.4.19 481 Call/Transaction Does Not Exist
+
+ This status indicates that the UAS received a request that does not
+ match any existing dialog or transaction.
+
+21.4.20 482 Loop Detected
+
+ The server has detected a loop (Section 16.3 Item 4).
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 188]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+21.4.21 483 Too Many Hops
+
+ The server received a request that contains a Max-Forwards (Section
+ 20.22) header field with the value zero.
+
+21.4.22 484 Address Incomplete
+
+ The server received a request with a Request-URI that was incomplete.
+ Additional information SHOULD be provided in the reason phrase.
+
+ This status code allows overlapped dialing. With overlapped
+ dialing, the client does not know the length of the dialing
+ string. It sends strings of increasing lengths, prompting the
+ user for more input, until it no longer receives a 484 (Address
+ Incomplete) status response.
+
+21.4.23 485 Ambiguous
+
+ The Request-URI was ambiguous. The response MAY contain a listing of
+ possible unambiguous addresses in Contact header fields. Revealing
+ alternatives can infringe on privacy of the user or the organization.
+ It MUST be possible to configure a server to respond with status 404
+ (Not Found) or to suppress the listing of possible choices for
+ ambiguous Request-URIs.
+
+ Example response to a request with the Request-URI
+ sip:lee@example.com:
+
+ SIP/2.0 485 Ambiguous
+ Contact: Carol Lee <sip:carol.lee@example.com>
+ Contact: Ping Lee <sip:p.lee@example.com>
+ Contact: Lee M. Foote <sips:lee.foote@example.com>
+
+ Some email and voice mail systems provide this functionality. A
+ status code separate from 3xx is used since the semantics are
+ different: for 300, it is assumed that the same person or service
+ will be reached by the choices provided. While an automated
+ choice or sequential search makes sense for a 3xx response, user
+ intervention is required for a 485 (Ambiguous) response.
+
+21.4.24 486 Busy Here
+
+ The callee's end system was contacted successfully, but the callee is
+ currently not willing or able to take additional calls at this end
+ system. The response MAY indicate a better time to call in the
+ Retry-After header field. The user could also be available
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 189]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ elsewhere, such as through a voice mail service. Status 600 (Busy
+ Everywhere) SHOULD be used if the client knows that no other end
+ system will be able to accept this call.
+
+21.4.25 487 Request Terminated
+
+ The request was terminated by a BYE or CANCEL request. This response
+ is never returned for a CANCEL request itself.
+
+21.4.26 488 Not Acceptable Here
+
+ The response has the same meaning as 606 (Not Acceptable), but only
+ applies to the specific resource addressed by the Request-URI and the
+ request may succeed elsewhere.
+
+ A message body containing a description of media capabilities MAY be
+ present in the response, which is formatted according to the Accept
+ header field in the INVITE (or application/sdp if not present), the
+ same as a message body in a 200 (OK) response to an OPTIONS request.
+
+21.4.27 491 Request Pending
+
+ The request was received by a UAS that had a pending request within
+ the same dialog. Section 14.2 describes how such "glare" situations
+ are resolved.
+
+21.4.28 493 Undecipherable
+
+ The request was received by a UAS that contained an encrypted MIME
+ body for which the recipient does not possess or will not provide an
+ appropriate decryption key. This response MAY have a single body
+ containing an appropriate public key that should be used to encrypt
+ MIME bodies sent to this UA. Details of the usage of this response
+ code can be found in Section 23.2.
+
+21.5 Server Failure 5xx
+
+ 5xx responses are failure responses given when a server itself has
+ erred.
+
+21.5.1 500 Server Internal Error
+
+ The server encountered an unexpected condition that prevented it from
+ fulfilling the request. The client MAY display the specific error
+ condition and MAY retry the request after several seconds.
+
+ If the condition is temporary, the server MAY indicate when the
+ client may retry the request using the Retry-After header field.
+
+
+
+Rosenberg, et. al. Standards Track [Page 190]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+21.5.2 501 Not Implemented
+
+ The server does not support the functionality required to fulfill the
+ request. This is the appropriate response when a UAS does not
+ recognize the request method and is not capable of supporting it for
+ any user. (Proxies forward all requests regardless of method.)
+
+ Note that a 405 (Method Not Allowed) is sent when the server
+ recognizes the request method, but that method is not allowed or
+ supported.
+
+21.5.3 502 Bad Gateway
+
+ The server, while acting as a gateway or proxy, received an invalid
+ response from the downstream server it accessed in attempting to
+ fulfill the request.
+
+21.5.4 503 Service Unavailable
+
+ The server is temporarily unable to process the request due to a
+ temporary overloading or maintenance of the server. The server MAY
+ indicate when the client should retry the request in a Retry-After
+ header field. If no Retry-After is given, the client MUST act as if
+ it had received a 500 (Server Internal Error) response.
+
+ A client (proxy or UAC) receiving a 503 (Service Unavailable) SHOULD
+ attempt to forward the request to an alternate server. It SHOULD NOT
+ forward any other requests to that server for the duration specified
+ in the Retry-After header field, if present.
+
+ Servers MAY refuse the connection or drop the request instead of
+ responding with 503 (Service Unavailable).
+
+21.5.5 504 Server Time-out
+
+ The server did not receive a timely response from an external server
+ it accessed in attempting to process the request. 408 (Request
+ Timeout) should be used instead if there was no response within the
+ period specified in the Expires header field from the upstream
+ server.
+
+21.5.6 505 Version Not Supported
+
+ The server does not support, or refuses to support, the SIP protocol
+ version that was used in the request. The server is indicating that
+ it is unable or unwilling to complete the request using the same
+ major version as the client, other than with this error message.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 191]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+21.5.7 513 Message Too Large
+
+ The server was unable to process the request since the message length
+ exceeded its capabilities.
+
+21.6 Global Failures 6xx
+
+ 6xx responses indicate that a server has definitive information about
+ a particular user, not just the particular instance indicated in the
+ Request-URI.
+
+21.6.1 600 Busy Everywhere
+
+ The callee's end system was contacted successfully but the callee is
+ busy and does not wish to take the call at this time. The response
+ MAY indicate a better time to call in the Retry-After header field.
+ If the callee does not wish to reveal the reason for declining the
+ call, the callee uses status code 603 (Decline) instead. This status
+ response is returned only if the client knows that no other end point
+ (such as a voice mail system) will answer the request. Otherwise,
+ 486 (Busy Here) should be returned.
+
+21.6.2 603 Decline
+
+ The callee's machine was successfully contacted but the user
+ explicitly does not wish to or cannot participate. The response MAY
+ indicate a better time to call in the Retry-After header field. This
+ status response is returned only if the client knows that no other
+ end point will answer the request.
+
+21.6.3 604 Does Not Exist Anywhere
+
+ The server has authoritative information that the user indicated in
+ the Request-URI does not exist anywhere.
+
+21.6.4 606 Not Acceptable
+
+ The user's agent was contacted successfully but some aspects of the
+ session description such as the requested media, bandwidth, or
+ addressing style were not acceptable.
+
+ A 606 (Not Acceptable) response means that the user wishes to
+ communicate, but cannot adequately support the session described.
+ The 606 (Not Acceptable) response MAY contain a list of reasons in a
+ Warning header field describing why the session described cannot be
+ supported. Warning reason codes are listed in Section 20.43.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 192]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ A message body containing a description of media capabilities MAY be
+ present in the response, which is formatted according to the Accept
+ header field in the INVITE (or application/sdp if not present), the
+ same as a message body in a 200 (OK) response to an OPTIONS request.
+
+ It is hoped that negotiation will not frequently be needed, and when
+ a new user is being invited to join an already existing conference,
+ negotiation may not be possible. It is up to the invitation
+ initiator to decide whether or not to act on a 606 (Not Acceptable)
+ response.
+
+ This status response is returned only if the client knows that no
+ other end point will answer the request.
+
+22 Usage of HTTP Authentication
+
+ SIP provides a stateless, challenge-based mechanism for
+ authentication that is based on authentication in HTTP. Any time
+ that a proxy server or UA receives a request (with the exceptions
+ given in Section 22.1), it MAY challenge the initiator of the request
+ to provide assurance of its identity. Once the originator has been
+ identified, the recipient of the request SHOULD ascertain whether or
+ not this user is authorized to make the request in question. No
+ authorization systems are recommended or discussed in this document.
+
+ The "Digest" authentication mechanism described in this section
+ provides message authentication and replay protection only, without
+ message integrity or confidentiality. Protective measures above and
+ beyond those provided by Digest need to be taken to prevent active
+ attackers from modifying SIP requests and responses.
+
+ Note that due to its weak security, the usage of "Basic"
+ authentication has been deprecated. Servers MUST NOT accept
+ credentials using the "Basic" authorization scheme, and servers also
+ MUST NOT challenge with "Basic". This is a change from RFC 2543.
+
+22.1 Framework
+
+ The framework for SIP authentication closely parallels that of HTTP
+ (RFC 2617 [17]). In particular, the BNF for auth-scheme, auth-param,
+ challenge, realm, realm-value, and credentials is identical (although
+ the usage of "Basic" as a scheme is not permitted). In SIP, a UAS
+ uses the 401 (Unauthorized) response to challenge the identity of a
+ UAC. Additionally, registrars and redirect servers MAY make use of
+ 401 (Unauthorized) responses for authentication, but proxies MUST
+ NOT, and instead MAY use the 407 (Proxy Authentication Required)
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 193]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ response. The requirements for inclusion of the Proxy-Authenticate,
+ Proxy-Authorization, WWW-Authenticate, and Authorization in the
+ various messages are identical to those described in RFC 2617 [17].
+
+ Since SIP does not have the concept of a canonical root URL, the
+ notion of protection spaces is interpreted differently in SIP. The
+ realm string alone defines the protection domain. This is a change
+ from RFC 2543, in which the Request-URI and the realm together
+ defined the protection domain.
+
+ This previous definition of protection domain caused some amount
+ of confusion since the Request-URI sent by the UAC and the
+ Request-URI received by the challenging server might be different,
+ and indeed the final form of the Request-URI might not be known to
+ the UAC. Also, the previous definition depended on the presence
+ of a SIP URI in the Request-URI and seemed to rule out alternative
+ URI schemes (for example, the tel URL).
+
+ Operators of user agents or proxy servers that will authenticate
+ received requests MUST adhere to the following guidelines for
+ creation of a realm string for their server:
+
+ o Realm strings MUST be globally unique. It is RECOMMENDED that
+ a realm string contain a hostname or domain name, following the
+ recommendation in Section 3.2.1 of RFC 2617 [17].
+
+ o Realm strings SHOULD present a human-readable identifier that
+ can be rendered to a user.
+
+ For example:
+
+ INVITE sip:bob@biloxi.com SIP/2.0
+ Authorization: Digest realm="biloxi.com", <...>
+
+ Generally, SIP authentication is meaningful for a specific realm, a
+ protection domain. Thus, for Digest authentication, each such
+ protection domain has its own set of usernames and passwords. If a
+ server does not require authentication for a particular request, it
+ MAY accept a default username, "anonymous", which has no password
+ (password of ""). Similarly, UACs representing many users, such as
+ PSTN gateways, MAY have their own device-specific username and
+ password, rather than accounts for particular users, for their realm.
+
+ While a server can legitimately challenge most SIP requests, there
+ are two requests defined by this document that require special
+ handling for authentication: ACK and CANCEL.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 194]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Under an authentication scheme that uses responses to carry values
+ used to compute nonces (such as Digest), some problems come up for
+ any requests that take no response, including ACK. For this reason,
+ any credentials in the INVITE that were accepted by a server MUST be
+ accepted by that server for the ACK. UACs creating an ACK message
+ will duplicate all of the Authorization and Proxy-Authorization
+ header field values that appeared in the INVITE to which the ACK
+ corresponds. Servers MUST NOT attempt to challenge an ACK.
+
+ Although the CANCEL method does take a response (a 2xx), servers MUST
+ NOT attempt to challenge CANCEL requests since these requests cannot
+ be resubmitted. Generally, a CANCEL request SHOULD be accepted by a
+ server if it comes from the same hop that sent the request being
+ canceled (provided that some sort of transport or network layer
+ security association, as described in Section 26.2.1, is in place).
+
+ When a UAC receives a challenge, it SHOULD render to the user the
+ contents of the "realm" parameter in the challenge (which appears in
+ either a WWW-Authenticate header field or Proxy-Authenticate header
+ field) if the UAC device does not already know of a credential for
+ the realm in question. A service provider that pre-configures UAs
+ with credentials for its realm should be aware that users will not
+ have the opportunity to present their own credentials for this realm
+ when challenged at a pre-configured device.
+
+ Finally, note that even if a UAC can locate credentials that are
+ associated with the proper realm, the potential exists that these
+ credentials may no longer be valid or that the challenging server
+ will not accept these credentials for whatever reason (especially
+ when "anonymous" with no password is submitted). In this instance a
+ server may repeat its challenge, or it may respond with a 403
+ Forbidden. A UAC MUST NOT re-attempt requests with the credentials
+ that have just been rejected (though the request may be retried if
+ the nonce was stale).
+
+22.2 User-to-User Authentication
+
+ When a UAS receives a request from a UAC, the UAS MAY authenticate
+ the originator before the request is processed. If no credentials
+ (in the Authorization header field) are provided in the request, the
+ UAS can challenge the originator to provide credentials by rejecting
+ the request with a 401 (Unauthorized) status code.
+
+ The WWW-Authenticate response-header field MUST be included in 401
+ (Unauthorized) response messages. The field value consists of at
+ least one challenge that indicates the authentication scheme(s) and
+ parameters applicable to the realm.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 195]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ An example of the WWW-Authenticate header field in a 401 challenge
+ is:
+
+ WWW-Authenticate: Digest
+ realm="biloxi.com",
+ qop="auth,auth-int",
+ nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
+ opaque="5ccc069c403ebaf9f0171e9517f40e41"
+
+ When the originating UAC receives the 401 (Unauthorized), it SHOULD,
+ if it is able, re-originate the request with the proper credentials.
+ The UAC may require input from the originating user before
+ proceeding. Once authentication credentials have been supplied
+ (either directly by the user, or discovered in an internal keyring),
+ UAs SHOULD cache the credentials for a given value of the To header
+ field and "realm" and attempt to re-use these values on the next
+ request for that destination. UAs MAY cache credentials in any way
+ they would like.
+
+ If no credentials for a realm can be located, UACs MAY attempt to
+ retry the request with a username of "anonymous" and no password (a
+ password of "").
+
+ Once credentials have been located, any UA that wishes to
+ authenticate itself with a UAS or registrar -- usually, but not
+ necessarily, after receiving a 401 (Unauthorized) response -- MAY do
+ so by including an Authorization header field with the request. The
+ Authorization field value consists of credentials containing the
+ authentication information of the UA for the realm of the resource
+ being requested as well as parameters required in support of
+ authentication and replay protection.
+
+ An example of the Authorization header field is:
+
+ Authorization: Digest username="bob",
+ realm="biloxi.com",
+ nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
+ uri="sip:bob@biloxi.com",
+ qop=auth,
+ nc=00000001,
+ cnonce="0a4f113b",
+ response="6629fae49393a05397450978507c4ef1",
+ opaque="5ccc069c403ebaf9f0171e9517f40e41"
+
+ When a UAC resubmits a request with its credentials after receiving a
+ 401 (Unauthorized) or 407 (Proxy Authentication Required) response,
+ it MUST increment the CSeq header field value as it would normally
+ when sending an updated request.
+
+
+
+Rosenberg, et. al. Standards Track [Page 196]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+22.3 Proxy-to-User Authentication
+
+ Similarly, when a UAC sends a request to a proxy server, the proxy
+ server MAY authenticate the originator before the request is
+ processed. If no credentials (in the Proxy-Authorization header
+ field) are provided in the request, the proxy can challenge the
+ originator to provide credentials by rejecting the request with a 407
+ (Proxy Authentication Required) status code. The proxy MUST populate
+ the 407 (Proxy Authentication Required) message with a Proxy-
+ Authenticate header field value applicable to the proxy for the
+ requested resource.
+
+ The use of Proxy-Authenticate and Proxy-Authorization parallel that
+ described in [17], with one difference. Proxies MUST NOT add values
+ to the Proxy-Authorization header field. All 407 (Proxy
+ Authentication Required) responses MUST be forwarded upstream toward
+ the UAC following the procedures for any other response. It is the
+ UAC's responsibility to add the Proxy-Authorization header field
+ value containing credentials for the realm of the proxy that has
+ asked for authentication.
+
+ If a proxy were to resubmit a request adding a Proxy-Authorization
+ header field value, it would need to increment the CSeq in the new
+ request. However, this would cause the UAC that submitted the
+ original request to discard a response from the UAS, as the CSeq
+ value would be different.
+
+ When the originating UAC receives the 407 (Proxy Authentication
+ Required) it SHOULD, if it is able, re-originate the request with the
+ proper credentials. It should follow the same procedures for the
+ display of the "realm" parameter that are given above for responding
+ to 401.
+
+ If no credentials for a realm can be located, UACs MAY attempt to
+ retry the request with a username of "anonymous" and no password (a
+ password of "").
+
+ The UAC SHOULD also cache the credentials used in the re-originated
+ request.
+
+ The following rule is RECOMMENDED for proxy credential caching:
+
+ If a UA receives a Proxy-Authenticate header field value in a 401/407
+ response to a request with a particular Call-ID, it should
+ incorporate credentials for that realm in all subsequent requests
+ that contain the same Call-ID. These credentials MUST NOT be cached
+ across dialogs; however, if a UA is configured with the realm of its
+ local outbound proxy, when one exists, then the UA MAY cache
+
+
+
+Rosenberg, et. al. Standards Track [Page 197]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ credentials for that realm across dialogs. Note that this does mean
+ a future request in a dialog could contain credentials that are not
+ needed by any proxy along the Route header path.
+
+ Any UA that wishes to authenticate itself to a proxy server --
+ usually, but not necessarily, after receiving a 407 (Proxy
+ Authentication Required) response -- MAY do so by including a Proxy-
+ Authorization header field value with the request. The Proxy-
+ Authorization request-header field allows the client to identify
+ itself (or its user) to a proxy that requires authentication. The
+ Proxy-Authorization header field value consists of credentials
+ containing the authentication information of the UA for the proxy
+ and/or realm of the resource being requested.
+
+ A Proxy-Authorization header field value applies only to the proxy
+ whose realm is identified in the "realm" parameter (this proxy may
+ previously have demanded authentication using the Proxy-Authenticate
+ field). When multiple proxies are used in a chain, a Proxy-
+ Authorization header field value MUST NOT be consumed by any proxy
+ whose realm does not match the "realm" parameter specified in that
+ value.
+
+ Note that if an authentication scheme that does not support realms is
+ used in the Proxy-Authorization header field, a proxy server MUST
+ attempt to parse all Proxy-Authorization header field values to
+ determine whether one of them has what the proxy server considers to
+ be valid credentials. Because this is potentially very time-
+ consuming in large networks, proxy servers SHOULD use an
+ authentication scheme that supports realms in the Proxy-Authorization
+ header field.
+
+ If a request is forked (as described in Section 16.7), various proxy
+ servers and/or UAs may wish to challenge the UAC. In this case, the
+ forking proxy server is responsible for aggregating these challenges
+ into a single response. Each WWW-Authenticate and Proxy-Authenticate
+ value received in responses to the forked request MUST be placed into
+ the single response that is sent by the forking proxy to the UA; the
+ ordering of these header field values is not significant.
+
+ When a proxy server issues a challenge in response to a request,
+ it will not proxy the request until the UAC has retried the
+ request with valid credentials. A forking proxy may forward a
+ request simultaneously to multiple proxy servers that require
+ authentication, each of which in turn will not forward the request
+ until the originating UAC has authenticated itself in their
+ respective realm. If the UAC does not provide credentials for
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 198]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ each challenge, the proxy servers that issued the challenges will
+ not forward requests to the UA where the destination user might be
+ located, and therefore, the virtues of forking are largely lost.
+
+ When resubmitting its request in response to a 401 (Unauthorized) or
+ 407 (Proxy Authentication Required) that contains multiple
+ challenges, a UAC MAY include an Authorization value for each WWW-
+ Authenticate value and a Proxy-Authorization value for each Proxy-
+ Authenticate value for which the UAC wishes to supply a credential.
+ As noted above, multiple credentials in a request SHOULD be
+ differentiated by the "realm" parameter.
+
+ It is possible for multiple challenges associated with the same realm
+ to appear in the same 401 (Unauthorized) or 407 (Proxy Authentication
+ Required). This can occur, for example, when multiple proxies within
+ the same administrative domain, which use a common realm, are reached
+ by a forking request. When it retries a request, a UAC MAY therefore
+ supply multiple credentials in Authorization or Proxy-Authorization
+ header fields with the same "realm" parameter value. The same
+ credentials SHOULD be used for the same realm.
+
+22.4 The Digest Authentication Scheme
+
+ This section describes the modifications and clarifications required
+ to apply the HTTP Digest authentication scheme to SIP. The SIP
+ scheme usage is almost completely identical to that for HTTP [17].
+
+ Since RFC 2543 is based on HTTP Digest as defined in RFC 2069 [39],
+ SIP servers supporting RFC 2617 MUST ensure they are backwards
+ compatible with RFC 2069. Procedures for this backwards
+ compatibility are specified in RFC 2617. Note, however, that SIP
+ servers MUST NOT accept or request Basic authentication.
+
+ The rules for Digest authentication follow those defined in [17],
+ with "HTTP/1.1" replaced by "SIP/2.0" in addition to the following
+ differences:
+
+ 1. The URI included in the challenge has the following BNF:
+
+ URI = SIP-URI / SIPS-URI
+
+ 2. The BNF in RFC 2617 has an error in that the 'uri' parameter
+ of the Authorization header field for HTTP Digest
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 199]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ authentication is not enclosed in quotation marks. (The
+ example in Section 3.5 of RFC 2617 is correct.) For SIP, the
+ 'uri' MUST be enclosed in quotation marks.
+
+ 3. The BNF for digest-uri-value is:
+
+ digest-uri-value = Request-URI ; as defined in Section 25
+
+ 4. The example procedure for choosing a nonce based on Etag does
+ not work for SIP.
+
+ 5. The text in RFC 2617 [17] regarding cache operation does not
+ apply to SIP.
+
+ 6. RFC 2617 [17] requires that a server check that the URI in the
+ request line and the URI included in the Authorization header
+ field point to the same resource. In a SIP context, these two
+ URIs may refer to different users, due to forwarding at some
+ proxy. Therefore, in SIP, a server MAY check that the
+ Request-URI in the Authorization header field value
+ corresponds to a user for whom the server is willing to accept
+ forwarded or direct requests, but it is not necessarily a
+ failure if the two fields are not equivalent.
+
+ 7. As a clarification to the calculation of the A2 value for
+ message integrity assurance in the Digest authentication
+ scheme, implementers should assume, when the entity-body is
+ empty (that is, when SIP messages have no body) that the hash
+ of the entity-body resolves to the MD5 hash of an empty
+ string, or:
+
+ H(entity-body) = MD5("") =
+ "d41d8cd98f00b204e9800998ecf8427e"
+
+ 8. RFC 2617 notes that a cnonce value MUST NOT be sent in an
+ Authorization (and by extension Proxy-Authorization) header
+ field if no qop directive has been sent. Therefore, any
+ algorithms that have a dependency on the cnonce (including
+ "MD5-Sess") require that the qop directive be sent. Use of
+ the "qop" parameter is optional in RFC 2617 for the purposes
+ of backwards compatibility with RFC 2069; since RFC 2543 was
+ based on RFC 2069, the "qop" parameter must unfortunately
+ remain optional for clients and servers to receive. However,
+ servers MUST always send a "qop" parameter in WWW-Authenticate
+ and Proxy-Authenticate header field values. If a client
+ receives a "qop" parameter in a challenge header field, it
+ MUST send the "qop" parameter in any resulting authorization
+ header field.
+
+
+
+Rosenberg, et. al. Standards Track [Page 200]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ RFC 2543 did not allow usage of the Authentication-Info header field
+ (it effectively used RFC 2069). However, we now allow usage of this
+ header field, since it provides integrity checks over the bodies and
+ provides mutual authentication. RFC 2617 [17] defines mechanisms for
+ backwards compatibility using the qop attribute in the request.
+ These mechanisms MUST be used by a server to determine if the client
+ supports the new mechanisms in RFC 2617 that were not specified in
+ RFC 2069.
+
+23 S/MIME
+
+ SIP messages carry MIME bodies and the MIME standard includes
+ mechanisms for securing MIME contents to ensure both integrity and
+ confidentiality (including the 'multipart/signed' and
+ 'application/pkcs7-mime' MIME types, see RFC 1847 [22], RFC 2630 [23]
+ and RFC 2633 [24]). Implementers should note, however, that there
+ may be rare network intermediaries (not typical proxy servers) that
+ rely on viewing or modifying the bodies of SIP messages (especially
+ SDP), and that secure MIME may prevent these sorts of intermediaries
+ from functioning.
+
+ This applies particularly to certain types of firewalls.
+
+ The PGP mechanism for encrypting the header fields and bodies of
+ SIP messages described in RFC 2543 has been deprecated.
+
+23.1 S/MIME Certificates
+
+ The certificates that are used to identify an end-user for the
+ purposes of S/MIME differ from those used by servers in one important
+ respect - rather than asserting that the identity of the holder
+ corresponds to a particular hostname, these certificates assert that
+ the holder is identified by an end-user address. This address is
+ composed of the concatenation of the "userinfo" "@" and "domainname"
+ portions of a SIP or SIPS URI (in other words, an email address of
+ the form "bob@biloxi.com"), most commonly corresponding to a user's
+ address-of-record.
+
+ These certificates are also associated with keys that are used to
+ sign or encrypt bodies of SIP messages. Bodies are signed with the
+ private key of the sender (who may include their public key with the
+ message as appropriate), but bodies are encrypted with the public key
+ of the intended recipient. Obviously, senders must have
+ foreknowledge of the public key of recipients in order to encrypt
+ message bodies. Public keys can be stored within a UA on a virtual
+ keyring.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 201]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Each user agent that supports S/MIME MUST contain a keyring
+ specifically for end-users' certificates. This keyring should map
+ between addresses of record and corresponding certificates. Over
+ time, users SHOULD use the same certificate when they populate the
+ originating URI of signaling (the From header field) with the same
+ address-of-record.
+
+ Any mechanisms depending on the existence of end-user certificates
+ are seriously limited in that there is virtually no consolidated
+ authority today that provides certificates for end-user applications.
+ However, users SHOULD acquire certificates from known public
+ certificate authorities. As an alternative, users MAY create self-
+ signed certificates. The implications of self-signed certificates
+ are explored further in Section 26.4.2. Implementations may also use
+ pre-configured certificates in deployments in which a previous trust
+ relationship exists between all SIP entities.
+
+ Above and beyond the problem of acquiring an end-user certificate,
+ there are few well-known centralized directories that distribute
+ end-user certificates. However, the holder of a certificate SHOULD
+ publish their certificate in any public directories as appropriate.
+ Similarly, UACs SHOULD support a mechanism for importing (manually or
+ automatically) certificates discovered in public directories
+ corresponding to the target URIs of SIP requests.
+
+23.2 S/MIME Key Exchange
+
+ SIP itself can also be used as a means to distribute public keys in
+ the following manner.
+
+ Whenever the CMS SignedData message is used in S/MIME for SIP, it
+ MUST contain the certificate bearing the public key necessary to
+ verify the signature.
+
+ When a UAC sends a request containing an S/MIME body that initiates a
+ dialog, or sends a non-INVITE request outside the context of a
+ dialog, the UAC SHOULD structure the body as an S/MIME
+ 'multipart/signed' CMS SignedData body. If the desired CMS service
+ is EnvelopedData (and the public key of the target user is known),
+ the UAC SHOULD send the EnvelopedData message encapsulated within a
+ SignedData message.
+
+ When a UAS receives a request containing an S/MIME CMS body that
+ includes a certificate, the UAS SHOULD first validate the
+ certificate, if possible, with any available root certificates for
+ certificate authorities. The UAS SHOULD also determine the subject
+ of the certificate (for S/MIME, the SubjectAltName will contain the
+ appropriate identity) and compare this value to the From header field
+
+
+
+Rosenberg, et. al. Standards Track [Page 202]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ of the request. If the certificate cannot be verified, because it is
+ self-signed, or signed by no known authority, or if it is verifiable
+ but its subject does not correspond to the From header field of
+ request, the UAS MUST notify its user of the status of the
+ certificate (including the subject of the certificate, its signer,
+ and any key fingerprint information) and request explicit permission
+ before proceeding. If the certificate was successfully verified and
+ the subject of the certificate corresponds to the From header field
+ of the SIP request, or if the user (after notification) explicitly
+ authorizes the use of the certificate, the UAS SHOULD add this
+ certificate to a local keyring, indexed by the address-of-record of
+ the holder of the certificate.
+
+ When a UAS sends a response containing an S/MIME body that answers
+ the first request in a dialog, or a response to a non-INVITE request
+ outside the context of a dialog, the UAS SHOULD structure the body as
+ an S/MIME 'multipart/signed' CMS SignedData body. If the desired CMS
+ service is EnvelopedData, the UAS SHOULD send the EnvelopedData
+ message encapsulated within a SignedData message.
+
+ When a UAC receives a response containing an S/MIME CMS body that
+ includes a certificate, the UAC SHOULD first validate the
+ certificate, if possible, with any appropriate root certificate. The
+ UAC SHOULD also determine the subject of the certificate and compare
+ this value to the To field of the response; although the two may very
+ well be different, and this is not necessarily indicative of a
+ security breach. If the certificate cannot be verified because it is
+ self-signed, or signed by no known authority, the UAC MUST notify its
+ user of the status of the certificate (including the subject of the
+ certificate, its signator, and any key fingerprint information) and
+ request explicit permission before proceeding. If the certificate
+ was successfully verified, and the subject of the certificate
+ corresponds to the To header field in the response, or if the user
+ (after notification) explicitly authorizes the use of the
+ certificate, the UAC SHOULD add this certificate to a local keyring,
+ indexed by the address-of-record of the holder of the certificate.
+ If the UAC had not transmitted its own certificate to the UAS in any
+ previous transaction, it SHOULD use a CMS SignedData body for its
+ next request or response.
+
+ On future occasions, when the UA receives requests or responses that
+ contain a From header field corresponding to a value in its keyring,
+ the UA SHOULD compare the certificate offered in these messages with
+ the existing certificate in its keyring. If there is a discrepancy,
+ the UA MUST notify its user of a change of the certificate
+ (preferably in terms that indicate that this is a potential security
+ breach) and acquire the user's permission before continuing to
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 203]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ process the signaling. If the user authorizes this certificate, it
+ SHOULD be added to the keyring alongside any previous value(s) for
+ this address-of-record.
+
+ Note well however, that this key exchange mechanism does not
+ guarantee the secure exchange of keys when self-signed certificates,
+ or certificates signed by an obscure authority, are used - it is
+ vulnerable to well-known attacks. In the opinion of the authors,
+ however, the security it provides is proverbially better than
+ nothing; it is in fact comparable to the widely used SSH application.
+ These limitations are explored in greater detail in Section 26.4.2.
+
+ If a UA receives an S/MIME body that has been encrypted with a public
+ key unknown to the recipient, it MUST reject the request with a 493
+ (Undecipherable) response. This response SHOULD contain a valid
+ certificate for the respondent (corresponding, if possible, to any
+ address of record given in the To header field of the rejected
+ request) within a MIME body with a 'certs-only' "smime-type"
+ parameter.
+
+ A 493 (Undecipherable) sent without any certificate indicates that
+ the respondent cannot or will not utilize S/MIME encrypted messages,
+ though they may still support S/MIME signatures.
+
+ Note that a user agent that receives a request containing an S/MIME
+ body that is not optional (with a Content-Disposition header
+ "handling" parameter of "required") MUST reject the request with a
+ 415 Unsupported Media Type response if the MIME type is not
+ understood. A user agent that receives such a response when S/MIME
+ is sent SHOULD notify its user that the remote device does not
+ support S/MIME, and it MAY subsequently resend the request without
+ S/MIME, if appropriate; however, this 415 response may constitute a
+ downgrade attack.
+
+ If a user agent sends an S/MIME body in a request, but receives a
+ response that contains a MIME body that is not secured, the UAC
+ SHOULD notify its user that the session could not be secured.
+ However, if a user agent that supports S/MIME receives a request with
+ an unsecured body, it SHOULD NOT respond with a secured body, but if
+ it expects S/MIME from the sender (for example, because the sender's
+ From header field value corresponds to an identity on its keychain),
+ the UAS SHOULD notify its user that the session could not be secured.
+
+ A number of conditions that arise in the previous text call for the
+ notification of the user when an anomalous certificate-management
+ event occurs. Users might well ask what they should do under these
+ circumstances. First and foremost, an unexpected change in a
+ certificate, or an absence of security when security is expected, are
+
+
+
+Rosenberg, et. al. Standards Track [Page 204]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ causes for caution but not necessarily indications that an attack is
+ in progress. Users might abort any connection attempt or refuse a
+ connection request they have received; in telephony parlance, they
+ could hang up and call back. Users may wish to find an alternate
+ means to contact the other party and confirm that their key has
+ legitimately changed. Note that users are sometimes compelled to
+ change their certificates, for example when they suspect that the
+ secrecy of their private key has been compromised. When their
+ private key is no longer private, users must legitimately generate a
+ new key and re-establish trust with any users that held their old
+ key.
+
+ Finally, if during the course of a dialog a UA receives a certificate
+ in a CMS SignedData message that does not correspond with the
+ certificates previously exchanged during a dialog, the UA MUST notify
+ its user of the change, preferably in terms that indicate that this
+ is a potential security breach.
+
+23.3 Securing MIME bodies
+
+ There are two types of secure MIME bodies that are of interest to
+ SIP: use of these bodies should follow the S/MIME specification [24]
+ with a few variations.
+
+ o "multipart/signed" MUST be used only with CMS detached
+ signatures.
+
+ This allows backwards compatibility with non-S/MIME-
+ compliant recipients.
+
+ o S/MIME bodies SHOULD have a Content-Disposition header field,
+ and the value of the "handling" parameter SHOULD be "required."
+
+ o If a UAC has no certificate on its keyring associated with the
+ address-of-record to which it wants to send a request, it
+ cannot send an encrypted "application/pkcs7-mime" MIME message.
+ UACs MAY send an initial request such as an OPTIONS message
+ with a CMS detached signature in order to solicit the
+ certificate of the remote side (the signature SHOULD be over a
+ "message/sip" body of the type described in Section 23.4).
+
+ Note that future standardization work on S/MIME may define
+ non-certificate based keys.
+
+ o Senders of S/MIME bodies SHOULD use the "SMIMECapabilities"
+ (see Section 2.5.2 of [24]) attribute to express their
+ capabilities and preferences for further communications. Note
+ especially that senders MAY use the "preferSignedData"
+
+
+
+Rosenberg, et. al. Standards Track [Page 205]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ capability to encourage receivers to respond with CMS
+ SignedData messages (for example, when sending an OPTIONS
+ request as described above).
+
+ o S/MIME implementations MUST at a minimum support SHA1 as a
+ digital signature algorithm, and 3DES as an encryption
+ algorithm. All other signature and encryption algorithms MAY
+ be supported. Implementations can negotiate support for these
+ algorithms with the "SMIMECapabilities" attribute.
+
+ o Each S/MIME body in a SIP message SHOULD be signed with only
+ one certificate. If a UA receives a message with multiple
+ signatures, the outermost signature should be treated as the
+ single certificate for this body. Parallel signatures SHOULD
+ NOT be used.
+
+ The following is an example of an encrypted S/MIME SDP body
+ within a SIP message:
+
+ INVITE sip:bob@biloxi.com SIP/2.0
+ Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ To: Bob <sip:bob@biloxi.com>
+ From: Alice <sip:alice@atlanta.com>;tag=1928301774
+ Call-ID: a84b4c76e66710
+ CSeq: 314159 INVITE
+ Max-Forwards: 70
+ Contact: <sip:alice@pc33.atlanta.com>
+ Content-Type: application/pkcs7-mime; smime-type=enveloped-data;
+ name=smime.p7m
+ Content-Disposition: attachment; filename=smime.p7m
+ handling=required
+
+ *******************************************************
+ * Content-Type: application/sdp *
+ * *
+ * v=0 *
+ * o=alice 53655765 2353687637 IN IP4 pc33.atlanta.com *
+ * s=- *
+ * t=0 0 *
+ * c=IN IP4 pc33.atlanta.com *
+ * m=audio 3456 RTP/AVP 0 1 3 99 *
+ * a=rtpmap:0 PCMU/8000 *
+ *******************************************************
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 206]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+23.4 SIP Header Privacy and Integrity using S/MIME: Tunneling SIP
+
+ As a means of providing some degree of end-to-end authentication,
+ integrity or confidentiality for SIP header fields, S/MIME can
+ encapsulate entire SIP messages within MIME bodies of type
+ "message/sip" and then apply MIME security to these bodies in the
+ same manner as typical SIP bodies. These encapsulated SIP requests
+ and responses do not constitute a separate dialog or transaction,
+ they are a copy of the "outer" message that is used to verify
+ integrity or to supply additional information.
+
+ If a UAS receives a request that contains a tunneled "message/sip"
+ S/MIME body, it SHOULD include a tunneled "message/sip" body in the
+ response with the same smime-type.
+
+ Any traditional MIME bodies (such as SDP) SHOULD be attached to the
+ "inner" message so that they can also benefit from S/MIME security.
+ Note that "message/sip" bodies can be sent as a part of a MIME
+ "multipart/mixed" body if any unsecured MIME types should also be
+ transmitted in a request.
+
+23.4.1 Integrity and Confidentiality Properties of SIP Headers
+
+ When the S/MIME integrity or confidentiality mechanisms are used,
+ there may be discrepancies between the values in the "inner" message
+ and values in the "outer" message. The rules for handling any such
+ differences for all of the header fields described in this document
+ are given in this section.
+
+ Note that for the purposes of loose timestamping, all SIP messages
+ that tunnel "message/sip" SHOULD contain a Date header in both the
+ "inner" and "outer" headers.
+
+23.4.1.1 Integrity
+
+ Whenever integrity checks are performed, the integrity of a header
+ field should be determined by matching the value of the header field
+ in the signed body with that in the "outer" messages using the
+ comparison rules of SIP as described in 20.
+
+ Header fields that can be legitimately modified by proxy servers are:
+ Request-URI, Via, Record-Route, Route, Max-Forwards, and Proxy-
+ Authorization. If these header fields are not intact end-to-end,
+ implementations SHOULD NOT consider this a breach of security.
+ Changes to any other header fields defined in this document
+ constitute an integrity violation; users MUST be notified of a
+ discrepancy.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 207]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+23.4.1.2 Confidentiality
+
+ When messages are encrypted, header fields may be included in the
+ encrypted body that are not present in the "outer" message.
+
+ Some header fields must always have a plaintext version because they
+ are required header fields in requests and responses - these include:
+
+ To, From, Call-ID, CSeq, Contact. While it is probably not useful to
+ provide an encrypted alternative for the Call-ID, CSeq, or Contact,
+ providing an alternative to the information in the "outer" To or From
+ is permitted. Note that the values in an encrypted body are not used
+ for the purposes of identifying transactions or dialogs - they are
+ merely informational. If the From header field in an encrypted body
+ differs from the value in the "outer" message, the value within the
+ encrypted body SHOULD be displayed to the user, but MUST NOT be used
+ in the "outer" header fields of any future messages.
+
+ Primarily, a user agent will want to encrypt header fields that have
+ an end-to-end semantic, including: Subject, Reply-To, Organization,
+ Accept, Accept-Encoding, Accept-Language, Alert-Info, Error-Info,
+ Authentication-Info, Expires, In-Reply-To, Require, Supported,
+ Unsupported, Retry-After, User-Agent, Server, and Warning. If any of
+ these header fields are present in an encrypted body, they should be
+ used instead of any "outer" header fields, whether this entails
+ displaying the header field values to users or setting internal
+ states in the UA. They SHOULD NOT however be used in the "outer"
+ headers of any future messages.
+
+ If present, the Date header field MUST always be the same in the
+ "inner" and "outer" headers.
+
+ Since MIME bodies are attached to the "inner" message,
+ implementations will usually encrypt MIME-specific header fields,
+ including: MIME-Version, Content-Type, Content-Length, Content-
+ Language, Content-Encoding and Content-Disposition. The "outer"
+ message will have the proper MIME header fields for S/MIME bodies.
+ These header fields (and any MIME bodies they preface) should be
+ treated as normal MIME header fields and bodies received in a SIP
+ message.
+
+ It is not particularly useful to encrypt the following header fields:
+ Min-Expires, Timestamp, Authorization, Priority, and WWW-
+ Authenticate. This category also includes those header fields that
+ can be changed by proxy servers (described in the preceding section).
+ UAs SHOULD never include these in an "inner" message if they are not
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 208]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ included in the "outer" message. UAs that receive any of these
+ header fields in an encrypted body SHOULD ignore the encrypted
+ values.
+
+ Note that extensions to SIP may define additional header fields; the
+ authors of these extensions should describe the integrity and
+ confidentiality properties of such header fields. If a SIP UA
+ encounters an unknown header field with an integrity violation, it
+ MUST ignore the header field.
+
+23.4.2 Tunneling Integrity and Authentication
+
+ Tunneling SIP messages within S/MIME bodies can provide integrity for
+ SIP header fields if the header fields that the sender wishes to
+ secure are replicated in a "message/sip" MIME body signed with a CMS
+ detached signature.
+
+ Provided that the "message/sip" body contains at least the
+ fundamental dialog identifiers (To, From, Call-ID, CSeq), then a
+ signed MIME body can provide limited authentication. At the very
+ least, if the certificate used to sign the body is unknown to the
+ recipient and cannot be verified, the signature can be used to
+ ascertain that a later request in a dialog was transmitted by the
+ same certificate-holder that initiated the dialog. If the recipient
+ of the signed MIME body has some stronger incentive to trust the
+ certificate (they were able to validate it, they acquired it from a
+ trusted repository, or they have used it frequently) then the
+ signature can be taken as a stronger assertion of the identity of the
+ subject of the certificate.
+
+ In order to eliminate possible confusions about the addition or
+ subtraction of entire header fields, senders SHOULD replicate all
+ header fields from the request within the signed body. Any message
+ bodies that require integrity protection MUST be attached to the
+ "inner" message.
+
+ If a Date header is present in a message with a signed body, the
+ recipient SHOULD compare the header field value with its own internal
+ clock, if applicable. If a significant time discrepancy is detected
+ (on the order of an hour or more), the user agent SHOULD alert the
+ user to the anomaly, and note that it is a potential security breach.
+
+ If an integrity violation in a message is detected by its recipient,
+ the message MAY be rejected with a 403 (Forbidden) response if it is
+ a request, or any existing dialog MAY be terminated. UAs SHOULD
+ notify users of this circumstance and request explicit guidance on
+ how to proceed.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 209]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The following is an example of the use of a tunneled "message/sip"
+ body:
+
+ INVITE sip:bob@biloxi.com SIP/2.0
+ Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ To: Bob <sip:bob@biloxi.com>
+ From: Alice <sip:alice@atlanta.com>;tag=1928301774
+ Call-ID: a84b4c76e66710
+ CSeq: 314159 INVITE
+ Max-Forwards: 70
+ Date: Thu, 21 Feb 2002 13:02:03 GMT
+ Contact: <sip:alice@pc33.atlanta.com>
+ Content-Type: multipart/signed;
+ protocol="application/pkcs7-signature";
+ micalg=sha1; boundary=boundary42
+ Content-Length: 568
+
+ --boundary42
+ Content-Type: message/sip
+
+ INVITE sip:bob@biloxi.com SIP/2.0
+ Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ To: Bob <bob@biloxi.com>
+ From: Alice <alice@atlanta.com>;tag=1928301774
+ Call-ID: a84b4c76e66710
+ CSeq: 314159 INVITE
+ Max-Forwards: 70
+ Date: Thu, 21 Feb 2002 13:02:03 GMT
+ Contact: <sip:alice@pc33.atlanta.com>
+ Content-Type: application/sdp
+ Content-Length: 147
+
+ v=0
+ o=UserA 2890844526 2890844526 IN IP4 here.com
+ s=Session SDP
+ c=IN IP4 pc33.atlanta.com
+ t=0 0
+ m=audio 49172 RTP/AVP 0
+ a=rtpmap:0 PCMU/8000
+
+ --boundary42
+ Content-Type: application/pkcs7-signature; name=smime.p7s
+ Content-Transfer-Encoding: base64
+ Content-Disposition: attachment; filename=smime.p7s;
+ handling=required
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 210]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ ghyHhHUujhJhjH77n8HHGTrfvbnj756tbB9HG4VQpfyF467GhIGfHfYT6
+ 4VQpfyF467GhIGfHfYT6jH77n8HHGghyHhHUujhJh756tbB9HGTrfvbnj
+ n8HHGTrfvhJhjH776tbB9HG4VQbnj7567GhIGfHfYT6ghyHhHUujpfyF4
+ 7GhIGfHfYT64VQbnj756
+
+ --boundary42-
+
+23.4.3 Tunneling Encryption
+
+ It may also be desirable to use this mechanism to encrypt a
+ "message/sip" MIME body within a CMS EnvelopedData message S/MIME
+ body, but in practice, most header fields are of at least some use to
+ the network; the general use of encryption with S/MIME is to secure
+ message bodies like SDP rather than message headers. Some
+ informational header fields, such as the Subject or Organization
+ could perhaps warrant end-to-end security. Headers defined by future
+ SIP applications might also require obfuscation.
+
+ Another possible application of encrypting header fields is selective
+ anonymity. A request could be constructed with a From header field
+ that contains no personal information (for example,
+ sip:anonymous@anonymizer.invalid). However, a second From header
+ field containing the genuine address-of-record of the originator
+ could be encrypted within a "message/sip" MIME body where it will
+ only be visible to the endpoints of a dialog.
+
+ Note that if this mechanism is used for anonymity, the From header
+ field will no longer be usable by the recipient of a message as an
+ index to their certificate keychain for retrieving the proper
+ S/MIME key to associated with the sender. The message must first
+ be decrypted, and the "inner" From header field MUST be used as an
+ index.
+
+ In order to provide end-to-end integrity, encrypted "message/sip"
+ MIME bodies SHOULD be signed by the sender. This creates a
+ "multipart/signed" MIME body that contains an encrypted body and a
+ signature, both of type "application/pkcs7-mime".
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 211]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ In the following example, of an encrypted and signed message, the
+ text boxed in asterisks ("*") is encrypted:
+
+ INVITE sip:bob@biloxi.com SIP/2.0
+ Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ To: Bob <sip:bob@biloxi.com>
+ From: Anonymous <sip:anonymous@atlanta.com>;tag=1928301774
+ Call-ID: a84b4c76e66710
+ CSeq: 314159 INVITE
+ Max-Forwards: 70
+ Date: Thu, 21 Feb 2002 13:02:03 GMT
+ Contact: <sip:pc33.atlanta.com>
+ Content-Type: multipart/signed;
+ protocol="application/pkcs7-signature";
+ micalg=sha1; boundary=boundary42
+ Content-Length: 568
+
+ --boundary42
+ Content-Type: application/pkcs7-mime; smime-type=enveloped-data;
+ name=smime.p7m
+ Content-Transfer-Encoding: base64
+ Content-Disposition: attachment; filename=smime.p7m
+ handling=required
+ Content-Length: 231
+
+ ***********************************************************
+ * Content-Type: message/sip *
+ * *
+ * INVITE sip:bob@biloxi.com SIP/2.0 *
+ * Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 *
+ * To: Bob <bob@biloxi.com> *
+ * From: Alice <alice@atlanta.com>;tag=1928301774 *
+ * Call-ID: a84b4c76e66710 *
+ * CSeq: 314159 INVITE *
+ * Max-Forwards: 70 *
+ * Date: Thu, 21 Feb 2002 13:02:03 GMT *
+ * Contact: <sip:alice@pc33.atlanta.com> *
+ * *
+ * Content-Type: application/sdp *
+ * *
+ * v=0 *
+ * o=alice 53655765 2353687637 IN IP4 pc33.atlanta.com *
+ * s=Session SDP *
+ * t=0 0 *
+ * c=IN IP4 pc33.atlanta.com *
+ * m=audio 3456 RTP/AVP 0 1 3 99 *
+ * a=rtpmap:0 PCMU/8000 *
+ ***********************************************************
+
+
+
+Rosenberg, et. al. Standards Track [Page 212]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ --boundary42
+ Content-Type: application/pkcs7-signature; name=smime.p7s
+ Content-Transfer-Encoding: base64
+ Content-Disposition: attachment; filename=smime.p7s;
+ handling=required
+
+ ghyHhHUujhJhjH77n8HHGTrfvbnj756tbB9HG4VQpfyF467GhIGfHfYT6
+ 4VQpfyF467GhIGfHfYT6jH77n8HHGghyHhHUujhJh756tbB9HGTrfvbnj
+ n8HHGTrfvhJhjH776tbB9HG4VQbnj7567GhIGfHfYT6ghyHhHUujpfyF4
+ 7GhIGfHfYT64VQbnj756
+
+ --boundary42-
+
+24 Examples
+
+ In the following examples, we often omit the message body and the
+ corresponding Content-Length and Content-Type header fields for
+ brevity.
+
+24.1 Registration
+
+ Bob registers on start-up. The message flow is shown in Figure 9.
+ Note that the authentication usually required for registration is not
+ shown for simplicity.
+
+ biloxi.com Bob's
+ registrar softphone
+ | |
+ | REGISTER F1 |
+ |<---------------|
+ | 200 OK F2 |
+ |--------------->|
+
+ Figure 9: SIP Registration Example
+
+ F1 REGISTER Bob -> Registrar
+
+ REGISTER sip:registrar.biloxi.com SIP/2.0
+ Via: SIP/2.0/UDP bobspc.biloxi.com:5060;branch=z9hG4bKnashds7
+ Max-Forwards: 70
+ To: Bob <sip:bob@biloxi.com>
+ From: Bob <sip:bob@biloxi.com>;tag=456248
+ Call-ID: 843817637684230@998sdasdh09
+ CSeq: 1826 REGISTER
+ Contact: <sip:bob@192.0.2.4>
+ Expires: 7200
+ Content-Length: 0
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 213]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The registration expires after two hours. The registrar responds
+ with a 200 OK:
+
+ F2 200 OK Registrar -> Bob
+
+ SIP/2.0 200 OK
+ Via: SIP/2.0/UDP bobspc.biloxi.com:5060;branch=z9hG4bKnashds7
+ ;received=192.0.2.4
+ To: Bob <sip:bob@biloxi.com>;tag=2493k59kd
+ From: Bob <sip:bob@biloxi.com>;tag=456248
+ Call-ID: 843817637684230@998sdasdh09
+ CSeq: 1826 REGISTER
+ Contact: <sip:bob@192.0.2.4>
+ Expires: 7200
+ Content-Length: 0
+
+24.2 Session Setup
+
+ This example contains the full details of the example session setup
+ in Section 4. The message flow is shown in Figure 1. Note that
+ these flows show the minimum required set of header fields - some
+ other header fields such as Allow and Supported would normally be
+ present.
+
+F1 INVITE Alice -> atlanta.com proxy
+
+INVITE sip:bob@biloxi.com SIP/2.0
+Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+Max-Forwards: 70
+To: Bob <sip:bob@biloxi.com>
+From: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+CSeq: 314159 INVITE
+Contact: <sip:alice@pc33.atlanta.com>
+Content-Type: application/sdp
+Content-Length: 142
+
+(Alice's SDP not shown)
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 214]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+F2 100 Trying atlanta.com proxy -> Alice
+
+SIP/2.0 100 Trying
+Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ ;received=192.0.2.1
+To: Bob <sip:bob@biloxi.com>
+From: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+CSeq: 314159 INVITE
+Content-Length: 0
+
+F3 INVITE atlanta.com proxy -> biloxi.com proxy
+
+INVITE sip:bob@biloxi.com SIP/2.0
+Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
+Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ ;received=192.0.2.1
+Max-Forwards: 69
+To: Bob <sip:bob@biloxi.com>
+From: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+CSeq: 314159 INVITE
+Contact: <sip:alice@pc33.atlanta.com>
+Content-Type: application/sdp
+Content-Length: 142
+
+(Alice's SDP not shown)
+
+F4 100 Trying biloxi.com proxy -> atlanta.com proxy
+
+SIP/2.0 100 Trying
+Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
+ ;received=192.0.2.2
+Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ ;received=192.0.2.1
+To: Bob <sip:bob@biloxi.com>
+From: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+CSeq: 314159 INVITE
+Content-Length: 0
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 215]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+F5 INVITE biloxi.com proxy -> Bob
+
+INVITE sip:bob@192.0.2.4 SIP/2.0
+Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1
+Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
+ ;received=192.0.2.2
+Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ ;received=192.0.2.1
+Max-Forwards: 68
+To: Bob <sip:bob@biloxi.com>
+From: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+CSeq: 314159 INVITE
+Contact: <sip:alice@pc33.atlanta.com>
+Content-Type: application/sdp
+Content-Length: 142
+
+(Alice's SDP not shown)
+
+F6 180 Ringing Bob -> biloxi.com proxy
+
+SIP/2.0 180 Ringing
+Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1
+ ;received=192.0.2.3
+Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
+ ;received=192.0.2.2
+Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ ;received=192.0.2.1
+To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
+From: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+Contact: <sip:bob@192.0.2.4>
+CSeq: 314159 INVITE
+Content-Length: 0
+
+F7 180 Ringing biloxi.com proxy -> atlanta.com proxy
+
+SIP/2.0 180 Ringing
+Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
+ ;received=192.0.2.2
+Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ ;received=192.0.2.1
+To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
+From: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+Contact: <sip:bob@192.0.2.4>
+CSeq: 314159 INVITE
+Content-Length: 0
+
+
+
+Rosenberg, et. al. Standards Track [Page 216]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+F8 180 Ringing atlanta.com proxy -> Alice
+
+SIP/2.0 180 Ringing
+Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ ;received=192.0.2.1
+To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
+From: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+Contact: <sip:bob@192.0.2.4>
+CSeq: 314159 INVITE
+Content-Length: 0
+
+F9 200 OK Bob -> biloxi.com proxy
+
+SIP/2.0 200 OK
+Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1
+ ;received=192.0.2.3
+Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
+ ;received=192.0.2.2
+Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ ;received=192.0.2.1
+To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
+From: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+CSeq: 314159 INVITE
+Contact: <sip:bob@192.0.2.4>
+Content-Type: application/sdp
+Content-Length: 131
+
+(Bob's SDP not shown)
+
+F10 200 OK biloxi.com proxy -> atlanta.com proxy
+
+SIP/2.0 200 OK
+Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
+ ;received=192.0.2.2
+Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ ;received=192.0.2.1
+To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
+From: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+CSeq: 314159 INVITE
+Contact: <sip:bob@192.0.2.4>
+Content-Type: application/sdp
+Content-Length: 131
+
+(Bob's SDP not shown)
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 217]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+F11 200 OK atlanta.com proxy -> Alice
+
+SIP/2.0 200 OK
+Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
+ ;received=192.0.2.1
+To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
+From: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+CSeq: 314159 INVITE
+Contact: <sip:bob@192.0.2.4>
+Content-Type: application/sdp
+Content-Length: 131
+
+(Bob's SDP not shown)
+
+F12 ACK Alice -> Bob
+
+ACK sip:bob@192.0.2.4 SIP/2.0
+Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds9
+Max-Forwards: 70
+To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
+From: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+CSeq: 314159 ACK
+Content-Length: 0
+
+ The media session between Alice and Bob is now established.
+
+ Bob hangs up first. Note that Bob's SIP phone maintains its own CSeq
+ numbering space, which, in this example, begins with 231. Since Bob
+ is making the request, the To and From URIs and tags have been
+ swapped.
+
+F13 BYE Bob -> Alice
+
+BYE sip:alice@pc33.atlanta.com SIP/2.0
+Via: SIP/2.0/UDP 192.0.2.4;branch=z9hG4bKnashds10
+Max-Forwards: 70
+From: Bob <sip:bob@biloxi.com>;tag=a6c85cf
+To: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+CSeq: 231 BYE
+Content-Length: 0
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 218]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+F14 200 OK Alice -> Bob
+
+SIP/2.0 200 OK
+Via: SIP/2.0/UDP 192.0.2.4;branch=z9hG4bKnashds10
+From: Bob <sip:bob@biloxi.com>;tag=a6c85cf
+To: Alice <sip:alice@atlanta.com>;tag=1928301774
+Call-ID: a84b4c76e66710
+CSeq: 231 BYE
+Content-Length: 0
+
+ The SIP Call Flows document [40] contains further examples of SIP
+ messages.
+
+25 Augmented BNF for the SIP Protocol
+
+ All of the mechanisms specified in this document are described in
+ both prose and an augmented Backus-Naur Form (BNF) defined in RFC
+ 2234 [10]. Section 6.1 of RFC 2234 defines a set of core rules that
+ are used by this specification, and not repeated here. Implementers
+ need to be familiar with the notation and content of RFC 2234 in
+ order to understand this specification. Certain basic rules are in
+ uppercase, such as SP, LWS, HTAB, CRLF, DIGIT, ALPHA, etc. Angle
+ brackets are used within definitions to clarify the use of rule
+ names.
+
+ The use of square brackets is redundant syntactically. It is used as
+ a semantic hint that the specific parameter is optional to use.
+
+25.1 Basic Rules
+
+ The following rules are used throughout this specification to
+ describe basic parsing constructs. The US-ASCII coded character set
+ is defined by ANSI X3.4-1986.
+
+ alphanum = ALPHA / DIGIT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 219]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Several rules are incorporated from RFC 2396 [5] but are updated to
+ make them compliant with RFC 2234 [10]. These include:
+
+ reserved = ";" / "/" / "?" / ":" / "@" / "&" / "=" / "+"
+ / "$" / ","
+ unreserved = alphanum / mark
+ mark = "-" / "_" / "." / "!" / "~" / "*" / "'"
+ / "(" / ")"
+ escaped = "%" HEXDIG HEXDIG
+
+ SIP header field values can be folded onto multiple lines if the
+ continuation line begins with a space or horizontal tab. All linear
+ white space, including folding, has the same semantics as SP. A
+ recipient MAY replace any linear white space with a single SP before
+ interpreting the field value or forwarding the message downstream.
+ This is intended to behave exactly as HTTP/1.1 as described in RFC
+ 2616 [8]. The SWS construct is used when linear white space is
+ optional, generally between tokens and separators.
+
+ LWS = [*WSP CRLF] 1*WSP ; linear whitespace
+ SWS = [LWS] ; sep whitespace
+
+ To separate the header name from the rest of value, a colon is used,
+ which, by the above rule, allows whitespace before, but no line
+ break, and whitespace after, including a linebreak. The HCOLON
+ defines this construct.
+
+ HCOLON = *( SP / HTAB ) ":" SWS
+
+ The TEXT-UTF8 rule is only used for descriptive field contents and
+ values that are not intended to be interpreted by the message parser.
+ Words of *TEXT-UTF8 contain characters from the UTF-8 charset (RFC
+ 2279 [7]). The TEXT-UTF8-TRIM rule is used for descriptive field
+ contents that are n t quoted strings, where leading and trailing LWS
+ is not meaningful. In this regard, SIP differs from HTTP, which uses
+ the ISO 8859-1 character set.
+
+ TEXT-UTF8-TRIM = 1*TEXT-UTF8char *(*LWS TEXT-UTF8char)
+ TEXT-UTF8char = %x21-7E / UTF8-NONASCII
+ UTF8-NONASCII = %xC0-DF 1UTF8-CONT
+ / %xE0-EF 2UTF8-CONT
+ / %xF0-F7 3UTF8-CONT
+ / %xF8-Fb 4UTF8-CONT
+ / %xFC-FD 5UTF8-CONT
+ UTF8-CONT = %x80-BF
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 220]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ A CRLF is allowed in the definition of TEXT-UTF8-TRIM only as part of
+ a header field continuation. It is expected that the folding LWS
+ will be replaced with a single SP before interpretation of the TEXT-
+ UTF8-TRIM value.
+
+ Hexadecimal numeric characters are used in several protocol elements.
+ Some elements (authentication) force hex alphas to be lower case.
+
+ LHEX = DIGIT / %x61-66 ;lowercase a-f
+
+ Many SIP header field values consist of words separated by LWS or
+ special characters. Unless otherwise stated, tokens are case-
+ insensitive. These special characters MUST be in a quoted string to
+ be used within a parameter value. The word construct is used in
+ Call-ID to allow most separators to be used.
+
+ token = 1*(alphanum / "-" / "." / "!" / "%" / "*"
+ / "_" / "+" / "`" / "'" / "~" )
+ separators = "(" / ")" / "<" / ">" / "@" /
+ "," / ";" / ":" / "\" / DQUOTE /
+ "/" / "[" / "]" / "?" / "=" /
+ "{" / "}" / SP / HTAB
+ word = 1*(alphanum / "-" / "." / "!" / "%" / "*" /
+ "_" / "+" / "`" / "'" / "~" /
+ "(" / ")" / "<" / ">" /
+ ":" / "\" / DQUOTE /
+ "/" / "[" / "]" / "?" /
+ "{" / "}" )
+
+ When tokens are used or separators are used between elements,
+ whitespace is often allowed before or after these characters:
+
+ STAR = SWS "*" SWS ; asterisk
+ SLASH = SWS "/" SWS ; slash
+ EQUAL = SWS "=" SWS ; equal
+ LPAREN = SWS "(" SWS ; left parenthesis
+ RPAREN = SWS ")" SWS ; right parenthesis
+ RAQUOT = ">" SWS ; right angle quote
+ LAQUOT = SWS "<"; left angle quote
+ COMMA = SWS "," SWS ; comma
+ SEMI = SWS ";" SWS ; semicolon
+ COLON = SWS ":" SWS ; colon
+ LDQUOT = SWS DQUOTE; open double quotation mark
+ RDQUOT = DQUOTE SWS ; close double quotation mark
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 221]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Comments can be included in some SIP header fields by surrounding the
+ comment text with parentheses. Comments are only allowed in fields
+ containing "comment" as part of their field value definition. In all
+ other fields, parentheses are considered part of the field value.
+
+ comment = LPAREN *(ctext / quoted-pair / comment) RPAREN
+ ctext = %x21-27 / %x2A-5B / %x5D-7E / UTF8-NONASCII
+ / LWS
+
+ ctext includes all chars except left and right parens and backslash.
+ A string of text is parsed as a single word if it is quoted using
+ double-quote marks. In quoted strings, quotation marks (") and
+ backslashes (\) need to be escaped.
+
+ quoted-string = SWS DQUOTE *(qdtext / quoted-pair ) DQUOTE
+ qdtext = LWS / %x21 / %x23-5B / %x5D-7E
+ / UTF8-NONASCII
+
+ The backslash character ("\") MAY be used as a single-character
+ quoting mechanism only within quoted-string and comment constructs.
+ Unlike HTTP/1.1, the characters CR and LF cannot be escaped by this
+ mechanism to avoid conflict with line folding and header separation.
+
+quoted-pair = "\" (%x00-09 / %x0B-0C
+ / %x0E-7F)
+
+SIP-URI = "sip:" [ userinfo ] hostport
+ uri-parameters [ headers ]
+SIPS-URI = "sips:" [ userinfo ] hostport
+ uri-parameters [ headers ]
+userinfo = ( user / telephone-subscriber ) [ ":" password ] "@"
+user = 1*( unreserved / escaped / user-unreserved )
+user-unreserved = "&" / "=" / "+" / "$" / "," / ";" / "?" / "/"
+password = *( unreserved / escaped /
+ "&" / "=" / "+" / "$" / "," )
+hostport = host [ ":" port ]
+host = hostname / IPv4address / IPv6reference
+hostname = *( domainlabel "." ) toplabel [ "." ]
+domainlabel = alphanum
+ / alphanum *( alphanum / "-" ) alphanum
+toplabel = ALPHA / ALPHA *( alphanum / "-" ) alphanum
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 222]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT
+IPv6reference = "[" IPv6address "]"
+IPv6address = hexpart [ ":" IPv4address ]
+hexpart = hexseq / hexseq "::" [ hexseq ] / "::" [ hexseq ]
+hexseq = hex4 *( ":" hex4)
+hex4 = 1*4HEXDIG
+port = 1*DIGIT
+
+ The BNF for telephone-subscriber can be found in RFC 2806 [9]. Note,
+ however, that any characters allowed there that are not allowed in
+ the user part of the SIP URI MUST be escaped.
+
+uri-parameters = *( ";" uri-parameter)
+uri-parameter = transport-param / user-param / method-param
+ / ttl-param / maddr-param / lr-param / other-param
+transport-param = "transport="
+ ( "udp" / "tcp" / "sctp" / "tls"
+ / other-transport)
+other-transport = token
+user-param = "user=" ( "phone" / "ip" / other-user)
+other-user = token
+method-param = "method=" Method
+ttl-param = "ttl=" ttl
+maddr-param = "maddr=" host
+lr-param = "lr"
+other-param = pname [ "=" pvalue ]
+pname = 1*paramchar
+pvalue = 1*paramchar
+paramchar = param-unreserved / unreserved / escaped
+param-unreserved = "[" / "]" / "/" / ":" / "&" / "+" / "$"
+
+headers = "?" header *( "&" header )
+header = hname "=" hvalue
+hname = 1*( hnv-unreserved / unreserved / escaped )
+hvalue = *( hnv-unreserved / unreserved / escaped )
+hnv-unreserved = "[" / "]" / "/" / "?" / ":" / "+" / "$"
+
+SIP-message = Request / Response
+Request = Request-Line
+ *( message-header )
+ CRLF
+ [ message-body ]
+Request-Line = Method SP Request-URI SP SIP-Version CRLF
+Request-URI = SIP-URI / SIPS-URI / absoluteURI
+absoluteURI = scheme ":" ( hier-part / opaque-part )
+hier-part = ( net-path / abs-path ) [ "?" query ]
+net-path = "//" authority [ abs-path ]
+abs-path = "/" path-segments
+
+
+
+Rosenberg, et. al. Standards Track [Page 223]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+opaque-part = uric-no-slash *uric
+uric = reserved / unreserved / escaped
+uric-no-slash = unreserved / escaped / ";" / "?" / ":" / "@"
+ / "&" / "=" / "+" / "$" / ","
+path-segments = segment *( "/" segment )
+segment = *pchar *( ";" param )
+param = *pchar
+pchar = unreserved / escaped /
+ ":" / "@" / "&" / "=" / "+" / "$" / ","
+scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
+authority = srvr / reg-name
+srvr = [ [ userinfo "@" ] hostport ]
+reg-name = 1*( unreserved / escaped / "$" / ","
+ / ";" / ":" / "@" / "&" / "=" / "+" )
+query = *uric
+SIP-Version = "SIP" "/" 1*DIGIT "." 1*DIGIT
+
+message-header = (Accept
+ / Accept-Encoding
+ / Accept-Language
+ / Alert-Info
+ / Allow
+ / Authentication-Info
+ / Authorization
+ / Call-ID
+ / Call-Info
+ / Contact
+ / Content-Disposition
+ / Content-Encoding
+ / Content-Language
+ / Content-Length
+ / Content-Type
+ / CSeq
+ / Date
+ / Error-Info
+ / Expires
+ / From
+ / In-Reply-To
+ / Max-Forwards
+ / MIME-Version
+ / Min-Expires
+ / Organization
+ / Priority
+ / Proxy-Authenticate
+ / Proxy-Authorization
+ / Proxy-Require
+ / Record-Route
+ / Reply-To
+
+
+
+Rosenberg, et. al. Standards Track [Page 224]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ / Require
+ / Retry-After
+ / Route
+ / Server
+ / Subject
+ / Supported
+ / Timestamp
+ / To
+ / Unsupported
+ / User-Agent
+ / Via
+ / Warning
+ / WWW-Authenticate
+ / extension-header) CRLF
+
+INVITEm = %x49.4E.56.49.54.45 ; INVITE in caps
+ACKm = %x41.43.4B ; ACK in caps
+OPTIONSm = %x4F.50.54.49.4F.4E.53 ; OPTIONS in caps
+BYEm = %x42.59.45 ; BYE in caps
+CANCELm = %x43.41.4E.43.45.4C ; CANCEL in caps
+REGISTERm = %x52.45.47.49.53.54.45.52 ; REGISTER in caps
+Method = INVITEm / ACKm / OPTIONSm / BYEm
+ / CANCELm / REGISTERm
+ / extension-method
+extension-method = token
+Response = Status-Line
+ *( message-header )
+ CRLF
+ [ message-body ]
+
+Status-Line = SIP-Version SP Status-Code SP Reason-Phrase CRLF
+Status-Code = Informational
+ / Redirection
+ / Success
+ / Client-Error
+ / Server-Error
+ / Global-Failure
+ / extension-code
+extension-code = 3DIGIT
+Reason-Phrase = *(reserved / unreserved / escaped
+ / UTF8-NONASCII / UTF8-CONT / SP / HTAB)
+
+Informational = "100" ; Trying
+ / "180" ; Ringing
+ / "181" ; Call Is Being Forwarded
+ / "182" ; Queued
+ / "183" ; Session Progress
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 225]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+Success = "200" ; OK
+
+Redirection = "300" ; Multiple Choices
+ / "301" ; Moved Permanently
+ / "302" ; Moved Temporarily
+ / "305" ; Use Proxy
+ / "380" ; Alternative Service
+
+Client-Error = "400" ; Bad Request
+ / "401" ; Unauthorized
+ / "402" ; Payment Required
+ / "403" ; Forbidden
+ / "404" ; Not Found
+ / "405" ; Method Not Allowed
+ / "406" ; Not Acceptable
+ / "407" ; Proxy Authentication Required
+ / "408" ; Request Timeout
+ / "410" ; Gone
+ / "413" ; Request Entity Too Large
+ / "414" ; Request-URI Too Large
+ / "415" ; Unsupported Media Type
+ / "416" ; Unsupported URI Scheme
+ / "420" ; Bad Extension
+ / "421" ; Extension Required
+ / "423" ; Interval Too Brief
+ / "480" ; Temporarily not available
+ / "481" ; Call Leg/Transaction Does Not Exist
+ / "482" ; Loop Detected
+ / "483" ; Too Many Hops
+ / "484" ; Address Incomplete
+ / "485" ; Ambiguous
+ / "486" ; Busy Here
+ / "487" ; Request Terminated
+ / "488" ; Not Acceptable Here
+ / "491" ; Request Pending
+ / "493" ; Undecipherable
+
+Server-Error = "500" ; Internal Server Error
+ / "501" ; Not Implemented
+ / "502" ; Bad Gateway
+ / "503" ; Service Unavailable
+ / "504" ; Server Time-out
+ / "505" ; SIP Version not supported
+ / "513" ; Message Too Large
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 226]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+Global-Failure = "600" ; Busy Everywhere
+ / "603" ; Decline
+ / "604" ; Does not exist anywhere
+ / "606" ; Not Acceptable
+
+Accept = "Accept" HCOLON
+ [ accept-range *(COMMA accept-range) ]
+accept-range = media-range *(SEMI accept-param)
+media-range = ( "*/*"
+ / ( m-type SLASH "*" )
+ / ( m-type SLASH m-subtype )
+ ) *( SEMI m-parameter )
+accept-param = ("q" EQUAL qvalue) / generic-param
+qvalue = ( "0" [ "." 0*3DIGIT ] )
+ / ( "1" [ "." 0*3("0") ] )
+generic-param = token [ EQUAL gen-value ]
+gen-value = token / host / quoted-string
+
+Accept-Encoding = "Accept-Encoding" HCOLON
+ [ encoding *(COMMA encoding) ]
+encoding = codings *(SEMI accept-param)
+codings = content-coding / "*"
+content-coding = token
+
+Accept-Language = "Accept-Language" HCOLON
+ [ language *(COMMA language) ]
+language = language-range *(SEMI accept-param)
+language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) / "*" )
+
+Alert-Info = "Alert-Info" HCOLON alert-param *(COMMA alert-param)
+alert-param = LAQUOT absoluteURI RAQUOT *( SEMI generic-param )
+
+Allow = "Allow" HCOLON [Method *(COMMA Method)]
+
+Authorization = "Authorization" HCOLON credentials
+credentials = ("Digest" LWS digest-response)
+ / other-response
+digest-response = dig-resp *(COMMA dig-resp)
+dig-resp = username / realm / nonce / digest-uri
+ / dresponse / algorithm / cnonce
+ / opaque / message-qop
+ / nonce-count / auth-param
+username = "username" EQUAL username-value
+username-value = quoted-string
+digest-uri = "uri" EQUAL LDQUOT digest-uri-value RDQUOT
+digest-uri-value = rquest-uri ; Equal to request-uri as specified
+ by HTTP/1.1
+message-qop = "qop" EQUAL qop-value
+
+
+
+Rosenberg, et. al. Standards Track [Page 227]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+cnonce = "cnonce" EQUAL cnonce-value
+cnonce-value = nonce-value
+nonce-count = "nc" EQUAL nc-value
+nc-value = 8LHEX
+dresponse = "response" EQUAL request-digest
+request-digest = LDQUOT 32LHEX RDQUOT
+auth-param = auth-param-name EQUAL
+ ( token / quoted-string )
+auth-param-name = token
+other-response = auth-scheme LWS auth-param
+ *(COMMA auth-param)
+auth-scheme = token
+
+Authentication-Info = "Authentication-Info" HCOLON ainfo
+ *(COMMA ainfo)
+ainfo = nextnonce / message-qop
+ / response-auth / cnonce
+ / nonce-count
+nextnonce = "nextnonce" EQUAL nonce-value
+response-auth = "rspauth" EQUAL response-digest
+response-digest = LDQUOT *LHEX RDQUOT
+
+Call-ID = ( "Call-ID" / "i" ) HCOLON callid
+callid = word [ "@" word ]
+
+Call-Info = "Call-Info" HCOLON info *(COMMA info)
+info = LAQUOT absoluteURI RAQUOT *( SEMI info-param)
+info-param = ( "purpose" EQUAL ( "icon" / "info"
+ / "card" / token ) ) / generic-param
+
+Contact = ("Contact" / "m" ) HCOLON
+ ( STAR / (contact-param *(COMMA contact-param)))
+contact-param = (name-addr / addr-spec) *(SEMI contact-params)
+name-addr = [ display-name ] LAQUOT addr-spec RAQUOT
+addr-spec = SIP-URI / SIPS-URI / absoluteURI
+display-name = *(token LWS)/ quoted-string
+
+contact-params = c-p-q / c-p-expires
+ / contact-extension
+c-p-q = "q" EQUAL qvalue
+c-p-expires = "expires" EQUAL delta-seconds
+contact-extension = generic-param
+delta-seconds = 1*DIGIT
+
+Content-Disposition = "Content-Disposition" HCOLON
+ disp-type *( SEMI disp-param )
+disp-type = "render" / "session" / "icon" / "alert"
+ / disp-extension-token
+
+
+
+Rosenberg, et. al. Standards Track [Page 228]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+disp-param = handling-param / generic-param
+handling-param = "handling" EQUAL
+ ( "optional" / "required"
+ / other-handling )
+other-handling = token
+disp-extension-token = token
+
+Content-Encoding = ( "Content-Encoding" / "e" ) HCOLON
+ content-coding *(COMMA content-coding)
+
+Content-Language = "Content-Language" HCOLON
+ language-tag *(COMMA language-tag)
+language-tag = primary-tag *( "-" subtag )
+primary-tag = 1*8ALPHA
+subtag = 1*8ALPHA
+
+Content-Length = ( "Content-Length" / "l" ) HCOLON 1*DIGIT
+Content-Type = ( "Content-Type" / "c" ) HCOLON media-type
+media-type = m-type SLASH m-subtype *(SEMI m-parameter)
+m-type = discrete-type / composite-type
+discrete-type = "text" / "image" / "audio" / "video"
+ / "application" / extension-token
+composite-type = "message" / "multipart" / extension-token
+extension-token = ietf-token / x-token
+ietf-token = token
+x-token = "x-" token
+m-subtype = extension-token / iana-token
+iana-token = token
+m-parameter = m-attribute EQUAL m-value
+m-attribute = token
+m-value = token / quoted-string
+
+CSeq = "CSeq" HCOLON 1*DIGIT LWS Method
+
+Date = "Date" HCOLON SIP-date
+SIP-date = rfc1123-date
+rfc1123-date = wkday "," SP date1 SP time SP "GMT"
+date1 = 2DIGIT SP month SP 4DIGIT
+ ; day month year (e.g., 02 Jun 1982)
+time = 2DIGIT ":" 2DIGIT ":" 2DIGIT
+ ; 00:00:00 - 23:59:59
+wkday = "Mon" / "Tue" / "Wed"
+ / "Thu" / "Fri" / "Sat" / "Sun"
+month = "Jan" / "Feb" / "Mar" / "Apr"
+ / "May" / "Jun" / "Jul" / "Aug"
+ / "Sep" / "Oct" / "Nov" / "Dec"
+
+Error-Info = "Error-Info" HCOLON error-uri *(COMMA error-uri)
+
+
+
+Rosenberg, et. al. Standards Track [Page 229]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+error-uri = LAQUOT absoluteURI RAQUOT *( SEMI generic-param )
+
+Expires = "Expires" HCOLON delta-seconds
+From = ( "From" / "f" ) HCOLON from-spec
+from-spec = ( name-addr / addr-spec )
+ *( SEMI from-param )
+from-param = tag-param / generic-param
+tag-param = "tag" EQUAL token
+
+In-Reply-To = "In-Reply-To" HCOLON callid *(COMMA callid)
+
+Max-Forwards = "Max-Forwards" HCOLON 1*DIGIT
+
+MIME-Version = "MIME-Version" HCOLON 1*DIGIT "." 1*DIGIT
+
+Min-Expires = "Min-Expires" HCOLON delta-seconds
+
+Organization = "Organization" HCOLON [TEXT-UTF8-TRIM]
+
+Priority = "Priority" HCOLON priority-value
+priority-value = "emergency" / "urgent" / "normal"
+ / "non-urgent" / other-priority
+other-priority = token
+
+Proxy-Authenticate = "Proxy-Authenticate" HCOLON challenge
+challenge = ("Digest" LWS digest-cln *(COMMA digest-cln))
+ / other-challenge
+other-challenge = auth-scheme LWS auth-param
+ *(COMMA auth-param)
+digest-cln = realm / domain / nonce
+ / opaque / stale / algorithm
+ / qop-options / auth-param
+realm = "realm" EQUAL realm-value
+realm-value = quoted-string
+domain = "domain" EQUAL LDQUOT URI
+ *( 1*SP URI ) RDQUOT
+URI = absoluteURI / abs-path
+nonce = "nonce" EQUAL nonce-value
+nonce-value = quoted-string
+opaque = "opaque" EQUAL quoted-string
+stale = "stale" EQUAL ( "true" / "false" )
+algorithm = "algorithm" EQUAL ( "MD5" / "MD5-sess"
+ / token )
+qop-options = "qop" EQUAL LDQUOT qop-value
+ *("," qop-value) RDQUOT
+qop-value = "auth" / "auth-int" / token
+
+Proxy-Authorization = "Proxy-Authorization" HCOLON credentials
+
+
+
+Rosenberg, et. al. Standards Track [Page 230]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+Proxy-Require = "Proxy-Require" HCOLON option-tag
+ *(COMMA option-tag)
+option-tag = token
+
+Record-Route = "Record-Route" HCOLON rec-route *(COMMA rec-route)
+rec-route = name-addr *( SEMI rr-param )
+rr-param = generic-param
+
+Reply-To = "Reply-To" HCOLON rplyto-spec
+rplyto-spec = ( name-addr / addr-spec )
+ *( SEMI rplyto-param )
+rplyto-param = generic-param
+Require = "Require" HCOLON option-tag *(COMMA option-tag)
+
+Retry-After = "Retry-After" HCOLON delta-seconds
+ [ comment ] *( SEMI retry-param )
+
+retry-param = ("duration" EQUAL delta-seconds)
+ / generic-param
+
+Route = "Route" HCOLON route-param *(COMMA route-param)
+route-param = name-addr *( SEMI rr-param )
+
+Server = "Server" HCOLON server-val *(LWS server-val)
+server-val = product / comment
+product = token [SLASH product-version]
+product-version = token
+
+Subject = ( "Subject" / "s" ) HCOLON [TEXT-UTF8-TRIM]
+
+Supported = ( "Supported" / "k" ) HCOLON
+ [option-tag *(COMMA option-tag)]
+
+Timestamp = "Timestamp" HCOLON 1*(DIGIT)
+ [ "." *(DIGIT) ] [ LWS delay ]
+delay = *(DIGIT) [ "." *(DIGIT) ]
+
+To = ( "To" / "t" ) HCOLON ( name-addr
+ / addr-spec ) *( SEMI to-param )
+to-param = tag-param / generic-param
+
+Unsupported = "Unsupported" HCOLON option-tag *(COMMA option-tag)
+User-Agent = "User-Agent" HCOLON server-val *(LWS server-val)
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 231]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+Via = ( "Via" / "v" ) HCOLON via-parm *(COMMA via-parm)
+via-parm = sent-protocol LWS sent-by *( SEMI via-params )
+via-params = via-ttl / via-maddr
+ / via-received / via-branch
+ / via-extension
+via-ttl = "ttl" EQUAL ttl
+via-maddr = "maddr" EQUAL host
+via-received = "received" EQUAL (IPv4address / IPv6address)
+via-branch = "branch" EQUAL token
+via-extension = generic-param
+sent-protocol = protocol-name SLASH protocol-version
+ SLASH transport
+protocol-name = "SIP" / token
+protocol-version = token
+transport = "UDP" / "TCP" / "TLS" / "SCTP"
+ / other-transport
+sent-by = host [ COLON port ]
+ttl = 1*3DIGIT ; 0 to 255
+
+Warning = "Warning" HCOLON warning-value *(COMMA warning-value)
+warning-value = warn-code SP warn-agent SP warn-text
+warn-code = 3DIGIT
+warn-agent = hostport / pseudonym
+ ; the name or pseudonym of the server adding
+ ; the Warning header, for use in debugging
+warn-text = quoted-string
+pseudonym = token
+
+WWW-Authenticate = "WWW-Authenticate" HCOLON challenge
+
+extension-header = header-name HCOLON header-value
+header-name = token
+header-value = *(TEXT-UTF8char / UTF8-CONT / LWS)
+message-body = *OCTET
+
+26 Security Considerations: Threat Model and Security Usage
+ Recommendations
+
+ SIP is not an easy protocol to secure. Its use of intermediaries,
+ its multi-faceted trust relationships, its expected usage between
+ elements with no trust at all, and its user-to-user operation make
+ security far from trivial. Security solutions are needed that are
+ deployable today, without extensive coordination, in a wide variety
+ of environments and usages. In order to meet these diverse needs,
+ several distinct mechanisms applicable to different aspects and
+ usages of SIP will be required.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 232]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Note that the security of SIP signaling itself has no bearing on the
+ security of protocols used in concert with SIP such as RTP, or with
+ the security implications of any specific bodies SIP might carry
+ (although MIME security plays a substantial role in securing SIP).
+ Any media associated with a session can be encrypted end-to-end
+ independently of any associated SIP signaling. Media encryption is
+ outside the scope of this document.
+
+ The considerations that follow first examine a set of classic threat
+ models that broadly identify the security needs of SIP. The set of
+ security services required to address these threats is then detailed,
+ followed by an explanation of several security mechanisms that can be
+ used to provide these services. Next, the requirements for
+ implementers of SIP are enumerated, along with exemplary deployments
+ in which these security mechanisms could be used to improve the
+ security of SIP. Some notes on privacy conclude this section.
+
+26.1 Attacks and Threat Models
+
+ This section details some threats that should be common to most
+ deployments of SIP. These threats have been chosen specifically to
+ illustrate each of the security services that SIP requires.
+
+ The following examples by no means provide an exhaustive list of the
+ threats against SIP; rather, these are "classic" threats that
+ demonstrate the need for particular security services that can
+ potentially prevent whole categories of threats.
+
+ These attacks assume an environment in which attackers can
+ potentially read any packet on the network - it is anticipated that
+ SIP will frequently be used on the public Internet. Attackers on the
+ network may be able to modify packets (perhaps at some compromised
+ intermediary). Attackers may wish to steal services, eavesdrop on
+ communications, or disrupt sessions.
+
+26.1.1 Registration Hijacking
+
+ The SIP registration mechanism allows a user agent to identify itself
+ to a registrar as a device at which a user (designated by an address
+ of record) is located. A registrar assesses the identity asserted in
+ the From header field of a REGISTER message to determine whether this
+ request can modify the contact addresses associated with the
+ address-of-record in the To header field. While these two fields are
+ frequently the same, there are many valid deployments in which a
+ third-party may register contacts on a user's behalf.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 233]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The From header field of a SIP request, however, can be modified
+ arbitrarily by the owner of a UA, and this opens the door to
+ malicious registrations. An attacker that successfully impersonates
+ a party authorized to change contacts associated with an address-of-
+ record could, for example, de-register all existing contacts for a
+ URI and then register their own device as the appropriate contact
+ address, thereby directing all requests for the affected user to the
+ attacker's device.
+
+ This threat belongs to a family of threats that rely on the absence
+ of cryptographic assurance of a request's originator. Any SIP UAS
+ that represents a valuable service (a gateway that interworks SIP
+ requests with traditional telephone calls, for example) might want to
+ control access to its resources by authenticating requests that it
+ receives. Even end-user UAs, for example SIP phones, have an
+ interest in ascertaining the identities of originators of requests.
+
+ This threat demonstrates the need for security services that enable
+ SIP entities to authenticate the originators of requests.
+
+26.1.2 Impersonating a Server
+
+ The domain to which a request is destined is generally specified in
+ the Request-URI. UAs commonly contact a server in this domain
+ directly in order to deliver a request. However, there is always a
+ possibility that an attacker could impersonate the remote server, and
+ that the UA's request could be intercepted by some other party.
+
+ For example, consider a case in which a redirect server at one
+ domain, chicago.com, impersonates a redirect server at another
+ domain, biloxi.com. A user agent sends a request to biloxi.com, but
+ the redirect server at chicago.com answers with a forged response
+ that has appropriate SIP header fields for a response from
+ biloxi.com. The forged contact addresses in the redirection response
+ could direct the originating UA to inappropriate or insecure
+ resources, or simply prevent requests for biloxi.com from succeeding.
+
+ This family of threats has a vast membership, many of which are
+ critical. As a converse to the registration hijacking threat,
+ consider the case in which a registration sent to biloxi.com is
+ intercepted by chicago.com, which replies to the intercepted
+ registration with a forged 301 (Moved Permanently) response. This
+ response might seem to come from biloxi.com yet designate chicago.com
+ as the appropriate registrar. All future REGISTER requests from the
+ originating UA would then go to chicago.com.
+
+ Prevention of this threat requires a means by which UAs can
+ authenticate the servers to whom they send requests.
+
+
+
+Rosenberg, et. al. Standards Track [Page 234]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+26.1.3 Tampering with Message Bodies
+
+ As a matter of course, SIP UAs route requests through trusted proxy
+ servers. Regardless of how that trust is established (authentication
+ of proxies is discussed elsewhere in this section), a UA may trust a
+ proxy server to route a request, but not to inspect or possibly
+ modify the bodies contained in that request.
+
+ Consider a UA that is using SIP message bodies to communicate session
+ encryption keys for a media session. Although it trusts the proxy
+ server of the domain it is contacting to deliver signaling properly,
+ it may not want the administrators of that domain to be capable of
+ decrypting any subsequent media session. Worse yet, if the proxy
+ server were actively malicious, it could modify the session key,
+ either acting as a man-in-the-middle, or perhaps changing the
+ security characteristics requested by the originating UA.
+
+ This family of threats applies not only to session keys, but to most
+ conceivable forms of content carried end-to-end in SIP. These might
+ include MIME bodies that should be rendered to the user, SDP, or
+ encapsulated telephony signals, among others. Attackers might
+ attempt to modify SDP bodies, for example, in order to point RTP
+ media streams to a wiretapping device in order to eavesdrop on
+ subsequent voice communications.
+
+ Also note that some header fields in SIP are meaningful end-to-end,
+ for example, Subject. UAs might be protective of these header fields
+ as well as bodies (a malicious intermediary changing the Subject
+ header field might make an important request appear to be spam, for
+ example). However, since many header fields are legitimately
+ inspected or altered by proxy servers as a request is routed, not all
+ header fields should be secured end-to-end.
+
+ For these reasons, the UA might want to secure SIP message bodies,
+ and in some limited cases header fields, end-to-end. The security
+ services required for bodies include confidentiality, integrity, and
+ authentication. These end-to-end services should be independent of
+ the means used to secure interactions with intermediaries such as
+ proxy servers.
+
+26.1.4 Tearing Down Sessions
+
+ Once a dialog has been established by initial messaging, subsequent
+ requests can be sent that modify the state of the dialog and/or
+ session. It is critical that principals in a session can be certain
+ that such requests are not forged by attackers.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 235]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Consider a case in which a third-party attacker captures some initial
+ messages in a dialog shared by two parties in order to learn the
+ parameters of the session (To tag, From tag, and so forth) and then
+ inserts a BYE request into the session. The attacker could opt to
+ forge the request such that it seemed to come from either
+ participant. Once the BYE is received by its target, the session
+ will be torn down prematurely.
+
+ Similar mid-session threats include the transmission of forged re-
+ INVITEs that alter the session (possibly to reduce session security
+ or redirect media streams as part of a wiretapping attack).
+
+ The most effective countermeasure to this threat is the
+ authentication of the sender of the BYE. In this instance, the
+ recipient needs only know that the BYE came from the same party with
+ whom the corresponding dialog was established (as opposed to
+ ascertaining the absolute identity of the sender). Also, if the
+ attacker is unable to learn the parameters of the session due to
+ confidentiality, it would not be possible to forge the BYE. However,
+ some intermediaries (like proxy servers) will need to inspect those
+ parameters as the session is established.
+
+26.1.5 Denial of Service and Amplification
+
+ Denial-of-service attacks focus on rendering a particular network
+ element unavailable, usually by directing an excessive amount of
+ network traffic at its interfaces. A distributed denial-of-service
+ attack allows one network user to cause multiple network hosts to
+ flood a target host with a large amount of network traffic.
+
+ In many architectures, SIP proxy servers face the public Internet in
+ order to accept requests from worldwide IP endpoints. SIP creates a
+ number of potential opportunities for distributed denial-of-service
+ attacks that must be recognized and addressed by the implementers and
+ operators of SIP systems.
+
+ Attackers can create bogus requests that contain a falsified source
+ IP address and a corresponding Via header field that identify a
+ targeted host as the originator of the request and then send this
+ request to a large number of SIP network elements, thereby using
+ hapless SIP UAs or proxies to generate denial-of-service traffic
+ aimed at the target.
+
+ Similarly, attackers might use falsified Route header field values in
+ a request that identify the target host and then send such messages
+ to forking proxies that will amplify messaging sent to the target.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 236]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Record-Route could be used to similar effect when the attacker is
+ certain that the SIP dialog initiated by the request will result in
+ numerous transactions originating in the backwards direction.
+
+ A number of denial-of-service attacks open up if REGISTER requests
+ are not properly authenticated and authorized by registrars.
+ Attackers could de-register some or all users in an administrative
+ domain, thereby preventing these users from being invited to new
+ sessions. An attacker could also register a large number of contacts
+ designating the same host for a given address-of-record in order to
+ use the registrar and any associated proxy servers as amplifiers in a
+ denial-of-service attack. Attackers might also attempt to deplete
+ available memory and disk resources of a registrar by registering
+ huge numbers of bindings.
+
+ The use of multicast to transmit SIP requests can greatly increase
+ the potential for denial-of-service attacks.
+
+ These problems demonstrate a general need to define architectures
+ that minimize the risks of denial-of-service, and the need to be
+ mindful in recommendations for security mechanisms of this class of
+ attacks.
+
+26.2 Security Mechanisms
+
+ From the threats described above, we gather that the fundamental
+ security services required for the SIP protocol are: preserving the
+ confidentiality and integrity of messaging, preventing replay attacks
+ or message spoofing, providing for the authentication and privacy of
+ the participants in a session, and preventing denial-of-service
+ attacks. Bodies within SIP messages separately require the security
+ services of confidentiality, integrity, and authentication.
+
+ Rather than defining new security mechanisms specific to SIP, SIP
+ reuses wherever possible existing security models derived from the
+ HTTP and SMTP space.
+
+ Full encryption of messages provides the best means to preserve the
+ confidentiality of signaling - it can also guarantee that messages
+ are not modified by any malicious intermediaries. However, SIP
+ requests and responses cannot be naively encrypted end-to-end in
+ their entirety because message fields such as the Request-URI, Route,
+ and Via need to be visible to proxies in most network architectures
+ so that SIP requests are routed correctly. Note that proxy servers
+ need to modify some features of messages as well (such as adding Via
+ header field values) in order for SIP to function. Proxy servers
+ must therefore be trusted, to some degree, by SIP UAs. To this
+ purpose, low-layer security mechanisms for SIP are recommended, which
+
+
+
+Rosenberg, et. al. Standards Track [Page 237]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ encrypt the entire SIP requests or responses on the wire on a hop-
+ by-hop basis, and that allow endpoints to verify the identity of
+ proxy servers to whom they send requests.
+
+ SIP entities also have a need to identify one another in a secure
+ fashion. When a SIP endpoint asserts the identity of its user to a
+ peer UA or to a proxy server, that identity should in some way be
+ verifiable. A cryptographic authentication mechanism is provided in
+ SIP to address this requirement.
+
+ An independent security mechanism for SIP message bodies supplies an
+ alternative means of end-to-end mutual authentication, as well as
+ providing a limit on the degree to which user agents must trust
+ intermediaries.
+
+26.2.1 Transport and Network Layer Security
+
+ Transport or network layer security encrypts signaling traffic,
+ guaranteeing message confidentiality and integrity.
+
+ Oftentimes, certificates are used in the establishment of lower-layer
+ security, and these certificates can also be used to provide a means
+ of authentication in many architectures.
+
+ Two popular alternatives for providing security at the transport and
+ network layer are, respectively, TLS [25] and IPSec [26].
+
+ IPSec is a set of network-layer protocol tools that collectively can
+ be used as a secure replacement for traditional IP (Internet
+ Protocol). IPSec is most commonly used in architectures in which a
+ set of hosts or administrative domains have an existing trust
+ relationship with one another. IPSec is usually implemented at the
+ operating system level in a host, or on a security gateway that
+ provides confidentiality and integrity for all traffic it receives
+ from a particular interface (as in a VPN architecture). IPSec can
+ also be used on a hop-by-hop basis.
+
+ In many architectures IPSec does not require integration with SIP
+ applications; IPSec is perhaps best suited to deployments in which
+ adding security directly to SIP hosts would be arduous. UAs that
+ have a pre-shared keying relationship with their first-hop proxy
+ server are also good candidates to use IPSec. Any deployment of
+ IPSec for SIP would require an IPSec profile describing the protocol
+ tools that would be required to secure SIP. No such profile is given
+ in this document.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 238]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ TLS provides transport-layer security over connection-oriented
+ protocols (for the purposes of this document, TCP); "tls" (signifying
+ TLS over TCP) can be specified as the desired transport protocol
+ within a Via header field value or a SIP-URI. TLS is most suited to
+ architectures in which hop-by-hop security is required between hosts
+ with no pre-existing trust association. For example, Alice trusts
+ her local proxy server, which after a certificate exchange decides to
+ trust Bob's local proxy server, which Bob trusts, hence Bob and Alice
+ can communicate securely.
+
+ TLS must be tightly coupled with a SIP application. Note that
+ transport mechanisms are specified on a hop-by-hop basis in SIP, thus
+ a UA that sends requests over TLS to a proxy server has no assurance
+ that TLS will be used end-to-end.
+
+ The TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite [6] MUST be supported at
+ a minimum by implementers when TLS is used in a SIP application. For
+ purposes of backwards compatibility, proxy servers, redirect servers,
+ and registrars SHOULD support TLS_RSA_WITH_3DES_EDE_CBC_SHA.
+ Implementers MAY also support any other ciphersuite.
+
+26.2.2 SIPS URI Scheme
+
+ The SIPS URI scheme adheres to the syntax of the SIP URI (described
+ in 19), although the scheme string is "sips" rather than "sip". The
+ semantics of SIPS are very different from the SIP URI, however. SIPS
+ allows resources to specify that they should be reached securely.
+
+ A SIPS URI can be used as an address-of-record for a particular user
+ - the URI by which the user is canonically known (on their business
+ cards, in the From header field of their requests, in the To header
+ field of REGISTER requests). When used as the Request-URI of a
+ request, the SIPS scheme signifies that each hop over which the
+ request is forwarded, until the request reaches the SIP entity
+ responsible for the domain portion of the Request-URI, must be
+ secured with TLS; once it reaches the domain in question it is
+ handled in accordance with local security and routing policy, quite
+ possibly using TLS for any last hop to a UAS. When used by the
+ originator of a request (as would be the case if they employed a SIPS
+ URI as the address-of-record of the target), SIPS dictates that the
+ entire request path to the target domain be so secured.
+
+ The SIPS scheme is applicable to many of the other ways in which SIP
+ URIs are used in SIP today in addition to the Request-URI, including
+ in addresses-of-record, contact addresses (the contents of Contact
+ headers, including those of REGISTER methods), and Route headers. In
+ each instance, the SIPS URI scheme allows these existing fields to
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 239]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ designate secure resources. The manner in which a SIPS URI is
+ dereferenced in any of these contexts has its own security properties
+ which are detailed in [4].
+
+ The use of SIPS in particular entails that mutual TLS authentication
+ SHOULD be employed, as SHOULD the ciphersuite
+ TLS_RSA_WITH_AES_128_CBC_SHA. Certificates received in the
+ authentication process SHOULD be validated with root certificates
+ held by the client; failure to validate a certificate SHOULD result
+ in the failure of the request.
+
+ Note that in the SIPS URI scheme, transport is independent of TLS,
+ and thus "sips:alice@atlanta.com;transport=tcp" and
+ "sips:alice@atlanta.com;transport=sctp" are both valid (although
+ note that UDP is not a valid transport for SIPS). The use of
+ "transport=tls" has consequently been deprecated, partly because
+ it was specific to a single hop of the request. This is a change
+ since RFC 2543.
+
+ Users that distribute a SIPS URI as an address-of-record may elect to
+ operate devices that refuse requests over insecure transports.
+
+26.2.3 HTTP Authentication
+
+ SIP provides a challenge capability, based on HTTP authentication,
+ that relies on the 401 and 407 response codes as well as header
+ fields for carrying challenges and credentials. Without significant
+ modification, the reuse of the HTTP Digest authentication scheme in
+ SIP allows for replay protection and one-way authentication.
+
+ The usage of Digest authentication in SIP is detailed in Section 22.
+
+26.2.4 S/MIME
+
+ As is discussed above, encrypting entire SIP messages end-to-end for
+ the purpose of confidentiality is not appropriate because network
+ intermediaries (like proxy servers) need to view certain header
+ fields in order to route messages correctly, and if these
+ intermediaries are excluded from security associations, then SIP
+ messages will essentially be non-routable.
+
+ However, S/MIME allows SIP UAs to encrypt MIME bodies within SIP,
+ securing these bodies end-to-end without affecting message headers.
+ S/MIME can provide end-to-end confidentiality and integrity for
+ message bodies, as well as mutual authentication. It is also
+ possible to use S/MIME to provide a form of integrity and
+ confidentiality for SIP header fields through SIP message tunneling.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 240]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The usage of S/MIME in SIP is detailed in Section 23.
+
+26.3 Implementing Security Mechanisms
+
+26.3.1 Requirements for Implementers of SIP
+
+ Proxy servers, redirect servers, and registrars MUST implement TLS,
+ and MUST support both mutual and one-way authentication. It is
+ strongly RECOMMENDED that UAs be capable initiating TLS; UAs MAY also
+ be capable of acting as a TLS server. Proxy servers, redirect
+ servers, and registrars SHOULD possess a site certificate whose
+ subject corresponds to their canonical hostname. UAs MAY have
+ certificates of their own for mutual authentication with TLS, but no
+ provisions are set forth in this document for their use. All SIP
+ elements that support TLS MUST have a mechanism for validating
+ certificates received during TLS negotiation; this entails possession
+ of one or more root certificates issued by certificate authorities
+ (preferably well-known distributors of site certificates comparable
+ to those that issue root certificates for web browsers).
+
+ All SIP elements that support TLS MUST also support the SIPS URI
+ scheme.
+
+ Proxy servers, redirect servers, registrars, and UAs MAY also
+ implement IPSec or other lower-layer security protocols.
+
+ When a UA attempts to contact a proxy server, redirect server, or
+ registrar, the UAC SHOULD initiate a TLS connection over which it
+ will send SIP messages. In some architectures, UASs MAY receive
+ requests over such TLS connections as well.
+
+ Proxy servers, redirect servers, registrars, and UAs MUST implement
+ Digest Authorization, encompassing all of the aspects required in 22.
+ Proxy servers, redirect servers, and registrars SHOULD be configured
+ with at least one Digest realm, and at least one "realm" string
+ supported by a given server SHOULD correspond to the server's
+ hostname or domainname.
+
+ UAs MAY support the signing and encrypting of MIME bodies, and
+ transference of credentials with S/MIME as described in Section 23.
+ If a UA holds one or more root certificates of certificate
+ authorities in order to validate certificates for TLS or IPSec, it
+ SHOULD be capable of reusing these to verify S/MIME certificates, as
+ appropriate. A UA MAY hold root certificates specifically for
+ validating S/MIME certificates.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 241]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Note that is it anticipated that future security extensions may
+ upgrade the normative strength associated with S/MIME as S/MIME
+ implementations appear and the problem space becomes better
+ understood.
+
+26.3.2 Security Solutions
+
+ The operation of these security mechanisms in concert can follow the
+ existing web and email security models to some degree. At a high
+ level, UAs authenticate themselves to servers (proxy servers,
+ redirect servers, and registrars) with a Digest username and
+ password; servers authenticate themselves to UAs one hop away, or to
+ another server one hop away (and vice versa), with a site certificate
+ delivered by TLS.
+
+ On a peer-to-peer level, UAs trust the network to authenticate one
+ another ordinarily; however, S/MIME can also be used to provide
+ direct authentication when the network does not, or if the network
+ itself is not trusted.
+
+ The following is an illustrative example in which these security
+ mechanisms are used by various UAs and servers to prevent the sorts
+ of threats described in Section 26.1. While implementers and network
+ administrators MAY follow the normative guidelines given in the
+ remainder of this section, these are provided only as example
+ implementations.
+
+26.3.2.1 Registration
+
+ When a UA comes online and registers with its local administrative
+ domain, it SHOULD establish a TLS connection with its registrar
+ (Section 10 describes how the UA reaches its registrar). The
+ registrar SHOULD offer a certificate to the UA, and the site
+ identified by the certificate MUST correspond with the domain in
+ which the UA intends to register; for example, if the UA intends to
+ register the address-of-record 'alice@atlanta.com', the site
+ certificate must identify a host within the atlanta.com domain (such
+ as sip.atlanta.com). When it receives the TLS Certificate message,
+ the UA SHOULD verify the certificate and inspect the site identified
+ by the certificate. If the certificate is invalid, revoked, or if it
+ does not identify the appropriate party, the UA MUST NOT send the
+ REGISTER message and otherwise proceed with the registration.
+
+ When a valid certificate has been provided by the registrar, the
+ UA knows that the registrar is not an attacker who might redirect
+ the UA, steal passwords, or attempt any similar attacks.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 242]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The UA then creates a REGISTER request that SHOULD be addressed to a
+ Request-URI corresponding to the site certificate received from the
+ registrar. When the UA sends the REGISTER request over the existing
+ TLS connection, the registrar SHOULD challenge the request with a 401
+ (Proxy Authentication Required) response. The "realm" parameter
+ within the Proxy-Authenticate header field of the response SHOULD
+ correspond to the domain previously given by the site certificate.
+ When the UAC receives the challenge, it SHOULD either prompt the user
+ for credentials or take an appropriate credential from a keyring
+ corresponding to the "realm" parameter in the challenge. The
+ username of this credential SHOULD correspond with the "userinfo"
+ portion of the URI in the To header field of the REGISTER request.
+ Once the Digest credentials have been inserted into an appropriate
+ Proxy-Authorization header field, the REGISTER should be resubmitted
+ to the registrar.
+
+ Since the registrar requires the user agent to authenticate
+ itself, it would be difficult for an attacker to forge REGISTER
+ requests for the user's address-of-record. Also note that since
+ the REGISTER is sent over a confidential TLS connection, attackers
+ will not be able to intercept the REGISTER to record credentials
+ for any possible replay attack.
+
+ Once the registration has been accepted by the registrar, the UA
+ SHOULD leave this TLS connection open provided that the registrar
+ also acts as the proxy server to which requests are sent for users in
+ this administrative domain. The existing TLS connection will be
+ reused to deliver incoming requests to the UA that has just completed
+ registration.
+
+ Because the UA has already authenticated the server on the other
+ side of the TLS connection, all requests that come over this
+ connection are known to have passed through the proxy server -
+ attackers cannot create spoofed requests that appear to have been
+ sent through that proxy server.
+
+26.3.2.2 Interdomain Requests
+
+ Now let's say that Alice's UA would like to initiate a session with a
+ user in a remote administrative domain, namely "bob@biloxi.com". We
+ will also say that the local administrative domain (atlanta.com) has
+ a local outbound proxy.
+
+ The proxy server that handles inbound requests for an administrative
+ domain MAY also act as a local outbound proxy; for simplicity's sake
+ we'll assume this to be the case for atlanta.com (otherwise the user
+ agent would initiate a new TLS connection to a separate server at
+ this point). Assuming that the client has completed the registration
+
+
+
+Rosenberg, et. al. Standards Track [Page 243]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ process described in the preceding section, it SHOULD reuse the TLS
+ connection to the local proxy server when it sends an INVITE request
+ to another user. The UA SHOULD reuse cached credentials in the
+ INVITE to avoid prompting the user unnecessarily.
+
+ When the local outbound proxy server has validated the credentials
+ presented by the UA in the INVITE, it SHOULD inspect the Request-URI
+ to determine how the message should be routed (see [4]). If the
+ "domainname" portion of the Request-URI had corresponded to the local
+ domain (atlanta.com) rather than biloxi.com, then the proxy server
+ would have consulted its location service to determine how best to
+ reach the requested user.
+
+ Had "alice@atlanta.com" been attempting to contact, say,
+ "alex@atlanta.com", the local proxy would have proxied to the
+ request to the TLS connection Alex had established with the
+ registrar when he registered. Since Alex would receive this
+ request over his authenticated channel, he would be assured that
+ Alice's request had been authorized by the proxy server of the
+ local administrative domain.
+
+ However, in this instance the Request-URI designates a remote domain.
+ The local outbound proxy server at atlanta.com SHOULD therefore
+ establish a TLS connection with the remote proxy server at
+ biloxi.com. Since both of the participants in this TLS connection
+ are servers that possess site certificates, mutual TLS authentication
+ SHOULD occur. Each side of the connection SHOULD verify and inspect
+ the certificate of the other, noting the domain name that appears in
+ the certificate for comparison with the header fields of SIP
+ messages. The atlanta.com proxy server, for example, SHOULD verify
+ at this stage that the certificate received from the remote side
+ corresponds with the biloxi.com domain. Once it has done so, and TLS
+ negotiation has completed, resulting in a secure channel between the
+ two proxies, the atlanta.com proxy can forward the INVITE request to
+ biloxi.com.
+
+ The proxy server at biloxi.com SHOULD inspect the certificate of the
+ proxy server at atlanta.com in turn and compare the domain asserted
+ by the certificate with the "domainname" portion of the From header
+ field in the INVITE request. The biloxi proxy MAY have a strict
+ security policy that requires it to reject requests that do not match
+ the administrative domain from which they have been proxied.
+
+ Such security policies could be instituted to prevent the SIP
+ equivalent of SMTP 'open relays' that are frequently exploited to
+ generate spam.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 244]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ This policy, however, only guarantees that the request came from the
+ domain it ascribes to itself; it does not allow biloxi.com to
+ ascertain how atlanta.com authenticated Alice. Only if biloxi.com
+ has some other way of knowing atlanta.com's authentication policies
+ could it possibly ascertain how Alice proved her identity.
+ biloxi.com might then institute an even stricter policy that forbids
+ requests that come from domains that are not known administratively
+ to share a common authentication policy with biloxi.com.
+
+ Once the INVITE has been approved by the biloxi proxy, the proxy
+ server SHOULD identify the existing TLS channel, if any, associated
+ with the user targeted by this request (in this case
+ "bob@biloxi.com"). The INVITE should be proxied through this channel
+ to Bob. Since the request is received over a TLS connection that had
+ previously been authenticated as the biloxi proxy, Bob knows that the
+ From header field was not tampered with and that atlanta.com has
+ validated Alice, although not necessarily whether or not to trust
+ Alice's identity.
+
+ Before they forward the request, both proxy servers SHOULD add a
+ Record-Route header field to the request so that all future requests
+ in this dialog will pass through the proxy servers. The proxy
+ servers can thereby continue to provide security services for the
+ lifetime of this dialog. If the proxy servers do not add themselves
+ to the Record-Route, future messages will pass directly end-to-end
+ between Alice and Bob without any security services (unless the two
+ parties agree on some independent end-to-end security such as
+ S/MIME). In this respect the SIP trapezoid model can provide a nice
+ structure where conventions of agreement between the site proxies can
+ provide a reasonably secure channel between Alice and Bob.
+
+ An attacker preying on this architecture would, for example, be
+ unable to forge a BYE request and insert it into the signaling
+ stream between Bob and Alice because the attacker has no way of
+ ascertaining the parameters of the session and also because the
+ integrity mechanism transitively protects the traffic between
+ Alice and Bob.
+
+26.3.2.3 Peer-to-Peer Requests
+
+ Alternatively, consider a UA asserting the identity
+ "carol@chicago.com" that has no local outbound proxy. When Carol
+ wishes to send an INVITE to "bob@biloxi.com", her UA SHOULD initiate
+ a TLS connection with the biloxi proxy directly (using the mechanism
+ described in [4] to determine how to best to reach the given
+ Request-URI). When her UA receives a certificate from the biloxi
+ proxy, it SHOULD be verified normally before she passes her INVITE
+ across the TLS connection. However, Carol has no means of proving
+
+
+
+Rosenberg, et. al. Standards Track [Page 245]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ her identity to the biloxi proxy, but she does have a CMS-detached
+ signature over a "message/sip" body in the INVITE. It is unlikely in
+ this instance that Carol would have any credentials in the biloxi.com
+ realm, since she has no formal association with biloxi.com. The
+ biloxi proxy MAY also have a strict policy that precludes it from
+ even bothering to challenge requests that do not have biloxi.com in
+ the "domainname" portion of the From header field - it treats these
+ users as unauthenticated.
+
+ The biloxi proxy has a policy for Bob that all non-authenticated
+ requests should be redirected to the appropriate contact address
+ registered against 'bob@biloxi.com', namely <sip:bob@192.0.2.4>.
+ Carol receives the redirection response over the TLS connection she
+ established with the biloxi proxy, so she trusts the veracity of the
+ contact address.
+
+ Carol SHOULD then establish a TCP connection with the designated
+ address and send a new INVITE with a Request-URI containing the
+ received contact address (recomputing the signature in the body as
+ the request is readied). Bob receives this INVITE on an insecure
+ interface, but his UA inspects and, in this instance, recognizes the
+ From header field of the request and subsequently matches a locally
+ cached certificate with the one presented in the signature of the
+ body of the INVITE. He replies in similar fashion, authenticating
+ himself to Carol, and a secure dialog begins.
+
+ Sometimes firewalls or NATs in an administrative domain could
+ preclude the establishment of a direct TCP connection to a UA. In
+ these cases, proxy servers could also potentially relay requests
+ to UAs in a way that has no trust implications (for example,
+ forgoing an existing TLS connection and forwarding the request
+ over cleartext TCP) as local policy dictates.
+
+26.3.2.4 DoS Protection
+
+ In order to minimize the risk of a denial-of-service attack against
+ architectures using these security solutions, implementers should
+ take note of the following guidelines.
+
+ When the host on which a SIP proxy server is operating is routable
+ from the public Internet, it SHOULD be deployed in an administrative
+ domain with defensive operational policies (blocking source-routed
+ traffic, preferably filtering ping traffic). Both TLS and IPSec can
+ also make use of bastion hosts at the edges of administrative domains
+ that participate in the security associations to aggregate secure
+ tunnels and sockets. These bastion hosts can also take the brunt of
+ denial-of-service attacks, ensuring that SIP hosts within the
+ administrative domain are not encumbered with superfluous messaging.
+
+
+
+Rosenberg, et. al. Standards Track [Page 246]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ No matter what security solutions are deployed, floods of messages
+ directed at proxy servers can lock up proxy server resources and
+ prevent desirable traffic from reaching its destination. There is a
+ computational expense associated with processing a SIP transaction at
+ a proxy server, and that expense is greater for stateful proxy
+ servers than it is for stateless proxy servers. Therefore, stateful
+ proxies are more susceptible to flooding than stateless proxy
+ servers.
+
+ UAs and proxy servers SHOULD challenge questionable requests with
+ only a single 401 (Unauthorized) or 407 (Proxy Authentication
+ Required), forgoing the normal response retransmission algorithm, and
+ thus behaving statelessly towards unauthenticated requests.
+
+ Retransmitting the 401 (Unauthorized) or 407 (Proxy Authentication
+ Required) status response amplifies the problem of an attacker
+ using a falsified header field value (such as Via) to direct
+ traffic to a third party.
+
+ In summary, the mutual authentication of proxy servers through
+ mechanisms such as TLS significantly reduces the potential for rogue
+ intermediaries to introduce falsified requests or responses that can
+ deny service. This commensurately makes it harder for attackers to
+ make innocent SIP nodes into agents of amplification.
+
+26.4 Limitations
+
+ Although these security mechanisms, when applied in a judicious
+ manner, can thwart many threats, there are limitations in the scope
+ of the mechanisms that must be understood by implementers and network
+ operators.
+
+26.4.1 HTTP Digest
+
+ One of the primary limitations of using HTTP Digest in SIP is that
+ the integrity mechanisms in Digest do not work very well for SIP.
+ Specifically, they offer protection of the Request-URI and the method
+ of a message, but not for any of the header fields that UAs would
+ most likely wish to secure.
+
+ The existing replay protection mechanisms described in RFC 2617 also
+ have some limitations for SIP. The next-nonce mechanism, for
+ example, does not support pipelined requests. The nonce-count
+ mechanism should be used for replay protection.
+
+ Another limitation of HTTP Digest is the scope of realms. Digest is
+ valuable when a user wants to authenticate themselves to a resource
+ with which they have a pre-existing association, like a service
+
+
+
+Rosenberg, et. al. Standards Track [Page 247]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ provider of which the user is a customer (which is quite a common
+ scenario and thus Digest provides an extremely useful function). By
+ way of contrast, the scope of TLS is interdomain or multirealm, since
+ certificates are often globally verifiable, so that the UA can
+ authenticate the server with no pre-existing association.
+
+26.4.2 S/MIME
+
+ The largest outstanding defect with the S/MIME mechanism is the lack
+ of a prevalent public key infrastructure for end users. If self-
+ signed certificates (or certificates that cannot be verified by one
+ of the participants in a dialog) are used, the SIP-based key exchange
+ mechanism described in Section 23.2 is susceptible to a man-in-the-
+ middle attack with which an attacker can potentially inspect and
+ modify S/MIME bodies. The attacker needs to intercept the first
+ exchange of keys between the two parties in a dialog, remove the
+ existing CMS-detached signatures from the request and response, and
+ insert a different CMS-detached signature containing a certificate
+ supplied by the attacker (but which seems to be a certificate for the
+ proper address-of-record). Each party will think they have exchanged
+ keys with the other, when in fact each has the public key of the
+ attacker.
+
+ It is important to note that the attacker can only leverage this
+ vulnerability on the first exchange of keys between two parties - on
+ subsequent occasions, the alteration of the key would be noticeable
+ to the UAs. It would also be difficult for the attacker to remain in
+ the path of all future dialogs between the two parties over time (as
+ potentially days, weeks, or years pass).
+
+ SSH is susceptible to the same man-in-the-middle attack on the first
+ exchange of keys; however, it is widely acknowledged that while SSH
+ is not perfect, it does improve the security of connections. The use
+ of key fingerprints could provide some assistance to SIP, just as it
+ does for SSH. For example, if two parties use SIP to establish a
+ voice communications session, each could read off the fingerprint of
+ the key they received from the other, which could be compared against
+ the original. It would certainly be more difficult for the man-in-
+ the-middle to emulate the voices of the participants than their
+ signaling (a practice that was used with the Clipper chip-based
+ secure telephone).
+
+ The S/MIME mechanism allows UAs to send encrypted requests without
+ preamble if they possess a certificate for the destination address-
+ of-record on their keyring. However, it is possible that any
+ particular device registered for an address-of-record will not hold
+ the certificate that has been previously employed by the device's
+ current user, and that it will therefore be unable to process an
+
+
+
+Rosenberg, et. al. Standards Track [Page 248]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ encrypted request properly, which could lead to some avoidable error
+ signaling. This is especially likely when an encrypted request is
+ forked.
+
+ The keys associated with S/MIME are most useful when associated with
+ a particular user (an address-of-record) rather than a device (a UA).
+ When users move between devices, it may be difficult to transport
+ private keys securely between UAs; how such keys might be acquired by
+ a device is outside the scope of this document.
+
+ Another, more prosaic difficulty with the S/MIME mechanism is that it
+ can result in very large messages, especially when the SIP tunneling
+ mechanism described in Section 23.4 is used. For that reason, it is
+ RECOMMENDED that TCP should be used as a transport protocol when
+ S/MIME tunneling is employed.
+
+26.4.3 TLS
+
+ The most commonly voiced concern about TLS is that it cannot run over
+ UDP; TLS requires a connection-oriented underlying transport
+ protocol, which for the purposes of this document means TCP.
+
+ It may also be arduous for a local outbound proxy server and/or
+ registrar to maintain many simultaneous long-lived TLS connections
+ with numerous UAs. This introduces some valid scalability concerns,
+ especially for intensive ciphersuites. Maintaining redundancy of
+ long-lived TLS connections, especially when a UA is solely
+ responsible for their establishment, could also be cumbersome.
+
+ TLS only allows SIP entities to authenticate servers to which they
+ are adjacent; TLS offers strictly hop-by-hop security. Neither TLS,
+ nor any other mechanism specified in this document, allows clients to
+ authenticate proxy servers to whom they cannot form a direct TCP
+ connection.
+
+26.4.4 SIPS URIs
+
+ Actually using TLS on every segment of a request path entails that
+ the terminating UAS must be reachable over TLS (perhaps registering
+ with a SIPS URI as a contact address). This is the preferred use of
+ SIPS. Many valid architectures, however, use TLS to secure part of
+ the request path, but rely on some other mechanism for the final hop
+ to a UAS, for example. Thus SIPS cannot guarantee that TLS usage
+ will be truly end-to-end. Note that since many UAs will not accept
+ incoming TLS connections, even those UAs that do support TLS may be
+ required to maintain persistent TLS connections as described in the
+ TLS limitations section above in order to receive requests over TLS
+ as a UAS.
+
+
+
+Rosenberg, et. al. Standards Track [Page 249]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Location services are not required to provide a SIPS binding for a
+ SIPS Request-URI. Although location services are commonly populated
+ by user registrations (as described in Section 10.2.1), various other
+ protocols and interfaces could conceivably supply contact addresses
+ for an AOR, and these tools are free to map SIPS URIs to SIP URIs as
+ appropriate. When queried for bindings, a location service returns
+ its contact addresses without regard for whether it received a
+ request with a SIPS Request-URI. If a redirect server is accessing
+ the location service, it is up to the entity that processes the
+ Contact header field of a redirection to determine the propriety of
+ the contact addresses.
+
+ Ensuring that TLS will be used for all of the request segments up to
+ the target domain is somewhat complex. It is possible that
+ cryptographically authenticated proxy servers along the way that are
+ non-compliant or compromised may choose to disregard the forwarding
+ rules associated with SIPS (and the general forwarding rules in
+ Section 16.6). Such malicious intermediaries could, for example,
+ retarget a request from a SIPS URI to a SIP URI in an attempt to
+ downgrade security.
+
+ Alternatively, an intermediary might legitimately retarget a request
+ from a SIP to a SIPS URI. Recipients of a request whose Request-URI
+ uses the SIPS URI scheme thus cannot assume on the basis of the
+ Request-URI alone that SIPS was used for the entire request path
+ (from the client onwards).
+
+ To address these concerns, it is RECOMMENDED that recipients of a
+ request whose Request-URI contains a SIP or SIPS URI inspect the To
+ header field value to see if it contains a SIPS URI (though note that
+ it does not constitute a breach of security if this URI has the same
+ scheme but is not equivalent to the URI in the To header field).
+ Although clients may choose to populate the Request-URI and To header
+ field of a request differently, when SIPS is used this disparity
+ could be interpreted as a possible security violation, and the
+ request could consequently be rejected by its recipient. Recipients
+ MAY also inspect the Via header chain in order to double-check
+ whether or not TLS was used for the entire request path until the
+ local administrative domain was reached. S/MIME may also be used by
+ the originating UAC to help ensure that the original form of the To
+ header field is carried end-to-end.
+
+ If the UAS has reason to believe that the scheme of the Request-URI
+ has been improperly modified in transit, the UA SHOULD notify its
+ user of a potential security breach.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 250]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ As a further measure to prevent downgrade attacks, entities that
+ accept only SIPS requests MAY also refuse connections on insecure
+ ports.
+
+ End users will undoubtedly discern the difference between SIPS and
+ SIP URIs, and they may manually edit them in response to stimuli.
+ This can either benefit or degrade security. For example, if an
+ attacker corrupts a DNS cache, inserting a fake record set that
+ effectively removes all SIPS records for a proxy server, then any
+ SIPS requests that traverse this proxy server may fail. When a user,
+ however, sees that repeated calls to a SIPS AOR are failing, they
+ could on some devices manually convert the scheme from SIPS to SIP
+ and retry. Of course, there are some safeguards against this (if the
+ destination UA is truly paranoid it could refuse all non-SIPS
+ requests), but it is a limitation worth noting. On the bright side,
+ users might also divine that 'SIPS' would be valid even when they are
+ presented only with a SIP URI.
+
+26.5 Privacy
+
+ SIP messages frequently contain sensitive information about their
+ senders - not just what they have to say, but with whom they
+ communicate, when they communicate and for how long, and from where
+ they participate in sessions. Many applications and their users
+ require that this sort of private information be hidden from any
+ parties that do not need to know it.
+
+ Note that there are also less direct ways in which private
+ information can be divulged. If a user or service chooses to be
+ reachable at an address that is guessable from the person's name and
+ organizational affiliation (which describes most addresses-of-
+ record), the traditional method of ensuring privacy by having an
+ unlisted "phone number" is compromised. A user location service can
+ infringe on the privacy of the recipient of a session invitation by
+ divulging their specific whereabouts to the caller; an implementation
+ consequently SHOULD be able to restrict, on a per-user basis, what
+ kind of location and availability information is given out to certain
+ classes of callers. This is a whole class of problem that is
+ expected to be studied further in ongoing SIP work.
+
+ In some cases, users may want to conceal personal information in
+ header fields that convey identity. This can apply not only to the
+ From and related headers representing the originator of the request,
+ but also the To - it may not be appropriate to convey to the final
+ destination a speed-dialing nickname, or an unexpanded identifier for
+ a group of targets, either of which would be removed from the
+ Request-URI as the request is routed, but not changed in the To
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 251]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ header field if the two were initially identical. Thus it MAY be
+ desirable for privacy reasons to create a To header field that
+ differs from the Request-URI.
+
+27 IANA Considerations
+
+ All method names, header field names, status codes, and option tags
+ used in SIP applications are registered with IANA through
+ instructions in an IANA Considerations section in an RFC.
+
+ The specification instructs the IANA to create four new sub-
+ registries under http://www.iana.org/assignments/sip-parameters:
+ Option Tags, Warning Codes (warn-codes), Methods and Response Codes,
+ added to the sub-registry of Header Fields that is already present
+ there.
+
+27.1 Option Tags
+
+ This specification establishes the Option Tags sub-registry under
+ http://www.iana.org/assignments/sip-parameters.
+
+ Option tags are used in header fields such as Require, Supported,
+ Proxy-Require, and Unsupported in support of SIP compatibility
+ mechanisms for extensions (Section 19.2). The option tag itself is a
+ string that is associated with a particular SIP option (that is, an
+ extension). It identifies the option to SIP endpoints.
+
+ Option tags are registered by the IANA when they are published in
+ standards track RFCs. The IANA Considerations section of the RFC
+ must include the following information, which appears in the IANA
+ registry along with the RFC number of the publication.
+
+ o Name of the option tag. The name MAY be of any length, but
+ SHOULD be no more than twenty characters long. The name MUST
+ consist of alphanum (Section 25) characters only.
+
+ o Descriptive text that describes the extension.
+
+27.2 Warn-Codes
+
+ This specification establishes the Warn-codes sub-registry under
+ http://www.iana.org/assignments/sip-parameters and initiates its
+ population with the warn-codes listed in Section 20.43. Additional
+ warn-codes are registered by RFC publication.
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 252]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ The descriptive text for the table of warn-codes is:
+
+ Warning codes provide information supplemental to the status code in
+ SIP response messages when the failure of the transaction results
+ from a Session Description Protocol (SDP) (RFC 2327 [1]) problem.
+
+ The "warn-code" consists of three digits. A first digit of "3"
+ indicates warnings specific to SIP. Until a future specification
+ describes uses of warn-codes other than 3xx, only 3xx warn-codes may
+ be registered.
+
+ Warnings 300 through 329 are reserved for indicating problems with
+ keywords in the session description, 330 through 339 are warnings
+ related to basic network services requested in the session
+ description, 370 through 379 are warnings related to quantitative QoS
+ parameters requested in the session description, and 390 through 399
+ are miscellaneous warnings that do not fall into one of the above
+ categories.
+
+27.3 Header Field Names
+
+ This obsoletes the IANA instructions about the header sub-registry
+ under http://www.iana.org/assignments/sip-parameters.
+
+ The following information needs to be provided in an RFC publication
+ in order to register a new header field name:
+
+ o The RFC number in which the header is registered;
+
+ o the name of the header field being registered;
+
+ o a compact form version for that header field, if one is
+ defined;
+
+ Some common and widely used header fields MAY be assigned one-letter
+ compact forms (Section 7.3.3). Compact forms can only be assigned
+ after SIP working group review, followed by RFC publication.
+
+27.4 Method and Response Codes
+
+ This specification establishes the Method and Response-Code sub-
+ registries under http://www.iana.org/assignments/sip-parameters and
+ initiates their population as follows. The initial Methods table is:
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 253]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ INVITE [RFC3261]
+ ACK [RFC3261]
+ BYE [RFC3261]
+ CANCEL [RFC3261]
+ REGISTER [RFC3261]
+ OPTIONS [RFC3261]
+ INFO [RFC2976]
+
+ The response code table is initially populated from Section 21, the
+ portions labeled Informational, Success, Redirection, Client-Error,
+ Server-Error, and Global-Failure. The table has the following
+ format:
+
+ Type (e.g., Informational)
+ Number Default Reason Phrase [RFC3261]
+
+ The following information needs to be provided in an RFC publication
+ in order to register a new response code or method:
+
+ o The RFC number in which the method or response code is
+ registered;
+
+ o the number of the response code or name of the method being
+ registered;
+
+ o the default reason phrase for that response code, if
+ applicable;
+
+27.5 The "message/sip" MIME type.
+
+ This document registers the "message/sip" MIME media type in order to
+ allow SIP messages to be tunneled as bodies within SIP, primarily for
+ end-to-end security purposes. This media type is defined by the
+ following information:
+
+ Media type name: message
+ Media subtype name: sip
+ Required parameters: none
+
+ Optional parameters: version
+ version: The SIP-Version number of the enclosed message (e.g.,
+ "2.0"). If not present, the version defaults to "2.0".
+ Encoding scheme: SIP messages consist of an 8-bit header
+ optionally followed by a binary MIME data object. As such, SIP
+ messages must be treated as binary. Under normal circumstances
+ SIP messages are transported over binary-capable transports, no
+ special encodings are needed.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 254]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Security considerations: see below
+ Motivation and examples of this usage as a security mechanism
+ in concert with S/MIME are given in 23.4.
+
+27.6 New Content-Disposition Parameter Registrations
+
+ This document also registers four new Content-Disposition header
+ "disposition-types": alert, icon, session and render. The authors
+ request that these values be recorded in the IANA registry for
+ Content-Dispositions.
+
+ Descriptions of these "disposition-types", including motivation and
+ examples, are given in Section 20.11.
+
+ Short descriptions suitable for the IANA registry are:
+
+ alert the body is a custom ring tone to alert the user
+ icon the body is displayed as an icon to the user
+ render the body should be displayed to the user
+ session the body describes a communications session, for
+ example, as RFC 2327 SDP body
+
+28 Changes From RFC 2543
+
+ This RFC revises RFC 2543. It is mostly backwards compatible with
+ RFC 2543. The changes described here fix many errors discovered in
+ RFC 2543 and provide information on scenarios not detailed in RFC
+ 2543. The protocol has been presented in a more cleanly layered
+ model here.
+
+ We break the differences into functional behavior that is a
+ substantial change from RFC 2543, which has impact on
+ interoperability or correct operation in some cases, and functional
+ behavior that is different from RFC 2543 but not a potential source
+ of interoperability problems. There have been countless
+ clarifications as well, which are not documented here.
+
+28.1 Major Functional Changes
+
+ o When a UAC wishes to terminate a call before it has been answered,
+ it sends CANCEL. If the original INVITE still returns a 2xx, the
+ UAC then sends BYE. BYE can only be sent on an existing call leg
+ (now called a dialog in this RFC), whereas it could be sent at any
+ time in RFC 2543.
+
+ o The SIP BNF was converted to be RFC 2234 compliant.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 255]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ o SIP URL BNF was made more general, allowing a greater set of
+ characters in the user part. Furthermore, comparison rules were
+ simplified to be primarily case-insensitive, and detailed handling
+ of comparison in the presence of parameters was described. The
+ most substantial change is that a URI with a parameter with the
+ default value does not match a URI without that parameter.
+
+ o Removed Via hiding. It had serious trust issues, since it relied
+ on the next hop to perform the obfuscation process. Instead, Via
+ hiding can be done as a local implementation choice in stateful
+ proxies, and thus is no longer documented.
+
+ o In RFC 2543, CANCEL and INVITE transactions were intermingled.
+ They are separated now. When a user sends an INVITE and then a
+ CANCEL, the INVITE transaction still terminates normally. A UAS
+ needs to respond to the original INVITE request with a 487
+ response.
+
+ o Similarly, CANCEL and BYE transactions were intermingled; RFC 2543
+ allowed the UAS not to send a response to INVITE when a BYE was
+ received. That is disallowed here. The original INVITE needs a
+ response.
+
+ o In RFC 2543, UAs needed to support only UDP. In this RFC, UAs
+ need to support both UDP and TCP.
+
+ o In RFC 2543, a forking proxy only passed up one challenge from
+ downstream elements in the event of multiple challenges. In this
+ RFC, proxies are supposed to collect all challenges and place them
+ into the forwarded response.
+
+ o In Digest credentials, the URI needs to be quoted; this is unclear
+ from RFC 2617 and RFC 2069 which are both inconsistent on it.
+
+ o SDP processing has been split off into a separate specification
+ [13], and more fully specified as a formal offer/answer exchange
+ process that is effectively tunneled through SIP. SDP is allowed
+ in INVITE/200 or 200/ACK for baseline SIP implementations; RFC
+ 2543 alluded to the ability to use it in INVITE, 200, and ACK in a
+ single transaction, but this was not well specified. More complex
+ SDP usages are allowed in extensions.
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 256]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ o Added full support for IPv6 in URIs and in the Via header field.
+ Support for IPv6 in Via has required that its header field
+ parameters allow the square bracket and colon characters. These
+ characters were previously not permitted. In theory, this could
+ cause interop problems with older implementations. However, we
+ have observed that most implementations accept any non-control
+ ASCII character in these parameters.
+
+ o DNS SRV procedure is now documented in a separate specification
+ [4]. This procedure uses both SRV and NAPTR resource records and
+ no longer combines data from across SRV records as described in
+ RFC 2543.
+
+ o Loop detection has been made optional, supplanted by a mandatory
+ usage of Max-Forwards. The loop detection procedure in RFC 2543
+ had a serious bug which would report "spirals" as an error
+ condition when it was not. The optional loop detection procedure
+ is more fully and correctly specified here.
+
+ o Usage of tags is now mandatory (they were optional in RFC 2543),
+ as they are now the fundamental building blocks of dialog
+ identification.
+
+ o Added the Supported header field, allowing for clients to indicate
+ what extensions are supported to a server, which can apply those
+ extensions to the response, and indicate their usage with a
+ Require in the response.
+
+ o Extension parameters were missing from the BNF for several header
+ fields, and they have been added.
+
+ o Handling of Route and Record-Route construction was very
+ underspecified in RFC 2543, and also not the right approach. It
+ has been substantially reworked in this specification (and made
+ vastly simpler), and this is arguably the largest change.
+ Backwards compatibility is still provided for deployments that do
+ not use "pre-loaded routes", where the initial request has a set
+ of Route header field values obtained in some way outside of
+ Record-Route. In those situations, the new mechanism is not
+ interoperable.
+
+ o In RFC 2543, lines in a message could be terminated with CR, LF,
+ or CRLF. This specification only allows CRLF.
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 257]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ o Usage of Route in CANCEL and ACK was not well defined in RFC 2543.
+ It is now well specified; if a request had a Route header field,
+ its CANCEL or ACK for a non-2xx response to the request need to
+ carry the same Route header field values. ACKs for 2xx responses
+ use the Route values learned from the Record-Route of the 2xx
+ responses.
+
+ o RFC 2543 allowed multiple requests in a single UDP packet. This
+ usage has been removed.
+
+ o Usage of absolute time in the Expires header field and parameter
+ has been removed. It caused interoperability problems in elements
+ that were not time synchronized, a common occurrence. Relative
+ times are used instead.
+
+ o The branch parameter of the Via header field value is now
+ mandatory for all elements to use. It now plays the role of a
+ unique transaction identifier. This avoids the complex and bug-
+ laden transaction identification rules from RFC 2543. A magic
+ cookie is used in the parameter value to determine if the previous
+ hop has made the parameter globally unique, and comparison falls
+ back to the old rules when it is not present. Thus,
+ interoperability is assured.
+
+ o In RFC 2543, closure of a TCP connection was made equivalent to a
+ CANCEL. This was nearly impossible to implement (and wrong) for
+ TCP connections between proxies. This has been eliminated, so
+ that there is no coupling between TCP connection state and SIP
+ processing.
+
+ o RFC 2543 was silent on whether a UA could initiate a new
+ transaction to a peer while another was in progress. That is now
+ specified here. It is allowed for non-INVITE requests, disallowed
+ for INVITE.
+
+ o PGP was removed. It was not sufficiently specified, and not
+ compatible with the more complete PGP MIME. It was replaced with
+ S/MIME.
+
+ o Added the "sips" URI scheme for end-to-end TLS. This scheme is
+ not backwards compatible with RFC 2543. Existing elements that
+ receive a request with a SIPS URI scheme in the Request-URI will
+ likely reject the request. This is actually a feature; it ensures
+ that a call to a SIPS URI is only delivered if all path hops can
+ be secured.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 258]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ o Additional security features were added with TLS, and these are
+ described in a much larger and complete security considerations
+ section.
+
+ o In RFC 2543, a proxy was not required to forward provisional
+ responses from 101 to 199 upstream. This was changed to MUST.
+ This is important, since many subsequent features depend on
+ delivery of all provisional responses from 101 to 199.
+
+ o Little was said about the 503 response code in RFC 2543. It has
+ since found substantial use in indicating failure or overload
+ conditions in proxies. This requires somewhat special treatment.
+ Specifically, receipt of a 503 should trigger an attempt to
+ contact the next element in the result of a DNS SRV lookup. Also,
+ 503 response is only forwarded upstream by a proxy under certain
+ conditions.
+
+ o RFC 2543 defined, but did no sufficiently specify, a mechanism for
+ UA authentication of a server. That has been removed. Instead,
+ the mutual authentication procedures of RFC 2617 are allowed.
+
+ o A UA cannot send a BYE for a call until it has received an ACK for
+ the initial INVITE. This was allowed in RFC 2543 but leads to a
+ potential race condition.
+
+ o A UA or proxy cannot send CANCEL for a transaction until it gets a
+ provisional response for the request. This was allowed in RFC
+ 2543 but leads to potential race conditions.
+
+ o The action parameter in registrations has been deprecated. It was
+ insufficient for any useful services, and caused conflicts when
+ application processing was applied in proxies.
+
+ o RFC 2543 had a number of special cases for multicast. For
+ example, certain responses were suppressed, timers were adjusted,
+ and so on. Multicast now plays a more limited role, and the
+ protocol operation is unaffected by usage of multicast as opposed
+ to unicast. The limitations as a result of that are documented.
+
+ o Basic authentication has been removed entirely and its usage
+ forbidden.
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 259]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ o Proxies no longer forward a 6xx immediately on receiving it.
+ Instead, they CANCEL pending branches immediately. This avoids a
+ potential race condition that would result in a UAC getting a 6xx
+ followed by a 2xx. In all cases except this race condition, the
+ result will be the same - the 6xx is forwarded upstream.
+
+ o RFC 2543 did not address the problem of request merging. This
+ occurs when a request forks at a proxy and later rejoins at an
+ element. Handling of merging is done only at a UA, and procedures
+ are defined for rejecting all but the first request.
+
+28.2 Minor Functional Changes
+
+ o Added the Alert-Info, Error-Info, and Call-Info header fields for
+ optional content presentation to users.
+
+ o Added the Content-Language, Content-Disposition and MIME-Version
+ header fields.
+
+ o Added a "glare handling" mechanism to deal with the case where
+ both parties send each other a re-INVITE simultaneously. It uses
+ the new 491 (Request Pending) error code.
+
+ o Added the In-Reply-To and Reply-To header fields for supporting
+ the return of missed calls or messages at a later time.
+
+ o Added TLS and SCTP as valid SIP transports.
+
+ o There were a variety of mechanisms described for handling failures
+ at any time during a call; those are now generally unified. BYE
+ is sent to terminate.
+
+ o RFC 2543 mandated retransmission of INVITE responses over TCP, but
+ noted it was really only needed for 2xx. That was an artifact of
+ insufficient protocol layering. With a more coherent transaction
+ layer defined here, that is no longer needed. Only 2xx responses
+ to INVITEs are retransmitted over TCP.
+
+ o Client and server transaction machines are now driven based on
+ timeouts rather than retransmit counts. This allows the state
+ machines to be properly specified for TCP and UDP.
+
+ o The Date header field is used in REGISTER responses to provide a
+ simple means for auto-configuration of dates in user agents.
+
+ o Allowed a registrar to reject registrations with expirations that
+ are too short in duration. Defined the 423 response code and the
+ Min-Expires for this purpose.
+
+
+
+Rosenberg, et. al. Standards Track [Page 260]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+29 Normative References
+
+ [1] Handley, M. and V. Jacobson, "SDP: Session Description
+ Protocol", RFC 2327, April 1998.
+
+ [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
+ Levels", BCP 14, RFC 2119, March 1997.
+
+ [3] Resnick, P., "Internet Message Format", RFC 2822, April 2001.
+
+ [4] Rosenberg, J. and H. Schulzrinne, "SIP: Locating SIP Servers",
+ RFC 3263, June 2002.
+
+ [5] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource
+ Identifiers (URI): Generic Syntax", RFC 2396, August 1998.
+
+ [6] Chown, P., "Advanced Encryption Standard (AES) Ciphersuites for
+ Transport Layer Security (TLS)", RFC 3268, June 2002.
+
+ [7] Yergeau, F., "UTF-8, a transformation format of ISO 10646", RFC
+ 2279, January 1998.
+
+ [8] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L.,
+ Leach, P. and T. Berners-Lee, "Hypertext Transfer Protocol --
+ HTTP/1.1", RFC 2616, June 1999.
+
+ [9] Vaha-Sipila, A., "URLs for Telephone Calls", RFC 2806, April
+ 2000.
+
+ [10] Crocker, D. and P. Overell, "Augmented BNF for Syntax
+ Specifications: ABNF", RFC 2234, November 1997.
+
+ [11] Freed, F. and N. Borenstein, "Multipurpose Internet Mail
+ Extensions (MIME) Part Two: Media Types", RFC 2046, November
+ 1996.
+
+ [12] Eastlake, D., Crocker, S. and J. Schiller, "Randomness
+ Recommendations for Security", RFC 1750, December 1994.
+
+ [13] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with
+ SDP", RFC 3264, June 2002.
+
+ [14] Postel, J., "User Datagram Protocol", STD 6, RFC 768, August
+ 1980.
+
+ [15] Postel, J., "DoD Standard Transmission Control Protocol", RFC
+ 761, January 1980.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 261]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ [16] Stewart, R., Xie, Q., Morneault, K., Sharp, C., Schwarzbauer,
+ H., Taylor, T., Rytina, I., Kalla, M., Zhang, L. and V. Paxson,
+ "Stream Control Transmission Protocol", RFC 2960, October 2000.
+
+ [17] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S.,
+ Leach, P., Luotonen, A. and L. Stewart, "HTTP authentication:
+ Basic and Digest Access Authentication", RFC 2617, June 1999.
+
+ [18] Troost, R., Dorner, S. and K. Moore, "Communicating Presentation
+ Information in Internet Messages: The Content-Disposition Header
+ Field", RFC 2183, August 1997.
+
+ [19] Zimmerer, E., Peterson, J., Vemuri, A., Ong, L., Audet, F.,
+ Watson, M. and M. Zonoun, "MIME media types for ISUP and QSIG
+ Objects", RFC 3204, December 2001.
+
+ [20] Braden, R., "Requirements for Internet Hosts - Application and
+ Support", STD 3, RFC 1123, October 1989.
+
+ [21] Alvestrand, H., "IETF Policy on Character Sets and Languages",
+ BCP 18, RFC 2277, January 1998.
+
+ [22] Galvin, J., Murphy, S., Crocker, S. and N. Freed, "Security
+ Multiparts for MIME: Multipart/Signed and Multipart/Encrypted",
+ RFC 1847, October 1995.
+
+ [23] Housley, R., "Cryptographic Message Syntax", RFC 2630, June
+ 1999.
+
+ [24] Ramsdell B., "S/MIME Version 3 Message Specification", RFC 2633,
+ June 1999.
+
+ [25] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC
+ 2246, January 1999.
+
+ [26] Kent, S. and R. Atkinson, "Security Architecture for the
+ Internet Protocol", RFC 2401, November 1998.
+
+30 Informative References
+
+ [27] R. Pandya, "Emerging mobile and personal communication systems,"
+ IEEE Communications Magazine, Vol. 33, pp. 44--52, June 1995.
+
+ [28] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson,
+ "RTP: A Transport Protocol for Real-Time Applications", RFC
+ 1889, January 1996.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 262]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ [29] Schulzrinne, H., Rao, R. and R. Lanphier, "Real Time Streaming
+ Protocol (RTSP)", RFC 2326, April 1998.
+
+ [30] Cuervo, F., Greene, N., Rayhan, A., Huitema, C., Rosen, B. and
+ J. Segers, "Megaco Protocol Version 1.0", RFC 3015, November
+ 2000.
+
+ [31] Handley, M., Schulzrinne, H., Schooler, E. and J. Rosenberg,
+ "SIP: Session Initiation Protocol", RFC 2543, March 1999.
+
+ [32] Hoffman, P., Masinter, L. and J. Zawinski, "The mailto URL
+ scheme", RFC 2368, July 1998.
+
+ [33] E. M. Schooler, "A multicast user directory service for
+ synchronous rendezvous," Master's Thesis CS-TR-96-18, Department
+ of Computer Science, California Institute of Technology,
+ Pasadena, California, Aug. 1996.
+
+ [34] Donovan, S., "The SIP INFO Method", RFC 2976, October 2000.
+
+ [35] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, April
+ 1992.
+
+ [36] Dawson, F. and T. Howes, "vCard MIME Directory Profile", RFC
+ 2426, September 1998.
+
+ [37] Good, G., "The LDAP Data Interchange Format (LDIF) - Technical
+ Specification", RFC 2849, June 2000.
+
+ [38] Palme, J., "Common Internet Message Headers", RFC 2076,
+ February 1997.
+
+ [39] Franks, J., Hallam-Baker, P., Hostetler, J., Leach, P.,
+ Luotonen, A., Sink, E. and L. Stewart, "An Extension to HTTP:
+ Digest Access Authentication", RFC 2069, January 1997.
+
+ [40] Johnston, A., Donovan, S., Sparks, R., Cunningham, C., Willis,
+ D., Rosenberg, J., Summers, K. and H. Schulzrinne, "SIP Call
+ Flow Examples", Work in Progress.
+
+ [41] E. M. Schooler, "Case study: multimedia conference control in a
+ packet-switched teleconferencing system," Journal of
+ Internetworking: Research and Experience, Vol. 4, pp. 99--120,
+ June 1993. ISI reprint series ISI/RS-93-359.
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 263]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ [42] H. Schulzrinne, "Personal mobility for multimedia services in
+ the Internet," in European Workshop on Interactive Distributed
+ Multimedia Systems and Services (IDMS), (Berlin, Germany), Mar.
+ 1996.
+
+ [43] Floyd, S., "Congestion Control Principles", RFC 2914, September
+ 2000.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 264]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+A Table of Timer Values
+
+ Table 4 summarizes the meaning and defaults of the various timers
+ used by this specification.
+
+Timer Value Section Meaning
+----------------------------------------------------------------------
+T1 500ms default Section 17.1.1.1 RTT Estimate
+T2 4s Section 17.1.2.2 The maximum retransmit
+ interval for non-INVITE
+ requests and INVITE
+ responses
+T4 5s Section 17.1.2.2 Maximum duration a
+ message will
+ remain in the network
+Timer A initially T1 Section 17.1.1.2 INVITE request retransmit
+ interval, for UDP only
+Timer B 64*T1 Section 17.1.1.2 INVITE transaction
+ timeout timer
+Timer C > 3min Section 16.6 proxy INVITE transaction
+ bullet 11 timeout
+Timer D > 32s for UDP Section 17.1.1.2 Wait time for response
+ 0s for TCP/SCTP retransmits
+Timer E initially T1 Section 17.1.2.2 non-INVITE request
+ retransmit interval,
+ UDP only
+Timer F 64*T1 Section 17.1.2.2 non-INVITE transaction
+ timeout timer
+Timer G initially T1 Section 17.2.1 INVITE response
+ retransmit interval
+Timer H 64*T1 Section 17.2.1 Wait time for
+ ACK receipt
+Timer I T4 for UDP Section 17.2.1 Wait time for
+ 0s for TCP/SCTP ACK retransmits
+Timer J 64*T1 for UDP Section 17.2.2 Wait time for
+ 0s for TCP/SCTP non-INVITE request
+ retransmits
+Timer K T4 for UDP Section 17.1.2.2 Wait time for
+ 0s for TCP/SCTP response retransmits
+
+ Table 4: Summary of timers
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 265]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+Acknowledgments
+
+ We wish to thank the members of the IETF MMUSIC and SIP WGs for their
+ comments and suggestions. Detailed comments were provided by Ofir
+ Arkin, Brian Bidulock, Jim Buller, Neil Deason, Dave Devanathan,
+ Keith Drage, Bill Fenner, Cedric Fluckiger, Yaron Goland, John
+ Hearty, Bernie Hoeneisen, Jo Hornsby, Phil Hoffer, Christian Huitema,
+ Hisham Khartabil, Jean Jervis, Gadi Karmi, Peter Kjellerstedt, Anders
+ Kristensen, Jonathan Lennox, Gethin Liddell, Allison Mankin, William
+ Marshall, Rohan Mahy, Keith Moore, Vern Paxson, Bob Penfield, Moshe
+ J. Sambol, Chip Sharp, Igor Slepchin, Eric Tremblay, and Rick
+ Workman.
+
+ Brian Rosen provided the compiled BNF.
+
+ Jean Mahoney provided technical writing assistance.
+
+ This work is based, inter alia, on [41,42].
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 266]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+Authors' Addresses
+
+ Authors addresses are listed alphabetically for the editors, the
+ writers, and then the original authors of RFC 2543. All listed
+ authors actively contributed large amounts of text to this document.
+
+ Jonathan Rosenberg
+ dynamicsoft
+ 72 Eagle Rock Ave
+ East Hanover, NJ 07936
+ USA
+
+ EMail: jdrosen@dynamicsoft.com
+
+
+ Henning Schulzrinne
+ Dept. of Computer Science
+ Columbia University
+ 1214 Amsterdam Avenue
+ New York, NY 10027
+ USA
+
+ EMail: schulzrinne@cs.columbia.edu
+
+
+ Gonzalo Camarillo
+ Ericsson
+ Advanced Signalling Research Lab.
+ FIN-02420 Jorvas
+ Finland
+
+ EMail: Gonzalo.Camarillo@ericsson.com
+
+
+ Alan Johnston
+ WorldCom
+ 100 South 4th Street
+ St. Louis, MO 63102
+ USA
+
+ EMail: alan.johnston@wcom.com
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 267]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+ Jon Peterson
+ NeuStar, Inc
+ 1800 Sutter Street, Suite 570
+ Concord, CA 94520
+ USA
+
+ EMail: jon.peterson@neustar.com
+
+
+ Robert Sparks
+ dynamicsoft, Inc.
+ 5100 Tennyson Parkway
+ Suite 1200
+ Plano, Texas 75024
+ USA
+
+ EMail: rsparks@dynamicsoft.com
+
+
+ Mark Handley
+ International Computer Science Institute
+ 1947 Center St, Suite 600
+ Berkeley, CA 94704
+ USA
+
+ EMail: mjh@icir.org
+
+
+ Eve Schooler
+ AT&T Labs-Research
+ 75 Willow Road
+ Menlo Park, CA 94025
+ USA
+
+ EMail: schooler@research.att.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 268]
+
+RFC 3261 SIP: Session Initiation Protocol June 2002
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2002). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 269]
+
diff --git a/tests/auto/corelib/io/qtextstream/shift-jis.txt b/tests/auto/corelib/io/qtextstream/shift-jis.txt
new file mode 100644
index 0000000000..51f161ab1a
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/shift-jis.txt
@@ -0,0 +1,764 @@
+Shift-JISƒeƒLƒXƒg‚𳂵‚­ˆµ‚¤
+Å‹ß‚ÌXV—š—ð
+2005-03-26: uʼn‚Év’†AXML“ú–{Œêƒvƒƒtƒ@ƒCƒ‹‘æ2”Å‚ÉŠî‚«AŽáŠ±’Ç‹LB
+2005-03-09: uʼn‚Év’†A•¶Í‚ðŽáŠ±C³B
+2003-06-24: Shift-JIS‚ÌŠ¿Žš‚ðŠÜ‚Þƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼
+2003-05-31: uʼn‚Év’†AuƒVƒtƒgJISv‚È‚Ç‚Ì•\‹L‚ɂ‚¢‚ÄB
+2003-05-24: CP932d•¡’è‹`•¶Žš‚Ì•ÏŠ·
+2002-08-30: Perl 5.8.0 ‚ɂ‚¢‚ÄB
+2002-01-17: ’·‚¢•¶Žš—ñ‚ɑ΂·‚鳋K•\Œ»ŒŸõ
+2001-12-15: ShiftJIS::Collate ‚ª overrideCJK ƒpƒ‰ƒ[ƒ^‚ð”pŽ~‚µ‚½‚±‚Æ‚É”º‚¤ “ú–{Œê•¶Žš—ñ‚ð•À‚Ñ‘Ö‚¦‚é‚Ì‘‚«Š·‚¦B
+ʼn‚É
+‚ ‚肪‚¿‚ȃGƒ‰[
+ƒGƒ‰[‚âŠÔˆá‚¢‚ð–h‚®‘Îô
+•¶Žš—ñƒŠƒeƒ‰ƒ‹‚Ìì‚è•û
+³‹K•\Œ»‚ƃ}ƒbƒ`
+ƒOƒ[ƒoƒ‹ƒ}ƒbƒ`
+ƒAƒ‹ƒtƒ@ƒxƒbƒg‚̑啶Žš‚Ƭ•¶Žš
+’·‚¢•¶Žš—ñ‚ɑ΂·‚鳋K•\Œ»ŒŸõ
+ŠOŽš‚Ì•ÏŠ·
+CP932d•¡’è‹`•¶Žš‚Ì•ÏŠ·
+•¶Žš”‚𔂦‚é
+•¶Žš’PˆÊ‚É•ªŠ„‚·‚é
+‚¢‚ë‚¢‚ë‚È•ªŠ„
+“Á’è‚Ì’·‚³‚ÅØ‚è‚»‚낦‚é
+“ú–{Œê•¶Žš—ñ‚ð•À‚Ñ‘Ö‚¦‚é
+Shift-JIS‚ÌŠ¿Žš‚ðŠÜ‚Þƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼
+ʼn‚É
+“ú–{Œê‚Ì•¶ŽšƒR[ƒh‚É‚Í‚¢‚­‚‚©‚Ì‚à‚Ì‚ªŽg‚í‚ê‚Ä‚¢‚Ü‚·B‚ ‚é’ö“xˆê”Ê“I‚È‚à‚Ì‚È‚çA‚Ç‚ê‚ðŽg‚Á‚Ä‚à‚æ‚¢‚Å‚µ‚傤i‚Ç‚Ì•¶ŽšƒR[ƒh‚Å•„†‰»‚³‚ê‚Ä‚¢‚é‚©‚Ìî•ñ‚ªŽ¸‚í‚ꂳ‚¦‚µ‚È‚¯‚ê‚ÎjB
+—Ⴆ‚ÎA“ú–{Œê”ÅWindows‚Å‚ÍAƒƒ‚’ ‚Å‚àDOS‘‹‚Å‚àShift-JIS‚ªŽg‚í‚ê‚Ä‚¢‚Ü‚·B‚±‚¤‚¢‚¤ê‡Aˆ—‚Ì“r’†‚Å‚í‚´‚í‚´EUC-JP‚âUTF-8‚É•ÏŠ·‚·‚é‚Æ‚µ‚½‚ç–Ê“|‚Å‚·BƒfƒoƒbƒO‚Ì‚Æ‚«Au‚±‚Ì’iŠK‚Å‚Í‚±‚Ì•Ï”‚ɂ͉½‚ª“ü‚Á‚Ä‚¢‚é‚Ì‚©vo—Í‚µ‚Ä“_ŒŸ‚·‚é‚Ì‚Í‚æ‚­s‚í‚ê‚Ü‚·‚ªA‚±‚Ì‚Æ‚«EUC-JP‚Æ‚µ‚ÄŽû‚ß‚ç‚ê‚Ä‚¢‚½‚çAì‹Æ‚ÍŽèŠÔ‚Ç‚é‚Å‚µ‚傤B“ü—Í‚ào—Í‚àShift-JIS‚Ås‚¤‚‚à‚è‚È‚çAˆ—‚Ì‘S‘Ì‚ÅShift-JIS‚̂܂܈µ‚¦‚½‚ç‚«‚Á‚Æ•Ö—˜‚Å‚µ‚傤B
+’F "ƒVƒtƒgJIS", "Shift_JIS", "Shift-JIS" ‚È‚Ç‚Ì•\‹L‚̈Ⴂ‚ɂ‚¢‚Ä‚Í‚æ‚­‚í‚©‚Á‚Ä‚¢‚Ü‚¹‚ñB¡‚Ì‚Æ‚±‚땪‚©‚Á‚Ä‚¢‚邱‚Æ‚ÍF
+JIS X 0208:1997‚Ì•‘®‘1iƒVƒtƒg•„†‰»•\Œ»j‚É‚ÍAuŽQlv‚Æ‚µ‚Äu‚±‚Ì•„†‰»•\Œ»‚Í’ÊígƒVƒtƒgJISƒR[ƒhh‚ƌĂ΂ê‚Ä‚¢‚év‚Ì‹Lq‚ª‚ ‚è‚Ü‚·B
+IANA ‚Ì CHARACTER SETS ‚É‚ÍAShift_JIS ‚Æ Windows-31J ‚Æ‚ª•Ê‚É“o˜^‚³‚ê‚Ä‚¢‚Ü‚·B‚Ü‚½AShift_JIS‚ɂ‚¢‚ÄAuCCSi•„†‰»•¶ŽšW‡j‚ÍJIS X0201:1997‚ÆJIS X0208:1997‚Å‚ ‚èAŠ®‘S‚È’è‹`‚ÍJIS X 0208:1997‚Ì•‘®‘1‚ÉŽ¦‚³‚ê‚Ä‚¢‚éBv‚Æ‹L‚µ‚Ä‚¢‚Ü‚·B
+W3C ‚Ì XML Japanese Profile ‚É‚ÍAShift-JIS‚ÉUnicode‚Ö‚Ì•ÏŠ·•\‚ª•¡”‚ ‚éŽ|‚Ì‹LÚ‚ª‚ ‚è‚Ü‚·BXML Japanese Profile (Second Edition)‚Å‚ÍAUnicode Consortium‚ÅŒöŠJ‚³‚ê‚Ä‚¢‚éMicrosoft CP932‚Ì•ÏŠ·•\‚É‚æ‚écharset‚Ì–¼Ì "x-sjis-cp932" ‚ð "Windows-31J" ‚É•ÏX‚µ‚Ä‚¢‚Ü‚·B
+MicrosoftŽÐ‚Ì Global Dev ‚Å‚ÍACodepage 932 ‚ð "Japanese Shift-JIS" ‚Æ’‹L‚µ‚Ä‚¢‚Ü‚·B
+‚µ‚©‚µAShift-JIS‚É‚Í‚ ‚éŽí‚Ì•È‚ª‚ ‚Á‚ÄA‚¿‚å‚Á‚Æ‚µ‚½‚±‚Æ‚ªƒoƒO‚âƒGƒ‰[‚╶Žš‰»‚¯‚ÌŒ´ˆö‚Æ‚È‚è‚Ü‚·B‚È‚ñ‚Æ‚©‚È‚ç‚È‚¢‚à‚Ì‚Å‚µ‚傤‚©B
+Perl‚ͧŒä•¶Žš‚âƒiƒ‹•¶Žš‚ðŠÜ‚ÞƒoƒCƒiƒŠƒf[ƒ^‚Å‚·‚糂µ‚­ˆ—‚Å‚«‚é‚悤‚ÉÝŒv‚³‚ê‚Ä‚¢‚é‚Ì‚ÅAƒXƒNƒŠƒvƒg‚âƒeƒLƒXƒg‚ðShift-JIS‚Å‘‚¢‚½‚­‚ç‚¢‚Å–â‘è‚ɂȂ邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB
+‚µ‚©‚µAperl‚ªƒXƒNƒŠƒvƒg‚ð‰ðŽß‚·‚é‚Æ‚«‚Íi’ÊíjƒoƒCƒg’PˆÊ‚Å’²‚ׂé‚Ì‚ÅAShift-JIS‚̂悤‚ȃ}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚ðŠÜ‚Þ•„†‚Í‚»‚Ì‚Ü‚Ü‚Å‚Í’¼Ú—‰ð‚Å‚«‚Ü‚¹‚ñB
+‚½‚Æ‚¦‚ÎAShift-JIS‚Å '‚ ' ‚Æ‚¢‚¤•¶Žš‚ÍA16i”‚Å82 A0‚Æ‚¢‚¤‚QƒoƒCƒg‚Å•\‚³‚ê‚Ü‚·B‚±‚ê‚ð "\x82\xA0" ‚Æ‘‚¢‚Ä‚àperl‚É‚Æ‚Á‚Ä‚Í“¯‚¶‚Å‚·B‚±‚ꂪ“ú–{‚Ìicountryj“ú–{Œê‚Ìilanguagej•¶Žš‚Å‚ ‚é‚Æ‚©AShift-JIS‚Å‘‚©‚ê‚Ä‚¢‚éicharsetj‚Æ‚©‚¢‚¤î•ñ‚Í‚Ç‚±‚É‚àŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚¹‚ñB
+‚»‚Ì‚½‚ßAShift-JIS‚Å‘‚«‚½‚¢‚Æ‚«‚É‚ÍAperl‚ÌŒë‰ð‚ðŽó‚¯‚È‚¢‚悤‚É‘‚¢‚Ä‚â‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚»‚Ì”z—¶‚ÍAƒvƒƒOƒ‰ƒ}‚ª‚µ‚Ä‚â‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚±‚Ì•¶‘‚Ì‹Lq‚ÍA‚»‚̂悤‚ÈŽèŠÔ‚ð‚©‚¯‚Ä‚àAShift-JIS‚ð—p‚¢‚邱‚ƂɈӋ`‚ª‚ ‚é‚Æl‚¦‚Ä‚¢‚él‚É‚ÍŽQl‚É‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+‚»‚ñ‚ÈŽèŠÔ‚ðŠ|‚¯‚½‚­‚È‚¢l‚ÍA
+Perl 5.8.xˆÈ~‚ðŽg‚¤B
+—˜“_Fperl5-porters@perl.org ‚ŃTƒ|[ƒg‚³‚ê‚Ä‚¢‚éB
+Œ‡“_F“Æ“Á‚Ìl‚¦•û‚ª‚ ‚èA]—ˆ‚Ì“ú–{Œêˆ—‚Æ‚Í‘Š—e‚ê‚È‚¢‚Æ‚±‚낪‚ ‚éi‚à‚Á‚Æ‚àA‚»‚Ì‚¤‚¿Šµ‚ê‚Ä‹C‚É‚È‚ç‚È‚­‚È‚é‚©‚à‚µ‚ê‚È‚¢jB
+jperl‚ðŽg‚¤B
+—˜“_FShift-JIS ‚𕶎š‚Æ‚µ‚Ä’¼Úˆµ‚¤‚±‚Æ‚ª‚Å‚«‚éB
+Œ‡“_FŒ»ÝAˆÛŽ‚·‚él‚ª‚¢‚È‚¢B
+•¶ŽšƒR[ƒh‚ðUTF-8‚©EUC-JP‚É•ÏŠ·‚µ‚Ä‚©‚爗‚·‚éB
+—˜“_FPerl 5.8.xˆÈ~‚Å‚È‚­‚Ä‚à“®ì‚·‚é•ÏŠ·—p‚̃‚ƒWƒ…[ƒ‹(.pm)‚⃉ƒCƒuƒ‰ƒŠ(.pl)‚ª‚¢‚ë‚¢‚ë“üŽè‰Â”\B
+Œ‡“_FShift-JIS‚قLj«‚­‚È‚¢‚É‚µ‚Ä‚àAƒ}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚ðƒVƒ“ƒOƒ‹ƒoƒCƒg•¶Žš‚Æ‹æ•Ê‚¹‚¸A‚Æ‚à‚ɈꕶŽš‚Æ‚µ‚Ĉ—‚·‚é‚Ì‚Í–Ê“|‚Å‚ ‚éB
+ ‚Æ‚¢‚¤‘Έ‚ð‚Æ‚Á‚½‚Ù‚¤‚ª‚æ‚¢‚Å‚µ‚傤B‚±‚ê‚ç‚̃vƒƒOƒ‰ƒ€‚Í—L–¼‚È‚Ì‚ÅA’T‚¹‚΂·‚®Œ©‚‚©‚é‚Å‚µ‚傤‚©‚çA“üŽèæ‚Í‚±‚±‚É‚ÍŽ¦‚µ‚Ü‚¹‚ñB
+‚È‚¨A‚±‚Ì•¶‘‚É‘‚©‚ê‚Ä‚¢‚鎖‚ªAÅ‚àŠ©‚ß‚ç‚ê‚È‚¢•û–@‚È‚Ì‚ÅA‚±‚±‚©‚çæ‚ÍA‚»‚̂‚à‚è‚Å‚¨“ǂ݉º‚³‚¢B‚±‚Ì•û–@‚ɂ‚¢‚ĉ½‚©‹^–₪¶‚¶‚½‚Æ‚µ‚Ä‚àA‚»‚ê‚ɂ‚¢‚Ä‘¼‚Ì‚Æ‚±‚ë‚ÅŽ¿–â‚·‚é‚ÆA‰½‚Å‚»‚ñ‚È‚â‚è•û‚ð‚µ‚Ä‚¢‚é‚Ì‚©‚ÆA‚«‚Á‚Æ”ñ“‚ê‚é‚Å‚µ‚傤B‚©‚Æ‚¢‚Á‚ÄAŽ„‚É‚àu‚©‚È‚¢‚ʼnº‚³‚¢B
+Shift-JIS‚ðŽg‚Á‚½‚Æ‚«‚É‚ ‚肪‚¿‚ÈiHjƒGƒ‰[
+Shift-JIS‚É‚ÍA‘æ‚QƒoƒCƒg‚ª [@-~]iASCII 10i”‚Å64-126j‚͈̔͂ɓü‚é‚à‚Ì‚ª‚ ‚è‚Ü‚·B‚±‚ê‚ç‚ÌASCII•¶Žš‚ÍAperl‚É‚Æ‚Á‚Ä“Á•Ê‚ȈӖ¡‚ð‚à‚‚±‚Æ‚ª‚ ‚邽‚ßA‚µ‚΂µ‚΃Gƒ‰[‚ÌŒ´ˆö‚Æ‚È‚è‚Ü‚·BShift-JIS‚Å‚ÍA‚QƒoƒCƒg•¶Žš‚Ì‘æ‚QƒoƒCƒg‚ÍA[\x40-\x7E\x80-\xFC])‚͈̔͂ɂ ‚邽‚ßAŽÀ‚É188•ª‚Ì63A–ñ‚R•ª‚Ì‚P‚Ì•¶Žš‚ª‰½‚ç‚©‚Ì–â‘è‚ð‹N‚±‚µ“¾‚é‚Æ‚¢‚¦‚Ü‚·B
+ŽŸ‚ÉAShift-JIS‚ðŽg‚Á‚½‚Æ‚«‚É‹N‚±‚肪‚¿‚ȃGƒ‰[‚Æ‚»‚ÌŒ´ˆö‚ðŽ¦‚µ‚Ü‚·BƒGƒ‰[ƒƒbƒZ[ƒW‚Íperl‚̈Ⴂiƒo[ƒWƒ‡ƒ“‚â‚ǂ̃vƒ‰ƒbƒgƒtƒH[ƒ€—p‚Ì‚à‚Ì‚Å‚ ‚é‚©“™j‚É‚æ‚葽­‚̈Ⴂ‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+ƒGƒ‰[‚É‚È‚ç‚È‚­‚Ä‚àA•¶Žš‰»‚¯‚µ‚½‚èAŠú‘Ò‚µ‚½‚悤‚È“®ì‚ð‚µ‚È‚©‚Á‚½‚è‚ÅA‚¤‚Ü‚­‚¢‚©‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B‚±‚Ìê‡AƒGƒ‰[‚ªo‚È‚¢•ªAŒ´ˆö‚ðŽ©•ª‚Å’T‚³‚È‚¯‚ê‚΂Ȃç‚È‚­‚Ȃ邽‚߃oƒOŽæ‚è‚Í‚µ‚΂µ‚΢“ï‚Å‚·B
+‚±‚±‚ł̓Gƒ‰[‚ɑ΂·‚é‘Îô‚Í’ñŽ¦‚µ‚Ü‚¹‚ñB‘Îô‚Í‚ ‚Æ‚Å‚Ü‚Æ‚ß‚Ä‘‚«‚Ü‚·B
+‚È‚¨A‚±‚±‚É‚Í•¶ŽšƒR[ƒh‚ðEUC-JP‚É‚µ‚Ä‚à‹N‚±‚é‚悤‚È–â‘è‚âƒGƒ‰[‚ÍŽ¦‚µ‚Ü‚¹‚ñBŠî–{“I‚ÉAEUC-JP‚È‚ç‹N‚«‚È‚¢‚ªAShift-JIS‚Ì‚Æ‚«‚É‚Í‹N‚±‚é‚悤‚ÈŽ–•¿‚ÉŒÀ‚è‚Ü‚·B
+ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Pj
+—Ⴆ‚ÎA"•\Ž¦" ‚Æ‚© "–\—Í" ‚Æ‚©‚¢‚¤ƒŠƒeƒ‰ƒ‹‚ª•¶Žš‰»‚¯‚ð‹N‚±‚µ‚Ü‚·B‚±‚ê‚ç‚Í "•Ž¦" ‚Æ‚© "–—Í" ‚É‚È‚è‚Ü‚·B‚±‚ê‚ÍA"•\" ‚â "–\"‚Ì•¶Žš‚Ì‘æ‚QƒoƒCƒg‚ª \ ‚Å‚ ‚邽‚ßAƒ_ƒuƒ‹ƒNƒI[ƒg•¶Žš‚Ì’†‚Å‚ÍŽŸ‚Ì•¶Žš‚̃GƒXƒP[ƒv‚ð‚·‚é‚±‚Æ‚É‚È‚é‚Ì‚ÅA•\Ž¦ 0x955C8EA6 ‚Å‚ ‚Á‚Ä‚àAƒNƒI[ƒg‚ÌŒ‹‰Ê‚Í "•\Ž¦" 0x958EA6 ‚Æ‚È‚é‚©‚ç‚Å‚·B'•\Ž¦' ‚Æ‚·‚ê‚Ε¶Žš‰»‚¯‚Í‹N‚±‚è‚Ü‚¹‚ñ‚ªAƒVƒ“ƒOƒ‹ƒNƒI[ƒg‚Å‚à–h‚°‚È‚¢•¶Žš‰»‚¯‚âƒGƒ‰[‚ª‚ ‚è‚Ü‚·iŽŸ—ájB
+ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Qj
+—Ⴆ‚ÎA"ƒ~ƒ\\500" ‚Æ‚¢‚¤ƒŠƒeƒ‰ƒ‹‚Å‚ÍA\ ‚ª’E—Ž‚µ‚Ä‚µ‚Ü‚¢‚Ü‚·B‚±‚ê‚ÍA'ƒ~ƒ\\500' ‚â q(ƒ~ƒ\\500) ‚È‚Ç‚Æ‚µ‚Ä‚à–h‚®‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB‚»‚ê‚Í \\ ‚Æ‚¢‚¤˜A‘±‚ª‚ ‚é‚Æ \ ‚PŒÂ‚É‚È‚Á‚Ä‚µ‚Ü‚¤‚Æ‚¢‚¤‹K‘¥‚ª‚ ‚é‚©‚ç‚Å‚·B
+ƒNƒI[ƒg‚âƒNƒI[ƒg•—‰‰ŽZŽq‚Ì’†‚Å‚ÍA•¶Žš—ñ‚ɃNƒI[ƒg‚Æ“¯‚¶•¶Žš‚ðŠÜ‚ß‚ç‚ê‚é‚悤‚ÉA\ ‚É‚æ‚éƒGƒXƒP[ƒv‚ð•t‚¯‚ê‚΃NƒI[ƒg‚ÌI’[•¶Žš‚Å‚Í‚È‚­A•¶Žš—ñ‚̈ꕔ‚Æ‚Ý‚È‚µ‚Ü‚·B‚»‚Ì‚½‚ßA\\ ‚ª \ ‚Ì•¶Žš‚ð•\‚·ƒGƒXƒP[ƒv‚É‚È‚è‚Ü‚·B‚±‚ê‚̓NƒI[ƒg‚ÌŽn’[EI’[•¶Žš‚ð‰½‚É‚µ‚Ä‚à“¯‚¶‚±‚Æ‚Å‚·B
+ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Rj
+—Ⴆ‚ÎA"ŠÛ\net" ‚Æ‚¢‚¤ƒŠƒeƒ‰ƒ‹‚ª•¶Žš‰»‚¯‚ð‹N‚±‚µ‚Ü‚·B‚±‚ê‚Í "ŠÛ¥
+et" ‚̂悤‚É“r’†‚ʼnüs‚³‚ê‚Ä‚µ‚Ü‚¢‚Ü‚·B‚±‚ê‚ÍA"\" ‚Ì‘æ‚QƒoƒCƒg‚ª \ ‚Å‚ ‚邽‚ßAƒ_ƒuƒ‹ƒNƒI[ƒg•¶Žš‚Ì’†‚Å‚ÍŽŸ‚Ì 'n' ‚Ƈ‚킹‚Ä\n‚Ì‚·‚È‚í‚¿‰üs•¶Žš‚ð•\‚·ƒƒ^•¶Žš‚Æ‚µ‚ĉðŽß‚³‚ê‚é‚©‚ç‚Å‚·B
+ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Sj
+—Ⴆ‚ÎA"ˆø”@ARGV" ‚Æ‚¢‚¤ƒŠƒeƒ‰ƒ‹‚ª•¶Žš‰»‚¯‚ð‹N‚±‚µ‚Ü‚·B‚±‚ê‚ÍA"@"i‘SŠpƒXƒy[ƒXj‚Ì‘æ‚QƒoƒCƒg‚ª @ ‚Å‚ ‚邽‚ßAƒ_ƒuƒ‹ƒNƒI[ƒg•¶Žš‚Ì’†‚Å‚ÍŽŸ‚Ì ARGV ‚Ƈ‚킹‚Ä "@ARGV" ‚Æ‚¢‚¤”z—ñ‚Æ‚µ‚Ä•Ï”“WŠJ‚ðs‚¤‚©‚ç‚Å‚·B@ARGV‚̂悤‚É•K‚¸’è‹`‚³‚ê‚é‚悤‚È”z—ñ‚È‚çA“WŠJ‚³‚ê‚Ü‚·‚ªA•Ê‚Ìꇂł̓Gƒ‰[‚É‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñi‚»‚ê‚ÍŽŸ€‚ðŽQÆjB
+In string, @dog now must be written as \@dog (Perl 5.6.0‚Ü‚Å)
+u•¶Žš—ñ‚Ì’†‚Å‚ÍA@dog‚Í¡‚Í\@dog‚Æ‘‚©‚È‚¯‚ê‚΂Ȃç‚È‚¢v
+‘O—á‚Å‚Ý‚½‚悤‚ÉA‘SŠpƒXƒy[ƒX "@"‚Ì‘æ‚QƒoƒCƒg‚Í @ ‚Å‚ ‚邽‚ßAŒã‚ë‚Ì•¶Žš‚Ƈ‚킹‚Ä”z—ñ‚Å‚ ‚é‚©‚̂悤‚ɉðŽß‚µ‚悤‚Æ‚µ‚Ü‚·B"Œ¢@dog" ‚̂悤‚Èê‡A@dog ‚Æ‚¢‚¤”z—ñ‚ª’è‹`‚³‚ê‚Ä‚¢‚ê‚΂»‚ê‚ð—p‚¢‚Ä•Ï”“WŠJ‚µ‚Ü‚·‚ªA’è‹`‚³‚ê‚Ä‚¢‚È‚¢ê‡AƒGƒ‰[ƒƒbƒZ[ƒW‚ðo‚µ‚Ü‚·B
+``now must be written as''u¡‚Í‚±‚¤‘‚©‚È‚¯‚ê‚΂Ȃç‚È‚¢v‚Æ‚ÍAPerl4‚Ü‚Å‚Í”z—ñ‚Ì•Ï”“WŠJ‚Ís‚í‚È‚©‚Á‚½‚½‚ßA"hoge@foo.bar" ‚̂悤‚È‘‚«•û‚ð‚·‚é‚±‚Æ‚ª‚Å‚«‚½‚Ì‚¾‚ªA¡ Perl‚Å‚Í @foo ‚ª“WŠJ‚³‚ê‚Ä‚µ‚Ü‚¤‚Ì‚ÅA’ˆÓ‚ðŠ«‹N‚·‚邽‚߃Gƒ‰[‚ðo‚·‚悤‚É‚µ‚Ä‚¢‚é‚悤‚Å‚·i‚à‚µPerl‚ªÌ‚©‚ç”z—ñ‚Ì“WŠJ‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚½‚çAƒGƒ‰[‚ðo‚·‚±‚Æ‚È‚­A–Ù‚Á‚Ä“WŠJ‚·‚邾‚¯‚¾‚Á‚½‚©‚à‚µ‚ê‚Ü‚¹‚ñBŽŸ€‚àŽQÆjB
+"Œ¢@\dog" ‚Æ‚·‚ê‚΂¢‚¢‚Æ‚¢‚¤ˆÓŒ©‚à‚ ‚è‚Ü‚·‚ªA\d ‚ªƒƒ^•¶Žš‚Æ‚µ‚Ä“Á•ÊˆÓ–¡‚ª‚È‚¢‚½‚ß‚É‚¤‚Ü‚­‚¢‚­‚Ì‚Å‚ ‚Á‚ÄiPerl 5.6ˆÈ~‚Å‚ÍAŒx Unrecognized escape \d passed through u”FŽ¯‚Å‚«‚È‚¢ƒGƒXƒP[ƒv \d ‚ª“n‚³‚ꂽv‚ðˆø‚«‹N‚±‚µ‚Ü‚·jA—Ⴆ‚Î "‰Ô@\flower" ‚Ì‚Æ‚«‚ÍA\f ‚ª‰üƒy[ƒW•¶Žš‚Æ‚µ‚ĉðŽß‚³‚êA•¶Žš‰»‚¯‚µ‚Ü‚·B
+Possible unintended interpolation of @dog in string (Perl 5.6.1ˆÈ~)
+•¶Žš—ñ‚Ì’†‚ÅA@dog‚ª—\Šú‚¹‚¸‚É“WŠJ‚³‚ê‚é
+‘O€‚Æ“¯‚¶‚­A"Œ¢@dog" ‚Å‚·‚ªAPerl 5.6.1iActivePerl 626jˆÈ~‚Å‚ÍA’è‹`‚³‚ê‚Ä‚¢‚È‚¢”z—ñ‚Å‚à–Ù‚Á‚Ä“WŠJ‚µ‚Ü‚·B”z—ñ @dog ‚ª“WŠJ‚³‚ê‚é‚Ì‚ÅA"Œ¢\x81" ‚Æ“¯‚¶‚É‚È‚è‚Ü‚·B
+‚±‚ê‚̓Gƒ‰[‚Å‚Í‚È‚­AŒx‚É‚È‚è‚Ü‚·B
+Can't find string terminator '"' anywhere before EOF
+uI’[•¶Žš '"'‚ªƒtƒ@ƒCƒ‹‚ÌI‚è EOF ‚Ü‚Å‚ÉŒ©‚‚©‚ç‚È‚©‚Á‚½v
+—Ⴆ‚ÎA"‘Ήž•\" ‚̂悤‚ȃŠƒeƒ‰ƒ‹‚Å‚ÍA'•\' ‚Ì‘æ‚QƒoƒCƒg‚ª \ ‚Å‚ ‚邽‚ßA‚¤‚µ‚ë‚Ì " ‚ðƒGƒXƒP[ƒv‚µ‚Ä‚µ‚Ü‚¢‚Ü‚·B‚±‚Ì‚½‚ßperl‚ÍA‚»‚Ì " ‚̓NƒI[ƒg•¶Žš—ñ‚ÌI’[•¶Žš‚Æ‚Í‚Ý‚È‚³‚¸‚ÉA•¶Žš—ñ‚ª‚³‚ç‚É‘±‚­‚Æl‚¦‚Ä‚µ‚Ü‚¢‚Ü‚·B‚±‚êˆÈ~AƒXƒNƒŠƒvƒg‚Ì’†‚É " ‚Ì•¶Žš‚ª‘S‚­ŠÜ‚Ü‚ê‚È‚¯‚ê‚ÎA‚±‚̂悤‚ɃGƒ‰[•ñ‚ð‚µ‚Ü‚·B
+qq{ "“ú–{Œê" }‚̂悤‚Èê‡‚É‚à’ˆÓ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB"–{" ‚Ì‘æ“ñƒoƒCƒg‚Í { ‚È‚Ì‚ÅA‚±‚Ì‚Ü‚Ü‚Å‚Í { }‚̃lƒXƒg‚ª‚¸‚ê‚Ä‚µ‚Ü‚¢A“¯—l‚̃Gƒ‰[‚ª”­¶‚µ‚Ü‚·B
+Bareword found where operator expected
+u—‡‚̌ꂪ‰‰ŽZŽq‚ª‚ ‚Á‚Ä‚Ù‚µ‚¢ˆÊ’u‚ÉŒ©‚‚©‚Á‚½v
+—Ⴆ‚ÎAprint "<img alt=\"‘Ήž•\\" height=115 width=150>"; ‚̂悤‚Èê‡A\" ‚É‚æ‚éˆø—p•„‚̃GƒXƒP[ƒv‚ÍA•\ ‚Ì‘æ‚QƒoƒCƒg‚Ì\‚Ì‚½‚ßA\\ " ‚Æ‚¢‚¤‘g‚݇‚킹‚É‚È‚èAƒGƒXƒP[ƒv‚ª‘Å‚¿Á‚³‚ê‚Ä‚¢‚Ü‚·B‚»‚Ì‚½‚ßA‚±‚̃Šƒeƒ‰ƒ‹‚ÍAperl‚©‚猩‚é‚ÆA"<img alt=\"‘Ήž•\\" ‚ÅI‚í‚Á‚Ä‚¢‚Ü‚·B‚»‚Ì‚½‚ßAƒŠƒeƒ‰ƒ‹‚ÌŒã‚ÉAheight ‚Æ‚¢‚¤u—‡‚ÌŒêviƒNƒI[ƒg‚ň͂܂ê‚Ä‚¢‚È‚¢•¶Žš—ñj‚ª‚ ‚é‚悤‚É‚Ý‚ÄA‚±‚±‚É‚Í—‡‚ÌŒê‚Å‚Í‚È‚­A‰‰ŽZŽq‚ª‚ ‚é‚ׂ«‚Å‚Í‚È‚¢‚©H‚Æperl‚Íl‚¦‚Ü‚·B
+Unrecognized character \x82
+u”FŽ¯‚³‚ê‚È‚¢•¶Žš \x82v
+‚±‚ê‚ÍA”ñASCII•¶Žš‚â‚»‚Ì‘¼‚Ì•¶Žš‚ðu—‡‚ÌŒêv‚É‚µ‚½‚Æ‚«‚Éo‚郃bƒZ[ƒW‚Å‚·B"‘Ήž•\" ‚̂悤‚ȃŠƒeƒ‰ƒ‹‚ª‚ ‚Á‚ÄA‚»‚Ì‚ ‚Æ‚É "‚È‚ñ‚Å‚à‚¢‚¢‚¯‚Ç" ‚̂悤‚ȃŠƒeƒ‰ƒ‹‚ª‚ ‚Á‚½‚Æ‚«A‘O—á‚Æ“¯‚¶——R‚©‚ç‹N‚±‚é‚à‚Ì‚Å‚·B
+‚Ü‚½Aq{ƒ}ƒbƒ`} ‚̂悤‚ÈꇂɂàA'ƒ}' ‚Ì‘æ“ñƒoƒCƒg‚ª } ‚È‚Ì‚ÅA{ } ‚̃JƒbƒR‚Í‚»‚±‚ÅI‚í‚Á‚Ä‚µ‚Ü‚¢A“¯—l‚ȃGƒ‰[‚É‚È‚è‚Ü‚·B
+ƒ}ƒbƒ`‚µ‚È‚¢‚Í‚¸‚Ȃ̂Ƀ}ƒbƒ`‚·‚éi‚Pj
+"ƒ„ƒJƒ“" =~ /ƒ|ƒbƒg/ ‚̓}ƒbƒ`‚µ‚Ü‚·B‚»‚ê‚ÍA'ƒ|' ‚Ì‘æ“ñƒoƒCƒg‚ª | ‚È‚Ì‚ÅA/ƒ|ƒbƒg/ ‚Í /\x83|ƒbƒg/ ‚Æ‚Ý‚È‚³‚êA\x83 ‚¾‚¯ƒ}ƒbƒ`‚·‚ê‚΂悢‚©‚ç‚Å‚·B
+ƒ}ƒbƒ`‚µ‚È‚¢‚Í‚¸‚Ȃ̂Ƀ}ƒbƒ`‚·‚éi‚Qj
+"ŒZ’í" =~ /Z/ ‚̓}ƒbƒ`‚µ‚Ü‚·B‚»‚ê‚ÍA'ŒZ' ‚Ì‘æ“ñƒoƒCƒg‚ª 'Z' ‚¾‚©‚ç‚Å‚·B‘æ“ñƒoƒCƒg‚ªƒAƒ‹ƒtƒ@ƒxƒbƒg‚ɂȂ镶Žš‚É‚Í’ˆÓ‚ª•K—v‚Å‚·B
+ƒ}ƒbƒ`‚·‚é‚Í‚¸‚Ȃ̂Ƀ}ƒbƒ`‚µ‚È‚¢i‚Pj
+"‰^“]–Æ‹–" =~ /‰^“]/ ‚̓}ƒbƒ`‚µ‚Ü‚¹‚ñB‚»‚ê‚ÍA'‰^' ‚Ì‘æ“ñƒoƒCƒg‚ª '^'‚È‚Ì‚ÅA/‰^“]/ ‚Í /\x89^“]/ ‚Æ‚Ý‚È‚³‚êA•¶Žš—ñ‚ÌŽn‚ß ^ ‚Ì‘O‚É \x89 ‚Í‚È‚¢‚©‚ç‚Å‚·B
+Search pattern not terminated
+uƒT[ƒ`ƒpƒ^[ƒ“‚ªI—¹‚µ‚È‚¢v
+‚±‚ê‚ÍA/•\/ ‚̂悤‚ÉA‘æ“ñƒoƒCƒg‚ª \ ‚Å‚ ‚镶Žš‚ŃT[ƒ`ƒpƒ^[ƒ“‚ðI‚í‚点‚悤‚Æ‚µ‚½‚Æ‚«‚É‹N‚±‚è‚Ü‚·Bƒ}ƒbƒ`‰‰ŽZŽq‚ÌI’[•¶Žš / ‚ðƒGƒXƒP[ƒv‚µ‚Ä‚µ‚Ü‚¤‚Ì‚ÅAƒT[ƒ`ƒpƒ^[ƒ“‚ª‚³‚ç‚Éæ‚É‘±‚­‚悤‚ɉðŽß‚³‚ê‚Ü‚·B‚»‚Ìæ‚É‚à‚¤ˆê“x/‚Í‚ ‚è‚Ü‚·‚©H
+‚ ‚Á‚½‚Æ‚±‚ë‚ÅA•Ê‚̃Gƒ‰[‚ª”­¶‚·‚é‚Å‚µ‚傤B
+Substitution replacement not terminated
+u’uŠ·‘€ì‚Ì’uŠ·•¶Žš—ñ‚ªI—¹‚µ‚È‚¢v
+’uŠ·‰‰ŽZŽq‚Í s/PATTERN/REPLACEMENT/‚ÌŒ`Ž®‚ð‚Æ‚ç‚˂΂Ȃè‚Ü‚¹‚ñB‚µ‚©‚µ s/•\/— /; ‚̂悤‚ÉA‘æ“ñƒoƒCƒg‚ª \ ‚Å‚ ‚镶Žš‚ÅPATTERN•”•ª‚ðI‚í‚点‚悤‚Æ‚µ‚½‚Æ‚«‚É‚±‚̃Gƒ‰[‚ª‹N‚±‚è‚Ü‚·Bƒ}ƒbƒ`‰‰ŽZŽq‚ÌI’[•¶Žš / ‚ðƒGƒXƒP[ƒv‚µ‚Ä‚µ‚Ü‚¤‚Ì‚ÅAPATTERN‚ª‚³‚ç‚Éæ‚É‘±‚­‚悤‚ɉðŽß‚³‚ê‚Ü‚·B‚»‚Ì‚½‚ßperl‚ÍAPATTERN‚Í •\/—  ‚Ì•”•ª‚Å‚ ‚é‚Æl‚¦A‚R”Ô–Ú‚Ì/‚Ìæ‚ÉREPLACEMENT•”•ª‚ª‚ ‚é‚ɈႢ‚È‚¢‚ÆŽv‚¤‚Ì‚Å‚·‚ªA‚»‚Ìæ‚É‚à‚¤ˆê“x/‚Í‚ ‚è‚Ü‚·‚©H
+‚ ‚Á‚½‚Æ‚±‚ë‚ÅA•Ê‚̃Gƒ‰[‚ª”­¶‚·‚é‚Å‚µ‚傤B
+unmatched [ ] in regexp
+u³‹K•\Œ»‚Ƀ}ƒbƒ`‚µ‚È‚¢ [ ] ‚ª‚ ‚év
+—Ⴆ‚ÎA/ƒv[ƒ‹/ ‚ł̓Gƒ‰[‚ª‹N‚±‚è‚Ü‚·B‚»‚ê‚Í '[' ‚Ì‘æ“ñƒoƒCƒg‚ª [ ‚È‚Ì‚ÅA/ƒv[ƒ‹/ ‚Í /ƒv\x81[\x83\x8B/ ‚Æ‚Ý‚È‚³‚êAperl‚Í•¶ŽšƒNƒ‰ƒX‚ª‚ ‚é‚Ì‚Å‚Í‚È‚¢‚©‚ÆŽv‚¢‚Ü‚·B‚µ‚©‚µ•¶ŽšƒNƒ‰ƒX‚ÌI—¹‚ðŽ¦‚· ] ‚ªŒ©‚‚©‚ç‚È‚¢‚̂ŃGƒ‰[‚É‚È‚è‚Ü‚·B
+ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Tj
+—Ⴆ‚ÎAlc('ƒAƒCƒEƒGƒI')‚ÍA'ƒaƒcƒeƒgƒi'‚ð•Ô‚µ‚Ü‚·BShift-JIS‚Ì‚QƒoƒCƒg•¶Žš‚Ì’†‚É‚ÍA‘æ‚QƒoƒCƒg‚ªASCII‚ʼnpŽš‚É“–‚½‚é‚à‚Ì‚ª‚ ‚è‚Ü‚·BÚ‚µ‚­‚̓Aƒ‹ƒtƒ@ƒxƒbƒg‚̑啶Žš‚Ƭ•¶Žš‚ð‚²——‰º‚³‚¢B
+ƒGƒ‰[‚âŠÔˆá‚¢‚ð–h‚®‘Îô
+ˆÈã‚̂悤‚ȃGƒ‰[‚ð–h‚®‚É‚Í‚³‚Ü‚´‚Ü‚È•û–@‚ªl‚¦‚ç‚ê‚Ü‚·B—Ⴆ‚ÎA"•\\Ž¦" ‚Æ‘‚¯‚΂¢‚¢‚È‚Ç‚Æ‚¢‚¤’ñˆÄ‚ª‚ ‚è‚Ü‚·B‚à‚¿‚ë‚ñ‚»‚ê‚Å‚à‚©‚Ü‚¢‚Ü‚¹‚ñB‚µ‚©‚µ‚»‚Ì‚½‚ß‚É‚Í‚Ç‚Ì•¶Žš‚ÌŒã‚É \ ‚ð“ü‚ê‚ê‚΂¢‚¢‚©‚ð’m‚é•K—v‚ª‚ ‚è‚Ü‚·B‚»‚ê‚Í•¶ŽšƒR[ƒh•\‚ðŒ©‚ê‚Έꔭ‚Å–¾‚ç‚©‚Å‚·B
+c‚È‚Ç‚Æ‚¢‚¤–Ê“|‚È‚±‚Æ‚ª‹ê‚É‚È‚ç‚È‚¢lA•¶ŽšƒR[ƒh•\‚È‚ñ‚©i­‚È‚­‚Æ‚à–â‘è‚É‚È‚é‚悤‚È•¶Žš‚­‚ç‚¢‚ÍjˆÃ‹L‚µ‚Ä‚µ‚Ü‚¦‚΂¢‚¢‚Æ‚¢‚¤‚悤‚Èl‚É‚Æ‚Á‚Ä‚ÍAŠm‚©‚É‚»‚ê‚Å‰ðŒˆ‚É‚È‚é‚ÆŽv‚¢‚Ü‚·B‚µ‚©‚µA‚»‚̂悤‚Èl‚É‚ÍA‚±‚ñ‚ȃy[ƒW‚ðŒ©‚É‚­‚é•K—v‚àƒqƒ}‚à‚È‚¢‚Å‚µ‚傤B
+‚»‚±‚ÅA‚±‚̂悤‚ȃy[ƒW‚ð‚í‚´‚í‚´Œ©‚É‚­‚é‚悤‚Èl‚ÍA•¶ŽšƒR[ƒh•\‚ð‚¢‚¿‚¢‚¿’²‚ׂ½‚­‚È‚¢‚ЂƂ¾‚Ɖ¼’肵‚Ü‚·B•Ê‚É‚»‚¤‚¾‚©‚ç‚Æ‚¢‚Á‚Ä”ñ“‚ê‚邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB‚µ‚©‚µAŽèŠÔ‚ðÉ‚µ‚Þ‚ ‚Ü‚èŠÔˆá‚Á‚½ƒvƒƒOƒ‰ƒ€‚𕽋C‚Åì‚Á‚Ä‚¢‚Ä‚ÍAŠç‚ɃNƒŠ[ƒ€ƒpƒC‚ð‚Ԃ‚¯‚ç‚ê‚Ä‚àŽd•û‚ ‚è‚Ü‚¹‚ñB
+•¶Žš—ñƒŠƒeƒ‰ƒ‹‚Ìì‚è•û
+‚æ‚­’m‚Á‚Ä‚¨‚©‚˂΂Ȃç‚È‚¢‚±‚Æ‚ÍA\ ‚Æ‚¢‚¤ƒGƒXƒP[ƒv—p‚Ì•¶Žš‚ÍA•Ï”“WŠJ‚⃃^•¶Žš‚̉ðŽß‚æ‚肸‚Á‚Æ‘O‚Ì’iŠK‚Å‚³‚Ü‚´‚܂ȉe‹¿‚ð‹y‚Ú‚·‚Æ‚¢‚¤‚±‚Æ‚Å‚·B‚»‚Ì‚½‚ßA‚Ç‚¤‚µ‚½‚çƒf[ƒ^‚ðŠmŽÀ‚É•Ï”‚Ì’†‚ÉŽû‚ß‚ç‚ê‚é‚©‚ðl‚¦‚é•K—v‚ª‚ ‚è‚Ü‚·B•Ï”‚Ì“à•”‚ÉŽû‚ß‚Ä‚µ‚Ü‚¦‚ÎAPerl‚ªƒf[ƒ^‚ð“KØ‚ÉŠÇ—‚µ‚Ä‚­‚ê‚Ü‚·B‚æ‚­’m‚ç‚ê‚Ä‚¢‚é $str = "•\Ž¦" ‚Ì•¶Žš‰»‚¯‚àA•Ï”$str‚É‘ã“ü‚·‚éˆÈ‘OAƒ_ƒuƒ‹ƒNƒH[ƒg‚ň͂ñ‚¾Žž“_‚Å‚·‚Å‚É•¶Žš‰»‚¯‚µ‚Ä‚¢‚é‚Æl‚¦‚é‚ׂ«‚Å‚·B‚·‚Å‚É•¶Žš‰»‚¯‚µ‚½ƒf[ƒ^‚ð‘ã“ü‚µ‚ÄAD‚¢Œ‹‰Ê‚ª“¾‚ç‚ê‚é‚Í‚¸‚ª‚ ‚è‚Ü‚¹‚ñB
+ƒqƒAƒhƒLƒ…ƒƒ“ƒg‚͈À‘S«‚Ì‚‚¢‰ðŒˆ–@‚Å‚·B‚½‚¾‚µAI’[•¶Žš—ñ‚ðƒVƒ“ƒOƒ‹ƒNƒH[ƒg‚ň͂ñ‚Å‚â‚ç‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñBƒ_ƒuƒ‹ƒNƒH[ƒg‚ň͂ñ‚¾‚èAƒNƒH[ƒg‚ð•t‚¯‚È‚©‚Á‚½‚è‚Å‚ÍA—\Šú‚¹‚Ê•Ï”“WŠJ‚⃃^•¶Žš‚̉ðŽß‚ð–h‚®‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB
+ƒVƒ“ƒOƒ‹ƒNƒH[ƒg‚ÅI’[•¶Žš—ñ‚ðˆÍ‚ñ‚¾ƒqƒAƒhƒLƒ…ƒƒ“ƒg‚Å‚ÍA•Ï”“WŠJ‚⃃^•¶Žš‚̉ðŽß‚͉½‚à‹N‚±‚è‚Ü‚¹‚ñB‚½‚¾AI’[•¶Žš—ñi‚±‚Ìê‡‚Í "\nEOF\n"j‚ð’T‚·‚±‚Æ‚¾‚¯‚ðs‚¢‚Ü‚·BƒqƒAƒhƒLƒ…ƒƒ“ƒg‚ðŽg‚¤‚Æ•¶Žš—ñ‚ɉüs•¶Žš‚ª‚‚«‚Ü‚·‚ªAchomp‚Åœ‚­‚Æ‚¢‚¢‚Å‚µ‚傤B
+ŽŸ‚Ì—á‚Í $str = '‚±‚±‚ɃeƒLƒXƒg‚ð‘‚­' ‚Æ“¯‚¶‚悤‚É“­‚«‚Ü‚·‚ªA•¶Žš—ñ‚Ì“à—e‚É‚æ‚Á‚Ä–â‘肪‹N‚±‚è‚Ü‚¹‚ñB‘‚¢‚½‚Æ‚¨‚è‚ɃŠƒeƒ‰ƒ‹‚ð‘ã“ü‚Å‚«‚é‚ÆŠú‘Ò‚Å‚«‚Ü‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+chomp($str = << 'EOF');
+‚±‚±‚ɃeƒLƒXƒg‚ð‘‚­
+EOF
+
+$src = << 'EOF';
+ $path = "C:\\path\\file";
+ open FH, $path;
+EOF
+
+‘½‚­‚Ì•¶Žš—ñ‚ðˆê“x‚Éì‚肽‚¯‚ê‚ÎAsplit‚Å•ªŠ„‚·‚é‚Æ—eˆÕ‚Éì‚ê‚Ü‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+($name, $career, $age, $memo) = split "\n", << 'EOF';
+“c’†ˆê˜Y
+ƒvƒƒOƒ‰ƒ}
+ŽO\ŒÜ
+‘å•Ÿ‚ªD•¨‚Å‚ ‚éB Žð‚Í‚ ‚Ü‚è“Û‚Ü‚È‚¢B
+EOF
+
+‚à‚¤­‚µŠÈŒ‰‚É‘‚«‚½‚¯‚ê‚ÎA‹ó”’•¶ŽšA\i‚QƒoƒCƒg•¶Žš‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚é‚Ì‚Í\‚í‚È‚¢jA‚¨‚æ‚уJƒbƒR‚ðŠÜ‚Ü‚È‚¢‚Æ‚¢‚¤ðŒ‚ÅAqw() ‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B—Ⴆ‚ÎA@str = qw(•\Ž¦ ‘Ήž•\ );‚̂悤‚É‹ó”’‚ð“ü‚ê‚ăJƒbƒR‚̃GƒXƒP[ƒv‚ð–h‚¬‚Ü‚·B@str = qw(•\Ž¦ ‘Ήž•\);‚̂悤‚É‹ó”’‚ð“ü‚ê‚È‚¢‚ƃGƒ‰[‚ÌŒ³‚Å‚·B
+‚P‚‚̕¶Žš—ñ‚ðì‚鎞‚Å‚àA¶•Ó‚ðŠÛƒJƒbƒR‚ň͂ñ‚ŃŠƒXƒgƒRƒ“ƒeƒLƒXƒg‚ðŽ¦‚·‚©A‰E•Ó‚ðƒXƒ‰ƒCƒX‚É‚·‚é‚©‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚±‚ê‚ÍAiŒ»ó‚Å‚Íjqw// ‚Í split(' ', q//) ‚Ì—ª‹L‚Æ‚µ‚ÄŽÀ‘•‚µ‚Ä‚¢‚é‚©‚ç‚Å‚·B‚È‚¨APerl 5.6‚ł̓ŠƒXƒg‚Æ“™‰¿‚É‚È‚Á‚Ä‚¢‚é‚悤‚Å‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+($str) = qw(•SŽO\ );
+ $str = (qw/•SŽO\ /)[0];
+ $str = qw/•SŽO\ /; # Perl 5.6
+
+³‹K•\Œ»‚ƃ}ƒbƒ`
+³‹K•\Œ»‚̃ƒ^•¶Žš‚Í‘½‚¢‚Ì‚ÅA³‹K•\Œ»‚Ì’†‚ÉShift-JIS‚Ì•¶Žš—ñ‚ð–„‚ß‚±‚Þ‚Ì‚Í“¾ô‚Å‚Í‚ ‚è‚Ü‚¹‚ñB—Ⴆ‚ÎA/\Q‘Ήž•\/ ‚ł̓Gƒ‰[‚É‚È‚è‚Ü‚·B‚±‚ê‚ÍA/ / ‚͈̔͂̌ˆ’肪^‚Áæ‚És‚í‚êA‚»‚ÌŽž“_‚ŃGƒ‰[‚ª”­¶‚·‚é‚Ì‚ÅA\Q ‚ÌŒø‰Ê‚ð‹y‚Ú‚·‚±‚Æ‚ª‚Å‚«‚È‚¢‚©‚ç‚Å‚·B‚Ü‚½A/\Q‘Ήž•\\E/ ‚ÍI‚­s‚«‚Ü‚¹‚ñB‚±‚ê‚ÍA‘Ήž•\\E ‚Æ‚¢‚¤•¶Žš—ñ‚ðŠÜ‚Þ‚à‚Ì‚É‚µ‚©ƒ}ƒbƒ`‚µ‚Ü‚¹‚ñB‚±‚ê‚ÍA\\ ‚Æ‚¢‚¤˜A‘±‚ª‚ ‚邽‚ßA\E ‚ª”FŽ¯‚³‚ê‚È‚¢‚©‚ç‚Å‚µ‚傤i‚½‚Ô‚ñjB
+‚»‚Ì‚½‚ßA•Ï”‚É“ü‚ê‚ÄAƒ}ƒbƒ`‰‰ŽZŽq‚â’uŠ·‰‰ŽZŽq‚Ì’†‚Å“WŠJ‚³‚¹‚é‚Æ‚æ‚낵‚¢‚Å‚·B‚±‚Ì‚Æ‚«“ú–{Œê•¶Žš—ñ‚Í—\‚ßquotemeta ŠÖ”‚ň—‚µ‚Ä‚¨‚«‚Ü‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+$pat = quotemeta +(qw/ •\ /)[0];
+$str =~ /$pat\d+/; # •\1, •\2, ..‚ȂǂɃ}ƒbƒ`
+ # ‚µ‚©‚µ $str = 'Œ•\\1' ‚Å‚àƒ}ƒbƒ`‚·‚éi‚±‚Ì–â‘è‚ÍŒãqj
+
+ã‚̂悤‚È‘‚«•û‚ÍŠm‚©‚ÉX‚¢‚Å‚·‚ËBƒNƒI[ƒg‚Ì’†‚Å \Q \E ‚ðŽg‚¤Žž‚ÍA³‚µ‚¢•¶Žš—ñ‚ª“ü‚Á‚Ä‚¢‚é•Ï”‚ƈê‚É‚È‚ç–â‘肪‹N‚±‚è‚Ü‚¹‚ñB‚±‚¤‚·‚邱‚Æ‚ÅA\Q \E ‚͈̔͂ª–¾Šm‚É‚È‚é‚©‚ç‚Å‚·B³‚µ‚¢•¶Žš—ñ‚Ìì‚è•û‚ÍA‘Oq‚̃Šƒeƒ‰ƒ‹‚Ìì‚è‚©‚½‚ðŽQl‚É‚µ‚ĉº‚³‚¢B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+$pat = "(?:\Q$str1\E|\Q$str2\E)*";
+$str =~ /$pat/;
+
+# ŽÀ‚Íã‚Ì•¶‚ÍŽŸ‚Ì•¶‚Æ“™‰¿B
+# $pat = "(?:" . quotemeta($str1) . "|" . quotemeta($str2) . ")*";
+
+ƒŠƒeƒ‰ƒ‹‚ðƒNƒH[ƒg‚Ì’†‚É’¼Ú–„‚ß‚±‚Þ‚Æ‚¤‚Ü‚­s‚©‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B‚»‚ê‚ÍAperl‚ª \E ‚Æ‚¢‚¤ƒƒ^•¶Žš‚ð”­Œ©‚µ‚悤‚Æ‚¢‚¤‚Ì‚ðAShift-JIS•¶Žš‚ª–W‚°‚邽‚ß‚Å‚·B
+"\Q•\\E"‚Å‚ÍA•\E‚Ƀ}ƒbƒ`‚·‚鳋K•\Œ»‚É‚È‚è‚Ü‚·B•\‚Ì‘æ“ñƒoƒCƒg‚Ì \ ‚ÆŽŸ‚Ì \‚ª‡‚킳‚é‚Ì‚ÅAperl‚É‚Í\Q \x95 \\ E‚Ì‘g‚݇‚킹‚Å‚ ‚é‚悤‚ÉŽv‚í‚ê‚Ü‚·B \Q‚Ìì—p‚ÌŒ‹‰Ê‚Í\\x95\\x5cE‚É‚È‚è‚Ü‚·B‚»‚Ì‚½‚ßA•\E‚Ƀ}ƒbƒ`‚µ‚Ü‚·B
+"\Q•\"‚Í‚Ç‚¤‚Å‚µ‚傤B‚±‚ÌꇂÍA" " ‚Ì”ÍˆÍ‚ðŒˆ‚ß‚é‚Æ‚«‚ÉA•\‚Ì‘æ“ñƒoƒCƒg‚ªŒã‚̃NƒH[ƒg‚ðƒGƒXƒP[ƒv‚µ‚Ä‚µ‚Ü‚¤‚Ì‚ÅA•¶Žš—ñ‚͈̔͂ªŠú‘Ò‚µ‚½‚悤‚É‚Í’è‚܂炸AƒGƒ‰[‚É‚È‚è‚Ü‚·B‚±‚̃Gƒ‰[‚Í\Q‚ÌŒø‰Ê‚ðl—¶‚·‚é‘O‚É”­¶‚·‚é‚Ì‚ÅA–h‚¬‚悤‚ª‚ ‚è‚Ü‚¹‚ñB
+"\Q•\\\E"‚Í‚Ç‚¤‚Å‚µ‚傤BŠm‚©‚ÉShift-JIS‚Å‚Í–â‘è‚ ‚è‚Ü‚¹‚ñB‚µ‚©‚µ“¯‚¶ƒXƒNƒŠƒvƒg‚ðEUC-JP‚âUTF-8‚É•ÏŠ·‚µ‚½‚Æ‚«‚É‚Í–â‘肪‚ ‚è‚Ü‚·B•\\E‚Æ—]•ª‚È‚Q•¶Žš‚ª‚ ‚镶Žš—ñ‚Å‚È‚¢‚ƃ}ƒbƒ`‚µ‚Ü‚¹‚ñB‚Ç‚¿‚ç‚É‚µ‚ëA\‚ð‚Ç‚±‚É“Y‚¦‚é‚©‚ðl‚¦‚é•K—v‚ª‚ ‚é‚Ì‚ÅA‚±‚±‚ÌŽïŽ|‚ɇ‚¢‚Ü‚¹‚ñB
+³‹K•\Œ»‚͗Ⴆ‚ÎAŽŸ‚̂悤‚É‚µ‚Ü‚·B‚à‚¿‚ë‚ñ‚±‚ê‚ÍShift-JIS‚Ì‚Ý‚É—LŒø‚Å‚·B
+ $digit = '(?:[0-9]|\x82[\x4F-\x58])'; # ”Žši”¼Šp‚Æ‘SŠpj
+ $upper = '(?:[A-Z]|\x82[\x60-\x79])'; # ƒAƒ‹ƒtƒ@ƒxƒbƒg‘啶Žši”¼Šp‚Æ‘SŠpj
+ $lower = '(?:[a-z]|\x82[\x81-\x9A])'; # ƒAƒ‹ƒtƒ@ƒxƒbƒg¬•¶Žši”¼Šp‚Æ‘SŠpj
+ $space = '(?:[\ \n\r\t\f]|\x81\x40)'; # ‹ó”’•¶Žši”¼Šp‚Æ‘SŠpj
+ $ascii = '[\x00-\x7F]'; # ASCII•¶Žš
+
+ # ‘SŠp•½‰¼–¼i‘÷“_E”¼‘÷“_E—x‚莚‚ðŠÜ‚Þj
+ $hiraZ = '(?:\x82[\x9F-\xF1]|\x81[\x4A\x4B\x54\x55])';
+
+ # ‘SŠp•Ð‰¼–¼i’·‰¹•„E‘÷“_E”¼‘÷“_E—x‚莚‚ðŠÜ‚Þj
+ $kataZ = '(?:\x83[\x40-\x7E\x80-\x96]|\x81[\x5B\x4A\x4B\x52\x53])';
+
+ # ”¼Šp•Ð‰¼–¼i”¼Šp’·‰¹•„E‹å“Ç“_‚ðŠÜ‚Þj
+ $kataH = '[\xA1-\xDF]';
+
+ $onebyte = '[\x00-\x7F\xA1-\xDF]';
+ $twobyte = '(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+ $char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+
+ # JIS•¶Žš
+ $all_JIS = '(?:[\x00-\x7f\xa1-\xdf]|'.
+ . '\x81[\x40-\x7e\x80-\xac\xb8-\xbf\xc8-\xce\xda-\xe8\xf0-\xf7\xfc]|'
+ . '\x82[\x4f-\x58\x60-\x79\x81-\x9a\x9f-\xf1]|'
+ . '\x83[\x40-\x7e\x80-\x96\x9f-\xb6\xbf-\xd6]|'
+ . '\x84[\x40-\x60\x70-\x7e\x80-\x91\x9f-\xbe]|'
+ . '\x88[\x9f-\xfc]|\x98[\x40-\x72\x9f-\xfc]|\xea[\x40-\x7e\x80-\xa4]|'
+ . '[\x89-\x97\x99-\x9f\xe0-\xe9][\x40-\x7e\x80-\xfc])';
+
+ # ƒxƒ“ƒ_’è‹`•¶Žš
+
+ # NEC“ÁŽê•¶Žš
+ $NEC_special = '(?:\x87[\x40-\x5d\x5f-\x75\x7e\x80-\x9c])';
+
+ # NEC‘I’èIBMŠg’£•¶Žš
+ $NEC_IBM_ext = '(?:\xed[\x40-\x7e\x80-\xfc]|\xee[\x40-\x7e\x80-\xec\xef-\xfc])';
+
+ # IBMŠg’£•¶Žš
+ $IBM_ext = '(?:[\xfa-\xfb][\x40-\x7e\x80-\xfc]|\xfc[\x40-\x4b])';
+
+
+Shift-JIS‚Ń}ƒbƒ`‚ðs‚¤Žž‚É‚ÍA‚Q‚‚̖â‘肪‚ ‚è‚Ü‚·B
+‘æ“ñƒoƒCƒg‚ªASCII‚̗̈æ‚É“ü‚镶Žš‚ª‚ ‚é‚Ì‚ÅAASCII‚ðŠÜ‚Þƒpƒ^[ƒ“‚Ƀ}ƒbƒ`‚·‚é‰Â”\«‚ª‚ ‚éB
+‚ ‚镶Žš‚Ì‘æ“ñƒoƒCƒg‚ÆŽŸ‚Ì•¶Žš‚Ì‘æˆêƒoƒCƒg‚ª‚P•¶Žš‚Å‚ ‚é‚©‚̂悤‚Ƀ}ƒbƒ`‚µ‚Ä‚µ‚Ü‚¤B
+ŒãŽÒ‚ÍEUC-JP‚Å‚à‹N‚±‚肤‚é–â‘è‚Å‚·iUTF-8‚È‚ç‹N‚±‚ç‚È‚¢‚ªA¡‚Í‚»‚ꂪ–â‘è‚È‚Ì‚Å‚Í‚È‚¢jB‚µ‚©‚µ‘OŽÒ‚ÍEUC-JP‚Å‚Í‹N‚±‚ç‚È‚¢‚ªAShift-JIS‚Å‚Í‹N‚±‚肤‚é–â‘è‚Å‚·B‚±‚ê‚ç‚ð–h‚®•û–@‚ÍAŒ‹‹Ç“¯‚¶‚±‚Æ‚Å‚·‚ªA³‹K•\Œ»‚Ì’†‚ÉAí‚É擪‚ðŠÜ‚Ü‚¹‚邱‚Æ‚Å‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+# 擪‚©‚çƒ}ƒbƒ`
+$str =~ /^$char*?(?:$pat)/;
+
+––”ö‚©‚ç‚̃}ƒbƒ`‚Å‚Í‚¤‚Ü‚­s‚©‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B"‰E" =~ /E$/‚ðl‚¦‚ê‚Î\•ª‚Å‚µ‚傤B‚Ü‚½A"\x8E" x 30 . "E"‚Í$str = "ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽE"‚Å‚ ‚邪A"\x8E" x 31 . "E"‚Í$str = "ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽE"‚Å‚ ‚è‚Ü‚·‚©‚çAShift-JIS•¶Žš—ñ‚ðŒã‚ë‚©‚ç؂蕪‚¯‚é“KØ‚È•û–@‚Í‚È‚¢‚Æl‚¦‚ç‚ê‚Ü‚·B
+­‚È‚­‚Æ‚àA‚QƒoƒCƒg•¶Žš‚ð\¬‚µ‚È‚¢ƒoƒCƒg [\x00-\x3F\x7F] ‚ªŒ©‚‚©‚銂܂ÅA‹É’[‚Èꇂ͕¶Žš—ñ‚Ìʼn‚܂ŃXƒLƒƒƒ“‚µ‚È‚¢‚Æ‚í‚©‚炸A‚µ‚©‚àŒã“Ç‚Ý lookbehind ‚̳‹K•\Œ» (?<=PATTERN)‚Í¡‚ÌŠA•s’è’·‚É‚Å‚«‚Ü‚¹‚ñi(?<=(?:\A|[\x00-\x3F\x7F])$char*) ‚Æ‚Í‚Å‚«‚È‚¢j‚Ì‚ÅA擪‚©‚當Žš’PˆÊ‚ł΂炵‚Ä‚©‚爗‚·‚é‚Ì‚ªAŒ‹‹Ç‚ÍŠÈ•Ö‚È‚Ì‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+ƒOƒ[ƒoƒ‹ƒ}ƒbƒ`
+ƒOƒ[ƒoƒ‹ƒ}ƒbƒ` /g ‚ÌꇂÍA\G‚ðŽg‚¢‚Ü‚µ‚傤B\G‚Í‘O‰ñƒ}ƒbƒ`‚µ‚½•”•ª‚Ì––”ö‚ðŽw‚µ‚Ü‚·B
+ŽŸ‚Ì—á‚Å‚ÍA’uŠ·‚³‚ê‚È‚¢‚Ì‚ª–]‚Ü‚µ‚¢‚Ì‚Å‚·‚ªA\G‚ª‚È‚¢‚Ì‚ÅA擪‚©‚çŠJŽn‚µ‚Ä•¶Žš—ñ‘S‘̂܂ʼn„‚тă}ƒbƒ`‚µ‚È‚©‚Á‚½‚ ‚ÆA‰ü‚ß‚Ä擪‚©‚ç‚PƒoƒCƒgi‚ñ‚¾ˆÊ’u‚©‚çƒXƒLƒƒƒ“‚ðÄŠJ‚·‚é‚Ì‚ÅA‚¸‚ꂽˆÊ’u‚Ȃ̂Ƀ}ƒbƒ`‚µ‚½‚Æl‚¦‚Ä‚µ‚Ü‚¢‚Ü‚·B\G‚ðŽg‚í‚È‚¢‚ÆAŠÔˆá‚Á‚½ˆÊ’u‚Ƀ}ƒbƒ`‚·‚é‚©‚à‚µ‚ê‚È‚¢‚¤‚¦‚ÉA—]Œv‚ÈÄŒŸ¸‚ð‚·‚é‚Ì‚ÅAŽžŠÔ‚à‚©‚©‚è‚Ü‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+ $str = 'ŽŽŽŽŽŽŽŽEŽŽŽŽŽŽŽŽE';
+ $pat = 'ŽE';
+ $str =~ s/\G($char*?)($pat)/${1}E/og;
+ # 'ŽŽŽŽŽŽŽŽEŽŽŽŽŽŽŽŽE' ‚Ì‚Ü‚Üi³‚µ‚¢jB
+
+\G‚ð•t‚¯‚È‚¢ê‡
+
+ $str = 'ŽŽŽŽŽŽŽŽEŽŽŽŽŽŽŽŽE';
+ $pat = 'ŽE';
+ $str =~ s/($char*?)($pat)/${1}E/og; # 'ŽE' ‚ª‚ ‚ê‚Î 'E' ‚É’uŠ·
+ print $str;
+ # 'ŽŽŽŽŽŽŽEŽŽŽŽŽŽŽE' ‚É‚È‚Á‚Ä‚µ‚Ü‚¤i‚¨‚©‚µ‚¢jB
+
+@@@@ŽŽŽŽŽŽŽŽEŽŽŽŽŽŽŽŽE
+‚P‰ñ–Ú@¨¨¨¨/¨¨¨¨/ iƒ}ƒbƒ`‚µ‚È‚¢j
+‚Q‰ñ–Ú@|¨¨¨Ë||||||||| iƒ}ƒbƒ`‚µ‚½‚Ì‚Å’uŠ·j
+‚R‰ñ–Ú@|||||||||¨¨¨¨/ iƒ}ƒbƒ`‚µ‚È‚¢j
+‚S‰ñ–Ú@||||||||||¨¨¨Ë iƒ}ƒbƒ`‚µ‚½‚Ì‚Å’uŠ·j
+
+@–}—áF ¨@$char‚ª‚QƒoƒCƒg•¶Žš‚Ƀ}ƒbƒ`
+@@@@@/@$char‚ª‚PƒoƒCƒg•¶Žš‚Ƀ}ƒbƒ`
+@@@@ Ë@$pat‚ªƒ}ƒbƒ`
+@@@@@|@ƒXƒLƒƒƒ“‚͈̔͊O
+
+‚½‚¾‚µAƒpƒ^[ƒ“‚ªƒ[ƒ•¶Žš•‚Ƀ}ƒbƒ`‚·‚éꇂɂÍA’ˆÓ‚ª•K—v‚Å‚·BŽŸ‚Ì—á‚ÍAuƒAv‚Ì‘O‚É 'Z' ‚ð“ü‚ê‚é‚à‚Ì‚Å‚·B‘æ‚P—á‚Í•¶Žš‚Ì‚¸‚êi'ƒA' : 0x8341‚ɑ΂µ‚Ä'‹ƒA' : 0x8B8341‚ª‚¸‚ê‚ă}ƒbƒ`‚·‚éj‚ð–h‚¢‚Å‚¢‚Ü‚¹‚ñB‘æ‚Q—á‚ÍAã‚Ì•û–@‚Åu‚¸‚êv‚ð–h‚²‚¤‚Æ‚µ‚½‚Ì‚Å‚·‚ªAZ ‚Ö‚Ì’uŠ·‚ª˜A‘±‚µ‚Ä‹N‚±‚Á‚Ä‚¢‚Ü‚·B
+‚±‚ê‚Í‘æ‚R—á‚̂悤‚É‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚±‚ê‚ÍA‘æ‚Q—á‚Å‚Íu‚È‚ºHv‚É‘‚¢‚½‚悤‚ÉA’uŠ·‚³‚ê‚é‚©‚ç‚Æl‚¦‚ç‚ê‚Ü‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+$str = "ƒAƒCƒEƒGƒAƒAƒCƒEƒA‹ƒA";
+
+print +($temp = $str) =~ s/(?=ƒA)/Z/g, $temp;
+
+print +($temp = $str) =~ s/\G($char*?)(?=ƒA)/${1}Z/g, $temp;
+
+print +($temp = $str) =~ s/\G(\A|$char+?)(?=ƒA)/${1}Z/g, $temp;
+
+Œ‹‰Ê
+5 ZƒAƒCƒEƒGZƒAZƒAƒCƒEZƒA‹ZƒA
+7 ZƒAƒCƒEƒGZZƒAZZƒAƒCƒEZZƒA‹ƒA
+4 ZƒAƒCƒEƒGZƒAZƒAƒCƒEZƒA‹ƒA
+
+‚È‚ºH
+ ƒA ƒC ƒE ƒG ƒA ƒA ƒC ƒE ƒA ‹ƒ A
+1 \G Z
+2 \G$char$char$char$char Z
+3 \G Z
+4 \G$char Z
+5 ˆÈ‰ºAÈ—ª
+
+‚‚܂èAƒOƒ[ƒoƒ‹ƒ}ƒbƒ`‚Å‚ÍAƒ}ƒbƒ`‚ªƒ[ƒ•¶Žš•‚Å‚È‚¢ƒpƒ^[ƒ“‚Ì‘O‚É‚Í\G($char*?)‚ðAƒ[ƒ•¶Žš•‚Å‚ ‚éƒpƒ^[ƒ“‚Ì‘O‚É‚Í\G(\A|$char+?)‚ð“ü‚ê‚é•K—v‚ª‚ ‚è‚Ü‚·B
+‚½‚¾‚µA‚±‚ê‚łೂµ‚­iHjƒ}ƒbƒ`‚³‚¹‚ç‚ê‚È‚¢ê‡‚ª‚ ‚è‚Ü‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+$str = "0123000123";
+
+print +($temp = $str) =~ s/0*/Z/g, $temp;
+
+print +($temp = $str) =~ s/\G($char*?)0*/${1}Z/g, $temp;
+
+print +($temp = $str) =~ s/\G(\A|$char+?)0*/${1}Z/g, $temp;
+__END__
+ 9 ZZ1Z2Z3ZZ1Z2Z3Z
+14 ZZ1ZZ2ZZ3ZZ1ZZ2ZZ3ZZ
+ 7 Z1Z2Z3Z1Z2Z3Z
+
+‚±‚ê‚ÍAƒpƒ^[ƒ“‚ªƒ[ƒ•¶Žš•‚Ƀ}ƒbƒ`‚·‚é‚à‚Ì‚Å‚ ‚é‚ÆA/g‚ª‚»‚Ìê‚Å–³ŒÀ‚É‘«“¥‚Ý‚µ‚ÄI—¹‚µ‚È‚­‚È‚é‚Ì‚ð–h‚®‚½‚ßAperl‚ÍAƒ}ƒbƒ`‚ð‹­§“I‚Éi‚ß‚Ä‚¢‚é‚Ì‚Å‚·‚ªicf. perlre, Repeated patterns matching zero-length substringjA‚±‚Ìi‚ß•û‚Ì^Ž—i‚µ‚©‚àƒoƒCƒg’PˆÊ‚Å‚Í‚È‚­A•¶Žš’PˆÊ‚Åi‚Þ‚à‚Ìj‚ªA\G($char*?)‚â\G(\A|$char+?)‚Å‚ÍA‚¤‚Ü‚­‚Å‚«‚È‚¢‚©‚ç‚Å‚·B‚à‚Á‚Æ‚à‚±‚¤‚¢‚¤ƒ}ƒbƒ`‚ð‚·‚é‚±‚Æ‚ÍA‚Ù‚Æ‚ñ‚Ç‚È‚¢‚Æl‚¦‚ç‚ê‚Ü‚·‚Ì‚ÅA‹C‚É‚·‚é•K—v‚Í‚È‚¢‚Ì‚©‚à’m‚ê‚Ü‚¹‚ñiƒ•‰‚¯É‚µ‚ÝjB
+ƒAƒ‹ƒtƒ@ƒxƒbƒg‚̑啶Žš‚Ƭ•¶Žš
+Shift-JIS‚Ì‚QƒoƒCƒg•¶Žš‚Ì’†‚É‚ÍA‘æ‚QƒoƒCƒg‚ªASCII‚ʼnpŽš‚É“–‚½‚é‚à‚Ì‚ª‚ ‚è‚Ü‚·B‚»‚Ì‚½‚ßAŠÖ” uc, lc ‚âAƒƒ^•¶Žš \U, \L‚ª‚QƒoƒCƒg•¶Žš‚̈ꕔ‚ð•ÏŠ·‚µ‚Ä‚µ‚Ü‚Á‚½‚èi‚µ‚©‚µŠÖ” ucfirst, lcfirst ‚â ƒƒ^•¶Žš \u, \l ‚Í–â‘è‚Æ‚È‚ç‚È‚¢jAm//i ‚â s///i‚È‚Ç‚Ì /iCüŽq‚É‚æ‚Á‚ĈႤ•¶Žš‚Ȃ̂Ƀ}ƒbƒ`‚µ‚Ä‚µ‚Ü‚Á‚½‚è‚·‚邱‚Æ‚ª‚ ‚è‚Ü‚·B
+Shift-JIS•¶Žš—ñ‚ÉŠÜ‚Ü‚ê‚éASCII‚̉pŽš‚ð‘啶Žš‚Ü‚½‚ͬ•¶Žš‚É‘µ‚¦‚½‚¢‚È‚çA—Ⴆ‚ÎAŽŸ‚̂悤‚ȃTƒuƒ‹[ƒ`ƒ“‚ðì‚ê‚ÎŽÀŒ»‚Å‚«‚Ü‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+
+lc("PERLƒvƒƒOƒ‰ƒ~ƒ“ƒO"); # 'perlƒvƒƒoƒ‰ƒ~ƒ“ƒo'
+tolower("PERLƒvƒƒOƒ‰ƒ~ƒ“ƒO"); # 'perlƒvƒƒOƒ‰ƒ~ƒ“ƒO'
+
+sub tolower {
+ my $str = $_[0];
+ $str =~ s/\G($char*?)([A-Z]+)/$1\L$2/g;
+ $str;
+}
+
+sub toupper {
+ my $str = $_[0];
+ $str =~ s/\G($char*?)([a-z]+)/$1\U$2/g;
+ $str;
+}
+
+ƒP[ƒX–³Ž‹‚̃}ƒbƒ` /i ‚ÌꇂÍA—Ⴆ‚Î 'ƒG'‚Ì‘æ“ñƒoƒCƒg‚Í 'G' ‚Å‚ ‚èA'ƒg'‚Ì‘æ“ñƒoƒCƒg‚Í 'g' ‚Å‚ ‚邱‚Æ‚©‚çA'ƒG' =~ /ƒg/i‚̓}ƒbƒ`‚µ‚Ü‚·B‚Å‚·‚©‚çAShift-JIS‚ųŠm‚ȃ}ƒbƒ`‚ð‚µ‚½‚¯‚ê‚ÎA/iCüŽq‚ÍŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB
+‚©‚í‚è‚ÉA•¶Žš—ñ‚ÉŠÜ‚Ü‚ê‚éƒAƒ‹ƒtƒ@ƒxƒbƒgi“ñƒoƒCƒg•¶Žš‚Ì‘æ‚QƒoƒCƒg‚É‚ ‚é‚à‚̂𜂭j‚𬕶Žši‚Ü‚½‚͑啶ŽšA‚Ç‚¿‚ç‚©j‚É“ˆê‚µ‚ă}ƒbƒ`‚³‚¹‚Ü‚·Btolower‚Ì’è‹`‚Íã‚ð‚²——‰º‚³‚¢B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+
+$lcstr = tolower($str);
+$lckey = tolower(quotemeta $key);
+
+if ($lcstr =~ /^$char*?$lckey/) {
+ print "matched";
+}
+else {
+ print "not matched";
+}
+
+‚Ü‚½‚Í–„‚ßž‚ÝCüŽq (?ismx-ismx) ‚ð—p‚¢‚Ä‚àD‚¢Œ‹‰Ê‚𓾂ç‚ê‚Ü‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+"‘æ‚P‰ñPerluk‚Ì‚²ˆÄ“à" =~ /^$char*?PERLuK/i # ƒ}ƒbƒ`‚·‚éi¢‚éj
+"‘æ‚Q‰ñPerluk‚Ì‚²ˆÄ“à" =~ /^$char*?((?i)PERL)uK/ # ƒ}ƒbƒ`‚µ‚È‚¢i—Ç‚µj
+"‘æ‚R‰ñPerluK‚Ì‚²ˆÄ“à" =~ /^$char*?((?i)PERL)uK/ # ƒ}ƒbƒ`‚·‚éi—Ç‚µj
+
+‘SŠp‚QƒoƒCƒgƒAƒ‹ƒtƒ@ƒxƒbƒg‚̃P[ƒX–³Ž‹‚ÍA‘I‘ð‚É‚æ‚èŽÀŒ»‚Å‚«‚Ü‚·i‚ªA‚â‚Á‚Ï‚è•ÏjB'‚`'‚Ì‘æ‚QƒoƒCƒg‚ª '`' ‚È‚Ì‚àA‚¿‚å‚Á‚Æ’ˆÓ‚Å‚·im`` ‚È‚Ç‚Ì‚Æ‚«’v–½“IƒGƒ‰[‚É‚È‚éB‚½‚¾‚µƒoƒbƒNƒNƒH[ƒg‚ðŽg‚¤ˆÓ–¡‚Í“Á‚É‚È‚¢jBŒ´‘¥“I‚ɂ̓Šƒeƒ‰ƒ‹‚ðƒ}ƒbƒ`‰‰ŽZŽq‚â’uŠ·‰‰ŽZŽq‚É’¼Ú–„‚ßž‚Þ‚Ì‚Í”ð‚¯‚½‚¢Š‚Å‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+/(?:‚o|‚)(?:‚d|‚…)(?:‚q|‚’)(?:‚k|‚Œ)/;
+
+‚»‚Ì‘ã‚í‚è‚É‚±‚ñ‚ȃTƒuƒ‹[ƒ`ƒ“‚ðì‚Á‚Ä‚Ý‚Ä‚à‚æ‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+$CharRE = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+
+$pat = make_regexp_ignorecase("‚o‚d‚q‚kuK");
+print "‘æ‚T‰ñ‚o‚…‚’‚ŒuK‰ï" =~ /^$char*?$pat/ ? "OK": "NOT";
+
+sub make_regexp_ignorecase {
+ my $str = $_[0];
+ $str =~ s/\G([A-Za-z]+|$CharRE)/
+ my $c = ord $1;
+ if($c == 0x82) {
+ my $v = vec($1,1,8);
+ 0x81 <= $v && $v <= 0x9A ? sprintf('\\x82[\\x%2x\\x%2x]', $v, $v-33) :
+ 0x60 <= $v && $v <= 0x79 ? sprintf('\\x82[\\x%2x\\x%2x]', $v, $v+33) :
+ quotemeta($1);
+ }
+ elsif(0x41 <= $c && $c <= 0x5A || 0x61 <= $c && $c <= 0x7A) {"(?:(?i)$1)"}
+ else {quotemeta($1)}
+ /geo;
+ $str;
+}
+
+’·‚¢•¶Žš—ñ‚ɑ΂·‚鳋K•\Œ»ŒŸõ
+³‹K•\Œ»‚ÍAPerl ‚É‚Æ‚Á‚ÄŒ‡‚©‚¹‚È‚¢‘¶Ý‚Æ‚¢‚¦‚Ü‚·B‚µ‚©‚µ³‹K•\Œ»‚̧ŒÀ‚Æ‚µ‚ÄA*, +, {min,max} ‚È‚Ç‚Ì—ÊŽw’èŽq‚ªƒ}ƒbƒ`‚ðŒJ‚è•Ô‚¹‚é‰ñ”‚ÌãŒÀ‚Æ‚¢‚¤–â‘肪‚ ‚è‚Ü‚·B(Ú×‚Í perlre ŽQÆ‚Ì‚±‚Æ)B‚»‚Ì‚½‚ßA$char*? ‚Æ‚¢‚¤³‹K•\Œ»‚É‚ÍAŠëŒ¯«‚ª‚ ‚è‚Ü‚·B
+—Ⴆ‚ÎAŽŸ‚̂悤‚ȃ}ƒbƒ`ƒ“ƒO‚ðl‚¦‚ÄŒ©‚Ü‚µ‚傤B$str‚ÍAu‚ v‚ª10–œŽš˜A‘±‚µ‚½‚ ‚Æ‚ÉAuƒAƒCABCv‚ª˜AŒ‹‚³‚ꂽ•¶Žš—ñ‚Å‚·B‚±‚̂悤‚È•¶Žš—ñi‚½‚¾‚µAuw‚ x‚ª10–œŽš˜A‘±v‚Æ‚¢‚¤‚±‚Æ‚Í•ª‚©‚炸A”CˆÓ‚Ì Shift-JIS ƒeƒLƒXƒg‚Å‚ ‚낤‚Æ‚¢‚¤‚±‚Æ‚É‚µ‚Ü‚·j‚©‚çA”¼ŠpƒAƒ‹ƒtƒ@ƒxƒbƒg‚ª˜A‘±‚µ‚½•”•ª‚ðŒ©‚Â‚¯‚½‚¢‚Æ‚µ‚Ü‚µ‚傤B‚·‚é‚ÆA¡‚Ü‚Å‚Ìl‚¦•û‚©‚ç‚·‚é‚ÆAŽŸ‚̂悤‚É‚·‚ê‚΂悢‚ÆŽv‚í‚ê‚Ü‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+my $char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+my $str = ('‚ ' x 100000) . 'ƒAƒCABC';
+$str =~ /^$char*?([A-Z]+)/o;
+print $1;
+
+‚µ‚©‚µA‚±‚ê‚ÍAŠÂ‹«‚É‚æ‚Á‚Ä‚ÍA‘å‚«‚ȃGƒ‰[‚ðˆø‚«‹N‚±‚µ‚Ü‚·B—Ⴆ‚ÎAWindows 98ã‚Å Active Perl 522 ‚ð—p‚¢‚½ê‡AError: Runtime exception ‚Æ‚¢‚¤ Perl ‚̃Gƒ‰[‚É‚È‚è‚Ü‚µ‚½B‚Ü‚½AWindows 98ã‚ÅVC++ 6.0‚ŃRƒ“ƒpƒCƒ‹‚³‚ꂽ Perl 5.6.1 ‚¾‚ÆAu‚±‚̃vƒƒOƒ‰ƒ€‚Í•s³‚Ȉ—‚ðs‚Á‚½‚Ì‚Å‹­§I—¹‚³‚ê‚Ü‚·B`v‚È‚Ç‚Æ‚¢‚Á‚½ƒGƒ‰[‚É‚È‚è‚Ü‚µ‚½B
+‚±‚̂悤‚È–â‘è‚ð‚Å‚«‚邾‚¯–h‚®‚½‚ß‚É‚ÍAŽŸ‚̂悤‚É‚µ‚Ü‚·B‚‚܂èA•¶Žš—ñ‚Ì擪‚©‚ç’²‚ׂĂ¢‚­ê‡A“ñƒoƒCƒg•¶Žš‚Ì•¶Žš‹«ŠE‚ðŠÔˆá‚¦‚é‚Ì‚ÍA“ñƒoƒCƒg•¶Žš‚Ì‘æˆêƒoƒCƒg‚Ì’¼Œã‚𕶎š‹«ŠE‚ÆŒë”FŽ¯‚µ‚½Žž‚¾‚¯‚Å‚·BShift-JIS‚Å‚ÍA“ñƒoƒCƒg•¶Žš‚Ì‘æˆêƒoƒCƒg‚ÍA[\x81-\x9F\xE0-\xFC] ‚¾‚¯‚Å‚·B‚ ‚é‚¢‚ÍAEUC-JP ‚É•ÏŠ·‰Â”\‚ȗ̈悾‚¯‚ðl—¶‚·‚ê‚ÎA[\x81-\x9F\xE0-\xEF] ‚¾‚¯‚Æ‚¢‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚»‚êˆÈŠO‚̃oƒCƒg‚Ì’¼Œã‚ÍA—Ⴆ‚ÎA0x41 ‚Ì’¼Œã‚ÍA'A' ‚Ì’¼Œã‚©A'ƒA' ‚Ì’¼Œã‚©‚Í•ª‚©‚è‚Ü‚¹‚ñ‚ªAŠm‚©‚É•¶Žš‹«ŠE‚É‚È‚è‚Ü‚·B]‚Á‚ÄA[\x81-\x9F\xE0-\xFC]+ i‚Ü‚½‚Í [\x81-\x9F\xE0-\xEF]+ j‚̃oƒCƒgi“ñƒoƒCƒg•¶Žšj‚ª˜A‘±‚·‚é‚Æ‚±‚낾‚¯‚É’ˆÓ‚·‚ê‚΂悢‚±‚Æ‚É‚È‚è‚Ü‚·B
+‚±‚Ì‚½‚ßAˆÈ‰º‚̂悤‚ÉA^$char*? ‚Ì‘ã‚í‚è‚É $Apad ‚ðŽg‚¢A\G$char*? ‚Ì‘ã‚í‚è‚É $Gpad ‚ð—p‚¢‚ê‚ÎAˆêƒoƒCƒg•¶Žš‚©A“ñƒoƒCƒg•¶Žš‚Ì‚¤‚¿‘æ“ñƒoƒCƒg‚ª [\x40-\x7E\x80\xA0-\xDF] ‚ÅI‚í‚é‚à‚Ì‚ªA­‚È‚­‚Æ‚à“K“–‚ÈŠÔŠu‚ÅiãŒÀ‚É’B‚µ‚È‚¢‚¤‚¿‚ÉjoŒ»‚·‚ê‚ÎAƒGƒ‰[‚ɂȂ炸‚Ɉ—‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·BiŠm—¦“I‚È–â‘è‚Å‚·‚Ì‚ÅAŠ®‘S‚Å‚Í‚ ‚è‚Ü‚¹‚ñBj
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+# ˆê‰ñ‚¾‚¯ƒ}ƒbƒ`
+my $Apad = '(?:(?:\A|[\x00-\x80\xA0-\xDF])(?:[\x81-\x9F\xE0-\xFC]{2})*?)';
+my $str1 = ('‚ ' x 100000) . 'ƒAƒCABC';
+$str1 =~ /$Apad([A-Z]+)/o;
+print "$1\n"; # "ABC" ‚Æ•\Ž¦‚³‚ê‚éB
+
+# ƒOƒ[ƒoƒ‹ƒ}ƒbƒ`
+my $Gpad = '(?:(?:\G|[\x00-\x80\xA0-\xDF])(?:[\x81-\x9F\xE0-\xFC]{2})*?)';
+
+my $str2 = '‚ ' x 100000 . 'ƒAƒCABC'. '‚¨' x 100000 . 'XYZ';
+my @array = $str2 =~ /$Gpad([A-Z]+)/go;
+print "@array\n"; # "ABC XYZ" ‚Æ•\Ž¦‚³‚ê‚éB
+
+ŠOŽš‚Ì•ÏŠ·
+ƒxƒ“ƒ_’è‹`•¶Žš‚⃆[ƒU’è‹`•¶Žš‚ðŠÜ‚Þ•¶Žš—ñ‚𑼂̊‹«‚Å‚à—˜—p‚Å‚«‚é‚悤‚É‚·‚é‚É‚ÍA“KØ‚È•ÏŠ·‚ª•K—v‚Å‚·i–³˜_A‚Ü‚Á‚½‚­“¯‚¶Žš‘Ì‚Ì—˜—p‚Í‚Ù‚Æ‚ñ‚Ç–]‚ß‚¸A‚¨‚»‚ç‚­‚Í—ÞŽ—‚µ‚½•¶Žš‚╶Žš—ñ‚É•ÏŠ·‚·‚邱‚Æ‚É‚È‚é‚Å‚µ‚傤jB‚±‚ê‚ÍPerl‚Å‚Í’uŠ·‰‰ŽZŽq s/// ‚ðŽg‚¦‚ΔäŠr“I—eˆÕ‚ÉŽÀŒ»‚Å‚«‚Ü‚·B
+‚ ‚ç‚©‚¶‚ßA‚Ç‚ÌŠOŽš‚ð‚Ç‚¤•ÏŠ·‚·‚é‚©‚ð’è‹`‚·‚é•ÏŠ·ƒe[ƒuƒ‹‚ð—pˆÓ‚µ‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñB‚±‚ê‚ÍPerl‚ł̓nƒbƒVƒ…‚É‚µ‚Ä‚¨‚­‚Æ‚»‚ÌŒã‚̈—‚ªŠy‚É‚È‚è‚Ü‚·B‚±‚±‚Å‚ÍA'w932_gai.txt'‚Å’è‹`‚·‚éAWindows codepage-932ƒR[ƒh‚ÉŠî‚¢‚½‹@ŽíˆË‘¶•¶Žš‚Ìi•”•ª“Ij•ÏŠ·ƒe[ƒuƒ‹‚ðŽg‚¤‚±‚Æ‚É‚µ‚Ü‚·B
+ŽŸ‚̃R[ƒh‚Å‚ÍA‚P•¶Žš‚ƒ}ƒbƒ`‚³‚¹A‚»‚Ì•¶Žš‚ª•ÏŠ·ƒnƒbƒVƒ…‚̃L[‚É‚ ‚ê‚ΑΉž‚·‚é’l‚Ì•¶Žš—ñ‚É’uŠ·‚µA‚»‚¤‚Å‚È‚¯‚ê‚΂»‚Ì‚Ü‚ÜŽc‚µ‚Ü‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+require 'w932_gai.txt'; # %table‚Ì’è‹`i•sŠ®‘SIj
+
+$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+
+$str =~ s/($char)/exists $table{$1} ? $table{$1} : $1/geo;
+
+“¯—l‚Ȉ—‚ÍA‚‚¬‚̂悤‚È‘‚«•û‚Å‚à‚Å‚«‚Ü‚·‚ªAŠOŽš‚Ƀ}ƒbƒ`‚·‚鳋K•\Œ» $gaiji‚ð—pˆÓ‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚¸‚ꂽƒ}ƒbƒ`‚ð‚µ‚È‚¢‚½‚ß‚ÉA‚±‚¿‚ç‚̳‹K•\Œ»‚É‚Í \G ‚ª•K—v‚Å‚·B—Ⴆ‚ÎA$str = '‡@';‚ÌŒã‚ë‚QƒoƒCƒg‚Í "\x87\x40" ‚Å‚·‚ªA‚±‚¤‚·‚ê‚΃}ƒbƒ`‚ª‚¸‚ê‚éS”z‚ª‚ ‚è‚Ü‚¹‚ñB‚Ü‚½A”ñ—~’£‚èƒ}ƒbƒ` ($char*?)‚ðŽg‚¦‚Î $char ‚ªŠOŽš‚Ƀ}ƒbƒ`‚µ‚È‚¢‚悤•ÏX‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+require 'w932_gai.txt'; # %table‚Ì’è‹`i•sŠ®‘SIj
+
+$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+$gaiji = '(?:[\x87][\x40-\x9c])';
+
+$str =~ s/\G($char*?)($gaiji)/$1$table{$2}/g;
+
+CP932d•¡’è‹`•¶Žš‚Ì•ÏŠ·
+Microsoft Windows “ú–{Œê”łňê”Ê“I‚ÉŽg—p‚³‚ê‚Ä‚¢‚éƒR[ƒhƒy[ƒW 932 (CP932) ‚Å‚ÍAŠô‚‚©‚Ì•¶Žš‚ªd•¡‚µ‚Ä’è‹`‚³‚ꂽó‘Ô‚É‚È‚Á‚Ä‚¢‚Ü‚·B‚±‚±‚ÅA•¶Žš‚ªd•¡’è‹`‚³‚ê‚Ä‚¢‚é‚Æ‚ÍAUnicode‚Ì“¯‚¶•„†ˆÊ’u‚ɑΉž•t‚¯‚ç‚ê‚Ä‚¢‚邱‚Æ‚Æ‚µ‚Ü‚·B
+—Ⴆ‚ÎACP932 -> Unicode -> CP932 ‚̇‚Å•ÏŠ·‚³‚ê‚é‚ÆAd•¡’è‹`•¶Žš‚ÍA‚Ç‚ê‚©ˆê‚‚ɑµ‚¦‚ç‚ê‚Ü‚·B‚±‚Ì—Dæ‡ˆÊ‚Í JIS X 0208, NEC“ÁŽê•¶Žš (13‹æ)AIBMŠg’£•¶Žš (115`119‹æ)ANEC‘I’èIBMŠg’£•¶Žš (89`92‹æ) ‚̇‚Å‚·Bˆê—á‚Æ‚µ‚ÄA'æ' ‚Ìê‡ANEC“ÁŽê•¶Žš‚Ì "\x87\x9A" ‚â IBMŠg’£•¶Žš‚Ì "\xFA\x5B" ‚ÍAJIS X 0208 ‚Ì "\x81\xE6" ‚É‚È‚è‚Ü‚·B
+‚µ‚©‚µACP-932 ‚̃eƒLƒXƒg’†Ad•¡’è‹`•¶Žš‚ª‚Ç‚ê‚©‚É‘µ‚Á‚Ä‚¢‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B—Ⴆ‚Î "\x87\x9A" ‚â "\xFA\x5B" ‚ªŠÜ‚Ü‚ê‚Ä‚¢‚é‚ÆAƒeƒLƒXƒg‚ð–Ú‚ÅŒ©‚é‚ƈႢ‚ª‚È‚¢‚Ì‚ÉA"\x81\xE6" ‚ÅŒŸõ‚µ‚Ä‚àŒ©‚‚¯‚ç‚ê‚È‚¢‚±‚Æ‚É‚È‚è‚Ü‚·B
+d•¡’è‹`•¶Žš‚𑵂¦‚郂ƒWƒ…[ƒ‹‚Æ‚µ‚ÄAShiftJIS/CP932/Correct.pm ‚ª‚ ‚è‚Ü‚·B“üŽè‚ÆŽg‚¢•û‚ÍPerl‚̃y[ƒW‚É–ß‚ê‚ÎŒ©‚‚©‚è‚Ü‚·B
+‚Ü‚½AShiftJIS/String.pm ‚Ì strtr() ‚Ü‚½‚Í trclosure() ‚ðŽg‚¤•û–@‚à‚ ‚è‚Ü‚·B“üŽè‚ÆŽg‚¢•û‚ÍPerl‚̃y[ƒW‚É–ß‚ê‚ÎŒ©‚‚©‚è‚Ü‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+
+# (1) $necJIS -> $jisNEC (9‘Î)
+ $necJIS = "\x87\x90\x87\x91\x87\x92\x87\x95\x87\x96\x87\x97\x87\x9A\x87\x9B\x87\x9C";
+ # NEC“ÁŽê•¶Žš‚Ì‚¤‚¿AJIS•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš
+ $jisNEC = "\x81\xE0\x81\xDF\x81\xE7\x81\xE3\x81\xDB\x81\xDA\x81\xE6\x81\xBF\x81\xBE";
+ # JIS•¶Žš‚Ì‚¤‚¿ANEC“ÁŽê•¶Žš‚Éd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš
+
+# (2) $necibmJIS -> $jisNECIBM (1‘Î)
+ $necibmJIS = "\xEE\xF9";
+ # NEC‘I’èIBMŠg’£•¶Žš‚Ì‚¤‚¿AJIS•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš
+ $jisNECIBM = "\x81\xCA";
+ # JIS•¶Žš‚Ì‚¤‚¿ANEC‘I’èIBMŠg’£•¶Žš‚Éd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš
+
+# (3) $ibmJIS -> $jisIBM (2‘Î)
+ $ibmJIS = "\xFA\x54\xFA\x5B";
+ # IBMŠg’£•¶Žš‚Ì‚¤‚¿AJIS•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš
+ $jisIBM = "\x81\xCA\x81\xE6";
+ # JIS•¶Žš‚Ì‚¤‚¿AIBMŠg’£•¶Žš‚Éd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš
+
+# (4) $ibmNEC -> $necIBM (13‘Î)
+ $ibmNEC = "\xFA\x4A-\xFA\x53\xFA\x58\xFA\x59\xFA\x5A";
+ # IBMŠg’£•¶Žš‚Ì‚¤‚¿ANEC“ÁŽê•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš
+ $necIBM = "\x87\x54-\x87\x5D\x87\x8A\x87\x82\x87\x84";
+ # NEC“ÁŽê•¶Žš‚Ì‚¤‚¿AIBMŠg’£•¶Žš‚Éd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš
+
+# (5) $necibmIBM -> $ibmNECIBM (13‘Î)
+ $necibmIBM = "\xEE\xEF-\xEE\xF8\xEE\xFA\xEE\xFB\xEE\xFC";
+ # NEC‘I’èIBMŠg’£•¶Žš‚Ì‚¤‚¿AIBMŠg’£•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš
+ $ibmNECIBM = "\xFA\x40-\xFA\x49\xFA\x55\xFA\x56\xFA\x57";
+ # IBMŠg’£•¶Žš‚Ì‚¤‚¿ANEC‘I’èIBMŠg’£•¶Žš‚Éd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš
+
+# (6) $necibmCJK -> $ibmCJK (360‘Î)
+ $necibmCJK = "\xED\x40-\xEE\xEC";
+ # NEC‘I’èIBMŠg’£•¶Žš’†‚ÌŠ¿Žš
+ $ibmCJK = "\xFA\x5C-\xFC\x4B";
+ # IBMŠg’£•¶Žš’†‚ÌŠ¿Žš
+
+use ShiftJIS::String qw(trclosure);
+
+# •ÏŠ·—pƒNƒ[ƒWƒƒ‚̶¬
+$correctCP932 = trclosure(
+ $necJIS.$necibmJIS.$ibmJIS.$ibmNEC.$necibmIBM.$necibmCJK, # from
+ $jisNEC.$jisNECIBM.$jisIBM.$necIBM.$ibmNECIBM.$ibmCJK # to
+);
+
+$result = $correctCP932->($source); # $source ‚ð•ÏŠ·‚µ‚Ä $result ‚𓾂é
+
+•¶Žš”‚𔂦‚é
+Shift-JIS•¶Žš—ñ‚Ì•¶Žš”‚𔂦‚é‚É‚ÍAƒ}ƒbƒ`‰‰ŽZŽq‚ð—˜—p‚·‚é‚È‚çƒXƒJƒ‰[ƒRƒ“ƒeƒLƒXƒg‚Å”‚¦‚½•û‚ªŽáŠ±‘¬‚©‚Á‚½‚Å‚·B‚»‚ê‚æ‚èA’uŠ·‰‰ŽZŽq‚ð—˜—p‚µ‚½‚Ù‚¤‚ª‘¬‚­‘‚¯‚é‚Æ‚í‚©‚è‚Ü‚µ‚½B
+‚à‚Á‚Æ‚àXS‚Å‘‚¢‚½‚Ù‚¤‚ª‚¸‚Á‚Æ‘¬‚©‚Á‚½‚Å‚·B‚Ü‚ AXSUB‚Í–³—‚É—˜—p‚µ‚È‚­‚Ä‚à‚æ‚¢‚Å‚µ‚傤B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+use Benchmark;
+
+$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+$s = "Š¿Žš‚ \0A±CƒeƒXƒg -";
+
+timethese (100000, {
+ le => q{
+ ($str = $s) =~ s/$char/0/go;
+ $le = length $str;
+ },
+ sg => q{
+ $sg = ($str = $s) =~ s/$char//go;
+ },
+ ab => q{
+ $ab = 0;
+ $ab++ while $s =~ /[^\x81-\x9F\xE0-\xFC]|../g;
+ },
+ ar => q{
+ $ar = @{[ $s =~ /$char/go ]};
+ },
+ gr => q{
+ $gr = grep defined, $s =~ /$char/go;
+ },
+ wh => q{
+ $wh = 0;
+ $wh++ while $s =~ /$char/go;
+ },
+ sj => q{
+ $sj = sjslen($s);
+ },
+ xs => q{
+ $xs = sjlength($s);
+ },
+});
+
+sub sjslen {
+ my($str,$len,$i,$c,$blen);
+ $str = shift;
+ $blen = length $str;
+ while ($i < $blen) {
+ $c = vec($str, $i, 8);
+ if (0x81 <= $c && $c <= 0x9F || 0xE0 <= $c && $c <= 0xFC){ $i++ }
+ $i++,$len++;
+ }
+ $len;
+}
+
+Œ‹‰Ê
+Benchmark: timing 100000 iterations of ab, ar, gr, le, sg, sj, wh, xs...
+ ab: 4 wallclock secs ( 3.46 usr + 0.00 sys = 3.46 CPU) @ 28901.73/s
+ ar: 6 wallclock secs ( 5.98 usr + 0.00 sys = 5.98 CPU) @ 16722.41/s
+ gr: 6 wallclock secs ( 5.50 usr + 0.00 sys = 5.50 CPU) @ 18181.82/s
+ le: 3 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 47846.89/s
+ sg: 2 wallclock secs ( 1.92 usr + 0.00 sys = 1.92 CPU) @ 52083.33/s
+ sj: 9 wallclock secs ( 8.57 usr + 0.00 sys = 8.57 CPU) @ 11668.61/s
+ wh: 5 wallclock secs ( 4.78 usr + 0.00 sys = 4.78 CPU) @ 20920.50/s
+ xs: 1 wallclock secs ( 0.38 usr + 0.00 sys = 0.38 CPU) @ 263157.89/s
+ (warning: too few iterations for a reliable count)
+
+XSUB
+int
+sjlength(arg)
+ SV* arg
+ PROTOTYPE: $
+ PREINIT:
+ unsigned char *str, *p, *e;
+ STRLEN byte, len = 0;
+ CODE:
+ p = str = (unsigned char *)SvPV(arg, byte);
+ e = str + byte;
+ while (p < e) {
+ if (0x81 <= *p && *p <= 0x9F || 0xE0 <= *p && *p <= 0xFC)
+ ++p;
+ ++p, ++len;
+ }
+ RETVAL = len;
+ OUTPUT:
+ RETVAL
+
+•¶Žš’PˆÊ‚É•ª‚¯‚é
+Shift-JIS•¶Žš—ñ‚𕶎š’PˆÊ‚É•ªŠ„‚µ‚Ü‚µ‚傤B‚±‚ÌꇂÍAXS‚ð—˜—p‚µ‚Ä‚à‚ ‚܂葬‚­‚È‚è‚Ü‚¹‚ñ‚Å‚µ‚½B•Ô‚è’l‚̃ŠƒXƒg‚ð—pˆÓ‚·‚é‚Ì‚ÉŽžŠÔ‚ªŽæ‚ç‚ê‚é‚Ì‚©A‚â‚Í‚èPerl‚̳‹K•\Œ»‚̈—‚Í‚©‚Ȃ葬‚¢‚à‚Ì‚¾‚Æ‚¢‚¤‚±‚Æ‚Å‚µ‚傤B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+use Benchmark;
+
+$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+$s = "“ú–{ŒêÆÎݺÞ\0ABC" x 100;
+
+timethese (1000, {
+ re => q{
+ @re = $s =~ /$char/go;
+ },
+ xs => q{
+ @xs = sjsplit($s);
+ },
+});
+
+Œ‹‰Ê
+Benchmark: timing 1000 iterations of re, xs...
+ re: 7 wallclock secs ( 6.65 usr + 0.00 sys = 6.65 CPU) @ 150.38/s
+ xs: 6 wallclock secs ( 5.33 usr + 0.00 sys = 5.33 CPU) @ 187.62/s
+
+XSUB
+void
+sjsplit(arg)
+ SV* arg
+ PROTOTYPE: $
+ PREINIT:
+ unsigned char *str, *p, *e;
+ STRLEN ch, byte, len = 0;
+ PPCODE:
+ str = (unsigned char *)SvPV(arg,byte);
+ e = str + byte;
+ for (p = str; p < e; p++) {
+ if (0x81 <= *p && *p <= 0x9F || 0xE0 <= *p && *p <= 0xFC) ++p;
+ ++len;
+ }
+ EXTEND(SP,len);
+ for (p = str; p < e; p += ch) {
+ ch = (0x81 <= *p && *p <= 0x9F || 0xE0 < *p && *p <= 0xFC) ? 2 : 1;
+ PUSHs(sv_2mortal(newSVpv(p,ch)));
+ }
+
+FX‚È•ªŠ„
+•¶Žš‚Å•ªŠ„‚Å‚Ý‚½‚悤‚ÉA•¶Žš—ñ‚𕪊„‚·‚é‚É‚ÍAm//g‚ª•Ö—˜‚Å‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+$onebyte = '[\x00-\x7F\xA1-\xDF]';
+$twobyte = '(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+
+#‚PƒoƒCƒg•¶Žš‚̉ò‚Æ‚QƒoƒCƒg•¶Žš‚̉ò‚É•ª‚¯‚éB
+ while ($str =~ /\G($onebyte*)($twobyte*)/g) {
+ push @one, $1 if $1 ne '';
+ push @two, $2 if $2 ne '';
+ }
+
+#‹å“_‚ªÅŒã‚Ì•¶Žš‚Æ‚È‚é‚悤‚É•ªŠ„‚·‚éB
+# 'B' ‚Å‚Í‚¢‚¢‚ªA•¶Žš‚É‚æ‚Á‚Ä‚Í’ˆÓ‚ª•K—vB
+ @sentences = $str =~ /\G$char*?(?:B|D|$)/g;
+
+“Á’è‚Ì’·‚³‚ÅØ‚è‚»‚낦‚é
+’·‚¢•¶Žš—ñ‚ð“Á’è‚Ì’·‚³iƒoƒCƒg’·j‚ÅØ‚è‚»‚낦‚é‚È‚çAŽŸ‚̂悤‚É‚µ‚Ä‚Å‚«‚Ü‚·B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+
+$str = '‚í‚´‚í‚´EUC-JP‚É•ÏŠ·‚µ‚È‚¢‚ÅAShift-JIS‚̂܂܈—'.
+ '‚Å‚«‚½‚ç‚¢‚¢‚ñ‚¾‚¯‚ÇA‚È‚©‚È‚©–Ê“|‚¾‚Ë‚¦B';
+
+print join "\n", bytebreak($str,15);
+
+sub bytebreak{
+ my($byte,$bmax,$ch,@lines);
+ my $str = shift;
+ $byte = $bmax = shift;
+ foreach $ch ($str =~ /$char/go) {
+ $byte += length $ch; # ŽŸ‚Ì•¶Žš‚ðŒp‚¬‘«‚µ‚½’·‚³
+ if ($byte <= $bmax) {
+ $lines[-1] .= $ch; # ’·‚·‚¬‚È‚¯‚ê‚ÎŒp‚¬‘«‚·
+ } else {
+ $byte = length $ch;
+ push @lines, $ch; # ‚³‚à‚È‚¯‚ê‚ÎŽŸ‚Ìs‚Ö
+ }
+ }
+ return @lines;
+ # ’·‚³‚ª‘«‚ç‚È‚¢ê‡‚ÉA‰E‚ðƒXƒy[ƒX‚Å–„‚ß‚½‚¯‚ê‚ÎB
+ # return map {$_ .= ' ' x ($bmax - length)} @lines;
+}
+
+‹Ö‘¥ˆ—‚ÍA—Ⴆ‚ÎŽŸ‚̂悤‚É‚µ‚Äs‚¢‚Ü‚·B’Pƒ‚Èl‚¦•û‚Å‚ÍA‹Ö‘¥ˆ—‚ÍA(i) s“ª‹Ö‘¥•¶Žš‚Ì’¼‘O‚ʼnüs‚µ‚È‚¢G(ii) s––‹Ö‘¥•¶Žš‚Ì’¼Œã‚ʼnüs‚µ‚È‚¢G‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B‚Ü‚½A"(a)"‚̂悤‚ÉAs––‹Ö‘¥•¶Žš‚Æs“ª‹Ö‘¥•¶Žš‚ÌŠÔ‚É‚P•¶Žš‚µ‚©‚È‚¢˜A‘±‚µ‚½•”•ª‚ÍA‚»‚Ì•”•ª‚Ì‘S‘Ì‚ª–³‰üs‚É‚È‚é“_‚É‚à”z—¶‚µ‚Ü‚·B
+‚±‚Ì—á‚Å‚Í•¶Žš—ñ‚Ì’·‚³‚ðƒoƒCƒg’· length ‚Å‹K’肵‚Ä‚¢‚Ü‚·‚ªA•¶Žš•‚ƃoƒCƒg”‚Í•K‚¸‚µ‚à”ä—Ⴕ‚Ü‚¹‚ñ‚Ì‚ÅAꇂɂæ‚Á‚Ä‚ÍiƒMƒŠƒVƒA•¶Žš‚Í”¼Šp•‚É‚µ‚½‚¢‚Æ‚©A‚Ü‚½‚̓vƒƒ|[ƒVƒ‡ƒiƒ‹‚ÌꇂƂ©AUTF-8‚ÌꇂƂ©j•¶Žš•‚ð•Ô‚· width ‚̂悤‚ÈŠÖ”‚ð’è‹`‚·‚é•K—v‚ª‚ ‚é‚Å‚µ‚傤B
+‚Ü‚½A‚±‚Ì—á‚Ì‚â‚è•û‚Å‚ÍA‹Ö‘¥‚É‚æ‚é–³‰üs•”•ª‚¾‚¯‚ňês‚æ‚è’·‚­‚È‚éꇂÍA‚Í‚Ý‚¾‚µ‚ð–h‚°‚Ü‚¹‚ñB‚»‚ꂪ¢‚é‚È‚çA‹Ö‘¥‚Ì—áŠO‚Æ‚µ‚Äs‚𕪂¯‚éi—Ⴆ‚Î$next‚Ì’·‚³‚ª$bmax‚ð’´‚¦‚È‚¢‚悤‚É‚·‚éjˆ’u‚ª•K—v‚Å‚µ‚傤B
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+$CharRE = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
+
+# s“ª‹Ö‘¥•¶Žšiˆê•”•ªj
+$NotAtBegin = q/)]}fhvxjnp!,.:;?ABXJKICDFGH/;
+# s––‹Ö‘¥•¶Žšiˆê•”•ªj
+$NotAtEnd = q/([{eguwimo/;
+
+# ƒnƒbƒVƒ…‚ðì‚é
+@NotAtBegin{$NotAtBegin =~ m/$CharRE/g} = ();
+@NotAtEnd{ $NotAtEnd =~ m/$CharRE/g} = ();
+
+$Str = '‚í‚´‚í‚´EUC-JP‚É•ÏŠ·‚µ‚È‚¢‚ÅAShift-JIS‚̂܂܈—'.
+ '‚Å‚«‚½‚ç‚¢‚¢‚ñ‚¾‚¯‚ÇA‚È‚©‚È‚©–Ê“|‚¾‚Ë‚¦B';
+
+print join "\n", linebreak($Str,16);
+
+sub linebreak{
+ my($byte,$i,@chars,$next,@lines);
+ my($str, $bmax, $pad) = @_;
+
+ # $byte‚ÍŽŸ‚Ì•¶Žš‚ðŒp‚¬‘«‚µ‚½‚Æ‚«‚Ì’·‚³
+ $byte = $bmax; # ‚·‚®‰üs‚Å‚«‚邽‚߂̉Šú’lB
+
+ # •¶Žš’PˆÊ‚ɂ΂炷
+ @chars = $str =~ /$CharRE/go;
+
+ for ($i=0; $i<@chars; $i++) {
+ $next .= $chars[$i]; # ŽŸ‚Ì•¶Žš
+ $byte += length $chars[$i]; # ŽŸ‚Ì•¶Žš‚ðŒp‚¬‘«‚µ‚½’·‚³
+
+ # ŽŸ‚Ì•¶Žš‚ªs––‹Ö‘¥‚Ì‚Æ‚«
+ next if $i+1 < @chars && exists $NotAtEnd{ $chars[$i] };
+ # ŽŸ‚Ì•¶Žš‚ÌŽŸ‚ªs“ª‹Ö‘¥‚Ì‚Æ‚«
+ next if $i+1 < @chars && exists $NotAtBegin{ $chars[$i+1] };
+
+ # s‚ÌU‚蕪‚¯
+ # ’·‚·‚¬‚È‚¯‚ê‚ÎŒp‚¬‘«‚·
+ if ($byte <= $bmax) {
+ $lines[-1] .= $next;
+ }
+ # ‚³‚à‚È‚¯‚ê‚ÎŽŸ‚Ìs‚Ö
+ else {
+ push @lines, $next;
+ $byte = length $next;# V‚µ‚¢s‚Ì’·‚³
+ }
+ $next = '';
+ }
+ return defined $pad && 1 == length $pad # ‹l‚ß•¨
+ ? map {$_ .= $pad x ($bmax - length)} @lines
+ : @lines;
+}
+
+‚Ԃ牺‚ª‚è‹Ö‘¥‚Ìê‡i$bmin ‚©‚ç $bmax‚Ì”ÍˆÍ‚ð‹–‚·jB
+ $bmin = $bmax - 2; # —Ⴆ‚ÎB
+
+ # s‚ÌU‚蕪‚¯
+ # ’·‚·‚¬‚È‚¯‚ê‚ÎŒp‚¬‘«‚·
+ if ($byte <= $bmax && @lines && length $lines[-1] < $bmin){
+ $lines[-1] .= $next;
+ }
+ # ‚³‚à‚È‚¯‚ê‚ÎŽŸ‚Ìs‚Ö
+ else {
+ push @lines, $next;
+ $byte = length $next;# V‚µ‚¢s‚Ì’·‚³
+ }
+
+“ú–{Œê•¶Žš—ñ‚ð•À‚Ñ‘Ö‚¦‚é
+‰¼–¼•¶Žš—ñ‚ðŒÜ\‰¹‡‚Ƀ\[ƒg‚·‚郂ƒWƒ…[ƒ‹‚Æ‚µ‚ÄAShiftJIS/Collate.pm ‚ª‚ ‚è‚Ü‚·B“üŽè‚ÆŽg‚¢•û‚ÍPerl‚̃y[ƒW‚É–ß‚ê‚ÎŒ©‚‚©‚è‚Ü‚·B
+u“Ç‚ÝE•\‹LƇv‚ÍŽŸ‚̂悤‚É‚µ‚Äs‚¢‚Ü‚·BsortYomiƒƒ\ƒbƒh‚̎󂯎æ‚郊ƒXƒg‚ÌŠe—v‘f‚ÍA[ •\‹L—ñ, “Ç‚Ý—ñ ]‚Æ‚¢‚¤”z—ñƒŠƒtƒ@ƒŒƒ“ƒX‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+use ShiftJIS::Collate;
+
+my @data = (
+ [qw/ ¬ŽR ‚±‚â‚Ü /],
+ [qw/ ’·“c ‚È‚ª‚½ /],
+ [qw/ “c’† ‚½‚È‚© /],
+ [qw/ —é–Ø ‚·‚¸‚« /],
+ [qw/ ¬“ˆ ‚±‚¶‚Ü /],
+ [qw/ Ž™“‡ ‚±‚¶‚Ü /],
+ [qw/ ¬ŽR ‚¨‚â‚Ü /],
+ [qw/ ¬“‡ ‚±‚¶‚Ü /],
+ [qw/ ¬“‡ ‚±‚¶‚Ü /],
+ [qw/ ŽR“c ‚â‚Ü‚¾ /],
+ [qw/ ‰i“c ‚È‚ª‚½ /],
+);
+
+@sort = ShiftJIS::Collate->new()->sortYomi(@data);
+
+uŠÈˆÕ‘ã•\“Ç‚ÝƇv‚ÍŽŸ‚̂悤‚É‚µ‚Äs‚¢‚Ü‚·BsortDaihyoƒƒ\ƒbƒh‚̎󂯎æ‚郊ƒXƒg‚ÌŠe—v‘f‚ÍA[ •\‹L—ñ, “Ç‚Ý—ñ ]‚Æ‚¢‚¤”z—ñƒŠƒtƒ@ƒŒƒ“ƒX‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+ƒTƒ“ƒvƒ‹ƒR[ƒh
+
+#!perl
+use ShiftJIS::Collate;
+
+my @data = (
+ [qw/ ƒÉŒvŽZ ‚ç‚Þ‚¾‚¯‚¢‚³‚ñ /],
+ [qw/ JIS”Ô† ‚¶‚·‚΂ñ‚²‚¤ /],
+ [qw/ ˆÀ’B ‚ ‚¾‚¿ /],
+ [qw/ ˆÀ“¡ ‚ ‚ñ‚Ç‚¤ /],
+ [qw/ ‰Í¼ ‚©‚³‚¢ /],
+ [qw/ ‰Í“à ‚©‚í‚¿ /],
+ [qw/ Šp“c ‚©‚­‚½ /],
+ [qw/ Šp“c ‚©‚Ç‚½ /],
+ [qw/ ”@ŒŽ ‚«‚³‚炬 /],
+ [qw/ ‰Í“à ‚±‚¤‚¿ /],
+ [qw/ KŽR ‚±‚¤‚â‚Ü /],
+ [qw/ KŽR ‚³‚«‚â‚Ü /],
+ [qw/ ²“¡ ‚³‚Æ‚¤ /],
+ [qw/ ²˜a“c ‚³‚킾 /],
+ [qw/ ‘ò“‡ ‚³‚킵‚Ü /],
+ [qw/ ‘ò“c ‚³‚킾 /],
+ [qw/ àV“c ‚³‚킾 /],
+ [qw/ Šp“c ‚‚̂¾ /],
+ [qw/ ’Æˆä ‚Â‚¿‚¢ /],
+ [qw/ “yˆä ‚‚¿‚¢ /],
+ [qw/ “y‹ ‚‚¿‚¢ /],
+ [qw/ ŒËˆä ‚Æ‚¢ /],
+ [qw/ ŒË“c ‚Æ‚¾ /],
+ [qw/ “yˆä ‚Ç‚¢ /],
+ [qw/ “y‹ ‚Ç‚¢ /],
+ [qw/ “yŠò ‚Æ‚« /],
+ [qw/ ˆÀ“c ‚â‚·‚¾ /],
+);
+
+@sort = ShiftJIS::Collate->new()->sortDaihyo(@data);
+
+
+Shift-JIS‚ÌŠ¿Žš‚ðŠÜ‚Þƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼
+–{€–Ú‚ÍA‘¼‚Ì€–Ú‚É‘‚µ‚ÄAŒŸ“¢•s[•ª‚Ì‚Ü‚Ü‹Lq‚µ‚Ä‚¢‚Ü‚·‚Ì‚ÅA‚à‚µ‰½‚©ŽQl‚É‚µ‚悤‚ÆŽv‚Á‚½ê‡A\•ª‚É’ˆÓ‚ÌãA”[“¾‚Å‚«‚é‚Ü‚Å‚²Ž©•ª‚Ìì‹ÆŠÂ‹«‚ŃeƒXƒg‚µ‚Ä‚­‚¾‚³‚¢B
+Windows (95/98/NT/2000‚È‚Ç) ‚ÅAƒtƒ@ƒCƒ‹–¼‚âƒpƒX–¼‚ªŠ¿Žši‚±‚±‚Å‚Í“ñƒoƒCƒg•¶Žš‚̈Ӗ¡‚ÅŽg‚Á‚Ä‚¢‚Ü‚·‚Ì‚ÅA•½‰¼–¼‚â‹L†‚È‚Ç‚àŠÜ‚Ý‚Ü‚·Bj‚ðŠÜ‚Þê‡APerl‚ňµ‚¤Û‚É–â‘肪¶‚¶‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B
+––”öƒoƒCƒg‚ª "\x5C" ‚ÌŠ¿Žš‚ð‚à‚ƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼
+ƒfƒBƒŒƒNƒgƒŠ‘€ìŠÖ”imkdir, rmdir, opendir, -d ‚È‚ÇjAƒtƒ@ƒCƒ‹‘€ìŠÖ”iopen, unlink, -f ‚È‚Çj‚ÅAƒAƒNƒZƒX‚Å‚«‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B
+ƒtƒ@ƒCƒ‹‚ÌꇂÍA––”ö‚É”¼ŠpƒXƒy[ƒX‚ð“Y‚¦‚é‚ƃAƒNƒZƒX‚Å‚«‚éꇂª‚ ‚è‚Ü‚·i—Ⴆ‚ÎA-f '•\ ' ‚Ü‚½‚Í -f "\x95\x5C\x20" ‚È‚ÇjB
+ƒfƒBƒŒƒNƒgƒŠ‚ÌꇂÍA––”ö‚É / ‚© \ ‚ð“Y‚¦‚é‚ƃAƒNƒZƒX‚Å‚«‚éꇂª‚ ‚è‚Ü‚·i—Ⴆ‚ÎA-d '•\/' ‚Ü‚½‚Í -d "\x95\x5C/" ‚È‚ÇjB––”ö‚É“Y‚¦‚镶Žš‚𔼊pƒXƒy[ƒX‚Æ‚µ‚Ä‚àA‚¤‚Ü‚­ƒAƒNƒZƒX‚Å‚«‚éꇂª‚ ‚è‚Ü‚·B“Y‚¦‚镶Žš‚ÌŒó•â‚Æ‚µ‚ÄAŽOŽí—Þ‚Ì•¶ŽšiƒXƒ‰ƒbƒVƒ…A‰~‹L†A‹ó”’j‚ð‹“‚°‚Ü‚µ‚½‚ªA‚Ç‚Ì•¶Žš‚ª‚æ‚¢‚©‚ÍAŠÖ”‚É‚æ‚Á‚ĈقȂéꇂª‚ ‚é‚悤‚Å‚·BŽg—p‚·‚é‘O‚É\•ª‚ɃeƒXƒg‚µ‚Ä‚­‚¾‚³‚¢B
+‚È‚¨AƒfƒBƒŒƒNƒgƒŠ–¼‚Ì––”ö‚É / ‚© \ ‚ð“Y‚¦‚éê‡A‚à‚Æ‚à‚Æ––”ö‚É / ‚© \ ‚ª•t‚¢‚Ä‚¢‚éꇂɂÍA“ñd‚É•t‚¯‚é‚Æ‚¤‚Ü‚­s‚©‚È‚¢‚¨‚»‚ꂪ‚ ‚è‚Ü‚·‚Ì‚ÅA•¶Žš—ñ˜AŒ‹‚Ì‘O‚ÉŒŸ¸‚µ‚½‚Ù‚¤‚ª‚æ‚¢‚Å‚µ‚傤B
+‚Ç‚¤‚µ‚Ä‚à‹““®‚ª•s–¾‚ÅM—Š‚Å‚«‚È‚¢ê‡‚ÍA`` ‚Ü‚½‚Í qx// ‚â system()ŠÖ”‚È‚Ç‚ð’Ê‚¶‚ÄWindows‚̃Rƒ}ƒ“ƒh‚ðŒÄ‚Ô‚Ì‚ª—Ç‚¢‚ÆŽv‚¢‚Ü‚·B
+‚¨‚Ü‚¯
+ Shift-JIS ‚Å‘‚©‚ꂽ POD ‚ð Perl 5.8.1, 5.8.2 ‚Ì Pod::Html ‚Å HTML ‚É•ÏŠ·‚µ‚½ê‡AƒAƒ“ƒJ[‚Ì–¼‘O‚ÍA ‰p”Žš‚Ɖ¼–¼•¶Žš [0xA6..0xDF] ‚𜂫A ‘¼‚ÌŠeƒoƒCƒg‚͉ºüi'_'j‚É•ÏŠ·‚³‚ê‚é‚悤‚Å‚·B ‹ï‘Ì“I‚É‚ÍAuse locale; ‰º‚ÅAlc ‚Æ s/\W/_/g ‚ðŽÀs‚µ‚½Œ‹‰Ê (cf. Pod::Html::anchorify) ‚É‚È‚è‚Ü‚·B
+[2003-11-18]
+Perl‚̃y[ƒW
diff --git a/tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp b/tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp
new file mode 100644
index 0000000000..6d51f84fa1
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore>
+
+int main(int argc, char **argv)
+{
+ QCoreApplication a(argc, argv);
+ QTextStream qin(stdin);
+ if (!qin.atEnd()) {
+ int a, b, c;
+ qin >> a >> b >> c;
+ qDebug("%d %d %d", a, b, c);
+ }
+ return 0;
+}
diff --git a/tests/auto/corelib/io/qtextstream/stdinProcess/stdinProcess.pro b/tests/auto/corelib/io/qtextstream/stdinProcess/stdinProcess.pro
new file mode 100644
index 0000000000..9cf4d19387
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/stdinProcess/stdinProcess.pro
@@ -0,0 +1,7 @@
+SOURCES += main.cpp
+QT = core
+CONFIG += console
+CONFIG -= app_bundle
+DESTDIR = ./
+
+
diff --git a/tests/auto/corelib/io/qtextstream/task113817.txt b/tests/auto/corelib/io/qtextstream/task113817.txt
new file mode 100644
index 0000000000..281ae8c9f2
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/task113817.txt
@@ -0,0 +1,1095 @@
+1 13 -14
+2 13 14
+3 40 -3
+4 16383 4
+5 16383 5
+6 16383 6
+7 16383 7
+8 16383 8
+9 16383 9
+10 16383 10
+11 16383 -1
+12 16383 -1
+13 16383 -1
+14 16383 -1
+15 16383 -1
+16 16383 -1
+17 16383 -1
+18 16383 -1
+19 16383 -1
+20 16383 -1
+21 16383 -1
+22 16383 -1
+23 16383 -1
+24 16383 -1
+25 16383 -1
+26 16383 -1
+27 16383 -1
+28 16383 -1
+29 16383 -1
+30 16383 -1
+31 16383 -1
+32 16383 -1
+33 16383 -1
+34 16383 -1
+35 16383 -1
+36 16383 -1
+37 16383 -1
+38 16383 -1
+39 16383 -1
+40 16383 -1
+41 16383 -1
+42 16383 -1
+43 16383 -1
+44 16383 -1
+45 16383 -1
+46 16383 -1
+47 16383 -1
+48 16383 -1
+49 16383 -1
+50 16383 -1
+51 16383 -1
+52 16383 -1
+53 16383 -1
+54 16383 -1
+55 16383 -1
+56 16383 -1
+57 16383 -1
+58 16383 -1
+59 16383 -1
+60 16383 -1
+61 16383 -1
+62 16383 -1
+63 16383 -1
+64 16383 -1
+65 16383 -1
+66 16383 -1
+67 16383 -1
+68 16383 -1
+69 16383 -1
+70 16383 -1
+71 16383 -1
+72 16383 -1
+73 16383 -1
+74 16383 -1
+75 16383 -1
+76 16383 -1
+77 16383 -1
+78 16383 -1
+79 16383 -1
+80 16383 -1
+81 16383 -1
+82 16383 -1
+83 16383 -1
+84 16383 -1
+85 16383 -1
+86 16383 -1
+87 16383 -1
+88 16383 -1
+89 16383 -1
+90 16383 -1
+91 16383 -1
+92 16383 -1
+93 16383 -1
+94 16383 -1
+95 16383 -1
+96 16383 -1
+97 16383 -1
+98 16383 -1
+99 16383 -1
+100 16383 -1
+101 16383 -1
+102 16383 -1
+103 16383 -1
+104 16383 -1
+105 16383 -1
+106 16383 -1
+107 16383 -1
+108 16383 -1
+109 16383 -1
+110 16383 -1
+111 16383 -1
+112 16383 -1
+113 16383 -1
+114 16383 -1
+115 16383 -1
+116 16383 -1
+117 16383 -1
+118 16383 -1
+119 16383 -1
+120 16383 -1
+121 16383 -1
+122 16383 -1
+123 16383 -1
+124 16383 -1
+125 16383 -1
+126 16383 -1
+127 16383 -1
+128 16383 -1
+129 16383 -1
+130 16383 -1
+131 16383 -1
+132 16383 -1
+133 16383 -1
+134 16383 -1
+135 16383 -1
+136 16383 -1
+137 16383 -1
+138 16383 -1
+139 16383 -1
+140 16383 -1
+141 16383 -1
+142 16383 -1
+143 16383 -1
+144 16383 -1
+145 16383 -1
+146 16383 -1
+147 16383 -1
+148 16383 -1
+149 16383 -1
+150 16383 -1
+151 16383 -1
+152 16383 -1
+153 16383 -1
+154 16383 -1
+155 16383 -1
+156 16383 -1
+157 16383 -1
+158 16383 -1
+159 16383 -1
+160 16383 -1
+161 16383 -1
+162 16383 -1
+163 16383 -1
+164 16383 -1
+165 16383 -1
+166 16383 -1
+167 16383 -1
+168 16383 -1
+169 16383 -1
+170 16383 -1
+171 16383 -1
+172 16383 -1
+173 16383 -1
+174 16383 -1
+175 16383 -1
+176 16383 -1
+177 16383 -1
+178 16383 -1
+179 16383 -1
+180 16383 -1
+181 16383 -1
+182 16383 -1
+183 16383 -1
+184 16383 -1
+185 16383 -1
+186 16383 -1
+187 16383 -1
+188 16383 -1
+189 16383 -1
+190 16383 -1
+191 16383 -1
+192 16383 -1
+193 16383 -1
+194 16383 -1
+195 16383 -1
+196 16383 -1
+197 16383 -1
+198 16383 -1
+199 16383 -1
+200 16383 -1
+201 16383 -1
+202 16383 -1
+203 16383 -1
+204 16383 -1
+205 16383 -1
+206 16383 -1
+207 16383 -1
+208 16383 -1
+209 16383 -1
+210 16383 -1
+211 16383 -1
+212 16383 -1
+213 16383 -1
+214 16383 -1
+215 16383 -1
+216 16383 -1
+217 16383 -1
+218 16383 -1
+219 16383 -1
+220 16383 -1
+221 16383 -1
+222 16383 -1
+223 16383 -1
+224 16383 -1
+225 16383 -1
+226 16383 -1
+227 16383 -1
+228 16383 -1
+229 16383 -1
+230 16383 -1
+231 16383 -1
+232 16383 -1
+233 16383 -1
+234 16383 -1
+235 16383 -1
+236 16383 -1
+237 16383 -1
+238 16383 -1
+239 16383 -1
+240 16383 -1
+241 16383 -1
+242 16383 -1
+243 16383 -1
+244 16383 -1
+245 16383 -1
+246 16383 -1
+247 16383 -1
+248 16383 -1
+249 16383 -1
+250 16383 -1
+251 16383 -1
+252 16383 -1
+253 16383 -1
+254 16383 -1
+255 16383 -1
+256 16383 -1
+257 16383 -1
+258 16383 -1
+259 16383 -1
+260 16383 -1
+261 16383 -1
+262 16383 -1
+263 16383 -1
+264 16383 -1
+265 16383 -1
+266 16383 -1
+267 16383 -1
+268 16383 -1
+269 16383 -1
+270 16383 -1
+271 16383 -1
+272 16383 -1
+273 16383 -1
+274 16383 -1
+275 16383 -1
+276 16383 -1
+277 16383 -1
+278 16383 -1
+279 16383 -1
+280 16383 -1
+281 16383 -1
+282 16383 -1
+283 16383 -1
+284 16383 -1
+285 16383 -1
+286 16383 -1
+287 16383 -1
+288 16383 -1
+289 16383 -1
+290 16383 -1
+291 16383 -1
+292 16383 -1
+293 16383 -1
+294 16383 -1
+295 16383 -1
+296 16383 -1
+297 16383 -1
+298 16383 -1
+299 16383 -1
+300 16383 -1
+301 16383 -1
+302 16383 -1
+303 16383 -1
+304 16383 -1
+305 16383 -1
+306 16383 -1
+307 16383 -1
+308 16383 -1
+309 16383 -1
+310 16383 -1
+311 16383 -1
+312 16383 -1
+313 16383 -1
+314 16383 -1
+315 16383 -1
+316 16383 -1
+317 16383 -1
+318 16383 -1
+319 16383 -1
+320 16383 -1
+321 16383 -1
+322 16383 -1
+323 16383 -1
+324 16383 -1
+325 16383 -1
+326 16383 -1
+327 16383 -1
+328 16383 -1
+329 16383 -1
+330 16383 -1
+331 16383 -1
+332 16383 -1
+333 16383 -1
+334 16383 -1
+335 16383 -1
+336 16383 -1
+337 16383 -1
+338 16383 -1
+339 16383 -1
+340 16383 -1
+341 16383 -1
+342 16383 -1
+343 16383 -1
+344 16383 -1
+345 16383 -1
+346 16383 -1
+347 16383 -1
+348 16383 -1
+349 16383 -1
+350 16383 -1
+351 16383 -1
+352 16383 -1
+353 16383 -1
+354 16383 -1
+355 16383 -1
+356 16383 -1
+357 16383 -1
+358 16383 -1
+359 16383 -1
+360 16383 -1
+361 16383 -1
+362 16383 -1
+363 16383 -1
+364 16383 -1
+365 16383 -1
+366 16383 -1
+367 16383 -1
+368 16383 -1
+369 16383 -1
+370 16383 -1
+371 16383 -1
+372 16383 -1
+373 16383 -1
+374 16383 -1
+375 16383 -1
+376 16383 -1
+377 16383 -1
+378 16383 -1
+379 16383 -1
+380 16383 -1
+381 16383 -1
+382 16383 -1
+383 16383 -1
+384 16383 -1
+385 16383 -1
+386 16383 -1
+387 16383 -1
+388 16383 -1
+389 16383 -1
+390 16383 -1
+391 16383 -1
+392 16383 -1
+393 16383 -1
+394 16383 -1
+395 16383 -1
+396 16383 -1
+397 16383 -1
+398 16383 -1
+399 16383 -1
+400 16383 -1
+401 16383 -1
+402 16383 -1
+403 16383 -1
+404 16383 -1
+405 16383 -1
+406 16383 -1
+407 16383 -1
+408 16383 -1
+409 16383 -1
+410 16383 -1
+411 16383 -1
+412 16383 -1
+413 16383 -1
+414 16383 -1
+415 16383 -1
+416 16383 -1
+417 16383 -1
+418 16383 -1
+419 16383 -1
+420 16383 -1
+421 16383 -1
+422 16383 -1
+423 16383 -1
+424 16383 -1
+425 16383 -1
+426 16383 -1
+427 16383 -1
+428 16383 -1
+429 16383 -1
+430 16383 -1
+431 16383 -1
+432 16383 -1
+433 16383 -1
+434 16383 -1
+435 16383 -1
+436 16383 -1
+437 16383 -1
+438 16383 -1
+439 16383 -1
+440 16383 -1
+441 16383 -1
+442 16383 -1
+443 16383 -1
+444 16383 -1
+445 16383 -1
+446 16383 -1
+447 16383 -1
+448 16383 -1
+449 16383 -1
+450 16383 -1
+451 16383 -1
+452 16383 -1
+453 16383 -1
+454 16383 -1
+455 16383 -1
+456 16383 -1
+457 16383 -1
+458 16383 -1
+459 16383 -1
+460 16383 -1
+461 16383 -1
+462 16383 -1
+463 16383 -1
+464 16383 -1
+465 16383 -1
+466 16383 -1
+467 16383 -1
+468 16383 -1
+469 16383 -1
+470 16383 -1
+471 16383 -1
+472 16383 -1
+473 16383 -1
+474 16383 -1
+475 16383 -1
+476 16383 -1
+477 16383 -1
+478 16383 -1
+479 16383 -1
+480 16383 -1
+481 16383 -1
+482 16383 -1
+483 16383 -1
+484 16383 -1
+485 16383 -1
+486 16383 -1
+487 16383 -1
+488 16383 -1
+489 16383 -1
+490 16383 -1
+491 16383 -1
+492 16383 -1
+493 16383 -1
+494 16383 -1
+495 16383 -1
+496 16383 -1
+497 16383 -1
+498 16383 -1
+499 16383 -1
+500 16383 -1
+501 16383 -1
+502 16383 -1
+503 16383 -1
+504 16383 -1
+505 16383 -1
+506 16383 -1
+507 16383 -1
+508 16383 -1
+509 16383 -1
+510 16383 -1
+511 16383 -1
+512 16383 -1
+513 16383 -1
+514 16383 -1
+515 16383 -1
+516 16383 -1
+517 16383 -1
+518 16383 -1
+519 16383 -1
+520 16383 -1
+521 16383 -1
+522 16383 -1
+523 16383 -1
+524 16383 -1
+525 16383 -1
+526 16383 -1
+527 16383 -1
+528 16383 -1
+529 16383 -1
+530 16383 -1
+531 16383 -1
+532 16383 -1
+533 16383 -1
+534 16383 -1
+535 16383 -1
+536 16383 -1
+537 16383 -1
+538 16383 -1
+539 16383 -1
+540 16383 -1
+541 16383 -1
+542 16383 -1
+543 16383 -1
+544 16383 -1
+545 16383 -1
+546 16383 -1
+547 16383 -1
+548 16383 -1
+549 16383 -1
+550 16383 -1
+551 16383 -1
+552 16383 -1
+553 16383 -1
+554 16383 -1
+555 16383 -1
+556 16383 -1
+557 16383 -1
+558 16383 -1
+559 16383 -1
+560 16383 -1
+561 16383 -1
+562 16383 -1
+563 16383 -1
+564 16383 -1
+565 16383 -1
+566 16383 -1
+567 16383 -1
+568 16383 -1
+569 16383 -1
+570 16383 -1
+571 16383 -1
+572 16383 -1
+573 16383 -1
+574 16383 -1
+575 16383 -1
+576 16383 -1
+577 16383 -1
+578 16383 -1
+579 16383 -1
+580 16383 -1
+581 16383 -1
+582 16383 -1
+583 16383 -1
+584 16383 -1
+585 16383 -1
+586 16383 -1
+587 16383 -1
+588 16383 -1
+589 16383 -1
+590 16383 -1
+591 16383 -1
+592 16383 -1
+593 16383 -1
+594 16383 -1
+595 16383 -1
+596 16383 -1
+597 16383 -1
+598 16383 -1
+599 16383 -1
+600 16383 -1
+601 16383 -1
+602 16383 -1
+603 16383 -1
+604 16383 -1
+605 16383 -1
+606 16383 -1
+607 16383 -1
+608 16383 -1
+609 16383 -1
+610 16383 -1
+611 16383 -1
+612 16383 -1
+613 16383 -1
+614 16383 -1
+615 16383 -1
+616 16383 -1
+617 16383 -1
+618 16383 -1
+619 16383 -1
+620 16383 -1
+621 16383 -1
+622 16383 -1
+623 16383 -1
+624 16383 -1
+625 16383 -1
+626 16383 -1
+627 16383 -1
+628 16383 -1
+629 16383 -1
+630 16383 -1
+631 16383 -1
+632 16383 -1
+633 16383 -1
+634 16383 -1
+635 16383 -1
+636 16383 -1
+637 16383 -1
+638 16383 -1
+639 16383 -1
+640 16383 -1
+641 16383 -1
+642 16383 -1
+643 16383 -1
+644 16383 -1
+645 16383 -1
+646 16383 -1
+647 16383 -1
+648 16383 -1
+649 16383 -1
+650 16383 -1
+651 16383 -1
+652 16383 -1
+653 16383 -1
+654 16383 -1
+655 16383 -1
+656 16383 -1
+657 16383 -1
+658 16383 -1
+659 16383 -1
+660 16383 -1
+661 16383 -1
+662 16383 -1
+663 16383 -1
+664 16383 -1
+665 16383 -1
+666 16383 -1
+667 16383 -1
+668 16383 -1
+669 16383 -1
+670 16383 -1
+671 16383 -1
+672 16383 -1
+673 16383 -1
+674 16383 -1
+675 16383 -1
+676 16383 -1
+677 16383 -1
+678 16383 -1
+679 16383 -1
+680 16383 -1
+681 16383 -1
+682 16383 -1
+683 16383 -1
+684 16383 -1
+685 16383 -1
+686 16383 -1
+687 16383 -1
+688 16383 -1
+689 16383 -1
+690 16383 -1
+691 16383 -1
+692 16383 -1
+693 16383 -1
+694 16383 -1
+695 16383 -1
+696 16383 -1
+697 16383 -1
+698 16383 -1
+699 16383 -1
+700 16383 -1
+701 16383 -1
+702 16383 -1
+703 16383 -1
+704 16383 -1
+705 16383 -1
+706 16383 -1
+707 16383 -1
+708 16383 -1
+709 16383 -1
+710 16383 -1
+711 16383 -1
+712 16383 -1
+713 16383 -1
+714 16383 -1
+715 16383 -1
+716 16383 -1
+717 16383 -1
+718 16383 -1
+719 16383 -1
+720 16383 -1
+721 16383 -1
+722 16383 -1
+723 16383 -1
+724 16383 -1
+725 16383 -1
+726 16383 -1
+727 16383 -1
+728 16383 -1
+729 16383 -1
+730 16383 -1
+731 16383 -1
+732 16383 -1
+733 16383 -1
+734 16383 -1
+735 16383 -1
+736 16383 -1
+737 16383 -1
+738 16383 -1
+739 16383 -1
+740 16383 -1
+741 16383 -1
+742 16383 -1
+743 16383 -1
+744 16383 -1
+745 16383 -1
+746 16383 -1
+747 16383 -1
+748 16383 -1
+749 16383 -1
+750 16383 -1
+751 16383 -1
+752 16383 -1
+753 16383 -1
+754 16383 -1
+755 16383 -1
+756 16383 -1
+757 16383 -1
+758 16383 -1
+759 16383 -1
+760 16383 -1
+761 16383 -1
+762 16383 -1
+763 16383 -1
+764 16383 -1
+765 16383 -1
+766 16383 -1
+767 16383 -1
+768 16383 -1
+769 16383 -1
+770 16383 -1
+771 16383 -1
+772 16383 -1
+773 16383 -1
+774 16383 -1
+775 16383 -1
+776 16383 -1
+777 16383 -1
+778 16383 -1
+779 16383 -1
+780 16383 -1
+781 16383 -1
+782 16383 -1
+783 16383 -1
+784 16383 -1
+785 16383 -1
+786 16383 -1
+787 16383 -1
+788 16383 -1
+789 16383 -1
+790 16383 -1
+791 16383 -1
+792 16383 -1
+793 16383 -1
+794 16383 -1
+795 16383 -1
+796 16383 -1
+797 16383 -1
+798 16383 -1
+799 16383 -1
+800 16383 -1
+801 16383 -1
+802 16383 -1
+803 16383 -1
+804 16383 -1
+805 16383 -1
+806 16383 -1
+807 16383 -1
+808 16383 -1
+809 16383 -1
+810 16383 -1
+811 16383 -1
+812 16383 -1
+813 16383 -1
+814 16383 -1
+815 16383 -1
+816 16383 -1
+817 16383 -1
+818 16383 -1
+819 16383 -1
+820 16383 -1
+821 16383 -1
+822 16383 -1
+823 16383 -1
+824 16383 -1
+825 16383 -1
+826 16383 -1
+827 16383 -1
+828 16383 -1
+829 16383 -1
+830 16383 -1
+831 16383 -1
+832 16383 -1
+833 16383 -1
+834 16383 -1
+835 16383 -1
+836 16383 -1
+837 16383 -1
+838 16383 -1
+839 16383 -1
+840 16383 -1
+841 16383 -1
+842 16383 -1
+843 16383 -1
+844 16383 -1
+845 16383 -1
+846 16383 -1
+847 16383 -1
+848 16383 -1
+849 16383 -1
+850 16383 -1
+851 16383 -1
+852 16383 -1
+853 16383 -1
+854 16383 -1
+855 16383 -1
+856 16383 -1
+857 16383 -1
+858 16383 -1
+859 16383 -1
+860 16383 -1
+861 16383 -1
+862 16383 -1
+863 16383 -1
+864 16383 -1
+865 16383 -1
+866 16383 -1
+867 16383 -1
+868 16383 -1
+869 16383 -1
+870 16383 -1
+871 16383 -1
+872 16383 -1
+873 16383 -1
+874 16383 -1
+875 16383 -1
+876 16383 -1
+877 16383 -1
+878 16383 -1
+879 16383 -1
+880 16383 -1
+881 16383 -1
+882 16383 -1
+883 16383 -1
+884 16383 -1
+885 16383 -1
+886 16383 -1
+887 16383 -1
+888 16383 -1
+889 16383 -1
+890 16383 -1
+891 16383 -1
+892 16383 -1
+893 16383 -1
+894 16383 -1
+895 16383 -1
+896 16383 -1
+897 16383 -1
+898 16383 -1
+899 16383 -1
+900 16383 -1
+901 16383 -1
+902 16383 -1
+903 16383 -1
+904 16383 -1
+905 16383 -1
+906 16383 -1
+907 16383 -1
+908 16383 -1
+909 16383 -1
+910 16383 -1
+911 16383 -1
+912 16383 -1
+913 16383 -1
+914 16383 -1
+915 16383 -1
+916 16383 -1
+917 16383 -1
+918 16383 -1
+919 16383 -1
+920 16383 -1
+921 16383 -1
+922 16383 -1
+923 16383 -1
+924 16383 -1
+925 16383 -1
+926 16383 -1
+927 16383 -1
+928 16383 -1
+929 16383 -1
+930 16383 -1
+931 16383 -1
+932 16383 -1
+933 16383 -1
+934 16383 -1
+935 16383 -1
+936 16383 -1
+937 16383 -1
+938 16383 -1
+939 16383 -1
+940 16383 -1
+941 16383 -1
+942 16383 -1
+943 16383 -1
+944 16383 -1
+945 16383 -1
+946 16383 -1
+947 16383 -1
+948 16383 -1
+949 16383 -1
+950 16383 -1
+951 16383 -1
+952 16383 -1
+953 16383 -1
+954 16383 -1
+955 16383 -1
+956 16383 -1
+957 16383 -1
+958 16383 -1
+959 16383 -1
+960 16383 -1
+961 16383 -1
+962 16383 -1
+963 16383 -1
+964 16383 -1
+965 16383 -1
+966 16383 -1
+967 16383 -1
+968 16383 -1
+969 16383 -1
+970 16383 -1
+971 16383 -1
+972 16383 -1
+973 16383 -1
+974 16383 -1
+975 16383 -1
+976 16383 -1
+977 16383 -1
+978 16383 -1
+979 16383 -1
+980 16383 -1
+981 16383 -1
+982 16383 -1
+983 16383 -1
+984 16383 -1
+985 16383 -1
+986 16383 -1
+987 16383 -1
+988 16383 -1
+989 16383 -1
+990 16383 -1
+991 16383 -1
+992 16383 -1
+993 16383 -1
+994 16383 -1
+995 16383 -1
+996 16383 -1
+997 16383 -1
+998 16383 -1
+999 16383 -1
+1000 16383 -1
+1001 16383 -1
+1002 16383 -1
+1003 16383 -1
+1004 16383 -1
+1005 16383 -1
+1006 16383 -1
+1007 16383 -1
+1008 16383 -1
+1009 16383 -1
+1010 16383 -1
+1011 16383 -1
+1012 16383 -1
+1013 16383 -1
+1014 16383 -1
+1015 16383 -1
+1016 16383 -1
+1017 16383 -1
+1018 16383 -1
+1019 16383 -1
+1020 16383 -1
+1021 16383 -1
+1022 16383 -1
+1023 16383 -1
+1024 16383 -1
+1025 16383 -1
+1026 16383 -1
+1027 16383 -1
+1028 16383 -1
+1029 16383 -1
+1030 16383 -1
+1031 16383 -1
+1032 16383 -1
+1033 16383 -1
+1034 16383 -1
+1035 16383 -1
+1036 16383 -1
+1037 16383 -1
+1038 16383 -1
+1039 16383 -1
+1040 16383 -1
+1041 16383 -1
+1042 16383 -1
+1043 16383 -1
+1044 16383 -1
+1045 16383 -1
+1046 16383 -1
+1047 16383 -1
+1048 16383 -1
+1049 16383 -1
+1050 16383 -1
+1051 16383 -1
+1052 16383 -1
+1053 16383 -1
+1054 16383 -1
+1055 16383 -1
+1056 16383 -1
+1057 16383 -1
+1058 16383 -1
+1059 16383 -1
+1060 16383 -1
+1061 16383 -1
+1062 16383 -1
+1063 16383 -1
+1064 16383 -1
+1065 16383 -1
+1066 16383 -1
+1067 16383 -1
+1068 16383 -1
+1069 16383 -1
+1070 16383 -1
+1071 16383 -1
+1072 16383 -1
+1073 16383 -1
+1074 16383 -1
+1075 16383 -1
+1076 16383 -1
+1077 16383 -1
+1078 16383 -1
+1079 16383 -1
+1080 16383 -1
+1081 16383 -1
+1082 16383 -1
+1083 16383 -1
+1084 16383 -1
+1085 16383 -1
+1086 16383 -1
+1087 16383 -1
+1088 16383 -1
+1089 16383 -1
+1090 16383 -1
+1091 16383 -1
+1092 16383 -1
+1093 16383 -1
+1094 16383 -1
+1095 16383 -1
diff --git a/tests/auto/corelib/io/qtextstream/test/test.pro b/tests/auto/corelib/io/qtextstream/test/test.pro
new file mode 100644
index 0000000000..e0eb4ef193
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/test/test.pro
@@ -0,0 +1,40 @@
+load(qttest_p4)
+SOURCES += ../tst_qtextstream.cpp
+
+TARGET = ../tst_qtextstream
+
+win32 {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_qtextstream
+} else {
+ TARGET = ../../release/tst_qtextstream
+ }
+}
+
+RESOURCES += ../qtextstream.qrc
+
+QT = core network
+
+
+wince*|symbian: {
+ addFiles.files = ../rfc3261.txt ../shift-jis.txt ../task113817.txt ../qtextstream.qrc ../tst_qtextstream.cpp
+ addFiles.path = .
+ res.files = ../resources
+ res.path = .
+ DEPLOYMENT += addFiles
+}
+
+wince*: {
+ DEFINES += SRCDIR=\\\"\\\"
+}else:symbian {
+ # Symbian can't define SRCDIR meaningfully here
+ qt_not_deployed {
+ codecs_plugins.files = qcncodecs.dll qjpcodecs.dll qtwcodecs.dll qkrcodecs.dll
+ codecs_plugins.path = $$QT_PLUGINS_BASE_DIR/codecs
+ DEPLOYMENT += codecs_plugins
+ }
+}else {
+ DEFINES += SRCDIR=\\\"$$PWD/../\\\"
+}
+
+
diff --git a/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp b/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp
new file mode 100644
index 0000000000..848f813d1e
--- /dev/null
+++ b/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp
@@ -0,0 +1,2919 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+/*-*-encoding:latin1-*-*/
+//#include <iostream>
+//using namespace std;
+
+#include <QtTest/QtTest>
+
+#ifdef Q_OS_UNIX
+#include <locale.h>
+#endif
+
+#include <QBuffer>
+#include <QByteArray>
+#include <QCoreApplication>
+#include <QDebug>
+#include <QFile>
+#include <QTcpSocket>
+#include <QTextStream>
+#include <QTextCodec>
+#include <QProcess>
+
+#include "../../../network-settings.h"
+
+static const char *TestFileName = "testfile";
+
+Q_DECLARE_METATYPE(qlonglong)
+Q_DECLARE_METATYPE(qulonglong)
+Q_DECLARE_METATYPE(QList<int>)
+
+QT_BEGIN_NAMESPACE
+template<> struct QMetaTypeId<QIODevice::OpenModeFlag>
+{ enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::Int; } };
+QT_END_NAMESPACE
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR ""
+#endif
+
+class tst_QTextStream : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QTextStream();
+ virtual ~tst_QTextStream();
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void getSetCheck();
+ void construction();
+
+ // lines
+ void readLineFromDevice_data();
+ void readLineFromDevice();
+ void readLineFromString_data();
+ void readLineFromString();
+ void readLineFromTextDevice_data();
+ void readLineFromTextDevice();
+ void readLineUntilNull();
+ void readLineMaxlen_data();
+ void readLineMaxlen();
+ void readLinesFromBufferCRCR();
+
+ // all
+ void readAllFromDevice_data();
+ void readAllFromDevice();
+ void readAllFromString_data();
+ void readAllFromString();
+ void readLineFromStringThenChangeString();
+
+ // device tests
+ void setDevice();
+
+ // char operators
+ void QChar_operators_FromDevice_data();
+ void QChar_operators_FromDevice();
+ void char_operators_FromDevice_data();
+ void char_operators_FromDevice();
+
+ // natural number read operator
+ void signedShort_read_operator_FromDevice_data();
+ void signedShort_read_operator_FromDevice();
+ void unsignedShort_read_operator_FromDevice_data();
+ void unsignedShort_read_operator_FromDevice();
+ void signedInt_read_operator_FromDevice_data();
+ void signedInt_read_operator_FromDevice();
+ void unsignedInt_read_operator_FromDevice_data();
+ void unsignedInt_read_operator_FromDevice();
+ void qlonglong_read_operator_FromDevice_data();
+ void qlonglong_read_operator_FromDevice();
+ void qulonglong_read_operator_FromDevice_data();
+ void qulonglong_read_operator_FromDevice();
+
+ // natural number write operator
+ void signedShort_write_operator_ToDevice_data();
+ void signedShort_write_operator_ToDevice();
+ void unsignedShort_write_operator_ToDevice_data();
+ void unsignedShort_write_operator_ToDevice();
+ void signedInt_write_operator_ToDevice_data();
+ void signedInt_write_operator_ToDevice();
+ void unsignedInt_write_operator_ToDevice_data();
+ void unsignedInt_write_operator_ToDevice();
+ void qlonglong_write_operator_ToDevice_data();
+ void qlonglong_write_operator_ToDevice();
+ void qulonglong_write_operator_ToDevice_data();
+ void qulonglong_write_operator_ToDevice();
+
+ void int_read_with_locale_data();
+ void int_read_with_locale();
+
+ void int_write_with_locale_data();
+ void int_write_with_locale();
+
+ // real number read operator
+ void float_read_operator_FromDevice_data();
+ void float_read_operator_FromDevice();
+ void double_read_operator_FromDevice_data();
+ void double_read_operator_FromDevice();
+
+ // real number write operator
+ void float_write_operator_ToDevice_data();
+ void float_write_operator_ToDevice();
+ void double_write_operator_ToDevice_data();
+ void double_write_operator_ToDevice();
+
+ void double_write_with_flags_data();
+ void double_write_with_flags();
+
+ void double_write_with_precision_data();
+ void double_write_with_precision();
+
+ // text read operators
+ void charPtr_read_operator_FromDevice_data();
+ void charPtr_read_operator_FromDevice();
+ void stringRef_read_operator_FromDevice_data();
+ void stringRef_read_operator_FromDevice();
+ void byteArray_read_operator_FromDevice_data();
+ void byteArray_read_operator_FromDevice();
+
+ // text write operators
+ void string_write_operator_ToDevice_data();
+ void string_write_operator_ToDevice();
+
+ // other
+ void skipWhiteSpace_data();
+ void skipWhiteSpace();
+ void lineCount_data();
+ void lineCount();
+ void performance();
+ void hexTest_data();
+ void hexTest();
+ void binTest_data();
+ void binTest();
+ void octTest_data();
+ void octTest();
+ void zeroTermination();
+ void ws_manipulator();
+ void stillOpenWhenAtEnd();
+ void readNewlines_data();
+ void readNewlines();
+ void seek();
+ void pos();
+ void pos2();
+ void pos3LargeFile();
+ void readStdin();
+ void readAllFromStdin();
+ void readLineFromStdin();
+ void read();
+ void qbool();
+ void forcePoint();
+ void forceSign();
+ void read0d0d0a();
+ void numeralCase_data();
+ void numeralCase();
+ void nanInf();
+ void utf8IncompleteAtBufferBoundary_data();
+ void utf8IncompleteAtBufferBoundary();
+ void writeSeekWriteNoBOM();
+
+ // status
+ void status_real_read_data();
+ void status_real_read();
+ void status_integer_read();
+ void status_word_read();
+ void status_write_error();
+
+ // use case tests
+ void useCase1();
+ void useCase2();
+
+ // manipulators
+ void manipulators_data();
+ void manipulators();
+
+ // UTF-16 BOM (Byte Order Mark)
+ void generateBOM();
+ void readBomSeekBackReadBomAgain();
+
+ // task-specific tests
+ void task180679_alignAccountingStyle();
+ void task178772_setCodec();
+
+private:
+ void generateLineData(bool for_QString);
+ void generateAllData(bool for_QString);
+ void generateOperatorCharData(bool for_QString);
+ void generateNaturalNumbersData(bool for_QString);
+ void generateRealNumbersData(bool for_QString);
+ void generateStringData(bool for_QString);
+ void generateRealNumbersDataWrite();
+};
+
+// Testing get/set functions
+void tst_QTextStream::getSetCheck()
+{
+ // Initialize codecs
+ int argc = 0;
+ char **argv = 0;
+ QCoreApplication app(argc, argv);
+
+ QTextStream obj1;
+ // QTextCodec * QTextStream::codec()
+ // void QTextStream::setCodec(QTextCodec *)
+ QTextCodec *var1 = QTextCodec::codecForName("en");
+ obj1.setCodec(var1);
+ QCOMPARE(var1, obj1.codec());
+ obj1.setCodec((QTextCodec *)0);
+ QCOMPARE((QTextCodec *)0, obj1.codec());
+
+ // bool QTextStream::autoDetectUnicode()
+ // void QTextStream::setAutoDetectUnicode(bool)
+ obj1.setAutoDetectUnicode(false);
+ QCOMPARE(false, obj1.autoDetectUnicode());
+ obj1.setAutoDetectUnicode(true);
+ QCOMPARE(true, obj1.autoDetectUnicode());
+
+ // bool QTextStream::generateByteOrderMark()
+ // void QTextStream::setGenerateByteOrderMark(bool)
+ obj1.setGenerateByteOrderMark(false);
+ QCOMPARE(false, obj1.generateByteOrderMark());
+ obj1.setGenerateByteOrderMark(true);
+ QCOMPARE(true, obj1.generateByteOrderMark());
+
+ // QIODevice * QTextStream::device()
+ // void QTextStream::setDevice(QIODevice *)
+ QFile *var4 = new QFile;
+ obj1.setDevice(var4);
+ QCOMPARE(static_cast<QIODevice *>(var4), obj1.device());
+ obj1.setDevice((QIODevice *)0);
+ QCOMPARE((QIODevice *)0, obj1.device());
+ delete var4;
+
+ // Status QTextStream::status()
+ // void QTextStream::setStatus(Status)
+ obj1.setStatus(QTextStream::Status(QTextStream::Ok));
+ QCOMPARE(QTextStream::Status(QTextStream::Ok), obj1.status());
+ obj1.setStatus(QTextStream::Status(QTextStream::ReadPastEnd));
+ QCOMPARE(QTextStream::Status(QTextStream::ReadPastEnd), obj1.status());
+ obj1.resetStatus();
+ obj1.setStatus(QTextStream::Status(QTextStream::ReadCorruptData));
+ QCOMPARE(QTextStream::Status(QTextStream::ReadCorruptData), obj1.status());
+
+ // FieldAlignment QTextStream::fieldAlignment()
+ // void QTextStream::setFieldAlignment(FieldAlignment)
+ obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignLeft));
+ QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignLeft), obj1.fieldAlignment());
+ obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignRight));
+ QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignRight), obj1.fieldAlignment());
+ obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignCenter));
+ QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignCenter), obj1.fieldAlignment());
+ obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignAccountingStyle));
+ QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignAccountingStyle), obj1.fieldAlignment());
+
+ // QChar QTextStream::padChar()
+ // void QTextStream::setPadChar(QChar)
+ QChar var7 = 'Q';
+ obj1.setPadChar(var7);
+ QCOMPARE(var7, obj1.padChar());
+ obj1.setPadChar(QChar());
+ QCOMPARE(QChar(), obj1.padChar());
+
+ // int QTextStream::fieldWidth()
+ // void QTextStream::setFieldWidth(int)
+ obj1.setFieldWidth(0);
+ QCOMPARE(0, obj1.fieldWidth());
+ obj1.setFieldWidth(INT_MIN);
+ QCOMPARE(INT_MIN, obj1.fieldWidth());
+ obj1.setFieldWidth(INT_MAX);
+ QCOMPARE(INT_MAX, obj1.fieldWidth());
+
+ // NumberFlags QTextStream::numberFlags()
+ // void QTextStream::setNumberFlags(NumberFlags)
+ obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::ShowBase));
+ QCOMPARE(QTextStream::NumberFlags(QTextStream::ShowBase), obj1.numberFlags());
+ obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::ForcePoint));
+ QCOMPARE(QTextStream::NumberFlags(QTextStream::ForcePoint), obj1.numberFlags());
+ obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::ForceSign));
+ QCOMPARE(QTextStream::NumberFlags(QTextStream::ForceSign), obj1.numberFlags());
+ obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::UppercaseBase));
+ QCOMPARE(QTextStream::NumberFlags(QTextStream::UppercaseBase), obj1.numberFlags());
+ obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::UppercaseDigits));
+ QCOMPARE(QTextStream::NumberFlags(QTextStream::UppercaseDigits), obj1.numberFlags());
+
+ // int QTextStream::integerBase()
+ // void QTextStream::setIntegerBase(int)
+ obj1.setIntegerBase(0);
+ QCOMPARE(0, obj1.integerBase());
+ obj1.setIntegerBase(INT_MIN);
+ QCOMPARE(INT_MIN, obj1.integerBase());
+ obj1.setIntegerBase(INT_MAX);
+ QCOMPARE(INT_MAX, obj1.integerBase());
+
+ // RealNumberNotation QTextStream::realNumberNotation()
+ // void QTextStream::setRealNumberNotation(RealNumberNotation)
+ obj1.setRealNumberNotation(QTextStream::RealNumberNotation(QTextStream::SmartNotation));
+ QCOMPARE(QTextStream::RealNumberNotation(QTextStream::SmartNotation), obj1.realNumberNotation());
+ obj1.setRealNumberNotation(QTextStream::RealNumberNotation(QTextStream::FixedNotation));
+ QCOMPARE(QTextStream::RealNumberNotation(QTextStream::FixedNotation), obj1.realNumberNotation());
+ obj1.setRealNumberNotation(QTextStream::RealNumberNotation(QTextStream::ScientificNotation));
+ QCOMPARE(QTextStream::RealNumberNotation(QTextStream::ScientificNotation), obj1.realNumberNotation());
+
+ // int QTextStream::realNumberPrecision()
+ // void QTextStream::setRealNumberPrecision(int)
+ obj1.setRealNumberPrecision(0);
+ QCOMPARE(0, obj1.realNumberPrecision());
+ obj1.setRealNumberPrecision(INT_MIN);
+ QCOMPARE(6, obj1.realNumberPrecision()); // Setting a negative precision reverts it to the default value (6).
+ obj1.setRealNumberPrecision(INT_MAX);
+ QCOMPARE(INT_MAX, obj1.realNumberPrecision());
+}
+
+tst_QTextStream::tst_QTextStream()
+{
+ Q_SET_DEFAULT_IAP
+}
+
+tst_QTextStream::~tst_QTextStream()
+{
+}
+
+void tst_QTextStream::init()
+{
+}
+
+void tst_QTextStream::cleanup()
+{
+ QCoreApplication::instance()->processEvents();
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::construction()
+{
+ QTextStream stream;
+ QCOMPARE(stream.codec(), QTextCodec::codecForLocale());
+ QCOMPARE(stream.device(), static_cast<QIODevice *>(0));
+ QCOMPARE(stream.string(), static_cast<QString *>(0));
+
+ QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device");
+ QVERIFY(stream.atEnd());
+
+ QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device");
+ QCOMPARE(stream.readAll(), QString());
+
+}
+
+void tst_QTextStream::generateLineData(bool for_QString)
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<QStringList>("lines");
+
+ // latin-1
+ QTest::newRow("emptyer") << QByteArray() << QStringList();
+ QTest::newRow("lf") << QByteArray("\n") << (QStringList() << "");
+ QTest::newRow("crlf") << QByteArray("\r\n") << (QStringList() << "");
+ QTest::newRow("oneline/nothing") << QByteArray("ole") << (QStringList() << "ole");
+ QTest::newRow("oneline/lf") << QByteArray("ole\n") << (QStringList() << "ole");
+ QTest::newRow("oneline/crlf") << QByteArray("ole\r\n") << (QStringList() << "ole");
+ QTest::newRow("twolines/lf/lf") << QByteArray("ole\ndole\n") << (QStringList() << "ole" << "dole");
+ QTest::newRow("twolines/crlf/crlf") << QByteArray("ole\r\ndole\r\n") << (QStringList() << "ole" << "dole");
+ QTest::newRow("twolines/lf/crlf") << QByteArray("ole\ndole\r\n") << (QStringList() << "ole" << "dole");
+ QTest::newRow("twolines/lf/nothing") << QByteArray("ole\ndole") << (QStringList() << "ole" << "dole");
+ QTest::newRow("twolines/crlf/nothing") << QByteArray("ole\r\ndole") << (QStringList() << "ole" << "dole");
+ QTest::newRow("threelines/lf/lf/lf") << QByteArray("ole\ndole\ndoffen\n") << (QStringList() << "ole" << "dole" << "doffen");
+ QTest::newRow("threelines/crlf/crlf/crlf") << QByteArray("ole\r\ndole\r\ndoffen\r\n") << (QStringList() << "ole" << "dole" << "doffen");
+ QTest::newRow("threelines/crlf/crlf/nothing") << QByteArray("ole\r\ndole\r\ndoffen") << (QStringList() << "ole" << "dole" << "doffen");
+
+ if (!for_QString) {
+ // utf-8
+ QTest::newRow("utf8/twolines")
+ << QByteArray("\xef\xbb\xbf"
+ "\x66\x67\x65\x0a"
+ "\x66\x67\x65\x0a", 11)
+ << (QStringList() << "fge" << "fge");
+
+ // utf-16
+ // one line
+ QTest::newRow("utf16-BE/nothing")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65", 8) << (QStringList() << "\345ge");
+ QTest::newRow("utf16-LE/nothing")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00", 8) << (QStringList() << "\345ge");
+ QTest::newRow("utf16-BE/lf")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a", 10) << (QStringList() << "\345ge");
+ QTest::newRow("utf16-LE/lf")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00", 10) << (QStringList() << "\345ge");
+
+ // two lines
+ QTest::newRow("utf16-BE/twolines")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a", 18)
+ << (QStringList() << "\345ge" << "\345ge");
+ QTest::newRow("utf16-LE/twolines")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00", 18)
+ << (QStringList() << "\345ge" << "\345ge");
+
+ // three lines
+ QTest::newRow("utf16-BE/threelines")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a", 26)
+ << (QStringList() << "\345ge" << "\345ge" << "\345ge");
+ QTest::newRow("utf16-LE/threelines")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00", 26)
+ << (QStringList() << "\345ge" << "\345ge" << "\345ge");
+
+ // utf-32
+ QTest::newRow("utf32-BE/twolines")
+ << QByteArray("\x00\x00\xfe\xff"
+ "\x00\x00\x00\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a"
+ "\x00\x00\x00\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a", 36)
+ << (QStringList() << "\345ge" << "\345ge");
+ QTest::newRow("utf32-LE/twolines")
+ << QByteArray("\xff\xfe\x00\x00"
+ "\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a\x00\x00\x00"
+ "\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a\x00\x00\x00", 36)
+ << (QStringList() << "\345ge" << "\345ge");
+ }
+
+ // partials
+ QTest::newRow("cr") << QByteArray("\r") << (QStringList() << "");
+ QTest::newRow("oneline/cr") << QByteArray("ole\r") << (QStringList() << "ole");
+ if (!for_QString)
+ QTest::newRow("utf16-BE/cr") << QByteArray("\xfe\xff\x00\xe5\x00\x67\x00\x65\x00\x0d", 10) << (QStringList() << "\345ge");
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromDevice_data()
+{
+ generateLineData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromDevice()
+{
+ QFETCH(QByteArray, data);
+ QFETCH(QStringList, lines);
+
+ QFile::remove(TestFileName);
+ QFile file(TestFileName);
+ QVERIFY(file.open(QFile::ReadWrite));
+ QCOMPARE(file.write(data), qlonglong(data.size()));
+ QVERIFY(file.flush());
+ file.seek(0);
+
+ QTextStream stream(&file);
+ QStringList list;
+ while (!stream.atEnd())
+ list << stream.readLine();
+
+ QCOMPARE(list, lines);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineMaxlen_data()
+{
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<QStringList>("lines");
+
+ QTest::newRow("Hey")
+ << QString("Hey")
+ << (QStringList() << QString("Hey") << QString(""));
+ QTest::newRow("Hey\\n")
+ << QString("Hey\n")
+ << (QStringList() << QString("Hey") << QString(""));
+ QTest::newRow("HelloWorld")
+ << QString("HelloWorld")
+ << (QStringList() << QString("Hello") << QString("World"));
+ QTest::newRow("Helo\\nWorlds")
+ << QString("Helo\nWorlds")
+ << (QStringList() << QString("Helo") << QString("World"));
+ QTest::newRow("AAAAA etc.")
+ << QString(16385, QLatin1Char('A'))
+ << (QStringList() << QString("AAAAA") << QString("AAAAA"));
+ QTest::newRow("multibyte string")
+ << QString::fromUtf8("\341\233\222\341\233\226\341\232\251\341\232\271\341\232\242\341\233\232\341\232\240\n")
+ << (QStringList() << QString::fromUtf8("\341\233\222\341\233\226\341\232\251\341\232\271\341\232\242")
+ << QString::fromUtf8("\341\233\232\341\232\240"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineMaxlen()
+{
+ QFETCH(QString, input);
+ QFETCH(QStringList, lines);
+ for (int i = 0; i < 2; ++i) {
+ bool useDevice = (i == 1);
+ QTextStream stream;
+ QFile::remove("testfile");
+ QFile file("testfile");
+ if (useDevice) {
+ file.open(QIODevice::ReadWrite);
+ file.write(input.toUtf8());
+ file.seek(0);
+ stream.setDevice(&file);
+ stream.setCodec("utf-8");
+ } else {
+ stream.setString(&input);
+ }
+
+ QStringList list;
+ list << stream.readLine(5);
+ list << stream.readLine(5);
+
+ QCOMPARE(list, lines);
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLinesFromBufferCRCR()
+{
+ QBuffer buffer;
+ buffer.open(QIODevice::WriteOnly);
+ QByteArray data("0123456789\r\r\n");
+
+ for (int i = 0; i < 10000; ++i)
+ buffer.write(data);
+
+ buffer.close();
+ if (buffer.open(QIODevice::ReadOnly|QIODevice::Text)) {
+ QTextStream stream(&buffer);
+ while (!stream.atEnd())
+ QCOMPARE(stream.readLine(), QString("0123456789"));
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromString_data()
+{
+ generateLineData(true);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromString()
+{
+ QFETCH(QByteArray, data);
+ QFETCH(QStringList, lines);
+
+ QString dataString = data;
+
+ QTextStream stream(&dataString, QIODevice::ReadOnly);
+ QStringList list;
+ while (!stream.atEnd())
+ list << stream.readLine();
+
+ QCOMPARE(list, lines);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromStringThenChangeString()
+{
+ QString first = "First string";
+ QString second = "Second string";
+
+ QTextStream stream(&first, QIODevice::ReadOnly);
+ QString result = stream.readLine();
+ QCOMPARE(first, result);
+
+ stream.setString(&second, QIODevice::ReadOnly);
+ result = stream.readLine();
+ QCOMPARE(second, result);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::setDevice()
+{
+ // Check that the read buffer is reset after setting a new device
+ QByteArray data1("Hello World");
+ QByteArray data2("How are you");
+
+ QBuffer bufferOld(&data1);
+ bufferOld.open(QIODevice::ReadOnly);
+
+ QBuffer bufferNew(&data2);
+ bufferNew.open(QIODevice::ReadOnly);
+
+ QString text;
+ QTextStream stream(&bufferOld);
+ stream >> text;
+ QCOMPARE(text, QString("Hello"));
+
+ stream.setDevice(&bufferNew);
+ stream >> text;
+ QCOMPARE(text, QString("How"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromTextDevice_data()
+{
+ generateLineData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromTextDevice()
+{
+ QFETCH(QByteArray, data);
+ QFETCH(QStringList, lines);
+
+ for (int i = 0; i < 8; ++i) {
+ QBuffer buffer(&data);
+ if (i < 4)
+ QVERIFY(buffer.open(QIODevice::ReadOnly | QIODevice::Text));
+ else
+ QVERIFY(buffer.open(QIODevice::ReadOnly));
+
+ QTextStream stream(&buffer);
+ QStringList list;
+ while (!stream.atEnd()) {
+ stream.pos(); // <- triggers side effects
+ QString line;
+
+ if (i & 1) {
+ QChar c;
+ while (!stream.atEnd()) {
+ stream >> c;
+ if (stream.status() == QTextStream::Ok) {
+ if (c != QLatin1Char('\n') && c != QLatin1Char('\r'))
+ line += c;
+ if (c == QLatin1Char('\n'))
+ break;
+ }
+ }
+ } else {
+ line = stream.readLine();
+ }
+
+ if ((i & 3) == 3 && !QString(QTest::currentDataTag()).contains("utf16"))
+ stream.seek(stream.pos());
+ list << line;
+ }
+ QCOMPARE(list, lines);
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::generateAllData(bool for_QString)
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<QString>("output");
+
+ // latin-1
+ QTest::newRow("empty") << QByteArray() << QString();
+ QTest::newRow("latin1-a") << QByteArray("a") << QString("a");
+ QTest::newRow("latin1-a\\r") << QByteArray("a\r") << QString("a\r");
+ QTest::newRow("latin1-a\\r\\n") << QByteArray("a\r\n") << QString("a\r\n");
+ QTest::newRow("latin1-a\\n") << QByteArray("a\n") << QString("a\n");
+
+ // utf-16
+ if (!for_QString) {
+ // one line
+ QTest::newRow("utf16-BE/nothing")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65", 8) << QString("\345ge");
+ QTest::newRow("utf16-LE/nothing")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00", 8) << QString("\345ge");
+ QTest::newRow("utf16-BE/lf")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a", 10) << QString("\345ge\n");
+ QTest::newRow("utf16-LE/lf")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00", 10) << QString("\345ge\n");
+ QTest::newRow("utf16-BE/crlf")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0d\x00\x0a", 12) << QString("\345ge\r\n");
+ QTest::newRow("utf16-LE/crlf")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0d\x00\x0a\x00", 12) << QString("\345ge\r\n");
+
+ // two lines
+ QTest::newRow("utf16-BE/twolines")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a", 18)
+ << QString("\345ge\n\345ge\n");
+ QTest::newRow("utf16-LE/twolines")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00", 18)
+ << QString("\345ge\n\345ge\n");
+
+ // three lines
+ QTest::newRow("utf16-BE/threelines")
+ << QByteArray("\xfe\xff"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a"
+ "\x00\xe5\x00\x67\x00\x65\x00\x0a", 26)
+ << QString("\345ge\n\345ge\n\345ge\n");
+ QTest::newRow("utf16-LE/threelines")
+ << QByteArray("\xff\xfe"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00"
+ "\xe5\x00\x67\x00\x65\x00\x0a\x00", 26)
+ << QString("\345ge\n\345ge\n\345ge\n");
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineUntilNull()
+{
+ QFile file(SRCDIR "rfc3261.txt");
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ QTextStream stream(&file);
+ for (int i = 0; i < 15066; ++i) {
+ QString line = stream.readLine();
+ QVERIFY(!line.isNull());
+ QVERIFY(!line.isNull());
+ }
+ QVERIFY(!stream.readLine().isNull());
+ QVERIFY(stream.readLine().isNull());
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readAllFromDevice_data()
+{
+ generateAllData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readAllFromDevice()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QString, output);
+
+ QBuffer buffer(&input);
+ buffer.open(QBuffer::ReadOnly);
+
+ QTextStream stream(&buffer);
+ QCOMPARE(stream.readAll(), output);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readAllFromString_data()
+{
+ generateAllData(true);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readAllFromString()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QString, output);
+
+ QString str = input;
+
+ QTextStream stream(&str);
+ QCOMPARE(stream.readAll(), output);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::skipWhiteSpace_data()
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<QChar>("output");
+
+ // latin1
+ QTest::newRow("empty") << QByteArray() << QChar('\0');
+ QTest::newRow(" one") << QByteArray(" one") << QChar('o');
+ QTest::newRow("\\none") << QByteArray("\none") << QChar('o');
+ QTest::newRow("\\n one") << QByteArray("\n one") << QChar('o');
+ QTest::newRow(" \\r\\n one") << QByteArray(" \r\n one") << QChar('o');
+
+ // utf-16
+ QTest::newRow("utf16-BE (empty)") << QByteArray("\xfe\xff", 2) << QChar('\0');
+ QTest::newRow("utf16-BE ( one)") << QByteArray("\xfe\xff\x00 \x00o\x00n\x00e", 10) << QChar('o');
+ QTest::newRow("utf16-BE (\\none)") << QByteArray("\xfe\xff\x00\n\x00o\x00n\x00e", 10) << QChar('o');
+ QTest::newRow("utf16-BE (\\n one)") << QByteArray("\xfe\xff\x00\n\x00 \x00o\x00n\x00e", 12) << QChar('o');
+ QTest::newRow("utf16-BE ( \\r\\n one)") << QByteArray("\xfe\xff\x00 \x00\r\x00\n\x00 \x00o\x00n\x00e", 20) << QChar('o');
+
+ QTest::newRow("utf16-LE (empty)") << QByteArray("\xff\xfe", 2) << QChar('\0');
+ QTest::newRow("utf16-LE ( one)") << QByteArray("\xff\xfe \x00o\x00n\x00e\x00", 10) << QChar('o');
+ QTest::newRow("utf16-LE (\\none)") << QByteArray("\xff\xfe\n\x00o\x00n\x00e\x00", 10) << QChar('o');
+ QTest::newRow("utf16-LE (\\n one)") << QByteArray("\xff\xfe\n\x00 \x00o\x00n\x00e\x00", 12) << QChar('o');
+ QTest::newRow("utf16-LE ( \\r\\n one)") << QByteArray("\xff\xfe \x00\r\x00\n\x00 \x00o\x00n\x00e\x00", 20) << QChar('o');
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::skipWhiteSpace()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QChar, output);
+
+ QBuffer buffer(&input);
+ buffer.open(QBuffer::ReadOnly);
+
+ QTextStream stream(&buffer);
+ stream.skipWhiteSpace();
+
+ QChar tmp;
+ stream >> tmp;
+
+ QCOMPARE(tmp, output);
+
+ QString str = input;
+ QTextStream stream2(&input);
+ stream2.skipWhiteSpace();
+
+ stream2 >> tmp;
+
+ QCOMPARE(tmp, output);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::lineCount_data()
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<int>("lineCount");
+
+ QTest::newRow("empty") << QByteArray() << 0;
+ QTest::newRow("oneline") << QByteArray("a\n") << 1;
+ QTest::newRow("twolines") << QByteArray("a\nb\n") << 2;
+ QTest::newRow("oneemptyline") << QByteArray("\n") << 1;
+ QTest::newRow("twoemptylines") << QByteArray("\n\n") << 2;
+ QTest::newRow("buffersize-1 line") << QByteArray(16382, '\n') << 16382;
+ QTest::newRow("buffersize line") << QByteArray(16383, '\n') << 16383;
+ QTest::newRow("buffersize+1 line") << QByteArray(16384, '\n') << 16384;
+ QTest::newRow("buffersize+2 line") << QByteArray(16385, '\n') << 16385;
+
+ QFile file(SRCDIR "rfc3261.txt"); file.open(QFile::ReadOnly);
+ QTest::newRow("rfc3261") << file.readAll() << 15067;
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::lineCount()
+{
+ QFETCH(QByteArray, data);
+ QFETCH(int, lineCount);
+
+ QFile out("out.txt");
+ out.open(QFile::WriteOnly);
+
+ QTextStream lineReader(data);
+ int lines = 0;
+ while (!lineReader.atEnd()) {
+ QString line = lineReader.readLine();
+ out.write(line.toLatin1() + "\n");
+ ++lines;
+ }
+
+ out.close();
+ QCOMPARE(lines, lineCount);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::performance()
+{
+ // Phase #1 - test speed of reading a huge text file with QFile.
+ QTime stopWatch;
+
+ int elapsed1 = 0;
+ int elapsed2 = 0;
+
+ stopWatch.restart();
+ int nlines1 = 0;
+ QFile file(SRCDIR "rfc3261.txt");
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ while (!file.atEnd()) {
+ ++nlines1;
+ file.readLine();
+ }
+
+ elapsed1 += stopWatch.elapsed();
+ stopWatch.restart();
+
+ int nlines2 = 0;
+ QFile file2(SRCDIR "rfc3261.txt");
+ QVERIFY(file2.open(QFile::ReadOnly));
+
+ QTextStream stream(&file2);
+ while (!stream.atEnd()) {
+ ++nlines2;
+ stream.readLine();
+ }
+
+ elapsed2 += stopWatch.elapsed();
+ QCOMPARE(nlines1, nlines2);
+
+ qDebug("QFile used %.2f seconds to read the file",
+ elapsed1 / 1000.0);
+
+ qDebug("QTextStream used %.2f seconds to read the file",
+ elapsed2 / 1000.0);
+ if (elapsed2 > elapsed1) {
+ qDebug("QFile is %.2fx faster than QTextStream",
+ double(elapsed2) / double(elapsed1));
+ } else {
+ qDebug("QTextStream is %.2fx faster than QFile",
+ double(elapsed1) / double(elapsed2));
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::hexTest_data()
+{
+ QTest::addColumn<qlonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_INT64_C(0) << QByteArray("0x0");
+ QTest::newRow("1") << Q_INT64_C(1) << QByteArray("0x1");
+ QTest::newRow("2") << Q_INT64_C(2) << QByteArray("0x2");
+ QTest::newRow("3") << Q_INT64_C(3) << QByteArray("0x3");
+ QTest::newRow("4") << Q_INT64_C(4) << QByteArray("0x4");
+ QTest::newRow("5") << Q_INT64_C(5) << QByteArray("0x5");
+ QTest::newRow("6") << Q_INT64_C(6) << QByteArray("0x6");
+ QTest::newRow("7") << Q_INT64_C(7) << QByteArray("0x7");
+ QTest::newRow("8") << Q_INT64_C(8) << QByteArray("0x8");
+ QTest::newRow("9") << Q_INT64_C(9) << QByteArray("0x9");
+ QTest::newRow("a") << Q_INT64_C(0xa) << QByteArray("0xa");
+ QTest::newRow("b") << Q_INT64_C(0xb) << QByteArray("0xb");
+ QTest::newRow("c") << Q_INT64_C(0xc) << QByteArray("0xc");
+ QTest::newRow("d") << Q_INT64_C(0xd) << QByteArray("0xd");
+ QTest::newRow("e") << Q_INT64_C(0xe) << QByteArray("0xe");
+ QTest::newRow("f") << Q_INT64_C(0xf) << QByteArray("0xf");
+ QTest::newRow("-1") << Q_INT64_C(-1) << QByteArray("-0x1");
+ QTest::newRow("0xffffffff") << Q_INT64_C(0xffffffff) << QByteArray("0xffffffff");
+ QTest::newRow("0xfffffffffffffffe") << Q_INT64_C(0xfffffffffffffffe) << QByteArray("-0x2");
+ QTest::newRow("0xffffffffffffffff") << Q_INT64_C(0xffffffffffffffff) << QByteArray("-0x1");
+ QTest::newRow("0x7fffffffffffffff") << Q_INT64_C(0x7fffffffffffffff) << QByteArray("0x7fffffffffffffff");
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::hexTest()
+{
+ QFETCH(qlonglong, number);
+ QFETCH(QByteArray, data);
+
+ QByteArray array;
+ QTextStream stream(&array);
+
+ stream << showbase << hex << number;
+ stream.flush();
+ QCOMPARE(array, data);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::binTest_data()
+{
+ QTest::addColumn<int>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << 0 << QByteArray("0b0");
+ QTest::newRow("1") << 1 << QByteArray("0b1");
+ QTest::newRow("2") << 2 << QByteArray("0b10");
+ QTest::newRow("5") << 5 << QByteArray("0b101");
+ QTest::newRow("-1") << -1 << QByteArray("-0b1");
+ QTest::newRow("11111111") << 0xff << QByteArray("0b11111111");
+ QTest::newRow("1111111111111111") << 0xffff << QByteArray("0b1111111111111111");
+ QTest::newRow("1111111011111110") << 0xfefe << QByteArray("0b1111111011111110");
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::binTest()
+{
+ QFETCH(int, number);
+ QFETCH(QByteArray, data);
+
+ QByteArray array;
+ QTextStream stream(&array);
+
+ stream << showbase << bin << number;
+ stream.flush();
+ QCOMPARE(array.constData(), data.constData());
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::octTest_data()
+{
+ QTest::addColumn<int>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << 0 << QByteArray("00");
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::octTest()
+{
+ QFETCH(int, number);
+ QFETCH(QByteArray, data);
+
+ QByteArray array;
+ QTextStream stream(&array);
+
+ stream << showbase << oct << number;
+ stream.flush();
+ QCOMPARE(array, data);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::zeroTermination()
+{
+ QTextStream stream;
+ char c = '@';
+
+ QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device");
+ stream >> c;
+ QCOMPARE(c, '\0');
+
+ c = '@';
+
+ QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device");
+ stream >> &c;
+ QCOMPARE(c, '\0');
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::ws_manipulator()
+{
+ {
+ QString string = "a b c d";
+ QTextStream stream(&string);
+
+ char a, b, c, d;
+ stream >> a >> b >> c >> d;
+ QCOMPARE(a, 'a');
+ QCOMPARE(b, ' ');
+ QCOMPARE(c, 'b');
+ QCOMPARE(d, ' ');
+ }
+ {
+ QString string = "a b c d";
+ QTextStream stream(&string);
+
+ char a, b, c, d;
+ stream >> a >> ws >> b >> ws >> c >> ws >> d;
+ QCOMPARE(a, 'a');
+ QCOMPARE(b, 'b');
+ QCOMPARE(c, 'c');
+ QCOMPARE(d, 'd');
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::stillOpenWhenAtEnd()
+{
+ int argc = 0;
+ char **argv = 0;
+ QCoreApplication app(argc, argv);
+
+ QFile file(SRCDIR "tst_qtextstream.cpp");
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ QTextStream stream(&file);
+ while (!stream.readLine().isNull()) {}
+ QVERIFY(file.isOpen());
+
+#ifdef Q_OS_WINCE
+ QSKIP("Qt/CE: Cannot test network on emulator", SkipAll);
+#endif
+ QTcpSocket socket;
+ socket.connectToHost(QtNetworkSettings::serverName(), 143);
+#if defined(Q_OS_SYMBIAN)
+ // This number is determined in an arbitrary way; whatever it takes
+ // to make the test pass.
+ QVERIFY(socket.waitForReadyRead(30000));
+#else
+ QVERIFY(socket.waitForReadyRead(5000));
+#endif
+
+ QTextStream stream2(&socket);
+ while (!stream2.readLine().isNull()) {}
+ QVERIFY(socket.isOpen());
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readNewlines_data()
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<QString>("output");
+
+ QTest::newRow("empty") << QByteArray() << QString();
+ QTest::newRow("\\r\\n") << QByteArray("\r\n") << QString("\n");
+ QTest::newRow("\\r\\r\\n") << QByteArray("\r\r\n") << QString("\n");
+ QTest::newRow("\\r\\n\\r\\n") << QByteArray("\r\n\r\n") << QString("\n\n");
+ QTest::newRow("\\n") << QByteArray("\n") << QString("\n");
+ QTest::newRow("\\n\\n") << QByteArray("\n\n") << QString("\n\n");
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readNewlines()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QString, output);
+
+ QBuffer buffer(&input);
+ buffer.open(QBuffer::ReadOnly | QBuffer::Text);
+ QTextStream stream(&buffer);
+ QCOMPARE(stream.readAll(), output);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::seek()
+{
+ QFile file(SRCDIR "rfc3261.txt");
+ QVERIFY(file.open(QFile::ReadOnly));
+
+ QTextStream stream(&file);
+ QString tmp;
+ stream >> tmp;
+ QCOMPARE(tmp, QString::fromLatin1("Network"));
+
+ // QTextStream::seek(0) should both clear its internal read/write buffers
+ // and seek the device.
+ for (int i = 0; i < 4; ++i) {
+ stream.seek(12 + i);
+ stream >> tmp;
+ QCOMPARE(tmp, QString("Network").mid(i));
+ }
+ for (int i = 0; i < 4; ++i) {
+ stream.seek(16 - i);
+ stream >> tmp;
+ QCOMPARE(tmp, QString("Network").mid(4 - i));
+ }
+ stream.seek(139181);
+ stream >> tmp;
+ QCOMPARE(tmp, QString("information"));
+ stream.seek(388683);
+ stream >> tmp;
+ QCOMPARE(tmp, QString("telephone"));
+
+ // Also test this with a string
+ QString words = QLatin1String("thisisa");
+ QTextStream stream2(&words, QIODevice::ReadOnly);
+ stream2 >> tmp;
+ QCOMPARE(tmp, QString::fromLatin1("thisisa"));
+
+ for (int i = 0; i < 4; ++i) {
+ stream2.seek(i);
+ stream2 >> tmp;
+ QCOMPARE(tmp, QString("thisisa").mid(i));
+ }
+ for (int i = 0; i < 4; ++i) {
+ stream2.seek(4 - i);
+ stream2 >> tmp;
+ QCOMPARE(tmp, QString("thisisa").mid(4 - i));
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::pos()
+{
+ int argc = 1;
+ QCoreApplication app(argc, 0);
+ {
+ // Strings
+ QString str("this is a test");
+ QTextStream stream(&str, QIODevice::ReadWrite);
+
+ QCOMPARE(stream.pos(), qint64(0));
+ for (int i = 0; i <= str.size(); ++i) {
+ QVERIFY(stream.seek(i));
+ QCOMPARE(stream.pos(), qint64(i));
+ }
+ for (int j = str.size(); j >= 0; --j) {
+ QVERIFY(stream.seek(j));
+ QCOMPARE(stream.pos(), qint64(j));
+ }
+
+ QVERIFY(stream.seek(0));
+
+ QChar ch;
+ stream >> ch;
+ QCOMPARE(ch, QChar('t'));
+
+ QCOMPARE(stream.pos(), qint64(1));
+ QVERIFY(stream.seek(1));
+ QCOMPARE(stream.pos(), qint64(1));
+ QVERIFY(stream.seek(0));
+
+ QString strtmp;
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString("this"));
+
+ QCOMPARE(stream.pos(), qint64(4));
+ stream.seek(0);
+ stream.seek(4);
+
+ stream >> ch;
+ QCOMPARE(ch, QChar(' '));
+ QCOMPARE(stream.pos(), qint64(5));
+
+ stream.seek(10);
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString("test"));
+ QCOMPARE(stream.pos(), qint64(14));
+ }
+ {
+ // Latin1 device
+ QFile file(SRCDIR "rfc3261.txt");
+ QVERIFY(file.open(QIODevice::ReadOnly));
+
+ QTextStream stream(&file);
+
+ QCOMPARE(stream.pos(), qint64(0));
+
+ for (int i = 0; i <= file.size(); i += 7) {
+ QVERIFY(stream.seek(i));
+ QCOMPARE(stream.pos(), qint64(i));
+ }
+ for (int j = file.size(); j >= 0; j -= 7) {
+ QVERIFY(stream.seek(j));
+ QCOMPARE(stream.pos(), qint64(j));
+ }
+
+ stream.seek(0);
+
+ QString strtmp;
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString("Network"));
+ QCOMPARE(stream.pos(), qint64(19));
+
+ stream.seek(2598);
+ QCOMPARE(stream.pos(), qint64(2598));
+ stream >> strtmp;
+ QCOMPARE(stream.pos(), qint64(2607));
+ QCOMPARE(strtmp, QString("locations"));
+ }
+ {
+ // Shift-JIS device
+ for (int i = 0; i < 2; ++i) {
+ QFile file(SRCDIR "shift-jis.txt");
+ if (i == 0)
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ else
+ QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
+
+ QTextStream stream(&file);
+ stream.setCodec("Shift-JIS");
+ QVERIFY(stream.codec());
+
+ QCOMPARE(stream.pos(), qint64(0));
+ for (int i = 0; i <= file.size(); i += 7) {
+ QVERIFY(stream.seek(i));
+ QCOMPARE(stream.pos(), qint64(i));
+ }
+ for (int j = file.size(); j >= 0; j -= 7) {
+ QVERIFY(stream.seek(j));
+ QCOMPARE(stream.pos(), qint64(j));
+ }
+
+ stream.seek(2089);
+ QString strtmp;
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString("AUnicode"));
+ QCOMPARE(stream.pos(), qint64(2097));
+
+ stream.seek(43325);
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString("Shift-JIS"));
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString::fromUtf8("\343\201\247\346\233\270\343\201\213\343\202\214\343\201\237"));
+ QCOMPARE(stream.pos(), qint64(43345));
+ stream >> strtmp;
+ QCOMPARE(strtmp, QString("POD"));
+ QCOMPARE(stream.pos(), qint64(43349));
+ }
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::pos2()
+{
+ QByteArray data("abcdef\r\nghijkl\r\n");
+ QBuffer buffer(&data);
+ QVERIFY(buffer.open(QIODevice::ReadOnly | QIODevice::Text));
+
+ QTextStream stream(&buffer);
+
+ QChar ch;
+
+ QCOMPARE(stream.pos(), qint64(0));
+ stream >> ch;
+ QCOMPARE(ch, QChar('a'));
+ QCOMPARE(stream.pos(), qint64(1));
+
+ QString str;
+ stream >> str;
+ QCOMPARE(str, QString("bcdef"));
+ QCOMPARE(stream.pos(), qint64(6));
+
+ stream >> str;
+ QCOMPARE(str, QString("ghijkl"));
+ QCOMPARE(stream.pos(), qint64(14));
+
+ // Seek back and try again
+ stream.seek(1);
+ QCOMPARE(stream.pos(), qint64(1));
+ stream >> str;
+ QCOMPARE(str, QString("bcdef"));
+ QCOMPARE(stream.pos(), qint64(6));
+
+ stream.seek(6);
+ stream >> str;
+ QCOMPARE(str, QString("ghijkl"));
+ QCOMPARE(stream.pos(), qint64(14));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::pos3LargeFile()
+{
+ {
+ QFile file(TestFileName);
+ file.open(QIODevice::WriteOnly | QIODevice::Text);
+ QTextStream out( &file );
+ // NOTE: The unusual spacing is to ensure non-1-character whitespace.
+ QString lineString = " 0 1 2\t3 4\t \t5 6 7 8 9 \n";
+ // Approximate 50kb text file
+ const int NbLines = (50*1024) / lineString.length() + 1;
+ for (int line = 0; line < NbLines; ++line)
+ out << lineString;
+ // File is automatically flushed and closed on destruction.
+ }
+ QFile file(TestFileName);
+ file.open(QIODevice::ReadOnly | QIODevice::Text);
+ QTextStream in( &file );
+ const int testValues[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+ int value;
+ while (true) {
+ in.pos();
+ for ( int i = 0; i < 10; ++i ) {
+ in >> value;
+ if (in.status() != QTextStream::Ok) {
+ // End case, i == 0 && eof reached.
+ QCOMPARE(i, 0);
+ QCOMPARE(in.status(), QTextStream::ReadPastEnd);
+ return;
+ }
+ QCOMPARE(value, testValues[i]);
+ }
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readStdin()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("Qt/CE and Symbian have no stdin/out support for processes", SkipAll);
+#endif
+ QProcess stdinProcess;
+ stdinProcess.start("stdinProcess/stdinProcess");
+ stdinProcess.setReadChannel(QProcess::StandardError);
+
+ QTextStream stream(&stdinProcess);
+ stream << "1" << endl;
+ stream << "2" << endl;
+ stream << "3" << endl;
+
+ stdinProcess.closeWriteChannel();
+
+ QVERIFY(stdinProcess.waitForFinished(5000));
+
+ int a, b, c;
+ stream >> a >> b >> c;
+ QCOMPARE(a, 1);
+ QCOMPARE(b, 2);
+ QCOMPARE(c, 3);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readAllFromStdin()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("Qt/CE and Symbian have no stdin/out support for processes", SkipAll);
+#endif
+ QProcess stdinProcess;
+ stdinProcess.start("readAllStdinProcess/readAllStdinProcess", QIODevice::ReadWrite | QIODevice::Text);
+ stdinProcess.setReadChannel(QProcess::StandardError);
+
+ QTextStream stream(&stdinProcess);
+ stream.setCodec("ISO-8859-1");
+ stream << "hello world" << flush;
+
+ stdinProcess.closeWriteChannel();
+
+ QVERIFY(stdinProcess.waitForFinished(5000));
+ QChar quoteChar('"');
+ QCOMPARE(stream.readAll(), QString::fromLatin1("%1hello world%2 \n").arg(quoteChar).arg(quoteChar));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::readLineFromStdin()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("Qt/CE and Symbian have no stdin/out support for processes", SkipAll);
+#endif
+ QProcess stdinProcess;
+ stdinProcess.start("readLineStdinProcess/readLineStdinProcess", QIODevice::ReadWrite | QIODevice::Text);
+ stdinProcess.setReadChannel(QProcess::StandardError);
+
+ stdinProcess.write("abc\n");
+ QVERIFY(stdinProcess.waitForReadyRead(5000));
+ QCOMPARE(stdinProcess.readAll().data(), QByteArray("abc").data());
+
+ stdinProcess.write("def\n");
+ QVERIFY(stdinProcess.waitForReadyRead(5000));
+ QCOMPARE(stdinProcess.readAll(), QByteArray("def"));
+
+ stdinProcess.closeWriteChannel();
+
+ QVERIFY(stdinProcess.waitForFinished(5000));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::read()
+{
+ {
+ QFile::remove("testfile");
+ QFile file("testfile");
+ file.open(QFile::WriteOnly);
+ file.write("4.15 abc ole");
+ file.close();
+
+ QVERIFY(file.open(QFile::ReadOnly));
+ QTextStream stream(&file);
+ QCOMPARE(stream.read(0), QString(""));
+ QCOMPARE(stream.read(4), QString("4.15"));
+ QCOMPARE(stream.read(4), QString(" abc"));
+ stream.seek(1);
+ QCOMPARE(stream.read(4), QString(".15 "));
+ stream.seek(1);
+ QCOMPARE(stream.read(4), QString(".15 "));
+ stream.seek(2);
+ QCOMPARE(stream.read(4), QString("15 a"));
+ // ### add tests for reading \r\n etc..
+ }
+
+ {
+ // File larger than QTEXTSTREAM_BUFFERSIZE
+ QFile::remove("testfile");
+ QFile file("testfile");
+ file.open(QFile::WriteOnly);
+ for (int i = 0; i < 16384 / 8; ++i)
+ file.write("01234567");
+ file.write("0");
+ file.close();
+
+ QVERIFY(file.open(QFile::ReadOnly));
+ QTextStream stream(&file);
+ QCOMPARE(stream.read(10), QString("0123456701"));
+ QCOMPARE(stream.read(10), QString("2345670123"));
+ QCOMPARE(stream.readAll().size(), 16385-20);
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::qbool()
+{
+ QString s;
+ QTextStream stream(&s);
+ stream << s.contains(QString("hei"));
+ QCOMPARE(s, QString("0"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::forcePoint()
+{
+ QString str;
+ QTextStream stream(&str);
+ stream << fixed << forcepoint << 1.0 << " " << 1 << " " << 0 << " " << -1.0 << " " << -1;
+ QCOMPARE(str, QString("1.000000 1 0 -1.000000 -1"));
+
+ str.clear();
+ stream.seek(0);
+ stream << scientific << forcepoint << 1.0 << " " << 1 << " " << 0 << " " << -1.0 << " " << -1;
+ QCOMPARE(str, QString("1.000000e+00 1 0 -1.000000e+00 -1"));
+
+ str.clear();
+ stream.seek(0);
+ stream.setRealNumberNotation(QTextStream::SmartNotation);
+ stream << forcepoint << 1.0 << " " << 1 << " " << 0 << " " << -1.0 << " " << -1;
+ QCOMPARE(str, QString("1.00000 1 0 -1.00000 -1"));
+
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::forceSign()
+{
+ QString str;
+ QTextStream stream(&str);
+ stream << forcesign << 1.2 << " " << -1.2 << " " << 0;
+ QCOMPARE(str, QString("+1.2 -1.2 +0"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::read0d0d0a()
+{
+ QFile file("task113817.txt");
+ file.open(QIODevice::ReadOnly | QIODevice::Text);
+
+ QTextStream stream(&file);
+ while (!stream.atEnd())
+ stream.readLine();
+}
+
+// ------------------------------------------------------------------------------
+
+Q_DECLARE_METATYPE(QTextStreamFunction);
+
+QTextStream &noop(QTextStream &s) { return s; }
+
+void tst_QTextStream::numeralCase_data()
+{
+ QTextStreamFunction noop_ = noop;
+ QTextStreamFunction bin_ = bin;
+ QTextStreamFunction oct_ = oct;
+ QTextStreamFunction hex_ = hex;
+ QTextStreamFunction base = showbase;
+ QTextStreamFunction ucb = uppercasebase;
+ QTextStreamFunction lcb = lowercasebase;
+ QTextStreamFunction ucd = uppercasedigits;
+ QTextStreamFunction lcd = lowercasedigits;
+
+ QTest::addColumn<QTextStreamFunction>("func1");
+ QTest::addColumn<QTextStreamFunction>("func2");
+ QTest::addColumn<QTextStreamFunction>("func3");
+ QTest::addColumn<QTextStreamFunction>("func4");
+ QTest::addColumn<int>("value");
+ QTest::addColumn<QString>("expected");
+ QTest::newRow("dec 1") << noop_ << noop_ << noop_ << noop_ << 31 << "31";
+ QTest::newRow("dec 2") << noop_ << base << noop_ << noop_ << 31 << "31";
+
+ QTest::newRow("hex 1") << hex_ << noop_ << noop_ << noop_ << 31 << "1f";
+ QTest::newRow("hex 2") << hex_ << noop_ << noop_ << lcd << 31 << "1f";
+ QTest::newRow("hex 3") << hex_ << noop_ << ucb << noop_ << 31 << "1f";
+ QTest::newRow("hex 4") << hex_ << noop_ << noop_ << ucd << 31 << "1F";
+ QTest::newRow("hex 5") << hex_ << noop_ << lcb << ucd << 31 << "1F";
+ QTest::newRow("hex 6") << hex_ << noop_ << ucb << ucd << 31 << "1F";
+ QTest::newRow("hex 7") << hex_ << base << noop_ << noop_ << 31 << "0x1f";
+ QTest::newRow("hex 8") << hex_ << base << lcb << lcd << 31 << "0x1f";
+ QTest::newRow("hex 9") << hex_ << base << ucb << noop_ << 31 << "0X1f";
+ QTest::newRow("hex 10") << hex_ << base << ucb << lcd << 31 << "0X1f";
+ QTest::newRow("hex 11") << hex_ << base << noop_ << ucd << 31 << "0x1F";
+ QTest::newRow("hex 12") << hex_ << base << lcb << ucd << 31 << "0x1F";
+ QTest::newRow("hex 13") << hex_ << base << ucb << ucd << 31 << "0X1F";
+
+ QTest::newRow("bin 1") << bin_ << noop_ << noop_ << noop_ << 31 << "11111";
+ QTest::newRow("bin 2") << bin_ << base << noop_ << noop_ << 31 << "0b11111";
+ QTest::newRow("bin 3") << bin_ << base << lcb << noop_ << 31 << "0b11111";
+ QTest::newRow("bin 4") << bin_ << base << ucb << noop_ << 31 << "0B11111";
+ QTest::newRow("bin 5") << bin_ << base << noop_ << ucd << 31 << "0b11111";
+ QTest::newRow("bin 6") << bin_ << base << lcb << ucd << 31 << "0b11111";
+ QTest::newRow("bin 7") << bin_ << base << ucb << ucd << 31 << "0B11111";
+
+ QTest::newRow("oct 1") << oct_ << noop_ << noop_ << noop_ << 31 << "37";
+ QTest::newRow("oct 2") << oct_ << base << noop_ << noop_ << 31 << "037";
+}
+
+// From Task 125496
+void tst_QTextStream::numeralCase()
+{
+ QFETCH(QTextStreamFunction, func1);
+ QFETCH(QTextStreamFunction, func2);
+ QFETCH(QTextStreamFunction, func3);
+ QFETCH(QTextStreamFunction, func4);
+ QFETCH(int, value);
+ QFETCH(QString, expected);
+
+ QString str;
+ QTextStream stream(&str);
+ stream << func1 << func2 << func3 << func4 << value;
+ QCOMPARE(str, expected);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::nanInf()
+{
+ // Cannot use test data in this function, as comparing nans and infs isn't
+ // well defined.
+ QString str("nan NAN nAn +nan +NAN +nAn -nan -NAN -nAn"
+ " inf INF iNf +inf +INF +iNf -inf -INF -iNf");
+
+ QTextStream stream(&str);
+
+ double tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD < 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD < 0); tmpD = 0;
+ stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD < 0); tmpD = 0;
+
+ stream.seek(0);
+
+ float tmpF = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF < 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF < 0); tmpD = 0;
+ stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF < 0);
+
+ QString s;
+ QTextStream out(&s);
+ out << qInf() << " " << -qInf() << " " << qQNaN()
+ << uppercasedigits << " "
+ << qInf() << " " << -qInf() << " " << qQNaN()
+ << flush;
+
+ QCOMPARE(s, QString("inf -inf nan INF -INF NAN"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::utf8IncompleteAtBufferBoundary_data()
+{
+ QTest::addColumn<bool>("useLocale");
+
+ QTest::newRow("utf8") << false;
+
+ // is this locale UTF-8?
+ if (QString(QChar::ReplacementCharacter).toLocal8Bit() == "\xef\xbf\xbd")
+ QTest::newRow("locale") << true;
+}
+
+void tst_QTextStream::utf8IncompleteAtBufferBoundary()
+{
+ QFile::remove(TestFileName);
+ QFile data(TestFileName);
+
+ QTextCodec *utf8Codec = QTextCodec::codecForMib(106);
+ QString lineContents = QString::fromUtf8("\342\200\223" // U+2013 EN DASH
+ "\342\200\223"
+ "\342\200\223"
+ "\342\200\223"
+ "\342\200\223"
+ "\342\200\223");
+
+ data.open(QFile::WriteOnly | QFile::Truncate);
+ {
+ QTextStream out(&data);
+ out.setCodec(utf8Codec);
+ out.setFieldWidth(3);
+
+ for (int i = 0; i < 1000; ++i) {
+ out << i << lineContents << endl;
+ }
+ }
+ data.close();
+
+ data.open(QFile::ReadOnly);
+ QTextStream in(&data);
+
+ QFETCH(bool, useLocale);
+ if (!useLocale)
+ in.setCodec(utf8Codec); // QUtf8Codec
+ else
+ in.setCodec(QTextCodec::codecForLocale());
+
+ int i = 0;
+ do {
+ QString line = in.readLine().trimmed();
+ ++i;
+ QVERIFY2(line.endsWith(lineContents), QString("Line %1: %2").arg(i).arg(line).toLocal8Bit());
+ } while (!in.atEnd());
+}
+
+// ------------------------------------------------------------------------------
+
+// Make sure we don't write a BOM after seek()ing
+
+void tst_QTextStream::writeSeekWriteNoBOM()
+{
+
+ //First with the default codec (normally either latin-1 or UTF-8)
+
+ QBuffer out;
+ out.open(QIODevice::WriteOnly);
+ QTextStream stream(&out);
+
+ int number = 0;
+ QString sizeStr = QLatin1String("Size=")
+ + QString::number(number).rightJustified(10, QLatin1Char('0'));
+ stream << sizeStr << endl;
+ stream << "Version=" << QString::number(14) << endl;
+ stream << "blah blah blah" << endl;
+ stream.flush();
+
+ QCOMPARE(out.buffer().constData(), "Size=0000000000\nVersion=14\nblah blah blah\n");
+
+ // Now overwrite the size header item
+ number = 42;
+ stream.seek(0);
+ sizeStr = QLatin1String("Size=")
+ + QString::number(number).rightJustified(10, QLatin1Char('0'));
+ stream << sizeStr << endl;
+ stream.flush();
+
+ // Check buffer is still OK
+ QCOMPARE(out.buffer().constData(), "Size=0000000042\nVersion=14\nblah blah blah\n");
+
+
+ //Then UTF-16
+
+ QBuffer out16;
+ out16.open(QIODevice::WriteOnly);
+ QTextStream stream16(&out16);
+ stream16.setCodec("UTF-16");
+
+ stream16 << "one" << "two" << QLatin1String("three");
+ stream16.flush();
+
+ // save that output
+ QByteArray first = out16.buffer();
+
+ stream16.seek(0);
+ stream16 << "one";
+ stream16.flush();
+
+ QCOMPARE(out16.buffer(), first);
+}
+
+
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::generateOperatorCharData(bool for_QString)
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<QChar>("qchar_output");
+ QTest::addColumn<char>("char_output");
+ QTest::addColumn<QByteArray>("write_output");
+
+ QTest::newRow("empty") << QByteArray() << QChar('\0') << '\0' << QByteArray("\0", 1);
+ QTest::newRow("a") << QByteArray("a") << QChar('a') << 'a' << QByteArray("a");
+ QTest::newRow("\\na") << QByteArray("\na") << QChar('\n') << '\n' << QByteArray("\n");
+ QTest::newRow("\\0") << QByteArray("\0") << QChar('\0') << '\0' << QByteArray("\0", 1);
+ QTest::newRow("\\xff") << QByteArray("\xff") << QChar('\xff') << '\xff' << QByteArray("\xff");
+ QTest::newRow("\\xfe") << QByteArray("\xfe") << QChar('\xfe') << '\xfe' << QByteArray("\xfe");
+
+ if (!for_QString) {
+ QTest::newRow("utf16-BE (empty)") << QByteArray("\xff\xfe", 2) << QChar('\0') << '\0' << QByteArray("\0", 1);
+ QTest::newRow("utf16-BE (a)") << QByteArray("\xff\xfe\x61\x00", 4) << QChar('a') << 'a' << QByteArray("a");
+ QTest::newRow("utf16-LE (empty)") << QByteArray("\xfe\xff", 2) << QChar('\0') << '\0' << QByteArray("\0", 1);
+ QTest::newRow("utf16-LE (a)") << QByteArray("\xfe\xff\x00\x61", 4) << QChar('a') << 'a' << QByteArray("a");
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::QChar_operators_FromDevice_data()
+{
+ generateOperatorCharData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::QChar_operators_FromDevice()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QChar, qchar_output);
+ QFETCH(QByteArray, write_output);
+
+ QBuffer buf(&input);
+ buf.open(QBuffer::ReadOnly);
+ QTextStream stream(&buf);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ QChar tmp;
+ stream >> tmp;
+ QCOMPARE(tmp, qchar_output);
+
+ QBuffer writeBuf;
+ writeBuf.open(QBuffer::WriteOnly);
+
+ QTextStream writeStream(&writeBuf);
+ writeStream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ writeStream << qchar_output;
+ writeStream.flush();
+
+ QCOMPARE(writeBuf.buffer().size(), write_output.size());
+ QCOMPARE(writeBuf.buffer().constData(), write_output.constData());
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::char_operators_FromDevice_data()
+{
+ generateOperatorCharData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::char_operators_FromDevice()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(char, char_output);
+ QFETCH(QByteArray, write_output);
+
+ QBuffer buf(&input);
+ buf.open(QBuffer::ReadOnly);
+ QTextStream stream(&buf);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ char tmp;
+ stream >> tmp;
+ QCOMPARE(tmp, char_output);
+
+ QBuffer writeBuf;
+ writeBuf.open(QBuffer::WriteOnly);
+
+ QTextStream writeStream(&writeBuf);
+ writeStream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ writeStream << char_output;
+ writeStream.flush();
+
+ QCOMPARE(writeBuf.buffer().size(), write_output.size());
+ QCOMPARE(writeBuf.buffer().constData(), write_output.constData());
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::generateNaturalNumbersData(bool for_QString)
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<qulonglong>("output");
+
+ QTest::newRow("empty") << QByteArray() << qulonglong(0);
+ QTest::newRow("a") << QByteArray("a") << qulonglong(0);
+ QTest::newRow(" ") << QByteArray(" ") << qulonglong(0);
+ QTest::newRow("0") << QByteArray("0") << qulonglong(0);
+ QTest::newRow("1") << QByteArray("1") << qulonglong(1);
+ QTest::newRow("12") << QByteArray("12") << qulonglong(12);
+ QTest::newRow("-12") << QByteArray("-12") << qulonglong(-12);
+ QTest::newRow("-0") << QByteArray("-0") << qulonglong(0);
+ QTest::newRow(" 1") << QByteArray(" 1") << qulonglong(1);
+ QTest::newRow(" \\r\\n\\r\\n123") << QByteArray(" \r\n\r\n123") << qulonglong(123);
+
+ // bit boundary tests
+ QTest::newRow("127") << QByteArray("127") << qulonglong(127);
+ QTest::newRow("128") << QByteArray("128") << qulonglong(128);
+ QTest::newRow("129") << QByteArray("129") << qulonglong(129);
+ QTest::newRow("-127") << QByteArray("-127") << qulonglong(-127);
+ QTest::newRow("-128") << QByteArray("-128") << qulonglong(-128);
+ QTest::newRow("-129") << QByteArray("-129") << qulonglong(-129);
+ QTest::newRow("32767") << QByteArray("32767") << qulonglong(32767);
+ QTest::newRow("32768") << QByteArray("32768") << qulonglong(32768);
+ QTest::newRow("32769") << QByteArray("32769") << qulonglong(32769);
+ QTest::newRow("-32767") << QByteArray("-32767") << qulonglong(-32767);
+ QTest::newRow("-32768") << QByteArray("-32768") << qulonglong(-32768);
+ QTest::newRow("-32769") << QByteArray("-32769") << qulonglong(-32769);
+ QTest::newRow("65537") << QByteArray("65537") << qulonglong(65537);
+ QTest::newRow("65536") << QByteArray("65536") << qulonglong(65536);
+ QTest::newRow("65535") << QByteArray("65535") << qulonglong(65535);
+ QTest::newRow("-65537") << QByteArray("-65537") << qulonglong(-65537);
+ QTest::newRow("-65536") << QByteArray("-65536") << qulonglong(-65536);
+ QTest::newRow("-65535") << QByteArray("-65535") << qulonglong(-65535);
+ QTest::newRow("2147483646") << QByteArray("2147483646") << qulonglong(2147483646);
+ QTest::newRow("2147483647") << QByteArray("2147483647") << qulonglong(2147483647);
+ QTest::newRow("2147483648") << QByteArray("2147483648") << Q_UINT64_C(2147483648);
+ QTest::newRow("-2147483646") << QByteArray("-2147483646") << qulonglong(-2147483646);
+ QTest::newRow("-2147483647") << QByteArray("-2147483647") << qulonglong(-2147483647);
+ QTest::newRow("-2147483648") << QByteArray("-2147483648") << Q_UINT64_C(-2147483648);
+ QTest::newRow("4294967296") << QByteArray("4294967296") << Q_UINT64_C(4294967296);
+ QTest::newRow("4294967297") << QByteArray("4294967297") << Q_UINT64_C(4294967297);
+ QTest::newRow("4294967298") << QByteArray("4294967298") << Q_UINT64_C(4294967298);
+ QTest::newRow("-4294967296") << QByteArray("-4294967296") << Q_UINT64_C(-4294967296);
+ QTest::newRow("-4294967297") << QByteArray("-4294967297") << Q_UINT64_C(-4294967297);
+ QTest::newRow("-4294967298") << QByteArray("-4294967298") << Q_UINT64_C(-4294967298);
+ QTest::newRow("9223372036854775807") << QByteArray("9223372036854775807") << Q_UINT64_C(9223372036854775807);
+ QTest::newRow("9223372036854775808") << QByteArray("9223372036854775808") << Q_UINT64_C(9223372036854775808);
+ QTest::newRow("9223372036854775809") << QByteArray("9223372036854775809") << Q_UINT64_C(9223372036854775809);
+ QTest::newRow("18446744073709551615") << QByteArray("18446744073709551615") << Q_UINT64_C(18446744073709551615);
+ QTest::newRow("18446744073709551616") << QByteArray("18446744073709551616") << Q_UINT64_C(0);
+ QTest::newRow("18446744073709551617") << QByteArray("18446744073709551617") << Q_UINT64_C(1);
+ // 18446744073709551617 bytes should be enough for anyone.... ;-)
+
+ // hex tests
+ QTest::newRow("0x0") << QByteArray("0x0") << qulonglong(0);
+ QTest::newRow("0x") << QByteArray("0x") << qulonglong(0);
+ QTest::newRow("0x1") << QByteArray("0x1") << qulonglong(1);
+ QTest::newRow("0xf") << QByteArray("0xf") << qulonglong(15);
+ QTest::newRow("0xdeadbeef") << QByteArray("0xdeadbeef") << Q_UINT64_C(3735928559);
+ QTest::newRow("0XDEADBEEF") << QByteArray("0XDEADBEEF") << Q_UINT64_C(3735928559);
+ QTest::newRow("0xdeadbeefZzzzz") << QByteArray("0xdeadbeefZzzzz") << Q_UINT64_C(3735928559);
+ QTest::newRow(" 0xdeadbeefZzzzz") << QByteArray(" 0xdeadbeefZzzzz") << Q_UINT64_C(3735928559);
+
+ // oct tests
+ QTest::newRow("00") << QByteArray("00") << qulonglong(0);
+ QTest::newRow("0141") << QByteArray("0141") << qulonglong(97);
+ QTest::newRow("01419999") << QByteArray("01419999") << qulonglong(97);
+ QTest::newRow(" 01419999") << QByteArray(" 01419999") << qulonglong(97);
+
+ // bin tests
+ QTest::newRow("0b0") << QByteArray("0b0") << qulonglong(0);
+ QTest::newRow("0b1") << QByteArray("0b1") << qulonglong(1);
+ QTest::newRow("0b10") << QByteArray("0b10") << qulonglong(2);
+ QTest::newRow("0B10") << QByteArray("0B10") << qulonglong(2);
+ QTest::newRow("0b101010") << QByteArray("0b101010") << qulonglong(42);
+ QTest::newRow("0b1010102345") << QByteArray("0b1010102345") << qulonglong(42);
+ QTest::newRow(" 0b1010102345") << QByteArray(" 0b1010102345") << qulonglong(42);
+
+ // utf-16 tests
+ if (!for_QString) {
+ QTest::newRow("utf16-BE (empty)") << QByteArray("\xfe\xff", 2) << qulonglong(0);
+ QTest::newRow("utf16-BE (0xdeadbeef)")
+ << QByteArray("\xfe\xff"
+ "\x00\x30\x00\x78\x00\x64\x00\x65\x00\x61\x00\x64\x00\x62\x00\x65\x00\x65\x00\x66", 22)
+ << Q_UINT64_C(3735928559);
+ QTest::newRow("utf16-LE (empty)") << QByteArray("\xff\xfe", 2) << Q_UINT64_C(0);
+ QTest::newRow("utf16-LE (0xdeadbeef)")
+ << QByteArray("\xff\xfe"
+ "\x30\x00\x78\x00\x64\x00\x65\x00\x61\x00\x64\x00\x62\x00\x65\x00\x65\x00\x66\x00", 22)
+ << Q_UINT64_C(3735928559);
+ }
+}
+
+// ------------------------------------------------------------------------------
+#define IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(texttype, type) \
+ void tst_QTextStream:: texttype##_read_operator_FromDevice_data() \
+ { generateNaturalNumbersData(false); } \
+ void tst_QTextStream:: texttype##_read_operator_FromDevice() \
+ { \
+ QFETCH(QByteArray, input); \
+ QFETCH(qulonglong, output); \
+ type sh; \
+ QTextStream stream(&input); \
+ stream >> sh; \
+ QCOMPARE(sh, (type)output); \
+ }
+IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(signedShort, signed short)
+IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(unsignedShort, unsigned short)
+IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(signedInt, signed int)
+IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(unsignedInt, unsigned int)
+IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(qlonglong, qlonglong)
+IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(qulonglong, qulonglong)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::generateRealNumbersData(bool for_QString)
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<double>("output");
+
+ QTest::newRow("empty") << QByteArray() << 0.0;
+ QTest::newRow("a") << QByteArray("a") << 0.0;
+ QTest::newRow("1.0") << QByteArray("1.0") << 1.0;
+ QTest::newRow(" 1") << QByteArray(" 1") << 1.0;
+ QTest::newRow(" \\r\\n1.2") << QByteArray(" \r\n1.2") << 1.2;
+ QTest::newRow("3.14") << QByteArray("3.14") << 3.14;
+ QTest::newRow("-3.14") << QByteArray("-3.14") << -3.14;
+ QTest::newRow(" -3.14") << QByteArray(" -3.14") << -3.14;
+ QTest::newRow("314e-02") << QByteArray("314e-02") << 3.14;
+ QTest::newRow("314E-02") << QByteArray("314E-02") << 3.14;
+ QTest::newRow("314e+02") << QByteArray("314e+02") << 31400.;
+ QTest::newRow("314E+02") << QByteArray("314E+02") << 31400.;
+
+ // ### add numbers with exponents
+
+ if (!for_QString) {
+ QTest::newRow("utf16-BE (empty)") << QByteArray("\xff\xfe", 2) << 0.0;
+ QTest::newRow("utf16-LE (empty)") << QByteArray("\xfe\xff", 2) << 0.0;
+ }
+}
+
+// ------------------------------------------------------------------------------
+#define IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(texttype, type) \
+ void tst_QTextStream:: texttype##_read_operator_FromDevice_data() \
+ { generateRealNumbersData(false); } \
+ void tst_QTextStream:: texttype##_read_operator_FromDevice() \
+ { \
+ QFETCH(QByteArray, input); \
+ QFETCH(double, output); \
+ type sh; \
+ QTextStream stream(&input); \
+ stream >> sh; \
+ QCOMPARE(sh, (type)output); \
+ }
+IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(float, float)
+IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(double, double)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::generateStringData(bool for_QString)
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<QByteArray>("array_output");
+ QTest::addColumn<QString>("string_output");
+
+ QTest::newRow("empty") << QByteArray() << QByteArray() << QString();
+ QTest::newRow("a") << QByteArray("a") << QByteArray("a") << QString("a");
+ QTest::newRow("a b") << QByteArray("a b") << QByteArray("a") << QString("a");
+ QTest::newRow(" a b") << QByteArray(" a b") << QByteArray("a") << QString("a");
+ QTest::newRow("a1") << QByteArray("a1") << QByteArray("a1") << QString("a1");
+ QTest::newRow("a1 b1") << QByteArray("a1 b1") << QByteArray("a1") << QString("a1");
+ QTest::newRow(" a1 b1") << QByteArray(" a1 b1") << QByteArray("a1") << QString("a1");
+ QTest::newRow("\\n\\n\\nole i dole\\n") << QByteArray("\n\n\nole i dole\n") << QByteArray("ole") << QString("ole");
+
+ if (!for_QString) {
+ QTest::newRow("utf16-BE (empty)") << QByteArray("\xff\xfe", 2) << QByteArray() << QString();
+ QTest::newRow("utf16-BE (corrupt)") << QByteArray("\xff", 1) << QByteArray("\xff") << QString("\xff");
+ QTest::newRow("utf16-LE (empty)") << QByteArray("\xfe\xff", 2) << QByteArray() << QString();
+ QTest::newRow("utf16-LE (corrupt)") << QByteArray("\xfe", 1) << QByteArray("\xfe") << QString("\xfe");
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::charPtr_read_operator_FromDevice_data()
+{
+ generateStringData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::charPtr_read_operator_FromDevice()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QByteArray, array_output);
+
+ QBuffer buffer(&input);
+ buffer.open(QBuffer::ReadOnly);
+ QTextStream stream(&buffer);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ char buf[1024];
+ stream >> buf;
+
+ QCOMPARE((const char *)buf, array_output.constData());
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::stringRef_read_operator_FromDevice_data()
+{
+ generateStringData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::stringRef_read_operator_FromDevice()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QString, string_output);
+
+ QBuffer buffer(&input);
+ buffer.open(QBuffer::ReadOnly);
+ QTextStream stream(&buffer);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ QString tmp;
+ stream >> tmp;
+
+ QCOMPARE(tmp, string_output);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::byteArray_read_operator_FromDevice_data()
+{
+ generateStringData(false);
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::byteArray_read_operator_FromDevice()
+{
+ QFETCH(QByteArray, input);
+ QFETCH(QByteArray, array_output);
+
+ QBuffer buffer(&input);
+ buffer.open(QBuffer::ReadOnly);
+ QTextStream stream(&buffer);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ QByteArray array;
+ stream >> array;
+
+ QCOMPARE(array, array_output);
+}
+
+// ------------------------------------------------------------------------------
+#define IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(texttype, type) \
+ void tst_QTextStream:: texttype##_write_operator_ToDevice() \
+ { \
+ QFETCH(qulonglong, number); \
+ QFETCH(QByteArray, data); \
+ \
+ QBuffer buffer; \
+ buffer.open(QBuffer::WriteOnly); \
+ QTextStream stream(&buffer); \
+ stream << (type)number; \
+ stream.flush(); \
+ \
+ QCOMPARE(buffer.data().constData(), data.constData()); \
+ }
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::signedShort_write_operator_ToDevice_data()
+{
+ QTest::addColumn<qulonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
+ QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
+ QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("-1");
+ QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
+ QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("-32768");
+ QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("-32767");
+ QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("-1");
+ QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("0");
+ QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("1");
+}
+IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(signedShort, signed short)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::unsignedShort_write_operator_ToDevice_data()
+{
+ QTest::addColumn<qulonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
+ QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
+ QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("65535");
+ QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
+ QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
+ QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
+ QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
+ QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("0");
+ QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("1");
+}
+IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(unsignedShort, unsigned short)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::signedInt_write_operator_ToDevice_data()
+{
+ QTest::addColumn<qulonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
+ QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
+ QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("-1");
+ QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
+ QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
+ QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
+ QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
+ QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536");
+ QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537");
+ QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647");
+ QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("-2147483648");
+ QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("-2147483647");
+ QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("-1");
+ QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("0");
+ QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("1");
+}
+IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(signedInt, signed int)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::unsignedInt_write_operator_ToDevice_data()
+{
+ QTest::addColumn<qulonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
+ QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
+ QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("4294967295");
+ QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
+ QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
+ QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
+ QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
+ QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536");
+ QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537");
+ QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647");
+ QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("2147483648");
+ QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("2147483649");
+ QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("4294967295");
+ QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("0");
+ QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("1");
+}
+IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(unsignedInt, unsigned int)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::qlonglong_write_operator_ToDevice_data()
+{
+ QTest::addColumn<qulonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
+ QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
+ QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("-1");
+ QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
+ QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
+ QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
+ QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
+ QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536");
+ QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537");
+ QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647");
+ QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("2147483648");
+ QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("2147483649");
+ QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("4294967295");
+ QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("4294967296");
+ QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("4294967297");
+ QTest::newRow("9223372036854775807") << Q_UINT64_C(9223372036854775807) << QByteArray("9223372036854775807");
+ QTest::newRow("9223372036854775808") << Q_UINT64_C(9223372036854775808) << QByteArray("-9223372036854775808");
+ QTest::newRow("9223372036854775809") << Q_UINT64_C(9223372036854775809) << QByteArray("-9223372036854775807");
+ QTest::newRow("18446744073709551615") << Q_UINT64_C(18446744073709551615) << QByteArray("-1");
+}
+IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(qlonglong, qlonglong)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::qulonglong_write_operator_ToDevice_data()
+{
+ QTest::addColumn<qulonglong>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0");
+ QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1");
+ QTest::newRow("-1") << Q_UINT64_C(-1) << QByteArray("18446744073709551615");
+ QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767");
+ QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768");
+ QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769");
+ QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535");
+ QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536");
+ QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537");
+ QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647");
+ QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("2147483648");
+ QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("2147483649");
+ QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("4294967295");
+ QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("4294967296");
+ QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("4294967297");
+ QTest::newRow("9223372036854775807") << Q_UINT64_C(9223372036854775807) << QByteArray("9223372036854775807");
+ QTest::newRow("9223372036854775808") << Q_UINT64_C(9223372036854775808) << QByteArray("9223372036854775808");
+ QTest::newRow("9223372036854775809") << Q_UINT64_C(9223372036854775809) << QByteArray("9223372036854775809");
+ QTest::newRow("18446744073709551615") << Q_UINT64_C(18446744073709551615) << QByteArray("18446744073709551615");
+}
+IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(qulonglong, qulonglong)
+ ;
+
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::generateRealNumbersDataWrite()
+{
+ QTest::addColumn<double>("number");
+ QTest::addColumn<QByteArray>("data");
+
+ QTest::newRow("0") << 0.0 << QByteArray("0");
+ QTest::newRow("3.14") << 3.14 << QByteArray("3.14");
+ QTest::newRow("-3.14") << -3.14 << QByteArray("-3.14");
+ QTest::newRow("1.2e+10") << 1.2e+10 << QByteArray("1.2e+10");
+ QTest::newRow("-1.2e+10") << -1.2e+10 << QByteArray("-1.2e+10");
+}
+
+// ------------------------------------------------------------------------------
+#define IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(texttype, type) \
+ void tst_QTextStream:: texttype##_write_operator_ToDevice_data() \
+ { generateRealNumbersDataWrite(); } \
+ void tst_QTextStream:: texttype##_write_operator_ToDevice() \
+ { \
+ QFETCH(double, number); \
+ QFETCH(QByteArray, data); \
+ \
+ QBuffer buffer; \
+ buffer.open(QBuffer::WriteOnly); \
+ QTextStream stream(&buffer); \
+ float f = (float)number; \
+ stream << f; \
+ stream.flush(); \
+ QCOMPARE(buffer.data().constData(), data.constData()); \
+ }
+IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(float, float)
+IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(double, float)
+ ;
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::string_write_operator_ToDevice_data()
+{
+ QTest::addColumn<QByteArray>("bytedata");
+ QTest::addColumn<QString>("stringdata");
+ QTest::addColumn<QByteArray>("result");
+
+ QTest::newRow("empty") << QByteArray("", 1) << QString(1, '\0') << QByteArray("", 1);
+ QTest::newRow("a") << QByteArray("a") << QString("a") << QByteArray("a");
+ QTest::newRow("a cow jumped over the moon")
+ << QByteArray("a cow jumped over the moon")
+ << QString("a cow jumped over the moon")
+ << QByteArray("a cow jumped over the moon");
+
+ // ### get the utf16-be test on its legs.
+ /*
+ QTest::newRow("utf16-BE (a cow jumped over the moon)")
+ << QByteArray("\xff\xfe\x00\x61\x00\x20\x00\x63\x00\x6f\x00\x77\x00\x20\x00\x6a\x00\x75\x00\x6d\x00\x70\x00\x65\x00\x64\x00\x20\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x20\x00\x74\x00\x68\x00\x65\x00\x20\x00\x6d\x00\x6f\x00\x6f\x00\x6e\x00\x0a", 56)
+ << QString("a cow jumped over the moon")
+ << QByteArray("a cow jumped over the moon");
+ */
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::string_write_operator_ToDevice()
+{
+ QFETCH(QByteArray, bytedata);
+ QFETCH(QString, stringdata);
+ QFETCH(QByteArray, result);
+
+ {
+ // char*
+ QBuffer buf;
+ buf.open(QBuffer::WriteOnly);
+ QTextStream stream(&buf);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ stream << bytedata.constData();
+ stream.flush();
+ QCOMPARE(buf.buffer().constData(), result.constData());
+ }
+ {
+ // QByteArray
+ QBuffer buf;
+ buf.open(QBuffer::WriteOnly);
+ QTextStream stream(&buf);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ stream << bytedata;
+ stream.flush();
+ QCOMPARE(buf.buffer().constData(), result.constData());
+ }
+ {
+ // QString
+ QBuffer buf;
+ buf.open(QBuffer::WriteOnly);
+ QTextStream stream(&buf);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ stream << stringdata;
+ stream.flush();
+ QCOMPARE(buf.buffer().constData(), result.constData());
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::useCase1()
+{
+ QFile::remove("testfile");
+ QFile file("testfile");
+ QVERIFY(file.open(QFile::ReadWrite));
+
+ {
+ QTextStream stream(&file);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ stream << 4.15 << " " << QByteArray("abc") << " " << QString("ole");
+ }
+
+ file.seek(0);
+ QCOMPARE(file.readAll(), QByteArray("4.15 abc ole"));
+ file.seek(0);
+
+ {
+ double d;
+ QByteArray a;
+ QString s;
+ QTextStream stream(&file);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ stream >> d;
+ stream >> a;
+ stream >> s;
+
+ QCOMPARE(d, 4.15);
+ QCOMPARE(a, QByteArray("abc"));
+ QCOMPARE(s, QString("ole"));
+ }
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::useCase2()
+{
+ QFile::remove("testfile");
+ QFile file("testfile");
+ QVERIFY(file.open(QFile::ReadWrite));
+
+ QTextStream stream(&file);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ stream << 4.15 << " " << QByteArray("abc") << " " << QString("ole");
+
+ file.close();
+ QVERIFY(file.open(QFile::ReadWrite));
+
+ QCOMPARE(file.readAll(), QByteArray("4.15 abc ole"));
+
+ file.close();
+ QVERIFY(file.open(QFile::ReadWrite));
+
+ double d;
+ QByteArray a;
+ QString s;
+ QTextStream stream2(&file);
+ stream2.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream2.setAutoDetectUnicode(true);
+
+ stream2 >> d;
+ stream2 >> a;
+ stream2 >> s;
+
+ QCOMPARE(d, 4.15);
+ QCOMPARE(a, QByteArray("abc"));
+ QCOMPARE(s, QString("ole"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::manipulators_data()
+{
+ QTest::addColumn<int>("flags");
+ QTest::addColumn<int>("width");
+ QTest::addColumn<double>("realNumber");
+ QTest::addColumn<int>("intNumber");
+ QTest::addColumn<QString>("textData");
+ QTest::addColumn<QByteArray>("result");
+
+ QTest::newRow("no flags") << 0 << 0 << 5.0 << 5 << QString("five") << QByteArray("55five");
+ QTest::newRow("rightadjust") << 0 << 10 << 5.0 << 5 << QString("five") << QByteArray(" 5 5 five");
+
+ // ### FIX
+// QTest::newRow("leftadjust") << int(QTextStream::left) << 10 << 5.0 << 5 << QString("five") << QByteArray("5 5 five ");
+// QTest::newRow("showpos") << int(QTextStream::showpos) << 10 << 5.0 << 5 << QString("five") << QByteArray(" +5 +5 five");
+// QTest::newRow("showpos2") << int(QTextStream::showpos) << 5 << 3.14 << -5 << QString("five") << QByteArray("+3.14 -5 five");
+// QTest::newRow("hex") << int(QTextStream::hex | QTextStream::showbase) << 5 << 3.14 << -5 << QString("five") << QByteArray(" 3.14 -0x5 five");
+// QTest::newRow("hex uppercase") << int(QTextStream::hex | QTextStream::uppercase | QTextStream::showbase) << 5 << 3.14 << -5 << QString("five") << QByteArray(" 3.14 -0X5 five");
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::manipulators()
+{
+// QFETCH(int, flags);
+ QFETCH(int, width);
+ QFETCH(double, realNumber);
+ QFETCH(int, intNumber);
+ QFETCH(QString, textData);
+ QFETCH(QByteArray, result);
+
+ QBuffer buffer;
+ buffer.open(QBuffer::WriteOnly);
+
+ QTextStream stream(&buffer);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+// stream.setFlags(flags);
+ stream.setFieldWidth(width);
+ stream << realNumber;
+ stream << intNumber;
+ stream << textData;
+ stream.flush();
+
+ QCOMPARE(buffer.data().constData(), result.constData());
+}
+
+void tst_QTextStream::generateBOM()
+{
+ QFile::remove("bom.txt");
+ {
+ QFile file("bom.txt");
+ QVERIFY(file.open(QFile::ReadWrite | QFile::Truncate));
+
+ QTextStream stream(&file);
+ stream.setCodec(QTextCodec::codecForName("UTF-16LE"));
+ stream << "Hello" << endl;
+
+ file.close();
+ QVERIFY(file.open(QFile::ReadOnly));
+ QCOMPARE(file.readAll(), QByteArray("\x48\x00\x65\00\x6c\00\x6c\00\x6f\x00\x0a\x00", 12));
+ }
+
+ QFile::remove("bom.txt");
+ {
+ QFile file("bom.txt");
+ QVERIFY(file.open(QFile::ReadWrite | QFile::Truncate));
+
+ QTextStream stream(&file);
+ stream.setCodec(QTextCodec::codecForName("UTF-16LE"));
+ stream << bom << "Hello" << endl;
+
+ file.close();
+ QVERIFY(file.open(QFile::ReadOnly));
+ QCOMPARE(file.readAll(), QByteArray("\xff\xfe\x48\x00\x65\00\x6c\00\x6c\00\x6f\x00\x0a\x00", 14));
+ }
+}
+
+void tst_QTextStream::readBomSeekBackReadBomAgain()
+{
+ QFile::remove("utf8bom");
+ QFile file("utf8bom");
+ QVERIFY(file.open(QFile::ReadWrite));
+ file.write("\xef\xbb\xbf" "Andreas");
+ file.seek(0);
+ QCOMPARE(file.pos(), qint64(0));
+
+ QTextStream stream(&file);
+ stream.setCodec("UTF-8");
+ QString Andreas;
+ stream >> Andreas;
+ QCOMPARE(Andreas, QString("Andreas"));
+ stream.seek(0);
+ stream >> Andreas;
+ QCOMPARE(Andreas, QString("Andreas"));
+}
+
+// ------------------------------------------------------------------------------
+void tst_QTextStream::status_real_read_data()
+{
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<double>("expected_f");
+ QTest::addColumn<QString>("expected_w");
+ QTest::addColumn<QList<int> >("results");
+
+ QTest::newRow("1.23 abc ") << QString("1.23 abc ") << 1.23 << QString("abc")
+ << (QList<int>()
+ << (int)QTextStream::Ok
+ << (int)QTextStream::ReadCorruptData
+ << (int)QTextStream::Ok
+ << (int)QTextStream::Ok
+ << (int)QTextStream::ReadPastEnd);
+}
+
+void tst_QTextStream::status_real_read()
+{
+ QFETCH(QString, input);
+ QFETCH(double, expected_f);
+ QFETCH(QString, expected_w);
+ QFETCH(QList<int>, results);
+
+ QTextStream s(&input);
+ double f = 0.0;
+ QString w;
+ s >> f;
+ QCOMPARE((int)s.status(), results.at(0));
+ QCOMPARE(f, expected_f);
+ s >> f;
+ QCOMPARE((int)s.status(), results.at(1));
+ s.resetStatus();
+ QCOMPARE((int)s.status(), results.at(2));
+ s >> w;
+ QCOMPARE((int)s.status(), results.at(3));
+ QCOMPARE(w, expected_w);
+ s >> f;
+ QCOMPARE((int)s.status(), results.at(4));
+}
+
+void tst_QTextStream::status_integer_read()
+{
+#ifdef Q_OS_WINCE
+ QString text = QLatin1String("123 abc ");
+ QTextStream s(&text);
+#else
+ QTextStream s("123 abc ");
+#endif
+ int i;
+ QString w;
+ s >> i;
+ QCOMPARE(s.status(), QTextStream::Ok);
+ s >> i;
+ QCOMPARE(s.status(), QTextStream::ReadCorruptData);
+ s.resetStatus();
+ QCOMPARE(s.status(), QTextStream::Ok);
+ s >> w;
+ QCOMPARE(s.status(), QTextStream::Ok);
+ QCOMPARE(w, QString("abc"));
+ s >> i;
+ QCOMPARE(s.status(), QTextStream::ReadPastEnd);
+}
+
+void tst_QTextStream::status_word_read()
+{
+#ifdef Q_OS_WINCE
+ QString text = QLatin1String("abc ");
+ QTextStream s(&text);
+#else
+ QTextStream s("abc ");
+#endif
+ QString w;
+ s >> w;
+ QCOMPARE(s.status(), QTextStream::Ok);
+ s >> w;
+ QCOMPARE(s.status(), QTextStream::ReadPastEnd);
+}
+
+class FakeBuffer : public QBuffer
+{
+protected:
+ qint64 writeData(const char *c, qint64 i) { return m_lock ? 0 : QBuffer::writeData(c, i); }
+public:
+ FakeBuffer(bool locked = false) : m_lock(locked) {}
+ void setLocked(bool locked) { m_lock = locked; }
+private:
+ bool m_lock;
+};
+
+void tst_QTextStream::status_write_error()
+{
+ FakeBuffer fb(false);
+ QVERIFY(fb.open(QBuffer::ReadWrite));
+ QTextStream fs(&fb);
+ fs.setCodec(QTextCodec::codecForName("latin1"));
+ /* first write some initial content */
+ fs << "hello";
+ fs.flush();
+ QCOMPARE(fs.status(), QTextStream::Ok);
+ QCOMPARE(fb.data(), QByteArray("hello"));
+ /* then test that writing can cause an error */
+ fb.setLocked(true);
+ fs << "error";
+ fs.flush();
+ QCOMPARE(fs.status(), QTextStream::WriteFailed);
+ QCOMPARE(fb.data(), QByteArray("hello"));
+ /* finally test that writing after an error doesn't change the stream any more */
+ fb.setLocked(false);
+ fs << "can't do that";
+ fs.flush();
+ QCOMPARE(fs.status(), QTextStream::WriteFailed);
+ QCOMPARE(fb.data(), QByteArray("hello"));
+}
+
+void tst_QTextStream::task180679_alignAccountingStyle()
+{
+ {
+ QString result;
+ QTextStream out(&result);
+ out.setFieldAlignment(QTextStream::AlignAccountingStyle);
+ out.setFieldWidth(4);
+ out.setPadChar('0');
+ out << -1;
+ QCOMPARE(result, QLatin1String("-001"));
+ }
+
+ {
+ QString result;
+ QTextStream out(&result);
+ out.setFieldAlignment(QTextStream::AlignAccountingStyle);
+ out.setFieldWidth(4);
+ out.setPadChar('0');
+ out << "-1";
+ QCOMPARE(result, QLatin1String("00-1"));
+ }
+
+ {
+ QString result;
+ QTextStream out(&result);
+ out.setFieldAlignment(QTextStream::AlignAccountingStyle);
+ out.setFieldWidth(6);
+ out.setPadChar('0');
+ out << -1.2;
+ QCOMPARE(result, QLatin1String("-001.2"));
+ }
+
+ {
+ QString result;
+ QTextStream out(&result);
+ out.setFieldAlignment(QTextStream::AlignAccountingStyle);
+ out.setFieldWidth(6);
+ out.setPadChar('0');
+ out << "-1.2";
+ QCOMPARE(result, QLatin1String("00-1.2"));
+ }
+}
+
+void tst_QTextStream::task178772_setCodec()
+{
+ QByteArray ba("\xe5 v\xe6r\n\xc3\xa5 v\xc3\xa6r\n");
+ QString res = QLatin1String("\xe5 v\xe6r");
+
+ QTextStream stream(ba);
+ stream.setCodec("ISO 8859-1");
+ QCOMPARE(stream.readLine(),res);
+ stream.setCodec("UTF-8");
+ QCOMPARE(stream.readLine(),res);
+}
+
+void tst_QTextStream::double_write_with_flags_data()
+{
+ QTest::addColumn<double>("number");
+ QTest::addColumn<QString>("output");
+ QTest::addColumn<int>("numberFlags");
+ QTest::addColumn<int>("realNumberNotation");
+
+ QTest::newRow("-ForceSign") << -1.23 << QString("-1.23") << (int)QTextStream::ForceSign << 0;
+ QTest::newRow("+ForceSign") << 1.23 << QString("+1.23") << (int)QTextStream::ForceSign << 0;
+ QTest::newRow("inf") << qInf() << QString("inf") << 0 << 0;
+ QTest::newRow("-inf") << -qInf() << QString("-inf") << 0 << 0;
+ QTest::newRow("inf uppercase") << qInf() << QString("INF") << (int)QTextStream::UppercaseDigits << 0;
+ QTest::newRow("-inf uppercase") << -qInf() << QString("-INF") << (int)QTextStream::UppercaseDigits << 0;
+ QTest::newRow("nan") << qQNaN() << QString("nan") << 0 << 0;
+ QTest::newRow("nan") << qQNaN() << QString("NAN") << (int)QTextStream::UppercaseDigits << 0;
+ QTest::newRow("scientific") << 1.234567e+02 << QString("1.234567e+02") << 0 << (int)QTextStream::ScientificNotation;
+ QTest::newRow("scientific2") << 1.234567e+02 << QString("1.234567e+02") << (int)QTextStream::UppercaseBase << (int)QTextStream::ScientificNotation;
+ QTest::newRow("scientific uppercase") << 1.234567e+02 << QString("1.234567E+02") << (int)QTextStream::UppercaseDigits << (int)QTextStream::ScientificNotation;
+}
+
+void tst_QTextStream::double_write_with_flags()
+{
+ QFETCH(double, number);
+ QFETCH(QString, output);
+ QFETCH(int, numberFlags);
+ QFETCH(int, realNumberNotation);
+
+ QString buf;
+ QTextStream stream(&buf);
+ if (numberFlags)
+ stream.setNumberFlags(QTextStream::NumberFlag(numberFlags));
+ if (realNumberNotation)
+ stream.setRealNumberNotation(QTextStream::RealNumberNotation(realNumberNotation));
+ stream << number;
+ QCOMPARE(buf, output);
+}
+
+void tst_QTextStream::double_write_with_precision_data()
+{
+ QTest::addColumn<int>("precision");
+ QTest::addColumn<double>("value");
+ QTest::addColumn<QString>("result");
+
+ QTest::ignoreMessage(QtWarningMsg, "QTextStream::setRealNumberPrecision: Invalid precision (-1)");
+ QTest::newRow("-1") << -1 << 3.14159 << QString("3.14159");
+ QTest::newRow("0") << 0 << 3.14159 << QString("3");
+ QTest::newRow("1") << 1 << 3.14159 << QString("3");
+ QTest::newRow("2") << 2 << 3.14159 << QString("3.1");
+ QTest::newRow("3") << 3 << 3.14159 << QString("3.14");
+ QTest::newRow("5") << 5 << 3.14159 << QString("3.1416");
+ QTest::newRow("6") << 6 << 3.14159 << QString("3.14159");
+ QTest::newRow("7") << 7 << 3.14159 << QString("3.14159");
+ QTest::newRow("10") << 10 << 3.14159 << QString("3.14159");
+}
+
+void tst_QTextStream::double_write_with_precision()
+{
+ QFETCH(int, precision);
+ QFETCH(double, value);
+ QFETCH(QString, result);
+
+ QString buf;
+ QTextStream stream(&buf);
+ stream.setRealNumberPrecision(precision);
+ stream << value;
+ QCOMPARE(buf, result);
+}
+
+void tst_QTextStream::int_read_with_locale_data()
+{
+ QTest::addColumn<QString>("locale");
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<int>("output");
+
+ QTest::newRow("C -123") << QString("C") << QString("-123") << -123;
+ QTest::newRow("C +123") << QString("C") << QString("+123") << 123;
+ QTest::newRow("C 12345") << QString("C") << QString("12345") << 12345;
+ QTest::newRow("C 12,345") << QString("C") << QString("12,345") << 12;
+ QTest::newRow("C 12.345") << QString("C") << QString("12.345") << 12;
+
+ QTest::newRow("de_DE -123") << QString("de_DE") << QString("-123") << -123;
+ QTest::newRow("de_DE +123") << QString("de_DE") << QString("+123") << 123;
+ QTest::newRow("de_DE 12345") << QString("de_DE") << QString("12345") << 12345;
+ QTest::newRow("de_DE 12.345") << QString("de_DE") << QString("12.345") << 12345;
+ QTest::newRow("de_DE .12345") << QString("de_DE") << QString(".12345") << 0;
+}
+
+void tst_QTextStream::int_read_with_locale()
+{
+ QFETCH(QString, locale);
+ QFETCH(QString, input);
+ QFETCH(int, output);
+
+ QTextStream stream(&input);
+ stream.setLocale(locale);
+ int result;
+ stream >> result;
+ QCOMPARE(result, output);
+}
+
+void tst_QTextStream::int_write_with_locale_data()
+{
+ QTest::addColumn<QString>("locale");
+ QTest::addColumn<int>("numberFlags");
+ QTest::addColumn<int>("input");
+ QTest::addColumn<QString>("output");
+
+ QTest::newRow("C -123") << QString("C") << 0 << -123 << QString("-123");
+ QTest::newRow("C +123") << QString("C") << (int)QTextStream::ForceSign << 123 << QString("+123");
+ QTest::newRow("C 12345") << QString("C") << 0 << 12345 << QString("12345");
+
+ QTest::newRow("de_DE -123") << QString("de_DE") << 0 << -123 << QString("-123");
+ QTest::newRow("de_DE +123") << QString("de_DE") << (int)QTextStream::ForceSign << 123 << QString("+123");
+ QTest::newRow("de_DE 12345") << QString("de_DE") << 0 << 12345 << QString("12.345");
+}
+
+void tst_QTextStream::int_write_with_locale()
+{
+ QFETCH(QString, locale);
+ QFETCH(int, numberFlags);
+ QFETCH(int, input);
+ QFETCH(QString, output);
+
+ QString result;
+ QTextStream stream(&result);
+ stream.setLocale(locale);
+ if (numberFlags)
+ stream.setNumberFlags(QTextStream::NumberFlags(numberFlags));
+ stream << input;
+ QCOMPARE(result, output);
+}
+
+// ------------------------------------------------------------------------------
+
+// like QTEST_APPLESS_MAIN, but initialising the locale on Unix
+#if defined (Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)
+QT_BEGIN_NAMESPACE
+extern bool qt_locale_initialized;
+QT_END_NAMESPACE
+#endif
+
+int main(int argc, char *argv[])
+{
+#if defined (Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)
+ ::setlocale(LC_ALL, "");
+ qt_locale_initialized = true;
+#endif
+ tst_QTextStream tc;
+ return QTest::qExec(&tc, argc, argv);
+}
+
+#include "tst_qtextstream.moc"
+
diff --git a/tests/auto/corelib/io/qurl/.gitignore b/tests/auto/corelib/io/qurl/.gitignore
new file mode 100644
index 0000000000..c2da731ecd
--- /dev/null
+++ b/tests/auto/corelib/io/qurl/.gitignore
@@ -0,0 +1 @@
+tst_qurl
diff --git a/tests/auto/corelib/io/qurl/idna-test.c b/tests/auto/corelib/io/qurl/idna-test.c
new file mode 100644
index 0000000000..7effd03168
--- /dev/null
+++ b/tests/auto/corelib/io/qurl/idna-test.c
@@ -0,0 +1,199 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+struct idna
+{
+ char *name;
+ size_t inlen;
+ unsigned long in[100];
+ char *out;
+ int allowunassigned;
+ int usestd3asciirules;
+ int toasciirc;
+ int tounicoderc;
+} idnalist[] =
+{
+ {
+ "Arabic (Egyptian)", 17,
+ {
+ 0x0644, 0x064A, 0x0647, 0x0645, 0x0627, 0x0628, 0x062A, 0x0643,
+ 0x0644, 0x0645, 0x0648, 0x0634, 0x0639, 0x0631, 0x0628, 0x064A,
+ 0x061F},
+ IDNA_ACE_PREFIX "egbpdaj6bu4bxfgehfvwxn", 0, 0, IDNA_SUCCESS,
+ IDNA_SUCCESS
+ }, {
+ "Chinese (simplified)", 9,
+ {
+ 0x4ED6, 0x4EEC, 0x4E3A, 0x4EC0, 0x4E48, 0x4E0D, 0x8BF4, 0x4E2D, 0x6587},
+ IDNA_ACE_PREFIX "ihqwcrb4cv8a8dqg056pqjye", 0, 0, IDNA_SUCCESS,
+ IDNA_SUCCESS
+ }, {
+ "Chinese (traditional)", 9,
+ {
+ 0x4ED6, 0x5011, 0x7232, 0x4EC0, 0x9EBD, 0x4E0D, 0x8AAA, 0x4E2D, 0x6587},
+ IDNA_ACE_PREFIX "ihqwctvzc91f659drss3x8bo0yb", 0, 0, IDNA_SUCCESS,
+ IDNA_SUCCESS
+ }, {
+ "Czech", 22,
+ {
+ 0x0050, 0x0072, 0x006F, 0x010D, 0x0070, 0x0072, 0x006F, 0x0073,
+ 0x0074, 0x011B, 0x006E, 0x0065, 0x006D, 0x006C, 0x0075, 0x0076,
+ 0x00ED, 0x010D, 0x0065, 0x0073, 0x006B, 0x0079},
+ IDNA_ACE_PREFIX "Proprostnemluvesky-uyb24dma41a", 0, 0, IDNA_SUCCESS,
+ IDNA_SUCCESS
+ }, {
+ "Hebrew", 22,
+ {
+ 0x05DC, 0x05DE, 0x05D4, 0x05D4, 0x05DD, 0x05E4, 0x05E9, 0x05D5,
+ 0x05D8, 0x05DC, 0x05D0, 0x05DE, 0x05D3, 0x05D1, 0x05E8, 0x05D9,
+ 0x05DD, 0x05E2, 0x05D1, 0x05E8, 0x05D9, 0x05EA},
+ IDNA_ACE_PREFIX "4dbcagdahymbxekheh6e0a7fei0b", 0, 0, IDNA_SUCCESS,
+ IDNA_SUCCESS
+ }, {
+ "Hindi (Devanagari)", 30,
+ {
+ 0x092F, 0x0939, 0x0932, 0x094B, 0x0917, 0x0939, 0x093F, 0x0928,
+ 0x094D, 0x0926, 0x0940, 0x0915, 0x094D, 0x092F, 0x094B, 0x0902,
+ 0x0928, 0x0939, 0x0940, 0x0902, 0x092C, 0x094B, 0x0932, 0x0938,
+ 0x0915, 0x0924, 0x0947, 0x0939, 0x0948, 0x0902},
+ IDNA_ACE_PREFIX "i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd", 0, 0,
+ IDNA_SUCCESS
+ }, {
+ "Japanese (kanji and hiragana)", 18,
+ {
+ 0x306A, 0x305C, 0x307F, 0x3093, 0x306A, 0x65E5, 0x672C, 0x8A9E,
+ 0x3092, 0x8A71, 0x3057, 0x3066, 0x304F, 0x308C, 0x306A, 0x3044,
+ 0x306E, 0x304B},
+ IDNA_ACE_PREFIX "n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa", 0, 0,
+ IDNA_SUCCESS
+ }, {
+ "Russian (Cyrillic)", 28,
+ {
+ 0x043F, 0x043E, 0x0447, 0x0435, 0x043C, 0x0443, 0x0436, 0x0435,
+ 0x043E, 0x043D, 0x0438, 0x043D, 0x0435, 0x0433, 0x043E, 0x0432,
+ 0x043E, 0x0440, 0x044F, 0x0442, 0x043F, 0x043E, 0x0440, 0x0443,
+ 0x0441, 0x0441, 0x043A, 0x0438},
+ IDNA_ACE_PREFIX "b1abfaaepdrnnbgefbadotcwatmq2g4l", 0, 0,
+ IDNA_SUCCESS, IDNA_SUCCESS
+ }, {
+ "Spanish", 40,
+ {
+ 0x0050, 0x006F, 0x0072, 0x0071, 0x0075, 0x00E9, 0x006E, 0x006F,
+ 0x0070, 0x0075, 0x0065, 0x0064, 0x0065, 0x006E, 0x0073, 0x0069,
+ 0x006D, 0x0070, 0x006C, 0x0065, 0x006D, 0x0065, 0x006E, 0x0074,
+ 0x0065, 0x0068, 0x0061, 0x0062, 0x006C, 0x0061, 0x0072, 0x0065,
+ 0x006E, 0x0045, 0x0073, 0x0070, 0x0061, 0x00F1, 0x006F, 0x006C},
+ IDNA_ACE_PREFIX "PorqunopuedensimplementehablarenEspaol-fmd56a", 0, 0,
+ IDNA_SUCCESS
+ }, {
+ "Vietnamese", 31,
+ {
+ 0x0054, 0x1EA1, 0x0069, 0x0073, 0x0061, 0x006F, 0x0068, 0x1ECD,
+ 0x006B, 0x0068, 0x00F4, 0x006E, 0x0067, 0x0074, 0x0068, 0x1EC3,
+ 0x0063, 0x0068, 0x1EC9, 0x006E, 0x00F3, 0x0069, 0x0074, 0x0069,
+ 0x1EBF, 0x006E, 0x0067, 0x0056, 0x0069, 0x1EC7, 0x0074},
+ IDNA_ACE_PREFIX "TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g", 0, 0,
+ IDNA_SUCCESS
+ }, {
+ "Japanese", 8,
+ {
+ 0x0033, 0x5E74, 0x0042, 0x7D44, 0x91D1, 0x516B, 0x5148, 0x751F},
+ IDNA_ACE_PREFIX "3B-ww4c5e180e575a65lsy2b", 0, 0, IDNA_SUCCESS,
+ IDNA_SUCCESS
+ }, {
+ "Japanese", 24,
+ {
+ 0x5B89, 0x5BA4, 0x5948, 0x7F8E, 0x6075, 0x002D, 0x0077, 0x0069,
+ 0x0074, 0x0068, 0x002D, 0x0053, 0x0055, 0x0050, 0x0045, 0x0052,
+ 0x002D, 0x004D, 0x004F, 0x004E, 0x004B, 0x0045, 0x0059, 0x0053},
+ IDNA_ACE_PREFIX "-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n", 0, 0,
+ IDNA_SUCCESS
+ }, {
+ "Japanese", 25,
+ {
+ 0x0048, 0x0065, 0x006C, 0x006C, 0x006F, 0x002D, 0x0041, 0x006E,
+ 0x006F, 0x0074, 0x0068, 0x0065, 0x0072, 0x002D, 0x0057, 0x0061,
+ 0x0079, 0x002D, 0x305D, 0x308C, 0x305E, 0x308C, 0x306E, 0x5834,
+ 0x6240},
+ IDNA_ACE_PREFIX "Hello-Another-Way--fc4qua05auwb3674vfr0b", 0, 0,
+ IDNA_SUCCESS
+ }, {
+ "Japanese", 8,
+ {
+ 0x3072, 0x3068, 0x3064, 0x5C4B, 0x6839, 0x306E, 0x4E0B, 0x0032},
+ IDNA_ACE_PREFIX "2-u9tlzr9756bt3uc0v", 0, 0, IDNA_SUCCESS,
+ IDNA_SUCCESS
+ }, {
+ "Japanese", 13,
+ {
+ 0x004D, 0x0061, 0x006A, 0x0069, 0x3067, 0x004B, 0x006F, 0x0069,
+ 0x3059, 0x308B, 0x0035, 0x79D2, 0x524D},
+ IDNA_ACE_PREFIX "MajiKoi5-783gue6qz075azm5e", 0, 0, IDNA_SUCCESS,
+ IDNA_SUCCESS
+ }, {
+ "Japanese", 9,
+ {
+ 0x30D1, 0x30D5, 0x30A3, 0x30FC, 0x0064, 0x0065, 0x30EB, 0x30F3, 0x30D0},
+ IDNA_ACE_PREFIX "de-jg4avhby1noc0d", 0, 0, IDNA_SUCCESS, IDNA_SUCCESS
+ }, {
+ "Japanese", 7,
+ {
+ 0x305D, 0x306E, 0x30B9, 0x30D4, 0x30FC, 0x30C9, 0x3067},
+ IDNA_ACE_PREFIX "d9juau41awczczp", 0, 0, IDNA_SUCCESS, IDNA_SUCCESS
+ }, {
+ "Greek", 8,
+ {0x03b5, 0x03bb, 0x03bb, 0x03b7, 0x03bd, 0x03b9, 0x03ba, 0x03ac},
+ IDNA_ACE_PREFIX "hxargifdar", 0, 0, IDNA_SUCCESS, IDNA_SUCCESS
+ }, {
+ "Maltese (Malti)", 10,
+ {0x0062, 0x006f, 0x006e, 0x0121, 0x0075, 0x0073, 0x0061, 0x0127,
+ 0x0127, 0x0061},
+ IDNA_ACE_PREFIX "bonusaa-5bb1da", 0, 0, IDNA_SUCCESS, IDNA_SUCCESS
+ }, {
+ "Russian (Cyrillic)", 28,
+ {0x043f, 0x043e, 0x0447, 0x0435, 0x043c, 0x0443, 0x0436, 0x0435,
+ 0x043e, 0x043d, 0x0438, 0x043d, 0x0435, 0x0433, 0x043e, 0x0432,
+ 0x043e, 0x0440, 0x044f, 0x0442, 0x043f, 0x043e, 0x0440, 0x0443,
+ 0x0441, 0x0441, 0x043a, 0x0438},
+ IDNA_ACE_PREFIX "b1abfaaepdrnnbgefbadotcwatmq2g4l", 0, 0,
+ IDNA_SUCCESS, IDNA_SUCCESS
+ }
+};
diff --git a/tests/auto/corelib/io/qurl/qurl.pro b/tests/auto/corelib/io/qurl/qurl.pro
new file mode 100644
index 0000000000..a43a57e002
--- /dev/null
+++ b/tests/auto/corelib/io/qurl/qurl.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qurl.cpp
+QT = core core-private
+symbian: TARGET.CAPABILITY = NetworkServices
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/io/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp
new file mode 100644
index 0000000000..d7f7742d46
--- /dev/null
+++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp
@@ -0,0 +1,4049 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtCore/QDebug>
+
+#include <qcoreapplication.h>
+
+#include <qfileinfo.h>
+#include <qurl.h>
+#include <qtextcodec.h>
+#include <qmap.h>
+#include "private/qtldurl_p.h"
+
+// For testsuites
+#define IDNA_ACE_PREFIX "xn--"
+#define IDNA_SUCCESS 1
+#define STRINGPREP_NO_UNASSIGNED 1
+#define STRINGPREP_CONTAINS_UNASSIGNED 2
+#define STRINGPREP_CONTAINS_PROHIBITED 3
+#define STRINGPREP_BIDI_BOTH_L_AND_RAL 4
+#define STRINGPREP_BIDI_LEADTRAIL_NOT_RAL 5
+
+struct ushortarray {
+ ushortarray(unsigned short *array = 0)
+ {
+ if (array)
+ memcpy(points, array, sizeof(points));
+ }
+
+ unsigned short points[100];
+};
+
+Q_DECLARE_METATYPE(ushortarray)
+Q_DECLARE_METATYPE(QUrl::FormattingOptions)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QUrl : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QUrl();
+ virtual ~tst_QUrl();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void effectiveTLDs_data();
+ void effectiveTLDs();
+ void getSetCheck();
+ void constructing();
+ void assignment();
+ void comparison();
+ void copying();
+ void setUrl();
+ void i18n_data();
+ void i18n();
+ void punycode_data();
+ void punycode();
+ void resolving_data();
+ void resolving();
+ void toString_data();
+ void toString();
+ void toString_constructed_data();
+ void toString_constructed();
+ void isParentOf_data();
+ void isParentOf();
+ void toLocalFile_data();
+ void toLocalFile();
+ void fromLocalFile_data();
+ void fromLocalFile();
+ void relative();
+ void compat_legacy();
+ void compat_constructor_01_data();
+ void compat_constructor_01();
+ void compat_constructor_02_data();
+ void compat_constructor_02();
+ void compat_constructor_03_data();
+ void compat_constructor_03();
+ void compat_isValid_01_data();
+ void compat_isValid_01();
+ void compat_isValid_02_data();
+ void compat_isValid_02();
+ void compat_path_data();
+ void compat_path();
+ void compat_fileName_data();
+ void compat_fileName();
+ void compat_decode_data();
+ void compat_decode();
+ void compat_encode_data();
+ void compat_encode();
+ void percentEncoding_data();
+ void percentEncoding();
+ void swap();
+ void symmetry();
+ void ipv6_data();
+ void ipv6();
+ void ipv6_2_data();
+ void ipv6_2();
+ void moreIpv6();
+ void toPercentEncoding_data();
+ void toPercentEncoding();
+ void isRelative_data();
+ void isRelative();
+ void queryItems();
+ void hasQuery_data();
+ void hasQuery();
+ void hasQueryItem_data();
+ void hasQueryItem();
+ void nameprep();
+ void isValid();
+ void schemeValidator_data();
+ void schemeValidator();
+ void invalidSchemeValidator();
+ void tolerantParser();
+ void correctEncodedMistakes_data();
+ void correctEncodedMistakes();
+ void correctDecodedMistakes_data();
+ void correctDecodedMistakes();
+ void idna_testsuite_data();
+ void idna_testsuite();
+ void nameprep_testsuite_data();
+ void nameprep_testsuite();
+ void nameprep_highcodes_data();
+ void nameprep_highcodes();
+ void ace_testsuite_data();
+ void ace_testsuite();
+ void std3violations_data();
+ void std3violations();
+ void std3deviations_data();
+ void std3deviations();
+ void tldRestrictions_data();
+ void tldRestrictions();
+ void emptyQueryOrFragment();
+ void hasFragment_data();
+ void hasFragment();
+ void setEncodedFragment_data();
+ void setEncodedFragment();
+ void fromEncoded();
+ void stripTrailingSlash();
+ void hosts_data();
+ void hosts();
+ void setPort();
+ void toEncoded_data();
+ void toEncoded();
+ void setAuthority_data();
+ void setAuthority();
+ void errorString();
+ void clear();
+ void resolvedWithAbsoluteSchemes() const;
+ void resolvedWithAbsoluteSchemes_data() const;
+ void binaryData_data();
+ void binaryData();
+ void fromUserInput_data();
+ void fromUserInput();
+ void task_199967();
+ void task_240612();
+ void taskQTBUG_6962();
+ void taskQTBUG_8701();
+ void removeAllEncodedQueryItems_data();
+ void removeAllEncodedQueryItems();
+};
+
+// Testing get/set functions
+void tst_QUrl::getSetCheck()
+{
+ QUrl obj1;
+ // int QUrl::port()
+ // void QUrl::setPort(int)
+ obj1.setPort(0);
+ QCOMPARE(0, obj1.port());
+
+ QTest::ignoreMessage(QtWarningMsg, "QUrl::setPort: Out of range");
+ obj1.setPort(INT_MIN);
+ QCOMPARE(-1, obj1.port()); // Out of range, -1
+
+ QTest::ignoreMessage(QtWarningMsg, "QUrl::setPort: Out of range");
+ obj1.setPort(INT_MAX);
+ QCOMPARE(-1, obj1.port()); // Out of range, -1
+
+ obj1.setPort(1234);
+ QCOMPARE(1234, obj1.port());
+
+ // static QStringList QUrl::idnWhitelist()
+ // static void QUrl::setIdnWhitelist(QStringList)
+ QStringList original = QUrl::idnWhitelist(); // save for later
+
+ QUrl::setIdnWhitelist(QStringList());
+ QCOMPARE(QUrl::idnWhitelist(), QStringList());
+
+ QStringList norway; norway << "no";
+ QUrl::setIdnWhitelist(norway);
+ QCOMPARE(QUrl::idnWhitelist(), norway);
+
+ QStringList modified = original;
+ modified << "foo";
+ QUrl::setIdnWhitelist(modified);
+ QCOMPARE(QUrl::idnWhitelist(), modified);
+
+ // reset to the original
+ QUrl::setIdnWhitelist(original);
+ QCOMPARE(QUrl::idnWhitelist(), original);
+}
+
+tst_QUrl::tst_QUrl()
+{
+}
+
+tst_QUrl::~tst_QUrl()
+{
+
+}
+
+void tst_QUrl::init()
+{
+}
+
+void tst_QUrl::cleanup()
+{
+}
+
+void tst_QUrl::constructing()
+{
+ QUrl url;
+ QVERIFY(!url.isValid());
+ QVERIFY(url.isEmpty());
+ QCOMPARE(url.port(), -1);
+ QCOMPARE(url.toString(), QString());
+
+ QList<QPair<QString, QString> > query;
+ query += qMakePair(QString("type"), QString("login"));
+ query += qMakePair(QString("name"), QString("åge nissemannsen"));
+ query += qMakePair(QString("ole&du"), QString("anne+jørgen=sant"));
+ query += qMakePair(QString("prosent"), QString("%"));
+ url.setQueryItems(query);
+ QVERIFY(!url.isEmpty());
+
+ QCOMPARE(url.encodedQuery().constData(),
+ QByteArray("type=login&name=%C3%A5ge%20nissemannsen&ole%26du="
+ "anne+j%C3%B8rgen%3Dsant&prosent=%25").constData());
+
+ url.setQueryDelimiters('>', '/');
+ url.setQueryItems(query);
+
+ QCOMPARE(url.encodedQuery(),
+ QByteArray("type>login/name>%C3%A5ge%20nissemannsen/ole&du>"
+ "anne+j%C3%B8rgen=sant/prosent>%25"));
+
+ url.setFragment(QString::fromLatin1("top"));
+ QCOMPARE(url.fragment(), QString::fromLatin1("top"));
+
+ url.setScheme("http");
+ url.setHost("qt.nokia.com");
+
+ QCOMPARE(url.toString(),
+ QString::fromLatin1("http://qt.nokia.com?type>login/name>åge nissemannsen"
+ "/ole&du>anne+jørgen=sant/prosent>%#top"));
+
+ QUrl justHost("qt.nokia.com");
+ QVERIFY(!justHost.isEmpty());
+ QVERIFY(justHost.host().isEmpty());
+ QCOMPARE(justHost.path(), QString::fromLatin1("qt.nokia.com"));
+
+ QUrl hostWithSlashes("//qt.nokia.com");
+ QVERIFY(hostWithSlashes.path().isEmpty());
+ QCOMPARE(hostWithSlashes.host(), QString::fromLatin1("qt.nokia.com"));
+
+
+ QUrl withHashInPath;
+ withHashInPath.setPath(QString::fromLatin1("hi#mum.txt"));
+ QCOMPARE(withHashInPath.path(), QString::fromLatin1("hi#mum.txt"));
+ QCOMPARE(withHashInPath.toEncoded(), QByteArray("hi%23mum.txt"));
+ QUrl fromHashInPath = QUrl::fromEncoded(withHashInPath.toEncoded());
+ QVERIFY(withHashInPath == fromHashInPath);
+
+
+ QUrl buildUNC;
+ buildUNC.setScheme(QString::fromLatin1("file"));
+ buildUNC.setHost(QString::fromLatin1("somehost"));
+ buildUNC.setPath(QString::fromLatin1("somepath"));
+ QCOMPARE(buildUNC.toLocalFile(), QString::fromLatin1("//somehost/somepath"));
+ buildUNC.toEncoded();
+ QVERIFY(!buildUNC.isEmpty());
+}
+
+void tst_QUrl::assignment()
+{
+ QUrl url("http://qt.nokia.com/");
+ QVERIFY(url.isValid());
+
+ QUrl copy;
+ copy = url;
+
+ QVERIFY(url == copy);
+}
+
+void tst_QUrl::comparison()
+{
+ QUrl url1("http://qt.nokia.com/");
+ QVERIFY(url1.isValid());
+
+ QUrl url2("http://qt.nokia.com/");
+ QVERIFY(url2.isValid());
+
+ QVERIFY(url1 == url2);
+
+ // 6.2.2 Syntax-based Normalization
+ QUrl url3 = QUrl::fromEncoded("example://a/b/c/%7Bfoo%7D");
+ QUrl url4 = QUrl::fromEncoded("eXAMPLE://a/./b/../b/%63/%7bfoo%7d");
+ QVERIFY(url3 == url4);
+
+ // 6.2.2.1 Make sure hexdecimal characters in percent encoding are
+ // treated case-insensitively
+ QUrl url5;
+ url5.setEncodedQuery("a=%2a");
+ QUrl url6;
+ url6.setEncodedQuery("a=%2A");
+ QVERIFY(url5 == url6);
+
+ // ensure that encoded characters in the query do not match
+ QUrl url7;
+ url7.setEncodedQuery("a=%63");
+ QUrl url8;
+ url8.setEncodedQuery("a=c");
+ QVERIFY(url7 != url8);
+}
+
+void tst_QUrl::copying()
+{
+ QUrl url("http://qt.nokia.com/");
+ QVERIFY(url.isValid());
+
+ QUrl copy(url);
+
+ QVERIFY(url == copy);
+}
+
+void tst_QUrl::setUrl()
+{
+ {
+ QUrl url("http://0.foo.com");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.scheme(), QString::fromLatin1("http"));
+ QCOMPARE(url.path(), QString());
+ QCOMPARE(url.host(), QString::fromLatin1("0.foo.com"));
+ }
+
+ {
+ QUrl url("file:/");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.scheme(), QString::fromLatin1("file"));
+ QCOMPARE(url.path(), QString::fromLatin1("/"));
+ QVERIFY(url.encodedQuery().isEmpty());
+ QVERIFY(url.userInfo().isEmpty());
+ QVERIFY(url.authority().isEmpty());
+ QVERIFY(url.fragment().isEmpty());
+ QCOMPARE(url.port(), -1);
+ }
+
+ {
+ QUrl url("hTTp://www.foo.bar:80");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.scheme(), QString::fromLatin1("hTTp"));
+ QCOMPARE(url.path(), QString());
+ QVERIFY(url.encodedQuery().isEmpty());
+ QVERIFY(url.userInfo().isEmpty());
+ QVERIFY(url.fragment().isEmpty());
+ QCOMPARE(url.host(), QString::fromLatin1("www.foo.bar"));
+ QCOMPARE(url.authority(), QString::fromLatin1("www.foo.bar:80"));
+ QCOMPARE(url.port(), 80);
+
+ QUrl url2("//www1.foo.bar");
+ QCOMPARE(url.resolved(url2).toString(), QString::fromLatin1("hTTp://www1.foo.bar"));
+ }
+
+ {
+ QUrl url("http://user:pass@[56::56:56:56:127.0.0.1]:99");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.scheme(), QString::fromLatin1("http"));
+ QCOMPARE(url.path(), QString());
+ QVERIFY(url.encodedQuery().isEmpty());
+ QCOMPARE(url.userInfo(), QString::fromLatin1("user:pass"));
+ QVERIFY(url.fragment().isEmpty());
+ QCOMPARE(url.host(), QString::fromLatin1("56::56:56:56:127.0.0.1"));
+ QCOMPARE(url.authority(), QString::fromLatin1("user:pass@[56::56:56:56:127.0.0.1]:99"));
+ QCOMPARE(url.port(), 99);
+ }
+
+ {
+ QUrl url("http://www.foo.bar");
+ QVERIFY(url.isValid());
+
+ QUrl url2("/top//test/../test1/file.html");
+ QCOMPARE(url.resolved(url2).toString(), QString::fromLatin1("http://www.foo.bar/top//test1/file.html"));
+ }
+
+ {
+ QUrl url("http://www.foo.bar");
+ QVERIFY(url.isValid());
+
+ QUrl url2("/top//test/../test1/file.html");
+ QCOMPARE(url.resolved(url2).toString(), QString::fromLatin1("http://www.foo.bar/top//test1/file.html"));
+ }
+
+ {
+ QUrl url("http://www.foo.bar/top//test2/file2.html");
+ QVERIFY(url.isValid());
+
+ QCOMPARE(url.toString(), QString::fromLatin1("http://www.foo.bar/top//test2/file2.html"));
+ }
+
+ {
+ QUrl url("http://www.foo.bar/top//test2/file2.html");
+ QVERIFY(url.isValid());
+
+ QCOMPARE(url.toString(), QString::fromLatin1("http://www.foo.bar/top//test2/file2.html"));
+ }
+
+ {
+ QUrl url("file:/usr/local/src/kde2/////kdelibs/kio");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.toString(), QString::fromLatin1("file:///usr/local/src/kde2/////kdelibs/kio"));
+ }
+
+ {
+ QUrl url("http://www.foo.bar");
+ QVERIFY(url.isValid());
+
+ QUrl url2("mailto:bastian@kde.org");
+ QVERIFY(url2.isValid());
+ QCOMPARE(url.resolved(url2).toString(), QString::fromLatin1("mailto:bastian@kde.org"));
+ }
+
+ {
+ QUrl url("mailto:bastian@kde.org?subject=hello");
+ QCOMPARE(url.toString(), QString::fromLatin1("mailto:bastian@kde.org?subject=hello"));
+ }
+
+ {
+ QUrl url("file:/usr/local/src/kde2/kdelibs/kio/");
+ QVERIFY(url.isValid());
+
+ QUrl url2("../../////kdebase/konqueror");
+ QCOMPARE(url.resolved(url2).toString(),
+ QString::fromLatin1("file:///usr/local/src/kde2/////kdebase/konqueror"));
+ }
+
+ {
+ QString u1 = "file:/home/dfaure/my#myref";
+ QUrl url = u1;
+ QVERIFY(url.isValid());
+ QCOMPARE(url.toString(), QString::fromLatin1("file:///home/dfaure/my#myref"));
+ QCOMPARE(url.fragment(), QString::fromLatin1("myref"));
+ }
+
+ {
+ QString u1 = "file:/home/dfaure/my#myref";
+ QUrl url = u1;
+ QVERIFY(url.isValid());
+
+ QCOMPARE(url.toString(), QString::fromLatin1("file:///home/dfaure/my#myref"));
+ QCOMPARE(url.fragment(), QString::fromLatin1("myref"));
+ }
+
+ {
+ QUrl url("gg:www.kde.org");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.scheme(), QString::fromLatin1("gg"));
+ QVERIFY(url.host().isEmpty());
+ QCOMPARE(url.path(), QString::fromLatin1("www.kde.org"));
+ }
+
+ {
+ QUrl url("KDE");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.path(), QString::fromLatin1("KDE"));
+ QVERIFY(url.scheme().isEmpty());
+ }
+
+ {
+ QUrl url("$HOME/.kde/share/config");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.path(), QString::fromLatin1("$HOME/.kde/share/config"));
+ QVERIFY(url.scheme().isEmpty());
+ }
+
+ {
+ QUrl url("file:/opt/kde2/qt2/doc/html/showimg-main-cpp.html#QObject::connect");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.fragment(), QString::fromLatin1("QObject::connect"));
+ }
+
+ {
+ QUrl url("file:/opt/kde2/qt2/doc/html/showimg-main-cpp.html#QObject:connect");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.fragment(), QString::fromLatin1("QObject:connect"));
+ }
+
+ {
+ // suburls
+ QUrl url("file:/home/dfaure/my%20tar%20file.tgz#gzip:/#tar:/#myref");
+ QVERIFY(url.isValid());
+
+ // or simply 'myref?'
+ QCOMPARE(url.fragment(), QString::fromLatin1("gzip:/#tar:/#myref"));
+ }
+
+ {
+ QUrl url("error:/?error=14&errText=Unknown%20host%20asdfu.adgi.sdfgoi#http://asdfu.adgi.sdfgoi");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.fragment(), QString::fromLatin1("http://asdfu.adgi.sdfgoi"));
+ }
+
+ {
+ // suburls
+ QUrl url("file:/home/dfaure/my%20tar%20file.tgz#gzip:/#tar:/");
+ QVERIFY(url.isValid());
+ }
+
+ {
+ QUrl url("file:/home/dfaure/cdrdao-1.1.5/dao/#CdrDriver.cc#");
+ QVERIFY(url.isValid());
+ }
+
+ {
+ QUrl url("file:/home/dfaure/my%20tar%20file.tgz#gzip:/#tar:/README");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.toString(), QString::fromLatin1("file:///home/dfaure/my tar file.tgz#gzip:/#tar:/README"));
+ }
+
+ {
+ QUrl notPretty;
+ notPretty.setEncodedUrl("http://ferret.lmh.ox.ac.uk/%7Ekdecvs/");
+ QVERIFY(notPretty.isValid());
+ QCOMPARE(notPretty.toString(), QString::fromLatin1("http://ferret.lmh.ox.ac.uk/~kdecvs/"));
+
+ QUrl notPretty2;
+ notPretty2.setEncodedUrl("file:/home/test/directory%20with%20spaces");
+ QVERIFY(notPretty2.isValid());
+ QCOMPARE(notPretty2.toString(), QString::fromLatin1("file:///home/test/directory with spaces"));
+
+ QUrl notPretty3("fish://foo/%23README%23");
+ QVERIFY(notPretty3.isValid());
+ QCOMPARE(notPretty3.toString(), QString::fromLatin1("fish://foo/%23README%23"));
+
+ QUrl url15581;
+ url15581.setUrl("http://alain.knaff.linux.lu/bug-reports/kde/spaces in url.html");
+ QCOMPARE(url15581.toString(), QString::fromLatin1("http://alain.knaff.linux.lu/bug-reports/kde/spaces in url.html"));
+ QCOMPARE(url15581.toEncoded().constData(), QByteArray("http://alain.knaff.linux.lu/bug-reports/kde/spaces%20in%20url.html").constData());
+
+ QUrl url15582("http://alain.knaff.linux.lu/bug-reports/kde/percentage%in%url.html");
+ QCOMPARE(url15582.toString(), QString::fromLatin1("http://alain.knaff.linux.lu/bug-reports/kde/percentage%in%url.html"));
+ QCOMPARE(url15582.toEncoded(), QByteArray("http://alain.knaff.linux.lu/bug-reports/kde/percentage%25in%25url.html"));
+ }
+
+ {
+ QUrl carsten;
+ carsten.setPath("/home/gis/src/kde/kdelibs/kfile/.#kfiledetailview.cpp.1.18");
+ QCOMPARE(carsten.path(), QString::fromLatin1("/home/gis/src/kde/kdelibs/kfile/.#kfiledetailview.cpp.1.18"));
+
+ QUrl charles;
+ charles.setPath("/home/charles/foo%20moo");
+ QCOMPARE(charles.path(), QString::fromLatin1("/home/charles/foo%20moo"));
+
+ QUrl charles2;
+ charles2.setEncodedUrl("file:/home/charles/foo%20moo");
+ QCOMPARE(charles2.path(), QString::fromLatin1("/home/charles/foo moo"));
+ }
+
+ {
+ QUrl udir;
+ QCOMPARE(udir.toEncoded(), QByteArray());
+ QVERIFY(!udir.isValid());
+
+ udir = QUrl::fromLocalFile("/home/dfaure/file.txt");
+ QCOMPARE(udir.path(), QString::fromLatin1("/home/dfaure/file.txt"));
+ QCOMPARE(udir.toEncoded(), QByteArray("file:///home/dfaure/file.txt"));
+ }
+
+ {
+ QUrl url;
+ url.setUrl("hello.com#?");
+ QVERIFY(url.isValid());
+ url.setUrl("hello.com");
+ QVERIFY(!url.toString().contains(QLatin1Char('#')));
+ QVERIFY(!url.toString().contains(QLatin1Char('?')));
+ }
+
+ {
+ QUrl url;
+ url.setUrl("http://1.2.3.4.example.com");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.scheme(), QString("http"));
+ QCOMPARE(url.host(), QString("1.2.3.4.example.com"));
+ }
+
+ {
+ QUrl url;
+ url.setUrl("http://1.2.3.4");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.scheme(), QString("http"));
+ QCOMPARE(url.host(), QString("1.2.3.4"));
+ }
+ {
+ QUrl url;
+ url.setUrl("http://1.2.3.4/");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.scheme(), QString("http"));
+ QCOMPARE(url.host(), QString("1.2.3.4"));
+ QCOMPARE(url.path(), QString("/"));
+ }
+ {
+ QUrl url;
+ url.setUrl("http://1.2.3.4?foo");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.scheme(), QString("http"));
+ QCOMPARE(url.host(), QString("1.2.3.4"));
+ QCOMPARE(url.encodedQuery(), QByteArray("foo"));
+ }
+ {
+ QUrl url;
+ url.setUrl("http://1.2.3.4#bar");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.scheme(), QString("http"));
+ QCOMPARE(url.host(), QString("1.2.3.4"));
+ QCOMPARE(url.fragment(), QString("bar"));
+ }
+
+ {
+ QUrl url;
+ url.setEncodedUrl("data:text/javascript,d5%20%3D%20'five\\u0027s'%3B");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.scheme(), QString("data"));
+ QCOMPARE(url.host(), QString());
+ QCOMPARE(url.path(), QString("text/javascript,d5 = 'five\\u0027s';"));
+ QCOMPARE(url.encodedPath().constData(), "text/javascript,d5%20%3D%20'five%5Cu0027s'%3B");
+ }
+
+ { //check it calls detach
+ QUrl u1("http://aaa.com");
+ QUrl u2 = u1;
+ u2.setUrl("http://bbb.com");
+ QCOMPARE(u1.host(), QString::fromLatin1("aaa.com"));
+ QCOMPARE(u2.host(), QString::fromLatin1("bbb.com"));
+ }
+
+/*
+ The tests below are copied from kdelibs/kdecore/tests/kurltest.cpp (an old version of)
+
+ Copyright (c) 1999-2005 Waldo Bastian <bastian@kde.org>
+ Copyright (c) 2000-2005 David Faure <faure@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ */
+/*
+ ### File / directory specifics
+
+ KURL u2( QCString("/home/dfaure/") );
+ printf("\n* URL is %s\n",u2.url().ascii());
+// not ignoring trailing slash
+ check("KURL::directory(false,false)", u2.directory(false,false), "/home/dfaure/");
+ check("KURL::directory(true,false)", u2.directory(true,false), "/home/dfaure");
+// ignoring trailing slash
+ check("KURL::directory(false,true)", u2.directory(false,true), "/home/");
+ check("KURL::directory(true,true)", u2.directory(true,true), "/home");
+ u2.cd("..");
+ check("KURL::cd(\"..\")", u2.url(), "file:/home");
+ u2.cd("thomas");
+ check("KURL::cd(\"thomas\")", u2.url(), "file:/home/thomas");
+ u2.cd("/opt/kde/bin/");
+ check("KURL::cd(\"/opt/kde/bin/\")", u2.url(), "file:/opt/kde/bin/");
+ u2 = "ftp://ftp.kde.org/";
+ printf("\n* URL is %s\n",u2.url().ascii());
+ u2.cd("pub");
+ check("KURL::cd(\"pub\")", u2.url(), "ftp://ftp.kde.org/pub");
+ u2 = u2.upURL();
+ check("KURL::upURL()", u2.url(), "ftp://ftp.kde.org/");
+ u2 = u1;
+ printf("\n* URL is %s\n",u2.url().ascii());
+// setFileName
+ u2.setFileName( "myfile.txt" );
+ check("KURL::setFileName()", u2.url(), "file:/home/dfaure/myfile.txt");
+ u2.setFileName( "myotherfile.txt" );
+ check("KURL::setFileName()", u2.url(), "file:/home/dfaure/myotherfile.txt");
+// more tricky, renaming a directory (kpropsdlg.cc, line ~ 238)
+ QString tmpurl = "file:/home/dfaure/myolddir/";
+ if ( tmpurl.at(tmpurl.length() - 1) == '/')
+// It's a directory, so strip the trailing slash first
+ tmpurl.truncate( tmpurl.length() - 1);
+ KURL newUrl = tmpurl;
+ newUrl.setFileName( "mynewdir" );
+ check("KURL::setFileName() special", newUrl.url(), "file:/home/dfaure/mynewdir");
+// addPath tests
+ newUrl.addPath( "subdir" );
+ check("KURL::addPath(\"subdir\")", newUrl.url(), "file:/home/dfaure/mynewdir/subdir");
+ newUrl.addPath( "/foo/" );
+ check("KURL::addPath(\"/foo/\")", newUrl.url(), "file:/home/dfaure/mynewdir/subdir/foo/");
+ u2 = "http://www.kde.org"; // no path
+ u2.addPath( "subdir" );
+ check("KURL::addPath(\"subdir\")", u2.url(), "http://www.kde.org/subdir");
+ u2.addPath( "" );
+ check("KURL::addPath(\"subdir\")", u2.url(), "http://www.kde.org/subdir"); // unchanged
+
+// even more tricky
+ u2 = "print:/specials/Print%20To%20File%20(PDF%2FAcrobat)";
+ printf("\n* URL is %s\n",u2.url().ascii());
+ check("KURL::path()", u2.path(), "/specials/Print To File (PDF/Acrobat)");
+ check("KURL::fileName()", u2.fileName(), "Print To File (PDF/Acrobat)");
+ u2.setFileName( "" );
+ check("KURL::setFileName()", u2.url(), "print:/specials/");
+
+ u2 = "file:/specials/Print";
+ printf("\n* URL is %s\n",u2.url().ascii());
+ check("KURL::path()", u2.path(), "/specials/Print");
+ check("KURL::fileName()", u2.fileName(), "Print");
+ u2.setFileName( "" );
+ check("KURL::setFileName()", u2.url(), "file:/specials/");
+
+ const char * u3 = "ftp://host/dir1/dir2/myfile.txt";
+ printf("\n* URL is %s\n",u3);
+ check("KURL::hasSubURL()", KURL(u3).hasSubURL() ? "yes" : "no", "no");
+ lst.clear();
+ lst = KURL::split( KURL(u3) );
+ check("KURL::split()", lst.count()==1 ? "1" : "error", "1");
+ check("KURL::split()", lst.first().url(), "ftp://host/dir1/dir2/myfile.txt");
+// cdUp code
+ KURL lastUrl = lst.last();
+ QString dir = lastUrl.directory( true, true );
+ check( "KURL::directory(true,true)", dir, "/dir1/dir2");
+*/
+
+ {
+ // !!! FAILS
+// QString ucmp1 = "ftp://ftp.de.kde.org/dir";
+// QString ucmp2 = "ftp://ftp.de.kde.org/dir/";
+// QVERIFY(QUrl(ucmp1) == QUrl(ucmp2));
+ }
+
+
+ /*
+/// Comparisons
+ QString ucmp1 = "ftp://ftp.de.kde.org/dir";
+ QString ucmp2 = "ftp://ftp.de.kde.org/dir/";
+ check("urlcmp(only slash difference)", urlcmp(ucmp1,ucmp2)?"ko":"ok","ok");
+ check("urlcmp(only slash difference, ignore_trailing)", urlcmp(ucmp1,ucmp2,true,false)?"ok":"ko","ok");
+ QString ucmp3 = "ftp://ftp.de.kde.org/dir/#";
+ check("urlcmp(only hash difference)", urlcmp(ucmp2,ucmp3)?"ko":"ok","ok");
+ check("urlcmp(only hash difference, ignore_ref)", urlcmp(ucmp2,ucmp3,false,true)?"ok":"ko","ok");
+ check("urlcmp(slash and hash difference, ignore_trailing, ignore_ref)", urlcmp(ucmp2,ucmp3,true,true)?"ok":"ko","ok");
+ check("urlcmp(empty, empty)", urlcmp("","",false,true)?"ok":"ko","ok");
+ check("urlcmp(empty, empty)", urlcmp("","")?"ok":"ko","ok");
+ check("urlcmp(empty, not empty)", urlcmp("",ucmp1)?"ok":"ko","ko");
+ check("urlcmp(empty, not empty)", urlcmp("",ucmp1,false,true)?"ok":"ko","ko");
+ check("urlcmp(malformed, not empty)", urlcmp("file",ucmp1)?"ok":"ko","ko");
+ check("urlcmp(malformed, not empty)", urlcmp("file",ucmp1,false,true)?"ok":"ko","ko");
+
+ KURL ftpUrl ( "ftp://ftp.de.kde.org" );
+ printf("\n* URL is %s\n",ftpUrl.url().latin1());
+ check("KURL::path()", ftpUrl.path(), QString());
+ ftpUrl = "ftp://ftp.de.kde.org/";
+ check("KURL::isParentOf()", ftpUrl.isParentOf( "ftp://ftp.de.kde.org/host/subdir/") ? "yes" : "no", "yes");
+ ftpUrl = "ftp://ftp/host/subdir/";
+ check("KURL::isParentOf()", ftpUrl.isParentOf( "ftp://ftp/host/subdir/") ? "yes" : "no", "yes");
+ check("KURL::isParentOf()", ftpUrl.isParentOf( "ftp://ftp/host/subdir") ? "yes" : "no", "yes");
+ check("KURL::isParentOf()", ftpUrl.isParentOf( "ftp://ftp/host/subdi") ? "yes" : "no", "no");
+ check("KURL::isParentOf()", ftpUrl.isParentOf( "ftp://ftp/host/subdir/blah/") ? "yes" : "no", "yes");
+ check("KURL::isParentOf()", ftpUrl.isParentOf( "ftp://ftp/blah/subdir") ? "yes" : "no", "no");
+ check("KURL::isParentOf()", ftpUrl.isParentOf( "file://ftp/host/subdir/") ? "yes" : "no", "no");
+ check("KURL::isParentOf()", ftpUrl.isParentOf( "ftp://ftp/host/subdir/subsub") ? "yes" : "no", "yes");
+
+// WABA: The following tests are to test the handling of relative URLs as
+// found on web-pages.
+
+ KURL waba1( "http://www.website.com/directory/?hello#ref" );
+ {
+ KURL waba2( waba1, "relative.html");
+ check("http: Relative URL, single file", waba2.url(), "http://www.website.com/directory/relative.html");
+ }
+ {
+ KURL waba2( waba1, "../relative.html");
+ check("http: Relative URL, single file, directory up", waba2.url(), "http://www.website.com/relative.html");
+ }
+ {
+ KURL waba2( waba1, "down/relative.html");
+ check("http: Relative URL, single file, directory down", waba2.url(), "http://www.website.com/directory/down/relative.html");
+ }
+ {
+ KURL waba2( waba1, "/down/relative.html");
+ check("http: Relative URL, full path", waba2.url(), "http://www.website.com/down/relative.html");
+ }
+ {
+ KURL waba2( waba1, "//www.kde.org/relative.html");
+ check("http: Relative URL, with host", waba2.url(), "http://www.kde.org/relative.html");
+ }
+ {
+ KURL waba2( waba1, "relative.html?query=test&name=harry");
+ check("http: Relative URL, with query", waba2.url(), "http://www.website.com/directory/relative.html?query=test&name=harry");
+ waba2.removeQueryItem("query");
+ check("http: Removing query item", waba2.url(), "http://www.website.com/directory/relative.html?name=harry");
+ waba2.addQueryItem("age", "18");
+ check("http: Adding query item", waba2.url(), "http://www.website.com/directory/relative.html?name=harry&age=18");
+ waba2.addQueryItem("age", "21");
+ check("http: Adding query item", waba2.url(), "http://www.website.com/directory/relative.html?name=harry&age=18&age=21");
+ waba2.addQueryItem("fullname", "Harry Potter");
+ check("http: Adding query item", waba2.url(), "http://www.website.com/directory/relative.html?name=harry&age=18&age=21&fullname=Harry%20Potter");
+ }
+ {
+ KURL waba2( waba1, "?query=test&name=harry");
+ check("http: Relative URL, with query and no filename", waba2.url(), "http://www.website.com/directory/?query=test&name=harry");
+ }
+ {
+ KURL waba2( waba1, "relative.html#with_reference");
+ check("http: Relative URL, with reference", waba2.url(), "http://www.website.com/directory/relative.html#with_reference");
+ }
+ {
+ KURL waba2( waba1, "#");
+ check("http: Relative URL, with empty reference", waba2.url(), "http://www.website.com/directory/?hello#");
+ }
+ {
+ KURL waba2( waba1, "");
+ check("http: Empty relative URL", waba2.url(), "http://www.website.com/directory/?hello#ref");
+ }
+ {
+ KURL base( "http://faure@www.kde.org" ); // no path
+ KURL waba2( base, "filename.html");
+ check("http: Relative URL, orig URL had no path", waba2.url(), "http://faure@www.kde.org/filename.html");
+ }
+ {
+ KURL base( "http://faure:pass@www.kde.org:81?query" );
+ KURL rel1( base, "http://www.kde.org/bleh/"); // same host
+ check("http: Relative URL, orig URL had username", rel1.url(), "http://faure:pass@www.kde.org/bleh/");
+ KURL rel2( base, "http://www.yahoo.org"); // different host
+ check("http: Relative URL, orig URL had username", rel2.url(), "http://www.yahoo.org");
+ }
+
+ waba1 = "http://www.website.com/directory/filename?bla#blub";
+ {
+ KURL waba2( waba1, "relative.html");
+ check("http: Relative URL, single file", waba2.url(), "http://www.website.com/directory/relative.html");
+ }
+ {
+ KURL waba2( waba1, "../relative.html");
+ check("http: Relative URL, single file, directory up", waba2.url(), "http://www.website.com/relative.html");
+ }
+ {
+ KURL waba2( waba1, "down/relative.html");
+ check("http: Relative URL, single file, directory down", waba2.url(), "http://www.website.com/directory/down/relative.html");
+ }
+ {
+ KURL waba2( waba1, "/down/relative.html");
+ check("http: Relative URL, full path", waba2.url(), "http://www.website.com/down/relative.html");
+ }
+ {
+ KURL waba2( waba1, "relative.html?query=test&name=harry");
+ check("http: Relative URL, with query", waba2.url(), "http://www.website.com/directory/relative.html?query=test&name=harry");
+ }
+ {
+ KURL waba2( waba1, "?query=test&name=harry");
+ check("http: Relative URL, with query and no filename", waba2.url(), "http://www.website.com/directory/filename?query=test&name=harry");
+ }
+ {
+ KURL waba2( waba1, "relative.html#with_reference");
+ check("http: Relative URL, with reference", waba2.url(), "http://www.website.com/directory/relative.html#with_reference");
+ }
+ {
+ KURL waba2( waba1, "http:/relative.html"); // "rfc 1606 loophole"
+ check("http: Strange relative URL", waba2.url(), "http://www.website.com/relative.html");
+ }
+ waba1.setUser("waldo");
+ check("http: Set user", waba1.url(), "http://waldo@www.website.com/directory/filename?bla#blub");
+ waba1.setUser("waldo/bastian");
+ check("http: Set user with slash in it", waba1.url(), "http://waldo%2Fbastian@www.website.com/directory/filename?bla#blub");
+ waba1.setRef( QString() );
+ waba1.setPass( "pass" );
+ waba1.setDirectory( "/foo" );
+ waba1.setProtocol( "https" );
+ waba1.setHost( "web.com" );
+ waba1.setPort( 881 );
+ check("http: setRef/setPass/setDirectory/setHost/setPort", waba1.url(), "https://waldo%2Fbastian:pass@web.com:881/foo/?bla");
+ waba1.setDirectory( "/foo/" );
+ check("http: setDirectory #2", waba1.url(), "https://waldo%2Fbastian:pass@web.com:881/foo/?bla");
+
+// Empty queries should be preserved!
+ waba1 = "http://www.kde.org/cgi/test.cgi?";
+ check("http: URL with empty query string", waba1.url(),
+ "http://www.kde.org/cgi/test.cgi?");
+
+// Empty references should be preserved
+ waba1 = "http://www.kde.org/cgi/test.cgi#";
+ check("http: URL with empty reference string", waba1.url(),
+ "http://www.kde.org/cgi/test.cgi#");
+ check("hasRef()", waba1.hasRef()?"true":"false","true");
+ check("hasHTMLRef()", waba1.hasHTMLRef()?"true":"false","true");
+ check("encodedHtmlRef()", waba1.encodedHtmlRef(),QString());
+
+// URLs who forgot to encode spaces in the query.
+ waba1 = "http://www.kde.org/cgi/test.cgi?hello=My Value";
+ check("http: URL with incorrect encoded query", waba1.url(),
+ "http://www.kde.org/cgi/test.cgi?hello=My%20Value");
+
+// URL with ':' in query (':' should NOT be encoded!)
+ waba1.setQuery("hello:My Value");
+ check("http: URL with ':' in query", waba1.url(),
+ "http://www.kde.org/cgi/test.cgi?hello:My%20Value");
+ check("upURL() removes query", waba1.upURL().url(),
+ "http://www.kde.org/cgi/test.cgi");
+
+// URLs who forgot to encode spaces in the query.
+ waba1 = "http://www.kde.org/cgi/test.cgi?hello=My Value+20";
+ check("http: URL with incorrect encoded query", waba1.url(),
+ "http://www.kde.org/cgi/test.cgi?hello=My%20Value+20");
+
+// Urls without path (BR21387)
+ waba1 = "http://meine.db24.de?link=home_c_login_login";
+ check("http: URL with empty path string", waba1.url(),
+ "http://meine.db24.de?link=home_c_login_login");
+ check("http: URL with empty path string path", waba1.path(),
+ "");
+ check("http: URL with empty path string query", waba1.query(),
+ "?link=home_c_login_login");
+
+ waba1 = "http://a:389?b=c";
+ check( "http: URL with port, query, and empty path; url", waba1.url(), "http://a:389?b=c" );
+ check( "http: URL with port, query, and empty path; host", waba1.host(), "a" );
+ check( "http: URL with port, query, and empty path; port", QString::number( waba1.port() ), "389" );
+ check( "http: URL with port, query, and empty path; path", waba1.path(), "" );
+ check( "http: URL with port, query, and empty path; query", waba1.query(), "?b=c" );
+
+// Urls without path (BR21387)
+ waba1 = "http://meine.db24.de#link=home_c_login_login";
+ check("http: URL with empty path string", waba1.url(),
+ "http://meine.db24.de#link=home_c_login_login");
+ check("http: URL with empty path string path", waba1.path(),
+ "");
+
+ waba1 = "http://a:389#b=c";
+ check( "http: URL with port, ref, and empty path; url", waba1.url(), "http://a:389#b=c" );
+ check( "http: URL with port, ref, and empty path; host", waba1.host(), "a" );
+ check( "http: URL with port, ref, and empty path; port", QString::number( waba1.port() ), "389" );
+ check( "http: URL with port, ref, and empty path; path", waba1.path(), "" );
+ check( "http: URL with port, ref, and empty path; ref", waba1.ref(), "b=c" );
+ check( "http: URL with port, ref, and empty path; query", waba1.query(), "" );
+
+// IPV6
+ waba1 = "http://[::FFFF:129.144.52.38]:81/index.html";
+ check("http: IPV6 host", waba1.host(),
+ "::ffff:129.144.52.38");
+ check("http: IPV6 port", QString("%1").arg(waba1.port()),
+ "81");
+
+// IPV6
+ waba1 = "http://waba:pass@[::FFFF:129.144.52.38]:81/index.html";
+ check("http: IPV6 host", waba1.host(),
+ "::ffff:129.144.52.38");
+ check("http: IPV6 host", waba1.user(),
+ "waba");
+ check("http: IPV6 host", waba1.pass(),
+ "pass");
+ check("http: IPV6 port", QString("%1").arg(waba1.port()),
+ "81");
+
+// IPV6
+ waba1 = "http://www.kde.org/cgi/test.cgi";
+ waba1.setHost("::ffff:129.144.52.38");
+ check("http: IPV6 host", waba1.url(),
+ "http://[::ffff:129.144.52.38]/cgi/test.cgi");
+ waba1 = "http://[::ffff:129.144.52.38]/cgi/test.cgi";
+ assert( waba1.isValid() );
+
+// IPV6 without path
+ waba1 = "http://[::ffff:129.144.52.38]?query";
+ assert( waba1.isValid() );
+ check("http: IPV6 without path", waba1.url(),
+ "http://[::ffff:129.144.52.38]?query");
+ check("http: IPV6 without path; query", waba1.query(),
+ "?query");
+ waba1 = "http://[::ffff:129.144.52.38]#ref";
+ assert( waba1.isValid() );
+ check("http: IPV6 without path", waba1.url(),
+ "http://[::ffff:129.144.52.38]#ref");
+ check("http: IPV6 without path; ref", waba1.ref(),
+ "ref");
+// IPV6 without path but with a port
+ waba1 = "http://[::ffff:129.144.52.38]:81?query";
+ assert( waba1.isValid() );
+ check("http: IPV6 without path", waba1.url(),
+ "http://[::ffff:129.144.52.38]:81?query");
+ check("http: IPV6 without path; port", QString::number( waba1.port() ), "81" );
+ check("http: IPV6 without path; query", waba1.query(), "?query");
+ waba1 = "http://[::ffff:129.144.52.38]:81#ref";
+ assert( waba1.isValid() );
+ check("http: IPV6 without path", waba1.url(),
+ "http://[::ffff:129.144.52.38]:81#ref");
+ check("http: IPV6 without path; port", QString::number( waba1.port() ), "81" );
+ check("http: IPV6 without path; ref", waba1.ref(), "ref");
+
+// Streaming operators
+ KURL origURL( "http://www.website.com/directory/?#ref" );
+ waba1 = "http://[::ffff:129.144.52.38]:81?query";
+ QByteArray buffer;
+ {
+ QDataStream stream( buffer, QIODevice::WriteOnly );
+ stream << origURL
+ << KURL( "file:" ) // an invalid one
+ << waba1; // the IPv6 one
+ }
+ {
+ QDataStream stream( buffer, QIODevice::ReadOnly );
+ KURL restoredURL;
+ stream >> restoredURL;
+ check( "Streaming valid URL", origURL.url(), restoredURL.url() );
+ stream >> restoredURL;
+ check( "Streaming invalid URL", restoredURL.isValid()?"valid":"malformed", "malformed" );
+ check( "Streaming invalid URL", restoredURL.url(), "file:" );
+ stream >> restoredURL;
+ check( "Streaming ipv6 URL with query", restoredURL.url(), waba1.url() );
+ }
+
+// Broken stuff
+ waba1 = "file:a";
+ check("Broken stuff #1 path", waba1.path(), "a");
+ check("Broken stuff #1 fileName(false)", waba1.fileName(false), "a");
+ check("Broken stuff #1 fileName(true)", waba1.fileName(true), "a");
+ check("Broken stuff #1 directory(false, false)", waba1.directory(false, false), "");
+ check("Broken stuff #1 directory(true, false)", waba1.directory(true, false), "");
+ check("Broken stuff #1 directory(false, true)", waba1.directory(true, true), "");
+
+ waba1 = "file:a/";
+ check("Broken stuff #2 path", waba1.path(), "a/");
+ check("Broken stuff #2 fileName(false)", waba1.fileName(false), "");
+ check("Broken stuff #2 fileName(true)", waba1.fileName(true), "a");
+ check("Broken stuff #2 directory(false, false)", waba1.directory(false, false), "a/");
+ check("Broken stuff #2 directory(true, false)", waba1.directory(true, false), "a");
+ check("Broken stuff #2 directory(false, true)", waba1.directory(true, true), "");
+
+ waba1 = "file:";
+ check("Broken stuff #3 empty", waba1.isEmpty()?"EMPTY":"NOT", "NOT");
+ check("Broken stuff #3 valid", waba1.isValid()?"VALID":"MALFORMED", "MALFORMED");
+ check("Broken stuff #3 path", waba1.path(), "");
+ check("Broken stuff #3 fileName(false)", waba1.fileName(false), "");
+ check("Broken stuff #3 fileName(true)", waba1.fileName(true), "");
+ check("Broken stuff #3 directory(false, false)", waba1.directory(false, false), "");
+ check("Broken stuff #3 directory(true, false)", waba1.directory(true, false), "");
+ check("Broken stuff #3 directory(false, true)", waba1.directory(true, true), "");
+ KURL broken;
+ broken.setPath( QString() );
+ check("Broken stuff #4 empty", broken.isEmpty()?"EMPTY":"NOT", "NOT");
+// It's valid: because isValid refers to parsing, not to what happens afterwards.
+ check("Broken stuff #4 valid", broken.isValid()?"VALID":"MALFORMED", "VALID");
+ check("Broken stuff #4 path", broken.path(), "");
+ broken = "file://"; // just because coolo wondered
+ check("Broken stuff #5 empty", broken.isEmpty()?"EMPTY":"NOT", "NOT");
+ check("Broken stuff #5 valid", broken.isValid()?"VALID":"MALFORMED", "MALFORMED");
+ check("Broken stuff #5 path", broken.path(), "");
+ broken = "file";
+ check("Broken stuff #6 valid", broken.isValid()?"VALID":"MALFORMED", "MALFORMED");
+
+#if 0 // BROKEN?
+// UNC like names
+ KURL unc1("FILE://localhost/home/root");
+ check("UNC, with localhost", unc1.path(), "/home/root");
+ check("UNC, with localhost", unc1.url(), "file:/home/root");
+#endif
+ KURL unc2("file:///home/root");
+ check("UNC, with empty host", unc2.path(), "/home/root");
+ check("UNC, with empty host", unc2.url(), "file:/home/root");
+
+ {
+ KURL unc3("FILE://remotehost/home/root");
+#if 0 // BROKEN?
+ check("UNC, with remote host", unc3.path(), "//remotehost/home/root");
+#endif
+ check("UNC, with remote host", unc3.url(), "file://remotehost/home/root");
+ KURL url2("file://atlas/dfaure");
+ check("KURL::host()", url2.host(), "atlas");
+ check("KURL::path()", url2.path(), "/dfaure");
+ //check("KURL::path()", url3.path(), "//atlas/dfaure"); // says Waba
+ //KURL url3("file:////atlas/dfaure");
+ //check("KURL::path()", url3.path(), "//atlas/dfaure"); // says Waba
+ }
+
+ KURL umail1 ( "mailto:faure@kde.org" );
+ check("mailto: URL, general form", umail1.protocol(), "mailto");
+ check("mailto: URL, general form", umail1.path(), "faure@kde.org");
+ check("mailto: URL, is relative", KURL::isRelativeURL("mailto:faure@kde.org") ? "true" : "false", "false");
+ KURL umail2 ( "mailto:Faure David <faure@kde.org>" );
+ check("mailto: URL, general form", umail2.protocol(), "mailto");
+ check("mailto: URL, general form", umail2.path(), "Faure David <faure@kde.org>");
+ check("isRelativeURL(\"mailto:faure@kde.org\")", KURL::isRelativeURL("mailto:faure@kde.org") ? "yes" : "no", "no");
+ KURL umail3 ( "mailto:" );
+ check("mailto: invalid URL", umail3.isValid()?"valid":"malformed", "malformed");
+
+ check("man: URL, is relative", KURL::isRelativeURL("man:mmap") ? "true" : "false", "false");
+ check("javascript: URL, is relative", KURL::isRelativeURL("javascript:doSomething()") ? "true" : "false", "false");
+// more isRelative
+ check("file: URL, is relative", KURL::isRelativeURL("file:/blah") ? "true" : "false", "false");
+ check("/path, is relative", KURL::isRelativeURL("/path") ? "true" : "false", "true"); // arguable
+ check("something, is relative", KURL::isRelativeURL("something") ? "true" : "false", "true");
+ KURL about("about:konqueror");
+ check("about:",about.path(),"konqueror");
+
+ KURL ulong("https://swww.gad.de:443/servlet/CookieAccepted?MAIL=s@gad.de&VER=25901");
+ check("host",ulong.host(),"swww.gad.de");
+ check("path",ulong.path(),"/servlet/CookieAccepted");
+
+ QTextCodec::setCodecForLocale( KGlobal::charsets()->codecForName( "iso-8859-1" ) );
+// UTF8 tests
+ KURL uloc("/home/dfaure/konqtests/Matériel");
+ check("locale8bit",uloc.url().latin1(),"file:/home/dfaure/konqtests/Mat%E9riel"); // escaping the letter would be correct too
+ check("pretty",uloc.prettyURL(),"file:/home/dfaure/konqtests/Matériel"); // escaping the letter would be correct too
+// 106 is MIB for UTF-8
+ check("UTF8",uloc.url(0, 106),"file:/home/dfaure/konqtests/Mat%C3%A9riel");
+ uloc = KURL("file:/home/dfaure/konqtests/Mat%C3%A9riel", 106);
+ check("UTF8 path", uloc.path(), "/home/dfaure/konqtests/Matériel");
+
+// fromPathOrURL tests
+ uloc = KURL::fromPathOrURL( "/home/dfaure/konqtests/Mat%E9riel" );
+ check("fromPathOrURL path", uloc.path(), "/home/dfaure/konqtests/Mat%E9riel");
+ uloc = KURL::fromPathOrURL( "http://www.kde.org" );
+ check("fromPathOrURL url", uloc.url(), "http://www.kde.org");
+ uloc = KURL::fromPathOrURL( "www.kde.org" );
+ check("fromPathOrURL url", uloc.isValid()?"valid":"malformed", "malformed");
+ uloc = KURL::fromPathOrURL( "index.html" );
+ check("fromPathOrURL url", uloc.isValid()?"valid":"malformed", "malformed");
+ uloc = KURL::fromPathOrURL( "" );
+ check("fromPathOrURL url", uloc.isValid()?"valid":"malformed", "malformed");
+
+ QTextCodec::setCodecForLocale( KGlobal::charsets()->codecForName( "koi8-r" ) );
+ baseURL = "file:/home/coolo";
+ KURL russian = baseURL.directory(false, true) + QString::fromLocal8Bit( "ÆÇÎ7" );
+ check( "russian", russian.url(), "file:/home/%C6%C7%CE7" );
+
+ KURL tobi1("http://some.host.net/path/to/file#fragmentPrecedes?theQuery");
+ check("wrong order of query and hypertext reference #1", tobi1.ref(), "fragmentPrecedes");
+ check("wrong order of query and hypertext reference #2", tobi1.query(), "?theQuery");
+
+ tobi1 = "http://host.net/path/?#http://brokenäadsfküpoij31ü029muß2890zupycÜ*!*'O´+ß0i";
+ check("zero-length query",tobi1.query(),"?");
+
+ tobi1 = "http://host.net/path/#no-query";
+ check("no query", tobi1.query(),"");
+
+ tobi1 = "http://host.net/path?myfirstquery#andsomeReference";
+ tobi1.setEncodedPathAndQuery("another/path/?another&query");
+ check("setEncodedPathAndQuery test#1", tobi1.query(), "?another&query");
+ check("setEncodedPathAndQuery test#2", tobi1.path(), "another/path/");
+ tobi1.setEncodedPathAndQuery("another/path?another&query");
+ check("setEncodedPathAndQuery test#1", tobi1.query(), "?another&query");
+ check("setEncodedPathAndQuery test#2", tobi1.path(), "another/path");
+
+ KURL theKow = "http://www.google.de/search?q=frerich&hlx=xx&hl=de&empty=&lr=lang+de&test=%2B%20%3A%25";
+ check("queryItem (first item)", theKow.queryItem("q"), "frerich");
+ check("queryItem (middle item)", theKow.queryItem("hl"), "de");
+ check("queryItem (last item)", theKow.queryItem("lr"), "lang de");
+ check("queryItem (invalid item)", theKow.queryItem("InterstellarCounselor"), QString());
+ check("queryItem (empty item)", theKow.queryItem("empty"), "");
+ check("queryItem (item with encoded chars)", theKow.queryItem("test"), "+ :%");
+
+// checks for queryItems(), which returns a QMap<QString,QString>:
+ KURL queryUrl( "mailto:Marc%20Mutz%20%3cmutz@kde.org%3E?"
+ "Subject=subscribe+me&"
+ "body=subscribe+mutz%40kde.org&"
+ "Cc=majordomo%40lists.kde.org" );
+ check("queryItems (c.s. keys)",
+ QStringList(queryUrl.queryItems().keys()).join(", "),
+ "Cc, Subject, body" );
+ check("queryItems (c.i.s. keys)",
+ QStringList(queryUrl.queryItems(KURL::CaseInsensitiveKeys).keys()).join(", "),
+ "body, cc, subject" );
+ check("queryItems (values; c.s. keys)",
+ QStringList(queryUrl.queryItems().values()).join(", "),
+ "majordomo@lists.kde.org, subscribe me, subscribe mutz@kde.org" );
+ check("queryItems (values; c.i.s. keys)",
+ QStringList(queryUrl.queryItems(KURL::CaseInsensitiveKeys).values()).join(", "),
+ "subscribe mutz@kde.org, majordomo@lists.kde.org, subscribe me" );
+
+ KURL umlaut1("http://www.clever-tanken.de/liste.asp?ort=N%FCrnberg&typ=Diesel");
+ check("umlaut1.url()", umlaut1.url(), "http://www.clever-tanken.de/liste.asp?ort=N%FCrnberg&typ=Diesel");
+
+ KURL umlaut2("http://www.clever-tanken.de/liste.asp?ort=N%FCrnberg&typ=Diesel", 106);
+ check("umlaut2.url()", umlaut2.url(), "http://www.clever-tanken.de/liste.asp?ort=N%FCrnberg&typ=Diesel");
+
+// Needed for #49616
+ check( "encode_string('C++')", KURL::encode_string( "C++" ), "C%2B%2B" );
+ check( "decode_string('C%2B%2B')", KURL::decode_string( "C%2B%2B" ), "C++" );
+ check( "decode_string('C%00A')", KURL::decode_string( "C%00%A" ), "C" ); // we stop at %00
+
+ check( "encode_string('%')", KURL::encode_string( "%" ), "%25" );
+ check( "encode_string(':')", KURL::encode_string( ":" ), "%3A" );
+
+ KURL amantia( "http://%E1.foo" );
+ check("amantia.isValid()", amantia.isValid() ? "true" : "false", "true");
+#ifdef HAVE_IDNA_H
+ check("amantia.url()", amantia.url(), "http://xn--80a.foo"); // Non-ascii is allowed in IDN domain names.
+#else
+ check("amantia.url()", amantia.url(), "http://?.foo"); // why not
+#endif
+
+ KURL smb("smb://domain;username:password@server/share");
+ check("smb.isValid()", smb.isValid() ? "true" : "false", "true");
+ check("smb.user()", smb.user(), "domain;username");
+ smb = "smb:/";
+ check("smb:/", smb.isValid()?"VALID":"MALFORMED", "VALID");
+ smb = "smb://"; // kurl.cpp rev 1.106
+ check("smb://", smb.isValid()?"VALID":"MALFORMED", "MALFORMED");
+ smb = "smb://host";
+ check("smb://host", smb.isValid()?"VALID":"MALFORMED", "VALID");
+ smb = "smb:///";
+ check("smb:///", smb.isValid()?"VALID":"MALFORMED", "VALID");
+
+ KURL weird;
+ weird = "http://strange<hostname>/";
+ check("weird.isValid()", weird.isValid() ? "true" : "false", "false");
+
+ weird = "http://strange<username>@strange<hostname>/";
+ check("weird.isValid()", weird.isValid() ? "true" : "false", "false");
+
+ weird = "http://strange<username>@ok_hostname/";
+ check("weird.isValid()", weird.isValid() ? "true" : "false", "true");
+ check("weird.host()", weird.host(), "ok_hostname");
+
+ weird = "http://strange;hostname/";
+ check("weird.isValid()", weird.isValid() ? "true" : "false", "false");
+
+ weird = "http://strange;username@strange;hostname/";
+ check("weird.isValid()", weird.isValid() ? "true" : "false", "false");
+
+ weird = "http://strange;username@ok_hostname/";
+ check("weird.isValid()", weird.isValid() ? "true" : "false", "true");
+ check("weird.host()", weird.host(), "ok_hostname");
+
+ weird = "http://strange;username:password@strange;hostname/";
+ check("weird.isValid()", weird.isValid() ? "true" : "false", "false");
+
+ weird = "http://strange;username:password@ok_hostname/";
+ check("weird.isValid()", weird.isValid() ? "true" : "false", "true");
+ check("weird.host()", weird.host(), "ok_hostname");
+
+ weird = "http://[strange;hostname]/";
+ check("weird.isValid()", weird.isValid() ? "true" : "false", "false");
+
+ weird = "http://[::fff:1:23]/";
+ check("weird.isValid()", weird.isValid() ? "true" : "false", "true");
+ check("weird.host()", weird.host(), "::fff:1:23");
+
+ KURL com1("http://server.com/dir/", ".");
+ check("com1.url()", com1.url(), "http://server.com/dir/");
+
+ KURL com2("http://server.com/dir/blubb/", "blah/");
+ check("com2.url()", com2.url(), "http://server.com/dir/blubb/blah/");
+
+ KURL utf8_1("audiocd:/By%20Name/15%20Geantra%C3%AE.wav", 106);
+ check("utf8_1.fileName()", utf8_1.fileName(), QString::fromLatin1("15 Geantraî.wav"));
+
+ KURL utf8_2("audiocd:/By%20Name/15%2fGeantra%C3%AE.wav", 106);
+ check("utf8_2.fileName()", utf8_2.fileName(), QString::fromLatin1("15/Geantraî.wav"));
+
+ KURL url_newline_1("http://www.foo.bar/foo/bar\ngnork");
+ check("url_newline_1.url()", url_newline_1.url(), QString::fromLatin1("http://www.foo.bar/foo/bar%0Agnork"));
+
+ KURL url_newline_2("http://www.foo.bar/foo?bar\ngnork");
+ check("url_newline_2.url()", url_newline_2.url(), QString::fromLatin1("http://www.foo.bar/foo?bar%0Agnork"));
+
+ KURL local_file_1("file://localhost/my/file");
+ check("local_file_1.isLocalFile()", local_file_1.isLocalFile() ? "true" : "false", "true");
+
+ KURL local_file_2("file://www.kde.org/my/file");
+ check("local_file_2.isLocalFile()", local_file_2.isLocalFile() ? "true" : "false", "false");
+
+ KURL local_file_3;
+ local_file_3.setHost(getenv("HOSTNAME"));
+ local_file_3.setPath("/my/file");
+ printf("\nURL=%s\n", local_file_3.url().latin1());
+ check("local_file_3.isLocalFile()", local_file_3.isLocalFile() ? "true" : "false", "true");
+
+ KURL local_file_4("file:///my/file");
+ check("local_file_4.isLocalFile()", local_file_4.isLocalFile() ? "true" : "false", "true");
+
+ KURL local_file_5;
+ local_file_5.setPath("/foo?bar");
+ check("local_file_5.url()", local_file_5.url(), "file:/foo%3Fbar");
+
+ QString basePath = "/home/bastian";
+
+ check("relativePath(\"/home/bastian\", \"/home/bastian\")", KURL::relativePath(basePath, "/home/bastian"), "./");
+ bool b;
+ check("relativePath(\"/home/bastian\", \"/home/bastian/src/plugins\")", KURL::relativePath(basePath, "/home/bastian/src/plugins", &b), "./src/plugins");
+ check("Is a subdirectory?", b ? "true" : "false", "true");
+ check("relativePath(\"/home/bastian\", \"./src/plugins\")", KURL::relativePath(basePath, "./src/plugins"), "./src/plugins");
+ check("relativePath(\"/home/bastian\", \"/home/waba/src/plugins\")", KURL::relativePath(basePath, "/home/waba/src/plugins", &b), "../waba/src/plugins");
+ check("Is a subdirectory?", b ? "true" : "false", "false");
+ check("relativePath(\"/home/bastian\", \"/\")", KURL::relativePath(basePath, "/"), "../../");
+
+ check("relativePath(\"/\", \"/\")", KURL::relativePath("/", "/"), "./");
+ check("relativePath(\"/\", \"/home/bastian\")", KURL::relativePath("/", "/home/bastian"), "./home/bastian");
+ check("relativePath(\"\", \"/home/bastian\")", KURL::relativePath("", "/home/bastian"), "/home/bastian");
+
+ baseURL = "http://www.kde.org/index.html";
+ check("relativeURL(\"http://www.kde.org/index.html\", \"http://www.kde.org/index.html#help\")", KURL::relativeURL(baseURL, "http://www.kde.org/index.html#help"), "#help");
+ check("relativeURL(\"http://www.kde.org/index.html\", \"http://www.kde.org/index.html?help=true\")", KURL::relativeURL(baseURL, "http://www.kde.org/index.html?help=true"), "index.html?help=true");
+ check("relativeURL(\"http://www.kde.org/index.html\", \"http://www.kde.org/contact.html\")", KURL::relativeURL(baseURL, "http://www.kde.org/contact.html"), "contact.html");
+ check("relativeURL(\"http://www.kde.org/index.html\", \"ftp://ftp.kde.org/pub/kde\")", KURL::relativeURL(baseURL, "ftp://ftp.kde.org/pub/kde"), "ftp://ftp.kde.org/pub/kde");
+ check("relativeURL(\"http://www.kde.org/index.html\", \"http://www.kde.org/index.html\")", KURL::relativeURL(baseURL, "http://www.kde.org/index.html"), "./");
+
+ baseURL = "http://www.kde.org/info/index.html";
+ check("relativeURL(\"http://www.kde.org/info/index.html\", \"http://www.kde.org/bugs/contact.html\")", KURL::relativeURL(baseURL, "http://www.kde.org/bugs/contact.html"), "../bugs/contact.html");
+
+ baseURL = "ptal://mlc:usb:PC_970";
+ check("isValid()?", baseURL.isValid() ? "true" : "false", "false");
+ check("url()", baseURL.url(), "ptal://mlc:usb:PC_970");
+
+ baseURL = "http://mlc:80/";
+ check("isValid()?", baseURL.isValid() ? "true" : "false", "true");
+ check("port()?", QString::number(baseURL.port()), "80");
+ check("path()?", baseURL.path(), "/");
+
+ baseURL = "ptal://mlc:usb@PC_970"; // User=mlc, password=usb, host=PC_970
+ check("isValid()?", baseURL.isValid() ? "true" : "false", "true");
+ check("host()?", baseURL.host(), "pc_970");
+ check("user()?", baseURL.user(), "mlc");
+ check("pass()?", baseURL.pass(), "usb");
+
+ weird = "ftp://user%40host.com@ftp.host.com/var/www/";
+ check("user()?", weird.user(), "user@host.com" );
+ check("host()?", weird.host(), "ftp.host.com" );
+ KURL up = weird.upURL();
+ check("KURL::upURL()", up.url(), "ftp://user%40host.com@ftp.host.com/var/");
+ up = up.upURL();
+ check("KURL::upURL()", up.url(), "ftp://user%40host.com@ftp.host.com/");
+ up = up.upURL();
+ check("KURL::upURL()", up.url(), "ftp://user%40host.com@ftp.host.com/"); // unchanged
+
+ KURL ldap = "ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)";
+ check("host()?", ldap.host(), "host.com");
+ check("port()?", QString("%1").arg(ldap.port()), "6666");
+ check("path()?", ldap.path(), "/o=University of Michigan,c=US");
+ check("query()?", ldap.query(), "??sub?(cn=Babs%20Jensen)");
+ check("url()?", ldap.url(), "ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)");
+ ldap.setQuery("??sub?(cn=Karl%20Marx)");
+ check("query()?", ldap.query(), "??sub?(cn=Karl%20Marx)");
+ check("url()?", ldap.url(), "ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Karl%20Marx)");
+
+ KURL leo = "data:text/html,http://www.invalid/";
+ check("data URL: isValid", leo.isValid()?"valid":"malformed", "valid" );
+ check("data URL: protocol", leo.protocol(), "data" );
+ check("data URL: url", leo.url(), "data:text/html,http://www.invalid/" );
+ check("data URL: path", leo.path(), "text/html,http://www.invalid/" );
+
+// URI Mode tests
+ url1 = "http://www.foobar.com/";
+ check("KURL(\"http://www.foobar.com/\").uriMode()", QString::number(url1.uriMode()), QString::number(KURL::URL));
+ url1 = "mailto:user@host.com";
+ check("KURL(\"mailto:user@host.com\").uriMode()", QString::number(url1.uriMode()), QString::number(KURL::Mailto));
+ check("KURL(\"mailto:user@host.com\").url()", url1.url(), "mailto:user@host.com");
+ check("KURL(\"mailto:user@host.com\").url(0, 106)", url1.url(0, 106), "mailto:user@host.com");
+ url1 = "data:text/plain,foobar?gazonk=flarp";
+ check("KURL(\"data:text/plain,foobar?gazonk=flarp\").uriMode()", QString::number(url1.uriMode()), QString::number(KURL::RawURI));
+ check("KURL(\"data:text/plain,foobar?gazonk=flarp\").path()", url1.path(), "text/plain,foobar?gazonk=flarp");
+ url1 = "mailto:User@Host.COM?subject=Hello";
+ check("KURL(\"mailto:User@Host.COM?subject=Hello\").path()", url1.path(), "User@host.com");
+
+ printf("\nTest OK !\n");
+ */
+
+
+ }
+
+void tst_QUrl::i18n_data()
+{
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<QByteArray>("punyOutput");
+
+ QTest::newRow("øl") << QString::fromLatin1("http://ole:passord@www.øl.no/index.html?ole=æsemann&ilder gud=hei#top")
+ << QByteArray("http://ole:passord@www.xn--l-4ga.no/index.html?ole=%C3%A6semann&ilder%20gud=hei#top");
+ QTest::newRow("räksmörgås") << QString::fromLatin1("http://www.räksmörgås.no/")
+ << QByteArray("http://www.xn--rksmrgs-5wao1o.no/");
+ QTest::newRow("bühler") << QString::fromLatin1("http://www.bühler.no/")
+ << QByteArray("http://www.xn--bhler-kva.no/");
+ QTest::newRow("non-latin1")
+ << QString::fromUtf8("http://www.\316\261\316\270\316\256\316\275\316\261.info")
+ << QByteArray("http://www.xn--jxafb0a0a.info");
+}
+
+void tst_QUrl::i18n()
+{
+ QFETCH(QString, input);
+ QFETCH(QByteArray, punyOutput);
+
+ QUrl url(input);
+ QVERIFY(url.isValid());
+
+ QCOMPARE(url.toEncoded().constData(), punyOutput.constData());
+ QCOMPARE(QUrl::fromEncoded(punyOutput), url);
+ QCOMPARE(QUrl::fromEncoded(punyOutput).toString(), input);
+}
+
+
+void tst_QUrl::resolving_data()
+{
+ QTest::addColumn<QString>("baseUrl");
+ QTest::addColumn<QString>("relativeUrl");
+ QTest::addColumn<QString>("relsolvedUrl");
+
+ // 5.4.1 Normal Examples (http://www.ietf.org/rfc/rfc3986.txt)
+ QTest::newRow("g:h") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g:h") << QString::fromLatin1("g:h");
+ QTest::newRow("g") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g") << QString::fromLatin1("http://a/b/c/g");
+ QTest::newRow("./g") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("./g") << QString::fromLatin1("http://a/b/c/g");
+ QTest::newRow("g/") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g/") << QString::fromLatin1("http://a/b/c/g/");
+ QTest::newRow("/g") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("/g") << QString::fromLatin1("http://a/g");
+ QTest::newRow("//g") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("//g") << QString::fromLatin1("http://g");
+ QTest::newRow("?y") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("?y") << QString::fromLatin1("http://a/b/c/d;p?y");
+ QTest::newRow("g?y") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g?y") << QString::fromLatin1("http://a/b/c/g?y");
+ QTest::newRow("#s") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("#s") << QString::fromLatin1("http://a/b/c/d;p?q#s");
+ QTest::newRow("g#s") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g#s") << QString::fromLatin1("http://a/b/c/g#s");
+ QTest::newRow("g?y#s") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g?y#s") << QString::fromLatin1("http://a/b/c/g?y#s");
+ QTest::newRow(";x") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1(";x") << QString::fromLatin1("http://a/b/c/;x");
+ QTest::newRow("g;x") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g;x") << QString::fromLatin1("http://a/b/c/g;x");
+ QTest::newRow("g;x?y#s") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g;x?y#s") << QString::fromLatin1("http://a/b/c/g;x?y#s");
+ QTest::newRow("[empty]") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("") << QString::fromLatin1("http://a/b/c/d;p?q");
+ QTest::newRow(".") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1(".") << QString::fromLatin1("http://a/b/c/");
+ QTest::newRow("./") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("./") << QString::fromLatin1("http://a/b/c/");
+ QTest::newRow("..") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("..") << QString::fromLatin1("http://a/b/");
+ QTest::newRow("../") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("../") << QString::fromLatin1("http://a/b/");
+ QTest::newRow("../g") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("../g") << QString::fromLatin1("http://a/b/g");
+ QTest::newRow("../..") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("../..") << QString::fromLatin1("http://a/");
+ QTest::newRow("../../") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("../../") << QString::fromLatin1("http://a/");
+ QTest::newRow("../../g") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("../../g") << QString::fromLatin1("http://a/g");
+
+ // 5.4.2 Abnormal Examples (http://www.ietf.org/rfc/rfc3986.txt)
+
+ // Parsers must be careful in handling cases where there are more
+ // relative path ".." segments than there are hierarchical levels in the
+ // base URI's path. Note that the ".." syntax cannot be used to change
+ // the authority component of a URI.
+ QTest::newRow("../../../g") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("../../../g") << QString::fromLatin1("http://a/g");
+ QTest::newRow("../../../../g") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("../../../../g") << QString::fromLatin1("http://a/g");
+
+ // Similarly, parsers must remove the dot-segments "." and ".." when
+ // they are complete components of a path, but not when they are only
+ // part of a segment.
+ QTest::newRow("/./g") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("/./g") << QString::fromLatin1("http://a/g");
+ QTest::newRow("/../g") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("/../g") << QString::fromLatin1("http://a/g");
+ QTest::newRow("g.") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g.") << QString::fromLatin1("http://a/b/c/g.");
+ QTest::newRow(".g") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1(".g") << QString::fromLatin1("http://a/b/c/.g");
+ QTest::newRow("g..") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g..") << QString::fromLatin1("http://a/b/c/g..");
+ QTest::newRow("..g") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("..g") << QString::fromLatin1("http://a/b/c/..g");
+
+ // Less likely are cases where the relative URI reference uses
+ // unnecessary or nonsensical forms of the "." and ".." complete path
+ // segments.
+ QTest::newRow("./../g") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("./../g") << QString::fromLatin1("http://a/b/g");
+ QTest::newRow("./g/.") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("./g/.") << QString::fromLatin1("http://a/b/c/g/");
+ QTest::newRow("g/./h") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g/./h") << QString::fromLatin1("http://a/b/c/g/h");
+ QTest::newRow("g/../h") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g/../h") << QString::fromLatin1("http://a/b/c/h");
+ QTest::newRow("g;x=1/./y") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g;x=1/./y") << QString::fromLatin1("http://a/b/c/g;x=1/y");
+ QTest::newRow("g;x=1/../y") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g;x=1/../y") << QString::fromLatin1("http://a/b/c/y");
+
+ // Some applications fail to separate the reference's query and/or
+ // fragment components from a relative path before merging it with the
+ // base path and removing dot-segments. This error is rarely noticed,
+ // since typical usage of a fragment never includes the hierarchy ("/")
+ // character, and the query component is not normally used within
+ // relative references.
+ QTest::newRow("g?y/./x") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g?y/./x") << QString::fromLatin1("http://a/b/c/g?y/./x");
+ QTest::newRow("g?y/../x") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g?y/../x") << QString::fromLatin1("http://a/b/c/g?y/../x");
+ QTest::newRow("g#s/./x") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g#s/./x") << QString::fromLatin1("http://a/b/c/g#s/./x");
+ QTest::newRow("g#s/../x") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("g#s/../x") << QString::fromLatin1("http://a/b/c/g#s/../x");
+
+ // Some parsers allow the scheme name to be present in a relative URI
+ // reference if it is the same as the base URI scheme. This is
+ // considered to be a loophole in prior specifications of partial URI
+ // [RFC1630]. Its use should be avoided, but is allowed for backward
+ // compatibility.
+ // For strict parsers :
+// QTest::newRow("http:g [for strict parsers]") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("http:g") << QString::fromLatin1("http:g");
+ // For backward compatibility :
+ QTest::newRow("http:g [for backward compatibility]") << QString::fromLatin1("http://a/b/c/d;p?q") << QString::fromLatin1("http:g") << QString::fromLatin1("http://a/b/c/g");
+
+ // Resolve relative with relative
+ QTest::newRow("../a (1)") << QString::fromLatin1("b") << QString::fromLatin1("../a") << QString::fromLatin1("a");
+ QTest::newRow("../a (2)") << QString::fromLatin1("b/a") << QString::fromLatin1("../a") << QString::fromLatin1("a");
+ QTest::newRow("../a (3)") << QString::fromLatin1("b/c/a") << QString::fromLatin1("../a") << QString::fromLatin1("b/a");
+ QTest::newRow("../a (4)") << QString::fromLatin1("b") << QString::fromLatin1("/a") << QString::fromLatin1("/a");
+
+ QTest::newRow("../a (5)") << QString::fromLatin1("/b") << QString::fromLatin1("../a") << QString::fromLatin1("/a");
+ QTest::newRow("../a (6)") << QString::fromLatin1("/b/a") << QString::fromLatin1("../a") << QString::fromLatin1("/a");
+ QTest::newRow("../a (7)") << QString::fromLatin1("/b/c/a") << QString::fromLatin1("../a") << QString::fromLatin1("/b/a");
+ QTest::newRow("../a (8)") << QString::fromLatin1("/b") << QString::fromLatin1("/a") << QString::fromLatin1("/a");
+}
+
+void tst_QUrl::resolving()
+{
+ QFETCH(QString, baseUrl);
+ QFETCH(QString, relativeUrl);
+ QFETCH(QString, relsolvedUrl);
+
+ QUrl url(baseUrl);
+ QCOMPARE(url.resolved(relativeUrl).toString(), relsolvedUrl);
+}
+
+
+void tst_QUrl::toString_data()
+{
+ QTest::addColumn<QString>("urlString");
+ QTest::addColumn<uint>("options");
+ QTest::addColumn<QString>("string");
+
+ QTest::newRow("data0") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemoveScheme)
+ << QString::fromLatin1("//ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top");
+
+ QTest::newRow("data2") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemovePassword)
+ << QString::fromLatin1("http://ole@www.troll.no:9090/index.html?ole=semann&gud=hei#top");
+
+ QTest::newRow("data3") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemoveUserInfo)
+ << QString::fromLatin1("http://www.troll.no:9090/index.html?ole=semann&gud=hei#top");
+
+ QTest::newRow("data4") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemovePort)
+ << QString::fromLatin1("http://ole:password@www.troll.no/index.html?ole=semann&gud=hei#top");
+
+ QTest::newRow("data5") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemoveAuthority)
+ << QString::fromLatin1("http:/index.html?ole=semann&gud=hei#top");
+
+ QTest::newRow("data6") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemovePath)
+ << QString::fromLatin1("http://ole:password@www.troll.no:9090?ole=semann&gud=hei#top");
+
+ QTest::newRow("data7") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemoveQuery)
+ << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html#top");
+
+ QTest::newRow("data8") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemoveFragment)
+ << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei");
+
+ QTest::newRow("data9") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemoveScheme | QUrl::RemovePassword)
+ << QString::fromLatin1("//ole@www.troll.no:9090/index.html?ole=semann&gud=hei#top");
+
+ QTest::newRow("data10") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemoveScheme | QUrl::RemoveUserInfo)
+ << QString::fromLatin1("//www.troll.no:9090/index.html?ole=semann&gud=hei#top");
+
+ QTest::newRow("data11") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemoveScheme | QUrl::RemovePort)
+ << QString::fromLatin1("//ole:password@www.troll.no/index.html?ole=semann&gud=hei#top");
+
+ QTest::newRow("data12") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemoveScheme | QUrl::RemoveAuthority)
+ << QString::fromLatin1("/index.html?ole=semann&gud=hei#top");
+
+ QTest::newRow("data13") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemoveScheme | QUrl::RemovePath)
+ << QString::fromLatin1("//ole:password@www.troll.no:9090?ole=semann&gud=hei#top");
+
+ QTest::newRow("data14") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemoveScheme | QUrl::RemoveAuthority | QUrl::RemoveFragment)
+ << QString::fromLatin1("/index.html?ole=semann&gud=hei");
+
+ QTest::newRow("data15") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemoveAuthority | QUrl::RemoveQuery)
+ << QString::fromLatin1("http:/index.html#top");
+
+ QTest::newRow("data16") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemovePassword | QUrl::RemovePort
+ | QUrl::RemovePath | QUrl::RemoveQuery
+ | QUrl::RemoveFragment)
+ << QString::fromLatin1("http://ole@www.troll.no");
+
+ QTest::newRow("data17") << QString::fromLatin1("http://ole:password@www.troll.no:9090/index.html?ole=semann&gud=hei#top")
+ << uint(QUrl::RemoveScheme | QUrl::RemovePassword
+ | QUrl::RemovePort | QUrl::RemovePath
+ | QUrl::RemoveQuery | QUrl::RemoveFragment)
+ << QString::fromLatin1("//ole@www.troll.no");
+
+ QTest::newRow("data18") << QString::fromLatin1("http://andreas:hemmelig@www.vg.no/?my=query&your=query#yougotfragged")
+ << uint(QUrl::None)
+ << QString::fromLatin1("http://andreas:hemmelig@www.vg.no/?my=query&your=query#yougotfragged");
+
+ /*
+ QTest::newRow("data19") << QString::fromLatin1("http://andreas:hemmelig@www.vg.no/a/../?my=query&your=query#yougotfragged")
+ << uint(QUrl::None)
+ << QString::fromLatin1("http://andreas:hemmelig@www.vg.no/?my=query&your=query#yougotfragged");
+ */
+
+ QTest::newRow("nopath_task31320") << QString::fromLatin1("host://protocol")
+ << uint(QUrl::None)
+ << QString::fromLatin1("host://protocol");
+
+ QTest::newRow("underscore_QTBUG-7434") << QString::fromLatin1("http://foo_bar.host.com/rss.php")
+ << uint(QUrl::None)
+ << QString::fromLatin1("http://foo_bar.host.com/rss.php");
+}
+
+void tst_QUrl::toString()
+{
+ QFETCH(QString, urlString);
+ QFETCH(uint, options);
+ QFETCH(QString, string);
+
+ QUrl url(urlString);
+ QCOMPARE(url.toString(QUrl::FormattingOptions(options)), string);
+}
+
+//### more tests ... what do we expect ...
+void tst_QUrl::isParentOf_data()
+{
+ QTest::addColumn<QString>("parent");
+ QTest::addColumn<QString>("child");
+ QTest::addColumn<bool>("trueFalse");
+
+ QTest::newRow("data0") << QString::fromLatin1("http://a.b.c/d")
+ << QString::fromLatin1("http://a.b.c/d/e?f") << true;
+ QTest::newRow("data1") << QString::fromLatin1("http://a.b.c/d")
+ << QString::fromLatin1("http://a.b.c/d") << false;
+ QTest::newRow("data2") << QString::fromLatin1("http://a.b.c/d")
+ << QString::fromLatin1("http://a.b.c/de") << false;
+ QTest::newRow("data3") << QString::fromLatin1("http://a.b.c/d/")
+ << QString::fromLatin1("http://a.b.c/de") << false;
+ QTest::newRow("data4") << QString::fromLatin1("http://a.b.c/d/")
+ << QString::fromLatin1("http://a.b.c/d/e") << true;
+
+
+}
+
+void tst_QUrl::toString_constructed_data()
+{
+ QTest::addColumn<QString>("scheme");
+ QTest::addColumn<QString>("userName");
+ QTest::addColumn<QString>("password");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<int>("port");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QByteArray>("query");
+ QTest::addColumn<QString>("fragment");
+ QTest::addColumn<QString>("asString");
+ QTest::addColumn<QByteArray>("asEncoded");
+
+ QString n("");
+
+ QTest::newRow("data1") << n << n << n << QString::fromLatin1("qt.nokia.com") << -1 << QString::fromLatin1("index.html")
+ << QByteArray() << n << QString::fromLatin1("//qt.nokia.com/index.html")
+ << QByteArray("//qt.nokia.com/index.html");
+ QTest::newRow("data2") << QString::fromLatin1("file") << n << n << n << -1 << QString::fromLatin1("/root") << QByteArray()
+ << n << QString::fromLatin1("file:///root") << QByteArray("file:///root");
+ QTest::newRow("userAndPass") << QString::fromLatin1("http") << QString::fromLatin1("dfaure") << QString::fromLatin1("kde")
+ << "kde.org" << 443 << QString::fromLatin1("/") << QByteArray() << n
+ << QString::fromLatin1("http://dfaure:kde@kde.org:443/") << QByteArray("http://dfaure:kde@kde.org:443/");
+ QTest::newRow("PassWithoutUser") << QString::fromLatin1("http") << n << QString::fromLatin1("kde")
+ << "kde.org" << 443 << QString::fromLatin1("/") << QByteArray() << n
+ << QString::fromLatin1("http://:kde@kde.org:443/") << QByteArray("http://:kde@kde.org:443/");
+}
+
+void tst_QUrl::toString_constructed()
+{
+ QFETCH(QString, scheme);
+ QFETCH(QString, userName);
+ QFETCH(QString, password);
+ QFETCH(QString, host);
+ QFETCH(int, port);
+ QFETCH(QString, path);
+ QFETCH(QByteArray, query);
+ QFETCH(QString, fragment);
+ QFETCH(QString, asString);
+ QFETCH(QByteArray, asEncoded);
+
+ QUrl url;
+ if (!scheme.isEmpty())
+ url.setScheme(scheme);
+ if (!userName.isEmpty())
+ url.setUserName(userName);
+ if (!password.isEmpty())
+ url.setPassword(password);
+ if (!host.isEmpty())
+ url.setHost(host);
+ if (port != -1)
+ url.setPort(port);
+ if (!path.isEmpty())
+ url.setPath(path);
+ if (!query.isEmpty())
+ url.setEncodedQuery(query);
+ if (!fragment.isEmpty())
+ url.setFragment(fragment);
+
+ QVERIFY(url.isValid());
+ QCOMPARE(url.toString(), asString);
+ QCOMPARE(QString::fromLatin1(url.toEncoded()), QString::fromLatin1(asEncoded)); // readable in case of differences
+ QCOMPARE(url.toEncoded(), asEncoded);
+}
+
+
+void tst_QUrl::isParentOf()
+{
+ QFETCH(QString, parent);
+ QFETCH(QString, child);
+ QFETCH(bool, trueFalse);
+
+ QUrl url(parent);
+ QCOMPARE(url.isParentOf(QUrl(child)), trueFalse);
+}
+
+void tst_QUrl::toLocalFile_data()
+{
+ QTest::addColumn<QString>("theUrl");
+ QTest::addColumn<QString>("theFile");
+
+ QTest::newRow("data0") << QString::fromLatin1("file:/a.txt") << QString::fromLatin1("/a.txt");
+ QTest::newRow("data4") << QString::fromLatin1("file:///a.txt") << QString::fromLatin1("/a.txt");
+ QTest::newRow("data5") << QString::fromLatin1("file:///c:/a.txt") << QString::fromLatin1("c:/a.txt");
+ QTest::newRow("data6") << QString::fromLatin1("file://somehost/somedir/somefile") << QString::fromLatin1("//somehost/somedir/somefile");
+ QTest::newRow("data7") << QString::fromLatin1("file://somehost/") << QString::fromLatin1("//somehost/");
+ QTest::newRow("data8") << QString::fromLatin1("file://somehost") << QString::fromLatin1("//somehost");
+ QTest::newRow("data9") << QString::fromLatin1("file:////somehost/somedir/somefile") << QString::fromLatin1("//somehost/somedir/somefile");
+ QTest::newRow("data10") << QString::fromLatin1("FILE:/a.txt") << QString::fromLatin1("/a.txt");
+
+ // and some that result in empty (i.e., not local)
+ QTest::newRow("xdata0") << QString::fromLatin1("/a.txt") << QString();
+ QTest::newRow("xdata1") << QString::fromLatin1("//a.txt") << QString();
+ QTest::newRow("xdata2") << QString::fromLatin1("///a.txt") << QString();
+ QTest::newRow("xdata3") << QString::fromLatin1("foo:/a.txt") << QString();
+ QTest::newRow("xdata4") << QString::fromLatin1("foo://a.txt") << QString();
+ QTest::newRow("xdata5") << QString::fromLatin1("foo:///a.txt") << QString();
+}
+
+void tst_QUrl::toLocalFile()
+{
+ QFETCH(QString, theUrl);
+ QFETCH(QString, theFile);
+
+ QUrl url(theUrl);
+ QCOMPARE(url.toLocalFile(), theFile);
+}
+
+void tst_QUrl::fromLocalFile_data()
+{
+ QTest::addColumn<QString>("theFile");
+ QTest::addColumn<QString>("theUrl");
+ QTest::addColumn<QString>("thePath");
+
+ QTest::newRow("data0") << QString::fromLatin1("/a.txt") << QString::fromLatin1("file:///a.txt") << QString::fromLatin1("/a.txt");
+ QTest::newRow("data1") << QString::fromLatin1("a.txt") << QString::fromLatin1("file:a.txt") << QString::fromLatin1("a.txt");
+ QTest::newRow("data2") << QString::fromLatin1("/a/b.txt") << QString::fromLatin1("file:///a/b.txt") << QString::fromLatin1("/a/b.txt");
+ QTest::newRow("data3") << QString::fromLatin1("c:/a.txt") << QString::fromLatin1("file:///c:/a.txt") << QString::fromLatin1("/c:/a.txt");
+ QTest::newRow("data4") << QString::fromLatin1("//somehost/somedir/somefile") << QString::fromLatin1("file://somehost/somedir/somefile")
+ << QString::fromLatin1("/somedir/somefile");
+ QTest::newRow("data5") << QString::fromLatin1("//somehost") << QString::fromLatin1("file://somehost")
+ << QString::fromLatin1("");
+ QTest::newRow("data6") << QString::fromLatin1("//somehost/") << QString::fromLatin1("file://somehost/")
+ << QString::fromLatin1("/");
+}
+
+void tst_QUrl::fromLocalFile()
+{
+ QFETCH(QString, theFile);
+ QFETCH(QString, theUrl);
+ QFETCH(QString, thePath);
+
+ QUrl url = QUrl::fromLocalFile(theFile);
+
+ QCOMPARE(url.toString(), theUrl);
+ QCOMPARE(url.path(), thePath);
+}
+
+void tst_QUrl::compat_legacy()
+{
+ {
+ QUrl u( "file:bar" );
+ QCOMPARE( u.toString(QUrl::RemoveScheme), QString("bar") );
+ }
+
+ /* others
+ */
+ {
+ QUrl u( "http://qt.nokia.com/images/ban/pgs_front.jpg" );
+ QCOMPARE( u.path(), QString("/images/ban/pgs_front.jpg") );
+ }
+ {
+ QUrl tmp( "http://qt.nokia.com/images/ban/" );
+ QUrl u = tmp.resolved(QString("pgs_front.jpg"));
+ QCOMPARE( u.path(), QString("/images/ban/pgs_front.jpg") );
+ }
+ {
+ QUrl tmp;
+ QUrl u = tmp.resolved(QString("http://qt.nokia.com/images/ban/pgs_front.jpg"));
+ QCOMPARE( u.path(), QString("/images/ban/pgs_front.jpg") );
+ }
+ {
+ QUrl tmp;
+ QUrl u = tmp.resolved(QString("http://qt.nokia.com/images/ban/pgs_front.jpg"));
+ QFileInfo fi(u.path());
+ u.setPath(fi.path());
+ QCOMPARE( u.path(), QString("/images/ban") );
+ }
+}
+
+void tst_QUrl::compat_constructor_01_data()
+{
+ QTest::addColumn<QString>("urlStr");
+ QTest::addColumn<QString>("res");
+
+ //next we fill it with data
+ QTest::newRow( "data0" ) << QString("Makefile") << QString("Makefile"); // nolonger add file by default
+ QTest::newRow( "data1" ) << QString("Makefile") << QString("Makefile");
+ QTest::newRow( "data2" ) << QString("ftp://ftp.qt.nokia.com/qt/INSTALL") << QString("ftp://ftp.qt.nokia.com/qt/INSTALL");
+ QTest::newRow( "data3" ) << QString("ftp://ftp.qt.nokia.com/qt/INSTALL") << QString("ftp://ftp.qt.nokia.com/qt/INSTALL");
+}
+
+void tst_QUrl::compat_constructor_01()
+{
+ /* The following should work as expected:
+ *
+ * QUrlOperator op;
+ * op.copy( QString( "Makefile" ),
+ * QString("ftp://rms:grmpf12@nibbler/home/rms/tmp"),
+ * false );
+ *
+ * as well as the following:
+ *
+ * QUrlOperator op;
+ * op.copy(QString("ftp://ftp.qt.nokia.com/qt/INSTALL"), ".");
+ */
+ QFETCH( QString, urlStr );
+
+ {
+ QUrl empty;
+ QUrl u = empty.resolved(urlStr);
+
+ QTEST( u.toString(), "res" );
+ }
+ {
+ QUrl empty;
+ QUrl u = empty.resolved(urlStr);
+
+ QTEST( u.toString(), "res" );
+ }
+}
+
+void tst_QUrl::compat_constructor_02_data()
+{
+ QTest::addColumn<QString>("urlStr");
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<QString>("res");
+
+ //next we fill it with data
+ QTest::newRow( "data0" ) << QString("ftp://ftp.qt.nokia.com/qt") << QString("INSTALL") << QString("ftp://ftp.qt.nokia.com/INSTALL");
+ QTest::newRow( "data1" ) << QString("ftp://ftp.qt.nokia.com/qt/") << QString("INSTALL") << QString("ftp://ftp.qt.nokia.com/qt/INSTALL");
+}
+
+void tst_QUrl::compat_constructor_02()
+{
+ /* The following should work as expected:
+ *
+ * QUrlOperator op( "ftp://ftp.qt.nokia.com/qt" );
+ * op.copy(QString("INSTALL"), ".");
+ */
+ QFETCH( QString, urlStr );
+ QFETCH( QString, fileName );
+
+ QUrl tmp( urlStr );
+ QUrl u = tmp.resolved(fileName);
+
+ QTEST( u.toString(), "res" );
+}
+
+void tst_QUrl::compat_constructor_03_data()
+{
+ QTest::addColumn<QString>("urlStr");
+ QTest::addColumn<QString>("res");
+
+ //next we fill it with data
+ QTest::newRow( "protocol00" ) << QString( "http://qt.nokia.com/index.html" ) << QString( "http://qt.nokia.com/index.html" );
+ QTest::newRow( "protocol01" ) << QString( "http://qt.nokia.com" ) << QString( "http://qt.nokia.com" );
+ QTest::newRow( "protocol02" ) << QString( "http://qt.nokia.com/" ) << QString( "http://qt.nokia.com/" );
+ QTest::newRow( "protocol03" ) << QString( "http://qt.nokia.com/foo" ) << QString( "http://qt.nokia.com/foo" );
+ QTest::newRow( "protocol04" ) << QString( "http://qt.nokia.com/foo/" ) << QString( "http://qt.nokia.com/foo/" );
+ QTest::newRow( "protocol05" ) << QString( "ftp://ftp.qt.nokia.com/foo/index.txt" ) << QString( "ftp://ftp.qt.nokia.com/foo/index.txt" );
+
+ QTest::newRow( "local00" ) << QString( "/foo" ) << QString( "/foo" );
+ QTest::newRow( "local01" ) << QString( "/foo/" ) << QString( "/foo/" );
+ QTest::newRow( "local02" ) << QString( "/foo/bar" ) << QString( "/foo/bar" );
+ QTest::newRow( "local03" ) << QString( "/foo/bar/" ) << QString( "/foo/bar/" );
+ QTest::newRow( "local04" ) << QString( "foo" ) << QString( "foo" );
+ QTest::newRow( "local05" ) << QString( "foo/" ) << QString( "foo/" );
+ QTest::newRow( "local06" ) << QString( "foo/bar" ) << QString( "foo/bar" );
+ QTest::newRow( "local07" ) << QString( "foo/bar/" ) << QString( "foo/bar/" );
+ QTest::newRow( "local09" ) << QString( "" ) << QString( "" );
+
+ QTest::newRow( "file00" ) << QString( "file:/foo" ) << QString( "file:///foo" );
+ QTest::newRow( "file01" ) << QString( "file:/foo/" ) << QString( "file:///foo/" );
+ QTest::newRow( "file02" ) << QString( "file:/foo/bar" ) << QString( "file:///foo/bar" );
+ QTest::newRow( "file03" ) << QString( "file:/foo/bar/" ) << QString( "file:///foo/bar/" );
+ QTest::newRow( "relProtocol00" ) << QString( "foo:bar" ) << QString( "foo:bar" );
+ QTest::newRow( "relProtocol01" ) << QString( "foo:/bar" ) << QString( "foo:/bar" );
+
+ QTest::newRow( "windowsDrive00" ) << QString( "c:/" ) << QString( "c:/" );
+ QTest::newRow( "windowsDrive01" ) << QString( "c:" ) << QString( "c:" );
+ QTest::newRow( "windowsDrive02" ) << QString( "c:/WinNT/" ) << QString( "c:/WinNT/" );
+ QTest::newRow( "windowsDrive03" ) << QString( "c:/autoexec.bat" ) << QString( "c:/autoexec.bat" );
+ QTest::newRow( "windowsDrive04" ) << QString( "c:WinNT/" ) << QString( "c:WinNT/" );
+ QTest::newRow( "windowsDrive05" ) << QString( "c:autoexec.bat" ) << QString( "c:autoexec.bat" );
+
+ QTest::newRow("task31280") << QString("protocol://host") << QString("protocol://host");
+}
+
+void tst_QUrl::compat_constructor_03()
+{
+ QFETCH( QString, urlStr );
+
+ QUrl u( urlStr );
+ QTEST( u.toString(), "res" );
+}
+
+void tst_QUrl::compat_isValid_01_data()
+{
+ QTest::addColumn<QString>("urlStr");
+ QTest::addColumn<bool>("res");
+
+ QTest::newRow( "ok_01" ) << QString("ftp://ftp.qt.nokia.com/qt/INSTALL") << (bool)true;
+ QTest::newRow( "ok_02" ) << QString( "file:/foo") << (bool)true;
+ QTest::newRow( "ok_03" ) << QString( "file:foo") << (bool)true;
+
+ QTest::newRow( "err_01" ) << QString("#ftp://ftp.qt.nokia.com/qt/INSTALL") << (bool)true;
+ QTest::newRow( "err_02" ) << QString( "file:/::foo") << (bool)true;
+}
+
+void tst_QUrl::compat_isValid_01()
+{
+ QFETCH( QString, urlStr );
+ QFETCH( bool, res );
+
+ QUrl url( urlStr );
+ QVERIFY( url.isValid() == res );
+}
+
+void tst_QUrl::compat_isValid_02_data()
+{
+ QTest::addColumn<QString>("protocol");
+ QTest::addColumn<QString>("user");
+ QTest::addColumn<QString>("password");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<int>("port");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<bool>("res");
+
+ QString n = "";
+
+ QTest::newRow( "ok_01" ) << n << n << n << n << -1 << QString("path") << (bool)true;
+ QTest::newRow( "ok_02" ) << QString("ftp") << n << n << QString("ftp.qt.nokia.com") << -1 << n << (bool)true;
+ QTest::newRow( "ok_03" ) << QString("ftp") << QString("foo") << n << QString("ftp.qt.nokia.com") << -1 << n << (bool)true;
+ QTest::newRow( "ok_04" ) << QString("ftp") << QString("foo") << QString("bar") << QString("ftp.qt.nokia.com") << -1 << n << (bool)true;
+ QTest::newRow( "ok_05" ) << QString("ftp") << n << n << QString("ftp.qt.nokia.com") << -1 << QString("path")<< (bool)true;
+ QTest::newRow( "ok_06" ) << QString("ftp") << QString("foo") << n << QString("ftp.qt.nokia.com") << -1 << QString("path") << (bool)true;
+ QTest::newRow( "ok_07" ) << QString("ftp") << QString("foo") << QString("bar") << QString("ftp.qt.nokia.com") << -1 << QString("path")<< (bool)true;
+
+ QTest::newRow( "err_01" ) << n << n << n << n << -1 << n << (bool)false;
+ QTest::newRow( "err_02" ) << QString("ftp") << n << n << n << -1 << n << (bool)true;
+ QTest::newRow( "err_03" ) << n << QString("foo") << n << n << -1 << n << (bool)true;
+ QTest::newRow( "err_04" ) << n << n << QString("bar") << n << -1 << n << (bool)true;
+ QTest::newRow( "err_05" ) << n << n << n << QString("ftp.qt.nokia.com") << -1 << n << (bool)true;
+ QTest::newRow( "err_06" ) << n << n << n << n << 80 << n << (bool)true;
+ QTest::newRow( "err_07" ) << QString("ftp") << QString("foo") << n << n << -1 << n << (bool)true;
+ QTest::newRow( "err_08" ) << QString("ftp") << n << QString("bar") << n << -1 << n << (bool)true;
+ QTest::newRow( "err_09" ) << QString("ftp") << QString("foo") << QString("bar") << n << -1 << n << (bool)true;
+}
+
+void tst_QUrl::compat_isValid_02()
+{
+ QFETCH( QString, protocol );
+ QFETCH( QString, user );
+ QFETCH( QString, password );
+ QFETCH( QString, host );
+ QFETCH( int, port );
+ QFETCH( QString, path );
+ QFETCH( bool, res );
+
+ QUrl url;
+ if ( !protocol.isEmpty() )
+ url.setScheme( protocol );
+ if ( !user.isEmpty() )
+ url.setUserName( user );
+ if ( !password.isEmpty() )
+ url.setPassword( password );
+ if ( !host.isEmpty() )
+ url.setHost( host );
+ if ( port != -1 )
+ url.setPort( port );
+ if ( !path.isEmpty() )
+ url.setPath( path );
+
+ QVERIFY( url.isValid() == res );
+}
+
+void tst_QUrl::compat_path_data()
+{
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<QString>("res");
+
+ QTest::newRow( "protocol00" ) << "http://qt.nokia.com/images/ban/pgs_front.jpg" << "/images/ban/pgs_front.jpg";
+
+#if defined( Q_OS_WIN32 )
+ QTest::newRow( "winShare00" ) << "//Anarki/homes" << "/homes";
+#endif
+}
+
+void tst_QUrl::compat_path()
+{
+ QFETCH( QString, url );
+
+ QUrl u( url );
+ QTEST( u.path(), "res" );
+}
+
+void tst_QUrl::compat_fileName_data()
+{
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<QString>("fileName");
+
+#ifdef Q_OS_WIN32
+ QTest::newRow( "Windows - DrivePathFileName - \\" ) << QString("c:\\windows\\tmp\\filename.txt")<< QString("filename.txt");
+ QTest::newRow( "Windows - DrivePathFileName - /" ) << QString("c:/windows/tmp/filename.txt") << QString("filename.txt");
+ QTest::newRow( "Windows - DrivePathWithSlash - \\" ) << QString("c:\\windows\\tmp\\") << QString();
+ QTest::newRow( "Windows - DrivePathWithSlash - /" ) << QString("c:/windows/tmp/") << QString();
+ QTest::newRow( "Windows - DrivePathWithoutSlash - \\" ) << QString("c:/windows/tmp") << QString("tmp");
+ QTest::newRow( "Windows - DrivePathWithoutSlash - /" ) << QString("c:/windows/tmp") << QString("tmp");
+#endif
+ QTest::newRow( "Path00" ) << QString("/") << QString();
+ QTest::newRow( "Path01" ) << QString("/home/dev/test/") << QString();
+ QTest::newRow( "PathFileName00" ) << QString("/home/dev/test") << QString("test");
+}
+
+void tst_QUrl::compat_fileName()
+{
+ QFETCH( QString, url );
+ QFETCH( QString, fileName );
+ QUrl fileUrl = QUrl::fromLocalFile(url);
+ QFileInfo fi(fileUrl.toLocalFile());
+ QCOMPARE( fi.fileName(), fileName );
+}
+
+void tst_QUrl::compat_decode_data()
+{
+ QTest::addColumn<QByteArray>("encodedString");
+ QTest::addColumn<QString>("decodedString");
+
+ QTest::newRow("NormalString") << QByteArray("filename") << QString("filename");
+ QTest::newRow("NormalStringEncoded") << QByteArray("file%20name") << QString("file name");
+ QTest::newRow("JustEncoded") << QByteArray("%20") << QString(" ");
+ QTest::newRow("HTTPUrl") << QByteArray("http://qt.nokia.com") << QString("http://qt.nokia.com");
+ QTest::newRow("HTTPUrlEncoded") << QByteArray("http://qt%20nokia%20com") << QString("http://qt nokia com");
+ QTest::newRow("EmptyString") << QByteArray("") << QString("");
+ QTest::newRow("Task27166") << QByteArray("Fran%C3%A7aise") << QString("Française");
+}
+
+void tst_QUrl::compat_decode()
+{
+ QFETCH(QByteArray, encodedString);
+ QFETCH(QString, decodedString);
+
+ QCOMPARE(QUrl::fromPercentEncoding(encodedString), decodedString);
+}
+
+void tst_QUrl::compat_encode_data()
+{
+ QTest::addColumn<QString>("decodedString");
+ QTest::addColumn<QByteArray>("encodedString");
+
+ QTest::newRow("NormalString") << QString("filename") << QByteArray("filename");
+ QTest::newRow("NormalStringEncoded") << QString("file name") << QByteArray("file%20name");
+ QTest::newRow("JustEncoded") << QString(" ") << QByteArray("%20");
+ QTest::newRow("HTTPUrl") << QString("http://qt.nokia.com") << QByteArray("http%3A//qt.nokia.com");
+ QTest::newRow("HTTPUrlEncoded") << QString("http://qt nokia com") << QByteArray("http%3A//qt%20nokia%20com");
+ QTest::newRow("EmptyString") << QString("") << QByteArray("");
+ QTest::newRow("Task27166") << QString::fromLatin1("Française") << QByteArray("Fran%C3%A7aise");
+}
+
+void tst_QUrl::compat_encode()
+{
+ QFETCH(QString, decodedString);
+ QFETCH(QByteArray, encodedString);
+
+ QCOMPARE(QUrl::toPercentEncoding(decodedString, "/.").constData(), encodedString.constData());
+}
+
+
+void tst_QUrl::relative()
+{
+ QUrl url("../ole");
+ QCOMPARE(url.path(), QString::fromLatin1("../ole"));
+
+ QUrl url2("./");
+ QCOMPARE(url2.path(), QString::fromLatin1("./"));
+
+ QUrl url3("..");
+ QCOMPARE(url3.path(), QString::fromLatin1(".."));
+
+ QUrl url4("../..");
+ QCOMPARE(url4.path(), QString::fromLatin1("../.."));
+}
+
+void tst_QUrl::percentEncoding_data()
+{
+ QTest::addColumn<QString>("original");
+ QTest::addColumn<QByteArray>("encoded");
+
+ QTest::newRow("test_01") << QString::fromLatin1("sdfsdf") << QByteArray("sdfsdf");
+ QTest::newRow("test_02") << QString::fromLatin1("æss") << QByteArray("%C3%A6ss");
+ // not unreserved or reserved
+ QTest::newRow("test_03") << QString::fromLatin1("{}") << QByteArray("%7B%7D");
+}
+
+void tst_QUrl::percentEncoding()
+{
+ QFETCH(QString, original);
+ QFETCH(QByteArray, encoded);
+
+ QCOMPARE(QUrl(original).toEncoded().constData(), encoded.constData());
+ QVERIFY(QUrl::fromEncoded(QUrl(original).toEncoded()) == QUrl(original));
+ QCOMPARE(QUrl::fromEncoded(QUrl(original).toEncoded()).toString(), original);
+ QVERIFY(QUrl::fromEncoded(encoded) == QUrl(original));
+}
+
+void tst_QUrl::toPercentEncoding_data()
+{
+ QTest::addColumn<QString>("original");
+ QTest::addColumn<QByteArray>("encoded");
+ QTest::addColumn<QByteArray>("excludeInEncoding");
+ QTest::addColumn<QByteArray>("includeInEncoding");
+
+ QTest::newRow("test_01") << QString::fromLatin1("abcdevghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678-._~")
+ << QByteArray("abcdevghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678-._~")
+ << QByteArray("")
+ << QByteArray("");
+ QTest::newRow("test_02") << QString::fromLatin1("{\t\n\r^\"abc}")
+ << QByteArray("%7B%09%0A%0D%5E%22abc%7D")
+ << QByteArray("")
+ << QByteArray("");
+ QTest::newRow("test_03") << QString::fromLatin1("://?#[]@!$&'()*+,;=")
+ << QByteArray("%3A%2F%2F%3F%23%5B%5D%40%21%24%26%27%28%29%2A%2B%2C%3B%3D")
+ << QByteArray("")
+ << QByteArray("");
+ QTest::newRow("test_04") << QString::fromLatin1("://?#[]@!$&'()*+,;=")
+ << QByteArray("%3A%2F%2F%3F%23%5B%5D%40!$&'()*+,;=")
+ << QByteArray("!$&'()*+,;=")
+ << QByteArray("");
+ QTest::newRow("test_05") << QString::fromLatin1("abcd")
+ << QByteArray("a%62%63d")
+ << QByteArray("")
+ << QByteArray("bc");
+}
+
+void tst_QUrl::toPercentEncoding()
+{
+ QFETCH(QString, original);
+ QFETCH(QByteArray, encoded);
+ QFETCH(QByteArray, excludeInEncoding);
+ QFETCH(QByteArray, includeInEncoding);
+
+ QByteArray encodedUrl = QUrl::toPercentEncoding(original, excludeInEncoding, includeInEncoding);
+ QCOMPARE(encodedUrl.constData(), encoded.constData());
+ QCOMPARE(original, QUrl::fromPercentEncoding(encodedUrl));
+}
+
+void tst_QUrl::swap()
+{
+ QUrl u1(QLatin1String("http://qt.nokia.com")), u2(QLatin1String("http://www.kdab.com"));
+ u1.swap(u2);
+ QCOMPARE(u2.host(),QLatin1String("qt.nokia.com"));
+ QCOMPARE(u1.host(),QLatin1String("www.kdab.com"));
+}
+
+void tst_QUrl::symmetry()
+{
+ QUrl url(QString::fromLatin1("http://www.räksmörgås.se/pub?a=b&a=dø&a=f#vræl"));
+ QCOMPARE(url.scheme(), QString::fromLatin1("http"));
+ QCOMPARE(url.host(), QString::fromLatin1("www.räksmörgås.se"));
+ QCOMPARE(url.path(), QString::fromLatin1("/pub"));
+ // this will be encoded ...
+ QCOMPARE(url.encodedQuery().constData(), QString::fromLatin1("a=b&a=d%C3%B8&a=f").toLatin1().constData());
+ // unencoded
+ QCOMPARE(url.allQueryItemValues("a").join("").toLatin1().constData(), "bdøf");
+ QCOMPARE(url.fragment(), QString::fromLatin1("vræl"));
+
+ QUrl onlyHost("//qt.nokia.com");
+ QCOMPARE(onlyHost.toString(), QString::fromLatin1("//qt.nokia.com"));
+
+ {
+ QString urlString = QString::fromLatin1("http://desktop:33326/upnp/{32f525a6-6f31-426e-91ca-01c2e6c2c57e}");
+ QUrl urlPreviewList(urlString);
+ QCOMPARE(urlPreviewList.toString(), urlString);
+ QByteArray b = urlPreviewList.toEncoded();
+ QCOMPARE(b.constData(), "http://desktop:33326/upnp/%7B32f525a6-6f31-426e-91ca-01c2e6c2c57e%7D");
+ QCOMPARE(QUrl::fromEncoded(b).toString(), urlString);
+
+ }{
+ QString urlString = QString::fromLatin1("http://desktop:53423/deviceDescription?uuid={7977c17b-00bf-4af9-894e-fed28573c3a9}");
+ QUrl urlPreviewList(urlString);
+ QCOMPARE(urlPreviewList.toString(), urlString);
+ QByteArray b = urlPreviewList.toEncoded();
+ QCOMPARE(b.constData(), "http://desktop:53423/deviceDescription?uuid=%7B7977c17b-00bf-4af9-894e-fed28573c3a9%7D");
+ QCOMPARE(QUrl::fromEncoded(b).toString(), urlString);
+ }
+}
+
+
+void tst_QUrl::ipv6_data()
+{
+ QTest::addColumn<QString>("ipv6Auth");
+ QTest::addColumn<bool>("isValid");
+
+ QTest::newRow("case 1") << QString::fromLatin1("//[56:56:56:56:56:56:56:56]") << true;
+ QTest::newRow("case 2") << QString::fromLatin1("//[::56:56:56:56:56:56:56]") << true;
+ QTest::newRow("case 3") << QString::fromLatin1("//[56::56:56:56:56:56:56]") << true;
+ QTest::newRow("case 4") << QString::fromLatin1("//[56:56::56:56:56:56:56]") << true;
+ QTest::newRow("case 5") << QString::fromLatin1("//[56:56:56::56:56:56:56]") << true;
+ QTest::newRow("case 6") << QString::fromLatin1("//[56:56:56:56::56:56:56]") << true;
+ QTest::newRow("case 7") << QString::fromLatin1("//[56:56:56:56:56::56:56]") << true;
+ QTest::newRow("case 8") << QString::fromLatin1("//[56:56:56:56:56:56::56]") << true;
+ QTest::newRow("case 9") << QString::fromLatin1("//[56:56:56:56:56:56:56::]") << true;
+ QTest::newRow("case 4 with one less") << QString::fromLatin1("//[56::56:56:56:56:56]") << true;
+ QTest::newRow("case 4 with less and ip4") << QString::fromLatin1("//[56::56:56:56:127.0.0.1]") << true;
+ QTest::newRow("case 7 with one and ip4") << QString::fromLatin1("//[56::255.0.0.0]") << true;
+ QTest::newRow("case 2 with ip4") << QString::fromLatin1("//[::56:56:56:56:56:0.0.0.255]") << true;
+ QTest::newRow("case 2 with half ip4") << QString::fromLatin1("//[::56:56:56:56:56:56:0.255]") << false;
+ QTest::newRow("case 4 with less and ip4 and port and useinfo") << QString::fromLatin1("//user:pass@[56::56:56:56:127.0.0.1]:99") << true;
+ QTest::newRow("case :,") << QString::fromLatin1("//[:,]") << false;
+ QTest::newRow("case ::bla") << QString::fromLatin1("//[::bla]") << false;
+}
+
+void tst_QUrl::ipv6()
+{
+ QFETCH(QString, ipv6Auth);
+ QFETCH(bool, isValid);
+
+ QUrl url(ipv6Auth);
+
+ QCOMPARE(url.isValid(), isValid);
+ if (url.isValid()) {
+ QCOMPARE(url.toString(), ipv6Auth);
+ url.setHost(url.host());
+ QCOMPARE(url.toString(), ipv6Auth);
+ }
+};
+
+void tst_QUrl::ipv6_2_data()
+{
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<QString>("output");
+
+ QTest::newRow("[::ffff:129.144.52.38]")
+ << QString("http://[::ffff:129.144.52.38]/cgi/test.cgi")
+ << QString("http://[::ffff:129.144.52.38]/cgi/test.cgi");
+ QTest::newRow("[::FFFF:129.144.52.38]")
+ << QString("http://[::FFFF:129.144.52.38]/cgi/test.cgi")
+ << QString("http://[::ffff:129.144.52.38]/cgi/test.cgi");
+}
+
+void tst_QUrl::ipv6_2()
+{
+ QFETCH(QString, input);
+ QFETCH(QString, output);
+
+ QUrl url(input);
+ QCOMPARE(url.toString(), output);
+ url.setHost(url.host());
+ QCOMPARE(url.toString(), output);
+}
+
+void tst_QUrl::moreIpv6()
+{
+ QUrl waba1("http://www.kde.org/cgi/test.cgi");
+ waba1.setHost("::ffff:129.144.52.38");
+ QCOMPARE(QString::fromLatin1(waba1.toEncoded()), QString::fromLatin1("http://[::ffff:129.144.52.38]/cgi/test.cgi"));
+}
+
+void tst_QUrl::punycode_data()
+{
+ QTest::addColumn<QString>("original");
+ QTest::addColumn<QByteArray>("encoded");
+
+ QTest::newRow("øl") << QString::fromLatin1("øl") << QByteArray("xn--l-4ga");
+ QTest::newRow("Bühler") << QString::fromLatin1("Bühler") << QByteArray("xn--Bhler-kva");
+ QTest::newRow("räksmörgås") << QString::fromLatin1("räksmörgås") << QByteArray("xn--rksmrgs-5wao1o");
+}
+
+void tst_QUrl::punycode()
+{
+ QFETCH(QString, original);
+ QFETCH(QByteArray, encoded);
+
+ QCOMPARE(QUrl::fromPunycode(encoded), original);
+ QCOMPARE(QUrl::fromPunycode(QUrl::toPunycode(original)), original);
+ QCOMPARE(QUrl::toPunycode(original).constData(), encoded.constData());
+}
+
+void tst_QUrl::isRelative_data()
+{
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<bool>("trueFalse");
+
+ QTest::newRow("not") << QString::fromLatin1("http://qt.nokia.com") << false;
+ QTest::newRow("55288") << QString::fromLatin1("node64.html#fig:form:ana") << true;
+
+ // kde
+ QTest::newRow("mailto: URL, is relative") << "mailto:faure@kde.org" << false;
+ QTest::newRow("man: URL, is relative") << "man:mmap" << false;
+ QTest::newRow("javascript: URL, is relative") << "javascript:doSomething()" << false;
+ QTest::newRow("file: URL, is relative") << "file:/blah" << false;
+ QTest::newRow("/path, is relative") << "/path" << true;
+ QTest::newRow("something, is relative") << "something" << true;
+ // end kde
+}
+
+void tst_QUrl::isRelative()
+{
+ QFETCH(QString, url);
+ QFETCH(bool, trueFalse);
+
+ QCOMPARE(QUrl(url).isRelative(), trueFalse);
+}
+
+void tst_QUrl::queryItems()
+{
+ QUrl url;
+ QVERIFY(!url.hasQuery());
+
+ QList<QPair<QString, QString> > newItems;
+ newItems += qMakePair(QString("2"), QString("b"));
+ newItems += qMakePair(QString("1"), QString("a"));
+ newItems += qMakePair(QString("3"), QString("c"));
+ newItems += qMakePair(QString("4"), QString("a b"));
+ newItems += qMakePair(QString("5"), QString("&"));
+ newItems += qMakePair(QString("foo bar"), QString("hello world"));
+ newItems += qMakePair(QString("foo+bar"), QString("hello+world"));
+ newItems += qMakePair(QString("tex"), QString("a + b = c"));
+ url.setQueryItems(newItems);
+ QVERIFY(url.hasQuery());
+
+ QList<QPair<QString, QString> > setItems = url.queryItems();
+ QVERIFY(newItems == setItems);
+
+ url.addQueryItem("1", "z");
+
+ QVERIFY(url.hasQueryItem("1"));
+ QCOMPARE(url.queryItemValue("1").toLatin1().constData(), "a");
+
+ url.addQueryItem("1", "zz");
+
+ QStringList expected;
+ expected += "a";
+ expected += "z";
+ expected += "zz";
+ QCOMPARE(expected, url.allQueryItemValues("1"));
+
+ url.removeQueryItem("1");
+ QCOMPARE(url.allQueryItemValues("1").size(), 2);
+ QCOMPARE(url.queryItemValue("1").toLatin1().constData(), "z");
+
+ url.removeAllQueryItems("1");
+ QVERIFY(!url.hasQueryItem("1"));
+
+ QCOMPARE(url.queryItemValue("4").toLatin1().constData(), "a b");
+ QCOMPARE(url.queryItemValue("5").toLatin1().constData(), "&");
+ QCOMPARE(url.queryItemValue("tex").toLatin1().constData(), "a + b = c");
+ QCOMPARE(url.queryItemValue("foo bar").toLatin1().constData(), "hello world");
+ url.setUrl("http://www.google.com/search?q=a+b");
+ QCOMPARE(url.queryItemValue("q"), QString("a+b"));
+ url.setUrl("http://www.google.com/search?q=a=b"); // invalid, but should be tolerated
+ QCOMPARE(url.queryItemValue("q"), QString("a=b"));
+}
+
+void tst_QUrl::hasQuery_data()
+{
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<bool>("trueFalse");
+
+ QTest::newRow("no query items") << "http://www.foo.bar" << false;
+
+ QTest::newRow("empty query") << "http://www.foo.bar?" << true;
+ QTest::newRow("empty query 2") << "http://www.foo.bar/?" << true;
+
+ QTest::newRow("query") << "http://www.foo.bar?query" << true;
+ QTest::newRow("query=") << "http://www.foo.bar?query=" << true;
+ QTest::newRow("query=value") << "http://www.foo.bar?query=value" << true;
+
+ QTest::newRow("%3f") << "http://www.foo.bar/file%3f" << false;
+ QTest::newRow("%3f-query") << "http://www.foo.bar/file%3fquery" << false;
+ QTest::newRow("%3f-query=value") << "http://www.foo.bar/file%3fquery=value" << false;
+}
+
+void tst_QUrl::hasQuery()
+{
+ QFETCH(QString, url);
+ QFETCH(bool, trueFalse);
+
+ QUrl qurl(url);
+ QCOMPARE(qurl.hasQuery(), trueFalse);
+ QCOMPARE(qurl.encodedQuery().isNull(), !trueFalse);
+}
+
+void tst_QUrl::hasQueryItem_data()
+{
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<QString>("item");
+ QTest::addColumn<bool>("trueFalse");
+
+ QTest::newRow("no query items") << "http://www.foo.bar" << "baz" << false;
+ QTest::newRow("query item: hello") << "http://www.foo.bar?hello=world" << "hello" << true;
+ QTest::newRow("no query item: world") << "http://www.foo.bar?hello=world" << "world" << false;
+ QTest::newRow("query item: qt") << "http://www.foo.bar?hello=world&qt=rocks" << "qt" << true;
+}
+
+void tst_QUrl::hasQueryItem()
+{
+ QFETCH(QString, url);
+ QFETCH(QString, item);
+ QFETCH(bool, trueFalse);
+
+ QCOMPARE(QUrl(url).hasQueryItem(item), trueFalse);
+}
+
+void tst_QUrl::nameprep()
+{
+ QUrl url(QString::fromUtf8("http://www.fu""\xc3""\x9f""ball.de/"));
+ QCOMPARE(url.toString(), QString::fromLatin1("http://www.fussball.de/"));
+}
+
+void tst_QUrl::isValid()
+{
+ {
+ QUrl url(QString("A=B"));
+ QVERIFY(url.isValid());
+ QCOMPARE(url.path(), QString("A=B"));
+ }
+ {
+ QUrl url = QUrl::fromEncoded("http://strange<username>@ok-hostname/", QUrl::StrictMode);
+ QVERIFY(!url.isValid());
+ // < and > are not allowed in userinfo in strict mode
+ url.setUserName("normal_username");
+ QVERIFY(url.isValid());
+ }
+ {
+ QUrl url = QUrl::fromEncoded("http://strange<username>@ok-hostname/");
+ QVERIFY(url.isValid());
+ // < and > are allowed in tolerant mode
+ }
+ {
+ QUrl url = QUrl::fromEncoded("http://strange;hostname/here");
+ QVERIFY(!url.isValid());
+ QCOMPARE(url.path(), QString("/here"));
+ url.setAuthority("strange;hostname");
+ QVERIFY(!url.isValid());
+ url.setAuthority("foobar@bar");
+ QVERIFY(url.isValid());
+ url.setAuthority("strange;hostname");
+ QVERIFY(!url.isValid());
+ QVERIFY(url.errorString().contains("invalid hostname"));
+ }
+
+ {
+ QUrl url = QUrl::fromEncoded("foo://stuff;1/g");
+ QVERIFY(!url.isValid());
+ QCOMPARE(url.path(), QString("/g"));
+ url.setHost("stuff;1");
+ QVERIFY(!url.isValid());
+ url.setHost("stuff-1");
+ QVERIFY(url.isValid());
+ url.setHost("stuff;1");
+ QVERIFY(!url.isValid());
+ QVERIFY(url.errorString().contains("invalid hostname"));
+ }
+
+}
+
+void tst_QUrl::schemeValidator_data()
+{
+ QTest::addColumn<QByteArray>("encodedUrl");
+ QTest::addColumn<bool>("result");
+ QTest::addColumn<QString>("toString");
+
+ QTest::newRow("empty") << QByteArray() << false << QString();
+
+ // ftp
+ QTest::newRow("ftp:") << QByteArray("ftp:") << true << QString("ftp:");
+ QTest::newRow("ftp://ftp.qt.nokia.com")
+ << QByteArray("ftp://ftp.qt.nokia.com")
+ << true << QString("ftp://ftp.qt.nokia.com");
+ QTest::newRow("ftp://ftp.qt.nokia.com/")
+ << QByteArray("ftp://ftp.qt.nokia.com/")
+ << true << QString("ftp://ftp.qt.nokia.com/");
+ QTest::newRow("ftp:/index.html")
+ << QByteArray("ftp:/index.html")
+ << false << QString();
+
+ // mailto
+ QTest::newRow("mailto:") << QByteArray("mailto:") << true << QString("mailto:");
+ QTest::newRow("mailto://smtp.trolltech.com/ole@bull.name")
+ << QByteArray("mailto://smtp.trolltech.com/ole@bull.name") << false << QString();
+ QTest::newRow("mailto:") << QByteArray("mailto:") << true << QString("mailto:");
+ QTest::newRow("mailto:ole@bull.name")
+ << QByteArray("mailto:ole@bull.name") << true << QString("mailto:ole@bull.name");
+
+ // file
+ QTest::newRow("file:") << QByteArray("file:/etc/passwd") << true << QString("file:///etc/passwd");
+}
+
+void tst_QUrl::schemeValidator()
+{
+ QFETCH(QByteArray, encodedUrl);
+ QFETCH(bool, result);
+ QFETCH(QString, toString);
+
+ QUrl url = QUrl::fromEncoded(encodedUrl);
+ QCOMPARE(url.isValid(), result);
+}
+
+void tst_QUrl::invalidSchemeValidator()
+{
+ // test that if scheme does not start with an ALPHA, QUrl::isValid() returns false
+ {
+ QUrl url("1http://qt.nokia.com", QUrl::StrictMode);
+ QCOMPARE(url.isValid(), false);
+ }
+ {
+ QUrl url("http://qt.nokia.com");
+ url.setScheme("111http://qt.nokia.com");
+ QCOMPARE(url.isValid(), false);
+ }
+ {
+ QUrl url = QUrl::fromEncoded("1http://qt.nokia.com", QUrl::StrictMode);
+ QCOMPARE(url.isValid(), false);
+ }
+
+ // non-ALPHA character at other positions in the scheme are ok
+ {
+ QUrl url("ht111tp://qt.nokia.com", QUrl::StrictMode);
+ QVERIFY(url.isValid());
+ }
+ {
+ QUrl url("http://qt.nokia.com");
+ url.setScheme("ht123tp://qt.nokia.com");
+ QVERIFY(url.isValid());
+ }
+ {
+ QUrl url = QUrl::fromEncoded("ht321tp://qt.nokia.com", QUrl::StrictMode);
+ QVERIFY(url.isValid());
+ }
+}
+
+void tst_QUrl::tolerantParser()
+{
+ {
+ QUrl url("http://www.example.com/path%20with spaces.html");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.path(), QString("/path with spaces.html"));
+ QCOMPARE(url.toEncoded(), QByteArray("http://www.example.com/path%20with%20spaces.html"));
+ url.setUrl("http://www.example.com/path%20with spaces.html", QUrl::StrictMode);
+ QVERIFY(url.isValid());
+ QCOMPARE(url.toEncoded(), QByteArray("http://www.example.com/path%2520with%20spaces.html"));
+ }
+ {
+ QUrl url = QUrl::fromEncoded("http://www.example.com/path%20with spaces.html");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.path(), QString("/path with spaces.html"));
+ url.setEncodedUrl("http://www.example.com/path%20with spaces.html", QUrl::StrictMode);
+ QVERIFY(!url.isValid());
+ }
+
+ {
+ QUrl url15581("http://alain.knaff.linux.lu/bug-reports/kde/percentage%in%url.htm>");
+ QVERIFY(url15581.isValid());
+ QCOMPARE(url15581.toEncoded().constData(), "http://alain.knaff.linux.lu/bug-reports/kde/percentage%25in%25url.htm%3E");
+ }
+
+ {
+ QUrl webkit22616 =
+ QUrl::fromEncoded("http://example.com/testya.php?browser-info=s:1400x1050x24:f:9.0%20r152:t:%u0442%u0435%u0441%u0442");
+ QVERIFY(webkit22616.isValid());
+ QCOMPARE(webkit22616.toEncoded().constData(),
+ "http://example.com/testya.php?browser-info=s:1400x1050x24:f:9.0%20r152:t:%25u0442%25u0435%25u0441%25u0442");
+ }
+
+ {
+ QUrl url;
+ url.setUrl("http://foo.bar/[image][1].jpg");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.toEncoded(), QByteArray("http://foo.bar/%5Bimage%5D%5B1%5D.jpg"));
+
+ url.setUrl("[].jpg");
+ QCOMPARE(url.toEncoded(), QByteArray("%5B%5D.jpg"));
+
+ url.setUrl("/some/[path]/[]");
+ QCOMPARE(url.toEncoded(), QByteArray("/some/%5Bpath%5D/%5B%5D"));
+
+ url.setUrl("//[::56:56:56:56:56:56:56]");
+ QCOMPARE(url.toEncoded(), QByteArray("//[::56:56:56:56:56:56:56]"));
+
+ url.setUrl("//[::56:56:56:56:56:56:56]#[]");
+ QCOMPARE(url.toEncoded(), QByteArray("//[::56:56:56:56:56:56:56]#%5B%5D"));
+
+ url.setUrl("//[::56:56:56:56:56:56:56]?[]");
+ QCOMPARE(url.toEncoded(), QByteArray("//[::56:56:56:56:56:56:56]?%5B%5D"));
+
+ url.setUrl("%hello.com/f%");
+ QCOMPARE(url.toEncoded(), QByteArray("%25hello.com/f%25"));
+
+ url.setEncodedUrl("http://www.host.com/foo.php?P0=[2006-3-8]");
+ QVERIFY(url.isValid());
+
+ url.setEncodedUrl("http://foo.bar/[image][1].jpg");
+ QVERIFY(url.isValid());
+ QCOMPARE(url.toEncoded(), QByteArray("http://foo.bar/%5Bimage%5D%5B1%5D.jpg"));
+
+ url.setEncodedUrl("[].jpg");
+ QCOMPARE(url.toEncoded(), QByteArray("%5B%5D.jpg"));
+
+ url.setEncodedUrl("/some/[path]/[]");
+ QCOMPARE(url.toEncoded(), QByteArray("/some/%5Bpath%5D/%5B%5D"));
+
+ url.setEncodedUrl("//[::56:56:56:56:56:56:56]");
+ QCOMPARE(url.toEncoded(), QByteArray("//[::56:56:56:56:56:56:56]"));
+
+ url.setEncodedUrl("//[::56:56:56:56:56:56:56]#[]");
+ QCOMPARE(url.toEncoded(), QByteArray("//[::56:56:56:56:56:56:56]#%5B%5D"));
+
+ url.setEncodedUrl("//[::56:56:56:56:56:56:56]?[]");
+ QCOMPARE(url.toEncoded(), QByteArray("//[::56:56:56:56:56:56:56]?%5B%5D"));
+
+ url.setEncodedUrl("data:text/css,div%20{%20border-right:%20solid;%20}");
+ QCOMPARE(url.toEncoded(), QByteArray("data:text/css,div%20%7B%20border-right:%20solid;%20%7D"));
+ }
+
+ {
+ // task 243557
+ QByteArray tsdgeos("http://google.com/c?c=Translation+%C2%BB+trunk|");
+ QUrl tsdgeosQUrl;
+ tsdgeosQUrl.setEncodedUrl(tsdgeos, QUrl::TolerantMode);
+ QVERIFY(tsdgeosQUrl.isValid()); // failed in Qt-4.4, works in Qt-4.5
+ QByteArray tsdgeosExpected("http://google.com/c?c=Translation+%C2%BB+trunk%7C");
+ //QCOMPARE(tsdgeosQUrl.toEncoded(), tsdgeosExpected); // unusable output from qtestlib...
+ QCOMPARE(QString(tsdgeosQUrl.toEncoded()), QString(tsdgeosExpected));
+ }
+
+ {
+ QUrl url;
+ url.setUrl("http://strange<username>@hostname/", QUrl::TolerantMode);
+ QVERIFY(url.isValid());
+ QCOMPARE(QString(url.toEncoded()), QString("http://strange%3Cusername%3E@hostname/"));
+ }
+}
+
+void tst_QUrl::correctEncodedMistakes_data()
+{
+ QTest::addColumn<QByteArray>("encodedUrl");
+ QTest::addColumn<bool>("result");
+ QTest::addColumn<QString>("toString");
+ QTest::addColumn<QByteArray>("toEncoded");
+
+ QTest::newRow("%") << QByteArray("%") << true << QString("%") << QByteArray("%25");
+ QTest::newRow("3%") << QByteArray("3%") << true << QString("3%") << QByteArray("3%25");
+ QTest::newRow("13%") << QByteArray("13%") << true << QString("13%") << QByteArray("13%25");
+ QTest::newRow("13%!") << QByteArray("13%!") << true << QString("13%!") << QByteArray("13%25!");
+ QTest::newRow("13%!!") << QByteArray("13%!!") << true << QString("13%!!") << QByteArray("13%25!!");
+ QTest::newRow("13%a") << QByteArray("13%a") << true << QString("13%a") << QByteArray("13%25a");
+ QTest::newRow("13%az") << QByteArray("13%az") << true << QString("13%az") << QByteArray("13%25az");
+ QTest::newRow("13%25") << QByteArray("13%25") << true << QString("13%") << QByteArray("13%25");
+}
+
+void tst_QUrl::correctEncodedMistakes()
+{
+ QFETCH(QByteArray, encodedUrl);
+ QFETCH(bool, result);
+ QFETCH(QString, toString);
+ QFETCH(QByteArray, toEncoded);
+
+ QUrl url = QUrl::fromEncoded(encodedUrl);
+ QCOMPARE(url.isValid(), result);
+ if (url.isValid()) {
+ QCOMPARE(url.toString(), toString);
+ QCOMPARE(url.toEncoded(), toEncoded);
+ }
+}
+
+void tst_QUrl::correctDecodedMistakes_data()
+{
+ QTest::addColumn<QString>("decodedUrl");
+ QTest::addColumn<bool>("result");
+ QTest::addColumn<QString>("toString");
+ QTest::addColumn<QByteArray>("toEncoded");
+
+ QTest::newRow("%") << QString("%") << true << QString("%") << QByteArray("%25");
+ QTest::newRow("3%") << QString("3%") << true << QString("3%") << QByteArray("3%25");
+ QTest::newRow("13%") << QString("13%") << true << QString("13%") << QByteArray("13%25");
+ QTest::newRow("13%!") << QString("13%!") << true << QString("13%!") << QByteArray("13%25!");
+ QTest::newRow("13%!!") << QString("13%!!") << true << QString("13%!!") << QByteArray("13%25!!");
+ QTest::newRow("13%a") << QString("13%a") << true << QString("13%a") << QByteArray("13%25a");
+ QTest::newRow("13%az") << QString("13%az") << true << QString("13%az") << QByteArray("13%25az");
+ QTest::newRow("13%25") << QString("13%25") << true << QString("13%25") << QByteArray("13%2525");
+}
+
+void tst_QUrl::correctDecodedMistakes()
+{
+ QFETCH(QString, decodedUrl);
+ QFETCH(bool, result);
+ QFETCH(QString, toString);
+ QFETCH(QByteArray, toEncoded);
+
+ QUrl url(decodedUrl);
+ QCOMPARE(url.isValid(), result);
+ if (url.isValid()) {
+ QCOMPARE(url.toString(), toString);
+ QCOMPARE(url.toEncoded(), toEncoded);
+ }
+}
+
+void tst_QUrl::idna_testsuite_data()
+{
+ QTest::addColumn<int>("numchars");
+ QTest::addColumn<ushortarray>("unicode");
+ QTest::addColumn<QByteArray>("punycode");
+ QTest::addColumn<int>("allowunassigned");
+ QTest::addColumn<int>("usestd3asciirules");
+ QTest::addColumn<int>("toasciirc");
+ QTest::addColumn<int>("tounicoderc");
+
+ unsigned short d1[] = { 0x0644, 0x064A, 0x0647, 0x0645, 0x0627, 0x0628, 0x062A, 0x0643,
+ 0x0644, 0x0645, 0x0648, 0x0634, 0x0639, 0x0631, 0x0628, 0x064A,
+ 0x061F };
+ QTest::newRow("Arabic (Egyptian)") << 17 << ushortarray(d1)
+ << QByteArray(IDNA_ACE_PREFIX "egbpdaj6bu4bxfgehfvwxn")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+
+ unsigned short d2[] = { 0x4ED6, 0x4EEC, 0x4E3A, 0x4EC0, 0x4E48, 0x4E0D, 0x8BF4, 0x4E2D,
+ 0x6587 };
+ QTest::newRow("Chinese (simplified)") << 9 << ushortarray(d2)
+ << QByteArray(IDNA_ACE_PREFIX "ihqwcrb4cv8a8dqg056pqjye")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+
+ unsigned short d3[] = { 0x4ED6, 0x5011, 0x7232, 0x4EC0, 0x9EBD, 0x4E0D, 0x8AAA, 0x4E2D,
+ 0x6587 };
+ QTest::newRow("Chinese (traditional)") << 9 << ushortarray(d3)
+ << QByteArray(IDNA_ACE_PREFIX "ihqwctvzc91f659drss3x8bo0yb")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+
+ unsigned short d4[] = { 0x0050, 0x0072, 0x006F, 0x010D, 0x0070, 0x0072, 0x006F, 0x0073,
+ 0x0074, 0x011B, 0x006E, 0x0065, 0x006D, 0x006C, 0x0075, 0x0076,
+ 0x00ED, 0x010D, 0x0065, 0x0073, 0x006B, 0x0079 };
+ QTest::newRow("Czech") << 22 << ushortarray(d4)
+ << QByteArray(IDNA_ACE_PREFIX "Proprostnemluvesky-uyb24dma41a")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+
+ unsigned short d5[] = { 0x05DC, 0x05DE, 0x05D4, 0x05D4, 0x05DD, 0x05E4, 0x05E9, 0x05D5,
+ 0x05D8, 0x05DC, 0x05D0, 0x05DE, 0x05D3, 0x05D1, 0x05E8, 0x05D9,
+ 0x05DD, 0x05E2, 0x05D1, 0x05E8, 0x05D9, 0x05EA };
+ QTest::newRow("Hebrew") << 22 << ushortarray(d5)
+ << QByteArray(IDNA_ACE_PREFIX "4dbcagdahymbxekheh6e0a7fei0b")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+
+ unsigned short d6[] = { 0x092F, 0x0939, 0x0932, 0x094B, 0x0917, 0x0939, 0x093F, 0x0928,
+ 0x094D, 0x0926, 0x0940, 0x0915, 0x094D, 0x092F, 0x094B, 0x0902,
+ 0x0928, 0x0939, 0x0940, 0x0902, 0x092C, 0x094B, 0x0932, 0x0938,
+ 0x0915, 0x0924, 0x0947, 0x0939, 0x0948, 0x0902 };
+ QTest::newRow("Hindi (Devanagari)") << 30 << ushortarray(d6)
+ << QByteArray(IDNA_ACE_PREFIX "i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd")
+ << 0 << 0 << IDNA_SUCCESS;
+
+ unsigned short d7[] = { 0x306A, 0x305C, 0x307F, 0x3093, 0x306A, 0x65E5, 0x672C, 0x8A9E,
+ 0x3092, 0x8A71, 0x3057, 0x3066, 0x304F, 0x308C, 0x306A, 0x3044,
+ 0x306E, 0x304B };
+ QTest::newRow("Japanese (kanji and hiragana)") << 18 << ushortarray(d7)
+ << QByteArray(IDNA_ACE_PREFIX "n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa")
+ << 0 << 0 << IDNA_SUCCESS;
+
+ unsigned short d8[] = { 0x043F, 0x043E, 0x0447, 0x0435, 0x043C, 0x0443, 0x0436, 0x0435,
+ 0x043E, 0x043D, 0x0438, 0x043D, 0x0435, 0x0433, 0x043E, 0x0432,
+ 0x043E, 0x0440, 0x044F, 0x0442, 0x043F, 0x043E, 0x0440, 0x0443,
+ 0x0441, 0x0441, 0x043A, 0x0438 };
+ QTest::newRow("Russian (Cyrillic)") << 28 << ushortarray(d8)
+ << QByteArray(IDNA_ACE_PREFIX "b1abfaaepdrnnbgefbadotcwatmq2g4l")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+
+ unsigned short d9[] = { 0x0050, 0x006F, 0x0072, 0x0071, 0x0075, 0x00E9, 0x006E, 0x006F,
+ 0x0070, 0x0075, 0x0065, 0x0064, 0x0065, 0x006E, 0x0073, 0x0069,
+ 0x006D, 0x0070, 0x006C, 0x0065, 0x006D, 0x0065, 0x006E, 0x0074,
+ 0x0065, 0x0068, 0x0061, 0x0062, 0x006C, 0x0061, 0x0072, 0x0065,
+ 0x006E, 0x0045, 0x0073, 0x0070, 0x0061, 0x00F1, 0x006F, 0x006C };
+ QTest::newRow("Spanish") << 40 << ushortarray(d9)
+ << QByteArray(IDNA_ACE_PREFIX "PorqunopuedensimplementehablarenEspaol-fmd56a")
+ << 0 << 0 << IDNA_SUCCESS;
+
+ unsigned short d10[] = { 0x0054, 0x1EA1, 0x0069, 0x0073, 0x0061, 0x006F, 0x0068, 0x1ECD,
+ 0x006B, 0x0068, 0x00F4, 0x006E, 0x0067, 0x0074, 0x0068, 0x1EC3,
+ 0x0063, 0x0068, 0x1EC9, 0x006E, 0x00F3, 0x0069, 0x0074, 0x0069,
+ 0x1EBF, 0x006E, 0x0067, 0x0056, 0x0069, 0x1EC7, 0x0074 };
+ QTest::newRow("Vietnamese") << 31 << ushortarray(d10)
+ << QByteArray(IDNA_ACE_PREFIX "TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g")
+ << 0 << 0 << IDNA_SUCCESS;
+
+ unsigned short d11[] = { 0x0033, 0x5E74, 0x0042, 0x7D44, 0x91D1, 0x516B, 0x5148, 0x751F };
+ QTest::newRow("Japanese") << 8 << ushortarray(d11)
+ << QByteArray(IDNA_ACE_PREFIX "3B-ww4c5e180e575a65lsy2b")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+
+ unsigned short d12[] = { 0x5B89, 0x5BA4, 0x5948, 0x7F8E, 0x6075, 0x002D, 0x0077, 0x0069,
+ 0x0074, 0x0068, 0x002D, 0x0053, 0x0055, 0x0050, 0x0045, 0x0052,
+ 0x002D, 0x004D, 0x004F, 0x004E, 0x004B, 0x0045, 0x0059, 0x0053 };
+ QTest::newRow("Japanese2") << 24 << ushortarray(d12)
+ << QByteArray(IDNA_ACE_PREFIX "-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n")
+ << 0 << 0 << IDNA_SUCCESS;
+
+ unsigned short d13[] = { 0x0048, 0x0065, 0x006C, 0x006C, 0x006F, 0x002D, 0x0041, 0x006E,
+ 0x006F, 0x0074, 0x0068, 0x0065, 0x0072, 0x002D, 0x0057, 0x0061,
+ 0x0079, 0x002D, 0x305D, 0x308C, 0x305E, 0x308C, 0x306E, 0x5834,
+ 0x6240 };
+ QTest::newRow("Japanese3") << 25 << ushortarray(d13)
+ << QByteArray(IDNA_ACE_PREFIX "Hello-Another-Way--fc4qua05auwb3674vfr0b")
+ << 0 << 0 << IDNA_SUCCESS;
+
+ unsigned short d14[] = { 0x3072, 0x3068, 0x3064, 0x5C4B, 0x6839, 0x306E, 0x4E0B, 0x0032 };
+ QTest::newRow("Japanese4") << 8 << ushortarray(d14)
+ << QByteArray(IDNA_ACE_PREFIX "2-u9tlzr9756bt3uc0v")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+
+ unsigned short d15[] = { 0x004D, 0x0061, 0x006A, 0x0069, 0x3067, 0x004B, 0x006F, 0x0069,
+ 0x3059, 0x308B, 0x0035, 0x79D2, 0x524D };
+ QTest::newRow("Japanese5") << 13 << ushortarray(d15)
+ << QByteArray(IDNA_ACE_PREFIX "MajiKoi5-783gue6qz075azm5e")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+
+ unsigned short d16[] = { 0x30D1, 0x30D5, 0x30A3, 0x30FC, 0x0064, 0x0065, 0x30EB, 0x30F3, 0x30D0 };
+ QTest::newRow("Japanese6") << 9 << ushortarray(d16)
+ << QByteArray(IDNA_ACE_PREFIX "de-jg4avhby1noc0d")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+
+ unsigned short d17[] = { 0x305D, 0x306E, 0x30B9, 0x30D4, 0x30FC, 0x30C9, 0x3067 };
+ QTest::newRow("Japanese7") << 7 << ushortarray(d17)
+ << QByteArray(IDNA_ACE_PREFIX "d9juau41awczczp")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+
+ unsigned short d18[] = { 0x03b5, 0x03bb, 0x03bb, 0x03b7, 0x03bd, 0x03b9, 0x03ba, 0x03ac };
+ QTest::newRow("Greek") << 8 << ushortarray(d18)
+ << QByteArray(IDNA_ACE_PREFIX "hxargifdar")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+
+ unsigned short d19[] = { 0x0062, 0x006f, 0x006e, 0x0121, 0x0075, 0x0073, 0x0061, 0x0127,
+ 0x0127, 0x0061 };
+ QTest::newRow("Maltese (Malti)") << 10 << ushortarray(d19)
+ << QByteArray(IDNA_ACE_PREFIX "bonusaa-5bb1da")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+
+ unsigned short d20[] = {0x043f, 0x043e, 0x0447, 0x0435, 0x043c, 0x0443, 0x0436, 0x0435,
+ 0x043e, 0x043d, 0x0438, 0x043d, 0x0435, 0x0433, 0x043e, 0x0432,
+ 0x043e, 0x0440, 0x044f, 0x0442, 0x043f, 0x043e, 0x0440, 0x0443,
+ 0x0441, 0x0441, 0x043a, 0x0438 };
+ QTest::newRow("Russian (Cyrillic)") << 28 << ushortarray(d20)
+ << QByteArray(IDNA_ACE_PREFIX "b1abfaaepdrnnbgefbadotcwatmq2g4l")
+ << 0 << 0 << IDNA_SUCCESS << IDNA_SUCCESS;
+}
+
+void tst_QUrl::idna_testsuite()
+{
+ QFETCH(int, numchars);
+ QFETCH(ushortarray, unicode);
+ QFETCH(QByteArray, punycode);
+
+ QString s = QString::fromUtf16(unicode.points, numchars);
+ QCOMPARE(punycode, QUrl::toPunycode(s));
+}
+
+void tst_QUrl::nameprep_testsuite_data()
+{
+ QTest::addColumn<QString>("in");
+ QTest::addColumn<QString>("out");
+ QTest::addColumn<QString>("profile");
+ QTest::addColumn<int>("flags");
+ QTest::addColumn<int>("rc");
+
+ QTest::newRow("Map to nothing")
+ << QString::fromUtf8("foo\xC2\xAD\xCD\x8F\xE1\xA0\x86\xE1\xA0\x8B"
+ "bar""\xE2\x80\x8B\xE2\x81\xA0""baz\xEF\xB8\x80\xEF\xB8\x88"
+ "\xEF\xB8\x8F\xEF\xBB\xBF")
+ << QString::fromUtf8("foobarbaz")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Case folding ASCII U+0043 U+0041 U+0046 U+0045")
+ << QString::fromUtf8("CAFE")
+ << QString::fromUtf8("cafe")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Case folding 8bit U+00DF (german sharp s)")
+ << QString::fromUtf8("\xC3\x9F")
+ << QString("ss")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Case folding U+0130 (turkish capital I with dot)")
+ << QString::fromUtf8("\xC4\xB0")
+ << QString::fromUtf8("i\xcc\x87")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Case folding multibyte U+0143 U+037A")
+ << QString::fromUtf8("\xC5\x83\xCD\xBA")
+ << QString::fromUtf8("\xC5\x84 \xCE\xB9")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Case folding U+2121 U+33C6 U+1D7BB")
+ << QString::fromUtf8("\xE2\x84\xA1\xE3\x8F\x86\xF0\x9D\x9E\xBB")
+ << QString::fromUtf8("telc\xE2\x88\x95""kg\xCF\x83")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Normalization of U+006a U+030c U+00A0 U+00AA")
+ << QString::fromUtf8("\x6A\xCC\x8C\xC2\xA0\xC2\xAA")
+ << QString::fromUtf8("\xC7\xB0 a")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Case folding U+1FB7 and normalization")
+ << QString::fromUtf8("\xE1\xBE\xB7")
+ << QString::fromUtf8("\xE1\xBE\xB6\xCE\xB9")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Self-reverting case folding U+01F0 and normalization")
+// << QString::fromUtf8("\xC7\xF0") ### typo in the original testsuite
+ << QString::fromUtf8("\xC7\xB0")
+ << QString::fromUtf8("\xC7\xB0")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Self-reverting case folding U+0390 and normalization")
+ << QString::fromUtf8("\xCE\x90")
+ << QString::fromUtf8("\xCE\x90")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Self-reverting case folding U+03B0 and normalization")
+ << QString::fromUtf8("\xCE\xB0")
+ << QString::fromUtf8("\xCE\xB0")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Self-reverting case folding U+1E96 and normalization")
+ << QString::fromUtf8("\xE1\xBA\x96")
+ << QString::fromUtf8("\xE1\xBA\x96")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Self-reverting case folding U+1F56 and normalization")
+ << QString::fromUtf8("\xE1\xBD\x96")
+ << QString::fromUtf8("\xE1\xBD\x96")
+ << QString() << 0 << 0;
+
+ QTest::newRow("ASCII space character U+0020")
+ << QString::fromUtf8("\x20")
+ << QString::fromUtf8("\x20")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Non-ASCII 8bit space character U+00A0")
+ << QString::fromUtf8("\xC2\xA0")
+ << QString::fromUtf8("\x20")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Non-ASCII multibyte space character U+1680")
+ << QString::fromUtf8("\xE1\x9A\x80")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Non-ASCII multibyte space character U+2000")
+ << QString::fromUtf8("\xE2\x80\x80")
+ << QString::fromUtf8("\x20")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Zero Width Space U+200b")
+ << QString::fromUtf8("\xE2\x80\x8b")
+ << QString()
+ << QString() << 0 << 0;
+
+ QTest::newRow("Non-ASCII multibyte space character U+3000")
+ << QString::fromUtf8("\xE3\x80\x80")
+ << QString::fromUtf8("\x20")
+ << QString() << 0 << 0;
+
+ QTest::newRow("ASCII control characters U+0010 U+007F")
+ << QString::fromUtf8("\x10\x7F")
+ << QString::fromUtf8("\x10\x7F")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Non-ASCII 8bit control character U+0085")
+ << QString::fromUtf8("\xC2\x85")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Non-ASCII multibyte control character U+180E")
+ << QString::fromUtf8("\xE1\xA0\x8E")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Zero Width No-Break Space U+FEFF")
+ << QString::fromUtf8("\xEF\xBB\xBF")
+ << QString()
+ << QString() << 0 << 0;
+
+ QTest::newRow("Non-ASCII control character U+1D175")
+ << QString::fromUtf8("\xF0\x9D\x85\xB5")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Plane 0 private use character U+F123")
+ << QString::fromUtf8("\xEF\x84\xA3")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Plane 15 private use character U+F1234")
+ << QString::fromUtf8("\xF3\xB1\x88\xB4")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Plane 16 private use character U+10F234")
+ << QString::fromUtf8("\xF4\x8F\x88\xB4")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Non-character code point U+8FFFE")
+ << QString::fromUtf8("\xF2\x8F\xBF\xBE")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Non-character code point U+10FFFF")
+ << QString::fromUtf8("\xF4\x8F\xBF\xBF")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Surrogate code U+DF42")
+ << QString::fromUtf8("\xED\xBD\x82")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Non-plain text character U+FFFD")
+ << QString::fromUtf8("\xEF\xBF\xBD")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Ideographic description character U+2FF5")
+ << QString::fromUtf8("\xE2\xBF\xB5")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Display property character U+0341")
+ << QString::fromUtf8("\xCD\x81")
+ << QString::fromUtf8("\xCC\x81")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Left-to-right mark U+200E")
+ << QString::fromUtf8("\xE2\x80\x8E")
+ << QString::fromUtf8("\xCC\x81")
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Deprecated U+202A")
+ << QString::fromUtf8("\xE2\x80\xAA")
+ << QString::fromUtf8("\xCC\x81")
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Language tagging character U+E0001")
+ << QString::fromUtf8("\xF3\xA0\x80\x81")
+ << QString::fromUtf8("\xCC\x81")
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Language tagging character U+E0042")
+ << QString::fromUtf8("\xF3\xA0\x81\x82")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_CONTAINS_PROHIBITED;
+
+ QTest::newRow("Bidi: RandALCat character U+05BE and LCat characters")
+ << QString::fromUtf8("foo\xD6\xBE""bar")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_BIDI_BOTH_L_AND_RAL;
+
+ QTest::newRow("Bidi: RandALCat character U+FD50 and LCat characters")
+ << QString::fromUtf8("foo\xEF\xB5\x90""bar")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_BIDI_BOTH_L_AND_RAL;
+
+ QTest::newRow("Bidi: RandALCat character U+FB38 and LCat characters")
+ << QString::fromUtf8("foo\xEF\xB9\xB6""bar")
+ << QString::fromUtf8("foo \xd9\x8e""bar")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Bidi: RandALCat without trailing RandALCat U+0627 U+0031")
+ << QString::fromUtf8("\xD8\xA7\x31")
+ << QString()
+ << QString("Nameprep") << 0 << STRINGPREP_BIDI_LEADTRAIL_NOT_RAL;
+
+ QTest::newRow("Bidi: RandALCat character U+0627 U+0031 U+0628")
+ << QString::fromUtf8("\xD8\xA7\x31\xD8\xA8")
+ << QString::fromUtf8("\xD8\xA7\x31\xD8\xA8")
+ << QString() << 0 << 0;
+
+ QTest::newRow("Unassigned code point U+E0002")
+ << QString::fromUtf8("\xF3\xA0\x80\x82")
+ << QString()
+ << QString("Nameprep") << STRINGPREP_NO_UNASSIGNED << STRINGPREP_CONTAINS_UNASSIGNED;
+
+ QTest::newRow("Larger test (shrinking)")
+ << QString::fromUtf8("X\xC2\xAD\xC3\x9F\xC4\xB0\xE2\x84\xA1\x6a\xcc\x8c\xc2\xa0\xc2"
+ "\xaa\xce\xb0\xe2\x80\x80")
+ << QString::fromUtf8("xssi\xcc\x87""tel\xc7\xb0 a\xce\xb0 ")
+ << QString("Nameprep") << 0 << 0;
+
+ QTest::newRow("Larger test (expanding)")
+ << QString::fromUtf8("X\xC3\x9F\xe3\x8c\x96\xC4\xB0\xE2\x84\xA1\xE2\x92\x9F\xE3\x8c\x80")
+ << QString::fromUtf8("xss\xe3\x82\xad\xe3\x83\xad\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\x88"
+ "\xe3\x83\xab""i\xcc\x87""tel\x28""d\x29\xe3\x82\xa2\xe3\x83\x91"
+ "\xe3\x83\xbc\xe3\x83\x88")
+ << QString() << 0 << 0;
+}
+
+#ifdef QT_BUILD_INTERNAL
+QT_BEGIN_NAMESPACE
+extern void qt_nameprep(QString *source, int from);
+extern bool qt_check_std3rules(const QChar *, int);
+QT_END_NAMESPACE
+#endif
+
+void tst_QUrl::nameprep_testsuite()
+{
+#ifdef QT_BUILD_INTERNAL
+ QFETCH(QString, in);
+ QFETCH(QString, out);
+ QFETCH(QString, profile);
+
+ QEXPECT_FAIL("Left-to-right mark U+200E",
+ "Investigate further", Continue);
+ QEXPECT_FAIL("Deprecated U+202A",
+ "Investigate further", Continue);
+ QEXPECT_FAIL("Language tagging character U+E0001",
+ "Investigate further", Continue);
+ qt_nameprep(&in, 0);
+ QCOMPARE(in, out);
+#endif
+}
+
+void tst_QUrl::nameprep_highcodes_data()
+{
+ QTest::addColumn<QString>("in");
+ QTest::addColumn<QString>("out");
+ QTest::addColumn<QString>("profile");
+ QTest::addColumn<int>("flags");
+ QTest::addColumn<int>("rc");
+
+ {
+ QChar st[] = { '-', 0xd801, 0xdc1d, 'a' };
+ QChar se[] = { '-', 0xd801, 0xdc45, 'a' };
+ QTest::newRow("highcodes (U+1041D)")
+ << QString(st, sizeof(st)/sizeof(st[0]))
+ << QString(se, sizeof(se)/sizeof(se[0]))
+ << QString() << 0 << 0;
+ }
+ {
+ QChar st[] = { 0x011C, 0xd835, 0xdf6e, 0x0110 };
+ QChar se[] = { 0x011D, 0x03C9, 0x0111 };
+ QTest::newRow("highcodes (U+1D76E)")
+ << QString(st, sizeof(st)/sizeof(st[0]))
+ << QString(se, sizeof(se)/sizeof(se[0]))
+ << QString() << 0 << 0;
+ }
+ {
+ QChar st[] = { 'D', 0xdb40, 0xdc20, 'o', 0xd834, 0xdd7a, '\'', 0x2060, 'h' };
+ QChar se[] = { 'd', 'o', '\'', 'h' };
+ QTest::newRow("highcodes (D, U+E0020, o, U+1D17A, ', U+2060, h)")
+ << QString(st, sizeof(st)/sizeof(st[0]))
+ << QString(se, sizeof(se)/sizeof(se[0]))
+ << QString() << 0 << 0;
+ }
+}
+
+void tst_QUrl::nameprep_highcodes()
+{
+#ifdef QT_BUILD_INTERNAL
+ QFETCH(QString, in);
+ QFETCH(QString, out);
+ QFETCH(QString, profile);
+
+ qt_nameprep(&in, 0);
+ QCOMPARE(in, out);
+#endif
+}
+
+void tst_QUrl::ace_testsuite_data()
+{
+ QTest::addColumn<QString>("in");
+ QTest::addColumn<QString>("toace");
+ QTest::addColumn<QString>("fromace");
+ QTest::addColumn<QString>("unicode");
+
+ QTest::newRow("ascii-lower") << "fluke" << "fluke" << "fluke" << "fluke";
+ QTest::newRow("ascii-mixed") << "FLuke" << "fluke" << "fluke" << "fluke";
+ QTest::newRow("ascii-upper") << "FLUKE" << "fluke" << "fluke" << "fluke";
+
+ QTest::newRow("asciifolded") << QString::fromLatin1("stra\337e") << "strasse" << "." << "strasse";
+ QTest::newRow("asciifolded-dotcom") << QString::fromLatin1("stra\337e.example.com") << "strasse.example.com" << "." << "strasse.example.com";
+ QTest::newRow("greek-mu") << QString::fromLatin1("\265V")
+ <<"xn--v-lmb"
+ << "."
+ << QString::fromUtf8("\316\274v");
+
+ QTest::newRow("non-ascii-lower") << QString::fromLatin1("alqualond\353")
+ << "xn--alqualond-34a"
+ << "."
+ << QString::fromLatin1("alqualond\353");
+ QTest::newRow("non-ascii-mixed") << QString::fromLatin1("Alqualond\353")
+ << "xn--alqualond-34a"
+ << "."
+ << QString::fromLatin1("alqualond\353");
+ QTest::newRow("non-ascii-upper") << QString::fromLatin1("ALQUALOND\313")
+ << "xn--alqualond-34a"
+ << "."
+ << QString::fromLatin1("alqualond\353");
+
+ QTest::newRow("idn-lower") << "xn--alqualond-34a" << "xn--alqualond-34a"
+ << QString::fromLatin1("alqualond\353")
+ << QString::fromLatin1("alqualond\353");
+ QTest::newRow("idn-mixed") << "Xn--alqualond-34a" << "xn--alqualond-34a"
+ << QString::fromLatin1("alqualond\353")
+ << QString::fromLatin1("alqualond\353");
+ QTest::newRow("idn-mixed2") << "XN--alqualond-34a" << "xn--alqualond-34a"
+ << QString::fromLatin1("alqualond\353")
+ << QString::fromLatin1("alqualond\353");
+ QTest::newRow("idn-mixed3") << "xn--ALQUALOND-34a" << "xn--alqualond-34a"
+ << QString::fromLatin1("alqualond\353")
+ << QString::fromLatin1("alqualond\353");
+ QTest::newRow("idn-mixed4") << "xn--alqualond-34A" << "xn--alqualond-34a"
+ << QString::fromLatin1("alqualond\353")
+ << QString::fromLatin1("alqualond\353");
+ QTest::newRow("idn-upper") << "XN--ALQUALOND-34A" << "xn--alqualond-34a"
+ << QString::fromLatin1("alqualond\353")
+ << QString::fromLatin1("alqualond\353");
+
+ QTest::newRow("separator-3002") << QString::fromUtf8("example\343\200\202com")
+ << "example.com" << "." << "example.com";
+
+ QString egyptianIDN =
+ QString::fromUtf8("\331\210\330\262\330\247\330\261\330\251\055\330\247\331\204\330"
+ "\243\330\252\330\265\330\247\331\204\330\247\330\252.\331\205"
+ "\330\265\330\261");
+ QTest::newRow("egyptian-tld-ace")
+ << "xn----rmckbbajlc6dj7bxne2c.xn--wgbh1c"
+ << "xn----rmckbbajlc6dj7bxne2c.xn--wgbh1c"
+ << "."
+ << egyptianIDN;
+ QTest::newRow("egyptian-tld-unicode")
+ << egyptianIDN
+ << "xn----rmckbbajlc6dj7bxne2c.xn--wgbh1c"
+ << "."
+ << egyptianIDN;
+ QTest::newRow("egyptian-tld-mix1")
+ << QString::fromUtf8("\331\210\330\262\330\247\330\261\330\251\055\330\247\331\204\330"
+ "\243\330\252\330\265\330\247\331\204\330\247\330\252.xn--wgbh1c")
+ << "xn----rmckbbajlc6dj7bxne2c.xn--wgbh1c"
+ << "."
+ << egyptianIDN;
+ QTest::newRow("egyptian-tld-mix2")
+ << QString::fromUtf8("xn----rmckbbajlc6dj7bxne2c.\331\205\330\265\330\261")
+ << "xn----rmckbbajlc6dj7bxne2c.xn--wgbh1c"
+ << "."
+ << egyptianIDN;
+}
+
+void tst_QUrl::ace_testsuite()
+{
+ static const char canonsuffix[] = ".troll.no";
+ QFETCH(QString, in);
+ QFETCH(QString, toace);
+ QFETCH(QString, fromace);
+ QFETCH(QString, unicode);
+
+ const char *suffix = canonsuffix;
+ if (toace.contains('.'))
+ suffix = 0;
+
+ QString domain = in + suffix;
+ QCOMPARE(QString::fromLatin1(QUrl::toAce(domain)), toace + suffix);
+ if (fromace != ".")
+ QCOMPARE(QUrl::fromAce(domain.toLatin1()), fromace + suffix);
+ QCOMPARE(QUrl::fromAce(QUrl::toAce(domain)), unicode + suffix);
+
+ domain = in + (suffix ? ".troll.No" : "");
+ QCOMPARE(QString::fromLatin1(QUrl::toAce(domain)), toace + suffix);
+ if (fromace != ".")
+ QCOMPARE(QUrl::fromAce(domain.toLatin1()), fromace + suffix);
+ QCOMPARE(QUrl::fromAce(QUrl::toAce(domain)), unicode + suffix);
+
+ domain = in + (suffix ? ".troll.NO" : "");
+ QCOMPARE(QString::fromLatin1(QUrl::toAce(domain)), toace + suffix);
+ if (fromace != ".")
+ QCOMPARE(QUrl::fromAce(domain.toLatin1()), fromace + suffix);
+ QCOMPARE(QUrl::fromAce(QUrl::toAce(domain)), unicode + suffix);
+}
+
+void tst_QUrl::std3violations_data()
+{
+ QTest::addColumn<QString>("source");
+ QTest::addColumn<bool>("validUrl");
+
+ QTest::newRow("too-long") << "this-domain-is-far-too-long-for-its-own-good-and-should-have-been-limited-to-63-chars" << false;
+ QTest::newRow("dash-begin") << "-x-foo" << false;
+ QTest::newRow("dash-end") << "x-foo-" << false;
+ QTest::newRow("dash-begin-end") << "-foo-" << false;
+
+ QTest::newRow("control") << "\033foo" << false;
+ QTest::newRow("bang") << "foo!" << false;
+ QTest::newRow("plus") << "foo+bar" << false;
+ QTest::newRow("dot") << "foo.bar";
+ QTest::newRow("startingdot") << ".bar" << false;
+ QTest::newRow("startingdot2") << ".example.com" << false;
+ QTest::newRow("slash") << "foo/bar" << true;
+ QTest::newRow("colon") << "foo:80" << true;
+ QTest::newRow("question") << "foo?bar" << true;
+ QTest::newRow("at") << "foo@bar" << true;
+ QTest::newRow("backslash") << "foo\\bar" << false;
+
+ // these characters are transformed by NFKC to non-LDH characters
+ QTest::newRow("dot-like") << QString::fromUtf8("foo\342\200\244bar") << false; // U+2024 ONE DOT LEADER
+ QTest::newRow("slash-like") << QString::fromUtf8("foo\357\274\217bar") << false; // U+FF0F FULLWIDTH SOLIDUS
+
+ // The following should be invalid but isn't
+ // the DIVISON SLASH doesn't case-fold to a slash
+ // is this a problem with RFC 3490?
+ //QTest::newRow("slash-like2") << QString::fromUtf8("foo\342\210\225bar") << false; // U+2215 DIVISION SLASH
+}
+
+void tst_QUrl::std3violations()
+{
+ QFETCH(QString, source);
+
+#ifdef QT_BUILD_INTERNAL
+ {
+ QString prepped = source;
+ qt_nameprep(&prepped, 0);
+ QVERIFY(!qt_check_std3rules(prepped.constData(), prepped.length()));
+ }
+#endif
+
+ if (source.contains('.'))
+ return; // this test ends here
+
+ QUrl url;
+ url.setHost(source);
+ QVERIFY(url.host().isEmpty());
+
+ QFETCH(bool, validUrl);
+ if (validUrl)
+ return; // test ends here for these cases
+
+ url = QUrl("http://" + source + "/some/path");
+ QVERIFY(!url.isValid());
+}
+
+void tst_QUrl::std3deviations_data()
+{
+ QTest::addColumn<QString>("source");
+
+ QTest::newRow("ending-dot") << "example.com.";
+ QTest::newRow("ending-dot3002") << QString("example.com") + QChar(0x3002);
+ QTest::newRow("underline") << "foo_bar"; //QTBUG-7434
+}
+
+void tst_QUrl::std3deviations()
+{
+ QFETCH(QString, source);
+ QVERIFY(!QUrl::toAce(source).isEmpty());
+
+ QUrl url;
+ url.setHost(source);
+ QVERIFY(!url.host().isEmpty());
+}
+
+void tst_QUrl::tldRestrictions_data()
+{
+ QTest::addColumn<QString>("tld");
+ QTest::addColumn<bool>("encode");
+
+ // current whitelist
+ QTest::newRow("ac") << QString("ac") << true;
+ QTest::newRow("at") << QString("at") << true;
+ QTest::newRow("br") << QString("br") << true;
+ QTest::newRow("cat") << QString("cat") << true;
+ QTest::newRow("ch") << QString("ch") << true;
+ QTest::newRow("cl") << QString("cl") << true;
+ QTest::newRow("cn") << QString("cn") << true;
+ QTest::newRow("de") << QString("de") << true;
+ QTest::newRow("dk") << QString("dk") << true;
+ QTest::newRow("fi") << QString("fi") << true;
+ QTest::newRow("hu") << QString("hu") << true;
+ QTest::newRow("info") << QString("info") << true;
+ QTest::newRow("io") << QString("io") << true;
+ QTest::newRow("jp") << QString("jp") << true;
+ QTest::newRow("kr") << QString("kr") << true;
+ QTest::newRow("li") << QString("li") << true;
+ QTest::newRow("lt") << QString("lt") << true;
+ QTest::newRow("museum") << QString("museum") << true;
+ QTest::newRow("no") << QString("no") << true;
+ QTest::newRow("se") << QString("se") << true;
+ QTest::newRow("sh") << QString("sh") << true;
+ QTest::newRow("th") << QString("th") << true;
+ QTest::newRow("tm") << QString("tm") << true;
+ QTest::newRow("tw") << QString("tw") << true;
+ QTest::newRow("vn") << QString("vn") << true;
+
+ // known blacklists:
+ QTest::newRow("com") << QString("com") << false;
+ QTest::newRow("foo") << QString("foo") << false;
+}
+
+void tst_QUrl::tldRestrictions()
+{
+ QFETCH(QString, tld);
+
+ // www.brød.tld
+ QByteArray ascii = "www.xn--brd-1na." + tld.toLatin1();
+ QString unicode = QLatin1String("www.br\370d.") + tld;
+ QString encoded = QUrl::fromAce(ascii);
+ QTEST(!encoded.contains(".xn--"), "encode");
+ QTEST(encoded == unicode, "encode");
+
+ QUrl url = QUrl::fromEncoded("http://www.xn--brd-1na." + tld.toLatin1());
+ QTEST(!url.host().contains(".xn--"), "encode");
+ QTEST(url.host() == unicode, "encode");
+
+ url.setUrl(QLatin1String("http://www.xn--brd-1na.") + tld);
+ QTEST(!url.host().contains(".xn--"), "encode");
+ QTEST(url.host() == unicode, "encode");
+
+ url.setUrl(QLatin1String("http://www.br\370d.") + tld);
+ QTEST(!url.host().contains(".xn--"), "encode");
+ QTEST(url.host() == unicode, "encode");
+
+ url = QUrl::fromEncoded("http://www.br%C3%B8d." + tld.toLatin1());
+ QTEST(!url.host().contains(".xn--"), "encode");
+ QTEST(url.host() == unicode, "encode");
+}
+
+void tst_QUrl::emptyQueryOrFragment()
+{
+ QUrl qurl = QUrl::fromEncoded("http://www.kde.org/cgi/test.cgi?", QUrl::TolerantMode);
+ QCOMPARE(qurl.toEncoded().constData(), "http://www.kde.org/cgi/test.cgi?"); // Empty refs should be preserved
+ QCOMPARE(qurl.toString(), QString("http://www.kde.org/cgi/test.cgi?"));
+ qurl = QUrl::fromEncoded("http://www.kde.org/cgi/test.cgi#", QUrl::TolerantMode);
+ QCOMPARE(qurl.toEncoded().constData(), "http://www.kde.org/cgi/test.cgi#");
+ QCOMPARE(qurl.toString(), QString("http://www.kde.org/cgi/test.cgi#"));
+
+ {
+ // start with an empty one
+ QUrl url("http://www.foo.bar/baz");
+ QVERIFY(!url.hasFragment());
+ QVERIFY(url.fragment().isNull());
+
+ // add fragment
+ url.setFragment(QLatin1String("abc"));
+ QVERIFY(url.hasFragment());
+ QCOMPARE(url.fragment(), QString(QLatin1String("abc")));
+ QCOMPARE(url.toString(), QString(QLatin1String("http://www.foo.bar/baz#abc")));
+
+ // remove fragment
+ url.setFragment(QString());
+ QVERIFY(!url.hasFragment());
+ QVERIFY(url.fragment().isNull());
+ QCOMPARE(url.toString(), QString(QLatin1String("http://www.foo.bar/baz")));
+
+ // add empty fragment
+ url.setFragment(QLatin1String(""));
+ QVERIFY(url.hasFragment());
+ QVERIFY(url.fragment().isEmpty());
+ QVERIFY(!url.fragment().isNull());
+ QCOMPARE(url.toString(), QString(QLatin1String("http://www.foo.bar/baz#")));
+ }
+
+ {
+ // start with an empty one
+ QUrl url("http://www.foo.bar/baz");
+ QVERIFY(!url.hasQuery());
+ QVERIFY(url.encodedQuery().isNull());
+
+ // add encodedQuery
+ url.setEncodedQuery("abc=def");
+ QVERIFY(url.hasQuery());
+ QCOMPARE(QString(url.encodedQuery()), QString(QLatin1String("abc=def")));
+ QCOMPARE(url.toString(), QString(QLatin1String("http://www.foo.bar/baz?abc=def")));
+
+ // remove encodedQuery
+ url.setEncodedQuery(0);
+ QVERIFY(!url.hasQuery());
+ QVERIFY(url.encodedQuery().isNull());
+ QCOMPARE(url.toString(), QString(QLatin1String("http://www.foo.bar/baz")));
+
+ // add empty encodedQuery
+ url.setEncodedQuery("");
+ QVERIFY(url.hasQuery());
+ QVERIFY(url.encodedQuery().isEmpty());
+ QVERIFY(!url.encodedQuery().isNull());
+ QCOMPARE(url.toString(), QString(QLatin1String("http://www.foo.bar/baz?")));
+ }
+}
+
+void tst_QUrl::hasFragment_data()
+{
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<bool>("trueFalse");
+
+ QTest::newRow("no fragment") << "http://www.foo.bar" << false;
+
+ QTest::newRow("empty fragment") << "http://www.foo.bar#" << true;
+ QTest::newRow("empty fragment 2") << "http://www.foo.bar/#" << true;
+
+ QTest::newRow("fragment") << "http://www.foo.bar#baz" << true;
+ QTest::newRow("fragment2") << "http://www.foo.bar/#baz" << true;
+
+ QTest::newRow("%23") << "http://www.foo.bar/%23" << false;
+ QTest::newRow("%23-and-something") << "http://www.foo.bar/%23baz" << false;
+}
+
+void tst_QUrl::hasFragment()
+{
+ QFETCH(QString, url);
+ QFETCH(bool, trueFalse);
+
+ QUrl qurl(url);
+ QCOMPARE(qurl.hasFragment(), trueFalse);
+ QCOMPARE(qurl.fragment().isNull(), !trueFalse);
+}
+
+void tst_QUrl::setEncodedFragment_data()
+{
+ QTest::addColumn<QByteArray>("base");
+ QTest::addColumn<QByteArray>("fragment");
+ QTest::addColumn<QByteArray>("expected");
+
+ typedef QByteArray BA;
+ QTest::newRow("empty") << BA("http://www.kde.org") << BA("") << BA("http://www.kde.org#");
+ QTest::newRow("basic test") << BA("http://www.kde.org") << BA("abc") << BA("http://www.kde.org#abc");
+ QTest::newRow("initial url has fragment") << BA("http://www.kde.org#old") << BA("new") << BA("http://www.kde.org#new");
+ QTest::newRow("encoded fragment") << BA("http://www.kde.org") << BA("a%20c") << BA("http://www.kde.org#a%20c");
+ QTest::newRow("with #") << BA("http://www.kde.org") << BA("a#b") << BA("http://www.kde.org#a#b");
+}
+
+void tst_QUrl::setEncodedFragment()
+{
+ QFETCH(QByteArray, base);
+ QFETCH(QByteArray, fragment);
+ QFETCH(QByteArray, expected);
+ QUrl u;
+ u.setEncodedUrl(base, QUrl::TolerantMode);
+ QVERIFY(u.isValid());
+ u.setEncodedFragment(fragment);
+ QVERIFY(u.isValid());
+ QVERIFY(u.hasFragment());
+ QCOMPARE(QString::fromLatin1(u.toEncoded()), QString::fromLatin1(expected));
+}
+
+void tst_QUrl::fromEncoded()
+{
+ QUrl qurl2 = QUrl::fromEncoded("print:/specials/Print%20To%20File%20(PDF%252FAcrobat)", QUrl::TolerantMode);
+ QCOMPARE(qurl2.path(), QString::fromLatin1("/specials/Print To File (PDF%2FAcrobat)"));
+ QCOMPARE(QFileInfo(qurl2.path()).fileName(), QString::fromLatin1("Print To File (PDF%2FAcrobat)"));
+ QCOMPARE(qurl2.toEncoded().constData(), "print:/specials/Print%20To%20File%20(PDF%252FAcrobat)");
+
+ QUrl qurl = QUrl::fromEncoded("http://\303\244.de");
+ QVERIFY(qurl.isValid());
+ QCOMPARE(qurl.toEncoded().constData(), "http://xn--4ca.de");
+
+ QUrl qurltest(QUrl::fromPercentEncoding("http://\303\244.de"));
+ QVERIFY(qurltest.isValid());
+
+ QUrl qurl_newline_1 = QUrl::fromEncoded("http://www.foo.bar/foo/bar\ngnork", QUrl::TolerantMode);
+ QVERIFY(qurl_newline_1.isValid());
+ QCOMPARE(qurl_newline_1.toEncoded().constData(), "http://www.foo.bar/foo/bar%0Agnork");
+}
+
+void tst_QUrl::stripTrailingSlash()
+{
+ QUrl u1( "ftp://ftp.de.kde.org/dir" );
+ QUrl u2( "ftp://ftp.de.kde.org/dir/" );
+ QUrl::FormattingOptions options = QUrl::None;
+ options |= QUrl::StripTrailingSlash;
+ QString str1 = u1.toString(options);
+ QString str2 = u2.toString(options);
+ QCOMPARE( str1, u1.toString() );
+ QCOMPARE( str2, u1.toString() );
+ bool same = str1 == str2;
+ QVERIFY( same );
+}
+
+void tst_QUrl::hosts_data()
+{
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<QString>("host");
+
+ QTest::newRow("empty") << QString("") << QString("");
+ QTest::newRow("empty1") << QString("file:///file") << QString("");
+ QTest::newRow("empty2") << QString("file:/file") << QString("");
+ QTest::newRow("empty3") << QString("http:///file") << QString("");
+ QTest::newRow("empty4") << QString("http:/file") << QString("");
+
+ // numeric hostnames
+ QTest::newRow("http://123/") << QString("http://123/") << QString("123");
+ QTest::newRow("http://456/") << QString("http://456/") << QString("456");
+ QTest::newRow("http://1000/") << QString("http://1000/") << QString("1000");
+
+ // IP literals
+ QTest::newRow("normal-ip-literal") << QString("http://1.2.3.4") << QString("1.2.3.4");
+ QTest::newRow("normal-ip-literal-with-port") << QString("http://1.2.3.4:80")
+ << QString("1.2.3.4");
+ QTest::newRow("ipv6-literal") << QString("http://[::1]") << QString("::1");
+ QTest::newRow("ipv6-literal-with-port") << QString("http://[::1]:80") << QString("::1");
+ QTest::newRow("long-ipv6-literal") << QString("http://[2001:200:0:8002:203:47ff:fea5:3085]")
+ << QString("2001:200:0:8002:203:47ff:fea5:3085");
+ QTest::newRow("long-ipv6-literal-with-port") << QString("http://[2001:200:0:8002:203:47ff:fea5:3085]:80")
+ << QString("2001:200:0:8002:203:47ff:fea5:3085");
+ QTest::newRow("ipv6-literal-v4compat") << QString("http://[::255.254.253.252]")
+ << QString("::255.254.253.252");
+ QTest::newRow("ipv6-literal-v4compat-2") << QString("http://[1000::ffff:127.128.129.1]")
+ << QString("1000::ffff:127.128.129.1");
+ QTest::newRow("long-ipv6-literal-v4compat") << QString("http://[fec0:8000::8002:1000:ffff:200.100.50.250]")
+ << QString("fec0:8000::8002:1000:ffff:200.100.50.250");
+ QTest::newRow("longer-ipv6-literal-v4compat") << QString("http://[fec0:8000:4000:8002:1000:ffff:200.100.50.250]")
+ << QString("fec0:8000:4000:8002:1000:ffff:200.100.50.250");
+
+#if 0
+ // this is actually invalid
+ QTest::newRow("mac-literal") << QString("obex://[00:30:1b:b7:21:fb]")
+ << QString("00:30:1b:b7:21:fb");
+#endif
+
+ // normal hostnames
+ QTest::newRow("normal") << QString("http://intern") << QString("intern");
+ QTest::newRow("normal2") << QString("http://qt.nokia.com") << QString("qt.nokia.com");
+
+ // IDN hostnames
+ QTest::newRow("idn") << QString(QLatin1String("http://\345r.no")) << QString(QLatin1String("\345r.no"));
+ QTest::newRow("idn-ace") << QString("http://xn--r-1fa.no") << QString(QLatin1String("\345r.no"));
+}
+
+void tst_QUrl::hosts()
+{
+ QFETCH(QString, url);
+
+ QTEST(QUrl(url).host(), "host");
+}
+
+void tst_QUrl::setPort()
+{
+ {
+ QUrl url;
+ QVERIFY(url.toString().isEmpty());
+ url.setPort(80);
+ QCOMPARE(url.port(), 80);
+ QCOMPARE(url.toString(), QString::fromLatin1("//:80"));
+ url.setPort(-1);
+ QCOMPARE(url.port(), -1);
+ QVERIFY(url.toString().isEmpty());
+ url.setPort(80);
+ QTest::ignoreMessage(QtWarningMsg, "QUrl::setPort: Out of range");
+ url.setPort(65536);
+ QCOMPARE(url.port(), -1);
+ }
+}
+
+void tst_QUrl::toEncoded_data()
+{
+ QTest::addColumn<QByteArray>("url");
+ QTest::addColumn<QUrl::FormattingOptions>("options");
+ QTest::addColumn<QByteArray>("encoded");
+ QTest::newRow("file:///dir/") << QByteArray("file:///dir/")
+ << QUrl::FormattingOptions(QUrl::StripTrailingSlash)
+ << QByteArray("file:///dir");
+}
+
+void tst_QUrl::toEncoded()
+{
+ QFETCH(QByteArray, url);
+ QFETCH(QUrl::FormattingOptions, options);
+ QFETCH(QByteArray, encoded);
+
+ QCOMPARE(QUrl::fromEncoded(url).toEncoded(options), encoded);
+}
+
+void tst_QUrl::setAuthority_data()
+{
+ QTest::addColumn<QString>("authority");
+ QTest::addColumn<QString>("url");
+ QTest::newRow("Plain auth") << QString("62.70.27.22:21") << QString("//62.70.27.22:21");
+ QTest::newRow("Yet another plain auth") << QString("192.168.1.1:21") << QString("//192.168.1.1:21");
+ QTest::newRow("Auth without port") << QString("192.168.1.1") << QString("//192.168.1.1");
+ QTest::newRow("Auth w/full hostname without port") << QString("shusaku.troll.no") << QString("//shusaku.troll.no");
+ QTest::newRow("Auth w/hostname without port") << QString("shusaku") << QString("//shusaku");
+ QTest::newRow("Auth w/full hostname that ends with number, without port") << QString("shusaku.troll.no.2") << QString("//shusaku.troll.no.2");
+ QTest::newRow("Auth w/hostname that ends with number, without port") << QString("shusaku2") << QString("//shusaku2");
+ QTest::newRow("Empty auth") << QString() << QString();
+}
+
+void tst_QUrl::setAuthority()
+{
+ QUrl u;
+ QFETCH(QString, authority);
+ QFETCH(QString, url);
+ u.setAuthority(authority);
+ QCOMPARE(u.toString(), url);
+}
+
+void tst_QUrl::errorString()
+{
+ QUrl u = QUrl::fromEncoded("http://strange<username>@bad_hostname/", QUrl::StrictMode);
+ QVERIFY(!u.isValid());
+ QString errorString = "Invalid URL \"http://strange<username>@bad_hostname/\": "
+ "error at position 14: expected end of URL, but found '<'";
+ QCOMPARE(u.errorString(), errorString);
+
+ QUrl v;
+ errorString = "Invalid URL \"\": ";
+ QCOMPARE(v.errorString(), errorString);
+}
+
+void tst_QUrl::clear()
+{
+ QUrl url("a");
+ QUrl url2("a");
+ QCOMPARE(url, url2);
+ url.clear();
+ QVERIFY(url != url2);
+}
+
+void tst_QUrl::binaryData_data()
+{
+ QTest::addColumn<QString>("url");
+ QTest::newRow("username") << "http://%01%0D%0A%7F@foo/";
+ QTest::newRow("username-at") << "http://abc%40_def@foo/";
+ QTest::newRow("username-nul") << "http://abc%00_def@foo/";
+ QTest::newRow("username-colon") << "http://abc%3A_def@foo/";
+ QTest::newRow("username-nonutf8") << "http://abc%E1_def@foo/";
+
+ QTest::newRow("password") << "http://user:%01%0D%0A%7F@foo/";
+ QTest::newRow("password-at") << "http://user:abc%40_def@foo/";
+ QTest::newRow("password-nul") << "http://user:abc%00_def@foo/";
+ QTest::newRow("password-nonutf8") << "http://user:abc%E1_def@foo/";
+
+ QTest::newRow("file") << "http://foo/%01%0D%0A%7F";
+ QTest::newRow("file-nul") << "http://foo/abc%00_def";
+ QTest::newRow("file-hash") << "http://foo/abc%23_def";
+ QTest::newRow("file-question") << "http://foo/abc%3F_def";
+ QTest::newRow("file-nonutf8") << "http://foo/abc%E1_def";
+ QTest::newRow("file-slash") << "http://foo/abc%2f_def";
+
+ QTest::newRow("ref") << "http://foo/file#a%01%0D%0A%7F";
+ QTest::newRow("ref-nul") << "http://foo/file#abc%00_def";
+ QTest::newRow("ref-question") << "http://foo/file#abc?_def";
+ QTest::newRow("ref-nonutf8") << "http://foo/file#abc%E1_def";
+
+ QTest::newRow("query-value") << "http://foo/query?foo=%01%0D%0A%7F";
+ QTest::newRow("query-value-nul") << "http://foo/query?foo=abc%00_def";
+ QTest::newRow("query-value-nonutf8") << "http://foo/query?foo=abc%E1_def";
+
+ QTest::newRow("query-name") << "http://foo/query/a%01%0D%0A%7Fz=foo";
+ QTest::newRow("query-name-nul") << "http://foo/query/abc%00_def=foo";
+ QTest::newRow("query-name-nonutf8") << "http://foo/query/abc%E1_def=foo";
+}
+
+void tst_QUrl::binaryData()
+{
+ QFETCH(QString, url);
+ QUrl u = QUrl::fromEncoded(url.toUtf8());
+
+ QVERIFY(u.isValid());
+ QVERIFY(!u.isEmpty());
+
+ QString url2 = QString::fromUtf8(u.toEncoded());
+ //QCOMPARE(url2.length(), url.length());
+ QCOMPARE(url2, url);
+}
+
+void tst_QUrl::fromUserInput_data()
+{
+ //
+ // most of this test is:
+ // Copyright (C) Research In Motion Limited 2009. All rights reserved.
+ // Distributed under the BSD license.
+ // See qurl.cpp
+ //
+
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QUrl>("guessUrlFromString");
+
+ // Null
+ QTest::newRow("null") << QString() << QUrl();
+
+ // File
+ QDirIterator it(QDir::homePath());
+ int c = 0;
+ while (it.hasNext()) {
+ it.next();
+ QTest::newRow(QString("file-%1").arg(c++).toLatin1()) << it.filePath() << QUrl::fromLocalFile(it.filePath());
+ }
+
+ // basic latin1
+ QTest::newRow("unicode-0") << QString::fromUtf8("\xc3\xa5.com/") << QUrl::fromEncoded(QString::fromUtf8("http://\xc3\xa5.com/").toUtf8(), QUrl::TolerantMode);
+ QTest::newRow("unicode-0b") << QString::fromUtf8("\xc3\xa5.com/") << QUrl::fromEncoded("http://%C3%A5.com/", QUrl::TolerantMode);
+ QTest::newRow("unicode-0c") << QString::fromUtf8("\xc3\xa5.com/") << QUrl::fromEncoded("http://xn--5ca.com/", QUrl::TolerantMode);
+ // unicode
+ QTest::newRow("unicode-1") << QString::fromUtf8("\xce\xbb.com/") << QUrl::fromEncoded(QString::fromUtf8("http://\xce\xbb.com/").toUtf8(), QUrl::TolerantMode);
+ QTest::newRow("unicode-1b") << QString::fromUtf8("\xce\xbb.com/") << QUrl::fromEncoded("http://%CE%BB.com/", QUrl::TolerantMode);
+ QTest::newRow("unicode-1c") << QString::fromUtf8("\xce\xbb.com/") << QUrl::fromEncoded("http://xn--wxa.com/", QUrl::TolerantMode);
+
+ // no scheme
+ QTest::newRow("add scheme-0") << "example.org" << QUrl("http://example.org");
+ QTest::newRow("add scheme-1") << "www.example.org" << QUrl("http://www.example.org");
+ QTest::newRow("add scheme-2") << "ftp.example.org" << QUrl("ftp://ftp.example.org");
+ QTest::newRow("add scheme-3") << "hostname" << QUrl("http://hostname");
+
+ // QUrl's tolerant parser should already handle this
+ QTest::newRow("not-encoded-0") << "http://example.org/test page.html" << QUrl::fromEncoded("http://example.org/test%20page.html");
+
+ // Make sure the :80, i.e. port doesn't screw anything up
+ QUrl portUrl("http://example.org");
+ portUrl.setPort(80);
+ QTest::newRow("port-0") << "example.org:80" << portUrl;
+ QTest::newRow("port-1") << "http://example.org:80" << portUrl;
+ portUrl.setPath("path");
+ QTest::newRow("port-1") << "example.org:80/path" << portUrl;
+ QTest::newRow("port-1") << "http://example.org:80/path" << portUrl;
+
+ // mailto doesn't have a ://, but is valid
+ QUrl mailto("ben@example.net");
+ mailto.setScheme("mailto");
+ QTest::newRow("mailto") << "mailto:ben@example.net" << mailto;
+
+ // misc
+ QTest::newRow("localhost-1") << "localhost:80" << QUrl("http://localhost:80");
+ QTest::newRow("spaces-0") << " http://example.org/test page.html " << QUrl("http://example.org/test%20page.html");
+ QTest::newRow("trash-0") << "example.org/test?someData=42%&someOtherData=abcde#anchor" << QUrl::fromEncoded("http://example.org/test?someData=42%25&someOtherData=abcde#anchor");
+ QTest::newRow("other-scheme-0") << "spotify:track:0hO542doVbfGDAGQULMORT" << QUrl("spotify:track:0hO542doVbfGDAGQULMORT");
+ QTest::newRow("other-scheme-1") << "weirdscheme:80:otherstuff" << QUrl("weirdscheme:80:otherstuff");
+
+ // FYI: The scheme in the resulting url user
+ QUrl authUrl("user:pass@domain.com");
+ QTest::newRow("misc-1") << "user:pass@domain.com" << authUrl;
+}
+
+void tst_QUrl::fromUserInput()
+{
+ QFETCH(QString, string);
+ QFETCH(QUrl, guessUrlFromString);
+
+ QUrl url = QUrl::fromUserInput(string);
+ QCOMPARE(url, guessUrlFromString);
+}
+
+void tst_QUrl::task_199967()
+{
+ {
+ QUrl url;
+ url.setEncodedUrl("LABEL=USB_STICK", QUrl::TolerantMode);
+ QVERIFY( url.isValid() );
+ QCOMPARE( url.path(), QString("LABEL=USB_STICK") );
+ QVERIFY( !url.isEmpty() );
+ }
+ {
+ QUrl url;
+ url.setEncodedUrl("LABEL=USB_STICK", QUrl::TolerantMode);
+ QVERIFY( url.isValid() );
+ QVERIFY( !url.isEmpty() );
+ QCOMPARE( url.path(), QString("LABEL=USB_STICK") );
+ }
+}
+
+void tst_QUrl::task_240612()
+{
+ QUrl url;
+ url.setEncodedPath("test.txt");
+ url.setHost("example.com");
+
+ QCOMPARE(url.toEncoded().constData(), "//example.com/test.txt");
+
+ url.path();
+ QCOMPARE(url.toEncoded().constData(), "//example.com/test.txt");
+}
+
+void tst_QUrl::resolvedWithAbsoluteSchemes() const
+{
+ QFETCH(QUrl, base);
+ QFETCH(QUrl, relative);
+ QFETCH(QUrl, expected);
+
+ /* Check our input. */
+ QVERIFY(relative.isValid());
+ QVERIFY(base.isValid());
+ QVERIFY(expected.isValid());
+
+ const QUrl result(base.resolved(relative));
+
+ QVERIFY(result.isValid());
+ QCOMPARE(result, expected);
+}
+
+void tst_QUrl::resolvedWithAbsoluteSchemes_data() const
+{
+ QTest::addColumn<QUrl>("base");
+ QTest::addColumn<QUrl>("relative");
+ QTest::addColumn<QUrl>("expected");
+
+ QTest::newRow("Absolute file:/// against absolute FTP.")
+ << QUrl::fromEncoded("file:///foo/")
+ << QUrl::fromEncoded("ftp://example.com/")
+ << QUrl::fromEncoded("ftp://example.com/");
+
+ QTest::newRow("Absolute file:/// against absolute HTTP.")
+ << QUrl::fromEncoded("file:///foo/")
+ << QUrl::fromEncoded("http://example.com/")
+ << QUrl::fromEncoded("http://example.com/");
+
+
+ QTest::newRow("Absolute file:/// against data scheme.")
+ << QUrl::fromEncoded("file:///foo/")
+ << QUrl::fromEncoded("data:application/xml,%3Ce%2F%3E")
+ << QUrl::fromEncoded("data:application/xml,%3Ce%2F%3E");
+
+ QTest::newRow("Resolve with base url and port.")
+ << QUrl::fromEncoded("http://www.foo.com:8080/")
+ << QUrl::fromEncoded("newfile.html")
+ << QUrl::fromEncoded("http://www.foo.com:8080/newfile.html");
+}
+
+void tst_QUrl::taskQTBUG_6962()
+{
+ //bug 6962: empty authority ignored by setAuthority
+ QUrl url("http://example.com/something");
+ url.setAuthority(QString());
+ QCOMPARE(url.authority(), QString());
+}
+
+void tst_QUrl::taskQTBUG_8701()
+{
+ //bug 8701: foo:///bar mangled to foo:/bar
+ QString foo_triple_bar("foo:///bar"), foo_uni_bar("foo:/bar");
+
+ QCOMPARE(foo_triple_bar, QUrl(foo_triple_bar).toString());
+ QCOMPARE(foo_uni_bar, QUrl(foo_uni_bar).toString());
+
+ QCOMPARE(foo_triple_bar, QUrl(foo_triple_bar, QUrl::StrictMode).toString()); // fails
+ QCOMPARE(foo_uni_bar, QUrl(foo_uni_bar, QUrl::StrictMode).toString());
+}
+
+void tst_QUrl::effectiveTLDs_data()
+{
+ QTest::addColumn<QUrl>("domain");
+ QTest::addColumn<QString>("TLD");
+
+ QTest::newRow("yes0") << QUrl::fromEncoded("http://test.co.uk") << ".co.uk";
+ QTest::newRow("yes1") << QUrl::fromEncoded("http://test.com") << ".com";
+ QTest::newRow("yes2") << QUrl::fromEncoded("http://www.test.de") << ".de";
+ QTest::newRow("yes3") << QUrl::fromEncoded("http://test.ulm.museum") << ".ulm.museum";
+ QTest::newRow("yes4") << QUrl::fromEncoded("http://www.com.krodsherad.no") << ".krodsherad.no";
+ QTest::newRow("yes5") << QUrl::fromEncoded("http://www.co.uk.1.bg") << ".1.bg";
+ QTest::newRow("yes6") << QUrl::fromEncoded("http://www.com.com.cn") << ".com.cn";
+ QTest::newRow("yes7") << QUrl::fromEncoded("http://www.test.org.ws") << ".org.ws";
+ QTest::newRow("yes9") << QUrl::fromEncoded("http://www.com.co.uk.wallonie.museum") << ".wallonie.museum";
+}
+
+void tst_QUrl::effectiveTLDs()
+{
+ QFETCH(QUrl, domain);
+ QFETCH(QString, TLD);
+ QCOMPARE(domain.topLevelDomain(), TLD);
+}
+
+void tst_QUrl::removeAllEncodedQueryItems_data()
+{
+ QTest::addColumn<QUrl>("url");
+ QTest::addColumn<QByteArray>("key");
+ QTest::addColumn<QUrl>("result");
+
+ QTest::newRow("test1") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&bbb=b&ccc=c") << QByteArray("bbb") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&ccc=c");
+ QTest::newRow("test2") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&bbb=b&ccc=c") << QByteArray("aaa") << QUrl::fromEncoded("http://qt.nokia.com/foo?bbb=b&ccc=c");
+// QTest::newRow("test3") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&bbb=b&ccc=c") << QByteArray("ccc") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&bbb=b");
+ QTest::newRow("test4") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&bbb=b&ccc=c") << QByteArray("b%62b") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&bbb=b&ccc=c");
+ QTest::newRow("test5") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&b%62b=b&ccc=c") << QByteArray("b%62b") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&ccc=c");
+ QTest::newRow("test6") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&b%62b=b&ccc=c") << QByteArray("bbb") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&b%62b=b&ccc=c");
+}
+
+void tst_QUrl::removeAllEncodedQueryItems()
+{
+ QFETCH(QUrl, url);
+ QFETCH(QByteArray, key);
+ QFETCH(QUrl, result);
+ url.removeAllEncodedQueryItems(key);
+ QCOMPARE(url, result);
+}
+
+QTEST_MAIN(tst_QUrl)
+#include "tst_qurl.moc"
diff --git a/tests/auto/corelib/kernel/kernel.pro b/tests/auto/corelib/kernel/kernel.pro
new file mode 100644
index 0000000000..9fb8868391
--- /dev/null
+++ b/tests/auto/corelib/kernel/kernel.pro
@@ -0,0 +1,22 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qabstractitemmodel \
+ qcoreapplication \
+ qeventloop \
+ qitemmodel \
+ qmath \
+ qmetaobject \
+ qmetatype \
+ qmimedata \
+ qobject \
+ qpointer \
+ qsignalmapper \
+ qsocketnotifier \
+ qtimer \
+ # qtipc \ # needs to be moved to qtscript
+ qtranslator \
+ qvariant \
+ qwineventnotifier
+
+!contains(QT_CONFIG, private_tests): SUBDIRS -= \
+ qsocketnotifier
diff --git a/tests/auto/corelib/kernel/qabstractitemmodel/.gitignore b/tests/auto/corelib/kernel/qabstractitemmodel/.gitignore
new file mode 100644
index 0000000000..f6f93f4b89
--- /dev/null
+++ b/tests/auto/corelib/kernel/qabstractitemmodel/.gitignore
@@ -0,0 +1 @@
+tst_qabstractitemmodel
diff --git a/tests/auto/corelib/kernel/qabstractitemmodel/qabstractitemmodel.pro b/tests/auto/corelib/kernel/qabstractitemmodel/qabstractitemmodel.pro
new file mode 100644
index 0000000000..50730b371f
--- /dev/null
+++ b/tests/auto/corelib/kernel/qabstractitemmodel/qabstractitemmodel.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+
+INCLUDEPATH += $$PWD/../../../modeltest
+QT += widgets
+SOURCES += tst_qabstractitemmodel.cpp ../../../modeltest/dynamictreemodel.cpp ../../../modeltest/modeltest.cpp
+HEADERS += ../../../modeltest/dynamictreemodel.h ../../../modeltest/modeltest.h
+
+
+
diff --git a/tests/auto/corelib/kernel/qabstractitemmodel/tst_qabstractitemmodel.cpp b/tests/auto/corelib/kernel/qabstractitemmodel/tst_qabstractitemmodel.cpp
new file mode 100644
index 0000000000..6a7a16eae8
--- /dev/null
+++ b/tests/auto/corelib/kernel/qabstractitemmodel/tst_qabstractitemmodel.cpp
@@ -0,0 +1,1816 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtCore/QtCore>
+
+#include <QtWidgets/QSortFilterProxyModel>
+
+//TESTED_CLASS=QAbstractListModel QAbstractTableModel
+//TESTED_FILES=
+
+#include "dynamictreemodel.h"
+
+Q_DECLARE_METATYPE(QModelIndex)
+
+/*!
+ Note that this doesn't test models, but any functionality that QAbstractItemModel shoudl provide
+ */
+class tst_QAbstractItemModel : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QAbstractItemModel();
+ virtual ~tst_QAbstractItemModel();
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void index();
+ void parent();
+ void hasChildren();
+ void _data();
+ void headerData();
+ void itemData();
+ void itemFlags();
+ void match();
+ void dropMimeData_data();
+ void dropMimeData();
+ void changePersistentIndex();
+ void movePersistentIndex();
+
+ void insertRows();
+ void insertColumns();
+ void removeRows();
+ void removeColumns();
+
+ void reset();
+
+ void complexChangesWithPersistent();
+
+ void testMoveSameParentUp_data();
+ void testMoveSameParentUp();
+
+ void testMoveSameParentDown_data();
+ void testMoveSameParentDown();
+
+ void testMoveToGrandParent_data();
+ void testMoveToGrandParent();
+
+ void testMoveToSibling_data();
+ void testMoveToSibling();
+
+ void testMoveToUncle_data();
+ void testMoveToUncle();
+
+ void testMoveToDescendants();
+
+ void testMoveWithinOwnRange_data();
+ void testMoveWithinOwnRange();
+
+ void testMoveThroughProxy();
+
+ void testReset();
+
+
+private:
+ DynamicTreeModel *m_model;
+
+};
+
+/*!
+ Test model that impliments the pure vitual functions and anything else that is
+ needed.
+
+ It is a table implimented as a vector of vectors of strings.
+ */
+class QtTestModel: public QAbstractItemModel
+{
+public:
+ QtTestModel(int rows, int columns, QObject *parent = 0);
+ QtTestModel(const QVector<QVector<QString> > tbl, QObject *parent = 0);
+ QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex parent(const QModelIndex &) const;
+ int rowCount(const QModelIndex &parent) const;
+ int columnCount(const QModelIndex &parent) const;
+ bool hasChildren(const QModelIndex &) const;
+ QVariant data(const QModelIndex &idx, int) const;
+ bool setData(const QModelIndex &idx, const QVariant &value, int);
+ bool insertRows(int row, int count, const QModelIndex &parent= QModelIndex());
+ bool insertColumns(int column, int count, const QModelIndex &parent= QModelIndex());
+ void setPersistent(const QModelIndex &from, const QModelIndex &to);
+ bool removeRows ( int row, int count, const QModelIndex & parent = QModelIndex() );
+ bool removeColumns( int column, int count, const QModelIndex & parent = QModelIndex());
+ void reset();
+
+ int cCount, rCount;
+ mutable bool wrongIndex;
+ QVector<QVector<QString> > table;
+};
+
+QtTestModel::QtTestModel(int rows, int columns, QObject *parent)
+ : QAbstractItemModel(parent), cCount(columns), rCount(rows), wrongIndex(false) {
+
+ table.resize(rows);
+ for (int r = 0; r < rows; ++r) {
+ table[r].resize(columns);
+ for (int c = 0; c < columns; ++c)
+ table[r][c] = QString("%1/%2").arg(r).arg(c);
+ }
+}
+
+QtTestModel::QtTestModel(const QVector<QVector<QString> > tbl, QObject *parent)
+ : QAbstractItemModel(parent), wrongIndex(false) {
+ table = tbl;
+ rCount = tbl.count();
+ cCount = tbl.at(0).count();
+}
+
+QModelIndex QtTestModel::index(int row, int column, const QModelIndex &parent) const
+ { return hasIndex(row, column, parent) ? createIndex(row, column, 0) : QModelIndex(); }
+
+QModelIndex QtTestModel::parent(const QModelIndex &) const { return QModelIndex(); }
+int QtTestModel::rowCount(const QModelIndex &parent) const { return parent.isValid() ? 0 : rCount; }
+int QtTestModel::columnCount(const QModelIndex &parent) const { return parent.isValid() ? 0 : cCount; }
+bool QtTestModel::hasChildren(const QModelIndex &) const { return false; }
+
+QVariant QtTestModel::data(const QModelIndex &idx, int) const
+{
+ if (idx.row() < 0 || idx.column() < 0 || idx.column() > cCount || idx.row() > rCount) {
+ wrongIndex = true;
+ qWarning("got invalid modelIndex %d/%d", idx.row(), idx.column());
+ return QVariant();
+ }
+ return table.at(idx.row()).at(idx.column());
+}
+
+bool QtTestModel::setData(const QModelIndex &idx, const QVariant &value, int)
+{
+ table[idx.row()][idx.column()] = value.toString();
+ return true;
+}
+
+bool QtTestModel::insertRows(int row, int count, const QModelIndex &parent)
+{
+ QAbstractItemModel::beginInsertRows(parent, row, row + count - 1);
+ int cc = columnCount(parent);
+ table.insert(row, count, QVector<QString>(cc));
+ rCount = table.count();
+ QAbstractItemModel::endInsertRows();
+ return true;
+}
+
+bool QtTestModel::insertColumns(int column, int count, const QModelIndex &parent)
+{
+ QAbstractItemModel::beginInsertColumns(parent, column, column + count - 1);
+ int rc = rowCount(parent);
+ for (int i = 0; i < rc; ++i)
+ table[i].insert(column, 1, "");
+ cCount = table.at(0).count();
+ QAbstractItemModel::endInsertColumns();
+ return true;
+}
+
+void QtTestModel::setPersistent(const QModelIndex &from, const QModelIndex &to)
+{
+ changePersistentIndex(from, to);
+}
+
+bool QtTestModel::removeRows( int row, int count, const QModelIndex & parent)
+{
+ QAbstractItemModel::beginRemoveRows(parent, row, row + count - 1);
+
+ for (int r = row+count-1; r >= row; --r)
+ table.remove(r);
+ rCount = table.count();
+
+ QAbstractItemModel::endRemoveRows();
+ return true;
+}
+
+bool QtTestModel::removeColumns(int column, int count, const QModelIndex & parent)
+{
+ QAbstractItemModel::beginRemoveColumns(parent, column, column + count - 1);
+
+ for (int c = column+count-1; c > column; --c)
+ for (int r = 0; r < rCount; ++r)
+ table[r].remove(c);
+
+ cCount = table.at(0).count();
+
+ QAbstractItemModel::endRemoveColumns();
+ return true;
+}
+
+void QtTestModel::reset()
+{
+ QAbstractItemModel::reset();
+}
+
+tst_QAbstractItemModel::tst_QAbstractItemModel()
+{
+}
+
+tst_QAbstractItemModel::~tst_QAbstractItemModel()
+{
+}
+
+/**
+ * The source Model *must* be initialized before the _data function, since the _data function uses QModelIndexes to reference the items in the tables.
+ * Therefore, we must initialize it globally.
+ */
+
+void tst_QAbstractItemModel::initTestCase()
+{
+ qRegisterMetaType<QModelIndex>("QModelIndex");
+}
+
+void tst_QAbstractItemModel::cleanupTestCase()
+{
+
+}
+
+void tst_QAbstractItemModel::init()
+{
+ m_model = new DynamicTreeModel(this);
+
+ ModelInsertCommand *insertCommand = new ModelInsertCommand(m_model, this);
+ insertCommand->setNumCols(4);
+ insertCommand->setStartRow(0);
+ insertCommand->setEndRow(9);
+ insertCommand->doCommand();
+
+ insertCommand = new ModelInsertCommand(m_model, this);
+ insertCommand->setAncestorRowNumbers(QList<int>() << 5);
+ insertCommand->setNumCols(4);
+ insertCommand->setStartRow(0);
+ insertCommand->setEndRow(9);
+ insertCommand->doCommand();
+}
+
+void tst_QAbstractItemModel::cleanup()
+{
+
+}
+
+/*
+ tests
+*/
+
+void tst_QAbstractItemModel::index()
+{
+ QtTestModel model(1, 1);
+ QModelIndex idx = model.index(0, 0, QModelIndex());
+ QVERIFY(idx.isValid());
+}
+
+void tst_QAbstractItemModel::parent()
+{
+ QtTestModel model(1, 1);
+ QModelIndex idx = model.index(0, 0, QModelIndex());
+ QModelIndex par = model.parent(idx);
+ QVERIFY(!par.isValid());
+}
+
+void tst_QAbstractItemModel::hasChildren()
+{
+ QtTestModel model(1, 1);
+ QModelIndex idx = model.index(0, 0, QModelIndex());
+ QVERIFY(model.hasChildren(idx) == false);
+}
+
+void tst_QAbstractItemModel::_data()
+{
+ QtTestModel model(1, 1);
+ QModelIndex idx = model.index(0, 0, QModelIndex());
+ QVERIFY(idx.isValid());
+ QCOMPARE(model.data(idx, Qt::DisplayRole).toString(), QString("0/0"));
+
+ // Default does nothing
+ QCOMPARE(model.setHeaderData(0, Qt::Horizontal, QVariant(0), 0), false);
+}
+
+void tst_QAbstractItemModel::headerData()
+{
+ QtTestModel model(1, 1);
+ QCOMPARE(model.headerData(0, Qt::Horizontal, Qt::DisplayRole).toString(),
+ QString("1"));
+
+ // Default text alignment for header must be invalid
+ QVERIFY( !model.headerData(0, Qt::Horizontal, Qt::TextAlignmentRole).isValid() );
+}
+
+void tst_QAbstractItemModel::itemData()
+{
+ QtTestModel model(1, 1);
+ QModelIndex idx = model.index(0, 0, QModelIndex());
+ QVERIFY(idx.isValid());
+ QMap<int, QVariant> dat = model.itemData(idx);
+ QCOMPARE(dat.count(Qt::DisplayRole), 1);
+ QCOMPARE(dat.value(Qt::DisplayRole).toString(), QString("0/0"));
+}
+
+void tst_QAbstractItemModel::itemFlags()
+{
+ QtTestModel model(1, 1);
+ QModelIndex idx = model.index(0, 0, QModelIndex());
+ QVERIFY(idx.isValid());
+ Qt::ItemFlags flags = model.flags(idx);
+ QCOMPARE(Qt::ItemIsSelectable|Qt::ItemIsEnabled, flags);
+}
+
+void tst_QAbstractItemModel::match()
+{
+ QtTestModel model(4, 1);
+ QModelIndex start = model.index(0, 0, QModelIndex());
+ QVERIFY(start.isValid());
+ QModelIndexList res = model.match(start, Qt::DisplayRole, QVariant("1"), 3);
+ QCOMPARE(res.count(), 1);
+ QModelIndex idx = model.index(1, 0, QModelIndex());
+ bool areEqual = (idx == res.first());
+ QVERIFY(areEqual);
+
+ model.setData(model.index(0, 0, QModelIndex()), "bat", Qt::DisplayRole);
+ model.setData(model.index(1, 0, QModelIndex()), "cat", Qt::DisplayRole);
+ model.setData(model.index(2, 0, QModelIndex()), "dog", Qt::DisplayRole);
+ model.setData(model.index(3, 0, QModelIndex()), "boar", Qt::DisplayRole);
+
+ res = model.match(start, Qt::DisplayRole, QVariant("dog"), -1, Qt::MatchExactly);
+ QCOMPARE(res.count(), 1);
+ res = model.match(start, Qt::DisplayRole, QVariant("a"), -1, Qt::MatchContains);
+ QCOMPARE(res.count(), 3);
+ res = model.match(start, Qt::DisplayRole, QVariant("b"), -1, Qt::MatchStartsWith);
+ QCOMPARE(res.count(), 2);
+ res = model.match(start, Qt::DisplayRole, QVariant("t"), -1, Qt::MatchEndsWith);
+ QCOMPARE(res.count(), 2);
+ res = model.match(start, Qt::DisplayRole, QVariant("*a*"), -1, Qt::MatchWildcard);
+ QCOMPARE(res.count(), 3);
+ res = model.match(start, Qt::DisplayRole, QVariant(".*O.*"), -1, Qt::MatchRegExp);
+ QCOMPARE(res.count(), 2);
+ res = model.match(start, Qt::DisplayRole, QVariant(".*O.*"), -1, Qt::MatchRegExp | Qt::MatchCaseSensitive);
+ QCOMPARE(res.count(), 0);
+ res = model.match(start, Qt::DisplayRole, QVariant("BOAR"), -1, Qt::MatchFixedString);
+ QCOMPARE(res.count(), 1);
+ res = model.match(start, Qt::DisplayRole, QVariant("bat"), -1,
+ Qt::MatchFixedString | Qt::MatchCaseSensitive);
+ QCOMPARE(res.count(), 1);
+}
+
+typedef QPair<int, int> Position;
+typedef QVector<QPair<int, int> > Selection;
+typedef QVector<QVector<QString> > StringTable;
+typedef QVector<QString> StringTableRow;
+Q_DECLARE_METATYPE(Position)
+Q_DECLARE_METATYPE(Selection)
+Q_DECLARE_METATYPE(StringTable)
+
+static StringTableRow qStringTableRow(const QString &s1, const QString &s2, const QString &s3)
+{
+ StringTableRow row;
+ row << s1 << s2 << s3;
+ return row;
+}
+
+#ifdef Q_CC_MSVC
+# define STRINGTABLE (StringTable())
+#else
+# define STRINGTABLE StringTable()
+#endif
+
+void tst_QAbstractItemModel::dropMimeData_data()
+{
+ QTest::addColumn<StringTable>("src_table"); // drag source
+ QTest::addColumn<StringTable>("dst_table"); // drop target
+ QTest::addColumn<Selection>("selection"); // dragged items
+ QTest::addColumn<Position>("dst_position"); // drop position
+ QTest::addColumn<StringTable>("res_table"); // expected result
+
+ {
+ QTest::newRow("2x2 dropped at [0, 0]")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0) << Position(1, 1))
+ << Position(0, 0) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("A", "B", "" ))
+ << (qStringTableRow("D", "E", "" ))
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("2x2 dropped at [1, 0]")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0) << Position(1, 1))
+ << Position(1, 0) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("A", "B", "" ))
+ << (qStringTableRow("D", "E", "" ))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("2x2 dropped at [3, 0]")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0) << Position(1, 1))
+ << Position(3, 0) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5"))
+ << (qStringTableRow("A", "B", "" ))
+ << (qStringTableRow("D", "E", "" )));
+ }
+
+ {
+ QTest::newRow("2x2 dropped at [0, 1]")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0) << Position(1, 1))
+ << Position(0, 1) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("" , "A", "B"))
+ << (qStringTableRow("" , "D", "E"))
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("2x2 dropped at [0, 2] (line break)")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0) << Position(1, 1))
+ << Position(0, 2) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("" , "" , "A"))
+ << (qStringTableRow("" , "" , "D"))
+ << (qStringTableRow("" , "" , "B"))
+ << (qStringTableRow("" , "" , "E"))
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("2x2 dropped at [3, 2] (line break)")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0) << Position(1, 1))
+ << Position(3, 2) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5"))
+ << (qStringTableRow("" , "" , "A"))
+ << (qStringTableRow("" , "" , "D"))
+ << (qStringTableRow("" , "" , "B"))
+ << (qStringTableRow("" , "" , "E")));
+ }
+
+ {
+ QTest::newRow("non-square dropped at [0, 0]")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0))
+ << Position(0, 0) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("A", "B", "" ))
+ << (qStringTableRow("D", "" , "" ))
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("non-square dropped at [0, 2]")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection
+ << Position(0, 0) << Position(0, 1)
+ << Position(1, 0))
+ << Position(0, 2) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("" , "" , "A"))
+ << (qStringTableRow("" , "" , "D"))
+ << (qStringTableRow("" , "" , "B"))
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("2x 1x2 dropped at [0, 0] (duplicates)")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection; 2x the same row (to simulate selections in hierarchy)
+ << Position(0, 0) << Position(0, 1)
+ << Position(0, 0) << Position(0, 1))
+ << Position(0, 0) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("A", "B", "" ))
+ << (qStringTableRow("A", "" , "" ))
+ << (qStringTableRow("" , "B", "" )) // ### FIXME: strange behavior, but rare case
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")));
+ }
+
+ {
+ QTest::newRow("2x 1x2 dropped at [3, 2] (duplicates)")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection; 2x the same row (to simulate selections in hierarchy)
+ << Position(0, 0) << Position(0, 1)
+ << Position(0, 0) << Position(0, 1))
+ << Position(3, 2) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5"))
+ << (qStringTableRow("" , "" , "A"))
+ << (qStringTableRow("" , "" , "B"))
+ << (qStringTableRow("" , "" , "A"))
+ << (qStringTableRow("" , "" , "B")));
+ }
+ {
+ QTest::newRow("2x 1x2 dropped at [3, 2] (different rows)")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F"))
+ << (qStringTableRow("G", "H", "I")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection; 2x the same row (to simulate selections in hierarchy)
+ << Position(0, 0) << Position(0, 1)
+ << Position(2, 0) << Position(2, 1))
+ << Position(2, 1) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5"))
+ << (qStringTableRow("" , "A" , "B"))
+ << (qStringTableRow("" , "G" , "H")));
+ }
+
+ {
+ QTest::newRow("2x 1x2 dropped at [3, 2] (different rows, over the edge)")
+ << (STRINGTABLE // source table
+ << (qStringTableRow("A", "B", "C"))
+ << (qStringTableRow("D", "E", "F"))
+ << (qStringTableRow("G", "H", "I")))
+ << (STRINGTABLE // destination table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5")))
+ << (Selection() // selection; 2x the same row (to simulate selections in hierarchy)
+ << Position(0, 0) << Position(0, 1)
+ << Position(2, 0) << Position(2, 1))
+ << Position(3, 2) // drop position
+ << (STRINGTABLE // resulting table
+ << (qStringTableRow("0", "1", "2"))
+ << (qStringTableRow("3", "4", "5"))
+ << (qStringTableRow("" , "" , "A"))
+ << (qStringTableRow("" , "" , "G"))
+ << (qStringTableRow("" , "" , "B"))
+ << (qStringTableRow("" , "" , "H")));
+ }
+}
+
+void tst_QAbstractItemModel::dropMimeData()
+{
+ QFETCH(StringTable, src_table);
+ QFETCH(StringTable, dst_table);
+ QFETCH(Selection, selection);
+ QFETCH(Position, dst_position);
+ QFETCH(StringTable, res_table);
+
+ QtTestModel src(src_table);
+ QtTestModel dst(dst_table);
+ QtTestModel res(res_table);
+
+// qDebug() << "src" << src.rowCount(QModelIndex()) << src.columnCount(QModelIndex());
+// qDebug() << "dst" << dst.rowCount(QModelIndex()) << dst.columnCount(QModelIndex());
+// qDebug() << "res" << res.rowCount(QModelIndex()) << res.columnCount(QModelIndex());
+
+ // get the mimeData from the "selected" indexes
+ QModelIndexList selectedIndexes;
+ for (int i = 0; i < selection.count(); ++i)
+ selectedIndexes << src.index(selection.at(i).first, selection.at(i).second, QModelIndex());
+ QMimeData *md = src.mimeData(selectedIndexes);
+ // do the drop
+ dst.dropMimeData(md, Qt::CopyAction, dst_position.first, dst_position.second, QModelIndex());
+ delete md;
+
+ // compare to the expected results
+ QCOMPARE(dst.rowCount(QModelIndex()), res.rowCount(QModelIndex()));
+ QCOMPARE(dst.columnCount(QModelIndex()), res.columnCount(QModelIndex()));
+ for (int r = 0; r < dst.rowCount(QModelIndex()); ++r) {
+ for (int c = 0; c < dst.columnCount(QModelIndex()); ++c) {
+ QModelIndex dst_idx = dst.index(r, c, QModelIndex());
+ QModelIndex res_idx = res.index(r, c, QModelIndex());
+ QMap<int, QVariant> dst_data = dst.itemData(dst_idx);
+ QMap<int, QVariant> res_data = res.itemData(res_idx);
+ //if(dst_data != res_data)
+ // qDebug() << r << c << dst_data.value(0).toString() << res_data.value(0).toString();
+ QCOMPARE(dst_data , res_data);
+ }
+ }
+
+}
+
+
+void tst_QAbstractItemModel::changePersistentIndex()
+{
+ QtTestModel model(3, 3);
+ QModelIndex a = model.index(1, 2, QModelIndex());
+ QModelIndex b = model.index(2, 1, QModelIndex());
+ QPersistentModelIndex p(a);
+ QVERIFY(p == a);
+ model.setPersistent(a, b);
+ QVERIFY(p == b);
+}
+
+void tst_QAbstractItemModel::movePersistentIndex()
+{
+ QtTestModel model(3, 3);
+
+ QPersistentModelIndex a = model.index(1, 1);
+ QVERIFY(a.isValid());
+ QCOMPARE(a.row(), 1);
+ QCOMPARE(a.column(), 1);
+
+ model.insertRow(0);
+ QCOMPARE(a.row(), 2);
+
+ model.insertRow(1);
+ QCOMPARE(a.row(), 3);
+
+ model.insertColumn(0);
+ QCOMPARE(a.column(), 2);
+}
+
+void tst_QAbstractItemModel::removeRows()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy rowsAboutToBeRemovedSpy(&model, SIGNAL(rowsAboutToBeRemoved( const QModelIndex &, int , int )));
+ QSignalSpy rowsRemovedSpy(&model, SIGNAL(rowsRemoved( const QModelIndex &, int, int )));
+
+ QCOMPARE(model.removeRows(6, 4), true);
+ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1);
+ QCOMPARE(rowsRemovedSpy.count(), 1);
+}
+
+void tst_QAbstractItemModel::removeColumns()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy columnsAboutToBeRemovedSpy(&model, SIGNAL(columnsAboutToBeRemoved( const QModelIndex &, int , int )));
+ QSignalSpy columnsRemovedSpy(&model, SIGNAL(columnsRemoved( const QModelIndex &, int, int )));
+
+ QCOMPARE(model.removeColumns(6, 4), true);
+ QCOMPARE(columnsAboutToBeRemovedSpy.count(), 1);
+ QCOMPARE(columnsRemovedSpy.count(), 1);
+}
+
+void tst_QAbstractItemModel::insertRows()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy rowsAboutToBeInsertedSpy(&model, SIGNAL(rowsAboutToBeInserted( const QModelIndex &, int , int )));
+ QSignalSpy rowsInsertedSpy(&model, SIGNAL(rowsInserted( const QModelIndex &, int, int )));
+
+ QCOMPARE(model.insertRows(6, 4), true);
+ QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1);
+ QCOMPARE(rowsInsertedSpy.count(), 1);
+}
+
+void tst_QAbstractItemModel::insertColumns()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy columnsAboutToBeInsertedSpy(&model, SIGNAL(columnsAboutToBeInserted( const QModelIndex &, int , int )));
+ QSignalSpy columnsInsertedSpy(&model, SIGNAL(columnsInserted( const QModelIndex &, int, int )));
+
+ QCOMPARE(model.insertColumns(6, 4), true);
+ QCOMPARE(columnsAboutToBeInsertedSpy.count(), 1);
+ QCOMPARE(columnsInsertedSpy.count(), 1);
+}
+
+void tst_QAbstractItemModel::reset()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy resetSpy(&model, SIGNAL(modelReset()));
+ model.reset();
+ QCOMPARE(resetSpy.count(), 1);
+}
+
+void tst_QAbstractItemModel::complexChangesWithPersistent()
+{
+ QtTestModel model(10, 10);
+ QPersistentModelIndex a = model.index(1, 1, QModelIndex());
+ QPersistentModelIndex b = model.index(9, 7, QModelIndex());
+ QPersistentModelIndex c = model.index(5, 6, QModelIndex());
+ QPersistentModelIndex d = model.index(3, 9, QModelIndex());
+ QPersistentModelIndex e[10];
+ for (int i=0; i <10 ; i++) {
+ e[i] = model.index(2, i , QModelIndex());
+ }
+
+ QVERIFY(a == model.index(1, 1, QModelIndex()));
+ QVERIFY(b == model.index(9, 7, QModelIndex()));
+ QVERIFY(c == model.index(5, 6, QModelIndex()));
+ QVERIFY(d == model.index(3, 9, QModelIndex()));
+ for (int i=0; i <8 ; i++)
+ QVERIFY(e[i] == model.index(2, i , QModelIndex()));
+
+ //remove a bunch of columns
+ model.removeColumns(2, 4);
+
+ QVERIFY(a == model.index(1, 1, QModelIndex()));
+ QVERIFY(b == model.index(9, 3, QModelIndex()));
+ QVERIFY(c == model.index(5, 2, QModelIndex()));
+ QVERIFY(d == model.index(3, 5, QModelIndex()));
+ for (int i=0; i <2 ; i++)
+ QVERIFY(e[i] == model.index(2, i , QModelIndex()));
+ for (int i=2; i <6 ; i++)
+ QVERIFY(!e[i].isValid());
+ for (int i=6; i <10 ; i++)
+ QVERIFY(e[i] == model.index(2, i-4 , QModelIndex()));
+
+ //move some indexes around
+ model.setPersistent(model.index(1, 1 , QModelIndex()), model.index(9, 3 , QModelIndex()));
+ model.setPersistent(model.index(9, 3 , QModelIndex()), model.index(8, 4 , QModelIndex()));
+
+ QVERIFY(a == model.index(9, 3, QModelIndex()));
+ QVERIFY(b == model.index(8, 4, QModelIndex()));
+ QVERIFY(c == model.index(5, 2, QModelIndex()));
+ QVERIFY(d == model.index(3, 5, QModelIndex()));
+ for (int i=0; i <2 ; i++)
+ QVERIFY(e[i] == model.index(2, i , QModelIndex()));
+ for (int i=2; i <6 ; i++)
+ QVERIFY(!e[i].isValid());
+ for (int i=6; i <10 ; i++)
+ QVERIFY(e[i] == model.index(2, i-4 , QModelIndex()));
+
+ //inserting a bunch of columns
+ model.insertColumns(2, 2);
+ QVERIFY(a == model.index(9, 5, QModelIndex()));
+ QVERIFY(b == model.index(8, 6, QModelIndex()));
+ QVERIFY(c == model.index(5, 4, QModelIndex()));
+ QVERIFY(d == model.index(3, 7, QModelIndex()));
+ for (int i=0; i <2 ; i++)
+ QVERIFY(e[i] == model.index(2, i , QModelIndex()));
+ for (int i=2; i <6 ; i++)
+ QVERIFY(!e[i].isValid());
+ for (int i=6; i <10 ; i++)
+ QVERIFY(e[i] == model.index(2, i-2 , QModelIndex()));
+
+}
+
+void tst_QAbstractItemModel::testMoveSameParentDown_data()
+{
+ QTest::addColumn<int>("startRow");
+ QTest::addColumn<int>("endRow");
+ QTest::addColumn<int>("destRow");
+ // We can't put the actual parent index for the move in here because m_model is not defined until init() is run.
+ QTest::addColumn<bool>("topLevel");
+
+ // Move from the start to the middle
+ QTest::newRow("move01") << 0 << 2 << 8 << true;
+ // Move from the start to the end
+ QTest::newRow("move02") << 0 << 2 << 10 << true;
+ // Move from the middle to the middle
+ QTest::newRow("move03") << 3 << 5 << 8 << true;
+ // Move from the middle to the end
+ QTest::newRow("move04") << 3 << 5 << 10 << true;
+
+ QTest::newRow("move05") << 0 << 2 << 8 << false;
+ QTest::newRow("move06") << 0 << 2 << 10 << false;
+ QTest::newRow("move07") << 3 << 5 << 8 << false;
+ QTest::newRow("move08") << 3 << 5 << 10 << false;
+}
+
+void tst_QAbstractItemModel::testMoveSameParentDown()
+{
+ QFETCH( int, startRow);
+ QFETCH( int, endRow);
+ QFETCH( int, destRow);
+ QFETCH( bool, topLevel);
+
+ QModelIndex moveParent = topLevel ? QModelIndex() : m_model->index(5, 0);
+
+ QList<QPersistentModelIndex> persistentList;
+ QModelIndexList indexList;
+
+ for (int column = 0; column < m_model->columnCount(); ++column)
+ {
+ for (int row= 0; row < m_model->rowCount(); ++row)
+ {
+ QModelIndex idx = m_model->index(row, column);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ persistentList << QPersistentModelIndex(idx);
+ }
+ }
+
+ QModelIndex parent = m_model->index(5, 0);
+ for (int column = 0; column < m_model->columnCount(); ++column)
+ {
+ for (int row= 0; row < m_model->rowCount(parent); ++row)
+ {
+ QModelIndex idx = m_model->index(row, column, parent);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ persistentList << QPersistentModelIndex(idx);
+ }
+ }
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setNumCols(4);
+ if (!topLevel)
+ moveCommand->setAncestorRowNumbers(QList<int>() << 5);
+ moveCommand->setStartRow(startRow);
+ moveCommand->setEndRow(endRow);
+ moveCommand->setDestRow(destRow);
+ if (!topLevel)
+ moveCommand->setDestAncestors(QList<int>() << 5);
+ moveCommand->doCommand();
+
+ QVariantList beforeSignal = beforeSpy.takeAt(0);
+ QVariantList afterSignal = afterSpy.takeAt(0);
+
+ QCOMPARE(beforeSignal.size(), 5);
+ QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), moveParent);
+ QCOMPARE(beforeSignal.at(1).toInt(), startRow);
+ QCOMPARE(beforeSignal.at(2).toInt(), endRow);
+ QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), moveParent);
+ QCOMPARE(beforeSignal.at(4).toInt(), destRow);
+
+ QCOMPARE(afterSignal.size(), 5);
+ QCOMPARE(afterSignal.at(0).value<QModelIndex>(), moveParent);
+ QCOMPARE(afterSignal.at(1).toInt(), startRow);
+ QCOMPARE(afterSignal.at(2).toInt(), endRow);
+ QCOMPARE(afterSignal.at(3).value<QModelIndex>(), moveParent);
+ QCOMPARE(afterSignal.at(4).toInt(), destRow);
+
+ for (int i = 0; i < indexList.size(); i++)
+ {
+ QModelIndex idx = indexList.at(i);
+ QModelIndex persistentIndex = persistentList.at(i);
+ if (idx.parent() == moveParent)
+ {
+ int row = idx.row();
+ if ( row >= startRow)
+ {
+ if (row <= endRow)
+ {
+ QCOMPARE(row + destRow - endRow - 1, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idx.parent(), persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else if ( row < destRow)
+ {
+ QCOMPARE(row - (endRow - startRow + 1), persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idx.parent(), persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ }
+}
+
+void tst_QAbstractItemModel::testMoveSameParentUp_data()
+{
+ QTest::addColumn<int>("startRow");
+ QTest::addColumn<int>("endRow");
+ QTest::addColumn<int>("destRow");
+ QTest::addColumn<bool>("topLevel");
+
+ // Move from the middle to the start
+ QTest::newRow("move01") << 5 << 7 << 0 << true;
+ // Move from the end to the start
+ QTest::newRow("move02") << 8 << 9 << 0 << true;
+ // Move from the middle to the middle
+ QTest::newRow("move03") << 5 << 7 << 2 << true;
+ // Move from the end to the middle
+ QTest::newRow("move04") << 8 << 9 << 5 << true;
+
+ QTest::newRow("move05") << 5 << 7 << 0 << false;
+ QTest::newRow("move06") << 8 << 9 << 0 << false;
+ QTest::newRow("move07") << 5 << 7 << 2 << false;
+ QTest::newRow("move08") << 8 << 9 << 5 << false;
+}
+
+void tst_QAbstractItemModel::testMoveSameParentUp()
+{
+
+ QFETCH( int, startRow);
+ QFETCH( int, endRow);
+ QFETCH( int, destRow);
+ QFETCH( bool, topLevel);
+
+ QModelIndex moveParent = topLevel ? QModelIndex() : m_model->index(5, 0);
+
+ QList<QPersistentModelIndex> persistentList;
+ QModelIndexList indexList;
+
+ for (int column = 0; column < m_model->columnCount(); ++column)
+ {
+ for (int row= 0; row < m_model->rowCount(); ++row)
+ {
+ QModelIndex idx = m_model->index(row, column);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ persistentList << QPersistentModelIndex(idx);
+ }
+ }
+
+ QModelIndex parent = m_model->index(2, 0);
+ for (int column = 0; column < m_model->columnCount(); ++column)
+ {
+ for (int row= 0; row < m_model->rowCount(parent); ++row)
+ {
+ QModelIndex idx = m_model->index(row, column, parent);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ persistentList << QPersistentModelIndex(idx);
+ }
+ }
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setNumCols(4);
+ if (!topLevel)
+ moveCommand->setAncestorRowNumbers(QList<int>() << 5);
+ moveCommand->setStartRow(startRow);
+ moveCommand->setEndRow(endRow);
+ moveCommand->setDestRow(destRow);
+ if (!topLevel)
+ moveCommand->setDestAncestors(QList<int>() << 5);
+ moveCommand->doCommand();
+
+ QVariantList beforeSignal = beforeSpy.takeAt(0);
+ QVariantList afterSignal = afterSpy.takeAt(0);
+
+ QCOMPARE(beforeSignal.size(), 5);
+ QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), moveParent);
+ QCOMPARE(beforeSignal.at(1).toInt(), startRow);
+ QCOMPARE(beforeSignal.at(2).toInt(), endRow);
+ QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), moveParent);
+ QCOMPARE(beforeSignal.at(4).toInt(), destRow);
+
+ QCOMPARE(afterSignal.size(), 5);
+ QCOMPARE(afterSignal.at(0).value<QModelIndex>(), moveParent);
+ QCOMPARE(afterSignal.at(1).toInt(), startRow);
+ QCOMPARE(afterSignal.at(2).toInt(), endRow);
+ QCOMPARE(afterSignal.at(3).value<QModelIndex>(), moveParent);
+ QCOMPARE(afterSignal.at(4).toInt(), destRow);
+
+
+ for (int i = 0; i < indexList.size(); i++)
+ {
+ QModelIndex idx = indexList.at(i);
+ QModelIndex persistentIndex = persistentList.at(i);
+ if (idx.parent() == moveParent)
+ {
+ int row = idx.row();
+ if ( row >= destRow)
+ {
+ if (row < startRow)
+ {
+ QCOMPARE(row + endRow - startRow + 1, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idx.parent(), persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else if ( row <= endRow)
+ {
+ QCOMPARE(row + destRow - startRow, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idx.parent(), persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ }
+}
+
+void tst_QAbstractItemModel::testMoveThroughProxy()
+{
+ QSortFilterProxyModel *proxy = new QSortFilterProxyModel(this);
+ proxy->setSourceModel(m_model);
+
+ QList<QPersistentModelIndex> persistentList;
+
+ persistentList.append(proxy->index(0, 0));
+ persistentList.append(proxy->index(0, 0, proxy->mapFromSource(m_model->index(5, 0))));
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setNumCols(4);
+ moveCommand->setAncestorRowNumbers(QList<int>() << 5);
+ moveCommand->setStartRow(0);
+ moveCommand->setEndRow(0);
+ moveCommand->setDestRow(0);
+ moveCommand->doCommand();
+}
+
+void tst_QAbstractItemModel::testMoveToGrandParent_data()
+{
+ QTest::addColumn<int>("startRow");
+ QTest::addColumn<int>("endRow");
+ QTest::addColumn<int>("destRow");
+
+ // Move from the start to the middle
+ QTest::newRow("move01") << 0 << 2 << 8;
+ // Move from the start to the end
+ QTest::newRow("move02") << 0 << 2 << 10;
+ // Move from the middle to the middle
+ QTest::newRow("move03") << 3 << 5 << 8;
+ // Move from the middle to the end
+ QTest::newRow("move04") << 3 << 5 << 10;
+
+ // Move from the middle to the start
+ QTest::newRow("move05") << 5 << 7 << 0;
+ // Move from the end to the start
+ QTest::newRow("move06") << 8 << 9 << 0;
+ // Move from the middle to the middle
+ QTest::newRow("move07") << 5 << 7 << 2;
+ // Move from the end to the middle
+ QTest::newRow("move08") << 8 << 9 << 5;
+
+ // Moving to the same row in a different parent doesn't confuse things.
+ QTest::newRow("move09") << 8 << 8 << 8;
+
+ // Moving to the row of my parent and its neighbours doesn't confuse things
+ QTest::newRow("move09") << 8 << 8 << 4;
+ QTest::newRow("move10") << 8 << 8 << 5;
+ QTest::newRow("move11") << 8 << 8 << 6;
+
+ // Moving everything from one parent to another
+ QTest::newRow("move12") << 0 << 9 << 10;
+ QTest::newRow("move13") << 0 << 9 << 0;
+}
+
+void tst_QAbstractItemModel::testMoveToGrandParent()
+{
+
+ QFETCH( int, startRow);
+ QFETCH( int, endRow);
+ QFETCH( int, destRow);
+
+ QList<QPersistentModelIndex> persistentList;
+ QModelIndexList indexList;
+ QModelIndexList parentsList;
+
+ for (int column = 0; column < m_model->columnCount(); ++column)
+ {
+ for (int row= 0; row < m_model->rowCount(); ++row)
+ {
+ QModelIndex idx = m_model->index(row, column);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+ }
+
+ QModelIndex sourceIndex = m_model->index(5, 0);
+ for (int column = 0; column < m_model->columnCount(); ++column)
+ {
+ for (int row= 0; row < m_model->rowCount(sourceIndex); ++row)
+ {
+ QModelIndex idx = m_model->index(row, column, sourceIndex);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+ }
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+ QPersistentModelIndex persistentSource = sourceIndex;
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setAncestorRowNumbers(QList<int>() << 5);
+ moveCommand->setNumCols(4);
+ moveCommand->setStartRow(startRow);
+ moveCommand->setEndRow(endRow);
+ moveCommand->setDestRow(destRow);
+ moveCommand->doCommand();
+
+ QVariantList beforeSignal = beforeSpy.takeAt(0);
+ QVariantList afterSignal = afterSpy.takeAt(0);
+
+ QCOMPARE(beforeSignal.size(), 5);
+ QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), sourceIndex);
+ QCOMPARE(beforeSignal.at(1).toInt(), startRow);
+ QCOMPARE(beforeSignal.at(2).toInt(), endRow);
+ QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), QModelIndex());
+ QCOMPARE(beforeSignal.at(4).toInt(), destRow);
+
+ QCOMPARE(afterSignal.size(), 5);
+ QCOMPARE(afterSignal.at(0).value<QModelIndex>(), static_cast<QModelIndex>(persistentSource));
+ QCOMPARE(afterSignal.at(1).toInt(), startRow);
+ QCOMPARE(afterSignal.at(2).toInt(), endRow);
+ QCOMPARE(afterSignal.at(3).value<QModelIndex>(), QModelIndex());
+ QCOMPARE(afterSignal.at(4).toInt(), destRow);
+
+ for (int i = 0; i < indexList.size(); i++)
+ {
+ QModelIndex idx = indexList.at(i);
+ QModelIndex idxParent = parentsList.at(i);
+ QModelIndex persistentIndex = persistentList.at(i);
+ int row = idx.row();
+ if (idxParent == QModelIndex())
+ {
+ if ( row >= destRow)
+ {
+ QCOMPARE(row + endRow - startRow + 1, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idxParent, persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ if (row < startRow)
+ {
+ QCOMPARE(idx, persistentIndex);
+ } else if (row <= endRow)
+ {
+ QCOMPARE(row + destRow - startRow, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(QModelIndex(), persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else {
+ QCOMPARE(row - (endRow - startRow + 1), persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+
+ if (idxParent.row() >= destRow)
+ {
+ QModelIndex adjustedParent;
+ adjustedParent = idxParent.sibling( idxParent.row() + endRow - startRow + 1, idxParent.column());
+ QCOMPARE(adjustedParent, persistentIndex.parent());
+ } else
+ {
+ QCOMPARE(idxParent, persistentIndex.parent());
+ }
+ QCOMPARE(idx.model(), persistentIndex.model());
+ }
+ }
+ }
+}
+
+void tst_QAbstractItemModel::testMoveToSibling_data()
+{
+ QTest::addColumn<int>("startRow");
+ QTest::addColumn<int>("endRow");
+ QTest::addColumn<int>("destRow");
+
+ // Move from the start to the middle
+ QTest::newRow("move01") << 0 << 2 << 8;
+ // Move from the start to the end
+ QTest::newRow("move02") << 0 << 2 << 10;
+ // Move from the middle to the middle
+ QTest::newRow("move03") << 2 << 4 << 8;
+ // Move from the middle to the end
+ QTest::newRow("move04") << 2 << 4 << 10;
+
+ // Move from the middle to the start
+ QTest::newRow("move05") << 8 << 8 << 0;
+ // Move from the end to the start
+ QTest::newRow("move06") << 8 << 9 << 0;
+ // Move from the middle to the middle
+ QTest::newRow("move07") << 6 << 8 << 2;
+ // Move from the end to the middle
+ QTest::newRow("move08") << 8 << 9 << 5;
+
+ // Moving to the same row in a different parent doesn't confuse things.
+ QTest::newRow("move09") << 8 << 8 << 8;
+
+ // Moving to the row of my target and its neighbours doesn't confuse things
+ QTest::newRow("move09") << 8 << 8 << 4;
+ QTest::newRow("move10") << 8 << 8 << 5;
+ QTest::newRow("move11") << 8 << 8 << 6;
+
+ // Move such that the destination parent no longer valid after the move.
+ // The destination parent is always QMI(5, 0), but after this move the
+ // row count is 5, so (5, 0) (used internally in QAIM) no longer refers to a valid index.
+ QTest::newRow("move12") << 0 << 4 << 0;
+}
+
+void tst_QAbstractItemModel::testMoveToSibling()
+{
+
+ QFETCH( int, startRow);
+ QFETCH( int, endRow);
+ QFETCH( int, destRow);
+
+ QList<QPersistentModelIndex> persistentList;
+ QModelIndexList indexList;
+ QModelIndexList parentsList;
+
+ const int column = 0;
+
+ for (int i= 0; i < m_model->rowCount(); ++i)
+ {
+ QModelIndex idx = m_model->index(i, column);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+
+ QModelIndex destIndex = m_model->index(5, 0);
+ QModelIndex sourceIndex;
+ for (int i= 0; i < m_model->rowCount(destIndex); ++i)
+ {
+ QModelIndex idx = m_model->index(i, column, destIndex);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+ QPersistentModelIndex persistentDest = destIndex;
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setNumCols(4);
+ moveCommand->setStartRow(startRow);
+ moveCommand->setEndRow(endRow);
+ moveCommand->setDestAncestors(QList<int>() << 5);
+ moveCommand->setDestRow(destRow);
+ moveCommand->doCommand();
+
+ QVariantList beforeSignal = beforeSpy.takeAt(0);
+ QVariantList afterSignal = afterSpy.takeAt(0);
+
+ QCOMPARE(beforeSignal.size(), 5);
+ QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), sourceIndex);
+ QCOMPARE(beforeSignal.at(1).toInt(), startRow);
+ QCOMPARE(beforeSignal.at(2).toInt(), endRow);
+ QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), destIndex);
+ QCOMPARE(beforeSignal.at(4).toInt(), destRow);
+
+ QCOMPARE(afterSignal.size(), 5);
+ QCOMPARE(afterSignal.at(0).value<QModelIndex>(), sourceIndex);
+ QCOMPARE(afterSignal.at(1).toInt(), startRow);
+ QCOMPARE(afterSignal.at(2).toInt(), endRow);
+ QCOMPARE(afterSignal.at(3).value<QModelIndex>(), static_cast<QModelIndex>(persistentDest));
+ QCOMPARE(afterSignal.at(4).toInt(), destRow);
+
+ for (int i = 0; i < indexList.size(); i++)
+ {
+ QModelIndex idx = indexList.at(i);
+ QModelIndex idxParent = parentsList.at(i);
+ QModelIndex persistentIndex = persistentList.at(i);
+
+ QModelIndex adjustedDestination = destIndex.sibling(destIndex.row() - (endRow - startRow + 1), destIndex.column());
+ int row = idx.row();
+ if (idxParent == destIndex)
+ {
+ if ( row >= destRow)
+ {
+ QCOMPARE(row + endRow - startRow + 1, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ if (idxParent.row() > startRow)
+ {
+ QCOMPARE(adjustedDestination, persistentIndex.parent());
+ } else {
+ QCOMPARE(destIndex, persistentIndex.parent());
+ }
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ if (row < startRow)
+ {
+ QCOMPARE(idx, persistentIndex);
+ } else if (row <= endRow)
+ {
+ QCOMPARE(row + destRow - startRow, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ if (destIndex.row() > startRow)
+ {
+ QCOMPARE(adjustedDestination, persistentIndex.parent());
+ } else {
+ QCOMPARE(destIndex, persistentIndex.parent());
+ }
+
+ QCOMPARE(idx.model(), persistentIndex.model());
+
+ } else {
+ QCOMPARE(row - (endRow - startRow + 1), persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idxParent, persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ }
+ }
+ }
+}
+
+void tst_QAbstractItemModel::testMoveToUncle_data()
+{
+
+ QTest::addColumn<int>("startRow");
+ QTest::addColumn<int>("endRow");
+ QTest::addColumn<int>("destRow");
+
+ // Move from the start to the middle
+ QTest::newRow("move01") << 0 << 2 << 8;
+ // Move from the start to the end
+ QTest::newRow("move02") << 0 << 2 << 10;
+ // Move from the middle to the middle
+ QTest::newRow("move03") << 3 << 5 << 8;
+ // Move from the middle to the end
+ QTest::newRow("move04") << 3 << 5 << 10;
+
+ // Move from the middle to the start
+ QTest::newRow("move05") << 5 << 7 << 0;
+ // Move from the end to the start
+ QTest::newRow("move06") << 8 << 9 << 0;
+ // Move from the middle to the middle
+ QTest::newRow("move07") << 5 << 7 << 2;
+ // Move from the end to the middle
+ QTest::newRow("move08") << 8 << 9 << 5;
+
+ // Moving to the same row in a different parent doesn't confuse things.
+ QTest::newRow("move09") << 8 << 8 << 8;
+
+ // Moving to the row of my parent and its neighbours doesn't confuse things
+ QTest::newRow("move09") << 8 << 8 << 4;
+ QTest::newRow("move10") << 8 << 8 << 5;
+ QTest::newRow("move11") << 8 << 8 << 6;
+
+ // Moving everything from one parent to another
+ QTest::newRow("move12") << 0 << 9 << 10;
+}
+
+void tst_QAbstractItemModel::testMoveToUncle()
+{
+ // Need to have some extra rows available.
+ ModelInsertCommand *insertCommand = new ModelInsertCommand(m_model, this);
+ insertCommand->setAncestorRowNumbers(QList<int>() << 9);
+ insertCommand->setNumCols(4);
+ insertCommand->setStartRow(0);
+ insertCommand->setEndRow(9);
+ insertCommand->doCommand();
+
+ QFETCH( int, startRow);
+ QFETCH( int, endRow);
+ QFETCH( int, destRow);
+
+ QList<QPersistentModelIndex> persistentList;
+ QModelIndexList indexList;
+ QModelIndexList parentsList;
+
+ const int column = 0;
+
+ QModelIndex sourceIndex = m_model->index(9, 0);
+ for (int i= 0; i < m_model->rowCount(sourceIndex); ++i)
+ {
+ QModelIndex idx = m_model->index(i, column, sourceIndex);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+
+ QModelIndex destIndex = m_model->index(5, 0);
+ for (int i= 0; i < m_model->rowCount(destIndex); ++i)
+ {
+ QModelIndex idx = m_model->index(i, column, destIndex);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setAncestorRowNumbers(QList<int>() << 9);
+ moveCommand->setNumCols(4);
+ moveCommand->setStartRow(startRow);
+ moveCommand->setEndRow(endRow);
+ moveCommand->setDestAncestors(QList<int>() << 5);
+ moveCommand->setDestRow(destRow);
+ moveCommand->doCommand();
+
+ QVariantList beforeSignal = beforeSpy.takeAt(0);
+ QVariantList afterSignal = afterSpy.takeAt(0);
+
+ QCOMPARE(beforeSignal.size(), 5);
+ QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), sourceIndex);
+ QCOMPARE(beforeSignal.at(1).toInt(), startRow);
+ QCOMPARE(beforeSignal.at(2).toInt(), endRow);
+ QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), destIndex);
+ QCOMPARE(beforeSignal.at(4).toInt(), destRow);
+
+ QCOMPARE(afterSignal.size(), 5);
+ QCOMPARE(afterSignal.at(0).value<QModelIndex>(), sourceIndex);
+ QCOMPARE(afterSignal.at(1).toInt(), startRow);
+ QCOMPARE(afterSignal.at(2).toInt(), endRow);
+ QCOMPARE(afterSignal.at(3).value<QModelIndex>(), destIndex);
+ QCOMPARE(afterSignal.at(4).toInt(), destRow);
+
+ for (int i = 0; i < indexList.size(); i++)
+ {
+ QModelIndex idx = indexList.at(i);
+ QModelIndex idxParent = parentsList.at(i);
+ QModelIndex persistentIndex = persistentList.at(i);
+
+ int row = idx.row();
+ if (idxParent == destIndex)
+ {
+ if ( row >= destRow)
+ {
+ QCOMPARE(row + endRow - startRow + 1, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(destIndex, persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ } else
+ {
+ QCOMPARE(idx, persistentIndex);
+ }
+ } else
+ {
+ if (row < startRow)
+ {
+ QCOMPARE(idx, persistentIndex);
+ } else if (row <= endRow)
+ {
+ QCOMPARE(row + destRow - startRow, persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(destIndex, persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+
+ } else {
+ QCOMPARE(row - (endRow - startRow + 1), persistentIndex.row() );
+ QCOMPARE(idx.column(), persistentIndex.column());
+ QCOMPARE(idxParent, persistentIndex.parent());
+ QCOMPARE(idx.model(), persistentIndex.model());
+ }
+ }
+ }
+}
+
+void tst_QAbstractItemModel::testMoveToDescendants()
+{
+ // Attempt to move a row to its ancestors depth rows deep.
+ const int depth = 6;
+
+ // Need to have some extra rows available in a tree.
+ QList<int> rows;
+ ModelInsertCommand *insertCommand;
+ for (int i = 0; i < depth; i++)
+ {
+ insertCommand = new ModelInsertCommand(m_model, this);
+ insertCommand->setAncestorRowNumbers(rows);
+ insertCommand->setNumCols(4);
+ insertCommand->setStartRow(0);
+ insertCommand->setEndRow(9);
+ insertCommand->doCommand();
+ rows << 9;
+ }
+
+ QList<QPersistentModelIndex> persistentList;
+ QModelIndexList indexList;
+ QModelIndexList parentsList;
+
+ const int column = 0;
+
+ QModelIndex sourceIndex = m_model->index(9, 0);
+ for (int i= 0; i < m_model->rowCount(sourceIndex); ++i)
+ {
+ QModelIndex idx = m_model->index(i, column, sourceIndex);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+
+ QModelIndex destIndex = m_model->index(5, 0);
+ for (int i= 0; i < m_model->rowCount(destIndex); ++i)
+ {
+ QModelIndex idx = m_model->index(i, column, destIndex);
+ QVERIFY(idx.isValid());
+ indexList << idx;
+ parentsList << idx.parent();
+ persistentList << QPersistentModelIndex(idx);
+ }
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+ ModelMoveCommand *moveCommand;
+ QList<int> ancestors;
+ while (ancestors.size() < depth)
+ {
+ ancestors << 9;
+ for (int row = 0; row <= 9; row++)
+ {
+ moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setNumCols(4);
+ moveCommand->setStartRow(9);
+ moveCommand->setEndRow(9);
+ moveCommand->setDestAncestors(ancestors);
+ moveCommand->setDestRow(row);
+ moveCommand->doCommand();
+
+ QVERIFY(beforeSpy.size() == 0);
+ QVERIFY(afterSpy.size() == 0);
+ }
+ }
+}
+
+void tst_QAbstractItemModel::testMoveWithinOwnRange_data()
+{
+ QTest::addColumn<int>("startRow");
+ QTest::addColumn<int>("endRow");
+ QTest::addColumn<int>("destRow");
+
+ QTest::newRow("move01") << 0 << 0 << 0;
+ QTest::newRow("move02") << 0 << 0 << 1;
+ QTest::newRow("move03") << 0 << 5 << 0;
+ QTest::newRow("move04") << 0 << 5 << 1;
+ QTest::newRow("move05") << 0 << 5 << 2;
+ QTest::newRow("move06") << 0 << 5 << 3;
+ QTest::newRow("move07") << 0 << 5 << 4;
+ QTest::newRow("move08") << 0 << 5 << 5;
+ QTest::newRow("move09") << 0 << 5 << 6;
+ QTest::newRow("move08") << 3 << 5 << 5;
+ QTest::newRow("move08") << 3 << 5 << 6;
+ QTest::newRow("move09") << 4 << 5 << 5;
+ QTest::newRow("move10") << 4 << 5 << 6;
+ QTest::newRow("move11") << 5 << 5 << 5;
+ QTest::newRow("move12") << 5 << 5 << 6;
+ QTest::newRow("move13") << 5 << 9 << 9;
+ QTest::newRow("move14") << 5 << 9 << 10;
+ QTest::newRow("move15") << 6 << 9 << 9;
+ QTest::newRow("move16") << 6 << 9 << 10;
+ QTest::newRow("move17") << 7 << 9 << 9;
+ QTest::newRow("move18") << 7 << 9 << 10;
+ QTest::newRow("move19") << 8 << 9 << 9;
+ QTest::newRow("move20") << 8 << 9 << 10;
+ QTest::newRow("move21") << 9 << 9 << 9;
+ QTest::newRow("move22") << 0 << 9 << 10;
+
+}
+
+void tst_QAbstractItemModel::testMoveWithinOwnRange()
+{
+
+ QFETCH( int, startRow);
+ QFETCH( int, endRow);
+ QFETCH( int, destRow);
+
+
+ QSignalSpy beforeSpy(m_model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+ QSignalSpy afterSpy(m_model, SIGNAL(rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int)));
+
+ ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
+ moveCommand->setNumCols(4);
+ moveCommand->setStartRow(startRow);
+ moveCommand->setEndRow(endRow);
+ moveCommand->setDestRow(destRow);
+ moveCommand->doCommand();
+
+ QVERIFY(beforeSpy.size() == 0);
+ QVERIFY(afterSpy.size() == 0);
+
+
+}
+
+class ListenerObject : public QObject
+{
+ Q_OBJECT
+public:
+ ListenerObject(QAbstractProxyModel *parent);
+
+protected:
+ void fillIndexStores(const QModelIndex &parent);
+
+public slots:
+ void slotAboutToBeReset();
+ void slotReset();
+
+private:
+ QAbstractProxyModel *m_model;
+ QList<QPersistentModelIndex> m_persistentIndexes;
+ QModelIndexList m_nonPersistentIndexes;
+};
+
+
+ListenerObject::ListenerObject(QAbstractProxyModel *parent)
+ : QObject(parent), m_model(parent)
+{
+ connect(m_model, SIGNAL(modelAboutToBeReset()), SLOT(slotAboutToBeReset()));
+ connect(m_model, SIGNAL(modelReset()), SLOT(slotReset()));
+
+ fillIndexStores(QModelIndex());
+}
+
+void ListenerObject::fillIndexStores(const QModelIndex &parent)
+{
+ const int column = 0;
+ int row = 0;
+ QModelIndex idx = m_model->index(row, column, parent);
+ while (idx.isValid())
+ {
+ m_persistentIndexes << QPersistentModelIndex(idx);
+ m_nonPersistentIndexes << idx;
+ if (m_model->hasChildren(idx))
+ {
+ fillIndexStores(idx);
+ }
+ ++row;
+ idx = m_model->index(row, column, parent);
+ }
+}
+
+void ListenerObject::slotAboutToBeReset()
+{
+ // Nothing has been changed yet. All indexes should be the same.
+ for (int i = 0; i < m_persistentIndexes.size(); ++i)
+ {
+ QModelIndex idx = m_persistentIndexes.at(i);
+ QVERIFY(idx == m_nonPersistentIndexes.at(i));
+ QVERIFY(m_model->mapToSource(idx).isValid());
+ }
+}
+
+void ListenerObject::slotReset()
+{
+ foreach(const QModelIndex &idx, m_persistentIndexes)
+ {
+ QVERIFY(!idx.isValid());
+ }
+}
+
+
+void tst_QAbstractItemModel::testReset()
+{
+ QSignalSpy beforeResetSpy(m_model, SIGNAL(modelAboutToBeReset()));
+ QSignalSpy afterResetSpy(m_model, SIGNAL(modelReset()));
+
+
+ QSortFilterProxyModel *nullProxy = new QSortFilterProxyModel(this);
+ nullProxy->setSourceModel(m_model);
+
+ // Makes sure the model and proxy are in a consistent state. before and after reset.
+ new ListenerObject(nullProxy);
+
+ ModelResetCommandFixed *resetCommand = new ModelResetCommandFixed(m_model, this);
+
+ resetCommand->setNumCols(4);
+ resetCommand->setStartRow(0);
+ resetCommand->setEndRow(0);
+ resetCommand->setDestRow(0);
+ resetCommand->setDestAncestors(QList<int>() << 5);
+ resetCommand->doCommand();
+
+ // Verify that the correct signals were emitted
+ QVERIFY(beforeResetSpy.size() == 1);
+ QVERIFY(afterResetSpy.size() == 1);
+
+ // Verify that the move actually happened.
+ QVERIFY(m_model->rowCount() == 9);
+ QModelIndex destIndex = m_model->index(4, 0);
+ QVERIFY(m_model->rowCount(destIndex) == 11);
+
+}
+
+
+QTEST_MAIN(tst_QAbstractItemModel)
+#include "tst_qabstractitemmodel.moc"
diff --git a/tests/auto/corelib/kernel/qcoreapplication/.gitignore b/tests/auto/corelib/kernel/qcoreapplication/.gitignore
new file mode 100644
index 0000000000..8cba8c359f
--- /dev/null
+++ b/tests/auto/corelib/kernel/qcoreapplication/.gitignore
@@ -0,0 +1 @@
+tst_qcoreapplication
diff --git a/tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro b/tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro
new file mode 100644
index 0000000000..031af39df7
--- /dev/null
+++ b/tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qcoreapplication.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
new file mode 100644
index 0000000000..99f0941ac2
--- /dev/null
+++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
@@ -0,0 +1,582 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/QtCore>
+#include <QtTest/QtTest>
+
+class tst_QCoreApplication: public QObject
+{
+ Q_OBJECT
+private slots:
+ void sendEventsOnProcessEvents(); // this must be the first test
+ void getSetCheck();
+ void qAppName();
+ void argc();
+ void postEvent();
+ void removePostedEvents();
+#ifndef QT_NO_THREAD
+ void deliverInDefinedOrder();
+#endif
+ void applicationPid();
+ void globalPostedEventsCount();
+ void processEventsAlwaysSendsPostedEvents();
+ void reexec();
+ void execAfterExit();
+ void eventLoopExecAfterExit();
+};
+
+class EventSpy : public QObject
+{
+ Q_OBJECT
+
+public:
+ QList<int> recordedEvents;
+ bool eventFilter(QObject *, QEvent *event)
+ {
+ recordedEvents.append(event->type());
+ return false;
+ }
+};
+
+void tst_QCoreApplication::sendEventsOnProcessEvents()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+
+ EventSpy spy;
+ app.installEventFilter(&spy);
+
+ QCoreApplication::postEvent(&app, new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCoreApplication::processEvents();
+ QVERIFY(spy.recordedEvents.contains(QEvent::User + 1));
+}
+
+void tst_QCoreApplication::getSetCheck()
+{
+ // do not crash
+ QString v = QCoreApplication::applicationVersion();
+ v = QLatin1String("3.0.0 prerelease 1");
+ QCoreApplication::setApplicationVersion(v);
+ QCOMPARE(QCoreApplication::applicationVersion(), v);
+
+ // Test the property
+ {
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+ QCOMPARE(app.property("applicationVersion").toString(), v);
+ }
+ v = QString();
+ QCoreApplication::setApplicationVersion(v);
+ QCOMPARE(QCoreApplication::applicationVersion(), v);
+}
+
+void tst_QCoreApplication::qAppName()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+ QVERIFY(!::qAppName().isEmpty());
+}
+
+void tst_QCoreApplication::argc()
+{
+ {
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+ QCOMPARE(argc, 1);
+ QCOMPARE(app.argc(), 1);
+ }
+
+ {
+ int argc = 4;
+ char *argv[] = { "tst_qcoreapplication", "arg1", "arg2", "arg3" };
+ QCoreApplication app(argc, argv);
+ QCOMPARE(argc, 4);
+ QCOMPARE(app.argc(), 4);
+ }
+
+ {
+ int argc = 0;
+ char **argv = 0;
+ QCoreApplication app(argc, argv);
+ QCOMPARE(argc, 0);
+ QCOMPARE(app.argc(), 0);
+ }
+}
+
+class EventGenerator : public QObject
+{
+ Q_OBJECT
+
+public:
+ QObject *other;
+
+ bool event(QEvent *e)
+ {
+ if (e->type() == QEvent::MaxUser) {
+ QCoreApplication::sendPostedEvents(other, 0);
+ } else if (e->type() <= QEvent::User + 999) {
+ // post a new event in response to this posted event
+ int offset = e->type() - QEvent::User;
+ offset = (offset * 10 + offset % 10);
+ QCoreApplication::postEvent(this, new QEvent(QEvent::Type(QEvent::User + offset)), offset);
+ }
+
+ return QObject::event(e);
+ }
+};
+
+void tst_QCoreApplication::postEvent()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+
+ EventSpy spy;
+ EventGenerator odd, even;
+ odd.other = &even;
+ odd.installEventFilter(&spy);
+ even.other = &odd;
+ even.installEventFilter(&spy);
+
+ QCoreApplication::postEvent(&odd, new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCoreApplication::postEvent(&even, new QEvent(QEvent::Type(QEvent::User + 2)));
+
+ QCoreApplication::postEvent(&odd, new QEvent(QEvent::Type(QEvent::User + 3)), 1);
+ QCoreApplication::postEvent(&even, new QEvent(QEvent::Type(QEvent::User + 4)), 2);
+
+ QCoreApplication::postEvent(&odd, new QEvent(QEvent::Type(QEvent::User + 5)), -2);
+ QCoreApplication::postEvent(&even, new QEvent(QEvent::Type(QEvent::User + 6)), -1);
+
+ QList<int> expected;
+ expected << QEvent::User + 4
+ << QEvent::User + 3
+ << QEvent::User + 1
+ << QEvent::User + 2
+ << QEvent::User + 6
+ << QEvent::User + 5;
+
+ QCoreApplication::sendPostedEvents();
+ // live lock protection ensures that we only send the initial events
+ QCOMPARE(spy.recordedEvents, expected);
+
+ expected.clear();
+ expected << QEvent::User + 66
+ << QEvent::User + 55
+ << QEvent::User + 44
+ << QEvent::User + 33
+ << QEvent::User + 22
+ << QEvent::User + 11;
+
+ spy.recordedEvents.clear();
+ QCoreApplication::sendPostedEvents();
+ // expect next sequence events
+ QCOMPARE(spy.recordedEvents, expected);
+
+ // have the generators call sendPostedEvents() on each other in
+ // response to an event
+ QCoreApplication::postEvent(&odd, new QEvent(QEvent::MaxUser), INT_MAX);
+ QCoreApplication::postEvent(&even, new QEvent(QEvent::MaxUser), INT_MAX);
+
+ expected.clear();
+ expected << int(QEvent::MaxUser)
+ << int(QEvent::MaxUser)
+ << QEvent::User + 555
+ << QEvent::User + 333
+ << QEvent::User + 111
+ << QEvent::User + 666
+ << QEvent::User + 444
+ << QEvent::User + 222;
+
+ spy.recordedEvents.clear();
+ QCoreApplication::sendPostedEvents();
+ QCOMPARE(spy.recordedEvents, expected);
+
+ expected.clear();
+ expected << QEvent::User + 6666
+ << QEvent::User + 5555
+ << QEvent::User + 4444
+ << QEvent::User + 3333
+ << QEvent::User + 2222
+ << QEvent::User + 1111;
+
+ spy.recordedEvents.clear();
+ QCoreApplication::sendPostedEvents();
+ QCOMPARE(spy.recordedEvents, expected);
+
+ // no more events
+ expected.clear();
+ spy.recordedEvents.clear();
+ QCoreApplication::sendPostedEvents();
+ QCOMPARE(spy.recordedEvents, expected);
+}
+
+void tst_QCoreApplication::removePostedEvents()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+
+ EventSpy spy;
+ QObject one, two;
+ one.installEventFilter(&spy);
+ two.installEventFilter(&spy);
+
+ QList<int> expected;
+
+ // remove all events for one object
+ QCoreApplication::postEvent(&one, new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCoreApplication::postEvent(&one, new QEvent(QEvent::Type(QEvent::User + 2)));
+ QCoreApplication::postEvent(&one, new QEvent(QEvent::Type(QEvent::User + 3)));
+ QCoreApplication::postEvent(&two, new QEvent(QEvent::Type(QEvent::User + 4)));
+ QCoreApplication::postEvent(&two, new QEvent(QEvent::Type(QEvent::User + 5)));
+ QCoreApplication::postEvent(&two, new QEvent(QEvent::Type(QEvent::User + 6)));
+ QCoreApplication::removePostedEvents(&one);
+ expected << QEvent::User + 4
+ << QEvent::User + 5
+ << QEvent::User + 6;
+ QCoreApplication::sendPostedEvents();
+ QCOMPARE(spy.recordedEvents, expected);
+ spy.recordedEvents.clear();
+ expected.clear();
+
+ // remove all events for all objects
+ QCoreApplication::postEvent(&one, new QEvent(QEvent::Type(QEvent::User + 7)));
+ QCoreApplication::postEvent(&two, new QEvent(QEvent::Type(QEvent::User + 8)));
+ QCoreApplication::postEvent(&one, new QEvent(QEvent::Type(QEvent::User + 9)));
+ QCoreApplication::postEvent(&two, new QEvent(QEvent::Type(QEvent::User + 10)));
+ QCoreApplication::postEvent(&one, new QEvent(QEvent::Type(QEvent::User + 11)));
+ QCoreApplication::postEvent(&two, new QEvent(QEvent::Type(QEvent::User + 12)));
+ QCoreApplication::removePostedEvents(0);
+ QCoreApplication::sendPostedEvents();
+ QVERIFY(spy.recordedEvents.isEmpty());
+
+ // remove a specific type of event for one object
+ QCoreApplication::postEvent(&one, new QEvent(QEvent::Type(QEvent::User + 13)));
+ QCoreApplication::postEvent(&two, new QEvent(QEvent::Type(QEvent::User + 14)));
+ QCoreApplication::postEvent(&one, new QEvent(QEvent::Type(QEvent::User + 15)));
+ QCoreApplication::postEvent(&two, new QEvent(QEvent::Type(QEvent::User + 16)));
+ QCoreApplication::postEvent(&one, new QEvent(QEvent::Type(QEvent::User + 17)));
+ QCoreApplication::postEvent(&two, new QEvent(QEvent::Type(QEvent::User + 18)));
+ QCoreApplication::removePostedEvents(&one, QEvent::User + 13);
+ QCoreApplication::removePostedEvents(&two, QEvent::User + 18);
+ QCoreApplication::sendPostedEvents();
+ expected << QEvent::User + 14
+ << QEvent::User + 15
+ << QEvent::User + 16
+ << QEvent::User + 17;
+ QCOMPARE(spy.recordedEvents, expected);
+ spy.recordedEvents.clear();
+ expected.clear();
+
+ // remove a specific type of event for all objects
+ QCoreApplication::postEvent(&one, new QEvent(QEvent::Type(QEvent::User + 19)));
+ QCoreApplication::postEvent(&two, new QEvent(QEvent::Type(QEvent::User + 19)));
+ QCoreApplication::postEvent(&one, new QEvent(QEvent::Type(QEvent::User + 20)));
+ QCoreApplication::postEvent(&two, new QEvent(QEvent::Type(QEvent::User + 20)));
+ QCoreApplication::postEvent(&one, new QEvent(QEvent::Type(QEvent::User + 21)));
+ QCoreApplication::postEvent(&two, new QEvent(QEvent::Type(QEvent::User + 21)));
+ QCoreApplication::removePostedEvents(0, QEvent::User + 20);
+ QCoreApplication::sendPostedEvents();
+ expected << QEvent::User + 19
+ << QEvent::User + 19
+ << QEvent::User + 21
+ << QEvent::User + 21;
+ QCOMPARE(spy.recordedEvents, expected);
+ spy.recordedEvents.clear();
+ expected.clear();
+}
+
+#ifndef QT_NO_THREAD
+class DeliverInDefinedOrderThread : public QThread
+{
+ Q_OBJECT
+
+public:
+ DeliverInDefinedOrderThread()
+ : QThread()
+ { }
+
+signals:
+ void progress(int);
+
+protected:
+ void run()
+ {
+ emit progress(1);
+ emit progress(2);
+ emit progress(3);
+ emit progress(4);
+ emit progress(5);
+ emit progress(6);
+ emit progress(7);
+ }
+};
+
+class DeliverInDefinedOrderObject : public QObject
+{
+ Q_OBJECT
+
+ QPointer<QThread> thread;
+ int count;
+ int startCount;
+ int loopLevel;
+
+public:
+ DeliverInDefinedOrderObject(QObject *parent)
+ : QObject(parent), thread(0), count(0), startCount(0), loopLevel(0)
+ { }
+
+signals:
+ void done();
+
+public slots:
+ void startThread()
+ {
+ QVERIFY(!thread);
+ thread = new DeliverInDefinedOrderThread();
+ connect(thread, SIGNAL(progress(int)), this, SLOT(threadProgress(int)));
+ connect(thread, SIGNAL(finished()), this, SLOT(threadFinished()));
+ connect(thread, SIGNAL(destroyed()), this, SLOT(threadDestroyed()));
+ thread->start();
+
+ QCoreApplication::postEvent(this, new QEvent(QEvent::MaxUser), -1);
+ }
+
+ void threadProgress(int v)
+ {
+ ++count;
+ QVERIFY(v == count);
+
+ QCoreApplication::postEvent(this, new QEvent(QEvent::MaxUser), -1);
+ }
+
+ void threadFinished()
+ {
+ QVERIFY(count == 7);
+ count = 0;
+ thread->deleteLater();
+
+ QCoreApplication::postEvent(this, new QEvent(QEvent::MaxUser), -1);
+ }
+
+ void threadDestroyed()
+ {
+ if (++startCount < 20)
+ startThread();
+ else
+ emit done();
+ }
+
+public:
+ bool event(QEvent *event)
+ {
+ switch (event->type()) {
+ case QEvent::User:
+ {
+ ++loopLevel;
+ if (loopLevel == 2) {
+ // Ready. Starts a thread that emits (queued) signals, which should be handled in order
+ startThread();
+ }
+ QCoreApplication::postEvent(this, new QEvent(QEvent::MaxUser), -1);
+ (void) QEventLoop().exec();
+ break;
+ }
+ default:
+ break;
+ }
+ return QObject::event(event);
+ }
+};
+
+void tst_QCoreApplication::deliverInDefinedOrder()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+
+ DeliverInDefinedOrderObject obj(&app);
+ // causes sendPostedEvents() to recurse twice
+ QCoreApplication::postEvent(&obj, new QEvent(QEvent::User));
+ QCoreApplication::postEvent(&obj, new QEvent(QEvent::User));
+
+ QObject::connect(&obj, SIGNAL(done()), &app, SLOT(quit()));
+ app.exec();
+}
+#endif // QT_NO_QTHREAD
+
+void tst_QCoreApplication::applicationPid()
+{
+ QVERIFY(QCoreApplication::applicationPid() > 0);
+}
+
+QT_BEGIN_NAMESPACE
+Q_CORE_EXPORT uint qGlobalPostedEventsCount();
+QT_END_NAMESPACE
+
+class GlobalPostedEventsCountObject : public QObject
+{
+ Q_OBJECT
+
+public:
+ QList<int> globalPostedEventsCount;
+
+ bool event(QEvent *event)
+ {
+ if (event->type() == QEvent::User)
+ globalPostedEventsCount.append(qGlobalPostedEventsCount());
+ return QObject::event(event);
+ }
+};
+
+void tst_QCoreApplication::globalPostedEventsCount()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+
+ QCoreApplication::sendPostedEvents();
+ QCOMPARE(qGlobalPostedEventsCount(), 0u);
+
+ GlobalPostedEventsCountObject x;
+ QCoreApplication::postEvent(&x, new QEvent(QEvent::User));
+ QCoreApplication::postEvent(&x, new QEvent(QEvent::User));
+ QCoreApplication::postEvent(&x, new QEvent(QEvent::User));
+ QCoreApplication::postEvent(&x, new QEvent(QEvent::User));
+ QCoreApplication::postEvent(&x, new QEvent(QEvent::User));
+ QCOMPARE(qGlobalPostedEventsCount(), 5u);
+
+ QCoreApplication::sendPostedEvents();
+ QCOMPARE(qGlobalPostedEventsCount(), 0u);
+
+ QList<int> expected = QList<int>()
+ << 4
+ << 3
+ << 2
+ << 1
+ << 0;
+ QCOMPARE(x.globalPostedEventsCount, expected);
+}
+
+class ProcessEventsAlwaysSendsPostedEventsObject : public QObject
+{
+public:
+ int counter;
+
+ inline ProcessEventsAlwaysSendsPostedEventsObject()
+ : counter(0)
+ { }
+
+ bool event(QEvent *event)
+ {
+ if (event->type() == QEvent::User)
+ ++counter;
+ return QObject::event(event);
+ }
+};
+
+void tst_QCoreApplication::processEventsAlwaysSendsPostedEvents()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+
+ ProcessEventsAlwaysSendsPostedEventsObject object;
+ QTime t;
+ t.start();
+ int i = 1;
+ do {
+ QCoreApplication::postEvent(&object, new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(object.counter, i);
+ ++i;
+ } while (t.elapsed() < 1000);
+}
+
+void tst_QCoreApplication::reexec()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+
+ // exec once
+ QMetaObject::invokeMethod(&app, "quit", Qt::QueuedConnection);
+ QCOMPARE(app.exec(), 0);
+
+ // and again
+ QMetaObject::invokeMethod(&app, "quit", Qt::QueuedConnection);
+ QCOMPARE(app.exec(), 0);
+}
+
+void tst_QCoreApplication::execAfterExit()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+
+ app.exit(1);
+ QMetaObject::invokeMethod(&app, "quit", Qt::QueuedConnection);
+ QCOMPARE(app.exec(), 0);
+}
+
+void tst_QCoreApplication::eventLoopExecAfterExit()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+
+ // exec once and exit
+ QMetaObject::invokeMethod(&app, "quit", Qt::QueuedConnection);
+ QCOMPARE(app.exec(), 0);
+
+ // and again, but this time using a QEventLoop
+ QEventLoop loop;
+ QMetaObject::invokeMethod(&loop, "quit", Qt::QueuedConnection);
+ QCOMPARE(loop.exec(), 0);
+}
+
+QTEST_APPLESS_MAIN(tst_QCoreApplication)
+#include "tst_qcoreapplication.moc"
diff --git a/tests/auto/corelib/kernel/qeventloop/.gitignore b/tests/auto/corelib/kernel/qeventloop/.gitignore
new file mode 100644
index 0000000000..be3297188a
--- /dev/null
+++ b/tests/auto/corelib/kernel/qeventloop/.gitignore
@@ -0,0 +1 @@
+tst_qeventloop
diff --git a/tests/auto/corelib/kernel/qeventloop/qeventloop.pro b/tests/auto/corelib/kernel/qeventloop/qeventloop.pro
new file mode 100644
index 0000000000..e3c170a33b
--- /dev/null
+++ b/tests/auto/corelib/kernel/qeventloop/qeventloop.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+SOURCES += tst_qeventloop.cpp
+QT -= gui
+QT += network
+
+win32:!wince*:LIBS += -luser32
+
+symbian:TARGET.CAPABILITY += NetworkServices
diff --git a/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp b/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp
new file mode 100644
index 0000000000..6f8a75ed3d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp
@@ -0,0 +1,937 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+
+#include <qabstracteventdispatcher.h>
+#include <qcoreapplication.h>
+#include <qcoreevent.h>
+#include <qeventloop.h>
+#include <qmutex.h>
+#include <qthread.h>
+#include <qtimer.h>
+#include <qwaitcondition.h>
+#include <QTcpServer>
+#include <QTcpSocket>
+
+#ifdef Q_OS_SYMBIAN
+#include <e32base.h>
+#include <unistd.h>
+#endif
+
+#include "../../../../shared/util.h"
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class EventLoopExiter : public QObject
+{
+ Q_OBJECT
+ QEventLoop *eventLoop;
+public:
+ inline EventLoopExiter(QEventLoop *el)
+ : eventLoop(el)
+ { }
+public slots:
+ void exit();
+ void exit1();
+ void exit2();
+};
+
+void EventLoopExiter::exit()
+{ eventLoop->exit(); }
+
+void EventLoopExiter::exit1()
+{ eventLoop->exit(1); }
+
+void EventLoopExiter::exit2()
+{ eventLoop->exit(2); }
+
+class EventLoopThread : public QThread
+{
+ Q_OBJECT
+signals:
+ void checkPoint();
+public:
+ QEventLoop *eventLoop;
+ void run();
+};
+
+void EventLoopThread::run()
+{
+ eventLoop = new QEventLoop;
+ emit checkPoint();
+ (void) eventLoop->exec();
+ delete eventLoop;
+ eventLoop = 0;
+}
+
+class MultipleExecThread : public QThread
+{
+ Q_OBJECT
+signals:
+ void checkPoint();
+public:
+ QMutex mutex;
+ QWaitCondition cond;
+ volatile int result1;
+ volatile int result2;
+ MultipleExecThread() : result1(0xdead), result2(0xbeef) {}
+
+ void run()
+ {
+ QMutexLocker locker(&mutex);
+ // this exec should work
+
+ cond.wakeOne();
+ cond.wait(&mutex);
+
+ QTimer timer;
+ connect(&timer, SIGNAL(timeout()), SLOT(quit()), Qt::DirectConnection);
+ timer.setInterval(1000);
+ timer.start();
+ result1 = exec();
+
+ // this should return immediately, since exit() has been called
+ cond.wakeOne();
+ cond.wait(&mutex);
+ QEventLoop eventLoop;
+ result2 = eventLoop.exec();
+ }
+};
+
+class StartStopEvent: public QEvent
+{
+public:
+ StartStopEvent(int type, QEventLoop *loop = 0)
+ : QEvent(Type(type)), el(loop)
+ { }
+
+ QEventLoop *el;
+};
+
+class EventLoopExecutor : public QObject
+{
+ Q_OBJECT
+ QEventLoop *eventLoop;
+public:
+ int returnCode;
+ EventLoopExecutor(QEventLoop *eventLoop)
+ : QObject(), eventLoop(eventLoop), returnCode(-42)
+ {
+ }
+public slots:
+ void exec()
+ {
+ QTimer::singleShot(100, eventLoop, SLOT(quit()));
+ // this should return immediately, and the timer event should be delivered to
+ // tst_QEventLoop::exec() test, letting the test complete
+ returnCode = eventLoop->exec();
+ }
+};
+
+#ifndef QT_NO_EXCEPTIONS
+class QEventLoopTestException { };
+
+class ExceptionThrower : public QObject
+{
+ Q_OBJECT
+public:
+ ExceptionThrower() : QObject() { }
+public slots:
+ void throwException()
+ {
+ QEventLoopTestException e;
+ throw e;
+ }
+};
+#endif
+
+class tst_QEventLoop : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QEventLoop();
+ ~tst_QEventLoop();
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ // This test *must* run first. See the definition for why.
+ void onlySymbianActiveScheduler();
+ void symbianNestedActiveSchedulerLoop_data();
+ void symbianNestedActiveSchedulerLoop();
+ void processEvents();
+ void exec();
+ void throwInExec();
+ void reexec();
+ void exit();
+ void execAfterExit();
+ void wakeUp();
+ void quit();
+ void processEventsExcludeSocket();
+ void processEventsExcludeTimers();
+ void deliverInDefinedOrder_QTBUG19637();
+
+ // keep this test last:
+ void nestedLoops();
+
+protected:
+ void customEvent(QEvent *e);
+};
+
+tst_QEventLoop::tst_QEventLoop()
+{ }
+
+tst_QEventLoop::~tst_QEventLoop()
+{ }
+
+void tst_QEventLoop::init()
+{ }
+
+void tst_QEventLoop::cleanup()
+{ }
+
+#ifdef Q_OS_SYMBIAN
+class OnlySymbianActiveScheduler_helper : public QObject
+{
+ Q_OBJECT
+
+public:
+ OnlySymbianActiveScheduler_helper(int fd, QTimer *zeroTimer)
+ : fd(fd),
+ timerCount(0),
+ zeroTimer(zeroTimer),
+ zeroTimerCount(0),
+ notifierCount(0)
+ {
+ }
+ ~OnlySymbianActiveScheduler_helper() {}
+
+public slots:
+ void timerSlot()
+ {
+ // Let all the events occur twice so we know they reactivated after
+ // each occurrence.
+ if (++timerCount >= 2) {
+ // This will hopefully run last, so stop the active scheduler.
+ CActiveScheduler::Stop();
+ }
+ }
+ void zeroTimerSlot()
+ {
+ if (++zeroTimerCount >= 2) {
+ zeroTimer->stop();
+ }
+ }
+ void notifierSlot()
+ {
+ if (++notifierCount >= 2) {
+ char dummy;
+ ::read(fd, &dummy, 1);
+ }
+ }
+
+private:
+ int fd;
+ int timerCount;
+ QTimer *zeroTimer;
+ int zeroTimerCount;
+ int notifierCount;
+};
+#endif
+
+void tst_QEventLoop::onlySymbianActiveScheduler() {
+#ifndef Q_OS_SYMBIAN
+ QSKIP("This is a Symbian-only test.", SkipAll);
+#else
+ // In here we try to use timers and sockets exclusively using the Symbian
+ // active scheduler and no processEvents().
+ // This test should therefore be run first, so that we can verify that
+ // the first occurrence of processEvents does not do any initialization that
+ // we depend on.
+
+ // Open up a pipe so we can test socket notifiers.
+ int pipeEnds[2];
+ if (::pipe(pipeEnds) != 0) {
+ QFAIL("Could not open pipe");
+ }
+ QSocketNotifier notifier(pipeEnds[0], QSocketNotifier::Read);
+ QSignalSpy notifierSpy(&notifier, SIGNAL(activated(int)));
+ char dummy = 1;
+ ::write(pipeEnds[1], &dummy, 1);
+
+ QTimer zeroTimer;
+ QSignalSpy zeroTimerSpy(&zeroTimer, SIGNAL(timeout()));
+ zeroTimer.setInterval(0);
+ zeroTimer.start();
+
+ QTimer timer;
+ QSignalSpy timerSpy(&timer, SIGNAL(timeout()));
+ timer.setInterval(2000); // Generous timeout or this test will fail if there is high load
+ timer.start();
+
+ OnlySymbianActiveScheduler_helper helper(pipeEnds[0], &zeroTimer);
+ connect(&notifier, SIGNAL(activated(int)), &helper, SLOT(notifierSlot()));
+ connect(&zeroTimer, SIGNAL(timeout()), &helper, SLOT(zeroTimerSlot()));
+ connect(&timer, SIGNAL(timeout()), &helper, SLOT(timerSlot()));
+
+ CActiveScheduler::Start();
+
+ ::close(pipeEnds[1]);
+ ::close(pipeEnds[0]);
+
+ QCOMPARE(notifierSpy.count(), 2);
+ QCOMPARE(zeroTimerSpy.count(), 2);
+ QCOMPARE(timerSpy.count(), 2);
+#endif
+}
+
+void tst_QEventLoop::processEvents()
+{
+ QSignalSpy spy1(QAbstractEventDispatcher::instance(), SIGNAL(aboutToBlock()));
+ QSignalSpy spy2(QAbstractEventDispatcher::instance(), SIGNAL(awake()));
+
+ QEventLoop eventLoop;
+
+ QCoreApplication::postEvent(&eventLoop, new QEvent(QEvent::User));
+
+ // process posted events, QEventLoop::processEvents() should return
+ // true
+ QVERIFY(eventLoop.processEvents());
+ QCOMPARE(spy1.count(), 0);
+ QCOMPARE(spy2.count(), 1);
+
+ // allow any session manager to complete its handshake, so that
+ // there are no pending events left.
+ while (eventLoop.processEvents())
+ ;
+
+ // On mac we get application started events at this point,
+ // so process events one more time just to be sure.
+ eventLoop.processEvents();
+
+ // no events to process, QEventLoop::processEvents() should return
+ // false
+ spy1.clear();
+ spy2.clear();
+ QVERIFY(!eventLoop.processEvents());
+ QCOMPARE(spy1.count(), 0);
+ QCOMPARE(spy2.count(), 1);
+
+ // make sure the test doesn't block forever
+ int timerId = startTimer(100);
+
+ // wait for more events to process, QEventLoop::processEvents()
+ // should return true
+ spy1.clear();
+ spy2.clear();
+ QVERIFY(eventLoop.processEvents(QEventLoop::WaitForMoreEvents));
+
+ // Verify that the eventloop has blocked and woken up. Some eventloops
+ // may block and wake up multiple times.
+ QVERIFY(spy1.count() > 0);
+ QVERIFY(spy2.count() > 0);
+ // We should get one awake for each aboutToBlock, plus one awake when
+ // processEvents is entered.
+ QVERIFY(spy2.count() >= spy1.count());
+
+ killTimer(timerId);
+}
+
+#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+// Symbian needs bit longer timeout for emulator, as emulator startup causes additional delay
+# define EXEC_TIMEOUT 1000
+#else
+# define EXEC_TIMEOUT 100
+#endif
+
+
+void tst_QEventLoop::exec()
+{
+ {
+ QEventLoop eventLoop;
+ EventLoopExiter exiter(&eventLoop);
+ int returnCode;
+
+ QTimer::singleShot(EXEC_TIMEOUT, &exiter, SLOT(exit()));
+ returnCode = eventLoop.exec();
+ QCOMPARE(returnCode, 0);
+
+ QTimer::singleShot(EXEC_TIMEOUT, &exiter, SLOT(exit1()));
+ returnCode = eventLoop.exec();
+ QCOMPARE(returnCode, 1);
+
+ QTimer::singleShot(EXEC_TIMEOUT, &exiter, SLOT(exit2()));
+ returnCode = eventLoop.exec();
+ QCOMPARE(returnCode, 2);
+ }
+
+ {
+ // calling QEventLoop::exec() after a thread loop has exit()ed should return immediately
+ // Note: this behaviour differs from QCoreApplication and QEventLoop
+ // see tst_QCoreApplication::eventLoopExecAfterExit, tst_QEventLoop::reexec
+ MultipleExecThread thread;
+
+ // start thread and wait for checkpoint
+ thread.mutex.lock();
+ thread.start();
+ thread.cond.wait(&thread.mutex);
+
+ // make sure the eventloop runs
+ QSignalSpy spy(QAbstractEventDispatcher::instance(&thread), SIGNAL(awake()));
+ thread.cond.wakeOne();
+ thread.cond.wait(&thread.mutex);
+ QVERIFY(spy.count() > 0);
+ int v = thread.result1;
+ QCOMPARE(v, 0);
+
+ // exec should return immediately
+ spy.clear();
+ thread.cond.wakeOne();
+ thread.mutex.unlock();
+ thread.wait();
+ QCOMPARE(spy.count(), 0);
+ v = thread.result2;
+ QCOMPARE(v, -1);
+ }
+
+ {
+ // a single instance of QEventLoop should not be allowed to recurse into exec()
+ QEventLoop eventLoop;
+ EventLoopExecutor executor(&eventLoop);
+
+ QTimer::singleShot(EXEC_TIMEOUT, &executor, SLOT(exec()));
+ int returnCode = eventLoop.exec();
+ QCOMPARE(returnCode, 0);
+ QCOMPARE(executor.returnCode, -1);
+ }
+}
+
+void tst_QEventLoop::throwInExec()
+{
+#if defined(QT_NO_EXCEPTIONS) || defined(NO_EVENTLOOP_EXCEPTIONS)
+ QSKIP("Exceptions are disabled", SkipAll);
+#elif defined(Q_OS_WINCE_WM) || defined(Q_OS_SYMBIAN)
+ // Windows Mobile cannot handle cross library exceptions
+ // qobject.cpp will try to rethrow the exception after handling
+ // which causes gwes.exe to crash
+
+ // Symbian doesn't propagate exceptions from eventloop, but converts them to
+ // CActiveScheduler errors instead -> this test will hang.
+ QSKIP("This platform doesn't support propagating exceptions through the event loop", SkipAll);
+#elif defined(Q_OS_LINUX)
+ // C++ exceptions can't be passed through glib callbacks. Skip the test if
+ // we're using the glib event loop.
+ QByteArray dispatcher = QAbstractEventDispatcher::instance()->metaObject()->className();
+ if (dispatcher.contains("Glib")) {
+ QSKIP(
+ qPrintable(QString(
+ "Throwing exceptions in exec() won't work if %1 event dispatcher is used.\n"
+ "Try running with QT_NO_GLIB=1 in environment."
+ ).arg(QString::fromLatin1(dispatcher))),
+ SkipAll
+ );
+ }
+#endif
+
+ {
+ // QEventLoop::exec() is exception safe
+ QEventLoop eventLoop;
+ int caughtExceptions = 0;
+
+ try {
+ ExceptionThrower exceptionThrower;
+ QTimer::singleShot(EXEC_TIMEOUT, &exceptionThrower, SLOT(throwException()));
+ (void) eventLoop.exec();
+ } catch (...) {
+ ++caughtExceptions;
+ }
+ try {
+ ExceptionThrower exceptionThrower;
+ QTimer::singleShot(EXEC_TIMEOUT, &exceptionThrower, SLOT(throwException()));
+ (void) eventLoop.exec();
+ } catch (...) {
+ ++caughtExceptions;
+ }
+ QCOMPARE(caughtExceptions, 2);
+ }
+}
+
+void tst_QEventLoop::reexec()
+{
+ QEventLoop loop;
+
+ // exec once
+ QMetaObject::invokeMethod(&loop, "quit", Qt::QueuedConnection);
+ QCOMPARE(loop.exec(), 0);
+
+ // and again
+ QMetaObject::invokeMethod(&loop, "quit", Qt::QueuedConnection);
+ QCOMPARE(loop.exec(), 0);
+}
+
+void tst_QEventLoop::exit()
+{ DEPENDS_ON(exec()); }
+
+void tst_QEventLoop::execAfterExit()
+{
+ QEventLoop loop;
+ EventLoopExiter obj(&loop);
+
+ QMetaObject::invokeMethod(&obj, "exit", Qt::QueuedConnection);
+ loop.exit(1);
+ QCOMPARE(loop.exec(), 0);
+}
+
+void tst_QEventLoop::wakeUp()
+{
+ EventLoopThread thread;
+ QEventLoop eventLoop;
+ connect(&thread, SIGNAL(checkPoint()), &eventLoop, SLOT(quit()));
+ connect(&thread, SIGNAL(finished()), &eventLoop, SLOT(quit()));
+
+ thread.start();
+ (void) eventLoop.exec();
+
+ QSignalSpy spy(QAbstractEventDispatcher::instance(&thread), SIGNAL(awake()));
+ thread.eventLoop->wakeUp();
+
+ // give the thread time to wake up
+ QTimer::singleShot(1000, &eventLoop, SLOT(quit()));
+ (void) eventLoop.exec();
+
+ QVERIFY(spy.count() > 0);
+
+ thread.quit();
+ (void) eventLoop.exec();
+}
+
+void tst_QEventLoop::quit()
+{
+ QEventLoop eventLoop;
+ int returnCode;
+
+ QTimer::singleShot(100, &eventLoop, SLOT(quit()));
+ returnCode = eventLoop.exec();
+ QCOMPARE(returnCode, 0);
+}
+
+
+void tst_QEventLoop::nestedLoops()
+{
+ QCoreApplication::postEvent(this, new StartStopEvent(QEvent::User));
+ QCoreApplication::postEvent(this, new StartStopEvent(QEvent::User));
+ QCoreApplication::postEvent(this, new StartStopEvent(QEvent::User));
+
+ // without the fix, this will *wedge* and never return
+ QTest::qWait(1000);
+}
+
+void tst_QEventLoop::customEvent(QEvent *e)
+{
+ if (e->type() == QEvent::User) {
+ QEventLoop loop;
+ QCoreApplication::postEvent(this, new StartStopEvent(int(QEvent::User) + 1, &loop));
+ loop.exec();
+ } else {
+ static_cast<StartStopEvent *>(e)->el->exit();
+ }
+}
+
+class SocketEventsTester: public QObject
+{
+ Q_OBJECT
+public:
+ SocketEventsTester()
+ {
+ socket = 0;
+ server = 0;
+ dataArrived = false;
+ testResult = false;
+ }
+ ~SocketEventsTester()
+ {
+ delete socket;
+ delete server;
+ }
+ bool init()
+ {
+ bool ret = false;
+ server = new QTcpServer();
+ socket = new QTcpSocket();
+ connect(server, SIGNAL(newConnection()), this, SLOT(sendHello()));
+ connect(socket, SIGNAL(readyRead()), this, SLOT(sendAck()), Qt::DirectConnection);
+ if((ret = server->listen(QHostAddress::LocalHost, 0))) {
+ socket->connectToHost(server->serverAddress(), server->serverPort());
+ socket->waitForConnected();
+ }
+ return ret;
+ }
+
+ QTcpSocket *socket;
+ QTcpServer *server;
+ bool dataArrived;
+ bool testResult;
+public slots:
+ void sendAck()
+ {
+ dataArrived = true;
+ }
+ void sendHello()
+ {
+ char data[10] ="HELLO";
+ qint64 size = sizeof(data);
+
+ QTcpSocket *serverSocket = server->nextPendingConnection();
+ serverSocket->write(data, size);
+ serverSocket->flush();
+ QTest::qSleep(200); //allow the TCP/IP stack time to loopback the data, so our socket is ready to read
+ QCoreApplication::processEvents(QEventLoop::ExcludeSocketNotifiers);
+ testResult = dataArrived;
+ QCoreApplication::processEvents(); //check the deferred event is processed
+ serverSocket->close();
+ QThread::currentThread()->exit(0);
+ }
+};
+
+class SocketTestThread : public QThread
+{
+ Q_OBJECT
+public:
+ SocketTestThread():QThread(0),testResult(false){};
+ void run()
+ {
+ SocketEventsTester *tester = new SocketEventsTester();
+ if (tester->init())
+ exec();
+ testResult = tester->testResult;
+ dataArrived = tester->dataArrived;
+ delete tester;
+ }
+ bool testResult;
+ bool dataArrived;
+};
+
+void tst_QEventLoop::processEventsExcludeSocket()
+{
+ SocketTestThread thread;
+ thread.start();
+ QVERIFY(thread.wait());
+ QVERIFY(!thread.testResult);
+ QVERIFY(thread.dataArrived);
+}
+
+class TimerReceiver : public QObject
+{
+public:
+ int gotTimerEvent;
+
+ TimerReceiver()
+ : QObject(), gotTimerEvent(-1)
+ { }
+
+ void timerEvent(QTimerEvent *event)
+ {
+ gotTimerEvent = event->timerId();
+ }
+};
+
+void tst_QEventLoop::processEventsExcludeTimers()
+{
+ TimerReceiver timerReceiver;
+ int timerId = timerReceiver.startTimer(0);
+
+ QEventLoop eventLoop;
+
+ // normal process events will send timers
+ eventLoop.processEvents();
+ QCOMPARE(timerReceiver.gotTimerEvent, timerId);
+ timerReceiver.gotTimerEvent = -1;
+
+ // normal process events will send timers
+ eventLoop.processEvents(QEventLoop::X11ExcludeTimers);
+#if !defined(Q_OS_UNIX) || defined(Q_OS_SYMBIAN)
+ QEXPECT_FAIL("", "X11ExcludeTimers only works on UN*X", Continue);
+#endif
+ QCOMPARE(timerReceiver.gotTimerEvent, -1);
+ timerReceiver.gotTimerEvent = -1;
+
+ // resume timer processing
+ eventLoop.processEvents();
+ QCOMPARE(timerReceiver.gotTimerEvent, timerId);
+ timerReceiver.gotTimerEvent = -1;
+}
+
+#ifdef Q_OS_SYMBIAN
+class DummyActiveObject : public CActive
+{
+public:
+ DummyActiveObject(int levels);
+ ~DummyActiveObject();
+
+ void Start();
+
+protected:
+ void DoCancel();
+ void RunL();
+
+public:
+ bool succeeded;
+
+private:
+ RTimer m_rTimer;
+ int remainingLevels;
+};
+
+class ActiveSchedulerLoop : public QObject
+{
+public:
+ ActiveSchedulerLoop(int levels) : succeeded(false), timerId(-1), remainingLevels(levels) {}
+ ~ActiveSchedulerLoop() {}
+
+ void timerEvent(QTimerEvent *e);
+
+public:
+ bool succeeded;
+ int timerId;
+ int remainingLevels;
+};
+
+DummyActiveObject::DummyActiveObject(int levels)
+ : CActive(CActive::EPriorityStandard),
+ succeeded(false),
+ remainingLevels(levels)
+{
+ m_rTimer.CreateLocal();
+}
+
+DummyActiveObject::~DummyActiveObject()
+{
+ Cancel();
+ m_rTimer.Close();
+}
+
+void DummyActiveObject::DoCancel()
+{
+ m_rTimer.Cancel();
+}
+
+void DummyActiveObject::RunL()
+{
+ if (remainingLevels - 1 <= 0) {
+ ActiveSchedulerLoop loop(remainingLevels - 1);
+ loop.timerId = loop.startTimer(0);
+ QCoreApplication::processEvents();
+
+ succeeded = loop.succeeded;
+ } else {
+ succeeded = true;
+ }
+ CActiveScheduler::Stop();
+}
+
+void DummyActiveObject::Start()
+{
+ m_rTimer.After(iStatus, 100000); // 100 ms
+ SetActive();
+}
+
+void ActiveSchedulerLoop::timerEvent(QTimerEvent *e)
+{
+ Q_UNUSED(e);
+ DummyActiveObject *dummy = new(ELeave) DummyActiveObject(remainingLevels);
+ CActiveScheduler::Add(dummy);
+
+ dummy->Start();
+
+ CActiveScheduler::Start();
+
+ succeeded = dummy->succeeded;
+
+ delete dummy;
+
+ killTimer(timerId);
+}
+
+// We cannot trap panics when the test case fails, so run it in a different thread instead.
+class ActiveSchedulerThread : public QThread
+{
+public:
+ ActiveSchedulerThread(QEventLoop::ProcessEventsFlag flags);
+ ~ActiveSchedulerThread();
+
+protected:
+ void run();
+
+public:
+ volatile bool succeeded;
+
+private:
+ QEventLoop::ProcessEventsFlag m_flags;
+};
+
+ActiveSchedulerThread::ActiveSchedulerThread(QEventLoop::ProcessEventsFlag flags)
+ : succeeded(false),
+ m_flags(flags)
+{
+}
+
+ActiveSchedulerThread::~ActiveSchedulerThread()
+{
+}
+
+void ActiveSchedulerThread::run()
+{
+ ActiveSchedulerLoop loop(2);
+ loop.timerId = loop.startTimer(0);
+ // It may panic in here if the active scheduler and the Qt loop don't go together.
+ QCoreApplication::processEvents(m_flags);
+
+ succeeded = loop.succeeded;
+}
+#endif // ifdef Q_OS_SYMBIAN
+
+void tst_QEventLoop::symbianNestedActiveSchedulerLoop_data()
+{
+ QTest::addColumn<int>("processEventFlags");
+
+ QTest::newRow("AllEvents") << (int)QEventLoop::AllEvents;
+ QTest::newRow("WaitForMoreEvents") << (int)QEventLoop::WaitForMoreEvents;
+}
+
+/*
+ Before you start fiddling with this test, you should have a good understanding of how
+ Symbian active objects work. What the test does is to try to screw up the semaphore count
+ in the active scheduler to cause stray signals, by running the Qt event loop and the
+ active scheduler inside each other. Naturally, its attempts to do this should be futile!
+*/
+void tst_QEventLoop::symbianNestedActiveSchedulerLoop()
+{
+#ifndef Q_OS_SYMBIAN
+ QSKIP("This is a Symbian only test.", SkipAll);
+#else
+ QFETCH(int, processEventFlags);
+
+ ActiveSchedulerThread thread((QEventLoop::ProcessEventsFlag)processEventFlags);
+ thread.start();
+ thread.wait(2000);
+
+ QVERIFY(thread.succeeded);
+#endif
+}
+
+Q_DECLARE_METATYPE(QThread*)
+
+namespace DeliverInDefinedOrder_QTBUG19637 {
+ enum { NbThread = 3, NbObject = 500, NbEventQueue = 5, NbEvent = 50 };
+
+ struct CustomEvent : public QEvent {
+ CustomEvent(int q, int v) : QEvent(Type(User + q)), value(v) {}
+ int value;
+ };
+
+ struct Object : public QObject {
+ Q_OBJECT
+ public:
+ Object() : count(0) {
+ for (int i = 0; i < NbEventQueue; i++)
+ lastReceived[i] = -1;
+ }
+ int lastReceived[NbEventQueue];
+ int count;
+ virtual void customEvent(QEvent* e) {
+ QVERIFY(e->type() >= QEvent::User);
+ QVERIFY(e->type() < QEvent::User + 5);
+ uint idx = e->type() - QEvent::User;
+ int value = static_cast<CustomEvent *>(e)->value;
+ QVERIFY(lastReceived[idx] < value);
+ lastReceived[idx] = value;
+ count++;
+ }
+
+ public slots:
+ void moveToThread(QThread *t) {
+ QObject::moveToThread(t);
+ }
+ };
+
+}
+
+void tst_QEventLoop::deliverInDefinedOrder_QTBUG19637()
+{
+ using namespace DeliverInDefinedOrder_QTBUG19637;
+ qMetaTypeId<QThread*>();
+ QThread threads[NbThread];
+ Object objects[NbObject];
+ for (int t = 0; t < NbThread; t++) {
+ threads[t].start();
+ }
+
+ int event = 0;
+
+ for (int o = 0; o < NbObject; o++) {
+ objects[o].moveToThread(&threads[o % NbThread]);
+ for (int e = 0; e < NbEvent; e++) {
+ int q = e % NbEventQueue;
+ QCoreApplication::postEvent(&objects[o], new CustomEvent(q, ++event) , q);
+ if (e % 7)
+ QMetaObject::invokeMethod(&objects[o], "moveToThread", Qt::QueuedConnection, Q_ARG(QThread*, &threads[(e+o)%NbThread]));
+ }
+ }
+
+ QTest::qWait(30);
+ for (int o = 0; o < NbObject; o++) {
+ QTRY_COMPARE(objects[o].count, int(NbEvent));
+ }
+
+ for (int t = 0; t < NbThread; t++) {
+ threads[t].quit();
+ threads[t].wait();
+ }
+
+}
+
+
+QTEST_MAIN(tst_QEventLoop)
+#include "tst_qeventloop.moc"
diff --git a/tests/auto/corelib/kernel/qitemmodel/.gitignore b/tests/auto/corelib/kernel/qitemmodel/.gitignore
new file mode 100644
index 0000000000..017be17fa8
--- /dev/null
+++ b/tests/auto/corelib/kernel/qitemmodel/.gitignore
@@ -0,0 +1 @@
+tst_qitemmodel
diff --git a/tests/auto/corelib/kernel/qitemmodel/README b/tests/auto/corelib/kernel/qitemmodel/README
new file mode 100644
index 0000000000..bddec0cef2
--- /dev/null
+++ b/tests/auto/corelib/kernel/qitemmodel/README
@@ -0,0 +1,3 @@
+This is a QStandardItemModel test. It will help catch a lot of simple problems. You should still create your own test for custom functionality and functions that your model has.
+
+Add your model to the modelstotest.cpp file (qt model's are included as examples) and modify the pro file accordingly. Fix the errors in order of failure as later tests assume the ones before them have passed.
diff --git a/tests/auto/corelib/kernel/qitemmodel/modelstotest.cpp b/tests/auto/corelib/kernel/qitemmodel/modelstotest.cpp
new file mode 100644
index 0000000000..82c28b5303
--- /dev/null
+++ b/tests/auto/corelib/kernel/qitemmodel/modelstotest.cpp
@@ -0,0 +1,424 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtCore/QtCore>
+#include <QtSql/QtSql>
+#include <QSortFilterProxyModel>
+
+/*
+ To add a model to be tested add the header file to the includes
+ and impliment what is needed in the four functions below.
+
+ You can add more then one model, several Qt models and included as examples.
+
+ In tst_qitemmodel.cpp a new ModelsToTest object is created for each test.
+
+ When you have errors fix the first ones first. Later tests depend upon them working
+*/
+
+class ModelsToTest {
+
+public:
+ ModelsToTest();
+
+ QAbstractItemModel *createModel(const QString &modelType);
+ QModelIndex populateTestArea(QAbstractItemModel *model);
+ void cleanupTestArea(QAbstractItemModel *model);
+
+ enum Read {
+ ReadOnly, // wont perform remove(), insert(), and setData()
+ ReadWrite
+ };
+ enum Contains {
+ Empty, // Confirm that rowCount() == 0 etc throughout the test
+ HasData // Confirm that rowCount() != 0 etc throughout the test
+ };
+
+ struct test {
+ test(QString m, Read r, Contains c) : modelType(m), read(r), contains(c){};
+
+ QString modelType;
+ Read read;
+ Contains contains;
+ };
+
+ QList<test> tests;
+
+ static void setupDatabase();
+};
+
+
+/*!
+ Add new tests, they can be the same model, but in a different state.
+
+ The name of the model is passed to createModel
+ If readOnly is true the remove tests will be skipped. Example: QDirModel is disabled.
+ If createModel returns an empty model. Example: QDirModel does not
+ */
+ModelsToTest::ModelsToTest()
+{
+ setupDatabase();
+
+ tests.append(test("QDirModel", ReadOnly, HasData));
+ tests.append(test("QStringListModel", ReadWrite, HasData));
+ tests.append(test("QStringListModelEmpty", ReadWrite, Empty));
+
+ tests.append(test("QStandardItemModel", ReadWrite, HasData));
+ tests.append(test("QStandardItemModelEmpty", ReadWrite, Empty));
+
+ // QSortFilterProxyModel test uses QStandardItemModel so test it first
+ tests.append(test("QSortFilterProxyModel", ReadWrite, HasData));
+ tests.append(test("QSortFilterProxyModelEmpty", ReadWrite, Empty));
+ tests.append(test("QSortFilterProxyModelRegExp", ReadWrite, HasData));
+
+ tests.append(test("QListModel", ReadWrite, HasData));
+ tests.append(test("QListModelEmpty", ReadWrite, Empty));
+ tests.append(test("QTableModel", ReadWrite, HasData));
+ tests.append(test("QTableModelEmpty", ReadWrite, Empty));
+
+ tests.append(test("QTreeModel", ReadWrite, HasData));
+ tests.append(test("QTreeModelEmpty", ReadWrite, Empty));
+
+ tests.append(test("QSqlQueryModel", ReadOnly, HasData));
+ tests.append(test("QSqlQueryModelEmpty", ReadOnly, Empty));
+
+ // Fails on remove
+ tests.append(test("QSqlTableModel", ReadOnly, HasData));
+}
+
+/*!
+ Return a new modelType.
+ */
+QAbstractItemModel *ModelsToTest::createModel(const QString &modelType)
+{
+ if (modelType == "QStringListModelEmpty")
+ return new QStringListModel();
+
+ if (modelType == "QStringListModel") {
+ QStringListModel *model = new QStringListModel();
+ populateTestArea(model);
+ return model;
+ }
+
+ if (modelType == "QStandardItemModelEmpty") {
+ return new QStandardItemModel();
+ }
+
+ if (modelType == "QStandardItemModel") {
+ QStandardItemModel *model = new QStandardItemModel();
+ populateTestArea(model);
+ return model;
+ }
+
+ if (modelType == "QSortFilterProxyModelEmpty") {
+ QSortFilterProxyModel *model = new QSortFilterProxyModel;
+ QStandardItemModel *standardItemModel = new QStandardItemModel;
+ model->setSourceModel(standardItemModel);
+ return model;
+ }
+
+ if (modelType == "QSortFilterProxyModelRegExp") {
+ QSortFilterProxyModel *model = new QSortFilterProxyModel;
+ QStandardItemModel *standardItemModel = new QStandardItemModel;
+ model->setSourceModel(standardItemModel);
+ populateTestArea(model);
+ model->setFilterRegExp(QRegExp("(^$|0.*)"));
+ return model;
+ }
+
+ if (modelType == "QSortFilterProxyModel") {
+ QSortFilterProxyModel *model = new QSortFilterProxyModel;
+ QStandardItemModel *standardItemModel = new QStandardItemModel;
+ model->setSourceModel(standardItemModel);
+ populateTestArea(model);
+ return model;
+ }
+
+ if (modelType == "QDirModel") {
+ QDirModel *model = new QDirModel();
+ model->setReadOnly(false);
+ return model;
+ }
+
+ if (modelType == "QSqlQueryModel") {
+ QSqlQueryModel *model = new QSqlQueryModel();
+ populateTestArea(model);
+ return model;
+ }
+
+ if (modelType == "QSqlQueryModelEmpty") {
+ QSqlQueryModel *model = new QSqlQueryModel();
+ return model;
+ }
+
+ if (modelType == "QSqlTableModel") {
+ QSqlTableModel *model = new QSqlTableModel();
+ populateTestArea(model);
+ return model;
+ }
+
+ if (modelType == "QListModelEmpty")
+ return (new QListWidget)->model();
+
+ if (modelType == "QListModel") {
+ QListWidget *widget = new QListWidget;
+ populateTestArea(widget->model());
+ return widget->model();
+ }
+
+ if (modelType == "QTableModelEmpty")
+ return (new QTableWidget)->model();
+
+ if (modelType == "QTableModel") {
+ QTableWidget *widget = new QTableWidget;
+ populateTestArea(widget->model());
+ return widget->model();
+ }
+
+ if (modelType == "QTreeModelEmpty") {
+ QTreeWidget *widget = new QTreeWidget;
+ return widget->model();
+ }
+
+ if (modelType == "QTreeModel") {
+ QTreeWidget *widget = new QTreeWidget;
+ populateTestArea(widget->model());
+ return widget->model();
+ }
+
+ return 0;
+}
+
+/*!
+ Fills model with some test data at least twenty rows and if possible twenty or more columns.
+ Return the parent of a row/column that can be tested.
+
+ NOTE: If readOnly is true tests will try to remove and add rows and columns.
+ If you have a tree model returning not the root index will help catch more errors.
+ */
+QModelIndex ModelsToTest::populateTestArea(QAbstractItemModel *model)
+{
+ if (QStringListModel *stringListModel = qobject_cast<QStringListModel *>(model)) {
+ QString alphabet = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
+ stringListModel->setStringList( alphabet.split(",") );
+ return QModelIndex();
+ }
+
+ if (qobject_cast<QStandardItemModel *>(model)) {
+ // Basic tree StandardItemModel
+ QModelIndex parent;
+ QVariant blue = QVariant(QColor(Qt::blue));
+#ifndef Q_OS_WINCE
+ for (int i = 0; i < 4; ++i) {
+#else
+ for (int i = 0; i < 2; ++i) {
+#endif
+ parent = model->index(0, 0, parent);
+ model->insertRows(0, 26 + i, parent);
+#ifndef Q_OS_WINCE
+ model->insertColumns(0, 26 + i, parent);
+#else
+ model->insertColumns(0, 4 + i, parent);
+#endif
+ // Fill in some values to make it easier to debug
+ /*
+ for (int x = 0; x < 26 + i; ++x) {
+ QString xval = QString::number(x);
+ for (int y = 0; y < 26 + i; ++y) {
+ QString val = xval + QString::number(y) + QString::number(i);
+ QModelIndex index = model->index(x, y, parent);
+ model->setData(index, val);
+ model->setData(index, blue, Qt::TextColorRole);
+ }
+ }
+ */
+ }
+ return model->index(0,0);
+ }
+
+ if (qobject_cast<QSortFilterProxyModel *>(model)) {
+ QAbstractItemModel *realModel = (qobject_cast<QSortFilterProxyModel *>(model))->sourceModel();
+ // Basic tree StandardItemModel
+ QModelIndex parent;
+ QVariant blue = QVariant(QColor(Qt::blue));
+#ifndef Q_OS_WINCE
+ for (int i = 0; i < 4; ++i) {
+#else
+ for (int i = 0; i < 2; ++i) {
+#endif
+ parent = realModel->index(0, 0, parent);
+ realModel->insertRows(0, 26+i, parent);
+#ifndef Q_OS_WINCE
+ realModel->insertColumns(0, 26+i, parent);
+#else
+ realModel->insertColumns(0, 4, parent);
+#endif
+ // Fill in some values to make it easier to debug
+ /*
+ for (int x = 0; x < 26+i; ++x) {
+ QString xval = QString::number(x);
+ for (int y = 0; y < 26 + i; ++y) {
+ QString val = xval + QString::number(y) + QString::number(i);
+ QModelIndex index = realModel->index(x, y, parent);
+ realModel->setData(index, val);
+ realModel->setData(index, blue, Qt::TextColorRole);
+ }
+ }
+ */
+ }
+ QModelIndex returnIndex = model->index(0,0);
+ if (!returnIndex.isValid())
+ qFatal("%s: model index to be returned is invalid", Q_FUNC_INFO);
+ return returnIndex;
+ }
+
+ if (QDirModel *dirModel = qobject_cast<QDirModel *>(model)) {
+ if (!QDir::current().mkdir("test"))
+ qFatal("%s: cannot create directory %s",
+ Q_FUNC_INFO,
+ qPrintable(QDir::toNativeSeparators(QDir::currentPath()+"/test")));
+ for (int i = 0; i < 26; ++i) {
+ QString subdir = QString("test/foo_%1").arg(i);
+ if (!QDir::current().mkdir(subdir))
+ qFatal("%s: cannot create directory %s",
+ Q_FUNC_INFO,
+ qPrintable(QDir::toNativeSeparators(QDir::currentPath()+"/"+subdir)));
+ }
+ return dirModel->index(QDir::currentPath()+"/test");
+ }
+
+ if (QSqlQueryModel *queryModel = qobject_cast<QSqlQueryModel *>(model)) {
+ QSqlQuery q;
+ q.exec("CREATE TABLE test(id int primary key, name varchar(30))");
+ q.prepare("INSERT INTO test(id, name) values (?, ?)");
+#ifndef Q_OS_WINCE
+ for (int i = 0; i < 1024; ++i) {
+#else
+ for (int i = 0; i < 512; ++i) {
+#endif
+ q.addBindValue(i);
+ q.addBindValue("Mr. Smith" + QString::number(i));
+ q.exec();
+ }
+ if (QSqlTableModel *tableModel = qobject_cast<QSqlTableModel *>(model)) {
+ tableModel->setTable("test");
+ tableModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
+ tableModel->select();
+ } else {
+ queryModel->setQuery("select * from test");
+ }
+ return QModelIndex();
+ }
+
+ if (QListWidget *listWidget = qobject_cast<QListWidget *>(model->parent())) {
+#ifndef Q_OS_WINCE
+ int items = 100;
+#else
+ int items = 50;
+#endif
+ while (items--)
+ listWidget->addItem(QString("item %1").arg(items));
+ return QModelIndex();
+ }
+
+ if (QTableWidget *tableWidget = qobject_cast<QTableWidget *>(model->parent())) {
+ tableWidget->setColumnCount(20);
+ tableWidget->setRowCount(20);
+ return QModelIndex();
+ }
+
+ if (QTreeWidget *treeWidget = qobject_cast<QTreeWidget *>(model->parent())) {
+ int topItems = 20;
+ treeWidget->setColumnCount(1);
+ QTreeWidgetItem *parent;
+ while (topItems--){
+ parent = new QTreeWidgetItem(treeWidget, QStringList(QString("top %1").arg(topItems)));
+ for (int i = 0; i < 20; ++i)
+ new QTreeWidgetItem(parent, QStringList(QString("child %1").arg(topItems)));
+ }
+ return QModelIndex();
+ }
+
+ qFatal("%s: unknown type of model", Q_FUNC_INFO);
+ return QModelIndex();
+}
+
+/*!
+ If you need to cleanup from populateTest() do it here.
+ Note that this is called after every test even if populateTestArea isn't called.
+ */
+void ModelsToTest::cleanupTestArea(QAbstractItemModel *model)
+{
+ if (qobject_cast<QDirModel *>(model))
+ {
+ if (QDir(QDir::currentPath()+"/test").exists())
+ {
+ for (int i = 0; i < 26; ++i) {
+ QString subdir(QString("test/foo_%1").arg(i));
+ if (!QDir::current().rmdir(subdir))
+ qFatal("%s: cannot remove directory %s",
+ Q_FUNC_INFO,
+ qPrintable(QDir::toNativeSeparators(QDir::currentPath()+"/"+subdir)));
+ }
+ if (!QDir::current().rmdir("test"))
+ qFatal("%s: cannot remove directory %s",
+ Q_FUNC_INFO,
+ qPrintable(QDir::toNativeSeparators(QDir::currentPath()+"/test")));
+ }
+ } else if (qobject_cast<QSqlQueryModel *>(model)) {
+ QSqlQuery q("DROP TABLE test");
+ }
+}
+
+void ModelsToTest::setupDatabase()
+{
+ if (!QSqlDatabase::database().isValid()) {
+ QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
+ db.setDatabaseName(":memory:");
+ if (!db.open()) {
+ qWarning() << "Unable to open database" << db.lastError();
+ return;
+ }
+ }
+}
+
diff --git a/tests/auto/corelib/kernel/qitemmodel/qitemmodel.pro b/tests/auto/corelib/kernel/qitemmodel/qitemmodel.pro
new file mode 100644
index 0000000000..97d55fcd4d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qitemmodel/qitemmodel.pro
@@ -0,0 +1,26 @@
+load(qttest_p4)
+SOURCES += tst_qitemmodel.cpp
+
+QT += widgets sql
+
+# NOTE: The deployment of the sqldrivers is disabled on purpose.
+# If we deploy the plugins, they are loaded twice when running
+# the tests on the autotest system. In that case we run out of
+# memory on Windows Mobile 5.
+
+#wince*: {
+# plugFiles.files = $$QT_BUILD_TREE/plugins/sqldrivers/*.dll
+# plugFiles.path = sqldrivers
+# DEPLOYMENT += plugFiles
+#}
+
+symbian {
+ TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
+ qt_not_deployed {
+ contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
+ sqlite.path = /sys/bin
+ sqlite.files = sqlite3.dll
+ DEPLOYMENT += sqlite
+ }
+ }
+}
diff --git a/tests/auto/corelib/kernel/qitemmodel/tst_qitemmodel.cpp b/tests/auto/corelib/kernel/qitemmodel/tst_qitemmodel.cpp
new file mode 100644
index 0000000000..7daa984633
--- /dev/null
+++ b/tests/auto/corelib/kernel/qitemmodel/tst_qitemmodel.cpp
@@ -0,0 +1,1397 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtCore>
+#include <qdebug.h>
+#include "modelstotest.cpp"
+#include <QMetaType>
+
+Q_DECLARE_METATYPE(QModelIndex)
+
+//TESTED_CLASS=
+//TESTED_FILES=gui/itemviews/qstandarditemmodel.h gui/itemviews/qstandarditemmodel.cpp
+
+/*!
+ See modelstotest.cpp for instructions on how to have your model tested with these tests.
+
+ Each test such as rowCount have a _data() function which populate the QTest data with
+ the tests specified by modelstotest.cpp and any extra data needed for that particular test.
+
+ setupWithNoTestData() fills the QTest data with just the tests and is used by most tests.
+
+ There are some basic qDebug statements sprikled about that might be helpfull for fixing
+ your issues.
+ */
+class tst_QItemModel : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QItemModel() {};
+ virtual ~tst_QItemModel() {};
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void nonDestructiveBasicTest_data();
+ void nonDestructiveBasicTest();
+
+ void rowCount_data();
+ void rowCount();
+ void columnCount_data();
+ void columnCount();
+
+ void hasIndex_data();
+ void hasIndex();
+ void index_data();
+ void index();
+
+ void parent_data();
+ void parent();
+
+ void data_data();
+ void data();
+
+ void setData_data();
+ void setData();
+
+ void setHeaderData_data();
+ void setHeaderData();
+
+ void remove_data();
+ void remove();
+
+ void insert_data();
+ void insert();
+
+ void sort_data();
+ void sort();
+
+protected slots:
+ void slot_rowsAboutToRemove(const QModelIndex &parent);
+ void slot_rowsRemoved(const QModelIndex &parent);
+ void slot_columnsAboutToRemove(const QModelIndex &parent);
+ void slot_columnsRemoved(const QModelIndex &parent);
+
+ void slot_rowsAboutToInserted(const QModelIndex &parent);
+ void slot_rowsInserted(const QModelIndex &parent);
+ void slot_columnsAboutToInserted(const QModelIndex &parent);
+ void slot_columnsInserted(const QModelIndex &parent);
+private:
+ void setupWithNoTestData();
+ QAbstractItemModel *currentModel;
+ ModelsToTest *testModels;
+
+ // used by remove()
+ QPersistentModelIndex parentOfRemoved;
+ int afterAboutToRemoveRowCount;
+ int afterRemoveRowCount;
+ int afterAboutToRemoveColumnCount;
+ int afterRemoveColumnCount;
+
+ // remove() recursive
+ bool removeRecursively;
+
+ // used by insert()
+ QPersistentModelIndex parentOfInserted;
+ int afterAboutToInsertRowCount;
+ int afterInsertRowCount;
+ int afterAboutToInsertColumnCount;
+ int afterInsertColumnCount;
+
+ // insert() recursive
+ bool insertRecursively;
+};
+
+void tst_QItemModel::init()
+{
+ testModels = new ModelsToTest();
+ removeRecursively = false;
+ insertRecursively = false;
+}
+
+void tst_QItemModel::cleanup()
+{
+ testModels->cleanupTestArea(currentModel);
+ delete testModels;
+ delete currentModel;
+ currentModel = 0;
+}
+
+void tst_QItemModel::setupWithNoTestData()
+{
+ ModelsToTest modelsToTest;
+ QTest::addColumn<QString>("modelType");
+ QTest::addColumn<bool>("readOnly");
+ QTest::addColumn<bool>("isEmpty");
+ for (int i = 0; i < modelsToTest.tests.size(); ++i) {
+ ModelsToTest::test t = modelsToTest.tests.at(i);
+ bool readOnly = (t.read == ModelsToTest::ReadOnly);
+ bool isEmpty = (t.contains == ModelsToTest::Empty);
+ QTest::newRow(t.modelType.toLatin1().data()) << t.modelType << readOnly << isEmpty;
+ }
+}
+
+void tst_QItemModel::nonDestructiveBasicTest_data()
+{
+ setupWithNoTestData();
+}
+
+/*!
+ nonDestructiveBasicTest tries to call a number of the basic functions (not all)
+ to make sure the model doesn't segfault, testing the functions that makes sense.
+ */
+void tst_QItemModel::nonDestructiveBasicTest()
+{
+ QFETCH(QString, modelType);
+ currentModel = testModels->createModel(modelType);
+ QVERIFY(currentModel);
+
+ QCOMPARE(currentModel->buddy(QModelIndex()), QModelIndex());
+ currentModel->canFetchMore(QModelIndex());
+ QVERIFY(currentModel->columnCount(QModelIndex()) >= 0);
+ QCOMPARE(currentModel->data(QModelIndex()), QVariant());
+ currentModel->fetchMore(QModelIndex());
+ Qt::ItemFlags flags = currentModel->flags(QModelIndex());
+ QVERIFY(flags == Qt::ItemIsDropEnabled || flags == 0);
+ currentModel->hasChildren(QModelIndex());
+ currentModel->hasIndex(0, 0);
+ currentModel->headerData(0, Qt::Horizontal);
+ currentModel->index(0,0), QModelIndex();
+ currentModel->itemData(QModelIndex());
+ QVariant cache;
+ currentModel->match(QModelIndex(), -1, cache);
+ currentModel->mimeTypes();
+ QCOMPARE(currentModel->parent(QModelIndex()), QModelIndex());
+ QVERIFY(currentModel->rowCount() >= 0);
+ QVariant variant;
+ currentModel->setData(QModelIndex(), variant, -1);
+ currentModel->setHeaderData(-1, Qt::Horizontal, QVariant());
+ currentModel->setHeaderData(0, Qt::Horizontal, QVariant());
+ currentModel->setHeaderData(currentModel->columnCount() + 100, Qt::Horizontal, QVariant());
+ QMap<int, QVariant> roles;
+ currentModel->setItemData(QModelIndex(), roles);
+ currentModel->sibling(0,0,QModelIndex());
+ currentModel->span(QModelIndex());
+ currentModel->supportedDropActions();
+ currentModel->revert();
+ currentModel->submit();
+}
+
+
+void tst_QItemModel::rowCount_data()
+{
+ setupWithNoTestData();
+}
+
+/*!
+ Tests model's implimentation of QAbstractItemModel::rowCount() and hasChildren()
+ */
+void tst_QItemModel::rowCount()
+{
+ QFETCH(QString, modelType);
+ currentModel = testModels->createModel(modelType);
+ QVERIFY(currentModel);
+
+ QFETCH(bool, isEmpty);
+ if (isEmpty) {
+ QCOMPARE(currentModel->rowCount(), 0);
+ QCOMPARE(currentModel->hasChildren(), false);
+ }
+ else {
+ QVERIFY(currentModel->rowCount() > 0);
+ QCOMPARE(currentModel->hasChildren(), true);
+ }
+
+ // check top row
+ QModelIndex topIndex = currentModel->index(0, 0, QModelIndex());
+ int rows = currentModel->rowCount(topIndex);
+ QVERIFY(rows >= 0);
+ if (rows > 0)
+ QCOMPARE(currentModel->hasChildren(topIndex), true);
+ else
+ QCOMPARE(currentModel->hasChildren(topIndex), false);
+
+ QModelIndex secondLevelIndex = currentModel->index(0, 0, topIndex);
+ if (secondLevelIndex.isValid()) { // not the top level
+ // check a row count where parent is valid
+ rows = currentModel->rowCount(secondLevelIndex);
+ QVERIFY(rows >= 0);
+ if (rows > 0)
+ QCOMPARE(currentModel->hasChildren(secondLevelIndex), true);
+ else
+ QCOMPARE(currentModel->hasChildren(secondLevelIndex), false);
+ }
+
+ // rowCount is tested more extensivly more later in checkChildren(),
+ // but this catches the big mistakes
+}
+
+void tst_QItemModel::columnCount_data()
+{
+ setupWithNoTestData();
+}
+
+/*!
+ Tests model's implimentation of QAbstractItemModel::columnCount() and hasChildren()
+ */
+void tst_QItemModel::columnCount()
+{
+ QFETCH(QString, modelType);
+ currentModel = testModels->createModel(modelType);
+ QVERIFY(currentModel);
+
+ QFETCH(bool, isEmpty);
+ if (isEmpty) {
+ QCOMPARE(currentModel->hasChildren(), false);
+ }
+ else {
+ QVERIFY(currentModel->columnCount() > 0);
+ QCOMPARE(currentModel->hasChildren(), true);
+ }
+
+ // check top row
+ QModelIndex topIndex = currentModel->index(0, 0, QModelIndex());
+ int columns = currentModel->columnCount(topIndex);
+
+ // check a row count where parent is valid
+ columns = currentModel->columnCount(currentModel->index(0, 0, topIndex));
+ QVERIFY(columns >= 0);
+
+ // columnCount is tested more extensivly more later in checkChildren(),
+ // but this catches the big mistakes
+}
+
+void tst_QItemModel::hasIndex_data()
+{
+ setupWithNoTestData();
+}
+
+/*!
+ Tests model's implimentation of QAbstractItemModel::hasIndex()
+ */
+void tst_QItemModel::hasIndex()
+{
+ QFETCH(QString, modelType);
+ currentModel = testModels->createModel(modelType);
+ QVERIFY(currentModel);
+
+ // Make sure that invalid values returns an invalid index
+ QCOMPARE(currentModel->hasIndex(-2, -2), false);
+ QCOMPARE(currentModel->hasIndex(-2, 0), false);
+ QCOMPARE(currentModel->hasIndex(0, -2), false);
+
+ int rows = currentModel->rowCount();
+ int columns = currentModel->columnCount();
+
+ QCOMPARE(currentModel->hasIndex(rows, columns), false);
+ QCOMPARE(currentModel->hasIndex(rows+1, columns+1), false);
+
+ QFETCH(bool, isEmpty);
+ if (isEmpty)
+ return;
+
+ QCOMPARE(currentModel->hasIndex(0,0), true);
+
+ // hasIndex is tested more extensivly more later in checkChildren(),
+ // but this catches the big mistakes
+}
+
+void tst_QItemModel::index_data()
+{
+ setupWithNoTestData();
+}
+
+/*!
+ Tests model's implimentation of QAbstractItemModel::index()
+ */
+void tst_QItemModel::index()
+{
+ QFETCH(QString, modelType);
+ currentModel = testModels->createModel(modelType);
+ QVERIFY(currentModel);
+
+ // Make sure that invalid values returns an invalid index
+ QCOMPARE(currentModel->index(-2, -2), QModelIndex());
+ QCOMPARE(currentModel->index(-2, 0), QModelIndex());
+ QCOMPARE(currentModel->index(0, -2), QModelIndex());
+
+ QFETCH(bool, isEmpty);
+ if (isEmpty)
+ return;
+
+ int rows = currentModel->rowCount();
+ int columns = currentModel->columnCount();
+
+ // Catch off by one errors
+ QCOMPARE(currentModel->index(rows,columns), QModelIndex());
+ QCOMPARE(currentModel->index(0,0).isValid(), true);
+
+ // Make sure that the same index is always returned
+ QModelIndex a = currentModel->index(0,0);
+ QModelIndex b = currentModel->index(0,0);
+ QVERIFY(a == b);
+
+ // index is tested more extensivly more later in checkChildren(),
+ // but this catches the big mistakes
+}
+
+
+void tst_QItemModel::parent_data()
+{
+ setupWithNoTestData();
+}
+
+/*!
+ A model that returns an index of parent X should also return X when asking
+ for the parent of the index.
+
+ This recursive function does pretty extensive testing on the whole model in an
+ effort to catch edge cases.
+
+ This function assumes that rowCount(), columnCount() and index() work. If they have
+ a bug it will point it out, but the above tests should have already found the basic bugs
+ because it is easier to figure out the problem in those tests then this one.
+ */
+void checkChildren(QAbstractItemModel *currentModel, const QModelIndex &parent, int currentDepth=0)
+{
+ QFETCH(bool, readOnly);
+
+ if (currentModel->canFetchMore(parent))
+ currentModel->fetchMore(parent);
+
+ int rows = currentModel->rowCount(parent);
+ int columns = currentModel->columnCount(parent);
+
+ QCOMPARE(rows > 0, (currentModel->hasChildren(parent)));
+
+ // Some reasuring testing against rows(),columns(), and hasChildren()
+ QVERIFY(rows >= 0);
+ QVERIFY(columns >= 0);
+ if (rows > 0 || columns > 0)
+ QCOMPARE(currentModel->hasChildren(parent), true);
+ else
+ QCOMPARE(currentModel->hasChildren(parent), false);
+
+ //qDebug() << "parent:" << currentModel->data(parent).toString() << "rows:" << rows
+ // << "columns:" << columns << "parent column:" << parent.column();
+
+ QCOMPARE(currentModel->hasIndex(rows+1, 0, parent), false);
+ for (int r = 0; r < rows; ++r) {
+ if (currentModel->canFetchMore(parent))
+ currentModel->fetchMore(parent);
+
+ QCOMPARE(currentModel->hasIndex(r, columns+1, parent), false);
+ for (int c = 0; c < columns; ++c) {
+ QCOMPARE(currentModel->hasIndex(r, c, parent), true);
+ QModelIndex index = currentModel->index(r, c, parent);
+ QCOMPARE(index.isValid(), true);
+
+ if (!readOnly)
+ currentModel->setData(index, "I'm a little tea pot short and stout");
+ QModelIndex modifiedIndex = currentModel->index(r, c, parent);
+ QCOMPARE(index, modifiedIndex);
+
+ // Make sure we get the same index if we request it twice in a row
+ QModelIndex a = currentModel->index(r, c, parent);
+ QModelIndex b = currentModel->index(r, c, parent);
+ QVERIFY(a == b);
+
+ // Some basic checking on the index that is returned
+ QVERIFY(index.model() == currentModel);
+ QCOMPARE(index.row(), r);
+ QCOMPARE(index.column(), c);
+ QCOMPARE(currentModel->data(index, Qt::DisplayRole).isValid(), true);
+
+ // If the next test fails here is some somewhat useful debug you play with.
+ /*
+ if (currentModel->parent(index) != parent) {
+ qDebug() << r << c << currentDepth << currentModel->data(index).toString()
+ << currentModel->data(parent).toString();
+ qDebug() << index << parent << currentModel->parent(index);
+ QTreeView view;
+ view.setModel(currentModel);
+ view.show();
+ QTest::qWait(9000);
+ }*/
+ QCOMPARE(currentModel->parent(index), parent);
+
+ // recursivly go down
+ if (currentModel->hasChildren(index) && currentDepth < 5) {
+ //qDebug() << r << c << "has children" << currentModel->rowCount(index);
+ checkChildren(currentModel, index, ++currentDepth);
+ // Because this is recursive we will return at the first failure rather then
+ // reporting it over and over
+ if (QTest::currentTestFailed())
+ return;
+ }
+
+ // make sure that after testing the children that the index pointer doesn't change.
+ QModelIndex newerIndex = currentModel->index(r, c, parent);
+ QCOMPARE(index, newerIndex);
+ }
+ }
+}
+
+/*!
+ Tests model's implimentation of QAbstractItemModel::parent()
+ */
+void tst_QItemModel::parent()
+{
+ QFETCH(QString, modelType);
+ currentModel = testModels->createModel(modelType);
+ QVERIFY(currentModel);
+
+ // Make sure the model wont crash and will return an invalid QModelIndex
+ // when asked for the parent of an invalid index.
+ QCOMPARE(currentModel->parent(QModelIndex()), QModelIndex());
+
+ QFETCH(bool, isEmpty);
+ if (isEmpty)
+ return;
+
+ // Common error test #1, make sure that a top level index has a parent
+ // that is a invalid QModelIndex. You model
+ QModelIndex topIndex = currentModel->index(0, 0, QModelIndex());
+ QCOMPARE(currentModel->parent(topIndex), QModelIndex());
+
+ // Common error test #2, make sure that a second level index has a parent
+ // that is the top level index.
+ if (currentModel->rowCount(topIndex) > 0) {
+ QModelIndex childIndex = currentModel->index(0, 0, topIndex);
+ QCOMPARE(currentModel->parent(childIndex), topIndex);
+ }
+
+ // Common error test #3, the second column has the same children
+ // as the first column in a row.
+ QModelIndex topIndex1 = currentModel->index(0, 1, QModelIndex());
+ if (currentModel->rowCount(topIndex1) > 0) {
+ QModelIndex childIndex = currentModel->index(0, 0, topIndex);
+ QModelIndex childIndex1 = currentModel->index(0, 0, topIndex1);
+ QVERIFY(childIndex != childIndex1);
+ }
+
+ // Full test, walk 10 levels deap through the model making sure that all
+ // parents's children correctly specify their parent
+ QModelIndex top = QModelIndex();
+ checkChildren(currentModel, top);
+}
+
+
+void tst_QItemModel::data_data()
+{
+ setupWithNoTestData();
+}
+
+/*!
+ Tests model's implimentation of QAbstractItemModel::data()
+ */
+void tst_QItemModel::data()
+{
+ QFETCH(QString, modelType);
+ currentModel = testModels->createModel(modelType);
+ QVERIFY(currentModel);
+
+ // Invalid index should return an invalid qvariant
+ QVERIFY(!currentModel->data(QModelIndex()).isValid());
+
+ QFETCH(bool, isEmpty);
+ if (isEmpty)
+ return;
+
+ // A valid index should have a valid qvariant data
+ QVERIFY(currentModel->index(0,0).isValid());
+
+ // shouldn't be able to set data on an invalid index
+ QCOMPARE(currentModel->setData(QModelIndex(), "foo", Qt::DisplayRole), false);
+
+ // General Purpose roles
+ QVariant variant = currentModel->data(currentModel->index(0,0), Qt::ToolTipRole);
+ if (variant.isValid()) {
+ QVERIFY(qVariantCanConvert<QString>(variant));
+ }
+ variant = currentModel->data(currentModel->index(0,0), Qt::StatusTipRole);
+ if (variant.isValid()) {
+ QVERIFY(qVariantCanConvert<QString>(variant));
+ }
+ variant = currentModel->data(currentModel->index(0,0), Qt::WhatsThisRole);
+ if (variant.isValid()) {
+ QVERIFY(qVariantCanConvert<QString>(variant));
+ }
+
+ variant = currentModel->data(currentModel->index(0,0), Qt::SizeHintRole);
+ if (variant.isValid()) {
+ QVERIFY(qVariantCanConvert<QSize>(variant));
+ }
+
+
+ // Appearance roles
+ QVariant fontVariant = currentModel->data(currentModel->index(0,0), Qt::FontRole);
+ if (fontVariant.isValid()) {
+ QVERIFY(qVariantCanConvert<QFont>(fontVariant));
+ }
+
+ QVariant textAlignmentVariant = currentModel->data(currentModel->index(0,0), Qt::TextAlignmentRole);
+ if (textAlignmentVariant.isValid()) {
+ int alignment = textAlignmentVariant.toInt();
+ QVERIFY(alignment == Qt::AlignLeft ||
+ alignment == Qt::AlignRight ||
+ alignment == Qt::AlignHCenter ||
+ alignment == Qt::AlignJustify);
+ }
+
+ QVariant colorVariant = currentModel->data(currentModel->index(0,0), Qt::BackgroundColorRole);
+ if (colorVariant.isValid()) {
+ QVERIFY(qVariantCanConvert<QColor>(colorVariant));
+ }
+
+ colorVariant = currentModel->data(currentModel->index(0,0), Qt::TextColorRole);
+ if (colorVariant.isValid()) {
+ QVERIFY(qVariantCanConvert<QColor>(colorVariant));
+ }
+
+ QVariant checkStateVariant = currentModel->data(currentModel->index(0,0), Qt::CheckStateRole);
+ if (checkStateVariant.isValid()) {
+ int state = checkStateVariant.toInt();
+ QVERIFY(state == Qt::Unchecked ||
+ state == Qt::PartiallyChecked ||
+ state == Qt::Checked);
+ }
+}
+
+void tst_QItemModel::setData_data()
+{
+ setupWithNoTestData();
+}
+
+/*!
+ Tests model's implimentation of QAbstractItemModel::setData()
+ */
+void tst_QItemModel::setData()
+{
+ QFETCH(QString, modelType);
+ currentModel = testModels->createModel(modelType);
+ QVERIFY(currentModel);
+ qRegisterMetaType<QModelIndex>("QModelIndex");
+ QSignalSpy spy(currentModel, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)));
+ QCOMPARE(currentModel->setData(QModelIndex(), QVariant()), false);
+ QCOMPARE(spy.count(), 0);
+
+ QFETCH(bool, isEmpty);
+ if (isEmpty)
+ return;
+
+ QFETCH(bool, readOnly);
+ if (readOnly)
+ return;
+
+ // Populate the test area so we can chage stuff. See: cleanup()
+ QModelIndex topIndex = testModels->populateTestArea(currentModel);
+ QVERIFY(currentModel->hasChildren(topIndex));
+ QModelIndex index = currentModel->index(0, 0, topIndex);
+ QVERIFY(index.isValid());
+
+ spy.clear();
+ QString text = "Index private pointers should always be the same";
+ QCOMPARE(currentModel->setData(index, text, Qt::EditRole), true);
+ QCOMPARE(index.data(Qt::EditRole).toString(), text);
+
+ // Changing the text shouldn't change the layout, parent, pointer etc.
+ QModelIndex changedIndex = currentModel->index(0, 0, topIndex);
+ QCOMPARE(changedIndex, index);
+ QCOMPARE(spy.count(), 1);
+}
+
+void tst_QItemModel::setHeaderData_data()
+{
+ setupWithNoTestData();
+}
+
+/*!
+ Tests model's implimentation of QAbstractItemModel::setHeaderData()
+ */
+void tst_QItemModel::setHeaderData()
+{
+ QFETCH(QString, modelType);
+ currentModel = testModels->createModel(modelType);
+ QVERIFY(currentModel);
+
+ QCOMPARE(currentModel->setHeaderData(-1, Qt::Horizontal, QVariant()), false);
+ QCOMPARE(currentModel->setHeaderData(-1, Qt::Vertical, QVariant()), false);
+
+ QFETCH(bool, isEmpty);
+ if (isEmpty)
+ return;
+
+ QFETCH(bool, readOnly);
+ if (readOnly)
+ return;
+
+ // Populate the test area so we can change stuff. See: cleanup()
+ QModelIndex topIndex = testModels->populateTestArea(currentModel);
+ QVERIFY(currentModel->hasChildren(topIndex));
+ QModelIndex index = currentModel->index(0, 0, topIndex);
+ QVERIFY(index.isValid());
+
+ qRegisterMetaType<Qt::Orientation>("Qt::Orientation");
+ QSignalSpy spy(currentModel, SIGNAL(headerDataChanged( Qt::Orientation, int , int )));
+
+ QString text = "Index private pointers should always be the same";
+ int signalCount = 0;
+ for (int i = 0; i < 4; ++i){
+ if(currentModel->setHeaderData(i, Qt::Horizontal, text)) {
+ QCOMPARE(currentModel->headerData(i, Qt::Horizontal).toString(), text);
+ ++signalCount;
+ }
+ if(currentModel->setHeaderData(i, Qt::Vertical, text)) {
+ QCOMPARE(currentModel->headerData(i, Qt::Vertical).toString(), text);
+ ++signalCount;
+ }
+ }
+ QCOMPARE(spy.count(), signalCount);
+}
+
+void tst_QItemModel::sort_data()
+{
+ setupWithNoTestData();
+}
+
+/*!
+ Tests model's implimentation of QAbstractItemModel::sort()
+ */
+void tst_QItemModel::sort()
+{
+ QFETCH(QString, modelType);
+ currentModel = testModels->createModel(modelType);
+ QVERIFY(currentModel);
+
+ QFETCH(bool, isEmpty);
+ if (isEmpty)
+ return;
+
+ // Populate the test area so we can chage stuff. See: cleanup()
+ QPersistentModelIndex topIndex = testModels->populateTestArea(currentModel);
+ QVERIFY(currentModel->hasChildren(topIndex));
+ QModelIndex index = currentModel->index(0, 0, topIndex);
+ QVERIFY(index.isValid());
+ QSignalSpy spy(currentModel, SIGNAL(layoutChanged()));
+ for (int i=-1; i < 10; ++i){
+ currentModel->sort(i);
+ if (index != currentModel->index(0, 0, topIndex)){
+ QVERIFY(spy.count() > 0);
+ index = currentModel->index(0, 0, topIndex);
+ spy.clear();
+ }
+ }
+ currentModel->sort(99999);
+}
+
+/*!
+ Tests model's implimentation of QAbstractItemModel::removeRow() and QAbstractItemModel::removeColumn()
+ */
+#define START 0
+#define MIDDLE 6
+#define END -1
+#define MANY 9
+#define ALL -1
+#define NOSIGNALS 0
+#define DEFAULTCOUNT 1
+#define DNS 1 // DefaultNumberOfSignals
+#define RECURSIVE true
+#define SUCCESS true
+#define FAIL false
+void tst_QItemModel::remove_data()
+{
+ ModelsToTest modelsToTest;
+ QTest::addColumn<QString>("modelType");
+ QTest::addColumn<bool>("readOnly");
+ QTest::addColumn<bool>("isEmpty");
+
+ QTest::addColumn<int>("start");
+ QTest::addColumn<int>("count");
+
+ QTest::addColumn<int>("numberOfRowsAboutToBeRemovedSignals");
+ QTest::addColumn<int>("numberOfColumnsAboutToBeRemovedSignals");
+ QTest::addColumn<int>("numberOfRowsRemovedSignals");
+ QTest::addColumn<int>("numberOfColumnsRemovedSignals");
+
+ QTest::addColumn<bool>("recursive");
+ QTest::addColumn<int>("recursiveRow");
+ QTest::addColumn<int>("recursiveCount");
+
+ QTest::addColumn<bool>("shouldSucceed");
+
+#define makeTestRow(testName, start, count, sar, srr, sac, src, r, rr, rc, s) \
+ QTest::newRow((t.modelType + testName).toLatin1().data()) << t.modelType << readOnly << isEmpty << \
+ start << count << \
+ sar << srr << sac << src << \
+ r << rr << rc << \
+ s;
+
+ for (int i = 0; i < modelsToTest.tests.size(); ++i) {
+ ModelsToTest::test t = modelsToTest.tests.at(i);
+ QString name = t.modelType;
+ bool readOnly = (t.read == ModelsToTest::ReadOnly);
+ bool isEmpty = (t.contains == ModelsToTest::Empty);
+
+ // half these
+ makeTestRow(":one at the start", START, DEFAULTCOUNT, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+ makeTestRow(":one at the middle", MIDDLE, DEFAULTCOUNT, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+ makeTestRow(":one at the end", END, DEFAULTCOUNT, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+
+ makeTestRow(":many at the start", START, MANY, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+ makeTestRow(":many at the middle", MIDDLE, MANY, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+ makeTestRow(":many at the end", END, MANY, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+
+ makeTestRow(":remove all", START, ALL, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+
+ makeTestRow(":none at the start", START, 0, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":none at the middle", MIDDLE, 0, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":none at the end", END, 0, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+
+ makeTestRow(":invalid start, valid count", -99, 0, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":invalid start, valid count", 9999, 0, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":invalid start, valid count", -99, 1, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":invalid start, valid count", 9999, 1, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":invalid start, valid count", -99, MANY, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":invalid start, valid count", 9999, MANY, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+
+ makeTestRow(":valid start, invalid count", START, -2, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":valid start, invalid count", MIDDLE, -2, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":valid start, invalid count", END, -2, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":valid start, invalid count", START, 9999, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":valid start, invalid count", MIDDLE, 9999, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":valid start, invalid count", END, 9999, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+
+ // Recursive remove's might assert, haven't decided yet...
+ //makeTestRow(":one at the start recursivly", START, DEFAULTCOUNT, 2, DNS, 2, DNS, RECURSIVE, START, DEFAULTCOUNT, FAIL);
+ //makeTestRow(":one at the middle recursivly", MIDDLE, DEFAULTCOUNT, 2, DNS, 2, DNS, RECURSIVE, START, DEFAULTCOUNT, SUCCESS);
+ //makeTestRow(":one at the end recursivly", END, DEFAULTCOUNT, 2, DNS, 2, DNS, RECURSIVE, START, DEFAULTCOUNT, SUCCESS);
+ }
+}
+
+void tst_QItemModel::remove()
+{
+ QFETCH(QString, modelType);
+
+ currentModel = testModels->createModel(modelType);
+ QVERIFY(currentModel);
+
+ QFETCH(bool, readOnly);
+ if (readOnly)
+ return;
+
+ QFETCH(int, start);
+ QFETCH(int, count);
+
+ QFETCH(bool, recursive);
+ removeRecursively = recursive;
+
+/*!
+ Removes count number of rows starting at start
+ if count is -1 it removes all rows
+ if start is -1 then it starts at the last row - count
+ */
+ QFETCH(bool, shouldSucceed);
+
+ // Populate the test area so we can remove something. See: cleanup()
+ // parentOfRemoved is stored so that the slots can make sure parentOfRemoved is the index that is emitted.
+ parentOfRemoved = testModels->populateTestArea(currentModel);
+
+ if (count == -1)
+ count = currentModel->rowCount(parentOfRemoved);
+ if (start == -1)
+ start = currentModel->rowCount(parentOfRemoved)-count;
+
+ if (currentModel->rowCount(parentOfRemoved) == 0 ||
+ currentModel->columnCount(parentOfRemoved) == 0) {
+ qWarning() << "model test area doesn't have any rows or columns, can't fully test remove(). Skipping";
+ return;
+ }
+
+ //qDebug() << "remove start:" << start << "count:" << count << "rowCount:" << currentModel->rowCount(parentOfRemoved);
+
+ // When a row or column is removed there should be two signals.
+ // Watch to make sure they are emitted and get the row/column count when they do get emitted by connecting them to a slot
+ qRegisterMetaType<QModelIndex>("QModelIndex");
+ QSignalSpy columnsAboutToBeRemovedSpy(currentModel, SIGNAL(columnsAboutToBeRemoved( const QModelIndex &, int , int )));
+ QSignalSpy rowsAboutToBeRemovedSpy(currentModel, SIGNAL(rowsAboutToBeRemoved( const QModelIndex &, int , int )));
+ QSignalSpy columnsRemovedSpy(currentModel, SIGNAL(columnsRemoved( const QModelIndex &, int, int )));
+ QSignalSpy rowsRemovedSpy(currentModel, SIGNAL(rowsRemoved( const QModelIndex &, int, int )));
+ QSignalSpy modelResetSpy(currentModel, SIGNAL(modelReset()));
+ QSignalSpy modelLayoutChangedSpy(currentModel, SIGNAL(layoutChanged()));
+
+ QFETCH(int, numberOfRowsAboutToBeRemovedSignals);
+ QFETCH(int, numberOfColumnsAboutToBeRemovedSignals);
+ QFETCH(int, numberOfRowsRemovedSignals);
+ QFETCH(int, numberOfColumnsRemovedSignals);
+
+ //
+ // test removeRow()
+ //
+ connect(currentModel, SIGNAL(rowsAboutToBeRemoved( const QModelIndex &, int , int )),
+ this, SLOT(slot_rowsAboutToRemove(const QModelIndex &)));
+ connect(currentModel, SIGNAL(rowsRemoved( const QModelIndex &, int , int )),
+ this, SLOT(slot_rowsRemoved(const QModelIndex &)));
+ int beforeRemoveRowCount = currentModel->rowCount(parentOfRemoved);
+ QPersistentModelIndex dyingIndex = currentModel->index(start + count + 1, 0, parentOfRemoved);
+ QCOMPARE(currentModel->removeRows(start, count, parentOfRemoved), shouldSucceed);
+ currentModel->submit();
+ if (shouldSucceed && dyingIndex.isValid())
+ QCOMPARE(dyingIndex.row(), start + 1);
+
+ if (rowsAboutToBeRemovedSpy.count() > 0){
+ QList<QVariant> arguments = rowsAboutToBeRemovedSpy.at(0);
+ QModelIndex parent = (qvariant_cast<QModelIndex>(arguments.at(0)));
+ int first = arguments.at(1).toInt();
+ int last = arguments.at(2).toInt();
+ QCOMPARE(first, start);
+ QCOMPARE(last, start + count - 1);
+ QVERIFY(parentOfRemoved == parent);
+ }
+
+ if (rowsRemovedSpy.count() > 0){
+ QList<QVariant> arguments = rowsRemovedSpy.at(0);
+ QModelIndex parent = (qvariant_cast<QModelIndex>(arguments.at(0)));
+ int first = arguments.at(1).toInt();
+ int last = arguments.at(2).toInt();
+ QCOMPARE(first, start);
+ QCOMPARE(last, start + count - 1);
+ QVERIFY(parentOfRemoved == parent);
+ }
+
+ // Only the row signals should have been emitted
+ if (modelResetSpy.count() >= 1 || modelLayoutChangedSpy.count() >=1 ){
+ QCOMPARE(columnsAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(columnsRemovedSpy.count(), 0);
+ QCOMPARE(rowsRemovedSpy.count(), 0);
+ }
+ else {
+ QCOMPARE(columnsAboutToBeRemovedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeRemovedSpy.count(), numberOfRowsAboutToBeRemovedSignals);
+ QCOMPARE(columnsRemovedSpy.count(), 0);
+ QCOMPARE(rowsRemovedSpy.count(), numberOfRowsRemovedSignals);
+ }
+
+ // The row count should only change *after* rowsAboutToBeRemoved has been emitted
+ //qDebug() << beforeRemoveRowCount << afterAboutToRemoveRowCount << afterRemoveRowCount << currentModel->rowCount(parentOfRemoved);
+ if (shouldSucceed) {
+ if (modelResetSpy.count() == 0 && modelLayoutChangedSpy.count() == 0){
+ QCOMPARE(afterAboutToRemoveRowCount, beforeRemoveRowCount);
+ QCOMPARE(afterRemoveRowCount, beforeRemoveRowCount-count-(numberOfRowsRemovedSignals-1));
+ }
+ if (modelResetSpy.count() == 0 )
+ QCOMPARE(currentModel->rowCount(parentOfRemoved), beforeRemoveRowCount-count-(numberOfRowsRemovedSignals-1));
+ }
+ else {
+ if (recursive)
+ QCOMPARE(currentModel->rowCount(parentOfRemoved), beforeRemoveRowCount-1);
+ else
+ QCOMPARE(currentModel->rowCount(parentOfRemoved), beforeRemoveRowCount);
+
+ }
+ disconnect(currentModel, SIGNAL(rowsAboutToBeRemoved( const QModelIndex &, int , int )),
+ this, SLOT(slot_rowsAboutToRemove(const QModelIndex &)));
+ disconnect(currentModel, SIGNAL(rowsRemoved( const QModelIndex &, int , int )),
+ this, SLOT(slot_rowsRemoved(const QModelIndex &)));
+ modelResetSpy.clear();
+ QCOMPARE(modelResetSpy.count(), 0);
+
+ //
+ // Test remove column
+ //
+ connect(currentModel, SIGNAL(columnsAboutToBeRemoved( const QModelIndex &, int , int )),
+ this, SLOT(slot_columnsAboutToRemove(const QModelIndex &)));
+ connect(currentModel, SIGNAL(columnsRemoved( const QModelIndex &, int , int )),
+ this, SLOT(slot_columnsRemoved(const QModelIndex &)));
+ int beforeRemoveColumnCount = currentModel->columnCount(parentOfRemoved);
+
+ // Some models don't let you remove the column, only row
+ if (currentModel->removeColumns(start, count, parentOfRemoved)) {
+ currentModel->submit();
+ // Didn't reset the rows, so they should still be at the same value
+ if (modelResetSpy.count() >= 1 || modelLayoutChangedSpy.count() >= 1){
+ QCOMPARE(columnsAboutToBeRemovedSpy.count(), 0);
+ //QCOMPARE(rowsAboutToBeRemovedSpy.count(), numberOfRowsAboutToBeRemovedSignals);
+ QCOMPARE(columnsRemovedSpy.count(), 0);
+ //QCOMPARE(rowsRemovedSpy.count(), numberOfRowsRemovedSignals);
+ }
+ else {
+ QCOMPARE(columnsAboutToBeRemovedSpy.count(), numberOfColumnsAboutToBeRemovedSignals);
+ QCOMPARE(rowsAboutToBeRemovedSpy.count(), numberOfRowsAboutToBeRemovedSignals);
+ QCOMPARE(columnsRemovedSpy.count(), numberOfColumnsRemovedSignals);
+ QCOMPARE(rowsRemovedSpy.count(), numberOfRowsRemovedSignals);
+ }
+
+ // The column count should only change *after* rowsAboutToBeRemoved has been emitted
+ if (shouldSucceed) {
+ if (modelResetSpy.count() == 0 && modelLayoutChangedSpy.count() == 0){
+ QCOMPARE(afterAboutToRemoveColumnCount, beforeRemoveColumnCount);
+ QCOMPARE(afterRemoveColumnCount, beforeRemoveColumnCount-count-(numberOfColumnsRemovedSignals-1));
+ }
+ if (modelResetSpy.count() == 0)
+ QCOMPARE(currentModel->columnCount(parentOfRemoved), beforeRemoveColumnCount-count-(numberOfColumnsRemovedSignals-1));
+ }
+ else
+ QCOMPARE(currentModel->rowCount(parentOfRemoved), beforeRemoveRowCount);
+ }
+ disconnect(currentModel, SIGNAL(columnsAboutToBeRemoved( const QModelIndex &, int , int )),
+ this, SLOT(slot_columnsAboutToRemove(const QModelIndex &)));
+ disconnect(currentModel, SIGNAL(columnsRemoved( const QModelIndex &, int , int )),
+ this, SLOT(slot_columnsRemoved(const QModelIndex &)));
+
+ if (columnsAboutToBeRemovedSpy.count() > 0){
+ QList<QVariant> arguments = columnsAboutToBeRemovedSpy.at(0);
+ QModelIndex parent = (qvariant_cast<QModelIndex>(arguments.at(0)));
+ int first = arguments.at(1).toInt();
+ int last = arguments.at(2).toInt();
+ QCOMPARE(first, start);
+ QCOMPARE(last, start + count - 1);
+ QVERIFY(parentOfRemoved == parent);
+ }
+
+ if (columnsRemovedSpy.count() > 0){
+ QList<QVariant> arguments = columnsRemovedSpy.at(0);
+ QModelIndex parent = (qvariant_cast<QModelIndex>(arguments.at(0)));
+ int first = arguments.at(1).toInt();
+ int last = arguments.at(2).toInt();
+ QCOMPARE(first, start);
+ QCOMPARE(last, start + count - 1);
+ QVERIFY(parentOfRemoved == parent);
+ }
+
+ // Cleanup the test area because remove::() is called multiple times in a test
+ testModels->cleanupTestArea(currentModel);
+}
+
+/*!
+ Developers like to use the slots to then *do* something on the model so it needs to be
+ in a working state.
+ */
+void verifyState(QAbstractItemModel *currentModel) {
+ // Make sure the model isn't confused right now and still knows what is root
+ if (currentModel->hasChildren()) {
+ QCOMPARE(currentModel->hasIndex(0, 0), true);
+ QModelIndex index = currentModel->index(0,0);
+ QCOMPARE(index.isValid(), true);
+ QCOMPARE(currentModel->parent(index).isValid(), false);
+ } else {
+ QModelIndex index = currentModel->index(0,0);
+ QCOMPARE(index.isValid(), false);
+ }
+}
+
+void tst_QItemModel::slot_rowsAboutToRemove(const QModelIndex &parent)
+{
+ QVERIFY(parentOfRemoved == parent);
+ //qDebug() << "slot_rowsAboutToRemove" << currentModel->rowCount(parent);
+ afterAboutToRemoveRowCount = currentModel->rowCount(parent);
+ // hasChildren() should still work
+ if (afterAboutToRemoveRowCount > 0)
+ QCOMPARE(currentModel->hasChildren(parent), true);
+ else
+ QCOMPARE(currentModel->hasChildren(parent), false);
+
+ verifyState(currentModel);
+
+ // This does happen
+ if (removeRecursively) {
+ QFETCH(int, recursiveRow);
+ QFETCH(int, recursiveCount);
+ //qDebug() << recursiveRow << recursiveCount;
+ removeRecursively = false;
+ QCOMPARE(currentModel->removeRows(recursiveRow, recursiveCount, parent), true);
+ }
+}
+
+void tst_QItemModel::slot_rowsRemoved(const QModelIndex &parent)
+{
+ QVERIFY(parentOfRemoved == parent);
+ //qDebug() << "slot_rowsRemoved" << currentModel->rowCount(parent);
+ afterRemoveRowCount = currentModel->rowCount(parent);
+ if (afterRemoveRowCount > 0)
+ QCOMPARE(currentModel->hasChildren(parent), true);
+ else
+ QCOMPARE(currentModel->hasChildren(parent), false);
+
+ verifyState(currentModel);
+}
+
+void tst_QItemModel::slot_columnsAboutToRemove(const QModelIndex &parent)
+{
+ QVERIFY(parentOfRemoved == parent);
+ afterAboutToRemoveColumnCount = currentModel->columnCount(parent);
+ // hasChildren() should still work
+ if (afterAboutToRemoveColumnCount > 0 && currentModel->rowCount(parent) > 0)
+ QCOMPARE(currentModel->hasChildren(parent), true);
+ else
+ QCOMPARE(currentModel->hasChildren(parent), false);
+
+ verifyState(currentModel);
+}
+
+void tst_QItemModel::slot_columnsRemoved(const QModelIndex &parent)
+{
+ QVERIFY(parentOfRemoved == parent);
+ afterRemoveColumnCount = currentModel->columnCount(parent);
+ if (afterRemoveColumnCount > 0)
+ QCOMPARE(currentModel->hasChildren(parent), true);
+ else
+ QCOMPARE(currentModel->hasChildren(parent), false);
+
+ verifyState(currentModel);
+}
+
+/*!
+ Tests the model's insertRow/Column()
+ */
+void tst_QItemModel::insert_data()
+{
+ ModelsToTest modelsToTest;
+ QTest::addColumn<QString>("modelType");
+ QTest::addColumn<bool>("readOnly");
+ QTest::addColumn<bool>("isEmpty");
+
+ QTest::addColumn<int>("start");
+ QTest::addColumn<int>("count");
+
+ QTest::addColumn<int>("numberOfRowsAboutToBeInsertedSignals");
+ QTest::addColumn<int>("numberOfColumnsAboutToBeInsertedSignals");
+ QTest::addColumn<int>("numberOfRowsInsertedSignals");
+ QTest::addColumn<int>("numberOfColumnsInsertedSignals");
+
+ QTest::addColumn<bool>("recursive");
+ QTest::addColumn<int>("recursiveRow");
+ QTest::addColumn<int>("recursiveCount");
+
+ QTest::addColumn<bool>("shouldSucceed");
+
+#define makeTestRow(testName, start, count, sar, srr, sac, src, r, rr, rc, s) \
+ QTest::newRow((t.modelType + testName).toLatin1().data()) << t.modelType << readOnly << isEmpty << \
+ start << count << \
+ sar << srr << sac << src << \
+ r << rr << rc << \
+ s;
+
+ for (int i = 0; i < modelsToTest.tests.size(); ++i) {
+ ModelsToTest::test t = modelsToTest.tests.at(i);
+ QString name = t.modelType;
+ bool readOnly = (t.read == ModelsToTest::ReadOnly);
+ bool isEmpty = (t.contains == ModelsToTest::Empty);
+
+ // half these
+ makeTestRow(":one at the start", START, DEFAULTCOUNT, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+ makeTestRow(":one at the middle", MIDDLE, DEFAULTCOUNT, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+ makeTestRow(":one at the end", END, DEFAULTCOUNT, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+
+ makeTestRow(":many at the start", START, MANY, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+ makeTestRow(":many at the middle", MIDDLE, MANY, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+ makeTestRow(":many at the end", END, MANY, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+
+ makeTestRow(":add row count", START, ALL, DNS, DNS, DNS, DNS, !RECURSIVE, 0, 0, SUCCESS);
+
+ makeTestRow(":none at the start", START, 0, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":none at the middle", MIDDLE, 0, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":none at the end", END, 0, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+
+ makeTestRow(":invalid start, valid count", -99, 0, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":invalid start, valid count", 9999, 0, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":invalid start, valid count", -99, 1, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":invalid start, valid count", 9999, 1, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":invalid start, valid count", -99, MANY, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":invalid start, valid count", 9999, MANY, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+
+ makeTestRow(":valid start, invalid count", START, -2, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":valid start, invalid count", MIDDLE, -2, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+ makeTestRow(":valid start, invalid count", END, -2, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
+
+ // Recursive insert's might assert, haven't decided yet...
+ //makeTestRow(":one at the start recursivly", START, DEFAULTCOUNT, 2, DNS, 2, DNS, RECURSIVE, START, DEFAULTCOUNT, FAIL);
+ //makeTestRow(":one at the middle recursivly", MIDDLE, DEFAULTCOUNT, 2, DNS, 2, DNS, RECURSIVE, START, DEFAULTCOUNT, SUCCESS);
+ //makeTestRow(":one at the end recursivly", END, DEFAULTCOUNT, 2, DNS, 2, DNS, RECURSIVE, START, DEFAULTCOUNT, SUCCESS);
+ }
+}
+
+void tst_QItemModel::insert()
+{
+ QFETCH(QString, modelType);
+ currentModel = testModels->createModel(modelType);
+ QVERIFY(currentModel);
+
+ QFETCH(bool, readOnly);
+ if (readOnly)
+ return;
+
+ QFETCH(int, start);
+ QFETCH(int, count);
+
+ QFETCH(bool, recursive);
+ insertRecursively = recursive;
+
+/*!
+ Inserts count number of rows starting at start
+ if count is -1 it inserts all rows
+ if start is -1 then it starts at the last row - count
+ */
+ QFETCH(bool, shouldSucceed);
+
+ // Populate the test area so we can insert something. See: cleanup()
+ // parentOfInserted is stored so that the slots can make sure parentOfInserted is the index that is emitted.
+ parentOfInserted = testModels->populateTestArea(currentModel);
+
+ if (count == -1)
+ count = currentModel->rowCount(parentOfInserted);
+ if (start == -1)
+ start = currentModel->rowCount(parentOfInserted)-count;
+
+ if (currentModel->rowCount(parentOfInserted) == 0 ||
+ currentModel->columnCount(parentOfInserted) == 0) {
+ qWarning() << "model test area doesn't have any rows, can't fully test insert(). Skipping";
+ return;
+ }
+
+ //qDebug() << "insert start:" << start << "count:" << count << "rowCount:" << currentModel->rowCount(parentOfInserted);
+
+ // When a row or column is inserted there should be two signals.
+ // Watch to make sure they are emitted and get the row/column count when they do get emitted by connecting them to a slot
+ qRegisterMetaType<QModelIndex>("QModelIndex");
+ QSignalSpy columnsAboutToBeInsertedSpy(currentModel, SIGNAL(columnsAboutToBeInserted( const QModelIndex &, int , int )));
+ QSignalSpy rowsAboutToBeInsertedSpy(currentModel, SIGNAL(rowsAboutToBeInserted( const QModelIndex &, int , int )));
+ QSignalSpy columnsInsertedSpy(currentModel, SIGNAL(columnsInserted( const QModelIndex &, int, int )));
+ QSignalSpy rowsInsertedSpy(currentModel, SIGNAL(rowsInserted( const QModelIndex &, int, int )));
+ QSignalSpy modelResetSpy(currentModel, SIGNAL(modelReset()));
+ QSignalSpy modelLayoutChangedSpy(currentModel, SIGNAL(layoutChanged()));
+
+ QFETCH(int, numberOfRowsAboutToBeInsertedSignals);
+ QFETCH(int, numberOfColumnsAboutToBeInsertedSignals);
+ QFETCH(int, numberOfRowsInsertedSignals);
+ QFETCH(int, numberOfColumnsInsertedSignals);
+
+ //
+ // test insertRow()
+ //
+ connect(currentModel, SIGNAL(rowsAboutToBeInserted( const QModelIndex &, int , int )),
+ this, SLOT(slot_rowsAboutToInserted(const QModelIndex &)));
+ connect(currentModel, SIGNAL(rowsInserted( const QModelIndex &, int , int )),
+ this, SLOT(slot_rowsInserted(const QModelIndex &)));
+ int beforeInsertRowCount = currentModel->rowCount(parentOfInserted);
+ QCOMPARE(currentModel->insertRows(start, count, parentOfInserted), shouldSucceed);
+ currentModel->submit();
+
+ if (rowsAboutToBeInsertedSpy.count() > 0){
+ QList<QVariant> arguments = rowsAboutToBeInsertedSpy.at(0);
+ QModelIndex parent = (qvariant_cast<QModelIndex>(arguments.at(0)));
+ int first = arguments.at(1).toInt();
+ int last = arguments.at(2).toInt();
+ QCOMPARE(first, start);
+ QCOMPARE(last, start + count - 1);
+ QVERIFY(parentOfInserted == parent);
+ }
+
+ if (rowsInsertedSpy.count() > 0){
+ QList<QVariant> arguments = rowsInsertedSpy.at(0);
+ QModelIndex parent = (qvariant_cast<QModelIndex>(arguments.at(0)));
+ int first = arguments.at(1).toInt();
+ int last = arguments.at(2).toInt();
+ QCOMPARE(first, start);
+ QCOMPARE(last, start + count - 1);
+ QVERIFY(parentOfInserted == parent);
+ }
+
+ // Only the row signals should have been emitted
+ if (modelResetSpy.count() >= 1 || modelLayoutChangedSpy.count() >= 1) {
+ QCOMPARE(columnsAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(columnsInsertedSpy.count(), 0);
+ QCOMPARE(rowsInsertedSpy.count(), 0);
+ }
+ else {
+ QCOMPARE(columnsAboutToBeInsertedSpy.count(), 0);
+ QCOMPARE(rowsAboutToBeInsertedSpy.count(), numberOfRowsAboutToBeInsertedSignals);
+ QCOMPARE(columnsInsertedSpy.count(), 0);
+ QCOMPARE(rowsInsertedSpy.count(), numberOfRowsInsertedSignals);
+ }
+ // The row count should only change *after* rowsAboutToBeInserted has been emitted
+ //qDebug() << beforeInsertRowCount << afterAboutToInsertRowCount << afterInsertRowCount << currentModel->rowCount(parentOfInserted);
+ if (shouldSucceed) {
+ if (modelResetSpy.count() == 0 && modelLayoutChangedSpy.count() == 0) {
+ QCOMPARE(afterAboutToInsertRowCount, beforeInsertRowCount);
+ QCOMPARE(afterInsertRowCount, beforeInsertRowCount+count+(numberOfRowsInsertedSignals-1));
+ }
+ if (modelResetSpy.count() == 0)
+ QCOMPARE(currentModel->rowCount(parentOfInserted), beforeInsertRowCount+count+(numberOfRowsInsertedSignals-1));
+ }
+ else {
+ if (recursive)
+ QCOMPARE(currentModel->rowCount(parentOfInserted), beforeInsertRowCount+1);
+ else
+ QCOMPARE(currentModel->rowCount(parentOfInserted), beforeInsertRowCount);
+
+ }
+ disconnect(currentModel, SIGNAL(rowsAboutToBeInserted( const QModelIndex &, int , int )),
+ this, SLOT(slot_rowsAboutToInserted(const QModelIndex &)));
+ disconnect(currentModel, SIGNAL(rowsInserted( const QModelIndex &, int , int )),
+ this, SLOT(slot_rowsInserted(const QModelIndex &)));
+ modelResetSpy.clear();
+
+ //
+ // Test insertColumn()
+ //
+ connect(currentModel, SIGNAL(columnsAboutToBeInserted( const QModelIndex &, int , int )),
+ this, SLOT(slot_columnsAboutToInserted(const QModelIndex &)));
+ connect(currentModel, SIGNAL(columnsInserted( const QModelIndex &, int , int )),
+ this, SLOT(slot_columnsInserted(const QModelIndex &)));
+ int beforeInsertColumnCount = currentModel->columnCount(parentOfInserted);
+
+ // Some models don't let you insert the column, only row
+ if (currentModel->insertColumns(start, count, parentOfInserted)) {
+ currentModel->submit();
+ if (modelResetSpy.count() >= 1 || modelLayoutChangedSpy.count() >= 1) {
+ // Didn't reset the rows, so they should still be at the same value
+ QCOMPARE(columnsAboutToBeInsertedSpy.count(), 0);
+ //QCOMPARE(rowsAboutToBeInsertedSpy.count(), numberOfRowsAboutToBeInsertedSignals);
+ QCOMPARE(columnsInsertedSpy.count(), 0);
+ //QCOMPARE(rowsInsertedSpy.count(), numberOfRowsInsertedSignals);
+ }
+ else {
+ // Didn't reset the rows, so they should still be at the same value
+ QCOMPARE(columnsAboutToBeInsertedSpy.count(), numberOfColumnsAboutToBeInsertedSignals);
+ QCOMPARE(rowsAboutToBeInsertedSpy.count(), numberOfRowsAboutToBeInsertedSignals);
+ QCOMPARE(columnsInsertedSpy.count(), numberOfColumnsInsertedSignals);
+ QCOMPARE(rowsInsertedSpy.count(), numberOfRowsInsertedSignals);
+ }
+ // The column count should only change *after* rowsAboutToBeInserted has been emitted
+ if (shouldSucceed) {
+ if (modelResetSpy.count() == 0 && modelLayoutChangedSpy.count() == 0) {
+ QCOMPARE(afterAboutToInsertColumnCount, beforeInsertColumnCount);
+ QCOMPARE(afterInsertColumnCount, beforeInsertColumnCount+count+(numberOfColumnsInsertedSignals-1));
+ }
+ if (modelResetSpy.count() == 0)
+ QCOMPARE(currentModel->columnCount(parentOfInserted), beforeInsertColumnCount+count+(numberOfColumnsInsertedSignals-1));
+ }
+ else
+ QCOMPARE(currentModel->rowCount(parentOfInserted), beforeInsertRowCount);
+ }
+ disconnect(currentModel, SIGNAL(columnsAboutToBeInserted( const QModelIndex &, int , int )),
+ this, SLOT(slot_columnsAboutToInserted(const QModelIndex &)));
+ disconnect(currentModel, SIGNAL(columnsInserted( const QModelIndex &, int , int )),
+ this, SLOT(slot_columnsInserted(const QModelIndex &)));
+
+ if (columnsAboutToBeInsertedSpy.count() > 0){
+ QList<QVariant> arguments = columnsAboutToBeInsertedSpy.at(0);
+ QModelIndex parent = (qvariant_cast<QModelIndex>(arguments.at(0)));
+ int first = arguments.at(1).toInt();
+ int last = arguments.at(2).toInt();
+ QCOMPARE(first, start);
+ QCOMPARE(last, start + count - 1);
+ QVERIFY(parentOfInserted == parent);
+ }
+
+ if (columnsInsertedSpy.count() > 0){
+ QList<QVariant> arguments = columnsInsertedSpy.at(0);
+ QModelIndex parent = (qvariant_cast<QModelIndex>(arguments.at(0)));
+ int first = arguments.at(1).toInt();
+ int last = arguments.at(2).toInt();
+ QCOMPARE(first, start);
+ QCOMPARE(last, start + count - 1);
+ QVERIFY(parentOfInserted == parent);
+ }
+
+ // Cleanup the test area because insert::() is called multiple times in a test
+ testModels->cleanupTestArea(currentModel);
+}
+
+void tst_QItemModel::slot_rowsAboutToInserted(const QModelIndex &parent)
+{
+ QVERIFY(parentOfInserted == parent);
+ //qDebug() << "slot_rowsAboutToInsert" << currentModel->rowCount(parent);
+ afterAboutToInsertRowCount = currentModel->rowCount(parent);
+ bool hasChildren = currentModel->hasChildren(parent);
+ bool hasDimensions = currentModel->columnCount(parent) > 0 && currentModel->rowCount(parent) > 0;
+ QCOMPARE(hasChildren, hasDimensions);
+ verifyState(currentModel);
+
+ // This does happen
+ if (insertRecursively) {
+ QFETCH(int, recursiveRow);
+ QFETCH(int, recursiveCount);
+ //qDebug() << recursiveRow << recursiveCount;
+ insertRecursively = false;
+ QCOMPARE(currentModel->insertRows(recursiveRow, recursiveCount, parent), true);
+ }
+}
+
+void tst_QItemModel::slot_rowsInserted(const QModelIndex &parent)
+{
+ QVERIFY(parentOfInserted == parent);
+ afterInsertRowCount = currentModel->rowCount(parent);
+ bool hasChildren = currentModel->hasChildren(parent);
+ bool hasDimensions = currentModel->columnCount(parent) > 0 && currentModel->rowCount(parent) > 0;
+ QCOMPARE(hasChildren, hasDimensions);
+ verifyState(currentModel);
+}
+
+void tst_QItemModel::slot_columnsAboutToInserted(const QModelIndex &parent)
+{
+ QVERIFY(parentOfInserted == parent);
+ afterAboutToInsertColumnCount = currentModel->columnCount(parent);
+ bool hasChildren = currentModel->hasChildren(parent);
+ bool hasDimensions = currentModel->columnCount(parent) > 0 && currentModel->rowCount(parent) > 0;
+ QCOMPARE(hasChildren, hasDimensions);
+ verifyState(currentModel);
+}
+
+void tst_QItemModel::slot_columnsInserted(const QModelIndex &parent)
+{
+ QVERIFY(parentOfInserted == parent);
+ afterInsertColumnCount = currentModel->columnCount(parent);
+ bool hasChildren = currentModel->hasChildren(parent);
+ bool hasDimensions = currentModel->columnCount(parent) > 0 && currentModel->rowCount(parent) > 0;
+ QCOMPARE(hasChildren, hasDimensions);
+ verifyState(currentModel);
+}
+
+QTEST_MAIN(tst_QItemModel)
+#include "tst_qitemmodel.moc"
diff --git a/tests/auto/corelib/kernel/qmath/qmath.pro b/tests/auto/corelib/kernel/qmath/qmath.pro
new file mode 100644
index 0000000000..e5784ce7aa
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmath/qmath.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+
+QT = core
+
+SOURCES += tst_qmath.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/kernel/qmath/tst_qmath.cpp b/tests/auto/corelib/kernel/qmath/tst_qmath.cpp
new file mode 100644
index 0000000000..f908bd6e3e
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmath/tst_qmath.cpp
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <qmath.h>
+
+static const qreal PI = 3.14159265358979323846264338327950288;
+
+class tst_QMath : public QObject
+{
+ Q_OBJECT
+private slots:
+ void fastSinCos();
+};
+
+void tst_QMath::fastSinCos()
+{
+ // Test evenly spaced angles from 0 to 2pi radians.
+ const int LOOP_COUNT = 100000;
+ for (int i = 0; i < LOOP_COUNT; ++i) {
+ qreal angle = i * 2 * PI / (LOOP_COUNT - 1);
+ QVERIFY(qAbs(qSin(angle) - qFastSin(angle)) < 1e-5);
+ QVERIFY(qAbs(qCos(angle) - qFastCos(angle)) < 1e-5);
+ }
+}
+
+QTEST_APPLESS_MAIN(tst_QMath)
+
+#include "tst_qmath.moc"
diff --git a/tests/auto/corelib/kernel/qmetaobject/.gitignore b/tests/auto/corelib/kernel/qmetaobject/.gitignore
new file mode 100644
index 0000000000..c5b38e7816
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmetaobject/.gitignore
@@ -0,0 +1 @@
+tst_qmetaobject
diff --git a/tests/auto/corelib/kernel/qmetaobject/qmetaobject.pro b/tests/auto/corelib/kernel/qmetaobject/qmetaobject.pro
new file mode 100644
index 0000000000..7a4cf94e47
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmetaobject/qmetaobject.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+
+QT = core gui widgets
+
+SOURCES += tst_qmetaobject.cpp
+
+
+
diff --git a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
new file mode 100644
index 0000000000..a813a917d7
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
@@ -0,0 +1,1120 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qobject.h>
+#include <qmetaobject.h>
+#include <qlabel.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+struct MyStruct
+{
+ int i;
+};
+
+namespace MyNamespace {
+ class MyClass : public QObject
+ {
+ Q_OBJECT
+ Q_PROPERTY(MyEnum myEnum READ myEnum WRITE setMyEnum)
+ Q_PROPERTY(MyFlags myFlags READ myFlags WRITE setMyFlags)
+
+ Q_ENUMS(MyEnum)
+ Q_FLAGS(MyFlags)
+ public:
+ enum MyEnum {
+ MyEnum1,
+ MyEnum2,
+ MyEnum3
+ };
+
+ enum MyFlag {
+ MyFlag1 = 0x01,
+ MyFlag2 = 0x02,
+ MyFlag3 = 0x04
+ };
+ Q_DECLARE_FLAGS(MyFlags, MyFlag)
+
+ MyEnum myEnum() const { return m_enum; }
+ void setMyEnum(MyEnum val) { m_enum = val; }
+
+ MyFlags myFlags() const { return m_flags; }
+ void setMyFlags(MyFlags val) { m_flags = val; }
+
+ MyClass(QObject *parent = 0)
+ : QObject(parent),
+ m_enum(MyEnum1),
+ m_flags(MyFlag1|MyFlag2)
+ { }
+ private:
+ MyEnum m_enum;
+ MyFlags m_flags;
+ };
+ Q_DECLARE_OPERATORS_FOR_FLAGS(MyClass::MyFlags)
+}
+
+
+class tst_QMetaObject : public QObject
+{
+ Q_OBJECT
+ Q_ENUMS(EnumType)
+ Q_PROPERTY(EnumType value WRITE setValue READ getValue)
+ Q_PROPERTY(EnumType value2 WRITE set_value READ get_value)
+ Q_PROPERTY(MyStruct value3 WRITE setVal3 READ val3)
+ Q_PROPERTY(QList<QVariant> value4 WRITE setVal4 READ val4)
+ Q_PROPERTY(QVariantList value5 WRITE setVal5 READ val5)
+ Q_PROPERTY(int value6 READ value6 NOTIFY value6Changed)
+ Q_PROPERTY(MyStruct value7 READ value7 WRITE setVal7 NOTIFY value7Changed)
+ Q_PROPERTY(int value8 READ value8)
+ Q_PROPERTY(int value9 READ value9 CONSTANT)
+ Q_PROPERTY(int value10 READ value10 FINAL)
+
+public:
+ enum EnumType { EnumType1 };
+
+ tst_QMetaObject();
+ ~tst_QMetaObject();
+
+ void setValue(EnumType) {}
+ EnumType getValue() const { return EnumType1; }
+
+ void set_value(EnumType) {}
+ EnumType get_value() const { return EnumType1; }
+
+ void setVal3(MyStruct) {}
+ MyStruct val3() const { MyStruct s = {42}; return s; }
+
+ void setVal4(const QList<QVariant> &list) { value4 = list; }
+ QList<QVariant> val4() const { return value4; }
+
+ void setVal5(const QVariantList &list) { value5 = list; }
+ QVariantList val5() const { return value5; }
+
+ int value6() const { return 1; }
+
+ void setVal7(MyStruct) {}
+ MyStruct value7() const { MyStruct s = {42}; return s; }
+
+ int value8() const { return 1; }
+
+ int value9() const { return 1; }
+
+ int value10() const { return 1; }
+
+ QList<QVariant> value4;
+ QVariantList value5;
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void connectSlotsByName();
+ void invokeMetaMember();
+ void invokeQueuedMetaMember();
+ void invokeBlockingQueuedMetaMember();
+ void invokeCustomTypes();
+ void invokeMetaConstructor();
+ void invokeTypedefTypes();
+ void qtMetaObjectInheritance();
+ void normalizedSignature_data();
+ void normalizedSignature();
+ void normalizedType_data();
+ void normalizedType();
+ void customPropertyType();
+ void checkScope();
+ void propertyNotify();
+ void propertyConstant();
+ void propertyFinal();
+
+ void stdSet();
+ void classInfo();
+
+ void metaMethod();
+
+ void indexOfMethod_data();
+ void indexOfMethod();
+
+signals:
+ void value6Changed();
+ void value7Changed(const QString &);
+};
+
+tst_QMetaObject::tst_QMetaObject()
+{
+
+}
+
+tst_QMetaObject::~tst_QMetaObject()
+{
+
+}
+
+void tst_QMetaObject::initTestCase()
+{
+}
+
+void tst_QMetaObject::cleanupTestCase()
+{
+}
+
+void tst_QMetaObject::init()
+{
+}
+
+void tst_QMetaObject::cleanup()
+{
+}
+
+void tst_QMetaObject::stdSet()
+{
+ const QMetaObject *mo = metaObject();
+
+ QMetaProperty prop = mo->property(mo->indexOfProperty("value"));
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.hasStdCppSet());
+
+ prop = mo->property(mo->indexOfProperty("value2"));
+ QVERIFY(prop.isValid());
+ QVERIFY(!prop.hasStdCppSet());
+}
+
+class CTestObject: public QObject
+{
+ Q_OBJECT
+
+public:
+ CTestObject(): QObject(), invokeCount1(0), invokeCount2(0)
+ {
+ }
+
+ void fire(const QString &name)
+ {
+ child = new QObject(this);
+ child->setObjectName(name);
+ QMetaObject::connectSlotsByName(this);
+ delete child; child = 0;
+ }
+
+ int invokeCount1;
+ int invokeCount2;
+ QObject *child;
+
+public slots:
+ void on_child1_destroyed(QObject *obj = 0)
+ {
+ ++invokeCount1;
+ if (!obj || obj != child)
+ qWarning() << "on_child1_destroyed invoked with wrong child object";
+ }
+ void on_child2_destroyed() { ++invokeCount2; }
+};
+
+class CTestObjectOverloads: public QObject
+{
+ Q_OBJECT
+
+public:
+ CTestObjectOverloads(): invokeCount1(0), invokeCount2(0) {}
+
+ int invokeCount1;
+ int invokeCount2;
+ QObject *child;
+
+ void fire(const QString &name)
+ {
+ child = new QObject(this);
+ child->setObjectName(name);
+ QMetaObject::connectSlotsByName(this);
+ delete child; child = 0;
+ }
+
+private slots:
+ void on_child1_destroyed(QObject *obj)
+ {
+ ++invokeCount1;
+ if (!obj || obj != child)
+ qWarning() << "on_child1_destroyed invoked with wrong child object";
+ }
+ void on_child1_destroyed() { ++invokeCount2; }
+};
+
+#define FUNCTION(x) "QMetaObject::" x ": "
+
+void tst_QMetaObject::connectSlotsByName()
+{
+ CTestObject obj;
+ QCOMPARE(obj.invokeCount1, 0);
+ QCOMPARE(obj.invokeCount2, 0);
+
+ QTest::ignoreMessage(QtWarningMsg, FUNCTION("connectSlotsByName") "No matching signal for on_child1_destroyed(QObject*)");
+ QTest::ignoreMessage(QtWarningMsg, FUNCTION("connectSlotsByName") "No matching signal for on_child2_destroyed()");
+ obj.fire("bubu");
+ QCOMPARE(obj.invokeCount1, 0);
+ QCOMPARE(obj.invokeCount2, 0);
+
+ QTest::ignoreMessage(QtWarningMsg, FUNCTION("connectSlotsByName") "No matching signal for on_child2_destroyed()");
+ obj.fire("child1");
+ QCOMPARE(obj.invokeCount1, 1);
+ QCOMPARE(obj.invokeCount2, 0);
+
+ QTest::ignoreMessage(QtWarningMsg, FUNCTION("connectSlotsByName") "No matching signal for on_child1_destroyed(QObject*)");
+ obj.fire("child2");
+ QCOMPARE(obj.invokeCount1, 1);
+ QCOMPARE(obj.invokeCount2, 1);
+
+ QTest::ignoreMessage(QtWarningMsg, FUNCTION("connectSlotsByName") "No matching signal for on_child2_destroyed()");
+ obj.fire("child1");
+ QCOMPARE(obj.invokeCount1, 2);
+ QCOMPARE(obj.invokeCount2, 1);
+
+ // now test with real overloads
+ CTestObjectOverloads obj2;
+ obj2.fire("child1");
+ QCOMPARE(obj2.invokeCount1, 1);
+ QCOMPARE(obj2.invokeCount2, 1);
+}
+
+class QtTestObject: public QObject
+{
+ Q_OBJECT
+
+public:
+ QtTestObject();
+ Q_INVOKABLE QtTestObject(QObject *parent);
+
+public slots:
+ void sl0();
+ QString sl1(QString s1);
+ void sl2(QString s1, QString s2);
+ void sl3(QString s1, QString s2, QString s3);
+ void sl4(QString s1, QString s2, QString s3, const QString s4);
+ void sl5(QString s1, QString s2, QString s3, QString s4, const QString &s5);
+ void sl6(QString s1, QString s2, QString s3, QString s4, const QString s5, QString s6);
+ void sl7(QString s1, QString s2, QString s3, QString s4, QString s5, QString s6, QString s7);
+ void sl8(QString s1, QString s2, QString s3, QString s4, QString s5, QString s6, QString s7,
+ QString s8);
+ void sl9(QString s1, QString s2, QString s3, QString s4, QString s5, QString s6, QString s7,
+ QString s8, QString s9);
+ void sl10(QString s1, QString s2, QString s3, QString s4, QString s5, QString s6, QString s7,
+ QString s8, QString s9, QString s10);
+ QObject *sl11();
+ const char *sl12();
+ QList<QString> sl13(QList<QString> l1);
+ void testSender();
+
+ void testReference(QString &str);
+
+ void testLongLong(qint64 ll1, quint64 ll2);
+
+ void moveToThread(QThread *t)
+ { QObject::moveToThread(t); }
+
+signals:
+ void sig0();
+ QString sig1(QString s1);
+
+protected:
+ QtTestObject(QVariant) {}
+private:
+ QtTestObject(QVariant, QVariant) {}
+
+public:
+ QString slotResult;
+};
+
+QtTestObject::QtTestObject()
+{
+ connect(this, SIGNAL(sig0()), this, SLOT(sl0()));
+ connect(this, SIGNAL(sig1(QString)), this, SLOT(sl1(QString)));
+}
+
+QtTestObject::QtTestObject(QObject *parent)
+ : QObject(parent)
+{
+}
+
+void QtTestObject::sl0() { slotResult = "sl0"; };
+QString QtTestObject::sl1(QString s1) { slotResult = "sl1:" + s1; return "yessir"; }
+void QtTestObject::sl2(QString s1, QString s2) { slotResult = "sl2:" + s1 + s2; }
+void QtTestObject::sl3(QString s1, QString s2, QString s3)
+{ slotResult = "sl3:" + s1 + s2 + s3; }
+void QtTestObject::sl4(QString s1, QString s2, QString s3, const QString s4)
+{ slotResult = "sl4:" + s1 + s2 + s3 + s4; }
+void QtTestObject::sl5(QString s1, QString s2, QString s3, QString s4, const QString &s5)
+{ slotResult = "sl5:" + s1 + s2 + s3 + s4 + s5; }
+void QtTestObject::sl6(QString s1, QString s2, QString s3, QString s4,
+ const QString s5, QString s6)
+{ slotResult = "sl6:" + s1 + s2 + s3 + s4 + s5 + s6; }
+void QtTestObject::sl7(QString s1, QString s2, QString s3, QString s4, QString s5,
+ QString s6, QString s7)
+{ slotResult = "sl7:" + s1 + s2 + s3 + s4 + s5 + s6 + s7; }
+void QtTestObject::sl8(QString s1, QString s2, QString s3, QString s4, QString s5,
+ QString s6, QString s7, QString s8)
+{ slotResult = "sl8:" + s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8; }
+void QtTestObject::sl9(QString s1, QString s2, QString s3, QString s4, QString s5,
+ QString s6, QString s7, QString s8, QString s9)
+{ slotResult = "sl9:" + s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9; }
+void QtTestObject::sl10(QString s1, QString s2, QString s3, QString s4, QString s5,
+ QString s6, QString s7, QString s8, QString s9, QString s10)
+{ slotResult = "sl10:" + s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10; }
+QObject *QtTestObject::sl11()
+{ slotResult = "sl11"; return this; }
+const char *QtTestObject::sl12()
+{ slotResult = "sl12"; return "foo"; }
+QList<QString> QtTestObject::sl13(QList<QString> l1)
+{ slotResult = "sl13"; return l1; }
+void QtTestObject::testReference(QString &str)
+{ slotResult = "testReference:" + str; str = "gotcha"; }
+
+void QtTestObject::testLongLong(qint64 ll1, quint64 ll2)
+{ slotResult = "testLongLong:" + QString::number(ll1) + "," + QString::number(ll2); }
+
+void QtTestObject::testSender()
+{
+ slotResult.sprintf("%p", sender());
+}
+
+
+void tst_QMetaObject::invokeMetaMember()
+{
+ QtTestObject obj;
+
+ QString t1("1"); QString t2("2"); QString t3("3"); QString t4("4"); QString t5("5");
+ QString t6("6"); QString t7("7"); QString t8("8"); QString t9("9"); QString t10("X");
+
+ QVERIFY(!QMetaObject::invokeMethod(0, 0));
+ QVERIFY(!QMetaObject::invokeMethod(0, "sl0"));
+ QVERIFY(!QMetaObject::invokeMethod(&obj, 0));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl0"));
+ QCOMPARE(obj.slotResult, QString("sl0"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl1", Q_ARG(QString, t1)));
+ QCOMPARE(obj.slotResult, QString("sl1:1"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl2", Q_ARG(const QString, t1), Q_ARG(QString, t2)));
+ QCOMPARE(obj.slotResult, QString("sl2:12"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl3", Q_ARG(QString, t1), Q_ARG(QString, t2), Q_ARG(QString, t3)));
+ QCOMPARE(obj.slotResult, QString("sl3:123"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl4", Q_ARG(QString, t1), Q_ARG(QString, t2), Q_ARG(QString, t3),
+ Q_ARG(QString, t4)));
+ QCOMPARE(obj.slotResult, QString("sl4:1234"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl5", Q_ARG(QString, t1), Q_ARG(QString, t2), Q_ARG(QString, t3),
+ Q_ARG(QString, t4), Q_ARG(QString, "5")));
+ QCOMPARE(obj.slotResult, QString("sl5:12345"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl6", Q_ARG(QString, t1), Q_ARG(QString, t2), Q_ARG(QString, t3),
+ Q_ARG(QString, t4), Q_ARG(QString, t5), Q_ARG(QString, t6)));
+ QCOMPARE(obj.slotResult, QString("sl6:123456"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl7", Q_ARG(QString, t1), Q_ARG(QString, t2), Q_ARG(QString, t3),
+ Q_ARG(QString, t4), Q_ARG(QString, t5), Q_ARG(QString, t6),
+ Q_ARG(QString, t7)));
+ QCOMPARE(obj.slotResult, QString("sl7:1234567"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl8", Q_ARG(QString, t1), Q_ARG(QString, t2), Q_ARG(QString, t3),
+ Q_ARG(QString, t4), Q_ARG(QString, t5), Q_ARG(QString, t6),
+ Q_ARG(QString, t7), Q_ARG(QString, t8)));
+ QCOMPARE(obj.slotResult, QString("sl8:12345678"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl9", Q_ARG(QString, t1), Q_ARG(QString, t2), Q_ARG(QString, t3),
+ Q_ARG(QString, t4), Q_ARG(QString, t5), Q_ARG(QString, t6),
+ Q_ARG(QString, t7), Q_ARG(QString, t8), Q_ARG(QString, t9)));
+ QCOMPARE(obj.slotResult, QString("sl9:123456789"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl11"));
+ QCOMPARE(obj.slotResult, QString("sl11"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "testSender"));
+ QCOMPARE(obj.slotResult, QString("0x0"));
+
+ QString refStr("whatever");
+ QVERIFY(QMetaObject::invokeMethod(&obj, "testReference", QGenericArgument("QString&", &refStr)));
+ QCOMPARE(obj.slotResult, QString("testReference:whatever"));
+ QCOMPARE(refStr, QString("gotcha"));
+
+ qint64 ll1 = -1;
+ quint64 ll2 = 0;
+ QVERIFY(QMetaObject::invokeMethod(&obj,
+ "testLongLong",
+ Q_ARG(qint64, ll1),
+ Q_ARG(quint64, ll2)));
+ QCOMPARE(obj.slotResult, QString("testLongLong:-1,0"));
+
+ QString exp;
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl1", Q_RETURN_ARG(QString, exp), Q_ARG(QString, "bubu")));
+ QCOMPARE(exp, QString("yessir"));
+ QCOMPARE(obj.slotResult, QString("sl1:bubu"));
+
+ QObject *ptr = 0;
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl11", Q_RETURN_ARG(QObject*,ptr)));
+ QCOMPARE(ptr, (QObject *)&obj);
+ QCOMPARE(obj.slotResult, QString("sl11"));
+ // try again with a space:
+ ptr = 0;
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl11", Q_RETURN_ARG(QObject * , ptr)));
+ QCOMPARE(ptr, (QObject *)&obj);
+ QCOMPARE(obj.slotResult, QString("sl11"));
+
+ const char *ptr2 = 0;
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl12", Q_RETURN_ARG(const char*, ptr2)));
+ QVERIFY(ptr2 != 0);
+ QCOMPARE(obj.slotResult, QString("sl12"));
+ // try again with a space:
+ ptr2 = 0;
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl12", Q_RETURN_ARG(char const * , ptr2)));
+ QVERIFY(ptr2 != 0);
+ QCOMPARE(obj.slotResult, QString("sl12"));
+
+ // test w/ template args
+ QList<QString> returnValue, argument;
+ argument << QString("one") << QString("two") << QString("three");
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl13",
+ Q_RETURN_ARG(QList<QString>, returnValue),
+ Q_ARG(QList<QString>, argument)));
+ QCOMPARE(returnValue, argument);
+ QCOMPARE(obj.slotResult, QString("sl13"));
+
+ //test signals
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sig0"));
+ QCOMPARE(obj.slotResult, QString("sl0"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sig1", Q_ARG(QString, "baba")));
+ QCOMPARE(obj.slotResult, QString("sl1:baba"));
+
+ exp.clear();
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sig1", Q_RETURN_ARG(QString, exp), Q_ARG(QString, "hehe")));
+ QCOMPARE(exp, QString("yessir"));
+ QCOMPARE(obj.slotResult, QString("sl1:hehe"));
+
+ QTest::ignoreMessage(QtWarningMsg, "QMetaObject::invokeMethod: No such method QtTestObject::doesNotExist()");
+ QVERIFY(!QMetaObject::invokeMethod(&obj, "doesNotExist"));
+ QTest::ignoreMessage(QtWarningMsg, "QMetaObject::invokeMethod: No such method QtTestObject::sl1(QString)(QString)");
+ QVERIFY(!QMetaObject::invokeMethod(&obj, "sl1(QString)", Q_ARG(QString, "arg")));
+ QTest::ignoreMessage(QtWarningMsg, "QMetaObject::invokeMethod: No such method QtTestObject::sl3(QString)");
+ QVERIFY(!QMetaObject::invokeMethod(&obj, "sl3", Q_ARG(QString, "arg")));
+ QTest::ignoreMessage(QtWarningMsg, "QMetaObject::invokeMethod: No such method QtTestObject::sl1(QString,QString,QString)");
+ QVERIFY(!QMetaObject::invokeMethod(&obj, "sl1", Q_ARG(QString, "arg"), Q_ARG(QString, "arg"), Q_ARG(QString, "arg")));
+
+ //should not have changed since last test.
+ QCOMPARE(exp, QString("yessir"));
+ QCOMPARE(obj.slotResult, QString("sl1:hehe"));
+}
+
+void tst_QMetaObject::invokeQueuedMetaMember()
+{
+ QtTestObject obj;
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl0", Qt::QueuedConnection));
+ QVERIFY(obj.slotResult.isEmpty());
+ qApp->processEvents(QEventLoop::AllEvents);
+ QCOMPARE(obj.slotResult, QString("sl0"));
+ obj.slotResult = QString();
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl1", Qt::QueuedConnection, Q_ARG(QString, QString("hallo"))));
+ QVERIFY(obj.slotResult.isEmpty());
+ qApp->processEvents(QEventLoop::AllEvents);
+ QCOMPARE(obj.slotResult, QString("sl1:hallo"));
+ obj.slotResult = QString();
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl9", Qt::QueuedConnection, Q_ARG(QString, "1"), Q_ARG(QString, "2"),
+ Q_ARG(QString, "3"), Q_ARG(QString, "4"), Q_ARG(QString, "5"),
+ Q_ARG(QString, "6"), Q_ARG(QString, "7"), Q_ARG(QString, "8"),
+ Q_ARG(QString, "9")));
+ QVERIFY(obj.slotResult.isEmpty());
+ qApp->processEvents(QEventLoop::AllEvents);
+ QCOMPARE(obj.slotResult, QString("sl9:123456789"));
+
+ // signals
+
+ obj.slotResult.clear();
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sig0", Qt::QueuedConnection));
+ QVERIFY(obj.slotResult.isEmpty());
+ qApp->processEvents(QEventLoop::AllEvents);
+ QCOMPARE(obj.slotResult, QString("sl0"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sig1", Qt::QueuedConnection, Q_ARG(QString, "gogo")));
+ qApp->processEvents(QEventLoop::AllEvents);
+ QCOMPARE(obj.slotResult, QString("sl1:gogo"));
+
+ QString exp;
+ QTest::ignoreMessage(QtWarningMsg, "QMetaMethod::invoke: Unable to invoke methods with return values in queued connections");
+ QVERIFY(!QMetaObject::invokeMethod(&obj, "sig1", Qt::QueuedConnection, Q_RETURN_ARG(QString, exp),
+ Q_ARG(QString, "nono")));
+
+ qint64 ll1 = -1;
+ quint64 ll2 = 0;
+ QVERIFY(QMetaObject::invokeMethod(&obj,
+ "testLongLong",
+ Qt::QueuedConnection,
+ Q_ARG(qint64, ll1),
+ Q_ARG(quint64, ll2)));
+ qApp->processEvents(QEventLoop::AllEvents);
+ QCOMPARE(obj.slotResult, QString("testLongLong:-1,0"));
+}
+
+void tst_QMetaObject::invokeBlockingQueuedMetaMember()
+{
+ QThread t;
+ t.start();
+ QtTestObject obj;
+ obj.moveToThread(&t);
+
+ QString t1("1"); QString t2("2"); QString t3("3"); QString t4("4"); QString t5("5");
+ QString t6("6"); QString t7("7"); QString t8("8"); QString t9("9"); QString t10("X");
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl1", Qt::BlockingQueuedConnection, Q_ARG(QString, t1)));
+ QCOMPARE(obj.slotResult, QString("sl1:1"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl2", Qt::BlockingQueuedConnection, Q_ARG(const QString, t1), Q_ARG(QString, t2)));
+ QCOMPARE(obj.slotResult, QString("sl2:12"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl3", Qt::BlockingQueuedConnection, Q_ARG(QString, t1), Q_ARG(QString, t2), Q_ARG(QString, t3)));
+ QCOMPARE(obj.slotResult, QString("sl3:123"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl4", Qt::BlockingQueuedConnection, Q_ARG(QString, t1), Q_ARG(QString, t2),
+ Q_ARG(QString, t3), Q_ARG(QString, t4)));
+ QCOMPARE(obj.slotResult, QString("sl4:1234"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl5", Qt::BlockingQueuedConnection, Q_ARG(QString, t1), Q_ARG(QString, t2),
+ Q_ARG(QString, t3), Q_ARG(QString, t4), Q_ARG(QString, "5")));
+ QCOMPARE(obj.slotResult, QString("sl5:12345"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl6", Qt::BlockingQueuedConnection, Q_ARG(QString, t1), Q_ARG(QString, t2),
+ Q_ARG(QString, t3), Q_ARG(QString, t4), Q_ARG(QString, t5), Q_ARG(QString, t6)));
+ QCOMPARE(obj.slotResult, QString("sl6:123456"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl7", Qt::BlockingQueuedConnection, Q_ARG(QString, t1), Q_ARG(QString, t2),
+ Q_ARG(QString, t3), Q_ARG(QString, t4), Q_ARG(QString, t5), Q_ARG(QString, t6),
+ Q_ARG(QString, t7)));
+ QCOMPARE(obj.slotResult, QString("sl7:1234567"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl8", Qt::BlockingQueuedConnection, Q_ARG(QString, t1), Q_ARG(QString, t2),
+ Q_ARG(QString, t3), Q_ARG(QString, t4), Q_ARG(QString, t5), Q_ARG(QString, t6),
+ Q_ARG(QString, t7), Q_ARG(QString, t8)));
+ QCOMPARE(obj.slotResult, QString("sl8:12345678"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl9", Qt::BlockingQueuedConnection, Q_ARG(QString, t1), Q_ARG(QString, t2),
+ Q_ARG(QString, t3), Q_ARG(QString, t4), Q_ARG(QString, t5), Q_ARG(QString, t6),
+ Q_ARG(QString, t7), Q_ARG(QString, t8), Q_ARG(QString, t9)));
+ QCOMPARE(obj.slotResult, QString("sl9:123456789"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl11", Qt::BlockingQueuedConnection));
+ QCOMPARE(obj.slotResult, QString("sl11"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "testSender", Qt::BlockingQueuedConnection));
+ QCOMPARE(obj.slotResult, QString("0x0"));
+
+ QString refStr("whatever");
+ QVERIFY(QMetaObject::invokeMethod(&obj, "testReference", Qt::BlockingQueuedConnection, QGenericArgument("QString&", &refStr)));
+ QCOMPARE(obj.slotResult, QString("testReference:whatever"));
+ QCOMPARE(refStr, QString("gotcha"));
+
+ qint64 ll1 = -1;
+ quint64 ll2 = 0;
+ QVERIFY(QMetaObject::invokeMethod(&obj,
+ "testLongLong",
+ Qt::BlockingQueuedConnection,
+ Q_ARG(qint64, ll1),
+ Q_ARG(quint64, ll2)));
+ QCOMPARE(obj.slotResult, QString("testLongLong:-1,0"));
+
+ QString exp;
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl1", Qt::BlockingQueuedConnection, Q_RETURN_ARG(QString, exp), Q_ARG(QString, "bubu")));
+ QCOMPARE(exp, QString("yessir"));
+ QCOMPARE(obj.slotResult, QString("sl1:bubu"));
+
+ QObject *ptr = 0;
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl11", Qt::BlockingQueuedConnection, Q_RETURN_ARG(QObject*,ptr)));
+ QCOMPARE(ptr, (QObject *)&obj);
+ QCOMPARE(obj.slotResult, QString("sl11"));
+ // try again with a space:
+ ptr = 0;
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl11", Qt::BlockingQueuedConnection, Q_RETURN_ARG(QObject * , ptr)));
+ QCOMPARE(ptr, (QObject *)&obj);
+ QCOMPARE(obj.slotResult, QString("sl11"));
+
+ const char *ptr2 = 0;
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl12", Qt::BlockingQueuedConnection, Q_RETURN_ARG(const char*, ptr2)));
+ QVERIFY(ptr2 != 0);
+ QCOMPARE(obj.slotResult, QString("sl12"));
+ // try again with a space:
+ ptr2 = 0;
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl12", Qt::BlockingQueuedConnection, Q_RETURN_ARG(char const * , ptr2)));
+ QVERIFY(ptr2 != 0);
+ QCOMPARE(obj.slotResult, QString("sl12"));
+
+ // test w/ template args
+ QList<QString> returnValue, argument;
+ argument << QString("one") << QString("two") << QString("three");
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl13", Qt::BlockingQueuedConnection,
+ Q_RETURN_ARG(QList<QString>, returnValue),
+ Q_ARG(QList<QString>, argument)));
+ QCOMPARE(returnValue, argument);
+ QCOMPARE(obj.slotResult, QString("sl13"));
+
+ //test signals
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sig0", Qt::BlockingQueuedConnection));
+ QCOMPARE(obj.slotResult, QString("sl0"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sig1", Qt::BlockingQueuedConnection, Q_ARG(QString, "baba")));
+ QCOMPARE(obj.slotResult, QString("sl1:baba"));
+
+ exp.clear();
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sig1", Qt::BlockingQueuedConnection, Q_RETURN_ARG(QString, exp), Q_ARG(QString, "hehe")));
+ QCOMPARE(exp, QString("yessir"));
+ QCOMPARE(obj.slotResult, QString("sl1:hehe"));
+
+ QTest::ignoreMessage(QtWarningMsg, "QMetaObject::invokeMethod: No such method QtTestObject::doesNotExist()");
+ QVERIFY(!QMetaObject::invokeMethod(&obj, "doesNotExist", Qt::BlockingQueuedConnection));
+ QTest::ignoreMessage(QtWarningMsg, "QMetaObject::invokeMethod: No such method QtTestObject::sl1(QString)(QString)");
+ QVERIFY(!QMetaObject::invokeMethod(&obj, "sl1(QString)", Qt::BlockingQueuedConnection, Q_ARG(QString, "arg")));
+ QTest::ignoreMessage(QtWarningMsg, "QMetaObject::invokeMethod: No such method QtTestObject::sl3(QString)");
+ QVERIFY(!QMetaObject::invokeMethod(&obj, "sl3", Qt::BlockingQueuedConnection, Q_ARG(QString, "arg")));
+ QTest::ignoreMessage(QtWarningMsg, "QMetaObject::invokeMethod: No such method QtTestObject::sl1(QString,QString,QString)");
+ QVERIFY(!QMetaObject::invokeMethod(&obj, "sl1", Qt::BlockingQueuedConnection, Q_ARG(QString, "arg"), Q_ARG(QString, "arg"), Q_ARG(QString, "arg")));
+
+ //should not have changed since last test.
+ QCOMPARE(exp, QString("yessir"));
+ QCOMPARE(obj.slotResult, QString("sl1:hehe"));
+
+ QVERIFY(QMetaObject::invokeMethod(&obj, "moveToThread", Qt::BlockingQueuedConnection, Q_ARG(QThread*, QThread::currentThread())));
+ t.quit();
+ QVERIFY(t.wait());
+
+}
+
+
+
+void tst_QMetaObject::qtMetaObjectInheritance()
+{
+ QVERIFY(QObject::staticMetaObject.superClass() == 0);
+ QCOMPARE(QLabel::staticMetaObject.indexOfEnumerator("Qt::Alignment"), -1);
+ QCOMPARE(QLabel::staticMetaObject.indexOfEnumerator("Alignment"), -1);
+ int indexOfAlignment = QLabel::staticMetaObject.indexOfProperty("alignment");
+ QVERIFY(indexOfAlignment != -1);
+ QMetaProperty alignment = QLabel::staticMetaObject.property(indexOfAlignment);
+ QVERIFY(alignment.isValid());
+ QCOMPARE(alignment.enumerator().name(), "Alignment");
+}
+
+struct MyType
+{
+ int i1, i2, i3;
+};
+
+typedef QString CustomString;
+
+class QtTestCustomObject: public QObject
+{
+ Q_OBJECT
+public:
+ QtTestCustomObject(): QObject(), sum(0) {}
+
+public slots:
+ void sl1(MyType myType);
+
+signals:
+ void sig_custom(const CustomString &string);
+
+public:
+ int sum;
+};
+
+void QtTestCustomObject::sl1(MyType myType)
+{
+ sum = myType.i1 + myType.i2 + myType.i3;
+}
+
+void tst_QMetaObject::invokeCustomTypes()
+{
+ QtTestCustomObject obj;
+ MyType tp = {1, 1, 1};
+
+ QCOMPARE(obj.sum, 0);
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sl1", Q_ARG(MyType, tp)));
+ QCOMPARE(obj.sum, 3);
+}
+
+namespace NamespaceWithConstructibleClass
+{
+
+class ConstructibleClass : public QObject
+{
+ Q_OBJECT
+public:
+ Q_INVOKABLE ConstructibleClass(QObject *parent = 0)
+ : QObject(parent) {}
+};
+
+}
+
+void tst_QMetaObject::invokeMetaConstructor()
+{
+ const QMetaObject *mo = &QtTestObject::staticMetaObject;
+ {
+ QObject *obj = mo->newInstance();
+ QVERIFY(obj == 0);
+ }
+ {
+ QtTestObject obj;
+ QObject *obj2 = mo->newInstance(Q_ARG(QObject*, &obj));
+ QVERIFY(obj2 != 0);
+ QCOMPARE(obj2->parent(), (QObject*)&obj);
+ QVERIFY(qobject_cast<QtTestObject*>(obj2) != 0);
+ }
+ // class in namespace
+ const QMetaObject *nsmo = &NamespaceWithConstructibleClass::ConstructibleClass::staticMetaObject;
+ {
+ QtTestObject obj;
+ QObject *obj2 = nsmo->newInstance(Q_ARG(QObject*, &obj));
+ QVERIFY(obj2 != 0);
+ QCOMPARE(obj2->parent(), (QObject*)&obj);
+ QVERIFY(qobject_cast<NamespaceWithConstructibleClass::ConstructibleClass*>(obj2) != 0);
+ }
+}
+
+void tst_QMetaObject::invokeTypedefTypes()
+{
+ qRegisterMetaType<CustomString>("CustomString");
+ QtTestCustomObject obj;
+ QSignalSpy spy(&obj, SIGNAL(sig_custom(CustomString)));
+
+ QCOMPARE(spy.count(), 0);
+ CustomString arg("hello");
+ QVERIFY(QMetaObject::invokeMethod(&obj, "sig_custom", Q_ARG(CustomString, arg)));
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(spy.at(0).count(), 1);
+ QCOMPARE(spy.at(0).at(0), QVariant(arg));
+}
+
+void tst_QMetaObject::normalizedSignature_data()
+{
+ QTest::addColumn<QString>("signature");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("function") << "void foo()" << "void foo()";
+ QTest::newRow("spaces") << " void foo( ) " << "void foo()";
+ QTest::newRow("template args") << " void foo( QMap<a, a>, QList<b>) "
+ << "void foo(QMap<a,a>,QList<b>)";
+ QTest::newRow("rettype") << "QList<int, int> foo()" << "QList<int,int>foo()";
+ QTest::newRow("const rettype") << "const QString *foo()" << "const QString*foo()";
+ QTest::newRow("const ref") << "const QString &foo()" << "const QString&foo()";
+ QTest::newRow("reference") << "QString &foo()" << "QString&foo()";
+ QTest::newRow("const1") << "void foo(QString const *)" << "void foo(const QString*)";
+ QTest::newRow("const2") << "void foo(QString * const)" << "void foo(QString*const)";
+ QTest::newRow("const3") << "void foo(QString const &)" << "void foo(QString)";
+ QTest::newRow("const4") << "void foo(const int)" << "void foo(int)";
+ QTest::newRow("const5") << "void foo(const int, int const, const int &, int const &)"
+ << "void foo(int,int,int,int)";
+ QTest::newRow("const6") << "void foo(QList<const int>)" << "void foo(QList<const int>)";
+ QTest::newRow("const7") << "void foo(QList<const int*>)" << "void foo(QList<const int*>)";
+ QTest::newRow("const8") << "void foo(QList<int const*>)" << "void foo(QList<const int*>)";
+ QTest::newRow("const9") << "void foo(const Foo<Bar>)" << "void foo(Foo<Bar>)";
+ QTest::newRow("const10") << "void foo(Foo<Bar>const)" << "void foo(Foo<Bar>)";
+ QTest::newRow("const11") << "void foo(Foo<Bar> *const)" << "void foo(Foo<Bar>*const)";
+ QTest::newRow("const12") << "void foo(Foo<Bar>const*const *const)" << "void foo(Foo<Bar>*const*const)";
+ QTest::newRow("const13") << "void foo(const Foo<Bar>&)" << "void foo(Foo<Bar>)";
+ QTest::newRow("const14") << "void foo(Foo<Bar>const&)" << "void foo(Foo<Bar>)";
+
+ QTest::newRow("invalid1") << "a( b" << "a(b";
+}
+
+void tst_QMetaObject::normalizedSignature()
+{
+ QFETCH(QString, signature);
+ QFETCH(QString, result);
+
+ QCOMPARE(QMetaObject::normalizedSignature(signature.toLatin1()), result.toLatin1());
+}
+
+void tst_QMetaObject::normalizedType_data()
+{
+ QTest::addColumn<QString>("type");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("simple") << "int" << "int";
+ QTest::newRow("white") << " int " << "int";
+ QTest::newRow("const1") << "int const *" << "const int*";
+ QTest::newRow("const2") << "const int *" << "const int*";
+ QTest::newRow("template1") << "QList<int const *>" << "QList<const int*>";
+ QTest::newRow("template2") << "QList<const int *>" << "QList<const int*>";
+ QTest::newRow("template3") << "QMap<QString, int>" << "QMap<QString,int>";
+ QTest::newRow("template4") << "const QMap<QString, int> &" << "QMap<QString,int>";
+ QTest::newRow("template5") << "QList< ::Foo::Bar>" << "QList< ::Foo::Bar>";
+ QTest::newRow("template6") << "QList<::Foo::Bar>" << "QList<::Foo::Bar>";
+ QTest::newRow("template7") << "QList<QList<int> >" << "QList<QList<int> >";
+ QTest::newRow("template8") << "QMap<const int, const short*>" << "QMap<const int,const short*>";
+ QTest::newRow("template9") << "QPair<const QPair<int, int const *> , QPair<QHash<int, const char*> > >" << "QPair<const QPair<int,const int*>,QPair<QHash<int,const char*> > >";
+ QTest::newRow("value1") << "const QString &" << "QString";
+ QTest::newRow("value2") << "QString const &" << "QString";
+ QTest::newRow("constInName1") << "constconst" << "constconst";
+ QTest::newRow("constInName2") << "constconst*" << "constconst*";
+ QTest::newRow("constInName3") << "const constconst&" << "constconst";
+ QTest::newRow("constInName4") << "constconst const*const" << "constconst*const";
+ QTest::newRow("class") << "const class foo&" << "foo";
+ QTest::newRow("struct") << "const struct foo*" << "const foo*";
+ QTest::newRow("struct2") << "struct foo const*" << "const foo*";
+ QTest::newRow("enum") << "enum foo" << "foo";
+}
+
+void tst_QMetaObject::normalizedType()
+{
+ QFETCH(QString, type);
+ QFETCH(QString, result);
+
+ QCOMPARE(QMetaObject::normalizedType(type.toLatin1()), result.toLatin1());
+}
+
+void tst_QMetaObject::customPropertyType()
+{
+ QMetaProperty prop = metaObject()->property(metaObject()->indexOfProperty("value3"));
+
+ QCOMPARE(prop.type(), QVariant::UserType);
+ QCOMPARE(prop.userType(), 0);
+
+ qRegisterMetaType<MyStruct>("MyStruct");
+ QCOMPARE(prop.userType(), QMetaType::type("MyStruct"));
+
+ prop = metaObject()->property(metaObject()->indexOfProperty("value4"));
+ QCOMPARE(prop.type(), QVariant::List);
+
+ prop = metaObject()->property(metaObject()->indexOfProperty("value5"));
+ QCOMPARE(prop.type(), QVariant::List);
+}
+
+void tst_QMetaObject::checkScope()
+{
+ MyNamespace::MyClass obj;
+
+ const QMetaObject *mo = obj.metaObject();
+ QMetaEnum me = mo->enumerator(mo->indexOfEnumerator("MyEnum"));
+ QVERIFY(me.isValid());
+ QVERIFY(!me.isFlag());
+ QCOMPARE(QLatin1String(me.scope()), QLatin1String("MyNamespace::MyClass"));
+ QCOMPARE(me.keyToValue("MyNamespace::MyClass::MyEnum2"), 1);
+ QCOMPARE(me.keyToValue("MyClass::MyEnum2"), -1);
+ QCOMPARE(me.keyToValue("MyNamespace::MyEnum2"), -1);
+ QCOMPARE(me.keyToValue("MyEnum2"), 1);
+ QCOMPARE(me.keyToValue("MyEnum"), -1);
+ QCOMPARE(QLatin1String(me.valueToKey(1)), QLatin1String("MyEnum2"));
+
+ QMetaEnum mf = mo->enumerator(mo->indexOfEnumerator("MyFlags"));
+ QVERIFY(mf.isValid());
+ QVERIFY(mf.isFlag());
+ QCOMPARE(QLatin1String(mf.scope()), QLatin1String("MyNamespace::MyClass"));
+ QCOMPARE(mf.keysToValue("MyNamespace::MyClass::MyFlag2"), 2);
+ QCOMPARE(mf.keysToValue("MyClass::MyFlag2"), -1);
+ QCOMPARE(mf.keysToValue("MyNamespace::MyFlag2"), -1);
+ QCOMPARE(mf.keysToValue("MyFlag2"), 2);
+ QCOMPARE(mf.keysToValue("MyFlag"), -1);
+ QCOMPARE(QLatin1String(mf.valueToKey(2)), QLatin1String("MyFlag2"));
+ QCOMPARE(mf.keysToValue("MyNamespace::MyClass::MyFlag1|MyNamespace::MyClass::MyFlag2"), 3);
+ QCOMPARE(mf.keysToValue("MyClass::MyFlag1|MyClass::MyFlag2"), -1);
+ QCOMPARE(mf.keysToValue("MyNamespace::MyFlag1|MyNamespace::MyFlag2"), -1);
+ QCOMPARE(mf.keysToValue("MyFlag1|MyFlag2"), 3);
+ QCOMPARE(mf.keysToValue("MyFlag2|MyFlag2"), 2);
+ QCOMPARE(mf.keysToValue("MyFlag1|MyNamespace::MyClass::MyFlag2"), 3);
+ QCOMPARE(mf.keysToValue("MyNamespace::MyClass::MyFlag2|MyNamespace::MyClass::MyFlag2"), 2);
+ QCOMPARE(QLatin1String(mf.valueToKeys(3)), QLatin1String("MyFlag1|MyFlag2"));
+}
+
+void tst_QMetaObject::propertyNotify()
+{
+ const QMetaObject *mo = metaObject();
+
+ QMetaProperty prop = mo->property(mo->indexOfProperty("value6"));
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.hasNotifySignal());
+ QMetaMethod signal = prop.notifySignal();
+ QCOMPARE(signal.signature(), "value6Changed()");
+
+ prop = mo->property(mo->indexOfProperty("value7"));
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.hasNotifySignal());
+ signal = prop.notifySignal();
+ QCOMPARE(signal.signature(), "value7Changed(QString)");
+
+ prop = mo->property(mo->indexOfProperty("value8"));
+ QVERIFY(prop.isValid());
+ QVERIFY(!prop.hasNotifySignal());
+ signal = prop.notifySignal();
+ QCOMPARE(signal.signature(), (const char *)0);
+
+ prop = mo->property(mo->indexOfProperty("value"));
+ QVERIFY(prop.isValid());
+ QVERIFY(!prop.hasNotifySignal());
+ signal = prop.notifySignal();
+ QCOMPARE(signal.signature(), (const char *)0);
+}
+
+void tst_QMetaObject::propertyConstant()
+{
+ const QMetaObject *mo = metaObject();
+
+ QMetaProperty prop = mo->property(mo->indexOfProperty("value8"));
+ QVERIFY(prop.isValid());
+ QVERIFY(!prop.isConstant());
+
+ prop = mo->property(mo->indexOfProperty("value9"));
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.isConstant());
+}
+
+void tst_QMetaObject::propertyFinal()
+{
+ const QMetaObject *mo = metaObject();
+
+ QMetaProperty prop = mo->property(mo->indexOfProperty("value10"));
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.isFinal());
+
+ prop = mo->property(mo->indexOfProperty("value9"));
+ QVERIFY(prop.isValid());
+ QVERIFY(!prop.isFinal());
+}
+
+class ClassInfoTestObjectA : public QObject
+{
+ Q_OBJECT
+ Q_CLASSINFO("Author", "Christopher Pike")
+};
+
+class ClassInfoTestObjectB : public ClassInfoTestObjectA
+{
+ Q_OBJECT
+};
+
+void tst_QMetaObject::classInfo()
+{
+ ClassInfoTestObjectB b;
+ int index = b.metaObject()->indexOfClassInfo("Author");
+ QCOMPARE(index, 0);
+ QVERIFY(index <= b.metaObject()->classInfoOffset());
+ QCOMPARE(QLatin1String(b.metaObject()->classInfo(index).value()), QLatin1String("Christopher Pike"));
+}
+
+void tst_QMetaObject::metaMethod()
+{
+ QString str("foo");
+ QString ret("bar");
+ QMetaMethod method;
+ QVERIFY(!method.invoke(this));
+ QVERIFY(!method.invoke(this, Q_ARG(QString, str)));
+ QVERIFY(!method.invoke(this, Q_RETURN_ARG(QString, ret), Q_ARG(QString, str)));
+ QCOMPARE(str, QString("foo"));
+ QCOMPARE(ret, QString("bar"));
+
+
+ QtTestObject obj;
+ QString t1("1"); QString t2("2"); QString t3("3"); QString t4("4"); QString t5("5");
+ QString t6("6"); QString t7("7"); QString t8("8"); QString t9("9"); QString t10("X");
+
+ int index = QtTestObject::staticMetaObject.indexOfMethod("sl5(QString,QString,QString,QString,QString)");
+ QVERIFY(index > 0);
+ method = QtTestObject::staticMetaObject.method(index);
+ //wrong args
+ QVERIFY(!method.invoke(&obj, Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4")));
+ //QVERIFY(!method.invoke(&obj, Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4"), Q_ARG(QString, "5"), Q_ARG(QString, "6")));
+ //QVERIFY(!method.invoke(&obj, Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4"), Q_ARG(int, 5)));
+ QVERIFY(!method.invoke(&obj, Q_RETURN_ARG(QString, ret), Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4"), Q_ARG(QString, "5")));
+
+ //wrong object
+ //QVERIFY(!method.invoke(this, Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4"), Q_ARG(QString, "5")));
+ QVERIFY(!method.invoke(0, Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4"), Q_ARG(QString, "5")));
+ QCOMPARE(ret, QString("bar"));
+ QCOMPARE(obj.slotResult, QString());
+
+ QVERIFY(method.invoke(&obj, Q_ARG(QString, "1"), Q_ARG(QString, "2"), Q_ARG(QString, "3"), Q_ARG(QString, "4"), Q_ARG(QString, "5")));
+ QCOMPARE(obj.slotResult, QString("sl5:12345"));
+
+ index = QtTestObject::staticMetaObject.indexOfMethod("sl13(QList<QString>)");
+ QVERIFY(index > 0);
+ QMetaMethod sl13 = QtTestObject::staticMetaObject.method(index);
+ QList<QString> returnValue, argument;
+ argument << QString("one") << QString("two") << QString("three");
+ //wrong object
+ //QVERIFY(!sl13.invoke(this, Q_RETURN_ARG(QList<QString>, returnValue), Q_ARG(QList<QString>, argument)));
+ QVERIFY(!sl13.invoke(0, Q_RETURN_ARG(QList<QString>, returnValue), Q_ARG(QList<QString>, argument)));
+ QCOMPARE(returnValue, QList<QString>());
+
+ QVERIFY(sl13.invoke(&obj, Q_RETURN_ARG(QList<QString>, returnValue), Q_ARG(QList<QString>, argument)));
+ QCOMPARE(returnValue, argument);
+ QCOMPARE(obj.slotResult, QString("sl13"));
+}
+
+void tst_QMetaObject::indexOfMethod_data()
+{
+ QTest::addColumn<QObject *>("object");
+ QTest::addColumn<QByteArray>("name");
+ QTest::addColumn<bool>("isSignal");
+ QTest::newRow("indexOfMethod_data") << (QObject*)this << QByteArray("indexOfMethod_data()") << false;
+ QTest::newRow("deleteLater") << (QObject*)this << QByteArray("deleteLater()") << false;
+ QTest::newRow("value6changed") << (QObject*)this << QByteArray("value6Changed()") << true;
+ QTest::newRow("value7changed") << (QObject*)this << QByteArray("value7Changed(QString)") << true;
+ QTest::newRow("destroyed") << (QObject*)this << QByteArray("destroyed()") << true;
+ QTest::newRow("destroyed2") << (QObject*)this << QByteArray("destroyed(QObject*)") << true;
+}
+
+void tst_QMetaObject::indexOfMethod()
+{
+ QFETCH(QObject *, object);
+ QFETCH(QByteArray, name);
+ QFETCH(bool, isSignal);
+ int idx = object->metaObject()->indexOfMethod(name);
+ QVERIFY(idx >= 0);
+ QCOMPARE(object->metaObject()->method(idx).signature(), name.constData());
+ QCOMPARE(object->metaObject()->indexOfSlot(name), isSignal ? -1 : idx);
+ QCOMPARE(object->metaObject()->indexOfSignal(name), !isSignal ? -1 : idx);
+}
+
+
+QTEST_MAIN(tst_QMetaObject)
+#include "tst_qmetaobject.moc"
diff --git a/tests/auto/corelib/kernel/qmetaproperty/qmetaproperty.pro b/tests/auto/corelib/kernel/qmetaproperty/qmetaproperty.pro
new file mode 100644
index 0000000000..4369f33b4c
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmetaproperty/qmetaproperty.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+QT = core gui
+SOURCES += tst_qmetaproperty.cpp
+
diff --git a/tests/auto/corelib/kernel/qmetaproperty/tst_qmetaproperty.cpp b/tests/auto/corelib/kernel/qmetaproperty/tst_qmetaproperty.cpp
new file mode 100644
index 0000000000..7a457b05fa
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmetaproperty/tst_qmetaproperty.cpp
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qobject.h>
+#include <qmetaobject.h>
+
+class tst_QMetaProperty : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(EnumType value WRITE setValue READ getValue)
+ Q_PROPERTY(EnumType value2 WRITE set_value READ get_value)
+ Q_PROPERTY(int value8 READ value8)
+ Q_PROPERTY(int value9 READ value9 CONSTANT)
+ Q_PROPERTY(int value10 READ value10 FINAL)
+
+private slots:
+ void hasStdCppSet();
+ void isConstant();
+ void isFinal();
+
+public:
+ enum EnumType { EnumType1 };
+
+ void setValue(EnumType) {}
+ EnumType getValue() const { return EnumType1; }
+ void set_value(EnumType) {}
+ EnumType get_value() const { return EnumType1; }
+
+ int value8() const { return 1; }
+ int value9() const { return 1; }
+ int value10() const { return 1; }
+};
+
+void tst_QMetaProperty::hasStdCppSet()
+{
+ const QMetaObject *mo = metaObject();
+
+ QMetaProperty prop = mo->property(mo->indexOfProperty("value"));
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.hasStdCppSet());
+
+ prop = mo->property(mo->indexOfProperty("value2"));
+ QVERIFY(prop.isValid());
+ QVERIFY(!prop.hasStdCppSet());
+}
+
+void tst_QMetaProperty::isConstant()
+{
+ const QMetaObject *mo = metaObject();
+
+ QMetaProperty prop = mo->property(mo->indexOfProperty("value8"));
+ QVERIFY(prop.isValid());
+ QVERIFY(!prop.isConstant());
+
+ prop = mo->property(mo->indexOfProperty("value9"));
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.isConstant());
+}
+
+void tst_QMetaProperty::isFinal()
+{
+ const QMetaObject *mo = metaObject();
+
+ QMetaProperty prop = mo->property(mo->indexOfProperty("value10"));
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.isFinal());
+
+ prop = mo->property(mo->indexOfProperty("value9"));
+ QVERIFY(prop.isValid());
+ QVERIFY(!prop.isFinal());
+}
+
+QTEST_MAIN(tst_QMetaProperty)
+#include "tst_qmetaproperty.moc"
diff --git a/tests/auto/corelib/kernel/qmetatype/.gitignore b/tests/auto/corelib/kernel/qmetatype/.gitignore
new file mode 100644
index 0000000000..2d54331613
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmetatype/.gitignore
@@ -0,0 +1 @@
+tst_qmetatype
diff --git a/tests/auto/corelib/kernel/qmetatype/qmetatype.pro b/tests/auto/corelib/kernel/qmetatype/qmetatype.pro
new file mode 100644
index 0000000000..ed1de83927
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmetatype/qmetatype.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qmetatype.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
new file mode 100644
index 0000000000..3fb60acf57
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -0,0 +1,365 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore>
+#include <QtTest/QtTest>
+
+#ifdef Q_OS_LINUX
+# include <pthread.h>
+#endif
+
+Q_DECLARE_METATYPE(QMetaType::Type)
+
+class tst_QMetaType: public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QList<QVariant> prop READ prop WRITE setProp)
+
+public:
+ tst_QMetaType() { propList << 42 << "Hello"; }
+
+ QList<QVariant> prop() const { return propList; }
+ void setProp(const QList<QVariant> &list) { propList = list; }
+
+private:
+ QList<QVariant> propList;
+
+private slots:
+ void defined();
+ void threadSafety();
+ void namespaces();
+ void qMetaTypeId();
+ void properties();
+ void normalizedTypes();
+ void typeName_data();
+ void typeName();
+ void construct();
+ void typedefs();
+ void isRegistered_data();
+ void isRegistered();
+ void unregisterType();
+ void QTBUG11316_registerStreamBuiltin();
+
+};
+
+struct Foo { int i; };
+
+void tst_QMetaType::defined()
+{
+ QCOMPARE(int(QMetaTypeId2<QString>::Defined), 1);
+ QCOMPARE(int(QMetaTypeId2<Foo>::Defined), 0);
+ QCOMPARE(int(QMetaTypeId2<void*>::Defined), 1);
+ QCOMPARE(int(QMetaTypeId2<int*>::Defined), 0);
+}
+
+struct Bar
+{
+ Bar()
+ {
+ // check re-entrancy
+ if (!QMetaType::isRegistered(qRegisterMetaType<Foo>("Foo"))) {
+ qWarning("%s: re-entrancy test failed", Q_FUNC_INFO);
+ ++failureCount;
+ }
+ }
+
+public:
+ static int failureCount;
+};
+
+int Bar::failureCount = 0;
+
+class MetaTypeTorturer: public QThread
+{
+ Q_OBJECT
+protected:
+ void run()
+ {
+ for (int i = 0; i < 1000; ++i) {
+ const QByteArray name = QString("Bar%1_%2").arg(i).arg((size_t)QThread::currentThreadId()).toLatin1();
+ const char *nm = name.constData();
+ int tp = qRegisterMetaType<Bar>(nm);
+#ifdef Q_OS_LINUX
+ pthread_yield();
+#endif
+ if (!QMetaType::isRegistered(tp)) {
+ ++failureCount;
+ qWarning() << name << "is not a registered metatype";
+ }
+ if (QMetaType::type(nm) != tp) {
+ ++failureCount;
+ qWarning() << "Wrong metatype returned for" << name;
+ }
+ if (QMetaType::typeName(tp) != name) {
+ ++failureCount;
+ qWarning() << "Wrong typeName returned for" << tp;
+ }
+ void *buf = QMetaType::construct(tp, 0);
+ void *buf2 = QMetaType::construct(tp, buf);
+ if (!buf) {
+ ++failureCount;
+ qWarning() << "Null buffer returned by QMetaType::construct(tp, 0)";
+ }
+ if (!buf2) {
+ ++failureCount;
+ qWarning() << "Null buffer returned by QMetaType::construct(tp, buf)";
+ }
+ QMetaType::destroy(tp, buf);
+ QMetaType::destroy(tp, buf2);
+ }
+ }
+public:
+ MetaTypeTorturer() : failureCount(0) { }
+ int failureCount;
+};
+
+void tst_QMetaType::threadSafety()
+{
+ MetaTypeTorturer t1;
+ MetaTypeTorturer t2;
+ MetaTypeTorturer t3;
+
+ t1.start();
+ t2.start();
+ t3.start();
+
+ QVERIFY(t1.wait());
+ QVERIFY(t2.wait());
+ QVERIFY(t3.wait());
+
+ QCOMPARE(t1.failureCount, 0);
+ QCOMPARE(t2.failureCount, 0);
+ QCOMPARE(t3.failureCount, 0);
+ QCOMPARE(Bar::failureCount, 0);
+}
+
+namespace TestSpace
+{
+ struct Foo { double d; };
+
+}
+Q_DECLARE_METATYPE(TestSpace::Foo)
+
+void tst_QMetaType::namespaces()
+{
+ TestSpace::Foo nf = { 11.12 };
+ QVariant v = qVariantFromValue(nf);
+ QCOMPARE(qvariant_cast<TestSpace::Foo>(v).d, 11.12);
+}
+
+void tst_QMetaType::qMetaTypeId()
+{
+ QCOMPARE(::qMetaTypeId<QString>(), int(QMetaType::QString));
+ QCOMPARE(::qMetaTypeId<int>(), int(QMetaType::Int));
+ QCOMPARE(::qMetaTypeId<TestSpace::Foo>(), QMetaType::type("TestSpace::Foo"));
+
+ QCOMPARE(::qMetaTypeId<char>(), QMetaType::type("char"));
+ QCOMPARE(::qMetaTypeId<uchar>(), QMetaType::type("unsigned char"));
+ QCOMPARE(::qMetaTypeId<signed char>(), QMetaType::type("signed char"));
+ QCOMPARE(::qMetaTypeId<qint8>(), QMetaType::type("qint8"));
+}
+
+void tst_QMetaType::properties()
+{
+ qRegisterMetaType<QList<QVariant> >("QList<QVariant>");
+
+ QVariant v = property("prop");
+
+ QCOMPARE(v.typeName(), "QVariantList");
+
+ QList<QVariant> values = v.toList();
+ QCOMPARE(values.count(), 2);
+ QCOMPARE(values.at(0).toInt(), 42);
+
+ values << 43 << "world";
+
+ QVERIFY(setProperty("prop", values));
+ v = property("prop");
+ QCOMPARE(v.toList().count(), 4);
+}
+
+template <typename T>
+struct Whity { T t; };
+
+Q_DECLARE_METATYPE( Whity < int > )
+Q_DECLARE_METATYPE(Whity<double>)
+
+void tst_QMetaType::normalizedTypes()
+{
+ int WhityIntId = ::qMetaTypeId<Whity<int> >();
+ int WhityDoubleId = ::qMetaTypeId<Whity<double> >();
+
+ QCOMPARE(QMetaType::type("Whity<int>"), WhityIntId);
+ QCOMPARE(QMetaType::type(" Whity < int > "), WhityIntId);
+ QCOMPARE(QMetaType::type("Whity<int >"), WhityIntId);
+
+ QCOMPARE(QMetaType::type("Whity<double>"), WhityDoubleId);
+ QCOMPARE(QMetaType::type(" Whity< double > "), WhityDoubleId);
+ QCOMPARE(QMetaType::type("Whity<double >"), WhityDoubleId);
+
+ QCOMPARE(qRegisterMetaType<Whity<int> >(" Whity < int > "), WhityIntId);
+ QCOMPARE(qRegisterMetaType<Whity<int> >("Whity<int>"), WhityIntId);
+ QCOMPARE(qRegisterMetaType<Whity<int> >("Whity<int > "), WhityIntId);
+
+ QCOMPARE(qRegisterMetaType<Whity<double> >(" Whity < double > "), WhityDoubleId);
+ QCOMPARE(qRegisterMetaType<Whity<double> >("Whity<double>"), WhityDoubleId);
+ QCOMPARE(qRegisterMetaType<Whity<double> >("Whity<double > "), WhityDoubleId);
+}
+
+void tst_QMetaType::typeName_data()
+{
+ QTest::addColumn<QMetaType::Type>("aType");
+ QTest::addColumn<QString>("aTypeName");
+
+ QTest::newRow("void") << QMetaType::Void << "void";
+ QTest::newRow("int") << QMetaType::Int << "int";
+ QTest::newRow("double") << QMetaType::Double << "double";
+ QTest::newRow("qlonglong") << QMetaType::LongLong << "qlonglong";
+ QTest::newRow("QRegExp") << QMetaType::QRegExp << "QRegExp";
+ QTest::newRow("void*") << QMetaType::VoidStar << "void*";
+ QTest::newRow("ulong") << QMetaType::ULong << "ulong";
+ QTest::newRow("QWidget*") << QMetaType::QWidgetStar << "QWidget*";
+}
+
+void tst_QMetaType::typeName()
+{
+ QFETCH(QMetaType::Type, aType);
+ QFETCH(QString, aTypeName);
+
+ QCOMPARE(QString::fromLatin1(QMetaType::typeName(aType)), aTypeName);
+}
+
+void tst_QMetaType::construct()
+{
+ QSize x(1, 1);
+ void *size = QMetaType::construct(QMetaType::QSize, &x);
+ QVERIFY(size);
+ QCOMPARE(static_cast<QSize *>(size)->width(), 1);
+ QMetaType::destroy(QMetaType::QSize, size);
+}
+
+typedef QString CustomString;
+Q_DECLARE_METATYPE(CustomString) //this line is useless
+
+void tst_QMetaType::typedefs()
+{
+ QCOMPARE(QMetaType::type("long long"), int(QMetaType::LongLong));
+ QCOMPARE(QMetaType::type("unsigned long long"), int(QMetaType::ULongLong));
+ QCOMPARE(QMetaType::type("qint8"), int(QMetaType::Char));
+ QCOMPARE(QMetaType::type("quint8"), int(QMetaType::UChar));
+ QCOMPARE(QMetaType::type("qint16"), int(QMetaType::Short));
+ QCOMPARE(QMetaType::type("quint16"), int(QMetaType::UShort));
+ QCOMPARE(QMetaType::type("qint32"), int(QMetaType::Int));
+ QCOMPARE(QMetaType::type("quint32"), int(QMetaType::UInt));
+ QCOMPARE(QMetaType::type("qint64"), int(QMetaType::LongLong));
+ QCOMPARE(QMetaType::type("quint64"), int(QMetaType::ULongLong));
+
+ // make sure the qreal typeId is the type id of the type it's defined to
+ QCOMPARE(QMetaType::type("qreal"), ::qMetaTypeId<qreal>());
+
+ qRegisterMetaType<CustomString>("CustomString");
+ QCOMPARE(QMetaType::type("CustomString"), ::qMetaTypeId<CustomString>());
+
+ typedef Whity<double> WhityDouble;
+ qRegisterMetaType<WhityDouble>("WhityDouble");
+ QCOMPARE(QMetaType::type("WhityDouble"), ::qMetaTypeId<WhityDouble>());
+}
+
+class IsRegisteredDummyType { };
+
+void tst_QMetaType::isRegistered_data()
+{
+ QTest::addColumn<int>("typeId");
+ QTest::addColumn<bool>("registered");
+
+ // predefined/custom types
+ QTest::newRow("QMetaType::Void") << int(QMetaType::Void) << true;
+ QTest::newRow("QMetaType::Int") << int(QMetaType::Int) << true;
+
+ int dummyTypeId = qRegisterMetaType<IsRegisteredDummyType>("IsRegisteredDummyType");
+
+ QTest::newRow("IsRegisteredDummyType") << dummyTypeId << true;
+
+ // unknown types
+ QTest::newRow("-1") << -1 << false;
+ QTest::newRow("-42") << -42 << false;
+ QTest::newRow("IsRegisteredDummyType + 1") << (dummyTypeId + 1) << false;
+}
+
+void tst_QMetaType::isRegistered()
+{
+ QFETCH(int, typeId);
+ QFETCH(bool, registered);
+ QCOMPARE(QMetaType::isRegistered(typeId), registered);
+}
+
+class RegUnreg
+{
+public:
+ RegUnreg() {};
+ RegUnreg(const RegUnreg &) {};
+ ~RegUnreg() {};
+};
+
+void tst_QMetaType::unregisterType()
+{
+ // cannot unregister standard types
+ int typeId = qRegisterMetaType<QList<QVariant> >("QList<QVariant>");
+ QCOMPARE(QMetaType::isRegistered(typeId), true);
+ QMetaType::unregisterType("QList<QVariant>");
+ QCOMPARE(QMetaType::isRegistered(typeId), true);
+ // allow unregister user types
+ typeId = qRegisterMetaType<RegUnreg>("RegUnreg");
+ QCOMPARE(QMetaType::isRegistered(typeId), true);
+ QMetaType::unregisterType("RegUnreg");
+ QCOMPARE(QMetaType::isRegistered(typeId), false);
+}
+
+void tst_QMetaType::QTBUG11316_registerStreamBuiltin()
+{
+ //should not crash;
+ qRegisterMetaTypeStreamOperators<QString>("QString");
+ qRegisterMetaTypeStreamOperators<QVariant>("QVariant");
+}
+
+QTEST_MAIN(tst_QMetaType)
+#include "tst_qmetatype.moc"
diff --git a/tests/auto/corelib/kernel/qmimedata/qmimedata.pro b/tests/auto/corelib/kernel/qmimedata/qmimedata.pro
new file mode 100644
index 0000000000..13fbe65edc
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmimedata/qmimedata.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qmimedata.cpp
+
+
diff --git a/tests/auto/corelib/kernel/qmimedata/tst_qmimedata.cpp b/tests/auto/corelib/kernel/qmimedata/tst_qmimedata.cpp
new file mode 100644
index 0000000000..6876862603
--- /dev/null
+++ b/tests/auto/corelib/kernel/qmimedata/tst_qmimedata.cpp
@@ -0,0 +1,343 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <QMimeData>
+
+class tst_QMimeData : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QMimeData()
+ {
+ }
+
+private slots:
+ void clear() const;
+ void colorData() const;
+ void data() const;
+ void formats() const;
+ void hasColor() const;
+ void hasFormat() const;
+ void hasHtml() const;
+ void hasImage() const;
+ // hasText() covered by setText()
+ // hasUrls() covered by setUrls()
+ // html() covered by setHtml()
+ void imageData() const;
+ void removeFormat() const;
+ // setColorData() covered by hasColor()
+ // setData() covered in a few different tests
+ void setHtml() const;
+ // setImageData() covered in a few tests
+ void setText() const;
+ void setUrls() const;
+ // text() covered in setText()
+ // urls() covered by setUrls()
+};
+
+void tst_QMimeData::clear() const
+{
+ QMimeData mimeData;
+
+ // set, clear, verify empty
+ mimeData.setData("text/plain", "pirates");
+ QVERIFY(mimeData.hasText());
+ mimeData.clear();
+ QVERIFY(mimeData.hasText() == false);
+
+ // repopulate, verify not empty
+ mimeData.setData("text/plain", "pirates");
+ QVERIFY(mimeData.hasText());
+}
+
+void tst_QMimeData::colorData() const
+{
+ QMimeData mimeData;
+ QColor red = Qt::red;
+ QColor blue = Qt::blue;
+
+ // set, verify
+ mimeData.setColorData(red);
+ QVERIFY(mimeData.hasColor());
+ QCOMPARE(qvariant_cast<QColor>(mimeData.colorData()), red);
+
+ // change, verify
+ mimeData.setColorData(Qt::blue);
+ QVERIFY(mimeData.hasColor());
+ QCOMPARE(qvariant_cast<QColor>(mimeData.colorData()), blue);
+}
+
+void tst_QMimeData::data() const
+{
+ QMimeData mimeData;
+
+ // set text, verify
+ mimeData.setData("text/plain", "pirates");
+ QCOMPARE(mimeData.data("text/plain"), QByteArray("pirates"));
+ QVERIFY(mimeData.data("text/html").length() == 0);
+
+ // html time
+ mimeData.setData("text/html", "ninjas");
+ QCOMPARE(mimeData.data("text/html"), QByteArray("ninjas"));
+ QCOMPARE(mimeData.data("text/plain"), QByteArray("pirates")); // make sure text not damaged
+ QCOMPARE(mimeData.data("text/html"), mimeData.html().toLatin1());
+}
+
+void tst_QMimeData::formats() const
+{
+ QMimeData mimeData;
+
+ // set text, verify
+ mimeData.setData("text/plain", "pirates");
+ QCOMPARE(mimeData.formats(), QStringList() << "text/plain");
+
+ // set html, verify
+ mimeData.setData("text/html", "ninjas");
+ QCOMPARE(mimeData.formats(), QStringList() << "text/plain" << "text/html");
+
+ // clear, verify
+ mimeData.clear();
+ QCOMPARE(mimeData.formats(), QStringList());
+
+ // set an odd format, verify
+ mimeData.setData("foo/bar", "somevalue");
+ QCOMPARE(mimeData.formats(), QStringList() << "foo/bar");
+}
+
+void tst_QMimeData::hasColor() const
+{
+ QMimeData mimeData;
+
+ // initial state
+ QVERIFY(mimeData.hasColor() == false);
+
+ // set, verify
+ mimeData.setColorData(QColor(Qt::red));
+ QVERIFY(mimeData.hasColor());
+
+ // clear, verify
+ mimeData.clear();
+ QVERIFY(mimeData.hasColor() == false);
+
+ // set something else, verify
+ mimeData.setData("text/plain", "pirates");
+ QVERIFY(mimeData.hasColor() == false);
+}
+
+void tst_QMimeData::hasFormat() const
+{
+ QMimeData mimeData;
+
+ // initial state
+ QVERIFY(mimeData.hasFormat("text/plain") == false);
+
+ // add, verify
+ mimeData.setData("text/plain", "pirates");
+ QVERIFY(mimeData.hasFormat("text/plain"));
+ QVERIFY(mimeData.hasFormat("text/html") == false);
+
+ // clear, verify
+ mimeData.clear();
+ QVERIFY(mimeData.hasFormat("text/plain") == false);
+ QVERIFY(mimeData.hasFormat("text/html") == false);
+}
+
+void tst_QMimeData::hasHtml() const
+{
+ QMimeData mimeData;
+
+ // initial state
+ QVERIFY(mimeData.hasHtml() == false);
+
+ // add plain, verify false
+ mimeData.setData("text/plain", "pirates");
+ QVERIFY(mimeData.hasHtml() == false);
+
+ // add html, verify
+ mimeData.setData("text/html", "ninjas");
+ QVERIFY(mimeData.hasHtml());
+
+ // clear, verify
+ mimeData.clear();
+ QVERIFY(mimeData.hasHtml() == false);
+
+ // readd, verify
+ mimeData.setData("text/html", "ninjas");
+ QVERIFY(mimeData.hasHtml());
+}
+
+void tst_QMimeData::hasImage() const
+{
+ QMimeData mimeData;
+
+ // initial state
+ QVERIFY(mimeData.hasImage() == false);
+
+ // add text, verify false
+ mimeData.setData("text/plain", "pirates");
+ QVERIFY(mimeData.hasImage() == false);
+
+ // add image
+ mimeData.setImageData(QImage());
+ QVERIFY(mimeData.hasImage());
+
+ // clear, verify
+ mimeData.clear();
+ QVERIFY(mimeData.hasImage() == false);
+}
+
+void tst_QMimeData::imageData() const
+{
+ QMimeData mimeData;
+
+ // initial state
+ QCOMPARE(mimeData.imageData(), QVariant());
+
+ // set, test
+ mimeData.setImageData(QImage());
+ QVERIFY(mimeData.hasImage());
+ QCOMPARE(mimeData.imageData(), QVariant(QImage()));
+
+ // clear, verify
+ mimeData.clear();
+ QCOMPARE(mimeData.imageData(), QVariant());
+}
+
+void tst_QMimeData::removeFormat() const
+{
+ QMimeData mimeData;
+
+ // add, verify
+ mimeData.setData("text/plain", "pirates");
+ QVERIFY(mimeData.hasFormat("text/plain"));
+
+ // add another, verify
+ mimeData.setData("text/html", "ninjas");
+ QVERIFY(mimeData.hasFormat("text/html"));
+
+ // remove, verify
+ mimeData.removeFormat("text/plain");
+ QVERIFY(mimeData.hasFormat("text/plain") == false);
+ QVERIFY(mimeData.hasFormat("text/html"));
+
+ // remove, verify
+ mimeData.removeFormat("text/html");
+ QVERIFY(mimeData.hasFormat("text/plain") == false);
+ QVERIFY(mimeData.hasFormat("text/html") == false);
+}
+
+void tst_QMimeData::setHtml() const
+{
+ QMimeData mimeData;
+
+ // initial state
+ QVERIFY(mimeData.hasHtml() == false);
+
+ // add html, verify
+ mimeData.setHtml("ninjas");
+ QVERIFY(mimeData.hasHtml());
+ QCOMPARE(mimeData.html(), QLatin1String("ninjas"));
+
+ // reset html
+ mimeData.setHtml("pirates");
+ QVERIFY(mimeData.hasHtml());
+ QCOMPARE(mimeData.html(), QLatin1String("pirates"));
+}
+
+void tst_QMimeData::setText() const
+{
+ QMimeData mimeData;
+
+ // verify initial state
+ QCOMPARE(mimeData.text(), QLatin1String(""));
+ QVERIFY(mimeData.hasText() == false);
+
+ // set, verify
+ mimeData.setText("pirates");
+ QVERIFY(mimeData.hasText());
+ QCOMPARE(mimeData.text(), QLatin1String("pirates"));
+ QCOMPARE(mimeData.text().toLatin1(), mimeData.data("text/plain"));
+
+ // reset, verify
+ mimeData.setText("ninjas");
+ QVERIFY(mimeData.hasText());
+ QCOMPARE(mimeData.text(), QLatin1String("ninjas"));
+ QCOMPARE(mimeData.text().toLatin1(), mimeData.data("text/plain"));
+
+ // clear, verify
+ mimeData.clear();
+ QCOMPARE(mimeData.text(), QLatin1String(""));
+ QVERIFY(mimeData.hasText() == false);
+}
+
+void tst_QMimeData::setUrls() const
+{
+ QMimeData mimeData;
+ QList<QUrl> shortUrlList;
+ QList<QUrl> longUrlList;
+
+ // set up
+ shortUrlList += QUrl("http://qt.nokia.com");
+ longUrlList = shortUrlList;
+ longUrlList += QUrl("http://www.google.com");
+
+ // verify initial state
+ QVERIFY(mimeData.hasUrls() == false);
+
+ // set a few, verify
+ mimeData.setUrls(shortUrlList);
+ QCOMPARE(mimeData.urls(), shortUrlList);
+
+ // change them, verify
+ mimeData.setUrls(longUrlList);
+ QCOMPARE(mimeData.urls(), longUrlList);
+
+ // clear, verify
+ mimeData.clear();
+ QVERIFY(mimeData.hasUrls() == false);
+}
+
+
+QTEST_MAIN(tst_QMimeData)
+#include "tst_qmimedata.moc"
diff --git a/tests/auto/corelib/kernel/qobject/.gitignore b/tests/auto/corelib/kernel/qobject/.gitignore
new file mode 100644
index 0000000000..ea4d6d7f06
--- /dev/null
+++ b/tests/auto/corelib/kernel/qobject/.gitignore
@@ -0,0 +1,3 @@
+tst_qobject
+signalbug
+signalbug.exe
diff --git a/tests/auto/corelib/kernel/qobject/moc_oldnormalizeobject.cpp b/tests/auto/corelib/kernel/qobject/moc_oldnormalizeobject.cpp
new file mode 100644
index 0000000000..b275ff30fa
--- /dev/null
+++ b/tests/auto/corelib/kernel/qobject/moc_oldnormalizeobject.cpp
@@ -0,0 +1,154 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/****************************************************************************
+** Meta object code from reading C++ file 'oldnormalizeobject.h'
+**
+** Created: Wed Nov 18 11:43:05 2009
+** by: The Qt Meta Object Compiler version 62 (Qt 4.6.0)
+**
+*****************************************************************************/
+
+// Yhis file was generated from moc version 4.6 to test binary compatibility
+// It should *not* be generated by the current moc
+
+#include "oldnormalizeobject.h"
+
+QT_BEGIN_MOC_NAMESPACE
+static const uint qt_meta_data_OldNormalizeObject[] = {
+
+ // content:
+ 4, // revision
+ 0, // classname
+ 0, 0, // classinfo
+ 6, 14, // methods
+ 0, 0, // properties
+ 0, 0, // enums/sets
+ 0, 0, // constructors
+ 0, // flags
+ 3, // signalCount
+
+ // signals: signature, parameters, type, tag, flags
+ 24, 20, 19, 19, 0x05,
+ 57, 20, 19, 19, 0x05,
+ 100, 20, 19, 19, 0x05,
+
+ // slots: signature, parameters, type, tag, flags
+ 149, 20, 19, 19, 0x0a,
+ 180, 20, 19, 19, 0x0a,
+ 221, 20, 19, 19, 0x0a,
+
+ 0 // eod
+};
+
+static const char qt_meta_stringdata_OldNormalizeObject[] = {
+ "OldNormalizeObject\0\0ref\0"
+ "typeRefSignal(Template<Class&>&)\0"
+ "constTypeRefSignal(Template<const Class&>)\0"
+ "typeConstRefSignal(Template<const Class&>const&)\0"
+ "typeRefSlot(Template<Class&>&)\0"
+ "constTypeRefSlot(Template<const Class&>)\0"
+ "typeConstRefSlot(Template<const Class&>const&)\0"
+};
+
+const QMetaObject OldNormalizeObject::staticMetaObject = {
+ { &QObject::staticMetaObject, qt_meta_stringdata_OldNormalizeObject,
+ qt_meta_data_OldNormalizeObject, 0 }
+};
+
+#ifdef Q_NO_DATA_RELOCATION
+const QMetaObject &OldNormalizeObject::getStaticMetaObject() { return staticMetaObject; }
+#endif //Q_NO_DATA_RELOCATION
+
+const QMetaObject *OldNormalizeObject::metaObject() const
+{
+ return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;
+}
+
+void *OldNormalizeObject::qt_metacast(const char *_clname)
+{
+ if (!_clname) return 0;
+ if (!strcmp(_clname, qt_meta_stringdata_OldNormalizeObject))
+ return static_cast<void*>(const_cast< OldNormalizeObject*>(this));
+ return QObject::qt_metacast(_clname);
+}
+
+int OldNormalizeObject::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+ _id = QObject::qt_metacall(_c, _id, _a);
+ if (_id < 0)
+ return _id;
+ if (_c == QMetaObject::InvokeMetaMethod) {
+ switch (_id) {
+ case 0: typeRefSignal((*reinterpret_cast< Template<Class&>(*)>(_a[1]))); break;
+ case 1: constTypeRefSignal((*reinterpret_cast< const Template<const Class&>(*)>(_a[1]))); break;
+ case 2: typeConstRefSignal((*reinterpret_cast< Template<const Class&>const(*)>(_a[1]))); break;
+ case 3: typeRefSlot((*reinterpret_cast< Template<Class&>(*)>(_a[1]))); break;
+ case 4: constTypeRefSlot((*reinterpret_cast< const Template<const Class&>(*)>(_a[1]))); break;
+ case 5: typeConstRefSlot((*reinterpret_cast< Template<const Class&>const(*)>(_a[1]))); break;
+ default: ;
+ }
+ _id -= 6;
+ }
+ return _id;
+}
+
+// SIGNAL 0
+void OldNormalizeObject::typeRefSignal(Template<Class&> & _t1)
+{
+ void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
+ QMetaObject::activate(this, &staticMetaObject, 0, _a);
+}
+
+// SIGNAL 1
+void OldNormalizeObject::constTypeRefSignal(const Template<const Class&> & _t1)
+{
+ void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
+ QMetaObject::activate(this, &staticMetaObject, 1, _a);
+}
+
+// SIGNAL 2
+void OldNormalizeObject::typeConstRefSignal(Template<Class const&> const & _t1)
+{
+ void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
+ QMetaObject::activate(this, &staticMetaObject, 2, _a);
+}
+QT_END_MOC_NAMESPACE
diff --git a/tests/auto/corelib/kernel/qobject/oldnormalizeobject.h b/tests/auto/corelib/kernel/qobject/oldnormalizeobject.h
new file mode 100644
index 0000000000..4dfb7d97d2
--- /dev/null
+++ b/tests/auto/corelib/kernel/qobject/oldnormalizeobject.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtTest module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef OLDNORMALIZEOBJECT_H
+#define OLDNORMALIZEOBJECT_H
+
+#include <QObject>
+
+struct Struct;
+class Class;
+template <typename T> class Template;
+
+// An object with old moc output that incorrectly normalizes 'T<C> const &' in the function
+// signatures
+class OldNormalizeObject : public QObject
+{
+ /* tmake ignore Q_OBJECT */
+ Q_OBJECT
+
+signals:
+ void typeRefSignal(Template<Class &> &ref);
+ void constTypeRefSignal(const Template<const Class &> &ref);
+ void typeConstRefSignal(Template<Class const &> const &ref);
+
+public slots:
+ void typeRefSlot(Template<Class &> &) {}
+ void constTypeRefSlot(const Template<const Class &> &) {}
+ void typeConstRefSlot(Template<Class const &> const &) {}
+};
+
+#endif // OLDNORMALIZEOBJECT_H
diff --git a/tests/auto/corelib/kernel/qobject/qobject.pro b/tests/auto/corelib/kernel/qobject/qobject.pro
new file mode 100644
index 0000000000..113e14a61d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qobject/qobject.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+SUBDIRS = tst_qobject.pro signalbug.pro
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/kernel/qobject/signalbug.cpp b/tests/auto/corelib/kernel/qobject/signalbug.cpp
new file mode 100644
index 0000000000..f81de47e2d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qobject/signalbug.cpp
@@ -0,0 +1,154 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "signalbug.h"
+
+#include <qcoreapplication.h>
+#include <qstring.h>
+
+#include <stdio.h>
+
+static int Step = 0;
+Sender RandomSender (0, 0);
+
+
+void TRACE (int step, const char *name)
+{
+ for (int t = 0; t < step - 1; t++)
+ fprintf (stderr, "\t");
+ fprintf (stderr, "Step %d: %s\n", step, name);
+ return;
+}
+
+
+Receiver::Receiver ()
+ : QObject ()
+{
+}
+
+void Receiver::received ()
+{
+ ::Step++;
+ const int stepCopy = ::Step;
+ TRACE (stepCopy, "Receiver::received()");
+ if (::Step != 2 && ::Step != 4)
+ qFatal("%s: Incorrect Step: %d (should be 2 or 4)", Q_FUNC_INFO, ::Step);
+
+ if (::Step == 2)
+ s->fire ();
+
+ fprintf (stderr, "Receiver<%s>::received() sender=%s\n",
+ (const char *) objectName ().toAscii (), sender ()->metaObject()->className());
+
+ TRACE (stepCopy, "ends Receiver::received()");
+}
+
+
+Disconnector::Disconnector ()
+ : QObject ()
+{
+}
+
+void Disconnector::received ()
+{
+ ::Step++;
+ const int stepCopy = ::Step;
+ TRACE (stepCopy, "Disconnector::received()");
+ if (::Step != 5 && ::Step != 6)
+ qFatal("%s: Incorrect Step: %d (should be 5 or 6)", Q_FUNC_INFO, ::Step);
+
+ fprintf (stderr, "Disconnector<%s>::received() sender=%s\n",
+ (const char *) objectName ().toAscii (), sender ()->metaObject()->className());
+ if (sender () == 0)
+ fprintf (stderr, "WE SHOULD NOT BE RECEIVING THIS SIGNAL\n");
+
+ if (::Step == 5)
+ {
+ disconnect (s, SIGNAL (fired ()), s->d, SLOT (received ()));
+
+ connect (&RandomSender, SIGNAL (fired ()), s->d, SLOT (received ()));
+ }
+
+ TRACE (stepCopy, "ends Disconnector::received()");
+}
+
+
+Sender::Sender (Receiver *r, Disconnector *d)
+ : QObject ()
+{
+ this->r = r; this->d = d;
+ if (r)
+ connect (this, SIGNAL (fired ()), r, SLOT (received ()));
+ if (d)
+ connect (this, SIGNAL (fired ()), d, SLOT (received ()));
+};
+
+void Sender::fire ()
+{
+ ::Step++;
+ const int stepCopy = ::Step;
+ TRACE (stepCopy, "Sender::fire()");
+ if (::Step != 1 && ::Step != 3)
+ qFatal("%s: Incorrect Step: %d (should be 1 or 3)", Q_FUNC_INFO, ::Step);
+
+ emit fired ();
+ TRACE (stepCopy, "ends Sender::fire()");
+}
+
+
+int main (int argc, char *argv [])
+{
+ QCoreApplication app (argc, argv);
+
+ Receiver r;
+ Disconnector d;
+ Sender s (&r, &d);
+
+ r.s = &s;
+ d.s = &s;
+
+
+ ::Step = 0;
+ s.fire ();
+ return 0;
+}
+
+
diff --git a/tests/auto/corelib/kernel/qobject/signalbug.h b/tests/auto/corelib/kernel/qobject/signalbug.h
new file mode 100644
index 0000000000..1d332239b3
--- /dev/null
+++ b/tests/auto/corelib/kernel/qobject/signalbug.h
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SIGNAL_BUG_H
+#define SIGNAL_BUG_H
+
+
+#include <QObject>
+
+
+class Sender;
+
+
+class Receiver : public QObject
+{
+Q_OBJECT
+
+public:
+ Receiver ();
+ virtual ~Receiver () {}
+
+protected slots:
+ void received ();
+
+public:
+ Sender *s;
+};
+
+
+class Disconnector : public QObject
+{
+Q_OBJECT
+
+public:
+ Disconnector ();
+ virtual ~Disconnector () {}
+
+protected slots:
+ void received ();
+
+public:
+ Sender *s;
+};
+
+
+class Sender : public QObject
+{
+Q_OBJECT
+
+public:
+ Sender (Receiver *r, Disconnector *d);
+ virtual ~Sender () {}
+
+ void fire ();
+
+signals:
+ void fired ();
+
+public:
+ Receiver *r;
+ Disconnector *d;
+};
+
+
+#endif // SIGNAL_BUG_H
diff --git a/tests/auto/corelib/kernel/qobject/signalbug.pro b/tests/auto/corelib/kernel/qobject/signalbug.pro
new file mode 100644
index 0000000000..a835264a93
--- /dev/null
+++ b/tests/auto/corelib/kernel/qobject/signalbug.pro
@@ -0,0 +1,19 @@
+######################################################################
+# Automatically generated by qmake (2.01a) Tue Aug 15 13:45:41 2006
+######################################################################
+
+TEMPLATE = app
+TARGET =
+DEPENDPATH += .
+INCLUDEPATH += .
+CONFIG -= app_bundle debug_and_release
+DESTDIR=.
+QT -= gui
+wince*: {
+ LIBS += coredll.lib
+}
+# Input
+HEADERS += signalbug.h
+SOURCES += signalbug.cpp
+
+
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
new file mode 100644
index 0000000000..faab1f5532
--- /dev/null
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
@@ -0,0 +1,4065 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+
+#include <qpointer.h>
+#include <qtimer.h>
+#include <qregexp.h>
+#include <qmetaobject.h>
+#include <qvariant.h>
+
+#include <QTcpServer>
+#include <QTcpSocket>
+#include <QThread>
+#include <QMutex>
+#include <QWaitCondition>
+#include <QProcess>
+
+#include "qobject.h"
+#ifdef QT_BUILD_INTERNAL
+#include <private/qobject_p.h>
+#endif
+
+
+#include <math.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QObject : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QObject();
+ virtual ~tst_QObject();
+
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void disconnect();
+ void connectByName();
+ void connectSignalsToSignalsWithDefaultArguments();
+ void receivers();
+ void normalize();
+ void qobject_castTemplate();
+ void findChildren();
+ void connectDisconnectNotify_data();
+ void connectDisconnectNotify();
+ void emitInDefinedOrder();
+ void customTypes();
+ void streamCustomTypes();
+ void metamethod();
+ void namespaces();
+ void threadSignalEmissionCrash();
+ void thread();
+ void thread0();
+ void moveToThread();
+ void sender();
+ void declareInterface();
+ void qpointerResetBeforeDestroyedSignal();
+ void testUserData();
+ void childDeletesItsSibling();
+ void dynamicProperties();
+ void floatProperty();
+ void qrealProperty();
+ void property();
+ void recursiveSignalEmission();
+ void blockingQueuedConnection();
+ void compatibilityChildInsertedEvents();
+ void installEventFilter();
+ void deleteSelfInSlot();
+ void disconnectSelfInSlotAndDeleteAfterEmit();
+ void dumpObjectInfo();
+ void connectToSender();
+ void qobjectConstCast();
+ void uniqConnection();
+ void interfaceIid();
+ void deleteQObjectWhenDeletingEvent();
+ void overloads();
+ void isSignalConnected();
+ void qMetaObjectConnect();
+ void qMetaObjectDisconnectOne();
+ void sameName();
+ void connectByMetaMethods();
+ void connectByMetaMethodSlotInsteadOfSignal();
+ void connectConstructorByMetaMethod();
+ void disconnectByMetaMethod();
+ void disconnectNotSignalMetaMethod();
+ void autoConnectionBehavior();
+ void baseDestroyed();
+protected:
+};
+
+tst_QObject::tst_QObject()
+{
+
+}
+
+tst_QObject::~tst_QObject()
+{
+
+}
+
+void tst_QObject::initTestCase()
+{
+}
+
+void tst_QObject::cleanupTestCase()
+{
+}
+
+void tst_QObject::init()
+{
+}
+
+void tst_QObject::cleanup()
+{
+}
+
+class SenderObject : public QObject
+{
+ Q_OBJECT
+
+public:
+ SenderObject() : aPublicSlotCalled(0), recursionCount(0) {}
+
+ void emitSignal1AfterRecursion()
+ {
+ if (recursionCount++ < 100)
+ emitSignal1AfterRecursion();
+ else
+ emitSignal1();
+ }
+
+ void emitSignal1() { emit signal1(); }
+ void emitSignal2() { emit signal2(); }
+ void emitSignal3() { emit signal3(); }
+ void emitSignal4() { emit signal4(); }
+
+signals:
+ void signal1();
+ void signal2();
+ void signal3();
+ void signal4();
+ QT_MOC_COMPAT void signal5();
+
+public slots:
+ void aPublicSlot() { aPublicSlotCalled++; }
+
+public:
+ Q_INVOKABLE void invoke1(){}
+ Q_SCRIPTABLE void sinvoke1(){}
+ int aPublicSlotCalled;
+protected:
+ Q_INVOKABLE QT_MOC_COMPAT void invoke2(){}
+ Q_INVOKABLE QT_MOC_COMPAT void invoke2(int){}
+ Q_SCRIPTABLE QT_MOC_COMPAT void sinvoke2(){}
+private:
+ Q_INVOKABLE void invoke3(int hinz = 0, int kunz = 0){Q_UNUSED(hinz) Q_UNUSED(kunz)}
+ Q_SCRIPTABLE void sinvoke3(){}
+
+ int recursionCount;
+};
+
+class ReceiverObject : public QObject
+{
+ Q_OBJECT
+
+public:
+ ReceiverObject() : sequence_slot1( 0 ),
+ sequence_slot2( 0 ),
+ sequence_slot3( 0 ),
+ sequence_slot4( 0 ) {}
+
+ void reset() {
+ sequence_slot4 = 0;
+ sequence_slot3 = 0;
+ sequence_slot2 = 0;
+ sequence_slot1 = 0;
+ count_slot1 = 0;
+ count_slot2 = 0;
+ count_slot3 = 0;
+ count_slot4 = 0;
+ }
+
+ int sequence_slot1;
+ int sequence_slot2;
+ int sequence_slot3;
+ int sequence_slot4;
+ int count_slot1;
+ int count_slot2;
+ int count_slot3;
+ int count_slot4;
+
+ bool called(int slot) {
+ switch (slot) {
+ case 1: return sequence_slot1;
+ case 2: return sequence_slot2;
+ case 3: return sequence_slot3;
+ case 4: return sequence_slot4;
+ default: return false;
+ }
+ }
+
+ static int sequence;
+
+public slots:
+ void slot1() { sequence_slot1 = ++sequence; count_slot1++; }
+ void slot2() { sequence_slot2 = ++sequence; count_slot2++; }
+ void slot3() { sequence_slot3 = ++sequence; count_slot3++; }
+ void slot4() { sequence_slot4 = ++sequence; count_slot4++; }
+
+};
+
+int ReceiverObject::sequence = 0;
+
+void tst_QObject::disconnect()
+{
+ SenderObject *s = new SenderObject;
+ ReceiverObject *r1 = new ReceiverObject;
+ ReceiverObject *r2 = new ReceiverObject;
+
+ connect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
+
+ connect( s, SIGNAL( signal2() ), r1, SLOT( slot2() ) );
+ connect( s, SIGNAL( signal3() ), r1, SLOT( slot3() ) );
+ connect( s, SIGNAL( signal4() ), r1, SLOT( slot4() ) );
+
+ s->emitSignal1();
+ s->emitSignal2();
+ s->emitSignal3();
+ s->emitSignal4();
+
+ QCOMPARE( r1->called(1), TRUE );
+ QCOMPARE( r1->called(2), TRUE );
+ QCOMPARE( r1->called(3), TRUE );
+ QCOMPARE( r1->called(4), TRUE );
+ r1->reset();
+
+ // usual disconnect with all parameters given
+ bool ret = QObject::disconnect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
+
+ s->emitSignal1();
+
+ QCOMPARE( r1->called(1), FALSE );
+ r1->reset();
+
+ QCOMPARE( ret, TRUE );
+ ret = QObject::disconnect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
+ QCOMPARE( ret, FALSE );
+
+ // disconnect all signals from s from all slots from r1
+ QObject::disconnect( s, 0, r1, 0 );
+
+ s->emitSignal2();
+ s->emitSignal3();
+ s->emitSignal4();
+
+ QCOMPARE( r1->called(2), FALSE );
+ QCOMPARE( r1->called(3), FALSE );
+ QCOMPARE( r1->called(4), FALSE );
+ r1->reset();
+
+ connect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
+ connect( s, SIGNAL( signal1() ), r1, SLOT( slot2() ) );
+ connect( s, SIGNAL( signal1() ), r1, SLOT( slot3() ) );
+ connect( s, SIGNAL( signal2() ), r1, SLOT( slot4() ) );
+
+ // disconnect s's signal1() from all slots of r1
+ QObject::disconnect( s, SIGNAL( signal1() ), r1, 0 );
+
+ s->emitSignal1();
+ s->emitSignal2();
+
+ QCOMPARE( r1->called(1), FALSE );
+ QCOMPARE( r1->called(2), FALSE );
+ QCOMPARE( r1->called(3), FALSE );
+ QCOMPARE( r1->called(4), TRUE );
+ r1->reset();
+ // make sure all is disconnected again
+ QObject::disconnect( s, 0, r1, 0 );
+
+ connect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) );
+ connect( s, SIGNAL( signal1() ), r2, SLOT( slot1() ) );
+ connect( s, SIGNAL( signal2() ), r1, SLOT( slot2() ) );
+ connect( s, SIGNAL( signal2() ), r2, SLOT( slot2() ) );
+ connect( s, SIGNAL( signal3() ), r1, SLOT( slot3() ) );
+ connect( s, SIGNAL( signal3() ), r2, SLOT( slot3() ) );
+
+ // disconnect signal1() from all receivers
+ QObject::disconnect( s, SIGNAL( signal1() ), 0, 0 );
+ s->emitSignal1();
+ s->emitSignal2();
+ s->emitSignal3();
+
+ QCOMPARE( r1->called(1), FALSE );
+ QCOMPARE( r2->called(1), FALSE );
+ QCOMPARE( r1->called(2), TRUE );
+ QCOMPARE( r2->called(2), TRUE );
+ QCOMPARE( r1->called(2), TRUE );
+ QCOMPARE( r2->called(2), TRUE );
+
+ r1->reset();
+ r2->reset();
+
+ // disconnect all signals of s from all receivers
+ QObject::disconnect( s, 0, 0, 0 );
+
+ QCOMPARE( r1->called(2), FALSE );
+ QCOMPARE( r2->called(2), FALSE );
+ QCOMPARE( r1->called(2), FALSE );
+ QCOMPARE( r2->called(2), FALSE );
+
+ delete r2;
+ delete r1;
+ delete s;
+}
+
+class AutoConnectSender : public QObject
+{
+ Q_OBJECT
+
+public:
+ AutoConnectSender(QObject *parent)
+ : QObject(parent)
+ {}
+
+ void emitSignalNoParams() { emit signalNoParams(); }
+ void emitSignalWithParams(int i) { emit signalWithParams(i); }
+ void emitSignalWithParams(int i, QString string) { emit signalWithParams(i, string); }
+ void emitSignalManyParams(int i1, int i2, int i3, QString string, bool onoff) { emit signalManyParams(i1, i2, i3, string, onoff); }
+ void emitSignalManyParams2(int i1, int i2, int i3, QString string, bool onoff) { emit signalManyParams2(i1, i2, i3, string, onoff); }
+ void emitSignalLoopBack() { emit signalLoopBack(); }
+
+signals:
+ void signalNoParams();
+ void signalWithParams(int i);
+ void signalWithParams(int i, QString string);
+ void signalManyParams(int i1, int i2, int i3, QString string, bool onoff);
+ void signalManyParams(int i1, int i2, int i3, QString string, bool onoff, bool);
+ void signalManyParams2(int i1, int i2, int i3, QString string, bool onoff);
+ void signalLoopBack();
+};
+
+class AutoConnectReceiver : public QObject
+{
+ Q_OBJECT
+
+public:
+ AutoConnectReceiver()
+ {
+ reset();
+
+ connect(this, SIGNAL(on_Sender_signalLoopBack()), this, SLOT(slotLoopBack()));
+ }
+
+ void reset() {
+ called_slot10 = 0;
+ called_slot9 = 0;
+ called_slot8 = 0;
+ called_slot7 = 0;
+ called_slot6 = 0;
+ called_slot5 = 0;
+ called_slot4 = 0;
+ called_slot3 = 0;
+ called_slot2 = 0;
+ called_slot1 = 0;
+ }
+
+ int called_slot1;
+ int called_slot2;
+ int called_slot3;
+ int called_slot4;
+ int called_slot5;
+ int called_slot6;
+ int called_slot7;
+ int called_slot8;
+ int called_slot9;
+ int called_slot10;
+
+ bool called(int slot) {
+ switch (slot) {
+ case 1: return called_slot1;
+ case 2: return called_slot2;
+ case 3: return called_slot3;
+ case 4: return called_slot4;
+ case 5: return called_slot5;
+ case 6: return called_slot6;
+ case 7: return called_slot7;
+ case 8: return called_slot8;
+ case 9: return called_slot9;
+ case 10: return called_slot10;
+ default: return false;
+ }
+ }
+
+public slots:
+ void on_Sender_signalNoParams() { ++called_slot1; }
+ void on_Sender_signalWithParams(int i = 0) { ++called_slot2; Q_UNUSED(i); }
+ void on_Sender_signalWithParams(int i, QString string) { ++called_slot3; Q_UNUSED(i);Q_UNUSED(string); }
+ void on_Sender_signalManyParams() { ++called_slot4; }
+ void on_Sender_signalManyParams(int i1, int i2, int i3, QString string, bool onoff) { ++called_slot5; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); }
+ void on_Sender_signalManyParams(int i1, int i2, int i3, QString string, bool onoff, bool dummy)
+ { ++called_slot6; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); Q_UNUSED(dummy);}
+ void on_Sender_signalManyParams2(int i1, int i2, int i3, QString string, bool onoff)
+ { ++called_slot7; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); }
+ void slotLoopBack() { ++called_slot8; }
+
+protected slots:
+ void o() { ++called_slot9; }
+ void on() { ++called_slot10; }
+
+signals:
+ void on_Sender_signalLoopBack();
+};
+
+void tst_QObject::connectByName()
+{
+ AutoConnectReceiver receiver;
+ AutoConnectSender sender(&receiver);
+ sender.setObjectName("Sender");
+
+ QMetaObject::connectSlotsByName(&receiver);
+
+ sender.emitSignalNoParams();
+ QCOMPARE(receiver.called(1), true);
+ QCOMPARE(receiver.called(2), false);
+ QCOMPARE(receiver.called(3), false);
+ QCOMPARE(receiver.called(4), false);
+ QCOMPARE(receiver.called(5), false);
+ QCOMPARE(receiver.called(6), false);
+ QCOMPARE(receiver.called(7), false);
+ QCOMPARE(receiver.called(8), false);
+ QCOMPARE(receiver.called(9), false);
+ QCOMPARE(receiver.called(10), false);
+ receiver.reset();
+
+ sender.emitSignalWithParams(0);
+ QCOMPARE(receiver.called(1), false);
+ QCOMPARE(receiver.called(2), true);
+ QCOMPARE(receiver.called(3), false);
+ QCOMPARE(receiver.called(4), false);
+ QCOMPARE(receiver.called(5), false);
+ QCOMPARE(receiver.called(6), false);
+ QCOMPARE(receiver.called(7), false);
+ QCOMPARE(receiver.called(8), false);
+ QCOMPARE(receiver.called(9), false);
+ QCOMPARE(receiver.called(10), false);
+ receiver.reset();
+
+ sender.emitSignalWithParams(0, "string");
+ QCOMPARE(receiver.called(1), false);
+ QCOMPARE(receiver.called(2), false);
+ QCOMPARE(receiver.called(3), true);
+ QCOMPARE(receiver.called(4), false);
+ QCOMPARE(receiver.called(5), false);
+ QCOMPARE(receiver.called(6), false);
+ QCOMPARE(receiver.called(7), false);
+ QCOMPARE(receiver.called(8), false);
+ QCOMPARE(receiver.called(9), false);
+ QCOMPARE(receiver.called(10), false);
+ receiver.reset();
+
+ sender.emitSignalManyParams(1, 2, 3, "string", true);
+ QCOMPARE(receiver.called(1), false);
+ QCOMPARE(receiver.called(2), false);
+ QCOMPARE(receiver.called(3), false);
+ QCOMPARE(receiver.called(4), true);
+ QCOMPARE(receiver.called(5), true);
+ QCOMPARE(receiver.called(6), false);
+ QCOMPARE(receiver.called(7), false);
+ QCOMPARE(receiver.called(8), false);
+ QCOMPARE(receiver.called(9), false);
+ QCOMPARE(receiver.called(10), false);
+ receiver.reset();
+
+ sender.emitSignalManyParams2(1, 2, 3, "string", true);
+ QCOMPARE(receiver.called(1), false);
+ QCOMPARE(receiver.called(2), false);
+ QCOMPARE(receiver.called(3), false);
+ QCOMPARE(receiver.called(4), false);
+ QCOMPARE(receiver.called(5), false);
+ QCOMPARE(receiver.called(6), false);
+ QCOMPARE(receiver.called(7), true);
+ QCOMPARE(receiver.called(8), false);
+ QCOMPARE(receiver.called(9), false);
+ QCOMPARE(receiver.called(10), false);
+ receiver.reset();
+
+ sender.emitSignalLoopBack();
+ QCOMPARE(receiver.called(1), false);
+ QCOMPARE(receiver.called(2), false);
+ QCOMPARE(receiver.called(3), false);
+ QCOMPARE(receiver.called(4), false);
+ QCOMPARE(receiver.called(5), false);
+ QCOMPARE(receiver.called(6), false);
+ QCOMPARE(receiver.called(7), false);
+ QCOMPARE(receiver.called(8), true);
+ QCOMPARE(receiver.called(9), false);
+ QCOMPARE(receiver.called(10), false);
+ receiver.reset();
+}
+
+void tst_QObject::qobject_castTemplate()
+{
+ QObject *o = 0;
+ QVERIFY( !::qobject_cast<QObject*>(o) );
+
+ o = new SenderObject;
+ QVERIFY( ::qobject_cast<SenderObject*>(o) );
+ QVERIFY( ::qobject_cast<QObject*>(o) );
+ QVERIFY( !::qobject_cast<ReceiverObject*>(o) );
+ delete o;
+}
+
+void tst_QObject::findChildren()
+{
+ QObject o;
+ QObject o1(&o);
+ QObject o2(&o);
+ QObject o11(&o1);
+ QObject o12(&o1);
+ QObject o111(&o11);
+ QObject unnamed(&o);
+ QTimer t1(&o);
+ QTimer t121(&o12);
+ QTimer emptyname(&o);
+
+ o.setObjectName("o");
+ o1.setObjectName("o1");
+ o2.setObjectName("o2");
+ o11.setObjectName("o11");
+ o12.setObjectName("o12");
+ o111.setObjectName("o111");
+ t1.setObjectName("t1");
+ t121.setObjectName("t121");
+ emptyname.setObjectName("");
+
+ QObject *op = 0;
+
+ op = qFindChild<QObject*>(&o, "o1");
+ QCOMPARE(op, &o1);
+ op = qFindChild<QObject*>(&o, "o2");
+ QCOMPARE(op, &o2);
+ op = qFindChild<QObject*>(&o, "o11");
+ QCOMPARE(op, &o11);
+ op = qFindChild<QObject*>(&o, "o12");
+ QCOMPARE(op, &o12);
+ op = qFindChild<QObject*>(&o, "o111");
+ QCOMPARE(op, &o111);
+ op = qFindChild<QObject*>(&o, "t1");
+ QCOMPARE(op, static_cast<QObject *>(&t1));
+ op = qFindChild<QObject*>(&o, "t121");
+ QCOMPARE(op, static_cast<QObject *>(&t121));
+ op = qFindChild<QTimer*>(&o, "t1");
+ QCOMPARE(op, static_cast<QObject *>(&t1));
+ op = qFindChild<QTimer*>(&o, "t121");
+ QCOMPARE(op, static_cast<QObject *>(&t121));
+ op = qFindChild<QTimer*>(&o, "o12");
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = qFindChild<QObject*>(&o, "o");
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = qFindChild<QObject*>(&o, "harry");
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = qFindChild<QObject*>(&o, "o1");
+ QCOMPARE(op, &o1);
+
+ QList<QObject*> l;
+ QList<QTimer*> tl;
+
+ l = qFindChildren<QObject*>(&o, "o1");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o1);
+ l = qFindChildren<QObject*>(&o, "o2");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o2);
+ l = qFindChildren<QObject*>(&o, "o11");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o11);
+ l = qFindChildren<QObject*>(&o, "o12");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o12);
+ l = qFindChildren<QObject*>(&o, "o111");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o111);
+ l = qFindChildren<QObject*>(&o, "t1");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), static_cast<QObject *>(&t1));
+ l = qFindChildren<QObject*>(&o, "t121");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), static_cast<QObject *>(&t121));
+ tl = qFindChildren<QTimer*>(&o, "t1");
+ QCOMPARE(tl.size(), 1);
+ QCOMPARE(tl.at(0), &t1);
+ tl = qFindChildren<QTimer*>(&o, "t121");
+ QCOMPARE(tl.size(), 1);
+ QCOMPARE(tl.at(0), &t121);
+ l = qFindChildren<QObject*>(&o, "o");
+ QCOMPARE(l.size(), 0);
+ l = qFindChildren<QObject*>(&o, "harry");
+ QCOMPARE(l.size(), 0);
+ tl = qFindChildren<QTimer*>(&o, "o12");
+ QCOMPARE(tl.size(), 0);
+ l = qFindChildren<QObject*>(&o, "o1");
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o1);
+
+ l = qFindChildren<QObject*>(&o, QRegExp("o.*"));
+ QCOMPARE(l.size(), 5);
+ QVERIFY(l.contains(&o1));
+ QVERIFY(l.contains(&o2));
+ QVERIFY(l.contains(&o11));
+ QVERIFY(l.contains(&o12));
+ QVERIFY(l.contains(&o111));
+ l = qFindChildren<QObject*>(&o, QRegExp("t.*"));
+ QCOMPARE(l.size(), 2);
+ QVERIFY(l.contains(&t1));
+ QVERIFY(l.contains(&t121));
+ tl = qFindChildren<QTimer*>(&o, QRegExp(".*"));
+ QCOMPARE(tl.size(), 3);
+ QVERIFY(tl.contains(&t1));
+ QVERIFY(tl.contains(&t121));
+ tl = qFindChildren<QTimer*>(&o, QRegExp("o.*"));
+ QCOMPARE(tl.size(), 0);
+ l = qFindChildren<QObject*>(&o, QRegExp("harry"));
+ QCOMPARE(l.size(), 0);
+
+ // empty and null string check
+ op = qFindChild<QObject*>(&o);
+ QCOMPARE(op, &o1);
+ op = qFindChild<QObject*>(&o, "");
+ QCOMPARE(op, &unnamed);
+ op = qFindChild<QObject*>(&o, "unnamed");
+ QCOMPARE(op, static_cast<QObject *>(0));
+
+ l = qFindChildren<QObject*>(&o);
+ QCOMPARE(l.size(), 9);
+ l = qFindChildren<QObject*>(&o, "");
+ QCOMPARE(l.size(), 2);
+ l = qFindChildren<QObject*>(&o, "unnamed");
+ QCOMPARE(l.size(), 0);
+
+ tl = o.findChildren<QTimer *>("t1");
+ QCOMPARE(tl.size(), 1);
+ QCOMPARE(tl.at(0), &t1);
+
+ // Find direct child/children
+
+ op = o.findChild<QObject*>("o1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, &o1);
+ op = o.findChild<QObject*>("o2", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, &o2);
+ op = o.findChild<QObject*>("o11", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QObject*>("o12", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QObject*>("o111", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QObject*>("t1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(&t1));
+ op = o.findChild<QObject*>("t121", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QTimer*>("t1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(&t1));
+ op = o.findChild<QTimer*>("t121", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QTimer*>("o12", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QObject*>("o", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QObject*>("harry", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+ op = o.findChild<QObject*>("o1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, &o1);
+
+ l = o.findChildren<QObject*>("o1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o1);
+ l = o.findChildren<QObject*>("o2", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o2);
+ l = o.findChildren<QObject*>("o11", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+ l = o.findChildren<QObject*>("o12", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+ l = o.findChildren<QObject*>("o111", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+ l = o.findChildren<QObject*>("t1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), static_cast<QObject *>(&t1));
+ l = o.findChildren<QObject*>("t121", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+ tl = o.findChildren<QTimer*>("t1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(tl.size(), 1);
+ QCOMPARE(tl.at(0), &t1);
+ tl = o.findChildren<QTimer*>("t121", Qt::FindDirectChildrenOnly);
+ QCOMPARE(tl.size(), 0);
+ l = o.findChildren<QObject*>("o", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+ l = o.findChildren<QObject*>("harry", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+ tl = o.findChildren<QTimer*>("o12", Qt::FindDirectChildrenOnly);
+ QCOMPARE(tl.size(), 0);
+ l = o.findChildren<QObject*>("o1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 1);
+ QCOMPARE(l.at(0), &o1);
+
+ l = o.findChildren<QObject*>(QRegExp("o.*"), Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 2);
+ QVERIFY(l.contains(&o1));
+ QVERIFY(l.contains(&o2));
+ l = o.findChildren<QObject*>(QRegExp("t.*"), Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 1);
+ QVERIFY(l.contains(&t1));
+ tl = o.findChildren<QTimer*>(QRegExp(".*"), Qt::FindDirectChildrenOnly);
+ QCOMPARE(tl.size(), 2);
+ QVERIFY(tl.contains(&t1));
+ tl = o.findChildren<QTimer*>(QRegExp("o.*"), Qt::FindDirectChildrenOnly);
+ QCOMPARE(tl.size(), 0);
+ l = o.findChildren<QObject*>(QRegExp("harry"), Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+
+ // empty and null string check
+ op = o.findChild<QObject*>(QString(), Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, &o1);
+ op = o.findChild<QObject*>("", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, &unnamed);
+ op = o.findChild<QObject*>("unnamed", Qt::FindDirectChildrenOnly);
+ QCOMPARE(op, static_cast<QObject *>(0));
+
+ l = o.findChildren<QObject*>(QString(), Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 5);
+ l = o.findChildren<QObject*>("", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 2);
+ l = o.findChildren<QObject*>("unnamed", Qt::FindDirectChildrenOnly);
+ QCOMPARE(l.size(), 0);
+
+ tl = o.findChildren<QTimer *>("t1", Qt::FindDirectChildrenOnly);
+ QCOMPARE(tl.size(), 1);
+ QCOMPARE(tl.at(0), &t1);
+}
+
+
+class NotifyObject : public SenderObject, public ReceiverObject
+{
+public:
+ NotifyObject() : SenderObject(), ReceiverObject()
+ {}
+
+ QString org_signal;
+ QString nw_signal;
+
+protected:
+ void connectNotify( const char *signal )
+ {
+ org_signal = signal;
+ nw_signal = QMetaObject::normalizedSignature(signal);
+ };
+ void disconnectNotify( const char *signal )
+ {
+ org_signal = signal;
+ nw_signal = QMetaObject::normalizedSignature(signal);
+ };
+};
+
+void tst_QObject::connectDisconnectNotify_data()
+{
+ QTest::addColumn<QString>("a_signal");
+ QTest::addColumn<QString>("a_slot");
+
+ QTest::newRow("combo1") << SIGNAL( signal1() ) << SLOT( slot1() );
+ QTest::newRow("combo2") << SIGNAL( signal2(void) ) << SLOT( slot2( ) );
+ QTest::newRow("combo3") << SIGNAL( signal3( ) ) << SLOT( slot3(void) );
+ QTest::newRow("combo4") << SIGNAL( signal4( void ) )<< SLOT( slot4( void ) );
+}
+
+void tst_QObject::connectDisconnectNotify()
+{
+ NotifyObject *s = new NotifyObject;
+ NotifyObject *r = new NotifyObject;
+
+ QFETCH(QString, a_signal);
+ QFETCH(QString, a_slot);
+
+ // Test connectNotify
+ connect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() );
+ QCOMPARE( s->org_signal, s->nw_signal );
+ QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
+
+ // Test disconnectNotify
+ QObject::disconnect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() );
+ QCOMPARE( s->org_signal, s->nw_signal );
+ QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
+
+ // Reconnect
+ connect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() );
+ // Test disconnectNotify for a complete disconnect
+ ((SenderObject*)s)->disconnect((ReceiverObject*)r);
+
+ // Obtaining meta methods
+ int signalIndx = ((SenderObject*)s)->metaObject()->indexOfSignal(
+ QMetaObject::normalizedSignature(a_signal.toLatin1().constData()+1).constData());
+ int methodIndx = ((ReceiverObject*)r)->metaObject()->indexOfMethod(
+ QMetaObject::normalizedSignature(a_slot.toLatin1().constData()+1).constData());
+ QMetaMethod signal = ((SenderObject*)s)->metaObject()->method(signalIndx);
+ QMetaMethod method = ((ReceiverObject*)r)->metaObject()->method(methodIndx);
+
+ // Test connectNotify when connecting by QMetaMethod
+ connect( (SenderObject*)s, signal, (ReceiverObject*)r, method );
+ QCOMPARE( s->org_signal, s->nw_signal );
+ QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
+
+ // Test disconnectNotify when disconnecting by QMetaMethod
+ QObject::disconnect( (SenderObject*)s, signal, (ReceiverObject*)r, method );
+ QCOMPARE( s->org_signal, s->nw_signal );
+ QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
+
+ delete s;
+ delete r;
+}
+
+class SequenceObject : public ReceiverObject
+{
+ Q_OBJECT
+
+public:
+ QObject *next;
+ SequenceObject() : next(0) { }
+
+public slots:
+ void slot1_disconnectThis()
+ {
+ slot1();
+ disconnect(sender(), SIGNAL(signal1()), this, SLOT(slot1_disconnectThis()));
+ }
+
+ void slot2_reconnectThis()
+ {
+ slot2();
+
+ const QObject *s = sender();
+ disconnect(s, SIGNAL(signal1()), this, SLOT(slot2_reconnectThis()));
+ connect(s, SIGNAL(signal1()), this, SLOT(slot2_reconnectThis()));
+ }
+
+ void slot1_disconnectNext()
+ {
+ slot1();
+ disconnect(sender(), SIGNAL(signal1()), next, SLOT(slot1()));
+ }
+
+ void slot2_reconnectNext()
+ {
+ slot2();
+
+ // modify the connection list in 'this'
+ disconnect(sender(), SIGNAL(signal1()), next, SLOT(slot2()));
+ connect(sender(), SIGNAL(signal1()), next, SLOT(slot2()));
+
+ // modify the sender list in 'this'
+ connect(next, SIGNAL(destroyed()), this, SLOT(deleteLater()));
+ connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(deleteLater()));
+ disconnect(next, SIGNAL(destroyed()), this, SLOT(deleteLater()));
+ disconnect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(deleteLater()));
+ }
+
+ void slot1_deleteNext()
+ {
+ slot1();
+ delete next;
+ }
+
+ void slot2_deleteSender()
+ {
+ slot2();
+ delete sender();
+ }
+};
+
+void tst_QObject::emitInDefinedOrder()
+{
+ SenderObject sender;
+ ReceiverObject receiver1, receiver2, receiver3, receiver4;
+
+ connect(&sender, SIGNAL(signal1()), &receiver1, SLOT(slot1()));
+ connect(&sender, SIGNAL(signal1()), &receiver2, SLOT(slot1()));
+ connect(&sender, SIGNAL(signal1()), &receiver3, SLOT(slot1()));
+ connect(&sender, SIGNAL(signal1()), &receiver4, SLOT(slot1()));
+ connect(&sender, SIGNAL(signal1()), &receiver1, SLOT(slot2()));
+ connect(&sender, SIGNAL(signal1()), &receiver2, SLOT(slot2()));
+ connect(&sender, SIGNAL(signal1()), &receiver3, SLOT(slot2()));
+ connect(&sender, SIGNAL(signal1()), &receiver4, SLOT(slot2()));
+
+ int sequence;
+ ReceiverObject::sequence = sequence = 0;
+ sender.emitSignal1();
+ QCOMPARE(receiver1.sequence_slot1, ++sequence);
+ QCOMPARE(receiver2.sequence_slot1, ++sequence);
+ QCOMPARE(receiver3.sequence_slot1, ++sequence);
+ QCOMPARE(receiver4.sequence_slot1, ++sequence);
+ QCOMPARE(receiver1.sequence_slot2, ++sequence);
+ QCOMPARE(receiver2.sequence_slot2, ++sequence);
+ QCOMPARE(receiver3.sequence_slot2, ++sequence);
+ QCOMPARE(receiver4.sequence_slot2, ++sequence);
+
+ QObject::disconnect(&sender, SIGNAL(signal1()), &receiver2, SLOT(slot1()));
+ connect(&sender, SIGNAL(signal1()), &receiver2, SLOT(slot1()));
+
+ ReceiverObject::sequence = sequence = 0;
+ sender.emitSignal1();
+ QCOMPARE(receiver1.sequence_slot1, ++sequence);
+ QCOMPARE(receiver3.sequence_slot1, ++sequence);
+ QCOMPARE(receiver4.sequence_slot1, ++sequence);
+ QCOMPARE(receiver1.sequence_slot2, ++sequence);
+ QCOMPARE(receiver2.sequence_slot2, ++sequence);
+ QCOMPARE(receiver3.sequence_slot2, ++sequence);
+ QCOMPARE(receiver4.sequence_slot2, ++sequence);
+ QCOMPARE(receiver2.sequence_slot1, ++sequence);
+
+ QObject::disconnect(&sender, SIGNAL(signal1()), &receiver1, SLOT(slot1()));
+ connect(&sender, SIGNAL(signal1()), &receiver1, SLOT(slot1()));
+
+ ReceiverObject::sequence = sequence = 0;
+ sender.emitSignal1();
+ QCOMPARE(receiver3.sequence_slot1, ++sequence);
+ QCOMPARE(receiver4.sequence_slot1, ++sequence);
+ QCOMPARE(receiver1.sequence_slot2, ++sequence);
+ QCOMPARE(receiver2.sequence_slot2, ++sequence);
+ QCOMPARE(receiver3.sequence_slot2, ++sequence);
+ QCOMPARE(receiver4.sequence_slot2, ++sequence);
+ QCOMPARE(receiver2.sequence_slot1, ++sequence);
+ QCOMPARE(receiver1.sequence_slot1, ++sequence);
+
+ // ensure emission order even if the connections change during emission
+ SenderObject *sender2 = new SenderObject;
+ SequenceObject seq1, seq2, *seq3 = new SequenceObject, seq4;
+ seq1.next = &seq2;
+ seq2.next = seq3;
+ seq3->next = &seq4;
+
+ // try 1
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot1_disconnectThis()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot1_disconnectNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot2_reconnectThis()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot2_reconnectNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot2()));
+
+ SequenceObject::sequence = sequence = 0;
+ sender2->emitSignal1();
+ QCOMPARE(seq1.called(1), TRUE);
+ QCOMPARE(seq2.called(1), TRUE);
+ QCOMPARE(seq3->called(1), FALSE);
+ QCOMPARE(seq4.called(1), TRUE);
+ QCOMPARE(seq1.called(2), TRUE);
+ QCOMPARE(seq2.called(2), TRUE);
+ QCOMPARE(seq3->called(2), FALSE);
+ QCOMPARE(seq4.called(2), TRUE);
+ QCOMPARE(seq1.sequence_slot1, ++sequence);
+ QCOMPARE(seq2.sequence_slot1, ++sequence);
+ QCOMPARE(seq4.sequence_slot1, ++sequence);
+ QCOMPARE(seq1.sequence_slot2, ++sequence);
+ QCOMPARE(seq2.sequence_slot2, ++sequence);
+ QCOMPARE(seq4.sequence_slot2, ++sequence);
+
+ QObject::disconnect(sender2, 0, &seq1, 0);
+ QObject::disconnect(sender2, 0, &seq2, 0);
+ QObject::disconnect(sender2, 0, seq3, 0);
+ QObject::disconnect(sender2, 0, &seq4, 0);
+ seq1.reset();
+ seq2.reset();
+ seq3->reset();
+ seq4.reset();
+
+ // try 2
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot2_reconnectThis()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot2_reconnectNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot1_disconnectThis()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot1_disconnectNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot1()));
+
+ SequenceObject::sequence = sequence = 0;
+ sender2->emitSignal1();
+ QCOMPARE(seq1.called(2), TRUE);
+ QCOMPARE(seq2.called(2), TRUE);
+ QCOMPARE(seq3->called(2), FALSE);
+ QCOMPARE(seq4.called(2), TRUE);
+ QCOMPARE(seq1.called(1), TRUE);
+ QCOMPARE(seq2.called(1), TRUE);
+ QCOMPARE(seq3->called(1), FALSE);
+ QCOMPARE(seq4.called(1), TRUE);
+ QCOMPARE(seq1.sequence_slot2, ++sequence);
+ QCOMPARE(seq2.sequence_slot2, ++sequence);
+ QCOMPARE(seq4.sequence_slot2, ++sequence);
+ QCOMPARE(seq1.sequence_slot1, ++sequence);
+ QCOMPARE(seq2.sequence_slot1, ++sequence);
+ QCOMPARE(seq4.sequence_slot1, ++sequence);
+
+ QObject::disconnect(sender2, 0, &seq1, 0);
+ QObject::disconnect(sender2, 0, &seq2, 0);
+ QObject::disconnect(sender2, 0, seq3, 0);
+ QObject::disconnect(sender2, 0, &seq4, 0);
+ seq1.reset();
+ seq2.reset();
+ seq3->reset();
+ seq4.reset();
+
+ // try 3
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot1_disconnectNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot2_reconnectNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot2()));
+
+ SequenceObject::sequence = sequence = 0;
+ sender2->emitSignal1();
+ QCOMPARE(seq1.called(1), TRUE);
+ QCOMPARE(seq2.called(1), TRUE);
+ QCOMPARE(seq3->called(1), FALSE);
+ QCOMPARE(seq4.called(1), TRUE);
+ QCOMPARE(seq1.called(2), TRUE);
+ QCOMPARE(seq2.called(2), TRUE);
+ QCOMPARE(seq3->called(2), FALSE);
+ QCOMPARE(seq4.called(2), TRUE);
+ QCOMPARE(seq1.sequence_slot1, ++sequence);
+ QCOMPARE(seq2.sequence_slot1, ++sequence);
+ QCOMPARE(seq4.sequence_slot1, ++sequence);
+ QCOMPARE(seq1.sequence_slot2, ++sequence);
+ QCOMPARE(seq2.sequence_slot2, ++sequence);
+ QCOMPARE(seq4.sequence_slot2, ++sequence);
+
+ // ensure emission order even if objects are destroyed during emission
+ QObject::disconnect(sender2, 0, &seq1, 0);
+ QObject::disconnect(sender2, 0, &seq2, 0);
+ QObject::disconnect(sender2, 0, seq3, 0);
+ QObject::disconnect(sender2, 0, &seq4, 0);
+ seq1.reset();
+ seq2.reset();
+ seq3->reset();
+ seq4.reset();
+
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot1_deleteNext()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot1()));
+ connect(sender2, SIGNAL(signal1()), &seq1, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq2, SLOT(slot2_deleteSender()));
+ connect(sender2, SIGNAL(signal1()), seq3, SLOT(slot2()));
+ connect(sender2, SIGNAL(signal1()), &seq4, SLOT(slot2()));
+
+ QPointer<SenderObject> psender = sender2;
+ QPointer<SequenceObject> pseq3 = seq3;
+
+ SequenceObject::sequence = sequence = 0;
+ sender2->emitSignal1();
+ QCOMPARE(static_cast<QObject *>(psender), static_cast<QObject *>(0));
+ QCOMPARE(static_cast<QObject *>(pseq3), static_cast<QObject *>(0));
+ QCOMPARE(seq1.called(1), TRUE);
+ QCOMPARE(seq2.called(1), TRUE);
+ QCOMPARE(seq4.called(1), TRUE);
+ QCOMPARE(seq1.called(2), TRUE);
+ QCOMPARE(seq2.called(2), TRUE);
+ QCOMPARE(seq4.called(2), FALSE);
+ QCOMPARE(seq1.sequence_slot1, ++sequence);
+ QCOMPARE(seq2.sequence_slot1, ++sequence);
+ QCOMPARE(seq4.sequence_slot1, ++sequence);
+ QCOMPARE(seq1.sequence_slot2, ++sequence);
+ QCOMPARE(seq2.sequence_slot2, ++sequence);
+
+ QPointer<SenderObject> psender3 = new SenderObject;
+ connect(psender3, SIGNAL(signal1()), psender3, SIGNAL(signal2()));
+ connect(psender3, SIGNAL(signal2()), &seq1, SLOT(slot2_deleteSender()));
+ psender3->emitSignal1();
+ QVERIFY(!psender3);
+}
+
+static int instanceCount = 0;
+
+struct CustomType
+{
+ CustomType(int l1 = 0, int l2 = 0, int l3 = 0): i1(l1), i2(l2), i3(l3)
+ { ++instanceCount; }
+ CustomType(const CustomType &other): i1(other.i1), i2(other.i2), i3(other.i3)
+ { ++instanceCount; }
+ ~CustomType() { --instanceCount; }
+
+ int i1, i2, i3;
+ int value() { return i1 + i2 + i3; }
+};
+
+Q_DECLARE_METATYPE(CustomType*)
+
+class QCustomTypeChecker: public QObject
+{
+ Q_OBJECT
+
+public:
+ QCustomTypeChecker(QObject *parent = 0): QObject(parent) {}
+ void doEmit(CustomType ct)
+ { emit signal1(ct); }
+
+public slots:
+ void slot1(CustomType ct);
+
+signals:
+ void signal1(CustomType ct);
+
+public:
+ CustomType received;
+};
+
+void QCustomTypeChecker::slot1(CustomType ct)
+{ received = ct; }
+
+
+void tst_QObject::customTypes()
+{
+ CustomType t0;
+ CustomType t1(1, 2, 3);
+ CustomType t2(2, 3, 4);
+
+ {
+ QCustomTypeChecker checker;
+ QCOMPARE(instanceCount, 4);
+
+ connect(&checker, SIGNAL(signal1(CustomType)), &checker, SLOT(slot1(CustomType)),
+ Qt::DirectConnection);
+ QCOMPARE(checker.received.value(), 0);
+ checker.doEmit(t1);
+ QCOMPARE(checker.received.value(), t1.value());
+ checker.received = t0;
+
+ int idx = qRegisterMetaType<CustomType>("CustomType");
+ QCOMPARE(QMetaType::type("CustomType"), idx);
+
+ checker.disconnect();
+ connect(&checker, SIGNAL(signal1(CustomType)), &checker, SLOT(slot1(CustomType)),
+ Qt::QueuedConnection);
+ QCOMPARE(instanceCount, 4);
+ checker.doEmit(t2);
+ QCOMPARE(instanceCount, 5);
+ QCOMPARE(checker.received.value(), t0.value());
+
+ QCoreApplication::processEvents();
+ QCOMPARE(checker.received.value(), t2.value());
+ QCOMPARE(instanceCount, 4);
+
+ QVERIFY(QMetaType::isRegistered(idx));
+ QCOMPARE(qRegisterMetaType<CustomType>("CustomType"), idx);
+ QCOMPARE(QMetaType::type("CustomType"), idx);
+ QVERIFY(QMetaType::isRegistered(idx));
+ }
+ QCOMPARE(instanceCount, 3);
+}
+
+QDataStream &operator<<(QDataStream &stream, const CustomType &ct)
+{
+ stream << ct.i1 << ct.i2 << ct.i3;
+ return stream;
+}
+
+QDataStream &operator>>(QDataStream &stream, CustomType &ct)
+{
+ stream >> ct.i1;
+ stream >> ct.i2;
+ stream >> ct.i3;
+ return stream;
+}
+
+void tst_QObject::streamCustomTypes()
+{
+ QByteArray ba;
+
+ int idx = qRegisterMetaType<CustomType>("CustomType");
+ qRegisterMetaTypeStreamOperators<CustomType>("CustomType");
+
+ {
+ CustomType t1(1, 2, 3);
+ QCOMPARE(instanceCount, 1);
+ QDataStream stream(&ba, (QIODevice::OpenMode)QIODevice::WriteOnly);
+ QMetaType::save(stream, idx, &t1);
+ }
+
+ QCOMPARE(instanceCount, 0);
+
+ {
+ CustomType t2;
+ QCOMPARE(instanceCount, 1);
+ QDataStream stream(&ba, (QIODevice::OpenMode)QIODevice::ReadOnly);
+ QMetaType::load(stream, idx, &t2);
+ QCOMPARE(instanceCount, 1);
+ QCOMPARE(t2.i1, 1);
+ QCOMPARE(t2.i2, 2);
+ QCOMPARE(t2.i3, 3);
+ }
+ QCOMPARE(instanceCount, 0);
+}
+
+typedef QString CustomString;
+
+class PropertyObject : public QObject
+{
+ Q_OBJECT
+ Q_ENUMS(Alpha Priority)
+
+ Q_PROPERTY(Alpha alpha READ alpha WRITE setAlpha)
+ Q_PROPERTY(Priority priority READ priority WRITE setPriority)
+ Q_PROPERTY(int number READ number WRITE setNumber)
+ Q_PROPERTY(QString string READ string WRITE setString)
+ Q_PROPERTY(QVariant variant READ variant WRITE setVariant)
+ Q_PROPERTY(CustomType* custom READ custom WRITE setCustom)
+ Q_PROPERTY(float myFloat READ myFloat WRITE setMyFloat)
+ Q_PROPERTY(qreal myQReal READ myQReal WRITE setMyQReal)
+ Q_PROPERTY(CustomString customString READ customString WRITE setCustomString )
+
+public:
+ enum Alpha {
+ Alpha0,
+ Alpha1,
+ Alpha2
+ };
+
+ enum Priority { High, Low, VeryHigh, VeryLow };
+
+ PropertyObject()
+ : m_alpha(Alpha0), m_priority(High), m_number(0), m_custom(0), m_float(42)
+ {}
+
+ Alpha alpha() const { return m_alpha; }
+ void setAlpha(Alpha alpha) { m_alpha = alpha; }
+
+ Priority priority() const { return m_priority; }
+ void setPriority(Priority priority) { m_priority = priority; }
+
+ int number() const { return m_number; }
+ void setNumber(int number) { m_number = number; }
+
+ QString string() const { return m_string; }
+ void setString(const QString &string) { m_string = string; }
+
+ QVariant variant() const { return m_variant; }
+ void setVariant(const QVariant &variant) { m_variant = variant; }
+
+ CustomType *custom() const { return m_custom; }
+ void setCustom(CustomType *custom) { m_custom = custom; }
+
+ void setMyFloat(float value) { m_float = value; }
+ inline float myFloat() const { return m_float; }
+
+ void setMyQReal(qreal value) { m_qreal = value; }
+ qreal myQReal() const { return m_qreal; }
+
+ CustomString customString() const { return m_customString; }
+ void setCustomString(const QString &string) { m_customString = string; }
+
+private:
+ Alpha m_alpha;
+ Priority m_priority;
+ int m_number;
+ QString m_string;
+ QVariant m_variant;
+ CustomType *m_custom;
+ float m_float;
+ qreal m_qreal;
+ CustomString m_customString;
+};
+
+Q_DECLARE_METATYPE(PropertyObject::Priority)
+
+void tst_QObject::threadSignalEmissionCrash()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ int loopCount = 100;
+#else
+ int loopCount = 1000;
+#endif
+ for (int i = 0; i < loopCount; ++i) {
+ QTcpSocket socket;
+ socket.connectToHost("localhost", 80);
+ }
+}
+
+class TestThread : public QThread
+{
+ Q_OBJECT
+public:
+ inline void run()
+ {
+ *object = new QObject;
+ *child = new QObject(*object);
+ mutex.lock();
+ cond.wakeOne();
+ cond.wait(&mutex);
+ mutex.unlock();
+ }
+
+ QObject **object, **child;
+ QMutex mutex;
+ QWaitCondition cond;
+};
+
+void tst_QObject::thread()
+{
+ QThread *currentThread = QThread::currentThread();
+ // the current thread is the same as the QApplication
+ // thread... see tst_QApplication::thread()
+
+ {
+ QObject object;
+ // thread affinity for objects with no parent should be the
+ // current thread
+ QVERIFY(object.thread() != 0);
+ QCOMPARE(object.thread(), currentThread);
+ // children inherit their parent's thread
+ QObject child(&object);
+ QCOMPARE(child.thread(), object.thread());
+ }
+
+ QObject *object = 0;
+ QObject *child = 0;
+
+ {
+ TestThread thr;
+ QVERIFY(thr.thread() != 0);
+ QCOMPARE(thr.thread(), currentThread);
+
+ thr.object = &object;
+ thr.child = &child;
+
+ thr.mutex.lock();
+ thr.start();
+ thr.cond.wait(&thr.mutex);
+
+ // thread affinity for an object with no parent should be the
+ // thread in which the object was created
+ QCOMPARE(object->thread(), (QThread *)&thr);
+ // children inherit their parent's thread
+ QCOMPARE(child->thread(), object->thread());
+
+ thr.cond.wakeOne();
+ thr.mutex.unlock();
+ thr.wait();
+
+ // even though the thread is no longer running, the affinity
+ // should not change
+ QCOMPARE(object->thread(), (QThread *)&thr);
+ QCOMPARE(child->thread(), object->thread());
+ }
+
+ // the thread has been destroyed, thread affinity should
+ // automatically reset to no thread
+ QCOMPARE(object->thread(), (QThread *)0);
+ QCOMPARE(child->thread(), object->thread());
+
+ delete object;
+}
+
+class MoveToThreadObject : public QObject
+{
+ Q_OBJECT
+public:
+ QThread *timerEventThread;
+ QThread *customEventThread;
+ QThread *slotThread;
+
+ MoveToThreadObject(QObject *parent = 0)
+ : QObject(parent), timerEventThread(0), customEventThread(0), slotThread(0)
+ { }
+
+ void customEvent(QEvent *)
+ {
+ if (customEventThread)
+ qFatal("%s: customEventThread should be null", Q_FUNC_INFO);
+ customEventThread = QThread::currentThread();
+ emit theSignal();
+ }
+
+ void timerEvent(QTimerEvent *)
+ {
+ if (timerEventThread)
+ qFatal("%s: timerEventThread should be null", Q_FUNC_INFO);
+ timerEventThread = QThread::currentThread();
+ emit theSignal();
+ }
+
+public slots:
+ void theSlot()
+ {
+ if (slotThread)
+ qFatal("%s: slotThread should be null", Q_FUNC_INFO);
+ slotThread = QThread::currentThread();
+ emit theSignal();
+ }
+
+signals:
+ void theSignal();
+};
+
+class MoveToThreadThread : public QThread
+{
+public:
+ ~MoveToThreadThread()
+ {
+ if (isRunning()) {
+ terminate();
+ wait();
+ }
+ }
+ void start()
+ {
+ QEventLoop eventLoop;
+ connect(this, SIGNAL(started()), &eventLoop, SLOT(quit()), Qt::QueuedConnection);
+ QThread::start();
+ // wait for thread to start
+ (void) eventLoop.exec();
+ }
+ void run()
+ { (void) exec(); }
+};
+
+void tst_QObject::thread0()
+{
+ QObject *object = new QObject;
+ object->moveToThread(0);
+ QObject *child = new QObject(object);
+ QCOMPARE(child->parent(), object);
+ QCOMPARE(child->thread(), (QThread *)0);
+
+#if 0
+ // We don't support moving children into a parent that has no thread
+ // affinity (yet?).
+ QObject *child2 = new QObject;
+ child2->moveToThread(0);
+ child2->setParent(object);
+ QCOMPARE(child2->parent(), object);
+ QCOMPARE(child2->thread(), (QThread *)0);
+#endif
+
+ delete object;
+}
+
+void tst_QObject::moveToThread()
+{
+ QThread *currentThread = QThread::currentThread();
+
+ {
+ QObject *object = new QObject;
+ QObject *child = new QObject(object);
+ QCOMPARE(object->thread(), currentThread);
+ QCOMPARE(child->thread(), currentThread);
+ object->moveToThread(0);
+ QCOMPARE(object->thread(), (QThread *)0);
+ QCOMPARE(child->thread(), (QThread *)0);
+ object->moveToThread(currentThread);
+ QCOMPARE(object->thread(), currentThread);
+ QCOMPARE(child->thread(), currentThread);
+ object->moveToThread(0);
+ QCOMPARE(object->thread(), (QThread *)0);
+ QCOMPARE(child->thread(), (QThread *)0);
+ // can delete an object with no thread anywhere
+ delete object;
+ }
+
+ {
+ MoveToThreadThread thread;
+ thread.start();
+
+ QObject *object = new QObject;
+ QObject *child = new QObject(object);
+ QPointer<QObject> opointer = object;
+ QPointer<QObject> cpointer = object;
+
+ QCOMPARE(object->thread(), currentThread);
+ QCOMPARE(child->thread(), currentThread);
+ object->moveToThread(&thread);
+ QCOMPARE(object->thread(), (QThread *)&thread);
+ QCOMPARE(child->thread(), (QThread *)&thread);
+
+ connect(object, SIGNAL(destroyed()), &thread, SLOT(quit()), Qt::DirectConnection);
+ QMetaObject::invokeMethod(object, "deleteLater", Qt::QueuedConnection);
+ thread.wait();
+
+ QVERIFY(opointer == 0);
+ QVERIFY(cpointer == 0);
+ }
+
+ {
+ // make sure posted events are moved with the object
+ MoveToThreadThread thread;
+ thread.start();
+
+ MoveToThreadObject *object = new MoveToThreadObject;
+ MoveToThreadObject *child = new MoveToThreadObject(object);
+
+ connect(object, SIGNAL(theSignal()), &thread, SLOT(quit()), Qt::DirectConnection);
+ QCoreApplication::postEvent(child, new QEvent(QEvent::User));
+ QCoreApplication::postEvent(object, new QEvent(QEvent::User));
+
+ QCOMPARE(object->thread(), currentThread);
+ QCOMPARE(child->thread(), currentThread);
+ object->moveToThread(&thread);
+ QCOMPARE(object->thread(), (QThread *)&thread);
+ QCOMPARE(child->thread(), (QThread *)&thread);
+
+ thread.wait();
+
+ QCOMPARE(object->customEventThread, (QThread *)&thread);
+ QCOMPARE(child->customEventThread, (QThread *)&thread);
+
+ thread.start();
+ connect(object, SIGNAL(destroyed()), &thread, SLOT(quit()), Qt::DirectConnection);
+ QMetaObject::invokeMethod(object, "deleteLater", Qt::QueuedConnection);
+ thread.wait();
+ }
+
+ {
+ // make sure timers are moved with the object
+ MoveToThreadThread thread;
+ thread.start();
+
+ MoveToThreadObject *object = new MoveToThreadObject;
+ MoveToThreadObject *child = new MoveToThreadObject(object);
+
+ connect(object, SIGNAL(theSignal()), &thread, SLOT(quit()), Qt::DirectConnection);
+
+#if defined(Q_OS_SYMBIAN)
+ // Child timer will be registered after parent timer in the new
+ // thread, and 10ms is less than symbian timer resolution, so
+ // child->timerEventThread compare after thread.wait() will
+ // usually fail unless timers are farther apart.
+ child->startTimer(100);
+ object->startTimer(150);
+#else
+ child->startTimer(90);
+ object->startTimer(100);
+#endif
+
+ QCOMPARE(object->thread(), currentThread);
+ QCOMPARE(child->thread(), currentThread);
+ object->moveToThread(&thread);
+ QCOMPARE(object->thread(), (QThread *)&thread);
+ QCOMPARE(child->thread(), (QThread *)&thread);
+
+ thread.wait();
+
+ QCOMPARE(object->timerEventThread, (QThread *)&thread);
+ QCOMPARE(child->timerEventThread, (QThread *)&thread);
+
+ thread.start();
+ connect(object, SIGNAL(destroyed()), &thread, SLOT(quit()), Qt::DirectConnection);
+ QMetaObject::invokeMethod(object, "deleteLater", Qt::QueuedConnection);
+ thread.wait();
+ }
+
+ {
+ // make sure socket notifiers are moved with the object
+ MoveToThreadThread thread;
+ thread.start();
+
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost, 0));
+ QTcpSocket *socket = new QTcpSocket;
+ MoveToThreadObject *child = new MoveToThreadObject(socket);
+ connect(socket, SIGNAL(disconnected()), child, SLOT(theSlot()), Qt::DirectConnection);
+ connect(child, SIGNAL(theSignal()), &thread, SLOT(quit()), Qt::DirectConnection);
+
+ socket->connectToHost(server.serverAddress(), server.serverPort());
+
+ QVERIFY(server.waitForNewConnection(1000));
+ QTcpSocket *serverSocket = server.nextPendingConnection();
+ QVERIFY(serverSocket);
+
+ socket->waitForConnected();
+
+ QCOMPARE(socket->thread(), currentThread);
+ socket->moveToThread(&thread);
+ QCOMPARE(socket->thread(), (QThread *)&thread);
+
+ serverSocket->close();
+
+ QVERIFY(thread.wait(10000));
+
+ QCOMPARE(child->slotThread, (QThread *)&thread);
+
+ thread.start();
+ connect(socket, SIGNAL(destroyed()), &thread, SLOT(quit()), Qt::DirectConnection);
+ QMetaObject::invokeMethod(socket, "deleteLater", Qt::QueuedConnection);
+ thread.wait();
+ }
+}
+
+
+void tst_QObject::property()
+{
+ PropertyObject object;
+ const QMetaObject *mo = object.metaObject();
+ QMetaProperty property;
+ QVERIFY(mo);
+
+ QVERIFY(mo->indexOfProperty("alpha") != -1);
+ property = mo->property(mo->indexOfProperty("alpha"));
+ QVERIFY(property.isEnumType());
+ QCOMPARE(property.typeName(), "Alpha");
+ QCOMPARE(property.type(), QVariant::Int);
+
+ QVariant var = object.property("alpha");
+ QVERIFY(!var.isNull());
+ QCOMPARE(var.toInt(), int(PropertyObject::Alpha0));
+ object.setAlpha(PropertyObject::Alpha1);
+ QCOMPARE(object.property("alpha").toInt(), int(PropertyObject::Alpha1));
+ QVERIFY(object.setProperty("alpha", PropertyObject::Alpha2));
+ QCOMPARE(object.property("alpha").toInt(), int(PropertyObject::Alpha2));
+ QVERIFY(object.setProperty("alpha", "Alpha1"));
+ QCOMPARE(object.property("alpha").toInt(), int(PropertyObject::Alpha1));
+ QVERIFY(!object.setProperty("alpha", QVariant()));
+
+ QVERIFY(mo->indexOfProperty("number") != -1);
+ QCOMPARE(object.property("number").toInt(), 0);
+ object.setNumber(24);
+ QCOMPARE(object.property("number"), QVariant(24));
+ QVERIFY(object.setProperty("number", 12));
+ QCOMPARE(object.property("number"), QVariant(12));
+ QVERIFY(object.setProperty("number", "42"));
+ QCOMPARE(object.property("number"), QVariant(42));
+
+ QVERIFY(mo->indexOfProperty("string") != -1);
+ QCOMPARE(object.property("string").toString(), QString());
+ object.setString("String1");
+ QCOMPARE(object.property("string"), QVariant("String1"));
+ QVERIFY(object.setProperty("string", "String2"));
+ QCOMPARE(object.property("string"), QVariant("String2"));
+ QVERIFY(!object.setProperty("string", QVariant()));
+
+ const int idx = mo->indexOfProperty("variant");
+ QVERIFY(idx != -1);
+ QVERIFY(mo->property(idx).type() == QVariant::LastType);
+ QCOMPARE(object.property("variant"), QVariant());
+ QVariant variant1(42);
+ QVariant variant2("string");
+ object.setVariant(variant1);
+ QCOMPARE(object.property("variant"), variant1);
+ QVERIFY(object.setProperty("variant", variant2));
+ QCOMPARE(object.variant(), QVariant(variant2));
+ QCOMPARE(object.property("variant"), variant2);
+ QVERIFY(object.setProperty("variant", QVariant()));
+ QCOMPARE(object.property("variant"), QVariant());
+
+ QVERIFY(mo->indexOfProperty("custom") != -1);
+ property = mo->property(mo->indexOfProperty("custom"));
+ QVERIFY(property.isValid());
+ QVERIFY(property.isWritable());
+ QVERIFY(!property.isEnumType());
+ QCOMPARE(property.typeName(), "CustomType*");
+ QCOMPARE(property.type(), QVariant::UserType);
+
+ CustomType *customPointer = 0;
+ QVariant customVariant = object.property("custom");
+ customPointer = qVariantValue<CustomType *>(customVariant);
+ QCOMPARE(customPointer, object.custom());
+
+ CustomType custom;
+ customPointer = &custom;
+ qVariantSetValue(customVariant, customPointer);
+
+ property = mo->property(mo->indexOfProperty("custom"));
+ QVERIFY(property.isWritable());
+ QCOMPARE(property.typeName(), "CustomType*");
+ QCOMPARE(property.type(), QVariant::UserType);
+
+ QVERIFY(object.setProperty("custom", customVariant));
+ QCOMPARE(object.custom(), customPointer);
+
+ customVariant = object.property("custom");
+ customPointer = qVariantValue<CustomType *>(customVariant);
+ QCOMPARE(object.custom(), customPointer);
+
+ // this enum property has a meta type, but it's not yet registered, so we know this fails
+ QVERIFY(mo->indexOfProperty("priority") != -1);
+ property = mo->property(mo->indexOfProperty("priority"));
+ QVERIFY(property.isEnumType());
+ QCOMPARE(property.typeName(), "Priority");
+ QCOMPARE(property.type(), QVariant::Int);
+
+ var = object.property("priority");
+ QVERIFY(!var.isNull());
+ QCOMPARE(var.toInt(), int(PropertyObject::High));
+ object.setPriority(PropertyObject::Low);
+ QCOMPARE(object.property("priority").toInt(), int(PropertyObject::Low));
+ QVERIFY(object.setProperty("priority", PropertyObject::VeryHigh));
+ QCOMPARE(object.property("priority").toInt(), int(PropertyObject::VeryHigh));
+ QVERIFY(object.setProperty("priority", "High"));
+ QCOMPARE(object.property("priority").toInt(), int(PropertyObject::High));
+ QVERIFY(!object.setProperty("priority", QVariant()));
+
+ // now it's registered, so it works as expected
+ int priorityMetaTypeId = qRegisterMetaType<PropertyObject::Priority>("PropertyObject::Priority");
+
+ QVERIFY(mo->indexOfProperty("priority") != -1);
+ property = mo->property(mo->indexOfProperty("priority"));
+ QVERIFY(property.isEnumType());
+ QCOMPARE(property.typeName(), "Priority");
+ QCOMPARE(property.type(), QVariant::UserType);
+ QCOMPARE(property.userType(), priorityMetaTypeId);
+
+ var = object.property("priority");
+ QVERIFY(!var.isNull());
+ QVERIFY(qVariantCanConvert<PropertyObject::Priority>(var));
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(var), PropertyObject::High);
+ object.setPriority(PropertyObject::Low);
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::Low);
+ QVERIFY(object.setProperty("priority", PropertyObject::VeryHigh));
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::VeryHigh);
+ QVERIFY(object.setProperty("priority", "High"));
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::High);
+ QVERIFY(!object.setProperty("priority", QVariant()));
+
+ var = object.property("priority");
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(var), PropertyObject::High);
+ object.setPriority(PropertyObject::Low);
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::Low);
+ object.setProperty("priority", var);
+ QCOMPARE(qVariantValue<PropertyObject::Priority>(object.property("priority")), PropertyObject::High);
+
+ qRegisterMetaType<CustomString>("CustomString");
+ QVERIFY(mo->indexOfProperty("customString") != -1);
+ QCOMPARE(object.property("customString").toString(), QString());
+ object.setCustomString("String1");
+ QCOMPARE(object.property("customString"), QVariant("String1"));
+ QVERIFY(object.setProperty("customString", "String2"));
+ QCOMPARE(object.property("customString"), QVariant("String2"));
+ QVERIFY(!object.setProperty("customString", QVariant()));
+}
+
+void tst_QObject::metamethod()
+{
+ SenderObject obj;
+ const QMetaObject *mobj = obj.metaObject();
+ QMetaMethod m;
+
+ m = mobj->method(mobj->indexOfMethod("invoke1()"));
+ QVERIFY(QByteArray(m.signature()) == "invoke1()");
+ QVERIFY(m.methodType() == QMetaMethod::Method);
+ QVERIFY(m.access() == QMetaMethod::Public);
+ QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("sinvoke1()"));
+ QVERIFY(QByteArray(m.signature()) == "sinvoke1()");
+ QVERIFY(m.methodType() == QMetaMethod::Method);
+ QVERIFY(m.access() == QMetaMethod::Public);
+ QVERIFY((m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("invoke2()"));
+ QVERIFY(QByteArray(m.signature()) == "invoke2()");
+ QVERIFY(m.methodType() == QMetaMethod::Method);
+ QVERIFY(m.access() == QMetaMethod::Protected);
+ QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY((m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("sinvoke2()"));
+ QVERIFY(QByteArray(m.signature()) == "sinvoke2()");
+ QVERIFY(m.methodType() == QMetaMethod::Method);
+ QVERIFY(m.access() == QMetaMethod::Protected);
+ QVERIFY((m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY((m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("invoke3()"));
+ QVERIFY(QByteArray(m.signature()) == "invoke3()");
+ QVERIFY(m.methodType() == QMetaMethod::Method);
+ QVERIFY(m.access() == QMetaMethod::Private);
+ QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("sinvoke3()"));
+ QVERIFY(QByteArray(m.signature()) == "sinvoke3()");
+ QVERIFY(m.methodType() == QMetaMethod::Method);
+ QVERIFY(m.access() == QMetaMethod::Private);
+ QVERIFY((m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("signal5()"));
+ QVERIFY(QByteArray(m.signature()) == "signal5()");
+ QVERIFY(m.methodType() == QMetaMethod::Signal);
+ QVERIFY(m.access() == QMetaMethod::Protected);
+ QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY((m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("aPublicSlot()"));
+ QVERIFY(QByteArray(m.signature()) == "aPublicSlot()");
+ QVERIFY(m.methodType() == QMetaMethod::Slot);
+ QVERIFY(m.access() == QMetaMethod::Public);
+ QVERIFY(!(m.attributes() & QMetaMethod::Scriptable));
+ QVERIFY(!(m.attributes() & QMetaMethod::Compatibility));
+
+ m = mobj->method(mobj->indexOfMethod("invoke1()"));
+ QCOMPARE(m.parameterNames().count(), 0);
+ QCOMPARE(m.parameterTypes().count(), 0);
+
+ m = mobj->method(mobj->indexOfMethod("invoke2(int)"));
+ QCOMPARE(m.parameterNames().count(), 1);
+ QCOMPARE(m.parameterTypes().count(), 1);
+ QCOMPARE(m.parameterTypes().at(0), QByteArray("int"));
+ QVERIFY(m.parameterNames().at(0).isEmpty());
+
+ m = mobj->method(mobj->indexOfMethod("invoke3(int,int)"));
+ QCOMPARE(m.parameterNames().count(), 2);
+ QCOMPARE(m.parameterTypes().count(), 2);
+ QCOMPARE(m.parameterTypes().at(0), QByteArray("int"));
+ QCOMPARE(m.parameterNames().at(0), QByteArray("hinz"));
+ QCOMPARE(m.parameterTypes().at(1), QByteArray("int"));
+ QCOMPARE(m.parameterNames().at(1), QByteArray("kunz"));
+
+}
+
+namespace QObjectTest
+{
+ class TestObject: public QObject
+ {
+ Q_OBJECT
+ public:
+ TestObject(): QObject(), i(0) {}
+ void doEmit() { emit aSignal(); }
+ int i;
+ public slots:
+ void aSlot() { ++i; }
+ signals:
+ void aSignal();
+ };
+}
+
+void tst_QObject::namespaces()
+{
+ QObjectTest::TestObject obj;
+
+ QVERIFY(connect(&obj, SIGNAL(aSignal()), &obj, SLOT(aSlot())));
+ obj.doEmit();
+ QCOMPARE(obj.i, 1);
+}
+
+class SuperObject : public QObject
+{
+ Q_OBJECT
+public:
+ QObject *theSender;
+ int theSignalId;
+
+ SuperObject()
+ {
+ theSender = 0;
+ theSignalId = 0;
+ }
+
+ friend class tst_QObject;
+
+ using QObject::sender;
+
+public slots:
+ void rememberSender()
+ {
+ theSender = sender();
+ theSignalId = senderSignalIndex();
+ }
+
+ void deleteAndRememberSender()
+ {
+ delete theSender;
+ rememberSender();
+ }
+signals:
+ void anotherSignal();
+ void theSignal();
+};
+
+void tst_QObject::sender()
+{
+ {
+ SuperObject sender;
+ SuperObject receiver;
+ connect(&sender, SIGNAL(anotherSignal()),
+ &receiver, SLOT(rememberSender()));
+ connect(&sender, SIGNAL(theSignal()),
+ &receiver, SLOT(rememberSender()));
+ QCOMPARE(receiver.sender(), (QObject *)0);
+ QCOMPARE(receiver.senderSignalIndex(), -1);
+ emit sender.theSignal();
+ QCOMPARE(receiver.theSender, (QObject *)&sender);
+ QCOMPARE(receiver.sender(), (QObject *)0);
+ QCOMPARE(receiver.theSignalId,
+ sender.metaObject()->indexOfSignal("theSignal()"));
+ QCOMPARE(receiver.senderSignalIndex(), -1);
+
+ emit sender.anotherSignal();
+ QCOMPARE(receiver.theSignalId,
+ sender.metaObject()->indexOfSignal("anotherSignal()"));
+ QCOMPARE(receiver.senderSignalIndex(), -1);
+ }
+
+ {
+ SuperObject *sender = new SuperObject;
+ SuperObject *receiver = new SuperObject;
+ connect(sender, SIGNAL(theSignal()),
+ receiver, SLOT(rememberSender()),
+ Qt::BlockingQueuedConnection);
+
+ QThread thread;
+ receiver->moveToThread(&thread);
+ connect(sender, SIGNAL(theSignal()),
+ &thread, SLOT(quit()),
+ Qt::DirectConnection);
+
+ QCOMPARE(receiver->sender(), (QObject *)0);
+ QCOMPARE(receiver->senderSignalIndex(), -1);
+ receiver->theSender = 0;
+ receiver->theSignalId = -1;
+ thread.start();
+ emit sender->theSignal();
+ QCOMPARE(receiver->theSender, (QObject *) sender);
+ QCOMPARE(receiver->sender(), (QObject *)0);
+ QCOMPARE(receiver->theSignalId,
+ sender->metaObject()->indexOfSignal("theSignal()"));
+ QCOMPARE(receiver->senderSignalIndex(), -1);
+
+ QVERIFY(thread.wait(10000));
+ delete receiver;
+ delete sender;
+ }
+
+ {
+ SuperObject *sender = new SuperObject;
+ SuperObject receiver;
+ connect(sender, SIGNAL(theSignal()),
+ &receiver, SLOT(deleteAndRememberSender()));
+ QCOMPARE(receiver.sender(), (QObject *)0);
+ receiver.theSender = sender;
+ emit sender->theSignal();
+ QCOMPARE(receiver.theSender, (QObject *)0);
+ QCOMPARE(receiver.sender(), (QObject *)0);
+ }
+
+ {
+ SuperObject *sender = new SuperObject;
+ SuperObject *receiver = new SuperObject;
+ connect(sender, SIGNAL(theSignal()),
+ receiver, SLOT(deleteAndRememberSender()),
+ Qt::BlockingQueuedConnection);
+
+ QThread thread;
+ receiver->moveToThread(&thread);
+ connect(sender, SIGNAL(destroyed()),
+ &thread, SLOT(quit()),
+ Qt::DirectConnection);
+
+ QCOMPARE(receiver->sender(), (QObject *)0);
+ receiver->theSender = sender;
+ thread.start();
+ emit sender->theSignal();
+ QCOMPARE(receiver->theSender, (QObject *)0);
+ QCOMPARE(receiver->sender(), (QObject *)0);
+
+ QVERIFY(thread.wait(10000));
+ delete receiver;
+ }
+}
+
+namespace Foo
+{
+ struct Bar
+ {
+ virtual ~Bar() {}
+ virtual int rtti() const = 0;
+ };
+
+ struct Bleh
+ {
+ virtual ~Bleh() {}
+ virtual int rtti() const = 0;
+ };
+}
+
+QT_BEGIN_NAMESPACE
+Q_DECLARE_INTERFACE(Foo::Bar, "com.qtest.foobar")
+QT_END_NAMESPACE
+
+#define Bleh_iid "com.qtest.bleh"
+QT_BEGIN_NAMESPACE
+Q_DECLARE_INTERFACE(Foo::Bleh, Bleh_iid)
+QT_END_NAMESPACE
+
+class FooObject: public QObject, public Foo::Bar
+{
+ Q_OBJECT
+ Q_INTERFACES(Foo::Bar)
+public:
+ int rtti() const { return 42; }
+};
+
+class BlehObject : public QObject, public Foo::Bleh
+{
+ Q_OBJECT
+ Q_INTERFACES(Foo::Bleh)
+public:
+ int rtti() const { return 43; }
+};
+
+void tst_QObject::declareInterface()
+{
+ FooObject obj;
+
+ Foo::Bar *bar = qobject_cast<Foo::Bar *>(&obj);
+ QVERIFY(bar);
+ QCOMPARE(bar->rtti(), 42);
+ QCOMPARE(static_cast<Foo::Bar *>(&obj), bar);
+
+ BlehObject bleh;
+
+ bar = qobject_cast<Foo::Bar *>(&bleh);
+ QVERIFY(!bar);
+ Foo::Bleh *b = qobject_cast<Foo::Bleh *>(&bleh);
+ QCOMPARE(b->rtti(), 43);
+ QCOMPARE(static_cast<Foo::Bleh *>(&bleh), b);
+
+}
+
+class CustomData : public QObjectUserData
+{
+public:
+ int id;
+};
+
+void tst_QObject::testUserData()
+{
+ const int USER_DATA_COUNT = 100;
+ int user_data_ids[USER_DATA_COUNT];
+
+ // Register a few
+ for (int i=0; i<USER_DATA_COUNT; ++i) {
+ user_data_ids[i] = QObject::registerUserData();
+ }
+
+ // Randomize the table a bit
+ for (int i=0; i<100; ++i) {
+ int p1 = rand() % USER_DATA_COUNT;
+ int p2 = rand() % USER_DATA_COUNT;
+
+ int tmp = user_data_ids[p1];
+ user_data_ids[p1] = user_data_ids[p2];
+ user_data_ids[p2] = tmp;
+ }
+
+ // insert the user data into an object
+ QObject my_test_object;
+ for (int i=0; i<USER_DATA_COUNT; ++i) {
+ CustomData *data = new CustomData;
+ data->id = user_data_ids[i];
+ my_test_object.setUserData(data->id, data);
+ }
+
+ // verify that all ids and positions are matching
+ for (int i=0; i<USER_DATA_COUNT; ++i) {
+ int id = user_data_ids[i];
+ CustomData *data = static_cast<CustomData *>(my_test_object.userData(id));
+ QVERIFY(data != 0);
+ QVERIFY(data->id == id);
+ }
+}
+
+class DestroyedListener : public QObject
+{
+ Q_OBJECT
+public:
+ inline DestroyedListener() : pointerWasZero(false) {}
+
+ QPointer<QObject> pointer;
+ bool pointerWasZero;
+
+private slots:
+ inline void otherObjectDestroyed()
+ { pointerWasZero = pointer.isNull(); }
+};
+
+void tst_QObject::qpointerResetBeforeDestroyedSignal()
+{
+ QObject *obj = new QObject;
+ DestroyedListener listener;
+ listener.pointer = obj;
+ listener.pointerWasZero = false;
+ connect(obj, SIGNAL(destroyed()), &listener, SLOT(otherObjectDestroyed()));
+ delete obj;
+ QVERIFY(listener.pointerWasZero);
+ QVERIFY(listener.pointer.isNull());
+}
+
+class DefaultArguments : public QObject
+{
+ Q_OBJECT
+
+public slots:
+
+ void theSlot(const QString &s) { result = s; }
+
+signals:
+ void theOriginalSignal();
+ void theSecondSignal(const QString &s = QString("secondDefault"));
+
+public:
+
+ void emitTheOriginalSignal() { emit theOriginalSignal(); }
+ void emitTheSecondSignal() { emit theSecondSignal(); }
+ QString result;
+};
+
+void tst_QObject::connectSignalsToSignalsWithDefaultArguments()
+{
+ DefaultArguments o;
+ connect(&o, SIGNAL(theOriginalSignal()), &o, SIGNAL(theSecondSignal()));
+ connect(&o, SIGNAL(theSecondSignal(QString)), &o, SLOT(theSlot(QString)));
+ QVERIFY( o.result.isEmpty() );
+ o.emitTheSecondSignal();
+ QCOMPARE(o.result, QString("secondDefault"));
+ o.result = "Not called";
+ o.emitTheOriginalSignal();
+ QCOMPARE(o.result, QString("secondDefault"));
+
+}
+
+void tst_QObject::receivers()
+{
+ class Object : public QObject
+ {
+ public:
+ int receivers(const char* signal) const
+ { return QObject::receivers(signal); }
+ };
+
+ Object object;
+ QCOMPARE(object.receivers(SIGNAL(destroyed())), 0);
+ object.connect(&object, SIGNAL(destroyed()), SLOT(deleteLater()));
+ QCOMPARE(object.receivers(SIGNAL(destroyed())), 1);
+ object.connect(&object, SIGNAL(destroyed()), SLOT(deleteLater()));
+ QCOMPARE(object.receivers(SIGNAL(destroyed())), 2);
+ object.disconnect(SIGNAL(destroyed()), &object, SLOT(deleteLater()));
+ QCOMPARE(object.receivers(SIGNAL(destroyed())), 0);
+}
+
+enum Enum { };
+
+struct Struct { };
+class Class { };
+template <typename T> class Template { };
+
+class NormalizeObject : public QObject
+{
+ Q_OBJECT
+
+public:
+
+signals:
+ void uintPointerSignal(uint *);
+ void ulongPointerSignal(ulong *);
+ void constUintPointerSignal(const uint *);
+ void constUlongPointerSignal(const ulong *);
+
+ void structSignal(Struct s);
+ void classSignal(Class c);
+ void enumSignal(Enum e);
+
+ void structPointerSignal(Struct *s);
+ void classPointerSignal(Class *c);
+ void enumPointerSignal(Enum *e);
+
+ void constStructPointerSignal(const Struct *s);
+ void constClassPointerSignal(const Class *c);
+ void constEnumPointerSignal(const Enum *e);
+
+ void constStructPointerConstPointerSignal(const Struct * const *s);
+ void constClassPointerConstPointerSignal(const Class * const *c);
+ void constEnumPointerConstPointerSignal(const Enum * const *e);
+
+ void unsignedintSignal(unsigned int);
+ void unsignedSignal(unsigned);
+ void unsignedlongSignal(unsigned long);
+ void unsignedlonglongSignal(quint64);
+ void unsignedlongintSignal(unsigned long int);
+ void unsignedshortSignal(unsigned short);
+ void unsignedcharSignal(unsigned char);
+
+ void typeRefSignal(Template<Class &> &ref);
+ void constTypeRefSignal(const Template<Class const &> &ref);
+ void typeConstRefSignal(Template<Class const &> const &ref);
+
+ void typePointerConstRefSignal(Class * const &);
+
+ void constTemplateSignal1( Template<int > );
+ void constTemplateSignal2( Template< const int >);
+
+public slots:
+ void uintPointerSlot(uint *) { }
+ void ulongPointerSlot(ulong *) { }
+ void constUintPointerSlot(const uint *) { }
+ void constUlongPointerSlot(const ulong *) { }
+
+ void structSlot(Struct s) { Q_UNUSED(s); }
+ void classSlot(Class c) { Q_UNUSED(c); }
+ void enumSlot(Enum e) { Q_UNUSED(e); }
+
+ void structPointerSlot(Struct *s) { Q_UNUSED(s); }
+ void classPointerSlot(Class *c) { Q_UNUSED(c); }
+ void enumPointerSlot(Enum *e) { Q_UNUSED(e); }
+
+ void constStructPointerSlot(const Struct *s) { Q_UNUSED(s); }
+ void constClassPointerSlot(const Class *c) { Q_UNUSED(c); }
+ void constEnumPointerSlot(const Enum *e) { Q_UNUSED(e); }
+
+ void constStructPointerConstPointerSlot(const Struct * const *s) { Q_UNUSED(s); }
+ void constClassPointerConstPointerSlot(const Class * const *c) { Q_UNUSED(c); }
+ void constEnumPointerConstPointerSlot(const Enum * const *e) { Q_UNUSED(e); }
+
+ void uintSlot(uint) {};
+ void unsignedintSlot(unsigned int) {};
+ void unsignedSlot(unsigned) {};
+ void unsignedlongSlot(unsigned long) {};
+ void unsignedlonglongSlot(quint64) {};
+ void unsignedlongintSlot(unsigned long int) {};
+ void unsignedshortSlot(unsigned short) {};
+ void unsignedcharSlot(unsigned char) {};
+
+ void typeRefSlot(Template<Class &> &) {}
+ void constTypeRefSlot(const Template<const Class &> &) {}
+ void typeConstRefSlot(Template<Class const &> const &) {}
+
+ void typePointerConstRefSlot(Class * const &) {}
+
+ void constTemplateSlot1(Template<int > const) {}
+ void constTemplateSlot2(const Template<int > ) {}
+ void constTemplateSlot3(const Template< const int >) {}
+};
+
+#include "oldnormalizeobject.h"
+
+void tst_QObject::normalize()
+{
+ NormalizeObject object;
+
+ // unsigned int -> uint, unsigned long -> ulong
+ QVERIFY(object.connect(&object,
+ SIGNAL(uintPointerSignal(uint *)),
+ SLOT(uintPointerSlot(uint *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(uintPointerSignal(unsigned int *)),
+ SLOT(uintPointerSlot(uint *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(uintPointerSignal(uint *)),
+ SLOT(uintPointerSlot(unsigned int *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constUintPointerSignal(const uint *)),
+ SLOT(constUintPointerSlot(const uint *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constUintPointerSignal(const unsigned int *)),
+ SLOT(constUintPointerSlot(const uint *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constUintPointerSignal(const uint *)),
+ SLOT(constUintPointerSlot(const unsigned int *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(ulongPointerSignal(ulong *)),
+ SLOT(ulongPointerSlot(ulong *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(ulongPointerSignal(unsigned long *)),
+ SLOT(ulongPointerSlot(ulong *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(ulongPointerSignal(ulong *)),
+ SLOT(ulongPointerSlot(unsigned long *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constUlongPointerSignal(const ulong *)),
+ SLOT(constUlongPointerSlot(const ulong *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constUlongPointerSignal(const unsigned long *)),
+ SLOT(constUlongPointerSlot(const ulong *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constUlongPointerSignal(const ulong *)),
+ SLOT(constUlongPointerSlot(const unsigned long *))));
+
+ // struct, class, and enum are optional
+ QVERIFY(object.connect(&object,
+ SIGNAL(structSignal(struct Struct)),
+ SLOT(structSlot(struct Struct))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(structSignal(Struct)),
+ SLOT(structSlot(struct Struct))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(structSignal(struct Struct)),
+ SLOT(structSlot(Struct))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(classSignal(class Class)),
+ SLOT(classSlot(class Class))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(classSignal(Class)),
+ SLOT(classSlot(class Class))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(classSignal(class Class)),
+ SLOT(classSlot(Class))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(enumSignal(enum Enum)),
+ SLOT(enumSlot(enum Enum))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(enumSignal(Enum)),
+ SLOT(enumSlot(enum Enum))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(enumSignal(enum Enum)),
+ SLOT(enumSlot(Enum))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(structPointerSignal(struct Struct *)),
+ SLOT(structPointerSlot(struct Struct *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(structPointerSignal(Struct *)),
+ SLOT(structPointerSlot(struct Struct *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(structPointerSignal(struct Struct *)),
+ SLOT(structPointerSlot(Struct *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(classPointerSignal(class Class *)),
+ SLOT(classPointerSlot(class Class *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(classPointerSignal(Class *)),
+ SLOT(classPointerSlot(class Class *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(classPointerSignal(class Class *)),
+ SLOT(classPointerSlot(Class *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(enumPointerSignal(enum Enum *)),
+ SLOT(enumPointerSlot(enum Enum *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(enumPointerSignal(Enum *)),
+ SLOT(enumPointerSlot(enum Enum *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(enumPointerSignal(enum Enum *)),
+ SLOT(enumPointerSlot(Enum *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerSignal(const struct Struct *)),
+ SLOT(constStructPointerSlot(const struct Struct *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerSignal(const Struct *)),
+ SLOT(constStructPointerSlot(const struct Struct *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerSignal(const struct Struct *)),
+ SLOT(constStructPointerSlot(const Struct *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerSignal(const class Class *)),
+ SLOT(constClassPointerSlot(const class Class *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerSignal(const Class *)),
+ SLOT(constClassPointerSlot(const class Class *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerSignal(const class Class *)),
+ SLOT(constClassPointerSlot(const Class *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerSignal(const enum Enum *)),
+ SLOT(constEnumPointerSlot(const enum Enum *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerSignal(const Enum *)),
+ SLOT(constEnumPointerSlot(const enum Enum *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerSignal(const enum Enum *)),
+ SLOT(constEnumPointerSlot(const Enum *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerSignal(struct Struct const *)),
+ SLOT(constStructPointerSlot(struct Struct const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerSignal(Struct const *)),
+ SLOT(constStructPointerSlot(struct Struct const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerSignal(struct Struct const *)),
+ SLOT(constStructPointerSlot(Struct const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerSignal(class Class const *)),
+ SLOT(constClassPointerSlot(class Class const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerSignal(Class const *)),
+ SLOT(constClassPointerSlot(class Class const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerSignal(class Class const *)),
+ SLOT(constClassPointerSlot(Class const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerSignal(enum Enum const *)),
+ SLOT(constEnumPointerSlot(enum Enum const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerSignal(Enum const *)),
+ SLOT(constEnumPointerSlot(enum Enum const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerSignal(enum Enum const *)),
+ SLOT(constEnumPointerSlot(Enum const *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerConstPointerSignal(const struct Struct * const *)),
+ SLOT(constStructPointerConstPointerSlot(const struct Struct * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerConstPointerSignal(const Struct * const *)),
+ SLOT(constStructPointerConstPointerSlot(const struct Struct * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerConstPointerSignal(const struct Struct * const *)),
+ SLOT(constStructPointerConstPointerSlot(const Struct * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerConstPointerSignal(const class Class * const *)),
+ SLOT(constClassPointerConstPointerSlot(const class Class * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerConstPointerSignal(const Class * const *)),
+ SLOT(constClassPointerConstPointerSlot(const class Class * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerConstPointerSignal(const class Class * const *)),
+ SLOT(constClassPointerConstPointerSlot(const Class * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerConstPointerSignal(const enum Enum * const *)),
+ SLOT(constEnumPointerConstPointerSlot(const enum Enum * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerConstPointerSignal(const Enum * const *)),
+ SLOT(constEnumPointerConstPointerSlot(const enum Enum * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerConstPointerSignal(const enum Enum * const *)),
+ SLOT(constEnumPointerConstPointerSlot(const Enum * const *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerConstPointerSignal(struct Struct const * const *)),
+ SLOT(constStructPointerConstPointerSlot(struct Struct const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerConstPointerSignal(Struct const * const *)),
+ SLOT(constStructPointerConstPointerSlot(struct Struct const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constStructPointerConstPointerSignal(struct Struct const * const *)),
+ SLOT(constStructPointerConstPointerSlot(Struct const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerConstPointerSignal(class Class const * const *)),
+ SLOT(constClassPointerConstPointerSlot(class Class const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerConstPointerSignal(Class const * const *)),
+ SLOT(constClassPointerConstPointerSlot(class Class const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constClassPointerConstPointerSignal(class Class const * const *)),
+ SLOT(constClassPointerConstPointerSlot(Class const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerConstPointerSignal(enum Enum const * const *)),
+ SLOT(constEnumPointerConstPointerSlot(enum Enum const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerConstPointerSignal(Enum const * const *)),
+ SLOT(constEnumPointerConstPointerSlot(enum Enum const * const *))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constEnumPointerConstPointerSignal(enum Enum const * const *)),
+ SLOT(constEnumPointerConstPointerSlot(Enum const * const *))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedintSignal(unsigned int)),
+ SLOT(unsignedintSlot(unsigned int))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedSignal(unsigned)),
+ SLOT(unsignedSlot(unsigned))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedSignal(unsigned)),
+ SLOT(uintSlot(uint))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedlongSignal(unsigned long)),
+ SLOT(unsignedlongSlot(unsigned long))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedlonglongSignal(quint64)),
+ SLOT(unsignedlonglongSlot(quint64))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedlongintSignal(unsigned long int)),
+ SLOT(unsignedlongintSlot(unsigned long int))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedshortSignal(unsigned short)),
+ SLOT(unsignedshortSlot(unsigned short))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(unsignedcharSignal(unsigned char)),
+ SLOT(unsignedcharSlot(unsigned char))));
+
+ // connect when original template signature and mixed usage of 'T<C const &> const &',
+ // 'const T<const C &> &', and 'T<const C &>'
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeRefSignal(Template<Class &> &)),
+ SLOT(typeRefSlot(Template<Class &> &))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<const Class &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<Class const &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(Template<const Class &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(Template<Class const &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<const Class &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<Class const &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(Template<const Class &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(constTypeRefSignal(Template<Class const &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<const Class &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<Class const &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(Template<const Class &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(Template<Class const &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<const Class &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<Class const &> &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(Template<const Class &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typeConstRefSignal(Template<Class const &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+
+ // same test again, this time with an object compiled with old moc output... we know that
+ // it is not possible to connect everything, whic is the purpose for this test
+ OldNormalizeObject oldobject;
+
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<const Class &> &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<Class const &> &))));
+ // this fails in older versions, but passes now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ // this fails in older versions, but passes now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(Template<const Class &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ // this fails in older versions, but passes now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(Template<Class const &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+
+ // these fail in older Qt versions, but pass now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<const Class &> &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<Class const &> &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(Template<const Class &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(constTypeRefSignal(Template<Class const &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+
+ // these also fail in older Qt versions, but pass now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<const Class &> &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(const Template<Class const &> &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(Template<const Class &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(Template<Class const &> const &)),
+ SLOT(constTypeRefSlot(Template<Class const &> const &))));
+
+ // this fails in older versions, but passes now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<const Class &> &))));
+ // this fails in older versions, but passes now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(const Template<Class const &> &))));
+ // this fails in older versions, but passes now due to proper normalizing
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(const Template<const Class &> &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(Template<const Class &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+ QVERIFY(oldobject.connect(&oldobject,
+ SIGNAL(typeConstRefSignal(Template<Class const &> const &)),
+ SLOT(typeConstRefSlot(Template<Class const &> const &))));
+
+ QVERIFY(object.connect(&object,
+ SIGNAL(typePointerConstRefSignal(Class*const&)),
+ SLOT(typePointerConstRefSlot(Class*const&))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typePointerConstRefSignal(Class*const&)),
+ SLOT(typePointerConstRefSlot(Class*))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typePointerConstRefSignal(Class*)),
+ SLOT(typePointerConstRefSlot(Class*const&))));
+ QVERIFY(object.connect(&object,
+ SIGNAL(typePointerConstRefSignal(Class*)),
+ SLOT(typePointerConstRefSlot(Class*))));
+
+ QVERIFY( connect(&object, SIGNAL(constTemplateSignal1(Template <int>)),
+ &object , SLOT(constTemplateSlot1 (Template<int > ) ) ));
+ QVERIFY( connect(&object, SIGNAL(constTemplateSignal1(Template <int>)),
+ &object , SLOT(constTemplateSlot2 (Template<int > ) ) ));
+ QVERIFY( connect(&object, SIGNAL(constTemplateSignal2(Template <const int>)),
+ &object , SLOT(constTemplateSlot3(Template<int const > ) ) ));
+
+ //type does not match
+ QTest::ignoreMessage(QtWarningMsg, "QObject::connect: Incompatible sender/receiver arguments\n"
+ " NormalizeObject::constTemplateSignal1(Template<int>) --> NormalizeObject::constTemplateSlot3(Template<const int>)");
+ QVERIFY(!connect(&object, SIGNAL(constTemplateSignal1(Template <int>)),
+ &object , SLOT(constTemplateSlot3(Template<int const> ) ) ));
+}
+
+class SiblingDeleter : public QObject
+{
+public:
+ inline SiblingDeleter(QObject *sibling, QObject *parent)
+ : QObject(parent), sibling(sibling) {}
+ inline virtual ~SiblingDeleter() { delete sibling; }
+
+private:
+ QPointer<QObject> sibling;
+};
+
+
+void tst_QObject::childDeletesItsSibling()
+{
+ QObject *commonParent = new QObject(0);
+ QPointer<QObject> child = new QObject(0);
+ QPointer<QObject> siblingDeleter = new SiblingDeleter(child, commonParent);
+ child->setParent(commonParent);
+ delete commonParent; // don't crash
+ QVERIFY(!child);
+ QVERIFY(!siblingDeleter);
+}
+
+void tst_QObject::floatProperty()
+{
+ PropertyObject obj;
+ const int idx = obj.metaObject()->indexOfProperty("myFloat");
+ QVERIFY(idx > 0);
+ QMetaProperty prop = obj.metaObject()->property(idx);
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.type() == uint(QMetaType::type("float")));
+ QVERIFY(!prop.write(&obj, QVariant("Hello")));
+ QVERIFY(prop.write(&obj, qVariantFromValue(128.0f)));
+ QVariant v = prop.read(&obj);
+ QVERIFY(int(v.userType()) == QMetaType::Float);
+ QVERIFY(qVariantValue<float>(v) == 128.0f);
+}
+
+void tst_QObject::qrealProperty()
+{
+ PropertyObject obj;
+ const int idx = obj.metaObject()->indexOfProperty("myQReal");
+ QVERIFY(idx > 0);
+ QMetaProperty prop = obj.metaObject()->property(idx);
+ QVERIFY(prop.isValid());
+ QVERIFY(prop.type() == uint(QMetaType::type("qreal")));
+ QVERIFY(!prop.write(&obj, QVariant("Hello")));
+
+ QVERIFY(prop.write(&obj, qVariantFromValue(128.0f)));
+ QVariant v = prop.read(&obj);
+ QCOMPARE(v.userType(), qMetaTypeId<qreal>());
+ QVERIFY(qVariantValue<qreal>(v) == 128.0);
+
+ QVERIFY(prop.write(&obj, qVariantFromValue(double(127))));
+ v = prop.read(&obj);
+ QCOMPARE(v.userType(), qMetaTypeId<qreal>());
+ QVERIFY(qVariantValue<qreal>(v) == 127.0);
+}
+
+class DynamicPropertyObject : public PropertyObject
+{
+public:
+ inline DynamicPropertyObject() {}
+
+ inline virtual bool event(QEvent *e) {
+ if (e->type() == QEvent::DynamicPropertyChange) {
+ changedDynamicProperties.append(static_cast<QDynamicPropertyChangeEvent *>(e)->propertyName());
+ }
+ return QObject::event(e);
+ }
+
+ QList<QByteArray> changedDynamicProperties;
+};
+
+void tst_QObject::dynamicProperties()
+{
+ DynamicPropertyObject obj;
+
+ QVERIFY(obj.dynamicPropertyNames().isEmpty());
+
+ QVERIFY(obj.setProperty("number", 42));
+ QVERIFY(obj.changedDynamicProperties.isEmpty());
+ QCOMPARE(obj.property("number").toInt(), 42);
+
+ QVERIFY(!obj.setProperty("number", "invalid string"));
+ QVERIFY(obj.changedDynamicProperties.isEmpty());
+
+ QVERIFY(!obj.setProperty("myuserproperty", "Hello"));
+ QCOMPARE(obj.changedDynamicProperties.count(), 1);
+ QCOMPARE(obj.changedDynamicProperties.first(), QByteArray("myuserproperty"));
+ obj.changedDynamicProperties.clear();
+
+ QCOMPARE(obj.property("myuserproperty").toString(), QString("Hello"));
+
+ QCOMPARE(obj.dynamicPropertyNames().count(), 1);
+ QCOMPARE(obj.dynamicPropertyNames().first(), QByteArray("myuserproperty"));
+
+ QVERIFY(!obj.setProperty("myuserproperty", QVariant()));
+
+ QCOMPARE(obj.changedDynamicProperties.count(), 1);
+ QCOMPARE(obj.changedDynamicProperties.first(), QByteArray("myuserproperty"));
+ obj.changedDynamicProperties.clear();
+
+ QVERIFY(obj.property("myuserproperty").isNull());
+
+ QVERIFY(obj.dynamicPropertyNames().isEmpty());
+}
+
+void tst_QObject::recursiveSignalEmission()
+{
+#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+ QSKIP("Emulator builds in Symbian do not support launching processes linking to Qt", SkipAll);
+#elif defined(QT_NO_PROCESS)
+ QSKIP("Test requires QProcess", SkipAll);
+#else
+ QProcess proc;
+ proc.start("./signalbug");
+ QVERIFY(proc.waitForFinished());
+ QVERIFY(proc.exitStatus() == QProcess::NormalExit);
+ QCOMPARE(proc.exitCode(), 0);
+#endif
+}
+
+void tst_QObject::blockingQueuedConnection()
+{
+ {
+ SenderObject sender;
+
+ MoveToThreadThread thread;
+ ReceiverObject receiver;
+ receiver.moveToThread(&thread);
+ thread.start();
+
+ receiver.connect(&sender, SIGNAL(signal1()), SLOT(slot1()), Qt::BlockingQueuedConnection);
+ sender.emitSignal1();
+ QVERIFY(receiver.called(1));
+
+ receiver.reset();
+ QVERIFY(QMetaObject::invokeMethod(&receiver, "slot1", Qt::BlockingQueuedConnection));
+ QVERIFY(receiver.called(1));
+
+ thread.quit();
+ QVERIFY(thread.wait());
+ }
+}
+
+class EventSpy : public QObject
+{
+ Q_OBJECT
+
+public:
+ typedef QList<QPair<QObject *, QEvent::Type> > EventList;
+
+ EventSpy(QObject *parent = 0)
+ : QObject(parent)
+ { }
+
+ EventList eventList()
+ {
+ return events;
+ }
+
+ void clear()
+ {
+ events.clear();
+ }
+
+ bool eventFilter(QObject *object, QEvent *event)
+ {
+ events.append(qMakePair(object, event->type()));
+ return false;
+ }
+
+private:
+ EventList events;
+};
+
+void tst_QObject::compatibilityChildInsertedEvents()
+{
+ EventSpy::EventList expected;
+
+ {
+ // no children created, so we expect no events
+ QObject object;
+ EventSpy spy;
+ object.installEventFilter(&spy);
+
+ QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 1)));
+
+ QCoreApplication::processEvents();
+
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::Type(QEvent::User + 1));
+ QCOMPARE(spy.eventList(), expected);
+ }
+
+ {
+ // 2 children, so we expect 2 ChildAdded and 2 ChildInserted events
+ QObject object;
+ EventSpy spy;
+ object.installEventFilter(&spy);
+
+ QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 1)));
+
+ QObject child1(&object);
+ QObject child2;
+ child2.setParent(&object);
+
+ QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 2)));
+
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::ChildAdded)
+ << qMakePair(&object, QEvent::ChildAdded);
+ QCOMPARE(spy.eventList(), expected);
+ spy.clear();
+
+ QCoreApplication::processEvents();
+
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::Type(QEvent::User + 1))
+ << qMakePair(&object, QEvent::Type(QEvent::User + 2));
+ QCOMPARE(spy.eventList(), expected);
+ }
+
+ {
+ // 2 children, but one is reparented away, so we expect:
+ // 2 ChildAdded, 1 ChildRemoved, and 1 ChildInserted
+ QObject object;
+ EventSpy spy;
+ object.installEventFilter(&spy);
+
+ QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 1)));
+
+ QObject child1(&object);
+ QObject child2;
+ child2.setParent(&object);
+ child2.setParent(0);
+
+ QCoreApplication::postEvent(&object, new QEvent(QEvent::Type(QEvent::User + 2)));
+
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::ChildAdded)
+ << qMakePair(&object, QEvent::ChildAdded)
+ << qMakePair(&object, QEvent::ChildRemoved);
+ QCOMPARE(spy.eventList(), expected);
+ spy.clear();
+
+ QCoreApplication::processEvents();
+
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::Type(QEvent::User + 1))
+ << qMakePair(&object, QEvent::Type(QEvent::User + 2));
+ QCOMPARE(spy.eventList(), expected);
+ }
+}
+
+void tst_QObject::installEventFilter()
+{
+ QEvent event(QEvent::User);
+ EventSpy::EventList expected;
+
+ QObject object;
+ EventSpy spy;
+ object.installEventFilter(&spy);
+
+ // nothing special, should just work
+ QCoreApplication::sendEvent(&object, &event);
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::User);
+ QCOMPARE(spy.eventList(), expected);
+ spy.clear();
+
+ // moving the filter causes QCoreApplication to skip the filter
+ spy.moveToThread(0);
+ QTest::ignoreMessage(QtWarningMsg, "QCoreApplication: Object event filter cannot be in a different thread.");
+ QCoreApplication::sendEvent(&object, &event);
+ QVERIFY(spy.eventList().isEmpty());
+
+ // move it back, and the filter works again
+ spy.moveToThread(object.thread());
+ QCoreApplication::sendEvent(&object, &event);
+ expected =
+ EventSpy::EventList()
+ << qMakePair(&object, QEvent::User);
+ QCOMPARE(spy.eventList(), expected);
+ spy.clear();
+
+ // cannot install an event filter that lives in a different thread
+ object.removeEventFilter(&spy);
+ spy.moveToThread(0);
+ QTest::ignoreMessage(QtWarningMsg, "QObject::installEventFilter(): Cannot filter events for objects in a different thread.");
+ object.installEventFilter(&spy);
+ QCoreApplication::sendEvent(&object, &event);
+ QVERIFY(spy.eventList().isEmpty());
+}
+
+class EmitThread : public QThread
+{ Q_OBJECT
+public:
+ void run(void) {
+ emit work();
+ }
+signals:
+ void work();
+};
+
+namespace QObjectTest { // Do not clash with WinAPI 'DeleteObject'
+class DeleteObject : public QObject
+{
+ Q_OBJECT
+
+public slots:
+ void deleteSelf()
+ {
+ delete this;
+ }
+
+ void relaySignalAndProcessEvents()
+ {
+ emit relayedSignal();
+ QCoreApplication::processEvents();
+ }
+
+signals:
+ void relayedSignal();
+};
+} // namespace QObjectTest
+
+void tst_QObject::deleteSelfInSlot()
+{
+ {
+ SenderObject sender;
+ QObjectTest::DeleteObject *receiver = new QObjectTest::DeleteObject();
+ receiver->connect(&sender,
+ SIGNAL(signal1()),
+ SLOT(deleteSelf()),
+ Qt::BlockingQueuedConnection);
+
+ QThread thread;
+ receiver->moveToThread(&thread);
+ thread.connect(receiver, SIGNAL(destroyed()), SLOT(quit()), Qt::DirectConnection);
+ thread.start();
+
+ QPointer<QObjectTest::DeleteObject> p = receiver;
+ sender.emitSignal1();
+ QVERIFY(p.isNull());
+
+ QVERIFY(thread.wait(10000));
+ }
+
+ {
+ SenderObject sender;
+ QObjectTest::DeleteObject *receiver = new QObjectTest::DeleteObject();
+ receiver->connect(&sender,
+ SIGNAL(signal1()),
+ SLOT(relaySignalAndProcessEvents()),
+ Qt::BlockingQueuedConnection);
+ receiver->connect(receiver,
+ SIGNAL(relayedSignal()),
+ SLOT(deleteSelf()),
+ Qt::QueuedConnection);
+
+ QThread thread;
+ receiver->moveToThread(&thread);
+ thread.connect(receiver, SIGNAL(destroyed()), SLOT(quit()), Qt::DirectConnection);
+ thread.start();
+
+ QPointer<QObjectTest::DeleteObject> p = receiver;
+ sender.emitSignal1();
+ QVERIFY(p.isNull());
+
+ QVERIFY(thread.wait(10000));
+ }
+
+ {
+ EmitThread sender;
+ QObjectTest::DeleteObject *receiver = new QObjectTest::DeleteObject();
+ connect(&sender, SIGNAL(work()), receiver, SLOT(deleteSelf()), Qt::DirectConnection);
+ QPointer<QObjectTest::DeleteObject> p = receiver;
+ sender.start();
+ QVERIFY(sender.wait(10000));
+ QVERIFY(p.isNull());
+ }
+}
+
+class DisconnectObject : public QObject
+{
+ Q_OBJECT
+
+public slots:
+ void disconnectSelf()
+ {
+ disconnect(sender(), 0, this, 0);
+ }
+
+ void relaySignalAndProcessEvents()
+ {
+ emit relayedSignal();
+ QCoreApplication::processEvents();
+ }
+
+signals:
+ void relayedSignal();
+};
+
+void tst_QObject::disconnectSelfInSlotAndDeleteAfterEmit()
+{
+ {
+ SenderObject sender;
+ DisconnectObject *receiver = new DisconnectObject();
+ receiver->connect(&sender, SIGNAL(signal1()), SLOT(disconnectSelf()));
+ sender.emitSignal1AfterRecursion();
+ delete receiver;
+ }
+
+ {
+ SenderObject sender;
+ DisconnectObject *receiver = new DisconnectObject();
+ receiver->connect(&sender,
+ SIGNAL(signal1()),
+ SLOT(disconnectSelf()),
+ Qt::BlockingQueuedConnection);
+
+ QThread thread;
+ receiver->moveToThread(&thread);
+ thread.connect(receiver, SIGNAL(destroyed()), SLOT(quit()), Qt::DirectConnection);
+ thread.start();
+
+ QPointer<DisconnectObject> p = receiver;
+ sender.emitSignal1();
+ QVERIFY(!p.isNull());
+
+ receiver->deleteLater();
+
+ QVERIFY(thread.wait(10000));
+ QVERIFY(p.isNull());
+ }
+
+ {
+ SenderObject sender;
+ DisconnectObject *receiver = new DisconnectObject();
+ receiver->connect(&sender,
+ SIGNAL(signal1()),
+ SLOT(relaySignalAndProcessEvents()),
+ Qt::BlockingQueuedConnection);
+ receiver->connect(receiver,
+ SIGNAL(relayedSignal()),
+ SLOT(disconnectSelf()),
+ Qt::QueuedConnection);
+
+ QThread thread;
+ receiver->moveToThread(&thread);
+ thread.connect(receiver, SIGNAL(destroyed()), SLOT(quit()), Qt::DirectConnection);
+ thread.start();
+
+ QPointer<DisconnectObject> p = receiver;
+ sender.emitSignal1();
+ QVERIFY(!p.isNull());
+
+ receiver->deleteLater();
+
+ QVERIFY(thread.wait(10000));
+ QVERIFY(p.isNull());
+ }
+}
+
+void tst_QObject::dumpObjectInfo()
+{
+ QObject a, b;
+ QObject::connect(&a, SIGNAL(destroyed(QObject *)), &b, SLOT(deleteLater()));
+ a.disconnect(&b);
+ a.dumpObjectInfo(); // should not crash
+}
+
+class ConnectToSender : public QObject
+{ Q_OBJECT
+ public slots:
+ void uselessSlot() { count++; }
+
+ void harmfullSlot() {
+ //this used to crash
+ connect(sender(), SIGNAL(signal4()), this, SLOT(uselessSlot()));
+ //play a little bit with the memory in order to really get a segfault.
+ connect(sender(), SIGNAL(signal1()), this, SLOT(uselessSlot()));
+ QList<double>() << 45 << 78 << 65 << 121 << 45 << 78 << 12;
+ }
+ public:
+ int count;
+};
+
+void tst_QObject::connectToSender()
+{
+ SenderObject s;
+ ConnectToSender r;
+ r.count = 0;
+ QObject::connect(&s, SIGNAL(signal1()), &r, SLOT(harmfullSlot()));
+ QObject::connect(&s, SIGNAL(signal1()), &r, SLOT(uselessSlot()));
+
+ s.emitSignal1();
+
+ QCOMPARE(r.count, 1);
+ s.emitSignal4();
+ QCOMPARE(r.count, 2);
+}
+
+void tst_QObject::qobjectConstCast()
+{
+ FooObject obj;
+
+ QObject *ptr = &obj;
+ const QObject *cptr = &obj;
+
+ QVERIFY(qobject_cast<FooObject *>(ptr));
+ QVERIFY(qobject_cast<const FooObject *>(cptr));
+}
+
+void tst_QObject::uniqConnection()
+{
+ SenderObject *s = new SenderObject;
+ ReceiverObject *r1 = new ReceiverObject;
+ ReceiverObject *r2 = new ReceiverObject;
+ r1->reset();
+ r2->reset();
+ ReceiverObject::sequence = 0;
+
+ QVERIFY( connect( s, SIGNAL( signal1() ), r1, SLOT( slot1() ) , Qt::UniqueConnection) );
+ QVERIFY( connect( s, SIGNAL( signal1() ), r2, SLOT( slot1() ) , Qt::UniqueConnection) );
+ QVERIFY( connect( s, SIGNAL( signal1() ), r1, SLOT( slot3() ) , Qt::UniqueConnection) );
+ QVERIFY( connect( s, SIGNAL( signal3() ), r1, SLOT( slot3() ) , Qt::UniqueConnection) );
+
+ s->emitSignal1();
+ s->emitSignal2();
+ s->emitSignal3();
+ s->emitSignal4();
+
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 2 );
+ QCOMPARE( r1->count_slot4, 0 );
+ QCOMPARE( r2->count_slot1, 1 );
+ QCOMPARE( r2->count_slot2, 0 );
+ QCOMPARE( r2->count_slot3, 0 );
+ QCOMPARE( r2->count_slot4, 0 );
+ QCOMPARE( r1->sequence_slot1, 1 );
+ QCOMPARE( r2->sequence_slot1, 2 );
+ QCOMPARE( r1->sequence_slot3, 4 );
+
+ r1->reset();
+ r2->reset();
+ ReceiverObject::sequence = 0;
+
+ QVERIFY( connect( s, SIGNAL( signal4() ), r1, SLOT( slot4() ) , Qt::UniqueConnection) );
+ QVERIFY( connect( s, SIGNAL( signal4() ), r2, SLOT( slot4() ) , Qt::UniqueConnection) );
+ QVERIFY(!connect( s, SIGNAL( signal4() ), r2, SLOT( slot4() ) , Qt::UniqueConnection) );
+ QVERIFY( connect( s, SIGNAL( signal1() ), r2, SLOT( slot4() ) , Qt::UniqueConnection) );
+ QVERIFY(!connect( s, SIGNAL( signal4() ), r1, SLOT( slot4() ) , Qt::UniqueConnection) );
+
+ s->emitSignal4();
+ QCOMPARE( r1->count_slot4, 1 );
+ QCOMPARE( r2->count_slot4, 1 );
+ QCOMPARE( r1->sequence_slot4, 1 );
+ QCOMPARE( r2->sequence_slot4, 2 );
+
+ r1->reset();
+ r2->reset();
+ ReceiverObject::sequence = 0;
+
+ connect( s, SIGNAL( signal4() ), r1, SLOT( slot4() ) );
+
+ s->emitSignal4();
+ QCOMPARE( r1->count_slot4, 2 );
+ QCOMPARE( r2->count_slot4, 1 );
+ QCOMPARE( r1->sequence_slot4, 3 );
+ QCOMPARE( r2->sequence_slot4, 2 );
+
+ delete s;
+ delete r1;
+ delete r2;
+}
+
+void tst_QObject::interfaceIid()
+{
+ QCOMPARE(QByteArray(qobject_interface_iid<Foo::Bleh *>()),
+ QByteArray(Bleh_iid));
+ QCOMPARE(QByteArray(qobject_interface_iid<Foo::Bar *>()),
+ QByteArray("com.qtest.foobar"));
+ QCOMPARE(QByteArray(qobject_interface_iid<FooObject *>()),
+ QByteArray());
+}
+
+void tst_QObject::deleteQObjectWhenDeletingEvent()
+{
+ //this is related to task 259514
+ //before the fix this used to dead lock when the QObject from the event was destroyed
+
+ struct MyEvent : public QEvent
+ {
+ MyEvent() : QEvent(QEvent::User) { }
+ QObject obj;
+ };
+
+ QObject o;
+ QApplication::postEvent(&o, new MyEvent);
+ QCoreApplication::removePostedEvents(&o); // here you would get a deadlock
+}
+
+class OverloadObject : public QObject
+{
+ friend class tst_QObject;
+ Q_OBJECT
+ signals:
+ void sig(int i, char c, qreal m = 12);
+ void sig(int i, int j = 12);
+ void sig(QObject *o, QObject *p, QObject *q = 0, QObject *r = 0) const;
+ void other(int a = 0);
+ void sig(QObject *o, OverloadObject *p = 0, QObject *q = 0, QObject *r = 0);
+ void sig(double r = 0.5);
+ public slots:
+ void slo(int i, int j = 43)
+ {
+ s_num += 1;
+ i1_num = i;
+ i2_num = j;
+ }
+ void slo(QObject *o, QObject *p = qApp, QObject *q = qApp, QObject *r = qApp)
+ {
+ s_num += 10;
+ o1_obj = o;
+ o2_obj = p;
+ o3_obj = q;
+ o4_obj = r;
+ }
+ void slo()
+ {
+ s_num += 100;
+ }
+
+ public:
+ int s_num;
+ int i1_num;
+ int i2_num;
+ QObject *o1_obj;
+ QObject *o2_obj;
+ QObject *o3_obj;
+ QObject *o4_obj;
+};
+
+void tst_QObject::overloads()
+{
+ OverloadObject obj1;
+ OverloadObject obj2;
+ QObject obj3;
+ obj1.s_num = 0;
+ obj2.s_num = 0;
+
+ connect (&obj1, SIGNAL(sig(int)) , &obj1, SLOT(slo(int)));
+ connect (&obj1, SIGNAL(sig(QObject *, QObject *, QObject *)) , &obj1, SLOT(slo(QObject * , QObject *, QObject *)));
+
+ connect (&obj1, SIGNAL(sig(QObject *, QObject *, QObject *, QObject *)) , &obj2, SLOT(slo(QObject * , QObject *, QObject *)));
+ connect (&obj1, SIGNAL(sig(QObject *)) , &obj2, SLOT(slo()));
+ connect (&obj1, SIGNAL(sig(int, int)) , &obj2, SLOT(slo(int, int)));
+
+ emit obj1.sig(0.5); //connected to nothing
+ emit obj1.sig(1, 'a'); //connected to nothing
+ QCOMPARE(obj1.s_num, 0);
+ QCOMPARE(obj2.s_num, 0);
+
+ emit obj1.sig(1); //this signal is connected
+ QCOMPARE(obj1.s_num, 1);
+ QCOMPARE(obj1.i1_num, 1);
+ QCOMPARE(obj1.i2_num, 43); //default argument of the slot
+
+ QCOMPARE(obj2.s_num, 1);
+ QCOMPARE(obj2.i1_num, 1);
+ QCOMPARE(obj2.i2_num, 12); //default argument of the signal
+
+
+ emit obj1.sig(&obj2); //this signal is conencted to obj2
+ QCOMPARE(obj1.s_num, 1);
+ QCOMPARE(obj2.s_num, 101);
+ emit obj1.sig(&obj2, &obj3); //this signal is connected
+ QCOMPARE(obj1.s_num, 11);
+ QCOMPARE(obj1.o1_obj, (QObject *)&obj2);
+ QCOMPARE(obj1.o2_obj, &obj3);
+ QCOMPARE(obj1.o3_obj, (QObject *)0); //default arg of the signal
+ QCOMPARE(obj1.o4_obj, (QObject *)qApp); //default arg of the slot
+
+ QCOMPARE(obj2.s_num, 111);
+ QCOMPARE(obj2.o1_obj, (QObject *)&obj2);
+ QCOMPARE(obj2.o2_obj, &obj3);
+ QCOMPARE(obj2.o3_obj, (QObject *)0); //default arg of the signal
+ QCOMPARE(obj2.o4_obj, (QObject *)qApp); //default arg of the slot
+}
+
+class ManySignals : public QObject
+{ Q_OBJECT
+ friend class tst_QObject;
+signals:
+ void sig00(); void sig01(); void sig02(); void sig03(); void sig04();
+ void sig05(); void sig06(); void sig07(); void sig08(); void sig09();
+ void sig10(); void sig11(); void sig12(); void sig13(); void sig14();
+ void sig15(); void sig16(); void sig17(); void sig18(); void sig19();
+ void sig20(); void sig21(); void sig22(); void sig23(); void sig24();
+ void sig25(); void sig26(); void sig27(); void sig28(); void sig29();
+ void sig30(); void sig31(); void sig32(); void sig33(); void sig34();
+ void sig35(); void sig36(); void sig37(); void sig38(); void sig39();
+ void sig40(); void sig41(); void sig42(); void sig43(); void sig44();
+ void sig45(); void sig46(); void sig47(); void sig48(); void sig49();
+ void sig50(); void sig51(); void sig52(); void sig53(); void sig54();
+ void sig55(); void sig56(); void sig57(); void sig58(); void sig59();
+ void sig60(); void sig61(); void sig62(); void sig63(); void sig64();
+ void sig65(); void sig66(); void sig67(); void sig68(); void sig69();
+
+public slots:
+ void received() { rec++; }
+public:
+ int rec;
+};
+
+
+void tst_QObject::isSignalConnected()
+{
+ ManySignals o;
+ o.rec = 0;
+#ifdef QT_BUILD_INTERNAL
+ QObjectPrivate *priv = QObjectPrivate::get(&o);
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("destroyed()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig00()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig05()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig15()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig29()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig60()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig61()")));
+#endif
+
+ QObject::connect(&o, SIGNAL(sig00()), &o, SIGNAL(sig69()));
+ QObject::connect(&o, SIGNAL(sig34()), &o, SIGNAL(sig03()));
+ QObject::connect(&o, SIGNAL(sig69()), &o, SIGNAL(sig34()));
+ QObject::connect(&o, SIGNAL(sig03()), &o, SIGNAL(sig18()));
+
+#ifdef QT_BUILD_INTERNAL
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("destroyed()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig05()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig15()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig29()")));
+
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig00()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig03()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig34()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig69()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig18()")));
+#endif
+
+ QObject::connect(&o, SIGNAL(sig18()), &o, SIGNAL(sig29()));
+ QObject::connect(&o, SIGNAL(sig29()), &o, SIGNAL(sig62()));
+ QObject::connect(&o, SIGNAL(sig62()), &o, SIGNAL(sig28()));
+ QObject::connect(&o, SIGNAL(sig28()), &o, SIGNAL(sig27()));
+
+#ifdef QT_BUILD_INTERNAL
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig18()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig62()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig28()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig69()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig27()")));
+#endif
+
+ QCOMPARE(o.rec, 0);
+ emit o.sig01();
+ emit o.sig34();
+ QCOMPARE(o.rec, 0);
+
+ QObject::connect(&o, SIGNAL(sig27()), &o, SLOT(received()));
+
+#ifdef QT_BUILD_INTERNAL
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig00()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig03()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig34()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig18()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig62()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig28()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig69()")));
+ QVERIFY(priv->isSignalConnected(priv->signalIndex("sig27()")));
+
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig04()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig21()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig25()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig55()")));
+ QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig61()")));
+#endif
+
+ emit o.sig00();
+ QCOMPARE(o.rec, 1);
+ emit o.sig69();
+ QCOMPARE(o.rec, 2);
+ emit o.sig36();
+ QCOMPARE(o.rec, 2);
+}
+
+void tst_QObject::qMetaObjectConnect()
+{
+ SenderObject *s = new SenderObject;
+ ReceiverObject *r1 = new ReceiverObject;
+ ReceiverObject *r2 = new ReceiverObject;
+ r1->reset();
+ r2->reset();
+ ReceiverObject::sequence = 0;
+
+ int signal1Index = s->metaObject()->indexOfSignal("signal1()");
+ int signal3Index = s->metaObject()->indexOfSignal("signal3()");
+ int slot1Index = r1->metaObject()->indexOfSlot("slot1()");
+ int slot2Index = r1->metaObject()->indexOfSlot("slot2()");
+ int slot3Index = r1->metaObject()->indexOfSlot("slot3()");
+
+ QVERIFY(slot1Index > 0);
+ QVERIFY(slot2Index > 0);
+ QVERIFY(slot3Index > 0);
+
+ QVERIFY( QMetaObject::connect( s, signal1Index, r1, slot1Index) );
+ QVERIFY( QMetaObject::connect( s, signal3Index, r2, slot3Index) );
+ QVERIFY( QMetaObject::connect( s, -1, r2, slot2Index) );
+
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 0 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 0 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ s->emitSignal1();
+
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 0 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 1 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ s->emitSignal2();
+ s->emitSignal3();
+ s->emitSignal4();
+
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 0 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 4 );
+ QCOMPARE( r2->count_slot3, 1 );
+
+ QVERIFY( QMetaObject::disconnect( s, signal1Index, r1, slot1Index) );
+ QVERIFY( QMetaObject::disconnect( s, signal3Index, r2, slot3Index) );
+ QVERIFY( QMetaObject::disconnect( s, -1, r2, slot2Index) );
+
+ s->emitSignal1();
+ s->emitSignal2();
+ s->emitSignal3();
+ s->emitSignal4();
+
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 0 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 4 );
+ QCOMPARE( r2->count_slot3, 1 );
+
+ //some "dynamic" signal
+ QVERIFY( QMetaObject::connect( s, s->metaObject()->methodOffset() + 20, r1, slot3Index) );
+ QVERIFY( QMetaObject::connect( s, s->metaObject()->methodOffset() + 35, r2, slot1Index) );
+ QVERIFY( QMetaObject::connect( s, -1, r1, slot2Index) );
+
+ r1->reset();
+ r2->reset();
+
+ void *args[] = { 0 , 0 };
+ QMetaObject::activate(s, s->metaObject()->methodOffset() + 20, args);
+ QMetaObject::activate(s, s->metaObject()->methodOffset() + 48, args);
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 2 );
+ QCOMPARE( r1->count_slot3, 1 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 0 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ QMetaObject::activate(s, s->metaObject()->methodOffset() + 35, args);
+ s->emitSignal1();
+ s->emitSignal2();
+
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 5 );
+ QCOMPARE( r1->count_slot3, 1 );
+ QCOMPARE( r2->count_slot1, 1 );
+ QCOMPARE( r2->count_slot2, 0 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ delete s;
+ r1->reset();
+ r2->reset();
+
+#define SIGNAL_INDEX(S) obj1.metaObject()->indexOfSignal(QMetaObject::normalizedSignature(#S))
+ OverloadObject obj1;
+ QObject obj2, obj3;
+
+ QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(int)) , r1, slot1Index);
+ QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(QObject *, QObject *, QObject *)) , r2, slot1Index);
+
+ QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(QObject *, QObject *, QObject *, QObject *)) , r1, slot2Index);
+ QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(QObject *)) , r2, slot2Index);
+ QMetaObject::connect(&obj1, SIGNAL_INDEX(sig(int, int)) , r1, slot3Index);
+
+ emit obj1.sig(0.5); //connected to nothing
+ emit obj1.sig(1, 'a'); //connected to nothing
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 0 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 0 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ emit obj1.sig(1); //this signal is connected
+ emit obj1.sig(&obj2);
+
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 0 );
+ QCOMPARE( r1->count_slot3, 1 );
+ QCOMPARE( r2->count_slot1, 0 );
+ QCOMPARE( r2->count_slot2, 1 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ emit obj1.sig(&obj2, &obj3); //this signal is connected
+
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 1 );
+ QCOMPARE( r1->count_slot3, 1 );
+ QCOMPARE( r2->count_slot1, 1 );
+ QCOMPARE( r2->count_slot2, 1 );
+ QCOMPARE( r2->count_slot3, 0 );
+
+ delete r1;
+ delete r2;
+
+}
+
+void tst_QObject::qMetaObjectDisconnectOne()
+{
+ SenderObject *s = new SenderObject;
+ ReceiverObject *r1 = new ReceiverObject;
+
+ int signal1Index = s->metaObject()->indexOfSignal("signal1()");
+ int signal3Index = s->metaObject()->indexOfSignal("signal3()");
+ int slot1Index = r1->metaObject()->indexOfSlot("slot1()");
+ int slot2Index = r1->metaObject()->indexOfSlot("slot2()");
+
+ QVERIFY(signal1Index > 0);
+ QVERIFY(signal3Index > 0);
+ QVERIFY(slot1Index > 0);
+ QVERIFY(slot2Index > 0);
+
+ QVERIFY( QMetaObject::connect(s, signal1Index, r1, slot1Index) );
+ QVERIFY( QMetaObject::connect(s, signal3Index, r1, slot2Index) );
+ QVERIFY( QMetaObject::connect(s, signal3Index, r1, slot2Index) );
+ QVERIFY( QMetaObject::connect(s, signal3Index, r1, slot2Index) );
+
+ r1->reset();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+
+ s->emitSignal1();
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 0 );
+
+ s->emitSignal3();
+ QCOMPARE( r1->count_slot1, 1 );
+ QCOMPARE( r1->count_slot2, 3 );
+
+ r1->reset();
+ QVERIFY( QMetaObject::disconnectOne(s, signal1Index, r1, slot1Index) );
+ QVERIFY( QMetaObject::disconnectOne(s, signal3Index, r1, slot2Index) );
+
+ s->emitSignal1();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+
+ s->emitSignal3();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 2 );
+
+ r1->reset();
+ QVERIFY( false == QMetaObject::disconnectOne(s, signal1Index, r1, slot1Index) );
+ QVERIFY( QMetaObject::disconnectOne(s, signal3Index, r1, slot2Index) );
+
+ s->emitSignal1();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+
+ s->emitSignal3();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 1 );
+
+ r1->reset();
+ QVERIFY( false == QMetaObject::disconnectOne(s, signal1Index, r1, slot1Index) );
+ QVERIFY( QMetaObject::disconnectOne(s, signal3Index, r1, slot2Index) );
+
+ s->emitSignal1();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+
+ s->emitSignal3();
+ QCOMPARE( r1->count_slot1, 0 );
+ QCOMPARE( r1->count_slot2, 0 );
+
+ delete s;
+ delete r1;
+}
+
+class ConfusingObject : public SenderObject
+{ Q_OBJECT
+public slots:
+ void signal1() { s++; }
+signals:
+ void aPublicSlot();
+public:
+ int s;
+ ConfusingObject() : s(0) {}
+ friend class tst_QObject;
+};
+
+void tst_QObject::sameName()
+{
+ ConfusingObject c1, c2;
+ QVERIFY(connect(&c1, SIGNAL(signal1()), &c1, SLOT(signal1())));
+ c1.emitSignal1();
+ QCOMPARE(c1.s, 1);
+
+ QVERIFY(connect(&c2, SIGNAL(signal1()), &c1, SIGNAL(signal1())));
+ c2.emitSignal1();
+ QCOMPARE(c1.s, 2);
+
+ QVERIFY(connect(&c2, SIGNAL(aPublicSlot()), &c1, SLOT(signal1())));
+ c2.aPublicSlot();
+ QCOMPARE(c2.aPublicSlotCalled, 0);
+ QCOMPARE(c1.aPublicSlotCalled, 0);
+ QCOMPARE(c1.s, 3);
+
+ QVERIFY(connect(&c2, SIGNAL(aPublicSlot()), &c1, SLOT(aPublicSlot())));
+ c2.aPublicSlot();
+ QCOMPARE(c2.aPublicSlotCalled, 0);
+ QCOMPARE(c1.aPublicSlotCalled, 1);
+ QCOMPARE(c1.s, 4);
+}
+
+void tst_QObject::connectByMetaMethods()
+{
+ SenderObject s;
+ ReceiverObject r;
+ const QMetaObject *smeta = s.metaObject();
+ const QMetaObject *rmeta = r.metaObject();
+ int sigIndx = smeta->indexOfSignal(QMetaObject::normalizedSignature("signal1()"));
+ int slotIndx = rmeta->indexOfSlot(QMetaObject::normalizedSignature("slot1()"));
+ QVERIFY( sigIndx != -1 );
+ QVERIFY( slotIndx != -1 );
+ QMetaMethod signal = smeta->method(sigIndx);
+ QMetaMethod slot = rmeta->method(slotIndx);
+
+ QVERIFY(connect(&s,signal, &r,slot));
+
+ QVERIFY(!r.called(1));
+ s.emitSignal1();
+ QVERIFY(r.called(1));
+}
+
+void tst_QObject::connectByMetaMethodSlotInsteadOfSignal()
+{
+ SenderObject s;
+ ReceiverObject r;
+ const QMetaObject *smeta = s.metaObject();
+ const QMetaObject *rmeta = r.metaObject();
+ int badIndx = smeta->indexOfSlot(QMetaObject::normalizedSignature("aPublicSlot()"));
+ int slotIndx = rmeta->indexOfSlot(QMetaObject::normalizedSignature("slot1()"));
+ QVERIFY( badIndx != -1 );
+ QVERIFY( slotIndx != -1 );
+ QMetaMethod badMethod = smeta->method(badIndx);
+ QMetaMethod slot = rmeta->method(slotIndx);
+
+ QTest::ignoreMessage(QtWarningMsg,"QObject::connect: Cannot connect SenderObject::aPublicSlot() to ReceiverObject::slot1()");
+ QVERIFY(!connect(&s,badMethod, &r,slot));
+}
+
+class Constructable: public QObject
+{
+ Q_OBJECT
+
+public:
+ Q_INVOKABLE Constructable(){}
+
+};
+
+void tst_QObject::connectConstructorByMetaMethod()
+{
+ Constructable sc;
+ Constructable rc;
+ SenderObject s;
+ ReceiverObject r;
+
+ const QMetaObject cmeta = Constructable::staticMetaObject;
+ const QMetaObject *smeta = s.metaObject();
+ const QMetaObject *rmeta = r.metaObject();
+ int constructorIndx = cmeta.indexOfConstructor(QMetaObject::normalizedSignature("Constructable()"));
+ int sigIndx = smeta->indexOfSignal(QMetaObject::normalizedSignature("signal1()"));
+ int slotIndx = rmeta->indexOfSlot(QMetaObject::normalizedSignature("slot1()"));
+ QVERIFY( constructorIndx != -1 );
+ QVERIFY( sigIndx != -1 );
+ QVERIFY( slotIndx != -1 );
+
+ QMetaMethod constructor = cmeta.constructor(constructorIndx);
+ QMetaMethod signal = smeta->method(sigIndx);
+ QMetaMethod slot = rmeta->method(slotIndx);
+
+ QTest::ignoreMessage(QtWarningMsg,"QObject::connect: Cannot connect Constructable::Constructable() to ReceiverObject::slot1()");
+ QVERIFY(!connect(&sc,constructor, &r,slot));
+ QTest::ignoreMessage(QtWarningMsg,"QObject::connect: Cannot connect SenderObject::signal1() to Constructable::Constructable()");
+ QVERIFY(!connect(&s,signal, &rc,constructor));
+ QTest::ignoreMessage(QtWarningMsg,"QObject::connect: Cannot connect Constructable::Constructable() to Constructable::Constructable()");
+ QVERIFY(!connect(&sc,constructor, &rc,constructor));
+}
+
+void tst_QObject::disconnectByMetaMethod()
+{
+ SenderObject *s = new SenderObject;
+ ReceiverObject *r1 = new ReceiverObject;
+ ReceiverObject *r2 = new ReceiverObject;
+
+ QMetaMethod signal1 = s->metaObject()->method(
+ s->metaObject()->indexOfMethod("signal1()"));
+ QMetaMethod signal2 = s->metaObject()->method(
+ s->metaObject()->indexOfMethod("signal2()"));
+ QMetaMethod signal3 = s->metaObject()->method(
+ s->metaObject()->indexOfMethod("signal3()"));
+ QMetaMethod signal4 = s->metaObject()->method(
+ s->metaObject()->indexOfMethod("signal4()"));
+
+ QMetaMethod slot1 = r1->metaObject()->method(
+ r1->metaObject()->indexOfMethod("slot1()"));
+ QMetaMethod slot2 = r1->metaObject()->method(
+ r1->metaObject()->indexOfMethod("slot2()"));
+ QMetaMethod slot3 = r1->metaObject()->method(
+ r1->metaObject()->indexOfMethod("slot3()"));
+ QMetaMethod slot4 = r1->metaObject()->method(
+ r1->metaObject()->indexOfMethod("slot4()"));
+
+ connect(s, signal1, r1, slot1);
+
+ s->emitSignal1();
+
+ QVERIFY(r1->called(1));
+ r1->reset();
+
+ // usual disconnect with all parameters given
+ bool ret = QObject::disconnect(s, signal1, r1, slot1);
+
+ s->emitSignal1();
+
+ QVERIFY(!r1->called(1));
+ r1->reset();
+
+ QVERIFY(ret);
+ ret = QObject::disconnect(s, signal1, r1, slot1);
+ QVERIFY(!ret);
+
+ r1->reset();
+
+ connect( s, signal1, r1, slot1 );
+ connect( s, signal1, r1, slot2 );
+ connect( s, signal1, r1, slot3 );
+ connect( s, signal2, r1, slot4 );
+
+ // disconnect s's signal1() from all slots of r1
+ QObject::disconnect(s, signal1, r1, QMetaMethod());
+
+ s->emitSignal1();
+ s->emitSignal2();
+
+ QVERIFY(!r1->called(1));
+ QVERIFY(!r1->called(2));
+ QVERIFY(!r1->called(3));
+ QVERIFY(r1->called(4));
+ r1->reset();
+ // make sure all is disconnected again
+ QObject::disconnect(s, 0, r1, 0);
+
+ connect(s, signal1, r1, slot1);
+ connect(s, signal1, r2, slot1);
+ connect(s, signal2, r1, slot2);
+ connect(s, signal2, r2, slot2);
+ connect(s, signal3, r1, slot3);
+ connect(s, signal3, r2, slot3);
+
+ // disconnect signal1() from all receivers
+ QObject::disconnect(s, signal1, 0, QMetaMethod());
+ s->emitSignal1();
+ s->emitSignal2();
+ s->emitSignal3();
+
+ QVERIFY(!r1->called(1));
+ QVERIFY(!r2->called(1));
+ QVERIFY(r1->called(2));
+ QVERIFY(r2->called(2));
+ QVERIFY(r1->called(2));
+ QVERIFY(r2->called(2));
+
+ r1->reset();
+ r2->reset();
+
+ // disconnect all signals of s from all receivers
+ QObject::disconnect( s, 0, 0, 0 );
+
+ connect( s, signal1, r1, slot1 );
+ connect( s, signal1, r2, slot1 );
+
+ // disconnect all signals from slot1 of r1
+ QObject::disconnect(s, QMetaMethod(), r1, slot1);
+
+ s->emitSignal1();
+
+ QVERIFY(!r1->called(1));
+ QVERIFY(r2->called(1));
+
+ delete r2;
+ delete r1;
+ delete s;
+}
+
+void tst_QObject::disconnectNotSignalMetaMethod()
+{
+ SenderObject s;
+ ReceiverObject r;
+
+ connect(&s, SIGNAL(signal1()), &r, SLOT(slot1()));
+
+ QMetaMethod slot = s.metaObject()->method(
+ s.metaObject()->indexOfMethod("aPublicSlot()"));
+
+ QTest::ignoreMessage(QtWarningMsg,"Object::disconnect: Attempt to unbind non-signal SenderObject::aPublicSlot()");
+ QVERIFY(!QObject::disconnect(&s, slot, &r, QMetaMethod()));
+}
+
+class ThreadAffinityThread : public QThread
+{
+public:
+ SenderObject *sender;
+
+ ThreadAffinityThread(SenderObject *sender)
+ : sender(sender)
+ { }
+ void run()
+ {
+ sender->emitSignal1();
+ }
+};
+
+void tst_QObject::autoConnectionBehavior()
+{
+ SenderObject *sender = new SenderObject;
+ ReceiverObject *receiver = new ReceiverObject;
+ connect(sender, SIGNAL(signal1()), receiver, SLOT(slot1()));
+
+ // at emit, currentThread == sender->thread(), currentThread == receiver->thread(), sender->thread() == receiver->thread()
+ QVERIFY(!receiver->called(1));
+ sender->emitSignal1();
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread != sender->thread(), currentThread != receiver->thread(), sender->thread() == receiver->thread()
+ ThreadAffinityThread emitThread1(sender);
+ QVERIFY(!receiver->called(1));
+ emitThread1.start();
+ QVERIFY(emitThread1.wait(30000));
+ QVERIFY(!receiver->called(1));
+ QCoreApplication::sendPostedEvents(receiver, QEvent::MetaCall);
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread == sender->thread(), currentThread != receiver->thread(), sender->thread() != receiver->thread()
+ sender->moveToThread(&emitThread1);
+ QVERIFY(!receiver->called(1));
+ emitThread1.start();
+ QVERIFY(emitThread1.wait(30000));
+ QVERIFY(!receiver->called(1));
+ QCoreApplication::sendPostedEvents(receiver, QEvent::MetaCall);
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread != sender->thread(), currentThread == receiver->thread(), sender->thread() != receiver->thread()
+ QVERIFY(!receiver->called(1));
+ sender->emitSignal1();
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ // at emit, currentThread != sender->thread(), currentThread != receiver->thread(), sender->thread() != receiver->thread()
+ ThreadAffinityThread emitThread2(sender);
+ QThread receiverThread;
+ QTimer *timer = new QTimer;
+ timer->setSingleShot(true);
+ timer->setInterval(100);
+ connect(&receiverThread, SIGNAL(started()), timer, SLOT(start()));
+ connect(timer, SIGNAL(timeout()), &receiverThread, SLOT(quit()), Qt::DirectConnection);
+ connect(&receiverThread, SIGNAL(finished()), timer, SLOT(deleteLater()));
+ timer->moveToThread(&receiverThread);
+
+ receiver->moveToThread(&receiverThread);
+ QVERIFY(!receiver->called(1));
+ emitThread2.start();
+ QVERIFY(emitThread2.wait(30000));
+ QVERIFY(!receiver->called(1));
+ receiverThread.start();
+ QVERIFY(receiverThread.wait(30000));
+ QVERIFY(receiver->called(1));
+ receiver->reset();
+
+ delete sender;
+ delete receiver;
+}
+
+class BaseDestroyed : public QObject
+{ Q_OBJECT
+ QList<QString> fooList;
+ bool destroyed;
+public:
+ BaseDestroyed() : destroyed(false)
+ { fooList << "a" << "b"; }
+ ~BaseDestroyed()
+ {
+ QVERIFY(!destroyed);
+ destroyed = true;
+ }
+
+public slots:
+ void slotUseList()
+ {
+ QVERIFY(!destroyed);
+ fooList << "c" << "d";
+ }
+};
+
+void tst_QObject::baseDestroyed()
+{
+ BaseDestroyed d;
+ connect(&d, SIGNAL(destroyed()), &d, SLOT(slotUseList()));
+ //When d goes out of scope, slotUseList should not be called as the BaseDestroyed has
+ // already been destroyed while ~QObject emit destroyed
+}
+
+QTEST_MAIN(tst_QObject)
+#include "tst_qobject.moc"
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.pro b/tests/auto/corelib/kernel/qobject/tst_qobject.pro
new file mode 100644
index 0000000000..29de071328
--- /dev/null
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.pro
@@ -0,0 +1,21 @@
+load(qttest_p4)
+SOURCES += tst_qobject.cpp
+
+# this is here for a reason, moc_oldnormalizedobject.cpp is not auto-generated, it was generated by
+# moc from Qt 4.6, and should *not* be generated by the current moc
+SOURCES += moc_oldnormalizeobject.cpp
+
+QT = core \
+ network \
+ gui \
+ core-private
+wince*: {
+ addFiles.files = signalbug.exe
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+}
+symbian: {
+ addFiles.files = signalbug.exe
+ addFiles.path = \\sys\\bin
+ DEPLOYMENT += addFiles
+}
diff --git a/tests/auto/corelib/kernel/qpointer/.gitignore b/tests/auto/corelib/kernel/qpointer/.gitignore
new file mode 100644
index 0000000000..ce97ab782d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qpointer/.gitignore
@@ -0,0 +1 @@
+tst_qpointer
diff --git a/tests/auto/corelib/kernel/qpointer/qpointer.pro b/tests/auto/corelib/kernel/qpointer/qpointer.pro
new file mode 100644
index 0000000000..5728b7bb4f
--- /dev/null
+++ b/tests/auto/corelib/kernel/qpointer/qpointer.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qpointer.cpp
+
+
diff --git a/tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp b/tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp
new file mode 100644
index 0000000000..fed98ec86a
--- /dev/null
+++ b/tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp
@@ -0,0 +1,343 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <QPointer>
+#include <QWidget>
+
+class tst_QPointer : public QObject
+{
+ Q_OBJECT
+public:
+ inline tst_QPointer *me() const
+ { return const_cast<tst_QPointer *>(this); }
+
+private slots:
+ void constructors();
+ void destructor();
+ void assignment_operators();
+ void equality_operators();
+ void isNull();
+ void dereference_operators();
+ void disconnect();
+ void castDuringDestruction();
+ void threadSafety();
+};
+
+void tst_QPointer::constructors()
+{
+ QPointer<QObject> p1;
+ QPointer<QObject> p2(this);
+ QPointer<QObject> p3(p2);
+ QCOMPARE(p1, QPointer<QObject>(0));
+ QCOMPARE(p2, QPointer<QObject>(this));
+ QCOMPARE(p3, QPointer<QObject>(this));
+}
+
+void tst_QPointer::destructor()
+{
+ // Make two QPointer's to the same object
+ QObject *object = new QObject;
+ QPointer<QObject> p1 = object;
+ QPointer<QObject> p2 = object;
+ // Check that they point to the correct object
+ QCOMPARE(p1, QPointer<QObject>(object));
+ QCOMPARE(p2, QPointer<QObject>(object));
+ QCOMPARE(p1, p2);
+ // Destroy the guarded object
+ delete object;
+ // Check that both pointers were zeroed
+ QCOMPARE(p1, QPointer<QObject>(0));
+ QCOMPARE(p2, QPointer<QObject>(0));
+ QCOMPARE(p1, p2);
+}
+
+void tst_QPointer::assignment_operators()
+{
+ QPointer<QObject> p1;
+ QPointer<QObject> p2;
+
+ // Test assignment with a QObject-derived object pointer
+ p1 = this;
+ p2 = p1;
+ QCOMPARE(p1, QPointer<QObject>(this));
+ QCOMPARE(p2, QPointer<QObject>(this));
+ QCOMPARE(p1, QPointer<QObject>(p2));
+
+ // Test assignment with a null pointer
+ p1 = 0;
+ p2 = p1;
+ QCOMPARE(p1, QPointer<QObject>(0));
+ QCOMPARE(p2, QPointer<QObject>(0));
+ QCOMPARE(p1, QPointer<QObject>(p2));
+
+ // Test assignment with a real QObject pointer
+ QObject *object = new QObject;
+
+ p1 = object;
+ p2 = p1;
+ QCOMPARE(p1, QPointer<QObject>(object));
+ QCOMPARE(p2, QPointer<QObject>(object));
+ QCOMPARE(p1, QPointer<QObject>(p2));
+
+ // Test assignment with the same pointer that's already guarded
+ p1 = object;
+ p2 = p1;
+ QCOMPARE(p1, QPointer<QObject>(object));
+ QCOMPARE(p2, QPointer<QObject>(object));
+ QCOMPARE(p1, QPointer<QObject>(p2));
+
+ // Cleanup
+ delete object;
+}
+
+void tst_QPointer::equality_operators()
+{
+ QPointer<QObject> p1;
+ QPointer<QObject> p2;
+
+ QVERIFY(p1 == p2);
+
+ QObject *object = 0;
+ QWidget *widget = 0;
+
+ p1 = object;
+ QVERIFY(p1 == p2);
+ QVERIFY(p1 == object);
+ p2 = object;
+ QVERIFY(p2 == p1);
+ QVERIFY(p2 == object);
+
+ p1 = this;
+ QVERIFY(p1 != p2);
+ p2 = p1;
+ QVERIFY(p1 == p2);
+
+ // compare to zero
+ p1 = 0;
+ QVERIFY(p1 == 0);
+ QVERIFY(0 == p1);
+ QVERIFY(p2 != 0);
+ QVERIFY(0 != p2);
+ QVERIFY(p1 == object);
+ QVERIFY(object == p1);
+ QVERIFY(p2 != object);
+ QVERIFY(object != p2);
+ QVERIFY(p1 == widget);
+ QVERIFY(widget == p1);
+ QVERIFY(p2 != widget);
+ QVERIFY(widget != p2);
+}
+
+void tst_QPointer::isNull()
+{
+ QPointer<QObject> p1;
+ QVERIFY(p1.isNull());
+ p1 = this;
+ QVERIFY(!p1.isNull());
+ p1 = 0;
+ QVERIFY(p1.isNull());
+}
+
+void tst_QPointer::dereference_operators()
+{
+ QPointer<tst_QPointer> p1 = this;
+ QPointer<tst_QPointer> p2;
+
+ // operator->() -- only makes sense if not null
+ QObject *object = p1->me();
+ QCOMPARE(object, this);
+
+ // operator*() -- only makes sense if not null
+ QObject &ref = *p1;
+ QCOMPARE(&ref, this);
+
+ // operator T*()
+ QCOMPARE(static_cast<QObject *>(p1), this);
+ QCOMPARE(static_cast<QObject *>(p2), static_cast<QObject *>(0));
+
+ // data()
+ QCOMPARE(p1.data(), this);
+ QCOMPARE(p2.data(), static_cast<QObject *>(0));
+}
+
+void tst_QPointer::disconnect()
+{
+ // Verify that pointer remains guarded when all signals are disconencted.
+ QPointer<QObject> p1 = new QObject;
+ QVERIFY(!p1.isNull());
+ p1->disconnect();
+ QVERIFY(!p1.isNull());
+ delete static_cast<QObject *>(p1);
+ QVERIFY(p1.isNull());
+}
+
+class ChildObject : public QObject
+{
+ QPointer<QObject> guardedPointer;
+
+public:
+ ChildObject(QObject *parent)
+ : QObject(parent), guardedPointer(parent)
+ { }
+ ~ChildObject();
+};
+
+ChildObject::~ChildObject()
+{
+ QCOMPARE(static_cast<QObject *>(guardedPointer), static_cast<QObject *>(0));
+ QCOMPARE(qobject_cast<QObject *>(guardedPointer), static_cast<QObject *>(0));
+}
+
+class ChildWidget : public QWidget
+{
+ QPointer<QWidget> guardedPointer;
+
+public:
+ ChildWidget(QWidget *parent)
+ : QWidget(parent), guardedPointer(parent)
+ { }
+ ~ChildWidget();
+};
+
+ChildWidget::~ChildWidget()
+{
+ QCOMPARE(static_cast<QWidget *>(guardedPointer), static_cast<QWidget *>(0));
+ QCOMPARE(qobject_cast<QWidget *>(guardedPointer), static_cast<QWidget *>(0));
+}
+
+class DerivedChild;
+
+class DerivedParent : public QObject
+{
+ Q_OBJECT
+
+ DerivedChild *derivedChild;
+
+public:
+ DerivedParent();
+ ~DerivedParent();
+};
+
+class DerivedChild : public QObject
+{
+ Q_OBJECT
+
+ DerivedParent *parentPointer;
+ QPointer<DerivedParent> guardedParentPointer;
+
+public:
+ DerivedChild(DerivedParent *parent)
+ : QObject(parent), parentPointer(parent), guardedParentPointer(parent)
+ { }
+ ~DerivedChild();
+};
+
+DerivedParent::DerivedParent()
+ : QObject()
+{
+ derivedChild = new DerivedChild(this);
+}
+
+DerivedParent::~DerivedParent()
+{
+ delete derivedChild;
+}
+
+DerivedChild::~DerivedChild()
+{
+ QCOMPARE(static_cast<DerivedParent *>(guardedParentPointer), parentPointer);
+ QCOMPARE(qobject_cast<DerivedParent *>(guardedParentPointer), parentPointer);
+}
+
+void tst_QPointer::castDuringDestruction()
+{
+ {
+ QObject *parentObject = new QObject();
+ (void) new ChildObject(parentObject);
+ delete parentObject;
+ }
+
+ {
+ QWidget *parentWidget = new QWidget();
+ (void) new ChildWidget(parentWidget);
+ delete parentWidget;
+ }
+
+ {
+ delete new DerivedParent();
+ }
+}
+
+class TestRunnable : public QObject, public QRunnable {
+ void run() {
+ QPointer<QObject> obj1 = new QObject;
+ QPointer<QObject> obj2 = new QObject;
+ obj1->moveToThread(thread()); // this is the owner thread
+ obj1->deleteLater(); // the delete will happen in the owner thread
+ obj2->moveToThread(thread()); // this is the owner thread
+ obj2->deleteLater(); // the delete will happen in the owner thread
+ }
+};
+
+void tst_QPointer::threadSafety()
+{
+
+ QThread owner;
+ owner.start();
+
+ QThreadPool pool;
+ for (int i = 0; i < 300; i++) {
+ QPointer<TestRunnable> task = new TestRunnable;
+ task->setAutoDelete(true);
+ task->moveToThread(&owner);
+ pool.start(task);
+ }
+ pool.waitForDone();
+
+ owner.quit();
+ owner.wait();
+}
+
+
+QTEST_MAIN(tst_QPointer)
+#include "tst_qpointer.moc"
diff --git a/tests/auto/corelib/kernel/qsignalmapper/.gitignore b/tests/auto/corelib/kernel/qsignalmapper/.gitignore
new file mode 100644
index 0000000000..33fab268da
--- /dev/null
+++ b/tests/auto/corelib/kernel/qsignalmapper/.gitignore
@@ -0,0 +1 @@
+tst_qsignalmapper
diff --git a/tests/auto/corelib/kernel/qsignalmapper/qsignalmapper.pro b/tests/auto/corelib/kernel/qsignalmapper/qsignalmapper.pro
new file mode 100644
index 0000000000..5af4b70c63
--- /dev/null
+++ b/tests/auto/corelib/kernel/qsignalmapper/qsignalmapper.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qsignalmapper.cpp
+
+
+
diff --git a/tests/auto/corelib/kernel/qsignalmapper/tst_qsignalmapper.cpp b/tests/auto/corelib/kernel/qsignalmapper/tst_qsignalmapper.cpp
new file mode 100644
index 0000000000..a4dc123778
--- /dev/null
+++ b/tests/auto/corelib/kernel/qsignalmapper/tst_qsignalmapper.cpp
@@ -0,0 +1,156 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+
+#include <qsignalmapper.h>
+#include <qspinbox.h>
+
+
+
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QSignalMapper : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QSignalMapper();
+ virtual ~tst_QSignalMapper();
+
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void mapped();
+};
+
+tst_QSignalMapper::tst_QSignalMapper()
+{
+}
+
+tst_QSignalMapper::~tst_QSignalMapper()
+{
+}
+
+void tst_QSignalMapper::initTestCase()
+{
+}
+
+void tst_QSignalMapper::cleanupTestCase()
+{
+}
+
+void tst_QSignalMapper::init()
+{
+}
+
+void tst_QSignalMapper::cleanup()
+{
+}
+
+class QtTestObject : public QObject
+{
+ Q_OBJECT
+public slots:
+ void myslot(int id);
+ void myslot(const QString &str);
+
+public:
+ int id;
+ QString str;
+};
+
+void QtTestObject::myslot(int id)
+{
+ this->id = id;
+}
+
+void QtTestObject::myslot(const QString &str)
+{
+ this->str = str;
+}
+
+void tst_QSignalMapper::mapped()
+{
+ QSignalMapper mapper(0);
+
+ QtTestObject target;
+ QSpinBox spinBox1(0);
+ QSpinBox spinBox2(0);
+ QSpinBox spinBox3(0);
+
+ connect(&spinBox1, SIGNAL(valueChanged(int)), &mapper, SLOT(map()));
+ connect(&spinBox2, SIGNAL(valueChanged(int)), &mapper, SLOT(map()));
+ connect(&spinBox3, SIGNAL(valueChanged(int)), &mapper, SLOT(map()));
+
+ mapper.setMapping(&spinBox1, 7);
+ mapper.setMapping(&spinBox1, 1);
+ mapper.setMapping(&spinBox2, 2);
+ mapper.setMapping(&spinBox2, "two");
+ mapper.setMapping(&spinBox3, "three");
+
+ connect(&mapper, SIGNAL(mapped(int)), &target, SLOT(myslot(int)));
+ connect(&mapper, SIGNAL(mapped(const QString &)), &target, SLOT(myslot(const QString &)));
+
+ spinBox1.setValue(20);
+ QVERIFY(target.id == 1);
+ QVERIFY(target.str.isEmpty());
+
+ spinBox2.setValue(20);
+ QVERIFY(target.id == 2);
+ QVERIFY(target.str == "two");
+
+ spinBox3.setValue(20);
+ QVERIFY(target.id == 2);
+ QVERIFY(target.str == "three");
+}
+
+QTEST_MAIN(tst_QSignalMapper)
+#include "tst_qsignalmapper.moc"
diff --git a/tests/auto/corelib/kernel/qsocketnotifier/.gitignore b/tests/auto/corelib/kernel/qsocketnotifier/.gitignore
new file mode 100644
index 0000000000..2e1568660c
--- /dev/null
+++ b/tests/auto/corelib/kernel/qsocketnotifier/.gitignore
@@ -0,0 +1 @@
+tst_qsocketnotifier
diff --git a/tests/auto/corelib/kernel/qsocketnotifier/qsocketnotifier.pro b/tests/auto/corelib/kernel/qsocketnotifier/qsocketnotifier.pro
new file mode 100644
index 0000000000..0768c69caa
--- /dev/null
+++ b/tests/auto/corelib/kernel/qsocketnotifier/qsocketnotifier.pro
@@ -0,0 +1,11 @@
+load(qttest_p4)
+SOURCES += tst_qsocketnotifier.cpp
+QT = core-private network-private
+
+requires(contains(QT_CONFIG,private_tests))
+
+include(../platformsocketengine/platformsocketengine.pri)
+
+symbian: TARGET.CAPABILITY = NetworkServices
+
+CONFIG += insignificant_test # QTBUG-21204
diff --git a/tests/auto/corelib/kernel/qsocketnotifier/tst_qsocketnotifier.cpp b/tests/auto/corelib/kernel/qsocketnotifier/tst_qsocketnotifier.cpp
new file mode 100644
index 0000000000..2c3a6c52bf
--- /dev/null
+++ b/tests/auto/corelib/kernel/qsocketnotifier/tst_qsocketnotifier.cpp
@@ -0,0 +1,367 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QTest>
+#include <QtTest/QSignalSpy>
+#include <QtTest/QTestEventLoop>
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QTimer>
+#include <QtCore/QSocketNotifier>
+#include <QtNetwork/QTcpServer>
+#include <QtNetwork/QTcpSocket>
+#ifdef Q_OS_SYMBIAN
+#include <private/qsymbiansocketengine_p.h>
+#define NATIVESOCKETENGINE QSymbianSocketEngine
+#else
+#include <private/qnativesocketengine_p.h>
+#define NATIVESOCKETENGINE QNativeSocketEngine
+#endif
+#ifdef Q_OS_UNIX
+#include <private/qnet_unix_p.h>
+#include <sys/select.h>
+#endif
+#include <limits>
+
+#if defined (Q_CC_MSVC) && defined(max)
+# undef max
+# undef min
+#endif // Q_CC_MSVC
+
+class tst_QSocketNotifier : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QSocketNotifier();
+ ~tst_QSocketNotifier();
+
+private slots:
+ void unexpectedDisconnection();
+ void mixingWithTimers();
+ void posixSockets();
+ void bogusFds();
+};
+
+tst_QSocketNotifier::tst_QSocketNotifier()
+{ }
+
+tst_QSocketNotifier::~tst_QSocketNotifier()
+{
+}
+
+class UnexpectedDisconnectTester : public QObject
+{
+ Q_OBJECT
+public:
+ NATIVESOCKETENGINE *readEnd1, *readEnd2;
+ int sequence;
+
+ UnexpectedDisconnectTester(NATIVESOCKETENGINE *s1, NATIVESOCKETENGINE *s2)
+ : readEnd1(s1), readEnd2(s2), sequence(0)
+ {
+ QSocketNotifier *notifier1 =
+ new QSocketNotifier(readEnd1->socketDescriptor(), QSocketNotifier::Read, this);
+ connect(notifier1, SIGNAL(activated(int)), SLOT(handleActivated()));
+ QSocketNotifier *notifier2 =
+ new QSocketNotifier(readEnd2->socketDescriptor(), QSocketNotifier::Read, this);
+ connect(notifier2, SIGNAL(activated(int)), SLOT(handleActivated()));
+ }
+
+public slots:
+ void handleActivated()
+ {
+ char data1[1], data2[1];
+ ++sequence;
+ if (sequence == 1) {
+ // read from both ends
+ (void) readEnd1->read(data1, sizeof(data1));
+ (void) readEnd2->read(data2, sizeof(data2));
+ emit finished();
+ } else if (sequence == 2) {
+ // we should never get here
+ QCOMPARE(readEnd2->read(data2, sizeof(data2)), qint64(-2));
+ QVERIFY(readEnd2->isValid());
+ }
+ }
+
+signals:
+ void finished();
+};
+
+void tst_QSocketNotifier::unexpectedDisconnection()
+{
+#ifdef Q_OS_SYMBIAN
+ QSKIP("Symbian socket engine pseudo descriptors can't be used for QSocketNotifier", SkipAll);
+#else
+ /*
+ Given two sockets and two QSocketNotifiers registered on each
+ their socket. If both sockets receive data, and the first slot
+ invoked by one of the socket notifiers empties both sockets, the
+ other notifier will also emit activated(). This results in
+ unexpected disconnection in QAbstractSocket.
+
+ The use case is that somebody calls one of the
+ waitFor... functions in a QSocketNotifier activated slot, and
+ the waitFor... functions do local selects that can empty both
+ stdin and stderr while waiting for fex bytes to be written.
+ */
+
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost, 0));
+
+ NATIVESOCKETENGINE readEnd1;
+ readEnd1.initialize(QAbstractSocket::TcpSocket);
+ bool b = readEnd1.connectToHost(server.serverAddress(), server.serverPort());
+ QVERIFY(readEnd1.waitForWrite());
+// while (!b && readEnd1.state() != QAbstractSocket::ConnectedState)
+// b = readEnd1.connectToHost(server.serverAddress(), server.serverPort());
+ QVERIFY(readEnd1.state() == QAbstractSocket::ConnectedState);
+ QVERIFY(server.waitForNewConnection());
+ QTcpSocket *writeEnd1 = server.nextPendingConnection();
+ QVERIFY(writeEnd1 != 0);
+
+ NATIVESOCKETENGINE readEnd2;
+ readEnd2.initialize(QAbstractSocket::TcpSocket);
+ b = readEnd2.connectToHost(server.serverAddress(), server.serverPort());
+ QVERIFY(readEnd2.waitForWrite());
+// while (!b)
+// b = readEnd2.connectToHost(server.serverAddress(), server.serverPort());
+ QVERIFY(readEnd2.state() == QAbstractSocket::ConnectedState);
+ QVERIFY(server.waitForNewConnection());
+ QTcpSocket *writeEnd2 = server.nextPendingConnection();
+ QVERIFY(writeEnd2 != 0);
+
+ writeEnd1->write("1", 1);
+ writeEnd2->write("2", 1);
+
+ writeEnd1->waitForBytesWritten();
+ writeEnd2->waitForBytesWritten();
+
+ writeEnd1->flush();
+ writeEnd2->flush();
+
+ UnexpectedDisconnectTester tester(&readEnd1, &readEnd2);
+
+ QTimer timer;
+ timer.setSingleShot(true);
+ timer.start(30000);
+ do {
+ // we have to wait until sequence value changes
+ // as any event can make us jump out processing
+ QCoreApplication::processEvents(QEventLoop::WaitForMoreEvents);
+ QVERIFY(timer.isActive()); //escape if test would hang
+ } while(tester.sequence <= 0);
+
+ QVERIFY(readEnd1.state() == QAbstractSocket::ConnectedState);
+ QVERIFY(readEnd2.state() == QAbstractSocket::ConnectedState);
+
+ QCOMPARE(tester.sequence, 2);
+
+ readEnd1.close();
+ readEnd2.close();
+ writeEnd1->close();
+ writeEnd2->close();
+ server.close();
+#endif
+}
+
+class MixingWithTimersHelper : public QObject
+{
+ Q_OBJECT
+
+public:
+ MixingWithTimersHelper(QTimer *timer, QTcpServer *server);
+
+ bool timerActivated;
+ bool socketActivated;
+
+private slots:
+ void timerFired();
+ void socketFired();
+};
+
+MixingWithTimersHelper::MixingWithTimersHelper(QTimer *timer, QTcpServer *server)
+{
+ timerActivated = false;
+ socketActivated = false;
+
+ connect(timer, SIGNAL(timeout()), SLOT(timerFired()));
+ connect(server, SIGNAL(newConnection()), SLOT(socketFired()));
+}
+
+void MixingWithTimersHelper::timerFired()
+{
+ timerActivated = true;
+}
+
+void MixingWithTimersHelper::socketFired()
+{
+ socketActivated = true;
+}
+
+void tst_QSocketNotifier::mixingWithTimers()
+{
+ QTimer timer;
+ timer.setInterval(0);
+ timer.start();
+
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost, 0));
+
+ MixingWithTimersHelper helper(&timer, &server);
+
+ QCoreApplication::processEvents();
+
+ QCOMPARE(helper.timerActivated, true);
+ QCOMPARE(helper.socketActivated, false);
+
+ helper.timerActivated = false;
+ helper.socketActivated = false;
+
+ QTcpSocket socket;
+ socket.connectToHost(server.serverAddress(), server.serverPort());
+
+ QCoreApplication::processEvents();
+
+ QCOMPARE(helper.timerActivated, true);
+ QCOMPARE(helper.socketActivated, true);
+}
+
+void tst_QSocketNotifier::posixSockets()
+{
+#ifndef Q_OS_UNIX
+ QSKIP("test only for posix", SkipAll);
+#else
+
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost, 0));
+
+ int posixSocket = qt_safe_socket(AF_INET, SOCK_STREAM, 0);
+ sockaddr_in addr;
+ addr.sin_addr.s_addr = htonl(0x7f000001);
+ addr.sin_family = AF_INET;
+ addr.sin_port = htons(server.serverPort());
+ qt_safe_connect(posixSocket, (const struct sockaddr*)&addr, sizeof(sockaddr_in));
+ QVERIFY(server.waitForNewConnection(5000));
+ QScopedPointer<QTcpSocket> passive(server.nextPendingConnection());
+
+ ::fcntl(posixSocket, F_SETFL, ::fcntl(posixSocket, F_GETFL) | O_NONBLOCK);
+
+ {
+ QSocketNotifier rn(posixSocket, QSocketNotifier::Read);
+ connect(&rn, SIGNAL(activated(int)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QSignalSpy readSpy(&rn, SIGNAL(activated(int)));
+ QSocketNotifier wn(posixSocket, QSocketNotifier::Write);
+ connect(&wn, SIGNAL(activated(int)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QSignalSpy writeSpy(&wn, SIGNAL(activated(int)));
+ QSocketNotifier en(posixSocket, QSocketNotifier::Exception);
+ connect(&en, SIGNAL(activated(int)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QSignalSpy errorSpy(&en, SIGNAL(activated(int)));
+
+ passive->write("hello",6);
+ passive->waitForBytesWritten(5000);
+
+ QTestEventLoop::instance().enterLoop(3);
+ QCOMPARE(readSpy.count(), 1);
+ QEXPECT_FAIL("", "QTBUG-20982 fails", Abort);
+ QCOMPARE(writeSpy.count(), 0);
+ QCOMPARE(errorSpy.count(), 0);
+
+ char buffer[100];
+ qt_safe_read(posixSocket, buffer, 100);
+ QCOMPARE(buffer, "hello");
+
+ qt_safe_write(posixSocket, "goodbye", 8);
+
+ QTestEventLoop::instance().enterLoop(3);
+ QCOMPARE(readSpy.count(), 1);
+ QCOMPARE(writeSpy.count(), 1);
+ QCOMPARE(errorSpy.count(), 0);
+ QCOMPARE(passive->readAll(), QByteArray("goodbye",8));
+ }
+ qt_safe_close(posixSocket);
+#endif
+}
+
+void tst_QSocketNotifier::bogusFds()
+{
+#ifndef Q_OS_WIN
+ QTest::ignoreMessage(QtWarningMsg, "QSocketNotifier: Internal error");
+#endif
+ QSocketNotifier max(std::numeric_limits<int>::max(), QSocketNotifier::Read);
+ QTest::ignoreMessage(QtWarningMsg, "QSocketNotifier: Invalid socket specified");
+#ifndef Q_OS_WIN
+ // FIXME QTBUG-20982: this fails, and ignoreMessage can't be skipped or QEXPECT_FAILed
+ // QTest::ignoreMessage(QtWarningMsg, "QSocketNotifier: Internal error");
+#endif
+ QSocketNotifier min(std::numeric_limits<int>::min(), QSocketNotifier::Write);
+#ifndef Q_OS_WIN
+ // FIXME QTBUG-20982: this fails, and ignoreMessage can't be skipped or QEXPECT_FAILed
+ // QTest::ignoreMessage(QtWarningMsg, "QSocketNotifier: Internal error");
+#endif
+ //bogus magic number is the first pseudo socket descriptor from symbian socket engine.
+ QSocketNotifier bogus(0x40000000, QSocketNotifier::Exception);
+ QSocketNotifier largestlegal(FD_SETSIZE - 1, QSocketNotifier::Read);
+
+ QSignalSpy maxspy(&max, SIGNAL(activated(int)));
+ QSignalSpy minspy(&min, SIGNAL(activated(int)));
+ QSignalSpy bogspy(&bogus, SIGNAL(activated(int)));
+ QSignalSpy llspy(&largestlegal, SIGNAL(activated(int)));
+
+ //generate some unrelated socket activity
+ QTcpServer server;
+ QVERIFY(server.listen(QHostAddress::LocalHost));
+ connect(&server, SIGNAL(newConnection()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTcpSocket client;
+ client.connectToHost(QHostAddress::LocalHost, server.serverPort());
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(server.hasPendingConnections());
+
+ //check no activity on bogus notifiers
+ QCOMPARE(maxspy.count(), 0);
+ QCOMPARE(minspy.count(), 0);
+ QCOMPARE(bogspy.count(), 0);
+ QCOMPARE(llspy.count(), 0);
+}
+
+QTEST_MAIN(tst_QSocketNotifier)
+#include <tst_qsocketnotifier.moc>
diff --git a/tests/auto/corelib/kernel/qtimer/.gitignore b/tests/auto/corelib/kernel/qtimer/.gitignore
new file mode 100644
index 0000000000..14fd00629e
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtimer/.gitignore
@@ -0,0 +1 @@
+tst_qtimer
diff --git a/tests/auto/corelib/kernel/qtimer/qtimer.pro b/tests/auto/corelib/kernel/qtimer/qtimer.pro
new file mode 100644
index 0000000000..086df1dd18
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtimer/qtimer.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT = core
+SOURCES += tst_qtimer.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp b/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp
new file mode 100644
index 0000000000..a8ac799d73
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp
@@ -0,0 +1,794 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+
+#include <qtimer.h>
+#include <qthread.h>
+
+#if defined Q_OS_UNIX
+#include <unistd.h>
+#endif
+
+#include "../../../../shared/util.h"
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QTimer : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QTimer();
+ virtual ~tst_QTimer();
+
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void zeroTimer();
+ void singleShotTimeout();
+ void timeout();
+ void livelock_data();
+ void livelock();
+ void timerInfiniteRecursion_data();
+ void timerInfiniteRecursion();
+ void recurringTimer_data();
+ void recurringTimer();
+ void deleteLaterOnQTimer(); // long name, don't want to shadow QObject::deleteLater()
+ void moveToThread();
+ void restartedTimerFiresTooSoon();
+ void timerFiresOnlyOncePerProcessEvents_data();
+ void timerFiresOnlyOncePerProcessEvents();
+ void timerIdPersistsAfterThreadExit();
+ void cancelLongTimer();
+ void singleShotStaticFunctionZeroTimeout();
+ void recurseOnTimeoutAndStopTimer();
+
+ void QTBUG13633_dontBlockEvents();
+ void postedEventsShouldNotStarveTimers();
+#ifdef Q_OS_SYMBIAN
+ void handleLeaks();
+#endif
+};
+
+class TimerHelper : public QObject
+{
+ Q_OBJECT
+public:
+ TimerHelper() : QObject(), count(0)
+ {
+ }
+
+ int count;
+
+public slots:
+ void timeout();
+};
+
+void TimerHelper::timeout()
+{
+ ++count;
+}
+
+tst_QTimer::tst_QTimer()
+{
+}
+
+tst_QTimer::~tst_QTimer()
+{
+}
+
+void tst_QTimer::initTestCase()
+{
+}
+
+void tst_QTimer::cleanupTestCase()
+{
+}
+
+void tst_QTimer::init()
+{
+}
+
+void tst_QTimer::cleanup()
+{
+}
+
+void tst_QTimer::zeroTimer()
+{
+ TimerHelper helper;
+ QTimer timer;
+ timer.setInterval(0);
+ timer.start();
+
+ connect(&timer, SIGNAL(timeout()), &helper, SLOT(timeout()));
+
+ QCoreApplication::processEvents();
+
+ QCOMPARE(helper.count, 1);
+}
+
+void tst_QTimer::singleShotTimeout()
+{
+ TimerHelper helper;
+ QTimer timer;
+ timer.setSingleShot(true);
+
+ connect(&timer, SIGNAL(timeout()), &helper, SLOT(timeout()));
+ timer.start(100);
+
+ QTest::qWait(500);
+ QCOMPARE(helper.count, 1);
+ QTest::qWait(500);
+ QCOMPARE(helper.count, 1);
+}
+
+#if defined(Q_OS_SYMBIAN)
+// Increase wait as emulator startup can cause unexpected delays, and
+// on hardware there are sometimes spikes right after process startup.
+#define TIMEOUT_TIMEOUT 2000
+#else
+#define TIMEOUT_TIMEOUT 200
+#endif
+
+void tst_QTimer::timeout()
+{
+ TimerHelper helper;
+ QTimer timer;
+
+ connect(&timer, SIGNAL(timeout()), &helper, SLOT(timeout()));
+ timer.start(100);
+
+ QCOMPARE(helper.count, 0);
+
+ QTest::qWait(TIMEOUT_TIMEOUT);
+ QVERIFY(helper.count > 0);
+ int oldCount = helper.count;
+
+ QTest::qWait(TIMEOUT_TIMEOUT);
+ QVERIFY(helper.count > oldCount);
+}
+
+
+void tst_QTimer::livelock_data()
+{
+ QTest::addColumn<int>("interval");
+ QTest::newRow("zero timer") << 0;
+ QTest::newRow("non-zero timer") << 1;
+ QTest::newRow("longer than sleep") << 20;
+}
+
+/*!
+ *
+ * DO NOT "FIX" THIS TEST! it is written like this for a reason, do
+ * not *change it without first dicussing it with its maintainers.
+ *
+*/
+class LiveLockTester : public QObject
+{
+public:
+ LiveLockTester(int i)
+ : interval(i),
+ timeoutsForFirst(0), timeoutsForExtra(0), timeoutsForSecond(0),
+ postEventAtRightTime(false)
+ {
+ firstTimerId = startTimer(interval);
+ extraTimerId = startTimer(interval + 80);
+ secondTimerId = -1; // started later
+ }
+
+ bool event(QEvent *e) {
+ if (e->type() == 4002) {
+ // got the posted event
+ if (timeoutsForFirst == 1 && timeoutsForSecond == 0)
+ postEventAtRightTime = true;
+ return true;
+ }
+ return QObject::event(e);
+ }
+
+ void timerEvent(QTimerEvent *te) {
+ if (te->timerId() == firstTimerId) {
+ if (++timeoutsForFirst == 1) {
+ killTimer(extraTimerId);
+ extraTimerId = -1;
+ QCoreApplication::postEvent(this, new QEvent(static_cast<QEvent::Type>(4002)));
+ secondTimerId = startTimer(interval);
+ }
+ } else if (te->timerId() == secondTimerId) {
+ ++timeoutsForSecond;
+ } else if (te->timerId() == extraTimerId) {
+ ++timeoutsForExtra;
+ }
+
+ // sleep for 2ms
+ QTest::qSleep(2);
+ killTimer(te->timerId());
+ }
+
+ const int interval;
+ int firstTimerId;
+ int secondTimerId;
+ int extraTimerId;
+ int timeoutsForFirst;
+ int timeoutsForExtra;
+ int timeoutsForSecond;
+ bool postEventAtRightTime;
+};
+
+void tst_QTimer::livelock()
+{
+ /*
+ New timers created in timer event handlers should not be sent
+ until the next iteration of the eventloop. Note: this test
+ depends on the fact that we send posted events before timer
+ events (since new posted events are not sent until the next
+ iteration of the eventloop either).
+ */
+ QFETCH(int, interval);
+ LiveLockTester tester(interval);
+ QTest::qWait(180); // we have to use wait here, since we're testing timers with a non-zero timeout
+ QTRY_COMPARE(tester.timeoutsForFirst, 1);
+ QCOMPARE(tester.timeoutsForExtra, 0);
+ QTRY_COMPARE(tester.timeoutsForSecond, 1);
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ if (QSysInfo::WindowsVersion < QSysInfo::WV_XP)
+ QEXPECT_FAIL("non-zero timer", "Multimedia timers are not available on Windows 2000", Continue);
+#elif defined(Q_OS_WINCE)
+ QEXPECT_FAIL("non-zero timer", "Windows CE devices often too slow", Continue);
+#endif
+ QVERIFY(tester.postEventAtRightTime);
+}
+
+class TimerInfiniteRecursionObject : public QObject
+{
+public:
+ bool inTimerEvent;
+ bool timerEventRecursed;
+ int interval;
+
+ TimerInfiniteRecursionObject(int interval)
+ : inTimerEvent(false), timerEventRecursed(false), interval(interval)
+ { }
+
+ void timerEvent(QTimerEvent *timerEvent)
+ {
+ timerEventRecursed = inTimerEvent;
+ if (timerEventRecursed) {
+ // bug detected!
+ return;
+ }
+
+ inTimerEvent = true;
+
+ QEventLoop eventLoop;
+ QTimer::singleShot(qMax(100, interval * 2), &eventLoop, SLOT(quit()));
+ eventLoop.exec();
+
+ inTimerEvent = false;
+
+ killTimer(timerEvent->timerId());
+ }
+};
+
+void tst_QTimer::timerInfiniteRecursion_data()
+{
+ QTest::addColumn<int>("interval");
+ QTest::newRow("zero timer") << 0;
+ QTest::newRow("non-zero timer") << 1;
+ QTest::newRow("10ms timer") << 10;
+ QTest::newRow("11ms timer") << 11;
+ QTest::newRow("100ms timer") << 100;
+ QTest::newRow("1s timer") << 1000;
+}
+
+
+void tst_QTimer::timerInfiniteRecursion()
+{
+ QFETCH(int, interval);
+ TimerInfiniteRecursionObject object(interval);
+ (void) object.startTimer(interval);
+
+ QEventLoop eventLoop;
+ QTimer::singleShot(qMax(100, interval * 2), &eventLoop, SLOT(quit()));
+ eventLoop.exec();
+
+ QVERIFY(!object.timerEventRecursed);
+}
+
+class RecurringTimerObject : public QObject
+{
+Q_OBJECT
+public:
+ int times;
+ int target;
+ bool recurse;
+
+ RecurringTimerObject(int target)
+ : times(0), target(target), recurse(false)
+ { }
+
+ void timerEvent(QTimerEvent *timerEvent)
+ {
+ if (++times == target) {
+ killTimer(timerEvent->timerId());
+ emit done();
+ } if (recurse) {
+ QEventLoop eventLoop;
+ QTimer::singleShot(100, &eventLoop, SLOT(quit()));
+ eventLoop.exec();
+ }
+ }
+
+signals:
+ void done();
+};
+
+void tst_QTimer::recurringTimer_data()
+{
+ QTest::addColumn<int>("interval");
+ QTest::newRow("zero timer") << 0;
+ QTest::newRow("non-zero timer") << 1;
+}
+
+void tst_QTimer::recurringTimer()
+{
+ const int target = 5;
+ QFETCH(int, interval);
+
+ {
+ RecurringTimerObject object(target);
+ QObject::connect(&object, SIGNAL(done()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ (void) object.startTimer(interval);
+ QTestEventLoop::instance().enterLoop(5);
+
+ QCOMPARE(object.times, target);
+ }
+
+ {
+ // make sure that eventloop recursion doesn't effect timer recurrance
+ RecurringTimerObject object(target);
+ object.recurse = true;
+
+ QObject::connect(&object, SIGNAL(done()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ (void) object.startTimer(interval);
+ QTestEventLoop::instance().enterLoop(5);
+
+ QCOMPARE(object.times, target);
+ }
+}
+
+void tst_QTimer::deleteLaterOnQTimer()
+{
+ QTimer *timer = new QTimer;
+ connect(timer, SIGNAL(timeout()), timer, SLOT(deleteLater()));
+ connect(timer, SIGNAL(destroyed()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ timer->setInterval(1);
+ timer->setSingleShot(true);
+ timer->start();
+ QPointer<QTimer> pointer = timer;
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(pointer.isNull());
+}
+
+#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+// Increase wait as emulator startup can cause unexpected delays
+#define MOVETOTHREAD_TIMEOUT 200
+#define MOVETOTHREAD_WAIT 5000
+#else
+#define MOVETOTHREAD_TIMEOUT 200
+#define MOVETOTHREAD_WAIT 300
+#endif
+
+void tst_QTimer::moveToThread()
+{
+ QTimer ti1;
+ QTimer ti2;
+ ti1.start(MOVETOTHREAD_TIMEOUT);
+ ti2.start(MOVETOTHREAD_TIMEOUT);
+ QVERIFY((ti1.timerId() & 0xffffff) != (ti2.timerId() & 0xffffff));
+ QThread tr;
+ ti1.moveToThread(&tr);
+ connect(&ti1,SIGNAL(timeout()), &tr, SLOT(quit()));
+ tr.start();
+ QTimer ti3;
+ ti3.start(MOVETOTHREAD_TIMEOUT);
+ QVERIFY((ti3.timerId() & 0xffffff) != (ti2.timerId() & 0xffffff));
+ QVERIFY((ti3.timerId() & 0xffffff) != (ti1.timerId() & 0xffffff));
+ QTest::qWait(MOVETOTHREAD_WAIT);
+ QVERIFY(tr.wait());
+ ti2.stop();
+ QTimer ti4;
+ ti4.start(MOVETOTHREAD_TIMEOUT);
+ ti3.stop();
+ ti2.start(MOVETOTHREAD_TIMEOUT);
+ ti3.start(MOVETOTHREAD_TIMEOUT);
+ QVERIFY((ti4.timerId() & 0xffffff) != (ti2.timerId() & 0xffffff));
+ QVERIFY((ti3.timerId() & 0xffffff) != (ti2.timerId() & 0xffffff));
+ QVERIFY((ti3.timerId() & 0xffffff) != (ti1.timerId() & 0xffffff));
+}
+
+class RestartedTimerFiresTooSoonObject : public QObject
+{
+ Q_OBJECT
+
+public:
+ QBasicTimer m_timer;
+
+ int m_interval;
+ QTime m_startedTime;
+ QEventLoop eventLoop;
+
+ inline RestartedTimerFiresTooSoonObject()
+ : QObject(), m_interval(0)
+ { }
+
+ void timerFired()
+ {
+ static int interval = 1000;
+
+ m_interval = interval;
+ m_startedTime.start();
+ m_timer.start(interval, this);
+
+ // alternate between single-shot and 1 sec
+ interval = interval ? 0 : 1000;
+ }
+
+ void timerEvent(QTimerEvent* ev)
+ {
+ if (ev->timerId() != m_timer.timerId())
+ return;
+
+ m_timer.stop();
+
+ QTime now = QTime::currentTime();
+ int elapsed = m_startedTime.elapsed();
+
+ if (elapsed < m_interval / 2) {
+ // severely too early!
+ m_timer.stop();
+ eventLoop.exit(-1);
+ return;
+ }
+
+ timerFired();
+
+ // don't do this forever
+ static int count = 0;
+ if (count++ > 20) {
+ m_timer.stop();
+ eventLoop.quit();
+ return;
+ }
+ }
+};
+
+void tst_QTimer::restartedTimerFiresTooSoon()
+{
+ RestartedTimerFiresTooSoonObject object;
+ object.timerFired();
+ QVERIFY(object.eventLoop.exec() == 0);
+}
+
+class LongLastingSlotClass : public QObject
+{
+ Q_OBJECT
+
+public:
+ LongLastingSlotClass(QTimer *timer) : count(0), timer(timer) {}
+
+public slots:
+ void longLastingSlot()
+ {
+ // Don't use timers for this, because we are testing them.
+ QTime time;
+ time.start();
+ while (time.elapsed() < 200) {
+ for (int c = 0; c < 100000; c++) {} // Mindless looping.
+ }
+ if (++count >= 2) {
+ timer->stop();
+ }
+ }
+
+public:
+ int count;
+ QTimer *timer;
+};
+
+void tst_QTimer::timerFiresOnlyOncePerProcessEvents_data()
+{
+ QTest::addColumn<int>("interval");
+ QTest::newRow("zero timer") << 0;
+ QTest::newRow("non-zero timer") << 10;
+}
+
+void tst_QTimer::timerFiresOnlyOncePerProcessEvents()
+{
+ QFETCH(int, interval);
+
+ QTimer t;
+ LongLastingSlotClass longSlot(&t);
+ t.start(interval);
+ connect(&t, SIGNAL(timeout()), &longSlot, SLOT(longLastingSlot()));
+ // Loop because there may be other events pending.
+ while (longSlot.count == 0) {
+ QCoreApplication::processEvents(QEventLoop::WaitForMoreEvents);
+ }
+
+ QCOMPARE(longSlot.count, 1);
+}
+
+class TimerIdPersistsAfterThreadExitThread : public QThread
+{
+public:
+ QTimer *timer;
+ int timerId, returnValue;
+
+ TimerIdPersistsAfterThreadExitThread()
+ : QThread(), timer(0), timerId(-1), returnValue(-1)
+ { }
+ ~TimerIdPersistsAfterThreadExitThread()
+ {
+ delete timer;
+ }
+
+ void run()
+ {
+ QEventLoop eventLoop;
+ timer = new QTimer;
+ connect(timer, SIGNAL(timeout()), &eventLoop, SLOT(quit()));
+ timer->start(100);
+ timerId = timer->timerId();
+ returnValue = eventLoop.exec();
+ }
+};
+
+void tst_QTimer::timerIdPersistsAfterThreadExit()
+{
+ TimerIdPersistsAfterThreadExitThread thread;
+ thread.start();
+ QVERIFY(thread.wait(30000));
+ QCOMPARE(thread.returnValue, 0);
+
+ // even though the thread has exited, and the event dispatcher destroyed, the timer is still
+ // "active", meaning the timer id should NOT be reused (i.e. the event dispatcher should not
+ // have unregistered it)
+ int timerId = thread.startTimer(100);
+ QVERIFY((timerId & 0xffffff) != (thread.timerId & 0xffffff));
+}
+
+void tst_QTimer::cancelLongTimer()
+{
+ QTimer timer;
+ timer.setSingleShot(true);
+ timer.start(1000 * 60 * 60); //set timer for 1 hour (which would overflow Symbian RTimer)
+ QCoreApplication::processEvents();
+ QVERIFY(timer.isActive()); //if the timer completes immediately with an error, then this will fail
+ timer.stop();
+ QVERIFY(!timer.isActive());
+}
+
+void tst_QTimer::singleShotStaticFunctionZeroTimeout()
+{
+ TimerHelper helper;
+
+ QTimer::singleShot(0, &helper, SLOT(timeout()));
+ QTest::qWait(500);
+ QCOMPARE(helper.count, 1);
+ QTest::qWait(500);
+ QCOMPARE(helper.count, 1);
+}
+
+class RecursOnTimeoutAndStopTimerTimer : public QObject
+{
+ Q_OBJECT
+
+public:
+ QTimer *one;
+ QTimer *two;
+
+public slots:
+ void onetrigger()
+ {
+ QCoreApplication::processEvents();
+ }
+
+ void twotrigger()
+ {
+ one->stop();
+ }
+};
+
+void tst_QTimer::recurseOnTimeoutAndStopTimer()
+{
+ QEventLoop eventLoop;
+ QTimer::singleShot(1000, &eventLoop, SLOT(quit()));
+
+ RecursOnTimeoutAndStopTimerTimer t;
+ t.one = new QTimer(&t);
+ t.two = new QTimer(&t);
+
+ QObject::connect(t.one, SIGNAL(timeout()), &t, SLOT(onetrigger()));
+ QObject::connect(t.two, SIGNAL(timeout()), &t, SLOT(twotrigger()));
+
+ t.two->setSingleShot(true);
+
+ t.one->start();
+ t.two->start();
+
+ (void) eventLoop.exec();
+
+ QVERIFY(!t.one->isActive());
+ QVERIFY(!t.two->isActive());
+}
+
+
+
+class DontBlockEvents : public QObject
+{
+ Q_OBJECT
+public:
+ DontBlockEvents();
+ void timerEvent(QTimerEvent*);
+
+ int count;
+ int total;
+ QBasicTimer m_timer;
+
+public slots:
+ void paintEvent();
+
+};
+
+DontBlockEvents::DontBlockEvents()
+{
+ count = 0;
+ total = 0;
+
+ //QTBUG-13633 need few unrelated timer running to reproduce the bug.
+ (new QTimer(this))->start(2000);
+ (new QTimer(this))->start(2500);
+ (new QTimer(this))->start(3000);
+ (new QTimer(this))->start(5000);
+ (new QTimer(this))->start(1000);
+ (new QTimer(this))->start(2000);
+
+ m_timer.start(1, this);
+}
+
+void DontBlockEvents::timerEvent(QTimerEvent* event)
+{
+ if (event->timerId() == m_timer.timerId()) {
+ QMetaObject::invokeMethod(this, "paintEvent", Qt::QueuedConnection);
+ m_timer.start(0, this);
+ count++;
+ QCOMPARE(count, 1);
+ total++;
+ }
+}
+
+void DontBlockEvents::paintEvent()
+{
+ count--;
+ QCOMPARE(count, 0);
+}
+
+
+void tst_QTimer::QTBUG13633_dontBlockEvents()
+{
+ DontBlockEvents t;
+ QTest::qWait(60);
+ QTRY_VERIFY(t.total > 2);
+}
+
+class SlotRepeater : public QObject {
+ Q_OBJECT
+public:
+ SlotRepeater() {}
+
+public slots:
+ void repeatThisSlot()
+ {
+ QMetaObject::invokeMethod(this, "repeatThisSlot", Qt::QueuedConnection);
+ }
+};
+
+void tst_QTimer::postedEventsShouldNotStarveTimers()
+{
+ TimerHelper timerHelper;
+ QTimer timer;
+ connect(&timer, SIGNAL(timeout()), &timerHelper, SLOT(timeout()));
+ timer.setInterval(0);
+ timer.setSingleShot(false);
+ timer.start();
+ SlotRepeater slotRepeater;
+ slotRepeater.repeatThisSlot();
+ QTest::qWait(100);
+ QVERIFY(timerHelper.count > 5);
+}
+
+#ifdef Q_OS_SYMBIAN
+void tst_QTimer::handleLeaks()
+{
+ const int timercount = 5;
+ int processhandles_start;
+ int threadhandles_start;
+ RThread().HandleCount(processhandles_start, threadhandles_start);
+ {
+ TimerHelper timerHelper;
+ QList<QTimer*> timers;
+ for (int i=0;i<timercount;i++) {
+ QTimer* timer = new QTimer;
+ timers.append(timer);
+ connect(timer, SIGNAL(timeout()), &timerHelper, SLOT(timeout()));
+ timer->setSingleShot(true);
+ timer->start(i); //test both zero and normal timeouts
+ }
+ int processhandles_mid;
+ int threadhandles_mid;
+ RThread().HandleCount(processhandles_mid, threadhandles_mid);
+ qDebug() << threadhandles_mid - threadhandles_start << "new thread owned handles";
+ QTest::qWait(100);
+ QCOMPARE(timerHelper.count, timercount);
+ qDeleteAll(timers);
+ }
+ int processhandles_end;
+ int threadhandles_end;
+ RThread().HandleCount(processhandles_end, threadhandles_end);
+ QCOMPARE(threadhandles_end, threadhandles_start); //RTimer::CreateLocal creates a thread owned handle
+ //Can not verify process handles because QObject::connect may create up to 2 mutexes
+ //from a QMutexPool (4 process owned handles with open C imp.)
+ //QCOMPARE(processhandles_end, processhandles_start);
+}
+#endif
+
+QTEST_MAIN(tst_QTimer)
+#include "tst_qtimer.moc"
diff --git a/tests/auto/corelib/kernel/qtipc/lackey/lackey.pro b/tests/auto/corelib/kernel/qtipc/lackey/lackey.pro
new file mode 100644
index 0000000000..91659d701e
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/lackey/lackey.pro
@@ -0,0 +1,16 @@
+include(../qsharedmemory/src/src.pri)
+
+QT = core-private script testlib
+
+DESTDIR = ./
+
+win32: CONFIG += console
+mac:CONFIG -= app_bundle
+
+DEFINES += QSHAREDMEMORY_DEBUG
+DEFINES += QSYSTEMSEMAPHORE_DEBUG
+
+SOURCES += main.cpp
+TARGET = lackey
+
+
diff --git a/tests/auto/corelib/kernel/qtipc/lackey/main.cpp b/tests/auto/corelib/kernel/qtipc/lackey/main.cpp
new file mode 100644
index 0000000000..3caae48740
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/lackey/main.cpp
@@ -0,0 +1,370 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+
+#include <qscriptengine.h>
+
+#include <QtCore/QFile>
+#include <QtCore/QTextStream>
+#include <QTest>
+
+#include <qstringlist.h>
+#include <stdlib.h>
+#include <qsharedmemory.h>
+#include <qsystemsemaphore.h>
+#include <qsystemlock.h>
+
+class ScriptSystemSemaphore : public QObject
+{
+ Q_OBJECT
+
+public:
+ ScriptSystemSemaphore(QObject *parent = 0) : QObject(parent), ss(QString())
+ {
+ }
+
+public slots:
+ bool acquire()
+ {
+ return ss.acquire();
+ };
+
+ bool release(int n = 1)
+ {
+ return ss.release(n);
+ };
+
+ void setKey(const QString &key, int n = 0)
+ {
+ ss.setKey(key, n);
+ };
+
+ QString key() const
+ {
+ return ss.key();
+ }
+
+private:
+ QSystemSemaphore ss;
+};
+
+class ScriptSystemLock : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QString key WRITE setKey READ key)
+
+public:
+ ScriptSystemLock(QObject *parent = 0) : QObject(parent), sl(QString())
+ {
+ }
+
+public slots:
+
+ bool lockReadOnly()
+ {
+ return sl.lock(QSystemLock::ReadOnly);
+ }
+
+ bool lock()
+ {
+ return sl.lock();
+ };
+
+ bool unlock()
+ {
+ return sl.unlock();
+ };
+
+ void setKey(const QString &key)
+ {
+ sl.setKey(key);
+ };
+
+ QString key() const
+ {
+ return sl.key();
+ }
+
+private:
+ QSystemLock sl;
+};
+
+class ScriptSharedMemory : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(bool attached READ isAttached)
+ Q_PROPERTY(QString key WRITE setKey READ key)
+
+public:
+ enum SharedMemoryError
+ {
+ NoError = 0,
+ PermissionDenied = 1,
+ InvalidSize = 2,
+ KeyError = 3,
+ AlreadyExists = 4,
+ NotFound = 5,
+ LockError = 6,
+ OutOfResources = 7,
+ UnknownError = 8
+ };
+
+ ScriptSharedMemory(QObject *parent = 0) : QObject(parent)
+ {
+ }
+
+public slots:
+ void sleep(int x) const
+ {
+ QTest::qSleep(x);
+ }
+
+ bool create(int size)
+ {
+ return sm.create(size);
+ };
+
+ bool createReadOnly(int size)
+ {
+ return sm.create(size, QSharedMemory::ReadOnly);
+ };
+
+ int size() const
+ {
+ return sm.size();
+ };
+
+ bool attach()
+ {
+ return sm.attach();
+ };
+
+ bool attachReadOnly()
+ {
+ return sm.attach(QSharedMemory::ReadOnly);
+ };
+
+ bool isAttached() const
+ {
+ return sm.isAttached();
+ };
+
+ bool detach()
+ {
+ return sm.detach();
+ };
+
+ int error() const
+ {
+ return (int)sm.error();
+ };
+
+ QString errorString() const
+ {
+ return sm.errorString();
+ };
+
+ void set(int i, QChar value)
+ {
+ ((char*)sm.data())[i] = value.toLatin1();
+ }
+
+ QString get(int i)
+ {
+ return QChar::fromLatin1(((char*)sm.data())[i]);
+ }
+
+ char *data() const
+ {
+ return (char*)sm.data();
+ };
+
+ void setKey(const QString &key)
+ {
+ sm.setKey(key);
+ };
+
+ QString key() const
+ {
+ return sm.key();
+ }
+
+ bool lock()
+ {
+ return sm.lock();
+ }
+
+ bool unlock()
+ {
+ return sm.unlock();
+ }
+
+private:
+ QSharedMemory sm;
+};
+
+QT_BEGIN_NAMESPACE
+Q_SCRIPT_DECLARE_QMETAOBJECT(ScriptSharedMemory, QObject*);
+Q_SCRIPT_DECLARE_QMETAOBJECT(ScriptSystemLock, QObject*);
+Q_SCRIPT_DECLARE_QMETAOBJECT(ScriptSystemSemaphore, QObject*);
+QT_END_NAMESPACE
+
+static void interactive(QScriptEngine &eng)
+{
+#ifdef Q_OS_WINCE
+ fprintf(stderr, "Interactive mode not supported on Windows CE\n");
+ return;
+#endif
+ QTextStream qin(stdin, QFile::ReadOnly);
+
+ const char *qscript_prompt = "qs> ";
+ const char *dot_prompt = ".... ";
+ const char *prompt = qscript_prompt;
+
+ QString code;
+
+ forever {
+ QString line;
+
+ printf("%s", prompt);
+ fflush(stdout);
+
+ line = qin.readLine();
+ if (line.isNull())
+ break;
+
+ code += line;
+ code += QLatin1Char('\n');
+
+ if (line.trimmed().isEmpty()) {
+ continue;
+
+ } else if (! eng.canEvaluate(code)) {
+ prompt = dot_prompt;
+
+ } else {
+ QScriptValue result = eng.evaluate(code);
+ code.clear();
+ prompt = qscript_prompt;
+ if (!result.isUndefined())
+ fprintf(stderr, "%s\n", qPrintable(result.toString()));
+ }
+ }
+}
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+
+ QScriptEngine eng;
+ QScriptValue globalObject = eng.globalObject();
+
+ QScriptValue sm = qScriptValueFromQMetaObject<ScriptSharedMemory>(&eng);
+ eng.globalObject().setProperty("ScriptSharedMemory", sm);
+
+ QScriptValue sl = qScriptValueFromQMetaObject<ScriptSystemLock>(&eng);
+ eng.globalObject().setProperty("ScriptSystemLock", sl);
+
+ QScriptValue ss = qScriptValueFromQMetaObject<ScriptSystemSemaphore>(&eng);
+ eng.globalObject().setProperty("ScriptSystemSemaphore", ss);
+
+
+ if (! *++argv) {
+ interactive(eng);
+ return EXIT_SUCCESS;
+ }
+
+ QStringList arguments = app.arguments();
+ arguments.takeFirst();
+
+ while (!arguments.isEmpty()) {
+ QString fn = arguments.takeFirst();
+
+ if (fn == QLatin1String("-i")) {
+ interactive(eng);
+ break;
+ }
+
+ QString contents;
+
+ if (fn == QLatin1String("-")) {
+ QTextStream stream(stdin, QFile::ReadOnly);
+ contents = stream.readAll();
+ } else {
+ QFile file(fn);
+ if (!file.exists()) {
+ fprintf(stderr, "%s doesn't exists\n", qPrintable(fn));
+ return EXIT_FAILURE;
+ }
+ if (file.open(QFile::ReadOnly)) {
+ QTextStream stream(&file);
+ contents = stream.readAll();
+ file.close();
+ }
+ }
+
+ if (contents.isEmpty())
+ continue;
+
+ if (contents[0] == '#') {
+ contents.prepend("//");
+ QScriptValue args = eng.newArray();
+ args.setProperty("0", QScriptValue(&eng, fn));
+ int i = 1;
+ while (!arguments.isEmpty())
+ args.setProperty(i++, QScriptValue(&eng, arguments.takeFirst()));
+ eng.currentContext()->activationObject().setProperty("args", args);
+ }
+ QScriptValue r = eng.evaluate(contents);
+ if (eng.hasUncaughtException()) {
+ int line = eng.uncaughtExceptionLineNumber();
+ fprintf(stderr, "%d: %s\n\t%s\n\n", line, qPrintable(fn), qPrintable(r.toString()));
+ return EXIT_FAILURE;
+ }
+ if (r.isNumber())
+ return r.toInt32();
+ }
+
+ return EXIT_SUCCESS;
+}
+
+#include "main.moc"
diff --git a/tests/auto/corelib/kernel/qtipc/lackey/scripts/consumer.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/consumer.js
new file mode 100644
index 0000000000..4d12dcac1a
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/consumer.js
@@ -0,0 +1,41 @@
+function QVERIFY(x, debugInfo) {
+ if (!(x)) {
+ print(debugInfo);
+ throw(debugInfo);
+ }
+}
+
+var consumer = new ScriptSharedMemory;
+consumer.setKey("market");
+
+//print("consumer starting");
+var tries = 0;;
+while(!consumer.attach()) {
+ if (tries == 5000) {
+ var message = "consumer exiting, waiting too long";
+ print(message);
+ throw(message);
+ }
+ ++tries;
+ consumer.sleep(1);
+}
+//print("consumer attached");
+
+
+var i = 0;
+while(true) {
+ QVERIFY(consumer.lock(), "lock");
+ if (consumer.get(0) == 'Q') {
+ consumer.set(0, ++i);
+ //print ("consumer sets" + i);
+ }
+ if (consumer.get(0) == 'E') {
+ QVERIFY(consumer.unlock(), "unlock");
+ break;
+ }
+ QVERIFY(consumer.unlock(), "unlock");
+ consumer.sleep(10);
+}
+
+//print("consumer detaching");
+QVERIFY(consumer.detach());
diff --git a/tests/auto/corelib/kernel/qtipc/lackey/scripts/producer.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/producer.js
new file mode 100644
index 0000000000..e02cd8b7bb
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/producer.js
@@ -0,0 +1,44 @@
+function QVERIFY(x, debugInfo) {
+ if (!(x)) {
+ print(debugInfo);
+ throw(debugInfo);
+ }
+}
+
+var producer = new ScriptSharedMemory;
+producer.setKey("market");
+
+var size = 1024;
+if (!producer.create(size)) {
+ QVERIFY(producer.error() == 4, "create");
+ QVERIFY(producer.attach());
+}
+//print ("producer created and attached");
+
+QVERIFY(producer.lock());
+producer.set(0, 'Q');
+QVERIFY(producer.unlock());
+
+var i = 0;
+while(i < 5) {
+ QVERIFY(producer.lock(), "lock");
+ if (producer.get(0) == 'Q') {
+ QVERIFY(producer.unlock(), "unlock");
+ producer.sleep(1);
+ continue;
+ }
+ //print("producer: " + i);
+ ++i;
+ producer.set(0, 'Q');
+ QVERIFY(producer.unlock(), "unlock");
+ producer.sleep(1);
+}
+QVERIFY(producer.lock());
+producer.set(0, 'E');
+QVERIFY(producer.unlock());
+
+//print ("producer done");
+
+// Sleep for a bit to let all consumers start, otherwise they will get stuck in the attach loop,
+// because at least in Symbian the shared memory will be destroyed if there are no active handles to it.
+producer.sleep(3000); \ No newline at end of file
diff --git a/tests/auto/corelib/kernel/qtipc/lackey/scripts/readonly_segfault.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/readonly_segfault.js
new file mode 100644
index 0000000000..3eaf789d23
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/readonly_segfault.js
@@ -0,0 +1,4 @@
+var sm = new ScriptSharedMemory;
+sm.setKey("readonly_segfault");
+sm.createReadOnly(1024);
+var data = sm.set(0, "a");
diff --git a/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_read.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_read.js
new file mode 100644
index 0000000000..1048bc7955
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_read.js
@@ -0,0 +1,11 @@
+function QVERIFY(x, debugInfo) {
+ if (!(x)) {
+ print(debugInfo);
+ throw(debugInfo);
+ }
+}
+
+var lock = new ScriptSystemLock;
+lock.setKey("market");
+QVERIFY(lock.lockReadOnly());
+QVERIFY(lock.unlock()); \ No newline at end of file
diff --git a/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_readwrite.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_readwrite.js
new file mode 100644
index 0000000000..fc6367ff4b
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemlock_readwrite.js
@@ -0,0 +1,11 @@
+function QVERIFY(x, debugInfo) {
+ if (!(x)) {
+ print(debugInfo);
+ throw(debugInfo);
+ }
+}
+
+var lock = new ScriptSystemLock;
+lock.setKey("market");
+QVERIFY(lock.lock());
+QVERIFY(lock.unlock());
diff --git a/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquire.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquire.js
new file mode 100644
index 0000000000..5cff429b86
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquire.js
@@ -0,0 +1,18 @@
+#/bin/qscript
+function QVERIFY(x, debugInfo) {
+ if (!(x)) {
+ print(debugInfo);
+ throw(debugInfo);
+ }
+}
+
+
+var sem = new ScriptSystemSemaphore;
+sem.setKey("store");
+
+var count = Number(args[1]);
+if (isNaN(count))
+ count = 1;
+for (var i = 0; i < count; ++i)
+ QVERIFY(sem.acquire());
+print("done aquiring");
diff --git a/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquirerelease.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquirerelease.js
new file mode 100644
index 0000000000..cedde3f0ae
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_acquirerelease.js
@@ -0,0 +1,11 @@
+function QVERIFY(x, debugInfo) {
+ if (!(x)) {
+ print(debugInfo);
+ throw(debugInfo);
+ }
+}
+
+var lock = new ScriptSystemSemaphore;
+lock.setKey("store");
+QVERIFY(lock.acquire());
+QVERIFY(lock.release());
diff --git a/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_release.js b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_release.js
new file mode 100644
index 0000000000..c805e0fed8
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/lackey/scripts/systemsemaphore_release.js
@@ -0,0 +1,11 @@
+function QVERIFY(x, debugInfo) {
+ if (!(x)) {
+ print(debugInfo);
+ throw(debugInfo);
+ }
+}
+
+var sem = new ScriptSystemSemaphore;
+sem.setKey("store");
+QVERIFY(sem.release());
+print ("done releasing");
diff --git a/tests/auto/corelib/kernel/qtipc/qsharedmemory/.gitignore b/tests/auto/corelib/kernel/qtipc/qsharedmemory/.gitignore
new file mode 100644
index 0000000000..03ddcf29cf
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/.gitignore
@@ -0,0 +1,3 @@
+tst_qsharedmemory
+lackey/lackey.exe
+qsystemlock/tst_qsystemlock.exe
diff --git a/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsharedmemory.pro b/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsharedmemory.pro
new file mode 100644
index 0000000000..9fef8e4112
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsharedmemory.pro
@@ -0,0 +1,4 @@
+TEMPLATE = subdirs
+SUBDIRS = test qsystemlock
+
+
diff --git a/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/qsystemlock.pro b/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/qsystemlock.pro
new file mode 100644
index 0000000000..e3d99bb85c
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/qsystemlock.pro
@@ -0,0 +1,22 @@
+CONFIG += qttest_p4
+QT += gui-private
+
+include(../src/src.pri)
+win32: CONFIG += console
+mac:CONFIG -= app_bundle
+
+wince* {
+ DEFINES += SRCDIR=\\\"\\\"
+} else:!symbian {
+ DEFINES += SRCDIR=\\\"$$PWD\\\"
+}
+
+DESTDIR = ./
+
+DEFINES += QSHAREDMEMORY_DEBUG
+DEFINES += QSYSTEMSEMAPHORE_DEBUG
+
+SOURCES += tst_qsystemlock.cpp
+TARGET = tst_qsystemlock
+
+
diff --git a/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/tst_qsystemlock.cpp b/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/tst_qsystemlock.cpp
new file mode 100644
index 0000000000..072b94f985
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/qsystemlock/tst_qsystemlock.cpp
@@ -0,0 +1,239 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qsystemlock.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+// And underlying Open C have application private dir in default search path
+#define SRCDIR ""
+#endif
+
+
+#define EXISTING_SHARE "existing"
+
+class tst_QSystemLock : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QSystemLock();
+ virtual ~tst_QSystemLock();
+
+public Q_SLOTS:
+ void init();
+ void cleanup();
+
+private slots:
+ void key_data();
+ void key();
+
+ void basicLock();
+ void complexLock();
+ void lockModes();
+ void sucessive();
+ void processes_data();
+ void processes();
+
+private:
+ QSystemLock *existingLock;
+
+};
+
+tst_QSystemLock::tst_QSystemLock()
+{
+}
+
+tst_QSystemLock::~tst_QSystemLock()
+{
+}
+
+void tst_QSystemLock::init()
+{
+ existingLock = new QSystemLock(EXISTING_SHARE);
+}
+
+void tst_QSystemLock::cleanup()
+{
+ delete existingLock;
+}
+
+void tst_QSystemLock::key_data()
+{
+ QTest::addColumn<QString>("constructorKey");
+ QTest::addColumn<QString>("setKey");
+
+ QTest::newRow("null, null") << QString() << QString();
+ QTest::newRow("null, one") << QString() << QString("one");
+ QTest::newRow("one, two") << QString("one") << QString("two");
+}
+
+/*!
+ Basic key testing
+ */
+void tst_QSystemLock::key()
+{
+ QFETCH(QString, constructorKey);
+ QFETCH(QString, setKey);
+
+ QSystemLock sl(constructorKey);
+ QCOMPARE(sl.key(), constructorKey);
+ sl.setKey(setKey);
+ QCOMPARE(sl.key(), setKey);
+}
+
+void tst_QSystemLock::basicLock()
+{
+ QSystemLock lock("foo");
+ QVERIFY(lock.lock());
+ QVERIFY(lock.unlock());
+}
+
+void tst_QSystemLock::complexLock()
+{
+ QSystemLock lock("foo");
+ QVERIFY(lock.lock(QSystemLock::ReadOnly));
+ QVERIFY(lock.unlock());
+
+ QVERIFY(lock.lock(QSystemLock::ReadWrite));
+ QVERIFY(lock.unlock());
+
+ QVERIFY(lock.lock(QSystemLock::ReadOnly));
+ QVERIFY(lock.lock(QSystemLock::ReadOnly));
+ QVERIFY(lock.unlock());
+ QVERIFY(lock.unlock());
+}
+
+void tst_QSystemLock::lockModes()
+{
+ QSystemLock reader1("library");
+ QSystemLock reader2("library");
+
+ QSystemLock librarian("library");
+ QVERIFY(reader1.lock(QSystemLock::ReadOnly));
+ QVERIFY(reader2.lock(QSystemLock::ReadOnly));
+ QVERIFY(reader1.unlock());
+ QVERIFY(reader2.unlock());
+ QVERIFY(librarian.lock(QSystemLock::ReadWrite));
+ QVERIFY(librarian.unlock());
+}
+
+void tst_QSystemLock::sucessive()
+{
+ QSystemLock lock("library");
+ QVERIFY(lock.lock(QSystemLock::ReadOnly));
+ QVERIFY(lock.lock(QSystemLock::ReadOnly));
+ QVERIFY(lock.lock(QSystemLock::ReadOnly));
+ QVERIFY(lock.lock(QSystemLock::ReadOnly));
+ QVERIFY(lock.lock(QSystemLock::ReadOnly));
+ QVERIFY(lock.unlock());
+ QVERIFY(lock.unlock());
+ QVERIFY(lock.unlock());
+ QVERIFY(lock.unlock());
+ QVERIFY(lock.unlock());
+ QVERIFY(!lock.unlock());
+}
+
+void tst_QSystemLock::processes_data()
+{
+ QTest::addColumn<int>("readOnly");
+ QTest::addColumn<int>("readWrite");
+ for (int i = 0; i < 5; ++i) {
+ QTest::newRow("1/0 process") << 1 << 0;
+ QTest::newRow("0/1 process") << 0 << 1;
+ QTest::newRow("0/4 process") << 0 << 4;
+ QTest::newRow("1/1 process") << 1 << 1;
+ QTest::newRow("10/1 process") << 10 << 1;
+ QTest::newRow("1/10 process") << 1 << 10;
+ QTest::newRow("10/10 processes") << 10 << 10;
+ }
+}
+
+/*!
+ Create external processes
+ */
+void tst_QSystemLock::processes()
+{
+ QSKIP("This test takes about 15 minutes and needs to be trimmed down before we can re-enable it", SkipAll);
+ QFETCH(int, readOnly);
+ QFETCH(int, readWrite);
+
+ QStringList scripts;
+ for (int i = 0; i < readOnly; ++i)
+ scripts.append(QFileInfo(SRCDIR "/../lackey/scripts/systemlock_read.js").absoluteFilePath() );
+ for (int i = 0; i < readWrite; ++i)
+ scripts.append(QFileInfo(SRCDIR "/../lackey/scripts/systemlock_readwrite.js").absoluteFilePath());
+
+ QList<QProcess*> consumers;
+ unsigned int failedProcesses = 0;
+ for (int i = 0; i < scripts.count(); ++i) {
+
+ QStringList arguments = QStringList() << scripts.at(i);
+ QProcess *p = new QProcess;
+ p->setProcessChannelMode(QProcess::ForwardedChannels);
+
+ p->start("../lackey/lackey", arguments);
+ // test, if the process could be started.
+
+ if (p->waitForStarted(2000))
+ consumers.append(p);
+ else
+ ++failedProcesses;
+ }
+
+ while (!consumers.isEmpty()) {
+ consumers.first()->waitForFinished(3000);
+ consumers.first()->kill();
+ QCOMPARE(consumers.first()->exitStatus(), QProcess::NormalExit);
+ QCOMPARE(consumers.first()->exitCode(), 0);
+ delete consumers.takeFirst();
+ }
+ QCOMPARE(failedProcesses, (unsigned int)(0));
+}
+
+QTEST_MAIN(tst_QSystemLock)
+#include "tst_qsystemlock.moc"
+
diff --git a/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.cpp b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.cpp
new file mode 100644
index 0000000000..b48bd7bebe
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.cpp
@@ -0,0 +1,246 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include "qsystemlock.h"
+#include "qsystemlock_p.h"
+
+#include <qdebug.h>
+
+/*! \class QSystemLocker
+
+ \brief The QSystemLocker class is a convenience class that simplifies
+ locking and unlocking system locks.
+
+ The purpose of QSystemLocker is to simplify QSystemLock locking and
+ unlocking. Locking and unlocking a QSystemLock in complex functions and
+ statements or in exception handling code is error-prone and difficult to
+ debug. QSystemLocker can be used in such situations to ensure that the
+ state of the locks is always well-defined.
+
+ QSystemLocker should be created within a function where a QSystemLock needs
+ to be locked. The system lock is locked when QSystemLocker is created. If
+ locked, the system lock will be unlocked when the QSystemLocker is
+ destroyed. QSystemLocker can be unlocked with unlock() and relocked with
+ relock().
+
+ \sa QSystemLock
+ */
+
+/*! \fn QSystemLocker::QSystemLocker()
+
+ Constructs a QSystemLocker and locks \a lock. The \a lock will be
+ unlocked when the QSystemLocker is destroyed. If lock is zero,
+ QSystemLocker does nothing.
+
+ \sa QSystemLock::lock()
+ */
+
+/*! \fn QSystemLocker::~QSystemLocker()
+
+ Destroys the QSystemLocker and unlocks it if it was
+ locked in the constructor.
+
+ \sa QSystemLock::unlock()
+ */
+
+/*! \fn QSystemLocker::systemLock()
+
+ Returns a pointer to the lock that was locked in the constructor.
+ */
+
+/*! \fn QSystemLocker::relock()
+
+ Relocks an unlocked locker.
+
+ \sa unlock()
+ */
+
+/*! \fn QSystemLocker::unlock()
+
+ Unlocks this locker. You can use relock() to lock it again.
+ It does not need to be locked when destroyed.
+
+ \sa relock()
+ */
+
+/*! \class QSystemLock
+
+ \brief The QSystemLock class provides a system wide lock
+ that can be used between threads or processes.
+
+ The purpose of a QSystemLocker is to protect an object that can be
+ accessed by multiple threads or processes such as shared memory or a file.
+
+ For example, say there is a method which prints a message to a log file:
+
+ void log(const QString &logText)
+ {
+ QSystemLock systemLock(QLatin1String("logfile"));
+ systemLock.lock();
+ QFile file(QDir::temp() + QLatin1String("/log"));
+ if (file.open(QIODevice::Append)) {
+ QTextStream out(&file);
+ out << logText;
+ }
+ systemLock.unlock();
+ }
+
+ If this is called from two separate processes the resulting log file is
+ guaranteed to contain both lines.
+
+ When you call lock(), other threads or processes that try to call lock()
+ with the same key will block until the thread or process that got the lock
+ calls unlock().
+
+ A non-blocking alternative to lock() is tryLock().
+ */
+
+/*!
+ Constructs a new system lock with \a key. The lock is created in an
+ unlocked state.
+
+ \sa lock(), key().
+ */
+QSystemLock::QSystemLock(const QString &key)
+{
+ d = new QSystemLockPrivate;
+ setKey(key);
+}
+
+/*!
+ Destroys a system lock.
+
+ warning: This will not unlock the system lock if it has been locked.
+*/
+QSystemLock::~QSystemLock()
+{
+ d->cleanHandle();
+ delete d;
+}
+
+/*!
+ Sets a new key to this system lock.
+
+ \sa key()
+ */
+void QSystemLock::setKey(const QString &key)
+{
+ if (key == d->key)
+ return;
+ d->cleanHandle();
+ d->lockCount = 0;
+ d->key = key;
+ // cache the file name so it doesn't have to be generated all the time.
+ d->fileName = d->makeKeyFileName();
+ d->error = QSystemLock::NoError;
+ d->errorString = QString();
+ d->handle();
+}
+
+/*!
+ Returns the key assigned to this system lock
+
+ \sa setKey()
+ */
+QString QSystemLock::key() const
+{
+ return d->key;
+}
+
+/*!
+ Locks the system lock. Lock \a mode can either be ReadOnly or ReadWrite.
+ If a mode is ReadOnly, attempts by other processes to obtain
+ ReadOnly locks will succeed, and ReadWrite attempts will block until
+ all of the ReadOnly locks are unlocked. If locked as ReadWrite, all
+ other attempts to lock will block until the lock is unlocked. A given
+ QSystemLock can be locked multiple times without blocking, and will
+ only be unlocked after a corresponding number of unlock()
+ calls are made. Returns true on success; otherwise returns false.
+
+ \sa unlock(), tryLock()
+ */
+bool QSystemLock::lock(LockMode mode)
+{
+ if (d->lockCount > 0 && mode == ReadOnly && d->lockedMode == ReadWrite) {
+ qWarning() << "QSystemLock::lock readwrite lock on top of readonly lock.";
+ return false;
+ }
+ return d->modifySemaphore(QSystemLockPrivate::Lock, mode);
+}
+
+/*!
+ Unlocks the system lock.
+ Returns true on success; otherwise returns false.
+
+ \sa lock()
+ */
+bool QSystemLock::unlock()
+{
+ if (d->lockCount == 0) {
+ qWarning() << "QSystemLock::unlock: unlock with no lock.";
+ return false;
+ }
+ return d->modifySemaphore(QSystemLockPrivate::Unlock, d->lockedMode);
+}
+
+/*!
+ Returns the type of error that occurred last or NoError.
+
+ \sa errorString()
+ */
+QSystemLock::SystemLockError QSystemLock::error() const
+{
+ return d->error;
+}
+
+/*!
+ Returns the human-readable message appropriate to the current error
+ reported by error(). If no suitable string is available, an empty
+ string is returned.
+
+ \sa error()
+ */
+QString QSystemLock::errorString() const
+{
+ return d->errorString;
+}
+
diff --git a/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.h b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.h
new file mode 100644
index 0000000000..f9db4f879c
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock.h
@@ -0,0 +1,135 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QSYSTEMLOCK_H
+#define QSYSTEMLOCK_H
+
+#include <QtCore/qstring.h>
+
+QT_BEGIN_HEADER
+
+#ifndef QT_NO_SYSTEMLOCK
+
+QT_FORWARD_DECLARE_CLASS(QSystemLockPrivate)
+
+class QSystemLock
+{
+
+public:
+ enum SystemLockError
+ {
+ NoError,
+ UnknownError
+ };
+
+ QSystemLock(const QString &key);
+ ~QSystemLock();
+
+ void setKey(const QString &key);
+ QString key() const;
+
+ enum LockMode
+ {
+ ReadOnly,
+ ReadWrite
+ };
+
+ bool lock(LockMode mode = ReadWrite);
+ bool unlock();
+
+ SystemLockError error() const;
+ QString errorString() const;
+
+private:
+ Q_DISABLE_COPY(QSystemLock)
+
+ QSystemLockPrivate *d;
+};
+
+class QSystemLocker
+{
+
+public:
+ inline QSystemLocker(QSystemLock *systemLock,
+ QSystemLock::LockMode mode = QSystemLock::ReadWrite) : q_lock(systemLock)
+ {
+ autoUnLocked = relock(mode);
+ }
+
+ inline ~QSystemLocker()
+ {
+ if (autoUnLocked)
+ unlock();
+ }
+
+ inline QSystemLock *systemLock() const
+ {
+ return q_lock;
+ }
+
+ inline bool relock(QSystemLock::LockMode mode = QSystemLock::ReadWrite)
+ {
+ return (q_lock && q_lock->lock(mode));
+ }
+
+ inline bool unlock()
+ {
+ if (q_lock && q_lock->unlock()) {
+ autoUnLocked = false;
+ return true;
+ }
+ return false;
+ }
+
+private:
+ Q_DISABLE_COPY(QSystemLocker)
+
+ bool autoUnLocked;
+ QSystemLock *q_lock;
+};
+
+#endif // QT_NO_SYSTEMLOCK
+
+QT_END_HEADER
+
+#endif // QSYSTEMLOCK_H
+
diff --git a/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_p.h b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_p.h
new file mode 100644
index 0000000000..628b005afc
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_p.h
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QSYSTEMLOCK_P_H
+#define QSYSTEMLOCK_P_H
+
+#ifndef QT_NO_SYSTEMLOCK
+
+#include "qsystemlock.h"
+#include "private/qsharedmemory_p.h"
+#ifndef Q_OS_WINCE
+#include <sys/types.h>
+#endif
+
+#define MAX_LOCKS 64
+
+class QSystemLockPrivate
+{
+
+public:
+ QSystemLockPrivate();
+
+ QString makeKeyFileName()
+ {
+ return QSharedMemoryPrivate::makePlatformSafeKey(key, QLatin1String("qipc_systemlock_"));
+ }
+
+ void setErrorString(const QString &function);
+
+#ifdef Q_OS_WIN
+ HANDLE handle();
+ bool lock(HANDLE, int count);
+ bool unlock(HANDLE, int count);
+#else
+ key_t handle();
+#endif
+ void cleanHandle();
+
+ enum Operation {
+ Lock,
+ Unlock
+ };
+ bool modifySemaphore(Operation op, QSystemLock::LockMode mode = QSystemLock::ReadOnly);
+
+ QString key;
+ QString fileName;
+#ifdef Q_OS_WIN
+ HANDLE semaphore;
+ HANDLE semaphoreLock;
+#else
+ int semaphore;
+#endif
+ int lockCount;
+ QSystemLock::LockMode lockedMode;
+
+ QSystemLock::SystemLockError error;
+ QString errorString;
+
+private:
+#ifndef Q_OS_WIN
+ key_t unix_key;
+ bool createdFile;
+ bool createdSemaphore;
+#endif
+};
+
+#endif // QT_NO_SYSTEMLOCK
+
+#endif // QSYSTEMLOCK_P_H
+
diff --git a/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_unix.cpp b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_unix.cpp
new file mode 100644
index 0000000000..984379619e
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_unix.cpp
@@ -0,0 +1,234 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include "qsystemlock.h"
+#include "qsystemlock_p.h"
+
+#include <qdebug.h>
+#include <qfile.h>
+
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <sys/shm.h>
+#include <unistd.h>
+
+#include <sys/sem.h>
+// We have to define this as on some sem.h will have it
+union qt_semun {
+ int val; /* value for SETVAL */
+ struct semid_ds *buf; /* buffer for IPC_STAT, IPC_SET */
+ unsigned short *array; /* array for GETALL, SETALL */
+};
+
+#define tr(x) QT_TRANSLATE_NOOP(QLatin1String("QSystemLock"), (x))
+
+#if defined(Q_OS_SYMBIAN)
+int createUnixKeyFile(const QString &fileName)
+{
+ if (QFile::exists(fileName))
+ return 0;
+
+ int fd = open(QFile::encodeName(fileName).constData(),
+ O_EXCL | O_CREAT | O_RDWR, 0640);
+ if (-1 == fd) {
+ if (errno == EEXIST)
+ return 0;
+ return -1;
+ } else {
+ close(fd);
+ }
+ return 1;
+}
+#endif
+
+QSystemLockPrivate::QSystemLockPrivate() :
+ semaphore(-1), lockCount(0),
+ error(QSystemLock::NoError), unix_key(-1), createdFile(false), createdSemaphore(false)
+{
+}
+
+void QSystemLockPrivate::setErrorString(const QString &function)
+{
+ switch (errno) {
+ case EIDRM:
+ errorString = function + QLatin1String(": ") + tr("The semaphore set was removed");
+ error = QSystemLock::UnknownError;
+ break;
+ default:
+ errorString = function + QLatin1String(": ") + tr("unknown error");
+ error = QSystemLock::UnknownError;
+ qWarning() << errorString << "key" << key << "errno" << errno << ERANGE << ENOMEM << EINVAL << EINTR << EFBIG << EFAULT << EAGAIN << EACCES << E2BIG;
+ }
+}
+
+/*!
+ \internal
+
+ Setup unix_key
+ */
+key_t QSystemLockPrivate::handle()
+{
+ if (key.isEmpty())
+ return -1;
+
+ // ftok requires that an actual file exists somewhere
+ // If we have already made at some point in the past,
+ // double check that it is still there.
+ if (-1 != unix_key) {
+ int aNewunix_key = ftok(QFile::encodeName(fileName).constData(), 'Q');
+ if (aNewunix_key != unix_key) {
+ cleanHandle();
+ } else {
+ return unix_key;
+ }
+ }
+
+ // Create the file needed for ftok
+#if defined(Q_OS_SYMBIAN)
+ int built = createUnixKeyFile(fileName);
+#else
+ int built = QSharedMemoryPrivate::createUnixKeyFile(fileName);
+#endif
+ if (-1 == built)
+ return -1;
+ createdFile = (1 == built);
+
+ // Get the unix key for the created file
+ unix_key = ftok(QFile::encodeName(fileName).constData(), 'Q');
+ if (-1 == unix_key) {
+ setErrorString(QLatin1String("QSystemLock::handle ftok"));
+ return -1;
+ }
+
+ // Get semaphore
+ semaphore = semget(unix_key, 1, 0666 | IPC_CREAT | IPC_EXCL);
+ if (-1 == semaphore) {
+ if (errno == EEXIST)
+ semaphore = semget(unix_key, 1, 0666 | IPC_CREAT);
+ if (-1 == semaphore) {
+ setErrorString(QLatin1String("QSystemLock::handle semget"));
+ cleanHandle();
+ return -1;
+ }
+ } else {
+ // Created semaphore, initialize value.
+ createdSemaphore = true;
+ qt_semun init_op;
+ init_op.val = MAX_LOCKS;
+ if (-1 == semctl(semaphore, 0, SETVAL, init_op)) {
+ setErrorString(QLatin1String("QSystemLock::handle semctl"));
+ cleanHandle();
+ return -1;
+ }
+ }
+
+ return unix_key;
+}
+
+/*!
+ \internal
+
+ Cleanup the unix_key
+ */
+void QSystemLockPrivate::cleanHandle()
+{
+ unix_key = -1;
+
+ // remove the file if we made it
+ if (createdFile) {
+ if (!QFile::remove(fileName))
+ setErrorString(QLatin1String("QSystemLock::cleanHandle QFile::remove"));
+ createdFile = false;
+ }
+
+ if (createdSemaphore) {
+ if (-1 != semaphore) {
+ if (-1 == semctl(semaphore, 0, IPC_RMID)) {
+ setErrorString(QLatin1String("QSystemLock::cleanHandle semctl"));
+ }
+ semaphore = -1;
+ }
+ createdSemaphore = false;
+ }
+}
+
+/*!
+ \internal
+
+ modifySemaphore generates operation.sem_op and handles recursive behavior.
+ */
+bool QSystemLockPrivate::modifySemaphore(QSystemLockPrivate::Operation op,
+ QSystemLock::LockMode mode)
+{
+ if (-1 == handle())
+ return false;
+
+ if ((lockCount == 0 && op == Lock) || (lockCount > 0 && op == Unlock)) {
+ if (op == Unlock) {
+ --lockCount;
+ if (lockCount < 0)
+ qFatal("%s: lockCount must not be negative", Q_FUNC_INFO);
+ if (lockCount > 0)
+ return true;
+ }
+
+ struct sembuf operation;
+ operation.sem_num = 0;
+ operation.sem_op = (mode == QSystemLock::ReadWrite) ? MAX_LOCKS : 1;
+ if (op == Lock)
+ operation.sem_op *= -1;
+ operation.sem_flg = SEM_UNDO;
+
+ if (-1 == semop(semaphore, &operation, 1)) {
+ setErrorString(QLatin1String("QSystemLock::modify"));
+ return false;
+ }
+ lockedMode = mode;
+ }
+ if (op == Lock)
+ lockCount++;
+
+ return true;
+}
+
diff --git a/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_win.cpp b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_win.cpp
new file mode 100644
index 0000000000..c04b596210
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/qsystemlock_win.cpp
@@ -0,0 +1,183 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include "qsystemlock.h"
+#include "qsystemlock_p.h"
+#include <qdebug.h>
+#include <QtCore>
+QSystemLockPrivate::QSystemLockPrivate() :
+ semaphore(0), semaphoreLock(0),
+ lockCount(0), error(QSystemLock::NoError)
+{
+}
+
+void QSystemLockPrivate::setErrorString(const QString &function)
+{
+ BOOL windowsError = GetLastError();
+ if (windowsError == 0)
+ return;
+ errorString = function + QLatin1String(": ")
+ + QLatin1String("Unknown error");
+ error = QSystemLock::UnknownError;
+ qWarning() << errorString << "key" << key << (int)windowsError << semaphore << semaphoreLock;
+}
+
+/*!
+ \internal
+
+ Setup the semaphore
+ */
+HANDLE QSystemLockPrivate::handle()
+{
+ // don't allow making handles on empty keys
+ if (key.isEmpty())
+ return 0;
+
+ // Create it if it doesn't already exists.
+ if (semaphore == 0) {
+ QString safeName = makeKeyFileName();
+ semaphore = CreateSemaphore(0, MAX_LOCKS, MAX_LOCKS, (wchar_t*)safeName.utf16());
+
+ if (semaphore == 0) {
+ setErrorString(QLatin1String("QSystemLockPrivate::handle"));
+ return 0;
+ }
+ }
+
+ if (semaphoreLock == 0) {
+ QString safeLockName = QSharedMemoryPrivate::makePlatformSafeKey(key + QLatin1String("lock"), QLatin1String("qipc_systemlock_"));
+ semaphoreLock = CreateSemaphore(0, 1, 1, (wchar_t*)safeLockName.utf16());
+
+ if (semaphoreLock == 0) {
+ setErrorString(QLatin1String("QSystemLockPrivate::handle"));
+ return 0;
+ }
+ }
+
+ return semaphore;
+}
+
+/*!
+ \internal
+
+ Cleanup the semaphore
+ */
+void QSystemLockPrivate::cleanHandle()
+{
+ if (semaphore && !CloseHandle(semaphore))
+ setErrorString(QLatin1String("QSystemLockPrivate::cleanHandle:"));
+ if (semaphoreLock && !CloseHandle(semaphoreLock))
+ setErrorString(QLatin1String("QSystemLockPrivate::cleanHandle:"));
+ semaphore = 0;
+ semaphoreLock = 0;
+}
+
+bool QSystemLockPrivate::lock(HANDLE handle, int count)
+{
+ if (count == 1) {
+ WaitForSingleObject(handle, INFINITE);
+ return true;
+ }
+
+ int i = count;
+ while (i > 0) {
+ if (WAIT_OBJECT_0 == WaitForSingleObject(handle, 0)) {
+ --i;
+ } else {
+ // undo what we have done, sleep and then try again later
+ ReleaseSemaphore(handle, (count - i), 0);
+ i = count;
+ ReleaseSemaphore(semaphoreLock, 1, 0);
+ Sleep(1);
+ WaitForSingleObject(semaphoreLock, INFINITE);
+ }
+ }
+ return true;
+}
+
+bool QSystemLockPrivate::unlock(HANDLE handle, int count)
+{
+ if (0 == ReleaseSemaphore(handle, count, 0)) {
+ setErrorString(QLatin1String("QSystemLockPrivate::unlock"));
+ return false;
+ }
+ return true;
+}
+
+/*!
+ \internal
+
+ modifySemaphore handles recursive behavior and modifies the semaphore.
+ */
+bool QSystemLockPrivate::modifySemaphore(QSystemLockPrivate::Operation op,
+ QSystemLock::LockMode mode)
+{
+ if (0 == handle())
+ return false;
+
+ if ((lockCount == 0 && op == Lock) || (lockCount > 0 && op == Unlock)) {
+ if (op == Unlock) {
+ --lockCount;
+ if (lockCount < 0)
+ qFatal("%s: lockCount must not be negative", Q_FUNC_INFO);
+ if (lockCount > 0)
+ return true;
+ }
+
+ int count = (mode == QSystemLock::ReadWrite) ? MAX_LOCKS : 1;
+ if (op == Lock) {
+ lock(semaphoreLock, 1);
+ lock(semaphore, count);
+ if (count != MAX_LOCKS) unlock(semaphoreLock, 1);
+ lockedMode = mode;
+ } else {
+ if (count == MAX_LOCKS) unlock(semaphoreLock, 1);
+ unlock(semaphore, count);
+ }
+
+ }
+ if (op == Lock)
+ lockCount++;
+
+ return true;
+}
+
diff --git a/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/src.pri b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/src.pri
new file mode 100644
index 0000000000..8aaf528447
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/src/src.pri
@@ -0,0 +1,11 @@
+INCLUDEPATH += $$PWD
+DEPENDPATH += $$PWD
+QT += core-private
+
+SOURCES += $$PWD/qsystemlock.cpp
+
+HEADERS += $$PWD/qsystemlock.h \
+ $$PWD/qsystemlock_p.h
+
+unix:SOURCES += $$PWD/qsystemlock_unix.cpp
+win32:SOURCES += $$PWD/qsystemlock_win.cpp
diff --git a/tests/auto/corelib/kernel/qtipc/qsharedmemory/test/test.pro b/tests/auto/corelib/kernel/qtipc/qsharedmemory/test/test.pro
new file mode 100644
index 0000000000..50c266986c
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/test/test.pro
@@ -0,0 +1,37 @@
+load(qttest_p4)
+
+include(../src/src.pri)
+QT -= gui
+
+DEFINES += QSHAREDMEMORY_DEBUG
+DEFINES += QSYSTEMSEMAPHORE_DEBUG
+
+SOURCES += ../tst_qsharedmemory.cpp
+TARGET = ../tst_qsharedmemory
+
+!wince*:win32 {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_qsharedmemory
+} else {
+ TARGET = ../../release/tst_qsharedmemory
+ }
+}
+
+wince*:{
+requires(contains(QT_CONFIG,script))
+QT += gui script
+addFiles.files = $$OUT_PWD/../../lackey/lackey.exe ../../lackey/scripts
+addFiles.path = .
+DEPLOYMENT += addFiles
+DEFINES += SRCDIR=\\\".\\\"
+}else:symbian{
+requires(contains(QT_CONFIG,script))
+QT += gui script
+addFiles.files = ../../lackey/scripts
+addFiles.path = /data/qsharedmemorytemp/lackey
+addBin.files = lackey.exe
+addBin.path = /sys/bin
+DEPLOYMENT += addFiles addBin
+} else {
+DEFINES += SRCDIR=\\\"$$PWD/../\\\"
+}
diff --git a/tests/auto/corelib/kernel/qtipc/qsharedmemory/tst_qsharedmemory.cpp b/tests/auto/corelib/kernel/qtipc/qsharedmemory/tst_qsharedmemory.cpp
new file mode 100644
index 0000000000..38c6f0e8ee
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsharedmemory/tst_qsharedmemory.cpp
@@ -0,0 +1,836 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qsharedmemory.h>
+#include <QtCore/QFile>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#define EXISTING_SHARE "existing"
+#define EXISTING_SIZE 1024
+
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR "c:/data/qsharedmemorytemp/lackey/"
+#define LACKEYDIR SRCDIR "lackey"
+#elif defined(Q_OS_WINCE)
+#define LACKEYDIR SRCDIR
+#else
+#define LACKEYDIR "../lackey"
+#endif
+
+Q_DECLARE_METATYPE(QSharedMemory::SharedMemoryError)
+Q_DECLARE_METATYPE(QSharedMemory::AccessMode)
+
+class tst_QSharedMemory : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QSharedMemory();
+ virtual ~tst_QSharedMemory();
+
+public Q_SLOTS:
+ void init();
+ void cleanup();
+
+private slots:
+ // basics
+ void constructor();
+ void key_data();
+ void key();
+ void create_data();
+ void create();
+ void attach_data();
+ void attach();
+ void lock();
+
+ // custom edge cases
+ void removeWhileAttached();
+ void emptyMemory();
+ void readOnly();
+
+ // basics all together
+ void simpleProducerConsumer_data();
+ void simpleProducerConsumer();
+ void simpleDoubleProducerConsumer();
+
+ // with threads
+ void simpleThreadedProducerConsumer_data();
+ void simpleThreadedProducerConsumer();
+
+ // with processes
+ void simpleProcessProducerConsumer_data();
+ void simpleProcessProducerConsumer();
+
+ // extreme cases
+ void useTooMuchMemory();
+ void attachTooMuch();
+
+ // unique keys
+ void uniqueKey_data();
+ void uniqueKey();
+
+protected:
+ int remove(const QString &key);
+
+ QString rememberKey(const QString &key)
+ {
+ if (key == EXISTING_SHARE)
+ return key;
+ if (!keys.contains(key)) {
+ keys.append(key);
+ remove(key);
+ }
+ return key;
+ }
+
+ QStringList keys;
+ QList<QSharedMemory*> jail;
+ QSharedMemory *existingSharedMemory;
+};
+
+tst_QSharedMemory::tst_QSharedMemory() : existingSharedMemory(0)
+{
+}
+
+tst_QSharedMemory::~tst_QSharedMemory()
+{
+}
+
+void tst_QSharedMemory::init()
+{
+ existingSharedMemory = new QSharedMemory(EXISTING_SHARE);
+ if (!existingSharedMemory->create(EXISTING_SIZE)) {
+ QVERIFY(existingSharedMemory->error() == QSharedMemory::AlreadyExists);
+ }
+}
+
+void tst_QSharedMemory::cleanup()
+{
+ delete existingSharedMemory;
+ qDeleteAll(jail.begin(), jail.end());
+ jail.clear();
+
+ keys.append(EXISTING_SHARE);
+ for (int i = 0; i < keys.count(); ++i) {
+ QSharedMemory sm(keys.at(i));
+ if (!sm.create(1024)) {
+ //if(sm.error() != QSharedMemory::KeyError)
+ // qWarning() << "test cleanup: remove failed:" << keys.at(i) << sm.error() << sm.errorString();
+ sm.attach();
+ sm.detach();
+ remove(keys.at(i));
+ }
+ }
+}
+
+#ifndef Q_OS_WIN
+#include "private/qsharedmemory_p.h"
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+#endif
+
+int tst_QSharedMemory::remove(const QString &key)
+{
+#ifndef Q_OS_WIN
+ // On unix the shared memory might exists from a previously failed test
+ // or segfault, remove it it does
+ if (key.isEmpty())
+ return -1;
+
+ // ftok requires that an actual file exists somewhere
+ QString fileName = QSharedMemoryPrivate::makePlatformSafeKey(key);
+ if (!QFile::exists(fileName)) {
+ //qDebug() << "exits failed";
+ return -2;
+ }
+
+ int unix_key = ftok(fileName.toLatin1().constData(), 'Q');
+ if (-1 == unix_key) {
+ qDebug() << "ftok failed";
+ return -3;
+ }
+
+ int id = shmget(unix_key, 0, 0660);
+ if (-1 == id) {
+ qDebug() << "shmget failed";
+ return -4;
+ }
+
+ struct shmid_ds shmid_ds;
+ if (-1 == shmctl(id, IPC_RMID, &shmid_ds)) {
+ qDebug() << "shmctl failed";
+ return -5;
+ }
+ return QFile::remove(fileName);
+#else
+ Q_UNUSED(key);
+ return 0;
+#endif
+}
+
+/*!
+ Tests the default values
+ */
+void tst_QSharedMemory::constructor()
+{
+ QSharedMemory sm;
+ QCOMPARE(sm.key(), QString());
+ QVERIFY(!sm.isAttached());
+ QVERIFY(sm.data() == 0);
+ QCOMPARE(sm.size(), 0);
+ QCOMPARE(sm.error(), QSharedMemory::NoError);
+ QVERIFY(sm.errorString() == QString());
+}
+
+void tst_QSharedMemory::key_data()
+{
+ QTest::addColumn<QString>("constructorKey");
+ QTest::addColumn<QString>("setKey");
+ QTest::addColumn<QString>("setNativeKey");
+
+ QTest::newRow("null, null, null") << QString() << QString() << QString();
+ QTest::newRow("one, null, null") << QString("one") << QString() << QString();
+ QTest::newRow("null, one, null") << QString() << QString("one") << QString();
+ QTest::newRow("null, null, one") << QString() << QString() << QString("one");
+ QTest::newRow("one, two, null") << QString("one") << QString("two") << QString();
+ QTest::newRow("one, null, two") << QString("one") << QString() << QString("two");
+ QTest::newRow("null, one, two") << QString() << QString("one") << QString("two");
+ QTest::newRow("one, two, three") << QString("one") << QString("two") << QString("three");
+ QTest::newRow("invalid") << QString("o/e") << QString("t/o") << QString("|x");
+}
+
+/*!
+ Basic key testing
+ */
+void tst_QSharedMemory::key()
+{
+ QFETCH(QString, constructorKey);
+ QFETCH(QString, setKey);
+ QFETCH(QString, setNativeKey);
+
+ QSharedMemory sm(constructorKey);
+ QCOMPARE(sm.key(), constructorKey);
+ QCOMPARE(sm.nativeKey().isEmpty(), constructorKey.isEmpty());
+ sm.setKey(setKey);
+ QCOMPARE(sm.key(), setKey);
+ QCOMPARE(sm.nativeKey().isEmpty(), setKey.isEmpty());
+ sm.setNativeKey(setNativeKey);
+ QVERIFY(sm.key().isNull());
+ QCOMPARE(sm.nativeKey(), setNativeKey);
+ QCOMPARE(sm.isAttached(), false);
+
+ QCOMPARE(sm.error(), QSharedMemory::NoError);
+ QVERIFY(sm.errorString() == QString());
+ QVERIFY(sm.data() == 0);
+ QCOMPARE(sm.size(), 0);
+
+ QCOMPARE(sm.detach(), false);
+}
+
+void tst_QSharedMemory::create_data()
+{
+ QTest::addColumn<QString>("key");
+ QTest::addColumn<int>("size");
+ QTest::addColumn<bool>("canCreate");
+ QTest::addColumn<QSharedMemory::SharedMemoryError>("error");
+
+ QTest::newRow("null key") << QString() << 1024
+ << false << QSharedMemory::KeyError;
+ QTest::newRow("-1 size") << QString("negsize") << -1
+ << false << QSharedMemory::InvalidSize;
+ QTest::newRow("nor size") << QString("norsize") << 1024
+ << true << QSharedMemory::NoError;
+ QTest::newRow("already exists") << QString(EXISTING_SHARE) << EXISTING_SIZE
+ << false << QSharedMemory::AlreadyExists;
+}
+
+/*!
+ Basic create testing
+ */
+void tst_QSharedMemory::create()
+{
+ QFETCH(QString, key);
+ QFETCH(int, size);
+ QFETCH(bool, canCreate);
+ QFETCH(QSharedMemory::SharedMemoryError, error);
+
+ QSharedMemory sm(rememberKey(key));
+ QCOMPARE(sm.create(size), canCreate);
+ if(sm.error() != error)
+ qDebug() << sm.errorString();
+ QCOMPARE(sm.key(), key);
+ if (canCreate) {
+ QVERIFY(sm.errorString() == QString());
+ QVERIFY(sm.data() != 0);
+ QVERIFY(sm.size() != 0);
+ } else {
+ QVERIFY(sm.data() == 0);
+ QVERIFY(sm.errorString() != QString());
+ }
+}
+
+void tst_QSharedMemory::attach_data()
+{
+ QTest::addColumn<QString>("key");
+ QTest::addColumn<bool>("exists");
+ QTest::addColumn<QSharedMemory::SharedMemoryError>("error");
+
+ QTest::newRow("null key") << QString() << false << QSharedMemory::KeyError;
+ QTest::newRow("doesn't exists") << QString("doesntexists") << false << QSharedMemory::NotFound;
+ QTest::newRow("already exists") << QString(EXISTING_SHARE) << true << QSharedMemory::NoError;
+}
+
+/*!
+ Basic attach/detach testing
+ */
+void tst_QSharedMemory::attach()
+{
+ QFETCH(QString, key);
+ QFETCH(bool, exists);
+ QFETCH(QSharedMemory::SharedMemoryError, error);
+#ifdef Q_OS_HPUX
+ if (QLatin1String(QTest::currentDataTag()) == QLatin1String("already exists")) {
+ QSKIP("HPUX doesn't allow for multiple attaches per process", SkipSingle);
+ }
+#endif
+ QSharedMemory sm(key);
+ QCOMPARE(sm.attach(), exists);
+ QCOMPARE(sm.isAttached(), exists);
+ QCOMPARE(sm.error(), error);
+ QCOMPARE(sm.key(), key);
+ if (exists) {
+ QVERIFY(sm.data() != 0);
+ QVERIFY(sm.size() != 0);
+ QCOMPARE(sm.errorString(), QString());
+ QVERIFY(sm.detach());
+ // Make sure detach doesn't screw up something and we can't re-attach.
+ QVERIFY(sm.attach());
+ QVERIFY(sm.data() != 0);
+ QVERIFY(sm.size() != 0);
+ QVERIFY(sm.detach());
+ QCOMPARE(sm.size(), 0);
+ QVERIFY(sm.data() == 0);
+ } else {
+ QVERIFY(sm.data() == 0);
+ QVERIFY(sm.size() == 0);
+ QVERIFY(sm.errorString() != QString());
+ QVERIFY(!sm.detach());
+ }
+}
+
+void tst_QSharedMemory::lock()
+{
+ QSharedMemory shm;
+ QVERIFY(!shm.lock());
+ QCOMPARE(shm.error(), QSharedMemory::LockError);
+
+ shm.setKey(QLatin1String("qsharedmemory"));
+
+ QVERIFY(!shm.lock());
+ QCOMPARE(shm.error(), QSharedMemory::LockError);
+
+ QVERIFY(shm.create(100));
+ QVERIFY(shm.lock());
+ QTest::ignoreMessage(QtWarningMsg, "QSharedMemory::lock: already locked");
+ QVERIFY(shm.lock());
+ // we didn't unlock(), so ignore the warning from auto-detach in destructor
+ QTest::ignoreMessage(QtWarningMsg, "QSharedMemory::lock: already locked");
+}
+
+/*!
+ Other shared memory are allowed to be attached after we remove,
+ but new shared memory are not allowed to attach after a remove.
+ */
+void tst_QSharedMemory::removeWhileAttached()
+{
+#ifdef Q_OS_HPUX
+ QSKIP("HPUX doesn't allow for multiple attaches per process", SkipAll);
+#endif
+ rememberKey("one");
+
+ // attach 1
+ QSharedMemory *smOne = new QSharedMemory(QLatin1String("one"));
+ QVERIFY(smOne->create(1024));
+ QVERIFY(smOne->isAttached());
+
+ // attach 2
+ QSharedMemory *smTwo = new QSharedMemory(QLatin1String("one"));
+ QVERIFY(smTwo->attach());
+ QVERIFY(smTwo->isAttached());
+
+ // detach 1 and remove, remove one first to catch another error.
+ delete smOne;
+ delete smTwo;
+
+ // three shouldn't be able to attach
+ QSharedMemory smThree(QLatin1String("one"));
+ QVERIFY(!smThree.attach());
+ QCOMPARE(smThree.error(), QSharedMemory::NotFound);
+}
+
+/*!
+ The memory should be set to 0 after created.
+ */
+void tst_QSharedMemory::emptyMemory()
+{
+ QSharedMemory sm(rememberKey(QLatin1String("voidland")));
+ int size = 1024;
+ QVERIFY(sm.create(size, QSharedMemory::ReadOnly));
+ char *get = (char*)sm.data();
+ char null = 0;
+ for (int i = 0; i < size; ++i)
+ QCOMPARE(get[i], null);
+}
+
+/*!
+ Verify that attach with ReadOnly is actually read only
+ by writing to data and causing a segfault.
+*/
+void tst_QSharedMemory::readOnly()
+{
+#ifdef Q_OS_WIN
+ QSKIP("This test opens a crash dialog on Windows", SkipSingle);
+#endif
+#if defined (Q_OS_SYMBIAN)
+ QSKIP("Readonly shared memory is not supported in symbian", SkipAll);
+#endif
+ QString program = LACKEYDIR "/lackey";
+ QStringList arguments;
+ rememberKey("readonly_segfault");
+ arguments << SRCDIR "../lackey/scripts/readonly_segfault.js";
+
+ // ### on windows disable the popup somehow
+ QProcess p;
+ p.start(program, arguments);
+ p.setProcessChannelMode(QProcess::ForwardedChannels);
+ p.waitForFinished();
+ QCOMPARE(p.error(), QProcess::Crashed);
+}
+
+/*!
+ Keep making shared memory until the kernel stops us.
+ */
+void tst_QSharedMemory::useTooMuchMemory()
+{
+#ifdef Q_OS_LINUX
+ bool success = true;
+ int count = 0;
+ while (success) {
+ QString key = QString("maxmemorytest_%1").arg(count++);
+ QSharedMemory *sm = new QSharedMemory(rememberKey(key));
+ QVERIFY(sm);
+ jail.append(sm);
+ int size = 32768 * 1024;
+ success = sm->create(size);
+ if (!success && sm->error() == QSharedMemory::AlreadyExists) {
+ // left over from a crash, clean it up
+ sm->attach();
+ sm->detach();
+ success = sm->create(size);
+ }
+
+ if (!success) {
+ QVERIFY(!sm->isAttached());
+ QCOMPARE(sm->key(), key);
+ QCOMPARE(sm->size(), 0);
+ QVERIFY(sm->data() == 0);
+ if (sm->error() != QSharedMemory::OutOfResources)
+ qDebug() << sm->error() << sm->errorString();
+ // ### Linux wont return OutOfResources if there are not enough semaphores to use.
+ QVERIFY(sm->error() == QSharedMemory::OutOfResources
+ || sm->error() == QSharedMemory::LockError);
+ QVERIFY(sm->errorString() != QString());
+ QVERIFY(!sm->attach());
+ QVERIFY(!sm->detach());
+ } else {
+ QVERIFY(sm->isAttached());
+ }
+ }
+#endif
+}
+
+/*!
+ Create one shared memory (government) and see how many other shared memories (wars) we can
+ attach before the system runs out of resources.
+ */
+void tst_QSharedMemory::attachTooMuch()
+{
+ QSKIP("disabled", SkipAll);
+#ifdef Q_OS_HPUX
+ QSKIP("HPUX doesn't allow for multiple attaches per process", SkipAll);
+#endif
+#ifdef Q_OS_WINCE
+ QSKIP("This nearly kills the system itself, so skip for Qt/WinCE", SkipAll);
+#endif
+ QSharedMemory government(rememberKey("government"));
+ QVERIFY(government.create(1024));
+ while (true) {
+ QSharedMemory *war = new QSharedMemory(government.key());
+ QVERIFY(war);
+ jail.append(war);
+ if (!war->attach()) {
+ QVERIFY(!war->isAttached());
+ QCOMPARE(war->key(), government.key());
+ QCOMPARE(war->size(), 0);
+ QVERIFY(war->data() == 0);
+ QCOMPARE(war->error(), QSharedMemory::OutOfResources);
+ QVERIFY(war->errorString() != QString());
+ QVERIFY(!war->detach());
+ break;
+ } else {
+ QVERIFY(war->isAttached());
+ }
+ }
+}
+
+void tst_QSharedMemory::simpleProducerConsumer_data()
+{
+ QTest::addColumn<QSharedMemory::AccessMode>("mode");
+
+ QTest::newRow("readonly") << QSharedMemory::ReadOnly;
+ QTest::newRow("readwrite") << QSharedMemory::ReadWrite;
+}
+
+/*!
+ The basic consumer producer that rounds out the basic testing.
+ If this fails then any muli-threading/process might fail (but be
+ harder to debug)
+
+ This doesn't require nor test any locking system.
+ */
+void tst_QSharedMemory::simpleProducerConsumer()
+{
+#ifdef Q_OS_HPUX
+ QSKIP("HPUX doesn't allow for multiple attaches per process", SkipAll);
+#endif
+ QFETCH(QSharedMemory::AccessMode, mode);
+
+ rememberKey(QLatin1String("market"));
+ QSharedMemory producer(QLatin1String("market"));
+ QSharedMemory consumer(QLatin1String("market"));
+ int size = 512;
+ QVERIFY(producer.create(size));
+ QVERIFY(consumer.attach(mode));
+
+ char *put = (char*)producer.data();
+ char *get = (char*)consumer.data();
+ // On Windows CE you always have ReadWrite access. Thus
+ // ViewMapOfFile returns the same pointer
+ // On Symbian, the address will always be same, as
+ // write protection of chunks is not currently supported by Symbian
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
+ QVERIFY(put != get);
+#endif
+ for (int i = 0; i < size; ++i) {
+ put[i] = 'Q';
+ QCOMPARE(get[i], 'Q');
+ }
+ QVERIFY(consumer.detach());
+}
+
+void tst_QSharedMemory::simpleDoubleProducerConsumer()
+{
+#ifdef Q_OS_HPUX
+ QSKIP("HPUX doesn't allow for multiple attaches per process", SkipAll);
+#endif
+ rememberKey(QLatin1String("market"));
+ QSharedMemory producer(QLatin1String("market"));
+ int size = 512;
+ QVERIFY(producer.create(size));
+ QVERIFY(producer.detach());
+ QVERIFY(producer.create(size));
+
+ {
+ QSharedMemory consumer(QLatin1String("market"));
+ QVERIFY(consumer.attach());
+ }
+}
+
+class Consumer : public QThread
+{
+
+public:
+ void run()
+ {
+ QSharedMemory consumer(QLatin1String("market"));
+ while (!consumer.attach()) {
+ if (consumer.error() != QSharedMemory::NotFound)
+ qDebug() << "consumer: failed to connect" << consumer.error() << consumer.errorString();
+ QVERIFY(consumer.error() == QSharedMemory::NotFound || consumer.error() == QSharedMemory::KeyError);
+ QTest::qWait(1);
+ }
+
+ char *memory = (char*)consumer.data();
+
+ int i = 0;
+ while (true) {
+ if(!consumer.lock())
+ break;
+ if (memory[0] == 'Q')
+ memory[0] = ++i;
+ if (memory[0] == 'E') {
+ memory[1]++;
+ QVERIFY(consumer.unlock());
+ break;
+ }
+ QVERIFY(consumer.unlock());
+ QTest::qWait(1);
+ }
+
+ QVERIFY(consumer.detach());
+ }
+};
+
+class Producer : public QThread
+{
+
+public:
+ void run()
+ {
+ QSharedMemory producer(QLatin1String("market"));
+ int size = 1024;
+ if (!producer.create(size)) {
+ // left over from a crash...
+ if (producer.error() == QSharedMemory::AlreadyExists) {
+ producer.attach();
+ producer.detach();
+ QVERIFY(producer.create(size));
+ }
+ }
+ QVERIFY(producer.isAttached());
+ char *memory = (char*)producer.data();
+ memory[1] = '0';
+#if defined(Q_OS_SYMBIAN)
+ // Sleep a while to ensure that consumers start properly
+ QTest::qSleep(1000);
+#endif
+ QTime timer;
+ timer.start();
+ int i = 0;
+ while (i < 5 && timer.elapsed() < 5000) {
+ QVERIFY(producer.lock());
+ if (memory[0] == 'Q') {
+ QVERIFY(producer.unlock());
+ QTest::qWait(1);
+ continue;
+ }
+ ++i;
+ memory[0] = 'Q';
+ QVERIFY(producer.unlock());
+ QTest::qWait(1);
+ }
+
+ // tell everyone to quit
+ QVERIFY(producer.lock());
+ memory[0] = 'E';
+ QVERIFY(producer.unlock());
+
+ }
+private:
+
+};
+
+void tst_QSharedMemory::simpleThreadedProducerConsumer_data()
+{
+ QTest::addColumn<bool>("producerIsThread");
+ QTest::addColumn<int>("threads");
+ for (int i = 0; i < 5; ++i) {
+ QTest::newRow("1 consumer, producer is thread") << true << 1;
+ QTest::newRow("1 consumer, producer is this") << false << 1;
+ QTest::newRow("5 consumers, producer is thread") << true << 5;
+ QTest::newRow("5 consumers, producer is this") << false << 5;
+ }
+}
+
+/*!
+ The basic producer/consumer, but this time using threads.
+ */
+void tst_QSharedMemory::simpleThreadedProducerConsumer()
+{
+ QFETCH(bool, producerIsThread);
+ QFETCH(int, threads);
+ rememberKey(QLatin1String("market"));
+
+#if defined Q_OS_HPUX && defined __ia64
+ QSKIP("This test locks up on gravlaks.troll.no", SkipSingle);
+#endif
+
+ Producer p;
+#if defined(Q_OS_SYMBIAN)
+ enum
+ {
+ /**
+ * The maximum stack size.
+ */
+ SymbianStackSize = 0x14000
+ };
+ p.setStackSize(SymbianStackSize);
+#endif
+ if (producerIsThread)
+ p.start();
+
+ QList<Consumer*> consumers;
+ for (int i = 0; i < threads; ++i) {
+ consumers.append(new Consumer());
+#if defined(Q_OS_SYMBIAN)
+ consumers.last()->setStackSize(SymbianStackSize);
+#endif
+ consumers.last()->start();
+ }
+
+ if (!producerIsThread)
+ p.run();
+
+ p.wait(5000);
+ while (!consumers.isEmpty()) {
+ QVERIFY(consumers.first()->wait(5000));
+ delete consumers.takeFirst();
+ }
+}
+
+void tst_QSharedMemory::simpleProcessProducerConsumer_data()
+{
+ QTest::addColumn<int>("processes");
+ int tries = 5;
+ for (int i = 0; i < tries; ++i) {
+ QTest::newRow("1 process") << 1;
+ QTest::newRow("5 processes") << 5;
+ }
+}
+
+/*!
+ Create external processes that produce and consume.
+ */
+void tst_QSharedMemory::simpleProcessProducerConsumer()
+{
+#if defined (Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+ QSKIP("Cannot launch multiple Qt processes in Symbian emulator", SkipAll);
+#endif
+ QFETCH(int, processes);
+
+ rememberKey("market");
+
+ QStringList arguments = QStringList() << SRCDIR "../lackey/scripts/producer.js";
+ QProcess producer;
+ producer.setProcessChannelMode(QProcess::ForwardedChannels);
+ producer.start( LACKEYDIR "/lackey", arguments);
+ producer.waitForStarted();
+ QVERIFY(producer.error() != QProcess::FailedToStart);
+
+ QList<QProcess*> consumers;
+ unsigned int failedProcesses = 0;
+ for (int i = 0; i < processes; ++i) {
+ QStringList arguments = QStringList() << SRCDIR "../lackey/scripts/consumer.js";
+ QProcess *p = new QProcess;
+ p->setProcessChannelMode(QProcess::ForwardedChannels);
+#ifdef Q_OS_WINCE
+ // We can't start the same executable twice on Windows CE.
+ // Create a copy instead.
+ QString lackeyCopy = QLatin1String(LACKEYDIR "/lackey");
+ lackeyCopy.append(QString::number(i));
+ lackeyCopy.append(QLatin1String(".exe"));
+ if (!QFile::exists(lackeyCopy))
+ QVERIFY(QFile::copy(LACKEYDIR "/lackey.exe", lackeyCopy));
+ p->start(lackeyCopy, arguments);
+#else
+ p->start(LACKEYDIR "/lackey", arguments);
+#endif
+
+ if (p->waitForStarted(2000))
+ consumers.append(p);
+ else
+ ++failedProcesses;
+ }
+
+ QVERIFY(producer.waitForFinished(5000));
+
+ bool consumerFailed = false;
+
+ while (!consumers.isEmpty()) {
+ QVERIFY(consumers.first()->waitForFinished(3000));
+ if (consumers.first()->state() == QProcess::Running ||
+ consumers.first()->exitStatus() != QProcess::NormalExit ||
+ consumers.first()->exitCode() != 0) {
+ consumerFailed = true;
+ }
+ delete consumers.takeFirst();
+ }
+ QCOMPARE(consumerFailed, false);
+ QCOMPARE(failedProcesses, (unsigned int)(0));
+}
+
+void tst_QSharedMemory::uniqueKey_data()
+{
+ QTest::addColumn<QString>("key1");
+ QTest::addColumn<QString>("key2");
+
+ QTest::newRow("null == null") << QString() << QString();
+ QTest::newRow("key == key") << QString("key") << QString("key");
+ QTest::newRow("key1 == key1") << QString("key1") << QString("key1");
+ QTest::newRow("key != key1") << QString("key") << QString("key1");
+ QTest::newRow("ke1y != key1") << QString("ke1y") << QString("key1");
+ QTest::newRow("key1 != key2") << QString("key1") << QString("key2");
+}
+
+void tst_QSharedMemory::uniqueKey()
+{
+ QFETCH(QString, key1);
+ QFETCH(QString, key2);
+
+ QSharedMemory sm1(key1);
+ QSharedMemory sm2(key2);
+
+ bool setEqual = (key1 == key2);
+ bool keyEqual = (sm1.key() == sm2.key());
+ bool nativeEqual = (sm1.nativeKey() == sm2.nativeKey());
+
+ QCOMPARE(keyEqual, setEqual);
+ QCOMPARE(nativeEqual, setEqual);
+}
+
+QTEST_MAIN(tst_QSharedMemory)
+#include "tst_qsharedmemory.moc"
+
diff --git a/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/.gitignore b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/.gitignore
new file mode 100644
index 0000000000..2b60bfb3e6
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/.gitignore
@@ -0,0 +1 @@
+tst_qsystemsemaphore
diff --git a/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/files.qrc b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/files.qrc
new file mode 100644
index 0000000000..62966903e8
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/files.qrc
@@ -0,0 +1,7 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file alias="systemsemaphore_acquire.js">../lackey/scripts/systemsemaphore_acquire.js</file>
+ <file alias="systemsemaphore_release.js">../lackey/scripts/systemsemaphore_release.js</file>
+ <file alias="systemsemaphore_acquirerelease.js">../lackey/scripts/systemsemaphore_acquirerelease.js</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/qsystemsemaphore.pro b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/qsystemsemaphore.pro
new file mode 100644
index 0000000000..e05b6b878b
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/qsystemsemaphore.pro
@@ -0,0 +1,38 @@
+load(qttest_p4)
+#QT = core
+
+include(../qsharedmemory/src/src.pri)
+win32: CONFIG += console
+
+DEFINES += QSHAREDMEMORY_DEBUG
+DEFINES += QSYSTEMSEMAPHORE_DEBUG
+
+SOURCES += tst_qsystemsemaphore.cpp
+TARGET = tst_qsystemsemaphore
+
+RESOURCES += files.qrc
+
+wince*: {
+requires(contains(QT_CONFIG,script))
+# this test calls lackey, which then again depends on QtScript.
+# let's add it here so that it gets deployed easily
+QT += script
+lackey.files = $$OUT_PWD/../lackey/lackey.exe ../lackey/scripts
+lackey.path = .
+DEPLOYMENT += lackey
+}
+
+symbian: {
+requires(contains(QT_CONFIG,script))
+# this test calls lackey, which then again depends on QtScript.
+# let's add it here so that it gets deployed easily
+QT += script
+
+lackey.files = ../lackey/lackey.exe
+lackey.path = /sys/bin
+DEPLOYMENT += lackey
+
+# PowerMgmt capability needed to kill lackey process
+TARGET.CAPABILITY = PowerMgmt
+}
+
diff --git a/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp
new file mode 100644
index 0000000000..df625b8661
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp
@@ -0,0 +1,319 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qsystemsemaphore.h>
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#define EXISTING_SHARE "existing"
+#ifdef Q_OS_WINCE
+#define LACKEYLOC "."
+#else
+#define LACKEYLOC "../lackey"
+#endif
+#define LACKYWAITTIME 10000
+
+class tst_QSystemSemaphore : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QSystemSemaphore();
+ virtual ~tst_QSystemSemaphore();
+
+public Q_SLOTS:
+ void init();
+ void cleanup();
+
+private slots:
+ void key_data();
+ void key();
+
+ void basicacquire();
+ void complexacquire();
+
+ void basicProcesses();
+
+ void processes_data();
+ void processes();
+
+ void undo();
+ void initialValue();
+
+private:
+ QSystemSemaphore *existingLock;
+
+ QString makeFile(const QString &resource)
+ {
+ QFile memory(resource);
+ if (!memory.open(QIODevice::ReadOnly)) {
+ qDebug() << "error reading resource" << resource;
+ return QString();
+ }
+ QTemporaryFile *file = new QTemporaryFile;
+ file->open();
+ file->write(memory.readAll());
+ tempFiles.append(file);
+ file->flush();
+#ifdef Q_OS_WINCE
+ // flush does not flush to disk on Windows CE. It flushes it into its application
+ // cache. Thus we need to close the file to be able that other processes(lackey) can read it
+ QString fileName = file->fileName();
+ file->close();
+ return fileName;
+#endif
+ return file->fileName();
+ }
+
+ QString acquire_js() { return makeFile(":/systemsemaphore_acquire.js"); }
+ QString release_js() { return makeFile(":/systemsemaphore_release.js"); }
+ QString acquirerelease_js() { return makeFile(":/systemsemaphore_acquirerelease.js"); }
+ QList<QTemporaryFile*> tempFiles;
+};
+
+tst_QSystemSemaphore::tst_QSystemSemaphore()
+{
+ if (!QFile::exists(LACKEYLOC "/lackey"))
+ qWarning() << "lackey executable doesn't exists!";
+}
+
+tst_QSystemSemaphore::~tst_QSystemSemaphore()
+{
+ qDeleteAll(tempFiles);
+}
+
+void tst_QSystemSemaphore::init()
+{
+ existingLock = new QSystemSemaphore(EXISTING_SHARE, 1, QSystemSemaphore::Create);
+}
+
+void tst_QSystemSemaphore::cleanup()
+{
+ delete existingLock;
+}
+
+void tst_QSystemSemaphore::key_data()
+{
+ QTest::addColumn<QString>("constructorKey");
+ QTest::addColumn<QString>("setKey");
+
+ QTest::newRow("null, null") << QString() << QString();
+ QTest::newRow("null, one") << QString() << QString("one");
+ QTest::newRow("one, two") << QString("one") << QString("two");
+}
+
+/*!
+ Basic key testing
+ */
+void tst_QSystemSemaphore::key()
+{
+ QFETCH(QString, constructorKey);
+ QFETCH(QString, setKey);
+
+ QSystemSemaphore sem(constructorKey);
+ QCOMPARE(sem.key(), constructorKey);
+ QCOMPARE(sem.error(), QSystemSemaphore::NoError);
+ QCOMPARE(sem.errorString(), QString());
+
+ sem.setKey(setKey);
+ QCOMPARE(sem.key(), setKey);
+ QCOMPARE(sem.error(), QSystemSemaphore::NoError);
+ QCOMPARE(sem.errorString(), QString());
+}
+
+void tst_QSystemSemaphore::basicacquire()
+{
+ QSystemSemaphore sem("QSystemSemaphore_basicacquire", 1, QSystemSemaphore::Create);
+ QVERIFY(sem.acquire());
+ QCOMPARE(sem.error(), QSystemSemaphore::NoError);
+ QVERIFY(sem.release());
+ QCOMPARE(sem.error(), QSystemSemaphore::NoError);
+ QCOMPARE(sem.errorString(), QString());
+}
+
+void tst_QSystemSemaphore::complexacquire()
+{
+ QSystemSemaphore sem("QSystemSemaphore_complexacquire", 2, QSystemSemaphore::Create);
+ QVERIFY(sem.acquire());
+ QVERIFY(sem.release());
+ QVERIFY(sem.acquire());
+ QVERIFY(sem.release());
+ QVERIFY(sem.acquire());
+ QVERIFY(sem.acquire());
+ QVERIFY(sem.release());
+ QVERIFY(sem.release());
+ QCOMPARE(sem.error(), QSystemSemaphore::NoError);
+ QCOMPARE(sem.errorString(), QString());
+}
+
+void tst_QSystemSemaphore::basicProcesses()
+{
+#if defined (Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+ QSKIP("Cannot launch multiple Qt processes in Symbian emulator", SkipAll);
+#endif
+ QSystemSemaphore sem("store", 0, QSystemSemaphore::Create);
+
+ QStringList acquireArguments = QStringList() << acquire_js();
+ QStringList releaseArguments = QStringList() << release_js();
+ QProcess acquire;
+ acquire.setProcessChannelMode(QProcess::ForwardedChannels);
+
+ QProcess release;
+ release.setProcessChannelMode(QProcess::ForwardedChannels);
+
+ acquire.start(LACKEYLOC "/lackey", acquireArguments);
+ acquire.waitForFinished(LACKYWAITTIME);
+ QVERIFY(acquire.state() == QProcess::Running);
+ acquire.kill();
+ release.start(LACKEYLOC "/lackey", releaseArguments);
+ acquire.waitForFinished(LACKYWAITTIME);
+ release.waitForFinished(LACKYWAITTIME);
+ QVERIFY(acquire.state() == QProcess::NotRunning);
+}
+
+void tst_QSystemSemaphore::processes_data()
+{
+ QTest::addColumn<int>("processes");
+ for (int i = 0; i < 5; ++i) {
+ QTest::newRow("1 process") << 1;
+ QTest::newRow("3 process") << 3;
+ QTest::newRow("10 process") << 10;
+ }
+}
+
+void tst_QSystemSemaphore::processes()
+{
+#if defined (Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+ QSKIP("Cannot launch multiple Qt processes in Symbian emulator", SkipAll);
+#endif
+ QSystemSemaphore sem("store", 1, QSystemSemaphore::Create);
+
+ QFETCH(int, processes);
+ QStringList scripts;
+ for (int i = 0; i < processes; ++i)
+ scripts.append(acquirerelease_js());
+
+ QList<QProcess*> consumers;
+ for (int i = 0; i < scripts.count(); ++i) {
+ QStringList arguments = QStringList() << scripts.at(i);
+ QProcess *p = new QProcess;
+ p->setProcessChannelMode(QProcess::ForwardedChannels);
+ consumers.append(p);
+#ifdef Q_OS_WINCE
+ // We can't start the same executable twice on Windows CE.
+ // Create a copy instead.
+ QString lackeyCopy = QLatin1String(LACKEYLOC "/lackey");
+ if (i > 0) {
+ lackeyCopy.append(QString::number(i));
+ lackeyCopy.append(QLatin1String(".exe"));
+ if (!QFile::exists(lackeyCopy))
+ QVERIFY(QFile::copy(LACKEYLOC "/lackey.exe", lackeyCopy));
+ }
+ p->start(lackeyCopy, arguments);
+#else
+ p->start(LACKEYLOC "/lackey", arguments);
+#endif
+ }
+
+ while (!consumers.isEmpty()) {
+ consumers.first()->waitForFinished();
+ QCOMPARE(consumers.first()->exitStatus(), QProcess::NormalExit);
+ QCOMPARE(consumers.first()->exitCode(), 0);
+ delete consumers.takeFirst();
+ }
+}
+
+void tst_QSystemSemaphore::undo()
+{
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QSKIP("This test only checks a unix behavior", SkipSingle);
+#endif
+
+ QSystemSemaphore sem("store", 1, QSystemSemaphore::Create);
+
+ QStringList acquireArguments = QStringList() << acquire_js();
+ QProcess acquire;
+ acquire.setProcessChannelMode(QProcess::ForwardedChannels);
+ acquire.start(LACKEYLOC "/lackey", acquireArguments);
+ acquire.waitForFinished(LACKYWAITTIME);
+ QVERIFY(acquire.state()== QProcess::NotRunning);
+
+ // At process exit the kernel should auto undo
+
+ acquire.start(LACKEYLOC "/lackey", acquireArguments);
+ acquire.waitForFinished(LACKYWAITTIME);
+ QVERIFY(acquire.state()== QProcess::NotRunning);
+}
+
+void tst_QSystemSemaphore::initialValue()
+{
+#if defined (Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+ QSKIP("Cannot launch multiple Qt processes in Symbian emulator", SkipAll);
+#endif
+ QSystemSemaphore sem("store", 1, QSystemSemaphore::Create);
+
+ QStringList acquireArguments = QStringList() << acquire_js();
+ QStringList releaseArguments = QStringList() << release_js();
+ QProcess acquire;
+ acquire.setProcessChannelMode(QProcess::ForwardedChannels);
+
+ QProcess release;
+ release.setProcessChannelMode(QProcess::ForwardedChannels);
+
+ acquire.start(LACKEYLOC "/lackey", acquireArguments);
+ acquire.waitForFinished(LACKYWAITTIME);
+ QVERIFY(acquire.state()== QProcess::NotRunning);
+
+ acquire.start(LACKEYLOC "/lackey", acquireArguments << "2");
+ acquire.waitForFinished(LACKYWAITTIME);
+ QVERIFY(acquire.state()== QProcess::Running);
+ acquire.kill();
+
+ release.start(LACKEYLOC "/lackey", releaseArguments);
+ acquire.waitForFinished(LACKYWAITTIME);
+ release.waitForFinished(LACKYWAITTIME);
+ QVERIFY(acquire.state()== QProcess::NotRunning);
+}
+QTEST_MAIN(tst_QSystemSemaphore)
+#include "tst_qsystemsemaphore.moc"
+
diff --git a/tests/auto/corelib/kernel/qtipc/qtipc.pro b/tests/auto/corelib/kernel/qtipc/qtipc.pro
new file mode 100644
index 0000000000..ac647e097b
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtipc/qtipc.pro
@@ -0,0 +1,6 @@
+TEMPLATE=subdirs
+# lackey depends on qtscript and the tests depend on lackey :(
+#SUBDIRS=\
+# qsharedmemory \
+# qsystemsemaphore \
+# lackey
diff --git a/tests/auto/corelib/kernel/qtranslator/.gitignore b/tests/auto/corelib/kernel/qtranslator/.gitignore
new file mode 100644
index 0000000000..ce24e1016b
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtranslator/.gitignore
@@ -0,0 +1 @@
+tst_qtranslator
diff --git a/tests/auto/corelib/kernel/qtranslator/hellotr_la.qm b/tests/auto/corelib/kernel/qtranslator/hellotr_la.qm
new file mode 100644
index 0000000000..cc42afe05c
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtranslator/hellotr_la.qm
Binary files differ
diff --git a/tests/auto/corelib/kernel/qtranslator/hellotr_la.ts b/tests/auto/corelib/kernel/qtranslator/hellotr_la.ts
new file mode 100644
index 0000000000..2a4a41b9ea
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtranslator/hellotr_la.ts
@@ -0,0 +1,16 @@
+<!DOCTYPE TS><TS version="1.1" language="de">
+<context>
+ <name>QPushButton</name>
+ <message>
+ <source>Hello world!</source>
+ <translation>Hallo Welt!</translation>
+ </message>
+ <message numerus="yes">
+ <source>Hello %n world(s)!</source>
+ <translation>
+ <numerusform>Hallo %n Welt!</numerusform>
+ <numerusform>Hallo %n Welten!</numerusform>
+ </translation>
+ </message>
+</context>
+</TS>
diff --git a/tests/auto/corelib/kernel/qtranslator/msgfmt_from_po.qm b/tests/auto/corelib/kernel/qtranslator/msgfmt_from_po.qm
new file mode 100644
index 0000000000..7b62819459
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtranslator/msgfmt_from_po.qm
Binary files differ
diff --git a/tests/auto/corelib/kernel/qtranslator/qtranslator.pro b/tests/auto/corelib/kernel/qtranslator/qtranslator.pro
new file mode 100644
index 0000000000..171216afb4
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtranslator/qtranslator.pro
@@ -0,0 +1,12 @@
+load(qttest_p4)
+QT += widgets
+SOURCES += tst_qtranslator.cpp
+RESOURCES += qtranslator.qrc
+
+wince*|symbian: {
+ addFiles.files = hellotr_la.qm msgfmt_from_po.qm
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+}
+
+CONFIG += insignificant_test # QTBUG-21125
diff --git a/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc b/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc
new file mode 100644
index 0000000000..333dcfaa21
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/tst_qtranslator">
+ <file>hellotr_la.qm</file>
+ </qresource>
+</RCC>
diff --git a/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp
new file mode 100644
index 0000000000..8e2ed157a4
--- /dev/null
+++ b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp
@@ -0,0 +1,260 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QWidget>
+#include <qtranslator.h>
+#include <qfile.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QTranslator : public QWidget
+{
+ Q_OBJECT
+
+public:
+ tst_QTranslator();
+ virtual ~tst_QTranslator();
+
+public slots:
+ void init();
+ void cleanup();
+
+protected:
+ bool event(QEvent *event);
+
+private slots:
+ void load();
+ void load2();
+ void threadLoad();
+ void testLanguageChange();
+ void plural();
+ void translate_qm_file_generated_with_msgfmt();
+ void loadFromResource();
+ void loadDirectory();
+
+private:
+ int languageChangeEventCounter;
+};
+
+
+tst_QTranslator::tst_QTranslator()
+ : languageChangeEventCounter(0)
+{
+ show();
+ hide();
+}
+
+tst_QTranslator::~tst_QTranslator()
+{
+}
+
+void tst_QTranslator::init()
+{
+}
+
+void tst_QTranslator::cleanup()
+{
+}
+
+bool tst_QTranslator::event(QEvent *event)
+{
+ if (event->type() == QEvent::LanguageChange)
+ ++languageChangeEventCounter;
+ return QWidget::event(event);
+}
+
+void tst_QTranslator::load()
+{
+
+ QTranslator tor( 0 );
+ tor.load("hellotr_la");
+ QVERIFY(!tor.isEmpty());
+ QCOMPARE(tor.translate("QPushButton", "Hello world!"), QString::fromLatin1("Hallo Welt!"));
+}
+
+void tst_QTranslator::load2()
+{
+ QTranslator tor( 0 );
+ QFile file("hellotr_la.qm");
+ file.open(QFile::ReadOnly);
+ QByteArray data = file.readAll();
+ tor.load((const uchar *)data.constData(), data.length());
+ QVERIFY(!tor.isEmpty());
+ QCOMPARE(tor.translate("QPushButton", "Hello world!"), QString::fromLatin1("Hallo Welt!"));
+}
+
+class TranslatorThread : public QThread
+{
+ void run() {
+ QTranslator tor( 0 );
+ tor.load("hellotr_la");
+
+ if (tor.isEmpty())
+ qFatal("Could not load translation");
+ if (tor.translate("QPushButton", "Hello world!") != QString::fromLatin1("Hallo Welt!"))
+ qFatal("Test string was not translated correctlys");
+ }
+};
+
+
+void tst_QTranslator::threadLoad()
+{
+ TranslatorThread thread;
+ thread.start();
+ QVERIFY(thread.wait(10 * 1000));
+}
+
+void tst_QTranslator::testLanguageChange()
+{
+ languageChangeEventCounter = 0;
+
+ QTranslator *tor = new QTranslator;
+ tor->load("hellotr_la.qm");
+ qApp->sendPostedEvents();
+ qApp->sendPostedEvents();
+ QCOMPARE(languageChangeEventCounter, 0);
+
+ tor->load("doesn't exist, same as clearing");
+ qApp->sendPostedEvents();
+ qApp->sendPostedEvents();
+ QCOMPARE(languageChangeEventCounter, 0);
+
+ tor->load("hellotr_la.qm");
+ qApp->sendPostedEvents();
+ qApp->sendPostedEvents();
+ QCOMPARE(languageChangeEventCounter, 0);
+
+ qApp->installTranslator(tor);
+ qApp->sendPostedEvents();
+ qApp->sendPostedEvents();
+ QCOMPARE(languageChangeEventCounter, 1);
+
+ tor->load("doesn't exist, same as clearing");
+ qApp->sendPostedEvents();
+ qApp->sendPostedEvents();
+ QCOMPARE(languageChangeEventCounter, 2);
+
+ tor->load("hellotr_la.qm");
+ qApp->sendPostedEvents();
+ qApp->sendPostedEvents();
+ QCOMPARE(languageChangeEventCounter, 3);
+
+ qApp->removeTranslator(tor);
+ qApp->sendPostedEvents();
+ qApp->sendPostedEvents();
+ QCOMPARE(languageChangeEventCounter, 4);
+
+ tor->load("doesn't exist, same as clearing");
+ qApp->sendPostedEvents();
+ qApp->sendPostedEvents();
+ QCOMPARE(languageChangeEventCounter, 4);
+
+ qApp->installTranslator(tor);
+ qApp->sendPostedEvents();
+ qApp->sendPostedEvents();
+ QCOMPARE(languageChangeEventCounter, 4);
+
+ tor->load("hellotr_la.qm");
+ qApp->sendPostedEvents();
+ qApp->sendPostedEvents();
+ QCOMPARE(languageChangeEventCounter, 5);
+
+ delete tor;
+ tor = 0;
+ qApp->sendPostedEvents();
+ qApp->sendPostedEvents();
+ QCOMPARE(languageChangeEventCounter, 6);
+}
+
+
+void tst_QTranslator::plural()
+{
+
+ QTranslator tor( 0 );
+ tor.load("hellotr_la");
+ QVERIFY(!tor.isEmpty());
+ QCoreApplication::installTranslator(&tor);
+ QCoreApplication::Encoding e = QCoreApplication::UnicodeUTF8;
+ QCOMPARE(QCoreApplication::translate("QPushButton", "Hello %n world(s)!", 0, e, 0), QString::fromLatin1("Hallo 0 Welten!"));
+ QCOMPARE(QCoreApplication::translate("QPushButton", "Hello %n world(s)!", 0, e, 1), QString::fromLatin1("Hallo 1 Welt!"));
+ QCOMPARE(QCoreApplication::translate("QPushButton", "Hello %n world(s)!", 0, e, 2), QString::fromLatin1("Hallo 2 Welten!"));
+}
+
+void tst_QTranslator::translate_qm_file_generated_with_msgfmt()
+{
+ QTranslator translator;
+ translator.load("msgfmt_from_po");
+ qApp->installTranslator(&translator);
+
+ QCOMPARE(QCoreApplication::translate("", "Intro"), QLatin1String("Einleitung"));
+ // The file is converted from a po file, thus it does not have any context info.
+ // The following should then not be translated
+ QCOMPARE(QCoreApplication::translate("contekst", "Intro"), QLatin1String("Intro"));
+ QCOMPARE(QCoreApplication::translate("contekst", "Intro\0\0"), QLatin1String("Intro"));
+ QCOMPARE(QCoreApplication::translate("contekst", "Intro\0x"), QLatin1String("Intro"));
+ QCOMPARE(QCoreApplication::translate("", "Intro\0\0"), QLatin1String("Einleitung"));
+ QCOMPARE(QCoreApplication::translate("", "Intro\0x"), QLatin1String("Einleitung"));
+
+ qApp->removeTranslator(&translator);
+}
+
+void tst_QTranslator::loadFromResource()
+{
+ QTranslator tor;
+ tor.load(":/tst_qtranslator/hellotr_la.qm");
+ QVERIFY(!tor.isEmpty());
+ QCOMPARE(tor.translate("QPushButton", "Hello world!"), QString::fromLatin1("Hallo Welt!"));
+}
+
+void tst_QTranslator::loadDirectory()
+{
+ QVERIFY(QFileInfo("../qtranslator").isDir());
+
+ QTranslator tor;
+ tor.load("qtranslator", "..");
+ QVERIFY(tor.isEmpty());
+}
+
+QTEST_MAIN(tst_QTranslator)
+#include "tst_qtranslator.moc"
diff --git a/tests/auto/corelib/kernel/qvariant/.gitignore b/tests/auto/corelib/kernel/qvariant/.gitignore
new file mode 100644
index 0000000000..2434ec945d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/.gitignore
@@ -0,0 +1 @@
+tst_qvariant
diff --git a/tests/auto/corelib/kernel/qvariant/qvariant.pro b/tests/auto/corelib/kernel/qvariant/qvariant.pro
new file mode 100644
index 0000000000..52af24ea85
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/qvariant.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qvariant.cpp
+QT += widgets network
+
+CONFIG+=insignificant_test
diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
new file mode 100644
index 0000000000..25a32cc734
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
@@ -0,0 +1,3235 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qvariant.h>
+#include <qbitarray.h>
+#include <qhostaddress.h>
+#include <qdatetime.h>
+#include <qmap.h>
+#include <qiodevice.h>
+#include <qurl.h>
+#include <qlocale.h>
+#include <qkeysequence.h>
+#include <qbitmap.h>
+#include <qcursor.h>
+#include <qimage.h>
+#include <qicon.h>
+#include <qmatrix.h>
+#include <qmatrix4x4.h>
+#include <qpen.h>
+#include <qpolygon.h>
+#include <qtransform.h>
+#include <qvector2d.h>
+#include <qvector3d.h>
+#include <qvector4d.h>
+#include <qquaternion.h>
+
+#include <limits.h>
+
+Q_DECLARE_METATYPE(qlonglong)
+Q_DECLARE_METATYPE(qulonglong)
+Q_DECLARE_METATYPE(QPointF)
+Q_DECLARE_METATYPE(QRectF)
+Q_DECLARE_METATYPE(QSize)
+Q_DECLARE_METATYPE(QSizeF)
+Q_DECLARE_METATYPE(QLine)
+Q_DECLARE_METATYPE(QLineF)
+Q_DECLARE_METATYPE(QPoint)
+Q_DECLARE_METATYPE(QRect)
+Q_DECLARE_METATYPE(QPixmap)
+Q_DECLARE_METATYPE(QBrush)
+Q_DECLARE_METATYPE(QFont)
+Q_DECLARE_METATYPE(QColor)
+Q_DECLARE_METATYPE(QKeySequence)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QVariant : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QVariant();
+
+private slots:
+ void constructor();
+ void copy_constructor();
+ void isNull();
+ void swap();
+
+ void canConvert_data();
+ void canConvert();
+
+ void toSize_data();
+ void toSize();
+
+ void toSizeF_data();
+ void toSizeF();
+
+ void toPoint_data();
+ void toPoint();
+
+ void toRect_data();
+ void toRect();
+
+ void toChar_data();
+ void toChar();
+
+ void toLine_data();
+ void toLine();
+
+ void toLineF_data();
+ void toLineF();
+
+ void toInt_data();
+ void toInt();
+
+ void toUInt_data();
+ void toUInt();
+
+ void toBool_data();
+ void toBool();
+
+ void toLongLong_data();
+ void toLongLong();
+
+ void toULongLong_data();
+ void toULongLong();
+
+ void toByteArray_data();
+ void toByteArray();
+
+ void toString_data();
+ void toString();
+
+ void toDate_data();
+ void toDate();
+
+ void toTime_data();
+ void toTime();
+
+ void toDateTime_data();
+ void toDateTime();
+
+ void toDouble_data();
+ void toDouble();
+
+ void toPointF_data();
+ void toPointF();
+
+ void toFont_data();
+ void toFont();
+
+ void toKeySequence_data();
+ void toKeySequence();
+
+ void toRectF_data();
+ void toRectF();
+
+ void toColor_data();
+ void toColor();
+
+ void toPixmap_data();
+ void toPixmap();
+
+ void toImage_data();
+ void toImage();
+
+ void toBrush_data();
+ void toBrush();
+
+ void qvariant_cast_QObject_data();
+ void qvariant_cast_QObject();
+
+ void toLocale();
+
+ void toRegExp();
+
+ void matrix();
+
+ void transform();
+
+ void matrix4x4();
+ void vector2D();
+ void vector3D();
+ void vector4D();
+ void quaternion();
+
+ void url();
+
+ void userType();
+ void basicUserType();
+
+ void variant_to();
+
+ void writeToReadFromDataStream_data();
+ void writeToReadFromDataStream();
+ void writeToReadFromOldDataStream();
+ void checkDataStream();
+
+ void operator_eq_eq_data();
+ void operator_eq_eq();
+
+ void operator_eq_eq_rhs();
+
+ void typeName_data();
+ void typeName();
+ void typeToName();
+
+ void streamInvalidVariant();
+
+ void podUserType();
+
+ void data_(); // data is virtual function in QtTestCase
+ void constData();
+
+ void saveLoadCustomTypes();
+
+ void globalColor();
+
+ void variantMap();
+ void variantHash();
+
+ void convertToQUint8() const;
+ void invalidQColor() const;
+ void comparePointers() const;
+ void voidStar() const;
+ void dataStar() const;
+ void canConvertQStringList() const;
+ void canConvertQStringList_data() const;
+ void canConvertMetaTypeToInt() const;
+ void variantToDateTimeWithoutWarnings() const;
+ void invalidDateTime() const;
+
+ void loadUnknownUserType();
+ void loadBrokenUserType();
+
+ void task172061_invalidDate() const;
+ void compareCustomTypes() const;
+ void timeToDateTime() const;
+ void copyingUserTypes() const;
+ void convertBoolToByteArray() const;
+ void convertBoolToByteArray_data() const;
+ void convertByteArrayToBool() const;
+ void convertByteArrayToBool_data() const;
+ void toIntFromQString() const;
+ void toIntFromDouble() const;
+ void task256984_setValue();
+
+ void numericalConvert();
+ void moreCustomTypes();
+ void variantInVariant();
+
+ void colorInteger();
+
+ void forwardDeclare();
+};
+
+Q_DECLARE_METATYPE(QDate)
+Q_DECLARE_METATYPE(QTime)
+Q_DECLARE_METATYPE(QDateTime)
+Q_DECLARE_METATYPE(QVariant)
+
+const qlonglong intMax1 = (qlonglong)INT_MAX + 1;
+const qulonglong uintMax1 = (qulonglong)UINT_MAX + 1;
+
+tst_QVariant::tst_QVariant()
+{
+}
+
+void tst_QVariant::constructor()
+{
+ QVariant variant;
+ QVERIFY( !variant.isValid() );
+ QVERIFY( variant.isNull() );
+
+ QVariant var2(variant);
+ QVERIFY( !var2.isValid() );
+ QVERIFY( variant.isNull() );
+
+ QVariant varll(intMax1);
+ QVariant varll2(varll);
+ QCOMPARE(varll2, varll);
+
+ QVariant var3(QVariant::String);
+ QCOMPARE(var3.typeName(), "QString");
+ QVERIFY(var3.isNull());
+ QVERIFY(var3.isValid());
+
+ QVariant var4(QVariant::Invalid);
+ QCOMPARE(var4.type(), QVariant::Invalid);
+ QVERIFY(var4.isNull());
+ QVERIFY(!var4.isValid());
+
+ QVariant var5(QLatin1String("hallo"));
+ QCOMPARE(var5.type(), QVariant::String);
+ QCOMPARE(var5.typeName(), "QString");
+
+ QVariant var6(qlonglong(0));
+ QCOMPARE(var6.type(), QVariant::LongLong);
+ QCOMPARE(var6.typeName(), "qlonglong");
+
+ QVariant var7 = 5;
+ QVERIFY(var7.isValid());
+ QVERIFY(!var7.isNull());
+ QVariant var8;
+ var8.setValue<int>(5);
+ QVERIFY(var8.isValid());
+ QVERIFY(!var8.isNull());
+}
+
+void tst_QVariant::copy_constructor()
+{
+ QVariant var7(QVariant::Int);
+ QVariant var8(var7);
+ QCOMPARE(var8.type(), QVariant::Int);
+ QVERIFY(var8.isNull());
+}
+
+void tst_QVariant::isNull()
+{
+ QVariant var;
+ QVERIFY( var.isNull() );
+
+ QVariant var2( QString::null );
+ QVERIFY( var2.isNull() );
+
+ QVariant var3( QString( "blah" ) );
+ QVERIFY( !var3.isNull() );
+
+ QVariant var4( 0 );
+ QVERIFY( !var4.isNull() );
+
+ QVariant var5 = QString();
+ QVERIFY( var5.isNull() );
+
+ QVariant var6( QString( "blah" ) );
+ QVERIFY( !var6.isNull() );
+ var6 = QVariant();
+ QVERIFY( var6.isNull() );
+ var6.convert( QVariant::String );
+ QVERIFY( var6.isNull() );
+ QVariant varLL( (qlonglong)0 );
+ QVERIFY( !varLL.isNull() );
+ QVariant var7(QString::null);
+ QVERIFY(var7.isNull());
+}
+
+void tst_QVariant::swap()
+{
+ QVariant v1 = 1, v2 = 2.0;
+ v1.swap(v2);
+ QCOMPARE(v1.type(),QVariant::Double);
+ QCOMPARE(v1.toDouble(),2.0);
+ QCOMPARE(v2.type(),QVariant::Int);
+ QCOMPARE(v2.toInt(),1);
+}
+
+void tst_QVariant::canConvert_data()
+{
+ QTest::addColumn<QVariant>("val");
+ QTest::addColumn<bool>("BitArrayCast");
+ QTest::addColumn<bool>("BitmapCast");
+ QTest::addColumn<bool>("BoolCast");
+ QTest::addColumn<bool>("BrushCast");
+ QTest::addColumn<bool>("ByteArrayCast");
+ QTest::addColumn<bool>("ColorCast");
+ QTest::addColumn<bool>("CursorCast");
+ QTest::addColumn<bool>("DateCast");
+ QTest::addColumn<bool>("DateTimeCast");
+ QTest::addColumn<bool>("DoubleCast");
+ QTest::addColumn<bool>("FontCast");
+ QTest::addColumn<bool>("ImageCast");
+ QTest::addColumn<bool>("IntCast");
+ QTest::addColumn<bool>("InvalidCast");
+ QTest::addColumn<bool>("KeySequenceCast");
+ QTest::addColumn<bool>("ListCast");
+ QTest::addColumn<bool>("LongLongCast");
+ QTest::addColumn<bool>("MapCast");
+ QTest::addColumn<bool>("PaletteCast");
+ QTest::addColumn<bool>("PenCast");
+ QTest::addColumn<bool>("PixmapCast");
+ QTest::addColumn<bool>("PointCast");
+ QTest::addColumn<bool>("RectCast");
+ QTest::addColumn<bool>("RegionCast");
+ QTest::addColumn<bool>("SizeCast");
+ QTest::addColumn<bool>("SizePolicyCast");
+ QTest::addColumn<bool>("StringCast");
+ QTest::addColumn<bool>("StringListCast");
+ QTest::addColumn<bool>("TimeCast");
+ QTest::addColumn<bool>("UIntCast");
+ QTest::addColumn<bool>("ULongLongCast");
+
+
+#ifdef Y
+#undef Y
+#endif
+#ifdef N
+#undef N
+#endif
+#define Y true
+#define N false
+ // bita bitm bool brsh byta col curs date dt dbl font img int inv kseq list ll map pal pen pix pnt rect reg size sp str strl time uint ull
+
+
+ QVariant var(QBitArray(0));
+ QTest::newRow("BitArray")
+ << var << Y << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N;
+ var = qVariantFromValue(QBitmap());
+ QTest::newRow("Bitmap")
+ << var << N << Y << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << N << N;
+ var = qVariantFromValue(QBrush());
+ QTest::newRow("Brush")
+ << var << N << N << N << Y << N << Y << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << N << N;
+ var = QVariant(QByteArray());
+ QTest::newRow("ByteArray")
+ << var << N << N << Y << N << Y << Y << N << N << N << Y << N << N << Y << N << N << N << Y << N << N << N << N << N << N << N << N << N << Y << N << N << Y << Y;
+ var = qVariantFromValue(QColor());
+ QTest::newRow("Color")
+ << var << N << N << N << Y << Y << Y << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N;
+#ifndef QT_NO_CURSOR
+ var = qVariantFromValue(QCursor());
+ QTest::newRow("Cursor")
+ << var << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N;
+#endif
+ var = QVariant(QDate());
+ QTest::newRow("Date")
+ << var << N << N << N << N << N << N << N << Y << Y << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N;
+ var = QVariant(QDateTime());
+ QTest::newRow("DateTime")
+ << var << N << N << N << N << N << N << N << Y << Y << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << Y << N << N;
+ var = QVariant((double)0.1);
+ QTest::newRow("Double")
+ << var << N << N << Y << N << Y << N << N << N << N << Y << N << N << Y << N << N << N << Y << N << N << N << N << N << N << N << N << N << Y << N << N << Y << Y;
+ var = QVariant(0.1f);
+ QTest::newRow("Float")
+ << var << N << N << Y << N << Y << N << N << N << N << Y << N << N << Y << N << N << N << Y << N << N << N << N << N << N << N << N << N << Y << N << N << Y << Y;
+ var = qVariantFromValue(QFont());
+ QTest::newRow("Font")
+ << var << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N;
+ var = qVariantFromValue(QIcon());
+ QTest::newRow("Icon")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N;
+ var = qVariantFromValue(QImage());
+ QTest::newRow("Image")
+ << var << N << Y << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << N << N;
+ var = QVariant((int)1);
+ QTest::newRow("Int")
+ << var << N << N << Y << N << Y << N << N << N << N << Y << N << N << Y << N << Y << N << Y << N << N << N << N << N << N << N << N << N << Y << N << N << Y << Y;
+ var = QVariant();
+ QTest::newRow("Invalid")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N;
+ var = qVariantFromValue(QKeySequence());
+ QTest::newRow("KeySequence")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << Y << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N;
+ var = QVariant(QList<QVariant>());
+ QTest::newRow("List")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N;
+ var = QVariant((qlonglong)1);
+ QTest::newRow("LongLong")
+ << var << N << N << Y << N << Y << N << N << N << N << Y << N << N << Y << N << N << N << Y << N << N << N << N << N << N << N << N << N << Y << N << N << Y << Y;
+ var = QVariant(QMap<QString,QVariant>());
+ QTest::newRow("Map")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << N << N << N << N << N;
+ var = qVariantFromValue(QPalette());
+ QTest::newRow("Palette")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << N << N << N << N;
+ var = qVariantFromValue(QPen());
+ QTest::newRow("Pen")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << N << N << N;
+ var = qVariantFromValue(QPixmap());
+ QTest::newRow("Pixmap")
+ << var << N << Y << N << Y << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << N << N;
+ var = qVariantFromValue(QPolygon());
+ QTest::newRow("PointArray")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N;
+ var = QVariant(QPoint());
+ QTest::newRow("Point")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << N;
+ var = QVariant(QRect());
+ QTest::newRow("Rect")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N;
+ var = qVariantFromValue(QRegion());
+ QTest::newRow("Region")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N;
+ var = QVariant(QSize());
+ QTest::newRow("Size")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N;
+ var = qVariantFromValue(QSizePolicy());
+ QTest::newRow("SizePolicy")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N;
+ var = QVariant(QString());
+ QTest::newRow("String")
+ << var << N << N << Y << N << Y << Y << N << Y << Y << Y << Y << N << Y << N << Y << N << Y << N << N << N << N << N << N << N << N << N << Y << Y << Y << Y << Y;
+ var = QVariant(QStringList("entry"));
+ QTest::newRow("StringList")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << N << N << N << N << N << N << N << N << N << Y << Y << N << N << N;
+ var = QVariant(QTime());
+ QTest::newRow("Time")
+ << var << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << N << Y << N << Y << N << N;
+ var = QVariant((uint)1);
+ QTest::newRow("UInt")
+ << var << N << N << Y << N << Y << N << N << N << N << Y << N << N << Y << N << N << N << Y << N << N << N << N << N << N << N << N << N << Y << N << N << Y << Y;
+ var = QVariant((qulonglong)1);
+ QTest::newRow("ULongLong")
+ << var << N << N << Y << N << Y << N << N << N << N << Y << N << N << Y << N << N << N << Y << N << N << N << N << N << N << N << N << N << Y << N << N << Y << Y;
+
+#undef N
+#undef Y
+}
+
+void tst_QVariant::canConvert()
+{
+ QFETCH(QVariant, val);
+ QFETCH(bool, BitArrayCast);
+ QFETCH(bool, BitmapCast);
+ QFETCH(bool, BoolCast);
+ QFETCH(bool, BrushCast);
+ QFETCH(bool, ByteArrayCast);
+ QFETCH(bool, ColorCast);
+ QFETCH(bool, CursorCast);
+ QFETCH(bool, DateCast);
+ QFETCH(bool, DateTimeCast);
+ QFETCH(bool, DoubleCast);
+ QFETCH(bool, FontCast);
+ QFETCH(bool, ImageCast);
+ QFETCH(bool, IntCast);
+ QFETCH(bool, InvalidCast);
+ QFETCH(bool, KeySequenceCast);
+ QFETCH(bool, ListCast);
+ QFETCH(bool, LongLongCast);
+ QFETCH(bool, MapCast);
+ QFETCH(bool, PaletteCast);
+ QFETCH(bool, PenCast);
+ QFETCH(bool, PixmapCast);
+ QFETCH(bool, PointCast);
+ QFETCH(bool, RectCast);
+ QFETCH(bool, RegionCast);
+ QFETCH(bool, SizeCast);
+ QFETCH(bool, SizePolicyCast);
+ QFETCH(bool, StringCast);
+ QFETCH(bool, StringListCast);
+ QFETCH(bool, TimeCast);
+ QFETCH(bool, UIntCast);
+ QFETCH(bool, ULongLongCast);
+
+ QCOMPARE(val.canConvert(QVariant::BitArray), BitArrayCast);
+ QCOMPARE(val.canConvert(QVariant::Bitmap), BitmapCast);
+ QCOMPARE(val.canConvert(QVariant::Bool), BoolCast);
+ QCOMPARE(val.canConvert(QVariant::Brush), BrushCast);
+ QCOMPARE(val.canConvert(QVariant::ByteArray), ByteArrayCast);
+ QCOMPARE(val.canConvert(QVariant::Color), ColorCast);
+ QCOMPARE(val.canConvert(QVariant::Cursor), CursorCast);
+ QCOMPARE(val.canConvert(QVariant::Date), DateCast);
+ QCOMPARE(val.canConvert(QVariant::DateTime), DateTimeCast);
+ QCOMPARE(val.canConvert(QVariant::Double), DoubleCast);
+ QCOMPARE(val.canConvert(QVariant::Type(QMetaType::Float)), DoubleCast);
+ QCOMPARE(val.canConvert(QVariant::Font), FontCast);
+ QCOMPARE(val.canConvert(QVariant::Image), ImageCast);
+ QCOMPARE(val.canConvert(QVariant::Int), IntCast);
+ QCOMPARE(val.canConvert(QVariant::Invalid), InvalidCast);
+ QCOMPARE(val.canConvert(QVariant::KeySequence), KeySequenceCast);
+ QCOMPARE(val.canConvert(QVariant::List), ListCast);
+ QCOMPARE(val.canConvert(QVariant::LongLong), LongLongCast);
+ QCOMPARE(val.canConvert(QVariant::Map), MapCast);
+ QCOMPARE(val.canConvert(QVariant::Palette), PaletteCast);
+ QCOMPARE(val.canConvert(QVariant::Pen), PenCast);
+ QCOMPARE(val.canConvert(QVariant::Pixmap), PixmapCast);
+ QCOMPARE(val.canConvert(QVariant::Point), PointCast);
+ QCOMPARE(val.canConvert(QVariant::Rect), RectCast);
+ QCOMPARE(val.canConvert(QVariant::Region), RegionCast);
+ QCOMPARE(val.canConvert(QVariant::Size), SizeCast);
+ QCOMPARE(val.canConvert(QVariant::SizePolicy), SizePolicyCast);
+ QCOMPARE(val.canConvert(QVariant::String), StringCast);
+ QCOMPARE(val.canConvert(QVariant::StringList), StringListCast);
+ QCOMPARE(val.canConvert(QVariant::Time), TimeCast);
+ QCOMPARE(val.canConvert(QVariant::UInt), UIntCast);
+ QCOMPARE(val.canConvert(QVariant::ULongLong), ULongLongCast);
+}
+
+void tst_QVariant::toInt_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<int>("result");
+ QTest::addColumn<bool>("valueOK");
+
+ QTest::newRow( "invalid" ) << QVariant() << 0 << false;
+ QTest::newRow( "int" ) << QVariant( 123 ) << 123 << true;
+ QTest::newRow( "double" ) << QVariant( 3.1415927 ) << 3 << true;
+ QTest::newRow( "float" ) << QVariant( 3.1415927f ) << 3 << true;
+ QTest::newRow( "uint" ) << QVariant( 123u ) << 123 << true;
+ QTest::newRow( "int-string" ) << QVariant( QString("123") ) << 123 << true;
+ QTest::newRow( "string" ) << QVariant( QString("Unicode String") ) << 0 << false;
+ QTest::newRow( "longlong0" ) << QVariant( (qlonglong)34 ) << 34 << true;
+ QTest::newRow( "longlong1" ) << QVariant( intMax1 ) << (int)INT_MIN << true;
+ QTest::newRow( "ulonglong0" ) << QVariant( (qulonglong)34 ) << 34 << true;
+ QTest::newRow( "ulonglong1" ) << QVariant( uintMax1 ) << 0 << true;
+ QTest::newRow( "signedint" ) << QVariant( -123 ) << -123 << true;
+ QTest::newRow( "signeddouble" ) << QVariant( -3.1415927 ) << -3 << true;
+ QTest::newRow( "signedfloat" ) << QVariant( -3.1415927f ) << -3 << true;
+ QTest::newRow( "signedint-string" ) << QVariant( QString("-123") ) << -123 << true;
+ QTest::newRow( "signedlonglong0" ) << QVariant( (qlonglong)-34 ) << -34 << true;
+ QTest::newRow( "QChar" ) << QVariant(QChar('a')) << int('a') << true;
+ QTest::newRow( "keysequence" ) << qVariantFromValue( QKeySequence( Qt::Key_A ) ) << 65 << true;
+ QByteArray bytearray(4, ' ');
+ bytearray[0] = 'T';
+ bytearray[1] = 'e';
+ bytearray[2] = 's';
+ bytearray[3] = 't';
+// bytearray[4] = '\0';
+ QTest::newRow( "QByteArray1" ) << QVariant( bytearray ) << 0 << false;
+ bytearray[0] = '4';
+ bytearray[1] = '5';
+ bytearray[2] = '0';
+ bytearray[3] = '0';
+ QTest::newRow( "QByteArray2" ) << QVariant( bytearray ) << 4500 << true;
+}
+
+void tst_QVariant::toInt()
+{
+ QFETCH( QVariant, value );
+ QFETCH( int, result );
+ QFETCH( bool, valueOK );
+// QEXPECT_FAIL("QByteArray", "Expected to not yet be able to convert QByteArray to int", Abort);
+ QVERIFY( value.isValid() == value.canConvert( QVariant::Int ) );
+ bool ok;
+ int i = value.toInt( &ok );
+ QCOMPARE( i, result );
+ QVERIFY( ok == valueOK );
+}
+
+void tst_QVariant::toUInt_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<uint>("result");
+ QTest::addColumn<bool>("valueOK");
+
+ QTest::newRow( "int" ) << QVariant( 123 ) << (uint)123 << true;
+ QTest::newRow( "double" ) << QVariant( 3.1415927 ) << (uint)3 << true;
+ QTest::newRow( "float" ) << QVariant( 3.1415927f ) << (uint)3 << true;
+ QTest::newRow( "uint" ) << QVariant( 123u ) << (uint)123 << true;
+ QTest::newRow( "int-string" ) << QVariant( QString("123") ) << (uint)123 << true;
+ QTest::newRow( "string" ) << QVariant( QString("Unicode String") ) << (uint)0 << false;
+ QTest::newRow( "string2" ) << QVariant( QString("4") ) << (uint)4 << true;
+ QTest::newRow( "longlong0" ) << QVariant( (qlonglong)34 ) << (uint)34 << true;
+ QTest::newRow( "longlong1" ) << QVariant( intMax1 ) << (uint)INT_MIN << true;
+ QTest::newRow( "ulonglong0" ) << QVariant( (qulonglong)34 ) << (uint)34 << true;
+ QTest::newRow( "ulonglong1" ) << QVariant( uintMax1 ) << (uint)0 << true;
+ QTest::newRow( "negativeint" ) << QVariant( -123 ) << (uint)-123 << true;
+ QTest::newRow( "negativedouble" ) << QVariant( -3.1415927 ) << (uint)-3 << true;
+ QTest::newRow( "negativefloat" ) << QVariant( -3.1415927f ) << (uint)-3 << true;
+ QTest::newRow( "negativeint-string" ) << QVariant( QString("-123") ) << (uint)0 << false;
+ QTest::newRow( "negativelonglong0" ) << QVariant( (qlonglong)-34 ) << (uint)-34 << true;
+ QTest::newRow( "QChar" ) << QVariant(QChar('a')) << uint('a') << true;
+ QByteArray bytearray(4, ' ');
+ bytearray[0] = '4';
+ bytearray[1] = '3';
+ bytearray[2] = '2';
+ bytearray[3] = '1';
+ QTest::newRow( "QByteArray" ) << QVariant( bytearray ) << (uint)4321 << true;
+}
+
+void tst_QVariant::toUInt()
+{
+ QFETCH( QVariant, value );
+ QFETCH( uint, result );
+ QFETCH( bool, valueOK );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::UInt ) );
+
+ bool ok;
+ uint i = value.toUInt( &ok );
+ QVERIFY( ok == valueOK );
+ QCOMPARE( i, result );
+}
+
+
+void tst_QVariant::toSize_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QSize>("result");
+ QTest::newRow( "qsizef4" ) << QVariant( QSizeF(4, 2) ) << QSize(4, 2);
+ QTest::newRow( "qsizef1" ) << QVariant( QSizeF(0, 0) ) << QSize(0, 0);
+ QTest::newRow( "qsizef2" ) << QVariant( QSizeF(-5, -1) ) << QSize(-5, -1);
+ QTest::newRow( "qsizef3" ) << QVariant( QSizeF() ) << QSize();
+}
+
+void tst_QVariant::toSize()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QSize, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Size ) );
+
+ QSize i = value.toSize();
+ QCOMPARE( i, result );
+}
+
+void tst_QVariant::toSizeF_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QSizeF>("result");
+ QTest::newRow( "qsize1" ) << QVariant( QSize(0, 0) ) << QSizeF(0, 0);
+ QTest::newRow( "qsize2" ) << QVariant( QSize(-5, -1) ) << QSizeF(-5, -1);
+ QTest::newRow( "qsize3" ) << QVariant( QSize() ) << QSizeF();
+ QTest::newRow( "qsize4" ) << QVariant(QSize(4,2)) << QSizeF(4,2);
+}
+
+void tst_QVariant::toSizeF()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QSizeF, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::SizeF ) );
+
+ QSizeF i = value.toSizeF();
+ QCOMPARE( i, result );
+}
+
+void tst_QVariant::toLine_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QLine>("result");
+ QTest::newRow( "linef1" ) << QVariant( QLineF(1, 2, 3, 4) ) << QLine(1, 2, 3, 4);
+ QTest::newRow( "linef2" ) << QVariant( QLineF(-1, -2, -3, -4) ) << QLine(-1, -2, -3, -4);
+ QTest::newRow( "linef3" ) << QVariant( QLineF(0, 0, 0, 0) ) << QLine(0, 0, 0, 0);
+ QTest::newRow( "linef4" ) << QVariant( QLineF() ) << QLine();
+}
+
+void tst_QVariant::toLine()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QLine, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Line ) );
+
+ QLine i = value.toLine();
+ QCOMPARE( i, result );
+}
+
+void tst_QVariant::toLineF_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QLineF>("result");
+ QTest::newRow( "line1" ) << QVariant( QLine(-1, -2, -3, -4) ) << QLineF(-1, -2, -3, -4);
+ QTest::newRow( "line2" ) << QVariant( QLine(0, 0, 0, 0) ) << QLineF(0, 0, 0, 0);
+ QTest::newRow( "line3" ) << QVariant( QLine() ) << QLineF();
+ QTest::newRow( "line4" ) << QVariant( QLine(1, 2, 3, 4) ) << QLineF(1, 2, 3, 4);
+}
+
+void tst_QVariant::toLineF()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QLineF, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::LineF ) );
+
+ QLineF i = value.toLineF();
+ QCOMPARE( i, result );
+}
+
+void tst_QVariant::toPoint_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QPoint>("result");
+ QTest::newRow( "pointf1" ) << QVariant( QPointF(4, 2) ) << QPoint(4, 2);
+ QTest::newRow( "pointf2" ) << QVariant( QPointF(0, 0) ) << QPoint(0, 0);
+ QTest::newRow( "pointf3" ) << QVariant( QPointF(-4, -2) ) << QPoint(-4, -2);
+ QTest::newRow( "pointf4" ) << QVariant( QPointF() ) << QPoint();
+ QTest::newRow( "pointf5" ) << QVariant( QPointF(-4.2f, -2.3f) ) << QPoint(-4, -2);
+}
+
+void tst_QVariant::toPoint()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QPoint, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Point ) );
+ QPoint i = value.toPoint();
+ QCOMPARE( i, result );
+}
+
+void tst_QVariant::toRect_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QRect>("result");
+ QTest::newRow( "rectf1" ) << QVariant(QRectF(1, 2, 3, 4)) << QRect(1, 2, 3, 4);
+ QTest::newRow( "rectf2" ) << QVariant(QRectF(0, 0, 0, 0)) << QRect(0, 0, 0, 0);
+ QTest::newRow( "rectf3" ) << QVariant(QRectF(-1, -2, -3, -4)) << QRect(-1, -2, -3, -4);
+ QTest::newRow( "rectf4" ) << QVariant(QRectF(-1.3f, 0, 3.9f, -4.0)) << QRect(-1, 0, 4, -4);
+ QTest::newRow( "rectf5" ) << QVariant(QRectF()) << QRect();
+}
+
+void tst_QVariant::toRect()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QRect, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Rect ) );
+ QRect i = value.toRect();
+ QCOMPARE( i, result );
+}
+
+void tst_QVariant::toChar_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QChar>("result");
+ QTest::newRow( "longlong" ) << QVariant(qlonglong('6')) << QChar('6');
+ QTest::newRow( "ulonglong" ) << QVariant(qulonglong('7')) << QChar('7');
+}
+
+void tst_QVariant::toChar()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QChar, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Char ) );
+
+ QChar i = value.toChar();
+ QCOMPARE( i, result );
+}
+
+void tst_QVariant::toBool_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<bool>("result");
+
+ QTest::newRow( "int0" ) << QVariant( 0 ) << false;
+ QTest::newRow( "int1" ) << QVariant( 123 ) << true;
+ QTest::newRow( "uint0" ) << QVariant( 0u ) << false;
+ QTest::newRow( "uint1" ) << QVariant( 123u ) << true;
+ QTest::newRow( "double0" ) << QVariant( 0.0 ) << false;
+ QTest::newRow( "float0" ) << QVariant( 0.0f ) << false;
+ QTest::newRow( "double1" ) << QVariant( 3.1415927 ) << true;
+ QTest::newRow( "float1" ) << QVariant( 3.1415927f ) << true;
+ QTest::newRow( "string0" ) << QVariant( QString("3") ) << true;
+ QTest::newRow( "string1" ) << QVariant( QString("true") ) << true;
+ QTest::newRow( "string2" ) << QVariant( QString("0") ) << false;
+ QTest::newRow( "string3" ) << QVariant( QString("fAlSe") ) << false;
+ QTest::newRow( "longlong0" ) << QVariant( (qlonglong)0 ) << false;
+ QTest::newRow( "longlong1" ) << QVariant( (qlonglong)1 ) << true;
+ QTest::newRow( "ulonglong0" ) << QVariant( (qulonglong)0 ) << false;
+ QTest::newRow( "ulonglong1" ) << QVariant( (qulonglong)1 ) << true;
+ QTest::newRow( "QChar" ) << QVariant(QChar('a')) << true;
+ QTest::newRow( "Null_QChar" ) << QVariant(QChar(0)) << false;
+}
+
+void tst_QVariant::toBool()
+{
+ QFETCH( QVariant, value );
+ QFETCH( bool, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Bool ) );
+
+ bool i = value.toBool();
+ QCOMPARE( i, result );
+}
+
+void tst_QVariant::toPointF_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QPointF>("result");
+
+ QTest::newRow( "QPoint" ) << QVariant( QPointF( 19, 84) ) << QPointF( 19, 84 );
+}
+
+void tst_QVariant::toPointF()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QPointF, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::PointF ) );
+ QPointF d = value.toPointF();
+ QCOMPARE( d, result );
+}
+
+void tst_QVariant::toRectF_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QRectF>("result");
+
+ QRect r( 1, 9, 8, 4 );
+ QRectF rf( 1.0, 9.0, 8.0, 4.0 );
+ QTest::newRow( "QRect" ) << QVariant( r ) << rf;
+}
+
+void tst_QVariant::toRectF()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QRectF, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::RectF ) );
+ QRectF d = value.toRectF();
+ QCOMPARE( d, result );
+}
+
+void tst_QVariant::toColor_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QColor>("result");
+
+ QColor c("red");
+ QTest::newRow( "string" ) << QVariant( QString( "red" ) ) << c;
+ QTest::newRow( "solid brush" ) << QVariant( QBrush(c) ) << c;
+}
+
+void tst_QVariant::toColor()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QColor, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Color ) );
+ QColor d = qVariantValue<QColor>(value);
+ QCOMPARE( d, result );
+}
+
+void tst_QVariant::toPixmap_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QPixmap>("result");
+
+ QPixmap pm(30, 30);
+ pm.fill(Qt::red);
+ QTest::newRow( "image" ) << QVariant( pm ) << pm;
+
+ QBitmap bm(30, 30);
+ bm.fill(Qt::color1);
+ QTest::newRow( "bitmap" ) << QVariant( bm ) << QPixmap(bm);
+}
+
+void tst_QVariant::toPixmap()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QPixmap, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Pixmap ) );
+ QPixmap d = qVariantValue<QPixmap>(value);
+ QCOMPARE( d, result );
+}
+
+void tst_QVariant::toImage_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QImage>("result");
+
+ QImage im(30, 30, QImage::Format_ARGB32);
+ im.fill(0x7fff0000);
+ QTest::newRow( "image" ) << QVariant( im ) << im;
+}
+
+void tst_QVariant::toImage()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QImage, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Image ) );
+ QImage d = qVariantValue<QImage>(value);
+ QCOMPARE( d, result );
+}
+
+void tst_QVariant::toBrush_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QBrush>("result");
+
+ QColor c(Qt::red);
+ QTest::newRow( "color" ) << QVariant( c ) << QBrush(c);
+ QPixmap pm(30, 30);
+ pm.fill(c);
+ QTest::newRow( "pixmap" ) << QVariant( pm ) << QBrush(pm);
+}
+
+void tst_QVariant::toBrush()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QBrush, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Brush ) );
+ QBrush d = qVariantValue<QBrush>(value);
+ QCOMPARE( d, result );
+}
+
+void tst_QVariant::toFont_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QFont>("result");
+
+ QFont f("times",12,-1,false);
+ QTest::newRow( "string" ) << QVariant( QString( "times,12,-1,5,50,0,0,0,0,0" ) ) << f;
+}
+
+void tst_QVariant::toFont()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QFont, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Font ) );
+ QFont d = qVariantValue<QFont>(value);
+ QCOMPARE( d, result );
+}
+
+void tst_QVariant::toKeySequence_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QKeySequence>("result");
+
+
+ QTest::newRow( "int" ) << QVariant( 67108929 ) << QKeySequence( Qt::CTRL + Qt::Key_A );
+
+
+ QTest::newRow( "qstring" )
+ << QVariant( QString( "Ctrl+A" ) )
+ << QKeySequence( Qt::CTRL + Qt::Key_A );
+}
+
+void tst_QVariant::toKeySequence()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QKeySequence, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::KeySequence ) );
+ QKeySequence d = qVariantValue<QKeySequence>(value);
+ QCOMPARE( d, result );
+}
+
+void tst_QVariant::toDouble_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<double>("result");
+ QTest::addColumn<bool>("valueOK");
+
+ QByteArray bytearray(4, ' ');
+ bytearray[0] = '3';
+ bytearray[1] = '2';
+ bytearray[2] = '.';
+ bytearray[3] = '1';
+ QTest::newRow( "bytearray" ) << QVariant( bytearray ) << 32.1 << true;
+}
+
+void tst_QVariant::toDouble()
+{
+ QFETCH( QVariant, value );
+ QFETCH( double, result );
+ QFETCH( bool, valueOK );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Double ) );
+ bool ok;
+ double d = value.toDouble( &ok );
+ QCOMPARE( d, result );
+ QVERIFY( ok == valueOK );
+}
+
+void tst_QVariant::toLongLong_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<qlonglong>("result");
+ QTest::addColumn<bool>("valueOK");
+
+ QTest::newRow( "int0" ) << QVariant( 123 ) << (qlonglong)123 << true;
+ QTest::newRow( "double" ) << QVariant( 3.1415927 ) << (qlonglong)3 << true;
+ QTest::newRow( "float" ) << QVariant( 3.1415927f ) << (qlonglong)3 << true;
+ QTest::newRow( "uint" ) << QVariant( 123u ) << (qlonglong)123 << true;
+ QTest::newRow( "int-string" ) << QVariant( QString("123") )
+ << (qlonglong)123 << true;
+ QTest::newRow( "string" ) << QVariant( QString("Unicode fun") ) << (qlonglong)0
+ << false;
+ QTest::newRow( "longlong" ) << QVariant( intMax1 ) << intMax1 << true;
+ QTest::newRow( "ulonglong" ) << QVariant( uintMax1 ) << (qlonglong)uintMax1 << true;
+ QTest::newRow( "QChar" ) << QVariant(QChar('a')) << qlonglong('a') << true;
+ QByteArray bytearray(4, ' ');
+ bytearray[0] = '3';
+ bytearray[1] = '2';
+ bytearray[2] = '0';
+ bytearray[3] = '0';
+ QTest::newRow( "QByteArray" ) << QVariant( bytearray ) << (qlonglong) 3200 << true;
+}
+
+void tst_QVariant::toLongLong()
+{
+ QFETCH( QVariant, value );
+ QFETCH( qlonglong, result );
+ QFETCH( bool, valueOK );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::LongLong ) );
+ bool ok;
+ qlonglong ll = value.toLongLong( &ok );
+ QCOMPARE( ll, result );
+ QVERIFY( ok == valueOK );
+}
+
+void tst_QVariant::toULongLong_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<qulonglong>("result");
+ QTest::addColumn<bool>("valueOK");
+
+ QTest::newRow( "int0" ) << QVariant( 123 ) << (qulonglong)123 << true;
+ QTest::newRow( "double" ) << QVariant( 3.1415927 ) << (qulonglong)3 << true;
+ QTest::newRow( "float" ) << QVariant( 3.1415927f ) << (qulonglong)3 << true;
+ QTest::newRow( "uint" ) << QVariant( 123u ) << (qulonglong)123 << true;
+ QTest::newRow( "int-string" ) << QVariant( QString("123") )
+ << (qulonglong)123 << true;
+ QTest::newRow( "string" ) << QVariant( QString("Unicode fun") ) << (qulonglong)0
+ << false;
+ QTest::newRow( "ulonglong-string" ) << QVariant( QString("18446744073709551615") )
+ << Q_UINT64_C(18446744073709551615)
+ << true;
+ QTest::newRow( "bytaa-string" ) << QVariant( QString("18446744073709551615") )
+ << Q_UINT64_C(18446744073709551615)
+ << true;
+ QTest::newRow( "longlong" ) << QVariant( intMax1 ) << (qulonglong)intMax1 << true;
+ QTest::newRow( "ulonglong" ) << QVariant( uintMax1 ) << uintMax1 << true;
+ QTest::newRow( "QChar" ) << QVariant(QChar('a')) << qulonglong('a') << true;
+ QByteArray bytearray(4, ' ');
+ bytearray[0] = '3';
+ bytearray[1] = '2';
+ bytearray[2] = '0';
+ bytearray[3] = '1';
+ QTest::newRow( "QByteArray" ) << QVariant( bytearray ) << (qulonglong) 3201 << true;
+}
+
+void tst_QVariant::toULongLong()
+{
+ QFETCH( QVariant, value );
+ QFETCH( qulonglong, result );
+ QFETCH( bool, valueOK );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::ULongLong ) );
+ bool ok;
+ qulonglong ll = value.toULongLong( &ok );
+ QCOMPARE( ll, result );
+ QVERIFY( ok == valueOK );
+}
+
+void tst_QVariant::toByteArray_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QByteArray>("result");
+
+ QByteArray ba(5, ' ');
+ ba[0] = 'T';
+ ba[1] = 'e';
+ ba[2] = 's';
+ ba[3] = 't';
+ ba[4] = '\0';
+
+ QByteArray variantBa = ba;
+
+ QTest::newRow( "qbytearray" ) << QVariant( variantBa ) << ba;
+ QTest::newRow( "int" ) << QVariant( -123 ) << QByteArray( "-123" );
+ QTest::newRow( "uint" ) << QVariant( (uint)123 ) << QByteArray( "123" );
+ QTest::newRow( "double" ) << QVariant( 123.456 ) << QByteArray( "123.456" );
+ QTest::newRow( "float" ) << QVariant( 123.456f ) << QByteArray( "123.456" );
+ QTest::newRow( "longlong" ) << QVariant( (qlonglong)34 ) << QByteArray( "34" );
+ QTest::newRow( "ulonglong" ) << QVariant( (qulonglong)34 ) << QByteArray( "34" );
+}
+
+void tst_QVariant::toByteArray()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QByteArray, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::ByteArray ) );
+ QByteArray ba = value.toByteArray();
+ QCOMPARE( ba, result );
+}
+
+void tst_QVariant::toString_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow( "qstring" ) << QVariant( QString( "Test" ) ) << QString( "Test" );
+ QTest::newRow( "charstar" ) << QVariant(QLatin1String("Test")) << QString("Test");
+ QTest::newRow( "qbytearray") << QVariant( QByteArray( "Test\0" ) ) << QString( "Test" );
+ QTest::newRow( "int" ) << QVariant( -123 ) << QString( "-123" );
+ QTest::newRow( "uint" ) << QVariant( (uint)123 ) << QString( "123" );
+ QTest::newRow( "double" ) << QVariant( 123.456 ) << QString( "123.456" );
+ QTest::newRow( "float" ) << QVariant( 123.456f ) << QString( "123.456" );
+ QTest::newRow( "bool" ) << QVariant( true ) << QString( "true" );
+ QTest::newRow( "qdate" ) << QVariant( QDate( 2002, 1, 1 ) ) << QString( "2002-01-01" );
+ QTest::newRow( "qtime" ) << QVariant( QTime( 12, 34, 56 ) ) << QString( "12:34:56" );
+ QTest::newRow( "qdatetime" ) << QVariant( QDateTime( QDate( 2002, 1, 1 ), QTime( 12, 34, 56 ) ) ) << QString( "2002-01-01T12:34:56" );
+ QTest::newRow( "qkeysequence" ) << qVariantFromValue( QKeySequence( Qt::CTRL + Qt::Key_A ) )
+#ifndef Q_WS_MAC
+ << QString( "Ctrl+A" );
+#else
+ << QString(QChar(0x2318)) + "A";
+#endif
+
+ QFont font( "times", 12 );
+ QTest::newRow( "qfont" ) << qVariantFromValue( font ) << QString("times,12,-1,5,50,0,0,0,0,0");
+ QTest::newRow( "qcolor" ) << qVariantFromValue( QColor( 10, 10, 10 ) ) << QString( "#0a0a0a" );
+ QTest::newRow( "llong" ) << QVariant( (qlonglong)Q_INT64_C(123456789012) ) <<
+ QString( "123456789012" );
+}
+
+void tst_QVariant::toString()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QString, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::String ) );
+ QString str = value.toString();
+ QCOMPARE( str, result );
+}
+
+void tst_QVariant::toDate_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QDate>("result");
+
+ QTest::newRow( "qdate" ) << QVariant( QDate( 2002, 10, 10 ) ) << QDate( 2002, 10, 10 );
+ QTest::newRow( "qdatetime" ) << QVariant( QDateTime( QDate( 2002, 10, 10 ), QTime( 12, 34, 56 ) ) ) << QDate( 2002, 10, 10 );
+ QTest::newRow( "qstring" ) << QVariant( QString( "2002-10-10" ) ) << QDate( 2002, 10, 10 );
+}
+
+void tst_QVariant::toDate()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QDate, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Date ) );
+ QCOMPARE( value.toDate(), result );
+}
+
+void tst_QVariant::toTime_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QTime>("result");
+
+ QTest::newRow( "qtime" ) << QVariant( QTime( 12, 34, 56 ) ) << QTime( 12, 34, 56 );
+ QTest::newRow( "qdatetime" ) << QVariant( QDateTime( QDate( 2002, 10, 10 ), QTime( 12, 34, 56 ) ) ) << QTime( 12, 34, 56 );
+ QTest::newRow( "qstring" ) << QVariant( QString( "12:34:56" ) ) << QTime( 12, 34, 56 );
+}
+
+void tst_QVariant::toTime()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QTime, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::Time ) );
+ QCOMPARE( value.toTime(), result );
+}
+
+void tst_QVariant::toDateTime_data()
+{
+ QTest::addColumn<QVariant>("value");
+ QTest::addColumn<QDateTime>("result");
+
+ QTest::newRow( "qdatetime" ) << QVariant( QDateTime( QDate( 2002, 10, 10 ), QTime( 12, 34, 56 ) ) )
+ << QDateTime( QDate( 2002, 10, 10 ), QTime( 12, 34, 56 ) );
+ QTest::newRow( "qdate" ) << QVariant( QDate( 2002, 10, 10 ) ) << QDateTime( QDate( 2002, 10, 10 ), QTime( 0, 0, 0 ) );
+ QTest::newRow( "qstring" ) << QVariant( QString( "2002-10-10T12:34:56" ) ) << QDateTime( QDate( 2002, 10, 10 ), QTime( 12, 34, 56 ) );
+}
+
+void tst_QVariant::toDateTime()
+{
+ QFETCH( QVariant, value );
+ QFETCH( QDateTime, result );
+ QVERIFY( value.isValid() );
+ QVERIFY( value.canConvert( QVariant::DateTime ) );
+ QCOMPARE( value.toDateTime(), result );
+}
+
+void tst_QVariant::toLocale()
+{
+ QVariant variant;
+ QLocale loc = variant.toLocale();
+ variant = QLocale::system();
+ loc = variant.toLocale();
+}
+
+void tst_QVariant::toRegExp()
+{
+ QVariant variant;
+ QRegExp rx = variant.toRegExp();
+ variant = QRegExp("foo");
+ rx = variant.toRegExp();
+}
+
+void tst_QVariant::matrix()
+{
+ QVariant variant;
+ QMatrix matrix = qVariantValue<QMatrix>(variant);
+ QVERIFY(matrix.isIdentity());
+ qVariantSetValue(variant, QMatrix().rotate(90));
+ QCOMPARE(QMatrix().rotate(90), qVariantValue<QMatrix>(variant));
+
+ void *mmatrix = QMetaType::construct(QVariant::Matrix, 0);
+ QVERIFY(mmatrix);
+ QMetaType::destroy(QVariant::Matrix, mmatrix);
+}
+
+void tst_QVariant::matrix4x4()
+{
+ QVariant variant;
+ QMatrix4x4 matrix = qVariantValue<QMatrix4x4>(variant);
+ QVERIFY(matrix.isIdentity());
+ QMatrix4x4 m;
+ m.scale(2.0f);
+ qVariantSetValue(variant, m);
+ QCOMPARE(m, qVariantValue<QMatrix4x4>(variant));
+
+ void *mmatrix = QMetaType::construct(QVariant::Matrix4x4, 0);
+ QVERIFY(mmatrix);
+ QMetaType::destroy(QVariant::Matrix4x4, mmatrix);
+}
+
+void tst_QVariant::transform()
+{
+ QVariant variant;
+ QTransform matrix = qVariantValue<QTransform>(variant);
+ QVERIFY(matrix.isIdentity());
+ qVariantSetValue(variant, QTransform().rotate(90));
+ QCOMPARE(QTransform().rotate(90), qVariantValue<QTransform>(variant));
+
+ void *mmatrix = QMetaType::construct(QVariant::Transform, 0);
+ QVERIFY(mmatrix);
+ QMetaType::destroy(QVariant::Transform, mmatrix);
+}
+
+
+void tst_QVariant::vector2D()
+{
+ QVariant variant;
+ QVector2D vector = qVariantValue<QVector2D>(variant);
+ QVERIFY(vector.isNull());
+ qVariantSetValue(variant, QVector2D(0.1, 0.2));
+ QCOMPARE(QVector2D(0.1, 0.2), qVariantValue<QVector2D>(variant));
+
+ void *pvector = QMetaType::construct(QVariant::Vector2D, 0);
+ QVERIFY(pvector);
+ QMetaType::destroy(QVariant::Vector2D, pvector);
+}
+
+void tst_QVariant::vector3D()
+{
+ QVariant variant;
+ QVector3D vector = qVariantValue<QVector3D>(variant);
+ QVERIFY(vector.isNull());
+ qVariantSetValue(variant, QVector3D(0.1, 0.2, 0.3));
+ QCOMPARE(QVector3D(0.1, 0.2, 0.3), qVariantValue<QVector3D>(variant));
+
+ void *pvector = QMetaType::construct(QVariant::Vector3D, 0);
+ QVERIFY(pvector);
+ QMetaType::destroy(QVariant::Vector3D, pvector);
+}
+
+void tst_QVariant::vector4D()
+{
+ QVariant variant;
+ QVector4D vector = qVariantValue<QVector4D>(variant);
+ QVERIFY(vector.isNull());
+ qVariantSetValue(variant, QVector4D(0.1, 0.2, 0.3, 0.4));
+ QCOMPARE(QVector4D(0.1, 0.2, 0.3, 0.4), qVariantValue<QVector4D>(variant));
+
+ void *pvector = QMetaType::construct(QVariant::Vector4D, 0);
+ QVERIFY(pvector);
+ QMetaType::destroy(QVariant::Vector4D, pvector);
+}
+
+void tst_QVariant::quaternion()
+{
+ QVariant variant;
+ QQuaternion quaternion = qVariantValue<QQuaternion>(variant);
+ QVERIFY(quaternion.isIdentity());
+ qVariantSetValue(variant, QQuaternion(0.1, 0.2, 0.3, 0.4));
+ QCOMPARE(QQuaternion(0.1, 0.2, 0.3, 0.4), qVariantValue<QQuaternion>(variant));
+
+ void *pquaternion = QMetaType::construct(QVariant::Quaternion, 0);
+ QVERIFY(pquaternion);
+ QMetaType::destroy(QVariant::Quaternion, pquaternion);
+}
+
+void tst_QVariant::writeToReadFromDataStream_data()
+{
+
+ QTest::addColumn<QVariant>("writeVariant");
+ QTest::addColumn<bool>("isNull");
+ {
+ typedef QList<QVariant> variantsList;
+ variantsList valuelist;
+ valuelist << QVariant( 1 ) << QVariant( QString("Two") ) << QVariant( 3.45 );
+ QVariant var(valuelist);
+ QTest::newRow( "list_valid" ) << var << false;
+ }
+
+ QTest::newRow( "invalid" ) << QVariant() << true;
+ QTest::newRow( "bitarray_invalid" ) << QVariant( QBitArray() ) << true;
+ QBitArray bitarray( 3 );
+ bitarray[0] = 0;
+ bitarray[1] = 1;
+ bitarray[2] = 0;
+ QTest::newRow( "bitarray_valid" ) << QVariant( bitarray ) << false;
+ QTest::newRow( "bytearray_invalid" ) << QVariant( QByteArray() ) << true;
+ QTest::newRow( "int_invalid") << QVariant(QVariant::Int) << true;
+ QByteArray bytearray(5, ' ');
+ bytearray[0] = 'T';
+ bytearray[1] = 'e';
+ bytearray[2] = 's';
+ bytearray[3] = 't';
+ bytearray[4] = '\0';
+ QTest::newRow( "bytearray_valid" ) << QVariant( bytearray ) << false;
+ QTest::newRow( "bitmap_invalid" ) << qVariantFromValue( QBitmap() ) << true;
+ QBitmap bitmap( 10, 10 );
+ bitmap.fill( Qt::red );
+ QTest::newRow( "bitmap_valid" ) << qVariantFromValue( bitmap ) << false;
+ QTest::newRow( "brush_valid" ) << qVariantFromValue( QBrush( Qt::red ) ) << false;
+ QTest::newRow( "color_valid" ) << qVariantFromValue( QColor( Qt::red ) ) << false;
+#ifndef QT_NO_CURSOR
+ QTest::newRow( "cursor_valid" ) << qVariantFromValue( QCursor( Qt::PointingHandCursor ) ) << false;
+#endif
+ QTest::newRow( "date_invalid" ) << QVariant( QDate() ) << true;
+ QTest::newRow( "date_valid" ) << QVariant( QDate( 2002, 07, 06 ) ) << false;
+ QTest::newRow( "datetime_invalid" ) << QVariant( QDateTime() ) << true;
+ QTest::newRow( "datetime_valid" ) << QVariant( QDateTime( QDate( 2002, 07, 06 ), QTime( 14, 0, 0 ) ) ) << false;
+ QTest::newRow( "double_valid" ) << QVariant( 123.456 ) << false;
+ QTest::newRow( "float_valid" ) << QVariant( 123.456f ) << false;
+ QTest::newRow( "font_valid" ) << qVariantFromValue( QFont( "times", 12 ) ) << false;
+ QTest::newRow( "pixmap_invalid" ) << qVariantFromValue( QPixmap() ) << true;
+ QPixmap pixmap( 10, 10 );
+ pixmap.fill( Qt::red );
+ QTest::newRow( "pixmap_valid" ) << qVariantFromValue( pixmap ) << false;
+// QTest::newRow( "iconset_valid" ) << QVariant( QIcon( pixmap ) ) << false;
+ QTest::newRow( "image_invalid" ) << qVariantFromValue( QImage() ) << true;
+ QTest::newRow( "keysequence_valid" ) << qVariantFromValue( QKeySequence( Qt::CTRL + Qt::Key_A ) ) << false;
+ QTest::newRow( "int_valid" ) << QVariant( -123 ) << false;
+ typedef QList<QVariant> variantsList;
+// variantsList valuelist;
+// valuelist << QVariant( 1 ) << QVariant( QString("Two") ) << QVariant( 3.45 );
+// QTest::newRow( "list_valid" ) << QVariant( valuelist ) << false;
+ typedef QMap<QString, QVariant> variantsMap;
+ variantsMap vMap;
+ vMap.insert( "int", QVariant( 1 ) );
+ vMap.insert( "string", QVariant( QString("Two") ) );
+ vMap.insert( "double", QVariant( 3.45 ) );
+ vMap.insert( "float", QVariant( 3.45f ) );
+ QTest::newRow( "map_valid" ) << QVariant( vMap ) << false;
+ QTest::newRow( "palette_valid" ) << qVariantFromValue(QPalette(QColor("turquoise"))) << false;
+ QTest::newRow( "pen_valid" ) << qVariantFromValue( QPen( Qt::red ) ) << false;
+ QTest::newRow( "pointarray_invalid" ) << qVariantFromValue( QPolygon() ) << true;
+ QTest::newRow( "pointarray_valid" ) << qVariantFromValue( QPolygon( QRect( 10, 10, 20, 20 ) ) ) << false;
+ QTest::newRow( "region_invalid" ) << qVariantFromValue( QRegion() ) << true;
+ QTest::newRow( "region_valid" ) << qVariantFromValue( QRegion( 10, 10, 20, 20 ) ) << false;
+ QTest::newRow( "sizepolicy_valid" ) << qVariantFromValue( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) ) << false;
+ QTest::newRow( "point_invalid" ) << qVariantFromValue( QPoint() ) << true;
+ QTest::newRow( "point_valid" ) << qVariantFromValue( QPoint( 10, 10 ) ) << false;
+ QTest::newRow( "rect_invalid" ) << QVariant( QRect() ) << true;
+ QTest::newRow( "rect_valid" ) << QVariant( QRect( 10, 10, 20, 20 ) ) << false;
+ QTest::newRow( "size_invalid" ) << QVariant( QSize( 0, 0 ) ) << true;
+ QTest::newRow( "size_valid" ) << QVariant( QSize( 10, 10 ) ) << false;
+ QTest::newRow( "string_invalid" ) << QVariant( QString() ) << true;
+ QTest::newRow( "string_valid" ) << QVariant( QString( "Test" ) ) << false;
+ QStringList stringlist;
+ stringlist << "One" << "Two" << "Three";
+ QTest::newRow( "stringlist_valid" ) << QVariant( stringlist ) << false;
+ QTest::newRow( "time_invalid" ) << QVariant( QTime() ) << true;
+ QTest::newRow( "time_valid" ) << QVariant( QTime( 14, 0, 0 ) ) << false;
+ QTest::newRow( "uint_valid" ) << QVariant( (uint)123 ) << false;
+ QTest::newRow( "qchar" ) << QVariant(QChar('a')) << false;
+ QTest::newRow( "qchar_null" ) << QVariant(QChar(0)) << true;
+ QTest::newRow( "regexp" ) << QVariant(QRegExp("foo", Qt::CaseInsensitive)) << false;
+ QTest::newRow( "regexp_empty" ) << QVariant(QRegExp()) << false;
+
+ // types known to QMetaType, but not part of QVariant::Type
+ QTest::newRow("QMetaType::Long invalid") << QVariant(QMetaType::Long, (void *) 0) << false;
+ long longInt = -1l;
+ QTest::newRow("QMetaType::Long") << QVariant(QMetaType::Long, &longInt) << false;
+ QTest::newRow("QMetaType::Short invalid") << QVariant(QMetaType::Short, (void *) 0) << false;
+ short shortInt = 1;
+ QTest::newRow("QMetaType::Short") << QVariant(QMetaType::Short, &shortInt) << false;
+ QTest::newRow("QMetaType::Char invalid") << QVariant(QMetaType::Char, (void *) 0) << false;
+ char ch = 'c';
+ QTest::newRow("QMetaType::Char") << QVariant(QMetaType::Char, &ch) << false;
+ QTest::newRow("QMetaType::ULong invalid") << QVariant(QMetaType::ULong, (void *) 0) << false;
+ ulong ulongInt = 1ul;
+ QTest::newRow("QMetaType::ULong") << QVariant(QMetaType::ULong, &ulongInt) << false;
+ QTest::newRow("QMetaType::UShort invalid") << QVariant(QMetaType::UShort, (void *) 0) << false;
+ ushort ushortInt = 1u;
+ QTest::newRow("QMetaType::UShort") << QVariant(QMetaType::UShort, &ushortInt) << false;
+ QTest::newRow("QMetaType::UChar invalid") << QVariant(QMetaType::UChar, (void *) 0) << false;
+ uchar uch = 0xf0;
+ QTest::newRow("QMetaType::UChar") << QVariant(QMetaType::UChar, &uch) << false;
+ QTest::newRow("QMetaType::Float invalid") << QVariant(QMetaType::Float, (void *) 0) << false;
+ float f = 1.234f;
+ QTest::newRow("QMetaType::Float") << QVariant(QMetaType::Float, &f) << false;
+}
+
+void tst_QVariant::writeToReadFromDataStream()
+{
+ // See #15831 for more information on the bug
+
+ QFETCH( QVariant, writeVariant );
+ QFETCH( bool, isNull );
+ QByteArray data;
+
+ QDataStream writeStream( &data, QIODevice::WriteOnly );
+ writeStream << writeVariant;
+
+ QVariant readVariant;
+ QDataStream readStream( &data, QIODevice::ReadOnly );
+ readStream >> readVariant;
+ QVERIFY( readVariant.isNull() == isNull );
+ // Best way to confirm the readVariant contains the same data?
+ // Since only a few won't match since the serial numbers are different
+ // I won't bother adding another bool in the data test.
+ QVariant::Type writeType = writeVariant.type();
+ if ( writeType != QVariant::Invalid && writeType != QVariant::Bitmap && writeType != QVariant::Pixmap
+ && writeType != QVariant::Image) {
+ switch (writeType) {
+ default:
+ QCOMPARE( readVariant, writeVariant );
+ break;
+
+ // compare types know by QMetaType but not QVariant (QVariant::operator==() knows nothing about them)
+ case QMetaType::Long:
+ QCOMPARE(qvariant_cast<long>(readVariant), qvariant_cast<long>(writeVariant));
+ break;
+ case QMetaType::ULong:
+ QCOMPARE(qvariant_cast<ulong>(readVariant), qvariant_cast<ulong>(writeVariant));
+ break;
+ case QMetaType::Short:
+ QCOMPARE(qvariant_cast<short>(readVariant), qvariant_cast<short>(writeVariant));
+ break;
+ case QMetaType::UShort:
+ QCOMPARE(qvariant_cast<ushort>(readVariant), qvariant_cast<ushort>(writeVariant));
+ break;
+ case QMetaType::Char:
+ QCOMPARE(qvariant_cast<char>(readVariant), qvariant_cast<char>(writeVariant));
+ break;
+ case QMetaType::UChar:
+ QCOMPARE(qvariant_cast<uchar>(readVariant), qvariant_cast<uchar>(writeVariant));
+ break;
+ case QMetaType::Float:
+ {
+ // the uninitialized float can be NaN (observed on Windows Mobile 5 ARMv4i)
+ float readFloat = qvariant_cast<float>(readVariant);
+ float writtenFloat = qvariant_cast<float>(writeVariant);
+ QVERIFY(qIsNaN(readFloat) == qIsNaN(writtenFloat));
+ if (!qIsNaN(readFloat))
+ QVERIFY(readFloat == writtenFloat);
+ }
+ break;
+ }
+ }
+}
+
+void tst_QVariant::writeToReadFromOldDataStream()
+{
+ QVariant writeVariant = QString("hello");
+ QByteArray data;
+
+ QDataStream writeStream(&data, QIODevice::WriteOnly);
+ writeStream.setVersion(QDataStream::Qt_2_1);
+ writeStream << writeVariant;
+
+ QVariant readVariant;
+ QDataStream readStream(&data, QIODevice::ReadOnly);
+ readStream.setVersion(QDataStream::Qt_2_1);
+ readStream >> readVariant;
+
+ QCOMPARE(writeVariant.userType(), readVariant.userType());
+ QCOMPARE(writeVariant, readVariant);
+}
+
+void tst_QVariant::checkDataStream()
+{
+ // test fix for task 215610
+ const QByteArray settingsHex("0000002effffffffff");
+ const QByteArray settings = QByteArray::fromHex(settingsHex);
+ QDataStream in(settings);
+ QVariant v;
+ in >> v;
+ // the line below has been left out for now since the data stream
+ // is not necessarily considered corrupt when an invalid QVariant is
+ // constructed. However, it might be worth considering changing that behavior
+ // in the future.
+// QCOMPARE(in.status(), QDataStream::ReadCorruptData);
+ QCOMPARE(v.type(), QVariant::Invalid);
+}
+
+void tst_QVariant::operator_eq_eq_data()
+{
+ QTest::addColumn<QVariant>("left");
+ QTest::addColumn<QVariant>("right");
+ QTest::addColumn<bool>("equal"); // left == right ?
+
+ QVariant inv;
+ QVariant i0( int(0) );
+ QVariant i1( int(1) );
+ // Invalid
+ QTest::newRow( "invinv" ) << inv << inv << true;
+ // Int
+ QTest::newRow( "int1int1" ) << i1 << i1 << true;
+ QTest::newRow( "int1int0" ) << i1 << i0 << false;
+ QTest::newRow( "nullint" ) << i0 << QVariant(QVariant::Int) << false;
+
+ // LongLong and ULongLong
+ QVariant ll1( (qlonglong)1 );
+ QVariant lln2( (qlonglong)-2 );
+ QVariant ull1( (qulonglong)1 );
+ QVariant ull3( (qulonglong)3 );
+ QTest::newRow( "ll1ll1" ) << ll1 << ll1 << true;
+ QTest::newRow( "ll1lln2" ) << ll1 << lln2 << false;
+ QTest::newRow( "ll1ull1" ) << ull1 << ull1 << true;
+ QTest::newRow( "ll1i1" ) << ull1 << i1 << true;
+ QTest::newRow( "ull1ull1" ) << ull1 << ull1 << true;
+ QTest::newRow( "ull1i1" ) << ull1 << ull1 << true;
+
+ QVariant mInt(-42);
+ QVariant mIntString(QByteArray("-42"));
+ QVariant mIntQString(QString("-42"));
+
+ QVariant mUInt(42u);
+ QVariant mUIntString(QByteArray("42"));
+ QVariant mUIntQString(QString("42"));
+
+ QVariant mDouble(42.11);
+ QVariant mDoubleString(QByteArray("42.11"));
+ QVariant mDoubleQString(QString("42.11"));
+
+ QVariant mFloat(42.11f);
+ QVariant mFloatString(QByteArray("42.11"));
+ QVariant mFloatQString(QString("42.11"));
+
+ QVariant mLongLong((qlonglong)-42);
+ QVariant mLongLongString(QByteArray("-42"));
+ QVariant mLongLongQString(QString("-42"));
+
+ QVariant mULongLong((qulonglong)42);
+ QVariant mULongLongString(QByteArray("42"));
+ QVariant mULongLongQString(QString("42"));
+
+ QVariant mBool(false);
+ QVariant mBoolString(QByteArray("false"));
+ QVariant mBoolQString(QString("false"));
+
+ QTest::newRow( "double_int" ) << QVariant(42.0) << QVariant(42) << true;
+ QTest::newRow( "float_int" ) << QVariant(42.f) << QVariant(42) << true;
+ QTest::newRow( "mInt_mIntString" ) << mInt << mIntString << true;
+ QTest::newRow( "mIntString_mInt" ) << mIntString << mInt << true;
+ QTest::newRow( "mInt_mIntQString" ) << mInt << mIntQString << true;
+ QTest::newRow( "mIntQString_mInt" ) << mIntQString << mInt << true;
+
+ QTest::newRow( "mUInt_mUIntString" ) << mUInt << mUIntString << true;
+ QTest::newRow( "mUIntString_mUInt" ) << mUIntString << mUInt << true;
+ QTest::newRow( "mUInt_mUIntQString" ) << mUInt << mUIntQString << true;
+ QTest::newRow( "mUIntQString_mUInt" ) << mUIntQString << mUInt << true;
+
+ QTest::newRow( "mDouble_mDoubleString" ) << mDouble << mDoubleString << true;
+ QTest::newRow( "mDoubleString_mDouble" ) << mDoubleString << mDouble << true;
+ QTest::newRow( "mDouble_mDoubleQString" ) << mDouble << mDoubleQString << true;
+ QTest::newRow( "mDoubleQString_mDouble" ) << mDoubleQString << mDouble << true;
+
+ QTest::newRow( "mFloat_mFloatString" ) << mFloat << mFloatString << true;
+ QTest::newRow( "mFloatString_mFloat" ) << mFloatString << mFloat << true;
+ QTest::newRow( "mFloat_mFloatQString" ) << mFloat << mFloatQString << true;
+ QTest::newRow( "mFloatQString_mFloat" ) << mFloatQString << mFloat << true;
+
+ QTest::newRow( "mLongLong_mLongLongString" ) << mLongLong << mLongLongString << true;
+ QTest::newRow( "mLongLongString_mLongLong" ) << mLongLongString << mLongLong << true;
+ QTest::newRow( "mLongLong_mLongLongQString" ) << mLongLong << mLongLongQString << true;
+ QTest::newRow( "mLongLongQString_mLongLong" ) << mLongLongQString << mLongLong << true;
+
+ QTest::newRow( "mULongLong_mULongLongString" ) << mULongLong << mULongLongString << true;
+ QTest::newRow( "mULongLongString_mULongLong" ) << mULongLongString << mULongLong << true;
+ QTest::newRow( "mULongLong_mULongLongQString" ) << mULongLong << mULongLongQString << true;
+ QTest::newRow( "mULongLongQString_mULongLong" ) << mULongLongQString << mULongLong << true;
+
+ QTest::newRow( "mBool_mBoolString" ) << mBool << mBoolString << true;
+ QTest::newRow( "mBoolString_mBool" ) << mBoolString << mBool << true;
+ QTest::newRow( "mBool_mBoolQString" ) << mBool << mBoolQString << true;
+ QTest::newRow( "mBoolQString_mBool" ) << mBoolQString << mBool << true;
+
+ QTest::newRow("ba2qstring") << QVariant(QLatin1String("hallo")) << QVariant(QString("hallo")) << true;
+ QTest::newRow("qstring2ba") << QVariant(QString("hallo")) << QVariant(QLatin1String("hallo")) << true;
+ QTest::newRow("char_char") << QVariant(QChar('a')) << QVariant(QChar('a')) << true;
+ QTest::newRow("char_char2") << QVariant(QChar('a')) << QVariant(QChar('b')) << false;
+
+ QTest::newRow("invalidConversion") << QVariant(QString("bubu")) << QVariant(0) << false;
+ QTest::newRow("invalidConversionR") << QVariant(0) << QVariant(QString("bubu")) << false;
+ // ### many other combinations missing
+
+ {
+ QMap<QString, QVariant> map1;
+ map1.insert( "X", 1 );
+
+ QMap<QString, QVariant> map2;
+ map2.insert( "Y", 1 );
+
+ QTest::newRow("TwoItemsInEqual") << QVariant(map1) << QVariant(map2) << false;
+
+ }
+
+ {
+ QMap<QString, QVariant> map1;
+ map1.insert( "X", 1 );
+
+ QMap<QString, QVariant> map2;
+ map2.insert( "X", 1 );
+
+ QTest::newRow("TwoItemsEqual") << QVariant(map1) << QVariant(map2) << true;
+ }
+
+ {
+ QMap<QString, QVariant> map1;
+ map1.insert( "X", 1 );
+
+ QMap<QString, QVariant> map2;
+
+ QTest::newRow("PopulatedEmptyMap") << QVariant(map1) << QVariant(map2) << false;
+ }
+
+ {
+ QMap<QString, QVariant> map1;
+
+ QMap<QString, QVariant> map2;
+ map2.insert( "X", 1 );
+
+ QTest::newRow("EmptyPopulatedMap") << QVariant(map1) << QVariant(map2) << false;
+ }
+
+ {
+ QMap<QString, QVariant> map1;
+ map1.insert( "X", 1 );
+ map1.insert( "Y", 1 );
+
+ QMap<QString, QVariant> map2;
+ map2.insert( "X", 1 );
+
+ QTest::newRow("FirstLarger") << QVariant(map1) << QVariant(map2) << false;
+ }
+
+ {
+ QMap<QString, QVariant> map1;
+ map1.insert( "X", 1 );
+
+ QMap<QString, QVariant> map2;
+ map2.insert( "X", 1 );
+ map2.insert( "Y", 1 );
+
+ QTest::newRow("SecondLarger") << QVariant(map1) << QVariant(map2) << false;
+ }
+
+ // same thing with hash
+ {
+ QHash<QString, QVariant> hash1;
+ hash1.insert( "X", 1 );
+
+ QHash<QString, QVariant> hash2;
+ hash2.insert( "Y", 1 );
+
+ QTest::newRow("HashTwoItemsInEqual") << QVariant(hash1) << QVariant(hash2) << false;
+
+ }
+
+ {
+ QHash<QString, QVariant> hash1;
+ hash1.insert( "X", 1 );
+
+ QHash<QString, QVariant> hash2;
+ hash2.insert( "X", 1 );
+
+ QTest::newRow("HashTwoItemsEqual") << QVariant(hash1) << QVariant(hash2) << true;
+ }
+
+ {
+ QHash<QString, QVariant> hash1;
+ hash1.insert( "X", 1 );
+
+ QHash<QString, QVariant> hash2;
+
+ QTest::newRow("HashPopulatedEmptyHash") << QVariant(hash1) << QVariant(hash2) << false;
+ }
+
+ {
+ QHash<QString, QVariant> hash1;
+
+ QHash<QString, QVariant> hash2;
+ hash2.insert( "X", 1 );
+
+ QTest::newRow("EmptyPopulatedHash") << QVariant(hash1) << QVariant(hash2) << false;
+ }
+
+ {
+ QHash<QString, QVariant> hash1;
+ hash1.insert( "X", 1 );
+ hash1.insert( "Y", 1 );
+
+ QHash<QString, QVariant> hash2;
+ hash2.insert( "X", 1 );
+
+ QTest::newRow("HashFirstLarger") << QVariant(hash1) << QVariant(hash2) << false;
+ }
+
+ {
+ QHash<QString, QVariant> hash1;
+ hash1.insert( "X", 1 );
+
+ QHash<QString, QVariant> hash2;
+ hash2.insert( "X", 1 );
+ hash2.insert( "Y", 1 );
+
+ QTest::newRow("HashSecondLarger") << QVariant(hash1) << QVariant(hash2) << false;
+ }
+
+ QTest::newRow( "UserType" ) << QVariant(QVariant::UserType) << QVariant(QVariant::UserType) << true;
+ QVariant mUserType(QVariant::UserType);
+ QTest::newRow( "Shared UserType" ) << mUserType << mUserType << true;
+}
+
+void tst_QVariant::operator_eq_eq()
+{
+ QFETCH( QVariant, left );
+ QFETCH( QVariant, right );
+ QFETCH( bool, equal );
+ QEXPECT_FAIL("nullint", "See task 118496", Continue);
+ QCOMPARE( left == right, equal );
+}
+
+void tst_QVariant::operator_eq_eq_rhs()
+{
+ QVariant v = 42;
+
+ QVERIFY(v == 42);
+ QVERIFY(42 == v);
+
+#if 0
+ /* This should _not_ compile */
+ QStringList list;
+ QDateTime dt;
+
+ QVERIFY(dt == list);
+#endif
+}
+
+void tst_QVariant::typeName_data()
+{
+ QTest::addColumn<int>("type");
+ QTest::addColumn<QByteArray>("res");
+ QTest::newRow("0") << int(QVariant::Invalid) << QByteArray("");
+ QTest::newRow("1") << int(QVariant::Map) << QByteArray("QVariantMap");
+ QTest::newRow("2") << int(QVariant::List) << QByteArray("QVariantList");
+ QTest::newRow("3") << int(QVariant::String) << QByteArray("QString");
+ QTest::newRow("4") << int(QVariant::StringList) << QByteArray("QStringList");
+ QTest::newRow("5") << int(QVariant::Font) << QByteArray("QFont");
+ QTest::newRow("6") << int(QVariant::Pixmap) << QByteArray("QPixmap");
+ QTest::newRow("7") << int(QVariant::Brush) << QByteArray("QBrush");
+ QTest::newRow("8") << int(QVariant::Rect) << QByteArray("QRect");
+ QTest::newRow("9") << int(QVariant::Size) << QByteArray("QSize");
+ QTest::newRow("10") << int(QVariant::Color) << QByteArray("QColor");
+ QTest::newRow("11") << int(QVariant::Palette) << QByteArray("QPalette");
+ QTest::newRow("12") << int(QVariant::Point) << QByteArray("QPoint");
+ QTest::newRow("13") << int(QVariant::Image) << QByteArray("QImage");
+ QTest::newRow("14") << int(QVariant::Int) << QByteArray("int");
+ QTest::newRow("15") << int(QVariant::UInt) << QByteArray("uint");
+ QTest::newRow("16") << int(QVariant::Bool) << QByteArray("bool");
+ QTest::newRow("17") << int(QVariant::Double) << QByteArray("double");
+ QTest::newRow("18") << int(QMetaType::Float) << QByteArray("float");
+ QTest::newRow("19") << int(QVariant::Polygon) << QByteArray("QPolygon");
+ QTest::newRow("20") << int(QVariant::Region) << QByteArray("QRegion");
+ QTest::newRow("21") << int(QVariant::Bitmap) << QByteArray("QBitmap");
+ QTest::newRow("22") << int(QVariant::Cursor) << QByteArray("QCursor");
+ QTest::newRow("23") << int(QVariant::SizePolicy) << QByteArray("QSizePolicy");
+ QTest::newRow("24") << int(QVariant::Date) << QByteArray("QDate");
+ QTest::newRow("25") << int(QVariant::Time) << QByteArray("QTime");
+ QTest::newRow("26") << int(QVariant::DateTime) << QByteArray("QDateTime");
+ QTest::newRow("27") << int(QVariant::ByteArray) << QByteArray("QByteArray");
+ QTest::newRow("28") << int(QVariant::BitArray) << QByteArray("QBitArray");
+ QTest::newRow("29") << int(QVariant::KeySequence) << QByteArray("QKeySequence");
+ QTest::newRow("30") << int(QVariant::Pen) << QByteArray("QPen");
+ QTest::newRow("31") << int(QVariant::LongLong) << QByteArray("qlonglong");
+ QTest::newRow("32") << int(QVariant::ULongLong) << QByteArray("qulonglong");
+ QTest::newRow("33") << int(QVariant::Char) << QByteArray("QChar");
+ QTest::newRow("34") << int(QVariant::Url) << QByteArray("QUrl");
+ QTest::newRow("35") << int(QVariant::TextLength) << QByteArray("QTextLength");
+ QTest::newRow("36") << int(QVariant::TextFormat) << QByteArray("QTextFormat");
+ QTest::newRow("37") << int(QVariant::Locale) << QByteArray("QLocale");
+ QTest::newRow("38") << int(QVariant::LineF) << QByteArray("QLineF");
+ QTest::newRow("39") << int(QVariant::RectF) << QByteArray("QRectF");
+ QTest::newRow("40") << int(QVariant::PointF) << QByteArray("QPointF");
+ QTest::newRow("41") << int(QVariant::RegExp) << QByteArray("QRegExp");
+ QTest::newRow("42") << int(QVariant::UserType) << QByteArray("UserType");
+ QTest::newRow("43") << int(QVariant::Matrix) << QByteArray("QMatrix");
+ QTest::newRow("44") << int(QVariant::Transform) << QByteArray("QTransform");
+ QTest::newRow("45") << int(QVariant::Hash) << QByteArray("QVariantHash");
+ QTest::newRow("46") << int(QVariant::Matrix4x4) << QByteArray("QMatrix4x4");
+ QTest::newRow("47") << int(QVariant::Vector2D) << QByteArray("QVector2D");
+ QTest::newRow("48") << int(QVariant::Vector3D) << QByteArray("QVector3D");
+ QTest::newRow("49") << int(QVariant::Vector4D) << QByteArray("QVector4D");
+ QTest::newRow("50") << int(QVariant::Quaternion) << QByteArray("QQuaternion");
+}
+
+void tst_QVariant::typeName()
+{
+ QFETCH( int, type );
+ QFETCH( QByteArray, res );
+ QCOMPARE(QString::fromLatin1(QVariant::typeToName((QVariant::Type)type)),
+ QString::fromLatin1(res.constData()));
+}
+
+// test nameToType as well
+void tst_QVariant::typeToName()
+{
+ QVariant v;
+ QCOMPARE( QVariant::typeToName( v.type() ), (const char*)0 ); // Invalid
+ // assumes that QVariant::Type contains consecutive values
+
+ int max = QVariant::Quaternion;
+ for ( int t = 1; t <= max; t++ ) {
+ const char *n = QVariant::typeToName( (QVariant::Type)t );
+ if (n)
+ QCOMPARE( int(QVariant::nameToType( n )), t );
+
+ }
+ QCOMPARE(QVariant::typeToName(QVariant::Int), "int");
+ // not documented but we return 0 if the type is out of range
+ // by testing this we catch cases where QVariant is extended
+ // but type_map is not updated accordingly
+ QCOMPARE( QVariant::typeToName( QVariant::Type(max+1) ), (char*)0 );
+ // invalid type names
+ QVERIFY( QVariant::nameToType( 0 ) == QVariant::Invalid );
+ QVERIFY( QVariant::nameToType( "" ) == QVariant::Invalid );
+ QVERIFY( QVariant::nameToType( "foo" ) == QVariant::Invalid );
+ QCOMPARE(QVariant::nameToType("QIconSet"), QVariant::Icon);
+}
+
+void tst_QVariant::streamInvalidVariant()
+{
+ // I wasn't sure where this test belonged, so it's here
+ // See #17423 for more details
+
+ int writeX = 1;
+ int writeY = 2;
+ int readX;
+ int readY;
+ QVariant writeVariant;
+ QVariant readVariant;
+
+ QVERIFY( writeVariant.type() == QVariant::Invalid );
+
+ QByteArray data;
+ QDataStream writeStream( &data, QIODevice::WriteOnly );
+ writeStream << writeX << writeVariant << writeY;
+
+ QDataStream readStream( &data, QIODevice::ReadOnly );
+ readStream >> readX >> readVariant >> readY;
+
+ QVERIFY( readX == writeX );
+ // Two invalid QVariant's aren't necessarily the same, so == will
+ // return false if one is invalid, so check the type() instead
+ QVERIFY( readVariant.type() == QVariant::Invalid );
+ QVERIFY( readY == writeY );
+}
+
+static int instanceCount = 0;
+
+struct MyType
+{
+ MyType(int n = 0, const char *t=0): number(n), text(t)
+ {
+ ++instanceCount;
+ }
+ MyType(const MyType &other)
+ : number(other.number), text(other.text)
+ {
+ ++instanceCount;
+ }
+ ~MyType()
+ {
+ --instanceCount;
+ }
+ int number;
+ const char *text;
+};
+
+Q_DECLARE_METATYPE(MyType)
+Q_DECLARE_METATYPE(MyType*)
+
+void tst_QVariant::userType()
+{
+ {
+ QVariant userVariant(QVariant::UserType);
+
+ QVERIFY(userVariant.isValid());
+ QVERIFY(userVariant.isNull());
+ }
+
+ {
+ MyType data(1, "eins");
+ MyType data2(2, "zwei");
+
+ {
+ QVariant userVar;
+ qVariantSetValue(userVar, data);
+
+ QCOMPARE(userVar.type(), QVariant::UserType);
+ QCOMPARE(userVar.typeName(), "MyType");
+ QVERIFY(!userVar.isNull());
+ QVERIFY(!userVar.canConvert(QVariant::String));
+ QVERIFY(!userVar.canConvert(QVariant::UserType));
+
+ QVariant userVar2(userVar);
+ QVERIFY(userVar == userVar2);
+
+ qVariantSetValue(userVar2, data2);
+ QVERIFY(userVar != userVar2);
+
+ const MyType *varData = static_cast<const MyType *>(userVar.constData());
+ QVERIFY(varData);
+ QCOMPARE(varData->number, data.number);
+ QCOMPARE(varData->text, data.text);
+
+ QVariant userVar3;
+ qVariantSetValue(userVar3, data2);
+ QVERIFY(userVar2 != userVar3);
+ userVar3 = userVar2;
+ QVERIFY(userVar2 == userVar3);
+ }
+ {
+ QVariant userVar;
+ qVariantSetValue(userVar, &data);
+
+ QCOMPARE(userVar.type(), QVariant::UserType);
+ QCOMPARE(userVar.typeName(), "MyType*");
+ QVERIFY(!userVar.isNull());
+ QVERIFY(!userVar.canConvert(QVariant::String));
+ QVERIFY(!userVar.canConvert(QVariant::UserType));
+
+ QVariant userVar2(userVar);
+ QVERIFY(userVar == userVar2);
+
+ qVariantSetValue(userVar2, &data2);
+ QVERIFY(userVar != userVar2);
+
+ MyType * const*varData = reinterpret_cast<MyType *const *>(userVar.constData());
+ QVERIFY(varData);
+ QCOMPARE(*varData, &data);
+
+ QVariant userVar3;
+ qVariantSetValue(userVar3, &data2);
+
+ /* This check is correct now. userVar2 contains a pointer to data2 and so
+ * does userVar3. */
+ QVERIFY(userVar2 == userVar3);
+
+ userVar3 = userVar2;
+ QVERIFY(userVar2 == userVar3);
+ }
+
+ QCOMPARE(instanceCount, 2);
+ QVariant myCarrier;
+ qVariantSetValue(myCarrier, data);
+ QCOMPARE(instanceCount, 3);
+
+ {
+ QVariant second = myCarrier;
+ QCOMPARE(instanceCount, 3);
+ second.detach();
+ QCOMPARE(instanceCount, 4);
+ }
+ QCOMPARE(instanceCount, 3);
+
+ MyType data3(0, "null");
+ data3 = qVariantValue<MyType>(myCarrier);
+ QCOMPARE(data3.number, 1);
+ QCOMPARE(data3.text, (const char *)"eins");
+#ifndef Q_CC_SUN
+ QCOMPARE(instanceCount, 4);
+#endif
+
+ }
+
+ {
+ const MyType data(3, "drei");
+ QVariant myCarrier;
+
+ qVariantSetValue(myCarrier, data);
+ QCOMPARE(myCarrier.typeName(), "MyType");
+
+ const MyType data2 = qvariant_cast<MyType>(myCarrier);
+ QCOMPARE(data2.number, 3);
+ QCOMPARE(data2.text, (const char *)"drei");
+ }
+
+ {
+ short s = 42;
+ QVariant myCarrier;
+
+ qVariantSetValue(myCarrier, s);
+ QCOMPARE((int)qvariant_cast<short>(myCarrier), 42);
+ }
+
+ {
+ qlonglong ll = Q_INT64_C(42);
+ QVariant myCarrier;
+
+ qVariantSetValue(myCarrier, ll);
+ QCOMPARE(qvariant_cast<int>(myCarrier), 42);
+ }
+
+ QCOMPARE(instanceCount, 0);
+}
+
+struct MyTypePOD
+{
+ int a;
+ int b;
+};
+Q_DECLARE_METATYPE(MyTypePOD)
+
+void tst_QVariant::podUserType()
+{
+ MyTypePOD pod;
+ pod.a = 10;
+ pod.b = 20;
+
+ QVariant pod_as_variant = qVariantFromValue(pod);
+ MyTypePOD pod2 = qvariant_cast<MyTypePOD>(pod_as_variant);
+
+ QCOMPARE(pod.a, pod2.a);
+ QCOMPARE(pod.b, pod2.b);
+
+ qVariantSetValue(pod_as_variant, pod);
+ pod2 = qVariantValue<MyTypePOD>(pod_as_variant);
+
+ QCOMPARE(pod.a, pod2.a);
+ QCOMPARE(pod.b, pod2.b);
+}
+
+void tst_QVariant::basicUserType()
+{
+ QVariant v;
+ {
+ int i = 7;
+ v = QVariant(QMetaType::Int, &i);
+ }
+ QCOMPARE(v.type(), QVariant::Int);
+ QCOMPARE(v.toInt(), 7);
+
+ {
+ QString s("foo");
+ v = QVariant(QMetaType::QString, &s);
+ }
+ QCOMPARE(v.type(), QVariant::String);
+ QCOMPARE(v.toString(), QString("foo"));
+
+ {
+ double d = 4.4;
+ v = QVariant(QMetaType::Double, &d);
+ }
+ QCOMPARE(v.type(), QVariant::Double);
+ QCOMPARE(v.toDouble(), 4.4);
+
+ {
+ float f = 4.5f;
+ v = QVariant(QMetaType::Float, &f);
+ }
+ QCOMPARE(v.userType(), int(QMetaType::Float));
+ QCOMPARE(v.toDouble(), 4.5);
+
+ {
+ QByteArray ba("bar");
+ v = QVariant(QMetaType::QByteArray, &ba);
+ }
+ QCOMPARE(v.type(), QVariant::ByteArray);
+ QCOMPARE(v.toByteArray(), QByteArray("bar"));
+}
+
+void tst_QVariant::data_()
+{
+ QVariant v;
+
+ QVariant i = 1;
+ QVariant d = 1.12;
+ QVariant f = 1.12f;
+ QVariant ll = (qlonglong)2;
+ QVariant ull = (qulonglong)3;
+ QVariant s(QString("hallo"));
+ QVariant r(QRect(1,2,3,4));
+
+ v = i;
+ QVERIFY(v.data());
+ QCOMPARE(*static_cast<int *>(v.data()), i.toInt());
+
+ v = d;
+ QVERIFY(v.data());
+ QCOMPARE(*static_cast<double *>(v.data()), d.toDouble());
+
+ v = f;
+ QVERIFY(v.data());
+ QCOMPARE(*static_cast<float *>(v.data()), qVariantValue<float>(v));
+
+ v = ll;
+ QVERIFY(v.data());
+ QCOMPARE(*static_cast<qlonglong *>(v.data()), ll.toLongLong());
+
+ v = ull;
+ QVERIFY(v.data());
+ QCOMPARE(*static_cast<qulonglong *>(v.data()), ull.toULongLong());
+
+ v = s;
+ QVERIFY(v.data());
+ QCOMPARE(*static_cast<QString *>(v.data()), s.toString());
+
+ v = r;
+ QVERIFY(v.data());
+ QCOMPARE(*static_cast<QRect *>(v.data()), r.toRect());
+}
+
+void tst_QVariant::constData()
+{
+ QVariant v;
+
+ int i = 1;
+ double d = 1.12;
+ float f = 1.12f;
+ qlonglong ll = 2;
+ qulonglong ull = 3;
+ QString s("hallo");
+ QRect r(1,2,3,4);
+
+ v = QVariant(i);
+ QVERIFY(v.constData());
+ QCOMPARE(*static_cast<const int *>(v.constData()), i);
+
+ v = QVariant(d);
+ QVERIFY(v.constData());
+ QCOMPARE(*static_cast<const double *>(v.constData()), d);
+
+ v = QVariant(f);
+ QVERIFY(v.constData());
+ QCOMPARE(*static_cast<const float *>(v.constData()), f);
+
+ v = QVariant(ll);
+ QVERIFY(v.constData());
+ QCOMPARE(*static_cast<const qlonglong *>(v.constData()), ll);
+
+ v = QVariant(ull);
+ QVERIFY(v.constData());
+ QCOMPARE(*static_cast<const qulonglong *>(v.constData()), ull);
+
+ v = QVariant(s);
+ QVERIFY(v.constData());
+ QCOMPARE(*static_cast<const QString *>(v.constData()), s);
+
+ v = QVariant(r);
+ QVERIFY(v.constData());
+ QCOMPARE(*static_cast<const QRect *>(v.constData()), r);
+}
+
+struct Foo
+{
+ Foo(): i(0) {}
+ int i;
+};
+
+Q_DECLARE_METATYPE(Foo)
+
+void tst_QVariant::variant_to()
+{
+ QVariant v1(4.2);
+ QVariant v2(5);
+
+ QVariant v3;
+ QVariant v4;
+
+ QStringList sl;
+ sl << QLatin1String("blah");
+
+ qVariantSetValue(v3, sl);
+
+ Foo foo;
+ foo.i = 42;
+
+ qVariantSetValue(v4, foo);
+
+ QCOMPARE(qvariant_cast<double>(v1), 4.2);
+ QCOMPARE(qvariant_cast<float>(v1), 4.2f);
+ QCOMPARE(qvariant_cast<int>(v2), 5);
+ QCOMPARE(qvariant_cast<QStringList>(v3), sl);
+ QCOMPARE(qvariant_cast<QString>(v3), QString::fromLatin1("blah"));
+
+ QCOMPARE(qvariant_cast<Foo>(v4).i, 42);
+
+ QVariant v5;
+ QCOMPARE(qvariant_cast<Foo>(v5).i, 0);
+
+ QCOMPARE(qvariant_cast<int>(v1), 4);
+
+ QVariant n = qVariantFromValue<short>(42);
+ QCOMPARE(qvariant_cast<int>(n), 42);
+ QCOMPARE(qvariant_cast<uint>(n), 42u);
+ QCOMPARE(qvariant_cast<double>(n), 42.0);
+ QCOMPARE(qvariant_cast<float>(n), 42.f);
+ QCOMPARE(qvariant_cast<short>(n), short(42));
+ QCOMPARE(qvariant_cast<ushort>(n), ushort(42));
+
+ n = qVariantFromValue(43l);
+ QCOMPARE(qvariant_cast<int>(n), 43);
+ QCOMPARE(qvariant_cast<uint>(n), 43u);
+ QCOMPARE(qvariant_cast<double>(n), 43.0);
+ QCOMPARE(qvariant_cast<float>(n), 43.f);
+ QCOMPARE(qvariant_cast<long>(n), 43l);
+
+ n = QLatin1String("44");
+ QCOMPARE(qvariant_cast<int>(n), 44);
+ QCOMPARE(qvariant_cast<ulong>(n), 44ul);
+ QCOMPARE(qvariant_cast<float>(n), 44.0f);
+
+ QCOMPARE(qVariantFromValue(0.25f).toDouble(), 0.25);
+}
+
+struct Blah { int i; };
+
+QDataStream& operator>>(QDataStream& s, Blah& c)
+{ return (s >> c.i); }
+
+QDataStream& operator<<(QDataStream& s, const Blah& c)
+{ return (s << c.i); }
+
+void tst_QVariant::saveLoadCustomTypes()
+{
+ QByteArray data;
+
+ Blah i = { 42 };
+ int tp = qRegisterMetaType<Blah>("Blah");
+ QVariant v = QVariant(tp, &i);
+
+ qRegisterMetaTypeStreamOperators<Blah>("Blah");
+
+ QCOMPARE(v.userType(), tp);
+ QVERIFY(v.type() == QVariant::UserType);
+ {
+ QDataStream stream(&data, QIODevice::WriteOnly);
+ stream << v;
+ }
+
+ v = QVariant();
+
+ {
+ QDataStream stream(data);
+ stream >> v;
+ }
+
+ QCOMPARE(int(v.userType()), QMetaType::type("Blah"));
+ int value = *(int*)v.constData();
+ QCOMPARE(value, 42);
+}
+
+void tst_QVariant::url()
+{
+ QString str("http://qt.nokia.com");
+ QUrl url(str);
+
+ QVariant v(url); //built with a QUrl
+
+ QVariant v2 = v;
+
+ QVariant v3(str); //built with a QString
+
+ QCOMPARE(v2.toUrl(), url);
+ QVERIFY(qVariantCanConvert<QUrl>(v3));
+ QCOMPARE(v2.toUrl(), v3.toUrl());
+
+ QVERIFY(qVariantCanConvert<QString>(v2));
+ QCOMPARE(v2.toString(), str);
+ QCOMPARE(v3.toString(), str);
+}
+
+void tst_QVariant::globalColor()
+{
+ QVariant variant(Qt::blue);
+ QVERIFY(variant.type() == QVariant::Color);
+ QVERIFY(qVariantValue<QColor>(variant) == QColor(Qt::blue));
+}
+
+void tst_QVariant::variantMap()
+{
+ QMap<QString, QVariant> map;
+ map["test"] = 42;
+
+ QVariant v = map;
+ QVariantMap map2 = qvariant_cast<QVariantMap>(v);
+
+ QCOMPARE(map2.value("test").toInt(), 42);
+
+ QVariant v2 = QVariant(QMetaType::type("QVariantMap"), &map);
+ QCOMPARE(qvariant_cast<QVariantMap>(v2).value("test").toInt(), 42);
+
+ QVariant v3 = QVariant(QMetaType::type("QMap<QString, QVariant>"), &map);
+ QCOMPARE(qvariant_cast<QVariantMap>(v3).value("test").toInt(), 42);
+}
+
+void tst_QVariant::variantHash()
+{
+ QHash<QString, QVariant> hash;
+ hash["test"] = 42;
+
+ QVariant v = hash;
+ QVariantHash hash2 = qvariant_cast<QVariantHash>(v);
+
+ QCOMPARE(hash2.value("test").toInt(), 42);
+
+ QVariant v2 = QVariant(QMetaType::type("QVariantHash"), &hash);
+ QCOMPARE(qvariant_cast<QVariantHash>(v2).value("test").toInt(), 42);
+
+ QVariant v3 = QVariant(QMetaType::type("QHash<QString, QVariant>"), &hash);
+ QCOMPARE(qvariant_cast<QVariantHash>(v3).value("test").toInt(), 42);
+}
+
+void tst_QVariant::invalidQColor() const
+{
+ QVariant va("An invalid QColor::name() value.");
+ QVERIFY(va.canConvert(QVariant::Color));
+
+ QVERIFY(!va.convert(QVariant::Color));
+
+ QVERIFY(!qvariant_cast<QColor>(va).isValid());
+}
+
+void tst_QVariant::qvariant_cast_QObject_data() {
+
+ QTest::addColumn<QVariant>("data");
+ QTest::addColumn<bool>("success");
+ QObject *obj = new QObject(this);
+ obj->setObjectName(QString::fromLatin1("Hello"));
+ QTest::newRow("from QObject") << QVariant(QMetaType::QObjectStar, &obj) << true;
+ QTest::newRow("from QObject2") << QVariant::fromValue(obj) << true;
+ QTest::newRow("from String") << QVariant(QLatin1String("1, 2, 3")) << false;
+ QTest::newRow("from int") << QVariant((int) 123) << false;
+}
+
+
+void tst_QVariant::qvariant_cast_QObject() {
+ QFETCH(QVariant, data);
+ QFETCH(bool, success);
+
+ QObject *o = qvariant_cast<QObject *>(data);
+ QCOMPARE(o != 0, success);
+ if (success) {
+ QCOMPARE(o->objectName(), QString::fromLatin1("Hello"));
+ }
+}
+
+Q_DECLARE_METATYPE(qint8);
+
+void tst_QVariant::convertToQUint8() const
+{
+ // See task 158470.
+
+ /* qint8. */
+ {
+ const qint8 anInt = 32;
+
+ /* QVariant(int) gets invoked here so the QVariant has nothing with qint8 to do.
+ * It's of type QVariant::Int. */
+ const QVariant v0 = anInt;
+
+ QVERIFY(qVariantCanConvert<qint8>(v0));
+ QCOMPARE(int(qvariant_cast<qint8>(v0)), 32);
+ QCOMPARE(int(v0.toInt()), 32);
+ QCOMPARE(v0.toString(), QString("32"));
+
+ QCOMPARE(int(qvariant_cast<qlonglong>(v0)), 32);
+ QCOMPARE(int(qvariant_cast<char>(v0)), 32);
+ QCOMPARE(int(qvariant_cast<short>(v0)), 32);
+ QCOMPARE(int(qvariant_cast<long>(v0)), 32);
+ QCOMPARE(int(qvariant_cast<float>(v0)), 32);
+ QCOMPARE(int(qvariant_cast<double>(v0)), 32);
+ }
+
+ /* quint8. */
+ {
+ const quint8 anInt = 32;
+ const QVariant v0 = anInt;
+
+ QVERIFY(qVariantCanConvert<quint8>(v0));
+ QCOMPARE(int(qvariant_cast<quint8>(v0)), 32);
+ QCOMPARE(int(v0.toUInt()), 32);
+ QCOMPARE(v0.toString(), QString("32"));
+ }
+
+ /* qint16. */
+ {
+ const qint16 anInt = 32;
+ const QVariant v0 = anInt;
+
+ QVERIFY(qVariantCanConvert<qint16>(v0));
+ QCOMPARE(int(qvariant_cast<qint16>(v0)), 32);
+ QCOMPARE(int(v0.toInt()), 32);
+ QCOMPARE(v0.toString(), QString("32"));
+ }
+
+ /* quint16. */
+ {
+ const quint16 anInt = 32;
+ const QVariant v0 = anInt;
+
+ QVERIFY(qVariantCanConvert<quint16>(v0));
+ QCOMPARE(int(qvariant_cast<quint16>(v0)), 32);
+ QCOMPARE(int(v0.toUInt()), 32);
+ QCOMPARE(v0.toString(), QString("32"));
+ }
+}
+
+void tst_QVariant::comparePointers() const
+{
+ class MyClass
+ {
+ };
+
+ MyClass myClass;
+
+ QVariant v = qVariantFromValue<void *>(&myClass);
+ QVariant v2 = qVariantFromValue<void *>(&myClass);
+
+ QCOMPARE(v, v2);
+}
+
+struct Data {};
+Q_DECLARE_METATYPE(Data*)
+
+void tst_QVariant::voidStar() const
+{
+ char c;
+ void *p1 = &c;
+ void *p2 = p1;
+
+ QVariant v1, v2;
+ v1 = qVariantFromValue(p1);
+ v2 = v1;
+ QVERIFY(v1 == v2);
+
+ v2 = qVariantFromValue(p2);
+ QVERIFY(v1 == v2);
+
+ p2 = 0;
+ v2 = qVariantFromValue(p2);
+ QVERIFY(v1 != v2);
+}
+
+void tst_QVariant::dataStar() const
+{
+ qRegisterMetaType<Data*>();
+ Data *p1 = new Data;
+
+ QVariant v1 = qVariantFromValue(p1);
+ QCOMPARE(v1.userType(), qMetaTypeId<Data*>());
+ QCOMPARE(qvariant_cast<Data*>(v1), p1);
+
+ QVariant v2 = v1;
+ QVERIFY(v1 == v2);
+
+ v2 = qVariantFromValue(p1);
+ QVERIFY(v1 == v2);
+ delete p1;
+}
+
+void tst_QVariant::canConvertQStringList() const
+{
+ QFETCH(bool, canConvert);
+ QFETCH(QStringList, input);
+ QFETCH(QString, result);
+
+ QVariant v(input);
+
+ QCOMPARE(v.canConvert(QVariant::String), canConvert);
+ QCOMPARE(v.toString(), result);
+}
+
+void tst_QVariant::canConvertQStringList_data() const
+{
+ QTest::addColumn<bool>("canConvert");
+ QTest::addColumn<QStringList>("input");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("An empty list") << false << QStringList() << QString();
+ QTest::newRow("A single item") << true << QStringList(QLatin1String("foo")) << QString::fromLatin1("foo");
+ QTest::newRow("A single, but empty item") << true << QStringList(QString()) << QString();
+
+ QStringList l;
+ l << "a" << "b";
+
+ QTest::newRow("Two items") << false << l << QString();
+
+ l << "c";
+ QTest::newRow("Three items") << false << l << QString();
+}
+
+template<typename T> void convertMetaType()
+{
+ QVERIFY(qVariantFromValue<T>(10).isValid());
+ QVERIFY(qVariantFromValue<T>(10).canConvert(QVariant::Int));
+ QCOMPARE(qVariantFromValue<T>(10).toInt(), 10);
+ QCOMPARE(qVariantFromValue<T>(10), qVariantFromValue<T>(10));
+}
+
+void tst_QVariant::canConvertMetaTypeToInt() const
+{
+ convertMetaType<long>();
+ convertMetaType<short>();
+ convertMetaType<short>();
+ convertMetaType<unsigned short>();
+ convertMetaType<ushort>();
+ convertMetaType<ulong>();
+ convertMetaType<unsigned long>();
+ convertMetaType<uchar>();
+ convertMetaType<unsigned char>();
+ convertMetaType<char>();
+ convertMetaType<uint>();
+ convertMetaType<unsigned int>();
+}
+
+/*!
+ These calls should not produce any warnings.
+ */
+void tst_QVariant::variantToDateTimeWithoutWarnings() const
+{
+ {
+ const QVariant variant(QLatin1String("An invalid QDateTime string"));
+ const QDateTime dateTime(variant.toDateTime());
+ QVERIFY(!dateTime.isValid());
+ }
+
+ {
+ QVariant v1(QLatin1String("xyz"));
+ v1.convert(QVariant::DateTime);
+
+ QVariant v2(QLatin1String("xyz"));
+ QDateTime dt1(v2.toDateTime());
+
+ const QVariant v3(QLatin1String("xyz"));
+ const QDateTime dt2(v3.toDateTime());
+ }
+}
+
+void tst_QVariant::invalidDateTime() const
+{
+ QVariant variant(QString::fromLatin1("Invalid date time string"));
+ QVERIFY(!variant.toDateTime().isValid());
+ QVERIFY(!variant.convert(QVariant::DateTime));
+}
+
+struct MyClass
+{
+ MyClass() : myValue(0) {}
+ int myValue;
+};
+
+Q_DECLARE_METATYPE( MyClass )
+
+void tst_QVariant::loadUnknownUserType()
+{
+ qRegisterMetaType<MyClass>("MyClass");
+ char data[] = {0, 0, 0, 127, 0, 0, 0, 0, 8, 77, 121, 67, 108, 97, 115, 115, 0};
+
+ QByteArray ba(data, sizeof(data));
+ QDataStream ds(&ba, QIODevice::ReadOnly);
+ QVariant var;
+ var.load(ds);
+ QCOMPARE(ds.status(), QDataStream::ReadCorruptData);
+}
+
+void tst_QVariant::loadBrokenUserType()
+{
+ char data[] = {0, 0, 0, 127, 0, 112 };
+
+ QByteArray ba(data, sizeof(data));
+ QDataStream ds(&ba, QIODevice::ReadOnly);
+ QVariant var;
+ var.load(ds);
+ QCOMPARE(ds.status(), QDataStream::ReadPastEnd);
+}
+
+void tst_QVariant::task172061_invalidDate() const
+{
+ QString foo("Hello");
+ QVariant variant(foo);
+ QVERIFY(!variant.convert(QVariant::Date));
+
+ variant = foo;
+ QVERIFY(!variant.convert(QVariant::DateTime));
+
+ variant = foo;
+ QVERIFY(!variant.convert(QVariant::Time));
+
+ variant = foo;
+ QVERIFY(!variant.convert(QVariant::Int));
+
+ variant = foo;
+ QVERIFY(!variant.convert(QVariant::Double));
+
+ variant = foo;
+ QVERIFY(!variant.convert(QVariant::Type(QMetaType::Float)));
+}
+
+struct WontCompare
+{
+ int x;
+};
+Q_DECLARE_METATYPE(WontCompare);
+
+void tst_QVariant::compareCustomTypes() const
+{
+ qRegisterMetaType<WontCompare>("WontCompare");
+
+ WontCompare f1;
+ f1.x = 0;
+ const QVariant variant1(qVariantFromValue(f1));
+
+ WontCompare f2;
+ f2.x = 0;
+ const QVariant variant2(qVariantFromValue(f2));
+
+ /* We compare pointers. */
+ QVERIFY(variant1 != variant2);
+ QVERIFY(variant1 == variant1);
+ QVERIFY(variant2 == variant2);
+}
+
+void tst_QVariant::timeToDateTime() const
+{
+ const QVariant val(QTime::currentTime());
+ QVERIFY(!val.canConvert(QVariant::DateTime));
+ QVERIFY(!val.toDateTime().isValid());
+}
+
+Q_DECLARE_METATYPE(QHostAddress)
+
+void tst_QVariant::copyingUserTypes() const
+{
+ QVariant var;
+ QVariant var3;
+ const QHostAddress ha("127.0.0.1");
+ qVariantSetValue(var, ha);
+ var3 = var;
+
+ QCOMPARE(qVariantValue<QHostAddress>(var3), ha);
+}
+
+void tst_QVariant::convertBoolToByteArray() const
+{
+ QFETCH(QByteArray, input);
+ QFETCH(bool, canConvert);
+ QFETCH(bool, value);
+
+ const QVariant variant(input);
+
+ QCOMPARE(qVariantCanConvert<bool>(variant), canConvert);
+
+ if(canConvert) {
+ /* Just call this function so we run the code path. */
+ QCOMPARE(variant.toBool(), value);
+ }
+}
+
+void tst_QVariant::convertBoolToByteArray_data() const
+{
+ QTest::addColumn<QByteArray>("input");
+ QTest::addColumn<bool>("canConvert");
+ QTest::addColumn<bool>("value");
+
+ QTest::newRow("false")
+ << QByteArray("false")
+ << true
+ << false;
+
+ QTest::newRow("FALSE")
+ << QByteArray("FALSE")
+ << true
+ << false;
+
+ QTest::newRow("falSE")
+ << QByteArray("FALSE")
+ << true
+ << false;
+
+ QTest::newRow("")
+ << QByteArray("")
+ << true
+ << false;
+
+ QTest::newRow("null QByteArray")
+ << QByteArray()
+ << true
+ << false;
+
+ QTest::newRow("any-content")
+ << QByteArray("any-content")
+ << true
+ << true;
+
+ QTest::newRow("true")
+ << QByteArray("true")
+ << true
+ << true;
+
+ QTest::newRow("TRUE")
+ << QByteArray("TRUE")
+ << true
+ << true;
+
+ QTest::newRow("trUE")
+ << QByteArray("trUE")
+ << true
+ << true;
+}
+
+void tst_QVariant::convertByteArrayToBool() const
+{
+ QFETCH(bool, input);
+ QFETCH(QByteArray, output);
+
+ const QVariant variant(input);
+ QCOMPARE(variant.type(), QVariant::Bool);
+ QCOMPARE(variant.toBool(), input);
+ QVERIFY(qVariantCanConvert<bool>(variant));
+
+ QCOMPARE(variant.toByteArray(), output);
+}
+
+void tst_QVariant::convertByteArrayToBool_data() const
+{
+ QTest::addColumn<bool>("input");
+ QTest::addColumn<QByteArray>("output");
+
+ QTest::newRow("false")
+ << false
+ << QByteArray("false");
+
+ QTest::newRow("true")
+ << true
+ << QByteArray("true");
+}
+
+/*!
+ We verify that:
+ 1. Converting the string "9.9" to int fails. This is the behavior of
+ toLongLong() and hence also QVariant, since it uses it.
+ 2. Converting the QVariant containing the double 9.9 to int works.
+
+ Rationale: "9.9" is not a valid int. However, doubles are by definition not
+ ints and therefore it makes more sense to perform conversion for those.
+
+ See task 237252.
+ */
+void tst_QVariant::toIntFromQString() const
+{
+ QVariant first("9.9");
+ bool ok;
+ QCOMPARE(first.toInt(&ok), 0);
+ QVERIFY(!ok);
+
+ QCOMPARE(QString("9.9").toLongLong(&ok), qlonglong(0));
+ QVERIFY(!ok);
+
+ QVariant v(9.9);
+ QCOMPARE(v.toInt(&ok), 10);
+ QVERIFY(ok);
+}
+
+/*!
+ We verify that:
+ 1. Conversion from (64 bit) double to int works (no overflow).
+ 2. Same conversion works for QVariant::convert.
+
+ Rationale: if 2147483630 is set in float and then converted to int,
+ there will be overflow and the result will be -2147483648.
+
+ See task 250267.
+ */
+void tst_QVariant::toIntFromDouble() const
+{
+ double d = 2147483630; // max int 2147483647
+ QVERIFY((int)d == 2147483630);
+
+ QVariant var(d);
+ QVERIFY( var.canConvert( QVariant::Int ) );
+
+ bool ok;
+ int result = var.toInt(&ok);
+
+ QVERIFY( ok == true );
+ QCOMPARE(result, 2147483630);
+}
+
+void tst_QVariant::task256984_setValue()
+{
+ QTransform t; //we just take a value so that we're sure that it will be shared
+ QVariant v1 = t;
+ QVERIFY( v1.isDetached() );
+ QVariant v2 = v1;
+ QVERIFY( !v1.isDetached() );
+ QVERIFY( !v2.isDetached() );
+
+ qVariantSetValue(v2, 3); //set an integer value
+
+ QVERIFY( v1.isDetached() );
+ QVERIFY( v2.isDetached() );
+}
+
+void tst_QVariant::numericalConvert()
+{
+ QVariant vfloat(float(5.3));
+ QVariant vdouble(double(5.3));
+ QVariant vreal(qreal(5.3));
+ QVariant vint(int(5));
+ QVariant vuint(uint(5));
+ QVariant vshort(short(5));
+ QVariant vlonglong(quint64(5));
+ QVariant vstringint(QString::fromLatin1("5"));
+ QVariant vstring(QString::fromLatin1("5.3"));
+
+ QVector<QVariant *> vect;
+ vect << &vfloat << &vdouble << &vreal << &vint << &vuint << &vshort<< &vlonglong << &vstringint << &vstring;
+
+ for(int i = 0; i < vect.size(); i++) {
+ double num = 5.3;
+ if (i >= 3 && i <= 7)
+ num = 5;
+ QVariant *v = vect.at(i);
+ QCOMPARE(v->toFloat() , float(num));
+ QCOMPARE(float(v->toReal()) , float(num));
+ QCOMPARE(float(v->toDouble()) , float(num));
+ if(i != 8) {
+ QCOMPARE(v->toInt() , int(num));
+ QCOMPARE(v->toUInt() , uint(num));
+ QCOMPARE(v->toULongLong() , quint64(num));
+ }
+ QCOMPARE(v->toString() , QString::number(num));
+ }
+}
+
+
+template<class T> void playWithVariant(const T &orig, bool isNull, const QString &toString, double toDouble, bool toBool)
+{
+ QVariant v = QVariant::fromValue(orig);
+ QVERIFY(v.isValid());
+ QCOMPARE(v.isNull(), isNull);
+ QCOMPARE(v.toString(), toString);
+ QCOMPARE(v.toDouble(), toDouble);
+ QCOMPARE(v.toBool(), toBool);
+ QCOMPARE(qvariant_cast<T>(v), orig);
+
+ {
+ QVariant v2 = v;
+ QCOMPARE(v2, v);
+ QVERIFY(v2.isValid());
+ QCOMPARE(v2.isNull(), isNull);
+ QCOMPARE(v2.toString(), toString);
+ QCOMPARE(v2.toDouble(), toDouble);
+ QCOMPARE(v2.toBool(), toBool);
+ QCOMPARE(qvariant_cast<T>(v2), orig);
+
+ QVariant v3;
+ v = QVariant();
+ QCOMPARE(v3, v);
+ v = v2;
+ QCOMPARE(v, v2);
+ QCOMPARE(qvariant_cast<T>(v2), qvariant_cast<T>(v));
+ QCOMPARE(v2.toString(), toString);
+ v3 = qVariantFromValue(orig);
+
+ QVERIFY(v3.isValid());
+ QCOMPARE(v3.isNull(), isNull);
+ QCOMPARE(v3.toString(), toString);
+ QCOMPARE(v3.toDouble(), toDouble);
+ QCOMPARE(v3.toBool(), toBool);
+ QCOMPARE(qvariant_cast<T>(v3), qvariant_cast<T>(v));
+ }
+
+ QVERIFY(v.isValid());
+ QCOMPARE(v.isNull(), isNull);
+ QCOMPARE(v.toString(), toString);
+ QCOMPARE(v.toDouble(), toDouble);
+ QCOMPARE(v.toBool(), toBool);
+ QCOMPARE(qvariant_cast<T>(v), orig);
+
+ if (qMetaTypeId<T>() != qMetaTypeId<QVariant>()) {
+ QCOMPARE(v.userType(), qMetaTypeId<T>());
+ QCOMPARE(QVariant::typeToName(QVariant::Type(v.userType())), QMetaType::typeName(qMetaTypeId<T>()));
+ }
+}
+
+
+struct MyPrimitive
+{
+ char x, y;
+ bool operator==(const MyPrimitive &o) const
+ {
+ return x == o.x && y == o.y;
+ }
+};
+
+QT_BEGIN_NAMESPACE
+Q_DECLARE_TYPEINFO(MyPrimitive, Q_PRIMITIVE_TYPE);
+QT_END_NAMESPACE
+
+struct MyData
+{
+ void *ptr;
+ MyData() : ptr(this) {}
+ ~MyData()
+ {
+ if (ptr != this) qWarning("%s: object has moved", Q_FUNC_INFO);
+ }
+ MyData(const MyData& o) : ptr(this)
+ {
+ if (o.ptr != &o) qWarning("%s: other object has moved", Q_FUNC_INFO);
+ }
+ MyData &operator=(const MyData &o)
+ {
+ if (ptr != this) qWarning("%s: object has moved", Q_FUNC_INFO);
+ if (o.ptr != &o) qWarning("%s: other object has moved", Q_FUNC_INFO);
+ return *this;
+ }
+ bool operator==(const MyData &o) const
+ {
+ if (ptr != this) qWarning("%s: object has moved", Q_FUNC_INFO);
+ if (o.ptr != &o) qWarning("%s: other object has moved", Q_FUNC_INFO);
+ return true;
+ }
+};
+
+struct MyMovable
+{
+ static int count;
+ int v;
+ MyMovable() { v = count++; }
+ ~MyMovable() { count--; }
+ MyMovable(const MyMovable &o) : v(o.v) { count++; }
+
+ bool operator==(const MyMovable &o) const
+ {
+ return v == o.v;
+ }
+};
+
+int MyMovable::count = 0;
+
+
+QT_BEGIN_NAMESPACE
+Q_DECLARE_TYPEINFO(MyMovable, Q_MOVABLE_TYPE);
+QT_END_NAMESPACE
+
+Q_DECLARE_METATYPE(QList<QSize>)
+Q_DECLARE_METATYPE(MyPrimitive)
+Q_DECLARE_METATYPE(MyData)
+Q_DECLARE_METATYPE(MyMovable)
+Q_DECLARE_METATYPE(QList<MyPrimitive>)
+Q_DECLARE_METATYPE(QList<MyData>)
+Q_DECLARE_METATYPE(QList<MyMovable>)
+Q_DECLARE_METATYPE(MyPrimitive *)
+Q_DECLARE_METATYPE(MyData *)
+Q_DECLARE_METATYPE(MyMovable *)
+
+
+void tst_QVariant::moreCustomTypes()
+{
+ {
+ QList<QSize> listSize;
+ playWithVariant(listSize, false, QString(), 0, false);
+ listSize << QSize(4,5) << QSize(89,23) << QSize(5,6);
+ playWithVariant(listSize, false, QString(), 0, false);
+ }
+
+ {
+ QString str;
+ playWithVariant(str, true, QString(), 0, false);
+ str = QString::fromLatin1("123456789.123");
+ playWithVariant(str, false, str, 123456789.123, true);
+ }
+
+ {
+ QSize size;
+ playWithVariant(size, false, QString(), 0, false);
+ playWithVariant(QSize(45,78), false, QString(), 0, false);
+ }
+
+ {
+ MyData d;
+ playWithVariant(d, false, QString(), 0, false);
+ playWithVariant(&d, false, QString(), 0, false);
+ QList<MyData> l;
+ playWithVariant(l, false, QString(), 0, false);
+ l << MyData() << MyData();
+ playWithVariant(l, false, QString(), 0, false);
+ }
+
+ {
+ MyPrimitive d = { 4, 5 };
+ playWithVariant(d, false, QString(), 0, false);
+ playWithVariant(&d, false, QString(), 0, false);
+ QList<MyPrimitive> l;
+ playWithVariant(l, false, QString(), 0, false);
+ l << d;
+ playWithVariant(l, false, QString(), 0, false);
+ }
+
+ {
+ MyMovable d;
+ playWithVariant(d, false, QString(), 0, false);
+ playWithVariant(&d, false, QString(), 0, false);
+ QList<MyMovable> l;
+ playWithVariant(l, false, QString(), 0, false);
+ l << MyMovable() << d;
+ playWithVariant(l, false, QString(), 0, false);
+ }
+ QCOMPARE(MyMovable::count, 0);
+
+ {
+ playWithVariant(12.12, false, "12.12", 12.12, true);
+ playWithVariant(12.12f, false, "12.12", 12.12f, true);
+ playWithVariant('a', false, "a", 'a', true);
+ playWithVariant((unsigned char)('a'), false, "a", 'a', true);
+ playWithVariant( quint8(12), false, "\xc", 12, true);
+ playWithVariant( qint8(13), false, "\xd", 13, true);
+ playWithVariant(quint16(14), false, "14", 14, true);
+ playWithVariant( qint16(15), false, "15", 15, true);
+ playWithVariant(quint32(16), false, "16", 16, true);
+ playWithVariant( qint32(17), false, "17", 17, true);
+ playWithVariant(quint64(18), false, "18", 18, true);
+ playWithVariant( qint64(19), false, "19", 19, true);
+ playWithVariant( qint8(-12), false, "\xf4", -12, true);
+ playWithVariant( qint16(-13), false, "-13", -13, true);
+ playWithVariant( qint32(-14), false, "-14", -14, true);
+ playWithVariant( qint64(-15), false, "-15", -15, true);
+ playWithVariant(quint64(0), false, "0", 0, false);
+ playWithVariant( true, false, "true", 1, true);
+ playWithVariant( false, false, "false", 0, false);
+
+ playWithVariant(QString("hello\n"), false, "hello\n", 0, true);
+ }
+
+ {
+ int i = 5;
+ playWithVariant((void *)(&i), false, QString(), 0, false);
+ playWithVariant((void *)(0), false, QString(), 0, false);
+ }
+
+ {
+ QVariant v1 = QVariant::fromValue(5);
+ QVariant v2 = QVariant::fromValue(5.0);
+ QVariant v3 = QVariant::fromValue(quint16(5));
+ QVariant v4 = 5;
+ QVariant v5 = QVariant::fromValue(MyPrimitive());
+ QVariant v6 = QVariant::fromValue(MyMovable());
+ QVariant v7 = QVariant::fromValue(MyData());
+ playWithVariant(v1, false, "5", 5, true);
+ playWithVariant(v2, false, "5", 5, true);
+ playWithVariant(v3, false, "5", 5, true);
+ playWithVariant(v4, false, "5", 5, true);
+
+ playWithVariant(v5, false, QString(), 0, false);
+ }
+}
+
+
+void tst_QVariant::variantInVariant()
+{
+ QVariant var1 = 5;
+ QCOMPARE(var1.type(), QVariant::Int);
+ QVariant var2 = var1;
+ QCOMPARE(var2, var1);
+ QCOMPARE(var2.type(), QVariant::Int);
+ QVariant var3 = QVariant::fromValue(var1);
+ QCOMPARE(var3, var1);
+ QCOMPARE(var3.type(), QVariant::Int);
+ QVariant var4 = qvariant_cast<QVariant>(var1);
+ QCOMPARE(var4, var1);
+ QCOMPARE(var4.type(), QVariant::Int);
+ QVariant var5;
+ var5 = var1;
+ QCOMPARE(var5, var1);
+ QCOMPARE(var5.type(), QVariant::Int);
+ QVariant var6;
+ var6.setValue(var1);
+ QCOMPARE(var6, var1);
+ QCOMPARE(var6.type(), QVariant::Int);
+
+ QCOMPARE(QVariant::fromValue(var1), QVariant::fromValue(var2));
+ QCOMPARE(qvariant_cast<QVariant>(var3), QVariant::fromValue(var4));
+ QCOMPARE(qvariant_cast<QVariant>(var5), qvariant_cast<QVariant>(var6));
+
+ QString str("hello");
+ QVariant var8 = qvariant_cast<QVariant>(QVariant::fromValue(QVariant::fromValue(str)));
+ QCOMPARE((int)var8.type(), (int)QVariant::String);
+ QCOMPARE(qvariant_cast<QString>(QVariant(qvariant_cast<QVariant>(var8))), str);
+
+ QVariant var9(qMetaTypeId<QVariant>(), &var1);
+ QCOMPARE(var9.userType(), qMetaTypeId<QVariant>());
+ QCOMPARE(qvariant_cast<QVariant>(var9), var1);
+}
+
+void tst_QVariant::colorInteger()
+{
+ QVariant v = QColor(Qt::red);
+ QCOMPARE(v.type(), QVariant::Color);
+ QCOMPARE(v.value<QColor>(), QColor(Qt::red));
+
+ v.setValue(1000);
+ QCOMPARE(v.type(), QVariant::Int);
+ QCOMPARE(v.toInt(), 1000);
+
+ v.setValue(QColor(Qt::yellow));
+ QCOMPARE(v.type(), QVariant::Color);
+ QCOMPARE(v.value<QColor>(), QColor(Qt::yellow));
+}
+
+class Forward;
+Q_DECLARE_METATYPE(Forward*);
+
+void tst_QVariant::forwardDeclare()
+{
+ Forward *f = 0;
+ QVariant v = QVariant::fromValue(f);
+ QCOMPARE(qvariant_cast<Forward*>(v), f);
+}
+
+
+QTEST_MAIN(tst_QVariant)
+#include "tst_qvariant.moc"
diff --git a/tests/auto/corelib/kernel/qwineventnotifier/.gitignore b/tests/auto/corelib/kernel/qwineventnotifier/.gitignore
new file mode 100644
index 0000000000..e2b5581e02
--- /dev/null
+++ b/tests/auto/corelib/kernel/qwineventnotifier/.gitignore
@@ -0,0 +1 @@
+tst_qwineventnotifier
diff --git a/tests/auto/corelib/kernel/qwineventnotifier/qwineventnotifier.pro b/tests/auto/corelib/kernel/qwineventnotifier/qwineventnotifier.pro
new file mode 100644
index 0000000000..4a5ea78ed1
--- /dev/null
+++ b/tests/auto/corelib/kernel/qwineventnotifier/qwineventnotifier.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qwineventnotifier.cpp
+QT = core core-private
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp b/tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp
new file mode 100644
index 0000000000..cbe62f6662
--- /dev/null
+++ b/tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp
@@ -0,0 +1,146 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#ifdef Q_OS_WIN
+#include <private/qwineventnotifier_p.h>
+
+
+#include <qtimer.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QWinEventNotifier : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QWinEventNotifier();
+ ~tst_QWinEventNotifier();
+
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+protected slots:
+ void simple_activated();
+ void simple_timerSet();
+private slots:
+
+ void simple();
+
+private:
+ HANDLE simpleHEvent;
+ bool simpleActivated;
+};
+
+tst_QWinEventNotifier::tst_QWinEventNotifier()
+{}
+
+tst_QWinEventNotifier::~tst_QWinEventNotifier()
+{ }
+
+void tst_QWinEventNotifier::initTestCase()
+{ }
+
+void tst_QWinEventNotifier::cleanupTestCase()
+{ }
+
+void tst_QWinEventNotifier::init()
+{ }
+
+void tst_QWinEventNotifier::cleanup()
+{
+}
+
+
+void tst_QWinEventNotifier::simple_activated()
+{
+ simpleActivated = true;
+ ResetEvent((HANDLE)simpleHEvent);
+ QTestEventLoop::instance().exitLoop();
+}
+
+void tst_QWinEventNotifier::simple_timerSet()
+{
+ SetEvent((HANDLE)simpleHEvent);
+}
+
+void tst_QWinEventNotifier::simple()
+{
+ simpleHEvent = CreateEvent(0, TRUE, FALSE, 0);
+ QVERIFY(simpleHEvent);
+
+ QWinEventNotifier n(simpleHEvent);
+ QObject::connect(&n, SIGNAL(activated(HANDLE)), this, SLOT(simple_activated()));
+ simpleActivated = false;
+
+ SetEvent((HANDLE)simpleHEvent);
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout())
+ QFAIL("Timed out");
+
+ QVERIFY(simpleActivated);
+
+
+ simpleActivated = false;
+
+ QTimer::singleShot(3000, this, SLOT(simple_timerSet()));
+
+ QTestEventLoop::instance().enterLoop(30);
+ if (QTestEventLoop::instance().timeout())
+ QFAIL("Timed out");
+
+ QVERIFY(simpleActivated);
+}
+
+QTEST_MAIN(tst_QWinEventNotifier)
+
+#include "tst_qwineventnotifier.moc"
+#else // non-windows systems
+QTEST_NOOP_MAIN
+#endif
+
diff --git a/tests/auto/corelib/plugin/plugin.pro b/tests/auto/corelib/plugin/plugin.pro
new file mode 100644
index 0000000000..24de36e4ec
--- /dev/null
+++ b/tests/auto/corelib/plugin/plugin.pro
@@ -0,0 +1,6 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qlibrary \
+ qplugin \
+ qpluginloader \
+ quuid
diff --git a/tests/auto/corelib/plugin/qlibrary/.gitignore b/tests/auto/corelib/plugin/qlibrary/.gitignore
new file mode 100644
index 0000000000..38963f2235
--- /dev/null
+++ b/tests/auto/corelib/plugin/qlibrary/.gitignore
@@ -0,0 +1,10 @@
+tst_qlibrary
+mylib.dl2
+mylib.dll
+mylib.exp
+mylib.lib
+mylib2.dll
+mylib2.exp
+mylib2.lib
+mylib_noextension
+system.trolltech.test.mylib.dll
diff --git a/tests/auto/corelib/plugin/qlibrary/lib/lib.pro b/tests/auto/corelib/plugin/qlibrary/lib/lib.pro
new file mode 100644
index 0000000000..6d80881cd2
--- /dev/null
+++ b/tests/auto/corelib/plugin/qlibrary/lib/lib.pro
@@ -0,0 +1,17 @@
+TEMPLATE = lib
+CONFIG += dll
+CONFIG -= staticlib
+SOURCES = mylib.c
+TARGET = mylib
+DESTDIR = ../
+QT = core
+
+wince*: DEFINES += WIN32_MSVC
+win32-msvc: DEFINES += WIN32_MSVC
+win32-borland: DEFINES += WIN32_BORLAND
+
+#no special install rule for the library used by test
+INSTALLS =
+
+symbian: TARGET.CAPABILITY=ALL -TCB
+
diff --git a/tests/auto/corelib/plugin/qlibrary/lib/mylib.c b/tests/auto/corelib/plugin/qlibrary/lib/mylib.c
new file mode 100644
index 0000000000..f1a2b7a002
--- /dev/null
+++ b/tests/auto/corelib/plugin/qlibrary/lib/mylib.c
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qglobal.h>
+
+#if defined(Q_CC_MSVC) || defined(Q_CC_MSVC_NET) || defined(Q_CC_BOR) || defined(Q_OS_SYMBIAN)
+#define LIB_EXPORT __declspec(dllexport)
+#else
+#define LIB_EXPORT
+#endif
+
+#if defined(Q_CC_BOR)
+# define BORLAND_STDCALL __stdcall
+#else
+# define BORLAND_STDCALL
+#endif
+
+LIB_EXPORT int BORLAND_STDCALL mylibversion()
+{
+ return 1;
+}
+
diff --git a/tests/auto/corelib/plugin/qlibrary/lib2/lib2.pro b/tests/auto/corelib/plugin/qlibrary/lib2/lib2.pro
new file mode 100644
index 0000000000..b441569e5a
--- /dev/null
+++ b/tests/auto/corelib/plugin/qlibrary/lib2/lib2.pro
@@ -0,0 +1,57 @@
+TEMPLATE = lib
+CONFIG += dll
+CONFIG -= staticlib
+SOURCES = mylib.c
+TARGET = mylib
+DESTDIR = ../
+VERSION = 2
+QT = core
+
+wince*: DEFINES += WIN32_MSVC
+win32-msvc: DEFINES += WIN32_MSVC
+win32-borland: DEFINES += WIN32_BORLAND
+
+# Force a copy of the library to have an extension that is non-standard.
+# We want to test if we can load a shared library with *any* filename...
+
+!symbian {
+ win32 {
+ # vcproj and Makefile generators refer to target differently
+ contains(TEMPLATE,vc.*) {
+ src = $(TargetPath)
+ } else {
+ src = $(DESTDIR_TARGET)
+ }
+ files = mylib.dl2 system.trolltech.test.mylib.dll
+ } else {
+ src = $(DESTDIR)$(TARGET)
+ files = libmylib.so2 system.trolltech.test.mylib.so
+ }
+ for(file, files) {
+ QMAKE_POST_LINK += $$QMAKE_COPY $$src ..$$QMAKE_DIR_SEP$$file &&
+ CLEAN_FILES += ../$$file
+ }
+ QMAKE_POST_LINK = $$member(QMAKE_POST_LINK, 0, -2)
+}
+
+symbian-abld: {
+ TARGET.CAPABILITY=ALL -TCB
+ FIXEDROOT = $$replace(EPOCROOT,/,\\)
+ QMAKE_POST_LINK = \
+ copy /Y $${FIXEDROOT}epoc32\\release\\$(PLATFORM)\\$(CFG)\\mylib.dll $${FIXEDROOT}epoc32\\release\\$(PLATFORM)\\$(CFG)\\mylib.dl2 && \
+ copy /Y $${FIXEDROOT}epoc32\\release\\$(PLATFORM)\\$(CFG)\\mylib.dll $${FIXEDROOT}epoc32\\release\\$(PLATFORM)\\$(CFG)\\system.trolltech.test.mylib.dll && \
+ IF NOT "$(PLATFORM)==WINSCW" copy /Y $${FIXEDROOT}epoc32\\release\\$(PLATFORM)\\$(CFG)\\mylib.dll ..\\tst\\mylib.dl2
+}
+
+symbian-sbsv2: {
+ TARGET.CAPABILITY=ALL -TCB
+ QMAKE_POST_LINK = \
+ $(GNUCP) $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/mylib.dll $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/mylib.dl2 && \
+ $(GNUCP) $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/mylib.dll $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/system.trolltech.test.mylib.dll && \
+ if test $(PLATFORM) != WINSCW;then $(GNUCP) $(EPOCROOT)epoc32/release/$(PLATFORM_PATH)/$(CFG_PATH)/mylib.dll $${PWD}/../tst/mylib.dl2; fi
+}
+
+#no special install rule for the library used by test
+INSTALLS =
+
+
diff --git a/tests/auto/corelib/plugin/qlibrary/lib2/mylib.c b/tests/auto/corelib/plugin/qlibrary/lib2/mylib.c
new file mode 100644
index 0000000000..f824a3a82d
--- /dev/null
+++ b/tests/auto/corelib/plugin/qlibrary/lib2/mylib.c
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qglobal.h>
+
+#if defined(Q_CC_MSVC) || defined(Q_CC_MSVC_NET) || defined(Q_CC_BOR)|| defined(Q_OS_SYMBIAN)
+#define LIB_EXPORT __declspec(dllexport)
+#else
+#define LIB_EXPORT
+#endif
+
+#if defined(Q_CC_BOR)
+# define BORLAND_STDCALL __stdcall
+#else
+# define BORLAND_STDCALL
+#endif
+
+LIB_EXPORT int BORLAND_STDCALL mylibversion()
+{
+ return 2;
+}
+
diff --git a/tests/auto/corelib/plugin/qlibrary/library_path/invalid.so b/tests/auto/corelib/plugin/qlibrary/library_path/invalid.so
new file mode 100644
index 0000000000..4f8a56fe95
--- /dev/null
+++ b/tests/auto/corelib/plugin/qlibrary/library_path/invalid.so
@@ -0,0 +1 @@
+This should be an invalid shared object file.
diff --git a/tests/auto/corelib/plugin/qlibrary/qlibrary.pro b/tests/auto/corelib/plugin/qlibrary/qlibrary.pro
new file mode 100644
index 0000000000..5dc129fbf9
--- /dev/null
+++ b/tests/auto/corelib/plugin/qlibrary/qlibrary.pro
@@ -0,0 +1,18 @@
+QT -= gui
+TEMPLATE = subdirs
+CONFIG += ordered
+
+symbian: {
+# Can't build two versions of lib with same name in symbian, so just build one
+SUBDIRS = lib2 \
+ tst
+} else {
+SUBDIRS = lib \
+ lib2 \
+ tst
+}
+TARGET = tst_qlibrary
+
+# no special install rule for subdir
+INSTALLS =
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/plugin/qlibrary/tst/tst.pro b/tests/auto/corelib/plugin/qlibrary/tst/tst.pro
new file mode 100644
index 0000000000..28c40b0b42
--- /dev/null
+++ b/tests/auto/corelib/plugin/qlibrary/tst/tst.pro
@@ -0,0 +1,33 @@
+load(qttest_p4)
+SOURCES += ../tst_qlibrary.cpp
+TARGET = ../tst_qlibrary
+QT = core
+
+win32 {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_qlibrary
+} else {
+ TARGET = ../../release/tst_qlibrary
+ }
+}
+
+wince*: {
+ addFiles.files = ../*.dll ../*.dl2 ../mylib_noextension
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+ DEFINES += SRCDIR=\\\"\\\"
+}else:symbian {
+ binDep.files = \
+ mylib.dll \
+ system.trolltech.test.mylib.dll
+ binDep.path = /sys/bin
+#mylib.dl2 nonstandard binary deployment will cause warning in emulator,
+#but it can be safely ignored.
+ custBinDep.files = mylib.dl2
+ custBinDep.path = /sys/bin
+
+ DEPLOYMENT += binDep custBinDep
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/../\\\"
+}
+
diff --git a/tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp b/tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp
new file mode 100644
index 0000000000..675d0e6ab6
--- /dev/null
+++ b/tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp
@@ -0,0 +1,630 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qdir.h>
+#include <qlibrary.h>
+#include <QtCore/QRegExp>
+
+
+// Helper macros to let us know if some suffixes and prefixes are valid
+#define bundle_VALID false
+#define dylib_VALID false
+#define sl_VALID false
+#define a_VALID false
+#define so_VALID false
+#define dll_VALID false
+#define DLL_VALID false
+
+#if defined(Q_OS_DARWIN)
+# undef bundle_VALID
+# undef dylib_VALID
+# undef so_VALID
+# define bundle_VALID true
+# define dylib_VALID true
+# define so_VALID true
+# define SUFFIX ".dylib"
+# define PREFIX "lib"
+
+#elif defined(Q_OS_HPUX)
+# undef sl_VALID
+# define sl_VALID true
+# ifndef __ia64
+# define SUFFIX ".sl"
+# define PREFIX "lib"
+# else
+# undef so_VALID
+# define so_VALID true
+# define SUFFIX ".so"
+# define PREFIX "lib"
+# endif
+
+#elif defined(Q_OS_AIX)
+# undef a_VALID
+# undef so_VALID
+# define a_VALID true
+# define so_VALID true
+# define SUFFIX ".a"
+# define PREFIX "lib"
+
+#elif defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+# undef dll_VALID
+# define dll_VALID true
+# undef DLL_VALID
+# define DLL_VALID true
+# define SUFFIX ".dll"
+# define PREFIX ""
+
+#else // all other Unix
+# undef so_VALID
+# define so_VALID true
+# define SUFFIX ".so"
+# define PREFIX "lib"
+#endif
+
+static QString sys_qualifiedLibraryName(const QString &fileName)
+{
+#if defined(Q_OS_SYMBIAN)
+ return PREFIX + fileName + SUFFIX;
+#else
+ QString currDir = QDir::currentPath();
+ return currDir + "/" + PREFIX + fileName + SUFFIX;
+#endif
+}
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+QT_FORWARD_DECLARE_CLASS(QLibrary)
+class tst_QLibrary : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QLibrary();
+ virtual ~tst_QLibrary();
+
+enum QLibraryOperation {
+ Load = 1,
+ Unload = 2,
+ Resolve = 3,
+ OperationMask = 7,
+ DontSetFileName = 0x100
+};
+private slots:
+ void load();
+ void load_data();
+ void library_data();
+ void resolve_data();
+ void resolve();
+ void unload_data();
+ void unload();
+ void unload_after_implicit_load();
+ void isLibrary_data();
+ void isLibrary();
+ void version_data();
+ void version();
+ void errorString_data();
+ void errorString();
+ void loadHints();
+ void loadHints_data();
+ void fileName_data();
+ void fileName();
+ void multipleInstancesForOneLibrary();
+
+#ifdef Q_OS_WINCE
+private:
+ QCoreApplication* app;
+#endif
+};
+
+tst_QLibrary::tst_QLibrary()
+
+{
+#ifdef Q_OS_WINCE
+ char* argv = "app";
+ int argc = 1;
+ app = new QCoreApplication(argc,&argv);
+#endif
+}
+
+tst_QLibrary::~tst_QLibrary()
+{
+#ifdef Q_OS_WINCE
+ app->quit();
+#endif
+}
+
+
+typedef int (*VersionFunction)(void);
+
+void tst_QLibrary::version_data()
+{
+ QTest::addColumn<QString>("lib");
+ QTest::addColumn<int>("loadversion");
+ QTest::addColumn<int>("resultversion");
+
+ QTest::newRow( "ok00, version 1" ) << "mylib" << 1 << 1;
+ QTest::newRow( "ok00, version 2" ) << "mylib" << 2 << 2;
+ QTest::newRow( "ok00, default to last version" ) << "mylib" << -1 << 2;
+}
+
+void tst_QLibrary::version()
+{
+ QFETCH( QString, lib );
+ QFETCH( int, loadversion );
+ QFETCH( int, resultversion );
+
+#if !defined(Q_OS_AIX) && !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+ QString currDir = QDir::currentPath();
+ QLibrary library( currDir + QLatin1Char('/') + lib, loadversion );
+ bool ok = library.load();
+ QVERIFY(ok);
+
+ VersionFunction fnVersion = (VersionFunction)library.resolve("mylibversion");
+ QVERIFY(fnVersion);
+ QCOMPARE(fnVersion(), resultversion);
+ QVERIFY(library.unload());
+#else
+ Q_UNUSED(lib);
+ Q_UNUSED(loadversion);
+ Q_UNUSED(resultversion);
+#endif
+
+}
+
+void tst_QLibrary::load_data()
+{
+ QTest::addColumn<QString>("lib");
+ QTest::addColumn<bool>("result");
+
+#if defined(Q_OS_SYMBIAN)
+ QString currDir;
+#else
+ QString currDir = QDir::currentPath();
+#endif
+ QTest::newRow( "ok00" ) << currDir + "/mylib" << true;
+ QTest::newRow( "notexist" ) << currDir + "/nolib" << false;
+ QTest::newRow( "badlibrary" ) << currDir + "/qlibrary.pro" << false;
+
+#ifdef Q_OS_MAC
+ QTest::newRow("ok (libmylib ver. 1)") << currDir + "/libmylib" <<true;
+#endif
+
+# if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QTest::newRow( "ok01 (with suffix)" ) << currDir + "/mylib.dll" << true;
+ QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/mylib.dl2" << true;
+ QTest::newRow( "ok03 (with many dots)" ) << currDir + "/system.trolltech.test.mylib.dll" << true;
+# elif defined Q_OS_UNIX
+ QTest::newRow( "ok01 (with suffix)" ) << currDir + "/libmylib" SUFFIX << true;
+ QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/libmylib.so2" << true;
+ QTest::newRow( "ok03 (with many dots)" ) << currDir + "/system.trolltech.test.mylib.so" << true;
+# endif // Q_OS_UNIX
+}
+
+void tst_QLibrary::load()
+{
+ QFETCH( QString, lib );
+ QFETCH( bool, result );
+
+ QLibrary library( lib );
+ bool ok = library.load();
+ if ( result ) {
+ QVERIFY( ok );
+ QVERIFY(library.unload());
+ } else {
+ QVERIFY( !ok );
+ }
+}
+
+void tst_QLibrary::unload_data()
+{
+ QTest::addColumn<QString>("lib");
+ QTest::addColumn<bool>("result");
+
+#if defined(Q_OS_SYMBIAN)
+ QString currDir;
+#else
+ QString currDir = QDir::currentPath();
+#endif
+
+ QTest::newRow( "mylib" ) << currDir + "/mylib" << true;
+#ifdef Q_WS_MAC
+ if (QSysInfo::MacintoshVersion <= QSysInfo::MV_10_3)
+ QEXPECT_FAIL("mylib", "dlcompat cannot unload libraries", Continue);
+#endif
+ QTest::newRow( "ok01" ) << currDir + "/nolib" << false;
+}
+
+void tst_QLibrary::unload()
+{
+ QFETCH( QString, lib );
+ QFETCH( bool, result );
+
+ QLibrary library( lib );
+ library.load();
+ bool ok = library.unload();
+ if ( result ) {
+ QVERIFY( ok );
+ } else {
+ QVERIFY( !ok );
+ }
+}
+
+void tst_QLibrary::unload_after_implicit_load()
+{
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("SYMBIAN does not support symbols on non-STDDLL libraries.", SkipAll);
+#endif
+
+ QLibrary library( "./mylib" );
+ QFunctionPointer p = library.resolve("mylibversion");
+ QVERIFY(p); // Check if it was loaded
+ QVERIFY(library.isLoaded());
+ QVERIFY(library.unload());
+ QCOMPARE(library.isLoaded(), false);
+
+}
+
+void tst_QLibrary::resolve_data()
+{
+ QTest::addColumn<QString>("lib");
+ QTest::addColumn<QString>("symbol");
+ QTest::addColumn<bool>("goodPointer");
+
+#if defined(Q_OS_SYMBIAN)
+ QString currDir;
+#else
+ QString currDir = QDir::currentPath();
+#endif
+
+ QTest::newRow( "ok00" ) << currDir + "/mylib" << QString("mylibversion") << true;
+ QTest::newRow( "bad00" ) << currDir + "/mylib" << QString("nosym") << false;
+ QTest::newRow( "bad01" ) << currDir + "/nolib" << QString("nosym") << false;
+}
+
+void tst_QLibrary::resolve()
+{
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("SYMBIAN does not support symbols on non-STDDLL libraries.", SkipAll);
+#endif
+
+ typedef int (*testFunc)();
+ QFETCH( QString, lib );
+ QFETCH( QString, symbol );
+ QFETCH( bool, goodPointer );
+
+ QLibrary library( lib );
+ testFunc func = (testFunc) library.resolve( symbol.toLatin1() );
+ if ( goodPointer ) {
+ QVERIFY( func != 0 );
+ } else {
+ QVERIFY( func == 0 );
+ }
+ library.unload();
+}
+
+void tst_QLibrary::library_data()
+{
+ QTest::addColumn<QString>("lib");
+}
+
+void tst_QLibrary::isLibrary_data()
+{
+ QTest::addColumn<QString>("filename");
+ QTest::addColumn<bool>("valid");
+
+ // use the macros #defined at the top of the file
+ QTest::newRow("bad") << QString("mylib.bad") << false;
+ QTest::newRow(".a") << QString("mylib.a") << a_VALID;
+ QTest::newRow(".bundle") << QString("mylib.bundle") << bundle_VALID;
+ QTest::newRow(".dll") << QString("mylib.dll") << dll_VALID;
+ QTest::newRow(".DLL") << QString("MYLIB.DLL") << DLL_VALID;
+ QTest::newRow(".dl2" ) << QString("mylib.dl2") << false;
+ QTest::newRow(".dylib") << QString("mylib.dylib") << dylib_VALID;
+ QTest::newRow(".sl") << QString("mylib.sl") << sl_VALID;
+ QTest::newRow(".so") << QString("mylib.so") << so_VALID;
+ QTest::newRow(".so+version") << QString("mylib.so.0") << so_VALID;
+
+ // special tests:
+#ifndef Q_OS_MAC
+ QTest::newRow("version+.so") << QString("libc-2.7.so") << so_VALID;
+ QTest::newRow("version+.so+version") << QString("liboil-0.3.so.0.1.0") << so_VALID;
+#else
+ QTest::newRow("version+.so") << QString("libc-2.7.so") << false;
+ QTest::newRow("version+.so+version") << QString("liboil-0.3.so.0.1.0") << false;
+#endif
+#ifdef Q_OS_MAC
+ QTest::newRow("good (libmylib.1.0.0.dylib)") << QString("libmylib.1.0.0.dylib") << true;
+ QTest::newRow("good (libmylib.dylib)") << QString("libmylib.dylib") << true;
+ QTest::newRow("good (libmylib.so)") << QString("libmylib.so") << true;
+ QTest::newRow("good (libmylib.so.1.0.0)") << QString("libmylib.so.1.0.0") << true;
+
+ QTest::newRow("bad (libmylib.1.0.0.foo)") << QString("libmylib.1.0.0.foo") << false;
+#elif defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QTest::newRow("good (with many dots)" ) << "/system.trolltech.test.mylib.dll" << true;
+#endif
+}
+
+void tst_QLibrary::isLibrary()
+{
+ QFETCH( QString, filename );
+ QFETCH( bool, valid );
+
+ QCOMPARE(QLibrary::isLibrary(filename), valid);
+}
+
+void tst_QLibrary::errorString_data()
+{
+ QTest::addColumn<int>("operation");
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<bool>("success");
+ QTest::addColumn<QString>("errorString");
+
+#if defined(Q_OS_SYMBIAN)
+ QString currDir;
+#else
+ QString currDir = QDir::currentPath();
+
+ QString srcDir = SRCDIR;
+ if (srcDir.isEmpty())
+ srcDir = currDir;
+#endif
+
+ QTest::newRow("bad load()") << (int)Load << QString("nosuchlib") << false << QString("Cannot load library nosuchlib: .*");
+ QTest::newRow("call errorString() on QLibrary with no d-pointer (crashtest)") << (int)(Load | DontSetFileName) << QString() << false << QString("Unknown error");
+#ifdef Q_OS_WINCE
+ QTest::newRow("bad resolve") << (int)Resolve << currDir + "/mylib" << false << QString("Cannot resolve symbol \"nosuchsymbol\" in .*: .*");
+#else
+ QTest::newRow("bad resolve") << (int)Resolve << currDir + "/mylib" << false << QString("Cannot resolve symbol \"nosuchsymbol\" in \\S+: .*");
+#endif
+ QTest::newRow("good resolve") << (int)Resolve << currDir + "/mylib" << true << QString("Unknown error");
+
+#ifdef Q_OS_WIN
+ QTest::newRow("bad load() with .dll suffix") << (int)Load << QString("nosuchlib.dll") << false << QString("Cannot load library nosuchlib.dll: The specified module could not be found.");
+// QTest::newRow("bad unload") << (int)Unload << QString("nosuchlib.dll") << false << QString("QLibrary::unload_sys: Cannot unload nosuchlib.dll (The specified module could not be found.)");
+#elif defined Q_OS_MAC
+#elif defined Q_OS_SYMBIAN
+ QTest::newRow("load invalid file") << (int)Load << "tst_qlibrary.exe" << false << QString("Cannot load library.*");
+#else
+ QTest::newRow("load invalid file") << (int)Load << srcDir + "/library_path/invalid.so" << false << QString("Cannot load library.*");
+#endif
+}
+
+void tst_QLibrary::errorString()
+{
+ QFETCH(int, operation);
+ QFETCH(QString, fileName);
+ QFETCH(bool, success);
+ QFETCH(QString, errorString);
+
+#if defined(Q_OS_SYMBIAN)
+ if ( success )
+ {
+ QSKIP("SYMBIAN does not support symbols on non-STDDLL libraries.", SkipSingle );
+ }
+#endif
+
+ QLibrary lib;
+ if (!(operation & DontSetFileName)) {
+ lib.setFileName(fileName);
+ }
+
+ bool ok = false;
+ switch (operation & OperationMask) {
+ case Load:
+ ok = lib.load();
+ break;
+ case Unload:
+ ok = lib.load(); //###
+ ok = lib.unload();
+ break;
+ case Resolve: {
+ ok = lib.load();
+ QCOMPARE(ok, true);
+ if (success) {
+ ok = lib.resolve("mylibversion");
+ } else {
+ ok = lib.resolve("nosuchsymbol");
+ }
+ break;}
+ default:
+ QFAIL(qPrintable(QString("Unknown operation: %1").arg(operation)));
+ break;
+ }
+ QRegExp re(errorString);
+ QString libErrorString = lib.errorString();
+ QVERIFY(!lib.isLoaded() || lib.unload());
+ QVERIFY2(re.exactMatch(libErrorString), qPrintable(libErrorString));
+ QCOMPARE(ok, success);
+}
+
+void tst_QLibrary::loadHints_data()
+{
+ QTest::addColumn<QString>("lib");
+ QTest::addColumn<int>("loadHints");
+ QTest::addColumn<bool>("result");
+
+ QLibrary::LoadHints lh;
+#if defined(Q_OS_AIX)
+ if (QFile::exists("/usr/lib/libGL.a") || QFile::exists("/usr/X11R6/lib/libGL.a")) {
+# if QT_POINTER_SIZE == 4
+ QTest::newRow( "ok03 (Archive member)" ) << "libGL.a(shr.o)" << int(QLibrary::LoadArchiveMemberHint) << true;
+# else
+ QTest::newRow( "ok03 (Archive member)" ) << "libGL.a(shr_64.o)" << int(QLibrary::LoadArchiveMemberHint) << true;
+#endif
+ }
+#endif
+
+#if defined(Q_OS_SYMBIAN)
+ QString currDir;
+#else
+ QString currDir = QDir::currentPath();
+#endif
+
+ lh |= QLibrary::ResolveAllSymbolsHint;
+# if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QTest::newRow( "ok01 (with suffix)" ) << currDir + "/mylib.dll" << int(lh) << true;
+ QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/mylib.dl2" << int(lh) << true;
+ QTest::newRow( "ok03 (with many dots)" ) << currDir + "/system.trolltech.test.mylib.dll" << int(lh) << true;
+# elif defined Q_OS_UNIX
+ QTest::newRow( "ok01 (with suffix)" ) << currDir + "/libmylib" SUFFIX << int(lh) << true;
+ QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/libmylib.so2" << int(lh) << true;
+ QTest::newRow( "ok03 (with many dots)" ) << currDir + "/system.trolltech.test.mylib.so" << int(lh) << true;
+# endif // Q_OS_UNIX
+}
+
+void tst_QLibrary::loadHints()
+{
+ QFETCH( QString, lib );
+ QFETCH( int, loadHints);
+ QFETCH( bool, result );
+ //QLibrary library( lib );
+ QLibrary library;
+ QLibrary::LoadHints lh(loadHints);
+ if (int(loadHints) != 0) {
+ lh |= library.loadHints();
+ library.setLoadHints(lh);
+ }
+ library.setFileName(lib);
+ QCOMPARE(library.loadHints(), lh);
+ bool ok = library.load();
+ if ( result ) {
+ QVERIFY( ok );
+ QVERIFY(library.unload());
+ } else {
+ QVERIFY( !ok );
+ }
+}
+
+void tst_QLibrary::fileName_data()
+{
+ QTest::addColumn<QString>("libName");
+ QTest::addColumn<QString>("expectedFilename");
+
+ QTest::newRow( "ok02" ) << sys_qualifiedLibraryName(QLatin1String("mylib"))
+ << sys_qualifiedLibraryName(QLatin1String("mylib"));
+#ifdef Q_WS_WIN
+#ifndef Q_OS_WINCE
+ QTest::newRow( "ok03" ) << "user32"
+ << "USER32.dll";
+#else
+ QTest::newRow( "ok03" ) << "coredll"
+ << "coredll.dll";
+#endif
+#endif
+}
+
+void tst_QLibrary::fileName()
+{
+ QFETCH( QString, libName);
+ QFETCH( QString, expectedFilename);
+
+ QLibrary lib(libName);
+ bool ok = lib.load();
+ if (!ok) {
+ qDebug() << lib.errorString();
+ }
+
+ QVERIFY(ok);
+#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+ QCOMPARE(lib.fileName().toLower(), expectedFilename.toLower());
+#else
+ QCOMPARE(lib.fileName(), expectedFilename);
+#endif
+ QVERIFY(lib.unload());
+
+}
+
+void tst_QLibrary::multipleInstancesForOneLibrary()
+{
+#if defined(Q_OS_SYMBIAN)
+ QString lib = "/mylib";
+#else
+ QString lib = QDir::currentPath() + "/mylib";
+#endif
+
+ {
+ QLibrary lib1(lib);
+ QLibrary lib2(lib);
+ QCOMPARE(lib1.isLoaded(), false);
+ QCOMPARE(lib2.isLoaded(), false);
+ lib1.load();
+ QCOMPARE(lib1.isLoaded(), true);
+ QCOMPARE(lib2.isLoaded(), true);
+ QCOMPARE(lib1.unload(), true);
+ QCOMPARE(lib1.isLoaded(), false);
+ QCOMPARE(lib2.isLoaded(), false);
+ lib1.load();
+ lib2.load();
+ QCOMPARE(lib1.isLoaded(), true);
+ QCOMPARE(lib2.isLoaded(), true);
+ QCOMPARE(lib1.unload(), false);
+ QCOMPARE(lib1.isLoaded(), true);
+ QCOMPARE(lib2.isLoaded(), true);
+ QCOMPARE(lib2.unload(), true);
+ QCOMPARE(lib1.isLoaded(), false);
+ QCOMPARE(lib2.isLoaded(), false);
+
+ // Finally; unload on that is already unloaded
+ QCOMPARE(lib1.unload(), false);
+ }
+
+ //now let's try with a 3rd one that will go out of scope
+ {
+ QLibrary lib1(lib);
+ QCOMPARE(lib1.isLoaded(), false);
+ lib1.load();
+ QCOMPARE(lib1.isLoaded(), true);
+ }
+ QLibrary lib2(lib);
+ //lib2 should be loaded because lib1 was loaded and never unloaded
+ QCOMPARE(lib2.isLoaded(), true);
+
+/*
+ lib1.setLoadHints(QLibrary::ResolveAllSymbolsHint);
+ lib2.setLoadHints(QLibrary::ExportExternalSymbolHint);
+*/
+}
+
+QTEST_APPLESS_MAIN(tst_QLibrary)
+#include "tst_qlibrary.moc"
diff --git a/tests/auto/corelib/plugin/qplugin/.gitignore b/tests/auto/corelib/plugin/qplugin/.gitignore
new file mode 100644
index 0000000000..671b21a458
--- /dev/null
+++ b/tests/auto/corelib/plugin/qplugin/.gitignore
@@ -0,0 +1,2 @@
+tst_qplugin
+plugins
diff --git a/tests/auto/corelib/plugin/qplugin/debugplugin/debugplugin.pro b/tests/auto/corelib/plugin/qplugin/debugplugin/debugplugin.pro
new file mode 100644
index 0000000000..d0762fc101
--- /dev/null
+++ b/tests/auto/corelib/plugin/qplugin/debugplugin/debugplugin.pro
@@ -0,0 +1,11 @@
+TEMPLATE = lib
+CONFIG += plugin debug
+CONFIG -= release debug_and_release
+SOURCES = main.cpp
+QT = core
+DESTDIR = ../plugins
+
+symbian: {
+ TARGET.EPOCALLOWDLLDATA=1
+ TARGET.CAPABILITY=ALL -TCB
+}
diff --git a/tests/auto/corelib/plugin/qplugin/debugplugin/main.cpp b/tests/auto/corelib/plugin/qplugin/debugplugin/main.cpp
new file mode 100644
index 0000000000..b1538963d8
--- /dev/null
+++ b/tests/auto/corelib/plugin/qplugin/debugplugin/main.cpp
@@ -0,0 +1,43 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtPlugin>
+
+Q_EXPORT_PLUGIN2(DebugPlugin, QObject)
diff --git a/tests/auto/corelib/plugin/qplugin/qplugin.pro b/tests/auto/corelib/plugin/qplugin/qplugin.pro
new file mode 100644
index 0000000000..37a12da732
--- /dev/null
+++ b/tests/auto/corelib/plugin/qplugin/qplugin.pro
@@ -0,0 +1,28 @@
+QT = core
+TEMPLATE = subdirs
+win32 {
+ exists($$[QT_INSTALL_LIBS]/QtCore4.dll) {
+ SUBDIRS = releaseplugin
+ }
+ exists($$[QT_INSTALL_LIBS]/QtCored4.dll) {
+ SUBDIRS += debugplugin
+ }
+}
+mac {
+ CONFIG(debug, debug|release): {
+ SUBDIRS += debugplugin
+ tst_qplugin_pro.depends += debugplugin
+ }
+ CONFIG(release, debug|release): {
+ SUBDIRS += releaseplugin
+ tst_qplugin_pro.depends += releaseplugin
+ }
+}
+!win32:!mac:{
+ SUBDIRS = debugplugin releaseplugin
+ tst_qplugin_pro.depends += debugplugin releaseplugin
+}
+SUBDIRS += tst_qplugin.pro
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/plugin/qplugin/releaseplugin/main.cpp b/tests/auto/corelib/plugin/qplugin/releaseplugin/main.cpp
new file mode 100644
index 0000000000..3be9a7415d
--- /dev/null
+++ b/tests/auto/corelib/plugin/qplugin/releaseplugin/main.cpp
@@ -0,0 +1,43 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtPlugin>
+
+Q_EXPORT_PLUGIN2(ReleasePlugin, QObject)
diff --git a/tests/auto/corelib/plugin/qplugin/releaseplugin/releaseplugin.pro b/tests/auto/corelib/plugin/qplugin/releaseplugin/releaseplugin.pro
new file mode 100644
index 0000000000..ce66aaf7cb
--- /dev/null
+++ b/tests/auto/corelib/plugin/qplugin/releaseplugin/releaseplugin.pro
@@ -0,0 +1,11 @@
+TEMPLATE = lib
+CONFIG += plugin release
+CONFIG -= debug debug_and_release
+SOURCES = main.cpp
+QT = core
+DESTDIR = ../plugins
+
+symbian: {
+ TARGET.EPOCALLOWDLLDATA=1
+ TARGET.CAPABILITY=ALL -TCB
+}
diff --git a/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp b/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp
new file mode 100644
index 0000000000..c7ea963225
--- /dev/null
+++ b/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp
@@ -0,0 +1,120 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtTest/QtTest>
+
+#include <QCoreApplication>
+#include <QDebug>
+#include <QDir>
+#include <QPluginLoader>
+
+class tst_QPlugin : public QObject
+{
+ Q_OBJECT
+
+ QDir dir;
+
+public:
+ tst_QPlugin();
+
+private slots:
+ void loadDebugPlugin();
+ void loadReleasePlugin();
+};
+
+tst_QPlugin::tst_QPlugin()
+ : dir("plugins")
+{
+}
+
+void tst_QPlugin::loadDebugPlugin()
+{
+ foreach (QString fileName, dir.entryList(QStringList() << "*debug*", QDir::Files)) {
+ if (!QLibrary::isLibrary(fileName))
+ continue;
+ QPluginLoader loader(dir.filePath(fileName));
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
+ // we can always load a plugin on unix
+ QVERIFY(loader.load());
+ QObject *object = loader.instance();
+ QVERIFY(object != 0);
+#else
+ // loading a plugin is dependent on which lib we are running against
+# if defined(QT_NO_DEBUG)
+ // release build, we cannot load debug plugins
+ QVERIFY(!loader.load());
+# else
+ // debug build, we can load debug plugins
+ QVERIFY(loader.load());
+ QObject *object = loader.instance();
+ QVERIFY(object != 0);
+# endif
+#endif
+ }
+}
+
+void tst_QPlugin::loadReleasePlugin()
+{
+ foreach (QString fileName, dir.entryList(QStringList() << "*release*", QDir::Files)) {
+ if (!QLibrary::isLibrary(fileName))
+ continue;
+ QPluginLoader loader(dir.filePath(fileName));
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
+ // we can always load a plugin on unix
+ QVERIFY(loader.load());
+ QObject *object = loader.instance();
+ QVERIFY(object != 0);
+#else
+ // loading a plugin is dependent on which lib we are running against
+# if defined(QT_NO_DEBUG)
+ // release build, we can load debug plugins
+ QVERIFY(loader.load());
+ QObject *object = loader.instance();
+ QVERIFY(object != 0);
+# else
+ // debug build, we cannot load debug plugins
+ QVERIFY(!loader.load());
+# endif
+#endif
+ }
+}
+
+QTEST_MAIN(tst_QPlugin)
+#include "tst_qplugin.moc"
diff --git a/tests/auto/corelib/plugin/qplugin/tst_qplugin.pro b/tests/auto/corelib/plugin/qplugin/tst_qplugin.pro
new file mode 100644
index 0000000000..3629fb36a1
--- /dev/null
+++ b/tests/auto/corelib/plugin/qplugin/tst_qplugin.pro
@@ -0,0 +1,16 @@
+load(qttest_p4)
+
+SOURCES = tst_qplugin.cpp
+QT = core
+
+wince*: {
+ plugins.files = plugins/*
+ plugins.path = plugins
+ DEPLOYMENT += plugins
+}
+
+symbian: {
+ rpDep.files = releaseplugin.dll debugplugin.dll
+ rpDep.path = plugins
+ DEPLOYMENT += rpDep dpDep
+}
diff --git a/tests/auto/corelib/plugin/qpluginloader/.gitignore b/tests/auto/corelib/plugin/qpluginloader/.gitignore
new file mode 100644
index 0000000000..6b2fa3a715
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/.gitignore
@@ -0,0 +1,2 @@
+tst_qpluginloader
+bin/
diff --git a/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.cpp b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.cpp
new file mode 100644
index 0000000000..70596c0113
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.cpp
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore/QString>
+#include "almostplugin.h"
+#include <QtCore/qplugin.h>
+
+QString AlmostPlugin::pluginName() const
+{
+ unresolvedSymbol();
+ return QLatin1String("Plugin ok");
+}
+
+Q_EXPORT_PLUGIN2(almostplugin, AlmostPlugin)
diff --git a/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.h b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.h
new file mode 100644
index 0000000000..0021180b36
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef ALMOSTPLUGIN_H
+#define ALMOSTPLUGIN_H
+
+#include <QObject>
+#include "../theplugin/plugininterface.h"
+
+class AlmostPlugin : public QObject, public PluginInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(PluginInterface)
+
+public:
+ QString pluginName() const;
+ void unresolvedSymbol() const;
+};
+
+#endif // ALMOSTPLUGIN_H
diff --git a/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.pro b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.pro
new file mode 100644
index 0000000000..b45509ef01
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.pro
@@ -0,0 +1,7 @@
+TEMPLATE = lib
+CONFIG += plugin
+HEADERS = almostplugin.h
+SOURCES = almostplugin.cpp
+TARGET = almostplugin
+DESTDIR = ../bin
+*-g++*:QMAKE_LFLAGS -= -Wl,--no-undefined
diff --git a/tests/auto/corelib/plugin/qpluginloader/elftest/.gitattributes b/tests/auto/corelib/plugin/qpluginloader/elftest/.gitattributes
new file mode 100644
index 0000000000..891192ca94
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/.gitattributes
@@ -0,0 +1,10 @@
+corrupt1.elf64.so set -crlf -diff
+corrupt2.elf64.so set -crlf -diff
+corrupt3.elf64.so set -crlf -diff
+debugobj.so set -crlf -diff
+garbage1.so set -crlf -diff
+garbage2.so set -crlf -diff
+garbage3.so set -crlf -diff
+garbage4.so set -crlf -diff
+garbage5.so set -crlf -diff
+
diff --git a/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt1.elf64.so b/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt1.elf64.so
new file mode 100755
index 0000000000..12ce7362dc
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt1.elf64.so
Binary files differ
diff --git a/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt2.elf64.so b/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt2.elf64.so
new file mode 100755
index 0000000000..11fdc2c118
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt2.elf64.so
Binary files differ
diff --git a/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt3.elf64.so b/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt3.elf64.so
new file mode 100755
index 0000000000..94a2bc3560
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/corrupt3.elf64.so
Binary files differ
diff --git a/tests/auto/corelib/plugin/qpluginloader/elftest/debugobj.so b/tests/auto/corelib/plugin/qpluginloader/elftest/debugobj.so
new file mode 100644
index 0000000000..f0ee0569a3
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/debugobj.so
Binary files differ
diff --git a/tests/auto/corelib/plugin/qpluginloader/elftest/garbage1.so b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage1.so
new file mode 100644
index 0000000000..0c7453077f
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage1.so
@@ -0,0 +1,4 @@
+p¶¤Ðã¨ø±ÕÛcdL+ôúæî&‘¿&÷ýeü¥=კ²
+•o°Ã’ÊŽI› §ÙÏmgƒ]!ÀZ
+L'Ž)t±
+ÙN»¸(e©× P)Y8öG ˆ6ß-yÈÏÀ ñŸ§÷—“"ô–ZÖÿ›kõ4â?Ë^náÁÇß5$ž’ôY=£ð#y \ No newline at end of file
diff --git a/tests/auto/corelib/plugin/qpluginloader/elftest/garbage2.so b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage2.so
new file mode 100644
index 0000000000..c06338e0c8
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage2.so
@@ -0,0 +1 @@
+£Çv.³Y‹¨tKëW3 \ No newline at end of file
diff --git a/tests/auto/corelib/plugin/qpluginloader/elftest/garbage3.so b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage3.so
new file mode 100644
index 0000000000..a24c523a77
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage3.so
@@ -0,0 +1 @@
+£ÝÈÈ‚åžT-õ«´ÊôÚ¥ Àä¸ï¨ì¾œÀi8¼_ñxÓõª¾I±Ð×®ÝxÎ=úØ4@þñ[¨—úBàKS$ú \ No newline at end of file
diff --git a/tests/auto/corelib/plugin/qpluginloader/elftest/garbage4.so b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage4.so
new file mode 100644
index 0000000000..4f45cf5157
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage4.so
@@ -0,0 +1 @@
+¶ !¦\~çU­u³†:9©ˆ œ§T+91ˆQ¬EøåÇšx¨ng5Óã—zhŒ–…ÿÆ^t™ŠµŽ¦'ÆÎmm*ˈdXH;vw+ªG“²ÃàØ ¨9Lƒ0! \ No newline at end of file
diff --git a/tests/auto/corelib/plugin/qpluginloader/elftest/garbage5.so b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage5.so
new file mode 100644
index 0000000000..f8c0a1d544
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/elftest/garbage5.so
@@ -0,0 +1,2 @@
+ïÌô’Q²
+ãµ-¢9Ò \ No newline at end of file
diff --git a/tests/auto/corelib/plugin/qpluginloader/lib/lib.pro b/tests/auto/corelib/plugin/qpluginloader/lib/lib.pro
new file mode 100644
index 0000000000..ce9bf13c25
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/lib/lib.pro
@@ -0,0 +1,18 @@
+TEMPLATE = lib
+CONFIG += dll
+CONFIG -= staticlib
+SOURCES = mylib.c
+TARGET = tst_qpluginloaderlib
+DESTDIR = ../bin
+QT = core
+
+win32-msvc: DEFINES += WIN32_MSVC
+win32-borland: DEFINES += WIN32_BORLAND
+
+#no special install rule for the library used by test
+INSTALLS =
+
+symbian: {
+ TARGET.CAPABILITY=ALL -TCB
+}
+
diff --git a/tests/auto/corelib/plugin/qpluginloader/lib/mylib.c b/tests/auto/corelib/plugin/qpluginloader/lib/mylib.c
new file mode 100644
index 0000000000..dc43c35815
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/lib/mylib.c
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qglobal.h>
+
+#if defined(Q_CC_MSVC) || defined(Q_CC_MSVC_NET) || defined(Q_CC_BOR)
+#define LIB_EXPORT __declspec(dllexport)
+#else
+#define LIB_EXPORT
+#endif
+
+#if defined(Q_CC_BOR)
+# define BORLAND_STDCALL __stdcall
+#else
+# define BORLAND_STDCALL
+#endif
+
+LIB_EXPORT int BORLAND_STDCALL version()
+{
+ return 1;
+}
+
diff --git a/tests/auto/corelib/plugin/qpluginloader/qpluginloader.pro b/tests/auto/corelib/plugin/qpluginloader/qpluginloader.pro
new file mode 100644
index 0000000000..6e41b4c96a
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/qpluginloader.pro
@@ -0,0 +1,14 @@
+QT = core
+TEMPLATE = subdirs
+CONFIG += ordered
+SUBDIRS = lib \
+ theplugin \
+ tst
+!win32: !macx-*: !symbian: SUBDIRS += almostplugin
+TARGET = tst_qpluginloader
+
+# no special install rule for subdir
+INSTALLS =
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/plugin/qpluginloader/theplugin/plugininterface.h b/tests/auto/corelib/plugin/qpluginloader/theplugin/plugininterface.h
new file mode 100644
index 0000000000..48d8443ba1
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/theplugin/plugininterface.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PLUGININTERFACE_H
+#define PLUGININTERFACE_H
+
+struct PluginInterface {
+ virtual ~PluginInterface() {}
+ virtual QString pluginName() const = 0;
+};
+
+QT_BEGIN_NAMESPACE
+Q_DECLARE_INTERFACE(PluginInterface, "com.trolltect.autotests.plugininterface/1.0")
+QT_END_NAMESPACE
+
+#endif // PLUGININTERFACE_H
+
diff --git a/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp
new file mode 100644
index 0000000000..fdf599c875
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore/QString>
+#include "theplugin.h"
+#include <QtCore/qplugin.h>
+
+QString ThePlugin::pluginName() const
+{
+ return QLatin1String("Plugin ok");
+}
+
+Q_EXPORT_PLUGIN2(theplugin, ThePlugin)
+
diff --git a/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.h b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.h
new file mode 100644
index 0000000000..5b738696e0
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef THEPLUGIN_H
+#define THEPLUGIN_H
+
+#include <QObject>
+#include "plugininterface.h"
+
+class ThePlugin : public QObject, public PluginInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(PluginInterface)
+
+public:
+ virtual QString pluginName() const;
+};
+
+#endif // THEPLUGIN_H
+
diff --git a/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.pro b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.pro
new file mode 100644
index 0000000000..44b46b439f
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.pro
@@ -0,0 +1,11 @@
+TEMPLATE = lib
+CONFIG += plugin
+HEADERS = theplugin.h
+SOURCES = theplugin.cpp
+TARGET = $$qtLibraryTarget(theplugin)
+DESTDIR = ../bin
+
+symbian: {
+ TARGET.EPOCALLOWDLLDATA=1
+ TARGET.CAPABILITY=ALL -TCB
+}
diff --git a/tests/auto/corelib/plugin/qpluginloader/tst/tst.pro b/tests/auto/corelib/plugin/qpluginloader/tst/tst.pro
new file mode 100644
index 0000000000..98de004263
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/tst/tst.pro
@@ -0,0 +1,34 @@
+load(qttest_p4)
+SOURCES += ../tst_qpluginloader.cpp
+TARGET = ../tst_qpluginloader
+QT = core
+HEADERS += ../theplugin/plugininterface.h
+
+win32 {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_qpluginloader
+} else {
+ TARGET = ../../release/tst_qpluginloader
+ }
+}
+
+
+wince*: {
+ addFiles.files = $$OUT_PWD/../bin/*.dll
+ addFiles.path = bin
+ DEPLOYMENT += addFiles
+}
+
+symbian: {
+ libDep.files = tst_qpluginloaderlib.dll
+ libDep.path = /sys/bin
+ pluginDep.files = theplugin.dll
+ pluginDep.path = bin
+
+ DEPLOYMENT += libDep pluginDep
+}
+
+DEFINES += SRCDIR=\\\"$$PWD/../\\\"
+mac*:CONFIG+=insignificant_test
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp b/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp
new file mode 100644
index 0000000000..76dbd48a14
--- /dev/null
+++ b/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp
@@ -0,0 +1,406 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qdir.h>
+#include <qpluginloader.h>
+#include "theplugin/plugininterface.h"
+
+// Helper macros to let us know if some suffixes are valid
+#define bundle_VALID false
+#define dylib_VALID false
+#define sl_VALID false
+#define a_VALID false
+#define so_VALID false
+#define dll_VALID false
+
+#if defined(Q_OS_DARWIN)
+# undef bundle_VALID
+# undef dylib_VALID
+# undef so_VALID
+# define bundle_VALID true
+# define dylib_VALID true
+# define so_VALID true
+# define SUFFIX ".dylib"
+# define PREFIX "lib"
+
+#elif defined(Q_OS_HPUX) && !defined(__ia64)
+# undef sl_VALID
+# define sl_VALID true
+# define SUFFIX ".sl"
+# define PREFIX "lib"
+
+#elif defined(Q_OS_AIX)
+# undef a_VALID
+# undef so_VALID
+# define a_VALID true
+# define so_VALID true
+# define SUFFIX ".so"
+# define PREFIX "lib"
+
+#elif defined(Q_OS_WIN)
+# undef dll_VALID
+# define dll_VALID true
+# ifdef QT_NO_DEBUG
+# define SUFFIX ".dll"
+# else
+# define SUFFIX "d.dll"
+# endif
+# define PREFIX ""
+
+#elif defined(Q_OS_SYMBIAN)
+# undef dll_VALID
+# define dll_VALID true
+# define SUFFIX ".dll"
+# define PREFIX ""
+
+#else // all other Unix
+# undef so_VALID
+# define so_VALID true
+# define SUFFIX ".so"
+# define PREFIX "lib"
+#endif
+
+static QString sys_qualifiedLibraryName(const QString &fileName)
+{
+ QString currDir = QDir::currentPath();
+ return currDir + "/bin/" + PREFIX + fileName + SUFFIX;
+}
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+QT_FORWARD_DECLARE_CLASS(QPluginLoader)
+class tst_QPluginLoader : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QPluginLoader();
+ virtual ~tst_QPluginLoader();
+
+private slots:
+ void errorString();
+ void loadHints();
+ void deleteinstanceOnUnload();
+ void checkingStubsFromDifferentDrives();
+ void loadDebugObj();
+ void loadCorruptElf();
+ void loadGarbage();
+};
+
+tst_QPluginLoader::tst_QPluginLoader()
+
+{
+}
+
+tst_QPluginLoader::~tst_QPluginLoader()
+{
+}
+
+//#define SHOW_ERRORS 1
+
+void tst_QPluginLoader::errorString()
+{
+#if defined(Q_OS_WINCE)
+ // On WinCE we need an QCoreApplication object for current dir
+ int argc = 0;
+ QCoreApplication app(argc,0);
+#endif
+ const QString unknown(QLatin1String("Unknown error"));
+
+ {
+ QPluginLoader loader; // default constructed
+ bool loaded = loader.load();
+#ifdef SHOW_ERRORS
+ qDebug() << loader.errorString();
+#endif
+ QCOMPARE(loaded, false);
+ QCOMPARE(loader.errorString(), unknown);
+
+ QObject *obj = loader.instance();
+#ifdef SHOW_ERRORS
+ qDebug() << loader.errorString();
+#endif
+ QCOMPARE(obj, static_cast<QObject*>(0));
+ QCOMPARE(loader.errorString(), unknown);
+
+ bool unloaded = loader.unload();
+#ifdef SHOW_ERRORS
+ qDebug() << loader.errorString();
+#endif
+ QCOMPARE(unloaded, false);
+ QCOMPARE(loader.errorString(), unknown);
+ }
+ {
+ QPluginLoader loader( sys_qualifiedLibraryName("tst_qpluginloaderlib")); //not a plugin
+ bool loaded = loader.load();
+#ifdef SHOW_ERRORS
+ qDebug() << loader.errorString();
+#endif
+ QCOMPARE(loaded, false);
+ QVERIFY(loader.errorString() != unknown);
+
+ QObject *obj = loader.instance();
+#ifdef SHOW_ERRORS
+ qDebug() << loader.errorString();
+#endif
+ QCOMPARE(obj, static_cast<QObject*>(0));
+ QVERIFY(loader.errorString() != unknown);
+
+ bool unloaded = loader.unload();
+#ifdef SHOW_ERRORS
+ qDebug() << loader.errorString();
+#endif
+ QCOMPARE(unloaded, false);
+ QVERIFY(loader.errorString() != unknown);
+ }
+
+ {
+ QPluginLoader loader( sys_qualifiedLibraryName("nosuchfile")); //not a file
+ bool loaded = loader.load();
+#ifdef SHOW_ERRORS
+ qDebug() << loader.errorString();
+#endif
+ QCOMPARE(loaded, false);
+ QVERIFY(loader.errorString() != unknown);
+
+ QObject *obj = loader.instance();
+#ifdef SHOW_ERRORS
+ qDebug() << loader.errorString();
+#endif
+ QCOMPARE(obj, static_cast<QObject*>(0));
+ QVERIFY(loader.errorString() != unknown);
+
+ bool unloaded = loader.unload();
+#ifdef SHOW_ERRORS
+ qDebug() << loader.errorString();
+#endif
+ QCOMPARE(unloaded, false);
+ QVERIFY(loader.errorString() != unknown);
+ }
+
+#if !defined Q_OS_WIN && !defined Q_OS_MAC && !defined Q_OS_HPUX && !defined Q_OS_SYMBIAN
+ {
+ QPluginLoader loader( sys_qualifiedLibraryName("almostplugin")); //a plugin with unresolved symbols
+ loader.setLoadHints(QLibrary::ResolveAllSymbolsHint);
+ QCOMPARE(loader.load(), false);
+#ifdef SHOW_ERRORS
+ qDebug() << loader.errorString();
+#endif
+ QVERIFY(loader.errorString() != unknown);
+
+ QCOMPARE(loader.instance(), static_cast<QObject*>(0));
+#ifdef SHOW_ERRORS
+ qDebug() << loader.errorString();
+#endif
+ QVERIFY(loader.errorString() != unknown);
+
+ QCOMPARE(loader.unload(), false);
+#ifdef SHOW_ERRORS
+ qDebug() << loader.errorString();
+#endif
+ QVERIFY(loader.errorString() != unknown);
+ }
+#endif
+
+ {
+ QPluginLoader loader( sys_qualifiedLibraryName("theplugin")); //a plugin
+ QCOMPARE(loader.load(), true);
+ QCOMPARE(loader.errorString(), unknown);
+
+ QVERIFY(loader.instance() != static_cast<QObject*>(0));
+ QCOMPARE(loader.errorString(), unknown);
+
+ // Make sure that plugin really works
+ PluginInterface* theplugin = qobject_cast<PluginInterface*>(loader.instance());
+ QString pluginName = theplugin->pluginName();
+ QCOMPARE(pluginName, QLatin1String("Plugin ok"));
+
+ QCOMPARE(loader.unload(), true);
+ QCOMPARE(loader.errorString(), unknown);
+ }
+}
+
+void tst_QPluginLoader::loadHints()
+{
+ QPluginLoader loader;
+ QCOMPARE(loader.loadHints(), (QLibrary::LoadHints)0); //Do not crash
+ loader.setLoadHints(QLibrary::ResolveAllSymbolsHint);
+ loader.setFileName( sys_qualifiedLibraryName("theplugin")); //a plugin
+ QCOMPARE(loader.loadHints(), QLibrary::ResolveAllSymbolsHint);
+}
+
+void tst_QPluginLoader::deleteinstanceOnUnload()
+{
+ for (int pass = 0; pass < 2; ++pass) {
+ QPluginLoader loader1;
+ loader1.setFileName( sys_qualifiedLibraryName("theplugin")); //a plugin
+ if (pass == 0)
+ loader1.load(); // not recommended, instance() should do the job.
+ PluginInterface *instance1 = qobject_cast<PluginInterface*>(loader1.instance());
+ QVERIFY(instance1);
+ QCOMPARE(instance1->pluginName(), QLatin1String("Plugin ok"));
+
+ QPluginLoader loader2;
+ loader2.setFileName( sys_qualifiedLibraryName("theplugin")); //a plugin
+ if (pass == 0)
+ loader2.load(); // not recommended, instance() should do the job.
+ PluginInterface *instance2 = qobject_cast<PluginInterface*>(loader2.instance());
+ QCOMPARE(instance2->pluginName(), QLatin1String("Plugin ok"));
+
+ QSignalSpy spy1(loader1.instance(), SIGNAL(destroyed()));
+ QSignalSpy spy2(loader2.instance(), SIGNAL(destroyed()));
+ if (pass == 0) {
+ QCOMPARE(loader2.unload(), false); // refcount not reached 0, not really unloaded
+ QCOMPARE(spy1.count(), 0);
+ QCOMPARE(spy2.count(), 0);
+ }
+ QCOMPARE(instance1->pluginName(), QLatin1String("Plugin ok"));
+ QCOMPARE(instance2->pluginName(), QLatin1String("Plugin ok"));
+ QVERIFY(loader1.unload()); // refcount reached 0, did really unload
+ QCOMPARE(spy1.count(), 1);
+ QCOMPARE(spy2.count(), 1);
+ }
+}
+
+void tst_QPluginLoader::checkingStubsFromDifferentDrives()
+{
+#if defined(Q_OS_SYMBIAN)
+
+ // This test needs C-drive + some additional drive (driveForStubs)
+
+ const QString driveForStubs("E:/");// != "C:/"
+ const QString stubDir("system/temp/stubtest/");
+ const QString stubName("dummyStub.qtplugin");
+ const QString fullStubFileName(stubDir + stubName);
+ QDir dir(driveForStubs);
+ bool test1(false); bool test2(false);
+
+ // initial clean up
+ QFile::remove(driveForStubs + fullStubFileName);
+ dir.rmdir(driveForStubs + stubDir);
+
+ // create a stub dir and do stub drive check
+ if (!dir.mkpath(stubDir))
+ QSKIP("Required drive not available for this test", SkipSingle);
+
+ {// test without stub, should not be found
+ QPluginLoader loader("C:/" + fullStubFileName);
+ test1 = !loader.fileName().length();
+ }
+
+ // create a stub to defined drive
+ QFile tempFile(driveForStubs + fullStubFileName);
+ tempFile.open(QIODevice::ReadWrite);
+ QFileInfo fileInfo(tempFile);
+
+ {// now should be found even tried to find from C:
+ QPluginLoader loader("C:/" + fullStubFileName);
+ test2 = (loader.fileName() == fileInfo.absoluteFilePath());
+ }
+
+ // clean up
+ tempFile.close();
+ if (!QFile::remove(driveForStubs + fullStubFileName))
+ QWARN("Could not remove stub file");
+ if (!dir.rmdir(driveForStubs + stubDir))
+ QWARN("Could not remove stub directory");
+
+ // test after cleanup
+ QVERIFY(test1);
+ QVERIFY(test2);
+
+#endif//Q_OS_SYMBIAN
+}
+
+void tst_QPluginLoader::loadDebugObj()
+{
+#if defined (__ELF__)
+ QVERIFY(QFile::exists(SRCDIR "elftest/debugobj.so"));
+ QPluginLoader lib1(SRCDIR "elftest/debugobj.so");
+ QCOMPARE(lib1.load(), false);
+#endif
+}
+
+void tst_QPluginLoader::loadCorruptElf()
+{
+#if defined (__ELF__)
+if (sizeof(void*) == 8) {
+ QVERIFY(QFile::exists(SRCDIR "elftest/corrupt1.elf64.so"));
+
+ QPluginLoader lib1(SRCDIR "elftest/corrupt1.elf64.so");
+ QCOMPARE(lib1.load(), false);
+ QVERIFY(lib1.errorString().contains("not a valid Qt plugin"));
+
+ QPluginLoader lib2(SRCDIR "elftest/corrupt2.elf64.so");
+ QCOMPARE(lib2.load(), false);
+ QVERIFY(lib2.errorString().contains("not a valid Qt plugin"));
+
+ QPluginLoader lib3(SRCDIR "elftest/corrupt3.elf64.so");
+ QCOMPARE(lib3.load(), false);
+ QVERIFY(lib3.errorString().contains("not a valid Qt plugin"));
+} else if (sizeof(void*) == 4) {
+ QPluginLoader libW(SRCDIR "elftest/corrupt3.elf64.so");
+ QCOMPARE(libW.load(), false);
+ QVERIFY(libW.errorString().contains("architecture"));
+} else {
+ QFAIL("Please port QElfParser to this platform or blacklist this test.");
+}
+#endif
+}
+
+void tst_QPluginLoader::loadGarbage()
+{
+#if defined (Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+ for (int i=0; i<5; i++) {
+ QPluginLoader lib(QString(SRCDIR "elftest/garbage%1.so").arg(i));
+ QCOMPARE(lib.load(), false);
+#ifdef SHOW_ERRORS
+ qDebug() << lib.errorString();
+#endif
+ }
+#endif
+}
+
+QTEST_APPLESS_MAIN(tst_QPluginLoader)
+#include "tst_qpluginloader.moc"
diff --git a/tests/auto/corelib/plugin/quuid/.gitignore b/tests/auto/corelib/plugin/quuid/.gitignore
new file mode 100644
index 0000000000..4ef3142f0f
--- /dev/null
+++ b/tests/auto/corelib/plugin/quuid/.gitignore
@@ -0,0 +1 @@
+tst_quuid
diff --git a/tests/auto/corelib/plugin/quuid/quuid.pro b/tests/auto/corelib/plugin/quuid/quuid.pro
new file mode 100644
index 0000000000..461956f313
--- /dev/null
+++ b/tests/auto/corelib/plugin/quuid/quuid.pro
@@ -0,0 +1,7 @@
+TEMPLATE = subdirs
+
+SUBDIRS = testProcessUniqueness
+
+SUBDIRS += test
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/plugin/quuid/test/test.pro b/tests/auto/corelib/plugin/quuid/test/test.pro
new file mode 100644
index 0000000000..06ae3bd362
--- /dev/null
+++ b/tests/auto/corelib/plugin/quuid/test/test.pro
@@ -0,0 +1,29 @@
+load(qttest_p4)
+
+QT = core
+SOURCES += ../tst_quuid.cpp
+TARGET = tst_quuid
+
+CONFIG(debug_and_release_target) {
+ CONFIG(debug, debug|release) {
+ DESTDIR = ../debug
+ } else {
+ DESTDIR = ../release
+ }
+} else {
+ DESTDIR = ..
+}
+
+wince* {
+ addFile_processUniqueness.files = $$OUT_PWD/../testProcessUniqueness/testProcessUniqueness.exe
+ addFile_processUniqueness.path = testProcessUniqueness
+
+ DEPLOYMENT += addFile_processUniqueness
+}
+
+symbian {
+ binDep.files = testProcessUniqueness.exe
+ binDep.path = \\sys\\bin
+
+ DEPLOYMENT += binDep
+}
diff --git a/tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp b/tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp
new file mode 100644
index 0000000000..085f56539d
--- /dev/null
+++ b/tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <stdio.h>
+#include <QUuid>
+
+// This is a testcase for QTBUG-11213
+int main(int argc, char **argv)
+{
+ Q_UNUSED(argc)
+ Q_UNUSED(argv)
+
+ // First, break QUuid.
+ qrand();
+
+ // Now print a few uuids.
+ printf("%s", qPrintable(QUuid::createUuid().toString()));
+ printf("%s", qPrintable(QUuid::createUuid().toString()));
+ printf("%s", qPrintable(QUuid::createUuid().toString()));
+
+ // Done
+ return 0;
+}
+
diff --git a/tests/auto/corelib/plugin/quuid/testProcessUniqueness/testProcessUniqueness.pro b/tests/auto/corelib/plugin/quuid/testProcessUniqueness/testProcessUniqueness.pro
new file mode 100644
index 0000000000..88df1a25d7
--- /dev/null
+++ b/tests/auto/corelib/plugin/quuid/testProcessUniqueness/testProcessUniqueness.pro
@@ -0,0 +1,8 @@
+SOURCES = main.cpp
+CONFIG += console
+
+DESTDIR = ./
+
+# no install rule for application used by test
+INSTALLS =
+
diff --git a/tests/auto/corelib/plugin/quuid/tst_quuid.cpp b/tests/auto/corelib/plugin/quuid/tst_quuid.cpp
new file mode 100644
index 0000000000..5761ea1a8c
--- /dev/null
+++ b/tests/auto/corelib/plugin/quuid/tst_quuid.cpp
@@ -0,0 +1,337 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <quuid.h>
+
+
+
+#include <quuid.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QUuid : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QUuid();
+
+private slots:
+ void fromChar();
+ void toString();
+ void fromString();
+ void toByteArray();
+ void fromByteArray();
+ void toRfc4122();
+ void fromRfc4122();
+ void check_QDataStream();
+ void isNull();
+ void equal();
+ void notEqual();
+
+ // Only in Qt > 3.2.x
+ void generate();
+ void less();
+ void more();
+ void variants();
+ void versions();
+
+ void threadUniqueness();
+ void processUniqueness();
+
+ void hash();
+
+public:
+ // Variables
+ QUuid uuidA;
+ QUuid uuidB;
+};
+
+tst_QUuid::tst_QUuid()
+{
+ //"{fc69b59e-cc34-4436-a43c-ee95d128b8c5}";
+ uuidA = QUuid(0xfc69b59e, 0xcc34 ,0x4436 ,0xa4 ,0x3c ,0xee ,0x95 ,0xd1 ,0x28 ,0xb8 ,0xc5);
+
+ //"{1ab6e93a-b1cb-4a87-ba47-ec7e99039a7b}";
+ uuidB = QUuid(0x1ab6e93a ,0xb1cb ,0x4a87 ,0xba ,0x47 ,0xec ,0x7e ,0x99 ,0x03 ,0x9a ,0x7b);
+}
+
+void tst_QUuid::fromChar()
+{
+ QCOMPARE(uuidA, QUuid("{fc69b59e-cc34-4436-a43c-ee95d128b8c5}"));
+ QCOMPARE(uuidA, QUuid("fc69b59e-cc34-4436-a43c-ee95d128b8c5}"));
+ QCOMPARE(uuidA, QUuid("{fc69b59e-cc34-4436-a43c-ee95d128b8c5"));
+ QCOMPARE(uuidA, QUuid("fc69b59e-cc34-4436-a43c-ee95d128b8c5"));
+ QCOMPARE(QUuid(), QUuid("{fc69b59e-cc34-4436-a43c-ee95d128b8c"));
+ QCOMPARE(QUuid(), QUuid("{fc69b59e-cc34"));
+ QCOMPARE(QUuid(), QUuid("fc69b59e-cc34-"));
+ QCOMPARE(QUuid(), QUuid("fc69b59e-cc34"));
+ QCOMPARE(QUuid(), QUuid("cc34"));
+ QCOMPARE(QUuid(), QUuid(NULL));
+
+ QCOMPARE(uuidB, QUuid(QString("{1ab6e93a-b1cb-4a87-ba47-ec7e99039a7b}")));
+}
+
+void tst_QUuid::toString()
+{
+ QCOMPARE(uuidA.toString(), QString("{fc69b59e-cc34-4436-a43c-ee95d128b8c5}"));
+
+ QCOMPARE(uuidB.toString(), QString("{1ab6e93a-b1cb-4a87-ba47-ec7e99039a7b}"));
+}
+
+void tst_QUuid::fromString()
+{
+ QCOMPARE(uuidA, QUuid(QString("{fc69b59e-cc34-4436-a43c-ee95d128b8c5}")));
+ QCOMPARE(uuidA, QUuid(QString("fc69b59e-cc34-4436-a43c-ee95d128b8c5}")));
+ QCOMPARE(uuidA, QUuid(QString("{fc69b59e-cc34-4436-a43c-ee95d128b8c5")));
+ QCOMPARE(uuidA, QUuid(QString("fc69b59e-cc34-4436-a43c-ee95d128b8c5")));
+ QCOMPARE(QUuid(), QUuid(QString("{fc69b59e-cc34-4436-a43c-ee95d128b8c")));
+
+ QCOMPARE(uuidB, QUuid(QString("{1ab6e93a-b1cb-4a87-ba47-ec7e99039a7b}")));
+}
+
+void tst_QUuid::toByteArray()
+{
+ QCOMPARE(uuidA.toByteArray(), QByteArray("{fc69b59e-cc34-4436-a43c-ee95d128b8c5}"));
+
+ QCOMPARE(uuidB.toByteArray(), QByteArray("{1ab6e93a-b1cb-4a87-ba47-ec7e99039a7b}"));
+}
+
+void tst_QUuid::fromByteArray()
+{
+ QCOMPARE(uuidA, QUuid(QByteArray("{fc69b59e-cc34-4436-a43c-ee95d128b8c5}")));
+ QCOMPARE(uuidA, QUuid(QByteArray("fc69b59e-cc34-4436-a43c-ee95d128b8c5}")));
+ QCOMPARE(uuidA, QUuid(QByteArray("{fc69b59e-cc34-4436-a43c-ee95d128b8c5")));
+ QCOMPARE(uuidA, QUuid(QByteArray("fc69b59e-cc34-4436-a43c-ee95d128b8c5")));
+ QCOMPARE(QUuid(), QUuid(QByteArray("{fc69b59e-cc34-4436-a43c-ee95d128b8c")));
+
+ QCOMPARE(uuidB, QUuid(QByteArray("{1ab6e93a-b1cb-4a87-ba47-ec7e99039a7b}")));
+}
+
+void tst_QUuid::toRfc4122()
+{
+ QCOMPARE(uuidA.toRfc4122(), QByteArray::fromHex("fc69b59ecc344436a43cee95d128b8c5"));
+
+ QCOMPARE(uuidB.toRfc4122(), QByteArray::fromHex("1ab6e93ab1cb4a87ba47ec7e99039a7b"));
+}
+
+void tst_QUuid::fromRfc4122()
+{
+ QCOMPARE(uuidA, QUuid::fromRfc4122(QByteArray::fromHex("fc69b59ecc344436a43cee95d128b8c5")));
+
+ QCOMPARE(uuidB, QUuid::fromRfc4122(QByteArray::fromHex("1ab6e93ab1cb4a87ba47ec7e99039a7b")));
+}
+
+void tst_QUuid::check_QDataStream()
+{
+ QUuid tmp;
+ QByteArray ar;
+ {
+ QDataStream out(&ar,QIODevice::WriteOnly);
+ out.setByteOrder(QDataStream::BigEndian);
+ out << uuidA;
+ }
+ {
+ QDataStream in(&ar,QIODevice::ReadOnly);
+ in.setByteOrder(QDataStream::BigEndian);
+ in >> tmp;
+ QCOMPARE(uuidA, tmp);
+ }
+ {
+ QDataStream out(&ar,QIODevice::WriteOnly);
+ out.setByteOrder(QDataStream::LittleEndian);
+ out << uuidA;
+ }
+ {
+ QDataStream in(&ar,QIODevice::ReadOnly);
+ in.setByteOrder(QDataStream::LittleEndian);
+ in >> tmp;
+ QCOMPARE(uuidA, tmp);
+ }
+}
+
+void tst_QUuid::isNull()
+{
+ QVERIFY( !uuidA.isNull() );
+
+ QUuid should_be_null_uuid;
+ QVERIFY( should_be_null_uuid.isNull() );
+}
+
+
+void tst_QUuid::equal()
+{
+ QVERIFY( !(uuidA == uuidB) );
+
+ QUuid copy(uuidA);
+ QVERIFY(uuidA == copy);
+
+ QUuid assigned;
+ assigned = uuidA;
+ QVERIFY(uuidA == assigned);
+}
+
+
+void tst_QUuid::notEqual()
+{
+ QVERIFY( uuidA != uuidB );
+}
+
+
+void tst_QUuid::generate()
+{
+ QUuid shouldnt_be_null_uuidA = QUuid::createUuid();
+ QUuid shouldnt_be_null_uuidB = QUuid::createUuid();
+ QVERIFY( !shouldnt_be_null_uuidA.isNull() );
+ QVERIFY( !shouldnt_be_null_uuidB.isNull() );
+ QVERIFY( shouldnt_be_null_uuidA != shouldnt_be_null_uuidB );
+}
+
+
+void tst_QUuid::less()
+{
+ QVERIFY( !(uuidA < uuidB) );
+
+ QUuid null_uuid;
+ QVERIFY(null_uuid < uuidA); // Null uuid is always less than a valid one
+}
+
+
+void tst_QUuid::more()
+{
+ QVERIFY( uuidA > uuidB );
+
+ QUuid null_uuid;
+ QVERIFY( !(null_uuid > uuidA) ); // Null uuid is always less than a valid one
+}
+
+
+void tst_QUuid::variants()
+{
+ QVERIFY( uuidA.variant() == QUuid::DCE );
+ QVERIFY( uuidB.variant() == QUuid::DCE );
+
+ QUuid NCS = "{3a2f883c-4000-000d-0000-00fb40000000}";
+ QVERIFY( NCS.variant() == QUuid::NCS );
+}
+
+
+void tst_QUuid::versions()
+{
+ QVERIFY( uuidA.version() == QUuid::Random );
+ QVERIFY( uuidB.version() == QUuid::Random );
+
+ QUuid DCE_time= "{406c45a0-3b7e-11d0-80a3-0000c08810a7}";
+ QVERIFY( DCE_time.version() == QUuid::Time );
+
+ QUuid NCS = "{3a2f883c-4000-000d-0000-00fb40000000}";
+ QVERIFY( NCS.version() == QUuid::VerUnknown );
+}
+
+class UuidThread : public QThread
+{
+public:
+ QUuid uuid;
+
+ void run()
+ {
+ uuid = QUuid::createUuid();
+ }
+};
+
+void tst_QUuid::threadUniqueness()
+{
+ QVector<UuidThread *> threads(qMax(2, QThread::idealThreadCount()));
+ for (int i = 0; i < threads.count(); ++i)
+ threads[i] = new UuidThread;
+ for (int i = 0; i < threads.count(); ++i)
+ threads[i]->start();
+ for (int i = 0; i < threads.count(); ++i)
+ QVERIFY(threads[i]->wait(1000));
+ for (int i = 1; i < threads.count(); ++i)
+ QVERIFY(threads[0]->uuid != threads[i]->uuid);
+ qDeleteAll(threads);
+}
+
+void tst_QUuid::processUniqueness()
+{
+ QProcess process;
+ QString processOneOutput;
+ QString processTwoOutput;
+
+ // Start it once
+#ifdef Q_OS_MAC
+ process.start("testProcessUniqueness/testProcessUniqueness.app");
+#else
+ process.start("testProcessUniqueness/testProcessUniqueness");
+#endif
+ QVERIFY(process.waitForFinished());
+ processOneOutput = process.readAllStandardOutput();
+
+ // Start it twice
+#ifdef Q_OS_MAC
+ process.start("testProcessUniqueness/testProcessUniqueness.app");
+#else
+ process.start("testProcessUniqueness/testProcessUniqueness");
+#endif
+ QVERIFY(process.waitForFinished());
+ processTwoOutput = process.readAllStandardOutput();
+
+ // They should be *different*!
+ QVERIFY(processOneOutput != processTwoOutput);
+}
+
+void tst_QUuid::hash()
+{
+ uint h = qHash(uuidA);
+ QCOMPARE(qHash(uuidA), h);
+ QCOMPARE(qHash(QUuid(uuidA.toString())), h);
+}
+
+
+
+QTEST_MAIN(tst_QUuid)
+#include "tst_quuid.moc"
diff --git a/tests/auto/corelib/statemachine/qstate/qstate.pro b/tests/auto/corelib/statemachine/qstate/qstate.pro
new file mode 100644
index 0000000000..6ee7e0cd00
--- /dev/null
+++ b/tests/auto/corelib/statemachine/qstate/qstate.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+QT = core
+SOURCES += tst_qstate.cpp
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/statemachine/qstate/tst_qstate.cpp b/tests/auto/corelib/statemachine/qstate/tst_qstate.cpp
new file mode 100644
index 0000000000..5a9c8d9996
--- /dev/null
+++ b/tests/auto/corelib/statemachine/qstate/tst_qstate.cpp
@@ -0,0 +1,408 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include "qstate.h"
+#include "qstatemachine.h"
+#include "qsignaltransition.h"
+
+// Will try to wait for the condition while allowing event processing
+#define QTRY_COMPARE(__expr, __expected) \
+ do { \
+ const int __step = 50; \
+ const int __timeout = 5000; \
+ if ((__expr) != (__expected)) { \
+ QTest::qWait(0); \
+ } \
+ for (int __i = 0; __i < __timeout && ((__expr) != (__expected)); __i+=__step) { \
+ QTest::qWait(__step); \
+ } \
+ QCOMPARE(__expr, __expected); \
+ } while(0)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QState : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QState();
+ virtual ~tst_QState();
+
+private slots:
+#if 0
+ void test();
+#endif
+ void assignProperty();
+ void assignPropertyTwice();
+ void historyInitialState();
+ void transitions();
+
+private:
+ bool functionCalled;
+};
+
+tst_QState::tst_QState() : functionCalled(false)
+{
+}
+
+tst_QState::~tst_QState()
+{
+}
+
+#if 0
+void tst_QState::test()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+
+ QCOMPARE(s1->machine(), &machine);
+ QCOMPARE(s1->parentState(), &machine);
+ QCOMPARE(s1->initialState(), (QState*)0);
+ QVERIFY(s1->childStates().isEmpty());
+ QVERIFY(s1->transitions().isEmpty());
+
+ QCOMPARE(s1->isFinal(), false);
+ s1->setFinal(true);
+ QCOMPARE(s1->isFinal(), true);
+ s1->setFinal(false);
+ QCOMPARE(s1->isFinal(), false);
+
+ QCOMPARE(s1->isParallel(), false);
+ s1->setParallel(true);
+ QCOMPARE(s1->isParallel(), true);
+ s1->setParallel(false);
+ QCOMPARE(s1->isParallel(), false);
+
+ QCOMPARE(s1->isAtomic(), true);
+ QCOMPARE(s1->isCompound(), false);
+ QCOMPARE(s1->isComplex(), false);
+
+ QState *s11 = new QState(s1);
+ QCOMPARE(s11->parentState(), s1);
+ QCOMPARE(s11->isAtomic(), true);
+ QCOMPARE(s11->isCompound(), false);
+ QCOMPARE(s11->isComplex(), false);
+ QCOMPARE(s11->machine(), s1->machine());
+ QVERIFY(s11->isDescendantOf(s1));
+
+ QCOMPARE(s1->initialState(), (QState*)0);
+ QCOMPARE(s1->childStates().size(), 1);
+ QCOMPARE(s1->childStates().at(0), s11);
+
+ QCOMPARE(s1->isAtomic(), false);
+ QCOMPARE(s1->isCompound(), true);
+ QCOMPARE(s1->isComplex(), true);
+
+ s1->setParallel(true);
+ QCOMPARE(s1->isAtomic(), false);
+ QCOMPARE(s1->isCompound(), false);
+ QCOMPARE(s1->isComplex(), true);
+
+ QState *s12 = new QState(s1);
+ QCOMPARE(s12->parentState(), s1);
+ QCOMPARE(s12->isAtomic(), true);
+ QCOMPARE(s12->isCompound(), false);
+ QCOMPARE(s12->isComplex(), false);
+ QCOMPARE(s12->machine(), s1->machine());
+ QVERIFY(s12->isDescendantOf(s1));
+ QVERIFY(!s12->isDescendantOf(s11));
+
+ QCOMPARE(s1->initialState(), (QState*)0);
+ QCOMPARE(s1->childStates().size(), 2);
+ QCOMPARE(s1->childStates().at(0), s11);
+ QCOMPARE(s1->childStates().at(1), s12);
+
+ QCOMPARE(s1->isAtomic(), false);
+ QCOMPARE(s1->isCompound(), false);
+ QCOMPARE(s1->isComplex(), true);
+
+ s1->setParallel(false);
+ QCOMPARE(s1->isAtomic(), false);
+ QCOMPARE(s1->isCompound(), true);
+ QCOMPARE(s1->isComplex(), true);
+
+ s1->setInitialState(s11);
+ QCOMPARE(s1->initialState(), s11);
+
+ s1->setInitialState(0);
+ QCOMPARE(s1->initialState(), (QState*)0);
+
+ s1->setInitialState(s12);
+ QCOMPARE(s1->initialState(), s12);
+
+ QState *s13 = new QState();
+ s1->setInitialState(s13);
+ QCOMPARE(s13->parentState(), s1);
+ QCOMPARE(s1->childStates().size(), 3);
+ QCOMPARE(s1->childStates().at(0), s11);
+ QCOMPARE(s1->childStates().at(1), s12);
+ QCOMPARE(s1->childStates().at(2), s13);
+ QVERIFY(s13->isDescendantOf(s1));
+
+ QVERIFY(s12->childStates().isEmpty());
+
+ QState *s121 = new QState(s12);
+ QCOMPARE(s121->parentState(), s12);
+ QCOMPARE(s121->isAtomic(), true);
+ QCOMPARE(s121->isCompound(), false);
+ QCOMPARE(s121->isComplex(), false);
+ QCOMPARE(s121->machine(), s12->machine());
+ QVERIFY(s121->isDescendantOf(s12));
+ QVERIFY(s121->isDescendantOf(s1));
+ QVERIFY(!s121->isDescendantOf(s11));
+
+ QCOMPARE(s12->childStates().size(), 1);
+ QCOMPARE(s12->childStates().at(0), (QState*)s121);
+
+ QCOMPARE(s1->childStates().size(), 3);
+ QCOMPARE(s1->childStates().at(0), s11);
+ QCOMPARE(s1->childStates().at(1), s12);
+ QCOMPARE(s1->childStates().at(2), s13);
+
+ s11->addTransition(s12);
+ QCOMPARE(s11->transitions().size(), 1);
+ QCOMPARE(s11->transitions().at(0)->sourceState(), s11);
+ QCOMPARE(s11->transitions().at(0)->targetStates().size(), 1);
+ QCOMPARE(s11->transitions().at(0)->targetStates().at(0), s12);
+ QCOMPARE(s11->transitions().at(0)->eventType(), QEvent::None);
+
+ QState *s14 = new QState();
+ s12->addTransition(QList<QState*>() << s13 << s14);
+ QCOMPARE(s12->transitions().size(), 1);
+ QCOMPARE(s12->transitions().at(0)->sourceState(), s12);
+ QCOMPARE(s12->transitions().at(0)->targetStates().size(), 2);
+ QCOMPARE(s12->transitions().at(0)->targetStates().at(0), s13);
+ QCOMPARE(s12->transitions().at(0)->targetStates().at(1), s14);
+ QCOMPARE(s12->transitions().at(0)->eventType(), QEvent::None);
+
+ s13->addTransition(this, SIGNAL(destroyed()), s14);
+ QCOMPARE(s13->transitions().size(), 1);
+ QCOMPARE(s13->transitions().at(0)->sourceState(), s13);
+ QCOMPARE(s13->transitions().at(0)->targetStates().size(), 1);
+ QCOMPARE(s13->transitions().at(0)->targetStates().at(0), s14);
+ QCOMPARE(s13->transitions().at(0)->eventType(), QEvent::Signal);
+ QVERIFY(qobject_cast<QSignalTransition*>(s13->transitions().at(0)) != 0);
+
+ delete s13->transitions().at(0);
+ QCOMPARE(s13->transitions().size(), 0);
+
+ s12->addTransition(this, SIGNAL(destroyed()), s11);
+ QCOMPARE(s12->transitions().size(), 2);
+}
+#endif
+
+class TestClass: public QObject
+{
+ Q_OBJECT
+public:
+ TestClass() : called(false) {}
+ bool called;
+
+public slots:
+ void slot() { called = true; }
+
+
+};
+
+void tst_QState::assignProperty()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("fooBar", 10);
+
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(object, "fooBar", 20);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("fooBar").toInt(), 20);
+}
+
+void tst_QState::assignPropertyTwice()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("fooBar", 10);
+
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(object, "fooBar", 20);
+ s1->assignProperty(object, "fooBar", 30);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("fooBar").toInt(), 30);
+}
+
+class EventTestTransition: public QAbstractTransition
+{
+public:
+ EventTestTransition(QEvent::Type type, QState *targetState)
+ : QAbstractTransition(), m_type(type)
+ {
+ setTargetState(targetState);
+ }
+
+protected:
+ bool eventTest(QEvent *e)
+ {
+ return e->type() == m_type;
+ }
+
+ void onTransition(QEvent *) {}
+
+private:
+ QEvent::Type m_type;
+
+};
+
+void tst_QState::historyInitialState()
+{
+ QStateMachine machine;
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ QHistoryState *h1 = new QHistoryState(s2);
+
+ s2->setInitialState(h1);
+
+ QState *s3 = new QState(s2);
+ h1->setDefaultState(s3);
+
+ QState *s4 = new QState(s2);
+
+ s1->addTransition(new EventTestTransition(QEvent::User, s2));
+ s2->addTransition(new EventTestTransition(QEvent::User, s1));
+ s3->addTransition(new EventTestTransition(QEvent::Type(QEvent::User+1), s4));
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s3));
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s3));
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User+1)));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s4));
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s4));
+}
+
+void tst_QState::transitions()
+{
+ QState s1;
+ QState s2;
+
+ QVERIFY(s1.transitions().isEmpty());
+
+ QAbstractTransition *t1 = s1.addTransition(this, SIGNAL(destroyed()), &s2);
+ QVERIFY(t1 != 0);
+ QCOMPARE(s1.transitions().count(), 1);
+ QCOMPARE(s1.transitions().first(), t1);
+ QVERIFY(s2.transitions().isEmpty());
+
+ s1.removeTransition(t1);
+ QVERIFY(s1.transitions().isEmpty());
+
+ s1.addTransition(t1);
+ QCOMPARE(s1.transitions().count(), 1);
+ QCOMPARE(s1.transitions().first(), t1);
+
+ QAbstractTransition *t2 = new QEventTransition(&s1);
+ QCOMPARE(s1.transitions().count(), 2);
+ QVERIFY(s1.transitions().contains(t1));
+ QVERIFY(s1.transitions().contains(t2));
+
+ // Transitions from child states should not be reported.
+ QState *s21 = new QState(&s2);
+ QAbstractTransition *t3 = s21->addTransition(this, SIGNAL(destroyed()), &s2);
+ QVERIFY(s2.transitions().isEmpty());
+ QCOMPARE(s21->transitions().count(), 1);
+ QCOMPARE(s21->transitions().first(), t3);
+}
+
+QTEST_MAIN(tst_QState)
+#include "tst_qstate.moc"
diff --git a/tests/auto/corelib/statemachine/qstatemachine/qstatemachine.pro b/tests/auto/corelib/statemachine/qstatemachine/qstatemachine.pro
new file mode 100644
index 0000000000..9d057eb05f
--- /dev/null
+++ b/tests/auto/corelib/statemachine/qstatemachine/qstatemachine.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT += widgets
+QT += core core-private gui widgets
+SOURCES += tst_qstatemachine.cpp
+
diff --git a/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp b/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
new file mode 100644
index 0000000000..08181c17de
--- /dev/null
+++ b/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
@@ -0,0 +1,4448 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtCore/QCoreApplication>
+#include <QtWidgets/QPushButton>
+#include <QtWidgets/QGraphicsScene>
+#include <QtWidgets/QGraphicsSceneEvent>
+#include <QtWidgets/QGraphicsTextItem>
+
+#include "qstatemachine.h"
+#include "qstate.h"
+#include "qhistorystate.h"
+#include "qkeyeventtransition.h"
+#include "qmouseeventtransition.h"
+#include "private/qstate_p.h"
+#include "private/qstatemachine_p.h"
+
+// Will try to wait for the condition while allowing event processing
+#define QTRY_COMPARE(__expr, __expected) \
+ do { \
+ const int __step = 50; \
+ const int __timeout = 5000; \
+ if ((__expr) != (__expected)) { \
+ QTest::qWait(0); \
+ } \
+ for (int __i = 0; __i < __timeout && ((__expr) != (__expected)); __i+=__step) { \
+ QTest::qWait(__step); \
+ } \
+ QCOMPARE(__expr, __expected); \
+ } while(0)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+static int globalTick;
+
+// Run exec for a maximum of TIMEOUT msecs
+#define QCOREAPPLICATION_EXEC(TIMEOUT) \
+{ \
+ QTimer timer; \
+ timer.setSingleShot(true); \
+ timer.setInterval(TIMEOUT); \
+ timer.start(); \
+ connect(&timer, SIGNAL(timeout()), QCoreApplication::instance(), SLOT(quit())); \
+ QCoreApplication::exec(); \
+}
+
+class SignalEmitter : public QObject
+{
+Q_OBJECT
+ public:
+ SignalEmitter(QObject *parent = 0)
+ : QObject(parent) {}
+ void emitSignalWithNoArg()
+ { emit signalWithNoArg(); }
+ void emitSignalWithIntArg(int arg)
+ { emit signalWithIntArg(arg); }
+ void emitSignalWithStringArg(const QString &arg)
+ { emit signalWithStringArg(arg); }
+ void emitSignalWithDefaultArg()
+ { emit signalWithDefaultArg(); }
+Q_SIGNALS:
+ void signalWithNoArg();
+ void signalWithIntArg(int);
+ void signalWithStringArg(const QString &);
+ void signalWithDefaultArg(int i = 42);
+};
+
+class tst_QStateMachine : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QStateMachine();
+ virtual ~tst_QStateMachine();
+
+private slots:
+ void init();
+ void cleanup();
+
+ void rootState();
+ void machineWithParent();
+ void addAndRemoveState();
+ void stateEntryAndExit();
+ void assignProperty();
+ void assignPropertyWithAnimation();
+ void postEvent();
+ void cancelDelayedEvent();
+ void postDelayedEventAndStop();
+ void stopAndPostEvent();
+ void stateFinished();
+ void parallelStates();
+ void parallelRootState();
+ void allSourceToTargetConfigurations();
+ void signalTransitions();
+ void eventTransitions();
+ void graphicsSceneEventTransitions();
+ void historyStates();
+ void startAndStop();
+ void targetStateWithNoParent();
+ void targetStateDeleted();
+ void transitionToRootState();
+ void transitionFromRootState();
+ void transitionEntersParent();
+
+ void defaultErrorState();
+ void customGlobalErrorState();
+ void customLocalErrorStateInBrokenState();
+ void customLocalErrorStateInOtherState();
+ void customLocalErrorStateInParentOfBrokenState();
+ void customLocalErrorStateOverridesParent();
+ void errorStateHasChildren();
+ void errorStateHasErrors();
+ void errorStateIsRootState();
+ void errorStateEntersParentFirst();
+ void customErrorStateIsNull();
+ void clearError();
+ void historyStateHasNowhereToGo();
+ void historyStateAsInitialState();
+ void historyStateAfterRestart();
+ void brokenStateIsNeverEntered();
+ void customErrorStateNotInGraph();
+ void transitionToStateNotInGraph();
+ void restoreProperties();
+
+ void defaultGlobalRestorePolicy();
+ void globalRestorePolicySetToRestore();
+ void globalRestorePolicySetToDontRestore();
+
+ void noInitialStateForInitialState();
+
+ //void restorePolicyNotInherited();
+ //void mixedRestoreProperties();
+ //void setRestorePolicyToDoNotRestore();
+ //void setGlobalRestorePolicyToGlobalRestore();
+ //void restorePolicyOnChildState();
+
+ void transitionWithParent();
+ void transitionsFromParallelStateWithNoChildren();
+ void parallelStateTransition();
+ void parallelStateAssignmentsDone();
+ void nestedRestoreProperties();
+ void nestedRestoreProperties2();
+
+ void simpleAnimation();
+ void twoAnimations();
+ void twoAnimatedTransitions();
+ void playAnimationTwice();
+ void nestedTargetStateForAnimation();
+ void propertiesAssignedSignalTransitionsReuseAnimationGroup();
+ void animatedGlobalRestoreProperty();
+ void specificTargetValueOfAnimation();
+
+ void addDefaultAnimation();
+ void addDefaultAnimationWithUnusedAnimation();
+ void removeDefaultAnimation();
+ void overrideDefaultAnimationWithSpecific();
+
+// void addDefaultAnimationForSource();
+// void addDefaultAnimationForTarget();
+// void removeDefaultAnimationForSource();
+// void removeDefaultAnimationForTarget();
+// void overrideDefaultAnimationWithSource();
+// void overrideDefaultAnimationWithTarget();
+// void overrideDefaultSourceAnimationWithSpecific();
+// void overrideDefaultTargetAnimationWithSpecific();
+// void overrideDefaultTargetAnimationWithSource();
+
+ void nestedStateMachines();
+ void goToState();
+
+ void task260403_clonedSignals();
+ void postEventFromOtherThread();
+ void eventFilterForApplication();
+ void eventClassesExported();
+ void stopInTransitionToFinalState();
+ void stopInEventTest_data();
+ void stopInEventTest();
+};
+
+tst_QStateMachine::tst_QStateMachine()
+{
+}
+
+tst_QStateMachine::~tst_QStateMachine()
+{
+}
+
+class TestState : public QState
+{
+public:
+ enum Event {
+ Entry,
+ Exit
+ };
+ TestState(QState *parent)
+ : QState(parent) {}
+ QList<QPair<int, Event> > events;
+protected:
+ virtual void onEntry(QEvent *) {
+ events.append(qMakePair(globalTick++, Entry));
+ }
+ virtual void onExit(QEvent *) {
+ events.append(qMakePair(globalTick++, Exit));
+ }
+};
+
+class TestTransition : public QAbstractTransition
+{
+public:
+ TestTransition(QAbstractState *target)
+ : QAbstractTransition()
+ { setTargetState(target); }
+ QList<int> triggers;
+protected:
+ virtual bool eventTest(QEvent *) {
+ return true;
+ }
+ virtual void onTransition(QEvent *) {
+ triggers.append(globalTick++);
+ }
+};
+
+void tst_QStateMachine::init()
+{
+}
+
+void tst_QStateMachine::cleanup()
+{
+}
+
+class EventTransition : public QAbstractTransition
+{
+public:
+ EventTransition(QEvent::Type type, QAbstractState *target, QState *parent = 0)
+ : QAbstractTransition(parent), m_type(type)
+ { setTargetState(target); }
+protected:
+ virtual bool eventTest(QEvent *e) {
+ return (e->type() == m_type);
+ }
+ virtual void onTransition(QEvent *) {}
+private:
+ QEvent::Type m_type;
+};
+
+void tst_QStateMachine::transitionToRootState()
+{
+ QStateMachine machine;
+ machine.setObjectName("machine");
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initial");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QAbstractTransition *trans = new EventTransition(QEvent::User, &machine);
+ initialState->addTransition(trans);
+ QCOMPARE(trans->sourceState(), initialState);
+ QCOMPARE(trans->targetState(), static_cast<QAbstractState *>(&machine));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(initialState));
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: No common ancestor for targets and source of transition from state 'initial'");
+ QCoreApplication::processEvents();
+ QVERIFY(machine.configuration().isEmpty());
+ QVERIFY(!machine.isRunning());
+}
+
+void tst_QStateMachine::transitionFromRootState()
+{
+ QStateMachine machine;
+ QState *root = &machine;
+ QState *s1 = new QState(root);
+ EventTransition *trans = new EventTransition(QEvent::User, s1);
+ root->addTransition(trans);
+ QCOMPARE(trans->sourceState(), root);
+ QCOMPARE(trans->targetState(), static_cast<QAbstractState *>(s1));
+}
+
+void tst_QStateMachine::transitionEntersParent()
+{
+ QStateMachine machine;
+
+ QObject *entryController = new QObject(&machine);
+ entryController->setObjectName("entryController");
+ entryController->setProperty("greatGrandParentEntered", false);
+ entryController->setProperty("grandParentEntered", false);
+ entryController->setProperty("parentEntered", false);
+ entryController->setProperty("stateEntered", false);
+
+ QState *greatGrandParent = new QState();
+ greatGrandParent->setObjectName("grandParent");
+ greatGrandParent->assignProperty(entryController, "greatGrandParentEntered", true);
+ machine.addState(greatGrandParent);
+ machine.setInitialState(greatGrandParent);
+
+ QState *grandParent = new QState(greatGrandParent);
+ grandParent->setObjectName("grandParent");
+ grandParent->assignProperty(entryController, "grandParentEntered", true);
+
+ QState *parent = new QState(grandParent);
+ parent->setObjectName("parent");
+ parent->assignProperty(entryController, "parentEntered", true);
+
+ QState *state = new QState(parent);
+ state->setObjectName("state");
+ state->assignProperty(entryController, "stateEntered", true);
+
+ QState *initialStateOfGreatGrandParent = new QState(greatGrandParent);
+ initialStateOfGreatGrandParent->setObjectName("initialStateOfGreatGrandParent");
+ greatGrandParent->setInitialState(initialStateOfGreatGrandParent);
+
+ initialStateOfGreatGrandParent->addTransition(new EventTransition(QEvent::User, state));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(entryController->property("greatGrandParentEntered").toBool(), true);
+ QCOMPARE(entryController->property("grandParentEntered").toBool(), false);
+ QCOMPARE(entryController->property("parentEntered").toBool(), false);
+ QCOMPARE(entryController->property("stateEntered").toBool(), false);
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(greatGrandParent));
+ QVERIFY(machine.configuration().contains(initialStateOfGreatGrandParent));
+
+ entryController->setProperty("greatGrandParentEntered", false);
+ entryController->setProperty("grandParentEntered", false);
+ entryController->setProperty("parentEntered", false);
+ entryController->setProperty("stateEntered", false);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(entryController->property("greatGrandParentEntered").toBool(), false);
+ QCOMPARE(entryController->property("grandParentEntered").toBool(), true);
+ QCOMPARE(entryController->property("parentEntered").toBool(), true);
+ QCOMPARE(entryController->property("stateEntered").toBool(), true);
+ QCOMPARE(machine.configuration().count(), 4);
+ QVERIFY(machine.configuration().contains(greatGrandParent));
+ QVERIFY(machine.configuration().contains(grandParent));
+ QVERIFY(machine.configuration().contains(parent));
+ QVERIFY(machine.configuration().contains(state));
+}
+
+void tst_QStateMachine::defaultErrorState()
+{
+ QStateMachine machine;
+ QCOMPARE(machine.errorState(), reinterpret_cast<QAbstractState *>(0));
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("MyInitialState");
+
+ machine.addState(brokenState);
+ machine.setInitialState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'MyInitialState'");
+
+ // initialState has no initial state
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.error(), QStateMachine::NoInitialStateError);
+ QCOMPARE(machine.errorString(), QString::fromLatin1("Missing initial state in compound state 'MyInitialState'"));
+ QCOMPARE(machine.isRunning(), false);
+}
+
+class CustomErrorState: public QState
+{
+public:
+ CustomErrorState(QStateMachine *machine, QState *parent = 0)
+ : QState(parent), error(QStateMachine::NoError), m_machine(machine)
+ {
+ }
+
+ void onEntry(QEvent *)
+ {
+ error = m_machine->error();
+ errorString = m_machine->errorString();
+ }
+
+ QStateMachine::Error error;
+ QString errorString;
+
+private:
+ QStateMachine *m_machine;
+};
+
+void tst_QStateMachine::customGlobalErrorState()
+{
+ QStateMachine machine;
+
+ CustomErrorState *customErrorState = new CustomErrorState(&machine);
+ customErrorState->setObjectName("customErrorState");
+ machine.addState(customErrorState);
+ machine.setErrorState(customErrorState);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("brokenState");
+ machine.addState(brokenState);
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.errorState(), static_cast<QAbstractState*>(customErrorState));
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(initialState));
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(initialState));
+
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), true);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(customErrorState));
+ QCOMPARE(customErrorState->error, QStateMachine::NoInitialStateError);
+ QCOMPARE(customErrorState->errorString, QString::fromLatin1("Missing initial state in compound state 'brokenState'"));
+ QCOMPARE(machine.error(), QStateMachine::NoInitialStateError);
+ QCOMPARE(machine.errorString(), QString::fromLatin1("Missing initial state in compound state 'brokenState'"));
+}
+
+void tst_QStateMachine::customLocalErrorStateInBrokenState()
+{
+ QStateMachine machine;
+ CustomErrorState *customErrorState = new CustomErrorState(&machine);
+ machine.addState(customErrorState);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("brokenState");
+ machine.addState(brokenState);
+ brokenState->setErrorState(customErrorState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), true);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(customErrorState));
+ QCOMPARE(customErrorState->error, QStateMachine::NoInitialStateError);
+}
+
+void tst_QStateMachine::customLocalErrorStateInOtherState()
+{
+ QStateMachine machine;
+ CustomErrorState *customErrorState = new CustomErrorState(&machine);
+ machine.addState(customErrorState);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ QTest::ignoreMessage(QtWarningMsg, "QState::setErrorState: error state cannot belong to a different state machine");
+ initialState->setErrorState(customErrorState);
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("brokenState");
+
+ machine.addState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'brokenState'");
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), false);
+}
+
+void tst_QStateMachine::customLocalErrorStateInParentOfBrokenState()
+{
+ QStateMachine machine;
+ CustomErrorState *customErrorState = new CustomErrorState(&machine);
+ machine.addState(customErrorState);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *parentOfBrokenState = new QState();
+ machine.addState(parentOfBrokenState);
+ parentOfBrokenState->setObjectName("parentOfBrokenState");
+ parentOfBrokenState->setErrorState(customErrorState);
+
+ QState *brokenState = new QState(parentOfBrokenState);
+ brokenState->setObjectName("brokenState");
+ parentOfBrokenState->setInitialState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), true);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(customErrorState));
+}
+
+void tst_QStateMachine::customLocalErrorStateOverridesParent()
+{
+ QStateMachine machine;
+ CustomErrorState *customErrorStateForParent = new CustomErrorState(&machine);
+ machine.addState(customErrorStateForParent);
+
+ CustomErrorState *customErrorStateForBrokenState = new CustomErrorState(&machine);
+ machine.addState(customErrorStateForBrokenState);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *parentOfBrokenState = new QState();
+ machine.addState(parentOfBrokenState);
+ parentOfBrokenState->setObjectName("parentOfBrokenState");
+ parentOfBrokenState->setErrorState(customErrorStateForParent);
+
+ QState *brokenState = new QState(parentOfBrokenState);
+ brokenState->setObjectName("brokenState");
+ brokenState->setErrorState(customErrorStateForBrokenState);
+ parentOfBrokenState->setInitialState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(customErrorStateForBrokenState));
+ QCOMPARE(customErrorStateForBrokenState->error, QStateMachine::NoInitialStateError);
+ QCOMPARE(customErrorStateForParent->error, QStateMachine::NoError);
+}
+
+void tst_QStateMachine::errorStateHasChildren()
+{
+ QStateMachine machine;
+ CustomErrorState *customErrorState = new CustomErrorState(&machine);
+ customErrorState->setObjectName("customErrorState");
+ machine.addState(customErrorState);
+
+ machine.setErrorState(customErrorState);
+
+ QState *childOfErrorState = new QState(customErrorState);
+ childOfErrorState->setObjectName("childOfErrorState");
+ customErrorState->setInitialState(childOfErrorState);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("brokenState");
+ machine.addState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), true);
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(customErrorState));
+ QVERIFY(machine.configuration().contains(childOfErrorState));
+}
+
+
+void tst_QStateMachine::errorStateHasErrors()
+{
+ QStateMachine machine;
+ CustomErrorState *customErrorState = new CustomErrorState(&machine);
+ customErrorState->setObjectName("customErrorState");
+ machine.addState(customErrorState);
+
+ machine.setErrorState(customErrorState);
+
+ QState *childOfErrorState = new QState(customErrorState);
+ childOfErrorState->setObjectName("childOfErrorState");
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("brokenState");
+ machine.addState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'customErrorState'");
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), false);
+ QCOMPARE(machine.error(), QStateMachine::NoInitialStateError);
+ QCOMPARE(machine.errorString(), QString::fromLatin1("Missing initial state in compound state 'customErrorState'"));
+}
+
+void tst_QStateMachine::errorStateIsRootState()
+{
+ QStateMachine machine;
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::setErrorState: root state cannot be error state");
+ machine.setErrorState(&machine);
+
+ QState *initialState = new QState();
+ initialState->setObjectName("initialState");
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ brokenState->setObjectName("brokenState");
+ machine.addState(brokenState);
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialState->addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)));
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'brokenState'");
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), false);
+}
+
+void tst_QStateMachine::errorStateEntersParentFirst()
+{
+ QStateMachine machine;
+
+ QObject *entryController = new QObject(&machine);
+ entryController->setObjectName("entryController");
+ entryController->setProperty("greatGrandParentEntered", false);
+ entryController->setProperty("grandParentEntered", false);
+ entryController->setProperty("parentEntered", false);
+ entryController->setProperty("errorStateEntered", false);
+
+ QState *greatGrandParent = new QState();
+ greatGrandParent->setObjectName("greatGrandParent");
+ greatGrandParent->assignProperty(entryController, "greatGrandParentEntered", true);
+ machine.addState(greatGrandParent);
+ machine.setInitialState(greatGrandParent);
+
+ QState *grandParent = new QState(greatGrandParent);
+ grandParent->setObjectName("grandParent");
+ grandParent->assignProperty(entryController, "grandParentEntered", true);
+
+ QState *parent = new QState(grandParent);
+ parent->setObjectName("parent");
+ parent->assignProperty(entryController, "parentEntered", true);
+
+ QState *errorState = new QState(parent);
+ errorState->setObjectName("errorState");
+ errorState->assignProperty(entryController, "errorStateEntered", true);
+ machine.setErrorState(errorState);
+
+ QState *initialStateOfGreatGrandParent = new QState(greatGrandParent);
+ initialStateOfGreatGrandParent->setObjectName("initialStateOfGreatGrandParent");
+ greatGrandParent->setInitialState(initialStateOfGreatGrandParent);
+
+ QState *brokenState = new QState(greatGrandParent);
+ brokenState->setObjectName("brokenState");
+
+ QState *childState = new QState(brokenState);
+ childState->setObjectName("childState");
+
+ initialStateOfGreatGrandParent->addTransition(new EventTransition(QEvent::User, brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(entryController->property("greatGrandParentEntered").toBool(), true);
+ QCOMPARE(entryController->property("grandParentEntered").toBool(), false);
+ QCOMPARE(entryController->property("parentEntered").toBool(), false);
+ QCOMPARE(entryController->property("errorStateEntered").toBool(), false);
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(greatGrandParent));
+ QVERIFY(machine.configuration().contains(initialStateOfGreatGrandParent));
+
+ entryController->setProperty("greatGrandParentEntered", false);
+ entryController->setProperty("grandParentEntered", false);
+ entryController->setProperty("parentEntered", false);
+ entryController->setProperty("errorStateEntered", false);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(entryController->property("greatGrandParentEntered").toBool(), false);
+ QCOMPARE(entryController->property("grandParentEntered").toBool(), true);
+ QCOMPARE(entryController->property("parentEntered").toBool(), true);
+ QCOMPARE(entryController->property("errorStateEntered").toBool(), true);
+ QCOMPARE(machine.configuration().count(), 4);
+ QVERIFY(machine.configuration().contains(greatGrandParent));
+ QVERIFY(machine.configuration().contains(grandParent));
+ QVERIFY(machine.configuration().contains(parent));
+ QVERIFY(machine.configuration().contains(errorState));
+}
+
+void tst_QStateMachine::customErrorStateIsNull()
+{
+ QStateMachine machine;
+ machine.setErrorState(0);
+
+ QState *initialState = new QState();
+ machine.addState(initialState);
+ machine.setInitialState(initialState);
+
+ QState *brokenState = new QState();
+ machine.addState(brokenState);
+
+ new QState(brokenState);
+ initialState->addTransition(new EventTransition(QEvent::User, brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state ''");
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.errorState(), reinterpret_cast<QAbstractState *>(0));
+ QCOMPARE(machine.isRunning(), false);
+}
+
+void tst_QStateMachine::clearError()
+{
+ QStateMachine machine;
+ machine.setErrorState(new QState(&machine)); // avoid warnings
+
+ QState *brokenState = new QState(&machine);
+ brokenState->setObjectName("brokenState");
+ machine.setInitialState(brokenState);
+ new QState(brokenState);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), true);
+ QCOMPARE(machine.error(), QStateMachine::NoInitialStateError);
+ QCOMPARE(machine.errorString(), QString::fromLatin1("Missing initial state in compound state 'brokenState'"));
+
+ machine.clearError();
+
+ QCOMPARE(machine.error(), QStateMachine::NoError);
+ QVERIFY(machine.errorString().isEmpty());
+}
+
+void tst_QStateMachine::historyStateAsInitialState()
+{
+ QStateMachine machine;
+
+ QHistoryState *hs = new QHistoryState(&machine);
+ machine.setInitialState(hs);
+
+ QState *s1 = new QState(&machine);
+ hs->setDefaultState(s1);
+
+ QState *s2 = new QState(&machine);
+
+ QHistoryState *s2h = new QHistoryState(s2);
+ s2->setInitialState(s2h);
+
+ QState *s21 = new QState(s2);
+ s2h->setDefaultState(s21);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s21));
+}
+
+void tst_QStateMachine::historyStateHasNowhereToGo()
+{
+ QStateMachine machine;
+
+ QState *initialState = new QState(&machine);
+ machine.setInitialState(initialState);
+ machine.setErrorState(new QState(&machine)); // avoid warnings
+
+ QState *brokenState = new QState(&machine);
+ brokenState->setObjectName("brokenState");
+ brokenState->setInitialState(new QState(brokenState));
+
+ QHistoryState *historyState = new QHistoryState(brokenState);
+ historyState->setObjectName("historyState");
+ initialState->addTransition(new EventTransition(QEvent::User, historyState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), true);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(machine.errorState()));
+ QCOMPARE(machine.error(), QStateMachine::NoDefaultStateInHistoryStateError);
+ QCOMPARE(machine.errorString(), QString::fromLatin1("Missing default state in history state 'historyState'"));
+}
+
+void tst_QStateMachine::historyStateAfterRestart()
+{
+ // QTBUG-8842
+ QStateMachine machine;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+ QState *s2 = new QState(&machine);
+ QState *s21 = new QState(s2);
+ QState *s22 = new QState(s2);
+ QHistoryState *s2h = new QHistoryState(s2);
+ s2h->setDefaultState(s21);
+ s1->addTransition(new EventTransition(QEvent::User, s2h));
+ s21->addTransition(new EventTransition(QEvent::User, s22));
+ s2->addTransition(new EventTransition(QEvent::User, s1));
+
+ for (int x = 0; x < 2; ++x) {
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ // s1 -> s2h -> s21 (default state)
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ // This used to fail on the 2nd run because the
+ // history had not been cleared.
+ QVERIFY(machine.configuration().contains(s21));
+
+ // s21 -> s22
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s22));
+
+ // s2 -> s1 (s22 saved in s2h)
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ // s1 -> s2h -> s22 (saved state)
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s22));
+
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ machine.stop();
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ }
+}
+
+void tst_QStateMachine::brokenStateIsNeverEntered()
+{
+ QStateMachine machine;
+
+ QObject *entryController = new QObject(&machine);
+ entryController->setProperty("brokenStateEntered", false);
+ entryController->setProperty("childStateEntered", false);
+ entryController->setProperty("errorStateEntered", false);
+
+ QState *initialState = new QState(&machine);
+ machine.setInitialState(initialState);
+
+ QState *errorState = new QState(&machine);
+ errorState->assignProperty(entryController, "errorStateEntered", true);
+ machine.setErrorState(errorState);
+
+ QState *brokenState = new QState(&machine);
+ brokenState->assignProperty(entryController, "brokenStateEntered", true);
+ brokenState->setObjectName("brokenState");
+
+ QState *childState = new QState(brokenState);
+ childState->assignProperty(entryController, "childStateEntered", true);
+
+ initialState->addTransition(new EventTransition(QEvent::User, brokenState));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(entryController->property("errorStateEntered").toBool(), true);
+ QCOMPARE(entryController->property("brokenStateEntered").toBool(), false);
+ QCOMPARE(entryController->property("childStateEntered").toBool(), false);
+}
+
+void tst_QStateMachine::transitionToStateNotInGraph()
+{
+ QStateMachine machine;
+
+ QState *initialState = new QState(&machine);
+ initialState->setObjectName("initialState");
+ machine.setInitialState(initialState);
+
+ QState independentState;
+ independentState.setObjectName("independentState");
+ initialState->addTransition(&independentState);
+
+ machine.start();
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: No common ancestor for targets and source of transition from state 'initialState'");
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), false);
+}
+
+void tst_QStateMachine::customErrorStateNotInGraph()
+{
+ QStateMachine machine;
+
+ QState errorState;
+ errorState.setObjectName("errorState");
+ QTest::ignoreMessage(QtWarningMsg, "QState::setErrorState: error state cannot belong to a different state machine");
+ machine.setErrorState(&errorState);
+ QCOMPARE(machine.errorState(), reinterpret_cast<QAbstractState *>(0));
+
+ QState *initialBrokenState = new QState(&machine);
+ initialBrokenState->setObjectName("initialBrokenState");
+ machine.setInitialState(initialBrokenState);
+ new QState(initialBrokenState);
+
+ machine.start();
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: Missing initial state in compound state 'initialBrokenState'");
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), false);
+}
+
+void tst_QStateMachine::restoreProperties()
+{
+ QStateMachine machine;
+ QCOMPARE(machine.globalRestorePolicy(), QStateMachine::DontRestoreProperties);
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("a", 1);
+ object->setProperty("b", 2);
+
+ QState *S1 = new QState();
+ S1->setObjectName("S1");
+ S1->assignProperty(object, "a", 3);
+ machine.addState(S1);
+
+ QState *S2 = new QState();
+ S2->setObjectName("S2");
+ S2->assignProperty(object, "b", 5);
+ machine.addState(S2);
+
+ QState *S3 = new QState();
+ S3->setObjectName("S3");
+ machine.addState(S3);
+
+ QFinalState *S4 = new QFinalState();
+ machine.addState(S4);
+
+ S1->addTransition(new EventTransition(QEvent::User, S2));
+ S2->addTransition(new EventTransition(QEvent::User, S3));
+ S3->addTransition(S4);
+
+ machine.setInitialState(S1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("a").toInt(), 3);
+ QCOMPARE(object->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("a").toInt(), 1);
+ QCOMPARE(object->property("b").toInt(), 5);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("a").toInt(), 1);
+ QCOMPARE(object->property("b").toInt(), 2);
+}
+
+void tst_QStateMachine::rootState()
+{
+ QStateMachine machine;
+ QCOMPARE(qobject_cast<QState*>(machine.parentState()), (QState*)0);
+ QCOMPARE(machine.machine(), (QStateMachine*)0);
+
+ QState *s1 = new QState(&machine);
+ QCOMPARE(s1->parentState(), static_cast<QState*>(&machine));
+
+ QState *s2 = new QState();
+ s2->setParent(&machine);
+ QCOMPARE(s2->parentState(), static_cast<QState*>(&machine));
+}
+
+void tst_QStateMachine::machineWithParent()
+{
+ QObject object;
+ QStateMachine *machine = new QStateMachine(&object);
+ QCOMPARE(machine->parent(), &object);
+ QCOMPARE(machine->parentState(), static_cast<QState*>(0));
+}
+
+void tst_QStateMachine::addAndRemoveState()
+{
+#ifdef QT_BUILD_INTERNAL
+ QStateMachine machine;
+ QStatePrivate *root_d = QStatePrivate::get(&machine);
+ QCOMPARE(root_d->childStates().size(), 0);
+
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::addState: cannot add null state");
+ machine.addState(0);
+
+ QState *s1 = new QState();
+ QCOMPARE(s1->parentState(), (QState*)0);
+ QCOMPARE(s1->machine(), (QStateMachine*)0);
+ machine.addState(s1);
+ QCOMPARE(s1->machine(), static_cast<QStateMachine*>(&machine));
+ QCOMPARE(s1->parentState(), static_cast<QState*>(&machine));
+ QCOMPARE(root_d->childStates().size(), 1);
+ QCOMPARE(root_d->childStates().at(0), (QAbstractState*)s1);
+
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::addState: state has already been added to this machine");
+ machine.addState(s1);
+
+ QState *s2 = new QState();
+ QCOMPARE(s2->parentState(), (QState*)0);
+ machine.addState(s2);
+ QCOMPARE(s2->parentState(), static_cast<QState*>(&machine));
+ QCOMPARE(root_d->childStates().size(), 2);
+ QCOMPARE(root_d->childStates().at(0), (QAbstractState*)s1);
+ QCOMPARE(root_d->childStates().at(1), (QAbstractState*)s2);
+
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::addState: state has already been added to this machine");
+ machine.addState(s2);
+
+ machine.removeState(s1);
+ QCOMPARE(s1->parentState(), (QState*)0);
+ QCOMPARE(root_d->childStates().size(), 1);
+ QCOMPARE(root_d->childStates().at(0), (QAbstractState*)s2);
+
+ machine.removeState(s2);
+ QCOMPARE(s2->parentState(), (QState*)0);
+ QCOMPARE(root_d->childStates().size(), 0);
+
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::removeState: cannot remove null state");
+ machine.removeState(0);
+
+ {
+ QStateMachine machine2;
+ {
+ QString warning;
+ warning.sprintf("QStateMachine::removeState: state %p's machine (%p) is different from this machine (%p)",
+ &machine2, (void*)0, &machine);
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
+ machine.removeState(&machine2);
+ }
+ // ### check this behavior
+ machine.addState(&machine2);
+ QCOMPARE(machine2.parent(), (QObject*)&machine);
+ }
+
+ delete s1;
+ delete s2;
+ // ### how to deal with this?
+ // machine.removeState(machine.errorState());
+#endif
+}
+
+void tst_QStateMachine::stateEntryAndExit()
+{
+ // Two top-level states
+ {
+ QStateMachine machine;
+
+ TestState *s1 = new TestState(&machine);
+ QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: cannot add transition to null state");
+ s1->addTransition((QAbstractState*)0);
+ QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: cannot add null transition");
+ s1->addTransition((QAbstractTransition*)0);
+ QTest::ignoreMessage(QtWarningMsg, "QState::removeTransition: cannot remove null transition");
+ s1->removeTransition((QAbstractTransition*)0);
+
+ TestState *s2 = new TestState(&machine);
+ QFinalState *s3 = new QFinalState(&machine);
+
+ TestTransition *t = new TestTransition(s2);
+ QCOMPARE(t->machine(), (QStateMachine*)0);
+ QCOMPARE(t->sourceState(), (QState*)0);
+ QCOMPARE(t->targetState(), (QAbstractState*)s2);
+ QCOMPARE(t->targetStates().size(), 1);
+ QCOMPARE(t->targetStates().at(0), (QAbstractState*)s2);
+ t->setTargetState(0);
+ QCOMPARE(t->targetState(), (QAbstractState*)0);
+ QVERIFY(t->targetStates().isEmpty());
+ t->setTargetState(s2);
+ QCOMPARE(t->targetState(), (QAbstractState*)s2);
+ QTest::ignoreMessage(QtWarningMsg, "QAbstractTransition::setTargetStates: target state(s) cannot be null");
+ t->setTargetStates(QList<QAbstractState*>() << 0);
+ QCOMPARE(t->targetState(), (QAbstractState*)s2);
+ t->setTargetStates(QList<QAbstractState*>() << s2);
+ QCOMPARE(t->targetState(), (QAbstractState*)s2);
+ QCOMPARE(t->targetStates().size(), 1);
+ QCOMPARE(t->targetStates().at(0), (QAbstractState*)s2);
+ s1->addTransition(t);
+ QCOMPARE(t->sourceState(), (QState*)s1);
+ QCOMPARE(t->machine(), &machine);
+
+ {
+ QAbstractTransition *trans = s2->addTransition(s3);
+ QVERIFY(trans != 0);
+ QCOMPARE(trans->sourceState(), (QState*)s2);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s3);
+ {
+ QString warning;
+ warning.sprintf("QState::removeTransition: transition %p's source state (%p) is different from this state (%p)", trans, s2, s1);
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
+ s1->removeTransition(trans);
+ }
+ s2->removeTransition(trans);
+ QCOMPARE(trans->sourceState(), (QState*)0);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s3);
+ s2->addTransition(trans);
+ QCOMPARE(trans->sourceState(), (QState*)s2);
+ }
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s1);
+ QCOMPARE(machine.initialState(), (QAbstractState*)s1);
+ {
+ QString warning;
+ warning.sprintf("QState::setInitialState: state %p is not a child of this state (%p)", &machine, &machine);
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
+ machine.setInitialState(&machine);
+ QCOMPARE(machine.initialState(), (QAbstractState*)s1);
+ }
+ QVERIFY(machine.configuration().isEmpty());
+ globalTick = 0;
+ QVERIFY(!machine.isRunning());
+ QSignalSpy s1EnteredSpy(s1, SIGNAL(entered()));
+ QSignalSpy s1ExitedSpy(s1, SIGNAL(exited()));
+ QSignalSpy tTriggeredSpy(t, SIGNAL(triggered()));
+ QSignalSpy s2EnteredSpy(s2, SIGNAL(entered()));
+ QSignalSpy s2ExitedSpy(s2, SIGNAL(exited()));
+ machine.start();
+
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QTRY_COMPARE(stoppedSpy.count(), 0);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s3));
+
+ // s1 is entered
+ QCOMPARE(s1->events.count(), 2);
+ QCOMPARE(s1->events.at(0).first, 0);
+ QCOMPARE(s1->events.at(0).second, TestState::Entry);
+ // s1 is exited
+ QCOMPARE(s1->events.at(1).first, 1);
+ QCOMPARE(s1->events.at(1).second, TestState::Exit);
+ // t is triggered
+ QCOMPARE(t->triggers.count(), 1);
+ QCOMPARE(t->triggers.at(0), 2);
+ // s2 is entered
+ QCOMPARE(s2->events.count(), 2);
+ QCOMPARE(s2->events.at(0).first, 3);
+ QCOMPARE(s2->events.at(0).second, TestState::Entry);
+ // s2 is exited
+ QCOMPARE(s2->events.at(1).first, 4);
+ QCOMPARE(s2->events.at(1).second, TestState::Exit);
+
+ QCOMPARE(s1EnteredSpy.count(), 1);
+ QCOMPARE(s1ExitedSpy.count(), 1);
+ QCOMPARE(tTriggeredSpy.count(), 1);
+ QCOMPARE(s2EnteredSpy.count(), 1);
+ QCOMPARE(s2ExitedSpy.count(), 1);
+ }
+ // Two top-level states, one has two child states
+ {
+ QStateMachine machine;
+
+ TestState *s1 = new TestState(&machine);
+ TestState *s11 = new TestState(s1);
+ TestState *s12 = new TestState(s1);
+ TestState *s2 = new TestState(&machine);
+ QFinalState *s3 = new QFinalState(&machine);
+ s1->setInitialState(s11);
+ TestTransition *t1 = new TestTransition(s12);
+ s11->addTransition(t1);
+ TestTransition *t2 = new TestTransition(s2);
+ s12->addTransition(t2);
+ s2->addTransition(s3);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s1);
+ globalTick = 0;
+ machine.start();
+
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s3));
+
+ // s1 is entered
+ QCOMPARE(s1->events.count(), 2);
+ QCOMPARE(s1->events.at(0).first, 0);
+ QCOMPARE(s1->events.at(0).second, TestState::Entry);
+ // s11 is entered
+ QCOMPARE(s11->events.count(), 2);
+ QCOMPARE(s11->events.at(0).first, 1);
+ QCOMPARE(s11->events.at(0).second, TestState::Entry);
+ // s11 is exited
+ QCOMPARE(s11->events.at(1).first, 2);
+ QCOMPARE(s11->events.at(1).second, TestState::Exit);
+ // t1 is triggered
+ QCOMPARE(t1->triggers.count(), 1);
+ QCOMPARE(t1->triggers.at(0), 3);
+ // s12 is entered
+ QCOMPARE(s12->events.count(), 2);
+ QCOMPARE(s12->events.at(0).first, 4);
+ QCOMPARE(s12->events.at(0).second, TestState::Entry);
+ // s12 is exited
+ QCOMPARE(s12->events.at(1).first, 5);
+ QCOMPARE(s12->events.at(1).second, TestState::Exit);
+ // s1 is exited
+ QCOMPARE(s1->events.at(1).first, 6);
+ QCOMPARE(s1->events.at(1).second, TestState::Exit);
+ // t2 is triggered
+ QCOMPARE(t2->triggers.count(), 1);
+ QCOMPARE(t2->triggers.at(0), 7);
+ // s2 is entered
+ QCOMPARE(s2->events.count(), 2);
+ QCOMPARE(s2->events.at(0).first, 8);
+ QCOMPARE(s2->events.at(0).second, TestState::Entry);
+ // s2 is exited
+ QCOMPARE(s2->events.at(1).first, 9);
+ QCOMPARE(s2->events.at(1).second, TestState::Exit);
+ }
+}
+
+void tst_QStateMachine::assignProperty()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+
+ QTest::ignoreMessage(QtWarningMsg, "QState::assignProperty: cannot assign property 'foo' of null object");
+ s1->assignProperty(0, "foo", QVariant());
+
+ s1->assignProperty(s1, "objectName", "s1");
+ QFinalState *s2 = new QFinalState(&machine);
+ s1->addTransition(s2);
+ machine.setInitialState(s1);
+ machine.start();
+ QTRY_COMPARE(s1->objectName(), QString::fromLatin1("s1"));
+
+ s1->assignProperty(s1, "objectName", "foo");
+ machine.start();
+ QTRY_COMPARE(s1->objectName(), QString::fromLatin1("foo"));
+
+ s1->assignProperty(s1, "noSuchProperty", 123);
+ machine.start();
+ QTRY_COMPARE(s1->dynamicPropertyNames().size(), 1);
+ QCOMPARE(s1->dynamicPropertyNames().at(0), QByteArray("noSuchProperty"));
+ QCOMPARE(s1->objectName(), QString::fromLatin1("foo"));
+
+ {
+ QSignalSpy propertiesAssignedSpy(s1, SIGNAL(propertiesAssigned()));
+ machine.start();
+ QTRY_COMPARE(propertiesAssignedSpy.count(), 1);
+ }
+
+ // nested states
+ {
+ QState *s11 = new QState(s1);
+ QString str = QString::fromLatin1("set by nested state");
+ s11->assignProperty(s11, "objectName", str);
+ s1->setInitialState(s11);
+ machine.start();
+ QTRY_COMPARE(s11->objectName(), str);
+ }
+}
+
+void tst_QStateMachine::assignPropertyWithAnimation()
+{
+ // Single animation
+ {
+ QStateMachine machine;
+ QVERIFY(machine.isAnimated());
+ machine.setAnimated(false);
+ QVERIFY(!machine.isAnimated());
+ machine.setAnimated(true);
+ QVERIFY(machine.isAnimated());
+ QObject obj;
+ obj.setProperty("foo", 321);
+ obj.setProperty("bar", 654);
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(&obj, "foo", 123);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(&obj, "foo", 456);
+ s2->assignProperty(&obj, "bar", 789);
+ QAbstractTransition *trans = s1->addTransition(s2);
+ QVERIFY(trans->animations().isEmpty());
+ QTest::ignoreMessage(QtWarningMsg, "QAbstractTransition::addAnimation: cannot add null animation");
+ trans->addAnimation(0);
+ QPropertyAnimation anim(&obj, "foo");
+ anim.setDuration(250);
+ trans->addAnimation(&anim);
+ QCOMPARE(trans->animations().size(), 1);
+ QCOMPARE(trans->animations().at(0), (QAbstractAnimation*)&anim);
+ QCOMPARE(anim.parent(), (QObject*)0);
+ QTest::ignoreMessage(QtWarningMsg, "QAbstractTransition::removeAnimation: cannot remove null animation");
+ trans->removeAnimation(0);
+ trans->removeAnimation(&anim);
+ QVERIFY(trans->animations().isEmpty());
+ trans->addAnimation(&anim);
+ QCOMPARE(trans->animations().size(), 1);
+ QCOMPARE(trans->animations().at(0), (QAbstractAnimation*)&anim);
+ QFinalState *s3 = new QFinalState(&machine);
+ s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
+
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(obj.property("foo").toInt(), 456);
+ QCOMPARE(obj.property("bar").toInt(), 789);
+ }
+ // Two animations
+ {
+ QStateMachine machine;
+ QObject obj;
+ obj.setProperty("foo", 321);
+ obj.setProperty("bar", 654);
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(&obj, "foo", 123);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(&obj, "foo", 456);
+ s2->assignProperty(&obj, "bar", 789);
+ QAbstractTransition *trans = s1->addTransition(s2);
+ QPropertyAnimation anim(&obj, "foo");
+ anim.setDuration(150);
+ trans->addAnimation(&anim);
+ QPropertyAnimation anim2(&obj, "bar");
+ anim2.setDuration(150);
+ trans->addAnimation(&anim2);
+ QFinalState *s3 = new QFinalState(&machine);
+ s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
+
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(obj.property("foo").toInt(), 456);
+ QCOMPARE(obj.property("bar").toInt(), 789);
+ }
+ // Animation group
+ {
+ QStateMachine machine;
+ QObject obj;
+ obj.setProperty("foo", 321);
+ obj.setProperty("bar", 654);
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(&obj, "foo", 123);
+ s1->assignProperty(&obj, "bar", 321);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(&obj, "foo", 456);
+ s2->assignProperty(&obj, "bar", 654);
+ s2->assignProperty(&obj, "baz", 789);
+ QAbstractTransition *trans = s1->addTransition(s2);
+ QSequentialAnimationGroup group;
+ group.addAnimation(new QPropertyAnimation(&obj, "foo"));
+ group.addAnimation(new QPropertyAnimation(&obj, "bar"));
+ trans->addAnimation(&group);
+ QFinalState *s3 = new QFinalState(&machine);
+ s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
+
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(obj.property("foo").toInt(), 456);
+ QCOMPARE(obj.property("bar").toInt(), 654);
+ QCOMPARE(obj.property("baz").toInt(), 789);
+ }
+ // Nested states
+ {
+ QStateMachine machine;
+ QObject obj;
+ obj.setProperty("foo", 321);
+ obj.setProperty("bar", 654);
+ QState *s1 = new QState(&machine);
+ QCOMPARE(s1->childMode(), QState::ExclusiveStates);
+ s1->setChildMode(QState::ParallelStates);
+ QCOMPARE(s1->childMode(), QState::ParallelStates);
+ s1->setChildMode(QState::ExclusiveStates);
+ QCOMPARE(s1->childMode(), QState::ExclusiveStates);
+ QCOMPARE(s1->initialState(), (QAbstractState*)0);
+ s1->setObjectName("s1");
+ s1->assignProperty(&obj, "foo", 123);
+ s1->assignProperty(&obj, "bar", 456);
+ QState *s2 = new QState(&machine);
+ s2->setObjectName("s2");
+ s2->assignProperty(&obj, "foo", 321);
+ QState *s21 = new QState(s2);
+ s21->setObjectName("s21");
+ s21->assignProperty(&obj, "bar", 654);
+ QState *s22 = new QState(s2);
+ s22->setObjectName("s22");
+ s22->assignProperty(&obj, "bar", 789);
+ s2->setInitialState(s21);
+ QCOMPARE(s2->initialState(), (QAbstractState*)s21);
+
+ QAbstractTransition *trans = s1->addTransition(s2);
+ QPropertyAnimation anim(&obj, "foo");
+ anim.setDuration(500);
+ trans->addAnimation(&anim);
+ QPropertyAnimation anim2(&obj, "bar");
+ anim2.setDuration(250);
+ trans->addAnimation(&anim2);
+
+ s21->addTransition(s21, SIGNAL(propertiesAssigned()), s22);
+
+ QFinalState *s3 = new QFinalState(&machine);
+ s22->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
+
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(obj.property("foo").toInt(), 321);
+ QCOMPARE(obj.property("bar").toInt(), 789);
+ }
+ // Aborted animation
+ {
+ QStateMachine machine;
+ SignalEmitter emitter;
+ QObject obj;
+ obj.setProperty("foo", 321);
+ obj.setProperty("bar", 654);
+ QState *group = new QState(&machine);
+ QState *s1 = new QState(group);
+ group->setInitialState(s1);
+ s1->assignProperty(&obj, "foo", 123);
+ QState *s2 = new QState(group);
+ s2->assignProperty(&obj, "foo", 456);
+ s2->assignProperty(&obj, "bar", 789);
+ QAbstractTransition *trans = s1->addTransition(&emitter, SIGNAL(signalWithNoArg()), s2);
+ QPropertyAnimation anim(&obj, "foo");
+ anim.setDuration(8000);
+ trans->addAnimation(&anim);
+ QPropertyAnimation anim2(&obj, "bar");
+ anim2.setDuration(8000);
+ trans->addAnimation(&anim2);
+ QState *s3 = new QState(group);
+ s3->assignProperty(&obj, "foo", 911);
+ s2->addTransition(&emitter, SIGNAL(signalWithNoArg()), s3);
+
+ machine.setInitialState(group);
+ machine.start();
+ QTRY_COMPARE(machine.configuration().contains(s1), true);
+ QSignalSpy propertiesAssignedSpy(s2, SIGNAL(propertiesAssigned()));
+ emitter.emitSignalWithNoArg();
+ QTRY_COMPARE(machine.configuration().contains(s2), true);
+ QVERIFY(propertiesAssignedSpy.isEmpty());
+ emitter.emitSignalWithNoArg(); // will cause animations from s1-->s2 to abort
+ QTRY_COMPARE(machine.configuration().contains(s3), true);
+ QVERIFY(propertiesAssignedSpy.isEmpty());
+ QCOMPARE(obj.property("foo").toInt(), 911);
+ QCOMPARE(obj.property("bar").toInt(), 789);
+ }
+}
+
+struct StringEvent : public QEvent
+{
+public:
+ StringEvent(const QString &val)
+ : QEvent(QEvent::Type(QEvent::User+2)),
+ value(val) {}
+
+ QString value;
+};
+
+class StringTransition : public QAbstractTransition
+{
+public:
+ StringTransition(const QString &value, QAbstractState *target)
+ : QAbstractTransition(), m_value(value)
+ { setTargetState(target); }
+
+protected:
+ virtual bool eventTest(QEvent *e)
+ {
+ if (e->type() != QEvent::Type(QEvent::User+2))
+ return false;
+ StringEvent *se = static_cast<StringEvent*>(e);
+ return (m_value == se->value) && (!m_cond.isValid() || (m_cond.indexIn(m_value) != -1));
+ }
+ virtual void onTransition(QEvent *) {}
+
+private:
+ QString m_value;
+ QRegExp m_cond;
+};
+
+class StringEventPoster : public QState
+{
+public:
+ StringEventPoster(const QString &value, QState *parent = 0)
+ : QState(parent), m_value(value), m_delay(-1) {}
+
+ void setString(const QString &value)
+ { m_value = value; }
+ void setDelay(int delay)
+ { m_delay = delay; }
+
+protected:
+ virtual void onEntry(QEvent *)
+ {
+ if (m_delay == -1)
+ machine()->postEvent(new StringEvent(m_value));
+ else
+ machine()->postDelayedEvent(new StringEvent(m_value), m_delay);
+ }
+ virtual void onExit(QEvent *) {}
+
+private:
+ QString m_value;
+ int m_delay;
+};
+
+void tst_QStateMachine::postEvent()
+{
+ for (int x = 0; x < 2; ++x) {
+ QStateMachine machine;
+ {
+ QEvent e(QEvent::None);
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::postEvent: cannot post event when the state machine is not running");
+ machine.postEvent(&e);
+ }
+ StringEventPoster *s1 = new StringEventPoster("a");
+ if (x == 1)
+ s1->setDelay(100);
+ QFinalState *s2 = new QFinalState;
+ s1->addTransition(new StringTransition("a", s2));
+ machine.addState(s1);
+ machine.addState(s2);
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+
+ s1->setString("b");
+ QFinalState *s3 = new QFinalState();
+ machine.addState(s3);
+ s1->addTransition(new StringTransition("b", s3));
+ finishedSpy.clear();
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s3));
+ }
+}
+
+void tst_QStateMachine::cancelDelayedEvent()
+{
+ QStateMachine machine;
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::cancelDelayedEvent: the machine is not running");
+ QVERIFY(!machine.cancelDelayedEvent(-1));
+
+ QState *s1 = new QState(&machine);
+ QFinalState *s2 = new QFinalState(&machine);
+ s1->addTransition(new StringTransition("a", s2));
+ machine.setInitialState(s1);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ int id1 = machine.postDelayedEvent(new StringEvent("c"), 50000);
+ QVERIFY(id1 != -1);
+ int id2 = machine.postDelayedEvent(new StringEvent("b"), 25000);
+ QVERIFY(id2 != -1);
+ QVERIFY(id2 != id1);
+ int id3 = machine.postDelayedEvent(new StringEvent("a"), 100);
+ QVERIFY(id3 != -1);
+ QVERIFY(id3 != id2);
+ QVERIFY(machine.cancelDelayedEvent(id1));
+ QVERIFY(!machine.cancelDelayedEvent(id1));
+ QVERIFY(machine.cancelDelayedEvent(id2));
+ QVERIFY(!machine.cancelDelayedEvent(id2));
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+}
+
+void tst_QStateMachine::postDelayedEventAndStop()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QFinalState *s2 = new QFinalState(&machine);
+ s1->addTransition(new StringTransition("a", s2));
+ machine.setInitialState(s1);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ int id1 = machine.postDelayedEvent(new StringEvent("a"), 0);
+ QVERIFY(id1 != -1);
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ machine.stop();
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 2);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ int id2 = machine.postDelayedEvent(new StringEvent("a"), 1000);
+ QVERIFY(id2 != -1);
+ machine.stop();
+ QTRY_COMPARE(stoppedSpy.count(), 2);
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 3);
+ QTestEventLoop::instance().enterLoop(2);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+}
+
+void tst_QStateMachine::stopAndPostEvent()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ machine.stop();
+ QCOMPARE(stoppedSpy.count(), 0);
+ machine.postEvent(new QEvent(QEvent::User));
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ QCoreApplication::processEvents();
+}
+
+void tst_QStateMachine::stateFinished()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QState *s1_1 = new QState(s1);
+ QFinalState *s1_2 = new QFinalState(s1);
+ s1_1->addTransition(s1_2);
+ s1->setInitialState(s1_1);
+ QFinalState *s2 = new QFinalState(&machine);
+ s1->addTransition(s1, SIGNAL(finished()), s2);
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+}
+
+void tst_QStateMachine::parallelStates()
+{
+ QStateMachine machine;
+
+ QState *s1 = new QState(QState::ParallelStates);
+ QCOMPARE(s1->childMode(), QState::ParallelStates);
+ QState *s1_1 = new QState(s1);
+ QState *s1_1_1 = new QState(s1_1);
+ QFinalState *s1_1_f = new QFinalState(s1_1);
+ s1_1_1->addTransition(s1_1_f);
+ s1_1->setInitialState(s1_1_1);
+ QState *s1_2 = new QState(s1);
+ QState *s1_2_1 = new QState(s1_2);
+ QFinalState *s1_2_f = new QFinalState(s1_2);
+ s1_2_1->addTransition(s1_2_f);
+ s1_2->setInitialState(s1_2_1);
+ {
+ QString warning;
+ warning.sprintf("QState::setInitialState: ignoring attempt to set initial state of parallel state group %p", s1);
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
+ s1->setInitialState(0);
+ }
+ machine.addState(s1);
+
+ QFinalState *s2 = new QFinalState();
+ machine.addState(s2);
+
+ s1->addTransition(s1, SIGNAL(finished()), s2);
+
+ machine.setInitialState(s1);
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+}
+
+void tst_QStateMachine::parallelRootState()
+{
+ QStateMachine machine;
+ QState *root = &machine;
+ QCOMPARE(root->childMode(), QState::ExclusiveStates);
+ root->setChildMode(QState::ParallelStates);
+ QCOMPARE(root->childMode(), QState::ParallelStates);
+
+ QState *s1 = new QState(root);
+ QFinalState *s1_f = new QFinalState(s1);
+ s1->setInitialState(s1_f);
+ QState *s2 = new QState(root);
+ QFinalState *s2_f = new QFinalState(s2);
+ s2->setInitialState(s2_f);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::start: No initial state set for machine. Refusing to start.");
+ machine.start();
+ QCoreApplication::processEvents();
+ QEXPECT_FAIL("", "parallel root state is not supported (task 256587)", Continue);
+ QCOMPARE(startedSpy.count(), 1);
+}
+
+void tst_QStateMachine::allSourceToTargetConfigurations()
+{
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ s0->setObjectName("s0");
+ QState *s1 = new QState(s0);
+ s1->setObjectName("s1");
+ QState *s11 = new QState(s1);
+ s11->setObjectName("s11");
+ QState *s2 = new QState(s0);
+ s2->setObjectName("s2");
+ QState *s21 = new QState(s2);
+ s21->setObjectName("s21");
+ QState *s211 = new QState(s21);
+ s211->setObjectName("s211");
+ QFinalState *f = new QFinalState(&machine);
+ f->setObjectName("f");
+
+ s0->setInitialState(s1);
+ s1->setInitialState(s11);
+ s2->setInitialState(s21);
+ s21->setInitialState(s211);
+
+ s11->addTransition(new StringTransition("g", s211));
+ s1->addTransition(new StringTransition("a", s1));
+ s1->addTransition(new StringTransition("b", s11));
+ s1->addTransition(new StringTransition("c", s2));
+ s1->addTransition(new StringTransition("d", s0));
+ s1->addTransition(new StringTransition("f", s211));
+ s211->addTransition(new StringTransition("d", s21));
+ s211->addTransition(new StringTransition("g", s0));
+ s211->addTransition(new StringTransition("h", f));
+ s21->addTransition(new StringTransition("b", s211));
+ s2->addTransition(new StringTransition("c", s1));
+ s2->addTransition(new StringTransition("f", s11));
+ s0->addTransition(new StringTransition("e", s211));
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new StringEvent("a"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("b"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("c"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("d"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("e"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("f"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("g"));
+ QCoreApplication::processEvents();
+ machine.postEvent(new StringEvent("h"));
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+}
+
+class TestSignalTransition : public QSignalTransition
+{
+public:
+ TestSignalTransition(QState *sourceState = 0)
+ : QSignalTransition(sourceState), m_sender(0)
+ {}
+ TestSignalTransition(QObject *sender, const char *signal,
+ QAbstractState *target)
+ : QSignalTransition(sender, signal), m_sender(0)
+ { setTargetState(target); }
+ QObject *senderReceived() const {
+ return m_sender;
+ }
+ int signalIndexReceived() const {
+ return m_signalIndex;
+ }
+ QVariantList argumentsReceived() const {
+ return m_args;
+ }
+protected:
+ bool eventTest(QEvent *e) {
+ if (!QSignalTransition::eventTest(e))
+ return false;
+ QStateMachine::SignalEvent *se = static_cast<QStateMachine::SignalEvent*>(e);
+ m_sender = se->sender();
+ m_signalIndex = se->signalIndex();
+ m_args = se->arguments();
+ return true;
+ }
+private:
+ QObject *m_sender;
+ int m_signalIndex;
+ QVariantList m_args;
+};
+
+void tst_QStateMachine::signalTransitions()
+{
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: sender cannot be null");
+ QCOMPARE(s0->addTransition(0, SIGNAL(noSuchSignal()), 0), (QSignalTransition*)0);
+
+ SignalEmitter emitter;
+ QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: signal cannot be null");
+ QCOMPARE(s0->addTransition(&emitter, 0, 0), (QSignalTransition*)0);
+
+ QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: cannot add transition to null state");
+ QCOMPARE(s0->addTransition(&emitter, SIGNAL(signalWithNoArg()), 0), (QSignalTransition*)0);
+
+ QFinalState *s1 = new QFinalState(&machine);
+ QTest::ignoreMessage(QtWarningMsg, "QState::addTransition: no such signal SignalEmitter::noSuchSignal()");
+ QCOMPARE(s0->addTransition(&emitter, SIGNAL(noSuchSignal()), s1), (QSignalTransition*)0);
+
+ QSignalTransition *trans = s0->addTransition(&emitter, SIGNAL(signalWithNoArg()), s1);
+ QVERIFY(trans != 0);
+ QCOMPARE(trans->sourceState(), s0);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s1);
+ QCOMPARE(trans->senderObject(), (QObject*)&emitter);
+ QCOMPARE(trans->signal(), QByteArray(SIGNAL(signalWithNoArg())));
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ emitter.emitSignalWithNoArg();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+
+ emitter.emitSignalWithNoArg();
+
+ trans->setSignal(SIGNAL(signalWithIntArg(int)));
+ QCOMPARE(trans->signal(), QByteArray(SIGNAL(signalWithIntArg(int))));
+ machine.start();
+ QCoreApplication::processEvents();
+ emitter.emitSignalWithIntArg(123);
+ QTRY_COMPARE(finishedSpy.count(), 2);
+
+ machine.start();
+ QCoreApplication::processEvents();
+ trans->setSignal(SIGNAL(signalWithNoArg()));
+ QCOMPARE(trans->signal(), QByteArray(SIGNAL(signalWithNoArg())));
+ emitter.emitSignalWithNoArg();
+ QTRY_COMPARE(finishedSpy.count(), 3);
+
+ SignalEmitter emitter2;
+ machine.start();
+ QCoreApplication::processEvents();
+ trans->setSenderObject(&emitter2);
+ emitter2.emitSignalWithNoArg();
+ QTRY_COMPARE(finishedSpy.count(), 4);
+
+ machine.start();
+ QCoreApplication::processEvents();
+ QTest::ignoreMessage(QtWarningMsg, "QSignalTransition: no such signal: SignalEmitter::noSuchSignal()");
+ trans->setSignal(SIGNAL(noSuchSignal()));
+ QCOMPARE(trans->signal(), QByteArray(SIGNAL(noSuchSignal())));
+ }
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+ SignalEmitter emitter;
+ QSignalTransition *trans = s0->addTransition(&emitter, "signalWithNoArg()", s1);
+ QVERIFY(trans != 0);
+ QCOMPARE(trans->sourceState(), s0);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s1);
+ QCOMPARE(trans->senderObject(), (QObject*)&emitter);
+ QCOMPARE(trans->signal(), QByteArray("signalWithNoArg()"));
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ emitter.emitSignalWithNoArg();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+
+ trans->setSignal("signalWithIntArg(int)");
+ QCOMPARE(trans->signal(), QByteArray("signalWithIntArg(int)"));
+ machine.start();
+ QCoreApplication::processEvents();
+ emitter.emitSignalWithIntArg(123);
+ QTRY_COMPARE(finishedSpy.count(), 2);
+ }
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+ SignalEmitter emitter;
+ TestSignalTransition *trans = new TestSignalTransition(&emitter, SIGNAL(signalWithIntArg(int)), s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ emitter.emitSignalWithIntArg(123);
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(trans->senderReceived(), (QObject*)&emitter);
+ QCOMPARE(trans->signalIndexReceived(), emitter.metaObject()->indexOfSignal("signalWithIntArg(int)"));
+ QCOMPARE(trans->argumentsReceived().size(), 1);
+ QCOMPARE(trans->argumentsReceived().at(0).toInt(), 123);
+ }
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+ SignalEmitter emitter;
+ TestSignalTransition *trans = new TestSignalTransition(&emitter, SIGNAL(signalWithStringArg(QString)), s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QString testString = QString::fromLatin1("hello");
+ emitter.emitSignalWithStringArg(testString);
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(trans->senderReceived(), (QObject*)&emitter);
+ QCOMPARE(trans->signalIndexReceived(), emitter.metaObject()->indexOfSignal("signalWithStringArg(QString)"));
+ QCOMPARE(trans->argumentsReceived().size(), 1);
+ QCOMPARE(trans->argumentsReceived().at(0).toString(), testString);
+ }
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ TestSignalTransition *trans = new TestSignalTransition();
+ QCOMPARE(trans->senderObject(), (QObject*)0);
+ QCOMPARE(trans->signal(), QByteArray());
+
+ SignalEmitter emitter;
+ trans->setSenderObject(&emitter);
+ QCOMPARE(trans->senderObject(), (QObject*)&emitter);
+ trans->setSignal(SIGNAL(signalWithNoArg()));
+ QCOMPARE(trans->signal(), QByteArray(SIGNAL(signalWithNoArg())));
+ trans->setTargetState(s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ emitter.emitSignalWithNoArg();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+ // Multiple transitions for same (object,signal)
+ {
+ QStateMachine machine;
+ SignalEmitter emitter;
+ QState *s0 = new QState(&machine);
+ QState *s1 = new QState(&machine);
+ QSignalTransition *t0 = s0->addTransition(&emitter, SIGNAL(signalWithNoArg()), s1);
+ QSignalTransition *t1 = s1->addTransition(&emitter, SIGNAL(signalWithNoArg()), s0);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ emitter.emitSignalWithNoArg();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ s0->removeTransition(t0);
+ emitter.emitSignalWithNoArg();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ emitter.emitSignalWithNoArg();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ s1->removeTransition(t1);
+ emitter.emitSignalWithNoArg();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ s0->addTransition(t0);
+ s1->addTransition(t1);
+ emitter.emitSignalWithNoArg();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+ }
+ // multiple signal transitions from same source
+ {
+ QStateMachine machine;
+ SignalEmitter emitter;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+ s0->addTransition(&emitter, SIGNAL(signalWithNoArg()), s1);
+ QFinalState *s2 = new QFinalState(&machine);
+ s0->addTransition(&emitter, SIGNAL(signalWithIntArg(int)), s2);
+ QFinalState *s3 = new QFinalState(&machine);
+ s0->addTransition(&emitter, SIGNAL(signalWithStringArg(QString)), s3);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ emitter.emitSignalWithNoArg();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 2);
+ emitter.emitSignalWithIntArg(123);
+ QTRY_COMPARE(finishedSpy.count(), 2);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 3);
+ emitter.emitSignalWithStringArg("hello");
+ QTRY_COMPARE(finishedSpy.count(), 3);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s3));
+ }
+ // signature normalization
+ {
+ QStateMachine machine;
+ SignalEmitter emitter;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+ QSignalTransition *t0 = s0->addTransition(&emitter, SIGNAL( signalWithNoArg( ) ), s1);
+ QVERIFY(t0 != 0);
+ QCOMPARE(t0->signal(), QByteArray(SIGNAL( signalWithNoArg( ) )));
+
+ QSignalTransition *t1 = s0->addTransition(&emitter, SIGNAL( signalWithStringArg( const QString & ) ), s1);
+ QVERIFY(t1 != 0);
+ QCOMPARE(t1->signal(), QByteArray(SIGNAL( signalWithStringArg( const QString & ) )));
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+
+ emitter.emitSignalWithNoArg();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+}
+
+class TestEventTransition : public QEventTransition
+{
+public:
+ TestEventTransition(QState *sourceState = 0)
+ : QEventTransition(sourceState),
+ m_eventSource(0), m_eventType(QEvent::None)
+ {}
+ TestEventTransition(QObject *object, QEvent::Type type,
+ QAbstractState *target)
+ : QEventTransition(object, type),
+ m_eventSource(0), m_eventType(QEvent::None)
+ { setTargetState(target); }
+ QObject *eventSourceReceived() const {
+ return m_eventSource;
+ }
+ QEvent::Type eventTypeReceived() const {
+ return m_eventType;
+ }
+protected:
+ bool eventTest(QEvent *e) {
+ if (!QEventTransition::eventTest(e))
+ return false;
+ QStateMachine::WrappedEvent *we = static_cast<QStateMachine::WrappedEvent*>(e);
+ m_eventSource = we->object();
+ m_eventType = we->event()->type();
+ return true;
+ }
+private:
+ QObject *m_eventSource;
+ QEvent::Type m_eventType;
+};
+
+void tst_QStateMachine::eventTransitions()
+{
+ QPushButton button;
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ QMouseEventTransition *trans;
+ trans = new QMouseEventTransition(&button, QEvent::MouseButtonPress, Qt::LeftButton);
+ QCOMPARE(trans->targetState(), (QAbstractState*)0);
+ trans->setTargetState(s1);
+ QCOMPARE(trans->eventType(), QEvent::MouseButtonPress);
+ QCOMPARE(trans->button(), Qt::LeftButton);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QTest::mousePress(&button, Qt::LeftButton);
+ QTRY_COMPARE(finishedSpy.count(), 1);
+
+ QTest::mousePress(&button, Qt::LeftButton);
+
+ trans->setEventType(QEvent::MouseButtonRelease);
+ QCOMPARE(trans->eventType(), QEvent::MouseButtonRelease);
+ machine.start();
+ QCoreApplication::processEvents();
+ QTest::mouseRelease(&button, Qt::LeftButton);
+ QTRY_COMPARE(finishedSpy.count(), 2);
+
+ machine.start();
+ QCoreApplication::processEvents();
+ trans->setEventType(QEvent::MouseButtonPress);
+ QTest::mousePress(&button, Qt::LeftButton);
+ QTRY_COMPARE(finishedSpy.count(), 3);
+
+ QPushButton button2;
+ machine.start();
+ QCoreApplication::processEvents();
+ trans->setEventSource(&button2);
+ QTest::mousePress(&button2, Qt::LeftButton);
+ QTRY_COMPARE(finishedSpy.count(), 4);
+ }
+ for (int x = 0; x < 2; ++x) {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ QEventTransition *trans;
+ if (x == 0) {
+ trans = new QEventTransition();
+ QCOMPARE(trans->eventSource(), (QObject*)0);
+ QCOMPARE(trans->eventType(), QEvent::None);
+ trans->setEventSource(&button);
+ trans->setEventType(QEvent::MouseButtonPress);
+ trans->setTargetState(s1);
+ } else if (x == 1) {
+ trans = new QEventTransition(&button, QEvent::MouseButtonPress);
+ trans->setTargetState(s1);
+ }
+ QCOMPARE(trans->eventSource(), (QObject*)&button);
+ QCOMPARE(trans->eventType(), QEvent::MouseButtonPress);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ QMouseEventTransition *trans = new QMouseEventTransition();
+ QCOMPARE(trans->eventSource(), (QObject*)0);
+ QCOMPARE(trans->eventType(), QEvent::None);
+ QCOMPARE(trans->button(), Qt::NoButton);
+ trans->setEventSource(&button);
+ trans->setEventType(QEvent::MouseButtonPress);
+ trans->setButton(Qt::LeftButton);
+ trans->setTargetState(s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ QKeyEventTransition *trans = new QKeyEventTransition(&button, QEvent::KeyPress, Qt::Key_A);
+ QCOMPARE(trans->eventType(), QEvent::KeyPress);
+ QCOMPARE(trans->key(), (int)Qt::Key_A);
+ trans->setTargetState(s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QTest::keyPress(&button, Qt::Key_A);
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ QKeyEventTransition *trans = new QKeyEventTransition();
+ QCOMPARE(trans->eventSource(), (QObject*)0);
+ QCOMPARE(trans->eventType(), QEvent::None);
+ QCOMPARE(trans->key(), 0);
+ trans->setEventSource(&button);
+ trans->setEventType(QEvent::KeyPress);
+ trans->setKey(Qt::Key_A);
+ trans->setTargetState(s1);
+ s0->addTransition(trans);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QTest::keyPress(&button, Qt::Key_A);
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+ // Multiple transitions for same (object,event)
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QState *s1 = new QState(&machine);
+ QEventTransition *t0 = new QEventTransition(&button, QEvent::MouseButtonPress);
+ t0->setTargetState(s1);
+ s0->addTransition(t0);
+ QEventTransition *t1 = new QEventTransition(&button, QEvent::MouseButtonPress);
+ t1->setTargetState(s0);
+ s1->addTransition(t1);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ s0->removeTransition(t0);
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ s1->removeTransition(t1);
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s0));
+
+ s0->addTransition(t0);
+ s1->addTransition(t1);
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+ }
+ // multiple event transitions from same source
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+ QFinalState *s2 = new QFinalState(&machine);
+ QEventTransition *t0 = new QEventTransition(&button, QEvent::MouseButtonPress);
+ t0->setTargetState(s1);
+ s0->addTransition(t0);
+ QEventTransition *t1 = new QEventTransition(&button, QEvent::MouseButtonRelease);
+ t1->setTargetState(s2);
+ s0->addTransition(t1);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QTest::mousePress(&button, Qt::LeftButton);
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 2);
+ QTest::mouseRelease(&button, Qt::LeftButton);
+ QTRY_COMPARE(finishedSpy.count(), 2);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+ }
+ // custom event
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ QEventTransition *trans = new QEventTransition(&button, QEvent::Type(QEvent::User+1));
+ trans->setTargetState(s1);
+ s0->addTransition(trans);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.setInitialState(s0);
+ machine.start();
+ QTest::ignoreMessage(QtWarningMsg, "QObject event transitions are not supported for custom types");
+ QTRY_COMPARE(startedSpy.count(), 1);
+ }
+ // custom transition
+ {
+ QStateMachine machine;
+ QState *s0 = new QState(&machine);
+ QFinalState *s1 = new QFinalState(&machine);
+
+ TestEventTransition *trans = new TestEventTransition(&button, QEvent::MouseButtonPress, s1);
+ s0->addTransition(trans);
+ QCOMPARE(trans->eventSourceReceived(), (QObject*)0);
+ QCOMPARE(trans->eventTypeReceived(), QEvent::None);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.setInitialState(s0);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QTest::mousePress(&button, Qt::LeftButton);
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+
+ QCOMPARE(trans->eventSourceReceived(), (QObject*)&button);
+ QCOMPARE(trans->eventTypeReceived(), QEvent::MouseButtonPress);
+ }
+}
+
+void tst_QStateMachine::graphicsSceneEventTransitions()
+{
+ QGraphicsScene scene;
+ QGraphicsTextItem *textItem = scene.addText("foo");
+
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QFinalState *s2 = new QFinalState(&machine);
+ QEventTransition *t = new QEventTransition(textItem, QEvent::GraphicsSceneMouseMove);
+ t->setTargetState(s2);
+ s1->addTransition(t);
+ machine.setInitialState(s1);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QVERIFY(finishedSpy.count() == 0);
+ QGraphicsSceneMouseEvent mouseEvent(QEvent::GraphicsSceneMouseMove);
+ scene.sendEvent(textItem, &mouseEvent);
+ QTRY_COMPARE(finishedSpy.count(), 1);
+}
+
+void tst_QStateMachine::historyStates()
+{
+ for (int x = 0; x < 2; ++x) {
+ QStateMachine machine;
+ QState *root = &machine;
+ QState *s0 = new QState(root);
+ QState *s00 = new QState(s0);
+ QState *s01 = new QState(s0);
+ QHistoryState *s0h;
+ if (x == 0) {
+ s0h = new QHistoryState(s0);
+ QCOMPARE(s0h->historyType(), QHistoryState::ShallowHistory);
+ s0h->setHistoryType(QHistoryState::DeepHistory);
+ } else {
+ s0h = new QHistoryState(QHistoryState::DeepHistory, s0);
+ }
+ QCOMPARE(s0h->historyType(), QHistoryState::DeepHistory);
+ s0h->setHistoryType(QHistoryState::ShallowHistory);
+ QCOMPARE(s0h->historyType(), QHistoryState::ShallowHistory);
+ QCOMPARE(s0h->defaultState(), (QAbstractState*)0);
+ s0h->setDefaultState(s00);
+ QCOMPARE(s0h->defaultState(), (QAbstractState*)s00);
+ QString warning;
+ warning.sprintf("QHistoryState::setDefaultState: state %p does not belong to this history state's group (%p)", s0, s0);
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(warning));
+ s0h->setDefaultState(s0);
+ QState *s1 = new QState(root);
+ QFinalState *s2 = new QFinalState(root);
+
+ s00->addTransition(new StringTransition("a", s01));
+ s0->addTransition(new StringTransition("b", s1));
+ s1->addTransition(new StringTransition("c", s0h));
+ s0->addTransition(new StringTransition("d", s2));
+
+ root->setInitialState(s0);
+ s0->setInitialState(s00);
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s0));
+ QVERIFY(machine.configuration().contains(s00));
+
+ machine.postEvent(new StringEvent("a"));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s0));
+ QVERIFY(machine.configuration().contains(s01));
+
+ machine.postEvent(new StringEvent("b"));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.postEvent(new StringEvent("c"));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s0));
+ QVERIFY(machine.configuration().contains(s01));
+
+ machine.postEvent(new StringEvent("d"));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+ }
+}
+
+void tst_QStateMachine::startAndStop()
+{
+ QStateMachine machine;
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ QVERIFY(!machine.isRunning());
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::start: No initial state set for machine. Refusing to start.");
+ machine.start();
+ QCOMPARE(startedSpy.count(), 0);
+ QCOMPARE(stoppedSpy.count(), 0);
+ QCOMPARE(finishedSpy.count(), 0);
+ QVERIFY(!machine.isRunning());
+ machine.stop();
+ QCOMPARE(startedSpy.count(), 0);
+ QCOMPARE(stoppedSpy.count(), 0);
+ QCOMPARE(finishedSpy.count(), 0);
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+ machine.start();
+ QTRY_COMPARE(machine.isRunning(), true);
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(stoppedSpy.count(), 0);
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ QTest::ignoreMessage(QtWarningMsg, "QStateMachine::start(): already running");
+ machine.start();
+
+ machine.stop();
+ QTRY_COMPARE(machine.isRunning(), false);
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ QCOMPARE(startedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ machine.start();
+ machine.stop();
+ QTRY_COMPARE(startedSpy.count(), 2);
+ QCOMPARE(stoppedSpy.count(), 2);
+}
+
+void tst_QStateMachine::targetStateWithNoParent()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ s1->setObjectName("s1");
+ QState s2;
+ s1->addTransition(&s2);
+ machine.setInitialState(s1);
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: No common ancestor for targets and source of transition from state 's1'");
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(machine.isRunning(), false);
+ QCOMPARE(stoppedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(machine.error(), QStateMachine::NoCommonAncestorForTransitionError);
+}
+
+void tst_QStateMachine::targetStateDeleted()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ s1->setObjectName("s1");
+ QState *s2 = new QState(&machine);
+ QAbstractTransition *trans = s1->addTransition(s2);
+ delete s2;
+ QCOMPARE(trans->targetState(), (QAbstractState*)0);
+ QVERIFY(trans->targetStates().isEmpty());
+}
+
+void tst_QStateMachine::defaultGlobalRestorePolicy()
+{
+ QStateMachine machine;
+
+ QObject *propertyHolder = new QObject(&machine);
+ propertyHolder->setProperty("a", 1);
+ propertyHolder->setProperty("b", 2);
+
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(propertyHolder, "a", 3);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(propertyHolder, "b", 4);
+
+ QState *s3 = new QState(&machine);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s2->addTransition(new EventTransition(QEvent::User, s3));
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+}
+
+void tst_QStateMachine::noInitialStateForInitialState()
+{
+ QStateMachine machine;
+
+ QState *initialState = new QState(&machine);
+ initialState->setObjectName("initialState");
+ machine.setInitialState(initialState);
+
+ QState *childState = new QState(initialState);
+ (void)childState;
+
+ QTest::ignoreMessage(QtWarningMsg, "Unrecoverable error detected in running state machine: "
+ "Missing initial state in compound state 'initialState'");
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.isRunning(), false);
+ QCOMPARE(int(machine.error()), int(QStateMachine::NoInitialStateError));
+}
+
+/*
+void tst_QStateMachine::restorePolicyNotInherited()
+{
+ QStateMachine machine;
+
+ QObject *propertyHolder = new QObject();
+ propertyHolder->setProperty("a", 1);
+ propertyHolder->setProperty("b", 2);
+
+ QState *parentState = new QState(&machine);
+ parentState->setObjectName("parentState");
+ parentState->setRestorePolicy(QState::RestoreProperties);
+
+ QState *s1 = new QState(parentState);
+ s1->setObjectName("s1");
+ s1->assignProperty(propertyHolder, "a", 3);
+ parentState->setInitialState(s1);
+
+ QState *s2 = new QState(parentState);
+ s2->setObjectName("s2");
+ s2->assignProperty(propertyHolder, "b", 4);
+
+ QState *s3 = new QState(parentState);
+ s3->setObjectName("s3");
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s2->addTransition(new EventTransition(QEvent::User, s3));
+
+ machine.setInitialState(parentState);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+
+}*/
+
+void tst_QStateMachine::globalRestorePolicySetToDontRestore()
+{
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::DontRestoreProperties);
+
+ QObject *propertyHolder = new QObject(&machine);
+ propertyHolder->setProperty("a", 1);
+ propertyHolder->setProperty("b", 2);
+
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(propertyHolder, "a", 3);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(propertyHolder, "b", 4);
+
+ QState *s3 = new QState(&machine);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s2->addTransition(new EventTransition(QEvent::User, s3));
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+}
+
+/*
+void tst_QStateMachine::setRestorePolicyToDoNotRestore()
+{
+ QObject *object = new QObject();
+ object->setProperty("a", 1);
+ object->setProperty("b", 2);
+
+ QStateMachine machine;
+
+ QState *S1 = new QState();
+ S1->setObjectName("S1");
+ S1->assignProperty(object, "a", 3);
+ S1->setRestorePolicy(QState::DoNotRestoreProperties);
+ machine.addState(S1);
+
+ QState *S2 = new QState();
+ S2->setObjectName("S2");
+ S2->assignProperty(object, "b", 5);
+ S2->setRestorePolicy(QState::DoNotRestoreProperties);
+ machine.addState(S2);
+
+ QState *S3 = new QState();
+ S3->setObjectName("S3");
+ S3->setRestorePolicy(QState::DoNotRestoreProperties);
+ machine.addState(S3);
+
+ QFinalState *S4 = new QFinalState();
+ machine.addState(S4);
+
+ S1->addTransition(new EventTransition(QEvent::User, S2));
+ S2->addTransition(new EventTransition(QEvent::User, S3));
+ S3->addTransition(S4);
+
+ machine.setInitialState(S1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("a").toInt(), 3);
+ QCOMPARE(object->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("a").toInt(), 3);
+ QCOMPARE(object->property("b").toInt(), 5);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(object->property("a").toInt(), 3);
+ QCOMPARE(object->property("b").toInt(), 5);
+}
+
+void tst_QStateMachine::setGlobalRestorePolicyToGlobalRestore()
+{
+ s_countWarnings = false;
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::GlobalRestorePolicy);
+
+ QCOMPARE(machine.globalRestorePolicy(), QStateMachine::DoNotRestoreProperties);
+ QCOMPARE(s_msgType, QtWarningMsg);
+
+ s_msgType = QtDebugMsg;
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QStateMachine::GlobalRestorePolicy);
+
+ QCOMPARE(machine.globalRestorePolicy(), QStateMachine::RestoreProperties);
+ QCOMPARE(s_msgType, QtWarningMsg);
+}
+
+
+void tst_QStateMachine::restorePolicyOnChildState()
+{
+ QStateMachine machine;
+
+ QObject *propertyHolder = new QObject();
+ propertyHolder->setProperty("a", 1);
+ propertyHolder->setProperty("b", 2);
+
+ QState *parentState = new QState(&machine);
+ parentState->setObjectName("parentState");
+
+ QState *s1 = new QState(parentState);
+ s1->setRestorePolicy(QState::RestoreProperties);
+ s1->setObjectName("s1");
+ s1->assignProperty(propertyHolder, "a", 3);
+ parentState->setInitialState(s1);
+
+ QState *s2 = new QState(parentState);
+ s2->setRestorePolicy(QState::RestoreProperties);
+ s2->setObjectName("s2");
+ s2->assignProperty(propertyHolder, "b", 4);
+
+ QState *s3 = new QState(parentState);
+ s3->setRestorePolicy(QState::RestoreProperties);
+ s3->setObjectName("s3");
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s2->addTransition(new EventTransition(QEvent::User, s3));
+
+ machine.setInitialState(parentState);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 1);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 1);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+}
+*/
+
+void tst_QStateMachine::globalRestorePolicySetToRestore()
+{
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+
+ QObject *propertyHolder = new QObject(&machine);
+ propertyHolder->setProperty("a", 1);
+ propertyHolder->setProperty("b", 2);
+
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(propertyHolder, "a", 3);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(propertyHolder, "b", 4);
+
+ QState *s3 = new QState(&machine);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s2->addTransition(new EventTransition(QEvent::User, s3));
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 1);
+ QCOMPARE(propertyHolder->property("b").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("a").toInt(), 1);
+ QCOMPARE(propertyHolder->property("b").toInt(), 2);
+}
+
+/*
+void tst_QStateMachine::mixedRestoreProperties()
+{
+ QStateMachine machine;
+
+ QObject *propertyHolder = new QObject();
+ propertyHolder->setProperty("a", 1);
+
+ QState *s1 = new QState(&machine);
+ s1->setRestorePolicy(QState::RestoreProperties);
+ s1->assignProperty(propertyHolder, "a", 3);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(propertyHolder, "a", 4);
+
+ QState *s3 = new QState(&machine);
+
+ QState *s4 = new QState(&machine);
+ s4->assignProperty(propertyHolder, "a", 5);
+
+ QState *s5 = new QState(&machine);
+ s5->setRestorePolicy(QState::RestoreProperties);
+ s5->assignProperty(propertyHolder, "a", 6);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s2->addTransition(new EventTransition(QEvent::User, s3));
+ s3->addTransition(new EventTransition(QEvent::User, s4));
+ s4->addTransition(new EventTransition(QEvent::User, s5));
+ s5->addTransition(new EventTransition(QEvent::User, s3));
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ // Enter s1, save current
+ QCOMPARE(propertyHolder->property("a").toInt(), 3);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ // Enter s2, restorePolicy == DoNotRestore, so restore all properties
+ QCOMPARE(propertyHolder->property("a").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ // Enter s3
+ QCOMPARE(propertyHolder->property("a").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ // Enter s4
+ QCOMPARE(propertyHolder->property("a").toInt(), 5);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ // Enter s5, save current
+ QCOMPARE(propertyHolder->property("a").toInt(), 6);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ // Enter s3, restore
+ QCOMPARE(propertyHolder->property("a").toInt(), 5);
+}
+*/
+
+void tst_QStateMachine::transitionWithParent()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+ EventTransition *trans = new EventTransition(QEvent::User, s2, s1);
+ QCOMPARE(trans->sourceState(), s1);
+ QCOMPARE(trans->targetState(), (QAbstractState*)s2);
+ QCOMPARE(trans->targetStates().size(), 1);
+ QCOMPARE(trans->targetStates().at(0), (QAbstractState*)s2);
+}
+
+void tst_QStateMachine::simpleAnimation()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("fooBar", 1.0);
+
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "fooBar", 2.0);
+
+ EventTransition *et = new EventTransition(QEvent::User, s2);
+ QPropertyAnimation *animation = new QPropertyAnimation(object, "fooBar", s2);
+ et->addAnimation(animation);
+ s1->addTransition(et);
+
+ QState *s3 = new QState(&machine);
+ s2->addTransition(animation, SIGNAL(finished()), s3);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("fooBar").toDouble(), 2.0);
+}
+
+class SlotCalledCounter: public QObject
+{
+ Q_OBJECT
+public:
+ SlotCalledCounter() : counter(0) {}
+
+ int counter;
+
+public slots:
+ void slot() { counter++; }
+};
+
+void tst_QStateMachine::twoAnimations()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+ object->setProperty("bar", 3.0);
+
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+ s2->assignProperty(object, "bar", 10.0);
+
+ QPropertyAnimation *animationFoo = new QPropertyAnimation(object, "foo", s2);
+ QPropertyAnimation *animationBar = new QPropertyAnimation(object, "bar", s2);
+ animationBar->setDuration(900);
+
+ SlotCalledCounter counter;
+ connect(animationFoo, SIGNAL(finished()), &counter, SLOT(slot()));
+ connect(animationBar, SIGNAL(finished()), &counter, SLOT(slot()));
+
+ EventTransition *et = new EventTransition(QEvent::User, s2);
+ et->addAnimation(animationFoo);
+ et->addAnimation(animationBar);
+ s1->addTransition(et);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+ s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+ QCOMPARE(object->property("bar").toDouble(), 10.0);
+
+ QCOMPARE(counter.counter, 2);
+}
+
+void tst_QStateMachine::twoAnimatedTransitions()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 5.0);
+ QPropertyAnimation *fooAnimation = new QPropertyAnimation(object, "foo", s2);
+ EventTransition *trans = new EventTransition(QEvent::User, s2);
+ s1->addTransition(trans);
+ trans->addAnimation(fooAnimation);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+ s2->addTransition(fooAnimation, SIGNAL(finished()), s3);
+
+ QState *s4 = new QState(&machine);
+ s4->assignProperty(object, "foo", 2.0);
+ QPropertyAnimation *fooAnimation2 = new QPropertyAnimation(object, "foo", s4);
+ trans = new EventTransition(QEvent::User, s4);
+ s3->addTransition(trans);
+ trans->addAnimation(fooAnimation2);
+
+ QState *s5 = new QState(&machine);
+ QObject::connect(s5, SIGNAL(entered()), QApplication::instance(), SLOT(quit()));
+ s4->addTransition(fooAnimation2, SIGNAL(finished()), s5);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 5.0);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s5));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+}
+
+void tst_QStateMachine::playAnimationTwice()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 5.0);
+ QPropertyAnimation *fooAnimation = new QPropertyAnimation(object, "foo", s2);
+ EventTransition *trans = new EventTransition(QEvent::User, s2);
+ s1->addTransition(trans);
+ trans->addAnimation(fooAnimation);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+ s2->addTransition(fooAnimation, SIGNAL(finished()), s3);
+
+ QState *s4 = new QState(&machine);
+ s4->assignProperty(object, "foo", 2.0);
+ trans = new EventTransition(QEvent::User, s4);
+ s3->addTransition(trans);
+ trans->addAnimation(fooAnimation);
+
+ QState *s5 = new QState(&machine);
+ QObject::connect(s5, SIGNAL(entered()), QApplication::instance(), SLOT(quit()));
+ s4->addTransition(fooAnimation, SIGNAL(finished()), s5);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 5.0);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s5));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+}
+
+void tst_QStateMachine::nestedTargetStateForAnimation()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+ object->setProperty("bar", 3.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s2Child = new QState(s2);
+ s2Child->assignProperty(object, "bar", 10.0);
+ s2->setInitialState(s2Child);
+
+ QState *s2Child2 = new QState(s2);
+ s2Child2->assignProperty(object, "bar", 11.0);
+ QAbstractTransition *at = new EventTransition(QEvent::User, s2Child2);
+ s2Child->addTransition(at);
+
+ QPropertyAnimation *animation = new QPropertyAnimation(object, "bar", s2);
+ animation->setDuration(2000);
+ connect(animation, SIGNAL(finished()), &counter, SLOT(slot()));
+ at->addAnimation(animation);
+
+ at = new EventTransition(QEvent::User, s2);
+ s1->addTransition(at);
+
+ animation = new QPropertyAnimation(object, "foo", s2);
+ connect(animation, SIGNAL(finished()), &counter, SLOT(slot()));
+ at->addAnimation(animation);
+
+ animation = new QPropertyAnimation(object, "bar", s2);
+ connect(animation, SIGNAL(finished()), &counter, SLOT(slot()));
+ at->addAnimation(animation);
+
+ QState *s3 = new QState(&machine);
+ s2->addTransition(s2Child, SIGNAL(propertiesAssigned()), s3);
+
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+ machine.postEvent(new QEvent(QEvent::User));
+
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+ QCOMPARE(object->property("bar").toDouble(), 10.0);
+ QCOMPARE(counter.counter, 2);
+}
+
+void tst_QStateMachine::propertiesAssignedSignalTransitionsReuseAnimationGroup()
+{
+ QStateMachine machine;
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 0);
+
+ QState *s1 = new QState(&machine);
+ s1->assignProperty(object, "foo", 123);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 456);
+ QState *s3 = new QState(&machine);
+ s3->assignProperty(object, "foo", 789);
+ QFinalState *s4 = new QFinalState(&machine);
+
+ QParallelAnimationGroup animationGroup;
+ animationGroup.addAnimation(new QPropertyAnimation(object, "foo"));
+ QSignalSpy animationFinishedSpy(&animationGroup, SIGNAL(finished()));
+ s1->addTransition(s1, SIGNAL(propertiesAssigned()), s2)->addAnimation(&animationGroup);
+ s2->addTransition(s2, SIGNAL(propertiesAssigned()), s3)->addAnimation(&animationGroup);
+ s3->addTransition(s3, SIGNAL(propertiesAssigned()), s4);
+
+ machine.setInitialState(s1);
+ QSignalSpy machineFinishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(machineFinishedSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s4));
+ QCOMPARE(object->property("foo").toInt(), 789);
+
+ QCOMPARE(animationFinishedSpy.count(), 2);
+}
+
+void tst_QStateMachine::animatedGlobalRestoreProperty()
+{
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+
+ QState *s4 = new QState(&machine);
+ QObject::connect(s4, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ QAbstractTransition *at = new EventTransition(QEvent::User, s2);
+ s1->addTransition(at);
+ QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", s2);
+ connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
+ at->addAnimation(pa);
+
+ at = s2->addTransition(pa, SIGNAL(finished()), s3);
+ pa = new QPropertyAnimation(object, "foo", s3);
+ connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
+ at->addAnimation(pa);
+
+ at = s3->addTransition(pa, SIGNAL(finished()), s4);
+ pa = new QPropertyAnimation(object, "foo", s4);
+ connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
+ at->addAnimation(pa);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s4));
+ QCOMPARE(object->property("foo").toDouble(), 1.0);
+ QCOMPARE(counter.counter, 2);
+}
+
+void tst_QStateMachine::specificTargetValueOfAnimation()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QPropertyAnimation *anim = new QPropertyAnimation(object, "foo");
+ anim->setEndValue(10.0);
+ EventTransition *trans = new EventTransition(QEvent::User, s2);
+ s1->addTransition(trans);
+ trans->addAnimation(anim);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+ s2->addTransition(anim, SIGNAL(finished()), s3);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+ QCOMPARE(anim->endValue().toDouble(), 10.0);
+
+ delete anim;
+}
+
+void tst_QStateMachine::addDefaultAnimation()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", &machine);
+ machine.addDefaultAnimation(pa);
+ s2->addTransition(pa, SIGNAL(finished()), s3);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+
+ delete object;
+}
+
+void tst_QStateMachine::addDefaultAnimationWithUnusedAnimation()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+ object->setProperty("bar", 2.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", &machine);
+ connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
+ machine.addDefaultAnimation(pa);
+ s2->addTransition(pa, SIGNAL(finished()), s3);
+
+ pa = new QPropertyAnimation(object, "bar", &machine);
+ connect(pa, SIGNAL(finished()), &counter, SLOT(slot()));
+ machine.addDefaultAnimation(pa);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+ QCOMPARE(counter.counter, 1);
+}
+
+void tst_QStateMachine::removeDefaultAnimation()
+{
+ QStateMachine machine;
+
+ QObject propertyHolder;
+ propertyHolder.setProperty("foo", 0);
+
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+
+ QPropertyAnimation *anim = new QPropertyAnimation(&propertyHolder, "foo");
+
+ machine.addDefaultAnimation(anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 1);
+ QVERIFY(machine.defaultAnimations().contains(anim));
+
+ machine.removeDefaultAnimation(anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+
+ machine.addDefaultAnimation(anim);
+
+ QPropertyAnimation *anim2 = new QPropertyAnimation(&propertyHolder, "foo");
+ machine.addDefaultAnimation(anim2);
+
+ QCOMPARE(machine.defaultAnimations().size(), 2);
+ QVERIFY(machine.defaultAnimations().contains(anim));
+ QVERIFY(machine.defaultAnimations().contains(anim2));
+
+ machine.removeDefaultAnimation(anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 1);
+ QVERIFY(machine.defaultAnimations().contains(anim2));
+
+ machine.removeDefaultAnimation(anim2);
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+
+ delete anim;
+ delete anim2;
+}
+
+void tst_QStateMachine::overrideDefaultAnimationWithSpecific()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject(&machine);
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ QAbstractTransition *at = new EventTransition(QEvent::User, s2);
+ s1->addTransition(at);
+
+ QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
+ connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
+ s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
+ connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ machine.addDefaultAnimation(defaultAnimation);
+ at->addAnimation(moreSpecificAnimation);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(counter.counter, 2); // specific animation started and stopped
+
+ delete defaultAnimation;
+ delete moreSpecificAnimation;
+}
+
+/*
+void tst_QStateMachine::addDefaultAnimationForSource()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", &machine);
+ machine.addDefaultAnimationForSourceState(s1, pa);
+ s2->addTransition(pa, SIGNAL(finished()), s3);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+}
+
+void tst_QStateMachine::addDefaultAnimationForTarget()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ QState *s1 = new QState(&machine);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *pa = new QPropertyAnimation(object, "foo", &machine);
+ machine.addDefaultAnimationForTargetState(s2, pa);
+ s2->addTransition(pa, SIGNAL(finished()), s3);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(object->property("foo").toDouble(), 2.0);
+}
+
+void tst_QStateMachine::removeDefaultAnimationForSource()
+{
+ QStateMachine machine;
+
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
+
+ QPropertyAnimation *anim = new QPropertyAnimation(this, "foo");
+
+ machine.addDefaultAnimationForSourceState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 1);
+ QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim));
+
+ machine.removeDefaultAnimationForTargetState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 1);
+ QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim));
+
+ machine.removeDefaultAnimationForSourceState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
+
+ machine.addDefaultAnimationForSourceState(&machine, anim);
+
+ QPropertyAnimation *anim2 = new QPropertyAnimation(this, "foo");
+ machine.addDefaultAnimationForSourceState(&machine, anim2);
+
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 2);
+ QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim));
+ QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim2));
+
+ machine.removeDefaultAnimationForSourceState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 1);
+ QVERIFY(machine.defaultAnimationsForSourceState(&machine).contains(anim2));
+
+ machine.removeDefaultAnimationForSourceState(&machine, anim2);
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
+}
+
+void tst_QStateMachine::removeDefaultAnimationForTarget()
+{
+ QStateMachine machine;
+
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
+
+ QPropertyAnimation *anim = new QPropertyAnimation(this, "foo");
+
+ machine.addDefaultAnimationForTargetState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 1);
+ QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim));
+
+ machine.removeDefaultAnimationForSourceState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimations().size(), 0);
+ QCOMPARE(machine.defaultAnimationsForSourceState(&machine).size(), 0);
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 1);
+ QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim));
+
+ machine.removeDefaultAnimationForTargetState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
+
+ machine.addDefaultAnimationForTargetState(&machine, anim);
+
+ QPropertyAnimation *anim2 = new QPropertyAnimation(this, "foo");
+ machine.addDefaultAnimationForTargetState(&machine, anim2);
+
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 2);
+ QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim));
+ QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim2));
+
+ machine.removeDefaultAnimationForTargetState(&machine, anim);
+
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 1);
+ QVERIFY(machine.defaultAnimationsForTargetState(&machine).contains(anim2));
+
+ machine.removeDefaultAnimationForTargetState(&machine, anim2);
+ QCOMPARE(machine.defaultAnimationsForTargetState(&machine).size(), 0);
+}
+
+void tst_QStateMachine::overrideDefaultAnimationWithSource()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
+ connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
+ s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
+ connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ machine.addDefaultAnimation(defaultAnimation);
+ machine.addDefaultAnimationForSourceState(s1, moreSpecificAnimation);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(counter.counter, 2); // specific animation started and stopped
+}
+
+void tst_QStateMachine::overrideDefaultAnimationWithTarget()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
+ connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
+ s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
+ connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ machine.addDefaultAnimation(defaultAnimation);
+ machine.addDefaultAnimationForTargetState(s2, moreSpecificAnimation);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(counter.counter, 2); // specific animation started and stopped
+
+}
+
+void tst_QStateMachine::overrideDefaultSourceAnimationWithSpecific()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ QAbstractTransition *at = s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
+ connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
+ s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
+ connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ machine.addDefaultAnimationForSourceState(s1, defaultAnimation);
+ at->addAnimation(moreSpecificAnimation);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(counter.counter, 2); // specific animation started and stopped
+}
+
+void tst_QStateMachine::overrideDefaultTargetAnimationWithSpecific()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ QAbstractTransition *at = s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
+ connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
+ s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
+ connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ machine.addDefaultAnimationForTargetState(s2, defaultAnimation);
+ at->addAnimation(moreSpecificAnimation);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(counter.counter, 2); // specific animation started and stopped
+}
+
+void tst_QStateMachine::overrideDefaultTargetAnimationWithSource()
+{
+ QStateMachine machine;
+
+ QObject *object = new QObject();
+ object->setProperty("foo", 1.0);
+
+ SlotCalledCounter counter;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(object, "foo", 2.0);
+
+ QState *s3 = new QState(&machine);
+ QObject::connect(s3, SIGNAL(entered()), QCoreApplication::instance(), SLOT(quit()));
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+
+ QPropertyAnimation *defaultAnimation = new QPropertyAnimation(object, "foo");
+ connect(defaultAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ QPropertyAnimation *moreSpecificAnimation = new QPropertyAnimation(object, "foo");
+ s2->addTransition(moreSpecificAnimation, SIGNAL(finished()), s3);
+ connect(moreSpecificAnimation, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), &counter, SLOT(slot()));
+
+ machine.addDefaultAnimationForTargetState(s2, defaultAnimation);
+ machine.addDefaultAnimationForSourceState(s1, moreSpecificAnimation);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCOREAPPLICATION_EXEC(5000);
+
+ QVERIFY(machine.configuration().contains(s3));
+ QCOMPARE(counter.counter, 2); // specific animation started and stopped
+}
+
+*/
+
+void tst_QStateMachine::parallelStateAssignmentsDone()
+{
+ QStateMachine machine;
+
+ QObject *propertyHolder = new QObject(&machine);
+ propertyHolder->setProperty("foo", 123);
+ propertyHolder->setProperty("bar", 456);
+ propertyHolder->setProperty("zoot", 789);
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *parallelState = new QState(QState::ParallelStates, &machine);
+ parallelState->assignProperty(propertyHolder, "foo", 321);
+
+ QState *s2 = new QState(parallelState);
+ s2->assignProperty(propertyHolder, "bar", 654);
+
+ QState *s3 = new QState(parallelState);
+ s3->assignProperty(propertyHolder, "zoot", 987);
+
+ s1->addTransition(new EventTransition(QEvent::User, parallelState));
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("foo").toInt(), 123);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 456);
+ QCOMPARE(propertyHolder->property("zoot").toInt(), 789);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(propertyHolder->property("foo").toInt(), 321);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 654);
+ QCOMPARE(propertyHolder->property("zoot").toInt(), 987);
+}
+
+void tst_QStateMachine::transitionsFromParallelStateWithNoChildren()
+{
+ QStateMachine machine;
+
+ QState *parallelState = new QState(QState::ParallelStates, &machine);
+ machine.setInitialState(parallelState);
+
+ QState *s1 = new QState(&machine);
+ parallelState->addTransition(new EventTransition(QEvent::User, s1));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(1, machine.configuration().size());
+ QVERIFY(machine.configuration().contains(parallelState));
+
+ machine.postEvent(new QEvent(QEvent::User));
+
+ QCoreApplication::processEvents();
+
+ QCOMPARE(1, machine.configuration().size());
+ QVERIFY(machine.configuration().contains(s1));
+}
+
+void tst_QStateMachine::parallelStateTransition()
+{
+ QStateMachine machine;
+
+ QState *parallelState = new QState(QState::ParallelStates, &machine);
+ machine.setInitialState(parallelState);
+
+ QState *s1 = new QState(parallelState);
+ QState *s2 = new QState(parallelState);
+
+ QState *s1InitialChild = new QState(s1);
+ s1->setInitialState(s1InitialChild);
+
+ QState *s2InitialChild = new QState(s2);
+ s2->setInitialState(s2InitialChild);
+
+ QState *s1OtherChild = new QState(s1);
+
+ s1->addTransition(new EventTransition(QEvent::User, s1OtherChild));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QVERIFY(machine.configuration().contains(parallelState));
+ QVERIFY(machine.configuration().contains(s1));
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s1InitialChild));
+ QVERIFY(machine.configuration().contains(s2InitialChild));
+ QCOMPARE(machine.configuration().size(), 5);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QVERIFY(machine.configuration().contains(parallelState));
+
+ QVERIFY(machine.configuration().contains(s1));
+
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s1OtherChild));
+ QVERIFY(machine.configuration().contains(s2InitialChild));
+ QCOMPARE(machine.configuration().size(), 5);
+
+}
+
+void tst_QStateMachine::nestedRestoreProperties()
+{
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+
+ QObject *propertyHolder = new QObject(&machine);
+ propertyHolder->setProperty("foo", 1);
+ propertyHolder->setProperty("bar", 2);
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(propertyHolder, "foo", 3);
+
+ QState *s21 = new QState(s2);
+ s21->assignProperty(propertyHolder, "bar", 4);
+ s2->setInitialState(s21);
+
+ QState *s22 = new QState(s2);
+ s22->assignProperty(propertyHolder, "bar", 5);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s21->addTransition(new EventTransition(QEvent::User, s22));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 1);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s21));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 3);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s22));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 3);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 5);
+}
+
+void tst_QStateMachine::nestedRestoreProperties2()
+{
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+
+ QObject *propertyHolder = new QObject(&machine);
+ propertyHolder->setProperty("foo", 1);
+ propertyHolder->setProperty("bar", 2);
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(&machine);
+ s2->assignProperty(propertyHolder, "foo", 3);
+
+ QState *s21 = new QState(s2);
+ s21->assignProperty(propertyHolder, "bar", 4);
+ s2->setInitialState(s21);
+
+ QState *s22 = new QState(s2);
+ s22->assignProperty(propertyHolder, "foo", 6);
+ s22->assignProperty(propertyHolder, "bar", 5);
+
+ s1->addTransition(new EventTransition(QEvent::User, s2));
+ s21->addTransition(new EventTransition(QEvent::User, s22));
+ s22->addTransition(new EventTransition(QEvent::User, s21));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 1);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 2);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s21));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 3);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 4);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s22));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 6);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 5);
+
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s21));
+ QCOMPARE(propertyHolder->property("foo").toInt(), 3);
+ QCOMPARE(propertyHolder->property("bar").toInt(), 4);
+
+}
+
+void tst_QStateMachine::nestedStateMachines()
+{
+ QStateMachine machine;
+ QState *group = new QState(&machine);
+ group->setChildMode(QState::ParallelStates);
+ QStateMachine *subMachines[3];
+ for (int i = 0; i < 3; ++i) {
+ QState *subGroup = new QState(group);
+ QStateMachine *subMachine = new QStateMachine(subGroup);
+ {
+ QState *initial = new QState(subMachine);
+ QFinalState *done = new QFinalState(subMachine);
+ initial->addTransition(new EventTransition(QEvent::User, done));
+ subMachine->setInitialState(initial);
+ }
+ QFinalState *subMachineDone = new QFinalState(subGroup);
+ subMachine->addTransition(subMachine, SIGNAL(finished()), subMachineDone);
+ subGroup->setInitialState(subMachine);
+ subMachines[i] = subMachine;
+ }
+ QFinalState *final = new QFinalState(&machine);
+ group->addTransition(group, SIGNAL(finished()), final);
+ machine.setInitialState(group);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QTRY_COMPARE(machine.configuration().count(), 1+2*3);
+ QVERIFY(machine.configuration().contains(group));
+ for (int i = 0; i < 3; ++i)
+ QVERIFY(machine.configuration().contains(subMachines[i]));
+
+ QCoreApplication::processEvents(); // starts the submachines
+
+ for (int i = 0; i < 3; ++i)
+ subMachines[i]->postEvent(new QEvent(QEvent::User));
+
+ QTRY_COMPARE(finishedSpy.count(), 1);
+}
+
+void tst_QStateMachine::goToState()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+ machine.setInitialState(s1);
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+
+ QStateMachinePrivate::get(&machine)->goToState(s2);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+
+ QStateMachinePrivate::get(&machine)->goToState(s2);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+
+ QStateMachinePrivate::get(&machine)->goToState(s1);
+ QStateMachinePrivate::get(&machine)->goToState(s2);
+ QStateMachinePrivate::get(&machine)->goToState(s1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ // go to state in group
+ QState *s2_1 = new QState(s2);
+ s2->setInitialState(s2_1);
+ QStateMachinePrivate::get(&machine)->goToState(s2_1);
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().size(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s2_1));
+}
+
+class CloneSignalTransition : public QSignalTransition
+{
+public:
+ CloneSignalTransition(QObject *sender, const char *signal, QAbstractState *target)
+ : QSignalTransition(sender, signal)
+ {
+ setTargetState(target);
+ }
+
+ void onTransition(QEvent *e)
+ {
+ QSignalTransition::onTransition(e);
+ QStateMachine::SignalEvent *se = static_cast<QStateMachine::SignalEvent*>(e);
+ eventSignalIndex = se->signalIndex();
+ }
+
+ int eventSignalIndex;
+};
+
+void tst_QStateMachine::task260403_clonedSignals()
+{
+ SignalEmitter emitter;
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QState *s2 = new QState(&machine);
+ CloneSignalTransition *t1 = new CloneSignalTransition(&emitter, SIGNAL(signalWithDefaultArg()), s2);
+ s1->addTransition(t1);
+
+ machine.setInitialState(s1);
+ machine.start();
+ QTest::qWait(1);
+
+ emitter.emitSignalWithDefaultArg();
+ QTest::qWait(1);
+ QCOMPARE(t1->eventSignalIndex, emitter.metaObject()->indexOfSignal("signalWithDefaultArg()"));
+}
+
+class EventPosterThread : public QThread
+{
+ Q_OBJECT
+public:
+ EventPosterThread(QStateMachine *machine, QObject *parent = 0)
+ : QThread(parent), m_machine(machine), m_count(0)
+ {
+ moveToThread(this);
+ QObject::connect(m_machine, SIGNAL(started()),
+ this, SLOT(postEvent()));
+ }
+protected:
+ virtual void run()
+ {
+ exec();
+ }
+private Q_SLOTS:
+ void postEvent()
+ {
+ m_machine->postEvent(new QEvent(QEvent::User));
+ if (++m_count < 10000)
+ QTimer::singleShot(0, this, SLOT(postEvent()));
+ else
+ quit();
+ }
+private:
+ QStateMachine *m_machine;
+ int m_count;
+};
+
+void tst_QStateMachine::postEventFromOtherThread()
+{
+ QStateMachine machine;
+ EventPosterThread poster(&machine);
+ StringEventPoster *s1 = new StringEventPoster("foo", &machine);
+ s1->addTransition(new EventTransition(QEvent::User, s1));
+ QFinalState *f = new QFinalState(&machine);
+ s1->addTransition(&poster, SIGNAL(finished()), f);
+ machine.setInitialState(s1);
+
+ poster.start();
+
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.start();
+ QTRY_COMPARE(finishedSpy.count(), 1);
+}
+
+void tst_QStateMachine::eventFilterForApplication()
+{
+ QStateMachine machine;
+
+ QState *s1 = new QState(&machine);
+ {
+ machine.setInitialState(s1);
+ }
+
+ QState *s2 = new QState(&machine);
+
+ QEventTransition *transition = new QEventTransition(QCoreApplication::instance(),
+ QEvent::ApplicationActivate);
+ transition->setTargetState(s2);
+ s1->addTransition(transition);
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ QCoreApplication::postEvent(QCoreApplication::instance(),
+ new QEvent(QEvent::ApplicationActivate));
+ QCoreApplication::processEvents();
+
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+}
+
+void tst_QStateMachine::eventClassesExported()
+{
+ // make sure this links
+ QStateMachine::WrappedEvent *wrappedEvent = new QStateMachine::WrappedEvent(0, 0);
+ Q_UNUSED(wrappedEvent);
+ QStateMachine::SignalEvent *signalEvent = new QStateMachine::SignalEvent(0, 0, QList<QVariant>());
+ Q_UNUSED(signalEvent);
+}
+
+void tst_QStateMachine::stopInTransitionToFinalState()
+{
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ QFinalState *s2 = new QFinalState(&machine);
+ QAbstractTransition *t1 = s1->addTransition(s2);
+ machine.setInitialState(s1);
+
+ QObject::connect(t1, SIGNAL(triggered()), &machine, SLOT(stop()));
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ QSignalSpy s2EnteredSpy(s2, SIGNAL(entered()));
+ machine.start();
+
+ // Stopping should take precedence over finished.
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(s2EnteredSpy.count(), 1);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s2));
+}
+
+class StopInEventTestTransition : public QAbstractTransition
+{
+public:
+ bool eventTest(QEvent *e)
+ {
+ if (e->type() == QEvent::User)
+ machine()->stop();
+ return false;
+ }
+ void onTransition(QEvent *)
+ { }
+};
+
+void tst_QStateMachine::stopInEventTest_data()
+{
+ QTest::addColumn<int>("eventPriority");
+ QTest::newRow("NormalPriority") << int(QStateMachine::NormalPriority);
+ QTest::newRow("HighPriority") << int(QStateMachine::HighPriority);
+}
+
+void tst_QStateMachine::stopInEventTest()
+{
+ QFETCH(int, eventPriority);
+
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+ s1->addTransition(new StopInEventTestTransition());
+ machine.setInitialState(s1);
+
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ QSignalSpy finishedSpy(&machine, SIGNAL(finished()));
+ machine.postEvent(new QEvent(QEvent::User), QStateMachine::EventPriority(eventPriority));
+
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(machine.configuration().size(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+}
+
+QTEST_MAIN(tst_QStateMachine)
+#include "tst_qstatemachine.moc"
diff --git a/tests/auto/corelib/statemachine/statemachine.pro b/tests/auto/corelib/statemachine/statemachine.pro
new file mode 100644
index 0000000000..aa645ac9f4
--- /dev/null
+++ b/tests/auto/corelib/statemachine/statemachine.pro
@@ -0,0 +1,4 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qstate \
+ qstatemachine
diff --git a/tests/auto/corelib/thread/qatomicint/.gitignore b/tests/auto/corelib/thread/qatomicint/.gitignore
new file mode 100644
index 0000000000..52998efd02
--- /dev/null
+++ b/tests/auto/corelib/thread/qatomicint/.gitignore
@@ -0,0 +1 @@
+tst_qatomicint
diff --git a/tests/auto/corelib/thread/qatomicint/qatomicint.pro b/tests/auto/corelib/thread/qatomicint/qatomicint.pro
new file mode 100644
index 0000000000..7850d93dc7
--- /dev/null
+++ b/tests/auto/corelib/thread/qatomicint/qatomicint.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qatomicint.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp b/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp
new file mode 100644
index 0000000000..27a2cc2e9c
--- /dev/null
+++ b/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp
@@ -0,0 +1,791 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <QAtomicInt>
+#include <QCoreApplication>
+
+#include <limits.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QAtomicInt : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QAtomicInt();
+ ~tst_QAtomicInt();
+
+private slots:
+ void warningFree();
+
+ // QAtomicInt members
+ void constructor_data();
+ void constructor();
+ void copy_constructor_data();
+ void copy_constructor();
+ void equality_operator_data();
+ void equality_operator();
+ void inequality_operator_data();
+ void inequality_operator();
+ void not_operator_data();
+ void not_operator();
+ void cast_operator_data();
+ void cast_operator();
+ void assignment_operator_data();
+ void assignment_operator();
+
+ void isReferenceCountingNative();
+ void isReferenceCountingWaitFree();
+ void ref_data();
+ void ref();
+ void deref_data();
+ void deref();
+
+ void isTestAndSetNative();
+ void isTestAndSetWaitFree();
+ void testAndSet_data();
+ void testAndSet();
+
+ void isFetchAndStoreNative();
+ void isFetchAndStoreWaitFree();
+ void fetchAndStore_data();
+ void fetchAndStore();
+
+ void isFetchAndAddNative();
+ void isFetchAndAddWaitFree();
+ void fetchAndAdd_data();
+ void fetchAndAdd();
+
+ // stress tests
+ void testAndSet_loop();
+ void fetchAndAdd_loop();
+ void fetchAndAdd_threadedLoop();
+
+private:
+ static void warningFreeHelper();
+};
+
+tst_QAtomicInt::tst_QAtomicInt()
+{ }
+
+tst_QAtomicInt::~tst_QAtomicInt()
+{ }
+
+void tst_QAtomicInt::warningFreeHelper()
+{
+ qFatal("This code is bogus, and shouldn't be run. We're looking for compiler warnings only.");
+
+ QBasicAtomicInt i = Q_BASIC_ATOMIC_INITIALIZER(0);
+
+ int expectedValue = 0;
+ int newValue = 0;
+ int valueToAdd = 0;
+
+ i.ref();
+ i.deref();
+
+ i.testAndSetRelaxed(expectedValue, newValue);
+ i.testAndSetAcquire(expectedValue, newValue);
+ i.testAndSetRelease(expectedValue, newValue);
+ i.testAndSetOrdered(expectedValue, newValue);
+
+ i.fetchAndStoreRelaxed(newValue);
+ i.fetchAndStoreAcquire(newValue);
+ i.fetchAndStoreRelease(newValue);
+ i.fetchAndStoreOrdered(newValue);
+
+ i.fetchAndAddRelaxed(valueToAdd);
+ i.fetchAndAddAcquire(valueToAdd);
+ i.fetchAndAddRelease(valueToAdd);
+ i.fetchAndAddOrdered(valueToAdd);
+}
+
+void tst_QAtomicInt::warningFree()
+{
+ // This is a compile time check for warnings.
+ // No need for actual work here.
+
+ void (*foo)() = &warningFreeHelper;
+ (void)foo;
+}
+
+void tst_QAtomicInt::constructor_data()
+{
+ QTest::addColumn<int>("value");
+
+ QTest::newRow("0") << 31337;
+ QTest::newRow("1") << 0;
+ QTest::newRow("2") << 1;
+ QTest::newRow("3") << -1;
+ QTest::newRow("4") << 2;
+ QTest::newRow("5") << -2;
+ QTest::newRow("6") << 3;
+ QTest::newRow("7") << -3;
+ QTest::newRow("8") << INT_MAX;
+ QTest::newRow("9") << INT_MIN+1;
+}
+
+void tst_QAtomicInt::constructor()
+{
+ QFETCH(int, value);
+ QAtomicInt atomic1(value);
+ QCOMPARE(int(atomic1), value);
+ QAtomicInt atomic2 = value;
+ QCOMPARE(int(atomic2), value);
+}
+
+void tst_QAtomicInt::copy_constructor_data()
+{ constructor_data(); }
+
+void tst_QAtomicInt::copy_constructor()
+{
+ QFETCH(int, value);
+ QAtomicInt atomic1(value);
+ QCOMPARE(int(atomic1), value);
+
+ QAtomicInt atomic2(atomic1);
+ QCOMPARE(int(atomic2), value);
+ QAtomicInt atomic3 = atomic1;
+ QCOMPARE(int(atomic3), value);
+ QAtomicInt atomic4(atomic2);
+ QCOMPARE(int(atomic4), value);
+ QAtomicInt atomic5 = atomic2;
+ QCOMPARE(int(atomic5), value);
+}
+
+void tst_QAtomicInt::equality_operator_data()
+{
+ QTest::addColumn<int>("value1");
+ QTest::addColumn<int>("value2");
+ QTest::addColumn<int>("result");
+
+ QTest::newRow("success0") << 1 << 1 << 1;
+ QTest::newRow("success1") << -1 << -1 << 1;
+ QTest::newRow("failure0") << 0 << 1 << 0;
+ QTest::newRow("failure1") << 1 << 0 << 0;
+ QTest::newRow("failure2") << 0 << -1 << 0;
+ QTest::newRow("failure3") << -1 << 0 << 0;
+}
+
+void tst_QAtomicInt::equality_operator()
+{
+ QFETCH(int, value1);
+ QFETCH(int, value2);
+ QAtomicInt x = value1;
+ QTEST(x == value2 ? 1 : 0, "result");
+}
+
+void tst_QAtomicInt::inequality_operator_data()
+{
+ QTest::addColumn<int>("value1");
+ QTest::addColumn<int>("value2");
+ QTest::addColumn<int>("result");
+
+ QTest::newRow("failure0") << 1 << 1 << 0;
+ QTest::newRow("failure1") << -1 << -1 << 0;
+ QTest::newRow("success0") << 0 << 1 << 1;
+ QTest::newRow("success1") << 1 << 0 << 1;
+ QTest::newRow("success2") << 0 << -1 << 1;
+ QTest::newRow("success3") << -1 << 0 << 1;
+}
+
+void tst_QAtomicInt::inequality_operator()
+{
+ QFETCH(int, value1);
+ QFETCH(int, value2);
+ QAtomicInt x = value1;
+ QTEST(x != value2 ? 1 : 0, "result");
+}
+
+void tst_QAtomicInt::not_operator_data()
+{ constructor_data(); }
+
+void tst_QAtomicInt::not_operator()
+{
+ QFETCH(int, value);
+ QAtomicInt atomic = value;
+ QCOMPARE(!atomic, !value);
+}
+
+void tst_QAtomicInt::cast_operator_data()
+{ constructor_data(); }
+
+void tst_QAtomicInt::cast_operator()
+{
+ QFETCH(int, value);
+ QAtomicInt atomic = value;
+ int copy = atomic;
+ QCOMPARE(copy, value);
+}
+
+void tst_QAtomicInt::assignment_operator_data()
+{
+ QTest::addColumn<int>("value");
+ QTest::addColumn<int>("newval");
+
+ QTest::newRow("value0") << 0 << 1;
+ QTest::newRow("value1") << 1 << 0;
+ QTest::newRow("value2") << 0 << -1;
+ QTest::newRow("value3") << -1 << 0;
+ QTest::newRow("value4") << -1 << 1;
+ QTest::newRow("value5") << 1 << -1;
+}
+
+void tst_QAtomicInt::assignment_operator()
+{
+ QFETCH(int, value);
+ QFETCH(int, newval);
+
+ {
+ QAtomicInt atomic1 = value;
+ atomic1 = newval;
+ QCOMPARE(int(atomic1), newval);
+ atomic1 = value;
+ QCOMPARE(int(atomic1), value);
+ QAtomicInt atomic2 = newval;
+ atomic1 = atomic2;
+ QCOMPARE(atomic1, atomic2);
+ }
+}
+
+void tst_QAtomicInt::isReferenceCountingNative()
+{
+#if defined(Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicInt::isReferenceCountingNative());
+
+# if (defined(Q_ATOMIC_INT_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE) \
+ || defined(Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_INT_REFERENCE_COUNTING_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_INT_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE)
+ // could be either, just want to make sure the function is implemented
+ QVERIFY(QAtomicInt::isReferenceCountingNative() || !QAtomicInt::isReferenceCountingNative());
+
+# if (defined(Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_INT_REFERENCE_COUNTING_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NOT_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicInt::isReferenceCountingNative());
+
+# if (defined(Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_INT_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE))
+# error "Define only one of Q_ATOMIC_INT_REFERENCE_COUNTING_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#else
+# error "Q_ATOMIC_INT_REFERENCE_COUNTING_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE is not defined"
+#endif
+}
+
+void tst_QAtomicInt::isReferenceCountingWaitFree()
+{
+#if defined(Q_ATOMIC_INT_REFERENCE_COUNTING_IS_WAIT_FREE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicInt::isReferenceCountingWaitFree());
+
+ // enforce some invariants
+ QVERIFY(QAtomicInt::isReferenceCountingNative());
+# if defined(Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NOT_NATIVE)
+# error "Reference counting cannot be wait-free and unsupported at the same time!"
+# endif
+#else
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicInt::isReferenceCountingWaitFree());
+#endif
+}
+
+void tst_QAtomicInt::ref_data()
+{
+ QTest::addColumn<int>("value");
+ QTest::addColumn<int>("result");
+ QTest::addColumn<int>("expected");
+
+ QTest::newRow("data0") << 0 << 1 << 1;
+ QTest::newRow("data1") << -1 << 0 << 0;
+ QTest::newRow("data2") << 1 << 1 << 2;
+}
+
+void tst_QAtomicInt::ref()
+{
+ QFETCH(int, value);
+ QAtomicInt x = value;
+ QTEST(x.ref() ? 1 : 0, "result");
+ QTEST(int(x), "expected");
+}
+
+void tst_QAtomicInt::deref_data()
+{
+ QTest::addColumn<int>("value");
+ QTest::addColumn<int>("result");
+ QTest::addColumn<int>("expected");
+
+ QTest::newRow("data0") << 0 << 1 << -1;
+ QTest::newRow("data1") << 1 << 0 << 0;
+ QTest::newRow("data2") << 2 << 1 << 1;
+}
+
+void tst_QAtomicInt::deref()
+{
+ QFETCH(int, value);
+ QAtomicInt x = value;
+ QTEST(x.deref() ? 1 : 0, "result");
+ QTEST(int(x), "expected");
+}
+
+void tst_QAtomicInt::isTestAndSetNative()
+{
+#if defined(Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicInt::isTestAndSetNative());
+
+# if (defined(Q_ATOMIC_INT_TEST_AND_SET_IS_SOMETIMES_NATIVE) \
+ || defined(Q_ATOMIC_INT_TEST_AND_SET_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_INT_TEST_AND_SET_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_INT_TEST_AND_SET_IS_SOMETIMES_NATIVE)
+ // could be either, just want to make sure the function is implemented
+ QVERIFY(QAtomicInt::isTestAndSetNative() || !QAtomicInt::isTestAndSetNative());
+
+# if (defined(Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_INT_TEST_AND_SET_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_INT_TEST_AND_SET_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_INT_TEST_AND_SET_IS_NOT_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicInt::isTestAndSetNative());
+
+# if (defined(Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_INT_TEST_AND_SET_IS_SOMETIMES_NATIVE))
+# error "Define only one of Q_ATOMIC_INT_TEST_AND_SET_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#else
+# error "Q_ATOMIC_INT_TEST_AND_SET_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE is not defined"
+#endif
+}
+
+void tst_QAtomicInt::isTestAndSetWaitFree()
+{
+#if defined(Q_ATOMIC_INT_TEST_AND_SET_IS_WAIT_FREE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicInt::isTestAndSetWaitFree());
+
+ // enforce some invariants
+ QVERIFY(QAtomicInt::isTestAndSetNative());
+# if defined(Q_ATOMIC_INT_TEST_AND_SET_IS_NOT_NATIVE)
+# error "Reference counting cannot be wait-free and unsupported at the same time!"
+# endif
+#else
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicInt::isTestAndSetWaitFree());
+#endif
+}
+
+void tst_QAtomicInt::testAndSet_data()
+{
+ QTest::addColumn<int>("value");
+ QTest::addColumn<int>("expected");
+ QTest::addColumn<int>("newval");
+ QTest::addColumn<int>("result");
+
+ // these should succeed
+ QTest::newRow("success0") << 0 << 0 << 0 << 1;
+ QTest::newRow("success1") << 0 << 0 << 1 << 1;
+ QTest::newRow("success2") << 0 << 0 << -1 << 1;
+ QTest::newRow("success3") << 1 << 1 << 0 << 1;
+ QTest::newRow("success4") << 1 << 1 << 1 << 1;
+ QTest::newRow("success5") << 1 << 1 << -1 << 1;
+ QTest::newRow("success6") << -1 << -1 << 0 << 1;
+ QTest::newRow("success7") << -1 << -1 << 1 << 1;
+ QTest::newRow("success8") << -1 << -1 << -1 << 1;
+ QTest::newRow("success9") << INT_MIN+1 << INT_MIN+1 << INT_MIN+1 << 1;
+ QTest::newRow("successA") << INT_MIN+1 << INT_MIN+1 << 1 << 1;
+ QTest::newRow("successB") << INT_MIN+1 << INT_MIN+1 << -1 << 1;
+ QTest::newRow("successC") << INT_MAX << INT_MAX << INT_MAX << 1;
+ QTest::newRow("successD") << INT_MAX << INT_MAX << 1 << 1;
+ QTest::newRow("successE") << INT_MAX << INT_MAX << -1 << 1;
+
+ // these should fail
+ QTest::newRow("failure0") << 0 << 1 << ~0 << 0;
+ QTest::newRow("failure1") << 0 << -1 << ~0 << 0;
+ QTest::newRow("failure2") << 1 << 0 << ~0 << 0;
+ QTest::newRow("failure3") << -1 << 0 << ~0 << 0;
+ QTest::newRow("failure4") << 1 << -1 << ~0 << 0;
+ QTest::newRow("failure5") << -1 << 1 << ~0 << 0;
+ QTest::newRow("failure6") << INT_MIN+1 << INT_MAX << ~0 << 0;
+ QTest::newRow("failure7") << INT_MAX << INT_MIN+1 << ~0 << 0;
+}
+
+void tst_QAtomicInt::testAndSet()
+{
+ QFETCH(int, value);
+ QFETCH(int, expected);
+ QFETCH(int, newval);
+
+ {
+ QAtomicInt atomic = value;
+ QTEST(atomic.testAndSetRelaxed(expected, newval) ? 1 : 0, "result");
+ }
+
+ {
+ QAtomicInt atomic = value;
+ QTEST(atomic.testAndSetAcquire(expected, newval) ? 1 : 0, "result");
+ }
+
+ {
+ QAtomicInt atomic = value;
+ QTEST(atomic.testAndSetRelease(expected, newval) ? 1 : 0, "result");
+ }
+
+ {
+ QAtomicInt atomic = value;
+ QTEST(atomic.testAndSetOrdered(expected, newval) ? 1 : 0, "result");
+ }
+}
+
+void tst_QAtomicInt::isFetchAndStoreNative()
+{
+#if defined(Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicInt::isFetchAndStoreNative());
+
+# if (defined(Q_ATOMIC_INT_FETCH_AND_STORE_IS_SOMETIMES_NATIVE) \
+ || defined(Q_ATOMIC_INT_FETCH_AND_STORE_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_INT_FETCH_AND_STORE_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_INT_FETCH_AND_STORE_IS_SOMETIMES_NATIVE)
+ // could be either, just want to make sure the function is implemented
+ QVERIFY(QAtomicInt::isFetchAndStoreNative() || !QAtomicInt::isFetchAndStoreNative());
+
+# if (defined(Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_INT_FETCH_AND_STORE_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_INT_FETCH_AND_STORE_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_INT_FETCH_AND_STORE_IS_NOT_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicInt::isFetchAndStoreNative());
+
+# if (defined(Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_INT_FETCH_AND_STORE_IS_SOMETIMES_NATIVE))
+# error "Define only one of Q_ATOMIC_INT_FETCH_AND_STORE_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#else
+# error "Q_ATOMIC_INT_FETCH_AND_STORE_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE is not defined"
+#endif
+}
+
+void tst_QAtomicInt::isFetchAndStoreWaitFree()
+{
+#if defined(Q_ATOMIC_INT_FETCH_AND_STORE_IS_WAIT_FREE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicInt::isFetchAndStoreWaitFree());
+
+ // enforce some invariants
+ QVERIFY(QAtomicInt::isFetchAndStoreNative());
+# if defined(Q_ATOMIC_INT_FETCH_AND_STORE_IS_NOT_NATIVE)
+# error "Reference counting cannot be wait-free and unsupported at the same time!"
+# endif
+#else
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicInt::isFetchAndStoreWaitFree());
+#endif
+}
+
+void tst_QAtomicInt::fetchAndStore_data()
+{
+ QTest::addColumn<int>("value");
+ QTest::addColumn<int>("newval");
+
+ QTest::newRow("data0") << 0 << 1;
+ QTest::newRow("data1") << 1 << 2;
+ QTest::newRow("data2") << 3 << 8;
+}
+
+void tst_QAtomicInt::fetchAndStore()
+{
+ QFETCH(int, value);
+ QFETCH(int, newval);
+
+ {
+ QAtomicInt atomic = value;
+ QCOMPARE(atomic.fetchAndStoreRelaxed(newval), value);
+ QCOMPARE(int(atomic), newval);
+ }
+
+ {
+ QAtomicInt atomic = value;
+ QCOMPARE(atomic.fetchAndStoreAcquire(newval), value);
+ QCOMPARE(int(atomic), newval);
+ }
+
+ {
+ QAtomicInt atomic = value;
+ QCOMPARE(atomic.fetchAndStoreRelease(newval), value);
+ QCOMPARE(int(atomic), newval);
+ }
+
+ {
+ QAtomicInt atomic = value;
+ QCOMPARE(atomic.fetchAndStoreOrdered(newval), value);
+ QCOMPARE(int(atomic), newval);
+ }
+}
+
+void tst_QAtomicInt::isFetchAndAddNative()
+{
+#if defined(Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicInt::isFetchAndAddNative());
+
+# if (defined(Q_ATOMIC_INT_FETCH_AND_ADD_IS_SOMETIMES_NATIVE) \
+ || defined(Q_ATOMIC_INT_FETCH_AND_ADD_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_INT_FETCH_AND_ADD_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_INT_FETCH_AND_ADD_IS_SOMETIMES_NATIVE)
+ // could be either, just want to make sure the function is implemented
+ QVERIFY(QAtomicInt::isFetchAndAddNative() || !QAtomicInt::isFetchAndAddNative());
+
+# if (defined(Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_INT_FETCH_AND_ADD_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_INT_FETCH_AND_ADD_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_INT_FETCH_AND_ADD_IS_NOT_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicInt::isFetchAndAddNative());
+
+# if (defined(Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_INT_FETCH_AND_ADD_IS_SOMETIMES_NATIVE))
+# error "Define only one of Q_ATOMIC_INT_FETCH_AND_ADD_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#else
+# error "Q_ATOMIC_INT_FETCH_AND_ADD_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE is not defined"
+#endif
+}
+
+void tst_QAtomicInt::isFetchAndAddWaitFree()
+{
+#if defined(Q_ATOMIC_INT_FETCH_AND_ADD_IS_WAIT_FREE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicInt::isFetchAndAddWaitFree());
+
+ // enforce some invariants
+ QVERIFY(QAtomicInt::isFetchAndAddNative());
+# if defined(Q_ATOMIC_INT_FETCH_AND_ADD_IS_NOT_NATIVE)
+# error "Reference counting cannot be wait-free and unsupported at the same time!"
+# endif
+#else
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicInt::isFetchAndAddWaitFree());
+#endif
+}
+
+void tst_QAtomicInt::fetchAndAdd_data()
+{
+ QTest::addColumn<int>("value1");
+ QTest::addColumn<int>("value2");
+
+ QTest::newRow("0+1") << 0 << 1;
+ QTest::newRow("1+0") << 1 << 0;
+ QTest::newRow("1+2") << 1 << 2;
+ QTest::newRow("2+1") << 2 << 1;
+ QTest::newRow("10+21") << 10 << 21;
+ QTest::newRow("31+40") << 31 << 40;
+ QTest::newRow("51+62") << 51 << 62;
+ QTest::newRow("72+81") << 72 << 81;
+ QTest::newRow("810+721") << 810 << 721;
+ QTest::newRow("631+540") << 631 << 540;
+ QTest::newRow("451+362") << 451 << 362;
+ QTest::newRow("272+181") << 272 << 181;
+ QTest::newRow("1810+8721") << 1810 << 8721;
+ QTest::newRow("3631+6540") << 3631 << 6540;
+ QTest::newRow("5451+4362") << 5451 << 4362;
+ QTest::newRow("7272+2181") << 7272 << 2181;
+
+ QTest::newRow("0+-1") << 0 << -1;
+ QTest::newRow("1+0") << 1 << 0;
+ QTest::newRow("1+-2") << 1 << -2;
+ QTest::newRow("2+-1") << 2 << -1;
+ QTest::newRow("10+-21") << 10 << -21;
+ QTest::newRow("31+-40") << 31 << -40;
+ QTest::newRow("51+-62") << 51 << -62;
+ QTest::newRow("72+-81") << 72 << -81;
+ QTest::newRow("810+-721") << 810 << -721;
+ QTest::newRow("631+-540") << 631 << -540;
+ QTest::newRow("451+-362") << 451 << -362;
+ QTest::newRow("272+-181") << 272 << -181;
+ QTest::newRow("1810+-8721") << 1810 << -8721;
+ QTest::newRow("3631+-6540") << 3631 << -6540;
+ QTest::newRow("5451+-4362") << 5451 << -4362;
+ QTest::newRow("7272+-2181") << 7272 << -2181;
+
+ QTest::newRow("0+1") << 0 << 1;
+ QTest::newRow("-1+0") << -1 << 0;
+ QTest::newRow("-1+2") << -1 << 2;
+ QTest::newRow("-2+1") << -2 << 1;
+ QTest::newRow("-10+21") << -10 << 21;
+ QTest::newRow("-31+40") << -31 << 40;
+ QTest::newRow("-51+62") << -51 << 62;
+ QTest::newRow("-72+81") << -72 << 81;
+ QTest::newRow("-810+721") << -810 << 721;
+ QTest::newRow("-631+540") << -631 << 540;
+ QTest::newRow("-451+362") << -451 << 362;
+ QTest::newRow("-272+181") << -272 << 181;
+ QTest::newRow("-1810+8721") << -1810 << 8721;
+ QTest::newRow("-3631+6540") << -3631 << 6540;
+ QTest::newRow("-5451+4362") << -5451 << 4362;
+ QTest::newRow("-7272+2181") << -7272 << 2181;
+}
+
+void tst_QAtomicInt::fetchAndAdd()
+{
+ QFETCH(int, value1);
+ QFETCH(int, value2);
+ int result;
+
+ {
+ QAtomicInt atomic = value1;
+ result = atomic.fetchAndAddRelaxed(value2);
+ QCOMPARE(result, value1);
+ QCOMPARE(int(atomic), value1 + value2);
+ }
+
+ {
+ QAtomicInt atomic = value1;
+ result = atomic.fetchAndAddAcquire(value2);
+ QCOMPARE(result, value1);
+ QCOMPARE(int(atomic), value1 + value2);
+ }
+
+ {
+ QAtomicInt atomic = value1;
+ result = atomic.fetchAndAddRelease(value2);
+ QCOMPARE(result, value1);
+ QCOMPARE(int(atomic), value1 + value2);
+ }
+
+ {
+ QAtomicInt atomic = value1;
+ result = atomic.fetchAndAddOrdered(value2);
+ QCOMPARE(result, value1);
+ QCOMPARE(int(atomic), value1 + value2);
+ }
+}
+
+void tst_QAtomicInt::testAndSet_loop()
+{
+ QTime stopWatch;
+ stopWatch.start();
+
+ int iterations = 10000000;
+
+ QAtomicInt val=0;
+ for (int i = 0; i < iterations; ++i) {
+ QVERIFY(val.testAndSetRelaxed(val, val+1));
+ if ((i % 1000) == 999) {
+ if (stopWatch.elapsed() > 60 * 1000) {
+ // This test shouldn't run for more than two minutes.
+ qDebug("Interrupted test after %d iterations (%.2f iterations/sec)",
+ i, (i * 1000.0) / double(stopWatch.elapsed()));
+ break;
+ }
+ }
+ }
+}
+
+void tst_QAtomicInt::fetchAndAdd_loop()
+{
+ int iterations = 10000000;
+#if defined (Q_OS_HPUX)
+ iterations = 1000000;
+#endif
+
+ QAtomicInt val=0;
+ for (int i = 0; i < iterations; ++i) {
+ const int prev = val.fetchAndAddRelaxed(1);
+ QCOMPARE(prev, int(val) -1);
+ }
+}
+
+class FetchAndAddThread : public QThread
+{
+public:
+ void run()
+ {
+
+ for (int i = 0; i < iterations; ++i)
+ val->fetchAndAddAcquire(1);
+
+ for (int i = 0; i < iterations; ++i)
+ val->fetchAndAddAcquire(-1);
+
+ }
+QAtomicInt *val;
+int iterations;
+};
+
+
+void tst_QAtomicInt::fetchAndAdd_threadedLoop()
+{
+ QAtomicInt val;
+ FetchAndAddThread t1;
+ t1.val = &val;
+ t1.iterations = 1000000;
+
+ FetchAndAddThread t2;
+ t2.val = &val;
+ t2.iterations = 2000000;
+
+ t1.start();
+ t2.start();
+ t1.wait();
+ t2.wait();
+
+ QCOMPARE(int(val), 0);
+}
+
+QTEST_MAIN(tst_QAtomicInt)
+#include "tst_qatomicint.moc"
diff --git a/tests/auto/corelib/thread/qatomicpointer/.gitignore b/tests/auto/corelib/thread/qatomicpointer/.gitignore
new file mode 100644
index 0000000000..2843c40749
--- /dev/null
+++ b/tests/auto/corelib/thread/qatomicpointer/.gitignore
@@ -0,0 +1 @@
+tst_qatomicpointer
diff --git a/tests/auto/corelib/thread/qatomicpointer/qatomicpointer.pro b/tests/auto/corelib/thread/qatomicpointer/qatomicpointer.pro
new file mode 100644
index 0000000000..89ff137d39
--- /dev/null
+++ b/tests/auto/corelib/thread/qatomicpointer/qatomicpointer.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qatomicpointer.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp b/tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp
new file mode 100644
index 0000000000..42e744aaa6
--- /dev/null
+++ b/tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp
@@ -0,0 +1,674 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qatomic.h>
+
+#include <limits.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QAtomicPointer : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QAtomicPointer();
+ ~tst_QAtomicPointer();
+
+private slots:
+ void warningFree();
+
+ void constructor();
+ void copy_constructor();
+ void equality_operator();
+ void inequality_operator();
+ void assignment_operator();
+ void star_operator();
+ void dereference_operator();
+
+ void isTestAndSetNative();
+ void isTestAndSetWaitFree();
+ void testAndSet();
+
+ void isFetchAndStoreNative();
+ void isFetchAndStoreWaitFree();
+ void fetchAndStore();
+
+ void isFetchAndAddNative();
+ void isFetchAndAddWaitFree();
+ void fetchAndAdd_data();
+ void fetchAndAdd();
+
+private:
+ static void warningFreeHelper();
+};
+
+tst_QAtomicPointer::tst_QAtomicPointer()
+{ }
+
+tst_QAtomicPointer::~tst_QAtomicPointer()
+{ }
+
+struct WFHC
+{
+ void bar() {}
+};
+
+void tst_QAtomicPointer::warningFreeHelper()
+{
+ qFatal("This code is bogus, and shouldn't be run. We're looking for compiler warnings only.");
+
+ QBasicAtomicPointer<WFHC> p = Q_BASIC_ATOMIC_INITIALIZER(0);
+
+ p->bar();
+
+ WFHC *expectedValue = 0;
+ WFHC *newValue = 0;
+ qptrdiff valueToAdd = 0;
+
+ p.testAndSetRelaxed(expectedValue, newValue);
+ p.testAndSetAcquire(expectedValue, newValue);
+ p.testAndSetRelease(expectedValue, newValue);
+ p.testAndSetOrdered(expectedValue, newValue);
+
+ p.fetchAndStoreRelaxed(newValue);
+ p.fetchAndStoreAcquire(newValue);
+ p.fetchAndStoreRelease(newValue);
+ p.fetchAndStoreOrdered(newValue);
+
+ p.fetchAndAddRelaxed(valueToAdd);
+ p.fetchAndAddAcquire(valueToAdd);
+ p.fetchAndAddRelease(valueToAdd);
+ p.fetchAndAddOrdered(valueToAdd);
+}
+
+void tst_QAtomicPointer::warningFree()
+{
+ // This is a compile time check for warnings.
+ // No need for actual work here.
+
+ void (*foo)() = &warningFreeHelper;
+ (void)foo;
+}
+
+void tst_QAtomicPointer::constructor()
+{
+ void *one = this;
+ QAtomicPointer<void> atomic1 = one;
+ QVERIFY(atomic1 == one);
+
+ void *two = &one;
+ QAtomicPointer<void> atomic2 = two;
+ QVERIFY(atomic2 == two);
+
+ void *three = &two;
+ QAtomicPointer<void> atomic3 = three;
+ QVERIFY(atomic3 == three);
+}
+
+void tst_QAtomicPointer::copy_constructor()
+{
+ void *one = this;
+ QAtomicPointer<void> atomic1 = one;
+ QAtomicPointer<void> atomic1_copy = atomic1;
+ QVERIFY(atomic1_copy == one);
+ QCOMPARE(atomic1_copy, atomic1);
+
+ void *two = &one;
+ QAtomicPointer<void> atomic2 = two;
+ QAtomicPointer<void> atomic2_copy = atomic2;
+ QVERIFY(atomic2_copy == two);
+ QCOMPARE(atomic2_copy, atomic2);
+
+ void *three = &two;
+ QAtomicPointer<void> atomic3 = three;
+ QAtomicPointer<void> atomic3_copy = atomic3;
+ QVERIFY(atomic3_copy == three);
+ QCOMPARE(atomic3_copy, atomic3);
+}
+
+void tst_QAtomicPointer::equality_operator()
+{
+ void *one = this;
+ void *two = &one;
+ void *three = &two;
+
+ QAtomicPointer<void> atomic1 = one;
+ QAtomicPointer<void> atomic2 = two;
+ QAtomicPointer<void> atomic3 = three;
+
+ QVERIFY(atomic1 == one);
+ QVERIFY(!(atomic1 == two));
+ QVERIFY(!(atomic1 == three));
+
+ QVERIFY(!(atomic2 == one));
+ QVERIFY(atomic2 == two);
+ QVERIFY(!(atomic2 == three));
+
+ QVERIFY(!(atomic3 == one));
+ QVERIFY(!(atomic3 == two));
+ QVERIFY(atomic3 == three);
+}
+
+void tst_QAtomicPointer::inequality_operator()
+{
+ void *one = this;
+ void *two = &one;
+ void *three = &two;
+
+ QAtomicPointer<void> atomic1 = one;
+ QAtomicPointer<void> atomic2 = two;
+ QAtomicPointer<void> atomic3 = three;
+
+ QVERIFY(!(atomic1 != one));
+ QVERIFY(atomic1 != two);
+ QVERIFY(atomic1 != three);
+
+ QVERIFY(atomic2 != one);
+ QVERIFY(!(atomic2 != two));
+ QVERIFY(atomic2 != three);
+
+ QVERIFY(atomic3 != one);
+ QVERIFY(atomic3 != two);
+ QVERIFY(!(atomic3 != three));
+}
+
+void tst_QAtomicPointer::assignment_operator()
+{
+ void *one = this;
+ void *two = &one;
+ void *three = &two;
+
+ QAtomicPointer<void> atomic1 = one;
+ QAtomicPointer<void> atomic2 = two;
+ QAtomicPointer<void> atomic3 = three;
+
+ QVERIFY(atomic1 == one);
+ QVERIFY(atomic2 == two);
+ QVERIFY(atomic3 == three);
+
+ atomic1 = two;
+ atomic2 = three;
+ atomic3 = one;
+
+ QVERIFY(atomic1 == two);
+ QVERIFY(atomic2 == three);
+ QVERIFY(atomic3 == one);
+}
+
+struct Type
+{
+ inline const Type *self() const
+ { return this; }
+};
+
+void tst_QAtomicPointer::star_operator()
+{
+ Type t;
+ QAtomicPointer<Type> p = &t;
+ QCOMPARE((*p).self(), t.self());
+}
+
+void tst_QAtomicPointer::dereference_operator()
+{
+ Type t;
+ QAtomicPointer<Type> p = &t;
+ QCOMPARE(p->self(), t.self());
+}
+
+void tst_QAtomicPointer::isTestAndSetNative()
+{
+#if defined(Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicPointer<void>::isTestAndSetNative());
+
+# if (defined(Q_ATOMIC_POINTER_TEST_AND_SET_IS_SOMETIMES_NATIVE) \
+ || defined(Q_ATOMIC_POINTER_TEST_AND_SET_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_POINTER_TEST_AND_SET_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_POINTER_TEST_AND_SET_IS_SOMETIMES_NATIVE)
+ // could be either, just want to make sure the function is implemented
+ QVERIFY(QAtomicPointer<void>::isTestAndSetNative()
+ || !QAtomicPointer<void>::isTestAndSetNative());
+
+# if (defined(Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_POINTER_TEST_AND_SET_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_POINTER_TEST_AND_SET_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_POINTER_TEST_AND_SET_IS_NOT_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicPointer<void>::isTestAndSetNative());
+
+# if (defined(Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_POINTER_TEST_AND_SET_IS_SOMETIMES_NATIVE))
+# error "Define only one of Q_ATOMIC_POINTER_TEST_AND_SET_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#else
+# error "Q_ATOMIC_POINTER_TEST_AND_SET_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE is not defined"
+#endif
+}
+
+void tst_QAtomicPointer::isTestAndSetWaitFree()
+{
+#if defined(Q_ATOMIC_POINTER_TEST_AND_SET_IS_WAIT_FREE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicPointer<void>::isTestAndSetWaitFree());
+
+ // enforce some invariants
+ QVERIFY(QAtomicPointer<void>::isTestAndSetNative());
+# if defined(Q_ATOMIC_POINTER_TEST_AND_SET_IS_NOT_NATIVE)
+# error "Reference counting cannot be wait-free and unsupported at the same time!"
+# endif
+#else
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicPointer<void>::isTestAndSetWaitFree());
+#endif
+}
+
+void tst_QAtomicPointer::testAndSet()
+{
+ void *one = this;
+ void *two = &one;
+ void *three = &two;
+
+ {
+ QAtomicPointer<void> atomic1 = one;
+ QAtomicPointer<void> atomic2 = two;
+ QAtomicPointer<void> atomic3 = three;
+
+ QVERIFY(atomic1 == one);
+ QVERIFY(atomic2 == two);
+ QVERIFY(atomic3 == three);
+
+ QVERIFY(atomic1.testAndSetRelaxed(one, two));
+ QVERIFY(atomic2.testAndSetRelaxed(two, three));
+ QVERIFY(atomic3.testAndSetRelaxed(three, one));
+
+ QVERIFY(atomic1 == two);
+ QVERIFY(atomic2 == three);
+ QVERIFY(atomic3 == one);
+ }
+
+ {
+ QAtomicPointer<void> atomic1 = one;
+ QAtomicPointer<void> atomic2 = two;
+ QAtomicPointer<void> atomic3 = three;
+
+ QVERIFY(atomic1 == one);
+ QVERIFY(atomic2 == two);
+ QVERIFY(atomic3 == three);
+
+ QVERIFY(atomic1.testAndSetAcquire(one, two));
+ QVERIFY(atomic2.testAndSetAcquire(two, three));
+ QVERIFY(atomic3.testAndSetAcquire(three, one));
+
+ QVERIFY(atomic1 == two);
+ QVERIFY(atomic2 == three);
+ QVERIFY(atomic3 == one);
+ }
+
+ {
+ QAtomicPointer<void> atomic1 = one;
+ QAtomicPointer<void> atomic2 = two;
+ QAtomicPointer<void> atomic3 = three;
+
+ QVERIFY(atomic1 == one);
+ QVERIFY(atomic2 == two);
+ QVERIFY(atomic3 == three);
+
+ QVERIFY(atomic1.testAndSetRelease(one, two));
+ QVERIFY(atomic2.testAndSetRelease(two, three));
+ QVERIFY(atomic3.testAndSetRelease(three, one));
+
+ QVERIFY(atomic1 == two);
+ QVERIFY(atomic2 == three);
+ QVERIFY(atomic3 == one);
+ }
+
+ {
+ QAtomicPointer<void> atomic1 = one;
+ QAtomicPointer<void> atomic2 = two;
+ QAtomicPointer<void> atomic3 = three;
+
+ QVERIFY(atomic1 == one);
+ QVERIFY(atomic2 == two);
+ QVERIFY(atomic3 == three);
+
+ QVERIFY(atomic1.testAndSetOrdered(one, two));
+ QVERIFY(atomic2.testAndSetOrdered(two, three));
+ QVERIFY(atomic3.testAndSetOrdered(three, one));
+
+ QVERIFY(atomic1 == two);
+ QVERIFY(atomic2 == three);
+ QVERIFY(atomic3 == one);
+ }
+}
+
+void tst_QAtomicPointer::isFetchAndStoreNative()
+{
+#if defined(Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicPointer<void>::isFetchAndStoreNative());
+
+# if (defined(Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_SOMETIMES_NATIVE) \
+ || defined(Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_SOMETIMES_NATIVE)
+ // could be either, just want to make sure the function is implemented
+ QVERIFY(QAtomicPointer<void>::isFetchAndStoreNative()
+ || !QAtomicPointer<void>::isFetchAndStoreNative());
+
+# if (defined(Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_NOT_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicPointer<void>::isFetchAndStoreNative());
+
+# if (defined(Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_SOMETIMES_NATIVE))
+# error "Define only one of Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#else
+# error "Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE is not defined"
+#endif
+}
+
+void tst_QAtomicPointer::isFetchAndStoreWaitFree()
+{
+#if defined(Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_WAIT_FREE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicPointer<void>::isFetchAndStoreWaitFree());
+
+ // enforce some invariants
+ QVERIFY(QAtomicPointer<void>::isFetchAndStoreNative());
+# if defined(Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_NOT_NATIVE)
+# error "Reference counting cannot be wait-free and unsupported at the same time!"
+# endif
+#else
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicPointer<void>::isFetchAndStoreWaitFree());
+#endif
+}
+
+void tst_QAtomicPointer::fetchAndStore()
+{
+ void *one = this;
+ void *two = &one;
+ void *three = &two;
+
+ {
+ QAtomicPointer<void> atomic1 = one;
+ QAtomicPointer<void> atomic2 = two;
+ QAtomicPointer<void> atomic3 = three;
+
+ QVERIFY(atomic1 == one);
+ QVERIFY(atomic2 == two);
+ QVERIFY(atomic3 == three);
+
+ QCOMPARE(atomic1.fetchAndStoreRelaxed(two), one);
+ QCOMPARE(atomic2.fetchAndStoreRelaxed(three), two);
+ QCOMPARE(atomic3.fetchAndStoreRelaxed(one), three);
+
+ QVERIFY(atomic1 == two);
+ QVERIFY(atomic2 == three);
+ QVERIFY(atomic3 == one);
+ }
+
+ {
+ QAtomicPointer<void> atomic1 = one;
+ QAtomicPointer<void> atomic2 = two;
+ QAtomicPointer<void> atomic3 = three;
+
+ QVERIFY(atomic1 == one);
+ QVERIFY(atomic2 == two);
+ QVERIFY(atomic3 == three);
+
+ QCOMPARE(atomic1.fetchAndStoreAcquire(two), one);
+ QCOMPARE(atomic2.fetchAndStoreAcquire(three), two);
+ QCOMPARE(atomic3.fetchAndStoreAcquire(one), three);
+
+ QVERIFY(atomic1 == two);
+ QVERIFY(atomic2 == three);
+ QVERIFY(atomic3 == one);
+ }
+
+ {
+ QAtomicPointer<void> atomic1 = one;
+ QAtomicPointer<void> atomic2 = two;
+ QAtomicPointer<void> atomic3 = three;
+
+ QVERIFY(atomic1 == one);
+ QVERIFY(atomic2 == two);
+ QVERIFY(atomic3 == three);
+
+ QCOMPARE(atomic1.fetchAndStoreRelease(two), one);
+ QCOMPARE(atomic2.fetchAndStoreRelease(three), two);
+ QCOMPARE(atomic3.fetchAndStoreRelease(one), three);
+
+ QVERIFY(atomic1 == two);
+ QVERIFY(atomic2 == three);
+ QVERIFY(atomic3 == one);
+ }
+
+ {
+ QAtomicPointer<void> atomic1 = one;
+ QAtomicPointer<void> atomic2 = two;
+ QAtomicPointer<void> atomic3 = three;
+
+ QVERIFY(atomic1 == one);
+ QVERIFY(atomic2 == two);
+ QVERIFY(atomic3 == three);
+
+ QCOMPARE(atomic1.fetchAndStoreOrdered(two), one);
+ QCOMPARE(atomic2.fetchAndStoreOrdered(three), two);
+ QCOMPARE(atomic3.fetchAndStoreOrdered(one), three);
+
+ QVERIFY(atomic1 == two);
+ QVERIFY(atomic2 == three);
+ QVERIFY(atomic3 == one);
+ }
+}
+
+void tst_QAtomicPointer::isFetchAndAddNative()
+{
+#if defined(Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicPointer<void>::isFetchAndAddNative());
+
+# if (defined(Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_SOMETIMES_NATIVE) \
+ || defined(Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_SOMETIMES_NATIVE)
+ // could be either, just want to make sure the function is implemented
+ QVERIFY(QAtomicPointer<void>::isFetchAndAddNative()
+ || !QAtomicPointer<void>::isFetchAndAddNative());
+
+# if (defined(Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_NOT_NATIVE))
+# error "Define only one of Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#elif defined(Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_NOT_NATIVE)
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicPointer<void>::isFetchAndAddNative());
+
+# if (defined(Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE) \
+ || defined(Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_SOMETIMES_NATIVE))
+# error "Define only one of Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE"
+# endif
+#else
+# error "Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_{ALWAYS,SOMTIMES,NOT}_NATIVE is not defined"
+#endif
+}
+
+void tst_QAtomicPointer::isFetchAndAddWaitFree()
+{
+#if defined(Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_WAIT_FREE)
+ // the runtime test should say the same thing
+ QVERIFY(QAtomicPointer<void>::isFetchAndAddWaitFree());
+
+ // enforce some invariants
+ QVERIFY(QAtomicPointer<void>::isFetchAndAddNative());
+# if defined(Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_NOT_NATIVE)
+# error "Reference counting cannot be wait-free and unsupported at the same time!"
+# endif
+#else
+ // the runtime test should say the same thing
+ QVERIFY(!QAtomicPointer<void>::isFetchAndAddWaitFree());
+#endif
+}
+
+void tst_QAtomicPointer::fetchAndAdd_data()
+{
+ QTest::addColumn<int>("valueToAdd");
+
+ QTest::newRow("0") << 0;
+ QTest::newRow("1") << 1;
+ QTest::newRow("2") << 2;
+ QTest::newRow("10") << 10;
+ QTest::newRow("31") << 31;
+ QTest::newRow("51") << 51;
+ QTest::newRow("72") << 72;
+ QTest::newRow("810") << 810;
+ QTest::newRow("631") << 631;
+ QTest::newRow("451") << 451;
+ QTest::newRow("272") << 272;
+ QTest::newRow("1810") << 1810;
+ QTest::newRow("3631") << 3631;
+ QTest::newRow("5451") << 5451;
+ QTest::newRow("7272") << 7272;
+ QTest::newRow("-1") << -1;
+ QTest::newRow("-2") << -2;
+ QTest::newRow("-10") << -10;
+ QTest::newRow("-31") << -31;
+ QTest::newRow("-51") << -51;
+ QTest::newRow("-72") << -72;
+ QTest::newRow("-810") << -810;
+ QTest::newRow("-631") << -631;
+ QTest::newRow("-451") << -451;
+ QTest::newRow("-272") << -272;
+ QTest::newRow("-1810") << -1810;
+ QTest::newRow("-3631") << -3631;
+ QTest::newRow("-5451") << -5451;
+ QTest::newRow("-7272") << -7272;
+}
+
+void tst_QAtomicPointer::fetchAndAdd()
+{
+ QFETCH(int, valueToAdd);
+
+ char c;
+ char *pc = &c;
+ short s;
+ short *ps = &s;
+ int i;
+ int *pi = &i;
+
+ {
+ QAtomicPointer<char> pointer1 = pc;
+ QCOMPARE(quintptr(pointer1.fetchAndAddRelaxed(valueToAdd)), quintptr(pc));
+ QCOMPARE(quintptr(pointer1.fetchAndAddRelaxed(-valueToAdd)), quintptr(pc + valueToAdd));
+ QCOMPARE(quintptr(static_cast<char *>(pointer1)), quintptr(pc));
+ QAtomicPointer<short> pointer2 = ps;
+ QCOMPARE(quintptr(pointer2.fetchAndAddRelaxed(valueToAdd)), quintptr(ps));
+ QCOMPARE(quintptr(pointer2.fetchAndAddRelaxed(-valueToAdd)), quintptr(ps + valueToAdd));
+ QCOMPARE(quintptr(static_cast<short *>(pointer2)), quintptr(ps));
+ QAtomicPointer<int> pointer3 = pi;
+ QCOMPARE(quintptr(pointer3.fetchAndAddRelaxed(valueToAdd)), quintptr(pi));
+ QCOMPARE(quintptr(pointer3.fetchAndAddRelaxed(-valueToAdd)), quintptr(pi + valueToAdd));
+ QCOMPARE(quintptr(static_cast<int *>(pointer3)), quintptr(pi));
+ }
+
+ {
+ QAtomicPointer<char> pointer1 = pc;
+ QCOMPARE(quintptr(pointer1.fetchAndAddAcquire(valueToAdd)), quintptr(pc));
+ QCOMPARE(quintptr(pointer1.fetchAndAddAcquire(-valueToAdd)), quintptr(pc + valueToAdd));
+ QCOMPARE(quintptr(static_cast<char *>(pointer1)), quintptr(pc));
+ QAtomicPointer<short> pointer2 = ps;
+ QCOMPARE(quintptr(pointer2.fetchAndAddAcquire(valueToAdd)), quintptr(ps));
+ QCOMPARE(quintptr(pointer2.fetchAndAddAcquire(-valueToAdd)), quintptr(ps + valueToAdd));
+ QCOMPARE(quintptr(static_cast<short *>(pointer2)), quintptr(ps));
+ QAtomicPointer<int> pointer3 = pi;
+ QCOMPARE(quintptr(pointer3.fetchAndAddAcquire(valueToAdd)), quintptr(pi));
+ QCOMPARE(quintptr(pointer3.fetchAndAddAcquire(-valueToAdd)), quintptr(pi + valueToAdd));
+ QCOMPARE(quintptr(static_cast<int *>(pointer3)), quintptr(pi));
+ }
+
+ {
+ QAtomicPointer<char> pointer1 = pc;
+ QCOMPARE(quintptr(pointer1.fetchAndAddRelease(valueToAdd)), quintptr(pc));
+ QCOMPARE(quintptr(pointer1.fetchAndAddRelease(-valueToAdd)), quintptr(pc + valueToAdd));
+ QCOMPARE(quintptr(static_cast<char *>(pointer1)), quintptr(pc));
+ QAtomicPointer<short> pointer2 = ps;
+ QCOMPARE(quintptr(pointer2.fetchAndAddRelease(valueToAdd)), quintptr(ps));
+ QCOMPARE(quintptr(pointer2.fetchAndAddRelease(-valueToAdd)), quintptr(ps + valueToAdd));
+ QCOMPARE(quintptr(static_cast<short *>(pointer2)), quintptr(ps));
+ QAtomicPointer<int> pointer3 = pi;
+ QCOMPARE(quintptr(pointer3.fetchAndAddRelease(valueToAdd)), quintptr(pi));
+ QCOMPARE(quintptr(pointer3.fetchAndAddRelease(-valueToAdd)), quintptr(pi + valueToAdd));
+ QCOMPARE(quintptr(static_cast<int *>(pointer3)), quintptr(pi));
+ }
+
+ {
+ QAtomicPointer<char> pointer1 = pc;
+ QCOMPARE(quintptr(pointer1.fetchAndAddOrdered(valueToAdd)), quintptr(pc));
+ QCOMPARE(quintptr(pointer1.fetchAndAddOrdered(-valueToAdd)), quintptr(pc + valueToAdd));
+ QCOMPARE(quintptr(static_cast<char *>(pointer1)), quintptr(pc));
+ QAtomicPointer<short> pointer2 = ps;
+ QCOMPARE(quintptr(pointer2.fetchAndAddOrdered(valueToAdd)), quintptr(ps));
+ QCOMPARE(quintptr(pointer2.fetchAndAddOrdered(-valueToAdd)), quintptr(ps + valueToAdd));
+ QCOMPARE(quintptr(static_cast<short *>(pointer2)), quintptr(ps));
+ QAtomicPointer<int> pointer3 = pi;
+ QCOMPARE(quintptr(pointer3.fetchAndAddOrdered(valueToAdd)), quintptr(pi));
+ QCOMPARE(quintptr(pointer3.fetchAndAddOrdered(-valueToAdd)), quintptr(pi + valueToAdd));
+ QCOMPARE(quintptr(static_cast<int *>(pointer3)), quintptr(pi));
+ }
+}
+
+QTEST_APPLESS_MAIN(tst_QAtomicPointer)
+#include "tst_qatomicpointer.moc"
diff --git a/tests/auto/corelib/thread/qmutex/.gitignore b/tests/auto/corelib/thread/qmutex/.gitignore
new file mode 100644
index 0000000000..2f6b74166f
--- /dev/null
+++ b/tests/auto/corelib/thread/qmutex/.gitignore
@@ -0,0 +1 @@
+tst_qmutex
diff --git a/tests/auto/corelib/thread/qmutex/qmutex.pro b/tests/auto/corelib/thread/qmutex/qmutex.pro
new file mode 100644
index 0000000000..608b08e16e
--- /dev/null
+++ b/tests/auto/corelib/thread/qmutex/qmutex.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qmutex.cpp
+QT = core
+CONFIG += parallel_test
+CONFIG += insignificant_test
diff --git a/tests/auto/corelib/thread/qmutex/tst_qmutex.cpp b/tests/auto/corelib/thread/qmutex/tst_qmutex.cpp
new file mode 100644
index 0000000000..7ad6a98a4d
--- /dev/null
+++ b/tests/auto/corelib/thread/qmutex/tst_qmutex.cpp
@@ -0,0 +1,640 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <qatomic.h>
+#include <qcoreapplication.h>
+#include <qdatetime.h>
+#include <qmutex.h>
+#include <qthread.h>
+#include <qwaitcondition.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QMutex : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QMutex();
+ virtual ~tst_QMutex();
+
+private slots:
+ void tryLock();
+ void lock_unlock_locked_tryLock();
+ void stressTest();
+ void tryLockRace();
+ void qtbug16115_trylock();
+ void moreStress();
+};
+
+static const int iterations = 100;
+
+tst_QMutex::tst_QMutex()
+
+{
+}
+
+tst_QMutex::~tst_QMutex()
+{
+}
+
+QAtomicInt lockCount(0);
+QMutex normalMutex, recursiveMutex(QMutex::Recursive);
+QSemaphore testsTurn;
+QSemaphore threadsTurn;
+
+enum { waitTime = 100 };
+
+void tst_QMutex::tryLock()
+{
+ // test non-recursive mutex
+ {
+ class Thread : public QThread
+ {
+ public:
+ void run()
+ {
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ QVERIFY(!normalMutex.tryLock());
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ QVERIFY(normalMutex.tryLock());
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ QVERIFY(!normalMutex.tryLock());
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ normalMutex.unlock();
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ QTime timer;
+ timer.start();
+ QVERIFY(!normalMutex.tryLock(waitTime));
+ QVERIFY(timer.elapsed() >= waitTime);
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ timer.start();
+ QVERIFY(normalMutex.tryLock(waitTime));
+ QVERIFY(timer.elapsed() <= waitTime);
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ timer.start();
+ QVERIFY(!normalMutex.tryLock(waitTime));
+ QVERIFY(timer.elapsed() >= waitTime);
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ normalMutex.unlock();
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ QVERIFY(!normalMutex.tryLock(0));
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ timer.start();
+ QVERIFY(normalMutex.tryLock(0));
+ QVERIFY(timer.elapsed() < waitTime);
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ QVERIFY(!normalMutex.tryLock(0));
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ normalMutex.unlock();
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ }
+ };
+
+ Thread thread;
+ thread.start();
+
+ // thread can't acquire lock
+ testsTurn.acquire();
+ normalMutex.lock();
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ threadsTurn.release();
+
+ // thread can acquire lock
+ testsTurn.acquire();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ normalMutex.unlock();
+ threadsTurn.release();
+
+ // thread can't acquire lock, timeout = waitTime
+ testsTurn.acquire();
+ normalMutex.lock();
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ threadsTurn.release();
+
+ // thread can acquire lock, timeout = waitTime
+ testsTurn.acquire();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ normalMutex.unlock();
+ threadsTurn.release();
+
+ // thread can't acquire lock, timeout = 0
+ testsTurn.acquire();
+ normalMutex.lock();
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ threadsTurn.release();
+
+ // thread can acquire lock, timeout = 0
+ testsTurn.acquire();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ normalMutex.unlock();
+ threadsTurn.release();
+
+ // wait for thread to finish
+ testsTurn.acquire();
+ threadsTurn.release();
+ thread.wait();
+ }
+
+ // test recursive mutex
+ {
+ class Thread : public QThread
+ {
+ public:
+ void run()
+ {
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ QVERIFY(!recursiveMutex.tryLock());
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ QVERIFY(recursiveMutex.tryLock());
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ QVERIFY(recursiveMutex.tryLock());
+ QVERIFY(lockCount.testAndSetRelaxed(1, 2));
+ QVERIFY(lockCount.testAndSetRelaxed(2, 1));
+ recursiveMutex.unlock();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ recursiveMutex.unlock();
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ QTime timer;
+ timer.start();
+ QVERIFY(!recursiveMutex.tryLock(waitTime));
+ QVERIFY(timer.elapsed() >= waitTime);
+ QVERIFY(!recursiveMutex.tryLock(0));
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ timer.start();
+ QVERIFY(recursiveMutex.tryLock(waitTime));
+ QVERIFY(timer.elapsed() <= waitTime);
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ QVERIFY(recursiveMutex.tryLock(waitTime));
+ QVERIFY(lockCount.testAndSetRelaxed(1, 2));
+ QVERIFY(lockCount.testAndSetRelaxed(2, 1));
+ recursiveMutex.unlock();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ recursiveMutex.unlock();
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ QVERIFY(!recursiveMutex.tryLock(0));
+ QVERIFY(!recursiveMutex.tryLock(0));
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ timer.start();
+ QVERIFY(recursiveMutex.tryLock(0));
+ QVERIFY(timer.elapsed() < waitTime);
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ QVERIFY(recursiveMutex.tryLock(0));
+ QVERIFY(lockCount.testAndSetRelaxed(1, 2));
+ QVERIFY(lockCount.testAndSetRelaxed(2, 1));
+ recursiveMutex.unlock();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ recursiveMutex.unlock();
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ }
+ };
+
+ Thread thread;
+ thread.start();
+
+ // thread can't acquire lock
+ testsTurn.acquire();
+ recursiveMutex.lock();
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ recursiveMutex.lock();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 2));
+ threadsTurn.release();
+
+ // thread can acquire lock
+ testsTurn.acquire();
+ QVERIFY(lockCount.testAndSetRelaxed(2, 1));
+ recursiveMutex.unlock();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ recursiveMutex.unlock();
+ threadsTurn.release();
+
+ // thread can't acquire lock, timeout = waitTime
+ testsTurn.acquire();
+ recursiveMutex.lock();
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ recursiveMutex.lock();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 2));
+ threadsTurn.release();
+
+ // thread can acquire lock, timeout = waitTime
+ testsTurn.acquire();
+ QVERIFY(lockCount.testAndSetRelaxed(2, 1));
+ recursiveMutex.unlock();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ recursiveMutex.unlock();
+ threadsTurn.release();
+
+ // thread can't acquire lock, timeout = 0
+ testsTurn.acquire();
+ recursiveMutex.lock();
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ recursiveMutex.lock();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 2));
+ threadsTurn.release();
+
+ // thread can acquire lock, timeout = 0
+ testsTurn.acquire();
+ QVERIFY(lockCount.testAndSetRelaxed(2, 1));
+ recursiveMutex.unlock();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ recursiveMutex.unlock();
+ threadsTurn.release();
+
+ // stop thread
+ testsTurn.acquire();
+ threadsTurn.release();
+ thread.wait();
+ }
+}
+
+class mutex_Thread : public QThread
+{
+public:
+ QMutex mutex;
+ QWaitCondition cond;
+
+ QMutex &test_mutex;
+
+ inline mutex_Thread(QMutex &m) : test_mutex(m) { }
+
+ void run()
+ {
+ test_mutex.lock();
+
+ mutex.lock();
+ for (int i = 0; i < iterations; ++i) {
+ cond.wakeOne();
+ cond.wait(&mutex);
+ }
+ mutex.unlock();
+
+ test_mutex.unlock();
+ }
+};
+
+class rmutex_Thread : public QThread
+{
+public:
+ QMutex mutex;
+ QWaitCondition cond;
+
+ QMutex &test_mutex;
+
+ inline rmutex_Thread(QMutex &m) : test_mutex(m) { }
+
+ void run()
+ {
+ test_mutex.lock();
+ test_mutex.lock();
+ test_mutex.lock();
+ test_mutex.lock();
+
+ mutex.lock();
+ for (int i = 0; i < iterations; ++i) {
+ cond.wakeOne();
+ cond.wait(&mutex);
+ }
+ mutex.unlock();
+
+ test_mutex.unlock();
+ test_mutex.unlock();
+ test_mutex.unlock();
+ test_mutex.unlock();
+ }
+};
+
+void tst_QMutex::lock_unlock_locked_tryLock()
+{
+ // normal mutex
+ QMutex mutex;
+ mutex_Thread thread(mutex);
+
+ QMutex rmutex(QMutex::Recursive);
+ rmutex_Thread rthread(rmutex);
+
+ for (int i = 0; i < iterations; ++i) {
+ // normal mutex
+ QVERIFY(mutex.tryLock());
+ mutex.unlock();
+
+ thread.mutex.lock();
+ thread.start();
+
+ for (int j = 0; j < iterations; ++j) {
+ QVERIFY(thread.cond.wait(&thread.mutex, 10000));
+ QVERIFY(!mutex.tryLock());
+
+ thread.cond.wakeOne();
+ }
+
+ thread.mutex.unlock();
+
+ QVERIFY(thread.wait(10000));
+ QVERIFY(mutex.tryLock());
+
+ mutex.unlock();
+
+ // recursive mutex
+ QVERIFY(rmutex.tryLock());
+ QVERIFY(rmutex.tryLock());
+ QVERIFY(rmutex.tryLock());
+ QVERIFY(rmutex.tryLock());
+
+ rmutex.unlock();
+ rmutex.unlock();
+ rmutex.unlock();
+ rmutex.unlock();
+
+ rthread.mutex.lock();
+ rthread.start();
+
+ for (int k = 0; k < iterations; ++k) {
+ QVERIFY(rthread.cond.wait(&rthread.mutex, 10000));
+ QVERIFY(!rmutex.tryLock());
+
+ rthread.cond.wakeOne();
+ }
+
+ rthread.mutex.unlock();
+
+ QVERIFY(rthread.wait(10000));
+ QVERIFY(rmutex.tryLock());
+ QVERIFY(rmutex.tryLock());
+ QVERIFY(rmutex.tryLock());
+ QVERIFY(rmutex.tryLock());
+
+ rmutex.unlock();
+ rmutex.unlock();
+ rmutex.unlock();
+ rmutex.unlock();
+ }
+}
+
+enum { one_minute = 6 * 1000, //not really one minute, but else it is too long.
+ threadCount = 10 };
+
+class StressTestThread : public QThread
+{
+ QTime t;
+public:
+ static QBasicAtomicInt lockCount;
+ static QBasicAtomicInt sentinel;
+ static QMutex mutex;
+ static int errorCount;
+ void start()
+ {
+ t.start();
+ QThread::start();
+ }
+ void run()
+ {
+ while (t.elapsed() < one_minute) {
+ mutex.lock();
+ if (sentinel.ref()) ++errorCount;
+ if (!sentinel.deref()) ++errorCount;
+ lockCount.ref();
+ mutex.unlock();
+ if (mutex.tryLock()) {
+ if (sentinel.ref()) ++errorCount;
+ if (!sentinel.deref()) ++errorCount;
+ lockCount.ref();
+ mutex.unlock();
+ }
+ }
+ }
+};
+QMutex StressTestThread::mutex;
+QBasicAtomicInt StressTestThread::lockCount = Q_BASIC_ATOMIC_INITIALIZER(0);
+QBasicAtomicInt StressTestThread::sentinel = Q_BASIC_ATOMIC_INITIALIZER(-1);
+int StressTestThread::errorCount = 0;
+
+void tst_QMutex::stressTest()
+{
+ StressTestThread threads[threadCount];
+ for (int i = 0; i < threadCount; ++i)
+ threads[i].start();
+ QVERIFY(threads[0].wait(one_minute + 10000));
+ for (int i = 1; i < threadCount; ++i)
+ QVERIFY(threads[i].wait(10000));
+ QCOMPARE(StressTestThread::errorCount, 0);
+ qDebug("locked %d times", int(StressTestThread::lockCount));
+}
+
+class TryLockRaceThread : public QThread
+{
+public:
+ static QMutex mutex;
+
+ void run()
+ {
+ QTime t;
+ t.start();
+ do {
+ if (mutex.tryLock())
+ mutex.unlock();
+ } while (t.elapsed() < one_minute/2);
+ }
+};
+QMutex TryLockRaceThread::mutex;
+
+void tst_QMutex::tryLockRace()
+{
+ // mutex not in use, should be able to lock it
+ QVERIFY(TryLockRaceThread::mutex.tryLock());
+ TryLockRaceThread::mutex.unlock();
+
+ // try to break tryLock
+ TryLockRaceThread thread[threadCount];
+ for (int i = 0; i < threadCount; ++i)
+ thread[i].start();
+ for (int i = 0; i < threadCount; ++i)
+ QVERIFY(thread[i].wait());
+
+ // mutex not in use, should be able to lock it
+ QVERIFY(TryLockRaceThread::mutex.tryLock());
+ TryLockRaceThread::mutex.unlock();
+}
+
+// Variable that will be protected by the mutex. Volatile so that the
+// the optimiser doesn't mess with it based on the increment-then-decrement
+// usage pattern.
+static volatile int qtbug16115_trylock_counter;
+// Counter for how many times the protected variable has an incorrect value.
+static int qtbug16115_failure_count = 0;
+
+void tst_QMutex::qtbug16115_trylock()
+{
+ //Used to deadlock on unix
+ struct TrylockThread : QThread {
+ TrylockThread(QMutex &mut) : mut(mut) {}
+ QMutex &mut;
+ void run() {
+ for (int i = 0; i < 100000; ++i) {
+ if (mut.tryLock(0)) {
+ if ((++qtbug16115_trylock_counter) != 1)
+ ++qtbug16115_failure_count;
+ if ((--qtbug16115_trylock_counter) != 0)
+ ++qtbug16115_failure_count;
+ mut.unlock();
+ }
+ }
+ }
+ };
+ QMutex mut;
+ TrylockThread t1(mut);
+ TrylockThread t2(mut);
+ TrylockThread t3(mut);
+ t1.start();
+ t2.start();
+ t3.start();
+
+ for (int i = 0; i < 100000; ++i) {
+ mut.lock();
+ if ((++qtbug16115_trylock_counter) != 1)
+ ++qtbug16115_failure_count;
+ if ((--qtbug16115_trylock_counter) != 0)
+ ++qtbug16115_failure_count;
+ mut.unlock();
+ }
+ t1.wait();
+ t2.wait();
+ t3.wait();
+ QCOMPARE(qtbug16115_failure_count, 0);
+}
+
+
+class MoreStressTestThread : public QThread
+{
+ QTime t;
+public:
+ static QAtomicInt lockCount;
+ static QAtomicInt sentinel[threadCount];
+ static QMutex mutex[threadCount];
+ static QAtomicInt errorCount;
+ void start()
+ {
+ t.start();
+ QThread::start();
+ }
+ void run()
+ {
+ quint64 i = 0;
+ while (t.elapsed() < one_minute) {
+ i++;
+ uint nb = (i * 9 + lockCount * 13) % threadCount;
+ QMutexLocker locker(&mutex[nb]);
+ if (sentinel[nb]) errorCount.ref();
+ if (sentinel[nb].fetchAndAddRelaxed(5)) errorCount.ref();
+ if (!sentinel[nb].testAndSetRelaxed(5, 0)) errorCount.ref();
+ if (sentinel[nb]) errorCount.ref();
+ lockCount.ref();
+ nb = (nb * 17 + i * 5 + lockCount * 3) % threadCount;
+ if (mutex[nb].tryLock()) {
+ if (sentinel[nb]) errorCount.ref();
+ if (sentinel[nb].fetchAndAddRelaxed(16)) errorCount.ref();
+ if (!sentinel[nb].testAndSetRelaxed(16, 0)) errorCount.ref();
+ if (sentinel[nb]) errorCount.ref();
+ lockCount.ref();
+ mutex[nb].unlock();
+ }
+ nb = (nb * 15 + i * 47 + lockCount * 31) % threadCount;
+ if (mutex[nb].tryLock(2)) {
+ if (sentinel[nb]) errorCount.ref();
+ if (sentinel[nb].fetchAndAddRelaxed(53)) errorCount.ref();
+ if (!sentinel[nb].testAndSetRelaxed(53, 0)) errorCount.ref();
+ if (sentinel[nb]) errorCount.ref();
+ lockCount.ref();
+ mutex[nb].unlock();
+ }
+ }
+ }
+};
+QMutex MoreStressTestThread::mutex[threadCount];
+QAtomicInt MoreStressTestThread::lockCount;
+QAtomicInt MoreStressTestThread::sentinel[threadCount];
+QAtomicInt MoreStressTestThread::errorCount = 0;
+
+void tst_QMutex::moreStress()
+{
+ MoreStressTestThread threads[threadCount];
+ for (int i = 0; i < threadCount; ++i)
+ threads[i].start();
+ QVERIFY(threads[0].wait(one_minute + 10000));
+ for (int i = 1; i < threadCount; ++i)
+ QVERIFY(threads[i].wait(10000));
+ qDebug("locked %d times", int(MoreStressTestThread::lockCount));
+ QCOMPARE(int(MoreStressTestThread::errorCount), 0);
+}
+
+
+QTEST_MAIN(tst_QMutex)
+#include "tst_qmutex.moc"
diff --git a/tests/auto/corelib/thread/qmutexlocker/.gitignore b/tests/auto/corelib/thread/qmutexlocker/.gitignore
new file mode 100644
index 0000000000..7c75c1c2f4
--- /dev/null
+++ b/tests/auto/corelib/thread/qmutexlocker/.gitignore
@@ -0,0 +1 @@
+tst_qmutexlocker
diff --git a/tests/auto/corelib/thread/qmutexlocker/qmutexlocker.pro b/tests/auto/corelib/thread/qmutexlocker/qmutexlocker.pro
new file mode 100644
index 0000000000..01c369101b
--- /dev/null
+++ b/tests/auto/corelib/thread/qmutexlocker/qmutexlocker.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qmutexlocker.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/thread/qmutexlocker/tst_qmutexlocker.cpp b/tests/auto/corelib/thread/qmutexlocker/tst_qmutexlocker.cpp
new file mode 100644
index 0000000000..a663b60be7
--- /dev/null
+++ b/tests/auto/corelib/thread/qmutexlocker/tst_qmutexlocker.cpp
@@ -0,0 +1,236 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <QCoreApplication>
+#include <QMutexLocker>
+#include <QSemaphore>
+#include <QThread>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QMutexLockerThread : public QThread
+{
+public:
+ QMutex mutex;
+ QSemaphore semaphore, testSemaphore;
+
+ void waitForTest()
+ {
+ semaphore.release();
+ testSemaphore.acquire();
+ }
+
+ tst_QMutexLockerThread()
+ : mutex(QMutex::Recursive)
+ {
+ }
+};
+
+class tst_QMutexLocker : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QMutexLocker();
+ ~tst_QMutexLocker();
+
+ tst_QMutexLockerThread *thread;
+
+ void waitForThread()
+ {
+ thread->semaphore.acquire();
+ }
+ void releaseThread()
+ {
+ thread->testSemaphore.release();
+ }
+
+private slots:
+ void scopeTest();
+ void unlockAndRelockTest();
+ void lockerStateTest();
+};
+
+tst_QMutexLocker::tst_QMutexLocker()
+{
+}
+
+tst_QMutexLocker::~tst_QMutexLocker()
+{
+}
+
+void tst_QMutexLocker::scopeTest()
+{
+ class ScopeTestThread : public tst_QMutexLockerThread
+ {
+ public:
+ void run()
+ {
+ waitForTest();
+
+ {
+ QMutexLocker locker(&mutex);
+ waitForTest();
+ }
+
+ waitForTest();
+ }
+ };
+
+ thread = new ScopeTestThread;
+ thread->start();
+
+ waitForThread();
+ // mutex should be unlocked before entering the scope that creates the QMutexLocker
+ QVERIFY(thread->mutex.tryLock());
+ thread->mutex.unlock();
+ releaseThread();
+
+ waitForThread();
+ // mutex should be locked by the QMutexLocker
+ QVERIFY(!thread->mutex.tryLock());
+ releaseThread();
+
+ waitForThread();
+ // mutex should be unlocked when the QMutexLocker goes out of scope
+ QVERIFY(thread->mutex.tryLock());
+ thread->mutex.unlock();
+ releaseThread();
+
+ QVERIFY(thread->wait());
+
+ delete thread;
+ thread = 0;
+}
+
+
+void tst_QMutexLocker::unlockAndRelockTest()
+{
+ class UnlockAndRelockThread : public tst_QMutexLockerThread
+ {
+ public:
+ void run()
+ {
+ QMutexLocker locker(&mutex);
+
+ waitForTest();
+
+ locker.unlock();
+
+ waitForTest();
+
+ locker.relock();
+
+ waitForTest();
+ }
+ };
+
+ thread = new UnlockAndRelockThread;
+ thread->start();
+
+ waitForThread();
+ // mutex should be locked by the QMutexLocker
+ QVERIFY(!thread->mutex.tryLock());
+ releaseThread();
+
+ waitForThread();
+ // mutex has been explicitly unlocked via QMutexLocker
+ QVERIFY(thread->mutex.tryLock());
+ thread->mutex.unlock();
+ releaseThread();
+
+ waitForThread();
+ // mutex has been explicitly relocked via QMutexLocker
+ QVERIFY(!thread->mutex.tryLock());
+ releaseThread();
+
+ QVERIFY(thread->wait());
+
+ delete thread;
+ thread = 0;
+}
+
+void tst_QMutexLocker::lockerStateTest()
+{
+ class LockerStateThread : public tst_QMutexLockerThread
+ {
+ public:
+ void run()
+ {
+ {
+ QMutexLocker locker(&mutex);
+ locker.relock();
+ locker.unlock();
+
+ waitForTest();
+ }
+
+ waitForTest();
+ }
+ };
+
+ thread = new LockerStateThread;
+ thread->start();
+
+ waitForThread();
+ // even though we relock() after creating the QMutexLocker, it shouldn't lock the mutex more than once
+ QVERIFY(thread->mutex.tryLock());
+ thread->mutex.unlock();
+ releaseThread();
+
+ waitForThread();
+ // if we call QMutexLocker::unlock(), its destructor should do nothing
+ QVERIFY(thread->mutex.tryLock());
+ thread->mutex.unlock();
+ releaseThread();
+
+ QVERIFY(thread->wait());
+
+ delete thread;
+ thread = 0;
+}
+
+QTEST_MAIN(tst_QMutexLocker)
+#include "tst_qmutexlocker.moc"
diff --git a/tests/auto/corelib/thread/qreadlocker/.gitignore b/tests/auto/corelib/thread/qreadlocker/.gitignore
new file mode 100644
index 0000000000..2539362670
--- /dev/null
+++ b/tests/auto/corelib/thread/qreadlocker/.gitignore
@@ -0,0 +1 @@
+tst_qreadlocker
diff --git a/tests/auto/corelib/thread/qreadlocker/qreadlocker.pro b/tests/auto/corelib/thread/qreadlocker/qreadlocker.pro
new file mode 100644
index 0000000000..ee533070a7
--- /dev/null
+++ b/tests/auto/corelib/thread/qreadlocker/qreadlocker.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qreadlocker.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/thread/qreadlocker/tst_qreadlocker.cpp b/tests/auto/corelib/thread/qreadlocker/tst_qreadlocker.cpp
new file mode 100644
index 0000000000..3ec9f1cb25
--- /dev/null
+++ b/tests/auto/corelib/thread/qreadlocker/tst_qreadlocker.cpp
@@ -0,0 +1,231 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <QCoreApplication>
+#include <QReadLocker>
+#include <QSemaphore>
+#include <QThread>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QReadLockerThread : public QThread
+{
+public:
+ QReadWriteLock lock;
+ QSemaphore semaphore, testSemaphore;
+
+ void waitForTest()
+ {
+ semaphore.release();
+ testSemaphore.acquire();
+ }
+};
+
+class tst_QReadLocker : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QReadLocker();
+ ~tst_QReadLocker();
+
+ tst_QReadLockerThread *thread;
+
+ void waitForThread()
+ {
+ thread->semaphore.acquire();
+ }
+ void releaseThread()
+ {
+ thread->testSemaphore.release();
+ }
+
+private slots:
+ void scopeTest();
+ void unlockAndRelockTest();
+ void lockerStateTest();
+};
+
+tst_QReadLocker::tst_QReadLocker()
+{
+}
+
+tst_QReadLocker::~tst_QReadLocker()
+{
+}
+
+void tst_QReadLocker::scopeTest()
+{
+ class ScopeTestThread : public tst_QReadLockerThread
+ {
+ public:
+ void run()
+ {
+ waitForTest();
+
+ {
+ QReadLocker locker(&lock);
+ waitForTest();
+ }
+
+ waitForTest();
+ }
+ };
+
+ thread = new ScopeTestThread;
+ thread->start();
+
+ waitForThread();
+ // lock should be unlocked before entering the scope that creates the QReadLocker
+ QVERIFY(thread->lock.tryLockForWrite());
+ thread->lock.unlock();
+ releaseThread();
+
+ waitForThread();
+ // lock should be locked by the QReadLocker
+ QVERIFY(!thread->lock.tryLockForWrite());
+ releaseThread();
+
+ waitForThread();
+ // lock should be unlocked when the QReadLocker goes out of scope
+ QVERIFY(thread->lock.tryLockForWrite());
+ thread->lock.unlock();
+ releaseThread();
+
+ QVERIFY(thread->wait());
+
+ delete thread;
+ thread = 0;
+}
+
+
+void tst_QReadLocker::unlockAndRelockTest()
+{
+ class UnlockAndRelockThread : public tst_QReadLockerThread
+ {
+ public:
+ void run()
+ {
+ QReadLocker locker(&lock);
+
+ waitForTest();
+
+ locker.unlock();
+
+ waitForTest();
+
+ locker.relock();
+
+ waitForTest();
+ }
+ };
+
+ thread = new UnlockAndRelockThread;
+ thread->start();
+
+ waitForThread();
+ // lock should be locked by the QReadLocker
+ QVERIFY(!thread->lock.tryLockForWrite());
+ releaseThread();
+
+ waitForThread();
+ // lock has been explicitly unlocked via QReadLocker
+ QVERIFY(thread->lock.tryLockForWrite());
+ thread->lock.unlock();
+ releaseThread();
+
+ waitForThread();
+ // lock has been explicitly relocked via QReadLocker
+ QVERIFY(!thread->lock.tryLockForWrite());
+ releaseThread();
+
+ QVERIFY(thread->wait());
+
+ delete thread;
+ thread = 0;
+}
+
+void tst_QReadLocker::lockerStateTest()
+{
+ class LockerStateThread : public tst_QReadLockerThread
+ {
+ public:
+ void run()
+ {
+ {
+ QReadLocker locker(&lock);
+ locker.relock();
+ locker.unlock();
+
+ waitForTest();
+ }
+
+ waitForTest();
+ }
+ };
+
+ thread = new LockerStateThread;
+ thread->start();
+
+ waitForThread();
+ // even though we relock() after creating the QReadLocker, it shouldn't lock the lock more than once
+ QVERIFY(thread->lock.tryLockForWrite());
+ thread->lock.unlock();
+ releaseThread();
+
+ waitForThread();
+ // if we call QReadLocker::unlock(), its destructor should do nothing
+ QVERIFY(thread->lock.tryLockForWrite());
+ thread->lock.unlock();
+ releaseThread();
+
+ QVERIFY(thread->wait());
+
+ delete thread;
+ thread = 0;
+}
+
+QTEST_MAIN(tst_QReadLocker)
+#include "tst_qreadlocker.moc"
diff --git a/tests/auto/corelib/thread/qreadwritelock/.gitignore b/tests/auto/corelib/thread/qreadwritelock/.gitignore
new file mode 100644
index 0000000000..96fda685f5
--- /dev/null
+++ b/tests/auto/corelib/thread/qreadwritelock/.gitignore
@@ -0,0 +1 @@
+tst_qreadwritelock
diff --git a/tests/auto/corelib/thread/qreadwritelock/qreadwritelock.pro b/tests/auto/corelib/thread/qreadwritelock/qreadwritelock.pro
new file mode 100644
index 0000000000..93f7c68dc3
--- /dev/null
+++ b/tests/auto/corelib/thread/qreadwritelock/qreadwritelock.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qreadwritelock.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp b/tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp
new file mode 100644
index 0000000000..1b995e8d19
--- /dev/null
+++ b/tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp
@@ -0,0 +1,1140 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qcoreapplication.h>
+
+
+#include <qreadwritelock.h>
+#include <qmutex.h>
+#include <qthread.h>
+#include <qwaitcondition.h>
+
+#ifdef Q_OS_UNIX
+#include <unistd.h>
+#endif
+#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
+#include <windows.h>
+#define sleep(X) Sleep(X)
+#endif
+
+//on solaris, threads that loop one the release bool variable
+//needs to sleep more than 1 usec.
+#ifdef Q_OS_SOLARIS
+# define RWTESTSLEEP usleep(10);
+#else
+# define RWTESTSLEEP usleep(1);
+#endif
+
+#include <stdio.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QReadWriteLock : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QReadWriteLock();
+ virtual ~tst_QReadWriteLock();
+
+
+/*
+ Singlethreaded tests
+*/
+private slots:
+void constructDestruct();
+void readLockUnlock();
+void writeLockUnlock();
+void readLockUnlockLoop();
+void writeLockUnlockLoop();
+void readLockLoop();
+void writeLockLoop();
+void readWriteLockUnlockLoop();
+void tryReadLock();
+void tryWriteLock();
+/*
+ Multithreaded tests
+*/
+private slots:
+
+void readLockBlockRelease();
+void writeLockBlockRelease();
+void multipleReadersBlockRelease();
+void multipleReadersLoop();
+void multipleWritersLoop();
+void multipleReadersWritersLoop();
+void countingTest();
+void limitedReaders();
+void deleteOnUnlock();
+
+/*
+ Performance tests
+*/
+private slots:
+void uncontendedLocks();
+
+ // recursive locking tests
+ void recursiveReadLock();
+ void recursiveWriteLock();
+};
+
+tst_QReadWriteLock::tst_QReadWriteLock()
+{
+
+}
+
+tst_QReadWriteLock::~tst_QReadWriteLock()
+{
+
+}
+
+void tst_QReadWriteLock::constructDestruct()
+{
+ {
+ QReadWriteLock rwlock;
+ }
+}
+
+void tst_QReadWriteLock::readLockUnlock()
+{
+ QReadWriteLock rwlock;
+ rwlock.lockForRead();
+ rwlock.unlock();
+}
+
+void tst_QReadWriteLock::writeLockUnlock()
+{
+ QReadWriteLock rwlock;
+ rwlock.lockForWrite();
+ rwlock.unlock();
+}
+
+void tst_QReadWriteLock::readLockUnlockLoop()
+{
+ QReadWriteLock rwlock;
+ int runs=10000;
+ int i;
+ for (i=0; i<runs; ++i) {
+ rwlock.lockForRead();
+ rwlock.unlock();
+ }
+}
+
+void tst_QReadWriteLock::writeLockUnlockLoop()
+{
+ QReadWriteLock rwlock;
+ int runs=10000;
+ int i;
+ for (i=0; i<runs; ++i) {
+ rwlock.lockForWrite();
+ rwlock.unlock();
+ }
+}
+
+
+void tst_QReadWriteLock::readLockLoop()
+{
+ QReadWriteLock rwlock;
+ int runs=10000;
+ int i;
+ for (i=0; i<runs; ++i) {
+ rwlock.lockForRead();
+ }
+ for (i=0; i<runs; ++i) {
+ rwlock.unlock();
+ }
+}
+
+void tst_QReadWriteLock::writeLockLoop()
+{
+ /*
+ If you include this, the test should print one line
+ and then block.
+ */
+#if 0
+ QReadWriteLock rwlock;
+ int runs=10000;
+ int i;
+ for (i=0; i<runs; ++i) {
+ rwlock.lockForWrite();
+ qDebug("I am going to block now.");
+ }
+#endif
+}
+
+void tst_QReadWriteLock::readWriteLockUnlockLoop()
+{
+ QReadWriteLock rwlock;
+ int runs=10000;
+ int i;
+ for (i=0; i<runs; ++i) {
+ rwlock.lockForRead();
+ rwlock.unlock();
+ rwlock.lockForWrite();
+ rwlock.unlock();
+ }
+
+}
+
+QAtomicInt lockCount(0);
+QReadWriteLock readWriteLock;
+QSemaphore testsTurn;
+QSemaphore threadsTurn;
+
+
+void tst_QReadWriteLock::tryReadLock()
+{
+ QReadWriteLock rwlock;
+ QVERIFY(rwlock.tryLockForRead());
+ rwlock.unlock();
+ QVERIFY(rwlock.tryLockForRead());
+ rwlock.unlock();
+
+ rwlock.lockForRead();
+ rwlock.lockForRead();
+ QVERIFY(rwlock.tryLockForRead());
+ rwlock.unlock();
+ rwlock.unlock();
+ rwlock.unlock();
+
+ rwlock.lockForWrite();
+ QVERIFY(!rwlock.tryLockForRead());
+ rwlock.unlock();
+
+ // functionality test
+ {
+ class Thread : public QThread
+ {
+ public:
+ void run()
+ {
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ QVERIFY(!readWriteLock.tryLockForRead());
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ QVERIFY(readWriteLock.tryLockForRead());
+ lockCount.ref();
+ QVERIFY(readWriteLock.tryLockForRead());
+ lockCount.ref();
+ lockCount.deref();
+ readWriteLock.unlock();
+ lockCount.deref();
+ readWriteLock.unlock();
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ QTime timer;
+ timer.start();
+ QVERIFY(!readWriteLock.tryLockForRead(1000));
+ QVERIFY(timer.elapsed() >= 1000);
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ timer.start();
+ QVERIFY(readWriteLock.tryLockForRead(1000));
+ QVERIFY(timer.elapsed() <= 1000);
+ lockCount.ref();
+ QVERIFY(readWriteLock.tryLockForRead(1000));
+ lockCount.ref();
+ lockCount.deref();
+ readWriteLock.unlock();
+ lockCount.deref();
+ readWriteLock.unlock();
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ }
+ };
+
+ Thread thread;
+ thread.start();
+
+ testsTurn.acquire();
+ readWriteLock.lockForWrite();
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ threadsTurn.release();
+
+ testsTurn.acquire();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ readWriteLock.unlock();
+ threadsTurn.release();
+
+ testsTurn.acquire();
+ readWriteLock.lockForWrite();
+ QVERIFY(lockCount.testAndSetRelaxed(0, 1));
+ threadsTurn.release();
+
+ testsTurn.acquire();
+ QVERIFY(lockCount.testAndSetRelaxed(1, 0));
+ readWriteLock.unlock();
+ threadsTurn.release();
+
+ // stop thread
+ testsTurn.acquire();
+ threadsTurn.release();
+ thread.wait();
+ }
+}
+
+void tst_QReadWriteLock::tryWriteLock()
+{
+ {
+ QReadWriteLock rwlock;
+ QVERIFY(rwlock.tryLockForWrite());
+ rwlock.unlock();
+ QVERIFY(rwlock.tryLockForWrite());
+ rwlock.unlock();
+
+ rwlock.lockForWrite();
+ QVERIFY(!rwlock.tryLockForWrite());
+ QVERIFY(!rwlock.tryLockForWrite());
+ rwlock.unlock();
+
+ rwlock.lockForRead();
+ QVERIFY(!rwlock.tryLockForWrite());
+ rwlock.unlock();
+ }
+
+ {
+ QReadWriteLock rwlock(QReadWriteLock::Recursive);
+ QVERIFY(rwlock.tryLockForWrite());
+ rwlock.unlock();
+ QVERIFY(rwlock.tryLockForWrite());
+ rwlock.unlock();
+
+ rwlock.lockForWrite();
+ QVERIFY(rwlock.tryLockForWrite());
+ QVERIFY(rwlock.tryLockForWrite());
+ rwlock.unlock();
+ rwlock.unlock();
+ rwlock.unlock();
+
+ rwlock.lockForRead();
+ QVERIFY(!rwlock.tryLockForWrite());
+ rwlock.unlock();
+ }
+
+ // functionality test
+ {
+ class Thread : public QThread
+ {
+ public:
+ Thread() : failureCount(0) { }
+ void run()
+ {
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ if (readWriteLock.tryLockForWrite())
+ failureCount++;
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ if (!readWriteLock.tryLockForWrite())
+ failureCount++;
+ if (!lockCount.testAndSetRelaxed(0, 1))
+ failureCount++;
+ if (!lockCount.testAndSetRelaxed(1, 0))
+ failureCount++;
+ readWriteLock.unlock();
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ if (readWriteLock.tryLockForWrite(1000))
+ failureCount++;
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ if (!readWriteLock.tryLockForWrite(1000))
+ failureCount++;
+ if (!lockCount.testAndSetRelaxed(0, 1))
+ failureCount++;
+ if (!lockCount.testAndSetRelaxed(1, 0))
+ failureCount++;
+ readWriteLock.unlock();
+ testsTurn.release();
+
+ threadsTurn.acquire();
+ }
+
+ int failureCount;
+ };
+
+ Thread thread;
+ thread.start();
+
+ testsTurn.acquire();
+ readWriteLock.lockForRead();
+ lockCount.ref();
+ threadsTurn.release();
+
+ testsTurn.acquire();
+ lockCount.deref();
+ readWriteLock.unlock();
+ threadsTurn.release();
+
+ testsTurn.acquire();
+ readWriteLock.lockForRead();
+ lockCount.ref();
+ threadsTurn.release();
+
+ testsTurn.acquire();
+ lockCount.deref();
+ readWriteLock.unlock();
+ threadsTurn.release();
+
+ // stop thread
+ testsTurn.acquire();
+ threadsTurn.release();
+ thread.wait();
+
+ QCOMPARE(thread.failureCount, 0);
+ }
+}
+
+bool threadDone;
+volatile bool release;
+
+/*
+ write-lock
+ unlock
+ set threadone
+*/
+class WriteLockThread : public QThread
+{
+public:
+ QReadWriteLock &testRwlock;
+ inline WriteLockThread(QReadWriteLock &l) : testRwlock(l) { }
+ void run()
+ {
+ testRwlock.lockForWrite();
+ testRwlock.unlock();
+ threadDone=true;
+ }
+};
+
+/*
+ read-lock
+ unlock
+ set threadone
+*/
+class ReadLockThread : public QThread
+{
+public:
+ QReadWriteLock &testRwlock;
+ inline ReadLockThread(QReadWriteLock &l) : testRwlock(l) { }
+ void run()
+ {
+ testRwlock.lockForRead();
+ testRwlock.unlock();
+ threadDone=true;
+ }
+};
+/*
+ write-lock
+ wait for release==true
+ unlock
+*/
+class WriteLockReleasableThread : public QThread
+{
+public:
+ QReadWriteLock &testRwlock;
+ inline WriteLockReleasableThread(QReadWriteLock &l) : testRwlock(l) { }
+ void run()
+ {
+ testRwlock.lockForWrite();
+ while(release==false) {
+ RWTESTSLEEP
+ }
+ testRwlock.unlock();
+ }
+};
+
+/*
+ read-lock
+ wait for release==true
+ unlock
+*/
+class ReadLockReleasableThread : public QThread
+{
+public:
+ QReadWriteLock &testRwlock;
+ inline ReadLockReleasableThread(QReadWriteLock &l) : testRwlock(l) { }
+ void run()
+ {
+ testRwlock.lockForRead();
+ while(release==false) {
+ RWTESTSLEEP
+ }
+ testRwlock.unlock();
+ }
+};
+
+
+/*
+ for(runTime msecs)
+ read-lock
+ msleep(holdTime msecs)
+ release lock
+ msleep(waitTime msecs)
+*/
+class ReadLockLoopThread : public QThread
+{
+public:
+ QReadWriteLock &testRwlock;
+ int runTime;
+ int holdTime;
+ int waitTime;
+ bool print;
+ QTime t;
+ inline ReadLockLoopThread(QReadWriteLock &l, int runTime, int holdTime=0, int waitTime=0, bool print=false)
+ :testRwlock(l)
+ ,runTime(runTime)
+ ,holdTime(holdTime)
+ ,waitTime(waitTime)
+ ,print(print)
+ { }
+ void run()
+ {
+ t.start();
+ while (t.elapsed()<runTime) {
+ testRwlock.lockForRead();
+ if(print) printf("reading\n");
+ if (holdTime) msleep(holdTime);
+ testRwlock.unlock();
+ if (waitTime) msleep(waitTime);
+ }
+ }
+};
+
+/*
+ for(runTime msecs)
+ write-lock
+ msleep(holdTime msecs)
+ release lock
+ msleep(waitTime msecs)
+*/
+class WriteLockLoopThread : public QThread
+{
+public:
+ QReadWriteLock &testRwlock;
+ int runTime;
+ int holdTime;
+ int waitTime;
+ bool print;
+ QTime t;
+ inline WriteLockLoopThread(QReadWriteLock &l, int runTime, int holdTime=0, int waitTime=0, bool print=false)
+ :testRwlock(l)
+ ,runTime(runTime)
+ ,holdTime(holdTime)
+ ,waitTime(waitTime)
+ ,print(print)
+ { }
+ void run()
+ {
+ t.start();
+ while (t.elapsed() < runTime) {
+ testRwlock.lockForWrite();
+ if (print) printf(".");
+ if (holdTime) msleep(holdTime);
+ testRwlock.unlock();
+ if (waitTime) msleep(waitTime);
+ }
+ }
+};
+
+volatile int count=0;
+
+/*
+ for(runTime msecs)
+ write-lock
+ count to maxval
+ set count to 0
+ release lock
+ msleep waitTime
+*/
+class WriteLockCountThread : public QThread
+{
+public:
+ QReadWriteLock &testRwlock;
+ int runTime;
+ int waitTime;
+ int maxval;
+ QTime t;
+ inline WriteLockCountThread(QReadWriteLock &l, int runTime, int waitTime, int maxval)
+ :testRwlock(l)
+ ,runTime(runTime)
+ ,waitTime(waitTime)
+ ,maxval(maxval)
+ { }
+ void run()
+ {
+ t.start();
+ while (t.elapsed() < runTime) {
+ testRwlock.lockForWrite();
+ if(count)
+ qFatal("Non-zero count at start of write! (%d)",count );
+// printf(".");
+ int i;
+ for(i=0; i<maxval; ++i) {
+ volatile int lc=count;
+ ++lc;
+ count=lc;
+ }
+ count=0;
+ testRwlock.unlock();
+ msleep(waitTime);
+ }
+ }
+};
+
+/*
+ for(runTime msecs)
+ read-lock
+ verify count==0
+ release lock
+ msleep waitTime
+*/
+class ReadLockCountThread : public QThread
+{
+public:
+ QReadWriteLock &testRwlock;
+ int runTime;
+ int waitTime;
+ QTime t;
+ inline ReadLockCountThread(QReadWriteLock &l, int runTime, int waitTime)
+ :testRwlock(l)
+ ,runTime(runTime)
+ ,waitTime(waitTime)
+ { }
+ void run()
+ {
+ t.start();
+ while (t.elapsed() < runTime) {
+ testRwlock.lockForRead();
+ if(count)
+ qFatal("Non-zero count at Read! (%d)",count );
+ testRwlock.unlock();
+ msleep(waitTime);
+ }
+ }
+};
+
+
+/*
+ A writer acquires a read-lock, a reader locks
+ the writer releases the lock, the reader gets the lock
+*/
+void tst_QReadWriteLock::readLockBlockRelease()
+{
+ QReadWriteLock testLock;
+ testLock.lockForWrite();
+ threadDone=false;
+ ReadLockThread rlt(testLock);
+ rlt.start();
+ sleep(1);
+ testLock.unlock();
+ rlt.wait();
+ QVERIFY(threadDone);
+}
+
+/*
+ writer1 acquires a read-lock, writer2 blocks,
+ writer1 releases the lock, writer2 gets the lock
+*/
+void tst_QReadWriteLock::writeLockBlockRelease()
+{
+ QReadWriteLock testLock;
+ testLock.lockForWrite();
+ threadDone=false;
+ WriteLockThread wlt(testLock);
+ wlt.start();
+ sleep(1);
+ testLock.unlock();
+ wlt.wait();
+ QVERIFY(threadDone);
+}
+/*
+ Two readers acquire a read-lock, one writer attempts a write block,
+ the readers release their locks, the writer gets the lock.
+*/
+void tst_QReadWriteLock::multipleReadersBlockRelease()
+{
+
+ QReadWriteLock testLock;
+ release=false;
+ threadDone=false;
+ ReadLockReleasableThread rlt1(testLock);
+ ReadLockReleasableThread rlt2(testLock);
+ rlt1.start();
+ rlt2.start();
+ sleep(1);
+ WriteLockThread wlt(testLock);
+ wlt.start();
+ sleep(1);
+ release=true;
+ wlt.wait();
+ rlt1.wait();
+ rlt2.wait();
+ QVERIFY(threadDone);
+}
+
+/*
+ Multiple readers locks and unlocks a lock.
+*/
+void tst_QReadWriteLock::multipleReadersLoop()
+{
+ int time=500;
+ int hold=250;
+ int wait=0;
+#if defined (Q_OS_HPUX)
+ const int numthreads=50;
+#elif defined(Q_OS_VXWORKS)
+ const int numthreads=40;
+#else
+ const int numthreads=75;
+#endif
+ QReadWriteLock testLock;
+ ReadLockLoopThread *threads[numthreads];
+ int i;
+ for (i=0; i<numthreads; ++i)
+ threads[i] = new ReadLockLoopThread(testLock, time, hold, wait);
+ for (i=0; i<numthreads; ++i)
+ threads[i]->start();
+ for (i=0; i<numthreads; ++i)
+ threads[i]->wait();
+ for (i=0; i<numthreads; ++i)
+ delete threads[i];
+}
+
+/*
+ Multiple writers locks and unlocks a lock.
+*/
+void tst_QReadWriteLock::multipleWritersLoop()
+{
+ int time=500;
+ int wait=0;
+ int hold=0;
+ const int numthreads=50;
+ QReadWriteLock testLock;
+ WriteLockLoopThread *threads[numthreads];
+ int i;
+ for (i=0; i<numthreads; ++i)
+ threads[i] = new WriteLockLoopThread(testLock, time, hold, wait);
+ for (i=0; i<numthreads; ++i)
+ threads[i]->start();
+ for (i=0; i<numthreads; ++i)
+ threads[i]->wait();
+ for (i=0; i<numthreads; ++i)
+ delete threads[i];
+}
+
+/*
+ Multiple readers and writers locks and unlocks a lock.
+*/
+void tst_QReadWriteLock::multipleReadersWritersLoop()
+{
+ //int time=INT_MAX;
+ int time=10000;
+ int readerThreads=20;
+ int readerWait=0;
+ int readerHold=1;
+
+ int writerThreads=2;
+ int writerWait=500;
+ int writerHold=50;
+
+ QReadWriteLock testLock;
+ ReadLockLoopThread *readers[1024];
+ WriteLockLoopThread *writers[1024];
+ int i;
+
+ for (i=0; i<readerThreads; ++i)
+ readers[i] = new ReadLockLoopThread(testLock, time, readerHold, readerWait, false);
+ for (i=0; i<writerThreads; ++i)
+ writers[i] = new WriteLockLoopThread(testLock, time, writerHold, writerWait, false);
+
+ for (i=0; i<readerThreads; ++i)
+ readers[i]->start(QThread::NormalPriority);
+ for (i=0; i<writerThreads; ++i)
+ writers[i]->start(QThread::IdlePriority);
+
+ for (i=0; i<readerThreads; ++i)
+ readers[i]->wait();
+ for (i=0; i<writerThreads; ++i)
+ writers[i]->wait();
+
+ for (i=0; i<readerThreads; ++i)
+ delete readers[i];
+ for (i=0; i<writerThreads; ++i)
+ delete writers[i];
+}
+
+/*
+ Writers increment a variable from 0 to maxval, then reset it to 0.
+ Readers verify that the variable remains at 0.
+*/
+void tst_QReadWriteLock::countingTest()
+{
+ //int time=INT_MAX;
+ int time=10000;
+ int readerThreads=20;
+ int readerWait=1;
+
+ int writerThreads=3;
+ int writerWait=150;
+ int maxval=10000;
+
+ QReadWriteLock testLock;
+ ReadLockCountThread *readers[1024];
+ WriteLockCountThread *writers[1024];
+ int i;
+
+ for (i=0; i<readerThreads; ++i)
+ readers[i] = new ReadLockCountThread(testLock, time, readerWait);
+ for (i=0; i<writerThreads; ++i)
+ writers[i] = new WriteLockCountThread(testLock, time, writerWait, maxval);
+
+ for (i=0; i<readerThreads; ++i)
+ readers[i]->start(QThread::NormalPriority);
+ for (i=0; i<writerThreads; ++i)
+ writers[i]->start(QThread::LowestPriority);
+
+ for (i=0; i<readerThreads; ++i)
+ readers[i]->wait();
+ for (i=0; i<writerThreads; ++i)
+ writers[i]->wait();
+
+ for (i=0; i<readerThreads; ++i)
+ delete readers[i];
+ for (i=0; i<writerThreads; ++i)
+ delete writers[i];
+}
+
+void tst_QReadWriteLock::limitedReaders()
+{
+
+};
+
+/*
+ Test a race-condition that may happen if one thread is in unlock() while
+ another thread deletes the rw-lock.
+
+ MainThread DeleteOnUnlockThread
+
+ write-lock
+ unlock
+ | write-lock
+ | unlock
+ | delete lock
+ deref d inside unlock
+*/
+class DeleteOnUnlockThread : public QThread
+{
+public:
+ DeleteOnUnlockThread(QReadWriteLock **lock, QWaitCondition *startup, QMutex *waitMutex)
+ :m_lock(lock), m_startup(startup), m_waitMutex(waitMutex) {}
+ void run()
+ {
+ m_waitMutex->lock();
+ m_startup->wakeAll();
+ m_waitMutex->unlock();
+
+ // DeleteOnUnlockThread and the main thread will race from this point
+ (*m_lock)->lockForWrite();
+ (*m_lock)->unlock();
+ delete *m_lock;
+ }
+private:
+ QReadWriteLock **m_lock;
+ QWaitCondition *m_startup;
+ QMutex *m_waitMutex;
+};
+
+void tst_QReadWriteLock::deleteOnUnlock()
+{
+ QReadWriteLock *lock = 0;
+ QWaitCondition startup;
+ QMutex waitMutex;
+
+ DeleteOnUnlockThread thread2(&lock, &startup, &waitMutex);
+
+ QTime t;
+ t.start();
+ while(t.elapsed() < 4000) {
+ lock = new QReadWriteLock();
+ waitMutex.lock();
+ lock->lockForWrite();
+ thread2.start();
+ startup.wait(&waitMutex);
+ waitMutex.unlock();
+
+ // DeleteOnUnlockThread and the main thread will race from this point
+ lock->unlock();
+
+ thread2.wait();
+ }
+}
+
+
+void tst_QReadWriteLock::uncontendedLocks()
+{
+
+ uint read=0;
+ uint write=0;
+ uint count=0;
+ int millisecs=1000;
+ {
+ QTime t;
+ t.start();
+ while(t.elapsed() <millisecs)
+ {
+ ++count;
+ }
+ }
+ {
+ QReadWriteLock rwlock;
+ QTime t;
+ t.start();
+ while(t.elapsed() <millisecs)
+ {
+ rwlock.lockForRead();
+ rwlock.unlock();
+ ++read;
+ }
+ }
+ {
+ QReadWriteLock rwlock;
+ QTime t;
+ t.start();
+ while(t.elapsed() <millisecs)
+ {
+ rwlock.lockForWrite();
+ rwlock.unlock();
+ ++write;
+ }
+ }
+
+ qDebug("during %d millisecs:", millisecs);
+ qDebug("counted to %u", count);
+ qDebug("%u uncontended read locks/unlocks", read);
+ qDebug("%u uncontended write locks/unlocks", write);
+}
+
+enum { RecursiveLockCount = 10 };
+
+void tst_QReadWriteLock::recursiveReadLock()
+{
+ // thread to attempt locking for writing while the test recursively locks for reading
+ class RecursiveReadLockThread : public QThread
+ {
+ public:
+ QReadWriteLock *lock;
+ bool tryLockForWriteResult;
+
+ void run()
+ {
+ testsTurn.release();
+
+ // test is recursively locking for writing
+ for (int i = 0; i < RecursiveLockCount; ++i) {
+ threadsTurn.acquire();
+ tryLockForWriteResult = lock->tryLockForWrite();
+ testsTurn.release();
+ }
+
+ // test is releasing recursive write lock
+ for (int i = 0; i < RecursiveLockCount - 1; ++i) {
+ threadsTurn.acquire();
+ tryLockForWriteResult = lock->tryLockForWrite();
+ testsTurn.release();
+ }
+
+ // after final unlock in test, we should get the lock
+ threadsTurn.acquire();
+ tryLockForWriteResult = lock->tryLockForWrite();
+ testsTurn.release();
+
+ // cleanup
+ threadsTurn.acquire();
+ lock->unlock();
+ testsTurn.release();
+
+ // test will lockForRead(), then we will lockForWrite()
+ // (and block), purpose is to ensure that the test can
+ // recursive lockForRead() even with a waiting writer
+ threadsTurn.acquire();
+ // testsTurn.release(); // ### do not release here, the test uses tryAcquire()
+ lock->lockForWrite();
+ lock->unlock();
+ }
+ };
+
+ // init
+ QReadWriteLock lock(QReadWriteLock::Recursive);
+ RecursiveReadLockThread thread;
+ thread.lock = &lock;
+ thread.start();
+
+ testsTurn.acquire();
+
+ // verify that we can get multiple read locks in the same thread
+ for (int i = 0; i < RecursiveLockCount; ++i) {
+ QVERIFY(lock.tryLockForRead());
+ threadsTurn.release();
+
+ testsTurn.acquire();
+ QVERIFY(!thread.tryLockForWriteResult);
+ }
+
+ // have to unlock the same number of times that we locked
+ for (int i = 0;i < RecursiveLockCount - 1; ++i) {
+ lock.unlock();
+ threadsTurn.release();
+
+ testsTurn.acquire();
+ QVERIFY(!thread.tryLockForWriteResult);
+ }
+
+ // after the final unlock, we should be able to get the write lock
+ lock.unlock();
+ threadsTurn.release();
+
+ testsTurn.acquire();
+ QVERIFY(thread.tryLockForWriteResult);
+ threadsTurn.release();
+
+ // check that recursive read locking works even when we have a waiting writer
+ testsTurn.acquire();
+ QVERIFY(lock.tryLockForRead());
+ threadsTurn.release();
+
+ testsTurn.tryAcquire(1, 1000);
+ QVERIFY(lock.tryLockForRead());
+ lock.unlock();
+ lock.unlock();
+
+ // cleanup
+ QVERIFY(thread.wait());
+}
+
+void tst_QReadWriteLock::recursiveWriteLock()
+{
+ // thread to attempt locking for reading while the test recursively locks for writing
+ class RecursiveWriteLockThread : public QThread
+ {
+ public:
+ QReadWriteLock *lock;
+ bool tryLockForReadResult;
+
+ void run()
+ {
+ testsTurn.release();
+
+ // test is recursively locking for writing
+ for (int i = 0; i < RecursiveLockCount; ++i) {
+ threadsTurn.acquire();
+ tryLockForReadResult = lock->tryLockForRead();
+ testsTurn.release();
+ }
+
+ // test is releasing recursive write lock
+ for (int i = 0; i < RecursiveLockCount - 1; ++i) {
+ threadsTurn.acquire();
+ tryLockForReadResult = lock->tryLockForRead();
+ testsTurn.release();
+ }
+
+ // after final unlock in test, we should get the lock
+ threadsTurn.acquire();
+ tryLockForReadResult = lock->tryLockForRead();
+ testsTurn.release();
+
+ // cleanup
+ lock->unlock();
+ }
+ };
+
+ // init
+ QReadWriteLock lock(QReadWriteLock::Recursive);
+ RecursiveWriteLockThread thread;
+ thread.lock = &lock;
+ thread.start();
+
+ testsTurn.acquire();
+
+ // verify that we can get multiple read locks in the same thread
+ for (int i = 0; i < RecursiveLockCount; ++i) {
+ QVERIFY(lock.tryLockForWrite());
+ threadsTurn.release();
+
+ testsTurn.acquire();
+ QVERIFY(!thread.tryLockForReadResult);
+ }
+
+ // have to unlock the same number of times that we locked
+ for (int i = 0;i < RecursiveLockCount - 1; ++i) {
+ lock.unlock();
+ threadsTurn.release();
+
+ testsTurn.acquire();
+ QVERIFY(!thread.tryLockForReadResult);
+ }
+
+ // after the final unlock, thread should be able to get the read lock
+ lock.unlock();
+ threadsTurn.release();
+
+ testsTurn.acquire();
+ QVERIFY(thread.tryLockForReadResult);
+
+ // cleanup
+ QVERIFY(thread.wait());
+}
+
+QTEST_MAIN(tst_QReadWriteLock)
+
+#include "tst_qreadwritelock.moc"
diff --git a/tests/auto/corelib/thread/qsemaphore/.gitignore b/tests/auto/corelib/thread/qsemaphore/.gitignore
new file mode 100644
index 0000000000..fe86486af4
--- /dev/null
+++ b/tests/auto/corelib/thread/qsemaphore/.gitignore
@@ -0,0 +1 @@
+tst_qsemaphore
diff --git a/tests/auto/corelib/thread/qsemaphore/qsemaphore.pro b/tests/auto/corelib/thread/qsemaphore/qsemaphore.pro
new file mode 100644
index 0000000000..a75bf443bc
--- /dev/null
+++ b/tests/auto/corelib/thread/qsemaphore/qsemaphore.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+SOURCES += tst_qsemaphore.cpp
+QT = core
+
+
+CONFIG += parallel_test
+mac*:CONFIG+=insignificant_test
diff --git a/tests/auto/corelib/thread/qsemaphore/tst_qsemaphore.cpp b/tests/auto/corelib/thread/qsemaphore/tst_qsemaphore.cpp
new file mode 100644
index 0000000000..a2c6bf16b7
--- /dev/null
+++ b/tests/auto/corelib/thread/qsemaphore/tst_qsemaphore.cpp
@@ -0,0 +1,450 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+
+#include <qcoreapplication.h>
+#include <qthread.h>
+#include <qsemaphore.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QSemaphore : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QSemaphore();
+ ~tst_QSemaphore();
+
+private slots:
+ void acquire();
+ void tryAcquire();
+ void tryAcquireWithTimeout_data();
+ void tryAcquireWithTimeout();
+ void tryAcquireWithTimeoutStarvation();
+ void release();
+ void available();
+ void producerConsumer();
+};
+
+static QSemaphore *semaphore = 0;
+
+tst_QSemaphore::tst_QSemaphore()
+{ }
+
+tst_QSemaphore::~tst_QSemaphore()
+{ }
+
+class ThreadOne : public QThread
+{
+public:
+ ThreadOne() {}
+
+protected:
+ void run()
+ {
+ int i = 0;
+ while ( i < 100 ) {
+ semaphore->acquire();
+ i++;
+ semaphore->release();
+ }
+ }
+};
+
+class ThreadN : public QThread
+{
+ int N;
+
+public:
+ ThreadN(int n) :N(n) { }
+
+protected:
+ void run()
+ {
+ int i = 0;
+ while ( i < 100 ) {
+ semaphore->acquire(N);
+ i++;
+ semaphore->release(N);
+ }
+ }
+};
+
+void tst_QSemaphore::acquire()
+{
+ {
+ // old incrementOne() test
+ QVERIFY(!semaphore);
+ semaphore = new QSemaphore;
+ // make some "thing" available
+ semaphore->release();
+
+ ThreadOne t1;
+ ThreadOne t2;
+
+ t1.start();
+ t2.start();
+
+ QVERIFY(t1.wait(4000));
+ QVERIFY(t2.wait(4000));
+
+ delete semaphore;
+ semaphore = 0;
+ }
+
+ // old incrementN() test
+ {
+ QVERIFY(!semaphore);
+ semaphore = new QSemaphore;
+ // make 4 "things" available
+ semaphore->release(4);
+
+ ThreadN t1(2);
+ ThreadN t2(3);
+
+ t1.start();
+ t2.start();
+
+ QVERIFY(t1.wait(4000));
+ QVERIFY(t2.wait(4000));
+
+ delete semaphore;
+ semaphore = 0;
+ }
+
+ QSemaphore semaphore;
+
+ QCOMPARE(semaphore.available(), 0);
+ semaphore.release();
+ QCOMPARE(semaphore.available(), 1);
+ semaphore.release();
+ QCOMPARE(semaphore.available(), 2);
+ semaphore.release(10);
+ QCOMPARE(semaphore.available(), 12);
+ semaphore.release(10);
+ QCOMPARE(semaphore.available(), 22);
+
+ semaphore.acquire();
+ QCOMPARE(semaphore.available(), 21);
+ semaphore.acquire();
+ QCOMPARE(semaphore.available(), 20);
+ semaphore.acquire(10);
+ QCOMPARE(semaphore.available(), 10);
+ semaphore.acquire(10);
+ QCOMPARE(semaphore.available(), 0);
+}
+
+void tst_QSemaphore::tryAcquire()
+{
+ QSemaphore semaphore;
+
+ QCOMPARE(semaphore.available(), 0);
+
+ semaphore.release();
+ QCOMPARE(semaphore.available(), 1);
+ QVERIFY(!semaphore.tryAcquire(2));
+ QCOMPARE(semaphore.available(), 1);
+
+ semaphore.release();
+ QCOMPARE(semaphore.available(), 2);
+ QVERIFY(!semaphore.tryAcquire(3));
+ QCOMPARE(semaphore.available(), 2);
+
+ semaphore.release(10);
+ QCOMPARE(semaphore.available(), 12);
+ QVERIFY(!semaphore.tryAcquire(100));
+ QCOMPARE(semaphore.available(), 12);
+
+ semaphore.release(10);
+ QCOMPARE(semaphore.available(), 22);
+ QVERIFY(!semaphore.tryAcquire(100));
+ QCOMPARE(semaphore.available(), 22);
+
+ QVERIFY(semaphore.tryAcquire());
+ QCOMPARE(semaphore.available(), 21);
+
+ QVERIFY(semaphore.tryAcquire());
+ QCOMPARE(semaphore.available(), 20);
+
+ QVERIFY(semaphore.tryAcquire(10));
+ QCOMPARE(semaphore.available(), 10);
+
+ QVERIFY(semaphore.tryAcquire(10));
+ QCOMPARE(semaphore.available(), 0);
+
+ // should not be able to acquire more
+ QVERIFY(!semaphore.tryAcquire());
+ QCOMPARE(semaphore.available(), 0);
+
+ QVERIFY(!semaphore.tryAcquire());
+ QCOMPARE(semaphore.available(), 0);
+
+ QVERIFY(!semaphore.tryAcquire(10));
+ QCOMPARE(semaphore.available(), 0);
+
+ QVERIFY(!semaphore.tryAcquire(10));
+ QCOMPARE(semaphore.available(), 0);
+}
+
+void tst_QSemaphore::tryAcquireWithTimeout_data()
+{
+ QTest::addColumn<int>("timeout");
+
+ QTest::newRow("1s") << 1000;
+ QTest::newRow("10s") << 10000;
+}
+
+void tst_QSemaphore::tryAcquireWithTimeout()
+{
+ QFETCH(int, timeout);
+
+ QSemaphore semaphore;
+ QTime time;
+
+#define QVERIFYGE(a,b) {int e = a; if (a<b) qDebug() << #a << "=" << e << " !>= " << #b << "=" << b; QVERIFY(e>=b);}
+#define QVERIFYLE(a,b) {int e = a; if (b<a) qDebug() << #a << "=" << e << " !<= " << #b << "=" << b; QVERIFY(e<=b);}
+
+ QCOMPARE(semaphore.available(), 0);
+
+ semaphore.release();
+ QCOMPARE(semaphore.available(), 1);
+ time.start();
+ QVERIFY(!semaphore.tryAcquire(2, timeout));
+ QVERIFYGE(time.elapsed(), timeout);
+ QCOMPARE(semaphore.available(), 1);
+
+ semaphore.release();
+ QCOMPARE(semaphore.available(), 2);
+ time.start();
+ QVERIFY(!semaphore.tryAcquire(3, timeout));
+ QVERIFYGE(time.elapsed(), timeout);
+ QCOMPARE(semaphore.available(), 2);
+
+ semaphore.release(10);
+ QCOMPARE(semaphore.available(), 12);
+ time.start();
+ QVERIFY(!semaphore.tryAcquire(100, timeout));
+ QVERIFYGE(time.elapsed(), timeout);
+ QCOMPARE(semaphore.available(), 12);
+
+ semaphore.release(10);
+ QCOMPARE(semaphore.available(), 22);
+ time.start();
+ QVERIFY(!semaphore.tryAcquire(100, timeout));
+ QVERIFYGE(time.elapsed(), timeout);
+ QCOMPARE(semaphore.available(), 22);
+
+ time.start();
+ QVERIFY(semaphore.tryAcquire(1, timeout));
+ QVERIFYLE(time.elapsed(), timeout);
+ QCOMPARE(semaphore.available(), 21);
+
+ time.start();
+ QVERIFY(semaphore.tryAcquire(1, timeout));
+ QVERIFYLE(time.elapsed(), timeout);
+ QCOMPARE(semaphore.available(), 20);
+
+ time.start();
+ QVERIFY(semaphore.tryAcquire(10, timeout));
+ QVERIFYLE(time.elapsed(), timeout);
+ QCOMPARE(semaphore.available(), 10);
+
+ time.start();
+ QVERIFY(semaphore.tryAcquire(10, timeout));
+ QVERIFYLE(time.elapsed(), timeout);
+ QCOMPARE(semaphore.available(), 0);
+
+ // should not be able to acquire more
+ time.start();
+ QVERIFY(!semaphore.tryAcquire(1, timeout));
+ QVERIFYGE(time.elapsed(), timeout);
+ QCOMPARE(semaphore.available(), 0);
+
+ time.start();
+ QVERIFY(!semaphore.tryAcquire(1, timeout));
+ QVERIFYGE(time.elapsed(), timeout);
+ QCOMPARE(semaphore.available(), 0);
+
+ time.start();
+ QVERIFY(!semaphore.tryAcquire(10, timeout));
+ QVERIFYGE(time.elapsed(), timeout);
+ QCOMPARE(semaphore.available(), 0);
+
+ time.start();
+ QVERIFY(!semaphore.tryAcquire(10, timeout));
+ QVERIFYGE(time.elapsed(), timeout);
+ QCOMPARE(semaphore.available(), 0);
+}
+
+void tst_QSemaphore::tryAcquireWithTimeoutStarvation()
+{
+ class Thread : public QThread
+ {
+ public:
+ QSemaphore startup;
+ QSemaphore *semaphore;
+ int amountToConsume, timeout;
+
+ void run()
+ {
+ startup.release();
+ forever {
+ if (!semaphore->tryAcquire(amountToConsume, timeout))
+ break;
+ semaphore->release(amountToConsume);
+ }
+ }
+ };
+
+ QSemaphore semaphore;
+ semaphore.release(1);
+
+ Thread consumer;
+ consumer.semaphore = &semaphore;
+ consumer.amountToConsume = 1;
+ consumer.timeout = 1000;
+
+ // start the thread and wait for it to start consuming
+ consumer.start();
+ consumer.startup.acquire();
+
+ // try to consume more than the thread we started is, and provide a longer
+ // timeout... we should timeout, not wait indefinitely
+ QVERIFY(!semaphore.tryAcquire(consumer.amountToConsume * 2, consumer.timeout * 2));
+
+ // the consumer should still be running
+ QVERIFY(consumer.isRunning() && !consumer.isFinished());
+
+ // acquire, and wait for smallConsumer to timeout
+ semaphore.acquire();
+ QVERIFY(consumer.wait());
+}
+
+void tst_QSemaphore::release()
+{ DEPENDS_ON("acquire"); }
+
+void tst_QSemaphore::available()
+{ DEPENDS_ON("acquire"); }
+
+const char alphabet[] = "ACGTH";
+const int AlphabetSize = sizeof(alphabet) - 1;
+
+const int BufferSize = 4096; // GCD of BufferSize and alphabet size must be 1
+char buffer[BufferSize];
+
+#ifndef Q_OS_WINCE
+const int ProducerChunkSize = 3;
+const int ConsumerChunkSize = 7;
+const int Multiplier = 10;
+#else
+const int ProducerChunkSize = 2;
+const int ConsumerChunkSize = 5;
+const int Multiplier = 3;
+#endif
+
+// note: the code depends on the fact that DataSize is a multiple of
+// ProducerChunkSize, ConsumerChunkSize, and BufferSize
+const int DataSize = ProducerChunkSize * ConsumerChunkSize * BufferSize * Multiplier;
+
+QSemaphore freeSpace(BufferSize);
+QSemaphore usedSpace;
+
+class Producer : public QThread
+{
+public:
+ void run();
+};
+
+void Producer::run()
+{
+ for (int i = 0; i < DataSize; ++i) {
+ freeSpace.acquire();
+ buffer[i % BufferSize] = alphabet[i % AlphabetSize];
+ usedSpace.release();
+ }
+ for (int i = 0; i < DataSize; ++i) {
+ if ((i % ProducerChunkSize) == 0)
+ freeSpace.acquire(ProducerChunkSize);
+ buffer[i % BufferSize] = alphabet[i % AlphabetSize];
+ if ((i % ProducerChunkSize) == (ProducerChunkSize - 1))
+ usedSpace.release(ProducerChunkSize);
+ }
+}
+
+class Consumer : public QThread
+{
+public:
+ void run();
+};
+
+void Consumer::run()
+{
+ for (int i = 0; i < DataSize; ++i) {
+ usedSpace.acquire();
+ QCOMPARE(buffer[i % BufferSize], alphabet[i % AlphabetSize]);
+ freeSpace.release();
+ }
+ for (int i = 0; i < DataSize; ++i) {
+ if ((i % ConsumerChunkSize) == 0)
+ usedSpace.acquire(ConsumerChunkSize);
+ QCOMPARE(buffer[i % BufferSize], alphabet[i % AlphabetSize]);
+ if ((i % ConsumerChunkSize) == (ConsumerChunkSize - 1))
+ freeSpace.release(ConsumerChunkSize);
+ }
+}
+
+void tst_QSemaphore::producerConsumer()
+{
+ Producer producer;
+ Consumer consumer;
+ producer.start();
+ consumer.start();
+ producer.wait();
+ consumer.wait();
+}
+
+QTEST_MAIN(tst_QSemaphore)
+#include "tst_qsemaphore.moc"
diff --git a/tests/auto/corelib/thread/qthread/.gitignore b/tests/auto/corelib/thread/qthread/.gitignore
new file mode 100644
index 0000000000..4413a75588
--- /dev/null
+++ b/tests/auto/corelib/thread/qthread/.gitignore
@@ -0,0 +1 @@
+tst_qthread
diff --git a/tests/auto/corelib/thread/qthread/qthread.pro b/tests/auto/corelib/thread/qthread/qthread.pro
new file mode 100644
index 0000000000..d3b1028034
--- /dev/null
+++ b/tests/auto/corelib/thread/qthread/qthread.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qthread.cpp
+QT = core
+symbian:LIBS += -llibpthread
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/thread/qthread/tst_qthread.cpp b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
new file mode 100644
index 0000000000..3c46212c16
--- /dev/null
+++ b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
@@ -0,0 +1,1249 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qdatetime.h>
+#include <qmutex.h>
+#include <qthread.h>
+#include <qtimer.h>
+#include <qwaitcondition.h>
+#include <qdebug.h>
+#include <qmetaobject.h>
+
+#ifdef Q_OS_UNIX
+#include <pthread.h>
+#endif
+#if defined(Q_OS_WINCE)
+#include <windows.h>
+#elif defined(Q_OS_WIN)
+#include <process.h>
+#include <windows.h>
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QThread : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QThread();
+ virtual ~tst_QThread();
+
+private slots:
+ void currentThreadId();
+ void currentThread();
+ void idealThreadCount();
+ void isFinished();
+ void isRunning();
+ void setPriority();
+ void priority();
+ void setStackSize();
+ void stackSize();
+ void exit();
+ void start();
+ void terminate();
+ void quit();
+ void wait();
+ void started();
+ void finished();
+ void terminated();
+ void run();
+ void exec();
+ void setTerminationEnabled();
+ void sleep();
+ void msleep();
+ void usleep();
+
+ void nativeThreadAdoption();
+ void adoptedThreadAffinity();
+ void adoptedThreadSetPriority();
+ void adoptedThreadExit();
+ void adoptedThreadExec();
+ void adoptedThreadFinished();
+ void adoptedThreadExecFinished();
+ void adoptMultipleThreads();
+ void adoptMultipleThreadsOverlap();
+
+ void QTBUG13810_exitAndStart();
+ void QTBUG15378_exitAndExec();
+
+ void connectThreadFinishedSignalToObjectDeleteLaterSlot();
+ void wait2();
+ void wait3_slowDestructor();
+ void destroyFinishRace();
+ void startFinishRace();
+ void startAndQuitCustomEventLoop();
+
+ void stressTest();
+};
+
+enum { one_minute = 60 * 1000, five_minutes = 5 * one_minute };
+
+class SignalRecorder : public QObject
+{
+ Q_OBJECT
+public:
+ QAtomicInt activationCount;
+
+ inline SignalRecorder()
+ { activationCount = 0; }
+
+ bool wasActivated()
+ { return activationCount > 0; }
+
+public slots:
+ void slot();
+};
+
+void SignalRecorder::slot()
+{ activationCount.ref(); }
+
+class Current_Thread : public QThread
+{
+public:
+ Qt::HANDLE id;
+ QThread *thread;
+
+ void run()
+ {
+ id = QThread::currentThreadId();
+ thread = QThread::currentThread();
+ }
+};
+
+class Simple_Thread : public QThread
+{
+public:
+ QMutex mutex;
+ QWaitCondition cond;
+
+ void run()
+ {
+ QMutexLocker locker(&mutex);
+ cond.wakeOne();
+ }
+};
+
+class Exit_Object : public QObject
+{
+ Q_OBJECT
+public:
+ QThread *thread;
+ int code;
+public slots:
+ void slot()
+ { thread->exit(code); }
+};
+
+class Exit_Thread : public Simple_Thread
+{
+public:
+ Exit_Object *object;
+ int code;
+ int result;
+
+ void run()
+ {
+ Simple_Thread::run();
+ if (object) {
+ object->thread = this;
+ object->code = code;
+ QTimer::singleShot(100, object, SLOT(slot()));
+ }
+ result = exec();
+ }
+};
+
+class Terminate_Thread : public Simple_Thread
+{
+public:
+ void run()
+ {
+ setTerminationEnabled(false);
+ {
+ QMutexLocker locker(&mutex);
+ cond.wakeOne();
+ cond.wait(&mutex, five_minutes);
+ }
+ setTerminationEnabled(true);
+ qFatal("tst_QThread: test case hung");
+ }
+};
+
+class Quit_Object : public QObject
+{
+ Q_OBJECT
+public:
+ QThread *thread;
+public slots:
+ void slot()
+ { thread->quit(); }
+};
+
+class Quit_Thread : public Simple_Thread
+{
+public:
+ Quit_Object *object;
+ int result;
+
+ void run()
+ {
+ Simple_Thread::run();
+ if (object) {
+ object->thread = this;
+ QTimer::singleShot(100, object, SLOT(slot()));
+ }
+ result = exec();
+ }
+};
+
+class Sleep_Thread : public Simple_Thread
+{
+public:
+ enum SleepType { Second, Millisecond, Microsecond };
+
+ SleepType sleepType;
+ int interval;
+
+ int elapsed; // result, in *MILLISECONDS*
+
+ void run()
+ {
+ QMutexLocker locker(&mutex);
+
+ elapsed = 0;
+ QTime time;
+ time.start();
+ switch (sleepType) {
+ case Second:
+ sleep(interval);
+ break;
+ case Millisecond:
+ msleep(interval);
+ break;
+ case Microsecond:
+ usleep(interval);
+ break;
+ }
+ elapsed = time.elapsed();
+
+ cond.wakeOne();
+ }
+};
+
+tst_QThread::tst_QThread()
+
+{
+}
+
+tst_QThread::~tst_QThread()
+{
+
+}
+
+void tst_QThread::currentThreadId()
+{
+ Current_Thread thread;
+ thread.id = 0;
+ thread.thread = 0;
+ thread.start();
+ QVERIFY(thread.wait(five_minutes));
+ QVERIFY(thread.id != 0);
+ QVERIFY(thread.id != QThread::currentThreadId());
+}
+
+void tst_QThread::currentThread()
+{
+ QVERIFY(QThread::currentThread() != 0);
+ QCOMPARE(QThread::currentThread(), thread());
+
+ Current_Thread thread;
+ thread.id = 0;
+ thread.thread = 0;
+ thread.start();
+ QVERIFY(thread.wait(five_minutes));
+ QCOMPARE(thread.thread, (QThread *)&thread);
+}
+
+void tst_QThread::idealThreadCount()
+{
+ QVERIFY(QThread::idealThreadCount() > 0);
+ qDebug() << "Available cpu cores:" << QThread::idealThreadCount();
+}
+
+void tst_QThread::isFinished()
+{
+ Simple_Thread thread;
+ QVERIFY(!thread.isFinished());
+ QMutexLocker locker(&thread.mutex);
+ thread.start();
+ QVERIFY(!thread.isFinished());
+ thread.cond.wait(locker.mutex());
+ QVERIFY(thread.wait(five_minutes));
+ QVERIFY(thread.isFinished());
+}
+
+void tst_QThread::isRunning()
+{
+ Simple_Thread thread;
+ QVERIFY(!thread.isRunning());
+ QMutexLocker locker(&thread.mutex);
+ thread.start();
+ QVERIFY(thread.isRunning());
+ thread.cond.wait(locker.mutex());
+ QVERIFY(thread.wait(five_minutes));
+ QVERIFY(!thread.isRunning());
+}
+
+void tst_QThread::setPriority()
+{
+ Simple_Thread thread;
+
+ // cannot change the priority, since the thread is not running
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::IdlePriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::LowestPriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::LowPriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::NormalPriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::HighPriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::HighestPriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::TimeCriticalPriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QMutexLocker locker(&thread.mutex);
+ thread.start();
+
+ // change the priority of a running thread
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ thread.setPriority(QThread::IdlePriority);
+ QCOMPARE(thread.priority(), QThread::IdlePriority);
+ thread.setPriority(QThread::LowestPriority);
+ QCOMPARE(thread.priority(), QThread::LowestPriority);
+ thread.setPriority(QThread::LowPriority);
+ QCOMPARE(thread.priority(), QThread::LowPriority);
+ thread.setPriority(QThread::NormalPriority);
+ QCOMPARE(thread.priority(), QThread::NormalPriority);
+ thread.setPriority(QThread::HighPriority);
+ QCOMPARE(thread.priority(), QThread::HighPriority);
+ thread.setPriority(QThread::HighestPriority);
+ QCOMPARE(thread.priority(), QThread::HighestPriority);
+ thread.setPriority(QThread::TimeCriticalPriority);
+ QCOMPARE(thread.priority(), QThread::TimeCriticalPriority);
+ thread.cond.wait(locker.mutex());
+ QVERIFY(thread.wait(five_minutes));
+
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::IdlePriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::LowestPriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::LowPriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::NormalPriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::HighPriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::HighestPriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+ QTest::ignoreMessage(QtWarningMsg, "QThread::setPriority: Cannot set priority, thread is not running");
+ thread.setPriority(QThread::TimeCriticalPriority);
+ QCOMPARE(thread.priority(), QThread::InheritPriority);
+}
+
+void tst_QThread::priority()
+{ DEPENDS_ON("setPriority"); }
+
+void tst_QThread::setStackSize()
+{
+ Simple_Thread thread;
+ QCOMPARE(thread.stackSize(), 0u);
+ thread.setStackSize(8192u);
+ QCOMPARE(thread.stackSize(), 8192u);
+ thread.setStackSize(0u);
+ QCOMPARE(thread.stackSize(), 0u);
+}
+
+void tst_QThread::stackSize()
+{
+ DEPENDS_ON("setStackSize");
+}
+
+void tst_QThread::exit()
+{
+ Exit_Thread thread;
+ thread.object = new Exit_Object;
+ thread.object->moveToThread(&thread);
+ thread.code = 42;
+ thread.result = 0;
+ QVERIFY(!thread.isFinished());
+ QVERIFY(!thread.isRunning());
+ QMutexLocker locker(&thread.mutex);
+ thread.start();
+ QVERIFY(thread.isRunning());
+ QVERIFY(!thread.isFinished());
+ thread.cond.wait(locker.mutex());
+ QVERIFY(thread.wait(five_minutes));
+ QVERIFY(thread.isFinished());
+ QVERIFY(!thread.isRunning());
+ QCOMPARE(thread.result, thread.code);
+ delete thread.object;
+
+ Exit_Thread thread2;
+ thread2.object = 0;
+ thread2.code = 53;
+ thread2.result = 0;
+ QMutexLocker locker2(&thread2.mutex);
+ thread2.start();
+ thread2.exit(thread2.code);
+ thread2.cond.wait(locker2.mutex());
+ QVERIFY(thread2.wait(five_minutes));
+ QCOMPARE(thread2.result, thread2.code);
+}
+
+void tst_QThread::start()
+{
+ QThread::Priority priorities[] = {
+ QThread::IdlePriority,
+ QThread::LowestPriority,
+ QThread::LowPriority,
+ QThread::NormalPriority,
+ QThread::HighPriority,
+ QThread::HighestPriority,
+ QThread::TimeCriticalPriority,
+ QThread::InheritPriority
+ };
+ const int prio_count = sizeof(priorities) / sizeof(QThread::Priority);
+
+ for (int i = 0; i < prio_count; ++i) {
+ Simple_Thread thread;
+ QVERIFY(!thread.isFinished());
+ QVERIFY(!thread.isRunning());
+ QMutexLocker locker(&thread.mutex);
+ thread.start(priorities[i]);
+ QVERIFY(thread.isRunning());
+ QVERIFY(!thread.isFinished());
+ thread.cond.wait(locker.mutex());
+ QVERIFY(thread.wait(five_minutes));
+ QVERIFY(thread.isFinished());
+ QVERIFY(!thread.isRunning());
+ }
+}
+
+void tst_QThread::terminate()
+{
+ Terminate_Thread thread;
+ {
+ QMutexLocker locker(&thread.mutex);
+ thread.start();
+ QVERIFY(thread.cond.wait(locker.mutex(), five_minutes));
+ thread.terminate();
+ thread.cond.wakeOne();
+ }
+ QVERIFY(thread.wait(five_minutes));
+}
+
+void tst_QThread::quit()
+{
+ Quit_Thread thread;
+ thread.object = new Quit_Object;
+ thread.object->moveToThread(&thread);
+ thread.result = -1;
+ QVERIFY(!thread.isFinished());
+ QVERIFY(!thread.isRunning());
+ QMutexLocker locker(&thread.mutex);
+ thread.start();
+ QVERIFY(thread.isRunning());
+ QVERIFY(!thread.isFinished());
+ thread.cond.wait(locker.mutex());
+ QVERIFY(thread.wait(five_minutes));
+ QVERIFY(thread.isFinished());
+ QVERIFY(!thread.isRunning());
+ QCOMPARE(thread.result, 0);
+ delete thread.object;
+
+ Quit_Thread thread2;
+ thread2.object = 0;
+ thread2.result = -1;
+ QMutexLocker locker2(&thread2.mutex);
+ thread2.start();
+ thread2.quit();
+ thread2.cond.wait(locker2.mutex());
+ QVERIFY(thread2.wait(five_minutes));
+ QCOMPARE(thread2.result, 0);
+}
+
+void tst_QThread::wait()
+{
+ DEPENDS_ON("isRunning");
+ DEPENDS_ON("isFinished");
+}
+
+void tst_QThread::started()
+{
+ SignalRecorder recorder;
+ Simple_Thread thread;
+ connect(&thread, SIGNAL(started()), &recorder, SLOT(slot()), Qt::DirectConnection);
+ thread.start();
+ QVERIFY(thread.wait(five_minutes));
+ QVERIFY(recorder.wasActivated());
+}
+
+void tst_QThread::finished()
+{
+ SignalRecorder recorder;
+ Simple_Thread thread;
+ connect(&thread, SIGNAL(finished()), &recorder, SLOT(slot()), Qt::DirectConnection);
+ thread.start();
+ QVERIFY(thread.wait(five_minutes));
+ QVERIFY(recorder.wasActivated());
+}
+
+void tst_QThread::terminated()
+{
+ SignalRecorder recorder;
+ Terminate_Thread thread;
+ connect(&thread, SIGNAL(terminated()), &recorder, SLOT(slot()), Qt::DirectConnection);
+ {
+ QMutexLocker locker(&thread.mutex);
+ thread.start();
+ thread.cond.wait(locker.mutex());
+ thread.terminate();
+ thread.cond.wakeOne();
+ }
+ QVERIFY(thread.wait(five_minutes));
+ QVERIFY(recorder.wasActivated());
+}
+
+void tst_QThread::run()
+{ DEPENDS_ON("wait()"); }
+
+void tst_QThread::exec()
+{
+ DEPENDS_ON("exit()");
+ DEPENDS_ON("quit()");
+
+ class MultipleExecThread : public QThread
+ {
+ public:
+ int res1, res2;
+
+ MultipleExecThread() : res1(-2), res2(-2) { }
+
+ void run()
+ {
+ {
+ Exit_Object o;
+ o.thread = this;
+ o.code = 1;
+ QTimer::singleShot(100, &o, SLOT(slot()));
+ res1 = exec();
+ }
+ {
+ Exit_Object o;
+ o.thread = this;
+ o.code = 2;
+ QTimer::singleShot(100, &o, SLOT(slot()));
+ res2 = exec();
+ }
+ }
+ };
+
+ MultipleExecThread thread;
+ thread.start();
+ QVERIFY(thread.wait());
+
+ QCOMPARE(thread.res1, 1);
+ QCOMPARE(thread.res2, 2);
+}
+
+void tst_QThread::setTerminationEnabled()
+{ DEPENDS_ON("terminate"); }
+
+void tst_QThread::sleep()
+{
+ Sleep_Thread thread;
+ thread.sleepType = Sleep_Thread::Second;
+ thread.interval = 2;
+ thread.start();
+ QVERIFY(thread.wait(five_minutes));
+ QVERIFY(thread.elapsed >= 2000);
+}
+
+void tst_QThread::msleep()
+{
+ Sleep_Thread thread;
+ thread.sleepType = Sleep_Thread::Millisecond;
+ thread.interval = 120;
+ thread.start();
+ QVERIFY(thread.wait(five_minutes));
+#if defined (Q_OS_WIN)
+ // Since the resolution of QTime is so coarse...
+ QVERIFY(thread.elapsed >= 100);
+#else
+ QVERIFY(thread.elapsed >= 120);
+#endif
+}
+
+void tst_QThread::usleep()
+{
+ Sleep_Thread thread;
+ thread.sleepType = Sleep_Thread::Microsecond;
+ thread.interval = 120000;
+ thread.start();
+ QVERIFY(thread.wait(five_minutes));
+#if defined (Q_OS_WIN)
+ // Since the resolution of QTime is so coarse...
+ QVERIFY(thread.elapsed >= 100);
+#else
+ QVERIFY(thread.elapsed >= 120);
+#endif
+}
+
+typedef void (*FunctionPointer)(void *);
+void noop(void*) { }
+
+#ifdef Q_OS_SYMBIAN
+typedef RThread ThreadHandle;
+#elif defined Q_OS_UNIX
+ typedef pthread_t ThreadHandle;
+#elif defined Q_OS_WIN
+ typedef HANDLE ThreadHandle;
+#endif
+
+#ifdef Q_OS_WIN
+#define WIN_FIX_STDCALL __stdcall
+#else
+#define WIN_FIX_STDCALL
+#endif
+
+class NativeThreadWrapper
+{
+public:
+ NativeThreadWrapper() : qthread(0), waitForStop(false) {}
+ void start(FunctionPointer functionPointer = noop, void *data = 0);
+ void startAndWait(FunctionPointer functionPointer = noop, void *data = 0);
+ void join();
+ void setWaitForStop() { waitForStop = true; }
+ void stop();
+
+ ThreadHandle nativeThreadHandle;
+ QThread *qthread;
+ QWaitCondition startCondition;
+ QMutex mutex;
+ bool waitForStop;
+ QWaitCondition stopCondition;
+protected:
+ static void *runUnix(void *data);
+ static unsigned WIN_FIX_STDCALL runWin(void *data);
+ static int runSymbian(void *data);
+
+ FunctionPointer functionPointer;
+ void *data;
+};
+
+void NativeThreadWrapper::start(FunctionPointer functionPointer, void *data)
+{
+ this->functionPointer = functionPointer;
+ this->data = data;
+#ifdef Q_OS_SYMBIAN
+ qt_symbian_throwIfError(nativeThreadHandle.Create(KNullDesC(), NativeThreadWrapper::runSymbian, 1024, &User::Allocator(), this));
+ nativeThreadHandle.Resume();
+#elif defined Q_OS_UNIX
+ const int state = pthread_create(&nativeThreadHandle, 0, NativeThreadWrapper::runUnix, this);
+ Q_UNUSED(state);
+#elif defined(Q_OS_WINCE)
+ nativeThreadHandle = CreateThread(NULL, 0 , (LPTHREAD_START_ROUTINE)NativeThreadWrapper::runWin , this, 0, NULL);
+#elif defined Q_OS_WIN
+ unsigned thrdid = 0;
+ nativeThreadHandle = (Qt::HANDLE) _beginthreadex(NULL, 0, NativeThreadWrapper::runWin, this, 0, &thrdid);
+#endif
+}
+
+void NativeThreadWrapper::startAndWait(FunctionPointer functionPointer, void *data)
+{
+ QMutexLocker locker(&mutex);
+ start(functionPointer, data);
+ startCondition.wait(locker.mutex());
+}
+
+void NativeThreadWrapper::join()
+{
+#ifdef Q_OS_SYMBIAN
+ TRequestStatus stat;
+ nativeThreadHandle.Logon(stat);
+ User::WaitForRequest(stat);
+ nativeThreadHandle.Close();
+#elif defined Q_OS_UNIX
+ pthread_join(nativeThreadHandle, 0);
+#elif defined Q_OS_WIN
+ WaitForSingleObject(nativeThreadHandle, INFINITE);
+ CloseHandle(nativeThreadHandle);
+#endif
+}
+
+void *NativeThreadWrapper::runUnix(void *that)
+{
+ NativeThreadWrapper *nativeThreadWrapper = reinterpret_cast<NativeThreadWrapper*>(that);
+
+ // Adopt thread, create QThread object.
+ nativeThreadWrapper->qthread = QThread::currentThread();
+
+ // Release main thread.
+ {
+ QMutexLocker lock(&nativeThreadWrapper->mutex);
+ nativeThreadWrapper->startCondition.wakeOne();
+ }
+
+ // Run function.
+ nativeThreadWrapper->functionPointer(nativeThreadWrapper->data);
+
+ // Wait for stop.
+ {
+ QMutexLocker lock(&nativeThreadWrapper->mutex);
+ if (nativeThreadWrapper->waitForStop)
+ nativeThreadWrapper->stopCondition.wait(lock.mutex());
+ }
+
+ return 0;
+}
+
+unsigned WIN_FIX_STDCALL NativeThreadWrapper::runWin(void *data)
+{
+ runUnix(data);
+ return 0;
+}
+
+int NativeThreadWrapper::runSymbian(void *data)
+{
+ runUnix(data);
+ return 0;
+}
+
+void NativeThreadWrapper::stop()
+{
+ QMutexLocker lock(&mutex);
+ waitForStop = false;
+ stopCondition.wakeOne();
+}
+
+bool threadAdoptedOk = false;
+QThread *mainThread;
+void testNativeThreadAdoption(void *)
+{
+ threadAdoptedOk = (QThread::currentThreadId() != 0
+ && QThread::currentThread() != 0
+ && QThread::currentThread() != mainThread);
+}
+void tst_QThread::nativeThreadAdoption()
+{
+ threadAdoptedOk = false;
+ mainThread = QThread::currentThread();
+ NativeThreadWrapper nativeThread;
+ nativeThread.setWaitForStop();
+ nativeThread.startAndWait(testNativeThreadAdoption);
+ QVERIFY(nativeThread.qthread);
+
+ nativeThread.stop();
+ nativeThread.join();
+
+ QVERIFY(threadAdoptedOk);
+}
+
+void adoptedThreadAffinityFunction(void *arg)
+{
+ QThread **affinity = reinterpret_cast<QThread **>(arg);
+ QThread *current = QThread::currentThread();
+ affinity[0] = current;
+ affinity[1] = current->thread();
+}
+
+void tst_QThread::adoptedThreadAffinity()
+{
+ QThread *affinity[2] = { 0, 0 };
+
+ NativeThreadWrapper thread;
+ thread.startAndWait(adoptedThreadAffinityFunction, affinity);
+ thread.join();
+
+ // adopted thread should have affinity to itself
+ QCOMPARE(affinity[0], affinity[1]);
+}
+
+void tst_QThread::adoptedThreadSetPriority()
+{
+
+ NativeThreadWrapper nativeThread;
+ nativeThread.setWaitForStop();
+ nativeThread.startAndWait();
+
+ // change the priority of a running thread
+ QCOMPARE(nativeThread.qthread->priority(), QThread::InheritPriority);
+ nativeThread.qthread->setPriority(QThread::IdlePriority);
+ QCOMPARE(nativeThread.qthread->priority(), QThread::IdlePriority);
+ nativeThread.qthread->setPriority(QThread::LowestPriority);
+ QCOMPARE(nativeThread.qthread->priority(), QThread::LowestPriority);
+ nativeThread.qthread->setPriority(QThread::LowPriority);
+ QCOMPARE(nativeThread.qthread->priority(), QThread::LowPriority);
+ nativeThread.qthread->setPriority(QThread::NormalPriority);
+ QCOMPARE(nativeThread.qthread->priority(), QThread::NormalPriority);
+ nativeThread.qthread->setPriority(QThread::HighPriority);
+ QCOMPARE(nativeThread.qthread->priority(), QThread::HighPriority);
+ nativeThread.qthread->setPriority(QThread::HighestPriority);
+ QCOMPARE(nativeThread.qthread->priority(), QThread::HighestPriority);
+ nativeThread.qthread->setPriority(QThread::TimeCriticalPriority);
+ QCOMPARE(nativeThread.qthread->priority(), QThread::TimeCriticalPriority);
+
+ nativeThread.stop();
+ nativeThread.join();
+}
+
+void tst_QThread::adoptedThreadExit()
+{
+ NativeThreadWrapper nativeThread;
+ nativeThread.setWaitForStop();
+
+ nativeThread.startAndWait();
+ QVERIFY(nativeThread.qthread);
+ QVERIFY(nativeThread.qthread->isRunning());
+ QVERIFY(!nativeThread.qthread->isFinished());
+
+ nativeThread.stop();
+ nativeThread.join();
+}
+
+void adoptedThreadExecFunction(void *)
+{
+ QThread * const adoptedThread = QThread::currentThread();
+ QEventLoop eventLoop(adoptedThread);
+
+ const int code = 1;
+ Exit_Object o;
+ o.thread = adoptedThread;
+ o.code = code;
+ QTimer::singleShot(100, &o, SLOT(slot()));
+
+ const int result = eventLoop.exec();
+ QCOMPARE(result, code);
+}
+
+void tst_QThread::adoptedThreadExec()
+{
+ NativeThreadWrapper nativeThread;
+ nativeThread.start(adoptedThreadExecFunction);
+ nativeThread.join();
+}
+
+/*
+ Test that you get the finished signal when an adopted thread exits.
+*/
+void tst_QThread::adoptedThreadFinished()
+{
+ NativeThreadWrapper nativeThread;
+ nativeThread.setWaitForStop();
+ nativeThread.startAndWait();
+
+ QObject::connect(nativeThread.qthread, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ nativeThread.stop();
+ nativeThread.join();
+
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+}
+
+void tst_QThread::adoptedThreadExecFinished()
+{
+ NativeThreadWrapper nativeThread;
+ nativeThread.setWaitForStop();
+ nativeThread.startAndWait(adoptedThreadExecFunction);
+
+ QObject::connect(nativeThread.qthread, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ nativeThread.stop();
+ nativeThread.join();
+
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+}
+
+void tst_QThread::adoptMultipleThreads()
+{
+#if defined(Q_OS_WIN)
+ // Windows CE is not capable of handling that many threads. On the emulator it is dead with 26 threads already.
+# if defined(Q_OS_WINCE)
+ const int numThreads = 20;
+# else
+ // need to test lots of threads, so that we exceed MAXIMUM_WAIT_OBJECTS in qt_adopted_thread_watcher()
+ const int numThreads = 200;
+# endif
+#else
+ const int numThreads = 5;
+#endif
+ QVector<NativeThreadWrapper*> nativeThreads;
+
+ SignalRecorder recorder;
+
+ for (int i = 0; i < numThreads; ++i) {
+ nativeThreads.append(new NativeThreadWrapper());
+ nativeThreads.at(i)->setWaitForStop();
+ nativeThreads.at(i)->startAndWait();
+ QObject::connect(nativeThreads.at(i)->qthread, SIGNAL(finished()), &recorder, SLOT(slot()));
+ }
+
+ QObject::connect(nativeThreads.at(numThreads - 1)->qthread, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ for (int i = 0; i < numThreads; ++i) {
+ nativeThreads.at(i)->stop();
+ nativeThreads.at(i)->join();
+ delete nativeThreads.at(i);
+ }
+
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(int(recorder.activationCount), numThreads);
+}
+
+void tst_QThread::adoptMultipleThreadsOverlap()
+{
+#if defined(Q_OS_WIN)
+ // Windows CE is not capable of handling that many threads. On the emulator it is dead with 26 threads already.
+# if defined(Q_OS_WINCE)
+ const int numThreads = 20;
+# else
+ // need to test lots of threads, so that we exceed MAXIMUM_WAIT_OBJECTS in qt_adopted_thread_watcher()
+ const int numThreads = 200;
+# endif
+#elif defined(Q_OS_SYMBIAN)
+ // stress the monitoring thread's add function
+ const int numThreads = 100;
+#else
+ const int numThreads = 5;
+#endif
+ QVector<NativeThreadWrapper*> nativeThreads;
+
+ SignalRecorder recorder;
+
+ for (int i = 0; i < numThreads; ++i) {
+ nativeThreads.append(new NativeThreadWrapper());
+ nativeThreads.at(i)->setWaitForStop();
+ nativeThreads.at(i)->mutex.lock();
+ nativeThreads.at(i)->start();
+ }
+ for (int i = 0; i < numThreads; ++i) {
+ nativeThreads.at(i)->startCondition.wait(&nativeThreads.at(i)->mutex);
+ QObject::connect(nativeThreads.at(i)->qthread, SIGNAL(finished()), &recorder, SLOT(slot()));
+ nativeThreads.at(i)->mutex.unlock();
+ }
+
+ QObject::connect(nativeThreads.at(numThreads - 1)->qthread, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ for (int i = 0; i < numThreads; ++i) {
+ nativeThreads.at(i)->stop();
+ nativeThreads.at(i)->join();
+ delete nativeThreads.at(i);
+ }
+
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(int(recorder.activationCount), numThreads);
+}
+void tst_QThread::stressTest()
+{
+#if defined(Q_OS_WINCE)
+ QSKIP("Disconnects on WinCE, skipping...", SkipAll);
+#endif
+ QTime t;
+ t.start();
+ while (t.elapsed() < one_minute) {
+ Current_Thread t;
+ t.start();
+ t.wait(one_minute);
+ }
+}
+
+class Syncronizer : public QObject
+{ Q_OBJECT
+public slots:
+ void setProp(int p) {
+ if(m_prop != p) {
+ m_prop = p;
+ emit propChanged(p);
+ }
+ }
+signals:
+ void propChanged(int);
+public:
+ Syncronizer() : m_prop(42) {}
+ int m_prop;
+};
+
+void tst_QThread::QTBUG13810_exitAndStart()
+{
+ QThread thread;
+ thread.exit(555); //should do nothing
+
+ thread.start();
+
+ //test that the thread is running by executing queued connected signal there
+ Syncronizer sync1;
+ sync1.moveToThread(&thread);
+ Syncronizer sync2;
+ sync2.moveToThread(&thread);
+ connect(&sync2, SIGNAL(propChanged(int)), &sync1, SLOT(setProp(int)), Qt::QueuedConnection);
+ connect(&sync1, SIGNAL(propChanged(int)), &thread, SLOT(quit()), Qt::QueuedConnection);
+ QMetaObject::invokeMethod(&sync2, "setProp", Qt::QueuedConnection , Q_ARG(int, 89));
+ QTest::qWait(50);
+ while(!thread.wait(10))
+ QTest::qWait(10);
+ QCOMPARE(sync2.m_prop, 89);
+ QCOMPARE(sync1.m_prop, 89);
+}
+
+void tst_QThread::QTBUG15378_exitAndExec()
+{
+ class Thread : public QThread {
+ public:
+ QSemaphore sem1;
+ QSemaphore sem2;
+ volatile int value;
+ void run() {
+ sem1.acquire();
+ value = exec(); //First entrence
+ sem2.release();
+ value = exec(); // Second loop
+ }
+ };
+ Thread thread;
+ thread.value = 0;
+ thread.start();
+ thread.exit(556);
+ thread.sem1.release(); //should exit the first loop
+ thread.sem2.acquire();
+ int v = thread.value;
+ QCOMPARE(v, 556);
+
+ //test that the thread is running by executing queued connected signal there
+ Syncronizer sync1;
+ sync1.moveToThread(&thread);
+ Syncronizer sync2;
+ sync2.moveToThread(&thread);
+ connect(&sync2, SIGNAL(propChanged(int)), &sync1, SLOT(setProp(int)), Qt::QueuedConnection);
+ connect(&sync1, SIGNAL(propChanged(int)), &thread, SLOT(quit()), Qt::QueuedConnection);
+ QMetaObject::invokeMethod(&sync2, "setProp", Qt::QueuedConnection , Q_ARG(int, 89));
+ QTest::qWait(50);
+ while(!thread.wait(10))
+ QTest::qWait(10);
+ QCOMPARE(sync2.m_prop, 89);
+ QCOMPARE(sync1.m_prop, 89);
+}
+
+void tst_QThread::connectThreadFinishedSignalToObjectDeleteLaterSlot()
+{
+ QThread thread;
+ QObject *object = new QObject;
+ QWeakPointer<QObject> p = object;
+ QVERIFY(!p.isNull());
+ connect(&thread, SIGNAL(started()), &thread, SLOT(quit()), Qt::DirectConnection);
+ connect(&thread, SIGNAL(finished()), object, SLOT(deleteLater()));
+ object->moveToThread(&thread);
+ thread.start();
+ QVERIFY(thread.wait(30000));
+ QVERIFY(p.isNull());
+}
+
+class Waiting_Thread : public QThread
+{
+public:
+ enum { WaitTime = 800 };
+ QMutex mutex;
+ QWaitCondition cond1;
+ QWaitCondition cond2;
+
+ void run()
+ {
+ QMutexLocker locker(&mutex);
+ cond1.wait(&mutex);
+ cond2.wait(&mutex, WaitTime);
+ }
+};
+
+void tst_QThread::wait2()
+{
+ QElapsedTimer timer;
+ Waiting_Thread thread;
+ thread.start();
+ timer.start();
+ QVERIFY(!thread.wait(Waiting_Thread::WaitTime));
+ qint64 elapsed = timer.elapsed();
+
+ QVERIFY(elapsed >= Waiting_Thread::WaitTime);
+ //QVERIFY(elapsed < Waiting_Thread::WaitTime * 1.4);
+
+ timer.start();
+ thread.cond1.wakeOne();
+ QVERIFY(thread.wait(/*Waiting_Thread::WaitTime * 1.4*/));
+ elapsed = timer.elapsed();
+ QVERIFY(elapsed >= Waiting_Thread::WaitTime);
+ //QVERIFY(elapsed < Waiting_Thread::WaitTime * 1.4);
+}
+
+
+class SlowSlotObject : public QObject {
+ Q_OBJECT
+public:
+ QMutex mutex;
+ QWaitCondition cond;
+public slots:
+ void slowSlot() {
+ QMutexLocker locker(&mutex);
+ cond.wait(&mutex);
+ }
+};
+
+void tst_QThread::wait3_slowDestructor()
+{
+ SlowSlotObject slow;
+ QThread thread;
+ QObject::connect(&thread, SIGNAL(finished()), &slow, SLOT(slowSlot()), Qt::DirectConnection);
+
+ enum { WaitTime = 1800 };
+ QElapsedTimer timer;
+
+ thread.start();
+ thread.quit();
+ //the quit function will cause the thread to finish and enter the slowSlot that is blocking
+
+ timer.start();
+ QVERIFY(!thread.wait(Waiting_Thread::WaitTime));
+ qint64 elapsed = timer.elapsed();
+
+ QVERIFY(elapsed >= Waiting_Thread::WaitTime);
+ //QVERIFY(elapsed < Waiting_Thread::WaitTime * 1.4);
+
+ slow.cond.wakeOne();
+ //now the thread should finish quickly
+ QVERIFY(thread.wait(one_minute));
+}
+
+void tst_QThread::destroyFinishRace()
+{
+ class Thread : public QThread { void run() {} };
+ for (int i = 0; i < 15; i++) {
+ Thread *thr = new Thread;
+ connect(thr, SIGNAL(finished()), thr, SLOT(deleteLater()));
+ QWeakPointer<QThread> weak(static_cast<QThread*>(thr));
+ thr->start();
+ while (weak) {
+ qApp->processEvents();
+ qApp->processEvents();
+ qApp->processEvents();
+ qApp->processEvents();
+ }
+ }
+}
+
+void tst_QThread::startFinishRace()
+{
+ class Thread : public QThread {
+ public:
+ Thread() : i (50) {}
+ void run() {
+ i--;
+ if (!i) disconnect(this, SIGNAL(finished()), 0, 0);
+ }
+ int i;
+ };
+ for (int i = 0; i < 15; i++) {
+ Thread thr;
+ connect(&thr, SIGNAL(finished()), &thr, SLOT(start()));
+ thr.start();
+ while (!thr.isFinished() || thr.i != 0) {
+ qApp->processEvents();
+ qApp->processEvents();
+ qApp->processEvents();
+ qApp->processEvents();
+ }
+ QCOMPARE(thr.i, 0);
+ }
+}
+
+void tst_QThread::startAndQuitCustomEventLoop()
+{
+ struct Thread : QThread {
+ void run() { QEventLoop().exec(); }
+ };
+
+ for (int i = 0; i < 5; i++) {
+ Thread t;
+ t.start();
+ t.quit();
+ t.wait();
+ }
+}
+
+
+QTEST_MAIN(tst_QThread)
+#include "tst_qthread.moc"
diff --git a/tests/auto/corelib/thread/qthreadonce/.gitignore b/tests/auto/corelib/thread/qthreadonce/.gitignore
new file mode 100644
index 0000000000..856177d615
--- /dev/null
+++ b/tests/auto/corelib/thread/qthreadonce/.gitignore
@@ -0,0 +1 @@
+tst_qthreadonce
diff --git a/tests/auto/corelib/thread/qthreadonce/qthreadonce.cpp b/tests/auto/corelib/thread/qthreadonce/qthreadonce.cpp
new file mode 100644
index 0000000000..b23e11b153
--- /dev/null
+++ b/tests/auto/corelib/thread/qthreadonce/qthreadonce.cpp
@@ -0,0 +1,121 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include "qplatformdefs.h"
+#include "qthreadonce.h"
+
+#ifndef QT_NO_THREAD
+#include "qmutex.h"
+
+Q_GLOBAL_STATIC_WITH_ARGS(QMutex, onceInitializationMutex, (QMutex::Recursive))
+
+enum QOnceExtra {
+ MustRunCode = 0x01,
+ MustUnlockMutex = 0x02
+};
+
+/*!
+ \internal
+ Initialize the Q_ONCE structure.
+
+ Q_ONCE consists of two variables:
+ - a static POD QOnceControl::ControlVariable (it's a QBasicAtomicInt)
+ - an automatic QOnceControl that controls the former
+
+ The POD is initialized to 0.
+
+ When QOnceControl's constructor starts, it'll lock the global
+ initialization mutex. It'll then check if it's the first to up
+ the control variable and will take note.
+
+ The QOnceControl's destructor will unlock the global
+ initialization mutex.
+*/
+QOnceControl::QOnceControl(QBasicAtomicInt *control)
+{
+ d = 0;
+ gv = control;
+ // check if code has already run once
+ if (*gv == 2) {
+ // uncontended case: it has already initialized
+ // no waiting
+ return;
+ }
+
+ // acquire the path
+ onceInitializationMutex()->lock();
+ extra = MustUnlockMutex;
+
+ if (gv->testAndSetAcquire(0, 1)) {
+ // path acquired, we're the first
+ extra |= MustRunCode;
+ }
+}
+
+QOnceControl::~QOnceControl()
+{
+ if (mustRunCode())
+ // code wasn't run!
+ gv->testAndSetRelease(1, 0);
+ else
+ gv->testAndSetRelease(1, 2);
+ if (extra & MustUnlockMutex)
+ onceInitializationMutex()->unlock();
+}
+
+/*!
+ \internal
+ Returns true if the initialization code must be run.
+
+ Obviously, the initialization code must be run only once...
+*/
+bool QOnceControl::mustRunCode()
+{
+ return extra & MustRunCode;
+}
+
+void QOnceControl::done()
+{
+ extra &= ~MustRunCode;
+}
+
+#endif // QT_NO_THREAD
diff --git a/tests/auto/corelib/thread/qthreadonce/qthreadonce.h b/tests/auto/corelib/thread/qthreadonce/qthreadonce.h
new file mode 100644
index 0000000000..c33625cbde
--- /dev/null
+++ b/tests/auto/corelib/thread/qthreadonce/qthreadonce.h
@@ -0,0 +1,114 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QTHREADONCE_H
+#define QTHREADONCE_H
+
+#include <QtCore/qglobal.h>
+#include <QtCore/qatomic.h>
+
+QT_BEGIN_HEADER
+
+QT_MODULE(Core)
+
+#ifndef QT_NO_THREAD
+
+class QOnceControl
+{
+public:
+ QOnceControl(QBasicAtomicInt *);
+ ~QOnceControl();
+
+ bool mustRunCode();
+ void done();
+
+private:
+ QBasicAtomicInt *gv;
+ union {
+ qint32 extra;
+ void *d;
+ };
+};
+
+#define Q_ONCE_GV_NAME2(prefix, line) prefix ## line
+#define Q_ONCE_GV_NAME(prefix, line) Q_ONCE_GV_NAME2(prefix, line)
+#define Q_ONCE_GV Q_ONCE_GV_NAME(_q_once_, __LINE__)
+
+#define Q_ONCE \
+ static QBasicAtomicInt Q_ONCE_GV = Q_BASIC_ATOMIC_INITIALIZER(0); \
+ if (0){} else \
+ for (QOnceControl _control_(&Q_ONCE_GV); _control_.mustRunCode(); _control_.done())
+
+template<typename T>
+class QSingleton
+{
+ // this is a POD-like class
+ struct Destructor
+ {
+ T *&pointer;
+ Destructor(T *&ptr) : pointer(ptr) {}
+ ~Destructor() { delete pointer; }
+ };
+
+public:
+ T *_q_value;
+ QBasicAtomicInt _q_guard;
+
+ inline T *value()
+ {
+ for (QOnceControl control(&_q_guard); control.mustRunCode(); control.done()) {
+ _q_value = new T();
+ static Destructor cleanup(_q_value);
+ }
+ return _q_value;
+ }
+
+ inline T& operator*() { return *value(); }
+ inline T* operator->() { return value(); }
+ inline operator T*() { return value(); }
+};
+
+#endif // QT_NO_THREAD
+
+QT_END_HEADER
+
+#endif
diff --git a/tests/auto/corelib/thread/qthreadonce/qthreadonce.pro b/tests/auto/corelib/thread/qthreadonce/qthreadonce.pro
new file mode 100644
index 0000000000..d7ef4d4c23
--- /dev/null
+++ b/tests/auto/corelib/thread/qthreadonce/qthreadonce.pro
@@ -0,0 +1,13 @@
+load(qttest_p4)
+SOURCES += tst_qthreadonce.cpp
+QT = core
+
+# Don't use gcc's threadsafe statics
+# Note: some versions of gcc generate invalid code with this option...
+# Some versions of gcc don't even have it, so disable it
+#*-g++*:QMAKE_CXXFLAGS += -fno-threadsafe-statics
+
+# Temporary:
+SOURCES += qthreadonce.cpp
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/thread/qthreadonce/tst_qthreadonce.cpp b/tests/auto/corelib/thread/qthreadonce/tst_qthreadonce.cpp
new file mode 100644
index 0000000000..dea4e43fef
--- /dev/null
+++ b/tests/auto/corelib/thread/qthreadonce/tst_qthreadonce.cpp
@@ -0,0 +1,234 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qmutex.h>
+#include <qthread.h>
+#include <qwaitcondition.h>
+#include "qthreadonce.h"
+
+//TESTED_CLASS=
+//TESTED_FILES=corelib/thread/qthreadonce.h corelib/thread/qthreadonce.cpp
+
+class tst_QThreadOnce : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void sameThread();
+ void sameThread_data();
+ void multipleThreads();
+
+ void nesting();
+ void reentering();
+ void exception();
+};
+
+class SingletonObject: public QObject
+{
+ Q_OBJECT
+public:
+ static int runCount;
+ SingletonObject() { val = 42; ++runCount; }
+ ~SingletonObject() { }
+
+ QBasicAtomicInt val;
+};
+
+class IncrementThread: public QThread
+{
+public:
+ static QBasicAtomicInt runCount;
+ static QSingleton<SingletonObject> singleton;
+ QSemaphore &sem1, &sem2;
+ int &var;
+
+ IncrementThread(QSemaphore *psem1, QSemaphore *psem2, int *pvar, QObject *parent)
+ : QThread(parent), sem1(*psem1), sem2(*psem2), var(*pvar)
+ { start(); }
+
+ ~IncrementThread() { wait(); }
+
+protected:
+ void run()
+ {
+ sem2.release();
+ sem1.acquire(); // synchronize
+
+ Q_ONCE {
+ ++var;
+ }
+ runCount.ref();
+ singleton->val.ref();
+ }
+};
+int SingletonObject::runCount = 0;
+QBasicAtomicInt IncrementThread::runCount = Q_BASIC_ATOMIC_INITIALIZER(0);
+QSingleton<SingletonObject> IncrementThread::singleton;
+
+void tst_QThreadOnce::sameThread_data()
+{
+ SingletonObject::runCount = 0;
+ QTest::addColumn<int>("expectedValue");
+
+ QTest::newRow("first") << 42;
+ QTest::newRow("second") << 43;
+}
+
+void tst_QThreadOnce::sameThread()
+{
+ static int controlVariable = 0;
+ Q_ONCE {
+ QCOMPARE(controlVariable, 0);
+ ++controlVariable;
+ }
+ QCOMPARE(controlVariable, 1);
+
+ static QSingleton<SingletonObject> s;
+ QTEST((int)s->val, "expectedValue");
+ s->val.ref();
+
+ QCOMPARE(SingletonObject::runCount, 1);
+}
+
+void tst_QThreadOnce::multipleThreads()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_VXWORKS) || defined(Q_OS_SYMBIAN)
+ const int NumberOfThreads = 20;
+#else
+ const int NumberOfThreads = 100;
+#endif
+ int controlVariable = 0;
+ QSemaphore sem1, sem2(NumberOfThreads);
+
+ QObject *parent = new QObject;
+ for (int i = 0; i < NumberOfThreads; ++i)
+ new IncrementThread(&sem1, &sem2, &controlVariable, parent);
+
+ QCOMPARE(controlVariable, 0); // nothing must have set them yet
+ SingletonObject::runCount = 0;
+ IncrementThread::runCount = 0;
+
+ // wait for all of them to be ready
+ sem2.acquire(NumberOfThreads);
+ // unleash the threads
+ sem1.release(NumberOfThreads);
+
+ // wait for all of them to terminate:
+ delete parent;
+
+ QCOMPARE(controlVariable, 1);
+ QCOMPARE((int)IncrementThread::runCount, NumberOfThreads);
+ QCOMPARE(SingletonObject::runCount, 1);
+}
+
+void tst_QThreadOnce::nesting()
+{
+ int variable = 0;
+ Q_ONCE {
+ Q_ONCE {
+ ++variable;
+ }
+ }
+
+ QVERIFY(variable == 1);
+}
+
+static void reentrant(int control, int &counter)
+{
+ Q_ONCE {
+ if (counter)
+ reentrant(--control, counter);
+ ++counter;
+ }
+ static QSingleton<SingletonObject> s;
+ s->val.ref();
+}
+
+void tst_QThreadOnce::reentering()
+{
+ const int WantedRecursions = 5;
+ int count = 0;
+ SingletonObject::runCount = 0;
+ reentrant(WantedRecursions, count);
+
+ // reentrancy is undefined behavior:
+ QVERIFY(count == 1 || count == WantedRecursions);
+ QCOMPARE(SingletonObject::runCount, 1);
+}
+
+#if !defined(QT_NO_EXCEPTIONS)
+static void exception_helper(int &val)
+{
+ Q_ONCE {
+ if (val++ == 0) throw 0;
+ }
+}
+#endif
+
+void tst_QThreadOnce::exception()
+{
+#if defined(QT_NO_EXCEPTIONS)
+ QSKIP("Compiled without exceptions, skipping test", SkipAll);
+#else
+ int count = 0;
+
+ try {
+ exception_helper(count);
+ } catch (...) {
+ // nothing
+ }
+ QCOMPARE(count, 1);
+
+ try {
+ exception_helper(count);
+ } catch (...) {
+ QVERIFY2(false, "Exception shouldn't have been thrown...");
+ }
+ QCOMPARE(count, 2);
+#endif
+}
+
+QTEST_MAIN(tst_QThreadOnce)
+#include "tst_qthreadonce.moc"
diff --git a/tests/auto/corelib/thread/qthreadstorage/.gitignore b/tests/auto/corelib/thread/qthreadstorage/.gitignore
new file mode 100644
index 0000000000..301968a8f6
--- /dev/null
+++ b/tests/auto/corelib/thread/qthreadstorage/.gitignore
@@ -0,0 +1 @@
+tst_qthreadstorage
diff --git a/tests/auto/corelib/thread/qthreadstorage/crashOnExit.cpp b/tests/auto/corelib/thread/qthreadstorage/crashOnExit.cpp
new file mode 100644
index 0000000000..92efcf3b3d
--- /dev/null
+++ b/tests/auto/corelib/thread/qthreadstorage/crashOnExit.cpp
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QtCore>
+
+class Class
+{
+public:
+ ~Class()
+ {
+ // trigger creation of a new QThreadStorage, after the previous QThreadStorage from main() was destructed
+ static QThreadStorage<int *> threadstorage;
+ threadstorage.setLocalData(new int);
+ threadstorage.setLocalData(new int);
+ }
+};
+
+int main()
+{
+ // instantiate the class that will use QThreadStorage from its destructor, it's destructor will be run last
+ static Class instance;
+ // instantiate QThreadStorage, it's destructor (and the global destructors for QThreadStorages internals) will run first
+ static QThreadStorage<int *> threadstorage;
+ threadstorage.setLocalData(new int);
+ threadstorage.setLocalData(new int);
+}
diff --git a/tests/auto/corelib/thread/qthreadstorage/crashOnExit.pro b/tests/auto/corelib/thread/qthreadstorage/crashOnExit.pro
new file mode 100644
index 0000000000..918ef398ba
--- /dev/null
+++ b/tests/auto/corelib/thread/qthreadstorage/crashOnExit.pro
@@ -0,0 +1,4 @@
+SOURCES += crashOnExit.cpp
+QT = core
+CONFIG-=app_bundle
+CONFIG+=console
diff --git a/tests/auto/corelib/thread/qthreadstorage/qthreadstorage.pro b/tests/auto/corelib/thread/qthreadstorage/qthreadstorage.pro
new file mode 100644
index 0000000000..0dc8d086df
--- /dev/null
+++ b/tests/auto/corelib/thread/qthreadstorage/qthreadstorage.pro
@@ -0,0 +1,5 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+ tst_qthreadstorage.pro \
+ crashOnExit.pro
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
new file mode 100644
index 0000000000..e123fc4fea
--- /dev/null
+++ b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
@@ -0,0 +1,503 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qmutex.h>
+#include <qthread.h>
+#include <qwaitcondition.h>
+#include <qthreadstorage.h>
+
+#ifdef Q_OS_UNIX
+#include <pthread.h>
+#endif
+#ifdef Q_OS_WIN
+#ifndef Q_OS_WINCE
+#include <process.h>
+#endif
+#include <windows.h>
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QThreadStorage : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QThreadStorage();
+
+private slots:
+ void hasLocalData();
+ void localData();
+ void localData_const();
+ void setLocalData();
+ void autoDelete();
+ void adoptedThreads();
+ void ensureCleanupOrder();
+ void QTBUG13877_crashOnExit();
+ void QTBUG14579_leakInDestructor();
+ void QTBUG14579_resetInDestructor();
+ void valueBased();
+};
+
+class Pointer
+{
+public:
+ static int count;
+ inline Pointer() { ++count; }
+ inline ~Pointer() { --count; }
+};
+int Pointer::count = 0;
+
+tst_QThreadStorage::tst_QThreadStorage()
+
+{ }
+
+void tst_QThreadStorage::hasLocalData()
+{
+ QThreadStorage<Pointer *> pointers;
+ QVERIFY(!pointers.hasLocalData());
+ pointers.setLocalData(new Pointer);
+ QVERIFY(pointers.hasLocalData());
+ pointers.setLocalData(0);
+ QVERIFY(!pointers.hasLocalData());
+}
+
+void tst_QThreadStorage::localData()
+{
+ QThreadStorage<Pointer*> pointers;
+ Pointer *p = new Pointer;
+ QVERIFY(!pointers.hasLocalData());
+ pointers.setLocalData(p);
+ QVERIFY(pointers.hasLocalData());
+ QCOMPARE(pointers.localData(), p);
+ pointers.setLocalData(0);
+ QCOMPARE(pointers.localData(), (Pointer *)0);
+ QVERIFY(!pointers.hasLocalData());
+}
+
+void tst_QThreadStorage::localData_const()
+{
+ QThreadStorage<Pointer *> pointers;
+ const QThreadStorage<Pointer *> &const_pointers = pointers;
+ Pointer *p = new Pointer;
+ QVERIFY(!pointers.hasLocalData());
+ pointers.setLocalData(p);
+ QVERIFY(pointers.hasLocalData());
+ QCOMPARE(const_pointers.localData(), p);
+ pointers.setLocalData(0);
+ QCOMPARE(const_pointers.localData(), (Pointer *)0);
+ QVERIFY(!pointers.hasLocalData());
+}
+
+void tst_QThreadStorage::setLocalData()
+{
+ QThreadStorage<Pointer *> pointers;
+ QVERIFY(!pointers.hasLocalData());
+ pointers.setLocalData(new Pointer);
+ QVERIFY(pointers.hasLocalData());
+ pointers.setLocalData(0);
+ QVERIFY(!pointers.hasLocalData());
+}
+
+class Thread : public QThread
+{
+public:
+ QThreadStorage<Pointer *> &pointers;
+
+ QMutex mutex;
+ QWaitCondition cond;
+
+ Thread(QThreadStorage<Pointer *> &p)
+ : pointers(p)
+ { }
+
+ void run()
+ {
+ pointers.setLocalData(new Pointer);
+
+ QMutexLocker locker(&mutex);
+ cond.wakeOne();
+ cond.wait(&mutex);
+ }
+};
+
+void tst_QThreadStorage::autoDelete()
+{
+ QThreadStorage<Pointer *> pointers;
+ QVERIFY(!pointers.hasLocalData());
+
+ Thread thread(pointers);
+ int c = Pointer::count;
+ {
+ QMutexLocker locker(&thread.mutex);
+ thread.start();
+ thread.cond.wait(&thread.mutex);
+ // QCOMPARE(Pointer::count, c + 1);
+ thread.cond.wakeOne();
+ }
+ thread.wait();
+ QCOMPARE(Pointer::count, c);
+}
+
+bool threadStorageOk;
+void testAdoptedThreadStorageWin(void *p)
+{
+ QThreadStorage<Pointer *> *pointers = reinterpret_cast<QThreadStorage<Pointer *> *>(p);
+ if (pointers->hasLocalData()) {
+ threadStorageOk = false;
+ return;
+ }
+
+ Pointer *pointer = new Pointer();
+ pointers->setLocalData(pointer);
+
+ if (pointers->hasLocalData() == false) {
+ threadStorageOk = false;
+ return;
+ }
+
+ if (pointers->localData() != pointer) {
+ threadStorageOk = false;
+ return;
+ }
+ QObject::connect(QThread::currentThread(), SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+}
+void *testAdoptedThreadStorageUnix(void *pointers)
+{
+ testAdoptedThreadStorageWin(pointers);
+ return 0;
+}
+void tst_QThreadStorage::adoptedThreads()
+{
+ QTestEventLoop::instance(); // Make sure the instance is created in this thread.
+ QThreadStorage<Pointer *> pointers;
+ int c = Pointer::count;
+ threadStorageOk = true;
+ {
+#ifdef Q_OS_UNIX
+ pthread_t thread;
+ const int state = pthread_create(&thread, 0, testAdoptedThreadStorageUnix, &pointers);
+ QCOMPARE(state, 0);
+ pthread_join(thread, 0);
+#elif defined Q_OS_WIN
+ HANDLE thread;
+#if defined(Q_OS_WINCE)
+ thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)testAdoptedThreadStorageWin, &pointers, 0, NULL);
+#else
+ thread = (HANDLE)_beginthread(testAdoptedThreadStorageWin, 0, &pointers);
+#endif
+ QVERIFY(thread);
+ WaitForSingleObject(thread, INFINITE);
+#endif
+ }
+ QVERIFY(threadStorageOk);
+
+ QTestEventLoop::instance().enterLoop(2);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(Pointer::count, c);
+}
+
+QBasicAtomicInt cleanupOrder = Q_BASIC_ATOMIC_INITIALIZER(0);
+
+class First
+{
+public:
+ ~First()
+ {
+ order = cleanupOrder.fetchAndAddRelaxed(1);
+ }
+ static int order;
+};
+int First::order = -1;
+
+class Second
+{
+public:
+ ~Second()
+ {
+ order = cleanupOrder.fetchAndAddRelaxed(1);
+ }
+ static int order;
+};
+int Second::order = -1;
+
+void tst_QThreadStorage::ensureCleanupOrder()
+{
+ class Thread : public QThread
+ {
+ public:
+ QThreadStorage<First *> &first;
+ QThreadStorage<Second *> &second;
+
+ Thread(QThreadStorage<First *> &first,
+ QThreadStorage<Second *> &second)
+ : first(first), second(second)
+ { }
+
+ void run()
+ {
+ // set in reverse order, but shouldn't matter, the data
+ // will be deleted in the order the thread storage objects
+ // were created
+ second.setLocalData(new Second);
+ first.setLocalData(new First);
+ }
+ };
+
+ QThreadStorage<Second *> second;
+ QThreadStorage<First *> first;
+ Thread thread(first, second);
+ thread.start();
+ thread.wait();
+
+ QVERIFY(First::order < Second::order);
+}
+
+void tst_QThreadStorage::QTBUG13877_crashOnExit()
+{
+ QProcess process;
+#ifdef Q_OS_WIN
+# ifdef QT_NO_DEBUG
+ process.start("release/crashOnExit");
+# else
+ process.start("debug/crashOnExit");
+# endif
+#else
+ process.start("./crashOnExit");
+#endif
+ QVERIFY(process.waitForFinished());
+ QVERIFY(process.exitStatus() != QProcess::CrashExit);
+}
+
+// S stands for thread Safe.
+class SPointer
+{
+public:
+ static QBasicAtomicInt count;
+ inline SPointer() { count.ref(); }
+ inline ~SPointer() { count.deref(); }
+ inline SPointer(const SPointer & /* other */) { count.ref(); }
+};
+QBasicAtomicInt SPointer::count = Q_BASIC_ATOMIC_INITIALIZER(0);
+
+Q_GLOBAL_STATIC(QThreadStorage<SPointer *>, QTBUG14579_pointers1)
+Q_GLOBAL_STATIC(QThreadStorage<SPointer *>, QTBUG14579_pointers2)
+
+class QTBUG14579_class
+{
+public:
+ SPointer member;
+ inline ~QTBUG14579_class() {
+ QVERIFY(!QTBUG14579_pointers1()->hasLocalData());
+ QVERIFY(!QTBUG14579_pointers2()->hasLocalData());
+ QTBUG14579_pointers2()->setLocalData(new SPointer);
+ QTBUG14579_pointers1()->setLocalData(new SPointer);
+ QVERIFY(QTBUG14579_pointers1()->hasLocalData());
+ QVERIFY(QTBUG14579_pointers2()->hasLocalData());
+ }
+};
+
+
+void tst_QThreadStorage::QTBUG14579_leakInDestructor()
+{
+ class Thread : public QThread
+ {
+ public:
+ QThreadStorage<QTBUG14579_class *> &tls;
+
+ Thread(QThreadStorage<QTBUG14579_class *> &t) : tls(t) { }
+
+ void run()
+ {
+ QVERIFY(!tls.hasLocalData());
+ tls.setLocalData(new QTBUG14579_class);
+ QVERIFY(tls.hasLocalData());
+ }
+ };
+ int c = SPointer::count;
+
+ QThreadStorage<QTBUG14579_class *> tls;
+
+ QVERIFY(!QTBUG14579_pointers1()->hasLocalData());
+ QThreadStorage<int *> tls2; //add some more tls to make sure ids are not following each other too much
+ QThreadStorage<int *> tls3;
+ QVERIFY(!tls2.hasLocalData());
+ QVERIFY(!tls3.hasLocalData());
+ QVERIFY(!tls.hasLocalData());
+
+ Thread t1(tls);
+ Thread t2(tls);
+ Thread t3(tls);
+
+ t1.start();
+ t2.start();
+ t3.start();
+
+ QVERIFY(t1.wait());
+ QVERIFY(t2.wait());
+ QVERIFY(t3.wait());
+
+ //check all the constructed things have been destructed
+ QCOMPARE(int(SPointer::count), c);
+}
+
+class QTBUG14579_reset {
+public:
+ SPointer member;
+ ~QTBUG14579_reset();
+};
+
+Q_GLOBAL_STATIC(QThreadStorage<QTBUG14579_reset *>, QTBUG14579_resetTls)
+
+QTBUG14579_reset::~QTBUG14579_reset() {
+ //Quite stupid, but WTF::ThreadSpecific<T>::destroy does it.
+ QTBUG14579_resetTls()->setLocalData(this);
+}
+
+void tst_QThreadStorage::QTBUG14579_resetInDestructor()
+{
+ class Thread : public QThread
+ {
+ public:
+ void run()
+ {
+ QVERIFY(!QTBUG14579_resetTls()->hasLocalData());
+ QTBUG14579_resetTls()->setLocalData(new QTBUG14579_reset);
+ QVERIFY(QTBUG14579_resetTls()->hasLocalData());
+ }
+ };
+ int c = SPointer::count;
+
+ Thread t1;
+ Thread t2;
+ Thread t3;
+ t1.start();
+ t2.start();
+ t3.start();
+ QVERIFY(t1.wait());
+ QVERIFY(t2.wait());
+ QVERIFY(t3.wait());
+
+ //check all the constructed things have been destructed
+ QCOMPARE(int(SPointer::count), c);
+}
+
+
+void tst_QThreadStorage::valueBased()
+{
+ struct Thread : QThread {
+ QThreadStorage<SPointer> &tlsSPointer;
+ QThreadStorage<QString> &tlsString;
+ QThreadStorage<int> &tlsInt;
+
+ int someNumber;
+ QString someString;
+ Thread(QThreadStorage<SPointer> &t1, QThreadStorage<QString> &t2, QThreadStorage<int> &t3)
+ : tlsSPointer(t1), tlsString(t2), tlsInt(t3) { }
+
+ void run() {
+ /*QVERIFY(!tlsSPointer.hasLocalData());
+ QVERIFY(!tlsString.hasLocalData());
+ QVERIFY(!tlsInt.hasLocalData());*/
+ SPointer pointercopy = tlsSPointer.localData();
+
+ //Default constructed values
+ QVERIFY(tlsString.localData().isNull());
+ QCOMPARE(tlsInt.localData(), 0);
+
+ //setting
+ tlsString.setLocalData(someString);
+ tlsInt.setLocalData(someNumber);
+
+ QCOMPARE(tlsString.localData(), someString);
+ QCOMPARE(tlsInt.localData(), someNumber);
+
+ //changing
+ tlsSPointer.setLocalData(SPointer());
+ tlsInt.localData() += 42;
+ tlsString.localData().append(QLatin1String(" world"));
+
+ QCOMPARE(tlsString.localData(), (someString + QLatin1String(" world")));
+ QCOMPARE(tlsInt.localData(), (someNumber + 42));
+
+ // operator=
+ tlsString.localData() = QString::number(someNumber);
+ QCOMPARE(tlsString.localData().toInt(), someNumber);
+ }
+ };
+
+ QThreadStorage<SPointer> tlsSPointer;
+ QThreadStorage<QString> tlsString;
+ QThreadStorage<int> tlsInt;
+
+ int c = SPointer::count;
+
+ Thread t1(tlsSPointer, tlsString, tlsInt);
+ Thread t2(tlsSPointer, tlsString, tlsInt);
+ Thread t3(tlsSPointer, tlsString, tlsInt);
+ t1.someNumber = 42;
+ t2.someNumber = -128;
+ t3.someNumber = 78;
+ t1.someString = "hello";
+ t2.someString = "trolltech";
+ t3.someString = "nokia";
+
+ t1.start();
+ t2.start();
+ t3.start();
+
+ QVERIFY(t1.wait());
+ QVERIFY(t2.wait());
+ QVERIFY(t3.wait());
+
+ QCOMPARE(c, int(SPointer::count));
+
+}
+
+
+QTEST_MAIN(tst_QThreadStorage)
+#include "tst_qthreadstorage.moc"
diff --git a/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.pro b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.pro
new file mode 100644
index 0000000000..3071098629
--- /dev/null
+++ b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qthreadstorage.cpp
+QT = core
+symbian:LIBS += -llibpthread
diff --git a/tests/auto/corelib/thread/qwaitcondition/.gitignore b/tests/auto/corelib/thread/qwaitcondition/.gitignore
new file mode 100644
index 0000000000..96531988d9
--- /dev/null
+++ b/tests/auto/corelib/thread/qwaitcondition/.gitignore
@@ -0,0 +1 @@
+tst_qwaitcondition
diff --git a/tests/auto/corelib/thread/qwaitcondition/qwaitcondition.pro b/tests/auto/corelib/thread/qwaitcondition/qwaitcondition.pro
new file mode 100644
index 0000000000..9af0c71301
--- /dev/null
+++ b/tests/auto/corelib/thread/qwaitcondition/qwaitcondition.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+SOURCES += tst_qwaitcondition.cpp
+QT = core
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp b/tests/auto/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp
new file mode 100644
index 0000000000..6545df9189
--- /dev/null
+++ b/tests/auto/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp
@@ -0,0 +1,845 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qmutex.h>
+#include <qthread.h>
+#include <qwaitcondition.h>
+
+#if defined(Q_OS_SYMBIAN)
+// Symbian Open C has a bug that causes very short waits to fail sometimes
+#define COND_WAIT_TIME 50
+#else
+#define COND_WAIT_TIME 1
+#endif
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QWaitCondition : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QWaitCondition();
+
+private slots:
+ void wait_QMutex();
+ void wait_QReadWriteLock();
+ void wakeOne();
+ void wakeAll();
+ void wait_RaceCondition();
+};
+
+static const int iterations = 10;
+
+// Note: some tests rely on ThreadCount being multiple of 2
+#if defined(Q_OS_SOLARIS) || ( defined(Q_OS_LINUX) && defined(QT_ARCH_ARMV6) )
+static const int ThreadCount = 4;
+#else
+static const int ThreadCount = 10;
+#endif
+
+tst_QWaitCondition::tst_QWaitCondition()
+
+{
+}
+
+class wait_QMutex_Thread_1 : public QThread
+{
+public:
+ QMutex mutex;
+ QWaitCondition cond;
+
+ inline wait_QMutex_Thread_1()
+ { }
+
+ void run()
+ {
+ mutex.lock();
+ cond.wakeOne();
+ cond.wait(&mutex);
+ mutex.unlock();
+ }
+};
+
+class wait_QMutex_Thread_2 : public QThread
+{
+public:
+ QWaitCondition started;
+
+ QMutex *mutex;
+ QWaitCondition *cond;
+
+ inline wait_QMutex_Thread_2()
+ : mutex(0), cond(0)
+ { }
+
+ void run()
+ {
+ mutex->lock();
+ started.wakeOne();
+ cond->wait(mutex);
+ mutex->unlock();
+ }
+};
+
+class wait_QReadWriteLock_Thread_1 : public QThread
+{
+public:
+ QReadWriteLock readWriteLock;
+ QWaitCondition cond;
+
+ inline wait_QReadWriteLock_Thread_1()
+ { }
+
+ void run()
+ {
+ readWriteLock.lockForWrite();
+ cond.wakeOne();
+ cond.wait(&readWriteLock);
+ readWriteLock.unlock();
+ }
+};
+
+class wait_QReadWriteLock_Thread_2 : public QThread
+{
+public:
+ QWaitCondition started;
+
+ QReadWriteLock *readWriteLock;
+ QWaitCondition *cond;
+
+ inline wait_QReadWriteLock_Thread_2()
+ : readWriteLock(0), cond(0)
+ { }
+
+ void run()
+ {
+ readWriteLock->lockForRead();
+ started.wakeOne();
+ cond->wait(readWriteLock);
+ readWriteLock->unlock();
+ }
+};
+
+void tst_QWaitCondition::wait_QMutex()
+{
+ int x;
+ for (int i = 0; i < iterations; ++i) {
+ {
+ QMutex mutex;
+ QWaitCondition cond;
+
+ mutex.lock();
+
+ cond.wakeOne();
+ QVERIFY(!cond.wait(&mutex, 1));
+
+ cond.wakeAll();
+ QVERIFY(!cond.wait(&mutex, 1));
+
+ mutex.unlock();
+ }
+
+ {
+ // test multiple threads waiting on separate wait conditions
+ wait_QMutex_Thread_1 thread[ThreadCount];
+
+ for (x = 0; x < ThreadCount; ++x) {
+ thread[x].mutex.lock();
+ thread[x].start();
+ // wait for thread to start
+ QVERIFY(thread[x].cond.wait(&thread[x].mutex, 1000));
+ thread[x].mutex.unlock();
+ }
+
+ for (x = 0; x < ThreadCount; ++x) {
+ QVERIFY(thread[x].isRunning());
+ QVERIFY(!thread[x].isFinished());
+ }
+
+ for (x = 0; x < ThreadCount; ++x) {
+ thread[x].mutex.lock();
+ thread[x].cond.wakeOne();
+ thread[x].mutex.unlock();
+ }
+
+ for (x = 0; x < ThreadCount; ++x) {
+ QVERIFY(thread[x].wait(1000));
+ }
+ }
+
+ {
+ // test multiple threads waiting on a wait condition
+ QMutex mutex;
+ QWaitCondition cond1, cond2;
+ wait_QMutex_Thread_2 thread[ThreadCount];
+
+ mutex.lock();
+ for (x = 0; x < ThreadCount; ++x) {
+ thread[x].mutex = &mutex;
+ thread[x].cond = (x < ThreadCount / 2) ? &cond1 : &cond2;
+ thread[x].start();
+ // wait for thread to start
+ QVERIFY(thread[x].started.wait(&mutex, 1000));
+ }
+ mutex.unlock();
+
+ for (x = 0; x < ThreadCount; ++x) {
+ QVERIFY(thread[x].isRunning());
+ QVERIFY(!thread[x].isFinished());
+ }
+
+ mutex.lock();
+ cond1.wakeAll();
+ cond2.wakeAll();
+ mutex.unlock();
+
+ for (x = 0; x < ThreadCount; ++x) {
+ QVERIFY(thread[x].wait(1000));
+ }
+ }
+ }
+}
+
+void tst_QWaitCondition::wait_QReadWriteLock()
+{
+ {
+ QReadWriteLock readWriteLock(QReadWriteLock::Recursive);
+ QWaitCondition waitCondition;
+
+ // ensure that the lockForRead is correctly restored
+ readWriteLock.lockForRead();
+
+ QVERIFY(!waitCondition.wait(&readWriteLock, 1));
+
+ QVERIFY(!readWriteLock.tryLockForWrite());
+ QVERIFY(readWriteLock.tryLockForRead());
+ readWriteLock.unlock();
+ QVERIFY(!readWriteLock.tryLockForWrite());
+ readWriteLock.unlock();
+
+ QVERIFY(readWriteLock.tryLockForWrite());
+ readWriteLock.unlock();
+ }
+
+ {
+ QReadWriteLock readWriteLock(QReadWriteLock::Recursive);
+ QWaitCondition waitCondition;
+
+ // ensure that the lockForWrite is correctly restored
+ readWriteLock.lockForWrite();
+
+ QVERIFY(!waitCondition.wait(&readWriteLock, 1));
+
+ QVERIFY(!readWriteLock.tryLockForRead());
+ QVERIFY(readWriteLock.tryLockForWrite());
+ readWriteLock.unlock();
+ QVERIFY(!readWriteLock.tryLockForRead());
+ readWriteLock.unlock();
+
+ QVERIFY(readWriteLock.tryLockForRead());
+ readWriteLock.unlock();
+ }
+
+
+ int x;
+ for (int i = 0; i < iterations; ++i) {
+ {
+ QReadWriteLock readWriteLock;
+ QWaitCondition waitCondition;
+
+ readWriteLock.lockForRead();
+
+ waitCondition.wakeOne();
+ QVERIFY(!waitCondition.wait(&readWriteLock, 1));
+
+ waitCondition.wakeAll();
+ QVERIFY(!waitCondition.wait(&readWriteLock, 1));
+
+ readWriteLock.unlock();
+ }
+
+ {
+ QReadWriteLock readWriteLock;
+ QWaitCondition waitCondition;
+
+ readWriteLock.lockForWrite();
+
+ waitCondition.wakeOne();
+ QVERIFY(!waitCondition.wait(&readWriteLock, 1));
+
+ waitCondition.wakeAll();
+ QVERIFY(!waitCondition.wait(&readWriteLock, 1));
+
+ readWriteLock.unlock();
+ }
+
+ {
+ // test multiple threads waiting on separate wait conditions
+ wait_QReadWriteLock_Thread_1 thread[ThreadCount];
+
+ for (x = 0; x < ThreadCount; ++x) {
+ thread[x].readWriteLock.lockForRead();
+ thread[x].start();
+ // wait for thread to start
+#if defined(Q_OS_SYMBIAN) && defined(Q_CC_WINSCW)
+ // Symbian emulator startup simultaneously with this thread causes additional delay
+ QVERIFY(thread[x].cond.wait(&thread[x].readWriteLock, 10000));
+#else
+ QVERIFY(thread[x].cond.wait(&thread[x].readWriteLock, 1000));
+#endif
+ thread[x].readWriteLock.unlock();
+ }
+
+ for (x = 0; x < ThreadCount; ++x) {
+ QVERIFY(thread[x].isRunning());
+ QVERIFY(!thread[x].isFinished());
+ }
+
+ for (x = 0; x < ThreadCount; ++x) {
+ thread[x].readWriteLock.lockForRead();
+ thread[x].cond.wakeOne();
+ thread[x].readWriteLock.unlock();
+ }
+
+ for (x = 0; x < ThreadCount; ++x) {
+ QVERIFY(thread[x].wait(1000));
+ }
+ }
+
+ {
+ // test multiple threads waiting on a wait condition
+ QReadWriteLock readWriteLock;
+ QWaitCondition cond1, cond2;
+ wait_QReadWriteLock_Thread_2 thread[ThreadCount];
+
+ readWriteLock.lockForWrite();
+ for (x = 0; x < ThreadCount; ++x) {
+ thread[x].readWriteLock = &readWriteLock;
+ thread[x].cond = (x < ThreadCount / 2) ? &cond1 : &cond2;
+ thread[x].start();
+ // wait for thread to start
+ QVERIFY(thread[x].started.wait(&readWriteLock, 1000));
+ }
+ readWriteLock.unlock();
+
+ for (x = 0; x < ThreadCount; ++x) {
+ QVERIFY(thread[x].isRunning());
+ QVERIFY(!thread[x].isFinished());
+ }
+
+ readWriteLock.lockForWrite();
+ cond1.wakeAll();
+ cond2.wakeAll();
+ readWriteLock.unlock();
+
+ for (x = 0; x < ThreadCount; ++x) {
+ QVERIFY(thread[x].wait(1000));
+ }
+ }
+ }
+
+}
+
+class wake_Thread : public QThread
+{
+public:
+ static int count;
+
+ QWaitCondition started;
+ QWaitCondition dummy;
+
+ QMutex *mutex;
+ QWaitCondition *cond;
+
+ inline wake_Thread()
+ : mutex(0), cond(0)
+ { }
+
+ static inline void sleep(ulong s)
+ { QThread::sleep(s); }
+
+ void run()
+ {
+ mutex->lock();
+ ++count;
+ dummy.wakeOne(); // this wakeup should be lost
+ started.wakeOne();
+ dummy.wakeAll(); // this one too
+ cond->wait(mutex);
+ --count;
+ mutex->unlock();
+ }
+};
+
+int wake_Thread::count = 0;
+
+class wake_Thread_2 : public QThread
+{
+public:
+ static int count;
+
+ QWaitCondition started;
+ QWaitCondition dummy;
+
+ QReadWriteLock *readWriteLock;
+ QWaitCondition *cond;
+
+ inline wake_Thread_2()
+ : readWriteLock(0), cond(0)
+ { }
+
+ static inline void sleep(ulong s)
+ { QThread::sleep(s); }
+
+ void run()
+ {
+ readWriteLock->lockForWrite();
+ ++count;
+ dummy.wakeOne(); // this wakeup should be lost
+ started.wakeOne();
+ dummy.wakeAll(); // this one too
+ cond->wait(readWriteLock);
+ --count;
+ readWriteLock->unlock();
+ }
+};
+
+int wake_Thread_2::count = 0;
+
+void tst_QWaitCondition::wakeOne()
+{
+ int x;
+ // wake up threads, one at a time
+ for (int i = 0; i < iterations; ++i) {
+ QMutex mutex;
+ QWaitCondition cond;
+
+ // QMutex
+ wake_Thread thread[ThreadCount];
+ bool thread_exited[ThreadCount];
+
+ mutex.lock();
+ for (x = 0; x < ThreadCount; ++x) {
+ thread[x].mutex = &mutex;
+ thread[x].cond = &cond;
+ thread_exited[x] = FALSE;
+ thread[x].start();
+ // wait for thread to start
+ QVERIFY(thread[x].started.wait(&mutex, 1000));
+ // make sure wakeups are not queued... if nothing is
+ // waiting at the time of the wakeup, nothing happens
+ QVERIFY(!thread[x].dummy.wait(&mutex, 1));
+ }
+ mutex.unlock();
+
+ QCOMPARE(wake_Thread::count, ThreadCount);
+
+ // wake up threads one at a time
+ for (x = 0; x < ThreadCount; ++x) {
+ mutex.lock();
+ cond.wakeOne();
+ QVERIFY(!cond.wait(&mutex, COND_WAIT_TIME));
+ QVERIFY(!thread[x].dummy.wait(&mutex, 1));
+ mutex.unlock();
+
+ int exited = 0;
+ for (int y = 0; y < ThreadCount; ++y) {
+ if (thread_exited[y])
+ continue;
+ if (thread[y].wait(exited > 0 ? 10 : 1000)) {
+ thread_exited[y] = TRUE;
+ ++exited;
+ }
+ }
+
+ QCOMPARE(exited, 1);
+ QCOMPARE(wake_Thread::count, ThreadCount - (x + 1));
+ }
+
+ QCOMPARE(wake_Thread::count, 0);
+
+ // QReadWriteLock
+ QReadWriteLock readWriteLock;
+ wake_Thread_2 rwthread[ThreadCount];
+
+ readWriteLock.lockForWrite();
+ for (x = 0; x < ThreadCount; ++x) {
+ rwthread[x].readWriteLock = &readWriteLock;
+ rwthread[x].cond = &cond;
+ thread_exited[x] = FALSE;
+ rwthread[x].start();
+ // wait for thread to start
+ QVERIFY(rwthread[x].started.wait(&readWriteLock, 1000));
+ // make sure wakeups are not queued... if nothing is
+ // waiting at the time of the wakeup, nothing happens
+ QVERIFY(!rwthread[x].dummy.wait(&readWriteLock, 1));
+ }
+ readWriteLock.unlock();
+
+ QCOMPARE(wake_Thread_2::count, ThreadCount);
+
+ // wake up threads one at a time
+ for (x = 0; x < ThreadCount; ++x) {
+ readWriteLock.lockForWrite();
+ cond.wakeOne();
+ QVERIFY(!cond.wait(&readWriteLock, COND_WAIT_TIME));
+ QVERIFY(!rwthread[x].dummy.wait(&readWriteLock, 1));
+ readWriteLock.unlock();
+
+ int exited = 0;
+ for (int y = 0; y < ThreadCount; ++y) {
+ if (thread_exited[y])
+ continue;
+ if (rwthread[y].wait(exited > 0 ? 10 : 1000)) {
+ thread_exited[y] = TRUE;
+ ++exited;
+ }
+ }
+
+ QCOMPARE(exited, 1);
+ QCOMPARE(wake_Thread_2::count, ThreadCount - (x + 1));
+ }
+
+ QCOMPARE(wake_Thread_2::count, 0);
+ }
+
+ // wake up threads, two at a time
+ for (int i = 0; i < iterations; ++i) {
+ QMutex mutex;
+ QWaitCondition cond;
+
+ // QMutex
+ wake_Thread thread[ThreadCount];
+ bool thread_exited[ThreadCount];
+
+ mutex.lock();
+ for (x = 0; x < ThreadCount; ++x) {
+ thread[x].mutex = &mutex;
+ thread[x].cond = &cond;
+ thread_exited[x] = FALSE;
+ thread[x].start();
+ // wait for thread to start
+ QVERIFY(thread[x].started.wait(&mutex, 1000));
+ // make sure wakeups are not queued... if nothing is
+ // waiting at the time of the wakeup, nothing happens
+ QVERIFY(!thread[x].dummy.wait(&mutex, 1));
+ }
+ mutex.unlock();
+
+ QCOMPARE(wake_Thread::count, ThreadCount);
+
+ // wake up threads one at a time
+ for (x = 0; x < ThreadCount; x += 2) {
+ mutex.lock();
+ cond.wakeOne();
+ cond.wakeOne();
+ QVERIFY(!cond.wait(&mutex, COND_WAIT_TIME));
+ QVERIFY(!thread[x].dummy.wait(&mutex, 1));
+ QVERIFY(!thread[x + 1].dummy.wait(&mutex, 1));
+ mutex.unlock();
+
+ int exited = 0;
+ for (int y = 0; y < ThreadCount; ++y) {
+ if (thread_exited[y])
+ continue;
+ if (thread[y].wait(exited > 0 ? 10 : 1000)) {
+ thread_exited[y] = TRUE;
+ ++exited;
+ }
+ }
+
+ QCOMPARE(exited, 2);
+ QCOMPARE(wake_Thread::count, ThreadCount - (x + 2));
+ }
+
+ QCOMPARE(wake_Thread::count, 0);
+
+ // QReadWriteLock
+ QReadWriteLock readWriteLock;
+ wake_Thread_2 rwthread[ThreadCount];
+
+ readWriteLock.lockForWrite();
+ for (x = 0; x < ThreadCount; ++x) {
+ rwthread[x].readWriteLock = &readWriteLock;
+ rwthread[x].cond = &cond;
+ thread_exited[x] = FALSE;
+ rwthread[x].start();
+ // wait for thread to start
+ QVERIFY(rwthread[x].started.wait(&readWriteLock, 1000));
+ // make sure wakeups are not queued... if nothing is
+ // waiting at the time of the wakeup, nothing happens
+ QVERIFY(!rwthread[x].dummy.wait(&readWriteLock, 1));
+ }
+ readWriteLock.unlock();
+
+ QCOMPARE(wake_Thread_2::count, ThreadCount);
+
+ // wake up threads one at a time
+ for (x = 0; x < ThreadCount; x += 2) {
+ readWriteLock.lockForWrite();
+ cond.wakeOne();
+ cond.wakeOne();
+ QVERIFY(!cond.wait(&readWriteLock, COND_WAIT_TIME));
+ QVERIFY(!rwthread[x].dummy.wait(&readWriteLock, 1));
+ QVERIFY(!rwthread[x + 1].dummy.wait(&readWriteLock, 1));
+ readWriteLock.unlock();
+
+ int exited = 0;
+ for (int y = 0; y < ThreadCount; ++y) {
+ if (thread_exited[y])
+ continue;
+ if (rwthread[y].wait(exited > 0 ? 10 : 1000)) {
+ thread_exited[y] = TRUE;
+ ++exited;
+ }
+ }
+
+ QCOMPARE(exited, 2);
+ QCOMPARE(wake_Thread_2::count, ThreadCount - (x + 2));
+ }
+
+ QCOMPARE(wake_Thread_2::count, 0);
+}
+}
+
+void tst_QWaitCondition::wakeAll()
+{
+ int x;
+ for (int i = 0; i < iterations; ++i) {
+ QMutex mutex;
+ QWaitCondition cond;
+
+ // QMutex
+ wake_Thread thread[ThreadCount];
+
+ mutex.lock();
+ for (x = 0; x < ThreadCount; ++x) {
+ thread[x].mutex = &mutex;
+ thread[x].cond = &cond;
+ thread[x].start();
+ // wait for thread to start
+ QVERIFY(thread[x].started.wait(&mutex, 1000));
+ }
+ mutex.unlock();
+
+ QCOMPARE(wake_Thread::count, ThreadCount);
+
+ // wake up all threads at once
+ mutex.lock();
+ cond.wakeAll();
+ QVERIFY(!cond.wait(&mutex, COND_WAIT_TIME));
+ mutex.unlock();
+
+ int exited = 0;
+ for (x = 0; x < ThreadCount; ++x) {
+ if (thread[x].wait(1000))
+ ++exited;
+ }
+
+ QCOMPARE(exited, ThreadCount);
+ QCOMPARE(wake_Thread::count, 0);
+
+ // QReadWriteLock
+ QReadWriteLock readWriteLock;
+ wake_Thread_2 rwthread[ThreadCount];
+
+ readWriteLock.lockForWrite();
+ for (x = 0; x < ThreadCount; ++x) {
+ rwthread[x].readWriteLock = &readWriteLock;
+ rwthread[x].cond = &cond;
+ rwthread[x].start();
+ // wait for thread to start
+ QVERIFY(rwthread[x].started.wait(&readWriteLock, 1000));
+ }
+ readWriteLock.unlock();
+
+ QCOMPARE(wake_Thread_2::count, ThreadCount);
+
+ // wake up all threads at once
+ readWriteLock.lockForWrite();
+ cond.wakeAll();
+ QVERIFY(!cond.wait(&readWriteLock, COND_WAIT_TIME));
+ readWriteLock.unlock();
+
+ exited = 0;
+ for (x = 0; x < ThreadCount; ++x) {
+ if (rwthread[x].wait(1000))
+ ++exited;
+ }
+
+ QCOMPARE(exited, ThreadCount);
+ QCOMPARE(wake_Thread_2::count, 0);
+ }
+}
+
+class wait_RaceConditionThread : public QThread
+{
+public:
+ wait_RaceConditionThread(QMutex *mutex, QWaitCondition *startup, QWaitCondition *waitCondition,
+ ulong timeout = ULONG_MAX)
+ : timeout(timeout), returnValue(false), ready(false),
+ mutex(mutex), startup(startup), waitCondition(waitCondition) {}
+
+ unsigned long timeout;
+ bool returnValue;
+
+ bool ready;
+
+ QMutex *mutex;
+ QWaitCondition *startup;
+ QWaitCondition *waitCondition;
+
+ void run() {
+ mutex->lock();
+
+ ready = true;
+ startup->wakeOne();
+
+ returnValue = waitCondition->wait(mutex, timeout);
+
+ mutex->unlock();
+ }
+};
+
+class wait_RaceConditionThread_2 : public QThread
+{
+public:
+ wait_RaceConditionThread_2(QReadWriteLock *readWriteLock,
+ QWaitCondition *startup,
+ QWaitCondition *waitCondition,
+ ulong timeout = ULONG_MAX)
+ : timeout(timeout), returnValue(false), ready(false),
+ readWriteLock(readWriteLock), startup(startup), waitCondition(waitCondition)
+ { }
+
+ unsigned long timeout;
+ bool returnValue;
+
+ bool ready;
+
+ QReadWriteLock *readWriteLock;
+ QWaitCondition *startup;
+ QWaitCondition *waitCondition;
+
+ void run() {
+ readWriteLock->lockForWrite();
+
+ ready = true;
+ startup->wakeOne();
+
+ returnValue = waitCondition->wait(readWriteLock, timeout);
+
+ readWriteLock->unlock();
+ }
+};
+
+void tst_QWaitCondition::wait_RaceCondition()
+{
+ {
+ QMutex mutex;
+ QWaitCondition startup;
+ QWaitCondition waitCondition;
+
+ wait_RaceConditionThread timeoutThread(&mutex, &startup, &waitCondition, 1000),
+ waitingThread1(&mutex, &startup, &waitCondition);
+
+ timeoutThread.start();
+ waitingThread1.start();
+ mutex.lock();
+
+ // wait for the threads to start up
+ while (!timeoutThread.ready
+ || !waitingThread1.ready) {
+ startup.wait(&mutex);
+ }
+
+ QTest::qWait(2000);
+
+ waitCondition.wakeOne();
+
+ mutex.unlock();
+
+ QVERIFY(timeoutThread.wait(5000));
+ QVERIFY(!timeoutThread.returnValue);
+ QVERIFY(waitingThread1.wait(5000));
+ QVERIFY(waitingThread1.returnValue);
+ }
+
+ {
+ QReadWriteLock readWriteLock;
+ QWaitCondition startup;
+ QWaitCondition waitCondition;
+
+ wait_RaceConditionThread_2 timeoutThread(&readWriteLock, &startup, &waitCondition, 1000),
+ waitingThread1(&readWriteLock, &startup, &waitCondition);
+
+ timeoutThread.start();
+ waitingThread1.start();
+ readWriteLock.lockForRead();
+
+ // wait for the threads to start up
+ while (!timeoutThread.ready
+ || !waitingThread1.ready) {
+ startup.wait(&readWriteLock);
+ }
+
+ QTest::qWait(2000);
+
+ waitCondition.wakeOne();
+
+ readWriteLock.unlock();
+
+ QVERIFY(timeoutThread.wait(5000));
+ QVERIFY(!timeoutThread.returnValue);
+ QVERIFY(waitingThread1.wait(5000));
+ QVERIFY(waitingThread1.returnValue);
+ }
+}
+
+QTEST_MAIN(tst_QWaitCondition)
+#include "tst_qwaitcondition.moc"
diff --git a/tests/auto/corelib/thread/qwritelocker/.gitignore b/tests/auto/corelib/thread/qwritelocker/.gitignore
new file mode 100644
index 0000000000..865739ad2c
--- /dev/null
+++ b/tests/auto/corelib/thread/qwritelocker/.gitignore
@@ -0,0 +1 @@
+tst_qwritelocker
diff --git a/tests/auto/corelib/thread/qwritelocker/qwritelocker.pro b/tests/auto/corelib/thread/qwritelocker/qwritelocker.pro
new file mode 100644
index 0000000000..39a98aaba5
--- /dev/null
+++ b/tests/auto/corelib/thread/qwritelocker/qwritelocker.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qwritelocker.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/thread/qwritelocker/tst_qwritelocker.cpp b/tests/auto/corelib/thread/qwritelocker/tst_qwritelocker.cpp
new file mode 100644
index 0000000000..a06431a5e1
--- /dev/null
+++ b/tests/auto/corelib/thread/qwritelocker/tst_qwritelocker.cpp
@@ -0,0 +1,231 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <QCoreApplication>
+#include <QWriteLocker>
+#include <QSemaphore>
+#include <QThread>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QWriteLockerThread : public QThread
+{
+public:
+ QReadWriteLock lock;
+ QSemaphore semaphore, testSemaphore;
+
+ void waitForTest()
+ {
+ semaphore.release();
+ testSemaphore.acquire();
+ }
+};
+
+class tst_QWriteLocker : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QWriteLocker();
+ ~tst_QWriteLocker();
+
+ tst_QWriteLockerThread *thread;
+
+ void waitForThread()
+ {
+ thread->semaphore.acquire();
+ }
+ void releaseThread()
+ {
+ thread->testSemaphore.release();
+ }
+
+private slots:
+ void scopeTest();
+ void unlockAndRelockTest();
+ void lockerStateTest();
+};
+
+tst_QWriteLocker::tst_QWriteLocker()
+{
+}
+
+tst_QWriteLocker::~tst_QWriteLocker()
+{
+}
+
+void tst_QWriteLocker::scopeTest()
+{
+ class ScopeTestThread : public tst_QWriteLockerThread
+ {
+ public:
+ void run()
+ {
+ waitForTest();
+
+ {
+ QWriteLocker locker(&lock);
+ waitForTest();
+ }
+
+ waitForTest();
+ }
+ };
+
+ thread = new ScopeTestThread;
+ thread->start();
+
+ waitForThread();
+ // lock should be unlocked before entering the scope that creates the QWriteLocker
+ QVERIFY(thread->lock.tryLockForWrite());
+ thread->lock.unlock();
+ releaseThread();
+
+ waitForThread();
+ // lock should be locked by the QWriteLocker
+ QVERIFY(!thread->lock.tryLockForWrite());
+ releaseThread();
+
+ waitForThread();
+ // lock should be unlocked when the QWriteLocker goes out of scope
+ QVERIFY(thread->lock.tryLockForWrite());
+ thread->lock.unlock();
+ releaseThread();
+
+ QVERIFY(thread->wait());
+
+ delete thread;
+ thread = 0;
+}
+
+
+void tst_QWriteLocker::unlockAndRelockTest()
+{
+ class UnlockAndRelockThread : public tst_QWriteLockerThread
+ {
+ public:
+ void run()
+ {
+ QWriteLocker locker(&lock);
+
+ waitForTest();
+
+ locker.unlock();
+
+ waitForTest();
+
+ locker.relock();
+
+ waitForTest();
+ }
+ };
+
+ thread = new UnlockAndRelockThread;
+ thread->start();
+
+ waitForThread();
+ // lock should be locked by the QWriteLocker
+ QVERIFY(!thread->lock.tryLockForWrite());
+ releaseThread();
+
+ waitForThread();
+ // lock has been explicitly unlocked via QWriteLocker
+ QVERIFY(thread->lock.tryLockForWrite());
+ thread->lock.unlock();
+ releaseThread();
+
+ waitForThread();
+ // lock has been explicitly relocked via QWriteLocker
+ QVERIFY(!thread->lock.tryLockForWrite());
+ releaseThread();
+
+ QVERIFY(thread->wait());
+
+ delete thread;
+ thread = 0;
+}
+
+void tst_QWriteLocker::lockerStateTest()
+{
+ class LockerStateThread : public tst_QWriteLockerThread
+ {
+ public:
+ void run()
+ {
+ {
+ QWriteLocker locker(&lock);
+ locker.relock();
+ locker.unlock();
+
+ waitForTest();
+ }
+
+ waitForTest();
+ }
+ };
+
+ thread = new LockerStateThread;
+ thread->start();
+
+ waitForThread();
+ // even though we relock() after creating the QWriteLocker, it shouldn't lock the lock more than once
+ QVERIFY(thread->lock.tryLockForWrite());
+ thread->lock.unlock();
+ releaseThread();
+
+ waitForThread();
+ // if we call QWriteLocker::unlock(), its destructor should do nothing
+ QVERIFY(thread->lock.tryLockForWrite());
+ thread->lock.unlock();
+ releaseThread();
+
+ QVERIFY(thread->wait());
+
+ delete thread;
+ thread = 0;
+}
+
+QTEST_MAIN(tst_QWriteLocker)
+#include "tst_qwritelocker.moc"
diff --git a/tests/auto/corelib/thread/thread.pro b/tests/auto/corelib/thread/thread.pro
new file mode 100644
index 0000000000..a137748b75
--- /dev/null
+++ b/tests/auto/corelib/thread/thread.pro
@@ -0,0 +1,14 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qatomicint \
+ qatomicpointer \
+ qmutex \
+ qmutexlocker \
+ qreadlocker \
+ qreadwritelock \
+ qsemaphore \
+ qthread \
+ qthreadonce \
+ qthreadstorage \
+ qwaitcondition \
+ qwritelocker
diff --git a/tests/auto/corelib/tools/qalgorithms/.gitignore b/tests/auto/corelib/tools/qalgorithms/.gitignore
new file mode 100644
index 0000000000..379c13eb9b
--- /dev/null
+++ b/tests/auto/corelib/tools/qalgorithms/.gitignore
@@ -0,0 +1 @@
+tst_qalgorithms
diff --git a/tests/auto/corelib/tools/qalgorithms/qalgorithms.pro b/tests/auto/corelib/tools/qalgorithms/qalgorithms.pro
new file mode 100644
index 0000000000..9143da658d
--- /dev/null
+++ b/tests/auto/corelib/tools/qalgorithms/qalgorithms.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qalgorithms.cpp
+
+QT = core
diff --git a/tests/auto/corelib/tools/qalgorithms/tst_qalgorithms.cpp b/tests/auto/corelib/tools/qalgorithms/tst_qalgorithms.cpp
new file mode 100644
index 0000000000..72e5729ee9
--- /dev/null
+++ b/tests/auto/corelib/tools/qalgorithms/tst_qalgorithms.cpp
@@ -0,0 +1,1048 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <iostream>
+#include <iomanip>
+#include <sstream>
+#include <algorithm>
+#include <qalgorithms.h>
+#include <QStringList>
+#include <QString>
+#include <QVector>
+
+#define Q_TEST_PERFORMANCE 0
+
+using namespace std;
+
+//TESTED_FILES=
+
+class tst_QAlgorithms : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QAlgorithms();
+ ~tst_QAlgorithms();
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void test_qLowerBound_data();
+ void test_qLowerBound();
+ void test_qUpperBound_data();
+ void test_qUpperBound();
+ void test_qBinaryFind_data();
+ void test_qBinaryFind();
+ void qBinaryFindOneEntry();
+ void swap();
+ void swap2();
+ void sortEmptyList();
+ void sortedList();
+ void sortAPItest();
+ void stableSortTest();
+ void stableSortCorrectnessTest_data();
+ void stableSortCorrectnessTest();
+ void convenienceAPI();
+ void qCountIterators() const;
+ void qCountContainer() const;
+ void binaryFindOnLargeContainer() const;
+
+#if Q_TEST_PERFORMANCE
+private:
+ void performance();
+#endif
+};
+
+tst_QAlgorithms::tst_QAlgorithms()
+{
+}
+
+tst_QAlgorithms::~tst_QAlgorithms()
+{
+}
+
+void tst_QAlgorithms::init()
+{
+}
+
+void tst_QAlgorithms::cleanup()
+{
+}
+
+
+class TestInt
+{
+public:
+ TestInt(int number) :m_number(number) {} ;
+ TestInt() : m_number(0) {};
+ bool operator<(const TestInt &other) const { ++TestInt::lessThanRefCount; return (m_number < other.m_number); }
+ int m_number;
+static long int lessThanRefCount;
+};
+
+long int TestInt::lessThanRefCount;
+
+
+QStringList dataSetTypes = QStringList() << "Random" << "Ascending"
+ << "Descending" << "Equal" << "Duplicates" << "Almost Sorted" ;
+
+template <typename DataType>
+QVector<DataType> generateData(QString dataSetType, const int length)
+{
+ QVector<DataType> container;
+ if (dataSetType == "Random") {
+ for(int i=0; i < length; ++i)
+ container.append(rand());
+ }
+ else if (dataSetType == "Ascending") {
+ for (int i=0; i < length; ++i)
+ container.append(i);
+ }
+ else if (dataSetType == "Descending") {
+ for (int i=0; i < length; ++i)
+ container.append(length - i);
+ }
+ else if (dataSetType == "Equal") {
+ for (int i=0; i < length; ++i)
+ container.append(43);
+ }
+ else if (dataSetType == "Duplicates") {
+ for (int i=0; i < length; ++i)
+ container.append(i % 10);
+ }
+ else if (dataSetType == "Almost Sorted") {
+ for (int i=0; i < length; ++i)
+ container.append(i);
+ for(int i = 0; i<= length / 10; ++i) {
+ const int iswap = i * 9;
+ DataType tmp = container.at(iswap);
+ container[iswap] = container.at(iswap + 1);
+ container[iswap + 1] = tmp;
+ }
+ }
+ return container;
+}
+
+struct ResultSet
+{
+ int numSorts;
+ long int lessThanRefCount;
+};
+
+
+template <typename ContainerType, typename Algorithm>
+ResultSet testRun(ContainerType &container, Algorithm &algorithm, int millisecs)
+{
+ TestInt::lessThanRefCount = 0;
+ int count = 0;
+ QTime t;
+ t.start();
+ while(t.elapsed() < millisecs) {
+ ++count;
+ algorithm(container);
+ }
+ ResultSet result;
+ result.numSorts = count;
+ result.lessThanRefCount = TestInt::lessThanRefCount;
+ return result;
+}
+
+template <typename ContainerType, typename LessThan>
+bool isSorted(ContainerType &container, LessThan lessThan)
+{
+ for (int i=0; i < container.count() - 1; ++i)
+ if (lessThan(container.at(i+1), container.at(i))) {
+ return false;
+ }
+ return true;
+}
+
+template <typename ContainerType>
+bool isSorted(ContainerType &container)
+{
+ return isSorted(container, qLess<Q_TYPENAME ContainerType::value_type>());
+}
+
+
+#if Q_TEST_PERFORMANCE
+void printHeader(QStringList &headers)
+{
+ cout << setw(10) << setiosflags(ios_base::left) << " ";
+ for (int h = 0; h < headers.count(); ++h) {
+ cout << setw(20) << setiosflags(ios_base::left) << headers.at(h).toLatin1().constData();
+ }
+ cout << endl;
+}
+
+template <typename ContainerType>
+void print(ContainerType testContainer)
+{
+ typedef typename ContainerType::value_type T;
+
+ foreach(T value, testContainer) {
+ cout << value << " ";
+ }
+
+ cout << endl;
+}
+
+template <typename Algorithm, typename DataType>
+QList<ResultSet> testAlgorithm(Algorithm &algorithm, QStringList dataSetTypes, int size, int time)
+{
+ QList<ResultSet> results;
+ foreach(QString dataSetType, dataSetTypes) {
+ QVector<DataType> container = generateData<DataType>(dataSetType, size);
+ results.append(testRun(container, algorithm, time));
+ if (!isSorted(container))
+ qWarning("%s: container is not sorted after test", Q_FUNC_INFO);
+ }
+ return results;
+}
+
+template <typename Algorithm, typename DataType>
+void testAlgorithm(Algorithm algorithm, QStringList &dataSetTypes)
+{
+ QList<int> sizes = QList<int>() << 5 << 15 << 35 << 70 << 200 << 1000 << 10000;
+ printHeader(dataSetTypes);
+ for (int s = 0; s < sizes.count(); ++s){
+ cout << setw(10) << setiosflags(ios_base::left)<< sizes.at(s);
+ QList<ResultSet> results =
+ testAlgorithm<Algorithm, DataType>(algorithm, dataSetTypes, sizes.at(s), 100);
+ foreach(ResultSet result, results) {
+ stringstream numSorts;
+ numSorts << setiosflags(ios_base::left) << setw(10) << result.numSorts;
+ stringstream lessThan;
+ lessThan << setiosflags(ios_base::left) << setw(10) << result.lessThanRefCount / result.numSorts;
+ cout << numSorts.str() << lessThan.str();
+ }
+ cout << endl;
+ }
+}
+#endif
+
+void tst_QAlgorithms::swap()
+{
+ {
+ int a = 1, b = 2;
+ qSwap(a, b);
+ QVERIFY(a == 2);
+ QVERIFY(b == 1);
+
+ qSwap(a, a);
+ QVERIFY(a == 2);
+ QVERIFY(b == 1);
+
+ qSwap(b, b);
+ QVERIFY(a == 2);
+ QVERIFY(b == 1);
+
+ qSwap(a, b);
+ QVERIFY(a == 1);
+ QVERIFY(b == 2);
+
+ qSwap(b, a);
+ QVERIFY(a == 2);
+ QVERIFY(b == 1);
+ }
+
+ {
+ double a = 1.0, b = 2.0;
+ qSwap(a, b);
+ QVERIFY(a == 2.0);
+ QVERIFY(b == 1.0);
+
+ qSwap(a, a);
+ QVERIFY(a == 2.0);
+ QVERIFY(b == 1.0);
+
+ qSwap(b, b);
+ QVERIFY(a == 2.0);
+ QVERIFY(b == 1.0);
+
+ qSwap(a, b);
+ QVERIFY(a == 1.0);
+ QVERIFY(b == 2.0);
+
+ qSwap(b, a);
+ QVERIFY(a == 2.0);
+ QVERIFY(b == 1.0);
+ }
+
+ {
+ QString a = "1", b = "2";
+ qSwap(a, b);
+ QVERIFY(a == "2");
+ QVERIFY(b == "1");
+
+ qSwap(a, a);
+ QVERIFY(a == "2");
+ QVERIFY(b == "1");
+
+ qSwap(b, b);
+ QVERIFY(a == "2");
+ QVERIFY(b == "1");
+
+ qSwap(a, b);
+ QVERIFY(a == "1");
+ QVERIFY(b == "2");
+
+ qSwap(b, a);
+ QVERIFY(a == "2");
+ QVERIFY(b == "1");
+ }
+
+ {
+ void *a = 0, *b = 0;
+ qSwap(a, b);
+ }
+
+ {
+ const void *a = 0, *b = 0;
+ qSwap(a, b);
+ }
+
+ {
+ QString *a = 0, *b = 0;
+ qSwap(a, b);
+ }
+
+ {
+ const QString *a = 0, *b = 0;
+ qSwap(a, b);
+ }
+
+ {
+ QString **a = 0, **b = 0;
+ qSwap(a, b);
+ }
+
+ {
+ const QString **a = 0, **b = 0;
+ qSwap(a, b);
+ }
+
+ {
+ QString * const *a = 0, * const *b = 0;
+ qSwap(a, b);
+ }
+
+ {
+ const QString * const *a = 0, * const *b = 0;
+ qSwap(a, b);
+ }
+}
+
+namespace SwapTest {
+ struct ST { int i; int j; };
+ void swap(ST &a, ST &b) {
+ a.i = b.j;
+ b.i = a.j;
+ }
+}
+
+void tst_QAlgorithms::swap2()
+{
+ {
+#ifndef QT_NO_SQL
+ //check the namespace lookup works correctly
+ SwapTest::ST a = { 45, 65 };
+ SwapTest::ST b = { 48, 68 };
+ qSwap(a, b);
+ QCOMPARE(a.i, 68);
+ QCOMPARE(b.i, 65);
+#endif
+ }
+}
+
+void tst_QAlgorithms::sortEmptyList()
+{
+ // Only test if it crashes
+ QStringList stringList;
+ stringList.sort();
+ QVERIFY(true);
+}
+
+void tst_QAlgorithms::sortedList()
+{
+ QList<int> list;
+ list << 4 << 3 << 6;
+
+ ::qSort(list.begin(), list.end());
+
+ QCOMPARE(list.count(), 3);
+ QCOMPARE(list.at(0), 3);
+ QCOMPARE(list.at(1), 4);
+ QCOMPARE(list.at(2), 6);
+
+ list.insert(qUpperBound(list.begin(), list.end(), 5), 5);
+ list.insert(qUpperBound(list.begin(), list.end(), 1), 1);
+ list.insert(qUpperBound(list.begin(), list.end(), 8), 8);
+
+ QCOMPARE(list.count(), 6);
+ QCOMPARE(list.at(0), 1);
+ QCOMPARE(list.at(1), 3);
+ QCOMPARE(list.at(2), 4);
+ QCOMPARE(list.at(3), 5);
+ QCOMPARE(list.at(4), 6);
+ QCOMPARE(list.at(5), 8);
+}
+
+Q_DECLARE_METATYPE(QList<int>)
+
+void tst_QAlgorithms::test_qLowerBound_data()
+{
+ QTest::addColumn<QList<int> >("data");
+ QTest::addColumn<int>("resultValue");
+ QTest::addColumn<int>("resultIndex");
+
+ QTest::newRow("sorted-duplicate") << (QList<int>() << 1 << 2 << 2 << 3) << 2 << 1;
+}
+
+void tst_QAlgorithms::test_qLowerBound()
+{
+ QFETCH(QList<int>, data);
+ QFETCH(int, resultValue);
+ QFETCH(int, resultIndex);
+
+
+ QCOMPARE(qLowerBound(data.constBegin(), data.constEnd(), resultValue), data.constBegin() + resultIndex);
+ QCOMPARE(qLowerBound(data.begin(), data.end(), resultValue), data.begin() + resultIndex);
+ QCOMPARE(qLowerBound(data, resultValue), data.constBegin() + resultIndex);
+ QCOMPARE(qLowerBound(data.constBegin(), data.constEnd(), resultValue, qLess<int>()), data.constBegin() + resultIndex);
+}
+
+void tst_QAlgorithms::test_qUpperBound_data()
+{
+ QTest::addColumn<QList<int> >("data");
+ QTest::addColumn<int>("resultValue");
+ QTest::addColumn<int>("resultIndex");
+
+ QTest::newRow("sorted-duplicate") << (QList<int>() << 1 << 2 << 2 << 3) << 2 << 3;
+}
+
+void tst_QAlgorithms::test_qUpperBound()
+{
+ QFETCH(QList<int>, data);
+ QFETCH(int, resultValue);
+ QFETCH(int, resultIndex);
+
+ QCOMPARE(qUpperBound(data.constBegin(), data.constEnd(), resultValue), data.constBegin() + resultIndex);
+ QCOMPARE(qUpperBound(data.begin(), data.end(), resultValue), data.begin() + resultIndex);
+ QCOMPARE(qUpperBound(data, resultValue), data.constBegin() + resultIndex);
+ QCOMPARE(qUpperBound(data.constBegin(), data.constEnd(), resultValue, qLess<int>()), data.constBegin() + resultIndex);
+}
+
+void tst_QAlgorithms::test_qBinaryFind_data()
+{
+ QTest::addColumn<QList<int> >("data");
+ QTest::addColumn<int>("resultValue"); // -42 means not found
+
+ QTest::newRow("sorted-duplicate") << (QList<int>() << 1 << 2 << 2 << 3) << 2;
+ QTest::newRow("sorted-end") << (QList<int>() << -5 << -2 << 0 << 8) << 8;
+ QTest::newRow("sorted-beginning") << (QList<int>() << -5 << -2 << 0 << 8) << -5;
+ QTest::newRow("sorted-duplicate-beginning") << (QList<int>() << -5 << -5 << -2 << 0 << 8) << -5;
+ QTest::newRow("empty") << (QList<int>()) << -42;
+ QTest::newRow("not found 1 ") << (QList<int>() << 1 << 5 << 8 << 65) << -42;
+ QTest::newRow("not found 2 ") << (QList<int>() << -456 << -5 << 8 << 65) << -42;
+}
+
+void tst_QAlgorithms::test_qBinaryFind()
+{
+ QFETCH(QList<int>, data);
+ QFETCH(int, resultValue);
+
+ //-42 means not found
+ if (resultValue == -42) {
+ QVERIFY(qBinaryFind(data.constBegin(), data.constEnd(), resultValue) == data.constEnd());
+ QVERIFY(qBinaryFind(data, resultValue) == data.constEnd());
+ QVERIFY(qBinaryFind(data.begin(), data.end(), resultValue) == data.end());
+ QVERIFY(qBinaryFind(data.begin(), data.end(), resultValue, qLess<int>()) == data.end());
+ return;
+ }
+
+ QCOMPARE(*qBinaryFind(data.constBegin(), data.constEnd(), resultValue), resultValue);
+ QCOMPARE(*qBinaryFind(data.begin(), data.end(), resultValue), resultValue);
+ QCOMPARE(*qBinaryFind(data, resultValue), resultValue);
+ QCOMPARE(*qBinaryFind(data.constBegin(), data.constEnd(), resultValue, qLess<int>()), resultValue);
+}
+
+void tst_QAlgorithms::qBinaryFindOneEntry()
+{
+ QList<int> list;
+ list << 2;
+
+ QVERIFY(::qBinaryFind(list.constBegin(), list.constEnd(), 2) != list.constEnd());
+}
+
+
+void tst_QAlgorithms::sortAPItest()
+{
+ QVector<int> testVector = generateData<int>("Random", 101);
+ qSort(testVector);
+ QVERIFY(isSorted(testVector));
+ qSort(testVector.begin(), testVector.end());
+ QVERIFY(isSorted(testVector));
+ qSort(testVector.begin(), testVector.end(), qLess<int>());
+ QVERIFY(isSorted(testVector));
+
+ testVector = generateData<int>("Random", 71);
+ qStableSort(testVector);
+ QVERIFY(isSorted(testVector));
+ qStableSort(testVector.begin(), testVector.end());
+ QVERIFY(isSorted(testVector));
+ qStableSort(testVector.begin(), testVector.end(), qLess<int>());
+ QVERIFY(isSorted(testVector));
+
+ QList<int> testList = generateData<int>("Random", 101).toList();
+ qSort(testList);
+ QVERIFY(isSorted(testList));
+ qSort(testList.begin(), testList.end());
+ QVERIFY(isSorted(testList));
+ qSort(testList.begin(), testList.end(), qLess<int>());
+ QVERIFY(isSorted(testList));
+
+ testList = generateData<int>("Random", 71).toList();
+ qStableSort(testList);
+ QVERIFY(isSorted(testList));
+ qStableSort(testList.begin(), testList.end());
+ QVERIFY(isSorted(testList));
+ qStableSort(testList.begin(), testList.end(), qLess<int>());
+ QVERIFY(isSorted(testList));
+}
+
+
+class StableSortTest
+{
+public:
+ StableSortTest(){};
+ StableSortTest(int Major, int Minor) : Major(Major), Minor(Minor) {}
+ bool operator<(const StableSortTest &other) const {return (Major < other.Major); }
+ bool testMinor(const StableSortTest &other) const {return Minor < other.Minor; }
+
+int Major;
+int Minor;
+};
+
+ostream &operator<<(ostream &out, const StableSortTest& obj) { out << obj.Major << "-" << obj.Minor; return out; }
+
+QVector<StableSortTest> createStableTestVector()
+{
+ QVector<StableSortTest> stableTestVector;
+ for (int i=500; i>=0; --i) {
+ for (int j=0; j<10; ++j) {
+ stableTestVector.append(StableSortTest(i, j));
+ }
+ }
+ return stableTestVector;
+}
+
+template <typename ContainerType, typename LessThan>
+bool isStableSorted(ContainerType &container, LessThan lessThan)
+{
+ for (int i=0; i < container.count() - 1; ++i) {
+ //not sorted?
+ if (lessThan(container.at(i + 1), container.at(i)))
+ return false;
+ // equal?
+ if (lessThan(container.at(i), container.at(i + 1)))
+ continue;
+ // minor version?
+ if(container.at(i + 1).testMinor(container.at(i)))
+ return false;
+ }
+ return true;
+}
+
+void tst_QAlgorithms::stableSortTest()
+{
+ // Selftests:
+ {
+ QVector<StableSortTest> stableTestVector = createStableTestVector();
+ qSort(stableTestVector.begin(), stableTestVector.end(), qLess<StableSortTest>());
+ QVERIFY(isSorted(stableTestVector, qLess<StableSortTest>()));
+ QVERIFY(!isStableSorted(stableTestVector, qLess<StableSortTest>()));
+ }
+ {
+ QVector<StableSortTest> stableTestVector = createStableTestVector();
+ qSort(stableTestVector.begin(), stableTestVector.end(), qGreater<StableSortTest>());
+ QVERIFY(isSorted(stableTestVector, qGreater<StableSortTest>()));
+ QVERIFY(!isStableSorted(stableTestVector, qGreater<StableSortTest>()));
+ }
+ {
+ QVector<StableSortTest> stableTestVector = createStableTestVector();
+ qSort(stableTestVector.begin(), stableTestVector.end(), qGreater<StableSortTest>());
+ QVERIFY(!isSorted(stableTestVector, qLess<StableSortTest>()));
+ QVERIFY(!isStableSorted(stableTestVector, qGreater<StableSortTest>()));
+ }
+
+
+ // Stable sort with qLess
+ {
+ QVector<StableSortTest> stableTestVector = createStableTestVector();
+ std::stable_sort(stableTestVector.begin(), stableTestVector.end(), qLess<StableSortTest>());
+ QVERIFY(isSorted(stableTestVector, qLess<StableSortTest>()));
+ QVERIFY(isStableSorted(stableTestVector, qLess<StableSortTest>()));
+ }
+ {
+ QVector<StableSortTest> stableTestVector = createStableTestVector();
+ qStableSort(stableTestVector.begin(), stableTestVector.end(), qLess<StableSortTest>());
+ QVERIFY(isSorted(stableTestVector, qLess<StableSortTest>()));
+ QVERIFY(isStableSorted(stableTestVector, qLess<StableSortTest>()));
+ }
+
+ // Stable sort with qGreater
+ {
+ QVector<StableSortTest> stableTestVector = createStableTestVector();
+ std::stable_sort(stableTestVector.begin(), stableTestVector.end(), qGreater<StableSortTest>());
+ QVERIFY(isSorted(stableTestVector, qGreater<StableSortTest>()));
+ QVERIFY(isStableSorted(stableTestVector, qGreater<StableSortTest>()));
+ }
+
+ {
+ QVector<StableSortTest> stableTestVector = createStableTestVector();
+ qStableSort(stableTestVector.begin(), stableTestVector.end(), qGreater<StableSortTest>());
+ QVERIFY(isSorted(stableTestVector, qGreater<StableSortTest>()));
+ QVERIFY(isStableSorted(stableTestVector, qGreater<StableSortTest>()));
+ }
+}
+
+Q_DECLARE_METATYPE(QVector<int>)
+
+void tst_QAlgorithms::stableSortCorrectnessTest_data()
+{
+ const int dataSize = 1000;
+ QTest::addColumn<QVector<int> >("unsorted");
+ QTest::newRow("From documentation") << (QVector<int>() << 33 << 12 << 68 << 6 << 12);
+ QTest::newRow("Equal") << (generateData<int>("Equal", dataSize));
+ QTest::newRow("Ascending") << (generateData<int>("Ascending", dataSize));
+ QTest::newRow("Descending") << (generateData<int>("Descending", dataSize));
+ QTest::newRow("Duplicates") << (generateData<int>("Duplicates", dataSize));
+ QTest::newRow("Almost Sorted") << (generateData<int>("Almost Sorted", dataSize));
+ QTest::newRow("Random") << (generateData<int>("Random", dataSize));
+}
+
+void tst_QAlgorithms::stableSortCorrectnessTest()
+{
+ QFETCH(QVector<int>, unsorted);
+
+ QVector<int> sorted = unsorted;
+ qStableSort(sorted.begin(), sorted.end());
+
+ // Verify that sorted contains the same numbers as unsorted.
+ foreach(int value, unsorted) {
+ QVERIFY(sorted.contains(value));
+ int unsortedCount = 0;
+ qCount(unsorted.begin(), unsorted.end(), value, unsortedCount);
+ int sortedCount = 0;
+ qCount(sorted.begin(), sorted.end(), value, sortedCount);
+ QCOMPARE(sortedCount, unsortedCount);
+ }
+
+ QVERIFY(isSorted(sorted));
+}
+
+void tst_QAlgorithms::convenienceAPI()
+{
+ // Compile-test for QAlgorithm convenience functions.
+ QList<int> list, list2;
+
+ qCopy(list.begin(), list.end(), list2.begin());
+ qCopyBackward(list.begin(), list.end(), list2.begin());
+ qEqual(list.begin(), list.end(), list2.begin());
+
+ qFill(list, 1);
+ qFill(list.begin(), list.end(), 1);
+
+ qFind(list, 1);
+ qFind(list.begin(), list.end(), 1);
+
+ int count1 = 0 , count2 = 0, count3 = 0;
+ qCount(list, 1, count1);
+ qCount(list.begin(), list.end(), 1, count2);
+ QCOMPARE(count1, count2);
+ QCOMPARE(count2, count3);
+
+ qSort(list);
+ qSort(list.begin(), list.end());
+ qSort(list.begin(), list.end(), qLess<int>());
+
+ qStableSort(list);
+ qStableSort(list.begin(), list.end());
+ qStableSort(list.begin(), list.end(), qLess<int>());
+
+ qLowerBound(list, 1);;
+ qLowerBound(list.begin(), list.end(), 1);
+ qLowerBound(list.begin(), list.end(), 1, qLess<int>());
+
+ qUpperBound(list, 1);
+ qUpperBound(list.begin(), list.end(), 1);
+ qUpperBound(list.begin(), list.end(), 1, qLess<int>());
+
+ qBinaryFind(list, 1);
+ qBinaryFind(list.begin(), list.end(), 1);
+ qBinaryFind(list.begin(), list.end(), 1, qLess<int>());
+
+ QList<int *> pointerList;
+ qDeleteAll(pointerList);
+ qDeleteAll(pointerList.begin(), pointerList.end());
+}
+
+template <typename DataType>
+class QuickSortHelper
+{
+public:
+ void operator()(QVector<DataType> list)
+ {
+ ::qSort(list);
+ }
+};
+
+template <typename DataType>
+class StableSortHelper
+{
+public:
+ void operator()(QVector<DataType> list)
+ {
+ ::qStableSort(list);
+ }
+};
+
+template <typename DataType>
+class StlSortHelper
+{
+public:
+ void operator()(QVector<DataType> list)
+ {
+ std::sort(list.begin(), list.end());
+ }
+};
+
+template <typename DataType>
+class StlStableSortHelper
+{
+public:
+ void operator()(QVector<DataType> list)
+ {
+ std::stable_sort(list.begin(), list.end());
+ }
+};
+
+#if Q_TEST_PERFORMANCE
+void tst_QAlgorithms::performance()
+{
+ cout << endl << "Quick sort" << endl;
+ testAlgorithm<QuickSortHelper<TestInt>, TestInt>(QuickSortHelper<TestInt>(), dataSetTypes);
+ cout << endl << "stable sort" << endl;
+ testAlgorithm<StableSortHelper<TestInt>, TestInt>(StableSortHelper<TestInt>(), dataSetTypes);
+ cout << endl << "std::sort" << endl;
+ testAlgorithm<StlSortHelper<TestInt>, TestInt>(StlSortHelper<TestInt>(), dataSetTypes);
+ cout << endl << "std::stable_sort" << endl;
+ testAlgorithm<StlStableSortHelper<TestInt>, TestInt>(StlStableSortHelper<TestInt>(), dataSetTypes);
+/*
+ cout << endl << "Sorting lists of ints" << endl;
+ cout << endl << "Quick sort" << endl;
+ testAlgorithm<QuickSortHelper<int>, int>(QuickSortHelper<int>(), dataSetTypes);
+ cout << endl << "std::sort" << endl;
+ testAlgorithm<StlSortHelper<int>, int>(StlSortHelper<int>(), dataSetTypes);
+ cout << endl << "std::stable_sort" << endl;
+ testAlgorithm<StlStableSortHelper<int>, int>(StlStableSortHelper<int>(), dataSetTypes);
+*/
+}
+#endif
+
+void tst_QAlgorithms::qCountIterators() const
+{
+ QList<int> list;
+ list << 3 << 3 << 6 << 6 << 6 << 8;
+
+ {
+ int countOf7 = 0;
+ ::qCount(list.begin(), list.end(), 7, countOf7);
+ QCOMPARE(countOf7, 0);
+ }
+
+ {
+ int countOf3 = 0;
+ ::qCount(list.begin(), list.end(), 3, countOf3);
+ QCOMPARE(countOf3, 2);
+ }
+
+ {
+ int countOf6 = 0;
+ ::qCount(list.begin(), list.end(), 6, countOf6);
+ QCOMPARE(countOf6, 3);
+ }
+
+ {
+ int countOf8 = 0;
+ ::qCount(list.begin(), list.end(), 8, countOf8);
+ QCOMPARE(countOf8, 1);
+ }
+
+ /* Check that we add to the count, not set it. */
+ {
+ int countOf8 = 5;
+ ::qCount(list.begin(), list.end(), 8, countOf8);
+ QCOMPARE(countOf8, 6);
+ }
+}
+
+void tst_QAlgorithms::qCountContainer() const
+{
+ QList<int> list;
+ list << 3 << 3 << 6 << 6 << 6 << 8;
+
+ {
+ int countOf7 = 0;
+ ::qCount(list, 7, countOf7);
+ QCOMPARE(countOf7, 0);
+ }
+
+ {
+ int countOf3 = 0;
+ ::qCount(list, 3, countOf3);
+ QCOMPARE(countOf3, 2);
+ }
+
+ {
+ int countOf6 = 0;
+ ::qCount(list, 6, countOf6);
+ QCOMPARE(countOf6, 3);
+ }
+
+ {
+ int countOf8 = 0;
+ ::qCount(list, 8, countOf8);
+ QCOMPARE(countOf8, 1);
+ }
+
+ /* Check that we add to the count, not set it. */
+ {
+ int countOf8 = 5;
+ ::qCount(list, 8, countOf8);
+ QCOMPARE(countOf8, 6);
+ }
+}
+
+class RAI
+{
+ public:
+ RAI(int searched = 5, int hidePos = 4, int len = 10)
+ : curPos_(0)
+ , length_(len)
+ , searchedVal_(searched)
+ , searchedValPos_(hidePos)
+ {
+ }
+
+ int at(int pos) const
+ {
+ if (pos == searchedValPos_) {
+ return searchedVal_;
+ }
+ else if (pos < searchedValPos_) {
+ return searchedVal_ - 1;
+ }
+
+ return searchedVal_ + 1;
+ }
+
+ RAI begin() const
+ {
+ RAI rai = *this;
+ rai.setCurPos(0);
+ return rai;
+ }
+
+ RAI end() const
+ {
+ RAI rai = *this;
+ rai.setCurPos(length_);
+ return rai;
+ }
+
+ int pos() const
+ {
+ return curPos();
+ }
+
+ int size() const
+ {
+ return length_;
+ }
+
+ RAI operator+(int i) const
+ {
+ RAI rai = *this;
+ rai.setCurPos( rai.curPos() + i );
+ if (rai.curPos() > length_) {
+ rai.setCurPos(length_);
+ }
+ return rai;
+ }
+
+ RAI operator-(int i) const
+ {
+ RAI rai = *this;
+ rai.setCurPos( rai.curPos() - i );
+ if (rai.curPos() < 0) {
+ rai.setCurPos(0);
+ }
+ return rai;
+ }
+
+ int operator-(const RAI& it) const
+ {
+ return curPos() - it.curPos();
+ }
+
+ RAI& operator+=(int i)
+ {
+ setCurPos( curPos() + i );
+ if (curPos() > length_) {
+ setCurPos(length_);
+ }
+ return *this;
+ }
+
+ RAI& operator-=(int i)
+ {
+ setCurPos( curPos() - i);
+ if (curPos() < 0) {
+ setCurPos(0);
+ }
+ return *this;
+ }
+
+ RAI& operator++()
+ {
+ if (curPos() < length_) {
+ setCurPos( curPos() + 1 );
+ }
+ return *this;
+ }
+
+ RAI operator++(int)
+ {
+ RAI rai = *this;
+
+ if (curPos() < length_) {
+ setCurPos( curPos() + 1 );
+ }
+
+ return rai;
+ }
+
+ RAI& operator--()
+ {
+ if (curPos() > 0) {
+ setCurPos( curPos() - 1 );
+ }
+ return *this;
+ }
+
+ RAI operator--(int)
+ {
+ RAI rai = *this;
+
+ if (curPos() > 0) {
+ setCurPos( curPos() - 1 );
+ }
+
+ return rai;
+ }
+
+ bool operator==(const RAI& rai) const
+ {
+ return rai.curPos() == curPos();
+ }
+
+ bool operator!=(const RAI& rai) const
+ {
+ return !operator==(rai);
+ }
+
+ int operator*() const
+ {
+ return at(curPos());
+ }
+
+ int operator[](int i) const
+ {
+ return at(i);
+ }
+
+ private:
+
+ int curPos() const
+ {
+ return curPos_;
+ }
+
+ void setCurPos(int pos)
+ {
+ curPos_ = pos;
+ }
+
+ int curPos_;
+ int length_;
+ int searchedVal_;
+ int searchedValPos_;
+};
+
+void tst_QAlgorithms::binaryFindOnLargeContainer() const
+{
+ const int len = 2 * 1000 * 1000 * 537;
+ const int pos = len - 12345;
+ RAI rai(5, pos, len);
+
+ RAI foundIt = qBinaryFind(rai.begin(), rai.end(), 5);
+ QCOMPARE(foundIt.pos(), 1073987655);
+}
+
+QTEST_APPLESS_MAIN(tst_QAlgorithms)
+#include "tst_qalgorithms.moc"
+
diff --git a/tests/auto/corelib/tools/qbitarray/.gitignore b/tests/auto/corelib/tools/qbitarray/.gitignore
new file mode 100644
index 0000000000..a36354a6c4
--- /dev/null
+++ b/tests/auto/corelib/tools/qbitarray/.gitignore
@@ -0,0 +1 @@
+tst_qbitarray
diff --git a/tests/auto/corelib/tools/qbitarray/qbitarray.pro b/tests/auto/corelib/tools/qbitarray/qbitarray.pro
new file mode 100644
index 0000000000..358d81bad1
--- /dev/null
+++ b/tests/auto/corelib/tools/qbitarray/qbitarray.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qbitarray.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp b/tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp
new file mode 100644
index 0000000000..83fcfccd21
--- /dev/null
+++ b/tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp
@@ -0,0 +1,668 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtCore/QBuffer>
+#include <QtCore/QDataStream>
+
+#include "qbitarray.h"
+
+/**
+ * Helper function to initialize a bitarray from a string
+ */
+static QBitArray QStringToQBitArray(const QString &str)
+{
+ QBitArray ba;
+ ba.resize(str.length());
+ int i;
+ QChar tru('1');
+ for (i = 0; i < str.length(); i++)
+ {
+ if (str.at(i) == tru)
+ {
+ ba.setBit(i, true);
+ }
+ }
+ return ba;
+}
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QBitArray : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QBitArray();
+ virtual ~tst_QBitArray();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void size_data();
+ void size();
+ void countBits_data();
+ void countBits();
+ void countBits2();
+ void isEmpty();
+ void swap();
+ void fill();
+ void toggleBit_data();
+ void toggleBit();
+ // operator &=
+ void operator_andeq_data();
+ void operator_andeq();
+ // operator |=
+ void operator_oreq_data();
+ void operator_oreq();
+ // operator ^=
+ void operator_xoreq_data();
+ void operator_xoreq();
+ // operator ~
+ void operator_neg_data();
+ void operator_neg();
+ void datastream_data();
+ void datastream();
+ void invertOnNull() const;
+ void operator_noteq_data();
+ void operator_noteq();
+
+ void resize();
+};
+
+Q_DECLARE_METATYPE(QBitArray)
+
+tst_QBitArray::tst_QBitArray()
+{
+}
+
+tst_QBitArray::~tst_QBitArray()
+{
+
+}
+
+void tst_QBitArray::init()
+{
+// TODO: Add initialization code here.
+// This will be executed immediately before each test is run.
+}
+
+void tst_QBitArray::cleanup()
+{
+// TODO: Add cleanup code here.
+// This will be executed immediately after each test is run.
+}
+
+void tst_QBitArray::size_data()
+{
+ //create the testtable instance and define the elements
+ QTest::addColumn<int>("count");
+ QTest::addColumn<QString>("res");
+
+ //next we fill it with data
+ QTest::newRow( "data0" ) << 1 << QString("1");
+ QTest::newRow( "data1" ) << 2 << QString("11");
+ QTest::newRow( "data2" ) << 3 << QString("111");
+ QTest::newRow( "data3" ) << 9 << QString("111111111");
+ QTest::newRow( "data4" ) << 10 << QString("1111111111");
+ QTest::newRow( "data5" ) << 17 << QString("11111111111111111");
+ QTest::newRow( "data6" ) << 18 << QString("111111111111111111");
+ QTest::newRow( "data7" ) << 19 << QString("1111111111111111111");
+ QTest::newRow( "data8" ) << 20 << QString("11111111111111111111");
+ QTest::newRow( "data9" ) << 21 << QString("111111111111111111111");
+ QTest::newRow( "data10" ) << 22 << QString("1111111111111111111111");
+ QTest::newRow( "data11" ) << 23 << QString("11111111111111111111111");
+ QTest::newRow( "data12" ) << 24 << QString("111111111111111111111111");
+ QTest::newRow( "data13" ) << 25 << QString("1111111111111111111111111");
+ QTest::newRow( "data14" ) << 32 << QString("11111111111111111111111111111111");
+}
+
+void tst_QBitArray::size()
+{
+ QFETCH(int,count);
+
+ QString S;
+ QBitArray a(count);
+ a.fill(1);
+ int len = a.size();
+ for (int j=0; j<len; j++) {
+ bool b = a[j];
+ if (b)
+ S+= "1";
+ else
+ S+= "0";
+ }
+ QTEST(S,"res");
+}
+
+void tst_QBitArray::countBits_data()
+{
+ QTest::addColumn<QString>("bitField");
+ QTest::addColumn<int>("numBits");
+ QTest::addColumn<int>("onBits");
+
+ QTest::newRow("empty") << QString() << 0 << 0;
+ QTest::newRow("1") << QString("1") << 1 << 1;
+ QTest::newRow("101") << QString("101") << 3 << 2;
+ QTest::newRow("101100001") << QString("101100001") << 9 << 4;
+ QTest::newRow("101100001101100001") << QString("101100001101100001") << 18 << 8;
+ QTest::newRow("101100001101100001101100001101100001") << QString("101100001101100001101100001101100001") << 36 << 16;
+ QTest::newRow("00000000000000000000000000000000000") << QString("00000000000000000000000000000000000") << 35 << 0;
+ QTest::newRow("11111111111111111111111111111111111") << QString("11111111111111111111111111111111111") << 35 << 35;
+ QTest::newRow("11111111111111111111111111111111") << QString("11111111111111111111111111111111") << 32 << 32;
+ QTest::newRow("11111111111111111111111111111111111111111111111111111111")
+ << QString("11111111111111111111111111111111111111111111111111111111") << 56 << 56;
+ QTest::newRow("00000000000000000000000000000000000") << QString("00000000000000000000000000000000000") << 35 << 0;
+ QTest::newRow("00000000000000000000000000000000") << QString("00000000000000000000000000000000") << 32 << 0;
+ QTest::newRow("00000000000000000000000000000000000000000000000000000000")
+ << QString("00000000000000000000000000000000000000000000000000000000") << 56 << 0;
+}
+
+void tst_QBitArray::countBits()
+{
+ QFETCH(QString, bitField);
+ QFETCH(int, numBits);
+ QFETCH(int, onBits);
+
+ QBitArray bits(bitField.size());
+ for (int i = 0; i < bitField.size(); ++i) {
+ if (bitField.at(i) == QLatin1Char('1'))
+ bits.setBit(i);
+ }
+
+ QCOMPARE(bits.count(), numBits);
+ QCOMPARE(bits.count(true), onBits);
+ QCOMPARE(bits.count(false), numBits - onBits);
+}
+
+void tst_QBitArray::countBits2()
+{
+ QBitArray bitArray;
+ for (int i = 0; i < 4017; ++i) {
+ bitArray.resize(i);
+ bitArray.fill(true);
+ QCOMPARE(bitArray.count(true), i);
+ QCOMPARE(bitArray.count(false), 0);
+ bitArray.fill(false);
+ QCOMPARE(bitArray.count(true), 0);
+ QCOMPARE(bitArray.count(false), i);
+ }
+}
+
+void tst_QBitArray::isEmpty()
+{
+ QBitArray a1;
+ QVERIFY(a1.isEmpty());
+ QVERIFY(a1.isNull());
+ QVERIFY(a1.size() == 0);
+
+ QBitArray a2(0, true);
+ QVERIFY(a2.isEmpty());
+ QVERIFY(!a2.isNull());
+ QVERIFY(a2.size() == 0);
+
+ QBitArray a3(1, true);
+ QVERIFY(!a3.isEmpty());
+ QVERIFY(!a3.isNull());
+ QVERIFY(a3.size() == 1);
+
+ a1.resize(0);
+ QVERIFY(a1.isEmpty());
+ QVERIFY(!a1.isNull());
+ QVERIFY(a1.size() == 0);
+
+ a2.resize(0);
+ QVERIFY(a2.isEmpty());
+ QVERIFY(!a2.isNull());
+ QVERIFY(a2.size() == 0);
+
+ a1.resize(1);
+ QVERIFY(!a1.isEmpty());
+ QVERIFY(!a1.isNull());
+ QVERIFY(a1.size() == 1);
+
+ a1.resize(2);
+ QVERIFY(!a1.isEmpty());
+ QVERIFY(!a1.isNull());
+ QVERIFY(a1.size() == 2);
+}
+
+void tst_QBitArray::swap()
+{
+ QBitArray b1 = QStringToQBitArray("1"), b2 = QStringToQBitArray("10");
+ b1.swap(b2);
+ QCOMPARE(b1,QStringToQBitArray("10"));
+ QCOMPARE(b2,QStringToQBitArray("1"));
+}
+
+void tst_QBitArray::fill()
+{
+ int N = 64;
+ int M = 17;
+ QBitArray a(N, false);
+ int i, j;
+
+ for (i = 0; i < N-M; ++i) {
+ a.fill(true, i, i + M);
+/*
+ for (int k = 0; k < N; ++k)
+ qDebug("%*s%d", k, "", a.at(k));
+*/
+ for (j = 0; j < N; ++j) {
+ if (j >= i && j < i + M) {
+ QVERIFY(a.at(j));
+ } else {
+ QVERIFY(!a.at(j));
+ }
+ }
+ a.fill(false, i, i + M);
+ }
+ for (i = 0; i < N; ++i)
+ a.fill(i % 2 == 0, i, i + 1);
+ for (i = 0; i < N; ++i) {
+ QVERIFY(a.at(i) == (i % 2 == 0));
+ }
+}
+
+void tst_QBitArray::toggleBit_data()
+{
+ QTest::addColumn<int>("index");
+ QTest::addColumn<QBitArray>("input");
+ QTest::addColumn<QBitArray>("res");
+ // 8 bits, toggle first bit
+ QTest::newRow( "data0" ) << 0 << QStringToQBitArray(QString("11111111")) << QStringToQBitArray(QString("01111111"));
+ // 8 bits
+ QTest::newRow( "data1" ) << 1 << QStringToQBitArray(QString("11111111")) << QStringToQBitArray(QString("10111111"));
+ // 11 bits, toggle last bit
+ QTest::newRow( "data2" ) << 10 << QStringToQBitArray(QString("11111111111")) << QStringToQBitArray(QString("11111111110"));
+
+}
+
+void tst_QBitArray::toggleBit()
+{
+ QFETCH(int,index);
+ QFETCH(QBitArray, input);
+ QFETCH(QBitArray, res);
+
+ input.toggleBit(index);
+
+ QCOMPARE(input, res);
+}
+
+void tst_QBitArray::operator_andeq_data()
+{
+ QTest::addColumn<QBitArray>("input1");
+ QTest::addColumn<QBitArray>("input2");
+ QTest::addColumn<QBitArray>("res");
+
+ QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111"))
+ << QStringToQBitArray(QString("00101100"))
+ << QStringToQBitArray(QString("00101100"));
+
+
+ QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011"))
+ << QStringToQBitArray(QString("00101100"))
+ << QStringToQBitArray(QString("00001000"));
+
+ QTest::newRow( "data2" ) << QStringToQBitArray(QString("11011011111"))
+ << QStringToQBitArray(QString("00101100"))
+ << QStringToQBitArray(QString("00001000000"));
+
+ QTest::newRow( "data3" ) << QStringToQBitArray(QString("11011011"))
+ << QStringToQBitArray(QString("00101100111"))
+ << QStringToQBitArray(QString("00001000000"));
+
+ QTest::newRow( "data4" ) << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString("00101100111"))
+ << QStringToQBitArray(QString("00000000000"));
+
+ QTest::newRow( "data5" ) << QStringToQBitArray(QString("00101100111"))
+ << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString("00000000000"));
+
+ QTest::newRow( "data6" ) << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString());
+}
+
+void tst_QBitArray::operator_andeq()
+{
+ QFETCH(QBitArray, input1);
+ QFETCH(QBitArray, input2);
+ QFETCH(QBitArray, res);
+
+ input1&=input2;
+
+ QCOMPARE(input1, res);
+}
+
+void tst_QBitArray::operator_oreq_data()
+{
+ QTest::addColumn<QBitArray>("input1");
+ QTest::addColumn<QBitArray>("input2");
+ QTest::addColumn<QBitArray>("res");
+
+ QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111"))
+ << QStringToQBitArray(QString("00101100"))
+ << QStringToQBitArray(QString("11111111"));
+
+
+ QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011"))
+ << QStringToQBitArray(QString("00101100"))
+ << QStringToQBitArray(QString("11111111"));
+
+ QTest::newRow( "data2" ) << QStringToQBitArray(QString("01000010"))
+ << QStringToQBitArray(QString("10100001"))
+ << QStringToQBitArray(QString("11100011"));
+
+ QTest::newRow( "data3" ) << QStringToQBitArray(QString("11011011"))
+ << QStringToQBitArray(QString("00101100000"))
+ << QStringToQBitArray(QString("11111111000"));
+
+ QTest::newRow( "data4" ) << QStringToQBitArray(QString("11011011111"))
+ << QStringToQBitArray(QString("00101100"))
+ << QStringToQBitArray(QString("11111111111"));
+
+ QTest::newRow( "data5" ) << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString("00101100111"))
+ << QStringToQBitArray(QString("00101100111"));
+
+ QTest::newRow( "data6" ) << QStringToQBitArray(QString("00101100111"))
+ << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString("00101100111"));
+
+ QTest::newRow( "data7" ) << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString());
+}
+
+void tst_QBitArray::operator_oreq()
+{
+ QFETCH(QBitArray, input1);
+ QFETCH(QBitArray, input2);
+ QFETCH(QBitArray, res);
+
+ input1|=input2;
+
+ QCOMPARE(input1, res);
+}
+
+void tst_QBitArray::operator_xoreq_data()
+{
+ QTest::addColumn<QBitArray>("input1");
+ QTest::addColumn<QBitArray>("input2");
+ QTest::addColumn<QBitArray>("res");
+ QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111"))
+ << QStringToQBitArray(QString("00101100"))
+ << QStringToQBitArray(QString("11010011"));
+
+ QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011"))
+ << QStringToQBitArray(QString("00101100"))
+ << QStringToQBitArray(QString("11110111"));
+
+ QTest::newRow( "data2" ) << QStringToQBitArray(QString("01000010"))
+ << QStringToQBitArray(QString("10100001"))
+ << QStringToQBitArray(QString("11100011"));
+
+ QTest::newRow( "data3" ) << QStringToQBitArray(QString("01000010"))
+ << QStringToQBitArray(QString("10100001101"))
+ << QStringToQBitArray(QString("11100011101"));
+
+ QTest::newRow( "data4" ) << QStringToQBitArray(QString("01000010111"))
+ << QStringToQBitArray(QString("101000011"))
+ << QStringToQBitArray(QString("11100011011"));
+
+ QTest::newRow( "data5" ) << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString("00101100111"))
+ << QStringToQBitArray(QString("00101100111"));
+
+ QTest::newRow( "data6" ) << QStringToQBitArray(QString("00101100111"))
+ << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString("00101100111"));
+
+ QTest::newRow( "data7" ) << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString());
+}
+
+void tst_QBitArray::operator_xoreq()
+{
+ QFETCH(QBitArray, input1);
+ QFETCH(QBitArray, input2);
+ QFETCH(QBitArray, res);
+
+ input1^=input2;
+
+ QCOMPARE(input1, res);
+}
+
+
+void tst_QBitArray::operator_neg_data()
+{
+ QTest::addColumn<QBitArray>("input");
+ QTest::addColumn<QBitArray>("res");
+
+ QTest::newRow( "data0" ) << QStringToQBitArray(QString("11111111"))
+ << QStringToQBitArray(QString("00000000"));
+
+ QTest::newRow( "data1" ) << QStringToQBitArray(QString("11011011"))
+ << QStringToQBitArray(QString("00100100"));
+
+ QTest::newRow( "data2" ) << QStringToQBitArray(QString("00000000"))
+ << QStringToQBitArray(QString("11111111"));
+
+ QTest::newRow( "data3" ) << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString());
+
+ QTest::newRow( "data4" ) << QStringToQBitArray("1")
+ << QStringToQBitArray("0");
+
+ QTest::newRow( "data5" ) << QStringToQBitArray("0")
+ << QStringToQBitArray("1");
+
+ QTest::newRow( "data6" ) << QStringToQBitArray("01")
+ << QStringToQBitArray("10");
+
+ QTest::newRow( "data7" ) << QStringToQBitArray("1110101")
+ << QStringToQBitArray("0001010");
+
+ QTest::newRow( "data8" ) << QStringToQBitArray("01110101")
+ << QStringToQBitArray("10001010");
+
+ QTest::newRow( "data9" ) << QStringToQBitArray("011101010")
+ << QStringToQBitArray("100010101");
+
+ QTest::newRow( "data10" ) << QStringToQBitArray("0111010101111010")
+ << QStringToQBitArray("1000101010000101");
+}
+
+void tst_QBitArray::operator_neg()
+{
+ QFETCH(QBitArray, input);
+ QFETCH(QBitArray, res);
+
+ input = ~input;
+
+ QCOMPARE(input, res);
+}
+
+void tst_QBitArray::datastream_data()
+{
+ QTest::addColumn<QString>("bitField");
+ QTest::addColumn<int>("numBits");
+ QTest::addColumn<int>("onBits");
+
+ QTest::newRow("empty") << QString() << 0 << 0;
+ QTest::newRow("1") << QString("1") << 1 << 1;
+ QTest::newRow("101") << QString("101") << 3 << 2;
+ QTest::newRow("101100001") << QString("101100001") << 9 << 4;
+ QTest::newRow("101100001101100001") << QString("101100001101100001") << 18 << 8;
+ QTest::newRow("101100001101100001101100001101100001") << QString("101100001101100001101100001101100001") << 36 << 16;
+ QTest::newRow("00000000000000000000000000000000000") << QString("00000000000000000000000000000000000") << 35 << 0;
+ QTest::newRow("11111111111111111111111111111111111") << QString("11111111111111111111111111111111111") << 35 << 35;
+ QTest::newRow("11111111111111111111111111111111") << QString("11111111111111111111111111111111") << 32 << 32;
+ QTest::newRow("11111111111111111111111111111111111111111111111111111111")
+ << QString("11111111111111111111111111111111111111111111111111111111") << 56 << 56;
+ QTest::newRow("00000000000000000000000000000000000") << QString("00000000000000000000000000000000000") << 35 << 0;
+ QTest::newRow("00000000000000000000000000000000") << QString("00000000000000000000000000000000") << 32 << 0;
+ QTest::newRow("00000000000000000000000000000000000000000000000000000000")
+ << QString("00000000000000000000000000000000000000000000000000000000") << 56 << 0;
+}
+
+void tst_QBitArray::datastream()
+{
+ QFETCH(QString, bitField);
+ QFETCH(int, numBits);
+ QFETCH(int, onBits);
+
+ QBuffer buffer;
+ QVERIFY(buffer.open(QBuffer::ReadWrite));
+ QDataStream stream(&buffer);
+
+ QBitArray bits(bitField.size());
+ for (int i = 0; i < bitField.size(); ++i) {
+ if (bitField.at(i) == QLatin1Char('1'))
+ bits.setBit(i);
+ }
+
+ QCOMPARE(bits.count(), numBits);
+ QCOMPARE(bits.count(true), onBits);
+ QCOMPARE(bits.count(false), numBits - onBits);
+
+ stream << bits << bits << bits;
+ buffer.close();
+
+ QCOMPARE(stream.status(), QDataStream::Ok);
+
+ QVERIFY(buffer.open(QBuffer::ReadWrite));
+ QDataStream stream2(&buffer);
+
+ QBitArray array1, array2, array3;
+ stream2 >> array1 >> array2 >> array3;
+
+ QCOMPARE(array1.count(), numBits);
+ QCOMPARE(array1.count(true), onBits);
+ QCOMPARE(array1.count(false), numBits - onBits);
+
+ QCOMPARE(array1, bits);
+ QCOMPARE(array2, bits);
+ QCOMPARE(array3, bits);
+}
+
+void tst_QBitArray::invertOnNull() const
+{
+ QBitArray a;
+ QCOMPARE(a = ~a, QBitArray());
+}
+
+void tst_QBitArray::operator_noteq_data()
+{
+ QTest::addColumn<QBitArray>("input1");
+ QTest::addColumn<QBitArray>("input2");
+ QTest::addColumn<bool>("res");
+
+ QTest::newRow("data0") << QStringToQBitArray(QString("11111111"))
+ << QStringToQBitArray(QString("00101100"))
+ << true;
+
+ QTest::newRow("data1") << QStringToQBitArray(QString("11011011"))
+ << QStringToQBitArray(QString("11011011"))
+ << false;
+
+ QTest::newRow("data2") << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString("00101100111"))
+ << true;
+
+ QTest::newRow("data3") << QStringToQBitArray(QString())
+ << QStringToQBitArray(QString())
+ << false;
+
+ QTest::newRow("data4") << QStringToQBitArray(QString("00101100"))
+ << QStringToQBitArray(QString("11111111"))
+ << true;
+
+ QTest::newRow("data5") << QStringToQBitArray(QString("00101100111"))
+ << QStringToQBitArray(QString())
+ << true;
+}
+
+void tst_QBitArray::operator_noteq()
+{
+ QFETCH(QBitArray, input1);
+ QFETCH(QBitArray, input2);
+ QFETCH(bool, res);
+
+ bool b = input1 != input2;
+ QCOMPARE(b, res);
+}
+
+void tst_QBitArray::resize()
+{
+ // -- check that a resize handles the bits correctly
+ QBitArray a = QStringToQBitArray(QString("11"));
+ a.resize(10);
+ QVERIFY(a.size() == 10);
+ QCOMPARE( a, QStringToQBitArray(QString("1100000000")) );
+
+ a.setBit(9);
+ a.resize(9);
+ // now the bit in a should have been gone:
+ QCOMPARE( a, QStringToQBitArray(QString("110000000")) );
+
+ // grow the array back and check the new bit
+ a.resize(10);
+ QCOMPARE( a, QStringToQBitArray(QString("1100000000")) );
+
+ // other test with and
+ a.resize(9);
+ QBitArray b = QStringToQBitArray(QString("1111111111"));
+ b &= a;
+ QCOMPARE( b, QStringToQBitArray(QString("1100000000")) );
+
+}
+
+QTEST_APPLESS_MAIN(tst_QBitArray)
+#include "tst_qbitarray.moc"
diff --git a/tests/auto/corelib/tools/qbytearray/.gitattributes b/tests/auto/corelib/tools/qbytearray/.gitattributes
new file mode 100644
index 0000000000..e04709aa2e
--- /dev/null
+++ b/tests/auto/corelib/tools/qbytearray/.gitattributes
@@ -0,0 +1 @@
+rfc3252.txt -crlf
diff --git a/tests/auto/corelib/tools/qbytearray/.gitignore b/tests/auto/corelib/tools/qbytearray/.gitignore
new file mode 100644
index 0000000000..3de7c3fab5
--- /dev/null
+++ b/tests/auto/corelib/tools/qbytearray/.gitignore
@@ -0,0 +1 @@
+tst_qbytearray
diff --git a/tests/auto/corelib/tools/qbytearray/qbytearray.pro b/tests/auto/corelib/tools/qbytearray/qbytearray.pro
new file mode 100644
index 0000000000..2c58db6b84
--- /dev/null
+++ b/tests/auto/corelib/tools/qbytearray/qbytearray.pro
@@ -0,0 +1,21 @@
+load(qttest_p4)
+SOURCES += tst_qbytearray.cpp
+
+
+QT = core core-private
+
+wince*|symbian {
+ addFile.files = rfc3252.txt
+ addFile.path = .
+ DEPLOYMENT += addFile
+}
+
+wince* {
+ DEFINES += SRCDIR=\\\"./\\\"
+} else:symbian {
+ TARGET.EPOCHEAPSIZE="0x100 0x800000"
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qbytearray/rfc3252.txt b/tests/auto/corelib/tools/qbytearray/rfc3252.txt
new file mode 100644
index 0000000000..b80c61bf0a
--- /dev/null
+++ b/tests/auto/corelib/tools/qbytearray/rfc3252.txt
@@ -0,0 +1,899 @@
+
+
+
+
+
+
+Network Working Group H. Kennedy
+Request for Comments: 3252 Mimezine
+Category: Informational 1 April 2002
+
+
+ Binary Lexical Octet Ad-hoc Transport
+
+Status of this Memo
+
+ This memo provides information for the Internet community. It does
+ not specify an Internet standard of any kind. Distribution of this
+ memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2002). All Rights Reserved.
+
+Abstract
+
+ This document defines a reformulation of IP and two transport layer
+ protocols (TCP and UDP) as XML applications.
+
+1. Introduction
+
+1.1. Overview
+
+ This document describes the Binary Lexical Octet Ad-hoc Transport
+ (BLOAT): a reformulation of a widely-deployed network-layer protocol
+ (IP [RFC791]), and two associated transport layer protocols (TCP
+ [RFC793] and UDP [RFC768]) as XML [XML] applications. It also
+ describes methods for transporting BLOAT over Ethernet and IEEE 802
+ networks as well as encapsulating BLOAT in IP for gatewaying BLOAT
+ across the public Internet.
+
+1.2. Motivation
+
+ The wild popularity of XML as a basis for application-level protocols
+ such as the Blocks Extensible Exchange Protocol [RFC3080], the Simple
+ Object Access Protocol [SOAP], and Jabber [JABBER] prompted
+ investigation into the possibility of extending the use of XML in the
+ protocol stack. Using XML at both the transport and network layer in
+ addition to the application layer would provide for an amazing amount
+ of power and flexibility while removing dependencies on proprietary
+ and hard-to-understand binary protocols. This protocol unification
+ would also allow applications to use a single XML parser for all
+ aspects of their operation, eliminating developer time spent figuring
+ out the intricacies of each new protocol, and moving the hard work of
+
+
+
+
+Kennedy Informational [Page 1]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+ parsing to the XML toolset. The use of XML also mitigates concerns
+ over "network vs. host" byte ordering which is at the root of many
+ network application bugs.
+
+1.3. Relation to Existing Protocols
+
+ The reformulations specified in this RFC follow as closely as
+ possible the spirit of the RFCs on which they are based, and so MAY
+ contain elements or attributes that would not be needed in a pure
+ reworking (e.g. length attributes, which are implicit in XML.)
+
+ The layering of network and transport protocols are maintained in
+ this RFC despite the optimizations that could be made if the line
+ were somewhat blurred (i.e. merging TCP and IP into a single, larger
+ element in the DTD) in order to foster future use of this protocol as
+ a basis for reformulating other protocols (such as ICMP.)
+
+ Other than the encoding, the behavioral aspects of each of the
+ existing protocols remain unchanged. Routing, address spaces, TCP
+ congestion control, etc. behave as specified in the extant standards.
+ Adapting to new standards and experimental algorithm heuristics for
+ improving performance will become much easier once the move to BLOAT
+ has been completed.
+
+1.4. Requirement Levels
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in BCP 14, RFC 2119
+ [RFC2119].
+
+2. IPoXML
+
+ This protocol MUST be implemented to be compliant with this RFC.
+ IPoXML is the root protocol REQUIRED for effective use of TCPoXML
+ (section 3.) and higher-level application protocols.
+
+ The DTD for this document type can be found in section 7.1.
+
+ The routing of IPoXML can be easily implemented on hosts with an XML
+ parser, as the regular structure lends itself handily to parsing and
+ validation of the document/datagram and then processing the
+ destination address, TTL, and checksum before sending it on to its
+ next-hop.
+
+ The reformulation of IPv4 was chosen over IPv6 [RFC2460] due to the
+ wider deployment of IPv4 and the fact that implementing IPv6 as XML
+ would have exceeded the 1500 byte Ethernet MTU.
+
+
+
+Kennedy Informational [Page 2]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+ All BLOAT implementations MUST use - and specify - the UTF-8 encoding
+ of RFC 2279 [RFC2279]. All BLOAT document/datagrams MUST be well-
+ formed and include the XMLDecl.
+
+2.1. IP Description
+
+ A number of items have changed (for the better) from the original IP
+ specification. Bit-masks, where present have been converted into
+ human-readable values. IP addresses are listed in their dotted-
+ decimal notation [RFC1123]. Length and checksum values are present
+ as decimal integers.
+
+ To calculate the length and checksum fields of the IP element, a
+ canonicalized form of the element MUST be used. The canonical form
+ SHALL have no whitespace (including newline characters) between
+ elements and only one space character between attributes. There
+ SHALL NOT be a space following the last attribute in an element.
+
+ An iterative method SHOULD be used to calculate checksums, as the
+ length field will vary based on the size of the checksum.
+
+ The payload element bears special attention. Due to the character
+ set restrictions of XML, the payload of IP datagrams (which MAY
+ contain arbitrary data) MUST be encoded for transport. This RFC
+ REQUIRES the contents of the payload to be encoded in the base-64
+ encoding of RFC 2045 [RFC2045], but removes the requirement that the
+ encoded output MUST be wrapped on 76-character lines.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Kennedy Informational [Page 3]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+2.2. Example Datagram
+
+ The following is an example IPoXML datagram with an empty payload:
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE ip PUBLIC "-//IETF//DTD BLOAT 1.0 IP//EN" "bloat.dtd">
+ <ip>
+ <header length="474">
+ <version value="4"/>
+ <tos precedence="Routine" delay="Normal" throughput="Normal"
+ relibility="Normal" reserved="0"/>
+ <total.length value="461"/>
+ <id value="1"/>
+ <flags reserved="0" df="dont" mf="last"/>
+ <offset value="0"/>
+ <ttl value="255"/>
+ <protocol value="6"/>
+ <checksum value="8707"/>
+ <source address="10.0.0.22"/>
+ <destination address="10.0.0.1"/>
+ <options>
+ <end copied="0" class="0" number="0"/>
+ </options>
+ <padding pad="0"/>
+ </header>
+ <payload>
+ </payload>
+ </ip>
+
+3. TCPoXML
+
+ This protocol MUST be implemented to be compliant with this RFC. The
+ DTD for this document type can be found in section 7.2.
+
+3.1. TCP Description
+
+ A number of items have changed from the original TCP specification.
+ Bit-masks, where present have been converted into human-readable
+ values. Length and checksum and port values are present as decimal
+ integers.
+
+ To calculate the length and checksum fields of the TCP element, a
+ canonicalized form of the element MUST be used as in section 2.1.
+
+ An iterative method SHOULD be used to calculate checksums as in
+ section 2.1.
+
+ The payload element MUST be encoded as in section 2.1.
+
+
+
+Kennedy Informational [Page 4]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+ The TCP offset element was expanded to a maximum of 255 from 16 to
+ allow for the increased size of the header in XML.
+
+ TCPoXML datagrams encapsulated by IPoXML MAY omit the <?xml?> header
+ as well as the <!DOCTYPE> declaration.
+
+3.2. Example Datagram
+
+ The following is an example TCPoXML datagram with an empty payload:
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE tcp PUBLIC "-//IETF//DTD BLOAT 1.0 TCP//EN" "bloat.dtd">
+ <tcp>
+ <tcp.header>
+ <src port="31415"/>
+ <dest port="42424"/>
+ <sequence number="322622954"/>
+ <acknowledgement number="689715995"/>
+ <offset number=""/>
+ <reserved value="0"/>
+ <control syn="1" ack="1"/>
+ <window size="1"/>
+ <urgent pointer="0"/>
+ <checksum value="2988"/>
+ <tcp.options>
+ <tcp.end kind="0"/>
+ </tcp.options>
+ <padding pad="0"/>
+ </tcp.header>
+ <payload>
+ </payload>
+ </tcp>
+
+4. UDPoXML
+
+ This protocol MUST be implemented to be compliant with this RFC. The
+ DTD for this document type can be found in section 7.3.
+
+4.1. UDP Description
+
+ A number of items have changed from the original UDP specification.
+ Bit-masks, where present have been converted into human-readable
+ values. Length and checksum and port values are present as decimal
+ integers.
+
+
+
+
+
+
+
+Kennedy Informational [Page 5]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+ To calculate the length and checksum fields of the UDP element, a
+ canonicalized form of the element MUST be used as in section 2.1. An
+ iterative method SHOULD be used to calculate checksums as in section
+ 2.1.
+
+ The payload element MUST be encoded as in section 2.1.
+
+ UDPoXML datagrams encapsulated by IPoXML MAY omit the <?xml?> header
+ as well as the <!DOCTYPE> declaration.
+
+4.2. Example Datagram
+
+ The following is an example UDPoXML datagram with an empty payload:
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE udp PUBLIC "-//IETF//DTD BLOAT 1.0 UDP//EN" "bloat.dtd">
+ <udp>
+ <udp.header>
+ <src port="31415"/>
+ <dest port="42424"/>
+ <udp.length value="143"/>
+ <checksum value="2988"/>
+ </udp.header>
+ <payload>
+ </payload>
+ </udp>
+
+5. Network Transport
+
+ This document provides for the transmission of BLOAT datagrams over
+ two common families of physical layer transport. Future RFCs will
+ address additional transports as routing vendors catch up to the
+ specification, and we begin to see BLOAT routed across the Internet
+ backbone.
+
+5.1. Ethernet
+
+ BLOAT is encapsulated in Ethernet datagrams as in [RFC894] with the
+ exception that the type field of the Ethernet frame MUST contain the
+ value 0xBEEF. The first 5 octets of the Ethernet frame payload will
+ be 0x3c 3f 78 6d 6c ("<?xml".)
+
+5.2. IEEE 802
+
+ BLOAT is encapsulated in IEEE 802 Networks as in [RFC1042] except
+ that the protocol type code for IPoXML is 0xBEEF.
+
+
+
+
+
+Kennedy Informational [Page 6]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+6. Gatewaying over IP
+
+ In order to facilitate the gradual introduction of BLOAT into the
+ public Internet, BLOAT MAY be encapsulated in IP as in [RFC2003] to
+ gateway between networks that run BLOAT natively on their LANs.
+
+7. DTDs
+
+ The Transport DTDs (7.2. and 7.3.) build on the definitions in the
+ Network DTD (7.1.)
+
+ The DTDs are referenced by their PubidLiteral and SystemLiteral (from
+ [XML]) although it is understood that most IPoXML implementations
+ will not need to pull down the DTD, as it will normally be embedded
+ in the implementation, and presents something of a catch-22 if you
+ need to load part of your network protocol over the network.
+
+7.1. IPoXML DTD
+
+ <!--
+ DTD for IP over XML.
+ Refer to this DTD as:
+
+ <!DOCTYPE ip PUBLIC "-//IETF//DTD BLOAT 1.0 IP//EN" "bloat.dtd">
+ -->
+ <!--
+ DTD data types:
+
+ Digits [0..9]+
+
+ Precedence "NetworkControl | InternetworkControl |
+ CRITIC | FlashOverride | Flash | Immediate |
+ Priority | Routine"
+
+ IP4Addr "dotted-decimal" notation of [RFC1123]
+
+ Class [0..3]
+
+ Sec "Unclassified | Confidential | EFTO | MMMM | PROG |
+ Restricted | Secret | Top Secret | Reserved"
+
+ Compartments [0..65535]
+
+ Handling [0..65535]
+
+ TCC [0..16777216]
+
+ -->
+
+
+
+Kennedy Informational [Page 7]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+ <!ENTITY % Digits "CDATA">
+ <!ENTITY % Precedence "CDATA">
+ <!ENTITY % IP4Addr "CDATA">
+ <!ENTITY % Class "CDATA">
+ <!ENTITY % Sec "CDATA">
+ <!ENTITY % Compartments "CDATA">
+ <!ENTITY % Handling "CDATA">
+ <!ENTITY % TCC "CDATA">
+
+ <!ELEMENT ip (header, payload)>
+
+ <!ELEMENT header (version, tos, total.length, id, flags, offset, ttl,
+ protocol, checksum, source, destination, options,
+ padding)>
+ <!-- length of header in 32-bit words -->
+ <!ATTLIST header
+ length %Digits; #REQUIRED>
+
+ <!ELEMENT version EMPTY>
+ <!-- ip version. SHOULD be "4" -->
+ <!ATTLIST version
+ value %Digits; #REQUIRED>
+
+ <!ELEMENT tos EMPTY>
+ <!ATTLIST tos
+ precedence %Precedence; #REQUIRED
+ delay (normal | low) #REQUIRED
+ throughput (normal | high) #REQUIRED
+ relibility (normal | high) #REQUIRED
+ reserved CDATA #FIXED "0">
+
+ <!ELEMENT total.length EMPTY>
+ <!--
+ total length of datagram (header and payload) in octets, MUST be
+ less than 65,535 (and SHOULD be less than 1024 for IPoXML on local
+ ethernets).
+ -->
+ <!ATTLIST total.length
+ value %Digits; #REQUIRED>
+
+ <!ELEMENT id EMPTY>
+ <!-- 0 <= id <= 65,535 -->
+ <!ATTLIST id
+ value %Digits; #REQUIRED>
+
+ <!ELEMENT flags EMPTY>
+ <!-- df = don't fragment, mf = more fragments -->
+ <!ATTLIST flags
+
+
+
+Kennedy Informational [Page 8]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+ reserved CDATA #FIXED "0"
+ df (may|dont) #REQUIRED
+ mf (last|more) #REQUIRED>
+
+ <!ELEMENT offset EMPTY>
+ <!-- 0 <= offset <= 8192 measured in 8 octet (64-bit) chunks -->
+ <!ATTLIST offset
+ value %Digits; #REQUIRED>
+
+ <!ELEMENT ttl EMPTY>
+ <!-- 0 <= ttl <= 255 -->
+ <!ATTLIST ttl
+ value %Digits; #REQUIRED>
+
+ <!ELEMENT protocol EMPTY>
+ <!-- 0 <= protocol <= 255 (per IANA) -->
+ <!ATTLIST protocol
+ value %Digits; #REQUIRED>
+
+ <!ELEMENT checksum EMPTY>
+ <!-- 0 <= checksum <= 65535 (over header only) -->
+ <!ATTLIST checksum
+ value %Digits; #REQUIRED>
+
+ <!ELEMENT source EMPTY>
+ <!ATTLIST source
+ address %IP4Addr; #REQUIRED>
+
+ <!ELEMENT destination EMPTY>
+ <!ATTLIST destination
+ address %IP4Addr; #REQUIRED>
+
+ <!ELEMENT options ( end | noop | security | loose | strict | record
+ | stream | timestamp )*>
+
+ <!ELEMENT end EMPTY>
+ <!ATTLIST end
+ copied (0|1) #REQUIRED
+ class CDATA #FIXED "0"
+ number CDATA #FIXED "0">
+
+ <!ELEMENT noop EMPTY>
+ <!ATTLIST noop
+ copied (0|1) #REQUIRED
+ class CDATA #FIXED "0"
+ number CDATA #FIXED "1">
+
+ <!ELEMENT security EMPTY>
+
+
+
+Kennedy Informational [Page 9]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+ <!ATTLIST security
+ copied CDATA #FIXED "1"
+ class CDATA #FIXED "0"
+ number CDATA #FIXED "2"
+ length CDATA #FIXED "11"
+ security %Sec; #REQUIRED
+ compartments %Compartments; #REQUIRED
+ handling %Handling; #REQUIRED
+ tcc %TCC; #REQUIRED>
+ <!ELEMENT loose (hop)+>
+ <!ATTLIST loose
+ copied CDATA #FIXED "1"
+ class CDATA #FIXED "0"
+ number CDATA #FIXED "3"
+ length %Digits; #REQUIRED
+ pointer %Digits; #REQUIRED>
+
+ <!ELEMENT hop EMPTY>
+ <!ATTLIST hop
+ address %IP4Addr; #REQUIRED>
+
+ <!ELEMENT strict (hop)+>
+ <!ATTLIST strict
+ copied CDATA #FIXED "1"
+ class CDATA #FIXED "0"
+ number CDATA #FIXED "9"
+ length %Digits; #REQUIRED
+ pointer %Digits; #REQUIRED>
+
+ <!ELEMENT record (hop)+>
+ <!ATTLIST record
+ copied CDATA #FIXED "0"
+ class CDATA #FIXED "0"
+ number CDATA #FIXED "7"
+ length %Digits; #REQUIRED
+ pointer %Digits; #REQUIRED>
+
+ <!ELEMENT stream EMPTY>
+ <!-- 0 <= id <= 65,535 -->
+ <!ATTLIST stream
+ copied CDATA #FIXED "1"
+ class CDATA #FIXED "0"
+ number CDATA #FIXED "8"
+ length CDATA #FIXED "4"
+ id %Digits; #REQUIRED>
+
+ <!ELEMENT timestamp (tstamp)+>
+ <!-- 0 <= oflw <=15 -->
+
+
+
+Kennedy Informational [Page 10]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+ <!ATTLIST timestamp
+ copied CDATA #FIXED "0"
+ class CDATA #FIXED "2"
+ number CDATA #FIXED "4"
+ length %Digits; #REQUIRED
+ pointer %Digits; #REQUIRED
+ oflw %Digits; #REQUIRED
+ flag (0 | 1 | 3) #REQUIRED>
+
+ <!ELEMENT tstamp EMPTY>
+ <!ATTLIST tstamp
+ time %Digits; #REQUIRED
+ address %IP4Addr; #IMPLIED>
+ <!--
+ padding to bring header to 32-bit boundary.
+ pad MUST be "0"*
+ -->
+ <!ELEMENT padding EMPTY>
+ <!ATTLIST padding
+ pad CDATA #REQUIRED>
+
+ <!-- payload MUST be encoded as base-64 [RFC2045], as modified
+ by section 2.1 of this RFC -->
+ <!ELEMENT payload (CDATA)>
+
+7.2. TCPoXML DTD
+
+ <!--
+ DTD for TCP over XML.
+ Refer to this DTD as:
+
+ <!DOCTYPE tcp PUBLIC "-//IETF//DTD BLOAT 1.0 TCP//EN" "bloat.dtd">
+ -->
+
+ <!-- the pseudoheader is only included for checksum calculations -->
+ <!ELEMENT tcp (tcp.pseudoheader?, tcp.header, payload)>
+
+ <!ELEMENT tcp.header (src, dest, sequence, acknowledgement, offset,
+ reserved, control, window, checksum, urgent,
+ tcp.options, padding)>
+
+ <!ELEMENT src EMPTY>
+ <!-- 0 <= port <= 65,535 -->
+ <!ATTLIST src
+ port %Digits; #REQUIRED>
+
+ <!ELEMENT dest EMPTY>
+ <!-- 0 <= port <= 65,535 -->
+
+
+
+Kennedy Informational [Page 11]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+ <!ATTLIST dest
+ port %Digits; #REQUIRED>
+
+ <!ELEMENT sequence EMPTY>
+ <!-- 0 <= number <= 4294967295 -->
+ <!ATTLIST sequence
+ number %Digits; #REQUIRED>
+
+ <!ELEMENT acknowledgement EMPTY>
+ <!-- 0 <= number <= 4294967295 -->
+ <!ATTLIST acknowledgement
+ number %Digits; #REQUIRED>
+
+ <!ELEMENT offset EMPTY>
+ <!-- 0 <= number <= 255 -->
+ <!ATTLIST offset
+ number %Digits; #REQUIRED>
+
+ <!ELEMENT reserved EMPTY>
+ <!ATTLIST reserved
+ value CDATA #FIXED "0">
+
+ <!ELEMENT control EMPTY>
+ <!ATTLIST control
+ urg (0|1) #IMPLIED
+ ack (0|1) #IMPLIED
+ psh (0|1) #IMPLIED
+ rst (0|1) #IMPLIED
+ syn (0|1) #IMPLIED
+ fin (0|1) #IMPLIED>
+
+ <!ELEMENT window EMPTY>
+ <!-- 0 <= size <= 65,535 -->
+ <!ATTLIST window
+ size %Digits; #REQUIRED>
+
+ <!--
+ checksum as in ip, but with
+ the following pseudo-header added into the tcp element:
+ -->
+ <!ELEMENT tcp.pseudoheader (source, destination, protocol,
+ tcp.length)>
+
+ <!--
+ tcp header + data length in octets. does not include the size of
+
+ the pseudoheader.
+ -->
+
+
+
+Kennedy Informational [Page 12]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+ <!ELEMENT tcp.length EMPTY>
+ <!ATTLIST tcp.length
+ value %Digits; #REQUIRED>
+
+ <!ELEMENT urgent EMPTY>
+ <!-- 0 <= pointer <= 65,535 -->
+ <!ATTLIST urgent
+ pointer %Digits; #REQUIRED>
+
+ <!ELEMENT tcp.options (tcp.end | tcp.noop | tcp.mss)+>
+
+ <!ELEMENT tcp.end EMPTY>
+ <!ATTLIST tcp.end
+ kind CDATA #FIXED "0">
+
+ <!ELEMENT tcp.noop EMPTY>
+ <!ATTLIST tcp.noop
+ kind CDATA #FIXED "1">
+
+ <!ELEMENT tcp.mss EMPTY>
+ <!ATTLIST tcp.mss
+ kind CDATA #FIXED "2"
+ length CDATA #FIXED "4"
+ size %Digits; #REQUIRED>
+
+7.3. UDPoXML DTD
+
+ <!--
+ DTD for UDP over XML.
+ Refer to this DTD as:
+
+ <!DOCTYPE udp PUBLIC "-//IETF//DTD BLOAT 1.0 UDP//EN" "bloat.dtd">
+ -->
+
+ <!ELEMENT udp (udp.pseudoheader?, udp.header, payload)>
+
+ <!ELEMENT udp.header (src, dest, udp.length, checksum)>
+
+ <!ELEMENT udp.pseudoheader (source, destination, protocol,
+ udp.length)>
+
+ <!--
+ udp header + data length in octets. does not include the size of
+ the pseudoheader.
+ -->
+ <!ELEMENT udp.length EMPTY>
+ <!ATTLIST udp.length
+ value %Digits; #REQUIRED>
+
+
+
+Kennedy Informational [Page 13]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+8. Security Considerations
+
+ XML, as a subset of SGML, has the same security considerations as
+ specified in SGML Media Types [RFC1874]. Security considerations
+ that apply to IP, TCP and UDP also likely apply to BLOAT as it does
+ not attempt to correct for issues not related to message format.
+
+9. References
+
+ [JABBER] Miller, J., "Jabber", draft-miller-jabber-00.txt,
+ February 2002. (Work in Progress)
+
+ [RFC768] Postel, J., "User Datagram Protocol", STD 6, RFC 768,
+ August 1980.
+
+ [RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791,
+ September 1981.
+
+ [RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC
+ 793, September 1981.
+
+ [RFC894] Hornig, C., "Standard for the Transmission of IP
+ Datagrams over Ethernet Networks.", RFC 894, April 1984.
+
+ [RFC1042] Postel, J. and J. Reynolds, "Standard for the
+ Transmission of IP Datagrams Over IEEE 802 Networks", STD
+ 43, RFC 1042, February 1988.
+
+ [RFC1123] Braden, R., "Requirements for Internet Hosts -
+ Application and Support", RFC 1123, October 1989.
+
+ [RFC1874] Levinson, E., "SGML Media Types", RFC 1874, December
+ 1995.
+
+ [RFC2003] Perkins, C., "IP Encapsulation within IP", RFC 2003,
+ October 1996.
+
+ [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
+ Extensions (MIME) Part One: Format of Internet Message
+ Bodies", RFC 2045, November 1996.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC2279] Yergeau, F., "UTF-8, a transformation format of ISO
+ 10646", RFC 2279, January 1998.
+
+
+
+
+
+Kennedy Informational [Page 14]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+ [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
+ (IPv6) Specification", RFC 2460, December 1998.
+
+ [RFC3080] Rose, M., "The Blocks Extensible Exchange Protocol Core",
+ RFC 3080, March 2001.
+
+ [SOAP] Box, D., Ehnebuske, D., Kakivaya, G., Layman, A.,
+ Mendelsohn, N., Nielsen, H. F., Thatte, S. Winer, D.,
+ "Simple Object Access Protocol (SOAP) 1.1" World Wide Web
+ Consortium Note, May 2000 http://www.w3.org/TR/SOAP/
+
+ [XML] Bray, T., Paoli, J., Sperberg-McQueen, C. M., "Extensible
+ Markup Language (XML)" World Wide Web Consortium
+ Recommendation REC- xml-19980210.
+ http://www.w3.org/TR/1998/REC-xml-19980210
+
+10. Author's Address
+
+ Hugh Kennedy
+ Mimezine
+ 1060 West Addison
+ Chicago, IL 60613
+ USA
+
+ EMail: kennedyh@engin.umich.edu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Kennedy Informational [Page 15]
+
+RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002
+
+
+11. Full Copyright Statement
+
+ Copyright (C) The Internet Society (2002). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Kennedy Informational [Page 16]
+
diff --git a/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp b/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
new file mode 100644
index 0000000000..5f036f37fe
--- /dev/null
+++ b/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
@@ -0,0 +1,1569 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qbytearray.h>
+#include <qfile.h>
+#include <limits.h>
+#include <private/qtools_p.h>
+#if defined(Q_OS_WINCE)
+#include <qcoreapplication.h>
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#if defined(Q_OS_SYMBIAN)
+#define SRCDIR ""
+#endif
+
+class tst_QByteArray : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QByteArray();
+ virtual ~tst_QByteArray();
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void swap();
+ void qCompress_data();
+#ifndef QT_NO_COMPRESS
+ void qCompress();
+ void qUncompress_data();
+ void qUncompress();
+ void qCompressionZeroTermination();
+#endif
+ void constByteArray();
+ void leftJustified();
+ void rightJustified();
+ void startsWith_data();
+ void startsWith();
+ void startsWith_char();
+ void endsWith_data();
+ void endsWith();
+ void endsWith_char();
+ void split_data();
+ void split();
+ void base64_data();
+ void base64();
+ void fromBase64_data();
+ void fromBase64();
+ void qvsnprintf();
+ void qstrlen();
+ void qstrnlen();
+ void qstrcpy();
+ void qstrncpy();
+ void qstricmp_data();
+ void qstricmp();
+ void qstricmp_singularities();
+ void qstrnicmp_singularities();
+ void chop_data();
+ void chop();
+ void prepend();
+ void append();
+ void insert();
+ void remove_data();
+ void remove();
+ void replace_data();
+ void replace();
+ void replaceWithSpecifiedLength();
+ void indexOf_data();
+ void indexOf();
+ void lastIndexOf_data();
+ void lastIndexOf();
+ void toULong_data();
+ void toULong();
+ void toULongLong_data();
+ void toULongLong();
+
+ void number();
+ void toInt_data();
+ void toInt();
+ void qAllocMore();
+
+ void resizeAfterFromRawData();
+ void appendAfterFromRawData();
+ void toFromHex_data();
+ void toFromHex();
+ void toFromPercentEncoding();
+
+ void compare_data();
+ void compare();
+ void compareCharStar_data();
+ void compareCharStar();
+
+ void repeatedSignature() const;
+ void repeated() const;
+ void repeated_data() const;
+
+ void byteRefDetaching() const;
+
+ void reserve();
+
+ void literals();
+};
+
+tst_QByteArray::tst_QByteArray()
+{
+ qRegisterMetaType<qulonglong>("qulonglong");
+}
+
+tst_QByteArray::~tst_QByteArray()
+{
+}
+
+void tst_QByteArray::initTestCase()
+{
+}
+
+void tst_QByteArray::cleanupTestCase()
+{
+}
+
+void tst_QByteArray::init()
+{
+}
+
+void tst_QByteArray::cleanup()
+{
+}
+
+void tst_QByteArray::qCompress_data()
+{
+ QTest::addColumn<QByteArray>("ba");
+
+#ifndef Q_OS_WINCE
+ const int size1 = 1024*1024;
+#else
+ const int size1 = 1024;
+#endif
+ QByteArray ba1( size1, 0 );
+
+ QTest::newRow( "00" ) << QByteArray();
+
+ int i;
+ for ( i=0; i<size1; i++ )
+ ba1[i] = (char)( i / 1024 );
+ QTest::newRow( "01" ) << ba1;
+
+ for ( i=0; i<size1; i++ )
+ ba1[i] = (char)( i % 256 );
+ QTest::newRow( "02" ) << ba1;
+
+ ba1.fill( 'A' );
+ QTest::newRow( "03" ) << ba1;
+
+#if defined(Q_OS_WINCE)
+ int tmpArgc = 0;
+ char** tmpArgv = 0;
+ QCoreApplication app(tmpArgc, tmpArgv);
+#endif
+ QFile file( SRCDIR "rfc3252.txt" );
+ QVERIFY( file.open(QIODevice::ReadOnly) );
+ QTest::newRow( "04" ) << file.readAll();
+}
+
+#ifndef QT_NO_COMPRESS
+void tst_QByteArray::qCompress()
+{
+ QFETCH( QByteArray, ba );
+ QByteArray compressed = ::qCompress( ba );
+ //qDebug( "size uncompressed: %d size compressed: %d", ba.size(), compressed.size() );
+ QTEST( ::qUncompress( compressed ), "ba" );
+}
+
+/*
+ Just making sure it doesn't crash on invalid data.
+*/
+void tst_QByteArray::qUncompress_data()
+{
+ QTest::addColumn<QByteArray>("in");
+ QTest::addColumn<QByteArray>("out");
+
+ QTest::newRow("0x00000000") << QByteArray("\x00\x00\x00\x00", 4) << QByteArray();
+ QTest::newRow("0x000000ff") << QByteArray("\x00\x00\x00\xff", 4) << QByteArray();
+ QTest::newRow("0x3f000000") << QByteArray("\x3f\x00\x00\x00", 4) << QByteArray();
+ QTest::newRow("0x3fffffff") << QByteArray("\x3f\xff\xff\xff", 4) << QByteArray();
+ QTest::newRow("0x7fffff00") << QByteArray("\x7f\xff\xff\x00", 4) << QByteArray();
+ QTest::newRow("0x7fffffff") << QByteArray("\x7f\xff\xff\xff", 4) << QByteArray();
+ QTest::newRow("0x80000000") << QByteArray("\x80\x00\x00\x00", 4) << QByteArray();
+ QTest::newRow("0x800000ff") << QByteArray("\x80\x00\x00\xff", 4) << QByteArray();
+ QTest::newRow("0xcf000000") << QByteArray("\xcf\x00\x00\x00", 4) << QByteArray();
+ QTest::newRow("0xcfffffff") << QByteArray("\xcf\xff\xff\xff", 4) << QByteArray();
+ QTest::newRow("0xffffff00") << QByteArray("\xff\xff\xff\x00", 4) << QByteArray();
+ QTest::newRow("0xffffffff") << QByteArray("\xff\xff\xff\xff", 4) << QByteArray();
+}
+
+void tst_QByteArray::qUncompress()
+{
+ QFETCH(QByteArray, in);
+ QFETCH(QByteArray, out);
+
+#if defined Q_OS_HPUX && !defined __ia64 && defined Q_CC_GNU
+ QSKIP("Corrupt data causes this tests to lock up on HP-UX / PA-RISC with gcc", SkipAll);
+#elif defined Q_OS_SOLARIS
+ QSKIP("Corrupt data causes this tests to lock up on Solaris", SkipAll);
+#elif defined Q_OS_QNX
+ QSKIP("Corrupt data causes this test to lock up on QNX", SkipAll);
+#elif defined Q_OS_WIN
+ QSKIP("Corrupt data causes this test to lock up on Windows", SkipAll);
+#endif
+
+ QByteArray res;
+ res = ::qUncompress(in);
+ QCOMPARE(res, out);
+
+ res = ::qUncompress(in + "blah");
+ QCOMPARE(res, out);
+}
+
+void tst_QByteArray::qCompressionZeroTermination()
+{
+ QString s = "Hello, I'm a string.";
+ QByteArray ba = ::qUncompress(::qCompress(s.toLocal8Bit()));
+ QVERIFY((int) *(ba.data() + ba.size()) == 0);
+}
+
+#endif
+
+void tst_QByteArray::constByteArray()
+{
+ const char *ptr = "abc";
+ QByteArray cba = QByteArray::fromRawData(ptr, 3);
+ QVERIFY(cba.constData() == ptr);
+ cba.squeeze();
+ QVERIFY(cba.constData() == ptr);
+ cba.detach();
+ QVERIFY(cba.size() == 3);
+ QVERIFY(cba.capacity() == 3);
+ QVERIFY(cba.constData() != ptr);
+ QVERIFY(cba.constData()[0] == 'a');
+ QVERIFY(cba.constData()[1] == 'b');
+ QVERIFY(cba.constData()[2] == 'c');
+ QVERIFY(cba.constData()[3] == '\0');
+}
+
+void tst_QByteArray::leftJustified()
+{
+ QByteArray a;
+ a = "ABC";
+ QCOMPARE(a.leftJustified(5,'-'), QByteArray("ABC--"));
+ QCOMPARE(a.leftJustified(4,'-'), QByteArray("ABC-"));
+ QCOMPARE(a.leftJustified(4), QByteArray("ABC "));
+ QCOMPARE(a.leftJustified(3), QByteArray("ABC"));
+ QCOMPARE(a.leftJustified(2), QByteArray("ABC"));
+ QCOMPARE(a.leftJustified(1), QByteArray("ABC"));
+ QCOMPARE(a.leftJustified(0), QByteArray("ABC"));
+
+ QByteArray n;
+ QVERIFY(!n.leftJustified(3).isNull()); // I expected true
+ QCOMPARE(a.leftJustified(4,' ',true), QByteArray("ABC "));
+ QCOMPARE(a.leftJustified(3,' ',true), QByteArray("ABC"));
+ QCOMPARE(a.leftJustified(2,' ',true), QByteArray("AB"));
+ QCOMPARE(a.leftJustified(1,' ',true), QByteArray("A"));
+ QCOMPARE(a.leftJustified(0,' ',true), QByteArray(""));
+}
+
+void tst_QByteArray::rightJustified()
+{
+ QByteArray a;
+ a="ABC";
+ QCOMPARE(a.rightJustified(5,'-'),QByteArray("--ABC"));
+ QCOMPARE(a.rightJustified(4,'-'),QByteArray("-ABC"));
+ QCOMPARE(a.rightJustified(4),QByteArray(" ABC"));
+ QCOMPARE(a.rightJustified(3),QByteArray("ABC"));
+ QCOMPARE(a.rightJustified(2),QByteArray("ABC"));
+ QCOMPARE(a.rightJustified(1),QByteArray("ABC"));
+ QCOMPARE(a.rightJustified(0),QByteArray("ABC"));
+
+ QByteArray n;
+ QVERIFY(!n.rightJustified(3).isNull()); // I expected true
+ QCOMPARE(a.rightJustified(4,'-',true),QByteArray("-ABC"));
+ QCOMPARE(a.rightJustified(4,' ',true),QByteArray(" ABC"));
+ QCOMPARE(a.rightJustified(3,' ',true),QByteArray("ABC"));
+ QCOMPARE(a.rightJustified(2,' ',true),QByteArray("AB"));
+ QCOMPARE(a.rightJustified(1,' ',true),QByteArray("A"));
+ QCOMPARE(a.rightJustified(0,' ',true),QByteArray(""));
+ QCOMPARE(a,QByteArray("ABC"));
+}
+
+void tst_QByteArray::startsWith_data()
+{
+ QTest::addColumn<QByteArray>("ba");
+ QTest::addColumn<QByteArray>("sw");
+ QTest::addColumn<bool>("result");
+
+ QTest::newRow("01") << QByteArray() << QByteArray() << true;
+ QTest::newRow("02") << QByteArray() << QByteArray("") << true;
+ QTest::newRow("03") << QByteArray() << QByteArray("hallo") << false;
+
+ QTest::newRow("04") << QByteArray("") << QByteArray() << true;
+ QTest::newRow("05") << QByteArray("") << QByteArray("") << true;
+ QTest::newRow("06") << QByteArray("") << QByteArray("h") << false;
+
+ QTest::newRow("07") << QByteArray("hallo") << QByteArray("h") << true;
+ QTest::newRow("08") << QByteArray("hallo") << QByteArray("hallo") << true;
+ QTest::newRow("09") << QByteArray("hallo") << QByteArray("") << true;
+ QTest::newRow("10") << QByteArray("hallo") << QByteArray("hallohallo") << false;
+ QTest::newRow("11") << QByteArray("hallo") << QByteArray() << true;
+}
+
+void tst_QByteArray::startsWith()
+{
+ QFETCH(QByteArray, ba);
+ QFETCH(QByteArray, sw);
+ QFETCH(bool, result);
+
+ QVERIFY(ba.startsWith(sw) == result);
+
+ if (sw.isNull()) {
+ QVERIFY(ba.startsWith((char*)0) == result);
+ } else {
+ QVERIFY(ba.startsWith(sw.data()) == result);
+ }
+}
+
+void tst_QByteArray::startsWith_char()
+{
+ QVERIFY(QByteArray("hallo").startsWith('h'));
+ QVERIFY(!QByteArray("hallo").startsWith('\0'));
+ QVERIFY(!QByteArray("hallo").startsWith('o'));
+ QVERIFY(QByteArray("h").startsWith('h'));
+ QVERIFY(!QByteArray("h").startsWith('\0'));
+ QVERIFY(!QByteArray("h").startsWith('o'));
+ QVERIFY(!QByteArray("hallo").startsWith('l'));
+ QVERIFY(!QByteArray("").startsWith('\0'));
+ QVERIFY(!QByteArray("").startsWith('a'));
+ QVERIFY(!QByteArray().startsWith('a'));
+ QVERIFY(!QByteArray().startsWith('\0'));
+}
+
+void tst_QByteArray::endsWith_data()
+{
+ QTest::addColumn<QByteArray>("ba");
+ QTest::addColumn<QByteArray>("sw");
+ QTest::addColumn<bool>("result");
+
+ QTest::newRow("01") << QByteArray() << QByteArray() << true;
+ QTest::newRow("02") << QByteArray() << QByteArray("") << true;
+ QTest::newRow("03") << QByteArray() << QByteArray("hallo") << false;
+
+ QTest::newRow("04") << QByteArray("") << QByteArray() << true;
+ QTest::newRow("05") << QByteArray("") << QByteArray("") << true;
+ QTest::newRow("06") << QByteArray("") << QByteArray("h") << false;
+
+ QTest::newRow("07") << QByteArray("hallo") << QByteArray("o") << true;
+ QTest::newRow("08") << QByteArray("hallo") << QByteArray("hallo") << true;
+ QTest::newRow("09") << QByteArray("hallo") << QByteArray("") << true;
+ QTest::newRow("10") << QByteArray("hallo") << QByteArray("hallohallo") << false;
+ QTest::newRow("11") << QByteArray("hallo") << QByteArray() << true;
+}
+
+void tst_QByteArray::endsWith()
+{
+ QFETCH(QByteArray, ba);
+ QFETCH(QByteArray, sw);
+ QFETCH(bool, result);
+
+ QVERIFY(ba.endsWith(sw) == result);
+
+ if (sw.isNull()) {
+ QVERIFY(ba.endsWith((char*)0) == result);
+ } else {
+ QVERIFY(ba.endsWith(sw.data()) == result);
+ }
+}
+
+void tst_QByteArray::endsWith_char()
+{
+ QVERIFY(QByteArray("hallo").endsWith('o'));
+ QVERIFY(!QByteArray("hallo").endsWith('\0'));
+ QVERIFY(!QByteArray("hallo").endsWith('h'));
+ QVERIFY(QByteArray("h").endsWith('h'));
+ QVERIFY(!QByteArray("h").endsWith('\0'));
+ QVERIFY(!QByteArray("h").endsWith('o'));
+ QVERIFY(!QByteArray("hallo").endsWith('l'));
+ QVERIFY(!QByteArray("").endsWith('\0'));
+ QVERIFY(!QByteArray("").endsWith('a'));
+ QVERIFY(!QByteArray().endsWith('a'));
+ QVERIFY(!QByteArray().endsWith('\0'));
+}
+
+void tst_QByteArray::split_data()
+{
+ QTest::addColumn<QByteArray>("sample");
+ QTest::addColumn<int>("size");
+
+ QTest::newRow("1") << QByteArray("-rw-r--r-- 1 0 0 519240 Jul 9 2002 bigfile")
+ << 14;
+ QTest::newRow("2") << QByteArray("abcde") << 1;
+ QTest::newRow("one empty") << QByteArray("") << 1;
+ QTest::newRow("two empty") << QByteArray(" ") << 2;
+ QTest::newRow("three empty") << QByteArray(" ") << 3;
+
+}
+
+void tst_QByteArray::split()
+{
+ QFETCH(QByteArray, sample);
+ QFETCH(int, size);
+
+ QList<QByteArray> list = sample.split(' ');
+ QCOMPARE(list.count(), size);
+}
+
+void tst_QByteArray::swap()
+{
+ QByteArray b1 = "b1", b2 = "b2";
+ b1.swap(b2);
+ QCOMPARE(b1, QByteArray("b2"));
+ QCOMPARE(b2, QByteArray("b1"));
+}
+
+void tst_QByteArray::base64_data()
+{
+ QTest::addColumn<QByteArray>("rawdata");
+ QTest::addColumn<QByteArray>("base64");
+
+ QTest::newRow("1") << QByteArray("") << QByteArray("");
+ QTest::newRow("2") << QByteArray("1") << QByteArray("MQ==");
+ QTest::newRow("3") << QByteArray("12") << QByteArray("MTI=");
+ QTest::newRow("4") << QByteArray("123") << QByteArray("MTIz");
+ QTest::newRow("5") << QByteArray("1234") << QByteArray("MTIzNA==");
+ QTest::newRow("6") << QByteArray("\n") << QByteArray("Cg==");
+ QTest::newRow("7") << QByteArray("a\n") << QByteArray("YQo=");
+ QTest::newRow("8") << QByteArray("ab\n") << QByteArray("YWIK");
+ QTest::newRow("9") << QByteArray("abc\n") << QByteArray("YWJjCg==");
+ QTest::newRow("a") << QByteArray("abcd\n") << QByteArray("YWJjZAo=");
+ QTest::newRow("b") << QByteArray("abcde\n") << QByteArray("YWJjZGUK");
+ QTest::newRow("c") << QByteArray("abcdef\n") << QByteArray("YWJjZGVmCg==");
+ QTest::newRow("d") << QByteArray("abcdefg\n") << QByteArray("YWJjZGVmZwo=");
+ QTest::newRow("e") << QByteArray("abcdefgh\n") << QByteArray("YWJjZGVmZ2gK");
+
+ QByteArray ba;
+ ba.resize(256);
+ for (int i = 0; i < 256; ++i)
+ ba[i] = i;
+ QTest::newRow("f") << ba << QByteArray("AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==");
+
+ QTest::newRow("g") << QByteArray("foo\0bar", 7) << QByteArray("Zm9vAGJhcg==");
+ QTest::newRow("h") << QByteArray("f\xd1oo\x9ctar") << QByteArray("ZtFvb5x0YXI=");
+ QTest::newRow("i") << QByteArray("\"\0\0\0\0\0\0\"", 8) << QByteArray("IgAAAAAAACI=");
+}
+
+
+void tst_QByteArray::base64()
+{
+ QFETCH(QByteArray, rawdata);
+ QFETCH(QByteArray, base64);
+
+ QByteArray arr = QByteArray::fromBase64(base64);
+ QCOMPARE(arr, rawdata);
+
+ QByteArray arr64 = rawdata.toBase64();
+ QCOMPARE(arr64, base64);
+}
+
+//different from the previous test as the input are invalid
+void tst_QByteArray::fromBase64_data()
+{
+ QTest::addColumn<QByteArray>("rawdata");
+ QTest::addColumn<QByteArray>("base64");
+
+ QTest::newRow("1") << QByteArray("") << QByteArray(" ");
+ QTest::newRow("2") << QByteArray("1") << QByteArray("MQ");
+ QTest::newRow("3") << QByteArray("12") << QByteArray("MTI ");
+ QTest::newRow("4") << QByteArray("123") << QByteArray("M=TIz");
+ QTest::newRow("5") << QByteArray("1234") << QByteArray("MTI zN A ");
+ QTest::newRow("6") << QByteArray("\n") << QByteArray("Cg");
+ QTest::newRow("7") << QByteArray("a\n") << QByteArray("======YQo=");
+ QTest::newRow("8") << QByteArray("ab\n") << QByteArray("Y\nWIK");
+ QTest::newRow("9") << QByteArray("abc\n") << QByteArray("YWJjCg==");
+ QTest::newRow("a") << QByteArray("abcd\n") << QByteArray("YWJ\1j\x9cZAo=");
+ QTest::newRow("b") << QByteArray("abcde\n") << QByteArray("YW JjZ\n G\tUK");
+ QTest::newRow("c") << QByteArray("abcdef\n") << QByteArray("YWJjZGVmCg=");
+ QTest::newRow("d") << QByteArray("abcdefg\n") << QByteArray("YWJ\rjZGVmZwo");
+ QTest::newRow("e") << QByteArray("abcdefgh\n") << QByteArray("YWJjZGVmZ2gK");
+
+ QByteArray ba;
+ ba.resize(256);
+ for (int i = 0; i < 256; ++i)
+ ba[i] = i;
+ QTest::newRow("f") << ba << QByteArray("AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Nj\n"
+ "c4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1u\n"
+ "b3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpa\n"
+ "anqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd\n"
+ "3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w== ");
+
+
+ QTest::newRow("g") << QByteArray("foo\0bar", 7) << QByteArray("Zm9vAGJhcg");
+ QTest::newRow("h") << QByteArray("f\xd1oo\x9ctar") << QByteArray("ZtFvb5x0YXI=");
+ QTest::newRow("i") << QByteArray("\"\0\0\0\0\0\0\"", 8) << QByteArray("IgAAAAAAACI");
+
+}
+
+
+void tst_QByteArray::fromBase64()
+{
+ QFETCH(QByteArray, rawdata);
+ QFETCH(QByteArray, base64);
+
+ QByteArray arr = QByteArray::fromBase64(base64);
+ QCOMPARE(arr, rawdata);
+}
+
+void tst_QByteArray::qvsnprintf()
+{
+ char buf[20];
+ qMemSet(buf, 42, sizeof(buf));
+
+ QCOMPARE(::qsnprintf(buf, 10, "%s", "bubu"), 4);
+ QCOMPARE(static_cast<const char *>(buf), "bubu");
+ QCOMPARE(buf[5], char(42));
+
+ qMemSet(buf, 42, sizeof(buf));
+ QCOMPARE(::qsnprintf(buf, 5, "%s", "bubu"), 4);
+ QCOMPARE(static_cast<const char *>(buf), "bubu");
+ QCOMPARE(buf[5], char(42));
+
+ qMemSet(buf, 42, sizeof(buf));
+#ifdef Q_OS_WIN
+ // VS 2005 uses the Qt implementation of vsnprintf.
+# if defined(_MSC_VER) && _MSC_VER >= 1400 && !defined(Q_OS_WINCE)
+ QCOMPARE(::qsnprintf(buf, 3, "%s", "bubu"), -1);
+ QCOMPARE(static_cast<const char*>(buf), "bu");
+# else
+ // windows has to do everything different, of course.
+ QCOMPARE(::qsnprintf(buf, 3, "%s", "bubu"), -1);
+ buf[19] = '\0';
+ QCOMPARE(static_cast<const char *>(buf), "bub****************");
+# endif
+#else
+#ifdef Q_OS_IRIX
+ // Irix reports back the amount of characters written without the \0
+ QCOMPARE(::qsnprintf(buf, 3, "%s", "bubu"), 2);
+#else
+ // Every other system in this world reports the amount of data that could have been written
+ QCOMPARE(::qsnprintf(buf, 3, "%s", "bubu"), 4);
+#endif
+ QCOMPARE(static_cast<const char*>(buf), "bu");
+#endif
+ QCOMPARE(buf[4], char(42));
+
+#ifndef Q_OS_WIN
+ qMemSet(buf, 42, sizeof(buf));
+ QCOMPARE(::qsnprintf(buf, 10, ""), 0);
+#endif
+}
+
+
+void tst_QByteArray::qstrlen()
+{
+ const char *src = "Something about ... \0 a string.";
+ QCOMPARE(::qstrlen((char*)0), (uint)0);
+ QCOMPARE(::qstrlen(src), (uint)20);
+}
+
+void tst_QByteArray::qstrnlen()
+{
+ const char *src = "Something about ... \0 a string.";
+ QCOMPARE(::qstrnlen((char*)0, 1), (uint)0);
+ QCOMPARE(::qstrnlen(src, 31), (uint)20);
+ QCOMPARE(::qstrnlen(src, 19), (uint)19);
+ QCOMPARE(::qstrnlen(src, 21), (uint)20);
+ QCOMPARE(::qstrnlen(src, 20), (uint)20);
+}
+
+void tst_QByteArray::qstrcpy()
+{
+ const char *src = "Something about ... \0 a string.";
+ const char *expected = "Something about ... ";
+ char dst[128];
+
+ QCOMPARE(::qstrcpy(0, 0), (char*)0);
+ QCOMPARE(::qstrcpy(dst, 0), (char*)0);
+
+ QCOMPARE(::qstrcpy(dst ,src), (char *)dst);
+ QCOMPARE((char *)dst, const_cast<char *>(expected));
+}
+
+void tst_QByteArray::qstrncpy()
+{
+ QByteArray src(1024, 'a'), dst(1024, 'b');
+
+ // singularities
+ QCOMPARE(::qstrncpy(0, 0,0), (char*)0);
+ QCOMPARE(::qstrncpy(dst.data(), 0, 0), (char*)0);
+
+ // normal copy
+ QCOMPARE(::qstrncpy(dst.data(), src.data(), src.size()), dst.data());
+
+ src = QByteArray( "Tumdelidum" );
+ QCOMPARE(QByteArray(::qstrncpy(dst.data(), src.data(), src.size())),
+ QByteArray("Tumdelidu"));
+
+ // normal copy with length is longer than necessary
+ src = QByteArray( "Tumdelidum\0foo" );
+ dst.resize(128*1024);
+ QCOMPARE(QByteArray(::qstrncpy(dst.data(), src.data(), dst.size())),
+ QByteArray("Tumdelidum"));
+}
+
+void tst_QByteArray::qstricmp_data()
+{
+ QTest::addColumn<QString>("str1");
+ QTest::addColumn<QString>("str2");
+
+ QTest::newRow("equal 1") << "abcEdb" << "abcEdb";
+ QTest::newRow("equal 2") << "abcEdb" << "ABCeDB";
+ QTest::newRow("equal 3") << "ABCEDB" << "abcedb";
+ QTest::newRow("less 1") << "abcdef" << "abcdefg";
+ QTest::newRow("less 2") << "abcdeF" << "abcdef";
+ QTest::newRow("greater 1") << "abcdef" << "abcdeF";
+ QTest::newRow("greater 2") << "abcdefg" << "abcdef";
+}
+
+void tst_QByteArray::qstricmp()
+{
+ QFETCH(QString, str1);
+ QFETCH(QString, str2);
+
+ int expected = strcmp(str1.toUpper().toLatin1(),
+ str2.toUpper().toLatin1());
+ if ( expected != 0 ) {
+ expected = (expected < 0 ? -1 : 1);
+ }
+ int actual = ::qstricmp(str1.toLatin1(), str2.toLatin1());
+ if ( actual != 0 ) {
+ actual = (actual < 0 ? -1 : 1);
+ }
+ QCOMPARE(expected, actual);
+}
+
+void tst_QByteArray::qstricmp_singularities()
+{
+ QCOMPARE(::qstricmp(0, 0), 0);
+ QVERIFY(::qstricmp(0, "a") != 0);
+ QVERIFY(::qstricmp("a", 0) != 0);
+ QCOMPARE(::qstricmp("", ""), 0);
+}
+
+void tst_QByteArray::qstrnicmp_singularities()
+{
+ QCOMPARE(::qstrnicmp(0, 0, 123), 0);
+ QVERIFY(::qstrnicmp(0, "a", 123) != 0);
+ QVERIFY(::qstrnicmp("a", 0, 123) != 0);
+ QCOMPARE(::qstrnicmp("", "", 123), 0);
+ QCOMPARE(::qstrnicmp("a", "B", 0), 0);
+}
+
+void tst_QByteArray::chop_data()
+{
+ QTest::addColumn<QByteArray>("src");
+ QTest::addColumn<int>("choplength");
+ QTest::addColumn<QByteArray>("expected");
+
+ QTest::newRow("1") << QByteArray("short1") << 128 << QByteArray();
+ QTest::newRow("2") << QByteArray("short2") << int(strlen("short2"))
+ << QByteArray();
+ QTest::newRow("3") << QByteArray("abcdef\0foo", 10) << 2
+ << QByteArray("abcdef\0f", 8);
+ QTest::newRow("4") << QByteArray("STARTTLS\r\n") << 2
+ << QByteArray("STARTTLS");
+ QTest::newRow("5") << QByteArray("") << 1 << QByteArray();
+ QTest::newRow("6") << QByteArray("foo") << 0 << QByteArray("foo");
+ QTest::newRow("7") << QByteArray(0) << 28 << QByteArray();
+}
+
+void tst_QByteArray::chop()
+{
+ QFETCH(QByteArray, src);
+ QFETCH(int, choplength);
+ QFETCH(QByteArray, expected);
+
+ src.chop(choplength);
+ QCOMPARE(src, expected);
+}
+
+void tst_QByteArray::prepend()
+{
+ QByteArray ba("foo");
+ QCOMPARE(ba.prepend((char*)0), QByteArray("foo"));
+ QCOMPARE(ba.prepend(QByteArray()), QByteArray("foo"));
+ QCOMPARE(ba.prepend("1"), QByteArray("1foo"));
+ QCOMPARE(ba.prepend(QByteArray("2")), QByteArray("21foo"));
+ QCOMPARE(ba.prepend('3'), QByteArray("321foo"));
+ QCOMPARE(ba.prepend("\0 ", 2), QByteArray::fromRawData("\0 321foo", 8));
+}
+
+void tst_QByteArray::append()
+{
+ QByteArray ba("foo");
+ QCOMPARE(ba.append((char*)0), QByteArray("foo"));
+ QCOMPARE(ba.append(QByteArray()), QByteArray("foo"));
+ QCOMPARE(ba.append("1"), QByteArray("foo1"));
+ QCOMPARE(ba.append(QByteArray("2")), QByteArray("foo12"));
+ QCOMPARE(ba.append('3'), QByteArray("foo123"));
+ QCOMPARE(ba.append("\0"), QByteArray("foo123"));
+ QCOMPARE(ba.append("\0", 1), QByteArray::fromRawData("foo123\0", 7));
+ QCOMPARE(ba.size(), 7);
+}
+
+void tst_QByteArray::insert()
+{
+ QByteArray ba("Meal");
+ QCOMPARE(ba.insert(1, QByteArray("ontr")), QByteArray("Montreal"));
+ QCOMPARE(ba.insert(ba.size(), "foo"), QByteArray("Montrealfoo"));
+
+ ba = QByteArray("13");
+ QCOMPARE(ba.insert(1, QByteArray("2")), QByteArray("123"));
+
+ ba = "ac";
+ QCOMPARE(ba.insert(1, 'b'), QByteArray("abc"));
+ QCOMPARE(ba.size(), 3);
+
+ ba = "ikl";
+ QCOMPARE(ba.insert(1, "j"), QByteArray("ijkl"));
+ QCOMPARE(ba.size(), 4);
+
+ ba = "ab";
+ QCOMPARE(ba.insert(1, "\0X\0", 3), QByteArray::fromRawData("a\0X\0b", 5));
+ QCOMPARE(ba.size(), 5);
+}
+
+void tst_QByteArray::remove_data()
+{
+ QTest::addColumn<QByteArray>("src");
+ QTest::addColumn<int>("position");
+ QTest::addColumn<int>("length");
+ QTest::addColumn<QByteArray>("expected");
+
+ QTest::newRow("1") << QByteArray("Montreal") << 1 << 4
+ << QByteArray("Meal");
+ QTest::newRow("2") << QByteArray() << 10 << 10 << QByteArray();
+ QTest::newRow("3") << QByteArray("hi") << 0 << 10 << QByteArray();
+ QTest::newRow("4") << QByteArray("Montreal") << 4 << 100
+ << QByteArray("Mont");
+
+ // index out of range
+ QTest::newRow("5") << QByteArray("Montreal") << 8 << 1
+ << QByteArray("Montreal");
+ QTest::newRow("6") << QByteArray("Montreal") << 18 << 4
+ << QByteArray("Montreal");
+}
+
+void tst_QByteArray::remove()
+{
+ QFETCH(QByteArray, src);
+ QFETCH(int, position);
+ QFETCH(int, length);
+ QFETCH(QByteArray, expected);
+ QCOMPARE(src.remove(position, length), expected);
+}
+
+void tst_QByteArray::replace_data()
+{
+ QTest::addColumn<QByteArray>("src");
+ QTest::addColumn<int>("pos");
+ QTest::addColumn<int>("len");
+ QTest::addColumn<QByteArray>("after");
+ QTest::addColumn<QByteArray>("expected");
+
+ QTest::newRow("1") << QByteArray("Say yes!") << 4 << 3
+ << QByteArray("no") << QByteArray("Say no!");
+ QTest::newRow("2") << QByteArray("rock and roll") << 5 << 3
+ << QByteArray("&") << QByteArray("rock & roll");
+ QTest::newRow("3") << QByteArray("foo") << 3 << 0 << QByteArray("bar")
+ << QByteArray("foobar");
+ QTest::newRow("4") << QByteArray() << 0 << 0 << QByteArray() << QByteArray();
+ // index out of range
+ QTest::newRow("5") << QByteArray() << 3 << 0 << QByteArray("hi")
+ << QByteArray(" hi");
+ // Optimized path
+ QTest::newRow("6") << QByteArray("abcdef") << 3 << 12 << QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijkl");
+ QTest::newRow("7") << QByteArray("abcdef") << 3 << 4 << QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijkl");
+ QTest::newRow("8") << QByteArray("abcdef") << 3 << 3 << QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijkl");
+ QTest::newRow("9") << QByteArray("abcdef") << 3 << 2 << QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijklf");
+ QTest::newRow("10") << QByteArray("abcdef") << 2 << 2 << QByteArray("xx") << QByteArray("abxxef");
+}
+
+void tst_QByteArray::replace()
+{
+ QFETCH(QByteArray, src);
+ QFETCH(int, pos);
+ QFETCH(int, len);
+ QFETCH(QByteArray, after);
+ QFETCH(QByteArray, expected);
+
+ QByteArray str1 = src;
+ QByteArray str2 = src;
+
+ QCOMPARE(str1.replace(pos, len, after).constData(), expected.constData());
+ QCOMPARE(str2.replace(pos, len, after.data()), expected);
+}
+
+void tst_QByteArray::replaceWithSpecifiedLength()
+{
+ const char after[] = "zxc\0vbnmqwert";
+ int lenAfter = 6;
+ QByteArray ba("abcdefghjk");
+ ba.replace(0,2,after,lenAfter);
+
+ const char _expected[] = "zxc\0vbcdefghjk";
+ QByteArray expected(_expected,sizeof(_expected)-1);
+ QCOMPARE(ba,expected);
+}
+
+void tst_QByteArray::indexOf_data()
+{
+ QTest::addColumn<QByteArray>("haystack");
+ QTest::addColumn<QByteArray>("needle");
+ QTest::addColumn<int>("startpos");
+ QTest::addColumn<int>("expected");
+
+ QTest::newRow( "1" ) << QByteArray("abc") << QByteArray("a") << 0 << 0;
+ QTest::newRow( "2" ) << QByteArray("abc") << QByteArray("A") << 0 << -1;
+ QTest::newRow( "3" ) << QByteArray("abc") << QByteArray("a") << 1 << -1;
+ QTest::newRow( "4" ) << QByteArray("abc") << QByteArray("A") << 1 << -1;
+ QTest::newRow( "5" ) << QByteArray("abc") << QByteArray("b") << 0 << 1;
+ QTest::newRow( "6" ) << QByteArray("abc") << QByteArray("B") << 0 << -1;
+ QTest::newRow( "7" ) << QByteArray("abc") << QByteArray("b") << 1 << 1;
+ QTest::newRow( "8" ) << QByteArray("abc") << QByteArray("B") << 1 << -1;
+ QTest::newRow( "9" ) << QByteArray("abc") << QByteArray("b") << 2 << -1;
+ QTest::newRow( "10" ) << QByteArray("abc") << QByteArray("c") << 0 << 2;
+ QTest::newRow( "11" ) << QByteArray("abc") << QByteArray("C") << 0 << -1;
+ QTest::newRow( "12" ) << QByteArray("abc") << QByteArray("c") << 1 << 2;
+ QTest::newRow( "13" ) << QByteArray("abc") << QByteArray("C") << 1 << -1;
+ QTest::newRow( "14" ) << QByteArray("abc") << QByteArray("c") << 2 << 2;
+ QTest::newRow( "15" ) << QByteArray("aBc") << QByteArray("bc") << 0 << -1;
+ QTest::newRow( "16" ) << QByteArray("aBc") << QByteArray("Bc") << 0 << 1;
+ QTest::newRow( "17" ) << QByteArray("aBc") << QByteArray("bC") << 0 << -1;
+ QTest::newRow( "18" ) << QByteArray("aBc") << QByteArray("BC") << 0 << -1;
+
+ // task 203692
+ static const char h19[] = {'x', 0x00, (char)0xe7, 0x25, 0x1c, 0x0a};
+ static const char n19[] = {0x00, 0x00, 0x01, 0x00};
+ QTest::newRow( "19" ) << QByteArray(h19, sizeof(h19))
+ << QByteArray(n19, sizeof(n19)) << 0 << -1;
+
+ QTest::newRow( "empty" ) << QByteArray("") << QByteArray("x") << 0 << -1;
+ QTest::newRow( "null" ) << QByteArray() << QByteArray("x") << 0 << -1;
+ QTest::newRow( "null-in-null") << QByteArray() << QByteArray() << 0 << 0;
+ QTest::newRow( "empty-in-null") << QByteArray() << QByteArray("") << 0 << 0;
+ QTest::newRow( "null-in-empty") << QByteArray("") << QByteArray() << 0 << 0;
+ QTest::newRow( "empty-in-empty") << QByteArray("") << QByteArray("") << 0 << 0;
+
+ QByteArray veryBigHaystack(500, 'a');
+ veryBigHaystack += 'B';
+ QTest::newRow("BoyerMooreStressTest") << veryBigHaystack << veryBigHaystack << 0 << 0;
+ QTest::newRow("BoyerMooreStressTest2") << QByteArray(veryBigHaystack + 'c') << QByteArray(veryBigHaystack) << 0 << 0;
+ QTest::newRow("BoyerMooreStressTest3") << QByteArray('c' + veryBigHaystack) << QByteArray(veryBigHaystack) << 0 << 1;
+ QTest::newRow("BoyerMooreStressTest4") << QByteArray(veryBigHaystack) << QByteArray(veryBigHaystack + 'c') << 0 << -1;
+ QTest::newRow("BoyerMooreStressTest5") << QByteArray(veryBigHaystack) << QByteArray('c' + veryBigHaystack) << 0 << -1;
+ QTest::newRow("BoyerMooreStressTest6") << QByteArray('d' + veryBigHaystack) << QByteArray('c' + veryBigHaystack) << 0 << -1;
+ QTest::newRow("BoyerMooreStressTest6") << QByteArray(veryBigHaystack + 'c') << QByteArray('c' + veryBigHaystack) << 0 << -1;
+}
+
+void tst_QByteArray::indexOf()
+{
+ QFETCH( QByteArray, haystack );
+ QFETCH( QByteArray, needle );
+ QFETCH( int, startpos );
+ QFETCH( int, expected );
+
+ bool hasNull = needle.contains('\0');
+
+ QCOMPARE( haystack.indexOf(needle, startpos), expected );
+ if (!hasNull)
+ QCOMPARE( haystack.indexOf(needle.data(), startpos), expected );
+ if (needle.size() == 1)
+ QCOMPARE( haystack.indexOf(needle.at(0), startpos), expected );
+
+ if (startpos == 0) {
+ QCOMPARE( haystack.indexOf(needle), expected );
+ if (!hasNull)
+ QCOMPARE( haystack.indexOf(needle.data()), expected );
+ if (needle.size() == 1)
+ QCOMPARE( haystack.indexOf(needle.at(0)), expected );
+ }
+}
+
+void tst_QByteArray::lastIndexOf_data()
+{
+ QTest::addColumn<QByteArray>("haystack");
+ QTest::addColumn<QByteArray>("needle");
+ QTest::addColumn<int>("startpos");
+ QTest::addColumn<int>("expected");
+
+ QTest::newRow( "1" ) << QByteArray("abc") << QByteArray("a") << 0 << 0;
+ QTest::newRow( "2" ) << QByteArray("abc") << QByteArray("A") << 0 << -1;
+ QTest::newRow( "3" ) << QByteArray("abc") << QByteArray("a") << 1 << 0;
+ QTest::newRow( "4" ) << QByteArray("abc") << QByteArray("A") << 1 << -1;
+ QTest::newRow( "5" ) << QByteArray("abc") << QByteArray("a") << -1 << 0;
+ QTest::newRow( "6" ) << QByteArray("abc") << QByteArray("b") << 0 << -1;
+ QTest::newRow( "7" ) << QByteArray("abc") << QByteArray("B") << 0 << -1;
+ QTest::newRow( "8" ) << QByteArray("abc") << QByteArray("b") << 1 << 1;
+ QTest::newRow( "9" ) << QByteArray("abc") << QByteArray("B") << 1 << -1;
+ QTest::newRow( "10" ) << QByteArray("abc") << QByteArray("b") << 2 << 1;
+ QTest::newRow( "11" ) << QByteArray("abc") << QByteArray("b") << -1 << 1;
+ QTest::newRow( "12" ) << QByteArray("abc") << QByteArray("c") << 0 << -1;
+ QTest::newRow( "13" ) << QByteArray("abc") << QByteArray("C") << 0 << -1;
+ QTest::newRow( "14" ) << QByteArray("abc") << QByteArray("c") << 1 << -1;
+ QTest::newRow( "15" ) << QByteArray("abc") << QByteArray("C") << 1 << -1;
+ QTest::newRow( "16" ) << QByteArray("abc") << QByteArray("c") << 2 << 2;
+ QTest::newRow( "17" ) << QByteArray("abc") << QByteArray("c") << -1 << 2;
+ QTest::newRow( "18" ) << QByteArray("aBc") << QByteArray("bc") << 0 << -1;
+ QTest::newRow( "19" ) << QByteArray("aBc") << QByteArray("Bc") << 0 << -1;
+ QTest::newRow( "20" ) << QByteArray("aBc") << QByteArray("Bc") << 2 << 1;
+ QTest::newRow( "21" ) << QByteArray("aBc") << QByteArray("Bc") << 1 << 1;
+ QTest::newRow( "22" ) << QByteArray("aBc") << QByteArray("Bc") << -1 << 1;
+ QTest::newRow( "23" ) << QByteArray("aBc") << QByteArray("bC") << 0 << -1;
+ QTest::newRow( "24" ) << QByteArray("aBc") << QByteArray("BC") << 0 << -1;
+
+ // task 203692
+ static const char h25[] = {0x00, (char)0xbc, 0x03, 0x10, 0x0a };
+ static const char n25[] = {0x00, 0x00, 0x01, 0x00};
+ QTest::newRow( "25" ) << QByteArray(h25, sizeof(h25))
+ << QByteArray(n25, sizeof(n25)) << 0 << -1;
+
+ QTest::newRow( "empty" ) << QByteArray("") << QByteArray("x") << -1 << -1;
+ QTest::newRow( "null" ) << QByteArray() << QByteArray("x") << -1 << -1;
+ QTest::newRow( "null-in-null") << QByteArray() << QByteArray() << -1 << 0;
+ QTest::newRow( "empty-in-null") << QByteArray() << QByteArray("") << -1 << 0;
+ QTest::newRow( "null-in-empty") << QByteArray("") << QByteArray() << -1 << 0;
+ QTest::newRow( "empty-in-empty") << QByteArray("") << QByteArray("") << -1 << 0;
+}
+
+void tst_QByteArray::lastIndexOf()
+{
+ QFETCH( QByteArray, haystack );
+ QFETCH( QByteArray, needle );
+ QFETCH( int, startpos );
+ QFETCH( int, expected );
+
+ bool hasNull = needle.contains('\0');
+
+ QCOMPARE( haystack.lastIndexOf(needle, startpos), expected );
+ if (!hasNull)
+ QCOMPARE( haystack.lastIndexOf(needle.data(), startpos), expected );
+ if (needle.size() == 1)
+ QCOMPARE( haystack.lastIndexOf(needle.at(0), startpos), expected );
+
+ if (startpos == -1) {
+ QCOMPARE( haystack.lastIndexOf(needle), expected );
+ if (!hasNull)
+ QCOMPARE( haystack.lastIndexOf(needle.data()), expected );
+ if (needle.size() == 1)
+ QCOMPARE( haystack.lastIndexOf(needle.at(0)), expected );
+ }
+}
+
+void tst_QByteArray::number()
+{
+ QCOMPARE(QString(QByteArray::number((quint64) 0)),
+ QString(QByteArray("0")));
+ QCOMPARE(QString(QByteArray::number(Q_UINT64_C(0xFFFFFFFFFFFFFFFF))),
+ QString(QByteArray("18446744073709551615")));
+ QCOMPARE(QString(QByteArray::number(Q_INT64_C(0xFFFFFFFFFFFFFFFF))),
+ QString(QByteArray("-1")));
+ QCOMPARE(QString(QByteArray::number(qint64(0))),
+ QString(QByteArray("0")));
+ QCOMPARE(QString(QByteArray::number(Q_INT64_C(0x7FFFFFFFFFFFFFFF))),
+ QString(QByteArray("9223372036854775807")));
+ QCOMPARE(QString(QByteArray::number(Q_INT64_C(0x8000000000000000))),
+ QString(QByteArray("-9223372036854775808")));
+}
+
+// defined later
+extern const char globalChar;
+
+void tst_QByteArray::toInt_data()
+{
+ QTest::addColumn<QByteArray>("string");
+ QTest::addColumn<int>("base");
+ QTest::addColumn<int>("expectednumber");
+ QTest::addColumn<bool>("expectedok");
+
+ QTest::newRow("base 10") << QByteArray("100") << 10 << int(100) << true;
+ QTest::newRow("base 16") << QByteArray("100") << 16 << int(256) << true;
+ QTest::newRow("base 16") << QByteArray("0400") << 16 << int(1024) << true;
+ QTest::newRow("base 2") << QByteArray("1111") << 2 << int(15) << true;
+ QTest::newRow("base 8") << QByteArray("100") << 8 << int(64) << true;
+ QTest::newRow("base 0") << QByteArray("0x10") << 0 << int(16) << true;
+ QTest::newRow("base 0") << QByteArray("10") << 0 << int(10) << true;
+ QTest::newRow("base 0") << QByteArray("010") << 0 << int(8) << true;
+ QTest::newRow("empty") << QByteArray() << 0 << int(0) << false;
+
+ // using fromRawData
+ QTest::newRow("raw1") << QByteArray::fromRawData("1", 1) << 10 << 1 << true;
+ QTest::newRow("raw2") << QByteArray::fromRawData("1foo", 1) << 10 << 1 << true;
+ QTest::newRow("raw3") << QByteArray::fromRawData("12", 1) << 10 << 1 << true;
+ QTest::newRow("raw4") << QByteArray::fromRawData("123456789", 1) << 10 << 1 << true;
+ QTest::newRow("raw4") << QByteArray::fromRawData("123456789", 2) << 10 << 12 << true;
+
+ QTest::newRow("raw-static") << QByteArray::fromRawData(&globalChar, 1) << 10 << 1 << true;
+}
+
+void tst_QByteArray::toInt()
+{
+ QFETCH( QByteArray, string );
+ QFETCH( int, base );
+ QFETCH( int, expectednumber );
+ QFETCH( bool, expectedok );
+
+ bool ok;
+ int number = string.toInt(&ok, base);
+
+ QCOMPARE( ok, expectedok );
+ QCOMPARE( number, expectednumber );
+}
+
+Q_DECLARE_METATYPE(qulonglong)
+void tst_QByteArray::toULong_data()
+{
+ QTest::addColumn<QByteArray>("str");
+ QTest::addColumn<int>("base");
+ QTest::addColumn<ulong>("result");
+ QTest::addColumn<bool>("ok");
+
+ ulong LongMaxPlusOne = (ulong)LONG_MAX + 1;
+ QTest::newRow("LONG_MAX+1") << QString::number(LongMaxPlusOne).toLatin1() << 10 << LongMaxPlusOne << true;
+ QTest::newRow("default") << QByteArray() << 10 << 0UL << false;
+ QTest::newRow("empty") << QByteArray("") << 10 << 0UL << false;
+ QTest::newRow("ulong1") << QByteArray("3234567890") << 10 << 3234567890UL << true;
+ QTest::newRow("ulong2") << QByteArray("fFFfFfFf") << 16 << 0xFFFFFFFFUL << true;
+}
+
+void tst_QByteArray::toULong()
+{
+ QFETCH(QByteArray, str);
+ QFETCH(int, base);
+ QFETCH(ulong, result);
+ QFETCH(bool, ok);
+
+ bool b;
+ QCOMPARE(str.toULong(0, base), result);
+ QCOMPARE(str.toULong(&b, base), result);
+ QCOMPARE(b, ok);
+}
+
+void tst_QByteArray::toULongLong_data()
+{
+ QTest::addColumn<QByteArray>("str");
+ QTest::addColumn<int>("base");
+ QTest::addColumn<qulonglong>("result");
+ QTest::addColumn<bool>("ok");
+
+ QTest::newRow("default") << QByteArray() << 10 << (qulonglong)0 << false;
+ QTest::newRow("out of base bound") << QByteArray("c") << 10 << (qulonglong)0 << false;
+
+}
+
+void tst_QByteArray::toULongLong()
+{
+ QFETCH(QByteArray, str);
+ QFETCH(int, base);
+ QFETCH(qulonglong, result);
+ QFETCH(bool, ok);
+
+ bool b;
+ QCOMPARE(str.toULongLong(0, base), result);
+ QCOMPARE(str.toULongLong(&b, base), result);
+ QCOMPARE(b, ok);
+}
+
+// global function defined in qbytearray.cpp
+void tst_QByteArray::qAllocMore()
+{
+ static const int t[] = {
+ INT_MIN, INT_MIN + 1, -1234567, -66000, -1025,
+ -3, -1, 0, +1, +3, +1025, +66000, +1234567, INT_MAX - 1, INT_MAX,
+ INT_MAX/3
+ };
+ static const int N = sizeof(t)/sizeof(t[0]);
+
+ // make sure qAllocMore() doesn't loop infinitely on any input
+ for (int i = 0; i < N; ++i) {
+ for (int j = 0; j < N; ++j) {
+ ::qAllocMore(t[i], t[j]);
+ }
+ }
+}
+
+void tst_QByteArray::resizeAfterFromRawData()
+{
+ QByteArray buffer("hello world");
+
+ QByteArray array = QByteArray::fromRawData(buffer.constData(), buffer.size());
+ QVERIFY(array.constData() == buffer.constData());
+ array.resize(5);
+ QVERIFY(array.constData() == buffer.constData());
+}
+
+void tst_QByteArray::appendAfterFromRawData()
+{
+ QByteArray arr;
+ {
+ char data[] = "X";
+ arr += QByteArray::fromRawData(data, sizeof(data));
+ data[0] = 'Y';
+ }
+ QVERIFY(arr.at(0) == 'X');
+}
+
+void tst_QByteArray::toFromHex_data()
+{
+ QTest::addColumn<QByteArray>("str");
+ QTest::addColumn<QByteArray>("hex");
+ QTest::addColumn<QByteArray>("hex_alt1");
+
+ QTest::newRow("Qt is great!")
+ << QByteArray("Qt is great!")
+ << QByteArray("517420697320677265617421")
+ << QByteArray("51 74 20 69 73 20 67 72 65 61 74 21");
+
+ QTest::newRow("Qt is so great!")
+ << QByteArray("Qt is so great!")
+ << QByteArray("517420697320736f20677265617421")
+ << QByteArray("51 74 20 69 73 20 73 6f 20 67 72 65 61 74 21");
+
+ QTest::newRow("default-constructed")
+ << QByteArray()
+ << QByteArray()
+ << QByteArray();
+
+ QTest::newRow("empty")
+ << QByteArray("")
+ << QByteArray("")
+ << QByteArray("");
+
+ QTest::newRow("array-of-null")
+ << QByteArray("\0", 1)
+ << QByteArray("00")
+ << QByteArray("0");
+
+ QTest::newRow("no-leading-zero")
+ << QByteArray("\xf")
+ << QByteArray("0f")
+ << QByteArray("f");
+
+ QTest::newRow("single-byte")
+ << QByteArray("\xaf")
+ << QByteArray("af")
+ << QByteArray("xaf");
+
+ QTest::newRow("no-leading-zero")
+ << QByteArray("\xd\xde\xad\xc0\xde")
+ << QByteArray("0ddeadc0de")
+ << QByteArray("ddeadc0de");
+
+ QTest::newRow("garbage")
+ << QByteArray("\xC\xde\xeC\xea\xee\xDe\xee\xee")
+ << QByteArray("0cdeeceaeedeeeee")
+ << QByteArray("Code less. Create more. Deploy everywhere.");
+
+ QTest::newRow("under-defined-1")
+ << QByteArray("\x1\x23")
+ << QByteArray("0123")
+ << QByteArray("x123");
+
+ QTest::newRow("under-defined-2")
+ << QByteArray("\x12\x34")
+ << QByteArray("1234")
+ << QByteArray("x1234");
+}
+
+void tst_QByteArray::toFromHex()
+{
+ QFETCH(QByteArray, str);
+ QFETCH(QByteArray, hex);
+ QFETCH(QByteArray, hex_alt1);
+
+ {
+ const QByteArray th = str.toHex();
+ QCOMPARE(th.size(), hex.size());
+ QCOMPARE(th, hex);
+ }
+
+ {
+ const QByteArray fh = QByteArray::fromHex(hex);
+ QCOMPARE(fh.size(), str.size());
+ QCOMPARE(fh, str);
+ }
+
+ QCOMPARE(QByteArray::fromHex(hex_alt1), str);
+}
+
+void tst_QByteArray::toFromPercentEncoding()
+{
+ QByteArray arr("Qt is great!");
+/*
+ QByteArray data = arr.toPercentEncoding();
+ QCOMPARE(QString(data), QString("Qt%20is%20great%21"));
+ QCOMPARE(QByteArray::fromPercentEncoding(data), arr);
+*/
+ QByteArray data = arr.toPercentEncoding("! ", "Qt");
+ QCOMPARE(QString(data), QString("%51%74 is grea%74!"));
+ QCOMPARE(QByteArray::fromPercentEncoding(data), arr);
+
+ data = arr.toPercentEncoding(QByteArray(), "abcdefghijklmnopqrstuvwxyz", 'Q');
+ QCOMPARE(QString(data), QString("Q51Q74Q20Q69Q73Q20Q67Q72Q65Q61Q74Q21"));
+ QCOMPARE(QByteArray::fromPercentEncoding(data, 'Q'), arr);
+
+ // verify that to/from percent encoding preserves nullity
+ arr = "";
+ QVERIFY(arr.isEmpty());
+ QVERIFY(!arr.isNull());
+ QVERIFY(arr.toPercentEncoding().isEmpty());
+ QVERIFY(!arr.toPercentEncoding().isNull());
+ QVERIFY(QByteArray::fromPercentEncoding("").isEmpty());
+ QVERIFY(!QByteArray::fromPercentEncoding("").isNull());
+
+ arr = QByteArray();
+ QVERIFY(arr.isEmpty());
+ QVERIFY(arr.isNull());
+ QVERIFY(arr.toPercentEncoding().isEmpty());
+ QVERIFY(arr.toPercentEncoding().isNull());
+ QVERIFY(QByteArray::fromPercentEncoding(QByteArray()).isEmpty());
+ QVERIFY(QByteArray::fromPercentEncoding(QByteArray()).isNull());
+}
+
+void tst_QByteArray::compare_data()
+{
+ QTest::addColumn<QByteArray>("str1");
+ QTest::addColumn<QByteArray>("str2");
+ QTest::addColumn<int>("result");
+
+ QTest::newRow("null") << QByteArray() << QByteArray() << 0;
+ QTest::newRow("null-empty")<< QByteArray() << QByteArray("") << 0;
+ QTest::newRow("empty-null")<< QByteArray("") << QByteArray() << 0;
+ QTest::newRow("null-full") << QByteArray() << QByteArray("abc") << -1;
+ QTest::newRow("full-null") << QByteArray("abc") << QByteArray() << +1;
+ QTest::newRow("empty-full")<< QByteArray("") << QByteArray("abc") << -1;
+ QTest::newRow("full-empty")<< QByteArray("abc") << QByteArray("") << +1;
+ QTest::newRow("rawempty-full") << QByteArray::fromRawData("abc", 0) << QByteArray("abc") << -1;
+ QTest::newRow("full-rawempty") << QByteArray("abc") << QByteArray::fromRawData("abc", 0) << +1;
+
+ QTest::newRow("equal 1") << QByteArray("abc") << QByteArray("abc") << 0;
+ QTest::newRow("equal 2") << QByteArray::fromRawData("abc", 3) << QByteArray("abc") << 0;
+ QTest::newRow("equal 3") << QByteArray::fromRawData("abcdef", 3) << QByteArray("abc") << 0;
+ QTest::newRow("equal 4") << QByteArray("abc") << QByteArray::fromRawData("abc", 3) << 0;
+ QTest::newRow("equal 5") << QByteArray("abc") << QByteArray::fromRawData("abcdef", 3) << 0;
+ QTest::newRow("equal 6") << QByteArray("a\0bc", 4) << QByteArray("a\0bc", 4) << 0;
+ QTest::newRow("equal 7") << QByteArray::fromRawData("a\0bcdef", 4) << QByteArray("a\0bc", 4) << 0;
+ QTest::newRow("equal 8") << QByteArray("a\0bc", 4) << QByteArray::fromRawData("a\0bcdef", 4) << 0;
+
+ QTest::newRow("less 1") << QByteArray("000") << QByteArray("abc") << -1;
+ QTest::newRow("less 2") << QByteArray::fromRawData("00", 3) << QByteArray("abc") << -1;
+ QTest::newRow("less 3") << QByteArray("000") << QByteArray::fromRawData("abc", 3) << -1;
+ QTest::newRow("less 4") << QByteArray("abc", 3) << QByteArray("abc", 4) << -1;
+ QTest::newRow("less 5") << QByteArray::fromRawData("abc\0", 3) << QByteArray("abc\0", 4) << -1;
+ QTest::newRow("less 6") << QByteArray("a\0bc", 4) << QByteArray("a\0bd", 4) << -1;
+
+ QTest::newRow("greater 1") << QByteArray("abc") << QByteArray("000") << +1;
+ QTest::newRow("greater 2") << QByteArray("abc") << QByteArray::fromRawData("00", 3) << +1;
+ QTest::newRow("greater 3") << QByteArray("abcd") << QByteArray::fromRawData("abcd", 3) << +1;
+ QTest::newRow("greater 4") << QByteArray("a\0bc", 4) << QByteArray("a\0bb", 4) << +1;
+}
+
+void tst_QByteArray::compare()
+{
+ QFETCH(QByteArray, str1);
+ QFETCH(QByteArray, str2);
+ QFETCH(int, result);
+
+ const bool isEqual = result == 0;
+ const bool isLess = result < 0;
+ const bool isGreater = result > 0;
+
+ // basic tests:
+ QCOMPARE(str1 == str2, isEqual);
+ QCOMPARE(str1 < str2, isLess);
+ QCOMPARE(str1 > str2, isGreater);
+
+ // composed tests:
+ QCOMPARE(str1 <= str2, isLess || isEqual);
+ QCOMPARE(str1 >= str2, isGreater || isEqual);
+ QCOMPARE(str1 != str2, !isEqual);
+
+ // inverted tests:
+ QCOMPARE(str2 == str1, isEqual);
+ QCOMPARE(str2 < str1, isGreater);
+ QCOMPARE(str2 > str1, isLess);
+
+ // composed, inverted tests:
+ QCOMPARE(str2 <= str1, isGreater || isEqual);
+ QCOMPARE(str2 >= str1, isLess || isEqual);
+ QCOMPARE(str2 != str1, !isEqual);
+}
+
+void tst_QByteArray::compareCharStar_data()
+{
+ QTest::addColumn<QByteArray>("str1");
+ QTest::addColumn<QString>("string2");
+ QTest::addColumn<int>("result");
+
+ QTest::newRow("null-null") << QByteArray() << QString() << 0;
+ QTest::newRow("null-empty") << QByteArray() << "" << 0;
+ QTest::newRow("null-full") << QByteArray() << "abc" << -1;
+ QTest::newRow("empty-null") << QByteArray("") << QString() << 0;
+ QTest::newRow("empty-empty") << QByteArray("") << "" << 0;
+ QTest::newRow("empty-full") << QByteArray("") << "abc" << -1;
+ QTest::newRow("raw-null") << QByteArray::fromRawData("abc", 0) << QString() << 0;
+ QTest::newRow("raw-empty") << QByteArray::fromRawData("abc", 0) << QString("") << 0;
+ QTest::newRow("raw-full") << QByteArray::fromRawData("abc", 0) << "abc" << -1;
+
+ QTest::newRow("full-null") << QByteArray("abc") << QString() << +1;
+ QTest::newRow("full-empty") << QByteArray("abc") << "" << +1;
+
+ QTest::newRow("equal1") << QByteArray("abc") << "abc" << 0;
+ QTest::newRow("equal2") << QByteArray("abcd", 3) << "abc" << 0;
+ QTest::newRow("equal3") << QByteArray::fromRawData("abcd", 3) << "abc" << 0;
+
+ QTest::newRow("less1") << QByteArray("ab") << "abc" << -1;
+ QTest::newRow("less2") << QByteArray("abb") << "abc" << -1;
+ QTest::newRow("less3") << QByteArray::fromRawData("abc", 2) << "abc" << -1;
+ QTest::newRow("less4") << QByteArray("", 1) << "abc" << -1;
+ QTest::newRow("less5") << QByteArray::fromRawData("", 1) << "abc" << -1;
+ QTest::newRow("less6") << QByteArray("a\0bc", 4) << "a.bc" << -1;
+
+ QTest::newRow("greater1") << QByteArray("ac") << "abc" << +1;
+ QTest::newRow("greater2") << QByteArray("abd") << "abc" << +1;
+ QTest::newRow("greater3") << QByteArray("abcd") << "abc" << +1;
+ QTest::newRow("greater4") << QByteArray::fromRawData("abcd", 4) << "abc" << +1;
+}
+
+void tst_QByteArray::compareCharStar()
+{
+ QFETCH(QByteArray, str1);
+ QFETCH(QString, string2);
+ QFETCH(int, result);
+
+ const bool isEqual = result == 0;
+ const bool isLess = result < 0;
+ const bool isGreater = result > 0;
+ QByteArray qba = string2.toLatin1();
+ const char *str2 = qba.constData();
+ if (string2.isNull())
+ str2 = 0;
+
+ // basic tests:
+ QCOMPARE(str1 == str2, isEqual);
+ QCOMPARE(str1 < str2, isLess);
+ QCOMPARE(str1 > str2, isGreater);
+
+ // composed tests:
+ QCOMPARE(str1 <= str2, isLess || isEqual);
+ QCOMPARE(str1 >= str2, isGreater || isEqual);
+ QCOMPARE(str1 != str2, !isEqual);
+
+ // inverted tests:
+ QCOMPARE(str2 == str1, isEqual);
+ QCOMPARE(str2 < str1, isGreater);
+ QCOMPARE(str2 > str1, isLess);
+
+ // composed, inverted tests:
+ QCOMPARE(str2 <= str1, isGreater || isEqual);
+ QCOMPARE(str2 >= str1, isLess || isEqual);
+ QCOMPARE(str2 != str1, !isEqual);
+}
+
+void tst_QByteArray::repeatedSignature() const
+{
+ /* repated() should be a const member. */
+ const QByteArray string;
+ string.repeated(3);
+}
+
+void tst_QByteArray::repeated() const
+{
+ QFETCH(QByteArray, string);
+ QFETCH(QByteArray, expected);
+ QFETCH(int, count);
+
+ QCOMPARE(string.repeated(count), expected);
+}
+
+void tst_QByteArray::repeated_data() const
+{
+ QTest::addColumn<QByteArray>("string" );
+ QTest::addColumn<QByteArray>("expected" );
+ QTest::addColumn<int>("count" );
+
+ /* Empty strings. */
+ QTest::newRow("")
+ << QByteArray()
+ << QByteArray()
+ << 0;
+
+ QTest::newRow("")
+ << QByteArray()
+ << QByteArray()
+ << -1004;
+
+ QTest::newRow("")
+ << QByteArray()
+ << QByteArray()
+ << 1;
+
+ QTest::newRow("")
+ << QByteArray()
+ << QByteArray()
+ << 5;
+
+ /* On simple string. */
+ QTest::newRow("")
+ << QByteArray("abc")
+ << QByteArray()
+ << -1004;
+
+ QTest::newRow("")
+ << QByteArray("abc")
+ << QByteArray()
+ << -1;
+
+ QTest::newRow("")
+ << QByteArray("abc")
+ << QByteArray()
+ << 0;
+
+ QTest::newRow("")
+ << QByteArray("abc")
+ << QByteArray("abc")
+ << 1;
+
+ QTest::newRow("")
+ << QByteArray(("abc"))
+ << QByteArray(("abcabc"))
+ << 2;
+
+ QTest::newRow("")
+ << QByteArray(("abc"))
+ << QByteArray(("abcabcabc"))
+ << 3;
+
+ QTest::newRow("")
+ << QByteArray(("abc"))
+ << QByteArray(("abcabcabcabc"))
+ << 4;
+}
+
+void tst_QByteArray::byteRefDetaching() const
+{
+ {
+ QByteArray str = "str";
+ QByteArray copy;
+ copy[0] = 'S';
+
+ QCOMPARE(str, QByteArray("str"));
+ }
+
+ {
+ char buf[] = { 's', 't', 'r' };
+ QByteArray str = QByteArray::fromRawData(buf, 3);
+ str[0] = 'S';
+
+ QCOMPARE(buf[0], char('s'));
+ }
+
+ {
+ static const char buf[] = { 's', 't', 'r' };
+ QByteArray str = QByteArray::fromRawData(buf, 3);
+
+ // this causes a crash in most systems if the detaching doesn't work
+ str[0] = 'S';
+
+ QCOMPARE(buf[0], char('s'));
+ }
+}
+
+void tst_QByteArray::reserve()
+{
+ int capacity = 100;
+ QByteArray qba;
+ qba.reserve(capacity);
+ QVERIFY(qba.capacity() == capacity);
+ char *data = qba.data();
+
+ for (int i = 0; i < capacity; i++) {
+ qba.resize(i);
+ QVERIFY(capacity == qba.capacity());
+ QVERIFY(data == qba.data());
+ }
+}
+
+void tst_QByteArray::literals()
+{
+#if defined(Q_COMPILER_LAMBDA) || defined(Q_CC_GNU)
+ QByteArray str(QByteArrayLiteral("abcd"));
+
+ QVERIFY(str.length() == 4);
+ QVERIFY(str == "abcd");
+ QVERIFY(str.data_ptr()->ref == -1);
+ QVERIFY(str.data_ptr()->offset == 0);
+
+ const char *s = str.constData();
+ QByteArray str2 = str;
+ QVERIFY(str2.constData() == s);
+
+ // detach on non const access
+ QVERIFY(str.data() != s);
+
+ QVERIFY(str2.constData() == s);
+ QVERIFY(str2.data() != s);
+
+#else
+ QSKIP("Only tested on c++0x compliant compiler or gcc", SkipAll);
+#endif
+}
+
+const char globalChar = '1';
+
+QTEST_APPLESS_MAIN(tst_QByteArray)
+#include "tst_qbytearray.moc"
diff --git a/tests/auto/corelib/tools/qbytearraymatcher/qbytearraymatcher.pro b/tests/auto/corelib/tools/qbytearraymatcher/qbytearraymatcher.pro
new file mode 100644
index 0000000000..a2458e623f
--- /dev/null
+++ b/tests/auto/corelib/tools/qbytearraymatcher/qbytearraymatcher.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qbytearraymatcher.cpp
+
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qbytearraymatcher/tst_qbytearraymatcher.cpp b/tests/auto/corelib/tools/qbytearraymatcher/tst_qbytearraymatcher.cpp
new file mode 100644
index 0000000000..09a3dfdf7d
--- /dev/null
+++ b/tests/auto/corelib/tools/qbytearraymatcher/tst_qbytearraymatcher.cpp
@@ -0,0 +1,129 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qbytearraymatcher.h>
+
+// COM interface
+#if defined(Q_OS_WIN) && defined(interface)
+# undef interface
+#endif
+
+class tst_QByteArrayMatcher : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void interface();
+ void task251958();
+};
+
+static QByteArrayMatcher matcher1;
+
+void tst_QByteArrayMatcher::interface()
+{
+ const char needle[] = "abc123";
+ QByteArray haystack(500, 'a');
+ haystack.insert(6, "123");
+ haystack.insert(31, "abc");
+ haystack.insert(42, "abc123");
+ haystack.insert(84, "abc123");
+
+ matcher1 = QByteArrayMatcher(QByteArray(needle));
+ QByteArrayMatcher matcher2;
+ matcher2.setPattern(QByteArray(needle));
+
+ QByteArrayMatcher matcher3 = QByteArrayMatcher(QByteArray(needle));
+ QByteArrayMatcher matcher4(needle, sizeof(needle) - 1);
+ QByteArrayMatcher matcher5(matcher2);
+ QByteArrayMatcher matcher6;
+ matcher6 = matcher3;
+
+ QCOMPARE(matcher1.indexIn(haystack), 42);
+ QCOMPARE(matcher2.indexIn(haystack), 42);
+ QCOMPARE(matcher3.indexIn(haystack), 42);
+ QCOMPARE(matcher4.indexIn(haystack), 42);
+ QCOMPARE(matcher5.indexIn(haystack), 42);
+ QCOMPARE(matcher6.indexIn(haystack), 42);
+
+ QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length()), 42);
+
+ QCOMPARE(matcher1.indexIn(haystack, 43), 84);
+ QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length(), 43), 84);
+ QCOMPARE(matcher1.indexIn(haystack, 85), -1);
+ QCOMPARE(matcher1.indexIn(haystack.constData(), haystack.length(), 85), -1);
+
+ QByteArrayMatcher matcher7(QByteArray("123"));
+ QCOMPARE(matcher7.indexIn(haystack), 6);
+
+ matcher7 = QByteArrayMatcher(QByteArray("abc"));
+ QCOMPARE(matcher7.indexIn(haystack), 31);
+
+ matcher7.setPattern(matcher4.pattern());
+ QCOMPARE(matcher7.indexIn(haystack), 42);
+}
+
+
+static QByteArrayMatcher matcher;
+
+void tst_QByteArrayMatcher::task251958()
+{
+ const char p_data[] = { 0x0, 0x0, 0x1 };
+ QByteArray pattern(p_data, sizeof(p_data));
+
+ QByteArray haystack(8, '\0');
+ haystack[7] = 0x1;
+
+ matcher = QByteArrayMatcher(pattern);
+ QCOMPARE(matcher.indexIn(haystack, 0), 5);
+ QCOMPARE(matcher.indexIn(haystack, 1), 5);
+ QCOMPARE(matcher.indexIn(haystack, 2), 5);
+
+ matcher.setPattern(pattern);
+ QCOMPARE(matcher.indexIn(haystack, 0), 5);
+ QCOMPARE(matcher.indexIn(haystack, 1), 5);
+ QCOMPARE(matcher.indexIn(haystack, 2), 5);
+}
+
+QTEST_APPLESS_MAIN(tst_QByteArrayMatcher)
+#include "tst_qbytearraymatcher.moc"
diff --git a/tests/auto/corelib/tools/qcache/.gitignore b/tests/auto/corelib/tools/qcache/.gitignore
new file mode 100644
index 0000000000..287559b578
--- /dev/null
+++ b/tests/auto/corelib/tools/qcache/.gitignore
@@ -0,0 +1 @@
+tst_qcache
diff --git a/tests/auto/corelib/tools/qcache/qcache.pro b/tests/auto/corelib/tools/qcache/qcache.pro
new file mode 100644
index 0000000000..0da4e1414f
--- /dev/null
+++ b/tests/auto/corelib/tools/qcache/qcache.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qcache.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qcache/tst_qcache.cpp b/tests/auto/corelib/tools/qcache/tst_qcache.cpp
new file mode 100644
index 0000000000..2c1f256313
--- /dev/null
+++ b/tests/auto/corelib/tools/qcache/tst_qcache.cpp
@@ -0,0 +1,431 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <qcache.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QCache : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QCache();
+ virtual ~tst_QCache();
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+private slots:
+ void maxCost();
+ void setMaxCost();
+ void totalCost();
+ void clear();
+ void insert();
+ void contains();
+ void operator_bracket_bracket();
+ void remove();
+ void take();
+ void axioms_on_key_type();
+};
+
+
+struct Foo {
+ static int count;
+ Foo():c(count) { ++count; }
+ Foo(const Foo& o):c(o.c) { ++count; }
+ ~Foo() { --count; }
+ int c;
+ int data[8];
+};
+
+int Foo::count = 0;
+
+tst_QCache::tst_QCache()
+{
+}
+
+tst_QCache::~tst_QCache()
+{
+}
+
+void tst_QCache::initTestCase()
+{
+ Foo::count = 0;
+}
+
+void tst_QCache::cleanupTestCase()
+{
+ // always check for memory leaks
+ QCOMPARE(Foo::count, 0);
+}
+
+void tst_QCache::maxCost()
+{
+ QCache<QString, int> cache1, cache2(100), cache3(200), cache4(-50);
+ QCOMPARE(cache1.maxCost(), 100);
+ QCOMPARE(cache2.maxCost(), 100);
+ QCOMPARE(cache3.maxCost(), 200);
+ QCOMPARE(cache4.maxCost(), -50); // 0 would also make sense
+
+ cache1.setMaxCost(101);
+ QCOMPARE(cache1.maxCost(), 101);
+
+ cache1.insert("one", new int(1), 1);
+ cache1.insert("two", new int(2), 1);
+ QCOMPARE(cache1.totalCost(), 2);
+ QCOMPARE(cache1.size(), 2);
+ QCOMPARE(cache1.maxCost(), 101);
+
+ cache1.insert("three", new int(3), 98);
+ QCOMPARE(cache1.totalCost(), 100);
+ QCOMPARE(cache1.size(), 3);
+ QCOMPARE(cache1.maxCost(), 101);
+
+ cache1.insert("four", new int(4), 1);
+ QCOMPARE(cache1.totalCost(), 101);
+ QCOMPARE(cache1.size(), 4);
+ QCOMPARE(cache1.maxCost(), 101);
+
+ cache1.insert("five", new int(4), 1);
+ QVERIFY(cache1.totalCost() <= 101);
+ QVERIFY(cache1.size() == 4);
+ QCOMPARE(cache1.maxCost(), 101);
+
+ cache1.setMaxCost(-1);
+ QCOMPARE(cache1.totalCost(), 0);
+ QCOMPARE(cache1.maxCost(), -1);
+
+ cache2.setMaxCost(202);
+ QCOMPARE(cache2.maxCost(), 202);
+
+ cache3.setMaxCost(-50);
+ QCOMPARE(cache3.maxCost(), -50);
+}
+
+void tst_QCache::setMaxCost()
+{
+ QCache<int, Foo> cache;
+ cache.setMaxCost(2);
+ cache.insert(1, new Foo);
+ cache.insert(2, new Foo);
+ QCOMPARE(cache.totalCost(), 2);
+ QCOMPARE(Foo::count, 2);
+
+ cache.insert(3, new Foo);
+ QCOMPARE(cache.totalCost(), 2);
+ QCOMPARE(Foo::count, 2);
+
+ cache.setMaxCost(3);
+ QCOMPARE(cache.totalCost(), 2);
+ QCOMPARE(Foo::count, 2);
+
+ cache.setMaxCost(2);
+ QCOMPARE(cache.totalCost(), 2);
+ QCOMPARE(Foo::count, 2);
+
+ cache.setMaxCost(1);
+ QCOMPARE(cache.totalCost(), 1);
+ QCOMPARE(Foo::count, 1);
+
+ cache.setMaxCost(0);
+ QCOMPARE(cache.totalCost(), 0);
+ QCOMPARE(Foo::count, 0);
+
+ cache.setMaxCost(-1);
+ QCOMPARE(cache.totalCost(), 0);
+ QCOMPARE(Foo::count, 0);
+}
+
+void tst_QCache::totalCost()
+{
+ QCache<QString, int> cache;
+ QCOMPARE(cache.totalCost(), 0);
+
+ cache.insert("one", new int(1), 0);
+ QCOMPARE(cache.totalCost(), 0);
+
+ cache.insert("two", new int(2), 1);
+ QCOMPARE(cache.totalCost(), 1);
+
+ cache.insert("three", new int(3), 2);
+ QCOMPARE(cache.totalCost(), 3);
+
+ cache.insert("four", new int(4), 10000);
+ QCOMPARE(cache.totalCost(), 3);
+ QVERIFY(!cache.contains("four"));
+
+ cache.insert("five", new int(5), -5);
+ QCOMPARE(cache.totalCost(), -2);
+
+ cache.insert("six", new int(6), 101);
+ QCOMPARE(cache.totalCost(), -2);
+
+ cache.insert("seven", new int(7), 100);
+ QCOMPARE(cache.totalCost(), 98);
+ QCOMPARE(cache.size(), 5);
+
+ cache.insert("eight", new int(8), 2);
+ QCOMPARE(cache.totalCost(), 100);
+ QCOMPARE(cache.size(), 6);
+}
+
+void tst_QCache::clear()
+{
+ {
+ QCache<QString, Foo> cache(200);
+ QCOMPARE(cache.totalCost(), 0);
+
+ for (int i = -3; i < 9; ++i)
+ cache.insert(QString::number(i), new Foo, i);
+ QCOMPARE(cache.totalCost(), 30);
+
+ QCOMPARE(cache.size(), 12);
+ QVERIFY(!cache.isEmpty());
+ cache.setMaxCost(300);
+
+ for (int j = 0; j < 3; ++j) {
+ cache.clear();
+ QCOMPARE(cache.totalCost(), 0);
+ QCOMPARE(cache.size(), 0);
+ QVERIFY(cache.isEmpty());
+ QCOMPARE(Foo::count, 0);
+ QCOMPARE(cache.maxCost(), 300);
+ }
+ cache.insert("10", new Foo, 10);
+ QCOMPARE(cache.size(), 1);
+ cache.setMaxCost(9);
+ QCOMPARE(cache.size(), 0);
+
+ cache.insert("11", new Foo, 9);
+ QCOMPARE(cache.size(), 1);
+ QCOMPARE(Foo::count, 1);
+ }
+ QCOMPARE(Foo::count, 0);
+}
+
+void tst_QCache::insert()
+{
+ QCache<QString, Foo> cache;
+
+ Foo *f1 = new Foo;
+ cache.insert("one", f1, 1);
+ QVERIFY(cache.contains("one"));
+
+ Foo *f2 = new Foo;
+ cache.insert("two", f2, 2);
+ QVERIFY(cache.contains("two"));
+ QCOMPARE(cache.size(), 2);
+
+ Foo *f3 = new Foo;
+ cache.insert("two", f3, 2);
+ QVERIFY(cache.contains("two"));
+ QCOMPARE(cache.size(), 2);
+
+ QVERIFY(cache["two"] == f3);
+ QCOMPARE(Foo::count, 2);
+
+ /*
+ If the new item is too big, any item with the same name in
+ the cache must still be removed, otherwise the application
+ might get bad results.
+ */
+ Foo *f4 = new Foo;
+ cache.insert("two", f4, 10000);
+ QVERIFY(!cache.contains("two"));
+ QCOMPARE(cache.size(), 1);
+ QCOMPARE(Foo::count, 1);
+}
+
+void tst_QCache::contains()
+{
+ QCache<int, int> cache;
+ QVERIFY(!cache.contains(0));
+ QVERIFY(!cache.contains(1));
+
+ cache.insert(1, new int(1), 1);
+ QVERIFY(!cache.contains(0));
+ QVERIFY(cache.contains(1));
+
+ cache.remove(0);
+ cache.remove(1);
+ QVERIFY(!cache.contains(0));
+ QVERIFY(!cache.contains(1));
+
+ cache.insert(1, new int(1), 1);
+ QVERIFY(!cache.contains(0));
+ QVERIFY(cache.contains(1));
+
+ cache.clear();
+ QVERIFY(!cache.contains(0));
+ QVERIFY(!cache.contains(1));
+}
+
+void tst_QCache::operator_bracket_bracket()
+{
+ QCache<int, int> cache;
+ cache.insert(1, new int(2));
+ QVERIFY(cache[0] == 0);
+ QVERIFY(cache[1] != 0);
+ QCOMPARE(*cache[1], 2);
+
+ cache.insert(1, new int(4));
+ QVERIFY(cache[1] != 0);
+ QCOMPARE(*cache[1], 4);
+
+ // check that operator[] doesn't remove the item
+ QVERIFY(cache[1] != 0);
+ QCOMPARE(*cache[1], 4);
+
+ cache.remove(1);
+ QVERIFY(cache[1] == 0);
+}
+
+void tst_QCache::remove()
+{
+ QCache<QString, Foo> cache;
+ cache.remove(QString());
+ cache.remove("alpha");
+ QVERIFY(cache.isEmpty());
+
+ cache.insert("alpha", new Foo, 10);
+ QCOMPARE(cache.size(), 1);
+
+ cache.insert("beta", new Foo, 20);
+ QCOMPARE(cache.size(), 2);
+
+ for (int i = 0; i < 10; ++i) {
+ cache.remove("alpha");
+ QCOMPARE(cache.size(), 1);
+ QCOMPARE(cache.totalCost(), 20);
+ }
+
+ cache.setMaxCost(1);
+ QCOMPARE(cache.size(), 0);
+ cache.remove("beta");
+ QCOMPARE(cache.size(), 0);
+}
+
+void tst_QCache::take()
+{
+ QCache<QString, Foo> cache;
+ QCOMPARE(cache.take(QString()), (Foo*)0);
+ QCOMPARE(cache.take("alpha"), (Foo*)0);
+ QVERIFY(cache.isEmpty());
+
+ Foo *f1 = new Foo;
+ cache.insert("alpha", f1, 10);
+ QCOMPARE(cache.size(), 1);
+ QVERIFY(cache["alpha"] == f1);
+
+ cache.insert("beta", new Foo, 20);
+ QCOMPARE(cache.size(), 2);
+
+ QCOMPARE(cache.take("alpha"), f1);
+ QCOMPARE(cache.size(), 1);
+ QCOMPARE(cache.totalCost(), 20);
+ QCOMPARE(Foo::count, 2);
+ delete f1;
+ QCOMPARE(Foo::count, 1);
+
+ QCOMPARE(cache.take("alpha"), (Foo*)0);
+ QCOMPARE(Foo::count, 1);
+ QCOMPARE(cache.size(), 1);
+ QCOMPARE(cache.totalCost(), 20);
+
+ cache.setMaxCost(1);
+ QCOMPARE(cache.size(), 0);
+ QCOMPARE(cache.take("beta"), (Foo*)0);
+ QCOMPARE(cache.size(), 0);
+}
+
+struct KeyType
+{
+ int foo;
+
+ KeyType(int x) : foo(x) {}
+
+private:
+ KeyType &operator=(const KeyType &);
+};
+
+struct ValueType
+{
+ int foo;
+
+ ValueType(int x) : foo(x) {}
+
+private:
+ ValueType(const ValueType &);
+ ValueType &operator=(const ValueType &);
+};
+
+bool operator==(const KeyType &key1, const KeyType &key2)
+{
+ return key1.foo == key2.foo;
+}
+
+uint qHash(const KeyType &key)
+{
+ return qHash(key.foo);
+}
+
+void tst_QCache::axioms_on_key_type()
+{
+ QCache<KeyType, ValueType> foo;
+ foo.setMaxCost(1);
+ foo.clear();
+ foo.insert(KeyType(123), new ValueType(123));
+ foo.object(KeyType(123));
+ foo.contains(KeyType(456));
+ foo[KeyType(456)];
+ foo.remove(KeyType(456));
+ foo.remove(KeyType(123));
+ foo.take(KeyType(789));
+// If this fails, contact the maintaner
+ QVERIFY(sizeof(QHash<int, int>) == sizeof(void *));
+}
+
+QTEST_APPLESS_MAIN(tst_QCache)
+#include "tst_qcache.moc"
diff --git a/tests/auto/corelib/tools/qchar/.gitignore b/tests/auto/corelib/tools/qchar/.gitignore
new file mode 100644
index 0000000000..341b3e6c3f
--- /dev/null
+++ b/tests/auto/corelib/tools/qchar/.gitignore
@@ -0,0 +1 @@
+tst_qchar
diff --git a/tests/auto/corelib/tools/qchar/NormalizationTest.txt b/tests/auto/corelib/tools/qchar/NormalizationTest.txt
new file mode 100644
index 0000000000..f36f5a68ce
--- /dev/null
+++ b/tests/auto/corelib/tools/qchar/NormalizationTest.txt
@@ -0,0 +1,17650 @@
+# NormalizationTest-5.0.0.txt
+# Date: 2006-06-07, 17:43:01 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+#
+# Normalization Test Suite
+# Format:
+#
+# Columns (c1, c2,...) are separated by semicolons
+# Comments are indicated with hash marks
+#
+# CONFORMANCE:
+# 1. The following invariants must be true for all conformant implementations
+#
+# NFC
+# c2 == NFC(c1) == NFC(c2) == NFC(c3)
+# c4 == NFC(c4) == NFC(c5)
+#
+# NFD
+# c3 == NFD(c1) == NFD(c2) == NFD(c3)
+# c5 == NFD(c4) == NFD(c5)
+#
+# NFKC
+# c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+#
+# NFKD
+# c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+#
+# 2. For every code point X assigned in this version of Unicode that is not specifically
+# listed in Part 1, the following invariants must be true for all conformant
+# implementations:
+#
+# X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X)
+#
+@Part0 # Specific cases
+#
+1E0A;1E0A;0044 0307;1E0A;0044 0307; # (Ḋ; Ḋ; D◌̇; Ḋ; D◌̇; ) LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0C;1E0C;0044 0323;1E0C;0044 0323; # (Ḍ; Ḍ; D◌̣; Ḍ; D◌̣; ) LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0A 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307; # (Ḋ◌̣; Ḍ◌̇; D◌̣◌̇; Ḍ◌̇; D◌̣◌̇; ) LATIN CAPITAL LETTER D WITH DOT ABOVE, COMBINING DOT BELOW
+1E0C 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307; # (Ḍ◌̇; Ḍ◌̇; D◌̣◌̇; Ḍ◌̇; D◌̣◌̇; ) LATIN CAPITAL LETTER D WITH DOT BELOW, COMBINING DOT ABOVE
+0044 0307 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307; # (D◌̇◌̣; Ḍ◌̇; D◌̣◌̇; Ḍ◌̇; D◌̣◌̇; ) LATIN CAPITAL LETTER D, COMBINING DOT ABOVE, COMBINING DOT BELOW
+0044 0323 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307; # (D◌̣◌̇; Ḍ◌̇; D◌̣◌̇; Ḍ◌̇; D◌̣◌̇; ) LATIN CAPITAL LETTER D, COMBINING DOT BELOW, COMBINING DOT ABOVE
+1E0A 031B;1E0A 031B;0044 031B 0307;1E0A 031B;0044 031B 0307; # (Ḋ◌̛; Ḋ◌̛; D◌̛◌̇; Ḋ◌̛; D◌̛◌̇; ) LATIN CAPITAL LETTER D WITH DOT ABOVE, COMBINING HORN
+1E0C 031B;1E0C 031B;0044 031B 0323;1E0C 031B;0044 031B 0323; # (Ḍ◌̛; Ḍ◌̛; D◌̛◌̣; Ḍ◌̛; D◌̛◌̣; ) LATIN CAPITAL LETTER D WITH DOT BELOW, COMBINING HORN
+1E0A 031B 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307; # (Ḋ◌̛◌̣; Ḍ◌̛◌̇; D◌̛◌̣◌̇; Ḍ◌̛◌̇; D◌̛◌̣◌̇; ) LATIN CAPITAL LETTER D WITH DOT ABOVE, COMBINING HORN, COMBINING DOT BELOW
+1E0C 031B 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307; # (Ḍ◌̛◌̇; Ḍ◌̛◌̇; D◌̛◌̣◌̇; Ḍ◌̛◌̇; D◌̛◌̣◌̇; ) LATIN CAPITAL LETTER D WITH DOT BELOW, COMBINING HORN, COMBINING DOT ABOVE
+0044 031B 0307 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307; # (D◌̛◌̇◌̣; Ḍ◌̛◌̇; D◌̛◌̣◌̇; Ḍ◌̛◌̇; D◌̛◌̣◌̇; ) LATIN CAPITAL LETTER D, COMBINING HORN, COMBINING DOT ABOVE, COMBINING DOT BELOW
+0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307; # (D◌̛◌̣◌̇; Ḍ◌̛◌̇; D◌̛◌̣◌̇; Ḍ◌̛◌̇; D◌̛◌̣◌̇; ) LATIN CAPITAL LETTER D, COMBINING HORN, COMBINING DOT BELOW, COMBINING DOT ABOVE
+00C8;00C8;0045 0300;00C8;0045 0300; # (È; È; E◌̀; È; E◌̀; ) LATIN CAPITAL LETTER E WITH GRAVE
+0112;0112;0045 0304;0112;0045 0304; # (Ē; Ē; E◌̄; Ē; E◌̄; ) LATIN CAPITAL LETTER E WITH MACRON
+0045 0300;00C8;0045 0300;00C8;0045 0300; # (E◌̀; È; E◌̀; È; E◌̀; ) LATIN CAPITAL LETTER E, COMBINING GRAVE ACCENT
+0045 0304;0112;0045 0304;0112;0045 0304; # (E◌̄; Ē; E◌̄; Ē; E◌̄; ) LATIN CAPITAL LETTER E, COMBINING MACRON
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300; # (Ḕ; Ḕ; E◌̄◌̀; Ḕ; E◌̄◌̀; ) LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+0112 0300;1E14;0045 0304 0300;1E14;0045 0304 0300; # (Ē◌̀; Ḕ; E◌̄◌̀; Ḕ; E◌̄◌̀; ) LATIN CAPITAL LETTER E WITH MACRON, COMBINING GRAVE ACCENT
+1E14 0304;1E14 0304;0045 0304 0300 0304;1E14 0304;0045 0304 0300 0304; # (Ḕ◌̄; Ḕ◌̄; E◌̄◌̀◌̄; Ḕ◌̄; E◌̄◌̀◌̄; ) LATIN CAPITAL LETTER E WITH MACRON AND GRAVE, COMBINING MACRON
+0045 0304 0300;1E14;0045 0304 0300;1E14;0045 0304 0300; # (E◌̄◌̀; Ḕ; E◌̄◌̀; Ḕ; E◌̄◌̀; ) LATIN CAPITAL LETTER E, COMBINING MACRON, COMBINING GRAVE ACCENT
+0045 0300 0304;00C8 0304;0045 0300 0304;00C8 0304;0045 0300 0304; # (E◌̀◌̄; È◌̄; E◌̀◌̄; È◌̄; E◌̀◌̄; ) LATIN CAPITAL LETTER E, COMBINING GRAVE ACCENT, COMBINING MACRON
+05B8 05B9 05B1 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F; # (◌ָ◌ֹ◌ֱ◌֑׃◌ְ◌֬◌֟; ◌ֱ◌ָ◌ֹ◌֑׃◌ְ◌֬◌֟; ◌ֱ◌ָ◌ֹ◌֑׃◌ְ◌֬◌֟; ◌ֱ◌ָ◌ֹ◌֑׃◌ְ◌֬◌֟; ◌ֱ◌ָ◌ֹ◌֑׃◌ְ◌֬◌֟; ) HEBREW POINT QAMATS, HEBREW POINT HOLAM, HEBREW POINT HATAF SEGOL, HEBREW ACCENT ETNAHTA, HEBREW PUNCTUATION SOF PASUQ, HEBREW POINT SHEVA, HEBREW ACCENT ILUY, HEBREW ACCENT QARNEY PARA
+0592 05B7 05BC 05A5 05B0 05C0 05C4 05AD;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4; # (◌֒◌ַ◌ּ◌֥◌ְ׀◌ׄ◌֭; ◌ְ◌ַ◌ּ◌֥◌֒׀◌֭◌ׄ; ◌ְ◌ַ◌ּ◌֥◌֒׀◌֭◌ׄ; ◌ְ◌ַ◌ּ◌֥◌֒׀◌֭◌ׄ; ◌ְ◌ַ◌ּ◌֥◌֒׀◌֭◌ׄ; ) HEBREW ACCENT SEGOL, HEBREW POINT PATAH, HEBREW POINT DAGESH OR MAPIQ, HEBREW ACCENT MERKHA, HEBREW POINT SHEVA, HEBREW PUNCTUATION PASEQ, HEBREW MARK UPPER DOT, HEBREW ACCENT DEHI
+#
+@Part1 # Character by character test
+# All characters not explicitly occurring in c1 of Part 1 have identical NFC, D, KC, KD forms.
+#
+00A0;00A0;00A0;0020;0020; # ( ;  ;  ; ; ; ) NO-BREAK SPACE
+00A8;00A8;00A8;0020 0308;0020 0308; # (¨; ¨; ¨; ◌̈; ◌̈; ) DIAERESIS
+00AA;00AA;00AA;0061;0061; # (ª; ª; ª; a; a; ) FEMININE ORDINAL INDICATOR
+00AF;00AF;00AF;0020 0304;0020 0304; # (¯; ¯; ¯; ◌̄; ◌̄; ) MACRON
+00B2;00B2;00B2;0032;0032; # (²; ²; ²; 2; 2; ) SUPERSCRIPT TWO
+00B3;00B3;00B3;0033;0033; # (³; ³; ³; 3; 3; ) SUPERSCRIPT THREE
+00B4;00B4;00B4;0020 0301;0020 0301; # (´; ´; ´; â—ŒÌ; â—ŒÌ; ) ACUTE ACCENT
+00B5;00B5;00B5;03BC;03BC; # (µ; µ; µ; μ; μ; ) MICRO SIGN
+00B8;00B8;00B8;0020 0327;0020 0327; # (¸; ¸; ¸; ◌̧; ◌̧; ) CEDILLA
+00B9;00B9;00B9;0031;0031; # (¹; ¹; ¹; 1; 1; ) SUPERSCRIPT ONE
+00BA;00BA;00BA;006F;006F; # (º; º; º; o; o; ) MASCULINE ORDINAL INDICATOR
+00BC;00BC;00BC;0031 2044 0034;0031 2044 0034; # (¼; ¼; ¼; 1â„4; 1â„4; ) VULGAR FRACTION ONE QUARTER
+00BD;00BD;00BD;0031 2044 0032;0031 2044 0032; # (½; ½; ½; 1â„2; 1â„2; ) VULGAR FRACTION ONE HALF
+00BE;00BE;00BE;0033 2044 0034;0033 2044 0034; # (¾; ¾; ¾; 3â„4; 3â„4; ) VULGAR FRACTION THREE QUARTERS
+00C0;00C0;0041 0300;00C0;0041 0300; # (À; À; A◌̀; À; A◌̀; ) LATIN CAPITAL LETTER A WITH GRAVE
+00C1;00C1;0041 0301;00C1;0041 0301; # (Ã; Ã; Aâ—ŒÌ; Ã; Aâ—ŒÌ; ) LATIN CAPITAL LETTER A WITH ACUTE
+00C2;00C2;0041 0302;00C2;0041 0302; # (Â; Â; A◌̂; Â; A◌̂; ) LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C3;00C3;0041 0303;00C3;0041 0303; # (Ã; Ã; A◌̃; Ã; A◌̃; ) LATIN CAPITAL LETTER A WITH TILDE
+00C4;00C4;0041 0308;00C4;0041 0308; # (Ä; Ä; A◌̈; Ä; A◌̈; ) LATIN CAPITAL LETTER A WITH DIAERESIS
+00C5;00C5;0041 030A;00C5;0041 030A; # (Å; Å; A◌̊; Å; A◌̊; ) LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7;00C7;0043 0327;00C7;0043 0327; # (Ç; Ç; C◌̧; Ç; C◌̧; ) LATIN CAPITAL LETTER C WITH CEDILLA
+00C8;00C8;0045 0300;00C8;0045 0300; # (È; È; E◌̀; È; E◌̀; ) LATIN CAPITAL LETTER E WITH GRAVE
+00C9;00C9;0045 0301;00C9;0045 0301; # (É; É; Eâ—ŒÌ; É; Eâ—ŒÌ; ) LATIN CAPITAL LETTER E WITH ACUTE
+00CA;00CA;0045 0302;00CA;0045 0302; # (Ê; Ê; E◌̂; Ê; E◌̂; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB;00CB;0045 0308;00CB;0045 0308; # (Ë; Ë; E◌̈; Ë; E◌̈; ) LATIN CAPITAL LETTER E WITH DIAERESIS
+00CC;00CC;0049 0300;00CC;0049 0300; # (Ì; Ì; I◌̀; Ì; I◌̀; ) LATIN CAPITAL LETTER I WITH GRAVE
+00CD;00CD;0049 0301;00CD;0049 0301; # (Ã; Ã; Iâ—ŒÌ; Ã; Iâ—ŒÌ; ) LATIN CAPITAL LETTER I WITH ACUTE
+00CE;00CE;0049 0302;00CE;0049 0302; # (Î; Î; I◌̂; Î; I◌̂; ) LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF;00CF;0049 0308;00CF;0049 0308; # (Ã; Ã; I◌̈; Ã; I◌̈; ) LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1;00D1;004E 0303;00D1;004E 0303; # (Ñ; Ñ; N◌̃; Ñ; N◌̃; ) LATIN CAPITAL LETTER N WITH TILDE
+00D2;00D2;004F 0300;00D2;004F 0300; # (Ò; Ò; O◌̀; Ò; O◌̀; ) LATIN CAPITAL LETTER O WITH GRAVE
+00D3;00D3;004F 0301;00D3;004F 0301; # (Ó; Ó; Oâ—ŒÌ; Ó; Oâ—ŒÌ; ) LATIN CAPITAL LETTER O WITH ACUTE
+00D4;00D4;004F 0302;00D4;004F 0302; # (Ô; Ô; O◌̂; Ô; O◌̂; ) LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D5;00D5;004F 0303;00D5;004F 0303; # (Õ; Õ; O◌̃; Õ; O◌̃; ) LATIN CAPITAL LETTER O WITH TILDE
+00D6;00D6;004F 0308;00D6;004F 0308; # (Ö; Ö; O◌̈; Ö; O◌̈; ) LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9;00D9;0055 0300;00D9;0055 0300; # (Ù; Ù; U◌̀; Ù; U◌̀; ) LATIN CAPITAL LETTER U WITH GRAVE
+00DA;00DA;0055 0301;00DA;0055 0301; # (Ú; Ú; Uâ—ŒÌ; Ú; Uâ—ŒÌ; ) LATIN CAPITAL LETTER U WITH ACUTE
+00DB;00DB;0055 0302;00DB;0055 0302; # (Û; Û; U◌̂; Û; U◌̂; ) LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC;00DC;0055 0308;00DC;0055 0308; # (Ü; Ü; U◌̈; Ü; U◌̈; ) LATIN CAPITAL LETTER U WITH DIAERESIS
+00DD;00DD;0059 0301;00DD;0059 0301; # (Ã; Ã; Yâ—ŒÌ; Ã; Yâ—ŒÌ; ) LATIN CAPITAL LETTER Y WITH ACUTE
+00E0;00E0;0061 0300;00E0;0061 0300; # (à; à; a◌̀; à; a◌̀; ) LATIN SMALL LETTER A WITH GRAVE
+00E1;00E1;0061 0301;00E1;0061 0301; # (á; á; aâ—ŒÌ; á; aâ—ŒÌ; ) LATIN SMALL LETTER A WITH ACUTE
+00E2;00E2;0061 0302;00E2;0061 0302; # (â; â; a◌̂; â; a◌̂; ) LATIN SMALL LETTER A WITH CIRCUMFLEX
+00E3;00E3;0061 0303;00E3;0061 0303; # (ã; ã; a◌̃; ã; a◌̃; ) LATIN SMALL LETTER A WITH TILDE
+00E4;00E4;0061 0308;00E4;0061 0308; # (ä; ä; a◌̈; ä; a◌̈; ) LATIN SMALL LETTER A WITH DIAERESIS
+00E5;00E5;0061 030A;00E5;0061 030A; # (å; å; a◌̊; å; a◌̊; ) LATIN SMALL LETTER A WITH RING ABOVE
+00E7;00E7;0063 0327;00E7;0063 0327; # (ç; ç; c◌̧; ç; c◌̧; ) LATIN SMALL LETTER C WITH CEDILLA
+00E8;00E8;0065 0300;00E8;0065 0300; # (è; è; e◌̀; è; e◌̀; ) LATIN SMALL LETTER E WITH GRAVE
+00E9;00E9;0065 0301;00E9;0065 0301; # (é; é; eâ—ŒÌ; é; eâ—ŒÌ; ) LATIN SMALL LETTER E WITH ACUTE
+00EA;00EA;0065 0302;00EA;0065 0302; # (ê; ê; e◌̂; ê; e◌̂; ) LATIN SMALL LETTER E WITH CIRCUMFLEX
+00EB;00EB;0065 0308;00EB;0065 0308; # (ë; ë; e◌̈; ë; e◌̈; ) LATIN SMALL LETTER E WITH DIAERESIS
+00EC;00EC;0069 0300;00EC;0069 0300; # (ì; ì; i◌̀; ì; i◌̀; ) LATIN SMALL LETTER I WITH GRAVE
+00ED;00ED;0069 0301;00ED;0069 0301; # (í; í; iâ—ŒÌ; í; iâ—ŒÌ; ) LATIN SMALL LETTER I WITH ACUTE
+00EE;00EE;0069 0302;00EE;0069 0302; # (î; î; i◌̂; î; i◌̂; ) LATIN SMALL LETTER I WITH CIRCUMFLEX
+00EF;00EF;0069 0308;00EF;0069 0308; # (ï; ï; i◌̈; ï; i◌̈; ) LATIN SMALL LETTER I WITH DIAERESIS
+00F1;00F1;006E 0303;00F1;006E 0303; # (ñ; ñ; n◌̃; ñ; n◌̃; ) LATIN SMALL LETTER N WITH TILDE
+00F2;00F2;006F 0300;00F2;006F 0300; # (ò; ò; o◌̀; ò; o◌̀; ) LATIN SMALL LETTER O WITH GRAVE
+00F3;00F3;006F 0301;00F3;006F 0301; # (ó; ó; oâ—ŒÌ; ó; oâ—ŒÌ; ) LATIN SMALL LETTER O WITH ACUTE
+00F4;00F4;006F 0302;00F4;006F 0302; # (ô; ô; o◌̂; ô; o◌̂; ) LATIN SMALL LETTER O WITH CIRCUMFLEX
+00F5;00F5;006F 0303;00F5;006F 0303; # (õ; õ; o◌̃; õ; o◌̃; ) LATIN SMALL LETTER O WITH TILDE
+00F6;00F6;006F 0308;00F6;006F 0308; # (ö; ö; o◌̈; ö; o◌̈; ) LATIN SMALL LETTER O WITH DIAERESIS
+00F9;00F9;0075 0300;00F9;0075 0300; # (ù; ù; u◌̀; ù; u◌̀; ) LATIN SMALL LETTER U WITH GRAVE
+00FA;00FA;0075 0301;00FA;0075 0301; # (ú; ú; uâ—ŒÌ; ú; uâ—ŒÌ; ) LATIN SMALL LETTER U WITH ACUTE
+00FB;00FB;0075 0302;00FB;0075 0302; # (û; û; u◌̂; û; u◌̂; ) LATIN SMALL LETTER U WITH CIRCUMFLEX
+00FC;00FC;0075 0308;00FC;0075 0308; # (ü; ü; u◌̈; ü; u◌̈; ) LATIN SMALL LETTER U WITH DIAERESIS
+00FD;00FD;0079 0301;00FD;0079 0301; # (ý; ý; yâ—ŒÌ; ý; yâ—ŒÌ; ) LATIN SMALL LETTER Y WITH ACUTE
+00FF;00FF;0079 0308;00FF;0079 0308; # (ÿ; ÿ; y◌̈; ÿ; y◌̈; ) LATIN SMALL LETTER Y WITH DIAERESIS
+0100;0100;0041 0304;0100;0041 0304; # (Ā; Ā; A◌̄; Ā; A◌̄; ) LATIN CAPITAL LETTER A WITH MACRON
+0101;0101;0061 0304;0101;0061 0304; # (Ä; Ä; a◌̄; Ä; a◌̄; ) LATIN SMALL LETTER A WITH MACRON
+0102;0102;0041 0306;0102;0041 0306; # (Ă; Ă; A◌̆; Ă; A◌̆; ) LATIN CAPITAL LETTER A WITH BREVE
+0103;0103;0061 0306;0103;0061 0306; # (ă; ă; a◌̆; ă; a◌̆; ) LATIN SMALL LETTER A WITH BREVE
+0104;0104;0041 0328;0104;0041 0328; # (Ą; Ą; A◌̨; Ą; A◌̨; ) LATIN CAPITAL LETTER A WITH OGONEK
+0105;0105;0061 0328;0105;0061 0328; # (ą; ą; a◌̨; ą; a◌̨; ) LATIN SMALL LETTER A WITH OGONEK
+0106;0106;0043 0301;0106;0043 0301; # (Ć; Ć; Câ—ŒÌ; Ć; Câ—ŒÌ; ) LATIN CAPITAL LETTER C WITH ACUTE
+0107;0107;0063 0301;0107;0063 0301; # (ć; ć; câ—ŒÌ; ć; câ—ŒÌ; ) LATIN SMALL LETTER C WITH ACUTE
+0108;0108;0043 0302;0108;0043 0302; # (Ĉ; Ĉ; C◌̂; Ĉ; C◌̂; ) LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+0109;0109;0063 0302;0109;0063 0302; # (ĉ; ĉ; c◌̂; ĉ; c◌̂; ) LATIN SMALL LETTER C WITH CIRCUMFLEX
+010A;010A;0043 0307;010A;0043 0307; # (Ċ; Ċ; C◌̇; Ċ; C◌̇; ) LATIN CAPITAL LETTER C WITH DOT ABOVE
+010B;010B;0063 0307;010B;0063 0307; # (ċ; ċ; c◌̇; ċ; c◌̇; ) LATIN SMALL LETTER C WITH DOT ABOVE
+010C;010C;0043 030C;010C;0043 030C; # (Č; Č; C◌̌; Č; C◌̌; ) LATIN CAPITAL LETTER C WITH CARON
+010D;010D;0063 030C;010D;0063 030C; # (Ä; Ä; c◌̌; Ä; c◌̌; ) LATIN SMALL LETTER C WITH CARON
+010E;010E;0044 030C;010E;0044 030C; # (Ď; Ď; D◌̌; Ď; D◌̌; ) LATIN CAPITAL LETTER D WITH CARON
+010F;010F;0064 030C;010F;0064 030C; # (Ä; Ä; d◌̌; Ä; d◌̌; ) LATIN SMALL LETTER D WITH CARON
+0112;0112;0045 0304;0112;0045 0304; # (Ē; Ē; E◌̄; Ē; E◌̄; ) LATIN CAPITAL LETTER E WITH MACRON
+0113;0113;0065 0304;0113;0065 0304; # (ē; ē; e◌̄; ē; e◌̄; ) LATIN SMALL LETTER E WITH MACRON
+0114;0114;0045 0306;0114;0045 0306; # (Ĕ; Ĕ; E◌̆; Ĕ; E◌̆; ) LATIN CAPITAL LETTER E WITH BREVE
+0115;0115;0065 0306;0115;0065 0306; # (ĕ; ĕ; e◌̆; ĕ; e◌̆; ) LATIN SMALL LETTER E WITH BREVE
+0116;0116;0045 0307;0116;0045 0307; # (Ė; Ė; E◌̇; Ė; E◌̇; ) LATIN CAPITAL LETTER E WITH DOT ABOVE
+0117;0117;0065 0307;0117;0065 0307; # (ė; ė; e◌̇; ė; e◌̇; ) LATIN SMALL LETTER E WITH DOT ABOVE
+0118;0118;0045 0328;0118;0045 0328; # (Ę; Ę; E◌̨; Ę; E◌̨; ) LATIN CAPITAL LETTER E WITH OGONEK
+0119;0119;0065 0328;0119;0065 0328; # (ę; ę; e◌̨; ę; e◌̨; ) LATIN SMALL LETTER E WITH OGONEK
+011A;011A;0045 030C;011A;0045 030C; # (Ě; Ě; E◌̌; Ě; E◌̌; ) LATIN CAPITAL LETTER E WITH CARON
+011B;011B;0065 030C;011B;0065 030C; # (ě; ě; e◌̌; ě; e◌̌; ) LATIN SMALL LETTER E WITH CARON
+011C;011C;0047 0302;011C;0047 0302; # (Ĝ; Ĝ; G◌̂; Ĝ; G◌̂; ) LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011D;011D;0067 0302;011D;0067 0302; # (Ä; Ä; g◌̂; Ä; g◌̂; ) LATIN SMALL LETTER G WITH CIRCUMFLEX
+011E;011E;0047 0306;011E;0047 0306; # (Ğ; Ğ; G◌̆; Ğ; G◌̆; ) LATIN CAPITAL LETTER G WITH BREVE
+011F;011F;0067 0306;011F;0067 0306; # (ğ; ğ; g◌̆; ğ; g◌̆; ) LATIN SMALL LETTER G WITH BREVE
+0120;0120;0047 0307;0120;0047 0307; # (Ġ; Ġ; G◌̇; Ġ; G◌̇; ) LATIN CAPITAL LETTER G WITH DOT ABOVE
+0121;0121;0067 0307;0121;0067 0307; # (ġ; ġ; g◌̇; ġ; g◌̇; ) LATIN SMALL LETTER G WITH DOT ABOVE
+0122;0122;0047 0327;0122;0047 0327; # (Ģ; Ģ; G◌̧; Ģ; G◌̧; ) LATIN CAPITAL LETTER G WITH CEDILLA
+0123;0123;0067 0327;0123;0067 0327; # (ģ; ģ; g◌̧; ģ; g◌̧; ) LATIN SMALL LETTER G WITH CEDILLA
+0124;0124;0048 0302;0124;0048 0302; # (Ĥ; Ĥ; H◌̂; Ĥ; H◌̂; ) LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0125;0125;0068 0302;0125;0068 0302; # (ĥ; ĥ; h◌̂; ĥ; h◌̂; ) LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128;0128;0049 0303;0128;0049 0303; # (Ĩ; Ĩ; I◌̃; Ĩ; I◌̃; ) LATIN CAPITAL LETTER I WITH TILDE
+0129;0129;0069 0303;0129;0069 0303; # (ĩ; ĩ; i◌̃; ĩ; i◌̃; ) LATIN SMALL LETTER I WITH TILDE
+012A;012A;0049 0304;012A;0049 0304; # (Ī; Ī; I◌̄; Ī; I◌̄; ) LATIN CAPITAL LETTER I WITH MACRON
+012B;012B;0069 0304;012B;0069 0304; # (ī; ī; i◌̄; ī; i◌̄; ) LATIN SMALL LETTER I WITH MACRON
+012C;012C;0049 0306;012C;0049 0306; # (Ĭ; Ĭ; I◌̆; Ĭ; I◌̆; ) LATIN CAPITAL LETTER I WITH BREVE
+012D;012D;0069 0306;012D;0069 0306; # (ĭ; ĭ; i◌̆; ĭ; i◌̆; ) LATIN SMALL LETTER I WITH BREVE
+012E;012E;0049 0328;012E;0049 0328; # (Į; Į; I◌̨; Į; I◌̨; ) LATIN CAPITAL LETTER I WITH OGONEK
+012F;012F;0069 0328;012F;0069 0328; # (į; į; i◌̨; į; i◌̨; ) LATIN SMALL LETTER I WITH OGONEK
+0130;0130;0049 0307;0130;0049 0307; # (İ; İ; I◌̇; İ; I◌̇; ) LATIN CAPITAL LETTER I WITH DOT ABOVE
+0132;0132;0132;0049 004A;0049 004A; # (IJ; IJ; IJ; IJ; IJ; ) LATIN CAPITAL LIGATURE IJ
+0133;0133;0133;0069 006A;0069 006A; # (ij; ij; ij; ij; ij; ) LATIN SMALL LIGATURE IJ
+0134;0134;004A 0302;0134;004A 0302; # (Ĵ; Ĵ; J◌̂; Ĵ; J◌̂; ) LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0135;0135;006A 0302;0135;006A 0302; # (ĵ; ĵ; j◌̂; ĵ; j◌̂; ) LATIN SMALL LETTER J WITH CIRCUMFLEX
+0136;0136;004B 0327;0136;004B 0327; # (Ķ; Ķ; K◌̧; Ķ; K◌̧; ) LATIN CAPITAL LETTER K WITH CEDILLA
+0137;0137;006B 0327;0137;006B 0327; # (ķ; ķ; k◌̧; ķ; k◌̧; ) LATIN SMALL LETTER K WITH CEDILLA
+0139;0139;004C 0301;0139;004C 0301; # (Ĺ; Ĺ; Lâ—ŒÌ; Ĺ; Lâ—ŒÌ; ) LATIN CAPITAL LETTER L WITH ACUTE
+013A;013A;006C 0301;013A;006C 0301; # (ĺ; ĺ; lâ—ŒÌ; ĺ; lâ—ŒÌ; ) LATIN SMALL LETTER L WITH ACUTE
+013B;013B;004C 0327;013B;004C 0327; # (Ļ; Ļ; L◌̧; Ļ; L◌̧; ) LATIN CAPITAL LETTER L WITH CEDILLA
+013C;013C;006C 0327;013C;006C 0327; # (ļ; ļ; l◌̧; ļ; l◌̧; ) LATIN SMALL LETTER L WITH CEDILLA
+013D;013D;004C 030C;013D;004C 030C; # (Ľ; Ľ; L◌̌; Ľ; L◌̌; ) LATIN CAPITAL LETTER L WITH CARON
+013E;013E;006C 030C;013E;006C 030C; # (ľ; ľ; l◌̌; ľ; l◌̌; ) LATIN SMALL LETTER L WITH CARON
+013F;013F;013F;004C 00B7;004C 00B7; # (Ŀ; Ŀ; Ŀ; L·; L·; ) LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0140;0140;0140;006C 00B7;006C 00B7; # (ŀ; ŀ; ŀ; l·; l·; ) LATIN SMALL LETTER L WITH MIDDLE DOT
+0143;0143;004E 0301;0143;004E 0301; # (Ń; Ń; Nâ—ŒÌ; Ń; Nâ—ŒÌ; ) LATIN CAPITAL LETTER N WITH ACUTE
+0144;0144;006E 0301;0144;006E 0301; # (Å„; Å„; nâ—ŒÌ; Å„; nâ—ŒÌ; ) LATIN SMALL LETTER N WITH ACUTE
+0145;0145;004E 0327;0145;004E 0327; # (Ņ; Ņ; N◌̧; Ņ; N◌̧; ) LATIN CAPITAL LETTER N WITH CEDILLA
+0146;0146;006E 0327;0146;006E 0327; # (ņ; ņ; n◌̧; ņ; n◌̧; ) LATIN SMALL LETTER N WITH CEDILLA
+0147;0147;004E 030C;0147;004E 030C; # (Ň; Ň; N◌̌; Ň; N◌̌; ) LATIN CAPITAL LETTER N WITH CARON
+0148;0148;006E 030C;0148;006E 030C; # (ň; ň; n◌̌; ň; n◌̌; ) LATIN SMALL LETTER N WITH CARON
+0149;0149;0149;02BC 006E;02BC 006E; # (ʼn; ʼn; ʼn; ʼn; ʼn; ) LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014C;014C;004F 0304;014C;004F 0304; # (Ō; Ō; O◌̄; Ō; O◌̄; ) LATIN CAPITAL LETTER O WITH MACRON
+014D;014D;006F 0304;014D;006F 0304; # (Å; Å; o◌̄; Å; o◌̄; ) LATIN SMALL LETTER O WITH MACRON
+014E;014E;004F 0306;014E;004F 0306; # (Ŏ; Ŏ; O◌̆; Ŏ; O◌̆; ) LATIN CAPITAL LETTER O WITH BREVE
+014F;014F;006F 0306;014F;006F 0306; # (Å; Å; o◌̆; Å; o◌̆; ) LATIN SMALL LETTER O WITH BREVE
+0150;0150;004F 030B;0150;004F 030B; # (Å; Å; O◌̋; Å; O◌̋; ) LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0151;0151;006F 030B;0151;006F 030B; # (ő; ő; o◌̋; ő; o◌̋; ) LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154;0154;0052 0301;0154;0052 0301; # (Å”; Å”; Râ—ŒÌ; Å”; Râ—ŒÌ; ) LATIN CAPITAL LETTER R WITH ACUTE
+0155;0155;0072 0301;0155;0072 0301; # (Å•; Å•; râ—ŒÌ; Å•; râ—ŒÌ; ) LATIN SMALL LETTER R WITH ACUTE
+0156;0156;0052 0327;0156;0052 0327; # (Ŗ; Ŗ; R◌̧; Ŗ; R◌̧; ) LATIN CAPITAL LETTER R WITH CEDILLA
+0157;0157;0072 0327;0157;0072 0327; # (ŗ; ŗ; r◌̧; ŗ; r◌̧; ) LATIN SMALL LETTER R WITH CEDILLA
+0158;0158;0052 030C;0158;0052 030C; # (Ř; Ř; R◌̌; Ř; R◌̌; ) LATIN CAPITAL LETTER R WITH CARON
+0159;0159;0072 030C;0159;0072 030C; # (ř; ř; r◌̌; ř; r◌̌; ) LATIN SMALL LETTER R WITH CARON
+015A;015A;0053 0301;015A;0053 0301; # (Åš; Åš; Sâ—ŒÌ; Åš; Sâ—ŒÌ; ) LATIN CAPITAL LETTER S WITH ACUTE
+015B;015B;0073 0301;015B;0073 0301; # (Å›; Å›; sâ—ŒÌ; Å›; sâ—ŒÌ; ) LATIN SMALL LETTER S WITH ACUTE
+015C;015C;0053 0302;015C;0053 0302; # (Ŝ; Ŝ; S◌̂; Ŝ; S◌̂; ) LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015D;015D;0073 0302;015D;0073 0302; # (Å; Å; s◌̂; Å; s◌̂; ) LATIN SMALL LETTER S WITH CIRCUMFLEX
+015E;015E;0053 0327;015E;0053 0327; # (Ş; Ş; S◌̧; Ş; S◌̧; ) LATIN CAPITAL LETTER S WITH CEDILLA
+015F;015F;0073 0327;015F;0073 0327; # (ş; ş; s◌̧; ş; s◌̧; ) LATIN SMALL LETTER S WITH CEDILLA
+0160;0160;0053 030C;0160;0053 030C; # (Š; Š; S◌̌; Š; S◌̌; ) LATIN CAPITAL LETTER S WITH CARON
+0161;0161;0073 030C;0161;0073 030C; # (š; š; s◌̌; š; s◌̌; ) LATIN SMALL LETTER S WITH CARON
+0162;0162;0054 0327;0162;0054 0327; # (Ţ; Ţ; T◌̧; Ţ; T◌̧; ) LATIN CAPITAL LETTER T WITH CEDILLA
+0163;0163;0074 0327;0163;0074 0327; # (ţ; ţ; t◌̧; ţ; t◌̧; ) LATIN SMALL LETTER T WITH CEDILLA
+0164;0164;0054 030C;0164;0054 030C; # (Ť; Ť; T◌̌; Ť; T◌̌; ) LATIN CAPITAL LETTER T WITH CARON
+0165;0165;0074 030C;0165;0074 030C; # (ť; ť; t◌̌; ť; t◌̌; ) LATIN SMALL LETTER T WITH CARON
+0168;0168;0055 0303;0168;0055 0303; # (Ũ; Ũ; U◌̃; Ũ; U◌̃; ) LATIN CAPITAL LETTER U WITH TILDE
+0169;0169;0075 0303;0169;0075 0303; # (ũ; ũ; u◌̃; ũ; u◌̃; ) LATIN SMALL LETTER U WITH TILDE
+016A;016A;0055 0304;016A;0055 0304; # (Ū; Ū; U◌̄; Ū; U◌̄; ) LATIN CAPITAL LETTER U WITH MACRON
+016B;016B;0075 0304;016B;0075 0304; # (ū; ū; u◌̄; ū; u◌̄; ) LATIN SMALL LETTER U WITH MACRON
+016C;016C;0055 0306;016C;0055 0306; # (Ŭ; Ŭ; U◌̆; Ŭ; U◌̆; ) LATIN CAPITAL LETTER U WITH BREVE
+016D;016D;0075 0306;016D;0075 0306; # (ŭ; ŭ; u◌̆; ŭ; u◌̆; ) LATIN SMALL LETTER U WITH BREVE
+016E;016E;0055 030A;016E;0055 030A; # (Ů; Ů; U◌̊; Ů; U◌̊; ) LATIN CAPITAL LETTER U WITH RING ABOVE
+016F;016F;0075 030A;016F;0075 030A; # (ů; ů; u◌̊; ů; u◌̊; ) LATIN SMALL LETTER U WITH RING ABOVE
+0170;0170;0055 030B;0170;0055 030B; # (Ű; Ű; U◌̋; Ű; U◌̋; ) LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0171;0171;0075 030B;0171;0075 030B; # (ű; ű; u◌̋; ű; u◌̋; ) LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0172;0172;0055 0328;0172;0055 0328; # (Ų; Ų; U◌̨; Ų; U◌̨; ) LATIN CAPITAL LETTER U WITH OGONEK
+0173;0173;0075 0328;0173;0075 0328; # (ų; ų; u◌̨; ų; u◌̨; ) LATIN SMALL LETTER U WITH OGONEK
+0174;0174;0057 0302;0174;0057 0302; # (Ŵ; Ŵ; W◌̂; Ŵ; W◌̂; ) LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0175;0175;0077 0302;0175;0077 0302; # (ŵ; ŵ; w◌̂; ŵ; w◌̂; ) LATIN SMALL LETTER W WITH CIRCUMFLEX
+0176;0176;0059 0302;0176;0059 0302; # (Ŷ; Ŷ; Y◌̂; Ŷ; Y◌̂; ) LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0177;0177;0079 0302;0177;0079 0302; # (ŷ; ŷ; y◌̂; ŷ; y◌̂; ) LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0178;0178;0059 0308;0178;0059 0308; # (Ÿ; Ÿ; Y◌̈; Ÿ; Y◌̈; ) LATIN CAPITAL LETTER Y WITH DIAERESIS
+0179;0179;005A 0301;0179;005A 0301; # (Ź; Ź; Zâ—ŒÌ; Ź; Zâ—ŒÌ; ) LATIN CAPITAL LETTER Z WITH ACUTE
+017A;017A;007A 0301;017A;007A 0301; # (ź; ź; zâ—ŒÌ; ź; zâ—ŒÌ; ) LATIN SMALL LETTER Z WITH ACUTE
+017B;017B;005A 0307;017B;005A 0307; # (Ż; Ż; Z◌̇; Ż; Z◌̇; ) LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017C;017C;007A 0307;017C;007A 0307; # (ż; ż; z◌̇; ż; z◌̇; ) LATIN SMALL LETTER Z WITH DOT ABOVE
+017D;017D;005A 030C;017D;005A 030C; # (Ž; Ž; Z◌̌; Ž; Z◌̌; ) LATIN CAPITAL LETTER Z WITH CARON
+017E;017E;007A 030C;017E;007A 030C; # (ž; ž; z◌̌; ž; z◌̌; ) LATIN SMALL LETTER Z WITH CARON
+017F;017F;017F;0073;0073; # (Å¿; Å¿; Å¿; s; s; ) LATIN SMALL LETTER LONG S
+01A0;01A0;004F 031B;01A0;004F 031B; # (Ơ; Ơ; O◌̛; Ơ; O◌̛; ) LATIN CAPITAL LETTER O WITH HORN
+01A1;01A1;006F 031B;01A1;006F 031B; # (ơ; ơ; o◌̛; ơ; o◌̛; ) LATIN SMALL LETTER O WITH HORN
+01AF;01AF;0055 031B;01AF;0055 031B; # (Ư; Ư; U◌̛; Ư; U◌̛; ) LATIN CAPITAL LETTER U WITH HORN
+01B0;01B0;0075 031B;01B0;0075 031B; # (ư; ư; u◌̛; ư; u◌̛; ) LATIN SMALL LETTER U WITH HORN
+01C4;01C4;01C4;0044 017D;0044 005A 030C; # (DŽ; DŽ; DŽ; DŽ; DZ◌̌; ) LATIN CAPITAL LETTER DZ WITH CARON
+01C5;01C5;01C5;0044 017E;0044 007A 030C; # (Dž; Dž; Dž; Dž; Dz◌̌; ) LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C6;01C6;01C6;0064 017E;0064 007A 030C; # (dž; dž; dž; dž; dz◌̌; ) LATIN SMALL LETTER DZ WITH CARON
+01C7;01C7;01C7;004C 004A;004C 004A; # (LJ; LJ; LJ; LJ; LJ; ) LATIN CAPITAL LETTER LJ
+01C8;01C8;01C8;004C 006A;004C 006A; # (Lj; Lj; Lj; Lj; Lj; ) LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01C9;01C9;01C9;006C 006A;006C 006A; # (lj; lj; lj; lj; lj; ) LATIN SMALL LETTER LJ
+01CA;01CA;01CA;004E 004A;004E 004A; # (ÇŠ; ÇŠ; ÇŠ; NJ; NJ; ) LATIN CAPITAL LETTER NJ
+01CB;01CB;01CB;004E 006A;004E 006A; # (Ç‹; Ç‹; Ç‹; Nj; Nj; ) LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01CC;01CC;01CC;006E 006A;006E 006A; # (nj; nj; nj; nj; nj; ) LATIN SMALL LETTER NJ
+01CD;01CD;0041 030C;01CD;0041 030C; # (Ç; Ç; A◌̌; Ç; A◌̌; ) LATIN CAPITAL LETTER A WITH CARON
+01CE;01CE;0061 030C;01CE;0061 030C; # (ǎ; ǎ; a◌̌; ǎ; a◌̌; ) LATIN SMALL LETTER A WITH CARON
+01CF;01CF;0049 030C;01CF;0049 030C; # (Ç; Ç; I◌̌; Ç; I◌̌; ) LATIN CAPITAL LETTER I WITH CARON
+01D0;01D0;0069 030C;01D0;0069 030C; # (Ç; Ç; i◌̌; Ç; i◌̌; ) LATIN SMALL LETTER I WITH CARON
+01D1;01D1;004F 030C;01D1;004F 030C; # (Ǒ; Ǒ; O◌̌; Ǒ; O◌̌; ) LATIN CAPITAL LETTER O WITH CARON
+01D2;01D2;006F 030C;01D2;006F 030C; # (ǒ; ǒ; o◌̌; ǒ; o◌̌; ) LATIN SMALL LETTER O WITH CARON
+01D3;01D3;0055 030C;01D3;0055 030C; # (Ǔ; Ǔ; U◌̌; Ǔ; U◌̌; ) LATIN CAPITAL LETTER U WITH CARON
+01D4;01D4;0075 030C;01D4;0075 030C; # (ǔ; ǔ; u◌̌; ǔ; u◌̌; ) LATIN SMALL LETTER U WITH CARON
+01D5;01D5;0055 0308 0304;01D5;0055 0308 0304; # (Ǖ; Ǖ; U◌̈◌̄; Ǖ; U◌̈◌̄; ) LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01D6;01D6;0075 0308 0304;01D6;0075 0308 0304; # (ǖ; ǖ; u◌̈◌̄; ǖ; u◌̈◌̄; ) LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D7;01D7;0055 0308 0301;01D7;0055 0308 0301; # (Ç—; Ç—; U◌̈◌Ì; Ç—; U◌̈◌Ì; ) LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D8;01D8;0075 0308 0301;01D8;0075 0308 0301; # (ǘ; ǘ; u◌̈◌Ì; ǘ; u◌̈◌Ì; ) LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D9;01D9;0055 0308 030C;01D9;0055 0308 030C; # (Ǚ; Ǚ; U◌̈◌̌; Ǚ; U◌̈◌̌; ) LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01DA;01DA;0075 0308 030C;01DA;0075 0308 030C; # (ǚ; ǚ; u◌̈◌̌; ǚ; u◌̈◌̌; ) LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01DB;01DB;0055 0308 0300;01DB;0055 0308 0300; # (Ǜ; Ǜ; U◌̈◌̀; Ǜ; U◌̈◌̀; ) LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DC;01DC;0075 0308 0300;01DC;0075 0308 0300; # (ǜ; ǜ; u◌̈◌̀; ǜ; u◌̈◌̀; ) LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE;01DE;0041 0308 0304;01DE;0041 0308 0304; # (Ǟ; Ǟ; A◌̈◌̄; Ǟ; A◌̈◌̄; ) LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01DF;01DF;0061 0308 0304;01DF;0061 0308 0304; # (ǟ; ǟ; a◌̈◌̄; ǟ; a◌̈◌̄; ) LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01E0;01E0;0041 0307 0304;01E0;0041 0307 0304; # (Ǡ; Ǡ; A◌̇◌̄; Ǡ; A◌̇◌̄; ) LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01E1;01E1;0061 0307 0304;01E1;0061 0307 0304; # (ǡ; ǡ; a◌̇◌̄; ǡ; a◌̇◌̄; ) LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01E2;01E2;00C6 0304;01E2;00C6 0304; # (Ǣ; Ǣ; Æ◌̄; Ǣ; Æ◌̄; ) LATIN CAPITAL LETTER AE WITH MACRON
+01E3;01E3;00E6 0304;01E3;00E6 0304; # (ǣ; ǣ; æ◌̄; ǣ; æ◌̄; ) LATIN SMALL LETTER AE WITH MACRON
+01E6;01E6;0047 030C;01E6;0047 030C; # (Ǧ; Ǧ; G◌̌; Ǧ; G◌̌; ) LATIN CAPITAL LETTER G WITH CARON
+01E7;01E7;0067 030C;01E7;0067 030C; # (ǧ; ǧ; g◌̌; ǧ; g◌̌; ) LATIN SMALL LETTER G WITH CARON
+01E8;01E8;004B 030C;01E8;004B 030C; # (Ǩ; Ǩ; K◌̌; Ǩ; K◌̌; ) LATIN CAPITAL LETTER K WITH CARON
+01E9;01E9;006B 030C;01E9;006B 030C; # (ǩ; ǩ; k◌̌; ǩ; k◌̌; ) LATIN SMALL LETTER K WITH CARON
+01EA;01EA;004F 0328;01EA;004F 0328; # (Ǫ; Ǫ; O◌̨; Ǫ; O◌̨; ) LATIN CAPITAL LETTER O WITH OGONEK
+01EB;01EB;006F 0328;01EB;006F 0328; # (ǫ; ǫ; o◌̨; ǫ; o◌̨; ) LATIN SMALL LETTER O WITH OGONEK
+01EC;01EC;004F 0328 0304;01EC;004F 0328 0304; # (Ǭ; Ǭ; O◌̨◌̄; Ǭ; O◌̨◌̄; ) LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01ED;01ED;006F 0328 0304;01ED;006F 0328 0304; # (ǭ; ǭ; o◌̨◌̄; ǭ; o◌̨◌̄; ) LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01EE;01EE;01B7 030C;01EE;01B7 030C; # (Ǯ; Ǯ; Ʒ◌̌; Ǯ; Ʒ◌̌; ) LATIN CAPITAL LETTER EZH WITH CARON
+01EF;01EF;0292 030C;01EF;0292 030C; # (ǯ; ǯ; ʒ◌̌; ǯ; ʒ◌̌; ) LATIN SMALL LETTER EZH WITH CARON
+01F0;01F0;006A 030C;01F0;006A 030C; # (ǰ; ǰ; j◌̌; ǰ; j◌̌; ) LATIN SMALL LETTER J WITH CARON
+01F1;01F1;01F1;0044 005A;0044 005A; # (DZ; DZ; DZ; DZ; DZ; ) LATIN CAPITAL LETTER DZ
+01F2;01F2;01F2;0044 007A;0044 007A; # (Dz; Dz; Dz; Dz; Dz; ) LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+01F3;01F3;01F3;0064 007A;0064 007A; # (dz; dz; dz; dz; dz; ) LATIN SMALL LETTER DZ
+01F4;01F4;0047 0301;01F4;0047 0301; # (Ç´; Ç´; Gâ—ŒÌ; Ç´; Gâ—ŒÌ; ) LATIN CAPITAL LETTER G WITH ACUTE
+01F5;01F5;0067 0301;01F5;0067 0301; # (ǵ; ǵ; gâ—ŒÌ; ǵ; gâ—ŒÌ; ) LATIN SMALL LETTER G WITH ACUTE
+01F8;01F8;004E 0300;01F8;004E 0300; # (Ǹ; Ǹ; N◌̀; Ǹ; N◌̀; ) LATIN CAPITAL LETTER N WITH GRAVE
+01F9;01F9;006E 0300;01F9;006E 0300; # (ǹ; ǹ; n◌̀; ǹ; n◌̀; ) LATIN SMALL LETTER N WITH GRAVE
+01FA;01FA;0041 030A 0301;01FA;0041 030A 0301; # (Ǻ; Ǻ; A◌̊◌Ì; Ǻ; A◌̊◌Ì; ) LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FB;01FB;0061 030A 0301;01FB;0061 030A 0301; # (Ç»; Ç»; a◌̊◌Ì; Ç»; a◌̊◌Ì; ) LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FC;01FC;00C6 0301;01FC;00C6 0301; # (Ǽ; Ǽ; Æ◌Ì; Ǽ; Æ◌Ì; ) LATIN CAPITAL LETTER AE WITH ACUTE
+01FD;01FD;00E6 0301;01FD;00E6 0301; # (ǽ; ǽ; æ◌Ì; ǽ; æ◌Ì; ) LATIN SMALL LETTER AE WITH ACUTE
+01FE;01FE;00D8 0301;01FE;00D8 0301; # (Ǿ; Ǿ; Ø◌Ì; Ǿ; Ø◌Ì; ) LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+01FF;01FF;00F8 0301;01FF;00F8 0301; # (Ç¿; Ç¿; ø◌Ì; Ç¿; ø◌Ì; ) LATIN SMALL LETTER O WITH STROKE AND ACUTE
+0200;0200;0041 030F;0200;0041 030F; # (È€; È€; Aâ—ŒÌ; È€; Aâ—ŒÌ; ) LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0201;0201;0061 030F;0201;0061 030F; # (È; È; aâ—ŒÌ; È; aâ—ŒÌ; ) LATIN SMALL LETTER A WITH DOUBLE GRAVE
+0202;0202;0041 0311;0202;0041 0311; # (Ȃ; Ȃ; A◌̑; Ȃ; A◌̑; ) LATIN CAPITAL LETTER A WITH INVERTED BREVE
+0203;0203;0061 0311;0203;0061 0311; # (ȃ; ȃ; a◌̑; ȃ; a◌̑; ) LATIN SMALL LETTER A WITH INVERTED BREVE
+0204;0204;0045 030F;0204;0045 030F; # (È„; È„; Eâ—ŒÌ; È„; Eâ—ŒÌ; ) LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0205;0205;0065 030F;0205;0065 030F; # (È…; È…; eâ—ŒÌ; È…; eâ—ŒÌ; ) LATIN SMALL LETTER E WITH DOUBLE GRAVE
+0206;0206;0045 0311;0206;0045 0311; # (Ȇ; Ȇ; E◌̑; Ȇ; E◌̑; ) LATIN CAPITAL LETTER E WITH INVERTED BREVE
+0207;0207;0065 0311;0207;0065 0311; # (ȇ; ȇ; e◌̑; ȇ; e◌̑; ) LATIN SMALL LETTER E WITH INVERTED BREVE
+0208;0208;0049 030F;0208;0049 030F; # (Ȉ; Ȉ; Iâ—ŒÌ; Ȉ; Iâ—ŒÌ; ) LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+0209;0209;0069 030F;0209;0069 030F; # (ȉ; ȉ; iâ—ŒÌ; ȉ; iâ—ŒÌ; ) LATIN SMALL LETTER I WITH DOUBLE GRAVE
+020A;020A;0049 0311;020A;0049 0311; # (Ȋ; Ȋ; I◌̑; Ȋ; I◌̑; ) LATIN CAPITAL LETTER I WITH INVERTED BREVE
+020B;020B;0069 0311;020B;0069 0311; # (ȋ; ȋ; i◌̑; ȋ; i◌̑; ) LATIN SMALL LETTER I WITH INVERTED BREVE
+020C;020C;004F 030F;020C;004F 030F; # (ÈŒ; ÈŒ; Oâ—ŒÌ; ÈŒ; Oâ—ŒÌ; ) LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020D;020D;006F 030F;020D;006F 030F; # (È; È; oâ—ŒÌ; È; oâ—ŒÌ; ) LATIN SMALL LETTER O WITH DOUBLE GRAVE
+020E;020E;004F 0311;020E;004F 0311; # (Ȏ; Ȏ; O◌̑; Ȏ; O◌̑; ) LATIN CAPITAL LETTER O WITH INVERTED BREVE
+020F;020F;006F 0311;020F;006F 0311; # (È; È; o◌̑; È; o◌̑; ) LATIN SMALL LETTER O WITH INVERTED BREVE
+0210;0210;0052 030F;0210;0052 030F; # (È; È; Râ—ŒÌ; È; Râ—ŒÌ; ) LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0211;0211;0072 030F;0211;0072 030F; # (È‘; È‘; râ—ŒÌ; È‘; râ—ŒÌ; ) LATIN SMALL LETTER R WITH DOUBLE GRAVE
+0212;0212;0052 0311;0212;0052 0311; # (Ȓ; Ȓ; R◌̑; Ȓ; R◌̑; ) LATIN CAPITAL LETTER R WITH INVERTED BREVE
+0213;0213;0072 0311;0213;0072 0311; # (ȓ; ȓ; r◌̑; ȓ; r◌̑; ) LATIN SMALL LETTER R WITH INVERTED BREVE
+0214;0214;0055 030F;0214;0055 030F; # (È”; È”; Uâ—ŒÌ; È”; Uâ—ŒÌ; ) LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0215;0215;0075 030F;0215;0075 030F; # (È•; È•; uâ—ŒÌ; È•; uâ—ŒÌ; ) LATIN SMALL LETTER U WITH DOUBLE GRAVE
+0216;0216;0055 0311;0216;0055 0311; # (Ȗ; Ȗ; U◌̑; Ȗ; U◌̑; ) LATIN CAPITAL LETTER U WITH INVERTED BREVE
+0217;0217;0075 0311;0217;0075 0311; # (ȗ; ȗ; u◌̑; ȗ; u◌̑; ) LATIN SMALL LETTER U WITH INVERTED BREVE
+0218;0218;0053 0326;0218;0053 0326; # (Ș; Ș; S◌̦; Ș; S◌̦; ) LATIN CAPITAL LETTER S WITH COMMA BELOW
+0219;0219;0073 0326;0219;0073 0326; # (ș; ș; s◌̦; ș; s◌̦; ) LATIN SMALL LETTER S WITH COMMA BELOW
+021A;021A;0054 0326;021A;0054 0326; # (Ț; Ț; T◌̦; Ț; T◌̦; ) LATIN CAPITAL LETTER T WITH COMMA BELOW
+021B;021B;0074 0326;021B;0074 0326; # (ț; ț; t◌̦; ț; t◌̦; ) LATIN SMALL LETTER T WITH COMMA BELOW
+021E;021E;0048 030C;021E;0048 030C; # (Ȟ; Ȟ; H◌̌; Ȟ; H◌̌; ) LATIN CAPITAL LETTER H WITH CARON
+021F;021F;0068 030C;021F;0068 030C; # (ȟ; ȟ; h◌̌; ȟ; h◌̌; ) LATIN SMALL LETTER H WITH CARON
+0226;0226;0041 0307;0226;0041 0307; # (Ȧ; Ȧ; A◌̇; Ȧ; A◌̇; ) LATIN CAPITAL LETTER A WITH DOT ABOVE
+0227;0227;0061 0307;0227;0061 0307; # (ȧ; ȧ; a◌̇; ȧ; a◌̇; ) LATIN SMALL LETTER A WITH DOT ABOVE
+0228;0228;0045 0327;0228;0045 0327; # (Ȩ; Ȩ; E◌̧; Ȩ; E◌̧; ) LATIN CAPITAL LETTER E WITH CEDILLA
+0229;0229;0065 0327;0229;0065 0327; # (ȩ; ȩ; e◌̧; ȩ; e◌̧; ) LATIN SMALL LETTER E WITH CEDILLA
+022A;022A;004F 0308 0304;022A;004F 0308 0304; # (Ȫ; Ȫ; O◌̈◌̄; Ȫ; O◌̈◌̄; ) LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+022B;022B;006F 0308 0304;022B;006F 0308 0304; # (ȫ; ȫ; o◌̈◌̄; ȫ; o◌̈◌̄; ) LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022C;022C;004F 0303 0304;022C;004F 0303 0304; # (Ȭ; Ȭ; O◌̃◌̄; Ȭ; O◌̃◌̄; ) LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022D;022D;006F 0303 0304;022D;006F 0303 0304; # (ȭ; ȭ; o◌̃◌̄; ȭ; o◌̃◌̄; ) LATIN SMALL LETTER O WITH TILDE AND MACRON
+022E;022E;004F 0307;022E;004F 0307; # (Ȯ; Ȯ; O◌̇; Ȯ; O◌̇; ) LATIN CAPITAL LETTER O WITH DOT ABOVE
+022F;022F;006F 0307;022F;006F 0307; # (ȯ; ȯ; o◌̇; ȯ; o◌̇; ) LATIN SMALL LETTER O WITH DOT ABOVE
+0230;0230;004F 0307 0304;0230;004F 0307 0304; # (Ȱ; Ȱ; O◌̇◌̄; Ȱ; O◌̇◌̄; ) LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+0231;0231;006F 0307 0304;0231;006F 0307 0304; # (ȱ; ȱ; o◌̇◌̄; ȱ; o◌̇◌̄; ) LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+0232;0232;0059 0304;0232;0059 0304; # (Ȳ; Ȳ; Y◌̄; Ȳ; Y◌̄; ) LATIN CAPITAL LETTER Y WITH MACRON
+0233;0233;0079 0304;0233;0079 0304; # (ȳ; ȳ; y◌̄; ȳ; y◌̄; ) LATIN SMALL LETTER Y WITH MACRON
+02B0;02B0;02B0;0068;0068; # (Ê°; Ê°; Ê°; h; h; ) MODIFIER LETTER SMALL H
+02B1;02B1;02B1;0266;0266; # (ʱ; ʱ; ʱ; ɦ; ɦ; ) MODIFIER LETTER SMALL H WITH HOOK
+02B2;02B2;02B2;006A;006A; # (ʲ; ʲ; ʲ; j; j; ) MODIFIER LETTER SMALL J
+02B3;02B3;02B3;0072;0072; # (ʳ; ʳ; ʳ; r; r; ) MODIFIER LETTER SMALL R
+02B4;02B4;02B4;0279;0279; # (ʴ; ʴ; ʴ; ɹ; ɹ; ) MODIFIER LETTER SMALL TURNED R
+02B5;02B5;02B5;027B;027B; # (ʵ; ʵ; ʵ; ɻ; ɻ; ) MODIFIER LETTER SMALL TURNED R WITH HOOK
+02B6;02B6;02B6;0281;0281; # (ʶ; ʶ; ʶ; Ê; Ê; ) MODIFIER LETTER SMALL CAPITAL INVERTED R
+02B7;02B7;02B7;0077;0077; # (Ê·; Ê·; Ê·; w; w; ) MODIFIER LETTER SMALL W
+02B8;02B8;02B8;0079;0079; # (ʸ; ʸ; ʸ; y; y; ) MODIFIER LETTER SMALL Y
+02D8;02D8;02D8;0020 0306;0020 0306; # (˘; ˘; ˘; ◌̆; ◌̆; ) BREVE
+02D9;02D9;02D9;0020 0307;0020 0307; # (˙; ˙; ˙; ◌̇; ◌̇; ) DOT ABOVE
+02DA;02DA;02DA;0020 030A;0020 030A; # (˚; ˚; ˚; ◌̊; ◌̊; ) RING ABOVE
+02DB;02DB;02DB;0020 0328;0020 0328; # (˛; ˛; ˛; ◌̨; ◌̨; ) OGONEK
+02DC;02DC;02DC;0020 0303;0020 0303; # (˜; ˜; ˜; ◌̃; ◌̃; ) SMALL TILDE
+02DD;02DD;02DD;0020 030B;0020 030B; # (Ë; Ë; Ë; ◌̋; ◌̋; ) DOUBLE ACUTE ACCENT
+02E0;02E0;02E0;0263;0263; # (ˠ; ˠ; ˠ; ɣ; ɣ; ) MODIFIER LETTER SMALL GAMMA
+02E1;02E1;02E1;006C;006C; # (Ë¡; Ë¡; Ë¡; l; l; ) MODIFIER LETTER SMALL L
+02E2;02E2;02E2;0073;0073; # (ˢ; ˢ; ˢ; s; s; ) MODIFIER LETTER SMALL S
+02E3;02E3;02E3;0078;0078; # (ˣ; ˣ; ˣ; x; x; ) MODIFIER LETTER SMALL X
+02E4;02E4;02E4;0295;0295; # (ˤ; ˤ; ˤ; ʕ; ʕ; ) MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+0340;0300;0300;0300;0300; # (◌̀; ◌̀; ◌̀; ◌̀; ◌̀; ) COMBINING GRAVE TONE MARK
+0341;0301;0301;0301;0301; # (â—ŒÍ; â—ŒÌ; â—ŒÌ; â—ŒÌ; â—ŒÌ; ) COMBINING ACUTE TONE MARK
+0343;0313;0313;0313;0313; # (◌̓; ◌̓; ◌̓; ◌̓; ◌̓; ) COMBINING GREEK KORONIS
+0344;0308 0301;0308 0301;0308 0301;0308 0301; # (◌̈́; ◌̈◌Ì; ◌̈◌Ì; ◌̈◌Ì; ◌̈◌Ì; ) COMBINING GREEK DIALYTIKA TONOS
+0374;02B9;02B9;02B9;02B9; # (ʹ; ʹ; ʹ; ʹ; ʹ; ) GREEK NUMERAL SIGN
+037A;037A;037A;0020 0345;0020 0345; # (ͺ; ͺ; ͺ; ◌ͅ; ◌ͅ; ) GREEK YPOGEGRAMMENI
+037E;003B;003B;003B;003B; # (;; ;; ;; ;; ;; ) GREEK QUESTION MARK
+0384;0384;0384;0020 0301;0020 0301; # (΄; ΄; ΄; â—ŒÌ; â—ŒÌ; ) GREEK TONOS
+0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301; # (Î…; Î…; ¨◌Ì; ◌̈◌Ì; ◌̈◌Ì; ) GREEK DIALYTIKA TONOS
+0386;0386;0391 0301;0386;0391 0301; # (Ά; Ά; Α◌Ì; Ά; Α◌Ì; ) GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387;00B7;00B7;00B7;00B7; # (·; ·; ·; ·; ·; ) GREEK ANO TELEIA
+0388;0388;0395 0301;0388;0395 0301; # (Έ; Έ; Ε◌Ì; Έ; Ε◌Ì; ) GREEK CAPITAL LETTER EPSILON WITH TONOS
+0389;0389;0397 0301;0389;0397 0301; # (Ή; Ή; Η◌Ì; Ή; Η◌Ì; ) GREEK CAPITAL LETTER ETA WITH TONOS
+038A;038A;0399 0301;038A;0399 0301; # (Ί; Ί; Ι◌Ì; Ί; Ι◌Ì; ) GREEK CAPITAL LETTER IOTA WITH TONOS
+038C;038C;039F 0301;038C;039F 0301; # (ÎŒ; ÎŒ; Ο◌Ì; ÎŒ; Ο◌Ì; ) GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E;038E;03A5 0301;038E;03A5 0301; # (ÎŽ; ÎŽ; Υ◌Ì; ÎŽ; Υ◌Ì; ) GREEK CAPITAL LETTER UPSILON WITH TONOS
+038F;038F;03A9 0301;038F;03A9 0301; # (Î; Î; Ω◌Ì; Î; Ω◌Ì; ) GREEK CAPITAL LETTER OMEGA WITH TONOS
+0390;0390;03B9 0308 0301;0390;03B9 0308 0301; # (Î; Î; ι◌̈◌Ì; Î; ι◌̈◌Ì; ) GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA;03AA;0399 0308;03AA;0399 0308; # (Ϊ; Ϊ; Ι◌̈; Ϊ; Ι◌̈; ) GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+03AB;03AB;03A5 0308;03AB;03A5 0308; # (Ϋ; Ϋ; Υ◌̈; Ϋ; Υ◌̈; ) GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03AC;03AC;03B1 0301;03AC;03B1 0301; # (ά; ά; α◌Ì; ά; α◌Ì; ) GREEK SMALL LETTER ALPHA WITH TONOS
+03AD;03AD;03B5 0301;03AD;03B5 0301; # (έ; έ; ε◌Ì; έ; ε◌Ì; ) GREEK SMALL LETTER EPSILON WITH TONOS
+03AE;03AE;03B7 0301;03AE;03B7 0301; # (ή; ή; η◌Ì; ή; η◌Ì; ) GREEK SMALL LETTER ETA WITH TONOS
+03AF;03AF;03B9 0301;03AF;03B9 0301; # (ί; ί; ι◌Ì; ί; ι◌Ì; ) GREEK SMALL LETTER IOTA WITH TONOS
+03B0;03B0;03C5 0308 0301;03B0;03C5 0308 0301; # (ΰ; ΰ; υ◌̈◌Ì; ΰ; υ◌̈◌Ì; ) GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA;03CA;03B9 0308;03CA;03B9 0308; # (ϊ; ϊ; ι◌̈; ϊ; ι◌̈; ) GREEK SMALL LETTER IOTA WITH DIALYTIKA
+03CB;03CB;03C5 0308;03CB;03C5 0308; # (ϋ; ϋ; υ◌̈; ϋ; υ◌̈; ) GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03CC;03CC;03BF 0301;03CC;03BF 0301; # (ÏŒ; ÏŒ; ο◌Ì; ÏŒ; ο◌Ì; ) GREEK SMALL LETTER OMICRON WITH TONOS
+03CD;03CD;03C5 0301;03CD;03C5 0301; # (Ï; Ï; Ï…â—ŒÌ; Ï; Ï…â—ŒÌ; ) GREEK SMALL LETTER UPSILON WITH TONOS
+03CE;03CE;03C9 0301;03CE;03C9 0301; # (ÏŽ; ÏŽ; ω◌Ì; ÏŽ; ω◌Ì; ) GREEK SMALL LETTER OMEGA WITH TONOS
+03D0;03D0;03D0;03B2;03B2; # (Ï; Ï; Ï; β; β; ) GREEK BETA SYMBOL
+03D1;03D1;03D1;03B8;03B8; # (ϑ; ϑ; ϑ; θ; θ; ) GREEK THETA SYMBOL
+03D2;03D2;03D2;03A5;03A5; # (ϒ; ϒ; ϒ; Υ; Υ; ) GREEK UPSILON WITH HOOK SYMBOL
+03D3;03D3;03D2 0301;038E;03A5 0301; # (Ï“; Ï“; Ï’â—ŒÌ; ÎŽ; Υ◌Ì; ) GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+03D4;03D4;03D2 0308;03AB;03A5 0308; # (ϔ; ϔ; ϒ◌̈; Ϋ; Υ◌̈; ) GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03D5;03D5;03D5;03C6;03C6; # (ϕ; ϕ; ϕ; φ; φ; ) GREEK PHI SYMBOL
+03D6;03D6;03D6;03C0;03C0; # (ϖ; ϖ; ϖ; π; π; ) GREEK PI SYMBOL
+03F0;03F0;03F0;03BA;03BA; # (ϰ; ϰ; ϰ; κ; κ; ) GREEK KAPPA SYMBOL
+03F1;03F1;03F1;03C1;03C1; # (ϱ; ϱ; ϱ; Ï; Ï; ) GREEK RHO SYMBOL
+03F2;03F2;03F2;03C2;03C2; # (ϲ; ϲ; ϲ; ς; ς; ) GREEK LUNATE SIGMA SYMBOL
+03F4;03F4;03F4;0398;0398; # (ϴ; ϴ; ϴ; Θ; Θ; ) GREEK CAPITAL THETA SYMBOL
+03F5;03F5;03F5;03B5;03B5; # (ϵ; ϵ; ϵ; ε; ε; ) GREEK LUNATE EPSILON SYMBOL
+03F9;03F9;03F9;03A3;03A3; # (Ϲ; Ϲ; Ϲ; Σ; Σ; ) GREEK CAPITAL LUNATE SIGMA SYMBOL
+0400;0400;0415 0300;0400;0415 0300; # (Ѐ; Ѐ; Е◌̀; Ѐ; Е◌̀; ) CYRILLIC CAPITAL LETTER IE WITH GRAVE
+0401;0401;0415 0308;0401;0415 0308; # (Ð; Ð; Е◌̈; Ð; Е◌̈; ) CYRILLIC CAPITAL LETTER IO
+0403;0403;0413 0301;0403;0413 0301; # (Ѓ; Ѓ; Г◌Ì; Ѓ; Г◌Ì; ) CYRILLIC CAPITAL LETTER GJE
+0407;0407;0406 0308;0407;0406 0308; # (Ї; Ї; І◌̈; Ї; І◌̈; ) CYRILLIC CAPITAL LETTER YI
+040C;040C;041A 0301;040C;041A 0301; # (ÐŒ; ÐŒ; К◌Ì; ÐŒ; К◌Ì; ) CYRILLIC CAPITAL LETTER KJE
+040D;040D;0418 0300;040D;0418 0300; # (Ð; Ð; И◌̀; Ð; И◌̀; ) CYRILLIC CAPITAL LETTER I WITH GRAVE
+040E;040E;0423 0306;040E;0423 0306; # (Ў; Ў; У◌̆; Ў; У◌̆; ) CYRILLIC CAPITAL LETTER SHORT U
+0419;0419;0418 0306;0419;0418 0306; # (Й; Й; И◌̆; Й; И◌̆; ) CYRILLIC CAPITAL LETTER SHORT I
+0439;0439;0438 0306;0439;0438 0306; # (й; й; и◌̆; й; и◌̆; ) CYRILLIC SMALL LETTER SHORT I
+0450;0450;0435 0300;0450;0435 0300; # (Ñ; Ñ; е◌̀; Ñ; е◌̀; ) CYRILLIC SMALL LETTER IE WITH GRAVE
+0451;0451;0435 0308;0451;0435 0308; # (ё; ё; е◌̈; ё; е◌̈; ) CYRILLIC SMALL LETTER IO
+0453;0453;0433 0301;0453;0433 0301; # (Ñ“; Ñ“; г◌Ì; Ñ“; г◌Ì; ) CYRILLIC SMALL LETTER GJE
+0457;0457;0456 0308;0457;0456 0308; # (ї; ї; і◌̈; ї; і◌̈; ) CYRILLIC SMALL LETTER YI
+045C;045C;043A 0301;045C;043A 0301; # (Ñœ; Ñœ; к◌Ì; Ñœ; к◌Ì; ) CYRILLIC SMALL LETTER KJE
+045D;045D;0438 0300;045D;0438 0300; # (Ñ; Ñ; и◌̀; Ñ; и◌̀; ) CYRILLIC SMALL LETTER I WITH GRAVE
+045E;045E;0443 0306;045E;0443 0306; # (ў; ў; у◌̆; ў; у◌̆; ) CYRILLIC SMALL LETTER SHORT U
+0476;0476;0474 030F;0476;0474 030F; # (Ѷ; Ѷ; Ñ´â—ŒÌ; Ѷ; Ñ´â—ŒÌ; ) CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0477;0477;0475 030F;0477;0475 030F; # (Ñ·; Ñ·; ѵ◌Ì; Ñ·; ѵ◌Ì; ) CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1;04C1;0416 0306;04C1;0416 0306; # (Ó; Ó; Ж◌̆; Ó; Ж◌̆; ) CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04C2;04C2;0436 0306;04C2;0436 0306; # (ӂ; ӂ; ж◌̆; ӂ; ж◌̆; ) CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0;04D0;0410 0306;04D0;0410 0306; # (Ó; Ó; Ð◌̆; Ó; Ð◌̆; ) CYRILLIC CAPITAL LETTER A WITH BREVE
+04D1;04D1;0430 0306;04D1;0430 0306; # (ӑ; ӑ; а◌̆; ӑ; а◌̆; ) CYRILLIC SMALL LETTER A WITH BREVE
+04D2;04D2;0410 0308;04D2;0410 0308; # (Ó’; Ó’; Ð◌̈; Ó’; Ð◌̈; ) CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D3;04D3;0430 0308;04D3;0430 0308; # (ӓ; ӓ; а◌̈; ӓ; а◌̈; ) CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6;04D6;0415 0306;04D6;0415 0306; # (Ӗ; Ӗ; Е◌̆; Ӗ; Е◌̆; ) CYRILLIC CAPITAL LETTER IE WITH BREVE
+04D7;04D7;0435 0306;04D7;0435 0306; # (ӗ; ӗ; е◌̆; ӗ; е◌̆; ) CYRILLIC SMALL LETTER IE WITH BREVE
+04DA;04DA;04D8 0308;04DA;04D8 0308; # (Ӛ; Ӛ; Ә◌̈; Ӛ; Ә◌̈; ) CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04DB;04DB;04D9 0308;04DB;04D9 0308; # (ӛ; ӛ; ә◌̈; ӛ; ә◌̈; ) CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DC;04DC;0416 0308;04DC;0416 0308; # (Ӝ; Ӝ; Ж◌̈; Ӝ; Ж◌̈; ) CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DD;04DD;0436 0308;04DD;0436 0308; # (Ó; Ó; ж◌̈; Ó; ж◌̈; ) CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DE;04DE;0417 0308;04DE;0417 0308; # (Ӟ; Ӟ; З◌̈; Ӟ; З◌̈; ) CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04DF;04DF;0437 0308;04DF;0437 0308; # (ӟ; ӟ; з◌̈; ӟ; з◌̈; ) CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2;04E2;0418 0304;04E2;0418 0304; # (Ӣ; Ӣ; И◌̄; Ӣ; И◌̄; ) CYRILLIC CAPITAL LETTER I WITH MACRON
+04E3;04E3;0438 0304;04E3;0438 0304; # (ӣ; ӣ; и◌̄; ӣ; и◌̄; ) CYRILLIC SMALL LETTER I WITH MACRON
+04E4;04E4;0418 0308;04E4;0418 0308; # (Ӥ; Ӥ; И◌̈; Ӥ; И◌̈; ) CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E5;04E5;0438 0308;04E5;0438 0308; # (ӥ; ӥ; и◌̈; ӥ; и◌̈; ) CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E6;04E6;041E 0308;04E6;041E 0308; # (Ӧ; Ӧ; О◌̈; Ӧ; О◌̈; ) CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E7;04E7;043E 0308;04E7;043E 0308; # (ӧ; ӧ; о◌̈; ӧ; о◌̈; ) CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA;04EA;04E8 0308;04EA;04E8 0308; # (Ӫ; Ӫ; Ө◌̈; Ӫ; Ө◌̈; ) CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04EB;04EB;04E9 0308;04EB;04E9 0308; # (ӫ; ӫ; ө◌̈; ӫ; ө◌̈; ) CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EC;04EC;042D 0308;04EC;042D 0308; # (Ӭ; Ӭ; Э◌̈; Ӭ; Э◌̈; ) CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+04ED;04ED;044D 0308;04ED;044D 0308; # (Ó­; Ó­; Ñ◌̈; Ó­; Ñ◌̈; ) CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EE;04EE;0423 0304;04EE;0423 0304; # (Ӯ; Ӯ; У◌̄; Ӯ; У◌̄; ) CYRILLIC CAPITAL LETTER U WITH MACRON
+04EF;04EF;0443 0304;04EF;0443 0304; # (ӯ; ӯ; у◌̄; ӯ; у◌̄; ) CYRILLIC SMALL LETTER U WITH MACRON
+04F0;04F0;0423 0308;04F0;0423 0308; # (Ӱ; Ӱ; У◌̈; Ӱ; У◌̈; ) CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F1;04F1;0443 0308;04F1;0443 0308; # (ӱ; ӱ; у◌̈; ӱ; у◌̈; ) CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F2;04F2;0423 030B;04F2;0423 030B; # (Ӳ; Ӳ; У◌̋; Ӳ; У◌̋; ) CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F3;04F3;0443 030B;04F3;0443 030B; # (ӳ; ӳ; у◌̋; ӳ; у◌̋; ) CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F4;04F4;0427 0308;04F4;0427 0308; # (Ӵ; Ӵ; Ч◌̈; Ӵ; Ч◌̈; ) CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F5;04F5;0447 0308;04F5;0447 0308; # (ӵ; ӵ; ч◌̈; ӵ; ч◌̈; ) CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8;04F8;042B 0308;04F8;042B 0308; # (Ӹ; Ӹ; Ы◌̈; Ӹ; Ы◌̈; ) CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04F9;04F9;044B 0308;04F9;044B 0308; # (ӹ; ӹ; ы◌̈; ӹ; ы◌̈; ) CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0587;0587;0587;0565 0582;0565 0582; # (Ö‡; Ö‡; Ö‡; Õ¥Ö‚; Õ¥Ö‚; ) ARMENIAN SMALL LIGATURE ECH YIWN
+0622;0622;0627 0653;0622;0627 0653; # (آ; آ; ا◌ٓ; آ; ا◌ٓ; ) ARABIC LETTER ALEF WITH MADDA ABOVE
+0623;0623;0627 0654;0623;0627 0654; # (أ; أ; ا◌ٔ; أ; ا◌ٔ; ) ARABIC LETTER ALEF WITH HAMZA ABOVE
+0624;0624;0648 0654;0624;0648 0654; # (ؤ; ؤ; و◌ٔ; ؤ; و◌ٔ; ) ARABIC LETTER WAW WITH HAMZA ABOVE
+0625;0625;0627 0655;0625;0627 0655; # (إ; إ; ا◌ٕ; إ; ا◌ٕ; ) ARABIC LETTER ALEF WITH HAMZA BELOW
+0626;0626;064A 0654;0626;064A 0654; # (ئ; ئ; ي◌ٔ; ئ; ي◌ٔ; ) ARABIC LETTER YEH WITH HAMZA ABOVE
+0675;0675;0675;0627 0674;0627 0674; # (ٵ; ٵ; ٵ; اٴ; اٴ; ) ARABIC LETTER HIGH HAMZA ALEF
+0676;0676;0676;0648 0674;0648 0674; # (ٶ; ٶ; ٶ; وٴ; وٴ; ) ARABIC LETTER HIGH HAMZA WAW
+0677;0677;0677;06C7 0674;06C7 0674; # (Ù·; Ù·; Ù·; Û‡Ù´; Û‡Ù´; ) ARABIC LETTER U WITH HAMZA ABOVE
+0678;0678;0678;064A 0674;064A 0674; # (ٸ; ٸ; ٸ; يٴ; يٴ; ) ARABIC LETTER HIGH HAMZA YEH
+06C0;06C0;06D5 0654;06C0;06D5 0654; # (ۀ; ۀ; ە◌ٔ; ۀ; ە◌ٔ; ) ARABIC LETTER HEH WITH YEH ABOVE
+06C2;06C2;06C1 0654;06C2;06C1 0654; # (Û‚; Û‚; Û◌ٔ; Û‚; Û◌ٔ; ) ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3;06D3;06D2 0654;06D3;06D2 0654; # (ۓ; ۓ; ے◌ٔ; ۓ; ے◌ٔ; ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929;0929;0928 093C;0929;0928 093C; # (ऩ; ऩ; न◌़; ऩ; न◌़; ) DEVANAGARI LETTER NNNA
+0931;0931;0930 093C;0931;0930 093C; # (ऱ; ऱ; र◌़; ऱ; र◌़; ) DEVANAGARI LETTER RRA
+0934;0934;0933 093C;0934;0933 093C; # (ऴ; ऴ; ळ◌़; ऴ; ळ◌़; ) DEVANAGARI LETTER LLLA
+0958;0915 093C;0915 093C;0915 093C;0915 093C; # (क़; क◌़; क◌़; क◌़; क◌़; ) DEVANAGARI LETTER QA
+0959;0916 093C;0916 093C;0916 093C;0916 093C; # (ख़; ख◌़; ख◌़; ख◌़; ख◌़; ) DEVANAGARI LETTER KHHA
+095A;0917 093C;0917 093C;0917 093C;0917 093C; # (ग़; ग◌़; ग◌़; ग◌़; ग◌़; ) DEVANAGARI LETTER GHHA
+095B;091C 093C;091C 093C;091C 093C;091C 093C; # (ज़; ज◌़; ज◌़; ज◌़; ज◌़; ) DEVANAGARI LETTER ZA
+095C;0921 093C;0921 093C;0921 093C;0921 093C; # (ड़; ड◌़; ड◌़; ड◌़; ड◌़; ) DEVANAGARI LETTER DDDHA
+095D;0922 093C;0922 093C;0922 093C;0922 093C; # (à¥; ढ◌़; ढ◌़; ढ◌़; ढ◌़; ) DEVANAGARI LETTER RHA
+095E;092B 093C;092B 093C;092B 093C;092B 093C; # (फ़; फ◌़; फ◌़; फ◌़; फ◌़; ) DEVANAGARI LETTER FA
+095F;092F 093C;092F 093C;092F 093C;092F 093C; # (य़; य◌़; य◌़; य◌़; य◌़; ) DEVANAGARI LETTER YYA
+09CB;09CB;09C7 09BE;09CB;09C7 09BE; # (ো; ো; ো; ো; ো; ) BENGALI VOWEL SIGN O
+09CC;09CC;09C7 09D7;09CC;09C7 09D7; # (ৌ; ৌ; ৌ; ৌ; ৌ; ) BENGALI VOWEL SIGN AU
+09DC;09A1 09BC;09A1 09BC;09A1 09BC;09A1 09BC; # (ড়; ড◌়; ড◌়; ড◌়; ড◌়; ) BENGALI LETTER RRA
+09DD;09A2 09BC;09A2 09BC;09A2 09BC;09A2 09BC; # (à§; ঢ◌়; ঢ◌়; ঢ◌়; ঢ◌়; ) BENGALI LETTER RHA
+09DF;09AF 09BC;09AF 09BC;09AF 09BC;09AF 09BC; # (য়; য◌়; য◌়; য◌়; য◌়; ) BENGALI LETTER YYA
+0A33;0A32 0A3C;0A32 0A3C;0A32 0A3C;0A32 0A3C; # (ਲ਼; ਲ◌਼; ਲ◌਼; ਲ◌਼; ਲ◌਼; ) GURMUKHI LETTER LLA
+0A36;0A38 0A3C;0A38 0A3C;0A38 0A3C;0A38 0A3C; # (ਸ਼; ਸ◌਼; ਸ◌਼; ਸ◌਼; ਸ◌਼; ) GURMUKHI LETTER SHA
+0A59;0A16 0A3C;0A16 0A3C;0A16 0A3C;0A16 0A3C; # (ਖ਼; ਖ◌਼; ਖ◌਼; ਖ◌਼; ਖ◌਼; ) GURMUKHI LETTER KHHA
+0A5A;0A17 0A3C;0A17 0A3C;0A17 0A3C;0A17 0A3C; # (ਗ਼; ਗ◌਼; ਗ◌਼; ਗ◌਼; ਗ◌਼; ) GURMUKHI LETTER GHHA
+0A5B;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C; # (ਜ਼; ਜ◌਼; ਜ◌਼; ਜ◌਼; ਜ◌਼; ) GURMUKHI LETTER ZA
+0A5E;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C; # (ਫ਼; ਫ◌਼; ਫ◌਼; ਫ◌਼; ਫ◌਼; ) GURMUKHI LETTER FA
+0B48;0B48;0B47 0B56;0B48;0B47 0B56; # (ୈ; ୈ; େ◌ୖ; ୈ; େ◌ୖ; ) ORIYA VOWEL SIGN AI
+0B4B;0B4B;0B47 0B3E;0B4B;0B47 0B3E; # (ୋ; ୋ; ୋ; ୋ; ୋ; ) ORIYA VOWEL SIGN O
+0B4C;0B4C;0B47 0B57;0B4C;0B47 0B57; # (ୌ; ୌ; ୌ; ୌ; ୌ; ) ORIYA VOWEL SIGN AU
+0B5C;0B21 0B3C;0B21 0B3C;0B21 0B3C;0B21 0B3C; # (ଡ଼; ଡ◌଼; ଡ◌଼; ଡ◌଼; ଡ◌଼; ) ORIYA LETTER RRA
+0B5D;0B22 0B3C;0B22 0B3C;0B22 0B3C;0B22 0B3C; # (à­; ଢ◌଼; ଢ◌଼; ଢ◌଼; ଢ◌଼; ) ORIYA LETTER RHA
+0B94;0B94;0B92 0BD7;0B94;0B92 0BD7; # (ஔ; ஔ; ஔ; ஔ; ஔ; ) TAMIL LETTER AU
+0BCA;0BCA;0BC6 0BBE;0BCA;0BC6 0BBE; # (ொ; ொ; ொ; ொ; ொ; ) TAMIL VOWEL SIGN O
+0BCB;0BCB;0BC7 0BBE;0BCB;0BC7 0BBE; # (ோ; ோ; ோ; ோ; ோ; ) TAMIL VOWEL SIGN OO
+0BCC;0BCC;0BC6 0BD7;0BCC;0BC6 0BD7; # (ௌ; ௌ; ௌ; ௌ; ௌ; ) TAMIL VOWEL SIGN AU
+0C48;0C48;0C46 0C56;0C48;0C46 0C56; # (◌ై; ◌ై; ◌ె◌ౖ; ◌ై; ◌ె◌ౖ; ) TELUGU VOWEL SIGN AI
+0CC0;0CC0;0CBF 0CD5;0CC0;0CBF 0CD5; # (ೀ; ೀ; ◌ೀ; ೀ; ◌ೀ; ) KANNADA VOWEL SIGN II
+0CC7;0CC7;0CC6 0CD5;0CC7;0CC6 0CD5; # (ೇ; ೇ; ◌ೇ; ೇ; ◌ೇ; ) KANNADA VOWEL SIGN EE
+0CC8;0CC8;0CC6 0CD6;0CC8;0CC6 0CD6; # (ೈ; ೈ; ◌ೈ; ೈ; ◌ೈ; ) KANNADA VOWEL SIGN AI
+0CCA;0CCA;0CC6 0CC2;0CCA;0CC6 0CC2; # (ೊ; ೊ; ◌ೊ; ೊ; ◌ೊ; ) KANNADA VOWEL SIGN O
+0CCB;0CCB;0CC6 0CC2 0CD5;0CCB;0CC6 0CC2 0CD5; # (ೋ; ೋ; ◌ೋ; ೋ; ◌ೋ; ) KANNADA VOWEL SIGN OO
+0D4A;0D4A;0D46 0D3E;0D4A;0D46 0D3E; # (ൊ; ൊ; ൊ; ൊ; ൊ; ) MALAYALAM VOWEL SIGN O
+0D4B;0D4B;0D47 0D3E;0D4B;0D47 0D3E; # (ോ; ോ; ോ; ോ; ോ; ) MALAYALAM VOWEL SIGN OO
+0D4C;0D4C;0D46 0D57;0D4C;0D46 0D57; # (ൌ; ൌ; ൌ; ൌ; ൌ; ) MALAYALAM VOWEL SIGN AU
+0DDA;0DDA;0DD9 0DCA;0DDA;0DD9 0DCA; # (ේ; ේ; ෙ◌්; ේ; ෙ◌්; ) SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC;0DDC;0DD9 0DCF;0DDC;0DD9 0DCF; # (à·œ; à·œ; à·™à·; à·œ; à·™à·; ) SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+0DDD;0DDD;0DD9 0DCF 0DCA;0DDD;0DD9 0DCF 0DCA; # (à·; à·; à·™à·â—Œà·Š; à·; à·™à·â—Œà·Š; ) SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+0DDE;0DDE;0DD9 0DDF;0DDE;0DD9 0DDF; # (ෞ; ෞ; ෞ; ෞ; ෞ; ) SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0E33;0E33;0E33;0E4D 0E32;0E4D 0E32; # (ำ; ำ; ำ; â—Œà¹à¸²; â—Œà¹à¸²; ) THAI CHARACTER SARA AM
+0EB3;0EB3;0EB3;0ECD 0EB2;0ECD 0EB2; # (ຳ; ຳ; ຳ; â—Œà»àº²; â—Œà»àº²; ) LAO VOWEL SIGN AM
+0EDC;0EDC;0EDC;0EAB 0E99;0EAB 0E99; # (ໜ; ໜ; ໜ; ຫນ; ຫນ; ) LAO HO NO
+0EDD;0EDD;0EDD;0EAB 0EA1;0EAB 0EA1; # (à»; à»; à»; ຫມ; ຫມ; ) LAO HO MO
+0F0C;0F0C;0F0C;0F0B;0F0B; # (༌; ༌; ༌; ་; ་; ) TIBETAN MARK DELIMITER TSHEG BSTAR
+0F43;0F42 0FB7;0F42 0FB7;0F42 0FB7;0F42 0FB7; # (གྷ; ག◌ྷ; ག◌ྷ; ག◌ྷ; ག◌ྷ; ) TIBETAN LETTER GHA
+0F4D;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7; # (à½; ཌ◌ྷ; ཌ◌ྷ; ཌ◌ྷ; ཌ◌ྷ; ) TIBETAN LETTER DDHA
+0F52;0F51 0FB7;0F51 0FB7;0F51 0FB7;0F51 0FB7; # (དྷ; ད◌ྷ; ད◌ྷ; ད◌ྷ; ད◌ྷ; ) TIBETAN LETTER DHA
+0F57;0F56 0FB7;0F56 0FB7;0F56 0FB7;0F56 0FB7; # (བྷ; བ◌ྷ; བ◌ྷ; བ◌ྷ; བ◌ྷ; ) TIBETAN LETTER BHA
+0F5C;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7; # (ཛྷ; ཛ◌ྷ; ཛ◌ྷ; ཛ◌ྷ; ཛ◌ྷ; ) TIBETAN LETTER DZHA
+0F69;0F40 0FB5;0F40 0FB5;0F40 0FB5;0F40 0FB5; # (ཀྵ; ཀ◌ྵ; ཀ◌ྵ; ཀ◌ྵ; ཀ◌ྵ; ) TIBETAN LETTER KSSA
+0F73;0F71 0F72;0F71 0F72;0F71 0F72;0F71 0F72; # (◌ཱི; ◌ཱ◌ི; ◌ཱ◌ི; ◌ཱ◌ི; ◌ཱ◌ི; ) TIBETAN VOWEL SIGN II
+0F75;0F71 0F74;0F71 0F74;0F71 0F74;0F71 0F74; # (◌ཱུ; ◌ཱ◌ུ; ◌ཱ◌ུ; ◌ཱ◌ུ; ◌ཱ◌ུ; ) TIBETAN VOWEL SIGN UU
+0F76;0FB2 0F80;0FB2 0F80;0FB2 0F80;0FB2 0F80; # (◌ྲྀ; ◌ྲ◌ྀ; ◌ྲ◌ྀ; ◌ྲ◌ྀ; ◌ྲ◌ྀ; ) TIBETAN VOWEL SIGN VOCALIC R
+0F77;0F77;0F77;0FB2 0F71 0F80;0FB2 0F71 0F80; # (◌ཷ; ◌ཷ; ◌ཷ; ◌ྲ◌ཱ◌ྀ; ◌ྲ◌ཱ◌ྀ; ) TIBETAN VOWEL SIGN VOCALIC RR
+0F78;0FB3 0F80;0FB3 0F80;0FB3 0F80;0FB3 0F80; # (◌ླྀ; ◌ླ◌ྀ; ◌ླ◌ྀ; ◌ླ◌ྀ; ◌ླ◌ྀ; ) TIBETAN VOWEL SIGN VOCALIC L
+0F79;0F79;0F79;0FB3 0F71 0F80;0FB3 0F71 0F80; # (◌ཹ; ◌ཹ; ◌ཹ; ◌ླ◌ཱ◌ྀ; ◌ླ◌ཱ◌ྀ; ) TIBETAN VOWEL SIGN VOCALIC LL
+0F81;0F71 0F80;0F71 0F80;0F71 0F80;0F71 0F80; # (â—Œà¾; ◌ཱ◌ྀ; ◌ཱ◌ྀ; ◌ཱ◌ྀ; ◌ཱ◌ྀ; ) TIBETAN VOWEL SIGN REVERSED II
+0F93;0F92 0FB7;0F92 0FB7;0F92 0FB7;0F92 0FB7; # (◌ྒྷ; ◌ྒ◌ྷ; ◌ྒ◌ྷ; ◌ྒ◌ྷ; ◌ྒ◌ྷ; ) TIBETAN SUBJOINED LETTER GHA
+0F9D;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7; # (â—Œà¾; ◌ྜ◌ྷ; ◌ྜ◌ྷ; ◌ྜ◌ྷ; ◌ྜ◌ྷ; ) TIBETAN SUBJOINED LETTER DDHA
+0FA2;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7; # (◌ྡྷ; ◌ྡ◌ྷ; ◌ྡ◌ྷ; ◌ྡ◌ྷ; ◌ྡ◌ྷ; ) TIBETAN SUBJOINED LETTER DHA
+0FA7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7; # (◌ྦྷ; ◌ྦ◌ྷ; ◌ྦ◌ྷ; ◌ྦ◌ྷ; ◌ྦ◌ྷ; ) TIBETAN SUBJOINED LETTER BHA
+0FAC;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7; # (◌ྫྷ; ◌ྫ◌ྷ; ◌ྫ◌ྷ; ◌ྫ◌ྷ; ◌ྫ◌ྷ; ) TIBETAN SUBJOINED LETTER DZHA
+0FB9;0F90 0FB5;0F90 0FB5;0F90 0FB5;0F90 0FB5; # (◌ྐྵ; â—Œà¾â—Œà¾µ; â—Œà¾â—Œà¾µ; â—Œà¾â—Œà¾µ; â—Œà¾â—Œà¾µ; ) TIBETAN SUBJOINED LETTER KSSA
+1026;1026;1025 102E;1026;1025 102E; # (ဦ; ဦ; ဥ◌ီ; ဦ; ဥ◌ီ; ) MYANMAR LETTER UU
+10FC;10FC;10FC;10DC;10DC; # (ჼ; ჼ; ჼ; ნ; ნ; ) MODIFIER LETTER GEORGIAN NAR
+1B06;1B06;1B05 1B35;1B06;1B05 1B35; # (ᬆ; ᬆ; ᬆ; ᬆ; ᬆ; ) BALINESE LETTER AKARA TEDUNG
+1B08;1B08;1B07 1B35;1B08;1B07 1B35; # (ᬈ; ᬈ; ᬈ; ᬈ; ᬈ; ) BALINESE LETTER IKARA TEDUNG
+1B0A;1B0A;1B09 1B35;1B0A;1B09 1B35; # (ᬊ; ᬊ; ᬊ; ᬊ; ᬊ; ) BALINESE LETTER UKARA TEDUNG
+1B0C;1B0C;1B0B 1B35;1B0C;1B0B 1B35; # (ᬌ; ᬌ; ᬌ; ᬌ; ᬌ; ) BALINESE LETTER RA REPA TEDUNG
+1B0E;1B0E;1B0D 1B35;1B0E;1B0D 1B35; # (ᬎ; ᬎ; á¬á¬µ; ᬎ; á¬á¬µ; ) BALINESE LETTER LA LENGA TEDUNG
+1B12;1B12;1B11 1B35;1B12;1B11 1B35; # (ᬒ; ᬒ; ᬒ; ᬒ; ᬒ; ) BALINESE LETTER OKARA TEDUNG
+1B3B;1B3B;1B3A 1B35;1B3B;1B3A 1B35; # (ᬻ; ᬻ; ◌ᬻ; ᬻ; ◌ᬻ; ) BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D;1B3D;1B3C 1B35;1B3D;1B3C 1B35; # (ᬽ; ᬽ; ◌ᬽ; ᬽ; ◌ᬽ; ) BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40;1B40;1B3E 1B35;1B40;1B3E 1B35; # (ᭀ; ᭀ; ᭀ; ᭀ; ᭀ; ) BALINESE VOWEL SIGN TALING TEDUNG
+1B41;1B41;1B3F 1B35;1B41;1B3F 1B35; # (á­; á­; ᭁ; á­; ᭁ; ) BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43;1B43;1B42 1B35;1B43;1B42 1B35; # (ᭃ; ᭃ; ◌ᭃ; ᭃ; ◌ᭃ; ) BALINESE VOWEL SIGN PEPET TEDUNG
+1D2C;1D2C;1D2C;0041;0041; # (á´¬; á´¬; á´¬; A; A; ) MODIFIER LETTER CAPITAL A
+1D2D;1D2D;1D2D;00C6;00C6; # (ᴭ; ᴭ; ᴭ; Æ; Æ; ) MODIFIER LETTER CAPITAL AE
+1D2E;1D2E;1D2E;0042;0042; # (á´®; á´®; á´®; B; B; ) MODIFIER LETTER CAPITAL B
+1D30;1D30;1D30;0044;0044; # (á´°; á´°; á´°; D; D; ) MODIFIER LETTER CAPITAL D
+1D31;1D31;1D31;0045;0045; # (á´±; á´±; á´±; E; E; ) MODIFIER LETTER CAPITAL E
+1D32;1D32;1D32;018E;018E; # (á´²; á´²; á´²; ÆŽ; ÆŽ; ) MODIFIER LETTER CAPITAL REVERSED E
+1D33;1D33;1D33;0047;0047; # (á´³; á´³; á´³; G; G; ) MODIFIER LETTER CAPITAL G
+1D34;1D34;1D34;0048;0048; # (á´´; á´´; á´´; H; H; ) MODIFIER LETTER CAPITAL H
+1D35;1D35;1D35;0049;0049; # (á´µ; á´µ; á´µ; I; I; ) MODIFIER LETTER CAPITAL I
+1D36;1D36;1D36;004A;004A; # (á´¶; á´¶; á´¶; J; J; ) MODIFIER LETTER CAPITAL J
+1D37;1D37;1D37;004B;004B; # (á´·; á´·; á´·; K; K; ) MODIFIER LETTER CAPITAL K
+1D38;1D38;1D38;004C;004C; # (á´¸; á´¸; á´¸; L; L; ) MODIFIER LETTER CAPITAL L
+1D39;1D39;1D39;004D;004D; # (á´¹; á´¹; á´¹; M; M; ) MODIFIER LETTER CAPITAL M
+1D3A;1D3A;1D3A;004E;004E; # (á´º; á´º; á´º; N; N; ) MODIFIER LETTER CAPITAL N
+1D3C;1D3C;1D3C;004F;004F; # (á´¼; á´¼; á´¼; O; O; ) MODIFIER LETTER CAPITAL O
+1D3D;1D3D;1D3D;0222;0222; # (ᴽ; ᴽ; ᴽ; Ȣ; Ȣ; ) MODIFIER LETTER CAPITAL OU
+1D3E;1D3E;1D3E;0050;0050; # (á´¾; á´¾; á´¾; P; P; ) MODIFIER LETTER CAPITAL P
+1D3F;1D3F;1D3F;0052;0052; # (á´¿; á´¿; á´¿; R; R; ) MODIFIER LETTER CAPITAL R
+1D40;1D40;1D40;0054;0054; # (áµ€; áµ€; áµ€; T; T; ) MODIFIER LETTER CAPITAL T
+1D41;1D41;1D41;0055;0055; # (áµ; áµ; áµ; U; U; ) MODIFIER LETTER CAPITAL U
+1D42;1D42;1D42;0057;0057; # (ᵂ; ᵂ; ᵂ; W; W; ) MODIFIER LETTER CAPITAL W
+1D43;1D43;1D43;0061;0061; # (ᵃ; ᵃ; ᵃ; a; a; ) MODIFIER LETTER SMALL A
+1D44;1D44;1D44;0250;0250; # (ᵄ; ᵄ; ᵄ; É; É; ) MODIFIER LETTER SMALL TURNED A
+1D45;1D45;1D45;0251;0251; # (áµ…; áµ…; áµ…; É‘; É‘; ) MODIFIER LETTER SMALL ALPHA
+1D46;1D46;1D46;1D02;1D02; # (ᵆ; ᵆ; ᵆ; ᴂ; ᴂ; ) MODIFIER LETTER SMALL TURNED AE
+1D47;1D47;1D47;0062;0062; # (ᵇ; ᵇ; ᵇ; b; b; ) MODIFIER LETTER SMALL B
+1D48;1D48;1D48;0064;0064; # (ᵈ; ᵈ; ᵈ; d; d; ) MODIFIER LETTER SMALL D
+1D49;1D49;1D49;0065;0065; # (ᵉ; ᵉ; ᵉ; e; e; ) MODIFIER LETTER SMALL E
+1D4A;1D4A;1D4A;0259;0259; # (ᵊ; ᵊ; ᵊ; ə; ə; ) MODIFIER LETTER SMALL SCHWA
+1D4B;1D4B;1D4B;025B;025B; # (ᵋ; ᵋ; ᵋ; ɛ; ɛ; ) MODIFIER LETTER SMALL OPEN E
+1D4C;1D4C;1D4C;025C;025C; # (ᵌ; ᵌ; ᵌ; ɜ; ɜ; ) MODIFIER LETTER SMALL TURNED OPEN E
+1D4D;1D4D;1D4D;0067;0067; # (áµ; áµ; áµ; g; g; ) MODIFIER LETTER SMALL G
+1D4F;1D4F;1D4F;006B;006B; # (áµ; áµ; áµ; k; k; ) MODIFIER LETTER SMALL K
+1D50;1D50;1D50;006D;006D; # (áµ; áµ; áµ; m; m; ) MODIFIER LETTER SMALL M
+1D51;1D51;1D51;014B;014B; # (ᵑ; ᵑ; ᵑ; ŋ; ŋ; ) MODIFIER LETTER SMALL ENG
+1D52;1D52;1D52;006F;006F; # (áµ’; áµ’; áµ’; o; o; ) MODIFIER LETTER SMALL O
+1D53;1D53;1D53;0254;0254; # (ᵓ; ᵓ; ᵓ; ɔ; ɔ; ) MODIFIER LETTER SMALL OPEN O
+1D54;1D54;1D54;1D16;1D16; # (áµ”; áµ”; áµ”; á´–; á´–; ) MODIFIER LETTER SMALL TOP HALF O
+1D55;1D55;1D55;1D17;1D17; # (ᵕ; ᵕ; ᵕ; ᴗ; ᴗ; ) MODIFIER LETTER SMALL BOTTOM HALF O
+1D56;1D56;1D56;0070;0070; # (áµ–; áµ–; áµ–; p; p; ) MODIFIER LETTER SMALL P
+1D57;1D57;1D57;0074;0074; # (áµ—; áµ—; áµ—; t; t; ) MODIFIER LETTER SMALL T
+1D58;1D58;1D58;0075;0075; # (ᵘ; ᵘ; ᵘ; u; u; ) MODIFIER LETTER SMALL U
+1D59;1D59;1D59;1D1D;1D1D; # (áµ™; áµ™; áµ™; á´; á´; ) MODIFIER LETTER SMALL SIDEWAYS U
+1D5A;1D5A;1D5A;026F;026F; # (ᵚ; ᵚ; ᵚ; ɯ; ɯ; ) MODIFIER LETTER SMALL TURNED M
+1D5B;1D5B;1D5B;0076;0076; # (áµ›; áµ›; áµ›; v; v; ) MODIFIER LETTER SMALL V
+1D5C;1D5C;1D5C;1D25;1D25; # (ᵜ; ᵜ; ᵜ; ᴥ; ᴥ; ) MODIFIER LETTER SMALL AIN
+1D5D;1D5D;1D5D;03B2;03B2; # (áµ; áµ; áµ; β; β; ) MODIFIER LETTER SMALL BETA
+1D5E;1D5E;1D5E;03B3;03B3; # (ᵞ; ᵞ; ᵞ; γ; γ; ) MODIFIER LETTER SMALL GREEK GAMMA
+1D5F;1D5F;1D5F;03B4;03B4; # (ᵟ; ᵟ; ᵟ; δ; δ; ) MODIFIER LETTER SMALL DELTA
+1D60;1D60;1D60;03C6;03C6; # (ᵠ; ᵠ; ᵠ; φ; φ; ) MODIFIER LETTER SMALL GREEK PHI
+1D61;1D61;1D61;03C7;03C7; # (ᵡ; ᵡ; ᵡ; χ; χ; ) MODIFIER LETTER SMALL CHI
+1D62;1D62;1D62;0069;0069; # (áµ¢; áµ¢; áµ¢; i; i; ) LATIN SUBSCRIPT SMALL LETTER I
+1D63;1D63;1D63;0072;0072; # (áµ£; áµ£; áµ£; r; r; ) LATIN SUBSCRIPT SMALL LETTER R
+1D64;1D64;1D64;0075;0075; # (ᵤ; ᵤ; ᵤ; u; u; ) LATIN SUBSCRIPT SMALL LETTER U
+1D65;1D65;1D65;0076;0076; # (áµ¥; áµ¥; áµ¥; v; v; ) LATIN SUBSCRIPT SMALL LETTER V
+1D66;1D66;1D66;03B2;03B2; # (ᵦ; ᵦ; ᵦ; β; β; ) GREEK SUBSCRIPT SMALL LETTER BETA
+1D67;1D67;1D67;03B3;03B3; # (ᵧ; ᵧ; ᵧ; γ; γ; ) GREEK SUBSCRIPT SMALL LETTER GAMMA
+1D68;1D68;1D68;03C1;03C1; # (ᵨ; ᵨ; ᵨ; Ï; Ï; ) GREEK SUBSCRIPT SMALL LETTER RHO
+1D69;1D69;1D69;03C6;03C6; # (ᵩ; ᵩ; ᵩ; φ; φ; ) GREEK SUBSCRIPT SMALL LETTER PHI
+1D6A;1D6A;1D6A;03C7;03C7; # (ᵪ; ᵪ; ᵪ; χ; χ; ) GREEK SUBSCRIPT SMALL LETTER CHI
+1D78;1D78;1D78;043D;043D; # (ᵸ; ᵸ; ᵸ; н; н; ) MODIFIER LETTER CYRILLIC EN
+1D9B;1D9B;1D9B;0252;0252; # (ᶛ; ᶛ; ᶛ; ɒ; ɒ; ) MODIFIER LETTER SMALL TURNED ALPHA
+1D9C;1D9C;1D9C;0063;0063; # (ᶜ; ᶜ; ᶜ; c; c; ) MODIFIER LETTER SMALL C
+1D9D;1D9D;1D9D;0255;0255; # (á¶; á¶; á¶; É•; É•; ) MODIFIER LETTER SMALL C WITH CURL
+1D9E;1D9E;1D9E;00F0;00F0; # (ᶞ; ᶞ; ᶞ; ð; ð; ) MODIFIER LETTER SMALL ETH
+1D9F;1D9F;1D9F;025C;025C; # (ᶟ; ᶟ; ᶟ; ɜ; ɜ; ) MODIFIER LETTER SMALL REVERSED OPEN E
+1DA0;1DA0;1DA0;0066;0066; # (ᶠ; ᶠ; ᶠ; f; f; ) MODIFIER LETTER SMALL F
+1DA1;1DA1;1DA1;025F;025F; # (ᶡ; ᶡ; ᶡ; ɟ; ɟ; ) MODIFIER LETTER SMALL DOTLESS J WITH STROKE
+1DA2;1DA2;1DA2;0261;0261; # (ᶢ; ᶢ; ᶢ; ɡ; ɡ; ) MODIFIER LETTER SMALL SCRIPT G
+1DA3;1DA3;1DA3;0265;0265; # (ᶣ; ᶣ; ᶣ; ɥ; ɥ; ) MODIFIER LETTER SMALL TURNED H
+1DA4;1DA4;1DA4;0268;0268; # (ᶤ; ᶤ; ᶤ; ɨ; ɨ; ) MODIFIER LETTER SMALL I WITH STROKE
+1DA5;1DA5;1DA5;0269;0269; # (ᶥ; ᶥ; ᶥ; ɩ; ɩ; ) MODIFIER LETTER SMALL IOTA
+1DA6;1DA6;1DA6;026A;026A; # (ᶦ; ᶦ; ᶦ; ɪ; ɪ; ) MODIFIER LETTER SMALL CAPITAL I
+1DA7;1DA7;1DA7;1D7B;1D7B; # (ᶧ; ᶧ; ᶧ; ᵻ; ᵻ; ) MODIFIER LETTER SMALL CAPITAL I WITH STROKE
+1DA8;1DA8;1DA8;029D;029D; # (ᶨ; ᶨ; ᶨ; Ê; Ê; ) MODIFIER LETTER SMALL J WITH CROSSED-TAIL
+1DA9;1DA9;1DA9;026D;026D; # (ᶩ; ᶩ; ᶩ; ɭ; ɭ; ) MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
+1DAA;1DAA;1DAA;1D85;1D85; # (ᶪ; ᶪ; ᶪ; ᶅ; ᶅ; ) MODIFIER LETTER SMALL L WITH PALATAL HOOK
+1DAB;1DAB;1DAB;029F;029F; # (ᶫ; ᶫ; ᶫ; ʟ; ʟ; ) MODIFIER LETTER SMALL CAPITAL L
+1DAC;1DAC;1DAC;0271;0271; # (ᶬ; ᶬ; ᶬ; ɱ; ɱ; ) MODIFIER LETTER SMALL M WITH HOOK
+1DAD;1DAD;1DAD;0270;0270; # (ᶭ; ᶭ; ᶭ; ɰ; ɰ; ) MODIFIER LETTER SMALL TURNED M WITH LONG LEG
+1DAE;1DAE;1DAE;0272;0272; # (ᶮ; ᶮ; ᶮ; ɲ; ɲ; ) MODIFIER LETTER SMALL N WITH LEFT HOOK
+1DAF;1DAF;1DAF;0273;0273; # (ᶯ; ᶯ; ᶯ; ɳ; ɳ; ) MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
+1DB0;1DB0;1DB0;0274;0274; # (ᶰ; ᶰ; ᶰ; ɴ; ɴ; ) MODIFIER LETTER SMALL CAPITAL N
+1DB1;1DB1;1DB1;0275;0275; # (ᶱ; ᶱ; ᶱ; ɵ; ɵ; ) MODIFIER LETTER SMALL BARRED O
+1DB2;1DB2;1DB2;0278;0278; # (ᶲ; ᶲ; ᶲ; ɸ; ɸ; ) MODIFIER LETTER SMALL PHI
+1DB3;1DB3;1DB3;0282;0282; # (ᶳ; ᶳ; ᶳ; ʂ; ʂ; ) MODIFIER LETTER SMALL S WITH HOOK
+1DB4;1DB4;1DB4;0283;0283; # (ᶴ; ᶴ; ᶴ; ʃ; ʃ; ) MODIFIER LETTER SMALL ESH
+1DB5;1DB5;1DB5;01AB;01AB; # (ᶵ; ᶵ; ᶵ; ƫ; ƫ; ) MODIFIER LETTER SMALL T WITH PALATAL HOOK
+1DB6;1DB6;1DB6;0289;0289; # (ᶶ; ᶶ; ᶶ; ʉ; ʉ; ) MODIFIER LETTER SMALL U BAR
+1DB7;1DB7;1DB7;028A;028A; # (ᶷ; ᶷ; ᶷ; ʊ; ʊ; ) MODIFIER LETTER SMALL UPSILON
+1DB8;1DB8;1DB8;1D1C;1D1C; # (ᶸ; ᶸ; ᶸ; ᴜ; ᴜ; ) MODIFIER LETTER SMALL CAPITAL U
+1DB9;1DB9;1DB9;028B;028B; # (ᶹ; ᶹ; ᶹ; ʋ; ʋ; ) MODIFIER LETTER SMALL V WITH HOOK
+1DBA;1DBA;1DBA;028C;028C; # (ᶺ; ᶺ; ᶺ; ʌ; ʌ; ) MODIFIER LETTER SMALL TURNED V
+1DBB;1DBB;1DBB;007A;007A; # (ᶻ; ᶻ; ᶻ; z; z; ) MODIFIER LETTER SMALL Z
+1DBC;1DBC;1DBC;0290;0290; # (ᶼ; ᶼ; ᶼ; Ê; Ê; ) MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
+1DBD;1DBD;1DBD;0291;0291; # (ᶽ; ᶽ; ᶽ; ʑ; ʑ; ) MODIFIER LETTER SMALL Z WITH CURL
+1DBE;1DBE;1DBE;0292;0292; # (ᶾ; ᶾ; ᶾ; ʒ; ʒ; ) MODIFIER LETTER SMALL EZH
+1DBF;1DBF;1DBF;03B8;03B8; # (ᶿ; ᶿ; ᶿ; θ; θ; ) MODIFIER LETTER SMALL THETA
+1E00;1E00;0041 0325;1E00;0041 0325; # (Ḁ; Ḁ; A◌̥; Ḁ; A◌̥; ) LATIN CAPITAL LETTER A WITH RING BELOW
+1E01;1E01;0061 0325;1E01;0061 0325; # (á¸; á¸; a◌̥; á¸; a◌̥; ) LATIN SMALL LETTER A WITH RING BELOW
+1E02;1E02;0042 0307;1E02;0042 0307; # (Ḃ; Ḃ; B◌̇; Ḃ; B◌̇; ) LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E03;1E03;0062 0307;1E03;0062 0307; # (ḃ; ḃ; b◌̇; ḃ; b◌̇; ) LATIN SMALL LETTER B WITH DOT ABOVE
+1E04;1E04;0042 0323;1E04;0042 0323; # (Ḅ; Ḅ; B◌̣; Ḅ; B◌̣; ) LATIN CAPITAL LETTER B WITH DOT BELOW
+1E05;1E05;0062 0323;1E05;0062 0323; # (ḅ; ḅ; b◌̣; ḅ; b◌̣; ) LATIN SMALL LETTER B WITH DOT BELOW
+1E06;1E06;0042 0331;1E06;0042 0331; # (Ḇ; Ḇ; B◌̱; Ḇ; B◌̱; ) LATIN CAPITAL LETTER B WITH LINE BELOW
+1E07;1E07;0062 0331;1E07;0062 0331; # (ḇ; ḇ; b◌̱; ḇ; b◌̱; ) LATIN SMALL LETTER B WITH LINE BELOW
+1E08;1E08;0043 0327 0301;1E08;0043 0327 0301; # (Ḉ; Ḉ; C◌̧◌Ì; Ḉ; C◌̧◌Ì; ) LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+1E09;1E09;0063 0327 0301;1E09;0063 0327 0301; # (ḉ; ḉ; c◌̧◌Ì; ḉ; c◌̧◌Ì; ) LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+1E0A;1E0A;0044 0307;1E0A;0044 0307; # (Ḋ; Ḋ; D◌̇; Ḋ; D◌̇; ) LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0B;1E0B;0064 0307;1E0B;0064 0307; # (ḋ; ḋ; d◌̇; ḋ; d◌̇; ) LATIN SMALL LETTER D WITH DOT ABOVE
+1E0C;1E0C;0044 0323;1E0C;0044 0323; # (Ḍ; Ḍ; D◌̣; Ḍ; D◌̣; ) LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0D;1E0D;0064 0323;1E0D;0064 0323; # (á¸; á¸; d◌̣; á¸; d◌̣; ) LATIN SMALL LETTER D WITH DOT BELOW
+1E0E;1E0E;0044 0331;1E0E;0044 0331; # (Ḏ; Ḏ; D◌̱; Ḏ; D◌̱; ) LATIN CAPITAL LETTER D WITH LINE BELOW
+1E0F;1E0F;0064 0331;1E0F;0064 0331; # (á¸; á¸; d◌̱; á¸; d◌̱; ) LATIN SMALL LETTER D WITH LINE BELOW
+1E10;1E10;0044 0327;1E10;0044 0327; # (á¸; á¸; D◌̧; á¸; D◌̧; ) LATIN CAPITAL LETTER D WITH CEDILLA
+1E11;1E11;0064 0327;1E11;0064 0327; # (ḑ; ḑ; d◌̧; ḑ; d◌̧; ) LATIN SMALL LETTER D WITH CEDILLA
+1E12;1E12;0044 032D;1E12;0044 032D; # (Ḓ; Ḓ; D◌̭; Ḓ; D◌̭; ) LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E13;1E13;0064 032D;1E13;0064 032D; # (ḓ; ḓ; d◌̭; ḓ; d◌̭; ) LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300; # (Ḕ; Ḕ; E◌̄◌̀; Ḕ; E◌̄◌̀; ) LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1E15;1E15;0065 0304 0300;1E15;0065 0304 0300; # (ḕ; ḕ; e◌̄◌̀; ḕ; e◌̄◌̀; ) LATIN SMALL LETTER E WITH MACRON AND GRAVE
+1E16;1E16;0045 0304 0301;1E16;0045 0304 0301; # (Ḗ; Ḗ; E◌̄◌Ì; Ḗ; E◌̄◌Ì; ) LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E17;1E17;0065 0304 0301;1E17;0065 0304 0301; # (ḗ; ḗ; e◌̄◌Ì; ḗ; e◌̄◌Ì; ) LATIN SMALL LETTER E WITH MACRON AND ACUTE
+1E18;1E18;0045 032D;1E18;0045 032D; # (Ḙ; Ḙ; E◌̭; Ḙ; E◌̭; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E19;1E19;0065 032D;1E19;0065 032D; # (ḙ; ḙ; e◌̭; ḙ; e◌̭; ) LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+1E1A;1E1A;0045 0330;1E1A;0045 0330; # (Ḛ; Ḛ; E◌̰; Ḛ; E◌̰; ) LATIN CAPITAL LETTER E WITH TILDE BELOW
+1E1B;1E1B;0065 0330;1E1B;0065 0330; # (ḛ; ḛ; e◌̰; ḛ; e◌̰; ) LATIN SMALL LETTER E WITH TILDE BELOW
+1E1C;1E1C;0045 0327 0306;1E1C;0045 0327 0306; # (Ḝ; Ḝ; E◌̧◌̆; Ḝ; E◌̧◌̆; ) LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+1E1D;1E1D;0065 0327 0306;1E1D;0065 0327 0306; # (á¸; á¸; e◌̧◌̆; á¸; e◌̧◌̆; ) LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+1E1E;1E1E;0046 0307;1E1E;0046 0307; # (Ḟ; Ḟ; F◌̇; Ḟ; F◌̇; ) LATIN CAPITAL LETTER F WITH DOT ABOVE
+1E1F;1E1F;0066 0307;1E1F;0066 0307; # (ḟ; ḟ; f◌̇; ḟ; f◌̇; ) LATIN SMALL LETTER F WITH DOT ABOVE
+1E20;1E20;0047 0304;1E20;0047 0304; # (Ḡ; Ḡ; G◌̄; Ḡ; G◌̄; ) LATIN CAPITAL LETTER G WITH MACRON
+1E21;1E21;0067 0304;1E21;0067 0304; # (ḡ; ḡ; g◌̄; ḡ; g◌̄; ) LATIN SMALL LETTER G WITH MACRON
+1E22;1E22;0048 0307;1E22;0048 0307; # (Ḣ; Ḣ; H◌̇; Ḣ; H◌̇; ) LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E23;1E23;0068 0307;1E23;0068 0307; # (ḣ; ḣ; h◌̇; ḣ; h◌̇; ) LATIN SMALL LETTER H WITH DOT ABOVE
+1E24;1E24;0048 0323;1E24;0048 0323; # (Ḥ; Ḥ; H◌̣; Ḥ; H◌̣; ) LATIN CAPITAL LETTER H WITH DOT BELOW
+1E25;1E25;0068 0323;1E25;0068 0323; # (ḥ; ḥ; h◌̣; ḥ; h◌̣; ) LATIN SMALL LETTER H WITH DOT BELOW
+1E26;1E26;0048 0308;1E26;0048 0308; # (Ḧ; Ḧ; H◌̈; Ḧ; H◌̈; ) LATIN CAPITAL LETTER H WITH DIAERESIS
+1E27;1E27;0068 0308;1E27;0068 0308; # (ḧ; ḧ; h◌̈; ḧ; h◌̈; ) LATIN SMALL LETTER H WITH DIAERESIS
+1E28;1E28;0048 0327;1E28;0048 0327; # (Ḩ; Ḩ; H◌̧; Ḩ; H◌̧; ) LATIN CAPITAL LETTER H WITH CEDILLA
+1E29;1E29;0068 0327;1E29;0068 0327; # (ḩ; ḩ; h◌̧; ḩ; h◌̧; ) LATIN SMALL LETTER H WITH CEDILLA
+1E2A;1E2A;0048 032E;1E2A;0048 032E; # (Ḫ; Ḫ; H◌̮; Ḫ; H◌̮; ) LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E2B;1E2B;0068 032E;1E2B;0068 032E; # (ḫ; ḫ; h◌̮; ḫ; h◌̮; ) LATIN SMALL LETTER H WITH BREVE BELOW
+1E2C;1E2C;0049 0330;1E2C;0049 0330; # (Ḭ; Ḭ; I◌̰; Ḭ; I◌̰; ) LATIN CAPITAL LETTER I WITH TILDE BELOW
+1E2D;1E2D;0069 0330;1E2D;0069 0330; # (ḭ; ḭ; i◌̰; ḭ; i◌̰; ) LATIN SMALL LETTER I WITH TILDE BELOW
+1E2E;1E2E;0049 0308 0301;1E2E;0049 0308 0301; # (Ḯ; Ḯ; I◌̈◌Ì; Ḯ; I◌̈◌Ì; ) LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+1E2F;1E2F;0069 0308 0301;1E2F;0069 0308 0301; # (ḯ; ḯ; i◌̈◌Ì; ḯ; i◌̈◌Ì; ) LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+1E30;1E30;004B 0301;1E30;004B 0301; # (Ḱ; Ḱ; Kâ—ŒÌ; Ḱ; Kâ—ŒÌ; ) LATIN CAPITAL LETTER K WITH ACUTE
+1E31;1E31;006B 0301;1E31;006B 0301; # (ḱ; ḱ; kâ—ŒÌ; ḱ; kâ—ŒÌ; ) LATIN SMALL LETTER K WITH ACUTE
+1E32;1E32;004B 0323;1E32;004B 0323; # (Ḳ; Ḳ; K◌̣; Ḳ; K◌̣; ) LATIN CAPITAL LETTER K WITH DOT BELOW
+1E33;1E33;006B 0323;1E33;006B 0323; # (ḳ; ḳ; k◌̣; ḳ; k◌̣; ) LATIN SMALL LETTER K WITH DOT BELOW
+1E34;1E34;004B 0331;1E34;004B 0331; # (Ḵ; Ḵ; K◌̱; Ḵ; K◌̱; ) LATIN CAPITAL LETTER K WITH LINE BELOW
+1E35;1E35;006B 0331;1E35;006B 0331; # (ḵ; ḵ; k◌̱; ḵ; k◌̱; ) LATIN SMALL LETTER K WITH LINE BELOW
+1E36;1E36;004C 0323;1E36;004C 0323; # (Ḷ; Ḷ; L◌̣; Ḷ; L◌̣; ) LATIN CAPITAL LETTER L WITH DOT BELOW
+1E37;1E37;006C 0323;1E37;006C 0323; # (ḷ; ḷ; l◌̣; ḷ; l◌̣; ) LATIN SMALL LETTER L WITH DOT BELOW
+1E38;1E38;004C 0323 0304;1E38;004C 0323 0304; # (Ḹ; Ḹ; L◌̣◌̄; Ḹ; L◌̣◌̄; ) LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E39;1E39;006C 0323 0304;1E39;006C 0323 0304; # (ḹ; ḹ; l◌̣◌̄; ḹ; l◌̣◌̄; ) LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+1E3A;1E3A;004C 0331;1E3A;004C 0331; # (Ḻ; Ḻ; L◌̱; Ḻ; L◌̱; ) LATIN CAPITAL LETTER L WITH LINE BELOW
+1E3B;1E3B;006C 0331;1E3B;006C 0331; # (ḻ; ḻ; l◌̱; ḻ; l◌̱; ) LATIN SMALL LETTER L WITH LINE BELOW
+1E3C;1E3C;004C 032D;1E3C;004C 032D; # (Ḽ; Ḽ; L◌̭; Ḽ; L◌̭; ) LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3D;1E3D;006C 032D;1E3D;006C 032D; # (ḽ; ḽ; l◌̭; ḽ; l◌̭; ) LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+1E3E;1E3E;004D 0301;1E3E;004D 0301; # (Ḿ; Ḿ; Mâ—ŒÌ; Ḿ; Mâ—ŒÌ; ) LATIN CAPITAL LETTER M WITH ACUTE
+1E3F;1E3F;006D 0301;1E3F;006D 0301; # (ḿ; ḿ; mâ—ŒÌ; ḿ; mâ—ŒÌ; ) LATIN SMALL LETTER M WITH ACUTE
+1E40;1E40;004D 0307;1E40;004D 0307; # (Ṁ; Ṁ; M◌̇; Ṁ; M◌̇; ) LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E41;1E41;006D 0307;1E41;006D 0307; # (á¹; á¹; m◌̇; á¹; m◌̇; ) LATIN SMALL LETTER M WITH DOT ABOVE
+1E42;1E42;004D 0323;1E42;004D 0323; # (Ṃ; Ṃ; M◌̣; Ṃ; M◌̣; ) LATIN CAPITAL LETTER M WITH DOT BELOW
+1E43;1E43;006D 0323;1E43;006D 0323; # (ṃ; ṃ; m◌̣; ṃ; m◌̣; ) LATIN SMALL LETTER M WITH DOT BELOW
+1E44;1E44;004E 0307;1E44;004E 0307; # (Ṅ; Ṅ; N◌̇; Ṅ; N◌̇; ) LATIN CAPITAL LETTER N WITH DOT ABOVE
+1E45;1E45;006E 0307;1E45;006E 0307; # (ṅ; ṅ; n◌̇; ṅ; n◌̇; ) LATIN SMALL LETTER N WITH DOT ABOVE
+1E46;1E46;004E 0323;1E46;004E 0323; # (Ṇ; Ṇ; N◌̣; Ṇ; N◌̣; ) LATIN CAPITAL LETTER N WITH DOT BELOW
+1E47;1E47;006E 0323;1E47;006E 0323; # (ṇ; ṇ; n◌̣; ṇ; n◌̣; ) LATIN SMALL LETTER N WITH DOT BELOW
+1E48;1E48;004E 0331;1E48;004E 0331; # (Ṉ; Ṉ; N◌̱; Ṉ; N◌̱; ) LATIN CAPITAL LETTER N WITH LINE BELOW
+1E49;1E49;006E 0331;1E49;006E 0331; # (ṉ; ṉ; n◌̱; ṉ; n◌̱; ) LATIN SMALL LETTER N WITH LINE BELOW
+1E4A;1E4A;004E 032D;1E4A;004E 032D; # (Ṋ; Ṋ; N◌̭; Ṋ; N◌̭; ) LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E4B;1E4B;006E 032D;1E4B;006E 032D; # (ṋ; ṋ; n◌̭; ṋ; n◌̭; ) LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+1E4C;1E4C;004F 0303 0301;1E4C;004F 0303 0301; # (Ṍ; Ṍ; O◌̃◌Ì; Ṍ; O◌̃◌Ì; ) LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4D;1E4D;006F 0303 0301;1E4D;006F 0303 0301; # (á¹; á¹; o◌̃◌Ì; á¹; o◌̃◌Ì; ) LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4E;1E4E;004F 0303 0308;1E4E;004F 0303 0308; # (Ṏ; Ṏ; O◌̃◌̈; Ṏ; O◌̃◌̈; ) LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1E4F;1E4F;006F 0303 0308;1E4F;006F 0303 0308; # (á¹; á¹; o◌̃◌̈; á¹; o◌̃◌̈; ) LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E50;1E50;004F 0304 0300;1E50;004F 0304 0300; # (á¹; á¹; O◌̄◌̀; á¹; O◌̄◌̀; ) LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1E51;1E51;006F 0304 0300;1E51;006F 0304 0300; # (ṑ; ṑ; o◌̄◌̀; ṑ; o◌̄◌̀; ) LATIN SMALL LETTER O WITH MACRON AND GRAVE
+1E52;1E52;004F 0304 0301;1E52;004F 0304 0301; # (á¹’; á¹’; O◌̄◌Ì; á¹’; O◌̄◌Ì; ) LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E53;1E53;006F 0304 0301;1E53;006F 0304 0301; # (ṓ; ṓ; o◌̄◌Ì; ṓ; o◌̄◌Ì; ) LATIN SMALL LETTER O WITH MACRON AND ACUTE
+1E54;1E54;0050 0301;1E54;0050 0301; # (á¹”; á¹”; Pâ—ŒÌ; á¹”; Pâ—ŒÌ; ) LATIN CAPITAL LETTER P WITH ACUTE
+1E55;1E55;0070 0301;1E55;0070 0301; # (ṕ; ṕ; pâ—ŒÌ; ṕ; pâ—ŒÌ; ) LATIN SMALL LETTER P WITH ACUTE
+1E56;1E56;0050 0307;1E56;0050 0307; # (Ṗ; Ṗ; P◌̇; Ṗ; P◌̇; ) LATIN CAPITAL LETTER P WITH DOT ABOVE
+1E57;1E57;0070 0307;1E57;0070 0307; # (ṗ; ṗ; p◌̇; ṗ; p◌̇; ) LATIN SMALL LETTER P WITH DOT ABOVE
+1E58;1E58;0052 0307;1E58;0052 0307; # (Ṙ; Ṙ; R◌̇; Ṙ; R◌̇; ) LATIN CAPITAL LETTER R WITH DOT ABOVE
+1E59;1E59;0072 0307;1E59;0072 0307; # (ṙ; ṙ; r◌̇; ṙ; r◌̇; ) LATIN SMALL LETTER R WITH DOT ABOVE
+1E5A;1E5A;0052 0323;1E5A;0052 0323; # (Ṛ; Ṛ; R◌̣; Ṛ; R◌̣; ) LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5B;1E5B;0072 0323;1E5B;0072 0323; # (ṛ; ṛ; r◌̣; ṛ; r◌̣; ) LATIN SMALL LETTER R WITH DOT BELOW
+1E5C;1E5C;0052 0323 0304;1E5C;0052 0323 0304; # (Ṝ; Ṝ; R◌̣◌̄; Ṝ; R◌̣◌̄; ) LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5D;1E5D;0072 0323 0304;1E5D;0072 0323 0304; # (á¹; á¹; r◌̣◌̄; á¹; r◌̣◌̄; ) LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+1E5E;1E5E;0052 0331;1E5E;0052 0331; # (Ṟ; Ṟ; R◌̱; Ṟ; R◌̱; ) LATIN CAPITAL LETTER R WITH LINE BELOW
+1E5F;1E5F;0072 0331;1E5F;0072 0331; # (ṟ; ṟ; r◌̱; ṟ; r◌̱; ) LATIN SMALL LETTER R WITH LINE BELOW
+1E60;1E60;0053 0307;1E60;0053 0307; # (Ṡ; Ṡ; S◌̇; Ṡ; S◌̇; ) LATIN CAPITAL LETTER S WITH DOT ABOVE
+1E61;1E61;0073 0307;1E61;0073 0307; # (ṡ; ṡ; s◌̇; ṡ; s◌̇; ) LATIN SMALL LETTER S WITH DOT ABOVE
+1E62;1E62;0053 0323;1E62;0053 0323; # (Ṣ; Ṣ; S◌̣; Ṣ; S◌̣; ) LATIN CAPITAL LETTER S WITH DOT BELOW
+1E63;1E63;0073 0323;1E63;0073 0323; # (ṣ; ṣ; s◌̣; ṣ; s◌̣; ) LATIN SMALL LETTER S WITH DOT BELOW
+1E64;1E64;0053 0301 0307;1E64;0053 0301 0307; # (Ṥ; Ṥ; Sâ—ŒÌ◌̇; Ṥ; Sâ—ŒÌ◌̇; ) LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+1E65;1E65;0073 0301 0307;1E65;0073 0301 0307; # (á¹¥; á¹¥; sâ—ŒÌ◌̇; á¹¥; sâ—ŒÌ◌̇; ) LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+1E66;1E66;0053 030C 0307;1E66;0053 030C 0307; # (Ṧ; Ṧ; S◌̌◌̇; Ṧ; S◌̌◌̇; ) LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E67;1E67;0073 030C 0307;1E67;0073 030C 0307; # (ṧ; ṧ; s◌̌◌̇; ṧ; s◌̌◌̇; ) LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+1E68;1E68;0053 0323 0307;1E68;0053 0323 0307; # (Ṩ; Ṩ; S◌̣◌̇; Ṩ; S◌̣◌̇; ) LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E69;1E69;0073 0323 0307;1E69;0073 0323 0307; # (ṩ; ṩ; s◌̣◌̇; ṩ; s◌̣◌̇; ) LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6A;1E6A;0054 0307;1E6A;0054 0307; # (Ṫ; Ṫ; T◌̇; Ṫ; T◌̇; ) LATIN CAPITAL LETTER T WITH DOT ABOVE
+1E6B;1E6B;0074 0307;1E6B;0074 0307; # (ṫ; ṫ; t◌̇; ṫ; t◌̇; ) LATIN SMALL LETTER T WITH DOT ABOVE
+1E6C;1E6C;0054 0323;1E6C;0054 0323; # (Ṭ; Ṭ; T◌̣; Ṭ; T◌̣; ) LATIN CAPITAL LETTER T WITH DOT BELOW
+1E6D;1E6D;0074 0323;1E6D;0074 0323; # (ṭ; ṭ; t◌̣; ṭ; t◌̣; ) LATIN SMALL LETTER T WITH DOT BELOW
+1E6E;1E6E;0054 0331;1E6E;0054 0331; # (Ṯ; Ṯ; T◌̱; Ṯ; T◌̱; ) LATIN CAPITAL LETTER T WITH LINE BELOW
+1E6F;1E6F;0074 0331;1E6F;0074 0331; # (ṯ; ṯ; t◌̱; ṯ; t◌̱; ) LATIN SMALL LETTER T WITH LINE BELOW
+1E70;1E70;0054 032D;1E70;0054 032D; # (Ṱ; Ṱ; T◌̭; Ṱ; T◌̭; ) LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E71;1E71;0074 032D;1E71;0074 032D; # (ṱ; ṱ; t◌̭; ṱ; t◌̭; ) LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+1E72;1E72;0055 0324;1E72;0055 0324; # (Ṳ; Ṳ; U◌̤; Ṳ; U◌̤; ) LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E73;1E73;0075 0324;1E73;0075 0324; # (ṳ; ṳ; u◌̤; ṳ; u◌̤; ) LATIN SMALL LETTER U WITH DIAERESIS BELOW
+1E74;1E74;0055 0330;1E74;0055 0330; # (Ṵ; Ṵ; U◌̰; Ṵ; U◌̰; ) LATIN CAPITAL LETTER U WITH TILDE BELOW
+1E75;1E75;0075 0330;1E75;0075 0330; # (ṵ; ṵ; u◌̰; ṵ; u◌̰; ) LATIN SMALL LETTER U WITH TILDE BELOW
+1E76;1E76;0055 032D;1E76;0055 032D; # (Ṷ; Ṷ; U◌̭; Ṷ; U◌̭; ) LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E77;1E77;0075 032D;1E77;0075 032D; # (ṷ; ṷ; u◌̭; ṷ; u◌̭; ) LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+1E78;1E78;0055 0303 0301;1E78;0055 0303 0301; # (Ṹ; Ṹ; U◌̃◌Ì; Ṹ; U◌̃◌Ì; ) LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+1E79;1E79;0075 0303 0301;1E79;0075 0303 0301; # (á¹¹; á¹¹; u◌̃◌Ì; á¹¹; u◌̃◌Ì; ) LATIN SMALL LETTER U WITH TILDE AND ACUTE
+1E7A;1E7A;0055 0304 0308;1E7A;0055 0304 0308; # (Ṻ; Ṻ; U◌̄◌̈; Ṻ; U◌̄◌̈; ) LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1E7B;1E7B;0075 0304 0308;1E7B;0075 0304 0308; # (ṻ; ṻ; u◌̄◌̈; ṻ; u◌̄◌̈; ) LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+1E7C;1E7C;0056 0303;1E7C;0056 0303; # (Ṽ; Ṽ; V◌̃; Ṽ; V◌̃; ) LATIN CAPITAL LETTER V WITH TILDE
+1E7D;1E7D;0076 0303;1E7D;0076 0303; # (ṽ; ṽ; v◌̃; ṽ; v◌̃; ) LATIN SMALL LETTER V WITH TILDE
+1E7E;1E7E;0056 0323;1E7E;0056 0323; # (Ṿ; Ṿ; V◌̣; Ṿ; V◌̣; ) LATIN CAPITAL LETTER V WITH DOT BELOW
+1E7F;1E7F;0076 0323;1E7F;0076 0323; # (ṿ; ṿ; v◌̣; ṿ; v◌̣; ) LATIN SMALL LETTER V WITH DOT BELOW
+1E80;1E80;0057 0300;1E80;0057 0300; # (Ẁ; Ẁ; W◌̀; Ẁ; W◌̀; ) LATIN CAPITAL LETTER W WITH GRAVE
+1E81;1E81;0077 0300;1E81;0077 0300; # (áº; áº; w◌̀; áº; w◌̀; ) LATIN SMALL LETTER W WITH GRAVE
+1E82;1E82;0057 0301;1E82;0057 0301; # (Ẃ; Ẃ; Wâ—ŒÌ; Ẃ; Wâ—ŒÌ; ) LATIN CAPITAL LETTER W WITH ACUTE
+1E83;1E83;0077 0301;1E83;0077 0301; # (ẃ; ẃ; wâ—ŒÌ; ẃ; wâ—ŒÌ; ) LATIN SMALL LETTER W WITH ACUTE
+1E84;1E84;0057 0308;1E84;0057 0308; # (Ẅ; Ẅ; W◌̈; Ẅ; W◌̈; ) LATIN CAPITAL LETTER W WITH DIAERESIS
+1E85;1E85;0077 0308;1E85;0077 0308; # (ẅ; ẅ; w◌̈; ẅ; w◌̈; ) LATIN SMALL LETTER W WITH DIAERESIS
+1E86;1E86;0057 0307;1E86;0057 0307; # (Ẇ; Ẇ; W◌̇; Ẇ; W◌̇; ) LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E87;1E87;0077 0307;1E87;0077 0307; # (ẇ; ẇ; w◌̇; ẇ; w◌̇; ) LATIN SMALL LETTER W WITH DOT ABOVE
+1E88;1E88;0057 0323;1E88;0057 0323; # (Ẉ; Ẉ; W◌̣; Ẉ; W◌̣; ) LATIN CAPITAL LETTER W WITH DOT BELOW
+1E89;1E89;0077 0323;1E89;0077 0323; # (ẉ; ẉ; w◌̣; ẉ; w◌̣; ) LATIN SMALL LETTER W WITH DOT BELOW
+1E8A;1E8A;0058 0307;1E8A;0058 0307; # (Ẋ; Ẋ; X◌̇; Ẋ; X◌̇; ) LATIN CAPITAL LETTER X WITH DOT ABOVE
+1E8B;1E8B;0078 0307;1E8B;0078 0307; # (ẋ; ẋ; x◌̇; ẋ; x◌̇; ) LATIN SMALL LETTER X WITH DOT ABOVE
+1E8C;1E8C;0058 0308;1E8C;0058 0308; # (Ẍ; Ẍ; X◌̈; Ẍ; X◌̈; ) LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8D;1E8D;0078 0308;1E8D;0078 0308; # (áº; áº; x◌̈; áº; x◌̈; ) LATIN SMALL LETTER X WITH DIAERESIS
+1E8E;1E8E;0059 0307;1E8E;0059 0307; # (Ẏ; Ẏ; Y◌̇; Ẏ; Y◌̇; ) LATIN CAPITAL LETTER Y WITH DOT ABOVE
+1E8F;1E8F;0079 0307;1E8F;0079 0307; # (áº; áº; y◌̇; áº; y◌̇; ) LATIN SMALL LETTER Y WITH DOT ABOVE
+1E90;1E90;005A 0302;1E90;005A 0302; # (áº; áº; Z◌̂; áº; Z◌̂; ) LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+1E91;1E91;007A 0302;1E91;007A 0302; # (ẑ; ẑ; z◌̂; ẑ; z◌̂; ) LATIN SMALL LETTER Z WITH CIRCUMFLEX
+1E92;1E92;005A 0323;1E92;005A 0323; # (Ẓ; Ẓ; Z◌̣; Ẓ; Z◌̣; ) LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E93;1E93;007A 0323;1E93;007A 0323; # (ẓ; ẓ; z◌̣; ẓ; z◌̣; ) LATIN SMALL LETTER Z WITH DOT BELOW
+1E94;1E94;005A 0331;1E94;005A 0331; # (Ẕ; Ẕ; Z◌̱; Ẕ; Z◌̱; ) LATIN CAPITAL LETTER Z WITH LINE BELOW
+1E95;1E95;007A 0331;1E95;007A 0331; # (ẕ; ẕ; z◌̱; ẕ; z◌̱; ) LATIN SMALL LETTER Z WITH LINE BELOW
+1E96;1E96;0068 0331;1E96;0068 0331; # (ẖ; ẖ; h◌̱; ẖ; h◌̱; ) LATIN SMALL LETTER H WITH LINE BELOW
+1E97;1E97;0074 0308;1E97;0074 0308; # (ẗ; ẗ; t◌̈; ẗ; t◌̈; ) LATIN SMALL LETTER T WITH DIAERESIS
+1E98;1E98;0077 030A;1E98;0077 030A; # (ẘ; ẘ; w◌̊; ẘ; w◌̊; ) LATIN SMALL LETTER W WITH RING ABOVE
+1E99;1E99;0079 030A;1E99;0079 030A; # (ẙ; ẙ; y◌̊; ẙ; y◌̊; ) LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A;1E9A;1E9A;0061 02BE;0061 02BE; # (ẚ; ẚ; ẚ; aʾ; aʾ; ) LATIN SMALL LETTER A WITH RIGHT HALF RING
+1E9B;1E9B;017F 0307;1E61;0073 0307; # (ẛ; ẛ; ſ◌̇; ṡ; s◌̇; ) LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0;1EA0;0041 0323;1EA0;0041 0323; # (Ạ; Ạ; A◌̣; Ạ; A◌̣; ) LATIN CAPITAL LETTER A WITH DOT BELOW
+1EA1;1EA1;0061 0323;1EA1;0061 0323; # (ạ; ạ; a◌̣; ạ; a◌̣; ) LATIN SMALL LETTER A WITH DOT BELOW
+1EA2;1EA2;0041 0309;1EA2;0041 0309; # (Ả; Ả; A◌̉; Ả; A◌̉; ) LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EA3;1EA3;0061 0309;1EA3;0061 0309; # (ả; ả; a◌̉; ả; a◌̉; ) LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA4;1EA4;0041 0302 0301;1EA4;0041 0302 0301; # (Ấ; Ấ; A◌̂◌Ì; Ấ; A◌̂◌Ì; ) LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA5;1EA5;0061 0302 0301;1EA5;0061 0302 0301; # (ấ; ấ; a◌̂◌Ì; ấ; a◌̂◌Ì; ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA6;1EA6;0041 0302 0300;1EA6;0041 0302 0300; # (Ầ; Ầ; A◌̂◌̀; Ầ; A◌̂◌̀; ) LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA7;1EA7;0061 0302 0300;1EA7;0061 0302 0300; # (ầ; ầ; a◌̂◌̀; ầ; a◌̂◌̀; ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA8;1EA8;0041 0302 0309;1EA8;0041 0302 0309; # (Ẩ; Ẩ; A◌̂◌̉; Ẩ; A◌̂◌̉; ) LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA9;1EA9;0061 0302 0309;1EA9;0061 0302 0309; # (ẩ; ẩ; a◌̂◌̉; ẩ; a◌̂◌̉; ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAA;1EAA;0041 0302 0303;1EAA;0041 0302 0303; # (Ẫ; Ẫ; A◌̂◌̃; Ẫ; A◌̂◌̃; ) LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAB;1EAB;0061 0302 0303;1EAB;0061 0302 0303; # (ẫ; ẫ; a◌̂◌̃; ẫ; a◌̂◌̃; ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAC;1EAC;0041 0323 0302;1EAC;0041 0323 0302; # (Ậ; Ậ; A◌̣◌̂; Ậ; A◌̣◌̂; ) LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAD;1EAD;0061 0323 0302;1EAD;0061 0323 0302; # (ậ; ậ; a◌̣◌̂; ậ; a◌̣◌̂; ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAE;1EAE;0041 0306 0301;1EAE;0041 0306 0301; # (Ắ; Ắ; A◌̆◌Ì; Ắ; A◌̆◌Ì; ) LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EAF;1EAF;0061 0306 0301;1EAF;0061 0306 0301; # (ắ; ắ; a◌̆◌Ì; ắ; a◌̆◌Ì; ) LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EB0;1EB0;0041 0306 0300;1EB0;0041 0306 0300; # (Ằ; Ằ; A◌̆◌̀; Ằ; A◌̆◌̀; ) LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB1;1EB1;0061 0306 0300;1EB1;0061 0306 0300; # (ằ; ằ; a◌̆◌̀; ằ; a◌̆◌̀; ) LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB2;1EB2;0041 0306 0309;1EB2;0041 0306 0309; # (Ẳ; Ẳ; A◌̆◌̉; Ẳ; A◌̆◌̉; ) LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB3;1EB3;0061 0306 0309;1EB3;0061 0306 0309; # (ẳ; ẳ; a◌̆◌̉; ẳ; a◌̆◌̉; ) LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB4;1EB4;0041 0306 0303;1EB4;0041 0306 0303; # (Ẵ; Ẵ; A◌̆◌̃; Ẵ; A◌̆◌̃; ) LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB5;1EB5;0061 0306 0303;1EB5;0061 0306 0303; # (ẵ; ẵ; a◌̆◌̃; ẵ; a◌̆◌̃; ) LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB6;1EB6;0041 0323 0306;1EB6;0041 0323 0306; # (Ặ; Ặ; A◌̣◌̆; Ặ; A◌̣◌̆; ) LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EB7;1EB7;0061 0323 0306;1EB7;0061 0323 0306; # (ặ; ặ; a◌̣◌̆; ặ; a◌̣◌̆; ) LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB8;1EB8;0045 0323;1EB8;0045 0323; # (Ẹ; Ẹ; E◌̣; Ẹ; E◌̣; ) LATIN CAPITAL LETTER E WITH DOT BELOW
+1EB9;1EB9;0065 0323;1EB9;0065 0323; # (ẹ; ẹ; e◌̣; ẹ; e◌̣; ) LATIN SMALL LETTER E WITH DOT BELOW
+1EBA;1EBA;0045 0309;1EBA;0045 0309; # (Ẻ; Ẻ; E◌̉; Ẻ; E◌̉; ) LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EBB;1EBB;0065 0309;1EBB;0065 0309; # (ẻ; ẻ; e◌̉; ẻ; e◌̉; ) LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBC;1EBC;0045 0303;1EBC;0045 0303; # (Ẽ; Ẽ; E◌̃; Ẽ; E◌̃; ) LATIN CAPITAL LETTER E WITH TILDE
+1EBD;1EBD;0065 0303;1EBD;0065 0303; # (ẽ; ẽ; e◌̃; ẽ; e◌̃; ) LATIN SMALL LETTER E WITH TILDE
+1EBE;1EBE;0045 0302 0301;1EBE;0045 0302 0301; # (Ế; Ế; E◌̂◌Ì; Ế; E◌̂◌Ì; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBF;1EBF;0065 0302 0301;1EBF;0065 0302 0301; # (ế; ế; e◌̂◌Ì; ế; e◌̂◌Ì; ) LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC0;1EC0;0045 0302 0300;1EC0;0045 0302 0300; # (Ề; Ề; E◌̂◌̀; Ề; E◌̂◌̀; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC1;1EC1;0065 0302 0300;1EC1;0065 0302 0300; # (á»; á»; e◌̂◌̀; á»; e◌̂◌̀; ) LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC2;1EC2;0045 0302 0309;1EC2;0045 0302 0309; # (Ể; Ể; E◌̂◌̉; Ể; E◌̂◌̉; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC3;1EC3;0065 0302 0309;1EC3;0065 0302 0309; # (ể; ể; e◌̂◌̉; ể; e◌̂◌̉; ) LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC4;1EC4;0045 0302 0303;1EC4;0045 0302 0303; # (Ễ; Ễ; E◌̂◌̃; Ễ; E◌̂◌̃; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC5;1EC5;0065 0302 0303;1EC5;0065 0302 0303; # (ễ; ễ; e◌̂◌̃; ễ; e◌̂◌̃; ) LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC6;1EC6;0045 0323 0302;1EC6;0045 0323 0302; # (Ệ; Ệ; E◌̣◌̂; Ệ; E◌̣◌̂; ) LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC7;1EC7;0065 0323 0302;1EC7;0065 0323 0302; # (ệ; ệ; e◌̣◌̂; ệ; e◌̣◌̂; ) LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC8;1EC8;0049 0309;1EC8;0049 0309; # (Ỉ; Ỉ; I◌̉; Ỉ; I◌̉; ) LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1EC9;1EC9;0069 0309;1EC9;0069 0309; # (ỉ; ỉ; i◌̉; ỉ; i◌̉; ) LATIN SMALL LETTER I WITH HOOK ABOVE
+1ECA;1ECA;0049 0323;1ECA;0049 0323; # (Ị; Ị; I◌̣; Ị; I◌̣; ) LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECB;1ECB;0069 0323;1ECB;0069 0323; # (ị; ị; i◌̣; ị; i◌̣; ) LATIN SMALL LETTER I WITH DOT BELOW
+1ECC;1ECC;004F 0323;1ECC;004F 0323; # (Ọ; Ọ; O◌̣; Ọ; O◌̣; ) LATIN CAPITAL LETTER O WITH DOT BELOW
+1ECD;1ECD;006F 0323;1ECD;006F 0323; # (á»; á»; o◌̣; á»; o◌̣; ) LATIN SMALL LETTER O WITH DOT BELOW
+1ECE;1ECE;004F 0309;1ECE;004F 0309; # (Ỏ; Ỏ; O◌̉; Ỏ; O◌̉; ) LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1ECF;1ECF;006F 0309;1ECF;006F 0309; # (á»; á»; o◌̉; á»; o◌̉; ) LATIN SMALL LETTER O WITH HOOK ABOVE
+1ED0;1ED0;004F 0302 0301;1ED0;004F 0302 0301; # (á»; á»; O◌̂◌Ì; á»; O◌̂◌Ì; ) LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED1;1ED1;006F 0302 0301;1ED1;006F 0302 0301; # (ố; ố; o◌̂◌Ì; ố; o◌̂◌Ì; ) LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED2;1ED2;004F 0302 0300;1ED2;004F 0302 0300; # (Ồ; Ồ; O◌̂◌̀; Ồ; O◌̂◌̀; ) LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED3;1ED3;006F 0302 0300;1ED3;006F 0302 0300; # (ồ; ồ; o◌̂◌̀; ồ; o◌̂◌̀; ) LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED4;1ED4;004F 0302 0309;1ED4;004F 0302 0309; # (Ổ; Ổ; O◌̂◌̉; Ổ; O◌̂◌̉; ) LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED5;1ED5;006F 0302 0309;1ED5;006F 0302 0309; # (ổ; ổ; o◌̂◌̉; ổ; o◌̂◌̉; ) LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED6;1ED6;004F 0302 0303;1ED6;004F 0302 0303; # (Ỗ; Ỗ; O◌̂◌̃; Ỗ; O◌̂◌̃; ) LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED7;1ED7;006F 0302 0303;1ED7;006F 0302 0303; # (ỗ; ỗ; o◌̂◌̃; ỗ; o◌̂◌̃; ) LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED8;1ED8;004F 0323 0302;1ED8;004F 0323 0302; # (Ộ; Ộ; O◌̣◌̂; Ộ; O◌̣◌̂; ) LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED9;1ED9;006F 0323 0302;1ED9;006F 0323 0302; # (ộ; ộ; o◌̣◌̂; ộ; o◌̣◌̂; ) LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDA;1EDA;004F 031B 0301;1EDA;004F 031B 0301; # (Ớ; Ớ; O◌̛◌Ì; Ớ; O◌̛◌Ì; ) LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDB;1EDB;006F 031B 0301;1EDB;006F 031B 0301; # (á»›; á»›; o◌̛◌Ì; á»›; o◌̛◌Ì; ) LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDC;1EDC;004F 031B 0300;1EDC;004F 031B 0300; # (Ờ; Ờ; O◌̛◌̀; Ờ; O◌̛◌̀; ) LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDD;1EDD;006F 031B 0300;1EDD;006F 031B 0300; # (á»; á»; o◌̛◌̀; á»; o◌̛◌̀; ) LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDE;1EDE;004F 031B 0309;1EDE;004F 031B 0309; # (Ở; Ở; O◌̛◌̉; Ở; O◌̛◌̉; ) LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EDF;1EDF;006F 031B 0309;1EDF;006F 031B 0309; # (ở; ở; o◌̛◌̉; ở; o◌̛◌̉; ) LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EE0;1EE0;004F 031B 0303;1EE0;004F 031B 0303; # (Ỡ; Ỡ; O◌̛◌̃; Ỡ; O◌̛◌̃; ) LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EE1;1EE1;006F 031B 0303;1EE1;006F 031B 0303; # (ỡ; ỡ; o◌̛◌̃; ỡ; o◌̛◌̃; ) LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE2;1EE2;004F 031B 0323;1EE2;004F 031B 0323; # (Ợ; Ợ; O◌̛◌̣; Ợ; O◌̛◌̣; ) LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1EE3;1EE3;006F 031B 0323;1EE3;006F 031B 0323; # (ợ; ợ; o◌̛◌̣; ợ; o◌̛◌̣; ) LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE4;1EE4;0055 0323;1EE4;0055 0323; # (Ụ; Ụ; U◌̣; Ụ; U◌̣; ) LATIN CAPITAL LETTER U WITH DOT BELOW
+1EE5;1EE5;0075 0323;1EE5;0075 0323; # (ụ; ụ; u◌̣; ụ; u◌̣; ) LATIN SMALL LETTER U WITH DOT BELOW
+1EE6;1EE6;0055 0309;1EE6;0055 0309; # (Ủ; Ủ; U◌̉; Ủ; U◌̉; ) LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EE7;1EE7;0075 0309;1EE7;0075 0309; # (ủ; ủ; u◌̉; ủ; u◌̉; ) LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE8;1EE8;0055 031B 0301;1EE8;0055 031B 0301; # (Ứ; Ứ; U◌̛◌Ì; Ứ; U◌̛◌Ì; ) LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EE9;1EE9;0075 031B 0301;1EE9;0075 031B 0301; # (ứ; ứ; u◌̛◌Ì; ứ; u◌̛◌Ì; ) LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EEA;1EEA;0055 031B 0300;1EEA;0055 031B 0300; # (Ừ; Ừ; U◌̛◌̀; Ừ; U◌̛◌̀; ) LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEB;1EEB;0075 031B 0300;1EEB;0075 031B 0300; # (ừ; ừ; u◌̛◌̀; ừ; u◌̛◌̀; ) LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EEC;1EEC;0055 031B 0309;1EEC;0055 031B 0309; # (Ử; Ử; U◌̛◌̉; Ử; U◌̛◌̉; ) LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EED;1EED;0075 031B 0309;1EED;0075 031B 0309; # (ử; ử; u◌̛◌̉; ử; u◌̛◌̉; ) LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EEE;1EEE;0055 031B 0303;1EEE;0055 031B 0303; # (Ữ; Ữ; U◌̛◌̃; Ữ; U◌̛◌̃; ) LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EEF;1EEF;0075 031B 0303;1EEF;0075 031B 0303; # (ữ; ữ; u◌̛◌̃; ữ; u◌̛◌̃; ) LATIN SMALL LETTER U WITH HORN AND TILDE
+1EF0;1EF0;0055 031B 0323;1EF0;0055 031B 0323; # (Ự; Ự; U◌̛◌̣; Ự; U◌̛◌̣; ) LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF1;1EF1;0075 031B 0323;1EF1;0075 031B 0323; # (ự; ự; u◌̛◌̣; ự; u◌̛◌̣; ) LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF2;1EF2;0059 0300;1EF2;0059 0300; # (Ỳ; Ỳ; Y◌̀; Ỳ; Y◌̀; ) LATIN CAPITAL LETTER Y WITH GRAVE
+1EF3;1EF3;0079 0300;1EF3;0079 0300; # (ỳ; ỳ; y◌̀; ỳ; y◌̀; ) LATIN SMALL LETTER Y WITH GRAVE
+1EF4;1EF4;0059 0323;1EF4;0059 0323; # (Ỵ; Ỵ; Y◌̣; Ỵ; Y◌̣; ) LATIN CAPITAL LETTER Y WITH DOT BELOW
+1EF5;1EF5;0079 0323;1EF5;0079 0323; # (ỵ; ỵ; y◌̣; ỵ; y◌̣; ) LATIN SMALL LETTER Y WITH DOT BELOW
+1EF6;1EF6;0059 0309;1EF6;0059 0309; # (Ỷ; Ỷ; Y◌̉; Ỷ; Y◌̉; ) LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF7;1EF7;0079 0309;1EF7;0079 0309; # (ỷ; ỷ; y◌̉; ỷ; y◌̉; ) LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF8;1EF8;0059 0303;1EF8;0059 0303; # (Ỹ; Ỹ; Y◌̃; Ỹ; Y◌̃; ) LATIN CAPITAL LETTER Y WITH TILDE
+1EF9;1EF9;0079 0303;1EF9;0079 0303; # (ỹ; ỹ; y◌̃; ỹ; y◌̃; ) LATIN SMALL LETTER Y WITH TILDE
+1F00;1F00;03B1 0313;1F00;03B1 0313; # (ἀ; ἀ; α◌̓; ἀ; α◌̓; ) GREEK SMALL LETTER ALPHA WITH PSILI
+1F01;1F01;03B1 0314;1F01;03B1 0314; # (á¼; á¼; α◌̔; á¼; α◌̔; ) GREEK SMALL LETTER ALPHA WITH DASIA
+1F02;1F02;03B1 0313 0300;1F02;03B1 0313 0300; # (ἂ; ἂ; α◌̓◌̀; ἂ; α◌̓◌̀; ) GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+1F03;1F03;03B1 0314 0300;1F03;03B1 0314 0300; # (ἃ; ἃ; α◌̔◌̀; ἃ; α◌̔◌̀; ) GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+1F04;1F04;03B1 0313 0301;1F04;03B1 0313 0301; # (ἄ; ἄ; α◌̓◌Ì; ἄ; α◌̓◌Ì; ) GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+1F05;1F05;03B1 0314 0301;1F05;03B1 0314 0301; # (á¼…; á¼…; α◌̔◌Ì; á¼…; α◌̔◌Ì; ) GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+1F06;1F06;03B1 0313 0342;1F06;03B1 0313 0342; # (ἆ; ἆ; α◌̓◌͂; ἆ; α◌̓◌͂; ) GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F07;1F07;03B1 0314 0342;1F07;03B1 0314 0342; # (ἇ; ἇ; α◌̔◌͂; ἇ; α◌̔◌͂; ) GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F08;1F08;0391 0313;1F08;0391 0313; # (Ἀ; Ἀ; Α◌̓; Ἀ; Α◌̓; ) GREEK CAPITAL LETTER ALPHA WITH PSILI
+1F09;1F09;0391 0314;1F09;0391 0314; # (Ἁ; Ἁ; Α◌̔; Ἁ; Α◌̔; ) GREEK CAPITAL LETTER ALPHA WITH DASIA
+1F0A;1F0A;0391 0313 0300;1F0A;0391 0313 0300; # (Ἂ; Ἂ; Α◌̓◌̀; Ἂ; Α◌̓◌̀; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+1F0B;1F0B;0391 0314 0300;1F0B;0391 0314 0300; # (Ἃ; Ἃ; Α◌̔◌̀; Ἃ; Α◌̔◌̀; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+1F0C;1F0C;0391 0313 0301;1F0C;0391 0313 0301; # (Ἄ; Ἄ; Α◌̓◌Ì; Ἄ; Α◌̓◌Ì; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+1F0D;1F0D;0391 0314 0301;1F0D;0391 0314 0301; # (á¼; á¼; Α◌̔◌Ì; á¼; Α◌̔◌Ì; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+1F0E;1F0E;0391 0313 0342;1F0E;0391 0313 0342; # (Ἆ; Ἆ; Α◌̓◌͂; Ἆ; Α◌̓◌͂; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F0F;1F0F;0391 0314 0342;1F0F;0391 0314 0342; # (á¼; á¼; Α◌̔◌͂; á¼; Α◌̔◌͂; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F10;1F10;03B5 0313;1F10;03B5 0313; # (á¼; á¼; ε◌̓; á¼; ε◌̓; ) GREEK SMALL LETTER EPSILON WITH PSILI
+1F11;1F11;03B5 0314;1F11;03B5 0314; # (ἑ; ἑ; ε◌̔; ἑ; ε◌̔; ) GREEK SMALL LETTER EPSILON WITH DASIA
+1F12;1F12;03B5 0313 0300;1F12;03B5 0313 0300; # (ἒ; ἒ; ε◌̓◌̀; ἒ; ε◌̓◌̀; ) GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+1F13;1F13;03B5 0314 0300;1F13;03B5 0314 0300; # (ἓ; ἓ; ε◌̔◌̀; ἓ; ε◌̔◌̀; ) GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+1F14;1F14;03B5 0313 0301;1F14;03B5 0313 0301; # (á¼”; á¼”; ε◌̓◌Ì; á¼”; ε◌̓◌Ì; ) GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+1F15;1F15;03B5 0314 0301;1F15;03B5 0314 0301; # (ἕ; ἕ; ε◌̔◌Ì; ἕ; ε◌̔◌Ì; ) GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18;1F18;0395 0313;1F18;0395 0313; # (Ἐ; Ἐ; Ε◌̓; Ἐ; Ε◌̓; ) GREEK CAPITAL LETTER EPSILON WITH PSILI
+1F19;1F19;0395 0314;1F19;0395 0314; # (Ἑ; Ἑ; Ε◌̔; Ἑ; Ε◌̔; ) GREEK CAPITAL LETTER EPSILON WITH DASIA
+1F1A;1F1A;0395 0313 0300;1F1A;0395 0313 0300; # (Ἒ; Ἒ; Ε◌̓◌̀; Ἒ; Ε◌̓◌̀; ) GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+1F1B;1F1B;0395 0314 0300;1F1B;0395 0314 0300; # (Ἓ; Ἓ; Ε◌̔◌̀; Ἓ; Ε◌̔◌̀; ) GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+1F1C;1F1C;0395 0313 0301;1F1C;0395 0313 0301; # (Ἔ; Ἔ; Ε◌̓◌Ì; Ἔ; Ε◌̓◌Ì; ) GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+1F1D;1F1D;0395 0314 0301;1F1D;0395 0314 0301; # (á¼; á¼; Ε◌̔◌Ì; á¼; Ε◌̔◌Ì; ) GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20;1F20;03B7 0313;1F20;03B7 0313; # (ἠ; ἠ; η◌̓; ἠ; η◌̓; ) GREEK SMALL LETTER ETA WITH PSILI
+1F21;1F21;03B7 0314;1F21;03B7 0314; # (ἡ; ἡ; η◌̔; ἡ; η◌̔; ) GREEK SMALL LETTER ETA WITH DASIA
+1F22;1F22;03B7 0313 0300;1F22;03B7 0313 0300; # (ἢ; ἢ; η◌̓◌̀; ἢ; η◌̓◌̀; ) GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+1F23;1F23;03B7 0314 0300;1F23;03B7 0314 0300; # (ἣ; ἣ; η◌̔◌̀; ἣ; η◌̔◌̀; ) GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+1F24;1F24;03B7 0313 0301;1F24;03B7 0313 0301; # (ἤ; ἤ; η◌̓◌Ì; ἤ; η◌̓◌Ì; ) GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+1F25;1F25;03B7 0314 0301;1F25;03B7 0314 0301; # (á¼¥; á¼¥; η◌̔◌Ì; á¼¥; η◌̔◌Ì; ) GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+1F26;1F26;03B7 0313 0342;1F26;03B7 0313 0342; # (ἦ; ἦ; η◌̓◌͂; ἦ; η◌̓◌͂; ) GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+1F27;1F27;03B7 0314 0342;1F27;03B7 0314 0342; # (ἧ; ἧ; η◌̔◌͂; ἧ; η◌̔◌͂; ) GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1F28;1F28;0397 0313;1F28;0397 0313; # (Ἠ; Ἠ; Η◌̓; Ἠ; Η◌̓; ) GREEK CAPITAL LETTER ETA WITH PSILI
+1F29;1F29;0397 0314;1F29;0397 0314; # (Ἡ; Ἡ; Η◌̔; Ἡ; Η◌̔; ) GREEK CAPITAL LETTER ETA WITH DASIA
+1F2A;1F2A;0397 0313 0300;1F2A;0397 0313 0300; # (Ἢ; Ἢ; Η◌̓◌̀; Ἢ; Η◌̓◌̀; ) GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+1F2B;1F2B;0397 0314 0300;1F2B;0397 0314 0300; # (Ἣ; Ἣ; Η◌̔◌̀; Ἣ; Η◌̔◌̀; ) GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+1F2C;1F2C;0397 0313 0301;1F2C;0397 0313 0301; # (Ἤ; Ἤ; Η◌̓◌Ì; Ἤ; Η◌̓◌Ì; ) GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+1F2D;1F2D;0397 0314 0301;1F2D;0397 0314 0301; # (á¼­; á¼­; Η◌̔◌Ì; á¼­; Η◌̔◌Ì; ) GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+1F2E;1F2E;0397 0313 0342;1F2E;0397 0313 0342; # (Ἦ; Ἦ; Η◌̓◌͂; Ἦ; Η◌̓◌͂; ) GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+1F2F;1F2F;0397 0314 0342;1F2F;0397 0314 0342; # (Ἧ; Ἧ; Η◌̔◌͂; Ἧ; Η◌̔◌͂; ) GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F30;1F30;03B9 0313;1F30;03B9 0313; # (ἰ; ἰ; ι◌̓; ἰ; ι◌̓; ) GREEK SMALL LETTER IOTA WITH PSILI
+1F31;1F31;03B9 0314;1F31;03B9 0314; # (ἱ; ἱ; ι◌̔; ἱ; ι◌̔; ) GREEK SMALL LETTER IOTA WITH DASIA
+1F32;1F32;03B9 0313 0300;1F32;03B9 0313 0300; # (ἲ; ἲ; ι◌̓◌̀; ἲ; ι◌̓◌̀; ) GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+1F33;1F33;03B9 0314 0300;1F33;03B9 0314 0300; # (ἳ; ἳ; ι◌̔◌̀; ἳ; ι◌̔◌̀; ) GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+1F34;1F34;03B9 0313 0301;1F34;03B9 0313 0301; # (á¼´; á¼´; ι◌̓◌Ì; á¼´; ι◌̓◌Ì; ) GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+1F35;1F35;03B9 0314 0301;1F35;03B9 0314 0301; # (á¼µ; á¼µ; ι◌̔◌Ì; á¼µ; ι◌̔◌Ì; ) GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+1F36;1F36;03B9 0313 0342;1F36;03B9 0313 0342; # (ἶ; ἶ; ι◌̓◌͂; ἶ; ι◌̓◌͂; ) GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F37;1F37;03B9 0314 0342;1F37;03B9 0314 0342; # (ἷ; ἷ; ι◌̔◌͂; ἷ; ι◌̔◌͂; ) GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F38;1F38;0399 0313;1F38;0399 0313; # (Ἰ; Ἰ; Ι◌̓; Ἰ; Ι◌̓; ) GREEK CAPITAL LETTER IOTA WITH PSILI
+1F39;1F39;0399 0314;1F39;0399 0314; # (Ἱ; Ἱ; Ι◌̔; Ἱ; Ι◌̔; ) GREEK CAPITAL LETTER IOTA WITH DASIA
+1F3A;1F3A;0399 0313 0300;1F3A;0399 0313 0300; # (Ἲ; Ἲ; Ι◌̓◌̀; Ἲ; Ι◌̓◌̀; ) GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+1F3B;1F3B;0399 0314 0300;1F3B;0399 0314 0300; # (Ἳ; Ἳ; Ι◌̔◌̀; Ἳ; Ι◌̔◌̀; ) GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+1F3C;1F3C;0399 0313 0301;1F3C;0399 0313 0301; # (á¼¼; á¼¼; Ι◌̓◌Ì; á¼¼; Ι◌̓◌Ì; ) GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+1F3D;1F3D;0399 0314 0301;1F3D;0399 0314 0301; # (á¼½; á¼½; Ι◌̔◌Ì; á¼½; Ι◌̔◌Ì; ) GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+1F3E;1F3E;0399 0313 0342;1F3E;0399 0313 0342; # (Ἶ; Ἶ; Ι◌̓◌͂; Ἶ; Ι◌̓◌͂; ) GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F3F;1F3F;0399 0314 0342;1F3F;0399 0314 0342; # (Ἷ; Ἷ; Ι◌̔◌͂; Ἷ; Ι◌̔◌͂; ) GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F40;1F40;03BF 0313;1F40;03BF 0313; # (ὀ; ὀ; ο◌̓; ὀ; ο◌̓; ) GREEK SMALL LETTER OMICRON WITH PSILI
+1F41;1F41;03BF 0314;1F41;03BF 0314; # (á½; á½; ο◌̔; á½; ο◌̔; ) GREEK SMALL LETTER OMICRON WITH DASIA
+1F42;1F42;03BF 0313 0300;1F42;03BF 0313 0300; # (ὂ; ὂ; ο◌̓◌̀; ὂ; ο◌̓◌̀; ) GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+1F43;1F43;03BF 0314 0300;1F43;03BF 0314 0300; # (ὃ; ὃ; ο◌̔◌̀; ὃ; ο◌̔◌̀; ) GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+1F44;1F44;03BF 0313 0301;1F44;03BF 0313 0301; # (ὄ; ὄ; ο◌̓◌Ì; ὄ; ο◌̓◌Ì; ) GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+1F45;1F45;03BF 0314 0301;1F45;03BF 0314 0301; # (á½…; á½…; ο◌̔◌Ì; á½…; ο◌̔◌Ì; ) GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48;1F48;039F 0313;1F48;039F 0313; # (Ὀ; Ὀ; Ο◌̓; Ὀ; Ο◌̓; ) GREEK CAPITAL LETTER OMICRON WITH PSILI
+1F49;1F49;039F 0314;1F49;039F 0314; # (Ὁ; Ὁ; Ο◌̔; Ὁ; Ο◌̔; ) GREEK CAPITAL LETTER OMICRON WITH DASIA
+1F4A;1F4A;039F 0313 0300;1F4A;039F 0313 0300; # (Ὂ; Ὂ; Ο◌̓◌̀; Ὂ; Ο◌̓◌̀; ) GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+1F4B;1F4B;039F 0314 0300;1F4B;039F 0314 0300; # (Ὃ; Ὃ; Ο◌̔◌̀; Ὃ; Ο◌̔◌̀; ) GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+1F4C;1F4C;039F 0313 0301;1F4C;039F 0313 0301; # (Ὄ; Ὄ; Ο◌̓◌Ì; Ὄ; Ο◌̓◌Ì; ) GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+1F4D;1F4D;039F 0314 0301;1F4D;039F 0314 0301; # (á½; á½; Ο◌̔◌Ì; á½; Ο◌̔◌Ì; ) GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50;1F50;03C5 0313;1F50;03C5 0313; # (á½; á½; υ◌̓; á½; υ◌̓; ) GREEK SMALL LETTER UPSILON WITH PSILI
+1F51;1F51;03C5 0314;1F51;03C5 0314; # (ὑ; ὑ; υ◌̔; ὑ; υ◌̔; ) GREEK SMALL LETTER UPSILON WITH DASIA
+1F52;1F52;03C5 0313 0300;1F52;03C5 0313 0300; # (ὒ; ὒ; υ◌̓◌̀; ὒ; υ◌̓◌̀; ) GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F53;1F53;03C5 0314 0300;1F53;03C5 0314 0300; # (ὓ; ὓ; υ◌̔◌̀; ὓ; υ◌̔◌̀; ) GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+1F54;1F54;03C5 0313 0301;1F54;03C5 0313 0301; # (á½”; á½”; υ◌̓◌Ì; á½”; υ◌̓◌Ì; ) GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F55;1F55;03C5 0314 0301;1F55;03C5 0314 0301; # (ὕ; ὕ; υ◌̔◌Ì; ὕ; υ◌̔◌Ì; ) GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+1F56;1F56;03C5 0313 0342;1F56;03C5 0313 0342; # (ὖ; ὖ; υ◌̓◌͂; ὖ; υ◌̓◌͂; ) GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1F57;1F57;03C5 0314 0342;1F57;03C5 0314 0342; # (ὗ; ὗ; υ◌̔◌͂; ὗ; υ◌̔◌͂; ) GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59;1F59;03A5 0314;1F59;03A5 0314; # (Ὑ; Ὑ; Υ◌̔; Ὑ; Υ◌̔; ) GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B;1F5B;03A5 0314 0300;1F5B;03A5 0314 0300; # (Ὓ; Ὓ; Υ◌̔◌̀; Ὓ; Υ◌̔◌̀; ) GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D;1F5D;03A5 0314 0301;1F5D;03A5 0314 0301; # (á½; á½; Υ◌̔◌Ì; á½; Υ◌̔◌Ì; ) GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F;1F5F;03A5 0314 0342;1F5F;03A5 0314 0342; # (Ὗ; Ὗ; Υ◌̔◌͂; Ὗ; Υ◌̔◌͂; ) GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F60;1F60;03C9 0313;1F60;03C9 0313; # (ὠ; ὠ; ω◌̓; ὠ; ω◌̓; ) GREEK SMALL LETTER OMEGA WITH PSILI
+1F61;1F61;03C9 0314;1F61;03C9 0314; # (ὡ; ὡ; ω◌̔; ὡ; ω◌̔; ) GREEK SMALL LETTER OMEGA WITH DASIA
+1F62;1F62;03C9 0313 0300;1F62;03C9 0313 0300; # (ὢ; ὢ; ω◌̓◌̀; ὢ; ω◌̓◌̀; ) GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+1F63;1F63;03C9 0314 0300;1F63;03C9 0314 0300; # (ὣ; ὣ; ω◌̔◌̀; ὣ; ω◌̔◌̀; ) GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+1F64;1F64;03C9 0313 0301;1F64;03C9 0313 0301; # (ὤ; ὤ; ω◌̓◌Ì; ὤ; ω◌̓◌Ì; ) GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+1F65;1F65;03C9 0314 0301;1F65;03C9 0314 0301; # (á½¥; á½¥; ω◌̔◌Ì; á½¥; ω◌̔◌Ì; ) GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+1F66;1F66;03C9 0313 0342;1F66;03C9 0313 0342; # (ὦ; ὦ; ω◌̓◌͂; ὦ; ω◌̓◌͂; ) GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F67;1F67;03C9 0314 0342;1F67;03C9 0314 0342; # (ὧ; ὧ; ω◌̔◌͂; ὧ; ω◌̔◌͂; ) GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F68;1F68;03A9 0313;1F68;03A9 0313; # (Ὠ; Ὠ; Ω◌̓; Ὠ; Ω◌̓; ) GREEK CAPITAL LETTER OMEGA WITH PSILI
+1F69;1F69;03A9 0314;1F69;03A9 0314; # (Ὡ; Ὡ; Ω◌̔; Ὡ; Ω◌̔; ) GREEK CAPITAL LETTER OMEGA WITH DASIA
+1F6A;1F6A;03A9 0313 0300;1F6A;03A9 0313 0300; # (Ὢ; Ὢ; Ω◌̓◌̀; Ὢ; Ω◌̓◌̀; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+1F6B;1F6B;03A9 0314 0300;1F6B;03A9 0314 0300; # (Ὣ; Ὣ; Ω◌̔◌̀; Ὣ; Ω◌̔◌̀; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+1F6C;1F6C;03A9 0313 0301;1F6C;03A9 0313 0301; # (Ὤ; Ὤ; Ω◌̓◌Ì; Ὤ; Ω◌̓◌Ì; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+1F6D;1F6D;03A9 0314 0301;1F6D;03A9 0314 0301; # (á½­; á½­; Ω◌̔◌Ì; á½­; Ω◌̔◌Ì; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+1F6E;1F6E;03A9 0313 0342;1F6E;03A9 0313 0342; # (Ὦ; Ὦ; Ω◌̓◌͂; Ὦ; Ω◌̓◌͂; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F6F;1F6F;03A9 0314 0342;1F6F;03A9 0314 0342; # (Ὧ; Ὧ; Ω◌̔◌͂; Ὧ; Ω◌̔◌͂; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F70;1F70;03B1 0300;1F70;03B1 0300; # (ὰ; ὰ; α◌̀; ὰ; α◌̀; ) GREEK SMALL LETTER ALPHA WITH VARIA
+1F71;03AC;03B1 0301;03AC;03B1 0301; # (á½±; ά; α◌Ì; ά; α◌Ì; ) GREEK SMALL LETTER ALPHA WITH OXIA
+1F72;1F72;03B5 0300;1F72;03B5 0300; # (ὲ; ὲ; ε◌̀; ὲ; ε◌̀; ) GREEK SMALL LETTER EPSILON WITH VARIA
+1F73;03AD;03B5 0301;03AD;03B5 0301; # (á½³; έ; ε◌Ì; έ; ε◌Ì; ) GREEK SMALL LETTER EPSILON WITH OXIA
+1F74;1F74;03B7 0300;1F74;03B7 0300; # (ὴ; ὴ; η◌̀; ὴ; η◌̀; ) GREEK SMALL LETTER ETA WITH VARIA
+1F75;03AE;03B7 0301;03AE;03B7 0301; # (á½µ; ή; η◌Ì; ή; η◌Ì; ) GREEK SMALL LETTER ETA WITH OXIA
+1F76;1F76;03B9 0300;1F76;03B9 0300; # (ὶ; ὶ; ι◌̀; ὶ; ι◌̀; ) GREEK SMALL LETTER IOTA WITH VARIA
+1F77;03AF;03B9 0301;03AF;03B9 0301; # (á½·; ί; ι◌Ì; ί; ι◌Ì; ) GREEK SMALL LETTER IOTA WITH OXIA
+1F78;1F78;03BF 0300;1F78;03BF 0300; # (ὸ; ὸ; ο◌̀; ὸ; ο◌̀; ) GREEK SMALL LETTER OMICRON WITH VARIA
+1F79;03CC;03BF 0301;03CC;03BF 0301; # (á½¹; ÏŒ; ο◌Ì; ÏŒ; ο◌Ì; ) GREEK SMALL LETTER OMICRON WITH OXIA
+1F7A;1F7A;03C5 0300;1F7A;03C5 0300; # (ὺ; ὺ; υ◌̀; ὺ; υ◌̀; ) GREEK SMALL LETTER UPSILON WITH VARIA
+1F7B;03CD;03C5 0301;03CD;03C5 0301; # (á½»; Ï; Ï…â—ŒÌ; Ï; Ï…â—ŒÌ; ) GREEK SMALL LETTER UPSILON WITH OXIA
+1F7C;1F7C;03C9 0300;1F7C;03C9 0300; # (ὼ; ὼ; ω◌̀; ὼ; ω◌̀; ) GREEK SMALL LETTER OMEGA WITH VARIA
+1F7D;03CE;03C9 0301;03CE;03C9 0301; # (á½½; ÏŽ; ω◌Ì; ÏŽ; ω◌Ì; ) GREEK SMALL LETTER OMEGA WITH OXIA
+1F80;1F80;03B1 0313 0345;1F80;03B1 0313 0345; # (ᾀ; ᾀ; α◌̓◌ͅ; ᾀ; α◌̓◌ͅ; ) GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81;1F81;03B1 0314 0345;1F81;03B1 0314 0345; # (á¾; á¾; α◌̔◌ͅ; á¾; α◌̔◌ͅ; ) GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82;1F82;03B1 0313 0300 0345;1F82;03B1 0313 0300 0345; # (ᾂ; ᾂ; α◌̓◌̀◌ͅ; ᾂ; α◌̓◌̀◌ͅ; ) GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83;1F83;03B1 0314 0300 0345;1F83;03B1 0314 0300 0345; # (ᾃ; ᾃ; α◌̔◌̀◌ͅ; ᾃ; α◌̔◌̀◌ͅ; ) GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84;1F84;03B1 0313 0301 0345;1F84;03B1 0313 0301 0345; # (ᾄ; ᾄ; α◌̓◌Ì◌ͅ; ᾄ; α◌̓◌Ì◌ͅ; ) GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85;1F85;03B1 0314 0301 0345;1F85;03B1 0314 0301 0345; # (á¾…; á¾…; α◌̔◌Ì◌ͅ; á¾…; α◌̔◌Ì◌ͅ; ) GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86;1F86;03B1 0313 0342 0345;1F86;03B1 0313 0342 0345; # (ᾆ; ᾆ; α◌̓◌͂◌ͅ; ᾆ; α◌̓◌͂◌ͅ; ) GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87;1F87;03B1 0314 0342 0345;1F87;03B1 0314 0342 0345; # (ᾇ; ᾇ; α◌̔◌͂◌ͅ; ᾇ; α◌̔◌͂◌ͅ; ) GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88;1F88;0391 0313 0345;1F88;0391 0313 0345; # (ᾈ; ᾈ; Α◌̓◌ͅ; ᾈ; Α◌̓◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89;1F89;0391 0314 0345;1F89;0391 0314 0345; # (ᾉ; ᾉ; Α◌̔◌ͅ; ᾉ; Α◌̔◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A;1F8A;0391 0313 0300 0345;1F8A;0391 0313 0300 0345; # (ᾊ; ᾊ; Α◌̓◌̀◌ͅ; ᾊ; Α◌̓◌̀◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B;1F8B;0391 0314 0300 0345;1F8B;0391 0314 0300 0345; # (ᾋ; ᾋ; Α◌̔◌̀◌ͅ; ᾋ; Α◌̔◌̀◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C;1F8C;0391 0313 0301 0345;1F8C;0391 0313 0301 0345; # (ᾌ; ᾌ; Α◌̓◌Ì◌ͅ; ᾌ; Α◌̓◌Ì◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D;1F8D;0391 0314 0301 0345;1F8D;0391 0314 0301 0345; # (á¾; á¾; Α◌̔◌Ì◌ͅ; á¾; Α◌̔◌Ì◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E;1F8E;0391 0313 0342 0345;1F8E;0391 0313 0342 0345; # (ᾎ; ᾎ; Α◌̓◌͂◌ͅ; ᾎ; Α◌̓◌͂◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F;1F8F;0391 0314 0342 0345;1F8F;0391 0314 0342 0345; # (á¾; á¾; Α◌̔◌͂◌ͅ; á¾; Α◌̔◌͂◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90;1F90;03B7 0313 0345;1F90;03B7 0313 0345; # (á¾; á¾; η◌̓◌ͅ; á¾; η◌̓◌ͅ; ) GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91;1F91;03B7 0314 0345;1F91;03B7 0314 0345; # (ᾑ; ᾑ; η◌̔◌ͅ; ᾑ; η◌̔◌ͅ; ) GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92;1F92;03B7 0313 0300 0345;1F92;03B7 0313 0300 0345; # (ᾒ; ᾒ; η◌̓◌̀◌ͅ; ᾒ; η◌̓◌̀◌ͅ; ) GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93;1F93;03B7 0314 0300 0345;1F93;03B7 0314 0300 0345; # (ᾓ; ᾓ; η◌̔◌̀◌ͅ; ᾓ; η◌̔◌̀◌ͅ; ) GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94;1F94;03B7 0313 0301 0345;1F94;03B7 0313 0301 0345; # (á¾”; á¾”; η◌̓◌Ì◌ͅ; á¾”; η◌̓◌Ì◌ͅ; ) GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95;1F95;03B7 0314 0301 0345;1F95;03B7 0314 0301 0345; # (ᾕ; ᾕ; η◌̔◌Ì◌ͅ; ᾕ; η◌̔◌Ì◌ͅ; ) GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96;1F96;03B7 0313 0342 0345;1F96;03B7 0313 0342 0345; # (ᾖ; ᾖ; η◌̓◌͂◌ͅ; ᾖ; η◌̓◌͂◌ͅ; ) GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97;1F97;03B7 0314 0342 0345;1F97;03B7 0314 0342 0345; # (ᾗ; ᾗ; η◌̔◌͂◌ͅ; ᾗ; η◌̔◌͂◌ͅ; ) GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98;1F98;0397 0313 0345;1F98;0397 0313 0345; # (ᾘ; ᾘ; Η◌̓◌ͅ; ᾘ; Η◌̓◌ͅ; ) GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99;1F99;0397 0314 0345;1F99;0397 0314 0345; # (ᾙ; ᾙ; Η◌̔◌ͅ; ᾙ; Η◌̔◌ͅ; ) GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A;1F9A;0397 0313 0300 0345;1F9A;0397 0313 0300 0345; # (ᾚ; ᾚ; Η◌̓◌̀◌ͅ; ᾚ; Η◌̓◌̀◌ͅ; ) GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B;1F9B;0397 0314 0300 0345;1F9B;0397 0314 0300 0345; # (ᾛ; ᾛ; Η◌̔◌̀◌ͅ; ᾛ; Η◌̔◌̀◌ͅ; ) GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C;1F9C;0397 0313 0301 0345;1F9C;0397 0313 0301 0345; # (ᾜ; ᾜ; Η◌̓◌Ì◌ͅ; ᾜ; Η◌̓◌Ì◌ͅ; ) GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D;1F9D;0397 0314 0301 0345;1F9D;0397 0314 0301 0345; # (á¾; á¾; Η◌̔◌Ì◌ͅ; á¾; Η◌̔◌Ì◌ͅ; ) GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E;1F9E;0397 0313 0342 0345;1F9E;0397 0313 0342 0345; # (ᾞ; ᾞ; Η◌̓◌͂◌ͅ; ᾞ; Η◌̓◌͂◌ͅ; ) GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F;1F9F;0397 0314 0342 0345;1F9F;0397 0314 0342 0345; # (ᾟ; ᾟ; Η◌̔◌͂◌ͅ; ᾟ; Η◌̔◌͂◌ͅ; ) GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0;1FA0;03C9 0313 0345;1FA0;03C9 0313 0345; # (ᾠ; ᾠ; ω◌̓◌ͅ; ᾠ; ω◌̓◌ͅ; ) GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1;1FA1;03C9 0314 0345;1FA1;03C9 0314 0345; # (ᾡ; ᾡ; ω◌̔◌ͅ; ᾡ; ω◌̔◌ͅ; ) GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2;1FA2;03C9 0313 0300 0345;1FA2;03C9 0313 0300 0345; # (ᾢ; ᾢ; ω◌̓◌̀◌ͅ; ᾢ; ω◌̓◌̀◌ͅ; ) GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3;1FA3;03C9 0314 0300 0345;1FA3;03C9 0314 0300 0345; # (ᾣ; ᾣ; ω◌̔◌̀◌ͅ; ᾣ; ω◌̔◌̀◌ͅ; ) GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4;1FA4;03C9 0313 0301 0345;1FA4;03C9 0313 0301 0345; # (ᾤ; ᾤ; ω◌̓◌Ì◌ͅ; ᾤ; ω◌̓◌Ì◌ͅ; ) GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5;1FA5;03C9 0314 0301 0345;1FA5;03C9 0314 0301 0345; # (á¾¥; á¾¥; ω◌̔◌Ì◌ͅ; á¾¥; ω◌̔◌Ì◌ͅ; ) GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6;1FA6;03C9 0313 0342 0345;1FA6;03C9 0313 0342 0345; # (ᾦ; ᾦ; ω◌̓◌͂◌ͅ; ᾦ; ω◌̓◌͂◌ͅ; ) GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7;1FA7;03C9 0314 0342 0345;1FA7;03C9 0314 0342 0345; # (ᾧ; ᾧ; ω◌̔◌͂◌ͅ; ᾧ; ω◌̔◌͂◌ͅ; ) GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8;1FA8;03A9 0313 0345;1FA8;03A9 0313 0345; # (ᾨ; ᾨ; Ω◌̓◌ͅ; ᾨ; Ω◌̓◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9;1FA9;03A9 0314 0345;1FA9;03A9 0314 0345; # (ᾩ; ᾩ; Ω◌̔◌ͅ; ᾩ; Ω◌̔◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA;1FAA;03A9 0313 0300 0345;1FAA;03A9 0313 0300 0345; # (ᾪ; ᾪ; Ω◌̓◌̀◌ͅ; ᾪ; Ω◌̓◌̀◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB;1FAB;03A9 0314 0300 0345;1FAB;03A9 0314 0300 0345; # (ᾫ; ᾫ; Ω◌̔◌̀◌ͅ; ᾫ; Ω◌̔◌̀◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC;1FAC;03A9 0313 0301 0345;1FAC;03A9 0313 0301 0345; # (ᾬ; ᾬ; Ω◌̓◌Ì◌ͅ; ᾬ; Ω◌̓◌Ì◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD;1FAD;03A9 0314 0301 0345;1FAD;03A9 0314 0301 0345; # (á¾­; á¾­; Ω◌̔◌Ì◌ͅ; á¾­; Ω◌̔◌Ì◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE;1FAE;03A9 0313 0342 0345;1FAE;03A9 0313 0342 0345; # (ᾮ; ᾮ; Ω◌̓◌͂◌ͅ; ᾮ; Ω◌̓◌͂◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF;1FAF;03A9 0314 0342 0345;1FAF;03A9 0314 0342 0345; # (ᾯ; ᾯ; Ω◌̔◌͂◌ͅ; ᾯ; Ω◌̔◌͂◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB0;1FB0;03B1 0306;1FB0;03B1 0306; # (ᾰ; ᾰ; α◌̆; ᾰ; α◌̆; ) GREEK SMALL LETTER ALPHA WITH VRACHY
+1FB1;1FB1;03B1 0304;1FB1;03B1 0304; # (ᾱ; ᾱ; α◌̄; ᾱ; α◌̄; ) GREEK SMALL LETTER ALPHA WITH MACRON
+1FB2;1FB2;03B1 0300 0345;1FB2;03B1 0300 0345; # (ᾲ; ᾲ; α◌̀◌ͅ; ᾲ; α◌̀◌ͅ; ) GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB3;1FB3;03B1 0345;1FB3;03B1 0345; # (ᾳ; ᾳ; α◌ͅ; ᾳ; α◌ͅ; ) GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FB4;1FB4;03B1 0301 0345;1FB4;03B1 0301 0345; # (á¾´; á¾´; α◌Ì◌ͅ; á¾´; α◌Ì◌ͅ; ) GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6;1FB6;03B1 0342;1FB6;03B1 0342; # (ᾶ; ᾶ; α◌͂; ᾶ; α◌͂; ) GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FB7;1FB7;03B1 0342 0345;1FB7;03B1 0342 0345; # (ᾷ; ᾷ; α◌͂◌ͅ; ᾷ; α◌͂◌ͅ; ) GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FB8;1FB8;0391 0306;1FB8;0391 0306; # (Ᾰ; Ᾰ; Α◌̆; Ᾰ; Α◌̆; ) GREEK CAPITAL LETTER ALPHA WITH VRACHY
+1FB9;1FB9;0391 0304;1FB9;0391 0304; # (Ᾱ; Ᾱ; Α◌̄; Ᾱ; Α◌̄; ) GREEK CAPITAL LETTER ALPHA WITH MACRON
+1FBA;1FBA;0391 0300;1FBA;0391 0300; # (Ὰ; Ὰ; Α◌̀; Ὰ; Α◌̀; ) GREEK CAPITAL LETTER ALPHA WITH VARIA
+1FBB;0386;0391 0301;0386;0391 0301; # (á¾»; Ά; Α◌Ì; Ά; Α◌Ì; ) GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBC;1FBC;0391 0345;1FBC;0391 0345; # (ᾼ; ᾼ; Α◌ͅ; ᾼ; Α◌ͅ; ) GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD;1FBD;1FBD;0020 0313;0020 0313; # (᾽; ᾽; ᾽; ◌̓; ◌̓; ) GREEK KORONIS
+1FBE;03B9;03B9;03B9;03B9; # (ι; ι; ι; ι; ι; ) GREEK PROSGEGRAMMENI
+1FBF;1FBF;1FBF;0020 0313;0020 0313; # (᾿; ᾿; ᾿; ◌̓; ◌̓; ) GREEK PSILI
+1FC0;1FC0;1FC0;0020 0342;0020 0342; # (῀; ῀; ῀; ◌͂; ◌͂; ) GREEK PERISPOMENI
+1FC1;1FC1;00A8 0342;0020 0308 0342;0020 0308 0342; # (á¿; á¿; ¨◌͂; ◌̈◌͂; ◌̈◌͂; ) GREEK DIALYTIKA AND PERISPOMENI
+1FC2;1FC2;03B7 0300 0345;1FC2;03B7 0300 0345; # (ῂ; ῂ; η◌̀◌ͅ; ῂ; η◌̀◌ͅ; ) GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC3;1FC3;03B7 0345;1FC3;03B7 0345; # (ῃ; ῃ; η◌ͅ; ῃ; η◌ͅ; ) GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FC4;1FC4;03B7 0301 0345;1FC4;03B7 0301 0345; # (á¿„; á¿„; η◌Ì◌ͅ; á¿„; η◌Ì◌ͅ; ) GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6;1FC6;03B7 0342;1FC6;03B7 0342; # (ῆ; ῆ; η◌͂; ῆ; η◌͂; ) GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FC7;1FC7;03B7 0342 0345;1FC7;03B7 0342 0345; # (ῇ; ῇ; η◌͂◌ͅ; ῇ; η◌͂◌ͅ; ) GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC8;1FC8;0395 0300;1FC8;0395 0300; # (Ὲ; Ὲ; Ε◌̀; Ὲ; Ε◌̀; ) GREEK CAPITAL LETTER EPSILON WITH VARIA
+1FC9;0388;0395 0301;0388;0395 0301; # (Έ; Έ; Ε◌Ì; Έ; Ε◌Ì; ) GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCA;1FCA;0397 0300;1FCA;0397 0300; # (Ὴ; Ὴ; Η◌̀; Ὴ; Η◌̀; ) GREEK CAPITAL LETTER ETA WITH VARIA
+1FCB;0389;0397 0301;0389;0397 0301; # (á¿‹; Ή; Η◌Ì; Ή; Η◌Ì; ) GREEK CAPITAL LETTER ETA WITH OXIA
+1FCC;1FCC;0397 0345;1FCC;0397 0345; # (ῌ; ῌ; Η◌ͅ; ῌ; Η◌ͅ; ) GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD;1FCD;1FBF 0300;0020 0313 0300;0020 0313 0300; # (á¿; á¿; ᾿◌̀; ◌̓◌̀; ◌̓◌̀; ) GREEK PSILI AND VARIA
+1FCE;1FCE;1FBF 0301;0020 0313 0301;0020 0313 0301; # (á¿Ž; á¿Ž; ᾿◌Ì; ◌̓◌Ì; ◌̓◌Ì; ) GREEK PSILI AND OXIA
+1FCF;1FCF;1FBF 0342;0020 0313 0342;0020 0313 0342; # (á¿; á¿; ᾿◌͂; ◌̓◌͂; ◌̓◌͂; ) GREEK PSILI AND PERISPOMENI
+1FD0;1FD0;03B9 0306;1FD0;03B9 0306; # (á¿; á¿; ι◌̆; á¿; ι◌̆; ) GREEK SMALL LETTER IOTA WITH VRACHY
+1FD1;1FD1;03B9 0304;1FD1;03B9 0304; # (ῑ; ῑ; ι◌̄; ῑ; ι◌̄; ) GREEK SMALL LETTER IOTA WITH MACRON
+1FD2;1FD2;03B9 0308 0300;1FD2;03B9 0308 0300; # (ῒ; ῒ; ι◌̈◌̀; ῒ; ι◌̈◌̀; ) GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3;0390;03B9 0308 0301;0390;03B9 0308 0301; # (á¿“; Î; ι◌̈◌Ì; Î; ι◌̈◌Ì; ) GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6;1FD6;03B9 0342;1FD6;03B9 0342; # (ῖ; ῖ; ι◌͂; ῖ; ι◌͂; ) GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7;1FD7;03B9 0308 0342;1FD7;03B9 0308 0342; # (ῗ; ῗ; ι◌̈◌͂; ῗ; ι◌̈◌͂; ) GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FD8;1FD8;0399 0306;1FD8;0399 0306; # (Ῐ; Ῐ; Ι◌̆; Ῐ; Ι◌̆; ) GREEK CAPITAL LETTER IOTA WITH VRACHY
+1FD9;1FD9;0399 0304;1FD9;0399 0304; # (Ῑ; Ῑ; Ι◌̄; Ῑ; Ι◌̄; ) GREEK CAPITAL LETTER IOTA WITH MACRON
+1FDA;1FDA;0399 0300;1FDA;0399 0300; # (Ὶ; Ὶ; Ι◌̀; Ὶ; Ι◌̀; ) GREEK CAPITAL LETTER IOTA WITH VARIA
+1FDB;038A;0399 0301;038A;0399 0301; # (á¿›; Ί; Ι◌Ì; Ί; Ι◌Ì; ) GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD;1FDD;1FFE 0300;0020 0314 0300;0020 0314 0300; # (á¿; á¿; ῾◌̀; ◌̔◌̀; ◌̔◌̀; ) GREEK DASIA AND VARIA
+1FDE;1FDE;1FFE 0301;0020 0314 0301;0020 0314 0301; # (á¿ž; á¿ž; ῾◌Ì; ◌̔◌Ì; ◌̔◌Ì; ) GREEK DASIA AND OXIA
+1FDF;1FDF;1FFE 0342;0020 0314 0342;0020 0314 0342; # (῟; ῟; ῾◌͂; ◌̔◌͂; ◌̔◌͂; ) GREEK DASIA AND PERISPOMENI
+1FE0;1FE0;03C5 0306;1FE0;03C5 0306; # (ῠ; ῠ; υ◌̆; ῠ; υ◌̆; ) GREEK SMALL LETTER UPSILON WITH VRACHY
+1FE1;1FE1;03C5 0304;1FE1;03C5 0304; # (ῡ; ῡ; υ◌̄; ῡ; υ◌̄; ) GREEK SMALL LETTER UPSILON WITH MACRON
+1FE2;1FE2;03C5 0308 0300;1FE2;03C5 0308 0300; # (ῢ; ῢ; υ◌̈◌̀; ῢ; υ◌̈◌̀; ) GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3;03B0;03C5 0308 0301;03B0;03C5 0308 0301; # (á¿£; ΰ; υ◌̈◌Ì; ΰ; υ◌̈◌Ì; ) GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4;1FE4;03C1 0313;1FE4;03C1 0313; # (ῤ; ῤ; Ï◌̓; ῤ; Ï◌̓; ) GREEK SMALL LETTER RHO WITH PSILI
+1FE5;1FE5;03C1 0314;1FE5;03C1 0314; # (á¿¥; á¿¥; Ï◌̔; á¿¥; Ï◌̔; ) GREEK SMALL LETTER RHO WITH DASIA
+1FE6;1FE6;03C5 0342;1FE6;03C5 0342; # (ῦ; ῦ; υ◌͂; ῦ; υ◌͂; ) GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7;1FE7;03C5 0308 0342;1FE7;03C5 0308 0342; # (ῧ; ῧ; υ◌̈◌͂; ῧ; υ◌̈◌͂; ) GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FE8;1FE8;03A5 0306;1FE8;03A5 0306; # (Ῠ; Ῠ; Υ◌̆; Ῠ; Υ◌̆; ) GREEK CAPITAL LETTER UPSILON WITH VRACHY
+1FE9;1FE9;03A5 0304;1FE9;03A5 0304; # (Ῡ; Ῡ; Υ◌̄; Ῡ; Υ◌̄; ) GREEK CAPITAL LETTER UPSILON WITH MACRON
+1FEA;1FEA;03A5 0300;1FEA;03A5 0300; # (Ὺ; Ὺ; Υ◌̀; Ὺ; Υ◌̀; ) GREEK CAPITAL LETTER UPSILON WITH VARIA
+1FEB;038E;03A5 0301;038E;03A5 0301; # (á¿«; ÎŽ; Υ◌Ì; ÎŽ; Υ◌Ì; ) GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEC;1FEC;03A1 0314;1FEC;03A1 0314; # (Ῥ; Ῥ; Ρ◌̔; Ῥ; Ρ◌̔; ) GREEK CAPITAL LETTER RHO WITH DASIA
+1FED;1FED;00A8 0300;0020 0308 0300;0020 0308 0300; # (῭; ῭; ¨◌̀; ◌̈◌̀; ◌̈◌̀; ) GREEK DIALYTIKA AND VARIA
+1FEE;0385;00A8 0301;0020 0308 0301;0020 0308 0301; # (á¿®; Î…; ¨◌Ì; ◌̈◌Ì; ◌̈◌Ì; ) GREEK DIALYTIKA AND OXIA
+1FEF;0060;0060;0060;0060; # (`; `; `; `; `; ) GREEK VARIA
+1FF2;1FF2;03C9 0300 0345;1FF2;03C9 0300 0345; # (ῲ; ῲ; ω◌̀◌ͅ; ῲ; ω◌̀◌ͅ; ) GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF3;1FF3;03C9 0345;1FF3;03C9 0345; # (ῳ; ῳ; ω◌ͅ; ῳ; ω◌ͅ; ) GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FF4;1FF4;03C9 0301 0345;1FF4;03C9 0301 0345; # (á¿´; á¿´; ω◌Ì◌ͅ; á¿´; ω◌Ì◌ͅ; ) GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6;1FF6;03C9 0342;1FF6;03C9 0342; # (ῶ; ῶ; ω◌͂; ῶ; ω◌͂; ) GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+1FF7;1FF7;03C9 0342 0345;1FF7;03C9 0342 0345; # (ῷ; ῷ; ω◌͂◌ͅ; ῷ; ω◌͂◌ͅ; ) GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF8;1FF8;039F 0300;1FF8;039F 0300; # (Ὸ; Ὸ; Ο◌̀; Ὸ; Ο◌̀; ) GREEK CAPITAL LETTER OMICRON WITH VARIA
+1FF9;038C;039F 0301;038C;039F 0301; # (Ό; ÎŒ; Ο◌Ì; ÎŒ; Ο◌Ì; ) GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFA;1FFA;03A9 0300;1FFA;03A9 0300; # (Ὼ; Ὼ; Ω◌̀; Ὼ; Ω◌̀; ) GREEK CAPITAL LETTER OMEGA WITH VARIA
+1FFB;038F;03A9 0301;038F;03A9 0301; # (á¿»; Î; Ω◌Ì; Î; Ω◌Ì; ) GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFC;1FFC;03A9 0345;1FFC;03A9 0345; # (ῼ; ῼ; Ω◌ͅ; ῼ; Ω◌ͅ; ) GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD;00B4;00B4;0020 0301;0020 0301; # (´; ´; ´; â—ŒÌ; â—ŒÌ; ) GREEK OXIA
+1FFE;1FFE;1FFE;0020 0314;0020 0314; # (῾; ῾; ῾; ◌̔; ◌̔; ) GREEK DASIA
+2000;2002;2002;0020;0020; # ( ;  ;  ; ; ; ) EN QUAD
+2001;2003;2003;0020;0020; # (â€;  ;  ; ; ; ) EM QUAD
+2002;2002;2002;0020;0020; # ( ;  ;  ; ; ; ) EN SPACE
+2003;2003;2003;0020;0020; # ( ;  ;  ; ; ; ) EM SPACE
+2004;2004;2004;0020;0020; # ( ;  ;  ; ; ; ) THREE-PER-EM SPACE
+2005;2005;2005;0020;0020; # ( ;  ;  ; ; ; ) FOUR-PER-EM SPACE
+2006;2006;2006;0020;0020; # ( ;  ;  ; ; ; ) SIX-PER-EM SPACE
+2007;2007;2007;0020;0020; # ( ;  ;  ; ; ; ) FIGURE SPACE
+2008;2008;2008;0020;0020; # ( ;  ;  ; ; ; ) PUNCTUATION SPACE
+2009;2009;2009;0020;0020; # ( ;  ;  ; ; ; ) THIN SPACE
+200A;200A;200A;0020;0020; # ( ;  ;  ; ; ; ) HAIR SPACE
+2011;2011;2011;2010;2010; # (‑; ‑; ‑; â€; â€; ) NON-BREAKING HYPHEN
+2017;2017;2017;0020 0333;0020 0333; # (‗; ‗; ‗; ◌̳; ◌̳; ) DOUBLE LOW LINE
+2024;2024;2024;002E;002E; # (․; ․; ․; .; .; ) ONE DOT LEADER
+2025;2025;2025;002E 002E;002E 002E; # (‥; ‥; ‥; ..; ..; ) TWO DOT LEADER
+2026;2026;2026;002E 002E 002E;002E 002E 002E; # (…; …; …; ...; ...; ) HORIZONTAL ELLIPSIS
+202F;202F;202F;0020;0020; # ( ;  ;  ; ; ; ) NARROW NO-BREAK SPACE
+2033;2033;2033;2032 2032;2032 2032; # (″; ″; ″; ′′; ′′; ) DOUBLE PRIME
+2034;2034;2034;2032 2032 2032;2032 2032 2032; # (‴; ‴; ‴; ′′′; ′′′; ) TRIPLE PRIME
+2036;2036;2036;2035 2035;2035 2035; # (‶; ‶; ‶; ‵‵; ‵‵; ) REVERSED DOUBLE PRIME
+2037;2037;2037;2035 2035 2035;2035 2035 2035; # (‷; ‷; ‷; ‵‵‵; ‵‵‵; ) REVERSED TRIPLE PRIME
+203C;203C;203C;0021 0021;0021 0021; # (‼; ‼; ‼; !!; !!; ) DOUBLE EXCLAMATION MARK
+203E;203E;203E;0020 0305;0020 0305; # (‾; ‾; ‾; ◌̅; ◌̅; ) OVERLINE
+2047;2047;2047;003F 003F;003F 003F; # (â‡; â‡; â‡; ??; ??; ) DOUBLE QUESTION MARK
+2048;2048;2048;003F 0021;003F 0021; # (âˆ; âˆ; âˆ; ?!; ?!; ) QUESTION EXCLAMATION MARK
+2049;2049;2049;0021 003F;0021 003F; # (â‰; â‰; â‰; !?; !?; ) EXCLAMATION QUESTION MARK
+2057;2057;2057;2032 2032 2032 2032;2032 2032 2032 2032; # (â—; â—; â—; ′′′′; ′′′′; ) QUADRUPLE PRIME
+205F;205F;205F;0020;0020; # (âŸ; âŸ; âŸ; ; ; ) MEDIUM MATHEMATICAL SPACE
+2070;2070;2070;0030;0030; # (â°; â°; â°; 0; 0; ) SUPERSCRIPT ZERO
+2071;2071;2071;0069;0069; # (â±; â±; â±; i; i; ) SUPERSCRIPT LATIN SMALL LETTER I
+2074;2074;2074;0034;0034; # (â´; â´; â´; 4; 4; ) SUPERSCRIPT FOUR
+2075;2075;2075;0035;0035; # (âµ; âµ; âµ; 5; 5; ) SUPERSCRIPT FIVE
+2076;2076;2076;0036;0036; # (â¶; â¶; â¶; 6; 6; ) SUPERSCRIPT SIX
+2077;2077;2077;0037;0037; # (â·; â·; â·; 7; 7; ) SUPERSCRIPT SEVEN
+2078;2078;2078;0038;0038; # (â¸; â¸; â¸; 8; 8; ) SUPERSCRIPT EIGHT
+2079;2079;2079;0039;0039; # (â¹; â¹; â¹; 9; 9; ) SUPERSCRIPT NINE
+207A;207A;207A;002B;002B; # (âº; âº; âº; +; +; ) SUPERSCRIPT PLUS SIGN
+207B;207B;207B;2212;2212; # (â»; â»; â»; −; −; ) SUPERSCRIPT MINUS
+207C;207C;207C;003D;003D; # (â¼; â¼; â¼; =; =; ) SUPERSCRIPT EQUALS SIGN
+207D;207D;207D;0028;0028; # (â½; â½; â½; (; (; ) SUPERSCRIPT LEFT PARENTHESIS
+207E;207E;207E;0029;0029; # (â¾; â¾; â¾; ); ); ) SUPERSCRIPT RIGHT PARENTHESIS
+207F;207F;207F;006E;006E; # (â¿; â¿; â¿; n; n; ) SUPERSCRIPT LATIN SMALL LETTER N
+2080;2080;2080;0030;0030; # (â‚€; â‚€; â‚€; 0; 0; ) SUBSCRIPT ZERO
+2081;2081;2081;0031;0031; # (â‚; â‚; â‚; 1; 1; ) SUBSCRIPT ONE
+2082;2082;2082;0032;0032; # (â‚‚; â‚‚; â‚‚; 2; 2; ) SUBSCRIPT TWO
+2083;2083;2083;0033;0033; # (₃; ₃; ₃; 3; 3; ) SUBSCRIPT THREE
+2084;2084;2084;0034;0034; # (â‚„; â‚„; â‚„; 4; 4; ) SUBSCRIPT FOUR
+2085;2085;2085;0035;0035; # (â‚…; â‚…; â‚…; 5; 5; ) SUBSCRIPT FIVE
+2086;2086;2086;0036;0036; # (₆; ₆; ₆; 6; 6; ) SUBSCRIPT SIX
+2087;2087;2087;0037;0037; # (₇; ₇; ₇; 7; 7; ) SUBSCRIPT SEVEN
+2088;2088;2088;0038;0038; # (₈; ₈; ₈; 8; 8; ) SUBSCRIPT EIGHT
+2089;2089;2089;0039;0039; # (₉; ₉; ₉; 9; 9; ) SUBSCRIPT NINE
+208A;208A;208A;002B;002B; # (â‚Š; â‚Š; â‚Š; +; +; ) SUBSCRIPT PLUS SIGN
+208B;208B;208B;2212;2212; # (₋; ₋; ₋; −; −; ) SUBSCRIPT MINUS
+208C;208C;208C;003D;003D; # (₌; ₌; ₌; =; =; ) SUBSCRIPT EQUALS SIGN
+208D;208D;208D;0028;0028; # (â‚; â‚; â‚; (; (; ) SUBSCRIPT LEFT PARENTHESIS
+208E;208E;208E;0029;0029; # (â‚Ž; â‚Ž; â‚Ž; ); ); ) SUBSCRIPT RIGHT PARENTHESIS
+2090;2090;2090;0061;0061; # (â‚; â‚; â‚; a; a; ) LATIN SUBSCRIPT SMALL LETTER A
+2091;2091;2091;0065;0065; # (â‚‘; â‚‘; â‚‘; e; e; ) LATIN SUBSCRIPT SMALL LETTER E
+2092;2092;2092;006F;006F; # (â‚’; â‚’; â‚’; o; o; ) LATIN SUBSCRIPT SMALL LETTER O
+2093;2093;2093;0078;0078; # (â‚“; â‚“; â‚“; x; x; ) LATIN SUBSCRIPT SMALL LETTER X
+2094;2094;2094;0259;0259; # (â‚”; â‚”; â‚”; É™; É™; ) LATIN SUBSCRIPT SMALL LETTER SCHWA
+20A8;20A8;20A8;0052 0073;0052 0073; # (₨; ₨; ₨; Rs; Rs; ) RUPEE SIGN
+2100;2100;2100;0061 002F 0063;0061 002F 0063; # (â„€; â„€; â„€; a/c; a/c; ) ACCOUNT OF
+2101;2101;2101;0061 002F 0073;0061 002F 0073; # (â„; â„; â„; a/s; a/s; ) ADDRESSED TO THE SUBJECT
+2102;2102;2102;0043;0043; # (â„‚; â„‚; â„‚; C; C; ) DOUBLE-STRUCK CAPITAL C
+2103;2103;2103;00B0 0043;00B0 0043; # (℃; ℃; ℃; °C; °C; ) DEGREE CELSIUS
+2105;2105;2105;0063 002F 006F;0063 002F 006F; # (â„…; â„…; â„…; c/o; c/o; ) CARE OF
+2106;2106;2106;0063 002F 0075;0063 002F 0075; # (℆; ℆; ℆; c/u; c/u; ) CADA UNA
+2107;2107;2107;0190;0190; # (ℇ; ℇ; ℇ; Æ; Æ; ) EULER CONSTANT
+2109;2109;2109;00B0 0046;00B0 0046; # (℉; ℉; ℉; °F; °F; ) DEGREE FAHRENHEIT
+210A;210A;210A;0067;0067; # (â„Š; â„Š; â„Š; g; g; ) SCRIPT SMALL G
+210B;210B;210B;0048;0048; # (â„‹; â„‹; â„‹; H; H; ) SCRIPT CAPITAL H
+210C;210C;210C;0048;0048; # (ℌ; ℌ; ℌ; H; H; ) BLACK-LETTER CAPITAL H
+210D;210D;210D;0048;0048; # (â„; â„; â„; H; H; ) DOUBLE-STRUCK CAPITAL H
+210E;210E;210E;0068;0068; # (â„Ž; â„Ž; â„Ž; h; h; ) PLANCK CONSTANT
+210F;210F;210F;0127;0127; # (â„; â„; â„; ħ; ħ; ) PLANCK CONSTANT OVER TWO PI
+2110;2110;2110;0049;0049; # (â„; â„; â„; I; I; ) SCRIPT CAPITAL I
+2111;2111;2111;0049;0049; # (â„‘; â„‘; â„‘; I; I; ) BLACK-LETTER CAPITAL I
+2112;2112;2112;004C;004C; # (â„’; â„’; â„’; L; L; ) SCRIPT CAPITAL L
+2113;2113;2113;006C;006C; # (â„“; â„“; â„“; l; l; ) SCRIPT SMALL L
+2115;2115;2115;004E;004E; # (â„•; â„•; â„•; N; N; ) DOUBLE-STRUCK CAPITAL N
+2116;2116;2116;004E 006F;004E 006F; # (â„–; â„–; â„–; No; No; ) NUMERO SIGN
+2119;2119;2119;0050;0050; # (â„™; â„™; â„™; P; P; ) DOUBLE-STRUCK CAPITAL P
+211A;211A;211A;0051;0051; # (â„š; â„š; â„š; Q; Q; ) DOUBLE-STRUCK CAPITAL Q
+211B;211B;211B;0052;0052; # (â„›; â„›; â„›; R; R; ) SCRIPT CAPITAL R
+211C;211C;211C;0052;0052; # (ℜ; ℜ; ℜ; R; R; ) BLACK-LETTER CAPITAL R
+211D;211D;211D;0052;0052; # (â„; â„; â„; R; R; ) DOUBLE-STRUCK CAPITAL R
+2120;2120;2120;0053 004D;0053 004D; # (â„ ; â„ ; â„ ; SM; SM; ) SERVICE MARK
+2121;2121;2121;0054 0045 004C;0054 0045 004C; # (â„¡; â„¡; â„¡; TEL; TEL; ) TELEPHONE SIGN
+2122;2122;2122;0054 004D;0054 004D; # (â„¢; â„¢; â„¢; TM; TM; ) TRADE MARK SIGN
+2124;2124;2124;005A;005A; # (ℤ; ℤ; ℤ; Z; Z; ) DOUBLE-STRUCK CAPITAL Z
+2126;03A9;03A9;03A9;03A9; # (Ω; Ω; Ω; Ω; Ω; ) OHM SIGN
+2128;2128;2128;005A;005A; # (ℨ; ℨ; ℨ; Z; Z; ) BLACK-LETTER CAPITAL Z
+212A;004B;004B;004B;004B; # (K; K; K; K; K; ) KELVIN SIGN
+212B;00C5;0041 030A;00C5;0041 030A; # (Å; Å; A◌̊; Å; A◌̊; ) ANGSTROM SIGN
+212C;212C;212C;0042;0042; # (ℬ; ℬ; ℬ; B; B; ) SCRIPT CAPITAL B
+212D;212D;212D;0043;0043; # (â„­; â„­; â„­; C; C; ) BLACK-LETTER CAPITAL C
+212F;212F;212F;0065;0065; # (ℯ; ℯ; ℯ; e; e; ) SCRIPT SMALL E
+2130;2130;2130;0045;0045; # (â„°; â„°; â„°; E; E; ) SCRIPT CAPITAL E
+2131;2131;2131;0046;0046; # (ℱ; ℱ; ℱ; F; F; ) SCRIPT CAPITAL F
+2133;2133;2133;004D;004D; # (ℳ; ℳ; ℳ; M; M; ) SCRIPT CAPITAL M
+2134;2134;2134;006F;006F; # (â„´; â„´; â„´; o; o; ) SCRIPT SMALL O
+2135;2135;2135;05D0;05D0; # (ℵ; ℵ; ℵ; ×; ×; ) ALEF SYMBOL
+2136;2136;2136;05D1;05D1; # (ℶ; ℶ; ℶ; ב; ב; ) BET SYMBOL
+2137;2137;2137;05D2;05D2; # (â„·; â„·; â„·; ×’; ×’; ) GIMEL SYMBOL
+2138;2138;2138;05D3;05D3; # (ℸ; ℸ; ℸ; ד; ד; ) DALET SYMBOL
+2139;2139;2139;0069;0069; # (ℹ; ℹ; ℹ; i; i; ) INFORMATION SOURCE
+213B;213B;213B;0046 0041 0058;0046 0041 0058; # (â„»; â„»; â„»; FAX; FAX; ) FACSIMILE SIGN
+213C;213C;213C;03C0;03C0; # (ℼ; ℼ; ℼ; π; π; ) DOUBLE-STRUCK SMALL PI
+213D;213D;213D;03B3;03B3; # (ℽ; ℽ; ℽ; γ; γ; ) DOUBLE-STRUCK SMALL GAMMA
+213E;213E;213E;0393;0393; # (ℾ; ℾ; ℾ; Γ; Γ; ) DOUBLE-STRUCK CAPITAL GAMMA
+213F;213F;213F;03A0;03A0; # (ℿ; ℿ; ℿ; Π; Π; ) DOUBLE-STRUCK CAPITAL PI
+2140;2140;2140;2211;2211; # (⅀; ⅀; ⅀; ∑; ∑; ) DOUBLE-STRUCK N-ARY SUMMATION
+2145;2145;2145;0044;0044; # (â……; â……; â……; D; D; ) DOUBLE-STRUCK ITALIC CAPITAL D
+2146;2146;2146;0064;0064; # (â…†; â…†; â…†; d; d; ) DOUBLE-STRUCK ITALIC SMALL D
+2147;2147;2147;0065;0065; # (â…‡; â…‡; â…‡; e; e; ) DOUBLE-STRUCK ITALIC SMALL E
+2148;2148;2148;0069;0069; # (â…ˆ; â…ˆ; â…ˆ; i; i; ) DOUBLE-STRUCK ITALIC SMALL I
+2149;2149;2149;006A;006A; # (â…‰; â…‰; â…‰; j; j; ) DOUBLE-STRUCK ITALIC SMALL J
+2153;2153;2153;0031 2044 0033;0031 2044 0033; # (â…“; â…“; â…“; 1â„3; 1â„3; ) VULGAR FRACTION ONE THIRD
+2154;2154;2154;0032 2044 0033;0032 2044 0033; # (â…”; â…”; â…”; 2â„3; 2â„3; ) VULGAR FRACTION TWO THIRDS
+2155;2155;2155;0031 2044 0035;0031 2044 0035; # (â…•; â…•; â…•; 1â„5; 1â„5; ) VULGAR FRACTION ONE FIFTH
+2156;2156;2156;0032 2044 0035;0032 2044 0035; # (â…–; â…–; â…–; 2â„5; 2â„5; ) VULGAR FRACTION TWO FIFTHS
+2157;2157;2157;0033 2044 0035;0033 2044 0035; # (â…—; â…—; â…—; 3â„5; 3â„5; ) VULGAR FRACTION THREE FIFTHS
+2158;2158;2158;0034 2044 0035;0034 2044 0035; # (â…˜; â…˜; â…˜; 4â„5; 4â„5; ) VULGAR FRACTION FOUR FIFTHS
+2159;2159;2159;0031 2044 0036;0031 2044 0036; # (â…™; â…™; â…™; 1â„6; 1â„6; ) VULGAR FRACTION ONE SIXTH
+215A;215A;215A;0035 2044 0036;0035 2044 0036; # (â…š; â…š; â…š; 5â„6; 5â„6; ) VULGAR FRACTION FIVE SIXTHS
+215B;215B;215B;0031 2044 0038;0031 2044 0038; # (â…›; â…›; â…›; 1â„8; 1â„8; ) VULGAR FRACTION ONE EIGHTH
+215C;215C;215C;0033 2044 0038;0033 2044 0038; # (â…œ; â…œ; â…œ; 3â„8; 3â„8; ) VULGAR FRACTION THREE EIGHTHS
+215D;215D;215D;0035 2044 0038;0035 2044 0038; # (â…; â…; â…; 5â„8; 5â„8; ) VULGAR FRACTION FIVE EIGHTHS
+215E;215E;215E;0037 2044 0038;0037 2044 0038; # (â…ž; â…ž; â…ž; 7â„8; 7â„8; ) VULGAR FRACTION SEVEN EIGHTHS
+215F;215F;215F;0031 2044;0031 2044; # (â…Ÿ; â…Ÿ; â…Ÿ; 1â„; 1â„; ) FRACTION NUMERATOR ONE
+2160;2160;2160;0049;0049; # (â… ; â… ; â… ; I; I; ) ROMAN NUMERAL ONE
+2161;2161;2161;0049 0049;0049 0049; # (â…¡; â…¡; â…¡; II; II; ) ROMAN NUMERAL TWO
+2162;2162;2162;0049 0049 0049;0049 0049 0049; # (â…¢; â…¢; â…¢; III; III; ) ROMAN NUMERAL THREE
+2163;2163;2163;0049 0056;0049 0056; # (â…£; â…£; â…£; IV; IV; ) ROMAN NUMERAL FOUR
+2164;2164;2164;0056;0056; # (â…¤; â…¤; â…¤; V; V; ) ROMAN NUMERAL FIVE
+2165;2165;2165;0056 0049;0056 0049; # (â…¥; â…¥; â…¥; VI; VI; ) ROMAN NUMERAL SIX
+2166;2166;2166;0056 0049 0049;0056 0049 0049; # (â…¦; â…¦; â…¦; VII; VII; ) ROMAN NUMERAL SEVEN
+2167;2167;2167;0056 0049 0049 0049;0056 0049 0049 0049; # (â…§; â…§; â…§; VIII; VIII; ) ROMAN NUMERAL EIGHT
+2168;2168;2168;0049 0058;0049 0058; # (â…¨; â…¨; â…¨; IX; IX; ) ROMAN NUMERAL NINE
+2169;2169;2169;0058;0058; # (â…©; â…©; â…©; X; X; ) ROMAN NUMERAL TEN
+216A;216A;216A;0058 0049;0058 0049; # (â…ª; â…ª; â…ª; XI; XI; ) ROMAN NUMERAL ELEVEN
+216B;216B;216B;0058 0049 0049;0058 0049 0049; # (â…«; â…«; â…«; XII; XII; ) ROMAN NUMERAL TWELVE
+216C;216C;216C;004C;004C; # (â…¬; â…¬; â…¬; L; L; ) ROMAN NUMERAL FIFTY
+216D;216D;216D;0043;0043; # (â…­; â…­; â…­; C; C; ) ROMAN NUMERAL ONE HUNDRED
+216E;216E;216E;0044;0044; # (â…®; â…®; â…®; D; D; ) ROMAN NUMERAL FIVE HUNDRED
+216F;216F;216F;004D;004D; # (â…¯; â…¯; â…¯; M; M; ) ROMAN NUMERAL ONE THOUSAND
+2170;2170;2170;0069;0069; # (â…°; â…°; â…°; i; i; ) SMALL ROMAN NUMERAL ONE
+2171;2171;2171;0069 0069;0069 0069; # (â…±; â…±; â…±; ii; ii; ) SMALL ROMAN NUMERAL TWO
+2172;2172;2172;0069 0069 0069;0069 0069 0069; # (â…²; â…²; â…²; iii; iii; ) SMALL ROMAN NUMERAL THREE
+2173;2173;2173;0069 0076;0069 0076; # (â…³; â…³; â…³; iv; iv; ) SMALL ROMAN NUMERAL FOUR
+2174;2174;2174;0076;0076; # (â…´; â…´; â…´; v; v; ) SMALL ROMAN NUMERAL FIVE
+2175;2175;2175;0076 0069;0076 0069; # (â…µ; â…µ; â…µ; vi; vi; ) SMALL ROMAN NUMERAL SIX
+2176;2176;2176;0076 0069 0069;0076 0069 0069; # (â…¶; â…¶; â…¶; vii; vii; ) SMALL ROMAN NUMERAL SEVEN
+2177;2177;2177;0076 0069 0069 0069;0076 0069 0069 0069; # (â…·; â…·; â…·; viii; viii; ) SMALL ROMAN NUMERAL EIGHT
+2178;2178;2178;0069 0078;0069 0078; # (â…¸; â…¸; â…¸; ix; ix; ) SMALL ROMAN NUMERAL NINE
+2179;2179;2179;0078;0078; # (â…¹; â…¹; â…¹; x; x; ) SMALL ROMAN NUMERAL TEN
+217A;217A;217A;0078 0069;0078 0069; # (â…º; â…º; â…º; xi; xi; ) SMALL ROMAN NUMERAL ELEVEN
+217B;217B;217B;0078 0069 0069;0078 0069 0069; # (â…»; â…»; â…»; xii; xii; ) SMALL ROMAN NUMERAL TWELVE
+217C;217C;217C;006C;006C; # (â…¼; â…¼; â…¼; l; l; ) SMALL ROMAN NUMERAL FIFTY
+217D;217D;217D;0063;0063; # (â…½; â…½; â…½; c; c; ) SMALL ROMAN NUMERAL ONE HUNDRED
+217E;217E;217E;0064;0064; # (â…¾; â…¾; â…¾; d; d; ) SMALL ROMAN NUMERAL FIVE HUNDRED
+217F;217F;217F;006D;006D; # (â…¿; â…¿; â…¿; m; m; ) SMALL ROMAN NUMERAL ONE THOUSAND
+219A;219A;2190 0338;219A;2190 0338; # (↚; ↚; â†â—ŒÌ¸; ↚; â†â—ŒÌ¸; ) LEFTWARDS ARROW WITH STROKE
+219B;219B;2192 0338;219B;2192 0338; # (↛; ↛; →◌̸; ↛; →◌̸; ) RIGHTWARDS ARROW WITH STROKE
+21AE;21AE;2194 0338;21AE;2194 0338; # (↮; ↮; ↔◌̸; ↮; ↔◌̸; ) LEFT RIGHT ARROW WITH STROKE
+21CD;21CD;21D0 0338;21CD;21D0 0338; # (â‡; â‡; â‡â—ŒÌ¸; â‡; â‡â—ŒÌ¸; ) LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE;21CE;21D4 0338;21CE;21D4 0338; # (⇎; ⇎; ⇔◌̸; ⇎; ⇔◌̸; ) LEFT RIGHT DOUBLE ARROW WITH STROKE
+21CF;21CF;21D2 0338;21CF;21D2 0338; # (â‡; â‡; ⇒◌̸; â‡; ⇒◌̸; ) RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204;2204;2203 0338;2204;2203 0338; # (∄; ∄; ∃◌̸; ∄; ∃◌̸; ) THERE DOES NOT EXIST
+2209;2209;2208 0338;2209;2208 0338; # (∉; ∉; ∈◌̸; ∉; ∈◌̸; ) NOT AN ELEMENT OF
+220C;220C;220B 0338;220C;220B 0338; # (∌; ∌; ∋◌̸; ∌; ∋◌̸; ) DOES NOT CONTAIN AS MEMBER
+2224;2224;2223 0338;2224;2223 0338; # (∤; ∤; ∣◌̸; ∤; ∣◌̸; ) DOES NOT DIVIDE
+2226;2226;2225 0338;2226;2225 0338; # (∦; ∦; ∥◌̸; ∦; ∥◌̸; ) NOT PARALLEL TO
+222C;222C;222C;222B 222B;222B 222B; # (∬; ∬; ∬; ∫∫; ∫∫; ) DOUBLE INTEGRAL
+222D;222D;222D;222B 222B 222B;222B 222B 222B; # (∭; ∭; ∭; ∫∫∫; ∫∫∫; ) TRIPLE INTEGRAL
+222F;222F;222F;222E 222E;222E 222E; # (∯; ∯; ∯; ∮∮; ∮∮; ) SURFACE INTEGRAL
+2230;2230;2230;222E 222E 222E;222E 222E 222E; # (∰; ∰; ∰; ∮∮∮; ∮∮∮; ) VOLUME INTEGRAL
+2241;2241;223C 0338;2241;223C 0338; # (â‰; â‰; ∼◌̸; â‰; ∼◌̸; ) NOT TILDE
+2244;2244;2243 0338;2244;2243 0338; # (≄; ≄; ≃◌̸; ≄; ≃◌̸; ) NOT ASYMPTOTICALLY EQUAL TO
+2247;2247;2245 0338;2247;2245 0338; # (≇; ≇; ≅◌̸; ≇; ≅◌̸; ) NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249;2249;2248 0338;2249;2248 0338; # (≉; ≉; ≈◌̸; ≉; ≈◌̸; ) NOT ALMOST EQUAL TO
+2260;2260;003D 0338;2260;003D 0338; # (≠; ≠; =◌̸; ≠; =◌̸; ) NOT EQUAL TO
+2262;2262;2261 0338;2262;2261 0338; # (≢; ≢; ≡◌̸; ≢; ≡◌̸; ) NOT IDENTICAL TO
+226D;226D;224D 0338;226D;224D 0338; # (≭; ≭; â‰â—ŒÌ¸; ≭; â‰â—ŒÌ¸; ) NOT EQUIVALENT TO
+226E;226E;003C 0338;226E;003C 0338; # (≮; ≮; <◌̸; ≮; <◌̸; ) NOT LESS-THAN
+226F;226F;003E 0338;226F;003E 0338; # (≯; ≯; >◌̸; ≯; >◌̸; ) NOT GREATER-THAN
+2270;2270;2264 0338;2270;2264 0338; # (≰; ≰; ≤◌̸; ≰; ≤◌̸; ) NEITHER LESS-THAN NOR EQUAL TO
+2271;2271;2265 0338;2271;2265 0338; # (≱; ≱; ≥◌̸; ≱; ≥◌̸; ) NEITHER GREATER-THAN NOR EQUAL TO
+2274;2274;2272 0338;2274;2272 0338; # (≴; ≴; ≲◌̸; ≴; ≲◌̸; ) NEITHER LESS-THAN NOR EQUIVALENT TO
+2275;2275;2273 0338;2275;2273 0338; # (≵; ≵; ≳◌̸; ≵; ≳◌̸; ) NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278;2278;2276 0338;2278;2276 0338; # (≸; ≸; ≶◌̸; ≸; ≶◌̸; ) NEITHER LESS-THAN NOR GREATER-THAN
+2279;2279;2277 0338;2279;2277 0338; # (≹; ≹; ≷◌̸; ≹; ≷◌̸; ) NEITHER GREATER-THAN NOR LESS-THAN
+2280;2280;227A 0338;2280;227A 0338; # (⊀; ⊀; ≺◌̸; ⊀; ≺◌̸; ) DOES NOT PRECEDE
+2281;2281;227B 0338;2281;227B 0338; # (âŠ; âŠ; ≻◌̸; âŠ; ≻◌̸; ) DOES NOT SUCCEED
+2284;2284;2282 0338;2284;2282 0338; # (⊄; ⊄; ⊂◌̸; ⊄; ⊂◌̸; ) NOT A SUBSET OF
+2285;2285;2283 0338;2285;2283 0338; # (⊅; ⊅; ⊃◌̸; ⊅; ⊃◌̸; ) NOT A SUPERSET OF
+2288;2288;2286 0338;2288;2286 0338; # (⊈; ⊈; ⊆◌̸; ⊈; ⊆◌̸; ) NEITHER A SUBSET OF NOR EQUAL TO
+2289;2289;2287 0338;2289;2287 0338; # (⊉; ⊉; ⊇◌̸; ⊉; ⊇◌̸; ) NEITHER A SUPERSET OF NOR EQUAL TO
+22AC;22AC;22A2 0338;22AC;22A2 0338; # (⊬; ⊬; ⊢◌̸; ⊬; ⊢◌̸; ) DOES NOT PROVE
+22AD;22AD;22A8 0338;22AD;22A8 0338; # (⊭; ⊭; ⊨◌̸; ⊭; ⊨◌̸; ) NOT TRUE
+22AE;22AE;22A9 0338;22AE;22A9 0338; # (⊮; ⊮; ⊩◌̸; ⊮; ⊩◌̸; ) DOES NOT FORCE
+22AF;22AF;22AB 0338;22AF;22AB 0338; # (⊯; ⊯; ⊫◌̸; ⊯; ⊫◌̸; ) NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0;22E0;227C 0338;22E0;227C 0338; # (⋠; ⋠; ≼◌̸; ⋠; ≼◌̸; ) DOES NOT PRECEDE OR EQUAL
+22E1;22E1;227D 0338;22E1;227D 0338; # (⋡; ⋡; ≽◌̸; ⋡; ≽◌̸; ) DOES NOT SUCCEED OR EQUAL
+22E2;22E2;2291 0338;22E2;2291 0338; # (⋢; ⋢; ⊑◌̸; ⋢; ⊑◌̸; ) NOT SQUARE IMAGE OF OR EQUAL TO
+22E3;22E3;2292 0338;22E3;2292 0338; # (⋣; ⋣; ⊒◌̸; ⋣; ⊒◌̸; ) NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA;22EA;22B2 0338;22EA;22B2 0338; # (⋪; ⋪; ⊲◌̸; ⋪; ⊲◌̸; ) NOT NORMAL SUBGROUP OF
+22EB;22EB;22B3 0338;22EB;22B3 0338; # (⋫; ⋫; ⊳◌̸; ⋫; ⊳◌̸; ) DOES NOT CONTAIN AS NORMAL SUBGROUP
+22EC;22EC;22B4 0338;22EC;22B4 0338; # (⋬; ⋬; ⊴◌̸; ⋬; ⊴◌̸; ) NOT NORMAL SUBGROUP OF OR EQUAL TO
+22ED;22ED;22B5 0338;22ED;22B5 0338; # (⋭; ⋭; ⊵◌̸; ⋭; ⊵◌̸; ) DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2329;3008;3008;3008;3008; # (〈; 〈; 〈; 〈; 〈; ) LEFT-POINTING ANGLE BRACKET
+232A;3009;3009;3009;3009; # (〉; 〉; 〉; 〉; 〉; ) RIGHT-POINTING ANGLE BRACKET
+2460;2460;2460;0031;0031; # (â‘ ; â‘ ; â‘ ; 1; 1; ) CIRCLED DIGIT ONE
+2461;2461;2461;0032;0032; # (â‘¡; â‘¡; â‘¡; 2; 2; ) CIRCLED DIGIT TWO
+2462;2462;2462;0033;0033; # (â‘¢; â‘¢; â‘¢; 3; 3; ) CIRCLED DIGIT THREE
+2463;2463;2463;0034;0034; # (â‘£; â‘£; â‘£; 4; 4; ) CIRCLED DIGIT FOUR
+2464;2464;2464;0035;0035; # (⑤; ⑤; ⑤; 5; 5; ) CIRCLED DIGIT FIVE
+2465;2465;2465;0036;0036; # (â‘¥; â‘¥; â‘¥; 6; 6; ) CIRCLED DIGIT SIX
+2466;2466;2466;0037;0037; # (⑦; ⑦; ⑦; 7; 7; ) CIRCLED DIGIT SEVEN
+2467;2467;2467;0038;0038; # (⑧; ⑧; ⑧; 8; 8; ) CIRCLED DIGIT EIGHT
+2468;2468;2468;0039;0039; # (⑨; ⑨; ⑨; 9; 9; ) CIRCLED DIGIT NINE
+2469;2469;2469;0031 0030;0031 0030; # (â‘©; â‘©; â‘©; 10; 10; ) CIRCLED NUMBER TEN
+246A;246A;246A;0031 0031;0031 0031; # (⑪; ⑪; ⑪; 11; 11; ) CIRCLED NUMBER ELEVEN
+246B;246B;246B;0031 0032;0031 0032; # (â‘«; â‘«; â‘«; 12; 12; ) CIRCLED NUMBER TWELVE
+246C;246C;246C;0031 0033;0031 0033; # (⑬; ⑬; ⑬; 13; 13; ) CIRCLED NUMBER THIRTEEN
+246D;246D;246D;0031 0034;0031 0034; # (â‘­; â‘­; â‘­; 14; 14; ) CIRCLED NUMBER FOURTEEN
+246E;246E;246E;0031 0035;0031 0035; # (â‘®; â‘®; â‘®; 15; 15; ) CIRCLED NUMBER FIFTEEN
+246F;246F;246F;0031 0036;0031 0036; # (⑯; ⑯; ⑯; 16; 16; ) CIRCLED NUMBER SIXTEEN
+2470;2470;2470;0031 0037;0031 0037; # (â‘°; â‘°; â‘°; 17; 17; ) CIRCLED NUMBER SEVENTEEN
+2471;2471;2471;0031 0038;0031 0038; # (⑱; ⑱; ⑱; 18; 18; ) CIRCLED NUMBER EIGHTEEN
+2472;2472;2472;0031 0039;0031 0039; # (⑲; ⑲; ⑲; 19; 19; ) CIRCLED NUMBER NINETEEN
+2473;2473;2473;0032 0030;0032 0030; # (⑳; ⑳; ⑳; 20; 20; ) CIRCLED NUMBER TWENTY
+2474;2474;2474;0028 0031 0029;0028 0031 0029; # (â‘´; â‘´; â‘´; (1); (1); ) PARENTHESIZED DIGIT ONE
+2475;2475;2475;0028 0032 0029;0028 0032 0029; # (⑵; ⑵; ⑵; (2); (2); ) PARENTHESIZED DIGIT TWO
+2476;2476;2476;0028 0033 0029;0028 0033 0029; # (⑶; ⑶; ⑶; (3); (3); ) PARENTHESIZED DIGIT THREE
+2477;2477;2477;0028 0034 0029;0028 0034 0029; # (â‘·; â‘·; â‘·; (4); (4); ) PARENTHESIZED DIGIT FOUR
+2478;2478;2478;0028 0035 0029;0028 0035 0029; # (⑸; ⑸; ⑸; (5); (5); ) PARENTHESIZED DIGIT FIVE
+2479;2479;2479;0028 0036 0029;0028 0036 0029; # (⑹; ⑹; ⑹; (6); (6); ) PARENTHESIZED DIGIT SIX
+247A;247A;247A;0028 0037 0029;0028 0037 0029; # (⑺; ⑺; ⑺; (7); (7); ) PARENTHESIZED DIGIT SEVEN
+247B;247B;247B;0028 0038 0029;0028 0038 0029; # (â‘»; â‘»; â‘»; (8); (8); ) PARENTHESIZED DIGIT EIGHT
+247C;247C;247C;0028 0039 0029;0028 0039 0029; # (⑼; ⑼; ⑼; (9); (9); ) PARENTHESIZED DIGIT NINE
+247D;247D;247D;0028 0031 0030 0029;0028 0031 0030 0029; # (⑽; ⑽; ⑽; (10); (10); ) PARENTHESIZED NUMBER TEN
+247E;247E;247E;0028 0031 0031 0029;0028 0031 0031 0029; # (⑾; ⑾; ⑾; (11); (11); ) PARENTHESIZED NUMBER ELEVEN
+247F;247F;247F;0028 0031 0032 0029;0028 0031 0032 0029; # (â‘¿; â‘¿; â‘¿; (12); (12); ) PARENTHESIZED NUMBER TWELVE
+2480;2480;2480;0028 0031 0033 0029;0028 0031 0033 0029; # (â’€; â’€; â’€; (13); (13); ) PARENTHESIZED NUMBER THIRTEEN
+2481;2481;2481;0028 0031 0034 0029;0028 0031 0034 0029; # (â’; â’; â’; (14); (14); ) PARENTHESIZED NUMBER FOURTEEN
+2482;2482;2482;0028 0031 0035 0029;0028 0031 0035 0029; # (â’‚; â’‚; â’‚; (15); (15); ) PARENTHESIZED NUMBER FIFTEEN
+2483;2483;2483;0028 0031 0036 0029;0028 0031 0036 0029; # (â’ƒ; â’ƒ; â’ƒ; (16); (16); ) PARENTHESIZED NUMBER SIXTEEN
+2484;2484;2484;0028 0031 0037 0029;0028 0031 0037 0029; # (â’„; â’„; â’„; (17); (17); ) PARENTHESIZED NUMBER SEVENTEEN
+2485;2485;2485;0028 0031 0038 0029;0028 0031 0038 0029; # (â’…; â’…; â’…; (18); (18); ) PARENTHESIZED NUMBER EIGHTEEN
+2486;2486;2486;0028 0031 0039 0029;0028 0031 0039 0029; # (â’†; â’†; â’†; (19); (19); ) PARENTHESIZED NUMBER NINETEEN
+2487;2487;2487;0028 0032 0030 0029;0028 0032 0030 0029; # (â’‡; â’‡; â’‡; (20); (20); ) PARENTHESIZED NUMBER TWENTY
+2488;2488;2488;0031 002E;0031 002E; # (â’ˆ; â’ˆ; â’ˆ; 1.; 1.; ) DIGIT ONE FULL STOP
+2489;2489;2489;0032 002E;0032 002E; # (â’‰; â’‰; â’‰; 2.; 2.; ) DIGIT TWO FULL STOP
+248A;248A;248A;0033 002E;0033 002E; # (â’Š; â’Š; â’Š; 3.; 3.; ) DIGIT THREE FULL STOP
+248B;248B;248B;0034 002E;0034 002E; # (â’‹; â’‹; â’‹; 4.; 4.; ) DIGIT FOUR FULL STOP
+248C;248C;248C;0035 002E;0035 002E; # (⒌; ⒌; ⒌; 5.; 5.; ) DIGIT FIVE FULL STOP
+248D;248D;248D;0036 002E;0036 002E; # (â’; â’; â’; 6.; 6.; ) DIGIT SIX FULL STOP
+248E;248E;248E;0037 002E;0037 002E; # (â’Ž; â’Ž; â’Ž; 7.; 7.; ) DIGIT SEVEN FULL STOP
+248F;248F;248F;0038 002E;0038 002E; # (â’; â’; â’; 8.; 8.; ) DIGIT EIGHT FULL STOP
+2490;2490;2490;0039 002E;0039 002E; # (â’; â’; â’; 9.; 9.; ) DIGIT NINE FULL STOP
+2491;2491;2491;0031 0030 002E;0031 0030 002E; # (â’‘; â’‘; â’‘; 10.; 10.; ) NUMBER TEN FULL STOP
+2492;2492;2492;0031 0031 002E;0031 0031 002E; # (â’’; â’’; â’’; 11.; 11.; ) NUMBER ELEVEN FULL STOP
+2493;2493;2493;0031 0032 002E;0031 0032 002E; # (â’“; â’“; â’“; 12.; 12.; ) NUMBER TWELVE FULL STOP
+2494;2494;2494;0031 0033 002E;0031 0033 002E; # (â’”; â’”; â’”; 13.; 13.; ) NUMBER THIRTEEN FULL STOP
+2495;2495;2495;0031 0034 002E;0031 0034 002E; # (â’•; â’•; â’•; 14.; 14.; ) NUMBER FOURTEEN FULL STOP
+2496;2496;2496;0031 0035 002E;0031 0035 002E; # (â’–; â’–; â’–; 15.; 15.; ) NUMBER FIFTEEN FULL STOP
+2497;2497;2497;0031 0036 002E;0031 0036 002E; # (â’—; â’—; â’—; 16.; 16.; ) NUMBER SIXTEEN FULL STOP
+2498;2498;2498;0031 0037 002E;0031 0037 002E; # (â’˜; â’˜; â’˜; 17.; 17.; ) NUMBER SEVENTEEN FULL STOP
+2499;2499;2499;0031 0038 002E;0031 0038 002E; # (â’™; â’™; â’™; 18.; 18.; ) NUMBER EIGHTEEN FULL STOP
+249A;249A;249A;0031 0039 002E;0031 0039 002E; # (â’š; â’š; â’š; 19.; 19.; ) NUMBER NINETEEN FULL STOP
+249B;249B;249B;0032 0030 002E;0032 0030 002E; # (â’›; â’›; â’›; 20.; 20.; ) NUMBER TWENTY FULL STOP
+249C;249C;249C;0028 0061 0029;0028 0061 0029; # (⒜; ⒜; ⒜; (a); (a); ) PARENTHESIZED LATIN SMALL LETTER A
+249D;249D;249D;0028 0062 0029;0028 0062 0029; # (â’; â’; â’; (b); (b); ) PARENTHESIZED LATIN SMALL LETTER B
+249E;249E;249E;0028 0063 0029;0028 0063 0029; # (â’ž; â’ž; â’ž; (c); (c); ) PARENTHESIZED LATIN SMALL LETTER C
+249F;249F;249F;0028 0064 0029;0028 0064 0029; # (â’Ÿ; â’Ÿ; â’Ÿ; (d); (d); ) PARENTHESIZED LATIN SMALL LETTER D
+24A0;24A0;24A0;0028 0065 0029;0028 0065 0029; # (â’ ; â’ ; â’ ; (e); (e); ) PARENTHESIZED LATIN SMALL LETTER E
+24A1;24A1;24A1;0028 0066 0029;0028 0066 0029; # (â’¡; â’¡; â’¡; (f); (f); ) PARENTHESIZED LATIN SMALL LETTER F
+24A2;24A2;24A2;0028 0067 0029;0028 0067 0029; # (â’¢; â’¢; â’¢; (g); (g); ) PARENTHESIZED LATIN SMALL LETTER G
+24A3;24A3;24A3;0028 0068 0029;0028 0068 0029; # (â’£; â’£; â’£; (h); (h); ) PARENTHESIZED LATIN SMALL LETTER H
+24A4;24A4;24A4;0028 0069 0029;0028 0069 0029; # (â’¤; â’¤; â’¤; (i); (i); ) PARENTHESIZED LATIN SMALL LETTER I
+24A5;24A5;24A5;0028 006A 0029;0028 006A 0029; # (â’¥; â’¥; â’¥; (j); (j); ) PARENTHESIZED LATIN SMALL LETTER J
+24A6;24A6;24A6;0028 006B 0029;0028 006B 0029; # (â’¦; â’¦; â’¦; (k); (k); ) PARENTHESIZED LATIN SMALL LETTER K
+24A7;24A7;24A7;0028 006C 0029;0028 006C 0029; # (â’§; â’§; â’§; (l); (l); ) PARENTHESIZED LATIN SMALL LETTER L
+24A8;24A8;24A8;0028 006D 0029;0028 006D 0029; # (â’¨; â’¨; â’¨; (m); (m); ) PARENTHESIZED LATIN SMALL LETTER M
+24A9;24A9;24A9;0028 006E 0029;0028 006E 0029; # (â’©; â’©; â’©; (n); (n); ) PARENTHESIZED LATIN SMALL LETTER N
+24AA;24AA;24AA;0028 006F 0029;0028 006F 0029; # (â’ª; â’ª; â’ª; (o); (o); ) PARENTHESIZED LATIN SMALL LETTER O
+24AB;24AB;24AB;0028 0070 0029;0028 0070 0029; # (â’«; â’«; â’«; (p); (p); ) PARENTHESIZED LATIN SMALL LETTER P
+24AC;24AC;24AC;0028 0071 0029;0028 0071 0029; # (â’¬; â’¬; â’¬; (q); (q); ) PARENTHESIZED LATIN SMALL LETTER Q
+24AD;24AD;24AD;0028 0072 0029;0028 0072 0029; # (â’­; â’­; â’­; (r); (r); ) PARENTHESIZED LATIN SMALL LETTER R
+24AE;24AE;24AE;0028 0073 0029;0028 0073 0029; # (â’®; â’®; â’®; (s); (s); ) PARENTHESIZED LATIN SMALL LETTER S
+24AF;24AF;24AF;0028 0074 0029;0028 0074 0029; # (â’¯; â’¯; â’¯; (t); (t); ) PARENTHESIZED LATIN SMALL LETTER T
+24B0;24B0;24B0;0028 0075 0029;0028 0075 0029; # (â’°; â’°; â’°; (u); (u); ) PARENTHESIZED LATIN SMALL LETTER U
+24B1;24B1;24B1;0028 0076 0029;0028 0076 0029; # (â’±; â’±; â’±; (v); (v); ) PARENTHESIZED LATIN SMALL LETTER V
+24B2;24B2;24B2;0028 0077 0029;0028 0077 0029; # (â’²; â’²; â’²; (w); (w); ) PARENTHESIZED LATIN SMALL LETTER W
+24B3;24B3;24B3;0028 0078 0029;0028 0078 0029; # (â’³; â’³; â’³; (x); (x); ) PARENTHESIZED LATIN SMALL LETTER X
+24B4;24B4;24B4;0028 0079 0029;0028 0079 0029; # (â’´; â’´; â’´; (y); (y); ) PARENTHESIZED LATIN SMALL LETTER Y
+24B5;24B5;24B5;0028 007A 0029;0028 007A 0029; # (â’µ; â’µ; â’µ; (z); (z); ) PARENTHESIZED LATIN SMALL LETTER Z
+24B6;24B6;24B6;0041;0041; # (â’¶; â’¶; â’¶; A; A; ) CIRCLED LATIN CAPITAL LETTER A
+24B7;24B7;24B7;0042;0042; # (â’·; â’·; â’·; B; B; ) CIRCLED LATIN CAPITAL LETTER B
+24B8;24B8;24B8;0043;0043; # (â’¸; â’¸; â’¸; C; C; ) CIRCLED LATIN CAPITAL LETTER C
+24B9;24B9;24B9;0044;0044; # (â’¹; â’¹; â’¹; D; D; ) CIRCLED LATIN CAPITAL LETTER D
+24BA;24BA;24BA;0045;0045; # (â’º; â’º; â’º; E; E; ) CIRCLED LATIN CAPITAL LETTER E
+24BB;24BB;24BB;0046;0046; # (â’»; â’»; â’»; F; F; ) CIRCLED LATIN CAPITAL LETTER F
+24BC;24BC;24BC;0047;0047; # (â’¼; â’¼; â’¼; G; G; ) CIRCLED LATIN CAPITAL LETTER G
+24BD;24BD;24BD;0048;0048; # (â’½; â’½; â’½; H; H; ) CIRCLED LATIN CAPITAL LETTER H
+24BE;24BE;24BE;0049;0049; # (â’¾; â’¾; â’¾; I; I; ) CIRCLED LATIN CAPITAL LETTER I
+24BF;24BF;24BF;004A;004A; # (â’¿; â’¿; â’¿; J; J; ) CIRCLED LATIN CAPITAL LETTER J
+24C0;24C0;24C0;004B;004B; # (â“€; â“€; â“€; K; K; ) CIRCLED LATIN CAPITAL LETTER K
+24C1;24C1;24C1;004C;004C; # (â“; â“; â“; L; L; ) CIRCLED LATIN CAPITAL LETTER L
+24C2;24C2;24C2;004D;004D; # (â“‚; â“‚; â“‚; M; M; ) CIRCLED LATIN CAPITAL LETTER M
+24C3;24C3;24C3;004E;004E; # (Ⓝ; Ⓝ; Ⓝ; N; N; ) CIRCLED LATIN CAPITAL LETTER N
+24C4;24C4;24C4;004F;004F; # (â“„; â“„; â“„; O; O; ) CIRCLED LATIN CAPITAL LETTER O
+24C5;24C5;24C5;0050;0050; # (â“…; â“…; â“…; P; P; ) CIRCLED LATIN CAPITAL LETTER P
+24C6;24C6;24C6;0051;0051; # (Ⓠ; Ⓠ; Ⓠ; Q; Q; ) CIRCLED LATIN CAPITAL LETTER Q
+24C7;24C7;24C7;0052;0052; # (Ⓡ; Ⓡ; Ⓡ; R; R; ) CIRCLED LATIN CAPITAL LETTER R
+24C8;24C8;24C8;0053;0053; # (Ⓢ; Ⓢ; Ⓢ; S; S; ) CIRCLED LATIN CAPITAL LETTER S
+24C9;24C9;24C9;0054;0054; # (Ⓣ; Ⓣ; Ⓣ; T; T; ) CIRCLED LATIN CAPITAL LETTER T
+24CA;24CA;24CA;0055;0055; # (â“Š; â“Š; â“Š; U; U; ) CIRCLED LATIN CAPITAL LETTER U
+24CB;24CB;24CB;0056;0056; # (â“‹; â“‹; â“‹; V; V; ) CIRCLED LATIN CAPITAL LETTER V
+24CC;24CC;24CC;0057;0057; # (Ⓦ; Ⓦ; Ⓦ; W; W; ) CIRCLED LATIN CAPITAL LETTER W
+24CD;24CD;24CD;0058;0058; # (â“; â“; â“; X; X; ) CIRCLED LATIN CAPITAL LETTER X
+24CE;24CE;24CE;0059;0059; # (â“Ž; â“Ž; â“Ž; Y; Y; ) CIRCLED LATIN CAPITAL LETTER Y
+24CF;24CF;24CF;005A;005A; # (â“; â“; â“; Z; Z; ) CIRCLED LATIN CAPITAL LETTER Z
+24D0;24D0;24D0;0061;0061; # (â“; â“; â“; a; a; ) CIRCLED LATIN SMALL LETTER A
+24D1;24D1;24D1;0062;0062; # (â“‘; â“‘; â“‘; b; b; ) CIRCLED LATIN SMALL LETTER B
+24D2;24D2;24D2;0063;0063; # (â“’; â“’; â“’; c; c; ) CIRCLED LATIN SMALL LETTER C
+24D3;24D3;24D3;0064;0064; # (â““; â““; â““; d; d; ) CIRCLED LATIN SMALL LETTER D
+24D4;24D4;24D4;0065;0065; # (â“”; â“”; â“”; e; e; ) CIRCLED LATIN SMALL LETTER E
+24D5;24D5;24D5;0066;0066; # (â“•; â“•; â“•; f; f; ) CIRCLED LATIN SMALL LETTER F
+24D6;24D6;24D6;0067;0067; # (â“–; â“–; â“–; g; g; ) CIRCLED LATIN SMALL LETTER G
+24D7;24D7;24D7;0068;0068; # (â“—; â“—; â“—; h; h; ) CIRCLED LATIN SMALL LETTER H
+24D8;24D8;24D8;0069;0069; # (ⓘ; ⓘ; ⓘ; i; i; ) CIRCLED LATIN SMALL LETTER I
+24D9;24D9;24D9;006A;006A; # (â“™; â“™; â“™; j; j; ) CIRCLED LATIN SMALL LETTER J
+24DA;24DA;24DA;006B;006B; # (â“š; â“š; â“š; k; k; ) CIRCLED LATIN SMALL LETTER K
+24DB;24DB;24DB;006C;006C; # (â“›; â“›; â“›; l; l; ) CIRCLED LATIN SMALL LETTER L
+24DC;24DC;24DC;006D;006D; # (ⓜ; ⓜ; ⓜ; m; m; ) CIRCLED LATIN SMALL LETTER M
+24DD;24DD;24DD;006E;006E; # (â“; â“; â“; n; n; ) CIRCLED LATIN SMALL LETTER N
+24DE;24DE;24DE;006F;006F; # (â“ž; â“ž; â“ž; o; o; ) CIRCLED LATIN SMALL LETTER O
+24DF;24DF;24DF;0070;0070; # (â“Ÿ; â“Ÿ; â“Ÿ; p; p; ) CIRCLED LATIN SMALL LETTER P
+24E0;24E0;24E0;0071;0071; # (â“ ; â“ ; â“ ; q; q; ) CIRCLED LATIN SMALL LETTER Q
+24E1;24E1;24E1;0072;0072; # (â“¡; â“¡; â“¡; r; r; ) CIRCLED LATIN SMALL LETTER R
+24E2;24E2;24E2;0073;0073; # (â“¢; â“¢; â“¢; s; s; ) CIRCLED LATIN SMALL LETTER S
+24E3;24E3;24E3;0074;0074; # (â“£; â“£; â“£; t; t; ) CIRCLED LATIN SMALL LETTER T
+24E4;24E4;24E4;0075;0075; # (ⓤ; ⓤ; ⓤ; u; u; ) CIRCLED LATIN SMALL LETTER U
+24E5;24E5;24E5;0076;0076; # (â“¥; â“¥; â“¥; v; v; ) CIRCLED LATIN SMALL LETTER V
+24E6;24E6;24E6;0077;0077; # (ⓦ; ⓦ; ⓦ; w; w; ) CIRCLED LATIN SMALL LETTER W
+24E7;24E7;24E7;0078;0078; # (ⓧ; ⓧ; ⓧ; x; x; ) CIRCLED LATIN SMALL LETTER X
+24E8;24E8;24E8;0079;0079; # (ⓨ; ⓨ; ⓨ; y; y; ) CIRCLED LATIN SMALL LETTER Y
+24E9;24E9;24E9;007A;007A; # (â“©; â“©; â“©; z; z; ) CIRCLED LATIN SMALL LETTER Z
+24EA;24EA;24EA;0030;0030; # (⓪; ⓪; ⓪; 0; 0; ) CIRCLED DIGIT ZERO
+2A0C;2A0C;2A0C;222B 222B 222B 222B;222B 222B 222B 222B; # (⨌; ⨌; ⨌; ∫∫∫∫; ∫∫∫∫; ) QUADRUPLE INTEGRAL OPERATOR
+2A74;2A74;2A74;003A 003A 003D;003A 003A 003D; # (â©´; â©´; â©´; ::=; ::=; ) DOUBLE COLON EQUAL
+2A75;2A75;2A75;003D 003D;003D 003D; # (⩵; ⩵; ⩵; ==; ==; ) TWO CONSECUTIVE EQUALS SIGNS
+2A76;2A76;2A76;003D 003D 003D;003D 003D 003D; # (⩶; ⩶; ⩶; ===; ===; ) THREE CONSECUTIVE EQUALS SIGNS
+2ADC;2ADD 0338;2ADD 0338;2ADD 0338;2ADD 0338; # (â«œ; â«â—ŒÌ¸; â«â—ŒÌ¸; â«â—ŒÌ¸; â«â—ŒÌ¸; ) FORKING
+2D6F;2D6F;2D6F;2D61;2D61; # (ⵯ; ⵯ; ⵯ; ⵡ; ⵡ; ) TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2E9F;2E9F;2E9F;6BCD;6BCD; # (⺟; ⺟; ⺟; æ¯; æ¯; ) CJK RADICAL MOTHER
+2EF3;2EF3;2EF3;9F9F;9F9F; # (⻳; ⻳; ⻳; 龟; 龟; ) CJK RADICAL C-SIMPLIFIED TURTLE
+2F00;2F00;2F00;4E00;4E00; # (⼀; ⼀; ⼀; 一; 一; ) KANGXI RADICAL ONE
+2F01;2F01;2F01;4E28;4E28; # (â¼; â¼; â¼; 丨; 丨; ) KANGXI RADICAL LINE
+2F02;2F02;2F02;4E36;4E36; # (⼂; ⼂; ⼂; 丶; 丶; ) KANGXI RADICAL DOT
+2F03;2F03;2F03;4E3F;4E3F; # (⼃; ⼃; ⼃; 丿; 丿; ) KANGXI RADICAL SLASH
+2F04;2F04;2F04;4E59;4E59; # (⼄; ⼄; ⼄; 乙; 乙; ) KANGXI RADICAL SECOND
+2F05;2F05;2F05;4E85;4E85; # (⼅; ⼅; ⼅; 亅; 亅; ) KANGXI RADICAL HOOK
+2F06;2F06;2F06;4E8C;4E8C; # (⼆; ⼆; ⼆; 二; 二; ) KANGXI RADICAL TWO
+2F07;2F07;2F07;4EA0;4EA0; # (⼇; ⼇; ⼇; 亠; 亠; ) KANGXI RADICAL LID
+2F08;2F08;2F08;4EBA;4EBA; # (⼈; ⼈; ⼈; 人; 人; ) KANGXI RADICAL MAN
+2F09;2F09;2F09;513F;513F; # (⼉; ⼉; ⼉; 儿; 儿; ) KANGXI RADICAL LEGS
+2F0A;2F0A;2F0A;5165;5165; # (⼊; ⼊; ⼊; 入; 入; ) KANGXI RADICAL ENTER
+2F0B;2F0B;2F0B;516B;516B; # (⼋; ⼋; ⼋; 八; 八; ) KANGXI RADICAL EIGHT
+2F0C;2F0C;2F0C;5182;5182; # (⼌; ⼌; ⼌; 冂; 冂; ) KANGXI RADICAL DOWN BOX
+2F0D;2F0D;2F0D;5196;5196; # (â¼; â¼; â¼; 冖; 冖; ) KANGXI RADICAL COVER
+2F0E;2F0E;2F0E;51AB;51AB; # (⼎; ⼎; ⼎; 冫; 冫; ) KANGXI RADICAL ICE
+2F0F;2F0F;2F0F;51E0;51E0; # (â¼; â¼; â¼; 几; 几; ) KANGXI RADICAL TABLE
+2F10;2F10;2F10;51F5;51F5; # (â¼; â¼; â¼; 凵; 凵; ) KANGXI RADICAL OPEN BOX
+2F11;2F11;2F11;5200;5200; # (⼑; ⼑; ⼑; 刀; 刀; ) KANGXI RADICAL KNIFE
+2F12;2F12;2F12;529B;529B; # (⼒; ⼒; ⼒; 力; 力; ) KANGXI RADICAL POWER
+2F13;2F13;2F13;52F9;52F9; # (⼓; ⼓; ⼓; 勹; 勹; ) KANGXI RADICAL WRAP
+2F14;2F14;2F14;5315;5315; # (⼔; ⼔; ⼔; 匕; 匕; ) KANGXI RADICAL SPOON
+2F15;2F15;2F15;531A;531A; # (⼕; ⼕; ⼕; 匚; 匚; ) KANGXI RADICAL RIGHT OPEN BOX
+2F16;2F16;2F16;5338;5338; # (⼖; ⼖; ⼖; 匸; 匸; ) KANGXI RADICAL HIDING ENCLOSURE
+2F17;2F17;2F17;5341;5341; # (â¼—; â¼—; â¼—; å; å; ) KANGXI RADICAL TEN
+2F18;2F18;2F18;535C;535C; # (⼘; ⼘; ⼘; åœ; åœ; ) KANGXI RADICAL DIVINATION
+2F19;2F19;2F19;5369;5369; # (â¼™; â¼™; â¼™; å©; å©; ) KANGXI RADICAL SEAL
+2F1A;2F1A;2F1A;5382;5382; # (⼚; ⼚; ⼚; 厂; 厂; ) KANGXI RADICAL CLIFF
+2F1B;2F1B;2F1B;53B6;53B6; # (⼛; ⼛; ⼛; 厶; 厶; ) KANGXI RADICAL PRIVATE
+2F1C;2F1C;2F1C;53C8;53C8; # (⼜; ⼜; ⼜; åˆ; åˆ; ) KANGXI RADICAL AGAIN
+2F1D;2F1D;2F1D;53E3;53E3; # (â¼; â¼; â¼; å£; å£; ) KANGXI RADICAL MOUTH
+2F1E;2F1E;2F1E;56D7;56D7; # (⼞; ⼞; ⼞; 囗; 囗; ) KANGXI RADICAL ENCLOSURE
+2F1F;2F1F;2F1F;571F;571F; # (⼟; ⼟; ⼟; 土; 土; ) KANGXI RADICAL EARTH
+2F20;2F20;2F20;58EB;58EB; # (⼠; ⼠; ⼠; 士; 士; ) KANGXI RADICAL SCHOLAR
+2F21;2F21;2F21;5902;5902; # (⼡; ⼡; ⼡; 夂; 夂; ) KANGXI RADICAL GO
+2F22;2F22;2F22;590A;590A; # (⼢; ⼢; ⼢; 夊; 夊; ) KANGXI RADICAL GO SLOWLY
+2F23;2F23;2F23;5915;5915; # (⼣; ⼣; ⼣; 夕; 夕; ) KANGXI RADICAL EVENING
+2F24;2F24;2F24;5927;5927; # (⼤; ⼤; ⼤; 大; 大; ) KANGXI RADICAL BIG
+2F25;2F25;2F25;5973;5973; # (⼥; ⼥; ⼥; 女; 女; ) KANGXI RADICAL WOMAN
+2F26;2F26;2F26;5B50;5B50; # (⼦; ⼦; ⼦; å­; å­; ) KANGXI RADICAL CHILD
+2F27;2F27;2F27;5B80;5B80; # (⼧; ⼧; ⼧; 宀; 宀; ) KANGXI RADICAL ROOF
+2F28;2F28;2F28;5BF8;5BF8; # (⼨; ⼨; ⼨; 寸; 寸; ) KANGXI RADICAL INCH
+2F29;2F29;2F29;5C0F;5C0F; # (⼩; ⼩; ⼩; å°; å°; ) KANGXI RADICAL SMALL
+2F2A;2F2A;2F2A;5C22;5C22; # (⼪; ⼪; ⼪; 尢; 尢; ) KANGXI RADICAL LAME
+2F2B;2F2B;2F2B;5C38;5C38; # (⼫; ⼫; ⼫; 尸; 尸; ) KANGXI RADICAL CORPSE
+2F2C;2F2C;2F2C;5C6E;5C6E; # (⼬; ⼬; ⼬; 屮; 屮; ) KANGXI RADICAL SPROUT
+2F2D;2F2D;2F2D;5C71;5C71; # (â¼­; â¼­; â¼­; å±±; å±±; ) KANGXI RADICAL MOUNTAIN
+2F2E;2F2E;2F2E;5DDB;5DDB; # (â¼®; â¼®; â¼®; å·›; å·›; ) KANGXI RADICAL RIVER
+2F2F;2F2F;2F2F;5DE5;5DE5; # (⼯; ⼯; ⼯; 工; 工; ) KANGXI RADICAL WORK
+2F30;2F30;2F30;5DF1;5DF1; # (â¼°; â¼°; â¼°; å·±; å·±; ) KANGXI RADICAL ONESELF
+2F31;2F31;2F31;5DFE;5DFE; # (â¼±; â¼±; â¼±; å·¾; å·¾; ) KANGXI RADICAL TURBAN
+2F32;2F32;2F32;5E72;5E72; # (â¼²; â¼²; â¼²; å¹²; å¹²; ) KANGXI RADICAL DRY
+2F33;2F33;2F33;5E7A;5E7A; # (⼳; ⼳; ⼳; 幺; 幺; ) KANGXI RADICAL SHORT THREAD
+2F34;2F34;2F34;5E7F;5E7F; # (⼴; ⼴; ⼴; 广; 广; ) KANGXI RADICAL DOTTED CLIFF
+2F35;2F35;2F35;5EF4;5EF4; # (â¼µ; â¼µ; â¼µ; å»´; å»´; ) KANGXI RADICAL LONG STRIDE
+2F36;2F36;2F36;5EFE;5EFE; # (⼶; ⼶; ⼶; 廾; 廾; ) KANGXI RADICAL TWO HANDS
+2F37;2F37;2F37;5F0B;5F0B; # (⼷; ⼷; ⼷; 弋; 弋; ) KANGXI RADICAL SHOOT
+2F38;2F38;2F38;5F13;5F13; # (⼸; ⼸; ⼸; 弓; 弓; ) KANGXI RADICAL BOW
+2F39;2F39;2F39;5F50;5F50; # (â¼¹; â¼¹; â¼¹; å½; å½; ) KANGXI RADICAL SNOUT
+2F3A;2F3A;2F3A;5F61;5F61; # (⼺; ⼺; ⼺; 彡; 彡; ) KANGXI RADICAL BRISTLE
+2F3B;2F3B;2F3B;5F73;5F73; # (â¼»; â¼»; â¼»; å½³; å½³; ) KANGXI RADICAL STEP
+2F3C;2F3C;2F3C;5FC3;5FC3; # (⼼; ⼼; ⼼; 心; 心; ) KANGXI RADICAL HEART
+2F3D;2F3D;2F3D;6208;6208; # (⼽; ⼽; ⼽; 戈; 戈; ) KANGXI RADICAL HALBERD
+2F3E;2F3E;2F3E;6236;6236; # (⼾; ⼾; ⼾; 戶; 戶; ) KANGXI RADICAL DOOR
+2F3F;2F3F;2F3F;624B;624B; # (⼿; ⼿; ⼿; 手; 手; ) KANGXI RADICAL HAND
+2F40;2F40;2F40;652F;652F; # (⽀; ⽀; ⽀; 支; 支; ) KANGXI RADICAL BRANCH
+2F41;2F41;2F41;6534;6534; # (â½; â½; â½; æ”´; æ”´; ) KANGXI RADICAL RAP
+2F42;2F42;2F42;6587;6587; # (⽂; ⽂; ⽂; 文; 文; ) KANGXI RADICAL SCRIPT
+2F43;2F43;2F43;6597;6597; # (⽃; ⽃; ⽃; 斗; 斗; ) KANGXI RADICAL DIPPER
+2F44;2F44;2F44;65A4;65A4; # (⽄; ⽄; ⽄; 斤; 斤; ) KANGXI RADICAL AXE
+2F45;2F45;2F45;65B9;65B9; # (â½…; â½…; â½…; æ–¹; æ–¹; ) KANGXI RADICAL SQUARE
+2F46;2F46;2F46;65E0;65E0; # (⽆; ⽆; ⽆; 无; 无; ) KANGXI RADICAL NOT
+2F47;2F47;2F47;65E5;65E5; # (⽇; ⽇; ⽇; 日; 日; ) KANGXI RADICAL SUN
+2F48;2F48;2F48;66F0;66F0; # (⽈; ⽈; ⽈; 曰; 曰; ) KANGXI RADICAL SAY
+2F49;2F49;2F49;6708;6708; # (⽉; ⽉; ⽉; 月; 月; ) KANGXI RADICAL MOON
+2F4A;2F4A;2F4A;6728;6728; # (⽊; ⽊; ⽊; 木; 木; ) KANGXI RADICAL TREE
+2F4B;2F4B;2F4B;6B20;6B20; # (⽋; ⽋; ⽋; 欠; 欠; ) KANGXI RADICAL LACK
+2F4C;2F4C;2F4C;6B62;6B62; # (⽌; ⽌; ⽌; 止; 止; ) KANGXI RADICAL STOP
+2F4D;2F4D;2F4D;6B79;6B79; # (â½; â½; â½; æ­¹; æ­¹; ) KANGXI RADICAL DEATH
+2F4E;2F4E;2F4E;6BB3;6BB3; # (⽎; ⽎; ⽎; 殳; 殳; ) KANGXI RADICAL WEAPON
+2F4F;2F4F;2F4F;6BCB;6BCB; # (â½; â½; â½; 毋; 毋; ) KANGXI RADICAL DO NOT
+2F50;2F50;2F50;6BD4;6BD4; # (â½; â½; â½; 比; 比; ) KANGXI RADICAL COMPARE
+2F51;2F51;2F51;6BDB;6BDB; # (⽑; ⽑; ⽑; 毛; 毛; ) KANGXI RADICAL FUR
+2F52;2F52;2F52;6C0F;6C0F; # (â½’; â½’; â½’; æ°; æ°; ) KANGXI RADICAL CLAN
+2F53;2F53;2F53;6C14;6C14; # (⽓; ⽓; ⽓; 气; 气; ) KANGXI RADICAL STEAM
+2F54;2F54;2F54;6C34;6C34; # (â½”; â½”; â½”; æ°´; æ°´; ) KANGXI RADICAL WATER
+2F55;2F55;2F55;706B;706B; # (⽕; ⽕; ⽕; ç«; ç«; ) KANGXI RADICAL FIRE
+2F56;2F56;2F56;722A;722A; # (⽖; ⽖; ⽖; 爪; 爪; ) KANGXI RADICAL CLAW
+2F57;2F57;2F57;7236;7236; # (⽗; ⽗; ⽗; 父; 父; ) KANGXI RADICAL FATHER
+2F58;2F58;2F58;723B;723B; # (⽘; ⽘; ⽘; 爻; 爻; ) KANGXI RADICAL DOUBLE X
+2F59;2F59;2F59;723F;723F; # (⽙; ⽙; ⽙; 爿; 爿; ) KANGXI RADICAL HALF TREE TRUNK
+2F5A;2F5A;2F5A;7247;7247; # (⽚; ⽚; ⽚; 片; 片; ) KANGXI RADICAL SLICE
+2F5B;2F5B;2F5B;7259;7259; # (⽛; ⽛; ⽛; 牙; 牙; ) KANGXI RADICAL FANG
+2F5C;2F5C;2F5C;725B;725B; # (⽜; ⽜; ⽜; 牛; 牛; ) KANGXI RADICAL COW
+2F5D;2F5D;2F5D;72AC;72AC; # (â½; â½; â½; 犬; 犬; ) KANGXI RADICAL DOG
+2F5E;2F5E;2F5E;7384;7384; # (⽞; ⽞; ⽞; 玄; 玄; ) KANGXI RADICAL PROFOUND
+2F5F;2F5F;2F5F;7389;7389; # (⽟; ⽟; ⽟; 玉; 玉; ) KANGXI RADICAL JADE
+2F60;2F60;2F60;74DC;74DC; # (⽠; ⽠; ⽠; 瓜; 瓜; ) KANGXI RADICAL MELON
+2F61;2F61;2F61;74E6;74E6; # (⽡; ⽡; ⽡; 瓦; 瓦; ) KANGXI RADICAL TILE
+2F62;2F62;2F62;7518;7518; # (⽢; ⽢; ⽢; 甘; 甘; ) KANGXI RADICAL SWEET
+2F63;2F63;2F63;751F;751F; # (⽣; ⽣; ⽣; 生; 生; ) KANGXI RADICAL LIFE
+2F64;2F64;2F64;7528;7528; # (⽤; ⽤; ⽤; 用; 用; ) KANGXI RADICAL USE
+2F65;2F65;2F65;7530;7530; # (â½¥; â½¥; â½¥; ç”°; ç”°; ) KANGXI RADICAL FIELD
+2F66;2F66;2F66;758B;758B; # (⽦; ⽦; ⽦; 疋; 疋; ) KANGXI RADICAL BOLT OF CLOTH
+2F67;2F67;2F67;7592;7592; # (⽧; ⽧; ⽧; 疒; 疒; ) KANGXI RADICAL SICKNESS
+2F68;2F68;2F68;7676;7676; # (⽨; ⽨; ⽨; 癶; 癶; ) KANGXI RADICAL DOTTED TENT
+2F69;2F69;2F69;767D;767D; # (⽩; ⽩; ⽩; 白; 白; ) KANGXI RADICAL WHITE
+2F6A;2F6A;2F6A;76AE;76AE; # (⽪; ⽪; ⽪; 皮; 皮; ) KANGXI RADICAL SKIN
+2F6B;2F6B;2F6B;76BF;76BF; # (⽫; ⽫; ⽫; 皿; 皿; ) KANGXI RADICAL DISH
+2F6C;2F6C;2F6C;76EE;76EE; # (⽬; ⽬; ⽬; 目; 目; ) KANGXI RADICAL EYE
+2F6D;2F6D;2F6D;77DB;77DB; # (⽭; ⽭; ⽭; 矛; 矛; ) KANGXI RADICAL SPEAR
+2F6E;2F6E;2F6E;77E2;77E2; # (⽮; ⽮; ⽮; 矢; 矢; ) KANGXI RADICAL ARROW
+2F6F;2F6F;2F6F;77F3;77F3; # (⽯; ⽯; ⽯; 石; 石; ) KANGXI RADICAL STONE
+2F70;2F70;2F70;793A;793A; # (⽰; ⽰; ⽰; 示; 示; ) KANGXI RADICAL SPIRIT
+2F71;2F71;2F71;79B8;79B8; # (⽱; ⽱; ⽱; 禸; 禸; ) KANGXI RADICAL TRACK
+2F72;2F72;2F72;79BE;79BE; # (⽲; ⽲; ⽲; 禾; 禾; ) KANGXI RADICAL GRAIN
+2F73;2F73;2F73;7A74;7A74; # (â½³; â½³; â½³; ç©´; ç©´; ) KANGXI RADICAL CAVE
+2F74;2F74;2F74;7ACB;7ACB; # (â½´; â½´; â½´; ç«‹; ç«‹; ) KANGXI RADICAL STAND
+2F75;2F75;2F75;7AF9;7AF9; # (⽵; ⽵; ⽵; 竹; 竹; ) KANGXI RADICAL BAMBOO
+2F76;2F76;2F76;7C73;7C73; # (⽶; ⽶; ⽶; 米; 米; ) KANGXI RADICAL RICE
+2F77;2F77;2F77;7CF8;7CF8; # (⽷; ⽷; ⽷; 糸; 糸; ) KANGXI RADICAL SILK
+2F78;2F78;2F78;7F36;7F36; # (⽸; ⽸; ⽸; 缶; 缶; ) KANGXI RADICAL JAR
+2F79;2F79;2F79;7F51;7F51; # (⽹; ⽹; ⽹; 网; 网; ) KANGXI RADICAL NET
+2F7A;2F7A;2F7A;7F8A;7F8A; # (⽺; ⽺; ⽺; 羊; 羊; ) KANGXI RADICAL SHEEP
+2F7B;2F7B;2F7B;7FBD;7FBD; # (â½»; â½»; â½»; ç¾½; ç¾½; ) KANGXI RADICAL FEATHER
+2F7C;2F7C;2F7C;8001;8001; # (â½¼; â½¼; â½¼; è€; è€; ) KANGXI RADICAL OLD
+2F7D;2F7D;2F7D;800C;800C; # (⽽; ⽽; ⽽; 而; 而; ) KANGXI RADICAL AND
+2F7E;2F7E;2F7E;8012;8012; # (⽾; ⽾; ⽾; 耒; 耒; ) KANGXI RADICAL PLOW
+2F7F;2F7F;2F7F;8033;8033; # (⽿; ⽿; ⽿; 耳; 耳; ) KANGXI RADICAL EAR
+2F80;2F80;2F80;807F;807F; # (â¾€; â¾€; â¾€; è¿; è¿; ) KANGXI RADICAL BRUSH
+2F81;2F81;2F81;8089;8089; # (â¾; â¾; â¾; 肉; 肉; ) KANGXI RADICAL MEAT
+2F82;2F82;2F82;81E3;81E3; # (⾂; ⾂; ⾂; 臣; 臣; ) KANGXI RADICAL MINISTER
+2F83;2F83;2F83;81EA;81EA; # (⾃; ⾃; ⾃; 自; 自; ) KANGXI RADICAL SELF
+2F84;2F84;2F84;81F3;81F3; # (⾄; ⾄; ⾄; 至; 至; ) KANGXI RADICAL ARRIVE
+2F85;2F85;2F85;81FC;81FC; # (⾅; ⾅; ⾅; 臼; 臼; ) KANGXI RADICAL MORTAR
+2F86;2F86;2F86;820C;820C; # (⾆; ⾆; ⾆; 舌; 舌; ) KANGXI RADICAL TONGUE
+2F87;2F87;2F87;821B;821B; # (⾇; ⾇; ⾇; 舛; 舛; ) KANGXI RADICAL OPPOSE
+2F88;2F88;2F88;821F;821F; # (⾈; ⾈; ⾈; 舟; 舟; ) KANGXI RADICAL BOAT
+2F89;2F89;2F89;826E;826E; # (⾉; ⾉; ⾉; 艮; 艮; ) KANGXI RADICAL STOPPING
+2F8A;2F8A;2F8A;8272;8272; # (⾊; ⾊; ⾊; 色; 色; ) KANGXI RADICAL COLOR
+2F8B;2F8B;2F8B;8278;8278; # (⾋; ⾋; ⾋; 艸; 艸; ) KANGXI RADICAL GRASS
+2F8C;2F8C;2F8C;864D;864D; # (⾌; ⾌; ⾌; è™; è™; ) KANGXI RADICAL TIGER
+2F8D;2F8D;2F8D;866B;866B; # (â¾; â¾; â¾; 虫; 虫; ) KANGXI RADICAL INSECT
+2F8E;2F8E;2F8E;8840;8840; # (⾎; ⾎; ⾎; 血; 血; ) KANGXI RADICAL BLOOD
+2F8F;2F8F;2F8F;884C;884C; # (â¾; â¾; â¾; è¡Œ; è¡Œ; ) KANGXI RADICAL WALK ENCLOSURE
+2F90;2F90;2F90;8863;8863; # (â¾; â¾; â¾; è¡£; è¡£; ) KANGXI RADICAL CLOTHES
+2F91;2F91;2F91;897E;897E; # (⾑; ⾑; ⾑; 襾; 襾; ) KANGXI RADICAL WEST
+2F92;2F92;2F92;898B;898B; # (⾒; ⾒; ⾒; 見; 見; ) KANGXI RADICAL SEE
+2F93;2F93;2F93;89D2;89D2; # (⾓; ⾓; ⾓; 角; 角; ) KANGXI RADICAL HORN
+2F94;2F94;2F94;8A00;8A00; # (⾔; ⾔; ⾔; 言; 言; ) KANGXI RADICAL SPEECH
+2F95;2F95;2F95;8C37;8C37; # (⾕; ⾕; ⾕; 谷; 谷; ) KANGXI RADICAL VALLEY
+2F96;2F96;2F96;8C46;8C46; # (⾖; ⾖; ⾖; 豆; 豆; ) KANGXI RADICAL BEAN
+2F97;2F97;2F97;8C55;8C55; # (⾗; ⾗; ⾗; 豕; 豕; ) KANGXI RADICAL PIG
+2F98;2F98;2F98;8C78;8C78; # (⾘; ⾘; ⾘; 豸; 豸; ) KANGXI RADICAL BADGER
+2F99;2F99;2F99;8C9D;8C9D; # (â¾™; â¾™; â¾™; è²; è²; ) KANGXI RADICAL SHELL
+2F9A;2F9A;2F9A;8D64;8D64; # (⾚; ⾚; ⾚; 赤; 赤; ) KANGXI RADICAL RED
+2F9B;2F9B;2F9B;8D70;8D70; # (â¾›; â¾›; â¾›; èµ°; èµ°; ) KANGXI RADICAL RUN
+2F9C;2F9C;2F9C;8DB3;8DB3; # (⾜; ⾜; ⾜; 足; 足; ) KANGXI RADICAL FOOT
+2F9D;2F9D;2F9D;8EAB;8EAB; # (â¾; â¾; â¾; 身; 身; ) KANGXI RADICAL BODY
+2F9E;2F9E;2F9E;8ECA;8ECA; # (⾞; ⾞; ⾞; 車; 車; ) KANGXI RADICAL CART
+2F9F;2F9F;2F9F;8F9B;8F9B; # (⾟; ⾟; ⾟; 辛; 辛; ) KANGXI RADICAL BITTER
+2FA0;2FA0;2FA0;8FB0;8FB0; # (â¾ ; â¾ ; â¾ ; è¾°; è¾°; ) KANGXI RADICAL MORNING
+2FA1;2FA1;2FA1;8FB5;8FB5; # (⾡; ⾡; ⾡; 辵; 辵; ) KANGXI RADICAL WALK
+2FA2;2FA2;2FA2;9091;9091; # (â¾¢; â¾¢; â¾¢; é‚‘; é‚‘; ) KANGXI RADICAL CITY
+2FA3;2FA3;2FA3;9149;9149; # (â¾£; â¾£; â¾£; é…‰; é…‰; ) KANGXI RADICAL WINE
+2FA4;2FA4;2FA4;91C6;91C6; # (⾤; ⾤; ⾤; 釆; 釆; ) KANGXI RADICAL DISTINGUISH
+2FA5;2FA5;2FA5;91CC;91CC; # (⾥; ⾥; ⾥; 里; 里; ) KANGXI RADICAL VILLAGE
+2FA6;2FA6;2FA6;91D1;91D1; # (⾦; ⾦; ⾦; 金; 金; ) KANGXI RADICAL GOLD
+2FA7;2FA7;2FA7;9577;9577; # (⾧; ⾧; ⾧; 長; 長; ) KANGXI RADICAL LONG
+2FA8;2FA8;2FA8;9580;9580; # (⾨; ⾨; ⾨; 門; 門; ) KANGXI RADICAL GATE
+2FA9;2FA9;2FA9;961C;961C; # (⾩; ⾩; ⾩; 阜; 阜; ) KANGXI RADICAL MOUND
+2FAA;2FAA;2FAA;96B6;96B6; # (⾪; ⾪; ⾪; 隶; 隶; ) KANGXI RADICAL SLAVE
+2FAB;2FAB;2FAB;96B9;96B9; # (⾫; ⾫; ⾫; 隹; 隹; ) KANGXI RADICAL SHORT TAILED BIRD
+2FAC;2FAC;2FAC;96E8;96E8; # (⾬; ⾬; ⾬; 雨; 雨; ) KANGXI RADICAL RAIN
+2FAD;2FAD;2FAD;9751;9751; # (â¾­; â¾­; â¾­; é‘; é‘; ) KANGXI RADICAL BLUE
+2FAE;2FAE;2FAE;975E;975E; # (â¾®; â¾®; â¾®; éž; éž; ) KANGXI RADICAL WRONG
+2FAF;2FAF;2FAF;9762;9762; # (⾯; ⾯; ⾯; é¢; é¢; ) KANGXI RADICAL FACE
+2FB0;2FB0;2FB0;9769;9769; # (â¾°; â¾°; â¾°; é©; é©; ) KANGXI RADICAL LEATHER
+2FB1;2FB1;2FB1;97CB;97CB; # (⾱; ⾱; ⾱; 韋; 韋; ) KANGXI RADICAL TANNED LEATHER
+2FB2;2FB2;2FB2;97ED;97ED; # (⾲; ⾲; ⾲; 韭; 韭; ) KANGXI RADICAL LEEK
+2FB3;2FB3;2FB3;97F3;97F3; # (⾳; ⾳; ⾳; 音; 音; ) KANGXI RADICAL SOUND
+2FB4;2FB4;2FB4;9801;9801; # (â¾´; â¾´; â¾´; é ; é ; ) KANGXI RADICAL LEAF
+2FB5;2FB5;2FB5;98A8;98A8; # (⾵; ⾵; ⾵; 風; 風; ) KANGXI RADICAL WIND
+2FB6;2FB6;2FB6;98DB;98DB; # (⾶; ⾶; ⾶; 飛; 飛; ) KANGXI RADICAL FLY
+2FB7;2FB7;2FB7;98DF;98DF; # (⾷; ⾷; ⾷; 食; 食; ) KANGXI RADICAL EAT
+2FB8;2FB8;2FB8;9996;9996; # (⾸; ⾸; ⾸; 首; 首; ) KANGXI RADICAL HEAD
+2FB9;2FB9;2FB9;9999;9999; # (⾹; ⾹; ⾹; 香; 香; ) KANGXI RADICAL FRAGRANT
+2FBA;2FBA;2FBA;99AC;99AC; # (⾺; ⾺; ⾺; 馬; 馬; ) KANGXI RADICAL HORSE
+2FBB;2FBB;2FBB;9AA8;9AA8; # (⾻; ⾻; ⾻; 骨; 骨; ) KANGXI RADICAL BONE
+2FBC;2FBC;2FBC;9AD8;9AD8; # (⾼; ⾼; ⾼; 高; 高; ) KANGXI RADICAL TALL
+2FBD;2FBD;2FBD;9ADF;9ADF; # (â¾½; â¾½; â¾½; é«Ÿ; é«Ÿ; ) KANGXI RADICAL HAIR
+2FBE;2FBE;2FBE;9B25;9B25; # (⾾; ⾾; ⾾; 鬥; 鬥; ) KANGXI RADICAL FIGHT
+2FBF;2FBF;2FBF;9B2F;9B2F; # (⾿; ⾿; ⾿; 鬯; 鬯; ) KANGXI RADICAL SACRIFICIAL WINE
+2FC0;2FC0;2FC0;9B32;9B32; # (⿀; ⿀; ⿀; 鬲; 鬲; ) KANGXI RADICAL CAULDRON
+2FC1;2FC1;2FC1;9B3C;9B3C; # (â¿; â¿; â¿; 鬼; 鬼; ) KANGXI RADICAL GHOST
+2FC2;2FC2;2FC2;9B5A;9B5A; # (â¿‚; â¿‚; â¿‚; é­š; é­š; ) KANGXI RADICAL FISH
+2FC3;2FC3;2FC3;9CE5;9CE5; # (⿃; ⿃; ⿃; 鳥; 鳥; ) KANGXI RADICAL BIRD
+2FC4;2FC4;2FC4;9E75;9E75; # (â¿„; â¿„; â¿„; é¹µ; é¹µ; ) KANGXI RADICAL SALT
+2FC5;2FC5;2FC5;9E7F;9E7F; # (⿅; ⿅; ⿅; 鹿; 鹿; ) KANGXI RADICAL DEER
+2FC6;2FC6;2FC6;9EA5;9EA5; # (⿆; ⿆; ⿆; 麥; 麥; ) KANGXI RADICAL WHEAT
+2FC7;2FC7;2FC7;9EBB;9EBB; # (⿇; ⿇; ⿇; 麻; 麻; ) KANGXI RADICAL HEMP
+2FC8;2FC8;2FC8;9EC3;9EC3; # (⿈; ⿈; ⿈; 黃; 黃; ) KANGXI RADICAL YELLOW
+2FC9;2FC9;2FC9;9ECD;9ECD; # (⿉; ⿉; ⿉; é»; é»; ) KANGXI RADICAL MILLET
+2FCA;2FCA;2FCA;9ED1;9ED1; # (⿊; ⿊; ⿊; 黑; 黑; ) KANGXI RADICAL BLACK
+2FCB;2FCB;2FCB;9EF9;9EF9; # (⿋; ⿋; ⿋; 黹; 黹; ) KANGXI RADICAL EMBROIDERY
+2FCC;2FCC;2FCC;9EFD;9EFD; # (⿌; ⿌; ⿌; 黽; 黽; ) KANGXI RADICAL FROG
+2FCD;2FCD;2FCD;9F0E;9F0E; # (â¿; â¿; â¿; 鼎; 鼎; ) KANGXI RADICAL TRIPOD
+2FCE;2FCE;2FCE;9F13;9F13; # (⿎; ⿎; ⿎; 鼓; 鼓; ) KANGXI RADICAL DRUM
+2FCF;2FCF;2FCF;9F20;9F20; # (â¿; â¿; â¿; é¼ ; é¼ ; ) KANGXI RADICAL RAT
+2FD0;2FD0;2FD0;9F3B;9F3B; # (â¿; â¿; â¿; é¼»; é¼»; ) KANGXI RADICAL NOSE
+2FD1;2FD1;2FD1;9F4A;9F4A; # (⿑; ⿑; ⿑; 齊; 齊; ) KANGXI RADICAL EVEN
+2FD2;2FD2;2FD2;9F52;9F52; # (â¿’; â¿’; â¿’; é½’; é½’; ) KANGXI RADICAL TOOTH
+2FD3;2FD3;2FD3;9F8D;9F8D; # (â¿“; â¿“; â¿“; é¾; é¾; ) KANGXI RADICAL DRAGON
+2FD4;2FD4;2FD4;9F9C;9F9C; # (⿔; ⿔; ⿔; 龜; 龜; ) KANGXI RADICAL TURTLE
+2FD5;2FD5;2FD5;9FA0;9FA0; # (â¿•; â¿•; â¿•; é¾ ; é¾ ; ) KANGXI RADICAL FLUTE
+3000;3000;3000;0020;0020; # ( ;  ;  ; ; ; ) IDEOGRAPHIC SPACE
+3036;3036;3036;3012;3012; # (〶; 〶; 〶; 〒; 〒; ) CIRCLED POSTAL MARK
+3038;3038;3038;5341;5341; # (〸; 〸; 〸; å; å; ) HANGZHOU NUMERAL TEN
+3039;3039;3039;5344;5344; # (〹; 〹; 〹; å„; å„; ) HANGZHOU NUMERAL TWENTY
+303A;303A;303A;5345;5345; # (〺; 〺; 〺; å…; å…; ) HANGZHOU NUMERAL THIRTY
+304C;304C;304B 3099;304C;304B 3099; # (ãŒ; ãŒ; ã‹â—Œã‚™; ãŒ; ã‹â—Œã‚™; ) HIRAGANA LETTER GA
+304E;304E;304D 3099;304E;304D 3099; # (ãŽ; ãŽ; ã◌゙; ãŽ; ã◌゙; ) HIRAGANA LETTER GI
+3050;3050;304F 3099;3050;304F 3099; # (ã; ã; ã◌゙; ã; ã◌゙; ) HIRAGANA LETTER GU
+3052;3052;3051 3099;3052;3051 3099; # (ã’; ã’; ã‘◌゙; ã’; ã‘◌゙; ) HIRAGANA LETTER GE
+3054;3054;3053 3099;3054;3053 3099; # (ã”; ã”; ã“◌゙; ã”; ã“◌゙; ) HIRAGANA LETTER GO
+3056;3056;3055 3099;3056;3055 3099; # (ã–; ã–; ã•â—Œã‚™; ã–; ã•â—Œã‚™; ) HIRAGANA LETTER ZA
+3058;3058;3057 3099;3058;3057 3099; # (ã˜; ã˜; ã—◌゙; ã˜; ã—◌゙; ) HIRAGANA LETTER ZI
+305A;305A;3059 3099;305A;3059 3099; # (ãš; ãš; ã™â—Œã‚™; ãš; ã™â—Œã‚™; ) HIRAGANA LETTER ZU
+305C;305C;305B 3099;305C;305B 3099; # (ãœ; ãœ; ã›â—Œã‚™; ãœ; ã›â—Œã‚™; ) HIRAGANA LETTER ZE
+305E;305E;305D 3099;305E;305D 3099; # (ãž; ãž; ã◌゙; ãž; ã◌゙; ) HIRAGANA LETTER ZO
+3060;3060;305F 3099;3060;305F 3099; # (ã ; ã ; ãŸâ—Œã‚™; ã ; ãŸâ—Œã‚™; ) HIRAGANA LETTER DA
+3062;3062;3061 3099;3062;3061 3099; # (ã¢; ã¢; ã¡â—Œã‚™; ã¢; ã¡â—Œã‚™; ) HIRAGANA LETTER DI
+3065;3065;3064 3099;3065;3064 3099; # (ã¥; ã¥; ã¤â—Œã‚™; ã¥; ã¤â—Œã‚™; ) HIRAGANA LETTER DU
+3067;3067;3066 3099;3067;3066 3099; # (ã§; ã§; ã¦â—Œã‚™; ã§; ã¦â—Œã‚™; ) HIRAGANA LETTER DE
+3069;3069;3068 3099;3069;3068 3099; # (ã©; ã©; ã¨â—Œã‚™; ã©; ã¨â—Œã‚™; ) HIRAGANA LETTER DO
+3070;3070;306F 3099;3070;306F 3099; # (ã°; ã°; ã¯â—Œã‚™; ã°; ã¯â—Œã‚™; ) HIRAGANA LETTER BA
+3071;3071;306F 309A;3071;306F 309A; # (ã±; ã±; ã¯â—Œã‚š; ã±; ã¯â—Œã‚š; ) HIRAGANA LETTER PA
+3073;3073;3072 3099;3073;3072 3099; # (ã³; ã³; ã²â—Œã‚™; ã³; ã²â—Œã‚™; ) HIRAGANA LETTER BI
+3074;3074;3072 309A;3074;3072 309A; # (ã´; ã´; ã²â—Œã‚š; ã´; ã²â—Œã‚š; ) HIRAGANA LETTER PI
+3076;3076;3075 3099;3076;3075 3099; # (ã¶; ã¶; ãµâ—Œã‚™; ã¶; ãµâ—Œã‚™; ) HIRAGANA LETTER BU
+3077;3077;3075 309A;3077;3075 309A; # (ã·; ã·; ãµâ—Œã‚š; ã·; ãµâ—Œã‚š; ) HIRAGANA LETTER PU
+3079;3079;3078 3099;3079;3078 3099; # (ã¹; ã¹; ã¸â—Œã‚™; ã¹; ã¸â—Œã‚™; ) HIRAGANA LETTER BE
+307A;307A;3078 309A;307A;3078 309A; # (ãº; ãº; ã¸â—Œã‚š; ãº; ã¸â—Œã‚š; ) HIRAGANA LETTER PE
+307C;307C;307B 3099;307C;307B 3099; # (ã¼; ã¼; ã»â—Œã‚™; ã¼; ã»â—Œã‚™; ) HIRAGANA LETTER BO
+307D;307D;307B 309A;307D;307B 309A; # (ã½; ã½; ã»â—Œã‚š; ã½; ã»â—Œã‚š; ) HIRAGANA LETTER PO
+3094;3094;3046 3099;3094;3046 3099; # (ã‚”; ã‚”; ã†â—Œã‚™; ã‚”; ã†â—Œã‚™; ) HIRAGANA LETTER VU
+309B;309B;309B;0020 3099;0020 3099; # (゛; ゛; ゛; ◌゙; ◌゙; ) KATAKANA-HIRAGANA VOICED SOUND MARK
+309C;309C;309C;0020 309A;0020 309A; # (゜; ゜; ゜; ◌゚; ◌゚; ) KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309E;309E;309D 3099;309E;309D 3099; # (ã‚ž; ã‚ž; ã‚◌゙; ã‚ž; ã‚◌゙; ) HIRAGANA VOICED ITERATION MARK
+309F;309F;309F;3088 308A;3088 308A; # (ゟ; ゟ; ゟ; より; より; ) HIRAGANA DIGRAPH YORI
+30AC;30AC;30AB 3099;30AC;30AB 3099; # (ガ; ガ; カ◌゙; ガ; カ◌゙; ) KATAKANA LETTER GA
+30AE;30AE;30AD 3099;30AE;30AD 3099; # (ギ; ギ; キ◌゙; ギ; キ◌゙; ) KATAKANA LETTER GI
+30B0;30B0;30AF 3099;30B0;30AF 3099; # (グ; グ; ク◌゙; グ; ク◌゙; ) KATAKANA LETTER GU
+30B2;30B2;30B1 3099;30B2;30B1 3099; # (ゲ; ゲ; ケ◌゙; ゲ; ケ◌゙; ) KATAKANA LETTER GE
+30B4;30B4;30B3 3099;30B4;30B3 3099; # (ゴ; ゴ; コ◌゙; ゴ; コ◌゙; ) KATAKANA LETTER GO
+30B6;30B6;30B5 3099;30B6;30B5 3099; # (ザ; ザ; サ◌゙; ザ; サ◌゙; ) KATAKANA LETTER ZA
+30B8;30B8;30B7 3099;30B8;30B7 3099; # (ジ; ジ; シ◌゙; ジ; シ◌゙; ) KATAKANA LETTER ZI
+30BA;30BA;30B9 3099;30BA;30B9 3099; # (ズ; ズ; ス◌゙; ズ; ス◌゙; ) KATAKANA LETTER ZU
+30BC;30BC;30BB 3099;30BC;30BB 3099; # (ゼ; ゼ; セ◌゙; ゼ; セ◌゙; ) KATAKANA LETTER ZE
+30BE;30BE;30BD 3099;30BE;30BD 3099; # (ゾ; ゾ; ソ◌゙; ゾ; ソ◌゙; ) KATAKANA LETTER ZO
+30C0;30C0;30BF 3099;30C0;30BF 3099; # (ダ; ダ; タ◌゙; ダ; タ◌゙; ) KATAKANA LETTER DA
+30C2;30C2;30C1 3099;30C2;30C1 3099; # (ヂ; ヂ; ãƒâ—Œã‚™; ヂ; ãƒâ—Œã‚™; ) KATAKANA LETTER DI
+30C5;30C5;30C4 3099;30C5;30C4 3099; # (ヅ; ヅ; ツ◌゙; ヅ; ツ◌゙; ) KATAKANA LETTER DU
+30C7;30C7;30C6 3099;30C7;30C6 3099; # (デ; デ; テ◌゙; デ; テ◌゙; ) KATAKANA LETTER DE
+30C9;30C9;30C8 3099;30C9;30C8 3099; # (ド; ド; ト◌゙; ド; ト◌゙; ) KATAKANA LETTER DO
+30D0;30D0;30CF 3099;30D0;30CF 3099; # (ãƒ; ãƒ; ãƒâ—Œã‚™; ãƒ; ãƒâ—Œã‚™; ) KATAKANA LETTER BA
+30D1;30D1;30CF 309A;30D1;30CF 309A; # (パ; パ; ãƒâ—Œã‚š; パ; ãƒâ—Œã‚š; ) KATAKANA LETTER PA
+30D3;30D3;30D2 3099;30D3;30D2 3099; # (ビ; ビ; ヒ◌゙; ビ; ヒ◌゙; ) KATAKANA LETTER BI
+30D4;30D4;30D2 309A;30D4;30D2 309A; # (ピ; ピ; ヒ◌゚; ピ; ヒ◌゚; ) KATAKANA LETTER PI
+30D6;30D6;30D5 3099;30D6;30D5 3099; # (ブ; ブ; フ◌゙; ブ; フ◌゙; ) KATAKANA LETTER BU
+30D7;30D7;30D5 309A;30D7;30D5 309A; # (プ; プ; フ◌゚; プ; フ◌゚; ) KATAKANA LETTER PU
+30D9;30D9;30D8 3099;30D9;30D8 3099; # (ベ; ベ; ヘ◌゙; ベ; ヘ◌゙; ) KATAKANA LETTER BE
+30DA;30DA;30D8 309A;30DA;30D8 309A; # (ペ; ペ; ヘ◌゚; ペ; ヘ◌゚; ) KATAKANA LETTER PE
+30DC;30DC;30DB 3099;30DC;30DB 3099; # (ボ; ボ; ホ◌゙; ボ; ホ◌゙; ) KATAKANA LETTER BO
+30DD;30DD;30DB 309A;30DD;30DB 309A; # (ãƒ; ãƒ; ホ◌゚; ãƒ; ホ◌゚; ) KATAKANA LETTER PO
+30F4;30F4;30A6 3099;30F4;30A6 3099; # (ヴ; ヴ; ウ◌゙; ヴ; ウ◌゙; ) KATAKANA LETTER VU
+30F7;30F7;30EF 3099;30F7;30EF 3099; # (ヷ; ヷ; ワ◌゙; ヷ; ワ◌゙; ) KATAKANA LETTER VA
+30F8;30F8;30F0 3099;30F8;30F0 3099; # (ヸ; ヸ; ヰ◌゙; ヸ; ヰ◌゙; ) KATAKANA LETTER VI
+30F9;30F9;30F1 3099;30F9;30F1 3099; # (ヹ; ヹ; ヱ◌゙; ヹ; ヱ◌゙; ) KATAKANA LETTER VE
+30FA;30FA;30F2 3099;30FA;30F2 3099; # (ヺ; ヺ; ヲ◌゙; ヺ; ヲ◌゙; ) KATAKANA LETTER VO
+30FE;30FE;30FD 3099;30FE;30FD 3099; # (ヾ; ヾ; ヽ◌゙; ヾ; ヽ◌゙; ) KATAKANA VOICED ITERATION MARK
+30FF;30FF;30FF;30B3 30C8;30B3 30C8; # (ヿ; ヿ; ヿ; コト; コト; ) KATAKANA DIGRAPH KOTO
+3131;3131;3131;1100;1100; # (ㄱ; ㄱ; ㄱ; ᄀ; ᄀ; ) HANGUL LETTER KIYEOK
+3132;3132;3132;1101;1101; # (ㄲ; ㄲ; ㄲ; á„; á„; ) HANGUL LETTER SSANGKIYEOK
+3133;3133;3133;11AA;11AA; # (ㄳ; ㄳ; ㄳ; ᆪ; ᆪ; ) HANGUL LETTER KIYEOK-SIOS
+3134;3134;3134;1102;1102; # (ã„´; ã„´; ã„´; á„‚; á„‚; ) HANGUL LETTER NIEUN
+3135;3135;3135;11AC;11AC; # (ㄵ; ㄵ; ㄵ; ᆬ; ᆬ; ) HANGUL LETTER NIEUN-CIEUC
+3136;3136;3136;11AD;11AD; # (ㄶ; ㄶ; ㄶ; ᆭ; ᆭ; ) HANGUL LETTER NIEUN-HIEUH
+3137;3137;3137;1103;1103; # (ㄷ; ㄷ; ㄷ; ᄃ; ᄃ; ) HANGUL LETTER TIKEUT
+3138;3138;3138;1104;1104; # (ㄸ; ㄸ; ㄸ; ᄄ; ᄄ; ) HANGUL LETTER SSANGTIKEUT
+3139;3139;3139;1105;1105; # (ㄹ; ㄹ; ㄹ; ᄅ; ᄅ; ) HANGUL LETTER RIEUL
+313A;313A;313A;11B0;11B0; # (ㄺ; ㄺ; ㄺ; ᆰ; ᆰ; ) HANGUL LETTER RIEUL-KIYEOK
+313B;313B;313B;11B1;11B1; # (ㄻ; ㄻ; ㄻ; ᆱ; ᆱ; ) HANGUL LETTER RIEUL-MIEUM
+313C;313C;313C;11B2;11B2; # (ㄼ; ㄼ; ㄼ; ᆲ; ᆲ; ) HANGUL LETTER RIEUL-PIEUP
+313D;313D;313D;11B3;11B3; # (ㄽ; ㄽ; ㄽ; ᆳ; ᆳ; ) HANGUL LETTER RIEUL-SIOS
+313E;313E;313E;11B4;11B4; # (ㄾ; ㄾ; ㄾ; ᆴ; ᆴ; ) HANGUL LETTER RIEUL-THIEUTH
+313F;313F;313F;11B5;11B5; # (ㄿ; ㄿ; ㄿ; ᆵ; ᆵ; ) HANGUL LETTER RIEUL-PHIEUPH
+3140;3140;3140;111A;111A; # (ã…€; ã…€; ã…€; á„š; á„š; ) HANGUL LETTER RIEUL-HIEUH
+3141;3141;3141;1106;1106; # (ã…; ã…; ã…; ᄆ; ᄆ; ) HANGUL LETTER MIEUM
+3142;3142;3142;1107;1107; # (ㅂ; ㅂ; ㅂ; ᄇ; ᄇ; ) HANGUL LETTER PIEUP
+3143;3143;3143;1108;1108; # (ㅃ; ㅃ; ㅃ; ᄈ; ᄈ; ) HANGUL LETTER SSANGPIEUP
+3144;3144;3144;1121;1121; # (ã…„; ã…„; ã…„; á„¡; á„¡; ) HANGUL LETTER PIEUP-SIOS
+3145;3145;3145;1109;1109; # (ㅅ; ㅅ; ㅅ; ᄉ; ᄉ; ) HANGUL LETTER SIOS
+3146;3146;3146;110A;110A; # (ã…†; ã…†; ã…†; á„Š; á„Š; ) HANGUL LETTER SSANGSIOS
+3147;3147;3147;110B;110B; # (ã…‡; ã…‡; ã…‡; á„‹; á„‹; ) HANGUL LETTER IEUNG
+3148;3148;3148;110C;110C; # (ㅈ; ㅈ; ㅈ; ᄌ; ᄌ; ) HANGUL LETTER CIEUC
+3149;3149;3149;110D;110D; # (ã…‰; ã…‰; ã…‰; á„; á„; ) HANGUL LETTER SSANGCIEUC
+314A;314A;314A;110E;110E; # (ã…Š; ã…Š; ã…Š; á„Ž; á„Ž; ) HANGUL LETTER CHIEUCH
+314B;314B;314B;110F;110F; # (ã…‹; ã…‹; ã…‹; á„; á„; ) HANGUL LETTER KHIEUKH
+314C;314C;314C;1110;1110; # (ã…Œ; ã…Œ; ã…Œ; á„; á„; ) HANGUL LETTER THIEUTH
+314D;314D;314D;1111;1111; # (ã…; ã…; ã…; á„‘; á„‘; ) HANGUL LETTER PHIEUPH
+314E;314E;314E;1112;1112; # (ã…Ž; ã…Ž; ã…Ž; á„’; á„’; ) HANGUL LETTER HIEUH
+314F;314F;314F;1161;1161; # (ã…; ã…; ã…; á…¡; á…¡; ) HANGUL LETTER A
+3150;3150;3150;1162;1162; # (ã…; ã…; ã…; á…¢; á…¢; ) HANGUL LETTER AE
+3151;3151;3151;1163;1163; # (ã…‘; ã…‘; ã…‘; á…£; á…£; ) HANGUL LETTER YA
+3152;3152;3152;1164;1164; # (ã…’; ã…’; ã…’; á…¤; á…¤; ) HANGUL LETTER YAE
+3153;3153;3153;1165;1165; # (ã…“; ã…“; ã…“; á…¥; á…¥; ) HANGUL LETTER EO
+3154;3154;3154;1166;1166; # (ã…”; ã…”; ã…”; á…¦; á…¦; ) HANGUL LETTER E
+3155;3155;3155;1167;1167; # (ã…•; ã…•; ã…•; á…§; á…§; ) HANGUL LETTER YEO
+3156;3156;3156;1168;1168; # (ã…–; ã…–; ã…–; á…¨; á…¨; ) HANGUL LETTER YE
+3157;3157;3157;1169;1169; # (ã…—; ã…—; ã…—; á…©; á…©; ) HANGUL LETTER O
+3158;3158;3158;116A;116A; # (ã…˜; ã…˜; ã…˜; á…ª; á…ª; ) HANGUL LETTER WA
+3159;3159;3159;116B;116B; # (ã…™; ã…™; ã…™; á…«; á…«; ) HANGUL LETTER WAE
+315A;315A;315A;116C;116C; # (ã…š; ã…š; ã…š; á…¬; á…¬; ) HANGUL LETTER OE
+315B;315B;315B;116D;116D; # (ã…›; ã…›; ã…›; á…­; á…­; ) HANGUL LETTER YO
+315C;315C;315C;116E;116E; # (ㅜ; ㅜ; ㅜ; ᅮ; ᅮ; ) HANGUL LETTER U
+315D;315D;315D;116F;116F; # (ã…; ã…; ã…; á…¯; á…¯; ) HANGUL LETTER WEO
+315E;315E;315E;1170;1170; # (ã…ž; ã…ž; ã…ž; á…°; á…°; ) HANGUL LETTER WE
+315F;315F;315F;1171;1171; # (ã…Ÿ; ã…Ÿ; ã…Ÿ; á…±; á…±; ) HANGUL LETTER WI
+3160;3160;3160;1172;1172; # (ã… ; ã… ; ã… ; á…²; á…²; ) HANGUL LETTER YU
+3161;3161;3161;1173;1173; # (ã…¡; ã…¡; ã…¡; á…³; á…³; ) HANGUL LETTER EU
+3162;3162;3162;1174;1174; # (ã…¢; ã…¢; ã…¢; á…´; á…´; ) HANGUL LETTER YI
+3163;3163;3163;1175;1175; # (ã…£; ã…£; ã…£; á…µ; á…µ; ) HANGUL LETTER I
+3164;3164;3164;1160;1160; # (ã…¤; ã…¤; ã…¤; á… ; á… ; ) HANGUL FILLER
+3165;3165;3165;1114;1114; # (ã…¥; ã…¥; ã…¥; á„”; á„”; ) HANGUL LETTER SSANGNIEUN
+3166;3166;3166;1115;1115; # (ã…¦; ã…¦; ã…¦; á„•; á„•; ) HANGUL LETTER NIEUN-TIKEUT
+3167;3167;3167;11C7;11C7; # (ㅧ; ㅧ; ㅧ; ᇇ; ᇇ; ) HANGUL LETTER NIEUN-SIOS
+3168;3168;3168;11C8;11C8; # (ㅨ; ㅨ; ㅨ; ᇈ; ᇈ; ) HANGUL LETTER NIEUN-PANSIOS
+3169;3169;3169;11CC;11CC; # (ㅩ; ㅩ; ㅩ; ᇌ; ᇌ; ) HANGUL LETTER RIEUL-KIYEOK-SIOS
+316A;316A;316A;11CE;11CE; # (ㅪ; ㅪ; ㅪ; ᇎ; ᇎ; ) HANGUL LETTER RIEUL-TIKEUT
+316B;316B;316B;11D3;11D3; # (ㅫ; ㅫ; ㅫ; ᇓ; ᇓ; ) HANGUL LETTER RIEUL-PIEUP-SIOS
+316C;316C;316C;11D7;11D7; # (ㅬ; ㅬ; ㅬ; ᇗ; ᇗ; ) HANGUL LETTER RIEUL-PANSIOS
+316D;316D;316D;11D9;11D9; # (ㅭ; ㅭ; ㅭ; ᇙ; ᇙ; ) HANGUL LETTER RIEUL-YEORINHIEUH
+316E;316E;316E;111C;111C; # (ㅮ; ㅮ; ㅮ; ᄜ; ᄜ; ) HANGUL LETTER MIEUM-PIEUP
+316F;316F;316F;11DD;11DD; # (ã…¯; ã…¯; ã…¯; á‡; á‡; ) HANGUL LETTER MIEUM-SIOS
+3170;3170;3170;11DF;11DF; # (ㅰ; ㅰ; ㅰ; ᇟ; ᇟ; ) HANGUL LETTER MIEUM-PANSIOS
+3171;3171;3171;111D;111D; # (ã…±; ã…±; ã…±; á„; á„; ) HANGUL LETTER KAPYEOUNMIEUM
+3172;3172;3172;111E;111E; # (ã…²; ã…²; ã…²; á„ž; á„ž; ) HANGUL LETTER PIEUP-KIYEOK
+3173;3173;3173;1120;1120; # (ã…³; ã…³; ã…³; á„ ; á„ ; ) HANGUL LETTER PIEUP-TIKEUT
+3174;3174;3174;1122;1122; # (ã…´; ã…´; ã…´; á„¢; á„¢; ) HANGUL LETTER PIEUP-SIOS-KIYEOK
+3175;3175;3175;1123;1123; # (ã…µ; ã…µ; ã…µ; á„£; á„£; ) HANGUL LETTER PIEUP-SIOS-TIKEUT
+3176;3176;3176;1127;1127; # (ㅶ; ㅶ; ㅶ; ᄧ; ᄧ; ) HANGUL LETTER PIEUP-CIEUC
+3177;3177;3177;1129;1129; # (ã…·; ã…·; ã…·; á„©; á„©; ) HANGUL LETTER PIEUP-THIEUTH
+3178;3178;3178;112B;112B; # (ã…¸; ã…¸; ã…¸; á„«; á„«; ) HANGUL LETTER KAPYEOUNPIEUP
+3179;3179;3179;112C;112C; # (ㅹ; ㅹ; ㅹ; ᄬ; ᄬ; ) HANGUL LETTER KAPYEOUNSSANGPIEUP
+317A;317A;317A;112D;112D; # (ã…º; ã…º; ã…º; á„­; á„­; ) HANGUL LETTER SIOS-KIYEOK
+317B;317B;317B;112E;112E; # (ã…»; ã…»; ã…»; á„®; á„®; ) HANGUL LETTER SIOS-NIEUN
+317C;317C;317C;112F;112F; # (ㅼ; ㅼ; ㅼ; ᄯ; ᄯ; ) HANGUL LETTER SIOS-TIKEUT
+317D;317D;317D;1132;1132; # (ㅽ; ㅽ; ㅽ; ᄲ; ᄲ; ) HANGUL LETTER SIOS-PIEUP
+317E;317E;317E;1136;1136; # (ㅾ; ㅾ; ㅾ; ᄶ; ᄶ; ) HANGUL LETTER SIOS-CIEUC
+317F;317F;317F;1140;1140; # (ã…¿; ã…¿; ã…¿; á…€; á…€; ) HANGUL LETTER PANSIOS
+3180;3180;3180;1147;1147; # (ㆀ; ㆀ; ㆀ; ᅇ; ᅇ; ) HANGUL LETTER SSANGIEUNG
+3181;3181;3181;114C;114C; # (ã†; ã†; ã†; á…Œ; á…Œ; ) HANGUL LETTER YESIEUNG
+3182;3182;3182;11F1;11F1; # (ㆂ; ㆂ; ㆂ; ᇱ; ᇱ; ) HANGUL LETTER YESIEUNG-SIOS
+3183;3183;3183;11F2;11F2; # (ㆃ; ㆃ; ㆃ; ᇲ; ᇲ; ) HANGUL LETTER YESIEUNG-PANSIOS
+3184;3184;3184;1157;1157; # (ㆄ; ㆄ; ㆄ; ᅗ; ᅗ; ) HANGUL LETTER KAPYEOUNPHIEUPH
+3185;3185;3185;1158;1158; # (ㆅ; ㆅ; ㆅ; ᅘ; ᅘ; ) HANGUL LETTER SSANGHIEUH
+3186;3186;3186;1159;1159; # (ㆆ; ㆆ; ㆆ; ᅙ; ᅙ; ) HANGUL LETTER YEORINHIEUH
+3187;3187;3187;1184;1184; # (ㆇ; ㆇ; ㆇ; ᆄ; ᆄ; ) HANGUL LETTER YO-YA
+3188;3188;3188;1185;1185; # (ㆈ; ㆈ; ㆈ; ᆅ; ᆅ; ) HANGUL LETTER YO-YAE
+3189;3189;3189;1188;1188; # (ㆉ; ㆉ; ㆉ; ᆈ; ᆈ; ) HANGUL LETTER YO-I
+318A;318A;318A;1191;1191; # (ㆊ; ㆊ; ㆊ; ᆑ; ᆑ; ) HANGUL LETTER YU-YEO
+318B;318B;318B;1192;1192; # (ㆋ; ㆋ; ㆋ; ᆒ; ᆒ; ) HANGUL LETTER YU-YE
+318C;318C;318C;1194;1194; # (ㆌ; ㆌ; ㆌ; ᆔ; ᆔ; ) HANGUL LETTER YU-I
+318D;318D;318D;119E;119E; # (ã†; ã†; ã†; ᆞ; ᆞ; ) HANGUL LETTER ARAEA
+318E;318E;318E;11A1;11A1; # (ㆎ; ㆎ; ㆎ; ᆡ; ᆡ; ) HANGUL LETTER ARAEAE
+3192;3192;3192;4E00;4E00; # (㆒; ㆒; ㆒; 一; 一; ) IDEOGRAPHIC ANNOTATION ONE MARK
+3193;3193;3193;4E8C;4E8C; # (㆓; ㆓; ㆓; 二; 二; ) IDEOGRAPHIC ANNOTATION TWO MARK
+3194;3194;3194;4E09;4E09; # (㆔; ㆔; ㆔; 三; 三; ) IDEOGRAPHIC ANNOTATION THREE MARK
+3195;3195;3195;56DB;56DB; # (㆕; ㆕; ㆕; 四; 四; ) IDEOGRAPHIC ANNOTATION FOUR MARK
+3196;3196;3196;4E0A;4E0A; # (㆖; ㆖; ㆖; 上; 上; ) IDEOGRAPHIC ANNOTATION TOP MARK
+3197;3197;3197;4E2D;4E2D; # (㆗; ㆗; ㆗; 中; 中; ) IDEOGRAPHIC ANNOTATION MIDDLE MARK
+3198;3198;3198;4E0B;4E0B; # (㆘; ㆘; ㆘; 下; 下; ) IDEOGRAPHIC ANNOTATION BOTTOM MARK
+3199;3199;3199;7532;7532; # (㆙; ㆙; ㆙; 甲; 甲; ) IDEOGRAPHIC ANNOTATION FIRST MARK
+319A;319A;319A;4E59;4E59; # (㆚; ㆚; ㆚; 乙; 乙; ) IDEOGRAPHIC ANNOTATION SECOND MARK
+319B;319B;319B;4E19;4E19; # (㆛; ㆛; ㆛; 丙; 丙; ) IDEOGRAPHIC ANNOTATION THIRD MARK
+319C;319C;319C;4E01;4E01; # (㆜; ㆜; ㆜; ä¸; ä¸; ) IDEOGRAPHIC ANNOTATION FOURTH MARK
+319D;319D;319D;5929;5929; # (ã†; ã†; ã†; 天; 天; ) IDEOGRAPHIC ANNOTATION HEAVEN MARK
+319E;319E;319E;5730;5730; # (㆞; ㆞; ㆞; 地; 地; ) IDEOGRAPHIC ANNOTATION EARTH MARK
+319F;319F;319F;4EBA;4EBA; # (㆟; ㆟; ㆟; 人; 人; ) IDEOGRAPHIC ANNOTATION MAN MARK
+3200;3200;3200;0028 1100 0029;0028 1100 0029; # (㈀; ㈀; ㈀; (ᄀ); (ᄀ); ) PARENTHESIZED HANGUL KIYEOK
+3201;3201;3201;0028 1102 0029;0028 1102 0029; # (ãˆ; ãˆ; ãˆ; (á„‚); (á„‚); ) PARENTHESIZED HANGUL NIEUN
+3202;3202;3202;0028 1103 0029;0028 1103 0029; # (㈂; ㈂; ㈂; (ᄃ); (ᄃ); ) PARENTHESIZED HANGUL TIKEUT
+3203;3203;3203;0028 1105 0029;0028 1105 0029; # (㈃; ㈃; ㈃; (ᄅ); (ᄅ); ) PARENTHESIZED HANGUL RIEUL
+3204;3204;3204;0028 1106 0029;0028 1106 0029; # (㈄; ㈄; ㈄; (ᄆ); (ᄆ); ) PARENTHESIZED HANGUL MIEUM
+3205;3205;3205;0028 1107 0029;0028 1107 0029; # (㈅; ㈅; ㈅; (ᄇ); (ᄇ); ) PARENTHESIZED HANGUL PIEUP
+3206;3206;3206;0028 1109 0029;0028 1109 0029; # (㈆; ㈆; ㈆; (ᄉ); (ᄉ); ) PARENTHESIZED HANGUL SIOS
+3207;3207;3207;0028 110B 0029;0028 110B 0029; # (㈇; ㈇; ㈇; (ᄋ); (ᄋ); ) PARENTHESIZED HANGUL IEUNG
+3208;3208;3208;0028 110C 0029;0028 110C 0029; # (㈈; ㈈; ㈈; (ᄌ); (ᄌ); ) PARENTHESIZED HANGUL CIEUC
+3209;3209;3209;0028 110E 0029;0028 110E 0029; # (㈉; ㈉; ㈉; (ᄎ); (ᄎ); ) PARENTHESIZED HANGUL CHIEUCH
+320A;320A;320A;0028 110F 0029;0028 110F 0029; # (㈊; ㈊; ㈊; (á„); (á„); ) PARENTHESIZED HANGUL KHIEUKH
+320B;320B;320B;0028 1110 0029;0028 1110 0029; # (㈋; ㈋; ㈋; (á„); (á„); ) PARENTHESIZED HANGUL THIEUTH
+320C;320C;320C;0028 1111 0029;0028 1111 0029; # (㈌; ㈌; ㈌; (ᄑ); (ᄑ); ) PARENTHESIZED HANGUL PHIEUPH
+320D;320D;320D;0028 1112 0029;0028 1112 0029; # (ãˆ; ãˆ; ãˆ; (á„’); (á„’); ) PARENTHESIZED HANGUL HIEUH
+320E;320E;320E;0028 AC00 0029;0028 1100 1161 0029; # (㈎; ㈎; ㈎; (가); (가); ) PARENTHESIZED HANGUL KIYEOK A
+320F;320F;320F;0028 B098 0029;0028 1102 1161 0029; # (ãˆ; ãˆ; ãˆ; (나); (á„‚á…¡); ) PARENTHESIZED HANGUL NIEUN A
+3210;3210;3210;0028 B2E4 0029;0028 1103 1161 0029; # (ãˆ; ãˆ; ãˆ; (다); (다); ) PARENTHESIZED HANGUL TIKEUT A
+3211;3211;3211;0028 B77C 0029;0028 1105 1161 0029; # (㈑; ㈑; ㈑; (ë¼); (á„…á…¡); ) PARENTHESIZED HANGUL RIEUL A
+3212;3212;3212;0028 B9C8 0029;0028 1106 1161 0029; # (㈒; ㈒; ㈒; (마); (마); ) PARENTHESIZED HANGUL MIEUM A
+3213;3213;3213;0028 BC14 0029;0028 1107 1161 0029; # (㈓; ㈓; ㈓; (바); (바); ) PARENTHESIZED HANGUL PIEUP A
+3214;3214;3214;0028 C0AC 0029;0028 1109 1161 0029; # (㈔; ㈔; ㈔; (사); (사); ) PARENTHESIZED HANGUL SIOS A
+3215;3215;3215;0028 C544 0029;0028 110B 1161 0029; # (㈕; ㈕; ㈕; (아); (아); ) PARENTHESIZED HANGUL IEUNG A
+3216;3216;3216;0028 C790 0029;0028 110C 1161 0029; # (㈖; ㈖; ㈖; (ìž); (자); ) PARENTHESIZED HANGUL CIEUC A
+3217;3217;3217;0028 CC28 0029;0028 110E 1161 0029; # (㈗; ㈗; ㈗; (차); (차); ) PARENTHESIZED HANGUL CHIEUCH A
+3218;3218;3218;0028 CE74 0029;0028 110F 1161 0029; # (㈘; ㈘; ㈘; (ì¹´); (á„á…¡); ) PARENTHESIZED HANGUL KHIEUKH A
+3219;3219;3219;0028 D0C0 0029;0028 1110 1161 0029; # (㈙; ㈙; ㈙; (타); (á„á…¡); ) PARENTHESIZED HANGUL THIEUTH A
+321A;321A;321A;0028 D30C 0029;0028 1111 1161 0029; # (㈚; ㈚; ㈚; (파); (파); ) PARENTHESIZED HANGUL PHIEUPH A
+321B;321B;321B;0028 D558 0029;0028 1112 1161 0029; # (㈛; ㈛; ㈛; (하); (하); ) PARENTHESIZED HANGUL HIEUH A
+321C;321C;321C;0028 C8FC 0029;0028 110C 116E 0029; # (㈜; ㈜; ㈜; (주); (주); ) PARENTHESIZED HANGUL CIEUC U
+321D;321D;321D;0028 C624 C804 0029;0028 110B 1169 110C 1165 11AB 0029; # (ãˆ; ãˆ; ãˆ; (오전); (오전); ) PARENTHESIZED KOREAN CHARACTER OJEON
+321E;321E;321E;0028 C624 D6C4 0029;0028 110B 1169 1112 116E 0029; # (㈞; ㈞; ㈞; (오후); (오후); ) PARENTHESIZED KOREAN CHARACTER O HU
+3220;3220;3220;0028 4E00 0029;0028 4E00 0029; # (㈠; ㈠; ㈠; (一); (一); ) PARENTHESIZED IDEOGRAPH ONE
+3221;3221;3221;0028 4E8C 0029;0028 4E8C 0029; # (㈡; ㈡; ㈡; (二); (二); ) PARENTHESIZED IDEOGRAPH TWO
+3222;3222;3222;0028 4E09 0029;0028 4E09 0029; # (㈢; ㈢; ㈢; (三); (三); ) PARENTHESIZED IDEOGRAPH THREE
+3223;3223;3223;0028 56DB 0029;0028 56DB 0029; # (㈣; ㈣; ㈣; (四); (四); ) PARENTHESIZED IDEOGRAPH FOUR
+3224;3224;3224;0028 4E94 0029;0028 4E94 0029; # (㈤; ㈤; ㈤; (五); (五); ) PARENTHESIZED IDEOGRAPH FIVE
+3225;3225;3225;0028 516D 0029;0028 516D 0029; # (㈥; ㈥; ㈥; (六); (六); ) PARENTHESIZED IDEOGRAPH SIX
+3226;3226;3226;0028 4E03 0029;0028 4E03 0029; # (㈦; ㈦; ㈦; (七); (七); ) PARENTHESIZED IDEOGRAPH SEVEN
+3227;3227;3227;0028 516B 0029;0028 516B 0029; # (㈧; ㈧; ㈧; (八); (八); ) PARENTHESIZED IDEOGRAPH EIGHT
+3228;3228;3228;0028 4E5D 0029;0028 4E5D 0029; # (㈨; ㈨; ㈨; (ä¹); (ä¹); ) PARENTHESIZED IDEOGRAPH NINE
+3229;3229;3229;0028 5341 0029;0028 5341 0029; # (㈩; ㈩; ㈩; (å); (å); ) PARENTHESIZED IDEOGRAPH TEN
+322A;322A;322A;0028 6708 0029;0028 6708 0029; # (㈪; ㈪; ㈪; (月); (月); ) PARENTHESIZED IDEOGRAPH MOON
+322B;322B;322B;0028 706B 0029;0028 706B 0029; # (㈫; ㈫; ㈫; (ç«); (ç«); ) PARENTHESIZED IDEOGRAPH FIRE
+322C;322C;322C;0028 6C34 0029;0028 6C34 0029; # (㈬; ㈬; ㈬; (水); (水); ) PARENTHESIZED IDEOGRAPH WATER
+322D;322D;322D;0028 6728 0029;0028 6728 0029; # (㈭; ㈭; ㈭; (木); (木); ) PARENTHESIZED IDEOGRAPH WOOD
+322E;322E;322E;0028 91D1 0029;0028 91D1 0029; # (㈮; ㈮; ㈮; (金); (金); ) PARENTHESIZED IDEOGRAPH METAL
+322F;322F;322F;0028 571F 0029;0028 571F 0029; # (㈯; ㈯; ㈯; (土); (土); ) PARENTHESIZED IDEOGRAPH EARTH
+3230;3230;3230;0028 65E5 0029;0028 65E5 0029; # (㈰; ㈰; ㈰; (日); (日); ) PARENTHESIZED IDEOGRAPH SUN
+3231;3231;3231;0028 682A 0029;0028 682A 0029; # (㈱; ㈱; ㈱; (株); (株); ) PARENTHESIZED IDEOGRAPH STOCK
+3232;3232;3232;0028 6709 0029;0028 6709 0029; # (㈲; ㈲; ㈲; (有); (有); ) PARENTHESIZED IDEOGRAPH HAVE
+3233;3233;3233;0028 793E 0029;0028 793E 0029; # (㈳; ㈳; ㈳; (社); (社); ) PARENTHESIZED IDEOGRAPH SOCIETY
+3234;3234;3234;0028 540D 0029;0028 540D 0029; # (㈴; ㈴; ㈴; (å); (å); ) PARENTHESIZED IDEOGRAPH NAME
+3235;3235;3235;0028 7279 0029;0028 7279 0029; # (㈵; ㈵; ㈵; (特); (特); ) PARENTHESIZED IDEOGRAPH SPECIAL
+3236;3236;3236;0028 8CA1 0029;0028 8CA1 0029; # (㈶; ㈶; ㈶; (財); (財); ) PARENTHESIZED IDEOGRAPH FINANCIAL
+3237;3237;3237;0028 795D 0029;0028 795D 0029; # (㈷; ㈷; ㈷; (ç¥); (ç¥); ) PARENTHESIZED IDEOGRAPH CONGRATULATION
+3238;3238;3238;0028 52B4 0029;0028 52B4 0029; # (㈸; ㈸; ㈸; (労); (労); ) PARENTHESIZED IDEOGRAPH LABOR
+3239;3239;3239;0028 4EE3 0029;0028 4EE3 0029; # (㈹; ㈹; ㈹; (代); (代); ) PARENTHESIZED IDEOGRAPH REPRESENT
+323A;323A;323A;0028 547C 0029;0028 547C 0029; # (㈺; ㈺; ㈺; (呼); (呼); ) PARENTHESIZED IDEOGRAPH CALL
+323B;323B;323B;0028 5B66 0029;0028 5B66 0029; # (㈻; ㈻; ㈻; (学); (学); ) PARENTHESIZED IDEOGRAPH STUDY
+323C;323C;323C;0028 76E3 0029;0028 76E3 0029; # (㈼; ㈼; ㈼; (監); (監); ) PARENTHESIZED IDEOGRAPH SUPERVISE
+323D;323D;323D;0028 4F01 0029;0028 4F01 0029; # (㈽; ㈽; ㈽; (ä¼); (ä¼); ) PARENTHESIZED IDEOGRAPH ENTERPRISE
+323E;323E;323E;0028 8CC7 0029;0028 8CC7 0029; # (㈾; ㈾; ㈾; (資); (資); ) PARENTHESIZED IDEOGRAPH RESOURCE
+323F;323F;323F;0028 5354 0029;0028 5354 0029; # (㈿; ㈿; ㈿; (å”); (å”); ) PARENTHESIZED IDEOGRAPH ALLIANCE
+3240;3240;3240;0028 796D 0029;0028 796D 0029; # (㉀; ㉀; ㉀; (祭); (祭); ) PARENTHESIZED IDEOGRAPH FESTIVAL
+3241;3241;3241;0028 4F11 0029;0028 4F11 0029; # (ã‰; ã‰; ã‰; (休); (休); ) PARENTHESIZED IDEOGRAPH REST
+3242;3242;3242;0028 81EA 0029;0028 81EA 0029; # (㉂; ㉂; ㉂; (自); (自); ) PARENTHESIZED IDEOGRAPH SELF
+3243;3243;3243;0028 81F3 0029;0028 81F3 0029; # (㉃; ㉃; ㉃; (至); (至); ) PARENTHESIZED IDEOGRAPH REACH
+3250;3250;3250;0050 0054 0045;0050 0054 0045; # (ã‰; ã‰; ã‰; PTE; PTE; ) PARTNERSHIP SIGN
+3251;3251;3251;0032 0031;0032 0031; # (㉑; ㉑; ㉑; 21; 21; ) CIRCLED NUMBER TWENTY ONE
+3252;3252;3252;0032 0032;0032 0032; # (㉒; ㉒; ㉒; 22; 22; ) CIRCLED NUMBER TWENTY TWO
+3253;3253;3253;0032 0033;0032 0033; # (㉓; ㉓; ㉓; 23; 23; ) CIRCLED NUMBER TWENTY THREE
+3254;3254;3254;0032 0034;0032 0034; # (㉔; ㉔; ㉔; 24; 24; ) CIRCLED NUMBER TWENTY FOUR
+3255;3255;3255;0032 0035;0032 0035; # (㉕; ㉕; ㉕; 25; 25; ) CIRCLED NUMBER TWENTY FIVE
+3256;3256;3256;0032 0036;0032 0036; # (㉖; ㉖; ㉖; 26; 26; ) CIRCLED NUMBER TWENTY SIX
+3257;3257;3257;0032 0037;0032 0037; # (㉗; ㉗; ㉗; 27; 27; ) CIRCLED NUMBER TWENTY SEVEN
+3258;3258;3258;0032 0038;0032 0038; # (㉘; ㉘; ㉘; 28; 28; ) CIRCLED NUMBER TWENTY EIGHT
+3259;3259;3259;0032 0039;0032 0039; # (㉙; ㉙; ㉙; 29; 29; ) CIRCLED NUMBER TWENTY NINE
+325A;325A;325A;0033 0030;0033 0030; # (㉚; ㉚; ㉚; 30; 30; ) CIRCLED NUMBER THIRTY
+325B;325B;325B;0033 0031;0033 0031; # (㉛; ㉛; ㉛; 31; 31; ) CIRCLED NUMBER THIRTY ONE
+325C;325C;325C;0033 0032;0033 0032; # (㉜; ㉜; ㉜; 32; 32; ) CIRCLED NUMBER THIRTY TWO
+325D;325D;325D;0033 0033;0033 0033; # (ã‰; ã‰; ã‰; 33; 33; ) CIRCLED NUMBER THIRTY THREE
+325E;325E;325E;0033 0034;0033 0034; # (㉞; ㉞; ㉞; 34; 34; ) CIRCLED NUMBER THIRTY FOUR
+325F;325F;325F;0033 0035;0033 0035; # (㉟; ㉟; ㉟; 35; 35; ) CIRCLED NUMBER THIRTY FIVE
+3260;3260;3260;1100;1100; # (㉠; ㉠; ㉠; ᄀ; ᄀ; ) CIRCLED HANGUL KIYEOK
+3261;3261;3261;1102;1102; # (㉡; ㉡; ㉡; ᄂ; ᄂ; ) CIRCLED HANGUL NIEUN
+3262;3262;3262;1103;1103; # (㉢; ㉢; ㉢; ᄃ; ᄃ; ) CIRCLED HANGUL TIKEUT
+3263;3263;3263;1105;1105; # (㉣; ㉣; ㉣; ᄅ; ᄅ; ) CIRCLED HANGUL RIEUL
+3264;3264;3264;1106;1106; # (㉤; ㉤; ㉤; ᄆ; ᄆ; ) CIRCLED HANGUL MIEUM
+3265;3265;3265;1107;1107; # (㉥; ㉥; ㉥; ᄇ; ᄇ; ) CIRCLED HANGUL PIEUP
+3266;3266;3266;1109;1109; # (㉦; ㉦; ㉦; ᄉ; ᄉ; ) CIRCLED HANGUL SIOS
+3267;3267;3267;110B;110B; # (㉧; ㉧; ㉧; ᄋ; ᄋ; ) CIRCLED HANGUL IEUNG
+3268;3268;3268;110C;110C; # (㉨; ㉨; ㉨; ᄌ; ᄌ; ) CIRCLED HANGUL CIEUC
+3269;3269;3269;110E;110E; # (㉩; ㉩; ㉩; ᄎ; ᄎ; ) CIRCLED HANGUL CHIEUCH
+326A;326A;326A;110F;110F; # (㉪; ㉪; ㉪; á„; á„; ) CIRCLED HANGUL KHIEUKH
+326B;326B;326B;1110;1110; # (㉫; ㉫; ㉫; á„; á„; ) CIRCLED HANGUL THIEUTH
+326C;326C;326C;1111;1111; # (㉬; ㉬; ㉬; ᄑ; ᄑ; ) CIRCLED HANGUL PHIEUPH
+326D;326D;326D;1112;1112; # (㉭; ㉭; ㉭; ᄒ; ᄒ; ) CIRCLED HANGUL HIEUH
+326E;326E;326E;AC00;1100 1161; # (㉮; ㉮; ㉮; 가; 가; ) CIRCLED HANGUL KIYEOK A
+326F;326F;326F;B098;1102 1161; # (㉯; ㉯; ㉯; 나; 나; ) CIRCLED HANGUL NIEUN A
+3270;3270;3270;B2E4;1103 1161; # (㉰; ㉰; ㉰; 다; 다; ) CIRCLED HANGUL TIKEUT A
+3271;3271;3271;B77C;1105 1161; # (㉱; ㉱; ㉱; ë¼; á„…á…¡; ) CIRCLED HANGUL RIEUL A
+3272;3272;3272;B9C8;1106 1161; # (㉲; ㉲; ㉲; 마; 마; ) CIRCLED HANGUL MIEUM A
+3273;3273;3273;BC14;1107 1161; # (㉳; ㉳; ㉳; 바; 바; ) CIRCLED HANGUL PIEUP A
+3274;3274;3274;C0AC;1109 1161; # (㉴; ㉴; ㉴; 사; 사; ) CIRCLED HANGUL SIOS A
+3275;3275;3275;C544;110B 1161; # (㉵; ㉵; ㉵; 아; 아; ) CIRCLED HANGUL IEUNG A
+3276;3276;3276;C790;110C 1161; # (㉶; ㉶; ㉶; ìž; 자; ) CIRCLED HANGUL CIEUC A
+3277;3277;3277;CC28;110E 1161; # (㉷; ㉷; ㉷; 차; 차; ) CIRCLED HANGUL CHIEUCH A
+3278;3278;3278;CE74;110F 1161; # (㉸; ㉸; ㉸; ì¹´; á„á…¡; ) CIRCLED HANGUL KHIEUKH A
+3279;3279;3279;D0C0;1110 1161; # (㉹; ㉹; ㉹; 타; á„á…¡; ) CIRCLED HANGUL THIEUTH A
+327A;327A;327A;D30C;1111 1161; # (㉺; ㉺; ㉺; 파; 파; ) CIRCLED HANGUL PHIEUPH A
+327B;327B;327B;D558;1112 1161; # (㉻; ㉻; ㉻; 하; 하; ) CIRCLED HANGUL HIEUH A
+327C;327C;327C;CC38 ACE0;110E 1161 11B7 1100 1169; # (㉼; ㉼; ㉼; 참고; 참고; ) CIRCLED KOREAN CHARACTER CHAMKO
+327D;327D;327D;C8FC C758;110C 116E 110B 1174; # (㉽; ㉽; ㉽; 주ì˜; 주의; ) CIRCLED KOREAN CHARACTER JUEUI
+327E;327E;327E;C6B0;110B 116E; # (㉾; ㉾; ㉾; 우; 우; ) CIRCLED HANGUL IEUNG U
+3280;3280;3280;4E00;4E00; # (㊀; ㊀; ㊀; 一; 一; ) CIRCLED IDEOGRAPH ONE
+3281;3281;3281;4E8C;4E8C; # (ãŠ; ãŠ; ãŠ; 二; 二; ) CIRCLED IDEOGRAPH TWO
+3282;3282;3282;4E09;4E09; # (㊂; ㊂; ㊂; 三; 三; ) CIRCLED IDEOGRAPH THREE
+3283;3283;3283;56DB;56DB; # (㊃; ㊃; ㊃; 四; 四; ) CIRCLED IDEOGRAPH FOUR
+3284;3284;3284;4E94;4E94; # (㊄; ㊄; ㊄; 五; 五; ) CIRCLED IDEOGRAPH FIVE
+3285;3285;3285;516D;516D; # (㊅; ㊅; ㊅; 六; 六; ) CIRCLED IDEOGRAPH SIX
+3286;3286;3286;4E03;4E03; # (㊆; ㊆; ㊆; 七; 七; ) CIRCLED IDEOGRAPH SEVEN
+3287;3287;3287;516B;516B; # (㊇; ㊇; ㊇; 八; 八; ) CIRCLED IDEOGRAPH EIGHT
+3288;3288;3288;4E5D;4E5D; # (㊈; ㊈; ㊈; ä¹; ä¹; ) CIRCLED IDEOGRAPH NINE
+3289;3289;3289;5341;5341; # (㊉; ㊉; ㊉; å; å; ) CIRCLED IDEOGRAPH TEN
+328A;328A;328A;6708;6708; # (㊊; ㊊; ㊊; 月; 月; ) CIRCLED IDEOGRAPH MOON
+328B;328B;328B;706B;706B; # (㊋; ㊋; ㊋; ç«; ç«; ) CIRCLED IDEOGRAPH FIRE
+328C;328C;328C;6C34;6C34; # (㊌; ㊌; ㊌; 水; 水; ) CIRCLED IDEOGRAPH WATER
+328D;328D;328D;6728;6728; # (ãŠ; ãŠ; ãŠ; 木; 木; ) CIRCLED IDEOGRAPH WOOD
+328E;328E;328E;91D1;91D1; # (㊎; ㊎; ㊎; 金; 金; ) CIRCLED IDEOGRAPH METAL
+328F;328F;328F;571F;571F; # (ãŠ; ãŠ; ãŠ; 土; 土; ) CIRCLED IDEOGRAPH EARTH
+3290;3290;3290;65E5;65E5; # (ãŠ; ãŠ; ãŠ; æ—¥; æ—¥; ) CIRCLED IDEOGRAPH SUN
+3291;3291;3291;682A;682A; # (㊑; ㊑; ㊑; 株; 株; ) CIRCLED IDEOGRAPH STOCK
+3292;3292;3292;6709;6709; # (㊒; ㊒; ㊒; 有; 有; ) CIRCLED IDEOGRAPH HAVE
+3293;3293;3293;793E;793E; # (㊓; ㊓; ㊓; 社; 社; ) CIRCLED IDEOGRAPH SOCIETY
+3294;3294;3294;540D;540D; # (㊔; ㊔; ㊔; å; å; ) CIRCLED IDEOGRAPH NAME
+3295;3295;3295;7279;7279; # (㊕; ㊕; ㊕; 特; 特; ) CIRCLED IDEOGRAPH SPECIAL
+3296;3296;3296;8CA1;8CA1; # (㊖; ㊖; ㊖; 財; 財; ) CIRCLED IDEOGRAPH FINANCIAL
+3297;3297;3297;795D;795D; # (㊗; ㊗; ㊗; ç¥; ç¥; ) CIRCLED IDEOGRAPH CONGRATULATION
+3298;3298;3298;52B4;52B4; # (㊘; ㊘; ㊘; 労; 労; ) CIRCLED IDEOGRAPH LABOR
+3299;3299;3299;79D8;79D8; # (㊙; ㊙; ㊙; 秘; 秘; ) CIRCLED IDEOGRAPH SECRET
+329A;329A;329A;7537;7537; # (㊚; ㊚; ㊚; 男; 男; ) CIRCLED IDEOGRAPH MALE
+329B;329B;329B;5973;5973; # (㊛; ㊛; ㊛; 女; 女; ) CIRCLED IDEOGRAPH FEMALE
+329C;329C;329C;9069;9069; # (㊜; ㊜; ㊜; é©; é©; ) CIRCLED IDEOGRAPH SUITABLE
+329D;329D;329D;512A;512A; # (ãŠ; ãŠ; ãŠ; 優; 優; ) CIRCLED IDEOGRAPH EXCELLENT
+329E;329E;329E;5370;5370; # (㊞; ㊞; ㊞; å°; å°; ) CIRCLED IDEOGRAPH PRINT
+329F;329F;329F;6CE8;6CE8; # (㊟; ㊟; ㊟; 注; 注; ) CIRCLED IDEOGRAPH ATTENTION
+32A0;32A0;32A0;9805;9805; # (㊠; ㊠; ㊠; 項; 項; ) CIRCLED IDEOGRAPH ITEM
+32A1;32A1;32A1;4F11;4F11; # (㊡; ㊡; ㊡; 休; 休; ) CIRCLED IDEOGRAPH REST
+32A2;32A2;32A2;5199;5199; # (㊢; ㊢; ㊢; 写; 写; ) CIRCLED IDEOGRAPH COPY
+32A3;32A3;32A3;6B63;6B63; # (㊣; ㊣; ㊣; 正; 正; ) CIRCLED IDEOGRAPH CORRECT
+32A4;32A4;32A4;4E0A;4E0A; # (㊤; ㊤; ㊤; 上; 上; ) CIRCLED IDEOGRAPH HIGH
+32A5;32A5;32A5;4E2D;4E2D; # (㊥; ㊥; ㊥; 中; 中; ) CIRCLED IDEOGRAPH CENTRE
+32A6;32A6;32A6;4E0B;4E0B; # (㊦; ㊦; ㊦; 下; 下; ) CIRCLED IDEOGRAPH LOW
+32A7;32A7;32A7;5DE6;5DE6; # (㊧; ㊧; ㊧; 左; 左; ) CIRCLED IDEOGRAPH LEFT
+32A8;32A8;32A8;53F3;53F3; # (㊨; ㊨; ㊨; å³; å³; ) CIRCLED IDEOGRAPH RIGHT
+32A9;32A9;32A9;533B;533B; # (㊩; ㊩; ㊩; 医; 医; ) CIRCLED IDEOGRAPH MEDICINE
+32AA;32AA;32AA;5B97;5B97; # (㊪; ㊪; ㊪; 宗; 宗; ) CIRCLED IDEOGRAPH RELIGION
+32AB;32AB;32AB;5B66;5B66; # (㊫; ㊫; ㊫; 学; 学; ) CIRCLED IDEOGRAPH STUDY
+32AC;32AC;32AC;76E3;76E3; # (㊬; ㊬; ㊬; 監; 監; ) CIRCLED IDEOGRAPH SUPERVISE
+32AD;32AD;32AD;4F01;4F01; # (㊭; ㊭; ㊭; ä¼; ä¼; ) CIRCLED IDEOGRAPH ENTERPRISE
+32AE;32AE;32AE;8CC7;8CC7; # (㊮; ㊮; ㊮; 資; 資; ) CIRCLED IDEOGRAPH RESOURCE
+32AF;32AF;32AF;5354;5354; # (㊯; ㊯; ㊯; å”; å”; ) CIRCLED IDEOGRAPH ALLIANCE
+32B0;32B0;32B0;591C;591C; # (㊰; ㊰; ㊰; 夜; 夜; ) CIRCLED IDEOGRAPH NIGHT
+32B1;32B1;32B1;0033 0036;0033 0036; # (㊱; ㊱; ㊱; 36; 36; ) CIRCLED NUMBER THIRTY SIX
+32B2;32B2;32B2;0033 0037;0033 0037; # (㊲; ㊲; ㊲; 37; 37; ) CIRCLED NUMBER THIRTY SEVEN
+32B3;32B3;32B3;0033 0038;0033 0038; # (㊳; ㊳; ㊳; 38; 38; ) CIRCLED NUMBER THIRTY EIGHT
+32B4;32B4;32B4;0033 0039;0033 0039; # (㊴; ㊴; ㊴; 39; 39; ) CIRCLED NUMBER THIRTY NINE
+32B5;32B5;32B5;0034 0030;0034 0030; # (㊵; ㊵; ㊵; 40; 40; ) CIRCLED NUMBER FORTY
+32B6;32B6;32B6;0034 0031;0034 0031; # (㊶; ㊶; ㊶; 41; 41; ) CIRCLED NUMBER FORTY ONE
+32B7;32B7;32B7;0034 0032;0034 0032; # (㊷; ㊷; ㊷; 42; 42; ) CIRCLED NUMBER FORTY TWO
+32B8;32B8;32B8;0034 0033;0034 0033; # (㊸; ㊸; ㊸; 43; 43; ) CIRCLED NUMBER FORTY THREE
+32B9;32B9;32B9;0034 0034;0034 0034; # (㊹; ㊹; ㊹; 44; 44; ) CIRCLED NUMBER FORTY FOUR
+32BA;32BA;32BA;0034 0035;0034 0035; # (㊺; ㊺; ㊺; 45; 45; ) CIRCLED NUMBER FORTY FIVE
+32BB;32BB;32BB;0034 0036;0034 0036; # (㊻; ㊻; ㊻; 46; 46; ) CIRCLED NUMBER FORTY SIX
+32BC;32BC;32BC;0034 0037;0034 0037; # (㊼; ㊼; ㊼; 47; 47; ) CIRCLED NUMBER FORTY SEVEN
+32BD;32BD;32BD;0034 0038;0034 0038; # (㊽; ㊽; ㊽; 48; 48; ) CIRCLED NUMBER FORTY EIGHT
+32BE;32BE;32BE;0034 0039;0034 0039; # (㊾; ㊾; ㊾; 49; 49; ) CIRCLED NUMBER FORTY NINE
+32BF;32BF;32BF;0035 0030;0035 0030; # (㊿; ㊿; ㊿; 50; 50; ) CIRCLED NUMBER FIFTY
+32C0;32C0;32C0;0031 6708;0031 6708; # (㋀; ㋀; ㋀; 1月; 1月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+32C1;32C1;32C1;0032 6708;0032 6708; # (ã‹; ã‹; ã‹; 2月; 2月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+32C2;32C2;32C2;0033 6708;0033 6708; # (㋂; ㋂; ㋂; 3月; 3月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+32C3;32C3;32C3;0034 6708;0034 6708; # (㋃; ㋃; ㋃; 4月; 4月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+32C4;32C4;32C4;0035 6708;0035 6708; # (㋄; ㋄; ㋄; 5月; 5月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+32C5;32C5;32C5;0036 6708;0036 6708; # (㋅; ㋅; ㋅; 6月; 6月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+32C6;32C6;32C6;0037 6708;0037 6708; # (㋆; ㋆; ㋆; 7月; 7月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+32C7;32C7;32C7;0038 6708;0038 6708; # (㋇; ㋇; ㋇; 8月; 8月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+32C8;32C8;32C8;0039 6708;0039 6708; # (㋈; ㋈; ㋈; 9月; 9月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+32C9;32C9;32C9;0031 0030 6708;0031 0030 6708; # (㋉; ㋉; ㋉; 10月; 10月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+32CA;32CA;32CA;0031 0031 6708;0031 0031 6708; # (㋊; ㋊; ㋊; 11月; 11月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+32CB;32CB;32CB;0031 0032 6708;0031 0032 6708; # (㋋; ㋋; ㋋; 12月; 12月; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+32CC;32CC;32CC;0048 0067;0048 0067; # (㋌; ㋌; ㋌; Hg; Hg; ) SQUARE HG
+32CD;32CD;32CD;0065 0072 0067;0065 0072 0067; # (ã‹; ã‹; ã‹; erg; erg; ) SQUARE ERG
+32CE;32CE;32CE;0065 0056;0065 0056; # (ã‹Ž; ã‹Ž; ã‹Ž; eV; eV; ) SQUARE EV
+32CF;32CF;32CF;004C 0054 0044;004C 0054 0044; # (ã‹; ã‹; ã‹; LTD; LTD; ) LIMITED LIABILITY SIGN
+32D0;32D0;32D0;30A2;30A2; # (ã‹; ã‹; ã‹; ã‚¢; ã‚¢; ) CIRCLED KATAKANA A
+32D1;32D1;32D1;30A4;30A4; # (㋑; ㋑; ㋑; イ; イ; ) CIRCLED KATAKANA I
+32D2;32D2;32D2;30A6;30A6; # (㋒; ㋒; ㋒; ウ; ウ; ) CIRCLED KATAKANA U
+32D3;32D3;32D3;30A8;30A8; # (㋓; ㋓; ㋓; エ; エ; ) CIRCLED KATAKANA E
+32D4;32D4;32D4;30AA;30AA; # (㋔; ㋔; ㋔; オ; オ; ) CIRCLED KATAKANA O
+32D5;32D5;32D5;30AB;30AB; # (ã‹•; ã‹•; ã‹•; ã‚«; ã‚«; ) CIRCLED KATAKANA KA
+32D6;32D6;32D6;30AD;30AD; # (ã‹–; ã‹–; ã‹–; ã‚­; ã‚­; ) CIRCLED KATAKANA KI
+32D7;32D7;32D7;30AF;30AF; # (㋗; ㋗; ㋗; ク; ク; ) CIRCLED KATAKANA KU
+32D8;32D8;32D8;30B1;30B1; # (㋘; ㋘; ㋘; ケ; ケ; ) CIRCLED KATAKANA KE
+32D9;32D9;32D9;30B3;30B3; # (㋙; ㋙; ㋙; コ; コ; ) CIRCLED KATAKANA KO
+32DA;32DA;32DA;30B5;30B5; # (㋚; ㋚; ㋚; サ; サ; ) CIRCLED KATAKANA SA
+32DB;32DB;32DB;30B7;30B7; # (ã‹›; ã‹›; ã‹›; ã‚·; ã‚·; ) CIRCLED KATAKANA SI
+32DC;32DC;32DC;30B9;30B9; # (㋜; ㋜; ㋜; ス; ス; ) CIRCLED KATAKANA SU
+32DD;32DD;32DD;30BB;30BB; # (ã‹; ã‹; ã‹; ã‚»; ã‚»; ) CIRCLED KATAKANA SE
+32DE;32DE;32DE;30BD;30BD; # (㋞; ㋞; ㋞; ソ; ソ; ) CIRCLED KATAKANA SO
+32DF;32DF;32DF;30BF;30BF; # (ã‹Ÿ; ã‹Ÿ; ã‹Ÿ; ã‚¿; ã‚¿; ) CIRCLED KATAKANA TA
+32E0;32E0;32E0;30C1;30C1; # (ã‹ ; ã‹ ; ã‹ ; ãƒ; ãƒ; ) CIRCLED KATAKANA TI
+32E1;32E1;32E1;30C4;30C4; # (㋡; ㋡; ㋡; ツ; ツ; ) CIRCLED KATAKANA TU
+32E2;32E2;32E2;30C6;30C6; # (㋢; ㋢; ㋢; テ; テ; ) CIRCLED KATAKANA TE
+32E3;32E3;32E3;30C8;30C8; # (㋣; ㋣; ㋣; ト; ト; ) CIRCLED KATAKANA TO
+32E4;32E4;32E4;30CA;30CA; # (㋤; ㋤; ㋤; ナ; ナ; ) CIRCLED KATAKANA NA
+32E5;32E5;32E5;30CB;30CB; # (㋥; ㋥; ㋥; ニ; ニ; ) CIRCLED KATAKANA NI
+32E6;32E6;32E6;30CC;30CC; # (㋦; ㋦; ㋦; ヌ; ヌ; ) CIRCLED KATAKANA NU
+32E7;32E7;32E7;30CD;30CD; # (㋧; ㋧; ㋧; ãƒ; ãƒ; ) CIRCLED KATAKANA NE
+32E8;32E8;32E8;30CE;30CE; # (㋨; ㋨; ㋨; ノ; ノ; ) CIRCLED KATAKANA NO
+32E9;32E9;32E9;30CF;30CF; # (ã‹©; ã‹©; ã‹©; ãƒ; ãƒ; ) CIRCLED KATAKANA HA
+32EA;32EA;32EA;30D2;30D2; # (㋪; ㋪; ㋪; ヒ; ヒ; ) CIRCLED KATAKANA HI
+32EB;32EB;32EB;30D5;30D5; # (㋫; ㋫; ㋫; フ; フ; ) CIRCLED KATAKANA HU
+32EC;32EC;32EC;30D8;30D8; # (㋬; ㋬; ㋬; ヘ; ヘ; ) CIRCLED KATAKANA HE
+32ED;32ED;32ED;30DB;30DB; # (㋭; ㋭; ㋭; ホ; ホ; ) CIRCLED KATAKANA HO
+32EE;32EE;32EE;30DE;30DE; # (㋮; ㋮; ㋮; マ; マ; ) CIRCLED KATAKANA MA
+32EF;32EF;32EF;30DF;30DF; # (㋯; ㋯; ㋯; ミ; ミ; ) CIRCLED KATAKANA MI
+32F0;32F0;32F0;30E0;30E0; # (㋰; ㋰; ㋰; ム; ム; ) CIRCLED KATAKANA MU
+32F1;32F1;32F1;30E1;30E1; # (㋱; ㋱; ㋱; メ; メ; ) CIRCLED KATAKANA ME
+32F2;32F2;32F2;30E2;30E2; # (㋲; ㋲; ㋲; モ; モ; ) CIRCLED KATAKANA MO
+32F3;32F3;32F3;30E4;30E4; # (㋳; ㋳; ㋳; ヤ; ヤ; ) CIRCLED KATAKANA YA
+32F4;32F4;32F4;30E6;30E6; # (㋴; ㋴; ㋴; ユ; ユ; ) CIRCLED KATAKANA YU
+32F5;32F5;32F5;30E8;30E8; # (㋵; ㋵; ㋵; ヨ; ヨ; ) CIRCLED KATAKANA YO
+32F6;32F6;32F6;30E9;30E9; # (㋶; ㋶; ㋶; ラ; ラ; ) CIRCLED KATAKANA RA
+32F7;32F7;32F7;30EA;30EA; # (㋷; ㋷; ㋷; リ; リ; ) CIRCLED KATAKANA RI
+32F8;32F8;32F8;30EB;30EB; # (㋸; ㋸; ㋸; ル; ル; ) CIRCLED KATAKANA RU
+32F9;32F9;32F9;30EC;30EC; # (㋹; ㋹; ㋹; レ; レ; ) CIRCLED KATAKANA RE
+32FA;32FA;32FA;30ED;30ED; # (㋺; ㋺; ㋺; ロ; ロ; ) CIRCLED KATAKANA RO
+32FB;32FB;32FB;30EF;30EF; # (㋻; ㋻; ㋻; ワ; ワ; ) CIRCLED KATAKANA WA
+32FC;32FC;32FC;30F0;30F0; # (㋼; ㋼; ㋼; ヰ; ヰ; ) CIRCLED KATAKANA WI
+32FD;32FD;32FD;30F1;30F1; # (㋽; ㋽; ㋽; ヱ; ヱ; ) CIRCLED KATAKANA WE
+32FE;32FE;32FE;30F2;30F2; # (㋾; ㋾; ㋾; ヲ; ヲ; ) CIRCLED KATAKANA WO
+3300;3300;3300;30A2 30D1 30FC 30C8;30A2 30CF 309A 30FC 30C8; # (㌀; ㌀; ㌀; アパート; ã‚¢ãƒâ—Œã‚šãƒ¼ãƒˆ; ) SQUARE APAATO
+3301;3301;3301;30A2 30EB 30D5 30A1;30A2 30EB 30D5 30A1; # (ãŒ; ãŒ; ãŒ; アルファ; アルファ; ) SQUARE ARUHUA
+3302;3302;3302;30A2 30F3 30DA 30A2;30A2 30F3 30D8 309A 30A2; # (㌂; ㌂; ㌂; アンペア; アンヘ◌゚ア; ) SQUARE ANPEA
+3303;3303;3303;30A2 30FC 30EB;30A2 30FC 30EB; # (㌃; ㌃; ㌃; アール; アール; ) SQUARE AARU
+3304;3304;3304;30A4 30CB 30F3 30B0;30A4 30CB 30F3 30AF 3099; # (㌄; ㌄; ㌄; イニング; イニンク◌゙; ) SQUARE ININGU
+3305;3305;3305;30A4 30F3 30C1;30A4 30F3 30C1; # (㌅; ㌅; ㌅; インãƒ; インãƒ; ) SQUARE INTI
+3306;3306;3306;30A6 30A9 30F3;30A6 30A9 30F3; # (㌆; ㌆; ㌆; ウォン; ウォン; ) SQUARE UON
+3307;3307;3307;30A8 30B9 30AF 30FC 30C9;30A8 30B9 30AF 30FC 30C8 3099; # (㌇; ㌇; ㌇; エスクード; エスクート◌゙; ) SQUARE ESUKUUDO
+3308;3308;3308;30A8 30FC 30AB 30FC;30A8 30FC 30AB 30FC; # (㌈; ㌈; ㌈; エーカー; エーカー; ) SQUARE EEKAA
+3309;3309;3309;30AA 30F3 30B9;30AA 30F3 30B9; # (㌉; ㌉; ㌉; オンス; オンス; ) SQUARE ONSU
+330A;330A;330A;30AA 30FC 30E0;30AA 30FC 30E0; # (㌊; ㌊; ㌊; オーム; オーム; ) SQUARE OOMU
+330B;330B;330B;30AB 30A4 30EA;30AB 30A4 30EA; # (㌋; ㌋; ㌋; カイリ; カイリ; ) SQUARE KAIRI
+330C;330C;330C;30AB 30E9 30C3 30C8;30AB 30E9 30C3 30C8; # (㌌; ㌌; ㌌; カラット; カラット; ) SQUARE KARATTO
+330D;330D;330D;30AB 30ED 30EA 30FC;30AB 30ED 30EA 30FC; # (ãŒ; ãŒ; ãŒ; カロリー; カロリー; ) SQUARE KARORII
+330E;330E;330E;30AC 30ED 30F3;30AB 3099 30ED 30F3; # (㌎; ㌎; ㌎; ガロン; カ◌゙ロン; ) SQUARE GARON
+330F;330F;330F;30AC 30F3 30DE;30AB 3099 30F3 30DE; # (ãŒ; ãŒ; ãŒ; ガンマ; カ◌゙ンマ; ) SQUARE GANMA
+3310;3310;3310;30AE 30AC;30AD 3099 30AB 3099; # (ãŒ; ãŒ; ãŒ; ギガ; キ◌゙カ◌゙; ) SQUARE GIGA
+3311;3311;3311;30AE 30CB 30FC;30AD 3099 30CB 30FC; # (㌑; ㌑; ㌑; ギニー; キ◌゙ニー; ) SQUARE GINII
+3312;3312;3312;30AD 30E5 30EA 30FC;30AD 30E5 30EA 30FC; # (㌒; ㌒; ㌒; キュリー; キュリー; ) SQUARE KYURII
+3313;3313;3313;30AE 30EB 30C0 30FC;30AD 3099 30EB 30BF 3099 30FC; # (㌓; ㌓; ㌓; ギルダー; キ◌゙ルタ◌゙ー; ) SQUARE GIRUDAA
+3314;3314;3314;30AD 30ED;30AD 30ED; # (㌔; ㌔; ㌔; キロ; キロ; ) SQUARE KIRO
+3315;3315;3315;30AD 30ED 30B0 30E9 30E0;30AD 30ED 30AF 3099 30E9 30E0; # (㌕; ㌕; ㌕; キログラム; キロク◌゙ラム; ) SQUARE KIROGURAMU
+3316;3316;3316;30AD 30ED 30E1 30FC 30C8 30EB;30AD 30ED 30E1 30FC 30C8 30EB; # (㌖; ㌖; ㌖; キロメートル; キロメートル; ) SQUARE KIROMEETORU
+3317;3317;3317;30AD 30ED 30EF 30C3 30C8;30AD 30ED 30EF 30C3 30C8; # (㌗; ㌗; ㌗; キロワット; キロワット; ) SQUARE KIROWATTO
+3318;3318;3318;30B0 30E9 30E0;30AF 3099 30E9 30E0; # (㌘; ㌘; ㌘; グラム; ク◌゙ラム; ) SQUARE GURAMU
+3319;3319;3319;30B0 30E9 30E0 30C8 30F3;30AF 3099 30E9 30E0 30C8 30F3; # (㌙; ㌙; ㌙; グラムトン; ク◌゙ラムトン; ) SQUARE GURAMUTON
+331A;331A;331A;30AF 30EB 30BC 30A4 30ED;30AF 30EB 30BB 3099 30A4 30ED; # (㌚; ㌚; ㌚; クルゼイロ; クルセ◌゙イロ; ) SQUARE KURUZEIRO
+331B;331B;331B;30AF 30ED 30FC 30CD;30AF 30ED 30FC 30CD; # (㌛; ㌛; ㌛; クローãƒ; クローãƒ; ) SQUARE KUROONE
+331C;331C;331C;30B1 30FC 30B9;30B1 30FC 30B9; # (㌜; ㌜; ㌜; ケース; ケース; ) SQUARE KEESU
+331D;331D;331D;30B3 30EB 30CA;30B3 30EB 30CA; # (ãŒ; ãŒ; ãŒ; コルナ; コルナ; ) SQUARE KORUNA
+331E;331E;331E;30B3 30FC 30DD;30B3 30FC 30DB 309A; # (㌞; ㌞; ㌞; コーãƒ; コーホ◌゚; ) SQUARE KOOPO
+331F;331F;331F;30B5 30A4 30AF 30EB;30B5 30A4 30AF 30EB; # (㌟; ㌟; ㌟; サイクル; サイクル; ) SQUARE SAIKURU
+3320;3320;3320;30B5 30F3 30C1 30FC 30E0;30B5 30F3 30C1 30FC 30E0; # (㌠; ㌠; ㌠; サンãƒãƒ¼ãƒ ; サンãƒãƒ¼ãƒ ; ) SQUARE SANTIIMU
+3321;3321;3321;30B7 30EA 30F3 30B0;30B7 30EA 30F3 30AF 3099; # (㌡; ㌡; ㌡; シリング; シリンク◌゙; ) SQUARE SIRINGU
+3322;3322;3322;30BB 30F3 30C1;30BB 30F3 30C1; # (㌢; ㌢; ㌢; センãƒ; センãƒ; ) SQUARE SENTI
+3323;3323;3323;30BB 30F3 30C8;30BB 30F3 30C8; # (㌣; ㌣; ㌣; セント; セント; ) SQUARE SENTO
+3324;3324;3324;30C0 30FC 30B9;30BF 3099 30FC 30B9; # (㌤; ㌤; ㌤; ダース; タ◌゙ース; ) SQUARE DAASU
+3325;3325;3325;30C7 30B7;30C6 3099 30B7; # (㌥; ㌥; ㌥; デシ; テ◌゙シ; ) SQUARE DESI
+3326;3326;3326;30C9 30EB;30C8 3099 30EB; # (㌦; ㌦; ㌦; ドル; ト◌゙ル; ) SQUARE DORU
+3327;3327;3327;30C8 30F3;30C8 30F3; # (㌧; ㌧; ㌧; トン; トン; ) SQUARE TON
+3328;3328;3328;30CA 30CE;30CA 30CE; # (㌨; ㌨; ㌨; ナノ; ナノ; ) SQUARE NANO
+3329;3329;3329;30CE 30C3 30C8;30CE 30C3 30C8; # (㌩; ㌩; ㌩; ノット; ノット; ) SQUARE NOTTO
+332A;332A;332A;30CF 30A4 30C4;30CF 30A4 30C4; # (㌪; ㌪; ㌪; ãƒã‚¤ãƒ„; ãƒã‚¤ãƒ„; ) SQUARE HAITU
+332B;332B;332B;30D1 30FC 30BB 30F3 30C8;30CF 309A 30FC 30BB 30F3 30C8; # (㌫; ㌫; ㌫; パーセント; ãƒâ—Œã‚šãƒ¼ã‚»ãƒ³ãƒˆ; ) SQUARE PAASENTO
+332C;332C;332C;30D1 30FC 30C4;30CF 309A 30FC 30C4; # (㌬; ㌬; ㌬; パーツ; ãƒâ—Œã‚šãƒ¼ãƒ„; ) SQUARE PAATU
+332D;332D;332D;30D0 30FC 30EC 30EB;30CF 3099 30FC 30EC 30EB; # (㌭; ㌭; ㌭; ãƒãƒ¼ãƒ¬ãƒ«; ãƒâ—Œã‚™ãƒ¼ãƒ¬ãƒ«; ) SQUARE BAARERU
+332E;332E;332E;30D4 30A2 30B9 30C8 30EB;30D2 309A 30A2 30B9 30C8 30EB; # (㌮; ㌮; ㌮; ピアストル; ヒ◌゚アストル; ) SQUARE PIASUTORU
+332F;332F;332F;30D4 30AF 30EB;30D2 309A 30AF 30EB; # (㌯; ㌯; ㌯; ピクル; ヒ◌゚クル; ) SQUARE PIKURU
+3330;3330;3330;30D4 30B3;30D2 309A 30B3; # (㌰; ㌰; ㌰; ピコ; ヒ◌゚コ; ) SQUARE PIKO
+3331;3331;3331;30D3 30EB;30D2 3099 30EB; # (㌱; ㌱; ㌱; ビル; ヒ◌゙ル; ) SQUARE BIRU
+3332;3332;3332;30D5 30A1 30E9 30C3 30C9;30D5 30A1 30E9 30C3 30C8 3099; # (㌲; ㌲; ㌲; ファラッド; ファラット◌゙; ) SQUARE HUARADDO
+3333;3333;3333;30D5 30A3 30FC 30C8;30D5 30A3 30FC 30C8; # (㌳; ㌳; ㌳; フィート; フィート; ) SQUARE HUIITO
+3334;3334;3334;30D6 30C3 30B7 30A7 30EB;30D5 3099 30C3 30B7 30A7 30EB; # (㌴; ㌴; ㌴; ブッシェル; フ◌゙ッシェル; ) SQUARE BUSSYERU
+3335;3335;3335;30D5 30E9 30F3;30D5 30E9 30F3; # (㌵; ㌵; ㌵; フラン; フラン; ) SQUARE HURAN
+3336;3336;3336;30D8 30AF 30BF 30FC 30EB;30D8 30AF 30BF 30FC 30EB; # (㌶; ㌶; ㌶; ヘクタール; ヘクタール; ) SQUARE HEKUTAARU
+3337;3337;3337;30DA 30BD;30D8 309A 30BD; # (㌷; ㌷; ㌷; ペソ; ヘ◌゚ソ; ) SQUARE PESO
+3338;3338;3338;30DA 30CB 30D2;30D8 309A 30CB 30D2; # (㌸; ㌸; ㌸; ペニヒ; ヘ◌゚ニヒ; ) SQUARE PENIHI
+3339;3339;3339;30D8 30EB 30C4;30D8 30EB 30C4; # (㌹; ㌹; ㌹; ヘルツ; ヘルツ; ) SQUARE HERUTU
+333A;333A;333A;30DA 30F3 30B9;30D8 309A 30F3 30B9; # (㌺; ㌺; ㌺; ペンス; ヘ◌゚ンス; ) SQUARE PENSU
+333B;333B;333B;30DA 30FC 30B8;30D8 309A 30FC 30B7 3099; # (㌻; ㌻; ㌻; ページ; ヘ◌゚ーシ◌゙; ) SQUARE PEEZI
+333C;333C;333C;30D9 30FC 30BF;30D8 3099 30FC 30BF; # (㌼; ㌼; ㌼; ベータ; ヘ◌゙ータ; ) SQUARE BEETA
+333D;333D;333D;30DD 30A4 30F3 30C8;30DB 309A 30A4 30F3 30C8; # (㌽; ㌽; ㌽; ãƒã‚¤ãƒ³ãƒˆ; ホ◌゚イント; ) SQUARE POINTO
+333E;333E;333E;30DC 30EB 30C8;30DB 3099 30EB 30C8; # (㌾; ㌾; ㌾; ボルト; ホ◌゙ルト; ) SQUARE BORUTO
+333F;333F;333F;30DB 30F3;30DB 30F3; # (㌿; ㌿; ㌿; ホン; ホン; ) SQUARE HON
+3340;3340;3340;30DD 30F3 30C9;30DB 309A 30F3 30C8 3099; # (ã€; ã€; ã€; ãƒãƒ³ãƒ‰; ホ◌゚ント◌゙; ) SQUARE PONDO
+3341;3341;3341;30DB 30FC 30EB;30DB 30FC 30EB; # (ã; ã; ã; ホール; ホール; ) SQUARE HOORU
+3342;3342;3342;30DB 30FC 30F3;30DB 30FC 30F3; # (ã‚; ã‚; ã‚; ホーン; ホーン; ) SQUARE HOON
+3343;3343;3343;30DE 30A4 30AF 30ED;30DE 30A4 30AF 30ED; # (ãƒ; ãƒ; ãƒ; マイクロ; マイクロ; ) SQUARE MAIKURO
+3344;3344;3344;30DE 30A4 30EB;30DE 30A4 30EB; # (ã„; ã„; ã„; マイル; マイル; ) SQUARE MAIRU
+3345;3345;3345;30DE 30C3 30CF;30DE 30C3 30CF; # (ã…; ã…; ã…; マッãƒ; マッãƒ; ) SQUARE MAHHA
+3346;3346;3346;30DE 30EB 30AF;30DE 30EB 30AF; # (ã†; ã†; ã†; マルク; マルク; ) SQUARE MARUKU
+3347;3347;3347;30DE 30F3 30B7 30E7 30F3;30DE 30F3 30B7 30E7 30F3; # (ã‡; ã‡; ã‡; マンション; マンション; ) SQUARE MANSYON
+3348;3348;3348;30DF 30AF 30ED 30F3;30DF 30AF 30ED 30F3; # (ãˆ; ãˆ; ãˆ; ミクロン; ミクロン; ) SQUARE MIKURON
+3349;3349;3349;30DF 30EA;30DF 30EA; # (ã‰; ã‰; ã‰; ミリ; ミリ; ) SQUARE MIRI
+334A;334A;334A;30DF 30EA 30D0 30FC 30EB;30DF 30EA 30CF 3099 30FC 30EB; # (ãŠ; ãŠ; ãŠ; ミリãƒãƒ¼ãƒ«; ミリãƒâ—Œã‚™ãƒ¼ãƒ«; ) SQUARE MIRIBAARU
+334B;334B;334B;30E1 30AC;30E1 30AB 3099; # (ã‹; ã‹; ã‹; メガ; メカ◌゙; ) SQUARE MEGA
+334C;334C;334C;30E1 30AC 30C8 30F3;30E1 30AB 3099 30C8 30F3; # (ãŒ; ãŒ; ãŒ; メガトン; メカ◌゙トン; ) SQUARE MEGATON
+334D;334D;334D;30E1 30FC 30C8 30EB;30E1 30FC 30C8 30EB; # (ã; ã; ã; メートル; メートル; ) SQUARE MEETORU
+334E;334E;334E;30E4 30FC 30C9;30E4 30FC 30C8 3099; # (ãŽ; ãŽ; ãŽ; ヤード; ヤート◌゙; ) SQUARE YAADO
+334F;334F;334F;30E4 30FC 30EB;30E4 30FC 30EB; # (ã; ã; ã; ヤール; ヤール; ) SQUARE YAARU
+3350;3350;3350;30E6 30A2 30F3;30E6 30A2 30F3; # (ã; ã; ã; ユアン; ユアン; ) SQUARE YUAN
+3351;3351;3351;30EA 30C3 30C8 30EB;30EA 30C3 30C8 30EB; # (ã‘; ã‘; ã‘; リットル; リットル; ) SQUARE RITTORU
+3352;3352;3352;30EA 30E9;30EA 30E9; # (ã’; ã’; ã’; リラ; リラ; ) SQUARE RIRA
+3353;3353;3353;30EB 30D4 30FC;30EB 30D2 309A 30FC; # (ã“; ã“; ã“; ルピー; ルヒ◌゚ー; ) SQUARE RUPII
+3354;3354;3354;30EB 30FC 30D6 30EB;30EB 30FC 30D5 3099 30EB; # (ã”; ã”; ã”; ルーブル; ルーフ◌゙ル; ) SQUARE RUUBURU
+3355;3355;3355;30EC 30E0;30EC 30E0; # (ã•; ã•; ã•; レム; レム; ) SQUARE REMU
+3356;3356;3356;30EC 30F3 30C8 30B2 30F3;30EC 30F3 30C8 30B1 3099 30F3; # (ã–; ã–; ã–; レントゲン; レントケ◌゙ン; ) SQUARE RENTOGEN
+3357;3357;3357;30EF 30C3 30C8;30EF 30C3 30C8; # (ã—; ã—; ã—; ワット; ワット; ) SQUARE WATTO
+3358;3358;3358;0030 70B9;0030 70B9; # (ã˜; ã˜; ã˜; 0点; 0点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+3359;3359;3359;0031 70B9;0031 70B9; # (ã™; ã™; ã™; 1点; 1点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+335A;335A;335A;0032 70B9;0032 70B9; # (ãš; ãš; ãš; 2点; 2点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+335B;335B;335B;0033 70B9;0033 70B9; # (ã›; ã›; ã›; 3点; 3点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+335C;335C;335C;0034 70B9;0034 70B9; # (ãœ; ãœ; ãœ; 4点; 4点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+335D;335D;335D;0035 70B9;0035 70B9; # (ã; ã; ã; 5点; 5点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+335E;335E;335E;0036 70B9;0036 70B9; # (ãž; ãž; ãž; 6点; 6点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+335F;335F;335F;0037 70B9;0037 70B9; # (ãŸ; ãŸ; ãŸ; 7点; 7点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+3360;3360;3360;0038 70B9;0038 70B9; # (ã ; ã ; ã ; 8点; 8点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+3361;3361;3361;0039 70B9;0039 70B9; # (ã¡; ã¡; ã¡; 9点; 9点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+3362;3362;3362;0031 0030 70B9;0031 0030 70B9; # (ã¢; ã¢; ã¢; 10点; 10点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+3363;3363;3363;0031 0031 70B9;0031 0031 70B9; # (ã£; ã£; ã£; 11点; 11点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+3364;3364;3364;0031 0032 70B9;0031 0032 70B9; # (ã¤; ã¤; ã¤; 12点; 12点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+3365;3365;3365;0031 0033 70B9;0031 0033 70B9; # (ã¥; ã¥; ã¥; 13点; 13点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+3366;3366;3366;0031 0034 70B9;0031 0034 70B9; # (ã¦; ã¦; ã¦; 14点; 14点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+3367;3367;3367;0031 0035 70B9;0031 0035 70B9; # (ã§; ã§; ã§; 15点; 15点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+3368;3368;3368;0031 0036 70B9;0031 0036 70B9; # (ã¨; ã¨; ã¨; 16点; 16点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+3369;3369;3369;0031 0037 70B9;0031 0037 70B9; # (ã©; ã©; ã©; 17点; 17点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+336A;336A;336A;0031 0038 70B9;0031 0038 70B9; # (ãª; ãª; ãª; 18点; 18点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+336B;336B;336B;0031 0039 70B9;0031 0039 70B9; # (ã«; ã«; ã«; 19点; 19点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+336C;336C;336C;0032 0030 70B9;0032 0030 70B9; # (ã¬; ã¬; ã¬; 20点; 20点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+336D;336D;336D;0032 0031 70B9;0032 0031 70B9; # (ã­; ã­; ã­; 21点; 21点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+336E;336E;336E;0032 0032 70B9;0032 0032 70B9; # (ã®; ã®; ã®; 22点; 22点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+336F;336F;336F;0032 0033 70B9;0032 0033 70B9; # (ã¯; ã¯; ã¯; 23点; 23点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+3370;3370;3370;0032 0034 70B9;0032 0034 70B9; # (ã°; ã°; ã°; 24点; 24点; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+3371;3371;3371;0068 0050 0061;0068 0050 0061; # (ã±; ã±; ã±; hPa; hPa; ) SQUARE HPA
+3372;3372;3372;0064 0061;0064 0061; # (ã²; ã²; ã²; da; da; ) SQUARE DA
+3373;3373;3373;0041 0055;0041 0055; # (ã³; ã³; ã³; AU; AU; ) SQUARE AU
+3374;3374;3374;0062 0061 0072;0062 0061 0072; # (ã´; ã´; ã´; bar; bar; ) SQUARE BAR
+3375;3375;3375;006F 0056;006F 0056; # (ãµ; ãµ; ãµ; oV; oV; ) SQUARE OV
+3376;3376;3376;0070 0063;0070 0063; # (ã¶; ã¶; ã¶; pc; pc; ) SQUARE PC
+3377;3377;3377;0064 006D;0064 006D; # (ã·; ã·; ã·; dm; dm; ) SQUARE DM
+3378;3378;3378;0064 006D 0032;0064 006D 0032; # (ã¸; ã¸; ã¸; dm2; dm2; ) SQUARE DM SQUARED
+3379;3379;3379;0064 006D 0033;0064 006D 0033; # (ã¹; ã¹; ã¹; dm3; dm3; ) SQUARE DM CUBED
+337A;337A;337A;0049 0055;0049 0055; # (ãº; ãº; ãº; IU; IU; ) SQUARE IU
+337B;337B;337B;5E73 6210;5E73 6210; # (ã»; ã»; ã»; å¹³æˆ; å¹³æˆ; ) SQUARE ERA NAME HEISEI
+337C;337C;337C;662D 548C;662D 548C; # (ã¼; ã¼; ã¼; 昭和; 昭和; ) SQUARE ERA NAME SYOUWA
+337D;337D;337D;5927 6B63;5927 6B63; # (ã½; ã½; ã½; 大正; 大正; ) SQUARE ERA NAME TAISYOU
+337E;337E;337E;660E 6CBB;660E 6CBB; # (ã¾; ã¾; ã¾; 明治; 明治; ) SQUARE ERA NAME MEIZI
+337F;337F;337F;682A 5F0F 4F1A 793E;682A 5F0F 4F1A 793E; # (ã¿; ã¿; ã¿; æ ªå¼ä¼šç¤¾; æ ªå¼ä¼šç¤¾; ) SQUARE CORPORATION
+3380;3380;3380;0070 0041;0070 0041; # (㎀; ㎀; ㎀; pA; pA; ) SQUARE PA AMPS
+3381;3381;3381;006E 0041;006E 0041; # (ãŽ; ãŽ; ãŽ; nA; nA; ) SQUARE NA
+3382;3382;3382;03BC 0041;03BC 0041; # (㎂; ㎂; ㎂; μA; μA; ) SQUARE MU A
+3383;3383;3383;006D 0041;006D 0041; # (㎃; ㎃; ㎃; mA; mA; ) SQUARE MA
+3384;3384;3384;006B 0041;006B 0041; # (㎄; ㎄; ㎄; kA; kA; ) SQUARE KA
+3385;3385;3385;004B 0042;004B 0042; # (㎅; ㎅; ㎅; KB; KB; ) SQUARE KB
+3386;3386;3386;004D 0042;004D 0042; # (㎆; ㎆; ㎆; MB; MB; ) SQUARE MB
+3387;3387;3387;0047 0042;0047 0042; # (㎇; ㎇; ㎇; GB; GB; ) SQUARE GB
+3388;3388;3388;0063 0061 006C;0063 0061 006C; # (㎈; ㎈; ㎈; cal; cal; ) SQUARE CAL
+3389;3389;3389;006B 0063 0061 006C;006B 0063 0061 006C; # (㎉; ㎉; ㎉; kcal; kcal; ) SQUARE KCAL
+338A;338A;338A;0070 0046;0070 0046; # (㎊; ㎊; ㎊; pF; pF; ) SQUARE PF
+338B;338B;338B;006E 0046;006E 0046; # (㎋; ㎋; ㎋; nF; nF; ) SQUARE NF
+338C;338C;338C;03BC 0046;03BC 0046; # (㎌; ㎌; ㎌; μF; μF; ) SQUARE MU F
+338D;338D;338D;03BC 0067;03BC 0067; # (ãŽ; ãŽ; ãŽ; μg; μg; ) SQUARE MU G
+338E;338E;338E;006D 0067;006D 0067; # (㎎; ㎎; ㎎; mg; mg; ) SQUARE MG
+338F;338F;338F;006B 0067;006B 0067; # (ãŽ; ãŽ; ãŽ; kg; kg; ) SQUARE KG
+3390;3390;3390;0048 007A;0048 007A; # (ãŽ; ãŽ; ãŽ; Hz; Hz; ) SQUARE HZ
+3391;3391;3391;006B 0048 007A;006B 0048 007A; # (㎑; ㎑; ㎑; kHz; kHz; ) SQUARE KHZ
+3392;3392;3392;004D 0048 007A;004D 0048 007A; # (㎒; ㎒; ㎒; MHz; MHz; ) SQUARE MHZ
+3393;3393;3393;0047 0048 007A;0047 0048 007A; # (㎓; ㎓; ㎓; GHz; GHz; ) SQUARE GHZ
+3394;3394;3394;0054 0048 007A;0054 0048 007A; # (㎔; ㎔; ㎔; THz; THz; ) SQUARE THZ
+3395;3395;3395;03BC 006C;03BC 006C; # (㎕; ㎕; ㎕; μl; μl; ) SQUARE MU L
+3396;3396;3396;006D 006C;006D 006C; # (㎖; ㎖; ㎖; ml; ml; ) SQUARE ML
+3397;3397;3397;0064 006C;0064 006C; # (㎗; ㎗; ㎗; dl; dl; ) SQUARE DL
+3398;3398;3398;006B 006C;006B 006C; # (㎘; ㎘; ㎘; kl; kl; ) SQUARE KL
+3399;3399;3399;0066 006D;0066 006D; # (㎙; ㎙; ㎙; fm; fm; ) SQUARE FM
+339A;339A;339A;006E 006D;006E 006D; # (㎚; ㎚; ㎚; nm; nm; ) SQUARE NM
+339B;339B;339B;03BC 006D;03BC 006D; # (㎛; ㎛; ㎛; μm; μm; ) SQUARE MU M
+339C;339C;339C;006D 006D;006D 006D; # (㎜; ㎜; ㎜; mm; mm; ) SQUARE MM
+339D;339D;339D;0063 006D;0063 006D; # (ãŽ; ãŽ; ãŽ; cm; cm; ) SQUARE CM
+339E;339E;339E;006B 006D;006B 006D; # (㎞; ㎞; ㎞; km; km; ) SQUARE KM
+339F;339F;339F;006D 006D 0032;006D 006D 0032; # (㎟; ㎟; ㎟; mm2; mm2; ) SQUARE MM SQUARED
+33A0;33A0;33A0;0063 006D 0032;0063 006D 0032; # (㎠; ㎠; ㎠; cm2; cm2; ) SQUARE CM SQUARED
+33A1;33A1;33A1;006D 0032;006D 0032; # (㎡; ㎡; ㎡; m2; m2; ) SQUARE M SQUARED
+33A2;33A2;33A2;006B 006D 0032;006B 006D 0032; # (㎢; ㎢; ㎢; km2; km2; ) SQUARE KM SQUARED
+33A3;33A3;33A3;006D 006D 0033;006D 006D 0033; # (㎣; ㎣; ㎣; mm3; mm3; ) SQUARE MM CUBED
+33A4;33A4;33A4;0063 006D 0033;0063 006D 0033; # (㎤; ㎤; ㎤; cm3; cm3; ) SQUARE CM CUBED
+33A5;33A5;33A5;006D 0033;006D 0033; # (㎥; ㎥; ㎥; m3; m3; ) SQUARE M CUBED
+33A6;33A6;33A6;006B 006D 0033;006B 006D 0033; # (㎦; ㎦; ㎦; km3; km3; ) SQUARE KM CUBED
+33A7;33A7;33A7;006D 2215 0073;006D 2215 0073; # (㎧; ㎧; ㎧; m∕s; m∕s; ) SQUARE M OVER S
+33A8;33A8;33A8;006D 2215 0073 0032;006D 2215 0073 0032; # (㎨; ㎨; ㎨; m∕s2; m∕s2; ) SQUARE M OVER S SQUARED
+33A9;33A9;33A9;0050 0061;0050 0061; # (㎩; ㎩; ㎩; Pa; Pa; ) SQUARE PA
+33AA;33AA;33AA;006B 0050 0061;006B 0050 0061; # (㎪; ㎪; ㎪; kPa; kPa; ) SQUARE KPA
+33AB;33AB;33AB;004D 0050 0061;004D 0050 0061; # (㎫; ㎫; ㎫; MPa; MPa; ) SQUARE MPA
+33AC;33AC;33AC;0047 0050 0061;0047 0050 0061; # (㎬; ㎬; ㎬; GPa; GPa; ) SQUARE GPA
+33AD;33AD;33AD;0072 0061 0064;0072 0061 0064; # (㎭; ㎭; ㎭; rad; rad; ) SQUARE RAD
+33AE;33AE;33AE;0072 0061 0064 2215 0073;0072 0061 0064 2215 0073; # (㎮; ㎮; ㎮; rad∕s; rad∕s; ) SQUARE RAD OVER S
+33AF;33AF;33AF;0072 0061 0064 2215 0073 0032;0072 0061 0064 2215 0073 0032; # (㎯; ㎯; ㎯; rad∕s2; rad∕s2; ) SQUARE RAD OVER S SQUARED
+33B0;33B0;33B0;0070 0073;0070 0073; # (㎰; ㎰; ㎰; ps; ps; ) SQUARE PS
+33B1;33B1;33B1;006E 0073;006E 0073; # (㎱; ㎱; ㎱; ns; ns; ) SQUARE NS
+33B2;33B2;33B2;03BC 0073;03BC 0073; # (㎲; ㎲; ㎲; μs; μs; ) SQUARE MU S
+33B3;33B3;33B3;006D 0073;006D 0073; # (㎳; ㎳; ㎳; ms; ms; ) SQUARE MS
+33B4;33B4;33B4;0070 0056;0070 0056; # (㎴; ㎴; ㎴; pV; pV; ) SQUARE PV
+33B5;33B5;33B5;006E 0056;006E 0056; # (㎵; ㎵; ㎵; nV; nV; ) SQUARE NV
+33B6;33B6;33B6;03BC 0056;03BC 0056; # (㎶; ㎶; ㎶; μV; μV; ) SQUARE MU V
+33B7;33B7;33B7;006D 0056;006D 0056; # (㎷; ㎷; ㎷; mV; mV; ) SQUARE MV
+33B8;33B8;33B8;006B 0056;006B 0056; # (㎸; ㎸; ㎸; kV; kV; ) SQUARE KV
+33B9;33B9;33B9;004D 0056;004D 0056; # (㎹; ㎹; ㎹; MV; MV; ) SQUARE MV MEGA
+33BA;33BA;33BA;0070 0057;0070 0057; # (㎺; ㎺; ㎺; pW; pW; ) SQUARE PW
+33BB;33BB;33BB;006E 0057;006E 0057; # (㎻; ㎻; ㎻; nW; nW; ) SQUARE NW
+33BC;33BC;33BC;03BC 0057;03BC 0057; # (㎼; ㎼; ㎼; μW; μW; ) SQUARE MU W
+33BD;33BD;33BD;006D 0057;006D 0057; # (㎽; ㎽; ㎽; mW; mW; ) SQUARE MW
+33BE;33BE;33BE;006B 0057;006B 0057; # (㎾; ㎾; ㎾; kW; kW; ) SQUARE KW
+33BF;33BF;33BF;004D 0057;004D 0057; # (㎿; ㎿; ㎿; MW; MW; ) SQUARE MW MEGA
+33C0;33C0;33C0;006B 03A9;006B 03A9; # (ã€; ã€; ã€; kΩ; kΩ; ) SQUARE K OHM
+33C1;33C1;33C1;004D 03A9;004D 03A9; # (ã; ã; ã; MΩ; MΩ; ) SQUARE M OHM
+33C2;33C2;33C2;0061 002E 006D 002E;0061 002E 006D 002E; # (ã‚; ã‚; ã‚; a.m.; a.m.; ) SQUARE AM
+33C3;33C3;33C3;0042 0071;0042 0071; # (ãƒ; ãƒ; ãƒ; Bq; Bq; ) SQUARE BQ
+33C4;33C4;33C4;0063 0063;0063 0063; # (ã„; ã„; ã„; cc; cc; ) SQUARE CC
+33C5;33C5;33C5;0063 0064;0063 0064; # (ã…; ã…; ã…; cd; cd; ) SQUARE CD
+33C6;33C6;33C6;0043 2215 006B 0067;0043 2215 006B 0067; # (ã†; ã†; ã†; C∕kg; C∕kg; ) SQUARE C OVER KG
+33C7;33C7;33C7;0043 006F 002E;0043 006F 002E; # (ã‡; ã‡; ã‡; Co.; Co.; ) SQUARE CO
+33C8;33C8;33C8;0064 0042;0064 0042; # (ãˆ; ãˆ; ãˆ; dB; dB; ) SQUARE DB
+33C9;33C9;33C9;0047 0079;0047 0079; # (ã‰; ã‰; ã‰; Gy; Gy; ) SQUARE GY
+33CA;33CA;33CA;0068 0061;0068 0061; # (ãŠ; ãŠ; ãŠ; ha; ha; ) SQUARE HA
+33CB;33CB;33CB;0048 0050;0048 0050; # (ã‹; ã‹; ã‹; HP; HP; ) SQUARE HP
+33CC;33CC;33CC;0069 006E;0069 006E; # (ãŒ; ãŒ; ãŒ; in; in; ) SQUARE IN
+33CD;33CD;33CD;004B 004B;004B 004B; # (ã; ã; ã; KK; KK; ) SQUARE KK
+33CE;33CE;33CE;004B 004D;004B 004D; # (ãŽ; ãŽ; ãŽ; KM; KM; ) SQUARE KM CAPITAL
+33CF;33CF;33CF;006B 0074;006B 0074; # (ã; ã; ã; kt; kt; ) SQUARE KT
+33D0;33D0;33D0;006C 006D;006C 006D; # (ã; ã; ã; lm; lm; ) SQUARE LM
+33D1;33D1;33D1;006C 006E;006C 006E; # (ã‘; ã‘; ã‘; ln; ln; ) SQUARE LN
+33D2;33D2;33D2;006C 006F 0067;006C 006F 0067; # (ã’; ã’; ã’; log; log; ) SQUARE LOG
+33D3;33D3;33D3;006C 0078;006C 0078; # (ã“; ã“; ã“; lx; lx; ) SQUARE LX
+33D4;33D4;33D4;006D 0062;006D 0062; # (ã”; ã”; ã”; mb; mb; ) SQUARE MB SMALL
+33D5;33D5;33D5;006D 0069 006C;006D 0069 006C; # (ã•; ã•; ã•; mil; mil; ) SQUARE MIL
+33D6;33D6;33D6;006D 006F 006C;006D 006F 006C; # (ã–; ã–; ã–; mol; mol; ) SQUARE MOL
+33D7;33D7;33D7;0050 0048;0050 0048; # (ã—; ã—; ã—; PH; PH; ) SQUARE PH
+33D8;33D8;33D8;0070 002E 006D 002E;0070 002E 006D 002E; # (ã˜; ã˜; ã˜; p.m.; p.m.; ) SQUARE PM
+33D9;33D9;33D9;0050 0050 004D;0050 0050 004D; # (ã™; ã™; ã™; PPM; PPM; ) SQUARE PPM
+33DA;33DA;33DA;0050 0052;0050 0052; # (ãš; ãš; ãš; PR; PR; ) SQUARE PR
+33DB;33DB;33DB;0073 0072;0073 0072; # (ã›; ã›; ã›; sr; sr; ) SQUARE SR
+33DC;33DC;33DC;0053 0076;0053 0076; # (ãœ; ãœ; ãœ; Sv; Sv; ) SQUARE SV
+33DD;33DD;33DD;0057 0062;0057 0062; # (ã; ã; ã; Wb; Wb; ) SQUARE WB
+33DE;33DE;33DE;0056 2215 006D;0056 2215 006D; # (ãž; ãž; ãž; V∕m; V∕m; ) SQUARE V OVER M
+33DF;33DF;33DF;0041 2215 006D;0041 2215 006D; # (ãŸ; ãŸ; ãŸ; A∕m; A∕m; ) SQUARE A OVER M
+33E0;33E0;33E0;0031 65E5;0031 65E5; # (ã ; ã ; ã ; 1æ—¥; 1æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+33E1;33E1;33E1;0032 65E5;0032 65E5; # (ã¡; ã¡; ã¡; 2æ—¥; 2æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+33E2;33E2;33E2;0033 65E5;0033 65E5; # (ã¢; ã¢; ã¢; 3æ—¥; 3æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+33E3;33E3;33E3;0034 65E5;0034 65E5; # (ã£; ã£; ã£; 4æ—¥; 4æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+33E4;33E4;33E4;0035 65E5;0035 65E5; # (ã¤; ã¤; ã¤; 5æ—¥; 5æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+33E5;33E5;33E5;0036 65E5;0036 65E5; # (ã¥; ã¥; ã¥; 6æ—¥; 6æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+33E6;33E6;33E6;0037 65E5;0037 65E5; # (ã¦; ã¦; ã¦; 7æ—¥; 7æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+33E7;33E7;33E7;0038 65E5;0038 65E5; # (ã§; ã§; ã§; 8æ—¥; 8æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+33E8;33E8;33E8;0039 65E5;0039 65E5; # (ã¨; ã¨; ã¨; 9æ—¥; 9æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+33E9;33E9;33E9;0031 0030 65E5;0031 0030 65E5; # (ã©; ã©; ã©; 10æ—¥; 10æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+33EA;33EA;33EA;0031 0031 65E5;0031 0031 65E5; # (ãª; ãª; ãª; 11æ—¥; 11æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+33EB;33EB;33EB;0031 0032 65E5;0031 0032 65E5; # (ã«; ã«; ã«; 12æ—¥; 12æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+33EC;33EC;33EC;0031 0033 65E5;0031 0033 65E5; # (ã¬; ã¬; ã¬; 13æ—¥; 13æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+33ED;33ED;33ED;0031 0034 65E5;0031 0034 65E5; # (ã­; ã­; ã­; 14æ—¥; 14æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+33EE;33EE;33EE;0031 0035 65E5;0031 0035 65E5; # (ã®; ã®; ã®; 15æ—¥; 15æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+33EF;33EF;33EF;0031 0036 65E5;0031 0036 65E5; # (ã¯; ã¯; ã¯; 16æ—¥; 16æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+33F0;33F0;33F0;0031 0037 65E5;0031 0037 65E5; # (ã°; ã°; ã°; 17æ—¥; 17æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+33F1;33F1;33F1;0031 0038 65E5;0031 0038 65E5; # (ã±; ã±; ã±; 18æ—¥; 18æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+33F2;33F2;33F2;0031 0039 65E5;0031 0039 65E5; # (ã²; ã²; ã²; 19æ—¥; 19æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+33F3;33F3;33F3;0032 0030 65E5;0032 0030 65E5; # (ã³; ã³; ã³; 20æ—¥; 20æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+33F4;33F4;33F4;0032 0031 65E5;0032 0031 65E5; # (ã´; ã´; ã´; 21æ—¥; 21æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+33F5;33F5;33F5;0032 0032 65E5;0032 0032 65E5; # (ãµ; ãµ; ãµ; 22æ—¥; 22æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+33F6;33F6;33F6;0032 0033 65E5;0032 0033 65E5; # (ã¶; ã¶; ã¶; 23æ—¥; 23æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+33F7;33F7;33F7;0032 0034 65E5;0032 0034 65E5; # (ã·; ã·; ã·; 24æ—¥; 24æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+33F8;33F8;33F8;0032 0035 65E5;0032 0035 65E5; # (ã¸; ã¸; ã¸; 25æ—¥; 25æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+33F9;33F9;33F9;0032 0036 65E5;0032 0036 65E5; # (ã¹; ã¹; ã¹; 26æ—¥; 26æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+33FA;33FA;33FA;0032 0037 65E5;0032 0037 65E5; # (ãº; ãº; ãº; 27æ—¥; 27æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+33FB;33FB;33FB;0032 0038 65E5;0032 0038 65E5; # (ã»; ã»; ã»; 28æ—¥; 28æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+33FC;33FC;33FC;0032 0039 65E5;0032 0039 65E5; # (ã¼; ã¼; ã¼; 29æ—¥; 29æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+33FD;33FD;33FD;0033 0030 65E5;0033 0030 65E5; # (ã½; ã½; ã½; 30æ—¥; 30æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+33FE;33FE;33FE;0033 0031 65E5;0033 0031 65E5; # (ã¾; ã¾; ã¾; 31æ—¥; 31æ—¥; ) IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+33FF;33FF;33FF;0067 0061 006C;0067 0061 006C; # (ã¿; ã¿; ã¿; gal; gal; ) SQUARE GAL
+AC00;AC00;1100 1161;AC00;1100 1161; # (가; 가; 가; 가; 가; ) HANGUL SYLLABLE GA
+AC01;AC01;1100 1161 11A8;AC01;1100 1161 11A8; # (ê°; ê°; 각; ê°; 각; ) HANGUL SYLLABLE GAG
+AC02;AC02;1100 1161 11A9;AC02;1100 1161 11A9; # (갂; 갂; 갂; 갂; 갂; ) HANGUL SYLLABLE GAGG
+AC03;AC03;1100 1161 11AA;AC03;1100 1161 11AA; # (갃; 갃; 갃; 갃; 갃; ) HANGUL SYLLABLE GAGS
+AC04;AC04;1100 1161 11AB;AC04;1100 1161 11AB; # (간; 간; 간; 간; 간; ) HANGUL SYLLABLE GAN
+AC05;AC05;1100 1161 11AC;AC05;1100 1161 11AC; # (갅; 갅; 갅; 갅; 갅; ) HANGUL SYLLABLE GANJ
+AC06;AC06;1100 1161 11AD;AC06;1100 1161 11AD; # (갆; 갆; 갆; 갆; 갆; ) HANGUL SYLLABLE GANH
+AC07;AC07;1100 1161 11AE;AC07;1100 1161 11AE; # (갇; 갇; 갇; 갇; 갇; ) HANGUL SYLLABLE GAD
+AC08;AC08;1100 1161 11AF;AC08;1100 1161 11AF; # (갈; 갈; 갈; 갈; 갈; ) HANGUL SYLLABLE GAL
+AC09;AC09;1100 1161 11B0;AC09;1100 1161 11B0; # (갉; 갉; 갉; 갉; 갉; ) HANGUL SYLLABLE GALG
+AC0A;AC0A;1100 1161 11B1;AC0A;1100 1161 11B1; # (갊; 갊; 갊; 갊; 갊; ) HANGUL SYLLABLE GALM
+AC0B;AC0B;1100 1161 11B2;AC0B;1100 1161 11B2; # (갋; 갋; 갋; 갋; 갋; ) HANGUL SYLLABLE GALB
+AC0C;AC0C;1100 1161 11B3;AC0C;1100 1161 11B3; # (갌; 갌; 갌; 갌; 갌; ) HANGUL SYLLABLE GALS
+AC0D;AC0D;1100 1161 11B4;AC0D;1100 1161 11B4; # (ê°; ê°; 갍; ê°; 갍; ) HANGUL SYLLABLE GALT
+AC0E;AC0E;1100 1161 11B5;AC0E;1100 1161 11B5; # (갎; 갎; 갎; 갎; 갎; ) HANGUL SYLLABLE GALP
+AC0F;AC0F;1100 1161 11B6;AC0F;1100 1161 11B6; # (ê°; ê°; 갏; ê°; 갏; ) HANGUL SYLLABLE GALH
+AC10;AC10;1100 1161 11B7;AC10;1100 1161 11B7; # (ê°; ê°; 감; ê°; 감; ) HANGUL SYLLABLE GAM
+AC11;AC11;1100 1161 11B8;AC11;1100 1161 11B8; # (갑; 갑; 갑; 갑; 갑; ) HANGUL SYLLABLE GAB
+AC12;AC12;1100 1161 11B9;AC12;1100 1161 11B9; # (값; 값; 값; 값; 값; ) HANGUL SYLLABLE GABS
+AC13;AC13;1100 1161 11BA;AC13;1100 1161 11BA; # (갓; 갓; 갓; 갓; 갓; ) HANGUL SYLLABLE GAS
+AC14;AC14;1100 1161 11BB;AC14;1100 1161 11BB; # (갔; 갔; 갔; 갔; 갔; ) HANGUL SYLLABLE GASS
+AC15;AC15;1100 1161 11BC;AC15;1100 1161 11BC; # (강; 강; 강; 강; 강; ) HANGUL SYLLABLE GANG
+AC16;AC16;1100 1161 11BD;AC16;1100 1161 11BD; # (갖; 갖; 갖; 갖; 갖; ) HANGUL SYLLABLE GAJ
+AC17;AC17;1100 1161 11BE;AC17;1100 1161 11BE; # (갗; 갗; 갗; 갗; 갗; ) HANGUL SYLLABLE GAC
+AC18;AC18;1100 1161 11BF;AC18;1100 1161 11BF; # (갘; 갘; 갘; 갘; 갘; ) HANGUL SYLLABLE GAK
+AC19;AC19;1100 1161 11C0;AC19;1100 1161 11C0; # (같; 같; 같; 같; 같; ) HANGUL SYLLABLE GAT
+AC1A;AC1A;1100 1161 11C1;AC1A;1100 1161 11C1; # (ê°š; ê°š; 가á‡; ê°š; 가á‡; ) HANGUL SYLLABLE GAP
+AC1B;AC1B;1100 1161 11C2;AC1B;1100 1161 11C2; # (갛; 갛; 갛; 갛; 갛; ) HANGUL SYLLABLE GAH
+AC1C;AC1C;1100 1162;AC1C;1100 1162; # (개; 개; 개; 개; 개; ) HANGUL SYLLABLE GAE
+AC1D;AC1D;1100 1162 11A8;AC1D;1100 1162 11A8; # (ê°; ê°; 객; ê°; 객; ) HANGUL SYLLABLE GAEG
+AC1E;AC1E;1100 1162 11A9;AC1E;1100 1162 11A9; # (갞; 갞; 갞; 갞; 갞; ) HANGUL SYLLABLE GAEGG
+AC1F;AC1F;1100 1162 11AA;AC1F;1100 1162 11AA; # (갟; 갟; 갟; 갟; 갟; ) HANGUL SYLLABLE GAEGS
+AC20;AC20;1100 1162 11AB;AC20;1100 1162 11AB; # (갠; 갠; 갠; 갠; 갠; ) HANGUL SYLLABLE GAEN
+AC21;AC21;1100 1162 11AC;AC21;1100 1162 11AC; # (갡; 갡; 갡; 갡; 갡; ) HANGUL SYLLABLE GAENJ
+AC22;AC22;1100 1162 11AD;AC22;1100 1162 11AD; # (갢; 갢; 갢; 갢; 갢; ) HANGUL SYLLABLE GAENH
+AC23;AC23;1100 1162 11AE;AC23;1100 1162 11AE; # (갣; 갣; 갣; 갣; 갣; ) HANGUL SYLLABLE GAED
+AC24;AC24;1100 1162 11AF;AC24;1100 1162 11AF; # (갤; 갤; 갤; 갤; 갤; ) HANGUL SYLLABLE GAEL
+AC25;AC25;1100 1162 11B0;AC25;1100 1162 11B0; # (갥; 갥; 갥; 갥; 갥; ) HANGUL SYLLABLE GAELG
+AC26;AC26;1100 1162 11B1;AC26;1100 1162 11B1; # (갦; 갦; 갦; 갦; 갦; ) HANGUL SYLLABLE GAELM
+AC27;AC27;1100 1162 11B2;AC27;1100 1162 11B2; # (갧; 갧; 갧; 갧; 갧; ) HANGUL SYLLABLE GAELB
+AC28;AC28;1100 1162 11B3;AC28;1100 1162 11B3; # (갨; 갨; 갨; 갨; 갨; ) HANGUL SYLLABLE GAELS
+AC29;AC29;1100 1162 11B4;AC29;1100 1162 11B4; # (갩; 갩; 갩; 갩; 갩; ) HANGUL SYLLABLE GAELT
+AC2A;AC2A;1100 1162 11B5;AC2A;1100 1162 11B5; # (갪; 갪; 갪; 갪; 갪; ) HANGUL SYLLABLE GAELP
+AC2B;AC2B;1100 1162 11B6;AC2B;1100 1162 11B6; # (갫; 갫; 갫; 갫; 갫; ) HANGUL SYLLABLE GAELH
+AC2C;AC2C;1100 1162 11B7;AC2C;1100 1162 11B7; # (갬; 갬; 갬; 갬; 갬; ) HANGUL SYLLABLE GAEM
+AC2D;AC2D;1100 1162 11B8;AC2D;1100 1162 11B8; # (갭; 갭; 갭; 갭; 갭; ) HANGUL SYLLABLE GAEB
+AC2E;AC2E;1100 1162 11B9;AC2E;1100 1162 11B9; # (갮; 갮; 갮; 갮; 갮; ) HANGUL SYLLABLE GAEBS
+AC2F;AC2F;1100 1162 11BA;AC2F;1100 1162 11BA; # (갯; 갯; 갯; 갯; 갯; ) HANGUL SYLLABLE GAES
+AC30;AC30;1100 1162 11BB;AC30;1100 1162 11BB; # (갰; 갰; 갰; 갰; 갰; ) HANGUL SYLLABLE GAESS
+AC31;AC31;1100 1162 11BC;AC31;1100 1162 11BC; # (갱; 갱; 갱; 갱; 갱; ) HANGUL SYLLABLE GAENG
+AC32;AC32;1100 1162 11BD;AC32;1100 1162 11BD; # (갲; 갲; 갲; 갲; 갲; ) HANGUL SYLLABLE GAEJ
+AC33;AC33;1100 1162 11BE;AC33;1100 1162 11BE; # (갳; 갳; 갳; 갳; 갳; ) HANGUL SYLLABLE GAEC
+AC34;AC34;1100 1162 11BF;AC34;1100 1162 11BF; # (갴; 갴; 갴; 갴; 갴; ) HANGUL SYLLABLE GAEK
+AC35;AC35;1100 1162 11C0;AC35;1100 1162 11C0; # (갵; 갵; 갵; 갵; 갵; ) HANGUL SYLLABLE GAET
+AC36;AC36;1100 1162 11C1;AC36;1100 1162 11C1; # (ê°¶; ê°¶; 개á‡; ê°¶; 개á‡; ) HANGUL SYLLABLE GAEP
+AC37;AC37;1100 1162 11C2;AC37;1100 1162 11C2; # (갷; 갷; 갷; 갷; 갷; ) HANGUL SYLLABLE GAEH
+AC38;AC38;1100 1163;AC38;1100 1163; # (갸; 갸; 갸; 갸; 갸; ) HANGUL SYLLABLE GYA
+AC39;AC39;1100 1163 11A8;AC39;1100 1163 11A8; # (갹; 갹; 갹; 갹; 갹; ) HANGUL SYLLABLE GYAG
+AC3A;AC3A;1100 1163 11A9;AC3A;1100 1163 11A9; # (갺; 갺; 갺; 갺; 갺; ) HANGUL SYLLABLE GYAGG
+AC3B;AC3B;1100 1163 11AA;AC3B;1100 1163 11AA; # (갻; 갻; 갻; 갻; 갻; ) HANGUL SYLLABLE GYAGS
+AC3C;AC3C;1100 1163 11AB;AC3C;1100 1163 11AB; # (갼; 갼; 갼; 갼; 갼; ) HANGUL SYLLABLE GYAN
+AC3D;AC3D;1100 1163 11AC;AC3D;1100 1163 11AC; # (갽; 갽; 갽; 갽; 갽; ) HANGUL SYLLABLE GYANJ
+AC3E;AC3E;1100 1163 11AD;AC3E;1100 1163 11AD; # (갾; 갾; 갾; 갾; 갾; ) HANGUL SYLLABLE GYANH
+AC3F;AC3F;1100 1163 11AE;AC3F;1100 1163 11AE; # (갿; 갿; 갿; 갿; 갿; ) HANGUL SYLLABLE GYAD
+AC40;AC40;1100 1163 11AF;AC40;1100 1163 11AF; # (걀; 걀; 걀; 걀; 걀; ) HANGUL SYLLABLE GYAL
+AC41;AC41;1100 1163 11B0;AC41;1100 1163 11B0; # (ê±; ê±; 걁; ê±; 걁; ) HANGUL SYLLABLE GYALG
+AC42;AC42;1100 1163 11B1;AC42;1100 1163 11B1; # (걂; 걂; 걂; 걂; 걂; ) HANGUL SYLLABLE GYALM
+AC43;AC43;1100 1163 11B2;AC43;1100 1163 11B2; # (걃; 걃; 걃; 걃; 걃; ) HANGUL SYLLABLE GYALB
+AC44;AC44;1100 1163 11B3;AC44;1100 1163 11B3; # (걄; 걄; 걄; 걄; 걄; ) HANGUL SYLLABLE GYALS
+AC45;AC45;1100 1163 11B4;AC45;1100 1163 11B4; # (걅; 걅; 걅; 걅; 걅; ) HANGUL SYLLABLE GYALT
+AC46;AC46;1100 1163 11B5;AC46;1100 1163 11B5; # (걆; 걆; 걆; 걆; 걆; ) HANGUL SYLLABLE GYALP
+AC47;AC47;1100 1163 11B6;AC47;1100 1163 11B6; # (걇; 걇; 걇; 걇; 걇; ) HANGUL SYLLABLE GYALH
+AC48;AC48;1100 1163 11B7;AC48;1100 1163 11B7; # (걈; 걈; 걈; 걈; 걈; ) HANGUL SYLLABLE GYAM
+AC49;AC49;1100 1163 11B8;AC49;1100 1163 11B8; # (걉; 걉; 걉; 걉; 걉; ) HANGUL SYLLABLE GYAB
+AC4A;AC4A;1100 1163 11B9;AC4A;1100 1163 11B9; # (걊; 걊; 걊; 걊; 걊; ) HANGUL SYLLABLE GYABS
+AC4B;AC4B;1100 1163 11BA;AC4B;1100 1163 11BA; # (걋; 걋; 걋; 걋; 걋; ) HANGUL SYLLABLE GYAS
+AC4C;AC4C;1100 1163 11BB;AC4C;1100 1163 11BB; # (걌; 걌; 걌; 걌; 걌; ) HANGUL SYLLABLE GYASS
+AC4D;AC4D;1100 1163 11BC;AC4D;1100 1163 11BC; # (ê±; ê±; 걍; ê±; 걍; ) HANGUL SYLLABLE GYANG
+AC4E;AC4E;1100 1163 11BD;AC4E;1100 1163 11BD; # (걎; 걎; 걎; 걎; 걎; ) HANGUL SYLLABLE GYAJ
+AC4F;AC4F;1100 1163 11BE;AC4F;1100 1163 11BE; # (ê±; ê±; 걏; ê±; 걏; ) HANGUL SYLLABLE GYAC
+AC50;AC50;1100 1163 11BF;AC50;1100 1163 11BF; # (ê±; ê±; 걐; ê±; 걐; ) HANGUL SYLLABLE GYAK
+AC51;AC51;1100 1163 11C0;AC51;1100 1163 11C0; # (걑; 걑; 걑; 걑; 걑; ) HANGUL SYLLABLE GYAT
+AC52;AC52;1100 1163 11C1;AC52;1100 1163 11C1; # (ê±’; ê±’; 갸á‡; ê±’; 갸á‡; ) HANGUL SYLLABLE GYAP
+AC53;AC53;1100 1163 11C2;AC53;1100 1163 11C2; # (걓; 걓; 걓; 걓; 걓; ) HANGUL SYLLABLE GYAH
+AC54;AC54;1100 1164;AC54;1100 1164; # (걔; 걔; 걔; 걔; 걔; ) HANGUL SYLLABLE GYAE
+AC55;AC55;1100 1164 11A8;AC55;1100 1164 11A8; # (걕; 걕; 걕; 걕; 걕; ) HANGUL SYLLABLE GYAEG
+AC56;AC56;1100 1164 11A9;AC56;1100 1164 11A9; # (걖; 걖; 걖; 걖; 걖; ) HANGUL SYLLABLE GYAEGG
+AC57;AC57;1100 1164 11AA;AC57;1100 1164 11AA; # (걗; 걗; 걗; 걗; 걗; ) HANGUL SYLLABLE GYAEGS
+AC58;AC58;1100 1164 11AB;AC58;1100 1164 11AB; # (걘; 걘; 걘; 걘; 걘; ) HANGUL SYLLABLE GYAEN
+AC59;AC59;1100 1164 11AC;AC59;1100 1164 11AC; # (걙; 걙; 걙; 걙; 걙; ) HANGUL SYLLABLE GYAENJ
+AC5A;AC5A;1100 1164 11AD;AC5A;1100 1164 11AD; # (걚; 걚; 걚; 걚; 걚; ) HANGUL SYLLABLE GYAENH
+AC5B;AC5B;1100 1164 11AE;AC5B;1100 1164 11AE; # (걛; 걛; 걛; 걛; 걛; ) HANGUL SYLLABLE GYAED
+AC5C;AC5C;1100 1164 11AF;AC5C;1100 1164 11AF; # (걜; 걜; 걜; 걜; 걜; ) HANGUL SYLLABLE GYAEL
+AC5D;AC5D;1100 1164 11B0;AC5D;1100 1164 11B0; # (ê±; ê±; 걝; ê±; 걝; ) HANGUL SYLLABLE GYAELG
+AC5E;AC5E;1100 1164 11B1;AC5E;1100 1164 11B1; # (걞; 걞; 걞; 걞; 걞; ) HANGUL SYLLABLE GYAELM
+AC5F;AC5F;1100 1164 11B2;AC5F;1100 1164 11B2; # (걟; 걟; 걟; 걟; 걟; ) HANGUL SYLLABLE GYAELB
+AC60;AC60;1100 1164 11B3;AC60;1100 1164 11B3; # (걠; 걠; 걠; 걠; 걠; ) HANGUL SYLLABLE GYAELS
+AC61;AC61;1100 1164 11B4;AC61;1100 1164 11B4; # (걡; 걡; 걡; 걡; 걡; ) HANGUL SYLLABLE GYAELT
+AC62;AC62;1100 1164 11B5;AC62;1100 1164 11B5; # (걢; 걢; 걢; 걢; 걢; ) HANGUL SYLLABLE GYAELP
+AC63;AC63;1100 1164 11B6;AC63;1100 1164 11B6; # (걣; 걣; 걣; 걣; 걣; ) HANGUL SYLLABLE GYAELH
+AC64;AC64;1100 1164 11B7;AC64;1100 1164 11B7; # (걤; 걤; 걤; 걤; 걤; ) HANGUL SYLLABLE GYAEM
+AC65;AC65;1100 1164 11B8;AC65;1100 1164 11B8; # (걥; 걥; 걥; 걥; 걥; ) HANGUL SYLLABLE GYAEB
+AC66;AC66;1100 1164 11B9;AC66;1100 1164 11B9; # (걦; 걦; 걦; 걦; 걦; ) HANGUL SYLLABLE GYAEBS
+AC67;AC67;1100 1164 11BA;AC67;1100 1164 11BA; # (걧; 걧; 걧; 걧; 걧; ) HANGUL SYLLABLE GYAES
+AC68;AC68;1100 1164 11BB;AC68;1100 1164 11BB; # (걨; 걨; 걨; 걨; 걨; ) HANGUL SYLLABLE GYAESS
+AC69;AC69;1100 1164 11BC;AC69;1100 1164 11BC; # (걩; 걩; 걩; 걩; 걩; ) HANGUL SYLLABLE GYAENG
+AC6A;AC6A;1100 1164 11BD;AC6A;1100 1164 11BD; # (걪; 걪; 걪; 걪; 걪; ) HANGUL SYLLABLE GYAEJ
+AC6B;AC6B;1100 1164 11BE;AC6B;1100 1164 11BE; # (걫; 걫; 걫; 걫; 걫; ) HANGUL SYLLABLE GYAEC
+AC6C;AC6C;1100 1164 11BF;AC6C;1100 1164 11BF; # (걬; 걬; 걬; 걬; 걬; ) HANGUL SYLLABLE GYAEK
+AC6D;AC6D;1100 1164 11C0;AC6D;1100 1164 11C0; # (걭; 걭; 걭; 걭; 걭; ) HANGUL SYLLABLE GYAET
+AC6E;AC6E;1100 1164 11C1;AC6E;1100 1164 11C1; # (ê±®; ê±®; 걔á‡; ê±®; 걔á‡; ) HANGUL SYLLABLE GYAEP
+AC6F;AC6F;1100 1164 11C2;AC6F;1100 1164 11C2; # (걯; 걯; 걯; 걯; 걯; ) HANGUL SYLLABLE GYAEH
+AC70;AC70;1100 1165;AC70;1100 1165; # (거; 거; 거; 거; 거; ) HANGUL SYLLABLE GEO
+AC71;AC71;1100 1165 11A8;AC71;1100 1165 11A8; # (걱; 걱; 걱; 걱; 걱; ) HANGUL SYLLABLE GEOG
+AC72;AC72;1100 1165 11A9;AC72;1100 1165 11A9; # (걲; 걲; 걲; 걲; 걲; ) HANGUL SYLLABLE GEOGG
+AC73;AC73;1100 1165 11AA;AC73;1100 1165 11AA; # (걳; 걳; 걳; 걳; 걳; ) HANGUL SYLLABLE GEOGS
+AC74;AC74;1100 1165 11AB;AC74;1100 1165 11AB; # (건; 건; 건; 건; 건; ) HANGUL SYLLABLE GEON
+AC75;AC75;1100 1165 11AC;AC75;1100 1165 11AC; # (걵; 걵; 걵; 걵; 걵; ) HANGUL SYLLABLE GEONJ
+AC76;AC76;1100 1165 11AD;AC76;1100 1165 11AD; # (걶; 걶; 걶; 걶; 걶; ) HANGUL SYLLABLE GEONH
+AC77;AC77;1100 1165 11AE;AC77;1100 1165 11AE; # (걷; 걷; 걷; 걷; 걷; ) HANGUL SYLLABLE GEOD
+AC78;AC78;1100 1165 11AF;AC78;1100 1165 11AF; # (걸; 걸; 걸; 걸; 걸; ) HANGUL SYLLABLE GEOL
+AC79;AC79;1100 1165 11B0;AC79;1100 1165 11B0; # (걹; 걹; 걹; 걹; 걹; ) HANGUL SYLLABLE GEOLG
+AC7A;AC7A;1100 1165 11B1;AC7A;1100 1165 11B1; # (걺; 걺; 걺; 걺; 걺; ) HANGUL SYLLABLE GEOLM
+AC7B;AC7B;1100 1165 11B2;AC7B;1100 1165 11B2; # (걻; 걻; 걻; 걻; 걻; ) HANGUL SYLLABLE GEOLB
+AC7C;AC7C;1100 1165 11B3;AC7C;1100 1165 11B3; # (걼; 걼; 걼; 걼; 걼; ) HANGUL SYLLABLE GEOLS
+AC7D;AC7D;1100 1165 11B4;AC7D;1100 1165 11B4; # (걽; 걽; 걽; 걽; 걽; ) HANGUL SYLLABLE GEOLT
+AC7E;AC7E;1100 1165 11B5;AC7E;1100 1165 11B5; # (걾; 걾; 걾; 걾; 걾; ) HANGUL SYLLABLE GEOLP
+AC7F;AC7F;1100 1165 11B6;AC7F;1100 1165 11B6; # (걿; 걿; 걿; 걿; 걿; ) HANGUL SYLLABLE GEOLH
+AC80;AC80;1100 1165 11B7;AC80;1100 1165 11B7; # (검; 검; 검; 검; 검; ) HANGUL SYLLABLE GEOM
+AC81;AC81;1100 1165 11B8;AC81;1100 1165 11B8; # (ê²; ê²; 겁; ê²; 겁; ) HANGUL SYLLABLE GEOB
+AC82;AC82;1100 1165 11B9;AC82;1100 1165 11B9; # (겂; 겂; 겂; 겂; 겂; ) HANGUL SYLLABLE GEOBS
+AC83;AC83;1100 1165 11BA;AC83;1100 1165 11BA; # (것; 것; 것; 것; 것; ) HANGUL SYLLABLE GEOS
+AC84;AC84;1100 1165 11BB;AC84;1100 1165 11BB; # (겄; 겄; 겄; 겄; 겄; ) HANGUL SYLLABLE GEOSS
+AC85;AC85;1100 1165 11BC;AC85;1100 1165 11BC; # (겅; 겅; 겅; 겅; 겅; ) HANGUL SYLLABLE GEONG
+AC86;AC86;1100 1165 11BD;AC86;1100 1165 11BD; # (겆; 겆; 겆; 겆; 겆; ) HANGUL SYLLABLE GEOJ
+AC87;AC87;1100 1165 11BE;AC87;1100 1165 11BE; # (겇; 겇; 겇; 겇; 겇; ) HANGUL SYLLABLE GEOC
+AC88;AC88;1100 1165 11BF;AC88;1100 1165 11BF; # (겈; 겈; 겈; 겈; 겈; ) HANGUL SYLLABLE GEOK
+AC89;AC89;1100 1165 11C0;AC89;1100 1165 11C0; # (겉; 겉; 겉; 겉; 겉; ) HANGUL SYLLABLE GEOT
+AC8A;AC8A;1100 1165 11C1;AC8A;1100 1165 11C1; # (겊; 겊; 거á‡; 겊; 거á‡; ) HANGUL SYLLABLE GEOP
+AC8B;AC8B;1100 1165 11C2;AC8B;1100 1165 11C2; # (겋; 겋; 겋; 겋; 겋; ) HANGUL SYLLABLE GEOH
+AC8C;AC8C;1100 1166;AC8C;1100 1166; # (게; 게; 게; 게; 게; ) HANGUL SYLLABLE GE
+AC8D;AC8D;1100 1166 11A8;AC8D;1100 1166 11A8; # (ê²; ê²; 겍; ê²; 겍; ) HANGUL SYLLABLE GEG
+AC8E;AC8E;1100 1166 11A9;AC8E;1100 1166 11A9; # (겎; 겎; 겎; 겎; 겎; ) HANGUL SYLLABLE GEGG
+AC8F;AC8F;1100 1166 11AA;AC8F;1100 1166 11AA; # (ê²; ê²; 겏; ê²; 겏; ) HANGUL SYLLABLE GEGS
+AC90;AC90;1100 1166 11AB;AC90;1100 1166 11AB; # (ê²; ê²; 겐; ê²; 겐; ) HANGUL SYLLABLE GEN
+AC91;AC91;1100 1166 11AC;AC91;1100 1166 11AC; # (겑; 겑; 겑; 겑; 겑; ) HANGUL SYLLABLE GENJ
+AC92;AC92;1100 1166 11AD;AC92;1100 1166 11AD; # (겒; 겒; 겒; 겒; 겒; ) HANGUL SYLLABLE GENH
+AC93;AC93;1100 1166 11AE;AC93;1100 1166 11AE; # (겓; 겓; 겓; 겓; 겓; ) HANGUL SYLLABLE GED
+AC94;AC94;1100 1166 11AF;AC94;1100 1166 11AF; # (겔; 겔; 겔; 겔; 겔; ) HANGUL SYLLABLE GEL
+AC95;AC95;1100 1166 11B0;AC95;1100 1166 11B0; # (겕; 겕; 겕; 겕; 겕; ) HANGUL SYLLABLE GELG
+AC96;AC96;1100 1166 11B1;AC96;1100 1166 11B1; # (겖; 겖; 겖; 겖; 겖; ) HANGUL SYLLABLE GELM
+AC97;AC97;1100 1166 11B2;AC97;1100 1166 11B2; # (겗; 겗; 겗; 겗; 겗; ) HANGUL SYLLABLE GELB
+AC98;AC98;1100 1166 11B3;AC98;1100 1166 11B3; # (겘; 겘; 겘; 겘; 겘; ) HANGUL SYLLABLE GELS
+AC99;AC99;1100 1166 11B4;AC99;1100 1166 11B4; # (겙; 겙; 겙; 겙; 겙; ) HANGUL SYLLABLE GELT
+AC9A;AC9A;1100 1166 11B5;AC9A;1100 1166 11B5; # (겚; 겚; 겚; 겚; 겚; ) HANGUL SYLLABLE GELP
+AC9B;AC9B;1100 1166 11B6;AC9B;1100 1166 11B6; # (겛; 겛; 겛; 겛; 겛; ) HANGUL SYLLABLE GELH
+AC9C;AC9C;1100 1166 11B7;AC9C;1100 1166 11B7; # (겜; 겜; 겜; 겜; 겜; ) HANGUL SYLLABLE GEM
+AC9D;AC9D;1100 1166 11B8;AC9D;1100 1166 11B8; # (ê²; ê²; 겝; ê²; 겝; ) HANGUL SYLLABLE GEB
+AC9E;AC9E;1100 1166 11B9;AC9E;1100 1166 11B9; # (겞; 겞; 겞; 겞; 겞; ) HANGUL SYLLABLE GEBS
+AC9F;AC9F;1100 1166 11BA;AC9F;1100 1166 11BA; # (겟; 겟; 겟; 겟; 겟; ) HANGUL SYLLABLE GES
+ACA0;ACA0;1100 1166 11BB;ACA0;1100 1166 11BB; # (겠; 겠; 겠; 겠; 겠; ) HANGUL SYLLABLE GESS
+ACA1;ACA1;1100 1166 11BC;ACA1;1100 1166 11BC; # (겡; 겡; 겡; 겡; 겡; ) HANGUL SYLLABLE GENG
+ACA2;ACA2;1100 1166 11BD;ACA2;1100 1166 11BD; # (겢; 겢; 겢; 겢; 겢; ) HANGUL SYLLABLE GEJ
+ACA3;ACA3;1100 1166 11BE;ACA3;1100 1166 11BE; # (겣; 겣; 겣; 겣; 겣; ) HANGUL SYLLABLE GEC
+ACA4;ACA4;1100 1166 11BF;ACA4;1100 1166 11BF; # (겤; 겤; 겤; 겤; 겤; ) HANGUL SYLLABLE GEK
+ACA5;ACA5;1100 1166 11C0;ACA5;1100 1166 11C0; # (겥; 겥; 겥; 겥; 겥; ) HANGUL SYLLABLE GET
+ACA6;ACA6;1100 1166 11C1;ACA6;1100 1166 11C1; # (겦; 겦; 게á‡; 겦; 게á‡; ) HANGUL SYLLABLE GEP
+ACA7;ACA7;1100 1166 11C2;ACA7;1100 1166 11C2; # (겧; 겧; 겧; 겧; 겧; ) HANGUL SYLLABLE GEH
+ACA8;ACA8;1100 1167;ACA8;1100 1167; # (겨; 겨; 겨; 겨; 겨; ) HANGUL SYLLABLE GYEO
+ACA9;ACA9;1100 1167 11A8;ACA9;1100 1167 11A8; # (격; 격; 격; 격; 격; ) HANGUL SYLLABLE GYEOG
+ACAA;ACAA;1100 1167 11A9;ACAA;1100 1167 11A9; # (겪; 겪; 겪; 겪; 겪; ) HANGUL SYLLABLE GYEOGG
+ACAB;ACAB;1100 1167 11AA;ACAB;1100 1167 11AA; # (겫; 겫; 겫; 겫; 겫; ) HANGUL SYLLABLE GYEOGS
+ACAC;ACAC;1100 1167 11AB;ACAC;1100 1167 11AB; # (견; 견; 견; 견; 견; ) HANGUL SYLLABLE GYEON
+ACAD;ACAD;1100 1167 11AC;ACAD;1100 1167 11AC; # (겭; 겭; 겭; 겭; 겭; ) HANGUL SYLLABLE GYEONJ
+ACAE;ACAE;1100 1167 11AD;ACAE;1100 1167 11AD; # (겮; 겮; 겮; 겮; 겮; ) HANGUL SYLLABLE GYEONH
+ACAF;ACAF;1100 1167 11AE;ACAF;1100 1167 11AE; # (겯; 겯; 겯; 겯; 겯; ) HANGUL SYLLABLE GYEOD
+ACB0;ACB0;1100 1167 11AF;ACB0;1100 1167 11AF; # (결; 결; 결; 결; 결; ) HANGUL SYLLABLE GYEOL
+ACB1;ACB1;1100 1167 11B0;ACB1;1100 1167 11B0; # (겱; 겱; 겱; 겱; 겱; ) HANGUL SYLLABLE GYEOLG
+ACB2;ACB2;1100 1167 11B1;ACB2;1100 1167 11B1; # (겲; 겲; 겲; 겲; 겲; ) HANGUL SYLLABLE GYEOLM
+ACB3;ACB3;1100 1167 11B2;ACB3;1100 1167 11B2; # (겳; 겳; 겳; 겳; 겳; ) HANGUL SYLLABLE GYEOLB
+ACB4;ACB4;1100 1167 11B3;ACB4;1100 1167 11B3; # (겴; 겴; 겴; 겴; 겴; ) HANGUL SYLLABLE GYEOLS
+ACB5;ACB5;1100 1167 11B4;ACB5;1100 1167 11B4; # (겵; 겵; 겵; 겵; 겵; ) HANGUL SYLLABLE GYEOLT
+ACB6;ACB6;1100 1167 11B5;ACB6;1100 1167 11B5; # (겶; 겶; 겶; 겶; 겶; ) HANGUL SYLLABLE GYEOLP
+ACB7;ACB7;1100 1167 11B6;ACB7;1100 1167 11B6; # (겷; 겷; 겷; 겷; 겷; ) HANGUL SYLLABLE GYEOLH
+ACB8;ACB8;1100 1167 11B7;ACB8;1100 1167 11B7; # (겸; 겸; 겸; 겸; 겸; ) HANGUL SYLLABLE GYEOM
+ACB9;ACB9;1100 1167 11B8;ACB9;1100 1167 11B8; # (겹; 겹; 겹; 겹; 겹; ) HANGUL SYLLABLE GYEOB
+ACBA;ACBA;1100 1167 11B9;ACBA;1100 1167 11B9; # (겺; 겺; 겺; 겺; 겺; ) HANGUL SYLLABLE GYEOBS
+ACBB;ACBB;1100 1167 11BA;ACBB;1100 1167 11BA; # (겻; 겻; 겻; 겻; 겻; ) HANGUL SYLLABLE GYEOS
+ACBC;ACBC;1100 1167 11BB;ACBC;1100 1167 11BB; # (겼; 겼; 겼; 겼; 겼; ) HANGUL SYLLABLE GYEOSS
+ACBD;ACBD;1100 1167 11BC;ACBD;1100 1167 11BC; # (경; 경; 경; 경; 경; ) HANGUL SYLLABLE GYEONG
+ACBE;ACBE;1100 1167 11BD;ACBE;1100 1167 11BD; # (겾; 겾; 겾; 겾; 겾; ) HANGUL SYLLABLE GYEOJ
+ACBF;ACBF;1100 1167 11BE;ACBF;1100 1167 11BE; # (겿; 겿; 겿; 겿; 겿; ) HANGUL SYLLABLE GYEOC
+ACC0;ACC0;1100 1167 11BF;ACC0;1100 1167 11BF; # (곀; 곀; 곀; 곀; 곀; ) HANGUL SYLLABLE GYEOK
+ACC1;ACC1;1100 1167 11C0;ACC1;1100 1167 11C0; # (ê³; ê³; 곁; ê³; 곁; ) HANGUL SYLLABLE GYEOT
+ACC2;ACC2;1100 1167 11C1;ACC2;1100 1167 11C1; # (곂; 곂; 겨á‡; 곂; 겨á‡; ) HANGUL SYLLABLE GYEOP
+ACC3;ACC3;1100 1167 11C2;ACC3;1100 1167 11C2; # (곃; 곃; 곃; 곃; 곃; ) HANGUL SYLLABLE GYEOH
+ACC4;ACC4;1100 1168;ACC4;1100 1168; # (계; 계; 계; 계; 계; ) HANGUL SYLLABLE GYE
+ACC5;ACC5;1100 1168 11A8;ACC5;1100 1168 11A8; # (곅; 곅; 곅; 곅; 곅; ) HANGUL SYLLABLE GYEG
+ACC6;ACC6;1100 1168 11A9;ACC6;1100 1168 11A9; # (곆; 곆; 곆; 곆; 곆; ) HANGUL SYLLABLE GYEGG
+ACC7;ACC7;1100 1168 11AA;ACC7;1100 1168 11AA; # (곇; 곇; 곇; 곇; 곇; ) HANGUL SYLLABLE GYEGS
+ACC8;ACC8;1100 1168 11AB;ACC8;1100 1168 11AB; # (곈; 곈; 곈; 곈; 곈; ) HANGUL SYLLABLE GYEN
+ACC9;ACC9;1100 1168 11AC;ACC9;1100 1168 11AC; # (곉; 곉; 곉; 곉; 곉; ) HANGUL SYLLABLE GYENJ
+ACCA;ACCA;1100 1168 11AD;ACCA;1100 1168 11AD; # (곊; 곊; 곊; 곊; 곊; ) HANGUL SYLLABLE GYENH
+ACCB;ACCB;1100 1168 11AE;ACCB;1100 1168 11AE; # (곋; 곋; 곋; 곋; 곋; ) HANGUL SYLLABLE GYED
+ACCC;ACCC;1100 1168 11AF;ACCC;1100 1168 11AF; # (곌; 곌; 곌; 곌; 곌; ) HANGUL SYLLABLE GYEL
+ACCD;ACCD;1100 1168 11B0;ACCD;1100 1168 11B0; # (ê³; ê³; 곍; ê³; 곍; ) HANGUL SYLLABLE GYELG
+ACCE;ACCE;1100 1168 11B1;ACCE;1100 1168 11B1; # (곎; 곎; 곎; 곎; 곎; ) HANGUL SYLLABLE GYELM
+ACCF;ACCF;1100 1168 11B2;ACCF;1100 1168 11B2; # (ê³; ê³; 곏; ê³; 곏; ) HANGUL SYLLABLE GYELB
+ACD0;ACD0;1100 1168 11B3;ACD0;1100 1168 11B3; # (ê³; ê³; 곐; ê³; 곐; ) HANGUL SYLLABLE GYELS
+ACD1;ACD1;1100 1168 11B4;ACD1;1100 1168 11B4; # (곑; 곑; 곑; 곑; 곑; ) HANGUL SYLLABLE GYELT
+ACD2;ACD2;1100 1168 11B5;ACD2;1100 1168 11B5; # (곒; 곒; 곒; 곒; 곒; ) HANGUL SYLLABLE GYELP
+ACD3;ACD3;1100 1168 11B6;ACD3;1100 1168 11B6; # (곓; 곓; 곓; 곓; 곓; ) HANGUL SYLLABLE GYELH
+ACD4;ACD4;1100 1168 11B7;ACD4;1100 1168 11B7; # (곔; 곔; 곔; 곔; 곔; ) HANGUL SYLLABLE GYEM
+ACD5;ACD5;1100 1168 11B8;ACD5;1100 1168 11B8; # (곕; 곕; 곕; 곕; 곕; ) HANGUL SYLLABLE GYEB
+ACD6;ACD6;1100 1168 11B9;ACD6;1100 1168 11B9; # (곖; 곖; 곖; 곖; 곖; ) HANGUL SYLLABLE GYEBS
+ACD7;ACD7;1100 1168 11BA;ACD7;1100 1168 11BA; # (곗; 곗; 곗; 곗; 곗; ) HANGUL SYLLABLE GYES
+ACD8;ACD8;1100 1168 11BB;ACD8;1100 1168 11BB; # (곘; 곘; 곘; 곘; 곘; ) HANGUL SYLLABLE GYESS
+ACD9;ACD9;1100 1168 11BC;ACD9;1100 1168 11BC; # (곙; 곙; 곙; 곙; 곙; ) HANGUL SYLLABLE GYENG
+ACDA;ACDA;1100 1168 11BD;ACDA;1100 1168 11BD; # (곚; 곚; 곚; 곚; 곚; ) HANGUL SYLLABLE GYEJ
+ACDB;ACDB;1100 1168 11BE;ACDB;1100 1168 11BE; # (곛; 곛; 곛; 곛; 곛; ) HANGUL SYLLABLE GYEC
+ACDC;ACDC;1100 1168 11BF;ACDC;1100 1168 11BF; # (곜; 곜; 곜; 곜; 곜; ) HANGUL SYLLABLE GYEK
+ACDD;ACDD;1100 1168 11C0;ACDD;1100 1168 11C0; # (ê³; ê³; 곝; ê³; 곝; ) HANGUL SYLLABLE GYET
+ACDE;ACDE;1100 1168 11C1;ACDE;1100 1168 11C1; # (곞; 곞; 계á‡; 곞; 계á‡; ) HANGUL SYLLABLE GYEP
+ACDF;ACDF;1100 1168 11C2;ACDF;1100 1168 11C2; # (곟; 곟; 곟; 곟; 곟; ) HANGUL SYLLABLE GYEH
+ACE0;ACE0;1100 1169;ACE0;1100 1169; # (고; 고; 고; 고; 고; ) HANGUL SYLLABLE GO
+ACE1;ACE1;1100 1169 11A8;ACE1;1100 1169 11A8; # (곡; 곡; 곡; 곡; 곡; ) HANGUL SYLLABLE GOG
+ACE2;ACE2;1100 1169 11A9;ACE2;1100 1169 11A9; # (곢; 곢; 곢; 곢; 곢; ) HANGUL SYLLABLE GOGG
+ACE3;ACE3;1100 1169 11AA;ACE3;1100 1169 11AA; # (곣; 곣; 곣; 곣; 곣; ) HANGUL SYLLABLE GOGS
+ACE4;ACE4;1100 1169 11AB;ACE4;1100 1169 11AB; # (곤; 곤; 곤; 곤; 곤; ) HANGUL SYLLABLE GON
+ACE5;ACE5;1100 1169 11AC;ACE5;1100 1169 11AC; # (곥; 곥; 곥; 곥; 곥; ) HANGUL SYLLABLE GONJ
+ACE6;ACE6;1100 1169 11AD;ACE6;1100 1169 11AD; # (곦; 곦; 곦; 곦; 곦; ) HANGUL SYLLABLE GONH
+ACE7;ACE7;1100 1169 11AE;ACE7;1100 1169 11AE; # (곧; 곧; 곧; 곧; 곧; ) HANGUL SYLLABLE GOD
+ACE8;ACE8;1100 1169 11AF;ACE8;1100 1169 11AF; # (골; 골; 골; 골; 골; ) HANGUL SYLLABLE GOL
+ACE9;ACE9;1100 1169 11B0;ACE9;1100 1169 11B0; # (곩; 곩; 곩; 곩; 곩; ) HANGUL SYLLABLE GOLG
+ACEA;ACEA;1100 1169 11B1;ACEA;1100 1169 11B1; # (곪; 곪; 곪; 곪; 곪; ) HANGUL SYLLABLE GOLM
+ACEB;ACEB;1100 1169 11B2;ACEB;1100 1169 11B2; # (곫; 곫; 곫; 곫; 곫; ) HANGUL SYLLABLE GOLB
+ACEC;ACEC;1100 1169 11B3;ACEC;1100 1169 11B3; # (곬; 곬; 곬; 곬; 곬; ) HANGUL SYLLABLE GOLS
+ACED;ACED;1100 1169 11B4;ACED;1100 1169 11B4; # (곭; 곭; 곭; 곭; 곭; ) HANGUL SYLLABLE GOLT
+ACEE;ACEE;1100 1169 11B5;ACEE;1100 1169 11B5; # (곮; 곮; 곮; 곮; 곮; ) HANGUL SYLLABLE GOLP
+ACEF;ACEF;1100 1169 11B6;ACEF;1100 1169 11B6; # (곯; 곯; 곯; 곯; 곯; ) HANGUL SYLLABLE GOLH
+ACF0;ACF0;1100 1169 11B7;ACF0;1100 1169 11B7; # (곰; 곰; 곰; 곰; 곰; ) HANGUL SYLLABLE GOM
+ACF1;ACF1;1100 1169 11B8;ACF1;1100 1169 11B8; # (곱; 곱; 곱; 곱; 곱; ) HANGUL SYLLABLE GOB
+ACF2;ACF2;1100 1169 11B9;ACF2;1100 1169 11B9; # (곲; 곲; 곲; 곲; 곲; ) HANGUL SYLLABLE GOBS
+ACF3;ACF3;1100 1169 11BA;ACF3;1100 1169 11BA; # (곳; 곳; 곳; 곳; 곳; ) HANGUL SYLLABLE GOS
+ACF4;ACF4;1100 1169 11BB;ACF4;1100 1169 11BB; # (곴; 곴; 곴; 곴; 곴; ) HANGUL SYLLABLE GOSS
+ACF5;ACF5;1100 1169 11BC;ACF5;1100 1169 11BC; # (공; 공; 공; 공; 공; ) HANGUL SYLLABLE GONG
+ACF6;ACF6;1100 1169 11BD;ACF6;1100 1169 11BD; # (곶; 곶; 곶; 곶; 곶; ) HANGUL SYLLABLE GOJ
+ACF7;ACF7;1100 1169 11BE;ACF7;1100 1169 11BE; # (곷; 곷; 곷; 곷; 곷; ) HANGUL SYLLABLE GOC
+ACF8;ACF8;1100 1169 11BF;ACF8;1100 1169 11BF; # (곸; 곸; 곸; 곸; 곸; ) HANGUL SYLLABLE GOK
+ACF9;ACF9;1100 1169 11C0;ACF9;1100 1169 11C0; # (곹; 곹; 곹; 곹; 곹; ) HANGUL SYLLABLE GOT
+ACFA;ACFA;1100 1169 11C1;ACFA;1100 1169 11C1; # (곺; 곺; 고á‡; 곺; 고á‡; ) HANGUL SYLLABLE GOP
+ACFB;ACFB;1100 1169 11C2;ACFB;1100 1169 11C2; # (곻; 곻; 곻; 곻; 곻; ) HANGUL SYLLABLE GOH
+ACFC;ACFC;1100 116A;ACFC;1100 116A; # (과; 과; 과; 과; 과; ) HANGUL SYLLABLE GWA
+ACFD;ACFD;1100 116A 11A8;ACFD;1100 116A 11A8; # (곽; 곽; 곽; 곽; 곽; ) HANGUL SYLLABLE GWAG
+ACFE;ACFE;1100 116A 11A9;ACFE;1100 116A 11A9; # (곾; 곾; 곾; 곾; 곾; ) HANGUL SYLLABLE GWAGG
+ACFF;ACFF;1100 116A 11AA;ACFF;1100 116A 11AA; # (곿; 곿; 곿; 곿; 곿; ) HANGUL SYLLABLE GWAGS
+AD00;AD00;1100 116A 11AB;AD00;1100 116A 11AB; # (관; 관; 관; 관; 관; ) HANGUL SYLLABLE GWAN
+AD01;AD01;1100 116A 11AC;AD01;1100 116A 11AC; # (ê´; ê´; 괁; ê´; 괁; ) HANGUL SYLLABLE GWANJ
+AD02;AD02;1100 116A 11AD;AD02;1100 116A 11AD; # (괂; 괂; 괂; 괂; 괂; ) HANGUL SYLLABLE GWANH
+AD03;AD03;1100 116A 11AE;AD03;1100 116A 11AE; # (괃; 괃; 괃; 괃; 괃; ) HANGUL SYLLABLE GWAD
+AD04;AD04;1100 116A 11AF;AD04;1100 116A 11AF; # (괄; 괄; 괄; 괄; 괄; ) HANGUL SYLLABLE GWAL
+AD05;AD05;1100 116A 11B0;AD05;1100 116A 11B0; # (괅; 괅; 괅; 괅; 괅; ) HANGUL SYLLABLE GWALG
+AD06;AD06;1100 116A 11B1;AD06;1100 116A 11B1; # (괆; 괆; 괆; 괆; 괆; ) HANGUL SYLLABLE GWALM
+AD07;AD07;1100 116A 11B2;AD07;1100 116A 11B2; # (괇; 괇; 괇; 괇; 괇; ) HANGUL SYLLABLE GWALB
+AD08;AD08;1100 116A 11B3;AD08;1100 116A 11B3; # (괈; 괈; 괈; 괈; 괈; ) HANGUL SYLLABLE GWALS
+AD09;AD09;1100 116A 11B4;AD09;1100 116A 11B4; # (괉; 괉; 괉; 괉; 괉; ) HANGUL SYLLABLE GWALT
+AD0A;AD0A;1100 116A 11B5;AD0A;1100 116A 11B5; # (괊; 괊; 괊; 괊; 괊; ) HANGUL SYLLABLE GWALP
+AD0B;AD0B;1100 116A 11B6;AD0B;1100 116A 11B6; # (괋; 괋; 괋; 괋; 괋; ) HANGUL SYLLABLE GWALH
+AD0C;AD0C;1100 116A 11B7;AD0C;1100 116A 11B7; # (괌; 괌; 괌; 괌; 괌; ) HANGUL SYLLABLE GWAM
+AD0D;AD0D;1100 116A 11B8;AD0D;1100 116A 11B8; # (ê´; ê´; 괍; ê´; 괍; ) HANGUL SYLLABLE GWAB
+AD0E;AD0E;1100 116A 11B9;AD0E;1100 116A 11B9; # (괎; 괎; 괎; 괎; 괎; ) HANGUL SYLLABLE GWABS
+AD0F;AD0F;1100 116A 11BA;AD0F;1100 116A 11BA; # (ê´; ê´; 괏; ê´; 괏; ) HANGUL SYLLABLE GWAS
+AD10;AD10;1100 116A 11BB;AD10;1100 116A 11BB; # (ê´; ê´; 괐; ê´; 괐; ) HANGUL SYLLABLE GWASS
+AD11;AD11;1100 116A 11BC;AD11;1100 116A 11BC; # (광; 광; 광; 광; 광; ) HANGUL SYLLABLE GWANG
+AD12;AD12;1100 116A 11BD;AD12;1100 116A 11BD; # (괒; 괒; 괒; 괒; 괒; ) HANGUL SYLLABLE GWAJ
+AD13;AD13;1100 116A 11BE;AD13;1100 116A 11BE; # (괓; 괓; 괓; 괓; 괓; ) HANGUL SYLLABLE GWAC
+AD14;AD14;1100 116A 11BF;AD14;1100 116A 11BF; # (괔; 괔; 괔; 괔; 괔; ) HANGUL SYLLABLE GWAK
+AD15;AD15;1100 116A 11C0;AD15;1100 116A 11C0; # (괕; 괕; 괕; 괕; 괕; ) HANGUL SYLLABLE GWAT
+AD16;AD16;1100 116A 11C1;AD16;1100 116A 11C1; # (ê´–; ê´–; 과á‡; ê´–; 과á‡; ) HANGUL SYLLABLE GWAP
+AD17;AD17;1100 116A 11C2;AD17;1100 116A 11C2; # (괗; 괗; 괗; 괗; 괗; ) HANGUL SYLLABLE GWAH
+AD18;AD18;1100 116B;AD18;1100 116B; # (괘; 괘; 괘; 괘; 괘; ) HANGUL SYLLABLE GWAE
+AD19;AD19;1100 116B 11A8;AD19;1100 116B 11A8; # (괙; 괙; 괙; 괙; 괙; ) HANGUL SYLLABLE GWAEG
+AD1A;AD1A;1100 116B 11A9;AD1A;1100 116B 11A9; # (괚; 괚; 괚; 괚; 괚; ) HANGUL SYLLABLE GWAEGG
+AD1B;AD1B;1100 116B 11AA;AD1B;1100 116B 11AA; # (괛; 괛; 괛; 괛; 괛; ) HANGUL SYLLABLE GWAEGS
+AD1C;AD1C;1100 116B 11AB;AD1C;1100 116B 11AB; # (괜; 괜; 괜; 괜; 괜; ) HANGUL SYLLABLE GWAEN
+AD1D;AD1D;1100 116B 11AC;AD1D;1100 116B 11AC; # (ê´; ê´; 괝; ê´; 괝; ) HANGUL SYLLABLE GWAENJ
+AD1E;AD1E;1100 116B 11AD;AD1E;1100 116B 11AD; # (괞; 괞; 괞; 괞; 괞; ) HANGUL SYLLABLE GWAENH
+AD1F;AD1F;1100 116B 11AE;AD1F;1100 116B 11AE; # (괟; 괟; 괟; 괟; 괟; ) HANGUL SYLLABLE GWAED
+AD20;AD20;1100 116B 11AF;AD20;1100 116B 11AF; # (괠; 괠; 괠; 괠; 괠; ) HANGUL SYLLABLE GWAEL
+AD21;AD21;1100 116B 11B0;AD21;1100 116B 11B0; # (괡; 괡; 괡; 괡; 괡; ) HANGUL SYLLABLE GWAELG
+AD22;AD22;1100 116B 11B1;AD22;1100 116B 11B1; # (괢; 괢; 괢; 괢; 괢; ) HANGUL SYLLABLE GWAELM
+AD23;AD23;1100 116B 11B2;AD23;1100 116B 11B2; # (괣; 괣; 괣; 괣; 괣; ) HANGUL SYLLABLE GWAELB
+AD24;AD24;1100 116B 11B3;AD24;1100 116B 11B3; # (괤; 괤; 괤; 괤; 괤; ) HANGUL SYLLABLE GWAELS
+AD25;AD25;1100 116B 11B4;AD25;1100 116B 11B4; # (괥; 괥; 괥; 괥; 괥; ) HANGUL SYLLABLE GWAELT
+AD26;AD26;1100 116B 11B5;AD26;1100 116B 11B5; # (괦; 괦; 괦; 괦; 괦; ) HANGUL SYLLABLE GWAELP
+AD27;AD27;1100 116B 11B6;AD27;1100 116B 11B6; # (괧; 괧; 괧; 괧; 괧; ) HANGUL SYLLABLE GWAELH
+AD28;AD28;1100 116B 11B7;AD28;1100 116B 11B7; # (괨; 괨; 괨; 괨; 괨; ) HANGUL SYLLABLE GWAEM
+AD29;AD29;1100 116B 11B8;AD29;1100 116B 11B8; # (괩; 괩; 괩; 괩; 괩; ) HANGUL SYLLABLE GWAEB
+AD2A;AD2A;1100 116B 11B9;AD2A;1100 116B 11B9; # (괪; 괪; 괪; 괪; 괪; ) HANGUL SYLLABLE GWAEBS
+AD2B;AD2B;1100 116B 11BA;AD2B;1100 116B 11BA; # (괫; 괫; 괫; 괫; 괫; ) HANGUL SYLLABLE GWAES
+AD2C;AD2C;1100 116B 11BB;AD2C;1100 116B 11BB; # (괬; 괬; 괬; 괬; 괬; ) HANGUL SYLLABLE GWAESS
+AD2D;AD2D;1100 116B 11BC;AD2D;1100 116B 11BC; # (괭; 괭; 괭; 괭; 괭; ) HANGUL SYLLABLE GWAENG
+AD2E;AD2E;1100 116B 11BD;AD2E;1100 116B 11BD; # (괮; 괮; 괮; 괮; 괮; ) HANGUL SYLLABLE GWAEJ
+AD2F;AD2F;1100 116B 11BE;AD2F;1100 116B 11BE; # (괯; 괯; 괯; 괯; 괯; ) HANGUL SYLLABLE GWAEC
+AD30;AD30;1100 116B 11BF;AD30;1100 116B 11BF; # (괰; 괰; 괰; 괰; 괰; ) HANGUL SYLLABLE GWAEK
+AD31;AD31;1100 116B 11C0;AD31;1100 116B 11C0; # (괱; 괱; 괱; 괱; 괱; ) HANGUL SYLLABLE GWAET
+AD32;AD32;1100 116B 11C1;AD32;1100 116B 11C1; # (ê´²; ê´²; 괘á‡; ê´²; 괘á‡; ) HANGUL SYLLABLE GWAEP
+AD33;AD33;1100 116B 11C2;AD33;1100 116B 11C2; # (괳; 괳; 괳; 괳; 괳; ) HANGUL SYLLABLE GWAEH
+AD34;AD34;1100 116C;AD34;1100 116C; # (괴; 괴; 괴; 괴; 괴; ) HANGUL SYLLABLE GOE
+AD35;AD35;1100 116C 11A8;AD35;1100 116C 11A8; # (괵; 괵; 괵; 괵; 괵; ) HANGUL SYLLABLE GOEG
+AD36;AD36;1100 116C 11A9;AD36;1100 116C 11A9; # (괶; 괶; 괶; 괶; 괶; ) HANGUL SYLLABLE GOEGG
+AD37;AD37;1100 116C 11AA;AD37;1100 116C 11AA; # (괷; 괷; 괷; 괷; 괷; ) HANGUL SYLLABLE GOEGS
+AD38;AD38;1100 116C 11AB;AD38;1100 116C 11AB; # (괸; 괸; 괸; 괸; 괸; ) HANGUL SYLLABLE GOEN
+AD39;AD39;1100 116C 11AC;AD39;1100 116C 11AC; # (괹; 괹; 괹; 괹; 괹; ) HANGUL SYLLABLE GOENJ
+AD3A;AD3A;1100 116C 11AD;AD3A;1100 116C 11AD; # (괺; 괺; 괺; 괺; 괺; ) HANGUL SYLLABLE GOENH
+AD3B;AD3B;1100 116C 11AE;AD3B;1100 116C 11AE; # (괻; 괻; 괻; 괻; 괻; ) HANGUL SYLLABLE GOED
+AD3C;AD3C;1100 116C 11AF;AD3C;1100 116C 11AF; # (괼; 괼; 괼; 괼; 괼; ) HANGUL SYLLABLE GOEL
+AD3D;AD3D;1100 116C 11B0;AD3D;1100 116C 11B0; # (괽; 괽; 괽; 괽; 괽; ) HANGUL SYLLABLE GOELG
+AD3E;AD3E;1100 116C 11B1;AD3E;1100 116C 11B1; # (괾; 괾; 괾; 괾; 괾; ) HANGUL SYLLABLE GOELM
+AD3F;AD3F;1100 116C 11B2;AD3F;1100 116C 11B2; # (괿; 괿; 괿; 괿; 괿; ) HANGUL SYLLABLE GOELB
+AD40;AD40;1100 116C 11B3;AD40;1100 116C 11B3; # (굀; 굀; 굀; 굀; 굀; ) HANGUL SYLLABLE GOELS
+AD41;AD41;1100 116C 11B4;AD41;1100 116C 11B4; # (êµ; êµ; 굁; êµ; 굁; ) HANGUL SYLLABLE GOELT
+AD42;AD42;1100 116C 11B5;AD42;1100 116C 11B5; # (굂; 굂; 굂; 굂; 굂; ) HANGUL SYLLABLE GOELP
+AD43;AD43;1100 116C 11B6;AD43;1100 116C 11B6; # (굃; 굃; 굃; 굃; 굃; ) HANGUL SYLLABLE GOELH
+AD44;AD44;1100 116C 11B7;AD44;1100 116C 11B7; # (굄; 굄; 굄; 굄; 굄; ) HANGUL SYLLABLE GOEM
+AD45;AD45;1100 116C 11B8;AD45;1100 116C 11B8; # (굅; 굅; 굅; 굅; 굅; ) HANGUL SYLLABLE GOEB
+AD46;AD46;1100 116C 11B9;AD46;1100 116C 11B9; # (굆; 굆; 굆; 굆; 굆; ) HANGUL SYLLABLE GOEBS
+AD47;AD47;1100 116C 11BA;AD47;1100 116C 11BA; # (굇; 굇; 굇; 굇; 굇; ) HANGUL SYLLABLE GOES
+AD48;AD48;1100 116C 11BB;AD48;1100 116C 11BB; # (굈; 굈; 굈; 굈; 굈; ) HANGUL SYLLABLE GOESS
+AD49;AD49;1100 116C 11BC;AD49;1100 116C 11BC; # (굉; 굉; 굉; 굉; 굉; ) HANGUL SYLLABLE GOENG
+AD4A;AD4A;1100 116C 11BD;AD4A;1100 116C 11BD; # (굊; 굊; 굊; 굊; 굊; ) HANGUL SYLLABLE GOEJ
+AD4B;AD4B;1100 116C 11BE;AD4B;1100 116C 11BE; # (굋; 굋; 굋; 굋; 굋; ) HANGUL SYLLABLE GOEC
+AD4C;AD4C;1100 116C 11BF;AD4C;1100 116C 11BF; # (굌; 굌; 굌; 굌; 굌; ) HANGUL SYLLABLE GOEK
+AD4D;AD4D;1100 116C 11C0;AD4D;1100 116C 11C0; # (êµ; êµ; 굍; êµ; 굍; ) HANGUL SYLLABLE GOET
+AD4E;AD4E;1100 116C 11C1;AD4E;1100 116C 11C1; # (굎; 굎; 괴á‡; 굎; 괴á‡; ) HANGUL SYLLABLE GOEP
+AD4F;AD4F;1100 116C 11C2;AD4F;1100 116C 11C2; # (êµ; êµ; 굏; êµ; 굏; ) HANGUL SYLLABLE GOEH
+AD50;AD50;1100 116D;AD50;1100 116D; # (êµ; êµ; 교; êµ; 교; ) HANGUL SYLLABLE GYO
+AD51;AD51;1100 116D 11A8;AD51;1100 116D 11A8; # (굑; 굑; 굑; 굑; 굑; ) HANGUL SYLLABLE GYOG
+AD52;AD52;1100 116D 11A9;AD52;1100 116D 11A9; # (굒; 굒; 굒; 굒; 굒; ) HANGUL SYLLABLE GYOGG
+AD53;AD53;1100 116D 11AA;AD53;1100 116D 11AA; # (굓; 굓; 굓; 굓; 굓; ) HANGUL SYLLABLE GYOGS
+AD54;AD54;1100 116D 11AB;AD54;1100 116D 11AB; # (굔; 굔; 굔; 굔; 굔; ) HANGUL SYLLABLE GYON
+AD55;AD55;1100 116D 11AC;AD55;1100 116D 11AC; # (굕; 굕; 굕; 굕; 굕; ) HANGUL SYLLABLE GYONJ
+AD56;AD56;1100 116D 11AD;AD56;1100 116D 11AD; # (굖; 굖; 굖; 굖; 굖; ) HANGUL SYLLABLE GYONH
+AD57;AD57;1100 116D 11AE;AD57;1100 116D 11AE; # (굗; 굗; 굗; 굗; 굗; ) HANGUL SYLLABLE GYOD
+AD58;AD58;1100 116D 11AF;AD58;1100 116D 11AF; # (굘; 굘; 굘; 굘; 굘; ) HANGUL SYLLABLE GYOL
+AD59;AD59;1100 116D 11B0;AD59;1100 116D 11B0; # (굙; 굙; 굙; 굙; 굙; ) HANGUL SYLLABLE GYOLG
+AD5A;AD5A;1100 116D 11B1;AD5A;1100 116D 11B1; # (굚; 굚; 굚; 굚; 굚; ) HANGUL SYLLABLE GYOLM
+AD5B;AD5B;1100 116D 11B2;AD5B;1100 116D 11B2; # (굛; 굛; 굛; 굛; 굛; ) HANGUL SYLLABLE GYOLB
+AD5C;AD5C;1100 116D 11B3;AD5C;1100 116D 11B3; # (굜; 굜; 굜; 굜; 굜; ) HANGUL SYLLABLE GYOLS
+AD5D;AD5D;1100 116D 11B4;AD5D;1100 116D 11B4; # (êµ; êµ; 굝; êµ; 굝; ) HANGUL SYLLABLE GYOLT
+AD5E;AD5E;1100 116D 11B5;AD5E;1100 116D 11B5; # (굞; 굞; 굞; 굞; 굞; ) HANGUL SYLLABLE GYOLP
+AD5F;AD5F;1100 116D 11B6;AD5F;1100 116D 11B6; # (굟; 굟; 굟; 굟; 굟; ) HANGUL SYLLABLE GYOLH
+AD60;AD60;1100 116D 11B7;AD60;1100 116D 11B7; # (굠; 굠; 굠; 굠; 굠; ) HANGUL SYLLABLE GYOM
+AD61;AD61;1100 116D 11B8;AD61;1100 116D 11B8; # (굡; 굡; 굡; 굡; 굡; ) HANGUL SYLLABLE GYOB
+AD62;AD62;1100 116D 11B9;AD62;1100 116D 11B9; # (굢; 굢; 굢; 굢; 굢; ) HANGUL SYLLABLE GYOBS
+AD63;AD63;1100 116D 11BA;AD63;1100 116D 11BA; # (굣; 굣; 굣; 굣; 굣; ) HANGUL SYLLABLE GYOS
+AD64;AD64;1100 116D 11BB;AD64;1100 116D 11BB; # (굤; 굤; 굤; 굤; 굤; ) HANGUL SYLLABLE GYOSS
+AD65;AD65;1100 116D 11BC;AD65;1100 116D 11BC; # (굥; 굥; 굥; 굥; 굥; ) HANGUL SYLLABLE GYONG
+AD66;AD66;1100 116D 11BD;AD66;1100 116D 11BD; # (굦; 굦; 굦; 굦; 굦; ) HANGUL SYLLABLE GYOJ
+AD67;AD67;1100 116D 11BE;AD67;1100 116D 11BE; # (굧; 굧; 굧; 굧; 굧; ) HANGUL SYLLABLE GYOC
+AD68;AD68;1100 116D 11BF;AD68;1100 116D 11BF; # (굨; 굨; 굨; 굨; 굨; ) HANGUL SYLLABLE GYOK
+AD69;AD69;1100 116D 11C0;AD69;1100 116D 11C0; # (굩; 굩; 굩; 굩; 굩; ) HANGUL SYLLABLE GYOT
+AD6A;AD6A;1100 116D 11C1;AD6A;1100 116D 11C1; # (굪; 굪; 교á‡; 굪; 교á‡; ) HANGUL SYLLABLE GYOP
+AD6B;AD6B;1100 116D 11C2;AD6B;1100 116D 11C2; # (굫; 굫; 굫; 굫; 굫; ) HANGUL SYLLABLE GYOH
+AD6C;AD6C;1100 116E;AD6C;1100 116E; # (구; 구; 구; 구; 구; ) HANGUL SYLLABLE GU
+AD6D;AD6D;1100 116E 11A8;AD6D;1100 116E 11A8; # (국; 국; 국; 국; 국; ) HANGUL SYLLABLE GUG
+AD6E;AD6E;1100 116E 11A9;AD6E;1100 116E 11A9; # (굮; 굮; 굮; 굮; 굮; ) HANGUL SYLLABLE GUGG
+AD6F;AD6F;1100 116E 11AA;AD6F;1100 116E 11AA; # (굯; 굯; 굯; 굯; 굯; ) HANGUL SYLLABLE GUGS
+AD70;AD70;1100 116E 11AB;AD70;1100 116E 11AB; # (군; 군; 군; 군; 군; ) HANGUL SYLLABLE GUN
+AD71;AD71;1100 116E 11AC;AD71;1100 116E 11AC; # (굱; 굱; 굱; 굱; 굱; ) HANGUL SYLLABLE GUNJ
+AD72;AD72;1100 116E 11AD;AD72;1100 116E 11AD; # (굲; 굲; 굲; 굲; 굲; ) HANGUL SYLLABLE GUNH
+AD73;AD73;1100 116E 11AE;AD73;1100 116E 11AE; # (굳; 굳; 굳; 굳; 굳; ) HANGUL SYLLABLE GUD
+AD74;AD74;1100 116E 11AF;AD74;1100 116E 11AF; # (굴; 굴; 굴; 굴; 굴; ) HANGUL SYLLABLE GUL
+AD75;AD75;1100 116E 11B0;AD75;1100 116E 11B0; # (굵; 굵; 굵; 굵; 굵; ) HANGUL SYLLABLE GULG
+AD76;AD76;1100 116E 11B1;AD76;1100 116E 11B1; # (굶; 굶; 굶; 굶; 굶; ) HANGUL SYLLABLE GULM
+AD77;AD77;1100 116E 11B2;AD77;1100 116E 11B2; # (굷; 굷; 굷; 굷; 굷; ) HANGUL SYLLABLE GULB
+AD78;AD78;1100 116E 11B3;AD78;1100 116E 11B3; # (굸; 굸; 굸; 굸; 굸; ) HANGUL SYLLABLE GULS
+AD79;AD79;1100 116E 11B4;AD79;1100 116E 11B4; # (굹; 굹; 굹; 굹; 굹; ) HANGUL SYLLABLE GULT
+AD7A;AD7A;1100 116E 11B5;AD7A;1100 116E 11B5; # (굺; 굺; 굺; 굺; 굺; ) HANGUL SYLLABLE GULP
+AD7B;AD7B;1100 116E 11B6;AD7B;1100 116E 11B6; # (굻; 굻; 굻; 굻; 굻; ) HANGUL SYLLABLE GULH
+AD7C;AD7C;1100 116E 11B7;AD7C;1100 116E 11B7; # (굼; 굼; 굼; 굼; 굼; ) HANGUL SYLLABLE GUM
+AD7D;AD7D;1100 116E 11B8;AD7D;1100 116E 11B8; # (굽; 굽; 굽; 굽; 굽; ) HANGUL SYLLABLE GUB
+AD7E;AD7E;1100 116E 11B9;AD7E;1100 116E 11B9; # (굾; 굾; 굾; 굾; 굾; ) HANGUL SYLLABLE GUBS
+AD7F;AD7F;1100 116E 11BA;AD7F;1100 116E 11BA; # (굿; 굿; 굿; 굿; 굿; ) HANGUL SYLLABLE GUS
+AD80;AD80;1100 116E 11BB;AD80;1100 116E 11BB; # (궀; 궀; 궀; 궀; 궀; ) HANGUL SYLLABLE GUSS
+AD81;AD81;1100 116E 11BC;AD81;1100 116E 11BC; # (ê¶; ê¶; 궁; ê¶; 궁; ) HANGUL SYLLABLE GUNG
+AD82;AD82;1100 116E 11BD;AD82;1100 116E 11BD; # (궂; 궂; 궂; 궂; 궂; ) HANGUL SYLLABLE GUJ
+AD83;AD83;1100 116E 11BE;AD83;1100 116E 11BE; # (궃; 궃; 궃; 궃; 궃; ) HANGUL SYLLABLE GUC
+AD84;AD84;1100 116E 11BF;AD84;1100 116E 11BF; # (궄; 궄; 궄; 궄; 궄; ) HANGUL SYLLABLE GUK
+AD85;AD85;1100 116E 11C0;AD85;1100 116E 11C0; # (궅; 궅; 궅; 궅; 궅; ) HANGUL SYLLABLE GUT
+AD86;AD86;1100 116E 11C1;AD86;1100 116E 11C1; # (궆; 궆; 구á‡; 궆; 구á‡; ) HANGUL SYLLABLE GUP
+AD87;AD87;1100 116E 11C2;AD87;1100 116E 11C2; # (궇; 궇; 궇; 궇; 궇; ) HANGUL SYLLABLE GUH
+AD88;AD88;1100 116F;AD88;1100 116F; # (궈; 궈; 궈; 궈; 궈; ) HANGUL SYLLABLE GWEO
+AD89;AD89;1100 116F 11A8;AD89;1100 116F 11A8; # (궉; 궉; 궉; 궉; 궉; ) HANGUL SYLLABLE GWEOG
+AD8A;AD8A;1100 116F 11A9;AD8A;1100 116F 11A9; # (궊; 궊; 궊; 궊; 궊; ) HANGUL SYLLABLE GWEOGG
+AD8B;AD8B;1100 116F 11AA;AD8B;1100 116F 11AA; # (궋; 궋; 궋; 궋; 궋; ) HANGUL SYLLABLE GWEOGS
+AD8C;AD8C;1100 116F 11AB;AD8C;1100 116F 11AB; # (권; 권; 권; 권; 권; ) HANGUL SYLLABLE GWEON
+AD8D;AD8D;1100 116F 11AC;AD8D;1100 116F 11AC; # (ê¶; ê¶; 궍; ê¶; 궍; ) HANGUL SYLLABLE GWEONJ
+AD8E;AD8E;1100 116F 11AD;AD8E;1100 116F 11AD; # (궎; 궎; 궎; 궎; 궎; ) HANGUL SYLLABLE GWEONH
+AD8F;AD8F;1100 116F 11AE;AD8F;1100 116F 11AE; # (ê¶; ê¶; 궏; ê¶; 궏; ) HANGUL SYLLABLE GWEOD
+AD90;AD90;1100 116F 11AF;AD90;1100 116F 11AF; # (ê¶; ê¶; 궐; ê¶; 궐; ) HANGUL SYLLABLE GWEOL
+AD91;AD91;1100 116F 11B0;AD91;1100 116F 11B0; # (궑; 궑; 궑; 궑; 궑; ) HANGUL SYLLABLE GWEOLG
+AD92;AD92;1100 116F 11B1;AD92;1100 116F 11B1; # (궒; 궒; 궒; 궒; 궒; ) HANGUL SYLLABLE GWEOLM
+AD93;AD93;1100 116F 11B2;AD93;1100 116F 11B2; # (궓; 궓; 궓; 궓; 궓; ) HANGUL SYLLABLE GWEOLB
+AD94;AD94;1100 116F 11B3;AD94;1100 116F 11B3; # (궔; 궔; 궔; 궔; 궔; ) HANGUL SYLLABLE GWEOLS
+AD95;AD95;1100 116F 11B4;AD95;1100 116F 11B4; # (궕; 궕; 궕; 궕; 궕; ) HANGUL SYLLABLE GWEOLT
+AD96;AD96;1100 116F 11B5;AD96;1100 116F 11B5; # (궖; 궖; 궖; 궖; 궖; ) HANGUL SYLLABLE GWEOLP
+AD97;AD97;1100 116F 11B6;AD97;1100 116F 11B6; # (궗; 궗; 궗; 궗; 궗; ) HANGUL SYLLABLE GWEOLH
+AD98;AD98;1100 116F 11B7;AD98;1100 116F 11B7; # (궘; 궘; 궘; 궘; 궘; ) HANGUL SYLLABLE GWEOM
+AD99;AD99;1100 116F 11B8;AD99;1100 116F 11B8; # (궙; 궙; 궙; 궙; 궙; ) HANGUL SYLLABLE GWEOB
+AD9A;AD9A;1100 116F 11B9;AD9A;1100 116F 11B9; # (궚; 궚; 궚; 궚; 궚; ) HANGUL SYLLABLE GWEOBS
+AD9B;AD9B;1100 116F 11BA;AD9B;1100 116F 11BA; # (궛; 궛; 궛; 궛; 궛; ) HANGUL SYLLABLE GWEOS
+AD9C;AD9C;1100 116F 11BB;AD9C;1100 116F 11BB; # (궜; 궜; 궜; 궜; 궜; ) HANGUL SYLLABLE GWEOSS
+AD9D;AD9D;1100 116F 11BC;AD9D;1100 116F 11BC; # (ê¶; ê¶; 궝; ê¶; 궝; ) HANGUL SYLLABLE GWEONG
+AD9E;AD9E;1100 116F 11BD;AD9E;1100 116F 11BD; # (궞; 궞; 궞; 궞; 궞; ) HANGUL SYLLABLE GWEOJ
+AD9F;AD9F;1100 116F 11BE;AD9F;1100 116F 11BE; # (궟; 궟; 궟; 궟; 궟; ) HANGUL SYLLABLE GWEOC
+ADA0;ADA0;1100 116F 11BF;ADA0;1100 116F 11BF; # (궠; 궠; 궠; 궠; 궠; ) HANGUL SYLLABLE GWEOK
+ADA1;ADA1;1100 116F 11C0;ADA1;1100 116F 11C0; # (궡; 궡; 궡; 궡; 궡; ) HANGUL SYLLABLE GWEOT
+ADA2;ADA2;1100 116F 11C1;ADA2;1100 116F 11C1; # (궢; 궢; 궈á‡; 궢; 궈á‡; ) HANGUL SYLLABLE GWEOP
+ADA3;ADA3;1100 116F 11C2;ADA3;1100 116F 11C2; # (궣; 궣; 궣; 궣; 궣; ) HANGUL SYLLABLE GWEOH
+ADA4;ADA4;1100 1170;ADA4;1100 1170; # (궤; 궤; 궤; 궤; 궤; ) HANGUL SYLLABLE GWE
+ADA5;ADA5;1100 1170 11A8;ADA5;1100 1170 11A8; # (궥; 궥; 궥; 궥; 궥; ) HANGUL SYLLABLE GWEG
+ADA6;ADA6;1100 1170 11A9;ADA6;1100 1170 11A9; # (궦; 궦; 궦; 궦; 궦; ) HANGUL SYLLABLE GWEGG
+ADA7;ADA7;1100 1170 11AA;ADA7;1100 1170 11AA; # (궧; 궧; 궧; 궧; 궧; ) HANGUL SYLLABLE GWEGS
+ADA8;ADA8;1100 1170 11AB;ADA8;1100 1170 11AB; # (궨; 궨; 궨; 궨; 궨; ) HANGUL SYLLABLE GWEN
+ADA9;ADA9;1100 1170 11AC;ADA9;1100 1170 11AC; # (궩; 궩; 궩; 궩; 궩; ) HANGUL SYLLABLE GWENJ
+ADAA;ADAA;1100 1170 11AD;ADAA;1100 1170 11AD; # (궪; 궪; 궪; 궪; 궪; ) HANGUL SYLLABLE GWENH
+ADAB;ADAB;1100 1170 11AE;ADAB;1100 1170 11AE; # (궫; 궫; 궫; 궫; 궫; ) HANGUL SYLLABLE GWED
+ADAC;ADAC;1100 1170 11AF;ADAC;1100 1170 11AF; # (궬; 궬; 궬; 궬; 궬; ) HANGUL SYLLABLE GWEL
+ADAD;ADAD;1100 1170 11B0;ADAD;1100 1170 11B0; # (궭; 궭; 궭; 궭; 궭; ) HANGUL SYLLABLE GWELG
+ADAE;ADAE;1100 1170 11B1;ADAE;1100 1170 11B1; # (궮; 궮; 궮; 궮; 궮; ) HANGUL SYLLABLE GWELM
+ADAF;ADAF;1100 1170 11B2;ADAF;1100 1170 11B2; # (궯; 궯; 궯; 궯; 궯; ) HANGUL SYLLABLE GWELB
+ADB0;ADB0;1100 1170 11B3;ADB0;1100 1170 11B3; # (궰; 궰; 궰; 궰; 궰; ) HANGUL SYLLABLE GWELS
+ADB1;ADB1;1100 1170 11B4;ADB1;1100 1170 11B4; # (궱; 궱; 궱; 궱; 궱; ) HANGUL SYLLABLE GWELT
+ADB2;ADB2;1100 1170 11B5;ADB2;1100 1170 11B5; # (궲; 궲; 궲; 궲; 궲; ) HANGUL SYLLABLE GWELP
+ADB3;ADB3;1100 1170 11B6;ADB3;1100 1170 11B6; # (궳; 궳; 궳; 궳; 궳; ) HANGUL SYLLABLE GWELH
+ADB4;ADB4;1100 1170 11B7;ADB4;1100 1170 11B7; # (궴; 궴; 궴; 궴; 궴; ) HANGUL SYLLABLE GWEM
+ADB5;ADB5;1100 1170 11B8;ADB5;1100 1170 11B8; # (궵; 궵; 궵; 궵; 궵; ) HANGUL SYLLABLE GWEB
+ADB6;ADB6;1100 1170 11B9;ADB6;1100 1170 11B9; # (궶; 궶; 궶; 궶; 궶; ) HANGUL SYLLABLE GWEBS
+ADB7;ADB7;1100 1170 11BA;ADB7;1100 1170 11BA; # (궷; 궷; 궷; 궷; 궷; ) HANGUL SYLLABLE GWES
+ADB8;ADB8;1100 1170 11BB;ADB8;1100 1170 11BB; # (궸; 궸; 궸; 궸; 궸; ) HANGUL SYLLABLE GWESS
+ADB9;ADB9;1100 1170 11BC;ADB9;1100 1170 11BC; # (궹; 궹; 궹; 궹; 궹; ) HANGUL SYLLABLE GWENG
+ADBA;ADBA;1100 1170 11BD;ADBA;1100 1170 11BD; # (궺; 궺; 궺; 궺; 궺; ) HANGUL SYLLABLE GWEJ
+ADBB;ADBB;1100 1170 11BE;ADBB;1100 1170 11BE; # (궻; 궻; 궻; 궻; 궻; ) HANGUL SYLLABLE GWEC
+ADBC;ADBC;1100 1170 11BF;ADBC;1100 1170 11BF; # (궼; 궼; 궼; 궼; 궼; ) HANGUL SYLLABLE GWEK
+ADBD;ADBD;1100 1170 11C0;ADBD;1100 1170 11C0; # (궽; 궽; 궽; 궽; 궽; ) HANGUL SYLLABLE GWET
+ADBE;ADBE;1100 1170 11C1;ADBE;1100 1170 11C1; # (궾; 궾; 궤á‡; 궾; 궤á‡; ) HANGUL SYLLABLE GWEP
+ADBF;ADBF;1100 1170 11C2;ADBF;1100 1170 11C2; # (궿; 궿; 궿; 궿; 궿; ) HANGUL SYLLABLE GWEH
+ADC0;ADC0;1100 1171;ADC0;1100 1171; # (귀; 귀; 귀; 귀; 귀; ) HANGUL SYLLABLE GWI
+ADC1;ADC1;1100 1171 11A8;ADC1;1100 1171 11A8; # (ê·; ê·; 귁; ê·; 귁; ) HANGUL SYLLABLE GWIG
+ADC2;ADC2;1100 1171 11A9;ADC2;1100 1171 11A9; # (귂; 귂; 귂; 귂; 귂; ) HANGUL SYLLABLE GWIGG
+ADC3;ADC3;1100 1171 11AA;ADC3;1100 1171 11AA; # (귃; 귃; 귃; 귃; 귃; ) HANGUL SYLLABLE GWIGS
+ADC4;ADC4;1100 1171 11AB;ADC4;1100 1171 11AB; # (귄; 귄; 귄; 귄; 귄; ) HANGUL SYLLABLE GWIN
+ADC5;ADC5;1100 1171 11AC;ADC5;1100 1171 11AC; # (귅; 귅; 귅; 귅; 귅; ) HANGUL SYLLABLE GWINJ
+ADC6;ADC6;1100 1171 11AD;ADC6;1100 1171 11AD; # (귆; 귆; 귆; 귆; 귆; ) HANGUL SYLLABLE GWINH
+ADC7;ADC7;1100 1171 11AE;ADC7;1100 1171 11AE; # (귇; 귇; 귇; 귇; 귇; ) HANGUL SYLLABLE GWID
+ADC8;ADC8;1100 1171 11AF;ADC8;1100 1171 11AF; # (귈; 귈; 귈; 귈; 귈; ) HANGUL SYLLABLE GWIL
+ADC9;ADC9;1100 1171 11B0;ADC9;1100 1171 11B0; # (귉; 귉; 귉; 귉; 귉; ) HANGUL SYLLABLE GWILG
+ADCA;ADCA;1100 1171 11B1;ADCA;1100 1171 11B1; # (귊; 귊; 귊; 귊; 귊; ) HANGUL SYLLABLE GWILM
+ADCB;ADCB;1100 1171 11B2;ADCB;1100 1171 11B2; # (귋; 귋; 귋; 귋; 귋; ) HANGUL SYLLABLE GWILB
+ADCC;ADCC;1100 1171 11B3;ADCC;1100 1171 11B3; # (귌; 귌; 귌; 귌; 귌; ) HANGUL SYLLABLE GWILS
+ADCD;ADCD;1100 1171 11B4;ADCD;1100 1171 11B4; # (ê·; ê·; 귍; ê·; 귍; ) HANGUL SYLLABLE GWILT
+ADCE;ADCE;1100 1171 11B5;ADCE;1100 1171 11B5; # (귎; 귎; 귎; 귎; 귎; ) HANGUL SYLLABLE GWILP
+ADCF;ADCF;1100 1171 11B6;ADCF;1100 1171 11B6; # (ê·; ê·; 귏; ê·; 귏; ) HANGUL SYLLABLE GWILH
+ADD0;ADD0;1100 1171 11B7;ADD0;1100 1171 11B7; # (ê·; ê·; 귐; ê·; 귐; ) HANGUL SYLLABLE GWIM
+ADD1;ADD1;1100 1171 11B8;ADD1;1100 1171 11B8; # (귑; 귑; 귑; 귑; 귑; ) HANGUL SYLLABLE GWIB
+ADD2;ADD2;1100 1171 11B9;ADD2;1100 1171 11B9; # (귒; 귒; 귒; 귒; 귒; ) HANGUL SYLLABLE GWIBS
+ADD3;ADD3;1100 1171 11BA;ADD3;1100 1171 11BA; # (귓; 귓; 귓; 귓; 귓; ) HANGUL SYLLABLE GWIS
+ADD4;ADD4;1100 1171 11BB;ADD4;1100 1171 11BB; # (귔; 귔; 귔; 귔; 귔; ) HANGUL SYLLABLE GWISS
+ADD5;ADD5;1100 1171 11BC;ADD5;1100 1171 11BC; # (귕; 귕; 귕; 귕; 귕; ) HANGUL SYLLABLE GWING
+ADD6;ADD6;1100 1171 11BD;ADD6;1100 1171 11BD; # (귖; 귖; 귖; 귖; 귖; ) HANGUL SYLLABLE GWIJ
+ADD7;ADD7;1100 1171 11BE;ADD7;1100 1171 11BE; # (귗; 귗; 귗; 귗; 귗; ) HANGUL SYLLABLE GWIC
+ADD8;ADD8;1100 1171 11BF;ADD8;1100 1171 11BF; # (귘; 귘; 귘; 귘; 귘; ) HANGUL SYLLABLE GWIK
+ADD9;ADD9;1100 1171 11C0;ADD9;1100 1171 11C0; # (귙; 귙; 귙; 귙; 귙; ) HANGUL SYLLABLE GWIT
+ADDA;ADDA;1100 1171 11C1;ADDA;1100 1171 11C1; # (ê·š; ê·š; 귀á‡; ê·š; 귀á‡; ) HANGUL SYLLABLE GWIP
+ADDB;ADDB;1100 1171 11C2;ADDB;1100 1171 11C2; # (귛; 귛; 귛; 귛; 귛; ) HANGUL SYLLABLE GWIH
+ADDC;ADDC;1100 1172;ADDC;1100 1172; # (규; 규; 규; 규; 규; ) HANGUL SYLLABLE GYU
+ADDD;ADDD;1100 1172 11A8;ADDD;1100 1172 11A8; # (ê·; ê·; 귝; ê·; 귝; ) HANGUL SYLLABLE GYUG
+ADDE;ADDE;1100 1172 11A9;ADDE;1100 1172 11A9; # (귞; 귞; 귞; 귞; 귞; ) HANGUL SYLLABLE GYUGG
+ADDF;ADDF;1100 1172 11AA;ADDF;1100 1172 11AA; # (귟; 귟; 귟; 귟; 귟; ) HANGUL SYLLABLE GYUGS
+ADE0;ADE0;1100 1172 11AB;ADE0;1100 1172 11AB; # (균; 균; 균; 균; 균; ) HANGUL SYLLABLE GYUN
+ADE1;ADE1;1100 1172 11AC;ADE1;1100 1172 11AC; # (귡; 귡; 귡; 귡; 귡; ) HANGUL SYLLABLE GYUNJ
+ADE2;ADE2;1100 1172 11AD;ADE2;1100 1172 11AD; # (귢; 귢; 귢; 귢; 귢; ) HANGUL SYLLABLE GYUNH
+ADE3;ADE3;1100 1172 11AE;ADE3;1100 1172 11AE; # (귣; 귣; 귣; 귣; 귣; ) HANGUL SYLLABLE GYUD
+ADE4;ADE4;1100 1172 11AF;ADE4;1100 1172 11AF; # (귤; 귤; 귤; 귤; 귤; ) HANGUL SYLLABLE GYUL
+ADE5;ADE5;1100 1172 11B0;ADE5;1100 1172 11B0; # (귥; 귥; 귥; 귥; 귥; ) HANGUL SYLLABLE GYULG
+ADE6;ADE6;1100 1172 11B1;ADE6;1100 1172 11B1; # (귦; 귦; 귦; 귦; 귦; ) HANGUL SYLLABLE GYULM
+ADE7;ADE7;1100 1172 11B2;ADE7;1100 1172 11B2; # (귧; 귧; 귧; 귧; 귧; ) HANGUL SYLLABLE GYULB
+ADE8;ADE8;1100 1172 11B3;ADE8;1100 1172 11B3; # (귨; 귨; 귨; 귨; 귨; ) HANGUL SYLLABLE GYULS
+ADE9;ADE9;1100 1172 11B4;ADE9;1100 1172 11B4; # (귩; 귩; 귩; 귩; 귩; ) HANGUL SYLLABLE GYULT
+ADEA;ADEA;1100 1172 11B5;ADEA;1100 1172 11B5; # (귪; 귪; 귪; 귪; 귪; ) HANGUL SYLLABLE GYULP
+ADEB;ADEB;1100 1172 11B6;ADEB;1100 1172 11B6; # (귫; 귫; 귫; 귫; 귫; ) HANGUL SYLLABLE GYULH
+ADEC;ADEC;1100 1172 11B7;ADEC;1100 1172 11B7; # (귬; 귬; 귬; 귬; 귬; ) HANGUL SYLLABLE GYUM
+ADED;ADED;1100 1172 11B8;ADED;1100 1172 11B8; # (귭; 귭; 귭; 귭; 귭; ) HANGUL SYLLABLE GYUB
+ADEE;ADEE;1100 1172 11B9;ADEE;1100 1172 11B9; # (귮; 귮; 귮; 귮; 귮; ) HANGUL SYLLABLE GYUBS
+ADEF;ADEF;1100 1172 11BA;ADEF;1100 1172 11BA; # (귯; 귯; 귯; 귯; 귯; ) HANGUL SYLLABLE GYUS
+ADF0;ADF0;1100 1172 11BB;ADF0;1100 1172 11BB; # (귰; 귰; 귰; 귰; 귰; ) HANGUL SYLLABLE GYUSS
+ADF1;ADF1;1100 1172 11BC;ADF1;1100 1172 11BC; # (귱; 귱; 귱; 귱; 귱; ) HANGUL SYLLABLE GYUNG
+ADF2;ADF2;1100 1172 11BD;ADF2;1100 1172 11BD; # (귲; 귲; 귲; 귲; 귲; ) HANGUL SYLLABLE GYUJ
+ADF3;ADF3;1100 1172 11BE;ADF3;1100 1172 11BE; # (귳; 귳; 귳; 귳; 귳; ) HANGUL SYLLABLE GYUC
+ADF4;ADF4;1100 1172 11BF;ADF4;1100 1172 11BF; # (귴; 귴; 귴; 귴; 귴; ) HANGUL SYLLABLE GYUK
+ADF5;ADF5;1100 1172 11C0;ADF5;1100 1172 11C0; # (귵; 귵; 귵; 귵; 귵; ) HANGUL SYLLABLE GYUT
+ADF6;ADF6;1100 1172 11C1;ADF6;1100 1172 11C1; # (ê·¶; ê·¶; 규á‡; ê·¶; 규á‡; ) HANGUL SYLLABLE GYUP
+ADF7;ADF7;1100 1172 11C2;ADF7;1100 1172 11C2; # (귷; 귷; 귷; 귷; 귷; ) HANGUL SYLLABLE GYUH
+ADF8;ADF8;1100 1173;ADF8;1100 1173; # (그; 그; 그; 그; 그; ) HANGUL SYLLABLE GEU
+ADF9;ADF9;1100 1173 11A8;ADF9;1100 1173 11A8; # (극; 극; 극; 극; 극; ) HANGUL SYLLABLE GEUG
+ADFA;ADFA;1100 1173 11A9;ADFA;1100 1173 11A9; # (귺; 귺; 귺; 귺; 귺; ) HANGUL SYLLABLE GEUGG
+ADFB;ADFB;1100 1173 11AA;ADFB;1100 1173 11AA; # (귻; 귻; 귻; 귻; 귻; ) HANGUL SYLLABLE GEUGS
+ADFC;ADFC;1100 1173 11AB;ADFC;1100 1173 11AB; # (근; 근; 근; 근; 근; ) HANGUL SYLLABLE GEUN
+ADFD;ADFD;1100 1173 11AC;ADFD;1100 1173 11AC; # (귽; 귽; 귽; 귽; 귽; ) HANGUL SYLLABLE GEUNJ
+ADFE;ADFE;1100 1173 11AD;ADFE;1100 1173 11AD; # (귾; 귾; 귾; 귾; 귾; ) HANGUL SYLLABLE GEUNH
+ADFF;ADFF;1100 1173 11AE;ADFF;1100 1173 11AE; # (귿; 귿; 귿; 귿; 귿; ) HANGUL SYLLABLE GEUD
+AE00;AE00;1100 1173 11AF;AE00;1100 1173 11AF; # (글; 글; 글; 글; 글; ) HANGUL SYLLABLE GEUL
+AE01;AE01;1100 1173 11B0;AE01;1100 1173 11B0; # (ê¸; ê¸; 긁; ê¸; 긁; ) HANGUL SYLLABLE GEULG
+AE02;AE02;1100 1173 11B1;AE02;1100 1173 11B1; # (긂; 긂; 긂; 긂; 긂; ) HANGUL SYLLABLE GEULM
+AE03;AE03;1100 1173 11B2;AE03;1100 1173 11B2; # (긃; 긃; 긃; 긃; 긃; ) HANGUL SYLLABLE GEULB
+AE04;AE04;1100 1173 11B3;AE04;1100 1173 11B3; # (긄; 긄; 긄; 긄; 긄; ) HANGUL SYLLABLE GEULS
+AE05;AE05;1100 1173 11B4;AE05;1100 1173 11B4; # (긅; 긅; 긅; 긅; 긅; ) HANGUL SYLLABLE GEULT
+AE06;AE06;1100 1173 11B5;AE06;1100 1173 11B5; # (긆; 긆; 긆; 긆; 긆; ) HANGUL SYLLABLE GEULP
+AE07;AE07;1100 1173 11B6;AE07;1100 1173 11B6; # (긇; 긇; 긇; 긇; 긇; ) HANGUL SYLLABLE GEULH
+AE08;AE08;1100 1173 11B7;AE08;1100 1173 11B7; # (금; 금; 금; 금; 금; ) HANGUL SYLLABLE GEUM
+AE09;AE09;1100 1173 11B8;AE09;1100 1173 11B8; # (급; 급; 급; 급; 급; ) HANGUL SYLLABLE GEUB
+AE0A;AE0A;1100 1173 11B9;AE0A;1100 1173 11B9; # (긊; 긊; 긊; 긊; 긊; ) HANGUL SYLLABLE GEUBS
+AE0B;AE0B;1100 1173 11BA;AE0B;1100 1173 11BA; # (긋; 긋; 긋; 긋; 긋; ) HANGUL SYLLABLE GEUS
+AE0C;AE0C;1100 1173 11BB;AE0C;1100 1173 11BB; # (긌; 긌; 긌; 긌; 긌; ) HANGUL SYLLABLE GEUSS
+AE0D;AE0D;1100 1173 11BC;AE0D;1100 1173 11BC; # (ê¸; ê¸; 긍; ê¸; 긍; ) HANGUL SYLLABLE GEUNG
+AE0E;AE0E;1100 1173 11BD;AE0E;1100 1173 11BD; # (긎; 긎; 긎; 긎; 긎; ) HANGUL SYLLABLE GEUJ
+AE0F;AE0F;1100 1173 11BE;AE0F;1100 1173 11BE; # (ê¸; ê¸; 긏; ê¸; 긏; ) HANGUL SYLLABLE GEUC
+AE10;AE10;1100 1173 11BF;AE10;1100 1173 11BF; # (ê¸; ê¸; 긐; ê¸; 긐; ) HANGUL SYLLABLE GEUK
+AE11;AE11;1100 1173 11C0;AE11;1100 1173 11C0; # (긑; 긑; 긑; 긑; 긑; ) HANGUL SYLLABLE GEUT
+AE12;AE12;1100 1173 11C1;AE12;1100 1173 11C1; # (긒; 긒; 그á‡; 긒; 그á‡; ) HANGUL SYLLABLE GEUP
+AE13;AE13;1100 1173 11C2;AE13;1100 1173 11C2; # (긓; 긓; 긓; 긓; 긓; ) HANGUL SYLLABLE GEUH
+AE14;AE14;1100 1174;AE14;1100 1174; # (긔; 긔; 긔; 긔; 긔; ) HANGUL SYLLABLE GYI
+AE15;AE15;1100 1174 11A8;AE15;1100 1174 11A8; # (긕; 긕; 긕; 긕; 긕; ) HANGUL SYLLABLE GYIG
+AE16;AE16;1100 1174 11A9;AE16;1100 1174 11A9; # (긖; 긖; 긖; 긖; 긖; ) HANGUL SYLLABLE GYIGG
+AE17;AE17;1100 1174 11AA;AE17;1100 1174 11AA; # (긗; 긗; 긗; 긗; 긗; ) HANGUL SYLLABLE GYIGS
+AE18;AE18;1100 1174 11AB;AE18;1100 1174 11AB; # (긘; 긘; 긘; 긘; 긘; ) HANGUL SYLLABLE GYIN
+AE19;AE19;1100 1174 11AC;AE19;1100 1174 11AC; # (긙; 긙; 긙; 긙; 긙; ) HANGUL SYLLABLE GYINJ
+AE1A;AE1A;1100 1174 11AD;AE1A;1100 1174 11AD; # (긚; 긚; 긚; 긚; 긚; ) HANGUL SYLLABLE GYINH
+AE1B;AE1B;1100 1174 11AE;AE1B;1100 1174 11AE; # (긛; 긛; 긛; 긛; 긛; ) HANGUL SYLLABLE GYID
+AE1C;AE1C;1100 1174 11AF;AE1C;1100 1174 11AF; # (긜; 긜; 긜; 긜; 긜; ) HANGUL SYLLABLE GYIL
+AE1D;AE1D;1100 1174 11B0;AE1D;1100 1174 11B0; # (ê¸; ê¸; 긝; ê¸; 긝; ) HANGUL SYLLABLE GYILG
+AE1E;AE1E;1100 1174 11B1;AE1E;1100 1174 11B1; # (긞; 긞; 긞; 긞; 긞; ) HANGUL SYLLABLE GYILM
+AE1F;AE1F;1100 1174 11B2;AE1F;1100 1174 11B2; # (긟; 긟; 긟; 긟; 긟; ) HANGUL SYLLABLE GYILB
+AE20;AE20;1100 1174 11B3;AE20;1100 1174 11B3; # (긠; 긠; 긠; 긠; 긠; ) HANGUL SYLLABLE GYILS
+AE21;AE21;1100 1174 11B4;AE21;1100 1174 11B4; # (긡; 긡; 긡; 긡; 긡; ) HANGUL SYLLABLE GYILT
+AE22;AE22;1100 1174 11B5;AE22;1100 1174 11B5; # (긢; 긢; 긢; 긢; 긢; ) HANGUL SYLLABLE GYILP
+AE23;AE23;1100 1174 11B6;AE23;1100 1174 11B6; # (긣; 긣; 긣; 긣; 긣; ) HANGUL SYLLABLE GYILH
+AE24;AE24;1100 1174 11B7;AE24;1100 1174 11B7; # (긤; 긤; 긤; 긤; 긤; ) HANGUL SYLLABLE GYIM
+AE25;AE25;1100 1174 11B8;AE25;1100 1174 11B8; # (긥; 긥; 긥; 긥; 긥; ) HANGUL SYLLABLE GYIB
+AE26;AE26;1100 1174 11B9;AE26;1100 1174 11B9; # (긦; 긦; 긦; 긦; 긦; ) HANGUL SYLLABLE GYIBS
+AE27;AE27;1100 1174 11BA;AE27;1100 1174 11BA; # (긧; 긧; 긧; 긧; 긧; ) HANGUL SYLLABLE GYIS
+AE28;AE28;1100 1174 11BB;AE28;1100 1174 11BB; # (긨; 긨; 긨; 긨; 긨; ) HANGUL SYLLABLE GYISS
+AE29;AE29;1100 1174 11BC;AE29;1100 1174 11BC; # (긩; 긩; 긩; 긩; 긩; ) HANGUL SYLLABLE GYING
+AE2A;AE2A;1100 1174 11BD;AE2A;1100 1174 11BD; # (긪; 긪; 긪; 긪; 긪; ) HANGUL SYLLABLE GYIJ
+AE2B;AE2B;1100 1174 11BE;AE2B;1100 1174 11BE; # (긫; 긫; 긫; 긫; 긫; ) HANGUL SYLLABLE GYIC
+AE2C;AE2C;1100 1174 11BF;AE2C;1100 1174 11BF; # (긬; 긬; 긬; 긬; 긬; ) HANGUL SYLLABLE GYIK
+AE2D;AE2D;1100 1174 11C0;AE2D;1100 1174 11C0; # (긭; 긭; 긭; 긭; 긭; ) HANGUL SYLLABLE GYIT
+AE2E;AE2E;1100 1174 11C1;AE2E;1100 1174 11C1; # (긮; 긮; 긔á‡; 긮; 긔á‡; ) HANGUL SYLLABLE GYIP
+AE2F;AE2F;1100 1174 11C2;AE2F;1100 1174 11C2; # (긯; 긯; 긯; 긯; 긯; ) HANGUL SYLLABLE GYIH
+AE30;AE30;1100 1175;AE30;1100 1175; # (기; 기; 기; 기; 기; ) HANGUL SYLLABLE GI
+AE31;AE31;1100 1175 11A8;AE31;1100 1175 11A8; # (긱; 긱; 긱; 긱; 긱; ) HANGUL SYLLABLE GIG
+AE32;AE32;1100 1175 11A9;AE32;1100 1175 11A9; # (긲; 긲; 긲; 긲; 긲; ) HANGUL SYLLABLE GIGG
+AE33;AE33;1100 1175 11AA;AE33;1100 1175 11AA; # (긳; 긳; 긳; 긳; 긳; ) HANGUL SYLLABLE GIGS
+AE34;AE34;1100 1175 11AB;AE34;1100 1175 11AB; # (긴; 긴; 긴; 긴; 긴; ) HANGUL SYLLABLE GIN
+AE35;AE35;1100 1175 11AC;AE35;1100 1175 11AC; # (긵; 긵; 긵; 긵; 긵; ) HANGUL SYLLABLE GINJ
+AE36;AE36;1100 1175 11AD;AE36;1100 1175 11AD; # (긶; 긶; 긶; 긶; 긶; ) HANGUL SYLLABLE GINH
+AE37;AE37;1100 1175 11AE;AE37;1100 1175 11AE; # (긷; 긷; 긷; 긷; 긷; ) HANGUL SYLLABLE GID
+AE38;AE38;1100 1175 11AF;AE38;1100 1175 11AF; # (길; 길; 길; 길; 길; ) HANGUL SYLLABLE GIL
+AE39;AE39;1100 1175 11B0;AE39;1100 1175 11B0; # (긹; 긹; 긹; 긹; 긹; ) HANGUL SYLLABLE GILG
+AE3A;AE3A;1100 1175 11B1;AE3A;1100 1175 11B1; # (긺; 긺; 긺; 긺; 긺; ) HANGUL SYLLABLE GILM
+AE3B;AE3B;1100 1175 11B2;AE3B;1100 1175 11B2; # (긻; 긻; 긻; 긻; 긻; ) HANGUL SYLLABLE GILB
+AE3C;AE3C;1100 1175 11B3;AE3C;1100 1175 11B3; # (긼; 긼; 긼; 긼; 긼; ) HANGUL SYLLABLE GILS
+AE3D;AE3D;1100 1175 11B4;AE3D;1100 1175 11B4; # (긽; 긽; 긽; 긽; 긽; ) HANGUL SYLLABLE GILT
+AE3E;AE3E;1100 1175 11B5;AE3E;1100 1175 11B5; # (긾; 긾; 긾; 긾; 긾; ) HANGUL SYLLABLE GILP
+AE3F;AE3F;1100 1175 11B6;AE3F;1100 1175 11B6; # (긿; 긿; 긿; 긿; 긿; ) HANGUL SYLLABLE GILH
+AE40;AE40;1100 1175 11B7;AE40;1100 1175 11B7; # (김; 김; 김; 김; 김; ) HANGUL SYLLABLE GIM
+AE41;AE41;1100 1175 11B8;AE41;1100 1175 11B8; # (ê¹; ê¹; 깁; ê¹; 깁; ) HANGUL SYLLABLE GIB
+AE42;AE42;1100 1175 11B9;AE42;1100 1175 11B9; # (깂; 깂; 깂; 깂; 깂; ) HANGUL SYLLABLE GIBS
+AE43;AE43;1100 1175 11BA;AE43;1100 1175 11BA; # (깃; 깃; 깃; 깃; 깃; ) HANGUL SYLLABLE GIS
+AE44;AE44;1100 1175 11BB;AE44;1100 1175 11BB; # (깄; 깄; 깄; 깄; 깄; ) HANGUL SYLLABLE GISS
+AE45;AE45;1100 1175 11BC;AE45;1100 1175 11BC; # (깅; 깅; 깅; 깅; 깅; ) HANGUL SYLLABLE GING
+AE46;AE46;1100 1175 11BD;AE46;1100 1175 11BD; # (깆; 깆; 깆; 깆; 깆; ) HANGUL SYLLABLE GIJ
+AE47;AE47;1100 1175 11BE;AE47;1100 1175 11BE; # (깇; 깇; 깇; 깇; 깇; ) HANGUL SYLLABLE GIC
+AE48;AE48;1100 1175 11BF;AE48;1100 1175 11BF; # (깈; 깈; 깈; 깈; 깈; ) HANGUL SYLLABLE GIK
+AE49;AE49;1100 1175 11C0;AE49;1100 1175 11C0; # (깉; 깉; 깉; 깉; 깉; ) HANGUL SYLLABLE GIT
+AE4A;AE4A;1100 1175 11C1;AE4A;1100 1175 11C1; # (깊; 깊; 기á‡; 깊; 기á‡; ) HANGUL SYLLABLE GIP
+AE4B;AE4B;1100 1175 11C2;AE4B;1100 1175 11C2; # (깋; 깋; 깋; 깋; 깋; ) HANGUL SYLLABLE GIH
+AE4C;AE4C;1101 1161;AE4C;1101 1161; # (까; 까; á„á…¡; 까; á„á…¡; ) HANGUL SYLLABLE GGA
+AE4D;AE4D;1101 1161 11A8;AE4D;1101 1161 11A8; # (ê¹; ê¹; á„ᅡᆨ; ê¹; á„ᅡᆨ; ) HANGUL SYLLABLE GGAG
+AE4E;AE4E;1101 1161 11A9;AE4E;1101 1161 11A9; # (깎; 깎; á„ᅡᆩ; 깎; á„ᅡᆩ; ) HANGUL SYLLABLE GGAGG
+AE4F;AE4F;1101 1161 11AA;AE4F;1101 1161 11AA; # (ê¹; ê¹; á„ᅡᆪ; ê¹; á„ᅡᆪ; ) HANGUL SYLLABLE GGAGS
+AE50;AE50;1101 1161 11AB;AE50;1101 1161 11AB; # (ê¹; ê¹; á„ᅡᆫ; ê¹; á„ᅡᆫ; ) HANGUL SYLLABLE GGAN
+AE51;AE51;1101 1161 11AC;AE51;1101 1161 11AC; # (깑; 깑; á„ᅡᆬ; 깑; á„ᅡᆬ; ) HANGUL SYLLABLE GGANJ
+AE52;AE52;1101 1161 11AD;AE52;1101 1161 11AD; # (ê¹’; ê¹’; á„ᅡᆭ; ê¹’; á„ᅡᆭ; ) HANGUL SYLLABLE GGANH
+AE53;AE53;1101 1161 11AE;AE53;1101 1161 11AE; # (깓; 깓; á„ᅡᆮ; 깓; á„ᅡᆮ; ) HANGUL SYLLABLE GGAD
+AE54;AE54;1101 1161 11AF;AE54;1101 1161 11AF; # (ê¹”; ê¹”; á„ᅡᆯ; ê¹”; á„ᅡᆯ; ) HANGUL SYLLABLE GGAL
+AE55;AE55;1101 1161 11B0;AE55;1101 1161 11B0; # (깕; 깕; á„ᅡᆰ; 깕; á„ᅡᆰ; ) HANGUL SYLLABLE GGALG
+AE56;AE56;1101 1161 11B1;AE56;1101 1161 11B1; # (ê¹–; ê¹–; á„ᅡᆱ; ê¹–; á„ᅡᆱ; ) HANGUL SYLLABLE GGALM
+AE57;AE57;1101 1161 11B2;AE57;1101 1161 11B2; # (ê¹—; ê¹—; á„ᅡᆲ; ê¹—; á„ᅡᆲ; ) HANGUL SYLLABLE GGALB
+AE58;AE58;1101 1161 11B3;AE58;1101 1161 11B3; # (깘; 깘; á„ᅡᆳ; 깘; á„ᅡᆳ; ) HANGUL SYLLABLE GGALS
+AE59;AE59;1101 1161 11B4;AE59;1101 1161 11B4; # (ê¹™; ê¹™; á„ᅡᆴ; ê¹™; á„ᅡᆴ; ) HANGUL SYLLABLE GGALT
+AE5A;AE5A;1101 1161 11B5;AE5A;1101 1161 11B5; # (깚; 깚; á„ᅡᆵ; 깚; á„ᅡᆵ; ) HANGUL SYLLABLE GGALP
+AE5B;AE5B;1101 1161 11B6;AE5B;1101 1161 11B6; # (ê¹›; ê¹›; á„ᅡᆶ; ê¹›; á„ᅡᆶ; ) HANGUL SYLLABLE GGALH
+AE5C;AE5C;1101 1161 11B7;AE5C;1101 1161 11B7; # (깜; 깜; á„ᅡᆷ; 깜; á„ᅡᆷ; ) HANGUL SYLLABLE GGAM
+AE5D;AE5D;1101 1161 11B8;AE5D;1101 1161 11B8; # (ê¹; ê¹; á„ᅡᆸ; ê¹; á„ᅡᆸ; ) HANGUL SYLLABLE GGAB
+AE5E;AE5E;1101 1161 11B9;AE5E;1101 1161 11B9; # (깞; 깞; á„ᅡᆹ; 깞; á„ᅡᆹ; ) HANGUL SYLLABLE GGABS
+AE5F;AE5F;1101 1161 11BA;AE5F;1101 1161 11BA; # (깟; 깟; á„ᅡᆺ; 깟; á„ᅡᆺ; ) HANGUL SYLLABLE GGAS
+AE60;AE60;1101 1161 11BB;AE60;1101 1161 11BB; # (ê¹ ; ê¹ ; á„ᅡᆻ; ê¹ ; á„ᅡᆻ; ) HANGUL SYLLABLE GGASS
+AE61;AE61;1101 1161 11BC;AE61;1101 1161 11BC; # (깡; 깡; á„ᅡᆼ; 깡; á„ᅡᆼ; ) HANGUL SYLLABLE GGANG
+AE62;AE62;1101 1161 11BD;AE62;1101 1161 11BD; # (ê¹¢; ê¹¢; á„ᅡᆽ; ê¹¢; á„ᅡᆽ; ) HANGUL SYLLABLE GGAJ
+AE63;AE63;1101 1161 11BE;AE63;1101 1161 11BE; # (ê¹£; ê¹£; á„ᅡᆾ; ê¹£; á„ᅡᆾ; ) HANGUL SYLLABLE GGAC
+AE64;AE64;1101 1161 11BF;AE64;1101 1161 11BF; # (깤; 깤; á„ᅡᆿ; 깤; á„ᅡᆿ; ) HANGUL SYLLABLE GGAK
+AE65;AE65;1101 1161 11C0;AE65;1101 1161 11C0; # (ê¹¥; ê¹¥; á„ᅡᇀ; ê¹¥; á„ᅡᇀ; ) HANGUL SYLLABLE GGAT
+AE66;AE66;1101 1161 11C1;AE66;1101 1161 11C1; # (깦; 깦; á„á…¡á‡; 깦; á„á…¡á‡; ) HANGUL SYLLABLE GGAP
+AE67;AE67;1101 1161 11C2;AE67;1101 1161 11C2; # (깧; 깧; á„ᅡᇂ; 깧; á„ᅡᇂ; ) HANGUL SYLLABLE GGAH
+AE68;AE68;1101 1162;AE68;1101 1162; # (깨; 깨; á„á…¢; 깨; á„á…¢; ) HANGUL SYLLABLE GGAE
+AE69;AE69;1101 1162 11A8;AE69;1101 1162 11A8; # (깩; 깩; á„ᅢᆨ; 깩; á„ᅢᆨ; ) HANGUL SYLLABLE GGAEG
+AE6A;AE6A;1101 1162 11A9;AE6A;1101 1162 11A9; # (깪; 깪; á„ᅢᆩ; 깪; á„ᅢᆩ; ) HANGUL SYLLABLE GGAEGG
+AE6B;AE6B;1101 1162 11AA;AE6B;1101 1162 11AA; # (깫; 깫; á„ᅢᆪ; 깫; á„ᅢᆪ; ) HANGUL SYLLABLE GGAEGS
+AE6C;AE6C;1101 1162 11AB;AE6C;1101 1162 11AB; # (깬; 깬; á„ᅢᆫ; 깬; á„ᅢᆫ; ) HANGUL SYLLABLE GGAEN
+AE6D;AE6D;1101 1162 11AC;AE6D;1101 1162 11AC; # (ê¹­; ê¹­; á„ᅢᆬ; ê¹­; á„ᅢᆬ; ) HANGUL SYLLABLE GGAENJ
+AE6E;AE6E;1101 1162 11AD;AE6E;1101 1162 11AD; # (ê¹®; ê¹®; á„ᅢᆭ; ê¹®; á„ᅢᆭ; ) HANGUL SYLLABLE GGAENH
+AE6F;AE6F;1101 1162 11AE;AE6F;1101 1162 11AE; # (깯; 깯; á„ᅢᆮ; 깯; á„ᅢᆮ; ) HANGUL SYLLABLE GGAED
+AE70;AE70;1101 1162 11AF;AE70;1101 1162 11AF; # (ê¹°; ê¹°; á„ᅢᆯ; ê¹°; á„ᅢᆯ; ) HANGUL SYLLABLE GGAEL
+AE71;AE71;1101 1162 11B0;AE71;1101 1162 11B0; # (ê¹±; ê¹±; á„ᅢᆰ; ê¹±; á„ᅢᆰ; ) HANGUL SYLLABLE GGAELG
+AE72;AE72;1101 1162 11B1;AE72;1101 1162 11B1; # (ê¹²; ê¹²; á„ᅢᆱ; ê¹²; á„ᅢᆱ; ) HANGUL SYLLABLE GGAELM
+AE73;AE73;1101 1162 11B2;AE73;1101 1162 11B2; # (ê¹³; ê¹³; á„ᅢᆲ; ê¹³; á„ᅢᆲ; ) HANGUL SYLLABLE GGAELB
+AE74;AE74;1101 1162 11B3;AE74;1101 1162 11B3; # (ê¹´; ê¹´; á„ᅢᆳ; ê¹´; á„ᅢᆳ; ) HANGUL SYLLABLE GGAELS
+AE75;AE75;1101 1162 11B4;AE75;1101 1162 11B4; # (ê¹µ; ê¹µ; á„ᅢᆴ; ê¹µ; á„ᅢᆴ; ) HANGUL SYLLABLE GGAELT
+AE76;AE76;1101 1162 11B5;AE76;1101 1162 11B5; # (깶; 깶; á„ᅢᆵ; 깶; á„ᅢᆵ; ) HANGUL SYLLABLE GGAELP
+AE77;AE77;1101 1162 11B6;AE77;1101 1162 11B6; # (ê¹·; ê¹·; á„ᅢᆶ; ê¹·; á„ᅢᆶ; ) HANGUL SYLLABLE GGAELH
+AE78;AE78;1101 1162 11B7;AE78;1101 1162 11B7; # (깸; 깸; á„ᅢᆷ; 깸; á„ᅢᆷ; ) HANGUL SYLLABLE GGAEM
+AE79;AE79;1101 1162 11B8;AE79;1101 1162 11B8; # (ê¹¹; ê¹¹; á„ᅢᆸ; ê¹¹; á„ᅢᆸ; ) HANGUL SYLLABLE GGAEB
+AE7A;AE7A;1101 1162 11B9;AE7A;1101 1162 11B9; # (깺; 깺; á„ᅢᆹ; 깺; á„ᅢᆹ; ) HANGUL SYLLABLE GGAEBS
+AE7B;AE7B;1101 1162 11BA;AE7B;1101 1162 11BA; # (ê¹»; ê¹»; á„ᅢᆺ; ê¹»; á„ᅢᆺ; ) HANGUL SYLLABLE GGAES
+AE7C;AE7C;1101 1162 11BB;AE7C;1101 1162 11BB; # (ê¹¼; ê¹¼; á„ᅢᆻ; ê¹¼; á„ᅢᆻ; ) HANGUL SYLLABLE GGAESS
+AE7D;AE7D;1101 1162 11BC;AE7D;1101 1162 11BC; # (ê¹½; ê¹½; á„ᅢᆼ; ê¹½; á„ᅢᆼ; ) HANGUL SYLLABLE GGAENG
+AE7E;AE7E;1101 1162 11BD;AE7E;1101 1162 11BD; # (ê¹¾; ê¹¾; á„ᅢᆽ; ê¹¾; á„ᅢᆽ; ) HANGUL SYLLABLE GGAEJ
+AE7F;AE7F;1101 1162 11BE;AE7F;1101 1162 11BE; # (깿; 깿; á„ᅢᆾ; 깿; á„ᅢᆾ; ) HANGUL SYLLABLE GGAEC
+AE80;AE80;1101 1162 11BF;AE80;1101 1162 11BF; # (꺀; 꺀; á„ᅢᆿ; 꺀; á„ᅢᆿ; ) HANGUL SYLLABLE GGAEK
+AE81;AE81;1101 1162 11C0;AE81;1101 1162 11C0; # (êº; êº; á„ᅢᇀ; êº; á„ᅢᇀ; ) HANGUL SYLLABLE GGAET
+AE82;AE82;1101 1162 11C1;AE82;1101 1162 11C1; # (꺂; 꺂; á„á…¢á‡; 꺂; á„á…¢á‡; ) HANGUL SYLLABLE GGAEP
+AE83;AE83;1101 1162 11C2;AE83;1101 1162 11C2; # (꺃; 꺃; á„ᅢᇂ; 꺃; á„ᅢᇂ; ) HANGUL SYLLABLE GGAEH
+AE84;AE84;1101 1163;AE84;1101 1163; # (꺄; 꺄; á„á…£; 꺄; á„á…£; ) HANGUL SYLLABLE GGYA
+AE85;AE85;1101 1163 11A8;AE85;1101 1163 11A8; # (꺅; 꺅; á„ᅣᆨ; 꺅; á„ᅣᆨ; ) HANGUL SYLLABLE GGYAG
+AE86;AE86;1101 1163 11A9;AE86;1101 1163 11A9; # (꺆; 꺆; á„ᅣᆩ; 꺆; á„ᅣᆩ; ) HANGUL SYLLABLE GGYAGG
+AE87;AE87;1101 1163 11AA;AE87;1101 1163 11AA; # (꺇; 꺇; á„ᅣᆪ; 꺇; á„ᅣᆪ; ) HANGUL SYLLABLE GGYAGS
+AE88;AE88;1101 1163 11AB;AE88;1101 1163 11AB; # (꺈; 꺈; á„ᅣᆫ; 꺈; á„ᅣᆫ; ) HANGUL SYLLABLE GGYAN
+AE89;AE89;1101 1163 11AC;AE89;1101 1163 11AC; # (꺉; 꺉; á„ᅣᆬ; 꺉; á„ᅣᆬ; ) HANGUL SYLLABLE GGYANJ
+AE8A;AE8A;1101 1163 11AD;AE8A;1101 1163 11AD; # (꺊; 꺊; á„ᅣᆭ; 꺊; á„ᅣᆭ; ) HANGUL SYLLABLE GGYANH
+AE8B;AE8B;1101 1163 11AE;AE8B;1101 1163 11AE; # (꺋; 꺋; á„ᅣᆮ; 꺋; á„ᅣᆮ; ) HANGUL SYLLABLE GGYAD
+AE8C;AE8C;1101 1163 11AF;AE8C;1101 1163 11AF; # (꺌; 꺌; á„ᅣᆯ; 꺌; á„ᅣᆯ; ) HANGUL SYLLABLE GGYAL
+AE8D;AE8D;1101 1163 11B0;AE8D;1101 1163 11B0; # (êº; êº; á„ᅣᆰ; êº; á„ᅣᆰ; ) HANGUL SYLLABLE GGYALG
+AE8E;AE8E;1101 1163 11B1;AE8E;1101 1163 11B1; # (꺎; 꺎; á„ᅣᆱ; 꺎; á„ᅣᆱ; ) HANGUL SYLLABLE GGYALM
+AE8F;AE8F;1101 1163 11B2;AE8F;1101 1163 11B2; # (êº; êº; á„ᅣᆲ; êº; á„ᅣᆲ; ) HANGUL SYLLABLE GGYALB
+AE90;AE90;1101 1163 11B3;AE90;1101 1163 11B3; # (êº; êº; á„ᅣᆳ; êº; á„ᅣᆳ; ) HANGUL SYLLABLE GGYALS
+AE91;AE91;1101 1163 11B4;AE91;1101 1163 11B4; # (꺑; 꺑; á„ᅣᆴ; 꺑; á„ᅣᆴ; ) HANGUL SYLLABLE GGYALT
+AE92;AE92;1101 1163 11B5;AE92;1101 1163 11B5; # (꺒; 꺒; á„ᅣᆵ; 꺒; á„ᅣᆵ; ) HANGUL SYLLABLE GGYALP
+AE93;AE93;1101 1163 11B6;AE93;1101 1163 11B6; # (꺓; 꺓; á„ᅣᆶ; 꺓; á„ᅣᆶ; ) HANGUL SYLLABLE GGYALH
+AE94;AE94;1101 1163 11B7;AE94;1101 1163 11B7; # (꺔; 꺔; á„ᅣᆷ; 꺔; á„ᅣᆷ; ) HANGUL SYLLABLE GGYAM
+AE95;AE95;1101 1163 11B8;AE95;1101 1163 11B8; # (꺕; 꺕; á„ᅣᆸ; 꺕; á„ᅣᆸ; ) HANGUL SYLLABLE GGYAB
+AE96;AE96;1101 1163 11B9;AE96;1101 1163 11B9; # (꺖; 꺖; á„ᅣᆹ; 꺖; á„ᅣᆹ; ) HANGUL SYLLABLE GGYABS
+AE97;AE97;1101 1163 11BA;AE97;1101 1163 11BA; # (꺗; 꺗; á„ᅣᆺ; 꺗; á„ᅣᆺ; ) HANGUL SYLLABLE GGYAS
+AE98;AE98;1101 1163 11BB;AE98;1101 1163 11BB; # (꺘; 꺘; á„ᅣᆻ; 꺘; á„ᅣᆻ; ) HANGUL SYLLABLE GGYASS
+AE99;AE99;1101 1163 11BC;AE99;1101 1163 11BC; # (꺙; 꺙; á„ᅣᆼ; 꺙; á„ᅣᆼ; ) HANGUL SYLLABLE GGYANG
+AE9A;AE9A;1101 1163 11BD;AE9A;1101 1163 11BD; # (꺚; 꺚; á„ᅣᆽ; 꺚; á„ᅣᆽ; ) HANGUL SYLLABLE GGYAJ
+AE9B;AE9B;1101 1163 11BE;AE9B;1101 1163 11BE; # (꺛; 꺛; á„ᅣᆾ; 꺛; á„ᅣᆾ; ) HANGUL SYLLABLE GGYAC
+AE9C;AE9C;1101 1163 11BF;AE9C;1101 1163 11BF; # (꺜; 꺜; á„ᅣᆿ; 꺜; á„ᅣᆿ; ) HANGUL SYLLABLE GGYAK
+AE9D;AE9D;1101 1163 11C0;AE9D;1101 1163 11C0; # (êº; êº; á„ᅣᇀ; êº; á„ᅣᇀ; ) HANGUL SYLLABLE GGYAT
+AE9E;AE9E;1101 1163 11C1;AE9E;1101 1163 11C1; # (꺞; 꺞; á„á…£á‡; 꺞; á„á…£á‡; ) HANGUL SYLLABLE GGYAP
+AE9F;AE9F;1101 1163 11C2;AE9F;1101 1163 11C2; # (꺟; 꺟; á„ᅣᇂ; 꺟; á„ᅣᇂ; ) HANGUL SYLLABLE GGYAH
+AEA0;AEA0;1101 1164;AEA0;1101 1164; # (꺠; 꺠; á„á…¤; 꺠; á„á…¤; ) HANGUL SYLLABLE GGYAE
+AEA1;AEA1;1101 1164 11A8;AEA1;1101 1164 11A8; # (꺡; 꺡; á„ᅤᆨ; 꺡; á„ᅤᆨ; ) HANGUL SYLLABLE GGYAEG
+AEA2;AEA2;1101 1164 11A9;AEA2;1101 1164 11A9; # (꺢; 꺢; á„ᅤᆩ; 꺢; á„ᅤᆩ; ) HANGUL SYLLABLE GGYAEGG
+AEA3;AEA3;1101 1164 11AA;AEA3;1101 1164 11AA; # (꺣; 꺣; á„ᅤᆪ; 꺣; á„ᅤᆪ; ) HANGUL SYLLABLE GGYAEGS
+AEA4;AEA4;1101 1164 11AB;AEA4;1101 1164 11AB; # (꺤; 꺤; á„ᅤᆫ; 꺤; á„ᅤᆫ; ) HANGUL SYLLABLE GGYAEN
+AEA5;AEA5;1101 1164 11AC;AEA5;1101 1164 11AC; # (꺥; 꺥; á„ᅤᆬ; 꺥; á„ᅤᆬ; ) HANGUL SYLLABLE GGYAENJ
+AEA6;AEA6;1101 1164 11AD;AEA6;1101 1164 11AD; # (꺦; 꺦; á„ᅤᆭ; 꺦; á„ᅤᆭ; ) HANGUL SYLLABLE GGYAENH
+AEA7;AEA7;1101 1164 11AE;AEA7;1101 1164 11AE; # (꺧; 꺧; á„ᅤᆮ; 꺧; á„ᅤᆮ; ) HANGUL SYLLABLE GGYAED
+AEA8;AEA8;1101 1164 11AF;AEA8;1101 1164 11AF; # (꺨; 꺨; á„ᅤᆯ; 꺨; á„ᅤᆯ; ) HANGUL SYLLABLE GGYAEL
+AEA9;AEA9;1101 1164 11B0;AEA9;1101 1164 11B0; # (꺩; 꺩; á„ᅤᆰ; 꺩; á„ᅤᆰ; ) HANGUL SYLLABLE GGYAELG
+AEAA;AEAA;1101 1164 11B1;AEAA;1101 1164 11B1; # (꺪; 꺪; á„ᅤᆱ; 꺪; á„ᅤᆱ; ) HANGUL SYLLABLE GGYAELM
+AEAB;AEAB;1101 1164 11B2;AEAB;1101 1164 11B2; # (꺫; 꺫; á„ᅤᆲ; 꺫; á„ᅤᆲ; ) HANGUL SYLLABLE GGYAELB
+AEAC;AEAC;1101 1164 11B3;AEAC;1101 1164 11B3; # (꺬; 꺬; á„ᅤᆳ; 꺬; á„ᅤᆳ; ) HANGUL SYLLABLE GGYAELS
+AEAD;AEAD;1101 1164 11B4;AEAD;1101 1164 11B4; # (꺭; 꺭; á„ᅤᆴ; 꺭; á„ᅤᆴ; ) HANGUL SYLLABLE GGYAELT
+AEAE;AEAE;1101 1164 11B5;AEAE;1101 1164 11B5; # (꺮; 꺮; á„ᅤᆵ; 꺮; á„ᅤᆵ; ) HANGUL SYLLABLE GGYAELP
+AEAF;AEAF;1101 1164 11B6;AEAF;1101 1164 11B6; # (꺯; 꺯; á„ᅤᆶ; 꺯; á„ᅤᆶ; ) HANGUL SYLLABLE GGYAELH
+AEB0;AEB0;1101 1164 11B7;AEB0;1101 1164 11B7; # (꺰; 꺰; á„ᅤᆷ; 꺰; á„ᅤᆷ; ) HANGUL SYLLABLE GGYAEM
+AEB1;AEB1;1101 1164 11B8;AEB1;1101 1164 11B8; # (꺱; 꺱; á„ᅤᆸ; 꺱; á„ᅤᆸ; ) HANGUL SYLLABLE GGYAEB
+AEB2;AEB2;1101 1164 11B9;AEB2;1101 1164 11B9; # (꺲; 꺲; á„ᅤᆹ; 꺲; á„ᅤᆹ; ) HANGUL SYLLABLE GGYAEBS
+AEB3;AEB3;1101 1164 11BA;AEB3;1101 1164 11BA; # (꺳; 꺳; á„ᅤᆺ; 꺳; á„ᅤᆺ; ) HANGUL SYLLABLE GGYAES
+AEB4;AEB4;1101 1164 11BB;AEB4;1101 1164 11BB; # (꺴; 꺴; á„ᅤᆻ; 꺴; á„ᅤᆻ; ) HANGUL SYLLABLE GGYAESS
+AEB5;AEB5;1101 1164 11BC;AEB5;1101 1164 11BC; # (꺵; 꺵; á„ᅤᆼ; 꺵; á„ᅤᆼ; ) HANGUL SYLLABLE GGYAENG
+AEB6;AEB6;1101 1164 11BD;AEB6;1101 1164 11BD; # (꺶; 꺶; á„ᅤᆽ; 꺶; á„ᅤᆽ; ) HANGUL SYLLABLE GGYAEJ
+AEB7;AEB7;1101 1164 11BE;AEB7;1101 1164 11BE; # (꺷; 꺷; á„ᅤᆾ; 꺷; á„ᅤᆾ; ) HANGUL SYLLABLE GGYAEC
+AEB8;AEB8;1101 1164 11BF;AEB8;1101 1164 11BF; # (꺸; 꺸; á„ᅤᆿ; 꺸; á„ᅤᆿ; ) HANGUL SYLLABLE GGYAEK
+AEB9;AEB9;1101 1164 11C0;AEB9;1101 1164 11C0; # (꺹; 꺹; á„ᅤᇀ; 꺹; á„ᅤᇀ; ) HANGUL SYLLABLE GGYAET
+AEBA;AEBA;1101 1164 11C1;AEBA;1101 1164 11C1; # (꺺; 꺺; á„á…¤á‡; 꺺; á„á…¤á‡; ) HANGUL SYLLABLE GGYAEP
+AEBB;AEBB;1101 1164 11C2;AEBB;1101 1164 11C2; # (꺻; 꺻; á„ᅤᇂ; 꺻; á„ᅤᇂ; ) HANGUL SYLLABLE GGYAEH
+AEBC;AEBC;1101 1165;AEBC;1101 1165; # (꺼; 꺼; á„á…¥; 꺼; á„á…¥; ) HANGUL SYLLABLE GGEO
+AEBD;AEBD;1101 1165 11A8;AEBD;1101 1165 11A8; # (꺽; 꺽; á„ᅥᆨ; 꺽; á„ᅥᆨ; ) HANGUL SYLLABLE GGEOG
+AEBE;AEBE;1101 1165 11A9;AEBE;1101 1165 11A9; # (꺾; 꺾; á„ᅥᆩ; 꺾; á„ᅥᆩ; ) HANGUL SYLLABLE GGEOGG
+AEBF;AEBF;1101 1165 11AA;AEBF;1101 1165 11AA; # (꺿; 꺿; á„ᅥᆪ; 꺿; á„ᅥᆪ; ) HANGUL SYLLABLE GGEOGS
+AEC0;AEC0;1101 1165 11AB;AEC0;1101 1165 11AB; # (껀; 껀; á„ᅥᆫ; 껀; á„ᅥᆫ; ) HANGUL SYLLABLE GGEON
+AEC1;AEC1;1101 1165 11AC;AEC1;1101 1165 11AC; # (ê»; ê»; á„ᅥᆬ; ê»; á„ᅥᆬ; ) HANGUL SYLLABLE GGEONJ
+AEC2;AEC2;1101 1165 11AD;AEC2;1101 1165 11AD; # (껂; 껂; á„ᅥᆭ; 껂; á„ᅥᆭ; ) HANGUL SYLLABLE GGEONH
+AEC3;AEC3;1101 1165 11AE;AEC3;1101 1165 11AE; # (껃; 껃; á„ᅥᆮ; 껃; á„ᅥᆮ; ) HANGUL SYLLABLE GGEOD
+AEC4;AEC4;1101 1165 11AF;AEC4;1101 1165 11AF; # (껄; 껄; á„ᅥᆯ; 껄; á„ᅥᆯ; ) HANGUL SYLLABLE GGEOL
+AEC5;AEC5;1101 1165 11B0;AEC5;1101 1165 11B0; # (ê»…; ê»…; á„ᅥᆰ; ê»…; á„ᅥᆰ; ) HANGUL SYLLABLE GGEOLG
+AEC6;AEC6;1101 1165 11B1;AEC6;1101 1165 11B1; # (껆; 껆; á„ᅥᆱ; 껆; á„ᅥᆱ; ) HANGUL SYLLABLE GGEOLM
+AEC7;AEC7;1101 1165 11B2;AEC7;1101 1165 11B2; # (껇; 껇; á„ᅥᆲ; 껇; á„ᅥᆲ; ) HANGUL SYLLABLE GGEOLB
+AEC8;AEC8;1101 1165 11B3;AEC8;1101 1165 11B3; # (껈; 껈; á„ᅥᆳ; 껈; á„ᅥᆳ; ) HANGUL SYLLABLE GGEOLS
+AEC9;AEC9;1101 1165 11B4;AEC9;1101 1165 11B4; # (껉; 껉; á„ᅥᆴ; 껉; á„ᅥᆴ; ) HANGUL SYLLABLE GGEOLT
+AECA;AECA;1101 1165 11B5;AECA;1101 1165 11B5; # (껊; 껊; á„ᅥᆵ; 껊; á„ᅥᆵ; ) HANGUL SYLLABLE GGEOLP
+AECB;AECB;1101 1165 11B6;AECB;1101 1165 11B6; # (껋; 껋; á„ᅥᆶ; 껋; á„ᅥᆶ; ) HANGUL SYLLABLE GGEOLH
+AECC;AECC;1101 1165 11B7;AECC;1101 1165 11B7; # (껌; 껌; á„ᅥᆷ; 껌; á„ᅥᆷ; ) HANGUL SYLLABLE GGEOM
+AECD;AECD;1101 1165 11B8;AECD;1101 1165 11B8; # (ê»; ê»; á„ᅥᆸ; ê»; á„ᅥᆸ; ) HANGUL SYLLABLE GGEOB
+AECE;AECE;1101 1165 11B9;AECE;1101 1165 11B9; # (껎; 껎; á„ᅥᆹ; 껎; á„ᅥᆹ; ) HANGUL SYLLABLE GGEOBS
+AECF;AECF;1101 1165 11BA;AECF;1101 1165 11BA; # (ê»; ê»; á„ᅥᆺ; ê»; á„ᅥᆺ; ) HANGUL SYLLABLE GGEOS
+AED0;AED0;1101 1165 11BB;AED0;1101 1165 11BB; # (ê»; ê»; á„ᅥᆻ; ê»; á„ᅥᆻ; ) HANGUL SYLLABLE GGEOSS
+AED1;AED1;1101 1165 11BC;AED1;1101 1165 11BC; # (껑; 껑; á„ᅥᆼ; 껑; á„ᅥᆼ; ) HANGUL SYLLABLE GGEONG
+AED2;AED2;1101 1165 11BD;AED2;1101 1165 11BD; # (ê»’; ê»’; á„ᅥᆽ; ê»’; á„ᅥᆽ; ) HANGUL SYLLABLE GGEOJ
+AED3;AED3;1101 1165 11BE;AED3;1101 1165 11BE; # (껓; 껓; á„ᅥᆾ; 껓; á„ᅥᆾ; ) HANGUL SYLLABLE GGEOC
+AED4;AED4;1101 1165 11BF;AED4;1101 1165 11BF; # (ê»”; ê»”; á„ᅥᆿ; ê»”; á„ᅥᆿ; ) HANGUL SYLLABLE GGEOK
+AED5;AED5;1101 1165 11C0;AED5;1101 1165 11C0; # (껕; 껕; á„ᅥᇀ; 껕; á„ᅥᇀ; ) HANGUL SYLLABLE GGEOT
+AED6;AED6;1101 1165 11C1;AED6;1101 1165 11C1; # (ê»–; ê»–; á„á…¥á‡; ê»–; á„á…¥á‡; ) HANGUL SYLLABLE GGEOP
+AED7;AED7;1101 1165 11C2;AED7;1101 1165 11C2; # (ê»—; ê»—; á„ᅥᇂ; ê»—; á„ᅥᇂ; ) HANGUL SYLLABLE GGEOH
+AED8;AED8;1101 1166;AED8;1101 1166; # (께; 께; á„á…¦; 께; á„á…¦; ) HANGUL SYLLABLE GGE
+AED9;AED9;1101 1166 11A8;AED9;1101 1166 11A8; # (ê»™; ê»™; á„ᅦᆨ; ê»™; á„ᅦᆨ; ) HANGUL SYLLABLE GGEG
+AEDA;AEDA;1101 1166 11A9;AEDA;1101 1166 11A9; # (껚; 껚; á„ᅦᆩ; 껚; á„ᅦᆩ; ) HANGUL SYLLABLE GGEGG
+AEDB;AEDB;1101 1166 11AA;AEDB;1101 1166 11AA; # (ê»›; ê»›; á„ᅦᆪ; ê»›; á„ᅦᆪ; ) HANGUL SYLLABLE GGEGS
+AEDC;AEDC;1101 1166 11AB;AEDC;1101 1166 11AB; # (껜; 껜; á„ᅦᆫ; 껜; á„ᅦᆫ; ) HANGUL SYLLABLE GGEN
+AEDD;AEDD;1101 1166 11AC;AEDD;1101 1166 11AC; # (ê»; ê»; á„ᅦᆬ; ê»; á„ᅦᆬ; ) HANGUL SYLLABLE GGENJ
+AEDE;AEDE;1101 1166 11AD;AEDE;1101 1166 11AD; # (껞; 껞; á„ᅦᆭ; 껞; á„ᅦᆭ; ) HANGUL SYLLABLE GGENH
+AEDF;AEDF;1101 1166 11AE;AEDF;1101 1166 11AE; # (껟; 껟; á„ᅦᆮ; 껟; á„ᅦᆮ; ) HANGUL SYLLABLE GGED
+AEE0;AEE0;1101 1166 11AF;AEE0;1101 1166 11AF; # (ê» ; ê» ; á„ᅦᆯ; ê» ; á„ᅦᆯ; ) HANGUL SYLLABLE GGEL
+AEE1;AEE1;1101 1166 11B0;AEE1;1101 1166 11B0; # (껡; 껡; á„ᅦᆰ; 껡; á„ᅦᆰ; ) HANGUL SYLLABLE GGELG
+AEE2;AEE2;1101 1166 11B1;AEE2;1101 1166 11B1; # (껢; 껢; á„ᅦᆱ; 껢; á„ᅦᆱ; ) HANGUL SYLLABLE GGELM
+AEE3;AEE3;1101 1166 11B2;AEE3;1101 1166 11B2; # (껣; 껣; á„ᅦᆲ; 껣; á„ᅦᆲ; ) HANGUL SYLLABLE GGELB
+AEE4;AEE4;1101 1166 11B3;AEE4;1101 1166 11B3; # (껤; 껤; á„ᅦᆳ; 껤; á„ᅦᆳ; ) HANGUL SYLLABLE GGELS
+AEE5;AEE5;1101 1166 11B4;AEE5;1101 1166 11B4; # (껥; 껥; á„ᅦᆴ; 껥; á„ᅦᆴ; ) HANGUL SYLLABLE GGELT
+AEE6;AEE6;1101 1166 11B5;AEE6;1101 1166 11B5; # (껦; 껦; á„ᅦᆵ; 껦; á„ᅦᆵ; ) HANGUL SYLLABLE GGELP
+AEE7;AEE7;1101 1166 11B6;AEE7;1101 1166 11B6; # (껧; 껧; á„ᅦᆶ; 껧; á„ᅦᆶ; ) HANGUL SYLLABLE GGELH
+AEE8;AEE8;1101 1166 11B7;AEE8;1101 1166 11B7; # (껨; 껨; á„ᅦᆷ; 껨; á„ᅦᆷ; ) HANGUL SYLLABLE GGEM
+AEE9;AEE9;1101 1166 11B8;AEE9;1101 1166 11B8; # (껩; 껩; á„ᅦᆸ; 껩; á„ᅦᆸ; ) HANGUL SYLLABLE GGEB
+AEEA;AEEA;1101 1166 11B9;AEEA;1101 1166 11B9; # (껪; 껪; á„ᅦᆹ; 껪; á„ᅦᆹ; ) HANGUL SYLLABLE GGEBS
+AEEB;AEEB;1101 1166 11BA;AEEB;1101 1166 11BA; # (껫; 껫; á„ᅦᆺ; 껫; á„ᅦᆺ; ) HANGUL SYLLABLE GGES
+AEEC;AEEC;1101 1166 11BB;AEEC;1101 1166 11BB; # (껬; 껬; á„ᅦᆻ; 껬; á„ᅦᆻ; ) HANGUL SYLLABLE GGESS
+AEED;AEED;1101 1166 11BC;AEED;1101 1166 11BC; # (ê»­; ê»­; á„ᅦᆼ; ê»­; á„ᅦᆼ; ) HANGUL SYLLABLE GGENG
+AEEE;AEEE;1101 1166 11BD;AEEE;1101 1166 11BD; # (ê»®; ê»®; á„ᅦᆽ; ê»®; á„ᅦᆽ; ) HANGUL SYLLABLE GGEJ
+AEEF;AEEF;1101 1166 11BE;AEEF;1101 1166 11BE; # (껯; 껯; á„ᅦᆾ; 껯; á„ᅦᆾ; ) HANGUL SYLLABLE GGEC
+AEF0;AEF0;1101 1166 11BF;AEF0;1101 1166 11BF; # (ê»°; ê»°; á„ᅦᆿ; ê»°; á„ᅦᆿ; ) HANGUL SYLLABLE GGEK
+AEF1;AEF1;1101 1166 11C0;AEF1;1101 1166 11C0; # (ê»±; ê»±; á„ᅦᇀ; ê»±; á„ᅦᇀ; ) HANGUL SYLLABLE GGET
+AEF2;AEF2;1101 1166 11C1;AEF2;1101 1166 11C1; # (껲; 껲; á„á…¦á‡; 껲; á„á…¦á‡; ) HANGUL SYLLABLE GGEP
+AEF3;AEF3;1101 1166 11C2;AEF3;1101 1166 11C2; # (껳; 껳; á„ᅦᇂ; 껳; á„ᅦᇂ; ) HANGUL SYLLABLE GGEH
+AEF4;AEF4;1101 1167;AEF4;1101 1167; # (ê»´; ê»´; á„á…§; ê»´; á„á…§; ) HANGUL SYLLABLE GGYEO
+AEF5;AEF5;1101 1167 11A8;AEF5;1101 1167 11A8; # (껵; 껵; á„ᅧᆨ; 껵; á„ᅧᆨ; ) HANGUL SYLLABLE GGYEOG
+AEF6;AEF6;1101 1167 11A9;AEF6;1101 1167 11A9; # (껶; 껶; á„ᅧᆩ; 껶; á„ᅧᆩ; ) HANGUL SYLLABLE GGYEOGG
+AEF7;AEF7;1101 1167 11AA;AEF7;1101 1167 11AA; # (ê»·; ê»·; á„ᅧᆪ; ê»·; á„ᅧᆪ; ) HANGUL SYLLABLE GGYEOGS
+AEF8;AEF8;1101 1167 11AB;AEF8;1101 1167 11AB; # (껸; 껸; á„ᅧᆫ; 껸; á„ᅧᆫ; ) HANGUL SYLLABLE GGYEON
+AEF9;AEF9;1101 1167 11AC;AEF9;1101 1167 11AC; # (껹; 껹; á„ᅧᆬ; 껹; á„ᅧᆬ; ) HANGUL SYLLABLE GGYEONJ
+AEFA;AEFA;1101 1167 11AD;AEFA;1101 1167 11AD; # (껺; 껺; á„ᅧᆭ; 껺; á„ᅧᆭ; ) HANGUL SYLLABLE GGYEONH
+AEFB;AEFB;1101 1167 11AE;AEFB;1101 1167 11AE; # (ê»»; ê»»; á„ᅧᆮ; ê»»; á„ᅧᆮ; ) HANGUL SYLLABLE GGYEOD
+AEFC;AEFC;1101 1167 11AF;AEFC;1101 1167 11AF; # (껼; 껼; á„ᅧᆯ; 껼; á„ᅧᆯ; ) HANGUL SYLLABLE GGYEOL
+AEFD;AEFD;1101 1167 11B0;AEFD;1101 1167 11B0; # (껽; 껽; á„ᅧᆰ; 껽; á„ᅧᆰ; ) HANGUL SYLLABLE GGYEOLG
+AEFE;AEFE;1101 1167 11B1;AEFE;1101 1167 11B1; # (껾; 껾; á„ᅧᆱ; 껾; á„ᅧᆱ; ) HANGUL SYLLABLE GGYEOLM
+AEFF;AEFF;1101 1167 11B2;AEFF;1101 1167 11B2; # (껿; 껿; á„ᅧᆲ; 껿; á„ᅧᆲ; ) HANGUL SYLLABLE GGYEOLB
+AF00;AF00;1101 1167 11B3;AF00;1101 1167 11B3; # (ê¼€; ê¼€; á„ᅧᆳ; ê¼€; á„ᅧᆳ; ) HANGUL SYLLABLE GGYEOLS
+AF01;AF01;1101 1167 11B4;AF01;1101 1167 11B4; # (ê¼; ê¼; á„ᅧᆴ; ê¼; á„ᅧᆴ; ) HANGUL SYLLABLE GGYEOLT
+AF02;AF02;1101 1167 11B5;AF02;1101 1167 11B5; # (꼂; 꼂; á„ᅧᆵ; 꼂; á„ᅧᆵ; ) HANGUL SYLLABLE GGYEOLP
+AF03;AF03;1101 1167 11B6;AF03;1101 1167 11B6; # (꼃; 꼃; á„ᅧᆶ; 꼃; á„ᅧᆶ; ) HANGUL SYLLABLE GGYEOLH
+AF04;AF04;1101 1167 11B7;AF04;1101 1167 11B7; # (꼄; 꼄; á„ᅧᆷ; 꼄; á„ᅧᆷ; ) HANGUL SYLLABLE GGYEOM
+AF05;AF05;1101 1167 11B8;AF05;1101 1167 11B8; # (ê¼…; ê¼…; á„ᅧᆸ; ê¼…; á„ᅧᆸ; ) HANGUL SYLLABLE GGYEOB
+AF06;AF06;1101 1167 11B9;AF06;1101 1167 11B9; # (꼆; 꼆; á„ᅧᆹ; 꼆; á„ᅧᆹ; ) HANGUL SYLLABLE GGYEOBS
+AF07;AF07;1101 1167 11BA;AF07;1101 1167 11BA; # (꼇; 꼇; á„ᅧᆺ; 꼇; á„ᅧᆺ; ) HANGUL SYLLABLE GGYEOS
+AF08;AF08;1101 1167 11BB;AF08;1101 1167 11BB; # (꼈; 꼈; á„ᅧᆻ; 꼈; á„ᅧᆻ; ) HANGUL SYLLABLE GGYEOSS
+AF09;AF09;1101 1167 11BC;AF09;1101 1167 11BC; # (꼉; 꼉; á„ᅧᆼ; 꼉; á„ᅧᆼ; ) HANGUL SYLLABLE GGYEONG
+AF0A;AF0A;1101 1167 11BD;AF0A;1101 1167 11BD; # (꼊; 꼊; á„ᅧᆽ; 꼊; á„ᅧᆽ; ) HANGUL SYLLABLE GGYEOJ
+AF0B;AF0B;1101 1167 11BE;AF0B;1101 1167 11BE; # (꼋; 꼋; á„ᅧᆾ; 꼋; á„ᅧᆾ; ) HANGUL SYLLABLE GGYEOC
+AF0C;AF0C;1101 1167 11BF;AF0C;1101 1167 11BF; # (꼌; 꼌; á„ᅧᆿ; 꼌; á„ᅧᆿ; ) HANGUL SYLLABLE GGYEOK
+AF0D;AF0D;1101 1167 11C0;AF0D;1101 1167 11C0; # (ê¼; ê¼; á„ᅧᇀ; ê¼; á„ᅧᇀ; ) HANGUL SYLLABLE GGYEOT
+AF0E;AF0E;1101 1167 11C1;AF0E;1101 1167 11C1; # (꼎; 꼎; á„á…§á‡; 꼎; á„á…§á‡; ) HANGUL SYLLABLE GGYEOP
+AF0F;AF0F;1101 1167 11C2;AF0F;1101 1167 11C2; # (ê¼; ê¼; á„ᅧᇂ; ê¼; á„ᅧᇂ; ) HANGUL SYLLABLE GGYEOH
+AF10;AF10;1101 1168;AF10;1101 1168; # (ê¼; ê¼; á„á…¨; ê¼; á„á…¨; ) HANGUL SYLLABLE GGYE
+AF11;AF11;1101 1168 11A8;AF11;1101 1168 11A8; # (꼑; 꼑; á„ᅨᆨ; 꼑; á„ᅨᆨ; ) HANGUL SYLLABLE GGYEG
+AF12;AF12;1101 1168 11A9;AF12;1101 1168 11A9; # (ê¼’; ê¼’; á„ᅨᆩ; ê¼’; á„ᅨᆩ; ) HANGUL SYLLABLE GGYEGG
+AF13;AF13;1101 1168 11AA;AF13;1101 1168 11AA; # (꼓; 꼓; á„ᅨᆪ; 꼓; á„ᅨᆪ; ) HANGUL SYLLABLE GGYEGS
+AF14;AF14;1101 1168 11AB;AF14;1101 1168 11AB; # (ê¼”; ê¼”; á„ᅨᆫ; ê¼”; á„ᅨᆫ; ) HANGUL SYLLABLE GGYEN
+AF15;AF15;1101 1168 11AC;AF15;1101 1168 11AC; # (꼕; 꼕; á„ᅨᆬ; 꼕; á„ᅨᆬ; ) HANGUL SYLLABLE GGYENJ
+AF16;AF16;1101 1168 11AD;AF16;1101 1168 11AD; # (ê¼–; ê¼–; á„ᅨᆭ; ê¼–; á„ᅨᆭ; ) HANGUL SYLLABLE GGYENH
+AF17;AF17;1101 1168 11AE;AF17;1101 1168 11AE; # (ê¼—; ê¼—; á„ᅨᆮ; ê¼—; á„ᅨᆮ; ) HANGUL SYLLABLE GGYED
+AF18;AF18;1101 1168 11AF;AF18;1101 1168 11AF; # (꼘; 꼘; á„ᅨᆯ; 꼘; á„ᅨᆯ; ) HANGUL SYLLABLE GGYEL
+AF19;AF19;1101 1168 11B0;AF19;1101 1168 11B0; # (ê¼™; ê¼™; á„ᅨᆰ; ê¼™; á„ᅨᆰ; ) HANGUL SYLLABLE GGYELG
+AF1A;AF1A;1101 1168 11B1;AF1A;1101 1168 11B1; # (꼚; 꼚; á„ᅨᆱ; 꼚; á„ᅨᆱ; ) HANGUL SYLLABLE GGYELM
+AF1B;AF1B;1101 1168 11B2;AF1B;1101 1168 11B2; # (ê¼›; ê¼›; á„ᅨᆲ; ê¼›; á„ᅨᆲ; ) HANGUL SYLLABLE GGYELB
+AF1C;AF1C;1101 1168 11B3;AF1C;1101 1168 11B3; # (꼜; 꼜; á„ᅨᆳ; 꼜; á„ᅨᆳ; ) HANGUL SYLLABLE GGYELS
+AF1D;AF1D;1101 1168 11B4;AF1D;1101 1168 11B4; # (ê¼; ê¼; á„ᅨᆴ; ê¼; á„ᅨᆴ; ) HANGUL SYLLABLE GGYELT
+AF1E;AF1E;1101 1168 11B5;AF1E;1101 1168 11B5; # (꼞; 꼞; á„ᅨᆵ; 꼞; á„ᅨᆵ; ) HANGUL SYLLABLE GGYELP
+AF1F;AF1F;1101 1168 11B6;AF1F;1101 1168 11B6; # (꼟; 꼟; á„ᅨᆶ; 꼟; á„ᅨᆶ; ) HANGUL SYLLABLE GGYELH
+AF20;AF20;1101 1168 11B7;AF20;1101 1168 11B7; # (ê¼ ; ê¼ ; á„ᅨᆷ; ê¼ ; á„ᅨᆷ; ) HANGUL SYLLABLE GGYEM
+AF21;AF21;1101 1168 11B8;AF21;1101 1168 11B8; # (꼡; 꼡; á„ᅨᆸ; 꼡; á„ᅨᆸ; ) HANGUL SYLLABLE GGYEB
+AF22;AF22;1101 1168 11B9;AF22;1101 1168 11B9; # (ê¼¢; ê¼¢; á„ᅨᆹ; ê¼¢; á„ᅨᆹ; ) HANGUL SYLLABLE GGYEBS
+AF23;AF23;1101 1168 11BA;AF23;1101 1168 11BA; # (ê¼£; ê¼£; á„ᅨᆺ; ê¼£; á„ᅨᆺ; ) HANGUL SYLLABLE GGYES
+AF24;AF24;1101 1168 11BB;AF24;1101 1168 11BB; # (꼤; 꼤; á„ᅨᆻ; 꼤; á„ᅨᆻ; ) HANGUL SYLLABLE GGYESS
+AF25;AF25;1101 1168 11BC;AF25;1101 1168 11BC; # (ê¼¥; ê¼¥; á„ᅨᆼ; ê¼¥; á„ᅨᆼ; ) HANGUL SYLLABLE GGYENG
+AF26;AF26;1101 1168 11BD;AF26;1101 1168 11BD; # (꼦; 꼦; á„ᅨᆽ; 꼦; á„ᅨᆽ; ) HANGUL SYLLABLE GGYEJ
+AF27;AF27;1101 1168 11BE;AF27;1101 1168 11BE; # (꼧; 꼧; á„ᅨᆾ; 꼧; á„ᅨᆾ; ) HANGUL SYLLABLE GGYEC
+AF28;AF28;1101 1168 11BF;AF28;1101 1168 11BF; # (꼨; 꼨; á„ᅨᆿ; 꼨; á„ᅨᆿ; ) HANGUL SYLLABLE GGYEK
+AF29;AF29;1101 1168 11C0;AF29;1101 1168 11C0; # (꼩; 꼩; á„ᅨᇀ; 꼩; á„ᅨᇀ; ) HANGUL SYLLABLE GGYET
+AF2A;AF2A;1101 1168 11C1;AF2A;1101 1168 11C1; # (꼪; 꼪; á„á…¨á‡; 꼪; á„á…¨á‡; ) HANGUL SYLLABLE GGYEP
+AF2B;AF2B;1101 1168 11C2;AF2B;1101 1168 11C2; # (꼫; 꼫; á„ᅨᇂ; 꼫; á„ᅨᇂ; ) HANGUL SYLLABLE GGYEH
+AF2C;AF2C;1101 1169;AF2C;1101 1169; # (꼬; 꼬; á„á…©; 꼬; á„á…©; ) HANGUL SYLLABLE GGO
+AF2D;AF2D;1101 1169 11A8;AF2D;1101 1169 11A8; # (ê¼­; ê¼­; á„ᅩᆨ; ê¼­; á„ᅩᆨ; ) HANGUL SYLLABLE GGOG
+AF2E;AF2E;1101 1169 11A9;AF2E;1101 1169 11A9; # (ê¼®; ê¼®; á„ᅩᆩ; ê¼®; á„ᅩᆩ; ) HANGUL SYLLABLE GGOGG
+AF2F;AF2F;1101 1169 11AA;AF2F;1101 1169 11AA; # (꼯; 꼯; á„ᅩᆪ; 꼯; á„ᅩᆪ; ) HANGUL SYLLABLE GGOGS
+AF30;AF30;1101 1169 11AB;AF30;1101 1169 11AB; # (ê¼°; ê¼°; á„ᅩᆫ; ê¼°; á„ᅩᆫ; ) HANGUL SYLLABLE GGON
+AF31;AF31;1101 1169 11AC;AF31;1101 1169 11AC; # (ê¼±; ê¼±; á„ᅩᆬ; ê¼±; á„ᅩᆬ; ) HANGUL SYLLABLE GGONJ
+AF32;AF32;1101 1169 11AD;AF32;1101 1169 11AD; # (ê¼²; ê¼²; á„ᅩᆭ; ê¼²; á„ᅩᆭ; ) HANGUL SYLLABLE GGONH
+AF33;AF33;1101 1169 11AE;AF33;1101 1169 11AE; # (ê¼³; ê¼³; á„ᅩᆮ; ê¼³; á„ᅩᆮ; ) HANGUL SYLLABLE GGOD
+AF34;AF34;1101 1169 11AF;AF34;1101 1169 11AF; # (ê¼´; ê¼´; á„ᅩᆯ; ê¼´; á„ᅩᆯ; ) HANGUL SYLLABLE GGOL
+AF35;AF35;1101 1169 11B0;AF35;1101 1169 11B0; # (ê¼µ; ê¼µ; á„ᅩᆰ; ê¼µ; á„ᅩᆰ; ) HANGUL SYLLABLE GGOLG
+AF36;AF36;1101 1169 11B1;AF36;1101 1169 11B1; # (꼶; 꼶; á„ᅩᆱ; 꼶; á„ᅩᆱ; ) HANGUL SYLLABLE GGOLM
+AF37;AF37;1101 1169 11B2;AF37;1101 1169 11B2; # (ê¼·; ê¼·; á„ᅩᆲ; ê¼·; á„ᅩᆲ; ) HANGUL SYLLABLE GGOLB
+AF38;AF38;1101 1169 11B3;AF38;1101 1169 11B3; # (꼸; 꼸; á„ᅩᆳ; 꼸; á„ᅩᆳ; ) HANGUL SYLLABLE GGOLS
+AF39;AF39;1101 1169 11B4;AF39;1101 1169 11B4; # (ê¼¹; ê¼¹; á„ᅩᆴ; ê¼¹; á„ᅩᆴ; ) HANGUL SYLLABLE GGOLT
+AF3A;AF3A;1101 1169 11B5;AF3A;1101 1169 11B5; # (꼺; 꼺; á„ᅩᆵ; 꼺; á„ᅩᆵ; ) HANGUL SYLLABLE GGOLP
+AF3B;AF3B;1101 1169 11B6;AF3B;1101 1169 11B6; # (ê¼»; ê¼»; á„ᅩᆶ; ê¼»; á„ᅩᆶ; ) HANGUL SYLLABLE GGOLH
+AF3C;AF3C;1101 1169 11B7;AF3C;1101 1169 11B7; # (ê¼¼; ê¼¼; á„ᅩᆷ; ê¼¼; á„ᅩᆷ; ) HANGUL SYLLABLE GGOM
+AF3D;AF3D;1101 1169 11B8;AF3D;1101 1169 11B8; # (ê¼½; ê¼½; á„ᅩᆸ; ê¼½; á„ᅩᆸ; ) HANGUL SYLLABLE GGOB
+AF3E;AF3E;1101 1169 11B9;AF3E;1101 1169 11B9; # (ê¼¾; ê¼¾; á„ᅩᆹ; ê¼¾; á„ᅩᆹ; ) HANGUL SYLLABLE GGOBS
+AF3F;AF3F;1101 1169 11BA;AF3F;1101 1169 11BA; # (꼿; 꼿; á„ᅩᆺ; 꼿; á„ᅩᆺ; ) HANGUL SYLLABLE GGOS
+AF40;AF40;1101 1169 11BB;AF40;1101 1169 11BB; # (ê½€; ê½€; á„ᅩᆻ; ê½€; á„ᅩᆻ; ) HANGUL SYLLABLE GGOSS
+AF41;AF41;1101 1169 11BC;AF41;1101 1169 11BC; # (ê½; ê½; á„ᅩᆼ; ê½; á„ᅩᆼ; ) HANGUL SYLLABLE GGONG
+AF42;AF42;1101 1169 11BD;AF42;1101 1169 11BD; # (꽂; 꽂; á„ᅩᆽ; 꽂; á„ᅩᆽ; ) HANGUL SYLLABLE GGOJ
+AF43;AF43;1101 1169 11BE;AF43;1101 1169 11BE; # (꽃; 꽃; á„ᅩᆾ; 꽃; á„ᅩᆾ; ) HANGUL SYLLABLE GGOC
+AF44;AF44;1101 1169 11BF;AF44;1101 1169 11BF; # (꽄; 꽄; á„ᅩᆿ; 꽄; á„ᅩᆿ; ) HANGUL SYLLABLE GGOK
+AF45;AF45;1101 1169 11C0;AF45;1101 1169 11C0; # (ê½…; ê½…; á„ᅩᇀ; ê½…; á„ᅩᇀ; ) HANGUL SYLLABLE GGOT
+AF46;AF46;1101 1169 11C1;AF46;1101 1169 11C1; # (꽆; 꽆; á„á…©á‡; 꽆; á„á…©á‡; ) HANGUL SYLLABLE GGOP
+AF47;AF47;1101 1169 11C2;AF47;1101 1169 11C2; # (꽇; 꽇; á„ᅩᇂ; 꽇; á„ᅩᇂ; ) HANGUL SYLLABLE GGOH
+AF48;AF48;1101 116A;AF48;1101 116A; # (꽈; 꽈; á„á…ª; 꽈; á„á…ª; ) HANGUL SYLLABLE GGWA
+AF49;AF49;1101 116A 11A8;AF49;1101 116A 11A8; # (꽉; 꽉; á„ᅪᆨ; 꽉; á„ᅪᆨ; ) HANGUL SYLLABLE GGWAG
+AF4A;AF4A;1101 116A 11A9;AF4A;1101 116A 11A9; # (꽊; 꽊; á„ᅪᆩ; 꽊; á„ᅪᆩ; ) HANGUL SYLLABLE GGWAGG
+AF4B;AF4B;1101 116A 11AA;AF4B;1101 116A 11AA; # (꽋; 꽋; á„ᅪᆪ; 꽋; á„ᅪᆪ; ) HANGUL SYLLABLE GGWAGS
+AF4C;AF4C;1101 116A 11AB;AF4C;1101 116A 11AB; # (꽌; 꽌; á„ᅪᆫ; 꽌; á„ᅪᆫ; ) HANGUL SYLLABLE GGWAN
+AF4D;AF4D;1101 116A 11AC;AF4D;1101 116A 11AC; # (ê½; ê½; á„ᅪᆬ; ê½; á„ᅪᆬ; ) HANGUL SYLLABLE GGWANJ
+AF4E;AF4E;1101 116A 11AD;AF4E;1101 116A 11AD; # (꽎; 꽎; á„ᅪᆭ; 꽎; á„ᅪᆭ; ) HANGUL SYLLABLE GGWANH
+AF4F;AF4F;1101 116A 11AE;AF4F;1101 116A 11AE; # (ê½; ê½; á„ᅪᆮ; ê½; á„ᅪᆮ; ) HANGUL SYLLABLE GGWAD
+AF50;AF50;1101 116A 11AF;AF50;1101 116A 11AF; # (ê½; ê½; á„ᅪᆯ; ê½; á„ᅪᆯ; ) HANGUL SYLLABLE GGWAL
+AF51;AF51;1101 116A 11B0;AF51;1101 116A 11B0; # (꽑; 꽑; á„ᅪᆰ; 꽑; á„ᅪᆰ; ) HANGUL SYLLABLE GGWALG
+AF52;AF52;1101 116A 11B1;AF52;1101 116A 11B1; # (ê½’; ê½’; á„ᅪᆱ; ê½’; á„ᅪᆱ; ) HANGUL SYLLABLE GGWALM
+AF53;AF53;1101 116A 11B2;AF53;1101 116A 11B2; # (꽓; 꽓; á„ᅪᆲ; 꽓; á„ᅪᆲ; ) HANGUL SYLLABLE GGWALB
+AF54;AF54;1101 116A 11B3;AF54;1101 116A 11B3; # (ê½”; ê½”; á„ᅪᆳ; ê½”; á„ᅪᆳ; ) HANGUL SYLLABLE GGWALS
+AF55;AF55;1101 116A 11B4;AF55;1101 116A 11B4; # (꽕; 꽕; á„ᅪᆴ; 꽕; á„ᅪᆴ; ) HANGUL SYLLABLE GGWALT
+AF56;AF56;1101 116A 11B5;AF56;1101 116A 11B5; # (ê½–; ê½–; á„ᅪᆵ; ê½–; á„ᅪᆵ; ) HANGUL SYLLABLE GGWALP
+AF57;AF57;1101 116A 11B6;AF57;1101 116A 11B6; # (ê½—; ê½—; á„ᅪᆶ; ê½—; á„ᅪᆶ; ) HANGUL SYLLABLE GGWALH
+AF58;AF58;1101 116A 11B7;AF58;1101 116A 11B7; # (꽘; 꽘; á„ᅪᆷ; 꽘; á„ᅪᆷ; ) HANGUL SYLLABLE GGWAM
+AF59;AF59;1101 116A 11B8;AF59;1101 116A 11B8; # (ê½™; ê½™; á„ᅪᆸ; ê½™; á„ᅪᆸ; ) HANGUL SYLLABLE GGWAB
+AF5A;AF5A;1101 116A 11B9;AF5A;1101 116A 11B9; # (꽚; 꽚; á„ᅪᆹ; 꽚; á„ᅪᆹ; ) HANGUL SYLLABLE GGWABS
+AF5B;AF5B;1101 116A 11BA;AF5B;1101 116A 11BA; # (ê½›; ê½›; á„ᅪᆺ; ê½›; á„ᅪᆺ; ) HANGUL SYLLABLE GGWAS
+AF5C;AF5C;1101 116A 11BB;AF5C;1101 116A 11BB; # (꽜; 꽜; á„ᅪᆻ; 꽜; á„ᅪᆻ; ) HANGUL SYLLABLE GGWASS
+AF5D;AF5D;1101 116A 11BC;AF5D;1101 116A 11BC; # (ê½; ê½; á„ᅪᆼ; ê½; á„ᅪᆼ; ) HANGUL SYLLABLE GGWANG
+AF5E;AF5E;1101 116A 11BD;AF5E;1101 116A 11BD; # (꽞; 꽞; á„ᅪᆽ; 꽞; á„ᅪᆽ; ) HANGUL SYLLABLE GGWAJ
+AF5F;AF5F;1101 116A 11BE;AF5F;1101 116A 11BE; # (꽟; 꽟; á„ᅪᆾ; 꽟; á„ᅪᆾ; ) HANGUL SYLLABLE GGWAC
+AF60;AF60;1101 116A 11BF;AF60;1101 116A 11BF; # (ê½ ; ê½ ; á„ᅪᆿ; ê½ ; á„ᅪᆿ; ) HANGUL SYLLABLE GGWAK
+AF61;AF61;1101 116A 11C0;AF61;1101 116A 11C0; # (꽡; 꽡; á„ᅪᇀ; 꽡; á„ᅪᇀ; ) HANGUL SYLLABLE GGWAT
+AF62;AF62;1101 116A 11C1;AF62;1101 116A 11C1; # (ê½¢; ê½¢; á„á…ªá‡; ê½¢; á„á…ªá‡; ) HANGUL SYLLABLE GGWAP
+AF63;AF63;1101 116A 11C2;AF63;1101 116A 11C2; # (ê½£; ê½£; á„ᅪᇂ; ê½£; á„ᅪᇂ; ) HANGUL SYLLABLE GGWAH
+AF64;AF64;1101 116B;AF64;1101 116B; # (꽤; 꽤; á„á…«; 꽤; á„á…«; ) HANGUL SYLLABLE GGWAE
+AF65;AF65;1101 116B 11A8;AF65;1101 116B 11A8; # (ê½¥; ê½¥; á„ᅫᆨ; ê½¥; á„ᅫᆨ; ) HANGUL SYLLABLE GGWAEG
+AF66;AF66;1101 116B 11A9;AF66;1101 116B 11A9; # (꽦; 꽦; á„ᅫᆩ; 꽦; á„ᅫᆩ; ) HANGUL SYLLABLE GGWAEGG
+AF67;AF67;1101 116B 11AA;AF67;1101 116B 11AA; # (꽧; 꽧; á„ᅫᆪ; 꽧; á„ᅫᆪ; ) HANGUL SYLLABLE GGWAEGS
+AF68;AF68;1101 116B 11AB;AF68;1101 116B 11AB; # (꽨; 꽨; á„ᅫᆫ; 꽨; á„ᅫᆫ; ) HANGUL SYLLABLE GGWAEN
+AF69;AF69;1101 116B 11AC;AF69;1101 116B 11AC; # (꽩; 꽩; á„ᅫᆬ; 꽩; á„ᅫᆬ; ) HANGUL SYLLABLE GGWAENJ
+AF6A;AF6A;1101 116B 11AD;AF6A;1101 116B 11AD; # (꽪; 꽪; á„ᅫᆭ; 꽪; á„ᅫᆭ; ) HANGUL SYLLABLE GGWAENH
+AF6B;AF6B;1101 116B 11AE;AF6B;1101 116B 11AE; # (꽫; 꽫; á„ᅫᆮ; 꽫; á„ᅫᆮ; ) HANGUL SYLLABLE GGWAED
+AF6C;AF6C;1101 116B 11AF;AF6C;1101 116B 11AF; # (꽬; 꽬; á„ᅫᆯ; 꽬; á„ᅫᆯ; ) HANGUL SYLLABLE GGWAEL
+AF6D;AF6D;1101 116B 11B0;AF6D;1101 116B 11B0; # (ê½­; ê½­; á„ᅫᆰ; ê½­; á„ᅫᆰ; ) HANGUL SYLLABLE GGWAELG
+AF6E;AF6E;1101 116B 11B1;AF6E;1101 116B 11B1; # (ê½®; ê½®; á„ᅫᆱ; ê½®; á„ᅫᆱ; ) HANGUL SYLLABLE GGWAELM
+AF6F;AF6F;1101 116B 11B2;AF6F;1101 116B 11B2; # (꽯; 꽯; á„ᅫᆲ; 꽯; á„ᅫᆲ; ) HANGUL SYLLABLE GGWAELB
+AF70;AF70;1101 116B 11B3;AF70;1101 116B 11B3; # (ê½°; ê½°; á„ᅫᆳ; ê½°; á„ᅫᆳ; ) HANGUL SYLLABLE GGWAELS
+AF71;AF71;1101 116B 11B4;AF71;1101 116B 11B4; # (ê½±; ê½±; á„ᅫᆴ; ê½±; á„ᅫᆴ; ) HANGUL SYLLABLE GGWAELT
+AF72;AF72;1101 116B 11B5;AF72;1101 116B 11B5; # (ê½²; ê½²; á„ᅫᆵ; ê½²; á„ᅫᆵ; ) HANGUL SYLLABLE GGWAELP
+AF73;AF73;1101 116B 11B6;AF73;1101 116B 11B6; # (ê½³; ê½³; á„ᅫᆶ; ê½³; á„ᅫᆶ; ) HANGUL SYLLABLE GGWAELH
+AF74;AF74;1101 116B 11B7;AF74;1101 116B 11B7; # (ê½´; ê½´; á„ᅫᆷ; ê½´; á„ᅫᆷ; ) HANGUL SYLLABLE GGWAEM
+AF75;AF75;1101 116B 11B8;AF75;1101 116B 11B8; # (ê½µ; ê½µ; á„ᅫᆸ; ê½µ; á„ᅫᆸ; ) HANGUL SYLLABLE GGWAEB
+AF76;AF76;1101 116B 11B9;AF76;1101 116B 11B9; # (꽶; 꽶; á„ᅫᆹ; 꽶; á„ᅫᆹ; ) HANGUL SYLLABLE GGWAEBS
+AF77;AF77;1101 116B 11BA;AF77;1101 116B 11BA; # (ê½·; ê½·; á„ᅫᆺ; ê½·; á„ᅫᆺ; ) HANGUL SYLLABLE GGWAES
+AF78;AF78;1101 116B 11BB;AF78;1101 116B 11BB; # (꽸; 꽸; á„ᅫᆻ; 꽸; á„ᅫᆻ; ) HANGUL SYLLABLE GGWAESS
+AF79;AF79;1101 116B 11BC;AF79;1101 116B 11BC; # (ê½¹; ê½¹; á„ᅫᆼ; ê½¹; á„ᅫᆼ; ) HANGUL SYLLABLE GGWAENG
+AF7A;AF7A;1101 116B 11BD;AF7A;1101 116B 11BD; # (꽺; 꽺; á„ᅫᆽ; 꽺; á„ᅫᆽ; ) HANGUL SYLLABLE GGWAEJ
+AF7B;AF7B;1101 116B 11BE;AF7B;1101 116B 11BE; # (ê½»; ê½»; á„ᅫᆾ; ê½»; á„ᅫᆾ; ) HANGUL SYLLABLE GGWAEC
+AF7C;AF7C;1101 116B 11BF;AF7C;1101 116B 11BF; # (ê½¼; ê½¼; á„ᅫᆿ; ê½¼; á„ᅫᆿ; ) HANGUL SYLLABLE GGWAEK
+AF7D;AF7D;1101 116B 11C0;AF7D;1101 116B 11C0; # (ê½½; ê½½; á„ᅫᇀ; ê½½; á„ᅫᇀ; ) HANGUL SYLLABLE GGWAET
+AF7E;AF7E;1101 116B 11C1;AF7E;1101 116B 11C1; # (ê½¾; ê½¾; á„á…«á‡; ê½¾; á„á…«á‡; ) HANGUL SYLLABLE GGWAEP
+AF7F;AF7F;1101 116B 11C2;AF7F;1101 116B 11C2; # (꽿; 꽿; á„ᅫᇂ; 꽿; á„ᅫᇂ; ) HANGUL SYLLABLE GGWAEH
+AF80;AF80;1101 116C;AF80;1101 116C; # (ê¾€; ê¾€; á„á…¬; ê¾€; á„á…¬; ) HANGUL SYLLABLE GGOE
+AF81;AF81;1101 116C 11A8;AF81;1101 116C 11A8; # (ê¾; ê¾; á„ᅬᆨ; ê¾; á„ᅬᆨ; ) HANGUL SYLLABLE GGOEG
+AF82;AF82;1101 116C 11A9;AF82;1101 116C 11A9; # (꾂; 꾂; á„ᅬᆩ; 꾂; á„ᅬᆩ; ) HANGUL SYLLABLE GGOEGG
+AF83;AF83;1101 116C 11AA;AF83;1101 116C 11AA; # (꾃; 꾃; á„ᅬᆪ; 꾃; á„ᅬᆪ; ) HANGUL SYLLABLE GGOEGS
+AF84;AF84;1101 116C 11AB;AF84;1101 116C 11AB; # (꾄; 꾄; á„ᅬᆫ; 꾄; á„ᅬᆫ; ) HANGUL SYLLABLE GGOEN
+AF85;AF85;1101 116C 11AC;AF85;1101 116C 11AC; # (ê¾…; ê¾…; á„ᅬᆬ; ê¾…; á„ᅬᆬ; ) HANGUL SYLLABLE GGOENJ
+AF86;AF86;1101 116C 11AD;AF86;1101 116C 11AD; # (꾆; 꾆; á„ᅬᆭ; 꾆; á„ᅬᆭ; ) HANGUL SYLLABLE GGOENH
+AF87;AF87;1101 116C 11AE;AF87;1101 116C 11AE; # (꾇; 꾇; á„ᅬᆮ; 꾇; á„ᅬᆮ; ) HANGUL SYLLABLE GGOED
+AF88;AF88;1101 116C 11AF;AF88;1101 116C 11AF; # (꾈; 꾈; á„ᅬᆯ; 꾈; á„ᅬᆯ; ) HANGUL SYLLABLE GGOEL
+AF89;AF89;1101 116C 11B0;AF89;1101 116C 11B0; # (꾉; 꾉; á„ᅬᆰ; 꾉; á„ᅬᆰ; ) HANGUL SYLLABLE GGOELG
+AF8A;AF8A;1101 116C 11B1;AF8A;1101 116C 11B1; # (꾊; 꾊; á„ᅬᆱ; 꾊; á„ᅬᆱ; ) HANGUL SYLLABLE GGOELM
+AF8B;AF8B;1101 116C 11B2;AF8B;1101 116C 11B2; # (꾋; 꾋; á„ᅬᆲ; 꾋; á„ᅬᆲ; ) HANGUL SYLLABLE GGOELB
+AF8C;AF8C;1101 116C 11B3;AF8C;1101 116C 11B3; # (꾌; 꾌; á„ᅬᆳ; 꾌; á„ᅬᆳ; ) HANGUL SYLLABLE GGOELS
+AF8D;AF8D;1101 116C 11B4;AF8D;1101 116C 11B4; # (ê¾; ê¾; á„ᅬᆴ; ê¾; á„ᅬᆴ; ) HANGUL SYLLABLE GGOELT
+AF8E;AF8E;1101 116C 11B5;AF8E;1101 116C 11B5; # (꾎; 꾎; á„ᅬᆵ; 꾎; á„ᅬᆵ; ) HANGUL SYLLABLE GGOELP
+AF8F;AF8F;1101 116C 11B6;AF8F;1101 116C 11B6; # (ê¾; ê¾; á„ᅬᆶ; ê¾; á„ᅬᆶ; ) HANGUL SYLLABLE GGOELH
+AF90;AF90;1101 116C 11B7;AF90;1101 116C 11B7; # (ê¾; ê¾; á„ᅬᆷ; ê¾; á„ᅬᆷ; ) HANGUL SYLLABLE GGOEM
+AF91;AF91;1101 116C 11B8;AF91;1101 116C 11B8; # (꾑; 꾑; á„ᅬᆸ; 꾑; á„ᅬᆸ; ) HANGUL SYLLABLE GGOEB
+AF92;AF92;1101 116C 11B9;AF92;1101 116C 11B9; # (ê¾’; ê¾’; á„ᅬᆹ; ê¾’; á„ᅬᆹ; ) HANGUL SYLLABLE GGOEBS
+AF93;AF93;1101 116C 11BA;AF93;1101 116C 11BA; # (꾓; 꾓; á„ᅬᆺ; 꾓; á„ᅬᆺ; ) HANGUL SYLLABLE GGOES
+AF94;AF94;1101 116C 11BB;AF94;1101 116C 11BB; # (ê¾”; ê¾”; á„ᅬᆻ; ê¾”; á„ᅬᆻ; ) HANGUL SYLLABLE GGOESS
+AF95;AF95;1101 116C 11BC;AF95;1101 116C 11BC; # (꾕; 꾕; á„ᅬᆼ; 꾕; á„ᅬᆼ; ) HANGUL SYLLABLE GGOENG
+AF96;AF96;1101 116C 11BD;AF96;1101 116C 11BD; # (ê¾–; ê¾–; á„ᅬᆽ; ê¾–; á„ᅬᆽ; ) HANGUL SYLLABLE GGOEJ
+AF97;AF97;1101 116C 11BE;AF97;1101 116C 11BE; # (ê¾—; ê¾—; á„ᅬᆾ; ê¾—; á„ᅬᆾ; ) HANGUL SYLLABLE GGOEC
+AF98;AF98;1101 116C 11BF;AF98;1101 116C 11BF; # (꾘; 꾘; á„ᅬᆿ; 꾘; á„ᅬᆿ; ) HANGUL SYLLABLE GGOEK
+AF99;AF99;1101 116C 11C0;AF99;1101 116C 11C0; # (ê¾™; ê¾™; á„ᅬᇀ; ê¾™; á„ᅬᇀ; ) HANGUL SYLLABLE GGOET
+AF9A;AF9A;1101 116C 11C1;AF9A;1101 116C 11C1; # (꾚; 꾚; á„á…¬á‡; 꾚; á„á…¬á‡; ) HANGUL SYLLABLE GGOEP
+AF9B;AF9B;1101 116C 11C2;AF9B;1101 116C 11C2; # (ê¾›; ê¾›; á„ᅬᇂ; ê¾›; á„ᅬᇂ; ) HANGUL SYLLABLE GGOEH
+AF9C;AF9C;1101 116D;AF9C;1101 116D; # (꾜; 꾜; á„á…­; 꾜; á„á…­; ) HANGUL SYLLABLE GGYO
+AF9D;AF9D;1101 116D 11A8;AF9D;1101 116D 11A8; # (ê¾; ê¾; á„ᅭᆨ; ê¾; á„ᅭᆨ; ) HANGUL SYLLABLE GGYOG
+AF9E;AF9E;1101 116D 11A9;AF9E;1101 116D 11A9; # (꾞; 꾞; á„ᅭᆩ; 꾞; á„ᅭᆩ; ) HANGUL SYLLABLE GGYOGG
+AF9F;AF9F;1101 116D 11AA;AF9F;1101 116D 11AA; # (꾟; 꾟; á„ᅭᆪ; 꾟; á„ᅭᆪ; ) HANGUL SYLLABLE GGYOGS
+AFA0;AFA0;1101 116D 11AB;AFA0;1101 116D 11AB; # (ê¾ ; ê¾ ; á„ᅭᆫ; ê¾ ; á„ᅭᆫ; ) HANGUL SYLLABLE GGYON
+AFA1;AFA1;1101 116D 11AC;AFA1;1101 116D 11AC; # (꾡; 꾡; á„ᅭᆬ; 꾡; á„ᅭᆬ; ) HANGUL SYLLABLE GGYONJ
+AFA2;AFA2;1101 116D 11AD;AFA2;1101 116D 11AD; # (ê¾¢; ê¾¢; á„ᅭᆭ; ê¾¢; á„ᅭᆭ; ) HANGUL SYLLABLE GGYONH
+AFA3;AFA3;1101 116D 11AE;AFA3;1101 116D 11AE; # (ê¾£; ê¾£; á„ᅭᆮ; ê¾£; á„ᅭᆮ; ) HANGUL SYLLABLE GGYOD
+AFA4;AFA4;1101 116D 11AF;AFA4;1101 116D 11AF; # (꾤; 꾤; á„ᅭᆯ; 꾤; á„ᅭᆯ; ) HANGUL SYLLABLE GGYOL
+AFA5;AFA5;1101 116D 11B0;AFA5;1101 116D 11B0; # (ê¾¥; ê¾¥; á„ᅭᆰ; ê¾¥; á„ᅭᆰ; ) HANGUL SYLLABLE GGYOLG
+AFA6;AFA6;1101 116D 11B1;AFA6;1101 116D 11B1; # (꾦; 꾦; á„ᅭᆱ; 꾦; á„ᅭᆱ; ) HANGUL SYLLABLE GGYOLM
+AFA7;AFA7;1101 116D 11B2;AFA7;1101 116D 11B2; # (꾧; 꾧; á„ᅭᆲ; 꾧; á„ᅭᆲ; ) HANGUL SYLLABLE GGYOLB
+AFA8;AFA8;1101 116D 11B3;AFA8;1101 116D 11B3; # (꾨; 꾨; á„ᅭᆳ; 꾨; á„ᅭᆳ; ) HANGUL SYLLABLE GGYOLS
+AFA9;AFA9;1101 116D 11B4;AFA9;1101 116D 11B4; # (꾩; 꾩; á„ᅭᆴ; 꾩; á„ᅭᆴ; ) HANGUL SYLLABLE GGYOLT
+AFAA;AFAA;1101 116D 11B5;AFAA;1101 116D 11B5; # (꾪; 꾪; á„ᅭᆵ; 꾪; á„ᅭᆵ; ) HANGUL SYLLABLE GGYOLP
+AFAB;AFAB;1101 116D 11B6;AFAB;1101 116D 11B6; # (꾫; 꾫; á„ᅭᆶ; 꾫; á„ᅭᆶ; ) HANGUL SYLLABLE GGYOLH
+AFAC;AFAC;1101 116D 11B7;AFAC;1101 116D 11B7; # (꾬; 꾬; á„ᅭᆷ; 꾬; á„ᅭᆷ; ) HANGUL SYLLABLE GGYOM
+AFAD;AFAD;1101 116D 11B8;AFAD;1101 116D 11B8; # (ê¾­; ê¾­; á„ᅭᆸ; ê¾­; á„ᅭᆸ; ) HANGUL SYLLABLE GGYOB
+AFAE;AFAE;1101 116D 11B9;AFAE;1101 116D 11B9; # (ê¾®; ê¾®; á„ᅭᆹ; ê¾®; á„ᅭᆹ; ) HANGUL SYLLABLE GGYOBS
+AFAF;AFAF;1101 116D 11BA;AFAF;1101 116D 11BA; # (꾯; 꾯; á„ᅭᆺ; 꾯; á„ᅭᆺ; ) HANGUL SYLLABLE GGYOS
+AFB0;AFB0;1101 116D 11BB;AFB0;1101 116D 11BB; # (ê¾°; ê¾°; á„ᅭᆻ; ê¾°; á„ᅭᆻ; ) HANGUL SYLLABLE GGYOSS
+AFB1;AFB1;1101 116D 11BC;AFB1;1101 116D 11BC; # (ê¾±; ê¾±; á„ᅭᆼ; ê¾±; á„ᅭᆼ; ) HANGUL SYLLABLE GGYONG
+AFB2;AFB2;1101 116D 11BD;AFB2;1101 116D 11BD; # (ê¾²; ê¾²; á„ᅭᆽ; ê¾²; á„ᅭᆽ; ) HANGUL SYLLABLE GGYOJ
+AFB3;AFB3;1101 116D 11BE;AFB3;1101 116D 11BE; # (ê¾³; ê¾³; á„ᅭᆾ; ê¾³; á„ᅭᆾ; ) HANGUL SYLLABLE GGYOC
+AFB4;AFB4;1101 116D 11BF;AFB4;1101 116D 11BF; # (ê¾´; ê¾´; á„ᅭᆿ; ê¾´; á„ᅭᆿ; ) HANGUL SYLLABLE GGYOK
+AFB5;AFB5;1101 116D 11C0;AFB5;1101 116D 11C0; # (ê¾µ; ê¾µ; á„ᅭᇀ; ê¾µ; á„ᅭᇀ; ) HANGUL SYLLABLE GGYOT
+AFB6;AFB6;1101 116D 11C1;AFB6;1101 116D 11C1; # (꾶; 꾶; á„á…­á‡; 꾶; á„á…­á‡; ) HANGUL SYLLABLE GGYOP
+AFB7;AFB7;1101 116D 11C2;AFB7;1101 116D 11C2; # (ê¾·; ê¾·; á„ᅭᇂ; ê¾·; á„ᅭᇂ; ) HANGUL SYLLABLE GGYOH
+AFB8;AFB8;1101 116E;AFB8;1101 116E; # (꾸; 꾸; á„á…®; 꾸; á„á…®; ) HANGUL SYLLABLE GGU
+AFB9;AFB9;1101 116E 11A8;AFB9;1101 116E 11A8; # (ê¾¹; ê¾¹; á„ᅮᆨ; ê¾¹; á„ᅮᆨ; ) HANGUL SYLLABLE GGUG
+AFBA;AFBA;1101 116E 11A9;AFBA;1101 116E 11A9; # (꾺; 꾺; á„ᅮᆩ; 꾺; á„ᅮᆩ; ) HANGUL SYLLABLE GGUGG
+AFBB;AFBB;1101 116E 11AA;AFBB;1101 116E 11AA; # (ê¾»; ê¾»; á„ᅮᆪ; ê¾»; á„ᅮᆪ; ) HANGUL SYLLABLE GGUGS
+AFBC;AFBC;1101 116E 11AB;AFBC;1101 116E 11AB; # (ê¾¼; ê¾¼; á„ᅮᆫ; ê¾¼; á„ᅮᆫ; ) HANGUL SYLLABLE GGUN
+AFBD;AFBD;1101 116E 11AC;AFBD;1101 116E 11AC; # (ê¾½; ê¾½; á„ᅮᆬ; ê¾½; á„ᅮᆬ; ) HANGUL SYLLABLE GGUNJ
+AFBE;AFBE;1101 116E 11AD;AFBE;1101 116E 11AD; # (ê¾¾; ê¾¾; á„ᅮᆭ; ê¾¾; á„ᅮᆭ; ) HANGUL SYLLABLE GGUNH
+AFBF;AFBF;1101 116E 11AE;AFBF;1101 116E 11AE; # (꾿; 꾿; á„ᅮᆮ; 꾿; á„ᅮᆮ; ) HANGUL SYLLABLE GGUD
+AFC0;AFC0;1101 116E 11AF;AFC0;1101 116E 11AF; # (ê¿€; ê¿€; á„ᅮᆯ; ê¿€; á„ᅮᆯ; ) HANGUL SYLLABLE GGUL
+AFC1;AFC1;1101 116E 11B0;AFC1;1101 116E 11B0; # (ê¿; ê¿; á„ᅮᆰ; ê¿; á„ᅮᆰ; ) HANGUL SYLLABLE GGULG
+AFC2;AFC2;1101 116E 11B1;AFC2;1101 116E 11B1; # (ê¿‚; ê¿‚; á„ᅮᆱ; ê¿‚; á„ᅮᆱ; ) HANGUL SYLLABLE GGULM
+AFC3;AFC3;1101 116E 11B2;AFC3;1101 116E 11B2; # (꿃; 꿃; á„ᅮᆲ; 꿃; á„ᅮᆲ; ) HANGUL SYLLABLE GGULB
+AFC4;AFC4;1101 116E 11B3;AFC4;1101 116E 11B3; # (ê¿„; ê¿„; á„ᅮᆳ; ê¿„; á„ᅮᆳ; ) HANGUL SYLLABLE GGULS
+AFC5;AFC5;1101 116E 11B4;AFC5;1101 116E 11B4; # (ê¿…; ê¿…; á„ᅮᆴ; ê¿…; á„ᅮᆴ; ) HANGUL SYLLABLE GGULT
+AFC6;AFC6;1101 116E 11B5;AFC6;1101 116E 11B5; # (꿆; 꿆; á„ᅮᆵ; 꿆; á„ᅮᆵ; ) HANGUL SYLLABLE GGULP
+AFC7;AFC7;1101 116E 11B6;AFC7;1101 116E 11B6; # (꿇; 꿇; á„ᅮᆶ; 꿇; á„ᅮᆶ; ) HANGUL SYLLABLE GGULH
+AFC8;AFC8;1101 116E 11B7;AFC8;1101 116E 11B7; # (꿈; 꿈; á„ᅮᆷ; 꿈; á„ᅮᆷ; ) HANGUL SYLLABLE GGUM
+AFC9;AFC9;1101 116E 11B8;AFC9;1101 116E 11B8; # (꿉; 꿉; á„ᅮᆸ; 꿉; á„ᅮᆸ; ) HANGUL SYLLABLE GGUB
+AFCA;AFCA;1101 116E 11B9;AFCA;1101 116E 11B9; # (ê¿Š; ê¿Š; á„ᅮᆹ; ê¿Š; á„ᅮᆹ; ) HANGUL SYLLABLE GGUBS
+AFCB;AFCB;1101 116E 11BA;AFCB;1101 116E 11BA; # (ê¿‹; ê¿‹; á„ᅮᆺ; ê¿‹; á„ᅮᆺ; ) HANGUL SYLLABLE GGUS
+AFCC;AFCC;1101 116E 11BB;AFCC;1101 116E 11BB; # (ê¿Œ; ê¿Œ; á„ᅮᆻ; ê¿Œ; á„ᅮᆻ; ) HANGUL SYLLABLE GGUSS
+AFCD;AFCD;1101 116E 11BC;AFCD;1101 116E 11BC; # (ê¿; ê¿; á„ᅮᆼ; ê¿; á„ᅮᆼ; ) HANGUL SYLLABLE GGUNG
+AFCE;AFCE;1101 116E 11BD;AFCE;1101 116E 11BD; # (ê¿Ž; ê¿Ž; á„ᅮᆽ; ê¿Ž; á„ᅮᆽ; ) HANGUL SYLLABLE GGUJ
+AFCF;AFCF;1101 116E 11BE;AFCF;1101 116E 11BE; # (ê¿; ê¿; á„ᅮᆾ; ê¿; á„ᅮᆾ; ) HANGUL SYLLABLE GGUC
+AFD0;AFD0;1101 116E 11BF;AFD0;1101 116E 11BF; # (ê¿; ê¿; á„ᅮᆿ; ê¿; á„ᅮᆿ; ) HANGUL SYLLABLE GGUK
+AFD1;AFD1;1101 116E 11C0;AFD1;1101 116E 11C0; # (ê¿‘; ê¿‘; á„ᅮᇀ; ê¿‘; á„ᅮᇀ; ) HANGUL SYLLABLE GGUT
+AFD2;AFD2;1101 116E 11C1;AFD2;1101 116E 11C1; # (ê¿’; ê¿’; á„á…®á‡; ê¿’; á„á…®á‡; ) HANGUL SYLLABLE GGUP
+AFD3;AFD3;1101 116E 11C2;AFD3;1101 116E 11C2; # (ê¿“; ê¿“; á„ᅮᇂ; ê¿“; á„ᅮᇂ; ) HANGUL SYLLABLE GGUH
+AFD4;AFD4;1101 116F;AFD4;1101 116F; # (ê¿”; ê¿”; á„á…¯; ê¿”; á„á…¯; ) HANGUL SYLLABLE GGWEO
+AFD5;AFD5;1101 116F 11A8;AFD5;1101 116F 11A8; # (ê¿•; ê¿•; á„ᅯᆨ; ê¿•; á„ᅯᆨ; ) HANGUL SYLLABLE GGWEOG
+AFD6;AFD6;1101 116F 11A9;AFD6;1101 116F 11A9; # (ê¿–; ê¿–; á„ᅯᆩ; ê¿–; á„ᅯᆩ; ) HANGUL SYLLABLE GGWEOGG
+AFD7;AFD7;1101 116F 11AA;AFD7;1101 116F 11AA; # (ê¿—; ê¿—; á„ᅯᆪ; ê¿—; á„ᅯᆪ; ) HANGUL SYLLABLE GGWEOGS
+AFD8;AFD8;1101 116F 11AB;AFD8;1101 116F 11AB; # (꿘; 꿘; á„ᅯᆫ; 꿘; á„ᅯᆫ; ) HANGUL SYLLABLE GGWEON
+AFD9;AFD9;1101 116F 11AC;AFD9;1101 116F 11AC; # (ê¿™; ê¿™; á„ᅯᆬ; ê¿™; á„ᅯᆬ; ) HANGUL SYLLABLE GGWEONJ
+AFDA;AFDA;1101 116F 11AD;AFDA;1101 116F 11AD; # (ê¿š; ê¿š; á„ᅯᆭ; ê¿š; á„ᅯᆭ; ) HANGUL SYLLABLE GGWEONH
+AFDB;AFDB;1101 116F 11AE;AFDB;1101 116F 11AE; # (ê¿›; ê¿›; á„ᅯᆮ; ê¿›; á„ᅯᆮ; ) HANGUL SYLLABLE GGWEOD
+AFDC;AFDC;1101 116F 11AF;AFDC;1101 116F 11AF; # (ê¿œ; ê¿œ; á„ᅯᆯ; ê¿œ; á„ᅯᆯ; ) HANGUL SYLLABLE GGWEOL
+AFDD;AFDD;1101 116F 11B0;AFDD;1101 116F 11B0; # (ê¿; ê¿; á„ᅯᆰ; ê¿; á„ᅯᆰ; ) HANGUL SYLLABLE GGWEOLG
+AFDE;AFDE;1101 116F 11B1;AFDE;1101 116F 11B1; # (ê¿ž; ê¿ž; á„ᅯᆱ; ê¿ž; á„ᅯᆱ; ) HANGUL SYLLABLE GGWEOLM
+AFDF;AFDF;1101 116F 11B2;AFDF;1101 116F 11B2; # (ê¿Ÿ; ê¿Ÿ; á„ᅯᆲ; ê¿Ÿ; á„ᅯᆲ; ) HANGUL SYLLABLE GGWEOLB
+AFE0;AFE0;1101 116F 11B3;AFE0;1101 116F 11B3; # (ê¿ ; ê¿ ; á„ᅯᆳ; ê¿ ; á„ᅯᆳ; ) HANGUL SYLLABLE GGWEOLS
+AFE1;AFE1;1101 116F 11B4;AFE1;1101 116F 11B4; # (ê¿¡; ê¿¡; á„ᅯᆴ; ê¿¡; á„ᅯᆴ; ) HANGUL SYLLABLE GGWEOLT
+AFE2;AFE2;1101 116F 11B5;AFE2;1101 116F 11B5; # (ê¿¢; ê¿¢; á„ᅯᆵ; ê¿¢; á„ᅯᆵ; ) HANGUL SYLLABLE GGWEOLP
+AFE3;AFE3;1101 116F 11B6;AFE3;1101 116F 11B6; # (ê¿£; ê¿£; á„ᅯᆶ; ê¿£; á„ᅯᆶ; ) HANGUL SYLLABLE GGWEOLH
+AFE4;AFE4;1101 116F 11B7;AFE4;1101 116F 11B7; # (꿤; 꿤; á„ᅯᆷ; 꿤; á„ᅯᆷ; ) HANGUL SYLLABLE GGWEOM
+AFE5;AFE5;1101 116F 11B8;AFE5;1101 116F 11B8; # (ê¿¥; ê¿¥; á„ᅯᆸ; ê¿¥; á„ᅯᆸ; ) HANGUL SYLLABLE GGWEOB
+AFE6;AFE6;1101 116F 11B9;AFE6;1101 116F 11B9; # (꿦; 꿦; á„ᅯᆹ; 꿦; á„ᅯᆹ; ) HANGUL SYLLABLE GGWEOBS
+AFE7;AFE7;1101 116F 11BA;AFE7;1101 116F 11BA; # (꿧; 꿧; á„ᅯᆺ; 꿧; á„ᅯᆺ; ) HANGUL SYLLABLE GGWEOS
+AFE8;AFE8;1101 116F 11BB;AFE8;1101 116F 11BB; # (꿨; 꿨; á„ᅯᆻ; 꿨; á„ᅯᆻ; ) HANGUL SYLLABLE GGWEOSS
+AFE9;AFE9;1101 116F 11BC;AFE9;1101 116F 11BC; # (ê¿©; ê¿©; á„ᅯᆼ; ê¿©; á„ᅯᆼ; ) HANGUL SYLLABLE GGWEONG
+AFEA;AFEA;1101 116F 11BD;AFEA;1101 116F 11BD; # (꿪; 꿪; á„ᅯᆽ; 꿪; á„ᅯᆽ; ) HANGUL SYLLABLE GGWEOJ
+AFEB;AFEB;1101 116F 11BE;AFEB;1101 116F 11BE; # (ê¿«; ê¿«; á„ᅯᆾ; ê¿«; á„ᅯᆾ; ) HANGUL SYLLABLE GGWEOC
+AFEC;AFEC;1101 116F 11BF;AFEC;1101 116F 11BF; # (꿬; 꿬; á„ᅯᆿ; 꿬; á„ᅯᆿ; ) HANGUL SYLLABLE GGWEOK
+AFED;AFED;1101 116F 11C0;AFED;1101 116F 11C0; # (ê¿­; ê¿­; á„ᅯᇀ; ê¿­; á„ᅯᇀ; ) HANGUL SYLLABLE GGWEOT
+AFEE;AFEE;1101 116F 11C1;AFEE;1101 116F 11C1; # (ê¿®; ê¿®; á„á…¯á‡; ê¿®; á„á…¯á‡; ) HANGUL SYLLABLE GGWEOP
+AFEF;AFEF;1101 116F 11C2;AFEF;1101 116F 11C2; # (꿯; 꿯; á„ᅯᇂ; 꿯; á„ᅯᇂ; ) HANGUL SYLLABLE GGWEOH
+AFF0;AFF0;1101 1170;AFF0;1101 1170; # (ê¿°; ê¿°; á„á…°; ê¿°; á„á…°; ) HANGUL SYLLABLE GGWE
+AFF1;AFF1;1101 1170 11A8;AFF1;1101 1170 11A8; # (꿱; 꿱; á„ᅰᆨ; 꿱; á„ᅰᆨ; ) HANGUL SYLLABLE GGWEG
+AFF2;AFF2;1101 1170 11A9;AFF2;1101 1170 11A9; # (꿲; 꿲; á„ᅰᆩ; 꿲; á„ᅰᆩ; ) HANGUL SYLLABLE GGWEGG
+AFF3;AFF3;1101 1170 11AA;AFF3;1101 1170 11AA; # (꿳; 꿳; á„ᅰᆪ; 꿳; á„ᅰᆪ; ) HANGUL SYLLABLE GGWEGS
+AFF4;AFF4;1101 1170 11AB;AFF4;1101 1170 11AB; # (ê¿´; ê¿´; á„ᅰᆫ; ê¿´; á„ᅰᆫ; ) HANGUL SYLLABLE GGWEN
+AFF5;AFF5;1101 1170 11AC;AFF5;1101 1170 11AC; # (꿵; 꿵; á„ᅰᆬ; 꿵; á„ᅰᆬ; ) HANGUL SYLLABLE GGWENJ
+AFF6;AFF6;1101 1170 11AD;AFF6;1101 1170 11AD; # (꿶; 꿶; á„ᅰᆭ; 꿶; á„ᅰᆭ; ) HANGUL SYLLABLE GGWENH
+AFF7;AFF7;1101 1170 11AE;AFF7;1101 1170 11AE; # (ê¿·; ê¿·; á„ᅰᆮ; ê¿·; á„ᅰᆮ; ) HANGUL SYLLABLE GGWED
+AFF8;AFF8;1101 1170 11AF;AFF8;1101 1170 11AF; # (꿸; 꿸; á„ᅰᆯ; 꿸; á„ᅰᆯ; ) HANGUL SYLLABLE GGWEL
+AFF9;AFF9;1101 1170 11B0;AFF9;1101 1170 11B0; # (꿹; 꿹; á„ᅰᆰ; 꿹; á„ᅰᆰ; ) HANGUL SYLLABLE GGWELG
+AFFA;AFFA;1101 1170 11B1;AFFA;1101 1170 11B1; # (꿺; 꿺; á„ᅰᆱ; 꿺; á„ᅰᆱ; ) HANGUL SYLLABLE GGWELM
+AFFB;AFFB;1101 1170 11B2;AFFB;1101 1170 11B2; # (ê¿»; ê¿»; á„ᅰᆲ; ê¿»; á„ᅰᆲ; ) HANGUL SYLLABLE GGWELB
+AFFC;AFFC;1101 1170 11B3;AFFC;1101 1170 11B3; # (꿼; 꿼; á„ᅰᆳ; 꿼; á„ᅰᆳ; ) HANGUL SYLLABLE GGWELS
+AFFD;AFFD;1101 1170 11B4;AFFD;1101 1170 11B4; # (꿽; 꿽; á„ᅰᆴ; 꿽; á„ᅰᆴ; ) HANGUL SYLLABLE GGWELT
+AFFE;AFFE;1101 1170 11B5;AFFE;1101 1170 11B5; # (꿾; 꿾; á„ᅰᆵ; 꿾; á„ᅰᆵ; ) HANGUL SYLLABLE GGWELP
+AFFF;AFFF;1101 1170 11B6;AFFF;1101 1170 11B6; # (ê¿¿; ê¿¿; á„ᅰᆶ; ê¿¿; á„ᅰᆶ; ) HANGUL SYLLABLE GGWELH
+B000;B000;1101 1170 11B7;B000;1101 1170 11B7; # (뀀; 뀀; á„ᅰᆷ; 뀀; á„ᅰᆷ; ) HANGUL SYLLABLE GGWEM
+B001;B001;1101 1170 11B8;B001;1101 1170 11B8; # (ë€; ë€; á„ᅰᆸ; ë€; á„ᅰᆸ; ) HANGUL SYLLABLE GGWEB
+B002;B002;1101 1170 11B9;B002;1101 1170 11B9; # (뀂; 뀂; á„ᅰᆹ; 뀂; á„ᅰᆹ; ) HANGUL SYLLABLE GGWEBS
+B003;B003;1101 1170 11BA;B003;1101 1170 11BA; # (뀃; 뀃; á„ᅰᆺ; 뀃; á„ᅰᆺ; ) HANGUL SYLLABLE GGWES
+B004;B004;1101 1170 11BB;B004;1101 1170 11BB; # (뀄; 뀄; á„ᅰᆻ; 뀄; á„ᅰᆻ; ) HANGUL SYLLABLE GGWESS
+B005;B005;1101 1170 11BC;B005;1101 1170 11BC; # (뀅; 뀅; á„ᅰᆼ; 뀅; á„ᅰᆼ; ) HANGUL SYLLABLE GGWENG
+B006;B006;1101 1170 11BD;B006;1101 1170 11BD; # (뀆; 뀆; á„ᅰᆽ; 뀆; á„ᅰᆽ; ) HANGUL SYLLABLE GGWEJ
+B007;B007;1101 1170 11BE;B007;1101 1170 11BE; # (뀇; 뀇; á„ᅰᆾ; 뀇; á„ᅰᆾ; ) HANGUL SYLLABLE GGWEC
+B008;B008;1101 1170 11BF;B008;1101 1170 11BF; # (뀈; 뀈; á„ᅰᆿ; 뀈; á„ᅰᆿ; ) HANGUL SYLLABLE GGWEK
+B009;B009;1101 1170 11C0;B009;1101 1170 11C0; # (뀉; 뀉; á„ᅰᇀ; 뀉; á„ᅰᇀ; ) HANGUL SYLLABLE GGWET
+B00A;B00A;1101 1170 11C1;B00A;1101 1170 11C1; # (뀊; 뀊; á„á…°á‡; 뀊; á„á…°á‡; ) HANGUL SYLLABLE GGWEP
+B00B;B00B;1101 1170 11C2;B00B;1101 1170 11C2; # (뀋; 뀋; á„ᅰᇂ; 뀋; á„ᅰᇂ; ) HANGUL SYLLABLE GGWEH
+B00C;B00C;1101 1171;B00C;1101 1171; # (뀌; 뀌; á„á…±; 뀌; á„á…±; ) HANGUL SYLLABLE GGWI
+B00D;B00D;1101 1171 11A8;B00D;1101 1171 11A8; # (ë€; ë€; á„ᅱᆨ; ë€; á„ᅱᆨ; ) HANGUL SYLLABLE GGWIG
+B00E;B00E;1101 1171 11A9;B00E;1101 1171 11A9; # (뀎; 뀎; á„ᅱᆩ; 뀎; á„ᅱᆩ; ) HANGUL SYLLABLE GGWIGG
+B00F;B00F;1101 1171 11AA;B00F;1101 1171 11AA; # (ë€; ë€; á„ᅱᆪ; ë€; á„ᅱᆪ; ) HANGUL SYLLABLE GGWIGS
+B010;B010;1101 1171 11AB;B010;1101 1171 11AB; # (ë€; ë€; á„ᅱᆫ; ë€; á„ᅱᆫ; ) HANGUL SYLLABLE GGWIN
+B011;B011;1101 1171 11AC;B011;1101 1171 11AC; # (뀑; 뀑; á„ᅱᆬ; 뀑; á„ᅱᆬ; ) HANGUL SYLLABLE GGWINJ
+B012;B012;1101 1171 11AD;B012;1101 1171 11AD; # (뀒; 뀒; á„ᅱᆭ; 뀒; á„ᅱᆭ; ) HANGUL SYLLABLE GGWINH
+B013;B013;1101 1171 11AE;B013;1101 1171 11AE; # (뀓; 뀓; á„ᅱᆮ; 뀓; á„ᅱᆮ; ) HANGUL SYLLABLE GGWID
+B014;B014;1101 1171 11AF;B014;1101 1171 11AF; # (뀔; 뀔; á„ᅱᆯ; 뀔; á„ᅱᆯ; ) HANGUL SYLLABLE GGWIL
+B015;B015;1101 1171 11B0;B015;1101 1171 11B0; # (뀕; 뀕; á„ᅱᆰ; 뀕; á„ᅱᆰ; ) HANGUL SYLLABLE GGWILG
+B016;B016;1101 1171 11B1;B016;1101 1171 11B1; # (뀖; 뀖; á„ᅱᆱ; 뀖; á„ᅱᆱ; ) HANGUL SYLLABLE GGWILM
+B017;B017;1101 1171 11B2;B017;1101 1171 11B2; # (뀗; 뀗; á„ᅱᆲ; 뀗; á„ᅱᆲ; ) HANGUL SYLLABLE GGWILB
+B018;B018;1101 1171 11B3;B018;1101 1171 11B3; # (뀘; 뀘; á„ᅱᆳ; 뀘; á„ᅱᆳ; ) HANGUL SYLLABLE GGWILS
+B019;B019;1101 1171 11B4;B019;1101 1171 11B4; # (뀙; 뀙; á„ᅱᆴ; 뀙; á„ᅱᆴ; ) HANGUL SYLLABLE GGWILT
+B01A;B01A;1101 1171 11B5;B01A;1101 1171 11B5; # (뀚; 뀚; á„ᅱᆵ; 뀚; á„ᅱᆵ; ) HANGUL SYLLABLE GGWILP
+B01B;B01B;1101 1171 11B6;B01B;1101 1171 11B6; # (뀛; 뀛; á„ᅱᆶ; 뀛; á„ᅱᆶ; ) HANGUL SYLLABLE GGWILH
+B01C;B01C;1101 1171 11B7;B01C;1101 1171 11B7; # (뀜; 뀜; á„ᅱᆷ; 뀜; á„ᅱᆷ; ) HANGUL SYLLABLE GGWIM
+B01D;B01D;1101 1171 11B8;B01D;1101 1171 11B8; # (ë€; ë€; á„ᅱᆸ; ë€; á„ᅱᆸ; ) HANGUL SYLLABLE GGWIB
+B01E;B01E;1101 1171 11B9;B01E;1101 1171 11B9; # (뀞; 뀞; á„ᅱᆹ; 뀞; á„ᅱᆹ; ) HANGUL SYLLABLE GGWIBS
+B01F;B01F;1101 1171 11BA;B01F;1101 1171 11BA; # (뀟; 뀟; á„ᅱᆺ; 뀟; á„ᅱᆺ; ) HANGUL SYLLABLE GGWIS
+B020;B020;1101 1171 11BB;B020;1101 1171 11BB; # (뀠; 뀠; á„ᅱᆻ; 뀠; á„ᅱᆻ; ) HANGUL SYLLABLE GGWISS
+B021;B021;1101 1171 11BC;B021;1101 1171 11BC; # (뀡; 뀡; á„ᅱᆼ; 뀡; á„ᅱᆼ; ) HANGUL SYLLABLE GGWING
+B022;B022;1101 1171 11BD;B022;1101 1171 11BD; # (뀢; 뀢; á„ᅱᆽ; 뀢; á„ᅱᆽ; ) HANGUL SYLLABLE GGWIJ
+B023;B023;1101 1171 11BE;B023;1101 1171 11BE; # (뀣; 뀣; á„ᅱᆾ; 뀣; á„ᅱᆾ; ) HANGUL SYLLABLE GGWIC
+B024;B024;1101 1171 11BF;B024;1101 1171 11BF; # (뀤; 뀤; á„ᅱᆿ; 뀤; á„ᅱᆿ; ) HANGUL SYLLABLE GGWIK
+B025;B025;1101 1171 11C0;B025;1101 1171 11C0; # (뀥; 뀥; á„ᅱᇀ; 뀥; á„ᅱᇀ; ) HANGUL SYLLABLE GGWIT
+B026;B026;1101 1171 11C1;B026;1101 1171 11C1; # (뀦; 뀦; á„á…±á‡; 뀦; á„á…±á‡; ) HANGUL SYLLABLE GGWIP
+B027;B027;1101 1171 11C2;B027;1101 1171 11C2; # (뀧; 뀧; á„ᅱᇂ; 뀧; á„ᅱᇂ; ) HANGUL SYLLABLE GGWIH
+B028;B028;1101 1172;B028;1101 1172; # (뀨; 뀨; á„á…²; 뀨; á„á…²; ) HANGUL SYLLABLE GGYU
+B029;B029;1101 1172 11A8;B029;1101 1172 11A8; # (뀩; 뀩; á„ᅲᆨ; 뀩; á„ᅲᆨ; ) HANGUL SYLLABLE GGYUG
+B02A;B02A;1101 1172 11A9;B02A;1101 1172 11A9; # (뀪; 뀪; á„ᅲᆩ; 뀪; á„ᅲᆩ; ) HANGUL SYLLABLE GGYUGG
+B02B;B02B;1101 1172 11AA;B02B;1101 1172 11AA; # (뀫; 뀫; á„ᅲᆪ; 뀫; á„ᅲᆪ; ) HANGUL SYLLABLE GGYUGS
+B02C;B02C;1101 1172 11AB;B02C;1101 1172 11AB; # (뀬; 뀬; á„ᅲᆫ; 뀬; á„ᅲᆫ; ) HANGUL SYLLABLE GGYUN
+B02D;B02D;1101 1172 11AC;B02D;1101 1172 11AC; # (뀭; 뀭; á„ᅲᆬ; 뀭; á„ᅲᆬ; ) HANGUL SYLLABLE GGYUNJ
+B02E;B02E;1101 1172 11AD;B02E;1101 1172 11AD; # (뀮; 뀮; á„ᅲᆭ; 뀮; á„ᅲᆭ; ) HANGUL SYLLABLE GGYUNH
+B02F;B02F;1101 1172 11AE;B02F;1101 1172 11AE; # (뀯; 뀯; á„ᅲᆮ; 뀯; á„ᅲᆮ; ) HANGUL SYLLABLE GGYUD
+B030;B030;1101 1172 11AF;B030;1101 1172 11AF; # (뀰; 뀰; á„ᅲᆯ; 뀰; á„ᅲᆯ; ) HANGUL SYLLABLE GGYUL
+B031;B031;1101 1172 11B0;B031;1101 1172 11B0; # (뀱; 뀱; á„ᅲᆰ; 뀱; á„ᅲᆰ; ) HANGUL SYLLABLE GGYULG
+B032;B032;1101 1172 11B1;B032;1101 1172 11B1; # (뀲; 뀲; á„ᅲᆱ; 뀲; á„ᅲᆱ; ) HANGUL SYLLABLE GGYULM
+B033;B033;1101 1172 11B2;B033;1101 1172 11B2; # (뀳; 뀳; á„ᅲᆲ; 뀳; á„ᅲᆲ; ) HANGUL SYLLABLE GGYULB
+B034;B034;1101 1172 11B3;B034;1101 1172 11B3; # (뀴; 뀴; á„ᅲᆳ; 뀴; á„ᅲᆳ; ) HANGUL SYLLABLE GGYULS
+B035;B035;1101 1172 11B4;B035;1101 1172 11B4; # (뀵; 뀵; á„ᅲᆴ; 뀵; á„ᅲᆴ; ) HANGUL SYLLABLE GGYULT
+B036;B036;1101 1172 11B5;B036;1101 1172 11B5; # (뀶; 뀶; á„ᅲᆵ; 뀶; á„ᅲᆵ; ) HANGUL SYLLABLE GGYULP
+B037;B037;1101 1172 11B6;B037;1101 1172 11B6; # (뀷; 뀷; á„ᅲᆶ; 뀷; á„ᅲᆶ; ) HANGUL SYLLABLE GGYULH
+B038;B038;1101 1172 11B7;B038;1101 1172 11B7; # (뀸; 뀸; á„ᅲᆷ; 뀸; á„ᅲᆷ; ) HANGUL SYLLABLE GGYUM
+B039;B039;1101 1172 11B8;B039;1101 1172 11B8; # (뀹; 뀹; á„ᅲᆸ; 뀹; á„ᅲᆸ; ) HANGUL SYLLABLE GGYUB
+B03A;B03A;1101 1172 11B9;B03A;1101 1172 11B9; # (뀺; 뀺; á„ᅲᆹ; 뀺; á„ᅲᆹ; ) HANGUL SYLLABLE GGYUBS
+B03B;B03B;1101 1172 11BA;B03B;1101 1172 11BA; # (뀻; 뀻; á„ᅲᆺ; 뀻; á„ᅲᆺ; ) HANGUL SYLLABLE GGYUS
+B03C;B03C;1101 1172 11BB;B03C;1101 1172 11BB; # (뀼; 뀼; á„ᅲᆻ; 뀼; á„ᅲᆻ; ) HANGUL SYLLABLE GGYUSS
+B03D;B03D;1101 1172 11BC;B03D;1101 1172 11BC; # (뀽; 뀽; á„ᅲᆼ; 뀽; á„ᅲᆼ; ) HANGUL SYLLABLE GGYUNG
+B03E;B03E;1101 1172 11BD;B03E;1101 1172 11BD; # (뀾; 뀾; á„ᅲᆽ; 뀾; á„ᅲᆽ; ) HANGUL SYLLABLE GGYUJ
+B03F;B03F;1101 1172 11BE;B03F;1101 1172 11BE; # (뀿; 뀿; á„ᅲᆾ; 뀿; á„ᅲᆾ; ) HANGUL SYLLABLE GGYUC
+B040;B040;1101 1172 11BF;B040;1101 1172 11BF; # (ë€; ë€; á„ᅲᆿ; ë€; á„ᅲᆿ; ) HANGUL SYLLABLE GGYUK
+B041;B041;1101 1172 11C0;B041;1101 1172 11C0; # (ë; ë; á„ᅲᇀ; ë; á„ᅲᇀ; ) HANGUL SYLLABLE GGYUT
+B042;B042;1101 1172 11C1;B042;1101 1172 11C1; # (ë‚; ë‚; á„á…²á‡; ë‚; á„á…²á‡; ) HANGUL SYLLABLE GGYUP
+B043;B043;1101 1172 11C2;B043;1101 1172 11C2; # (ëƒ; ëƒ; á„ᅲᇂ; ëƒ; á„ᅲᇂ; ) HANGUL SYLLABLE GGYUH
+B044;B044;1101 1173;B044;1101 1173; # (ë„; ë„; á„á…³; ë„; á„á…³; ) HANGUL SYLLABLE GGEU
+B045;B045;1101 1173 11A8;B045;1101 1173 11A8; # (ë…; ë…; á„ᅳᆨ; ë…; á„ᅳᆨ; ) HANGUL SYLLABLE GGEUG
+B046;B046;1101 1173 11A9;B046;1101 1173 11A9; # (ë†; ë†; á„ᅳᆩ; ë†; á„ᅳᆩ; ) HANGUL SYLLABLE GGEUGG
+B047;B047;1101 1173 11AA;B047;1101 1173 11AA; # (ë‡; ë‡; á„ᅳᆪ; ë‡; á„ᅳᆪ; ) HANGUL SYLLABLE GGEUGS
+B048;B048;1101 1173 11AB;B048;1101 1173 11AB; # (ëˆ; ëˆ; á„ᅳᆫ; ëˆ; á„ᅳᆫ; ) HANGUL SYLLABLE GGEUN
+B049;B049;1101 1173 11AC;B049;1101 1173 11AC; # (ë‰; ë‰; á„ᅳᆬ; ë‰; á„ᅳᆬ; ) HANGUL SYLLABLE GGEUNJ
+B04A;B04A;1101 1173 11AD;B04A;1101 1173 11AD; # (ëŠ; ëŠ; á„ᅳᆭ; ëŠ; á„ᅳᆭ; ) HANGUL SYLLABLE GGEUNH
+B04B;B04B;1101 1173 11AE;B04B;1101 1173 11AE; # (ë‹; ë‹; á„ᅳᆮ; ë‹; á„ᅳᆮ; ) HANGUL SYLLABLE GGEUD
+B04C;B04C;1101 1173 11AF;B04C;1101 1173 11AF; # (ëŒ; ëŒ; á„ᅳᆯ; ëŒ; á„ᅳᆯ; ) HANGUL SYLLABLE GGEUL
+B04D;B04D;1101 1173 11B0;B04D;1101 1173 11B0; # (ë; ë; á„ᅳᆰ; ë; á„ᅳᆰ; ) HANGUL SYLLABLE GGEULG
+B04E;B04E;1101 1173 11B1;B04E;1101 1173 11B1; # (ëŽ; ëŽ; á„ᅳᆱ; ëŽ; á„ᅳᆱ; ) HANGUL SYLLABLE GGEULM
+B04F;B04F;1101 1173 11B2;B04F;1101 1173 11B2; # (ë; ë; á„ᅳᆲ; ë; á„ᅳᆲ; ) HANGUL SYLLABLE GGEULB
+B050;B050;1101 1173 11B3;B050;1101 1173 11B3; # (ë; ë; á„ᅳᆳ; ë; á„ᅳᆳ; ) HANGUL SYLLABLE GGEULS
+B051;B051;1101 1173 11B4;B051;1101 1173 11B4; # (ë‘; ë‘; á„ᅳᆴ; ë‘; á„ᅳᆴ; ) HANGUL SYLLABLE GGEULT
+B052;B052;1101 1173 11B5;B052;1101 1173 11B5; # (ë’; ë’; á„ᅳᆵ; ë’; á„ᅳᆵ; ) HANGUL SYLLABLE GGEULP
+B053;B053;1101 1173 11B6;B053;1101 1173 11B6; # (ë“; ë“; á„ᅳᆶ; ë“; á„ᅳᆶ; ) HANGUL SYLLABLE GGEULH
+B054;B054;1101 1173 11B7;B054;1101 1173 11B7; # (ë”; ë”; á„ᅳᆷ; ë”; á„ᅳᆷ; ) HANGUL SYLLABLE GGEUM
+B055;B055;1101 1173 11B8;B055;1101 1173 11B8; # (ë•; ë•; á„ᅳᆸ; ë•; á„ᅳᆸ; ) HANGUL SYLLABLE GGEUB
+B056;B056;1101 1173 11B9;B056;1101 1173 11B9; # (ë–; ë–; á„ᅳᆹ; ë–; á„ᅳᆹ; ) HANGUL SYLLABLE GGEUBS
+B057;B057;1101 1173 11BA;B057;1101 1173 11BA; # (ë—; ë—; á„ᅳᆺ; ë—; á„ᅳᆺ; ) HANGUL SYLLABLE GGEUS
+B058;B058;1101 1173 11BB;B058;1101 1173 11BB; # (ë˜; ë˜; á„ᅳᆻ; ë˜; á„ᅳᆻ; ) HANGUL SYLLABLE GGEUSS
+B059;B059;1101 1173 11BC;B059;1101 1173 11BC; # (ë™; ë™; á„ᅳᆼ; ë™; á„ᅳᆼ; ) HANGUL SYLLABLE GGEUNG
+B05A;B05A;1101 1173 11BD;B05A;1101 1173 11BD; # (ëš; ëš; á„ᅳᆽ; ëš; á„ᅳᆽ; ) HANGUL SYLLABLE GGEUJ
+B05B;B05B;1101 1173 11BE;B05B;1101 1173 11BE; # (ë›; ë›; á„ᅳᆾ; ë›; á„ᅳᆾ; ) HANGUL SYLLABLE GGEUC
+B05C;B05C;1101 1173 11BF;B05C;1101 1173 11BF; # (ëœ; ëœ; á„ᅳᆿ; ëœ; á„ᅳᆿ; ) HANGUL SYLLABLE GGEUK
+B05D;B05D;1101 1173 11C0;B05D;1101 1173 11C0; # (ë; ë; á„ᅳᇀ; ë; á„ᅳᇀ; ) HANGUL SYLLABLE GGEUT
+B05E;B05E;1101 1173 11C1;B05E;1101 1173 11C1; # (ëž; ëž; á„á…³á‡; ëž; á„á…³á‡; ) HANGUL SYLLABLE GGEUP
+B05F;B05F;1101 1173 11C2;B05F;1101 1173 11C2; # (ëŸ; ëŸ; á„ᅳᇂ; ëŸ; á„ᅳᇂ; ) HANGUL SYLLABLE GGEUH
+B060;B060;1101 1174;B060;1101 1174; # (ë ; ë ; á„á…´; ë ; á„á…´; ) HANGUL SYLLABLE GGYI
+B061;B061;1101 1174 11A8;B061;1101 1174 11A8; # (ë¡; ë¡; á„ᅴᆨ; ë¡; á„ᅴᆨ; ) HANGUL SYLLABLE GGYIG
+B062;B062;1101 1174 11A9;B062;1101 1174 11A9; # (ë¢; ë¢; á„ᅴᆩ; ë¢; á„ᅴᆩ; ) HANGUL SYLLABLE GGYIGG
+B063;B063;1101 1174 11AA;B063;1101 1174 11AA; # (ë£; ë£; á„ᅴᆪ; ë£; á„ᅴᆪ; ) HANGUL SYLLABLE GGYIGS
+B064;B064;1101 1174 11AB;B064;1101 1174 11AB; # (ë¤; ë¤; á„ᅴᆫ; ë¤; á„ᅴᆫ; ) HANGUL SYLLABLE GGYIN
+B065;B065;1101 1174 11AC;B065;1101 1174 11AC; # (ë¥; ë¥; á„ᅴᆬ; ë¥; á„ᅴᆬ; ) HANGUL SYLLABLE GGYINJ
+B066;B066;1101 1174 11AD;B066;1101 1174 11AD; # (ë¦; ë¦; á„ᅴᆭ; ë¦; á„ᅴᆭ; ) HANGUL SYLLABLE GGYINH
+B067;B067;1101 1174 11AE;B067;1101 1174 11AE; # (ë§; ë§; á„ᅴᆮ; ë§; á„ᅴᆮ; ) HANGUL SYLLABLE GGYID
+B068;B068;1101 1174 11AF;B068;1101 1174 11AF; # (ë¨; ë¨; á„ᅴᆯ; ë¨; á„ᅴᆯ; ) HANGUL SYLLABLE GGYIL
+B069;B069;1101 1174 11B0;B069;1101 1174 11B0; # (ë©; ë©; á„ᅴᆰ; ë©; á„ᅴᆰ; ) HANGUL SYLLABLE GGYILG
+B06A;B06A;1101 1174 11B1;B06A;1101 1174 11B1; # (ëª; ëª; á„ᅴᆱ; ëª; á„ᅴᆱ; ) HANGUL SYLLABLE GGYILM
+B06B;B06B;1101 1174 11B2;B06B;1101 1174 11B2; # (ë«; ë«; á„ᅴᆲ; ë«; á„ᅴᆲ; ) HANGUL SYLLABLE GGYILB
+B06C;B06C;1101 1174 11B3;B06C;1101 1174 11B3; # (ë¬; ë¬; á„ᅴᆳ; ë¬; á„ᅴᆳ; ) HANGUL SYLLABLE GGYILS
+B06D;B06D;1101 1174 11B4;B06D;1101 1174 11B4; # (ë­; ë­; á„ᅴᆴ; ë­; á„ᅴᆴ; ) HANGUL SYLLABLE GGYILT
+B06E;B06E;1101 1174 11B5;B06E;1101 1174 11B5; # (ë®; ë®; á„ᅴᆵ; ë®; á„ᅴᆵ; ) HANGUL SYLLABLE GGYILP
+B06F;B06F;1101 1174 11B6;B06F;1101 1174 11B6; # (ë¯; ë¯; á„ᅴᆶ; ë¯; á„ᅴᆶ; ) HANGUL SYLLABLE GGYILH
+B070;B070;1101 1174 11B7;B070;1101 1174 11B7; # (ë°; ë°; á„ᅴᆷ; ë°; á„ᅴᆷ; ) HANGUL SYLLABLE GGYIM
+B071;B071;1101 1174 11B8;B071;1101 1174 11B8; # (ë±; ë±; á„ᅴᆸ; ë±; á„ᅴᆸ; ) HANGUL SYLLABLE GGYIB
+B072;B072;1101 1174 11B9;B072;1101 1174 11B9; # (ë²; ë²; á„ᅴᆹ; ë²; á„ᅴᆹ; ) HANGUL SYLLABLE GGYIBS
+B073;B073;1101 1174 11BA;B073;1101 1174 11BA; # (ë³; ë³; á„ᅴᆺ; ë³; á„ᅴᆺ; ) HANGUL SYLLABLE GGYIS
+B074;B074;1101 1174 11BB;B074;1101 1174 11BB; # (ë´; ë´; á„ᅴᆻ; ë´; á„ᅴᆻ; ) HANGUL SYLLABLE GGYISS
+B075;B075;1101 1174 11BC;B075;1101 1174 11BC; # (ëµ; ëµ; á„ᅴᆼ; ëµ; á„ᅴᆼ; ) HANGUL SYLLABLE GGYING
+B076;B076;1101 1174 11BD;B076;1101 1174 11BD; # (ë¶; ë¶; á„ᅴᆽ; ë¶; á„ᅴᆽ; ) HANGUL SYLLABLE GGYIJ
+B077;B077;1101 1174 11BE;B077;1101 1174 11BE; # (ë·; ë·; á„ᅴᆾ; ë·; á„ᅴᆾ; ) HANGUL SYLLABLE GGYIC
+B078;B078;1101 1174 11BF;B078;1101 1174 11BF; # (ë¸; ë¸; á„ᅴᆿ; ë¸; á„ᅴᆿ; ) HANGUL SYLLABLE GGYIK
+B079;B079;1101 1174 11C0;B079;1101 1174 11C0; # (ë¹; ë¹; á„ᅴᇀ; ë¹; á„ᅴᇀ; ) HANGUL SYLLABLE GGYIT
+B07A;B07A;1101 1174 11C1;B07A;1101 1174 11C1; # (ëº; ëº; á„á…´á‡; ëº; á„á…´á‡; ) HANGUL SYLLABLE GGYIP
+B07B;B07B;1101 1174 11C2;B07B;1101 1174 11C2; # (ë»; ë»; á„ᅴᇂ; ë»; á„ᅴᇂ; ) HANGUL SYLLABLE GGYIH
+B07C;B07C;1101 1175;B07C;1101 1175; # (ë¼; ë¼; á„á…µ; ë¼; á„á…µ; ) HANGUL SYLLABLE GGI
+B07D;B07D;1101 1175 11A8;B07D;1101 1175 11A8; # (ë½; ë½; á„ᅵᆨ; ë½; á„ᅵᆨ; ) HANGUL SYLLABLE GGIG
+B07E;B07E;1101 1175 11A9;B07E;1101 1175 11A9; # (ë¾; ë¾; á„ᅵᆩ; ë¾; á„ᅵᆩ; ) HANGUL SYLLABLE GGIGG
+B07F;B07F;1101 1175 11AA;B07F;1101 1175 11AA; # (ë¿; ë¿; á„ᅵᆪ; ë¿; á„ᅵᆪ; ) HANGUL SYLLABLE GGIGS
+B080;B080;1101 1175 11AB;B080;1101 1175 11AB; # (ë‚€; ë‚€; á„ᅵᆫ; ë‚€; á„ᅵᆫ; ) HANGUL SYLLABLE GGIN
+B081;B081;1101 1175 11AC;B081;1101 1175 11AC; # (ë‚; ë‚; á„ᅵᆬ; ë‚; á„ᅵᆬ; ) HANGUL SYLLABLE GGINJ
+B082;B082;1101 1175 11AD;B082;1101 1175 11AD; # (ë‚‚; ë‚‚; á„ᅵᆭ; ë‚‚; á„ᅵᆭ; ) HANGUL SYLLABLE GGINH
+B083;B083;1101 1175 11AE;B083;1101 1175 11AE; # (낃; 낃; á„ᅵᆮ; 낃; á„ᅵᆮ; ) HANGUL SYLLABLE GGID
+B084;B084;1101 1175 11AF;B084;1101 1175 11AF; # (ë‚„; ë‚„; á„ᅵᆯ; ë‚„; á„ᅵᆯ; ) HANGUL SYLLABLE GGIL
+B085;B085;1101 1175 11B0;B085;1101 1175 11B0; # (ë‚…; ë‚…; á„ᅵᆰ; ë‚…; á„ᅵᆰ; ) HANGUL SYLLABLE GGILG
+B086;B086;1101 1175 11B1;B086;1101 1175 11B1; # (낆; 낆; á„ᅵᆱ; 낆; á„ᅵᆱ; ) HANGUL SYLLABLE GGILM
+B087;B087;1101 1175 11B2;B087;1101 1175 11B2; # (낇; 낇; á„ᅵᆲ; 낇; á„ᅵᆲ; ) HANGUL SYLLABLE GGILB
+B088;B088;1101 1175 11B3;B088;1101 1175 11B3; # (낈; 낈; á„ᅵᆳ; 낈; á„ᅵᆳ; ) HANGUL SYLLABLE GGILS
+B089;B089;1101 1175 11B4;B089;1101 1175 11B4; # (낉; 낉; á„ᅵᆴ; 낉; á„ᅵᆴ; ) HANGUL SYLLABLE GGILT
+B08A;B08A;1101 1175 11B5;B08A;1101 1175 11B5; # (ë‚Š; ë‚Š; á„ᅵᆵ; ë‚Š; á„ᅵᆵ; ) HANGUL SYLLABLE GGILP
+B08B;B08B;1101 1175 11B6;B08B;1101 1175 11B6; # (ë‚‹; ë‚‹; á„ᅵᆶ; ë‚‹; á„ᅵᆶ; ) HANGUL SYLLABLE GGILH
+B08C;B08C;1101 1175 11B7;B08C;1101 1175 11B7; # (ë‚Œ; ë‚Œ; á„ᅵᆷ; ë‚Œ; á„ᅵᆷ; ) HANGUL SYLLABLE GGIM
+B08D;B08D;1101 1175 11B8;B08D;1101 1175 11B8; # (ë‚; ë‚; á„ᅵᆸ; ë‚; á„ᅵᆸ; ) HANGUL SYLLABLE GGIB
+B08E;B08E;1101 1175 11B9;B08E;1101 1175 11B9; # (ë‚Ž; ë‚Ž; á„ᅵᆹ; ë‚Ž; á„ᅵᆹ; ) HANGUL SYLLABLE GGIBS
+B08F;B08F;1101 1175 11BA;B08F;1101 1175 11BA; # (ë‚; ë‚; á„ᅵᆺ; ë‚; á„ᅵᆺ; ) HANGUL SYLLABLE GGIS
+B090;B090;1101 1175 11BB;B090;1101 1175 11BB; # (ë‚; ë‚; á„ᅵᆻ; ë‚; á„ᅵᆻ; ) HANGUL SYLLABLE GGISS
+B091;B091;1101 1175 11BC;B091;1101 1175 11BC; # (ë‚‘; ë‚‘; á„ᅵᆼ; ë‚‘; á„ᅵᆼ; ) HANGUL SYLLABLE GGING
+B092;B092;1101 1175 11BD;B092;1101 1175 11BD; # (ë‚’; ë‚’; á„ᅵᆽ; ë‚’; á„ᅵᆽ; ) HANGUL SYLLABLE GGIJ
+B093;B093;1101 1175 11BE;B093;1101 1175 11BE; # (ë‚“; ë‚“; á„ᅵᆾ; ë‚“; á„ᅵᆾ; ) HANGUL SYLLABLE GGIC
+B094;B094;1101 1175 11BF;B094;1101 1175 11BF; # (ë‚”; ë‚”; á„ᅵᆿ; ë‚”; á„ᅵᆿ; ) HANGUL SYLLABLE GGIK
+B095;B095;1101 1175 11C0;B095;1101 1175 11C0; # (ë‚•; ë‚•; á„ᅵᇀ; ë‚•; á„ᅵᇀ; ) HANGUL SYLLABLE GGIT
+B096;B096;1101 1175 11C1;B096;1101 1175 11C1; # (ë‚–; ë‚–; á„á…µá‡; ë‚–; á„á…µá‡; ) HANGUL SYLLABLE GGIP
+B097;B097;1101 1175 11C2;B097;1101 1175 11C2; # (ë‚—; ë‚—; á„ᅵᇂ; ë‚—; á„ᅵᇂ; ) HANGUL SYLLABLE GGIH
+B098;B098;1102 1161;B098;1102 1161; # (나; 나; 나; 나; 나; ) HANGUL SYLLABLE NA
+B099;B099;1102 1161 11A8;B099;1102 1161 11A8; # (낙; 낙; 낙; 낙; 낙; ) HANGUL SYLLABLE NAG
+B09A;B09A;1102 1161 11A9;B09A;1102 1161 11A9; # (낚; 낚; 낚; 낚; 낚; ) HANGUL SYLLABLE NAGG
+B09B;B09B;1102 1161 11AA;B09B;1102 1161 11AA; # (낛; 낛; 낛; 낛; 낛; ) HANGUL SYLLABLE NAGS
+B09C;B09C;1102 1161 11AB;B09C;1102 1161 11AB; # (난; 난; 난; 난; 난; ) HANGUL SYLLABLE NAN
+B09D;B09D;1102 1161 11AC;B09D;1102 1161 11AC; # (ë‚; ë‚; 낝; ë‚; 낝; ) HANGUL SYLLABLE NANJ
+B09E;B09E;1102 1161 11AD;B09E;1102 1161 11AD; # (낞; 낞; 낞; 낞; 낞; ) HANGUL SYLLABLE NANH
+B09F;B09F;1102 1161 11AE;B09F;1102 1161 11AE; # (낟; 낟; 낟; 낟; 낟; ) HANGUL SYLLABLE NAD
+B0A0;B0A0;1102 1161 11AF;B0A0;1102 1161 11AF; # (날; 날; 날; 날; 날; ) HANGUL SYLLABLE NAL
+B0A1;B0A1;1102 1161 11B0;B0A1;1102 1161 11B0; # (낡; 낡; 낡; 낡; 낡; ) HANGUL SYLLABLE NALG
+B0A2;B0A2;1102 1161 11B1;B0A2;1102 1161 11B1; # (낢; 낢; 낢; 낢; 낢; ) HANGUL SYLLABLE NALM
+B0A3;B0A3;1102 1161 11B2;B0A3;1102 1161 11B2; # (낣; 낣; 낣; 낣; 낣; ) HANGUL SYLLABLE NALB
+B0A4;B0A4;1102 1161 11B3;B0A4;1102 1161 11B3; # (낤; 낤; 낤; 낤; 낤; ) HANGUL SYLLABLE NALS
+B0A5;B0A5;1102 1161 11B4;B0A5;1102 1161 11B4; # (낥; 낥; 낥; 낥; 낥; ) HANGUL SYLLABLE NALT
+B0A6;B0A6;1102 1161 11B5;B0A6;1102 1161 11B5; # (낦; 낦; 낦; 낦; 낦; ) HANGUL SYLLABLE NALP
+B0A7;B0A7;1102 1161 11B6;B0A7;1102 1161 11B6; # (낧; 낧; 낧; 낧; 낧; ) HANGUL SYLLABLE NALH
+B0A8;B0A8;1102 1161 11B7;B0A8;1102 1161 11B7; # (남; 남; 남; 남; 남; ) HANGUL SYLLABLE NAM
+B0A9;B0A9;1102 1161 11B8;B0A9;1102 1161 11B8; # (납; 납; 납; 납; 납; ) HANGUL SYLLABLE NAB
+B0AA;B0AA;1102 1161 11B9;B0AA;1102 1161 11B9; # (낪; 낪; 낪; 낪; 낪; ) HANGUL SYLLABLE NABS
+B0AB;B0AB;1102 1161 11BA;B0AB;1102 1161 11BA; # (낫; 낫; 낫; 낫; 낫; ) HANGUL SYLLABLE NAS
+B0AC;B0AC;1102 1161 11BB;B0AC;1102 1161 11BB; # (났; 났; 났; 났; 났; ) HANGUL SYLLABLE NASS
+B0AD;B0AD;1102 1161 11BC;B0AD;1102 1161 11BC; # (낭; 낭; 낭; 낭; 낭; ) HANGUL SYLLABLE NANG
+B0AE;B0AE;1102 1161 11BD;B0AE;1102 1161 11BD; # (낮; 낮; 낮; 낮; 낮; ) HANGUL SYLLABLE NAJ
+B0AF;B0AF;1102 1161 11BE;B0AF;1102 1161 11BE; # (낯; 낯; 낯; 낯; 낯; ) HANGUL SYLLABLE NAC
+B0B0;B0B0;1102 1161 11BF;B0B0;1102 1161 11BF; # (낰; 낰; 낰; 낰; 낰; ) HANGUL SYLLABLE NAK
+B0B1;B0B1;1102 1161 11C0;B0B1;1102 1161 11C0; # (낱; 낱; 낱; 낱; 낱; ) HANGUL SYLLABLE NAT
+B0B2;B0B2;1102 1161 11C1;B0B2;1102 1161 11C1; # (낲; 낲; á„‚á…¡á‡; 낲; á„‚á…¡á‡; ) HANGUL SYLLABLE NAP
+B0B3;B0B3;1102 1161 11C2;B0B3;1102 1161 11C2; # (낳; 낳; 낳; 낳; 낳; ) HANGUL SYLLABLE NAH
+B0B4;B0B4;1102 1162;B0B4;1102 1162; # (ë‚´; ë‚´; á„‚á…¢; ë‚´; á„‚á…¢; ) HANGUL SYLLABLE NAE
+B0B5;B0B5;1102 1162 11A8;B0B5;1102 1162 11A8; # (낵; 낵; 낵; 낵; 낵; ) HANGUL SYLLABLE NAEG
+B0B6;B0B6;1102 1162 11A9;B0B6;1102 1162 11A9; # (낶; 낶; 낶; 낶; 낶; ) HANGUL SYLLABLE NAEGG
+B0B7;B0B7;1102 1162 11AA;B0B7;1102 1162 11AA; # (낷; 낷; 낷; 낷; 낷; ) HANGUL SYLLABLE NAEGS
+B0B8;B0B8;1102 1162 11AB;B0B8;1102 1162 11AB; # (낸; 낸; 낸; 낸; 낸; ) HANGUL SYLLABLE NAEN
+B0B9;B0B9;1102 1162 11AC;B0B9;1102 1162 11AC; # (낹; 낹; 낹; 낹; 낹; ) HANGUL SYLLABLE NAENJ
+B0BA;B0BA;1102 1162 11AD;B0BA;1102 1162 11AD; # (낺; 낺; 낺; 낺; 낺; ) HANGUL SYLLABLE NAENH
+B0BB;B0BB;1102 1162 11AE;B0BB;1102 1162 11AE; # (낻; 낻; 낻; 낻; 낻; ) HANGUL SYLLABLE NAED
+B0BC;B0BC;1102 1162 11AF;B0BC;1102 1162 11AF; # (낼; 낼; 낼; 낼; 낼; ) HANGUL SYLLABLE NAEL
+B0BD;B0BD;1102 1162 11B0;B0BD;1102 1162 11B0; # (낽; 낽; 낽; 낽; 낽; ) HANGUL SYLLABLE NAELG
+B0BE;B0BE;1102 1162 11B1;B0BE;1102 1162 11B1; # (낾; 낾; 낾; 낾; 낾; ) HANGUL SYLLABLE NAELM
+B0BF;B0BF;1102 1162 11B2;B0BF;1102 1162 11B2; # (낿; 낿; 낿; 낿; 낿; ) HANGUL SYLLABLE NAELB
+B0C0;B0C0;1102 1162 11B3;B0C0;1102 1162 11B3; # (냀; 냀; 냀; 냀; 냀; ) HANGUL SYLLABLE NAELS
+B0C1;B0C1;1102 1162 11B4;B0C1;1102 1162 11B4; # (ëƒ; ëƒ; 냁; ëƒ; 냁; ) HANGUL SYLLABLE NAELT
+B0C2;B0C2;1102 1162 11B5;B0C2;1102 1162 11B5; # (냂; 냂; 냂; 냂; 냂; ) HANGUL SYLLABLE NAELP
+B0C3;B0C3;1102 1162 11B6;B0C3;1102 1162 11B6; # (냃; 냃; 냃; 냃; 냃; ) HANGUL SYLLABLE NAELH
+B0C4;B0C4;1102 1162 11B7;B0C4;1102 1162 11B7; # (냄; 냄; 냄; 냄; 냄; ) HANGUL SYLLABLE NAEM
+B0C5;B0C5;1102 1162 11B8;B0C5;1102 1162 11B8; # (냅; 냅; 냅; 냅; 냅; ) HANGUL SYLLABLE NAEB
+B0C6;B0C6;1102 1162 11B9;B0C6;1102 1162 11B9; # (냆; 냆; 냆; 냆; 냆; ) HANGUL SYLLABLE NAEBS
+B0C7;B0C7;1102 1162 11BA;B0C7;1102 1162 11BA; # (냇; 냇; 냇; 냇; 냇; ) HANGUL SYLLABLE NAES
+B0C8;B0C8;1102 1162 11BB;B0C8;1102 1162 11BB; # (냈; 냈; 냈; 냈; 냈; ) HANGUL SYLLABLE NAESS
+B0C9;B0C9;1102 1162 11BC;B0C9;1102 1162 11BC; # (냉; 냉; 냉; 냉; 냉; ) HANGUL SYLLABLE NAENG
+B0CA;B0CA;1102 1162 11BD;B0CA;1102 1162 11BD; # (냊; 냊; 냊; 냊; 냊; ) HANGUL SYLLABLE NAEJ
+B0CB;B0CB;1102 1162 11BE;B0CB;1102 1162 11BE; # (냋; 냋; 냋; 냋; 냋; ) HANGUL SYLLABLE NAEC
+B0CC;B0CC;1102 1162 11BF;B0CC;1102 1162 11BF; # (냌; 냌; 냌; 냌; 냌; ) HANGUL SYLLABLE NAEK
+B0CD;B0CD;1102 1162 11C0;B0CD;1102 1162 11C0; # (ëƒ; ëƒ; 냍; ëƒ; 냍; ) HANGUL SYLLABLE NAET
+B0CE;B0CE;1102 1162 11C1;B0CE;1102 1162 11C1; # (냎; 냎; á„‚á…¢á‡; 냎; á„‚á…¢á‡; ) HANGUL SYLLABLE NAEP
+B0CF;B0CF;1102 1162 11C2;B0CF;1102 1162 11C2; # (ëƒ; ëƒ; 냏; ëƒ; 냏; ) HANGUL SYLLABLE NAEH
+B0D0;B0D0;1102 1163;B0D0;1102 1163; # (ëƒ; ëƒ; á„‚á…£; ëƒ; á„‚á…£; ) HANGUL SYLLABLE NYA
+B0D1;B0D1;1102 1163 11A8;B0D1;1102 1163 11A8; # (냑; 냑; 냑; 냑; 냑; ) HANGUL SYLLABLE NYAG
+B0D2;B0D2;1102 1163 11A9;B0D2;1102 1163 11A9; # (냒; 냒; 냒; 냒; 냒; ) HANGUL SYLLABLE NYAGG
+B0D3;B0D3;1102 1163 11AA;B0D3;1102 1163 11AA; # (냓; 냓; 냓; 냓; 냓; ) HANGUL SYLLABLE NYAGS
+B0D4;B0D4;1102 1163 11AB;B0D4;1102 1163 11AB; # (냔; 냔; 냔; 냔; 냔; ) HANGUL SYLLABLE NYAN
+B0D5;B0D5;1102 1163 11AC;B0D5;1102 1163 11AC; # (냕; 냕; 냕; 냕; 냕; ) HANGUL SYLLABLE NYANJ
+B0D6;B0D6;1102 1163 11AD;B0D6;1102 1163 11AD; # (냖; 냖; 냖; 냖; 냖; ) HANGUL SYLLABLE NYANH
+B0D7;B0D7;1102 1163 11AE;B0D7;1102 1163 11AE; # (냗; 냗; 냗; 냗; 냗; ) HANGUL SYLLABLE NYAD
+B0D8;B0D8;1102 1163 11AF;B0D8;1102 1163 11AF; # (냘; 냘; 냘; 냘; 냘; ) HANGUL SYLLABLE NYAL
+B0D9;B0D9;1102 1163 11B0;B0D9;1102 1163 11B0; # (냙; 냙; 냙; 냙; 냙; ) HANGUL SYLLABLE NYALG
+B0DA;B0DA;1102 1163 11B1;B0DA;1102 1163 11B1; # (냚; 냚; 냚; 냚; 냚; ) HANGUL SYLLABLE NYALM
+B0DB;B0DB;1102 1163 11B2;B0DB;1102 1163 11B2; # (냛; 냛; 냛; 냛; 냛; ) HANGUL SYLLABLE NYALB
+B0DC;B0DC;1102 1163 11B3;B0DC;1102 1163 11B3; # (냜; 냜; 냜; 냜; 냜; ) HANGUL SYLLABLE NYALS
+B0DD;B0DD;1102 1163 11B4;B0DD;1102 1163 11B4; # (ëƒ; ëƒ; 냝; ëƒ; 냝; ) HANGUL SYLLABLE NYALT
+B0DE;B0DE;1102 1163 11B5;B0DE;1102 1163 11B5; # (냞; 냞; 냞; 냞; 냞; ) HANGUL SYLLABLE NYALP
+B0DF;B0DF;1102 1163 11B6;B0DF;1102 1163 11B6; # (냟; 냟; 냟; 냟; 냟; ) HANGUL SYLLABLE NYALH
+B0E0;B0E0;1102 1163 11B7;B0E0;1102 1163 11B7; # (냠; 냠; 냠; 냠; 냠; ) HANGUL SYLLABLE NYAM
+B0E1;B0E1;1102 1163 11B8;B0E1;1102 1163 11B8; # (냡; 냡; 냡; 냡; 냡; ) HANGUL SYLLABLE NYAB
+B0E2;B0E2;1102 1163 11B9;B0E2;1102 1163 11B9; # (냢; 냢; 냢; 냢; 냢; ) HANGUL SYLLABLE NYABS
+B0E3;B0E3;1102 1163 11BA;B0E3;1102 1163 11BA; # (냣; 냣; 냣; 냣; 냣; ) HANGUL SYLLABLE NYAS
+B0E4;B0E4;1102 1163 11BB;B0E4;1102 1163 11BB; # (냤; 냤; 냤; 냤; 냤; ) HANGUL SYLLABLE NYASS
+B0E5;B0E5;1102 1163 11BC;B0E5;1102 1163 11BC; # (냥; 냥; 냥; 냥; 냥; ) HANGUL SYLLABLE NYANG
+B0E6;B0E6;1102 1163 11BD;B0E6;1102 1163 11BD; # (냦; 냦; 냦; 냦; 냦; ) HANGUL SYLLABLE NYAJ
+B0E7;B0E7;1102 1163 11BE;B0E7;1102 1163 11BE; # (냧; 냧; 냧; 냧; 냧; ) HANGUL SYLLABLE NYAC
+B0E8;B0E8;1102 1163 11BF;B0E8;1102 1163 11BF; # (냨; 냨; 냨; 냨; 냨; ) HANGUL SYLLABLE NYAK
+B0E9;B0E9;1102 1163 11C0;B0E9;1102 1163 11C0; # (냩; 냩; 냩; 냩; 냩; ) HANGUL SYLLABLE NYAT
+B0EA;B0EA;1102 1163 11C1;B0EA;1102 1163 11C1; # (냪; 냪; á„‚á…£á‡; 냪; á„‚á…£á‡; ) HANGUL SYLLABLE NYAP
+B0EB;B0EB;1102 1163 11C2;B0EB;1102 1163 11C2; # (냫; 냫; 냫; 냫; 냫; ) HANGUL SYLLABLE NYAH
+B0EC;B0EC;1102 1164;B0EC;1102 1164; # (냬; 냬; 냬; 냬; 냬; ) HANGUL SYLLABLE NYAE
+B0ED;B0ED;1102 1164 11A8;B0ED;1102 1164 11A8; # (냭; 냭; 냭; 냭; 냭; ) HANGUL SYLLABLE NYAEG
+B0EE;B0EE;1102 1164 11A9;B0EE;1102 1164 11A9; # (냮; 냮; 냮; 냮; 냮; ) HANGUL SYLLABLE NYAEGG
+B0EF;B0EF;1102 1164 11AA;B0EF;1102 1164 11AA; # (냯; 냯; 냯; 냯; 냯; ) HANGUL SYLLABLE NYAEGS
+B0F0;B0F0;1102 1164 11AB;B0F0;1102 1164 11AB; # (냰; 냰; 냰; 냰; 냰; ) HANGUL SYLLABLE NYAEN
+B0F1;B0F1;1102 1164 11AC;B0F1;1102 1164 11AC; # (냱; 냱; 냱; 냱; 냱; ) HANGUL SYLLABLE NYAENJ
+B0F2;B0F2;1102 1164 11AD;B0F2;1102 1164 11AD; # (냲; 냲; 냲; 냲; 냲; ) HANGUL SYLLABLE NYAENH
+B0F3;B0F3;1102 1164 11AE;B0F3;1102 1164 11AE; # (냳; 냳; 냳; 냳; 냳; ) HANGUL SYLLABLE NYAED
+B0F4;B0F4;1102 1164 11AF;B0F4;1102 1164 11AF; # (냴; 냴; 냴; 냴; 냴; ) HANGUL SYLLABLE NYAEL
+B0F5;B0F5;1102 1164 11B0;B0F5;1102 1164 11B0; # (냵; 냵; 냵; 냵; 냵; ) HANGUL SYLLABLE NYAELG
+B0F6;B0F6;1102 1164 11B1;B0F6;1102 1164 11B1; # (냶; 냶; 냶; 냶; 냶; ) HANGUL SYLLABLE NYAELM
+B0F7;B0F7;1102 1164 11B2;B0F7;1102 1164 11B2; # (냷; 냷; 냷; 냷; 냷; ) HANGUL SYLLABLE NYAELB
+B0F8;B0F8;1102 1164 11B3;B0F8;1102 1164 11B3; # (냸; 냸; 냸; 냸; 냸; ) HANGUL SYLLABLE NYAELS
+B0F9;B0F9;1102 1164 11B4;B0F9;1102 1164 11B4; # (냹; 냹; 냹; 냹; 냹; ) HANGUL SYLLABLE NYAELT
+B0FA;B0FA;1102 1164 11B5;B0FA;1102 1164 11B5; # (냺; 냺; 냺; 냺; 냺; ) HANGUL SYLLABLE NYAELP
+B0FB;B0FB;1102 1164 11B6;B0FB;1102 1164 11B6; # (냻; 냻; 냻; 냻; 냻; ) HANGUL SYLLABLE NYAELH
+B0FC;B0FC;1102 1164 11B7;B0FC;1102 1164 11B7; # (냼; 냼; 냼; 냼; 냼; ) HANGUL SYLLABLE NYAEM
+B0FD;B0FD;1102 1164 11B8;B0FD;1102 1164 11B8; # (냽; 냽; 냽; 냽; 냽; ) HANGUL SYLLABLE NYAEB
+B0FE;B0FE;1102 1164 11B9;B0FE;1102 1164 11B9; # (냾; 냾; 냾; 냾; 냾; ) HANGUL SYLLABLE NYAEBS
+B0FF;B0FF;1102 1164 11BA;B0FF;1102 1164 11BA; # (냿; 냿; 냿; 냿; 냿; ) HANGUL SYLLABLE NYAES
+B100;B100;1102 1164 11BB;B100;1102 1164 11BB; # (넀; 넀; 넀; 넀; 넀; ) HANGUL SYLLABLE NYAESS
+B101;B101;1102 1164 11BC;B101;1102 1164 11BC; # (ë„; ë„; 넁; ë„; 넁; ) HANGUL SYLLABLE NYAENG
+B102;B102;1102 1164 11BD;B102;1102 1164 11BD; # (넂; 넂; 넂; 넂; 넂; ) HANGUL SYLLABLE NYAEJ
+B103;B103;1102 1164 11BE;B103;1102 1164 11BE; # (넃; 넃; 넃; 넃; 넃; ) HANGUL SYLLABLE NYAEC
+B104;B104;1102 1164 11BF;B104;1102 1164 11BF; # (넄; 넄; 넄; 넄; 넄; ) HANGUL SYLLABLE NYAEK
+B105;B105;1102 1164 11C0;B105;1102 1164 11C0; # (넅; 넅; 넅; 넅; 넅; ) HANGUL SYLLABLE NYAET
+B106;B106;1102 1164 11C1;B106;1102 1164 11C1; # (넆; 넆; á„‚á…¤á‡; 넆; á„‚á…¤á‡; ) HANGUL SYLLABLE NYAEP
+B107;B107;1102 1164 11C2;B107;1102 1164 11C2; # (넇; 넇; 넇; 넇; 넇; ) HANGUL SYLLABLE NYAEH
+B108;B108;1102 1165;B108;1102 1165; # (너; 너; 너; 너; 너; ) HANGUL SYLLABLE NEO
+B109;B109;1102 1165 11A8;B109;1102 1165 11A8; # (넉; 넉; 넉; 넉; 넉; ) HANGUL SYLLABLE NEOG
+B10A;B10A;1102 1165 11A9;B10A;1102 1165 11A9; # (넊; 넊; 넊; 넊; 넊; ) HANGUL SYLLABLE NEOGG
+B10B;B10B;1102 1165 11AA;B10B;1102 1165 11AA; # (넋; 넋; 넋; 넋; 넋; ) HANGUL SYLLABLE NEOGS
+B10C;B10C;1102 1165 11AB;B10C;1102 1165 11AB; # (넌; 넌; 넌; 넌; 넌; ) HANGUL SYLLABLE NEON
+B10D;B10D;1102 1165 11AC;B10D;1102 1165 11AC; # (ë„; ë„; 넍; ë„; 넍; ) HANGUL SYLLABLE NEONJ
+B10E;B10E;1102 1165 11AD;B10E;1102 1165 11AD; # (넎; 넎; 넎; 넎; 넎; ) HANGUL SYLLABLE NEONH
+B10F;B10F;1102 1165 11AE;B10F;1102 1165 11AE; # (ë„; ë„; 넏; ë„; 넏; ) HANGUL SYLLABLE NEOD
+B110;B110;1102 1165 11AF;B110;1102 1165 11AF; # (ë„; ë„; 널; ë„; 널; ) HANGUL SYLLABLE NEOL
+B111;B111;1102 1165 11B0;B111;1102 1165 11B0; # (넑; 넑; 넑; 넑; 넑; ) HANGUL SYLLABLE NEOLG
+B112;B112;1102 1165 11B1;B112;1102 1165 11B1; # (넒; 넒; 넒; 넒; 넒; ) HANGUL SYLLABLE NEOLM
+B113;B113;1102 1165 11B2;B113;1102 1165 11B2; # (넓; 넓; 넓; 넓; 넓; ) HANGUL SYLLABLE NEOLB
+B114;B114;1102 1165 11B3;B114;1102 1165 11B3; # (넔; 넔; 넔; 넔; 넔; ) HANGUL SYLLABLE NEOLS
+B115;B115;1102 1165 11B4;B115;1102 1165 11B4; # (넕; 넕; 넕; 넕; 넕; ) HANGUL SYLLABLE NEOLT
+B116;B116;1102 1165 11B5;B116;1102 1165 11B5; # (넖; 넖; 넖; 넖; 넖; ) HANGUL SYLLABLE NEOLP
+B117;B117;1102 1165 11B6;B117;1102 1165 11B6; # (넗; 넗; 넗; 넗; 넗; ) HANGUL SYLLABLE NEOLH
+B118;B118;1102 1165 11B7;B118;1102 1165 11B7; # (넘; 넘; 넘; 넘; 넘; ) HANGUL SYLLABLE NEOM
+B119;B119;1102 1165 11B8;B119;1102 1165 11B8; # (넙; 넙; 넙; 넙; 넙; ) HANGUL SYLLABLE NEOB
+B11A;B11A;1102 1165 11B9;B11A;1102 1165 11B9; # (넚; 넚; 넚; 넚; 넚; ) HANGUL SYLLABLE NEOBS
+B11B;B11B;1102 1165 11BA;B11B;1102 1165 11BA; # (넛; 넛; 넛; 넛; 넛; ) HANGUL SYLLABLE NEOS
+B11C;B11C;1102 1165 11BB;B11C;1102 1165 11BB; # (넜; 넜; 넜; 넜; 넜; ) HANGUL SYLLABLE NEOSS
+B11D;B11D;1102 1165 11BC;B11D;1102 1165 11BC; # (ë„; ë„; 넝; ë„; 넝; ) HANGUL SYLLABLE NEONG
+B11E;B11E;1102 1165 11BD;B11E;1102 1165 11BD; # (넞; 넞; 넞; 넞; 넞; ) HANGUL SYLLABLE NEOJ
+B11F;B11F;1102 1165 11BE;B11F;1102 1165 11BE; # (넟; 넟; 넟; 넟; 넟; ) HANGUL SYLLABLE NEOC
+B120;B120;1102 1165 11BF;B120;1102 1165 11BF; # (넠; 넠; 넠; 넠; 넠; ) HANGUL SYLLABLE NEOK
+B121;B121;1102 1165 11C0;B121;1102 1165 11C0; # (넡; 넡; 넡; 넡; 넡; ) HANGUL SYLLABLE NEOT
+B122;B122;1102 1165 11C1;B122;1102 1165 11C1; # (ë„¢; ë„¢; á„‚á…¥á‡; ë„¢; á„‚á…¥á‡; ) HANGUL SYLLABLE NEOP
+B123;B123;1102 1165 11C2;B123;1102 1165 11C2; # (넣; 넣; 넣; 넣; 넣; ) HANGUL SYLLABLE NEOH
+B124;B124;1102 1166;B124;1102 1166; # (네; 네; 네; 네; 네; ) HANGUL SYLLABLE NE
+B125;B125;1102 1166 11A8;B125;1102 1166 11A8; # (넥; 넥; 넥; 넥; 넥; ) HANGUL SYLLABLE NEG
+B126;B126;1102 1166 11A9;B126;1102 1166 11A9; # (넦; 넦; 넦; 넦; 넦; ) HANGUL SYLLABLE NEGG
+B127;B127;1102 1166 11AA;B127;1102 1166 11AA; # (넧; 넧; 넧; 넧; 넧; ) HANGUL SYLLABLE NEGS
+B128;B128;1102 1166 11AB;B128;1102 1166 11AB; # (넨; 넨; 넨; 넨; 넨; ) HANGUL SYLLABLE NEN
+B129;B129;1102 1166 11AC;B129;1102 1166 11AC; # (넩; 넩; 넩; 넩; 넩; ) HANGUL SYLLABLE NENJ
+B12A;B12A;1102 1166 11AD;B12A;1102 1166 11AD; # (넪; 넪; 넪; 넪; 넪; ) HANGUL SYLLABLE NENH
+B12B;B12B;1102 1166 11AE;B12B;1102 1166 11AE; # (넫; 넫; 넫; 넫; 넫; ) HANGUL SYLLABLE NED
+B12C;B12C;1102 1166 11AF;B12C;1102 1166 11AF; # (넬; 넬; 넬; 넬; 넬; ) HANGUL SYLLABLE NEL
+B12D;B12D;1102 1166 11B0;B12D;1102 1166 11B0; # (넭; 넭; 넭; 넭; 넭; ) HANGUL SYLLABLE NELG
+B12E;B12E;1102 1166 11B1;B12E;1102 1166 11B1; # (넮; 넮; 넮; 넮; 넮; ) HANGUL SYLLABLE NELM
+B12F;B12F;1102 1166 11B2;B12F;1102 1166 11B2; # (넯; 넯; 넯; 넯; 넯; ) HANGUL SYLLABLE NELB
+B130;B130;1102 1166 11B3;B130;1102 1166 11B3; # (넰; 넰; 넰; 넰; 넰; ) HANGUL SYLLABLE NELS
+B131;B131;1102 1166 11B4;B131;1102 1166 11B4; # (넱; 넱; 넱; 넱; 넱; ) HANGUL SYLLABLE NELT
+B132;B132;1102 1166 11B5;B132;1102 1166 11B5; # (넲; 넲; 넲; 넲; 넲; ) HANGUL SYLLABLE NELP
+B133;B133;1102 1166 11B6;B133;1102 1166 11B6; # (넳; 넳; 넳; 넳; 넳; ) HANGUL SYLLABLE NELH
+B134;B134;1102 1166 11B7;B134;1102 1166 11B7; # (넴; 넴; 넴; 넴; 넴; ) HANGUL SYLLABLE NEM
+B135;B135;1102 1166 11B8;B135;1102 1166 11B8; # (넵; 넵; 넵; 넵; 넵; ) HANGUL SYLLABLE NEB
+B136;B136;1102 1166 11B9;B136;1102 1166 11B9; # (넶; 넶; 넶; 넶; 넶; ) HANGUL SYLLABLE NEBS
+B137;B137;1102 1166 11BA;B137;1102 1166 11BA; # (넷; 넷; 넷; 넷; 넷; ) HANGUL SYLLABLE NES
+B138;B138;1102 1166 11BB;B138;1102 1166 11BB; # (넸; 넸; 넸; 넸; 넸; ) HANGUL SYLLABLE NESS
+B139;B139;1102 1166 11BC;B139;1102 1166 11BC; # (넹; 넹; 넹; 넹; 넹; ) HANGUL SYLLABLE NENG
+B13A;B13A;1102 1166 11BD;B13A;1102 1166 11BD; # (넺; 넺; 넺; 넺; 넺; ) HANGUL SYLLABLE NEJ
+B13B;B13B;1102 1166 11BE;B13B;1102 1166 11BE; # (넻; 넻; 넻; 넻; 넻; ) HANGUL SYLLABLE NEC
+B13C;B13C;1102 1166 11BF;B13C;1102 1166 11BF; # (넼; 넼; 넼; 넼; 넼; ) HANGUL SYLLABLE NEK
+B13D;B13D;1102 1166 11C0;B13D;1102 1166 11C0; # (넽; 넽; 넽; 넽; 넽; ) HANGUL SYLLABLE NET
+B13E;B13E;1102 1166 11C1;B13E;1102 1166 11C1; # (넾; 넾; á„‚á…¦á‡; 넾; á„‚á…¦á‡; ) HANGUL SYLLABLE NEP
+B13F;B13F;1102 1166 11C2;B13F;1102 1166 11C2; # (넿; 넿; 넿; 넿; 넿; ) HANGUL SYLLABLE NEH
+B140;B140;1102 1167;B140;1102 1167; # (ë…€; ë…€; á„‚á…§; ë…€; á„‚á…§; ) HANGUL SYLLABLE NYEO
+B141;B141;1102 1167 11A8;B141;1102 1167 11A8; # (ë…; ë…; 녁; ë…; 녁; ) HANGUL SYLLABLE NYEOG
+B142;B142;1102 1167 11A9;B142;1102 1167 11A9; # (녂; 녂; 녂; 녂; 녂; ) HANGUL SYLLABLE NYEOGG
+B143;B143;1102 1167 11AA;B143;1102 1167 11AA; # (녃; 녃; 녃; 녃; 녃; ) HANGUL SYLLABLE NYEOGS
+B144;B144;1102 1167 11AB;B144;1102 1167 11AB; # (년; 년; 년; 년; 년; ) HANGUL SYLLABLE NYEON
+B145;B145;1102 1167 11AC;B145;1102 1167 11AC; # (녅; 녅; 녅; 녅; 녅; ) HANGUL SYLLABLE NYEONJ
+B146;B146;1102 1167 11AD;B146;1102 1167 11AD; # (녆; 녆; 녆; 녆; 녆; ) HANGUL SYLLABLE NYEONH
+B147;B147;1102 1167 11AE;B147;1102 1167 11AE; # (녇; 녇; 녇; 녇; 녇; ) HANGUL SYLLABLE NYEOD
+B148;B148;1102 1167 11AF;B148;1102 1167 11AF; # (녈; 녈; 녈; 녈; 녈; ) HANGUL SYLLABLE NYEOL
+B149;B149;1102 1167 11B0;B149;1102 1167 11B0; # (녉; 녉; 녉; 녉; 녉; ) HANGUL SYLLABLE NYEOLG
+B14A;B14A;1102 1167 11B1;B14A;1102 1167 11B1; # (녊; 녊; 녊; 녊; 녊; ) HANGUL SYLLABLE NYEOLM
+B14B;B14B;1102 1167 11B2;B14B;1102 1167 11B2; # (녋; 녋; 녋; 녋; 녋; ) HANGUL SYLLABLE NYEOLB
+B14C;B14C;1102 1167 11B3;B14C;1102 1167 11B3; # (녌; 녌; 녌; 녌; 녌; ) HANGUL SYLLABLE NYEOLS
+B14D;B14D;1102 1167 11B4;B14D;1102 1167 11B4; # (ë…; ë…; 녍; ë…; 녍; ) HANGUL SYLLABLE NYEOLT
+B14E;B14E;1102 1167 11B5;B14E;1102 1167 11B5; # (녎; 녎; 녎; 녎; 녎; ) HANGUL SYLLABLE NYEOLP
+B14F;B14F;1102 1167 11B6;B14F;1102 1167 11B6; # (ë…; ë…; 녏; ë…; 녏; ) HANGUL SYLLABLE NYEOLH
+B150;B150;1102 1167 11B7;B150;1102 1167 11B7; # (ë…; ë…; 념; ë…; 념; ) HANGUL SYLLABLE NYEOM
+B151;B151;1102 1167 11B8;B151;1102 1167 11B8; # (녑; 녑; 녑; 녑; 녑; ) HANGUL SYLLABLE NYEOB
+B152;B152;1102 1167 11B9;B152;1102 1167 11B9; # (녒; 녒; 녒; 녒; 녒; ) HANGUL SYLLABLE NYEOBS
+B153;B153;1102 1167 11BA;B153;1102 1167 11BA; # (녓; 녓; 녓; 녓; 녓; ) HANGUL SYLLABLE NYEOS
+B154;B154;1102 1167 11BB;B154;1102 1167 11BB; # (녔; 녔; 녔; 녔; 녔; ) HANGUL SYLLABLE NYEOSS
+B155;B155;1102 1167 11BC;B155;1102 1167 11BC; # (녕; 녕; 녕; 녕; 녕; ) HANGUL SYLLABLE NYEONG
+B156;B156;1102 1167 11BD;B156;1102 1167 11BD; # (녖; 녖; 녖; 녖; 녖; ) HANGUL SYLLABLE NYEOJ
+B157;B157;1102 1167 11BE;B157;1102 1167 11BE; # (녗; 녗; 녗; 녗; 녗; ) HANGUL SYLLABLE NYEOC
+B158;B158;1102 1167 11BF;B158;1102 1167 11BF; # (녘; 녘; 녘; 녘; 녘; ) HANGUL SYLLABLE NYEOK
+B159;B159;1102 1167 11C0;B159;1102 1167 11C0; # (녙; 녙; 녙; 녙; 녙; ) HANGUL SYLLABLE NYEOT
+B15A;B15A;1102 1167 11C1;B15A;1102 1167 11C1; # (ë…š; ë…š; á„‚á…§á‡; ë…š; á„‚á…§á‡; ) HANGUL SYLLABLE NYEOP
+B15B;B15B;1102 1167 11C2;B15B;1102 1167 11C2; # (녛; 녛; 녛; 녛; 녛; ) HANGUL SYLLABLE NYEOH
+B15C;B15C;1102 1168;B15C;1102 1168; # (녜; 녜; 녜; 녜; 녜; ) HANGUL SYLLABLE NYE
+B15D;B15D;1102 1168 11A8;B15D;1102 1168 11A8; # (ë…; ë…; 녝; ë…; 녝; ) HANGUL SYLLABLE NYEG
+B15E;B15E;1102 1168 11A9;B15E;1102 1168 11A9; # (녞; 녞; 녞; 녞; 녞; ) HANGUL SYLLABLE NYEGG
+B15F;B15F;1102 1168 11AA;B15F;1102 1168 11AA; # (녟; 녟; 녟; 녟; 녟; ) HANGUL SYLLABLE NYEGS
+B160;B160;1102 1168 11AB;B160;1102 1168 11AB; # (녠; 녠; 녠; 녠; 녠; ) HANGUL SYLLABLE NYEN
+B161;B161;1102 1168 11AC;B161;1102 1168 11AC; # (녡; 녡; 녡; 녡; 녡; ) HANGUL SYLLABLE NYENJ
+B162;B162;1102 1168 11AD;B162;1102 1168 11AD; # (녢; 녢; 녢; 녢; 녢; ) HANGUL SYLLABLE NYENH
+B163;B163;1102 1168 11AE;B163;1102 1168 11AE; # (녣; 녣; 녣; 녣; 녣; ) HANGUL SYLLABLE NYED
+B164;B164;1102 1168 11AF;B164;1102 1168 11AF; # (녤; 녤; 녤; 녤; 녤; ) HANGUL SYLLABLE NYEL
+B165;B165;1102 1168 11B0;B165;1102 1168 11B0; # (녥; 녥; 녥; 녥; 녥; ) HANGUL SYLLABLE NYELG
+B166;B166;1102 1168 11B1;B166;1102 1168 11B1; # (녦; 녦; 녦; 녦; 녦; ) HANGUL SYLLABLE NYELM
+B167;B167;1102 1168 11B2;B167;1102 1168 11B2; # (녧; 녧; 녧; 녧; 녧; ) HANGUL SYLLABLE NYELB
+B168;B168;1102 1168 11B3;B168;1102 1168 11B3; # (녨; 녨; 녨; 녨; 녨; ) HANGUL SYLLABLE NYELS
+B169;B169;1102 1168 11B4;B169;1102 1168 11B4; # (녩; 녩; 녩; 녩; 녩; ) HANGUL SYLLABLE NYELT
+B16A;B16A;1102 1168 11B5;B16A;1102 1168 11B5; # (녪; 녪; 녪; 녪; 녪; ) HANGUL SYLLABLE NYELP
+B16B;B16B;1102 1168 11B6;B16B;1102 1168 11B6; # (녫; 녫; 녫; 녫; 녫; ) HANGUL SYLLABLE NYELH
+B16C;B16C;1102 1168 11B7;B16C;1102 1168 11B7; # (녬; 녬; 녬; 녬; 녬; ) HANGUL SYLLABLE NYEM
+B16D;B16D;1102 1168 11B8;B16D;1102 1168 11B8; # (녭; 녭; 녭; 녭; 녭; ) HANGUL SYLLABLE NYEB
+B16E;B16E;1102 1168 11B9;B16E;1102 1168 11B9; # (녮; 녮; 녮; 녮; 녮; ) HANGUL SYLLABLE NYEBS
+B16F;B16F;1102 1168 11BA;B16F;1102 1168 11BA; # (녯; 녯; 녯; 녯; 녯; ) HANGUL SYLLABLE NYES
+B170;B170;1102 1168 11BB;B170;1102 1168 11BB; # (녰; 녰; 녰; 녰; 녰; ) HANGUL SYLLABLE NYESS
+B171;B171;1102 1168 11BC;B171;1102 1168 11BC; # (녱; 녱; 녱; 녱; 녱; ) HANGUL SYLLABLE NYENG
+B172;B172;1102 1168 11BD;B172;1102 1168 11BD; # (녲; 녲; 녲; 녲; 녲; ) HANGUL SYLLABLE NYEJ
+B173;B173;1102 1168 11BE;B173;1102 1168 11BE; # (녳; 녳; 녳; 녳; 녳; ) HANGUL SYLLABLE NYEC
+B174;B174;1102 1168 11BF;B174;1102 1168 11BF; # (녴; 녴; 녴; 녴; 녴; ) HANGUL SYLLABLE NYEK
+B175;B175;1102 1168 11C0;B175;1102 1168 11C0; # (녵; 녵; 녵; 녵; 녵; ) HANGUL SYLLABLE NYET
+B176;B176;1102 1168 11C1;B176;1102 1168 11C1; # (ë…¶; ë…¶; á„‚á…¨á‡; ë…¶; á„‚á…¨á‡; ) HANGUL SYLLABLE NYEP
+B177;B177;1102 1168 11C2;B177;1102 1168 11C2; # (녷; 녷; 녷; 녷; 녷; ) HANGUL SYLLABLE NYEH
+B178;B178;1102 1169;B178;1102 1169; # (ë…¸; ë…¸; á„‚á…©; ë…¸; á„‚á…©; ) HANGUL SYLLABLE NO
+B179;B179;1102 1169 11A8;B179;1102 1169 11A8; # (녹; 녹; 녹; 녹; 녹; ) HANGUL SYLLABLE NOG
+B17A;B17A;1102 1169 11A9;B17A;1102 1169 11A9; # (녺; 녺; 녺; 녺; 녺; ) HANGUL SYLLABLE NOGG
+B17B;B17B;1102 1169 11AA;B17B;1102 1169 11AA; # (녻; 녻; 녻; 녻; 녻; ) HANGUL SYLLABLE NOGS
+B17C;B17C;1102 1169 11AB;B17C;1102 1169 11AB; # (논; 논; 논; 논; 논; ) HANGUL SYLLABLE NON
+B17D;B17D;1102 1169 11AC;B17D;1102 1169 11AC; # (녽; 녽; 녽; 녽; 녽; ) HANGUL SYLLABLE NONJ
+B17E;B17E;1102 1169 11AD;B17E;1102 1169 11AD; # (녾; 녾; 녾; 녾; 녾; ) HANGUL SYLLABLE NONH
+B17F;B17F;1102 1169 11AE;B17F;1102 1169 11AE; # (녿; 녿; 녿; 녿; 녿; ) HANGUL SYLLABLE NOD
+B180;B180;1102 1169 11AF;B180;1102 1169 11AF; # (놀; 놀; 놀; 놀; 놀; ) HANGUL SYLLABLE NOL
+B181;B181;1102 1169 11B0;B181;1102 1169 11B0; # (ë†; ë†; 놁; ë†; 놁; ) HANGUL SYLLABLE NOLG
+B182;B182;1102 1169 11B1;B182;1102 1169 11B1; # (놂; 놂; 놂; 놂; 놂; ) HANGUL SYLLABLE NOLM
+B183;B183;1102 1169 11B2;B183;1102 1169 11B2; # (놃; 놃; 놃; 놃; 놃; ) HANGUL SYLLABLE NOLB
+B184;B184;1102 1169 11B3;B184;1102 1169 11B3; # (놄; 놄; 놄; 놄; 놄; ) HANGUL SYLLABLE NOLS
+B185;B185;1102 1169 11B4;B185;1102 1169 11B4; # (놅; 놅; 놅; 놅; 놅; ) HANGUL SYLLABLE NOLT
+B186;B186;1102 1169 11B5;B186;1102 1169 11B5; # (놆; 놆; 놆; 놆; 놆; ) HANGUL SYLLABLE NOLP
+B187;B187;1102 1169 11B6;B187;1102 1169 11B6; # (놇; 놇; 놇; 놇; 놇; ) HANGUL SYLLABLE NOLH
+B188;B188;1102 1169 11B7;B188;1102 1169 11B7; # (놈; 놈; 놈; 놈; 놈; ) HANGUL SYLLABLE NOM
+B189;B189;1102 1169 11B8;B189;1102 1169 11B8; # (놉; 놉; 놉; 놉; 놉; ) HANGUL SYLLABLE NOB
+B18A;B18A;1102 1169 11B9;B18A;1102 1169 11B9; # (놊; 놊; 놊; 놊; 놊; ) HANGUL SYLLABLE NOBS
+B18B;B18B;1102 1169 11BA;B18B;1102 1169 11BA; # (놋; 놋; 놋; 놋; 놋; ) HANGUL SYLLABLE NOS
+B18C;B18C;1102 1169 11BB;B18C;1102 1169 11BB; # (놌; 놌; 놌; 놌; 놌; ) HANGUL SYLLABLE NOSS
+B18D;B18D;1102 1169 11BC;B18D;1102 1169 11BC; # (ë†; ë†; 농; ë†; 농; ) HANGUL SYLLABLE NONG
+B18E;B18E;1102 1169 11BD;B18E;1102 1169 11BD; # (놎; 놎; 놎; 놎; 놎; ) HANGUL SYLLABLE NOJ
+B18F;B18F;1102 1169 11BE;B18F;1102 1169 11BE; # (ë†; ë†; 놏; ë†; 놏; ) HANGUL SYLLABLE NOC
+B190;B190;1102 1169 11BF;B190;1102 1169 11BF; # (ë†; ë†; 놐; ë†; 놐; ) HANGUL SYLLABLE NOK
+B191;B191;1102 1169 11C0;B191;1102 1169 11C0; # (놑; 놑; 놑; 놑; 놑; ) HANGUL SYLLABLE NOT
+B192;B192;1102 1169 11C1;B192;1102 1169 11C1; # (높; 높; á„‚á…©á‡; 높; á„‚á…©á‡; ) HANGUL SYLLABLE NOP
+B193;B193;1102 1169 11C2;B193;1102 1169 11C2; # (놓; 놓; 놓; 놓; 놓; ) HANGUL SYLLABLE NOH
+B194;B194;1102 116A;B194;1102 116A; # (놔; 놔; 놔; 놔; 놔; ) HANGUL SYLLABLE NWA
+B195;B195;1102 116A 11A8;B195;1102 116A 11A8; # (놕; 놕; 놕; 놕; 놕; ) HANGUL SYLLABLE NWAG
+B196;B196;1102 116A 11A9;B196;1102 116A 11A9; # (놖; 놖; 놖; 놖; 놖; ) HANGUL SYLLABLE NWAGG
+B197;B197;1102 116A 11AA;B197;1102 116A 11AA; # (놗; 놗; 놗; 놗; 놗; ) HANGUL SYLLABLE NWAGS
+B198;B198;1102 116A 11AB;B198;1102 116A 11AB; # (놘; 놘; 놘; 놘; 놘; ) HANGUL SYLLABLE NWAN
+B199;B199;1102 116A 11AC;B199;1102 116A 11AC; # (놙; 놙; 놙; 놙; 놙; ) HANGUL SYLLABLE NWANJ
+B19A;B19A;1102 116A 11AD;B19A;1102 116A 11AD; # (놚; 놚; 놚; 놚; 놚; ) HANGUL SYLLABLE NWANH
+B19B;B19B;1102 116A 11AE;B19B;1102 116A 11AE; # (놛; 놛; 놛; 놛; 놛; ) HANGUL SYLLABLE NWAD
+B19C;B19C;1102 116A 11AF;B19C;1102 116A 11AF; # (놜; 놜; 놜; 놜; 놜; ) HANGUL SYLLABLE NWAL
+B19D;B19D;1102 116A 11B0;B19D;1102 116A 11B0; # (ë†; ë†; 놝; ë†; 놝; ) HANGUL SYLLABLE NWALG
+B19E;B19E;1102 116A 11B1;B19E;1102 116A 11B1; # (놞; 놞; 놞; 놞; 놞; ) HANGUL SYLLABLE NWALM
+B19F;B19F;1102 116A 11B2;B19F;1102 116A 11B2; # (놟; 놟; 놟; 놟; 놟; ) HANGUL SYLLABLE NWALB
+B1A0;B1A0;1102 116A 11B3;B1A0;1102 116A 11B3; # (놠; 놠; 놠; 놠; 놠; ) HANGUL SYLLABLE NWALS
+B1A1;B1A1;1102 116A 11B4;B1A1;1102 116A 11B4; # (놡; 놡; 놡; 놡; 놡; ) HANGUL SYLLABLE NWALT
+B1A2;B1A2;1102 116A 11B5;B1A2;1102 116A 11B5; # (놢; 놢; 놢; 놢; 놢; ) HANGUL SYLLABLE NWALP
+B1A3;B1A3;1102 116A 11B6;B1A3;1102 116A 11B6; # (놣; 놣; 놣; 놣; 놣; ) HANGUL SYLLABLE NWALH
+B1A4;B1A4;1102 116A 11B7;B1A4;1102 116A 11B7; # (놤; 놤; 놤; 놤; 놤; ) HANGUL SYLLABLE NWAM
+B1A5;B1A5;1102 116A 11B8;B1A5;1102 116A 11B8; # (놥; 놥; 놥; 놥; 놥; ) HANGUL SYLLABLE NWAB
+B1A6;B1A6;1102 116A 11B9;B1A6;1102 116A 11B9; # (놦; 놦; 놦; 놦; 놦; ) HANGUL SYLLABLE NWABS
+B1A7;B1A7;1102 116A 11BA;B1A7;1102 116A 11BA; # (놧; 놧; 놧; 놧; 놧; ) HANGUL SYLLABLE NWAS
+B1A8;B1A8;1102 116A 11BB;B1A8;1102 116A 11BB; # (놨; 놨; 놨; 놨; 놨; ) HANGUL SYLLABLE NWASS
+B1A9;B1A9;1102 116A 11BC;B1A9;1102 116A 11BC; # (놩; 놩; 놩; 놩; 놩; ) HANGUL SYLLABLE NWANG
+B1AA;B1AA;1102 116A 11BD;B1AA;1102 116A 11BD; # (놪; 놪; 놪; 놪; 놪; ) HANGUL SYLLABLE NWAJ
+B1AB;B1AB;1102 116A 11BE;B1AB;1102 116A 11BE; # (놫; 놫; 놫; 놫; 놫; ) HANGUL SYLLABLE NWAC
+B1AC;B1AC;1102 116A 11BF;B1AC;1102 116A 11BF; # (놬; 놬; 놬; 놬; 놬; ) HANGUL SYLLABLE NWAK
+B1AD;B1AD;1102 116A 11C0;B1AD;1102 116A 11C0; # (놭; 놭; 놭; 놭; 놭; ) HANGUL SYLLABLE NWAT
+B1AE;B1AE;1102 116A 11C1;B1AE;1102 116A 11C1; # (놮; 놮; á„‚á…ªá‡; 놮; á„‚á…ªá‡; ) HANGUL SYLLABLE NWAP
+B1AF;B1AF;1102 116A 11C2;B1AF;1102 116A 11C2; # (놯; 놯; 놯; 놯; 놯; ) HANGUL SYLLABLE NWAH
+B1B0;B1B0;1102 116B;B1B0;1102 116B; # (놰; 놰; 놰; 놰; 놰; ) HANGUL SYLLABLE NWAE
+B1B1;B1B1;1102 116B 11A8;B1B1;1102 116B 11A8; # (놱; 놱; 놱; 놱; 놱; ) HANGUL SYLLABLE NWAEG
+B1B2;B1B2;1102 116B 11A9;B1B2;1102 116B 11A9; # (놲; 놲; 놲; 놲; 놲; ) HANGUL SYLLABLE NWAEGG
+B1B3;B1B3;1102 116B 11AA;B1B3;1102 116B 11AA; # (놳; 놳; 놳; 놳; 놳; ) HANGUL SYLLABLE NWAEGS
+B1B4;B1B4;1102 116B 11AB;B1B4;1102 116B 11AB; # (놴; 놴; 놴; 놴; 놴; ) HANGUL SYLLABLE NWAEN
+B1B5;B1B5;1102 116B 11AC;B1B5;1102 116B 11AC; # (놵; 놵; 놵; 놵; 놵; ) HANGUL SYLLABLE NWAENJ
+B1B6;B1B6;1102 116B 11AD;B1B6;1102 116B 11AD; # (놶; 놶; 놶; 놶; 놶; ) HANGUL SYLLABLE NWAENH
+B1B7;B1B7;1102 116B 11AE;B1B7;1102 116B 11AE; # (놷; 놷; 놷; 놷; 놷; ) HANGUL SYLLABLE NWAED
+B1B8;B1B8;1102 116B 11AF;B1B8;1102 116B 11AF; # (놸; 놸; 놸; 놸; 놸; ) HANGUL SYLLABLE NWAEL
+B1B9;B1B9;1102 116B 11B0;B1B9;1102 116B 11B0; # (놹; 놹; 놹; 놹; 놹; ) HANGUL SYLLABLE NWAELG
+B1BA;B1BA;1102 116B 11B1;B1BA;1102 116B 11B1; # (놺; 놺; 놺; 놺; 놺; ) HANGUL SYLLABLE NWAELM
+B1BB;B1BB;1102 116B 11B2;B1BB;1102 116B 11B2; # (놻; 놻; 놻; 놻; 놻; ) HANGUL SYLLABLE NWAELB
+B1BC;B1BC;1102 116B 11B3;B1BC;1102 116B 11B3; # (놼; 놼; 놼; 놼; 놼; ) HANGUL SYLLABLE NWAELS
+B1BD;B1BD;1102 116B 11B4;B1BD;1102 116B 11B4; # (놽; 놽; 놽; 놽; 놽; ) HANGUL SYLLABLE NWAELT
+B1BE;B1BE;1102 116B 11B5;B1BE;1102 116B 11B5; # (놾; 놾; 놾; 놾; 놾; ) HANGUL SYLLABLE NWAELP
+B1BF;B1BF;1102 116B 11B6;B1BF;1102 116B 11B6; # (놿; 놿; 놿; 놿; 놿; ) HANGUL SYLLABLE NWAELH
+B1C0;B1C0;1102 116B 11B7;B1C0;1102 116B 11B7; # (뇀; 뇀; 뇀; 뇀; 뇀; ) HANGUL SYLLABLE NWAEM
+B1C1;B1C1;1102 116B 11B8;B1C1;1102 116B 11B8; # (ë‡; ë‡; 뇁; ë‡; 뇁; ) HANGUL SYLLABLE NWAEB
+B1C2;B1C2;1102 116B 11B9;B1C2;1102 116B 11B9; # (뇂; 뇂; 뇂; 뇂; 뇂; ) HANGUL SYLLABLE NWAEBS
+B1C3;B1C3;1102 116B 11BA;B1C3;1102 116B 11BA; # (뇃; 뇃; 뇃; 뇃; 뇃; ) HANGUL SYLLABLE NWAES
+B1C4;B1C4;1102 116B 11BB;B1C4;1102 116B 11BB; # (뇄; 뇄; 뇄; 뇄; 뇄; ) HANGUL SYLLABLE NWAESS
+B1C5;B1C5;1102 116B 11BC;B1C5;1102 116B 11BC; # (뇅; 뇅; 뇅; 뇅; 뇅; ) HANGUL SYLLABLE NWAENG
+B1C6;B1C6;1102 116B 11BD;B1C6;1102 116B 11BD; # (뇆; 뇆; 뇆; 뇆; 뇆; ) HANGUL SYLLABLE NWAEJ
+B1C7;B1C7;1102 116B 11BE;B1C7;1102 116B 11BE; # (뇇; 뇇; 뇇; 뇇; 뇇; ) HANGUL SYLLABLE NWAEC
+B1C8;B1C8;1102 116B 11BF;B1C8;1102 116B 11BF; # (뇈; 뇈; 뇈; 뇈; 뇈; ) HANGUL SYLLABLE NWAEK
+B1C9;B1C9;1102 116B 11C0;B1C9;1102 116B 11C0; # (뇉; 뇉; 뇉; 뇉; 뇉; ) HANGUL SYLLABLE NWAET
+B1CA;B1CA;1102 116B 11C1;B1CA;1102 116B 11C1; # (뇊; 뇊; á„‚á…«á‡; 뇊; á„‚á…«á‡; ) HANGUL SYLLABLE NWAEP
+B1CB;B1CB;1102 116B 11C2;B1CB;1102 116B 11C2; # (뇋; 뇋; 뇋; 뇋; 뇋; ) HANGUL SYLLABLE NWAEH
+B1CC;B1CC;1102 116C;B1CC;1102 116C; # (뇌; 뇌; 뇌; 뇌; 뇌; ) HANGUL SYLLABLE NOE
+B1CD;B1CD;1102 116C 11A8;B1CD;1102 116C 11A8; # (ë‡; ë‡; 뇍; ë‡; 뇍; ) HANGUL SYLLABLE NOEG
+B1CE;B1CE;1102 116C 11A9;B1CE;1102 116C 11A9; # (뇎; 뇎; 뇎; 뇎; 뇎; ) HANGUL SYLLABLE NOEGG
+B1CF;B1CF;1102 116C 11AA;B1CF;1102 116C 11AA; # (ë‡; ë‡; 뇏; ë‡; 뇏; ) HANGUL SYLLABLE NOEGS
+B1D0;B1D0;1102 116C 11AB;B1D0;1102 116C 11AB; # (ë‡; ë‡; 뇐; ë‡; 뇐; ) HANGUL SYLLABLE NOEN
+B1D1;B1D1;1102 116C 11AC;B1D1;1102 116C 11AC; # (뇑; 뇑; 뇑; 뇑; 뇑; ) HANGUL SYLLABLE NOENJ
+B1D2;B1D2;1102 116C 11AD;B1D2;1102 116C 11AD; # (뇒; 뇒; 뇒; 뇒; 뇒; ) HANGUL SYLLABLE NOENH
+B1D3;B1D3;1102 116C 11AE;B1D3;1102 116C 11AE; # (뇓; 뇓; 뇓; 뇓; 뇓; ) HANGUL SYLLABLE NOED
+B1D4;B1D4;1102 116C 11AF;B1D4;1102 116C 11AF; # (뇔; 뇔; 뇔; 뇔; 뇔; ) HANGUL SYLLABLE NOEL
+B1D5;B1D5;1102 116C 11B0;B1D5;1102 116C 11B0; # (뇕; 뇕; 뇕; 뇕; 뇕; ) HANGUL SYLLABLE NOELG
+B1D6;B1D6;1102 116C 11B1;B1D6;1102 116C 11B1; # (뇖; 뇖; 뇖; 뇖; 뇖; ) HANGUL SYLLABLE NOELM
+B1D7;B1D7;1102 116C 11B2;B1D7;1102 116C 11B2; # (뇗; 뇗; 뇗; 뇗; 뇗; ) HANGUL SYLLABLE NOELB
+B1D8;B1D8;1102 116C 11B3;B1D8;1102 116C 11B3; # (뇘; 뇘; 뇘; 뇘; 뇘; ) HANGUL SYLLABLE NOELS
+B1D9;B1D9;1102 116C 11B4;B1D9;1102 116C 11B4; # (뇙; 뇙; 뇙; 뇙; 뇙; ) HANGUL SYLLABLE NOELT
+B1DA;B1DA;1102 116C 11B5;B1DA;1102 116C 11B5; # (뇚; 뇚; 뇚; 뇚; 뇚; ) HANGUL SYLLABLE NOELP
+B1DB;B1DB;1102 116C 11B6;B1DB;1102 116C 11B6; # (뇛; 뇛; 뇛; 뇛; 뇛; ) HANGUL SYLLABLE NOELH
+B1DC;B1DC;1102 116C 11B7;B1DC;1102 116C 11B7; # (뇜; 뇜; 뇜; 뇜; 뇜; ) HANGUL SYLLABLE NOEM
+B1DD;B1DD;1102 116C 11B8;B1DD;1102 116C 11B8; # (ë‡; ë‡; 뇝; ë‡; 뇝; ) HANGUL SYLLABLE NOEB
+B1DE;B1DE;1102 116C 11B9;B1DE;1102 116C 11B9; # (뇞; 뇞; 뇞; 뇞; 뇞; ) HANGUL SYLLABLE NOEBS
+B1DF;B1DF;1102 116C 11BA;B1DF;1102 116C 11BA; # (뇟; 뇟; 뇟; 뇟; 뇟; ) HANGUL SYLLABLE NOES
+B1E0;B1E0;1102 116C 11BB;B1E0;1102 116C 11BB; # (뇠; 뇠; 뇠; 뇠; 뇠; ) HANGUL SYLLABLE NOESS
+B1E1;B1E1;1102 116C 11BC;B1E1;1102 116C 11BC; # (뇡; 뇡; 뇡; 뇡; 뇡; ) HANGUL SYLLABLE NOENG
+B1E2;B1E2;1102 116C 11BD;B1E2;1102 116C 11BD; # (뇢; 뇢; 뇢; 뇢; 뇢; ) HANGUL SYLLABLE NOEJ
+B1E3;B1E3;1102 116C 11BE;B1E3;1102 116C 11BE; # (뇣; 뇣; 뇣; 뇣; 뇣; ) HANGUL SYLLABLE NOEC
+B1E4;B1E4;1102 116C 11BF;B1E4;1102 116C 11BF; # (뇤; 뇤; 뇤; 뇤; 뇤; ) HANGUL SYLLABLE NOEK
+B1E5;B1E5;1102 116C 11C0;B1E5;1102 116C 11C0; # (뇥; 뇥; 뇥; 뇥; 뇥; ) HANGUL SYLLABLE NOET
+B1E6;B1E6;1102 116C 11C1;B1E6;1102 116C 11C1; # (뇦; 뇦; á„‚á…¬á‡; 뇦; á„‚á…¬á‡; ) HANGUL SYLLABLE NOEP
+B1E7;B1E7;1102 116C 11C2;B1E7;1102 116C 11C2; # (뇧; 뇧; 뇧; 뇧; 뇧; ) HANGUL SYLLABLE NOEH
+B1E8;B1E8;1102 116D;B1E8;1102 116D; # (뇨; 뇨; 뇨; 뇨; 뇨; ) HANGUL SYLLABLE NYO
+B1E9;B1E9;1102 116D 11A8;B1E9;1102 116D 11A8; # (뇩; 뇩; 뇩; 뇩; 뇩; ) HANGUL SYLLABLE NYOG
+B1EA;B1EA;1102 116D 11A9;B1EA;1102 116D 11A9; # (뇪; 뇪; 뇪; 뇪; 뇪; ) HANGUL SYLLABLE NYOGG
+B1EB;B1EB;1102 116D 11AA;B1EB;1102 116D 11AA; # (뇫; 뇫; 뇫; 뇫; 뇫; ) HANGUL SYLLABLE NYOGS
+B1EC;B1EC;1102 116D 11AB;B1EC;1102 116D 11AB; # (뇬; 뇬; 뇬; 뇬; 뇬; ) HANGUL SYLLABLE NYON
+B1ED;B1ED;1102 116D 11AC;B1ED;1102 116D 11AC; # (뇭; 뇭; 뇭; 뇭; 뇭; ) HANGUL SYLLABLE NYONJ
+B1EE;B1EE;1102 116D 11AD;B1EE;1102 116D 11AD; # (뇮; 뇮; 뇮; 뇮; 뇮; ) HANGUL SYLLABLE NYONH
+B1EF;B1EF;1102 116D 11AE;B1EF;1102 116D 11AE; # (뇯; 뇯; 뇯; 뇯; 뇯; ) HANGUL SYLLABLE NYOD
+B1F0;B1F0;1102 116D 11AF;B1F0;1102 116D 11AF; # (뇰; 뇰; 뇰; 뇰; 뇰; ) HANGUL SYLLABLE NYOL
+B1F1;B1F1;1102 116D 11B0;B1F1;1102 116D 11B0; # (뇱; 뇱; 뇱; 뇱; 뇱; ) HANGUL SYLLABLE NYOLG
+B1F2;B1F2;1102 116D 11B1;B1F2;1102 116D 11B1; # (뇲; 뇲; 뇲; 뇲; 뇲; ) HANGUL SYLLABLE NYOLM
+B1F3;B1F3;1102 116D 11B2;B1F3;1102 116D 11B2; # (뇳; 뇳; 뇳; 뇳; 뇳; ) HANGUL SYLLABLE NYOLB
+B1F4;B1F4;1102 116D 11B3;B1F4;1102 116D 11B3; # (뇴; 뇴; 뇴; 뇴; 뇴; ) HANGUL SYLLABLE NYOLS
+B1F5;B1F5;1102 116D 11B4;B1F5;1102 116D 11B4; # (뇵; 뇵; 뇵; 뇵; 뇵; ) HANGUL SYLLABLE NYOLT
+B1F6;B1F6;1102 116D 11B5;B1F6;1102 116D 11B5; # (뇶; 뇶; 뇶; 뇶; 뇶; ) HANGUL SYLLABLE NYOLP
+B1F7;B1F7;1102 116D 11B6;B1F7;1102 116D 11B6; # (뇷; 뇷; 뇷; 뇷; 뇷; ) HANGUL SYLLABLE NYOLH
+B1F8;B1F8;1102 116D 11B7;B1F8;1102 116D 11B7; # (뇸; 뇸; 뇸; 뇸; 뇸; ) HANGUL SYLLABLE NYOM
+B1F9;B1F9;1102 116D 11B8;B1F9;1102 116D 11B8; # (뇹; 뇹; 뇹; 뇹; 뇹; ) HANGUL SYLLABLE NYOB
+B1FA;B1FA;1102 116D 11B9;B1FA;1102 116D 11B9; # (뇺; 뇺; 뇺; 뇺; 뇺; ) HANGUL SYLLABLE NYOBS
+B1FB;B1FB;1102 116D 11BA;B1FB;1102 116D 11BA; # (뇻; 뇻; 뇻; 뇻; 뇻; ) HANGUL SYLLABLE NYOS
+B1FC;B1FC;1102 116D 11BB;B1FC;1102 116D 11BB; # (뇼; 뇼; 뇼; 뇼; 뇼; ) HANGUL SYLLABLE NYOSS
+B1FD;B1FD;1102 116D 11BC;B1FD;1102 116D 11BC; # (뇽; 뇽; 뇽; 뇽; 뇽; ) HANGUL SYLLABLE NYONG
+B1FE;B1FE;1102 116D 11BD;B1FE;1102 116D 11BD; # (뇾; 뇾; 뇾; 뇾; 뇾; ) HANGUL SYLLABLE NYOJ
+B1FF;B1FF;1102 116D 11BE;B1FF;1102 116D 11BE; # (뇿; 뇿; 뇿; 뇿; 뇿; ) HANGUL SYLLABLE NYOC
+B200;B200;1102 116D 11BF;B200;1102 116D 11BF; # (눀; 눀; 눀; 눀; 눀; ) HANGUL SYLLABLE NYOK
+B201;B201;1102 116D 11C0;B201;1102 116D 11C0; # (ëˆ; ëˆ; 눁; ëˆ; 눁; ) HANGUL SYLLABLE NYOT
+B202;B202;1102 116D 11C1;B202;1102 116D 11C1; # (눂; 눂; á„‚á…­á‡; 눂; á„‚á…­á‡; ) HANGUL SYLLABLE NYOP
+B203;B203;1102 116D 11C2;B203;1102 116D 11C2; # (눃; 눃; 눃; 눃; 눃; ) HANGUL SYLLABLE NYOH
+B204;B204;1102 116E;B204;1102 116E; # (누; 누; 누; 누; 누; ) HANGUL SYLLABLE NU
+B205;B205;1102 116E 11A8;B205;1102 116E 11A8; # (눅; 눅; 눅; 눅; 눅; ) HANGUL SYLLABLE NUG
+B206;B206;1102 116E 11A9;B206;1102 116E 11A9; # (눆; 눆; 눆; 눆; 눆; ) HANGUL SYLLABLE NUGG
+B207;B207;1102 116E 11AA;B207;1102 116E 11AA; # (눇; 눇; 눇; 눇; 눇; ) HANGUL SYLLABLE NUGS
+B208;B208;1102 116E 11AB;B208;1102 116E 11AB; # (눈; 눈; 눈; 눈; 눈; ) HANGUL SYLLABLE NUN
+B209;B209;1102 116E 11AC;B209;1102 116E 11AC; # (눉; 눉; 눉; 눉; 눉; ) HANGUL SYLLABLE NUNJ
+B20A;B20A;1102 116E 11AD;B20A;1102 116E 11AD; # (눊; 눊; 눊; 눊; 눊; ) HANGUL SYLLABLE NUNH
+B20B;B20B;1102 116E 11AE;B20B;1102 116E 11AE; # (눋; 눋; 눋; 눋; 눋; ) HANGUL SYLLABLE NUD
+B20C;B20C;1102 116E 11AF;B20C;1102 116E 11AF; # (눌; 눌; 눌; 눌; 눌; ) HANGUL SYLLABLE NUL
+B20D;B20D;1102 116E 11B0;B20D;1102 116E 11B0; # (ëˆ; ëˆ; 눍; ëˆ; 눍; ) HANGUL SYLLABLE NULG
+B20E;B20E;1102 116E 11B1;B20E;1102 116E 11B1; # (눎; 눎; 눎; 눎; 눎; ) HANGUL SYLLABLE NULM
+B20F;B20F;1102 116E 11B2;B20F;1102 116E 11B2; # (ëˆ; ëˆ; 눏; ëˆ; 눏; ) HANGUL SYLLABLE NULB
+B210;B210;1102 116E 11B3;B210;1102 116E 11B3; # (ëˆ; ëˆ; 눐; ëˆ; 눐; ) HANGUL SYLLABLE NULS
+B211;B211;1102 116E 11B4;B211;1102 116E 11B4; # (눑; 눑; 눑; 눑; 눑; ) HANGUL SYLLABLE NULT
+B212;B212;1102 116E 11B5;B212;1102 116E 11B5; # (눒; 눒; 눒; 눒; 눒; ) HANGUL SYLLABLE NULP
+B213;B213;1102 116E 11B6;B213;1102 116E 11B6; # (눓; 눓; 눓; 눓; 눓; ) HANGUL SYLLABLE NULH
+B214;B214;1102 116E 11B7;B214;1102 116E 11B7; # (눔; 눔; 눔; 눔; 눔; ) HANGUL SYLLABLE NUM
+B215;B215;1102 116E 11B8;B215;1102 116E 11B8; # (눕; 눕; 눕; 눕; 눕; ) HANGUL SYLLABLE NUB
+B216;B216;1102 116E 11B9;B216;1102 116E 11B9; # (눖; 눖; 눖; 눖; 눖; ) HANGUL SYLLABLE NUBS
+B217;B217;1102 116E 11BA;B217;1102 116E 11BA; # (눗; 눗; 눗; 눗; 눗; ) HANGUL SYLLABLE NUS
+B218;B218;1102 116E 11BB;B218;1102 116E 11BB; # (눘; 눘; 눘; 눘; 눘; ) HANGUL SYLLABLE NUSS
+B219;B219;1102 116E 11BC;B219;1102 116E 11BC; # (눙; 눙; 눙; 눙; 눙; ) HANGUL SYLLABLE NUNG
+B21A;B21A;1102 116E 11BD;B21A;1102 116E 11BD; # (눚; 눚; 눚; 눚; 눚; ) HANGUL SYLLABLE NUJ
+B21B;B21B;1102 116E 11BE;B21B;1102 116E 11BE; # (눛; 눛; 눛; 눛; 눛; ) HANGUL SYLLABLE NUC
+B21C;B21C;1102 116E 11BF;B21C;1102 116E 11BF; # (눜; 눜; 눜; 눜; 눜; ) HANGUL SYLLABLE NUK
+B21D;B21D;1102 116E 11C0;B21D;1102 116E 11C0; # (ëˆ; ëˆ; 눝; ëˆ; 눝; ) HANGUL SYLLABLE NUT
+B21E;B21E;1102 116E 11C1;B21E;1102 116E 11C1; # (눞; 눞; á„‚á…®á‡; 눞; á„‚á…®á‡; ) HANGUL SYLLABLE NUP
+B21F;B21F;1102 116E 11C2;B21F;1102 116E 11C2; # (눟; 눟; 눟; 눟; 눟; ) HANGUL SYLLABLE NUH
+B220;B220;1102 116F;B220;1102 116F; # (눠; 눠; 눠; 눠; 눠; ) HANGUL SYLLABLE NWEO
+B221;B221;1102 116F 11A8;B221;1102 116F 11A8; # (눡; 눡; 눡; 눡; 눡; ) HANGUL SYLLABLE NWEOG
+B222;B222;1102 116F 11A9;B222;1102 116F 11A9; # (눢; 눢; 눢; 눢; 눢; ) HANGUL SYLLABLE NWEOGG
+B223;B223;1102 116F 11AA;B223;1102 116F 11AA; # (눣; 눣; 눣; 눣; 눣; ) HANGUL SYLLABLE NWEOGS
+B224;B224;1102 116F 11AB;B224;1102 116F 11AB; # (눤; 눤; 눤; 눤; 눤; ) HANGUL SYLLABLE NWEON
+B225;B225;1102 116F 11AC;B225;1102 116F 11AC; # (눥; 눥; 눥; 눥; 눥; ) HANGUL SYLLABLE NWEONJ
+B226;B226;1102 116F 11AD;B226;1102 116F 11AD; # (눦; 눦; 눦; 눦; 눦; ) HANGUL SYLLABLE NWEONH
+B227;B227;1102 116F 11AE;B227;1102 116F 11AE; # (눧; 눧; 눧; 눧; 눧; ) HANGUL SYLLABLE NWEOD
+B228;B228;1102 116F 11AF;B228;1102 116F 11AF; # (눨; 눨; 눨; 눨; 눨; ) HANGUL SYLLABLE NWEOL
+B229;B229;1102 116F 11B0;B229;1102 116F 11B0; # (눩; 눩; 눩; 눩; 눩; ) HANGUL SYLLABLE NWEOLG
+B22A;B22A;1102 116F 11B1;B22A;1102 116F 11B1; # (눪; 눪; 눪; 눪; 눪; ) HANGUL SYLLABLE NWEOLM
+B22B;B22B;1102 116F 11B2;B22B;1102 116F 11B2; # (눫; 눫; 눫; 눫; 눫; ) HANGUL SYLLABLE NWEOLB
+B22C;B22C;1102 116F 11B3;B22C;1102 116F 11B3; # (눬; 눬; 눬; 눬; 눬; ) HANGUL SYLLABLE NWEOLS
+B22D;B22D;1102 116F 11B4;B22D;1102 116F 11B4; # (눭; 눭; 눭; 눭; 눭; ) HANGUL SYLLABLE NWEOLT
+B22E;B22E;1102 116F 11B5;B22E;1102 116F 11B5; # (눮; 눮; 눮; 눮; 눮; ) HANGUL SYLLABLE NWEOLP
+B22F;B22F;1102 116F 11B6;B22F;1102 116F 11B6; # (눯; 눯; 눯; 눯; 눯; ) HANGUL SYLLABLE NWEOLH
+B230;B230;1102 116F 11B7;B230;1102 116F 11B7; # (눰; 눰; 눰; 눰; 눰; ) HANGUL SYLLABLE NWEOM
+B231;B231;1102 116F 11B8;B231;1102 116F 11B8; # (눱; 눱; 눱; 눱; 눱; ) HANGUL SYLLABLE NWEOB
+B232;B232;1102 116F 11B9;B232;1102 116F 11B9; # (눲; 눲; 눲; 눲; 눲; ) HANGUL SYLLABLE NWEOBS
+B233;B233;1102 116F 11BA;B233;1102 116F 11BA; # (눳; 눳; 눳; 눳; 눳; ) HANGUL SYLLABLE NWEOS
+B234;B234;1102 116F 11BB;B234;1102 116F 11BB; # (눴; 눴; 눴; 눴; 눴; ) HANGUL SYLLABLE NWEOSS
+B235;B235;1102 116F 11BC;B235;1102 116F 11BC; # (눵; 눵; 눵; 눵; 눵; ) HANGUL SYLLABLE NWEONG
+B236;B236;1102 116F 11BD;B236;1102 116F 11BD; # (눶; 눶; 눶; 눶; 눶; ) HANGUL SYLLABLE NWEOJ
+B237;B237;1102 116F 11BE;B237;1102 116F 11BE; # (눷; 눷; 눷; 눷; 눷; ) HANGUL SYLLABLE NWEOC
+B238;B238;1102 116F 11BF;B238;1102 116F 11BF; # (눸; 눸; 눸; 눸; 눸; ) HANGUL SYLLABLE NWEOK
+B239;B239;1102 116F 11C0;B239;1102 116F 11C0; # (눹; 눹; 눹; 눹; 눹; ) HANGUL SYLLABLE NWEOT
+B23A;B23A;1102 116F 11C1;B23A;1102 116F 11C1; # (눺; 눺; á„‚á…¯á‡; 눺; á„‚á…¯á‡; ) HANGUL SYLLABLE NWEOP
+B23B;B23B;1102 116F 11C2;B23B;1102 116F 11C2; # (눻; 눻; 눻; 눻; 눻; ) HANGUL SYLLABLE NWEOH
+B23C;B23C;1102 1170;B23C;1102 1170; # (눼; 눼; 눼; 눼; 눼; ) HANGUL SYLLABLE NWE
+B23D;B23D;1102 1170 11A8;B23D;1102 1170 11A8; # (눽; 눽; 눽; 눽; 눽; ) HANGUL SYLLABLE NWEG
+B23E;B23E;1102 1170 11A9;B23E;1102 1170 11A9; # (눾; 눾; 눾; 눾; 눾; ) HANGUL SYLLABLE NWEGG
+B23F;B23F;1102 1170 11AA;B23F;1102 1170 11AA; # (눿; 눿; 눿; 눿; 눿; ) HANGUL SYLLABLE NWEGS
+B240;B240;1102 1170 11AB;B240;1102 1170 11AB; # (뉀; 뉀; 뉀; 뉀; 뉀; ) HANGUL SYLLABLE NWEN
+B241;B241;1102 1170 11AC;B241;1102 1170 11AC; # (ë‰; ë‰; 뉁; ë‰; 뉁; ) HANGUL SYLLABLE NWENJ
+B242;B242;1102 1170 11AD;B242;1102 1170 11AD; # (뉂; 뉂; 뉂; 뉂; 뉂; ) HANGUL SYLLABLE NWENH
+B243;B243;1102 1170 11AE;B243;1102 1170 11AE; # (뉃; 뉃; 뉃; 뉃; 뉃; ) HANGUL SYLLABLE NWED
+B244;B244;1102 1170 11AF;B244;1102 1170 11AF; # (뉄; 뉄; 뉄; 뉄; 뉄; ) HANGUL SYLLABLE NWEL
+B245;B245;1102 1170 11B0;B245;1102 1170 11B0; # (뉅; 뉅; 뉅; 뉅; 뉅; ) HANGUL SYLLABLE NWELG
+B246;B246;1102 1170 11B1;B246;1102 1170 11B1; # (뉆; 뉆; 뉆; 뉆; 뉆; ) HANGUL SYLLABLE NWELM
+B247;B247;1102 1170 11B2;B247;1102 1170 11B2; # (뉇; 뉇; 뉇; 뉇; 뉇; ) HANGUL SYLLABLE NWELB
+B248;B248;1102 1170 11B3;B248;1102 1170 11B3; # (뉈; 뉈; 뉈; 뉈; 뉈; ) HANGUL SYLLABLE NWELS
+B249;B249;1102 1170 11B4;B249;1102 1170 11B4; # (뉉; 뉉; 뉉; 뉉; 뉉; ) HANGUL SYLLABLE NWELT
+B24A;B24A;1102 1170 11B5;B24A;1102 1170 11B5; # (뉊; 뉊; 뉊; 뉊; 뉊; ) HANGUL SYLLABLE NWELP
+B24B;B24B;1102 1170 11B6;B24B;1102 1170 11B6; # (뉋; 뉋; 뉋; 뉋; 뉋; ) HANGUL SYLLABLE NWELH
+B24C;B24C;1102 1170 11B7;B24C;1102 1170 11B7; # (뉌; 뉌; 뉌; 뉌; 뉌; ) HANGUL SYLLABLE NWEM
+B24D;B24D;1102 1170 11B8;B24D;1102 1170 11B8; # (ë‰; ë‰; 뉍; ë‰; 뉍; ) HANGUL SYLLABLE NWEB
+B24E;B24E;1102 1170 11B9;B24E;1102 1170 11B9; # (뉎; 뉎; 뉎; 뉎; 뉎; ) HANGUL SYLLABLE NWEBS
+B24F;B24F;1102 1170 11BA;B24F;1102 1170 11BA; # (ë‰; ë‰; 뉏; ë‰; 뉏; ) HANGUL SYLLABLE NWES
+B250;B250;1102 1170 11BB;B250;1102 1170 11BB; # (ë‰; ë‰; 뉐; ë‰; 뉐; ) HANGUL SYLLABLE NWESS
+B251;B251;1102 1170 11BC;B251;1102 1170 11BC; # (뉑; 뉑; 뉑; 뉑; 뉑; ) HANGUL SYLLABLE NWENG
+B252;B252;1102 1170 11BD;B252;1102 1170 11BD; # (뉒; 뉒; 뉒; 뉒; 뉒; ) HANGUL SYLLABLE NWEJ
+B253;B253;1102 1170 11BE;B253;1102 1170 11BE; # (뉓; 뉓; 뉓; 뉓; 뉓; ) HANGUL SYLLABLE NWEC
+B254;B254;1102 1170 11BF;B254;1102 1170 11BF; # (뉔; 뉔; 뉔; 뉔; 뉔; ) HANGUL SYLLABLE NWEK
+B255;B255;1102 1170 11C0;B255;1102 1170 11C0; # (뉕; 뉕; 뉕; 뉕; 뉕; ) HANGUL SYLLABLE NWET
+B256;B256;1102 1170 11C1;B256;1102 1170 11C1; # (뉖; 뉖; á„‚á…°á‡; 뉖; á„‚á…°á‡; ) HANGUL SYLLABLE NWEP
+B257;B257;1102 1170 11C2;B257;1102 1170 11C2; # (뉗; 뉗; 뉗; 뉗; 뉗; ) HANGUL SYLLABLE NWEH
+B258;B258;1102 1171;B258;1102 1171; # (뉘; 뉘; 뉘; 뉘; 뉘; ) HANGUL SYLLABLE NWI
+B259;B259;1102 1171 11A8;B259;1102 1171 11A8; # (뉙; 뉙; 뉙; 뉙; 뉙; ) HANGUL SYLLABLE NWIG
+B25A;B25A;1102 1171 11A9;B25A;1102 1171 11A9; # (뉚; 뉚; 뉚; 뉚; 뉚; ) HANGUL SYLLABLE NWIGG
+B25B;B25B;1102 1171 11AA;B25B;1102 1171 11AA; # (뉛; 뉛; 뉛; 뉛; 뉛; ) HANGUL SYLLABLE NWIGS
+B25C;B25C;1102 1171 11AB;B25C;1102 1171 11AB; # (뉜; 뉜; 뉜; 뉜; 뉜; ) HANGUL SYLLABLE NWIN
+B25D;B25D;1102 1171 11AC;B25D;1102 1171 11AC; # (ë‰; ë‰; 뉝; ë‰; 뉝; ) HANGUL SYLLABLE NWINJ
+B25E;B25E;1102 1171 11AD;B25E;1102 1171 11AD; # (뉞; 뉞; 뉞; 뉞; 뉞; ) HANGUL SYLLABLE NWINH
+B25F;B25F;1102 1171 11AE;B25F;1102 1171 11AE; # (뉟; 뉟; 뉟; 뉟; 뉟; ) HANGUL SYLLABLE NWID
+B260;B260;1102 1171 11AF;B260;1102 1171 11AF; # (뉠; 뉠; 뉠; 뉠; 뉠; ) HANGUL SYLLABLE NWIL
+B261;B261;1102 1171 11B0;B261;1102 1171 11B0; # (뉡; 뉡; 뉡; 뉡; 뉡; ) HANGUL SYLLABLE NWILG
+B262;B262;1102 1171 11B1;B262;1102 1171 11B1; # (뉢; 뉢; 뉢; 뉢; 뉢; ) HANGUL SYLLABLE NWILM
+B263;B263;1102 1171 11B2;B263;1102 1171 11B2; # (뉣; 뉣; 뉣; 뉣; 뉣; ) HANGUL SYLLABLE NWILB
+B264;B264;1102 1171 11B3;B264;1102 1171 11B3; # (뉤; 뉤; 뉤; 뉤; 뉤; ) HANGUL SYLLABLE NWILS
+B265;B265;1102 1171 11B4;B265;1102 1171 11B4; # (뉥; 뉥; 뉥; 뉥; 뉥; ) HANGUL SYLLABLE NWILT
+B266;B266;1102 1171 11B5;B266;1102 1171 11B5; # (뉦; 뉦; 뉦; 뉦; 뉦; ) HANGUL SYLLABLE NWILP
+B267;B267;1102 1171 11B6;B267;1102 1171 11B6; # (뉧; 뉧; 뉧; 뉧; 뉧; ) HANGUL SYLLABLE NWILH
+B268;B268;1102 1171 11B7;B268;1102 1171 11B7; # (뉨; 뉨; 뉨; 뉨; 뉨; ) HANGUL SYLLABLE NWIM
+B269;B269;1102 1171 11B8;B269;1102 1171 11B8; # (뉩; 뉩; 뉩; 뉩; 뉩; ) HANGUL SYLLABLE NWIB
+B26A;B26A;1102 1171 11B9;B26A;1102 1171 11B9; # (뉪; 뉪; 뉪; 뉪; 뉪; ) HANGUL SYLLABLE NWIBS
+B26B;B26B;1102 1171 11BA;B26B;1102 1171 11BA; # (뉫; 뉫; 뉫; 뉫; 뉫; ) HANGUL SYLLABLE NWIS
+B26C;B26C;1102 1171 11BB;B26C;1102 1171 11BB; # (뉬; 뉬; 뉬; 뉬; 뉬; ) HANGUL SYLLABLE NWISS
+B26D;B26D;1102 1171 11BC;B26D;1102 1171 11BC; # (뉭; 뉭; 뉭; 뉭; 뉭; ) HANGUL SYLLABLE NWING
+B26E;B26E;1102 1171 11BD;B26E;1102 1171 11BD; # (뉮; 뉮; 뉮; 뉮; 뉮; ) HANGUL SYLLABLE NWIJ
+B26F;B26F;1102 1171 11BE;B26F;1102 1171 11BE; # (뉯; 뉯; 뉯; 뉯; 뉯; ) HANGUL SYLLABLE NWIC
+B270;B270;1102 1171 11BF;B270;1102 1171 11BF; # (뉰; 뉰; 뉰; 뉰; 뉰; ) HANGUL SYLLABLE NWIK
+B271;B271;1102 1171 11C0;B271;1102 1171 11C0; # (뉱; 뉱; 뉱; 뉱; 뉱; ) HANGUL SYLLABLE NWIT
+B272;B272;1102 1171 11C1;B272;1102 1171 11C1; # (뉲; 뉲; á„‚á…±á‡; 뉲; á„‚á…±á‡; ) HANGUL SYLLABLE NWIP
+B273;B273;1102 1171 11C2;B273;1102 1171 11C2; # (뉳; 뉳; 뉳; 뉳; 뉳; ) HANGUL SYLLABLE NWIH
+B274;B274;1102 1172;B274;1102 1172; # (뉴; 뉴; 뉴; 뉴; 뉴; ) HANGUL SYLLABLE NYU
+B275;B275;1102 1172 11A8;B275;1102 1172 11A8; # (뉵; 뉵; 뉵; 뉵; 뉵; ) HANGUL SYLLABLE NYUG
+B276;B276;1102 1172 11A9;B276;1102 1172 11A9; # (뉶; 뉶; 뉶; 뉶; 뉶; ) HANGUL SYLLABLE NYUGG
+B277;B277;1102 1172 11AA;B277;1102 1172 11AA; # (뉷; 뉷; 뉷; 뉷; 뉷; ) HANGUL SYLLABLE NYUGS
+B278;B278;1102 1172 11AB;B278;1102 1172 11AB; # (뉸; 뉸; 뉸; 뉸; 뉸; ) HANGUL SYLLABLE NYUN
+B279;B279;1102 1172 11AC;B279;1102 1172 11AC; # (뉹; 뉹; 뉹; 뉹; 뉹; ) HANGUL SYLLABLE NYUNJ
+B27A;B27A;1102 1172 11AD;B27A;1102 1172 11AD; # (뉺; 뉺; 뉺; 뉺; 뉺; ) HANGUL SYLLABLE NYUNH
+B27B;B27B;1102 1172 11AE;B27B;1102 1172 11AE; # (뉻; 뉻; 뉻; 뉻; 뉻; ) HANGUL SYLLABLE NYUD
+B27C;B27C;1102 1172 11AF;B27C;1102 1172 11AF; # (뉼; 뉼; 뉼; 뉼; 뉼; ) HANGUL SYLLABLE NYUL
+B27D;B27D;1102 1172 11B0;B27D;1102 1172 11B0; # (뉽; 뉽; 뉽; 뉽; 뉽; ) HANGUL SYLLABLE NYULG
+B27E;B27E;1102 1172 11B1;B27E;1102 1172 11B1; # (뉾; 뉾; 뉾; 뉾; 뉾; ) HANGUL SYLLABLE NYULM
+B27F;B27F;1102 1172 11B2;B27F;1102 1172 11B2; # (뉿; 뉿; 뉿; 뉿; 뉿; ) HANGUL SYLLABLE NYULB
+B280;B280;1102 1172 11B3;B280;1102 1172 11B3; # (늀; 늀; 늀; 늀; 늀; ) HANGUL SYLLABLE NYULS
+B281;B281;1102 1172 11B4;B281;1102 1172 11B4; # (ëŠ; ëŠ; 늁; ëŠ; 늁; ) HANGUL SYLLABLE NYULT
+B282;B282;1102 1172 11B5;B282;1102 1172 11B5; # (늂; 늂; 늂; 늂; 늂; ) HANGUL SYLLABLE NYULP
+B283;B283;1102 1172 11B6;B283;1102 1172 11B6; # (늃; 늃; 늃; 늃; 늃; ) HANGUL SYLLABLE NYULH
+B284;B284;1102 1172 11B7;B284;1102 1172 11B7; # (늄; 늄; 늄; 늄; 늄; ) HANGUL SYLLABLE NYUM
+B285;B285;1102 1172 11B8;B285;1102 1172 11B8; # (늅; 늅; 늅; 늅; 늅; ) HANGUL SYLLABLE NYUB
+B286;B286;1102 1172 11B9;B286;1102 1172 11B9; # (늆; 늆; 늆; 늆; 늆; ) HANGUL SYLLABLE NYUBS
+B287;B287;1102 1172 11BA;B287;1102 1172 11BA; # (늇; 늇; 늇; 늇; 늇; ) HANGUL SYLLABLE NYUS
+B288;B288;1102 1172 11BB;B288;1102 1172 11BB; # (늈; 늈; 늈; 늈; 늈; ) HANGUL SYLLABLE NYUSS
+B289;B289;1102 1172 11BC;B289;1102 1172 11BC; # (늉; 늉; 늉; 늉; 늉; ) HANGUL SYLLABLE NYUNG
+B28A;B28A;1102 1172 11BD;B28A;1102 1172 11BD; # (늊; 늊; 늊; 늊; 늊; ) HANGUL SYLLABLE NYUJ
+B28B;B28B;1102 1172 11BE;B28B;1102 1172 11BE; # (늋; 늋; 늋; 늋; 늋; ) HANGUL SYLLABLE NYUC
+B28C;B28C;1102 1172 11BF;B28C;1102 1172 11BF; # (늌; 늌; 늌; 늌; 늌; ) HANGUL SYLLABLE NYUK
+B28D;B28D;1102 1172 11C0;B28D;1102 1172 11C0; # (ëŠ; ëŠ; 늍; ëŠ; 늍; ) HANGUL SYLLABLE NYUT
+B28E;B28E;1102 1172 11C1;B28E;1102 1172 11C1; # (늎; 늎; á„‚á…²á‡; 늎; á„‚á…²á‡; ) HANGUL SYLLABLE NYUP
+B28F;B28F;1102 1172 11C2;B28F;1102 1172 11C2; # (ëŠ; ëŠ; 늏; ëŠ; 늏; ) HANGUL SYLLABLE NYUH
+B290;B290;1102 1173;B290;1102 1173; # (ëŠ; ëŠ; á„‚á…³; ëŠ; á„‚á…³; ) HANGUL SYLLABLE NEU
+B291;B291;1102 1173 11A8;B291;1102 1173 11A8; # (늑; 늑; 늑; 늑; 늑; ) HANGUL SYLLABLE NEUG
+B292;B292;1102 1173 11A9;B292;1102 1173 11A9; # (늒; 늒; 늒; 늒; 늒; ) HANGUL SYLLABLE NEUGG
+B293;B293;1102 1173 11AA;B293;1102 1173 11AA; # (늓; 늓; 늓; 늓; 늓; ) HANGUL SYLLABLE NEUGS
+B294;B294;1102 1173 11AB;B294;1102 1173 11AB; # (는; 는; 는; 는; 는; ) HANGUL SYLLABLE NEUN
+B295;B295;1102 1173 11AC;B295;1102 1173 11AC; # (늕; 늕; 늕; 늕; 늕; ) HANGUL SYLLABLE NEUNJ
+B296;B296;1102 1173 11AD;B296;1102 1173 11AD; # (늖; 늖; 늖; 늖; 늖; ) HANGUL SYLLABLE NEUNH
+B297;B297;1102 1173 11AE;B297;1102 1173 11AE; # (늗; 늗; 늗; 늗; 늗; ) HANGUL SYLLABLE NEUD
+B298;B298;1102 1173 11AF;B298;1102 1173 11AF; # (늘; 늘; 늘; 늘; 늘; ) HANGUL SYLLABLE NEUL
+B299;B299;1102 1173 11B0;B299;1102 1173 11B0; # (늙; 늙; 늙; 늙; 늙; ) HANGUL SYLLABLE NEULG
+B29A;B29A;1102 1173 11B1;B29A;1102 1173 11B1; # (늚; 늚; 늚; 늚; 늚; ) HANGUL SYLLABLE NEULM
+B29B;B29B;1102 1173 11B2;B29B;1102 1173 11B2; # (늛; 늛; 늛; 늛; 늛; ) HANGUL SYLLABLE NEULB
+B29C;B29C;1102 1173 11B3;B29C;1102 1173 11B3; # (늜; 늜; 늜; 늜; 늜; ) HANGUL SYLLABLE NEULS
+B29D;B29D;1102 1173 11B4;B29D;1102 1173 11B4; # (ëŠ; ëŠ; 늝; ëŠ; 늝; ) HANGUL SYLLABLE NEULT
+B29E;B29E;1102 1173 11B5;B29E;1102 1173 11B5; # (늞; 늞; 늞; 늞; 늞; ) HANGUL SYLLABLE NEULP
+B29F;B29F;1102 1173 11B6;B29F;1102 1173 11B6; # (늟; 늟; 늟; 늟; 늟; ) HANGUL SYLLABLE NEULH
+B2A0;B2A0;1102 1173 11B7;B2A0;1102 1173 11B7; # (늠; 늠; 늠; 늠; 늠; ) HANGUL SYLLABLE NEUM
+B2A1;B2A1;1102 1173 11B8;B2A1;1102 1173 11B8; # (늡; 늡; 늡; 늡; 늡; ) HANGUL SYLLABLE NEUB
+B2A2;B2A2;1102 1173 11B9;B2A2;1102 1173 11B9; # (늢; 늢; 늢; 늢; 늢; ) HANGUL SYLLABLE NEUBS
+B2A3;B2A3;1102 1173 11BA;B2A3;1102 1173 11BA; # (늣; 늣; 늣; 늣; 늣; ) HANGUL SYLLABLE NEUS
+B2A4;B2A4;1102 1173 11BB;B2A4;1102 1173 11BB; # (늤; 늤; 늤; 늤; 늤; ) HANGUL SYLLABLE NEUSS
+B2A5;B2A5;1102 1173 11BC;B2A5;1102 1173 11BC; # (능; 능; 능; 능; 능; ) HANGUL SYLLABLE NEUNG
+B2A6;B2A6;1102 1173 11BD;B2A6;1102 1173 11BD; # (늦; 늦; 늦; 늦; 늦; ) HANGUL SYLLABLE NEUJ
+B2A7;B2A7;1102 1173 11BE;B2A7;1102 1173 11BE; # (늧; 늧; 늧; 늧; 늧; ) HANGUL SYLLABLE NEUC
+B2A8;B2A8;1102 1173 11BF;B2A8;1102 1173 11BF; # (늨; 늨; 늨; 늨; 늨; ) HANGUL SYLLABLE NEUK
+B2A9;B2A9;1102 1173 11C0;B2A9;1102 1173 11C0; # (늩; 늩; 늩; 늩; 늩; ) HANGUL SYLLABLE NEUT
+B2AA;B2AA;1102 1173 11C1;B2AA;1102 1173 11C1; # (늪; 늪; á„‚á…³á‡; 늪; á„‚á…³á‡; ) HANGUL SYLLABLE NEUP
+B2AB;B2AB;1102 1173 11C2;B2AB;1102 1173 11C2; # (늫; 늫; 늫; 늫; 늫; ) HANGUL SYLLABLE NEUH
+B2AC;B2AC;1102 1174;B2AC;1102 1174; # (늬; 늬; 늬; 늬; 늬; ) HANGUL SYLLABLE NYI
+B2AD;B2AD;1102 1174 11A8;B2AD;1102 1174 11A8; # (늭; 늭; 늭; 늭; 늭; ) HANGUL SYLLABLE NYIG
+B2AE;B2AE;1102 1174 11A9;B2AE;1102 1174 11A9; # (늮; 늮; 늮; 늮; 늮; ) HANGUL SYLLABLE NYIGG
+B2AF;B2AF;1102 1174 11AA;B2AF;1102 1174 11AA; # (늯; 늯; 늯; 늯; 늯; ) HANGUL SYLLABLE NYIGS
+B2B0;B2B0;1102 1174 11AB;B2B0;1102 1174 11AB; # (늰; 늰; 늰; 늰; 늰; ) HANGUL SYLLABLE NYIN
+B2B1;B2B1;1102 1174 11AC;B2B1;1102 1174 11AC; # (늱; 늱; 늱; 늱; 늱; ) HANGUL SYLLABLE NYINJ
+B2B2;B2B2;1102 1174 11AD;B2B2;1102 1174 11AD; # (늲; 늲; 늲; 늲; 늲; ) HANGUL SYLLABLE NYINH
+B2B3;B2B3;1102 1174 11AE;B2B3;1102 1174 11AE; # (늳; 늳; 늳; 늳; 늳; ) HANGUL SYLLABLE NYID
+B2B4;B2B4;1102 1174 11AF;B2B4;1102 1174 11AF; # (늴; 늴; 늴; 늴; 늴; ) HANGUL SYLLABLE NYIL
+B2B5;B2B5;1102 1174 11B0;B2B5;1102 1174 11B0; # (늵; 늵; 늵; 늵; 늵; ) HANGUL SYLLABLE NYILG
+B2B6;B2B6;1102 1174 11B1;B2B6;1102 1174 11B1; # (늶; 늶; 늶; 늶; 늶; ) HANGUL SYLLABLE NYILM
+B2B7;B2B7;1102 1174 11B2;B2B7;1102 1174 11B2; # (늷; 늷; 늷; 늷; 늷; ) HANGUL SYLLABLE NYILB
+B2B8;B2B8;1102 1174 11B3;B2B8;1102 1174 11B3; # (늸; 늸; 늸; 늸; 늸; ) HANGUL SYLLABLE NYILS
+B2B9;B2B9;1102 1174 11B4;B2B9;1102 1174 11B4; # (늹; 늹; 늹; 늹; 늹; ) HANGUL SYLLABLE NYILT
+B2BA;B2BA;1102 1174 11B5;B2BA;1102 1174 11B5; # (늺; 늺; 늺; 늺; 늺; ) HANGUL SYLLABLE NYILP
+B2BB;B2BB;1102 1174 11B6;B2BB;1102 1174 11B6; # (늻; 늻; 늻; 늻; 늻; ) HANGUL SYLLABLE NYILH
+B2BC;B2BC;1102 1174 11B7;B2BC;1102 1174 11B7; # (늼; 늼; 늼; 늼; 늼; ) HANGUL SYLLABLE NYIM
+B2BD;B2BD;1102 1174 11B8;B2BD;1102 1174 11B8; # (늽; 늽; 늽; 늽; 늽; ) HANGUL SYLLABLE NYIB
+B2BE;B2BE;1102 1174 11B9;B2BE;1102 1174 11B9; # (늾; 늾; 늾; 늾; 늾; ) HANGUL SYLLABLE NYIBS
+B2BF;B2BF;1102 1174 11BA;B2BF;1102 1174 11BA; # (늿; 늿; 늿; 늿; 늿; ) HANGUL SYLLABLE NYIS
+B2C0;B2C0;1102 1174 11BB;B2C0;1102 1174 11BB; # (닀; 닀; 닀; 닀; 닀; ) HANGUL SYLLABLE NYISS
+B2C1;B2C1;1102 1174 11BC;B2C1;1102 1174 11BC; # (ë‹; ë‹; 닁; ë‹; 닁; ) HANGUL SYLLABLE NYING
+B2C2;B2C2;1102 1174 11BD;B2C2;1102 1174 11BD; # (닂; 닂; 닂; 닂; 닂; ) HANGUL SYLLABLE NYIJ
+B2C3;B2C3;1102 1174 11BE;B2C3;1102 1174 11BE; # (닃; 닃; 닃; 닃; 닃; ) HANGUL SYLLABLE NYIC
+B2C4;B2C4;1102 1174 11BF;B2C4;1102 1174 11BF; # (닄; 닄; 닄; 닄; 닄; ) HANGUL SYLLABLE NYIK
+B2C5;B2C5;1102 1174 11C0;B2C5;1102 1174 11C0; # (닅; 닅; 닅; 닅; 닅; ) HANGUL SYLLABLE NYIT
+B2C6;B2C6;1102 1174 11C1;B2C6;1102 1174 11C1; # (닆; 닆; á„‚á…´á‡; 닆; á„‚á…´á‡; ) HANGUL SYLLABLE NYIP
+B2C7;B2C7;1102 1174 11C2;B2C7;1102 1174 11C2; # (닇; 닇; 닇; 닇; 닇; ) HANGUL SYLLABLE NYIH
+B2C8;B2C8;1102 1175;B2C8;1102 1175; # (니; 니; 니; 니; 니; ) HANGUL SYLLABLE NI
+B2C9;B2C9;1102 1175 11A8;B2C9;1102 1175 11A8; # (닉; 닉; 닉; 닉; 닉; ) HANGUL SYLLABLE NIG
+B2CA;B2CA;1102 1175 11A9;B2CA;1102 1175 11A9; # (닊; 닊; 닊; 닊; 닊; ) HANGUL SYLLABLE NIGG
+B2CB;B2CB;1102 1175 11AA;B2CB;1102 1175 11AA; # (닋; 닋; 닋; 닋; 닋; ) HANGUL SYLLABLE NIGS
+B2CC;B2CC;1102 1175 11AB;B2CC;1102 1175 11AB; # (닌; 닌; 닌; 닌; 닌; ) HANGUL SYLLABLE NIN
+B2CD;B2CD;1102 1175 11AC;B2CD;1102 1175 11AC; # (ë‹; ë‹; 닍; ë‹; 닍; ) HANGUL SYLLABLE NINJ
+B2CE;B2CE;1102 1175 11AD;B2CE;1102 1175 11AD; # (닎; 닎; 닎; 닎; 닎; ) HANGUL SYLLABLE NINH
+B2CF;B2CF;1102 1175 11AE;B2CF;1102 1175 11AE; # (ë‹; ë‹; 닏; ë‹; 닏; ) HANGUL SYLLABLE NID
+B2D0;B2D0;1102 1175 11AF;B2D0;1102 1175 11AF; # (ë‹; ë‹; 닐; ë‹; 닐; ) HANGUL SYLLABLE NIL
+B2D1;B2D1;1102 1175 11B0;B2D1;1102 1175 11B0; # (닑; 닑; 닑; 닑; 닑; ) HANGUL SYLLABLE NILG
+B2D2;B2D2;1102 1175 11B1;B2D2;1102 1175 11B1; # (닒; 닒; 닒; 닒; 닒; ) HANGUL SYLLABLE NILM
+B2D3;B2D3;1102 1175 11B2;B2D3;1102 1175 11B2; # (닓; 닓; 닓; 닓; 닓; ) HANGUL SYLLABLE NILB
+B2D4;B2D4;1102 1175 11B3;B2D4;1102 1175 11B3; # (닔; 닔; 닔; 닔; 닔; ) HANGUL SYLLABLE NILS
+B2D5;B2D5;1102 1175 11B4;B2D5;1102 1175 11B4; # (닕; 닕; 닕; 닕; 닕; ) HANGUL SYLLABLE NILT
+B2D6;B2D6;1102 1175 11B5;B2D6;1102 1175 11B5; # (닖; 닖; 닖; 닖; 닖; ) HANGUL SYLLABLE NILP
+B2D7;B2D7;1102 1175 11B6;B2D7;1102 1175 11B6; # (닗; 닗; 닗; 닗; 닗; ) HANGUL SYLLABLE NILH
+B2D8;B2D8;1102 1175 11B7;B2D8;1102 1175 11B7; # (님; 님; 님; 님; 님; ) HANGUL SYLLABLE NIM
+B2D9;B2D9;1102 1175 11B8;B2D9;1102 1175 11B8; # (닙; 닙; 닙; 닙; 닙; ) HANGUL SYLLABLE NIB
+B2DA;B2DA;1102 1175 11B9;B2DA;1102 1175 11B9; # (닚; 닚; 닚; 닚; 닚; ) HANGUL SYLLABLE NIBS
+B2DB;B2DB;1102 1175 11BA;B2DB;1102 1175 11BA; # (닛; 닛; 닛; 닛; 닛; ) HANGUL SYLLABLE NIS
+B2DC;B2DC;1102 1175 11BB;B2DC;1102 1175 11BB; # (닜; 닜; 닜; 닜; 닜; ) HANGUL SYLLABLE NISS
+B2DD;B2DD;1102 1175 11BC;B2DD;1102 1175 11BC; # (ë‹; ë‹; 닝; ë‹; 닝; ) HANGUL SYLLABLE NING
+B2DE;B2DE;1102 1175 11BD;B2DE;1102 1175 11BD; # (닞; 닞; 닞; 닞; 닞; ) HANGUL SYLLABLE NIJ
+B2DF;B2DF;1102 1175 11BE;B2DF;1102 1175 11BE; # (닟; 닟; 닟; 닟; 닟; ) HANGUL SYLLABLE NIC
+B2E0;B2E0;1102 1175 11BF;B2E0;1102 1175 11BF; # (닠; 닠; 닠; 닠; 닠; ) HANGUL SYLLABLE NIK
+B2E1;B2E1;1102 1175 11C0;B2E1;1102 1175 11C0; # (닡; 닡; 닡; 닡; 닡; ) HANGUL SYLLABLE NIT
+B2E2;B2E2;1102 1175 11C1;B2E2;1102 1175 11C1; # (ë‹¢; ë‹¢; á„‚á…µá‡; ë‹¢; á„‚á…µá‡; ) HANGUL SYLLABLE NIP
+B2E3;B2E3;1102 1175 11C2;B2E3;1102 1175 11C2; # (닣; 닣; 닣; 닣; 닣; ) HANGUL SYLLABLE NIH
+B2E4;B2E4;1103 1161;B2E4;1103 1161; # (다; 다; 다; 다; 다; ) HANGUL SYLLABLE DA
+B2E5;B2E5;1103 1161 11A8;B2E5;1103 1161 11A8; # (닥; 닥; 닥; 닥; 닥; ) HANGUL SYLLABLE DAG
+B2E6;B2E6;1103 1161 11A9;B2E6;1103 1161 11A9; # (닦; 닦; 닦; 닦; 닦; ) HANGUL SYLLABLE DAGG
+B2E7;B2E7;1103 1161 11AA;B2E7;1103 1161 11AA; # (닧; 닧; 닧; 닧; 닧; ) HANGUL SYLLABLE DAGS
+B2E8;B2E8;1103 1161 11AB;B2E8;1103 1161 11AB; # (단; 단; 단; 단; 단; ) HANGUL SYLLABLE DAN
+B2E9;B2E9;1103 1161 11AC;B2E9;1103 1161 11AC; # (닩; 닩; 닩; 닩; 닩; ) HANGUL SYLLABLE DANJ
+B2EA;B2EA;1103 1161 11AD;B2EA;1103 1161 11AD; # (닪; 닪; 닪; 닪; 닪; ) HANGUL SYLLABLE DANH
+B2EB;B2EB;1103 1161 11AE;B2EB;1103 1161 11AE; # (닫; 닫; 닫; 닫; 닫; ) HANGUL SYLLABLE DAD
+B2EC;B2EC;1103 1161 11AF;B2EC;1103 1161 11AF; # (달; 달; 달; 달; 달; ) HANGUL SYLLABLE DAL
+B2ED;B2ED;1103 1161 11B0;B2ED;1103 1161 11B0; # (닭; 닭; 닭; 닭; 닭; ) HANGUL SYLLABLE DALG
+B2EE;B2EE;1103 1161 11B1;B2EE;1103 1161 11B1; # (닮; 닮; 닮; 닮; 닮; ) HANGUL SYLLABLE DALM
+B2EF;B2EF;1103 1161 11B2;B2EF;1103 1161 11B2; # (닯; 닯; 닯; 닯; 닯; ) HANGUL SYLLABLE DALB
+B2F0;B2F0;1103 1161 11B3;B2F0;1103 1161 11B3; # (닰; 닰; 닰; 닰; 닰; ) HANGUL SYLLABLE DALS
+B2F1;B2F1;1103 1161 11B4;B2F1;1103 1161 11B4; # (닱; 닱; 닱; 닱; 닱; ) HANGUL SYLLABLE DALT
+B2F2;B2F2;1103 1161 11B5;B2F2;1103 1161 11B5; # (닲; 닲; 닲; 닲; 닲; ) HANGUL SYLLABLE DALP
+B2F3;B2F3;1103 1161 11B6;B2F3;1103 1161 11B6; # (닳; 닳; 닳; 닳; 닳; ) HANGUL SYLLABLE DALH
+B2F4;B2F4;1103 1161 11B7;B2F4;1103 1161 11B7; # (담; 담; 담; 담; 담; ) HANGUL SYLLABLE DAM
+B2F5;B2F5;1103 1161 11B8;B2F5;1103 1161 11B8; # (답; 답; 답; 답; 답; ) HANGUL SYLLABLE DAB
+B2F6;B2F6;1103 1161 11B9;B2F6;1103 1161 11B9; # (닶; 닶; 닶; 닶; 닶; ) HANGUL SYLLABLE DABS
+B2F7;B2F7;1103 1161 11BA;B2F7;1103 1161 11BA; # (닷; 닷; 닷; 닷; 닷; ) HANGUL SYLLABLE DAS
+B2F8;B2F8;1103 1161 11BB;B2F8;1103 1161 11BB; # (닸; 닸; 닸; 닸; 닸; ) HANGUL SYLLABLE DASS
+B2F9;B2F9;1103 1161 11BC;B2F9;1103 1161 11BC; # (당; 당; 당; 당; 당; ) HANGUL SYLLABLE DANG
+B2FA;B2FA;1103 1161 11BD;B2FA;1103 1161 11BD; # (닺; 닺; 닺; 닺; 닺; ) HANGUL SYLLABLE DAJ
+B2FB;B2FB;1103 1161 11BE;B2FB;1103 1161 11BE; # (닻; 닻; 닻; 닻; 닻; ) HANGUL SYLLABLE DAC
+B2FC;B2FC;1103 1161 11BF;B2FC;1103 1161 11BF; # (닼; 닼; 닼; 닼; 닼; ) HANGUL SYLLABLE DAK
+B2FD;B2FD;1103 1161 11C0;B2FD;1103 1161 11C0; # (닽; 닽; 닽; 닽; 닽; ) HANGUL SYLLABLE DAT
+B2FE;B2FE;1103 1161 11C1;B2FE;1103 1161 11C1; # (닾; 닾; 다á‡; 닾; 다á‡; ) HANGUL SYLLABLE DAP
+B2FF;B2FF;1103 1161 11C2;B2FF;1103 1161 11C2; # (닿; 닿; 닿; 닿; 닿; ) HANGUL SYLLABLE DAH
+B300;B300;1103 1162;B300;1103 1162; # (대; 대; 대; 대; 대; ) HANGUL SYLLABLE DAE
+B301;B301;1103 1162 11A8;B301;1103 1162 11A8; # (ëŒ; ëŒ; 댁; ëŒ; 댁; ) HANGUL SYLLABLE DAEG
+B302;B302;1103 1162 11A9;B302;1103 1162 11A9; # (댂; 댂; 댂; 댂; 댂; ) HANGUL SYLLABLE DAEGG
+B303;B303;1103 1162 11AA;B303;1103 1162 11AA; # (댃; 댃; 댃; 댃; 댃; ) HANGUL SYLLABLE DAEGS
+B304;B304;1103 1162 11AB;B304;1103 1162 11AB; # (댄; 댄; 댄; 댄; 댄; ) HANGUL SYLLABLE DAEN
+B305;B305;1103 1162 11AC;B305;1103 1162 11AC; # (댅; 댅; 댅; 댅; 댅; ) HANGUL SYLLABLE DAENJ
+B306;B306;1103 1162 11AD;B306;1103 1162 11AD; # (댆; 댆; 댆; 댆; 댆; ) HANGUL SYLLABLE DAENH
+B307;B307;1103 1162 11AE;B307;1103 1162 11AE; # (댇; 댇; 댇; 댇; 댇; ) HANGUL SYLLABLE DAED
+B308;B308;1103 1162 11AF;B308;1103 1162 11AF; # (댈; 댈; 댈; 댈; 댈; ) HANGUL SYLLABLE DAEL
+B309;B309;1103 1162 11B0;B309;1103 1162 11B0; # (댉; 댉; 댉; 댉; 댉; ) HANGUL SYLLABLE DAELG
+B30A;B30A;1103 1162 11B1;B30A;1103 1162 11B1; # (댊; 댊; 댊; 댊; 댊; ) HANGUL SYLLABLE DAELM
+B30B;B30B;1103 1162 11B2;B30B;1103 1162 11B2; # (댋; 댋; 댋; 댋; 댋; ) HANGUL SYLLABLE DAELB
+B30C;B30C;1103 1162 11B3;B30C;1103 1162 11B3; # (댌; 댌; 댌; 댌; 댌; ) HANGUL SYLLABLE DAELS
+B30D;B30D;1103 1162 11B4;B30D;1103 1162 11B4; # (ëŒ; ëŒ; 댍; ëŒ; 댍; ) HANGUL SYLLABLE DAELT
+B30E;B30E;1103 1162 11B5;B30E;1103 1162 11B5; # (댎; 댎; 댎; 댎; 댎; ) HANGUL SYLLABLE DAELP
+B30F;B30F;1103 1162 11B6;B30F;1103 1162 11B6; # (ëŒ; ëŒ; 댏; ëŒ; 댏; ) HANGUL SYLLABLE DAELH
+B310;B310;1103 1162 11B7;B310;1103 1162 11B7; # (ëŒ; ëŒ; 댐; ëŒ; 댐; ) HANGUL SYLLABLE DAEM
+B311;B311;1103 1162 11B8;B311;1103 1162 11B8; # (댑; 댑; 댑; 댑; 댑; ) HANGUL SYLLABLE DAEB
+B312;B312;1103 1162 11B9;B312;1103 1162 11B9; # (댒; 댒; 댒; 댒; 댒; ) HANGUL SYLLABLE DAEBS
+B313;B313;1103 1162 11BA;B313;1103 1162 11BA; # (댓; 댓; 댓; 댓; 댓; ) HANGUL SYLLABLE DAES
+B314;B314;1103 1162 11BB;B314;1103 1162 11BB; # (댔; 댔; 댔; 댔; 댔; ) HANGUL SYLLABLE DAESS
+B315;B315;1103 1162 11BC;B315;1103 1162 11BC; # (댕; 댕; 댕; 댕; 댕; ) HANGUL SYLLABLE DAENG
+B316;B316;1103 1162 11BD;B316;1103 1162 11BD; # (댖; 댖; 댖; 댖; 댖; ) HANGUL SYLLABLE DAEJ
+B317;B317;1103 1162 11BE;B317;1103 1162 11BE; # (댗; 댗; 댗; 댗; 댗; ) HANGUL SYLLABLE DAEC
+B318;B318;1103 1162 11BF;B318;1103 1162 11BF; # (댘; 댘; 댘; 댘; 댘; ) HANGUL SYLLABLE DAEK
+B319;B319;1103 1162 11C0;B319;1103 1162 11C0; # (댙; 댙; 댙; 댙; 댙; ) HANGUL SYLLABLE DAET
+B31A;B31A;1103 1162 11C1;B31A;1103 1162 11C1; # (댚; 댚; 대á‡; 댚; 대á‡; ) HANGUL SYLLABLE DAEP
+B31B;B31B;1103 1162 11C2;B31B;1103 1162 11C2; # (댛; 댛; 댛; 댛; 댛; ) HANGUL SYLLABLE DAEH
+B31C;B31C;1103 1163;B31C;1103 1163; # (댜; 댜; 댜; 댜; 댜; ) HANGUL SYLLABLE DYA
+B31D;B31D;1103 1163 11A8;B31D;1103 1163 11A8; # (ëŒ; ëŒ; 댝; ëŒ; 댝; ) HANGUL SYLLABLE DYAG
+B31E;B31E;1103 1163 11A9;B31E;1103 1163 11A9; # (댞; 댞; 댞; 댞; 댞; ) HANGUL SYLLABLE DYAGG
+B31F;B31F;1103 1163 11AA;B31F;1103 1163 11AA; # (댟; 댟; 댟; 댟; 댟; ) HANGUL SYLLABLE DYAGS
+B320;B320;1103 1163 11AB;B320;1103 1163 11AB; # (댠; 댠; 댠; 댠; 댠; ) HANGUL SYLLABLE DYAN
+B321;B321;1103 1163 11AC;B321;1103 1163 11AC; # (댡; 댡; 댡; 댡; 댡; ) HANGUL SYLLABLE DYANJ
+B322;B322;1103 1163 11AD;B322;1103 1163 11AD; # (댢; 댢; 댢; 댢; 댢; ) HANGUL SYLLABLE DYANH
+B323;B323;1103 1163 11AE;B323;1103 1163 11AE; # (댣; 댣; 댣; 댣; 댣; ) HANGUL SYLLABLE DYAD
+B324;B324;1103 1163 11AF;B324;1103 1163 11AF; # (댤; 댤; 댤; 댤; 댤; ) HANGUL SYLLABLE DYAL
+B325;B325;1103 1163 11B0;B325;1103 1163 11B0; # (댥; 댥; 댥; 댥; 댥; ) HANGUL SYLLABLE DYALG
+B326;B326;1103 1163 11B1;B326;1103 1163 11B1; # (댦; 댦; 댦; 댦; 댦; ) HANGUL SYLLABLE DYALM
+B327;B327;1103 1163 11B2;B327;1103 1163 11B2; # (댧; 댧; 댧; 댧; 댧; ) HANGUL SYLLABLE DYALB
+B328;B328;1103 1163 11B3;B328;1103 1163 11B3; # (댨; 댨; 댨; 댨; 댨; ) HANGUL SYLLABLE DYALS
+B329;B329;1103 1163 11B4;B329;1103 1163 11B4; # (댩; 댩; 댩; 댩; 댩; ) HANGUL SYLLABLE DYALT
+B32A;B32A;1103 1163 11B5;B32A;1103 1163 11B5; # (댪; 댪; 댪; 댪; 댪; ) HANGUL SYLLABLE DYALP
+B32B;B32B;1103 1163 11B6;B32B;1103 1163 11B6; # (댫; 댫; 댫; 댫; 댫; ) HANGUL SYLLABLE DYALH
+B32C;B32C;1103 1163 11B7;B32C;1103 1163 11B7; # (댬; 댬; 댬; 댬; 댬; ) HANGUL SYLLABLE DYAM
+B32D;B32D;1103 1163 11B8;B32D;1103 1163 11B8; # (댭; 댭; 댭; 댭; 댭; ) HANGUL SYLLABLE DYAB
+B32E;B32E;1103 1163 11B9;B32E;1103 1163 11B9; # (댮; 댮; 댮; 댮; 댮; ) HANGUL SYLLABLE DYABS
+B32F;B32F;1103 1163 11BA;B32F;1103 1163 11BA; # (댯; 댯; 댯; 댯; 댯; ) HANGUL SYLLABLE DYAS
+B330;B330;1103 1163 11BB;B330;1103 1163 11BB; # (댰; 댰; 댰; 댰; 댰; ) HANGUL SYLLABLE DYASS
+B331;B331;1103 1163 11BC;B331;1103 1163 11BC; # (댱; 댱; 댱; 댱; 댱; ) HANGUL SYLLABLE DYANG
+B332;B332;1103 1163 11BD;B332;1103 1163 11BD; # (댲; 댲; 댲; 댲; 댲; ) HANGUL SYLLABLE DYAJ
+B333;B333;1103 1163 11BE;B333;1103 1163 11BE; # (댳; 댳; 댳; 댳; 댳; ) HANGUL SYLLABLE DYAC
+B334;B334;1103 1163 11BF;B334;1103 1163 11BF; # (댴; 댴; 댴; 댴; 댴; ) HANGUL SYLLABLE DYAK
+B335;B335;1103 1163 11C0;B335;1103 1163 11C0; # (댵; 댵; 댵; 댵; 댵; ) HANGUL SYLLABLE DYAT
+B336;B336;1103 1163 11C1;B336;1103 1163 11C1; # (댶; 댶; 댜á‡; 댶; 댜á‡; ) HANGUL SYLLABLE DYAP
+B337;B337;1103 1163 11C2;B337;1103 1163 11C2; # (댷; 댷; 댷; 댷; 댷; ) HANGUL SYLLABLE DYAH
+B338;B338;1103 1164;B338;1103 1164; # (댸; 댸; 댸; 댸; 댸; ) HANGUL SYLLABLE DYAE
+B339;B339;1103 1164 11A8;B339;1103 1164 11A8; # (댹; 댹; 댹; 댹; 댹; ) HANGUL SYLLABLE DYAEG
+B33A;B33A;1103 1164 11A9;B33A;1103 1164 11A9; # (댺; 댺; 댺; 댺; 댺; ) HANGUL SYLLABLE DYAEGG
+B33B;B33B;1103 1164 11AA;B33B;1103 1164 11AA; # (댻; 댻; 댻; 댻; 댻; ) HANGUL SYLLABLE DYAEGS
+B33C;B33C;1103 1164 11AB;B33C;1103 1164 11AB; # (댼; 댼; 댼; 댼; 댼; ) HANGUL SYLLABLE DYAEN
+B33D;B33D;1103 1164 11AC;B33D;1103 1164 11AC; # (댽; 댽; 댽; 댽; 댽; ) HANGUL SYLLABLE DYAENJ
+B33E;B33E;1103 1164 11AD;B33E;1103 1164 11AD; # (댾; 댾; 댾; 댾; 댾; ) HANGUL SYLLABLE DYAENH
+B33F;B33F;1103 1164 11AE;B33F;1103 1164 11AE; # (댿; 댿; 댿; 댿; 댿; ) HANGUL SYLLABLE DYAED
+B340;B340;1103 1164 11AF;B340;1103 1164 11AF; # (ë€; ë€; 덀; ë€; 덀; ) HANGUL SYLLABLE DYAEL
+B341;B341;1103 1164 11B0;B341;1103 1164 11B0; # (ë; ë; 덁; ë; 덁; ) HANGUL SYLLABLE DYAELG
+B342;B342;1103 1164 11B1;B342;1103 1164 11B1; # (ë‚; ë‚; 덂; ë‚; 덂; ) HANGUL SYLLABLE DYAELM
+B343;B343;1103 1164 11B2;B343;1103 1164 11B2; # (ëƒ; ëƒ; 덃; ëƒ; 덃; ) HANGUL SYLLABLE DYAELB
+B344;B344;1103 1164 11B3;B344;1103 1164 11B3; # (ë„; ë„; 덄; ë„; 덄; ) HANGUL SYLLABLE DYAELS
+B345;B345;1103 1164 11B4;B345;1103 1164 11B4; # (ë…; ë…; 덅; ë…; 덅; ) HANGUL SYLLABLE DYAELT
+B346;B346;1103 1164 11B5;B346;1103 1164 11B5; # (ë†; ë†; 덆; ë†; 덆; ) HANGUL SYLLABLE DYAELP
+B347;B347;1103 1164 11B6;B347;1103 1164 11B6; # (ë‡; ë‡; 덇; ë‡; 덇; ) HANGUL SYLLABLE DYAELH
+B348;B348;1103 1164 11B7;B348;1103 1164 11B7; # (ëˆ; ëˆ; 덈; ëˆ; 덈; ) HANGUL SYLLABLE DYAEM
+B349;B349;1103 1164 11B8;B349;1103 1164 11B8; # (ë‰; ë‰; 덉; ë‰; 덉; ) HANGUL SYLLABLE DYAEB
+B34A;B34A;1103 1164 11B9;B34A;1103 1164 11B9; # (ëŠ; ëŠ; 덊; ëŠ; 덊; ) HANGUL SYLLABLE DYAEBS
+B34B;B34B;1103 1164 11BA;B34B;1103 1164 11BA; # (ë‹; ë‹; 덋; ë‹; 덋; ) HANGUL SYLLABLE DYAES
+B34C;B34C;1103 1164 11BB;B34C;1103 1164 11BB; # (ëŒ; ëŒ; 덌; ëŒ; 덌; ) HANGUL SYLLABLE DYAESS
+B34D;B34D;1103 1164 11BC;B34D;1103 1164 11BC; # (ë; ë; 덍; ë; 덍; ) HANGUL SYLLABLE DYAENG
+B34E;B34E;1103 1164 11BD;B34E;1103 1164 11BD; # (ëŽ; ëŽ; 덎; ëŽ; 덎; ) HANGUL SYLLABLE DYAEJ
+B34F;B34F;1103 1164 11BE;B34F;1103 1164 11BE; # (ë; ë; 덏; ë; 덏; ) HANGUL SYLLABLE DYAEC
+B350;B350;1103 1164 11BF;B350;1103 1164 11BF; # (ë; ë; 덐; ë; 덐; ) HANGUL SYLLABLE DYAEK
+B351;B351;1103 1164 11C0;B351;1103 1164 11C0; # (ë‘; ë‘; 덑; ë‘; 덑; ) HANGUL SYLLABLE DYAET
+B352;B352;1103 1164 11C1;B352;1103 1164 11C1; # (ë’; ë’; 댸á‡; ë’; 댸á‡; ) HANGUL SYLLABLE DYAEP
+B353;B353;1103 1164 11C2;B353;1103 1164 11C2; # (ë“; ë“; 덓; ë“; 덓; ) HANGUL SYLLABLE DYAEH
+B354;B354;1103 1165;B354;1103 1165; # (ë”; ë”; 더; ë”; 더; ) HANGUL SYLLABLE DEO
+B355;B355;1103 1165 11A8;B355;1103 1165 11A8; # (ë•; ë•; 덕; ë•; 덕; ) HANGUL SYLLABLE DEOG
+B356;B356;1103 1165 11A9;B356;1103 1165 11A9; # (ë–; ë–; 덖; ë–; 덖; ) HANGUL SYLLABLE DEOGG
+B357;B357;1103 1165 11AA;B357;1103 1165 11AA; # (ë—; ë—; 덗; ë—; 덗; ) HANGUL SYLLABLE DEOGS
+B358;B358;1103 1165 11AB;B358;1103 1165 11AB; # (ë˜; ë˜; 던; ë˜; 던; ) HANGUL SYLLABLE DEON
+B359;B359;1103 1165 11AC;B359;1103 1165 11AC; # (ë™; ë™; 덙; ë™; 덙; ) HANGUL SYLLABLE DEONJ
+B35A;B35A;1103 1165 11AD;B35A;1103 1165 11AD; # (ëš; ëš; 덚; ëš; 덚; ) HANGUL SYLLABLE DEONH
+B35B;B35B;1103 1165 11AE;B35B;1103 1165 11AE; # (ë›; ë›; 덛; ë›; 덛; ) HANGUL SYLLABLE DEOD
+B35C;B35C;1103 1165 11AF;B35C;1103 1165 11AF; # (ëœ; ëœ; 덜; ëœ; 덜; ) HANGUL SYLLABLE DEOL
+B35D;B35D;1103 1165 11B0;B35D;1103 1165 11B0; # (ë; ë; 덝; ë; 덝; ) HANGUL SYLLABLE DEOLG
+B35E;B35E;1103 1165 11B1;B35E;1103 1165 11B1; # (ëž; ëž; 덞; ëž; 덞; ) HANGUL SYLLABLE DEOLM
+B35F;B35F;1103 1165 11B2;B35F;1103 1165 11B2; # (ëŸ; ëŸ; 덟; ëŸ; 덟; ) HANGUL SYLLABLE DEOLB
+B360;B360;1103 1165 11B3;B360;1103 1165 11B3; # (ë ; ë ; 덠; ë ; 덠; ) HANGUL SYLLABLE DEOLS
+B361;B361;1103 1165 11B4;B361;1103 1165 11B4; # (ë¡; ë¡; 덡; ë¡; 덡; ) HANGUL SYLLABLE DEOLT
+B362;B362;1103 1165 11B5;B362;1103 1165 11B5; # (ë¢; ë¢; 덢; ë¢; 덢; ) HANGUL SYLLABLE DEOLP
+B363;B363;1103 1165 11B6;B363;1103 1165 11B6; # (ë£; ë£; 덣; ë£; 덣; ) HANGUL SYLLABLE DEOLH
+B364;B364;1103 1165 11B7;B364;1103 1165 11B7; # (ë¤; ë¤; 덤; ë¤; 덤; ) HANGUL SYLLABLE DEOM
+B365;B365;1103 1165 11B8;B365;1103 1165 11B8; # (ë¥; ë¥; 덥; ë¥; 덥; ) HANGUL SYLLABLE DEOB
+B366;B366;1103 1165 11B9;B366;1103 1165 11B9; # (ë¦; ë¦; 덦; ë¦; 덦; ) HANGUL SYLLABLE DEOBS
+B367;B367;1103 1165 11BA;B367;1103 1165 11BA; # (ë§; ë§; 덧; ë§; 덧; ) HANGUL SYLLABLE DEOS
+B368;B368;1103 1165 11BB;B368;1103 1165 11BB; # (ë¨; ë¨; 덨; ë¨; 덨; ) HANGUL SYLLABLE DEOSS
+B369;B369;1103 1165 11BC;B369;1103 1165 11BC; # (ë©; ë©; 덩; ë©; 덩; ) HANGUL SYLLABLE DEONG
+B36A;B36A;1103 1165 11BD;B36A;1103 1165 11BD; # (ëª; ëª; 덪; ëª; 덪; ) HANGUL SYLLABLE DEOJ
+B36B;B36B;1103 1165 11BE;B36B;1103 1165 11BE; # (ë«; ë«; 덫; ë«; 덫; ) HANGUL SYLLABLE DEOC
+B36C;B36C;1103 1165 11BF;B36C;1103 1165 11BF; # (ë¬; ë¬; 덬; ë¬; 덬; ) HANGUL SYLLABLE DEOK
+B36D;B36D;1103 1165 11C0;B36D;1103 1165 11C0; # (ë­; ë­; 덭; ë­; 덭; ) HANGUL SYLLABLE DEOT
+B36E;B36E;1103 1165 11C1;B36E;1103 1165 11C1; # (ë®; ë®; 더á‡; ë®; 더á‡; ) HANGUL SYLLABLE DEOP
+B36F;B36F;1103 1165 11C2;B36F;1103 1165 11C2; # (ë¯; ë¯; 덯; ë¯; 덯; ) HANGUL SYLLABLE DEOH
+B370;B370;1103 1166;B370;1103 1166; # (ë°; ë°; 데; ë°; 데; ) HANGUL SYLLABLE DE
+B371;B371;1103 1166 11A8;B371;1103 1166 11A8; # (ë±; ë±; 덱; ë±; 덱; ) HANGUL SYLLABLE DEG
+B372;B372;1103 1166 11A9;B372;1103 1166 11A9; # (ë²; ë²; 덲; ë²; 덲; ) HANGUL SYLLABLE DEGG
+B373;B373;1103 1166 11AA;B373;1103 1166 11AA; # (ë³; ë³; 덳; ë³; 덳; ) HANGUL SYLLABLE DEGS
+B374;B374;1103 1166 11AB;B374;1103 1166 11AB; # (ë´; ë´; 덴; ë´; 덴; ) HANGUL SYLLABLE DEN
+B375;B375;1103 1166 11AC;B375;1103 1166 11AC; # (ëµ; ëµ; 덵; ëµ; 덵; ) HANGUL SYLLABLE DENJ
+B376;B376;1103 1166 11AD;B376;1103 1166 11AD; # (ë¶; ë¶; 덶; ë¶; 덶; ) HANGUL SYLLABLE DENH
+B377;B377;1103 1166 11AE;B377;1103 1166 11AE; # (ë·; ë·; 덷; ë·; 덷; ) HANGUL SYLLABLE DED
+B378;B378;1103 1166 11AF;B378;1103 1166 11AF; # (ë¸; ë¸; 델; ë¸; 델; ) HANGUL SYLLABLE DEL
+B379;B379;1103 1166 11B0;B379;1103 1166 11B0; # (ë¹; ë¹; 덹; ë¹; 덹; ) HANGUL SYLLABLE DELG
+B37A;B37A;1103 1166 11B1;B37A;1103 1166 11B1; # (ëº; ëº; 덺; ëº; 덺; ) HANGUL SYLLABLE DELM
+B37B;B37B;1103 1166 11B2;B37B;1103 1166 11B2; # (ë»; ë»; 덻; ë»; 덻; ) HANGUL SYLLABLE DELB
+B37C;B37C;1103 1166 11B3;B37C;1103 1166 11B3; # (ë¼; ë¼; 덼; ë¼; 덼; ) HANGUL SYLLABLE DELS
+B37D;B37D;1103 1166 11B4;B37D;1103 1166 11B4; # (ë½; ë½; 덽; ë½; 덽; ) HANGUL SYLLABLE DELT
+B37E;B37E;1103 1166 11B5;B37E;1103 1166 11B5; # (ë¾; ë¾; 덾; ë¾; 덾; ) HANGUL SYLLABLE DELP
+B37F;B37F;1103 1166 11B6;B37F;1103 1166 11B6; # (ë¿; ë¿; 덿; ë¿; 덿; ) HANGUL SYLLABLE DELH
+B380;B380;1103 1166 11B7;B380;1103 1166 11B7; # (뎀; 뎀; 뎀; 뎀; 뎀; ) HANGUL SYLLABLE DEM
+B381;B381;1103 1166 11B8;B381;1103 1166 11B8; # (ëŽ; ëŽ; 뎁; ëŽ; 뎁; ) HANGUL SYLLABLE DEB
+B382;B382;1103 1166 11B9;B382;1103 1166 11B9; # (뎂; 뎂; 뎂; 뎂; 뎂; ) HANGUL SYLLABLE DEBS
+B383;B383;1103 1166 11BA;B383;1103 1166 11BA; # (뎃; 뎃; 뎃; 뎃; 뎃; ) HANGUL SYLLABLE DES
+B384;B384;1103 1166 11BB;B384;1103 1166 11BB; # (뎄; 뎄; 뎄; 뎄; 뎄; ) HANGUL SYLLABLE DESS
+B385;B385;1103 1166 11BC;B385;1103 1166 11BC; # (뎅; 뎅; 뎅; 뎅; 뎅; ) HANGUL SYLLABLE DENG
+B386;B386;1103 1166 11BD;B386;1103 1166 11BD; # (뎆; 뎆; 뎆; 뎆; 뎆; ) HANGUL SYLLABLE DEJ
+B387;B387;1103 1166 11BE;B387;1103 1166 11BE; # (뎇; 뎇; 뎇; 뎇; 뎇; ) HANGUL SYLLABLE DEC
+B388;B388;1103 1166 11BF;B388;1103 1166 11BF; # (뎈; 뎈; 뎈; 뎈; 뎈; ) HANGUL SYLLABLE DEK
+B389;B389;1103 1166 11C0;B389;1103 1166 11C0; # (뎉; 뎉; 뎉; 뎉; 뎉; ) HANGUL SYLLABLE DET
+B38A;B38A;1103 1166 11C1;B38A;1103 1166 11C1; # (뎊; 뎊; 데á‡; 뎊; 데á‡; ) HANGUL SYLLABLE DEP
+B38B;B38B;1103 1166 11C2;B38B;1103 1166 11C2; # (뎋; 뎋; 뎋; 뎋; 뎋; ) HANGUL SYLLABLE DEH
+B38C;B38C;1103 1167;B38C;1103 1167; # (뎌; 뎌; 뎌; 뎌; 뎌; ) HANGUL SYLLABLE DYEO
+B38D;B38D;1103 1167 11A8;B38D;1103 1167 11A8; # (ëŽ; ëŽ; 뎍; ëŽ; 뎍; ) HANGUL SYLLABLE DYEOG
+B38E;B38E;1103 1167 11A9;B38E;1103 1167 11A9; # (뎎; 뎎; 뎎; 뎎; 뎎; ) HANGUL SYLLABLE DYEOGG
+B38F;B38F;1103 1167 11AA;B38F;1103 1167 11AA; # (ëŽ; ëŽ; 뎏; ëŽ; 뎏; ) HANGUL SYLLABLE DYEOGS
+B390;B390;1103 1167 11AB;B390;1103 1167 11AB; # (ëŽ; ëŽ; 뎐; ëŽ; 뎐; ) HANGUL SYLLABLE DYEON
+B391;B391;1103 1167 11AC;B391;1103 1167 11AC; # (뎑; 뎑; 뎑; 뎑; 뎑; ) HANGUL SYLLABLE DYEONJ
+B392;B392;1103 1167 11AD;B392;1103 1167 11AD; # (뎒; 뎒; 뎒; 뎒; 뎒; ) HANGUL SYLLABLE DYEONH
+B393;B393;1103 1167 11AE;B393;1103 1167 11AE; # (뎓; 뎓; 뎓; 뎓; 뎓; ) HANGUL SYLLABLE DYEOD
+B394;B394;1103 1167 11AF;B394;1103 1167 11AF; # (뎔; 뎔; 뎔; 뎔; 뎔; ) HANGUL SYLLABLE DYEOL
+B395;B395;1103 1167 11B0;B395;1103 1167 11B0; # (뎕; 뎕; 뎕; 뎕; 뎕; ) HANGUL SYLLABLE DYEOLG
+B396;B396;1103 1167 11B1;B396;1103 1167 11B1; # (뎖; 뎖; 뎖; 뎖; 뎖; ) HANGUL SYLLABLE DYEOLM
+B397;B397;1103 1167 11B2;B397;1103 1167 11B2; # (뎗; 뎗; 뎗; 뎗; 뎗; ) HANGUL SYLLABLE DYEOLB
+B398;B398;1103 1167 11B3;B398;1103 1167 11B3; # (뎘; 뎘; 뎘; 뎘; 뎘; ) HANGUL SYLLABLE DYEOLS
+B399;B399;1103 1167 11B4;B399;1103 1167 11B4; # (뎙; 뎙; 뎙; 뎙; 뎙; ) HANGUL SYLLABLE DYEOLT
+B39A;B39A;1103 1167 11B5;B39A;1103 1167 11B5; # (뎚; 뎚; 뎚; 뎚; 뎚; ) HANGUL SYLLABLE DYEOLP
+B39B;B39B;1103 1167 11B6;B39B;1103 1167 11B6; # (뎛; 뎛; 뎛; 뎛; 뎛; ) HANGUL SYLLABLE DYEOLH
+B39C;B39C;1103 1167 11B7;B39C;1103 1167 11B7; # (뎜; 뎜; 뎜; 뎜; 뎜; ) HANGUL SYLLABLE DYEOM
+B39D;B39D;1103 1167 11B8;B39D;1103 1167 11B8; # (ëŽ; ëŽ; 뎝; ëŽ; 뎝; ) HANGUL SYLLABLE DYEOB
+B39E;B39E;1103 1167 11B9;B39E;1103 1167 11B9; # (뎞; 뎞; 뎞; 뎞; 뎞; ) HANGUL SYLLABLE DYEOBS
+B39F;B39F;1103 1167 11BA;B39F;1103 1167 11BA; # (뎟; 뎟; 뎟; 뎟; 뎟; ) HANGUL SYLLABLE DYEOS
+B3A0;B3A0;1103 1167 11BB;B3A0;1103 1167 11BB; # (뎠; 뎠; 뎠; 뎠; 뎠; ) HANGUL SYLLABLE DYEOSS
+B3A1;B3A1;1103 1167 11BC;B3A1;1103 1167 11BC; # (뎡; 뎡; 뎡; 뎡; 뎡; ) HANGUL SYLLABLE DYEONG
+B3A2;B3A2;1103 1167 11BD;B3A2;1103 1167 11BD; # (뎢; 뎢; 뎢; 뎢; 뎢; ) HANGUL SYLLABLE DYEOJ
+B3A3;B3A3;1103 1167 11BE;B3A3;1103 1167 11BE; # (뎣; 뎣; 뎣; 뎣; 뎣; ) HANGUL SYLLABLE DYEOC
+B3A4;B3A4;1103 1167 11BF;B3A4;1103 1167 11BF; # (뎤; 뎤; 뎤; 뎤; 뎤; ) HANGUL SYLLABLE DYEOK
+B3A5;B3A5;1103 1167 11C0;B3A5;1103 1167 11C0; # (뎥; 뎥; 뎥; 뎥; 뎥; ) HANGUL SYLLABLE DYEOT
+B3A6;B3A6;1103 1167 11C1;B3A6;1103 1167 11C1; # (뎦; 뎦; 뎌á‡; 뎦; 뎌á‡; ) HANGUL SYLLABLE DYEOP
+B3A7;B3A7;1103 1167 11C2;B3A7;1103 1167 11C2; # (뎧; 뎧; 뎧; 뎧; 뎧; ) HANGUL SYLLABLE DYEOH
+B3A8;B3A8;1103 1168;B3A8;1103 1168; # (뎨; 뎨; 뎨; 뎨; 뎨; ) HANGUL SYLLABLE DYE
+B3A9;B3A9;1103 1168 11A8;B3A9;1103 1168 11A8; # (뎩; 뎩; 뎩; 뎩; 뎩; ) HANGUL SYLLABLE DYEG
+B3AA;B3AA;1103 1168 11A9;B3AA;1103 1168 11A9; # (뎪; 뎪; 뎪; 뎪; 뎪; ) HANGUL SYLLABLE DYEGG
+B3AB;B3AB;1103 1168 11AA;B3AB;1103 1168 11AA; # (뎫; 뎫; 뎫; 뎫; 뎫; ) HANGUL SYLLABLE DYEGS
+B3AC;B3AC;1103 1168 11AB;B3AC;1103 1168 11AB; # (뎬; 뎬; 뎬; 뎬; 뎬; ) HANGUL SYLLABLE DYEN
+B3AD;B3AD;1103 1168 11AC;B3AD;1103 1168 11AC; # (뎭; 뎭; 뎭; 뎭; 뎭; ) HANGUL SYLLABLE DYENJ
+B3AE;B3AE;1103 1168 11AD;B3AE;1103 1168 11AD; # (뎮; 뎮; 뎮; 뎮; 뎮; ) HANGUL SYLLABLE DYENH
+B3AF;B3AF;1103 1168 11AE;B3AF;1103 1168 11AE; # (뎯; 뎯; 뎯; 뎯; 뎯; ) HANGUL SYLLABLE DYED
+B3B0;B3B0;1103 1168 11AF;B3B0;1103 1168 11AF; # (뎰; 뎰; 뎰; 뎰; 뎰; ) HANGUL SYLLABLE DYEL
+B3B1;B3B1;1103 1168 11B0;B3B1;1103 1168 11B0; # (뎱; 뎱; 뎱; 뎱; 뎱; ) HANGUL SYLLABLE DYELG
+B3B2;B3B2;1103 1168 11B1;B3B2;1103 1168 11B1; # (뎲; 뎲; 뎲; 뎲; 뎲; ) HANGUL SYLLABLE DYELM
+B3B3;B3B3;1103 1168 11B2;B3B3;1103 1168 11B2; # (뎳; 뎳; 뎳; 뎳; 뎳; ) HANGUL SYLLABLE DYELB
+B3B4;B3B4;1103 1168 11B3;B3B4;1103 1168 11B3; # (뎴; 뎴; 뎴; 뎴; 뎴; ) HANGUL SYLLABLE DYELS
+B3B5;B3B5;1103 1168 11B4;B3B5;1103 1168 11B4; # (뎵; 뎵; 뎵; 뎵; 뎵; ) HANGUL SYLLABLE DYELT
+B3B6;B3B6;1103 1168 11B5;B3B6;1103 1168 11B5; # (뎶; 뎶; 뎶; 뎶; 뎶; ) HANGUL SYLLABLE DYELP
+B3B7;B3B7;1103 1168 11B6;B3B7;1103 1168 11B6; # (뎷; 뎷; 뎷; 뎷; 뎷; ) HANGUL SYLLABLE DYELH
+B3B8;B3B8;1103 1168 11B7;B3B8;1103 1168 11B7; # (뎸; 뎸; 뎸; 뎸; 뎸; ) HANGUL SYLLABLE DYEM
+B3B9;B3B9;1103 1168 11B8;B3B9;1103 1168 11B8; # (뎹; 뎹; 뎹; 뎹; 뎹; ) HANGUL SYLLABLE DYEB
+B3BA;B3BA;1103 1168 11B9;B3BA;1103 1168 11B9; # (뎺; 뎺; 뎺; 뎺; 뎺; ) HANGUL SYLLABLE DYEBS
+B3BB;B3BB;1103 1168 11BA;B3BB;1103 1168 11BA; # (뎻; 뎻; 뎻; 뎻; 뎻; ) HANGUL SYLLABLE DYES
+B3BC;B3BC;1103 1168 11BB;B3BC;1103 1168 11BB; # (뎼; 뎼; 뎼; 뎼; 뎼; ) HANGUL SYLLABLE DYESS
+B3BD;B3BD;1103 1168 11BC;B3BD;1103 1168 11BC; # (뎽; 뎽; 뎽; 뎽; 뎽; ) HANGUL SYLLABLE DYENG
+B3BE;B3BE;1103 1168 11BD;B3BE;1103 1168 11BD; # (뎾; 뎾; 뎾; 뎾; 뎾; ) HANGUL SYLLABLE DYEJ
+B3BF;B3BF;1103 1168 11BE;B3BF;1103 1168 11BE; # (뎿; 뎿; 뎿; 뎿; 뎿; ) HANGUL SYLLABLE DYEC
+B3C0;B3C0;1103 1168 11BF;B3C0;1103 1168 11BF; # (ë€; ë€; 돀; ë€; 돀; ) HANGUL SYLLABLE DYEK
+B3C1;B3C1;1103 1168 11C0;B3C1;1103 1168 11C0; # (ë; ë; 돁; ë; 돁; ) HANGUL SYLLABLE DYET
+B3C2;B3C2;1103 1168 11C1;B3C2;1103 1168 11C1; # (ë‚; ë‚; 뎨á‡; ë‚; 뎨á‡; ) HANGUL SYLLABLE DYEP
+B3C3;B3C3;1103 1168 11C2;B3C3;1103 1168 11C2; # (ëƒ; ëƒ; 돃; ëƒ; 돃; ) HANGUL SYLLABLE DYEH
+B3C4;B3C4;1103 1169;B3C4;1103 1169; # (ë„; ë„; 도; ë„; 도; ) HANGUL SYLLABLE DO
+B3C5;B3C5;1103 1169 11A8;B3C5;1103 1169 11A8; # (ë…; ë…; 독; ë…; 독; ) HANGUL SYLLABLE DOG
+B3C6;B3C6;1103 1169 11A9;B3C6;1103 1169 11A9; # (ë†; ë†; 돆; ë†; 돆; ) HANGUL SYLLABLE DOGG
+B3C7;B3C7;1103 1169 11AA;B3C7;1103 1169 11AA; # (ë‡; ë‡; 돇; ë‡; 돇; ) HANGUL SYLLABLE DOGS
+B3C8;B3C8;1103 1169 11AB;B3C8;1103 1169 11AB; # (ëˆ; ëˆ; 돈; ëˆ; 돈; ) HANGUL SYLLABLE DON
+B3C9;B3C9;1103 1169 11AC;B3C9;1103 1169 11AC; # (ë‰; ë‰; 돉; ë‰; 돉; ) HANGUL SYLLABLE DONJ
+B3CA;B3CA;1103 1169 11AD;B3CA;1103 1169 11AD; # (ëŠ; ëŠ; 돊; ëŠ; 돊; ) HANGUL SYLLABLE DONH
+B3CB;B3CB;1103 1169 11AE;B3CB;1103 1169 11AE; # (ë‹; ë‹; 돋; ë‹; 돋; ) HANGUL SYLLABLE DOD
+B3CC;B3CC;1103 1169 11AF;B3CC;1103 1169 11AF; # (ëŒ; ëŒ; 돌; ëŒ; 돌; ) HANGUL SYLLABLE DOL
+B3CD;B3CD;1103 1169 11B0;B3CD;1103 1169 11B0; # (ë; ë; 돍; ë; 돍; ) HANGUL SYLLABLE DOLG
+B3CE;B3CE;1103 1169 11B1;B3CE;1103 1169 11B1; # (ëŽ; ëŽ; 돎; ëŽ; 돎; ) HANGUL SYLLABLE DOLM
+B3CF;B3CF;1103 1169 11B2;B3CF;1103 1169 11B2; # (ë; ë; 돏; ë; 돏; ) HANGUL SYLLABLE DOLB
+B3D0;B3D0;1103 1169 11B3;B3D0;1103 1169 11B3; # (ë; ë; 돐; ë; 돐; ) HANGUL SYLLABLE DOLS
+B3D1;B3D1;1103 1169 11B4;B3D1;1103 1169 11B4; # (ë‘; ë‘; 돑; ë‘; 돑; ) HANGUL SYLLABLE DOLT
+B3D2;B3D2;1103 1169 11B5;B3D2;1103 1169 11B5; # (ë’; ë’; 돒; ë’; 돒; ) HANGUL SYLLABLE DOLP
+B3D3;B3D3;1103 1169 11B6;B3D3;1103 1169 11B6; # (ë“; ë“; 돓; ë“; 돓; ) HANGUL SYLLABLE DOLH
+B3D4;B3D4;1103 1169 11B7;B3D4;1103 1169 11B7; # (ë”; ë”; 돔; ë”; 돔; ) HANGUL SYLLABLE DOM
+B3D5;B3D5;1103 1169 11B8;B3D5;1103 1169 11B8; # (ë•; ë•; 돕; ë•; 돕; ) HANGUL SYLLABLE DOB
+B3D6;B3D6;1103 1169 11B9;B3D6;1103 1169 11B9; # (ë–; ë–; 돖; ë–; 돖; ) HANGUL SYLLABLE DOBS
+B3D7;B3D7;1103 1169 11BA;B3D7;1103 1169 11BA; # (ë—; ë—; 돗; ë—; 돗; ) HANGUL SYLLABLE DOS
+B3D8;B3D8;1103 1169 11BB;B3D8;1103 1169 11BB; # (ë˜; ë˜; 돘; ë˜; 돘; ) HANGUL SYLLABLE DOSS
+B3D9;B3D9;1103 1169 11BC;B3D9;1103 1169 11BC; # (ë™; ë™; 동; ë™; 동; ) HANGUL SYLLABLE DONG
+B3DA;B3DA;1103 1169 11BD;B3DA;1103 1169 11BD; # (ëš; ëš; 돚; ëš; 돚; ) HANGUL SYLLABLE DOJ
+B3DB;B3DB;1103 1169 11BE;B3DB;1103 1169 11BE; # (ë›; ë›; 돛; ë›; 돛; ) HANGUL SYLLABLE DOC
+B3DC;B3DC;1103 1169 11BF;B3DC;1103 1169 11BF; # (ëœ; ëœ; 돜; ëœ; 돜; ) HANGUL SYLLABLE DOK
+B3DD;B3DD;1103 1169 11C0;B3DD;1103 1169 11C0; # (ë; ë; 돝; ë; 돝; ) HANGUL SYLLABLE DOT
+B3DE;B3DE;1103 1169 11C1;B3DE;1103 1169 11C1; # (ëž; ëž; 도á‡; ëž; 도á‡; ) HANGUL SYLLABLE DOP
+B3DF;B3DF;1103 1169 11C2;B3DF;1103 1169 11C2; # (ëŸ; ëŸ; 돟; ëŸ; 돟; ) HANGUL SYLLABLE DOH
+B3E0;B3E0;1103 116A;B3E0;1103 116A; # (ë ; ë ; 돠; ë ; 돠; ) HANGUL SYLLABLE DWA
+B3E1;B3E1;1103 116A 11A8;B3E1;1103 116A 11A8; # (ë¡; ë¡; 돡; ë¡; 돡; ) HANGUL SYLLABLE DWAG
+B3E2;B3E2;1103 116A 11A9;B3E2;1103 116A 11A9; # (ë¢; ë¢; 돢; ë¢; 돢; ) HANGUL SYLLABLE DWAGG
+B3E3;B3E3;1103 116A 11AA;B3E3;1103 116A 11AA; # (ë£; ë£; 돣; ë£; 돣; ) HANGUL SYLLABLE DWAGS
+B3E4;B3E4;1103 116A 11AB;B3E4;1103 116A 11AB; # (ë¤; ë¤; 돤; ë¤; 돤; ) HANGUL SYLLABLE DWAN
+B3E5;B3E5;1103 116A 11AC;B3E5;1103 116A 11AC; # (ë¥; ë¥; 돥; ë¥; 돥; ) HANGUL SYLLABLE DWANJ
+B3E6;B3E6;1103 116A 11AD;B3E6;1103 116A 11AD; # (ë¦; ë¦; 돦; ë¦; 돦; ) HANGUL SYLLABLE DWANH
+B3E7;B3E7;1103 116A 11AE;B3E7;1103 116A 11AE; # (ë§; ë§; 돧; ë§; 돧; ) HANGUL SYLLABLE DWAD
+B3E8;B3E8;1103 116A 11AF;B3E8;1103 116A 11AF; # (ë¨; ë¨; 돨; ë¨; 돨; ) HANGUL SYLLABLE DWAL
+B3E9;B3E9;1103 116A 11B0;B3E9;1103 116A 11B0; # (ë©; ë©; 돩; ë©; 돩; ) HANGUL SYLLABLE DWALG
+B3EA;B3EA;1103 116A 11B1;B3EA;1103 116A 11B1; # (ëª; ëª; 돪; ëª; 돪; ) HANGUL SYLLABLE DWALM
+B3EB;B3EB;1103 116A 11B2;B3EB;1103 116A 11B2; # (ë«; ë«; 돫; ë«; 돫; ) HANGUL SYLLABLE DWALB
+B3EC;B3EC;1103 116A 11B3;B3EC;1103 116A 11B3; # (ë¬; ë¬; 돬; ë¬; 돬; ) HANGUL SYLLABLE DWALS
+B3ED;B3ED;1103 116A 11B4;B3ED;1103 116A 11B4; # (ë­; ë­; 돭; ë­; 돭; ) HANGUL SYLLABLE DWALT
+B3EE;B3EE;1103 116A 11B5;B3EE;1103 116A 11B5; # (ë®; ë®; 돮; ë®; 돮; ) HANGUL SYLLABLE DWALP
+B3EF;B3EF;1103 116A 11B6;B3EF;1103 116A 11B6; # (ë¯; ë¯; 돯; ë¯; 돯; ) HANGUL SYLLABLE DWALH
+B3F0;B3F0;1103 116A 11B7;B3F0;1103 116A 11B7; # (ë°; ë°; 돰; ë°; 돰; ) HANGUL SYLLABLE DWAM
+B3F1;B3F1;1103 116A 11B8;B3F1;1103 116A 11B8; # (ë±; ë±; 돱; ë±; 돱; ) HANGUL SYLLABLE DWAB
+B3F2;B3F2;1103 116A 11B9;B3F2;1103 116A 11B9; # (ë²; ë²; 돲; ë²; 돲; ) HANGUL SYLLABLE DWABS
+B3F3;B3F3;1103 116A 11BA;B3F3;1103 116A 11BA; # (ë³; ë³; 돳; ë³; 돳; ) HANGUL SYLLABLE DWAS
+B3F4;B3F4;1103 116A 11BB;B3F4;1103 116A 11BB; # (ë´; ë´; 돴; ë´; 돴; ) HANGUL SYLLABLE DWASS
+B3F5;B3F5;1103 116A 11BC;B3F5;1103 116A 11BC; # (ëµ; ëµ; 돵; ëµ; 돵; ) HANGUL SYLLABLE DWANG
+B3F6;B3F6;1103 116A 11BD;B3F6;1103 116A 11BD; # (ë¶; ë¶; 돶; ë¶; 돶; ) HANGUL SYLLABLE DWAJ
+B3F7;B3F7;1103 116A 11BE;B3F7;1103 116A 11BE; # (ë·; ë·; 돷; ë·; 돷; ) HANGUL SYLLABLE DWAC
+B3F8;B3F8;1103 116A 11BF;B3F8;1103 116A 11BF; # (ë¸; ë¸; 돸; ë¸; 돸; ) HANGUL SYLLABLE DWAK
+B3F9;B3F9;1103 116A 11C0;B3F9;1103 116A 11C0; # (ë¹; ë¹; 돹; ë¹; 돹; ) HANGUL SYLLABLE DWAT
+B3FA;B3FA;1103 116A 11C1;B3FA;1103 116A 11C1; # (ëº; ëº; 돠á‡; ëº; 돠á‡; ) HANGUL SYLLABLE DWAP
+B3FB;B3FB;1103 116A 11C2;B3FB;1103 116A 11C2; # (ë»; ë»; 돻; ë»; 돻; ) HANGUL SYLLABLE DWAH
+B3FC;B3FC;1103 116B;B3FC;1103 116B; # (ë¼; ë¼; 돼; ë¼; 돼; ) HANGUL SYLLABLE DWAE
+B3FD;B3FD;1103 116B 11A8;B3FD;1103 116B 11A8; # (ë½; ë½; 돽; ë½; 돽; ) HANGUL SYLLABLE DWAEG
+B3FE;B3FE;1103 116B 11A9;B3FE;1103 116B 11A9; # (ë¾; ë¾; 돾; ë¾; 돾; ) HANGUL SYLLABLE DWAEGG
+B3FF;B3FF;1103 116B 11AA;B3FF;1103 116B 11AA; # (ë¿; ë¿; 돿; ë¿; 돿; ) HANGUL SYLLABLE DWAEGS
+B400;B400;1103 116B 11AB;B400;1103 116B 11AB; # (ë€; ë€; 됀; ë€; 됀; ) HANGUL SYLLABLE DWAEN
+B401;B401;1103 116B 11AC;B401;1103 116B 11AC; # (ë; ë; 됁; ë; 됁; ) HANGUL SYLLABLE DWAENJ
+B402;B402;1103 116B 11AD;B402;1103 116B 11AD; # (ë‚; ë‚; 됂; ë‚; 됂; ) HANGUL SYLLABLE DWAENH
+B403;B403;1103 116B 11AE;B403;1103 116B 11AE; # (ëƒ; ëƒ; 됃; ëƒ; 됃; ) HANGUL SYLLABLE DWAED
+B404;B404;1103 116B 11AF;B404;1103 116B 11AF; # (ë„; ë„; 됄; ë„; 됄; ) HANGUL SYLLABLE DWAEL
+B405;B405;1103 116B 11B0;B405;1103 116B 11B0; # (ë…; ë…; 됅; ë…; 됅; ) HANGUL SYLLABLE DWAELG
+B406;B406;1103 116B 11B1;B406;1103 116B 11B1; # (ë†; ë†; 됆; ë†; 됆; ) HANGUL SYLLABLE DWAELM
+B407;B407;1103 116B 11B2;B407;1103 116B 11B2; # (ë‡; ë‡; 됇; ë‡; 됇; ) HANGUL SYLLABLE DWAELB
+B408;B408;1103 116B 11B3;B408;1103 116B 11B3; # (ëˆ; ëˆ; 됈; ëˆ; 됈; ) HANGUL SYLLABLE DWAELS
+B409;B409;1103 116B 11B4;B409;1103 116B 11B4; # (ë‰; ë‰; 됉; ë‰; 됉; ) HANGUL SYLLABLE DWAELT
+B40A;B40A;1103 116B 11B5;B40A;1103 116B 11B5; # (ëŠ; ëŠ; 됊; ëŠ; 됊; ) HANGUL SYLLABLE DWAELP
+B40B;B40B;1103 116B 11B6;B40B;1103 116B 11B6; # (ë‹; ë‹; 됋; ë‹; 됋; ) HANGUL SYLLABLE DWAELH
+B40C;B40C;1103 116B 11B7;B40C;1103 116B 11B7; # (ëŒ; ëŒ; 됌; ëŒ; 됌; ) HANGUL SYLLABLE DWAEM
+B40D;B40D;1103 116B 11B8;B40D;1103 116B 11B8; # (ë; ë; 됍; ë; 됍; ) HANGUL SYLLABLE DWAEB
+B40E;B40E;1103 116B 11B9;B40E;1103 116B 11B9; # (ëŽ; ëŽ; 됎; ëŽ; 됎; ) HANGUL SYLLABLE DWAEBS
+B40F;B40F;1103 116B 11BA;B40F;1103 116B 11BA; # (ë; ë; 됏; ë; 됏; ) HANGUL SYLLABLE DWAES
+B410;B410;1103 116B 11BB;B410;1103 116B 11BB; # (ë; ë; 됐; ë; 됐; ) HANGUL SYLLABLE DWAESS
+B411;B411;1103 116B 11BC;B411;1103 116B 11BC; # (ë‘; ë‘; 됑; ë‘; 됑; ) HANGUL SYLLABLE DWAENG
+B412;B412;1103 116B 11BD;B412;1103 116B 11BD; # (ë’; ë’; 됒; ë’; 됒; ) HANGUL SYLLABLE DWAEJ
+B413;B413;1103 116B 11BE;B413;1103 116B 11BE; # (ë“; ë“; 됓; ë“; 됓; ) HANGUL SYLLABLE DWAEC
+B414;B414;1103 116B 11BF;B414;1103 116B 11BF; # (ë”; ë”; 됔; ë”; 됔; ) HANGUL SYLLABLE DWAEK
+B415;B415;1103 116B 11C0;B415;1103 116B 11C0; # (ë•; ë•; 됕; ë•; 됕; ) HANGUL SYLLABLE DWAET
+B416;B416;1103 116B 11C1;B416;1103 116B 11C1; # (ë–; ë–; 돼á‡; ë–; 돼á‡; ) HANGUL SYLLABLE DWAEP
+B417;B417;1103 116B 11C2;B417;1103 116B 11C2; # (ë—; ë—; 됗; ë—; 됗; ) HANGUL SYLLABLE DWAEH
+B418;B418;1103 116C;B418;1103 116C; # (ë˜; ë˜; 되; ë˜; 되; ) HANGUL SYLLABLE DOE
+B419;B419;1103 116C 11A8;B419;1103 116C 11A8; # (ë™; ë™; 됙; ë™; 됙; ) HANGUL SYLLABLE DOEG
+B41A;B41A;1103 116C 11A9;B41A;1103 116C 11A9; # (ëš; ëš; 됚; ëš; 됚; ) HANGUL SYLLABLE DOEGG
+B41B;B41B;1103 116C 11AA;B41B;1103 116C 11AA; # (ë›; ë›; 됛; ë›; 됛; ) HANGUL SYLLABLE DOEGS
+B41C;B41C;1103 116C 11AB;B41C;1103 116C 11AB; # (ëœ; ëœ; 된; ëœ; 된; ) HANGUL SYLLABLE DOEN
+B41D;B41D;1103 116C 11AC;B41D;1103 116C 11AC; # (ë; ë; 됝; ë; 됝; ) HANGUL SYLLABLE DOENJ
+B41E;B41E;1103 116C 11AD;B41E;1103 116C 11AD; # (ëž; ëž; 됞; ëž; 됞; ) HANGUL SYLLABLE DOENH
+B41F;B41F;1103 116C 11AE;B41F;1103 116C 11AE; # (ëŸ; ëŸ; 됟; ëŸ; 됟; ) HANGUL SYLLABLE DOED
+B420;B420;1103 116C 11AF;B420;1103 116C 11AF; # (ë ; ë ; 될; ë ; 될; ) HANGUL SYLLABLE DOEL
+B421;B421;1103 116C 11B0;B421;1103 116C 11B0; # (ë¡; ë¡; 됡; ë¡; 됡; ) HANGUL SYLLABLE DOELG
+B422;B422;1103 116C 11B1;B422;1103 116C 11B1; # (ë¢; ë¢; 됢; ë¢; 됢; ) HANGUL SYLLABLE DOELM
+B423;B423;1103 116C 11B2;B423;1103 116C 11B2; # (ë£; ë£; 됣; ë£; 됣; ) HANGUL SYLLABLE DOELB
+B424;B424;1103 116C 11B3;B424;1103 116C 11B3; # (ë¤; ë¤; 됤; ë¤; 됤; ) HANGUL SYLLABLE DOELS
+B425;B425;1103 116C 11B4;B425;1103 116C 11B4; # (ë¥; ë¥; 됥; ë¥; 됥; ) HANGUL SYLLABLE DOELT
+B426;B426;1103 116C 11B5;B426;1103 116C 11B5; # (ë¦; ë¦; 됦; ë¦; 됦; ) HANGUL SYLLABLE DOELP
+B427;B427;1103 116C 11B6;B427;1103 116C 11B6; # (ë§; ë§; 됧; ë§; 됧; ) HANGUL SYLLABLE DOELH
+B428;B428;1103 116C 11B7;B428;1103 116C 11B7; # (ë¨; ë¨; 됨; ë¨; 됨; ) HANGUL SYLLABLE DOEM
+B429;B429;1103 116C 11B8;B429;1103 116C 11B8; # (ë©; ë©; 됩; ë©; 됩; ) HANGUL SYLLABLE DOEB
+B42A;B42A;1103 116C 11B9;B42A;1103 116C 11B9; # (ëª; ëª; 됪; ëª; 됪; ) HANGUL SYLLABLE DOEBS
+B42B;B42B;1103 116C 11BA;B42B;1103 116C 11BA; # (ë«; ë«; 됫; ë«; 됫; ) HANGUL SYLLABLE DOES
+B42C;B42C;1103 116C 11BB;B42C;1103 116C 11BB; # (ë¬; ë¬; 됬; ë¬; 됬; ) HANGUL SYLLABLE DOESS
+B42D;B42D;1103 116C 11BC;B42D;1103 116C 11BC; # (ë­; ë­; 됭; ë­; 됭; ) HANGUL SYLLABLE DOENG
+B42E;B42E;1103 116C 11BD;B42E;1103 116C 11BD; # (ë®; ë®; 됮; ë®; 됮; ) HANGUL SYLLABLE DOEJ
+B42F;B42F;1103 116C 11BE;B42F;1103 116C 11BE; # (ë¯; ë¯; 됯; ë¯; 됯; ) HANGUL SYLLABLE DOEC
+B430;B430;1103 116C 11BF;B430;1103 116C 11BF; # (ë°; ë°; 됰; ë°; 됰; ) HANGUL SYLLABLE DOEK
+B431;B431;1103 116C 11C0;B431;1103 116C 11C0; # (ë±; ë±; 됱; ë±; 됱; ) HANGUL SYLLABLE DOET
+B432;B432;1103 116C 11C1;B432;1103 116C 11C1; # (ë²; ë²; 되á‡; ë²; 되á‡; ) HANGUL SYLLABLE DOEP
+B433;B433;1103 116C 11C2;B433;1103 116C 11C2; # (ë³; ë³; 됳; ë³; 됳; ) HANGUL SYLLABLE DOEH
+B434;B434;1103 116D;B434;1103 116D; # (ë´; ë´; 됴; ë´; 됴; ) HANGUL SYLLABLE DYO
+B435;B435;1103 116D 11A8;B435;1103 116D 11A8; # (ëµ; ëµ; 됵; ëµ; 됵; ) HANGUL SYLLABLE DYOG
+B436;B436;1103 116D 11A9;B436;1103 116D 11A9; # (ë¶; ë¶; 됶; ë¶; 됶; ) HANGUL SYLLABLE DYOGG
+B437;B437;1103 116D 11AA;B437;1103 116D 11AA; # (ë·; ë·; 됷; ë·; 됷; ) HANGUL SYLLABLE DYOGS
+B438;B438;1103 116D 11AB;B438;1103 116D 11AB; # (ë¸; ë¸; 됸; ë¸; 됸; ) HANGUL SYLLABLE DYON
+B439;B439;1103 116D 11AC;B439;1103 116D 11AC; # (ë¹; ë¹; 됹; ë¹; 됹; ) HANGUL SYLLABLE DYONJ
+B43A;B43A;1103 116D 11AD;B43A;1103 116D 11AD; # (ëº; ëº; 됺; ëº; 됺; ) HANGUL SYLLABLE DYONH
+B43B;B43B;1103 116D 11AE;B43B;1103 116D 11AE; # (ë»; ë»; 됻; ë»; 됻; ) HANGUL SYLLABLE DYOD
+B43C;B43C;1103 116D 11AF;B43C;1103 116D 11AF; # (ë¼; ë¼; 됼; ë¼; 됼; ) HANGUL SYLLABLE DYOL
+B43D;B43D;1103 116D 11B0;B43D;1103 116D 11B0; # (ë½; ë½; 됽; ë½; 됽; ) HANGUL SYLLABLE DYOLG
+B43E;B43E;1103 116D 11B1;B43E;1103 116D 11B1; # (ë¾; ë¾; 됾; ë¾; 됾; ) HANGUL SYLLABLE DYOLM
+B43F;B43F;1103 116D 11B2;B43F;1103 116D 11B2; # (ë¿; ë¿; 됿; ë¿; 됿; ) HANGUL SYLLABLE DYOLB
+B440;B440;1103 116D 11B3;B440;1103 116D 11B3; # (둀; 둀; 둀; 둀; 둀; ) HANGUL SYLLABLE DYOLS
+B441;B441;1103 116D 11B4;B441;1103 116D 11B4; # (ë‘; ë‘; 둁; ë‘; 둁; ) HANGUL SYLLABLE DYOLT
+B442;B442;1103 116D 11B5;B442;1103 116D 11B5; # (둂; 둂; 둂; 둂; 둂; ) HANGUL SYLLABLE DYOLP
+B443;B443;1103 116D 11B6;B443;1103 116D 11B6; # (둃; 둃; 둃; 둃; 둃; ) HANGUL SYLLABLE DYOLH
+B444;B444;1103 116D 11B7;B444;1103 116D 11B7; # (둄; 둄; 둄; 둄; 둄; ) HANGUL SYLLABLE DYOM
+B445;B445;1103 116D 11B8;B445;1103 116D 11B8; # (둅; 둅; 둅; 둅; 둅; ) HANGUL SYLLABLE DYOB
+B446;B446;1103 116D 11B9;B446;1103 116D 11B9; # (둆; 둆; 둆; 둆; 둆; ) HANGUL SYLLABLE DYOBS
+B447;B447;1103 116D 11BA;B447;1103 116D 11BA; # (둇; 둇; 둇; 둇; 둇; ) HANGUL SYLLABLE DYOS
+B448;B448;1103 116D 11BB;B448;1103 116D 11BB; # (둈; 둈; 둈; 둈; 둈; ) HANGUL SYLLABLE DYOSS
+B449;B449;1103 116D 11BC;B449;1103 116D 11BC; # (둉; 둉; 둉; 둉; 둉; ) HANGUL SYLLABLE DYONG
+B44A;B44A;1103 116D 11BD;B44A;1103 116D 11BD; # (둊; 둊; 둊; 둊; 둊; ) HANGUL SYLLABLE DYOJ
+B44B;B44B;1103 116D 11BE;B44B;1103 116D 11BE; # (둋; 둋; 둋; 둋; 둋; ) HANGUL SYLLABLE DYOC
+B44C;B44C;1103 116D 11BF;B44C;1103 116D 11BF; # (둌; 둌; 둌; 둌; 둌; ) HANGUL SYLLABLE DYOK
+B44D;B44D;1103 116D 11C0;B44D;1103 116D 11C0; # (ë‘; ë‘; 둍; ë‘; 둍; ) HANGUL SYLLABLE DYOT
+B44E;B44E;1103 116D 11C1;B44E;1103 116D 11C1; # (ë‘Ž; ë‘Ž; 됴á‡; ë‘Ž; 됴á‡; ) HANGUL SYLLABLE DYOP
+B44F;B44F;1103 116D 11C2;B44F;1103 116D 11C2; # (ë‘; ë‘; 둏; ë‘; 둏; ) HANGUL SYLLABLE DYOH
+B450;B450;1103 116E;B450;1103 116E; # (ë‘; ë‘; 두; ë‘; 두; ) HANGUL SYLLABLE DU
+B451;B451;1103 116E 11A8;B451;1103 116E 11A8; # (둑; 둑; 둑; 둑; 둑; ) HANGUL SYLLABLE DUG
+B452;B452;1103 116E 11A9;B452;1103 116E 11A9; # (둒; 둒; 둒; 둒; 둒; ) HANGUL SYLLABLE DUGG
+B453;B453;1103 116E 11AA;B453;1103 116E 11AA; # (둓; 둓; 둓; 둓; 둓; ) HANGUL SYLLABLE DUGS
+B454;B454;1103 116E 11AB;B454;1103 116E 11AB; # (둔; 둔; 둔; 둔; 둔; ) HANGUL SYLLABLE DUN
+B455;B455;1103 116E 11AC;B455;1103 116E 11AC; # (둕; 둕; 둕; 둕; 둕; ) HANGUL SYLLABLE DUNJ
+B456;B456;1103 116E 11AD;B456;1103 116E 11AD; # (둖; 둖; 둖; 둖; 둖; ) HANGUL SYLLABLE DUNH
+B457;B457;1103 116E 11AE;B457;1103 116E 11AE; # (둗; 둗; 둗; 둗; 둗; ) HANGUL SYLLABLE DUD
+B458;B458;1103 116E 11AF;B458;1103 116E 11AF; # (둘; 둘; 둘; 둘; 둘; ) HANGUL SYLLABLE DUL
+B459;B459;1103 116E 11B0;B459;1103 116E 11B0; # (둙; 둙; 둙; 둙; 둙; ) HANGUL SYLLABLE DULG
+B45A;B45A;1103 116E 11B1;B45A;1103 116E 11B1; # (둚; 둚; 둚; 둚; 둚; ) HANGUL SYLLABLE DULM
+B45B;B45B;1103 116E 11B2;B45B;1103 116E 11B2; # (둛; 둛; 둛; 둛; 둛; ) HANGUL SYLLABLE DULB
+B45C;B45C;1103 116E 11B3;B45C;1103 116E 11B3; # (둜; 둜; 둜; 둜; 둜; ) HANGUL SYLLABLE DULS
+B45D;B45D;1103 116E 11B4;B45D;1103 116E 11B4; # (ë‘; ë‘; 둝; ë‘; 둝; ) HANGUL SYLLABLE DULT
+B45E;B45E;1103 116E 11B5;B45E;1103 116E 11B5; # (둞; 둞; 둞; 둞; 둞; ) HANGUL SYLLABLE DULP
+B45F;B45F;1103 116E 11B6;B45F;1103 116E 11B6; # (둟; 둟; 둟; 둟; 둟; ) HANGUL SYLLABLE DULH
+B460;B460;1103 116E 11B7;B460;1103 116E 11B7; # (둠; 둠; 둠; 둠; 둠; ) HANGUL SYLLABLE DUM
+B461;B461;1103 116E 11B8;B461;1103 116E 11B8; # (둡; 둡; 둡; 둡; 둡; ) HANGUL SYLLABLE DUB
+B462;B462;1103 116E 11B9;B462;1103 116E 11B9; # (둢; 둢; 둢; 둢; 둢; ) HANGUL SYLLABLE DUBS
+B463;B463;1103 116E 11BA;B463;1103 116E 11BA; # (둣; 둣; 둣; 둣; 둣; ) HANGUL SYLLABLE DUS
+B464;B464;1103 116E 11BB;B464;1103 116E 11BB; # (둤; 둤; 둤; 둤; 둤; ) HANGUL SYLLABLE DUSS
+B465;B465;1103 116E 11BC;B465;1103 116E 11BC; # (둥; 둥; 둥; 둥; 둥; ) HANGUL SYLLABLE DUNG
+B466;B466;1103 116E 11BD;B466;1103 116E 11BD; # (둦; 둦; 둦; 둦; 둦; ) HANGUL SYLLABLE DUJ
+B467;B467;1103 116E 11BE;B467;1103 116E 11BE; # (둧; 둧; 둧; 둧; 둧; ) HANGUL SYLLABLE DUC
+B468;B468;1103 116E 11BF;B468;1103 116E 11BF; # (둨; 둨; 둨; 둨; 둨; ) HANGUL SYLLABLE DUK
+B469;B469;1103 116E 11C0;B469;1103 116E 11C0; # (둩; 둩; 둩; 둩; 둩; ) HANGUL SYLLABLE DUT
+B46A;B46A;1103 116E 11C1;B46A;1103 116E 11C1; # (둪; 둪; 두á‡; 둪; 두á‡; ) HANGUL SYLLABLE DUP
+B46B;B46B;1103 116E 11C2;B46B;1103 116E 11C2; # (둫; 둫; 둫; 둫; 둫; ) HANGUL SYLLABLE DUH
+B46C;B46C;1103 116F;B46C;1103 116F; # (둬; 둬; 둬; 둬; 둬; ) HANGUL SYLLABLE DWEO
+B46D;B46D;1103 116F 11A8;B46D;1103 116F 11A8; # (둭; 둭; 둭; 둭; 둭; ) HANGUL SYLLABLE DWEOG
+B46E;B46E;1103 116F 11A9;B46E;1103 116F 11A9; # (둮; 둮; 둮; 둮; 둮; ) HANGUL SYLLABLE DWEOGG
+B46F;B46F;1103 116F 11AA;B46F;1103 116F 11AA; # (둯; 둯; 둯; 둯; 둯; ) HANGUL SYLLABLE DWEOGS
+B470;B470;1103 116F 11AB;B470;1103 116F 11AB; # (둰; 둰; 둰; 둰; 둰; ) HANGUL SYLLABLE DWEON
+B471;B471;1103 116F 11AC;B471;1103 116F 11AC; # (둱; 둱; 둱; 둱; 둱; ) HANGUL SYLLABLE DWEONJ
+B472;B472;1103 116F 11AD;B472;1103 116F 11AD; # (둲; 둲; 둲; 둲; 둲; ) HANGUL SYLLABLE DWEONH
+B473;B473;1103 116F 11AE;B473;1103 116F 11AE; # (둳; 둳; 둳; 둳; 둳; ) HANGUL SYLLABLE DWEOD
+B474;B474;1103 116F 11AF;B474;1103 116F 11AF; # (둴; 둴; 둴; 둴; 둴; ) HANGUL SYLLABLE DWEOL
+B475;B475;1103 116F 11B0;B475;1103 116F 11B0; # (둵; 둵; 둵; 둵; 둵; ) HANGUL SYLLABLE DWEOLG
+B476;B476;1103 116F 11B1;B476;1103 116F 11B1; # (둶; 둶; 둶; 둶; 둶; ) HANGUL SYLLABLE DWEOLM
+B477;B477;1103 116F 11B2;B477;1103 116F 11B2; # (둷; 둷; 둷; 둷; 둷; ) HANGUL SYLLABLE DWEOLB
+B478;B478;1103 116F 11B3;B478;1103 116F 11B3; # (둸; 둸; 둸; 둸; 둸; ) HANGUL SYLLABLE DWEOLS
+B479;B479;1103 116F 11B4;B479;1103 116F 11B4; # (둹; 둹; 둹; 둹; 둹; ) HANGUL SYLLABLE DWEOLT
+B47A;B47A;1103 116F 11B5;B47A;1103 116F 11B5; # (둺; 둺; 둺; 둺; 둺; ) HANGUL SYLLABLE DWEOLP
+B47B;B47B;1103 116F 11B6;B47B;1103 116F 11B6; # (둻; 둻; 둻; 둻; 둻; ) HANGUL SYLLABLE DWEOLH
+B47C;B47C;1103 116F 11B7;B47C;1103 116F 11B7; # (둼; 둼; 둼; 둼; 둼; ) HANGUL SYLLABLE DWEOM
+B47D;B47D;1103 116F 11B8;B47D;1103 116F 11B8; # (둽; 둽; 둽; 둽; 둽; ) HANGUL SYLLABLE DWEOB
+B47E;B47E;1103 116F 11B9;B47E;1103 116F 11B9; # (둾; 둾; 둾; 둾; 둾; ) HANGUL SYLLABLE DWEOBS
+B47F;B47F;1103 116F 11BA;B47F;1103 116F 11BA; # (둿; 둿; 둿; 둿; 둿; ) HANGUL SYLLABLE DWEOS
+B480;B480;1103 116F 11BB;B480;1103 116F 11BB; # (뒀; 뒀; 뒀; 뒀; 뒀; ) HANGUL SYLLABLE DWEOSS
+B481;B481;1103 116F 11BC;B481;1103 116F 11BC; # (ë’; ë’; 뒁; ë’; 뒁; ) HANGUL SYLLABLE DWEONG
+B482;B482;1103 116F 11BD;B482;1103 116F 11BD; # (뒂; 뒂; 뒂; 뒂; 뒂; ) HANGUL SYLLABLE DWEOJ
+B483;B483;1103 116F 11BE;B483;1103 116F 11BE; # (뒃; 뒃; 뒃; 뒃; 뒃; ) HANGUL SYLLABLE DWEOC
+B484;B484;1103 116F 11BF;B484;1103 116F 11BF; # (뒄; 뒄; 뒄; 뒄; 뒄; ) HANGUL SYLLABLE DWEOK
+B485;B485;1103 116F 11C0;B485;1103 116F 11C0; # (뒅; 뒅; 뒅; 뒅; 뒅; ) HANGUL SYLLABLE DWEOT
+B486;B486;1103 116F 11C1;B486;1103 116F 11C1; # (ë’†; ë’†; 둬á‡; ë’†; 둬á‡; ) HANGUL SYLLABLE DWEOP
+B487;B487;1103 116F 11C2;B487;1103 116F 11C2; # (뒇; 뒇; 뒇; 뒇; 뒇; ) HANGUL SYLLABLE DWEOH
+B488;B488;1103 1170;B488;1103 1170; # (뒈; 뒈; 뒈; 뒈; 뒈; ) HANGUL SYLLABLE DWE
+B489;B489;1103 1170 11A8;B489;1103 1170 11A8; # (뒉; 뒉; 뒉; 뒉; 뒉; ) HANGUL SYLLABLE DWEG
+B48A;B48A;1103 1170 11A9;B48A;1103 1170 11A9; # (뒊; 뒊; 뒊; 뒊; 뒊; ) HANGUL SYLLABLE DWEGG
+B48B;B48B;1103 1170 11AA;B48B;1103 1170 11AA; # (뒋; 뒋; 뒋; 뒋; 뒋; ) HANGUL SYLLABLE DWEGS
+B48C;B48C;1103 1170 11AB;B48C;1103 1170 11AB; # (뒌; 뒌; 뒌; 뒌; 뒌; ) HANGUL SYLLABLE DWEN
+B48D;B48D;1103 1170 11AC;B48D;1103 1170 11AC; # (ë’; ë’; 뒍; ë’; 뒍; ) HANGUL SYLLABLE DWENJ
+B48E;B48E;1103 1170 11AD;B48E;1103 1170 11AD; # (뒎; 뒎; 뒎; 뒎; 뒎; ) HANGUL SYLLABLE DWENH
+B48F;B48F;1103 1170 11AE;B48F;1103 1170 11AE; # (ë’; ë’; 뒏; ë’; 뒏; ) HANGUL SYLLABLE DWED
+B490;B490;1103 1170 11AF;B490;1103 1170 11AF; # (ë’; ë’; 뒐; ë’; 뒐; ) HANGUL SYLLABLE DWEL
+B491;B491;1103 1170 11B0;B491;1103 1170 11B0; # (뒑; 뒑; 뒑; 뒑; 뒑; ) HANGUL SYLLABLE DWELG
+B492;B492;1103 1170 11B1;B492;1103 1170 11B1; # (뒒; 뒒; 뒒; 뒒; 뒒; ) HANGUL SYLLABLE DWELM
+B493;B493;1103 1170 11B2;B493;1103 1170 11B2; # (뒓; 뒓; 뒓; 뒓; 뒓; ) HANGUL SYLLABLE DWELB
+B494;B494;1103 1170 11B3;B494;1103 1170 11B3; # (뒔; 뒔; 뒔; 뒔; 뒔; ) HANGUL SYLLABLE DWELS
+B495;B495;1103 1170 11B4;B495;1103 1170 11B4; # (뒕; 뒕; 뒕; 뒕; 뒕; ) HANGUL SYLLABLE DWELT
+B496;B496;1103 1170 11B5;B496;1103 1170 11B5; # (뒖; 뒖; 뒖; 뒖; 뒖; ) HANGUL SYLLABLE DWELP
+B497;B497;1103 1170 11B6;B497;1103 1170 11B6; # (뒗; 뒗; 뒗; 뒗; 뒗; ) HANGUL SYLLABLE DWELH
+B498;B498;1103 1170 11B7;B498;1103 1170 11B7; # (뒘; 뒘; 뒘; 뒘; 뒘; ) HANGUL SYLLABLE DWEM
+B499;B499;1103 1170 11B8;B499;1103 1170 11B8; # (뒙; 뒙; 뒙; 뒙; 뒙; ) HANGUL SYLLABLE DWEB
+B49A;B49A;1103 1170 11B9;B49A;1103 1170 11B9; # (뒚; 뒚; 뒚; 뒚; 뒚; ) HANGUL SYLLABLE DWEBS
+B49B;B49B;1103 1170 11BA;B49B;1103 1170 11BA; # (뒛; 뒛; 뒛; 뒛; 뒛; ) HANGUL SYLLABLE DWES
+B49C;B49C;1103 1170 11BB;B49C;1103 1170 11BB; # (뒜; 뒜; 뒜; 뒜; 뒜; ) HANGUL SYLLABLE DWESS
+B49D;B49D;1103 1170 11BC;B49D;1103 1170 11BC; # (ë’; ë’; 뒝; ë’; 뒝; ) HANGUL SYLLABLE DWENG
+B49E;B49E;1103 1170 11BD;B49E;1103 1170 11BD; # (뒞; 뒞; 뒞; 뒞; 뒞; ) HANGUL SYLLABLE DWEJ
+B49F;B49F;1103 1170 11BE;B49F;1103 1170 11BE; # (뒟; 뒟; 뒟; 뒟; 뒟; ) HANGUL SYLLABLE DWEC
+B4A0;B4A0;1103 1170 11BF;B4A0;1103 1170 11BF; # (뒠; 뒠; 뒠; 뒠; 뒠; ) HANGUL SYLLABLE DWEK
+B4A1;B4A1;1103 1170 11C0;B4A1;1103 1170 11C0; # (뒡; 뒡; 뒡; 뒡; 뒡; ) HANGUL SYLLABLE DWET
+B4A2;B4A2;1103 1170 11C1;B4A2;1103 1170 11C1; # (ë’¢; ë’¢; 뒈á‡; ë’¢; 뒈á‡; ) HANGUL SYLLABLE DWEP
+B4A3;B4A3;1103 1170 11C2;B4A3;1103 1170 11C2; # (뒣; 뒣; 뒣; 뒣; 뒣; ) HANGUL SYLLABLE DWEH
+B4A4;B4A4;1103 1171;B4A4;1103 1171; # (뒤; 뒤; 뒤; 뒤; 뒤; ) HANGUL SYLLABLE DWI
+B4A5;B4A5;1103 1171 11A8;B4A5;1103 1171 11A8; # (뒥; 뒥; 뒥; 뒥; 뒥; ) HANGUL SYLLABLE DWIG
+B4A6;B4A6;1103 1171 11A9;B4A6;1103 1171 11A9; # (뒦; 뒦; 뒦; 뒦; 뒦; ) HANGUL SYLLABLE DWIGG
+B4A7;B4A7;1103 1171 11AA;B4A7;1103 1171 11AA; # (뒧; 뒧; 뒧; 뒧; 뒧; ) HANGUL SYLLABLE DWIGS
+B4A8;B4A8;1103 1171 11AB;B4A8;1103 1171 11AB; # (뒨; 뒨; 뒨; 뒨; 뒨; ) HANGUL SYLLABLE DWIN
+B4A9;B4A9;1103 1171 11AC;B4A9;1103 1171 11AC; # (뒩; 뒩; 뒩; 뒩; 뒩; ) HANGUL SYLLABLE DWINJ
+B4AA;B4AA;1103 1171 11AD;B4AA;1103 1171 11AD; # (뒪; 뒪; 뒪; 뒪; 뒪; ) HANGUL SYLLABLE DWINH
+B4AB;B4AB;1103 1171 11AE;B4AB;1103 1171 11AE; # (뒫; 뒫; 뒫; 뒫; 뒫; ) HANGUL SYLLABLE DWID
+B4AC;B4AC;1103 1171 11AF;B4AC;1103 1171 11AF; # (뒬; 뒬; 뒬; 뒬; 뒬; ) HANGUL SYLLABLE DWIL
+B4AD;B4AD;1103 1171 11B0;B4AD;1103 1171 11B0; # (뒭; 뒭; 뒭; 뒭; 뒭; ) HANGUL SYLLABLE DWILG
+B4AE;B4AE;1103 1171 11B1;B4AE;1103 1171 11B1; # (뒮; 뒮; 뒮; 뒮; 뒮; ) HANGUL SYLLABLE DWILM
+B4AF;B4AF;1103 1171 11B2;B4AF;1103 1171 11B2; # (뒯; 뒯; 뒯; 뒯; 뒯; ) HANGUL SYLLABLE DWILB
+B4B0;B4B0;1103 1171 11B3;B4B0;1103 1171 11B3; # (뒰; 뒰; 뒰; 뒰; 뒰; ) HANGUL SYLLABLE DWILS
+B4B1;B4B1;1103 1171 11B4;B4B1;1103 1171 11B4; # (뒱; 뒱; 뒱; 뒱; 뒱; ) HANGUL SYLLABLE DWILT
+B4B2;B4B2;1103 1171 11B5;B4B2;1103 1171 11B5; # (뒲; 뒲; 뒲; 뒲; 뒲; ) HANGUL SYLLABLE DWILP
+B4B3;B4B3;1103 1171 11B6;B4B3;1103 1171 11B6; # (뒳; 뒳; 뒳; 뒳; 뒳; ) HANGUL SYLLABLE DWILH
+B4B4;B4B4;1103 1171 11B7;B4B4;1103 1171 11B7; # (뒴; 뒴; 뒴; 뒴; 뒴; ) HANGUL SYLLABLE DWIM
+B4B5;B4B5;1103 1171 11B8;B4B5;1103 1171 11B8; # (뒵; 뒵; 뒵; 뒵; 뒵; ) HANGUL SYLLABLE DWIB
+B4B6;B4B6;1103 1171 11B9;B4B6;1103 1171 11B9; # (뒶; 뒶; 뒶; 뒶; 뒶; ) HANGUL SYLLABLE DWIBS
+B4B7;B4B7;1103 1171 11BA;B4B7;1103 1171 11BA; # (뒷; 뒷; 뒷; 뒷; 뒷; ) HANGUL SYLLABLE DWIS
+B4B8;B4B8;1103 1171 11BB;B4B8;1103 1171 11BB; # (뒸; 뒸; 뒸; 뒸; 뒸; ) HANGUL SYLLABLE DWISS
+B4B9;B4B9;1103 1171 11BC;B4B9;1103 1171 11BC; # (뒹; 뒹; 뒹; 뒹; 뒹; ) HANGUL SYLLABLE DWING
+B4BA;B4BA;1103 1171 11BD;B4BA;1103 1171 11BD; # (뒺; 뒺; 뒺; 뒺; 뒺; ) HANGUL SYLLABLE DWIJ
+B4BB;B4BB;1103 1171 11BE;B4BB;1103 1171 11BE; # (뒻; 뒻; 뒻; 뒻; 뒻; ) HANGUL SYLLABLE DWIC
+B4BC;B4BC;1103 1171 11BF;B4BC;1103 1171 11BF; # (뒼; 뒼; 뒼; 뒼; 뒼; ) HANGUL SYLLABLE DWIK
+B4BD;B4BD;1103 1171 11C0;B4BD;1103 1171 11C0; # (뒽; 뒽; 뒽; 뒽; 뒽; ) HANGUL SYLLABLE DWIT
+B4BE;B4BE;1103 1171 11C1;B4BE;1103 1171 11C1; # (ë’¾; ë’¾; 뒤á‡; ë’¾; 뒤á‡; ) HANGUL SYLLABLE DWIP
+B4BF;B4BF;1103 1171 11C2;B4BF;1103 1171 11C2; # (뒿; 뒿; 뒿; 뒿; 뒿; ) HANGUL SYLLABLE DWIH
+B4C0;B4C0;1103 1172;B4C0;1103 1172; # (듀; 듀; 듀; 듀; 듀; ) HANGUL SYLLABLE DYU
+B4C1;B4C1;1103 1172 11A8;B4C1;1103 1172 11A8; # (ë“; ë“; 듁; ë“; 듁; ) HANGUL SYLLABLE DYUG
+B4C2;B4C2;1103 1172 11A9;B4C2;1103 1172 11A9; # (듂; 듂; 듂; 듂; 듂; ) HANGUL SYLLABLE DYUGG
+B4C3;B4C3;1103 1172 11AA;B4C3;1103 1172 11AA; # (듃; 듃; 듃; 듃; 듃; ) HANGUL SYLLABLE DYUGS
+B4C4;B4C4;1103 1172 11AB;B4C4;1103 1172 11AB; # (듄; 듄; 듄; 듄; 듄; ) HANGUL SYLLABLE DYUN
+B4C5;B4C5;1103 1172 11AC;B4C5;1103 1172 11AC; # (듅; 듅; 듅; 듅; 듅; ) HANGUL SYLLABLE DYUNJ
+B4C6;B4C6;1103 1172 11AD;B4C6;1103 1172 11AD; # (듆; 듆; 듆; 듆; 듆; ) HANGUL SYLLABLE DYUNH
+B4C7;B4C7;1103 1172 11AE;B4C7;1103 1172 11AE; # (듇; 듇; 듇; 듇; 듇; ) HANGUL SYLLABLE DYUD
+B4C8;B4C8;1103 1172 11AF;B4C8;1103 1172 11AF; # (듈; 듈; 듈; 듈; 듈; ) HANGUL SYLLABLE DYUL
+B4C9;B4C9;1103 1172 11B0;B4C9;1103 1172 11B0; # (듉; 듉; 듉; 듉; 듉; ) HANGUL SYLLABLE DYULG
+B4CA;B4CA;1103 1172 11B1;B4CA;1103 1172 11B1; # (듊; 듊; 듊; 듊; 듊; ) HANGUL SYLLABLE DYULM
+B4CB;B4CB;1103 1172 11B2;B4CB;1103 1172 11B2; # (듋; 듋; 듋; 듋; 듋; ) HANGUL SYLLABLE DYULB
+B4CC;B4CC;1103 1172 11B3;B4CC;1103 1172 11B3; # (듌; 듌; 듌; 듌; 듌; ) HANGUL SYLLABLE DYULS
+B4CD;B4CD;1103 1172 11B4;B4CD;1103 1172 11B4; # (ë“; ë“; 듍; ë“; 듍; ) HANGUL SYLLABLE DYULT
+B4CE;B4CE;1103 1172 11B5;B4CE;1103 1172 11B5; # (듎; 듎; 듎; 듎; 듎; ) HANGUL SYLLABLE DYULP
+B4CF;B4CF;1103 1172 11B6;B4CF;1103 1172 11B6; # (ë“; ë“; 듏; ë“; 듏; ) HANGUL SYLLABLE DYULH
+B4D0;B4D0;1103 1172 11B7;B4D0;1103 1172 11B7; # (ë“; ë“; 듐; ë“; 듐; ) HANGUL SYLLABLE DYUM
+B4D1;B4D1;1103 1172 11B8;B4D1;1103 1172 11B8; # (듑; 듑; 듑; 듑; 듑; ) HANGUL SYLLABLE DYUB
+B4D2;B4D2;1103 1172 11B9;B4D2;1103 1172 11B9; # (듒; 듒; 듒; 듒; 듒; ) HANGUL SYLLABLE DYUBS
+B4D3;B4D3;1103 1172 11BA;B4D3;1103 1172 11BA; # (듓; 듓; 듓; 듓; 듓; ) HANGUL SYLLABLE DYUS
+B4D4;B4D4;1103 1172 11BB;B4D4;1103 1172 11BB; # (듔; 듔; 듔; 듔; 듔; ) HANGUL SYLLABLE DYUSS
+B4D5;B4D5;1103 1172 11BC;B4D5;1103 1172 11BC; # (듕; 듕; 듕; 듕; 듕; ) HANGUL SYLLABLE DYUNG
+B4D6;B4D6;1103 1172 11BD;B4D6;1103 1172 11BD; # (듖; 듖; 듖; 듖; 듖; ) HANGUL SYLLABLE DYUJ
+B4D7;B4D7;1103 1172 11BE;B4D7;1103 1172 11BE; # (듗; 듗; 듗; 듗; 듗; ) HANGUL SYLLABLE DYUC
+B4D8;B4D8;1103 1172 11BF;B4D8;1103 1172 11BF; # (듘; 듘; 듘; 듘; 듘; ) HANGUL SYLLABLE DYUK
+B4D9;B4D9;1103 1172 11C0;B4D9;1103 1172 11C0; # (듙; 듙; 듙; 듙; 듙; ) HANGUL SYLLABLE DYUT
+B4DA;B4DA;1103 1172 11C1;B4DA;1103 1172 11C1; # (ë“š; ë“š; 듀á‡; ë“š; 듀á‡; ) HANGUL SYLLABLE DYUP
+B4DB;B4DB;1103 1172 11C2;B4DB;1103 1172 11C2; # (듛; 듛; 듛; 듛; 듛; ) HANGUL SYLLABLE DYUH
+B4DC;B4DC;1103 1173;B4DC;1103 1173; # (드; 드; 드; 드; 드; ) HANGUL SYLLABLE DEU
+B4DD;B4DD;1103 1173 11A8;B4DD;1103 1173 11A8; # (ë“; ë“; 득; ë“; 득; ) HANGUL SYLLABLE DEUG
+B4DE;B4DE;1103 1173 11A9;B4DE;1103 1173 11A9; # (듞; 듞; 듞; 듞; 듞; ) HANGUL SYLLABLE DEUGG
+B4DF;B4DF;1103 1173 11AA;B4DF;1103 1173 11AA; # (듟; 듟; 듟; 듟; 듟; ) HANGUL SYLLABLE DEUGS
+B4E0;B4E0;1103 1173 11AB;B4E0;1103 1173 11AB; # (든; 든; 든; 든; 든; ) HANGUL SYLLABLE DEUN
+B4E1;B4E1;1103 1173 11AC;B4E1;1103 1173 11AC; # (듡; 듡; 듡; 듡; 듡; ) HANGUL SYLLABLE DEUNJ
+B4E2;B4E2;1103 1173 11AD;B4E2;1103 1173 11AD; # (듢; 듢; 듢; 듢; 듢; ) HANGUL SYLLABLE DEUNH
+B4E3;B4E3;1103 1173 11AE;B4E3;1103 1173 11AE; # (듣; 듣; 듣; 듣; 듣; ) HANGUL SYLLABLE DEUD
+B4E4;B4E4;1103 1173 11AF;B4E4;1103 1173 11AF; # (들; 들; 들; 들; 들; ) HANGUL SYLLABLE DEUL
+B4E5;B4E5;1103 1173 11B0;B4E5;1103 1173 11B0; # (듥; 듥; 듥; 듥; 듥; ) HANGUL SYLLABLE DEULG
+B4E6;B4E6;1103 1173 11B1;B4E6;1103 1173 11B1; # (듦; 듦; 듦; 듦; 듦; ) HANGUL SYLLABLE DEULM
+B4E7;B4E7;1103 1173 11B2;B4E7;1103 1173 11B2; # (듧; 듧; 듧; 듧; 듧; ) HANGUL SYLLABLE DEULB
+B4E8;B4E8;1103 1173 11B3;B4E8;1103 1173 11B3; # (듨; 듨; 듨; 듨; 듨; ) HANGUL SYLLABLE DEULS
+B4E9;B4E9;1103 1173 11B4;B4E9;1103 1173 11B4; # (듩; 듩; 듩; 듩; 듩; ) HANGUL SYLLABLE DEULT
+B4EA;B4EA;1103 1173 11B5;B4EA;1103 1173 11B5; # (듪; 듪; 듪; 듪; 듪; ) HANGUL SYLLABLE DEULP
+B4EB;B4EB;1103 1173 11B6;B4EB;1103 1173 11B6; # (듫; 듫; 듫; 듫; 듫; ) HANGUL SYLLABLE DEULH
+B4EC;B4EC;1103 1173 11B7;B4EC;1103 1173 11B7; # (듬; 듬; 듬; 듬; 듬; ) HANGUL SYLLABLE DEUM
+B4ED;B4ED;1103 1173 11B8;B4ED;1103 1173 11B8; # (듭; 듭; 듭; 듭; 듭; ) HANGUL SYLLABLE DEUB
+B4EE;B4EE;1103 1173 11B9;B4EE;1103 1173 11B9; # (듮; 듮; 듮; 듮; 듮; ) HANGUL SYLLABLE DEUBS
+B4EF;B4EF;1103 1173 11BA;B4EF;1103 1173 11BA; # (듯; 듯; 듯; 듯; 듯; ) HANGUL SYLLABLE DEUS
+B4F0;B4F0;1103 1173 11BB;B4F0;1103 1173 11BB; # (듰; 듰; 듰; 듰; 듰; ) HANGUL SYLLABLE DEUSS
+B4F1;B4F1;1103 1173 11BC;B4F1;1103 1173 11BC; # (등; 등; 등; 등; 등; ) HANGUL SYLLABLE DEUNG
+B4F2;B4F2;1103 1173 11BD;B4F2;1103 1173 11BD; # (듲; 듲; 듲; 듲; 듲; ) HANGUL SYLLABLE DEUJ
+B4F3;B4F3;1103 1173 11BE;B4F3;1103 1173 11BE; # (듳; 듳; 듳; 듳; 듳; ) HANGUL SYLLABLE DEUC
+B4F4;B4F4;1103 1173 11BF;B4F4;1103 1173 11BF; # (듴; 듴; 듴; 듴; 듴; ) HANGUL SYLLABLE DEUK
+B4F5;B4F5;1103 1173 11C0;B4F5;1103 1173 11C0; # (듵; 듵; 듵; 듵; 듵; ) HANGUL SYLLABLE DEUT
+B4F6;B4F6;1103 1173 11C1;B4F6;1103 1173 11C1; # (듶; 듶; 드á‡; 듶; 드á‡; ) HANGUL SYLLABLE DEUP
+B4F7;B4F7;1103 1173 11C2;B4F7;1103 1173 11C2; # (듷; 듷; 듷; 듷; 듷; ) HANGUL SYLLABLE DEUH
+B4F8;B4F8;1103 1174;B4F8;1103 1174; # (듸; 듸; 듸; 듸; 듸; ) HANGUL SYLLABLE DYI
+B4F9;B4F9;1103 1174 11A8;B4F9;1103 1174 11A8; # (듹; 듹; 듹; 듹; 듹; ) HANGUL SYLLABLE DYIG
+B4FA;B4FA;1103 1174 11A9;B4FA;1103 1174 11A9; # (듺; 듺; 듺; 듺; 듺; ) HANGUL SYLLABLE DYIGG
+B4FB;B4FB;1103 1174 11AA;B4FB;1103 1174 11AA; # (듻; 듻; 듻; 듻; 듻; ) HANGUL SYLLABLE DYIGS
+B4FC;B4FC;1103 1174 11AB;B4FC;1103 1174 11AB; # (듼; 듼; 듼; 듼; 듼; ) HANGUL SYLLABLE DYIN
+B4FD;B4FD;1103 1174 11AC;B4FD;1103 1174 11AC; # (듽; 듽; 듽; 듽; 듽; ) HANGUL SYLLABLE DYINJ
+B4FE;B4FE;1103 1174 11AD;B4FE;1103 1174 11AD; # (듾; 듾; 듾; 듾; 듾; ) HANGUL SYLLABLE DYINH
+B4FF;B4FF;1103 1174 11AE;B4FF;1103 1174 11AE; # (듿; 듿; 듿; 듿; 듿; ) HANGUL SYLLABLE DYID
+B500;B500;1103 1174 11AF;B500;1103 1174 11AF; # (딀; 딀; 딀; 딀; 딀; ) HANGUL SYLLABLE DYIL
+B501;B501;1103 1174 11B0;B501;1103 1174 11B0; # (ë”; ë”; 딁; ë”; 딁; ) HANGUL SYLLABLE DYILG
+B502;B502;1103 1174 11B1;B502;1103 1174 11B1; # (딂; 딂; 딂; 딂; 딂; ) HANGUL SYLLABLE DYILM
+B503;B503;1103 1174 11B2;B503;1103 1174 11B2; # (딃; 딃; 딃; 딃; 딃; ) HANGUL SYLLABLE DYILB
+B504;B504;1103 1174 11B3;B504;1103 1174 11B3; # (딄; 딄; 딄; 딄; 딄; ) HANGUL SYLLABLE DYILS
+B505;B505;1103 1174 11B4;B505;1103 1174 11B4; # (딅; 딅; 딅; 딅; 딅; ) HANGUL SYLLABLE DYILT
+B506;B506;1103 1174 11B5;B506;1103 1174 11B5; # (딆; 딆; 딆; 딆; 딆; ) HANGUL SYLLABLE DYILP
+B507;B507;1103 1174 11B6;B507;1103 1174 11B6; # (딇; 딇; 딇; 딇; 딇; ) HANGUL SYLLABLE DYILH
+B508;B508;1103 1174 11B7;B508;1103 1174 11B7; # (딈; 딈; 딈; 딈; 딈; ) HANGUL SYLLABLE DYIM
+B509;B509;1103 1174 11B8;B509;1103 1174 11B8; # (딉; 딉; 딉; 딉; 딉; ) HANGUL SYLLABLE DYIB
+B50A;B50A;1103 1174 11B9;B50A;1103 1174 11B9; # (딊; 딊; 딊; 딊; 딊; ) HANGUL SYLLABLE DYIBS
+B50B;B50B;1103 1174 11BA;B50B;1103 1174 11BA; # (딋; 딋; 딋; 딋; 딋; ) HANGUL SYLLABLE DYIS
+B50C;B50C;1103 1174 11BB;B50C;1103 1174 11BB; # (딌; 딌; 딌; 딌; 딌; ) HANGUL SYLLABLE DYISS
+B50D;B50D;1103 1174 11BC;B50D;1103 1174 11BC; # (ë”; ë”; 딍; ë”; 딍; ) HANGUL SYLLABLE DYING
+B50E;B50E;1103 1174 11BD;B50E;1103 1174 11BD; # (딎; 딎; 딎; 딎; 딎; ) HANGUL SYLLABLE DYIJ
+B50F;B50F;1103 1174 11BE;B50F;1103 1174 11BE; # (ë”; ë”; 딏; ë”; 딏; ) HANGUL SYLLABLE DYIC
+B510;B510;1103 1174 11BF;B510;1103 1174 11BF; # (ë”; ë”; 딐; ë”; 딐; ) HANGUL SYLLABLE DYIK
+B511;B511;1103 1174 11C0;B511;1103 1174 11C0; # (딑; 딑; 딑; 딑; 딑; ) HANGUL SYLLABLE DYIT
+B512;B512;1103 1174 11C1;B512;1103 1174 11C1; # (ë”’; ë”’; 듸á‡; ë”’; 듸á‡; ) HANGUL SYLLABLE DYIP
+B513;B513;1103 1174 11C2;B513;1103 1174 11C2; # (딓; 딓; 딓; 딓; 딓; ) HANGUL SYLLABLE DYIH
+B514;B514;1103 1175;B514;1103 1175; # (디; 디; 디; 디; 디; ) HANGUL SYLLABLE DI
+B515;B515;1103 1175 11A8;B515;1103 1175 11A8; # (딕; 딕; 딕; 딕; 딕; ) HANGUL SYLLABLE DIG
+B516;B516;1103 1175 11A9;B516;1103 1175 11A9; # (딖; 딖; 딖; 딖; 딖; ) HANGUL SYLLABLE DIGG
+B517;B517;1103 1175 11AA;B517;1103 1175 11AA; # (딗; 딗; 딗; 딗; 딗; ) HANGUL SYLLABLE DIGS
+B518;B518;1103 1175 11AB;B518;1103 1175 11AB; # (딘; 딘; 딘; 딘; 딘; ) HANGUL SYLLABLE DIN
+B519;B519;1103 1175 11AC;B519;1103 1175 11AC; # (딙; 딙; 딙; 딙; 딙; ) HANGUL SYLLABLE DINJ
+B51A;B51A;1103 1175 11AD;B51A;1103 1175 11AD; # (딚; 딚; 딚; 딚; 딚; ) HANGUL SYLLABLE DINH
+B51B;B51B;1103 1175 11AE;B51B;1103 1175 11AE; # (딛; 딛; 딛; 딛; 딛; ) HANGUL SYLLABLE DID
+B51C;B51C;1103 1175 11AF;B51C;1103 1175 11AF; # (딜; 딜; 딜; 딜; 딜; ) HANGUL SYLLABLE DIL
+B51D;B51D;1103 1175 11B0;B51D;1103 1175 11B0; # (ë”; ë”; 딝; ë”; 딝; ) HANGUL SYLLABLE DILG
+B51E;B51E;1103 1175 11B1;B51E;1103 1175 11B1; # (딞; 딞; 딞; 딞; 딞; ) HANGUL SYLLABLE DILM
+B51F;B51F;1103 1175 11B2;B51F;1103 1175 11B2; # (딟; 딟; 딟; 딟; 딟; ) HANGUL SYLLABLE DILB
+B520;B520;1103 1175 11B3;B520;1103 1175 11B3; # (딠; 딠; 딠; 딠; 딠; ) HANGUL SYLLABLE DILS
+B521;B521;1103 1175 11B4;B521;1103 1175 11B4; # (딡; 딡; 딡; 딡; 딡; ) HANGUL SYLLABLE DILT
+B522;B522;1103 1175 11B5;B522;1103 1175 11B5; # (딢; 딢; 딢; 딢; 딢; ) HANGUL SYLLABLE DILP
+B523;B523;1103 1175 11B6;B523;1103 1175 11B6; # (딣; 딣; 딣; 딣; 딣; ) HANGUL SYLLABLE DILH
+B524;B524;1103 1175 11B7;B524;1103 1175 11B7; # (딤; 딤; 딤; 딤; 딤; ) HANGUL SYLLABLE DIM
+B525;B525;1103 1175 11B8;B525;1103 1175 11B8; # (딥; 딥; 딥; 딥; 딥; ) HANGUL SYLLABLE DIB
+B526;B526;1103 1175 11B9;B526;1103 1175 11B9; # (딦; 딦; 딦; 딦; 딦; ) HANGUL SYLLABLE DIBS
+B527;B527;1103 1175 11BA;B527;1103 1175 11BA; # (딧; 딧; 딧; 딧; 딧; ) HANGUL SYLLABLE DIS
+B528;B528;1103 1175 11BB;B528;1103 1175 11BB; # (딨; 딨; 딨; 딨; 딨; ) HANGUL SYLLABLE DISS
+B529;B529;1103 1175 11BC;B529;1103 1175 11BC; # (딩; 딩; 딩; 딩; 딩; ) HANGUL SYLLABLE DING
+B52A;B52A;1103 1175 11BD;B52A;1103 1175 11BD; # (딪; 딪; 딪; 딪; 딪; ) HANGUL SYLLABLE DIJ
+B52B;B52B;1103 1175 11BE;B52B;1103 1175 11BE; # (딫; 딫; 딫; 딫; 딫; ) HANGUL SYLLABLE DIC
+B52C;B52C;1103 1175 11BF;B52C;1103 1175 11BF; # (딬; 딬; 딬; 딬; 딬; ) HANGUL SYLLABLE DIK
+B52D;B52D;1103 1175 11C0;B52D;1103 1175 11C0; # (딭; 딭; 딭; 딭; 딭; ) HANGUL SYLLABLE DIT
+B52E;B52E;1103 1175 11C1;B52E;1103 1175 11C1; # (ë”®; ë”®; 디á‡; ë”®; 디á‡; ) HANGUL SYLLABLE DIP
+B52F;B52F;1103 1175 11C2;B52F;1103 1175 11C2; # (딯; 딯; 딯; 딯; 딯; ) HANGUL SYLLABLE DIH
+B530;B530;1104 1161;B530;1104 1161; # (ë”°; ë”°; á„„á…¡; ë”°; á„„á…¡; ) HANGUL SYLLABLE DDA
+B531;B531;1104 1161 11A8;B531;1104 1161 11A8; # (딱; 딱; 딱; 딱; 딱; ) HANGUL SYLLABLE DDAG
+B532;B532;1104 1161 11A9;B532;1104 1161 11A9; # (딲; 딲; 딲; 딲; 딲; ) HANGUL SYLLABLE DDAGG
+B533;B533;1104 1161 11AA;B533;1104 1161 11AA; # (딳; 딳; 딳; 딳; 딳; ) HANGUL SYLLABLE DDAGS
+B534;B534;1104 1161 11AB;B534;1104 1161 11AB; # (딴; 딴; 딴; 딴; 딴; ) HANGUL SYLLABLE DDAN
+B535;B535;1104 1161 11AC;B535;1104 1161 11AC; # (딵; 딵; 딵; 딵; 딵; ) HANGUL SYLLABLE DDANJ
+B536;B536;1104 1161 11AD;B536;1104 1161 11AD; # (딶; 딶; 딶; 딶; 딶; ) HANGUL SYLLABLE DDANH
+B537;B537;1104 1161 11AE;B537;1104 1161 11AE; # (딷; 딷; 딷; 딷; 딷; ) HANGUL SYLLABLE DDAD
+B538;B538;1104 1161 11AF;B538;1104 1161 11AF; # (딸; 딸; 딸; 딸; 딸; ) HANGUL SYLLABLE DDAL
+B539;B539;1104 1161 11B0;B539;1104 1161 11B0; # (딹; 딹; 딹; 딹; 딹; ) HANGUL SYLLABLE DDALG
+B53A;B53A;1104 1161 11B1;B53A;1104 1161 11B1; # (딺; 딺; 딺; 딺; 딺; ) HANGUL SYLLABLE DDALM
+B53B;B53B;1104 1161 11B2;B53B;1104 1161 11B2; # (딻; 딻; 딻; 딻; 딻; ) HANGUL SYLLABLE DDALB
+B53C;B53C;1104 1161 11B3;B53C;1104 1161 11B3; # (딼; 딼; 딼; 딼; 딼; ) HANGUL SYLLABLE DDALS
+B53D;B53D;1104 1161 11B4;B53D;1104 1161 11B4; # (딽; 딽; 딽; 딽; 딽; ) HANGUL SYLLABLE DDALT
+B53E;B53E;1104 1161 11B5;B53E;1104 1161 11B5; # (딾; 딾; 딾; 딾; 딾; ) HANGUL SYLLABLE DDALP
+B53F;B53F;1104 1161 11B6;B53F;1104 1161 11B6; # (딿; 딿; 딿; 딿; 딿; ) HANGUL SYLLABLE DDALH
+B540;B540;1104 1161 11B7;B540;1104 1161 11B7; # (땀; 땀; 땀; 땀; 땀; ) HANGUL SYLLABLE DDAM
+B541;B541;1104 1161 11B8;B541;1104 1161 11B8; # (ë•; ë•; 땁; ë•; 땁; ) HANGUL SYLLABLE DDAB
+B542;B542;1104 1161 11B9;B542;1104 1161 11B9; # (땂; 땂; 땂; 땂; 땂; ) HANGUL SYLLABLE DDABS
+B543;B543;1104 1161 11BA;B543;1104 1161 11BA; # (땃; 땃; 땃; 땃; 땃; ) HANGUL SYLLABLE DDAS
+B544;B544;1104 1161 11BB;B544;1104 1161 11BB; # (땄; 땄; 땄; 땄; 땄; ) HANGUL SYLLABLE DDASS
+B545;B545;1104 1161 11BC;B545;1104 1161 11BC; # (땅; 땅; 땅; 땅; 땅; ) HANGUL SYLLABLE DDANG
+B546;B546;1104 1161 11BD;B546;1104 1161 11BD; # (땆; 땆; 땆; 땆; 땆; ) HANGUL SYLLABLE DDAJ
+B547;B547;1104 1161 11BE;B547;1104 1161 11BE; # (땇; 땇; 땇; 땇; 땇; ) HANGUL SYLLABLE DDAC
+B548;B548;1104 1161 11BF;B548;1104 1161 11BF; # (땈; 땈; 땈; 땈; 땈; ) HANGUL SYLLABLE DDAK
+B549;B549;1104 1161 11C0;B549;1104 1161 11C0; # (땉; 땉; 땉; 땉; 땉; ) HANGUL SYLLABLE DDAT
+B54A;B54A;1104 1161 11C1;B54A;1104 1161 11C1; # (ë•Š; ë•Š; á„„á…¡á‡; ë•Š; á„„á…¡á‡; ) HANGUL SYLLABLE DDAP
+B54B;B54B;1104 1161 11C2;B54B;1104 1161 11C2; # (땋; 땋; 땋; 땋; 땋; ) HANGUL SYLLABLE DDAH
+B54C;B54C;1104 1162;B54C;1104 1162; # (때; 때; 때; 때; 때; ) HANGUL SYLLABLE DDAE
+B54D;B54D;1104 1162 11A8;B54D;1104 1162 11A8; # (ë•; ë•; 땍; ë•; 땍; ) HANGUL SYLLABLE DDAEG
+B54E;B54E;1104 1162 11A9;B54E;1104 1162 11A9; # (땎; 땎; 땎; 땎; 땎; ) HANGUL SYLLABLE DDAEGG
+B54F;B54F;1104 1162 11AA;B54F;1104 1162 11AA; # (ë•; ë•; 땏; ë•; 땏; ) HANGUL SYLLABLE DDAEGS
+B550;B550;1104 1162 11AB;B550;1104 1162 11AB; # (ë•; ë•; 땐; ë•; 땐; ) HANGUL SYLLABLE DDAEN
+B551;B551;1104 1162 11AC;B551;1104 1162 11AC; # (땑; 땑; 땑; 땑; 땑; ) HANGUL SYLLABLE DDAENJ
+B552;B552;1104 1162 11AD;B552;1104 1162 11AD; # (땒; 땒; 땒; 땒; 땒; ) HANGUL SYLLABLE DDAENH
+B553;B553;1104 1162 11AE;B553;1104 1162 11AE; # (땓; 땓; 땓; 땓; 땓; ) HANGUL SYLLABLE DDAED
+B554;B554;1104 1162 11AF;B554;1104 1162 11AF; # (땔; 땔; 땔; 땔; 땔; ) HANGUL SYLLABLE DDAEL
+B555;B555;1104 1162 11B0;B555;1104 1162 11B0; # (땕; 땕; 땕; 땕; 땕; ) HANGUL SYLLABLE DDAELG
+B556;B556;1104 1162 11B1;B556;1104 1162 11B1; # (땖; 땖; 땖; 땖; 땖; ) HANGUL SYLLABLE DDAELM
+B557;B557;1104 1162 11B2;B557;1104 1162 11B2; # (땗; 땗; 땗; 땗; 땗; ) HANGUL SYLLABLE DDAELB
+B558;B558;1104 1162 11B3;B558;1104 1162 11B3; # (땘; 땘; 땘; 땘; 땘; ) HANGUL SYLLABLE DDAELS
+B559;B559;1104 1162 11B4;B559;1104 1162 11B4; # (땙; 땙; 땙; 땙; 땙; ) HANGUL SYLLABLE DDAELT
+B55A;B55A;1104 1162 11B5;B55A;1104 1162 11B5; # (땚; 땚; 땚; 땚; 땚; ) HANGUL SYLLABLE DDAELP
+B55B;B55B;1104 1162 11B6;B55B;1104 1162 11B6; # (땛; 땛; 땛; 땛; 땛; ) HANGUL SYLLABLE DDAELH
+B55C;B55C;1104 1162 11B7;B55C;1104 1162 11B7; # (땜; 땜; 땜; 땜; 땜; ) HANGUL SYLLABLE DDAEM
+B55D;B55D;1104 1162 11B8;B55D;1104 1162 11B8; # (ë•; ë•; 땝; ë•; 땝; ) HANGUL SYLLABLE DDAEB
+B55E;B55E;1104 1162 11B9;B55E;1104 1162 11B9; # (땞; 땞; 땞; 땞; 땞; ) HANGUL SYLLABLE DDAEBS
+B55F;B55F;1104 1162 11BA;B55F;1104 1162 11BA; # (땟; 땟; 땟; 땟; 땟; ) HANGUL SYLLABLE DDAES
+B560;B560;1104 1162 11BB;B560;1104 1162 11BB; # (땠; 땠; 땠; 땠; 땠; ) HANGUL SYLLABLE DDAESS
+B561;B561;1104 1162 11BC;B561;1104 1162 11BC; # (땡; 땡; 땡; 땡; 땡; ) HANGUL SYLLABLE DDAENG
+B562;B562;1104 1162 11BD;B562;1104 1162 11BD; # (땢; 땢; 땢; 땢; 땢; ) HANGUL SYLLABLE DDAEJ
+B563;B563;1104 1162 11BE;B563;1104 1162 11BE; # (땣; 땣; 땣; 땣; 땣; ) HANGUL SYLLABLE DDAEC
+B564;B564;1104 1162 11BF;B564;1104 1162 11BF; # (땤; 땤; 땤; 땤; 땤; ) HANGUL SYLLABLE DDAEK
+B565;B565;1104 1162 11C0;B565;1104 1162 11C0; # (땥; 땥; 땥; 땥; 땥; ) HANGUL SYLLABLE DDAET
+B566;B566;1104 1162 11C1;B566;1104 1162 11C1; # (땦; 땦; á„„á…¢á‡; 땦; á„„á…¢á‡; ) HANGUL SYLLABLE DDAEP
+B567;B567;1104 1162 11C2;B567;1104 1162 11C2; # (땧; 땧; 땧; 땧; 땧; ) HANGUL SYLLABLE DDAEH
+B568;B568;1104 1163;B568;1104 1163; # (땨; 땨; 땨; 땨; 땨; ) HANGUL SYLLABLE DDYA
+B569;B569;1104 1163 11A8;B569;1104 1163 11A8; # (땩; 땩; 땩; 땩; 땩; ) HANGUL SYLLABLE DDYAG
+B56A;B56A;1104 1163 11A9;B56A;1104 1163 11A9; # (땪; 땪; 땪; 땪; 땪; ) HANGUL SYLLABLE DDYAGG
+B56B;B56B;1104 1163 11AA;B56B;1104 1163 11AA; # (땫; 땫; 땫; 땫; 땫; ) HANGUL SYLLABLE DDYAGS
+B56C;B56C;1104 1163 11AB;B56C;1104 1163 11AB; # (땬; 땬; 땬; 땬; 땬; ) HANGUL SYLLABLE DDYAN
+B56D;B56D;1104 1163 11AC;B56D;1104 1163 11AC; # (땭; 땭; 땭; 땭; 땭; ) HANGUL SYLLABLE DDYANJ
+B56E;B56E;1104 1163 11AD;B56E;1104 1163 11AD; # (땮; 땮; 땮; 땮; 땮; ) HANGUL SYLLABLE DDYANH
+B56F;B56F;1104 1163 11AE;B56F;1104 1163 11AE; # (땯; 땯; 땯; 땯; 땯; ) HANGUL SYLLABLE DDYAD
+B570;B570;1104 1163 11AF;B570;1104 1163 11AF; # (땰; 땰; 땰; 땰; 땰; ) HANGUL SYLLABLE DDYAL
+B571;B571;1104 1163 11B0;B571;1104 1163 11B0; # (땱; 땱; 땱; 땱; 땱; ) HANGUL SYLLABLE DDYALG
+B572;B572;1104 1163 11B1;B572;1104 1163 11B1; # (땲; 땲; 땲; 땲; 땲; ) HANGUL SYLLABLE DDYALM
+B573;B573;1104 1163 11B2;B573;1104 1163 11B2; # (땳; 땳; 땳; 땳; 땳; ) HANGUL SYLLABLE DDYALB
+B574;B574;1104 1163 11B3;B574;1104 1163 11B3; # (땴; 땴; 땴; 땴; 땴; ) HANGUL SYLLABLE DDYALS
+B575;B575;1104 1163 11B4;B575;1104 1163 11B4; # (땵; 땵; 땵; 땵; 땵; ) HANGUL SYLLABLE DDYALT
+B576;B576;1104 1163 11B5;B576;1104 1163 11B5; # (땶; 땶; 땶; 땶; 땶; ) HANGUL SYLLABLE DDYALP
+B577;B577;1104 1163 11B6;B577;1104 1163 11B6; # (땷; 땷; 땷; 땷; 땷; ) HANGUL SYLLABLE DDYALH
+B578;B578;1104 1163 11B7;B578;1104 1163 11B7; # (땸; 땸; 땸; 땸; 땸; ) HANGUL SYLLABLE DDYAM
+B579;B579;1104 1163 11B8;B579;1104 1163 11B8; # (땹; 땹; 땹; 땹; 땹; ) HANGUL SYLLABLE DDYAB
+B57A;B57A;1104 1163 11B9;B57A;1104 1163 11B9; # (땺; 땺; 땺; 땺; 땺; ) HANGUL SYLLABLE DDYABS
+B57B;B57B;1104 1163 11BA;B57B;1104 1163 11BA; # (땻; 땻; 땻; 땻; 땻; ) HANGUL SYLLABLE DDYAS
+B57C;B57C;1104 1163 11BB;B57C;1104 1163 11BB; # (땼; 땼; 땼; 땼; 땼; ) HANGUL SYLLABLE DDYASS
+B57D;B57D;1104 1163 11BC;B57D;1104 1163 11BC; # (땽; 땽; 땽; 땽; 땽; ) HANGUL SYLLABLE DDYANG
+B57E;B57E;1104 1163 11BD;B57E;1104 1163 11BD; # (땾; 땾; 땾; 땾; 땾; ) HANGUL SYLLABLE DDYAJ
+B57F;B57F;1104 1163 11BE;B57F;1104 1163 11BE; # (땿; 땿; 땿; 땿; 땿; ) HANGUL SYLLABLE DDYAC
+B580;B580;1104 1163 11BF;B580;1104 1163 11BF; # (떀; 떀; 떀; 떀; 떀; ) HANGUL SYLLABLE DDYAK
+B581;B581;1104 1163 11C0;B581;1104 1163 11C0; # (ë–; ë–; 떁; ë–; 떁; ) HANGUL SYLLABLE DDYAT
+B582;B582;1104 1163 11C1;B582;1104 1163 11C1; # (ë–‚; ë–‚; á„„á…£á‡; ë–‚; á„„á…£á‡; ) HANGUL SYLLABLE DDYAP
+B583;B583;1104 1163 11C2;B583;1104 1163 11C2; # (떃; 떃; 떃; 떃; 떃; ) HANGUL SYLLABLE DDYAH
+B584;B584;1104 1164;B584;1104 1164; # (ë–„; ë–„; á„„á…¤; ë–„; á„„á…¤; ) HANGUL SYLLABLE DDYAE
+B585;B585;1104 1164 11A8;B585;1104 1164 11A8; # (떅; 떅; 떅; 떅; 떅; ) HANGUL SYLLABLE DDYAEG
+B586;B586;1104 1164 11A9;B586;1104 1164 11A9; # (떆; 떆; 떆; 떆; 떆; ) HANGUL SYLLABLE DDYAEGG
+B587;B587;1104 1164 11AA;B587;1104 1164 11AA; # (떇; 떇; 떇; 떇; 떇; ) HANGUL SYLLABLE DDYAEGS
+B588;B588;1104 1164 11AB;B588;1104 1164 11AB; # (떈; 떈; 떈; 떈; 떈; ) HANGUL SYLLABLE DDYAEN
+B589;B589;1104 1164 11AC;B589;1104 1164 11AC; # (떉; 떉; 떉; 떉; 떉; ) HANGUL SYLLABLE DDYAENJ
+B58A;B58A;1104 1164 11AD;B58A;1104 1164 11AD; # (떊; 떊; 떊; 떊; 떊; ) HANGUL SYLLABLE DDYAENH
+B58B;B58B;1104 1164 11AE;B58B;1104 1164 11AE; # (떋; 떋; 떋; 떋; 떋; ) HANGUL SYLLABLE DDYAED
+B58C;B58C;1104 1164 11AF;B58C;1104 1164 11AF; # (떌; 떌; 떌; 떌; 떌; ) HANGUL SYLLABLE DDYAEL
+B58D;B58D;1104 1164 11B0;B58D;1104 1164 11B0; # (ë–; ë–; 떍; ë–; 떍; ) HANGUL SYLLABLE DDYAELG
+B58E;B58E;1104 1164 11B1;B58E;1104 1164 11B1; # (떎; 떎; 떎; 떎; 떎; ) HANGUL SYLLABLE DDYAELM
+B58F;B58F;1104 1164 11B2;B58F;1104 1164 11B2; # (ë–; ë–; 떏; ë–; 떏; ) HANGUL SYLLABLE DDYAELB
+B590;B590;1104 1164 11B3;B590;1104 1164 11B3; # (ë–; ë–; 떐; ë–; 떐; ) HANGUL SYLLABLE DDYAELS
+B591;B591;1104 1164 11B4;B591;1104 1164 11B4; # (떑; 떑; 떑; 떑; 떑; ) HANGUL SYLLABLE DDYAELT
+B592;B592;1104 1164 11B5;B592;1104 1164 11B5; # (떒; 떒; 떒; 떒; 떒; ) HANGUL SYLLABLE DDYAELP
+B593;B593;1104 1164 11B6;B593;1104 1164 11B6; # (떓; 떓; 떓; 떓; 떓; ) HANGUL SYLLABLE DDYAELH
+B594;B594;1104 1164 11B7;B594;1104 1164 11B7; # (떔; 떔; 떔; 떔; 떔; ) HANGUL SYLLABLE DDYAEM
+B595;B595;1104 1164 11B8;B595;1104 1164 11B8; # (떕; 떕; 떕; 떕; 떕; ) HANGUL SYLLABLE DDYAEB
+B596;B596;1104 1164 11B9;B596;1104 1164 11B9; # (떖; 떖; 떖; 떖; 떖; ) HANGUL SYLLABLE DDYAEBS
+B597;B597;1104 1164 11BA;B597;1104 1164 11BA; # (떗; 떗; 떗; 떗; 떗; ) HANGUL SYLLABLE DDYAES
+B598;B598;1104 1164 11BB;B598;1104 1164 11BB; # (떘; 떘; 떘; 떘; 떘; ) HANGUL SYLLABLE DDYAESS
+B599;B599;1104 1164 11BC;B599;1104 1164 11BC; # (떙; 떙; 떙; 떙; 떙; ) HANGUL SYLLABLE DDYAENG
+B59A;B59A;1104 1164 11BD;B59A;1104 1164 11BD; # (떚; 떚; 떚; 떚; 떚; ) HANGUL SYLLABLE DDYAEJ
+B59B;B59B;1104 1164 11BE;B59B;1104 1164 11BE; # (떛; 떛; 떛; 떛; 떛; ) HANGUL SYLLABLE DDYAEC
+B59C;B59C;1104 1164 11BF;B59C;1104 1164 11BF; # (떜; 떜; 떜; 떜; 떜; ) HANGUL SYLLABLE DDYAEK
+B59D;B59D;1104 1164 11C0;B59D;1104 1164 11C0; # (ë–; ë–; 떝; ë–; 떝; ) HANGUL SYLLABLE DDYAET
+B59E;B59E;1104 1164 11C1;B59E;1104 1164 11C1; # (ë–ž; ë–ž; á„„á…¤á‡; ë–ž; á„„á…¤á‡; ) HANGUL SYLLABLE DDYAEP
+B59F;B59F;1104 1164 11C2;B59F;1104 1164 11C2; # (떟; 떟; 떟; 떟; 떟; ) HANGUL SYLLABLE DDYAEH
+B5A0;B5A0;1104 1165;B5A0;1104 1165; # (ë– ; ë– ; á„„á…¥; ë– ; á„„á…¥; ) HANGUL SYLLABLE DDEO
+B5A1;B5A1;1104 1165 11A8;B5A1;1104 1165 11A8; # (떡; 떡; 떡; 떡; 떡; ) HANGUL SYLLABLE DDEOG
+B5A2;B5A2;1104 1165 11A9;B5A2;1104 1165 11A9; # (떢; 떢; 떢; 떢; 떢; ) HANGUL SYLLABLE DDEOGG
+B5A3;B5A3;1104 1165 11AA;B5A3;1104 1165 11AA; # (떣; 떣; 떣; 떣; 떣; ) HANGUL SYLLABLE DDEOGS
+B5A4;B5A4;1104 1165 11AB;B5A4;1104 1165 11AB; # (떤; 떤; 떤; 떤; 떤; ) HANGUL SYLLABLE DDEON
+B5A5;B5A5;1104 1165 11AC;B5A5;1104 1165 11AC; # (떥; 떥; 떥; 떥; 떥; ) HANGUL SYLLABLE DDEONJ
+B5A6;B5A6;1104 1165 11AD;B5A6;1104 1165 11AD; # (떦; 떦; 떦; 떦; 떦; ) HANGUL SYLLABLE DDEONH
+B5A7;B5A7;1104 1165 11AE;B5A7;1104 1165 11AE; # (떧; 떧; 떧; 떧; 떧; ) HANGUL SYLLABLE DDEOD
+B5A8;B5A8;1104 1165 11AF;B5A8;1104 1165 11AF; # (떨; 떨; 떨; 떨; 떨; ) HANGUL SYLLABLE DDEOL
+B5A9;B5A9;1104 1165 11B0;B5A9;1104 1165 11B0; # (떩; 떩; 떩; 떩; 떩; ) HANGUL SYLLABLE DDEOLG
+B5AA;B5AA;1104 1165 11B1;B5AA;1104 1165 11B1; # (떪; 떪; 떪; 떪; 떪; ) HANGUL SYLLABLE DDEOLM
+B5AB;B5AB;1104 1165 11B2;B5AB;1104 1165 11B2; # (떫; 떫; 떫; 떫; 떫; ) HANGUL SYLLABLE DDEOLB
+B5AC;B5AC;1104 1165 11B3;B5AC;1104 1165 11B3; # (떬; 떬; 떬; 떬; 떬; ) HANGUL SYLLABLE DDEOLS
+B5AD;B5AD;1104 1165 11B4;B5AD;1104 1165 11B4; # (떭; 떭; 떭; 떭; 떭; ) HANGUL SYLLABLE DDEOLT
+B5AE;B5AE;1104 1165 11B5;B5AE;1104 1165 11B5; # (떮; 떮; 떮; 떮; 떮; ) HANGUL SYLLABLE DDEOLP
+B5AF;B5AF;1104 1165 11B6;B5AF;1104 1165 11B6; # (떯; 떯; 떯; 떯; 떯; ) HANGUL SYLLABLE DDEOLH
+B5B0;B5B0;1104 1165 11B7;B5B0;1104 1165 11B7; # (떰; 떰; 떰; 떰; 떰; ) HANGUL SYLLABLE DDEOM
+B5B1;B5B1;1104 1165 11B8;B5B1;1104 1165 11B8; # (떱; 떱; 떱; 떱; 떱; ) HANGUL SYLLABLE DDEOB
+B5B2;B5B2;1104 1165 11B9;B5B2;1104 1165 11B9; # (떲; 떲; 떲; 떲; 떲; ) HANGUL SYLLABLE DDEOBS
+B5B3;B5B3;1104 1165 11BA;B5B3;1104 1165 11BA; # (떳; 떳; 떳; 떳; 떳; ) HANGUL SYLLABLE DDEOS
+B5B4;B5B4;1104 1165 11BB;B5B4;1104 1165 11BB; # (떴; 떴; 떴; 떴; 떴; ) HANGUL SYLLABLE DDEOSS
+B5B5;B5B5;1104 1165 11BC;B5B5;1104 1165 11BC; # (떵; 떵; 떵; 떵; 떵; ) HANGUL SYLLABLE DDEONG
+B5B6;B5B6;1104 1165 11BD;B5B6;1104 1165 11BD; # (떶; 떶; 떶; 떶; 떶; ) HANGUL SYLLABLE DDEOJ
+B5B7;B5B7;1104 1165 11BE;B5B7;1104 1165 11BE; # (떷; 떷; 떷; 떷; 떷; ) HANGUL SYLLABLE DDEOC
+B5B8;B5B8;1104 1165 11BF;B5B8;1104 1165 11BF; # (떸; 떸; 떸; 떸; 떸; ) HANGUL SYLLABLE DDEOK
+B5B9;B5B9;1104 1165 11C0;B5B9;1104 1165 11C0; # (떹; 떹; 떹; 떹; 떹; ) HANGUL SYLLABLE DDEOT
+B5BA;B5BA;1104 1165 11C1;B5BA;1104 1165 11C1; # (ë–º; ë–º; á„„á…¥á‡; ë–º; á„„á…¥á‡; ) HANGUL SYLLABLE DDEOP
+B5BB;B5BB;1104 1165 11C2;B5BB;1104 1165 11C2; # (떻; 떻; 떻; 떻; 떻; ) HANGUL SYLLABLE DDEOH
+B5BC;B5BC;1104 1166;B5BC;1104 1166; # (ë–¼; ë–¼; á„„á…¦; ë–¼; á„„á…¦; ) HANGUL SYLLABLE DDE
+B5BD;B5BD;1104 1166 11A8;B5BD;1104 1166 11A8; # (떽; 떽; 떽; 떽; 떽; ) HANGUL SYLLABLE DDEG
+B5BE;B5BE;1104 1166 11A9;B5BE;1104 1166 11A9; # (떾; 떾; 떾; 떾; 떾; ) HANGUL SYLLABLE DDEGG
+B5BF;B5BF;1104 1166 11AA;B5BF;1104 1166 11AA; # (떿; 떿; 떿; 떿; 떿; ) HANGUL SYLLABLE DDEGS
+B5C0;B5C0;1104 1166 11AB;B5C0;1104 1166 11AB; # (뗀; 뗀; 뗀; 뗀; 뗀; ) HANGUL SYLLABLE DDEN
+B5C1;B5C1;1104 1166 11AC;B5C1;1104 1166 11AC; # (ë—; ë—; 뗁; ë—; 뗁; ) HANGUL SYLLABLE DDENJ
+B5C2;B5C2;1104 1166 11AD;B5C2;1104 1166 11AD; # (뗂; 뗂; 뗂; 뗂; 뗂; ) HANGUL SYLLABLE DDENH
+B5C3;B5C3;1104 1166 11AE;B5C3;1104 1166 11AE; # (뗃; 뗃; 뗃; 뗃; 뗃; ) HANGUL SYLLABLE DDED
+B5C4;B5C4;1104 1166 11AF;B5C4;1104 1166 11AF; # (뗄; 뗄; 뗄; 뗄; 뗄; ) HANGUL SYLLABLE DDEL
+B5C5;B5C5;1104 1166 11B0;B5C5;1104 1166 11B0; # (뗅; 뗅; 뗅; 뗅; 뗅; ) HANGUL SYLLABLE DDELG
+B5C6;B5C6;1104 1166 11B1;B5C6;1104 1166 11B1; # (뗆; 뗆; 뗆; 뗆; 뗆; ) HANGUL SYLLABLE DDELM
+B5C7;B5C7;1104 1166 11B2;B5C7;1104 1166 11B2; # (뗇; 뗇; 뗇; 뗇; 뗇; ) HANGUL SYLLABLE DDELB
+B5C8;B5C8;1104 1166 11B3;B5C8;1104 1166 11B3; # (뗈; 뗈; 뗈; 뗈; 뗈; ) HANGUL SYLLABLE DDELS
+B5C9;B5C9;1104 1166 11B4;B5C9;1104 1166 11B4; # (뗉; 뗉; 뗉; 뗉; 뗉; ) HANGUL SYLLABLE DDELT
+B5CA;B5CA;1104 1166 11B5;B5CA;1104 1166 11B5; # (뗊; 뗊; 뗊; 뗊; 뗊; ) HANGUL SYLLABLE DDELP
+B5CB;B5CB;1104 1166 11B6;B5CB;1104 1166 11B6; # (뗋; 뗋; 뗋; 뗋; 뗋; ) HANGUL SYLLABLE DDELH
+B5CC;B5CC;1104 1166 11B7;B5CC;1104 1166 11B7; # (뗌; 뗌; 뗌; 뗌; 뗌; ) HANGUL SYLLABLE DDEM
+B5CD;B5CD;1104 1166 11B8;B5CD;1104 1166 11B8; # (ë—; ë—; 뗍; ë—; 뗍; ) HANGUL SYLLABLE DDEB
+B5CE;B5CE;1104 1166 11B9;B5CE;1104 1166 11B9; # (뗎; 뗎; 뗎; 뗎; 뗎; ) HANGUL SYLLABLE DDEBS
+B5CF;B5CF;1104 1166 11BA;B5CF;1104 1166 11BA; # (ë—; ë—; 뗏; ë—; 뗏; ) HANGUL SYLLABLE DDES
+B5D0;B5D0;1104 1166 11BB;B5D0;1104 1166 11BB; # (ë—; ë—; 뗐; ë—; 뗐; ) HANGUL SYLLABLE DDESS
+B5D1;B5D1;1104 1166 11BC;B5D1;1104 1166 11BC; # (뗑; 뗑; 뗑; 뗑; 뗑; ) HANGUL SYLLABLE DDENG
+B5D2;B5D2;1104 1166 11BD;B5D2;1104 1166 11BD; # (뗒; 뗒; 뗒; 뗒; 뗒; ) HANGUL SYLLABLE DDEJ
+B5D3;B5D3;1104 1166 11BE;B5D3;1104 1166 11BE; # (뗓; 뗓; 뗓; 뗓; 뗓; ) HANGUL SYLLABLE DDEC
+B5D4;B5D4;1104 1166 11BF;B5D4;1104 1166 11BF; # (뗔; 뗔; 뗔; 뗔; 뗔; ) HANGUL SYLLABLE DDEK
+B5D5;B5D5;1104 1166 11C0;B5D5;1104 1166 11C0; # (뗕; 뗕; 뗕; 뗕; 뗕; ) HANGUL SYLLABLE DDET
+B5D6;B5D6;1104 1166 11C1;B5D6;1104 1166 11C1; # (ë—–; ë—–; á„„á…¦á‡; ë—–; á„„á…¦á‡; ) HANGUL SYLLABLE DDEP
+B5D7;B5D7;1104 1166 11C2;B5D7;1104 1166 11C2; # (뗗; 뗗; 뗗; 뗗; 뗗; ) HANGUL SYLLABLE DDEH
+B5D8;B5D8;1104 1167;B5D8;1104 1167; # (ë—˜; ë—˜; á„„á…§; ë—˜; á„„á…§; ) HANGUL SYLLABLE DDYEO
+B5D9;B5D9;1104 1167 11A8;B5D9;1104 1167 11A8; # (뗙; 뗙; 뗙; 뗙; 뗙; ) HANGUL SYLLABLE DDYEOG
+B5DA;B5DA;1104 1167 11A9;B5DA;1104 1167 11A9; # (뗚; 뗚; 뗚; 뗚; 뗚; ) HANGUL SYLLABLE DDYEOGG
+B5DB;B5DB;1104 1167 11AA;B5DB;1104 1167 11AA; # (뗛; 뗛; 뗛; 뗛; 뗛; ) HANGUL SYLLABLE DDYEOGS
+B5DC;B5DC;1104 1167 11AB;B5DC;1104 1167 11AB; # (뗜; 뗜; 뗜; 뗜; 뗜; ) HANGUL SYLLABLE DDYEON
+B5DD;B5DD;1104 1167 11AC;B5DD;1104 1167 11AC; # (ë—; ë—; 뗝; ë—; 뗝; ) HANGUL SYLLABLE DDYEONJ
+B5DE;B5DE;1104 1167 11AD;B5DE;1104 1167 11AD; # (뗞; 뗞; 뗞; 뗞; 뗞; ) HANGUL SYLLABLE DDYEONH
+B5DF;B5DF;1104 1167 11AE;B5DF;1104 1167 11AE; # (뗟; 뗟; 뗟; 뗟; 뗟; ) HANGUL SYLLABLE DDYEOD
+B5E0;B5E0;1104 1167 11AF;B5E0;1104 1167 11AF; # (뗠; 뗠; 뗠; 뗠; 뗠; ) HANGUL SYLLABLE DDYEOL
+B5E1;B5E1;1104 1167 11B0;B5E1;1104 1167 11B0; # (뗡; 뗡; 뗡; 뗡; 뗡; ) HANGUL SYLLABLE DDYEOLG
+B5E2;B5E2;1104 1167 11B1;B5E2;1104 1167 11B1; # (뗢; 뗢; 뗢; 뗢; 뗢; ) HANGUL SYLLABLE DDYEOLM
+B5E3;B5E3;1104 1167 11B2;B5E3;1104 1167 11B2; # (뗣; 뗣; 뗣; 뗣; 뗣; ) HANGUL SYLLABLE DDYEOLB
+B5E4;B5E4;1104 1167 11B3;B5E4;1104 1167 11B3; # (뗤; 뗤; 뗤; 뗤; 뗤; ) HANGUL SYLLABLE DDYEOLS
+B5E5;B5E5;1104 1167 11B4;B5E5;1104 1167 11B4; # (뗥; 뗥; 뗥; 뗥; 뗥; ) HANGUL SYLLABLE DDYEOLT
+B5E6;B5E6;1104 1167 11B5;B5E6;1104 1167 11B5; # (뗦; 뗦; 뗦; 뗦; 뗦; ) HANGUL SYLLABLE DDYEOLP
+B5E7;B5E7;1104 1167 11B6;B5E7;1104 1167 11B6; # (뗧; 뗧; 뗧; 뗧; 뗧; ) HANGUL SYLLABLE DDYEOLH
+B5E8;B5E8;1104 1167 11B7;B5E8;1104 1167 11B7; # (뗨; 뗨; 뗨; 뗨; 뗨; ) HANGUL SYLLABLE DDYEOM
+B5E9;B5E9;1104 1167 11B8;B5E9;1104 1167 11B8; # (뗩; 뗩; 뗩; 뗩; 뗩; ) HANGUL SYLLABLE DDYEOB
+B5EA;B5EA;1104 1167 11B9;B5EA;1104 1167 11B9; # (뗪; 뗪; 뗪; 뗪; 뗪; ) HANGUL SYLLABLE DDYEOBS
+B5EB;B5EB;1104 1167 11BA;B5EB;1104 1167 11BA; # (뗫; 뗫; 뗫; 뗫; 뗫; ) HANGUL SYLLABLE DDYEOS
+B5EC;B5EC;1104 1167 11BB;B5EC;1104 1167 11BB; # (뗬; 뗬; 뗬; 뗬; 뗬; ) HANGUL SYLLABLE DDYEOSS
+B5ED;B5ED;1104 1167 11BC;B5ED;1104 1167 11BC; # (뗭; 뗭; 뗭; 뗭; 뗭; ) HANGUL SYLLABLE DDYEONG
+B5EE;B5EE;1104 1167 11BD;B5EE;1104 1167 11BD; # (뗮; 뗮; 뗮; 뗮; 뗮; ) HANGUL SYLLABLE DDYEOJ
+B5EF;B5EF;1104 1167 11BE;B5EF;1104 1167 11BE; # (뗯; 뗯; 뗯; 뗯; 뗯; ) HANGUL SYLLABLE DDYEOC
+B5F0;B5F0;1104 1167 11BF;B5F0;1104 1167 11BF; # (뗰; 뗰; 뗰; 뗰; 뗰; ) HANGUL SYLLABLE DDYEOK
+B5F1;B5F1;1104 1167 11C0;B5F1;1104 1167 11C0; # (뗱; 뗱; 뗱; 뗱; 뗱; ) HANGUL SYLLABLE DDYEOT
+B5F2;B5F2;1104 1167 11C1;B5F2;1104 1167 11C1; # (ë—²; ë—²; á„„á…§á‡; ë—²; á„„á…§á‡; ) HANGUL SYLLABLE DDYEOP
+B5F3;B5F3;1104 1167 11C2;B5F3;1104 1167 11C2; # (뗳; 뗳; 뗳; 뗳; 뗳; ) HANGUL SYLLABLE DDYEOH
+B5F4;B5F4;1104 1168;B5F4;1104 1168; # (ë—´; ë—´; á„„á…¨; ë—´; á„„á…¨; ) HANGUL SYLLABLE DDYE
+B5F5;B5F5;1104 1168 11A8;B5F5;1104 1168 11A8; # (뗵; 뗵; 뗵; 뗵; 뗵; ) HANGUL SYLLABLE DDYEG
+B5F6;B5F6;1104 1168 11A9;B5F6;1104 1168 11A9; # (뗶; 뗶; 뗶; 뗶; 뗶; ) HANGUL SYLLABLE DDYEGG
+B5F7;B5F7;1104 1168 11AA;B5F7;1104 1168 11AA; # (뗷; 뗷; 뗷; 뗷; 뗷; ) HANGUL SYLLABLE DDYEGS
+B5F8;B5F8;1104 1168 11AB;B5F8;1104 1168 11AB; # (뗸; 뗸; 뗸; 뗸; 뗸; ) HANGUL SYLLABLE DDYEN
+B5F9;B5F9;1104 1168 11AC;B5F9;1104 1168 11AC; # (뗹; 뗹; 뗹; 뗹; 뗹; ) HANGUL SYLLABLE DDYENJ
+B5FA;B5FA;1104 1168 11AD;B5FA;1104 1168 11AD; # (뗺; 뗺; 뗺; 뗺; 뗺; ) HANGUL SYLLABLE DDYENH
+B5FB;B5FB;1104 1168 11AE;B5FB;1104 1168 11AE; # (뗻; 뗻; 뗻; 뗻; 뗻; ) HANGUL SYLLABLE DDYED
+B5FC;B5FC;1104 1168 11AF;B5FC;1104 1168 11AF; # (뗼; 뗼; 뗼; 뗼; 뗼; ) HANGUL SYLLABLE DDYEL
+B5FD;B5FD;1104 1168 11B0;B5FD;1104 1168 11B0; # (뗽; 뗽; 뗽; 뗽; 뗽; ) HANGUL SYLLABLE DDYELG
+B5FE;B5FE;1104 1168 11B1;B5FE;1104 1168 11B1; # (뗾; 뗾; 뗾; 뗾; 뗾; ) HANGUL SYLLABLE DDYELM
+B5FF;B5FF;1104 1168 11B2;B5FF;1104 1168 11B2; # (뗿; 뗿; 뗿; 뗿; 뗿; ) HANGUL SYLLABLE DDYELB
+B600;B600;1104 1168 11B3;B600;1104 1168 11B3; # (똀; 똀; 똀; 똀; 똀; ) HANGUL SYLLABLE DDYELS
+B601;B601;1104 1168 11B4;B601;1104 1168 11B4; # (ë˜; ë˜; 똁; ë˜; 똁; ) HANGUL SYLLABLE DDYELT
+B602;B602;1104 1168 11B5;B602;1104 1168 11B5; # (똂; 똂; 똂; 똂; 똂; ) HANGUL SYLLABLE DDYELP
+B603;B603;1104 1168 11B6;B603;1104 1168 11B6; # (똃; 똃; 똃; 똃; 똃; ) HANGUL SYLLABLE DDYELH
+B604;B604;1104 1168 11B7;B604;1104 1168 11B7; # (똄; 똄; 똄; 똄; 똄; ) HANGUL SYLLABLE DDYEM
+B605;B605;1104 1168 11B8;B605;1104 1168 11B8; # (똅; 똅; 똅; 똅; 똅; ) HANGUL SYLLABLE DDYEB
+B606;B606;1104 1168 11B9;B606;1104 1168 11B9; # (똆; 똆; 똆; 똆; 똆; ) HANGUL SYLLABLE DDYEBS
+B607;B607;1104 1168 11BA;B607;1104 1168 11BA; # (똇; 똇; 똇; 똇; 똇; ) HANGUL SYLLABLE DDYES
+B608;B608;1104 1168 11BB;B608;1104 1168 11BB; # (똈; 똈; 똈; 똈; 똈; ) HANGUL SYLLABLE DDYESS
+B609;B609;1104 1168 11BC;B609;1104 1168 11BC; # (똉; 똉; 똉; 똉; 똉; ) HANGUL SYLLABLE DDYENG
+B60A;B60A;1104 1168 11BD;B60A;1104 1168 11BD; # (똊; 똊; 똊; 똊; 똊; ) HANGUL SYLLABLE DDYEJ
+B60B;B60B;1104 1168 11BE;B60B;1104 1168 11BE; # (똋; 똋; 똋; 똋; 똋; ) HANGUL SYLLABLE DDYEC
+B60C;B60C;1104 1168 11BF;B60C;1104 1168 11BF; # (똌; 똌; 똌; 똌; 똌; ) HANGUL SYLLABLE DDYEK
+B60D;B60D;1104 1168 11C0;B60D;1104 1168 11C0; # (ë˜; ë˜; 똍; ë˜; 똍; ) HANGUL SYLLABLE DDYET
+B60E;B60E;1104 1168 11C1;B60E;1104 1168 11C1; # (똎; 똎; á„„á…¨á‡; 똎; á„„á…¨á‡; ) HANGUL SYLLABLE DDYEP
+B60F;B60F;1104 1168 11C2;B60F;1104 1168 11C2; # (ë˜; ë˜; 똏; ë˜; 똏; ) HANGUL SYLLABLE DDYEH
+B610;B610;1104 1169;B610;1104 1169; # (ë˜; ë˜; á„„á…©; ë˜; á„„á…©; ) HANGUL SYLLABLE DDO
+B611;B611;1104 1169 11A8;B611;1104 1169 11A8; # (똑; 똑; 똑; 똑; 똑; ) HANGUL SYLLABLE DDOG
+B612;B612;1104 1169 11A9;B612;1104 1169 11A9; # (똒; 똒; 똒; 똒; 똒; ) HANGUL SYLLABLE DDOGG
+B613;B613;1104 1169 11AA;B613;1104 1169 11AA; # (똓; 똓; 똓; 똓; 똓; ) HANGUL SYLLABLE DDOGS
+B614;B614;1104 1169 11AB;B614;1104 1169 11AB; # (똔; 똔; 똔; 똔; 똔; ) HANGUL SYLLABLE DDON
+B615;B615;1104 1169 11AC;B615;1104 1169 11AC; # (똕; 똕; 똕; 똕; 똕; ) HANGUL SYLLABLE DDONJ
+B616;B616;1104 1169 11AD;B616;1104 1169 11AD; # (똖; 똖; 똖; 똖; 똖; ) HANGUL SYLLABLE DDONH
+B617;B617;1104 1169 11AE;B617;1104 1169 11AE; # (똗; 똗; 똗; 똗; 똗; ) HANGUL SYLLABLE DDOD
+B618;B618;1104 1169 11AF;B618;1104 1169 11AF; # (똘; 똘; 똘; 똘; 똘; ) HANGUL SYLLABLE DDOL
+B619;B619;1104 1169 11B0;B619;1104 1169 11B0; # (똙; 똙; 똙; 똙; 똙; ) HANGUL SYLLABLE DDOLG
+B61A;B61A;1104 1169 11B1;B61A;1104 1169 11B1; # (똚; 똚; 똚; 똚; 똚; ) HANGUL SYLLABLE DDOLM
+B61B;B61B;1104 1169 11B2;B61B;1104 1169 11B2; # (똛; 똛; 똛; 똛; 똛; ) HANGUL SYLLABLE DDOLB
+B61C;B61C;1104 1169 11B3;B61C;1104 1169 11B3; # (똜; 똜; 똜; 똜; 똜; ) HANGUL SYLLABLE DDOLS
+B61D;B61D;1104 1169 11B4;B61D;1104 1169 11B4; # (ë˜; ë˜; 똝; ë˜; 똝; ) HANGUL SYLLABLE DDOLT
+B61E;B61E;1104 1169 11B5;B61E;1104 1169 11B5; # (똞; 똞; 똞; 똞; 똞; ) HANGUL SYLLABLE DDOLP
+B61F;B61F;1104 1169 11B6;B61F;1104 1169 11B6; # (똟; 똟; 똟; 똟; 똟; ) HANGUL SYLLABLE DDOLH
+B620;B620;1104 1169 11B7;B620;1104 1169 11B7; # (똠; 똠; 똠; 똠; 똠; ) HANGUL SYLLABLE DDOM
+B621;B621;1104 1169 11B8;B621;1104 1169 11B8; # (똡; 똡; 똡; 똡; 똡; ) HANGUL SYLLABLE DDOB
+B622;B622;1104 1169 11B9;B622;1104 1169 11B9; # (똢; 똢; 똢; 똢; 똢; ) HANGUL SYLLABLE DDOBS
+B623;B623;1104 1169 11BA;B623;1104 1169 11BA; # (똣; 똣; 똣; 똣; 똣; ) HANGUL SYLLABLE DDOS
+B624;B624;1104 1169 11BB;B624;1104 1169 11BB; # (똤; 똤; 똤; 똤; 똤; ) HANGUL SYLLABLE DDOSS
+B625;B625;1104 1169 11BC;B625;1104 1169 11BC; # (똥; 똥; 똥; 똥; 똥; ) HANGUL SYLLABLE DDONG
+B626;B626;1104 1169 11BD;B626;1104 1169 11BD; # (똦; 똦; 똦; 똦; 똦; ) HANGUL SYLLABLE DDOJ
+B627;B627;1104 1169 11BE;B627;1104 1169 11BE; # (똧; 똧; 똧; 똧; 똧; ) HANGUL SYLLABLE DDOC
+B628;B628;1104 1169 11BF;B628;1104 1169 11BF; # (똨; 똨; 똨; 똨; 똨; ) HANGUL SYLLABLE DDOK
+B629;B629;1104 1169 11C0;B629;1104 1169 11C0; # (똩; 똩; 똩; 똩; 똩; ) HANGUL SYLLABLE DDOT
+B62A;B62A;1104 1169 11C1;B62A;1104 1169 11C1; # (똪; 똪; á„„á…©á‡; 똪; á„„á…©á‡; ) HANGUL SYLLABLE DDOP
+B62B;B62B;1104 1169 11C2;B62B;1104 1169 11C2; # (똫; 똫; 똫; 똫; 똫; ) HANGUL SYLLABLE DDOH
+B62C;B62C;1104 116A;B62C;1104 116A; # (똬; 똬; 똬; 똬; 똬; ) HANGUL SYLLABLE DDWA
+B62D;B62D;1104 116A 11A8;B62D;1104 116A 11A8; # (똭; 똭; 똭; 똭; 똭; ) HANGUL SYLLABLE DDWAG
+B62E;B62E;1104 116A 11A9;B62E;1104 116A 11A9; # (똮; 똮; 똮; 똮; 똮; ) HANGUL SYLLABLE DDWAGG
+B62F;B62F;1104 116A 11AA;B62F;1104 116A 11AA; # (똯; 똯; 똯; 똯; 똯; ) HANGUL SYLLABLE DDWAGS
+B630;B630;1104 116A 11AB;B630;1104 116A 11AB; # (똰; 똰; 똰; 똰; 똰; ) HANGUL SYLLABLE DDWAN
+B631;B631;1104 116A 11AC;B631;1104 116A 11AC; # (똱; 똱; 똱; 똱; 똱; ) HANGUL SYLLABLE DDWANJ
+B632;B632;1104 116A 11AD;B632;1104 116A 11AD; # (똲; 똲; 똲; 똲; 똲; ) HANGUL SYLLABLE DDWANH
+B633;B633;1104 116A 11AE;B633;1104 116A 11AE; # (똳; 똳; 똳; 똳; 똳; ) HANGUL SYLLABLE DDWAD
+B634;B634;1104 116A 11AF;B634;1104 116A 11AF; # (똴; 똴; 똴; 똴; 똴; ) HANGUL SYLLABLE DDWAL
+B635;B635;1104 116A 11B0;B635;1104 116A 11B0; # (똵; 똵; 똵; 똵; 똵; ) HANGUL SYLLABLE DDWALG
+B636;B636;1104 116A 11B1;B636;1104 116A 11B1; # (똶; 똶; 똶; 똶; 똶; ) HANGUL SYLLABLE DDWALM
+B637;B637;1104 116A 11B2;B637;1104 116A 11B2; # (똷; 똷; 똷; 똷; 똷; ) HANGUL SYLLABLE DDWALB
+B638;B638;1104 116A 11B3;B638;1104 116A 11B3; # (똸; 똸; 똸; 똸; 똸; ) HANGUL SYLLABLE DDWALS
+B639;B639;1104 116A 11B4;B639;1104 116A 11B4; # (똹; 똹; 똹; 똹; 똹; ) HANGUL SYLLABLE DDWALT
+B63A;B63A;1104 116A 11B5;B63A;1104 116A 11B5; # (똺; 똺; 똺; 똺; 똺; ) HANGUL SYLLABLE DDWALP
+B63B;B63B;1104 116A 11B6;B63B;1104 116A 11B6; # (똻; 똻; 똻; 똻; 똻; ) HANGUL SYLLABLE DDWALH
+B63C;B63C;1104 116A 11B7;B63C;1104 116A 11B7; # (똼; 똼; 똼; 똼; 똼; ) HANGUL SYLLABLE DDWAM
+B63D;B63D;1104 116A 11B8;B63D;1104 116A 11B8; # (똽; 똽; 똽; 똽; 똽; ) HANGUL SYLLABLE DDWAB
+B63E;B63E;1104 116A 11B9;B63E;1104 116A 11B9; # (똾; 똾; 똾; 똾; 똾; ) HANGUL SYLLABLE DDWABS
+B63F;B63F;1104 116A 11BA;B63F;1104 116A 11BA; # (똿; 똿; 똿; 똿; 똿; ) HANGUL SYLLABLE DDWAS
+B640;B640;1104 116A 11BB;B640;1104 116A 11BB; # (뙀; 뙀; 뙀; 뙀; 뙀; ) HANGUL SYLLABLE DDWASS
+B641;B641;1104 116A 11BC;B641;1104 116A 11BC; # (ë™; ë™; 뙁; ë™; 뙁; ) HANGUL SYLLABLE DDWANG
+B642;B642;1104 116A 11BD;B642;1104 116A 11BD; # (뙂; 뙂; 뙂; 뙂; 뙂; ) HANGUL SYLLABLE DDWAJ
+B643;B643;1104 116A 11BE;B643;1104 116A 11BE; # (뙃; 뙃; 뙃; 뙃; 뙃; ) HANGUL SYLLABLE DDWAC
+B644;B644;1104 116A 11BF;B644;1104 116A 11BF; # (뙄; 뙄; 뙄; 뙄; 뙄; ) HANGUL SYLLABLE DDWAK
+B645;B645;1104 116A 11C0;B645;1104 116A 11C0; # (뙅; 뙅; 뙅; 뙅; 뙅; ) HANGUL SYLLABLE DDWAT
+B646;B646;1104 116A 11C1;B646;1104 116A 11C1; # (뙆; 뙆; á„„á…ªá‡; 뙆; á„„á…ªá‡; ) HANGUL SYLLABLE DDWAP
+B647;B647;1104 116A 11C2;B647;1104 116A 11C2; # (뙇; 뙇; 뙇; 뙇; 뙇; ) HANGUL SYLLABLE DDWAH
+B648;B648;1104 116B;B648;1104 116B; # (뙈; 뙈; 뙈; 뙈; 뙈; ) HANGUL SYLLABLE DDWAE
+B649;B649;1104 116B 11A8;B649;1104 116B 11A8; # (뙉; 뙉; 뙉; 뙉; 뙉; ) HANGUL SYLLABLE DDWAEG
+B64A;B64A;1104 116B 11A9;B64A;1104 116B 11A9; # (뙊; 뙊; 뙊; 뙊; 뙊; ) HANGUL SYLLABLE DDWAEGG
+B64B;B64B;1104 116B 11AA;B64B;1104 116B 11AA; # (뙋; 뙋; 뙋; 뙋; 뙋; ) HANGUL SYLLABLE DDWAEGS
+B64C;B64C;1104 116B 11AB;B64C;1104 116B 11AB; # (뙌; 뙌; 뙌; 뙌; 뙌; ) HANGUL SYLLABLE DDWAEN
+B64D;B64D;1104 116B 11AC;B64D;1104 116B 11AC; # (ë™; ë™; 뙍; ë™; 뙍; ) HANGUL SYLLABLE DDWAENJ
+B64E;B64E;1104 116B 11AD;B64E;1104 116B 11AD; # (뙎; 뙎; 뙎; 뙎; 뙎; ) HANGUL SYLLABLE DDWAENH
+B64F;B64F;1104 116B 11AE;B64F;1104 116B 11AE; # (ë™; ë™; 뙏; ë™; 뙏; ) HANGUL SYLLABLE DDWAED
+B650;B650;1104 116B 11AF;B650;1104 116B 11AF; # (ë™; ë™; 뙐; ë™; 뙐; ) HANGUL SYLLABLE DDWAEL
+B651;B651;1104 116B 11B0;B651;1104 116B 11B0; # (뙑; 뙑; 뙑; 뙑; 뙑; ) HANGUL SYLLABLE DDWAELG
+B652;B652;1104 116B 11B1;B652;1104 116B 11B1; # (뙒; 뙒; 뙒; 뙒; 뙒; ) HANGUL SYLLABLE DDWAELM
+B653;B653;1104 116B 11B2;B653;1104 116B 11B2; # (뙓; 뙓; 뙓; 뙓; 뙓; ) HANGUL SYLLABLE DDWAELB
+B654;B654;1104 116B 11B3;B654;1104 116B 11B3; # (뙔; 뙔; 뙔; 뙔; 뙔; ) HANGUL SYLLABLE DDWAELS
+B655;B655;1104 116B 11B4;B655;1104 116B 11B4; # (뙕; 뙕; 뙕; 뙕; 뙕; ) HANGUL SYLLABLE DDWAELT
+B656;B656;1104 116B 11B5;B656;1104 116B 11B5; # (뙖; 뙖; 뙖; 뙖; 뙖; ) HANGUL SYLLABLE DDWAELP
+B657;B657;1104 116B 11B6;B657;1104 116B 11B6; # (뙗; 뙗; 뙗; 뙗; 뙗; ) HANGUL SYLLABLE DDWAELH
+B658;B658;1104 116B 11B7;B658;1104 116B 11B7; # (뙘; 뙘; 뙘; 뙘; 뙘; ) HANGUL SYLLABLE DDWAEM
+B659;B659;1104 116B 11B8;B659;1104 116B 11B8; # (뙙; 뙙; 뙙; 뙙; 뙙; ) HANGUL SYLLABLE DDWAEB
+B65A;B65A;1104 116B 11B9;B65A;1104 116B 11B9; # (뙚; 뙚; 뙚; 뙚; 뙚; ) HANGUL SYLLABLE DDWAEBS
+B65B;B65B;1104 116B 11BA;B65B;1104 116B 11BA; # (뙛; 뙛; 뙛; 뙛; 뙛; ) HANGUL SYLLABLE DDWAES
+B65C;B65C;1104 116B 11BB;B65C;1104 116B 11BB; # (뙜; 뙜; 뙜; 뙜; 뙜; ) HANGUL SYLLABLE DDWAESS
+B65D;B65D;1104 116B 11BC;B65D;1104 116B 11BC; # (ë™; ë™; 뙝; ë™; 뙝; ) HANGUL SYLLABLE DDWAENG
+B65E;B65E;1104 116B 11BD;B65E;1104 116B 11BD; # (뙞; 뙞; 뙞; 뙞; 뙞; ) HANGUL SYLLABLE DDWAEJ
+B65F;B65F;1104 116B 11BE;B65F;1104 116B 11BE; # (뙟; 뙟; 뙟; 뙟; 뙟; ) HANGUL SYLLABLE DDWAEC
+B660;B660;1104 116B 11BF;B660;1104 116B 11BF; # (뙠; 뙠; 뙠; 뙠; 뙠; ) HANGUL SYLLABLE DDWAEK
+B661;B661;1104 116B 11C0;B661;1104 116B 11C0; # (뙡; 뙡; 뙡; 뙡; 뙡; ) HANGUL SYLLABLE DDWAET
+B662;B662;1104 116B 11C1;B662;1104 116B 11C1; # (뙢; 뙢; á„„á…«á‡; 뙢; á„„á…«á‡; ) HANGUL SYLLABLE DDWAEP
+B663;B663;1104 116B 11C2;B663;1104 116B 11C2; # (뙣; 뙣; 뙣; 뙣; 뙣; ) HANGUL SYLLABLE DDWAEH
+B664;B664;1104 116C;B664;1104 116C; # (뙤; 뙤; 뙤; 뙤; 뙤; ) HANGUL SYLLABLE DDOE
+B665;B665;1104 116C 11A8;B665;1104 116C 11A8; # (뙥; 뙥; 뙥; 뙥; 뙥; ) HANGUL SYLLABLE DDOEG
+B666;B666;1104 116C 11A9;B666;1104 116C 11A9; # (뙦; 뙦; 뙦; 뙦; 뙦; ) HANGUL SYLLABLE DDOEGG
+B667;B667;1104 116C 11AA;B667;1104 116C 11AA; # (뙧; 뙧; 뙧; 뙧; 뙧; ) HANGUL SYLLABLE DDOEGS
+B668;B668;1104 116C 11AB;B668;1104 116C 11AB; # (뙨; 뙨; 뙨; 뙨; 뙨; ) HANGUL SYLLABLE DDOEN
+B669;B669;1104 116C 11AC;B669;1104 116C 11AC; # (뙩; 뙩; 뙩; 뙩; 뙩; ) HANGUL SYLLABLE DDOENJ
+B66A;B66A;1104 116C 11AD;B66A;1104 116C 11AD; # (뙪; 뙪; 뙪; 뙪; 뙪; ) HANGUL SYLLABLE DDOENH
+B66B;B66B;1104 116C 11AE;B66B;1104 116C 11AE; # (뙫; 뙫; 뙫; 뙫; 뙫; ) HANGUL SYLLABLE DDOED
+B66C;B66C;1104 116C 11AF;B66C;1104 116C 11AF; # (뙬; 뙬; 뙬; 뙬; 뙬; ) HANGUL SYLLABLE DDOEL
+B66D;B66D;1104 116C 11B0;B66D;1104 116C 11B0; # (뙭; 뙭; 뙭; 뙭; 뙭; ) HANGUL SYLLABLE DDOELG
+B66E;B66E;1104 116C 11B1;B66E;1104 116C 11B1; # (뙮; 뙮; 뙮; 뙮; 뙮; ) HANGUL SYLLABLE DDOELM
+B66F;B66F;1104 116C 11B2;B66F;1104 116C 11B2; # (뙯; 뙯; 뙯; 뙯; 뙯; ) HANGUL SYLLABLE DDOELB
+B670;B670;1104 116C 11B3;B670;1104 116C 11B3; # (뙰; 뙰; 뙰; 뙰; 뙰; ) HANGUL SYLLABLE DDOELS
+B671;B671;1104 116C 11B4;B671;1104 116C 11B4; # (뙱; 뙱; 뙱; 뙱; 뙱; ) HANGUL SYLLABLE DDOELT
+B672;B672;1104 116C 11B5;B672;1104 116C 11B5; # (뙲; 뙲; 뙲; 뙲; 뙲; ) HANGUL SYLLABLE DDOELP
+B673;B673;1104 116C 11B6;B673;1104 116C 11B6; # (뙳; 뙳; 뙳; 뙳; 뙳; ) HANGUL SYLLABLE DDOELH
+B674;B674;1104 116C 11B7;B674;1104 116C 11B7; # (뙴; 뙴; 뙴; 뙴; 뙴; ) HANGUL SYLLABLE DDOEM
+B675;B675;1104 116C 11B8;B675;1104 116C 11B8; # (뙵; 뙵; 뙵; 뙵; 뙵; ) HANGUL SYLLABLE DDOEB
+B676;B676;1104 116C 11B9;B676;1104 116C 11B9; # (뙶; 뙶; 뙶; 뙶; 뙶; ) HANGUL SYLLABLE DDOEBS
+B677;B677;1104 116C 11BA;B677;1104 116C 11BA; # (뙷; 뙷; 뙷; 뙷; 뙷; ) HANGUL SYLLABLE DDOES
+B678;B678;1104 116C 11BB;B678;1104 116C 11BB; # (뙸; 뙸; 뙸; 뙸; 뙸; ) HANGUL SYLLABLE DDOESS
+B679;B679;1104 116C 11BC;B679;1104 116C 11BC; # (뙹; 뙹; 뙹; 뙹; 뙹; ) HANGUL SYLLABLE DDOENG
+B67A;B67A;1104 116C 11BD;B67A;1104 116C 11BD; # (뙺; 뙺; 뙺; 뙺; 뙺; ) HANGUL SYLLABLE DDOEJ
+B67B;B67B;1104 116C 11BE;B67B;1104 116C 11BE; # (뙻; 뙻; 뙻; 뙻; 뙻; ) HANGUL SYLLABLE DDOEC
+B67C;B67C;1104 116C 11BF;B67C;1104 116C 11BF; # (뙼; 뙼; 뙼; 뙼; 뙼; ) HANGUL SYLLABLE DDOEK
+B67D;B67D;1104 116C 11C0;B67D;1104 116C 11C0; # (뙽; 뙽; 뙽; 뙽; 뙽; ) HANGUL SYLLABLE DDOET
+B67E;B67E;1104 116C 11C1;B67E;1104 116C 11C1; # (뙾; 뙾; á„„á…¬á‡; 뙾; á„„á…¬á‡; ) HANGUL SYLLABLE DDOEP
+B67F;B67F;1104 116C 11C2;B67F;1104 116C 11C2; # (뙿; 뙿; 뙿; 뙿; 뙿; ) HANGUL SYLLABLE DDOEH
+B680;B680;1104 116D;B680;1104 116D; # (뚀; 뚀; 뚀; 뚀; 뚀; ) HANGUL SYLLABLE DDYO
+B681;B681;1104 116D 11A8;B681;1104 116D 11A8; # (ëš; ëš; 뚁; ëš; 뚁; ) HANGUL SYLLABLE DDYOG
+B682;B682;1104 116D 11A9;B682;1104 116D 11A9; # (뚂; 뚂; 뚂; 뚂; 뚂; ) HANGUL SYLLABLE DDYOGG
+B683;B683;1104 116D 11AA;B683;1104 116D 11AA; # (뚃; 뚃; 뚃; 뚃; 뚃; ) HANGUL SYLLABLE DDYOGS
+B684;B684;1104 116D 11AB;B684;1104 116D 11AB; # (뚄; 뚄; 뚄; 뚄; 뚄; ) HANGUL SYLLABLE DDYON
+B685;B685;1104 116D 11AC;B685;1104 116D 11AC; # (뚅; 뚅; 뚅; 뚅; 뚅; ) HANGUL SYLLABLE DDYONJ
+B686;B686;1104 116D 11AD;B686;1104 116D 11AD; # (뚆; 뚆; 뚆; 뚆; 뚆; ) HANGUL SYLLABLE DDYONH
+B687;B687;1104 116D 11AE;B687;1104 116D 11AE; # (뚇; 뚇; 뚇; 뚇; 뚇; ) HANGUL SYLLABLE DDYOD
+B688;B688;1104 116D 11AF;B688;1104 116D 11AF; # (뚈; 뚈; 뚈; 뚈; 뚈; ) HANGUL SYLLABLE DDYOL
+B689;B689;1104 116D 11B0;B689;1104 116D 11B0; # (뚉; 뚉; 뚉; 뚉; 뚉; ) HANGUL SYLLABLE DDYOLG
+B68A;B68A;1104 116D 11B1;B68A;1104 116D 11B1; # (뚊; 뚊; 뚊; 뚊; 뚊; ) HANGUL SYLLABLE DDYOLM
+B68B;B68B;1104 116D 11B2;B68B;1104 116D 11B2; # (뚋; 뚋; 뚋; 뚋; 뚋; ) HANGUL SYLLABLE DDYOLB
+B68C;B68C;1104 116D 11B3;B68C;1104 116D 11B3; # (뚌; 뚌; 뚌; 뚌; 뚌; ) HANGUL SYLLABLE DDYOLS
+B68D;B68D;1104 116D 11B4;B68D;1104 116D 11B4; # (ëš; ëš; 뚍; ëš; 뚍; ) HANGUL SYLLABLE DDYOLT
+B68E;B68E;1104 116D 11B5;B68E;1104 116D 11B5; # (뚎; 뚎; 뚎; 뚎; 뚎; ) HANGUL SYLLABLE DDYOLP
+B68F;B68F;1104 116D 11B6;B68F;1104 116D 11B6; # (ëš; ëš; 뚏; ëš; 뚏; ) HANGUL SYLLABLE DDYOLH
+B690;B690;1104 116D 11B7;B690;1104 116D 11B7; # (ëš; ëš; 뚐; ëš; 뚐; ) HANGUL SYLLABLE DDYOM
+B691;B691;1104 116D 11B8;B691;1104 116D 11B8; # (뚑; 뚑; 뚑; 뚑; 뚑; ) HANGUL SYLLABLE DDYOB
+B692;B692;1104 116D 11B9;B692;1104 116D 11B9; # (뚒; 뚒; 뚒; 뚒; 뚒; ) HANGUL SYLLABLE DDYOBS
+B693;B693;1104 116D 11BA;B693;1104 116D 11BA; # (뚓; 뚓; 뚓; 뚓; 뚓; ) HANGUL SYLLABLE DDYOS
+B694;B694;1104 116D 11BB;B694;1104 116D 11BB; # (뚔; 뚔; 뚔; 뚔; 뚔; ) HANGUL SYLLABLE DDYOSS
+B695;B695;1104 116D 11BC;B695;1104 116D 11BC; # (뚕; 뚕; 뚕; 뚕; 뚕; ) HANGUL SYLLABLE DDYONG
+B696;B696;1104 116D 11BD;B696;1104 116D 11BD; # (뚖; 뚖; 뚖; 뚖; 뚖; ) HANGUL SYLLABLE DDYOJ
+B697;B697;1104 116D 11BE;B697;1104 116D 11BE; # (뚗; 뚗; 뚗; 뚗; 뚗; ) HANGUL SYLLABLE DDYOC
+B698;B698;1104 116D 11BF;B698;1104 116D 11BF; # (뚘; 뚘; 뚘; 뚘; 뚘; ) HANGUL SYLLABLE DDYOK
+B699;B699;1104 116D 11C0;B699;1104 116D 11C0; # (뚙; 뚙; 뚙; 뚙; 뚙; ) HANGUL SYLLABLE DDYOT
+B69A;B69A;1104 116D 11C1;B69A;1104 116D 11C1; # (ëšš; ëšš; á„„á…­á‡; ëšš; á„„á…­á‡; ) HANGUL SYLLABLE DDYOP
+B69B;B69B;1104 116D 11C2;B69B;1104 116D 11C2; # (뚛; 뚛; 뚛; 뚛; 뚛; ) HANGUL SYLLABLE DDYOH
+B69C;B69C;1104 116E;B69C;1104 116E; # (뚜; 뚜; 뚜; 뚜; 뚜; ) HANGUL SYLLABLE DDU
+B69D;B69D;1104 116E 11A8;B69D;1104 116E 11A8; # (ëš; ëš; 뚝; ëš; 뚝; ) HANGUL SYLLABLE DDUG
+B69E;B69E;1104 116E 11A9;B69E;1104 116E 11A9; # (뚞; 뚞; 뚞; 뚞; 뚞; ) HANGUL SYLLABLE DDUGG
+B69F;B69F;1104 116E 11AA;B69F;1104 116E 11AA; # (뚟; 뚟; 뚟; 뚟; 뚟; ) HANGUL SYLLABLE DDUGS
+B6A0;B6A0;1104 116E 11AB;B6A0;1104 116E 11AB; # (뚠; 뚠; 뚠; 뚠; 뚠; ) HANGUL SYLLABLE DDUN
+B6A1;B6A1;1104 116E 11AC;B6A1;1104 116E 11AC; # (뚡; 뚡; 뚡; 뚡; 뚡; ) HANGUL SYLLABLE DDUNJ
+B6A2;B6A2;1104 116E 11AD;B6A2;1104 116E 11AD; # (뚢; 뚢; 뚢; 뚢; 뚢; ) HANGUL SYLLABLE DDUNH
+B6A3;B6A3;1104 116E 11AE;B6A3;1104 116E 11AE; # (뚣; 뚣; 뚣; 뚣; 뚣; ) HANGUL SYLLABLE DDUD
+B6A4;B6A4;1104 116E 11AF;B6A4;1104 116E 11AF; # (뚤; 뚤; 뚤; 뚤; 뚤; ) HANGUL SYLLABLE DDUL
+B6A5;B6A5;1104 116E 11B0;B6A5;1104 116E 11B0; # (뚥; 뚥; 뚥; 뚥; 뚥; ) HANGUL SYLLABLE DDULG
+B6A6;B6A6;1104 116E 11B1;B6A6;1104 116E 11B1; # (뚦; 뚦; 뚦; 뚦; 뚦; ) HANGUL SYLLABLE DDULM
+B6A7;B6A7;1104 116E 11B2;B6A7;1104 116E 11B2; # (뚧; 뚧; 뚧; 뚧; 뚧; ) HANGUL SYLLABLE DDULB
+B6A8;B6A8;1104 116E 11B3;B6A8;1104 116E 11B3; # (뚨; 뚨; 뚨; 뚨; 뚨; ) HANGUL SYLLABLE DDULS
+B6A9;B6A9;1104 116E 11B4;B6A9;1104 116E 11B4; # (뚩; 뚩; 뚩; 뚩; 뚩; ) HANGUL SYLLABLE DDULT
+B6AA;B6AA;1104 116E 11B5;B6AA;1104 116E 11B5; # (뚪; 뚪; 뚪; 뚪; 뚪; ) HANGUL SYLLABLE DDULP
+B6AB;B6AB;1104 116E 11B6;B6AB;1104 116E 11B6; # (뚫; 뚫; 뚫; 뚫; 뚫; ) HANGUL SYLLABLE DDULH
+B6AC;B6AC;1104 116E 11B7;B6AC;1104 116E 11B7; # (뚬; 뚬; 뚬; 뚬; 뚬; ) HANGUL SYLLABLE DDUM
+B6AD;B6AD;1104 116E 11B8;B6AD;1104 116E 11B8; # (뚭; 뚭; 뚭; 뚭; 뚭; ) HANGUL SYLLABLE DDUB
+B6AE;B6AE;1104 116E 11B9;B6AE;1104 116E 11B9; # (뚮; 뚮; 뚮; 뚮; 뚮; ) HANGUL SYLLABLE DDUBS
+B6AF;B6AF;1104 116E 11BA;B6AF;1104 116E 11BA; # (뚯; 뚯; 뚯; 뚯; 뚯; ) HANGUL SYLLABLE DDUS
+B6B0;B6B0;1104 116E 11BB;B6B0;1104 116E 11BB; # (뚰; 뚰; 뚰; 뚰; 뚰; ) HANGUL SYLLABLE DDUSS
+B6B1;B6B1;1104 116E 11BC;B6B1;1104 116E 11BC; # (뚱; 뚱; 뚱; 뚱; 뚱; ) HANGUL SYLLABLE DDUNG
+B6B2;B6B2;1104 116E 11BD;B6B2;1104 116E 11BD; # (뚲; 뚲; 뚲; 뚲; 뚲; ) HANGUL SYLLABLE DDUJ
+B6B3;B6B3;1104 116E 11BE;B6B3;1104 116E 11BE; # (뚳; 뚳; 뚳; 뚳; 뚳; ) HANGUL SYLLABLE DDUC
+B6B4;B6B4;1104 116E 11BF;B6B4;1104 116E 11BF; # (뚴; 뚴; 뚴; 뚴; 뚴; ) HANGUL SYLLABLE DDUK
+B6B5;B6B5;1104 116E 11C0;B6B5;1104 116E 11C0; # (뚵; 뚵; 뚵; 뚵; 뚵; ) HANGUL SYLLABLE DDUT
+B6B6;B6B6;1104 116E 11C1;B6B6;1104 116E 11C1; # (뚶; 뚶; á„„á…®á‡; 뚶; á„„á…®á‡; ) HANGUL SYLLABLE DDUP
+B6B7;B6B7;1104 116E 11C2;B6B7;1104 116E 11C2; # (뚷; 뚷; 뚷; 뚷; 뚷; ) HANGUL SYLLABLE DDUH
+B6B8;B6B8;1104 116F;B6B8;1104 116F; # (뚸; 뚸; 뚸; 뚸; 뚸; ) HANGUL SYLLABLE DDWEO
+B6B9;B6B9;1104 116F 11A8;B6B9;1104 116F 11A8; # (뚹; 뚹; 뚹; 뚹; 뚹; ) HANGUL SYLLABLE DDWEOG
+B6BA;B6BA;1104 116F 11A9;B6BA;1104 116F 11A9; # (뚺; 뚺; 뚺; 뚺; 뚺; ) HANGUL SYLLABLE DDWEOGG
+B6BB;B6BB;1104 116F 11AA;B6BB;1104 116F 11AA; # (뚻; 뚻; 뚻; 뚻; 뚻; ) HANGUL SYLLABLE DDWEOGS
+B6BC;B6BC;1104 116F 11AB;B6BC;1104 116F 11AB; # (뚼; 뚼; 뚼; 뚼; 뚼; ) HANGUL SYLLABLE DDWEON
+B6BD;B6BD;1104 116F 11AC;B6BD;1104 116F 11AC; # (뚽; 뚽; 뚽; 뚽; 뚽; ) HANGUL SYLLABLE DDWEONJ
+B6BE;B6BE;1104 116F 11AD;B6BE;1104 116F 11AD; # (뚾; 뚾; 뚾; 뚾; 뚾; ) HANGUL SYLLABLE DDWEONH
+B6BF;B6BF;1104 116F 11AE;B6BF;1104 116F 11AE; # (뚿; 뚿; 뚿; 뚿; 뚿; ) HANGUL SYLLABLE DDWEOD
+B6C0;B6C0;1104 116F 11AF;B6C0;1104 116F 11AF; # (뛀; 뛀; 뛀; 뛀; 뛀; ) HANGUL SYLLABLE DDWEOL
+B6C1;B6C1;1104 116F 11B0;B6C1;1104 116F 11B0; # (ë›; ë›; 뛁; ë›; 뛁; ) HANGUL SYLLABLE DDWEOLG
+B6C2;B6C2;1104 116F 11B1;B6C2;1104 116F 11B1; # (뛂; 뛂; 뛂; 뛂; 뛂; ) HANGUL SYLLABLE DDWEOLM
+B6C3;B6C3;1104 116F 11B2;B6C3;1104 116F 11B2; # (뛃; 뛃; 뛃; 뛃; 뛃; ) HANGUL SYLLABLE DDWEOLB
+B6C4;B6C4;1104 116F 11B3;B6C4;1104 116F 11B3; # (뛄; 뛄; 뛄; 뛄; 뛄; ) HANGUL SYLLABLE DDWEOLS
+B6C5;B6C5;1104 116F 11B4;B6C5;1104 116F 11B4; # (뛅; 뛅; 뛅; 뛅; 뛅; ) HANGUL SYLLABLE DDWEOLT
+B6C6;B6C6;1104 116F 11B5;B6C6;1104 116F 11B5; # (뛆; 뛆; 뛆; 뛆; 뛆; ) HANGUL SYLLABLE DDWEOLP
+B6C7;B6C7;1104 116F 11B6;B6C7;1104 116F 11B6; # (뛇; 뛇; 뛇; 뛇; 뛇; ) HANGUL SYLLABLE DDWEOLH
+B6C8;B6C8;1104 116F 11B7;B6C8;1104 116F 11B7; # (뛈; 뛈; 뛈; 뛈; 뛈; ) HANGUL SYLLABLE DDWEOM
+B6C9;B6C9;1104 116F 11B8;B6C9;1104 116F 11B8; # (뛉; 뛉; 뛉; 뛉; 뛉; ) HANGUL SYLLABLE DDWEOB
+B6CA;B6CA;1104 116F 11B9;B6CA;1104 116F 11B9; # (뛊; 뛊; 뛊; 뛊; 뛊; ) HANGUL SYLLABLE DDWEOBS
+B6CB;B6CB;1104 116F 11BA;B6CB;1104 116F 11BA; # (뛋; 뛋; 뛋; 뛋; 뛋; ) HANGUL SYLLABLE DDWEOS
+B6CC;B6CC;1104 116F 11BB;B6CC;1104 116F 11BB; # (뛌; 뛌; 뛌; 뛌; 뛌; ) HANGUL SYLLABLE DDWEOSS
+B6CD;B6CD;1104 116F 11BC;B6CD;1104 116F 11BC; # (ë›; ë›; 뛍; ë›; 뛍; ) HANGUL SYLLABLE DDWEONG
+B6CE;B6CE;1104 116F 11BD;B6CE;1104 116F 11BD; # (뛎; 뛎; 뛎; 뛎; 뛎; ) HANGUL SYLLABLE DDWEOJ
+B6CF;B6CF;1104 116F 11BE;B6CF;1104 116F 11BE; # (ë›; ë›; 뛏; ë›; 뛏; ) HANGUL SYLLABLE DDWEOC
+B6D0;B6D0;1104 116F 11BF;B6D0;1104 116F 11BF; # (ë›; ë›; 뛐; ë›; 뛐; ) HANGUL SYLLABLE DDWEOK
+B6D1;B6D1;1104 116F 11C0;B6D1;1104 116F 11C0; # (뛑; 뛑; 뛑; 뛑; 뛑; ) HANGUL SYLLABLE DDWEOT
+B6D2;B6D2;1104 116F 11C1;B6D2;1104 116F 11C1; # (ë›’; ë›’; á„„á…¯á‡; ë›’; á„„á…¯á‡; ) HANGUL SYLLABLE DDWEOP
+B6D3;B6D3;1104 116F 11C2;B6D3;1104 116F 11C2; # (뛓; 뛓; 뛓; 뛓; 뛓; ) HANGUL SYLLABLE DDWEOH
+B6D4;B6D4;1104 1170;B6D4;1104 1170; # (ë›”; ë›”; á„„á…°; ë›”; á„„á…°; ) HANGUL SYLLABLE DDWE
+B6D5;B6D5;1104 1170 11A8;B6D5;1104 1170 11A8; # (뛕; 뛕; 뛕; 뛕; 뛕; ) HANGUL SYLLABLE DDWEG
+B6D6;B6D6;1104 1170 11A9;B6D6;1104 1170 11A9; # (뛖; 뛖; 뛖; 뛖; 뛖; ) HANGUL SYLLABLE DDWEGG
+B6D7;B6D7;1104 1170 11AA;B6D7;1104 1170 11AA; # (뛗; 뛗; 뛗; 뛗; 뛗; ) HANGUL SYLLABLE DDWEGS
+B6D8;B6D8;1104 1170 11AB;B6D8;1104 1170 11AB; # (뛘; 뛘; 뛘; 뛘; 뛘; ) HANGUL SYLLABLE DDWEN
+B6D9;B6D9;1104 1170 11AC;B6D9;1104 1170 11AC; # (뛙; 뛙; 뛙; 뛙; 뛙; ) HANGUL SYLLABLE DDWENJ
+B6DA;B6DA;1104 1170 11AD;B6DA;1104 1170 11AD; # (뛚; 뛚; 뛚; 뛚; 뛚; ) HANGUL SYLLABLE DDWENH
+B6DB;B6DB;1104 1170 11AE;B6DB;1104 1170 11AE; # (뛛; 뛛; 뛛; 뛛; 뛛; ) HANGUL SYLLABLE DDWED
+B6DC;B6DC;1104 1170 11AF;B6DC;1104 1170 11AF; # (뛜; 뛜; 뛜; 뛜; 뛜; ) HANGUL SYLLABLE DDWEL
+B6DD;B6DD;1104 1170 11B0;B6DD;1104 1170 11B0; # (ë›; ë›; 뛝; ë›; 뛝; ) HANGUL SYLLABLE DDWELG
+B6DE;B6DE;1104 1170 11B1;B6DE;1104 1170 11B1; # (뛞; 뛞; 뛞; 뛞; 뛞; ) HANGUL SYLLABLE DDWELM
+B6DF;B6DF;1104 1170 11B2;B6DF;1104 1170 11B2; # (뛟; 뛟; 뛟; 뛟; 뛟; ) HANGUL SYLLABLE DDWELB
+B6E0;B6E0;1104 1170 11B3;B6E0;1104 1170 11B3; # (뛠; 뛠; 뛠; 뛠; 뛠; ) HANGUL SYLLABLE DDWELS
+B6E1;B6E1;1104 1170 11B4;B6E1;1104 1170 11B4; # (뛡; 뛡; 뛡; 뛡; 뛡; ) HANGUL SYLLABLE DDWELT
+B6E2;B6E2;1104 1170 11B5;B6E2;1104 1170 11B5; # (뛢; 뛢; 뛢; 뛢; 뛢; ) HANGUL SYLLABLE DDWELP
+B6E3;B6E3;1104 1170 11B6;B6E3;1104 1170 11B6; # (뛣; 뛣; 뛣; 뛣; 뛣; ) HANGUL SYLLABLE DDWELH
+B6E4;B6E4;1104 1170 11B7;B6E4;1104 1170 11B7; # (뛤; 뛤; 뛤; 뛤; 뛤; ) HANGUL SYLLABLE DDWEM
+B6E5;B6E5;1104 1170 11B8;B6E5;1104 1170 11B8; # (뛥; 뛥; 뛥; 뛥; 뛥; ) HANGUL SYLLABLE DDWEB
+B6E6;B6E6;1104 1170 11B9;B6E6;1104 1170 11B9; # (뛦; 뛦; 뛦; 뛦; 뛦; ) HANGUL SYLLABLE DDWEBS
+B6E7;B6E7;1104 1170 11BA;B6E7;1104 1170 11BA; # (뛧; 뛧; 뛧; 뛧; 뛧; ) HANGUL SYLLABLE DDWES
+B6E8;B6E8;1104 1170 11BB;B6E8;1104 1170 11BB; # (뛨; 뛨; 뛨; 뛨; 뛨; ) HANGUL SYLLABLE DDWESS
+B6E9;B6E9;1104 1170 11BC;B6E9;1104 1170 11BC; # (뛩; 뛩; 뛩; 뛩; 뛩; ) HANGUL SYLLABLE DDWENG
+B6EA;B6EA;1104 1170 11BD;B6EA;1104 1170 11BD; # (뛪; 뛪; 뛪; 뛪; 뛪; ) HANGUL SYLLABLE DDWEJ
+B6EB;B6EB;1104 1170 11BE;B6EB;1104 1170 11BE; # (뛫; 뛫; 뛫; 뛫; 뛫; ) HANGUL SYLLABLE DDWEC
+B6EC;B6EC;1104 1170 11BF;B6EC;1104 1170 11BF; # (뛬; 뛬; 뛬; 뛬; 뛬; ) HANGUL SYLLABLE DDWEK
+B6ED;B6ED;1104 1170 11C0;B6ED;1104 1170 11C0; # (뛭; 뛭; 뛭; 뛭; 뛭; ) HANGUL SYLLABLE DDWET
+B6EE;B6EE;1104 1170 11C1;B6EE;1104 1170 11C1; # (ë›®; ë›®; á„„á…°á‡; ë›®; á„„á…°á‡; ) HANGUL SYLLABLE DDWEP
+B6EF;B6EF;1104 1170 11C2;B6EF;1104 1170 11C2; # (뛯; 뛯; 뛯; 뛯; 뛯; ) HANGUL SYLLABLE DDWEH
+B6F0;B6F0;1104 1171;B6F0;1104 1171; # (ë›°; ë›°; á„„á…±; ë›°; á„„á…±; ) HANGUL SYLLABLE DDWI
+B6F1;B6F1;1104 1171 11A8;B6F1;1104 1171 11A8; # (뛱; 뛱; 뛱; 뛱; 뛱; ) HANGUL SYLLABLE DDWIG
+B6F2;B6F2;1104 1171 11A9;B6F2;1104 1171 11A9; # (뛲; 뛲; 뛲; 뛲; 뛲; ) HANGUL SYLLABLE DDWIGG
+B6F3;B6F3;1104 1171 11AA;B6F3;1104 1171 11AA; # (뛳; 뛳; 뛳; 뛳; 뛳; ) HANGUL SYLLABLE DDWIGS
+B6F4;B6F4;1104 1171 11AB;B6F4;1104 1171 11AB; # (뛴; 뛴; 뛴; 뛴; 뛴; ) HANGUL SYLLABLE DDWIN
+B6F5;B6F5;1104 1171 11AC;B6F5;1104 1171 11AC; # (뛵; 뛵; 뛵; 뛵; 뛵; ) HANGUL SYLLABLE DDWINJ
+B6F6;B6F6;1104 1171 11AD;B6F6;1104 1171 11AD; # (뛶; 뛶; 뛶; 뛶; 뛶; ) HANGUL SYLLABLE DDWINH
+B6F7;B6F7;1104 1171 11AE;B6F7;1104 1171 11AE; # (뛷; 뛷; 뛷; 뛷; 뛷; ) HANGUL SYLLABLE DDWID
+B6F8;B6F8;1104 1171 11AF;B6F8;1104 1171 11AF; # (뛸; 뛸; 뛸; 뛸; 뛸; ) HANGUL SYLLABLE DDWIL
+B6F9;B6F9;1104 1171 11B0;B6F9;1104 1171 11B0; # (뛹; 뛹; 뛹; 뛹; 뛹; ) HANGUL SYLLABLE DDWILG
+B6FA;B6FA;1104 1171 11B1;B6FA;1104 1171 11B1; # (뛺; 뛺; 뛺; 뛺; 뛺; ) HANGUL SYLLABLE DDWILM
+B6FB;B6FB;1104 1171 11B2;B6FB;1104 1171 11B2; # (뛻; 뛻; 뛻; 뛻; 뛻; ) HANGUL SYLLABLE DDWILB
+B6FC;B6FC;1104 1171 11B3;B6FC;1104 1171 11B3; # (뛼; 뛼; 뛼; 뛼; 뛼; ) HANGUL SYLLABLE DDWILS
+B6FD;B6FD;1104 1171 11B4;B6FD;1104 1171 11B4; # (뛽; 뛽; 뛽; 뛽; 뛽; ) HANGUL SYLLABLE DDWILT
+B6FE;B6FE;1104 1171 11B5;B6FE;1104 1171 11B5; # (뛾; 뛾; 뛾; 뛾; 뛾; ) HANGUL SYLLABLE DDWILP
+B6FF;B6FF;1104 1171 11B6;B6FF;1104 1171 11B6; # (뛿; 뛿; 뛿; 뛿; 뛿; ) HANGUL SYLLABLE DDWILH
+B700;B700;1104 1171 11B7;B700;1104 1171 11B7; # (뜀; 뜀; 뜀; 뜀; 뜀; ) HANGUL SYLLABLE DDWIM
+B701;B701;1104 1171 11B8;B701;1104 1171 11B8; # (ëœ; ëœ; 뜁; ëœ; 뜁; ) HANGUL SYLLABLE DDWIB
+B702;B702;1104 1171 11B9;B702;1104 1171 11B9; # (뜂; 뜂; 뜂; 뜂; 뜂; ) HANGUL SYLLABLE DDWIBS
+B703;B703;1104 1171 11BA;B703;1104 1171 11BA; # (뜃; 뜃; 뜃; 뜃; 뜃; ) HANGUL SYLLABLE DDWIS
+B704;B704;1104 1171 11BB;B704;1104 1171 11BB; # (뜄; 뜄; 뜄; 뜄; 뜄; ) HANGUL SYLLABLE DDWISS
+B705;B705;1104 1171 11BC;B705;1104 1171 11BC; # (뜅; 뜅; 뜅; 뜅; 뜅; ) HANGUL SYLLABLE DDWING
+B706;B706;1104 1171 11BD;B706;1104 1171 11BD; # (뜆; 뜆; 뜆; 뜆; 뜆; ) HANGUL SYLLABLE DDWIJ
+B707;B707;1104 1171 11BE;B707;1104 1171 11BE; # (뜇; 뜇; 뜇; 뜇; 뜇; ) HANGUL SYLLABLE DDWIC
+B708;B708;1104 1171 11BF;B708;1104 1171 11BF; # (뜈; 뜈; 뜈; 뜈; 뜈; ) HANGUL SYLLABLE DDWIK
+B709;B709;1104 1171 11C0;B709;1104 1171 11C0; # (뜉; 뜉; 뜉; 뜉; 뜉; ) HANGUL SYLLABLE DDWIT
+B70A;B70A;1104 1171 11C1;B70A;1104 1171 11C1; # (뜊; 뜊; á„„á…±á‡; 뜊; á„„á…±á‡; ) HANGUL SYLLABLE DDWIP
+B70B;B70B;1104 1171 11C2;B70B;1104 1171 11C2; # (뜋; 뜋; 뜋; 뜋; 뜋; ) HANGUL SYLLABLE DDWIH
+B70C;B70C;1104 1172;B70C;1104 1172; # (뜌; 뜌; 뜌; 뜌; 뜌; ) HANGUL SYLLABLE DDYU
+B70D;B70D;1104 1172 11A8;B70D;1104 1172 11A8; # (ëœ; ëœ; 뜍; ëœ; 뜍; ) HANGUL SYLLABLE DDYUG
+B70E;B70E;1104 1172 11A9;B70E;1104 1172 11A9; # (뜎; 뜎; 뜎; 뜎; 뜎; ) HANGUL SYLLABLE DDYUGG
+B70F;B70F;1104 1172 11AA;B70F;1104 1172 11AA; # (ëœ; ëœ; 뜏; ëœ; 뜏; ) HANGUL SYLLABLE DDYUGS
+B710;B710;1104 1172 11AB;B710;1104 1172 11AB; # (ëœ; ëœ; 뜐; ëœ; 뜐; ) HANGUL SYLLABLE DDYUN
+B711;B711;1104 1172 11AC;B711;1104 1172 11AC; # (뜑; 뜑; 뜑; 뜑; 뜑; ) HANGUL SYLLABLE DDYUNJ
+B712;B712;1104 1172 11AD;B712;1104 1172 11AD; # (뜒; 뜒; 뜒; 뜒; 뜒; ) HANGUL SYLLABLE DDYUNH
+B713;B713;1104 1172 11AE;B713;1104 1172 11AE; # (뜓; 뜓; 뜓; 뜓; 뜓; ) HANGUL SYLLABLE DDYUD
+B714;B714;1104 1172 11AF;B714;1104 1172 11AF; # (뜔; 뜔; 뜔; 뜔; 뜔; ) HANGUL SYLLABLE DDYUL
+B715;B715;1104 1172 11B0;B715;1104 1172 11B0; # (뜕; 뜕; 뜕; 뜕; 뜕; ) HANGUL SYLLABLE DDYULG
+B716;B716;1104 1172 11B1;B716;1104 1172 11B1; # (뜖; 뜖; 뜖; 뜖; 뜖; ) HANGUL SYLLABLE DDYULM
+B717;B717;1104 1172 11B2;B717;1104 1172 11B2; # (뜗; 뜗; 뜗; 뜗; 뜗; ) HANGUL SYLLABLE DDYULB
+B718;B718;1104 1172 11B3;B718;1104 1172 11B3; # (뜘; 뜘; 뜘; 뜘; 뜘; ) HANGUL SYLLABLE DDYULS
+B719;B719;1104 1172 11B4;B719;1104 1172 11B4; # (뜙; 뜙; 뜙; 뜙; 뜙; ) HANGUL SYLLABLE DDYULT
+B71A;B71A;1104 1172 11B5;B71A;1104 1172 11B5; # (뜚; 뜚; 뜚; 뜚; 뜚; ) HANGUL SYLLABLE DDYULP
+B71B;B71B;1104 1172 11B6;B71B;1104 1172 11B6; # (뜛; 뜛; 뜛; 뜛; 뜛; ) HANGUL SYLLABLE DDYULH
+B71C;B71C;1104 1172 11B7;B71C;1104 1172 11B7; # (뜜; 뜜; 뜜; 뜜; 뜜; ) HANGUL SYLLABLE DDYUM
+B71D;B71D;1104 1172 11B8;B71D;1104 1172 11B8; # (ëœ; ëœ; 뜝; ëœ; 뜝; ) HANGUL SYLLABLE DDYUB
+B71E;B71E;1104 1172 11B9;B71E;1104 1172 11B9; # (뜞; 뜞; 뜞; 뜞; 뜞; ) HANGUL SYLLABLE DDYUBS
+B71F;B71F;1104 1172 11BA;B71F;1104 1172 11BA; # (뜟; 뜟; 뜟; 뜟; 뜟; ) HANGUL SYLLABLE DDYUS
+B720;B720;1104 1172 11BB;B720;1104 1172 11BB; # (뜠; 뜠; 뜠; 뜠; 뜠; ) HANGUL SYLLABLE DDYUSS
+B721;B721;1104 1172 11BC;B721;1104 1172 11BC; # (뜡; 뜡; 뜡; 뜡; 뜡; ) HANGUL SYLLABLE DDYUNG
+B722;B722;1104 1172 11BD;B722;1104 1172 11BD; # (뜢; 뜢; 뜢; 뜢; 뜢; ) HANGUL SYLLABLE DDYUJ
+B723;B723;1104 1172 11BE;B723;1104 1172 11BE; # (뜣; 뜣; 뜣; 뜣; 뜣; ) HANGUL SYLLABLE DDYUC
+B724;B724;1104 1172 11BF;B724;1104 1172 11BF; # (뜤; 뜤; 뜤; 뜤; 뜤; ) HANGUL SYLLABLE DDYUK
+B725;B725;1104 1172 11C0;B725;1104 1172 11C0; # (뜥; 뜥; 뜥; 뜥; 뜥; ) HANGUL SYLLABLE DDYUT
+B726;B726;1104 1172 11C1;B726;1104 1172 11C1; # (뜦; 뜦; á„„á…²á‡; 뜦; á„„á…²á‡; ) HANGUL SYLLABLE DDYUP
+B727;B727;1104 1172 11C2;B727;1104 1172 11C2; # (뜧; 뜧; 뜧; 뜧; 뜧; ) HANGUL SYLLABLE DDYUH
+B728;B728;1104 1173;B728;1104 1173; # (뜨; 뜨; 뜨; 뜨; 뜨; ) HANGUL SYLLABLE DDEU
+B729;B729;1104 1173 11A8;B729;1104 1173 11A8; # (뜩; 뜩; 뜩; 뜩; 뜩; ) HANGUL SYLLABLE DDEUG
+B72A;B72A;1104 1173 11A9;B72A;1104 1173 11A9; # (뜪; 뜪; 뜪; 뜪; 뜪; ) HANGUL SYLLABLE DDEUGG
+B72B;B72B;1104 1173 11AA;B72B;1104 1173 11AA; # (뜫; 뜫; 뜫; 뜫; 뜫; ) HANGUL SYLLABLE DDEUGS
+B72C;B72C;1104 1173 11AB;B72C;1104 1173 11AB; # (뜬; 뜬; 뜬; 뜬; 뜬; ) HANGUL SYLLABLE DDEUN
+B72D;B72D;1104 1173 11AC;B72D;1104 1173 11AC; # (뜭; 뜭; 뜭; 뜭; 뜭; ) HANGUL SYLLABLE DDEUNJ
+B72E;B72E;1104 1173 11AD;B72E;1104 1173 11AD; # (뜮; 뜮; 뜮; 뜮; 뜮; ) HANGUL SYLLABLE DDEUNH
+B72F;B72F;1104 1173 11AE;B72F;1104 1173 11AE; # (뜯; 뜯; 뜯; 뜯; 뜯; ) HANGUL SYLLABLE DDEUD
+B730;B730;1104 1173 11AF;B730;1104 1173 11AF; # (뜰; 뜰; 뜰; 뜰; 뜰; ) HANGUL SYLLABLE DDEUL
+B731;B731;1104 1173 11B0;B731;1104 1173 11B0; # (뜱; 뜱; 뜱; 뜱; 뜱; ) HANGUL SYLLABLE DDEULG
+B732;B732;1104 1173 11B1;B732;1104 1173 11B1; # (뜲; 뜲; 뜲; 뜲; 뜲; ) HANGUL SYLLABLE DDEULM
+B733;B733;1104 1173 11B2;B733;1104 1173 11B2; # (뜳; 뜳; 뜳; 뜳; 뜳; ) HANGUL SYLLABLE DDEULB
+B734;B734;1104 1173 11B3;B734;1104 1173 11B3; # (뜴; 뜴; 뜴; 뜴; 뜴; ) HANGUL SYLLABLE DDEULS
+B735;B735;1104 1173 11B4;B735;1104 1173 11B4; # (뜵; 뜵; 뜵; 뜵; 뜵; ) HANGUL SYLLABLE DDEULT
+B736;B736;1104 1173 11B5;B736;1104 1173 11B5; # (뜶; 뜶; 뜶; 뜶; 뜶; ) HANGUL SYLLABLE DDEULP
+B737;B737;1104 1173 11B6;B737;1104 1173 11B6; # (뜷; 뜷; 뜷; 뜷; 뜷; ) HANGUL SYLLABLE DDEULH
+B738;B738;1104 1173 11B7;B738;1104 1173 11B7; # (뜸; 뜸; 뜸; 뜸; 뜸; ) HANGUL SYLLABLE DDEUM
+B739;B739;1104 1173 11B8;B739;1104 1173 11B8; # (뜹; 뜹; 뜹; 뜹; 뜹; ) HANGUL SYLLABLE DDEUB
+B73A;B73A;1104 1173 11B9;B73A;1104 1173 11B9; # (뜺; 뜺; 뜺; 뜺; 뜺; ) HANGUL SYLLABLE DDEUBS
+B73B;B73B;1104 1173 11BA;B73B;1104 1173 11BA; # (뜻; 뜻; 뜻; 뜻; 뜻; ) HANGUL SYLLABLE DDEUS
+B73C;B73C;1104 1173 11BB;B73C;1104 1173 11BB; # (뜼; 뜼; 뜼; 뜼; 뜼; ) HANGUL SYLLABLE DDEUSS
+B73D;B73D;1104 1173 11BC;B73D;1104 1173 11BC; # (뜽; 뜽; 뜽; 뜽; 뜽; ) HANGUL SYLLABLE DDEUNG
+B73E;B73E;1104 1173 11BD;B73E;1104 1173 11BD; # (뜾; 뜾; 뜾; 뜾; 뜾; ) HANGUL SYLLABLE DDEUJ
+B73F;B73F;1104 1173 11BE;B73F;1104 1173 11BE; # (뜿; 뜿; 뜿; 뜿; 뜿; ) HANGUL SYLLABLE DDEUC
+B740;B740;1104 1173 11BF;B740;1104 1173 11BF; # (ë€; ë€; 띀; ë€; 띀; ) HANGUL SYLLABLE DDEUK
+B741;B741;1104 1173 11C0;B741;1104 1173 11C0; # (ë; ë; 띁; ë; 띁; ) HANGUL SYLLABLE DDEUT
+B742;B742;1104 1173 11C1;B742;1104 1173 11C1; # (ë‚; ë‚; á„„á…³á‡; ë‚; á„„á…³á‡; ) HANGUL SYLLABLE DDEUP
+B743;B743;1104 1173 11C2;B743;1104 1173 11C2; # (ëƒ; ëƒ; 띃; ëƒ; 띃; ) HANGUL SYLLABLE DDEUH
+B744;B744;1104 1174;B744;1104 1174; # (ë„; ë„; á„„á…´; ë„; á„„á…´; ) HANGUL SYLLABLE DDYI
+B745;B745;1104 1174 11A8;B745;1104 1174 11A8; # (ë…; ë…; 띅; ë…; 띅; ) HANGUL SYLLABLE DDYIG
+B746;B746;1104 1174 11A9;B746;1104 1174 11A9; # (ë†; ë†; 띆; ë†; 띆; ) HANGUL SYLLABLE DDYIGG
+B747;B747;1104 1174 11AA;B747;1104 1174 11AA; # (ë‡; ë‡; 띇; ë‡; 띇; ) HANGUL SYLLABLE DDYIGS
+B748;B748;1104 1174 11AB;B748;1104 1174 11AB; # (ëˆ; ëˆ; 띈; ëˆ; 띈; ) HANGUL SYLLABLE DDYIN
+B749;B749;1104 1174 11AC;B749;1104 1174 11AC; # (ë‰; ë‰; 띉; ë‰; 띉; ) HANGUL SYLLABLE DDYINJ
+B74A;B74A;1104 1174 11AD;B74A;1104 1174 11AD; # (ëŠ; ëŠ; 띊; ëŠ; 띊; ) HANGUL SYLLABLE DDYINH
+B74B;B74B;1104 1174 11AE;B74B;1104 1174 11AE; # (ë‹; ë‹; 띋; ë‹; 띋; ) HANGUL SYLLABLE DDYID
+B74C;B74C;1104 1174 11AF;B74C;1104 1174 11AF; # (ëŒ; ëŒ; 띌; ëŒ; 띌; ) HANGUL SYLLABLE DDYIL
+B74D;B74D;1104 1174 11B0;B74D;1104 1174 11B0; # (ë; ë; 띍; ë; 띍; ) HANGUL SYLLABLE DDYILG
+B74E;B74E;1104 1174 11B1;B74E;1104 1174 11B1; # (ëŽ; ëŽ; 띎; ëŽ; 띎; ) HANGUL SYLLABLE DDYILM
+B74F;B74F;1104 1174 11B2;B74F;1104 1174 11B2; # (ë; ë; 띏; ë; 띏; ) HANGUL SYLLABLE DDYILB
+B750;B750;1104 1174 11B3;B750;1104 1174 11B3; # (ë; ë; 띐; ë; 띐; ) HANGUL SYLLABLE DDYILS
+B751;B751;1104 1174 11B4;B751;1104 1174 11B4; # (ë‘; ë‘; 띑; ë‘; 띑; ) HANGUL SYLLABLE DDYILT
+B752;B752;1104 1174 11B5;B752;1104 1174 11B5; # (ë’; ë’; 띒; ë’; 띒; ) HANGUL SYLLABLE DDYILP
+B753;B753;1104 1174 11B6;B753;1104 1174 11B6; # (ë“; ë“; 띓; ë“; 띓; ) HANGUL SYLLABLE DDYILH
+B754;B754;1104 1174 11B7;B754;1104 1174 11B7; # (ë”; ë”; 띔; ë”; 띔; ) HANGUL SYLLABLE DDYIM
+B755;B755;1104 1174 11B8;B755;1104 1174 11B8; # (ë•; ë•; 띕; ë•; 띕; ) HANGUL SYLLABLE DDYIB
+B756;B756;1104 1174 11B9;B756;1104 1174 11B9; # (ë–; ë–; 띖; ë–; 띖; ) HANGUL SYLLABLE DDYIBS
+B757;B757;1104 1174 11BA;B757;1104 1174 11BA; # (ë—; ë—; 띗; ë—; 띗; ) HANGUL SYLLABLE DDYIS
+B758;B758;1104 1174 11BB;B758;1104 1174 11BB; # (ë˜; ë˜; 띘; ë˜; 띘; ) HANGUL SYLLABLE DDYISS
+B759;B759;1104 1174 11BC;B759;1104 1174 11BC; # (ë™; ë™; 띙; ë™; 띙; ) HANGUL SYLLABLE DDYING
+B75A;B75A;1104 1174 11BD;B75A;1104 1174 11BD; # (ëš; ëš; 띚; ëš; 띚; ) HANGUL SYLLABLE DDYIJ
+B75B;B75B;1104 1174 11BE;B75B;1104 1174 11BE; # (ë›; ë›; 띛; ë›; 띛; ) HANGUL SYLLABLE DDYIC
+B75C;B75C;1104 1174 11BF;B75C;1104 1174 11BF; # (ëœ; ëœ; 띜; ëœ; 띜; ) HANGUL SYLLABLE DDYIK
+B75D;B75D;1104 1174 11C0;B75D;1104 1174 11C0; # (ë; ë; 띝; ë; 띝; ) HANGUL SYLLABLE DDYIT
+B75E;B75E;1104 1174 11C1;B75E;1104 1174 11C1; # (ëž; ëž; á„„á…´á‡; ëž; á„„á…´á‡; ) HANGUL SYLLABLE DDYIP
+B75F;B75F;1104 1174 11C2;B75F;1104 1174 11C2; # (ëŸ; ëŸ; 띟; ëŸ; 띟; ) HANGUL SYLLABLE DDYIH
+B760;B760;1104 1175;B760;1104 1175; # (ë ; ë ; á„„á…µ; ë ; á„„á…µ; ) HANGUL SYLLABLE DDI
+B761;B761;1104 1175 11A8;B761;1104 1175 11A8; # (ë¡; ë¡; 띡; ë¡; 띡; ) HANGUL SYLLABLE DDIG
+B762;B762;1104 1175 11A9;B762;1104 1175 11A9; # (ë¢; ë¢; 띢; ë¢; 띢; ) HANGUL SYLLABLE DDIGG
+B763;B763;1104 1175 11AA;B763;1104 1175 11AA; # (ë£; ë£; 띣; ë£; 띣; ) HANGUL SYLLABLE DDIGS
+B764;B764;1104 1175 11AB;B764;1104 1175 11AB; # (ë¤; ë¤; 띤; ë¤; 띤; ) HANGUL SYLLABLE DDIN
+B765;B765;1104 1175 11AC;B765;1104 1175 11AC; # (ë¥; ë¥; 띥; ë¥; 띥; ) HANGUL SYLLABLE DDINJ
+B766;B766;1104 1175 11AD;B766;1104 1175 11AD; # (ë¦; ë¦; 띦; ë¦; 띦; ) HANGUL SYLLABLE DDINH
+B767;B767;1104 1175 11AE;B767;1104 1175 11AE; # (ë§; ë§; 띧; ë§; 띧; ) HANGUL SYLLABLE DDID
+B768;B768;1104 1175 11AF;B768;1104 1175 11AF; # (ë¨; ë¨; 띨; ë¨; 띨; ) HANGUL SYLLABLE DDIL
+B769;B769;1104 1175 11B0;B769;1104 1175 11B0; # (ë©; ë©; 띩; ë©; 띩; ) HANGUL SYLLABLE DDILG
+B76A;B76A;1104 1175 11B1;B76A;1104 1175 11B1; # (ëª; ëª; 띪; ëª; 띪; ) HANGUL SYLLABLE DDILM
+B76B;B76B;1104 1175 11B2;B76B;1104 1175 11B2; # (ë«; ë«; 띫; ë«; 띫; ) HANGUL SYLLABLE DDILB
+B76C;B76C;1104 1175 11B3;B76C;1104 1175 11B3; # (ë¬; ë¬; 띬; ë¬; 띬; ) HANGUL SYLLABLE DDILS
+B76D;B76D;1104 1175 11B4;B76D;1104 1175 11B4; # (ë­; ë­; 띭; ë­; 띭; ) HANGUL SYLLABLE DDILT
+B76E;B76E;1104 1175 11B5;B76E;1104 1175 11B5; # (ë®; ë®; 띮; ë®; 띮; ) HANGUL SYLLABLE DDILP
+B76F;B76F;1104 1175 11B6;B76F;1104 1175 11B6; # (ë¯; ë¯; 띯; ë¯; 띯; ) HANGUL SYLLABLE DDILH
+B770;B770;1104 1175 11B7;B770;1104 1175 11B7; # (ë°; ë°; 띰; ë°; 띰; ) HANGUL SYLLABLE DDIM
+B771;B771;1104 1175 11B8;B771;1104 1175 11B8; # (ë±; ë±; 띱; ë±; 띱; ) HANGUL SYLLABLE DDIB
+B772;B772;1104 1175 11B9;B772;1104 1175 11B9; # (ë²; ë²; 띲; ë²; 띲; ) HANGUL SYLLABLE DDIBS
+B773;B773;1104 1175 11BA;B773;1104 1175 11BA; # (ë³; ë³; 띳; ë³; 띳; ) HANGUL SYLLABLE DDIS
+B774;B774;1104 1175 11BB;B774;1104 1175 11BB; # (ë´; ë´; 띴; ë´; 띴; ) HANGUL SYLLABLE DDISS
+B775;B775;1104 1175 11BC;B775;1104 1175 11BC; # (ëµ; ëµ; 띵; ëµ; 띵; ) HANGUL SYLLABLE DDING
+B776;B776;1104 1175 11BD;B776;1104 1175 11BD; # (ë¶; ë¶; 띶; ë¶; 띶; ) HANGUL SYLLABLE DDIJ
+B777;B777;1104 1175 11BE;B777;1104 1175 11BE; # (ë·; ë·; 띷; ë·; 띷; ) HANGUL SYLLABLE DDIC
+B778;B778;1104 1175 11BF;B778;1104 1175 11BF; # (ë¸; ë¸; 띸; ë¸; 띸; ) HANGUL SYLLABLE DDIK
+B779;B779;1104 1175 11C0;B779;1104 1175 11C0; # (ë¹; ë¹; 띹; ë¹; 띹; ) HANGUL SYLLABLE DDIT
+B77A;B77A;1104 1175 11C1;B77A;1104 1175 11C1; # (ëº; ëº; á„„á…µá‡; ëº; á„„á…µá‡; ) HANGUL SYLLABLE DDIP
+B77B;B77B;1104 1175 11C2;B77B;1104 1175 11C2; # (ë»; ë»; 띻; ë»; 띻; ) HANGUL SYLLABLE DDIH
+B77C;B77C;1105 1161;B77C;1105 1161; # (ë¼; ë¼; á„…á…¡; ë¼; á„…á…¡; ) HANGUL SYLLABLE RA
+B77D;B77D;1105 1161 11A8;B77D;1105 1161 11A8; # (ë½; ë½; 락; ë½; 락; ) HANGUL SYLLABLE RAG
+B77E;B77E;1105 1161 11A9;B77E;1105 1161 11A9; # (ë¾; ë¾; 띾; ë¾; 띾; ) HANGUL SYLLABLE RAGG
+B77F;B77F;1105 1161 11AA;B77F;1105 1161 11AA; # (ë¿; ë¿; 띿; ë¿; 띿; ) HANGUL SYLLABLE RAGS
+B780;B780;1105 1161 11AB;B780;1105 1161 11AB; # (란; 란; 란; 란; 란; ) HANGUL SYLLABLE RAN
+B781;B781;1105 1161 11AC;B781;1105 1161 11AC; # (ëž; ëž; 랁; ëž; 랁; ) HANGUL SYLLABLE RANJ
+B782;B782;1105 1161 11AD;B782;1105 1161 11AD; # (랂; 랂; 랂; 랂; 랂; ) HANGUL SYLLABLE RANH
+B783;B783;1105 1161 11AE;B783;1105 1161 11AE; # (랃; 랃; 랃; 랃; 랃; ) HANGUL SYLLABLE RAD
+B784;B784;1105 1161 11AF;B784;1105 1161 11AF; # (랄; 랄; 랄; 랄; 랄; ) HANGUL SYLLABLE RAL
+B785;B785;1105 1161 11B0;B785;1105 1161 11B0; # (랅; 랅; 랅; 랅; 랅; ) HANGUL SYLLABLE RALG
+B786;B786;1105 1161 11B1;B786;1105 1161 11B1; # (랆; 랆; 랆; 랆; 랆; ) HANGUL SYLLABLE RALM
+B787;B787;1105 1161 11B2;B787;1105 1161 11B2; # (랇; 랇; 랇; 랇; 랇; ) HANGUL SYLLABLE RALB
+B788;B788;1105 1161 11B3;B788;1105 1161 11B3; # (랈; 랈; 랈; 랈; 랈; ) HANGUL SYLLABLE RALS
+B789;B789;1105 1161 11B4;B789;1105 1161 11B4; # (랉; 랉; 랉; 랉; 랉; ) HANGUL SYLLABLE RALT
+B78A;B78A;1105 1161 11B5;B78A;1105 1161 11B5; # (랊; 랊; 랊; 랊; 랊; ) HANGUL SYLLABLE RALP
+B78B;B78B;1105 1161 11B6;B78B;1105 1161 11B6; # (랋; 랋; 랋; 랋; 랋; ) HANGUL SYLLABLE RALH
+B78C;B78C;1105 1161 11B7;B78C;1105 1161 11B7; # (람; 람; 람; 람; 람; ) HANGUL SYLLABLE RAM
+B78D;B78D;1105 1161 11B8;B78D;1105 1161 11B8; # (ëž; ëž; 랍; ëž; 랍; ) HANGUL SYLLABLE RAB
+B78E;B78E;1105 1161 11B9;B78E;1105 1161 11B9; # (랎; 랎; 랎; 랎; 랎; ) HANGUL SYLLABLE RABS
+B78F;B78F;1105 1161 11BA;B78F;1105 1161 11BA; # (ëž; ëž; 랏; ëž; 랏; ) HANGUL SYLLABLE RAS
+B790;B790;1105 1161 11BB;B790;1105 1161 11BB; # (ëž; ëž; 랐; ëž; 랐; ) HANGUL SYLLABLE RASS
+B791;B791;1105 1161 11BC;B791;1105 1161 11BC; # (랑; 랑; 랑; 랑; 랑; ) HANGUL SYLLABLE RANG
+B792;B792;1105 1161 11BD;B792;1105 1161 11BD; # (랒; 랒; 랒; 랒; 랒; ) HANGUL SYLLABLE RAJ
+B793;B793;1105 1161 11BE;B793;1105 1161 11BE; # (랓; 랓; 랓; 랓; 랓; ) HANGUL SYLLABLE RAC
+B794;B794;1105 1161 11BF;B794;1105 1161 11BF; # (랔; 랔; 랔; 랔; 랔; ) HANGUL SYLLABLE RAK
+B795;B795;1105 1161 11C0;B795;1105 1161 11C0; # (랕; 랕; 랕; 랕; 랕; ) HANGUL SYLLABLE RAT
+B796;B796;1105 1161 11C1;B796;1105 1161 11C1; # (ëž–; ëž–; á„…á…¡á‡; ëž–; á„…á…¡á‡; ) HANGUL SYLLABLE RAP
+B797;B797;1105 1161 11C2;B797;1105 1161 11C2; # (랗; 랗; 랗; 랗; 랗; ) HANGUL SYLLABLE RAH
+B798;B798;1105 1162;B798;1105 1162; # (래; 래; 래; 래; 래; ) HANGUL SYLLABLE RAE
+B799;B799;1105 1162 11A8;B799;1105 1162 11A8; # (랙; 랙; 랙; 랙; 랙; ) HANGUL SYLLABLE RAEG
+B79A;B79A;1105 1162 11A9;B79A;1105 1162 11A9; # (랚; 랚; 랚; 랚; 랚; ) HANGUL SYLLABLE RAEGG
+B79B;B79B;1105 1162 11AA;B79B;1105 1162 11AA; # (랛; 랛; 랛; 랛; 랛; ) HANGUL SYLLABLE RAEGS
+B79C;B79C;1105 1162 11AB;B79C;1105 1162 11AB; # (랜; 랜; 랜; 랜; 랜; ) HANGUL SYLLABLE RAEN
+B79D;B79D;1105 1162 11AC;B79D;1105 1162 11AC; # (ëž; ëž; 랝; ëž; 랝; ) HANGUL SYLLABLE RAENJ
+B79E;B79E;1105 1162 11AD;B79E;1105 1162 11AD; # (랞; 랞; 랞; 랞; 랞; ) HANGUL SYLLABLE RAENH
+B79F;B79F;1105 1162 11AE;B79F;1105 1162 11AE; # (랟; 랟; 랟; 랟; 랟; ) HANGUL SYLLABLE RAED
+B7A0;B7A0;1105 1162 11AF;B7A0;1105 1162 11AF; # (랠; 랠; 랠; 랠; 랠; ) HANGUL SYLLABLE RAEL
+B7A1;B7A1;1105 1162 11B0;B7A1;1105 1162 11B0; # (랡; 랡; 랡; 랡; 랡; ) HANGUL SYLLABLE RAELG
+B7A2;B7A2;1105 1162 11B1;B7A2;1105 1162 11B1; # (랢; 랢; 랢; 랢; 랢; ) HANGUL SYLLABLE RAELM
+B7A3;B7A3;1105 1162 11B2;B7A3;1105 1162 11B2; # (랣; 랣; 랣; 랣; 랣; ) HANGUL SYLLABLE RAELB
+B7A4;B7A4;1105 1162 11B3;B7A4;1105 1162 11B3; # (랤; 랤; 랤; 랤; 랤; ) HANGUL SYLLABLE RAELS
+B7A5;B7A5;1105 1162 11B4;B7A5;1105 1162 11B4; # (랥; 랥; 랥; 랥; 랥; ) HANGUL SYLLABLE RAELT
+B7A6;B7A6;1105 1162 11B5;B7A6;1105 1162 11B5; # (랦; 랦; 랦; 랦; 랦; ) HANGUL SYLLABLE RAELP
+B7A7;B7A7;1105 1162 11B6;B7A7;1105 1162 11B6; # (랧; 랧; 랧; 랧; 랧; ) HANGUL SYLLABLE RAELH
+B7A8;B7A8;1105 1162 11B7;B7A8;1105 1162 11B7; # (램; 램; 램; 램; 램; ) HANGUL SYLLABLE RAEM
+B7A9;B7A9;1105 1162 11B8;B7A9;1105 1162 11B8; # (랩; 랩; 랩; 랩; 랩; ) HANGUL SYLLABLE RAEB
+B7AA;B7AA;1105 1162 11B9;B7AA;1105 1162 11B9; # (랪; 랪; 랪; 랪; 랪; ) HANGUL SYLLABLE RAEBS
+B7AB;B7AB;1105 1162 11BA;B7AB;1105 1162 11BA; # (랫; 랫; 랫; 랫; 랫; ) HANGUL SYLLABLE RAES
+B7AC;B7AC;1105 1162 11BB;B7AC;1105 1162 11BB; # (랬; 랬; 랬; 랬; 랬; ) HANGUL SYLLABLE RAESS
+B7AD;B7AD;1105 1162 11BC;B7AD;1105 1162 11BC; # (랭; 랭; 랭; 랭; 랭; ) HANGUL SYLLABLE RAENG
+B7AE;B7AE;1105 1162 11BD;B7AE;1105 1162 11BD; # (랮; 랮; 랮; 랮; 랮; ) HANGUL SYLLABLE RAEJ
+B7AF;B7AF;1105 1162 11BE;B7AF;1105 1162 11BE; # (랯; 랯; 랯; 랯; 랯; ) HANGUL SYLLABLE RAEC
+B7B0;B7B0;1105 1162 11BF;B7B0;1105 1162 11BF; # (랰; 랰; 랰; 랰; 랰; ) HANGUL SYLLABLE RAEK
+B7B1;B7B1;1105 1162 11C0;B7B1;1105 1162 11C0; # (랱; 랱; 랱; 랱; 랱; ) HANGUL SYLLABLE RAET
+B7B2;B7B2;1105 1162 11C1;B7B2;1105 1162 11C1; # (ëž²; ëž²; á„…á…¢á‡; ëž²; á„…á…¢á‡; ) HANGUL SYLLABLE RAEP
+B7B3;B7B3;1105 1162 11C2;B7B3;1105 1162 11C2; # (랳; 랳; 랳; 랳; 랳; ) HANGUL SYLLABLE RAEH
+B7B4;B7B4;1105 1163;B7B4;1105 1163; # (ëž´; ëž´; á„…á…£; ëž´; á„…á…£; ) HANGUL SYLLABLE RYA
+B7B5;B7B5;1105 1163 11A8;B7B5;1105 1163 11A8; # (략; 략; 략; 략; 략; ) HANGUL SYLLABLE RYAG
+B7B6;B7B6;1105 1163 11A9;B7B6;1105 1163 11A9; # (랶; 랶; 랶; 랶; 랶; ) HANGUL SYLLABLE RYAGG
+B7B7;B7B7;1105 1163 11AA;B7B7;1105 1163 11AA; # (랷; 랷; 랷; 랷; 랷; ) HANGUL SYLLABLE RYAGS
+B7B8;B7B8;1105 1163 11AB;B7B8;1105 1163 11AB; # (랸; 랸; 랸; 랸; 랸; ) HANGUL SYLLABLE RYAN
+B7B9;B7B9;1105 1163 11AC;B7B9;1105 1163 11AC; # (랹; 랹; 랹; 랹; 랹; ) HANGUL SYLLABLE RYANJ
+B7BA;B7BA;1105 1163 11AD;B7BA;1105 1163 11AD; # (랺; 랺; 랺; 랺; 랺; ) HANGUL SYLLABLE RYANH
+B7BB;B7BB;1105 1163 11AE;B7BB;1105 1163 11AE; # (랻; 랻; 랻; 랻; 랻; ) HANGUL SYLLABLE RYAD
+B7BC;B7BC;1105 1163 11AF;B7BC;1105 1163 11AF; # (랼; 랼; 랼; 랼; 랼; ) HANGUL SYLLABLE RYAL
+B7BD;B7BD;1105 1163 11B0;B7BD;1105 1163 11B0; # (랽; 랽; 랽; 랽; 랽; ) HANGUL SYLLABLE RYALG
+B7BE;B7BE;1105 1163 11B1;B7BE;1105 1163 11B1; # (랾; 랾; 랾; 랾; 랾; ) HANGUL SYLLABLE RYALM
+B7BF;B7BF;1105 1163 11B2;B7BF;1105 1163 11B2; # (랿; 랿; 랿; 랿; 랿; ) HANGUL SYLLABLE RYALB
+B7C0;B7C0;1105 1163 11B3;B7C0;1105 1163 11B3; # (럀; 럀; 럀; 럀; 럀; ) HANGUL SYLLABLE RYALS
+B7C1;B7C1;1105 1163 11B4;B7C1;1105 1163 11B4; # (ëŸ; ëŸ; 럁; ëŸ; 럁; ) HANGUL SYLLABLE RYALT
+B7C2;B7C2;1105 1163 11B5;B7C2;1105 1163 11B5; # (럂; 럂; 럂; 럂; 럂; ) HANGUL SYLLABLE RYALP
+B7C3;B7C3;1105 1163 11B6;B7C3;1105 1163 11B6; # (럃; 럃; 럃; 럃; 럃; ) HANGUL SYLLABLE RYALH
+B7C4;B7C4;1105 1163 11B7;B7C4;1105 1163 11B7; # (럄; 럄; 럄; 럄; 럄; ) HANGUL SYLLABLE RYAM
+B7C5;B7C5;1105 1163 11B8;B7C5;1105 1163 11B8; # (럅; 럅; 럅; 럅; 럅; ) HANGUL SYLLABLE RYAB
+B7C6;B7C6;1105 1163 11B9;B7C6;1105 1163 11B9; # (럆; 럆; 럆; 럆; 럆; ) HANGUL SYLLABLE RYABS
+B7C7;B7C7;1105 1163 11BA;B7C7;1105 1163 11BA; # (럇; 럇; 럇; 럇; 럇; ) HANGUL SYLLABLE RYAS
+B7C8;B7C8;1105 1163 11BB;B7C8;1105 1163 11BB; # (럈; 럈; 럈; 럈; 럈; ) HANGUL SYLLABLE RYASS
+B7C9;B7C9;1105 1163 11BC;B7C9;1105 1163 11BC; # (량; 량; 량; 량; 량; ) HANGUL SYLLABLE RYANG
+B7CA;B7CA;1105 1163 11BD;B7CA;1105 1163 11BD; # (럊; 럊; 럊; 럊; 럊; ) HANGUL SYLLABLE RYAJ
+B7CB;B7CB;1105 1163 11BE;B7CB;1105 1163 11BE; # (럋; 럋; 럋; 럋; 럋; ) HANGUL SYLLABLE RYAC
+B7CC;B7CC;1105 1163 11BF;B7CC;1105 1163 11BF; # (럌; 럌; 럌; 럌; 럌; ) HANGUL SYLLABLE RYAK
+B7CD;B7CD;1105 1163 11C0;B7CD;1105 1163 11C0; # (ëŸ; ëŸ; 럍; ëŸ; 럍; ) HANGUL SYLLABLE RYAT
+B7CE;B7CE;1105 1163 11C1;B7CE;1105 1163 11C1; # (럎; 럎; á„…á…£á‡; 럎; á„…á…£á‡; ) HANGUL SYLLABLE RYAP
+B7CF;B7CF;1105 1163 11C2;B7CF;1105 1163 11C2; # (ëŸ; ëŸ; 럏; ëŸ; 럏; ) HANGUL SYLLABLE RYAH
+B7D0;B7D0;1105 1164;B7D0;1105 1164; # (ëŸ; ëŸ; á„…á…¤; ëŸ; á„…á…¤; ) HANGUL SYLLABLE RYAE
+B7D1;B7D1;1105 1164 11A8;B7D1;1105 1164 11A8; # (럑; 럑; 럑; 럑; 럑; ) HANGUL SYLLABLE RYAEG
+B7D2;B7D2;1105 1164 11A9;B7D2;1105 1164 11A9; # (럒; 럒; 럒; 럒; 럒; ) HANGUL SYLLABLE RYAEGG
+B7D3;B7D3;1105 1164 11AA;B7D3;1105 1164 11AA; # (럓; 럓; 럓; 럓; 럓; ) HANGUL SYLLABLE RYAEGS
+B7D4;B7D4;1105 1164 11AB;B7D4;1105 1164 11AB; # (럔; 럔; 럔; 럔; 럔; ) HANGUL SYLLABLE RYAEN
+B7D5;B7D5;1105 1164 11AC;B7D5;1105 1164 11AC; # (럕; 럕; 럕; 럕; 럕; ) HANGUL SYLLABLE RYAENJ
+B7D6;B7D6;1105 1164 11AD;B7D6;1105 1164 11AD; # (럖; 럖; 럖; 럖; 럖; ) HANGUL SYLLABLE RYAENH
+B7D7;B7D7;1105 1164 11AE;B7D7;1105 1164 11AE; # (럗; 럗; 럗; 럗; 럗; ) HANGUL SYLLABLE RYAED
+B7D8;B7D8;1105 1164 11AF;B7D8;1105 1164 11AF; # (럘; 럘; 럘; 럘; 럘; ) HANGUL SYLLABLE RYAEL
+B7D9;B7D9;1105 1164 11B0;B7D9;1105 1164 11B0; # (럙; 럙; 럙; 럙; 럙; ) HANGUL SYLLABLE RYAELG
+B7DA;B7DA;1105 1164 11B1;B7DA;1105 1164 11B1; # (럚; 럚; 럚; 럚; 럚; ) HANGUL SYLLABLE RYAELM
+B7DB;B7DB;1105 1164 11B2;B7DB;1105 1164 11B2; # (럛; 럛; 럛; 럛; 럛; ) HANGUL SYLLABLE RYAELB
+B7DC;B7DC;1105 1164 11B3;B7DC;1105 1164 11B3; # (럜; 럜; 럜; 럜; 럜; ) HANGUL SYLLABLE RYAELS
+B7DD;B7DD;1105 1164 11B4;B7DD;1105 1164 11B4; # (ëŸ; ëŸ; 럝; ëŸ; 럝; ) HANGUL SYLLABLE RYAELT
+B7DE;B7DE;1105 1164 11B5;B7DE;1105 1164 11B5; # (럞; 럞; 럞; 럞; 럞; ) HANGUL SYLLABLE RYAELP
+B7DF;B7DF;1105 1164 11B6;B7DF;1105 1164 11B6; # (럟; 럟; 럟; 럟; 럟; ) HANGUL SYLLABLE RYAELH
+B7E0;B7E0;1105 1164 11B7;B7E0;1105 1164 11B7; # (럠; 럠; 럠; 럠; 럠; ) HANGUL SYLLABLE RYAEM
+B7E1;B7E1;1105 1164 11B8;B7E1;1105 1164 11B8; # (럡; 럡; 럡; 럡; 럡; ) HANGUL SYLLABLE RYAEB
+B7E2;B7E2;1105 1164 11B9;B7E2;1105 1164 11B9; # (럢; 럢; 럢; 럢; 럢; ) HANGUL SYLLABLE RYAEBS
+B7E3;B7E3;1105 1164 11BA;B7E3;1105 1164 11BA; # (럣; 럣; 럣; 럣; 럣; ) HANGUL SYLLABLE RYAES
+B7E4;B7E4;1105 1164 11BB;B7E4;1105 1164 11BB; # (럤; 럤; 럤; 럤; 럤; ) HANGUL SYLLABLE RYAESS
+B7E5;B7E5;1105 1164 11BC;B7E5;1105 1164 11BC; # (럥; 럥; 럥; 럥; 럥; ) HANGUL SYLLABLE RYAENG
+B7E6;B7E6;1105 1164 11BD;B7E6;1105 1164 11BD; # (럦; 럦; 럦; 럦; 럦; ) HANGUL SYLLABLE RYAEJ
+B7E7;B7E7;1105 1164 11BE;B7E7;1105 1164 11BE; # (럧; 럧; 럧; 럧; 럧; ) HANGUL SYLLABLE RYAEC
+B7E8;B7E8;1105 1164 11BF;B7E8;1105 1164 11BF; # (럨; 럨; 럨; 럨; 럨; ) HANGUL SYLLABLE RYAEK
+B7E9;B7E9;1105 1164 11C0;B7E9;1105 1164 11C0; # (럩; 럩; 럩; 럩; 럩; ) HANGUL SYLLABLE RYAET
+B7EA;B7EA;1105 1164 11C1;B7EA;1105 1164 11C1; # (럪; 럪; á„…á…¤á‡; 럪; á„…á…¤á‡; ) HANGUL SYLLABLE RYAEP
+B7EB;B7EB;1105 1164 11C2;B7EB;1105 1164 11C2; # (럫; 럫; 럫; 럫; 럫; ) HANGUL SYLLABLE RYAEH
+B7EC;B7EC;1105 1165;B7EC;1105 1165; # (러; 러; 러; 러; 러; ) HANGUL SYLLABLE REO
+B7ED;B7ED;1105 1165 11A8;B7ED;1105 1165 11A8; # (럭; 럭; 럭; 럭; 럭; ) HANGUL SYLLABLE REOG
+B7EE;B7EE;1105 1165 11A9;B7EE;1105 1165 11A9; # (럮; 럮; 럮; 럮; 럮; ) HANGUL SYLLABLE REOGG
+B7EF;B7EF;1105 1165 11AA;B7EF;1105 1165 11AA; # (럯; 럯; 럯; 럯; 럯; ) HANGUL SYLLABLE REOGS
+B7F0;B7F0;1105 1165 11AB;B7F0;1105 1165 11AB; # (런; 런; 런; 런; 런; ) HANGUL SYLLABLE REON
+B7F1;B7F1;1105 1165 11AC;B7F1;1105 1165 11AC; # (럱; 럱; 럱; 럱; 럱; ) HANGUL SYLLABLE REONJ
+B7F2;B7F2;1105 1165 11AD;B7F2;1105 1165 11AD; # (럲; 럲; 럲; 럲; 럲; ) HANGUL SYLLABLE REONH
+B7F3;B7F3;1105 1165 11AE;B7F3;1105 1165 11AE; # (럳; 럳; 럳; 럳; 럳; ) HANGUL SYLLABLE REOD
+B7F4;B7F4;1105 1165 11AF;B7F4;1105 1165 11AF; # (럴; 럴; 럴; 럴; 럴; ) HANGUL SYLLABLE REOL
+B7F5;B7F5;1105 1165 11B0;B7F5;1105 1165 11B0; # (럵; 럵; 럵; 럵; 럵; ) HANGUL SYLLABLE REOLG
+B7F6;B7F6;1105 1165 11B1;B7F6;1105 1165 11B1; # (럶; 럶; 럶; 럶; 럶; ) HANGUL SYLLABLE REOLM
+B7F7;B7F7;1105 1165 11B2;B7F7;1105 1165 11B2; # (럷; 럷; 럷; 럷; 럷; ) HANGUL SYLLABLE REOLB
+B7F8;B7F8;1105 1165 11B3;B7F8;1105 1165 11B3; # (럸; 럸; 럸; 럸; 럸; ) HANGUL SYLLABLE REOLS
+B7F9;B7F9;1105 1165 11B4;B7F9;1105 1165 11B4; # (럹; 럹; 럹; 럹; 럹; ) HANGUL SYLLABLE REOLT
+B7FA;B7FA;1105 1165 11B5;B7FA;1105 1165 11B5; # (럺; 럺; 럺; 럺; 럺; ) HANGUL SYLLABLE REOLP
+B7FB;B7FB;1105 1165 11B6;B7FB;1105 1165 11B6; # (럻; 럻; 럻; 럻; 럻; ) HANGUL SYLLABLE REOLH
+B7FC;B7FC;1105 1165 11B7;B7FC;1105 1165 11B7; # (럼; 럼; 럼; 럼; 럼; ) HANGUL SYLLABLE REOM
+B7FD;B7FD;1105 1165 11B8;B7FD;1105 1165 11B8; # (럽; 럽; 럽; 럽; 럽; ) HANGUL SYLLABLE REOB
+B7FE;B7FE;1105 1165 11B9;B7FE;1105 1165 11B9; # (럾; 럾; 럾; 럾; 럾; ) HANGUL SYLLABLE REOBS
+B7FF;B7FF;1105 1165 11BA;B7FF;1105 1165 11BA; # (럿; 럿; 럿; 럿; 럿; ) HANGUL SYLLABLE REOS
+B800;B800;1105 1165 11BB;B800;1105 1165 11BB; # (렀; 렀; 렀; 렀; 렀; ) HANGUL SYLLABLE REOSS
+B801;B801;1105 1165 11BC;B801;1105 1165 11BC; # (ë ; ë ; 렁; ë ; 렁; ) HANGUL SYLLABLE REONG
+B802;B802;1105 1165 11BD;B802;1105 1165 11BD; # (렂; 렂; 렂; 렂; 렂; ) HANGUL SYLLABLE REOJ
+B803;B803;1105 1165 11BE;B803;1105 1165 11BE; # (렃; 렃; 렃; 렃; 렃; ) HANGUL SYLLABLE REOC
+B804;B804;1105 1165 11BF;B804;1105 1165 11BF; # (렄; 렄; 렄; 렄; 렄; ) HANGUL SYLLABLE REOK
+B805;B805;1105 1165 11C0;B805;1105 1165 11C0; # (렅; 렅; 렅; 렅; 렅; ) HANGUL SYLLABLE REOT
+B806;B806;1105 1165 11C1;B806;1105 1165 11C1; # (ë †; ë †; á„…á…¥á‡; ë †; á„…á…¥á‡; ) HANGUL SYLLABLE REOP
+B807;B807;1105 1165 11C2;B807;1105 1165 11C2; # (렇; 렇; 렇; 렇; 렇; ) HANGUL SYLLABLE REOH
+B808;B808;1105 1166;B808;1105 1166; # (ë ˆ; ë ˆ; á„…á…¦; ë ˆ; á„…á…¦; ) HANGUL SYLLABLE RE
+B809;B809;1105 1166 11A8;B809;1105 1166 11A8; # (렉; 렉; 렉; 렉; 렉; ) HANGUL SYLLABLE REG
+B80A;B80A;1105 1166 11A9;B80A;1105 1166 11A9; # (렊; 렊; 렊; 렊; 렊; ) HANGUL SYLLABLE REGG
+B80B;B80B;1105 1166 11AA;B80B;1105 1166 11AA; # (렋; 렋; 렋; 렋; 렋; ) HANGUL SYLLABLE REGS
+B80C;B80C;1105 1166 11AB;B80C;1105 1166 11AB; # (렌; 렌; 렌; 렌; 렌; ) HANGUL SYLLABLE REN
+B80D;B80D;1105 1166 11AC;B80D;1105 1166 11AC; # (ë ; ë ; 렍; ë ; 렍; ) HANGUL SYLLABLE RENJ
+B80E;B80E;1105 1166 11AD;B80E;1105 1166 11AD; # (렎; 렎; 렎; 렎; 렎; ) HANGUL SYLLABLE RENH
+B80F;B80F;1105 1166 11AE;B80F;1105 1166 11AE; # (ë ; ë ; 렏; ë ; 렏; ) HANGUL SYLLABLE RED
+B810;B810;1105 1166 11AF;B810;1105 1166 11AF; # (ë ; ë ; 렐; ë ; 렐; ) HANGUL SYLLABLE REL
+B811;B811;1105 1166 11B0;B811;1105 1166 11B0; # (렑; 렑; 렑; 렑; 렑; ) HANGUL SYLLABLE RELG
+B812;B812;1105 1166 11B1;B812;1105 1166 11B1; # (렒; 렒; 렒; 렒; 렒; ) HANGUL SYLLABLE RELM
+B813;B813;1105 1166 11B2;B813;1105 1166 11B2; # (렓; 렓; 렓; 렓; 렓; ) HANGUL SYLLABLE RELB
+B814;B814;1105 1166 11B3;B814;1105 1166 11B3; # (렔; 렔; 렔; 렔; 렔; ) HANGUL SYLLABLE RELS
+B815;B815;1105 1166 11B4;B815;1105 1166 11B4; # (렕; 렕; 렕; 렕; 렕; ) HANGUL SYLLABLE RELT
+B816;B816;1105 1166 11B5;B816;1105 1166 11B5; # (렖; 렖; 렖; 렖; 렖; ) HANGUL SYLLABLE RELP
+B817;B817;1105 1166 11B6;B817;1105 1166 11B6; # (렗; 렗; 렗; 렗; 렗; ) HANGUL SYLLABLE RELH
+B818;B818;1105 1166 11B7;B818;1105 1166 11B7; # (렘; 렘; 렘; 렘; 렘; ) HANGUL SYLLABLE REM
+B819;B819;1105 1166 11B8;B819;1105 1166 11B8; # (렙; 렙; 렙; 렙; 렙; ) HANGUL SYLLABLE REB
+B81A;B81A;1105 1166 11B9;B81A;1105 1166 11B9; # (렚; 렚; 렚; 렚; 렚; ) HANGUL SYLLABLE REBS
+B81B;B81B;1105 1166 11BA;B81B;1105 1166 11BA; # (렛; 렛; 렛; 렛; 렛; ) HANGUL SYLLABLE RES
+B81C;B81C;1105 1166 11BB;B81C;1105 1166 11BB; # (렜; 렜; 렜; 렜; 렜; ) HANGUL SYLLABLE RESS
+B81D;B81D;1105 1166 11BC;B81D;1105 1166 11BC; # (ë ; ë ; 렝; ë ; 렝; ) HANGUL SYLLABLE RENG
+B81E;B81E;1105 1166 11BD;B81E;1105 1166 11BD; # (렞; 렞; 렞; 렞; 렞; ) HANGUL SYLLABLE REJ
+B81F;B81F;1105 1166 11BE;B81F;1105 1166 11BE; # (렟; 렟; 렟; 렟; 렟; ) HANGUL SYLLABLE REC
+B820;B820;1105 1166 11BF;B820;1105 1166 11BF; # (렠; 렠; 렠; 렠; 렠; ) HANGUL SYLLABLE REK
+B821;B821;1105 1166 11C0;B821;1105 1166 11C0; # (렡; 렡; 렡; 렡; 렡; ) HANGUL SYLLABLE RET
+B822;B822;1105 1166 11C1;B822;1105 1166 11C1; # (ë ¢; ë ¢; á„…á…¦á‡; ë ¢; á„…á…¦á‡; ) HANGUL SYLLABLE REP
+B823;B823;1105 1166 11C2;B823;1105 1166 11C2; # (렣; 렣; 렣; 렣; 렣; ) HANGUL SYLLABLE REH
+B824;B824;1105 1167;B824;1105 1167; # (ë ¤; ë ¤; á„…á…§; ë ¤; á„…á…§; ) HANGUL SYLLABLE RYEO
+B825;B825;1105 1167 11A8;B825;1105 1167 11A8; # (력; 력; 력; 력; 력; ) HANGUL SYLLABLE RYEOG
+B826;B826;1105 1167 11A9;B826;1105 1167 11A9; # (렦; 렦; 렦; 렦; 렦; ) HANGUL SYLLABLE RYEOGG
+B827;B827;1105 1167 11AA;B827;1105 1167 11AA; # (렧; 렧; 렧; 렧; 렧; ) HANGUL SYLLABLE RYEOGS
+B828;B828;1105 1167 11AB;B828;1105 1167 11AB; # (련; 련; 련; 련; 련; ) HANGUL SYLLABLE RYEON
+B829;B829;1105 1167 11AC;B829;1105 1167 11AC; # (렩; 렩; 렩; 렩; 렩; ) HANGUL SYLLABLE RYEONJ
+B82A;B82A;1105 1167 11AD;B82A;1105 1167 11AD; # (렪; 렪; 렪; 렪; 렪; ) HANGUL SYLLABLE RYEONH
+B82B;B82B;1105 1167 11AE;B82B;1105 1167 11AE; # (렫; 렫; 렫; 렫; 렫; ) HANGUL SYLLABLE RYEOD
+B82C;B82C;1105 1167 11AF;B82C;1105 1167 11AF; # (렬; 렬; 렬; 렬; 렬; ) HANGUL SYLLABLE RYEOL
+B82D;B82D;1105 1167 11B0;B82D;1105 1167 11B0; # (렭; 렭; 렭; 렭; 렭; ) HANGUL SYLLABLE RYEOLG
+B82E;B82E;1105 1167 11B1;B82E;1105 1167 11B1; # (렮; 렮; 렮; 렮; 렮; ) HANGUL SYLLABLE RYEOLM
+B82F;B82F;1105 1167 11B2;B82F;1105 1167 11B2; # (렯; 렯; 렯; 렯; 렯; ) HANGUL SYLLABLE RYEOLB
+B830;B830;1105 1167 11B3;B830;1105 1167 11B3; # (렰; 렰; 렰; 렰; 렰; ) HANGUL SYLLABLE RYEOLS
+B831;B831;1105 1167 11B4;B831;1105 1167 11B4; # (렱; 렱; 렱; 렱; 렱; ) HANGUL SYLLABLE RYEOLT
+B832;B832;1105 1167 11B5;B832;1105 1167 11B5; # (렲; 렲; 렲; 렲; 렲; ) HANGUL SYLLABLE RYEOLP
+B833;B833;1105 1167 11B6;B833;1105 1167 11B6; # (렳; 렳; 렳; 렳; 렳; ) HANGUL SYLLABLE RYEOLH
+B834;B834;1105 1167 11B7;B834;1105 1167 11B7; # (렴; 렴; 렴; 렴; 렴; ) HANGUL SYLLABLE RYEOM
+B835;B835;1105 1167 11B8;B835;1105 1167 11B8; # (렵; 렵; 렵; 렵; 렵; ) HANGUL SYLLABLE RYEOB
+B836;B836;1105 1167 11B9;B836;1105 1167 11B9; # (렶; 렶; 렶; 렶; 렶; ) HANGUL SYLLABLE RYEOBS
+B837;B837;1105 1167 11BA;B837;1105 1167 11BA; # (렷; 렷; 렷; 렷; 렷; ) HANGUL SYLLABLE RYEOS
+B838;B838;1105 1167 11BB;B838;1105 1167 11BB; # (렸; 렸; 렸; 렸; 렸; ) HANGUL SYLLABLE RYEOSS
+B839;B839;1105 1167 11BC;B839;1105 1167 11BC; # (령; 령; 령; 령; 령; ) HANGUL SYLLABLE RYEONG
+B83A;B83A;1105 1167 11BD;B83A;1105 1167 11BD; # (렺; 렺; 렺; 렺; 렺; ) HANGUL SYLLABLE RYEOJ
+B83B;B83B;1105 1167 11BE;B83B;1105 1167 11BE; # (렻; 렻; 렻; 렻; 렻; ) HANGUL SYLLABLE RYEOC
+B83C;B83C;1105 1167 11BF;B83C;1105 1167 11BF; # (렼; 렼; 렼; 렼; 렼; ) HANGUL SYLLABLE RYEOK
+B83D;B83D;1105 1167 11C0;B83D;1105 1167 11C0; # (렽; 렽; 렽; 렽; 렽; ) HANGUL SYLLABLE RYEOT
+B83E;B83E;1105 1167 11C1;B83E;1105 1167 11C1; # (ë ¾; ë ¾; á„…á…§á‡; ë ¾; á„…á…§á‡; ) HANGUL SYLLABLE RYEOP
+B83F;B83F;1105 1167 11C2;B83F;1105 1167 11C2; # (렿; 렿; 렿; 렿; 렿; ) HANGUL SYLLABLE RYEOH
+B840;B840;1105 1168;B840;1105 1168; # (ë¡€; ë¡€; á„…á…¨; ë¡€; á„…á…¨; ) HANGUL SYLLABLE RYE
+B841;B841;1105 1168 11A8;B841;1105 1168 11A8; # (ë¡; ë¡; 롁; ë¡; 롁; ) HANGUL SYLLABLE RYEG
+B842;B842;1105 1168 11A9;B842;1105 1168 11A9; # (롂; 롂; 롂; 롂; 롂; ) HANGUL SYLLABLE RYEGG
+B843;B843;1105 1168 11AA;B843;1105 1168 11AA; # (롃; 롃; 롃; 롃; 롃; ) HANGUL SYLLABLE RYEGS
+B844;B844;1105 1168 11AB;B844;1105 1168 11AB; # (롄; 롄; 롄; 롄; 롄; ) HANGUL SYLLABLE RYEN
+B845;B845;1105 1168 11AC;B845;1105 1168 11AC; # (롅; 롅; 롅; 롅; 롅; ) HANGUL SYLLABLE RYENJ
+B846;B846;1105 1168 11AD;B846;1105 1168 11AD; # (롆; 롆; 롆; 롆; 롆; ) HANGUL SYLLABLE RYENH
+B847;B847;1105 1168 11AE;B847;1105 1168 11AE; # (롇; 롇; 롇; 롇; 롇; ) HANGUL SYLLABLE RYED
+B848;B848;1105 1168 11AF;B848;1105 1168 11AF; # (롈; 롈; 롈; 롈; 롈; ) HANGUL SYLLABLE RYEL
+B849;B849;1105 1168 11B0;B849;1105 1168 11B0; # (롉; 롉; 롉; 롉; 롉; ) HANGUL SYLLABLE RYELG
+B84A;B84A;1105 1168 11B1;B84A;1105 1168 11B1; # (롊; 롊; 롊; 롊; 롊; ) HANGUL SYLLABLE RYELM
+B84B;B84B;1105 1168 11B2;B84B;1105 1168 11B2; # (롋; 롋; 롋; 롋; 롋; ) HANGUL SYLLABLE RYELB
+B84C;B84C;1105 1168 11B3;B84C;1105 1168 11B3; # (롌; 롌; 롌; 롌; 롌; ) HANGUL SYLLABLE RYELS
+B84D;B84D;1105 1168 11B4;B84D;1105 1168 11B4; # (ë¡; ë¡; 롍; ë¡; 롍; ) HANGUL SYLLABLE RYELT
+B84E;B84E;1105 1168 11B5;B84E;1105 1168 11B5; # (롎; 롎; 롎; 롎; 롎; ) HANGUL SYLLABLE RYELP
+B84F;B84F;1105 1168 11B6;B84F;1105 1168 11B6; # (ë¡; ë¡; 롏; ë¡; 롏; ) HANGUL SYLLABLE RYELH
+B850;B850;1105 1168 11B7;B850;1105 1168 11B7; # (ë¡; ë¡; 롐; ë¡; 롐; ) HANGUL SYLLABLE RYEM
+B851;B851;1105 1168 11B8;B851;1105 1168 11B8; # (롑; 롑; 롑; 롑; 롑; ) HANGUL SYLLABLE RYEB
+B852;B852;1105 1168 11B9;B852;1105 1168 11B9; # (롒; 롒; 롒; 롒; 롒; ) HANGUL SYLLABLE RYEBS
+B853;B853;1105 1168 11BA;B853;1105 1168 11BA; # (롓; 롓; 롓; 롓; 롓; ) HANGUL SYLLABLE RYES
+B854;B854;1105 1168 11BB;B854;1105 1168 11BB; # (롔; 롔; 롔; 롔; 롔; ) HANGUL SYLLABLE RYESS
+B855;B855;1105 1168 11BC;B855;1105 1168 11BC; # (롕; 롕; 롕; 롕; 롕; ) HANGUL SYLLABLE RYENG
+B856;B856;1105 1168 11BD;B856;1105 1168 11BD; # (롖; 롖; 롖; 롖; 롖; ) HANGUL SYLLABLE RYEJ
+B857;B857;1105 1168 11BE;B857;1105 1168 11BE; # (롗; 롗; 롗; 롗; 롗; ) HANGUL SYLLABLE RYEC
+B858;B858;1105 1168 11BF;B858;1105 1168 11BF; # (롘; 롘; 롘; 롘; 롘; ) HANGUL SYLLABLE RYEK
+B859;B859;1105 1168 11C0;B859;1105 1168 11C0; # (롙; 롙; 롙; 롙; 롙; ) HANGUL SYLLABLE RYET
+B85A;B85A;1105 1168 11C1;B85A;1105 1168 11C1; # (ë¡š; ë¡š; á„…á…¨á‡; ë¡š; á„…á…¨á‡; ) HANGUL SYLLABLE RYEP
+B85B;B85B;1105 1168 11C2;B85B;1105 1168 11C2; # (롛; 롛; 롛; 롛; 롛; ) HANGUL SYLLABLE RYEH
+B85C;B85C;1105 1169;B85C;1105 1169; # (로; 로; 로; 로; 로; ) HANGUL SYLLABLE RO
+B85D;B85D;1105 1169 11A8;B85D;1105 1169 11A8; # (ë¡; ë¡; 록; ë¡; 록; ) HANGUL SYLLABLE ROG
+B85E;B85E;1105 1169 11A9;B85E;1105 1169 11A9; # (롞; 롞; 롞; 롞; 롞; ) HANGUL SYLLABLE ROGG
+B85F;B85F;1105 1169 11AA;B85F;1105 1169 11AA; # (롟; 롟; 롟; 롟; 롟; ) HANGUL SYLLABLE ROGS
+B860;B860;1105 1169 11AB;B860;1105 1169 11AB; # (론; 론; 론; 론; 론; ) HANGUL SYLLABLE RON
+B861;B861;1105 1169 11AC;B861;1105 1169 11AC; # (롡; 롡; 롡; 롡; 롡; ) HANGUL SYLLABLE RONJ
+B862;B862;1105 1169 11AD;B862;1105 1169 11AD; # (롢; 롢; 롢; 롢; 롢; ) HANGUL SYLLABLE RONH
+B863;B863;1105 1169 11AE;B863;1105 1169 11AE; # (롣; 롣; 롣; 롣; 롣; ) HANGUL SYLLABLE ROD
+B864;B864;1105 1169 11AF;B864;1105 1169 11AF; # (롤; 롤; 롤; 롤; 롤; ) HANGUL SYLLABLE ROL
+B865;B865;1105 1169 11B0;B865;1105 1169 11B0; # (롥; 롥; 롥; 롥; 롥; ) HANGUL SYLLABLE ROLG
+B866;B866;1105 1169 11B1;B866;1105 1169 11B1; # (롦; 롦; 롦; 롦; 롦; ) HANGUL SYLLABLE ROLM
+B867;B867;1105 1169 11B2;B867;1105 1169 11B2; # (롧; 롧; 롧; 롧; 롧; ) HANGUL SYLLABLE ROLB
+B868;B868;1105 1169 11B3;B868;1105 1169 11B3; # (롨; 롨; 롨; 롨; 롨; ) HANGUL SYLLABLE ROLS
+B869;B869;1105 1169 11B4;B869;1105 1169 11B4; # (롩; 롩; 롩; 롩; 롩; ) HANGUL SYLLABLE ROLT
+B86A;B86A;1105 1169 11B5;B86A;1105 1169 11B5; # (롪; 롪; 롪; 롪; 롪; ) HANGUL SYLLABLE ROLP
+B86B;B86B;1105 1169 11B6;B86B;1105 1169 11B6; # (롫; 롫; 롫; 롫; 롫; ) HANGUL SYLLABLE ROLH
+B86C;B86C;1105 1169 11B7;B86C;1105 1169 11B7; # (롬; 롬; 롬; 롬; 롬; ) HANGUL SYLLABLE ROM
+B86D;B86D;1105 1169 11B8;B86D;1105 1169 11B8; # (롭; 롭; 롭; 롭; 롭; ) HANGUL SYLLABLE ROB
+B86E;B86E;1105 1169 11B9;B86E;1105 1169 11B9; # (롮; 롮; 롮; 롮; 롮; ) HANGUL SYLLABLE ROBS
+B86F;B86F;1105 1169 11BA;B86F;1105 1169 11BA; # (롯; 롯; 롯; 롯; 롯; ) HANGUL SYLLABLE ROS
+B870;B870;1105 1169 11BB;B870;1105 1169 11BB; # (롰; 롰; 롰; 롰; 롰; ) HANGUL SYLLABLE ROSS
+B871;B871;1105 1169 11BC;B871;1105 1169 11BC; # (롱; 롱; 롱; 롱; 롱; ) HANGUL SYLLABLE RONG
+B872;B872;1105 1169 11BD;B872;1105 1169 11BD; # (롲; 롲; 롲; 롲; 롲; ) HANGUL SYLLABLE ROJ
+B873;B873;1105 1169 11BE;B873;1105 1169 11BE; # (롳; 롳; 롳; 롳; 롳; ) HANGUL SYLLABLE ROC
+B874;B874;1105 1169 11BF;B874;1105 1169 11BF; # (롴; 롴; 롴; 롴; 롴; ) HANGUL SYLLABLE ROK
+B875;B875;1105 1169 11C0;B875;1105 1169 11C0; # (롵; 롵; 롵; 롵; 롵; ) HANGUL SYLLABLE ROT
+B876;B876;1105 1169 11C1;B876;1105 1169 11C1; # (롶; 롶; á„…á…©á‡; 롶; á„…á…©á‡; ) HANGUL SYLLABLE ROP
+B877;B877;1105 1169 11C2;B877;1105 1169 11C2; # (롷; 롷; 롷; 롷; 롷; ) HANGUL SYLLABLE ROH
+B878;B878;1105 116A;B878;1105 116A; # (롸; 롸; 롸; 롸; 롸; ) HANGUL SYLLABLE RWA
+B879;B879;1105 116A 11A8;B879;1105 116A 11A8; # (롹; 롹; 롹; 롹; 롹; ) HANGUL SYLLABLE RWAG
+B87A;B87A;1105 116A 11A9;B87A;1105 116A 11A9; # (롺; 롺; 롺; 롺; 롺; ) HANGUL SYLLABLE RWAGG
+B87B;B87B;1105 116A 11AA;B87B;1105 116A 11AA; # (롻; 롻; 롻; 롻; 롻; ) HANGUL SYLLABLE RWAGS
+B87C;B87C;1105 116A 11AB;B87C;1105 116A 11AB; # (롼; 롼; 롼; 롼; 롼; ) HANGUL SYLLABLE RWAN
+B87D;B87D;1105 116A 11AC;B87D;1105 116A 11AC; # (롽; 롽; 롽; 롽; 롽; ) HANGUL SYLLABLE RWANJ
+B87E;B87E;1105 116A 11AD;B87E;1105 116A 11AD; # (롾; 롾; 롾; 롾; 롾; ) HANGUL SYLLABLE RWANH
+B87F;B87F;1105 116A 11AE;B87F;1105 116A 11AE; # (롿; 롿; 롿; 롿; 롿; ) HANGUL SYLLABLE RWAD
+B880;B880;1105 116A 11AF;B880;1105 116A 11AF; # (뢀; 뢀; 뢀; 뢀; 뢀; ) HANGUL SYLLABLE RWAL
+B881;B881;1105 116A 11B0;B881;1105 116A 11B0; # (ë¢; ë¢; 뢁; ë¢; 뢁; ) HANGUL SYLLABLE RWALG
+B882;B882;1105 116A 11B1;B882;1105 116A 11B1; # (뢂; 뢂; 뢂; 뢂; 뢂; ) HANGUL SYLLABLE RWALM
+B883;B883;1105 116A 11B2;B883;1105 116A 11B2; # (뢃; 뢃; 뢃; 뢃; 뢃; ) HANGUL SYLLABLE RWALB
+B884;B884;1105 116A 11B3;B884;1105 116A 11B3; # (뢄; 뢄; 뢄; 뢄; 뢄; ) HANGUL SYLLABLE RWALS
+B885;B885;1105 116A 11B4;B885;1105 116A 11B4; # (뢅; 뢅; 뢅; 뢅; 뢅; ) HANGUL SYLLABLE RWALT
+B886;B886;1105 116A 11B5;B886;1105 116A 11B5; # (뢆; 뢆; 뢆; 뢆; 뢆; ) HANGUL SYLLABLE RWALP
+B887;B887;1105 116A 11B6;B887;1105 116A 11B6; # (뢇; 뢇; 뢇; 뢇; 뢇; ) HANGUL SYLLABLE RWALH
+B888;B888;1105 116A 11B7;B888;1105 116A 11B7; # (뢈; 뢈; 뢈; 뢈; 뢈; ) HANGUL SYLLABLE RWAM
+B889;B889;1105 116A 11B8;B889;1105 116A 11B8; # (뢉; 뢉; 뢉; 뢉; 뢉; ) HANGUL SYLLABLE RWAB
+B88A;B88A;1105 116A 11B9;B88A;1105 116A 11B9; # (뢊; 뢊; 뢊; 뢊; 뢊; ) HANGUL SYLLABLE RWABS
+B88B;B88B;1105 116A 11BA;B88B;1105 116A 11BA; # (뢋; 뢋; 뢋; 뢋; 뢋; ) HANGUL SYLLABLE RWAS
+B88C;B88C;1105 116A 11BB;B88C;1105 116A 11BB; # (뢌; 뢌; 뢌; 뢌; 뢌; ) HANGUL SYLLABLE RWASS
+B88D;B88D;1105 116A 11BC;B88D;1105 116A 11BC; # (ë¢; ë¢; 뢍; ë¢; 뢍; ) HANGUL SYLLABLE RWANG
+B88E;B88E;1105 116A 11BD;B88E;1105 116A 11BD; # (뢎; 뢎; 뢎; 뢎; 뢎; ) HANGUL SYLLABLE RWAJ
+B88F;B88F;1105 116A 11BE;B88F;1105 116A 11BE; # (ë¢; ë¢; 뢏; ë¢; 뢏; ) HANGUL SYLLABLE RWAC
+B890;B890;1105 116A 11BF;B890;1105 116A 11BF; # (ë¢; ë¢; 뢐; ë¢; 뢐; ) HANGUL SYLLABLE RWAK
+B891;B891;1105 116A 11C0;B891;1105 116A 11C0; # (뢑; 뢑; 뢑; 뢑; 뢑; ) HANGUL SYLLABLE RWAT
+B892;B892;1105 116A 11C1;B892;1105 116A 11C1; # (뢒; 뢒; á„…á…ªá‡; 뢒; á„…á…ªá‡; ) HANGUL SYLLABLE RWAP
+B893;B893;1105 116A 11C2;B893;1105 116A 11C2; # (뢓; 뢓; 뢓; 뢓; 뢓; ) HANGUL SYLLABLE RWAH
+B894;B894;1105 116B;B894;1105 116B; # (뢔; 뢔; 뢔; 뢔; 뢔; ) HANGUL SYLLABLE RWAE
+B895;B895;1105 116B 11A8;B895;1105 116B 11A8; # (뢕; 뢕; 뢕; 뢕; 뢕; ) HANGUL SYLLABLE RWAEG
+B896;B896;1105 116B 11A9;B896;1105 116B 11A9; # (뢖; 뢖; 뢖; 뢖; 뢖; ) HANGUL SYLLABLE RWAEGG
+B897;B897;1105 116B 11AA;B897;1105 116B 11AA; # (뢗; 뢗; 뢗; 뢗; 뢗; ) HANGUL SYLLABLE RWAEGS
+B898;B898;1105 116B 11AB;B898;1105 116B 11AB; # (뢘; 뢘; 뢘; 뢘; 뢘; ) HANGUL SYLLABLE RWAEN
+B899;B899;1105 116B 11AC;B899;1105 116B 11AC; # (뢙; 뢙; 뢙; 뢙; 뢙; ) HANGUL SYLLABLE RWAENJ
+B89A;B89A;1105 116B 11AD;B89A;1105 116B 11AD; # (뢚; 뢚; 뢚; 뢚; 뢚; ) HANGUL SYLLABLE RWAENH
+B89B;B89B;1105 116B 11AE;B89B;1105 116B 11AE; # (뢛; 뢛; 뢛; 뢛; 뢛; ) HANGUL SYLLABLE RWAED
+B89C;B89C;1105 116B 11AF;B89C;1105 116B 11AF; # (뢜; 뢜; 뢜; 뢜; 뢜; ) HANGUL SYLLABLE RWAEL
+B89D;B89D;1105 116B 11B0;B89D;1105 116B 11B0; # (ë¢; ë¢; 뢝; ë¢; 뢝; ) HANGUL SYLLABLE RWAELG
+B89E;B89E;1105 116B 11B1;B89E;1105 116B 11B1; # (뢞; 뢞; 뢞; 뢞; 뢞; ) HANGUL SYLLABLE RWAELM
+B89F;B89F;1105 116B 11B2;B89F;1105 116B 11B2; # (뢟; 뢟; 뢟; 뢟; 뢟; ) HANGUL SYLLABLE RWAELB
+B8A0;B8A0;1105 116B 11B3;B8A0;1105 116B 11B3; # (뢠; 뢠; 뢠; 뢠; 뢠; ) HANGUL SYLLABLE RWAELS
+B8A1;B8A1;1105 116B 11B4;B8A1;1105 116B 11B4; # (뢡; 뢡; 뢡; 뢡; 뢡; ) HANGUL SYLLABLE RWAELT
+B8A2;B8A2;1105 116B 11B5;B8A2;1105 116B 11B5; # (뢢; 뢢; 뢢; 뢢; 뢢; ) HANGUL SYLLABLE RWAELP
+B8A3;B8A3;1105 116B 11B6;B8A3;1105 116B 11B6; # (뢣; 뢣; 뢣; 뢣; 뢣; ) HANGUL SYLLABLE RWAELH
+B8A4;B8A4;1105 116B 11B7;B8A4;1105 116B 11B7; # (뢤; 뢤; 뢤; 뢤; 뢤; ) HANGUL SYLLABLE RWAEM
+B8A5;B8A5;1105 116B 11B8;B8A5;1105 116B 11B8; # (뢥; 뢥; 뢥; 뢥; 뢥; ) HANGUL SYLLABLE RWAEB
+B8A6;B8A6;1105 116B 11B9;B8A6;1105 116B 11B9; # (뢦; 뢦; 뢦; 뢦; 뢦; ) HANGUL SYLLABLE RWAEBS
+B8A7;B8A7;1105 116B 11BA;B8A7;1105 116B 11BA; # (뢧; 뢧; 뢧; 뢧; 뢧; ) HANGUL SYLLABLE RWAES
+B8A8;B8A8;1105 116B 11BB;B8A8;1105 116B 11BB; # (뢨; 뢨; 뢨; 뢨; 뢨; ) HANGUL SYLLABLE RWAESS
+B8A9;B8A9;1105 116B 11BC;B8A9;1105 116B 11BC; # (뢩; 뢩; 뢩; 뢩; 뢩; ) HANGUL SYLLABLE RWAENG
+B8AA;B8AA;1105 116B 11BD;B8AA;1105 116B 11BD; # (뢪; 뢪; 뢪; 뢪; 뢪; ) HANGUL SYLLABLE RWAEJ
+B8AB;B8AB;1105 116B 11BE;B8AB;1105 116B 11BE; # (뢫; 뢫; 뢫; 뢫; 뢫; ) HANGUL SYLLABLE RWAEC
+B8AC;B8AC;1105 116B 11BF;B8AC;1105 116B 11BF; # (뢬; 뢬; 뢬; 뢬; 뢬; ) HANGUL SYLLABLE RWAEK
+B8AD;B8AD;1105 116B 11C0;B8AD;1105 116B 11C0; # (뢭; 뢭; 뢭; 뢭; 뢭; ) HANGUL SYLLABLE RWAET
+B8AE;B8AE;1105 116B 11C1;B8AE;1105 116B 11C1; # (뢮; 뢮; á„…á…«á‡; 뢮; á„…á…«á‡; ) HANGUL SYLLABLE RWAEP
+B8AF;B8AF;1105 116B 11C2;B8AF;1105 116B 11C2; # (뢯; 뢯; 뢯; 뢯; 뢯; ) HANGUL SYLLABLE RWAEH
+B8B0;B8B0;1105 116C;B8B0;1105 116C; # (뢰; 뢰; 뢰; 뢰; 뢰; ) HANGUL SYLLABLE ROE
+B8B1;B8B1;1105 116C 11A8;B8B1;1105 116C 11A8; # (뢱; 뢱; 뢱; 뢱; 뢱; ) HANGUL SYLLABLE ROEG
+B8B2;B8B2;1105 116C 11A9;B8B2;1105 116C 11A9; # (뢲; 뢲; 뢲; 뢲; 뢲; ) HANGUL SYLLABLE ROEGG
+B8B3;B8B3;1105 116C 11AA;B8B3;1105 116C 11AA; # (뢳; 뢳; 뢳; 뢳; 뢳; ) HANGUL SYLLABLE ROEGS
+B8B4;B8B4;1105 116C 11AB;B8B4;1105 116C 11AB; # (뢴; 뢴; 뢴; 뢴; 뢴; ) HANGUL SYLLABLE ROEN
+B8B5;B8B5;1105 116C 11AC;B8B5;1105 116C 11AC; # (뢵; 뢵; 뢵; 뢵; 뢵; ) HANGUL SYLLABLE ROENJ
+B8B6;B8B6;1105 116C 11AD;B8B6;1105 116C 11AD; # (뢶; 뢶; 뢶; 뢶; 뢶; ) HANGUL SYLLABLE ROENH
+B8B7;B8B7;1105 116C 11AE;B8B7;1105 116C 11AE; # (뢷; 뢷; 뢷; 뢷; 뢷; ) HANGUL SYLLABLE ROED
+B8B8;B8B8;1105 116C 11AF;B8B8;1105 116C 11AF; # (뢸; 뢸; 뢸; 뢸; 뢸; ) HANGUL SYLLABLE ROEL
+B8B9;B8B9;1105 116C 11B0;B8B9;1105 116C 11B0; # (뢹; 뢹; 뢹; 뢹; 뢹; ) HANGUL SYLLABLE ROELG
+B8BA;B8BA;1105 116C 11B1;B8BA;1105 116C 11B1; # (뢺; 뢺; 뢺; 뢺; 뢺; ) HANGUL SYLLABLE ROELM
+B8BB;B8BB;1105 116C 11B2;B8BB;1105 116C 11B2; # (뢻; 뢻; 뢻; 뢻; 뢻; ) HANGUL SYLLABLE ROELB
+B8BC;B8BC;1105 116C 11B3;B8BC;1105 116C 11B3; # (뢼; 뢼; 뢼; 뢼; 뢼; ) HANGUL SYLLABLE ROELS
+B8BD;B8BD;1105 116C 11B4;B8BD;1105 116C 11B4; # (뢽; 뢽; 뢽; 뢽; 뢽; ) HANGUL SYLLABLE ROELT
+B8BE;B8BE;1105 116C 11B5;B8BE;1105 116C 11B5; # (뢾; 뢾; 뢾; 뢾; 뢾; ) HANGUL SYLLABLE ROELP
+B8BF;B8BF;1105 116C 11B6;B8BF;1105 116C 11B6; # (뢿; 뢿; 뢿; 뢿; 뢿; ) HANGUL SYLLABLE ROELH
+B8C0;B8C0;1105 116C 11B7;B8C0;1105 116C 11B7; # (룀; 룀; 룀; 룀; 룀; ) HANGUL SYLLABLE ROEM
+B8C1;B8C1;1105 116C 11B8;B8C1;1105 116C 11B8; # (ë£; ë£; 룁; ë£; 룁; ) HANGUL SYLLABLE ROEB
+B8C2;B8C2;1105 116C 11B9;B8C2;1105 116C 11B9; # (룂; 룂; 룂; 룂; 룂; ) HANGUL SYLLABLE ROEBS
+B8C3;B8C3;1105 116C 11BA;B8C3;1105 116C 11BA; # (룃; 룃; 룃; 룃; 룃; ) HANGUL SYLLABLE ROES
+B8C4;B8C4;1105 116C 11BB;B8C4;1105 116C 11BB; # (룄; 룄; 룄; 룄; 룄; ) HANGUL SYLLABLE ROESS
+B8C5;B8C5;1105 116C 11BC;B8C5;1105 116C 11BC; # (룅; 룅; 룅; 룅; 룅; ) HANGUL SYLLABLE ROENG
+B8C6;B8C6;1105 116C 11BD;B8C6;1105 116C 11BD; # (룆; 룆; 룆; 룆; 룆; ) HANGUL SYLLABLE ROEJ
+B8C7;B8C7;1105 116C 11BE;B8C7;1105 116C 11BE; # (룇; 룇; 룇; 룇; 룇; ) HANGUL SYLLABLE ROEC
+B8C8;B8C8;1105 116C 11BF;B8C8;1105 116C 11BF; # (룈; 룈; 룈; 룈; 룈; ) HANGUL SYLLABLE ROEK
+B8C9;B8C9;1105 116C 11C0;B8C9;1105 116C 11C0; # (룉; 룉; 룉; 룉; 룉; ) HANGUL SYLLABLE ROET
+B8CA;B8CA;1105 116C 11C1;B8CA;1105 116C 11C1; # (룊; 룊; á„…á…¬á‡; 룊; á„…á…¬á‡; ) HANGUL SYLLABLE ROEP
+B8CB;B8CB;1105 116C 11C2;B8CB;1105 116C 11C2; # (룋; 룋; 룋; 룋; 룋; ) HANGUL SYLLABLE ROEH
+B8CC;B8CC;1105 116D;B8CC;1105 116D; # (료; 료; 료; 료; 료; ) HANGUL SYLLABLE RYO
+B8CD;B8CD;1105 116D 11A8;B8CD;1105 116D 11A8; # (ë£; ë£; 룍; ë£; 룍; ) HANGUL SYLLABLE RYOG
+B8CE;B8CE;1105 116D 11A9;B8CE;1105 116D 11A9; # (룎; 룎; 룎; 룎; 룎; ) HANGUL SYLLABLE RYOGG
+B8CF;B8CF;1105 116D 11AA;B8CF;1105 116D 11AA; # (ë£; ë£; 룏; ë£; 룏; ) HANGUL SYLLABLE RYOGS
+B8D0;B8D0;1105 116D 11AB;B8D0;1105 116D 11AB; # (ë£; ë£; 룐; ë£; 룐; ) HANGUL SYLLABLE RYON
+B8D1;B8D1;1105 116D 11AC;B8D1;1105 116D 11AC; # (룑; 룑; 룑; 룑; 룑; ) HANGUL SYLLABLE RYONJ
+B8D2;B8D2;1105 116D 11AD;B8D2;1105 116D 11AD; # (룒; 룒; 룒; 룒; 룒; ) HANGUL SYLLABLE RYONH
+B8D3;B8D3;1105 116D 11AE;B8D3;1105 116D 11AE; # (룓; 룓; 룓; 룓; 룓; ) HANGUL SYLLABLE RYOD
+B8D4;B8D4;1105 116D 11AF;B8D4;1105 116D 11AF; # (룔; 룔; 룔; 룔; 룔; ) HANGUL SYLLABLE RYOL
+B8D5;B8D5;1105 116D 11B0;B8D5;1105 116D 11B0; # (룕; 룕; 룕; 룕; 룕; ) HANGUL SYLLABLE RYOLG
+B8D6;B8D6;1105 116D 11B1;B8D6;1105 116D 11B1; # (룖; 룖; 룖; 룖; 룖; ) HANGUL SYLLABLE RYOLM
+B8D7;B8D7;1105 116D 11B2;B8D7;1105 116D 11B2; # (룗; 룗; 룗; 룗; 룗; ) HANGUL SYLLABLE RYOLB
+B8D8;B8D8;1105 116D 11B3;B8D8;1105 116D 11B3; # (룘; 룘; 룘; 룘; 룘; ) HANGUL SYLLABLE RYOLS
+B8D9;B8D9;1105 116D 11B4;B8D9;1105 116D 11B4; # (룙; 룙; 룙; 룙; 룙; ) HANGUL SYLLABLE RYOLT
+B8DA;B8DA;1105 116D 11B5;B8DA;1105 116D 11B5; # (룚; 룚; 룚; 룚; 룚; ) HANGUL SYLLABLE RYOLP
+B8DB;B8DB;1105 116D 11B6;B8DB;1105 116D 11B6; # (룛; 룛; 룛; 룛; 룛; ) HANGUL SYLLABLE RYOLH
+B8DC;B8DC;1105 116D 11B7;B8DC;1105 116D 11B7; # (룜; 룜; 룜; 룜; 룜; ) HANGUL SYLLABLE RYOM
+B8DD;B8DD;1105 116D 11B8;B8DD;1105 116D 11B8; # (ë£; ë£; 룝; ë£; 룝; ) HANGUL SYLLABLE RYOB
+B8DE;B8DE;1105 116D 11B9;B8DE;1105 116D 11B9; # (룞; 룞; 룞; 룞; 룞; ) HANGUL SYLLABLE RYOBS
+B8DF;B8DF;1105 116D 11BA;B8DF;1105 116D 11BA; # (룟; 룟; 룟; 룟; 룟; ) HANGUL SYLLABLE RYOS
+B8E0;B8E0;1105 116D 11BB;B8E0;1105 116D 11BB; # (룠; 룠; 룠; 룠; 룠; ) HANGUL SYLLABLE RYOSS
+B8E1;B8E1;1105 116D 11BC;B8E1;1105 116D 11BC; # (룡; 룡; 룡; 룡; 룡; ) HANGUL SYLLABLE RYONG
+B8E2;B8E2;1105 116D 11BD;B8E2;1105 116D 11BD; # (룢; 룢; 룢; 룢; 룢; ) HANGUL SYLLABLE RYOJ
+B8E3;B8E3;1105 116D 11BE;B8E3;1105 116D 11BE; # (룣; 룣; 룣; 룣; 룣; ) HANGUL SYLLABLE RYOC
+B8E4;B8E4;1105 116D 11BF;B8E4;1105 116D 11BF; # (룤; 룤; 룤; 룤; 룤; ) HANGUL SYLLABLE RYOK
+B8E5;B8E5;1105 116D 11C0;B8E5;1105 116D 11C0; # (룥; 룥; 룥; 룥; 룥; ) HANGUL SYLLABLE RYOT
+B8E6;B8E6;1105 116D 11C1;B8E6;1105 116D 11C1; # (룦; 룦; á„…á…­á‡; 룦; á„…á…­á‡; ) HANGUL SYLLABLE RYOP
+B8E7;B8E7;1105 116D 11C2;B8E7;1105 116D 11C2; # (룧; 룧; 룧; 룧; 룧; ) HANGUL SYLLABLE RYOH
+B8E8;B8E8;1105 116E;B8E8;1105 116E; # (루; 루; 루; 루; 루; ) HANGUL SYLLABLE RU
+B8E9;B8E9;1105 116E 11A8;B8E9;1105 116E 11A8; # (룩; 룩; 룩; 룩; 룩; ) HANGUL SYLLABLE RUG
+B8EA;B8EA;1105 116E 11A9;B8EA;1105 116E 11A9; # (룪; 룪; 룪; 룪; 룪; ) HANGUL SYLLABLE RUGG
+B8EB;B8EB;1105 116E 11AA;B8EB;1105 116E 11AA; # (룫; 룫; 룫; 룫; 룫; ) HANGUL SYLLABLE RUGS
+B8EC;B8EC;1105 116E 11AB;B8EC;1105 116E 11AB; # (룬; 룬; 룬; 룬; 룬; ) HANGUL SYLLABLE RUN
+B8ED;B8ED;1105 116E 11AC;B8ED;1105 116E 11AC; # (룭; 룭; 룭; 룭; 룭; ) HANGUL SYLLABLE RUNJ
+B8EE;B8EE;1105 116E 11AD;B8EE;1105 116E 11AD; # (룮; 룮; 룮; 룮; 룮; ) HANGUL SYLLABLE RUNH
+B8EF;B8EF;1105 116E 11AE;B8EF;1105 116E 11AE; # (룯; 룯; 룯; 룯; 룯; ) HANGUL SYLLABLE RUD
+B8F0;B8F0;1105 116E 11AF;B8F0;1105 116E 11AF; # (룰; 룰; 룰; 룰; 룰; ) HANGUL SYLLABLE RUL
+B8F1;B8F1;1105 116E 11B0;B8F1;1105 116E 11B0; # (룱; 룱; 룱; 룱; 룱; ) HANGUL SYLLABLE RULG
+B8F2;B8F2;1105 116E 11B1;B8F2;1105 116E 11B1; # (룲; 룲; 룲; 룲; 룲; ) HANGUL SYLLABLE RULM
+B8F3;B8F3;1105 116E 11B2;B8F3;1105 116E 11B2; # (룳; 룳; 룳; 룳; 룳; ) HANGUL SYLLABLE RULB
+B8F4;B8F4;1105 116E 11B3;B8F4;1105 116E 11B3; # (룴; 룴; 룴; 룴; 룴; ) HANGUL SYLLABLE RULS
+B8F5;B8F5;1105 116E 11B4;B8F5;1105 116E 11B4; # (룵; 룵; 룵; 룵; 룵; ) HANGUL SYLLABLE RULT
+B8F6;B8F6;1105 116E 11B5;B8F6;1105 116E 11B5; # (룶; 룶; 룶; 룶; 룶; ) HANGUL SYLLABLE RULP
+B8F7;B8F7;1105 116E 11B6;B8F7;1105 116E 11B6; # (룷; 룷; 룷; 룷; 룷; ) HANGUL SYLLABLE RULH
+B8F8;B8F8;1105 116E 11B7;B8F8;1105 116E 11B7; # (룸; 룸; 룸; 룸; 룸; ) HANGUL SYLLABLE RUM
+B8F9;B8F9;1105 116E 11B8;B8F9;1105 116E 11B8; # (룹; 룹; 룹; 룹; 룹; ) HANGUL SYLLABLE RUB
+B8FA;B8FA;1105 116E 11B9;B8FA;1105 116E 11B9; # (룺; 룺; 룺; 룺; 룺; ) HANGUL SYLLABLE RUBS
+B8FB;B8FB;1105 116E 11BA;B8FB;1105 116E 11BA; # (룻; 룻; 룻; 룻; 룻; ) HANGUL SYLLABLE RUS
+B8FC;B8FC;1105 116E 11BB;B8FC;1105 116E 11BB; # (룼; 룼; 룼; 룼; 룼; ) HANGUL SYLLABLE RUSS
+B8FD;B8FD;1105 116E 11BC;B8FD;1105 116E 11BC; # (룽; 룽; 룽; 룽; 룽; ) HANGUL SYLLABLE RUNG
+B8FE;B8FE;1105 116E 11BD;B8FE;1105 116E 11BD; # (룾; 룾; 룾; 룾; 룾; ) HANGUL SYLLABLE RUJ
+B8FF;B8FF;1105 116E 11BE;B8FF;1105 116E 11BE; # (룿; 룿; 룿; 룿; 룿; ) HANGUL SYLLABLE RUC
+B900;B900;1105 116E 11BF;B900;1105 116E 11BF; # (뤀; 뤀; 뤀; 뤀; 뤀; ) HANGUL SYLLABLE RUK
+B901;B901;1105 116E 11C0;B901;1105 116E 11C0; # (ë¤; ë¤; 뤁; ë¤; 뤁; ) HANGUL SYLLABLE RUT
+B902;B902;1105 116E 11C1;B902;1105 116E 11C1; # (뤂; 뤂; á„…á…®á‡; 뤂; á„…á…®á‡; ) HANGUL SYLLABLE RUP
+B903;B903;1105 116E 11C2;B903;1105 116E 11C2; # (뤃; 뤃; 뤃; 뤃; 뤃; ) HANGUL SYLLABLE RUH
+B904;B904;1105 116F;B904;1105 116F; # (뤄; 뤄; 뤄; 뤄; 뤄; ) HANGUL SYLLABLE RWEO
+B905;B905;1105 116F 11A8;B905;1105 116F 11A8; # (뤅; 뤅; 뤅; 뤅; 뤅; ) HANGUL SYLLABLE RWEOG
+B906;B906;1105 116F 11A9;B906;1105 116F 11A9; # (뤆; 뤆; 뤆; 뤆; 뤆; ) HANGUL SYLLABLE RWEOGG
+B907;B907;1105 116F 11AA;B907;1105 116F 11AA; # (뤇; 뤇; 뤇; 뤇; 뤇; ) HANGUL SYLLABLE RWEOGS
+B908;B908;1105 116F 11AB;B908;1105 116F 11AB; # (뤈; 뤈; 뤈; 뤈; 뤈; ) HANGUL SYLLABLE RWEON
+B909;B909;1105 116F 11AC;B909;1105 116F 11AC; # (뤉; 뤉; 뤉; 뤉; 뤉; ) HANGUL SYLLABLE RWEONJ
+B90A;B90A;1105 116F 11AD;B90A;1105 116F 11AD; # (뤊; 뤊; 뤊; 뤊; 뤊; ) HANGUL SYLLABLE RWEONH
+B90B;B90B;1105 116F 11AE;B90B;1105 116F 11AE; # (뤋; 뤋; 뤋; 뤋; 뤋; ) HANGUL SYLLABLE RWEOD
+B90C;B90C;1105 116F 11AF;B90C;1105 116F 11AF; # (뤌; 뤌; 뤌; 뤌; 뤌; ) HANGUL SYLLABLE RWEOL
+B90D;B90D;1105 116F 11B0;B90D;1105 116F 11B0; # (ë¤; ë¤; 뤍; ë¤; 뤍; ) HANGUL SYLLABLE RWEOLG
+B90E;B90E;1105 116F 11B1;B90E;1105 116F 11B1; # (뤎; 뤎; 뤎; 뤎; 뤎; ) HANGUL SYLLABLE RWEOLM
+B90F;B90F;1105 116F 11B2;B90F;1105 116F 11B2; # (ë¤; ë¤; 뤏; ë¤; 뤏; ) HANGUL SYLLABLE RWEOLB
+B910;B910;1105 116F 11B3;B910;1105 116F 11B3; # (ë¤; ë¤; 뤐; ë¤; 뤐; ) HANGUL SYLLABLE RWEOLS
+B911;B911;1105 116F 11B4;B911;1105 116F 11B4; # (뤑; 뤑; 뤑; 뤑; 뤑; ) HANGUL SYLLABLE RWEOLT
+B912;B912;1105 116F 11B5;B912;1105 116F 11B5; # (뤒; 뤒; 뤒; 뤒; 뤒; ) HANGUL SYLLABLE RWEOLP
+B913;B913;1105 116F 11B6;B913;1105 116F 11B6; # (뤓; 뤓; 뤓; 뤓; 뤓; ) HANGUL SYLLABLE RWEOLH
+B914;B914;1105 116F 11B7;B914;1105 116F 11B7; # (뤔; 뤔; 뤔; 뤔; 뤔; ) HANGUL SYLLABLE RWEOM
+B915;B915;1105 116F 11B8;B915;1105 116F 11B8; # (뤕; 뤕; 뤕; 뤕; 뤕; ) HANGUL SYLLABLE RWEOB
+B916;B916;1105 116F 11B9;B916;1105 116F 11B9; # (뤖; 뤖; 뤖; 뤖; 뤖; ) HANGUL SYLLABLE RWEOBS
+B917;B917;1105 116F 11BA;B917;1105 116F 11BA; # (뤗; 뤗; 뤗; 뤗; 뤗; ) HANGUL SYLLABLE RWEOS
+B918;B918;1105 116F 11BB;B918;1105 116F 11BB; # (뤘; 뤘; 뤘; 뤘; 뤘; ) HANGUL SYLLABLE RWEOSS
+B919;B919;1105 116F 11BC;B919;1105 116F 11BC; # (뤙; 뤙; 뤙; 뤙; 뤙; ) HANGUL SYLLABLE RWEONG
+B91A;B91A;1105 116F 11BD;B91A;1105 116F 11BD; # (뤚; 뤚; 뤚; 뤚; 뤚; ) HANGUL SYLLABLE RWEOJ
+B91B;B91B;1105 116F 11BE;B91B;1105 116F 11BE; # (뤛; 뤛; 뤛; 뤛; 뤛; ) HANGUL SYLLABLE RWEOC
+B91C;B91C;1105 116F 11BF;B91C;1105 116F 11BF; # (뤜; 뤜; 뤜; 뤜; 뤜; ) HANGUL SYLLABLE RWEOK
+B91D;B91D;1105 116F 11C0;B91D;1105 116F 11C0; # (ë¤; ë¤; 뤝; ë¤; 뤝; ) HANGUL SYLLABLE RWEOT
+B91E;B91E;1105 116F 11C1;B91E;1105 116F 11C1; # (뤞; 뤞; á„…á…¯á‡; 뤞; á„…á…¯á‡; ) HANGUL SYLLABLE RWEOP
+B91F;B91F;1105 116F 11C2;B91F;1105 116F 11C2; # (뤟; 뤟; 뤟; 뤟; 뤟; ) HANGUL SYLLABLE RWEOH
+B920;B920;1105 1170;B920;1105 1170; # (뤠; 뤠; 뤠; 뤠; 뤠; ) HANGUL SYLLABLE RWE
+B921;B921;1105 1170 11A8;B921;1105 1170 11A8; # (뤡; 뤡; 뤡; 뤡; 뤡; ) HANGUL SYLLABLE RWEG
+B922;B922;1105 1170 11A9;B922;1105 1170 11A9; # (뤢; 뤢; 뤢; 뤢; 뤢; ) HANGUL SYLLABLE RWEGG
+B923;B923;1105 1170 11AA;B923;1105 1170 11AA; # (뤣; 뤣; 뤣; 뤣; 뤣; ) HANGUL SYLLABLE RWEGS
+B924;B924;1105 1170 11AB;B924;1105 1170 11AB; # (뤤; 뤤; 뤤; 뤤; 뤤; ) HANGUL SYLLABLE RWEN
+B925;B925;1105 1170 11AC;B925;1105 1170 11AC; # (뤥; 뤥; 뤥; 뤥; 뤥; ) HANGUL SYLLABLE RWENJ
+B926;B926;1105 1170 11AD;B926;1105 1170 11AD; # (뤦; 뤦; 뤦; 뤦; 뤦; ) HANGUL SYLLABLE RWENH
+B927;B927;1105 1170 11AE;B927;1105 1170 11AE; # (뤧; 뤧; 뤧; 뤧; 뤧; ) HANGUL SYLLABLE RWED
+B928;B928;1105 1170 11AF;B928;1105 1170 11AF; # (뤨; 뤨; 뤨; 뤨; 뤨; ) HANGUL SYLLABLE RWEL
+B929;B929;1105 1170 11B0;B929;1105 1170 11B0; # (뤩; 뤩; 뤩; 뤩; 뤩; ) HANGUL SYLLABLE RWELG
+B92A;B92A;1105 1170 11B1;B92A;1105 1170 11B1; # (뤪; 뤪; 뤪; 뤪; 뤪; ) HANGUL SYLLABLE RWELM
+B92B;B92B;1105 1170 11B2;B92B;1105 1170 11B2; # (뤫; 뤫; 뤫; 뤫; 뤫; ) HANGUL SYLLABLE RWELB
+B92C;B92C;1105 1170 11B3;B92C;1105 1170 11B3; # (뤬; 뤬; 뤬; 뤬; 뤬; ) HANGUL SYLLABLE RWELS
+B92D;B92D;1105 1170 11B4;B92D;1105 1170 11B4; # (뤭; 뤭; 뤭; 뤭; 뤭; ) HANGUL SYLLABLE RWELT
+B92E;B92E;1105 1170 11B5;B92E;1105 1170 11B5; # (뤮; 뤮; 뤮; 뤮; 뤮; ) HANGUL SYLLABLE RWELP
+B92F;B92F;1105 1170 11B6;B92F;1105 1170 11B6; # (뤯; 뤯; 뤯; 뤯; 뤯; ) HANGUL SYLLABLE RWELH
+B930;B930;1105 1170 11B7;B930;1105 1170 11B7; # (뤰; 뤰; 뤰; 뤰; 뤰; ) HANGUL SYLLABLE RWEM
+B931;B931;1105 1170 11B8;B931;1105 1170 11B8; # (뤱; 뤱; 뤱; 뤱; 뤱; ) HANGUL SYLLABLE RWEB
+B932;B932;1105 1170 11B9;B932;1105 1170 11B9; # (뤲; 뤲; 뤲; 뤲; 뤲; ) HANGUL SYLLABLE RWEBS
+B933;B933;1105 1170 11BA;B933;1105 1170 11BA; # (뤳; 뤳; 뤳; 뤳; 뤳; ) HANGUL SYLLABLE RWES
+B934;B934;1105 1170 11BB;B934;1105 1170 11BB; # (뤴; 뤴; 뤴; 뤴; 뤴; ) HANGUL SYLLABLE RWESS
+B935;B935;1105 1170 11BC;B935;1105 1170 11BC; # (뤵; 뤵; 뤵; 뤵; 뤵; ) HANGUL SYLLABLE RWENG
+B936;B936;1105 1170 11BD;B936;1105 1170 11BD; # (뤶; 뤶; 뤶; 뤶; 뤶; ) HANGUL SYLLABLE RWEJ
+B937;B937;1105 1170 11BE;B937;1105 1170 11BE; # (뤷; 뤷; 뤷; 뤷; 뤷; ) HANGUL SYLLABLE RWEC
+B938;B938;1105 1170 11BF;B938;1105 1170 11BF; # (뤸; 뤸; 뤸; 뤸; 뤸; ) HANGUL SYLLABLE RWEK
+B939;B939;1105 1170 11C0;B939;1105 1170 11C0; # (뤹; 뤹; 뤹; 뤹; 뤹; ) HANGUL SYLLABLE RWET
+B93A;B93A;1105 1170 11C1;B93A;1105 1170 11C1; # (뤺; 뤺; á„…á…°á‡; 뤺; á„…á…°á‡; ) HANGUL SYLLABLE RWEP
+B93B;B93B;1105 1170 11C2;B93B;1105 1170 11C2; # (뤻; 뤻; 뤻; 뤻; 뤻; ) HANGUL SYLLABLE RWEH
+B93C;B93C;1105 1171;B93C;1105 1171; # (뤼; 뤼; 뤼; 뤼; 뤼; ) HANGUL SYLLABLE RWI
+B93D;B93D;1105 1171 11A8;B93D;1105 1171 11A8; # (뤽; 뤽; 뤽; 뤽; 뤽; ) HANGUL SYLLABLE RWIG
+B93E;B93E;1105 1171 11A9;B93E;1105 1171 11A9; # (뤾; 뤾; 뤾; 뤾; 뤾; ) HANGUL SYLLABLE RWIGG
+B93F;B93F;1105 1171 11AA;B93F;1105 1171 11AA; # (뤿; 뤿; 뤿; 뤿; 뤿; ) HANGUL SYLLABLE RWIGS
+B940;B940;1105 1171 11AB;B940;1105 1171 11AB; # (륀; 륀; 륀; 륀; 륀; ) HANGUL SYLLABLE RWIN
+B941;B941;1105 1171 11AC;B941;1105 1171 11AC; # (ë¥; ë¥; 륁; ë¥; 륁; ) HANGUL SYLLABLE RWINJ
+B942;B942;1105 1171 11AD;B942;1105 1171 11AD; # (륂; 륂; 륂; 륂; 륂; ) HANGUL SYLLABLE RWINH
+B943;B943;1105 1171 11AE;B943;1105 1171 11AE; # (륃; 륃; 륃; 륃; 륃; ) HANGUL SYLLABLE RWID
+B944;B944;1105 1171 11AF;B944;1105 1171 11AF; # (륄; 륄; 륄; 륄; 륄; ) HANGUL SYLLABLE RWIL
+B945;B945;1105 1171 11B0;B945;1105 1171 11B0; # (륅; 륅; 륅; 륅; 륅; ) HANGUL SYLLABLE RWILG
+B946;B946;1105 1171 11B1;B946;1105 1171 11B1; # (륆; 륆; 륆; 륆; 륆; ) HANGUL SYLLABLE RWILM
+B947;B947;1105 1171 11B2;B947;1105 1171 11B2; # (륇; 륇; 륇; 륇; 륇; ) HANGUL SYLLABLE RWILB
+B948;B948;1105 1171 11B3;B948;1105 1171 11B3; # (륈; 륈; 륈; 륈; 륈; ) HANGUL SYLLABLE RWILS
+B949;B949;1105 1171 11B4;B949;1105 1171 11B4; # (륉; 륉; 륉; 륉; 륉; ) HANGUL SYLLABLE RWILT
+B94A;B94A;1105 1171 11B5;B94A;1105 1171 11B5; # (륊; 륊; 륊; 륊; 륊; ) HANGUL SYLLABLE RWILP
+B94B;B94B;1105 1171 11B6;B94B;1105 1171 11B6; # (륋; 륋; 륋; 륋; 륋; ) HANGUL SYLLABLE RWILH
+B94C;B94C;1105 1171 11B7;B94C;1105 1171 11B7; # (륌; 륌; 륌; 륌; 륌; ) HANGUL SYLLABLE RWIM
+B94D;B94D;1105 1171 11B8;B94D;1105 1171 11B8; # (ë¥; ë¥; 륍; ë¥; 륍; ) HANGUL SYLLABLE RWIB
+B94E;B94E;1105 1171 11B9;B94E;1105 1171 11B9; # (륎; 륎; 륎; 륎; 륎; ) HANGUL SYLLABLE RWIBS
+B94F;B94F;1105 1171 11BA;B94F;1105 1171 11BA; # (ë¥; ë¥; 륏; ë¥; 륏; ) HANGUL SYLLABLE RWIS
+B950;B950;1105 1171 11BB;B950;1105 1171 11BB; # (ë¥; ë¥; 륐; ë¥; 륐; ) HANGUL SYLLABLE RWISS
+B951;B951;1105 1171 11BC;B951;1105 1171 11BC; # (륑; 륑; 륑; 륑; 륑; ) HANGUL SYLLABLE RWING
+B952;B952;1105 1171 11BD;B952;1105 1171 11BD; # (륒; 륒; 륒; 륒; 륒; ) HANGUL SYLLABLE RWIJ
+B953;B953;1105 1171 11BE;B953;1105 1171 11BE; # (륓; 륓; 륓; 륓; 륓; ) HANGUL SYLLABLE RWIC
+B954;B954;1105 1171 11BF;B954;1105 1171 11BF; # (륔; 륔; 륔; 륔; 륔; ) HANGUL SYLLABLE RWIK
+B955;B955;1105 1171 11C0;B955;1105 1171 11C0; # (륕; 륕; 륕; 륕; 륕; ) HANGUL SYLLABLE RWIT
+B956;B956;1105 1171 11C1;B956;1105 1171 11C1; # (륖; 륖; á„…á…±á‡; 륖; á„…á…±á‡; ) HANGUL SYLLABLE RWIP
+B957;B957;1105 1171 11C2;B957;1105 1171 11C2; # (륗; 륗; 륗; 륗; 륗; ) HANGUL SYLLABLE RWIH
+B958;B958;1105 1172;B958;1105 1172; # (류; 류; 류; 류; 류; ) HANGUL SYLLABLE RYU
+B959;B959;1105 1172 11A8;B959;1105 1172 11A8; # (륙; 륙; 륙; 륙; 륙; ) HANGUL SYLLABLE RYUG
+B95A;B95A;1105 1172 11A9;B95A;1105 1172 11A9; # (륚; 륚; 륚; 륚; 륚; ) HANGUL SYLLABLE RYUGG
+B95B;B95B;1105 1172 11AA;B95B;1105 1172 11AA; # (륛; 륛; 륛; 륛; 륛; ) HANGUL SYLLABLE RYUGS
+B95C;B95C;1105 1172 11AB;B95C;1105 1172 11AB; # (륜; 륜; 륜; 륜; 륜; ) HANGUL SYLLABLE RYUN
+B95D;B95D;1105 1172 11AC;B95D;1105 1172 11AC; # (ë¥; ë¥; 륝; ë¥; 륝; ) HANGUL SYLLABLE RYUNJ
+B95E;B95E;1105 1172 11AD;B95E;1105 1172 11AD; # (륞; 륞; 륞; 륞; 륞; ) HANGUL SYLLABLE RYUNH
+B95F;B95F;1105 1172 11AE;B95F;1105 1172 11AE; # (륟; 륟; 륟; 륟; 륟; ) HANGUL SYLLABLE RYUD
+B960;B960;1105 1172 11AF;B960;1105 1172 11AF; # (률; 률; 률; 률; 률; ) HANGUL SYLLABLE RYUL
+B961;B961;1105 1172 11B0;B961;1105 1172 11B0; # (륡; 륡; 륡; 륡; 륡; ) HANGUL SYLLABLE RYULG
+B962;B962;1105 1172 11B1;B962;1105 1172 11B1; # (륢; 륢; 륢; 륢; 륢; ) HANGUL SYLLABLE RYULM
+B963;B963;1105 1172 11B2;B963;1105 1172 11B2; # (륣; 륣; 륣; 륣; 륣; ) HANGUL SYLLABLE RYULB
+B964;B964;1105 1172 11B3;B964;1105 1172 11B3; # (륤; 륤; 륤; 륤; 륤; ) HANGUL SYLLABLE RYULS
+B965;B965;1105 1172 11B4;B965;1105 1172 11B4; # (륥; 륥; 륥; 륥; 륥; ) HANGUL SYLLABLE RYULT
+B966;B966;1105 1172 11B5;B966;1105 1172 11B5; # (륦; 륦; 륦; 륦; 륦; ) HANGUL SYLLABLE RYULP
+B967;B967;1105 1172 11B6;B967;1105 1172 11B6; # (륧; 륧; 륧; 륧; 륧; ) HANGUL SYLLABLE RYULH
+B968;B968;1105 1172 11B7;B968;1105 1172 11B7; # (륨; 륨; 륨; 륨; 륨; ) HANGUL SYLLABLE RYUM
+B969;B969;1105 1172 11B8;B969;1105 1172 11B8; # (륩; 륩; 륩; 륩; 륩; ) HANGUL SYLLABLE RYUB
+B96A;B96A;1105 1172 11B9;B96A;1105 1172 11B9; # (륪; 륪; 륪; 륪; 륪; ) HANGUL SYLLABLE RYUBS
+B96B;B96B;1105 1172 11BA;B96B;1105 1172 11BA; # (륫; 륫; 륫; 륫; 륫; ) HANGUL SYLLABLE RYUS
+B96C;B96C;1105 1172 11BB;B96C;1105 1172 11BB; # (륬; 륬; 륬; 륬; 륬; ) HANGUL SYLLABLE RYUSS
+B96D;B96D;1105 1172 11BC;B96D;1105 1172 11BC; # (륭; 륭; 륭; 륭; 륭; ) HANGUL SYLLABLE RYUNG
+B96E;B96E;1105 1172 11BD;B96E;1105 1172 11BD; # (륮; 륮; 륮; 륮; 륮; ) HANGUL SYLLABLE RYUJ
+B96F;B96F;1105 1172 11BE;B96F;1105 1172 11BE; # (륯; 륯; 륯; 륯; 륯; ) HANGUL SYLLABLE RYUC
+B970;B970;1105 1172 11BF;B970;1105 1172 11BF; # (륰; 륰; 륰; 륰; 륰; ) HANGUL SYLLABLE RYUK
+B971;B971;1105 1172 11C0;B971;1105 1172 11C0; # (륱; 륱; 륱; 륱; 륱; ) HANGUL SYLLABLE RYUT
+B972;B972;1105 1172 11C1;B972;1105 1172 11C1; # (륲; 륲; á„…á…²á‡; 륲; á„…á…²á‡; ) HANGUL SYLLABLE RYUP
+B973;B973;1105 1172 11C2;B973;1105 1172 11C2; # (륳; 륳; 륳; 륳; 륳; ) HANGUL SYLLABLE RYUH
+B974;B974;1105 1173;B974;1105 1173; # (르; 르; 르; 르; 르; ) HANGUL SYLLABLE REU
+B975;B975;1105 1173 11A8;B975;1105 1173 11A8; # (륵; 륵; 륵; 륵; 륵; ) HANGUL SYLLABLE REUG
+B976;B976;1105 1173 11A9;B976;1105 1173 11A9; # (륶; 륶; 륶; 륶; 륶; ) HANGUL SYLLABLE REUGG
+B977;B977;1105 1173 11AA;B977;1105 1173 11AA; # (륷; 륷; 륷; 륷; 륷; ) HANGUL SYLLABLE REUGS
+B978;B978;1105 1173 11AB;B978;1105 1173 11AB; # (른; 른; 른; 른; 른; ) HANGUL SYLLABLE REUN
+B979;B979;1105 1173 11AC;B979;1105 1173 11AC; # (륹; 륹; 륹; 륹; 륹; ) HANGUL SYLLABLE REUNJ
+B97A;B97A;1105 1173 11AD;B97A;1105 1173 11AD; # (륺; 륺; 륺; 륺; 륺; ) HANGUL SYLLABLE REUNH
+B97B;B97B;1105 1173 11AE;B97B;1105 1173 11AE; # (륻; 륻; 륻; 륻; 륻; ) HANGUL SYLLABLE REUD
+B97C;B97C;1105 1173 11AF;B97C;1105 1173 11AF; # (를; 를; 를; 를; 를; ) HANGUL SYLLABLE REUL
+B97D;B97D;1105 1173 11B0;B97D;1105 1173 11B0; # (륽; 륽; 륽; 륽; 륽; ) HANGUL SYLLABLE REULG
+B97E;B97E;1105 1173 11B1;B97E;1105 1173 11B1; # (륾; 륾; 륾; 륾; 륾; ) HANGUL SYLLABLE REULM
+B97F;B97F;1105 1173 11B2;B97F;1105 1173 11B2; # (륿; 륿; 륿; 륿; 륿; ) HANGUL SYLLABLE REULB
+B980;B980;1105 1173 11B3;B980;1105 1173 11B3; # (릀; 릀; 릀; 릀; 릀; ) HANGUL SYLLABLE REULS
+B981;B981;1105 1173 11B4;B981;1105 1173 11B4; # (ë¦; ë¦; 릁; ë¦; 릁; ) HANGUL SYLLABLE REULT
+B982;B982;1105 1173 11B5;B982;1105 1173 11B5; # (릂; 릂; 릂; 릂; 릂; ) HANGUL SYLLABLE REULP
+B983;B983;1105 1173 11B6;B983;1105 1173 11B6; # (릃; 릃; 릃; 릃; 릃; ) HANGUL SYLLABLE REULH
+B984;B984;1105 1173 11B7;B984;1105 1173 11B7; # (름; 름; 름; 름; 름; ) HANGUL SYLLABLE REUM
+B985;B985;1105 1173 11B8;B985;1105 1173 11B8; # (릅; 릅; 릅; 릅; 릅; ) HANGUL SYLLABLE REUB
+B986;B986;1105 1173 11B9;B986;1105 1173 11B9; # (릆; 릆; 릆; 릆; 릆; ) HANGUL SYLLABLE REUBS
+B987;B987;1105 1173 11BA;B987;1105 1173 11BA; # (릇; 릇; 릇; 릇; 릇; ) HANGUL SYLLABLE REUS
+B988;B988;1105 1173 11BB;B988;1105 1173 11BB; # (릈; 릈; 릈; 릈; 릈; ) HANGUL SYLLABLE REUSS
+B989;B989;1105 1173 11BC;B989;1105 1173 11BC; # (릉; 릉; 릉; 릉; 릉; ) HANGUL SYLLABLE REUNG
+B98A;B98A;1105 1173 11BD;B98A;1105 1173 11BD; # (릊; 릊; 릊; 릊; 릊; ) HANGUL SYLLABLE REUJ
+B98B;B98B;1105 1173 11BE;B98B;1105 1173 11BE; # (릋; 릋; 릋; 릋; 릋; ) HANGUL SYLLABLE REUC
+B98C;B98C;1105 1173 11BF;B98C;1105 1173 11BF; # (릌; 릌; 릌; 릌; 릌; ) HANGUL SYLLABLE REUK
+B98D;B98D;1105 1173 11C0;B98D;1105 1173 11C0; # (ë¦; ë¦; 릍; ë¦; 릍; ) HANGUL SYLLABLE REUT
+B98E;B98E;1105 1173 11C1;B98E;1105 1173 11C1; # (릎; 릎; á„…á…³á‡; 릎; á„…á…³á‡; ) HANGUL SYLLABLE REUP
+B98F;B98F;1105 1173 11C2;B98F;1105 1173 11C2; # (ë¦; ë¦; 릏; ë¦; 릏; ) HANGUL SYLLABLE REUH
+B990;B990;1105 1174;B990;1105 1174; # (ë¦; ë¦; á„…á…´; ë¦; á„…á…´; ) HANGUL SYLLABLE RYI
+B991;B991;1105 1174 11A8;B991;1105 1174 11A8; # (릑; 릑; 릑; 릑; 릑; ) HANGUL SYLLABLE RYIG
+B992;B992;1105 1174 11A9;B992;1105 1174 11A9; # (릒; 릒; 릒; 릒; 릒; ) HANGUL SYLLABLE RYIGG
+B993;B993;1105 1174 11AA;B993;1105 1174 11AA; # (릓; 릓; 릓; 릓; 릓; ) HANGUL SYLLABLE RYIGS
+B994;B994;1105 1174 11AB;B994;1105 1174 11AB; # (릔; 릔; 릔; 릔; 릔; ) HANGUL SYLLABLE RYIN
+B995;B995;1105 1174 11AC;B995;1105 1174 11AC; # (릕; 릕; 릕; 릕; 릕; ) HANGUL SYLLABLE RYINJ
+B996;B996;1105 1174 11AD;B996;1105 1174 11AD; # (릖; 릖; 릖; 릖; 릖; ) HANGUL SYLLABLE RYINH
+B997;B997;1105 1174 11AE;B997;1105 1174 11AE; # (릗; 릗; 릗; 릗; 릗; ) HANGUL SYLLABLE RYID
+B998;B998;1105 1174 11AF;B998;1105 1174 11AF; # (릘; 릘; 릘; 릘; 릘; ) HANGUL SYLLABLE RYIL
+B999;B999;1105 1174 11B0;B999;1105 1174 11B0; # (릙; 릙; 릙; 릙; 릙; ) HANGUL SYLLABLE RYILG
+B99A;B99A;1105 1174 11B1;B99A;1105 1174 11B1; # (릚; 릚; 릚; 릚; 릚; ) HANGUL SYLLABLE RYILM
+B99B;B99B;1105 1174 11B2;B99B;1105 1174 11B2; # (릛; 릛; 릛; 릛; 릛; ) HANGUL SYLLABLE RYILB
+B99C;B99C;1105 1174 11B3;B99C;1105 1174 11B3; # (릜; 릜; 릜; 릜; 릜; ) HANGUL SYLLABLE RYILS
+B99D;B99D;1105 1174 11B4;B99D;1105 1174 11B4; # (ë¦; ë¦; 릝; ë¦; 릝; ) HANGUL SYLLABLE RYILT
+B99E;B99E;1105 1174 11B5;B99E;1105 1174 11B5; # (릞; 릞; 릞; 릞; 릞; ) HANGUL SYLLABLE RYILP
+B99F;B99F;1105 1174 11B6;B99F;1105 1174 11B6; # (릟; 릟; 릟; 릟; 릟; ) HANGUL SYLLABLE RYILH
+B9A0;B9A0;1105 1174 11B7;B9A0;1105 1174 11B7; # (릠; 릠; 릠; 릠; 릠; ) HANGUL SYLLABLE RYIM
+B9A1;B9A1;1105 1174 11B8;B9A1;1105 1174 11B8; # (릡; 릡; 릡; 릡; 릡; ) HANGUL SYLLABLE RYIB
+B9A2;B9A2;1105 1174 11B9;B9A2;1105 1174 11B9; # (릢; 릢; 릢; 릢; 릢; ) HANGUL SYLLABLE RYIBS
+B9A3;B9A3;1105 1174 11BA;B9A3;1105 1174 11BA; # (릣; 릣; 릣; 릣; 릣; ) HANGUL SYLLABLE RYIS
+B9A4;B9A4;1105 1174 11BB;B9A4;1105 1174 11BB; # (릤; 릤; 릤; 릤; 릤; ) HANGUL SYLLABLE RYISS
+B9A5;B9A5;1105 1174 11BC;B9A5;1105 1174 11BC; # (릥; 릥; 릥; 릥; 릥; ) HANGUL SYLLABLE RYING
+B9A6;B9A6;1105 1174 11BD;B9A6;1105 1174 11BD; # (릦; 릦; 릦; 릦; 릦; ) HANGUL SYLLABLE RYIJ
+B9A7;B9A7;1105 1174 11BE;B9A7;1105 1174 11BE; # (릧; 릧; 릧; 릧; 릧; ) HANGUL SYLLABLE RYIC
+B9A8;B9A8;1105 1174 11BF;B9A8;1105 1174 11BF; # (릨; 릨; 릨; 릨; 릨; ) HANGUL SYLLABLE RYIK
+B9A9;B9A9;1105 1174 11C0;B9A9;1105 1174 11C0; # (릩; 릩; 릩; 릩; 릩; ) HANGUL SYLLABLE RYIT
+B9AA;B9AA;1105 1174 11C1;B9AA;1105 1174 11C1; # (릪; 릪; á„…á…´á‡; 릪; á„…á…´á‡; ) HANGUL SYLLABLE RYIP
+B9AB;B9AB;1105 1174 11C2;B9AB;1105 1174 11C2; # (릫; 릫; 릫; 릫; 릫; ) HANGUL SYLLABLE RYIH
+B9AC;B9AC;1105 1175;B9AC;1105 1175; # (리; 리; 리; 리; 리; ) HANGUL SYLLABLE RI
+B9AD;B9AD;1105 1175 11A8;B9AD;1105 1175 11A8; # (릭; 릭; 릭; 릭; 릭; ) HANGUL SYLLABLE RIG
+B9AE;B9AE;1105 1175 11A9;B9AE;1105 1175 11A9; # (릮; 릮; 릮; 릮; 릮; ) HANGUL SYLLABLE RIGG
+B9AF;B9AF;1105 1175 11AA;B9AF;1105 1175 11AA; # (릯; 릯; 릯; 릯; 릯; ) HANGUL SYLLABLE RIGS
+B9B0;B9B0;1105 1175 11AB;B9B0;1105 1175 11AB; # (린; 린; 린; 린; 린; ) HANGUL SYLLABLE RIN
+B9B1;B9B1;1105 1175 11AC;B9B1;1105 1175 11AC; # (릱; 릱; 릱; 릱; 릱; ) HANGUL SYLLABLE RINJ
+B9B2;B9B2;1105 1175 11AD;B9B2;1105 1175 11AD; # (릲; 릲; 릲; 릲; 릲; ) HANGUL SYLLABLE RINH
+B9B3;B9B3;1105 1175 11AE;B9B3;1105 1175 11AE; # (릳; 릳; 릳; 릳; 릳; ) HANGUL SYLLABLE RID
+B9B4;B9B4;1105 1175 11AF;B9B4;1105 1175 11AF; # (릴; 릴; 릴; 릴; 릴; ) HANGUL SYLLABLE RIL
+B9B5;B9B5;1105 1175 11B0;B9B5;1105 1175 11B0; # (릵; 릵; 릵; 릵; 릵; ) HANGUL SYLLABLE RILG
+B9B6;B9B6;1105 1175 11B1;B9B6;1105 1175 11B1; # (릶; 릶; 릶; 릶; 릶; ) HANGUL SYLLABLE RILM
+B9B7;B9B7;1105 1175 11B2;B9B7;1105 1175 11B2; # (릷; 릷; 릷; 릷; 릷; ) HANGUL SYLLABLE RILB
+B9B8;B9B8;1105 1175 11B3;B9B8;1105 1175 11B3; # (릸; 릸; 릸; 릸; 릸; ) HANGUL SYLLABLE RILS
+B9B9;B9B9;1105 1175 11B4;B9B9;1105 1175 11B4; # (릹; 릹; 릹; 릹; 릹; ) HANGUL SYLLABLE RILT
+B9BA;B9BA;1105 1175 11B5;B9BA;1105 1175 11B5; # (릺; 릺; 릺; 릺; 릺; ) HANGUL SYLLABLE RILP
+B9BB;B9BB;1105 1175 11B6;B9BB;1105 1175 11B6; # (릻; 릻; 릻; 릻; 릻; ) HANGUL SYLLABLE RILH
+B9BC;B9BC;1105 1175 11B7;B9BC;1105 1175 11B7; # (림; 림; 림; 림; 림; ) HANGUL SYLLABLE RIM
+B9BD;B9BD;1105 1175 11B8;B9BD;1105 1175 11B8; # (립; 립; 립; 립; 립; ) HANGUL SYLLABLE RIB
+B9BE;B9BE;1105 1175 11B9;B9BE;1105 1175 11B9; # (릾; 릾; 릾; 릾; 릾; ) HANGUL SYLLABLE RIBS
+B9BF;B9BF;1105 1175 11BA;B9BF;1105 1175 11BA; # (릿; 릿; 릿; 릿; 릿; ) HANGUL SYLLABLE RIS
+B9C0;B9C0;1105 1175 11BB;B9C0;1105 1175 11BB; # (맀; 맀; 맀; 맀; 맀; ) HANGUL SYLLABLE RISS
+B9C1;B9C1;1105 1175 11BC;B9C1;1105 1175 11BC; # (ë§; ë§; 링; ë§; 링; ) HANGUL SYLLABLE RING
+B9C2;B9C2;1105 1175 11BD;B9C2;1105 1175 11BD; # (맂; 맂; 맂; 맂; 맂; ) HANGUL SYLLABLE RIJ
+B9C3;B9C3;1105 1175 11BE;B9C3;1105 1175 11BE; # (맃; 맃; 맃; 맃; 맃; ) HANGUL SYLLABLE RIC
+B9C4;B9C4;1105 1175 11BF;B9C4;1105 1175 11BF; # (맄; 맄; 맄; 맄; 맄; ) HANGUL SYLLABLE RIK
+B9C5;B9C5;1105 1175 11C0;B9C5;1105 1175 11C0; # (맅; 맅; 맅; 맅; 맅; ) HANGUL SYLLABLE RIT
+B9C6;B9C6;1105 1175 11C1;B9C6;1105 1175 11C1; # (맆; 맆; á„…á…µá‡; 맆; á„…á…µá‡; ) HANGUL SYLLABLE RIP
+B9C7;B9C7;1105 1175 11C2;B9C7;1105 1175 11C2; # (맇; 맇; 맇; 맇; 맇; ) HANGUL SYLLABLE RIH
+B9C8;B9C8;1106 1161;B9C8;1106 1161; # (마; 마; 마; 마; 마; ) HANGUL SYLLABLE MA
+B9C9;B9C9;1106 1161 11A8;B9C9;1106 1161 11A8; # (막; 막; 막; 막; 막; ) HANGUL SYLLABLE MAG
+B9CA;B9CA;1106 1161 11A9;B9CA;1106 1161 11A9; # (맊; 맊; 맊; 맊; 맊; ) HANGUL SYLLABLE MAGG
+B9CB;B9CB;1106 1161 11AA;B9CB;1106 1161 11AA; # (맋; 맋; 맋; 맋; 맋; ) HANGUL SYLLABLE MAGS
+B9CC;B9CC;1106 1161 11AB;B9CC;1106 1161 11AB; # (만; 만; 만; 만; 만; ) HANGUL SYLLABLE MAN
+B9CD;B9CD;1106 1161 11AC;B9CD;1106 1161 11AC; # (ë§; ë§; 맍; ë§; 맍; ) HANGUL SYLLABLE MANJ
+B9CE;B9CE;1106 1161 11AD;B9CE;1106 1161 11AD; # (많; 많; 많; 많; 많; ) HANGUL SYLLABLE MANH
+B9CF;B9CF;1106 1161 11AE;B9CF;1106 1161 11AE; # (ë§; ë§; 맏; ë§; 맏; ) HANGUL SYLLABLE MAD
+B9D0;B9D0;1106 1161 11AF;B9D0;1106 1161 11AF; # (ë§; ë§; 말; ë§; 말; ) HANGUL SYLLABLE MAL
+B9D1;B9D1;1106 1161 11B0;B9D1;1106 1161 11B0; # (맑; 맑; 맑; 맑; 맑; ) HANGUL SYLLABLE MALG
+B9D2;B9D2;1106 1161 11B1;B9D2;1106 1161 11B1; # (맒; 맒; 맒; 맒; 맒; ) HANGUL SYLLABLE MALM
+B9D3;B9D3;1106 1161 11B2;B9D3;1106 1161 11B2; # (맓; 맓; 맓; 맓; 맓; ) HANGUL SYLLABLE MALB
+B9D4;B9D4;1106 1161 11B3;B9D4;1106 1161 11B3; # (맔; 맔; 맔; 맔; 맔; ) HANGUL SYLLABLE MALS
+B9D5;B9D5;1106 1161 11B4;B9D5;1106 1161 11B4; # (맕; 맕; 맕; 맕; 맕; ) HANGUL SYLLABLE MALT
+B9D6;B9D6;1106 1161 11B5;B9D6;1106 1161 11B5; # (맖; 맖; 맖; 맖; 맖; ) HANGUL SYLLABLE MALP
+B9D7;B9D7;1106 1161 11B6;B9D7;1106 1161 11B6; # (맗; 맗; 맗; 맗; 맗; ) HANGUL SYLLABLE MALH
+B9D8;B9D8;1106 1161 11B7;B9D8;1106 1161 11B7; # (맘; 맘; 맘; 맘; 맘; ) HANGUL SYLLABLE MAM
+B9D9;B9D9;1106 1161 11B8;B9D9;1106 1161 11B8; # (맙; 맙; 맙; 맙; 맙; ) HANGUL SYLLABLE MAB
+B9DA;B9DA;1106 1161 11B9;B9DA;1106 1161 11B9; # (맚; 맚; 맚; 맚; 맚; ) HANGUL SYLLABLE MABS
+B9DB;B9DB;1106 1161 11BA;B9DB;1106 1161 11BA; # (맛; 맛; 맛; 맛; 맛; ) HANGUL SYLLABLE MAS
+B9DC;B9DC;1106 1161 11BB;B9DC;1106 1161 11BB; # (맜; 맜; 맜; 맜; 맜; ) HANGUL SYLLABLE MASS
+B9DD;B9DD;1106 1161 11BC;B9DD;1106 1161 11BC; # (ë§; ë§; 망; ë§; 망; ) HANGUL SYLLABLE MANG
+B9DE;B9DE;1106 1161 11BD;B9DE;1106 1161 11BD; # (맞; 맞; 맞; 맞; 맞; ) HANGUL SYLLABLE MAJ
+B9DF;B9DF;1106 1161 11BE;B9DF;1106 1161 11BE; # (맟; 맟; 맟; 맟; 맟; ) HANGUL SYLLABLE MAC
+B9E0;B9E0;1106 1161 11BF;B9E0;1106 1161 11BF; # (맠; 맠; 맠; 맠; 맠; ) HANGUL SYLLABLE MAK
+B9E1;B9E1;1106 1161 11C0;B9E1;1106 1161 11C0; # (맡; 맡; 맡; 맡; 맡; ) HANGUL SYLLABLE MAT
+B9E2;B9E2;1106 1161 11C1;B9E2;1106 1161 11C1; # (맢; 맢; 마á‡; 맢; 마á‡; ) HANGUL SYLLABLE MAP
+B9E3;B9E3;1106 1161 11C2;B9E3;1106 1161 11C2; # (맣; 맣; 맣; 맣; 맣; ) HANGUL SYLLABLE MAH
+B9E4;B9E4;1106 1162;B9E4;1106 1162; # (매; 매; 매; 매; 매; ) HANGUL SYLLABLE MAE
+B9E5;B9E5;1106 1162 11A8;B9E5;1106 1162 11A8; # (맥; 맥; 맥; 맥; 맥; ) HANGUL SYLLABLE MAEG
+B9E6;B9E6;1106 1162 11A9;B9E6;1106 1162 11A9; # (맦; 맦; 맦; 맦; 맦; ) HANGUL SYLLABLE MAEGG
+B9E7;B9E7;1106 1162 11AA;B9E7;1106 1162 11AA; # (맧; 맧; 맧; 맧; 맧; ) HANGUL SYLLABLE MAEGS
+B9E8;B9E8;1106 1162 11AB;B9E8;1106 1162 11AB; # (맨; 맨; 맨; 맨; 맨; ) HANGUL SYLLABLE MAEN
+B9E9;B9E9;1106 1162 11AC;B9E9;1106 1162 11AC; # (맩; 맩; 맩; 맩; 맩; ) HANGUL SYLLABLE MAENJ
+B9EA;B9EA;1106 1162 11AD;B9EA;1106 1162 11AD; # (맪; 맪; 맪; 맪; 맪; ) HANGUL SYLLABLE MAENH
+B9EB;B9EB;1106 1162 11AE;B9EB;1106 1162 11AE; # (맫; 맫; 맫; 맫; 맫; ) HANGUL SYLLABLE MAED
+B9EC;B9EC;1106 1162 11AF;B9EC;1106 1162 11AF; # (맬; 맬; 맬; 맬; 맬; ) HANGUL SYLLABLE MAEL
+B9ED;B9ED;1106 1162 11B0;B9ED;1106 1162 11B0; # (맭; 맭; 맭; 맭; 맭; ) HANGUL SYLLABLE MAELG
+B9EE;B9EE;1106 1162 11B1;B9EE;1106 1162 11B1; # (맮; 맮; 맮; 맮; 맮; ) HANGUL SYLLABLE MAELM
+B9EF;B9EF;1106 1162 11B2;B9EF;1106 1162 11B2; # (맯; 맯; 맯; 맯; 맯; ) HANGUL SYLLABLE MAELB
+B9F0;B9F0;1106 1162 11B3;B9F0;1106 1162 11B3; # (맰; 맰; 맰; 맰; 맰; ) HANGUL SYLLABLE MAELS
+B9F1;B9F1;1106 1162 11B4;B9F1;1106 1162 11B4; # (맱; 맱; 맱; 맱; 맱; ) HANGUL SYLLABLE MAELT
+B9F2;B9F2;1106 1162 11B5;B9F2;1106 1162 11B5; # (맲; 맲; 맲; 맲; 맲; ) HANGUL SYLLABLE MAELP
+B9F3;B9F3;1106 1162 11B6;B9F3;1106 1162 11B6; # (맳; 맳; 맳; 맳; 맳; ) HANGUL SYLLABLE MAELH
+B9F4;B9F4;1106 1162 11B7;B9F4;1106 1162 11B7; # (맴; 맴; 맴; 맴; 맴; ) HANGUL SYLLABLE MAEM
+B9F5;B9F5;1106 1162 11B8;B9F5;1106 1162 11B8; # (맵; 맵; 맵; 맵; 맵; ) HANGUL SYLLABLE MAEB
+B9F6;B9F6;1106 1162 11B9;B9F6;1106 1162 11B9; # (맶; 맶; 맶; 맶; 맶; ) HANGUL SYLLABLE MAEBS
+B9F7;B9F7;1106 1162 11BA;B9F7;1106 1162 11BA; # (맷; 맷; 맷; 맷; 맷; ) HANGUL SYLLABLE MAES
+B9F8;B9F8;1106 1162 11BB;B9F8;1106 1162 11BB; # (맸; 맸; 맸; 맸; 맸; ) HANGUL SYLLABLE MAESS
+B9F9;B9F9;1106 1162 11BC;B9F9;1106 1162 11BC; # (맹; 맹; 맹; 맹; 맹; ) HANGUL SYLLABLE MAENG
+B9FA;B9FA;1106 1162 11BD;B9FA;1106 1162 11BD; # (맺; 맺; 맺; 맺; 맺; ) HANGUL SYLLABLE MAEJ
+B9FB;B9FB;1106 1162 11BE;B9FB;1106 1162 11BE; # (맻; 맻; 맻; 맻; 맻; ) HANGUL SYLLABLE MAEC
+B9FC;B9FC;1106 1162 11BF;B9FC;1106 1162 11BF; # (맼; 맼; 맼; 맼; 맼; ) HANGUL SYLLABLE MAEK
+B9FD;B9FD;1106 1162 11C0;B9FD;1106 1162 11C0; # (맽; 맽; 맽; 맽; 맽; ) HANGUL SYLLABLE MAET
+B9FE;B9FE;1106 1162 11C1;B9FE;1106 1162 11C1; # (맾; 맾; 매á‡; 맾; 매á‡; ) HANGUL SYLLABLE MAEP
+B9FF;B9FF;1106 1162 11C2;B9FF;1106 1162 11C2; # (맿; 맿; 맿; 맿; 맿; ) HANGUL SYLLABLE MAEH
+BA00;BA00;1106 1163;BA00;1106 1163; # (먀; 먀; 먀; 먀; 먀; ) HANGUL SYLLABLE MYA
+BA01;BA01;1106 1163 11A8;BA01;1106 1163 11A8; # (ë¨; ë¨; 먁; ë¨; 먁; ) HANGUL SYLLABLE MYAG
+BA02;BA02;1106 1163 11A9;BA02;1106 1163 11A9; # (먂; 먂; 먂; 먂; 먂; ) HANGUL SYLLABLE MYAGG
+BA03;BA03;1106 1163 11AA;BA03;1106 1163 11AA; # (먃; 먃; 먃; 먃; 먃; ) HANGUL SYLLABLE MYAGS
+BA04;BA04;1106 1163 11AB;BA04;1106 1163 11AB; # (먄; 먄; 먄; 먄; 먄; ) HANGUL SYLLABLE MYAN
+BA05;BA05;1106 1163 11AC;BA05;1106 1163 11AC; # (먅; 먅; 먅; 먅; 먅; ) HANGUL SYLLABLE MYANJ
+BA06;BA06;1106 1163 11AD;BA06;1106 1163 11AD; # (먆; 먆; 먆; 먆; 먆; ) HANGUL SYLLABLE MYANH
+BA07;BA07;1106 1163 11AE;BA07;1106 1163 11AE; # (먇; 먇; 먇; 먇; 먇; ) HANGUL SYLLABLE MYAD
+BA08;BA08;1106 1163 11AF;BA08;1106 1163 11AF; # (먈; 먈; 먈; 먈; 먈; ) HANGUL SYLLABLE MYAL
+BA09;BA09;1106 1163 11B0;BA09;1106 1163 11B0; # (먉; 먉; 먉; 먉; 먉; ) HANGUL SYLLABLE MYALG
+BA0A;BA0A;1106 1163 11B1;BA0A;1106 1163 11B1; # (먊; 먊; 먊; 먊; 먊; ) HANGUL SYLLABLE MYALM
+BA0B;BA0B;1106 1163 11B2;BA0B;1106 1163 11B2; # (먋; 먋; 먋; 먋; 먋; ) HANGUL SYLLABLE MYALB
+BA0C;BA0C;1106 1163 11B3;BA0C;1106 1163 11B3; # (먌; 먌; 먌; 먌; 먌; ) HANGUL SYLLABLE MYALS
+BA0D;BA0D;1106 1163 11B4;BA0D;1106 1163 11B4; # (ë¨; ë¨; 먍; ë¨; 먍; ) HANGUL SYLLABLE MYALT
+BA0E;BA0E;1106 1163 11B5;BA0E;1106 1163 11B5; # (먎; 먎; 먎; 먎; 먎; ) HANGUL SYLLABLE MYALP
+BA0F;BA0F;1106 1163 11B6;BA0F;1106 1163 11B6; # (ë¨; ë¨; 먏; ë¨; 먏; ) HANGUL SYLLABLE MYALH
+BA10;BA10;1106 1163 11B7;BA10;1106 1163 11B7; # (ë¨; ë¨; 먐; ë¨; 먐; ) HANGUL SYLLABLE MYAM
+BA11;BA11;1106 1163 11B8;BA11;1106 1163 11B8; # (먑; 먑; 먑; 먑; 먑; ) HANGUL SYLLABLE MYAB
+BA12;BA12;1106 1163 11B9;BA12;1106 1163 11B9; # (먒; 먒; 먒; 먒; 먒; ) HANGUL SYLLABLE MYABS
+BA13;BA13;1106 1163 11BA;BA13;1106 1163 11BA; # (먓; 먓; 먓; 먓; 먓; ) HANGUL SYLLABLE MYAS
+BA14;BA14;1106 1163 11BB;BA14;1106 1163 11BB; # (먔; 먔; 먔; 먔; 먔; ) HANGUL SYLLABLE MYASS
+BA15;BA15;1106 1163 11BC;BA15;1106 1163 11BC; # (먕; 먕; 먕; 먕; 먕; ) HANGUL SYLLABLE MYANG
+BA16;BA16;1106 1163 11BD;BA16;1106 1163 11BD; # (먖; 먖; 먖; 먖; 먖; ) HANGUL SYLLABLE MYAJ
+BA17;BA17;1106 1163 11BE;BA17;1106 1163 11BE; # (먗; 먗; 먗; 먗; 먗; ) HANGUL SYLLABLE MYAC
+BA18;BA18;1106 1163 11BF;BA18;1106 1163 11BF; # (먘; 먘; 먘; 먘; 먘; ) HANGUL SYLLABLE MYAK
+BA19;BA19;1106 1163 11C0;BA19;1106 1163 11C0; # (먙; 먙; 먙; 먙; 먙; ) HANGUL SYLLABLE MYAT
+BA1A;BA1A;1106 1163 11C1;BA1A;1106 1163 11C1; # (먚; 먚; 먀á‡; 먚; 먀á‡; ) HANGUL SYLLABLE MYAP
+BA1B;BA1B;1106 1163 11C2;BA1B;1106 1163 11C2; # (먛; 먛; 먛; 먛; 먛; ) HANGUL SYLLABLE MYAH
+BA1C;BA1C;1106 1164;BA1C;1106 1164; # (먜; 먜; 먜; 먜; 먜; ) HANGUL SYLLABLE MYAE
+BA1D;BA1D;1106 1164 11A8;BA1D;1106 1164 11A8; # (ë¨; ë¨; 먝; ë¨; 먝; ) HANGUL SYLLABLE MYAEG
+BA1E;BA1E;1106 1164 11A9;BA1E;1106 1164 11A9; # (먞; 먞; 먞; 먞; 먞; ) HANGUL SYLLABLE MYAEGG
+BA1F;BA1F;1106 1164 11AA;BA1F;1106 1164 11AA; # (먟; 먟; 먟; 먟; 먟; ) HANGUL SYLLABLE MYAEGS
+BA20;BA20;1106 1164 11AB;BA20;1106 1164 11AB; # (먠; 먠; 먠; 먠; 먠; ) HANGUL SYLLABLE MYAEN
+BA21;BA21;1106 1164 11AC;BA21;1106 1164 11AC; # (먡; 먡; 먡; 먡; 먡; ) HANGUL SYLLABLE MYAENJ
+BA22;BA22;1106 1164 11AD;BA22;1106 1164 11AD; # (먢; 먢; 먢; 먢; 먢; ) HANGUL SYLLABLE MYAENH
+BA23;BA23;1106 1164 11AE;BA23;1106 1164 11AE; # (먣; 먣; 먣; 먣; 먣; ) HANGUL SYLLABLE MYAED
+BA24;BA24;1106 1164 11AF;BA24;1106 1164 11AF; # (먤; 먤; 먤; 먤; 먤; ) HANGUL SYLLABLE MYAEL
+BA25;BA25;1106 1164 11B0;BA25;1106 1164 11B0; # (먥; 먥; 먥; 먥; 먥; ) HANGUL SYLLABLE MYAELG
+BA26;BA26;1106 1164 11B1;BA26;1106 1164 11B1; # (먦; 먦; 먦; 먦; 먦; ) HANGUL SYLLABLE MYAELM
+BA27;BA27;1106 1164 11B2;BA27;1106 1164 11B2; # (먧; 먧; 먧; 먧; 먧; ) HANGUL SYLLABLE MYAELB
+BA28;BA28;1106 1164 11B3;BA28;1106 1164 11B3; # (먨; 먨; 먨; 먨; 먨; ) HANGUL SYLLABLE MYAELS
+BA29;BA29;1106 1164 11B4;BA29;1106 1164 11B4; # (먩; 먩; 먩; 먩; 먩; ) HANGUL SYLLABLE MYAELT
+BA2A;BA2A;1106 1164 11B5;BA2A;1106 1164 11B5; # (먪; 먪; 먪; 먪; 먪; ) HANGUL SYLLABLE MYAELP
+BA2B;BA2B;1106 1164 11B6;BA2B;1106 1164 11B6; # (먫; 먫; 먫; 먫; 먫; ) HANGUL SYLLABLE MYAELH
+BA2C;BA2C;1106 1164 11B7;BA2C;1106 1164 11B7; # (먬; 먬; 먬; 먬; 먬; ) HANGUL SYLLABLE MYAEM
+BA2D;BA2D;1106 1164 11B8;BA2D;1106 1164 11B8; # (먭; 먭; 먭; 먭; 먭; ) HANGUL SYLLABLE MYAEB
+BA2E;BA2E;1106 1164 11B9;BA2E;1106 1164 11B9; # (먮; 먮; 먮; 먮; 먮; ) HANGUL SYLLABLE MYAEBS
+BA2F;BA2F;1106 1164 11BA;BA2F;1106 1164 11BA; # (먯; 먯; 먯; 먯; 먯; ) HANGUL SYLLABLE MYAES
+BA30;BA30;1106 1164 11BB;BA30;1106 1164 11BB; # (먰; 먰; 먰; 먰; 먰; ) HANGUL SYLLABLE MYAESS
+BA31;BA31;1106 1164 11BC;BA31;1106 1164 11BC; # (먱; 먱; 먱; 먱; 먱; ) HANGUL SYLLABLE MYAENG
+BA32;BA32;1106 1164 11BD;BA32;1106 1164 11BD; # (먲; 먲; 먲; 먲; 먲; ) HANGUL SYLLABLE MYAEJ
+BA33;BA33;1106 1164 11BE;BA33;1106 1164 11BE; # (먳; 먳; 먳; 먳; 먳; ) HANGUL SYLLABLE MYAEC
+BA34;BA34;1106 1164 11BF;BA34;1106 1164 11BF; # (먴; 먴; 먴; 먴; 먴; ) HANGUL SYLLABLE MYAEK
+BA35;BA35;1106 1164 11C0;BA35;1106 1164 11C0; # (먵; 먵; 먵; 먵; 먵; ) HANGUL SYLLABLE MYAET
+BA36;BA36;1106 1164 11C1;BA36;1106 1164 11C1; # (먶; 먶; 먜á‡; 먶; 먜á‡; ) HANGUL SYLLABLE MYAEP
+BA37;BA37;1106 1164 11C2;BA37;1106 1164 11C2; # (먷; 먷; 먷; 먷; 먷; ) HANGUL SYLLABLE MYAEH
+BA38;BA38;1106 1165;BA38;1106 1165; # (머; 머; 머; 머; 머; ) HANGUL SYLLABLE MEO
+BA39;BA39;1106 1165 11A8;BA39;1106 1165 11A8; # (먹; 먹; 먹; 먹; 먹; ) HANGUL SYLLABLE MEOG
+BA3A;BA3A;1106 1165 11A9;BA3A;1106 1165 11A9; # (먺; 먺; 먺; 먺; 먺; ) HANGUL SYLLABLE MEOGG
+BA3B;BA3B;1106 1165 11AA;BA3B;1106 1165 11AA; # (먻; 먻; 먻; 먻; 먻; ) HANGUL SYLLABLE MEOGS
+BA3C;BA3C;1106 1165 11AB;BA3C;1106 1165 11AB; # (먼; 먼; 먼; 먼; 먼; ) HANGUL SYLLABLE MEON
+BA3D;BA3D;1106 1165 11AC;BA3D;1106 1165 11AC; # (먽; 먽; 먽; 먽; 먽; ) HANGUL SYLLABLE MEONJ
+BA3E;BA3E;1106 1165 11AD;BA3E;1106 1165 11AD; # (먾; 먾; 먾; 먾; 먾; ) HANGUL SYLLABLE MEONH
+BA3F;BA3F;1106 1165 11AE;BA3F;1106 1165 11AE; # (먿; 먿; 먿; 먿; 먿; ) HANGUL SYLLABLE MEOD
+BA40;BA40;1106 1165 11AF;BA40;1106 1165 11AF; # (멀; 멀; 멀; 멀; 멀; ) HANGUL SYLLABLE MEOL
+BA41;BA41;1106 1165 11B0;BA41;1106 1165 11B0; # (ë©; ë©; 멁; ë©; 멁; ) HANGUL SYLLABLE MEOLG
+BA42;BA42;1106 1165 11B1;BA42;1106 1165 11B1; # (멂; 멂; 멂; 멂; 멂; ) HANGUL SYLLABLE MEOLM
+BA43;BA43;1106 1165 11B2;BA43;1106 1165 11B2; # (멃; 멃; 멃; 멃; 멃; ) HANGUL SYLLABLE MEOLB
+BA44;BA44;1106 1165 11B3;BA44;1106 1165 11B3; # (멄; 멄; 멄; 멄; 멄; ) HANGUL SYLLABLE MEOLS
+BA45;BA45;1106 1165 11B4;BA45;1106 1165 11B4; # (멅; 멅; 멅; 멅; 멅; ) HANGUL SYLLABLE MEOLT
+BA46;BA46;1106 1165 11B5;BA46;1106 1165 11B5; # (멆; 멆; 멆; 멆; 멆; ) HANGUL SYLLABLE MEOLP
+BA47;BA47;1106 1165 11B6;BA47;1106 1165 11B6; # (멇; 멇; 멇; 멇; 멇; ) HANGUL SYLLABLE MEOLH
+BA48;BA48;1106 1165 11B7;BA48;1106 1165 11B7; # (멈; 멈; 멈; 멈; 멈; ) HANGUL SYLLABLE MEOM
+BA49;BA49;1106 1165 11B8;BA49;1106 1165 11B8; # (멉; 멉; 멉; 멉; 멉; ) HANGUL SYLLABLE MEOB
+BA4A;BA4A;1106 1165 11B9;BA4A;1106 1165 11B9; # (멊; 멊; 멊; 멊; 멊; ) HANGUL SYLLABLE MEOBS
+BA4B;BA4B;1106 1165 11BA;BA4B;1106 1165 11BA; # (멋; 멋; 멋; 멋; 멋; ) HANGUL SYLLABLE MEOS
+BA4C;BA4C;1106 1165 11BB;BA4C;1106 1165 11BB; # (멌; 멌; 멌; 멌; 멌; ) HANGUL SYLLABLE MEOSS
+BA4D;BA4D;1106 1165 11BC;BA4D;1106 1165 11BC; # (ë©; ë©; 멍; ë©; 멍; ) HANGUL SYLLABLE MEONG
+BA4E;BA4E;1106 1165 11BD;BA4E;1106 1165 11BD; # (멎; 멎; 멎; 멎; 멎; ) HANGUL SYLLABLE MEOJ
+BA4F;BA4F;1106 1165 11BE;BA4F;1106 1165 11BE; # (ë©; ë©; 멏; ë©; 멏; ) HANGUL SYLLABLE MEOC
+BA50;BA50;1106 1165 11BF;BA50;1106 1165 11BF; # (ë©; ë©; 멐; ë©; 멐; ) HANGUL SYLLABLE MEOK
+BA51;BA51;1106 1165 11C0;BA51;1106 1165 11C0; # (멑; 멑; 멑; 멑; 멑; ) HANGUL SYLLABLE MEOT
+BA52;BA52;1106 1165 11C1;BA52;1106 1165 11C1; # (ë©’; ë©’; 머á‡; ë©’; 머á‡; ) HANGUL SYLLABLE MEOP
+BA53;BA53;1106 1165 11C2;BA53;1106 1165 11C2; # (멓; 멓; 멓; 멓; 멓; ) HANGUL SYLLABLE MEOH
+BA54;BA54;1106 1166;BA54;1106 1166; # (메; 메; 메; 메; 메; ) HANGUL SYLLABLE ME
+BA55;BA55;1106 1166 11A8;BA55;1106 1166 11A8; # (멕; 멕; 멕; 멕; 멕; ) HANGUL SYLLABLE MEG
+BA56;BA56;1106 1166 11A9;BA56;1106 1166 11A9; # (멖; 멖; 멖; 멖; 멖; ) HANGUL SYLLABLE MEGG
+BA57;BA57;1106 1166 11AA;BA57;1106 1166 11AA; # (멗; 멗; 멗; 멗; 멗; ) HANGUL SYLLABLE MEGS
+BA58;BA58;1106 1166 11AB;BA58;1106 1166 11AB; # (멘; 멘; 멘; 멘; 멘; ) HANGUL SYLLABLE MEN
+BA59;BA59;1106 1166 11AC;BA59;1106 1166 11AC; # (멙; 멙; 멙; 멙; 멙; ) HANGUL SYLLABLE MENJ
+BA5A;BA5A;1106 1166 11AD;BA5A;1106 1166 11AD; # (멚; 멚; 멚; 멚; 멚; ) HANGUL SYLLABLE MENH
+BA5B;BA5B;1106 1166 11AE;BA5B;1106 1166 11AE; # (멛; 멛; 멛; 멛; 멛; ) HANGUL SYLLABLE MED
+BA5C;BA5C;1106 1166 11AF;BA5C;1106 1166 11AF; # (멜; 멜; 멜; 멜; 멜; ) HANGUL SYLLABLE MEL
+BA5D;BA5D;1106 1166 11B0;BA5D;1106 1166 11B0; # (ë©; ë©; 멝; ë©; 멝; ) HANGUL SYLLABLE MELG
+BA5E;BA5E;1106 1166 11B1;BA5E;1106 1166 11B1; # (멞; 멞; 멞; 멞; 멞; ) HANGUL SYLLABLE MELM
+BA5F;BA5F;1106 1166 11B2;BA5F;1106 1166 11B2; # (멟; 멟; 멟; 멟; 멟; ) HANGUL SYLLABLE MELB
+BA60;BA60;1106 1166 11B3;BA60;1106 1166 11B3; # (멠; 멠; 멠; 멠; 멠; ) HANGUL SYLLABLE MELS
+BA61;BA61;1106 1166 11B4;BA61;1106 1166 11B4; # (멡; 멡; 멡; 멡; 멡; ) HANGUL SYLLABLE MELT
+BA62;BA62;1106 1166 11B5;BA62;1106 1166 11B5; # (멢; 멢; 멢; 멢; 멢; ) HANGUL SYLLABLE MELP
+BA63;BA63;1106 1166 11B6;BA63;1106 1166 11B6; # (멣; 멣; 멣; 멣; 멣; ) HANGUL SYLLABLE MELH
+BA64;BA64;1106 1166 11B7;BA64;1106 1166 11B7; # (멤; 멤; 멤; 멤; 멤; ) HANGUL SYLLABLE MEM
+BA65;BA65;1106 1166 11B8;BA65;1106 1166 11B8; # (멥; 멥; 멥; 멥; 멥; ) HANGUL SYLLABLE MEB
+BA66;BA66;1106 1166 11B9;BA66;1106 1166 11B9; # (멦; 멦; 멦; 멦; 멦; ) HANGUL SYLLABLE MEBS
+BA67;BA67;1106 1166 11BA;BA67;1106 1166 11BA; # (멧; 멧; 멧; 멧; 멧; ) HANGUL SYLLABLE MES
+BA68;BA68;1106 1166 11BB;BA68;1106 1166 11BB; # (멨; 멨; 멨; 멨; 멨; ) HANGUL SYLLABLE MESS
+BA69;BA69;1106 1166 11BC;BA69;1106 1166 11BC; # (멩; 멩; 멩; 멩; 멩; ) HANGUL SYLLABLE MENG
+BA6A;BA6A;1106 1166 11BD;BA6A;1106 1166 11BD; # (멪; 멪; 멪; 멪; 멪; ) HANGUL SYLLABLE MEJ
+BA6B;BA6B;1106 1166 11BE;BA6B;1106 1166 11BE; # (멫; 멫; 멫; 멫; 멫; ) HANGUL SYLLABLE MEC
+BA6C;BA6C;1106 1166 11BF;BA6C;1106 1166 11BF; # (멬; 멬; 멬; 멬; 멬; ) HANGUL SYLLABLE MEK
+BA6D;BA6D;1106 1166 11C0;BA6D;1106 1166 11C0; # (멭; 멭; 멭; 멭; 멭; ) HANGUL SYLLABLE MET
+BA6E;BA6E;1106 1166 11C1;BA6E;1106 1166 11C1; # (ë©®; ë©®; 메á‡; ë©®; 메á‡; ) HANGUL SYLLABLE MEP
+BA6F;BA6F;1106 1166 11C2;BA6F;1106 1166 11C2; # (멯; 멯; 멯; 멯; 멯; ) HANGUL SYLLABLE MEH
+BA70;BA70;1106 1167;BA70;1106 1167; # (며; 며; 며; 며; 며; ) HANGUL SYLLABLE MYEO
+BA71;BA71;1106 1167 11A8;BA71;1106 1167 11A8; # (멱; 멱; 멱; 멱; 멱; ) HANGUL SYLLABLE MYEOG
+BA72;BA72;1106 1167 11A9;BA72;1106 1167 11A9; # (멲; 멲; 멲; 멲; 멲; ) HANGUL SYLLABLE MYEOGG
+BA73;BA73;1106 1167 11AA;BA73;1106 1167 11AA; # (멳; 멳; 멳; 멳; 멳; ) HANGUL SYLLABLE MYEOGS
+BA74;BA74;1106 1167 11AB;BA74;1106 1167 11AB; # (면; 면; 면; 면; 면; ) HANGUL SYLLABLE MYEON
+BA75;BA75;1106 1167 11AC;BA75;1106 1167 11AC; # (멵; 멵; 멵; 멵; 멵; ) HANGUL SYLLABLE MYEONJ
+BA76;BA76;1106 1167 11AD;BA76;1106 1167 11AD; # (멶; 멶; 멶; 멶; 멶; ) HANGUL SYLLABLE MYEONH
+BA77;BA77;1106 1167 11AE;BA77;1106 1167 11AE; # (멷; 멷; 멷; 멷; 멷; ) HANGUL SYLLABLE MYEOD
+BA78;BA78;1106 1167 11AF;BA78;1106 1167 11AF; # (멸; 멸; 멸; 멸; 멸; ) HANGUL SYLLABLE MYEOL
+BA79;BA79;1106 1167 11B0;BA79;1106 1167 11B0; # (멹; 멹; 멹; 멹; 멹; ) HANGUL SYLLABLE MYEOLG
+BA7A;BA7A;1106 1167 11B1;BA7A;1106 1167 11B1; # (멺; 멺; 멺; 멺; 멺; ) HANGUL SYLLABLE MYEOLM
+BA7B;BA7B;1106 1167 11B2;BA7B;1106 1167 11B2; # (멻; 멻; 멻; 멻; 멻; ) HANGUL SYLLABLE MYEOLB
+BA7C;BA7C;1106 1167 11B3;BA7C;1106 1167 11B3; # (멼; 멼; 멼; 멼; 멼; ) HANGUL SYLLABLE MYEOLS
+BA7D;BA7D;1106 1167 11B4;BA7D;1106 1167 11B4; # (멽; 멽; 멽; 멽; 멽; ) HANGUL SYLLABLE MYEOLT
+BA7E;BA7E;1106 1167 11B5;BA7E;1106 1167 11B5; # (멾; 멾; 멾; 멾; 멾; ) HANGUL SYLLABLE MYEOLP
+BA7F;BA7F;1106 1167 11B6;BA7F;1106 1167 11B6; # (멿; 멿; 멿; 멿; 멿; ) HANGUL SYLLABLE MYEOLH
+BA80;BA80;1106 1167 11B7;BA80;1106 1167 11B7; # (몀; 몀; 몀; 몀; 몀; ) HANGUL SYLLABLE MYEOM
+BA81;BA81;1106 1167 11B8;BA81;1106 1167 11B8; # (ëª; ëª; 몁; ëª; 몁; ) HANGUL SYLLABLE MYEOB
+BA82;BA82;1106 1167 11B9;BA82;1106 1167 11B9; # (몂; 몂; 몂; 몂; 몂; ) HANGUL SYLLABLE MYEOBS
+BA83;BA83;1106 1167 11BA;BA83;1106 1167 11BA; # (몃; 몃; 몃; 몃; 몃; ) HANGUL SYLLABLE MYEOS
+BA84;BA84;1106 1167 11BB;BA84;1106 1167 11BB; # (몄; 몄; 몄; 몄; 몄; ) HANGUL SYLLABLE MYEOSS
+BA85;BA85;1106 1167 11BC;BA85;1106 1167 11BC; # (명; 명; 명; 명; 명; ) HANGUL SYLLABLE MYEONG
+BA86;BA86;1106 1167 11BD;BA86;1106 1167 11BD; # (몆; 몆; 몆; 몆; 몆; ) HANGUL SYLLABLE MYEOJ
+BA87;BA87;1106 1167 11BE;BA87;1106 1167 11BE; # (몇; 몇; 몇; 몇; 몇; ) HANGUL SYLLABLE MYEOC
+BA88;BA88;1106 1167 11BF;BA88;1106 1167 11BF; # (몈; 몈; 몈; 몈; 몈; ) HANGUL SYLLABLE MYEOK
+BA89;BA89;1106 1167 11C0;BA89;1106 1167 11C0; # (몉; 몉; 몉; 몉; 몉; ) HANGUL SYLLABLE MYEOT
+BA8A;BA8A;1106 1167 11C1;BA8A;1106 1167 11C1; # (몊; 몊; 며á‡; 몊; 며á‡; ) HANGUL SYLLABLE MYEOP
+BA8B;BA8B;1106 1167 11C2;BA8B;1106 1167 11C2; # (몋; 몋; 몋; 몋; 몋; ) HANGUL SYLLABLE MYEOH
+BA8C;BA8C;1106 1168;BA8C;1106 1168; # (몌; 몌; 몌; 몌; 몌; ) HANGUL SYLLABLE MYE
+BA8D;BA8D;1106 1168 11A8;BA8D;1106 1168 11A8; # (ëª; ëª; 몍; ëª; 몍; ) HANGUL SYLLABLE MYEG
+BA8E;BA8E;1106 1168 11A9;BA8E;1106 1168 11A9; # (몎; 몎; 몎; 몎; 몎; ) HANGUL SYLLABLE MYEGG
+BA8F;BA8F;1106 1168 11AA;BA8F;1106 1168 11AA; # (ëª; ëª; 몏; ëª; 몏; ) HANGUL SYLLABLE MYEGS
+BA90;BA90;1106 1168 11AB;BA90;1106 1168 11AB; # (ëª; ëª; 몐; ëª; 몐; ) HANGUL SYLLABLE MYEN
+BA91;BA91;1106 1168 11AC;BA91;1106 1168 11AC; # (몑; 몑; 몑; 몑; 몑; ) HANGUL SYLLABLE MYENJ
+BA92;BA92;1106 1168 11AD;BA92;1106 1168 11AD; # (몒; 몒; 몒; 몒; 몒; ) HANGUL SYLLABLE MYENH
+BA93;BA93;1106 1168 11AE;BA93;1106 1168 11AE; # (몓; 몓; 몓; 몓; 몓; ) HANGUL SYLLABLE MYED
+BA94;BA94;1106 1168 11AF;BA94;1106 1168 11AF; # (몔; 몔; 몔; 몔; 몔; ) HANGUL SYLLABLE MYEL
+BA95;BA95;1106 1168 11B0;BA95;1106 1168 11B0; # (몕; 몕; 몕; 몕; 몕; ) HANGUL SYLLABLE MYELG
+BA96;BA96;1106 1168 11B1;BA96;1106 1168 11B1; # (몖; 몖; 몖; 몖; 몖; ) HANGUL SYLLABLE MYELM
+BA97;BA97;1106 1168 11B2;BA97;1106 1168 11B2; # (몗; 몗; 몗; 몗; 몗; ) HANGUL SYLLABLE MYELB
+BA98;BA98;1106 1168 11B3;BA98;1106 1168 11B3; # (몘; 몘; 몘; 몘; 몘; ) HANGUL SYLLABLE MYELS
+BA99;BA99;1106 1168 11B4;BA99;1106 1168 11B4; # (몙; 몙; 몙; 몙; 몙; ) HANGUL SYLLABLE MYELT
+BA9A;BA9A;1106 1168 11B5;BA9A;1106 1168 11B5; # (몚; 몚; 몚; 몚; 몚; ) HANGUL SYLLABLE MYELP
+BA9B;BA9B;1106 1168 11B6;BA9B;1106 1168 11B6; # (몛; 몛; 몛; 몛; 몛; ) HANGUL SYLLABLE MYELH
+BA9C;BA9C;1106 1168 11B7;BA9C;1106 1168 11B7; # (몜; 몜; 몜; 몜; 몜; ) HANGUL SYLLABLE MYEM
+BA9D;BA9D;1106 1168 11B8;BA9D;1106 1168 11B8; # (ëª; ëª; 몝; ëª; 몝; ) HANGUL SYLLABLE MYEB
+BA9E;BA9E;1106 1168 11B9;BA9E;1106 1168 11B9; # (몞; 몞; 몞; 몞; 몞; ) HANGUL SYLLABLE MYEBS
+BA9F;BA9F;1106 1168 11BA;BA9F;1106 1168 11BA; # (몟; 몟; 몟; 몟; 몟; ) HANGUL SYLLABLE MYES
+BAA0;BAA0;1106 1168 11BB;BAA0;1106 1168 11BB; # (몠; 몠; 몠; 몠; 몠; ) HANGUL SYLLABLE MYESS
+BAA1;BAA1;1106 1168 11BC;BAA1;1106 1168 11BC; # (몡; 몡; 몡; 몡; 몡; ) HANGUL SYLLABLE MYENG
+BAA2;BAA2;1106 1168 11BD;BAA2;1106 1168 11BD; # (몢; 몢; 몢; 몢; 몢; ) HANGUL SYLLABLE MYEJ
+BAA3;BAA3;1106 1168 11BE;BAA3;1106 1168 11BE; # (몣; 몣; 몣; 몣; 몣; ) HANGUL SYLLABLE MYEC
+BAA4;BAA4;1106 1168 11BF;BAA4;1106 1168 11BF; # (몤; 몤; 몤; 몤; 몤; ) HANGUL SYLLABLE MYEK
+BAA5;BAA5;1106 1168 11C0;BAA5;1106 1168 11C0; # (몥; 몥; 몥; 몥; 몥; ) HANGUL SYLLABLE MYET
+BAA6;BAA6;1106 1168 11C1;BAA6;1106 1168 11C1; # (몦; 몦; 몌á‡; 몦; 몌á‡; ) HANGUL SYLLABLE MYEP
+BAA7;BAA7;1106 1168 11C2;BAA7;1106 1168 11C2; # (몧; 몧; 몧; 몧; 몧; ) HANGUL SYLLABLE MYEH
+BAA8;BAA8;1106 1169;BAA8;1106 1169; # (모; 모; 모; 모; 모; ) HANGUL SYLLABLE MO
+BAA9;BAA9;1106 1169 11A8;BAA9;1106 1169 11A8; # (목; 목; 목; 목; 목; ) HANGUL SYLLABLE MOG
+BAAA;BAAA;1106 1169 11A9;BAAA;1106 1169 11A9; # (몪; 몪; 몪; 몪; 몪; ) HANGUL SYLLABLE MOGG
+BAAB;BAAB;1106 1169 11AA;BAAB;1106 1169 11AA; # (몫; 몫; 몫; 몫; 몫; ) HANGUL SYLLABLE MOGS
+BAAC;BAAC;1106 1169 11AB;BAAC;1106 1169 11AB; # (몬; 몬; 몬; 몬; 몬; ) HANGUL SYLLABLE MON
+BAAD;BAAD;1106 1169 11AC;BAAD;1106 1169 11AC; # (몭; 몭; 몭; 몭; 몭; ) HANGUL SYLLABLE MONJ
+BAAE;BAAE;1106 1169 11AD;BAAE;1106 1169 11AD; # (몮; 몮; 몮; 몮; 몮; ) HANGUL SYLLABLE MONH
+BAAF;BAAF;1106 1169 11AE;BAAF;1106 1169 11AE; # (몯; 몯; 몯; 몯; 몯; ) HANGUL SYLLABLE MOD
+BAB0;BAB0;1106 1169 11AF;BAB0;1106 1169 11AF; # (몰; 몰; 몰; 몰; 몰; ) HANGUL SYLLABLE MOL
+BAB1;BAB1;1106 1169 11B0;BAB1;1106 1169 11B0; # (몱; 몱; 몱; 몱; 몱; ) HANGUL SYLLABLE MOLG
+BAB2;BAB2;1106 1169 11B1;BAB2;1106 1169 11B1; # (몲; 몲; 몲; 몲; 몲; ) HANGUL SYLLABLE MOLM
+BAB3;BAB3;1106 1169 11B2;BAB3;1106 1169 11B2; # (몳; 몳; 몳; 몳; 몳; ) HANGUL SYLLABLE MOLB
+BAB4;BAB4;1106 1169 11B3;BAB4;1106 1169 11B3; # (몴; 몴; 몴; 몴; 몴; ) HANGUL SYLLABLE MOLS
+BAB5;BAB5;1106 1169 11B4;BAB5;1106 1169 11B4; # (몵; 몵; 몵; 몵; 몵; ) HANGUL SYLLABLE MOLT
+BAB6;BAB6;1106 1169 11B5;BAB6;1106 1169 11B5; # (몶; 몶; 몶; 몶; 몶; ) HANGUL SYLLABLE MOLP
+BAB7;BAB7;1106 1169 11B6;BAB7;1106 1169 11B6; # (몷; 몷; 몷; 몷; 몷; ) HANGUL SYLLABLE MOLH
+BAB8;BAB8;1106 1169 11B7;BAB8;1106 1169 11B7; # (몸; 몸; 몸; 몸; 몸; ) HANGUL SYLLABLE MOM
+BAB9;BAB9;1106 1169 11B8;BAB9;1106 1169 11B8; # (몹; 몹; 몹; 몹; 몹; ) HANGUL SYLLABLE MOB
+BABA;BABA;1106 1169 11B9;BABA;1106 1169 11B9; # (몺; 몺; 몺; 몺; 몺; ) HANGUL SYLLABLE MOBS
+BABB;BABB;1106 1169 11BA;BABB;1106 1169 11BA; # (못; 못; 못; 못; 못; ) HANGUL SYLLABLE MOS
+BABC;BABC;1106 1169 11BB;BABC;1106 1169 11BB; # (몼; 몼; 몼; 몼; 몼; ) HANGUL SYLLABLE MOSS
+BABD;BABD;1106 1169 11BC;BABD;1106 1169 11BC; # (몽; 몽; 몽; 몽; 몽; ) HANGUL SYLLABLE MONG
+BABE;BABE;1106 1169 11BD;BABE;1106 1169 11BD; # (몾; 몾; 몾; 몾; 몾; ) HANGUL SYLLABLE MOJ
+BABF;BABF;1106 1169 11BE;BABF;1106 1169 11BE; # (몿; 몿; 몿; 몿; 몿; ) HANGUL SYLLABLE MOC
+BAC0;BAC0;1106 1169 11BF;BAC0;1106 1169 11BF; # (뫀; 뫀; 뫀; 뫀; 뫀; ) HANGUL SYLLABLE MOK
+BAC1;BAC1;1106 1169 11C0;BAC1;1106 1169 11C0; # (ë«; ë«; 뫁; ë«; 뫁; ) HANGUL SYLLABLE MOT
+BAC2;BAC2;1106 1169 11C1;BAC2;1106 1169 11C1; # (ë«‚; ë«‚; 모á‡; ë«‚; 모á‡; ) HANGUL SYLLABLE MOP
+BAC3;BAC3;1106 1169 11C2;BAC3;1106 1169 11C2; # (뫃; 뫃; 뫃; 뫃; 뫃; ) HANGUL SYLLABLE MOH
+BAC4;BAC4;1106 116A;BAC4;1106 116A; # (뫄; 뫄; 뫄; 뫄; 뫄; ) HANGUL SYLLABLE MWA
+BAC5;BAC5;1106 116A 11A8;BAC5;1106 116A 11A8; # (뫅; 뫅; 뫅; 뫅; 뫅; ) HANGUL SYLLABLE MWAG
+BAC6;BAC6;1106 116A 11A9;BAC6;1106 116A 11A9; # (뫆; 뫆; 뫆; 뫆; 뫆; ) HANGUL SYLLABLE MWAGG
+BAC7;BAC7;1106 116A 11AA;BAC7;1106 116A 11AA; # (뫇; 뫇; 뫇; 뫇; 뫇; ) HANGUL SYLLABLE MWAGS
+BAC8;BAC8;1106 116A 11AB;BAC8;1106 116A 11AB; # (뫈; 뫈; 뫈; 뫈; 뫈; ) HANGUL SYLLABLE MWAN
+BAC9;BAC9;1106 116A 11AC;BAC9;1106 116A 11AC; # (뫉; 뫉; 뫉; 뫉; 뫉; ) HANGUL SYLLABLE MWANJ
+BACA;BACA;1106 116A 11AD;BACA;1106 116A 11AD; # (뫊; 뫊; 뫊; 뫊; 뫊; ) HANGUL SYLLABLE MWANH
+BACB;BACB;1106 116A 11AE;BACB;1106 116A 11AE; # (뫋; 뫋; 뫋; 뫋; 뫋; ) HANGUL SYLLABLE MWAD
+BACC;BACC;1106 116A 11AF;BACC;1106 116A 11AF; # (뫌; 뫌; 뫌; 뫌; 뫌; ) HANGUL SYLLABLE MWAL
+BACD;BACD;1106 116A 11B0;BACD;1106 116A 11B0; # (ë«; ë«; 뫍; ë«; 뫍; ) HANGUL SYLLABLE MWALG
+BACE;BACE;1106 116A 11B1;BACE;1106 116A 11B1; # (뫎; 뫎; 뫎; 뫎; 뫎; ) HANGUL SYLLABLE MWALM
+BACF;BACF;1106 116A 11B2;BACF;1106 116A 11B2; # (ë«; ë«; 뫏; ë«; 뫏; ) HANGUL SYLLABLE MWALB
+BAD0;BAD0;1106 116A 11B3;BAD0;1106 116A 11B3; # (ë«; ë«; 뫐; ë«; 뫐; ) HANGUL SYLLABLE MWALS
+BAD1;BAD1;1106 116A 11B4;BAD1;1106 116A 11B4; # (뫑; 뫑; 뫑; 뫑; 뫑; ) HANGUL SYLLABLE MWALT
+BAD2;BAD2;1106 116A 11B5;BAD2;1106 116A 11B5; # (뫒; 뫒; 뫒; 뫒; 뫒; ) HANGUL SYLLABLE MWALP
+BAD3;BAD3;1106 116A 11B6;BAD3;1106 116A 11B6; # (뫓; 뫓; 뫓; 뫓; 뫓; ) HANGUL SYLLABLE MWALH
+BAD4;BAD4;1106 116A 11B7;BAD4;1106 116A 11B7; # (뫔; 뫔; 뫔; 뫔; 뫔; ) HANGUL SYLLABLE MWAM
+BAD5;BAD5;1106 116A 11B8;BAD5;1106 116A 11B8; # (뫕; 뫕; 뫕; 뫕; 뫕; ) HANGUL SYLLABLE MWAB
+BAD6;BAD6;1106 116A 11B9;BAD6;1106 116A 11B9; # (뫖; 뫖; 뫖; 뫖; 뫖; ) HANGUL SYLLABLE MWABS
+BAD7;BAD7;1106 116A 11BA;BAD7;1106 116A 11BA; # (뫗; 뫗; 뫗; 뫗; 뫗; ) HANGUL SYLLABLE MWAS
+BAD8;BAD8;1106 116A 11BB;BAD8;1106 116A 11BB; # (뫘; 뫘; 뫘; 뫘; 뫘; ) HANGUL SYLLABLE MWASS
+BAD9;BAD9;1106 116A 11BC;BAD9;1106 116A 11BC; # (뫙; 뫙; 뫙; 뫙; 뫙; ) HANGUL SYLLABLE MWANG
+BADA;BADA;1106 116A 11BD;BADA;1106 116A 11BD; # (뫚; 뫚; 뫚; 뫚; 뫚; ) HANGUL SYLLABLE MWAJ
+BADB;BADB;1106 116A 11BE;BADB;1106 116A 11BE; # (뫛; 뫛; 뫛; 뫛; 뫛; ) HANGUL SYLLABLE MWAC
+BADC;BADC;1106 116A 11BF;BADC;1106 116A 11BF; # (뫜; 뫜; 뫜; 뫜; 뫜; ) HANGUL SYLLABLE MWAK
+BADD;BADD;1106 116A 11C0;BADD;1106 116A 11C0; # (ë«; ë«; 뫝; ë«; 뫝; ) HANGUL SYLLABLE MWAT
+BADE;BADE;1106 116A 11C1;BADE;1106 116A 11C1; # (ë«ž; ë«ž; 뫄á‡; ë«ž; 뫄á‡; ) HANGUL SYLLABLE MWAP
+BADF;BADF;1106 116A 11C2;BADF;1106 116A 11C2; # (뫟; 뫟; 뫟; 뫟; 뫟; ) HANGUL SYLLABLE MWAH
+BAE0;BAE0;1106 116B;BAE0;1106 116B; # (뫠; 뫠; 뫠; 뫠; 뫠; ) HANGUL SYLLABLE MWAE
+BAE1;BAE1;1106 116B 11A8;BAE1;1106 116B 11A8; # (뫡; 뫡; 뫡; 뫡; 뫡; ) HANGUL SYLLABLE MWAEG
+BAE2;BAE2;1106 116B 11A9;BAE2;1106 116B 11A9; # (뫢; 뫢; 뫢; 뫢; 뫢; ) HANGUL SYLLABLE MWAEGG
+BAE3;BAE3;1106 116B 11AA;BAE3;1106 116B 11AA; # (뫣; 뫣; 뫣; 뫣; 뫣; ) HANGUL SYLLABLE MWAEGS
+BAE4;BAE4;1106 116B 11AB;BAE4;1106 116B 11AB; # (뫤; 뫤; 뫤; 뫤; 뫤; ) HANGUL SYLLABLE MWAEN
+BAE5;BAE5;1106 116B 11AC;BAE5;1106 116B 11AC; # (뫥; 뫥; 뫥; 뫥; 뫥; ) HANGUL SYLLABLE MWAENJ
+BAE6;BAE6;1106 116B 11AD;BAE6;1106 116B 11AD; # (뫦; 뫦; 뫦; 뫦; 뫦; ) HANGUL SYLLABLE MWAENH
+BAE7;BAE7;1106 116B 11AE;BAE7;1106 116B 11AE; # (뫧; 뫧; 뫧; 뫧; 뫧; ) HANGUL SYLLABLE MWAED
+BAE8;BAE8;1106 116B 11AF;BAE8;1106 116B 11AF; # (뫨; 뫨; 뫨; 뫨; 뫨; ) HANGUL SYLLABLE MWAEL
+BAE9;BAE9;1106 116B 11B0;BAE9;1106 116B 11B0; # (뫩; 뫩; 뫩; 뫩; 뫩; ) HANGUL SYLLABLE MWAELG
+BAEA;BAEA;1106 116B 11B1;BAEA;1106 116B 11B1; # (뫪; 뫪; 뫪; 뫪; 뫪; ) HANGUL SYLLABLE MWAELM
+BAEB;BAEB;1106 116B 11B2;BAEB;1106 116B 11B2; # (뫫; 뫫; 뫫; 뫫; 뫫; ) HANGUL SYLLABLE MWAELB
+BAEC;BAEC;1106 116B 11B3;BAEC;1106 116B 11B3; # (뫬; 뫬; 뫬; 뫬; 뫬; ) HANGUL SYLLABLE MWAELS
+BAED;BAED;1106 116B 11B4;BAED;1106 116B 11B4; # (뫭; 뫭; 뫭; 뫭; 뫭; ) HANGUL SYLLABLE MWAELT
+BAEE;BAEE;1106 116B 11B5;BAEE;1106 116B 11B5; # (뫮; 뫮; 뫮; 뫮; 뫮; ) HANGUL SYLLABLE MWAELP
+BAEF;BAEF;1106 116B 11B6;BAEF;1106 116B 11B6; # (뫯; 뫯; 뫯; 뫯; 뫯; ) HANGUL SYLLABLE MWAELH
+BAF0;BAF0;1106 116B 11B7;BAF0;1106 116B 11B7; # (뫰; 뫰; 뫰; 뫰; 뫰; ) HANGUL SYLLABLE MWAEM
+BAF1;BAF1;1106 116B 11B8;BAF1;1106 116B 11B8; # (뫱; 뫱; 뫱; 뫱; 뫱; ) HANGUL SYLLABLE MWAEB
+BAF2;BAF2;1106 116B 11B9;BAF2;1106 116B 11B9; # (뫲; 뫲; 뫲; 뫲; 뫲; ) HANGUL SYLLABLE MWAEBS
+BAF3;BAF3;1106 116B 11BA;BAF3;1106 116B 11BA; # (뫳; 뫳; 뫳; 뫳; 뫳; ) HANGUL SYLLABLE MWAES
+BAF4;BAF4;1106 116B 11BB;BAF4;1106 116B 11BB; # (뫴; 뫴; 뫴; 뫴; 뫴; ) HANGUL SYLLABLE MWAESS
+BAF5;BAF5;1106 116B 11BC;BAF5;1106 116B 11BC; # (뫵; 뫵; 뫵; 뫵; 뫵; ) HANGUL SYLLABLE MWAENG
+BAF6;BAF6;1106 116B 11BD;BAF6;1106 116B 11BD; # (뫶; 뫶; 뫶; 뫶; 뫶; ) HANGUL SYLLABLE MWAEJ
+BAF7;BAF7;1106 116B 11BE;BAF7;1106 116B 11BE; # (뫷; 뫷; 뫷; 뫷; 뫷; ) HANGUL SYLLABLE MWAEC
+BAF8;BAF8;1106 116B 11BF;BAF8;1106 116B 11BF; # (뫸; 뫸; 뫸; 뫸; 뫸; ) HANGUL SYLLABLE MWAEK
+BAF9;BAF9;1106 116B 11C0;BAF9;1106 116B 11C0; # (뫹; 뫹; 뫹; 뫹; 뫹; ) HANGUL SYLLABLE MWAET
+BAFA;BAFA;1106 116B 11C1;BAFA;1106 116B 11C1; # (뫺; 뫺; 뫠á‡; 뫺; 뫠á‡; ) HANGUL SYLLABLE MWAEP
+BAFB;BAFB;1106 116B 11C2;BAFB;1106 116B 11C2; # (뫻; 뫻; 뫻; 뫻; 뫻; ) HANGUL SYLLABLE MWAEH
+BAFC;BAFC;1106 116C;BAFC;1106 116C; # (뫼; 뫼; 뫼; 뫼; 뫼; ) HANGUL SYLLABLE MOE
+BAFD;BAFD;1106 116C 11A8;BAFD;1106 116C 11A8; # (뫽; 뫽; 뫽; 뫽; 뫽; ) HANGUL SYLLABLE MOEG
+BAFE;BAFE;1106 116C 11A9;BAFE;1106 116C 11A9; # (뫾; 뫾; 뫾; 뫾; 뫾; ) HANGUL SYLLABLE MOEGG
+BAFF;BAFF;1106 116C 11AA;BAFF;1106 116C 11AA; # (뫿; 뫿; 뫿; 뫿; 뫿; ) HANGUL SYLLABLE MOEGS
+BB00;BB00;1106 116C 11AB;BB00;1106 116C 11AB; # (묀; 묀; 묀; 묀; 묀; ) HANGUL SYLLABLE MOEN
+BB01;BB01;1106 116C 11AC;BB01;1106 116C 11AC; # (ë¬; ë¬; 묁; ë¬; 묁; ) HANGUL SYLLABLE MOENJ
+BB02;BB02;1106 116C 11AD;BB02;1106 116C 11AD; # (묂; 묂; 묂; 묂; 묂; ) HANGUL SYLLABLE MOENH
+BB03;BB03;1106 116C 11AE;BB03;1106 116C 11AE; # (묃; 묃; 묃; 묃; 묃; ) HANGUL SYLLABLE MOED
+BB04;BB04;1106 116C 11AF;BB04;1106 116C 11AF; # (묄; 묄; 묄; 묄; 묄; ) HANGUL SYLLABLE MOEL
+BB05;BB05;1106 116C 11B0;BB05;1106 116C 11B0; # (묅; 묅; 묅; 묅; 묅; ) HANGUL SYLLABLE MOELG
+BB06;BB06;1106 116C 11B1;BB06;1106 116C 11B1; # (묆; 묆; 묆; 묆; 묆; ) HANGUL SYLLABLE MOELM
+BB07;BB07;1106 116C 11B2;BB07;1106 116C 11B2; # (묇; 묇; 묇; 묇; 묇; ) HANGUL SYLLABLE MOELB
+BB08;BB08;1106 116C 11B3;BB08;1106 116C 11B3; # (묈; 묈; 묈; 묈; 묈; ) HANGUL SYLLABLE MOELS
+BB09;BB09;1106 116C 11B4;BB09;1106 116C 11B4; # (묉; 묉; 묉; 묉; 묉; ) HANGUL SYLLABLE MOELT
+BB0A;BB0A;1106 116C 11B5;BB0A;1106 116C 11B5; # (묊; 묊; 묊; 묊; 묊; ) HANGUL SYLLABLE MOELP
+BB0B;BB0B;1106 116C 11B6;BB0B;1106 116C 11B6; # (묋; 묋; 묋; 묋; 묋; ) HANGUL SYLLABLE MOELH
+BB0C;BB0C;1106 116C 11B7;BB0C;1106 116C 11B7; # (묌; 묌; 묌; 묌; 묌; ) HANGUL SYLLABLE MOEM
+BB0D;BB0D;1106 116C 11B8;BB0D;1106 116C 11B8; # (ë¬; ë¬; 묍; ë¬; 묍; ) HANGUL SYLLABLE MOEB
+BB0E;BB0E;1106 116C 11B9;BB0E;1106 116C 11B9; # (묎; 묎; 묎; 묎; 묎; ) HANGUL SYLLABLE MOEBS
+BB0F;BB0F;1106 116C 11BA;BB0F;1106 116C 11BA; # (ë¬; ë¬; 묏; ë¬; 묏; ) HANGUL SYLLABLE MOES
+BB10;BB10;1106 116C 11BB;BB10;1106 116C 11BB; # (ë¬; ë¬; 묐; ë¬; 묐; ) HANGUL SYLLABLE MOESS
+BB11;BB11;1106 116C 11BC;BB11;1106 116C 11BC; # (묑; 묑; 묑; 묑; 묑; ) HANGUL SYLLABLE MOENG
+BB12;BB12;1106 116C 11BD;BB12;1106 116C 11BD; # (묒; 묒; 묒; 묒; 묒; ) HANGUL SYLLABLE MOEJ
+BB13;BB13;1106 116C 11BE;BB13;1106 116C 11BE; # (묓; 묓; 묓; 묓; 묓; ) HANGUL SYLLABLE MOEC
+BB14;BB14;1106 116C 11BF;BB14;1106 116C 11BF; # (묔; 묔; 묔; 묔; 묔; ) HANGUL SYLLABLE MOEK
+BB15;BB15;1106 116C 11C0;BB15;1106 116C 11C0; # (묕; 묕; 묕; 묕; 묕; ) HANGUL SYLLABLE MOET
+BB16;BB16;1106 116C 11C1;BB16;1106 116C 11C1; # (묖; 묖; 뫼á‡; 묖; 뫼á‡; ) HANGUL SYLLABLE MOEP
+BB17;BB17;1106 116C 11C2;BB17;1106 116C 11C2; # (묗; 묗; 묗; 묗; 묗; ) HANGUL SYLLABLE MOEH
+BB18;BB18;1106 116D;BB18;1106 116D; # (묘; 묘; 묘; 묘; 묘; ) HANGUL SYLLABLE MYO
+BB19;BB19;1106 116D 11A8;BB19;1106 116D 11A8; # (묙; 묙; 묙; 묙; 묙; ) HANGUL SYLLABLE MYOG
+BB1A;BB1A;1106 116D 11A9;BB1A;1106 116D 11A9; # (묚; 묚; 묚; 묚; 묚; ) HANGUL SYLLABLE MYOGG
+BB1B;BB1B;1106 116D 11AA;BB1B;1106 116D 11AA; # (묛; 묛; 묛; 묛; 묛; ) HANGUL SYLLABLE MYOGS
+BB1C;BB1C;1106 116D 11AB;BB1C;1106 116D 11AB; # (묜; 묜; 묜; 묜; 묜; ) HANGUL SYLLABLE MYON
+BB1D;BB1D;1106 116D 11AC;BB1D;1106 116D 11AC; # (ë¬; ë¬; 묝; ë¬; 묝; ) HANGUL SYLLABLE MYONJ
+BB1E;BB1E;1106 116D 11AD;BB1E;1106 116D 11AD; # (묞; 묞; 묞; 묞; 묞; ) HANGUL SYLLABLE MYONH
+BB1F;BB1F;1106 116D 11AE;BB1F;1106 116D 11AE; # (묟; 묟; 묟; 묟; 묟; ) HANGUL SYLLABLE MYOD
+BB20;BB20;1106 116D 11AF;BB20;1106 116D 11AF; # (묠; 묠; 묠; 묠; 묠; ) HANGUL SYLLABLE MYOL
+BB21;BB21;1106 116D 11B0;BB21;1106 116D 11B0; # (묡; 묡; 묡; 묡; 묡; ) HANGUL SYLLABLE MYOLG
+BB22;BB22;1106 116D 11B1;BB22;1106 116D 11B1; # (묢; 묢; 묢; 묢; 묢; ) HANGUL SYLLABLE MYOLM
+BB23;BB23;1106 116D 11B2;BB23;1106 116D 11B2; # (묣; 묣; 묣; 묣; 묣; ) HANGUL SYLLABLE MYOLB
+BB24;BB24;1106 116D 11B3;BB24;1106 116D 11B3; # (묤; 묤; 묤; 묤; 묤; ) HANGUL SYLLABLE MYOLS
+BB25;BB25;1106 116D 11B4;BB25;1106 116D 11B4; # (묥; 묥; 묥; 묥; 묥; ) HANGUL SYLLABLE MYOLT
+BB26;BB26;1106 116D 11B5;BB26;1106 116D 11B5; # (묦; 묦; 묦; 묦; 묦; ) HANGUL SYLLABLE MYOLP
+BB27;BB27;1106 116D 11B6;BB27;1106 116D 11B6; # (묧; 묧; 묧; 묧; 묧; ) HANGUL SYLLABLE MYOLH
+BB28;BB28;1106 116D 11B7;BB28;1106 116D 11B7; # (묨; 묨; 묨; 묨; 묨; ) HANGUL SYLLABLE MYOM
+BB29;BB29;1106 116D 11B8;BB29;1106 116D 11B8; # (묩; 묩; 묩; 묩; 묩; ) HANGUL SYLLABLE MYOB
+BB2A;BB2A;1106 116D 11B9;BB2A;1106 116D 11B9; # (묪; 묪; 묪; 묪; 묪; ) HANGUL SYLLABLE MYOBS
+BB2B;BB2B;1106 116D 11BA;BB2B;1106 116D 11BA; # (묫; 묫; 묫; 묫; 묫; ) HANGUL SYLLABLE MYOS
+BB2C;BB2C;1106 116D 11BB;BB2C;1106 116D 11BB; # (묬; 묬; 묬; 묬; 묬; ) HANGUL SYLLABLE MYOSS
+BB2D;BB2D;1106 116D 11BC;BB2D;1106 116D 11BC; # (묭; 묭; 묭; 묭; 묭; ) HANGUL SYLLABLE MYONG
+BB2E;BB2E;1106 116D 11BD;BB2E;1106 116D 11BD; # (묮; 묮; 묮; 묮; 묮; ) HANGUL SYLLABLE MYOJ
+BB2F;BB2F;1106 116D 11BE;BB2F;1106 116D 11BE; # (묯; 묯; 묯; 묯; 묯; ) HANGUL SYLLABLE MYOC
+BB30;BB30;1106 116D 11BF;BB30;1106 116D 11BF; # (묰; 묰; 묰; 묰; 묰; ) HANGUL SYLLABLE MYOK
+BB31;BB31;1106 116D 11C0;BB31;1106 116D 11C0; # (묱; 묱; 묱; 묱; 묱; ) HANGUL SYLLABLE MYOT
+BB32;BB32;1106 116D 11C1;BB32;1106 116D 11C1; # (묲; 묲; 묘á‡; 묲; 묘á‡; ) HANGUL SYLLABLE MYOP
+BB33;BB33;1106 116D 11C2;BB33;1106 116D 11C2; # (묳; 묳; 묳; 묳; 묳; ) HANGUL SYLLABLE MYOH
+BB34;BB34;1106 116E;BB34;1106 116E; # (무; 무; 무; 무; 무; ) HANGUL SYLLABLE MU
+BB35;BB35;1106 116E 11A8;BB35;1106 116E 11A8; # (묵; 묵; 묵; 묵; 묵; ) HANGUL SYLLABLE MUG
+BB36;BB36;1106 116E 11A9;BB36;1106 116E 11A9; # (묶; 묶; 묶; 묶; 묶; ) HANGUL SYLLABLE MUGG
+BB37;BB37;1106 116E 11AA;BB37;1106 116E 11AA; # (묷; 묷; 묷; 묷; 묷; ) HANGUL SYLLABLE MUGS
+BB38;BB38;1106 116E 11AB;BB38;1106 116E 11AB; # (문; 문; 문; 문; 문; ) HANGUL SYLLABLE MUN
+BB39;BB39;1106 116E 11AC;BB39;1106 116E 11AC; # (묹; 묹; 묹; 묹; 묹; ) HANGUL SYLLABLE MUNJ
+BB3A;BB3A;1106 116E 11AD;BB3A;1106 116E 11AD; # (묺; 묺; 묺; 묺; 묺; ) HANGUL SYLLABLE MUNH
+BB3B;BB3B;1106 116E 11AE;BB3B;1106 116E 11AE; # (묻; 묻; 묻; 묻; 묻; ) HANGUL SYLLABLE MUD
+BB3C;BB3C;1106 116E 11AF;BB3C;1106 116E 11AF; # (물; 물; 물; 물; 물; ) HANGUL SYLLABLE MUL
+BB3D;BB3D;1106 116E 11B0;BB3D;1106 116E 11B0; # (묽; 묽; 묽; 묽; 묽; ) HANGUL SYLLABLE MULG
+BB3E;BB3E;1106 116E 11B1;BB3E;1106 116E 11B1; # (묾; 묾; 묾; 묾; 묾; ) HANGUL SYLLABLE MULM
+BB3F;BB3F;1106 116E 11B2;BB3F;1106 116E 11B2; # (묿; 묿; 묿; 묿; 묿; ) HANGUL SYLLABLE MULB
+BB40;BB40;1106 116E 11B3;BB40;1106 116E 11B3; # (뭀; 뭀; 뭀; 뭀; 뭀; ) HANGUL SYLLABLE MULS
+BB41;BB41;1106 116E 11B4;BB41;1106 116E 11B4; # (ë­; ë­; 뭁; ë­; 뭁; ) HANGUL SYLLABLE MULT
+BB42;BB42;1106 116E 11B5;BB42;1106 116E 11B5; # (뭂; 뭂; 뭂; 뭂; 뭂; ) HANGUL SYLLABLE MULP
+BB43;BB43;1106 116E 11B6;BB43;1106 116E 11B6; # (뭃; 뭃; 뭃; 뭃; 뭃; ) HANGUL SYLLABLE MULH
+BB44;BB44;1106 116E 11B7;BB44;1106 116E 11B7; # (뭄; 뭄; 뭄; 뭄; 뭄; ) HANGUL SYLLABLE MUM
+BB45;BB45;1106 116E 11B8;BB45;1106 116E 11B8; # (뭅; 뭅; 뭅; 뭅; 뭅; ) HANGUL SYLLABLE MUB
+BB46;BB46;1106 116E 11B9;BB46;1106 116E 11B9; # (뭆; 뭆; 뭆; 뭆; 뭆; ) HANGUL SYLLABLE MUBS
+BB47;BB47;1106 116E 11BA;BB47;1106 116E 11BA; # (뭇; 뭇; 뭇; 뭇; 뭇; ) HANGUL SYLLABLE MUS
+BB48;BB48;1106 116E 11BB;BB48;1106 116E 11BB; # (뭈; 뭈; 뭈; 뭈; 뭈; ) HANGUL SYLLABLE MUSS
+BB49;BB49;1106 116E 11BC;BB49;1106 116E 11BC; # (뭉; 뭉; 뭉; 뭉; 뭉; ) HANGUL SYLLABLE MUNG
+BB4A;BB4A;1106 116E 11BD;BB4A;1106 116E 11BD; # (뭊; 뭊; 뭊; 뭊; 뭊; ) HANGUL SYLLABLE MUJ
+BB4B;BB4B;1106 116E 11BE;BB4B;1106 116E 11BE; # (뭋; 뭋; 뭋; 뭋; 뭋; ) HANGUL SYLLABLE MUC
+BB4C;BB4C;1106 116E 11BF;BB4C;1106 116E 11BF; # (뭌; 뭌; 뭌; 뭌; 뭌; ) HANGUL SYLLABLE MUK
+BB4D;BB4D;1106 116E 11C0;BB4D;1106 116E 11C0; # (ë­; ë­; 뭍; ë­; 뭍; ) HANGUL SYLLABLE MUT
+BB4E;BB4E;1106 116E 11C1;BB4E;1106 116E 11C1; # (ë­Ž; ë­Ž; 무á‡; ë­Ž; 무á‡; ) HANGUL SYLLABLE MUP
+BB4F;BB4F;1106 116E 11C2;BB4F;1106 116E 11C2; # (ë­; ë­; 뭏; ë­; 뭏; ) HANGUL SYLLABLE MUH
+BB50;BB50;1106 116F;BB50;1106 116F; # (ë­; ë­; 뭐; ë­; 뭐; ) HANGUL SYLLABLE MWEO
+BB51;BB51;1106 116F 11A8;BB51;1106 116F 11A8; # (뭑; 뭑; 뭑; 뭑; 뭑; ) HANGUL SYLLABLE MWEOG
+BB52;BB52;1106 116F 11A9;BB52;1106 116F 11A9; # (뭒; 뭒; 뭒; 뭒; 뭒; ) HANGUL SYLLABLE MWEOGG
+BB53;BB53;1106 116F 11AA;BB53;1106 116F 11AA; # (뭓; 뭓; 뭓; 뭓; 뭓; ) HANGUL SYLLABLE MWEOGS
+BB54;BB54;1106 116F 11AB;BB54;1106 116F 11AB; # (뭔; 뭔; 뭔; 뭔; 뭔; ) HANGUL SYLLABLE MWEON
+BB55;BB55;1106 116F 11AC;BB55;1106 116F 11AC; # (뭕; 뭕; 뭕; 뭕; 뭕; ) HANGUL SYLLABLE MWEONJ
+BB56;BB56;1106 116F 11AD;BB56;1106 116F 11AD; # (뭖; 뭖; 뭖; 뭖; 뭖; ) HANGUL SYLLABLE MWEONH
+BB57;BB57;1106 116F 11AE;BB57;1106 116F 11AE; # (뭗; 뭗; 뭗; 뭗; 뭗; ) HANGUL SYLLABLE MWEOD
+BB58;BB58;1106 116F 11AF;BB58;1106 116F 11AF; # (뭘; 뭘; 뭘; 뭘; 뭘; ) HANGUL SYLLABLE MWEOL
+BB59;BB59;1106 116F 11B0;BB59;1106 116F 11B0; # (뭙; 뭙; 뭙; 뭙; 뭙; ) HANGUL SYLLABLE MWEOLG
+BB5A;BB5A;1106 116F 11B1;BB5A;1106 116F 11B1; # (뭚; 뭚; 뭚; 뭚; 뭚; ) HANGUL SYLLABLE MWEOLM
+BB5B;BB5B;1106 116F 11B2;BB5B;1106 116F 11B2; # (뭛; 뭛; 뭛; 뭛; 뭛; ) HANGUL SYLLABLE MWEOLB
+BB5C;BB5C;1106 116F 11B3;BB5C;1106 116F 11B3; # (뭜; 뭜; 뭜; 뭜; 뭜; ) HANGUL SYLLABLE MWEOLS
+BB5D;BB5D;1106 116F 11B4;BB5D;1106 116F 11B4; # (ë­; ë­; 뭝; ë­; 뭝; ) HANGUL SYLLABLE MWEOLT
+BB5E;BB5E;1106 116F 11B5;BB5E;1106 116F 11B5; # (뭞; 뭞; 뭞; 뭞; 뭞; ) HANGUL SYLLABLE MWEOLP
+BB5F;BB5F;1106 116F 11B6;BB5F;1106 116F 11B6; # (뭟; 뭟; 뭟; 뭟; 뭟; ) HANGUL SYLLABLE MWEOLH
+BB60;BB60;1106 116F 11B7;BB60;1106 116F 11B7; # (뭠; 뭠; 뭠; 뭠; 뭠; ) HANGUL SYLLABLE MWEOM
+BB61;BB61;1106 116F 11B8;BB61;1106 116F 11B8; # (뭡; 뭡; 뭡; 뭡; 뭡; ) HANGUL SYLLABLE MWEOB
+BB62;BB62;1106 116F 11B9;BB62;1106 116F 11B9; # (뭢; 뭢; 뭢; 뭢; 뭢; ) HANGUL SYLLABLE MWEOBS
+BB63;BB63;1106 116F 11BA;BB63;1106 116F 11BA; # (뭣; 뭣; 뭣; 뭣; 뭣; ) HANGUL SYLLABLE MWEOS
+BB64;BB64;1106 116F 11BB;BB64;1106 116F 11BB; # (뭤; 뭤; 뭤; 뭤; 뭤; ) HANGUL SYLLABLE MWEOSS
+BB65;BB65;1106 116F 11BC;BB65;1106 116F 11BC; # (뭥; 뭥; 뭥; 뭥; 뭥; ) HANGUL SYLLABLE MWEONG
+BB66;BB66;1106 116F 11BD;BB66;1106 116F 11BD; # (뭦; 뭦; 뭦; 뭦; 뭦; ) HANGUL SYLLABLE MWEOJ
+BB67;BB67;1106 116F 11BE;BB67;1106 116F 11BE; # (뭧; 뭧; 뭧; 뭧; 뭧; ) HANGUL SYLLABLE MWEOC
+BB68;BB68;1106 116F 11BF;BB68;1106 116F 11BF; # (뭨; 뭨; 뭨; 뭨; 뭨; ) HANGUL SYLLABLE MWEOK
+BB69;BB69;1106 116F 11C0;BB69;1106 116F 11C0; # (뭩; 뭩; 뭩; 뭩; 뭩; ) HANGUL SYLLABLE MWEOT
+BB6A;BB6A;1106 116F 11C1;BB6A;1106 116F 11C1; # (ë­ª; ë­ª; 뭐á‡; ë­ª; 뭐á‡; ) HANGUL SYLLABLE MWEOP
+BB6B;BB6B;1106 116F 11C2;BB6B;1106 116F 11C2; # (뭫; 뭫; 뭫; 뭫; 뭫; ) HANGUL SYLLABLE MWEOH
+BB6C;BB6C;1106 1170;BB6C;1106 1170; # (뭬; 뭬; 뭬; 뭬; 뭬; ) HANGUL SYLLABLE MWE
+BB6D;BB6D;1106 1170 11A8;BB6D;1106 1170 11A8; # (뭭; 뭭; 뭭; 뭭; 뭭; ) HANGUL SYLLABLE MWEG
+BB6E;BB6E;1106 1170 11A9;BB6E;1106 1170 11A9; # (뭮; 뭮; 뭮; 뭮; 뭮; ) HANGUL SYLLABLE MWEGG
+BB6F;BB6F;1106 1170 11AA;BB6F;1106 1170 11AA; # (뭯; 뭯; 뭯; 뭯; 뭯; ) HANGUL SYLLABLE MWEGS
+BB70;BB70;1106 1170 11AB;BB70;1106 1170 11AB; # (뭰; 뭰; 뭰; 뭰; 뭰; ) HANGUL SYLLABLE MWEN
+BB71;BB71;1106 1170 11AC;BB71;1106 1170 11AC; # (뭱; 뭱; 뭱; 뭱; 뭱; ) HANGUL SYLLABLE MWENJ
+BB72;BB72;1106 1170 11AD;BB72;1106 1170 11AD; # (뭲; 뭲; 뭲; 뭲; 뭲; ) HANGUL SYLLABLE MWENH
+BB73;BB73;1106 1170 11AE;BB73;1106 1170 11AE; # (뭳; 뭳; 뭳; 뭳; 뭳; ) HANGUL SYLLABLE MWED
+BB74;BB74;1106 1170 11AF;BB74;1106 1170 11AF; # (뭴; 뭴; 뭴; 뭴; 뭴; ) HANGUL SYLLABLE MWEL
+BB75;BB75;1106 1170 11B0;BB75;1106 1170 11B0; # (뭵; 뭵; 뭵; 뭵; 뭵; ) HANGUL SYLLABLE MWELG
+BB76;BB76;1106 1170 11B1;BB76;1106 1170 11B1; # (뭶; 뭶; 뭶; 뭶; 뭶; ) HANGUL SYLLABLE MWELM
+BB77;BB77;1106 1170 11B2;BB77;1106 1170 11B2; # (뭷; 뭷; 뭷; 뭷; 뭷; ) HANGUL SYLLABLE MWELB
+BB78;BB78;1106 1170 11B3;BB78;1106 1170 11B3; # (뭸; 뭸; 뭸; 뭸; 뭸; ) HANGUL SYLLABLE MWELS
+BB79;BB79;1106 1170 11B4;BB79;1106 1170 11B4; # (뭹; 뭹; 뭹; 뭹; 뭹; ) HANGUL SYLLABLE MWELT
+BB7A;BB7A;1106 1170 11B5;BB7A;1106 1170 11B5; # (뭺; 뭺; 뭺; 뭺; 뭺; ) HANGUL SYLLABLE MWELP
+BB7B;BB7B;1106 1170 11B6;BB7B;1106 1170 11B6; # (뭻; 뭻; 뭻; 뭻; 뭻; ) HANGUL SYLLABLE MWELH
+BB7C;BB7C;1106 1170 11B7;BB7C;1106 1170 11B7; # (뭼; 뭼; 뭼; 뭼; 뭼; ) HANGUL SYLLABLE MWEM
+BB7D;BB7D;1106 1170 11B8;BB7D;1106 1170 11B8; # (뭽; 뭽; 뭽; 뭽; 뭽; ) HANGUL SYLLABLE MWEB
+BB7E;BB7E;1106 1170 11B9;BB7E;1106 1170 11B9; # (뭾; 뭾; 뭾; 뭾; 뭾; ) HANGUL SYLLABLE MWEBS
+BB7F;BB7F;1106 1170 11BA;BB7F;1106 1170 11BA; # (뭿; 뭿; 뭿; 뭿; 뭿; ) HANGUL SYLLABLE MWES
+BB80;BB80;1106 1170 11BB;BB80;1106 1170 11BB; # (뮀; 뮀; 뮀; 뮀; 뮀; ) HANGUL SYLLABLE MWESS
+BB81;BB81;1106 1170 11BC;BB81;1106 1170 11BC; # (ë®; ë®; 뮁; ë®; 뮁; ) HANGUL SYLLABLE MWENG
+BB82;BB82;1106 1170 11BD;BB82;1106 1170 11BD; # (뮂; 뮂; 뮂; 뮂; 뮂; ) HANGUL SYLLABLE MWEJ
+BB83;BB83;1106 1170 11BE;BB83;1106 1170 11BE; # (뮃; 뮃; 뮃; 뮃; 뮃; ) HANGUL SYLLABLE MWEC
+BB84;BB84;1106 1170 11BF;BB84;1106 1170 11BF; # (뮄; 뮄; 뮄; 뮄; 뮄; ) HANGUL SYLLABLE MWEK
+BB85;BB85;1106 1170 11C0;BB85;1106 1170 11C0; # (뮅; 뮅; 뮅; 뮅; 뮅; ) HANGUL SYLLABLE MWET
+BB86;BB86;1106 1170 11C1;BB86;1106 1170 11C1; # (뮆; 뮆; 뭬á‡; 뮆; 뭬á‡; ) HANGUL SYLLABLE MWEP
+BB87;BB87;1106 1170 11C2;BB87;1106 1170 11C2; # (뮇; 뮇; 뮇; 뮇; 뮇; ) HANGUL SYLLABLE MWEH
+BB88;BB88;1106 1171;BB88;1106 1171; # (뮈; 뮈; 뮈; 뮈; 뮈; ) HANGUL SYLLABLE MWI
+BB89;BB89;1106 1171 11A8;BB89;1106 1171 11A8; # (뮉; 뮉; 뮉; 뮉; 뮉; ) HANGUL SYLLABLE MWIG
+BB8A;BB8A;1106 1171 11A9;BB8A;1106 1171 11A9; # (뮊; 뮊; 뮊; 뮊; 뮊; ) HANGUL SYLLABLE MWIGG
+BB8B;BB8B;1106 1171 11AA;BB8B;1106 1171 11AA; # (뮋; 뮋; 뮋; 뮋; 뮋; ) HANGUL SYLLABLE MWIGS
+BB8C;BB8C;1106 1171 11AB;BB8C;1106 1171 11AB; # (뮌; 뮌; 뮌; 뮌; 뮌; ) HANGUL SYLLABLE MWIN
+BB8D;BB8D;1106 1171 11AC;BB8D;1106 1171 11AC; # (ë®; ë®; 뮍; ë®; 뮍; ) HANGUL SYLLABLE MWINJ
+BB8E;BB8E;1106 1171 11AD;BB8E;1106 1171 11AD; # (뮎; 뮎; 뮎; 뮎; 뮎; ) HANGUL SYLLABLE MWINH
+BB8F;BB8F;1106 1171 11AE;BB8F;1106 1171 11AE; # (ë®; ë®; 뮏; ë®; 뮏; ) HANGUL SYLLABLE MWID
+BB90;BB90;1106 1171 11AF;BB90;1106 1171 11AF; # (ë®; ë®; 뮐; ë®; 뮐; ) HANGUL SYLLABLE MWIL
+BB91;BB91;1106 1171 11B0;BB91;1106 1171 11B0; # (뮑; 뮑; 뮑; 뮑; 뮑; ) HANGUL SYLLABLE MWILG
+BB92;BB92;1106 1171 11B1;BB92;1106 1171 11B1; # (뮒; 뮒; 뮒; 뮒; 뮒; ) HANGUL SYLLABLE MWILM
+BB93;BB93;1106 1171 11B2;BB93;1106 1171 11B2; # (뮓; 뮓; 뮓; 뮓; 뮓; ) HANGUL SYLLABLE MWILB
+BB94;BB94;1106 1171 11B3;BB94;1106 1171 11B3; # (뮔; 뮔; 뮔; 뮔; 뮔; ) HANGUL SYLLABLE MWILS
+BB95;BB95;1106 1171 11B4;BB95;1106 1171 11B4; # (뮕; 뮕; 뮕; 뮕; 뮕; ) HANGUL SYLLABLE MWILT
+BB96;BB96;1106 1171 11B5;BB96;1106 1171 11B5; # (뮖; 뮖; 뮖; 뮖; 뮖; ) HANGUL SYLLABLE MWILP
+BB97;BB97;1106 1171 11B6;BB97;1106 1171 11B6; # (뮗; 뮗; 뮗; 뮗; 뮗; ) HANGUL SYLLABLE MWILH
+BB98;BB98;1106 1171 11B7;BB98;1106 1171 11B7; # (뮘; 뮘; 뮘; 뮘; 뮘; ) HANGUL SYLLABLE MWIM
+BB99;BB99;1106 1171 11B8;BB99;1106 1171 11B8; # (뮙; 뮙; 뮙; 뮙; 뮙; ) HANGUL SYLLABLE MWIB
+BB9A;BB9A;1106 1171 11B9;BB9A;1106 1171 11B9; # (뮚; 뮚; 뮚; 뮚; 뮚; ) HANGUL SYLLABLE MWIBS
+BB9B;BB9B;1106 1171 11BA;BB9B;1106 1171 11BA; # (뮛; 뮛; 뮛; 뮛; 뮛; ) HANGUL SYLLABLE MWIS
+BB9C;BB9C;1106 1171 11BB;BB9C;1106 1171 11BB; # (뮜; 뮜; 뮜; 뮜; 뮜; ) HANGUL SYLLABLE MWISS
+BB9D;BB9D;1106 1171 11BC;BB9D;1106 1171 11BC; # (ë®; ë®; 뮝; ë®; 뮝; ) HANGUL SYLLABLE MWING
+BB9E;BB9E;1106 1171 11BD;BB9E;1106 1171 11BD; # (뮞; 뮞; 뮞; 뮞; 뮞; ) HANGUL SYLLABLE MWIJ
+BB9F;BB9F;1106 1171 11BE;BB9F;1106 1171 11BE; # (뮟; 뮟; 뮟; 뮟; 뮟; ) HANGUL SYLLABLE MWIC
+BBA0;BBA0;1106 1171 11BF;BBA0;1106 1171 11BF; # (뮠; 뮠; 뮠; 뮠; 뮠; ) HANGUL SYLLABLE MWIK
+BBA1;BBA1;1106 1171 11C0;BBA1;1106 1171 11C0; # (뮡; 뮡; 뮡; 뮡; 뮡; ) HANGUL SYLLABLE MWIT
+BBA2;BBA2;1106 1171 11C1;BBA2;1106 1171 11C1; # (뮢; 뮢; 뮈á‡; 뮢; 뮈á‡; ) HANGUL SYLLABLE MWIP
+BBA3;BBA3;1106 1171 11C2;BBA3;1106 1171 11C2; # (뮣; 뮣; 뮣; 뮣; 뮣; ) HANGUL SYLLABLE MWIH
+BBA4;BBA4;1106 1172;BBA4;1106 1172; # (뮤; 뮤; 뮤; 뮤; 뮤; ) HANGUL SYLLABLE MYU
+BBA5;BBA5;1106 1172 11A8;BBA5;1106 1172 11A8; # (뮥; 뮥; 뮥; 뮥; 뮥; ) HANGUL SYLLABLE MYUG
+BBA6;BBA6;1106 1172 11A9;BBA6;1106 1172 11A9; # (뮦; 뮦; 뮦; 뮦; 뮦; ) HANGUL SYLLABLE MYUGG
+BBA7;BBA7;1106 1172 11AA;BBA7;1106 1172 11AA; # (뮧; 뮧; 뮧; 뮧; 뮧; ) HANGUL SYLLABLE MYUGS
+BBA8;BBA8;1106 1172 11AB;BBA8;1106 1172 11AB; # (뮨; 뮨; 뮨; 뮨; 뮨; ) HANGUL SYLLABLE MYUN
+BBA9;BBA9;1106 1172 11AC;BBA9;1106 1172 11AC; # (뮩; 뮩; 뮩; 뮩; 뮩; ) HANGUL SYLLABLE MYUNJ
+BBAA;BBAA;1106 1172 11AD;BBAA;1106 1172 11AD; # (뮪; 뮪; 뮪; 뮪; 뮪; ) HANGUL SYLLABLE MYUNH
+BBAB;BBAB;1106 1172 11AE;BBAB;1106 1172 11AE; # (뮫; 뮫; 뮫; 뮫; 뮫; ) HANGUL SYLLABLE MYUD
+BBAC;BBAC;1106 1172 11AF;BBAC;1106 1172 11AF; # (뮬; 뮬; 뮬; 뮬; 뮬; ) HANGUL SYLLABLE MYUL
+BBAD;BBAD;1106 1172 11B0;BBAD;1106 1172 11B0; # (뮭; 뮭; 뮭; 뮭; 뮭; ) HANGUL SYLLABLE MYULG
+BBAE;BBAE;1106 1172 11B1;BBAE;1106 1172 11B1; # (뮮; 뮮; 뮮; 뮮; 뮮; ) HANGUL SYLLABLE MYULM
+BBAF;BBAF;1106 1172 11B2;BBAF;1106 1172 11B2; # (뮯; 뮯; 뮯; 뮯; 뮯; ) HANGUL SYLLABLE MYULB
+BBB0;BBB0;1106 1172 11B3;BBB0;1106 1172 11B3; # (뮰; 뮰; 뮰; 뮰; 뮰; ) HANGUL SYLLABLE MYULS
+BBB1;BBB1;1106 1172 11B4;BBB1;1106 1172 11B4; # (뮱; 뮱; 뮱; 뮱; 뮱; ) HANGUL SYLLABLE MYULT
+BBB2;BBB2;1106 1172 11B5;BBB2;1106 1172 11B5; # (뮲; 뮲; 뮲; 뮲; 뮲; ) HANGUL SYLLABLE MYULP
+BBB3;BBB3;1106 1172 11B6;BBB3;1106 1172 11B6; # (뮳; 뮳; 뮳; 뮳; 뮳; ) HANGUL SYLLABLE MYULH
+BBB4;BBB4;1106 1172 11B7;BBB4;1106 1172 11B7; # (뮴; 뮴; 뮴; 뮴; 뮴; ) HANGUL SYLLABLE MYUM
+BBB5;BBB5;1106 1172 11B8;BBB5;1106 1172 11B8; # (뮵; 뮵; 뮵; 뮵; 뮵; ) HANGUL SYLLABLE MYUB
+BBB6;BBB6;1106 1172 11B9;BBB6;1106 1172 11B9; # (뮶; 뮶; 뮶; 뮶; 뮶; ) HANGUL SYLLABLE MYUBS
+BBB7;BBB7;1106 1172 11BA;BBB7;1106 1172 11BA; # (뮷; 뮷; 뮷; 뮷; 뮷; ) HANGUL SYLLABLE MYUS
+BBB8;BBB8;1106 1172 11BB;BBB8;1106 1172 11BB; # (뮸; 뮸; 뮸; 뮸; 뮸; ) HANGUL SYLLABLE MYUSS
+BBB9;BBB9;1106 1172 11BC;BBB9;1106 1172 11BC; # (뮹; 뮹; 뮹; 뮹; 뮹; ) HANGUL SYLLABLE MYUNG
+BBBA;BBBA;1106 1172 11BD;BBBA;1106 1172 11BD; # (뮺; 뮺; 뮺; 뮺; 뮺; ) HANGUL SYLLABLE MYUJ
+BBBB;BBBB;1106 1172 11BE;BBBB;1106 1172 11BE; # (뮻; 뮻; 뮻; 뮻; 뮻; ) HANGUL SYLLABLE MYUC
+BBBC;BBBC;1106 1172 11BF;BBBC;1106 1172 11BF; # (뮼; 뮼; 뮼; 뮼; 뮼; ) HANGUL SYLLABLE MYUK
+BBBD;BBBD;1106 1172 11C0;BBBD;1106 1172 11C0; # (뮽; 뮽; 뮽; 뮽; 뮽; ) HANGUL SYLLABLE MYUT
+BBBE;BBBE;1106 1172 11C1;BBBE;1106 1172 11C1; # (뮾; 뮾; 뮤á‡; 뮾; 뮤á‡; ) HANGUL SYLLABLE MYUP
+BBBF;BBBF;1106 1172 11C2;BBBF;1106 1172 11C2; # (뮿; 뮿; 뮿; 뮿; 뮿; ) HANGUL SYLLABLE MYUH
+BBC0;BBC0;1106 1173;BBC0;1106 1173; # (므; 므; 므; 므; 므; ) HANGUL SYLLABLE MEU
+BBC1;BBC1;1106 1173 11A8;BBC1;1106 1173 11A8; # (ë¯; ë¯; 믁; ë¯; 믁; ) HANGUL SYLLABLE MEUG
+BBC2;BBC2;1106 1173 11A9;BBC2;1106 1173 11A9; # (믂; 믂; 믂; 믂; 믂; ) HANGUL SYLLABLE MEUGG
+BBC3;BBC3;1106 1173 11AA;BBC3;1106 1173 11AA; # (믃; 믃; 믃; 믃; 믃; ) HANGUL SYLLABLE MEUGS
+BBC4;BBC4;1106 1173 11AB;BBC4;1106 1173 11AB; # (믄; 믄; 믄; 믄; 믄; ) HANGUL SYLLABLE MEUN
+BBC5;BBC5;1106 1173 11AC;BBC5;1106 1173 11AC; # (믅; 믅; 믅; 믅; 믅; ) HANGUL SYLLABLE MEUNJ
+BBC6;BBC6;1106 1173 11AD;BBC6;1106 1173 11AD; # (믆; 믆; 믆; 믆; 믆; ) HANGUL SYLLABLE MEUNH
+BBC7;BBC7;1106 1173 11AE;BBC7;1106 1173 11AE; # (믇; 믇; 믇; 믇; 믇; ) HANGUL SYLLABLE MEUD
+BBC8;BBC8;1106 1173 11AF;BBC8;1106 1173 11AF; # (믈; 믈; 믈; 믈; 믈; ) HANGUL SYLLABLE MEUL
+BBC9;BBC9;1106 1173 11B0;BBC9;1106 1173 11B0; # (믉; 믉; 믉; 믉; 믉; ) HANGUL SYLLABLE MEULG
+BBCA;BBCA;1106 1173 11B1;BBCA;1106 1173 11B1; # (믊; 믊; 믊; 믊; 믊; ) HANGUL SYLLABLE MEULM
+BBCB;BBCB;1106 1173 11B2;BBCB;1106 1173 11B2; # (믋; 믋; 믋; 믋; 믋; ) HANGUL SYLLABLE MEULB
+BBCC;BBCC;1106 1173 11B3;BBCC;1106 1173 11B3; # (믌; 믌; 믌; 믌; 믌; ) HANGUL SYLLABLE MEULS
+BBCD;BBCD;1106 1173 11B4;BBCD;1106 1173 11B4; # (ë¯; ë¯; 믍; ë¯; 믍; ) HANGUL SYLLABLE MEULT
+BBCE;BBCE;1106 1173 11B5;BBCE;1106 1173 11B5; # (믎; 믎; 믎; 믎; 믎; ) HANGUL SYLLABLE MEULP
+BBCF;BBCF;1106 1173 11B6;BBCF;1106 1173 11B6; # (ë¯; ë¯; 믏; ë¯; 믏; ) HANGUL SYLLABLE MEULH
+BBD0;BBD0;1106 1173 11B7;BBD0;1106 1173 11B7; # (ë¯; ë¯; 믐; ë¯; 믐; ) HANGUL SYLLABLE MEUM
+BBD1;BBD1;1106 1173 11B8;BBD1;1106 1173 11B8; # (믑; 믑; 믑; 믑; 믑; ) HANGUL SYLLABLE MEUB
+BBD2;BBD2;1106 1173 11B9;BBD2;1106 1173 11B9; # (믒; 믒; 믒; 믒; 믒; ) HANGUL SYLLABLE MEUBS
+BBD3;BBD3;1106 1173 11BA;BBD3;1106 1173 11BA; # (믓; 믓; 믓; 믓; 믓; ) HANGUL SYLLABLE MEUS
+BBD4;BBD4;1106 1173 11BB;BBD4;1106 1173 11BB; # (믔; 믔; 믔; 믔; 믔; ) HANGUL SYLLABLE MEUSS
+BBD5;BBD5;1106 1173 11BC;BBD5;1106 1173 11BC; # (믕; 믕; 믕; 믕; 믕; ) HANGUL SYLLABLE MEUNG
+BBD6;BBD6;1106 1173 11BD;BBD6;1106 1173 11BD; # (믖; 믖; 믖; 믖; 믖; ) HANGUL SYLLABLE MEUJ
+BBD7;BBD7;1106 1173 11BE;BBD7;1106 1173 11BE; # (믗; 믗; 믗; 믗; 믗; ) HANGUL SYLLABLE MEUC
+BBD8;BBD8;1106 1173 11BF;BBD8;1106 1173 11BF; # (믘; 믘; 믘; 믘; 믘; ) HANGUL SYLLABLE MEUK
+BBD9;BBD9;1106 1173 11C0;BBD9;1106 1173 11C0; # (믙; 믙; 믙; 믙; 믙; ) HANGUL SYLLABLE MEUT
+BBDA;BBDA;1106 1173 11C1;BBDA;1106 1173 11C1; # (믚; 믚; 므á‡; 믚; 므á‡; ) HANGUL SYLLABLE MEUP
+BBDB;BBDB;1106 1173 11C2;BBDB;1106 1173 11C2; # (믛; 믛; 믛; 믛; 믛; ) HANGUL SYLLABLE MEUH
+BBDC;BBDC;1106 1174;BBDC;1106 1174; # (믜; 믜; 믜; 믜; 믜; ) HANGUL SYLLABLE MYI
+BBDD;BBDD;1106 1174 11A8;BBDD;1106 1174 11A8; # (ë¯; ë¯; 믝; ë¯; 믝; ) HANGUL SYLLABLE MYIG
+BBDE;BBDE;1106 1174 11A9;BBDE;1106 1174 11A9; # (믞; 믞; 믞; 믞; 믞; ) HANGUL SYLLABLE MYIGG
+BBDF;BBDF;1106 1174 11AA;BBDF;1106 1174 11AA; # (믟; 믟; 믟; 믟; 믟; ) HANGUL SYLLABLE MYIGS
+BBE0;BBE0;1106 1174 11AB;BBE0;1106 1174 11AB; # (믠; 믠; 믠; 믠; 믠; ) HANGUL SYLLABLE MYIN
+BBE1;BBE1;1106 1174 11AC;BBE1;1106 1174 11AC; # (믡; 믡; 믡; 믡; 믡; ) HANGUL SYLLABLE MYINJ
+BBE2;BBE2;1106 1174 11AD;BBE2;1106 1174 11AD; # (믢; 믢; 믢; 믢; 믢; ) HANGUL SYLLABLE MYINH
+BBE3;BBE3;1106 1174 11AE;BBE3;1106 1174 11AE; # (믣; 믣; 믣; 믣; 믣; ) HANGUL SYLLABLE MYID
+BBE4;BBE4;1106 1174 11AF;BBE4;1106 1174 11AF; # (믤; 믤; 믤; 믤; 믤; ) HANGUL SYLLABLE MYIL
+BBE5;BBE5;1106 1174 11B0;BBE5;1106 1174 11B0; # (믥; 믥; 믥; 믥; 믥; ) HANGUL SYLLABLE MYILG
+BBE6;BBE6;1106 1174 11B1;BBE6;1106 1174 11B1; # (믦; 믦; 믦; 믦; 믦; ) HANGUL SYLLABLE MYILM
+BBE7;BBE7;1106 1174 11B2;BBE7;1106 1174 11B2; # (믧; 믧; 믧; 믧; 믧; ) HANGUL SYLLABLE MYILB
+BBE8;BBE8;1106 1174 11B3;BBE8;1106 1174 11B3; # (믨; 믨; 믨; 믨; 믨; ) HANGUL SYLLABLE MYILS
+BBE9;BBE9;1106 1174 11B4;BBE9;1106 1174 11B4; # (믩; 믩; 믩; 믩; 믩; ) HANGUL SYLLABLE MYILT
+BBEA;BBEA;1106 1174 11B5;BBEA;1106 1174 11B5; # (믪; 믪; 믪; 믪; 믪; ) HANGUL SYLLABLE MYILP
+BBEB;BBEB;1106 1174 11B6;BBEB;1106 1174 11B6; # (믫; 믫; 믫; 믫; 믫; ) HANGUL SYLLABLE MYILH
+BBEC;BBEC;1106 1174 11B7;BBEC;1106 1174 11B7; # (믬; 믬; 믬; 믬; 믬; ) HANGUL SYLLABLE MYIM
+BBED;BBED;1106 1174 11B8;BBED;1106 1174 11B8; # (믭; 믭; 믭; 믭; 믭; ) HANGUL SYLLABLE MYIB
+BBEE;BBEE;1106 1174 11B9;BBEE;1106 1174 11B9; # (믮; 믮; 믮; 믮; 믮; ) HANGUL SYLLABLE MYIBS
+BBEF;BBEF;1106 1174 11BA;BBEF;1106 1174 11BA; # (믯; 믯; 믯; 믯; 믯; ) HANGUL SYLLABLE MYIS
+BBF0;BBF0;1106 1174 11BB;BBF0;1106 1174 11BB; # (믰; 믰; 믰; 믰; 믰; ) HANGUL SYLLABLE MYISS
+BBF1;BBF1;1106 1174 11BC;BBF1;1106 1174 11BC; # (믱; 믱; 믱; 믱; 믱; ) HANGUL SYLLABLE MYING
+BBF2;BBF2;1106 1174 11BD;BBF2;1106 1174 11BD; # (믲; 믲; 믲; 믲; 믲; ) HANGUL SYLLABLE MYIJ
+BBF3;BBF3;1106 1174 11BE;BBF3;1106 1174 11BE; # (믳; 믳; 믳; 믳; 믳; ) HANGUL SYLLABLE MYIC
+BBF4;BBF4;1106 1174 11BF;BBF4;1106 1174 11BF; # (믴; 믴; 믴; 믴; 믴; ) HANGUL SYLLABLE MYIK
+BBF5;BBF5;1106 1174 11C0;BBF5;1106 1174 11C0; # (믵; 믵; 믵; 믵; 믵; ) HANGUL SYLLABLE MYIT
+BBF6;BBF6;1106 1174 11C1;BBF6;1106 1174 11C1; # (믶; 믶; 믜á‡; 믶; 믜á‡; ) HANGUL SYLLABLE MYIP
+BBF7;BBF7;1106 1174 11C2;BBF7;1106 1174 11C2; # (믷; 믷; 믷; 믷; 믷; ) HANGUL SYLLABLE MYIH
+BBF8;BBF8;1106 1175;BBF8;1106 1175; # (미; 미; 미; 미; 미; ) HANGUL SYLLABLE MI
+BBF9;BBF9;1106 1175 11A8;BBF9;1106 1175 11A8; # (믹; 믹; 믹; 믹; 믹; ) HANGUL SYLLABLE MIG
+BBFA;BBFA;1106 1175 11A9;BBFA;1106 1175 11A9; # (믺; 믺; 믺; 믺; 믺; ) HANGUL SYLLABLE MIGG
+BBFB;BBFB;1106 1175 11AA;BBFB;1106 1175 11AA; # (믻; 믻; 믻; 믻; 믻; ) HANGUL SYLLABLE MIGS
+BBFC;BBFC;1106 1175 11AB;BBFC;1106 1175 11AB; # (민; 민; 민; 민; 민; ) HANGUL SYLLABLE MIN
+BBFD;BBFD;1106 1175 11AC;BBFD;1106 1175 11AC; # (믽; 믽; 믽; 믽; 믽; ) HANGUL SYLLABLE MINJ
+BBFE;BBFE;1106 1175 11AD;BBFE;1106 1175 11AD; # (믾; 믾; 믾; 믾; 믾; ) HANGUL SYLLABLE MINH
+BBFF;BBFF;1106 1175 11AE;BBFF;1106 1175 11AE; # (믿; 믿; 믿; 믿; 믿; ) HANGUL SYLLABLE MID
+BC00;BC00;1106 1175 11AF;BC00;1106 1175 11AF; # (밀; 밀; 밀; 밀; 밀; ) HANGUL SYLLABLE MIL
+BC01;BC01;1106 1175 11B0;BC01;1106 1175 11B0; # (ë°; ë°; 밁; ë°; 밁; ) HANGUL SYLLABLE MILG
+BC02;BC02;1106 1175 11B1;BC02;1106 1175 11B1; # (밂; 밂; 밂; 밂; 밂; ) HANGUL SYLLABLE MILM
+BC03;BC03;1106 1175 11B2;BC03;1106 1175 11B2; # (밃; 밃; 밃; 밃; 밃; ) HANGUL SYLLABLE MILB
+BC04;BC04;1106 1175 11B3;BC04;1106 1175 11B3; # (밄; 밄; 밄; 밄; 밄; ) HANGUL SYLLABLE MILS
+BC05;BC05;1106 1175 11B4;BC05;1106 1175 11B4; # (밅; 밅; 밅; 밅; 밅; ) HANGUL SYLLABLE MILT
+BC06;BC06;1106 1175 11B5;BC06;1106 1175 11B5; # (밆; 밆; 밆; 밆; 밆; ) HANGUL SYLLABLE MILP
+BC07;BC07;1106 1175 11B6;BC07;1106 1175 11B6; # (밇; 밇; 밇; 밇; 밇; ) HANGUL SYLLABLE MILH
+BC08;BC08;1106 1175 11B7;BC08;1106 1175 11B7; # (밈; 밈; 밈; 밈; 밈; ) HANGUL SYLLABLE MIM
+BC09;BC09;1106 1175 11B8;BC09;1106 1175 11B8; # (밉; 밉; 밉; 밉; 밉; ) HANGUL SYLLABLE MIB
+BC0A;BC0A;1106 1175 11B9;BC0A;1106 1175 11B9; # (밊; 밊; 밊; 밊; 밊; ) HANGUL SYLLABLE MIBS
+BC0B;BC0B;1106 1175 11BA;BC0B;1106 1175 11BA; # (밋; 밋; 밋; 밋; 밋; ) HANGUL SYLLABLE MIS
+BC0C;BC0C;1106 1175 11BB;BC0C;1106 1175 11BB; # (밌; 밌; 밌; 밌; 밌; ) HANGUL SYLLABLE MISS
+BC0D;BC0D;1106 1175 11BC;BC0D;1106 1175 11BC; # (ë°; ë°; 밍; ë°; 밍; ) HANGUL SYLLABLE MING
+BC0E;BC0E;1106 1175 11BD;BC0E;1106 1175 11BD; # (밎; 밎; 밎; 밎; 밎; ) HANGUL SYLLABLE MIJ
+BC0F;BC0F;1106 1175 11BE;BC0F;1106 1175 11BE; # (ë°; ë°; 및; ë°; 및; ) HANGUL SYLLABLE MIC
+BC10;BC10;1106 1175 11BF;BC10;1106 1175 11BF; # (ë°; ë°; 밐; ë°; 밐; ) HANGUL SYLLABLE MIK
+BC11;BC11;1106 1175 11C0;BC11;1106 1175 11C0; # (밑; 밑; 밑; 밑; 밑; ) HANGUL SYLLABLE MIT
+BC12;BC12;1106 1175 11C1;BC12;1106 1175 11C1; # (ë°’; ë°’; 미á‡; ë°’; 미á‡; ) HANGUL SYLLABLE MIP
+BC13;BC13;1106 1175 11C2;BC13;1106 1175 11C2; # (밓; 밓; 밓; 밓; 밓; ) HANGUL SYLLABLE MIH
+BC14;BC14;1107 1161;BC14;1107 1161; # (바; 바; 바; 바; 바; ) HANGUL SYLLABLE BA
+BC15;BC15;1107 1161 11A8;BC15;1107 1161 11A8; # (박; 박; 박; 박; 박; ) HANGUL SYLLABLE BAG
+BC16;BC16;1107 1161 11A9;BC16;1107 1161 11A9; # (밖; 밖; 밖; 밖; 밖; ) HANGUL SYLLABLE BAGG
+BC17;BC17;1107 1161 11AA;BC17;1107 1161 11AA; # (밗; 밗; 밗; 밗; 밗; ) HANGUL SYLLABLE BAGS
+BC18;BC18;1107 1161 11AB;BC18;1107 1161 11AB; # (반; 반; 반; 반; 반; ) HANGUL SYLLABLE BAN
+BC19;BC19;1107 1161 11AC;BC19;1107 1161 11AC; # (밙; 밙; 밙; 밙; 밙; ) HANGUL SYLLABLE BANJ
+BC1A;BC1A;1107 1161 11AD;BC1A;1107 1161 11AD; # (밚; 밚; 밚; 밚; 밚; ) HANGUL SYLLABLE BANH
+BC1B;BC1B;1107 1161 11AE;BC1B;1107 1161 11AE; # (받; 받; 받; 받; 받; ) HANGUL SYLLABLE BAD
+BC1C;BC1C;1107 1161 11AF;BC1C;1107 1161 11AF; # (발; 발; 발; 발; 발; ) HANGUL SYLLABLE BAL
+BC1D;BC1D;1107 1161 11B0;BC1D;1107 1161 11B0; # (ë°; ë°; 밝; ë°; 밝; ) HANGUL SYLLABLE BALG
+BC1E;BC1E;1107 1161 11B1;BC1E;1107 1161 11B1; # (밞; 밞; 밞; 밞; 밞; ) HANGUL SYLLABLE BALM
+BC1F;BC1F;1107 1161 11B2;BC1F;1107 1161 11B2; # (밟; 밟; 밟; 밟; 밟; ) HANGUL SYLLABLE BALB
+BC20;BC20;1107 1161 11B3;BC20;1107 1161 11B3; # (밠; 밠; 밠; 밠; 밠; ) HANGUL SYLLABLE BALS
+BC21;BC21;1107 1161 11B4;BC21;1107 1161 11B4; # (밡; 밡; 밡; 밡; 밡; ) HANGUL SYLLABLE BALT
+BC22;BC22;1107 1161 11B5;BC22;1107 1161 11B5; # (밢; 밢; 밢; 밢; 밢; ) HANGUL SYLLABLE BALP
+BC23;BC23;1107 1161 11B6;BC23;1107 1161 11B6; # (밣; 밣; 밣; 밣; 밣; ) HANGUL SYLLABLE BALH
+BC24;BC24;1107 1161 11B7;BC24;1107 1161 11B7; # (밤; 밤; 밤; 밤; 밤; ) HANGUL SYLLABLE BAM
+BC25;BC25;1107 1161 11B8;BC25;1107 1161 11B8; # (밥; 밥; 밥; 밥; 밥; ) HANGUL SYLLABLE BAB
+BC26;BC26;1107 1161 11B9;BC26;1107 1161 11B9; # (밦; 밦; 밦; 밦; 밦; ) HANGUL SYLLABLE BABS
+BC27;BC27;1107 1161 11BA;BC27;1107 1161 11BA; # (밧; 밧; 밧; 밧; 밧; ) HANGUL SYLLABLE BAS
+BC28;BC28;1107 1161 11BB;BC28;1107 1161 11BB; # (밨; 밨; 밨; 밨; 밨; ) HANGUL SYLLABLE BASS
+BC29;BC29;1107 1161 11BC;BC29;1107 1161 11BC; # (방; 방; 방; 방; 방; ) HANGUL SYLLABLE BANG
+BC2A;BC2A;1107 1161 11BD;BC2A;1107 1161 11BD; # (밪; 밪; 밪; 밪; 밪; ) HANGUL SYLLABLE BAJ
+BC2B;BC2B;1107 1161 11BE;BC2B;1107 1161 11BE; # (밫; 밫; 밫; 밫; 밫; ) HANGUL SYLLABLE BAC
+BC2C;BC2C;1107 1161 11BF;BC2C;1107 1161 11BF; # (밬; 밬; 밬; 밬; 밬; ) HANGUL SYLLABLE BAK
+BC2D;BC2D;1107 1161 11C0;BC2D;1107 1161 11C0; # (밭; 밭; 밭; 밭; 밭; ) HANGUL SYLLABLE BAT
+BC2E;BC2E;1107 1161 11C1;BC2E;1107 1161 11C1; # (ë°®; ë°®; 바á‡; ë°®; 바á‡; ) HANGUL SYLLABLE BAP
+BC2F;BC2F;1107 1161 11C2;BC2F;1107 1161 11C2; # (밯; 밯; 밯; 밯; 밯; ) HANGUL SYLLABLE BAH
+BC30;BC30;1107 1162;BC30;1107 1162; # (배; 배; 배; 배; 배; ) HANGUL SYLLABLE BAE
+BC31;BC31;1107 1162 11A8;BC31;1107 1162 11A8; # (백; 백; 백; 백; 백; ) HANGUL SYLLABLE BAEG
+BC32;BC32;1107 1162 11A9;BC32;1107 1162 11A9; # (밲; 밲; 밲; 밲; 밲; ) HANGUL SYLLABLE BAEGG
+BC33;BC33;1107 1162 11AA;BC33;1107 1162 11AA; # (밳; 밳; 밳; 밳; 밳; ) HANGUL SYLLABLE BAEGS
+BC34;BC34;1107 1162 11AB;BC34;1107 1162 11AB; # (밴; 밴; 밴; 밴; 밴; ) HANGUL SYLLABLE BAEN
+BC35;BC35;1107 1162 11AC;BC35;1107 1162 11AC; # (밵; 밵; 밵; 밵; 밵; ) HANGUL SYLLABLE BAENJ
+BC36;BC36;1107 1162 11AD;BC36;1107 1162 11AD; # (밶; 밶; 밶; 밶; 밶; ) HANGUL SYLLABLE BAENH
+BC37;BC37;1107 1162 11AE;BC37;1107 1162 11AE; # (밷; 밷; 밷; 밷; 밷; ) HANGUL SYLLABLE BAED
+BC38;BC38;1107 1162 11AF;BC38;1107 1162 11AF; # (밸; 밸; 밸; 밸; 밸; ) HANGUL SYLLABLE BAEL
+BC39;BC39;1107 1162 11B0;BC39;1107 1162 11B0; # (밹; 밹; 밹; 밹; 밹; ) HANGUL SYLLABLE BAELG
+BC3A;BC3A;1107 1162 11B1;BC3A;1107 1162 11B1; # (밺; 밺; 밺; 밺; 밺; ) HANGUL SYLLABLE BAELM
+BC3B;BC3B;1107 1162 11B2;BC3B;1107 1162 11B2; # (밻; 밻; 밻; 밻; 밻; ) HANGUL SYLLABLE BAELB
+BC3C;BC3C;1107 1162 11B3;BC3C;1107 1162 11B3; # (밼; 밼; 밼; 밼; 밼; ) HANGUL SYLLABLE BAELS
+BC3D;BC3D;1107 1162 11B4;BC3D;1107 1162 11B4; # (밽; 밽; 밽; 밽; 밽; ) HANGUL SYLLABLE BAELT
+BC3E;BC3E;1107 1162 11B5;BC3E;1107 1162 11B5; # (밾; 밾; 밾; 밾; 밾; ) HANGUL SYLLABLE BAELP
+BC3F;BC3F;1107 1162 11B6;BC3F;1107 1162 11B6; # (밿; 밿; 밿; 밿; 밿; ) HANGUL SYLLABLE BAELH
+BC40;BC40;1107 1162 11B7;BC40;1107 1162 11B7; # (뱀; 뱀; 뱀; 뱀; 뱀; ) HANGUL SYLLABLE BAEM
+BC41;BC41;1107 1162 11B8;BC41;1107 1162 11B8; # (ë±; ë±; 뱁; ë±; 뱁; ) HANGUL SYLLABLE BAEB
+BC42;BC42;1107 1162 11B9;BC42;1107 1162 11B9; # (뱂; 뱂; 뱂; 뱂; 뱂; ) HANGUL SYLLABLE BAEBS
+BC43;BC43;1107 1162 11BA;BC43;1107 1162 11BA; # (뱃; 뱃; 뱃; 뱃; 뱃; ) HANGUL SYLLABLE BAES
+BC44;BC44;1107 1162 11BB;BC44;1107 1162 11BB; # (뱄; 뱄; 뱄; 뱄; 뱄; ) HANGUL SYLLABLE BAESS
+BC45;BC45;1107 1162 11BC;BC45;1107 1162 11BC; # (뱅; 뱅; 뱅; 뱅; 뱅; ) HANGUL SYLLABLE BAENG
+BC46;BC46;1107 1162 11BD;BC46;1107 1162 11BD; # (뱆; 뱆; 뱆; 뱆; 뱆; ) HANGUL SYLLABLE BAEJ
+BC47;BC47;1107 1162 11BE;BC47;1107 1162 11BE; # (뱇; 뱇; 뱇; 뱇; 뱇; ) HANGUL SYLLABLE BAEC
+BC48;BC48;1107 1162 11BF;BC48;1107 1162 11BF; # (뱈; 뱈; 뱈; 뱈; 뱈; ) HANGUL SYLLABLE BAEK
+BC49;BC49;1107 1162 11C0;BC49;1107 1162 11C0; # (뱉; 뱉; 뱉; 뱉; 뱉; ) HANGUL SYLLABLE BAET
+BC4A;BC4A;1107 1162 11C1;BC4A;1107 1162 11C1; # (뱊; 뱊; 배á‡; 뱊; 배á‡; ) HANGUL SYLLABLE BAEP
+BC4B;BC4B;1107 1162 11C2;BC4B;1107 1162 11C2; # (뱋; 뱋; 뱋; 뱋; 뱋; ) HANGUL SYLLABLE BAEH
+BC4C;BC4C;1107 1163;BC4C;1107 1163; # (뱌; 뱌; 뱌; 뱌; 뱌; ) HANGUL SYLLABLE BYA
+BC4D;BC4D;1107 1163 11A8;BC4D;1107 1163 11A8; # (ë±; ë±; 뱍; ë±; 뱍; ) HANGUL SYLLABLE BYAG
+BC4E;BC4E;1107 1163 11A9;BC4E;1107 1163 11A9; # (뱎; 뱎; 뱎; 뱎; 뱎; ) HANGUL SYLLABLE BYAGG
+BC4F;BC4F;1107 1163 11AA;BC4F;1107 1163 11AA; # (ë±; ë±; 뱏; ë±; 뱏; ) HANGUL SYLLABLE BYAGS
+BC50;BC50;1107 1163 11AB;BC50;1107 1163 11AB; # (ë±; ë±; 뱐; ë±; 뱐; ) HANGUL SYLLABLE BYAN
+BC51;BC51;1107 1163 11AC;BC51;1107 1163 11AC; # (뱑; 뱑; 뱑; 뱑; 뱑; ) HANGUL SYLLABLE BYANJ
+BC52;BC52;1107 1163 11AD;BC52;1107 1163 11AD; # (뱒; 뱒; 뱒; 뱒; 뱒; ) HANGUL SYLLABLE BYANH
+BC53;BC53;1107 1163 11AE;BC53;1107 1163 11AE; # (뱓; 뱓; 뱓; 뱓; 뱓; ) HANGUL SYLLABLE BYAD
+BC54;BC54;1107 1163 11AF;BC54;1107 1163 11AF; # (뱔; 뱔; 뱔; 뱔; 뱔; ) HANGUL SYLLABLE BYAL
+BC55;BC55;1107 1163 11B0;BC55;1107 1163 11B0; # (뱕; 뱕; 뱕; 뱕; 뱕; ) HANGUL SYLLABLE BYALG
+BC56;BC56;1107 1163 11B1;BC56;1107 1163 11B1; # (뱖; 뱖; 뱖; 뱖; 뱖; ) HANGUL SYLLABLE BYALM
+BC57;BC57;1107 1163 11B2;BC57;1107 1163 11B2; # (뱗; 뱗; 뱗; 뱗; 뱗; ) HANGUL SYLLABLE BYALB
+BC58;BC58;1107 1163 11B3;BC58;1107 1163 11B3; # (뱘; 뱘; 뱘; 뱘; 뱘; ) HANGUL SYLLABLE BYALS
+BC59;BC59;1107 1163 11B4;BC59;1107 1163 11B4; # (뱙; 뱙; 뱙; 뱙; 뱙; ) HANGUL SYLLABLE BYALT
+BC5A;BC5A;1107 1163 11B5;BC5A;1107 1163 11B5; # (뱚; 뱚; 뱚; 뱚; 뱚; ) HANGUL SYLLABLE BYALP
+BC5B;BC5B;1107 1163 11B6;BC5B;1107 1163 11B6; # (뱛; 뱛; 뱛; 뱛; 뱛; ) HANGUL SYLLABLE BYALH
+BC5C;BC5C;1107 1163 11B7;BC5C;1107 1163 11B7; # (뱜; 뱜; 뱜; 뱜; 뱜; ) HANGUL SYLLABLE BYAM
+BC5D;BC5D;1107 1163 11B8;BC5D;1107 1163 11B8; # (ë±; ë±; 뱝; ë±; 뱝; ) HANGUL SYLLABLE BYAB
+BC5E;BC5E;1107 1163 11B9;BC5E;1107 1163 11B9; # (뱞; 뱞; 뱞; 뱞; 뱞; ) HANGUL SYLLABLE BYABS
+BC5F;BC5F;1107 1163 11BA;BC5F;1107 1163 11BA; # (뱟; 뱟; 뱟; 뱟; 뱟; ) HANGUL SYLLABLE BYAS
+BC60;BC60;1107 1163 11BB;BC60;1107 1163 11BB; # (뱠; 뱠; 뱠; 뱠; 뱠; ) HANGUL SYLLABLE BYASS
+BC61;BC61;1107 1163 11BC;BC61;1107 1163 11BC; # (뱡; 뱡; 뱡; 뱡; 뱡; ) HANGUL SYLLABLE BYANG
+BC62;BC62;1107 1163 11BD;BC62;1107 1163 11BD; # (뱢; 뱢; 뱢; 뱢; 뱢; ) HANGUL SYLLABLE BYAJ
+BC63;BC63;1107 1163 11BE;BC63;1107 1163 11BE; # (뱣; 뱣; 뱣; 뱣; 뱣; ) HANGUL SYLLABLE BYAC
+BC64;BC64;1107 1163 11BF;BC64;1107 1163 11BF; # (뱤; 뱤; 뱤; 뱤; 뱤; ) HANGUL SYLLABLE BYAK
+BC65;BC65;1107 1163 11C0;BC65;1107 1163 11C0; # (뱥; 뱥; 뱥; 뱥; 뱥; ) HANGUL SYLLABLE BYAT
+BC66;BC66;1107 1163 11C1;BC66;1107 1163 11C1; # (뱦; 뱦; 뱌á‡; 뱦; 뱌á‡; ) HANGUL SYLLABLE BYAP
+BC67;BC67;1107 1163 11C2;BC67;1107 1163 11C2; # (뱧; 뱧; 뱧; 뱧; 뱧; ) HANGUL SYLLABLE BYAH
+BC68;BC68;1107 1164;BC68;1107 1164; # (뱨; 뱨; 뱨; 뱨; 뱨; ) HANGUL SYLLABLE BYAE
+BC69;BC69;1107 1164 11A8;BC69;1107 1164 11A8; # (뱩; 뱩; 뱩; 뱩; 뱩; ) HANGUL SYLLABLE BYAEG
+BC6A;BC6A;1107 1164 11A9;BC6A;1107 1164 11A9; # (뱪; 뱪; 뱪; 뱪; 뱪; ) HANGUL SYLLABLE BYAEGG
+BC6B;BC6B;1107 1164 11AA;BC6B;1107 1164 11AA; # (뱫; 뱫; 뱫; 뱫; 뱫; ) HANGUL SYLLABLE BYAEGS
+BC6C;BC6C;1107 1164 11AB;BC6C;1107 1164 11AB; # (뱬; 뱬; 뱬; 뱬; 뱬; ) HANGUL SYLLABLE BYAEN
+BC6D;BC6D;1107 1164 11AC;BC6D;1107 1164 11AC; # (뱭; 뱭; 뱭; 뱭; 뱭; ) HANGUL SYLLABLE BYAENJ
+BC6E;BC6E;1107 1164 11AD;BC6E;1107 1164 11AD; # (뱮; 뱮; 뱮; 뱮; 뱮; ) HANGUL SYLLABLE BYAENH
+BC6F;BC6F;1107 1164 11AE;BC6F;1107 1164 11AE; # (뱯; 뱯; 뱯; 뱯; 뱯; ) HANGUL SYLLABLE BYAED
+BC70;BC70;1107 1164 11AF;BC70;1107 1164 11AF; # (뱰; 뱰; 뱰; 뱰; 뱰; ) HANGUL SYLLABLE BYAEL
+BC71;BC71;1107 1164 11B0;BC71;1107 1164 11B0; # (뱱; 뱱; 뱱; 뱱; 뱱; ) HANGUL SYLLABLE BYAELG
+BC72;BC72;1107 1164 11B1;BC72;1107 1164 11B1; # (뱲; 뱲; 뱲; 뱲; 뱲; ) HANGUL SYLLABLE BYAELM
+BC73;BC73;1107 1164 11B2;BC73;1107 1164 11B2; # (뱳; 뱳; 뱳; 뱳; 뱳; ) HANGUL SYLLABLE BYAELB
+BC74;BC74;1107 1164 11B3;BC74;1107 1164 11B3; # (뱴; 뱴; 뱴; 뱴; 뱴; ) HANGUL SYLLABLE BYAELS
+BC75;BC75;1107 1164 11B4;BC75;1107 1164 11B4; # (뱵; 뱵; 뱵; 뱵; 뱵; ) HANGUL SYLLABLE BYAELT
+BC76;BC76;1107 1164 11B5;BC76;1107 1164 11B5; # (뱶; 뱶; 뱶; 뱶; 뱶; ) HANGUL SYLLABLE BYAELP
+BC77;BC77;1107 1164 11B6;BC77;1107 1164 11B6; # (뱷; 뱷; 뱷; 뱷; 뱷; ) HANGUL SYLLABLE BYAELH
+BC78;BC78;1107 1164 11B7;BC78;1107 1164 11B7; # (뱸; 뱸; 뱸; 뱸; 뱸; ) HANGUL SYLLABLE BYAEM
+BC79;BC79;1107 1164 11B8;BC79;1107 1164 11B8; # (뱹; 뱹; 뱹; 뱹; 뱹; ) HANGUL SYLLABLE BYAEB
+BC7A;BC7A;1107 1164 11B9;BC7A;1107 1164 11B9; # (뱺; 뱺; 뱺; 뱺; 뱺; ) HANGUL SYLLABLE BYAEBS
+BC7B;BC7B;1107 1164 11BA;BC7B;1107 1164 11BA; # (뱻; 뱻; 뱻; 뱻; 뱻; ) HANGUL SYLLABLE BYAES
+BC7C;BC7C;1107 1164 11BB;BC7C;1107 1164 11BB; # (뱼; 뱼; 뱼; 뱼; 뱼; ) HANGUL SYLLABLE BYAESS
+BC7D;BC7D;1107 1164 11BC;BC7D;1107 1164 11BC; # (뱽; 뱽; 뱽; 뱽; 뱽; ) HANGUL SYLLABLE BYAENG
+BC7E;BC7E;1107 1164 11BD;BC7E;1107 1164 11BD; # (뱾; 뱾; 뱾; 뱾; 뱾; ) HANGUL SYLLABLE BYAEJ
+BC7F;BC7F;1107 1164 11BE;BC7F;1107 1164 11BE; # (뱿; 뱿; 뱿; 뱿; 뱿; ) HANGUL SYLLABLE BYAEC
+BC80;BC80;1107 1164 11BF;BC80;1107 1164 11BF; # (벀; 벀; 벀; 벀; 벀; ) HANGUL SYLLABLE BYAEK
+BC81;BC81;1107 1164 11C0;BC81;1107 1164 11C0; # (ë²; ë²; 벁; ë²; 벁; ) HANGUL SYLLABLE BYAET
+BC82;BC82;1107 1164 11C1;BC82;1107 1164 11C1; # (벂; 벂; 뱨á‡; 벂; 뱨á‡; ) HANGUL SYLLABLE BYAEP
+BC83;BC83;1107 1164 11C2;BC83;1107 1164 11C2; # (벃; 벃; 벃; 벃; 벃; ) HANGUL SYLLABLE BYAEH
+BC84;BC84;1107 1165;BC84;1107 1165; # (버; 버; 버; 버; 버; ) HANGUL SYLLABLE BEO
+BC85;BC85;1107 1165 11A8;BC85;1107 1165 11A8; # (벅; 벅; 벅; 벅; 벅; ) HANGUL SYLLABLE BEOG
+BC86;BC86;1107 1165 11A9;BC86;1107 1165 11A9; # (벆; 벆; 벆; 벆; 벆; ) HANGUL SYLLABLE BEOGG
+BC87;BC87;1107 1165 11AA;BC87;1107 1165 11AA; # (벇; 벇; 벇; 벇; 벇; ) HANGUL SYLLABLE BEOGS
+BC88;BC88;1107 1165 11AB;BC88;1107 1165 11AB; # (번; 번; 번; 번; 번; ) HANGUL SYLLABLE BEON
+BC89;BC89;1107 1165 11AC;BC89;1107 1165 11AC; # (벉; 벉; 벉; 벉; 벉; ) HANGUL SYLLABLE BEONJ
+BC8A;BC8A;1107 1165 11AD;BC8A;1107 1165 11AD; # (벊; 벊; 벊; 벊; 벊; ) HANGUL SYLLABLE BEONH
+BC8B;BC8B;1107 1165 11AE;BC8B;1107 1165 11AE; # (벋; 벋; 벋; 벋; 벋; ) HANGUL SYLLABLE BEOD
+BC8C;BC8C;1107 1165 11AF;BC8C;1107 1165 11AF; # (벌; 벌; 벌; 벌; 벌; ) HANGUL SYLLABLE BEOL
+BC8D;BC8D;1107 1165 11B0;BC8D;1107 1165 11B0; # (ë²; ë²; 벍; ë²; 벍; ) HANGUL SYLLABLE BEOLG
+BC8E;BC8E;1107 1165 11B1;BC8E;1107 1165 11B1; # (벎; 벎; 벎; 벎; 벎; ) HANGUL SYLLABLE BEOLM
+BC8F;BC8F;1107 1165 11B2;BC8F;1107 1165 11B2; # (ë²; ë²; 벏; ë²; 벏; ) HANGUL SYLLABLE BEOLB
+BC90;BC90;1107 1165 11B3;BC90;1107 1165 11B3; # (ë²; ë²; 벐; ë²; 벐; ) HANGUL SYLLABLE BEOLS
+BC91;BC91;1107 1165 11B4;BC91;1107 1165 11B4; # (벑; 벑; 벑; 벑; 벑; ) HANGUL SYLLABLE BEOLT
+BC92;BC92;1107 1165 11B5;BC92;1107 1165 11B5; # (벒; 벒; 벒; 벒; 벒; ) HANGUL SYLLABLE BEOLP
+BC93;BC93;1107 1165 11B6;BC93;1107 1165 11B6; # (벓; 벓; 벓; 벓; 벓; ) HANGUL SYLLABLE BEOLH
+BC94;BC94;1107 1165 11B7;BC94;1107 1165 11B7; # (범; 범; 범; 범; 범; ) HANGUL SYLLABLE BEOM
+BC95;BC95;1107 1165 11B8;BC95;1107 1165 11B8; # (법; 법; 법; 법; 법; ) HANGUL SYLLABLE BEOB
+BC96;BC96;1107 1165 11B9;BC96;1107 1165 11B9; # (벖; 벖; 벖; 벖; 벖; ) HANGUL SYLLABLE BEOBS
+BC97;BC97;1107 1165 11BA;BC97;1107 1165 11BA; # (벗; 벗; 벗; 벗; 벗; ) HANGUL SYLLABLE BEOS
+BC98;BC98;1107 1165 11BB;BC98;1107 1165 11BB; # (벘; 벘; 벘; 벘; 벘; ) HANGUL SYLLABLE BEOSS
+BC99;BC99;1107 1165 11BC;BC99;1107 1165 11BC; # (벙; 벙; 벙; 벙; 벙; ) HANGUL SYLLABLE BEONG
+BC9A;BC9A;1107 1165 11BD;BC9A;1107 1165 11BD; # (벚; 벚; 벚; 벚; 벚; ) HANGUL SYLLABLE BEOJ
+BC9B;BC9B;1107 1165 11BE;BC9B;1107 1165 11BE; # (벛; 벛; 벛; 벛; 벛; ) HANGUL SYLLABLE BEOC
+BC9C;BC9C;1107 1165 11BF;BC9C;1107 1165 11BF; # (벜; 벜; 벜; 벜; 벜; ) HANGUL SYLLABLE BEOK
+BC9D;BC9D;1107 1165 11C0;BC9D;1107 1165 11C0; # (ë²; ë²; 벝; ë²; 벝; ) HANGUL SYLLABLE BEOT
+BC9E;BC9E;1107 1165 11C1;BC9E;1107 1165 11C1; # (벞; 벞; 버á‡; 벞; 버á‡; ) HANGUL SYLLABLE BEOP
+BC9F;BC9F;1107 1165 11C2;BC9F;1107 1165 11C2; # (벟; 벟; 벟; 벟; 벟; ) HANGUL SYLLABLE BEOH
+BCA0;BCA0;1107 1166;BCA0;1107 1166; # (베; 베; 베; 베; 베; ) HANGUL SYLLABLE BE
+BCA1;BCA1;1107 1166 11A8;BCA1;1107 1166 11A8; # (벡; 벡; 벡; 벡; 벡; ) HANGUL SYLLABLE BEG
+BCA2;BCA2;1107 1166 11A9;BCA2;1107 1166 11A9; # (벢; 벢; 벢; 벢; 벢; ) HANGUL SYLLABLE BEGG
+BCA3;BCA3;1107 1166 11AA;BCA3;1107 1166 11AA; # (벣; 벣; 벣; 벣; 벣; ) HANGUL SYLLABLE BEGS
+BCA4;BCA4;1107 1166 11AB;BCA4;1107 1166 11AB; # (벤; 벤; 벤; 벤; 벤; ) HANGUL SYLLABLE BEN
+BCA5;BCA5;1107 1166 11AC;BCA5;1107 1166 11AC; # (벥; 벥; 벥; 벥; 벥; ) HANGUL SYLLABLE BENJ
+BCA6;BCA6;1107 1166 11AD;BCA6;1107 1166 11AD; # (벦; 벦; 벦; 벦; 벦; ) HANGUL SYLLABLE BENH
+BCA7;BCA7;1107 1166 11AE;BCA7;1107 1166 11AE; # (벧; 벧; 벧; 벧; 벧; ) HANGUL SYLLABLE BED
+BCA8;BCA8;1107 1166 11AF;BCA8;1107 1166 11AF; # (벨; 벨; 벨; 벨; 벨; ) HANGUL SYLLABLE BEL
+BCA9;BCA9;1107 1166 11B0;BCA9;1107 1166 11B0; # (벩; 벩; 벩; 벩; 벩; ) HANGUL SYLLABLE BELG
+BCAA;BCAA;1107 1166 11B1;BCAA;1107 1166 11B1; # (벪; 벪; 벪; 벪; 벪; ) HANGUL SYLLABLE BELM
+BCAB;BCAB;1107 1166 11B2;BCAB;1107 1166 11B2; # (벫; 벫; 벫; 벫; 벫; ) HANGUL SYLLABLE BELB
+BCAC;BCAC;1107 1166 11B3;BCAC;1107 1166 11B3; # (벬; 벬; 벬; 벬; 벬; ) HANGUL SYLLABLE BELS
+BCAD;BCAD;1107 1166 11B4;BCAD;1107 1166 11B4; # (벭; 벭; 벭; 벭; 벭; ) HANGUL SYLLABLE BELT
+BCAE;BCAE;1107 1166 11B5;BCAE;1107 1166 11B5; # (벮; 벮; 벮; 벮; 벮; ) HANGUL SYLLABLE BELP
+BCAF;BCAF;1107 1166 11B6;BCAF;1107 1166 11B6; # (벯; 벯; 벯; 벯; 벯; ) HANGUL SYLLABLE BELH
+BCB0;BCB0;1107 1166 11B7;BCB0;1107 1166 11B7; # (벰; 벰; 벰; 벰; 벰; ) HANGUL SYLLABLE BEM
+BCB1;BCB1;1107 1166 11B8;BCB1;1107 1166 11B8; # (벱; 벱; 벱; 벱; 벱; ) HANGUL SYLLABLE BEB
+BCB2;BCB2;1107 1166 11B9;BCB2;1107 1166 11B9; # (벲; 벲; 벲; 벲; 벲; ) HANGUL SYLLABLE BEBS
+BCB3;BCB3;1107 1166 11BA;BCB3;1107 1166 11BA; # (벳; 벳; 벳; 벳; 벳; ) HANGUL SYLLABLE BES
+BCB4;BCB4;1107 1166 11BB;BCB4;1107 1166 11BB; # (벴; 벴; 벴; 벴; 벴; ) HANGUL SYLLABLE BESS
+BCB5;BCB5;1107 1166 11BC;BCB5;1107 1166 11BC; # (벵; 벵; 벵; 벵; 벵; ) HANGUL SYLLABLE BENG
+BCB6;BCB6;1107 1166 11BD;BCB6;1107 1166 11BD; # (벶; 벶; 벶; 벶; 벶; ) HANGUL SYLLABLE BEJ
+BCB7;BCB7;1107 1166 11BE;BCB7;1107 1166 11BE; # (벷; 벷; 벷; 벷; 벷; ) HANGUL SYLLABLE BEC
+BCB8;BCB8;1107 1166 11BF;BCB8;1107 1166 11BF; # (벸; 벸; 벸; 벸; 벸; ) HANGUL SYLLABLE BEK
+BCB9;BCB9;1107 1166 11C0;BCB9;1107 1166 11C0; # (벹; 벹; 벹; 벹; 벹; ) HANGUL SYLLABLE BET
+BCBA;BCBA;1107 1166 11C1;BCBA;1107 1166 11C1; # (벺; 벺; 베á‡; 벺; 베á‡; ) HANGUL SYLLABLE BEP
+BCBB;BCBB;1107 1166 11C2;BCBB;1107 1166 11C2; # (벻; 벻; 벻; 벻; 벻; ) HANGUL SYLLABLE BEH
+BCBC;BCBC;1107 1167;BCBC;1107 1167; # (벼; 벼; 벼; 벼; 벼; ) HANGUL SYLLABLE BYEO
+BCBD;BCBD;1107 1167 11A8;BCBD;1107 1167 11A8; # (벽; 벽; 벽; 벽; 벽; ) HANGUL SYLLABLE BYEOG
+BCBE;BCBE;1107 1167 11A9;BCBE;1107 1167 11A9; # (벾; 벾; 벾; 벾; 벾; ) HANGUL SYLLABLE BYEOGG
+BCBF;BCBF;1107 1167 11AA;BCBF;1107 1167 11AA; # (벿; 벿; 벿; 벿; 벿; ) HANGUL SYLLABLE BYEOGS
+BCC0;BCC0;1107 1167 11AB;BCC0;1107 1167 11AB; # (변; 변; 변; 변; 변; ) HANGUL SYLLABLE BYEON
+BCC1;BCC1;1107 1167 11AC;BCC1;1107 1167 11AC; # (ë³; ë³; 볁; ë³; 볁; ) HANGUL SYLLABLE BYEONJ
+BCC2;BCC2;1107 1167 11AD;BCC2;1107 1167 11AD; # (볂; 볂; 볂; 볂; 볂; ) HANGUL SYLLABLE BYEONH
+BCC3;BCC3;1107 1167 11AE;BCC3;1107 1167 11AE; # (볃; 볃; 볃; 볃; 볃; ) HANGUL SYLLABLE BYEOD
+BCC4;BCC4;1107 1167 11AF;BCC4;1107 1167 11AF; # (별; 별; 별; 별; 별; ) HANGUL SYLLABLE BYEOL
+BCC5;BCC5;1107 1167 11B0;BCC5;1107 1167 11B0; # (볅; 볅; 볅; 볅; 볅; ) HANGUL SYLLABLE BYEOLG
+BCC6;BCC6;1107 1167 11B1;BCC6;1107 1167 11B1; # (볆; 볆; 볆; 볆; 볆; ) HANGUL SYLLABLE BYEOLM
+BCC7;BCC7;1107 1167 11B2;BCC7;1107 1167 11B2; # (볇; 볇; 볇; 볇; 볇; ) HANGUL SYLLABLE BYEOLB
+BCC8;BCC8;1107 1167 11B3;BCC8;1107 1167 11B3; # (볈; 볈; 볈; 볈; 볈; ) HANGUL SYLLABLE BYEOLS
+BCC9;BCC9;1107 1167 11B4;BCC9;1107 1167 11B4; # (볉; 볉; 볉; 볉; 볉; ) HANGUL SYLLABLE BYEOLT
+BCCA;BCCA;1107 1167 11B5;BCCA;1107 1167 11B5; # (볊; 볊; 볊; 볊; 볊; ) HANGUL SYLLABLE BYEOLP
+BCCB;BCCB;1107 1167 11B6;BCCB;1107 1167 11B6; # (볋; 볋; 볋; 볋; 볋; ) HANGUL SYLLABLE BYEOLH
+BCCC;BCCC;1107 1167 11B7;BCCC;1107 1167 11B7; # (볌; 볌; 볌; 볌; 볌; ) HANGUL SYLLABLE BYEOM
+BCCD;BCCD;1107 1167 11B8;BCCD;1107 1167 11B8; # (ë³; ë³; 볍; ë³; 볍; ) HANGUL SYLLABLE BYEOB
+BCCE;BCCE;1107 1167 11B9;BCCE;1107 1167 11B9; # (볎; 볎; 볎; 볎; 볎; ) HANGUL SYLLABLE BYEOBS
+BCCF;BCCF;1107 1167 11BA;BCCF;1107 1167 11BA; # (ë³; ë³; 볏; ë³; 볏; ) HANGUL SYLLABLE BYEOS
+BCD0;BCD0;1107 1167 11BB;BCD0;1107 1167 11BB; # (ë³; ë³; 볐; ë³; 볐; ) HANGUL SYLLABLE BYEOSS
+BCD1;BCD1;1107 1167 11BC;BCD1;1107 1167 11BC; # (병; 병; 병; 병; 병; ) HANGUL SYLLABLE BYEONG
+BCD2;BCD2;1107 1167 11BD;BCD2;1107 1167 11BD; # (볒; 볒; 볒; 볒; 볒; ) HANGUL SYLLABLE BYEOJ
+BCD3;BCD3;1107 1167 11BE;BCD3;1107 1167 11BE; # (볓; 볓; 볓; 볓; 볓; ) HANGUL SYLLABLE BYEOC
+BCD4;BCD4;1107 1167 11BF;BCD4;1107 1167 11BF; # (볔; 볔; 볔; 볔; 볔; ) HANGUL SYLLABLE BYEOK
+BCD5;BCD5;1107 1167 11C0;BCD5;1107 1167 11C0; # (볕; 볕; 볕; 볕; 볕; ) HANGUL SYLLABLE BYEOT
+BCD6;BCD6;1107 1167 11C1;BCD6;1107 1167 11C1; # (ë³–; ë³–; 벼á‡; ë³–; 벼á‡; ) HANGUL SYLLABLE BYEOP
+BCD7;BCD7;1107 1167 11C2;BCD7;1107 1167 11C2; # (볗; 볗; 볗; 볗; 볗; ) HANGUL SYLLABLE BYEOH
+BCD8;BCD8;1107 1168;BCD8;1107 1168; # (볘; 볘; 볘; 볘; 볘; ) HANGUL SYLLABLE BYE
+BCD9;BCD9;1107 1168 11A8;BCD9;1107 1168 11A8; # (볙; 볙; 볙; 볙; 볙; ) HANGUL SYLLABLE BYEG
+BCDA;BCDA;1107 1168 11A9;BCDA;1107 1168 11A9; # (볚; 볚; 볚; 볚; 볚; ) HANGUL SYLLABLE BYEGG
+BCDB;BCDB;1107 1168 11AA;BCDB;1107 1168 11AA; # (볛; 볛; 볛; 볛; 볛; ) HANGUL SYLLABLE BYEGS
+BCDC;BCDC;1107 1168 11AB;BCDC;1107 1168 11AB; # (볜; 볜; 볜; 볜; 볜; ) HANGUL SYLLABLE BYEN
+BCDD;BCDD;1107 1168 11AC;BCDD;1107 1168 11AC; # (ë³; ë³; 볝; ë³; 볝; ) HANGUL SYLLABLE BYENJ
+BCDE;BCDE;1107 1168 11AD;BCDE;1107 1168 11AD; # (볞; 볞; 볞; 볞; 볞; ) HANGUL SYLLABLE BYENH
+BCDF;BCDF;1107 1168 11AE;BCDF;1107 1168 11AE; # (볟; 볟; 볟; 볟; 볟; ) HANGUL SYLLABLE BYED
+BCE0;BCE0;1107 1168 11AF;BCE0;1107 1168 11AF; # (볠; 볠; 볠; 볠; 볠; ) HANGUL SYLLABLE BYEL
+BCE1;BCE1;1107 1168 11B0;BCE1;1107 1168 11B0; # (볡; 볡; 볡; 볡; 볡; ) HANGUL SYLLABLE BYELG
+BCE2;BCE2;1107 1168 11B1;BCE2;1107 1168 11B1; # (볢; 볢; 볢; 볢; 볢; ) HANGUL SYLLABLE BYELM
+BCE3;BCE3;1107 1168 11B2;BCE3;1107 1168 11B2; # (볣; 볣; 볣; 볣; 볣; ) HANGUL SYLLABLE BYELB
+BCE4;BCE4;1107 1168 11B3;BCE4;1107 1168 11B3; # (볤; 볤; 볤; 볤; 볤; ) HANGUL SYLLABLE BYELS
+BCE5;BCE5;1107 1168 11B4;BCE5;1107 1168 11B4; # (볥; 볥; 볥; 볥; 볥; ) HANGUL SYLLABLE BYELT
+BCE6;BCE6;1107 1168 11B5;BCE6;1107 1168 11B5; # (볦; 볦; 볦; 볦; 볦; ) HANGUL SYLLABLE BYELP
+BCE7;BCE7;1107 1168 11B6;BCE7;1107 1168 11B6; # (볧; 볧; 볧; 볧; 볧; ) HANGUL SYLLABLE BYELH
+BCE8;BCE8;1107 1168 11B7;BCE8;1107 1168 11B7; # (볨; 볨; 볨; 볨; 볨; ) HANGUL SYLLABLE BYEM
+BCE9;BCE9;1107 1168 11B8;BCE9;1107 1168 11B8; # (볩; 볩; 볩; 볩; 볩; ) HANGUL SYLLABLE BYEB
+BCEA;BCEA;1107 1168 11B9;BCEA;1107 1168 11B9; # (볪; 볪; 볪; 볪; 볪; ) HANGUL SYLLABLE BYEBS
+BCEB;BCEB;1107 1168 11BA;BCEB;1107 1168 11BA; # (볫; 볫; 볫; 볫; 볫; ) HANGUL SYLLABLE BYES
+BCEC;BCEC;1107 1168 11BB;BCEC;1107 1168 11BB; # (볬; 볬; 볬; 볬; 볬; ) HANGUL SYLLABLE BYESS
+BCED;BCED;1107 1168 11BC;BCED;1107 1168 11BC; # (볭; 볭; 볭; 볭; 볭; ) HANGUL SYLLABLE BYENG
+BCEE;BCEE;1107 1168 11BD;BCEE;1107 1168 11BD; # (볮; 볮; 볮; 볮; 볮; ) HANGUL SYLLABLE BYEJ
+BCEF;BCEF;1107 1168 11BE;BCEF;1107 1168 11BE; # (볯; 볯; 볯; 볯; 볯; ) HANGUL SYLLABLE BYEC
+BCF0;BCF0;1107 1168 11BF;BCF0;1107 1168 11BF; # (볰; 볰; 볰; 볰; 볰; ) HANGUL SYLLABLE BYEK
+BCF1;BCF1;1107 1168 11C0;BCF1;1107 1168 11C0; # (볱; 볱; 볱; 볱; 볱; ) HANGUL SYLLABLE BYET
+BCF2;BCF2;1107 1168 11C1;BCF2;1107 1168 11C1; # (ë³²; ë³²; 볘á‡; ë³²; 볘á‡; ) HANGUL SYLLABLE BYEP
+BCF3;BCF3;1107 1168 11C2;BCF3;1107 1168 11C2; # (볳; 볳; 볳; 볳; 볳; ) HANGUL SYLLABLE BYEH
+BCF4;BCF4;1107 1169;BCF4;1107 1169; # (보; 보; 보; 보; 보; ) HANGUL SYLLABLE BO
+BCF5;BCF5;1107 1169 11A8;BCF5;1107 1169 11A8; # (복; 복; 복; 복; 복; ) HANGUL SYLLABLE BOG
+BCF6;BCF6;1107 1169 11A9;BCF6;1107 1169 11A9; # (볶; 볶; 볶; 볶; 볶; ) HANGUL SYLLABLE BOGG
+BCF7;BCF7;1107 1169 11AA;BCF7;1107 1169 11AA; # (볷; 볷; 볷; 볷; 볷; ) HANGUL SYLLABLE BOGS
+BCF8;BCF8;1107 1169 11AB;BCF8;1107 1169 11AB; # (본; 본; 본; 본; 본; ) HANGUL SYLLABLE BON
+BCF9;BCF9;1107 1169 11AC;BCF9;1107 1169 11AC; # (볹; 볹; 볹; 볹; 볹; ) HANGUL SYLLABLE BONJ
+BCFA;BCFA;1107 1169 11AD;BCFA;1107 1169 11AD; # (볺; 볺; 볺; 볺; 볺; ) HANGUL SYLLABLE BONH
+BCFB;BCFB;1107 1169 11AE;BCFB;1107 1169 11AE; # (볻; 볻; 볻; 볻; 볻; ) HANGUL SYLLABLE BOD
+BCFC;BCFC;1107 1169 11AF;BCFC;1107 1169 11AF; # (볼; 볼; 볼; 볼; 볼; ) HANGUL SYLLABLE BOL
+BCFD;BCFD;1107 1169 11B0;BCFD;1107 1169 11B0; # (볽; 볽; 볽; 볽; 볽; ) HANGUL SYLLABLE BOLG
+BCFE;BCFE;1107 1169 11B1;BCFE;1107 1169 11B1; # (볾; 볾; 볾; 볾; 볾; ) HANGUL SYLLABLE BOLM
+BCFF;BCFF;1107 1169 11B2;BCFF;1107 1169 11B2; # (볿; 볿; 볿; 볿; 볿; ) HANGUL SYLLABLE BOLB
+BD00;BD00;1107 1169 11B3;BD00;1107 1169 11B3; # (봀; 봀; 봀; 봀; 봀; ) HANGUL SYLLABLE BOLS
+BD01;BD01;1107 1169 11B4;BD01;1107 1169 11B4; # (ë´; ë´; 봁; ë´; 봁; ) HANGUL SYLLABLE BOLT
+BD02;BD02;1107 1169 11B5;BD02;1107 1169 11B5; # (봂; 봂; 봂; 봂; 봂; ) HANGUL SYLLABLE BOLP
+BD03;BD03;1107 1169 11B6;BD03;1107 1169 11B6; # (봃; 봃; 봃; 봃; 봃; ) HANGUL SYLLABLE BOLH
+BD04;BD04;1107 1169 11B7;BD04;1107 1169 11B7; # (봄; 봄; 봄; 봄; 봄; ) HANGUL SYLLABLE BOM
+BD05;BD05;1107 1169 11B8;BD05;1107 1169 11B8; # (봅; 봅; 봅; 봅; 봅; ) HANGUL SYLLABLE BOB
+BD06;BD06;1107 1169 11B9;BD06;1107 1169 11B9; # (봆; 봆; 봆; 봆; 봆; ) HANGUL SYLLABLE BOBS
+BD07;BD07;1107 1169 11BA;BD07;1107 1169 11BA; # (봇; 봇; 봇; 봇; 봇; ) HANGUL SYLLABLE BOS
+BD08;BD08;1107 1169 11BB;BD08;1107 1169 11BB; # (봈; 봈; 봈; 봈; 봈; ) HANGUL SYLLABLE BOSS
+BD09;BD09;1107 1169 11BC;BD09;1107 1169 11BC; # (봉; 봉; 봉; 봉; 봉; ) HANGUL SYLLABLE BONG
+BD0A;BD0A;1107 1169 11BD;BD0A;1107 1169 11BD; # (봊; 봊; 봊; 봊; 봊; ) HANGUL SYLLABLE BOJ
+BD0B;BD0B;1107 1169 11BE;BD0B;1107 1169 11BE; # (봋; 봋; 봋; 봋; 봋; ) HANGUL SYLLABLE BOC
+BD0C;BD0C;1107 1169 11BF;BD0C;1107 1169 11BF; # (봌; 봌; 봌; 봌; 봌; ) HANGUL SYLLABLE BOK
+BD0D;BD0D;1107 1169 11C0;BD0D;1107 1169 11C0; # (ë´; ë´; 봍; ë´; 봍; ) HANGUL SYLLABLE BOT
+BD0E;BD0E;1107 1169 11C1;BD0E;1107 1169 11C1; # (ë´Ž; ë´Ž; 보á‡; ë´Ž; 보á‡; ) HANGUL SYLLABLE BOP
+BD0F;BD0F;1107 1169 11C2;BD0F;1107 1169 11C2; # (ë´; ë´; 봏; ë´; 봏; ) HANGUL SYLLABLE BOH
+BD10;BD10;1107 116A;BD10;1107 116A; # (ë´; ë´; 봐; ë´; 봐; ) HANGUL SYLLABLE BWA
+BD11;BD11;1107 116A 11A8;BD11;1107 116A 11A8; # (봑; 봑; 봑; 봑; 봑; ) HANGUL SYLLABLE BWAG
+BD12;BD12;1107 116A 11A9;BD12;1107 116A 11A9; # (봒; 봒; 봒; 봒; 봒; ) HANGUL SYLLABLE BWAGG
+BD13;BD13;1107 116A 11AA;BD13;1107 116A 11AA; # (봓; 봓; 봓; 봓; 봓; ) HANGUL SYLLABLE BWAGS
+BD14;BD14;1107 116A 11AB;BD14;1107 116A 11AB; # (봔; 봔; 봔; 봔; 봔; ) HANGUL SYLLABLE BWAN
+BD15;BD15;1107 116A 11AC;BD15;1107 116A 11AC; # (봕; 봕; 봕; 봕; 봕; ) HANGUL SYLLABLE BWANJ
+BD16;BD16;1107 116A 11AD;BD16;1107 116A 11AD; # (봖; 봖; 봖; 봖; 봖; ) HANGUL SYLLABLE BWANH
+BD17;BD17;1107 116A 11AE;BD17;1107 116A 11AE; # (봗; 봗; 봗; 봗; 봗; ) HANGUL SYLLABLE BWAD
+BD18;BD18;1107 116A 11AF;BD18;1107 116A 11AF; # (봘; 봘; 봘; 봘; 봘; ) HANGUL SYLLABLE BWAL
+BD19;BD19;1107 116A 11B0;BD19;1107 116A 11B0; # (봙; 봙; 봙; 봙; 봙; ) HANGUL SYLLABLE BWALG
+BD1A;BD1A;1107 116A 11B1;BD1A;1107 116A 11B1; # (봚; 봚; 봚; 봚; 봚; ) HANGUL SYLLABLE BWALM
+BD1B;BD1B;1107 116A 11B2;BD1B;1107 116A 11B2; # (봛; 봛; 봛; 봛; 봛; ) HANGUL SYLLABLE BWALB
+BD1C;BD1C;1107 116A 11B3;BD1C;1107 116A 11B3; # (봜; 봜; 봜; 봜; 봜; ) HANGUL SYLLABLE BWALS
+BD1D;BD1D;1107 116A 11B4;BD1D;1107 116A 11B4; # (ë´; ë´; 봝; ë´; 봝; ) HANGUL SYLLABLE BWALT
+BD1E;BD1E;1107 116A 11B5;BD1E;1107 116A 11B5; # (봞; 봞; 봞; 봞; 봞; ) HANGUL SYLLABLE BWALP
+BD1F;BD1F;1107 116A 11B6;BD1F;1107 116A 11B6; # (봟; 봟; 봟; 봟; 봟; ) HANGUL SYLLABLE BWALH
+BD20;BD20;1107 116A 11B7;BD20;1107 116A 11B7; # (봠; 봠; 봠; 봠; 봠; ) HANGUL SYLLABLE BWAM
+BD21;BD21;1107 116A 11B8;BD21;1107 116A 11B8; # (봡; 봡; 봡; 봡; 봡; ) HANGUL SYLLABLE BWAB
+BD22;BD22;1107 116A 11B9;BD22;1107 116A 11B9; # (봢; 봢; 봢; 봢; 봢; ) HANGUL SYLLABLE BWABS
+BD23;BD23;1107 116A 11BA;BD23;1107 116A 11BA; # (봣; 봣; 봣; 봣; 봣; ) HANGUL SYLLABLE BWAS
+BD24;BD24;1107 116A 11BB;BD24;1107 116A 11BB; # (봤; 봤; 봤; 봤; 봤; ) HANGUL SYLLABLE BWASS
+BD25;BD25;1107 116A 11BC;BD25;1107 116A 11BC; # (봥; 봥; 봥; 봥; 봥; ) HANGUL SYLLABLE BWANG
+BD26;BD26;1107 116A 11BD;BD26;1107 116A 11BD; # (봦; 봦; 봦; 봦; 봦; ) HANGUL SYLLABLE BWAJ
+BD27;BD27;1107 116A 11BE;BD27;1107 116A 11BE; # (봧; 봧; 봧; 봧; 봧; ) HANGUL SYLLABLE BWAC
+BD28;BD28;1107 116A 11BF;BD28;1107 116A 11BF; # (봨; 봨; 봨; 봨; 봨; ) HANGUL SYLLABLE BWAK
+BD29;BD29;1107 116A 11C0;BD29;1107 116A 11C0; # (봩; 봩; 봩; 봩; 봩; ) HANGUL SYLLABLE BWAT
+BD2A;BD2A;1107 116A 11C1;BD2A;1107 116A 11C1; # (ë´ª; ë´ª; 봐á‡; ë´ª; 봐á‡; ) HANGUL SYLLABLE BWAP
+BD2B;BD2B;1107 116A 11C2;BD2B;1107 116A 11C2; # (봫; 봫; 봫; 봫; 봫; ) HANGUL SYLLABLE BWAH
+BD2C;BD2C;1107 116B;BD2C;1107 116B; # (봬; 봬; 봬; 봬; 봬; ) HANGUL SYLLABLE BWAE
+BD2D;BD2D;1107 116B 11A8;BD2D;1107 116B 11A8; # (봭; 봭; 봭; 봭; 봭; ) HANGUL SYLLABLE BWAEG
+BD2E;BD2E;1107 116B 11A9;BD2E;1107 116B 11A9; # (봮; 봮; 봮; 봮; 봮; ) HANGUL SYLLABLE BWAEGG
+BD2F;BD2F;1107 116B 11AA;BD2F;1107 116B 11AA; # (봯; 봯; 봯; 봯; 봯; ) HANGUL SYLLABLE BWAEGS
+BD30;BD30;1107 116B 11AB;BD30;1107 116B 11AB; # (봰; 봰; 봰; 봰; 봰; ) HANGUL SYLLABLE BWAEN
+BD31;BD31;1107 116B 11AC;BD31;1107 116B 11AC; # (봱; 봱; 봱; 봱; 봱; ) HANGUL SYLLABLE BWAENJ
+BD32;BD32;1107 116B 11AD;BD32;1107 116B 11AD; # (봲; 봲; 봲; 봲; 봲; ) HANGUL SYLLABLE BWAENH
+BD33;BD33;1107 116B 11AE;BD33;1107 116B 11AE; # (봳; 봳; 봳; 봳; 봳; ) HANGUL SYLLABLE BWAED
+BD34;BD34;1107 116B 11AF;BD34;1107 116B 11AF; # (봴; 봴; 봴; 봴; 봴; ) HANGUL SYLLABLE BWAEL
+BD35;BD35;1107 116B 11B0;BD35;1107 116B 11B0; # (봵; 봵; 봵; 봵; 봵; ) HANGUL SYLLABLE BWAELG
+BD36;BD36;1107 116B 11B1;BD36;1107 116B 11B1; # (봶; 봶; 봶; 봶; 봶; ) HANGUL SYLLABLE BWAELM
+BD37;BD37;1107 116B 11B2;BD37;1107 116B 11B2; # (봷; 봷; 봷; 봷; 봷; ) HANGUL SYLLABLE BWAELB
+BD38;BD38;1107 116B 11B3;BD38;1107 116B 11B3; # (봸; 봸; 봸; 봸; 봸; ) HANGUL SYLLABLE BWAELS
+BD39;BD39;1107 116B 11B4;BD39;1107 116B 11B4; # (봹; 봹; 봹; 봹; 봹; ) HANGUL SYLLABLE BWAELT
+BD3A;BD3A;1107 116B 11B5;BD3A;1107 116B 11B5; # (봺; 봺; 봺; 봺; 봺; ) HANGUL SYLLABLE BWAELP
+BD3B;BD3B;1107 116B 11B6;BD3B;1107 116B 11B6; # (봻; 봻; 봻; 봻; 봻; ) HANGUL SYLLABLE BWAELH
+BD3C;BD3C;1107 116B 11B7;BD3C;1107 116B 11B7; # (봼; 봼; 봼; 봼; 봼; ) HANGUL SYLLABLE BWAEM
+BD3D;BD3D;1107 116B 11B8;BD3D;1107 116B 11B8; # (봽; 봽; 봽; 봽; 봽; ) HANGUL SYLLABLE BWAEB
+BD3E;BD3E;1107 116B 11B9;BD3E;1107 116B 11B9; # (봾; 봾; 봾; 봾; 봾; ) HANGUL SYLLABLE BWAEBS
+BD3F;BD3F;1107 116B 11BA;BD3F;1107 116B 11BA; # (봿; 봿; 봿; 봿; 봿; ) HANGUL SYLLABLE BWAES
+BD40;BD40;1107 116B 11BB;BD40;1107 116B 11BB; # (뵀; 뵀; 뵀; 뵀; 뵀; ) HANGUL SYLLABLE BWAESS
+BD41;BD41;1107 116B 11BC;BD41;1107 116B 11BC; # (ëµ; ëµ; 뵁; ëµ; 뵁; ) HANGUL SYLLABLE BWAENG
+BD42;BD42;1107 116B 11BD;BD42;1107 116B 11BD; # (뵂; 뵂; 뵂; 뵂; 뵂; ) HANGUL SYLLABLE BWAEJ
+BD43;BD43;1107 116B 11BE;BD43;1107 116B 11BE; # (뵃; 뵃; 뵃; 뵃; 뵃; ) HANGUL SYLLABLE BWAEC
+BD44;BD44;1107 116B 11BF;BD44;1107 116B 11BF; # (뵄; 뵄; 뵄; 뵄; 뵄; ) HANGUL SYLLABLE BWAEK
+BD45;BD45;1107 116B 11C0;BD45;1107 116B 11C0; # (뵅; 뵅; 뵅; 뵅; 뵅; ) HANGUL SYLLABLE BWAET
+BD46;BD46;1107 116B 11C1;BD46;1107 116B 11C1; # (뵆; 뵆; 봬á‡; 뵆; 봬á‡; ) HANGUL SYLLABLE BWAEP
+BD47;BD47;1107 116B 11C2;BD47;1107 116B 11C2; # (뵇; 뵇; 뵇; 뵇; 뵇; ) HANGUL SYLLABLE BWAEH
+BD48;BD48;1107 116C;BD48;1107 116C; # (뵈; 뵈; 뵈; 뵈; 뵈; ) HANGUL SYLLABLE BOE
+BD49;BD49;1107 116C 11A8;BD49;1107 116C 11A8; # (뵉; 뵉; 뵉; 뵉; 뵉; ) HANGUL SYLLABLE BOEG
+BD4A;BD4A;1107 116C 11A9;BD4A;1107 116C 11A9; # (뵊; 뵊; 뵊; 뵊; 뵊; ) HANGUL SYLLABLE BOEGG
+BD4B;BD4B;1107 116C 11AA;BD4B;1107 116C 11AA; # (뵋; 뵋; 뵋; 뵋; 뵋; ) HANGUL SYLLABLE BOEGS
+BD4C;BD4C;1107 116C 11AB;BD4C;1107 116C 11AB; # (뵌; 뵌; 뵌; 뵌; 뵌; ) HANGUL SYLLABLE BOEN
+BD4D;BD4D;1107 116C 11AC;BD4D;1107 116C 11AC; # (ëµ; ëµ; 뵍; ëµ; 뵍; ) HANGUL SYLLABLE BOENJ
+BD4E;BD4E;1107 116C 11AD;BD4E;1107 116C 11AD; # (뵎; 뵎; 뵎; 뵎; 뵎; ) HANGUL SYLLABLE BOENH
+BD4F;BD4F;1107 116C 11AE;BD4F;1107 116C 11AE; # (ëµ; ëµ; 뵏; ëµ; 뵏; ) HANGUL SYLLABLE BOED
+BD50;BD50;1107 116C 11AF;BD50;1107 116C 11AF; # (ëµ; ëµ; 뵐; ëµ; 뵐; ) HANGUL SYLLABLE BOEL
+BD51;BD51;1107 116C 11B0;BD51;1107 116C 11B0; # (뵑; 뵑; 뵑; 뵑; 뵑; ) HANGUL SYLLABLE BOELG
+BD52;BD52;1107 116C 11B1;BD52;1107 116C 11B1; # (뵒; 뵒; 뵒; 뵒; 뵒; ) HANGUL SYLLABLE BOELM
+BD53;BD53;1107 116C 11B2;BD53;1107 116C 11B2; # (뵓; 뵓; 뵓; 뵓; 뵓; ) HANGUL SYLLABLE BOELB
+BD54;BD54;1107 116C 11B3;BD54;1107 116C 11B3; # (뵔; 뵔; 뵔; 뵔; 뵔; ) HANGUL SYLLABLE BOELS
+BD55;BD55;1107 116C 11B4;BD55;1107 116C 11B4; # (뵕; 뵕; 뵕; 뵕; 뵕; ) HANGUL SYLLABLE BOELT
+BD56;BD56;1107 116C 11B5;BD56;1107 116C 11B5; # (뵖; 뵖; 뵖; 뵖; 뵖; ) HANGUL SYLLABLE BOELP
+BD57;BD57;1107 116C 11B6;BD57;1107 116C 11B6; # (뵗; 뵗; 뵗; 뵗; 뵗; ) HANGUL SYLLABLE BOELH
+BD58;BD58;1107 116C 11B7;BD58;1107 116C 11B7; # (뵘; 뵘; 뵘; 뵘; 뵘; ) HANGUL SYLLABLE BOEM
+BD59;BD59;1107 116C 11B8;BD59;1107 116C 11B8; # (뵙; 뵙; 뵙; 뵙; 뵙; ) HANGUL SYLLABLE BOEB
+BD5A;BD5A;1107 116C 11B9;BD5A;1107 116C 11B9; # (뵚; 뵚; 뵚; 뵚; 뵚; ) HANGUL SYLLABLE BOEBS
+BD5B;BD5B;1107 116C 11BA;BD5B;1107 116C 11BA; # (뵛; 뵛; 뵛; 뵛; 뵛; ) HANGUL SYLLABLE BOES
+BD5C;BD5C;1107 116C 11BB;BD5C;1107 116C 11BB; # (뵜; 뵜; 뵜; 뵜; 뵜; ) HANGUL SYLLABLE BOESS
+BD5D;BD5D;1107 116C 11BC;BD5D;1107 116C 11BC; # (ëµ; ëµ; 뵝; ëµ; 뵝; ) HANGUL SYLLABLE BOENG
+BD5E;BD5E;1107 116C 11BD;BD5E;1107 116C 11BD; # (뵞; 뵞; 뵞; 뵞; 뵞; ) HANGUL SYLLABLE BOEJ
+BD5F;BD5F;1107 116C 11BE;BD5F;1107 116C 11BE; # (뵟; 뵟; 뵟; 뵟; 뵟; ) HANGUL SYLLABLE BOEC
+BD60;BD60;1107 116C 11BF;BD60;1107 116C 11BF; # (뵠; 뵠; 뵠; 뵠; 뵠; ) HANGUL SYLLABLE BOEK
+BD61;BD61;1107 116C 11C0;BD61;1107 116C 11C0; # (뵡; 뵡; 뵡; 뵡; 뵡; ) HANGUL SYLLABLE BOET
+BD62;BD62;1107 116C 11C1;BD62;1107 116C 11C1; # (ëµ¢; ëµ¢; 뵈á‡; ëµ¢; 뵈á‡; ) HANGUL SYLLABLE BOEP
+BD63;BD63;1107 116C 11C2;BD63;1107 116C 11C2; # (뵣; 뵣; 뵣; 뵣; 뵣; ) HANGUL SYLLABLE BOEH
+BD64;BD64;1107 116D;BD64;1107 116D; # (뵤; 뵤; 뵤; 뵤; 뵤; ) HANGUL SYLLABLE BYO
+BD65;BD65;1107 116D 11A8;BD65;1107 116D 11A8; # (뵥; 뵥; 뵥; 뵥; 뵥; ) HANGUL SYLLABLE BYOG
+BD66;BD66;1107 116D 11A9;BD66;1107 116D 11A9; # (뵦; 뵦; 뵦; 뵦; 뵦; ) HANGUL SYLLABLE BYOGG
+BD67;BD67;1107 116D 11AA;BD67;1107 116D 11AA; # (뵧; 뵧; 뵧; 뵧; 뵧; ) HANGUL SYLLABLE BYOGS
+BD68;BD68;1107 116D 11AB;BD68;1107 116D 11AB; # (뵨; 뵨; 뵨; 뵨; 뵨; ) HANGUL SYLLABLE BYON
+BD69;BD69;1107 116D 11AC;BD69;1107 116D 11AC; # (뵩; 뵩; 뵩; 뵩; 뵩; ) HANGUL SYLLABLE BYONJ
+BD6A;BD6A;1107 116D 11AD;BD6A;1107 116D 11AD; # (뵪; 뵪; 뵪; 뵪; 뵪; ) HANGUL SYLLABLE BYONH
+BD6B;BD6B;1107 116D 11AE;BD6B;1107 116D 11AE; # (뵫; 뵫; 뵫; 뵫; 뵫; ) HANGUL SYLLABLE BYOD
+BD6C;BD6C;1107 116D 11AF;BD6C;1107 116D 11AF; # (뵬; 뵬; 뵬; 뵬; 뵬; ) HANGUL SYLLABLE BYOL
+BD6D;BD6D;1107 116D 11B0;BD6D;1107 116D 11B0; # (뵭; 뵭; 뵭; 뵭; 뵭; ) HANGUL SYLLABLE BYOLG
+BD6E;BD6E;1107 116D 11B1;BD6E;1107 116D 11B1; # (뵮; 뵮; 뵮; 뵮; 뵮; ) HANGUL SYLLABLE BYOLM
+BD6F;BD6F;1107 116D 11B2;BD6F;1107 116D 11B2; # (뵯; 뵯; 뵯; 뵯; 뵯; ) HANGUL SYLLABLE BYOLB
+BD70;BD70;1107 116D 11B3;BD70;1107 116D 11B3; # (뵰; 뵰; 뵰; 뵰; 뵰; ) HANGUL SYLLABLE BYOLS
+BD71;BD71;1107 116D 11B4;BD71;1107 116D 11B4; # (뵱; 뵱; 뵱; 뵱; 뵱; ) HANGUL SYLLABLE BYOLT
+BD72;BD72;1107 116D 11B5;BD72;1107 116D 11B5; # (뵲; 뵲; 뵲; 뵲; 뵲; ) HANGUL SYLLABLE BYOLP
+BD73;BD73;1107 116D 11B6;BD73;1107 116D 11B6; # (뵳; 뵳; 뵳; 뵳; 뵳; ) HANGUL SYLLABLE BYOLH
+BD74;BD74;1107 116D 11B7;BD74;1107 116D 11B7; # (뵴; 뵴; 뵴; 뵴; 뵴; ) HANGUL SYLLABLE BYOM
+BD75;BD75;1107 116D 11B8;BD75;1107 116D 11B8; # (뵵; 뵵; 뵵; 뵵; 뵵; ) HANGUL SYLLABLE BYOB
+BD76;BD76;1107 116D 11B9;BD76;1107 116D 11B9; # (뵶; 뵶; 뵶; 뵶; 뵶; ) HANGUL SYLLABLE BYOBS
+BD77;BD77;1107 116D 11BA;BD77;1107 116D 11BA; # (뵷; 뵷; 뵷; 뵷; 뵷; ) HANGUL SYLLABLE BYOS
+BD78;BD78;1107 116D 11BB;BD78;1107 116D 11BB; # (뵸; 뵸; 뵸; 뵸; 뵸; ) HANGUL SYLLABLE BYOSS
+BD79;BD79;1107 116D 11BC;BD79;1107 116D 11BC; # (뵹; 뵹; 뵹; 뵹; 뵹; ) HANGUL SYLLABLE BYONG
+BD7A;BD7A;1107 116D 11BD;BD7A;1107 116D 11BD; # (뵺; 뵺; 뵺; 뵺; 뵺; ) HANGUL SYLLABLE BYOJ
+BD7B;BD7B;1107 116D 11BE;BD7B;1107 116D 11BE; # (뵻; 뵻; 뵻; 뵻; 뵻; ) HANGUL SYLLABLE BYOC
+BD7C;BD7C;1107 116D 11BF;BD7C;1107 116D 11BF; # (뵼; 뵼; 뵼; 뵼; 뵼; ) HANGUL SYLLABLE BYOK
+BD7D;BD7D;1107 116D 11C0;BD7D;1107 116D 11C0; # (뵽; 뵽; 뵽; 뵽; 뵽; ) HANGUL SYLLABLE BYOT
+BD7E;BD7E;1107 116D 11C1;BD7E;1107 116D 11C1; # (ëµ¾; ëµ¾; 뵤á‡; ëµ¾; 뵤á‡; ) HANGUL SYLLABLE BYOP
+BD7F;BD7F;1107 116D 11C2;BD7F;1107 116D 11C2; # (뵿; 뵿; 뵿; 뵿; 뵿; ) HANGUL SYLLABLE BYOH
+BD80;BD80;1107 116E;BD80;1107 116E; # (부; 부; 부; 부; 부; ) HANGUL SYLLABLE BU
+BD81;BD81;1107 116E 11A8;BD81;1107 116E 11A8; # (ë¶; ë¶; 북; ë¶; 북; ) HANGUL SYLLABLE BUG
+BD82;BD82;1107 116E 11A9;BD82;1107 116E 11A9; # (붂; 붂; 붂; 붂; 붂; ) HANGUL SYLLABLE BUGG
+BD83;BD83;1107 116E 11AA;BD83;1107 116E 11AA; # (붃; 붃; 붃; 붃; 붃; ) HANGUL SYLLABLE BUGS
+BD84;BD84;1107 116E 11AB;BD84;1107 116E 11AB; # (분; 분; 분; 분; 분; ) HANGUL SYLLABLE BUN
+BD85;BD85;1107 116E 11AC;BD85;1107 116E 11AC; # (붅; 붅; 붅; 붅; 붅; ) HANGUL SYLLABLE BUNJ
+BD86;BD86;1107 116E 11AD;BD86;1107 116E 11AD; # (붆; 붆; 붆; 붆; 붆; ) HANGUL SYLLABLE BUNH
+BD87;BD87;1107 116E 11AE;BD87;1107 116E 11AE; # (붇; 붇; 붇; 붇; 붇; ) HANGUL SYLLABLE BUD
+BD88;BD88;1107 116E 11AF;BD88;1107 116E 11AF; # (불; 불; 불; 불; 불; ) HANGUL SYLLABLE BUL
+BD89;BD89;1107 116E 11B0;BD89;1107 116E 11B0; # (붉; 붉; 붉; 붉; 붉; ) HANGUL SYLLABLE BULG
+BD8A;BD8A;1107 116E 11B1;BD8A;1107 116E 11B1; # (붊; 붊; 붊; 붊; 붊; ) HANGUL SYLLABLE BULM
+BD8B;BD8B;1107 116E 11B2;BD8B;1107 116E 11B2; # (붋; 붋; 붋; 붋; 붋; ) HANGUL SYLLABLE BULB
+BD8C;BD8C;1107 116E 11B3;BD8C;1107 116E 11B3; # (붌; 붌; 붌; 붌; 붌; ) HANGUL SYLLABLE BULS
+BD8D;BD8D;1107 116E 11B4;BD8D;1107 116E 11B4; # (ë¶; ë¶; 붍; ë¶; 붍; ) HANGUL SYLLABLE BULT
+BD8E;BD8E;1107 116E 11B5;BD8E;1107 116E 11B5; # (붎; 붎; 붎; 붎; 붎; ) HANGUL SYLLABLE BULP
+BD8F;BD8F;1107 116E 11B6;BD8F;1107 116E 11B6; # (ë¶; ë¶; 붏; ë¶; 붏; ) HANGUL SYLLABLE BULH
+BD90;BD90;1107 116E 11B7;BD90;1107 116E 11B7; # (ë¶; ë¶; 붐; ë¶; 붐; ) HANGUL SYLLABLE BUM
+BD91;BD91;1107 116E 11B8;BD91;1107 116E 11B8; # (붑; 붑; 붑; 붑; 붑; ) HANGUL SYLLABLE BUB
+BD92;BD92;1107 116E 11B9;BD92;1107 116E 11B9; # (붒; 붒; 붒; 붒; 붒; ) HANGUL SYLLABLE BUBS
+BD93;BD93;1107 116E 11BA;BD93;1107 116E 11BA; # (붓; 붓; 붓; 붓; 붓; ) HANGUL SYLLABLE BUS
+BD94;BD94;1107 116E 11BB;BD94;1107 116E 11BB; # (붔; 붔; 붔; 붔; 붔; ) HANGUL SYLLABLE BUSS
+BD95;BD95;1107 116E 11BC;BD95;1107 116E 11BC; # (붕; 붕; 붕; 붕; 붕; ) HANGUL SYLLABLE BUNG
+BD96;BD96;1107 116E 11BD;BD96;1107 116E 11BD; # (붖; 붖; 붖; 붖; 붖; ) HANGUL SYLLABLE BUJ
+BD97;BD97;1107 116E 11BE;BD97;1107 116E 11BE; # (붗; 붗; 붗; 붗; 붗; ) HANGUL SYLLABLE BUC
+BD98;BD98;1107 116E 11BF;BD98;1107 116E 11BF; # (붘; 붘; 붘; 붘; 붘; ) HANGUL SYLLABLE BUK
+BD99;BD99;1107 116E 11C0;BD99;1107 116E 11C0; # (붙; 붙; 붙; 붙; 붙; ) HANGUL SYLLABLE BUT
+BD9A;BD9A;1107 116E 11C1;BD9A;1107 116E 11C1; # (붚; 붚; 부á‡; 붚; 부á‡; ) HANGUL SYLLABLE BUP
+BD9B;BD9B;1107 116E 11C2;BD9B;1107 116E 11C2; # (붛; 붛; 붛; 붛; 붛; ) HANGUL SYLLABLE BUH
+BD9C;BD9C;1107 116F;BD9C;1107 116F; # (붜; 붜; 붜; 붜; 붜; ) HANGUL SYLLABLE BWEO
+BD9D;BD9D;1107 116F 11A8;BD9D;1107 116F 11A8; # (ë¶; ë¶; 붝; ë¶; 붝; ) HANGUL SYLLABLE BWEOG
+BD9E;BD9E;1107 116F 11A9;BD9E;1107 116F 11A9; # (붞; 붞; 붞; 붞; 붞; ) HANGUL SYLLABLE BWEOGG
+BD9F;BD9F;1107 116F 11AA;BD9F;1107 116F 11AA; # (붟; 붟; 붟; 붟; 붟; ) HANGUL SYLLABLE BWEOGS
+BDA0;BDA0;1107 116F 11AB;BDA0;1107 116F 11AB; # (붠; 붠; 붠; 붠; 붠; ) HANGUL SYLLABLE BWEON
+BDA1;BDA1;1107 116F 11AC;BDA1;1107 116F 11AC; # (붡; 붡; 붡; 붡; 붡; ) HANGUL SYLLABLE BWEONJ
+BDA2;BDA2;1107 116F 11AD;BDA2;1107 116F 11AD; # (붢; 붢; 붢; 붢; 붢; ) HANGUL SYLLABLE BWEONH
+BDA3;BDA3;1107 116F 11AE;BDA3;1107 116F 11AE; # (붣; 붣; 붣; 붣; 붣; ) HANGUL SYLLABLE BWEOD
+BDA4;BDA4;1107 116F 11AF;BDA4;1107 116F 11AF; # (붤; 붤; 붤; 붤; 붤; ) HANGUL SYLLABLE BWEOL
+BDA5;BDA5;1107 116F 11B0;BDA5;1107 116F 11B0; # (붥; 붥; 붥; 붥; 붥; ) HANGUL SYLLABLE BWEOLG
+BDA6;BDA6;1107 116F 11B1;BDA6;1107 116F 11B1; # (붦; 붦; 붦; 붦; 붦; ) HANGUL SYLLABLE BWEOLM
+BDA7;BDA7;1107 116F 11B2;BDA7;1107 116F 11B2; # (붧; 붧; 붧; 붧; 붧; ) HANGUL SYLLABLE BWEOLB
+BDA8;BDA8;1107 116F 11B3;BDA8;1107 116F 11B3; # (붨; 붨; 붨; 붨; 붨; ) HANGUL SYLLABLE BWEOLS
+BDA9;BDA9;1107 116F 11B4;BDA9;1107 116F 11B4; # (붩; 붩; 붩; 붩; 붩; ) HANGUL SYLLABLE BWEOLT
+BDAA;BDAA;1107 116F 11B5;BDAA;1107 116F 11B5; # (붪; 붪; 붪; 붪; 붪; ) HANGUL SYLLABLE BWEOLP
+BDAB;BDAB;1107 116F 11B6;BDAB;1107 116F 11B6; # (붫; 붫; 붫; 붫; 붫; ) HANGUL SYLLABLE BWEOLH
+BDAC;BDAC;1107 116F 11B7;BDAC;1107 116F 11B7; # (붬; 붬; 붬; 붬; 붬; ) HANGUL SYLLABLE BWEOM
+BDAD;BDAD;1107 116F 11B8;BDAD;1107 116F 11B8; # (붭; 붭; 붭; 붭; 붭; ) HANGUL SYLLABLE BWEOB
+BDAE;BDAE;1107 116F 11B9;BDAE;1107 116F 11B9; # (붮; 붮; 붮; 붮; 붮; ) HANGUL SYLLABLE BWEOBS
+BDAF;BDAF;1107 116F 11BA;BDAF;1107 116F 11BA; # (붯; 붯; 붯; 붯; 붯; ) HANGUL SYLLABLE BWEOS
+BDB0;BDB0;1107 116F 11BB;BDB0;1107 116F 11BB; # (붰; 붰; 붰; 붰; 붰; ) HANGUL SYLLABLE BWEOSS
+BDB1;BDB1;1107 116F 11BC;BDB1;1107 116F 11BC; # (붱; 붱; 붱; 붱; 붱; ) HANGUL SYLLABLE BWEONG
+BDB2;BDB2;1107 116F 11BD;BDB2;1107 116F 11BD; # (붲; 붲; 붲; 붲; 붲; ) HANGUL SYLLABLE BWEOJ
+BDB3;BDB3;1107 116F 11BE;BDB3;1107 116F 11BE; # (붳; 붳; 붳; 붳; 붳; ) HANGUL SYLLABLE BWEOC
+BDB4;BDB4;1107 116F 11BF;BDB4;1107 116F 11BF; # (붴; 붴; 붴; 붴; 붴; ) HANGUL SYLLABLE BWEOK
+BDB5;BDB5;1107 116F 11C0;BDB5;1107 116F 11C0; # (붵; 붵; 붵; 붵; 붵; ) HANGUL SYLLABLE BWEOT
+BDB6;BDB6;1107 116F 11C1;BDB6;1107 116F 11C1; # (붶; 붶; 붜á‡; 붶; 붜á‡; ) HANGUL SYLLABLE BWEOP
+BDB7;BDB7;1107 116F 11C2;BDB7;1107 116F 11C2; # (붷; 붷; 붷; 붷; 붷; ) HANGUL SYLLABLE BWEOH
+BDB8;BDB8;1107 1170;BDB8;1107 1170; # (붸; 붸; 붸; 붸; 붸; ) HANGUL SYLLABLE BWE
+BDB9;BDB9;1107 1170 11A8;BDB9;1107 1170 11A8; # (붹; 붹; 붹; 붹; 붹; ) HANGUL SYLLABLE BWEG
+BDBA;BDBA;1107 1170 11A9;BDBA;1107 1170 11A9; # (붺; 붺; 붺; 붺; 붺; ) HANGUL SYLLABLE BWEGG
+BDBB;BDBB;1107 1170 11AA;BDBB;1107 1170 11AA; # (붻; 붻; 붻; 붻; 붻; ) HANGUL SYLLABLE BWEGS
+BDBC;BDBC;1107 1170 11AB;BDBC;1107 1170 11AB; # (붼; 붼; 붼; 붼; 붼; ) HANGUL SYLLABLE BWEN
+BDBD;BDBD;1107 1170 11AC;BDBD;1107 1170 11AC; # (붽; 붽; 붽; 붽; 붽; ) HANGUL SYLLABLE BWENJ
+BDBE;BDBE;1107 1170 11AD;BDBE;1107 1170 11AD; # (붾; 붾; 붾; 붾; 붾; ) HANGUL SYLLABLE BWENH
+BDBF;BDBF;1107 1170 11AE;BDBF;1107 1170 11AE; # (붿; 붿; 붿; 붿; 붿; ) HANGUL SYLLABLE BWED
+BDC0;BDC0;1107 1170 11AF;BDC0;1107 1170 11AF; # (뷀; 뷀; 뷀; 뷀; 뷀; ) HANGUL SYLLABLE BWEL
+BDC1;BDC1;1107 1170 11B0;BDC1;1107 1170 11B0; # (ë·; ë·; 뷁; ë·; 뷁; ) HANGUL SYLLABLE BWELG
+BDC2;BDC2;1107 1170 11B1;BDC2;1107 1170 11B1; # (뷂; 뷂; 뷂; 뷂; 뷂; ) HANGUL SYLLABLE BWELM
+BDC3;BDC3;1107 1170 11B2;BDC3;1107 1170 11B2; # (뷃; 뷃; 뷃; 뷃; 뷃; ) HANGUL SYLLABLE BWELB
+BDC4;BDC4;1107 1170 11B3;BDC4;1107 1170 11B3; # (뷄; 뷄; 뷄; 뷄; 뷄; ) HANGUL SYLLABLE BWELS
+BDC5;BDC5;1107 1170 11B4;BDC5;1107 1170 11B4; # (뷅; 뷅; 뷅; 뷅; 뷅; ) HANGUL SYLLABLE BWELT
+BDC6;BDC6;1107 1170 11B5;BDC6;1107 1170 11B5; # (뷆; 뷆; 뷆; 뷆; 뷆; ) HANGUL SYLLABLE BWELP
+BDC7;BDC7;1107 1170 11B6;BDC7;1107 1170 11B6; # (뷇; 뷇; 뷇; 뷇; 뷇; ) HANGUL SYLLABLE BWELH
+BDC8;BDC8;1107 1170 11B7;BDC8;1107 1170 11B7; # (뷈; 뷈; 뷈; 뷈; 뷈; ) HANGUL SYLLABLE BWEM
+BDC9;BDC9;1107 1170 11B8;BDC9;1107 1170 11B8; # (뷉; 뷉; 뷉; 뷉; 뷉; ) HANGUL SYLLABLE BWEB
+BDCA;BDCA;1107 1170 11B9;BDCA;1107 1170 11B9; # (뷊; 뷊; 뷊; 뷊; 뷊; ) HANGUL SYLLABLE BWEBS
+BDCB;BDCB;1107 1170 11BA;BDCB;1107 1170 11BA; # (뷋; 뷋; 뷋; 뷋; 뷋; ) HANGUL SYLLABLE BWES
+BDCC;BDCC;1107 1170 11BB;BDCC;1107 1170 11BB; # (뷌; 뷌; 뷌; 뷌; 뷌; ) HANGUL SYLLABLE BWESS
+BDCD;BDCD;1107 1170 11BC;BDCD;1107 1170 11BC; # (ë·; ë·; 뷍; ë·; 뷍; ) HANGUL SYLLABLE BWENG
+BDCE;BDCE;1107 1170 11BD;BDCE;1107 1170 11BD; # (뷎; 뷎; 뷎; 뷎; 뷎; ) HANGUL SYLLABLE BWEJ
+BDCF;BDCF;1107 1170 11BE;BDCF;1107 1170 11BE; # (ë·; ë·; 뷏; ë·; 뷏; ) HANGUL SYLLABLE BWEC
+BDD0;BDD0;1107 1170 11BF;BDD0;1107 1170 11BF; # (ë·; ë·; 뷐; ë·; 뷐; ) HANGUL SYLLABLE BWEK
+BDD1;BDD1;1107 1170 11C0;BDD1;1107 1170 11C0; # (뷑; 뷑; 뷑; 뷑; 뷑; ) HANGUL SYLLABLE BWET
+BDD2;BDD2;1107 1170 11C1;BDD2;1107 1170 11C1; # (ë·’; ë·’; 붸á‡; ë·’; 붸á‡; ) HANGUL SYLLABLE BWEP
+BDD3;BDD3;1107 1170 11C2;BDD3;1107 1170 11C2; # (뷓; 뷓; 뷓; 뷓; 뷓; ) HANGUL SYLLABLE BWEH
+BDD4;BDD4;1107 1171;BDD4;1107 1171; # (뷔; 뷔; 뷔; 뷔; 뷔; ) HANGUL SYLLABLE BWI
+BDD5;BDD5;1107 1171 11A8;BDD5;1107 1171 11A8; # (뷕; 뷕; 뷕; 뷕; 뷕; ) HANGUL SYLLABLE BWIG
+BDD6;BDD6;1107 1171 11A9;BDD6;1107 1171 11A9; # (뷖; 뷖; 뷖; 뷖; 뷖; ) HANGUL SYLLABLE BWIGG
+BDD7;BDD7;1107 1171 11AA;BDD7;1107 1171 11AA; # (뷗; 뷗; 뷗; 뷗; 뷗; ) HANGUL SYLLABLE BWIGS
+BDD8;BDD8;1107 1171 11AB;BDD8;1107 1171 11AB; # (뷘; 뷘; 뷘; 뷘; 뷘; ) HANGUL SYLLABLE BWIN
+BDD9;BDD9;1107 1171 11AC;BDD9;1107 1171 11AC; # (뷙; 뷙; 뷙; 뷙; 뷙; ) HANGUL SYLLABLE BWINJ
+BDDA;BDDA;1107 1171 11AD;BDDA;1107 1171 11AD; # (뷚; 뷚; 뷚; 뷚; 뷚; ) HANGUL SYLLABLE BWINH
+BDDB;BDDB;1107 1171 11AE;BDDB;1107 1171 11AE; # (뷛; 뷛; 뷛; 뷛; 뷛; ) HANGUL SYLLABLE BWID
+BDDC;BDDC;1107 1171 11AF;BDDC;1107 1171 11AF; # (뷜; 뷜; 뷜; 뷜; 뷜; ) HANGUL SYLLABLE BWIL
+BDDD;BDDD;1107 1171 11B0;BDDD;1107 1171 11B0; # (ë·; ë·; 뷝; ë·; 뷝; ) HANGUL SYLLABLE BWILG
+BDDE;BDDE;1107 1171 11B1;BDDE;1107 1171 11B1; # (뷞; 뷞; 뷞; 뷞; 뷞; ) HANGUL SYLLABLE BWILM
+BDDF;BDDF;1107 1171 11B2;BDDF;1107 1171 11B2; # (뷟; 뷟; 뷟; 뷟; 뷟; ) HANGUL SYLLABLE BWILB
+BDE0;BDE0;1107 1171 11B3;BDE0;1107 1171 11B3; # (뷠; 뷠; 뷠; 뷠; 뷠; ) HANGUL SYLLABLE BWILS
+BDE1;BDE1;1107 1171 11B4;BDE1;1107 1171 11B4; # (뷡; 뷡; 뷡; 뷡; 뷡; ) HANGUL SYLLABLE BWILT
+BDE2;BDE2;1107 1171 11B5;BDE2;1107 1171 11B5; # (뷢; 뷢; 뷢; 뷢; 뷢; ) HANGUL SYLLABLE BWILP
+BDE3;BDE3;1107 1171 11B6;BDE3;1107 1171 11B6; # (뷣; 뷣; 뷣; 뷣; 뷣; ) HANGUL SYLLABLE BWILH
+BDE4;BDE4;1107 1171 11B7;BDE4;1107 1171 11B7; # (뷤; 뷤; 뷤; 뷤; 뷤; ) HANGUL SYLLABLE BWIM
+BDE5;BDE5;1107 1171 11B8;BDE5;1107 1171 11B8; # (뷥; 뷥; 뷥; 뷥; 뷥; ) HANGUL SYLLABLE BWIB
+BDE6;BDE6;1107 1171 11B9;BDE6;1107 1171 11B9; # (뷦; 뷦; 뷦; 뷦; 뷦; ) HANGUL SYLLABLE BWIBS
+BDE7;BDE7;1107 1171 11BA;BDE7;1107 1171 11BA; # (뷧; 뷧; 뷧; 뷧; 뷧; ) HANGUL SYLLABLE BWIS
+BDE8;BDE8;1107 1171 11BB;BDE8;1107 1171 11BB; # (뷨; 뷨; 뷨; 뷨; 뷨; ) HANGUL SYLLABLE BWISS
+BDE9;BDE9;1107 1171 11BC;BDE9;1107 1171 11BC; # (뷩; 뷩; 뷩; 뷩; 뷩; ) HANGUL SYLLABLE BWING
+BDEA;BDEA;1107 1171 11BD;BDEA;1107 1171 11BD; # (뷪; 뷪; 뷪; 뷪; 뷪; ) HANGUL SYLLABLE BWIJ
+BDEB;BDEB;1107 1171 11BE;BDEB;1107 1171 11BE; # (뷫; 뷫; 뷫; 뷫; 뷫; ) HANGUL SYLLABLE BWIC
+BDEC;BDEC;1107 1171 11BF;BDEC;1107 1171 11BF; # (뷬; 뷬; 뷬; 뷬; 뷬; ) HANGUL SYLLABLE BWIK
+BDED;BDED;1107 1171 11C0;BDED;1107 1171 11C0; # (뷭; 뷭; 뷭; 뷭; 뷭; ) HANGUL SYLLABLE BWIT
+BDEE;BDEE;1107 1171 11C1;BDEE;1107 1171 11C1; # (ë·®; ë·®; 뷔á‡; ë·®; 뷔á‡; ) HANGUL SYLLABLE BWIP
+BDEF;BDEF;1107 1171 11C2;BDEF;1107 1171 11C2; # (뷯; 뷯; 뷯; 뷯; 뷯; ) HANGUL SYLLABLE BWIH
+BDF0;BDF0;1107 1172;BDF0;1107 1172; # (뷰; 뷰; 뷰; 뷰; 뷰; ) HANGUL SYLLABLE BYU
+BDF1;BDF1;1107 1172 11A8;BDF1;1107 1172 11A8; # (뷱; 뷱; 뷱; 뷱; 뷱; ) HANGUL SYLLABLE BYUG
+BDF2;BDF2;1107 1172 11A9;BDF2;1107 1172 11A9; # (뷲; 뷲; 뷲; 뷲; 뷲; ) HANGUL SYLLABLE BYUGG
+BDF3;BDF3;1107 1172 11AA;BDF3;1107 1172 11AA; # (뷳; 뷳; 뷳; 뷳; 뷳; ) HANGUL SYLLABLE BYUGS
+BDF4;BDF4;1107 1172 11AB;BDF4;1107 1172 11AB; # (뷴; 뷴; 뷴; 뷴; 뷴; ) HANGUL SYLLABLE BYUN
+BDF5;BDF5;1107 1172 11AC;BDF5;1107 1172 11AC; # (뷵; 뷵; 뷵; 뷵; 뷵; ) HANGUL SYLLABLE BYUNJ
+BDF6;BDF6;1107 1172 11AD;BDF6;1107 1172 11AD; # (뷶; 뷶; 뷶; 뷶; 뷶; ) HANGUL SYLLABLE BYUNH
+BDF7;BDF7;1107 1172 11AE;BDF7;1107 1172 11AE; # (뷷; 뷷; 뷷; 뷷; 뷷; ) HANGUL SYLLABLE BYUD
+BDF8;BDF8;1107 1172 11AF;BDF8;1107 1172 11AF; # (뷸; 뷸; 뷸; 뷸; 뷸; ) HANGUL SYLLABLE BYUL
+BDF9;BDF9;1107 1172 11B0;BDF9;1107 1172 11B0; # (뷹; 뷹; 뷹; 뷹; 뷹; ) HANGUL SYLLABLE BYULG
+BDFA;BDFA;1107 1172 11B1;BDFA;1107 1172 11B1; # (뷺; 뷺; 뷺; 뷺; 뷺; ) HANGUL SYLLABLE BYULM
+BDFB;BDFB;1107 1172 11B2;BDFB;1107 1172 11B2; # (뷻; 뷻; 뷻; 뷻; 뷻; ) HANGUL SYLLABLE BYULB
+BDFC;BDFC;1107 1172 11B3;BDFC;1107 1172 11B3; # (뷼; 뷼; 뷼; 뷼; 뷼; ) HANGUL SYLLABLE BYULS
+BDFD;BDFD;1107 1172 11B4;BDFD;1107 1172 11B4; # (뷽; 뷽; 뷽; 뷽; 뷽; ) HANGUL SYLLABLE BYULT
+BDFE;BDFE;1107 1172 11B5;BDFE;1107 1172 11B5; # (뷾; 뷾; 뷾; 뷾; 뷾; ) HANGUL SYLLABLE BYULP
+BDFF;BDFF;1107 1172 11B6;BDFF;1107 1172 11B6; # (뷿; 뷿; 뷿; 뷿; 뷿; ) HANGUL SYLLABLE BYULH
+BE00;BE00;1107 1172 11B7;BE00;1107 1172 11B7; # (븀; 븀; 븀; 븀; 븀; ) HANGUL SYLLABLE BYUM
+BE01;BE01;1107 1172 11B8;BE01;1107 1172 11B8; # (ë¸; ë¸; 븁; ë¸; 븁; ) HANGUL SYLLABLE BYUB
+BE02;BE02;1107 1172 11B9;BE02;1107 1172 11B9; # (븂; 븂; 븂; 븂; 븂; ) HANGUL SYLLABLE BYUBS
+BE03;BE03;1107 1172 11BA;BE03;1107 1172 11BA; # (븃; 븃; 븃; 븃; 븃; ) HANGUL SYLLABLE BYUS
+BE04;BE04;1107 1172 11BB;BE04;1107 1172 11BB; # (븄; 븄; 븄; 븄; 븄; ) HANGUL SYLLABLE BYUSS
+BE05;BE05;1107 1172 11BC;BE05;1107 1172 11BC; # (븅; 븅; 븅; 븅; 븅; ) HANGUL SYLLABLE BYUNG
+BE06;BE06;1107 1172 11BD;BE06;1107 1172 11BD; # (븆; 븆; 븆; 븆; 븆; ) HANGUL SYLLABLE BYUJ
+BE07;BE07;1107 1172 11BE;BE07;1107 1172 11BE; # (븇; 븇; 븇; 븇; 븇; ) HANGUL SYLLABLE BYUC
+BE08;BE08;1107 1172 11BF;BE08;1107 1172 11BF; # (븈; 븈; 븈; 븈; 븈; ) HANGUL SYLLABLE BYUK
+BE09;BE09;1107 1172 11C0;BE09;1107 1172 11C0; # (븉; 븉; 븉; 븉; 븉; ) HANGUL SYLLABLE BYUT
+BE0A;BE0A;1107 1172 11C1;BE0A;1107 1172 11C1; # (븊; 븊; 뷰á‡; 븊; 뷰á‡; ) HANGUL SYLLABLE BYUP
+BE0B;BE0B;1107 1172 11C2;BE0B;1107 1172 11C2; # (븋; 븋; 븋; 븋; 븋; ) HANGUL SYLLABLE BYUH
+BE0C;BE0C;1107 1173;BE0C;1107 1173; # (브; 브; 브; 브; 브; ) HANGUL SYLLABLE BEU
+BE0D;BE0D;1107 1173 11A8;BE0D;1107 1173 11A8; # (ë¸; ë¸; 븍; ë¸; 븍; ) HANGUL SYLLABLE BEUG
+BE0E;BE0E;1107 1173 11A9;BE0E;1107 1173 11A9; # (븎; 븎; 븎; 븎; 븎; ) HANGUL SYLLABLE BEUGG
+BE0F;BE0F;1107 1173 11AA;BE0F;1107 1173 11AA; # (ë¸; ë¸; 븏; ë¸; 븏; ) HANGUL SYLLABLE BEUGS
+BE10;BE10;1107 1173 11AB;BE10;1107 1173 11AB; # (ë¸; ë¸; 븐; ë¸; 븐; ) HANGUL SYLLABLE BEUN
+BE11;BE11;1107 1173 11AC;BE11;1107 1173 11AC; # (븑; 븑; 븑; 븑; 븑; ) HANGUL SYLLABLE BEUNJ
+BE12;BE12;1107 1173 11AD;BE12;1107 1173 11AD; # (븒; 븒; 븒; 븒; 븒; ) HANGUL SYLLABLE BEUNH
+BE13;BE13;1107 1173 11AE;BE13;1107 1173 11AE; # (븓; 븓; 븓; 븓; 븓; ) HANGUL SYLLABLE BEUD
+BE14;BE14;1107 1173 11AF;BE14;1107 1173 11AF; # (블; 블; 블; 블; 블; ) HANGUL SYLLABLE BEUL
+BE15;BE15;1107 1173 11B0;BE15;1107 1173 11B0; # (븕; 븕; 븕; 븕; 븕; ) HANGUL SYLLABLE BEULG
+BE16;BE16;1107 1173 11B1;BE16;1107 1173 11B1; # (븖; 븖; 븖; 븖; 븖; ) HANGUL SYLLABLE BEULM
+BE17;BE17;1107 1173 11B2;BE17;1107 1173 11B2; # (븗; 븗; 븗; 븗; 븗; ) HANGUL SYLLABLE BEULB
+BE18;BE18;1107 1173 11B3;BE18;1107 1173 11B3; # (븘; 븘; 븘; 븘; 븘; ) HANGUL SYLLABLE BEULS
+BE19;BE19;1107 1173 11B4;BE19;1107 1173 11B4; # (븙; 븙; 븙; 븙; 븙; ) HANGUL SYLLABLE BEULT
+BE1A;BE1A;1107 1173 11B5;BE1A;1107 1173 11B5; # (븚; 븚; 븚; 븚; 븚; ) HANGUL SYLLABLE BEULP
+BE1B;BE1B;1107 1173 11B6;BE1B;1107 1173 11B6; # (븛; 븛; 븛; 븛; 븛; ) HANGUL SYLLABLE BEULH
+BE1C;BE1C;1107 1173 11B7;BE1C;1107 1173 11B7; # (븜; 븜; 븜; 븜; 븜; ) HANGUL SYLLABLE BEUM
+BE1D;BE1D;1107 1173 11B8;BE1D;1107 1173 11B8; # (ë¸; ë¸; 븝; ë¸; 븝; ) HANGUL SYLLABLE BEUB
+BE1E;BE1E;1107 1173 11B9;BE1E;1107 1173 11B9; # (븞; 븞; 븞; 븞; 븞; ) HANGUL SYLLABLE BEUBS
+BE1F;BE1F;1107 1173 11BA;BE1F;1107 1173 11BA; # (븟; 븟; 븟; 븟; 븟; ) HANGUL SYLLABLE BEUS
+BE20;BE20;1107 1173 11BB;BE20;1107 1173 11BB; # (븠; 븠; 븠; 븠; 븠; ) HANGUL SYLLABLE BEUSS
+BE21;BE21;1107 1173 11BC;BE21;1107 1173 11BC; # (븡; 븡; 븡; 븡; 븡; ) HANGUL SYLLABLE BEUNG
+BE22;BE22;1107 1173 11BD;BE22;1107 1173 11BD; # (븢; 븢; 븢; 븢; 븢; ) HANGUL SYLLABLE BEUJ
+BE23;BE23;1107 1173 11BE;BE23;1107 1173 11BE; # (븣; 븣; 븣; 븣; 븣; ) HANGUL SYLLABLE BEUC
+BE24;BE24;1107 1173 11BF;BE24;1107 1173 11BF; # (븤; 븤; 븤; 븤; 븤; ) HANGUL SYLLABLE BEUK
+BE25;BE25;1107 1173 11C0;BE25;1107 1173 11C0; # (븥; 븥; 븥; 븥; 븥; ) HANGUL SYLLABLE BEUT
+BE26;BE26;1107 1173 11C1;BE26;1107 1173 11C1; # (븦; 븦; 브á‡; 븦; 브á‡; ) HANGUL SYLLABLE BEUP
+BE27;BE27;1107 1173 11C2;BE27;1107 1173 11C2; # (븧; 븧; 븧; 븧; 븧; ) HANGUL SYLLABLE BEUH
+BE28;BE28;1107 1174;BE28;1107 1174; # (븨; 븨; 븨; 븨; 븨; ) HANGUL SYLLABLE BYI
+BE29;BE29;1107 1174 11A8;BE29;1107 1174 11A8; # (븩; 븩; 븩; 븩; 븩; ) HANGUL SYLLABLE BYIG
+BE2A;BE2A;1107 1174 11A9;BE2A;1107 1174 11A9; # (븪; 븪; 븪; 븪; 븪; ) HANGUL SYLLABLE BYIGG
+BE2B;BE2B;1107 1174 11AA;BE2B;1107 1174 11AA; # (븫; 븫; 븫; 븫; 븫; ) HANGUL SYLLABLE BYIGS
+BE2C;BE2C;1107 1174 11AB;BE2C;1107 1174 11AB; # (븬; 븬; 븬; 븬; 븬; ) HANGUL SYLLABLE BYIN
+BE2D;BE2D;1107 1174 11AC;BE2D;1107 1174 11AC; # (븭; 븭; 븭; 븭; 븭; ) HANGUL SYLLABLE BYINJ
+BE2E;BE2E;1107 1174 11AD;BE2E;1107 1174 11AD; # (븮; 븮; 븮; 븮; 븮; ) HANGUL SYLLABLE BYINH
+BE2F;BE2F;1107 1174 11AE;BE2F;1107 1174 11AE; # (븯; 븯; 븯; 븯; 븯; ) HANGUL SYLLABLE BYID
+BE30;BE30;1107 1174 11AF;BE30;1107 1174 11AF; # (븰; 븰; 븰; 븰; 븰; ) HANGUL SYLLABLE BYIL
+BE31;BE31;1107 1174 11B0;BE31;1107 1174 11B0; # (븱; 븱; 븱; 븱; 븱; ) HANGUL SYLLABLE BYILG
+BE32;BE32;1107 1174 11B1;BE32;1107 1174 11B1; # (븲; 븲; 븲; 븲; 븲; ) HANGUL SYLLABLE BYILM
+BE33;BE33;1107 1174 11B2;BE33;1107 1174 11B2; # (븳; 븳; 븳; 븳; 븳; ) HANGUL SYLLABLE BYILB
+BE34;BE34;1107 1174 11B3;BE34;1107 1174 11B3; # (븴; 븴; 븴; 븴; 븴; ) HANGUL SYLLABLE BYILS
+BE35;BE35;1107 1174 11B4;BE35;1107 1174 11B4; # (븵; 븵; 븵; 븵; 븵; ) HANGUL SYLLABLE BYILT
+BE36;BE36;1107 1174 11B5;BE36;1107 1174 11B5; # (븶; 븶; 븶; 븶; 븶; ) HANGUL SYLLABLE BYILP
+BE37;BE37;1107 1174 11B6;BE37;1107 1174 11B6; # (븷; 븷; 븷; 븷; 븷; ) HANGUL SYLLABLE BYILH
+BE38;BE38;1107 1174 11B7;BE38;1107 1174 11B7; # (븸; 븸; 븸; 븸; 븸; ) HANGUL SYLLABLE BYIM
+BE39;BE39;1107 1174 11B8;BE39;1107 1174 11B8; # (븹; 븹; 븹; 븹; 븹; ) HANGUL SYLLABLE BYIB
+BE3A;BE3A;1107 1174 11B9;BE3A;1107 1174 11B9; # (븺; 븺; 븺; 븺; 븺; ) HANGUL SYLLABLE BYIBS
+BE3B;BE3B;1107 1174 11BA;BE3B;1107 1174 11BA; # (븻; 븻; 븻; 븻; 븻; ) HANGUL SYLLABLE BYIS
+BE3C;BE3C;1107 1174 11BB;BE3C;1107 1174 11BB; # (븼; 븼; 븼; 븼; 븼; ) HANGUL SYLLABLE BYISS
+BE3D;BE3D;1107 1174 11BC;BE3D;1107 1174 11BC; # (븽; 븽; 븽; 븽; 븽; ) HANGUL SYLLABLE BYING
+BE3E;BE3E;1107 1174 11BD;BE3E;1107 1174 11BD; # (븾; 븾; 븾; 븾; 븾; ) HANGUL SYLLABLE BYIJ
+BE3F;BE3F;1107 1174 11BE;BE3F;1107 1174 11BE; # (븿; 븿; 븿; 븿; 븿; ) HANGUL SYLLABLE BYIC
+BE40;BE40;1107 1174 11BF;BE40;1107 1174 11BF; # (빀; 빀; 빀; 빀; 빀; ) HANGUL SYLLABLE BYIK
+BE41;BE41;1107 1174 11C0;BE41;1107 1174 11C0; # (ë¹; ë¹; 빁; ë¹; 빁; ) HANGUL SYLLABLE BYIT
+BE42;BE42;1107 1174 11C1;BE42;1107 1174 11C1; # (빂; 빂; 븨á‡; 빂; 븨á‡; ) HANGUL SYLLABLE BYIP
+BE43;BE43;1107 1174 11C2;BE43;1107 1174 11C2; # (빃; 빃; 빃; 빃; 빃; ) HANGUL SYLLABLE BYIH
+BE44;BE44;1107 1175;BE44;1107 1175; # (비; 비; 비; 비; 비; ) HANGUL SYLLABLE BI
+BE45;BE45;1107 1175 11A8;BE45;1107 1175 11A8; # (빅; 빅; 빅; 빅; 빅; ) HANGUL SYLLABLE BIG
+BE46;BE46;1107 1175 11A9;BE46;1107 1175 11A9; # (빆; 빆; 빆; 빆; 빆; ) HANGUL SYLLABLE BIGG
+BE47;BE47;1107 1175 11AA;BE47;1107 1175 11AA; # (빇; 빇; 빇; 빇; 빇; ) HANGUL SYLLABLE BIGS
+BE48;BE48;1107 1175 11AB;BE48;1107 1175 11AB; # (빈; 빈; 빈; 빈; 빈; ) HANGUL SYLLABLE BIN
+BE49;BE49;1107 1175 11AC;BE49;1107 1175 11AC; # (빉; 빉; 빉; 빉; 빉; ) HANGUL SYLLABLE BINJ
+BE4A;BE4A;1107 1175 11AD;BE4A;1107 1175 11AD; # (빊; 빊; 빊; 빊; 빊; ) HANGUL SYLLABLE BINH
+BE4B;BE4B;1107 1175 11AE;BE4B;1107 1175 11AE; # (빋; 빋; 빋; 빋; 빋; ) HANGUL SYLLABLE BID
+BE4C;BE4C;1107 1175 11AF;BE4C;1107 1175 11AF; # (빌; 빌; 빌; 빌; 빌; ) HANGUL SYLLABLE BIL
+BE4D;BE4D;1107 1175 11B0;BE4D;1107 1175 11B0; # (ë¹; ë¹; 빍; ë¹; 빍; ) HANGUL SYLLABLE BILG
+BE4E;BE4E;1107 1175 11B1;BE4E;1107 1175 11B1; # (빎; 빎; 빎; 빎; 빎; ) HANGUL SYLLABLE BILM
+BE4F;BE4F;1107 1175 11B2;BE4F;1107 1175 11B2; # (ë¹; ë¹; 빏; ë¹; 빏; ) HANGUL SYLLABLE BILB
+BE50;BE50;1107 1175 11B3;BE50;1107 1175 11B3; # (ë¹; ë¹; 빐; ë¹; 빐; ) HANGUL SYLLABLE BILS
+BE51;BE51;1107 1175 11B4;BE51;1107 1175 11B4; # (빑; 빑; 빑; 빑; 빑; ) HANGUL SYLLABLE BILT
+BE52;BE52;1107 1175 11B5;BE52;1107 1175 11B5; # (빒; 빒; 빒; 빒; 빒; ) HANGUL SYLLABLE BILP
+BE53;BE53;1107 1175 11B6;BE53;1107 1175 11B6; # (빓; 빓; 빓; 빓; 빓; ) HANGUL SYLLABLE BILH
+BE54;BE54;1107 1175 11B7;BE54;1107 1175 11B7; # (빔; 빔; 빔; 빔; 빔; ) HANGUL SYLLABLE BIM
+BE55;BE55;1107 1175 11B8;BE55;1107 1175 11B8; # (빕; 빕; 빕; 빕; 빕; ) HANGUL SYLLABLE BIB
+BE56;BE56;1107 1175 11B9;BE56;1107 1175 11B9; # (빖; 빖; 빖; 빖; 빖; ) HANGUL SYLLABLE BIBS
+BE57;BE57;1107 1175 11BA;BE57;1107 1175 11BA; # (빗; 빗; 빗; 빗; 빗; ) HANGUL SYLLABLE BIS
+BE58;BE58;1107 1175 11BB;BE58;1107 1175 11BB; # (빘; 빘; 빘; 빘; 빘; ) HANGUL SYLLABLE BISS
+BE59;BE59;1107 1175 11BC;BE59;1107 1175 11BC; # (빙; 빙; 빙; 빙; 빙; ) HANGUL SYLLABLE BING
+BE5A;BE5A;1107 1175 11BD;BE5A;1107 1175 11BD; # (빚; 빚; 빚; 빚; 빚; ) HANGUL SYLLABLE BIJ
+BE5B;BE5B;1107 1175 11BE;BE5B;1107 1175 11BE; # (빛; 빛; 빛; 빛; 빛; ) HANGUL SYLLABLE BIC
+BE5C;BE5C;1107 1175 11BF;BE5C;1107 1175 11BF; # (빜; 빜; 빜; 빜; 빜; ) HANGUL SYLLABLE BIK
+BE5D;BE5D;1107 1175 11C0;BE5D;1107 1175 11C0; # (ë¹; ë¹; 빝; ë¹; 빝; ) HANGUL SYLLABLE BIT
+BE5E;BE5E;1107 1175 11C1;BE5E;1107 1175 11C1; # (빞; 빞; 비á‡; 빞; 비á‡; ) HANGUL SYLLABLE BIP
+BE5F;BE5F;1107 1175 11C2;BE5F;1107 1175 11C2; # (빟; 빟; 빟; 빟; 빟; ) HANGUL SYLLABLE BIH
+BE60;BE60;1108 1161;BE60;1108 1161; # (빠; 빠; 빠; 빠; 빠; ) HANGUL SYLLABLE BBA
+BE61;BE61;1108 1161 11A8;BE61;1108 1161 11A8; # (빡; 빡; 빡; 빡; 빡; ) HANGUL SYLLABLE BBAG
+BE62;BE62;1108 1161 11A9;BE62;1108 1161 11A9; # (빢; 빢; 빢; 빢; 빢; ) HANGUL SYLLABLE BBAGG
+BE63;BE63;1108 1161 11AA;BE63;1108 1161 11AA; # (빣; 빣; 빣; 빣; 빣; ) HANGUL SYLLABLE BBAGS
+BE64;BE64;1108 1161 11AB;BE64;1108 1161 11AB; # (빤; 빤; 빤; 빤; 빤; ) HANGUL SYLLABLE BBAN
+BE65;BE65;1108 1161 11AC;BE65;1108 1161 11AC; # (빥; 빥; 빥; 빥; 빥; ) HANGUL SYLLABLE BBANJ
+BE66;BE66;1108 1161 11AD;BE66;1108 1161 11AD; # (빦; 빦; 빦; 빦; 빦; ) HANGUL SYLLABLE BBANH
+BE67;BE67;1108 1161 11AE;BE67;1108 1161 11AE; # (빧; 빧; 빧; 빧; 빧; ) HANGUL SYLLABLE BBAD
+BE68;BE68;1108 1161 11AF;BE68;1108 1161 11AF; # (빨; 빨; 빨; 빨; 빨; ) HANGUL SYLLABLE BBAL
+BE69;BE69;1108 1161 11B0;BE69;1108 1161 11B0; # (빩; 빩; 빩; 빩; 빩; ) HANGUL SYLLABLE BBALG
+BE6A;BE6A;1108 1161 11B1;BE6A;1108 1161 11B1; # (빪; 빪; 빪; 빪; 빪; ) HANGUL SYLLABLE BBALM
+BE6B;BE6B;1108 1161 11B2;BE6B;1108 1161 11B2; # (빫; 빫; 빫; 빫; 빫; ) HANGUL SYLLABLE BBALB
+BE6C;BE6C;1108 1161 11B3;BE6C;1108 1161 11B3; # (빬; 빬; 빬; 빬; 빬; ) HANGUL SYLLABLE BBALS
+BE6D;BE6D;1108 1161 11B4;BE6D;1108 1161 11B4; # (빭; 빭; 빭; 빭; 빭; ) HANGUL SYLLABLE BBALT
+BE6E;BE6E;1108 1161 11B5;BE6E;1108 1161 11B5; # (빮; 빮; 빮; 빮; 빮; ) HANGUL SYLLABLE BBALP
+BE6F;BE6F;1108 1161 11B6;BE6F;1108 1161 11B6; # (빯; 빯; 빯; 빯; 빯; ) HANGUL SYLLABLE BBALH
+BE70;BE70;1108 1161 11B7;BE70;1108 1161 11B7; # (빰; 빰; 빰; 빰; 빰; ) HANGUL SYLLABLE BBAM
+BE71;BE71;1108 1161 11B8;BE71;1108 1161 11B8; # (빱; 빱; 빱; 빱; 빱; ) HANGUL SYLLABLE BBAB
+BE72;BE72;1108 1161 11B9;BE72;1108 1161 11B9; # (빲; 빲; 빲; 빲; 빲; ) HANGUL SYLLABLE BBABS
+BE73;BE73;1108 1161 11BA;BE73;1108 1161 11BA; # (빳; 빳; 빳; 빳; 빳; ) HANGUL SYLLABLE BBAS
+BE74;BE74;1108 1161 11BB;BE74;1108 1161 11BB; # (빴; 빴; 빴; 빴; 빴; ) HANGUL SYLLABLE BBASS
+BE75;BE75;1108 1161 11BC;BE75;1108 1161 11BC; # (빵; 빵; 빵; 빵; 빵; ) HANGUL SYLLABLE BBANG
+BE76;BE76;1108 1161 11BD;BE76;1108 1161 11BD; # (빶; 빶; 빶; 빶; 빶; ) HANGUL SYLLABLE BBAJ
+BE77;BE77;1108 1161 11BE;BE77;1108 1161 11BE; # (빷; 빷; 빷; 빷; 빷; ) HANGUL SYLLABLE BBAC
+BE78;BE78;1108 1161 11BF;BE78;1108 1161 11BF; # (빸; 빸; 빸; 빸; 빸; ) HANGUL SYLLABLE BBAK
+BE79;BE79;1108 1161 11C0;BE79;1108 1161 11C0; # (빹; 빹; 빹; 빹; 빹; ) HANGUL SYLLABLE BBAT
+BE7A;BE7A;1108 1161 11C1;BE7A;1108 1161 11C1; # (빺; 빺; 빠á‡; 빺; 빠á‡; ) HANGUL SYLLABLE BBAP
+BE7B;BE7B;1108 1161 11C2;BE7B;1108 1161 11C2; # (빻; 빻; 빻; 빻; 빻; ) HANGUL SYLLABLE BBAH
+BE7C;BE7C;1108 1162;BE7C;1108 1162; # (빼; 빼; 빼; 빼; 빼; ) HANGUL SYLLABLE BBAE
+BE7D;BE7D;1108 1162 11A8;BE7D;1108 1162 11A8; # (빽; 빽; 빽; 빽; 빽; ) HANGUL SYLLABLE BBAEG
+BE7E;BE7E;1108 1162 11A9;BE7E;1108 1162 11A9; # (빾; 빾; 빾; 빾; 빾; ) HANGUL SYLLABLE BBAEGG
+BE7F;BE7F;1108 1162 11AA;BE7F;1108 1162 11AA; # (빿; 빿; 빿; 빿; 빿; ) HANGUL SYLLABLE BBAEGS
+BE80;BE80;1108 1162 11AB;BE80;1108 1162 11AB; # (뺀; 뺀; 뺀; 뺀; 뺀; ) HANGUL SYLLABLE BBAEN
+BE81;BE81;1108 1162 11AC;BE81;1108 1162 11AC; # (ëº; ëº; 뺁; ëº; 뺁; ) HANGUL SYLLABLE BBAENJ
+BE82;BE82;1108 1162 11AD;BE82;1108 1162 11AD; # (뺂; 뺂; 뺂; 뺂; 뺂; ) HANGUL SYLLABLE BBAENH
+BE83;BE83;1108 1162 11AE;BE83;1108 1162 11AE; # (뺃; 뺃; 뺃; 뺃; 뺃; ) HANGUL SYLLABLE BBAED
+BE84;BE84;1108 1162 11AF;BE84;1108 1162 11AF; # (뺄; 뺄; 뺄; 뺄; 뺄; ) HANGUL SYLLABLE BBAEL
+BE85;BE85;1108 1162 11B0;BE85;1108 1162 11B0; # (뺅; 뺅; 뺅; 뺅; 뺅; ) HANGUL SYLLABLE BBAELG
+BE86;BE86;1108 1162 11B1;BE86;1108 1162 11B1; # (뺆; 뺆; 뺆; 뺆; 뺆; ) HANGUL SYLLABLE BBAELM
+BE87;BE87;1108 1162 11B2;BE87;1108 1162 11B2; # (뺇; 뺇; 뺇; 뺇; 뺇; ) HANGUL SYLLABLE BBAELB
+BE88;BE88;1108 1162 11B3;BE88;1108 1162 11B3; # (뺈; 뺈; 뺈; 뺈; 뺈; ) HANGUL SYLLABLE BBAELS
+BE89;BE89;1108 1162 11B4;BE89;1108 1162 11B4; # (뺉; 뺉; 뺉; 뺉; 뺉; ) HANGUL SYLLABLE BBAELT
+BE8A;BE8A;1108 1162 11B5;BE8A;1108 1162 11B5; # (뺊; 뺊; 뺊; 뺊; 뺊; ) HANGUL SYLLABLE BBAELP
+BE8B;BE8B;1108 1162 11B6;BE8B;1108 1162 11B6; # (뺋; 뺋; 뺋; 뺋; 뺋; ) HANGUL SYLLABLE BBAELH
+BE8C;BE8C;1108 1162 11B7;BE8C;1108 1162 11B7; # (뺌; 뺌; 뺌; 뺌; 뺌; ) HANGUL SYLLABLE BBAEM
+BE8D;BE8D;1108 1162 11B8;BE8D;1108 1162 11B8; # (ëº; ëº; 뺍; ëº; 뺍; ) HANGUL SYLLABLE BBAEB
+BE8E;BE8E;1108 1162 11B9;BE8E;1108 1162 11B9; # (뺎; 뺎; 뺎; 뺎; 뺎; ) HANGUL SYLLABLE BBAEBS
+BE8F;BE8F;1108 1162 11BA;BE8F;1108 1162 11BA; # (ëº; ëº; 뺏; ëº; 뺏; ) HANGUL SYLLABLE BBAES
+BE90;BE90;1108 1162 11BB;BE90;1108 1162 11BB; # (ëº; ëº; 뺐; ëº; 뺐; ) HANGUL SYLLABLE BBAESS
+BE91;BE91;1108 1162 11BC;BE91;1108 1162 11BC; # (뺑; 뺑; 뺑; 뺑; 뺑; ) HANGUL SYLLABLE BBAENG
+BE92;BE92;1108 1162 11BD;BE92;1108 1162 11BD; # (뺒; 뺒; 뺒; 뺒; 뺒; ) HANGUL SYLLABLE BBAEJ
+BE93;BE93;1108 1162 11BE;BE93;1108 1162 11BE; # (뺓; 뺓; 뺓; 뺓; 뺓; ) HANGUL SYLLABLE BBAEC
+BE94;BE94;1108 1162 11BF;BE94;1108 1162 11BF; # (뺔; 뺔; 뺔; 뺔; 뺔; ) HANGUL SYLLABLE BBAEK
+BE95;BE95;1108 1162 11C0;BE95;1108 1162 11C0; # (뺕; 뺕; 뺕; 뺕; 뺕; ) HANGUL SYLLABLE BBAET
+BE96;BE96;1108 1162 11C1;BE96;1108 1162 11C1; # (뺖; 뺖; 빼á‡; 뺖; 빼á‡; ) HANGUL SYLLABLE BBAEP
+BE97;BE97;1108 1162 11C2;BE97;1108 1162 11C2; # (뺗; 뺗; 뺗; 뺗; 뺗; ) HANGUL SYLLABLE BBAEH
+BE98;BE98;1108 1163;BE98;1108 1163; # (뺘; 뺘; 뺘; 뺘; 뺘; ) HANGUL SYLLABLE BBYA
+BE99;BE99;1108 1163 11A8;BE99;1108 1163 11A8; # (뺙; 뺙; 뺙; 뺙; 뺙; ) HANGUL SYLLABLE BBYAG
+BE9A;BE9A;1108 1163 11A9;BE9A;1108 1163 11A9; # (뺚; 뺚; 뺚; 뺚; 뺚; ) HANGUL SYLLABLE BBYAGG
+BE9B;BE9B;1108 1163 11AA;BE9B;1108 1163 11AA; # (뺛; 뺛; 뺛; 뺛; 뺛; ) HANGUL SYLLABLE BBYAGS
+BE9C;BE9C;1108 1163 11AB;BE9C;1108 1163 11AB; # (뺜; 뺜; 뺜; 뺜; 뺜; ) HANGUL SYLLABLE BBYAN
+BE9D;BE9D;1108 1163 11AC;BE9D;1108 1163 11AC; # (ëº; ëº; 뺝; ëº; 뺝; ) HANGUL SYLLABLE BBYANJ
+BE9E;BE9E;1108 1163 11AD;BE9E;1108 1163 11AD; # (뺞; 뺞; 뺞; 뺞; 뺞; ) HANGUL SYLLABLE BBYANH
+BE9F;BE9F;1108 1163 11AE;BE9F;1108 1163 11AE; # (뺟; 뺟; 뺟; 뺟; 뺟; ) HANGUL SYLLABLE BBYAD
+BEA0;BEA0;1108 1163 11AF;BEA0;1108 1163 11AF; # (뺠; 뺠; 뺠; 뺠; 뺠; ) HANGUL SYLLABLE BBYAL
+BEA1;BEA1;1108 1163 11B0;BEA1;1108 1163 11B0; # (뺡; 뺡; 뺡; 뺡; 뺡; ) HANGUL SYLLABLE BBYALG
+BEA2;BEA2;1108 1163 11B1;BEA2;1108 1163 11B1; # (뺢; 뺢; 뺢; 뺢; 뺢; ) HANGUL SYLLABLE BBYALM
+BEA3;BEA3;1108 1163 11B2;BEA3;1108 1163 11B2; # (뺣; 뺣; 뺣; 뺣; 뺣; ) HANGUL SYLLABLE BBYALB
+BEA4;BEA4;1108 1163 11B3;BEA4;1108 1163 11B3; # (뺤; 뺤; 뺤; 뺤; 뺤; ) HANGUL SYLLABLE BBYALS
+BEA5;BEA5;1108 1163 11B4;BEA5;1108 1163 11B4; # (뺥; 뺥; 뺥; 뺥; 뺥; ) HANGUL SYLLABLE BBYALT
+BEA6;BEA6;1108 1163 11B5;BEA6;1108 1163 11B5; # (뺦; 뺦; 뺦; 뺦; 뺦; ) HANGUL SYLLABLE BBYALP
+BEA7;BEA7;1108 1163 11B6;BEA7;1108 1163 11B6; # (뺧; 뺧; 뺧; 뺧; 뺧; ) HANGUL SYLLABLE BBYALH
+BEA8;BEA8;1108 1163 11B7;BEA8;1108 1163 11B7; # (뺨; 뺨; 뺨; 뺨; 뺨; ) HANGUL SYLLABLE BBYAM
+BEA9;BEA9;1108 1163 11B8;BEA9;1108 1163 11B8; # (뺩; 뺩; 뺩; 뺩; 뺩; ) HANGUL SYLLABLE BBYAB
+BEAA;BEAA;1108 1163 11B9;BEAA;1108 1163 11B9; # (뺪; 뺪; 뺪; 뺪; 뺪; ) HANGUL SYLLABLE BBYABS
+BEAB;BEAB;1108 1163 11BA;BEAB;1108 1163 11BA; # (뺫; 뺫; 뺫; 뺫; 뺫; ) HANGUL SYLLABLE BBYAS
+BEAC;BEAC;1108 1163 11BB;BEAC;1108 1163 11BB; # (뺬; 뺬; 뺬; 뺬; 뺬; ) HANGUL SYLLABLE BBYASS
+BEAD;BEAD;1108 1163 11BC;BEAD;1108 1163 11BC; # (뺭; 뺭; 뺭; 뺭; 뺭; ) HANGUL SYLLABLE BBYANG
+BEAE;BEAE;1108 1163 11BD;BEAE;1108 1163 11BD; # (뺮; 뺮; 뺮; 뺮; 뺮; ) HANGUL SYLLABLE BBYAJ
+BEAF;BEAF;1108 1163 11BE;BEAF;1108 1163 11BE; # (뺯; 뺯; 뺯; 뺯; 뺯; ) HANGUL SYLLABLE BBYAC
+BEB0;BEB0;1108 1163 11BF;BEB0;1108 1163 11BF; # (뺰; 뺰; 뺰; 뺰; 뺰; ) HANGUL SYLLABLE BBYAK
+BEB1;BEB1;1108 1163 11C0;BEB1;1108 1163 11C0; # (뺱; 뺱; 뺱; 뺱; 뺱; ) HANGUL SYLLABLE BBYAT
+BEB2;BEB2;1108 1163 11C1;BEB2;1108 1163 11C1; # (뺲; 뺲; 뺘á‡; 뺲; 뺘á‡; ) HANGUL SYLLABLE BBYAP
+BEB3;BEB3;1108 1163 11C2;BEB3;1108 1163 11C2; # (뺳; 뺳; 뺳; 뺳; 뺳; ) HANGUL SYLLABLE BBYAH
+BEB4;BEB4;1108 1164;BEB4;1108 1164; # (뺴; 뺴; 뺴; 뺴; 뺴; ) HANGUL SYLLABLE BBYAE
+BEB5;BEB5;1108 1164 11A8;BEB5;1108 1164 11A8; # (뺵; 뺵; 뺵; 뺵; 뺵; ) HANGUL SYLLABLE BBYAEG
+BEB6;BEB6;1108 1164 11A9;BEB6;1108 1164 11A9; # (뺶; 뺶; 뺶; 뺶; 뺶; ) HANGUL SYLLABLE BBYAEGG
+BEB7;BEB7;1108 1164 11AA;BEB7;1108 1164 11AA; # (뺷; 뺷; 뺷; 뺷; 뺷; ) HANGUL SYLLABLE BBYAEGS
+BEB8;BEB8;1108 1164 11AB;BEB8;1108 1164 11AB; # (뺸; 뺸; 뺸; 뺸; 뺸; ) HANGUL SYLLABLE BBYAEN
+BEB9;BEB9;1108 1164 11AC;BEB9;1108 1164 11AC; # (뺹; 뺹; 뺹; 뺹; 뺹; ) HANGUL SYLLABLE BBYAENJ
+BEBA;BEBA;1108 1164 11AD;BEBA;1108 1164 11AD; # (뺺; 뺺; 뺺; 뺺; 뺺; ) HANGUL SYLLABLE BBYAENH
+BEBB;BEBB;1108 1164 11AE;BEBB;1108 1164 11AE; # (뺻; 뺻; 뺻; 뺻; 뺻; ) HANGUL SYLLABLE BBYAED
+BEBC;BEBC;1108 1164 11AF;BEBC;1108 1164 11AF; # (뺼; 뺼; 뺼; 뺼; 뺼; ) HANGUL SYLLABLE BBYAEL
+BEBD;BEBD;1108 1164 11B0;BEBD;1108 1164 11B0; # (뺽; 뺽; 뺽; 뺽; 뺽; ) HANGUL SYLLABLE BBYAELG
+BEBE;BEBE;1108 1164 11B1;BEBE;1108 1164 11B1; # (뺾; 뺾; 뺾; 뺾; 뺾; ) HANGUL SYLLABLE BBYAELM
+BEBF;BEBF;1108 1164 11B2;BEBF;1108 1164 11B2; # (뺿; 뺿; 뺿; 뺿; 뺿; ) HANGUL SYLLABLE BBYAELB
+BEC0;BEC0;1108 1164 11B3;BEC0;1108 1164 11B3; # (뻀; 뻀; 뻀; 뻀; 뻀; ) HANGUL SYLLABLE BBYAELS
+BEC1;BEC1;1108 1164 11B4;BEC1;1108 1164 11B4; # (ë»; ë»; 뻁; ë»; 뻁; ) HANGUL SYLLABLE BBYAELT
+BEC2;BEC2;1108 1164 11B5;BEC2;1108 1164 11B5; # (뻂; 뻂; 뻂; 뻂; 뻂; ) HANGUL SYLLABLE BBYAELP
+BEC3;BEC3;1108 1164 11B6;BEC3;1108 1164 11B6; # (뻃; 뻃; 뻃; 뻃; 뻃; ) HANGUL SYLLABLE BBYAELH
+BEC4;BEC4;1108 1164 11B7;BEC4;1108 1164 11B7; # (뻄; 뻄; 뻄; 뻄; 뻄; ) HANGUL SYLLABLE BBYAEM
+BEC5;BEC5;1108 1164 11B8;BEC5;1108 1164 11B8; # (뻅; 뻅; 뻅; 뻅; 뻅; ) HANGUL SYLLABLE BBYAEB
+BEC6;BEC6;1108 1164 11B9;BEC6;1108 1164 11B9; # (뻆; 뻆; 뻆; 뻆; 뻆; ) HANGUL SYLLABLE BBYAEBS
+BEC7;BEC7;1108 1164 11BA;BEC7;1108 1164 11BA; # (뻇; 뻇; 뻇; 뻇; 뻇; ) HANGUL SYLLABLE BBYAES
+BEC8;BEC8;1108 1164 11BB;BEC8;1108 1164 11BB; # (뻈; 뻈; 뻈; 뻈; 뻈; ) HANGUL SYLLABLE BBYAESS
+BEC9;BEC9;1108 1164 11BC;BEC9;1108 1164 11BC; # (뻉; 뻉; 뻉; 뻉; 뻉; ) HANGUL SYLLABLE BBYAENG
+BECA;BECA;1108 1164 11BD;BECA;1108 1164 11BD; # (뻊; 뻊; 뻊; 뻊; 뻊; ) HANGUL SYLLABLE BBYAEJ
+BECB;BECB;1108 1164 11BE;BECB;1108 1164 11BE; # (뻋; 뻋; 뻋; 뻋; 뻋; ) HANGUL SYLLABLE BBYAEC
+BECC;BECC;1108 1164 11BF;BECC;1108 1164 11BF; # (뻌; 뻌; 뻌; 뻌; 뻌; ) HANGUL SYLLABLE BBYAEK
+BECD;BECD;1108 1164 11C0;BECD;1108 1164 11C0; # (ë»; ë»; 뻍; ë»; 뻍; ) HANGUL SYLLABLE BBYAET
+BECE;BECE;1108 1164 11C1;BECE;1108 1164 11C1; # (뻎; 뻎; 뺴á‡; 뻎; 뺴á‡; ) HANGUL SYLLABLE BBYAEP
+BECF;BECF;1108 1164 11C2;BECF;1108 1164 11C2; # (ë»; ë»; 뻏; ë»; 뻏; ) HANGUL SYLLABLE BBYAEH
+BED0;BED0;1108 1165;BED0;1108 1165; # (ë»; ë»; 뻐; ë»; 뻐; ) HANGUL SYLLABLE BBEO
+BED1;BED1;1108 1165 11A8;BED1;1108 1165 11A8; # (뻑; 뻑; 뻑; 뻑; 뻑; ) HANGUL SYLLABLE BBEOG
+BED2;BED2;1108 1165 11A9;BED2;1108 1165 11A9; # (뻒; 뻒; 뻒; 뻒; 뻒; ) HANGUL SYLLABLE BBEOGG
+BED3;BED3;1108 1165 11AA;BED3;1108 1165 11AA; # (뻓; 뻓; 뻓; 뻓; 뻓; ) HANGUL SYLLABLE BBEOGS
+BED4;BED4;1108 1165 11AB;BED4;1108 1165 11AB; # (뻔; 뻔; 뻔; 뻔; 뻔; ) HANGUL SYLLABLE BBEON
+BED5;BED5;1108 1165 11AC;BED5;1108 1165 11AC; # (뻕; 뻕; 뻕; 뻕; 뻕; ) HANGUL SYLLABLE BBEONJ
+BED6;BED6;1108 1165 11AD;BED6;1108 1165 11AD; # (뻖; 뻖; 뻖; 뻖; 뻖; ) HANGUL SYLLABLE BBEONH
+BED7;BED7;1108 1165 11AE;BED7;1108 1165 11AE; # (뻗; 뻗; 뻗; 뻗; 뻗; ) HANGUL SYLLABLE BBEOD
+BED8;BED8;1108 1165 11AF;BED8;1108 1165 11AF; # (뻘; 뻘; 뻘; 뻘; 뻘; ) HANGUL SYLLABLE BBEOL
+BED9;BED9;1108 1165 11B0;BED9;1108 1165 11B0; # (뻙; 뻙; 뻙; 뻙; 뻙; ) HANGUL SYLLABLE BBEOLG
+BEDA;BEDA;1108 1165 11B1;BEDA;1108 1165 11B1; # (뻚; 뻚; 뻚; 뻚; 뻚; ) HANGUL SYLLABLE BBEOLM
+BEDB;BEDB;1108 1165 11B2;BEDB;1108 1165 11B2; # (뻛; 뻛; 뻛; 뻛; 뻛; ) HANGUL SYLLABLE BBEOLB
+BEDC;BEDC;1108 1165 11B3;BEDC;1108 1165 11B3; # (뻜; 뻜; 뻜; 뻜; 뻜; ) HANGUL SYLLABLE BBEOLS
+BEDD;BEDD;1108 1165 11B4;BEDD;1108 1165 11B4; # (ë»; ë»; 뻝; ë»; 뻝; ) HANGUL SYLLABLE BBEOLT
+BEDE;BEDE;1108 1165 11B5;BEDE;1108 1165 11B5; # (뻞; 뻞; 뻞; 뻞; 뻞; ) HANGUL SYLLABLE BBEOLP
+BEDF;BEDF;1108 1165 11B6;BEDF;1108 1165 11B6; # (뻟; 뻟; 뻟; 뻟; 뻟; ) HANGUL SYLLABLE BBEOLH
+BEE0;BEE0;1108 1165 11B7;BEE0;1108 1165 11B7; # (뻠; 뻠; 뻠; 뻠; 뻠; ) HANGUL SYLLABLE BBEOM
+BEE1;BEE1;1108 1165 11B8;BEE1;1108 1165 11B8; # (뻡; 뻡; 뻡; 뻡; 뻡; ) HANGUL SYLLABLE BBEOB
+BEE2;BEE2;1108 1165 11B9;BEE2;1108 1165 11B9; # (뻢; 뻢; 뻢; 뻢; 뻢; ) HANGUL SYLLABLE BBEOBS
+BEE3;BEE3;1108 1165 11BA;BEE3;1108 1165 11BA; # (뻣; 뻣; 뻣; 뻣; 뻣; ) HANGUL SYLLABLE BBEOS
+BEE4;BEE4;1108 1165 11BB;BEE4;1108 1165 11BB; # (뻤; 뻤; 뻤; 뻤; 뻤; ) HANGUL SYLLABLE BBEOSS
+BEE5;BEE5;1108 1165 11BC;BEE5;1108 1165 11BC; # (뻥; 뻥; 뻥; 뻥; 뻥; ) HANGUL SYLLABLE BBEONG
+BEE6;BEE6;1108 1165 11BD;BEE6;1108 1165 11BD; # (뻦; 뻦; 뻦; 뻦; 뻦; ) HANGUL SYLLABLE BBEOJ
+BEE7;BEE7;1108 1165 11BE;BEE7;1108 1165 11BE; # (뻧; 뻧; 뻧; 뻧; 뻧; ) HANGUL SYLLABLE BBEOC
+BEE8;BEE8;1108 1165 11BF;BEE8;1108 1165 11BF; # (뻨; 뻨; 뻨; 뻨; 뻨; ) HANGUL SYLLABLE BBEOK
+BEE9;BEE9;1108 1165 11C0;BEE9;1108 1165 11C0; # (뻩; 뻩; 뻩; 뻩; 뻩; ) HANGUL SYLLABLE BBEOT
+BEEA;BEEA;1108 1165 11C1;BEEA;1108 1165 11C1; # (뻪; 뻪; 뻐á‡; 뻪; 뻐á‡; ) HANGUL SYLLABLE BBEOP
+BEEB;BEEB;1108 1165 11C2;BEEB;1108 1165 11C2; # (뻫; 뻫; 뻫; 뻫; 뻫; ) HANGUL SYLLABLE BBEOH
+BEEC;BEEC;1108 1166;BEEC;1108 1166; # (뻬; 뻬; 뻬; 뻬; 뻬; ) HANGUL SYLLABLE BBE
+BEED;BEED;1108 1166 11A8;BEED;1108 1166 11A8; # (뻭; 뻭; 뻭; 뻭; 뻭; ) HANGUL SYLLABLE BBEG
+BEEE;BEEE;1108 1166 11A9;BEEE;1108 1166 11A9; # (뻮; 뻮; 뻮; 뻮; 뻮; ) HANGUL SYLLABLE BBEGG
+BEEF;BEEF;1108 1166 11AA;BEEF;1108 1166 11AA; # (뻯; 뻯; 뻯; 뻯; 뻯; ) HANGUL SYLLABLE BBEGS
+BEF0;BEF0;1108 1166 11AB;BEF0;1108 1166 11AB; # (뻰; 뻰; 뻰; 뻰; 뻰; ) HANGUL SYLLABLE BBEN
+BEF1;BEF1;1108 1166 11AC;BEF1;1108 1166 11AC; # (뻱; 뻱; 뻱; 뻱; 뻱; ) HANGUL SYLLABLE BBENJ
+BEF2;BEF2;1108 1166 11AD;BEF2;1108 1166 11AD; # (뻲; 뻲; 뻲; 뻲; 뻲; ) HANGUL SYLLABLE BBENH
+BEF3;BEF3;1108 1166 11AE;BEF3;1108 1166 11AE; # (뻳; 뻳; 뻳; 뻳; 뻳; ) HANGUL SYLLABLE BBED
+BEF4;BEF4;1108 1166 11AF;BEF4;1108 1166 11AF; # (뻴; 뻴; 뻴; 뻴; 뻴; ) HANGUL SYLLABLE BBEL
+BEF5;BEF5;1108 1166 11B0;BEF5;1108 1166 11B0; # (뻵; 뻵; 뻵; 뻵; 뻵; ) HANGUL SYLLABLE BBELG
+BEF6;BEF6;1108 1166 11B1;BEF6;1108 1166 11B1; # (뻶; 뻶; 뻶; 뻶; 뻶; ) HANGUL SYLLABLE BBELM
+BEF7;BEF7;1108 1166 11B2;BEF7;1108 1166 11B2; # (뻷; 뻷; 뻷; 뻷; 뻷; ) HANGUL SYLLABLE BBELB
+BEF8;BEF8;1108 1166 11B3;BEF8;1108 1166 11B3; # (뻸; 뻸; 뻸; 뻸; 뻸; ) HANGUL SYLLABLE BBELS
+BEF9;BEF9;1108 1166 11B4;BEF9;1108 1166 11B4; # (뻹; 뻹; 뻹; 뻹; 뻹; ) HANGUL SYLLABLE BBELT
+BEFA;BEFA;1108 1166 11B5;BEFA;1108 1166 11B5; # (뻺; 뻺; 뻺; 뻺; 뻺; ) HANGUL SYLLABLE BBELP
+BEFB;BEFB;1108 1166 11B6;BEFB;1108 1166 11B6; # (뻻; 뻻; 뻻; 뻻; 뻻; ) HANGUL SYLLABLE BBELH
+BEFC;BEFC;1108 1166 11B7;BEFC;1108 1166 11B7; # (뻼; 뻼; 뻼; 뻼; 뻼; ) HANGUL SYLLABLE BBEM
+BEFD;BEFD;1108 1166 11B8;BEFD;1108 1166 11B8; # (뻽; 뻽; 뻽; 뻽; 뻽; ) HANGUL SYLLABLE BBEB
+BEFE;BEFE;1108 1166 11B9;BEFE;1108 1166 11B9; # (뻾; 뻾; 뻾; 뻾; 뻾; ) HANGUL SYLLABLE BBEBS
+BEFF;BEFF;1108 1166 11BA;BEFF;1108 1166 11BA; # (뻿; 뻿; 뻿; 뻿; 뻿; ) HANGUL SYLLABLE BBES
+BF00;BF00;1108 1166 11BB;BF00;1108 1166 11BB; # (뼀; 뼀; 뼀; 뼀; 뼀; ) HANGUL SYLLABLE BBESS
+BF01;BF01;1108 1166 11BC;BF01;1108 1166 11BC; # (ë¼; ë¼; 뼁; ë¼; 뼁; ) HANGUL SYLLABLE BBENG
+BF02;BF02;1108 1166 11BD;BF02;1108 1166 11BD; # (뼂; 뼂; 뼂; 뼂; 뼂; ) HANGUL SYLLABLE BBEJ
+BF03;BF03;1108 1166 11BE;BF03;1108 1166 11BE; # (뼃; 뼃; 뼃; 뼃; 뼃; ) HANGUL SYLLABLE BBEC
+BF04;BF04;1108 1166 11BF;BF04;1108 1166 11BF; # (뼄; 뼄; 뼄; 뼄; 뼄; ) HANGUL SYLLABLE BBEK
+BF05;BF05;1108 1166 11C0;BF05;1108 1166 11C0; # (뼅; 뼅; 뼅; 뼅; 뼅; ) HANGUL SYLLABLE BBET
+BF06;BF06;1108 1166 11C1;BF06;1108 1166 11C1; # (뼆; 뼆; 뻬á‡; 뼆; 뻬á‡; ) HANGUL SYLLABLE BBEP
+BF07;BF07;1108 1166 11C2;BF07;1108 1166 11C2; # (뼇; 뼇; 뼇; 뼇; 뼇; ) HANGUL SYLLABLE BBEH
+BF08;BF08;1108 1167;BF08;1108 1167; # (뼈; 뼈; 뼈; 뼈; 뼈; ) HANGUL SYLLABLE BBYEO
+BF09;BF09;1108 1167 11A8;BF09;1108 1167 11A8; # (뼉; 뼉; 뼉; 뼉; 뼉; ) HANGUL SYLLABLE BBYEOG
+BF0A;BF0A;1108 1167 11A9;BF0A;1108 1167 11A9; # (뼊; 뼊; 뼊; 뼊; 뼊; ) HANGUL SYLLABLE BBYEOGG
+BF0B;BF0B;1108 1167 11AA;BF0B;1108 1167 11AA; # (뼋; 뼋; 뼋; 뼋; 뼋; ) HANGUL SYLLABLE BBYEOGS
+BF0C;BF0C;1108 1167 11AB;BF0C;1108 1167 11AB; # (뼌; 뼌; 뼌; 뼌; 뼌; ) HANGUL SYLLABLE BBYEON
+BF0D;BF0D;1108 1167 11AC;BF0D;1108 1167 11AC; # (ë¼; ë¼; 뼍; ë¼; 뼍; ) HANGUL SYLLABLE BBYEONJ
+BF0E;BF0E;1108 1167 11AD;BF0E;1108 1167 11AD; # (뼎; 뼎; 뼎; 뼎; 뼎; ) HANGUL SYLLABLE BBYEONH
+BF0F;BF0F;1108 1167 11AE;BF0F;1108 1167 11AE; # (ë¼; ë¼; 뼏; ë¼; 뼏; ) HANGUL SYLLABLE BBYEOD
+BF10;BF10;1108 1167 11AF;BF10;1108 1167 11AF; # (ë¼; ë¼; 뼐; ë¼; 뼐; ) HANGUL SYLLABLE BBYEOL
+BF11;BF11;1108 1167 11B0;BF11;1108 1167 11B0; # (뼑; 뼑; 뼑; 뼑; 뼑; ) HANGUL SYLLABLE BBYEOLG
+BF12;BF12;1108 1167 11B1;BF12;1108 1167 11B1; # (뼒; 뼒; 뼒; 뼒; 뼒; ) HANGUL SYLLABLE BBYEOLM
+BF13;BF13;1108 1167 11B2;BF13;1108 1167 11B2; # (뼓; 뼓; 뼓; 뼓; 뼓; ) HANGUL SYLLABLE BBYEOLB
+BF14;BF14;1108 1167 11B3;BF14;1108 1167 11B3; # (뼔; 뼔; 뼔; 뼔; 뼔; ) HANGUL SYLLABLE BBYEOLS
+BF15;BF15;1108 1167 11B4;BF15;1108 1167 11B4; # (뼕; 뼕; 뼕; 뼕; 뼕; ) HANGUL SYLLABLE BBYEOLT
+BF16;BF16;1108 1167 11B5;BF16;1108 1167 11B5; # (뼖; 뼖; 뼖; 뼖; 뼖; ) HANGUL SYLLABLE BBYEOLP
+BF17;BF17;1108 1167 11B6;BF17;1108 1167 11B6; # (뼗; 뼗; 뼗; 뼗; 뼗; ) HANGUL SYLLABLE BBYEOLH
+BF18;BF18;1108 1167 11B7;BF18;1108 1167 11B7; # (뼘; 뼘; 뼘; 뼘; 뼘; ) HANGUL SYLLABLE BBYEOM
+BF19;BF19;1108 1167 11B8;BF19;1108 1167 11B8; # (뼙; 뼙; 뼙; 뼙; 뼙; ) HANGUL SYLLABLE BBYEOB
+BF1A;BF1A;1108 1167 11B9;BF1A;1108 1167 11B9; # (뼚; 뼚; 뼚; 뼚; 뼚; ) HANGUL SYLLABLE BBYEOBS
+BF1B;BF1B;1108 1167 11BA;BF1B;1108 1167 11BA; # (뼛; 뼛; 뼛; 뼛; 뼛; ) HANGUL SYLLABLE BBYEOS
+BF1C;BF1C;1108 1167 11BB;BF1C;1108 1167 11BB; # (뼜; 뼜; 뼜; 뼜; 뼜; ) HANGUL SYLLABLE BBYEOSS
+BF1D;BF1D;1108 1167 11BC;BF1D;1108 1167 11BC; # (ë¼; ë¼; 뼝; ë¼; 뼝; ) HANGUL SYLLABLE BBYEONG
+BF1E;BF1E;1108 1167 11BD;BF1E;1108 1167 11BD; # (뼞; 뼞; 뼞; 뼞; 뼞; ) HANGUL SYLLABLE BBYEOJ
+BF1F;BF1F;1108 1167 11BE;BF1F;1108 1167 11BE; # (뼟; 뼟; 뼟; 뼟; 뼟; ) HANGUL SYLLABLE BBYEOC
+BF20;BF20;1108 1167 11BF;BF20;1108 1167 11BF; # (뼠; 뼠; 뼠; 뼠; 뼠; ) HANGUL SYLLABLE BBYEOK
+BF21;BF21;1108 1167 11C0;BF21;1108 1167 11C0; # (뼡; 뼡; 뼡; 뼡; 뼡; ) HANGUL SYLLABLE BBYEOT
+BF22;BF22;1108 1167 11C1;BF22;1108 1167 11C1; # (ë¼¢; ë¼¢; 뼈á‡; ë¼¢; 뼈á‡; ) HANGUL SYLLABLE BBYEOP
+BF23;BF23;1108 1167 11C2;BF23;1108 1167 11C2; # (뼣; 뼣; 뼣; 뼣; 뼣; ) HANGUL SYLLABLE BBYEOH
+BF24;BF24;1108 1168;BF24;1108 1168; # (뼤; 뼤; 뼤; 뼤; 뼤; ) HANGUL SYLLABLE BBYE
+BF25;BF25;1108 1168 11A8;BF25;1108 1168 11A8; # (뼥; 뼥; 뼥; 뼥; 뼥; ) HANGUL SYLLABLE BBYEG
+BF26;BF26;1108 1168 11A9;BF26;1108 1168 11A9; # (뼦; 뼦; 뼦; 뼦; 뼦; ) HANGUL SYLLABLE BBYEGG
+BF27;BF27;1108 1168 11AA;BF27;1108 1168 11AA; # (뼧; 뼧; 뼧; 뼧; 뼧; ) HANGUL SYLLABLE BBYEGS
+BF28;BF28;1108 1168 11AB;BF28;1108 1168 11AB; # (뼨; 뼨; 뼨; 뼨; 뼨; ) HANGUL SYLLABLE BBYEN
+BF29;BF29;1108 1168 11AC;BF29;1108 1168 11AC; # (뼩; 뼩; 뼩; 뼩; 뼩; ) HANGUL SYLLABLE BBYENJ
+BF2A;BF2A;1108 1168 11AD;BF2A;1108 1168 11AD; # (뼪; 뼪; 뼪; 뼪; 뼪; ) HANGUL SYLLABLE BBYENH
+BF2B;BF2B;1108 1168 11AE;BF2B;1108 1168 11AE; # (뼫; 뼫; 뼫; 뼫; 뼫; ) HANGUL SYLLABLE BBYED
+BF2C;BF2C;1108 1168 11AF;BF2C;1108 1168 11AF; # (뼬; 뼬; 뼬; 뼬; 뼬; ) HANGUL SYLLABLE BBYEL
+BF2D;BF2D;1108 1168 11B0;BF2D;1108 1168 11B0; # (뼭; 뼭; 뼭; 뼭; 뼭; ) HANGUL SYLLABLE BBYELG
+BF2E;BF2E;1108 1168 11B1;BF2E;1108 1168 11B1; # (뼮; 뼮; 뼮; 뼮; 뼮; ) HANGUL SYLLABLE BBYELM
+BF2F;BF2F;1108 1168 11B2;BF2F;1108 1168 11B2; # (뼯; 뼯; 뼯; 뼯; 뼯; ) HANGUL SYLLABLE BBYELB
+BF30;BF30;1108 1168 11B3;BF30;1108 1168 11B3; # (뼰; 뼰; 뼰; 뼰; 뼰; ) HANGUL SYLLABLE BBYELS
+BF31;BF31;1108 1168 11B4;BF31;1108 1168 11B4; # (뼱; 뼱; 뼱; 뼱; 뼱; ) HANGUL SYLLABLE BBYELT
+BF32;BF32;1108 1168 11B5;BF32;1108 1168 11B5; # (뼲; 뼲; 뼲; 뼲; 뼲; ) HANGUL SYLLABLE BBYELP
+BF33;BF33;1108 1168 11B6;BF33;1108 1168 11B6; # (뼳; 뼳; 뼳; 뼳; 뼳; ) HANGUL SYLLABLE BBYELH
+BF34;BF34;1108 1168 11B7;BF34;1108 1168 11B7; # (뼴; 뼴; 뼴; 뼴; 뼴; ) HANGUL SYLLABLE BBYEM
+BF35;BF35;1108 1168 11B8;BF35;1108 1168 11B8; # (뼵; 뼵; 뼵; 뼵; 뼵; ) HANGUL SYLLABLE BBYEB
+BF36;BF36;1108 1168 11B9;BF36;1108 1168 11B9; # (뼶; 뼶; 뼶; 뼶; 뼶; ) HANGUL SYLLABLE BBYEBS
+BF37;BF37;1108 1168 11BA;BF37;1108 1168 11BA; # (뼷; 뼷; 뼷; 뼷; 뼷; ) HANGUL SYLLABLE BBYES
+BF38;BF38;1108 1168 11BB;BF38;1108 1168 11BB; # (뼸; 뼸; 뼸; 뼸; 뼸; ) HANGUL SYLLABLE BBYESS
+BF39;BF39;1108 1168 11BC;BF39;1108 1168 11BC; # (뼹; 뼹; 뼹; 뼹; 뼹; ) HANGUL SYLLABLE BBYENG
+BF3A;BF3A;1108 1168 11BD;BF3A;1108 1168 11BD; # (뼺; 뼺; 뼺; 뼺; 뼺; ) HANGUL SYLLABLE BBYEJ
+BF3B;BF3B;1108 1168 11BE;BF3B;1108 1168 11BE; # (뼻; 뼻; 뼻; 뼻; 뼻; ) HANGUL SYLLABLE BBYEC
+BF3C;BF3C;1108 1168 11BF;BF3C;1108 1168 11BF; # (뼼; 뼼; 뼼; 뼼; 뼼; ) HANGUL SYLLABLE BBYEK
+BF3D;BF3D;1108 1168 11C0;BF3D;1108 1168 11C0; # (뼽; 뼽; 뼽; 뼽; 뼽; ) HANGUL SYLLABLE BBYET
+BF3E;BF3E;1108 1168 11C1;BF3E;1108 1168 11C1; # (ë¼¾; ë¼¾; 뼤á‡; ë¼¾; 뼤á‡; ) HANGUL SYLLABLE BBYEP
+BF3F;BF3F;1108 1168 11C2;BF3F;1108 1168 11C2; # (뼿; 뼿; 뼿; 뼿; 뼿; ) HANGUL SYLLABLE BBYEH
+BF40;BF40;1108 1169;BF40;1108 1169; # (뽀; 뽀; 뽀; 뽀; 뽀; ) HANGUL SYLLABLE BBO
+BF41;BF41;1108 1169 11A8;BF41;1108 1169 11A8; # (ë½; ë½; 뽁; ë½; 뽁; ) HANGUL SYLLABLE BBOG
+BF42;BF42;1108 1169 11A9;BF42;1108 1169 11A9; # (뽂; 뽂; 뽂; 뽂; 뽂; ) HANGUL SYLLABLE BBOGG
+BF43;BF43;1108 1169 11AA;BF43;1108 1169 11AA; # (뽃; 뽃; 뽃; 뽃; 뽃; ) HANGUL SYLLABLE BBOGS
+BF44;BF44;1108 1169 11AB;BF44;1108 1169 11AB; # (뽄; 뽄; 뽄; 뽄; 뽄; ) HANGUL SYLLABLE BBON
+BF45;BF45;1108 1169 11AC;BF45;1108 1169 11AC; # (뽅; 뽅; 뽅; 뽅; 뽅; ) HANGUL SYLLABLE BBONJ
+BF46;BF46;1108 1169 11AD;BF46;1108 1169 11AD; # (뽆; 뽆; 뽆; 뽆; 뽆; ) HANGUL SYLLABLE BBONH
+BF47;BF47;1108 1169 11AE;BF47;1108 1169 11AE; # (뽇; 뽇; 뽇; 뽇; 뽇; ) HANGUL SYLLABLE BBOD
+BF48;BF48;1108 1169 11AF;BF48;1108 1169 11AF; # (뽈; 뽈; 뽈; 뽈; 뽈; ) HANGUL SYLLABLE BBOL
+BF49;BF49;1108 1169 11B0;BF49;1108 1169 11B0; # (뽉; 뽉; 뽉; 뽉; 뽉; ) HANGUL SYLLABLE BBOLG
+BF4A;BF4A;1108 1169 11B1;BF4A;1108 1169 11B1; # (뽊; 뽊; 뽊; 뽊; 뽊; ) HANGUL SYLLABLE BBOLM
+BF4B;BF4B;1108 1169 11B2;BF4B;1108 1169 11B2; # (뽋; 뽋; 뽋; 뽋; 뽋; ) HANGUL SYLLABLE BBOLB
+BF4C;BF4C;1108 1169 11B3;BF4C;1108 1169 11B3; # (뽌; 뽌; 뽌; 뽌; 뽌; ) HANGUL SYLLABLE BBOLS
+BF4D;BF4D;1108 1169 11B4;BF4D;1108 1169 11B4; # (ë½; ë½; 뽍; ë½; 뽍; ) HANGUL SYLLABLE BBOLT
+BF4E;BF4E;1108 1169 11B5;BF4E;1108 1169 11B5; # (뽎; 뽎; 뽎; 뽎; 뽎; ) HANGUL SYLLABLE BBOLP
+BF4F;BF4F;1108 1169 11B6;BF4F;1108 1169 11B6; # (ë½; ë½; 뽏; ë½; 뽏; ) HANGUL SYLLABLE BBOLH
+BF50;BF50;1108 1169 11B7;BF50;1108 1169 11B7; # (ë½; ë½; 뽐; ë½; 뽐; ) HANGUL SYLLABLE BBOM
+BF51;BF51;1108 1169 11B8;BF51;1108 1169 11B8; # (뽑; 뽑; 뽑; 뽑; 뽑; ) HANGUL SYLLABLE BBOB
+BF52;BF52;1108 1169 11B9;BF52;1108 1169 11B9; # (뽒; 뽒; 뽒; 뽒; 뽒; ) HANGUL SYLLABLE BBOBS
+BF53;BF53;1108 1169 11BA;BF53;1108 1169 11BA; # (뽓; 뽓; 뽓; 뽓; 뽓; ) HANGUL SYLLABLE BBOS
+BF54;BF54;1108 1169 11BB;BF54;1108 1169 11BB; # (뽔; 뽔; 뽔; 뽔; 뽔; ) HANGUL SYLLABLE BBOSS
+BF55;BF55;1108 1169 11BC;BF55;1108 1169 11BC; # (뽕; 뽕; 뽕; 뽕; 뽕; ) HANGUL SYLLABLE BBONG
+BF56;BF56;1108 1169 11BD;BF56;1108 1169 11BD; # (뽖; 뽖; 뽖; 뽖; 뽖; ) HANGUL SYLLABLE BBOJ
+BF57;BF57;1108 1169 11BE;BF57;1108 1169 11BE; # (뽗; 뽗; 뽗; 뽗; 뽗; ) HANGUL SYLLABLE BBOC
+BF58;BF58;1108 1169 11BF;BF58;1108 1169 11BF; # (뽘; 뽘; 뽘; 뽘; 뽘; ) HANGUL SYLLABLE BBOK
+BF59;BF59;1108 1169 11C0;BF59;1108 1169 11C0; # (뽙; 뽙; 뽙; 뽙; 뽙; ) HANGUL SYLLABLE BBOT
+BF5A;BF5A;1108 1169 11C1;BF5A;1108 1169 11C1; # (뽚; 뽚; 뽀á‡; 뽚; 뽀á‡; ) HANGUL SYLLABLE BBOP
+BF5B;BF5B;1108 1169 11C2;BF5B;1108 1169 11C2; # (뽛; 뽛; 뽛; 뽛; 뽛; ) HANGUL SYLLABLE BBOH
+BF5C;BF5C;1108 116A;BF5C;1108 116A; # (뽜; 뽜; 뽜; 뽜; 뽜; ) HANGUL SYLLABLE BBWA
+BF5D;BF5D;1108 116A 11A8;BF5D;1108 116A 11A8; # (ë½; ë½; 뽝; ë½; 뽝; ) HANGUL SYLLABLE BBWAG
+BF5E;BF5E;1108 116A 11A9;BF5E;1108 116A 11A9; # (뽞; 뽞; 뽞; 뽞; 뽞; ) HANGUL SYLLABLE BBWAGG
+BF5F;BF5F;1108 116A 11AA;BF5F;1108 116A 11AA; # (뽟; 뽟; 뽟; 뽟; 뽟; ) HANGUL SYLLABLE BBWAGS
+BF60;BF60;1108 116A 11AB;BF60;1108 116A 11AB; # (뽠; 뽠; 뽠; 뽠; 뽠; ) HANGUL SYLLABLE BBWAN
+BF61;BF61;1108 116A 11AC;BF61;1108 116A 11AC; # (뽡; 뽡; 뽡; 뽡; 뽡; ) HANGUL SYLLABLE BBWANJ
+BF62;BF62;1108 116A 11AD;BF62;1108 116A 11AD; # (뽢; 뽢; 뽢; 뽢; 뽢; ) HANGUL SYLLABLE BBWANH
+BF63;BF63;1108 116A 11AE;BF63;1108 116A 11AE; # (뽣; 뽣; 뽣; 뽣; 뽣; ) HANGUL SYLLABLE BBWAD
+BF64;BF64;1108 116A 11AF;BF64;1108 116A 11AF; # (뽤; 뽤; 뽤; 뽤; 뽤; ) HANGUL SYLLABLE BBWAL
+BF65;BF65;1108 116A 11B0;BF65;1108 116A 11B0; # (뽥; 뽥; 뽥; 뽥; 뽥; ) HANGUL SYLLABLE BBWALG
+BF66;BF66;1108 116A 11B1;BF66;1108 116A 11B1; # (뽦; 뽦; 뽦; 뽦; 뽦; ) HANGUL SYLLABLE BBWALM
+BF67;BF67;1108 116A 11B2;BF67;1108 116A 11B2; # (뽧; 뽧; 뽧; 뽧; 뽧; ) HANGUL SYLLABLE BBWALB
+BF68;BF68;1108 116A 11B3;BF68;1108 116A 11B3; # (뽨; 뽨; 뽨; 뽨; 뽨; ) HANGUL SYLLABLE BBWALS
+BF69;BF69;1108 116A 11B4;BF69;1108 116A 11B4; # (뽩; 뽩; 뽩; 뽩; 뽩; ) HANGUL SYLLABLE BBWALT
+BF6A;BF6A;1108 116A 11B5;BF6A;1108 116A 11B5; # (뽪; 뽪; 뽪; 뽪; 뽪; ) HANGUL SYLLABLE BBWALP
+BF6B;BF6B;1108 116A 11B6;BF6B;1108 116A 11B6; # (뽫; 뽫; 뽫; 뽫; 뽫; ) HANGUL SYLLABLE BBWALH
+BF6C;BF6C;1108 116A 11B7;BF6C;1108 116A 11B7; # (뽬; 뽬; 뽬; 뽬; 뽬; ) HANGUL SYLLABLE BBWAM
+BF6D;BF6D;1108 116A 11B8;BF6D;1108 116A 11B8; # (뽭; 뽭; 뽭; 뽭; 뽭; ) HANGUL SYLLABLE BBWAB
+BF6E;BF6E;1108 116A 11B9;BF6E;1108 116A 11B9; # (뽮; 뽮; 뽮; 뽮; 뽮; ) HANGUL SYLLABLE BBWABS
+BF6F;BF6F;1108 116A 11BA;BF6F;1108 116A 11BA; # (뽯; 뽯; 뽯; 뽯; 뽯; ) HANGUL SYLLABLE BBWAS
+BF70;BF70;1108 116A 11BB;BF70;1108 116A 11BB; # (뽰; 뽰; 뽰; 뽰; 뽰; ) HANGUL SYLLABLE BBWASS
+BF71;BF71;1108 116A 11BC;BF71;1108 116A 11BC; # (뽱; 뽱; 뽱; 뽱; 뽱; ) HANGUL SYLLABLE BBWANG
+BF72;BF72;1108 116A 11BD;BF72;1108 116A 11BD; # (뽲; 뽲; 뽲; 뽲; 뽲; ) HANGUL SYLLABLE BBWAJ
+BF73;BF73;1108 116A 11BE;BF73;1108 116A 11BE; # (뽳; 뽳; 뽳; 뽳; 뽳; ) HANGUL SYLLABLE BBWAC
+BF74;BF74;1108 116A 11BF;BF74;1108 116A 11BF; # (뽴; 뽴; 뽴; 뽴; 뽴; ) HANGUL SYLLABLE BBWAK
+BF75;BF75;1108 116A 11C0;BF75;1108 116A 11C0; # (뽵; 뽵; 뽵; 뽵; 뽵; ) HANGUL SYLLABLE BBWAT
+BF76;BF76;1108 116A 11C1;BF76;1108 116A 11C1; # (뽶; 뽶; 뽜á‡; 뽶; 뽜á‡; ) HANGUL SYLLABLE BBWAP
+BF77;BF77;1108 116A 11C2;BF77;1108 116A 11C2; # (뽷; 뽷; 뽷; 뽷; 뽷; ) HANGUL SYLLABLE BBWAH
+BF78;BF78;1108 116B;BF78;1108 116B; # (뽸; 뽸; 뽸; 뽸; 뽸; ) HANGUL SYLLABLE BBWAE
+BF79;BF79;1108 116B 11A8;BF79;1108 116B 11A8; # (뽹; 뽹; 뽹; 뽹; 뽹; ) HANGUL SYLLABLE BBWAEG
+BF7A;BF7A;1108 116B 11A9;BF7A;1108 116B 11A9; # (뽺; 뽺; 뽺; 뽺; 뽺; ) HANGUL SYLLABLE BBWAEGG
+BF7B;BF7B;1108 116B 11AA;BF7B;1108 116B 11AA; # (뽻; 뽻; 뽻; 뽻; 뽻; ) HANGUL SYLLABLE BBWAEGS
+BF7C;BF7C;1108 116B 11AB;BF7C;1108 116B 11AB; # (뽼; 뽼; 뽼; 뽼; 뽼; ) HANGUL SYLLABLE BBWAEN
+BF7D;BF7D;1108 116B 11AC;BF7D;1108 116B 11AC; # (뽽; 뽽; 뽽; 뽽; 뽽; ) HANGUL SYLLABLE BBWAENJ
+BF7E;BF7E;1108 116B 11AD;BF7E;1108 116B 11AD; # (뽾; 뽾; 뽾; 뽾; 뽾; ) HANGUL SYLLABLE BBWAENH
+BF7F;BF7F;1108 116B 11AE;BF7F;1108 116B 11AE; # (뽿; 뽿; 뽿; 뽿; 뽿; ) HANGUL SYLLABLE BBWAED
+BF80;BF80;1108 116B 11AF;BF80;1108 116B 11AF; # (뾀; 뾀; 뾀; 뾀; 뾀; ) HANGUL SYLLABLE BBWAEL
+BF81;BF81;1108 116B 11B0;BF81;1108 116B 11B0; # (ë¾; ë¾; 뾁; ë¾; 뾁; ) HANGUL SYLLABLE BBWAELG
+BF82;BF82;1108 116B 11B1;BF82;1108 116B 11B1; # (뾂; 뾂; 뾂; 뾂; 뾂; ) HANGUL SYLLABLE BBWAELM
+BF83;BF83;1108 116B 11B2;BF83;1108 116B 11B2; # (뾃; 뾃; 뾃; 뾃; 뾃; ) HANGUL SYLLABLE BBWAELB
+BF84;BF84;1108 116B 11B3;BF84;1108 116B 11B3; # (뾄; 뾄; 뾄; 뾄; 뾄; ) HANGUL SYLLABLE BBWAELS
+BF85;BF85;1108 116B 11B4;BF85;1108 116B 11B4; # (뾅; 뾅; 뾅; 뾅; 뾅; ) HANGUL SYLLABLE BBWAELT
+BF86;BF86;1108 116B 11B5;BF86;1108 116B 11B5; # (뾆; 뾆; 뾆; 뾆; 뾆; ) HANGUL SYLLABLE BBWAELP
+BF87;BF87;1108 116B 11B6;BF87;1108 116B 11B6; # (뾇; 뾇; 뾇; 뾇; 뾇; ) HANGUL SYLLABLE BBWAELH
+BF88;BF88;1108 116B 11B7;BF88;1108 116B 11B7; # (뾈; 뾈; 뾈; 뾈; 뾈; ) HANGUL SYLLABLE BBWAEM
+BF89;BF89;1108 116B 11B8;BF89;1108 116B 11B8; # (뾉; 뾉; 뾉; 뾉; 뾉; ) HANGUL SYLLABLE BBWAEB
+BF8A;BF8A;1108 116B 11B9;BF8A;1108 116B 11B9; # (뾊; 뾊; 뾊; 뾊; 뾊; ) HANGUL SYLLABLE BBWAEBS
+BF8B;BF8B;1108 116B 11BA;BF8B;1108 116B 11BA; # (뾋; 뾋; 뾋; 뾋; 뾋; ) HANGUL SYLLABLE BBWAES
+BF8C;BF8C;1108 116B 11BB;BF8C;1108 116B 11BB; # (뾌; 뾌; 뾌; 뾌; 뾌; ) HANGUL SYLLABLE BBWAESS
+BF8D;BF8D;1108 116B 11BC;BF8D;1108 116B 11BC; # (ë¾; ë¾; 뾍; ë¾; 뾍; ) HANGUL SYLLABLE BBWAENG
+BF8E;BF8E;1108 116B 11BD;BF8E;1108 116B 11BD; # (뾎; 뾎; 뾎; 뾎; 뾎; ) HANGUL SYLLABLE BBWAEJ
+BF8F;BF8F;1108 116B 11BE;BF8F;1108 116B 11BE; # (ë¾; ë¾; 뾏; ë¾; 뾏; ) HANGUL SYLLABLE BBWAEC
+BF90;BF90;1108 116B 11BF;BF90;1108 116B 11BF; # (ë¾; ë¾; 뾐; ë¾; 뾐; ) HANGUL SYLLABLE BBWAEK
+BF91;BF91;1108 116B 11C0;BF91;1108 116B 11C0; # (뾑; 뾑; 뾑; 뾑; 뾑; ) HANGUL SYLLABLE BBWAET
+BF92;BF92;1108 116B 11C1;BF92;1108 116B 11C1; # (ë¾’; ë¾’; 뽸á‡; ë¾’; 뽸á‡; ) HANGUL SYLLABLE BBWAEP
+BF93;BF93;1108 116B 11C2;BF93;1108 116B 11C2; # (뾓; 뾓; 뾓; 뾓; 뾓; ) HANGUL SYLLABLE BBWAEH
+BF94;BF94;1108 116C;BF94;1108 116C; # (뾔; 뾔; 뾔; 뾔; 뾔; ) HANGUL SYLLABLE BBOE
+BF95;BF95;1108 116C 11A8;BF95;1108 116C 11A8; # (뾕; 뾕; 뾕; 뾕; 뾕; ) HANGUL SYLLABLE BBOEG
+BF96;BF96;1108 116C 11A9;BF96;1108 116C 11A9; # (뾖; 뾖; 뾖; 뾖; 뾖; ) HANGUL SYLLABLE BBOEGG
+BF97;BF97;1108 116C 11AA;BF97;1108 116C 11AA; # (뾗; 뾗; 뾗; 뾗; 뾗; ) HANGUL SYLLABLE BBOEGS
+BF98;BF98;1108 116C 11AB;BF98;1108 116C 11AB; # (뾘; 뾘; 뾘; 뾘; 뾘; ) HANGUL SYLLABLE BBOEN
+BF99;BF99;1108 116C 11AC;BF99;1108 116C 11AC; # (뾙; 뾙; 뾙; 뾙; 뾙; ) HANGUL SYLLABLE BBOENJ
+BF9A;BF9A;1108 116C 11AD;BF9A;1108 116C 11AD; # (뾚; 뾚; 뾚; 뾚; 뾚; ) HANGUL SYLLABLE BBOENH
+BF9B;BF9B;1108 116C 11AE;BF9B;1108 116C 11AE; # (뾛; 뾛; 뾛; 뾛; 뾛; ) HANGUL SYLLABLE BBOED
+BF9C;BF9C;1108 116C 11AF;BF9C;1108 116C 11AF; # (뾜; 뾜; 뾜; 뾜; 뾜; ) HANGUL SYLLABLE BBOEL
+BF9D;BF9D;1108 116C 11B0;BF9D;1108 116C 11B0; # (ë¾; ë¾; 뾝; ë¾; 뾝; ) HANGUL SYLLABLE BBOELG
+BF9E;BF9E;1108 116C 11B1;BF9E;1108 116C 11B1; # (뾞; 뾞; 뾞; 뾞; 뾞; ) HANGUL SYLLABLE BBOELM
+BF9F;BF9F;1108 116C 11B2;BF9F;1108 116C 11B2; # (뾟; 뾟; 뾟; 뾟; 뾟; ) HANGUL SYLLABLE BBOELB
+BFA0;BFA0;1108 116C 11B3;BFA0;1108 116C 11B3; # (뾠; 뾠; 뾠; 뾠; 뾠; ) HANGUL SYLLABLE BBOELS
+BFA1;BFA1;1108 116C 11B4;BFA1;1108 116C 11B4; # (뾡; 뾡; 뾡; 뾡; 뾡; ) HANGUL SYLLABLE BBOELT
+BFA2;BFA2;1108 116C 11B5;BFA2;1108 116C 11B5; # (뾢; 뾢; 뾢; 뾢; 뾢; ) HANGUL SYLLABLE BBOELP
+BFA3;BFA3;1108 116C 11B6;BFA3;1108 116C 11B6; # (뾣; 뾣; 뾣; 뾣; 뾣; ) HANGUL SYLLABLE BBOELH
+BFA4;BFA4;1108 116C 11B7;BFA4;1108 116C 11B7; # (뾤; 뾤; 뾤; 뾤; 뾤; ) HANGUL SYLLABLE BBOEM
+BFA5;BFA5;1108 116C 11B8;BFA5;1108 116C 11B8; # (뾥; 뾥; 뾥; 뾥; 뾥; ) HANGUL SYLLABLE BBOEB
+BFA6;BFA6;1108 116C 11B9;BFA6;1108 116C 11B9; # (뾦; 뾦; 뾦; 뾦; 뾦; ) HANGUL SYLLABLE BBOEBS
+BFA7;BFA7;1108 116C 11BA;BFA7;1108 116C 11BA; # (뾧; 뾧; 뾧; 뾧; 뾧; ) HANGUL SYLLABLE BBOES
+BFA8;BFA8;1108 116C 11BB;BFA8;1108 116C 11BB; # (뾨; 뾨; 뾨; 뾨; 뾨; ) HANGUL SYLLABLE BBOESS
+BFA9;BFA9;1108 116C 11BC;BFA9;1108 116C 11BC; # (뾩; 뾩; 뾩; 뾩; 뾩; ) HANGUL SYLLABLE BBOENG
+BFAA;BFAA;1108 116C 11BD;BFAA;1108 116C 11BD; # (뾪; 뾪; 뾪; 뾪; 뾪; ) HANGUL SYLLABLE BBOEJ
+BFAB;BFAB;1108 116C 11BE;BFAB;1108 116C 11BE; # (뾫; 뾫; 뾫; 뾫; 뾫; ) HANGUL SYLLABLE BBOEC
+BFAC;BFAC;1108 116C 11BF;BFAC;1108 116C 11BF; # (뾬; 뾬; 뾬; 뾬; 뾬; ) HANGUL SYLLABLE BBOEK
+BFAD;BFAD;1108 116C 11C0;BFAD;1108 116C 11C0; # (뾭; 뾭; 뾭; 뾭; 뾭; ) HANGUL SYLLABLE BBOET
+BFAE;BFAE;1108 116C 11C1;BFAE;1108 116C 11C1; # (ë¾®; ë¾®; 뾔á‡; ë¾®; 뾔á‡; ) HANGUL SYLLABLE BBOEP
+BFAF;BFAF;1108 116C 11C2;BFAF;1108 116C 11C2; # (뾯; 뾯; 뾯; 뾯; 뾯; ) HANGUL SYLLABLE BBOEH
+BFB0;BFB0;1108 116D;BFB0;1108 116D; # (뾰; 뾰; 뾰; 뾰; 뾰; ) HANGUL SYLLABLE BBYO
+BFB1;BFB1;1108 116D 11A8;BFB1;1108 116D 11A8; # (뾱; 뾱; 뾱; 뾱; 뾱; ) HANGUL SYLLABLE BBYOG
+BFB2;BFB2;1108 116D 11A9;BFB2;1108 116D 11A9; # (뾲; 뾲; 뾲; 뾲; 뾲; ) HANGUL SYLLABLE BBYOGG
+BFB3;BFB3;1108 116D 11AA;BFB3;1108 116D 11AA; # (뾳; 뾳; 뾳; 뾳; 뾳; ) HANGUL SYLLABLE BBYOGS
+BFB4;BFB4;1108 116D 11AB;BFB4;1108 116D 11AB; # (뾴; 뾴; 뾴; 뾴; 뾴; ) HANGUL SYLLABLE BBYON
+BFB5;BFB5;1108 116D 11AC;BFB5;1108 116D 11AC; # (뾵; 뾵; 뾵; 뾵; 뾵; ) HANGUL SYLLABLE BBYONJ
+BFB6;BFB6;1108 116D 11AD;BFB6;1108 116D 11AD; # (뾶; 뾶; 뾶; 뾶; 뾶; ) HANGUL SYLLABLE BBYONH
+BFB7;BFB7;1108 116D 11AE;BFB7;1108 116D 11AE; # (뾷; 뾷; 뾷; 뾷; 뾷; ) HANGUL SYLLABLE BBYOD
+BFB8;BFB8;1108 116D 11AF;BFB8;1108 116D 11AF; # (뾸; 뾸; 뾸; 뾸; 뾸; ) HANGUL SYLLABLE BBYOL
+BFB9;BFB9;1108 116D 11B0;BFB9;1108 116D 11B0; # (뾹; 뾹; 뾹; 뾹; 뾹; ) HANGUL SYLLABLE BBYOLG
+BFBA;BFBA;1108 116D 11B1;BFBA;1108 116D 11B1; # (뾺; 뾺; 뾺; 뾺; 뾺; ) HANGUL SYLLABLE BBYOLM
+BFBB;BFBB;1108 116D 11B2;BFBB;1108 116D 11B2; # (뾻; 뾻; 뾻; 뾻; 뾻; ) HANGUL SYLLABLE BBYOLB
+BFBC;BFBC;1108 116D 11B3;BFBC;1108 116D 11B3; # (뾼; 뾼; 뾼; 뾼; 뾼; ) HANGUL SYLLABLE BBYOLS
+BFBD;BFBD;1108 116D 11B4;BFBD;1108 116D 11B4; # (뾽; 뾽; 뾽; 뾽; 뾽; ) HANGUL SYLLABLE BBYOLT
+BFBE;BFBE;1108 116D 11B5;BFBE;1108 116D 11B5; # (뾾; 뾾; 뾾; 뾾; 뾾; ) HANGUL SYLLABLE BBYOLP
+BFBF;BFBF;1108 116D 11B6;BFBF;1108 116D 11B6; # (뾿; 뾿; 뾿; 뾿; 뾿; ) HANGUL SYLLABLE BBYOLH
+BFC0;BFC0;1108 116D 11B7;BFC0;1108 116D 11B7; # (뿀; 뿀; 뿀; 뿀; 뿀; ) HANGUL SYLLABLE BBYOM
+BFC1;BFC1;1108 116D 11B8;BFC1;1108 116D 11B8; # (ë¿; ë¿; 뿁; ë¿; 뿁; ) HANGUL SYLLABLE BBYOB
+BFC2;BFC2;1108 116D 11B9;BFC2;1108 116D 11B9; # (뿂; 뿂; 뿂; 뿂; 뿂; ) HANGUL SYLLABLE BBYOBS
+BFC3;BFC3;1108 116D 11BA;BFC3;1108 116D 11BA; # (뿃; 뿃; 뿃; 뿃; 뿃; ) HANGUL SYLLABLE BBYOS
+BFC4;BFC4;1108 116D 11BB;BFC4;1108 116D 11BB; # (뿄; 뿄; 뿄; 뿄; 뿄; ) HANGUL SYLLABLE BBYOSS
+BFC5;BFC5;1108 116D 11BC;BFC5;1108 116D 11BC; # (뿅; 뿅; 뿅; 뿅; 뿅; ) HANGUL SYLLABLE BBYONG
+BFC6;BFC6;1108 116D 11BD;BFC6;1108 116D 11BD; # (뿆; 뿆; 뿆; 뿆; 뿆; ) HANGUL SYLLABLE BBYOJ
+BFC7;BFC7;1108 116D 11BE;BFC7;1108 116D 11BE; # (뿇; 뿇; 뿇; 뿇; 뿇; ) HANGUL SYLLABLE BBYOC
+BFC8;BFC8;1108 116D 11BF;BFC8;1108 116D 11BF; # (뿈; 뿈; 뿈; 뿈; 뿈; ) HANGUL SYLLABLE BBYOK
+BFC9;BFC9;1108 116D 11C0;BFC9;1108 116D 11C0; # (뿉; 뿉; 뿉; 뿉; 뿉; ) HANGUL SYLLABLE BBYOT
+BFCA;BFCA;1108 116D 11C1;BFCA;1108 116D 11C1; # (ë¿Š; ë¿Š; 뾰á‡; ë¿Š; 뾰á‡; ) HANGUL SYLLABLE BBYOP
+BFCB;BFCB;1108 116D 11C2;BFCB;1108 116D 11C2; # (뿋; 뿋; 뿋; 뿋; 뿋; ) HANGUL SYLLABLE BBYOH
+BFCC;BFCC;1108 116E;BFCC;1108 116E; # (뿌; 뿌; 뿌; 뿌; 뿌; ) HANGUL SYLLABLE BBU
+BFCD;BFCD;1108 116E 11A8;BFCD;1108 116E 11A8; # (ë¿; ë¿; 뿍; ë¿; 뿍; ) HANGUL SYLLABLE BBUG
+BFCE;BFCE;1108 116E 11A9;BFCE;1108 116E 11A9; # (뿎; 뿎; 뿎; 뿎; 뿎; ) HANGUL SYLLABLE BBUGG
+BFCF;BFCF;1108 116E 11AA;BFCF;1108 116E 11AA; # (ë¿; ë¿; 뿏; ë¿; 뿏; ) HANGUL SYLLABLE BBUGS
+BFD0;BFD0;1108 116E 11AB;BFD0;1108 116E 11AB; # (ë¿; ë¿; 뿐; ë¿; 뿐; ) HANGUL SYLLABLE BBUN
+BFD1;BFD1;1108 116E 11AC;BFD1;1108 116E 11AC; # (뿑; 뿑; 뿑; 뿑; 뿑; ) HANGUL SYLLABLE BBUNJ
+BFD2;BFD2;1108 116E 11AD;BFD2;1108 116E 11AD; # (뿒; 뿒; 뿒; 뿒; 뿒; ) HANGUL SYLLABLE BBUNH
+BFD3;BFD3;1108 116E 11AE;BFD3;1108 116E 11AE; # (뿓; 뿓; 뿓; 뿓; 뿓; ) HANGUL SYLLABLE BBUD
+BFD4;BFD4;1108 116E 11AF;BFD4;1108 116E 11AF; # (뿔; 뿔; 뿔; 뿔; 뿔; ) HANGUL SYLLABLE BBUL
+BFD5;BFD5;1108 116E 11B0;BFD5;1108 116E 11B0; # (뿕; 뿕; 뿕; 뿕; 뿕; ) HANGUL SYLLABLE BBULG
+BFD6;BFD6;1108 116E 11B1;BFD6;1108 116E 11B1; # (뿖; 뿖; 뿖; 뿖; 뿖; ) HANGUL SYLLABLE BBULM
+BFD7;BFD7;1108 116E 11B2;BFD7;1108 116E 11B2; # (뿗; 뿗; 뿗; 뿗; 뿗; ) HANGUL SYLLABLE BBULB
+BFD8;BFD8;1108 116E 11B3;BFD8;1108 116E 11B3; # (뿘; 뿘; 뿘; 뿘; 뿘; ) HANGUL SYLLABLE BBULS
+BFD9;BFD9;1108 116E 11B4;BFD9;1108 116E 11B4; # (뿙; 뿙; 뿙; 뿙; 뿙; ) HANGUL SYLLABLE BBULT
+BFDA;BFDA;1108 116E 11B5;BFDA;1108 116E 11B5; # (뿚; 뿚; 뿚; 뿚; 뿚; ) HANGUL SYLLABLE BBULP
+BFDB;BFDB;1108 116E 11B6;BFDB;1108 116E 11B6; # (뿛; 뿛; 뿛; 뿛; 뿛; ) HANGUL SYLLABLE BBULH
+BFDC;BFDC;1108 116E 11B7;BFDC;1108 116E 11B7; # (뿜; 뿜; 뿜; 뿜; 뿜; ) HANGUL SYLLABLE BBUM
+BFDD;BFDD;1108 116E 11B8;BFDD;1108 116E 11B8; # (ë¿; ë¿; 뿝; ë¿; 뿝; ) HANGUL SYLLABLE BBUB
+BFDE;BFDE;1108 116E 11B9;BFDE;1108 116E 11B9; # (뿞; 뿞; 뿞; 뿞; 뿞; ) HANGUL SYLLABLE BBUBS
+BFDF;BFDF;1108 116E 11BA;BFDF;1108 116E 11BA; # (뿟; 뿟; 뿟; 뿟; 뿟; ) HANGUL SYLLABLE BBUS
+BFE0;BFE0;1108 116E 11BB;BFE0;1108 116E 11BB; # (뿠; 뿠; 뿠; 뿠; 뿠; ) HANGUL SYLLABLE BBUSS
+BFE1;BFE1;1108 116E 11BC;BFE1;1108 116E 11BC; # (뿡; 뿡; 뿡; 뿡; 뿡; ) HANGUL SYLLABLE BBUNG
+BFE2;BFE2;1108 116E 11BD;BFE2;1108 116E 11BD; # (뿢; 뿢; 뿢; 뿢; 뿢; ) HANGUL SYLLABLE BBUJ
+BFE3;BFE3;1108 116E 11BE;BFE3;1108 116E 11BE; # (뿣; 뿣; 뿣; 뿣; 뿣; ) HANGUL SYLLABLE BBUC
+BFE4;BFE4;1108 116E 11BF;BFE4;1108 116E 11BF; # (뿤; 뿤; 뿤; 뿤; 뿤; ) HANGUL SYLLABLE BBUK
+BFE5;BFE5;1108 116E 11C0;BFE5;1108 116E 11C0; # (뿥; 뿥; 뿥; 뿥; 뿥; ) HANGUL SYLLABLE BBUT
+BFE6;BFE6;1108 116E 11C1;BFE6;1108 116E 11C1; # (뿦; 뿦; 뿌á‡; 뿦; 뿌á‡; ) HANGUL SYLLABLE BBUP
+BFE7;BFE7;1108 116E 11C2;BFE7;1108 116E 11C2; # (뿧; 뿧; 뿧; 뿧; 뿧; ) HANGUL SYLLABLE BBUH
+BFE8;BFE8;1108 116F;BFE8;1108 116F; # (뿨; 뿨; 뿨; 뿨; 뿨; ) HANGUL SYLLABLE BBWEO
+BFE9;BFE9;1108 116F 11A8;BFE9;1108 116F 11A8; # (뿩; 뿩; 뿩; 뿩; 뿩; ) HANGUL SYLLABLE BBWEOG
+BFEA;BFEA;1108 116F 11A9;BFEA;1108 116F 11A9; # (뿪; 뿪; 뿪; 뿪; 뿪; ) HANGUL SYLLABLE BBWEOGG
+BFEB;BFEB;1108 116F 11AA;BFEB;1108 116F 11AA; # (뿫; 뿫; 뿫; 뿫; 뿫; ) HANGUL SYLLABLE BBWEOGS
+BFEC;BFEC;1108 116F 11AB;BFEC;1108 116F 11AB; # (뿬; 뿬; 뿬; 뿬; 뿬; ) HANGUL SYLLABLE BBWEON
+BFED;BFED;1108 116F 11AC;BFED;1108 116F 11AC; # (뿭; 뿭; 뿭; 뿭; 뿭; ) HANGUL SYLLABLE BBWEONJ
+BFEE;BFEE;1108 116F 11AD;BFEE;1108 116F 11AD; # (뿮; 뿮; 뿮; 뿮; 뿮; ) HANGUL SYLLABLE BBWEONH
+BFEF;BFEF;1108 116F 11AE;BFEF;1108 116F 11AE; # (뿯; 뿯; 뿯; 뿯; 뿯; ) HANGUL SYLLABLE BBWEOD
+BFF0;BFF0;1108 116F 11AF;BFF0;1108 116F 11AF; # (뿰; 뿰; 뿰; 뿰; 뿰; ) HANGUL SYLLABLE BBWEOL
+BFF1;BFF1;1108 116F 11B0;BFF1;1108 116F 11B0; # (뿱; 뿱; 뿱; 뿱; 뿱; ) HANGUL SYLLABLE BBWEOLG
+BFF2;BFF2;1108 116F 11B1;BFF2;1108 116F 11B1; # (뿲; 뿲; 뿲; 뿲; 뿲; ) HANGUL SYLLABLE BBWEOLM
+BFF3;BFF3;1108 116F 11B2;BFF3;1108 116F 11B2; # (뿳; 뿳; 뿳; 뿳; 뿳; ) HANGUL SYLLABLE BBWEOLB
+BFF4;BFF4;1108 116F 11B3;BFF4;1108 116F 11B3; # (뿴; 뿴; 뿴; 뿴; 뿴; ) HANGUL SYLLABLE BBWEOLS
+BFF5;BFF5;1108 116F 11B4;BFF5;1108 116F 11B4; # (뿵; 뿵; 뿵; 뿵; 뿵; ) HANGUL SYLLABLE BBWEOLT
+BFF6;BFF6;1108 116F 11B5;BFF6;1108 116F 11B5; # (뿶; 뿶; 뿶; 뿶; 뿶; ) HANGUL SYLLABLE BBWEOLP
+BFF7;BFF7;1108 116F 11B6;BFF7;1108 116F 11B6; # (뿷; 뿷; 뿷; 뿷; 뿷; ) HANGUL SYLLABLE BBWEOLH
+BFF8;BFF8;1108 116F 11B7;BFF8;1108 116F 11B7; # (뿸; 뿸; 뿸; 뿸; 뿸; ) HANGUL SYLLABLE BBWEOM
+BFF9;BFF9;1108 116F 11B8;BFF9;1108 116F 11B8; # (뿹; 뿹; 뿹; 뿹; 뿹; ) HANGUL SYLLABLE BBWEOB
+BFFA;BFFA;1108 116F 11B9;BFFA;1108 116F 11B9; # (뿺; 뿺; 뿺; 뿺; 뿺; ) HANGUL SYLLABLE BBWEOBS
+BFFB;BFFB;1108 116F 11BA;BFFB;1108 116F 11BA; # (뿻; 뿻; 뿻; 뿻; 뿻; ) HANGUL SYLLABLE BBWEOS
+BFFC;BFFC;1108 116F 11BB;BFFC;1108 116F 11BB; # (뿼; 뿼; 뿼; 뿼; 뿼; ) HANGUL SYLLABLE BBWEOSS
+BFFD;BFFD;1108 116F 11BC;BFFD;1108 116F 11BC; # (뿽; 뿽; 뿽; 뿽; 뿽; ) HANGUL SYLLABLE BBWEONG
+BFFE;BFFE;1108 116F 11BD;BFFE;1108 116F 11BD; # (뿾; 뿾; 뿾; 뿾; 뿾; ) HANGUL SYLLABLE BBWEOJ
+BFFF;BFFF;1108 116F 11BE;BFFF;1108 116F 11BE; # (뿿; 뿿; 뿿; 뿿; 뿿; ) HANGUL SYLLABLE BBWEOC
+C000;C000;1108 116F 11BF;C000;1108 116F 11BF; # (쀀; 쀀; 쀀; 쀀; 쀀; ) HANGUL SYLLABLE BBWEOK
+C001;C001;1108 116F 11C0;C001;1108 116F 11C0; # (ì€; ì€; 쀁; ì€; 쀁; ) HANGUL SYLLABLE BBWEOT
+C002;C002;1108 116F 11C1;C002;1108 116F 11C1; # (쀂; 쀂; 뿨á‡; 쀂; 뿨á‡; ) HANGUL SYLLABLE BBWEOP
+C003;C003;1108 116F 11C2;C003;1108 116F 11C2; # (쀃; 쀃; 쀃; 쀃; 쀃; ) HANGUL SYLLABLE BBWEOH
+C004;C004;1108 1170;C004;1108 1170; # (쀄; 쀄; 쀄; 쀄; 쀄; ) HANGUL SYLLABLE BBWE
+C005;C005;1108 1170 11A8;C005;1108 1170 11A8; # (쀅; 쀅; 쀅; 쀅; 쀅; ) HANGUL SYLLABLE BBWEG
+C006;C006;1108 1170 11A9;C006;1108 1170 11A9; # (쀆; 쀆; 쀆; 쀆; 쀆; ) HANGUL SYLLABLE BBWEGG
+C007;C007;1108 1170 11AA;C007;1108 1170 11AA; # (쀇; 쀇; 쀇; 쀇; 쀇; ) HANGUL SYLLABLE BBWEGS
+C008;C008;1108 1170 11AB;C008;1108 1170 11AB; # (쀈; 쀈; 쀈; 쀈; 쀈; ) HANGUL SYLLABLE BBWEN
+C009;C009;1108 1170 11AC;C009;1108 1170 11AC; # (쀉; 쀉; 쀉; 쀉; 쀉; ) HANGUL SYLLABLE BBWENJ
+C00A;C00A;1108 1170 11AD;C00A;1108 1170 11AD; # (쀊; 쀊; 쀊; 쀊; 쀊; ) HANGUL SYLLABLE BBWENH
+C00B;C00B;1108 1170 11AE;C00B;1108 1170 11AE; # (쀋; 쀋; 쀋; 쀋; 쀋; ) HANGUL SYLLABLE BBWED
+C00C;C00C;1108 1170 11AF;C00C;1108 1170 11AF; # (쀌; 쀌; 쀌; 쀌; 쀌; ) HANGUL SYLLABLE BBWEL
+C00D;C00D;1108 1170 11B0;C00D;1108 1170 11B0; # (ì€; ì€; 쀍; ì€; 쀍; ) HANGUL SYLLABLE BBWELG
+C00E;C00E;1108 1170 11B1;C00E;1108 1170 11B1; # (쀎; 쀎; 쀎; 쀎; 쀎; ) HANGUL SYLLABLE BBWELM
+C00F;C00F;1108 1170 11B2;C00F;1108 1170 11B2; # (ì€; ì€; 쀏; ì€; 쀏; ) HANGUL SYLLABLE BBWELB
+C010;C010;1108 1170 11B3;C010;1108 1170 11B3; # (ì€; ì€; 쀐; ì€; 쀐; ) HANGUL SYLLABLE BBWELS
+C011;C011;1108 1170 11B4;C011;1108 1170 11B4; # (쀑; 쀑; 쀑; 쀑; 쀑; ) HANGUL SYLLABLE BBWELT
+C012;C012;1108 1170 11B5;C012;1108 1170 11B5; # (쀒; 쀒; 쀒; 쀒; 쀒; ) HANGUL SYLLABLE BBWELP
+C013;C013;1108 1170 11B6;C013;1108 1170 11B6; # (쀓; 쀓; 쀓; 쀓; 쀓; ) HANGUL SYLLABLE BBWELH
+C014;C014;1108 1170 11B7;C014;1108 1170 11B7; # (쀔; 쀔; 쀔; 쀔; 쀔; ) HANGUL SYLLABLE BBWEM
+C015;C015;1108 1170 11B8;C015;1108 1170 11B8; # (쀕; 쀕; 쀕; 쀕; 쀕; ) HANGUL SYLLABLE BBWEB
+C016;C016;1108 1170 11B9;C016;1108 1170 11B9; # (쀖; 쀖; 쀖; 쀖; 쀖; ) HANGUL SYLLABLE BBWEBS
+C017;C017;1108 1170 11BA;C017;1108 1170 11BA; # (쀗; 쀗; 쀗; 쀗; 쀗; ) HANGUL SYLLABLE BBWES
+C018;C018;1108 1170 11BB;C018;1108 1170 11BB; # (쀘; 쀘; 쀘; 쀘; 쀘; ) HANGUL SYLLABLE BBWESS
+C019;C019;1108 1170 11BC;C019;1108 1170 11BC; # (쀙; 쀙; 쀙; 쀙; 쀙; ) HANGUL SYLLABLE BBWENG
+C01A;C01A;1108 1170 11BD;C01A;1108 1170 11BD; # (쀚; 쀚; 쀚; 쀚; 쀚; ) HANGUL SYLLABLE BBWEJ
+C01B;C01B;1108 1170 11BE;C01B;1108 1170 11BE; # (쀛; 쀛; 쀛; 쀛; 쀛; ) HANGUL SYLLABLE BBWEC
+C01C;C01C;1108 1170 11BF;C01C;1108 1170 11BF; # (쀜; 쀜; 쀜; 쀜; 쀜; ) HANGUL SYLLABLE BBWEK
+C01D;C01D;1108 1170 11C0;C01D;1108 1170 11C0; # (ì€; ì€; 쀝; ì€; 쀝; ) HANGUL SYLLABLE BBWET
+C01E;C01E;1108 1170 11C1;C01E;1108 1170 11C1; # (쀞; 쀞; 쀄á‡; 쀞; 쀄á‡; ) HANGUL SYLLABLE BBWEP
+C01F;C01F;1108 1170 11C2;C01F;1108 1170 11C2; # (쀟; 쀟; 쀟; 쀟; 쀟; ) HANGUL SYLLABLE BBWEH
+C020;C020;1108 1171;C020;1108 1171; # (쀠; 쀠; 쀠; 쀠; 쀠; ) HANGUL SYLLABLE BBWI
+C021;C021;1108 1171 11A8;C021;1108 1171 11A8; # (쀡; 쀡; 쀡; 쀡; 쀡; ) HANGUL SYLLABLE BBWIG
+C022;C022;1108 1171 11A9;C022;1108 1171 11A9; # (쀢; 쀢; 쀢; 쀢; 쀢; ) HANGUL SYLLABLE BBWIGG
+C023;C023;1108 1171 11AA;C023;1108 1171 11AA; # (쀣; 쀣; 쀣; 쀣; 쀣; ) HANGUL SYLLABLE BBWIGS
+C024;C024;1108 1171 11AB;C024;1108 1171 11AB; # (쀤; 쀤; 쀤; 쀤; 쀤; ) HANGUL SYLLABLE BBWIN
+C025;C025;1108 1171 11AC;C025;1108 1171 11AC; # (쀥; 쀥; 쀥; 쀥; 쀥; ) HANGUL SYLLABLE BBWINJ
+C026;C026;1108 1171 11AD;C026;1108 1171 11AD; # (쀦; 쀦; 쀦; 쀦; 쀦; ) HANGUL SYLLABLE BBWINH
+C027;C027;1108 1171 11AE;C027;1108 1171 11AE; # (쀧; 쀧; 쀧; 쀧; 쀧; ) HANGUL SYLLABLE BBWID
+C028;C028;1108 1171 11AF;C028;1108 1171 11AF; # (쀨; 쀨; 쀨; 쀨; 쀨; ) HANGUL SYLLABLE BBWIL
+C029;C029;1108 1171 11B0;C029;1108 1171 11B0; # (쀩; 쀩; 쀩; 쀩; 쀩; ) HANGUL SYLLABLE BBWILG
+C02A;C02A;1108 1171 11B1;C02A;1108 1171 11B1; # (쀪; 쀪; 쀪; 쀪; 쀪; ) HANGUL SYLLABLE BBWILM
+C02B;C02B;1108 1171 11B2;C02B;1108 1171 11B2; # (쀫; 쀫; 쀫; 쀫; 쀫; ) HANGUL SYLLABLE BBWILB
+C02C;C02C;1108 1171 11B3;C02C;1108 1171 11B3; # (쀬; 쀬; 쀬; 쀬; 쀬; ) HANGUL SYLLABLE BBWILS
+C02D;C02D;1108 1171 11B4;C02D;1108 1171 11B4; # (쀭; 쀭; 쀭; 쀭; 쀭; ) HANGUL SYLLABLE BBWILT
+C02E;C02E;1108 1171 11B5;C02E;1108 1171 11B5; # (쀮; 쀮; 쀮; 쀮; 쀮; ) HANGUL SYLLABLE BBWILP
+C02F;C02F;1108 1171 11B6;C02F;1108 1171 11B6; # (쀯; 쀯; 쀯; 쀯; 쀯; ) HANGUL SYLLABLE BBWILH
+C030;C030;1108 1171 11B7;C030;1108 1171 11B7; # (쀰; 쀰; 쀰; 쀰; 쀰; ) HANGUL SYLLABLE BBWIM
+C031;C031;1108 1171 11B8;C031;1108 1171 11B8; # (쀱; 쀱; 쀱; 쀱; 쀱; ) HANGUL SYLLABLE BBWIB
+C032;C032;1108 1171 11B9;C032;1108 1171 11B9; # (쀲; 쀲; 쀲; 쀲; 쀲; ) HANGUL SYLLABLE BBWIBS
+C033;C033;1108 1171 11BA;C033;1108 1171 11BA; # (쀳; 쀳; 쀳; 쀳; 쀳; ) HANGUL SYLLABLE BBWIS
+C034;C034;1108 1171 11BB;C034;1108 1171 11BB; # (쀴; 쀴; 쀴; 쀴; 쀴; ) HANGUL SYLLABLE BBWISS
+C035;C035;1108 1171 11BC;C035;1108 1171 11BC; # (쀵; 쀵; 쀵; 쀵; 쀵; ) HANGUL SYLLABLE BBWING
+C036;C036;1108 1171 11BD;C036;1108 1171 11BD; # (쀶; 쀶; 쀶; 쀶; 쀶; ) HANGUL SYLLABLE BBWIJ
+C037;C037;1108 1171 11BE;C037;1108 1171 11BE; # (쀷; 쀷; 쀷; 쀷; 쀷; ) HANGUL SYLLABLE BBWIC
+C038;C038;1108 1171 11BF;C038;1108 1171 11BF; # (쀸; 쀸; 쀸; 쀸; 쀸; ) HANGUL SYLLABLE BBWIK
+C039;C039;1108 1171 11C0;C039;1108 1171 11C0; # (쀹; 쀹; 쀹; 쀹; 쀹; ) HANGUL SYLLABLE BBWIT
+C03A;C03A;1108 1171 11C1;C03A;1108 1171 11C1; # (쀺; 쀺; 쀠á‡; 쀺; 쀠á‡; ) HANGUL SYLLABLE BBWIP
+C03B;C03B;1108 1171 11C2;C03B;1108 1171 11C2; # (쀻; 쀻; 쀻; 쀻; 쀻; ) HANGUL SYLLABLE BBWIH
+C03C;C03C;1108 1172;C03C;1108 1172; # (쀼; 쀼; 쀼; 쀼; 쀼; ) HANGUL SYLLABLE BBYU
+C03D;C03D;1108 1172 11A8;C03D;1108 1172 11A8; # (쀽; 쀽; 쀽; 쀽; 쀽; ) HANGUL SYLLABLE BBYUG
+C03E;C03E;1108 1172 11A9;C03E;1108 1172 11A9; # (쀾; 쀾; 쀾; 쀾; 쀾; ) HANGUL SYLLABLE BBYUGG
+C03F;C03F;1108 1172 11AA;C03F;1108 1172 11AA; # (쀿; 쀿; 쀿; 쀿; 쀿; ) HANGUL SYLLABLE BBYUGS
+C040;C040;1108 1172 11AB;C040;1108 1172 11AB; # (ì€; ì€; 쁀; ì€; 쁀; ) HANGUL SYLLABLE BBYUN
+C041;C041;1108 1172 11AC;C041;1108 1172 11AC; # (ì; ì; 쁁; ì; 쁁; ) HANGUL SYLLABLE BBYUNJ
+C042;C042;1108 1172 11AD;C042;1108 1172 11AD; # (ì‚; ì‚; 쁂; ì‚; 쁂; ) HANGUL SYLLABLE BBYUNH
+C043;C043;1108 1172 11AE;C043;1108 1172 11AE; # (ìƒ; ìƒ; 쁃; ìƒ; 쁃; ) HANGUL SYLLABLE BBYUD
+C044;C044;1108 1172 11AF;C044;1108 1172 11AF; # (ì„; ì„; 쁄; ì„; 쁄; ) HANGUL SYLLABLE BBYUL
+C045;C045;1108 1172 11B0;C045;1108 1172 11B0; # (ì…; ì…; 쁅; ì…; 쁅; ) HANGUL SYLLABLE BBYULG
+C046;C046;1108 1172 11B1;C046;1108 1172 11B1; # (ì†; ì†; 쁆; ì†; 쁆; ) HANGUL SYLLABLE BBYULM
+C047;C047;1108 1172 11B2;C047;1108 1172 11B2; # (ì‡; ì‡; 쁇; ì‡; 쁇; ) HANGUL SYLLABLE BBYULB
+C048;C048;1108 1172 11B3;C048;1108 1172 11B3; # (ìˆ; ìˆ; 쁈; ìˆ; 쁈; ) HANGUL SYLLABLE BBYULS
+C049;C049;1108 1172 11B4;C049;1108 1172 11B4; # (ì‰; ì‰; 쁉; ì‰; 쁉; ) HANGUL SYLLABLE BBYULT
+C04A;C04A;1108 1172 11B5;C04A;1108 1172 11B5; # (ìŠ; ìŠ; 쁊; ìŠ; 쁊; ) HANGUL SYLLABLE BBYULP
+C04B;C04B;1108 1172 11B6;C04B;1108 1172 11B6; # (ì‹; ì‹; 쁋; ì‹; 쁋; ) HANGUL SYLLABLE BBYULH
+C04C;C04C;1108 1172 11B7;C04C;1108 1172 11B7; # (ìŒ; ìŒ; 쁌; ìŒ; 쁌; ) HANGUL SYLLABLE BBYUM
+C04D;C04D;1108 1172 11B8;C04D;1108 1172 11B8; # (ì; ì; 쁍; ì; 쁍; ) HANGUL SYLLABLE BBYUB
+C04E;C04E;1108 1172 11B9;C04E;1108 1172 11B9; # (ìŽ; ìŽ; 쁎; ìŽ; 쁎; ) HANGUL SYLLABLE BBYUBS
+C04F;C04F;1108 1172 11BA;C04F;1108 1172 11BA; # (ì; ì; 쁏; ì; 쁏; ) HANGUL SYLLABLE BBYUS
+C050;C050;1108 1172 11BB;C050;1108 1172 11BB; # (ì; ì; 쁐; ì; 쁐; ) HANGUL SYLLABLE BBYUSS
+C051;C051;1108 1172 11BC;C051;1108 1172 11BC; # (ì‘; ì‘; 쁑; ì‘; 쁑; ) HANGUL SYLLABLE BBYUNG
+C052;C052;1108 1172 11BD;C052;1108 1172 11BD; # (ì’; ì’; 쁒; ì’; 쁒; ) HANGUL SYLLABLE BBYUJ
+C053;C053;1108 1172 11BE;C053;1108 1172 11BE; # (ì“; ì“; 쁓; ì“; 쁓; ) HANGUL SYLLABLE BBYUC
+C054;C054;1108 1172 11BF;C054;1108 1172 11BF; # (ì”; ì”; 쁔; ì”; 쁔; ) HANGUL SYLLABLE BBYUK
+C055;C055;1108 1172 11C0;C055;1108 1172 11C0; # (ì•; ì•; 쁕; ì•; 쁕; ) HANGUL SYLLABLE BBYUT
+C056;C056;1108 1172 11C1;C056;1108 1172 11C1; # (ì–; ì–; 쀼á‡; ì–; 쀼á‡; ) HANGUL SYLLABLE BBYUP
+C057;C057;1108 1172 11C2;C057;1108 1172 11C2; # (ì—; ì—; 쁗; ì—; 쁗; ) HANGUL SYLLABLE BBYUH
+C058;C058;1108 1173;C058;1108 1173; # (ì˜; ì˜; 쁘; ì˜; 쁘; ) HANGUL SYLLABLE BBEU
+C059;C059;1108 1173 11A8;C059;1108 1173 11A8; # (ì™; ì™; 쁙; ì™; 쁙; ) HANGUL SYLLABLE BBEUG
+C05A;C05A;1108 1173 11A9;C05A;1108 1173 11A9; # (ìš; ìš; 쁚; ìš; 쁚; ) HANGUL SYLLABLE BBEUGG
+C05B;C05B;1108 1173 11AA;C05B;1108 1173 11AA; # (ì›; ì›; 쁛; ì›; 쁛; ) HANGUL SYLLABLE BBEUGS
+C05C;C05C;1108 1173 11AB;C05C;1108 1173 11AB; # (ìœ; ìœ; 쁜; ìœ; 쁜; ) HANGUL SYLLABLE BBEUN
+C05D;C05D;1108 1173 11AC;C05D;1108 1173 11AC; # (ì; ì; 쁝; ì; 쁝; ) HANGUL SYLLABLE BBEUNJ
+C05E;C05E;1108 1173 11AD;C05E;1108 1173 11AD; # (ìž; ìž; 쁞; ìž; 쁞; ) HANGUL SYLLABLE BBEUNH
+C05F;C05F;1108 1173 11AE;C05F;1108 1173 11AE; # (ìŸ; ìŸ; 쁟; ìŸ; 쁟; ) HANGUL SYLLABLE BBEUD
+C060;C060;1108 1173 11AF;C060;1108 1173 11AF; # (ì ; ì ; 쁠; ì ; 쁠; ) HANGUL SYLLABLE BBEUL
+C061;C061;1108 1173 11B0;C061;1108 1173 11B0; # (ì¡; ì¡; 쁡; ì¡; 쁡; ) HANGUL SYLLABLE BBEULG
+C062;C062;1108 1173 11B1;C062;1108 1173 11B1; # (ì¢; ì¢; 쁢; ì¢; 쁢; ) HANGUL SYLLABLE BBEULM
+C063;C063;1108 1173 11B2;C063;1108 1173 11B2; # (ì£; ì£; 쁣; ì£; 쁣; ) HANGUL SYLLABLE BBEULB
+C064;C064;1108 1173 11B3;C064;1108 1173 11B3; # (ì¤; ì¤; 쁤; ì¤; 쁤; ) HANGUL SYLLABLE BBEULS
+C065;C065;1108 1173 11B4;C065;1108 1173 11B4; # (ì¥; ì¥; 쁥; ì¥; 쁥; ) HANGUL SYLLABLE BBEULT
+C066;C066;1108 1173 11B5;C066;1108 1173 11B5; # (ì¦; ì¦; 쁦; ì¦; 쁦; ) HANGUL SYLLABLE BBEULP
+C067;C067;1108 1173 11B6;C067;1108 1173 11B6; # (ì§; ì§; 쁧; ì§; 쁧; ) HANGUL SYLLABLE BBEULH
+C068;C068;1108 1173 11B7;C068;1108 1173 11B7; # (ì¨; ì¨; 쁨; ì¨; 쁨; ) HANGUL SYLLABLE BBEUM
+C069;C069;1108 1173 11B8;C069;1108 1173 11B8; # (ì©; ì©; 쁩; ì©; 쁩; ) HANGUL SYLLABLE BBEUB
+C06A;C06A;1108 1173 11B9;C06A;1108 1173 11B9; # (ìª; ìª; 쁪; ìª; 쁪; ) HANGUL SYLLABLE BBEUBS
+C06B;C06B;1108 1173 11BA;C06B;1108 1173 11BA; # (ì«; ì«; 쁫; ì«; 쁫; ) HANGUL SYLLABLE BBEUS
+C06C;C06C;1108 1173 11BB;C06C;1108 1173 11BB; # (ì¬; ì¬; 쁬; ì¬; 쁬; ) HANGUL SYLLABLE BBEUSS
+C06D;C06D;1108 1173 11BC;C06D;1108 1173 11BC; # (ì­; ì­; 쁭; ì­; 쁭; ) HANGUL SYLLABLE BBEUNG
+C06E;C06E;1108 1173 11BD;C06E;1108 1173 11BD; # (ì®; ì®; 쁮; ì®; 쁮; ) HANGUL SYLLABLE BBEUJ
+C06F;C06F;1108 1173 11BE;C06F;1108 1173 11BE; # (ì¯; ì¯; 쁯; ì¯; 쁯; ) HANGUL SYLLABLE BBEUC
+C070;C070;1108 1173 11BF;C070;1108 1173 11BF; # (ì°; ì°; 쁰; ì°; 쁰; ) HANGUL SYLLABLE BBEUK
+C071;C071;1108 1173 11C0;C071;1108 1173 11C0; # (ì±; ì±; 쁱; ì±; 쁱; ) HANGUL SYLLABLE BBEUT
+C072;C072;1108 1173 11C1;C072;1108 1173 11C1; # (ì²; ì²; 쁘á‡; ì²; 쁘á‡; ) HANGUL SYLLABLE BBEUP
+C073;C073;1108 1173 11C2;C073;1108 1173 11C2; # (ì³; ì³; 쁳; ì³; 쁳; ) HANGUL SYLLABLE BBEUH
+C074;C074;1108 1174;C074;1108 1174; # (ì´; ì´; 쁴; ì´; 쁴; ) HANGUL SYLLABLE BBYI
+C075;C075;1108 1174 11A8;C075;1108 1174 11A8; # (ìµ; ìµ; 쁵; ìµ; 쁵; ) HANGUL SYLLABLE BBYIG
+C076;C076;1108 1174 11A9;C076;1108 1174 11A9; # (ì¶; ì¶; 쁶; ì¶; 쁶; ) HANGUL SYLLABLE BBYIGG
+C077;C077;1108 1174 11AA;C077;1108 1174 11AA; # (ì·; ì·; 쁷; ì·; 쁷; ) HANGUL SYLLABLE BBYIGS
+C078;C078;1108 1174 11AB;C078;1108 1174 11AB; # (ì¸; ì¸; 쁸; ì¸; 쁸; ) HANGUL SYLLABLE BBYIN
+C079;C079;1108 1174 11AC;C079;1108 1174 11AC; # (ì¹; ì¹; 쁹; ì¹; 쁹; ) HANGUL SYLLABLE BBYINJ
+C07A;C07A;1108 1174 11AD;C07A;1108 1174 11AD; # (ìº; ìº; 쁺; ìº; 쁺; ) HANGUL SYLLABLE BBYINH
+C07B;C07B;1108 1174 11AE;C07B;1108 1174 11AE; # (ì»; ì»; 쁻; ì»; 쁻; ) HANGUL SYLLABLE BBYID
+C07C;C07C;1108 1174 11AF;C07C;1108 1174 11AF; # (ì¼; ì¼; 쁼; ì¼; 쁼; ) HANGUL SYLLABLE BBYIL
+C07D;C07D;1108 1174 11B0;C07D;1108 1174 11B0; # (ì½; ì½; 쁽; ì½; 쁽; ) HANGUL SYLLABLE BBYILG
+C07E;C07E;1108 1174 11B1;C07E;1108 1174 11B1; # (ì¾; ì¾; 쁾; ì¾; 쁾; ) HANGUL SYLLABLE BBYILM
+C07F;C07F;1108 1174 11B2;C07F;1108 1174 11B2; # (ì¿; ì¿; 쁿; ì¿; 쁿; ) HANGUL SYLLABLE BBYILB
+C080;C080;1108 1174 11B3;C080;1108 1174 11B3; # (삀; 삀; 삀; 삀; 삀; ) HANGUL SYLLABLE BBYILS
+C081;C081;1108 1174 11B4;C081;1108 1174 11B4; # (ì‚; ì‚; 삁; ì‚; 삁; ) HANGUL SYLLABLE BBYILT
+C082;C082;1108 1174 11B5;C082;1108 1174 11B5; # (삂; 삂; 삂; 삂; 삂; ) HANGUL SYLLABLE BBYILP
+C083;C083;1108 1174 11B6;C083;1108 1174 11B6; # (삃; 삃; 삃; 삃; 삃; ) HANGUL SYLLABLE BBYILH
+C084;C084;1108 1174 11B7;C084;1108 1174 11B7; # (삄; 삄; 삄; 삄; 삄; ) HANGUL SYLLABLE BBYIM
+C085;C085;1108 1174 11B8;C085;1108 1174 11B8; # (삅; 삅; 삅; 삅; 삅; ) HANGUL SYLLABLE BBYIB
+C086;C086;1108 1174 11B9;C086;1108 1174 11B9; # (삆; 삆; 삆; 삆; 삆; ) HANGUL SYLLABLE BBYIBS
+C087;C087;1108 1174 11BA;C087;1108 1174 11BA; # (삇; 삇; 삇; 삇; 삇; ) HANGUL SYLLABLE BBYIS
+C088;C088;1108 1174 11BB;C088;1108 1174 11BB; # (삈; 삈; 삈; 삈; 삈; ) HANGUL SYLLABLE BBYISS
+C089;C089;1108 1174 11BC;C089;1108 1174 11BC; # (삉; 삉; 삉; 삉; 삉; ) HANGUL SYLLABLE BBYING
+C08A;C08A;1108 1174 11BD;C08A;1108 1174 11BD; # (삊; 삊; 삊; 삊; 삊; ) HANGUL SYLLABLE BBYIJ
+C08B;C08B;1108 1174 11BE;C08B;1108 1174 11BE; # (삋; 삋; 삋; 삋; 삋; ) HANGUL SYLLABLE BBYIC
+C08C;C08C;1108 1174 11BF;C08C;1108 1174 11BF; # (삌; 삌; 삌; 삌; 삌; ) HANGUL SYLLABLE BBYIK
+C08D;C08D;1108 1174 11C0;C08D;1108 1174 11C0; # (ì‚; ì‚; 삍; ì‚; 삍; ) HANGUL SYLLABLE BBYIT
+C08E;C08E;1108 1174 11C1;C08E;1108 1174 11C1; # (ì‚Ž; ì‚Ž; 쁴á‡; ì‚Ž; 쁴á‡; ) HANGUL SYLLABLE BBYIP
+C08F;C08F;1108 1174 11C2;C08F;1108 1174 11C2; # (ì‚; ì‚; 삏; ì‚; 삏; ) HANGUL SYLLABLE BBYIH
+C090;C090;1108 1175;C090;1108 1175; # (ì‚; ì‚; 삐; ì‚; 삐; ) HANGUL SYLLABLE BBI
+C091;C091;1108 1175 11A8;C091;1108 1175 11A8; # (삑; 삑; 삑; 삑; 삑; ) HANGUL SYLLABLE BBIG
+C092;C092;1108 1175 11A9;C092;1108 1175 11A9; # (삒; 삒; 삒; 삒; 삒; ) HANGUL SYLLABLE BBIGG
+C093;C093;1108 1175 11AA;C093;1108 1175 11AA; # (삓; 삓; 삓; 삓; 삓; ) HANGUL SYLLABLE BBIGS
+C094;C094;1108 1175 11AB;C094;1108 1175 11AB; # (삔; 삔; 삔; 삔; 삔; ) HANGUL SYLLABLE BBIN
+C095;C095;1108 1175 11AC;C095;1108 1175 11AC; # (삕; 삕; 삕; 삕; 삕; ) HANGUL SYLLABLE BBINJ
+C096;C096;1108 1175 11AD;C096;1108 1175 11AD; # (삖; 삖; 삖; 삖; 삖; ) HANGUL SYLLABLE BBINH
+C097;C097;1108 1175 11AE;C097;1108 1175 11AE; # (삗; 삗; 삗; 삗; 삗; ) HANGUL SYLLABLE BBID
+C098;C098;1108 1175 11AF;C098;1108 1175 11AF; # (삘; 삘; 삘; 삘; 삘; ) HANGUL SYLLABLE BBIL
+C099;C099;1108 1175 11B0;C099;1108 1175 11B0; # (삙; 삙; 삙; 삙; 삙; ) HANGUL SYLLABLE BBILG
+C09A;C09A;1108 1175 11B1;C09A;1108 1175 11B1; # (삚; 삚; 삚; 삚; 삚; ) HANGUL SYLLABLE BBILM
+C09B;C09B;1108 1175 11B2;C09B;1108 1175 11B2; # (삛; 삛; 삛; 삛; 삛; ) HANGUL SYLLABLE BBILB
+C09C;C09C;1108 1175 11B3;C09C;1108 1175 11B3; # (삜; 삜; 삜; 삜; 삜; ) HANGUL SYLLABLE BBILS
+C09D;C09D;1108 1175 11B4;C09D;1108 1175 11B4; # (ì‚; ì‚; 삝; ì‚; 삝; ) HANGUL SYLLABLE BBILT
+C09E;C09E;1108 1175 11B5;C09E;1108 1175 11B5; # (삞; 삞; 삞; 삞; 삞; ) HANGUL SYLLABLE BBILP
+C09F;C09F;1108 1175 11B6;C09F;1108 1175 11B6; # (삟; 삟; 삟; 삟; 삟; ) HANGUL SYLLABLE BBILH
+C0A0;C0A0;1108 1175 11B7;C0A0;1108 1175 11B7; # (삠; 삠; 삠; 삠; 삠; ) HANGUL SYLLABLE BBIM
+C0A1;C0A1;1108 1175 11B8;C0A1;1108 1175 11B8; # (삡; 삡; 삡; 삡; 삡; ) HANGUL SYLLABLE BBIB
+C0A2;C0A2;1108 1175 11B9;C0A2;1108 1175 11B9; # (삢; 삢; 삢; 삢; 삢; ) HANGUL SYLLABLE BBIBS
+C0A3;C0A3;1108 1175 11BA;C0A3;1108 1175 11BA; # (삣; 삣; 삣; 삣; 삣; ) HANGUL SYLLABLE BBIS
+C0A4;C0A4;1108 1175 11BB;C0A4;1108 1175 11BB; # (삤; 삤; 삤; 삤; 삤; ) HANGUL SYLLABLE BBISS
+C0A5;C0A5;1108 1175 11BC;C0A5;1108 1175 11BC; # (삥; 삥; 삥; 삥; 삥; ) HANGUL SYLLABLE BBING
+C0A6;C0A6;1108 1175 11BD;C0A6;1108 1175 11BD; # (삦; 삦; 삦; 삦; 삦; ) HANGUL SYLLABLE BBIJ
+C0A7;C0A7;1108 1175 11BE;C0A7;1108 1175 11BE; # (삧; 삧; 삧; 삧; 삧; ) HANGUL SYLLABLE BBIC
+C0A8;C0A8;1108 1175 11BF;C0A8;1108 1175 11BF; # (삨; 삨; 삨; 삨; 삨; ) HANGUL SYLLABLE BBIK
+C0A9;C0A9;1108 1175 11C0;C0A9;1108 1175 11C0; # (삩; 삩; 삩; 삩; 삩; ) HANGUL SYLLABLE BBIT
+C0AA;C0AA;1108 1175 11C1;C0AA;1108 1175 11C1; # (삪; 삪; 삐á‡; 삪; 삐á‡; ) HANGUL SYLLABLE BBIP
+C0AB;C0AB;1108 1175 11C2;C0AB;1108 1175 11C2; # (삫; 삫; 삫; 삫; 삫; ) HANGUL SYLLABLE BBIH
+C0AC;C0AC;1109 1161;C0AC;1109 1161; # (사; 사; 사; 사; 사; ) HANGUL SYLLABLE SA
+C0AD;C0AD;1109 1161 11A8;C0AD;1109 1161 11A8; # (삭; 삭; 삭; 삭; 삭; ) HANGUL SYLLABLE SAG
+C0AE;C0AE;1109 1161 11A9;C0AE;1109 1161 11A9; # (삮; 삮; 삮; 삮; 삮; ) HANGUL SYLLABLE SAGG
+C0AF;C0AF;1109 1161 11AA;C0AF;1109 1161 11AA; # (삯; 삯; 삯; 삯; 삯; ) HANGUL SYLLABLE SAGS
+C0B0;C0B0;1109 1161 11AB;C0B0;1109 1161 11AB; # (산; 산; 산; 산; 산; ) HANGUL SYLLABLE SAN
+C0B1;C0B1;1109 1161 11AC;C0B1;1109 1161 11AC; # (삱; 삱; 삱; 삱; 삱; ) HANGUL SYLLABLE SANJ
+C0B2;C0B2;1109 1161 11AD;C0B2;1109 1161 11AD; # (삲; 삲; 삲; 삲; 삲; ) HANGUL SYLLABLE SANH
+C0B3;C0B3;1109 1161 11AE;C0B3;1109 1161 11AE; # (삳; 삳; 삳; 삳; 삳; ) HANGUL SYLLABLE SAD
+C0B4;C0B4;1109 1161 11AF;C0B4;1109 1161 11AF; # (살; 살; 살; 살; 살; ) HANGUL SYLLABLE SAL
+C0B5;C0B5;1109 1161 11B0;C0B5;1109 1161 11B0; # (삵; 삵; 삵; 삵; 삵; ) HANGUL SYLLABLE SALG
+C0B6;C0B6;1109 1161 11B1;C0B6;1109 1161 11B1; # (삶; 삶; 삶; 삶; 삶; ) HANGUL SYLLABLE SALM
+C0B7;C0B7;1109 1161 11B2;C0B7;1109 1161 11B2; # (삷; 삷; 삷; 삷; 삷; ) HANGUL SYLLABLE SALB
+C0B8;C0B8;1109 1161 11B3;C0B8;1109 1161 11B3; # (삸; 삸; 삸; 삸; 삸; ) HANGUL SYLLABLE SALS
+C0B9;C0B9;1109 1161 11B4;C0B9;1109 1161 11B4; # (삹; 삹; 삹; 삹; 삹; ) HANGUL SYLLABLE SALT
+C0BA;C0BA;1109 1161 11B5;C0BA;1109 1161 11B5; # (삺; 삺; 삺; 삺; 삺; ) HANGUL SYLLABLE SALP
+C0BB;C0BB;1109 1161 11B6;C0BB;1109 1161 11B6; # (삻; 삻; 삻; 삻; 삻; ) HANGUL SYLLABLE SALH
+C0BC;C0BC;1109 1161 11B7;C0BC;1109 1161 11B7; # (삼; 삼; 삼; 삼; 삼; ) HANGUL SYLLABLE SAM
+C0BD;C0BD;1109 1161 11B8;C0BD;1109 1161 11B8; # (삽; 삽; 삽; 삽; 삽; ) HANGUL SYLLABLE SAB
+C0BE;C0BE;1109 1161 11B9;C0BE;1109 1161 11B9; # (삾; 삾; 삾; 삾; 삾; ) HANGUL SYLLABLE SABS
+C0BF;C0BF;1109 1161 11BA;C0BF;1109 1161 11BA; # (삿; 삿; 삿; 삿; 삿; ) HANGUL SYLLABLE SAS
+C0C0;C0C0;1109 1161 11BB;C0C0;1109 1161 11BB; # (샀; 샀; 샀; 샀; 샀; ) HANGUL SYLLABLE SASS
+C0C1;C0C1;1109 1161 11BC;C0C1;1109 1161 11BC; # (ìƒ; ìƒ; 상; ìƒ; 상; ) HANGUL SYLLABLE SANG
+C0C2;C0C2;1109 1161 11BD;C0C2;1109 1161 11BD; # (샂; 샂; 샂; 샂; 샂; ) HANGUL SYLLABLE SAJ
+C0C3;C0C3;1109 1161 11BE;C0C3;1109 1161 11BE; # (샃; 샃; 샃; 샃; 샃; ) HANGUL SYLLABLE SAC
+C0C4;C0C4;1109 1161 11BF;C0C4;1109 1161 11BF; # (샄; 샄; 샄; 샄; 샄; ) HANGUL SYLLABLE SAK
+C0C5;C0C5;1109 1161 11C0;C0C5;1109 1161 11C0; # (샅; 샅; 샅; 샅; 샅; ) HANGUL SYLLABLE SAT
+C0C6;C0C6;1109 1161 11C1;C0C6;1109 1161 11C1; # (샆; 샆; 사á‡; 샆; 사á‡; ) HANGUL SYLLABLE SAP
+C0C7;C0C7;1109 1161 11C2;C0C7;1109 1161 11C2; # (샇; 샇; 샇; 샇; 샇; ) HANGUL SYLLABLE SAH
+C0C8;C0C8;1109 1162;C0C8;1109 1162; # (새; 새; 새; 새; 새; ) HANGUL SYLLABLE SAE
+C0C9;C0C9;1109 1162 11A8;C0C9;1109 1162 11A8; # (색; 색; 색; 색; 색; ) HANGUL SYLLABLE SAEG
+C0CA;C0CA;1109 1162 11A9;C0CA;1109 1162 11A9; # (샊; 샊; 샊; 샊; 샊; ) HANGUL SYLLABLE SAEGG
+C0CB;C0CB;1109 1162 11AA;C0CB;1109 1162 11AA; # (샋; 샋; 샋; 샋; 샋; ) HANGUL SYLLABLE SAEGS
+C0CC;C0CC;1109 1162 11AB;C0CC;1109 1162 11AB; # (샌; 샌; 샌; 샌; 샌; ) HANGUL SYLLABLE SAEN
+C0CD;C0CD;1109 1162 11AC;C0CD;1109 1162 11AC; # (ìƒ; ìƒ; 샍; ìƒ; 샍; ) HANGUL SYLLABLE SAENJ
+C0CE;C0CE;1109 1162 11AD;C0CE;1109 1162 11AD; # (샎; 샎; 샎; 샎; 샎; ) HANGUL SYLLABLE SAENH
+C0CF;C0CF;1109 1162 11AE;C0CF;1109 1162 11AE; # (ìƒ; ìƒ; 샏; ìƒ; 샏; ) HANGUL SYLLABLE SAED
+C0D0;C0D0;1109 1162 11AF;C0D0;1109 1162 11AF; # (ìƒ; ìƒ; 샐; ìƒ; 샐; ) HANGUL SYLLABLE SAEL
+C0D1;C0D1;1109 1162 11B0;C0D1;1109 1162 11B0; # (샑; 샑; 샑; 샑; 샑; ) HANGUL SYLLABLE SAELG
+C0D2;C0D2;1109 1162 11B1;C0D2;1109 1162 11B1; # (샒; 샒; 샒; 샒; 샒; ) HANGUL SYLLABLE SAELM
+C0D3;C0D3;1109 1162 11B2;C0D3;1109 1162 11B2; # (샓; 샓; 샓; 샓; 샓; ) HANGUL SYLLABLE SAELB
+C0D4;C0D4;1109 1162 11B3;C0D4;1109 1162 11B3; # (샔; 샔; 샔; 샔; 샔; ) HANGUL SYLLABLE SAELS
+C0D5;C0D5;1109 1162 11B4;C0D5;1109 1162 11B4; # (샕; 샕; 샕; 샕; 샕; ) HANGUL SYLLABLE SAELT
+C0D6;C0D6;1109 1162 11B5;C0D6;1109 1162 11B5; # (샖; 샖; 샖; 샖; 샖; ) HANGUL SYLLABLE SAELP
+C0D7;C0D7;1109 1162 11B6;C0D7;1109 1162 11B6; # (샗; 샗; 샗; 샗; 샗; ) HANGUL SYLLABLE SAELH
+C0D8;C0D8;1109 1162 11B7;C0D8;1109 1162 11B7; # (샘; 샘; 샘; 샘; 샘; ) HANGUL SYLLABLE SAEM
+C0D9;C0D9;1109 1162 11B8;C0D9;1109 1162 11B8; # (샙; 샙; 샙; 샙; 샙; ) HANGUL SYLLABLE SAEB
+C0DA;C0DA;1109 1162 11B9;C0DA;1109 1162 11B9; # (샚; 샚; 샚; 샚; 샚; ) HANGUL SYLLABLE SAEBS
+C0DB;C0DB;1109 1162 11BA;C0DB;1109 1162 11BA; # (샛; 샛; 샛; 샛; 샛; ) HANGUL SYLLABLE SAES
+C0DC;C0DC;1109 1162 11BB;C0DC;1109 1162 11BB; # (샜; 샜; 샜; 샜; 샜; ) HANGUL SYLLABLE SAESS
+C0DD;C0DD;1109 1162 11BC;C0DD;1109 1162 11BC; # (ìƒ; ìƒ; 생; ìƒ; 생; ) HANGUL SYLLABLE SAENG
+C0DE;C0DE;1109 1162 11BD;C0DE;1109 1162 11BD; # (샞; 샞; 샞; 샞; 샞; ) HANGUL SYLLABLE SAEJ
+C0DF;C0DF;1109 1162 11BE;C0DF;1109 1162 11BE; # (샟; 샟; 샟; 샟; 샟; ) HANGUL SYLLABLE SAEC
+C0E0;C0E0;1109 1162 11BF;C0E0;1109 1162 11BF; # (샠; 샠; 샠; 샠; 샠; ) HANGUL SYLLABLE SAEK
+C0E1;C0E1;1109 1162 11C0;C0E1;1109 1162 11C0; # (샡; 샡; 샡; 샡; 샡; ) HANGUL SYLLABLE SAET
+C0E2;C0E2;1109 1162 11C1;C0E2;1109 1162 11C1; # (샢; 샢; 새á‡; 샢; 새á‡; ) HANGUL SYLLABLE SAEP
+C0E3;C0E3;1109 1162 11C2;C0E3;1109 1162 11C2; # (샣; 샣; 샣; 샣; 샣; ) HANGUL SYLLABLE SAEH
+C0E4;C0E4;1109 1163;C0E4;1109 1163; # (샤; 샤; 샤; 샤; 샤; ) HANGUL SYLLABLE SYA
+C0E5;C0E5;1109 1163 11A8;C0E5;1109 1163 11A8; # (샥; 샥; 샥; 샥; 샥; ) HANGUL SYLLABLE SYAG
+C0E6;C0E6;1109 1163 11A9;C0E6;1109 1163 11A9; # (샦; 샦; 샦; 샦; 샦; ) HANGUL SYLLABLE SYAGG
+C0E7;C0E7;1109 1163 11AA;C0E7;1109 1163 11AA; # (샧; 샧; 샧; 샧; 샧; ) HANGUL SYLLABLE SYAGS
+C0E8;C0E8;1109 1163 11AB;C0E8;1109 1163 11AB; # (샨; 샨; 샨; 샨; 샨; ) HANGUL SYLLABLE SYAN
+C0E9;C0E9;1109 1163 11AC;C0E9;1109 1163 11AC; # (샩; 샩; 샩; 샩; 샩; ) HANGUL SYLLABLE SYANJ
+C0EA;C0EA;1109 1163 11AD;C0EA;1109 1163 11AD; # (샪; 샪; 샪; 샪; 샪; ) HANGUL SYLLABLE SYANH
+C0EB;C0EB;1109 1163 11AE;C0EB;1109 1163 11AE; # (샫; 샫; 샫; 샫; 샫; ) HANGUL SYLLABLE SYAD
+C0EC;C0EC;1109 1163 11AF;C0EC;1109 1163 11AF; # (샬; 샬; 샬; 샬; 샬; ) HANGUL SYLLABLE SYAL
+C0ED;C0ED;1109 1163 11B0;C0ED;1109 1163 11B0; # (샭; 샭; 샭; 샭; 샭; ) HANGUL SYLLABLE SYALG
+C0EE;C0EE;1109 1163 11B1;C0EE;1109 1163 11B1; # (샮; 샮; 샮; 샮; 샮; ) HANGUL SYLLABLE SYALM
+C0EF;C0EF;1109 1163 11B2;C0EF;1109 1163 11B2; # (샯; 샯; 샯; 샯; 샯; ) HANGUL SYLLABLE SYALB
+C0F0;C0F0;1109 1163 11B3;C0F0;1109 1163 11B3; # (샰; 샰; 샰; 샰; 샰; ) HANGUL SYLLABLE SYALS
+C0F1;C0F1;1109 1163 11B4;C0F1;1109 1163 11B4; # (샱; 샱; 샱; 샱; 샱; ) HANGUL SYLLABLE SYALT
+C0F2;C0F2;1109 1163 11B5;C0F2;1109 1163 11B5; # (샲; 샲; 샲; 샲; 샲; ) HANGUL SYLLABLE SYALP
+C0F3;C0F3;1109 1163 11B6;C0F3;1109 1163 11B6; # (샳; 샳; 샳; 샳; 샳; ) HANGUL SYLLABLE SYALH
+C0F4;C0F4;1109 1163 11B7;C0F4;1109 1163 11B7; # (샴; 샴; 샴; 샴; 샴; ) HANGUL SYLLABLE SYAM
+C0F5;C0F5;1109 1163 11B8;C0F5;1109 1163 11B8; # (샵; 샵; 샵; 샵; 샵; ) HANGUL SYLLABLE SYAB
+C0F6;C0F6;1109 1163 11B9;C0F6;1109 1163 11B9; # (샶; 샶; 샶; 샶; 샶; ) HANGUL SYLLABLE SYABS
+C0F7;C0F7;1109 1163 11BA;C0F7;1109 1163 11BA; # (샷; 샷; 샷; 샷; 샷; ) HANGUL SYLLABLE SYAS
+C0F8;C0F8;1109 1163 11BB;C0F8;1109 1163 11BB; # (샸; 샸; 샸; 샸; 샸; ) HANGUL SYLLABLE SYASS
+C0F9;C0F9;1109 1163 11BC;C0F9;1109 1163 11BC; # (샹; 샹; 샹; 샹; 샹; ) HANGUL SYLLABLE SYANG
+C0FA;C0FA;1109 1163 11BD;C0FA;1109 1163 11BD; # (샺; 샺; 샺; 샺; 샺; ) HANGUL SYLLABLE SYAJ
+C0FB;C0FB;1109 1163 11BE;C0FB;1109 1163 11BE; # (샻; 샻; 샻; 샻; 샻; ) HANGUL SYLLABLE SYAC
+C0FC;C0FC;1109 1163 11BF;C0FC;1109 1163 11BF; # (샼; 샼; 샼; 샼; 샼; ) HANGUL SYLLABLE SYAK
+C0FD;C0FD;1109 1163 11C0;C0FD;1109 1163 11C0; # (샽; 샽; 샽; 샽; 샽; ) HANGUL SYLLABLE SYAT
+C0FE;C0FE;1109 1163 11C1;C0FE;1109 1163 11C1; # (샾; 샾; 샤á‡; 샾; 샤á‡; ) HANGUL SYLLABLE SYAP
+C0FF;C0FF;1109 1163 11C2;C0FF;1109 1163 11C2; # (샿; 샿; 샿; 샿; 샿; ) HANGUL SYLLABLE SYAH
+C100;C100;1109 1164;C100;1109 1164; # (섀; 섀; 섀; 섀; 섀; ) HANGUL SYLLABLE SYAE
+C101;C101;1109 1164 11A8;C101;1109 1164 11A8; # (ì„; ì„; 섁; ì„; 섁; ) HANGUL SYLLABLE SYAEG
+C102;C102;1109 1164 11A9;C102;1109 1164 11A9; # (섂; 섂; 섂; 섂; 섂; ) HANGUL SYLLABLE SYAEGG
+C103;C103;1109 1164 11AA;C103;1109 1164 11AA; # (섃; 섃; 섃; 섃; 섃; ) HANGUL SYLLABLE SYAEGS
+C104;C104;1109 1164 11AB;C104;1109 1164 11AB; # (섄; 섄; 섄; 섄; 섄; ) HANGUL SYLLABLE SYAEN
+C105;C105;1109 1164 11AC;C105;1109 1164 11AC; # (섅; 섅; 섅; 섅; 섅; ) HANGUL SYLLABLE SYAENJ
+C106;C106;1109 1164 11AD;C106;1109 1164 11AD; # (섆; 섆; 섆; 섆; 섆; ) HANGUL SYLLABLE SYAENH
+C107;C107;1109 1164 11AE;C107;1109 1164 11AE; # (섇; 섇; 섇; 섇; 섇; ) HANGUL SYLLABLE SYAED
+C108;C108;1109 1164 11AF;C108;1109 1164 11AF; # (섈; 섈; 섈; 섈; 섈; ) HANGUL SYLLABLE SYAEL
+C109;C109;1109 1164 11B0;C109;1109 1164 11B0; # (섉; 섉; 섉; 섉; 섉; ) HANGUL SYLLABLE SYAELG
+C10A;C10A;1109 1164 11B1;C10A;1109 1164 11B1; # (섊; 섊; 섊; 섊; 섊; ) HANGUL SYLLABLE SYAELM
+C10B;C10B;1109 1164 11B2;C10B;1109 1164 11B2; # (섋; 섋; 섋; 섋; 섋; ) HANGUL SYLLABLE SYAELB
+C10C;C10C;1109 1164 11B3;C10C;1109 1164 11B3; # (섌; 섌; 섌; 섌; 섌; ) HANGUL SYLLABLE SYAELS
+C10D;C10D;1109 1164 11B4;C10D;1109 1164 11B4; # (ì„; ì„; 섍; ì„; 섍; ) HANGUL SYLLABLE SYAELT
+C10E;C10E;1109 1164 11B5;C10E;1109 1164 11B5; # (섎; 섎; 섎; 섎; 섎; ) HANGUL SYLLABLE SYAELP
+C10F;C10F;1109 1164 11B6;C10F;1109 1164 11B6; # (ì„; ì„; 섏; ì„; 섏; ) HANGUL SYLLABLE SYAELH
+C110;C110;1109 1164 11B7;C110;1109 1164 11B7; # (ì„; ì„; 섐; ì„; 섐; ) HANGUL SYLLABLE SYAEM
+C111;C111;1109 1164 11B8;C111;1109 1164 11B8; # (섑; 섑; 섑; 섑; 섑; ) HANGUL SYLLABLE SYAEB
+C112;C112;1109 1164 11B9;C112;1109 1164 11B9; # (섒; 섒; 섒; 섒; 섒; ) HANGUL SYLLABLE SYAEBS
+C113;C113;1109 1164 11BA;C113;1109 1164 11BA; # (섓; 섓; 섓; 섓; 섓; ) HANGUL SYLLABLE SYAES
+C114;C114;1109 1164 11BB;C114;1109 1164 11BB; # (섔; 섔; 섔; 섔; 섔; ) HANGUL SYLLABLE SYAESS
+C115;C115;1109 1164 11BC;C115;1109 1164 11BC; # (섕; 섕; 섕; 섕; 섕; ) HANGUL SYLLABLE SYAENG
+C116;C116;1109 1164 11BD;C116;1109 1164 11BD; # (섖; 섖; 섖; 섖; 섖; ) HANGUL SYLLABLE SYAEJ
+C117;C117;1109 1164 11BE;C117;1109 1164 11BE; # (섗; 섗; 섗; 섗; 섗; ) HANGUL SYLLABLE SYAEC
+C118;C118;1109 1164 11BF;C118;1109 1164 11BF; # (섘; 섘; 섘; 섘; 섘; ) HANGUL SYLLABLE SYAEK
+C119;C119;1109 1164 11C0;C119;1109 1164 11C0; # (섙; 섙; 섙; 섙; 섙; ) HANGUL SYLLABLE SYAET
+C11A;C11A;1109 1164 11C1;C11A;1109 1164 11C1; # (ì„š; ì„š; 섀á‡; ì„š; 섀á‡; ) HANGUL SYLLABLE SYAEP
+C11B;C11B;1109 1164 11C2;C11B;1109 1164 11C2; # (섛; 섛; 섛; 섛; 섛; ) HANGUL SYLLABLE SYAEH
+C11C;C11C;1109 1165;C11C;1109 1165; # (서; 서; 서; 서; 서; ) HANGUL SYLLABLE SEO
+C11D;C11D;1109 1165 11A8;C11D;1109 1165 11A8; # (ì„; ì„; 석; ì„; 석; ) HANGUL SYLLABLE SEOG
+C11E;C11E;1109 1165 11A9;C11E;1109 1165 11A9; # (섞; 섞; 섞; 섞; 섞; ) HANGUL SYLLABLE SEOGG
+C11F;C11F;1109 1165 11AA;C11F;1109 1165 11AA; # (섟; 섟; 섟; 섟; 섟; ) HANGUL SYLLABLE SEOGS
+C120;C120;1109 1165 11AB;C120;1109 1165 11AB; # (선; 선; 선; 선; 선; ) HANGUL SYLLABLE SEON
+C121;C121;1109 1165 11AC;C121;1109 1165 11AC; # (섡; 섡; 섡; 섡; 섡; ) HANGUL SYLLABLE SEONJ
+C122;C122;1109 1165 11AD;C122;1109 1165 11AD; # (섢; 섢; 섢; 섢; 섢; ) HANGUL SYLLABLE SEONH
+C123;C123;1109 1165 11AE;C123;1109 1165 11AE; # (섣; 섣; 섣; 섣; 섣; ) HANGUL SYLLABLE SEOD
+C124;C124;1109 1165 11AF;C124;1109 1165 11AF; # (설; 설; 설; 설; 설; ) HANGUL SYLLABLE SEOL
+C125;C125;1109 1165 11B0;C125;1109 1165 11B0; # (섥; 섥; 섥; 섥; 섥; ) HANGUL SYLLABLE SEOLG
+C126;C126;1109 1165 11B1;C126;1109 1165 11B1; # (섦; 섦; 섦; 섦; 섦; ) HANGUL SYLLABLE SEOLM
+C127;C127;1109 1165 11B2;C127;1109 1165 11B2; # (섧; 섧; 섧; 섧; 섧; ) HANGUL SYLLABLE SEOLB
+C128;C128;1109 1165 11B3;C128;1109 1165 11B3; # (섨; 섨; 섨; 섨; 섨; ) HANGUL SYLLABLE SEOLS
+C129;C129;1109 1165 11B4;C129;1109 1165 11B4; # (섩; 섩; 섩; 섩; 섩; ) HANGUL SYLLABLE SEOLT
+C12A;C12A;1109 1165 11B5;C12A;1109 1165 11B5; # (섪; 섪; 섪; 섪; 섪; ) HANGUL SYLLABLE SEOLP
+C12B;C12B;1109 1165 11B6;C12B;1109 1165 11B6; # (섫; 섫; 섫; 섫; 섫; ) HANGUL SYLLABLE SEOLH
+C12C;C12C;1109 1165 11B7;C12C;1109 1165 11B7; # (섬; 섬; 섬; 섬; 섬; ) HANGUL SYLLABLE SEOM
+C12D;C12D;1109 1165 11B8;C12D;1109 1165 11B8; # (섭; 섭; 섭; 섭; 섭; ) HANGUL SYLLABLE SEOB
+C12E;C12E;1109 1165 11B9;C12E;1109 1165 11B9; # (섮; 섮; 섮; 섮; 섮; ) HANGUL SYLLABLE SEOBS
+C12F;C12F;1109 1165 11BA;C12F;1109 1165 11BA; # (섯; 섯; 섯; 섯; 섯; ) HANGUL SYLLABLE SEOS
+C130;C130;1109 1165 11BB;C130;1109 1165 11BB; # (섰; 섰; 섰; 섰; 섰; ) HANGUL SYLLABLE SEOSS
+C131;C131;1109 1165 11BC;C131;1109 1165 11BC; # (성; 성; 성; 성; 성; ) HANGUL SYLLABLE SEONG
+C132;C132;1109 1165 11BD;C132;1109 1165 11BD; # (섲; 섲; 섲; 섲; 섲; ) HANGUL SYLLABLE SEOJ
+C133;C133;1109 1165 11BE;C133;1109 1165 11BE; # (섳; 섳; 섳; 섳; 섳; ) HANGUL SYLLABLE SEOC
+C134;C134;1109 1165 11BF;C134;1109 1165 11BF; # (섴; 섴; 섴; 섴; 섴; ) HANGUL SYLLABLE SEOK
+C135;C135;1109 1165 11C0;C135;1109 1165 11C0; # (섵; 섵; 섵; 섵; 섵; ) HANGUL SYLLABLE SEOT
+C136;C136;1109 1165 11C1;C136;1109 1165 11C1; # (섶; 섶; 서á‡; 섶; 서á‡; ) HANGUL SYLLABLE SEOP
+C137;C137;1109 1165 11C2;C137;1109 1165 11C2; # (섷; 섷; 섷; 섷; 섷; ) HANGUL SYLLABLE SEOH
+C138;C138;1109 1166;C138;1109 1166; # (세; 세; 세; 세; 세; ) HANGUL SYLLABLE SE
+C139;C139;1109 1166 11A8;C139;1109 1166 11A8; # (섹; 섹; 섹; 섹; 섹; ) HANGUL SYLLABLE SEG
+C13A;C13A;1109 1166 11A9;C13A;1109 1166 11A9; # (섺; 섺; 섺; 섺; 섺; ) HANGUL SYLLABLE SEGG
+C13B;C13B;1109 1166 11AA;C13B;1109 1166 11AA; # (섻; 섻; 섻; 섻; 섻; ) HANGUL SYLLABLE SEGS
+C13C;C13C;1109 1166 11AB;C13C;1109 1166 11AB; # (센; 센; 센; 센; 센; ) HANGUL SYLLABLE SEN
+C13D;C13D;1109 1166 11AC;C13D;1109 1166 11AC; # (섽; 섽; 섽; 섽; 섽; ) HANGUL SYLLABLE SENJ
+C13E;C13E;1109 1166 11AD;C13E;1109 1166 11AD; # (섾; 섾; 섾; 섾; 섾; ) HANGUL SYLLABLE SENH
+C13F;C13F;1109 1166 11AE;C13F;1109 1166 11AE; # (섿; 섿; 섿; 섿; 섿; ) HANGUL SYLLABLE SED
+C140;C140;1109 1166 11AF;C140;1109 1166 11AF; # (셀; 셀; 셀; 셀; 셀; ) HANGUL SYLLABLE SEL
+C141;C141;1109 1166 11B0;C141;1109 1166 11B0; # (ì…; ì…; 셁; ì…; 셁; ) HANGUL SYLLABLE SELG
+C142;C142;1109 1166 11B1;C142;1109 1166 11B1; # (셂; 셂; 셂; 셂; 셂; ) HANGUL SYLLABLE SELM
+C143;C143;1109 1166 11B2;C143;1109 1166 11B2; # (셃; 셃; 셃; 셃; 셃; ) HANGUL SYLLABLE SELB
+C144;C144;1109 1166 11B3;C144;1109 1166 11B3; # (셄; 셄; 셄; 셄; 셄; ) HANGUL SYLLABLE SELS
+C145;C145;1109 1166 11B4;C145;1109 1166 11B4; # (셅; 셅; 셅; 셅; 셅; ) HANGUL SYLLABLE SELT
+C146;C146;1109 1166 11B5;C146;1109 1166 11B5; # (셆; 셆; 셆; 셆; 셆; ) HANGUL SYLLABLE SELP
+C147;C147;1109 1166 11B6;C147;1109 1166 11B6; # (셇; 셇; 셇; 셇; 셇; ) HANGUL SYLLABLE SELH
+C148;C148;1109 1166 11B7;C148;1109 1166 11B7; # (셈; 셈; 셈; 셈; 셈; ) HANGUL SYLLABLE SEM
+C149;C149;1109 1166 11B8;C149;1109 1166 11B8; # (셉; 셉; 셉; 셉; 셉; ) HANGUL SYLLABLE SEB
+C14A;C14A;1109 1166 11B9;C14A;1109 1166 11B9; # (셊; 셊; 셊; 셊; 셊; ) HANGUL SYLLABLE SEBS
+C14B;C14B;1109 1166 11BA;C14B;1109 1166 11BA; # (셋; 셋; 셋; 셋; 셋; ) HANGUL SYLLABLE SES
+C14C;C14C;1109 1166 11BB;C14C;1109 1166 11BB; # (셌; 셌; 셌; 셌; 셌; ) HANGUL SYLLABLE SESS
+C14D;C14D;1109 1166 11BC;C14D;1109 1166 11BC; # (ì…; ì…; 셍; ì…; 셍; ) HANGUL SYLLABLE SENG
+C14E;C14E;1109 1166 11BD;C14E;1109 1166 11BD; # (셎; 셎; 셎; 셎; 셎; ) HANGUL SYLLABLE SEJ
+C14F;C14F;1109 1166 11BE;C14F;1109 1166 11BE; # (ì…; ì…; 셏; ì…; 셏; ) HANGUL SYLLABLE SEC
+C150;C150;1109 1166 11BF;C150;1109 1166 11BF; # (ì…; ì…; 셐; ì…; 셐; ) HANGUL SYLLABLE SEK
+C151;C151;1109 1166 11C0;C151;1109 1166 11C0; # (셑; 셑; 셑; 셑; 셑; ) HANGUL SYLLABLE SET
+C152;C152;1109 1166 11C1;C152;1109 1166 11C1; # (ì…’; ì…’; 세á‡; ì…’; 세á‡; ) HANGUL SYLLABLE SEP
+C153;C153;1109 1166 11C2;C153;1109 1166 11C2; # (셓; 셓; 셓; 셓; 셓; ) HANGUL SYLLABLE SEH
+C154;C154;1109 1167;C154;1109 1167; # (셔; 셔; 셔; 셔; 셔; ) HANGUL SYLLABLE SYEO
+C155;C155;1109 1167 11A8;C155;1109 1167 11A8; # (셕; 셕; 셕; 셕; 셕; ) HANGUL SYLLABLE SYEOG
+C156;C156;1109 1167 11A9;C156;1109 1167 11A9; # (셖; 셖; 셖; 셖; 셖; ) HANGUL SYLLABLE SYEOGG
+C157;C157;1109 1167 11AA;C157;1109 1167 11AA; # (셗; 셗; 셗; 셗; 셗; ) HANGUL SYLLABLE SYEOGS
+C158;C158;1109 1167 11AB;C158;1109 1167 11AB; # (션; 션; 션; 션; 션; ) HANGUL SYLLABLE SYEON
+C159;C159;1109 1167 11AC;C159;1109 1167 11AC; # (셙; 셙; 셙; 셙; 셙; ) HANGUL SYLLABLE SYEONJ
+C15A;C15A;1109 1167 11AD;C15A;1109 1167 11AD; # (셚; 셚; 셚; 셚; 셚; ) HANGUL SYLLABLE SYEONH
+C15B;C15B;1109 1167 11AE;C15B;1109 1167 11AE; # (셛; 셛; 셛; 셛; 셛; ) HANGUL SYLLABLE SYEOD
+C15C;C15C;1109 1167 11AF;C15C;1109 1167 11AF; # (셜; 셜; 셜; 셜; 셜; ) HANGUL SYLLABLE SYEOL
+C15D;C15D;1109 1167 11B0;C15D;1109 1167 11B0; # (ì…; ì…; 셝; ì…; 셝; ) HANGUL SYLLABLE SYEOLG
+C15E;C15E;1109 1167 11B1;C15E;1109 1167 11B1; # (셞; 셞; 셞; 셞; 셞; ) HANGUL SYLLABLE SYEOLM
+C15F;C15F;1109 1167 11B2;C15F;1109 1167 11B2; # (셟; 셟; 셟; 셟; 셟; ) HANGUL SYLLABLE SYEOLB
+C160;C160;1109 1167 11B3;C160;1109 1167 11B3; # (셠; 셠; 셠; 셠; 셠; ) HANGUL SYLLABLE SYEOLS
+C161;C161;1109 1167 11B4;C161;1109 1167 11B4; # (셡; 셡; 셡; 셡; 셡; ) HANGUL SYLLABLE SYEOLT
+C162;C162;1109 1167 11B5;C162;1109 1167 11B5; # (셢; 셢; 셢; 셢; 셢; ) HANGUL SYLLABLE SYEOLP
+C163;C163;1109 1167 11B6;C163;1109 1167 11B6; # (셣; 셣; 셣; 셣; 셣; ) HANGUL SYLLABLE SYEOLH
+C164;C164;1109 1167 11B7;C164;1109 1167 11B7; # (셤; 셤; 셤; 셤; 셤; ) HANGUL SYLLABLE SYEOM
+C165;C165;1109 1167 11B8;C165;1109 1167 11B8; # (셥; 셥; 셥; 셥; 셥; ) HANGUL SYLLABLE SYEOB
+C166;C166;1109 1167 11B9;C166;1109 1167 11B9; # (셦; 셦; 셦; 셦; 셦; ) HANGUL SYLLABLE SYEOBS
+C167;C167;1109 1167 11BA;C167;1109 1167 11BA; # (셧; 셧; 셧; 셧; 셧; ) HANGUL SYLLABLE SYEOS
+C168;C168;1109 1167 11BB;C168;1109 1167 11BB; # (셨; 셨; 셨; 셨; 셨; ) HANGUL SYLLABLE SYEOSS
+C169;C169;1109 1167 11BC;C169;1109 1167 11BC; # (셩; 셩; 셩; 셩; 셩; ) HANGUL SYLLABLE SYEONG
+C16A;C16A;1109 1167 11BD;C16A;1109 1167 11BD; # (셪; 셪; 셪; 셪; 셪; ) HANGUL SYLLABLE SYEOJ
+C16B;C16B;1109 1167 11BE;C16B;1109 1167 11BE; # (셫; 셫; 셫; 셫; 셫; ) HANGUL SYLLABLE SYEOC
+C16C;C16C;1109 1167 11BF;C16C;1109 1167 11BF; # (셬; 셬; 셬; 셬; 셬; ) HANGUL SYLLABLE SYEOK
+C16D;C16D;1109 1167 11C0;C16D;1109 1167 11C0; # (셭; 셭; 셭; 셭; 셭; ) HANGUL SYLLABLE SYEOT
+C16E;C16E;1109 1167 11C1;C16E;1109 1167 11C1; # (ì…®; ì…®; 셔á‡; ì…®; 셔á‡; ) HANGUL SYLLABLE SYEOP
+C16F;C16F;1109 1167 11C2;C16F;1109 1167 11C2; # (셯; 셯; 셯; 셯; 셯; ) HANGUL SYLLABLE SYEOH
+C170;C170;1109 1168;C170;1109 1168; # (셰; 셰; 셰; 셰; 셰; ) HANGUL SYLLABLE SYE
+C171;C171;1109 1168 11A8;C171;1109 1168 11A8; # (셱; 셱; 셱; 셱; 셱; ) HANGUL SYLLABLE SYEG
+C172;C172;1109 1168 11A9;C172;1109 1168 11A9; # (셲; 셲; 셲; 셲; 셲; ) HANGUL SYLLABLE SYEGG
+C173;C173;1109 1168 11AA;C173;1109 1168 11AA; # (셳; 셳; 셳; 셳; 셳; ) HANGUL SYLLABLE SYEGS
+C174;C174;1109 1168 11AB;C174;1109 1168 11AB; # (셴; 셴; 셴; 셴; 셴; ) HANGUL SYLLABLE SYEN
+C175;C175;1109 1168 11AC;C175;1109 1168 11AC; # (셵; 셵; 셵; 셵; 셵; ) HANGUL SYLLABLE SYENJ
+C176;C176;1109 1168 11AD;C176;1109 1168 11AD; # (셶; 셶; 셶; 셶; 셶; ) HANGUL SYLLABLE SYENH
+C177;C177;1109 1168 11AE;C177;1109 1168 11AE; # (셷; 셷; 셷; 셷; 셷; ) HANGUL SYLLABLE SYED
+C178;C178;1109 1168 11AF;C178;1109 1168 11AF; # (셸; 셸; 셸; 셸; 셸; ) HANGUL SYLLABLE SYEL
+C179;C179;1109 1168 11B0;C179;1109 1168 11B0; # (셹; 셹; 셹; 셹; 셹; ) HANGUL SYLLABLE SYELG
+C17A;C17A;1109 1168 11B1;C17A;1109 1168 11B1; # (셺; 셺; 셺; 셺; 셺; ) HANGUL SYLLABLE SYELM
+C17B;C17B;1109 1168 11B2;C17B;1109 1168 11B2; # (셻; 셻; 셻; 셻; 셻; ) HANGUL SYLLABLE SYELB
+C17C;C17C;1109 1168 11B3;C17C;1109 1168 11B3; # (셼; 셼; 셼; 셼; 셼; ) HANGUL SYLLABLE SYELS
+C17D;C17D;1109 1168 11B4;C17D;1109 1168 11B4; # (셽; 셽; 셽; 셽; 셽; ) HANGUL SYLLABLE SYELT
+C17E;C17E;1109 1168 11B5;C17E;1109 1168 11B5; # (셾; 셾; 셾; 셾; 셾; ) HANGUL SYLLABLE SYELP
+C17F;C17F;1109 1168 11B6;C17F;1109 1168 11B6; # (셿; 셿; 셿; 셿; 셿; ) HANGUL SYLLABLE SYELH
+C180;C180;1109 1168 11B7;C180;1109 1168 11B7; # (솀; 솀; 솀; 솀; 솀; ) HANGUL SYLLABLE SYEM
+C181;C181;1109 1168 11B8;C181;1109 1168 11B8; # (ì†; ì†; 솁; ì†; 솁; ) HANGUL SYLLABLE SYEB
+C182;C182;1109 1168 11B9;C182;1109 1168 11B9; # (솂; 솂; 솂; 솂; 솂; ) HANGUL SYLLABLE SYEBS
+C183;C183;1109 1168 11BA;C183;1109 1168 11BA; # (솃; 솃; 솃; 솃; 솃; ) HANGUL SYLLABLE SYES
+C184;C184;1109 1168 11BB;C184;1109 1168 11BB; # (솄; 솄; 솄; 솄; 솄; ) HANGUL SYLLABLE SYESS
+C185;C185;1109 1168 11BC;C185;1109 1168 11BC; # (솅; 솅; 솅; 솅; 솅; ) HANGUL SYLLABLE SYENG
+C186;C186;1109 1168 11BD;C186;1109 1168 11BD; # (솆; 솆; 솆; 솆; 솆; ) HANGUL SYLLABLE SYEJ
+C187;C187;1109 1168 11BE;C187;1109 1168 11BE; # (솇; 솇; 솇; 솇; 솇; ) HANGUL SYLLABLE SYEC
+C188;C188;1109 1168 11BF;C188;1109 1168 11BF; # (솈; 솈; 솈; 솈; 솈; ) HANGUL SYLLABLE SYEK
+C189;C189;1109 1168 11C0;C189;1109 1168 11C0; # (솉; 솉; 솉; 솉; 솉; ) HANGUL SYLLABLE SYET
+C18A;C18A;1109 1168 11C1;C18A;1109 1168 11C1; # (솊; 솊; 셰á‡; 솊; 셰á‡; ) HANGUL SYLLABLE SYEP
+C18B;C18B;1109 1168 11C2;C18B;1109 1168 11C2; # (솋; 솋; 솋; 솋; 솋; ) HANGUL SYLLABLE SYEH
+C18C;C18C;1109 1169;C18C;1109 1169; # (소; 소; 소; 소; 소; ) HANGUL SYLLABLE SO
+C18D;C18D;1109 1169 11A8;C18D;1109 1169 11A8; # (ì†; ì†; 속; ì†; 속; ) HANGUL SYLLABLE SOG
+C18E;C18E;1109 1169 11A9;C18E;1109 1169 11A9; # (솎; 솎; 솎; 솎; 솎; ) HANGUL SYLLABLE SOGG
+C18F;C18F;1109 1169 11AA;C18F;1109 1169 11AA; # (ì†; ì†; 솏; ì†; 솏; ) HANGUL SYLLABLE SOGS
+C190;C190;1109 1169 11AB;C190;1109 1169 11AB; # (ì†; ì†; 손; ì†; 손; ) HANGUL SYLLABLE SON
+C191;C191;1109 1169 11AC;C191;1109 1169 11AC; # (솑; 솑; 솑; 솑; 솑; ) HANGUL SYLLABLE SONJ
+C192;C192;1109 1169 11AD;C192;1109 1169 11AD; # (솒; 솒; 솒; 솒; 솒; ) HANGUL SYLLABLE SONH
+C193;C193;1109 1169 11AE;C193;1109 1169 11AE; # (솓; 솓; 솓; 솓; 솓; ) HANGUL SYLLABLE SOD
+C194;C194;1109 1169 11AF;C194;1109 1169 11AF; # (솔; 솔; 솔; 솔; 솔; ) HANGUL SYLLABLE SOL
+C195;C195;1109 1169 11B0;C195;1109 1169 11B0; # (솕; 솕; 솕; 솕; 솕; ) HANGUL SYLLABLE SOLG
+C196;C196;1109 1169 11B1;C196;1109 1169 11B1; # (솖; 솖; 솖; 솖; 솖; ) HANGUL SYLLABLE SOLM
+C197;C197;1109 1169 11B2;C197;1109 1169 11B2; # (솗; 솗; 솗; 솗; 솗; ) HANGUL SYLLABLE SOLB
+C198;C198;1109 1169 11B3;C198;1109 1169 11B3; # (솘; 솘; 솘; 솘; 솘; ) HANGUL SYLLABLE SOLS
+C199;C199;1109 1169 11B4;C199;1109 1169 11B4; # (솙; 솙; 솙; 솙; 솙; ) HANGUL SYLLABLE SOLT
+C19A;C19A;1109 1169 11B5;C19A;1109 1169 11B5; # (솚; 솚; 솚; 솚; 솚; ) HANGUL SYLLABLE SOLP
+C19B;C19B;1109 1169 11B6;C19B;1109 1169 11B6; # (솛; 솛; 솛; 솛; 솛; ) HANGUL SYLLABLE SOLH
+C19C;C19C;1109 1169 11B7;C19C;1109 1169 11B7; # (솜; 솜; 솜; 솜; 솜; ) HANGUL SYLLABLE SOM
+C19D;C19D;1109 1169 11B8;C19D;1109 1169 11B8; # (ì†; ì†; 솝; ì†; 솝; ) HANGUL SYLLABLE SOB
+C19E;C19E;1109 1169 11B9;C19E;1109 1169 11B9; # (솞; 솞; 솞; 솞; 솞; ) HANGUL SYLLABLE SOBS
+C19F;C19F;1109 1169 11BA;C19F;1109 1169 11BA; # (솟; 솟; 솟; 솟; 솟; ) HANGUL SYLLABLE SOS
+C1A0;C1A0;1109 1169 11BB;C1A0;1109 1169 11BB; # (솠; 솠; 솠; 솠; 솠; ) HANGUL SYLLABLE SOSS
+C1A1;C1A1;1109 1169 11BC;C1A1;1109 1169 11BC; # (송; 송; 송; 송; 송; ) HANGUL SYLLABLE SONG
+C1A2;C1A2;1109 1169 11BD;C1A2;1109 1169 11BD; # (솢; 솢; 솢; 솢; 솢; ) HANGUL SYLLABLE SOJ
+C1A3;C1A3;1109 1169 11BE;C1A3;1109 1169 11BE; # (솣; 솣; 솣; 솣; 솣; ) HANGUL SYLLABLE SOC
+C1A4;C1A4;1109 1169 11BF;C1A4;1109 1169 11BF; # (솤; 솤; 솤; 솤; 솤; ) HANGUL SYLLABLE SOK
+C1A5;C1A5;1109 1169 11C0;C1A5;1109 1169 11C0; # (솥; 솥; 솥; 솥; 솥; ) HANGUL SYLLABLE SOT
+C1A6;C1A6;1109 1169 11C1;C1A6;1109 1169 11C1; # (솦; 솦; 소á‡; 솦; 소á‡; ) HANGUL SYLLABLE SOP
+C1A7;C1A7;1109 1169 11C2;C1A7;1109 1169 11C2; # (솧; 솧; 솧; 솧; 솧; ) HANGUL SYLLABLE SOH
+C1A8;C1A8;1109 116A;C1A8;1109 116A; # (솨; 솨; 솨; 솨; 솨; ) HANGUL SYLLABLE SWA
+C1A9;C1A9;1109 116A 11A8;C1A9;1109 116A 11A8; # (솩; 솩; 솩; 솩; 솩; ) HANGUL SYLLABLE SWAG
+C1AA;C1AA;1109 116A 11A9;C1AA;1109 116A 11A9; # (솪; 솪; 솪; 솪; 솪; ) HANGUL SYLLABLE SWAGG
+C1AB;C1AB;1109 116A 11AA;C1AB;1109 116A 11AA; # (솫; 솫; 솫; 솫; 솫; ) HANGUL SYLLABLE SWAGS
+C1AC;C1AC;1109 116A 11AB;C1AC;1109 116A 11AB; # (솬; 솬; 솬; 솬; 솬; ) HANGUL SYLLABLE SWAN
+C1AD;C1AD;1109 116A 11AC;C1AD;1109 116A 11AC; # (솭; 솭; 솭; 솭; 솭; ) HANGUL SYLLABLE SWANJ
+C1AE;C1AE;1109 116A 11AD;C1AE;1109 116A 11AD; # (솮; 솮; 솮; 솮; 솮; ) HANGUL SYLLABLE SWANH
+C1AF;C1AF;1109 116A 11AE;C1AF;1109 116A 11AE; # (솯; 솯; 솯; 솯; 솯; ) HANGUL SYLLABLE SWAD
+C1B0;C1B0;1109 116A 11AF;C1B0;1109 116A 11AF; # (솰; 솰; 솰; 솰; 솰; ) HANGUL SYLLABLE SWAL
+C1B1;C1B1;1109 116A 11B0;C1B1;1109 116A 11B0; # (솱; 솱; 솱; 솱; 솱; ) HANGUL SYLLABLE SWALG
+C1B2;C1B2;1109 116A 11B1;C1B2;1109 116A 11B1; # (솲; 솲; 솲; 솲; 솲; ) HANGUL SYLLABLE SWALM
+C1B3;C1B3;1109 116A 11B2;C1B3;1109 116A 11B2; # (솳; 솳; 솳; 솳; 솳; ) HANGUL SYLLABLE SWALB
+C1B4;C1B4;1109 116A 11B3;C1B4;1109 116A 11B3; # (솴; 솴; 솴; 솴; 솴; ) HANGUL SYLLABLE SWALS
+C1B5;C1B5;1109 116A 11B4;C1B5;1109 116A 11B4; # (솵; 솵; 솵; 솵; 솵; ) HANGUL SYLLABLE SWALT
+C1B6;C1B6;1109 116A 11B5;C1B6;1109 116A 11B5; # (솶; 솶; 솶; 솶; 솶; ) HANGUL SYLLABLE SWALP
+C1B7;C1B7;1109 116A 11B6;C1B7;1109 116A 11B6; # (솷; 솷; 솷; 솷; 솷; ) HANGUL SYLLABLE SWALH
+C1B8;C1B8;1109 116A 11B7;C1B8;1109 116A 11B7; # (솸; 솸; 솸; 솸; 솸; ) HANGUL SYLLABLE SWAM
+C1B9;C1B9;1109 116A 11B8;C1B9;1109 116A 11B8; # (솹; 솹; 솹; 솹; 솹; ) HANGUL SYLLABLE SWAB
+C1BA;C1BA;1109 116A 11B9;C1BA;1109 116A 11B9; # (솺; 솺; 솺; 솺; 솺; ) HANGUL SYLLABLE SWABS
+C1BB;C1BB;1109 116A 11BA;C1BB;1109 116A 11BA; # (솻; 솻; 솻; 솻; 솻; ) HANGUL SYLLABLE SWAS
+C1BC;C1BC;1109 116A 11BB;C1BC;1109 116A 11BB; # (솼; 솼; 솼; 솼; 솼; ) HANGUL SYLLABLE SWASS
+C1BD;C1BD;1109 116A 11BC;C1BD;1109 116A 11BC; # (솽; 솽; 솽; 솽; 솽; ) HANGUL SYLLABLE SWANG
+C1BE;C1BE;1109 116A 11BD;C1BE;1109 116A 11BD; # (솾; 솾; 솾; 솾; 솾; ) HANGUL SYLLABLE SWAJ
+C1BF;C1BF;1109 116A 11BE;C1BF;1109 116A 11BE; # (솿; 솿; 솿; 솿; 솿; ) HANGUL SYLLABLE SWAC
+C1C0;C1C0;1109 116A 11BF;C1C0;1109 116A 11BF; # (쇀; 쇀; 쇀; 쇀; 쇀; ) HANGUL SYLLABLE SWAK
+C1C1;C1C1;1109 116A 11C0;C1C1;1109 116A 11C0; # (ì‡; ì‡; 쇁; ì‡; 쇁; ) HANGUL SYLLABLE SWAT
+C1C2;C1C2;1109 116A 11C1;C1C2;1109 116A 11C1; # (쇂; 쇂; 솨á‡; 쇂; 솨á‡; ) HANGUL SYLLABLE SWAP
+C1C3;C1C3;1109 116A 11C2;C1C3;1109 116A 11C2; # (쇃; 쇃; 쇃; 쇃; 쇃; ) HANGUL SYLLABLE SWAH
+C1C4;C1C4;1109 116B;C1C4;1109 116B; # (쇄; 쇄; 쇄; 쇄; 쇄; ) HANGUL SYLLABLE SWAE
+C1C5;C1C5;1109 116B 11A8;C1C5;1109 116B 11A8; # (쇅; 쇅; 쇅; 쇅; 쇅; ) HANGUL SYLLABLE SWAEG
+C1C6;C1C6;1109 116B 11A9;C1C6;1109 116B 11A9; # (쇆; 쇆; 쇆; 쇆; 쇆; ) HANGUL SYLLABLE SWAEGG
+C1C7;C1C7;1109 116B 11AA;C1C7;1109 116B 11AA; # (쇇; 쇇; 쇇; 쇇; 쇇; ) HANGUL SYLLABLE SWAEGS
+C1C8;C1C8;1109 116B 11AB;C1C8;1109 116B 11AB; # (쇈; 쇈; 쇈; 쇈; 쇈; ) HANGUL SYLLABLE SWAEN
+C1C9;C1C9;1109 116B 11AC;C1C9;1109 116B 11AC; # (쇉; 쇉; 쇉; 쇉; 쇉; ) HANGUL SYLLABLE SWAENJ
+C1CA;C1CA;1109 116B 11AD;C1CA;1109 116B 11AD; # (쇊; 쇊; 쇊; 쇊; 쇊; ) HANGUL SYLLABLE SWAENH
+C1CB;C1CB;1109 116B 11AE;C1CB;1109 116B 11AE; # (쇋; 쇋; 쇋; 쇋; 쇋; ) HANGUL SYLLABLE SWAED
+C1CC;C1CC;1109 116B 11AF;C1CC;1109 116B 11AF; # (쇌; 쇌; 쇌; 쇌; 쇌; ) HANGUL SYLLABLE SWAEL
+C1CD;C1CD;1109 116B 11B0;C1CD;1109 116B 11B0; # (ì‡; ì‡; 쇍; ì‡; 쇍; ) HANGUL SYLLABLE SWAELG
+C1CE;C1CE;1109 116B 11B1;C1CE;1109 116B 11B1; # (쇎; 쇎; 쇎; 쇎; 쇎; ) HANGUL SYLLABLE SWAELM
+C1CF;C1CF;1109 116B 11B2;C1CF;1109 116B 11B2; # (ì‡; ì‡; 쇏; ì‡; 쇏; ) HANGUL SYLLABLE SWAELB
+C1D0;C1D0;1109 116B 11B3;C1D0;1109 116B 11B3; # (ì‡; ì‡; 쇐; ì‡; 쇐; ) HANGUL SYLLABLE SWAELS
+C1D1;C1D1;1109 116B 11B4;C1D1;1109 116B 11B4; # (쇑; 쇑; 쇑; 쇑; 쇑; ) HANGUL SYLLABLE SWAELT
+C1D2;C1D2;1109 116B 11B5;C1D2;1109 116B 11B5; # (쇒; 쇒; 쇒; 쇒; 쇒; ) HANGUL SYLLABLE SWAELP
+C1D3;C1D3;1109 116B 11B6;C1D3;1109 116B 11B6; # (쇓; 쇓; 쇓; 쇓; 쇓; ) HANGUL SYLLABLE SWAELH
+C1D4;C1D4;1109 116B 11B7;C1D4;1109 116B 11B7; # (쇔; 쇔; 쇔; 쇔; 쇔; ) HANGUL SYLLABLE SWAEM
+C1D5;C1D5;1109 116B 11B8;C1D5;1109 116B 11B8; # (쇕; 쇕; 쇕; 쇕; 쇕; ) HANGUL SYLLABLE SWAEB
+C1D6;C1D6;1109 116B 11B9;C1D6;1109 116B 11B9; # (쇖; 쇖; 쇖; 쇖; 쇖; ) HANGUL SYLLABLE SWAEBS
+C1D7;C1D7;1109 116B 11BA;C1D7;1109 116B 11BA; # (쇗; 쇗; 쇗; 쇗; 쇗; ) HANGUL SYLLABLE SWAES
+C1D8;C1D8;1109 116B 11BB;C1D8;1109 116B 11BB; # (쇘; 쇘; 쇘; 쇘; 쇘; ) HANGUL SYLLABLE SWAESS
+C1D9;C1D9;1109 116B 11BC;C1D9;1109 116B 11BC; # (쇙; 쇙; 쇙; 쇙; 쇙; ) HANGUL SYLLABLE SWAENG
+C1DA;C1DA;1109 116B 11BD;C1DA;1109 116B 11BD; # (쇚; 쇚; 쇚; 쇚; 쇚; ) HANGUL SYLLABLE SWAEJ
+C1DB;C1DB;1109 116B 11BE;C1DB;1109 116B 11BE; # (쇛; 쇛; 쇛; 쇛; 쇛; ) HANGUL SYLLABLE SWAEC
+C1DC;C1DC;1109 116B 11BF;C1DC;1109 116B 11BF; # (쇜; 쇜; 쇜; 쇜; 쇜; ) HANGUL SYLLABLE SWAEK
+C1DD;C1DD;1109 116B 11C0;C1DD;1109 116B 11C0; # (ì‡; ì‡; 쇝; ì‡; 쇝; ) HANGUL SYLLABLE SWAET
+C1DE;C1DE;1109 116B 11C1;C1DE;1109 116B 11C1; # (쇞; 쇞; 쇄á‡; 쇞; 쇄á‡; ) HANGUL SYLLABLE SWAEP
+C1DF;C1DF;1109 116B 11C2;C1DF;1109 116B 11C2; # (쇟; 쇟; 쇟; 쇟; 쇟; ) HANGUL SYLLABLE SWAEH
+C1E0;C1E0;1109 116C;C1E0;1109 116C; # (쇠; 쇠; 쇠; 쇠; 쇠; ) HANGUL SYLLABLE SOE
+C1E1;C1E1;1109 116C 11A8;C1E1;1109 116C 11A8; # (쇡; 쇡; 쇡; 쇡; 쇡; ) HANGUL SYLLABLE SOEG
+C1E2;C1E2;1109 116C 11A9;C1E2;1109 116C 11A9; # (쇢; 쇢; 쇢; 쇢; 쇢; ) HANGUL SYLLABLE SOEGG
+C1E3;C1E3;1109 116C 11AA;C1E3;1109 116C 11AA; # (쇣; 쇣; 쇣; 쇣; 쇣; ) HANGUL SYLLABLE SOEGS
+C1E4;C1E4;1109 116C 11AB;C1E4;1109 116C 11AB; # (쇤; 쇤; 쇤; 쇤; 쇤; ) HANGUL SYLLABLE SOEN
+C1E5;C1E5;1109 116C 11AC;C1E5;1109 116C 11AC; # (쇥; 쇥; 쇥; 쇥; 쇥; ) HANGUL SYLLABLE SOENJ
+C1E6;C1E6;1109 116C 11AD;C1E6;1109 116C 11AD; # (쇦; 쇦; 쇦; 쇦; 쇦; ) HANGUL SYLLABLE SOENH
+C1E7;C1E7;1109 116C 11AE;C1E7;1109 116C 11AE; # (쇧; 쇧; 쇧; 쇧; 쇧; ) HANGUL SYLLABLE SOED
+C1E8;C1E8;1109 116C 11AF;C1E8;1109 116C 11AF; # (쇨; 쇨; 쇨; 쇨; 쇨; ) HANGUL SYLLABLE SOEL
+C1E9;C1E9;1109 116C 11B0;C1E9;1109 116C 11B0; # (쇩; 쇩; 쇩; 쇩; 쇩; ) HANGUL SYLLABLE SOELG
+C1EA;C1EA;1109 116C 11B1;C1EA;1109 116C 11B1; # (쇪; 쇪; 쇪; 쇪; 쇪; ) HANGUL SYLLABLE SOELM
+C1EB;C1EB;1109 116C 11B2;C1EB;1109 116C 11B2; # (쇫; 쇫; 쇫; 쇫; 쇫; ) HANGUL SYLLABLE SOELB
+C1EC;C1EC;1109 116C 11B3;C1EC;1109 116C 11B3; # (쇬; 쇬; 쇬; 쇬; 쇬; ) HANGUL SYLLABLE SOELS
+C1ED;C1ED;1109 116C 11B4;C1ED;1109 116C 11B4; # (쇭; 쇭; 쇭; 쇭; 쇭; ) HANGUL SYLLABLE SOELT
+C1EE;C1EE;1109 116C 11B5;C1EE;1109 116C 11B5; # (쇮; 쇮; 쇮; 쇮; 쇮; ) HANGUL SYLLABLE SOELP
+C1EF;C1EF;1109 116C 11B6;C1EF;1109 116C 11B6; # (쇯; 쇯; 쇯; 쇯; 쇯; ) HANGUL SYLLABLE SOELH
+C1F0;C1F0;1109 116C 11B7;C1F0;1109 116C 11B7; # (쇰; 쇰; 쇰; 쇰; 쇰; ) HANGUL SYLLABLE SOEM
+C1F1;C1F1;1109 116C 11B8;C1F1;1109 116C 11B8; # (쇱; 쇱; 쇱; 쇱; 쇱; ) HANGUL SYLLABLE SOEB
+C1F2;C1F2;1109 116C 11B9;C1F2;1109 116C 11B9; # (쇲; 쇲; 쇲; 쇲; 쇲; ) HANGUL SYLLABLE SOEBS
+C1F3;C1F3;1109 116C 11BA;C1F3;1109 116C 11BA; # (쇳; 쇳; 쇳; 쇳; 쇳; ) HANGUL SYLLABLE SOES
+C1F4;C1F4;1109 116C 11BB;C1F4;1109 116C 11BB; # (쇴; 쇴; 쇴; 쇴; 쇴; ) HANGUL SYLLABLE SOESS
+C1F5;C1F5;1109 116C 11BC;C1F5;1109 116C 11BC; # (쇵; 쇵; 쇵; 쇵; 쇵; ) HANGUL SYLLABLE SOENG
+C1F6;C1F6;1109 116C 11BD;C1F6;1109 116C 11BD; # (쇶; 쇶; 쇶; 쇶; 쇶; ) HANGUL SYLLABLE SOEJ
+C1F7;C1F7;1109 116C 11BE;C1F7;1109 116C 11BE; # (쇷; 쇷; 쇷; 쇷; 쇷; ) HANGUL SYLLABLE SOEC
+C1F8;C1F8;1109 116C 11BF;C1F8;1109 116C 11BF; # (쇸; 쇸; 쇸; 쇸; 쇸; ) HANGUL SYLLABLE SOEK
+C1F9;C1F9;1109 116C 11C0;C1F9;1109 116C 11C0; # (쇹; 쇹; 쇹; 쇹; 쇹; ) HANGUL SYLLABLE SOET
+C1FA;C1FA;1109 116C 11C1;C1FA;1109 116C 11C1; # (쇺; 쇺; 쇠á‡; 쇺; 쇠á‡; ) HANGUL SYLLABLE SOEP
+C1FB;C1FB;1109 116C 11C2;C1FB;1109 116C 11C2; # (쇻; 쇻; 쇻; 쇻; 쇻; ) HANGUL SYLLABLE SOEH
+C1FC;C1FC;1109 116D;C1FC;1109 116D; # (쇼; 쇼; 쇼; 쇼; 쇼; ) HANGUL SYLLABLE SYO
+C1FD;C1FD;1109 116D 11A8;C1FD;1109 116D 11A8; # (쇽; 쇽; 쇽; 쇽; 쇽; ) HANGUL SYLLABLE SYOG
+C1FE;C1FE;1109 116D 11A9;C1FE;1109 116D 11A9; # (쇾; 쇾; 쇾; 쇾; 쇾; ) HANGUL SYLLABLE SYOGG
+C1FF;C1FF;1109 116D 11AA;C1FF;1109 116D 11AA; # (쇿; 쇿; 쇿; 쇿; 쇿; ) HANGUL SYLLABLE SYOGS
+C200;C200;1109 116D 11AB;C200;1109 116D 11AB; # (숀; 숀; 숀; 숀; 숀; ) HANGUL SYLLABLE SYON
+C201;C201;1109 116D 11AC;C201;1109 116D 11AC; # (ìˆ; ìˆ; 숁; ìˆ; 숁; ) HANGUL SYLLABLE SYONJ
+C202;C202;1109 116D 11AD;C202;1109 116D 11AD; # (숂; 숂; 숂; 숂; 숂; ) HANGUL SYLLABLE SYONH
+C203;C203;1109 116D 11AE;C203;1109 116D 11AE; # (숃; 숃; 숃; 숃; 숃; ) HANGUL SYLLABLE SYOD
+C204;C204;1109 116D 11AF;C204;1109 116D 11AF; # (숄; 숄; 숄; 숄; 숄; ) HANGUL SYLLABLE SYOL
+C205;C205;1109 116D 11B0;C205;1109 116D 11B0; # (숅; 숅; 숅; 숅; 숅; ) HANGUL SYLLABLE SYOLG
+C206;C206;1109 116D 11B1;C206;1109 116D 11B1; # (숆; 숆; 숆; 숆; 숆; ) HANGUL SYLLABLE SYOLM
+C207;C207;1109 116D 11B2;C207;1109 116D 11B2; # (숇; 숇; 숇; 숇; 숇; ) HANGUL SYLLABLE SYOLB
+C208;C208;1109 116D 11B3;C208;1109 116D 11B3; # (숈; 숈; 숈; 숈; 숈; ) HANGUL SYLLABLE SYOLS
+C209;C209;1109 116D 11B4;C209;1109 116D 11B4; # (숉; 숉; 숉; 숉; 숉; ) HANGUL SYLLABLE SYOLT
+C20A;C20A;1109 116D 11B5;C20A;1109 116D 11B5; # (숊; 숊; 숊; 숊; 숊; ) HANGUL SYLLABLE SYOLP
+C20B;C20B;1109 116D 11B6;C20B;1109 116D 11B6; # (숋; 숋; 숋; 숋; 숋; ) HANGUL SYLLABLE SYOLH
+C20C;C20C;1109 116D 11B7;C20C;1109 116D 11B7; # (숌; 숌; 숌; 숌; 숌; ) HANGUL SYLLABLE SYOM
+C20D;C20D;1109 116D 11B8;C20D;1109 116D 11B8; # (ìˆ; ìˆ; 숍; ìˆ; 숍; ) HANGUL SYLLABLE SYOB
+C20E;C20E;1109 116D 11B9;C20E;1109 116D 11B9; # (숎; 숎; 숎; 숎; 숎; ) HANGUL SYLLABLE SYOBS
+C20F;C20F;1109 116D 11BA;C20F;1109 116D 11BA; # (ìˆ; ìˆ; 숏; ìˆ; 숏; ) HANGUL SYLLABLE SYOS
+C210;C210;1109 116D 11BB;C210;1109 116D 11BB; # (ìˆ; ìˆ; 숐; ìˆ; 숐; ) HANGUL SYLLABLE SYOSS
+C211;C211;1109 116D 11BC;C211;1109 116D 11BC; # (숑; 숑; 숑; 숑; 숑; ) HANGUL SYLLABLE SYONG
+C212;C212;1109 116D 11BD;C212;1109 116D 11BD; # (숒; 숒; 숒; 숒; 숒; ) HANGUL SYLLABLE SYOJ
+C213;C213;1109 116D 11BE;C213;1109 116D 11BE; # (숓; 숓; 숓; 숓; 숓; ) HANGUL SYLLABLE SYOC
+C214;C214;1109 116D 11BF;C214;1109 116D 11BF; # (숔; 숔; 숔; 숔; 숔; ) HANGUL SYLLABLE SYOK
+C215;C215;1109 116D 11C0;C215;1109 116D 11C0; # (숕; 숕; 숕; 숕; 숕; ) HANGUL SYLLABLE SYOT
+C216;C216;1109 116D 11C1;C216;1109 116D 11C1; # (숖; 숖; 쇼á‡; 숖; 쇼á‡; ) HANGUL SYLLABLE SYOP
+C217;C217;1109 116D 11C2;C217;1109 116D 11C2; # (숗; 숗; 숗; 숗; 숗; ) HANGUL SYLLABLE SYOH
+C218;C218;1109 116E;C218;1109 116E; # (수; 수; 수; 수; 수; ) HANGUL SYLLABLE SU
+C219;C219;1109 116E 11A8;C219;1109 116E 11A8; # (숙; 숙; 숙; 숙; 숙; ) HANGUL SYLLABLE SUG
+C21A;C21A;1109 116E 11A9;C21A;1109 116E 11A9; # (숚; 숚; 숚; 숚; 숚; ) HANGUL SYLLABLE SUGG
+C21B;C21B;1109 116E 11AA;C21B;1109 116E 11AA; # (숛; 숛; 숛; 숛; 숛; ) HANGUL SYLLABLE SUGS
+C21C;C21C;1109 116E 11AB;C21C;1109 116E 11AB; # (순; 순; 순; 순; 순; ) HANGUL SYLLABLE SUN
+C21D;C21D;1109 116E 11AC;C21D;1109 116E 11AC; # (ìˆ; ìˆ; 숝; ìˆ; 숝; ) HANGUL SYLLABLE SUNJ
+C21E;C21E;1109 116E 11AD;C21E;1109 116E 11AD; # (숞; 숞; 숞; 숞; 숞; ) HANGUL SYLLABLE SUNH
+C21F;C21F;1109 116E 11AE;C21F;1109 116E 11AE; # (숟; 숟; 숟; 숟; 숟; ) HANGUL SYLLABLE SUD
+C220;C220;1109 116E 11AF;C220;1109 116E 11AF; # (술; 술; 술; 술; 술; ) HANGUL SYLLABLE SUL
+C221;C221;1109 116E 11B0;C221;1109 116E 11B0; # (숡; 숡; 숡; 숡; 숡; ) HANGUL SYLLABLE SULG
+C222;C222;1109 116E 11B1;C222;1109 116E 11B1; # (숢; 숢; 숢; 숢; 숢; ) HANGUL SYLLABLE SULM
+C223;C223;1109 116E 11B2;C223;1109 116E 11B2; # (숣; 숣; 숣; 숣; 숣; ) HANGUL SYLLABLE SULB
+C224;C224;1109 116E 11B3;C224;1109 116E 11B3; # (숤; 숤; 숤; 숤; 숤; ) HANGUL SYLLABLE SULS
+C225;C225;1109 116E 11B4;C225;1109 116E 11B4; # (숥; 숥; 숥; 숥; 숥; ) HANGUL SYLLABLE SULT
+C226;C226;1109 116E 11B5;C226;1109 116E 11B5; # (숦; 숦; 숦; 숦; 숦; ) HANGUL SYLLABLE SULP
+C227;C227;1109 116E 11B6;C227;1109 116E 11B6; # (숧; 숧; 숧; 숧; 숧; ) HANGUL SYLLABLE SULH
+C228;C228;1109 116E 11B7;C228;1109 116E 11B7; # (숨; 숨; 숨; 숨; 숨; ) HANGUL SYLLABLE SUM
+C229;C229;1109 116E 11B8;C229;1109 116E 11B8; # (숩; 숩; 숩; 숩; 숩; ) HANGUL SYLLABLE SUB
+C22A;C22A;1109 116E 11B9;C22A;1109 116E 11B9; # (숪; 숪; 숪; 숪; 숪; ) HANGUL SYLLABLE SUBS
+C22B;C22B;1109 116E 11BA;C22B;1109 116E 11BA; # (숫; 숫; 숫; 숫; 숫; ) HANGUL SYLLABLE SUS
+C22C;C22C;1109 116E 11BB;C22C;1109 116E 11BB; # (숬; 숬; 숬; 숬; 숬; ) HANGUL SYLLABLE SUSS
+C22D;C22D;1109 116E 11BC;C22D;1109 116E 11BC; # (숭; 숭; 숭; 숭; 숭; ) HANGUL SYLLABLE SUNG
+C22E;C22E;1109 116E 11BD;C22E;1109 116E 11BD; # (숮; 숮; 숮; 숮; 숮; ) HANGUL SYLLABLE SUJ
+C22F;C22F;1109 116E 11BE;C22F;1109 116E 11BE; # (숯; 숯; 숯; 숯; 숯; ) HANGUL SYLLABLE SUC
+C230;C230;1109 116E 11BF;C230;1109 116E 11BF; # (숰; 숰; 숰; 숰; 숰; ) HANGUL SYLLABLE SUK
+C231;C231;1109 116E 11C0;C231;1109 116E 11C0; # (숱; 숱; 숱; 숱; 숱; ) HANGUL SYLLABLE SUT
+C232;C232;1109 116E 11C1;C232;1109 116E 11C1; # (숲; 숲; 수á‡; 숲; 수á‡; ) HANGUL SYLLABLE SUP
+C233;C233;1109 116E 11C2;C233;1109 116E 11C2; # (숳; 숳; 숳; 숳; 숳; ) HANGUL SYLLABLE SUH
+C234;C234;1109 116F;C234;1109 116F; # (숴; 숴; 숴; 숴; 숴; ) HANGUL SYLLABLE SWEO
+C235;C235;1109 116F 11A8;C235;1109 116F 11A8; # (숵; 숵; 숵; 숵; 숵; ) HANGUL SYLLABLE SWEOG
+C236;C236;1109 116F 11A9;C236;1109 116F 11A9; # (숶; 숶; 숶; 숶; 숶; ) HANGUL SYLLABLE SWEOGG
+C237;C237;1109 116F 11AA;C237;1109 116F 11AA; # (숷; 숷; 숷; 숷; 숷; ) HANGUL SYLLABLE SWEOGS
+C238;C238;1109 116F 11AB;C238;1109 116F 11AB; # (숸; 숸; 숸; 숸; 숸; ) HANGUL SYLLABLE SWEON
+C239;C239;1109 116F 11AC;C239;1109 116F 11AC; # (숹; 숹; 숹; 숹; 숹; ) HANGUL SYLLABLE SWEONJ
+C23A;C23A;1109 116F 11AD;C23A;1109 116F 11AD; # (숺; 숺; 숺; 숺; 숺; ) HANGUL SYLLABLE SWEONH
+C23B;C23B;1109 116F 11AE;C23B;1109 116F 11AE; # (숻; 숻; 숻; 숻; 숻; ) HANGUL SYLLABLE SWEOD
+C23C;C23C;1109 116F 11AF;C23C;1109 116F 11AF; # (숼; 숼; 숼; 숼; 숼; ) HANGUL SYLLABLE SWEOL
+C23D;C23D;1109 116F 11B0;C23D;1109 116F 11B0; # (숽; 숽; 숽; 숽; 숽; ) HANGUL SYLLABLE SWEOLG
+C23E;C23E;1109 116F 11B1;C23E;1109 116F 11B1; # (숾; 숾; 숾; 숾; 숾; ) HANGUL SYLLABLE SWEOLM
+C23F;C23F;1109 116F 11B2;C23F;1109 116F 11B2; # (숿; 숿; 숿; 숿; 숿; ) HANGUL SYLLABLE SWEOLB
+C240;C240;1109 116F 11B3;C240;1109 116F 11B3; # (쉀; 쉀; 쉀; 쉀; 쉀; ) HANGUL SYLLABLE SWEOLS
+C241;C241;1109 116F 11B4;C241;1109 116F 11B4; # (ì‰; ì‰; 쉁; ì‰; 쉁; ) HANGUL SYLLABLE SWEOLT
+C242;C242;1109 116F 11B5;C242;1109 116F 11B5; # (쉂; 쉂; 쉂; 쉂; 쉂; ) HANGUL SYLLABLE SWEOLP
+C243;C243;1109 116F 11B6;C243;1109 116F 11B6; # (쉃; 쉃; 쉃; 쉃; 쉃; ) HANGUL SYLLABLE SWEOLH
+C244;C244;1109 116F 11B7;C244;1109 116F 11B7; # (쉄; 쉄; 쉄; 쉄; 쉄; ) HANGUL SYLLABLE SWEOM
+C245;C245;1109 116F 11B8;C245;1109 116F 11B8; # (쉅; 쉅; 쉅; 쉅; 쉅; ) HANGUL SYLLABLE SWEOB
+C246;C246;1109 116F 11B9;C246;1109 116F 11B9; # (쉆; 쉆; 쉆; 쉆; 쉆; ) HANGUL SYLLABLE SWEOBS
+C247;C247;1109 116F 11BA;C247;1109 116F 11BA; # (쉇; 쉇; 쉇; 쉇; 쉇; ) HANGUL SYLLABLE SWEOS
+C248;C248;1109 116F 11BB;C248;1109 116F 11BB; # (쉈; 쉈; 쉈; 쉈; 쉈; ) HANGUL SYLLABLE SWEOSS
+C249;C249;1109 116F 11BC;C249;1109 116F 11BC; # (쉉; 쉉; 쉉; 쉉; 쉉; ) HANGUL SYLLABLE SWEONG
+C24A;C24A;1109 116F 11BD;C24A;1109 116F 11BD; # (쉊; 쉊; 쉊; 쉊; 쉊; ) HANGUL SYLLABLE SWEOJ
+C24B;C24B;1109 116F 11BE;C24B;1109 116F 11BE; # (쉋; 쉋; 쉋; 쉋; 쉋; ) HANGUL SYLLABLE SWEOC
+C24C;C24C;1109 116F 11BF;C24C;1109 116F 11BF; # (쉌; 쉌; 쉌; 쉌; 쉌; ) HANGUL SYLLABLE SWEOK
+C24D;C24D;1109 116F 11C0;C24D;1109 116F 11C0; # (ì‰; ì‰; 쉍; ì‰; 쉍; ) HANGUL SYLLABLE SWEOT
+C24E;C24E;1109 116F 11C1;C24E;1109 116F 11C1; # (쉎; 쉎; 숴á‡; 쉎; 숴á‡; ) HANGUL SYLLABLE SWEOP
+C24F;C24F;1109 116F 11C2;C24F;1109 116F 11C2; # (ì‰; ì‰; 쉏; ì‰; 쉏; ) HANGUL SYLLABLE SWEOH
+C250;C250;1109 1170;C250;1109 1170; # (ì‰; ì‰; 쉐; ì‰; 쉐; ) HANGUL SYLLABLE SWE
+C251;C251;1109 1170 11A8;C251;1109 1170 11A8; # (쉑; 쉑; 쉑; 쉑; 쉑; ) HANGUL SYLLABLE SWEG
+C252;C252;1109 1170 11A9;C252;1109 1170 11A9; # (쉒; 쉒; 쉒; 쉒; 쉒; ) HANGUL SYLLABLE SWEGG
+C253;C253;1109 1170 11AA;C253;1109 1170 11AA; # (쉓; 쉓; 쉓; 쉓; 쉓; ) HANGUL SYLLABLE SWEGS
+C254;C254;1109 1170 11AB;C254;1109 1170 11AB; # (쉔; 쉔; 쉔; 쉔; 쉔; ) HANGUL SYLLABLE SWEN
+C255;C255;1109 1170 11AC;C255;1109 1170 11AC; # (쉕; 쉕; 쉕; 쉕; 쉕; ) HANGUL SYLLABLE SWENJ
+C256;C256;1109 1170 11AD;C256;1109 1170 11AD; # (쉖; 쉖; 쉖; 쉖; 쉖; ) HANGUL SYLLABLE SWENH
+C257;C257;1109 1170 11AE;C257;1109 1170 11AE; # (쉗; 쉗; 쉗; 쉗; 쉗; ) HANGUL SYLLABLE SWED
+C258;C258;1109 1170 11AF;C258;1109 1170 11AF; # (쉘; 쉘; 쉘; 쉘; 쉘; ) HANGUL SYLLABLE SWEL
+C259;C259;1109 1170 11B0;C259;1109 1170 11B0; # (쉙; 쉙; 쉙; 쉙; 쉙; ) HANGUL SYLLABLE SWELG
+C25A;C25A;1109 1170 11B1;C25A;1109 1170 11B1; # (쉚; 쉚; 쉚; 쉚; 쉚; ) HANGUL SYLLABLE SWELM
+C25B;C25B;1109 1170 11B2;C25B;1109 1170 11B2; # (쉛; 쉛; 쉛; 쉛; 쉛; ) HANGUL SYLLABLE SWELB
+C25C;C25C;1109 1170 11B3;C25C;1109 1170 11B3; # (쉜; 쉜; 쉜; 쉜; 쉜; ) HANGUL SYLLABLE SWELS
+C25D;C25D;1109 1170 11B4;C25D;1109 1170 11B4; # (ì‰; ì‰; 쉝; ì‰; 쉝; ) HANGUL SYLLABLE SWELT
+C25E;C25E;1109 1170 11B5;C25E;1109 1170 11B5; # (쉞; 쉞; 쉞; 쉞; 쉞; ) HANGUL SYLLABLE SWELP
+C25F;C25F;1109 1170 11B6;C25F;1109 1170 11B6; # (쉟; 쉟; 쉟; 쉟; 쉟; ) HANGUL SYLLABLE SWELH
+C260;C260;1109 1170 11B7;C260;1109 1170 11B7; # (쉠; 쉠; 쉠; 쉠; 쉠; ) HANGUL SYLLABLE SWEM
+C261;C261;1109 1170 11B8;C261;1109 1170 11B8; # (쉡; 쉡; 쉡; 쉡; 쉡; ) HANGUL SYLLABLE SWEB
+C262;C262;1109 1170 11B9;C262;1109 1170 11B9; # (쉢; 쉢; 쉢; 쉢; 쉢; ) HANGUL SYLLABLE SWEBS
+C263;C263;1109 1170 11BA;C263;1109 1170 11BA; # (쉣; 쉣; 쉣; 쉣; 쉣; ) HANGUL SYLLABLE SWES
+C264;C264;1109 1170 11BB;C264;1109 1170 11BB; # (쉤; 쉤; 쉤; 쉤; 쉤; ) HANGUL SYLLABLE SWESS
+C265;C265;1109 1170 11BC;C265;1109 1170 11BC; # (쉥; 쉥; 쉥; 쉥; 쉥; ) HANGUL SYLLABLE SWENG
+C266;C266;1109 1170 11BD;C266;1109 1170 11BD; # (쉦; 쉦; 쉦; 쉦; 쉦; ) HANGUL SYLLABLE SWEJ
+C267;C267;1109 1170 11BE;C267;1109 1170 11BE; # (쉧; 쉧; 쉧; 쉧; 쉧; ) HANGUL SYLLABLE SWEC
+C268;C268;1109 1170 11BF;C268;1109 1170 11BF; # (쉨; 쉨; 쉨; 쉨; 쉨; ) HANGUL SYLLABLE SWEK
+C269;C269;1109 1170 11C0;C269;1109 1170 11C0; # (쉩; 쉩; 쉩; 쉩; 쉩; ) HANGUL SYLLABLE SWET
+C26A;C26A;1109 1170 11C1;C26A;1109 1170 11C1; # (쉪; 쉪; 쉐á‡; 쉪; 쉐á‡; ) HANGUL SYLLABLE SWEP
+C26B;C26B;1109 1170 11C2;C26B;1109 1170 11C2; # (쉫; 쉫; 쉫; 쉫; 쉫; ) HANGUL SYLLABLE SWEH
+C26C;C26C;1109 1171;C26C;1109 1171; # (쉬; 쉬; 쉬; 쉬; 쉬; ) HANGUL SYLLABLE SWI
+C26D;C26D;1109 1171 11A8;C26D;1109 1171 11A8; # (쉭; 쉭; 쉭; 쉭; 쉭; ) HANGUL SYLLABLE SWIG
+C26E;C26E;1109 1171 11A9;C26E;1109 1171 11A9; # (쉮; 쉮; 쉮; 쉮; 쉮; ) HANGUL SYLLABLE SWIGG
+C26F;C26F;1109 1171 11AA;C26F;1109 1171 11AA; # (쉯; 쉯; 쉯; 쉯; 쉯; ) HANGUL SYLLABLE SWIGS
+C270;C270;1109 1171 11AB;C270;1109 1171 11AB; # (쉰; 쉰; 쉰; 쉰; 쉰; ) HANGUL SYLLABLE SWIN
+C271;C271;1109 1171 11AC;C271;1109 1171 11AC; # (쉱; 쉱; 쉱; 쉱; 쉱; ) HANGUL SYLLABLE SWINJ
+C272;C272;1109 1171 11AD;C272;1109 1171 11AD; # (쉲; 쉲; 쉲; 쉲; 쉲; ) HANGUL SYLLABLE SWINH
+C273;C273;1109 1171 11AE;C273;1109 1171 11AE; # (쉳; 쉳; 쉳; 쉳; 쉳; ) HANGUL SYLLABLE SWID
+C274;C274;1109 1171 11AF;C274;1109 1171 11AF; # (쉴; 쉴; 쉴; 쉴; 쉴; ) HANGUL SYLLABLE SWIL
+C275;C275;1109 1171 11B0;C275;1109 1171 11B0; # (쉵; 쉵; 쉵; 쉵; 쉵; ) HANGUL SYLLABLE SWILG
+C276;C276;1109 1171 11B1;C276;1109 1171 11B1; # (쉶; 쉶; 쉶; 쉶; 쉶; ) HANGUL SYLLABLE SWILM
+C277;C277;1109 1171 11B2;C277;1109 1171 11B2; # (쉷; 쉷; 쉷; 쉷; 쉷; ) HANGUL SYLLABLE SWILB
+C278;C278;1109 1171 11B3;C278;1109 1171 11B3; # (쉸; 쉸; 쉸; 쉸; 쉸; ) HANGUL SYLLABLE SWILS
+C279;C279;1109 1171 11B4;C279;1109 1171 11B4; # (쉹; 쉹; 쉹; 쉹; 쉹; ) HANGUL SYLLABLE SWILT
+C27A;C27A;1109 1171 11B5;C27A;1109 1171 11B5; # (쉺; 쉺; 쉺; 쉺; 쉺; ) HANGUL SYLLABLE SWILP
+C27B;C27B;1109 1171 11B6;C27B;1109 1171 11B6; # (쉻; 쉻; 쉻; 쉻; 쉻; ) HANGUL SYLLABLE SWILH
+C27C;C27C;1109 1171 11B7;C27C;1109 1171 11B7; # (쉼; 쉼; 쉼; 쉼; 쉼; ) HANGUL SYLLABLE SWIM
+C27D;C27D;1109 1171 11B8;C27D;1109 1171 11B8; # (쉽; 쉽; 쉽; 쉽; 쉽; ) HANGUL SYLLABLE SWIB
+C27E;C27E;1109 1171 11B9;C27E;1109 1171 11B9; # (쉾; 쉾; 쉾; 쉾; 쉾; ) HANGUL SYLLABLE SWIBS
+C27F;C27F;1109 1171 11BA;C27F;1109 1171 11BA; # (쉿; 쉿; 쉿; 쉿; 쉿; ) HANGUL SYLLABLE SWIS
+C280;C280;1109 1171 11BB;C280;1109 1171 11BB; # (슀; 슀; 슀; 슀; 슀; ) HANGUL SYLLABLE SWISS
+C281;C281;1109 1171 11BC;C281;1109 1171 11BC; # (ìŠ; ìŠ; 슁; ìŠ; 슁; ) HANGUL SYLLABLE SWING
+C282;C282;1109 1171 11BD;C282;1109 1171 11BD; # (슂; 슂; 슂; 슂; 슂; ) HANGUL SYLLABLE SWIJ
+C283;C283;1109 1171 11BE;C283;1109 1171 11BE; # (슃; 슃; 슃; 슃; 슃; ) HANGUL SYLLABLE SWIC
+C284;C284;1109 1171 11BF;C284;1109 1171 11BF; # (슄; 슄; 슄; 슄; 슄; ) HANGUL SYLLABLE SWIK
+C285;C285;1109 1171 11C0;C285;1109 1171 11C0; # (슅; 슅; 슅; 슅; 슅; ) HANGUL SYLLABLE SWIT
+C286;C286;1109 1171 11C1;C286;1109 1171 11C1; # (슆; 슆; 쉬á‡; 슆; 쉬á‡; ) HANGUL SYLLABLE SWIP
+C287;C287;1109 1171 11C2;C287;1109 1171 11C2; # (슇; 슇; 슇; 슇; 슇; ) HANGUL SYLLABLE SWIH
+C288;C288;1109 1172;C288;1109 1172; # (슈; 슈; 슈; 슈; 슈; ) HANGUL SYLLABLE SYU
+C289;C289;1109 1172 11A8;C289;1109 1172 11A8; # (슉; 슉; 슉; 슉; 슉; ) HANGUL SYLLABLE SYUG
+C28A;C28A;1109 1172 11A9;C28A;1109 1172 11A9; # (슊; 슊; 슊; 슊; 슊; ) HANGUL SYLLABLE SYUGG
+C28B;C28B;1109 1172 11AA;C28B;1109 1172 11AA; # (슋; 슋; 슋; 슋; 슋; ) HANGUL SYLLABLE SYUGS
+C28C;C28C;1109 1172 11AB;C28C;1109 1172 11AB; # (슌; 슌; 슌; 슌; 슌; ) HANGUL SYLLABLE SYUN
+C28D;C28D;1109 1172 11AC;C28D;1109 1172 11AC; # (ìŠ; ìŠ; 슍; ìŠ; 슍; ) HANGUL SYLLABLE SYUNJ
+C28E;C28E;1109 1172 11AD;C28E;1109 1172 11AD; # (슎; 슎; 슎; 슎; 슎; ) HANGUL SYLLABLE SYUNH
+C28F;C28F;1109 1172 11AE;C28F;1109 1172 11AE; # (ìŠ; ìŠ; 슏; ìŠ; 슏; ) HANGUL SYLLABLE SYUD
+C290;C290;1109 1172 11AF;C290;1109 1172 11AF; # (ìŠ; ìŠ; 슐; ìŠ; 슐; ) HANGUL SYLLABLE SYUL
+C291;C291;1109 1172 11B0;C291;1109 1172 11B0; # (슑; 슑; 슑; 슑; 슑; ) HANGUL SYLLABLE SYULG
+C292;C292;1109 1172 11B1;C292;1109 1172 11B1; # (슒; 슒; 슒; 슒; 슒; ) HANGUL SYLLABLE SYULM
+C293;C293;1109 1172 11B2;C293;1109 1172 11B2; # (슓; 슓; 슓; 슓; 슓; ) HANGUL SYLLABLE SYULB
+C294;C294;1109 1172 11B3;C294;1109 1172 11B3; # (슔; 슔; 슔; 슔; 슔; ) HANGUL SYLLABLE SYULS
+C295;C295;1109 1172 11B4;C295;1109 1172 11B4; # (슕; 슕; 슕; 슕; 슕; ) HANGUL SYLLABLE SYULT
+C296;C296;1109 1172 11B5;C296;1109 1172 11B5; # (슖; 슖; 슖; 슖; 슖; ) HANGUL SYLLABLE SYULP
+C297;C297;1109 1172 11B6;C297;1109 1172 11B6; # (슗; 슗; 슗; 슗; 슗; ) HANGUL SYLLABLE SYULH
+C298;C298;1109 1172 11B7;C298;1109 1172 11B7; # (슘; 슘; 슘; 슘; 슘; ) HANGUL SYLLABLE SYUM
+C299;C299;1109 1172 11B8;C299;1109 1172 11B8; # (슙; 슙; 슙; 슙; 슙; ) HANGUL SYLLABLE SYUB
+C29A;C29A;1109 1172 11B9;C29A;1109 1172 11B9; # (슚; 슚; 슚; 슚; 슚; ) HANGUL SYLLABLE SYUBS
+C29B;C29B;1109 1172 11BA;C29B;1109 1172 11BA; # (슛; 슛; 슛; 슛; 슛; ) HANGUL SYLLABLE SYUS
+C29C;C29C;1109 1172 11BB;C29C;1109 1172 11BB; # (슜; 슜; 슜; 슜; 슜; ) HANGUL SYLLABLE SYUSS
+C29D;C29D;1109 1172 11BC;C29D;1109 1172 11BC; # (ìŠ; ìŠ; 슝; ìŠ; 슝; ) HANGUL SYLLABLE SYUNG
+C29E;C29E;1109 1172 11BD;C29E;1109 1172 11BD; # (슞; 슞; 슞; 슞; 슞; ) HANGUL SYLLABLE SYUJ
+C29F;C29F;1109 1172 11BE;C29F;1109 1172 11BE; # (슟; 슟; 슟; 슟; 슟; ) HANGUL SYLLABLE SYUC
+C2A0;C2A0;1109 1172 11BF;C2A0;1109 1172 11BF; # (슠; 슠; 슠; 슠; 슠; ) HANGUL SYLLABLE SYUK
+C2A1;C2A1;1109 1172 11C0;C2A1;1109 1172 11C0; # (슡; 슡; 슡; 슡; 슡; ) HANGUL SYLLABLE SYUT
+C2A2;C2A2;1109 1172 11C1;C2A2;1109 1172 11C1; # (슢; 슢; 슈á‡; 슢; 슈á‡; ) HANGUL SYLLABLE SYUP
+C2A3;C2A3;1109 1172 11C2;C2A3;1109 1172 11C2; # (슣; 슣; 슣; 슣; 슣; ) HANGUL SYLLABLE SYUH
+C2A4;C2A4;1109 1173;C2A4;1109 1173; # (스; 스; 스; 스; 스; ) HANGUL SYLLABLE SEU
+C2A5;C2A5;1109 1173 11A8;C2A5;1109 1173 11A8; # (슥; 슥; 슥; 슥; 슥; ) HANGUL SYLLABLE SEUG
+C2A6;C2A6;1109 1173 11A9;C2A6;1109 1173 11A9; # (슦; 슦; 슦; 슦; 슦; ) HANGUL SYLLABLE SEUGG
+C2A7;C2A7;1109 1173 11AA;C2A7;1109 1173 11AA; # (슧; 슧; 슧; 슧; 슧; ) HANGUL SYLLABLE SEUGS
+C2A8;C2A8;1109 1173 11AB;C2A8;1109 1173 11AB; # (슨; 슨; 슨; 슨; 슨; ) HANGUL SYLLABLE SEUN
+C2A9;C2A9;1109 1173 11AC;C2A9;1109 1173 11AC; # (슩; 슩; 슩; 슩; 슩; ) HANGUL SYLLABLE SEUNJ
+C2AA;C2AA;1109 1173 11AD;C2AA;1109 1173 11AD; # (슪; 슪; 슪; 슪; 슪; ) HANGUL SYLLABLE SEUNH
+C2AB;C2AB;1109 1173 11AE;C2AB;1109 1173 11AE; # (슫; 슫; 슫; 슫; 슫; ) HANGUL SYLLABLE SEUD
+C2AC;C2AC;1109 1173 11AF;C2AC;1109 1173 11AF; # (슬; 슬; 슬; 슬; 슬; ) HANGUL SYLLABLE SEUL
+C2AD;C2AD;1109 1173 11B0;C2AD;1109 1173 11B0; # (슭; 슭; 슭; 슭; 슭; ) HANGUL SYLLABLE SEULG
+C2AE;C2AE;1109 1173 11B1;C2AE;1109 1173 11B1; # (슮; 슮; 슮; 슮; 슮; ) HANGUL SYLLABLE SEULM
+C2AF;C2AF;1109 1173 11B2;C2AF;1109 1173 11B2; # (슯; 슯; 슯; 슯; 슯; ) HANGUL SYLLABLE SEULB
+C2B0;C2B0;1109 1173 11B3;C2B0;1109 1173 11B3; # (슰; 슰; 슰; 슰; 슰; ) HANGUL SYLLABLE SEULS
+C2B1;C2B1;1109 1173 11B4;C2B1;1109 1173 11B4; # (슱; 슱; 슱; 슱; 슱; ) HANGUL SYLLABLE SEULT
+C2B2;C2B2;1109 1173 11B5;C2B2;1109 1173 11B5; # (슲; 슲; 슲; 슲; 슲; ) HANGUL SYLLABLE SEULP
+C2B3;C2B3;1109 1173 11B6;C2B3;1109 1173 11B6; # (슳; 슳; 슳; 슳; 슳; ) HANGUL SYLLABLE SEULH
+C2B4;C2B4;1109 1173 11B7;C2B4;1109 1173 11B7; # (슴; 슴; 슴; 슴; 슴; ) HANGUL SYLLABLE SEUM
+C2B5;C2B5;1109 1173 11B8;C2B5;1109 1173 11B8; # (습; 습; 습; 습; 습; ) HANGUL SYLLABLE SEUB
+C2B6;C2B6;1109 1173 11B9;C2B6;1109 1173 11B9; # (슶; 슶; 슶; 슶; 슶; ) HANGUL SYLLABLE SEUBS
+C2B7;C2B7;1109 1173 11BA;C2B7;1109 1173 11BA; # (슷; 슷; 슷; 슷; 슷; ) HANGUL SYLLABLE SEUS
+C2B8;C2B8;1109 1173 11BB;C2B8;1109 1173 11BB; # (슸; 슸; 슸; 슸; 슸; ) HANGUL SYLLABLE SEUSS
+C2B9;C2B9;1109 1173 11BC;C2B9;1109 1173 11BC; # (승; 승; 승; 승; 승; ) HANGUL SYLLABLE SEUNG
+C2BA;C2BA;1109 1173 11BD;C2BA;1109 1173 11BD; # (슺; 슺; 슺; 슺; 슺; ) HANGUL SYLLABLE SEUJ
+C2BB;C2BB;1109 1173 11BE;C2BB;1109 1173 11BE; # (슻; 슻; 슻; 슻; 슻; ) HANGUL SYLLABLE SEUC
+C2BC;C2BC;1109 1173 11BF;C2BC;1109 1173 11BF; # (슼; 슼; 슼; 슼; 슼; ) HANGUL SYLLABLE SEUK
+C2BD;C2BD;1109 1173 11C0;C2BD;1109 1173 11C0; # (슽; 슽; 슽; 슽; 슽; ) HANGUL SYLLABLE SEUT
+C2BE;C2BE;1109 1173 11C1;C2BE;1109 1173 11C1; # (슾; 슾; 스á‡; 슾; 스á‡; ) HANGUL SYLLABLE SEUP
+C2BF;C2BF;1109 1173 11C2;C2BF;1109 1173 11C2; # (슿; 슿; 슿; 슿; 슿; ) HANGUL SYLLABLE SEUH
+C2C0;C2C0;1109 1174;C2C0;1109 1174; # (싀; 싀; 싀; 싀; 싀; ) HANGUL SYLLABLE SYI
+C2C1;C2C1;1109 1174 11A8;C2C1;1109 1174 11A8; # (ì‹; ì‹; 싁; ì‹; 싁; ) HANGUL SYLLABLE SYIG
+C2C2;C2C2;1109 1174 11A9;C2C2;1109 1174 11A9; # (싂; 싂; 싂; 싂; 싂; ) HANGUL SYLLABLE SYIGG
+C2C3;C2C3;1109 1174 11AA;C2C3;1109 1174 11AA; # (싃; 싃; 싃; 싃; 싃; ) HANGUL SYLLABLE SYIGS
+C2C4;C2C4;1109 1174 11AB;C2C4;1109 1174 11AB; # (싄; 싄; 싄; 싄; 싄; ) HANGUL SYLLABLE SYIN
+C2C5;C2C5;1109 1174 11AC;C2C5;1109 1174 11AC; # (싅; 싅; 싅; 싅; 싅; ) HANGUL SYLLABLE SYINJ
+C2C6;C2C6;1109 1174 11AD;C2C6;1109 1174 11AD; # (싆; 싆; 싆; 싆; 싆; ) HANGUL SYLLABLE SYINH
+C2C7;C2C7;1109 1174 11AE;C2C7;1109 1174 11AE; # (싇; 싇; 싇; 싇; 싇; ) HANGUL SYLLABLE SYID
+C2C8;C2C8;1109 1174 11AF;C2C8;1109 1174 11AF; # (싈; 싈; 싈; 싈; 싈; ) HANGUL SYLLABLE SYIL
+C2C9;C2C9;1109 1174 11B0;C2C9;1109 1174 11B0; # (싉; 싉; 싉; 싉; 싉; ) HANGUL SYLLABLE SYILG
+C2CA;C2CA;1109 1174 11B1;C2CA;1109 1174 11B1; # (싊; 싊; 싊; 싊; 싊; ) HANGUL SYLLABLE SYILM
+C2CB;C2CB;1109 1174 11B2;C2CB;1109 1174 11B2; # (싋; 싋; 싋; 싋; 싋; ) HANGUL SYLLABLE SYILB
+C2CC;C2CC;1109 1174 11B3;C2CC;1109 1174 11B3; # (싌; 싌; 싌; 싌; 싌; ) HANGUL SYLLABLE SYILS
+C2CD;C2CD;1109 1174 11B4;C2CD;1109 1174 11B4; # (ì‹; ì‹; 싍; ì‹; 싍; ) HANGUL SYLLABLE SYILT
+C2CE;C2CE;1109 1174 11B5;C2CE;1109 1174 11B5; # (싎; 싎; 싎; 싎; 싎; ) HANGUL SYLLABLE SYILP
+C2CF;C2CF;1109 1174 11B6;C2CF;1109 1174 11B6; # (ì‹; ì‹; 싏; ì‹; 싏; ) HANGUL SYLLABLE SYILH
+C2D0;C2D0;1109 1174 11B7;C2D0;1109 1174 11B7; # (ì‹; ì‹; 싐; ì‹; 싐; ) HANGUL SYLLABLE SYIM
+C2D1;C2D1;1109 1174 11B8;C2D1;1109 1174 11B8; # (싑; 싑; 싑; 싑; 싑; ) HANGUL SYLLABLE SYIB
+C2D2;C2D2;1109 1174 11B9;C2D2;1109 1174 11B9; # (싒; 싒; 싒; 싒; 싒; ) HANGUL SYLLABLE SYIBS
+C2D3;C2D3;1109 1174 11BA;C2D3;1109 1174 11BA; # (싓; 싓; 싓; 싓; 싓; ) HANGUL SYLLABLE SYIS
+C2D4;C2D4;1109 1174 11BB;C2D4;1109 1174 11BB; # (싔; 싔; 싔; 싔; 싔; ) HANGUL SYLLABLE SYISS
+C2D5;C2D5;1109 1174 11BC;C2D5;1109 1174 11BC; # (싕; 싕; 싕; 싕; 싕; ) HANGUL SYLLABLE SYING
+C2D6;C2D6;1109 1174 11BD;C2D6;1109 1174 11BD; # (싖; 싖; 싖; 싖; 싖; ) HANGUL SYLLABLE SYIJ
+C2D7;C2D7;1109 1174 11BE;C2D7;1109 1174 11BE; # (싗; 싗; 싗; 싗; 싗; ) HANGUL SYLLABLE SYIC
+C2D8;C2D8;1109 1174 11BF;C2D8;1109 1174 11BF; # (싘; 싘; 싘; 싘; 싘; ) HANGUL SYLLABLE SYIK
+C2D9;C2D9;1109 1174 11C0;C2D9;1109 1174 11C0; # (싙; 싙; 싙; 싙; 싙; ) HANGUL SYLLABLE SYIT
+C2DA;C2DA;1109 1174 11C1;C2DA;1109 1174 11C1; # (ì‹š; ì‹š; 싀á‡; ì‹š; 싀á‡; ) HANGUL SYLLABLE SYIP
+C2DB;C2DB;1109 1174 11C2;C2DB;1109 1174 11C2; # (싛; 싛; 싛; 싛; 싛; ) HANGUL SYLLABLE SYIH
+C2DC;C2DC;1109 1175;C2DC;1109 1175; # (시; 시; 시; 시; 시; ) HANGUL SYLLABLE SI
+C2DD;C2DD;1109 1175 11A8;C2DD;1109 1175 11A8; # (ì‹; ì‹; 식; ì‹; 식; ) HANGUL SYLLABLE SIG
+C2DE;C2DE;1109 1175 11A9;C2DE;1109 1175 11A9; # (싞; 싞; 싞; 싞; 싞; ) HANGUL SYLLABLE SIGG
+C2DF;C2DF;1109 1175 11AA;C2DF;1109 1175 11AA; # (싟; 싟; 싟; 싟; 싟; ) HANGUL SYLLABLE SIGS
+C2E0;C2E0;1109 1175 11AB;C2E0;1109 1175 11AB; # (신; 신; 신; 신; 신; ) HANGUL SYLLABLE SIN
+C2E1;C2E1;1109 1175 11AC;C2E1;1109 1175 11AC; # (싡; 싡; 싡; 싡; 싡; ) HANGUL SYLLABLE SINJ
+C2E2;C2E2;1109 1175 11AD;C2E2;1109 1175 11AD; # (싢; 싢; 싢; 싢; 싢; ) HANGUL SYLLABLE SINH
+C2E3;C2E3;1109 1175 11AE;C2E3;1109 1175 11AE; # (싣; 싣; 싣; 싣; 싣; ) HANGUL SYLLABLE SID
+C2E4;C2E4;1109 1175 11AF;C2E4;1109 1175 11AF; # (실; 실; 실; 실; 실; ) HANGUL SYLLABLE SIL
+C2E5;C2E5;1109 1175 11B0;C2E5;1109 1175 11B0; # (싥; 싥; 싥; 싥; 싥; ) HANGUL SYLLABLE SILG
+C2E6;C2E6;1109 1175 11B1;C2E6;1109 1175 11B1; # (싦; 싦; 싦; 싦; 싦; ) HANGUL SYLLABLE SILM
+C2E7;C2E7;1109 1175 11B2;C2E7;1109 1175 11B2; # (싧; 싧; 싧; 싧; 싧; ) HANGUL SYLLABLE SILB
+C2E8;C2E8;1109 1175 11B3;C2E8;1109 1175 11B3; # (싨; 싨; 싨; 싨; 싨; ) HANGUL SYLLABLE SILS
+C2E9;C2E9;1109 1175 11B4;C2E9;1109 1175 11B4; # (싩; 싩; 싩; 싩; 싩; ) HANGUL SYLLABLE SILT
+C2EA;C2EA;1109 1175 11B5;C2EA;1109 1175 11B5; # (싪; 싪; 싪; 싪; 싪; ) HANGUL SYLLABLE SILP
+C2EB;C2EB;1109 1175 11B6;C2EB;1109 1175 11B6; # (싫; 싫; 싫; 싫; 싫; ) HANGUL SYLLABLE SILH
+C2EC;C2EC;1109 1175 11B7;C2EC;1109 1175 11B7; # (심; 심; 심; 심; 심; ) HANGUL SYLLABLE SIM
+C2ED;C2ED;1109 1175 11B8;C2ED;1109 1175 11B8; # (십; 십; 십; 십; 십; ) HANGUL SYLLABLE SIB
+C2EE;C2EE;1109 1175 11B9;C2EE;1109 1175 11B9; # (싮; 싮; 싮; 싮; 싮; ) HANGUL SYLLABLE SIBS
+C2EF;C2EF;1109 1175 11BA;C2EF;1109 1175 11BA; # (싯; 싯; 싯; 싯; 싯; ) HANGUL SYLLABLE SIS
+C2F0;C2F0;1109 1175 11BB;C2F0;1109 1175 11BB; # (싰; 싰; 싰; 싰; 싰; ) HANGUL SYLLABLE SISS
+C2F1;C2F1;1109 1175 11BC;C2F1;1109 1175 11BC; # (싱; 싱; 싱; 싱; 싱; ) HANGUL SYLLABLE SING
+C2F2;C2F2;1109 1175 11BD;C2F2;1109 1175 11BD; # (싲; 싲; 싲; 싲; 싲; ) HANGUL SYLLABLE SIJ
+C2F3;C2F3;1109 1175 11BE;C2F3;1109 1175 11BE; # (싳; 싳; 싳; 싳; 싳; ) HANGUL SYLLABLE SIC
+C2F4;C2F4;1109 1175 11BF;C2F4;1109 1175 11BF; # (싴; 싴; 싴; 싴; 싴; ) HANGUL SYLLABLE SIK
+C2F5;C2F5;1109 1175 11C0;C2F5;1109 1175 11C0; # (싵; 싵; 싵; 싵; 싵; ) HANGUL SYLLABLE SIT
+C2F6;C2F6;1109 1175 11C1;C2F6;1109 1175 11C1; # (싶; 싶; 시á‡; 싶; 시á‡; ) HANGUL SYLLABLE SIP
+C2F7;C2F7;1109 1175 11C2;C2F7;1109 1175 11C2; # (싷; 싷; 싷; 싷; 싷; ) HANGUL SYLLABLE SIH
+C2F8;C2F8;110A 1161;C2F8;110A 1161; # (싸; 싸; 싸; 싸; 싸; ) HANGUL SYLLABLE SSA
+C2F9;C2F9;110A 1161 11A8;C2F9;110A 1161 11A8; # (싹; 싹; 싹; 싹; 싹; ) HANGUL SYLLABLE SSAG
+C2FA;C2FA;110A 1161 11A9;C2FA;110A 1161 11A9; # (싺; 싺; 싺; 싺; 싺; ) HANGUL SYLLABLE SSAGG
+C2FB;C2FB;110A 1161 11AA;C2FB;110A 1161 11AA; # (싻; 싻; 싻; 싻; 싻; ) HANGUL SYLLABLE SSAGS
+C2FC;C2FC;110A 1161 11AB;C2FC;110A 1161 11AB; # (싼; 싼; 싼; 싼; 싼; ) HANGUL SYLLABLE SSAN
+C2FD;C2FD;110A 1161 11AC;C2FD;110A 1161 11AC; # (싽; 싽; 싽; 싽; 싽; ) HANGUL SYLLABLE SSANJ
+C2FE;C2FE;110A 1161 11AD;C2FE;110A 1161 11AD; # (싾; 싾; 싾; 싾; 싾; ) HANGUL SYLLABLE SSANH
+C2FF;C2FF;110A 1161 11AE;C2FF;110A 1161 11AE; # (싿; 싿; 싿; 싿; 싿; ) HANGUL SYLLABLE SSAD
+C300;C300;110A 1161 11AF;C300;110A 1161 11AF; # (쌀; 쌀; 쌀; 쌀; 쌀; ) HANGUL SYLLABLE SSAL
+C301;C301;110A 1161 11B0;C301;110A 1161 11B0; # (ìŒ; ìŒ; 쌁; ìŒ; 쌁; ) HANGUL SYLLABLE SSALG
+C302;C302;110A 1161 11B1;C302;110A 1161 11B1; # (쌂; 쌂; 쌂; 쌂; 쌂; ) HANGUL SYLLABLE SSALM
+C303;C303;110A 1161 11B2;C303;110A 1161 11B2; # (쌃; 쌃; 쌃; 쌃; 쌃; ) HANGUL SYLLABLE SSALB
+C304;C304;110A 1161 11B3;C304;110A 1161 11B3; # (쌄; 쌄; 쌄; 쌄; 쌄; ) HANGUL SYLLABLE SSALS
+C305;C305;110A 1161 11B4;C305;110A 1161 11B4; # (쌅; 쌅; 쌅; 쌅; 쌅; ) HANGUL SYLLABLE SSALT
+C306;C306;110A 1161 11B5;C306;110A 1161 11B5; # (쌆; 쌆; 쌆; 쌆; 쌆; ) HANGUL SYLLABLE SSALP
+C307;C307;110A 1161 11B6;C307;110A 1161 11B6; # (쌇; 쌇; 쌇; 쌇; 쌇; ) HANGUL SYLLABLE SSALH
+C308;C308;110A 1161 11B7;C308;110A 1161 11B7; # (쌈; 쌈; 쌈; 쌈; 쌈; ) HANGUL SYLLABLE SSAM
+C309;C309;110A 1161 11B8;C309;110A 1161 11B8; # (쌉; 쌉; 쌉; 쌉; 쌉; ) HANGUL SYLLABLE SSAB
+C30A;C30A;110A 1161 11B9;C30A;110A 1161 11B9; # (쌊; 쌊; 쌊; 쌊; 쌊; ) HANGUL SYLLABLE SSABS
+C30B;C30B;110A 1161 11BA;C30B;110A 1161 11BA; # (쌋; 쌋; 쌋; 쌋; 쌋; ) HANGUL SYLLABLE SSAS
+C30C;C30C;110A 1161 11BB;C30C;110A 1161 11BB; # (쌌; 쌌; 쌌; 쌌; 쌌; ) HANGUL SYLLABLE SSASS
+C30D;C30D;110A 1161 11BC;C30D;110A 1161 11BC; # (ìŒ; ìŒ; 쌍; ìŒ; 쌍; ) HANGUL SYLLABLE SSANG
+C30E;C30E;110A 1161 11BD;C30E;110A 1161 11BD; # (쌎; 쌎; 쌎; 쌎; 쌎; ) HANGUL SYLLABLE SSAJ
+C30F;C30F;110A 1161 11BE;C30F;110A 1161 11BE; # (ìŒ; ìŒ; 쌏; ìŒ; 쌏; ) HANGUL SYLLABLE SSAC
+C310;C310;110A 1161 11BF;C310;110A 1161 11BF; # (ìŒ; ìŒ; 쌐; ìŒ; 쌐; ) HANGUL SYLLABLE SSAK
+C311;C311;110A 1161 11C0;C311;110A 1161 11C0; # (쌑; 쌑; 쌑; 쌑; 쌑; ) HANGUL SYLLABLE SSAT
+C312;C312;110A 1161 11C1;C312;110A 1161 11C1; # (쌒; 쌒; á„Šá…¡á‡; 쌒; á„Šá…¡á‡; ) HANGUL SYLLABLE SSAP
+C313;C313;110A 1161 11C2;C313;110A 1161 11C2; # (쌓; 쌓; 쌓; 쌓; 쌓; ) HANGUL SYLLABLE SSAH
+C314;C314;110A 1162;C314;110A 1162; # (쌔; 쌔; 쌔; 쌔; 쌔; ) HANGUL SYLLABLE SSAE
+C315;C315;110A 1162 11A8;C315;110A 1162 11A8; # (쌕; 쌕; 쌕; 쌕; 쌕; ) HANGUL SYLLABLE SSAEG
+C316;C316;110A 1162 11A9;C316;110A 1162 11A9; # (쌖; 쌖; 쌖; 쌖; 쌖; ) HANGUL SYLLABLE SSAEGG
+C317;C317;110A 1162 11AA;C317;110A 1162 11AA; # (쌗; 쌗; 쌗; 쌗; 쌗; ) HANGUL SYLLABLE SSAEGS
+C318;C318;110A 1162 11AB;C318;110A 1162 11AB; # (쌘; 쌘; 쌘; 쌘; 쌘; ) HANGUL SYLLABLE SSAEN
+C319;C319;110A 1162 11AC;C319;110A 1162 11AC; # (쌙; 쌙; 쌙; 쌙; 쌙; ) HANGUL SYLLABLE SSAENJ
+C31A;C31A;110A 1162 11AD;C31A;110A 1162 11AD; # (쌚; 쌚; 쌚; 쌚; 쌚; ) HANGUL SYLLABLE SSAENH
+C31B;C31B;110A 1162 11AE;C31B;110A 1162 11AE; # (쌛; 쌛; 쌛; 쌛; 쌛; ) HANGUL SYLLABLE SSAED
+C31C;C31C;110A 1162 11AF;C31C;110A 1162 11AF; # (쌜; 쌜; 쌜; 쌜; 쌜; ) HANGUL SYLLABLE SSAEL
+C31D;C31D;110A 1162 11B0;C31D;110A 1162 11B0; # (ìŒ; ìŒ; 쌝; ìŒ; 쌝; ) HANGUL SYLLABLE SSAELG
+C31E;C31E;110A 1162 11B1;C31E;110A 1162 11B1; # (쌞; 쌞; 쌞; 쌞; 쌞; ) HANGUL SYLLABLE SSAELM
+C31F;C31F;110A 1162 11B2;C31F;110A 1162 11B2; # (쌟; 쌟; 쌟; 쌟; 쌟; ) HANGUL SYLLABLE SSAELB
+C320;C320;110A 1162 11B3;C320;110A 1162 11B3; # (쌠; 쌠; 쌠; 쌠; 쌠; ) HANGUL SYLLABLE SSAELS
+C321;C321;110A 1162 11B4;C321;110A 1162 11B4; # (쌡; 쌡; 쌡; 쌡; 쌡; ) HANGUL SYLLABLE SSAELT
+C322;C322;110A 1162 11B5;C322;110A 1162 11B5; # (쌢; 쌢; 쌢; 쌢; 쌢; ) HANGUL SYLLABLE SSAELP
+C323;C323;110A 1162 11B6;C323;110A 1162 11B6; # (쌣; 쌣; 쌣; 쌣; 쌣; ) HANGUL SYLLABLE SSAELH
+C324;C324;110A 1162 11B7;C324;110A 1162 11B7; # (쌤; 쌤; 쌤; 쌤; 쌤; ) HANGUL SYLLABLE SSAEM
+C325;C325;110A 1162 11B8;C325;110A 1162 11B8; # (쌥; 쌥; 쌥; 쌥; 쌥; ) HANGUL SYLLABLE SSAEB
+C326;C326;110A 1162 11B9;C326;110A 1162 11B9; # (쌦; 쌦; 쌦; 쌦; 쌦; ) HANGUL SYLLABLE SSAEBS
+C327;C327;110A 1162 11BA;C327;110A 1162 11BA; # (쌧; 쌧; 쌧; 쌧; 쌧; ) HANGUL SYLLABLE SSAES
+C328;C328;110A 1162 11BB;C328;110A 1162 11BB; # (쌨; 쌨; 쌨; 쌨; 쌨; ) HANGUL SYLLABLE SSAESS
+C329;C329;110A 1162 11BC;C329;110A 1162 11BC; # (쌩; 쌩; 쌩; 쌩; 쌩; ) HANGUL SYLLABLE SSAENG
+C32A;C32A;110A 1162 11BD;C32A;110A 1162 11BD; # (쌪; 쌪; 쌪; 쌪; 쌪; ) HANGUL SYLLABLE SSAEJ
+C32B;C32B;110A 1162 11BE;C32B;110A 1162 11BE; # (쌫; 쌫; 쌫; 쌫; 쌫; ) HANGUL SYLLABLE SSAEC
+C32C;C32C;110A 1162 11BF;C32C;110A 1162 11BF; # (쌬; 쌬; 쌬; 쌬; 쌬; ) HANGUL SYLLABLE SSAEK
+C32D;C32D;110A 1162 11C0;C32D;110A 1162 11C0; # (쌭; 쌭; 쌭; 쌭; 쌭; ) HANGUL SYLLABLE SSAET
+C32E;C32E;110A 1162 11C1;C32E;110A 1162 11C1; # (쌮; 쌮; á„Šá…¢á‡; 쌮; á„Šá…¢á‡; ) HANGUL SYLLABLE SSAEP
+C32F;C32F;110A 1162 11C2;C32F;110A 1162 11C2; # (쌯; 쌯; 쌯; 쌯; 쌯; ) HANGUL SYLLABLE SSAEH
+C330;C330;110A 1163;C330;110A 1163; # (쌰; 쌰; 쌰; 쌰; 쌰; ) HANGUL SYLLABLE SSYA
+C331;C331;110A 1163 11A8;C331;110A 1163 11A8; # (쌱; 쌱; 쌱; 쌱; 쌱; ) HANGUL SYLLABLE SSYAG
+C332;C332;110A 1163 11A9;C332;110A 1163 11A9; # (쌲; 쌲; 쌲; 쌲; 쌲; ) HANGUL SYLLABLE SSYAGG
+C333;C333;110A 1163 11AA;C333;110A 1163 11AA; # (쌳; 쌳; 쌳; 쌳; 쌳; ) HANGUL SYLLABLE SSYAGS
+C334;C334;110A 1163 11AB;C334;110A 1163 11AB; # (쌴; 쌴; 쌴; 쌴; 쌴; ) HANGUL SYLLABLE SSYAN
+C335;C335;110A 1163 11AC;C335;110A 1163 11AC; # (쌵; 쌵; 쌵; 쌵; 쌵; ) HANGUL SYLLABLE SSYANJ
+C336;C336;110A 1163 11AD;C336;110A 1163 11AD; # (쌶; 쌶; 쌶; 쌶; 쌶; ) HANGUL SYLLABLE SSYANH
+C337;C337;110A 1163 11AE;C337;110A 1163 11AE; # (쌷; 쌷; 쌷; 쌷; 쌷; ) HANGUL SYLLABLE SSYAD
+C338;C338;110A 1163 11AF;C338;110A 1163 11AF; # (쌸; 쌸; 쌸; 쌸; 쌸; ) HANGUL SYLLABLE SSYAL
+C339;C339;110A 1163 11B0;C339;110A 1163 11B0; # (쌹; 쌹; 쌹; 쌹; 쌹; ) HANGUL SYLLABLE SSYALG
+C33A;C33A;110A 1163 11B1;C33A;110A 1163 11B1; # (쌺; 쌺; 쌺; 쌺; 쌺; ) HANGUL SYLLABLE SSYALM
+C33B;C33B;110A 1163 11B2;C33B;110A 1163 11B2; # (쌻; 쌻; 쌻; 쌻; 쌻; ) HANGUL SYLLABLE SSYALB
+C33C;C33C;110A 1163 11B3;C33C;110A 1163 11B3; # (쌼; 쌼; 쌼; 쌼; 쌼; ) HANGUL SYLLABLE SSYALS
+C33D;C33D;110A 1163 11B4;C33D;110A 1163 11B4; # (쌽; 쌽; 쌽; 쌽; 쌽; ) HANGUL SYLLABLE SSYALT
+C33E;C33E;110A 1163 11B5;C33E;110A 1163 11B5; # (쌾; 쌾; 쌾; 쌾; 쌾; ) HANGUL SYLLABLE SSYALP
+C33F;C33F;110A 1163 11B6;C33F;110A 1163 11B6; # (쌿; 쌿; 쌿; 쌿; 쌿; ) HANGUL SYLLABLE SSYALH
+C340;C340;110A 1163 11B7;C340;110A 1163 11B7; # (ì€; ì€; 썀; ì€; 썀; ) HANGUL SYLLABLE SSYAM
+C341;C341;110A 1163 11B8;C341;110A 1163 11B8; # (ì; ì; 썁; ì; 썁; ) HANGUL SYLLABLE SSYAB
+C342;C342;110A 1163 11B9;C342;110A 1163 11B9; # (ì‚; ì‚; 썂; ì‚; 썂; ) HANGUL SYLLABLE SSYABS
+C343;C343;110A 1163 11BA;C343;110A 1163 11BA; # (ìƒ; ìƒ; 썃; ìƒ; 썃; ) HANGUL SYLLABLE SSYAS
+C344;C344;110A 1163 11BB;C344;110A 1163 11BB; # (ì„; ì„; 썄; ì„; 썄; ) HANGUL SYLLABLE SSYASS
+C345;C345;110A 1163 11BC;C345;110A 1163 11BC; # (ì…; ì…; 썅; ì…; 썅; ) HANGUL SYLLABLE SSYANG
+C346;C346;110A 1163 11BD;C346;110A 1163 11BD; # (ì†; ì†; 썆; ì†; 썆; ) HANGUL SYLLABLE SSYAJ
+C347;C347;110A 1163 11BE;C347;110A 1163 11BE; # (ì‡; ì‡; 썇; ì‡; 썇; ) HANGUL SYLLABLE SSYAC
+C348;C348;110A 1163 11BF;C348;110A 1163 11BF; # (ìˆ; ìˆ; 썈; ìˆ; 썈; ) HANGUL SYLLABLE SSYAK
+C349;C349;110A 1163 11C0;C349;110A 1163 11C0; # (ì‰; ì‰; 썉; ì‰; 썉; ) HANGUL SYLLABLE SSYAT
+C34A;C34A;110A 1163 11C1;C34A;110A 1163 11C1; # (ìŠ; ìŠ; á„Šá…£á‡; ìŠ; á„Šá…£á‡; ) HANGUL SYLLABLE SSYAP
+C34B;C34B;110A 1163 11C2;C34B;110A 1163 11C2; # (ì‹; ì‹; 썋; ì‹; 썋; ) HANGUL SYLLABLE SSYAH
+C34C;C34C;110A 1164;C34C;110A 1164; # (ìŒ; ìŒ; á„Šá…¤; ìŒ; á„Šá…¤; ) HANGUL SYLLABLE SSYAE
+C34D;C34D;110A 1164 11A8;C34D;110A 1164 11A8; # (ì; ì; 썍; ì; 썍; ) HANGUL SYLLABLE SSYAEG
+C34E;C34E;110A 1164 11A9;C34E;110A 1164 11A9; # (ìŽ; ìŽ; 썎; ìŽ; 썎; ) HANGUL SYLLABLE SSYAEGG
+C34F;C34F;110A 1164 11AA;C34F;110A 1164 11AA; # (ì; ì; 썏; ì; 썏; ) HANGUL SYLLABLE SSYAEGS
+C350;C350;110A 1164 11AB;C350;110A 1164 11AB; # (ì; ì; 썐; ì; 썐; ) HANGUL SYLLABLE SSYAEN
+C351;C351;110A 1164 11AC;C351;110A 1164 11AC; # (ì‘; ì‘; 썑; ì‘; 썑; ) HANGUL SYLLABLE SSYAENJ
+C352;C352;110A 1164 11AD;C352;110A 1164 11AD; # (ì’; ì’; 썒; ì’; 썒; ) HANGUL SYLLABLE SSYAENH
+C353;C353;110A 1164 11AE;C353;110A 1164 11AE; # (ì“; ì“; 썓; ì“; 썓; ) HANGUL SYLLABLE SSYAED
+C354;C354;110A 1164 11AF;C354;110A 1164 11AF; # (ì”; ì”; 썔; ì”; 썔; ) HANGUL SYLLABLE SSYAEL
+C355;C355;110A 1164 11B0;C355;110A 1164 11B0; # (ì•; ì•; 썕; ì•; 썕; ) HANGUL SYLLABLE SSYAELG
+C356;C356;110A 1164 11B1;C356;110A 1164 11B1; # (ì–; ì–; 썖; ì–; 썖; ) HANGUL SYLLABLE SSYAELM
+C357;C357;110A 1164 11B2;C357;110A 1164 11B2; # (ì—; ì—; 썗; ì—; 썗; ) HANGUL SYLLABLE SSYAELB
+C358;C358;110A 1164 11B3;C358;110A 1164 11B3; # (ì˜; ì˜; 썘; ì˜; 썘; ) HANGUL SYLLABLE SSYAELS
+C359;C359;110A 1164 11B4;C359;110A 1164 11B4; # (ì™; ì™; 썙; ì™; 썙; ) HANGUL SYLLABLE SSYAELT
+C35A;C35A;110A 1164 11B5;C35A;110A 1164 11B5; # (ìš; ìš; 썚; ìš; 썚; ) HANGUL SYLLABLE SSYAELP
+C35B;C35B;110A 1164 11B6;C35B;110A 1164 11B6; # (ì›; ì›; 썛; ì›; 썛; ) HANGUL SYLLABLE SSYAELH
+C35C;C35C;110A 1164 11B7;C35C;110A 1164 11B7; # (ìœ; ìœ; 썜; ìœ; 썜; ) HANGUL SYLLABLE SSYAEM
+C35D;C35D;110A 1164 11B8;C35D;110A 1164 11B8; # (ì; ì; 썝; ì; 썝; ) HANGUL SYLLABLE SSYAEB
+C35E;C35E;110A 1164 11B9;C35E;110A 1164 11B9; # (ìž; ìž; 썞; ìž; 썞; ) HANGUL SYLLABLE SSYAEBS
+C35F;C35F;110A 1164 11BA;C35F;110A 1164 11BA; # (ìŸ; ìŸ; 썟; ìŸ; 썟; ) HANGUL SYLLABLE SSYAES
+C360;C360;110A 1164 11BB;C360;110A 1164 11BB; # (ì ; ì ; 썠; ì ; 썠; ) HANGUL SYLLABLE SSYAESS
+C361;C361;110A 1164 11BC;C361;110A 1164 11BC; # (ì¡; ì¡; 썡; ì¡; 썡; ) HANGUL SYLLABLE SSYAENG
+C362;C362;110A 1164 11BD;C362;110A 1164 11BD; # (ì¢; ì¢; 썢; ì¢; 썢; ) HANGUL SYLLABLE SSYAEJ
+C363;C363;110A 1164 11BE;C363;110A 1164 11BE; # (ì£; ì£; 썣; ì£; 썣; ) HANGUL SYLLABLE SSYAEC
+C364;C364;110A 1164 11BF;C364;110A 1164 11BF; # (ì¤; ì¤; 썤; ì¤; 썤; ) HANGUL SYLLABLE SSYAEK
+C365;C365;110A 1164 11C0;C365;110A 1164 11C0; # (ì¥; ì¥; 썥; ì¥; 썥; ) HANGUL SYLLABLE SSYAET
+C366;C366;110A 1164 11C1;C366;110A 1164 11C1; # (ì¦; ì¦; á„Šá…¤á‡; ì¦; á„Šá…¤á‡; ) HANGUL SYLLABLE SSYAEP
+C367;C367;110A 1164 11C2;C367;110A 1164 11C2; # (ì§; ì§; 썧; ì§; 썧; ) HANGUL SYLLABLE SSYAEH
+C368;C368;110A 1165;C368;110A 1165; # (ì¨; ì¨; á„Šá…¥; ì¨; á„Šá…¥; ) HANGUL SYLLABLE SSEO
+C369;C369;110A 1165 11A8;C369;110A 1165 11A8; # (ì©; ì©; 썩; ì©; 썩; ) HANGUL SYLLABLE SSEOG
+C36A;C36A;110A 1165 11A9;C36A;110A 1165 11A9; # (ìª; ìª; 썪; ìª; 썪; ) HANGUL SYLLABLE SSEOGG
+C36B;C36B;110A 1165 11AA;C36B;110A 1165 11AA; # (ì«; ì«; 썫; ì«; 썫; ) HANGUL SYLLABLE SSEOGS
+C36C;C36C;110A 1165 11AB;C36C;110A 1165 11AB; # (ì¬; ì¬; 썬; ì¬; 썬; ) HANGUL SYLLABLE SSEON
+C36D;C36D;110A 1165 11AC;C36D;110A 1165 11AC; # (ì­; ì­; 썭; ì­; 썭; ) HANGUL SYLLABLE SSEONJ
+C36E;C36E;110A 1165 11AD;C36E;110A 1165 11AD; # (ì®; ì®; 썮; ì®; 썮; ) HANGUL SYLLABLE SSEONH
+C36F;C36F;110A 1165 11AE;C36F;110A 1165 11AE; # (ì¯; ì¯; 썯; ì¯; 썯; ) HANGUL SYLLABLE SSEOD
+C370;C370;110A 1165 11AF;C370;110A 1165 11AF; # (ì°; ì°; 썰; ì°; 썰; ) HANGUL SYLLABLE SSEOL
+C371;C371;110A 1165 11B0;C371;110A 1165 11B0; # (ì±; ì±; 썱; ì±; 썱; ) HANGUL SYLLABLE SSEOLG
+C372;C372;110A 1165 11B1;C372;110A 1165 11B1; # (ì²; ì²; 썲; ì²; 썲; ) HANGUL SYLLABLE SSEOLM
+C373;C373;110A 1165 11B2;C373;110A 1165 11B2; # (ì³; ì³; 썳; ì³; 썳; ) HANGUL SYLLABLE SSEOLB
+C374;C374;110A 1165 11B3;C374;110A 1165 11B3; # (ì´; ì´; 썴; ì´; 썴; ) HANGUL SYLLABLE SSEOLS
+C375;C375;110A 1165 11B4;C375;110A 1165 11B4; # (ìµ; ìµ; 썵; ìµ; 썵; ) HANGUL SYLLABLE SSEOLT
+C376;C376;110A 1165 11B5;C376;110A 1165 11B5; # (ì¶; ì¶; 썶; ì¶; 썶; ) HANGUL SYLLABLE SSEOLP
+C377;C377;110A 1165 11B6;C377;110A 1165 11B6; # (ì·; ì·; 썷; ì·; 썷; ) HANGUL SYLLABLE SSEOLH
+C378;C378;110A 1165 11B7;C378;110A 1165 11B7; # (ì¸; ì¸; 썸; ì¸; 썸; ) HANGUL SYLLABLE SSEOM
+C379;C379;110A 1165 11B8;C379;110A 1165 11B8; # (ì¹; ì¹; 썹; ì¹; 썹; ) HANGUL SYLLABLE SSEOB
+C37A;C37A;110A 1165 11B9;C37A;110A 1165 11B9; # (ìº; ìº; 썺; ìº; 썺; ) HANGUL SYLLABLE SSEOBS
+C37B;C37B;110A 1165 11BA;C37B;110A 1165 11BA; # (ì»; ì»; 썻; ì»; 썻; ) HANGUL SYLLABLE SSEOS
+C37C;C37C;110A 1165 11BB;C37C;110A 1165 11BB; # (ì¼; ì¼; 썼; ì¼; 썼; ) HANGUL SYLLABLE SSEOSS
+C37D;C37D;110A 1165 11BC;C37D;110A 1165 11BC; # (ì½; ì½; 썽; ì½; 썽; ) HANGUL SYLLABLE SSEONG
+C37E;C37E;110A 1165 11BD;C37E;110A 1165 11BD; # (ì¾; ì¾; 썾; ì¾; 썾; ) HANGUL SYLLABLE SSEOJ
+C37F;C37F;110A 1165 11BE;C37F;110A 1165 11BE; # (ì¿; ì¿; 썿; ì¿; 썿; ) HANGUL SYLLABLE SSEOC
+C380;C380;110A 1165 11BF;C380;110A 1165 11BF; # (쎀; 쎀; 쎀; 쎀; 쎀; ) HANGUL SYLLABLE SSEOK
+C381;C381;110A 1165 11C0;C381;110A 1165 11C0; # (ìŽ; ìŽ; 쎁; ìŽ; 쎁; ) HANGUL SYLLABLE SSEOT
+C382;C382;110A 1165 11C1;C382;110A 1165 11C1; # (쎂; 쎂; á„Šá…¥á‡; 쎂; á„Šá…¥á‡; ) HANGUL SYLLABLE SSEOP
+C383;C383;110A 1165 11C2;C383;110A 1165 11C2; # (쎃; 쎃; 쎃; 쎃; 쎃; ) HANGUL SYLLABLE SSEOH
+C384;C384;110A 1166;C384;110A 1166; # (쎄; 쎄; 쎄; 쎄; 쎄; ) HANGUL SYLLABLE SSE
+C385;C385;110A 1166 11A8;C385;110A 1166 11A8; # (쎅; 쎅; 쎅; 쎅; 쎅; ) HANGUL SYLLABLE SSEG
+C386;C386;110A 1166 11A9;C386;110A 1166 11A9; # (쎆; 쎆; 쎆; 쎆; 쎆; ) HANGUL SYLLABLE SSEGG
+C387;C387;110A 1166 11AA;C387;110A 1166 11AA; # (쎇; 쎇; 쎇; 쎇; 쎇; ) HANGUL SYLLABLE SSEGS
+C388;C388;110A 1166 11AB;C388;110A 1166 11AB; # (쎈; 쎈; 쎈; 쎈; 쎈; ) HANGUL SYLLABLE SSEN
+C389;C389;110A 1166 11AC;C389;110A 1166 11AC; # (쎉; 쎉; 쎉; 쎉; 쎉; ) HANGUL SYLLABLE SSENJ
+C38A;C38A;110A 1166 11AD;C38A;110A 1166 11AD; # (쎊; 쎊; 쎊; 쎊; 쎊; ) HANGUL SYLLABLE SSENH
+C38B;C38B;110A 1166 11AE;C38B;110A 1166 11AE; # (쎋; 쎋; 쎋; 쎋; 쎋; ) HANGUL SYLLABLE SSED
+C38C;C38C;110A 1166 11AF;C38C;110A 1166 11AF; # (쎌; 쎌; 쎌; 쎌; 쎌; ) HANGUL SYLLABLE SSEL
+C38D;C38D;110A 1166 11B0;C38D;110A 1166 11B0; # (ìŽ; ìŽ; 쎍; ìŽ; 쎍; ) HANGUL SYLLABLE SSELG
+C38E;C38E;110A 1166 11B1;C38E;110A 1166 11B1; # (쎎; 쎎; 쎎; 쎎; 쎎; ) HANGUL SYLLABLE SSELM
+C38F;C38F;110A 1166 11B2;C38F;110A 1166 11B2; # (ìŽ; ìŽ; 쎏; ìŽ; 쎏; ) HANGUL SYLLABLE SSELB
+C390;C390;110A 1166 11B3;C390;110A 1166 11B3; # (ìŽ; ìŽ; 쎐; ìŽ; 쎐; ) HANGUL SYLLABLE SSELS
+C391;C391;110A 1166 11B4;C391;110A 1166 11B4; # (쎑; 쎑; 쎑; 쎑; 쎑; ) HANGUL SYLLABLE SSELT
+C392;C392;110A 1166 11B5;C392;110A 1166 11B5; # (쎒; 쎒; 쎒; 쎒; 쎒; ) HANGUL SYLLABLE SSELP
+C393;C393;110A 1166 11B6;C393;110A 1166 11B6; # (쎓; 쎓; 쎓; 쎓; 쎓; ) HANGUL SYLLABLE SSELH
+C394;C394;110A 1166 11B7;C394;110A 1166 11B7; # (쎔; 쎔; 쎔; 쎔; 쎔; ) HANGUL SYLLABLE SSEM
+C395;C395;110A 1166 11B8;C395;110A 1166 11B8; # (쎕; 쎕; 쎕; 쎕; 쎕; ) HANGUL SYLLABLE SSEB
+C396;C396;110A 1166 11B9;C396;110A 1166 11B9; # (쎖; 쎖; 쎖; 쎖; 쎖; ) HANGUL SYLLABLE SSEBS
+C397;C397;110A 1166 11BA;C397;110A 1166 11BA; # (쎗; 쎗; 쎗; 쎗; 쎗; ) HANGUL SYLLABLE SSES
+C398;C398;110A 1166 11BB;C398;110A 1166 11BB; # (쎘; 쎘; 쎘; 쎘; 쎘; ) HANGUL SYLLABLE SSESS
+C399;C399;110A 1166 11BC;C399;110A 1166 11BC; # (쎙; 쎙; 쎙; 쎙; 쎙; ) HANGUL SYLLABLE SSENG
+C39A;C39A;110A 1166 11BD;C39A;110A 1166 11BD; # (쎚; 쎚; 쎚; 쎚; 쎚; ) HANGUL SYLLABLE SSEJ
+C39B;C39B;110A 1166 11BE;C39B;110A 1166 11BE; # (쎛; 쎛; 쎛; 쎛; 쎛; ) HANGUL SYLLABLE SSEC
+C39C;C39C;110A 1166 11BF;C39C;110A 1166 11BF; # (쎜; 쎜; 쎜; 쎜; 쎜; ) HANGUL SYLLABLE SSEK
+C39D;C39D;110A 1166 11C0;C39D;110A 1166 11C0; # (ìŽ; ìŽ; 쎝; ìŽ; 쎝; ) HANGUL SYLLABLE SSET
+C39E;C39E;110A 1166 11C1;C39E;110A 1166 11C1; # (쎞; 쎞; á„Šá…¦á‡; 쎞; á„Šá…¦á‡; ) HANGUL SYLLABLE SSEP
+C39F;C39F;110A 1166 11C2;C39F;110A 1166 11C2; # (쎟; 쎟; 쎟; 쎟; 쎟; ) HANGUL SYLLABLE SSEH
+C3A0;C3A0;110A 1167;C3A0;110A 1167; # (쎠; 쎠; 쎠; 쎠; 쎠; ) HANGUL SYLLABLE SSYEO
+C3A1;C3A1;110A 1167 11A8;C3A1;110A 1167 11A8; # (쎡; 쎡; 쎡; 쎡; 쎡; ) HANGUL SYLLABLE SSYEOG
+C3A2;C3A2;110A 1167 11A9;C3A2;110A 1167 11A9; # (쎢; 쎢; 쎢; 쎢; 쎢; ) HANGUL SYLLABLE SSYEOGG
+C3A3;C3A3;110A 1167 11AA;C3A3;110A 1167 11AA; # (쎣; 쎣; 쎣; 쎣; 쎣; ) HANGUL SYLLABLE SSYEOGS
+C3A4;C3A4;110A 1167 11AB;C3A4;110A 1167 11AB; # (쎤; 쎤; 쎤; 쎤; 쎤; ) HANGUL SYLLABLE SSYEON
+C3A5;C3A5;110A 1167 11AC;C3A5;110A 1167 11AC; # (쎥; 쎥; 쎥; 쎥; 쎥; ) HANGUL SYLLABLE SSYEONJ
+C3A6;C3A6;110A 1167 11AD;C3A6;110A 1167 11AD; # (쎦; 쎦; 쎦; 쎦; 쎦; ) HANGUL SYLLABLE SSYEONH
+C3A7;C3A7;110A 1167 11AE;C3A7;110A 1167 11AE; # (쎧; 쎧; 쎧; 쎧; 쎧; ) HANGUL SYLLABLE SSYEOD
+C3A8;C3A8;110A 1167 11AF;C3A8;110A 1167 11AF; # (쎨; 쎨; 쎨; 쎨; 쎨; ) HANGUL SYLLABLE SSYEOL
+C3A9;C3A9;110A 1167 11B0;C3A9;110A 1167 11B0; # (쎩; 쎩; 쎩; 쎩; 쎩; ) HANGUL SYLLABLE SSYEOLG
+C3AA;C3AA;110A 1167 11B1;C3AA;110A 1167 11B1; # (쎪; 쎪; 쎪; 쎪; 쎪; ) HANGUL SYLLABLE SSYEOLM
+C3AB;C3AB;110A 1167 11B2;C3AB;110A 1167 11B2; # (쎫; 쎫; 쎫; 쎫; 쎫; ) HANGUL SYLLABLE SSYEOLB
+C3AC;C3AC;110A 1167 11B3;C3AC;110A 1167 11B3; # (쎬; 쎬; 쎬; 쎬; 쎬; ) HANGUL SYLLABLE SSYEOLS
+C3AD;C3AD;110A 1167 11B4;C3AD;110A 1167 11B4; # (쎭; 쎭; 쎭; 쎭; 쎭; ) HANGUL SYLLABLE SSYEOLT
+C3AE;C3AE;110A 1167 11B5;C3AE;110A 1167 11B5; # (쎮; 쎮; 쎮; 쎮; 쎮; ) HANGUL SYLLABLE SSYEOLP
+C3AF;C3AF;110A 1167 11B6;C3AF;110A 1167 11B6; # (쎯; 쎯; 쎯; 쎯; 쎯; ) HANGUL SYLLABLE SSYEOLH
+C3B0;C3B0;110A 1167 11B7;C3B0;110A 1167 11B7; # (쎰; 쎰; 쎰; 쎰; 쎰; ) HANGUL SYLLABLE SSYEOM
+C3B1;C3B1;110A 1167 11B8;C3B1;110A 1167 11B8; # (쎱; 쎱; 쎱; 쎱; 쎱; ) HANGUL SYLLABLE SSYEOB
+C3B2;C3B2;110A 1167 11B9;C3B2;110A 1167 11B9; # (쎲; 쎲; 쎲; 쎲; 쎲; ) HANGUL SYLLABLE SSYEOBS
+C3B3;C3B3;110A 1167 11BA;C3B3;110A 1167 11BA; # (쎳; 쎳; 쎳; 쎳; 쎳; ) HANGUL SYLLABLE SSYEOS
+C3B4;C3B4;110A 1167 11BB;C3B4;110A 1167 11BB; # (쎴; 쎴; 쎴; 쎴; 쎴; ) HANGUL SYLLABLE SSYEOSS
+C3B5;C3B5;110A 1167 11BC;C3B5;110A 1167 11BC; # (쎵; 쎵; 쎵; 쎵; 쎵; ) HANGUL SYLLABLE SSYEONG
+C3B6;C3B6;110A 1167 11BD;C3B6;110A 1167 11BD; # (쎶; 쎶; 쎶; 쎶; 쎶; ) HANGUL SYLLABLE SSYEOJ
+C3B7;C3B7;110A 1167 11BE;C3B7;110A 1167 11BE; # (쎷; 쎷; 쎷; 쎷; 쎷; ) HANGUL SYLLABLE SSYEOC
+C3B8;C3B8;110A 1167 11BF;C3B8;110A 1167 11BF; # (쎸; 쎸; 쎸; 쎸; 쎸; ) HANGUL SYLLABLE SSYEOK
+C3B9;C3B9;110A 1167 11C0;C3B9;110A 1167 11C0; # (쎹; 쎹; 쎹; 쎹; 쎹; ) HANGUL SYLLABLE SSYEOT
+C3BA;C3BA;110A 1167 11C1;C3BA;110A 1167 11C1; # (쎺; 쎺; á„Šá…§á‡; 쎺; á„Šá…§á‡; ) HANGUL SYLLABLE SSYEOP
+C3BB;C3BB;110A 1167 11C2;C3BB;110A 1167 11C2; # (쎻; 쎻; 쎻; 쎻; 쎻; ) HANGUL SYLLABLE SSYEOH
+C3BC;C3BC;110A 1168;C3BC;110A 1168; # (쎼; 쎼; 쎼; 쎼; 쎼; ) HANGUL SYLLABLE SSYE
+C3BD;C3BD;110A 1168 11A8;C3BD;110A 1168 11A8; # (쎽; 쎽; 쎽; 쎽; 쎽; ) HANGUL SYLLABLE SSYEG
+C3BE;C3BE;110A 1168 11A9;C3BE;110A 1168 11A9; # (쎾; 쎾; 쎾; 쎾; 쎾; ) HANGUL SYLLABLE SSYEGG
+C3BF;C3BF;110A 1168 11AA;C3BF;110A 1168 11AA; # (쎿; 쎿; 쎿; 쎿; 쎿; ) HANGUL SYLLABLE SSYEGS
+C3C0;C3C0;110A 1168 11AB;C3C0;110A 1168 11AB; # (ì€; ì€; 쏀; ì€; 쏀; ) HANGUL SYLLABLE SSYEN
+C3C1;C3C1;110A 1168 11AC;C3C1;110A 1168 11AC; # (ì; ì; 쏁; ì; 쏁; ) HANGUL SYLLABLE SSYENJ
+C3C2;C3C2;110A 1168 11AD;C3C2;110A 1168 11AD; # (ì‚; ì‚; 쏂; ì‚; 쏂; ) HANGUL SYLLABLE SSYENH
+C3C3;C3C3;110A 1168 11AE;C3C3;110A 1168 11AE; # (ìƒ; ìƒ; 쏃; ìƒ; 쏃; ) HANGUL SYLLABLE SSYED
+C3C4;C3C4;110A 1168 11AF;C3C4;110A 1168 11AF; # (ì„; ì„; 쏄; ì„; 쏄; ) HANGUL SYLLABLE SSYEL
+C3C5;C3C5;110A 1168 11B0;C3C5;110A 1168 11B0; # (ì…; ì…; 쏅; ì…; 쏅; ) HANGUL SYLLABLE SSYELG
+C3C6;C3C6;110A 1168 11B1;C3C6;110A 1168 11B1; # (ì†; ì†; 쏆; ì†; 쏆; ) HANGUL SYLLABLE SSYELM
+C3C7;C3C7;110A 1168 11B2;C3C7;110A 1168 11B2; # (ì‡; ì‡; 쏇; ì‡; 쏇; ) HANGUL SYLLABLE SSYELB
+C3C8;C3C8;110A 1168 11B3;C3C8;110A 1168 11B3; # (ìˆ; ìˆ; 쏈; ìˆ; 쏈; ) HANGUL SYLLABLE SSYELS
+C3C9;C3C9;110A 1168 11B4;C3C9;110A 1168 11B4; # (ì‰; ì‰; 쏉; ì‰; 쏉; ) HANGUL SYLLABLE SSYELT
+C3CA;C3CA;110A 1168 11B5;C3CA;110A 1168 11B5; # (ìŠ; ìŠ; 쏊; ìŠ; 쏊; ) HANGUL SYLLABLE SSYELP
+C3CB;C3CB;110A 1168 11B6;C3CB;110A 1168 11B6; # (ì‹; ì‹; 쏋; ì‹; 쏋; ) HANGUL SYLLABLE SSYELH
+C3CC;C3CC;110A 1168 11B7;C3CC;110A 1168 11B7; # (ìŒ; ìŒ; 쏌; ìŒ; 쏌; ) HANGUL SYLLABLE SSYEM
+C3CD;C3CD;110A 1168 11B8;C3CD;110A 1168 11B8; # (ì; ì; 쏍; ì; 쏍; ) HANGUL SYLLABLE SSYEB
+C3CE;C3CE;110A 1168 11B9;C3CE;110A 1168 11B9; # (ìŽ; ìŽ; 쏎; ìŽ; 쏎; ) HANGUL SYLLABLE SSYEBS
+C3CF;C3CF;110A 1168 11BA;C3CF;110A 1168 11BA; # (ì; ì; 쏏; ì; 쏏; ) HANGUL SYLLABLE SSYES
+C3D0;C3D0;110A 1168 11BB;C3D0;110A 1168 11BB; # (ì; ì; 쏐; ì; 쏐; ) HANGUL SYLLABLE SSYESS
+C3D1;C3D1;110A 1168 11BC;C3D1;110A 1168 11BC; # (ì‘; ì‘; 쏑; ì‘; 쏑; ) HANGUL SYLLABLE SSYENG
+C3D2;C3D2;110A 1168 11BD;C3D2;110A 1168 11BD; # (ì’; ì’; 쏒; ì’; 쏒; ) HANGUL SYLLABLE SSYEJ
+C3D3;C3D3;110A 1168 11BE;C3D3;110A 1168 11BE; # (ì“; ì“; 쏓; ì“; 쏓; ) HANGUL SYLLABLE SSYEC
+C3D4;C3D4;110A 1168 11BF;C3D4;110A 1168 11BF; # (ì”; ì”; 쏔; ì”; 쏔; ) HANGUL SYLLABLE SSYEK
+C3D5;C3D5;110A 1168 11C0;C3D5;110A 1168 11C0; # (ì•; ì•; 쏕; ì•; 쏕; ) HANGUL SYLLABLE SSYET
+C3D6;C3D6;110A 1168 11C1;C3D6;110A 1168 11C1; # (ì–; ì–; á„Šá…¨á‡; ì–; á„Šá…¨á‡; ) HANGUL SYLLABLE SSYEP
+C3D7;C3D7;110A 1168 11C2;C3D7;110A 1168 11C2; # (ì—; ì—; 쏗; ì—; 쏗; ) HANGUL SYLLABLE SSYEH
+C3D8;C3D8;110A 1169;C3D8;110A 1169; # (ì˜; ì˜; á„Šá…©; ì˜; á„Šá…©; ) HANGUL SYLLABLE SSO
+C3D9;C3D9;110A 1169 11A8;C3D9;110A 1169 11A8; # (ì™; ì™; 쏙; ì™; 쏙; ) HANGUL SYLLABLE SSOG
+C3DA;C3DA;110A 1169 11A9;C3DA;110A 1169 11A9; # (ìš; ìš; 쏚; ìš; 쏚; ) HANGUL SYLLABLE SSOGG
+C3DB;C3DB;110A 1169 11AA;C3DB;110A 1169 11AA; # (ì›; ì›; 쏛; ì›; 쏛; ) HANGUL SYLLABLE SSOGS
+C3DC;C3DC;110A 1169 11AB;C3DC;110A 1169 11AB; # (ìœ; ìœ; 쏜; ìœ; 쏜; ) HANGUL SYLLABLE SSON
+C3DD;C3DD;110A 1169 11AC;C3DD;110A 1169 11AC; # (ì; ì; 쏝; ì; 쏝; ) HANGUL SYLLABLE SSONJ
+C3DE;C3DE;110A 1169 11AD;C3DE;110A 1169 11AD; # (ìž; ìž; 쏞; ìž; 쏞; ) HANGUL SYLLABLE SSONH
+C3DF;C3DF;110A 1169 11AE;C3DF;110A 1169 11AE; # (ìŸ; ìŸ; 쏟; ìŸ; 쏟; ) HANGUL SYLLABLE SSOD
+C3E0;C3E0;110A 1169 11AF;C3E0;110A 1169 11AF; # (ì ; ì ; 쏠; ì ; 쏠; ) HANGUL SYLLABLE SSOL
+C3E1;C3E1;110A 1169 11B0;C3E1;110A 1169 11B0; # (ì¡; ì¡; 쏡; ì¡; 쏡; ) HANGUL SYLLABLE SSOLG
+C3E2;C3E2;110A 1169 11B1;C3E2;110A 1169 11B1; # (ì¢; ì¢; 쏢; ì¢; 쏢; ) HANGUL SYLLABLE SSOLM
+C3E3;C3E3;110A 1169 11B2;C3E3;110A 1169 11B2; # (ì£; ì£; 쏣; ì£; 쏣; ) HANGUL SYLLABLE SSOLB
+C3E4;C3E4;110A 1169 11B3;C3E4;110A 1169 11B3; # (ì¤; ì¤; 쏤; ì¤; 쏤; ) HANGUL SYLLABLE SSOLS
+C3E5;C3E5;110A 1169 11B4;C3E5;110A 1169 11B4; # (ì¥; ì¥; 쏥; ì¥; 쏥; ) HANGUL SYLLABLE SSOLT
+C3E6;C3E6;110A 1169 11B5;C3E6;110A 1169 11B5; # (ì¦; ì¦; 쏦; ì¦; 쏦; ) HANGUL SYLLABLE SSOLP
+C3E7;C3E7;110A 1169 11B6;C3E7;110A 1169 11B6; # (ì§; ì§; 쏧; ì§; 쏧; ) HANGUL SYLLABLE SSOLH
+C3E8;C3E8;110A 1169 11B7;C3E8;110A 1169 11B7; # (ì¨; ì¨; 쏨; ì¨; 쏨; ) HANGUL SYLLABLE SSOM
+C3E9;C3E9;110A 1169 11B8;C3E9;110A 1169 11B8; # (ì©; ì©; 쏩; ì©; 쏩; ) HANGUL SYLLABLE SSOB
+C3EA;C3EA;110A 1169 11B9;C3EA;110A 1169 11B9; # (ìª; ìª; 쏪; ìª; 쏪; ) HANGUL SYLLABLE SSOBS
+C3EB;C3EB;110A 1169 11BA;C3EB;110A 1169 11BA; # (ì«; ì«; 쏫; ì«; 쏫; ) HANGUL SYLLABLE SSOS
+C3EC;C3EC;110A 1169 11BB;C3EC;110A 1169 11BB; # (ì¬; ì¬; 쏬; ì¬; 쏬; ) HANGUL SYLLABLE SSOSS
+C3ED;C3ED;110A 1169 11BC;C3ED;110A 1169 11BC; # (ì­; ì­; 쏭; ì­; 쏭; ) HANGUL SYLLABLE SSONG
+C3EE;C3EE;110A 1169 11BD;C3EE;110A 1169 11BD; # (ì®; ì®; 쏮; ì®; 쏮; ) HANGUL SYLLABLE SSOJ
+C3EF;C3EF;110A 1169 11BE;C3EF;110A 1169 11BE; # (ì¯; ì¯; 쏯; ì¯; 쏯; ) HANGUL SYLLABLE SSOC
+C3F0;C3F0;110A 1169 11BF;C3F0;110A 1169 11BF; # (ì°; ì°; 쏰; ì°; 쏰; ) HANGUL SYLLABLE SSOK
+C3F1;C3F1;110A 1169 11C0;C3F1;110A 1169 11C0; # (ì±; ì±; 쏱; ì±; 쏱; ) HANGUL SYLLABLE SSOT
+C3F2;C3F2;110A 1169 11C1;C3F2;110A 1169 11C1; # (ì²; ì²; á„Šá…©á‡; ì²; á„Šá…©á‡; ) HANGUL SYLLABLE SSOP
+C3F3;C3F3;110A 1169 11C2;C3F3;110A 1169 11C2; # (ì³; ì³; 쏳; ì³; 쏳; ) HANGUL SYLLABLE SSOH
+C3F4;C3F4;110A 116A;C3F4;110A 116A; # (ì´; ì´; á„Šá…ª; ì´; á„Šá…ª; ) HANGUL SYLLABLE SSWA
+C3F5;C3F5;110A 116A 11A8;C3F5;110A 116A 11A8; # (ìµ; ìµ; 쏵; ìµ; 쏵; ) HANGUL SYLLABLE SSWAG
+C3F6;C3F6;110A 116A 11A9;C3F6;110A 116A 11A9; # (ì¶; ì¶; 쏶; ì¶; 쏶; ) HANGUL SYLLABLE SSWAGG
+C3F7;C3F7;110A 116A 11AA;C3F7;110A 116A 11AA; # (ì·; ì·; 쏷; ì·; 쏷; ) HANGUL SYLLABLE SSWAGS
+C3F8;C3F8;110A 116A 11AB;C3F8;110A 116A 11AB; # (ì¸; ì¸; 쏸; ì¸; 쏸; ) HANGUL SYLLABLE SSWAN
+C3F9;C3F9;110A 116A 11AC;C3F9;110A 116A 11AC; # (ì¹; ì¹; 쏹; ì¹; 쏹; ) HANGUL SYLLABLE SSWANJ
+C3FA;C3FA;110A 116A 11AD;C3FA;110A 116A 11AD; # (ìº; ìº; 쏺; ìº; 쏺; ) HANGUL SYLLABLE SSWANH
+C3FB;C3FB;110A 116A 11AE;C3FB;110A 116A 11AE; # (ì»; ì»; 쏻; ì»; 쏻; ) HANGUL SYLLABLE SSWAD
+C3FC;C3FC;110A 116A 11AF;C3FC;110A 116A 11AF; # (ì¼; ì¼; 쏼; ì¼; 쏼; ) HANGUL SYLLABLE SSWAL
+C3FD;C3FD;110A 116A 11B0;C3FD;110A 116A 11B0; # (ì½; ì½; 쏽; ì½; 쏽; ) HANGUL SYLLABLE SSWALG
+C3FE;C3FE;110A 116A 11B1;C3FE;110A 116A 11B1; # (ì¾; ì¾; 쏾; ì¾; 쏾; ) HANGUL SYLLABLE SSWALM
+C3FF;C3FF;110A 116A 11B2;C3FF;110A 116A 11B2; # (ì¿; ì¿; 쏿; ì¿; 쏿; ) HANGUL SYLLABLE SSWALB
+C400;C400;110A 116A 11B3;C400;110A 116A 11B3; # (ì€; ì€; 쐀; ì€; 쐀; ) HANGUL SYLLABLE SSWALS
+C401;C401;110A 116A 11B4;C401;110A 116A 11B4; # (ì; ì; 쐁; ì; 쐁; ) HANGUL SYLLABLE SSWALT
+C402;C402;110A 116A 11B5;C402;110A 116A 11B5; # (ì‚; ì‚; 쐂; ì‚; 쐂; ) HANGUL SYLLABLE SSWALP
+C403;C403;110A 116A 11B6;C403;110A 116A 11B6; # (ìƒ; ìƒ; 쐃; ìƒ; 쐃; ) HANGUL SYLLABLE SSWALH
+C404;C404;110A 116A 11B7;C404;110A 116A 11B7; # (ì„; ì„; 쐄; ì„; 쐄; ) HANGUL SYLLABLE SSWAM
+C405;C405;110A 116A 11B8;C405;110A 116A 11B8; # (ì…; ì…; 쐅; ì…; 쐅; ) HANGUL SYLLABLE SSWAB
+C406;C406;110A 116A 11B9;C406;110A 116A 11B9; # (ì†; ì†; 쐆; ì†; 쐆; ) HANGUL SYLLABLE SSWABS
+C407;C407;110A 116A 11BA;C407;110A 116A 11BA; # (ì‡; ì‡; 쐇; ì‡; 쐇; ) HANGUL SYLLABLE SSWAS
+C408;C408;110A 116A 11BB;C408;110A 116A 11BB; # (ìˆ; ìˆ; 쐈; ìˆ; 쐈; ) HANGUL SYLLABLE SSWASS
+C409;C409;110A 116A 11BC;C409;110A 116A 11BC; # (ì‰; ì‰; 쐉; ì‰; 쐉; ) HANGUL SYLLABLE SSWANG
+C40A;C40A;110A 116A 11BD;C40A;110A 116A 11BD; # (ìŠ; ìŠ; 쐊; ìŠ; 쐊; ) HANGUL SYLLABLE SSWAJ
+C40B;C40B;110A 116A 11BE;C40B;110A 116A 11BE; # (ì‹; ì‹; 쐋; ì‹; 쐋; ) HANGUL SYLLABLE SSWAC
+C40C;C40C;110A 116A 11BF;C40C;110A 116A 11BF; # (ìŒ; ìŒ; 쐌; ìŒ; 쐌; ) HANGUL SYLLABLE SSWAK
+C40D;C40D;110A 116A 11C0;C40D;110A 116A 11C0; # (ì; ì; 쐍; ì; 쐍; ) HANGUL SYLLABLE SSWAT
+C40E;C40E;110A 116A 11C1;C40E;110A 116A 11C1; # (ìŽ; ìŽ; á„Šá…ªá‡; ìŽ; á„Šá…ªá‡; ) HANGUL SYLLABLE SSWAP
+C40F;C40F;110A 116A 11C2;C40F;110A 116A 11C2; # (ì; ì; 쐏; ì; 쐏; ) HANGUL SYLLABLE SSWAH
+C410;C410;110A 116B;C410;110A 116B; # (ì; ì; á„Šá…«; ì; á„Šá…«; ) HANGUL SYLLABLE SSWAE
+C411;C411;110A 116B 11A8;C411;110A 116B 11A8; # (ì‘; ì‘; 쐑; ì‘; 쐑; ) HANGUL SYLLABLE SSWAEG
+C412;C412;110A 116B 11A9;C412;110A 116B 11A9; # (ì’; ì’; 쐒; ì’; 쐒; ) HANGUL SYLLABLE SSWAEGG
+C413;C413;110A 116B 11AA;C413;110A 116B 11AA; # (ì“; ì“; 쐓; ì“; 쐓; ) HANGUL SYLLABLE SSWAEGS
+C414;C414;110A 116B 11AB;C414;110A 116B 11AB; # (ì”; ì”; 쐔; ì”; 쐔; ) HANGUL SYLLABLE SSWAEN
+C415;C415;110A 116B 11AC;C415;110A 116B 11AC; # (ì•; ì•; 쐕; ì•; 쐕; ) HANGUL SYLLABLE SSWAENJ
+C416;C416;110A 116B 11AD;C416;110A 116B 11AD; # (ì–; ì–; 쐖; ì–; 쐖; ) HANGUL SYLLABLE SSWAENH
+C417;C417;110A 116B 11AE;C417;110A 116B 11AE; # (ì—; ì—; 쐗; ì—; 쐗; ) HANGUL SYLLABLE SSWAED
+C418;C418;110A 116B 11AF;C418;110A 116B 11AF; # (ì˜; ì˜; 쐘; ì˜; 쐘; ) HANGUL SYLLABLE SSWAEL
+C419;C419;110A 116B 11B0;C419;110A 116B 11B0; # (ì™; ì™; 쐙; ì™; 쐙; ) HANGUL SYLLABLE SSWAELG
+C41A;C41A;110A 116B 11B1;C41A;110A 116B 11B1; # (ìš; ìš; 쐚; ìš; 쐚; ) HANGUL SYLLABLE SSWAELM
+C41B;C41B;110A 116B 11B2;C41B;110A 116B 11B2; # (ì›; ì›; 쐛; ì›; 쐛; ) HANGUL SYLLABLE SSWAELB
+C41C;C41C;110A 116B 11B3;C41C;110A 116B 11B3; # (ìœ; ìœ; 쐜; ìœ; 쐜; ) HANGUL SYLLABLE SSWAELS
+C41D;C41D;110A 116B 11B4;C41D;110A 116B 11B4; # (ì; ì; 쐝; ì; 쐝; ) HANGUL SYLLABLE SSWAELT
+C41E;C41E;110A 116B 11B5;C41E;110A 116B 11B5; # (ìž; ìž; 쐞; ìž; 쐞; ) HANGUL SYLLABLE SSWAELP
+C41F;C41F;110A 116B 11B6;C41F;110A 116B 11B6; # (ìŸ; ìŸ; 쐟; ìŸ; 쐟; ) HANGUL SYLLABLE SSWAELH
+C420;C420;110A 116B 11B7;C420;110A 116B 11B7; # (ì ; ì ; 쐠; ì ; 쐠; ) HANGUL SYLLABLE SSWAEM
+C421;C421;110A 116B 11B8;C421;110A 116B 11B8; # (ì¡; ì¡; 쐡; ì¡; 쐡; ) HANGUL SYLLABLE SSWAEB
+C422;C422;110A 116B 11B9;C422;110A 116B 11B9; # (ì¢; ì¢; 쐢; ì¢; 쐢; ) HANGUL SYLLABLE SSWAEBS
+C423;C423;110A 116B 11BA;C423;110A 116B 11BA; # (ì£; ì£; 쐣; ì£; 쐣; ) HANGUL SYLLABLE SSWAES
+C424;C424;110A 116B 11BB;C424;110A 116B 11BB; # (ì¤; ì¤; 쐤; ì¤; 쐤; ) HANGUL SYLLABLE SSWAESS
+C425;C425;110A 116B 11BC;C425;110A 116B 11BC; # (ì¥; ì¥; 쐥; ì¥; 쐥; ) HANGUL SYLLABLE SSWAENG
+C426;C426;110A 116B 11BD;C426;110A 116B 11BD; # (ì¦; ì¦; 쐦; ì¦; 쐦; ) HANGUL SYLLABLE SSWAEJ
+C427;C427;110A 116B 11BE;C427;110A 116B 11BE; # (ì§; ì§; 쐧; ì§; 쐧; ) HANGUL SYLLABLE SSWAEC
+C428;C428;110A 116B 11BF;C428;110A 116B 11BF; # (ì¨; ì¨; 쐨; ì¨; 쐨; ) HANGUL SYLLABLE SSWAEK
+C429;C429;110A 116B 11C0;C429;110A 116B 11C0; # (ì©; ì©; 쐩; ì©; 쐩; ) HANGUL SYLLABLE SSWAET
+C42A;C42A;110A 116B 11C1;C42A;110A 116B 11C1; # (ìª; ìª; á„Šá…«á‡; ìª; á„Šá…«á‡; ) HANGUL SYLLABLE SSWAEP
+C42B;C42B;110A 116B 11C2;C42B;110A 116B 11C2; # (ì«; ì«; 쐫; ì«; 쐫; ) HANGUL SYLLABLE SSWAEH
+C42C;C42C;110A 116C;C42C;110A 116C; # (ì¬; ì¬; á„Šá…¬; ì¬; á„Šá…¬; ) HANGUL SYLLABLE SSOE
+C42D;C42D;110A 116C 11A8;C42D;110A 116C 11A8; # (ì­; ì­; 쐭; ì­; 쐭; ) HANGUL SYLLABLE SSOEG
+C42E;C42E;110A 116C 11A9;C42E;110A 116C 11A9; # (ì®; ì®; 쐮; ì®; 쐮; ) HANGUL SYLLABLE SSOEGG
+C42F;C42F;110A 116C 11AA;C42F;110A 116C 11AA; # (ì¯; ì¯; 쐯; ì¯; 쐯; ) HANGUL SYLLABLE SSOEGS
+C430;C430;110A 116C 11AB;C430;110A 116C 11AB; # (ì°; ì°; 쐰; ì°; 쐰; ) HANGUL SYLLABLE SSOEN
+C431;C431;110A 116C 11AC;C431;110A 116C 11AC; # (ì±; ì±; 쐱; ì±; 쐱; ) HANGUL SYLLABLE SSOENJ
+C432;C432;110A 116C 11AD;C432;110A 116C 11AD; # (ì²; ì²; 쐲; ì²; 쐲; ) HANGUL SYLLABLE SSOENH
+C433;C433;110A 116C 11AE;C433;110A 116C 11AE; # (ì³; ì³; 쐳; ì³; 쐳; ) HANGUL SYLLABLE SSOED
+C434;C434;110A 116C 11AF;C434;110A 116C 11AF; # (ì´; ì´; 쐴; ì´; 쐴; ) HANGUL SYLLABLE SSOEL
+C435;C435;110A 116C 11B0;C435;110A 116C 11B0; # (ìµ; ìµ; 쐵; ìµ; 쐵; ) HANGUL SYLLABLE SSOELG
+C436;C436;110A 116C 11B1;C436;110A 116C 11B1; # (ì¶; ì¶; 쐶; ì¶; 쐶; ) HANGUL SYLLABLE SSOELM
+C437;C437;110A 116C 11B2;C437;110A 116C 11B2; # (ì·; ì·; 쐷; ì·; 쐷; ) HANGUL SYLLABLE SSOELB
+C438;C438;110A 116C 11B3;C438;110A 116C 11B3; # (ì¸; ì¸; 쐸; ì¸; 쐸; ) HANGUL SYLLABLE SSOELS
+C439;C439;110A 116C 11B4;C439;110A 116C 11B4; # (ì¹; ì¹; 쐹; ì¹; 쐹; ) HANGUL SYLLABLE SSOELT
+C43A;C43A;110A 116C 11B5;C43A;110A 116C 11B5; # (ìº; ìº; 쐺; ìº; 쐺; ) HANGUL SYLLABLE SSOELP
+C43B;C43B;110A 116C 11B6;C43B;110A 116C 11B6; # (ì»; ì»; 쐻; ì»; 쐻; ) HANGUL SYLLABLE SSOELH
+C43C;C43C;110A 116C 11B7;C43C;110A 116C 11B7; # (ì¼; ì¼; 쐼; ì¼; 쐼; ) HANGUL SYLLABLE SSOEM
+C43D;C43D;110A 116C 11B8;C43D;110A 116C 11B8; # (ì½; ì½; 쐽; ì½; 쐽; ) HANGUL SYLLABLE SSOEB
+C43E;C43E;110A 116C 11B9;C43E;110A 116C 11B9; # (ì¾; ì¾; 쐾; ì¾; 쐾; ) HANGUL SYLLABLE SSOEBS
+C43F;C43F;110A 116C 11BA;C43F;110A 116C 11BA; # (ì¿; ì¿; 쐿; ì¿; 쐿; ) HANGUL SYLLABLE SSOES
+C440;C440;110A 116C 11BB;C440;110A 116C 11BB; # (쑀; 쑀; 쑀; 쑀; 쑀; ) HANGUL SYLLABLE SSOESS
+C441;C441;110A 116C 11BC;C441;110A 116C 11BC; # (ì‘; ì‘; 쑁; ì‘; 쑁; ) HANGUL SYLLABLE SSOENG
+C442;C442;110A 116C 11BD;C442;110A 116C 11BD; # (쑂; 쑂; 쑂; 쑂; 쑂; ) HANGUL SYLLABLE SSOEJ
+C443;C443;110A 116C 11BE;C443;110A 116C 11BE; # (쑃; 쑃; 쑃; 쑃; 쑃; ) HANGUL SYLLABLE SSOEC
+C444;C444;110A 116C 11BF;C444;110A 116C 11BF; # (쑄; 쑄; 쑄; 쑄; 쑄; ) HANGUL SYLLABLE SSOEK
+C445;C445;110A 116C 11C0;C445;110A 116C 11C0; # (쑅; 쑅; 쑅; 쑅; 쑅; ) HANGUL SYLLABLE SSOET
+C446;C446;110A 116C 11C1;C446;110A 116C 11C1; # (쑆; 쑆; á„Šá…¬á‡; 쑆; á„Šá…¬á‡; ) HANGUL SYLLABLE SSOEP
+C447;C447;110A 116C 11C2;C447;110A 116C 11C2; # (쑇; 쑇; 쑇; 쑇; 쑇; ) HANGUL SYLLABLE SSOEH
+C448;C448;110A 116D;C448;110A 116D; # (쑈; 쑈; 쑈; 쑈; 쑈; ) HANGUL SYLLABLE SSYO
+C449;C449;110A 116D 11A8;C449;110A 116D 11A8; # (쑉; 쑉; 쑉; 쑉; 쑉; ) HANGUL SYLLABLE SSYOG
+C44A;C44A;110A 116D 11A9;C44A;110A 116D 11A9; # (쑊; 쑊; 쑊; 쑊; 쑊; ) HANGUL SYLLABLE SSYOGG
+C44B;C44B;110A 116D 11AA;C44B;110A 116D 11AA; # (쑋; 쑋; 쑋; 쑋; 쑋; ) HANGUL SYLLABLE SSYOGS
+C44C;C44C;110A 116D 11AB;C44C;110A 116D 11AB; # (쑌; 쑌; 쑌; 쑌; 쑌; ) HANGUL SYLLABLE SSYON
+C44D;C44D;110A 116D 11AC;C44D;110A 116D 11AC; # (ì‘; ì‘; 쑍; ì‘; 쑍; ) HANGUL SYLLABLE SSYONJ
+C44E;C44E;110A 116D 11AD;C44E;110A 116D 11AD; # (쑎; 쑎; 쑎; 쑎; 쑎; ) HANGUL SYLLABLE SSYONH
+C44F;C44F;110A 116D 11AE;C44F;110A 116D 11AE; # (ì‘; ì‘; 쑏; ì‘; 쑏; ) HANGUL SYLLABLE SSYOD
+C450;C450;110A 116D 11AF;C450;110A 116D 11AF; # (ì‘; ì‘; 쑐; ì‘; 쑐; ) HANGUL SYLLABLE SSYOL
+C451;C451;110A 116D 11B0;C451;110A 116D 11B0; # (쑑; 쑑; 쑑; 쑑; 쑑; ) HANGUL SYLLABLE SSYOLG
+C452;C452;110A 116D 11B1;C452;110A 116D 11B1; # (쑒; 쑒; 쑒; 쑒; 쑒; ) HANGUL SYLLABLE SSYOLM
+C453;C453;110A 116D 11B2;C453;110A 116D 11B2; # (쑓; 쑓; 쑓; 쑓; 쑓; ) HANGUL SYLLABLE SSYOLB
+C454;C454;110A 116D 11B3;C454;110A 116D 11B3; # (쑔; 쑔; 쑔; 쑔; 쑔; ) HANGUL SYLLABLE SSYOLS
+C455;C455;110A 116D 11B4;C455;110A 116D 11B4; # (쑕; 쑕; 쑕; 쑕; 쑕; ) HANGUL SYLLABLE SSYOLT
+C456;C456;110A 116D 11B5;C456;110A 116D 11B5; # (쑖; 쑖; 쑖; 쑖; 쑖; ) HANGUL SYLLABLE SSYOLP
+C457;C457;110A 116D 11B6;C457;110A 116D 11B6; # (쑗; 쑗; 쑗; 쑗; 쑗; ) HANGUL SYLLABLE SSYOLH
+C458;C458;110A 116D 11B7;C458;110A 116D 11B7; # (쑘; 쑘; 쑘; 쑘; 쑘; ) HANGUL SYLLABLE SSYOM
+C459;C459;110A 116D 11B8;C459;110A 116D 11B8; # (쑙; 쑙; 쑙; 쑙; 쑙; ) HANGUL SYLLABLE SSYOB
+C45A;C45A;110A 116D 11B9;C45A;110A 116D 11B9; # (쑚; 쑚; 쑚; 쑚; 쑚; ) HANGUL SYLLABLE SSYOBS
+C45B;C45B;110A 116D 11BA;C45B;110A 116D 11BA; # (쑛; 쑛; 쑛; 쑛; 쑛; ) HANGUL SYLLABLE SSYOS
+C45C;C45C;110A 116D 11BB;C45C;110A 116D 11BB; # (쑜; 쑜; 쑜; 쑜; 쑜; ) HANGUL SYLLABLE SSYOSS
+C45D;C45D;110A 116D 11BC;C45D;110A 116D 11BC; # (ì‘; ì‘; 쑝; ì‘; 쑝; ) HANGUL SYLLABLE SSYONG
+C45E;C45E;110A 116D 11BD;C45E;110A 116D 11BD; # (쑞; 쑞; 쑞; 쑞; 쑞; ) HANGUL SYLLABLE SSYOJ
+C45F;C45F;110A 116D 11BE;C45F;110A 116D 11BE; # (쑟; 쑟; 쑟; 쑟; 쑟; ) HANGUL SYLLABLE SSYOC
+C460;C460;110A 116D 11BF;C460;110A 116D 11BF; # (쑠; 쑠; 쑠; 쑠; 쑠; ) HANGUL SYLLABLE SSYOK
+C461;C461;110A 116D 11C0;C461;110A 116D 11C0; # (쑡; 쑡; 쑡; 쑡; 쑡; ) HANGUL SYLLABLE SSYOT
+C462;C462;110A 116D 11C1;C462;110A 116D 11C1; # (ì‘¢; ì‘¢; á„Šá…­á‡; ì‘¢; á„Šá…­á‡; ) HANGUL SYLLABLE SSYOP
+C463;C463;110A 116D 11C2;C463;110A 116D 11C2; # (쑣; 쑣; 쑣; 쑣; 쑣; ) HANGUL SYLLABLE SSYOH
+C464;C464;110A 116E;C464;110A 116E; # (쑤; 쑤; 쑤; 쑤; 쑤; ) HANGUL SYLLABLE SSU
+C465;C465;110A 116E 11A8;C465;110A 116E 11A8; # (쑥; 쑥; 쑥; 쑥; 쑥; ) HANGUL SYLLABLE SSUG
+C466;C466;110A 116E 11A9;C466;110A 116E 11A9; # (쑦; 쑦; 쑦; 쑦; 쑦; ) HANGUL SYLLABLE SSUGG
+C467;C467;110A 116E 11AA;C467;110A 116E 11AA; # (쑧; 쑧; 쑧; 쑧; 쑧; ) HANGUL SYLLABLE SSUGS
+C468;C468;110A 116E 11AB;C468;110A 116E 11AB; # (쑨; 쑨; 쑨; 쑨; 쑨; ) HANGUL SYLLABLE SSUN
+C469;C469;110A 116E 11AC;C469;110A 116E 11AC; # (쑩; 쑩; 쑩; 쑩; 쑩; ) HANGUL SYLLABLE SSUNJ
+C46A;C46A;110A 116E 11AD;C46A;110A 116E 11AD; # (쑪; 쑪; 쑪; 쑪; 쑪; ) HANGUL SYLLABLE SSUNH
+C46B;C46B;110A 116E 11AE;C46B;110A 116E 11AE; # (쑫; 쑫; 쑫; 쑫; 쑫; ) HANGUL SYLLABLE SSUD
+C46C;C46C;110A 116E 11AF;C46C;110A 116E 11AF; # (쑬; 쑬; 쑬; 쑬; 쑬; ) HANGUL SYLLABLE SSUL
+C46D;C46D;110A 116E 11B0;C46D;110A 116E 11B0; # (쑭; 쑭; 쑭; 쑭; 쑭; ) HANGUL SYLLABLE SSULG
+C46E;C46E;110A 116E 11B1;C46E;110A 116E 11B1; # (쑮; 쑮; 쑮; 쑮; 쑮; ) HANGUL SYLLABLE SSULM
+C46F;C46F;110A 116E 11B2;C46F;110A 116E 11B2; # (쑯; 쑯; 쑯; 쑯; 쑯; ) HANGUL SYLLABLE SSULB
+C470;C470;110A 116E 11B3;C470;110A 116E 11B3; # (쑰; 쑰; 쑰; 쑰; 쑰; ) HANGUL SYLLABLE SSULS
+C471;C471;110A 116E 11B4;C471;110A 116E 11B4; # (쑱; 쑱; 쑱; 쑱; 쑱; ) HANGUL SYLLABLE SSULT
+C472;C472;110A 116E 11B5;C472;110A 116E 11B5; # (쑲; 쑲; 쑲; 쑲; 쑲; ) HANGUL SYLLABLE SSULP
+C473;C473;110A 116E 11B6;C473;110A 116E 11B6; # (쑳; 쑳; 쑳; 쑳; 쑳; ) HANGUL SYLLABLE SSULH
+C474;C474;110A 116E 11B7;C474;110A 116E 11B7; # (쑴; 쑴; 쑴; 쑴; 쑴; ) HANGUL SYLLABLE SSUM
+C475;C475;110A 116E 11B8;C475;110A 116E 11B8; # (쑵; 쑵; 쑵; 쑵; 쑵; ) HANGUL SYLLABLE SSUB
+C476;C476;110A 116E 11B9;C476;110A 116E 11B9; # (쑶; 쑶; 쑶; 쑶; 쑶; ) HANGUL SYLLABLE SSUBS
+C477;C477;110A 116E 11BA;C477;110A 116E 11BA; # (쑷; 쑷; 쑷; 쑷; 쑷; ) HANGUL SYLLABLE SSUS
+C478;C478;110A 116E 11BB;C478;110A 116E 11BB; # (쑸; 쑸; 쑸; 쑸; 쑸; ) HANGUL SYLLABLE SSUSS
+C479;C479;110A 116E 11BC;C479;110A 116E 11BC; # (쑹; 쑹; 쑹; 쑹; 쑹; ) HANGUL SYLLABLE SSUNG
+C47A;C47A;110A 116E 11BD;C47A;110A 116E 11BD; # (쑺; 쑺; 쑺; 쑺; 쑺; ) HANGUL SYLLABLE SSUJ
+C47B;C47B;110A 116E 11BE;C47B;110A 116E 11BE; # (쑻; 쑻; 쑻; 쑻; 쑻; ) HANGUL SYLLABLE SSUC
+C47C;C47C;110A 116E 11BF;C47C;110A 116E 11BF; # (쑼; 쑼; 쑼; 쑼; 쑼; ) HANGUL SYLLABLE SSUK
+C47D;C47D;110A 116E 11C0;C47D;110A 116E 11C0; # (쑽; 쑽; 쑽; 쑽; 쑽; ) HANGUL SYLLABLE SSUT
+C47E;C47E;110A 116E 11C1;C47E;110A 116E 11C1; # (쑾; 쑾; á„Šá…®á‡; 쑾; á„Šá…®á‡; ) HANGUL SYLLABLE SSUP
+C47F;C47F;110A 116E 11C2;C47F;110A 116E 11C2; # (쑿; 쑿; 쑿; 쑿; 쑿; ) HANGUL SYLLABLE SSUH
+C480;C480;110A 116F;C480;110A 116F; # (ì’€; ì’€; á„Šá…¯; ì’€; á„Šá…¯; ) HANGUL SYLLABLE SSWEO
+C481;C481;110A 116F 11A8;C481;110A 116F 11A8; # (ì’; ì’; 쒁; ì’; 쒁; ) HANGUL SYLLABLE SSWEOG
+C482;C482;110A 116F 11A9;C482;110A 116F 11A9; # (쒂; 쒂; 쒂; 쒂; 쒂; ) HANGUL SYLLABLE SSWEOGG
+C483;C483;110A 116F 11AA;C483;110A 116F 11AA; # (쒃; 쒃; 쒃; 쒃; 쒃; ) HANGUL SYLLABLE SSWEOGS
+C484;C484;110A 116F 11AB;C484;110A 116F 11AB; # (쒄; 쒄; 쒄; 쒄; 쒄; ) HANGUL SYLLABLE SSWEON
+C485;C485;110A 116F 11AC;C485;110A 116F 11AC; # (쒅; 쒅; 쒅; 쒅; 쒅; ) HANGUL SYLLABLE SSWEONJ
+C486;C486;110A 116F 11AD;C486;110A 116F 11AD; # (쒆; 쒆; 쒆; 쒆; 쒆; ) HANGUL SYLLABLE SSWEONH
+C487;C487;110A 116F 11AE;C487;110A 116F 11AE; # (쒇; 쒇; 쒇; 쒇; 쒇; ) HANGUL SYLLABLE SSWEOD
+C488;C488;110A 116F 11AF;C488;110A 116F 11AF; # (쒈; 쒈; 쒈; 쒈; 쒈; ) HANGUL SYLLABLE SSWEOL
+C489;C489;110A 116F 11B0;C489;110A 116F 11B0; # (쒉; 쒉; 쒉; 쒉; 쒉; ) HANGUL SYLLABLE SSWEOLG
+C48A;C48A;110A 116F 11B1;C48A;110A 116F 11B1; # (쒊; 쒊; 쒊; 쒊; 쒊; ) HANGUL SYLLABLE SSWEOLM
+C48B;C48B;110A 116F 11B2;C48B;110A 116F 11B2; # (쒋; 쒋; 쒋; 쒋; 쒋; ) HANGUL SYLLABLE SSWEOLB
+C48C;C48C;110A 116F 11B3;C48C;110A 116F 11B3; # (쒌; 쒌; 쒌; 쒌; 쒌; ) HANGUL SYLLABLE SSWEOLS
+C48D;C48D;110A 116F 11B4;C48D;110A 116F 11B4; # (ì’; ì’; 쒍; ì’; 쒍; ) HANGUL SYLLABLE SSWEOLT
+C48E;C48E;110A 116F 11B5;C48E;110A 116F 11B5; # (쒎; 쒎; 쒎; 쒎; 쒎; ) HANGUL SYLLABLE SSWEOLP
+C48F;C48F;110A 116F 11B6;C48F;110A 116F 11B6; # (ì’; ì’; 쒏; ì’; 쒏; ) HANGUL SYLLABLE SSWEOLH
+C490;C490;110A 116F 11B7;C490;110A 116F 11B7; # (ì’; ì’; 쒐; ì’; 쒐; ) HANGUL SYLLABLE SSWEOM
+C491;C491;110A 116F 11B8;C491;110A 116F 11B8; # (쒑; 쒑; 쒑; 쒑; 쒑; ) HANGUL SYLLABLE SSWEOB
+C492;C492;110A 116F 11B9;C492;110A 116F 11B9; # (쒒; 쒒; 쒒; 쒒; 쒒; ) HANGUL SYLLABLE SSWEOBS
+C493;C493;110A 116F 11BA;C493;110A 116F 11BA; # (쒓; 쒓; 쒓; 쒓; 쒓; ) HANGUL SYLLABLE SSWEOS
+C494;C494;110A 116F 11BB;C494;110A 116F 11BB; # (쒔; 쒔; 쒔; 쒔; 쒔; ) HANGUL SYLLABLE SSWEOSS
+C495;C495;110A 116F 11BC;C495;110A 116F 11BC; # (쒕; 쒕; 쒕; 쒕; 쒕; ) HANGUL SYLLABLE SSWEONG
+C496;C496;110A 116F 11BD;C496;110A 116F 11BD; # (쒖; 쒖; 쒖; 쒖; 쒖; ) HANGUL SYLLABLE SSWEOJ
+C497;C497;110A 116F 11BE;C497;110A 116F 11BE; # (쒗; 쒗; 쒗; 쒗; 쒗; ) HANGUL SYLLABLE SSWEOC
+C498;C498;110A 116F 11BF;C498;110A 116F 11BF; # (쒘; 쒘; 쒘; 쒘; 쒘; ) HANGUL SYLLABLE SSWEOK
+C499;C499;110A 116F 11C0;C499;110A 116F 11C0; # (쒙; 쒙; 쒙; 쒙; 쒙; ) HANGUL SYLLABLE SSWEOT
+C49A;C49A;110A 116F 11C1;C49A;110A 116F 11C1; # (ì’š; ì’š; á„Šá…¯á‡; ì’š; á„Šá…¯á‡; ) HANGUL SYLLABLE SSWEOP
+C49B;C49B;110A 116F 11C2;C49B;110A 116F 11C2; # (쒛; 쒛; 쒛; 쒛; 쒛; ) HANGUL SYLLABLE SSWEOH
+C49C;C49C;110A 1170;C49C;110A 1170; # (쒜; 쒜; 쒜; 쒜; 쒜; ) HANGUL SYLLABLE SSWE
+C49D;C49D;110A 1170 11A8;C49D;110A 1170 11A8; # (ì’; ì’; 쒝; ì’; 쒝; ) HANGUL SYLLABLE SSWEG
+C49E;C49E;110A 1170 11A9;C49E;110A 1170 11A9; # (쒞; 쒞; 쒞; 쒞; 쒞; ) HANGUL SYLLABLE SSWEGG
+C49F;C49F;110A 1170 11AA;C49F;110A 1170 11AA; # (쒟; 쒟; 쒟; 쒟; 쒟; ) HANGUL SYLLABLE SSWEGS
+C4A0;C4A0;110A 1170 11AB;C4A0;110A 1170 11AB; # (쒠; 쒠; 쒠; 쒠; 쒠; ) HANGUL SYLLABLE SSWEN
+C4A1;C4A1;110A 1170 11AC;C4A1;110A 1170 11AC; # (쒡; 쒡; 쒡; 쒡; 쒡; ) HANGUL SYLLABLE SSWENJ
+C4A2;C4A2;110A 1170 11AD;C4A2;110A 1170 11AD; # (쒢; 쒢; 쒢; 쒢; 쒢; ) HANGUL SYLLABLE SSWENH
+C4A3;C4A3;110A 1170 11AE;C4A3;110A 1170 11AE; # (쒣; 쒣; 쒣; 쒣; 쒣; ) HANGUL SYLLABLE SSWED
+C4A4;C4A4;110A 1170 11AF;C4A4;110A 1170 11AF; # (쒤; 쒤; 쒤; 쒤; 쒤; ) HANGUL SYLLABLE SSWEL
+C4A5;C4A5;110A 1170 11B0;C4A5;110A 1170 11B0; # (쒥; 쒥; 쒥; 쒥; 쒥; ) HANGUL SYLLABLE SSWELG
+C4A6;C4A6;110A 1170 11B1;C4A6;110A 1170 11B1; # (쒦; 쒦; 쒦; 쒦; 쒦; ) HANGUL SYLLABLE SSWELM
+C4A7;C4A7;110A 1170 11B2;C4A7;110A 1170 11B2; # (쒧; 쒧; 쒧; 쒧; 쒧; ) HANGUL SYLLABLE SSWELB
+C4A8;C4A8;110A 1170 11B3;C4A8;110A 1170 11B3; # (쒨; 쒨; 쒨; 쒨; 쒨; ) HANGUL SYLLABLE SSWELS
+C4A9;C4A9;110A 1170 11B4;C4A9;110A 1170 11B4; # (쒩; 쒩; 쒩; 쒩; 쒩; ) HANGUL SYLLABLE SSWELT
+C4AA;C4AA;110A 1170 11B5;C4AA;110A 1170 11B5; # (쒪; 쒪; 쒪; 쒪; 쒪; ) HANGUL SYLLABLE SSWELP
+C4AB;C4AB;110A 1170 11B6;C4AB;110A 1170 11B6; # (쒫; 쒫; 쒫; 쒫; 쒫; ) HANGUL SYLLABLE SSWELH
+C4AC;C4AC;110A 1170 11B7;C4AC;110A 1170 11B7; # (쒬; 쒬; 쒬; 쒬; 쒬; ) HANGUL SYLLABLE SSWEM
+C4AD;C4AD;110A 1170 11B8;C4AD;110A 1170 11B8; # (쒭; 쒭; 쒭; 쒭; 쒭; ) HANGUL SYLLABLE SSWEB
+C4AE;C4AE;110A 1170 11B9;C4AE;110A 1170 11B9; # (쒮; 쒮; 쒮; 쒮; 쒮; ) HANGUL SYLLABLE SSWEBS
+C4AF;C4AF;110A 1170 11BA;C4AF;110A 1170 11BA; # (쒯; 쒯; 쒯; 쒯; 쒯; ) HANGUL SYLLABLE SSWES
+C4B0;C4B0;110A 1170 11BB;C4B0;110A 1170 11BB; # (쒰; 쒰; 쒰; 쒰; 쒰; ) HANGUL SYLLABLE SSWESS
+C4B1;C4B1;110A 1170 11BC;C4B1;110A 1170 11BC; # (쒱; 쒱; 쒱; 쒱; 쒱; ) HANGUL SYLLABLE SSWENG
+C4B2;C4B2;110A 1170 11BD;C4B2;110A 1170 11BD; # (쒲; 쒲; 쒲; 쒲; 쒲; ) HANGUL SYLLABLE SSWEJ
+C4B3;C4B3;110A 1170 11BE;C4B3;110A 1170 11BE; # (쒳; 쒳; 쒳; 쒳; 쒳; ) HANGUL SYLLABLE SSWEC
+C4B4;C4B4;110A 1170 11BF;C4B4;110A 1170 11BF; # (쒴; 쒴; 쒴; 쒴; 쒴; ) HANGUL SYLLABLE SSWEK
+C4B5;C4B5;110A 1170 11C0;C4B5;110A 1170 11C0; # (쒵; 쒵; 쒵; 쒵; 쒵; ) HANGUL SYLLABLE SSWET
+C4B6;C4B6;110A 1170 11C1;C4B6;110A 1170 11C1; # (ì’¶; ì’¶; á„Šá…°á‡; ì’¶; á„Šá…°á‡; ) HANGUL SYLLABLE SSWEP
+C4B7;C4B7;110A 1170 11C2;C4B7;110A 1170 11C2; # (쒷; 쒷; 쒷; 쒷; 쒷; ) HANGUL SYLLABLE SSWEH
+C4B8;C4B8;110A 1171;C4B8;110A 1171; # (ì’¸; ì’¸; á„Šá…±; ì’¸; á„Šá…±; ) HANGUL SYLLABLE SSWI
+C4B9;C4B9;110A 1171 11A8;C4B9;110A 1171 11A8; # (쒹; 쒹; 쒹; 쒹; 쒹; ) HANGUL SYLLABLE SSWIG
+C4BA;C4BA;110A 1171 11A9;C4BA;110A 1171 11A9; # (쒺; 쒺; 쒺; 쒺; 쒺; ) HANGUL SYLLABLE SSWIGG
+C4BB;C4BB;110A 1171 11AA;C4BB;110A 1171 11AA; # (쒻; 쒻; 쒻; 쒻; 쒻; ) HANGUL SYLLABLE SSWIGS
+C4BC;C4BC;110A 1171 11AB;C4BC;110A 1171 11AB; # (쒼; 쒼; 쒼; 쒼; 쒼; ) HANGUL SYLLABLE SSWIN
+C4BD;C4BD;110A 1171 11AC;C4BD;110A 1171 11AC; # (쒽; 쒽; 쒽; 쒽; 쒽; ) HANGUL SYLLABLE SSWINJ
+C4BE;C4BE;110A 1171 11AD;C4BE;110A 1171 11AD; # (쒾; 쒾; 쒾; 쒾; 쒾; ) HANGUL SYLLABLE SSWINH
+C4BF;C4BF;110A 1171 11AE;C4BF;110A 1171 11AE; # (쒿; 쒿; 쒿; 쒿; 쒿; ) HANGUL SYLLABLE SSWID
+C4C0;C4C0;110A 1171 11AF;C4C0;110A 1171 11AF; # (쓀; 쓀; 쓀; 쓀; 쓀; ) HANGUL SYLLABLE SSWIL
+C4C1;C4C1;110A 1171 11B0;C4C1;110A 1171 11B0; # (ì“; ì“; 쓁; ì“; 쓁; ) HANGUL SYLLABLE SSWILG
+C4C2;C4C2;110A 1171 11B1;C4C2;110A 1171 11B1; # (쓂; 쓂; 쓂; 쓂; 쓂; ) HANGUL SYLLABLE SSWILM
+C4C3;C4C3;110A 1171 11B2;C4C3;110A 1171 11B2; # (쓃; 쓃; 쓃; 쓃; 쓃; ) HANGUL SYLLABLE SSWILB
+C4C4;C4C4;110A 1171 11B3;C4C4;110A 1171 11B3; # (쓄; 쓄; 쓄; 쓄; 쓄; ) HANGUL SYLLABLE SSWILS
+C4C5;C4C5;110A 1171 11B4;C4C5;110A 1171 11B4; # (쓅; 쓅; 쓅; 쓅; 쓅; ) HANGUL SYLLABLE SSWILT
+C4C6;C4C6;110A 1171 11B5;C4C6;110A 1171 11B5; # (쓆; 쓆; 쓆; 쓆; 쓆; ) HANGUL SYLLABLE SSWILP
+C4C7;C4C7;110A 1171 11B6;C4C7;110A 1171 11B6; # (쓇; 쓇; 쓇; 쓇; 쓇; ) HANGUL SYLLABLE SSWILH
+C4C8;C4C8;110A 1171 11B7;C4C8;110A 1171 11B7; # (쓈; 쓈; 쓈; 쓈; 쓈; ) HANGUL SYLLABLE SSWIM
+C4C9;C4C9;110A 1171 11B8;C4C9;110A 1171 11B8; # (쓉; 쓉; 쓉; 쓉; 쓉; ) HANGUL SYLLABLE SSWIB
+C4CA;C4CA;110A 1171 11B9;C4CA;110A 1171 11B9; # (쓊; 쓊; 쓊; 쓊; 쓊; ) HANGUL SYLLABLE SSWIBS
+C4CB;C4CB;110A 1171 11BA;C4CB;110A 1171 11BA; # (쓋; 쓋; 쓋; 쓋; 쓋; ) HANGUL SYLLABLE SSWIS
+C4CC;C4CC;110A 1171 11BB;C4CC;110A 1171 11BB; # (쓌; 쓌; 쓌; 쓌; 쓌; ) HANGUL SYLLABLE SSWISS
+C4CD;C4CD;110A 1171 11BC;C4CD;110A 1171 11BC; # (ì“; ì“; 쓍; ì“; 쓍; ) HANGUL SYLLABLE SSWING
+C4CE;C4CE;110A 1171 11BD;C4CE;110A 1171 11BD; # (쓎; 쓎; 쓎; 쓎; 쓎; ) HANGUL SYLLABLE SSWIJ
+C4CF;C4CF;110A 1171 11BE;C4CF;110A 1171 11BE; # (ì“; ì“; 쓏; ì“; 쓏; ) HANGUL SYLLABLE SSWIC
+C4D0;C4D0;110A 1171 11BF;C4D0;110A 1171 11BF; # (ì“; ì“; 쓐; ì“; 쓐; ) HANGUL SYLLABLE SSWIK
+C4D1;C4D1;110A 1171 11C0;C4D1;110A 1171 11C0; # (쓑; 쓑; 쓑; 쓑; 쓑; ) HANGUL SYLLABLE SSWIT
+C4D2;C4D2;110A 1171 11C1;C4D2;110A 1171 11C1; # (ì“’; ì“’; á„Šá…±á‡; ì“’; á„Šá…±á‡; ) HANGUL SYLLABLE SSWIP
+C4D3;C4D3;110A 1171 11C2;C4D3;110A 1171 11C2; # (쓓; 쓓; 쓓; 쓓; 쓓; ) HANGUL SYLLABLE SSWIH
+C4D4;C4D4;110A 1172;C4D4;110A 1172; # (ì“”; ì“”; á„Šá…²; ì“”; á„Šá…²; ) HANGUL SYLLABLE SSYU
+C4D5;C4D5;110A 1172 11A8;C4D5;110A 1172 11A8; # (쓕; 쓕; 쓕; 쓕; 쓕; ) HANGUL SYLLABLE SSYUG
+C4D6;C4D6;110A 1172 11A9;C4D6;110A 1172 11A9; # (쓖; 쓖; 쓖; 쓖; 쓖; ) HANGUL SYLLABLE SSYUGG
+C4D7;C4D7;110A 1172 11AA;C4D7;110A 1172 11AA; # (쓗; 쓗; 쓗; 쓗; 쓗; ) HANGUL SYLLABLE SSYUGS
+C4D8;C4D8;110A 1172 11AB;C4D8;110A 1172 11AB; # (쓘; 쓘; 쓘; 쓘; 쓘; ) HANGUL SYLLABLE SSYUN
+C4D9;C4D9;110A 1172 11AC;C4D9;110A 1172 11AC; # (쓙; 쓙; 쓙; 쓙; 쓙; ) HANGUL SYLLABLE SSYUNJ
+C4DA;C4DA;110A 1172 11AD;C4DA;110A 1172 11AD; # (쓚; 쓚; 쓚; 쓚; 쓚; ) HANGUL SYLLABLE SSYUNH
+C4DB;C4DB;110A 1172 11AE;C4DB;110A 1172 11AE; # (쓛; 쓛; 쓛; 쓛; 쓛; ) HANGUL SYLLABLE SSYUD
+C4DC;C4DC;110A 1172 11AF;C4DC;110A 1172 11AF; # (쓜; 쓜; 쓜; 쓜; 쓜; ) HANGUL SYLLABLE SSYUL
+C4DD;C4DD;110A 1172 11B0;C4DD;110A 1172 11B0; # (ì“; ì“; 쓝; ì“; 쓝; ) HANGUL SYLLABLE SSYULG
+C4DE;C4DE;110A 1172 11B1;C4DE;110A 1172 11B1; # (쓞; 쓞; 쓞; 쓞; 쓞; ) HANGUL SYLLABLE SSYULM
+C4DF;C4DF;110A 1172 11B2;C4DF;110A 1172 11B2; # (쓟; 쓟; 쓟; 쓟; 쓟; ) HANGUL SYLLABLE SSYULB
+C4E0;C4E0;110A 1172 11B3;C4E0;110A 1172 11B3; # (쓠; 쓠; 쓠; 쓠; 쓠; ) HANGUL SYLLABLE SSYULS
+C4E1;C4E1;110A 1172 11B4;C4E1;110A 1172 11B4; # (쓡; 쓡; 쓡; 쓡; 쓡; ) HANGUL SYLLABLE SSYULT
+C4E2;C4E2;110A 1172 11B5;C4E2;110A 1172 11B5; # (쓢; 쓢; 쓢; 쓢; 쓢; ) HANGUL SYLLABLE SSYULP
+C4E3;C4E3;110A 1172 11B6;C4E3;110A 1172 11B6; # (쓣; 쓣; 쓣; 쓣; 쓣; ) HANGUL SYLLABLE SSYULH
+C4E4;C4E4;110A 1172 11B7;C4E4;110A 1172 11B7; # (쓤; 쓤; 쓤; 쓤; 쓤; ) HANGUL SYLLABLE SSYUM
+C4E5;C4E5;110A 1172 11B8;C4E5;110A 1172 11B8; # (쓥; 쓥; 쓥; 쓥; 쓥; ) HANGUL SYLLABLE SSYUB
+C4E6;C4E6;110A 1172 11B9;C4E6;110A 1172 11B9; # (쓦; 쓦; 쓦; 쓦; 쓦; ) HANGUL SYLLABLE SSYUBS
+C4E7;C4E7;110A 1172 11BA;C4E7;110A 1172 11BA; # (쓧; 쓧; 쓧; 쓧; 쓧; ) HANGUL SYLLABLE SSYUS
+C4E8;C4E8;110A 1172 11BB;C4E8;110A 1172 11BB; # (쓨; 쓨; 쓨; 쓨; 쓨; ) HANGUL SYLLABLE SSYUSS
+C4E9;C4E9;110A 1172 11BC;C4E9;110A 1172 11BC; # (쓩; 쓩; 쓩; 쓩; 쓩; ) HANGUL SYLLABLE SSYUNG
+C4EA;C4EA;110A 1172 11BD;C4EA;110A 1172 11BD; # (쓪; 쓪; 쓪; 쓪; 쓪; ) HANGUL SYLLABLE SSYUJ
+C4EB;C4EB;110A 1172 11BE;C4EB;110A 1172 11BE; # (쓫; 쓫; 쓫; 쓫; 쓫; ) HANGUL SYLLABLE SSYUC
+C4EC;C4EC;110A 1172 11BF;C4EC;110A 1172 11BF; # (쓬; 쓬; 쓬; 쓬; 쓬; ) HANGUL SYLLABLE SSYUK
+C4ED;C4ED;110A 1172 11C0;C4ED;110A 1172 11C0; # (쓭; 쓭; 쓭; 쓭; 쓭; ) HANGUL SYLLABLE SSYUT
+C4EE;C4EE;110A 1172 11C1;C4EE;110A 1172 11C1; # (ì“®; ì“®; á„Šá…²á‡; ì“®; á„Šá…²á‡; ) HANGUL SYLLABLE SSYUP
+C4EF;C4EF;110A 1172 11C2;C4EF;110A 1172 11C2; # (쓯; 쓯; 쓯; 쓯; 쓯; ) HANGUL SYLLABLE SSYUH
+C4F0;C4F0;110A 1173;C4F0;110A 1173; # (ì“°; ì“°; á„Šá…³; ì“°; á„Šá…³; ) HANGUL SYLLABLE SSEU
+C4F1;C4F1;110A 1173 11A8;C4F1;110A 1173 11A8; # (쓱; 쓱; 쓱; 쓱; 쓱; ) HANGUL SYLLABLE SSEUG
+C4F2;C4F2;110A 1173 11A9;C4F2;110A 1173 11A9; # (쓲; 쓲; 쓲; 쓲; 쓲; ) HANGUL SYLLABLE SSEUGG
+C4F3;C4F3;110A 1173 11AA;C4F3;110A 1173 11AA; # (쓳; 쓳; 쓳; 쓳; 쓳; ) HANGUL SYLLABLE SSEUGS
+C4F4;C4F4;110A 1173 11AB;C4F4;110A 1173 11AB; # (쓴; 쓴; 쓴; 쓴; 쓴; ) HANGUL SYLLABLE SSEUN
+C4F5;C4F5;110A 1173 11AC;C4F5;110A 1173 11AC; # (쓵; 쓵; 쓵; 쓵; 쓵; ) HANGUL SYLLABLE SSEUNJ
+C4F6;C4F6;110A 1173 11AD;C4F6;110A 1173 11AD; # (쓶; 쓶; 쓶; 쓶; 쓶; ) HANGUL SYLLABLE SSEUNH
+C4F7;C4F7;110A 1173 11AE;C4F7;110A 1173 11AE; # (쓷; 쓷; 쓷; 쓷; 쓷; ) HANGUL SYLLABLE SSEUD
+C4F8;C4F8;110A 1173 11AF;C4F8;110A 1173 11AF; # (쓸; 쓸; 쓸; 쓸; 쓸; ) HANGUL SYLLABLE SSEUL
+C4F9;C4F9;110A 1173 11B0;C4F9;110A 1173 11B0; # (쓹; 쓹; 쓹; 쓹; 쓹; ) HANGUL SYLLABLE SSEULG
+C4FA;C4FA;110A 1173 11B1;C4FA;110A 1173 11B1; # (쓺; 쓺; 쓺; 쓺; 쓺; ) HANGUL SYLLABLE SSEULM
+C4FB;C4FB;110A 1173 11B2;C4FB;110A 1173 11B2; # (쓻; 쓻; 쓻; 쓻; 쓻; ) HANGUL SYLLABLE SSEULB
+C4FC;C4FC;110A 1173 11B3;C4FC;110A 1173 11B3; # (쓼; 쓼; 쓼; 쓼; 쓼; ) HANGUL SYLLABLE SSEULS
+C4FD;C4FD;110A 1173 11B4;C4FD;110A 1173 11B4; # (쓽; 쓽; 쓽; 쓽; 쓽; ) HANGUL SYLLABLE SSEULT
+C4FE;C4FE;110A 1173 11B5;C4FE;110A 1173 11B5; # (쓾; 쓾; 쓾; 쓾; 쓾; ) HANGUL SYLLABLE SSEULP
+C4FF;C4FF;110A 1173 11B6;C4FF;110A 1173 11B6; # (쓿; 쓿; 쓿; 쓿; 쓿; ) HANGUL SYLLABLE SSEULH
+C500;C500;110A 1173 11B7;C500;110A 1173 11B7; # (씀; 씀; 씀; 씀; 씀; ) HANGUL SYLLABLE SSEUM
+C501;C501;110A 1173 11B8;C501;110A 1173 11B8; # (ì”; ì”; 씁; ì”; 씁; ) HANGUL SYLLABLE SSEUB
+C502;C502;110A 1173 11B9;C502;110A 1173 11B9; # (씂; 씂; 씂; 씂; 씂; ) HANGUL SYLLABLE SSEUBS
+C503;C503;110A 1173 11BA;C503;110A 1173 11BA; # (씃; 씃; 씃; 씃; 씃; ) HANGUL SYLLABLE SSEUS
+C504;C504;110A 1173 11BB;C504;110A 1173 11BB; # (씄; 씄; 씄; 씄; 씄; ) HANGUL SYLLABLE SSEUSS
+C505;C505;110A 1173 11BC;C505;110A 1173 11BC; # (씅; 씅; 씅; 씅; 씅; ) HANGUL SYLLABLE SSEUNG
+C506;C506;110A 1173 11BD;C506;110A 1173 11BD; # (씆; 씆; 씆; 씆; 씆; ) HANGUL SYLLABLE SSEUJ
+C507;C507;110A 1173 11BE;C507;110A 1173 11BE; # (씇; 씇; 씇; 씇; 씇; ) HANGUL SYLLABLE SSEUC
+C508;C508;110A 1173 11BF;C508;110A 1173 11BF; # (씈; 씈; 씈; 씈; 씈; ) HANGUL SYLLABLE SSEUK
+C509;C509;110A 1173 11C0;C509;110A 1173 11C0; # (씉; 씉; 씉; 씉; 씉; ) HANGUL SYLLABLE SSEUT
+C50A;C50A;110A 1173 11C1;C50A;110A 1173 11C1; # (씊; 씊; á„Šá…³á‡; 씊; á„Šá…³á‡; ) HANGUL SYLLABLE SSEUP
+C50B;C50B;110A 1173 11C2;C50B;110A 1173 11C2; # (씋; 씋; 씋; 씋; 씋; ) HANGUL SYLLABLE SSEUH
+C50C;C50C;110A 1174;C50C;110A 1174; # (씌; 씌; 씌; 씌; 씌; ) HANGUL SYLLABLE SSYI
+C50D;C50D;110A 1174 11A8;C50D;110A 1174 11A8; # (ì”; ì”; 씍; ì”; 씍; ) HANGUL SYLLABLE SSYIG
+C50E;C50E;110A 1174 11A9;C50E;110A 1174 11A9; # (씎; 씎; 씎; 씎; 씎; ) HANGUL SYLLABLE SSYIGG
+C50F;C50F;110A 1174 11AA;C50F;110A 1174 11AA; # (ì”; ì”; 씏; ì”; 씏; ) HANGUL SYLLABLE SSYIGS
+C510;C510;110A 1174 11AB;C510;110A 1174 11AB; # (ì”; ì”; 씐; ì”; 씐; ) HANGUL SYLLABLE SSYIN
+C511;C511;110A 1174 11AC;C511;110A 1174 11AC; # (씑; 씑; 씑; 씑; 씑; ) HANGUL SYLLABLE SSYINJ
+C512;C512;110A 1174 11AD;C512;110A 1174 11AD; # (씒; 씒; 씒; 씒; 씒; ) HANGUL SYLLABLE SSYINH
+C513;C513;110A 1174 11AE;C513;110A 1174 11AE; # (씓; 씓; 씓; 씓; 씓; ) HANGUL SYLLABLE SSYID
+C514;C514;110A 1174 11AF;C514;110A 1174 11AF; # (씔; 씔; 씔; 씔; 씔; ) HANGUL SYLLABLE SSYIL
+C515;C515;110A 1174 11B0;C515;110A 1174 11B0; # (씕; 씕; 씕; 씕; 씕; ) HANGUL SYLLABLE SSYILG
+C516;C516;110A 1174 11B1;C516;110A 1174 11B1; # (씖; 씖; 씖; 씖; 씖; ) HANGUL SYLLABLE SSYILM
+C517;C517;110A 1174 11B2;C517;110A 1174 11B2; # (씗; 씗; 씗; 씗; 씗; ) HANGUL SYLLABLE SSYILB
+C518;C518;110A 1174 11B3;C518;110A 1174 11B3; # (씘; 씘; 씘; 씘; 씘; ) HANGUL SYLLABLE SSYILS
+C519;C519;110A 1174 11B4;C519;110A 1174 11B4; # (씙; 씙; 씙; 씙; 씙; ) HANGUL SYLLABLE SSYILT
+C51A;C51A;110A 1174 11B5;C51A;110A 1174 11B5; # (씚; 씚; 씚; 씚; 씚; ) HANGUL SYLLABLE SSYILP
+C51B;C51B;110A 1174 11B6;C51B;110A 1174 11B6; # (씛; 씛; 씛; 씛; 씛; ) HANGUL SYLLABLE SSYILH
+C51C;C51C;110A 1174 11B7;C51C;110A 1174 11B7; # (씜; 씜; 씜; 씜; 씜; ) HANGUL SYLLABLE SSYIM
+C51D;C51D;110A 1174 11B8;C51D;110A 1174 11B8; # (ì”; ì”; 씝; ì”; 씝; ) HANGUL SYLLABLE SSYIB
+C51E;C51E;110A 1174 11B9;C51E;110A 1174 11B9; # (씞; 씞; 씞; 씞; 씞; ) HANGUL SYLLABLE SSYIBS
+C51F;C51F;110A 1174 11BA;C51F;110A 1174 11BA; # (씟; 씟; 씟; 씟; 씟; ) HANGUL SYLLABLE SSYIS
+C520;C520;110A 1174 11BB;C520;110A 1174 11BB; # (씠; 씠; 씠; 씠; 씠; ) HANGUL SYLLABLE SSYISS
+C521;C521;110A 1174 11BC;C521;110A 1174 11BC; # (씡; 씡; 씡; 씡; 씡; ) HANGUL SYLLABLE SSYING
+C522;C522;110A 1174 11BD;C522;110A 1174 11BD; # (씢; 씢; 씢; 씢; 씢; ) HANGUL SYLLABLE SSYIJ
+C523;C523;110A 1174 11BE;C523;110A 1174 11BE; # (씣; 씣; 씣; 씣; 씣; ) HANGUL SYLLABLE SSYIC
+C524;C524;110A 1174 11BF;C524;110A 1174 11BF; # (씤; 씤; 씤; 씤; 씤; ) HANGUL SYLLABLE SSYIK
+C525;C525;110A 1174 11C0;C525;110A 1174 11C0; # (씥; 씥; 씥; 씥; 씥; ) HANGUL SYLLABLE SSYIT
+C526;C526;110A 1174 11C1;C526;110A 1174 11C1; # (씦; 씦; á„Šá…´á‡; 씦; á„Šá…´á‡; ) HANGUL SYLLABLE SSYIP
+C527;C527;110A 1174 11C2;C527;110A 1174 11C2; # (씧; 씧; 씧; 씧; 씧; ) HANGUL SYLLABLE SSYIH
+C528;C528;110A 1175;C528;110A 1175; # (씨; 씨; 씨; 씨; 씨; ) HANGUL SYLLABLE SSI
+C529;C529;110A 1175 11A8;C529;110A 1175 11A8; # (씩; 씩; 씩; 씩; 씩; ) HANGUL SYLLABLE SSIG
+C52A;C52A;110A 1175 11A9;C52A;110A 1175 11A9; # (씪; 씪; 씪; 씪; 씪; ) HANGUL SYLLABLE SSIGG
+C52B;C52B;110A 1175 11AA;C52B;110A 1175 11AA; # (씫; 씫; 씫; 씫; 씫; ) HANGUL SYLLABLE SSIGS
+C52C;C52C;110A 1175 11AB;C52C;110A 1175 11AB; # (씬; 씬; 씬; 씬; 씬; ) HANGUL SYLLABLE SSIN
+C52D;C52D;110A 1175 11AC;C52D;110A 1175 11AC; # (씭; 씭; 씭; 씭; 씭; ) HANGUL SYLLABLE SSINJ
+C52E;C52E;110A 1175 11AD;C52E;110A 1175 11AD; # (씮; 씮; 씮; 씮; 씮; ) HANGUL SYLLABLE SSINH
+C52F;C52F;110A 1175 11AE;C52F;110A 1175 11AE; # (씯; 씯; 씯; 씯; 씯; ) HANGUL SYLLABLE SSID
+C530;C530;110A 1175 11AF;C530;110A 1175 11AF; # (씰; 씰; 씰; 씰; 씰; ) HANGUL SYLLABLE SSIL
+C531;C531;110A 1175 11B0;C531;110A 1175 11B0; # (씱; 씱; 씱; 씱; 씱; ) HANGUL SYLLABLE SSILG
+C532;C532;110A 1175 11B1;C532;110A 1175 11B1; # (씲; 씲; 씲; 씲; 씲; ) HANGUL SYLLABLE SSILM
+C533;C533;110A 1175 11B2;C533;110A 1175 11B2; # (씳; 씳; 씳; 씳; 씳; ) HANGUL SYLLABLE SSILB
+C534;C534;110A 1175 11B3;C534;110A 1175 11B3; # (씴; 씴; 씴; 씴; 씴; ) HANGUL SYLLABLE SSILS
+C535;C535;110A 1175 11B4;C535;110A 1175 11B4; # (씵; 씵; 씵; 씵; 씵; ) HANGUL SYLLABLE SSILT
+C536;C536;110A 1175 11B5;C536;110A 1175 11B5; # (씶; 씶; 씶; 씶; 씶; ) HANGUL SYLLABLE SSILP
+C537;C537;110A 1175 11B6;C537;110A 1175 11B6; # (씷; 씷; 씷; 씷; 씷; ) HANGUL SYLLABLE SSILH
+C538;C538;110A 1175 11B7;C538;110A 1175 11B7; # (씸; 씸; 씸; 씸; 씸; ) HANGUL SYLLABLE SSIM
+C539;C539;110A 1175 11B8;C539;110A 1175 11B8; # (씹; 씹; 씹; 씹; 씹; ) HANGUL SYLLABLE SSIB
+C53A;C53A;110A 1175 11B9;C53A;110A 1175 11B9; # (씺; 씺; 씺; 씺; 씺; ) HANGUL SYLLABLE SSIBS
+C53B;C53B;110A 1175 11BA;C53B;110A 1175 11BA; # (씻; 씻; 씻; 씻; 씻; ) HANGUL SYLLABLE SSIS
+C53C;C53C;110A 1175 11BB;C53C;110A 1175 11BB; # (씼; 씼; 씼; 씼; 씼; ) HANGUL SYLLABLE SSISS
+C53D;C53D;110A 1175 11BC;C53D;110A 1175 11BC; # (씽; 씽; 씽; 씽; 씽; ) HANGUL SYLLABLE SSING
+C53E;C53E;110A 1175 11BD;C53E;110A 1175 11BD; # (씾; 씾; 씾; 씾; 씾; ) HANGUL SYLLABLE SSIJ
+C53F;C53F;110A 1175 11BE;C53F;110A 1175 11BE; # (씿; 씿; 씿; 씿; 씿; ) HANGUL SYLLABLE SSIC
+C540;C540;110A 1175 11BF;C540;110A 1175 11BF; # (앀; 앀; 앀; 앀; 앀; ) HANGUL SYLLABLE SSIK
+C541;C541;110A 1175 11C0;C541;110A 1175 11C0; # (ì•; ì•; 앁; ì•; 앁; ) HANGUL SYLLABLE SSIT
+C542;C542;110A 1175 11C1;C542;110A 1175 11C1; # (ì•‚; ì•‚; á„Šá…µá‡; ì•‚; á„Šá…µá‡; ) HANGUL SYLLABLE SSIP
+C543;C543;110A 1175 11C2;C543;110A 1175 11C2; # (앃; 앃; 앃; 앃; 앃; ) HANGUL SYLLABLE SSIH
+C544;C544;110B 1161;C544;110B 1161; # (ì•„; ì•„; á„‹á…¡; ì•„; á„‹á…¡; ) HANGUL SYLLABLE A
+C545;C545;110B 1161 11A8;C545;110B 1161 11A8; # (악; 악; 악; 악; 악; ) HANGUL SYLLABLE AG
+C546;C546;110B 1161 11A9;C546;110B 1161 11A9; # (앆; 앆; 앆; 앆; 앆; ) HANGUL SYLLABLE AGG
+C547;C547;110B 1161 11AA;C547;110B 1161 11AA; # (앇; 앇; 앇; 앇; 앇; ) HANGUL SYLLABLE AGS
+C548;C548;110B 1161 11AB;C548;110B 1161 11AB; # (안; 안; 안; 안; 안; ) HANGUL SYLLABLE AN
+C549;C549;110B 1161 11AC;C549;110B 1161 11AC; # (앉; 앉; 앉; 앉; 앉; ) HANGUL SYLLABLE ANJ
+C54A;C54A;110B 1161 11AD;C54A;110B 1161 11AD; # (않; 않; 않; 않; 않; ) HANGUL SYLLABLE ANH
+C54B;C54B;110B 1161 11AE;C54B;110B 1161 11AE; # (앋; 앋; 앋; 앋; 앋; ) HANGUL SYLLABLE AD
+C54C;C54C;110B 1161 11AF;C54C;110B 1161 11AF; # (알; 알; 알; 알; 알; ) HANGUL SYLLABLE AL
+C54D;C54D;110B 1161 11B0;C54D;110B 1161 11B0; # (ì•; ì•; 앍; ì•; 앍; ) HANGUL SYLLABLE ALG
+C54E;C54E;110B 1161 11B1;C54E;110B 1161 11B1; # (앎; 앎; 앎; 앎; 앎; ) HANGUL SYLLABLE ALM
+C54F;C54F;110B 1161 11B2;C54F;110B 1161 11B2; # (ì•; ì•; 앏; ì•; 앏; ) HANGUL SYLLABLE ALB
+C550;C550;110B 1161 11B3;C550;110B 1161 11B3; # (ì•; ì•; 앐; ì•; 앐; ) HANGUL SYLLABLE ALS
+C551;C551;110B 1161 11B4;C551;110B 1161 11B4; # (앑; 앑; 앑; 앑; 앑; ) HANGUL SYLLABLE ALT
+C552;C552;110B 1161 11B5;C552;110B 1161 11B5; # (앒; 앒; 앒; 앒; 앒; ) HANGUL SYLLABLE ALP
+C553;C553;110B 1161 11B6;C553;110B 1161 11B6; # (앓; 앓; 앓; 앓; 앓; ) HANGUL SYLLABLE ALH
+C554;C554;110B 1161 11B7;C554;110B 1161 11B7; # (암; 암; 암; 암; 암; ) HANGUL SYLLABLE AM
+C555;C555;110B 1161 11B8;C555;110B 1161 11B8; # (압; 압; 압; 압; 압; ) HANGUL SYLLABLE AB
+C556;C556;110B 1161 11B9;C556;110B 1161 11B9; # (앖; 앖; 앖; 앖; 앖; ) HANGUL SYLLABLE ABS
+C557;C557;110B 1161 11BA;C557;110B 1161 11BA; # (앗; 앗; 앗; 앗; 앗; ) HANGUL SYLLABLE AS
+C558;C558;110B 1161 11BB;C558;110B 1161 11BB; # (았; 았; 았; 았; 았; ) HANGUL SYLLABLE ASS
+C559;C559;110B 1161 11BC;C559;110B 1161 11BC; # (앙; 앙; 앙; 앙; 앙; ) HANGUL SYLLABLE ANG
+C55A;C55A;110B 1161 11BD;C55A;110B 1161 11BD; # (앚; 앚; 앚; 앚; 앚; ) HANGUL SYLLABLE AJ
+C55B;C55B;110B 1161 11BE;C55B;110B 1161 11BE; # (앛; 앛; 앛; 앛; 앛; ) HANGUL SYLLABLE AC
+C55C;C55C;110B 1161 11BF;C55C;110B 1161 11BF; # (앜; 앜; 앜; 앜; 앜; ) HANGUL SYLLABLE AK
+C55D;C55D;110B 1161 11C0;C55D;110B 1161 11C0; # (ì•; ì•; 앝; ì•; 앝; ) HANGUL SYLLABLE AT
+C55E;C55E;110B 1161 11C1;C55E;110B 1161 11C1; # (ì•ž; ì•ž; á„‹á…¡á‡; ì•ž; á„‹á…¡á‡; ) HANGUL SYLLABLE AP
+C55F;C55F;110B 1161 11C2;C55F;110B 1161 11C2; # (앟; 앟; 앟; 앟; 앟; ) HANGUL SYLLABLE AH
+C560;C560;110B 1162;C560;110B 1162; # (ì• ; ì• ; á„‹á…¢; ì• ; á„‹á…¢; ) HANGUL SYLLABLE AE
+C561;C561;110B 1162 11A8;C561;110B 1162 11A8; # (액; 액; 액; 액; 액; ) HANGUL SYLLABLE AEG
+C562;C562;110B 1162 11A9;C562;110B 1162 11A9; # (앢; 앢; 앢; 앢; 앢; ) HANGUL SYLLABLE AEGG
+C563;C563;110B 1162 11AA;C563;110B 1162 11AA; # (앣; 앣; 앣; 앣; 앣; ) HANGUL SYLLABLE AEGS
+C564;C564;110B 1162 11AB;C564;110B 1162 11AB; # (앤; 앤; 앤; 앤; 앤; ) HANGUL SYLLABLE AEN
+C565;C565;110B 1162 11AC;C565;110B 1162 11AC; # (앥; 앥; 앥; 앥; 앥; ) HANGUL SYLLABLE AENJ
+C566;C566;110B 1162 11AD;C566;110B 1162 11AD; # (앦; 앦; 앦; 앦; 앦; ) HANGUL SYLLABLE AENH
+C567;C567;110B 1162 11AE;C567;110B 1162 11AE; # (앧; 앧; 앧; 앧; 앧; ) HANGUL SYLLABLE AED
+C568;C568;110B 1162 11AF;C568;110B 1162 11AF; # (앨; 앨; 앨; 앨; 앨; ) HANGUL SYLLABLE AEL
+C569;C569;110B 1162 11B0;C569;110B 1162 11B0; # (앩; 앩; 앩; 앩; 앩; ) HANGUL SYLLABLE AELG
+C56A;C56A;110B 1162 11B1;C56A;110B 1162 11B1; # (앪; 앪; 앪; 앪; 앪; ) HANGUL SYLLABLE AELM
+C56B;C56B;110B 1162 11B2;C56B;110B 1162 11B2; # (앫; 앫; 앫; 앫; 앫; ) HANGUL SYLLABLE AELB
+C56C;C56C;110B 1162 11B3;C56C;110B 1162 11B3; # (앬; 앬; 앬; 앬; 앬; ) HANGUL SYLLABLE AELS
+C56D;C56D;110B 1162 11B4;C56D;110B 1162 11B4; # (앭; 앭; 앭; 앭; 앭; ) HANGUL SYLLABLE AELT
+C56E;C56E;110B 1162 11B5;C56E;110B 1162 11B5; # (앮; 앮; 앮; 앮; 앮; ) HANGUL SYLLABLE AELP
+C56F;C56F;110B 1162 11B6;C56F;110B 1162 11B6; # (앯; 앯; 앯; 앯; 앯; ) HANGUL SYLLABLE AELH
+C570;C570;110B 1162 11B7;C570;110B 1162 11B7; # (앰; 앰; 앰; 앰; 앰; ) HANGUL SYLLABLE AEM
+C571;C571;110B 1162 11B8;C571;110B 1162 11B8; # (앱; 앱; 앱; 앱; 앱; ) HANGUL SYLLABLE AEB
+C572;C572;110B 1162 11B9;C572;110B 1162 11B9; # (앲; 앲; 앲; 앲; 앲; ) HANGUL SYLLABLE AEBS
+C573;C573;110B 1162 11BA;C573;110B 1162 11BA; # (앳; 앳; 앳; 앳; 앳; ) HANGUL SYLLABLE AES
+C574;C574;110B 1162 11BB;C574;110B 1162 11BB; # (앴; 앴; 앴; 앴; 앴; ) HANGUL SYLLABLE AESS
+C575;C575;110B 1162 11BC;C575;110B 1162 11BC; # (앵; 앵; 앵; 앵; 앵; ) HANGUL SYLLABLE AENG
+C576;C576;110B 1162 11BD;C576;110B 1162 11BD; # (앶; 앶; 앶; 앶; 앶; ) HANGUL SYLLABLE AEJ
+C577;C577;110B 1162 11BE;C577;110B 1162 11BE; # (앷; 앷; 앷; 앷; 앷; ) HANGUL SYLLABLE AEC
+C578;C578;110B 1162 11BF;C578;110B 1162 11BF; # (앸; 앸; 앸; 앸; 앸; ) HANGUL SYLLABLE AEK
+C579;C579;110B 1162 11C0;C579;110B 1162 11C0; # (앹; 앹; 앹; 앹; 앹; ) HANGUL SYLLABLE AET
+C57A;C57A;110B 1162 11C1;C57A;110B 1162 11C1; # (앺; 앺; á„‹á…¢á‡; 앺; á„‹á…¢á‡; ) HANGUL SYLLABLE AEP
+C57B;C57B;110B 1162 11C2;C57B;110B 1162 11C2; # (앻; 앻; 앻; 앻; 앻; ) HANGUL SYLLABLE AEH
+C57C;C57C;110B 1163;C57C;110B 1163; # (야; 야; 야; 야; 야; ) HANGUL SYLLABLE YA
+C57D;C57D;110B 1163 11A8;C57D;110B 1163 11A8; # (약; 약; 약; 약; 약; ) HANGUL SYLLABLE YAG
+C57E;C57E;110B 1163 11A9;C57E;110B 1163 11A9; # (앾; 앾; 앾; 앾; 앾; ) HANGUL SYLLABLE YAGG
+C57F;C57F;110B 1163 11AA;C57F;110B 1163 11AA; # (앿; 앿; 앿; 앿; 앿; ) HANGUL SYLLABLE YAGS
+C580;C580;110B 1163 11AB;C580;110B 1163 11AB; # (얀; 얀; 얀; 얀; 얀; ) HANGUL SYLLABLE YAN
+C581;C581;110B 1163 11AC;C581;110B 1163 11AC; # (ì–; ì–; 얁; ì–; 얁; ) HANGUL SYLLABLE YANJ
+C582;C582;110B 1163 11AD;C582;110B 1163 11AD; # (얂; 얂; 얂; 얂; 얂; ) HANGUL SYLLABLE YANH
+C583;C583;110B 1163 11AE;C583;110B 1163 11AE; # (얃; 얃; 얃; 얃; 얃; ) HANGUL SYLLABLE YAD
+C584;C584;110B 1163 11AF;C584;110B 1163 11AF; # (얄; 얄; 얄; 얄; 얄; ) HANGUL SYLLABLE YAL
+C585;C585;110B 1163 11B0;C585;110B 1163 11B0; # (얅; 얅; 얅; 얅; 얅; ) HANGUL SYLLABLE YALG
+C586;C586;110B 1163 11B1;C586;110B 1163 11B1; # (얆; 얆; 얆; 얆; 얆; ) HANGUL SYLLABLE YALM
+C587;C587;110B 1163 11B2;C587;110B 1163 11B2; # (얇; 얇; 얇; 얇; 얇; ) HANGUL SYLLABLE YALB
+C588;C588;110B 1163 11B3;C588;110B 1163 11B3; # (얈; 얈; 얈; 얈; 얈; ) HANGUL SYLLABLE YALS
+C589;C589;110B 1163 11B4;C589;110B 1163 11B4; # (얉; 얉; 얉; 얉; 얉; ) HANGUL SYLLABLE YALT
+C58A;C58A;110B 1163 11B5;C58A;110B 1163 11B5; # (얊; 얊; 얊; 얊; 얊; ) HANGUL SYLLABLE YALP
+C58B;C58B;110B 1163 11B6;C58B;110B 1163 11B6; # (얋; 얋; 얋; 얋; 얋; ) HANGUL SYLLABLE YALH
+C58C;C58C;110B 1163 11B7;C58C;110B 1163 11B7; # (얌; 얌; 얌; 얌; 얌; ) HANGUL SYLLABLE YAM
+C58D;C58D;110B 1163 11B8;C58D;110B 1163 11B8; # (ì–; ì–; 얍; ì–; 얍; ) HANGUL SYLLABLE YAB
+C58E;C58E;110B 1163 11B9;C58E;110B 1163 11B9; # (얎; 얎; 얎; 얎; 얎; ) HANGUL SYLLABLE YABS
+C58F;C58F;110B 1163 11BA;C58F;110B 1163 11BA; # (ì–; ì–; 얏; ì–; 얏; ) HANGUL SYLLABLE YAS
+C590;C590;110B 1163 11BB;C590;110B 1163 11BB; # (ì–; ì–; 얐; ì–; 얐; ) HANGUL SYLLABLE YASS
+C591;C591;110B 1163 11BC;C591;110B 1163 11BC; # (양; 양; 양; 양; 양; ) HANGUL SYLLABLE YANG
+C592;C592;110B 1163 11BD;C592;110B 1163 11BD; # (얒; 얒; 얒; 얒; 얒; ) HANGUL SYLLABLE YAJ
+C593;C593;110B 1163 11BE;C593;110B 1163 11BE; # (얓; 얓; 얓; 얓; 얓; ) HANGUL SYLLABLE YAC
+C594;C594;110B 1163 11BF;C594;110B 1163 11BF; # (얔; 얔; 얔; 얔; 얔; ) HANGUL SYLLABLE YAK
+C595;C595;110B 1163 11C0;C595;110B 1163 11C0; # (얕; 얕; 얕; 얕; 얕; ) HANGUL SYLLABLE YAT
+C596;C596;110B 1163 11C1;C596;110B 1163 11C1; # (ì––; ì––; á„‹á…£á‡; ì––; á„‹á…£á‡; ) HANGUL SYLLABLE YAP
+C597;C597;110B 1163 11C2;C597;110B 1163 11C2; # (얗; 얗; 얗; 얗; 얗; ) HANGUL SYLLABLE YAH
+C598;C598;110B 1164;C598;110B 1164; # (ì–˜; ì–˜; á„‹á…¤; ì–˜; á„‹á…¤; ) HANGUL SYLLABLE YAE
+C599;C599;110B 1164 11A8;C599;110B 1164 11A8; # (얙; 얙; 얙; 얙; 얙; ) HANGUL SYLLABLE YAEG
+C59A;C59A;110B 1164 11A9;C59A;110B 1164 11A9; # (얚; 얚; 얚; 얚; 얚; ) HANGUL SYLLABLE YAEGG
+C59B;C59B;110B 1164 11AA;C59B;110B 1164 11AA; # (얛; 얛; 얛; 얛; 얛; ) HANGUL SYLLABLE YAEGS
+C59C;C59C;110B 1164 11AB;C59C;110B 1164 11AB; # (얜; 얜; 얜; 얜; 얜; ) HANGUL SYLLABLE YAEN
+C59D;C59D;110B 1164 11AC;C59D;110B 1164 11AC; # (ì–; ì–; 얝; ì–; 얝; ) HANGUL SYLLABLE YAENJ
+C59E;C59E;110B 1164 11AD;C59E;110B 1164 11AD; # (얞; 얞; 얞; 얞; 얞; ) HANGUL SYLLABLE YAENH
+C59F;C59F;110B 1164 11AE;C59F;110B 1164 11AE; # (얟; 얟; 얟; 얟; 얟; ) HANGUL SYLLABLE YAED
+C5A0;C5A0;110B 1164 11AF;C5A0;110B 1164 11AF; # (얠; 얠; 얠; 얠; 얠; ) HANGUL SYLLABLE YAEL
+C5A1;C5A1;110B 1164 11B0;C5A1;110B 1164 11B0; # (얡; 얡; 얡; 얡; 얡; ) HANGUL SYLLABLE YAELG
+C5A2;C5A2;110B 1164 11B1;C5A2;110B 1164 11B1; # (얢; 얢; 얢; 얢; 얢; ) HANGUL SYLLABLE YAELM
+C5A3;C5A3;110B 1164 11B2;C5A3;110B 1164 11B2; # (얣; 얣; 얣; 얣; 얣; ) HANGUL SYLLABLE YAELB
+C5A4;C5A4;110B 1164 11B3;C5A4;110B 1164 11B3; # (얤; 얤; 얤; 얤; 얤; ) HANGUL SYLLABLE YAELS
+C5A5;C5A5;110B 1164 11B4;C5A5;110B 1164 11B4; # (얥; 얥; 얥; 얥; 얥; ) HANGUL SYLLABLE YAELT
+C5A6;C5A6;110B 1164 11B5;C5A6;110B 1164 11B5; # (얦; 얦; 얦; 얦; 얦; ) HANGUL SYLLABLE YAELP
+C5A7;C5A7;110B 1164 11B6;C5A7;110B 1164 11B6; # (얧; 얧; 얧; 얧; 얧; ) HANGUL SYLLABLE YAELH
+C5A8;C5A8;110B 1164 11B7;C5A8;110B 1164 11B7; # (얨; 얨; 얨; 얨; 얨; ) HANGUL SYLLABLE YAEM
+C5A9;C5A9;110B 1164 11B8;C5A9;110B 1164 11B8; # (얩; 얩; 얩; 얩; 얩; ) HANGUL SYLLABLE YAEB
+C5AA;C5AA;110B 1164 11B9;C5AA;110B 1164 11B9; # (얪; 얪; 얪; 얪; 얪; ) HANGUL SYLLABLE YAEBS
+C5AB;C5AB;110B 1164 11BA;C5AB;110B 1164 11BA; # (얫; 얫; 얫; 얫; 얫; ) HANGUL SYLLABLE YAES
+C5AC;C5AC;110B 1164 11BB;C5AC;110B 1164 11BB; # (얬; 얬; 얬; 얬; 얬; ) HANGUL SYLLABLE YAESS
+C5AD;C5AD;110B 1164 11BC;C5AD;110B 1164 11BC; # (얭; 얭; 얭; 얭; 얭; ) HANGUL SYLLABLE YAENG
+C5AE;C5AE;110B 1164 11BD;C5AE;110B 1164 11BD; # (얮; 얮; 얮; 얮; 얮; ) HANGUL SYLLABLE YAEJ
+C5AF;C5AF;110B 1164 11BE;C5AF;110B 1164 11BE; # (얯; 얯; 얯; 얯; 얯; ) HANGUL SYLLABLE YAEC
+C5B0;C5B0;110B 1164 11BF;C5B0;110B 1164 11BF; # (얰; 얰; 얰; 얰; 얰; ) HANGUL SYLLABLE YAEK
+C5B1;C5B1;110B 1164 11C0;C5B1;110B 1164 11C0; # (얱; 얱; 얱; 얱; 얱; ) HANGUL SYLLABLE YAET
+C5B2;C5B2;110B 1164 11C1;C5B2;110B 1164 11C1; # (ì–²; ì–²; á„‹á…¤á‡; ì–²; á„‹á…¤á‡; ) HANGUL SYLLABLE YAEP
+C5B3;C5B3;110B 1164 11C2;C5B3;110B 1164 11C2; # (얳; 얳; 얳; 얳; 얳; ) HANGUL SYLLABLE YAEH
+C5B4;C5B4;110B 1165;C5B4;110B 1165; # (ì–´; ì–´; á„‹á…¥; ì–´; á„‹á…¥; ) HANGUL SYLLABLE EO
+C5B5;C5B5;110B 1165 11A8;C5B5;110B 1165 11A8; # (억; 억; 억; 억; 억; ) HANGUL SYLLABLE EOG
+C5B6;C5B6;110B 1165 11A9;C5B6;110B 1165 11A9; # (얶; 얶; 얶; 얶; 얶; ) HANGUL SYLLABLE EOGG
+C5B7;C5B7;110B 1165 11AA;C5B7;110B 1165 11AA; # (얷; 얷; 얷; 얷; 얷; ) HANGUL SYLLABLE EOGS
+C5B8;C5B8;110B 1165 11AB;C5B8;110B 1165 11AB; # (언; 언; 언; 언; 언; ) HANGUL SYLLABLE EON
+C5B9;C5B9;110B 1165 11AC;C5B9;110B 1165 11AC; # (얹; 얹; 얹; 얹; 얹; ) HANGUL SYLLABLE EONJ
+C5BA;C5BA;110B 1165 11AD;C5BA;110B 1165 11AD; # (얺; 얺; 얺; 얺; 얺; ) HANGUL SYLLABLE EONH
+C5BB;C5BB;110B 1165 11AE;C5BB;110B 1165 11AE; # (얻; 얻; 얻; 얻; 얻; ) HANGUL SYLLABLE EOD
+C5BC;C5BC;110B 1165 11AF;C5BC;110B 1165 11AF; # (얼; 얼; 얼; 얼; 얼; ) HANGUL SYLLABLE EOL
+C5BD;C5BD;110B 1165 11B0;C5BD;110B 1165 11B0; # (얽; 얽; 얽; 얽; 얽; ) HANGUL SYLLABLE EOLG
+C5BE;C5BE;110B 1165 11B1;C5BE;110B 1165 11B1; # (얾; 얾; 얾; 얾; 얾; ) HANGUL SYLLABLE EOLM
+C5BF;C5BF;110B 1165 11B2;C5BF;110B 1165 11B2; # (얿; 얿; 얿; 얿; 얿; ) HANGUL SYLLABLE EOLB
+C5C0;C5C0;110B 1165 11B3;C5C0;110B 1165 11B3; # (엀; 엀; 엀; 엀; 엀; ) HANGUL SYLLABLE EOLS
+C5C1;C5C1;110B 1165 11B4;C5C1;110B 1165 11B4; # (ì—; ì—; 엁; ì—; 엁; ) HANGUL SYLLABLE EOLT
+C5C2;C5C2;110B 1165 11B5;C5C2;110B 1165 11B5; # (엂; 엂; 엂; 엂; 엂; ) HANGUL SYLLABLE EOLP
+C5C3;C5C3;110B 1165 11B6;C5C3;110B 1165 11B6; # (엃; 엃; 엃; 엃; 엃; ) HANGUL SYLLABLE EOLH
+C5C4;C5C4;110B 1165 11B7;C5C4;110B 1165 11B7; # (엄; 엄; 엄; 엄; 엄; ) HANGUL SYLLABLE EOM
+C5C5;C5C5;110B 1165 11B8;C5C5;110B 1165 11B8; # (업; 업; 업; 업; 업; ) HANGUL SYLLABLE EOB
+C5C6;C5C6;110B 1165 11B9;C5C6;110B 1165 11B9; # (없; 없; 없; 없; 없; ) HANGUL SYLLABLE EOBS
+C5C7;C5C7;110B 1165 11BA;C5C7;110B 1165 11BA; # (엇; 엇; 엇; 엇; 엇; ) HANGUL SYLLABLE EOS
+C5C8;C5C8;110B 1165 11BB;C5C8;110B 1165 11BB; # (었; 었; 었; 었; 었; ) HANGUL SYLLABLE EOSS
+C5C9;C5C9;110B 1165 11BC;C5C9;110B 1165 11BC; # (엉; 엉; 엉; 엉; 엉; ) HANGUL SYLLABLE EONG
+C5CA;C5CA;110B 1165 11BD;C5CA;110B 1165 11BD; # (엊; 엊; 엊; 엊; 엊; ) HANGUL SYLLABLE EOJ
+C5CB;C5CB;110B 1165 11BE;C5CB;110B 1165 11BE; # (엋; 엋; 엋; 엋; 엋; ) HANGUL SYLLABLE EOC
+C5CC;C5CC;110B 1165 11BF;C5CC;110B 1165 11BF; # (엌; 엌; 엌; 엌; 엌; ) HANGUL SYLLABLE EOK
+C5CD;C5CD;110B 1165 11C0;C5CD;110B 1165 11C0; # (ì—; ì—; 엍; ì—; 엍; ) HANGUL SYLLABLE EOT
+C5CE;C5CE;110B 1165 11C1;C5CE;110B 1165 11C1; # (ì—Ž; ì—Ž; á„‹á…¥á‡; ì—Ž; á„‹á…¥á‡; ) HANGUL SYLLABLE EOP
+C5CF;C5CF;110B 1165 11C2;C5CF;110B 1165 11C2; # (ì—; ì—; 엏; ì—; 엏; ) HANGUL SYLLABLE EOH
+C5D0;C5D0;110B 1166;C5D0;110B 1166; # (ì—; ì—; á„‹á…¦; ì—; á„‹á…¦; ) HANGUL SYLLABLE E
+C5D1;C5D1;110B 1166 11A8;C5D1;110B 1166 11A8; # (엑; 엑; 엑; 엑; 엑; ) HANGUL SYLLABLE EG
+C5D2;C5D2;110B 1166 11A9;C5D2;110B 1166 11A9; # (엒; 엒; 엒; 엒; 엒; ) HANGUL SYLLABLE EGG
+C5D3;C5D3;110B 1166 11AA;C5D3;110B 1166 11AA; # (엓; 엓; 엓; 엓; 엓; ) HANGUL SYLLABLE EGS
+C5D4;C5D4;110B 1166 11AB;C5D4;110B 1166 11AB; # (엔; 엔; 엔; 엔; 엔; ) HANGUL SYLLABLE EN
+C5D5;C5D5;110B 1166 11AC;C5D5;110B 1166 11AC; # (엕; 엕; 엕; 엕; 엕; ) HANGUL SYLLABLE ENJ
+C5D6;C5D6;110B 1166 11AD;C5D6;110B 1166 11AD; # (엖; 엖; 엖; 엖; 엖; ) HANGUL SYLLABLE ENH
+C5D7;C5D7;110B 1166 11AE;C5D7;110B 1166 11AE; # (엗; 엗; 엗; 엗; 엗; ) HANGUL SYLLABLE ED
+C5D8;C5D8;110B 1166 11AF;C5D8;110B 1166 11AF; # (엘; 엘; 엘; 엘; 엘; ) HANGUL SYLLABLE EL
+C5D9;C5D9;110B 1166 11B0;C5D9;110B 1166 11B0; # (엙; 엙; 엙; 엙; 엙; ) HANGUL SYLLABLE ELG
+C5DA;C5DA;110B 1166 11B1;C5DA;110B 1166 11B1; # (엚; 엚; 엚; 엚; 엚; ) HANGUL SYLLABLE ELM
+C5DB;C5DB;110B 1166 11B2;C5DB;110B 1166 11B2; # (엛; 엛; 엛; 엛; 엛; ) HANGUL SYLLABLE ELB
+C5DC;C5DC;110B 1166 11B3;C5DC;110B 1166 11B3; # (엜; 엜; 엜; 엜; 엜; ) HANGUL SYLLABLE ELS
+C5DD;C5DD;110B 1166 11B4;C5DD;110B 1166 11B4; # (ì—; ì—; 엝; ì—; 엝; ) HANGUL SYLLABLE ELT
+C5DE;C5DE;110B 1166 11B5;C5DE;110B 1166 11B5; # (엞; 엞; 엞; 엞; 엞; ) HANGUL SYLLABLE ELP
+C5DF;C5DF;110B 1166 11B6;C5DF;110B 1166 11B6; # (엟; 엟; 엟; 엟; 엟; ) HANGUL SYLLABLE ELH
+C5E0;C5E0;110B 1166 11B7;C5E0;110B 1166 11B7; # (엠; 엠; 엠; 엠; 엠; ) HANGUL SYLLABLE EM
+C5E1;C5E1;110B 1166 11B8;C5E1;110B 1166 11B8; # (엡; 엡; 엡; 엡; 엡; ) HANGUL SYLLABLE EB
+C5E2;C5E2;110B 1166 11B9;C5E2;110B 1166 11B9; # (엢; 엢; 엢; 엢; 엢; ) HANGUL SYLLABLE EBS
+C5E3;C5E3;110B 1166 11BA;C5E3;110B 1166 11BA; # (엣; 엣; 엣; 엣; 엣; ) HANGUL SYLLABLE ES
+C5E4;C5E4;110B 1166 11BB;C5E4;110B 1166 11BB; # (엤; 엤; 엤; 엤; 엤; ) HANGUL SYLLABLE ESS
+C5E5;C5E5;110B 1166 11BC;C5E5;110B 1166 11BC; # (엥; 엥; 엥; 엥; 엥; ) HANGUL SYLLABLE ENG
+C5E6;C5E6;110B 1166 11BD;C5E6;110B 1166 11BD; # (엦; 엦; 엦; 엦; 엦; ) HANGUL SYLLABLE EJ
+C5E7;C5E7;110B 1166 11BE;C5E7;110B 1166 11BE; # (엧; 엧; 엧; 엧; 엧; ) HANGUL SYLLABLE EC
+C5E8;C5E8;110B 1166 11BF;C5E8;110B 1166 11BF; # (엨; 엨; 엨; 엨; 엨; ) HANGUL SYLLABLE EK
+C5E9;C5E9;110B 1166 11C0;C5E9;110B 1166 11C0; # (엩; 엩; 엩; 엩; 엩; ) HANGUL SYLLABLE ET
+C5EA;C5EA;110B 1166 11C1;C5EA;110B 1166 11C1; # (ì—ª; ì—ª; á„‹á…¦á‡; ì—ª; á„‹á…¦á‡; ) HANGUL SYLLABLE EP
+C5EB;C5EB;110B 1166 11C2;C5EB;110B 1166 11C2; # (엫; 엫; 엫; 엫; 엫; ) HANGUL SYLLABLE EH
+C5EC;C5EC;110B 1167;C5EC;110B 1167; # (ì—¬; ì—¬; á„‹á…§; ì—¬; á„‹á…§; ) HANGUL SYLLABLE YEO
+C5ED;C5ED;110B 1167 11A8;C5ED;110B 1167 11A8; # (역; 역; 역; 역; 역; ) HANGUL SYLLABLE YEOG
+C5EE;C5EE;110B 1167 11A9;C5EE;110B 1167 11A9; # (엮; 엮; 엮; 엮; 엮; ) HANGUL SYLLABLE YEOGG
+C5EF;C5EF;110B 1167 11AA;C5EF;110B 1167 11AA; # (엯; 엯; 엯; 엯; 엯; ) HANGUL SYLLABLE YEOGS
+C5F0;C5F0;110B 1167 11AB;C5F0;110B 1167 11AB; # (연; 연; 연; 연; 연; ) HANGUL SYLLABLE YEON
+C5F1;C5F1;110B 1167 11AC;C5F1;110B 1167 11AC; # (엱; 엱; 엱; 엱; 엱; ) HANGUL SYLLABLE YEONJ
+C5F2;C5F2;110B 1167 11AD;C5F2;110B 1167 11AD; # (엲; 엲; 엲; 엲; 엲; ) HANGUL SYLLABLE YEONH
+C5F3;C5F3;110B 1167 11AE;C5F3;110B 1167 11AE; # (엳; 엳; 엳; 엳; 엳; ) HANGUL SYLLABLE YEOD
+C5F4;C5F4;110B 1167 11AF;C5F4;110B 1167 11AF; # (열; 열; 열; 열; 열; ) HANGUL SYLLABLE YEOL
+C5F5;C5F5;110B 1167 11B0;C5F5;110B 1167 11B0; # (엵; 엵; 엵; 엵; 엵; ) HANGUL SYLLABLE YEOLG
+C5F6;C5F6;110B 1167 11B1;C5F6;110B 1167 11B1; # (엶; 엶; 엶; 엶; 엶; ) HANGUL SYLLABLE YEOLM
+C5F7;C5F7;110B 1167 11B2;C5F7;110B 1167 11B2; # (엷; 엷; 엷; 엷; 엷; ) HANGUL SYLLABLE YEOLB
+C5F8;C5F8;110B 1167 11B3;C5F8;110B 1167 11B3; # (엸; 엸; 엸; 엸; 엸; ) HANGUL SYLLABLE YEOLS
+C5F9;C5F9;110B 1167 11B4;C5F9;110B 1167 11B4; # (엹; 엹; 엹; 엹; 엹; ) HANGUL SYLLABLE YEOLT
+C5FA;C5FA;110B 1167 11B5;C5FA;110B 1167 11B5; # (엺; 엺; 엺; 엺; 엺; ) HANGUL SYLLABLE YEOLP
+C5FB;C5FB;110B 1167 11B6;C5FB;110B 1167 11B6; # (엻; 엻; 엻; 엻; 엻; ) HANGUL SYLLABLE YEOLH
+C5FC;C5FC;110B 1167 11B7;C5FC;110B 1167 11B7; # (염; 염; 염; 염; 염; ) HANGUL SYLLABLE YEOM
+C5FD;C5FD;110B 1167 11B8;C5FD;110B 1167 11B8; # (엽; 엽; 엽; 엽; 엽; ) HANGUL SYLLABLE YEOB
+C5FE;C5FE;110B 1167 11B9;C5FE;110B 1167 11B9; # (엾; 엾; 엾; 엾; 엾; ) HANGUL SYLLABLE YEOBS
+C5FF;C5FF;110B 1167 11BA;C5FF;110B 1167 11BA; # (엿; 엿; 엿; 엿; 엿; ) HANGUL SYLLABLE YEOS
+C600;C600;110B 1167 11BB;C600;110B 1167 11BB; # (였; 였; 였; 였; 였; ) HANGUL SYLLABLE YEOSS
+C601;C601;110B 1167 11BC;C601;110B 1167 11BC; # (ì˜; ì˜; 영; ì˜; 영; ) HANGUL SYLLABLE YEONG
+C602;C602;110B 1167 11BD;C602;110B 1167 11BD; # (옂; 옂; 옂; 옂; 옂; ) HANGUL SYLLABLE YEOJ
+C603;C603;110B 1167 11BE;C603;110B 1167 11BE; # (옃; 옃; 옃; 옃; 옃; ) HANGUL SYLLABLE YEOC
+C604;C604;110B 1167 11BF;C604;110B 1167 11BF; # (옄; 옄; 옄; 옄; 옄; ) HANGUL SYLLABLE YEOK
+C605;C605;110B 1167 11C0;C605;110B 1167 11C0; # (옅; 옅; 옅; 옅; 옅; ) HANGUL SYLLABLE YEOT
+C606;C606;110B 1167 11C1;C606;110B 1167 11C1; # (옆; 옆; á„‹á…§á‡; 옆; á„‹á…§á‡; ) HANGUL SYLLABLE YEOP
+C607;C607;110B 1167 11C2;C607;110B 1167 11C2; # (옇; 옇; 옇; 옇; 옇; ) HANGUL SYLLABLE YEOH
+C608;C608;110B 1168;C608;110B 1168; # (예; 예; 예; 예; 예; ) HANGUL SYLLABLE YE
+C609;C609;110B 1168 11A8;C609;110B 1168 11A8; # (옉; 옉; 옉; 옉; 옉; ) HANGUL SYLLABLE YEG
+C60A;C60A;110B 1168 11A9;C60A;110B 1168 11A9; # (옊; 옊; 옊; 옊; 옊; ) HANGUL SYLLABLE YEGG
+C60B;C60B;110B 1168 11AA;C60B;110B 1168 11AA; # (옋; 옋; 옋; 옋; 옋; ) HANGUL SYLLABLE YEGS
+C60C;C60C;110B 1168 11AB;C60C;110B 1168 11AB; # (옌; 옌; 옌; 옌; 옌; ) HANGUL SYLLABLE YEN
+C60D;C60D;110B 1168 11AC;C60D;110B 1168 11AC; # (ì˜; ì˜; 옍; ì˜; 옍; ) HANGUL SYLLABLE YENJ
+C60E;C60E;110B 1168 11AD;C60E;110B 1168 11AD; # (옎; 옎; 옎; 옎; 옎; ) HANGUL SYLLABLE YENH
+C60F;C60F;110B 1168 11AE;C60F;110B 1168 11AE; # (ì˜; ì˜; 옏; ì˜; 옏; ) HANGUL SYLLABLE YED
+C610;C610;110B 1168 11AF;C610;110B 1168 11AF; # (ì˜; ì˜; 옐; ì˜; 옐; ) HANGUL SYLLABLE YEL
+C611;C611;110B 1168 11B0;C611;110B 1168 11B0; # (옑; 옑; 옑; 옑; 옑; ) HANGUL SYLLABLE YELG
+C612;C612;110B 1168 11B1;C612;110B 1168 11B1; # (옒; 옒; 옒; 옒; 옒; ) HANGUL SYLLABLE YELM
+C613;C613;110B 1168 11B2;C613;110B 1168 11B2; # (옓; 옓; 옓; 옓; 옓; ) HANGUL SYLLABLE YELB
+C614;C614;110B 1168 11B3;C614;110B 1168 11B3; # (옔; 옔; 옔; 옔; 옔; ) HANGUL SYLLABLE YELS
+C615;C615;110B 1168 11B4;C615;110B 1168 11B4; # (옕; 옕; 옕; 옕; 옕; ) HANGUL SYLLABLE YELT
+C616;C616;110B 1168 11B5;C616;110B 1168 11B5; # (옖; 옖; 옖; 옖; 옖; ) HANGUL SYLLABLE YELP
+C617;C617;110B 1168 11B6;C617;110B 1168 11B6; # (옗; 옗; 옗; 옗; 옗; ) HANGUL SYLLABLE YELH
+C618;C618;110B 1168 11B7;C618;110B 1168 11B7; # (옘; 옘; 옘; 옘; 옘; ) HANGUL SYLLABLE YEM
+C619;C619;110B 1168 11B8;C619;110B 1168 11B8; # (옙; 옙; 옙; 옙; 옙; ) HANGUL SYLLABLE YEB
+C61A;C61A;110B 1168 11B9;C61A;110B 1168 11B9; # (옚; 옚; 옚; 옚; 옚; ) HANGUL SYLLABLE YEBS
+C61B;C61B;110B 1168 11BA;C61B;110B 1168 11BA; # (옛; 옛; 옛; 옛; 옛; ) HANGUL SYLLABLE YES
+C61C;C61C;110B 1168 11BB;C61C;110B 1168 11BB; # (옜; 옜; 옜; 옜; 옜; ) HANGUL SYLLABLE YESS
+C61D;C61D;110B 1168 11BC;C61D;110B 1168 11BC; # (ì˜; ì˜; 옝; ì˜; 옝; ) HANGUL SYLLABLE YENG
+C61E;C61E;110B 1168 11BD;C61E;110B 1168 11BD; # (옞; 옞; 옞; 옞; 옞; ) HANGUL SYLLABLE YEJ
+C61F;C61F;110B 1168 11BE;C61F;110B 1168 11BE; # (옟; 옟; 옟; 옟; 옟; ) HANGUL SYLLABLE YEC
+C620;C620;110B 1168 11BF;C620;110B 1168 11BF; # (옠; 옠; 옠; 옠; 옠; ) HANGUL SYLLABLE YEK
+C621;C621;110B 1168 11C0;C621;110B 1168 11C0; # (옡; 옡; 옡; 옡; 옡; ) HANGUL SYLLABLE YET
+C622;C622;110B 1168 11C1;C622;110B 1168 11C1; # (옢; 옢; á„‹á…¨á‡; 옢; á„‹á…¨á‡; ) HANGUL SYLLABLE YEP
+C623;C623;110B 1168 11C2;C623;110B 1168 11C2; # (옣; 옣; 옣; 옣; 옣; ) HANGUL SYLLABLE YEH
+C624;C624;110B 1169;C624;110B 1169; # (오; 오; 오; 오; 오; ) HANGUL SYLLABLE O
+C625;C625;110B 1169 11A8;C625;110B 1169 11A8; # (옥; 옥; 옥; 옥; 옥; ) HANGUL SYLLABLE OG
+C626;C626;110B 1169 11A9;C626;110B 1169 11A9; # (옦; 옦; 옦; 옦; 옦; ) HANGUL SYLLABLE OGG
+C627;C627;110B 1169 11AA;C627;110B 1169 11AA; # (옧; 옧; 옧; 옧; 옧; ) HANGUL SYLLABLE OGS
+C628;C628;110B 1169 11AB;C628;110B 1169 11AB; # (온; 온; 온; 온; 온; ) HANGUL SYLLABLE ON
+C629;C629;110B 1169 11AC;C629;110B 1169 11AC; # (옩; 옩; 옩; 옩; 옩; ) HANGUL SYLLABLE ONJ
+C62A;C62A;110B 1169 11AD;C62A;110B 1169 11AD; # (옪; 옪; 옪; 옪; 옪; ) HANGUL SYLLABLE ONH
+C62B;C62B;110B 1169 11AE;C62B;110B 1169 11AE; # (옫; 옫; 옫; 옫; 옫; ) HANGUL SYLLABLE OD
+C62C;C62C;110B 1169 11AF;C62C;110B 1169 11AF; # (올; 올; 올; 올; 올; ) HANGUL SYLLABLE OL
+C62D;C62D;110B 1169 11B0;C62D;110B 1169 11B0; # (옭; 옭; 옭; 옭; 옭; ) HANGUL SYLLABLE OLG
+C62E;C62E;110B 1169 11B1;C62E;110B 1169 11B1; # (옮; 옮; 옮; 옮; 옮; ) HANGUL SYLLABLE OLM
+C62F;C62F;110B 1169 11B2;C62F;110B 1169 11B2; # (옯; 옯; 옯; 옯; 옯; ) HANGUL SYLLABLE OLB
+C630;C630;110B 1169 11B3;C630;110B 1169 11B3; # (옰; 옰; 옰; 옰; 옰; ) HANGUL SYLLABLE OLS
+C631;C631;110B 1169 11B4;C631;110B 1169 11B4; # (옱; 옱; 옱; 옱; 옱; ) HANGUL SYLLABLE OLT
+C632;C632;110B 1169 11B5;C632;110B 1169 11B5; # (옲; 옲; 옲; 옲; 옲; ) HANGUL SYLLABLE OLP
+C633;C633;110B 1169 11B6;C633;110B 1169 11B6; # (옳; 옳; 옳; 옳; 옳; ) HANGUL SYLLABLE OLH
+C634;C634;110B 1169 11B7;C634;110B 1169 11B7; # (옴; 옴; 옴; 옴; 옴; ) HANGUL SYLLABLE OM
+C635;C635;110B 1169 11B8;C635;110B 1169 11B8; # (옵; 옵; 옵; 옵; 옵; ) HANGUL SYLLABLE OB
+C636;C636;110B 1169 11B9;C636;110B 1169 11B9; # (옶; 옶; 옶; 옶; 옶; ) HANGUL SYLLABLE OBS
+C637;C637;110B 1169 11BA;C637;110B 1169 11BA; # (옷; 옷; 옷; 옷; 옷; ) HANGUL SYLLABLE OS
+C638;C638;110B 1169 11BB;C638;110B 1169 11BB; # (옸; 옸; 옸; 옸; 옸; ) HANGUL SYLLABLE OSS
+C639;C639;110B 1169 11BC;C639;110B 1169 11BC; # (옹; 옹; 옹; 옹; 옹; ) HANGUL SYLLABLE ONG
+C63A;C63A;110B 1169 11BD;C63A;110B 1169 11BD; # (옺; 옺; 옺; 옺; 옺; ) HANGUL SYLLABLE OJ
+C63B;C63B;110B 1169 11BE;C63B;110B 1169 11BE; # (옻; 옻; 옻; 옻; 옻; ) HANGUL SYLLABLE OC
+C63C;C63C;110B 1169 11BF;C63C;110B 1169 11BF; # (옼; 옼; 옼; 옼; 옼; ) HANGUL SYLLABLE OK
+C63D;C63D;110B 1169 11C0;C63D;110B 1169 11C0; # (옽; 옽; 옽; 옽; 옽; ) HANGUL SYLLABLE OT
+C63E;C63E;110B 1169 11C1;C63E;110B 1169 11C1; # (옾; 옾; á„‹á…©á‡; 옾; á„‹á…©á‡; ) HANGUL SYLLABLE OP
+C63F;C63F;110B 1169 11C2;C63F;110B 1169 11C2; # (옿; 옿; 옿; 옿; 옿; ) HANGUL SYLLABLE OH
+C640;C640;110B 116A;C640;110B 116A; # (와; 와; 와; 와; 와; ) HANGUL SYLLABLE WA
+C641;C641;110B 116A 11A8;C641;110B 116A 11A8; # (ì™; ì™; 왁; ì™; 왁; ) HANGUL SYLLABLE WAG
+C642;C642;110B 116A 11A9;C642;110B 116A 11A9; # (왂; 왂; 왂; 왂; 왂; ) HANGUL SYLLABLE WAGG
+C643;C643;110B 116A 11AA;C643;110B 116A 11AA; # (왃; 왃; 왃; 왃; 왃; ) HANGUL SYLLABLE WAGS
+C644;C644;110B 116A 11AB;C644;110B 116A 11AB; # (완; 완; 완; 완; 완; ) HANGUL SYLLABLE WAN
+C645;C645;110B 116A 11AC;C645;110B 116A 11AC; # (왅; 왅; 왅; 왅; 왅; ) HANGUL SYLLABLE WANJ
+C646;C646;110B 116A 11AD;C646;110B 116A 11AD; # (왆; 왆; 왆; 왆; 왆; ) HANGUL SYLLABLE WANH
+C647;C647;110B 116A 11AE;C647;110B 116A 11AE; # (왇; 왇; 왇; 왇; 왇; ) HANGUL SYLLABLE WAD
+C648;C648;110B 116A 11AF;C648;110B 116A 11AF; # (왈; 왈; 왈; 왈; 왈; ) HANGUL SYLLABLE WAL
+C649;C649;110B 116A 11B0;C649;110B 116A 11B0; # (왉; 왉; 왉; 왉; 왉; ) HANGUL SYLLABLE WALG
+C64A;C64A;110B 116A 11B1;C64A;110B 116A 11B1; # (왊; 왊; 왊; 왊; 왊; ) HANGUL SYLLABLE WALM
+C64B;C64B;110B 116A 11B2;C64B;110B 116A 11B2; # (왋; 왋; 왋; 왋; 왋; ) HANGUL SYLLABLE WALB
+C64C;C64C;110B 116A 11B3;C64C;110B 116A 11B3; # (왌; 왌; 왌; 왌; 왌; ) HANGUL SYLLABLE WALS
+C64D;C64D;110B 116A 11B4;C64D;110B 116A 11B4; # (ì™; ì™; 왍; ì™; 왍; ) HANGUL SYLLABLE WALT
+C64E;C64E;110B 116A 11B5;C64E;110B 116A 11B5; # (왎; 왎; 왎; 왎; 왎; ) HANGUL SYLLABLE WALP
+C64F;C64F;110B 116A 11B6;C64F;110B 116A 11B6; # (ì™; ì™; 왏; ì™; 왏; ) HANGUL SYLLABLE WALH
+C650;C650;110B 116A 11B7;C650;110B 116A 11B7; # (ì™; ì™; 왐; ì™; 왐; ) HANGUL SYLLABLE WAM
+C651;C651;110B 116A 11B8;C651;110B 116A 11B8; # (왑; 왑; 왑; 왑; 왑; ) HANGUL SYLLABLE WAB
+C652;C652;110B 116A 11B9;C652;110B 116A 11B9; # (왒; 왒; 왒; 왒; 왒; ) HANGUL SYLLABLE WABS
+C653;C653;110B 116A 11BA;C653;110B 116A 11BA; # (왓; 왓; 왓; 왓; 왓; ) HANGUL SYLLABLE WAS
+C654;C654;110B 116A 11BB;C654;110B 116A 11BB; # (왔; 왔; 왔; 왔; 왔; ) HANGUL SYLLABLE WASS
+C655;C655;110B 116A 11BC;C655;110B 116A 11BC; # (왕; 왕; 왕; 왕; 왕; ) HANGUL SYLLABLE WANG
+C656;C656;110B 116A 11BD;C656;110B 116A 11BD; # (왖; 왖; 왖; 왖; 왖; ) HANGUL SYLLABLE WAJ
+C657;C657;110B 116A 11BE;C657;110B 116A 11BE; # (왗; 왗; 왗; 왗; 왗; ) HANGUL SYLLABLE WAC
+C658;C658;110B 116A 11BF;C658;110B 116A 11BF; # (왘; 왘; 왘; 왘; 왘; ) HANGUL SYLLABLE WAK
+C659;C659;110B 116A 11C0;C659;110B 116A 11C0; # (왙; 왙; 왙; 왙; 왙; ) HANGUL SYLLABLE WAT
+C65A;C65A;110B 116A 11C1;C65A;110B 116A 11C1; # (왚; 왚; á„‹á…ªá‡; 왚; á„‹á…ªá‡; ) HANGUL SYLLABLE WAP
+C65B;C65B;110B 116A 11C2;C65B;110B 116A 11C2; # (왛; 왛; 왛; 왛; 왛; ) HANGUL SYLLABLE WAH
+C65C;C65C;110B 116B;C65C;110B 116B; # (왜; 왜; 왜; 왜; 왜; ) HANGUL SYLLABLE WAE
+C65D;C65D;110B 116B 11A8;C65D;110B 116B 11A8; # (ì™; ì™; 왝; ì™; 왝; ) HANGUL SYLLABLE WAEG
+C65E;C65E;110B 116B 11A9;C65E;110B 116B 11A9; # (왞; 왞; 왞; 왞; 왞; ) HANGUL SYLLABLE WAEGG
+C65F;C65F;110B 116B 11AA;C65F;110B 116B 11AA; # (왟; 왟; 왟; 왟; 왟; ) HANGUL SYLLABLE WAEGS
+C660;C660;110B 116B 11AB;C660;110B 116B 11AB; # (왠; 왠; 왠; 왠; 왠; ) HANGUL SYLLABLE WAEN
+C661;C661;110B 116B 11AC;C661;110B 116B 11AC; # (왡; 왡; 왡; 왡; 왡; ) HANGUL SYLLABLE WAENJ
+C662;C662;110B 116B 11AD;C662;110B 116B 11AD; # (왢; 왢; 왢; 왢; 왢; ) HANGUL SYLLABLE WAENH
+C663;C663;110B 116B 11AE;C663;110B 116B 11AE; # (왣; 왣; 왣; 왣; 왣; ) HANGUL SYLLABLE WAED
+C664;C664;110B 116B 11AF;C664;110B 116B 11AF; # (왤; 왤; 왤; 왤; 왤; ) HANGUL SYLLABLE WAEL
+C665;C665;110B 116B 11B0;C665;110B 116B 11B0; # (왥; 왥; 왥; 왥; 왥; ) HANGUL SYLLABLE WAELG
+C666;C666;110B 116B 11B1;C666;110B 116B 11B1; # (왦; 왦; 왦; 왦; 왦; ) HANGUL SYLLABLE WAELM
+C667;C667;110B 116B 11B2;C667;110B 116B 11B2; # (왧; 왧; 왧; 왧; 왧; ) HANGUL SYLLABLE WAELB
+C668;C668;110B 116B 11B3;C668;110B 116B 11B3; # (왨; 왨; 왨; 왨; 왨; ) HANGUL SYLLABLE WAELS
+C669;C669;110B 116B 11B4;C669;110B 116B 11B4; # (왩; 왩; 왩; 왩; 왩; ) HANGUL SYLLABLE WAELT
+C66A;C66A;110B 116B 11B5;C66A;110B 116B 11B5; # (왪; 왪; 왪; 왪; 왪; ) HANGUL SYLLABLE WAELP
+C66B;C66B;110B 116B 11B6;C66B;110B 116B 11B6; # (왫; 왫; 왫; 왫; 왫; ) HANGUL SYLLABLE WAELH
+C66C;C66C;110B 116B 11B7;C66C;110B 116B 11B7; # (왬; 왬; 왬; 왬; 왬; ) HANGUL SYLLABLE WAEM
+C66D;C66D;110B 116B 11B8;C66D;110B 116B 11B8; # (왭; 왭; 왭; 왭; 왭; ) HANGUL SYLLABLE WAEB
+C66E;C66E;110B 116B 11B9;C66E;110B 116B 11B9; # (왮; 왮; 왮; 왮; 왮; ) HANGUL SYLLABLE WAEBS
+C66F;C66F;110B 116B 11BA;C66F;110B 116B 11BA; # (왯; 왯; 왯; 왯; 왯; ) HANGUL SYLLABLE WAES
+C670;C670;110B 116B 11BB;C670;110B 116B 11BB; # (왰; 왰; 왰; 왰; 왰; ) HANGUL SYLLABLE WAESS
+C671;C671;110B 116B 11BC;C671;110B 116B 11BC; # (왱; 왱; 왱; 왱; 왱; ) HANGUL SYLLABLE WAENG
+C672;C672;110B 116B 11BD;C672;110B 116B 11BD; # (왲; 왲; 왲; 왲; 왲; ) HANGUL SYLLABLE WAEJ
+C673;C673;110B 116B 11BE;C673;110B 116B 11BE; # (왳; 왳; 왳; 왳; 왳; ) HANGUL SYLLABLE WAEC
+C674;C674;110B 116B 11BF;C674;110B 116B 11BF; # (왴; 왴; 왴; 왴; 왴; ) HANGUL SYLLABLE WAEK
+C675;C675;110B 116B 11C0;C675;110B 116B 11C0; # (왵; 왵; 왵; 왵; 왵; ) HANGUL SYLLABLE WAET
+C676;C676;110B 116B 11C1;C676;110B 116B 11C1; # (왶; 왶; á„‹á…«á‡; 왶; á„‹á…«á‡; ) HANGUL SYLLABLE WAEP
+C677;C677;110B 116B 11C2;C677;110B 116B 11C2; # (왷; 왷; 왷; 왷; 왷; ) HANGUL SYLLABLE WAEH
+C678;C678;110B 116C;C678;110B 116C; # (외; 외; 외; 외; 외; ) HANGUL SYLLABLE OE
+C679;C679;110B 116C 11A8;C679;110B 116C 11A8; # (왹; 왹; 왹; 왹; 왹; ) HANGUL SYLLABLE OEG
+C67A;C67A;110B 116C 11A9;C67A;110B 116C 11A9; # (왺; 왺; 왺; 왺; 왺; ) HANGUL SYLLABLE OEGG
+C67B;C67B;110B 116C 11AA;C67B;110B 116C 11AA; # (왻; 왻; 왻; 왻; 왻; ) HANGUL SYLLABLE OEGS
+C67C;C67C;110B 116C 11AB;C67C;110B 116C 11AB; # (왼; 왼; 왼; 왼; 왼; ) HANGUL SYLLABLE OEN
+C67D;C67D;110B 116C 11AC;C67D;110B 116C 11AC; # (왽; 왽; 왽; 왽; 왽; ) HANGUL SYLLABLE OENJ
+C67E;C67E;110B 116C 11AD;C67E;110B 116C 11AD; # (왾; 왾; 왾; 왾; 왾; ) HANGUL SYLLABLE OENH
+C67F;C67F;110B 116C 11AE;C67F;110B 116C 11AE; # (왿; 왿; 왿; 왿; 왿; ) HANGUL SYLLABLE OED
+C680;C680;110B 116C 11AF;C680;110B 116C 11AF; # (욀; 욀; 욀; 욀; 욀; ) HANGUL SYLLABLE OEL
+C681;C681;110B 116C 11B0;C681;110B 116C 11B0; # (ìš; ìš; 욁; ìš; 욁; ) HANGUL SYLLABLE OELG
+C682;C682;110B 116C 11B1;C682;110B 116C 11B1; # (욂; 욂; 욂; 욂; 욂; ) HANGUL SYLLABLE OELM
+C683;C683;110B 116C 11B2;C683;110B 116C 11B2; # (욃; 욃; 욃; 욃; 욃; ) HANGUL SYLLABLE OELB
+C684;C684;110B 116C 11B3;C684;110B 116C 11B3; # (욄; 욄; 욄; 욄; 욄; ) HANGUL SYLLABLE OELS
+C685;C685;110B 116C 11B4;C685;110B 116C 11B4; # (욅; 욅; 욅; 욅; 욅; ) HANGUL SYLLABLE OELT
+C686;C686;110B 116C 11B5;C686;110B 116C 11B5; # (욆; 욆; 욆; 욆; 욆; ) HANGUL SYLLABLE OELP
+C687;C687;110B 116C 11B6;C687;110B 116C 11B6; # (욇; 욇; 욇; 욇; 욇; ) HANGUL SYLLABLE OELH
+C688;C688;110B 116C 11B7;C688;110B 116C 11B7; # (욈; 욈; 욈; 욈; 욈; ) HANGUL SYLLABLE OEM
+C689;C689;110B 116C 11B8;C689;110B 116C 11B8; # (욉; 욉; 욉; 욉; 욉; ) HANGUL SYLLABLE OEB
+C68A;C68A;110B 116C 11B9;C68A;110B 116C 11B9; # (욊; 욊; 욊; 욊; 욊; ) HANGUL SYLLABLE OEBS
+C68B;C68B;110B 116C 11BA;C68B;110B 116C 11BA; # (욋; 욋; 욋; 욋; 욋; ) HANGUL SYLLABLE OES
+C68C;C68C;110B 116C 11BB;C68C;110B 116C 11BB; # (욌; 욌; 욌; 욌; 욌; ) HANGUL SYLLABLE OESS
+C68D;C68D;110B 116C 11BC;C68D;110B 116C 11BC; # (ìš; ìš; 욍; ìš; 욍; ) HANGUL SYLLABLE OENG
+C68E;C68E;110B 116C 11BD;C68E;110B 116C 11BD; # (욎; 욎; 욎; 욎; 욎; ) HANGUL SYLLABLE OEJ
+C68F;C68F;110B 116C 11BE;C68F;110B 116C 11BE; # (ìš; ìš; 욏; ìš; 욏; ) HANGUL SYLLABLE OEC
+C690;C690;110B 116C 11BF;C690;110B 116C 11BF; # (ìš; ìš; 욐; ìš; 욐; ) HANGUL SYLLABLE OEK
+C691;C691;110B 116C 11C0;C691;110B 116C 11C0; # (욑; 욑; 욑; 욑; 욑; ) HANGUL SYLLABLE OET
+C692;C692;110B 116C 11C1;C692;110B 116C 11C1; # (ìš’; ìš’; á„‹á…¬á‡; ìš’; á„‹á…¬á‡; ) HANGUL SYLLABLE OEP
+C693;C693;110B 116C 11C2;C693;110B 116C 11C2; # (욓; 욓; 욓; 욓; 욓; ) HANGUL SYLLABLE OEH
+C694;C694;110B 116D;C694;110B 116D; # (ìš”; ìš”; á„‹á…­; ìš”; á„‹á…­; ) HANGUL SYLLABLE YO
+C695;C695;110B 116D 11A8;C695;110B 116D 11A8; # (욕; 욕; 욕; 욕; 욕; ) HANGUL SYLLABLE YOG
+C696;C696;110B 116D 11A9;C696;110B 116D 11A9; # (욖; 욖; 욖; 욖; 욖; ) HANGUL SYLLABLE YOGG
+C697;C697;110B 116D 11AA;C697;110B 116D 11AA; # (욗; 욗; 욗; 욗; 욗; ) HANGUL SYLLABLE YOGS
+C698;C698;110B 116D 11AB;C698;110B 116D 11AB; # (욘; 욘; 욘; 욘; 욘; ) HANGUL SYLLABLE YON
+C699;C699;110B 116D 11AC;C699;110B 116D 11AC; # (욙; 욙; 욙; 욙; 욙; ) HANGUL SYLLABLE YONJ
+C69A;C69A;110B 116D 11AD;C69A;110B 116D 11AD; # (욚; 욚; 욚; 욚; 욚; ) HANGUL SYLLABLE YONH
+C69B;C69B;110B 116D 11AE;C69B;110B 116D 11AE; # (욛; 욛; 욛; 욛; 욛; ) HANGUL SYLLABLE YOD
+C69C;C69C;110B 116D 11AF;C69C;110B 116D 11AF; # (욜; 욜; 욜; 욜; 욜; ) HANGUL SYLLABLE YOL
+C69D;C69D;110B 116D 11B0;C69D;110B 116D 11B0; # (ìš; ìš; 욝; ìš; 욝; ) HANGUL SYLLABLE YOLG
+C69E;C69E;110B 116D 11B1;C69E;110B 116D 11B1; # (욞; 욞; 욞; 욞; 욞; ) HANGUL SYLLABLE YOLM
+C69F;C69F;110B 116D 11B2;C69F;110B 116D 11B2; # (욟; 욟; 욟; 욟; 욟; ) HANGUL SYLLABLE YOLB
+C6A0;C6A0;110B 116D 11B3;C6A0;110B 116D 11B3; # (욠; 욠; 욠; 욠; 욠; ) HANGUL SYLLABLE YOLS
+C6A1;C6A1;110B 116D 11B4;C6A1;110B 116D 11B4; # (욡; 욡; 욡; 욡; 욡; ) HANGUL SYLLABLE YOLT
+C6A2;C6A2;110B 116D 11B5;C6A2;110B 116D 11B5; # (욢; 욢; 욢; 욢; 욢; ) HANGUL SYLLABLE YOLP
+C6A3;C6A3;110B 116D 11B6;C6A3;110B 116D 11B6; # (욣; 욣; 욣; 욣; 욣; ) HANGUL SYLLABLE YOLH
+C6A4;C6A4;110B 116D 11B7;C6A4;110B 116D 11B7; # (욤; 욤; 욤; 욤; 욤; ) HANGUL SYLLABLE YOM
+C6A5;C6A5;110B 116D 11B8;C6A5;110B 116D 11B8; # (욥; 욥; 욥; 욥; 욥; ) HANGUL SYLLABLE YOB
+C6A6;C6A6;110B 116D 11B9;C6A6;110B 116D 11B9; # (욦; 욦; 욦; 욦; 욦; ) HANGUL SYLLABLE YOBS
+C6A7;C6A7;110B 116D 11BA;C6A7;110B 116D 11BA; # (욧; 욧; 욧; 욧; 욧; ) HANGUL SYLLABLE YOS
+C6A8;C6A8;110B 116D 11BB;C6A8;110B 116D 11BB; # (욨; 욨; 욨; 욨; 욨; ) HANGUL SYLLABLE YOSS
+C6A9;C6A9;110B 116D 11BC;C6A9;110B 116D 11BC; # (용; 용; 용; 용; 용; ) HANGUL SYLLABLE YONG
+C6AA;C6AA;110B 116D 11BD;C6AA;110B 116D 11BD; # (욪; 욪; 욪; 욪; 욪; ) HANGUL SYLLABLE YOJ
+C6AB;C6AB;110B 116D 11BE;C6AB;110B 116D 11BE; # (욫; 욫; 욫; 욫; 욫; ) HANGUL SYLLABLE YOC
+C6AC;C6AC;110B 116D 11BF;C6AC;110B 116D 11BF; # (욬; 욬; 욬; 욬; 욬; ) HANGUL SYLLABLE YOK
+C6AD;C6AD;110B 116D 11C0;C6AD;110B 116D 11C0; # (욭; 욭; 욭; 욭; 욭; ) HANGUL SYLLABLE YOT
+C6AE;C6AE;110B 116D 11C1;C6AE;110B 116D 11C1; # (ìš®; ìš®; á„‹á…­á‡; ìš®; á„‹á…­á‡; ) HANGUL SYLLABLE YOP
+C6AF;C6AF;110B 116D 11C2;C6AF;110B 116D 11C2; # (욯; 욯; 욯; 욯; 욯; ) HANGUL SYLLABLE YOH
+C6B0;C6B0;110B 116E;C6B0;110B 116E; # (ìš°; ìš°; á„‹á…®; ìš°; á„‹á…®; ) HANGUL SYLLABLE U
+C6B1;C6B1;110B 116E 11A8;C6B1;110B 116E 11A8; # (욱; 욱; 욱; 욱; 욱; ) HANGUL SYLLABLE UG
+C6B2;C6B2;110B 116E 11A9;C6B2;110B 116E 11A9; # (욲; 욲; 욲; 욲; 욲; ) HANGUL SYLLABLE UGG
+C6B3;C6B3;110B 116E 11AA;C6B3;110B 116E 11AA; # (욳; 욳; 욳; 욳; 욳; ) HANGUL SYLLABLE UGS
+C6B4;C6B4;110B 116E 11AB;C6B4;110B 116E 11AB; # (운; 운; 운; 운; 운; ) HANGUL SYLLABLE UN
+C6B5;C6B5;110B 116E 11AC;C6B5;110B 116E 11AC; # (욵; 욵; 욵; 욵; 욵; ) HANGUL SYLLABLE UNJ
+C6B6;C6B6;110B 116E 11AD;C6B6;110B 116E 11AD; # (욶; 욶; 욶; 욶; 욶; ) HANGUL SYLLABLE UNH
+C6B7;C6B7;110B 116E 11AE;C6B7;110B 116E 11AE; # (욷; 욷; 욷; 욷; 욷; ) HANGUL SYLLABLE UD
+C6B8;C6B8;110B 116E 11AF;C6B8;110B 116E 11AF; # (울; 울; 울; 울; 울; ) HANGUL SYLLABLE UL
+C6B9;C6B9;110B 116E 11B0;C6B9;110B 116E 11B0; # (욹; 욹; 욹; 욹; 욹; ) HANGUL SYLLABLE ULG
+C6BA;C6BA;110B 116E 11B1;C6BA;110B 116E 11B1; # (욺; 욺; 욺; 욺; 욺; ) HANGUL SYLLABLE ULM
+C6BB;C6BB;110B 116E 11B2;C6BB;110B 116E 11B2; # (욻; 욻; 욻; 욻; 욻; ) HANGUL SYLLABLE ULB
+C6BC;C6BC;110B 116E 11B3;C6BC;110B 116E 11B3; # (욼; 욼; 욼; 욼; 욼; ) HANGUL SYLLABLE ULS
+C6BD;C6BD;110B 116E 11B4;C6BD;110B 116E 11B4; # (욽; 욽; 욽; 욽; 욽; ) HANGUL SYLLABLE ULT
+C6BE;C6BE;110B 116E 11B5;C6BE;110B 116E 11B5; # (욾; 욾; 욾; 욾; 욾; ) HANGUL SYLLABLE ULP
+C6BF;C6BF;110B 116E 11B6;C6BF;110B 116E 11B6; # (욿; 욿; 욿; 욿; 욿; ) HANGUL SYLLABLE ULH
+C6C0;C6C0;110B 116E 11B7;C6C0;110B 116E 11B7; # (움; 움; 움; 움; 움; ) HANGUL SYLLABLE UM
+C6C1;C6C1;110B 116E 11B8;C6C1;110B 116E 11B8; # (ì›; ì›; 웁; ì›; 웁; ) HANGUL SYLLABLE UB
+C6C2;C6C2;110B 116E 11B9;C6C2;110B 116E 11B9; # (웂; 웂; 웂; 웂; 웂; ) HANGUL SYLLABLE UBS
+C6C3;C6C3;110B 116E 11BA;C6C3;110B 116E 11BA; # (웃; 웃; 웃; 웃; 웃; ) HANGUL SYLLABLE US
+C6C4;C6C4;110B 116E 11BB;C6C4;110B 116E 11BB; # (웄; 웄; 웄; 웄; 웄; ) HANGUL SYLLABLE USS
+C6C5;C6C5;110B 116E 11BC;C6C5;110B 116E 11BC; # (웅; 웅; 웅; 웅; 웅; ) HANGUL SYLLABLE UNG
+C6C6;C6C6;110B 116E 11BD;C6C6;110B 116E 11BD; # (웆; 웆; 웆; 웆; 웆; ) HANGUL SYLLABLE UJ
+C6C7;C6C7;110B 116E 11BE;C6C7;110B 116E 11BE; # (웇; 웇; 웇; 웇; 웇; ) HANGUL SYLLABLE UC
+C6C8;C6C8;110B 116E 11BF;C6C8;110B 116E 11BF; # (웈; 웈; 웈; 웈; 웈; ) HANGUL SYLLABLE UK
+C6C9;C6C9;110B 116E 11C0;C6C9;110B 116E 11C0; # (웉; 웉; 웉; 웉; 웉; ) HANGUL SYLLABLE UT
+C6CA;C6CA;110B 116E 11C1;C6CA;110B 116E 11C1; # (웊; 웊; á„‹á…®á‡; 웊; á„‹á…®á‡; ) HANGUL SYLLABLE UP
+C6CB;C6CB;110B 116E 11C2;C6CB;110B 116E 11C2; # (웋; 웋; 웋; 웋; 웋; ) HANGUL SYLLABLE UH
+C6CC;C6CC;110B 116F;C6CC;110B 116F; # (워; 워; 워; 워; 워; ) HANGUL SYLLABLE WEO
+C6CD;C6CD;110B 116F 11A8;C6CD;110B 116F 11A8; # (ì›; ì›; 웍; ì›; 웍; ) HANGUL SYLLABLE WEOG
+C6CE;C6CE;110B 116F 11A9;C6CE;110B 116F 11A9; # (웎; 웎; 웎; 웎; 웎; ) HANGUL SYLLABLE WEOGG
+C6CF;C6CF;110B 116F 11AA;C6CF;110B 116F 11AA; # (ì›; ì›; 웏; ì›; 웏; ) HANGUL SYLLABLE WEOGS
+C6D0;C6D0;110B 116F 11AB;C6D0;110B 116F 11AB; # (ì›; ì›; 원; ì›; 원; ) HANGUL SYLLABLE WEON
+C6D1;C6D1;110B 116F 11AC;C6D1;110B 116F 11AC; # (웑; 웑; 웑; 웑; 웑; ) HANGUL SYLLABLE WEONJ
+C6D2;C6D2;110B 116F 11AD;C6D2;110B 116F 11AD; # (웒; 웒; 웒; 웒; 웒; ) HANGUL SYLLABLE WEONH
+C6D3;C6D3;110B 116F 11AE;C6D3;110B 116F 11AE; # (웓; 웓; 웓; 웓; 웓; ) HANGUL SYLLABLE WEOD
+C6D4;C6D4;110B 116F 11AF;C6D4;110B 116F 11AF; # (월; 월; 월; 월; 월; ) HANGUL SYLLABLE WEOL
+C6D5;C6D5;110B 116F 11B0;C6D5;110B 116F 11B0; # (웕; 웕; 웕; 웕; 웕; ) HANGUL SYLLABLE WEOLG
+C6D6;C6D6;110B 116F 11B1;C6D6;110B 116F 11B1; # (웖; 웖; 웖; 웖; 웖; ) HANGUL SYLLABLE WEOLM
+C6D7;C6D7;110B 116F 11B2;C6D7;110B 116F 11B2; # (웗; 웗; 웗; 웗; 웗; ) HANGUL SYLLABLE WEOLB
+C6D8;C6D8;110B 116F 11B3;C6D8;110B 116F 11B3; # (웘; 웘; 웘; 웘; 웘; ) HANGUL SYLLABLE WEOLS
+C6D9;C6D9;110B 116F 11B4;C6D9;110B 116F 11B4; # (웙; 웙; 웙; 웙; 웙; ) HANGUL SYLLABLE WEOLT
+C6DA;C6DA;110B 116F 11B5;C6DA;110B 116F 11B5; # (웚; 웚; 웚; 웚; 웚; ) HANGUL SYLLABLE WEOLP
+C6DB;C6DB;110B 116F 11B6;C6DB;110B 116F 11B6; # (웛; 웛; 웛; 웛; 웛; ) HANGUL SYLLABLE WEOLH
+C6DC;C6DC;110B 116F 11B7;C6DC;110B 116F 11B7; # (웜; 웜; 웜; 웜; 웜; ) HANGUL SYLLABLE WEOM
+C6DD;C6DD;110B 116F 11B8;C6DD;110B 116F 11B8; # (ì›; ì›; 웝; ì›; 웝; ) HANGUL SYLLABLE WEOB
+C6DE;C6DE;110B 116F 11B9;C6DE;110B 116F 11B9; # (웞; 웞; 웞; 웞; 웞; ) HANGUL SYLLABLE WEOBS
+C6DF;C6DF;110B 116F 11BA;C6DF;110B 116F 11BA; # (웟; 웟; 웟; 웟; 웟; ) HANGUL SYLLABLE WEOS
+C6E0;C6E0;110B 116F 11BB;C6E0;110B 116F 11BB; # (웠; 웠; 웠; 웠; 웠; ) HANGUL SYLLABLE WEOSS
+C6E1;C6E1;110B 116F 11BC;C6E1;110B 116F 11BC; # (웡; 웡; 웡; 웡; 웡; ) HANGUL SYLLABLE WEONG
+C6E2;C6E2;110B 116F 11BD;C6E2;110B 116F 11BD; # (웢; 웢; 웢; 웢; 웢; ) HANGUL SYLLABLE WEOJ
+C6E3;C6E3;110B 116F 11BE;C6E3;110B 116F 11BE; # (웣; 웣; 웣; 웣; 웣; ) HANGUL SYLLABLE WEOC
+C6E4;C6E4;110B 116F 11BF;C6E4;110B 116F 11BF; # (웤; 웤; 웤; 웤; 웤; ) HANGUL SYLLABLE WEOK
+C6E5;C6E5;110B 116F 11C0;C6E5;110B 116F 11C0; # (웥; 웥; 웥; 웥; 웥; ) HANGUL SYLLABLE WEOT
+C6E6;C6E6;110B 116F 11C1;C6E6;110B 116F 11C1; # (웦; 웦; á„‹á…¯á‡; 웦; á„‹á…¯á‡; ) HANGUL SYLLABLE WEOP
+C6E7;C6E7;110B 116F 11C2;C6E7;110B 116F 11C2; # (웧; 웧; 웧; 웧; 웧; ) HANGUL SYLLABLE WEOH
+C6E8;C6E8;110B 1170;C6E8;110B 1170; # (웨; 웨; 웨; 웨; 웨; ) HANGUL SYLLABLE WE
+C6E9;C6E9;110B 1170 11A8;C6E9;110B 1170 11A8; # (웩; 웩; 웩; 웩; 웩; ) HANGUL SYLLABLE WEG
+C6EA;C6EA;110B 1170 11A9;C6EA;110B 1170 11A9; # (웪; 웪; 웪; 웪; 웪; ) HANGUL SYLLABLE WEGG
+C6EB;C6EB;110B 1170 11AA;C6EB;110B 1170 11AA; # (웫; 웫; 웫; 웫; 웫; ) HANGUL SYLLABLE WEGS
+C6EC;C6EC;110B 1170 11AB;C6EC;110B 1170 11AB; # (웬; 웬; 웬; 웬; 웬; ) HANGUL SYLLABLE WEN
+C6ED;C6ED;110B 1170 11AC;C6ED;110B 1170 11AC; # (웭; 웭; 웭; 웭; 웭; ) HANGUL SYLLABLE WENJ
+C6EE;C6EE;110B 1170 11AD;C6EE;110B 1170 11AD; # (웮; 웮; 웮; 웮; 웮; ) HANGUL SYLLABLE WENH
+C6EF;C6EF;110B 1170 11AE;C6EF;110B 1170 11AE; # (웯; 웯; 웯; 웯; 웯; ) HANGUL SYLLABLE WED
+C6F0;C6F0;110B 1170 11AF;C6F0;110B 1170 11AF; # (웰; 웰; 웰; 웰; 웰; ) HANGUL SYLLABLE WEL
+C6F1;C6F1;110B 1170 11B0;C6F1;110B 1170 11B0; # (웱; 웱; 웱; 웱; 웱; ) HANGUL SYLLABLE WELG
+C6F2;C6F2;110B 1170 11B1;C6F2;110B 1170 11B1; # (웲; 웲; 웲; 웲; 웲; ) HANGUL SYLLABLE WELM
+C6F3;C6F3;110B 1170 11B2;C6F3;110B 1170 11B2; # (웳; 웳; 웳; 웳; 웳; ) HANGUL SYLLABLE WELB
+C6F4;C6F4;110B 1170 11B3;C6F4;110B 1170 11B3; # (웴; 웴; 웴; 웴; 웴; ) HANGUL SYLLABLE WELS
+C6F5;C6F5;110B 1170 11B4;C6F5;110B 1170 11B4; # (웵; 웵; 웵; 웵; 웵; ) HANGUL SYLLABLE WELT
+C6F6;C6F6;110B 1170 11B5;C6F6;110B 1170 11B5; # (웶; 웶; 웶; 웶; 웶; ) HANGUL SYLLABLE WELP
+C6F7;C6F7;110B 1170 11B6;C6F7;110B 1170 11B6; # (웷; 웷; 웷; 웷; 웷; ) HANGUL SYLLABLE WELH
+C6F8;C6F8;110B 1170 11B7;C6F8;110B 1170 11B7; # (웸; 웸; 웸; 웸; 웸; ) HANGUL SYLLABLE WEM
+C6F9;C6F9;110B 1170 11B8;C6F9;110B 1170 11B8; # (웹; 웹; 웹; 웹; 웹; ) HANGUL SYLLABLE WEB
+C6FA;C6FA;110B 1170 11B9;C6FA;110B 1170 11B9; # (웺; 웺; 웺; 웺; 웺; ) HANGUL SYLLABLE WEBS
+C6FB;C6FB;110B 1170 11BA;C6FB;110B 1170 11BA; # (웻; 웻; 웻; 웻; 웻; ) HANGUL SYLLABLE WES
+C6FC;C6FC;110B 1170 11BB;C6FC;110B 1170 11BB; # (웼; 웼; 웼; 웼; 웼; ) HANGUL SYLLABLE WESS
+C6FD;C6FD;110B 1170 11BC;C6FD;110B 1170 11BC; # (웽; 웽; 웽; 웽; 웽; ) HANGUL SYLLABLE WENG
+C6FE;C6FE;110B 1170 11BD;C6FE;110B 1170 11BD; # (웾; 웾; 웾; 웾; 웾; ) HANGUL SYLLABLE WEJ
+C6FF;C6FF;110B 1170 11BE;C6FF;110B 1170 11BE; # (웿; 웿; 웿; 웿; 웿; ) HANGUL SYLLABLE WEC
+C700;C700;110B 1170 11BF;C700;110B 1170 11BF; # (윀; 윀; 윀; 윀; 윀; ) HANGUL SYLLABLE WEK
+C701;C701;110B 1170 11C0;C701;110B 1170 11C0; # (ìœ; ìœ; 윁; ìœ; 윁; ) HANGUL SYLLABLE WET
+C702;C702;110B 1170 11C1;C702;110B 1170 11C1; # (윂; 윂; á„‹á…°á‡; 윂; á„‹á…°á‡; ) HANGUL SYLLABLE WEP
+C703;C703;110B 1170 11C2;C703;110B 1170 11C2; # (윃; 윃; 윃; 윃; 윃; ) HANGUL SYLLABLE WEH
+C704;C704;110B 1171;C704;110B 1171; # (위; 위; 위; 위; 위; ) HANGUL SYLLABLE WI
+C705;C705;110B 1171 11A8;C705;110B 1171 11A8; # (윅; 윅; 윅; 윅; 윅; ) HANGUL SYLLABLE WIG
+C706;C706;110B 1171 11A9;C706;110B 1171 11A9; # (윆; 윆; 윆; 윆; 윆; ) HANGUL SYLLABLE WIGG
+C707;C707;110B 1171 11AA;C707;110B 1171 11AA; # (윇; 윇; 윇; 윇; 윇; ) HANGUL SYLLABLE WIGS
+C708;C708;110B 1171 11AB;C708;110B 1171 11AB; # (윈; 윈; 윈; 윈; 윈; ) HANGUL SYLLABLE WIN
+C709;C709;110B 1171 11AC;C709;110B 1171 11AC; # (윉; 윉; 윉; 윉; 윉; ) HANGUL SYLLABLE WINJ
+C70A;C70A;110B 1171 11AD;C70A;110B 1171 11AD; # (윊; 윊; 윊; 윊; 윊; ) HANGUL SYLLABLE WINH
+C70B;C70B;110B 1171 11AE;C70B;110B 1171 11AE; # (윋; 윋; 윋; 윋; 윋; ) HANGUL SYLLABLE WID
+C70C;C70C;110B 1171 11AF;C70C;110B 1171 11AF; # (윌; 윌; 윌; 윌; 윌; ) HANGUL SYLLABLE WIL
+C70D;C70D;110B 1171 11B0;C70D;110B 1171 11B0; # (ìœ; ìœ; 윍; ìœ; 윍; ) HANGUL SYLLABLE WILG
+C70E;C70E;110B 1171 11B1;C70E;110B 1171 11B1; # (윎; 윎; 윎; 윎; 윎; ) HANGUL SYLLABLE WILM
+C70F;C70F;110B 1171 11B2;C70F;110B 1171 11B2; # (ìœ; ìœ; 윏; ìœ; 윏; ) HANGUL SYLLABLE WILB
+C710;C710;110B 1171 11B3;C710;110B 1171 11B3; # (ìœ; ìœ; 윐; ìœ; 윐; ) HANGUL SYLLABLE WILS
+C711;C711;110B 1171 11B4;C711;110B 1171 11B4; # (윑; 윑; 윑; 윑; 윑; ) HANGUL SYLLABLE WILT
+C712;C712;110B 1171 11B5;C712;110B 1171 11B5; # (윒; 윒; 윒; 윒; 윒; ) HANGUL SYLLABLE WILP
+C713;C713;110B 1171 11B6;C713;110B 1171 11B6; # (윓; 윓; 윓; 윓; 윓; ) HANGUL SYLLABLE WILH
+C714;C714;110B 1171 11B7;C714;110B 1171 11B7; # (윔; 윔; 윔; 윔; 윔; ) HANGUL SYLLABLE WIM
+C715;C715;110B 1171 11B8;C715;110B 1171 11B8; # (윕; 윕; 윕; 윕; 윕; ) HANGUL SYLLABLE WIB
+C716;C716;110B 1171 11B9;C716;110B 1171 11B9; # (윖; 윖; 윖; 윖; 윖; ) HANGUL SYLLABLE WIBS
+C717;C717;110B 1171 11BA;C717;110B 1171 11BA; # (윗; 윗; 윗; 윗; 윗; ) HANGUL SYLLABLE WIS
+C718;C718;110B 1171 11BB;C718;110B 1171 11BB; # (윘; 윘; 윘; 윘; 윘; ) HANGUL SYLLABLE WISS
+C719;C719;110B 1171 11BC;C719;110B 1171 11BC; # (윙; 윙; 윙; 윙; 윙; ) HANGUL SYLLABLE WING
+C71A;C71A;110B 1171 11BD;C71A;110B 1171 11BD; # (윚; 윚; 윚; 윚; 윚; ) HANGUL SYLLABLE WIJ
+C71B;C71B;110B 1171 11BE;C71B;110B 1171 11BE; # (윛; 윛; 윛; 윛; 윛; ) HANGUL SYLLABLE WIC
+C71C;C71C;110B 1171 11BF;C71C;110B 1171 11BF; # (윜; 윜; 윜; 윜; 윜; ) HANGUL SYLLABLE WIK
+C71D;C71D;110B 1171 11C0;C71D;110B 1171 11C0; # (ìœ; ìœ; 윝; ìœ; 윝; ) HANGUL SYLLABLE WIT
+C71E;C71E;110B 1171 11C1;C71E;110B 1171 11C1; # (윞; 윞; á„‹á…±á‡; 윞; á„‹á…±á‡; ) HANGUL SYLLABLE WIP
+C71F;C71F;110B 1171 11C2;C71F;110B 1171 11C2; # (윟; 윟; 윟; 윟; 윟; ) HANGUL SYLLABLE WIH
+C720;C720;110B 1172;C720;110B 1172; # (유; 유; 유; 유; 유; ) HANGUL SYLLABLE YU
+C721;C721;110B 1172 11A8;C721;110B 1172 11A8; # (육; 육; 육; 육; 육; ) HANGUL SYLLABLE YUG
+C722;C722;110B 1172 11A9;C722;110B 1172 11A9; # (윢; 윢; 윢; 윢; 윢; ) HANGUL SYLLABLE YUGG
+C723;C723;110B 1172 11AA;C723;110B 1172 11AA; # (윣; 윣; 윣; 윣; 윣; ) HANGUL SYLLABLE YUGS
+C724;C724;110B 1172 11AB;C724;110B 1172 11AB; # (윤; 윤; 윤; 윤; 윤; ) HANGUL SYLLABLE YUN
+C725;C725;110B 1172 11AC;C725;110B 1172 11AC; # (윥; 윥; 윥; 윥; 윥; ) HANGUL SYLLABLE YUNJ
+C726;C726;110B 1172 11AD;C726;110B 1172 11AD; # (윦; 윦; 윦; 윦; 윦; ) HANGUL SYLLABLE YUNH
+C727;C727;110B 1172 11AE;C727;110B 1172 11AE; # (윧; 윧; 윧; 윧; 윧; ) HANGUL SYLLABLE YUD
+C728;C728;110B 1172 11AF;C728;110B 1172 11AF; # (율; 율; 율; 율; 율; ) HANGUL SYLLABLE YUL
+C729;C729;110B 1172 11B0;C729;110B 1172 11B0; # (윩; 윩; 윩; 윩; 윩; ) HANGUL SYLLABLE YULG
+C72A;C72A;110B 1172 11B1;C72A;110B 1172 11B1; # (윪; 윪; 윪; 윪; 윪; ) HANGUL SYLLABLE YULM
+C72B;C72B;110B 1172 11B2;C72B;110B 1172 11B2; # (윫; 윫; 윫; 윫; 윫; ) HANGUL SYLLABLE YULB
+C72C;C72C;110B 1172 11B3;C72C;110B 1172 11B3; # (윬; 윬; 윬; 윬; 윬; ) HANGUL SYLLABLE YULS
+C72D;C72D;110B 1172 11B4;C72D;110B 1172 11B4; # (윭; 윭; 윭; 윭; 윭; ) HANGUL SYLLABLE YULT
+C72E;C72E;110B 1172 11B5;C72E;110B 1172 11B5; # (윮; 윮; 윮; 윮; 윮; ) HANGUL SYLLABLE YULP
+C72F;C72F;110B 1172 11B6;C72F;110B 1172 11B6; # (윯; 윯; 윯; 윯; 윯; ) HANGUL SYLLABLE YULH
+C730;C730;110B 1172 11B7;C730;110B 1172 11B7; # (윰; 윰; 윰; 윰; 윰; ) HANGUL SYLLABLE YUM
+C731;C731;110B 1172 11B8;C731;110B 1172 11B8; # (윱; 윱; 윱; 윱; 윱; ) HANGUL SYLLABLE YUB
+C732;C732;110B 1172 11B9;C732;110B 1172 11B9; # (윲; 윲; 윲; 윲; 윲; ) HANGUL SYLLABLE YUBS
+C733;C733;110B 1172 11BA;C733;110B 1172 11BA; # (윳; 윳; 윳; 윳; 윳; ) HANGUL SYLLABLE YUS
+C734;C734;110B 1172 11BB;C734;110B 1172 11BB; # (윴; 윴; 윴; 윴; 윴; ) HANGUL SYLLABLE YUSS
+C735;C735;110B 1172 11BC;C735;110B 1172 11BC; # (융; 융; 융; 융; 융; ) HANGUL SYLLABLE YUNG
+C736;C736;110B 1172 11BD;C736;110B 1172 11BD; # (윶; 윶; 윶; 윶; 윶; ) HANGUL SYLLABLE YUJ
+C737;C737;110B 1172 11BE;C737;110B 1172 11BE; # (윷; 윷; 윷; 윷; 윷; ) HANGUL SYLLABLE YUC
+C738;C738;110B 1172 11BF;C738;110B 1172 11BF; # (윸; 윸; 윸; 윸; 윸; ) HANGUL SYLLABLE YUK
+C739;C739;110B 1172 11C0;C739;110B 1172 11C0; # (윹; 윹; 윹; 윹; 윹; ) HANGUL SYLLABLE YUT
+C73A;C73A;110B 1172 11C1;C73A;110B 1172 11C1; # (윺; 윺; á„‹á…²á‡; 윺; á„‹á…²á‡; ) HANGUL SYLLABLE YUP
+C73B;C73B;110B 1172 11C2;C73B;110B 1172 11C2; # (윻; 윻; 윻; 윻; 윻; ) HANGUL SYLLABLE YUH
+C73C;C73C;110B 1173;C73C;110B 1173; # (으; 으; 으; 으; 으; ) HANGUL SYLLABLE EU
+C73D;C73D;110B 1173 11A8;C73D;110B 1173 11A8; # (윽; 윽; 윽; 윽; 윽; ) HANGUL SYLLABLE EUG
+C73E;C73E;110B 1173 11A9;C73E;110B 1173 11A9; # (윾; 윾; 윾; 윾; 윾; ) HANGUL SYLLABLE EUGG
+C73F;C73F;110B 1173 11AA;C73F;110B 1173 11AA; # (윿; 윿; 윿; 윿; 윿; ) HANGUL SYLLABLE EUGS
+C740;C740;110B 1173 11AB;C740;110B 1173 11AB; # (ì€; ì€; 은; ì€; 은; ) HANGUL SYLLABLE EUN
+C741;C741;110B 1173 11AC;C741;110B 1173 11AC; # (ì; ì; 읁; ì; 읁; ) HANGUL SYLLABLE EUNJ
+C742;C742;110B 1173 11AD;C742;110B 1173 11AD; # (ì‚; ì‚; 읂; ì‚; 읂; ) HANGUL SYLLABLE EUNH
+C743;C743;110B 1173 11AE;C743;110B 1173 11AE; # (ìƒ; ìƒ; 읃; ìƒ; 읃; ) HANGUL SYLLABLE EUD
+C744;C744;110B 1173 11AF;C744;110B 1173 11AF; # (ì„; ì„; 을; ì„; 을; ) HANGUL SYLLABLE EUL
+C745;C745;110B 1173 11B0;C745;110B 1173 11B0; # (ì…; ì…; 읅; ì…; 읅; ) HANGUL SYLLABLE EULG
+C746;C746;110B 1173 11B1;C746;110B 1173 11B1; # (ì†; ì†; 읆; ì†; 읆; ) HANGUL SYLLABLE EULM
+C747;C747;110B 1173 11B2;C747;110B 1173 11B2; # (ì‡; ì‡; 읇; ì‡; 읇; ) HANGUL SYLLABLE EULB
+C748;C748;110B 1173 11B3;C748;110B 1173 11B3; # (ìˆ; ìˆ; 읈; ìˆ; 읈; ) HANGUL SYLLABLE EULS
+C749;C749;110B 1173 11B4;C749;110B 1173 11B4; # (ì‰; ì‰; 읉; ì‰; 읉; ) HANGUL SYLLABLE EULT
+C74A;C74A;110B 1173 11B5;C74A;110B 1173 11B5; # (ìŠ; ìŠ; 읊; ìŠ; 읊; ) HANGUL SYLLABLE EULP
+C74B;C74B;110B 1173 11B6;C74B;110B 1173 11B6; # (ì‹; ì‹; 읋; ì‹; 읋; ) HANGUL SYLLABLE EULH
+C74C;C74C;110B 1173 11B7;C74C;110B 1173 11B7; # (ìŒ; ìŒ; 음; ìŒ; 음; ) HANGUL SYLLABLE EUM
+C74D;C74D;110B 1173 11B8;C74D;110B 1173 11B8; # (ì; ì; 읍; ì; 읍; ) HANGUL SYLLABLE EUB
+C74E;C74E;110B 1173 11B9;C74E;110B 1173 11B9; # (ìŽ; ìŽ; 읎; ìŽ; 읎; ) HANGUL SYLLABLE EUBS
+C74F;C74F;110B 1173 11BA;C74F;110B 1173 11BA; # (ì; ì; 읏; ì; 읏; ) HANGUL SYLLABLE EUS
+C750;C750;110B 1173 11BB;C750;110B 1173 11BB; # (ì; ì; 읐; ì; 읐; ) HANGUL SYLLABLE EUSS
+C751;C751;110B 1173 11BC;C751;110B 1173 11BC; # (ì‘; ì‘; 응; ì‘; 응; ) HANGUL SYLLABLE EUNG
+C752;C752;110B 1173 11BD;C752;110B 1173 11BD; # (ì’; ì’; 읒; ì’; 읒; ) HANGUL SYLLABLE EUJ
+C753;C753;110B 1173 11BE;C753;110B 1173 11BE; # (ì“; ì“; 읓; ì“; 읓; ) HANGUL SYLLABLE EUC
+C754;C754;110B 1173 11BF;C754;110B 1173 11BF; # (ì”; ì”; 읔; ì”; 읔; ) HANGUL SYLLABLE EUK
+C755;C755;110B 1173 11C0;C755;110B 1173 11C0; # (ì•; ì•; 읕; ì•; 읕; ) HANGUL SYLLABLE EUT
+C756;C756;110B 1173 11C1;C756;110B 1173 11C1; # (ì–; ì–; á„‹á…³á‡; ì–; á„‹á…³á‡; ) HANGUL SYLLABLE EUP
+C757;C757;110B 1173 11C2;C757;110B 1173 11C2; # (ì—; ì—; 읗; ì—; 읗; ) HANGUL SYLLABLE EUH
+C758;C758;110B 1174;C758;110B 1174; # (ì˜; ì˜; á„‹á…´; ì˜; á„‹á…´; ) HANGUL SYLLABLE YI
+C759;C759;110B 1174 11A8;C759;110B 1174 11A8; # (ì™; ì™; 읙; ì™; 읙; ) HANGUL SYLLABLE YIG
+C75A;C75A;110B 1174 11A9;C75A;110B 1174 11A9; # (ìš; ìš; 읚; ìš; 읚; ) HANGUL SYLLABLE YIGG
+C75B;C75B;110B 1174 11AA;C75B;110B 1174 11AA; # (ì›; ì›; 읛; ì›; 읛; ) HANGUL SYLLABLE YIGS
+C75C;C75C;110B 1174 11AB;C75C;110B 1174 11AB; # (ìœ; ìœ; 읜; ìœ; 읜; ) HANGUL SYLLABLE YIN
+C75D;C75D;110B 1174 11AC;C75D;110B 1174 11AC; # (ì; ì; 읝; ì; 읝; ) HANGUL SYLLABLE YINJ
+C75E;C75E;110B 1174 11AD;C75E;110B 1174 11AD; # (ìž; ìž; 읞; ìž; 읞; ) HANGUL SYLLABLE YINH
+C75F;C75F;110B 1174 11AE;C75F;110B 1174 11AE; # (ìŸ; ìŸ; 읟; ìŸ; 읟; ) HANGUL SYLLABLE YID
+C760;C760;110B 1174 11AF;C760;110B 1174 11AF; # (ì ; ì ; 읠; ì ; 읠; ) HANGUL SYLLABLE YIL
+C761;C761;110B 1174 11B0;C761;110B 1174 11B0; # (ì¡; ì¡; 읡; ì¡; 읡; ) HANGUL SYLLABLE YILG
+C762;C762;110B 1174 11B1;C762;110B 1174 11B1; # (ì¢; ì¢; 읢; ì¢; 읢; ) HANGUL SYLLABLE YILM
+C763;C763;110B 1174 11B2;C763;110B 1174 11B2; # (ì£; ì£; 읣; ì£; 읣; ) HANGUL SYLLABLE YILB
+C764;C764;110B 1174 11B3;C764;110B 1174 11B3; # (ì¤; ì¤; 읤; ì¤; 읤; ) HANGUL SYLLABLE YILS
+C765;C765;110B 1174 11B4;C765;110B 1174 11B4; # (ì¥; ì¥; 읥; ì¥; 읥; ) HANGUL SYLLABLE YILT
+C766;C766;110B 1174 11B5;C766;110B 1174 11B5; # (ì¦; ì¦; 읦; ì¦; 읦; ) HANGUL SYLLABLE YILP
+C767;C767;110B 1174 11B6;C767;110B 1174 11B6; # (ì§; ì§; 읧; ì§; 읧; ) HANGUL SYLLABLE YILH
+C768;C768;110B 1174 11B7;C768;110B 1174 11B7; # (ì¨; ì¨; 읨; ì¨; 읨; ) HANGUL SYLLABLE YIM
+C769;C769;110B 1174 11B8;C769;110B 1174 11B8; # (ì©; ì©; 읩; ì©; 읩; ) HANGUL SYLLABLE YIB
+C76A;C76A;110B 1174 11B9;C76A;110B 1174 11B9; # (ìª; ìª; 읪; ìª; 읪; ) HANGUL SYLLABLE YIBS
+C76B;C76B;110B 1174 11BA;C76B;110B 1174 11BA; # (ì«; ì«; 읫; ì«; 읫; ) HANGUL SYLLABLE YIS
+C76C;C76C;110B 1174 11BB;C76C;110B 1174 11BB; # (ì¬; ì¬; 읬; ì¬; 읬; ) HANGUL SYLLABLE YISS
+C76D;C76D;110B 1174 11BC;C76D;110B 1174 11BC; # (ì­; ì­; 읭; ì­; 읭; ) HANGUL SYLLABLE YING
+C76E;C76E;110B 1174 11BD;C76E;110B 1174 11BD; # (ì®; ì®; 읮; ì®; 읮; ) HANGUL SYLLABLE YIJ
+C76F;C76F;110B 1174 11BE;C76F;110B 1174 11BE; # (ì¯; ì¯; 읯; ì¯; 읯; ) HANGUL SYLLABLE YIC
+C770;C770;110B 1174 11BF;C770;110B 1174 11BF; # (ì°; ì°; 읰; ì°; 읰; ) HANGUL SYLLABLE YIK
+C771;C771;110B 1174 11C0;C771;110B 1174 11C0; # (ì±; ì±; 읱; ì±; 읱; ) HANGUL SYLLABLE YIT
+C772;C772;110B 1174 11C1;C772;110B 1174 11C1; # (ì²; ì²; á„‹á…´á‡; ì²; á„‹á…´á‡; ) HANGUL SYLLABLE YIP
+C773;C773;110B 1174 11C2;C773;110B 1174 11C2; # (ì³; ì³; 읳; ì³; 읳; ) HANGUL SYLLABLE YIH
+C774;C774;110B 1175;C774;110B 1175; # (ì´; ì´; á„‹á…µ; ì´; á„‹á…µ; ) HANGUL SYLLABLE I
+C775;C775;110B 1175 11A8;C775;110B 1175 11A8; # (ìµ; ìµ; 익; ìµ; 익; ) HANGUL SYLLABLE IG
+C776;C776;110B 1175 11A9;C776;110B 1175 11A9; # (ì¶; ì¶; 읶; ì¶; 읶; ) HANGUL SYLLABLE IGG
+C777;C777;110B 1175 11AA;C777;110B 1175 11AA; # (ì·; ì·; 읷; ì·; 읷; ) HANGUL SYLLABLE IGS
+C778;C778;110B 1175 11AB;C778;110B 1175 11AB; # (ì¸; ì¸; 인; ì¸; 인; ) HANGUL SYLLABLE IN
+C779;C779;110B 1175 11AC;C779;110B 1175 11AC; # (ì¹; ì¹; 읹; ì¹; 읹; ) HANGUL SYLLABLE INJ
+C77A;C77A;110B 1175 11AD;C77A;110B 1175 11AD; # (ìº; ìº; 읺; ìº; 읺; ) HANGUL SYLLABLE INH
+C77B;C77B;110B 1175 11AE;C77B;110B 1175 11AE; # (ì»; ì»; 읻; ì»; 읻; ) HANGUL SYLLABLE ID
+C77C;C77C;110B 1175 11AF;C77C;110B 1175 11AF; # (ì¼; ì¼; 일; ì¼; 일; ) HANGUL SYLLABLE IL
+C77D;C77D;110B 1175 11B0;C77D;110B 1175 11B0; # (ì½; ì½; 읽; ì½; 읽; ) HANGUL SYLLABLE ILG
+C77E;C77E;110B 1175 11B1;C77E;110B 1175 11B1; # (ì¾; ì¾; 읾; ì¾; 읾; ) HANGUL SYLLABLE ILM
+C77F;C77F;110B 1175 11B2;C77F;110B 1175 11B2; # (ì¿; ì¿; 읿; ì¿; 읿; ) HANGUL SYLLABLE ILB
+C780;C780;110B 1175 11B3;C780;110B 1175 11B3; # (잀; 잀; 잀; 잀; 잀; ) HANGUL SYLLABLE ILS
+C781;C781;110B 1175 11B4;C781;110B 1175 11B4; # (ìž; ìž; 잁; ìž; 잁; ) HANGUL SYLLABLE ILT
+C782;C782;110B 1175 11B5;C782;110B 1175 11B5; # (잂; 잂; 잂; 잂; 잂; ) HANGUL SYLLABLE ILP
+C783;C783;110B 1175 11B6;C783;110B 1175 11B6; # (잃; 잃; 잃; 잃; 잃; ) HANGUL SYLLABLE ILH
+C784;C784;110B 1175 11B7;C784;110B 1175 11B7; # (임; 임; 임; 임; 임; ) HANGUL SYLLABLE IM
+C785;C785;110B 1175 11B8;C785;110B 1175 11B8; # (입; 입; 입; 입; 입; ) HANGUL SYLLABLE IB
+C786;C786;110B 1175 11B9;C786;110B 1175 11B9; # (잆; 잆; 잆; 잆; 잆; ) HANGUL SYLLABLE IBS
+C787;C787;110B 1175 11BA;C787;110B 1175 11BA; # (잇; 잇; 잇; 잇; 잇; ) HANGUL SYLLABLE IS
+C788;C788;110B 1175 11BB;C788;110B 1175 11BB; # (있; 있; 있; 있; 있; ) HANGUL SYLLABLE ISS
+C789;C789;110B 1175 11BC;C789;110B 1175 11BC; # (잉; 잉; 잉; 잉; 잉; ) HANGUL SYLLABLE ING
+C78A;C78A;110B 1175 11BD;C78A;110B 1175 11BD; # (잊; 잊; 잊; 잊; 잊; ) HANGUL SYLLABLE IJ
+C78B;C78B;110B 1175 11BE;C78B;110B 1175 11BE; # (잋; 잋; 잋; 잋; 잋; ) HANGUL SYLLABLE IC
+C78C;C78C;110B 1175 11BF;C78C;110B 1175 11BF; # (잌; 잌; 잌; 잌; 잌; ) HANGUL SYLLABLE IK
+C78D;C78D;110B 1175 11C0;C78D;110B 1175 11C0; # (ìž; ìž; 잍; ìž; 잍; ) HANGUL SYLLABLE IT
+C78E;C78E;110B 1175 11C1;C78E;110B 1175 11C1; # (잎; 잎; á„‹á…µá‡; 잎; á„‹á…µá‡; ) HANGUL SYLLABLE IP
+C78F;C78F;110B 1175 11C2;C78F;110B 1175 11C2; # (ìž; ìž; 잏; ìž; 잏; ) HANGUL SYLLABLE IH
+C790;C790;110C 1161;C790;110C 1161; # (ìž; ìž; 자; ìž; 자; ) HANGUL SYLLABLE JA
+C791;C791;110C 1161 11A8;C791;110C 1161 11A8; # (작; 작; 작; 작; 작; ) HANGUL SYLLABLE JAG
+C792;C792;110C 1161 11A9;C792;110C 1161 11A9; # (잒; 잒; 잒; 잒; 잒; ) HANGUL SYLLABLE JAGG
+C793;C793;110C 1161 11AA;C793;110C 1161 11AA; # (잓; 잓; 잓; 잓; 잓; ) HANGUL SYLLABLE JAGS
+C794;C794;110C 1161 11AB;C794;110C 1161 11AB; # (잔; 잔; 잔; 잔; 잔; ) HANGUL SYLLABLE JAN
+C795;C795;110C 1161 11AC;C795;110C 1161 11AC; # (잕; 잕; 잕; 잕; 잕; ) HANGUL SYLLABLE JANJ
+C796;C796;110C 1161 11AD;C796;110C 1161 11AD; # (잖; 잖; 잖; 잖; 잖; ) HANGUL SYLLABLE JANH
+C797;C797;110C 1161 11AE;C797;110C 1161 11AE; # (잗; 잗; 잗; 잗; 잗; ) HANGUL SYLLABLE JAD
+C798;C798;110C 1161 11AF;C798;110C 1161 11AF; # (잘; 잘; 잘; 잘; 잘; ) HANGUL SYLLABLE JAL
+C799;C799;110C 1161 11B0;C799;110C 1161 11B0; # (잙; 잙; 잙; 잙; 잙; ) HANGUL SYLLABLE JALG
+C79A;C79A;110C 1161 11B1;C79A;110C 1161 11B1; # (잚; 잚; 잚; 잚; 잚; ) HANGUL SYLLABLE JALM
+C79B;C79B;110C 1161 11B2;C79B;110C 1161 11B2; # (잛; 잛; 잛; 잛; 잛; ) HANGUL SYLLABLE JALB
+C79C;C79C;110C 1161 11B3;C79C;110C 1161 11B3; # (잜; 잜; 잜; 잜; 잜; ) HANGUL SYLLABLE JALS
+C79D;C79D;110C 1161 11B4;C79D;110C 1161 11B4; # (ìž; ìž; 잝; ìž; 잝; ) HANGUL SYLLABLE JALT
+C79E;C79E;110C 1161 11B5;C79E;110C 1161 11B5; # (잞; 잞; 잞; 잞; 잞; ) HANGUL SYLLABLE JALP
+C79F;C79F;110C 1161 11B6;C79F;110C 1161 11B6; # (잟; 잟; 잟; 잟; 잟; ) HANGUL SYLLABLE JALH
+C7A0;C7A0;110C 1161 11B7;C7A0;110C 1161 11B7; # (잠; 잠; 잠; 잠; 잠; ) HANGUL SYLLABLE JAM
+C7A1;C7A1;110C 1161 11B8;C7A1;110C 1161 11B8; # (잡; 잡; 잡; 잡; 잡; ) HANGUL SYLLABLE JAB
+C7A2;C7A2;110C 1161 11B9;C7A2;110C 1161 11B9; # (잢; 잢; 잢; 잢; 잢; ) HANGUL SYLLABLE JABS
+C7A3;C7A3;110C 1161 11BA;C7A3;110C 1161 11BA; # (잣; 잣; 잣; 잣; 잣; ) HANGUL SYLLABLE JAS
+C7A4;C7A4;110C 1161 11BB;C7A4;110C 1161 11BB; # (잤; 잤; 잤; 잤; 잤; ) HANGUL SYLLABLE JASS
+C7A5;C7A5;110C 1161 11BC;C7A5;110C 1161 11BC; # (장; 장; 장; 장; 장; ) HANGUL SYLLABLE JANG
+C7A6;C7A6;110C 1161 11BD;C7A6;110C 1161 11BD; # (잦; 잦; 잦; 잦; 잦; ) HANGUL SYLLABLE JAJ
+C7A7;C7A7;110C 1161 11BE;C7A7;110C 1161 11BE; # (잧; 잧; 잧; 잧; 잧; ) HANGUL SYLLABLE JAC
+C7A8;C7A8;110C 1161 11BF;C7A8;110C 1161 11BF; # (잨; 잨; 잨; 잨; 잨; ) HANGUL SYLLABLE JAK
+C7A9;C7A9;110C 1161 11C0;C7A9;110C 1161 11C0; # (잩; 잩; 잩; 잩; 잩; ) HANGUL SYLLABLE JAT
+C7AA;C7AA;110C 1161 11C1;C7AA;110C 1161 11C1; # (잪; 잪; 자á‡; 잪; 자á‡; ) HANGUL SYLLABLE JAP
+C7AB;C7AB;110C 1161 11C2;C7AB;110C 1161 11C2; # (잫; 잫; 잫; 잫; 잫; ) HANGUL SYLLABLE JAH
+C7AC;C7AC;110C 1162;C7AC;110C 1162; # (재; 재; 재; 재; 재; ) HANGUL SYLLABLE JAE
+C7AD;C7AD;110C 1162 11A8;C7AD;110C 1162 11A8; # (잭; 잭; 잭; 잭; 잭; ) HANGUL SYLLABLE JAEG
+C7AE;C7AE;110C 1162 11A9;C7AE;110C 1162 11A9; # (잮; 잮; 잮; 잮; 잮; ) HANGUL SYLLABLE JAEGG
+C7AF;C7AF;110C 1162 11AA;C7AF;110C 1162 11AA; # (잯; 잯; 잯; 잯; 잯; ) HANGUL SYLLABLE JAEGS
+C7B0;C7B0;110C 1162 11AB;C7B0;110C 1162 11AB; # (잰; 잰; 잰; 잰; 잰; ) HANGUL SYLLABLE JAEN
+C7B1;C7B1;110C 1162 11AC;C7B1;110C 1162 11AC; # (잱; 잱; 잱; 잱; 잱; ) HANGUL SYLLABLE JAENJ
+C7B2;C7B2;110C 1162 11AD;C7B2;110C 1162 11AD; # (잲; 잲; 잲; 잲; 잲; ) HANGUL SYLLABLE JAENH
+C7B3;C7B3;110C 1162 11AE;C7B3;110C 1162 11AE; # (잳; 잳; 잳; 잳; 잳; ) HANGUL SYLLABLE JAED
+C7B4;C7B4;110C 1162 11AF;C7B4;110C 1162 11AF; # (잴; 잴; 잴; 잴; 잴; ) HANGUL SYLLABLE JAEL
+C7B5;C7B5;110C 1162 11B0;C7B5;110C 1162 11B0; # (잵; 잵; 잵; 잵; 잵; ) HANGUL SYLLABLE JAELG
+C7B6;C7B6;110C 1162 11B1;C7B6;110C 1162 11B1; # (잶; 잶; 잶; 잶; 잶; ) HANGUL SYLLABLE JAELM
+C7B7;C7B7;110C 1162 11B2;C7B7;110C 1162 11B2; # (잷; 잷; 잷; 잷; 잷; ) HANGUL SYLLABLE JAELB
+C7B8;C7B8;110C 1162 11B3;C7B8;110C 1162 11B3; # (잸; 잸; 잸; 잸; 잸; ) HANGUL SYLLABLE JAELS
+C7B9;C7B9;110C 1162 11B4;C7B9;110C 1162 11B4; # (잹; 잹; 잹; 잹; 잹; ) HANGUL SYLLABLE JAELT
+C7BA;C7BA;110C 1162 11B5;C7BA;110C 1162 11B5; # (잺; 잺; 잺; 잺; 잺; ) HANGUL SYLLABLE JAELP
+C7BB;C7BB;110C 1162 11B6;C7BB;110C 1162 11B6; # (잻; 잻; 잻; 잻; 잻; ) HANGUL SYLLABLE JAELH
+C7BC;C7BC;110C 1162 11B7;C7BC;110C 1162 11B7; # (잼; 잼; 잼; 잼; 잼; ) HANGUL SYLLABLE JAEM
+C7BD;C7BD;110C 1162 11B8;C7BD;110C 1162 11B8; # (잽; 잽; 잽; 잽; 잽; ) HANGUL SYLLABLE JAEB
+C7BE;C7BE;110C 1162 11B9;C7BE;110C 1162 11B9; # (잾; 잾; 잾; 잾; 잾; ) HANGUL SYLLABLE JAEBS
+C7BF;C7BF;110C 1162 11BA;C7BF;110C 1162 11BA; # (잿; 잿; 잿; 잿; 잿; ) HANGUL SYLLABLE JAES
+C7C0;C7C0;110C 1162 11BB;C7C0;110C 1162 11BB; # (쟀; 쟀; 쟀; 쟀; 쟀; ) HANGUL SYLLABLE JAESS
+C7C1;C7C1;110C 1162 11BC;C7C1;110C 1162 11BC; # (ìŸ; ìŸ; 쟁; ìŸ; 쟁; ) HANGUL SYLLABLE JAENG
+C7C2;C7C2;110C 1162 11BD;C7C2;110C 1162 11BD; # (쟂; 쟂; 쟂; 쟂; 쟂; ) HANGUL SYLLABLE JAEJ
+C7C3;C7C3;110C 1162 11BE;C7C3;110C 1162 11BE; # (쟃; 쟃; 쟃; 쟃; 쟃; ) HANGUL SYLLABLE JAEC
+C7C4;C7C4;110C 1162 11BF;C7C4;110C 1162 11BF; # (쟄; 쟄; 쟄; 쟄; 쟄; ) HANGUL SYLLABLE JAEK
+C7C5;C7C5;110C 1162 11C0;C7C5;110C 1162 11C0; # (쟅; 쟅; 쟅; 쟅; 쟅; ) HANGUL SYLLABLE JAET
+C7C6;C7C6;110C 1162 11C1;C7C6;110C 1162 11C1; # (쟆; 쟆; 재á‡; 쟆; 재á‡; ) HANGUL SYLLABLE JAEP
+C7C7;C7C7;110C 1162 11C2;C7C7;110C 1162 11C2; # (쟇; 쟇; 쟇; 쟇; 쟇; ) HANGUL SYLLABLE JAEH
+C7C8;C7C8;110C 1163;C7C8;110C 1163; # (쟈; 쟈; 쟈; 쟈; 쟈; ) HANGUL SYLLABLE JYA
+C7C9;C7C9;110C 1163 11A8;C7C9;110C 1163 11A8; # (쟉; 쟉; 쟉; 쟉; 쟉; ) HANGUL SYLLABLE JYAG
+C7CA;C7CA;110C 1163 11A9;C7CA;110C 1163 11A9; # (쟊; 쟊; 쟊; 쟊; 쟊; ) HANGUL SYLLABLE JYAGG
+C7CB;C7CB;110C 1163 11AA;C7CB;110C 1163 11AA; # (쟋; 쟋; 쟋; 쟋; 쟋; ) HANGUL SYLLABLE JYAGS
+C7CC;C7CC;110C 1163 11AB;C7CC;110C 1163 11AB; # (쟌; 쟌; 쟌; 쟌; 쟌; ) HANGUL SYLLABLE JYAN
+C7CD;C7CD;110C 1163 11AC;C7CD;110C 1163 11AC; # (ìŸ; ìŸ; 쟍; ìŸ; 쟍; ) HANGUL SYLLABLE JYANJ
+C7CE;C7CE;110C 1163 11AD;C7CE;110C 1163 11AD; # (쟎; 쟎; 쟎; 쟎; 쟎; ) HANGUL SYLLABLE JYANH
+C7CF;C7CF;110C 1163 11AE;C7CF;110C 1163 11AE; # (ìŸ; ìŸ; 쟏; ìŸ; 쟏; ) HANGUL SYLLABLE JYAD
+C7D0;C7D0;110C 1163 11AF;C7D0;110C 1163 11AF; # (ìŸ; ìŸ; 쟐; ìŸ; 쟐; ) HANGUL SYLLABLE JYAL
+C7D1;C7D1;110C 1163 11B0;C7D1;110C 1163 11B0; # (쟑; 쟑; 쟑; 쟑; 쟑; ) HANGUL SYLLABLE JYALG
+C7D2;C7D2;110C 1163 11B1;C7D2;110C 1163 11B1; # (쟒; 쟒; 쟒; 쟒; 쟒; ) HANGUL SYLLABLE JYALM
+C7D3;C7D3;110C 1163 11B2;C7D3;110C 1163 11B2; # (쟓; 쟓; 쟓; 쟓; 쟓; ) HANGUL SYLLABLE JYALB
+C7D4;C7D4;110C 1163 11B3;C7D4;110C 1163 11B3; # (쟔; 쟔; 쟔; 쟔; 쟔; ) HANGUL SYLLABLE JYALS
+C7D5;C7D5;110C 1163 11B4;C7D5;110C 1163 11B4; # (쟕; 쟕; 쟕; 쟕; 쟕; ) HANGUL SYLLABLE JYALT
+C7D6;C7D6;110C 1163 11B5;C7D6;110C 1163 11B5; # (쟖; 쟖; 쟖; 쟖; 쟖; ) HANGUL SYLLABLE JYALP
+C7D7;C7D7;110C 1163 11B6;C7D7;110C 1163 11B6; # (쟗; 쟗; 쟗; 쟗; 쟗; ) HANGUL SYLLABLE JYALH
+C7D8;C7D8;110C 1163 11B7;C7D8;110C 1163 11B7; # (쟘; 쟘; 쟘; 쟘; 쟘; ) HANGUL SYLLABLE JYAM
+C7D9;C7D9;110C 1163 11B8;C7D9;110C 1163 11B8; # (쟙; 쟙; 쟙; 쟙; 쟙; ) HANGUL SYLLABLE JYAB
+C7DA;C7DA;110C 1163 11B9;C7DA;110C 1163 11B9; # (쟚; 쟚; 쟚; 쟚; 쟚; ) HANGUL SYLLABLE JYABS
+C7DB;C7DB;110C 1163 11BA;C7DB;110C 1163 11BA; # (쟛; 쟛; 쟛; 쟛; 쟛; ) HANGUL SYLLABLE JYAS
+C7DC;C7DC;110C 1163 11BB;C7DC;110C 1163 11BB; # (쟜; 쟜; 쟜; 쟜; 쟜; ) HANGUL SYLLABLE JYASS
+C7DD;C7DD;110C 1163 11BC;C7DD;110C 1163 11BC; # (ìŸ; ìŸ; 쟝; ìŸ; 쟝; ) HANGUL SYLLABLE JYANG
+C7DE;C7DE;110C 1163 11BD;C7DE;110C 1163 11BD; # (쟞; 쟞; 쟞; 쟞; 쟞; ) HANGUL SYLLABLE JYAJ
+C7DF;C7DF;110C 1163 11BE;C7DF;110C 1163 11BE; # (쟟; 쟟; 쟟; 쟟; 쟟; ) HANGUL SYLLABLE JYAC
+C7E0;C7E0;110C 1163 11BF;C7E0;110C 1163 11BF; # (쟠; 쟠; 쟠; 쟠; 쟠; ) HANGUL SYLLABLE JYAK
+C7E1;C7E1;110C 1163 11C0;C7E1;110C 1163 11C0; # (쟡; 쟡; 쟡; 쟡; 쟡; ) HANGUL SYLLABLE JYAT
+C7E2;C7E2;110C 1163 11C1;C7E2;110C 1163 11C1; # (쟢; 쟢; 쟈á‡; 쟢; 쟈á‡; ) HANGUL SYLLABLE JYAP
+C7E3;C7E3;110C 1163 11C2;C7E3;110C 1163 11C2; # (쟣; 쟣; 쟣; 쟣; 쟣; ) HANGUL SYLLABLE JYAH
+C7E4;C7E4;110C 1164;C7E4;110C 1164; # (쟤; 쟤; 쟤; 쟤; 쟤; ) HANGUL SYLLABLE JYAE
+C7E5;C7E5;110C 1164 11A8;C7E5;110C 1164 11A8; # (쟥; 쟥; 쟥; 쟥; 쟥; ) HANGUL SYLLABLE JYAEG
+C7E6;C7E6;110C 1164 11A9;C7E6;110C 1164 11A9; # (쟦; 쟦; 쟦; 쟦; 쟦; ) HANGUL SYLLABLE JYAEGG
+C7E7;C7E7;110C 1164 11AA;C7E7;110C 1164 11AA; # (쟧; 쟧; 쟧; 쟧; 쟧; ) HANGUL SYLLABLE JYAEGS
+C7E8;C7E8;110C 1164 11AB;C7E8;110C 1164 11AB; # (쟨; 쟨; 쟨; 쟨; 쟨; ) HANGUL SYLLABLE JYAEN
+C7E9;C7E9;110C 1164 11AC;C7E9;110C 1164 11AC; # (쟩; 쟩; 쟩; 쟩; 쟩; ) HANGUL SYLLABLE JYAENJ
+C7EA;C7EA;110C 1164 11AD;C7EA;110C 1164 11AD; # (쟪; 쟪; 쟪; 쟪; 쟪; ) HANGUL SYLLABLE JYAENH
+C7EB;C7EB;110C 1164 11AE;C7EB;110C 1164 11AE; # (쟫; 쟫; 쟫; 쟫; 쟫; ) HANGUL SYLLABLE JYAED
+C7EC;C7EC;110C 1164 11AF;C7EC;110C 1164 11AF; # (쟬; 쟬; 쟬; 쟬; 쟬; ) HANGUL SYLLABLE JYAEL
+C7ED;C7ED;110C 1164 11B0;C7ED;110C 1164 11B0; # (쟭; 쟭; 쟭; 쟭; 쟭; ) HANGUL SYLLABLE JYAELG
+C7EE;C7EE;110C 1164 11B1;C7EE;110C 1164 11B1; # (쟮; 쟮; 쟮; 쟮; 쟮; ) HANGUL SYLLABLE JYAELM
+C7EF;C7EF;110C 1164 11B2;C7EF;110C 1164 11B2; # (쟯; 쟯; 쟯; 쟯; 쟯; ) HANGUL SYLLABLE JYAELB
+C7F0;C7F0;110C 1164 11B3;C7F0;110C 1164 11B3; # (쟰; 쟰; 쟰; 쟰; 쟰; ) HANGUL SYLLABLE JYAELS
+C7F1;C7F1;110C 1164 11B4;C7F1;110C 1164 11B4; # (쟱; 쟱; 쟱; 쟱; 쟱; ) HANGUL SYLLABLE JYAELT
+C7F2;C7F2;110C 1164 11B5;C7F2;110C 1164 11B5; # (쟲; 쟲; 쟲; 쟲; 쟲; ) HANGUL SYLLABLE JYAELP
+C7F3;C7F3;110C 1164 11B6;C7F3;110C 1164 11B6; # (쟳; 쟳; 쟳; 쟳; 쟳; ) HANGUL SYLLABLE JYAELH
+C7F4;C7F4;110C 1164 11B7;C7F4;110C 1164 11B7; # (쟴; 쟴; 쟴; 쟴; 쟴; ) HANGUL SYLLABLE JYAEM
+C7F5;C7F5;110C 1164 11B8;C7F5;110C 1164 11B8; # (쟵; 쟵; 쟵; 쟵; 쟵; ) HANGUL SYLLABLE JYAEB
+C7F6;C7F6;110C 1164 11B9;C7F6;110C 1164 11B9; # (쟶; 쟶; 쟶; 쟶; 쟶; ) HANGUL SYLLABLE JYAEBS
+C7F7;C7F7;110C 1164 11BA;C7F7;110C 1164 11BA; # (쟷; 쟷; 쟷; 쟷; 쟷; ) HANGUL SYLLABLE JYAES
+C7F8;C7F8;110C 1164 11BB;C7F8;110C 1164 11BB; # (쟸; 쟸; 쟸; 쟸; 쟸; ) HANGUL SYLLABLE JYAESS
+C7F9;C7F9;110C 1164 11BC;C7F9;110C 1164 11BC; # (쟹; 쟹; 쟹; 쟹; 쟹; ) HANGUL SYLLABLE JYAENG
+C7FA;C7FA;110C 1164 11BD;C7FA;110C 1164 11BD; # (쟺; 쟺; 쟺; 쟺; 쟺; ) HANGUL SYLLABLE JYAEJ
+C7FB;C7FB;110C 1164 11BE;C7FB;110C 1164 11BE; # (쟻; 쟻; 쟻; 쟻; 쟻; ) HANGUL SYLLABLE JYAEC
+C7FC;C7FC;110C 1164 11BF;C7FC;110C 1164 11BF; # (쟼; 쟼; 쟼; 쟼; 쟼; ) HANGUL SYLLABLE JYAEK
+C7FD;C7FD;110C 1164 11C0;C7FD;110C 1164 11C0; # (쟽; 쟽; 쟽; 쟽; 쟽; ) HANGUL SYLLABLE JYAET
+C7FE;C7FE;110C 1164 11C1;C7FE;110C 1164 11C1; # (쟾; 쟾; 쟤á‡; 쟾; 쟤á‡; ) HANGUL SYLLABLE JYAEP
+C7FF;C7FF;110C 1164 11C2;C7FF;110C 1164 11C2; # (쟿; 쟿; 쟿; 쟿; 쟿; ) HANGUL SYLLABLE JYAEH
+C800;C800;110C 1165;C800;110C 1165; # (저; 저; 저; 저; 저; ) HANGUL SYLLABLE JEO
+C801;C801;110C 1165 11A8;C801;110C 1165 11A8; # (ì ; ì ; 적; ì ; 적; ) HANGUL SYLLABLE JEOG
+C802;C802;110C 1165 11A9;C802;110C 1165 11A9; # (젂; 젂; 젂; 젂; 젂; ) HANGUL SYLLABLE JEOGG
+C803;C803;110C 1165 11AA;C803;110C 1165 11AA; # (젃; 젃; 젃; 젃; 젃; ) HANGUL SYLLABLE JEOGS
+C804;C804;110C 1165 11AB;C804;110C 1165 11AB; # (전; 전; 전; 전; 전; ) HANGUL SYLLABLE JEON
+C805;C805;110C 1165 11AC;C805;110C 1165 11AC; # (젅; 젅; 젅; 젅; 젅; ) HANGUL SYLLABLE JEONJ
+C806;C806;110C 1165 11AD;C806;110C 1165 11AD; # (젆; 젆; 젆; 젆; 젆; ) HANGUL SYLLABLE JEONH
+C807;C807;110C 1165 11AE;C807;110C 1165 11AE; # (젇; 젇; 젇; 젇; 젇; ) HANGUL SYLLABLE JEOD
+C808;C808;110C 1165 11AF;C808;110C 1165 11AF; # (절; 절; 절; 절; 절; ) HANGUL SYLLABLE JEOL
+C809;C809;110C 1165 11B0;C809;110C 1165 11B0; # (젉; 젉; 젉; 젉; 젉; ) HANGUL SYLLABLE JEOLG
+C80A;C80A;110C 1165 11B1;C80A;110C 1165 11B1; # (젊; 젊; 젊; 젊; 젊; ) HANGUL SYLLABLE JEOLM
+C80B;C80B;110C 1165 11B2;C80B;110C 1165 11B2; # (젋; 젋; 젋; 젋; 젋; ) HANGUL SYLLABLE JEOLB
+C80C;C80C;110C 1165 11B3;C80C;110C 1165 11B3; # (젌; 젌; 젌; 젌; 젌; ) HANGUL SYLLABLE JEOLS
+C80D;C80D;110C 1165 11B4;C80D;110C 1165 11B4; # (ì ; ì ; 젍; ì ; 젍; ) HANGUL SYLLABLE JEOLT
+C80E;C80E;110C 1165 11B5;C80E;110C 1165 11B5; # (젎; 젎; 젎; 젎; 젎; ) HANGUL SYLLABLE JEOLP
+C80F;C80F;110C 1165 11B6;C80F;110C 1165 11B6; # (ì ; ì ; 젏; ì ; 젏; ) HANGUL SYLLABLE JEOLH
+C810;C810;110C 1165 11B7;C810;110C 1165 11B7; # (ì ; ì ; 점; ì ; 점; ) HANGUL SYLLABLE JEOM
+C811;C811;110C 1165 11B8;C811;110C 1165 11B8; # (접; 접; 접; 접; 접; ) HANGUL SYLLABLE JEOB
+C812;C812;110C 1165 11B9;C812;110C 1165 11B9; # (젒; 젒; 젒; 젒; 젒; ) HANGUL SYLLABLE JEOBS
+C813;C813;110C 1165 11BA;C813;110C 1165 11BA; # (젓; 젓; 젓; 젓; 젓; ) HANGUL SYLLABLE JEOS
+C814;C814;110C 1165 11BB;C814;110C 1165 11BB; # (젔; 젔; 젔; 젔; 젔; ) HANGUL SYLLABLE JEOSS
+C815;C815;110C 1165 11BC;C815;110C 1165 11BC; # (정; 정; 정; 정; 정; ) HANGUL SYLLABLE JEONG
+C816;C816;110C 1165 11BD;C816;110C 1165 11BD; # (젖; 젖; 젖; 젖; 젖; ) HANGUL SYLLABLE JEOJ
+C817;C817;110C 1165 11BE;C817;110C 1165 11BE; # (젗; 젗; 젗; 젗; 젗; ) HANGUL SYLLABLE JEOC
+C818;C818;110C 1165 11BF;C818;110C 1165 11BF; # (젘; 젘; 젘; 젘; 젘; ) HANGUL SYLLABLE JEOK
+C819;C819;110C 1165 11C0;C819;110C 1165 11C0; # (젙; 젙; 젙; 젙; 젙; ) HANGUL SYLLABLE JEOT
+C81A;C81A;110C 1165 11C1;C81A;110C 1165 11C1; # (ì š; ì š; 저á‡; ì š; 저á‡; ) HANGUL SYLLABLE JEOP
+C81B;C81B;110C 1165 11C2;C81B;110C 1165 11C2; # (젛; 젛; 젛; 젛; 젛; ) HANGUL SYLLABLE JEOH
+C81C;C81C;110C 1166;C81C;110C 1166; # (제; 제; 제; 제; 제; ) HANGUL SYLLABLE JE
+C81D;C81D;110C 1166 11A8;C81D;110C 1166 11A8; # (ì ; ì ; 젝; ì ; 젝; ) HANGUL SYLLABLE JEG
+C81E;C81E;110C 1166 11A9;C81E;110C 1166 11A9; # (젞; 젞; 젞; 젞; 젞; ) HANGUL SYLLABLE JEGG
+C81F;C81F;110C 1166 11AA;C81F;110C 1166 11AA; # (젟; 젟; 젟; 젟; 젟; ) HANGUL SYLLABLE JEGS
+C820;C820;110C 1166 11AB;C820;110C 1166 11AB; # (젠; 젠; 젠; 젠; 젠; ) HANGUL SYLLABLE JEN
+C821;C821;110C 1166 11AC;C821;110C 1166 11AC; # (젡; 젡; 젡; 젡; 젡; ) HANGUL SYLLABLE JENJ
+C822;C822;110C 1166 11AD;C822;110C 1166 11AD; # (젢; 젢; 젢; 젢; 젢; ) HANGUL SYLLABLE JENH
+C823;C823;110C 1166 11AE;C823;110C 1166 11AE; # (젣; 젣; 젣; 젣; 젣; ) HANGUL SYLLABLE JED
+C824;C824;110C 1166 11AF;C824;110C 1166 11AF; # (젤; 젤; 젤; 젤; 젤; ) HANGUL SYLLABLE JEL
+C825;C825;110C 1166 11B0;C825;110C 1166 11B0; # (젥; 젥; 젥; 젥; 젥; ) HANGUL SYLLABLE JELG
+C826;C826;110C 1166 11B1;C826;110C 1166 11B1; # (젦; 젦; 젦; 젦; 젦; ) HANGUL SYLLABLE JELM
+C827;C827;110C 1166 11B2;C827;110C 1166 11B2; # (젧; 젧; 젧; 젧; 젧; ) HANGUL SYLLABLE JELB
+C828;C828;110C 1166 11B3;C828;110C 1166 11B3; # (젨; 젨; 젨; 젨; 젨; ) HANGUL SYLLABLE JELS
+C829;C829;110C 1166 11B4;C829;110C 1166 11B4; # (젩; 젩; 젩; 젩; 젩; ) HANGUL SYLLABLE JELT
+C82A;C82A;110C 1166 11B5;C82A;110C 1166 11B5; # (젪; 젪; 젪; 젪; 젪; ) HANGUL SYLLABLE JELP
+C82B;C82B;110C 1166 11B6;C82B;110C 1166 11B6; # (젫; 젫; 젫; 젫; 젫; ) HANGUL SYLLABLE JELH
+C82C;C82C;110C 1166 11B7;C82C;110C 1166 11B7; # (젬; 젬; 젬; 젬; 젬; ) HANGUL SYLLABLE JEM
+C82D;C82D;110C 1166 11B8;C82D;110C 1166 11B8; # (젭; 젭; 젭; 젭; 젭; ) HANGUL SYLLABLE JEB
+C82E;C82E;110C 1166 11B9;C82E;110C 1166 11B9; # (젮; 젮; 젮; 젮; 젮; ) HANGUL SYLLABLE JEBS
+C82F;C82F;110C 1166 11BA;C82F;110C 1166 11BA; # (젯; 젯; 젯; 젯; 젯; ) HANGUL SYLLABLE JES
+C830;C830;110C 1166 11BB;C830;110C 1166 11BB; # (젰; 젰; 젰; 젰; 젰; ) HANGUL SYLLABLE JESS
+C831;C831;110C 1166 11BC;C831;110C 1166 11BC; # (젱; 젱; 젱; 젱; 젱; ) HANGUL SYLLABLE JENG
+C832;C832;110C 1166 11BD;C832;110C 1166 11BD; # (젲; 젲; 젲; 젲; 젲; ) HANGUL SYLLABLE JEJ
+C833;C833;110C 1166 11BE;C833;110C 1166 11BE; # (젳; 젳; 젳; 젳; 젳; ) HANGUL SYLLABLE JEC
+C834;C834;110C 1166 11BF;C834;110C 1166 11BF; # (젴; 젴; 젴; 젴; 젴; ) HANGUL SYLLABLE JEK
+C835;C835;110C 1166 11C0;C835;110C 1166 11C0; # (젵; 젵; 젵; 젵; 젵; ) HANGUL SYLLABLE JET
+C836;C836;110C 1166 11C1;C836;110C 1166 11C1; # (ì ¶; ì ¶; 제á‡; ì ¶; 제á‡; ) HANGUL SYLLABLE JEP
+C837;C837;110C 1166 11C2;C837;110C 1166 11C2; # (젷; 젷; 젷; 젷; 젷; ) HANGUL SYLLABLE JEH
+C838;C838;110C 1167;C838;110C 1167; # (져; 져; 져; 져; 져; ) HANGUL SYLLABLE JYEO
+C839;C839;110C 1167 11A8;C839;110C 1167 11A8; # (젹; 젹; 젹; 젹; 젹; ) HANGUL SYLLABLE JYEOG
+C83A;C83A;110C 1167 11A9;C83A;110C 1167 11A9; # (젺; 젺; 젺; 젺; 젺; ) HANGUL SYLLABLE JYEOGG
+C83B;C83B;110C 1167 11AA;C83B;110C 1167 11AA; # (젻; 젻; 젻; 젻; 젻; ) HANGUL SYLLABLE JYEOGS
+C83C;C83C;110C 1167 11AB;C83C;110C 1167 11AB; # (젼; 젼; 젼; 젼; 젼; ) HANGUL SYLLABLE JYEON
+C83D;C83D;110C 1167 11AC;C83D;110C 1167 11AC; # (젽; 젽; 젽; 젽; 젽; ) HANGUL SYLLABLE JYEONJ
+C83E;C83E;110C 1167 11AD;C83E;110C 1167 11AD; # (젾; 젾; 젾; 젾; 젾; ) HANGUL SYLLABLE JYEONH
+C83F;C83F;110C 1167 11AE;C83F;110C 1167 11AE; # (젿; 젿; 젿; 젿; 젿; ) HANGUL SYLLABLE JYEOD
+C840;C840;110C 1167 11AF;C840;110C 1167 11AF; # (졀; 졀; 졀; 졀; 졀; ) HANGUL SYLLABLE JYEOL
+C841;C841;110C 1167 11B0;C841;110C 1167 11B0; # (ì¡; ì¡; 졁; ì¡; 졁; ) HANGUL SYLLABLE JYEOLG
+C842;C842;110C 1167 11B1;C842;110C 1167 11B1; # (졂; 졂; 졂; 졂; 졂; ) HANGUL SYLLABLE JYEOLM
+C843;C843;110C 1167 11B2;C843;110C 1167 11B2; # (졃; 졃; 졃; 졃; 졃; ) HANGUL SYLLABLE JYEOLB
+C844;C844;110C 1167 11B3;C844;110C 1167 11B3; # (졄; 졄; 졄; 졄; 졄; ) HANGUL SYLLABLE JYEOLS
+C845;C845;110C 1167 11B4;C845;110C 1167 11B4; # (졅; 졅; 졅; 졅; 졅; ) HANGUL SYLLABLE JYEOLT
+C846;C846;110C 1167 11B5;C846;110C 1167 11B5; # (졆; 졆; 졆; 졆; 졆; ) HANGUL SYLLABLE JYEOLP
+C847;C847;110C 1167 11B6;C847;110C 1167 11B6; # (졇; 졇; 졇; 졇; 졇; ) HANGUL SYLLABLE JYEOLH
+C848;C848;110C 1167 11B7;C848;110C 1167 11B7; # (졈; 졈; 졈; 졈; 졈; ) HANGUL SYLLABLE JYEOM
+C849;C849;110C 1167 11B8;C849;110C 1167 11B8; # (졉; 졉; 졉; 졉; 졉; ) HANGUL SYLLABLE JYEOB
+C84A;C84A;110C 1167 11B9;C84A;110C 1167 11B9; # (졊; 졊; 졊; 졊; 졊; ) HANGUL SYLLABLE JYEOBS
+C84B;C84B;110C 1167 11BA;C84B;110C 1167 11BA; # (졋; 졋; 졋; 졋; 졋; ) HANGUL SYLLABLE JYEOS
+C84C;C84C;110C 1167 11BB;C84C;110C 1167 11BB; # (졌; 졌; 졌; 졌; 졌; ) HANGUL SYLLABLE JYEOSS
+C84D;C84D;110C 1167 11BC;C84D;110C 1167 11BC; # (ì¡; ì¡; 졍; ì¡; 졍; ) HANGUL SYLLABLE JYEONG
+C84E;C84E;110C 1167 11BD;C84E;110C 1167 11BD; # (졎; 졎; 졎; 졎; 졎; ) HANGUL SYLLABLE JYEOJ
+C84F;C84F;110C 1167 11BE;C84F;110C 1167 11BE; # (ì¡; ì¡; 졏; ì¡; 졏; ) HANGUL SYLLABLE JYEOC
+C850;C850;110C 1167 11BF;C850;110C 1167 11BF; # (ì¡; ì¡; 졐; ì¡; 졐; ) HANGUL SYLLABLE JYEOK
+C851;C851;110C 1167 11C0;C851;110C 1167 11C0; # (졑; 졑; 졑; 졑; 졑; ) HANGUL SYLLABLE JYEOT
+C852;C852;110C 1167 11C1;C852;110C 1167 11C1; # (ì¡’; ì¡’; 져á‡; ì¡’; 져á‡; ) HANGUL SYLLABLE JYEOP
+C853;C853;110C 1167 11C2;C853;110C 1167 11C2; # (졓; 졓; 졓; 졓; 졓; ) HANGUL SYLLABLE JYEOH
+C854;C854;110C 1168;C854;110C 1168; # (졔; 졔; 졔; 졔; 졔; ) HANGUL SYLLABLE JYE
+C855;C855;110C 1168 11A8;C855;110C 1168 11A8; # (졕; 졕; 졕; 졕; 졕; ) HANGUL SYLLABLE JYEG
+C856;C856;110C 1168 11A9;C856;110C 1168 11A9; # (졖; 졖; 졖; 졖; 졖; ) HANGUL SYLLABLE JYEGG
+C857;C857;110C 1168 11AA;C857;110C 1168 11AA; # (졗; 졗; 졗; 졗; 졗; ) HANGUL SYLLABLE JYEGS
+C858;C858;110C 1168 11AB;C858;110C 1168 11AB; # (졘; 졘; 졘; 졘; 졘; ) HANGUL SYLLABLE JYEN
+C859;C859;110C 1168 11AC;C859;110C 1168 11AC; # (졙; 졙; 졙; 졙; 졙; ) HANGUL SYLLABLE JYENJ
+C85A;C85A;110C 1168 11AD;C85A;110C 1168 11AD; # (졚; 졚; 졚; 졚; 졚; ) HANGUL SYLLABLE JYENH
+C85B;C85B;110C 1168 11AE;C85B;110C 1168 11AE; # (졛; 졛; 졛; 졛; 졛; ) HANGUL SYLLABLE JYED
+C85C;C85C;110C 1168 11AF;C85C;110C 1168 11AF; # (졜; 졜; 졜; 졜; 졜; ) HANGUL SYLLABLE JYEL
+C85D;C85D;110C 1168 11B0;C85D;110C 1168 11B0; # (ì¡; ì¡; 졝; ì¡; 졝; ) HANGUL SYLLABLE JYELG
+C85E;C85E;110C 1168 11B1;C85E;110C 1168 11B1; # (졞; 졞; 졞; 졞; 졞; ) HANGUL SYLLABLE JYELM
+C85F;C85F;110C 1168 11B2;C85F;110C 1168 11B2; # (졟; 졟; 졟; 졟; 졟; ) HANGUL SYLLABLE JYELB
+C860;C860;110C 1168 11B3;C860;110C 1168 11B3; # (졠; 졠; 졠; 졠; 졠; ) HANGUL SYLLABLE JYELS
+C861;C861;110C 1168 11B4;C861;110C 1168 11B4; # (졡; 졡; 졡; 졡; 졡; ) HANGUL SYLLABLE JYELT
+C862;C862;110C 1168 11B5;C862;110C 1168 11B5; # (졢; 졢; 졢; 졢; 졢; ) HANGUL SYLLABLE JYELP
+C863;C863;110C 1168 11B6;C863;110C 1168 11B6; # (졣; 졣; 졣; 졣; 졣; ) HANGUL SYLLABLE JYELH
+C864;C864;110C 1168 11B7;C864;110C 1168 11B7; # (졤; 졤; 졤; 졤; 졤; ) HANGUL SYLLABLE JYEM
+C865;C865;110C 1168 11B8;C865;110C 1168 11B8; # (졥; 졥; 졥; 졥; 졥; ) HANGUL SYLLABLE JYEB
+C866;C866;110C 1168 11B9;C866;110C 1168 11B9; # (졦; 졦; 졦; 졦; 졦; ) HANGUL SYLLABLE JYEBS
+C867;C867;110C 1168 11BA;C867;110C 1168 11BA; # (졧; 졧; 졧; 졧; 졧; ) HANGUL SYLLABLE JYES
+C868;C868;110C 1168 11BB;C868;110C 1168 11BB; # (졨; 졨; 졨; 졨; 졨; ) HANGUL SYLLABLE JYESS
+C869;C869;110C 1168 11BC;C869;110C 1168 11BC; # (졩; 졩; 졩; 졩; 졩; ) HANGUL SYLLABLE JYENG
+C86A;C86A;110C 1168 11BD;C86A;110C 1168 11BD; # (졪; 졪; 졪; 졪; 졪; ) HANGUL SYLLABLE JYEJ
+C86B;C86B;110C 1168 11BE;C86B;110C 1168 11BE; # (졫; 졫; 졫; 졫; 졫; ) HANGUL SYLLABLE JYEC
+C86C;C86C;110C 1168 11BF;C86C;110C 1168 11BF; # (졬; 졬; 졬; 졬; 졬; ) HANGUL SYLLABLE JYEK
+C86D;C86D;110C 1168 11C0;C86D;110C 1168 11C0; # (졭; 졭; 졭; 졭; 졭; ) HANGUL SYLLABLE JYET
+C86E;C86E;110C 1168 11C1;C86E;110C 1168 11C1; # (ì¡®; ì¡®; 졔á‡; ì¡®; 졔á‡; ) HANGUL SYLLABLE JYEP
+C86F;C86F;110C 1168 11C2;C86F;110C 1168 11C2; # (졯; 졯; 졯; 졯; 졯; ) HANGUL SYLLABLE JYEH
+C870;C870;110C 1169;C870;110C 1169; # (조; 조; 조; 조; 조; ) HANGUL SYLLABLE JO
+C871;C871;110C 1169 11A8;C871;110C 1169 11A8; # (족; 족; 족; 족; 족; ) HANGUL SYLLABLE JOG
+C872;C872;110C 1169 11A9;C872;110C 1169 11A9; # (졲; 졲; 졲; 졲; 졲; ) HANGUL SYLLABLE JOGG
+C873;C873;110C 1169 11AA;C873;110C 1169 11AA; # (졳; 졳; 졳; 졳; 졳; ) HANGUL SYLLABLE JOGS
+C874;C874;110C 1169 11AB;C874;110C 1169 11AB; # (존; 존; 존; 존; 존; ) HANGUL SYLLABLE JON
+C875;C875;110C 1169 11AC;C875;110C 1169 11AC; # (졵; 졵; 졵; 졵; 졵; ) HANGUL SYLLABLE JONJ
+C876;C876;110C 1169 11AD;C876;110C 1169 11AD; # (졶; 졶; 졶; 졶; 졶; ) HANGUL SYLLABLE JONH
+C877;C877;110C 1169 11AE;C877;110C 1169 11AE; # (졷; 졷; 졷; 졷; 졷; ) HANGUL SYLLABLE JOD
+C878;C878;110C 1169 11AF;C878;110C 1169 11AF; # (졸; 졸; 졸; 졸; 졸; ) HANGUL SYLLABLE JOL
+C879;C879;110C 1169 11B0;C879;110C 1169 11B0; # (졹; 졹; 졹; 졹; 졹; ) HANGUL SYLLABLE JOLG
+C87A;C87A;110C 1169 11B1;C87A;110C 1169 11B1; # (졺; 졺; 졺; 졺; 졺; ) HANGUL SYLLABLE JOLM
+C87B;C87B;110C 1169 11B2;C87B;110C 1169 11B2; # (졻; 졻; 졻; 졻; 졻; ) HANGUL SYLLABLE JOLB
+C87C;C87C;110C 1169 11B3;C87C;110C 1169 11B3; # (졼; 졼; 졼; 졼; 졼; ) HANGUL SYLLABLE JOLS
+C87D;C87D;110C 1169 11B4;C87D;110C 1169 11B4; # (졽; 졽; 졽; 졽; 졽; ) HANGUL SYLLABLE JOLT
+C87E;C87E;110C 1169 11B5;C87E;110C 1169 11B5; # (졾; 졾; 졾; 졾; 졾; ) HANGUL SYLLABLE JOLP
+C87F;C87F;110C 1169 11B6;C87F;110C 1169 11B6; # (졿; 졿; 졿; 졿; 졿; ) HANGUL SYLLABLE JOLH
+C880;C880;110C 1169 11B7;C880;110C 1169 11B7; # (좀; 좀; 좀; 좀; 좀; ) HANGUL SYLLABLE JOM
+C881;C881;110C 1169 11B8;C881;110C 1169 11B8; # (ì¢; ì¢; 좁; ì¢; 좁; ) HANGUL SYLLABLE JOB
+C882;C882;110C 1169 11B9;C882;110C 1169 11B9; # (좂; 좂; 좂; 좂; 좂; ) HANGUL SYLLABLE JOBS
+C883;C883;110C 1169 11BA;C883;110C 1169 11BA; # (좃; 좃; 좃; 좃; 좃; ) HANGUL SYLLABLE JOS
+C884;C884;110C 1169 11BB;C884;110C 1169 11BB; # (좄; 좄; 좄; 좄; 좄; ) HANGUL SYLLABLE JOSS
+C885;C885;110C 1169 11BC;C885;110C 1169 11BC; # (종; 종; 종; 종; 종; ) HANGUL SYLLABLE JONG
+C886;C886;110C 1169 11BD;C886;110C 1169 11BD; # (좆; 좆; 좆; 좆; 좆; ) HANGUL SYLLABLE JOJ
+C887;C887;110C 1169 11BE;C887;110C 1169 11BE; # (좇; 좇; 좇; 좇; 좇; ) HANGUL SYLLABLE JOC
+C888;C888;110C 1169 11BF;C888;110C 1169 11BF; # (좈; 좈; 좈; 좈; 좈; ) HANGUL SYLLABLE JOK
+C889;C889;110C 1169 11C0;C889;110C 1169 11C0; # (좉; 좉; 좉; 좉; 좉; ) HANGUL SYLLABLE JOT
+C88A;C88A;110C 1169 11C1;C88A;110C 1169 11C1; # (좊; 좊; 조á‡; 좊; 조á‡; ) HANGUL SYLLABLE JOP
+C88B;C88B;110C 1169 11C2;C88B;110C 1169 11C2; # (좋; 좋; 좋; 좋; 좋; ) HANGUL SYLLABLE JOH
+C88C;C88C;110C 116A;C88C;110C 116A; # (좌; 좌; 좌; 좌; 좌; ) HANGUL SYLLABLE JWA
+C88D;C88D;110C 116A 11A8;C88D;110C 116A 11A8; # (ì¢; ì¢; 좍; ì¢; 좍; ) HANGUL SYLLABLE JWAG
+C88E;C88E;110C 116A 11A9;C88E;110C 116A 11A9; # (좎; 좎; 좎; 좎; 좎; ) HANGUL SYLLABLE JWAGG
+C88F;C88F;110C 116A 11AA;C88F;110C 116A 11AA; # (ì¢; ì¢; 좏; ì¢; 좏; ) HANGUL SYLLABLE JWAGS
+C890;C890;110C 116A 11AB;C890;110C 116A 11AB; # (ì¢; ì¢; 좐; ì¢; 좐; ) HANGUL SYLLABLE JWAN
+C891;C891;110C 116A 11AC;C891;110C 116A 11AC; # (좑; 좑; 좑; 좑; 좑; ) HANGUL SYLLABLE JWANJ
+C892;C892;110C 116A 11AD;C892;110C 116A 11AD; # (좒; 좒; 좒; 좒; 좒; ) HANGUL SYLLABLE JWANH
+C893;C893;110C 116A 11AE;C893;110C 116A 11AE; # (좓; 좓; 좓; 좓; 좓; ) HANGUL SYLLABLE JWAD
+C894;C894;110C 116A 11AF;C894;110C 116A 11AF; # (좔; 좔; 좔; 좔; 좔; ) HANGUL SYLLABLE JWAL
+C895;C895;110C 116A 11B0;C895;110C 116A 11B0; # (좕; 좕; 좕; 좕; 좕; ) HANGUL SYLLABLE JWALG
+C896;C896;110C 116A 11B1;C896;110C 116A 11B1; # (좖; 좖; 좖; 좖; 좖; ) HANGUL SYLLABLE JWALM
+C897;C897;110C 116A 11B2;C897;110C 116A 11B2; # (좗; 좗; 좗; 좗; 좗; ) HANGUL SYLLABLE JWALB
+C898;C898;110C 116A 11B3;C898;110C 116A 11B3; # (좘; 좘; 좘; 좘; 좘; ) HANGUL SYLLABLE JWALS
+C899;C899;110C 116A 11B4;C899;110C 116A 11B4; # (좙; 좙; 좙; 좙; 좙; ) HANGUL SYLLABLE JWALT
+C89A;C89A;110C 116A 11B5;C89A;110C 116A 11B5; # (좚; 좚; 좚; 좚; 좚; ) HANGUL SYLLABLE JWALP
+C89B;C89B;110C 116A 11B6;C89B;110C 116A 11B6; # (좛; 좛; 좛; 좛; 좛; ) HANGUL SYLLABLE JWALH
+C89C;C89C;110C 116A 11B7;C89C;110C 116A 11B7; # (좜; 좜; 좜; 좜; 좜; ) HANGUL SYLLABLE JWAM
+C89D;C89D;110C 116A 11B8;C89D;110C 116A 11B8; # (ì¢; ì¢; 좝; ì¢; 좝; ) HANGUL SYLLABLE JWAB
+C89E;C89E;110C 116A 11B9;C89E;110C 116A 11B9; # (좞; 좞; 좞; 좞; 좞; ) HANGUL SYLLABLE JWABS
+C89F;C89F;110C 116A 11BA;C89F;110C 116A 11BA; # (좟; 좟; 좟; 좟; 좟; ) HANGUL SYLLABLE JWAS
+C8A0;C8A0;110C 116A 11BB;C8A0;110C 116A 11BB; # (좠; 좠; 좠; 좠; 좠; ) HANGUL SYLLABLE JWASS
+C8A1;C8A1;110C 116A 11BC;C8A1;110C 116A 11BC; # (좡; 좡; 좡; 좡; 좡; ) HANGUL SYLLABLE JWANG
+C8A2;C8A2;110C 116A 11BD;C8A2;110C 116A 11BD; # (좢; 좢; 좢; 좢; 좢; ) HANGUL SYLLABLE JWAJ
+C8A3;C8A3;110C 116A 11BE;C8A3;110C 116A 11BE; # (좣; 좣; 좣; 좣; 좣; ) HANGUL SYLLABLE JWAC
+C8A4;C8A4;110C 116A 11BF;C8A4;110C 116A 11BF; # (좤; 좤; 좤; 좤; 좤; ) HANGUL SYLLABLE JWAK
+C8A5;C8A5;110C 116A 11C0;C8A5;110C 116A 11C0; # (좥; 좥; 좥; 좥; 좥; ) HANGUL SYLLABLE JWAT
+C8A6;C8A6;110C 116A 11C1;C8A6;110C 116A 11C1; # (좦; 좦; 좌á‡; 좦; 좌á‡; ) HANGUL SYLLABLE JWAP
+C8A7;C8A7;110C 116A 11C2;C8A7;110C 116A 11C2; # (좧; 좧; 좧; 좧; 좧; ) HANGUL SYLLABLE JWAH
+C8A8;C8A8;110C 116B;C8A8;110C 116B; # (좨; 좨; 좨; 좨; 좨; ) HANGUL SYLLABLE JWAE
+C8A9;C8A9;110C 116B 11A8;C8A9;110C 116B 11A8; # (좩; 좩; 좩; 좩; 좩; ) HANGUL SYLLABLE JWAEG
+C8AA;C8AA;110C 116B 11A9;C8AA;110C 116B 11A9; # (좪; 좪; 좪; 좪; 좪; ) HANGUL SYLLABLE JWAEGG
+C8AB;C8AB;110C 116B 11AA;C8AB;110C 116B 11AA; # (좫; 좫; 좫; 좫; 좫; ) HANGUL SYLLABLE JWAEGS
+C8AC;C8AC;110C 116B 11AB;C8AC;110C 116B 11AB; # (좬; 좬; 좬; 좬; 좬; ) HANGUL SYLLABLE JWAEN
+C8AD;C8AD;110C 116B 11AC;C8AD;110C 116B 11AC; # (좭; 좭; 좭; 좭; 좭; ) HANGUL SYLLABLE JWAENJ
+C8AE;C8AE;110C 116B 11AD;C8AE;110C 116B 11AD; # (좮; 좮; 좮; 좮; 좮; ) HANGUL SYLLABLE JWAENH
+C8AF;C8AF;110C 116B 11AE;C8AF;110C 116B 11AE; # (좯; 좯; 좯; 좯; 좯; ) HANGUL SYLLABLE JWAED
+C8B0;C8B0;110C 116B 11AF;C8B0;110C 116B 11AF; # (좰; 좰; 좰; 좰; 좰; ) HANGUL SYLLABLE JWAEL
+C8B1;C8B1;110C 116B 11B0;C8B1;110C 116B 11B0; # (좱; 좱; 좱; 좱; 좱; ) HANGUL SYLLABLE JWAELG
+C8B2;C8B2;110C 116B 11B1;C8B2;110C 116B 11B1; # (좲; 좲; 좲; 좲; 좲; ) HANGUL SYLLABLE JWAELM
+C8B3;C8B3;110C 116B 11B2;C8B3;110C 116B 11B2; # (좳; 좳; 좳; 좳; 좳; ) HANGUL SYLLABLE JWAELB
+C8B4;C8B4;110C 116B 11B3;C8B4;110C 116B 11B3; # (좴; 좴; 좴; 좴; 좴; ) HANGUL SYLLABLE JWAELS
+C8B5;C8B5;110C 116B 11B4;C8B5;110C 116B 11B4; # (좵; 좵; 좵; 좵; 좵; ) HANGUL SYLLABLE JWAELT
+C8B6;C8B6;110C 116B 11B5;C8B6;110C 116B 11B5; # (좶; 좶; 좶; 좶; 좶; ) HANGUL SYLLABLE JWAELP
+C8B7;C8B7;110C 116B 11B6;C8B7;110C 116B 11B6; # (좷; 좷; 좷; 좷; 좷; ) HANGUL SYLLABLE JWAELH
+C8B8;C8B8;110C 116B 11B7;C8B8;110C 116B 11B7; # (좸; 좸; 좸; 좸; 좸; ) HANGUL SYLLABLE JWAEM
+C8B9;C8B9;110C 116B 11B8;C8B9;110C 116B 11B8; # (좹; 좹; 좹; 좹; 좹; ) HANGUL SYLLABLE JWAEB
+C8BA;C8BA;110C 116B 11B9;C8BA;110C 116B 11B9; # (좺; 좺; 좺; 좺; 좺; ) HANGUL SYLLABLE JWAEBS
+C8BB;C8BB;110C 116B 11BA;C8BB;110C 116B 11BA; # (좻; 좻; 좻; 좻; 좻; ) HANGUL SYLLABLE JWAES
+C8BC;C8BC;110C 116B 11BB;C8BC;110C 116B 11BB; # (좼; 좼; 좼; 좼; 좼; ) HANGUL SYLLABLE JWAESS
+C8BD;C8BD;110C 116B 11BC;C8BD;110C 116B 11BC; # (좽; 좽; 좽; 좽; 좽; ) HANGUL SYLLABLE JWAENG
+C8BE;C8BE;110C 116B 11BD;C8BE;110C 116B 11BD; # (좾; 좾; 좾; 좾; 좾; ) HANGUL SYLLABLE JWAEJ
+C8BF;C8BF;110C 116B 11BE;C8BF;110C 116B 11BE; # (좿; 좿; 좿; 좿; 좿; ) HANGUL SYLLABLE JWAEC
+C8C0;C8C0;110C 116B 11BF;C8C0;110C 116B 11BF; # (죀; 죀; 죀; 죀; 죀; ) HANGUL SYLLABLE JWAEK
+C8C1;C8C1;110C 116B 11C0;C8C1;110C 116B 11C0; # (ì£; ì£; 죁; ì£; 죁; ) HANGUL SYLLABLE JWAET
+C8C2;C8C2;110C 116B 11C1;C8C2;110C 116B 11C1; # (죂; 죂; 좨á‡; 죂; 좨á‡; ) HANGUL SYLLABLE JWAEP
+C8C3;C8C3;110C 116B 11C2;C8C3;110C 116B 11C2; # (죃; 죃; 죃; 죃; 죃; ) HANGUL SYLLABLE JWAEH
+C8C4;C8C4;110C 116C;C8C4;110C 116C; # (죄; 죄; 죄; 죄; 죄; ) HANGUL SYLLABLE JOE
+C8C5;C8C5;110C 116C 11A8;C8C5;110C 116C 11A8; # (죅; 죅; 죅; 죅; 죅; ) HANGUL SYLLABLE JOEG
+C8C6;C8C6;110C 116C 11A9;C8C6;110C 116C 11A9; # (죆; 죆; 죆; 죆; 죆; ) HANGUL SYLLABLE JOEGG
+C8C7;C8C7;110C 116C 11AA;C8C7;110C 116C 11AA; # (죇; 죇; 죇; 죇; 죇; ) HANGUL SYLLABLE JOEGS
+C8C8;C8C8;110C 116C 11AB;C8C8;110C 116C 11AB; # (죈; 죈; 죈; 죈; 죈; ) HANGUL SYLLABLE JOEN
+C8C9;C8C9;110C 116C 11AC;C8C9;110C 116C 11AC; # (죉; 죉; 죉; 죉; 죉; ) HANGUL SYLLABLE JOENJ
+C8CA;C8CA;110C 116C 11AD;C8CA;110C 116C 11AD; # (죊; 죊; 죊; 죊; 죊; ) HANGUL SYLLABLE JOENH
+C8CB;C8CB;110C 116C 11AE;C8CB;110C 116C 11AE; # (죋; 죋; 죋; 죋; 죋; ) HANGUL SYLLABLE JOED
+C8CC;C8CC;110C 116C 11AF;C8CC;110C 116C 11AF; # (죌; 죌; 죌; 죌; 죌; ) HANGUL SYLLABLE JOEL
+C8CD;C8CD;110C 116C 11B0;C8CD;110C 116C 11B0; # (ì£; ì£; 죍; ì£; 죍; ) HANGUL SYLLABLE JOELG
+C8CE;C8CE;110C 116C 11B1;C8CE;110C 116C 11B1; # (죎; 죎; 죎; 죎; 죎; ) HANGUL SYLLABLE JOELM
+C8CF;C8CF;110C 116C 11B2;C8CF;110C 116C 11B2; # (ì£; ì£; 죏; ì£; 죏; ) HANGUL SYLLABLE JOELB
+C8D0;C8D0;110C 116C 11B3;C8D0;110C 116C 11B3; # (ì£; ì£; 죐; ì£; 죐; ) HANGUL SYLLABLE JOELS
+C8D1;C8D1;110C 116C 11B4;C8D1;110C 116C 11B4; # (죑; 죑; 죑; 죑; 죑; ) HANGUL SYLLABLE JOELT
+C8D2;C8D2;110C 116C 11B5;C8D2;110C 116C 11B5; # (죒; 죒; 죒; 죒; 죒; ) HANGUL SYLLABLE JOELP
+C8D3;C8D3;110C 116C 11B6;C8D3;110C 116C 11B6; # (죓; 죓; 죓; 죓; 죓; ) HANGUL SYLLABLE JOELH
+C8D4;C8D4;110C 116C 11B7;C8D4;110C 116C 11B7; # (죔; 죔; 죔; 죔; 죔; ) HANGUL SYLLABLE JOEM
+C8D5;C8D5;110C 116C 11B8;C8D5;110C 116C 11B8; # (죕; 죕; 죕; 죕; 죕; ) HANGUL SYLLABLE JOEB
+C8D6;C8D6;110C 116C 11B9;C8D6;110C 116C 11B9; # (죖; 죖; 죖; 죖; 죖; ) HANGUL SYLLABLE JOEBS
+C8D7;C8D7;110C 116C 11BA;C8D7;110C 116C 11BA; # (죗; 죗; 죗; 죗; 죗; ) HANGUL SYLLABLE JOES
+C8D8;C8D8;110C 116C 11BB;C8D8;110C 116C 11BB; # (죘; 죘; 죘; 죘; 죘; ) HANGUL SYLLABLE JOESS
+C8D9;C8D9;110C 116C 11BC;C8D9;110C 116C 11BC; # (죙; 죙; 죙; 죙; 죙; ) HANGUL SYLLABLE JOENG
+C8DA;C8DA;110C 116C 11BD;C8DA;110C 116C 11BD; # (죚; 죚; 죚; 죚; 죚; ) HANGUL SYLLABLE JOEJ
+C8DB;C8DB;110C 116C 11BE;C8DB;110C 116C 11BE; # (죛; 죛; 죛; 죛; 죛; ) HANGUL SYLLABLE JOEC
+C8DC;C8DC;110C 116C 11BF;C8DC;110C 116C 11BF; # (죜; 죜; 죜; 죜; 죜; ) HANGUL SYLLABLE JOEK
+C8DD;C8DD;110C 116C 11C0;C8DD;110C 116C 11C0; # (ì£; ì£; 죝; ì£; 죝; ) HANGUL SYLLABLE JOET
+C8DE;C8DE;110C 116C 11C1;C8DE;110C 116C 11C1; # (죞; 죞; 죄á‡; 죞; 죄á‡; ) HANGUL SYLLABLE JOEP
+C8DF;C8DF;110C 116C 11C2;C8DF;110C 116C 11C2; # (죟; 죟; 죟; 죟; 죟; ) HANGUL SYLLABLE JOEH
+C8E0;C8E0;110C 116D;C8E0;110C 116D; # (죠; 죠; 죠; 죠; 죠; ) HANGUL SYLLABLE JYO
+C8E1;C8E1;110C 116D 11A8;C8E1;110C 116D 11A8; # (죡; 죡; 죡; 죡; 죡; ) HANGUL SYLLABLE JYOG
+C8E2;C8E2;110C 116D 11A9;C8E2;110C 116D 11A9; # (죢; 죢; 죢; 죢; 죢; ) HANGUL SYLLABLE JYOGG
+C8E3;C8E3;110C 116D 11AA;C8E3;110C 116D 11AA; # (죣; 죣; 죣; 죣; 죣; ) HANGUL SYLLABLE JYOGS
+C8E4;C8E4;110C 116D 11AB;C8E4;110C 116D 11AB; # (죤; 죤; 죤; 죤; 죤; ) HANGUL SYLLABLE JYON
+C8E5;C8E5;110C 116D 11AC;C8E5;110C 116D 11AC; # (죥; 죥; 죥; 죥; 죥; ) HANGUL SYLLABLE JYONJ
+C8E6;C8E6;110C 116D 11AD;C8E6;110C 116D 11AD; # (죦; 죦; 죦; 죦; 죦; ) HANGUL SYLLABLE JYONH
+C8E7;C8E7;110C 116D 11AE;C8E7;110C 116D 11AE; # (죧; 죧; 죧; 죧; 죧; ) HANGUL SYLLABLE JYOD
+C8E8;C8E8;110C 116D 11AF;C8E8;110C 116D 11AF; # (죨; 죨; 죨; 죨; 죨; ) HANGUL SYLLABLE JYOL
+C8E9;C8E9;110C 116D 11B0;C8E9;110C 116D 11B0; # (죩; 죩; 죩; 죩; 죩; ) HANGUL SYLLABLE JYOLG
+C8EA;C8EA;110C 116D 11B1;C8EA;110C 116D 11B1; # (죪; 죪; 죪; 죪; 죪; ) HANGUL SYLLABLE JYOLM
+C8EB;C8EB;110C 116D 11B2;C8EB;110C 116D 11B2; # (죫; 죫; 죫; 죫; 죫; ) HANGUL SYLLABLE JYOLB
+C8EC;C8EC;110C 116D 11B3;C8EC;110C 116D 11B3; # (죬; 죬; 죬; 죬; 죬; ) HANGUL SYLLABLE JYOLS
+C8ED;C8ED;110C 116D 11B4;C8ED;110C 116D 11B4; # (죭; 죭; 죭; 죭; 죭; ) HANGUL SYLLABLE JYOLT
+C8EE;C8EE;110C 116D 11B5;C8EE;110C 116D 11B5; # (죮; 죮; 죮; 죮; 죮; ) HANGUL SYLLABLE JYOLP
+C8EF;C8EF;110C 116D 11B6;C8EF;110C 116D 11B6; # (죯; 죯; 죯; 죯; 죯; ) HANGUL SYLLABLE JYOLH
+C8F0;C8F0;110C 116D 11B7;C8F0;110C 116D 11B7; # (죰; 죰; 죰; 죰; 죰; ) HANGUL SYLLABLE JYOM
+C8F1;C8F1;110C 116D 11B8;C8F1;110C 116D 11B8; # (죱; 죱; 죱; 죱; 죱; ) HANGUL SYLLABLE JYOB
+C8F2;C8F2;110C 116D 11B9;C8F2;110C 116D 11B9; # (죲; 죲; 죲; 죲; 죲; ) HANGUL SYLLABLE JYOBS
+C8F3;C8F3;110C 116D 11BA;C8F3;110C 116D 11BA; # (죳; 죳; 죳; 죳; 죳; ) HANGUL SYLLABLE JYOS
+C8F4;C8F4;110C 116D 11BB;C8F4;110C 116D 11BB; # (죴; 죴; 죴; 죴; 죴; ) HANGUL SYLLABLE JYOSS
+C8F5;C8F5;110C 116D 11BC;C8F5;110C 116D 11BC; # (죵; 죵; 죵; 죵; 죵; ) HANGUL SYLLABLE JYONG
+C8F6;C8F6;110C 116D 11BD;C8F6;110C 116D 11BD; # (죶; 죶; 죶; 죶; 죶; ) HANGUL SYLLABLE JYOJ
+C8F7;C8F7;110C 116D 11BE;C8F7;110C 116D 11BE; # (죷; 죷; 죷; 죷; 죷; ) HANGUL SYLLABLE JYOC
+C8F8;C8F8;110C 116D 11BF;C8F8;110C 116D 11BF; # (죸; 죸; 죸; 죸; 죸; ) HANGUL SYLLABLE JYOK
+C8F9;C8F9;110C 116D 11C0;C8F9;110C 116D 11C0; # (죹; 죹; 죹; 죹; 죹; ) HANGUL SYLLABLE JYOT
+C8FA;C8FA;110C 116D 11C1;C8FA;110C 116D 11C1; # (죺; 죺; 죠á‡; 죺; 죠á‡; ) HANGUL SYLLABLE JYOP
+C8FB;C8FB;110C 116D 11C2;C8FB;110C 116D 11C2; # (죻; 죻; 죻; 죻; 죻; ) HANGUL SYLLABLE JYOH
+C8FC;C8FC;110C 116E;C8FC;110C 116E; # (주; 주; 주; 주; 주; ) HANGUL SYLLABLE JU
+C8FD;C8FD;110C 116E 11A8;C8FD;110C 116E 11A8; # (죽; 죽; 죽; 죽; 죽; ) HANGUL SYLLABLE JUG
+C8FE;C8FE;110C 116E 11A9;C8FE;110C 116E 11A9; # (죾; 죾; 죾; 죾; 죾; ) HANGUL SYLLABLE JUGG
+C8FF;C8FF;110C 116E 11AA;C8FF;110C 116E 11AA; # (죿; 죿; 죿; 죿; 죿; ) HANGUL SYLLABLE JUGS
+C900;C900;110C 116E 11AB;C900;110C 116E 11AB; # (준; 준; 준; 준; 준; ) HANGUL SYLLABLE JUN
+C901;C901;110C 116E 11AC;C901;110C 116E 11AC; # (ì¤; ì¤; 줁; ì¤; 줁; ) HANGUL SYLLABLE JUNJ
+C902;C902;110C 116E 11AD;C902;110C 116E 11AD; # (줂; 줂; 줂; 줂; 줂; ) HANGUL SYLLABLE JUNH
+C903;C903;110C 116E 11AE;C903;110C 116E 11AE; # (줃; 줃; 줃; 줃; 줃; ) HANGUL SYLLABLE JUD
+C904;C904;110C 116E 11AF;C904;110C 116E 11AF; # (줄; 줄; 줄; 줄; 줄; ) HANGUL SYLLABLE JUL
+C905;C905;110C 116E 11B0;C905;110C 116E 11B0; # (줅; 줅; 줅; 줅; 줅; ) HANGUL SYLLABLE JULG
+C906;C906;110C 116E 11B1;C906;110C 116E 11B1; # (줆; 줆; 줆; 줆; 줆; ) HANGUL SYLLABLE JULM
+C907;C907;110C 116E 11B2;C907;110C 116E 11B2; # (줇; 줇; 줇; 줇; 줇; ) HANGUL SYLLABLE JULB
+C908;C908;110C 116E 11B3;C908;110C 116E 11B3; # (줈; 줈; 줈; 줈; 줈; ) HANGUL SYLLABLE JULS
+C909;C909;110C 116E 11B4;C909;110C 116E 11B4; # (줉; 줉; 줉; 줉; 줉; ) HANGUL SYLLABLE JULT
+C90A;C90A;110C 116E 11B5;C90A;110C 116E 11B5; # (줊; 줊; 줊; 줊; 줊; ) HANGUL SYLLABLE JULP
+C90B;C90B;110C 116E 11B6;C90B;110C 116E 11B6; # (줋; 줋; 줋; 줋; 줋; ) HANGUL SYLLABLE JULH
+C90C;C90C;110C 116E 11B7;C90C;110C 116E 11B7; # (줌; 줌; 줌; 줌; 줌; ) HANGUL SYLLABLE JUM
+C90D;C90D;110C 116E 11B8;C90D;110C 116E 11B8; # (ì¤; ì¤; 줍; ì¤; 줍; ) HANGUL SYLLABLE JUB
+C90E;C90E;110C 116E 11B9;C90E;110C 116E 11B9; # (줎; 줎; 줎; 줎; 줎; ) HANGUL SYLLABLE JUBS
+C90F;C90F;110C 116E 11BA;C90F;110C 116E 11BA; # (ì¤; ì¤; 줏; ì¤; 줏; ) HANGUL SYLLABLE JUS
+C910;C910;110C 116E 11BB;C910;110C 116E 11BB; # (ì¤; ì¤; 줐; ì¤; 줐; ) HANGUL SYLLABLE JUSS
+C911;C911;110C 116E 11BC;C911;110C 116E 11BC; # (중; 중; 중; 중; 중; ) HANGUL SYLLABLE JUNG
+C912;C912;110C 116E 11BD;C912;110C 116E 11BD; # (줒; 줒; 줒; 줒; 줒; ) HANGUL SYLLABLE JUJ
+C913;C913;110C 116E 11BE;C913;110C 116E 11BE; # (줓; 줓; 줓; 줓; 줓; ) HANGUL SYLLABLE JUC
+C914;C914;110C 116E 11BF;C914;110C 116E 11BF; # (줔; 줔; 줔; 줔; 줔; ) HANGUL SYLLABLE JUK
+C915;C915;110C 116E 11C0;C915;110C 116E 11C0; # (줕; 줕; 줕; 줕; 줕; ) HANGUL SYLLABLE JUT
+C916;C916;110C 116E 11C1;C916;110C 116E 11C1; # (줖; 줖; 주á‡; 줖; 주á‡; ) HANGUL SYLLABLE JUP
+C917;C917;110C 116E 11C2;C917;110C 116E 11C2; # (줗; 줗; 줗; 줗; 줗; ) HANGUL SYLLABLE JUH
+C918;C918;110C 116F;C918;110C 116F; # (줘; 줘; 줘; 줘; 줘; ) HANGUL SYLLABLE JWEO
+C919;C919;110C 116F 11A8;C919;110C 116F 11A8; # (줙; 줙; 줙; 줙; 줙; ) HANGUL SYLLABLE JWEOG
+C91A;C91A;110C 116F 11A9;C91A;110C 116F 11A9; # (줚; 줚; 줚; 줚; 줚; ) HANGUL SYLLABLE JWEOGG
+C91B;C91B;110C 116F 11AA;C91B;110C 116F 11AA; # (줛; 줛; 줛; 줛; 줛; ) HANGUL SYLLABLE JWEOGS
+C91C;C91C;110C 116F 11AB;C91C;110C 116F 11AB; # (줜; 줜; 줜; 줜; 줜; ) HANGUL SYLLABLE JWEON
+C91D;C91D;110C 116F 11AC;C91D;110C 116F 11AC; # (ì¤; ì¤; 줝; ì¤; 줝; ) HANGUL SYLLABLE JWEONJ
+C91E;C91E;110C 116F 11AD;C91E;110C 116F 11AD; # (줞; 줞; 줞; 줞; 줞; ) HANGUL SYLLABLE JWEONH
+C91F;C91F;110C 116F 11AE;C91F;110C 116F 11AE; # (줟; 줟; 줟; 줟; 줟; ) HANGUL SYLLABLE JWEOD
+C920;C920;110C 116F 11AF;C920;110C 116F 11AF; # (줠; 줠; 줠; 줠; 줠; ) HANGUL SYLLABLE JWEOL
+C921;C921;110C 116F 11B0;C921;110C 116F 11B0; # (줡; 줡; 줡; 줡; 줡; ) HANGUL SYLLABLE JWEOLG
+C922;C922;110C 116F 11B1;C922;110C 116F 11B1; # (줢; 줢; 줢; 줢; 줢; ) HANGUL SYLLABLE JWEOLM
+C923;C923;110C 116F 11B2;C923;110C 116F 11B2; # (줣; 줣; 줣; 줣; 줣; ) HANGUL SYLLABLE JWEOLB
+C924;C924;110C 116F 11B3;C924;110C 116F 11B3; # (줤; 줤; 줤; 줤; 줤; ) HANGUL SYLLABLE JWEOLS
+C925;C925;110C 116F 11B4;C925;110C 116F 11B4; # (줥; 줥; 줥; 줥; 줥; ) HANGUL SYLLABLE JWEOLT
+C926;C926;110C 116F 11B5;C926;110C 116F 11B5; # (줦; 줦; 줦; 줦; 줦; ) HANGUL SYLLABLE JWEOLP
+C927;C927;110C 116F 11B6;C927;110C 116F 11B6; # (줧; 줧; 줧; 줧; 줧; ) HANGUL SYLLABLE JWEOLH
+C928;C928;110C 116F 11B7;C928;110C 116F 11B7; # (줨; 줨; 줨; 줨; 줨; ) HANGUL SYLLABLE JWEOM
+C929;C929;110C 116F 11B8;C929;110C 116F 11B8; # (줩; 줩; 줩; 줩; 줩; ) HANGUL SYLLABLE JWEOB
+C92A;C92A;110C 116F 11B9;C92A;110C 116F 11B9; # (줪; 줪; 줪; 줪; 줪; ) HANGUL SYLLABLE JWEOBS
+C92B;C92B;110C 116F 11BA;C92B;110C 116F 11BA; # (줫; 줫; 줫; 줫; 줫; ) HANGUL SYLLABLE JWEOS
+C92C;C92C;110C 116F 11BB;C92C;110C 116F 11BB; # (줬; 줬; 줬; 줬; 줬; ) HANGUL SYLLABLE JWEOSS
+C92D;C92D;110C 116F 11BC;C92D;110C 116F 11BC; # (줭; 줭; 줭; 줭; 줭; ) HANGUL SYLLABLE JWEONG
+C92E;C92E;110C 116F 11BD;C92E;110C 116F 11BD; # (줮; 줮; 줮; 줮; 줮; ) HANGUL SYLLABLE JWEOJ
+C92F;C92F;110C 116F 11BE;C92F;110C 116F 11BE; # (줯; 줯; 줯; 줯; 줯; ) HANGUL SYLLABLE JWEOC
+C930;C930;110C 116F 11BF;C930;110C 116F 11BF; # (줰; 줰; 줰; 줰; 줰; ) HANGUL SYLLABLE JWEOK
+C931;C931;110C 116F 11C0;C931;110C 116F 11C0; # (줱; 줱; 줱; 줱; 줱; ) HANGUL SYLLABLE JWEOT
+C932;C932;110C 116F 11C1;C932;110C 116F 11C1; # (줲; 줲; 줘á‡; 줲; 줘á‡; ) HANGUL SYLLABLE JWEOP
+C933;C933;110C 116F 11C2;C933;110C 116F 11C2; # (줳; 줳; 줳; 줳; 줳; ) HANGUL SYLLABLE JWEOH
+C934;C934;110C 1170;C934;110C 1170; # (줴; 줴; 줴; 줴; 줴; ) HANGUL SYLLABLE JWE
+C935;C935;110C 1170 11A8;C935;110C 1170 11A8; # (줵; 줵; 줵; 줵; 줵; ) HANGUL SYLLABLE JWEG
+C936;C936;110C 1170 11A9;C936;110C 1170 11A9; # (줶; 줶; 줶; 줶; 줶; ) HANGUL SYLLABLE JWEGG
+C937;C937;110C 1170 11AA;C937;110C 1170 11AA; # (줷; 줷; 줷; 줷; 줷; ) HANGUL SYLLABLE JWEGS
+C938;C938;110C 1170 11AB;C938;110C 1170 11AB; # (줸; 줸; 줸; 줸; 줸; ) HANGUL SYLLABLE JWEN
+C939;C939;110C 1170 11AC;C939;110C 1170 11AC; # (줹; 줹; 줹; 줹; 줹; ) HANGUL SYLLABLE JWENJ
+C93A;C93A;110C 1170 11AD;C93A;110C 1170 11AD; # (줺; 줺; 줺; 줺; 줺; ) HANGUL SYLLABLE JWENH
+C93B;C93B;110C 1170 11AE;C93B;110C 1170 11AE; # (줻; 줻; 줻; 줻; 줻; ) HANGUL SYLLABLE JWED
+C93C;C93C;110C 1170 11AF;C93C;110C 1170 11AF; # (줼; 줼; 줼; 줼; 줼; ) HANGUL SYLLABLE JWEL
+C93D;C93D;110C 1170 11B0;C93D;110C 1170 11B0; # (줽; 줽; 줽; 줽; 줽; ) HANGUL SYLLABLE JWELG
+C93E;C93E;110C 1170 11B1;C93E;110C 1170 11B1; # (줾; 줾; 줾; 줾; 줾; ) HANGUL SYLLABLE JWELM
+C93F;C93F;110C 1170 11B2;C93F;110C 1170 11B2; # (줿; 줿; 줿; 줿; 줿; ) HANGUL SYLLABLE JWELB
+C940;C940;110C 1170 11B3;C940;110C 1170 11B3; # (쥀; 쥀; 쥀; 쥀; 쥀; ) HANGUL SYLLABLE JWELS
+C941;C941;110C 1170 11B4;C941;110C 1170 11B4; # (ì¥; ì¥; 쥁; ì¥; 쥁; ) HANGUL SYLLABLE JWELT
+C942;C942;110C 1170 11B5;C942;110C 1170 11B5; # (쥂; 쥂; 쥂; 쥂; 쥂; ) HANGUL SYLLABLE JWELP
+C943;C943;110C 1170 11B6;C943;110C 1170 11B6; # (쥃; 쥃; 쥃; 쥃; 쥃; ) HANGUL SYLLABLE JWELH
+C944;C944;110C 1170 11B7;C944;110C 1170 11B7; # (쥄; 쥄; 쥄; 쥄; 쥄; ) HANGUL SYLLABLE JWEM
+C945;C945;110C 1170 11B8;C945;110C 1170 11B8; # (쥅; 쥅; 쥅; 쥅; 쥅; ) HANGUL SYLLABLE JWEB
+C946;C946;110C 1170 11B9;C946;110C 1170 11B9; # (쥆; 쥆; 쥆; 쥆; 쥆; ) HANGUL SYLLABLE JWEBS
+C947;C947;110C 1170 11BA;C947;110C 1170 11BA; # (쥇; 쥇; 쥇; 쥇; 쥇; ) HANGUL SYLLABLE JWES
+C948;C948;110C 1170 11BB;C948;110C 1170 11BB; # (쥈; 쥈; 쥈; 쥈; 쥈; ) HANGUL SYLLABLE JWESS
+C949;C949;110C 1170 11BC;C949;110C 1170 11BC; # (쥉; 쥉; 쥉; 쥉; 쥉; ) HANGUL SYLLABLE JWENG
+C94A;C94A;110C 1170 11BD;C94A;110C 1170 11BD; # (쥊; 쥊; 쥊; 쥊; 쥊; ) HANGUL SYLLABLE JWEJ
+C94B;C94B;110C 1170 11BE;C94B;110C 1170 11BE; # (쥋; 쥋; 쥋; 쥋; 쥋; ) HANGUL SYLLABLE JWEC
+C94C;C94C;110C 1170 11BF;C94C;110C 1170 11BF; # (쥌; 쥌; 쥌; 쥌; 쥌; ) HANGUL SYLLABLE JWEK
+C94D;C94D;110C 1170 11C0;C94D;110C 1170 11C0; # (ì¥; ì¥; 쥍; ì¥; 쥍; ) HANGUL SYLLABLE JWET
+C94E;C94E;110C 1170 11C1;C94E;110C 1170 11C1; # (쥎; 쥎; 줴á‡; 쥎; 줴á‡; ) HANGUL SYLLABLE JWEP
+C94F;C94F;110C 1170 11C2;C94F;110C 1170 11C2; # (ì¥; ì¥; 쥏; ì¥; 쥏; ) HANGUL SYLLABLE JWEH
+C950;C950;110C 1171;C950;110C 1171; # (ì¥; ì¥; 쥐; ì¥; 쥐; ) HANGUL SYLLABLE JWI
+C951;C951;110C 1171 11A8;C951;110C 1171 11A8; # (쥑; 쥑; 쥑; 쥑; 쥑; ) HANGUL SYLLABLE JWIG
+C952;C952;110C 1171 11A9;C952;110C 1171 11A9; # (쥒; 쥒; 쥒; 쥒; 쥒; ) HANGUL SYLLABLE JWIGG
+C953;C953;110C 1171 11AA;C953;110C 1171 11AA; # (쥓; 쥓; 쥓; 쥓; 쥓; ) HANGUL SYLLABLE JWIGS
+C954;C954;110C 1171 11AB;C954;110C 1171 11AB; # (쥔; 쥔; 쥔; 쥔; 쥔; ) HANGUL SYLLABLE JWIN
+C955;C955;110C 1171 11AC;C955;110C 1171 11AC; # (쥕; 쥕; 쥕; 쥕; 쥕; ) HANGUL SYLLABLE JWINJ
+C956;C956;110C 1171 11AD;C956;110C 1171 11AD; # (쥖; 쥖; 쥖; 쥖; 쥖; ) HANGUL SYLLABLE JWINH
+C957;C957;110C 1171 11AE;C957;110C 1171 11AE; # (쥗; 쥗; 쥗; 쥗; 쥗; ) HANGUL SYLLABLE JWID
+C958;C958;110C 1171 11AF;C958;110C 1171 11AF; # (쥘; 쥘; 쥘; 쥘; 쥘; ) HANGUL SYLLABLE JWIL
+C959;C959;110C 1171 11B0;C959;110C 1171 11B0; # (쥙; 쥙; 쥙; 쥙; 쥙; ) HANGUL SYLLABLE JWILG
+C95A;C95A;110C 1171 11B1;C95A;110C 1171 11B1; # (쥚; 쥚; 쥚; 쥚; 쥚; ) HANGUL SYLLABLE JWILM
+C95B;C95B;110C 1171 11B2;C95B;110C 1171 11B2; # (쥛; 쥛; 쥛; 쥛; 쥛; ) HANGUL SYLLABLE JWILB
+C95C;C95C;110C 1171 11B3;C95C;110C 1171 11B3; # (쥜; 쥜; 쥜; 쥜; 쥜; ) HANGUL SYLLABLE JWILS
+C95D;C95D;110C 1171 11B4;C95D;110C 1171 11B4; # (ì¥; ì¥; 쥝; ì¥; 쥝; ) HANGUL SYLLABLE JWILT
+C95E;C95E;110C 1171 11B5;C95E;110C 1171 11B5; # (쥞; 쥞; 쥞; 쥞; 쥞; ) HANGUL SYLLABLE JWILP
+C95F;C95F;110C 1171 11B6;C95F;110C 1171 11B6; # (쥟; 쥟; 쥟; 쥟; 쥟; ) HANGUL SYLLABLE JWILH
+C960;C960;110C 1171 11B7;C960;110C 1171 11B7; # (쥠; 쥠; 쥠; 쥠; 쥠; ) HANGUL SYLLABLE JWIM
+C961;C961;110C 1171 11B8;C961;110C 1171 11B8; # (쥡; 쥡; 쥡; 쥡; 쥡; ) HANGUL SYLLABLE JWIB
+C962;C962;110C 1171 11B9;C962;110C 1171 11B9; # (쥢; 쥢; 쥢; 쥢; 쥢; ) HANGUL SYLLABLE JWIBS
+C963;C963;110C 1171 11BA;C963;110C 1171 11BA; # (쥣; 쥣; 쥣; 쥣; 쥣; ) HANGUL SYLLABLE JWIS
+C964;C964;110C 1171 11BB;C964;110C 1171 11BB; # (쥤; 쥤; 쥤; 쥤; 쥤; ) HANGUL SYLLABLE JWISS
+C965;C965;110C 1171 11BC;C965;110C 1171 11BC; # (쥥; 쥥; 쥥; 쥥; 쥥; ) HANGUL SYLLABLE JWING
+C966;C966;110C 1171 11BD;C966;110C 1171 11BD; # (쥦; 쥦; 쥦; 쥦; 쥦; ) HANGUL SYLLABLE JWIJ
+C967;C967;110C 1171 11BE;C967;110C 1171 11BE; # (쥧; 쥧; 쥧; 쥧; 쥧; ) HANGUL SYLLABLE JWIC
+C968;C968;110C 1171 11BF;C968;110C 1171 11BF; # (쥨; 쥨; 쥨; 쥨; 쥨; ) HANGUL SYLLABLE JWIK
+C969;C969;110C 1171 11C0;C969;110C 1171 11C0; # (쥩; 쥩; 쥩; 쥩; 쥩; ) HANGUL SYLLABLE JWIT
+C96A;C96A;110C 1171 11C1;C96A;110C 1171 11C1; # (쥪; 쥪; 쥐á‡; 쥪; 쥐á‡; ) HANGUL SYLLABLE JWIP
+C96B;C96B;110C 1171 11C2;C96B;110C 1171 11C2; # (쥫; 쥫; 쥫; 쥫; 쥫; ) HANGUL SYLLABLE JWIH
+C96C;C96C;110C 1172;C96C;110C 1172; # (쥬; 쥬; 쥬; 쥬; 쥬; ) HANGUL SYLLABLE JYU
+C96D;C96D;110C 1172 11A8;C96D;110C 1172 11A8; # (쥭; 쥭; 쥭; 쥭; 쥭; ) HANGUL SYLLABLE JYUG
+C96E;C96E;110C 1172 11A9;C96E;110C 1172 11A9; # (쥮; 쥮; 쥮; 쥮; 쥮; ) HANGUL SYLLABLE JYUGG
+C96F;C96F;110C 1172 11AA;C96F;110C 1172 11AA; # (쥯; 쥯; 쥯; 쥯; 쥯; ) HANGUL SYLLABLE JYUGS
+C970;C970;110C 1172 11AB;C970;110C 1172 11AB; # (쥰; 쥰; 쥰; 쥰; 쥰; ) HANGUL SYLLABLE JYUN
+C971;C971;110C 1172 11AC;C971;110C 1172 11AC; # (쥱; 쥱; 쥱; 쥱; 쥱; ) HANGUL SYLLABLE JYUNJ
+C972;C972;110C 1172 11AD;C972;110C 1172 11AD; # (쥲; 쥲; 쥲; 쥲; 쥲; ) HANGUL SYLLABLE JYUNH
+C973;C973;110C 1172 11AE;C973;110C 1172 11AE; # (쥳; 쥳; 쥳; 쥳; 쥳; ) HANGUL SYLLABLE JYUD
+C974;C974;110C 1172 11AF;C974;110C 1172 11AF; # (쥴; 쥴; 쥴; 쥴; 쥴; ) HANGUL SYLLABLE JYUL
+C975;C975;110C 1172 11B0;C975;110C 1172 11B0; # (쥵; 쥵; 쥵; 쥵; 쥵; ) HANGUL SYLLABLE JYULG
+C976;C976;110C 1172 11B1;C976;110C 1172 11B1; # (쥶; 쥶; 쥶; 쥶; 쥶; ) HANGUL SYLLABLE JYULM
+C977;C977;110C 1172 11B2;C977;110C 1172 11B2; # (쥷; 쥷; 쥷; 쥷; 쥷; ) HANGUL SYLLABLE JYULB
+C978;C978;110C 1172 11B3;C978;110C 1172 11B3; # (쥸; 쥸; 쥸; 쥸; 쥸; ) HANGUL SYLLABLE JYULS
+C979;C979;110C 1172 11B4;C979;110C 1172 11B4; # (쥹; 쥹; 쥹; 쥹; 쥹; ) HANGUL SYLLABLE JYULT
+C97A;C97A;110C 1172 11B5;C97A;110C 1172 11B5; # (쥺; 쥺; 쥺; 쥺; 쥺; ) HANGUL SYLLABLE JYULP
+C97B;C97B;110C 1172 11B6;C97B;110C 1172 11B6; # (쥻; 쥻; 쥻; 쥻; 쥻; ) HANGUL SYLLABLE JYULH
+C97C;C97C;110C 1172 11B7;C97C;110C 1172 11B7; # (쥼; 쥼; 쥼; 쥼; 쥼; ) HANGUL SYLLABLE JYUM
+C97D;C97D;110C 1172 11B8;C97D;110C 1172 11B8; # (쥽; 쥽; 쥽; 쥽; 쥽; ) HANGUL SYLLABLE JYUB
+C97E;C97E;110C 1172 11B9;C97E;110C 1172 11B9; # (쥾; 쥾; 쥾; 쥾; 쥾; ) HANGUL SYLLABLE JYUBS
+C97F;C97F;110C 1172 11BA;C97F;110C 1172 11BA; # (쥿; 쥿; 쥿; 쥿; 쥿; ) HANGUL SYLLABLE JYUS
+C980;C980;110C 1172 11BB;C980;110C 1172 11BB; # (즀; 즀; 즀; 즀; 즀; ) HANGUL SYLLABLE JYUSS
+C981;C981;110C 1172 11BC;C981;110C 1172 11BC; # (ì¦; ì¦; 즁; ì¦; 즁; ) HANGUL SYLLABLE JYUNG
+C982;C982;110C 1172 11BD;C982;110C 1172 11BD; # (즂; 즂; 즂; 즂; 즂; ) HANGUL SYLLABLE JYUJ
+C983;C983;110C 1172 11BE;C983;110C 1172 11BE; # (즃; 즃; 즃; 즃; 즃; ) HANGUL SYLLABLE JYUC
+C984;C984;110C 1172 11BF;C984;110C 1172 11BF; # (즄; 즄; 즄; 즄; 즄; ) HANGUL SYLLABLE JYUK
+C985;C985;110C 1172 11C0;C985;110C 1172 11C0; # (즅; 즅; 즅; 즅; 즅; ) HANGUL SYLLABLE JYUT
+C986;C986;110C 1172 11C1;C986;110C 1172 11C1; # (즆; 즆; 쥬á‡; 즆; 쥬á‡; ) HANGUL SYLLABLE JYUP
+C987;C987;110C 1172 11C2;C987;110C 1172 11C2; # (즇; 즇; 즇; 즇; 즇; ) HANGUL SYLLABLE JYUH
+C988;C988;110C 1173;C988;110C 1173; # (즈; 즈; 즈; 즈; 즈; ) HANGUL SYLLABLE JEU
+C989;C989;110C 1173 11A8;C989;110C 1173 11A8; # (즉; 즉; 즉; 즉; 즉; ) HANGUL SYLLABLE JEUG
+C98A;C98A;110C 1173 11A9;C98A;110C 1173 11A9; # (즊; 즊; 즊; 즊; 즊; ) HANGUL SYLLABLE JEUGG
+C98B;C98B;110C 1173 11AA;C98B;110C 1173 11AA; # (즋; 즋; 즋; 즋; 즋; ) HANGUL SYLLABLE JEUGS
+C98C;C98C;110C 1173 11AB;C98C;110C 1173 11AB; # (즌; 즌; 즌; 즌; 즌; ) HANGUL SYLLABLE JEUN
+C98D;C98D;110C 1173 11AC;C98D;110C 1173 11AC; # (ì¦; ì¦; 즍; ì¦; 즍; ) HANGUL SYLLABLE JEUNJ
+C98E;C98E;110C 1173 11AD;C98E;110C 1173 11AD; # (즎; 즎; 즎; 즎; 즎; ) HANGUL SYLLABLE JEUNH
+C98F;C98F;110C 1173 11AE;C98F;110C 1173 11AE; # (ì¦; ì¦; 즏; ì¦; 즏; ) HANGUL SYLLABLE JEUD
+C990;C990;110C 1173 11AF;C990;110C 1173 11AF; # (ì¦; ì¦; 즐; ì¦; 즐; ) HANGUL SYLLABLE JEUL
+C991;C991;110C 1173 11B0;C991;110C 1173 11B0; # (즑; 즑; 즑; 즑; 즑; ) HANGUL SYLLABLE JEULG
+C992;C992;110C 1173 11B1;C992;110C 1173 11B1; # (즒; 즒; 즒; 즒; 즒; ) HANGUL SYLLABLE JEULM
+C993;C993;110C 1173 11B2;C993;110C 1173 11B2; # (즓; 즓; 즓; 즓; 즓; ) HANGUL SYLLABLE JEULB
+C994;C994;110C 1173 11B3;C994;110C 1173 11B3; # (즔; 즔; 즔; 즔; 즔; ) HANGUL SYLLABLE JEULS
+C995;C995;110C 1173 11B4;C995;110C 1173 11B4; # (즕; 즕; 즕; 즕; 즕; ) HANGUL SYLLABLE JEULT
+C996;C996;110C 1173 11B5;C996;110C 1173 11B5; # (즖; 즖; 즖; 즖; 즖; ) HANGUL SYLLABLE JEULP
+C997;C997;110C 1173 11B6;C997;110C 1173 11B6; # (즗; 즗; 즗; 즗; 즗; ) HANGUL SYLLABLE JEULH
+C998;C998;110C 1173 11B7;C998;110C 1173 11B7; # (즘; 즘; 즘; 즘; 즘; ) HANGUL SYLLABLE JEUM
+C999;C999;110C 1173 11B8;C999;110C 1173 11B8; # (즙; 즙; 즙; 즙; 즙; ) HANGUL SYLLABLE JEUB
+C99A;C99A;110C 1173 11B9;C99A;110C 1173 11B9; # (즚; 즚; 즚; 즚; 즚; ) HANGUL SYLLABLE JEUBS
+C99B;C99B;110C 1173 11BA;C99B;110C 1173 11BA; # (즛; 즛; 즛; 즛; 즛; ) HANGUL SYLLABLE JEUS
+C99C;C99C;110C 1173 11BB;C99C;110C 1173 11BB; # (즜; 즜; 즜; 즜; 즜; ) HANGUL SYLLABLE JEUSS
+C99D;C99D;110C 1173 11BC;C99D;110C 1173 11BC; # (ì¦; ì¦; 증; ì¦; 증; ) HANGUL SYLLABLE JEUNG
+C99E;C99E;110C 1173 11BD;C99E;110C 1173 11BD; # (즞; 즞; 즞; 즞; 즞; ) HANGUL SYLLABLE JEUJ
+C99F;C99F;110C 1173 11BE;C99F;110C 1173 11BE; # (즟; 즟; 즟; 즟; 즟; ) HANGUL SYLLABLE JEUC
+C9A0;C9A0;110C 1173 11BF;C9A0;110C 1173 11BF; # (즠; 즠; 즠; 즠; 즠; ) HANGUL SYLLABLE JEUK
+C9A1;C9A1;110C 1173 11C0;C9A1;110C 1173 11C0; # (즡; 즡; 즡; 즡; 즡; ) HANGUL SYLLABLE JEUT
+C9A2;C9A2;110C 1173 11C1;C9A2;110C 1173 11C1; # (즢; 즢; 즈á‡; 즢; 즈á‡; ) HANGUL SYLLABLE JEUP
+C9A3;C9A3;110C 1173 11C2;C9A3;110C 1173 11C2; # (즣; 즣; 즣; 즣; 즣; ) HANGUL SYLLABLE JEUH
+C9A4;C9A4;110C 1174;C9A4;110C 1174; # (즤; 즤; 즤; 즤; 즤; ) HANGUL SYLLABLE JYI
+C9A5;C9A5;110C 1174 11A8;C9A5;110C 1174 11A8; # (즥; 즥; 즥; 즥; 즥; ) HANGUL SYLLABLE JYIG
+C9A6;C9A6;110C 1174 11A9;C9A6;110C 1174 11A9; # (즦; 즦; 즦; 즦; 즦; ) HANGUL SYLLABLE JYIGG
+C9A7;C9A7;110C 1174 11AA;C9A7;110C 1174 11AA; # (즧; 즧; 즧; 즧; 즧; ) HANGUL SYLLABLE JYIGS
+C9A8;C9A8;110C 1174 11AB;C9A8;110C 1174 11AB; # (즨; 즨; 즨; 즨; 즨; ) HANGUL SYLLABLE JYIN
+C9A9;C9A9;110C 1174 11AC;C9A9;110C 1174 11AC; # (즩; 즩; 즩; 즩; 즩; ) HANGUL SYLLABLE JYINJ
+C9AA;C9AA;110C 1174 11AD;C9AA;110C 1174 11AD; # (즪; 즪; 즪; 즪; 즪; ) HANGUL SYLLABLE JYINH
+C9AB;C9AB;110C 1174 11AE;C9AB;110C 1174 11AE; # (즫; 즫; 즫; 즫; 즫; ) HANGUL SYLLABLE JYID
+C9AC;C9AC;110C 1174 11AF;C9AC;110C 1174 11AF; # (즬; 즬; 즬; 즬; 즬; ) HANGUL SYLLABLE JYIL
+C9AD;C9AD;110C 1174 11B0;C9AD;110C 1174 11B0; # (즭; 즭; 즭; 즭; 즭; ) HANGUL SYLLABLE JYILG
+C9AE;C9AE;110C 1174 11B1;C9AE;110C 1174 11B1; # (즮; 즮; 즮; 즮; 즮; ) HANGUL SYLLABLE JYILM
+C9AF;C9AF;110C 1174 11B2;C9AF;110C 1174 11B2; # (즯; 즯; 즯; 즯; 즯; ) HANGUL SYLLABLE JYILB
+C9B0;C9B0;110C 1174 11B3;C9B0;110C 1174 11B3; # (즰; 즰; 즰; 즰; 즰; ) HANGUL SYLLABLE JYILS
+C9B1;C9B1;110C 1174 11B4;C9B1;110C 1174 11B4; # (즱; 즱; 즱; 즱; 즱; ) HANGUL SYLLABLE JYILT
+C9B2;C9B2;110C 1174 11B5;C9B2;110C 1174 11B5; # (즲; 즲; 즲; 즲; 즲; ) HANGUL SYLLABLE JYILP
+C9B3;C9B3;110C 1174 11B6;C9B3;110C 1174 11B6; # (즳; 즳; 즳; 즳; 즳; ) HANGUL SYLLABLE JYILH
+C9B4;C9B4;110C 1174 11B7;C9B4;110C 1174 11B7; # (즴; 즴; 즴; 즴; 즴; ) HANGUL SYLLABLE JYIM
+C9B5;C9B5;110C 1174 11B8;C9B5;110C 1174 11B8; # (즵; 즵; 즵; 즵; 즵; ) HANGUL SYLLABLE JYIB
+C9B6;C9B6;110C 1174 11B9;C9B6;110C 1174 11B9; # (즶; 즶; 즶; 즶; 즶; ) HANGUL SYLLABLE JYIBS
+C9B7;C9B7;110C 1174 11BA;C9B7;110C 1174 11BA; # (즷; 즷; 즷; 즷; 즷; ) HANGUL SYLLABLE JYIS
+C9B8;C9B8;110C 1174 11BB;C9B8;110C 1174 11BB; # (즸; 즸; 즸; 즸; 즸; ) HANGUL SYLLABLE JYISS
+C9B9;C9B9;110C 1174 11BC;C9B9;110C 1174 11BC; # (즹; 즹; 즹; 즹; 즹; ) HANGUL SYLLABLE JYING
+C9BA;C9BA;110C 1174 11BD;C9BA;110C 1174 11BD; # (즺; 즺; 즺; 즺; 즺; ) HANGUL SYLLABLE JYIJ
+C9BB;C9BB;110C 1174 11BE;C9BB;110C 1174 11BE; # (즻; 즻; 즻; 즻; 즻; ) HANGUL SYLLABLE JYIC
+C9BC;C9BC;110C 1174 11BF;C9BC;110C 1174 11BF; # (즼; 즼; 즼; 즼; 즼; ) HANGUL SYLLABLE JYIK
+C9BD;C9BD;110C 1174 11C0;C9BD;110C 1174 11C0; # (즽; 즽; 즽; 즽; 즽; ) HANGUL SYLLABLE JYIT
+C9BE;C9BE;110C 1174 11C1;C9BE;110C 1174 11C1; # (즾; 즾; 즤á‡; 즾; 즤á‡; ) HANGUL SYLLABLE JYIP
+C9BF;C9BF;110C 1174 11C2;C9BF;110C 1174 11C2; # (즿; 즿; 즿; 즿; 즿; ) HANGUL SYLLABLE JYIH
+C9C0;C9C0;110C 1175;C9C0;110C 1175; # (지; 지; 지; 지; 지; ) HANGUL SYLLABLE JI
+C9C1;C9C1;110C 1175 11A8;C9C1;110C 1175 11A8; # (ì§; ì§; 직; ì§; 직; ) HANGUL SYLLABLE JIG
+C9C2;C9C2;110C 1175 11A9;C9C2;110C 1175 11A9; # (짂; 짂; 짂; 짂; 짂; ) HANGUL SYLLABLE JIGG
+C9C3;C9C3;110C 1175 11AA;C9C3;110C 1175 11AA; # (짃; 짃; 짃; 짃; 짃; ) HANGUL SYLLABLE JIGS
+C9C4;C9C4;110C 1175 11AB;C9C4;110C 1175 11AB; # (진; 진; 진; 진; 진; ) HANGUL SYLLABLE JIN
+C9C5;C9C5;110C 1175 11AC;C9C5;110C 1175 11AC; # (짅; 짅; 짅; 짅; 짅; ) HANGUL SYLLABLE JINJ
+C9C6;C9C6;110C 1175 11AD;C9C6;110C 1175 11AD; # (짆; 짆; 짆; 짆; 짆; ) HANGUL SYLLABLE JINH
+C9C7;C9C7;110C 1175 11AE;C9C7;110C 1175 11AE; # (짇; 짇; 짇; 짇; 짇; ) HANGUL SYLLABLE JID
+C9C8;C9C8;110C 1175 11AF;C9C8;110C 1175 11AF; # (질; 질; 질; 질; 질; ) HANGUL SYLLABLE JIL
+C9C9;C9C9;110C 1175 11B0;C9C9;110C 1175 11B0; # (짉; 짉; 짉; 짉; 짉; ) HANGUL SYLLABLE JILG
+C9CA;C9CA;110C 1175 11B1;C9CA;110C 1175 11B1; # (짊; 짊; 짊; 짊; 짊; ) HANGUL SYLLABLE JILM
+C9CB;C9CB;110C 1175 11B2;C9CB;110C 1175 11B2; # (짋; 짋; 짋; 짋; 짋; ) HANGUL SYLLABLE JILB
+C9CC;C9CC;110C 1175 11B3;C9CC;110C 1175 11B3; # (짌; 짌; 짌; 짌; 짌; ) HANGUL SYLLABLE JILS
+C9CD;C9CD;110C 1175 11B4;C9CD;110C 1175 11B4; # (ì§; ì§; 짍; ì§; 짍; ) HANGUL SYLLABLE JILT
+C9CE;C9CE;110C 1175 11B5;C9CE;110C 1175 11B5; # (짎; 짎; 짎; 짎; 짎; ) HANGUL SYLLABLE JILP
+C9CF;C9CF;110C 1175 11B6;C9CF;110C 1175 11B6; # (ì§; ì§; 짏; ì§; 짏; ) HANGUL SYLLABLE JILH
+C9D0;C9D0;110C 1175 11B7;C9D0;110C 1175 11B7; # (ì§; ì§; 짐; ì§; 짐; ) HANGUL SYLLABLE JIM
+C9D1;C9D1;110C 1175 11B8;C9D1;110C 1175 11B8; # (집; 집; 집; 집; 집; ) HANGUL SYLLABLE JIB
+C9D2;C9D2;110C 1175 11B9;C9D2;110C 1175 11B9; # (짒; 짒; 짒; 짒; 짒; ) HANGUL SYLLABLE JIBS
+C9D3;C9D3;110C 1175 11BA;C9D3;110C 1175 11BA; # (짓; 짓; 짓; 짓; 짓; ) HANGUL SYLLABLE JIS
+C9D4;C9D4;110C 1175 11BB;C9D4;110C 1175 11BB; # (짔; 짔; 짔; 짔; 짔; ) HANGUL SYLLABLE JISS
+C9D5;C9D5;110C 1175 11BC;C9D5;110C 1175 11BC; # (징; 징; 징; 징; 징; ) HANGUL SYLLABLE JING
+C9D6;C9D6;110C 1175 11BD;C9D6;110C 1175 11BD; # (짖; 짖; 짖; 짖; 짖; ) HANGUL SYLLABLE JIJ
+C9D7;C9D7;110C 1175 11BE;C9D7;110C 1175 11BE; # (짗; 짗; 짗; 짗; 짗; ) HANGUL SYLLABLE JIC
+C9D8;C9D8;110C 1175 11BF;C9D8;110C 1175 11BF; # (짘; 짘; 짘; 짘; 짘; ) HANGUL SYLLABLE JIK
+C9D9;C9D9;110C 1175 11C0;C9D9;110C 1175 11C0; # (짙; 짙; 짙; 짙; 짙; ) HANGUL SYLLABLE JIT
+C9DA;C9DA;110C 1175 11C1;C9DA;110C 1175 11C1; # (짚; 짚; 지á‡; 짚; 지á‡; ) HANGUL SYLLABLE JIP
+C9DB;C9DB;110C 1175 11C2;C9DB;110C 1175 11C2; # (짛; 짛; 짛; 짛; 짛; ) HANGUL SYLLABLE JIH
+C9DC;C9DC;110D 1161;C9DC;110D 1161; # (짜; 짜; á„á…¡; 짜; á„á…¡; ) HANGUL SYLLABLE JJA
+C9DD;C9DD;110D 1161 11A8;C9DD;110D 1161 11A8; # (ì§; ì§; á„ᅡᆨ; ì§; á„ᅡᆨ; ) HANGUL SYLLABLE JJAG
+C9DE;C9DE;110D 1161 11A9;C9DE;110D 1161 11A9; # (짞; 짞; á„ᅡᆩ; 짞; á„ᅡᆩ; ) HANGUL SYLLABLE JJAGG
+C9DF;C9DF;110D 1161 11AA;C9DF;110D 1161 11AA; # (짟; 짟; á„ᅡᆪ; 짟; á„ᅡᆪ; ) HANGUL SYLLABLE JJAGS
+C9E0;C9E0;110D 1161 11AB;C9E0;110D 1161 11AB; # (짠; 짠; á„ᅡᆫ; 짠; á„ᅡᆫ; ) HANGUL SYLLABLE JJAN
+C9E1;C9E1;110D 1161 11AC;C9E1;110D 1161 11AC; # (짡; 짡; á„ᅡᆬ; 짡; á„ᅡᆬ; ) HANGUL SYLLABLE JJANJ
+C9E2;C9E2;110D 1161 11AD;C9E2;110D 1161 11AD; # (짢; 짢; á„ᅡᆭ; 짢; á„ᅡᆭ; ) HANGUL SYLLABLE JJANH
+C9E3;C9E3;110D 1161 11AE;C9E3;110D 1161 11AE; # (짣; 짣; á„ᅡᆮ; 짣; á„ᅡᆮ; ) HANGUL SYLLABLE JJAD
+C9E4;C9E4;110D 1161 11AF;C9E4;110D 1161 11AF; # (짤; 짤; á„ᅡᆯ; 짤; á„ᅡᆯ; ) HANGUL SYLLABLE JJAL
+C9E5;C9E5;110D 1161 11B0;C9E5;110D 1161 11B0; # (짥; 짥; á„ᅡᆰ; 짥; á„ᅡᆰ; ) HANGUL SYLLABLE JJALG
+C9E6;C9E6;110D 1161 11B1;C9E6;110D 1161 11B1; # (짦; 짦; á„ᅡᆱ; 짦; á„ᅡᆱ; ) HANGUL SYLLABLE JJALM
+C9E7;C9E7;110D 1161 11B2;C9E7;110D 1161 11B2; # (짧; 짧; á„ᅡᆲ; 짧; á„ᅡᆲ; ) HANGUL SYLLABLE JJALB
+C9E8;C9E8;110D 1161 11B3;C9E8;110D 1161 11B3; # (짨; 짨; á„ᅡᆳ; 짨; á„ᅡᆳ; ) HANGUL SYLLABLE JJALS
+C9E9;C9E9;110D 1161 11B4;C9E9;110D 1161 11B4; # (짩; 짩; á„ᅡᆴ; 짩; á„ᅡᆴ; ) HANGUL SYLLABLE JJALT
+C9EA;C9EA;110D 1161 11B5;C9EA;110D 1161 11B5; # (짪; 짪; á„ᅡᆵ; 짪; á„ᅡᆵ; ) HANGUL SYLLABLE JJALP
+C9EB;C9EB;110D 1161 11B6;C9EB;110D 1161 11B6; # (짫; 짫; á„ᅡᆶ; 짫; á„ᅡᆶ; ) HANGUL SYLLABLE JJALH
+C9EC;C9EC;110D 1161 11B7;C9EC;110D 1161 11B7; # (짬; 짬; á„ᅡᆷ; 짬; á„ᅡᆷ; ) HANGUL SYLLABLE JJAM
+C9ED;C9ED;110D 1161 11B8;C9ED;110D 1161 11B8; # (짭; 짭; á„ᅡᆸ; 짭; á„ᅡᆸ; ) HANGUL SYLLABLE JJAB
+C9EE;C9EE;110D 1161 11B9;C9EE;110D 1161 11B9; # (짮; 짮; á„ᅡᆹ; 짮; á„ᅡᆹ; ) HANGUL SYLLABLE JJABS
+C9EF;C9EF;110D 1161 11BA;C9EF;110D 1161 11BA; # (짯; 짯; á„ᅡᆺ; 짯; á„ᅡᆺ; ) HANGUL SYLLABLE JJAS
+C9F0;C9F0;110D 1161 11BB;C9F0;110D 1161 11BB; # (짰; 짰; á„ᅡᆻ; 짰; á„ᅡᆻ; ) HANGUL SYLLABLE JJASS
+C9F1;C9F1;110D 1161 11BC;C9F1;110D 1161 11BC; # (짱; 짱; á„ᅡᆼ; 짱; á„ᅡᆼ; ) HANGUL SYLLABLE JJANG
+C9F2;C9F2;110D 1161 11BD;C9F2;110D 1161 11BD; # (짲; 짲; á„ᅡᆽ; 짲; á„ᅡᆽ; ) HANGUL SYLLABLE JJAJ
+C9F3;C9F3;110D 1161 11BE;C9F3;110D 1161 11BE; # (짳; 짳; á„ᅡᆾ; 짳; á„ᅡᆾ; ) HANGUL SYLLABLE JJAC
+C9F4;C9F4;110D 1161 11BF;C9F4;110D 1161 11BF; # (짴; 짴; á„ᅡᆿ; 짴; á„ᅡᆿ; ) HANGUL SYLLABLE JJAK
+C9F5;C9F5;110D 1161 11C0;C9F5;110D 1161 11C0; # (짵; 짵; á„ᅡᇀ; 짵; á„ᅡᇀ; ) HANGUL SYLLABLE JJAT
+C9F6;C9F6;110D 1161 11C1;C9F6;110D 1161 11C1; # (짶; 짶; á„á…¡á‡; 짶; á„á…¡á‡; ) HANGUL SYLLABLE JJAP
+C9F7;C9F7;110D 1161 11C2;C9F7;110D 1161 11C2; # (짷; 짷; á„ᅡᇂ; 짷; á„ᅡᇂ; ) HANGUL SYLLABLE JJAH
+C9F8;C9F8;110D 1162;C9F8;110D 1162; # (째; 째; á„á…¢; 째; á„á…¢; ) HANGUL SYLLABLE JJAE
+C9F9;C9F9;110D 1162 11A8;C9F9;110D 1162 11A8; # (짹; 짹; á„ᅢᆨ; 짹; á„ᅢᆨ; ) HANGUL SYLLABLE JJAEG
+C9FA;C9FA;110D 1162 11A9;C9FA;110D 1162 11A9; # (짺; 짺; á„ᅢᆩ; 짺; á„ᅢᆩ; ) HANGUL SYLLABLE JJAEGG
+C9FB;C9FB;110D 1162 11AA;C9FB;110D 1162 11AA; # (짻; 짻; á„ᅢᆪ; 짻; á„ᅢᆪ; ) HANGUL SYLLABLE JJAEGS
+C9FC;C9FC;110D 1162 11AB;C9FC;110D 1162 11AB; # (짼; 짼; á„ᅢᆫ; 짼; á„ᅢᆫ; ) HANGUL SYLLABLE JJAEN
+C9FD;C9FD;110D 1162 11AC;C9FD;110D 1162 11AC; # (짽; 짽; á„ᅢᆬ; 짽; á„ᅢᆬ; ) HANGUL SYLLABLE JJAENJ
+C9FE;C9FE;110D 1162 11AD;C9FE;110D 1162 11AD; # (짾; 짾; á„ᅢᆭ; 짾; á„ᅢᆭ; ) HANGUL SYLLABLE JJAENH
+C9FF;C9FF;110D 1162 11AE;C9FF;110D 1162 11AE; # (짿; 짿; á„ᅢᆮ; 짿; á„ᅢᆮ; ) HANGUL SYLLABLE JJAED
+CA00;CA00;110D 1162 11AF;CA00;110D 1162 11AF; # (쨀; 쨀; á„ᅢᆯ; 쨀; á„ᅢᆯ; ) HANGUL SYLLABLE JJAEL
+CA01;CA01;110D 1162 11B0;CA01;110D 1162 11B0; # (ì¨; ì¨; á„ᅢᆰ; ì¨; á„ᅢᆰ; ) HANGUL SYLLABLE JJAELG
+CA02;CA02;110D 1162 11B1;CA02;110D 1162 11B1; # (쨂; 쨂; á„ᅢᆱ; 쨂; á„ᅢᆱ; ) HANGUL SYLLABLE JJAELM
+CA03;CA03;110D 1162 11B2;CA03;110D 1162 11B2; # (쨃; 쨃; á„ᅢᆲ; 쨃; á„ᅢᆲ; ) HANGUL SYLLABLE JJAELB
+CA04;CA04;110D 1162 11B3;CA04;110D 1162 11B3; # (쨄; 쨄; á„ᅢᆳ; 쨄; á„ᅢᆳ; ) HANGUL SYLLABLE JJAELS
+CA05;CA05;110D 1162 11B4;CA05;110D 1162 11B4; # (쨅; 쨅; á„ᅢᆴ; 쨅; á„ᅢᆴ; ) HANGUL SYLLABLE JJAELT
+CA06;CA06;110D 1162 11B5;CA06;110D 1162 11B5; # (쨆; 쨆; á„ᅢᆵ; 쨆; á„ᅢᆵ; ) HANGUL SYLLABLE JJAELP
+CA07;CA07;110D 1162 11B6;CA07;110D 1162 11B6; # (쨇; 쨇; á„ᅢᆶ; 쨇; á„ᅢᆶ; ) HANGUL SYLLABLE JJAELH
+CA08;CA08;110D 1162 11B7;CA08;110D 1162 11B7; # (쨈; 쨈; á„ᅢᆷ; 쨈; á„ᅢᆷ; ) HANGUL SYLLABLE JJAEM
+CA09;CA09;110D 1162 11B8;CA09;110D 1162 11B8; # (쨉; 쨉; á„ᅢᆸ; 쨉; á„ᅢᆸ; ) HANGUL SYLLABLE JJAEB
+CA0A;CA0A;110D 1162 11B9;CA0A;110D 1162 11B9; # (쨊; 쨊; á„ᅢᆹ; 쨊; á„ᅢᆹ; ) HANGUL SYLLABLE JJAEBS
+CA0B;CA0B;110D 1162 11BA;CA0B;110D 1162 11BA; # (쨋; 쨋; á„ᅢᆺ; 쨋; á„ᅢᆺ; ) HANGUL SYLLABLE JJAES
+CA0C;CA0C;110D 1162 11BB;CA0C;110D 1162 11BB; # (쨌; 쨌; á„ᅢᆻ; 쨌; á„ᅢᆻ; ) HANGUL SYLLABLE JJAESS
+CA0D;CA0D;110D 1162 11BC;CA0D;110D 1162 11BC; # (ì¨; ì¨; á„ᅢᆼ; ì¨; á„ᅢᆼ; ) HANGUL SYLLABLE JJAENG
+CA0E;CA0E;110D 1162 11BD;CA0E;110D 1162 11BD; # (쨎; 쨎; á„ᅢᆽ; 쨎; á„ᅢᆽ; ) HANGUL SYLLABLE JJAEJ
+CA0F;CA0F;110D 1162 11BE;CA0F;110D 1162 11BE; # (ì¨; ì¨; á„ᅢᆾ; ì¨; á„ᅢᆾ; ) HANGUL SYLLABLE JJAEC
+CA10;CA10;110D 1162 11BF;CA10;110D 1162 11BF; # (ì¨; ì¨; á„ᅢᆿ; ì¨; á„ᅢᆿ; ) HANGUL SYLLABLE JJAEK
+CA11;CA11;110D 1162 11C0;CA11;110D 1162 11C0; # (쨑; 쨑; á„ᅢᇀ; 쨑; á„ᅢᇀ; ) HANGUL SYLLABLE JJAET
+CA12;CA12;110D 1162 11C1;CA12;110D 1162 11C1; # (쨒; 쨒; á„á…¢á‡; 쨒; á„á…¢á‡; ) HANGUL SYLLABLE JJAEP
+CA13;CA13;110D 1162 11C2;CA13;110D 1162 11C2; # (쨓; 쨓; á„ᅢᇂ; 쨓; á„ᅢᇂ; ) HANGUL SYLLABLE JJAEH
+CA14;CA14;110D 1163;CA14;110D 1163; # (쨔; 쨔; á„á…£; 쨔; á„á…£; ) HANGUL SYLLABLE JJYA
+CA15;CA15;110D 1163 11A8;CA15;110D 1163 11A8; # (쨕; 쨕; á„ᅣᆨ; 쨕; á„ᅣᆨ; ) HANGUL SYLLABLE JJYAG
+CA16;CA16;110D 1163 11A9;CA16;110D 1163 11A9; # (쨖; 쨖; á„ᅣᆩ; 쨖; á„ᅣᆩ; ) HANGUL SYLLABLE JJYAGG
+CA17;CA17;110D 1163 11AA;CA17;110D 1163 11AA; # (쨗; 쨗; á„ᅣᆪ; 쨗; á„ᅣᆪ; ) HANGUL SYLLABLE JJYAGS
+CA18;CA18;110D 1163 11AB;CA18;110D 1163 11AB; # (쨘; 쨘; á„ᅣᆫ; 쨘; á„ᅣᆫ; ) HANGUL SYLLABLE JJYAN
+CA19;CA19;110D 1163 11AC;CA19;110D 1163 11AC; # (쨙; 쨙; á„ᅣᆬ; 쨙; á„ᅣᆬ; ) HANGUL SYLLABLE JJYANJ
+CA1A;CA1A;110D 1163 11AD;CA1A;110D 1163 11AD; # (쨚; 쨚; á„ᅣᆭ; 쨚; á„ᅣᆭ; ) HANGUL SYLLABLE JJYANH
+CA1B;CA1B;110D 1163 11AE;CA1B;110D 1163 11AE; # (쨛; 쨛; á„ᅣᆮ; 쨛; á„ᅣᆮ; ) HANGUL SYLLABLE JJYAD
+CA1C;CA1C;110D 1163 11AF;CA1C;110D 1163 11AF; # (쨜; 쨜; á„ᅣᆯ; 쨜; á„ᅣᆯ; ) HANGUL SYLLABLE JJYAL
+CA1D;CA1D;110D 1163 11B0;CA1D;110D 1163 11B0; # (ì¨; ì¨; á„ᅣᆰ; ì¨; á„ᅣᆰ; ) HANGUL SYLLABLE JJYALG
+CA1E;CA1E;110D 1163 11B1;CA1E;110D 1163 11B1; # (쨞; 쨞; á„ᅣᆱ; 쨞; á„ᅣᆱ; ) HANGUL SYLLABLE JJYALM
+CA1F;CA1F;110D 1163 11B2;CA1F;110D 1163 11B2; # (쨟; 쨟; á„ᅣᆲ; 쨟; á„ᅣᆲ; ) HANGUL SYLLABLE JJYALB
+CA20;CA20;110D 1163 11B3;CA20;110D 1163 11B3; # (쨠; 쨠; á„ᅣᆳ; 쨠; á„ᅣᆳ; ) HANGUL SYLLABLE JJYALS
+CA21;CA21;110D 1163 11B4;CA21;110D 1163 11B4; # (쨡; 쨡; á„ᅣᆴ; 쨡; á„ᅣᆴ; ) HANGUL SYLLABLE JJYALT
+CA22;CA22;110D 1163 11B5;CA22;110D 1163 11B5; # (쨢; 쨢; á„ᅣᆵ; 쨢; á„ᅣᆵ; ) HANGUL SYLLABLE JJYALP
+CA23;CA23;110D 1163 11B6;CA23;110D 1163 11B6; # (쨣; 쨣; á„ᅣᆶ; 쨣; á„ᅣᆶ; ) HANGUL SYLLABLE JJYALH
+CA24;CA24;110D 1163 11B7;CA24;110D 1163 11B7; # (쨤; 쨤; á„ᅣᆷ; 쨤; á„ᅣᆷ; ) HANGUL SYLLABLE JJYAM
+CA25;CA25;110D 1163 11B8;CA25;110D 1163 11B8; # (쨥; 쨥; á„ᅣᆸ; 쨥; á„ᅣᆸ; ) HANGUL SYLLABLE JJYAB
+CA26;CA26;110D 1163 11B9;CA26;110D 1163 11B9; # (쨦; 쨦; á„ᅣᆹ; 쨦; á„ᅣᆹ; ) HANGUL SYLLABLE JJYABS
+CA27;CA27;110D 1163 11BA;CA27;110D 1163 11BA; # (쨧; 쨧; á„ᅣᆺ; 쨧; á„ᅣᆺ; ) HANGUL SYLLABLE JJYAS
+CA28;CA28;110D 1163 11BB;CA28;110D 1163 11BB; # (쨨; 쨨; á„ᅣᆻ; 쨨; á„ᅣᆻ; ) HANGUL SYLLABLE JJYASS
+CA29;CA29;110D 1163 11BC;CA29;110D 1163 11BC; # (쨩; 쨩; á„ᅣᆼ; 쨩; á„ᅣᆼ; ) HANGUL SYLLABLE JJYANG
+CA2A;CA2A;110D 1163 11BD;CA2A;110D 1163 11BD; # (쨪; 쨪; á„ᅣᆽ; 쨪; á„ᅣᆽ; ) HANGUL SYLLABLE JJYAJ
+CA2B;CA2B;110D 1163 11BE;CA2B;110D 1163 11BE; # (쨫; 쨫; á„ᅣᆾ; 쨫; á„ᅣᆾ; ) HANGUL SYLLABLE JJYAC
+CA2C;CA2C;110D 1163 11BF;CA2C;110D 1163 11BF; # (쨬; 쨬; á„ᅣᆿ; 쨬; á„ᅣᆿ; ) HANGUL SYLLABLE JJYAK
+CA2D;CA2D;110D 1163 11C0;CA2D;110D 1163 11C0; # (쨭; 쨭; á„ᅣᇀ; 쨭; á„ᅣᇀ; ) HANGUL SYLLABLE JJYAT
+CA2E;CA2E;110D 1163 11C1;CA2E;110D 1163 11C1; # (쨮; 쨮; á„á…£á‡; 쨮; á„á…£á‡; ) HANGUL SYLLABLE JJYAP
+CA2F;CA2F;110D 1163 11C2;CA2F;110D 1163 11C2; # (쨯; 쨯; á„ᅣᇂ; 쨯; á„ᅣᇂ; ) HANGUL SYLLABLE JJYAH
+CA30;CA30;110D 1164;CA30;110D 1164; # (쨰; 쨰; á„á…¤; 쨰; á„á…¤; ) HANGUL SYLLABLE JJYAE
+CA31;CA31;110D 1164 11A8;CA31;110D 1164 11A8; # (쨱; 쨱; á„ᅤᆨ; 쨱; á„ᅤᆨ; ) HANGUL SYLLABLE JJYAEG
+CA32;CA32;110D 1164 11A9;CA32;110D 1164 11A9; # (쨲; 쨲; á„ᅤᆩ; 쨲; á„ᅤᆩ; ) HANGUL SYLLABLE JJYAEGG
+CA33;CA33;110D 1164 11AA;CA33;110D 1164 11AA; # (쨳; 쨳; á„ᅤᆪ; 쨳; á„ᅤᆪ; ) HANGUL SYLLABLE JJYAEGS
+CA34;CA34;110D 1164 11AB;CA34;110D 1164 11AB; # (쨴; 쨴; á„ᅤᆫ; 쨴; á„ᅤᆫ; ) HANGUL SYLLABLE JJYAEN
+CA35;CA35;110D 1164 11AC;CA35;110D 1164 11AC; # (쨵; 쨵; á„ᅤᆬ; 쨵; á„ᅤᆬ; ) HANGUL SYLLABLE JJYAENJ
+CA36;CA36;110D 1164 11AD;CA36;110D 1164 11AD; # (쨶; 쨶; á„ᅤᆭ; 쨶; á„ᅤᆭ; ) HANGUL SYLLABLE JJYAENH
+CA37;CA37;110D 1164 11AE;CA37;110D 1164 11AE; # (쨷; 쨷; á„ᅤᆮ; 쨷; á„ᅤᆮ; ) HANGUL SYLLABLE JJYAED
+CA38;CA38;110D 1164 11AF;CA38;110D 1164 11AF; # (쨸; 쨸; á„ᅤᆯ; 쨸; á„ᅤᆯ; ) HANGUL SYLLABLE JJYAEL
+CA39;CA39;110D 1164 11B0;CA39;110D 1164 11B0; # (쨹; 쨹; á„ᅤᆰ; 쨹; á„ᅤᆰ; ) HANGUL SYLLABLE JJYAELG
+CA3A;CA3A;110D 1164 11B1;CA3A;110D 1164 11B1; # (쨺; 쨺; á„ᅤᆱ; 쨺; á„ᅤᆱ; ) HANGUL SYLLABLE JJYAELM
+CA3B;CA3B;110D 1164 11B2;CA3B;110D 1164 11B2; # (쨻; 쨻; á„ᅤᆲ; 쨻; á„ᅤᆲ; ) HANGUL SYLLABLE JJYAELB
+CA3C;CA3C;110D 1164 11B3;CA3C;110D 1164 11B3; # (쨼; 쨼; á„ᅤᆳ; 쨼; á„ᅤᆳ; ) HANGUL SYLLABLE JJYAELS
+CA3D;CA3D;110D 1164 11B4;CA3D;110D 1164 11B4; # (쨽; 쨽; á„ᅤᆴ; 쨽; á„ᅤᆴ; ) HANGUL SYLLABLE JJYAELT
+CA3E;CA3E;110D 1164 11B5;CA3E;110D 1164 11B5; # (쨾; 쨾; á„ᅤᆵ; 쨾; á„ᅤᆵ; ) HANGUL SYLLABLE JJYAELP
+CA3F;CA3F;110D 1164 11B6;CA3F;110D 1164 11B6; # (쨿; 쨿; á„ᅤᆶ; 쨿; á„ᅤᆶ; ) HANGUL SYLLABLE JJYAELH
+CA40;CA40;110D 1164 11B7;CA40;110D 1164 11B7; # (ì©€; ì©€; á„ᅤᆷ; ì©€; á„ᅤᆷ; ) HANGUL SYLLABLE JJYAEM
+CA41;CA41;110D 1164 11B8;CA41;110D 1164 11B8; # (ì©; ì©; á„ᅤᆸ; ì©; á„ᅤᆸ; ) HANGUL SYLLABLE JJYAEB
+CA42;CA42;110D 1164 11B9;CA42;110D 1164 11B9; # (ì©‚; ì©‚; á„ᅤᆹ; ì©‚; á„ᅤᆹ; ) HANGUL SYLLABLE JJYAEBS
+CA43;CA43;110D 1164 11BA;CA43;110D 1164 11BA; # (쩃; 쩃; á„ᅤᆺ; 쩃; á„ᅤᆺ; ) HANGUL SYLLABLE JJYAES
+CA44;CA44;110D 1164 11BB;CA44;110D 1164 11BB; # (ì©„; ì©„; á„ᅤᆻ; ì©„; á„ᅤᆻ; ) HANGUL SYLLABLE JJYAESS
+CA45;CA45;110D 1164 11BC;CA45;110D 1164 11BC; # (ì©…; ì©…; á„ᅤᆼ; ì©…; á„ᅤᆼ; ) HANGUL SYLLABLE JJYAENG
+CA46;CA46;110D 1164 11BD;CA46;110D 1164 11BD; # (쩆; 쩆; á„ᅤᆽ; 쩆; á„ᅤᆽ; ) HANGUL SYLLABLE JJYAEJ
+CA47;CA47;110D 1164 11BE;CA47;110D 1164 11BE; # (쩇; 쩇; á„ᅤᆾ; 쩇; á„ᅤᆾ; ) HANGUL SYLLABLE JJYAEC
+CA48;CA48;110D 1164 11BF;CA48;110D 1164 11BF; # (쩈; 쩈; á„ᅤᆿ; 쩈; á„ᅤᆿ; ) HANGUL SYLLABLE JJYAEK
+CA49;CA49;110D 1164 11C0;CA49;110D 1164 11C0; # (쩉; 쩉; á„ᅤᇀ; 쩉; á„ᅤᇀ; ) HANGUL SYLLABLE JJYAET
+CA4A;CA4A;110D 1164 11C1;CA4A;110D 1164 11C1; # (ì©Š; ì©Š; á„á…¤á‡; ì©Š; á„á…¤á‡; ) HANGUL SYLLABLE JJYAEP
+CA4B;CA4B;110D 1164 11C2;CA4B;110D 1164 11C2; # (ì©‹; ì©‹; á„ᅤᇂ; ì©‹; á„ᅤᇂ; ) HANGUL SYLLABLE JJYAEH
+CA4C;CA4C;110D 1165;CA4C;110D 1165; # (ì©Œ; ì©Œ; á„á…¥; ì©Œ; á„á…¥; ) HANGUL SYLLABLE JJEO
+CA4D;CA4D;110D 1165 11A8;CA4D;110D 1165 11A8; # (ì©; ì©; á„ᅥᆨ; ì©; á„ᅥᆨ; ) HANGUL SYLLABLE JJEOG
+CA4E;CA4E;110D 1165 11A9;CA4E;110D 1165 11A9; # (ì©Ž; ì©Ž; á„ᅥᆩ; ì©Ž; á„ᅥᆩ; ) HANGUL SYLLABLE JJEOGG
+CA4F;CA4F;110D 1165 11AA;CA4F;110D 1165 11AA; # (ì©; ì©; á„ᅥᆪ; ì©; á„ᅥᆪ; ) HANGUL SYLLABLE JJEOGS
+CA50;CA50;110D 1165 11AB;CA50;110D 1165 11AB; # (ì©; ì©; á„ᅥᆫ; ì©; á„ᅥᆫ; ) HANGUL SYLLABLE JJEON
+CA51;CA51;110D 1165 11AC;CA51;110D 1165 11AC; # (ì©‘; ì©‘; á„ᅥᆬ; ì©‘; á„ᅥᆬ; ) HANGUL SYLLABLE JJEONJ
+CA52;CA52;110D 1165 11AD;CA52;110D 1165 11AD; # (ì©’; ì©’; á„ᅥᆭ; ì©’; á„ᅥᆭ; ) HANGUL SYLLABLE JJEONH
+CA53;CA53;110D 1165 11AE;CA53;110D 1165 11AE; # (ì©“; ì©“; á„ᅥᆮ; ì©“; á„ᅥᆮ; ) HANGUL SYLLABLE JJEOD
+CA54;CA54;110D 1165 11AF;CA54;110D 1165 11AF; # (ì©”; ì©”; á„ᅥᆯ; ì©”; á„ᅥᆯ; ) HANGUL SYLLABLE JJEOL
+CA55;CA55;110D 1165 11B0;CA55;110D 1165 11B0; # (ì©•; ì©•; á„ᅥᆰ; ì©•; á„ᅥᆰ; ) HANGUL SYLLABLE JJEOLG
+CA56;CA56;110D 1165 11B1;CA56;110D 1165 11B1; # (ì©–; ì©–; á„ᅥᆱ; ì©–; á„ᅥᆱ; ) HANGUL SYLLABLE JJEOLM
+CA57;CA57;110D 1165 11B2;CA57;110D 1165 11B2; # (ì©—; ì©—; á„ᅥᆲ; ì©—; á„ᅥᆲ; ) HANGUL SYLLABLE JJEOLB
+CA58;CA58;110D 1165 11B3;CA58;110D 1165 11B3; # (쩘; 쩘; á„ᅥᆳ; 쩘; á„ᅥᆳ; ) HANGUL SYLLABLE JJEOLS
+CA59;CA59;110D 1165 11B4;CA59;110D 1165 11B4; # (ì©™; ì©™; á„ᅥᆴ; ì©™; á„ᅥᆴ; ) HANGUL SYLLABLE JJEOLT
+CA5A;CA5A;110D 1165 11B5;CA5A;110D 1165 11B5; # (ì©š; ì©š; á„ᅥᆵ; ì©š; á„ᅥᆵ; ) HANGUL SYLLABLE JJEOLP
+CA5B;CA5B;110D 1165 11B6;CA5B;110D 1165 11B6; # (ì©›; ì©›; á„ᅥᆶ; ì©›; á„ᅥᆶ; ) HANGUL SYLLABLE JJEOLH
+CA5C;CA5C;110D 1165 11B7;CA5C;110D 1165 11B7; # (ì©œ; ì©œ; á„ᅥᆷ; ì©œ; á„ᅥᆷ; ) HANGUL SYLLABLE JJEOM
+CA5D;CA5D;110D 1165 11B8;CA5D;110D 1165 11B8; # (ì©; ì©; á„ᅥᆸ; ì©; á„ᅥᆸ; ) HANGUL SYLLABLE JJEOB
+CA5E;CA5E;110D 1165 11B9;CA5E;110D 1165 11B9; # (ì©ž; ì©ž; á„ᅥᆹ; ì©ž; á„ᅥᆹ; ) HANGUL SYLLABLE JJEOBS
+CA5F;CA5F;110D 1165 11BA;CA5F;110D 1165 11BA; # (ì©Ÿ; ì©Ÿ; á„ᅥᆺ; ì©Ÿ; á„ᅥᆺ; ) HANGUL SYLLABLE JJEOS
+CA60;CA60;110D 1165 11BB;CA60;110D 1165 11BB; # (ì© ; ì© ; á„ᅥᆻ; ì© ; á„ᅥᆻ; ) HANGUL SYLLABLE JJEOSS
+CA61;CA61;110D 1165 11BC;CA61;110D 1165 11BC; # (ì©¡; ì©¡; á„ᅥᆼ; ì©¡; á„ᅥᆼ; ) HANGUL SYLLABLE JJEONG
+CA62;CA62;110D 1165 11BD;CA62;110D 1165 11BD; # (ì©¢; ì©¢; á„ᅥᆽ; ì©¢; á„ᅥᆽ; ) HANGUL SYLLABLE JJEOJ
+CA63;CA63;110D 1165 11BE;CA63;110D 1165 11BE; # (ì©£; ì©£; á„ᅥᆾ; ì©£; á„ᅥᆾ; ) HANGUL SYLLABLE JJEOC
+CA64;CA64;110D 1165 11BF;CA64;110D 1165 11BF; # (쩤; 쩤; á„ᅥᆿ; 쩤; á„ᅥᆿ; ) HANGUL SYLLABLE JJEOK
+CA65;CA65;110D 1165 11C0;CA65;110D 1165 11C0; # (ì©¥; ì©¥; á„ᅥᇀ; ì©¥; á„ᅥᇀ; ) HANGUL SYLLABLE JJEOT
+CA66;CA66;110D 1165 11C1;CA66;110D 1165 11C1; # (쩦; 쩦; á„á…¥á‡; 쩦; á„á…¥á‡; ) HANGUL SYLLABLE JJEOP
+CA67;CA67;110D 1165 11C2;CA67;110D 1165 11C2; # (쩧; 쩧; á„ᅥᇂ; 쩧; á„ᅥᇂ; ) HANGUL SYLLABLE JJEOH
+CA68;CA68;110D 1166;CA68;110D 1166; # (쩨; 쩨; á„á…¦; 쩨; á„á…¦; ) HANGUL SYLLABLE JJE
+CA69;CA69;110D 1166 11A8;CA69;110D 1166 11A8; # (ì©©; ì©©; á„ᅦᆨ; ì©©; á„ᅦᆨ; ) HANGUL SYLLABLE JJEG
+CA6A;CA6A;110D 1166 11A9;CA6A;110D 1166 11A9; # (쩪; 쩪; á„ᅦᆩ; 쩪; á„ᅦᆩ; ) HANGUL SYLLABLE JJEGG
+CA6B;CA6B;110D 1166 11AA;CA6B;110D 1166 11AA; # (ì©«; ì©«; á„ᅦᆪ; ì©«; á„ᅦᆪ; ) HANGUL SYLLABLE JJEGS
+CA6C;CA6C;110D 1166 11AB;CA6C;110D 1166 11AB; # (쩬; 쩬; á„ᅦᆫ; 쩬; á„ᅦᆫ; ) HANGUL SYLLABLE JJEN
+CA6D;CA6D;110D 1166 11AC;CA6D;110D 1166 11AC; # (ì©­; ì©­; á„ᅦᆬ; ì©­; á„ᅦᆬ; ) HANGUL SYLLABLE JJENJ
+CA6E;CA6E;110D 1166 11AD;CA6E;110D 1166 11AD; # (ì©®; ì©®; á„ᅦᆭ; ì©®; á„ᅦᆭ; ) HANGUL SYLLABLE JJENH
+CA6F;CA6F;110D 1166 11AE;CA6F;110D 1166 11AE; # (쩯; 쩯; á„ᅦᆮ; 쩯; á„ᅦᆮ; ) HANGUL SYLLABLE JJED
+CA70;CA70;110D 1166 11AF;CA70;110D 1166 11AF; # (ì©°; ì©°; á„ᅦᆯ; ì©°; á„ᅦᆯ; ) HANGUL SYLLABLE JJEL
+CA71;CA71;110D 1166 11B0;CA71;110D 1166 11B0; # (쩱; 쩱; á„ᅦᆰ; 쩱; á„ᅦᆰ; ) HANGUL SYLLABLE JJELG
+CA72;CA72;110D 1166 11B1;CA72;110D 1166 11B1; # (쩲; 쩲; á„ᅦᆱ; 쩲; á„ᅦᆱ; ) HANGUL SYLLABLE JJELM
+CA73;CA73;110D 1166 11B2;CA73;110D 1166 11B2; # (쩳; 쩳; á„ᅦᆲ; 쩳; á„ᅦᆲ; ) HANGUL SYLLABLE JJELB
+CA74;CA74;110D 1166 11B3;CA74;110D 1166 11B3; # (ì©´; ì©´; á„ᅦᆳ; ì©´; á„ᅦᆳ; ) HANGUL SYLLABLE JJELS
+CA75;CA75;110D 1166 11B4;CA75;110D 1166 11B4; # (쩵; 쩵; á„ᅦᆴ; 쩵; á„ᅦᆴ; ) HANGUL SYLLABLE JJELT
+CA76;CA76;110D 1166 11B5;CA76;110D 1166 11B5; # (쩶; 쩶; á„ᅦᆵ; 쩶; á„ᅦᆵ; ) HANGUL SYLLABLE JJELP
+CA77;CA77;110D 1166 11B6;CA77;110D 1166 11B6; # (ì©·; ì©·; á„ᅦᆶ; ì©·; á„ᅦᆶ; ) HANGUL SYLLABLE JJELH
+CA78;CA78;110D 1166 11B7;CA78;110D 1166 11B7; # (쩸; 쩸; á„ᅦᆷ; 쩸; á„ᅦᆷ; ) HANGUL SYLLABLE JJEM
+CA79;CA79;110D 1166 11B8;CA79;110D 1166 11B8; # (쩹; 쩹; á„ᅦᆸ; 쩹; á„ᅦᆸ; ) HANGUL SYLLABLE JJEB
+CA7A;CA7A;110D 1166 11B9;CA7A;110D 1166 11B9; # (쩺; 쩺; á„ᅦᆹ; 쩺; á„ᅦᆹ; ) HANGUL SYLLABLE JJEBS
+CA7B;CA7B;110D 1166 11BA;CA7B;110D 1166 11BA; # (ì©»; ì©»; á„ᅦᆺ; ì©»; á„ᅦᆺ; ) HANGUL SYLLABLE JJES
+CA7C;CA7C;110D 1166 11BB;CA7C;110D 1166 11BB; # (쩼; 쩼; á„ᅦᆻ; 쩼; á„ᅦᆻ; ) HANGUL SYLLABLE JJESS
+CA7D;CA7D;110D 1166 11BC;CA7D;110D 1166 11BC; # (쩽; 쩽; á„ᅦᆼ; 쩽; á„ᅦᆼ; ) HANGUL SYLLABLE JJENG
+CA7E;CA7E;110D 1166 11BD;CA7E;110D 1166 11BD; # (쩾; 쩾; á„ᅦᆽ; 쩾; á„ᅦᆽ; ) HANGUL SYLLABLE JJEJ
+CA7F;CA7F;110D 1166 11BE;CA7F;110D 1166 11BE; # (ì©¿; ì©¿; á„ᅦᆾ; ì©¿; á„ᅦᆾ; ) HANGUL SYLLABLE JJEC
+CA80;CA80;110D 1166 11BF;CA80;110D 1166 11BF; # (쪀; 쪀; á„ᅦᆿ; 쪀; á„ᅦᆿ; ) HANGUL SYLLABLE JJEK
+CA81;CA81;110D 1166 11C0;CA81;110D 1166 11C0; # (ìª; ìª; á„ᅦᇀ; ìª; á„ᅦᇀ; ) HANGUL SYLLABLE JJET
+CA82;CA82;110D 1166 11C1;CA82;110D 1166 11C1; # (쪂; 쪂; á„á…¦á‡; 쪂; á„á…¦á‡; ) HANGUL SYLLABLE JJEP
+CA83;CA83;110D 1166 11C2;CA83;110D 1166 11C2; # (쪃; 쪃; á„ᅦᇂ; 쪃; á„ᅦᇂ; ) HANGUL SYLLABLE JJEH
+CA84;CA84;110D 1167;CA84;110D 1167; # (쪄; 쪄; á„á…§; 쪄; á„á…§; ) HANGUL SYLLABLE JJYEO
+CA85;CA85;110D 1167 11A8;CA85;110D 1167 11A8; # (쪅; 쪅; á„ᅧᆨ; 쪅; á„ᅧᆨ; ) HANGUL SYLLABLE JJYEOG
+CA86;CA86;110D 1167 11A9;CA86;110D 1167 11A9; # (쪆; 쪆; á„ᅧᆩ; 쪆; á„ᅧᆩ; ) HANGUL SYLLABLE JJYEOGG
+CA87;CA87;110D 1167 11AA;CA87;110D 1167 11AA; # (쪇; 쪇; á„ᅧᆪ; 쪇; á„ᅧᆪ; ) HANGUL SYLLABLE JJYEOGS
+CA88;CA88;110D 1167 11AB;CA88;110D 1167 11AB; # (쪈; 쪈; á„ᅧᆫ; 쪈; á„ᅧᆫ; ) HANGUL SYLLABLE JJYEON
+CA89;CA89;110D 1167 11AC;CA89;110D 1167 11AC; # (쪉; 쪉; á„ᅧᆬ; 쪉; á„ᅧᆬ; ) HANGUL SYLLABLE JJYEONJ
+CA8A;CA8A;110D 1167 11AD;CA8A;110D 1167 11AD; # (쪊; 쪊; á„ᅧᆭ; 쪊; á„ᅧᆭ; ) HANGUL SYLLABLE JJYEONH
+CA8B;CA8B;110D 1167 11AE;CA8B;110D 1167 11AE; # (쪋; 쪋; á„ᅧᆮ; 쪋; á„ᅧᆮ; ) HANGUL SYLLABLE JJYEOD
+CA8C;CA8C;110D 1167 11AF;CA8C;110D 1167 11AF; # (쪌; 쪌; á„ᅧᆯ; 쪌; á„ᅧᆯ; ) HANGUL SYLLABLE JJYEOL
+CA8D;CA8D;110D 1167 11B0;CA8D;110D 1167 11B0; # (ìª; ìª; á„ᅧᆰ; ìª; á„ᅧᆰ; ) HANGUL SYLLABLE JJYEOLG
+CA8E;CA8E;110D 1167 11B1;CA8E;110D 1167 11B1; # (쪎; 쪎; á„ᅧᆱ; 쪎; á„ᅧᆱ; ) HANGUL SYLLABLE JJYEOLM
+CA8F;CA8F;110D 1167 11B2;CA8F;110D 1167 11B2; # (ìª; ìª; á„ᅧᆲ; ìª; á„ᅧᆲ; ) HANGUL SYLLABLE JJYEOLB
+CA90;CA90;110D 1167 11B3;CA90;110D 1167 11B3; # (ìª; ìª; á„ᅧᆳ; ìª; á„ᅧᆳ; ) HANGUL SYLLABLE JJYEOLS
+CA91;CA91;110D 1167 11B4;CA91;110D 1167 11B4; # (쪑; 쪑; á„ᅧᆴ; 쪑; á„ᅧᆴ; ) HANGUL SYLLABLE JJYEOLT
+CA92;CA92;110D 1167 11B5;CA92;110D 1167 11B5; # (쪒; 쪒; á„ᅧᆵ; 쪒; á„ᅧᆵ; ) HANGUL SYLLABLE JJYEOLP
+CA93;CA93;110D 1167 11B6;CA93;110D 1167 11B6; # (쪓; 쪓; á„ᅧᆶ; 쪓; á„ᅧᆶ; ) HANGUL SYLLABLE JJYEOLH
+CA94;CA94;110D 1167 11B7;CA94;110D 1167 11B7; # (쪔; 쪔; á„ᅧᆷ; 쪔; á„ᅧᆷ; ) HANGUL SYLLABLE JJYEOM
+CA95;CA95;110D 1167 11B8;CA95;110D 1167 11B8; # (쪕; 쪕; á„ᅧᆸ; 쪕; á„ᅧᆸ; ) HANGUL SYLLABLE JJYEOB
+CA96;CA96;110D 1167 11B9;CA96;110D 1167 11B9; # (쪖; 쪖; á„ᅧᆹ; 쪖; á„ᅧᆹ; ) HANGUL SYLLABLE JJYEOBS
+CA97;CA97;110D 1167 11BA;CA97;110D 1167 11BA; # (쪗; 쪗; á„ᅧᆺ; 쪗; á„ᅧᆺ; ) HANGUL SYLLABLE JJYEOS
+CA98;CA98;110D 1167 11BB;CA98;110D 1167 11BB; # (쪘; 쪘; á„ᅧᆻ; 쪘; á„ᅧᆻ; ) HANGUL SYLLABLE JJYEOSS
+CA99;CA99;110D 1167 11BC;CA99;110D 1167 11BC; # (쪙; 쪙; á„ᅧᆼ; 쪙; á„ᅧᆼ; ) HANGUL SYLLABLE JJYEONG
+CA9A;CA9A;110D 1167 11BD;CA9A;110D 1167 11BD; # (쪚; 쪚; á„ᅧᆽ; 쪚; á„ᅧᆽ; ) HANGUL SYLLABLE JJYEOJ
+CA9B;CA9B;110D 1167 11BE;CA9B;110D 1167 11BE; # (쪛; 쪛; á„ᅧᆾ; 쪛; á„ᅧᆾ; ) HANGUL SYLLABLE JJYEOC
+CA9C;CA9C;110D 1167 11BF;CA9C;110D 1167 11BF; # (쪜; 쪜; á„ᅧᆿ; 쪜; á„ᅧᆿ; ) HANGUL SYLLABLE JJYEOK
+CA9D;CA9D;110D 1167 11C0;CA9D;110D 1167 11C0; # (ìª; ìª; á„ᅧᇀ; ìª; á„ᅧᇀ; ) HANGUL SYLLABLE JJYEOT
+CA9E;CA9E;110D 1167 11C1;CA9E;110D 1167 11C1; # (쪞; 쪞; á„á…§á‡; 쪞; á„á…§á‡; ) HANGUL SYLLABLE JJYEOP
+CA9F;CA9F;110D 1167 11C2;CA9F;110D 1167 11C2; # (쪟; 쪟; á„ᅧᇂ; 쪟; á„ᅧᇂ; ) HANGUL SYLLABLE JJYEOH
+CAA0;CAA0;110D 1168;CAA0;110D 1168; # (쪠; 쪠; á„á…¨; 쪠; á„á…¨; ) HANGUL SYLLABLE JJYE
+CAA1;CAA1;110D 1168 11A8;CAA1;110D 1168 11A8; # (쪡; 쪡; á„ᅨᆨ; 쪡; á„ᅨᆨ; ) HANGUL SYLLABLE JJYEG
+CAA2;CAA2;110D 1168 11A9;CAA2;110D 1168 11A9; # (쪢; 쪢; á„ᅨᆩ; 쪢; á„ᅨᆩ; ) HANGUL SYLLABLE JJYEGG
+CAA3;CAA3;110D 1168 11AA;CAA3;110D 1168 11AA; # (쪣; 쪣; á„ᅨᆪ; 쪣; á„ᅨᆪ; ) HANGUL SYLLABLE JJYEGS
+CAA4;CAA4;110D 1168 11AB;CAA4;110D 1168 11AB; # (쪤; 쪤; á„ᅨᆫ; 쪤; á„ᅨᆫ; ) HANGUL SYLLABLE JJYEN
+CAA5;CAA5;110D 1168 11AC;CAA5;110D 1168 11AC; # (쪥; 쪥; á„ᅨᆬ; 쪥; á„ᅨᆬ; ) HANGUL SYLLABLE JJYENJ
+CAA6;CAA6;110D 1168 11AD;CAA6;110D 1168 11AD; # (쪦; 쪦; á„ᅨᆭ; 쪦; á„ᅨᆭ; ) HANGUL SYLLABLE JJYENH
+CAA7;CAA7;110D 1168 11AE;CAA7;110D 1168 11AE; # (쪧; 쪧; á„ᅨᆮ; 쪧; á„ᅨᆮ; ) HANGUL SYLLABLE JJYED
+CAA8;CAA8;110D 1168 11AF;CAA8;110D 1168 11AF; # (쪨; 쪨; á„ᅨᆯ; 쪨; á„ᅨᆯ; ) HANGUL SYLLABLE JJYEL
+CAA9;CAA9;110D 1168 11B0;CAA9;110D 1168 11B0; # (쪩; 쪩; á„ᅨᆰ; 쪩; á„ᅨᆰ; ) HANGUL SYLLABLE JJYELG
+CAAA;CAAA;110D 1168 11B1;CAAA;110D 1168 11B1; # (쪪; 쪪; á„ᅨᆱ; 쪪; á„ᅨᆱ; ) HANGUL SYLLABLE JJYELM
+CAAB;CAAB;110D 1168 11B2;CAAB;110D 1168 11B2; # (쪫; 쪫; á„ᅨᆲ; 쪫; á„ᅨᆲ; ) HANGUL SYLLABLE JJYELB
+CAAC;CAAC;110D 1168 11B3;CAAC;110D 1168 11B3; # (쪬; 쪬; á„ᅨᆳ; 쪬; á„ᅨᆳ; ) HANGUL SYLLABLE JJYELS
+CAAD;CAAD;110D 1168 11B4;CAAD;110D 1168 11B4; # (쪭; 쪭; á„ᅨᆴ; 쪭; á„ᅨᆴ; ) HANGUL SYLLABLE JJYELT
+CAAE;CAAE;110D 1168 11B5;CAAE;110D 1168 11B5; # (쪮; 쪮; á„ᅨᆵ; 쪮; á„ᅨᆵ; ) HANGUL SYLLABLE JJYELP
+CAAF;CAAF;110D 1168 11B6;CAAF;110D 1168 11B6; # (쪯; 쪯; á„ᅨᆶ; 쪯; á„ᅨᆶ; ) HANGUL SYLLABLE JJYELH
+CAB0;CAB0;110D 1168 11B7;CAB0;110D 1168 11B7; # (쪰; 쪰; á„ᅨᆷ; 쪰; á„ᅨᆷ; ) HANGUL SYLLABLE JJYEM
+CAB1;CAB1;110D 1168 11B8;CAB1;110D 1168 11B8; # (쪱; 쪱; á„ᅨᆸ; 쪱; á„ᅨᆸ; ) HANGUL SYLLABLE JJYEB
+CAB2;CAB2;110D 1168 11B9;CAB2;110D 1168 11B9; # (쪲; 쪲; á„ᅨᆹ; 쪲; á„ᅨᆹ; ) HANGUL SYLLABLE JJYEBS
+CAB3;CAB3;110D 1168 11BA;CAB3;110D 1168 11BA; # (쪳; 쪳; á„ᅨᆺ; 쪳; á„ᅨᆺ; ) HANGUL SYLLABLE JJYES
+CAB4;CAB4;110D 1168 11BB;CAB4;110D 1168 11BB; # (쪴; 쪴; á„ᅨᆻ; 쪴; á„ᅨᆻ; ) HANGUL SYLLABLE JJYESS
+CAB5;CAB5;110D 1168 11BC;CAB5;110D 1168 11BC; # (쪵; 쪵; á„ᅨᆼ; 쪵; á„ᅨᆼ; ) HANGUL SYLLABLE JJYENG
+CAB6;CAB6;110D 1168 11BD;CAB6;110D 1168 11BD; # (쪶; 쪶; á„ᅨᆽ; 쪶; á„ᅨᆽ; ) HANGUL SYLLABLE JJYEJ
+CAB7;CAB7;110D 1168 11BE;CAB7;110D 1168 11BE; # (쪷; 쪷; á„ᅨᆾ; 쪷; á„ᅨᆾ; ) HANGUL SYLLABLE JJYEC
+CAB8;CAB8;110D 1168 11BF;CAB8;110D 1168 11BF; # (쪸; 쪸; á„ᅨᆿ; 쪸; á„ᅨᆿ; ) HANGUL SYLLABLE JJYEK
+CAB9;CAB9;110D 1168 11C0;CAB9;110D 1168 11C0; # (쪹; 쪹; á„ᅨᇀ; 쪹; á„ᅨᇀ; ) HANGUL SYLLABLE JJYET
+CABA;CABA;110D 1168 11C1;CABA;110D 1168 11C1; # (쪺; 쪺; á„á…¨á‡; 쪺; á„á…¨á‡; ) HANGUL SYLLABLE JJYEP
+CABB;CABB;110D 1168 11C2;CABB;110D 1168 11C2; # (쪻; 쪻; á„ᅨᇂ; 쪻; á„ᅨᇂ; ) HANGUL SYLLABLE JJYEH
+CABC;CABC;110D 1169;CABC;110D 1169; # (쪼; 쪼; á„á…©; 쪼; á„á…©; ) HANGUL SYLLABLE JJO
+CABD;CABD;110D 1169 11A8;CABD;110D 1169 11A8; # (쪽; 쪽; á„ᅩᆨ; 쪽; á„ᅩᆨ; ) HANGUL SYLLABLE JJOG
+CABE;CABE;110D 1169 11A9;CABE;110D 1169 11A9; # (쪾; 쪾; á„ᅩᆩ; 쪾; á„ᅩᆩ; ) HANGUL SYLLABLE JJOGG
+CABF;CABF;110D 1169 11AA;CABF;110D 1169 11AA; # (쪿; 쪿; á„ᅩᆪ; 쪿; á„ᅩᆪ; ) HANGUL SYLLABLE JJOGS
+CAC0;CAC0;110D 1169 11AB;CAC0;110D 1169 11AB; # (ì«€; ì«€; á„ᅩᆫ; ì«€; á„ᅩᆫ; ) HANGUL SYLLABLE JJON
+CAC1;CAC1;110D 1169 11AC;CAC1;110D 1169 11AC; # (ì«; ì«; á„ᅩᆬ; ì«; á„ᅩᆬ; ) HANGUL SYLLABLE JJONJ
+CAC2;CAC2;110D 1169 11AD;CAC2;110D 1169 11AD; # (ì«‚; ì«‚; á„ᅩᆭ; ì«‚; á„ᅩᆭ; ) HANGUL SYLLABLE JJONH
+CAC3;CAC3;110D 1169 11AE;CAC3;110D 1169 11AE; # (쫃; 쫃; á„ᅩᆮ; 쫃; á„ᅩᆮ; ) HANGUL SYLLABLE JJOD
+CAC4;CAC4;110D 1169 11AF;CAC4;110D 1169 11AF; # (ì«„; ì«„; á„ᅩᆯ; ì«„; á„ᅩᆯ; ) HANGUL SYLLABLE JJOL
+CAC5;CAC5;110D 1169 11B0;CAC5;110D 1169 11B0; # (ì«…; ì«…; á„ᅩᆰ; ì«…; á„ᅩᆰ; ) HANGUL SYLLABLE JJOLG
+CAC6;CAC6;110D 1169 11B1;CAC6;110D 1169 11B1; # (쫆; 쫆; á„ᅩᆱ; 쫆; á„ᅩᆱ; ) HANGUL SYLLABLE JJOLM
+CAC7;CAC7;110D 1169 11B2;CAC7;110D 1169 11B2; # (쫇; 쫇; á„ᅩᆲ; 쫇; á„ᅩᆲ; ) HANGUL SYLLABLE JJOLB
+CAC8;CAC8;110D 1169 11B3;CAC8;110D 1169 11B3; # (쫈; 쫈; á„ᅩᆳ; 쫈; á„ᅩᆳ; ) HANGUL SYLLABLE JJOLS
+CAC9;CAC9;110D 1169 11B4;CAC9;110D 1169 11B4; # (쫉; 쫉; á„ᅩᆴ; 쫉; á„ᅩᆴ; ) HANGUL SYLLABLE JJOLT
+CACA;CACA;110D 1169 11B5;CACA;110D 1169 11B5; # (ì«Š; ì«Š; á„ᅩᆵ; ì«Š; á„ᅩᆵ; ) HANGUL SYLLABLE JJOLP
+CACB;CACB;110D 1169 11B6;CACB;110D 1169 11B6; # (ì«‹; ì«‹; á„ᅩᆶ; ì«‹; á„ᅩᆶ; ) HANGUL SYLLABLE JJOLH
+CACC;CACC;110D 1169 11B7;CACC;110D 1169 11B7; # (ì«Œ; ì«Œ; á„ᅩᆷ; ì«Œ; á„ᅩᆷ; ) HANGUL SYLLABLE JJOM
+CACD;CACD;110D 1169 11B8;CACD;110D 1169 11B8; # (ì«; ì«; á„ᅩᆸ; ì«; á„ᅩᆸ; ) HANGUL SYLLABLE JJOB
+CACE;CACE;110D 1169 11B9;CACE;110D 1169 11B9; # (ì«Ž; ì«Ž; á„ᅩᆹ; ì«Ž; á„ᅩᆹ; ) HANGUL SYLLABLE JJOBS
+CACF;CACF;110D 1169 11BA;CACF;110D 1169 11BA; # (ì«; ì«; á„ᅩᆺ; ì«; á„ᅩᆺ; ) HANGUL SYLLABLE JJOS
+CAD0;CAD0;110D 1169 11BB;CAD0;110D 1169 11BB; # (ì«; ì«; á„ᅩᆻ; ì«; á„ᅩᆻ; ) HANGUL SYLLABLE JJOSS
+CAD1;CAD1;110D 1169 11BC;CAD1;110D 1169 11BC; # (ì«‘; ì«‘; á„ᅩᆼ; ì«‘; á„ᅩᆼ; ) HANGUL SYLLABLE JJONG
+CAD2;CAD2;110D 1169 11BD;CAD2;110D 1169 11BD; # (ì«’; ì«’; á„ᅩᆽ; ì«’; á„ᅩᆽ; ) HANGUL SYLLABLE JJOJ
+CAD3;CAD3;110D 1169 11BE;CAD3;110D 1169 11BE; # (ì«“; ì«“; á„ᅩᆾ; ì«“; á„ᅩᆾ; ) HANGUL SYLLABLE JJOC
+CAD4;CAD4;110D 1169 11BF;CAD4;110D 1169 11BF; # (ì«”; ì«”; á„ᅩᆿ; ì«”; á„ᅩᆿ; ) HANGUL SYLLABLE JJOK
+CAD5;CAD5;110D 1169 11C0;CAD5;110D 1169 11C0; # (ì«•; ì«•; á„ᅩᇀ; ì«•; á„ᅩᇀ; ) HANGUL SYLLABLE JJOT
+CAD6;CAD6;110D 1169 11C1;CAD6;110D 1169 11C1; # (ì«–; ì«–; á„á…©á‡; ì«–; á„á…©á‡; ) HANGUL SYLLABLE JJOP
+CAD7;CAD7;110D 1169 11C2;CAD7;110D 1169 11C2; # (ì«—; ì«—; á„ᅩᇂ; ì«—; á„ᅩᇂ; ) HANGUL SYLLABLE JJOH
+CAD8;CAD8;110D 116A;CAD8;110D 116A; # (쫘; 쫘; á„á…ª; 쫘; á„á…ª; ) HANGUL SYLLABLE JJWA
+CAD9;CAD9;110D 116A 11A8;CAD9;110D 116A 11A8; # (ì«™; ì«™; á„ᅪᆨ; ì«™; á„ᅪᆨ; ) HANGUL SYLLABLE JJWAG
+CADA;CADA;110D 116A 11A9;CADA;110D 116A 11A9; # (ì«š; ì«š; á„ᅪᆩ; ì«š; á„ᅪᆩ; ) HANGUL SYLLABLE JJWAGG
+CADB;CADB;110D 116A 11AA;CADB;110D 116A 11AA; # (ì«›; ì«›; á„ᅪᆪ; ì«›; á„ᅪᆪ; ) HANGUL SYLLABLE JJWAGS
+CADC;CADC;110D 116A 11AB;CADC;110D 116A 11AB; # (ì«œ; ì«œ; á„ᅪᆫ; ì«œ; á„ᅪᆫ; ) HANGUL SYLLABLE JJWAN
+CADD;CADD;110D 116A 11AC;CADD;110D 116A 11AC; # (ì«; ì«; á„ᅪᆬ; ì«; á„ᅪᆬ; ) HANGUL SYLLABLE JJWANJ
+CADE;CADE;110D 116A 11AD;CADE;110D 116A 11AD; # (ì«ž; ì«ž; á„ᅪᆭ; ì«ž; á„ᅪᆭ; ) HANGUL SYLLABLE JJWANH
+CADF;CADF;110D 116A 11AE;CADF;110D 116A 11AE; # (ì«Ÿ; ì«Ÿ; á„ᅪᆮ; ì«Ÿ; á„ᅪᆮ; ) HANGUL SYLLABLE JJWAD
+CAE0;CAE0;110D 116A 11AF;CAE0;110D 116A 11AF; # (ì« ; ì« ; á„ᅪᆯ; ì« ; á„ᅪᆯ; ) HANGUL SYLLABLE JJWAL
+CAE1;CAE1;110D 116A 11B0;CAE1;110D 116A 11B0; # (ì«¡; ì«¡; á„ᅪᆰ; ì«¡; á„ᅪᆰ; ) HANGUL SYLLABLE JJWALG
+CAE2;CAE2;110D 116A 11B1;CAE2;110D 116A 11B1; # (ì«¢; ì«¢; á„ᅪᆱ; ì«¢; á„ᅪᆱ; ) HANGUL SYLLABLE JJWALM
+CAE3;CAE3;110D 116A 11B2;CAE3;110D 116A 11B2; # (ì«£; ì«£; á„ᅪᆲ; ì«£; á„ᅪᆲ; ) HANGUL SYLLABLE JJWALB
+CAE4;CAE4;110D 116A 11B3;CAE4;110D 116A 11B3; # (쫤; 쫤; á„ᅪᆳ; 쫤; á„ᅪᆳ; ) HANGUL SYLLABLE JJWALS
+CAE5;CAE5;110D 116A 11B4;CAE5;110D 116A 11B4; # (ì«¥; ì«¥; á„ᅪᆴ; ì«¥; á„ᅪᆴ; ) HANGUL SYLLABLE JJWALT
+CAE6;CAE6;110D 116A 11B5;CAE6;110D 116A 11B5; # (쫦; 쫦; á„ᅪᆵ; 쫦; á„ᅪᆵ; ) HANGUL SYLLABLE JJWALP
+CAE7;CAE7;110D 116A 11B6;CAE7;110D 116A 11B6; # (쫧; 쫧; á„ᅪᆶ; 쫧; á„ᅪᆶ; ) HANGUL SYLLABLE JJWALH
+CAE8;CAE8;110D 116A 11B7;CAE8;110D 116A 11B7; # (쫨; 쫨; á„ᅪᆷ; 쫨; á„ᅪᆷ; ) HANGUL SYLLABLE JJWAM
+CAE9;CAE9;110D 116A 11B8;CAE9;110D 116A 11B8; # (ì«©; ì«©; á„ᅪᆸ; ì«©; á„ᅪᆸ; ) HANGUL SYLLABLE JJWAB
+CAEA;CAEA;110D 116A 11B9;CAEA;110D 116A 11B9; # (쫪; 쫪; á„ᅪᆹ; 쫪; á„ᅪᆹ; ) HANGUL SYLLABLE JJWABS
+CAEB;CAEB;110D 116A 11BA;CAEB;110D 116A 11BA; # (ì««; ì««; á„ᅪᆺ; ì««; á„ᅪᆺ; ) HANGUL SYLLABLE JJWAS
+CAEC;CAEC;110D 116A 11BB;CAEC;110D 116A 11BB; # (쫬; 쫬; á„ᅪᆻ; 쫬; á„ᅪᆻ; ) HANGUL SYLLABLE JJWASS
+CAED;CAED;110D 116A 11BC;CAED;110D 116A 11BC; # (ì«­; ì«­; á„ᅪᆼ; ì«­; á„ᅪᆼ; ) HANGUL SYLLABLE JJWANG
+CAEE;CAEE;110D 116A 11BD;CAEE;110D 116A 11BD; # (ì«®; ì«®; á„ᅪᆽ; ì«®; á„ᅪᆽ; ) HANGUL SYLLABLE JJWAJ
+CAEF;CAEF;110D 116A 11BE;CAEF;110D 116A 11BE; # (쫯; 쫯; á„ᅪᆾ; 쫯; á„ᅪᆾ; ) HANGUL SYLLABLE JJWAC
+CAF0;CAF0;110D 116A 11BF;CAF0;110D 116A 11BF; # (ì«°; ì«°; á„ᅪᆿ; ì«°; á„ᅪᆿ; ) HANGUL SYLLABLE JJWAK
+CAF1;CAF1;110D 116A 11C0;CAF1;110D 116A 11C0; # (쫱; 쫱; á„ᅪᇀ; 쫱; á„ᅪᇀ; ) HANGUL SYLLABLE JJWAT
+CAF2;CAF2;110D 116A 11C1;CAF2;110D 116A 11C1; # (쫲; 쫲; á„á…ªá‡; 쫲; á„á…ªá‡; ) HANGUL SYLLABLE JJWAP
+CAF3;CAF3;110D 116A 11C2;CAF3;110D 116A 11C2; # (쫳; 쫳; á„ᅪᇂ; 쫳; á„ᅪᇂ; ) HANGUL SYLLABLE JJWAH
+CAF4;CAF4;110D 116B;CAF4;110D 116B; # (ì«´; ì«´; á„á…«; ì«´; á„á…«; ) HANGUL SYLLABLE JJWAE
+CAF5;CAF5;110D 116B 11A8;CAF5;110D 116B 11A8; # (쫵; 쫵; á„ᅫᆨ; 쫵; á„ᅫᆨ; ) HANGUL SYLLABLE JJWAEG
+CAF6;CAF6;110D 116B 11A9;CAF6;110D 116B 11A9; # (쫶; 쫶; á„ᅫᆩ; 쫶; á„ᅫᆩ; ) HANGUL SYLLABLE JJWAEGG
+CAF7;CAF7;110D 116B 11AA;CAF7;110D 116B 11AA; # (ì«·; ì«·; á„ᅫᆪ; ì«·; á„ᅫᆪ; ) HANGUL SYLLABLE JJWAEGS
+CAF8;CAF8;110D 116B 11AB;CAF8;110D 116B 11AB; # (쫸; 쫸; á„ᅫᆫ; 쫸; á„ᅫᆫ; ) HANGUL SYLLABLE JJWAEN
+CAF9;CAF9;110D 116B 11AC;CAF9;110D 116B 11AC; # (쫹; 쫹; á„ᅫᆬ; 쫹; á„ᅫᆬ; ) HANGUL SYLLABLE JJWAENJ
+CAFA;CAFA;110D 116B 11AD;CAFA;110D 116B 11AD; # (쫺; 쫺; á„ᅫᆭ; 쫺; á„ᅫᆭ; ) HANGUL SYLLABLE JJWAENH
+CAFB;CAFB;110D 116B 11AE;CAFB;110D 116B 11AE; # (ì«»; ì«»; á„ᅫᆮ; ì«»; á„ᅫᆮ; ) HANGUL SYLLABLE JJWAED
+CAFC;CAFC;110D 116B 11AF;CAFC;110D 116B 11AF; # (쫼; 쫼; á„ᅫᆯ; 쫼; á„ᅫᆯ; ) HANGUL SYLLABLE JJWAEL
+CAFD;CAFD;110D 116B 11B0;CAFD;110D 116B 11B0; # (쫽; 쫽; á„ᅫᆰ; 쫽; á„ᅫᆰ; ) HANGUL SYLLABLE JJWAELG
+CAFE;CAFE;110D 116B 11B1;CAFE;110D 116B 11B1; # (쫾; 쫾; á„ᅫᆱ; 쫾; á„ᅫᆱ; ) HANGUL SYLLABLE JJWAELM
+CAFF;CAFF;110D 116B 11B2;CAFF;110D 116B 11B2; # (ì«¿; ì«¿; á„ᅫᆲ; ì«¿; á„ᅫᆲ; ) HANGUL SYLLABLE JJWAELB
+CB00;CB00;110D 116B 11B3;CB00;110D 116B 11B3; # (쬀; 쬀; á„ᅫᆳ; 쬀; á„ᅫᆳ; ) HANGUL SYLLABLE JJWAELS
+CB01;CB01;110D 116B 11B4;CB01;110D 116B 11B4; # (ì¬; ì¬; á„ᅫᆴ; ì¬; á„ᅫᆴ; ) HANGUL SYLLABLE JJWAELT
+CB02;CB02;110D 116B 11B5;CB02;110D 116B 11B5; # (쬂; 쬂; á„ᅫᆵ; 쬂; á„ᅫᆵ; ) HANGUL SYLLABLE JJWAELP
+CB03;CB03;110D 116B 11B6;CB03;110D 116B 11B6; # (쬃; 쬃; á„ᅫᆶ; 쬃; á„ᅫᆶ; ) HANGUL SYLLABLE JJWAELH
+CB04;CB04;110D 116B 11B7;CB04;110D 116B 11B7; # (쬄; 쬄; á„ᅫᆷ; 쬄; á„ᅫᆷ; ) HANGUL SYLLABLE JJWAEM
+CB05;CB05;110D 116B 11B8;CB05;110D 116B 11B8; # (쬅; 쬅; á„ᅫᆸ; 쬅; á„ᅫᆸ; ) HANGUL SYLLABLE JJWAEB
+CB06;CB06;110D 116B 11B9;CB06;110D 116B 11B9; # (쬆; 쬆; á„ᅫᆹ; 쬆; á„ᅫᆹ; ) HANGUL SYLLABLE JJWAEBS
+CB07;CB07;110D 116B 11BA;CB07;110D 116B 11BA; # (쬇; 쬇; á„ᅫᆺ; 쬇; á„ᅫᆺ; ) HANGUL SYLLABLE JJWAES
+CB08;CB08;110D 116B 11BB;CB08;110D 116B 11BB; # (쬈; 쬈; á„ᅫᆻ; 쬈; á„ᅫᆻ; ) HANGUL SYLLABLE JJWAESS
+CB09;CB09;110D 116B 11BC;CB09;110D 116B 11BC; # (쬉; 쬉; á„ᅫᆼ; 쬉; á„ᅫᆼ; ) HANGUL SYLLABLE JJWAENG
+CB0A;CB0A;110D 116B 11BD;CB0A;110D 116B 11BD; # (쬊; 쬊; á„ᅫᆽ; 쬊; á„ᅫᆽ; ) HANGUL SYLLABLE JJWAEJ
+CB0B;CB0B;110D 116B 11BE;CB0B;110D 116B 11BE; # (쬋; 쬋; á„ᅫᆾ; 쬋; á„ᅫᆾ; ) HANGUL SYLLABLE JJWAEC
+CB0C;CB0C;110D 116B 11BF;CB0C;110D 116B 11BF; # (쬌; 쬌; á„ᅫᆿ; 쬌; á„ᅫᆿ; ) HANGUL SYLLABLE JJWAEK
+CB0D;CB0D;110D 116B 11C0;CB0D;110D 116B 11C0; # (ì¬; ì¬; á„ᅫᇀ; ì¬; á„ᅫᇀ; ) HANGUL SYLLABLE JJWAET
+CB0E;CB0E;110D 116B 11C1;CB0E;110D 116B 11C1; # (쬎; 쬎; á„á…«á‡; 쬎; á„á…«á‡; ) HANGUL SYLLABLE JJWAEP
+CB0F;CB0F;110D 116B 11C2;CB0F;110D 116B 11C2; # (ì¬; ì¬; á„ᅫᇂ; ì¬; á„ᅫᇂ; ) HANGUL SYLLABLE JJWAEH
+CB10;CB10;110D 116C;CB10;110D 116C; # (ì¬; ì¬; á„á…¬; ì¬; á„á…¬; ) HANGUL SYLLABLE JJOE
+CB11;CB11;110D 116C 11A8;CB11;110D 116C 11A8; # (쬑; 쬑; á„ᅬᆨ; 쬑; á„ᅬᆨ; ) HANGUL SYLLABLE JJOEG
+CB12;CB12;110D 116C 11A9;CB12;110D 116C 11A9; # (쬒; 쬒; á„ᅬᆩ; 쬒; á„ᅬᆩ; ) HANGUL SYLLABLE JJOEGG
+CB13;CB13;110D 116C 11AA;CB13;110D 116C 11AA; # (쬓; 쬓; á„ᅬᆪ; 쬓; á„ᅬᆪ; ) HANGUL SYLLABLE JJOEGS
+CB14;CB14;110D 116C 11AB;CB14;110D 116C 11AB; # (쬔; 쬔; á„ᅬᆫ; 쬔; á„ᅬᆫ; ) HANGUL SYLLABLE JJOEN
+CB15;CB15;110D 116C 11AC;CB15;110D 116C 11AC; # (쬕; 쬕; á„ᅬᆬ; 쬕; á„ᅬᆬ; ) HANGUL SYLLABLE JJOENJ
+CB16;CB16;110D 116C 11AD;CB16;110D 116C 11AD; # (쬖; 쬖; á„ᅬᆭ; 쬖; á„ᅬᆭ; ) HANGUL SYLLABLE JJOENH
+CB17;CB17;110D 116C 11AE;CB17;110D 116C 11AE; # (쬗; 쬗; á„ᅬᆮ; 쬗; á„ᅬᆮ; ) HANGUL SYLLABLE JJOED
+CB18;CB18;110D 116C 11AF;CB18;110D 116C 11AF; # (쬘; 쬘; á„ᅬᆯ; 쬘; á„ᅬᆯ; ) HANGUL SYLLABLE JJOEL
+CB19;CB19;110D 116C 11B0;CB19;110D 116C 11B0; # (쬙; 쬙; á„ᅬᆰ; 쬙; á„ᅬᆰ; ) HANGUL SYLLABLE JJOELG
+CB1A;CB1A;110D 116C 11B1;CB1A;110D 116C 11B1; # (쬚; 쬚; á„ᅬᆱ; 쬚; á„ᅬᆱ; ) HANGUL SYLLABLE JJOELM
+CB1B;CB1B;110D 116C 11B2;CB1B;110D 116C 11B2; # (쬛; 쬛; á„ᅬᆲ; 쬛; á„ᅬᆲ; ) HANGUL SYLLABLE JJOELB
+CB1C;CB1C;110D 116C 11B3;CB1C;110D 116C 11B3; # (쬜; 쬜; á„ᅬᆳ; 쬜; á„ᅬᆳ; ) HANGUL SYLLABLE JJOELS
+CB1D;CB1D;110D 116C 11B4;CB1D;110D 116C 11B4; # (ì¬; ì¬; á„ᅬᆴ; ì¬; á„ᅬᆴ; ) HANGUL SYLLABLE JJOELT
+CB1E;CB1E;110D 116C 11B5;CB1E;110D 116C 11B5; # (쬞; 쬞; á„ᅬᆵ; 쬞; á„ᅬᆵ; ) HANGUL SYLLABLE JJOELP
+CB1F;CB1F;110D 116C 11B6;CB1F;110D 116C 11B6; # (쬟; 쬟; á„ᅬᆶ; 쬟; á„ᅬᆶ; ) HANGUL SYLLABLE JJOELH
+CB20;CB20;110D 116C 11B7;CB20;110D 116C 11B7; # (쬠; 쬠; á„ᅬᆷ; 쬠; á„ᅬᆷ; ) HANGUL SYLLABLE JJOEM
+CB21;CB21;110D 116C 11B8;CB21;110D 116C 11B8; # (쬡; 쬡; á„ᅬᆸ; 쬡; á„ᅬᆸ; ) HANGUL SYLLABLE JJOEB
+CB22;CB22;110D 116C 11B9;CB22;110D 116C 11B9; # (쬢; 쬢; á„ᅬᆹ; 쬢; á„ᅬᆹ; ) HANGUL SYLLABLE JJOEBS
+CB23;CB23;110D 116C 11BA;CB23;110D 116C 11BA; # (쬣; 쬣; á„ᅬᆺ; 쬣; á„ᅬᆺ; ) HANGUL SYLLABLE JJOES
+CB24;CB24;110D 116C 11BB;CB24;110D 116C 11BB; # (쬤; 쬤; á„ᅬᆻ; 쬤; á„ᅬᆻ; ) HANGUL SYLLABLE JJOESS
+CB25;CB25;110D 116C 11BC;CB25;110D 116C 11BC; # (쬥; 쬥; á„ᅬᆼ; 쬥; á„ᅬᆼ; ) HANGUL SYLLABLE JJOENG
+CB26;CB26;110D 116C 11BD;CB26;110D 116C 11BD; # (쬦; 쬦; á„ᅬᆽ; 쬦; á„ᅬᆽ; ) HANGUL SYLLABLE JJOEJ
+CB27;CB27;110D 116C 11BE;CB27;110D 116C 11BE; # (쬧; 쬧; á„ᅬᆾ; 쬧; á„ᅬᆾ; ) HANGUL SYLLABLE JJOEC
+CB28;CB28;110D 116C 11BF;CB28;110D 116C 11BF; # (쬨; 쬨; á„ᅬᆿ; 쬨; á„ᅬᆿ; ) HANGUL SYLLABLE JJOEK
+CB29;CB29;110D 116C 11C0;CB29;110D 116C 11C0; # (쬩; 쬩; á„ᅬᇀ; 쬩; á„ᅬᇀ; ) HANGUL SYLLABLE JJOET
+CB2A;CB2A;110D 116C 11C1;CB2A;110D 116C 11C1; # (쬪; 쬪; á„á…¬á‡; 쬪; á„á…¬á‡; ) HANGUL SYLLABLE JJOEP
+CB2B;CB2B;110D 116C 11C2;CB2B;110D 116C 11C2; # (쬫; 쬫; á„ᅬᇂ; 쬫; á„ᅬᇂ; ) HANGUL SYLLABLE JJOEH
+CB2C;CB2C;110D 116D;CB2C;110D 116D; # (쬬; 쬬; á„á…­; 쬬; á„á…­; ) HANGUL SYLLABLE JJYO
+CB2D;CB2D;110D 116D 11A8;CB2D;110D 116D 11A8; # (쬭; 쬭; á„ᅭᆨ; 쬭; á„ᅭᆨ; ) HANGUL SYLLABLE JJYOG
+CB2E;CB2E;110D 116D 11A9;CB2E;110D 116D 11A9; # (쬮; 쬮; á„ᅭᆩ; 쬮; á„ᅭᆩ; ) HANGUL SYLLABLE JJYOGG
+CB2F;CB2F;110D 116D 11AA;CB2F;110D 116D 11AA; # (쬯; 쬯; á„ᅭᆪ; 쬯; á„ᅭᆪ; ) HANGUL SYLLABLE JJYOGS
+CB30;CB30;110D 116D 11AB;CB30;110D 116D 11AB; # (쬰; 쬰; á„ᅭᆫ; 쬰; á„ᅭᆫ; ) HANGUL SYLLABLE JJYON
+CB31;CB31;110D 116D 11AC;CB31;110D 116D 11AC; # (쬱; 쬱; á„ᅭᆬ; 쬱; á„ᅭᆬ; ) HANGUL SYLLABLE JJYONJ
+CB32;CB32;110D 116D 11AD;CB32;110D 116D 11AD; # (쬲; 쬲; á„ᅭᆭ; 쬲; á„ᅭᆭ; ) HANGUL SYLLABLE JJYONH
+CB33;CB33;110D 116D 11AE;CB33;110D 116D 11AE; # (쬳; 쬳; á„ᅭᆮ; 쬳; á„ᅭᆮ; ) HANGUL SYLLABLE JJYOD
+CB34;CB34;110D 116D 11AF;CB34;110D 116D 11AF; # (쬴; 쬴; á„ᅭᆯ; 쬴; á„ᅭᆯ; ) HANGUL SYLLABLE JJYOL
+CB35;CB35;110D 116D 11B0;CB35;110D 116D 11B0; # (쬵; 쬵; á„ᅭᆰ; 쬵; á„ᅭᆰ; ) HANGUL SYLLABLE JJYOLG
+CB36;CB36;110D 116D 11B1;CB36;110D 116D 11B1; # (쬶; 쬶; á„ᅭᆱ; 쬶; á„ᅭᆱ; ) HANGUL SYLLABLE JJYOLM
+CB37;CB37;110D 116D 11B2;CB37;110D 116D 11B2; # (쬷; 쬷; á„ᅭᆲ; 쬷; á„ᅭᆲ; ) HANGUL SYLLABLE JJYOLB
+CB38;CB38;110D 116D 11B3;CB38;110D 116D 11B3; # (쬸; 쬸; á„ᅭᆳ; 쬸; á„ᅭᆳ; ) HANGUL SYLLABLE JJYOLS
+CB39;CB39;110D 116D 11B4;CB39;110D 116D 11B4; # (쬹; 쬹; á„ᅭᆴ; 쬹; á„ᅭᆴ; ) HANGUL SYLLABLE JJYOLT
+CB3A;CB3A;110D 116D 11B5;CB3A;110D 116D 11B5; # (쬺; 쬺; á„ᅭᆵ; 쬺; á„ᅭᆵ; ) HANGUL SYLLABLE JJYOLP
+CB3B;CB3B;110D 116D 11B6;CB3B;110D 116D 11B6; # (쬻; 쬻; á„ᅭᆶ; 쬻; á„ᅭᆶ; ) HANGUL SYLLABLE JJYOLH
+CB3C;CB3C;110D 116D 11B7;CB3C;110D 116D 11B7; # (쬼; 쬼; á„ᅭᆷ; 쬼; á„ᅭᆷ; ) HANGUL SYLLABLE JJYOM
+CB3D;CB3D;110D 116D 11B8;CB3D;110D 116D 11B8; # (쬽; 쬽; á„ᅭᆸ; 쬽; á„ᅭᆸ; ) HANGUL SYLLABLE JJYOB
+CB3E;CB3E;110D 116D 11B9;CB3E;110D 116D 11B9; # (쬾; 쬾; á„ᅭᆹ; 쬾; á„ᅭᆹ; ) HANGUL SYLLABLE JJYOBS
+CB3F;CB3F;110D 116D 11BA;CB3F;110D 116D 11BA; # (쬿; 쬿; á„ᅭᆺ; 쬿; á„ᅭᆺ; ) HANGUL SYLLABLE JJYOS
+CB40;CB40;110D 116D 11BB;CB40;110D 116D 11BB; # (ì­€; ì­€; á„ᅭᆻ; ì­€; á„ᅭᆻ; ) HANGUL SYLLABLE JJYOSS
+CB41;CB41;110D 116D 11BC;CB41;110D 116D 11BC; # (ì­; ì­; á„ᅭᆼ; ì­; á„ᅭᆼ; ) HANGUL SYLLABLE JJYONG
+CB42;CB42;110D 116D 11BD;CB42;110D 116D 11BD; # (ì­‚; ì­‚; á„ᅭᆽ; ì­‚; á„ᅭᆽ; ) HANGUL SYLLABLE JJYOJ
+CB43;CB43;110D 116D 11BE;CB43;110D 116D 11BE; # (ì­ƒ; ì­ƒ; á„ᅭᆾ; ì­ƒ; á„ᅭᆾ; ) HANGUL SYLLABLE JJYOC
+CB44;CB44;110D 116D 11BF;CB44;110D 116D 11BF; # (ì­„; ì­„; á„ᅭᆿ; ì­„; á„ᅭᆿ; ) HANGUL SYLLABLE JJYOK
+CB45;CB45;110D 116D 11C0;CB45;110D 116D 11C0; # (ì­…; ì­…; á„ᅭᇀ; ì­…; á„ᅭᇀ; ) HANGUL SYLLABLE JJYOT
+CB46;CB46;110D 116D 11C1;CB46;110D 116D 11C1; # (ì­†; ì­†; á„á…­á‡; ì­†; á„á…­á‡; ) HANGUL SYLLABLE JJYOP
+CB47;CB47;110D 116D 11C2;CB47;110D 116D 11C2; # (ì­‡; ì­‡; á„ᅭᇂ; ì­‡; á„ᅭᇂ; ) HANGUL SYLLABLE JJYOH
+CB48;CB48;110D 116E;CB48;110D 116E; # (ì­ˆ; ì­ˆ; á„á…®; ì­ˆ; á„á…®; ) HANGUL SYLLABLE JJU
+CB49;CB49;110D 116E 11A8;CB49;110D 116E 11A8; # (ì­‰; ì­‰; á„ᅮᆨ; ì­‰; á„ᅮᆨ; ) HANGUL SYLLABLE JJUG
+CB4A;CB4A;110D 116E 11A9;CB4A;110D 116E 11A9; # (ì­Š; ì­Š; á„ᅮᆩ; ì­Š; á„ᅮᆩ; ) HANGUL SYLLABLE JJUGG
+CB4B;CB4B;110D 116E 11AA;CB4B;110D 116E 11AA; # (ì­‹; ì­‹; á„ᅮᆪ; ì­‹; á„ᅮᆪ; ) HANGUL SYLLABLE JJUGS
+CB4C;CB4C;110D 116E 11AB;CB4C;110D 116E 11AB; # (ì­Œ; ì­Œ; á„ᅮᆫ; ì­Œ; á„ᅮᆫ; ) HANGUL SYLLABLE JJUN
+CB4D;CB4D;110D 116E 11AC;CB4D;110D 116E 11AC; # (ì­; ì­; á„ᅮᆬ; ì­; á„ᅮᆬ; ) HANGUL SYLLABLE JJUNJ
+CB4E;CB4E;110D 116E 11AD;CB4E;110D 116E 11AD; # (ì­Ž; ì­Ž; á„ᅮᆭ; ì­Ž; á„ᅮᆭ; ) HANGUL SYLLABLE JJUNH
+CB4F;CB4F;110D 116E 11AE;CB4F;110D 116E 11AE; # (ì­; ì­; á„ᅮᆮ; ì­; á„ᅮᆮ; ) HANGUL SYLLABLE JJUD
+CB50;CB50;110D 116E 11AF;CB50;110D 116E 11AF; # (ì­; ì­; á„ᅮᆯ; ì­; á„ᅮᆯ; ) HANGUL SYLLABLE JJUL
+CB51;CB51;110D 116E 11B0;CB51;110D 116E 11B0; # (ì­‘; ì­‘; á„ᅮᆰ; ì­‘; á„ᅮᆰ; ) HANGUL SYLLABLE JJULG
+CB52;CB52;110D 116E 11B1;CB52;110D 116E 11B1; # (ì­’; ì­’; á„ᅮᆱ; ì­’; á„ᅮᆱ; ) HANGUL SYLLABLE JJULM
+CB53;CB53;110D 116E 11B2;CB53;110D 116E 11B2; # (ì­“; ì­“; á„ᅮᆲ; ì­“; á„ᅮᆲ; ) HANGUL SYLLABLE JJULB
+CB54;CB54;110D 116E 11B3;CB54;110D 116E 11B3; # (ì­”; ì­”; á„ᅮᆳ; ì­”; á„ᅮᆳ; ) HANGUL SYLLABLE JJULS
+CB55;CB55;110D 116E 11B4;CB55;110D 116E 11B4; # (ì­•; ì­•; á„ᅮᆴ; ì­•; á„ᅮᆴ; ) HANGUL SYLLABLE JJULT
+CB56;CB56;110D 116E 11B5;CB56;110D 116E 11B5; # (ì­–; ì­–; á„ᅮᆵ; ì­–; á„ᅮᆵ; ) HANGUL SYLLABLE JJULP
+CB57;CB57;110D 116E 11B6;CB57;110D 116E 11B6; # (ì­—; ì­—; á„ᅮᆶ; ì­—; á„ᅮᆶ; ) HANGUL SYLLABLE JJULH
+CB58;CB58;110D 116E 11B7;CB58;110D 116E 11B7; # (ì­˜; ì­˜; á„ᅮᆷ; ì­˜; á„ᅮᆷ; ) HANGUL SYLLABLE JJUM
+CB59;CB59;110D 116E 11B8;CB59;110D 116E 11B8; # (ì­™; ì­™; á„ᅮᆸ; ì­™; á„ᅮᆸ; ) HANGUL SYLLABLE JJUB
+CB5A;CB5A;110D 116E 11B9;CB5A;110D 116E 11B9; # (ì­š; ì­š; á„ᅮᆹ; ì­š; á„ᅮᆹ; ) HANGUL SYLLABLE JJUBS
+CB5B;CB5B;110D 116E 11BA;CB5B;110D 116E 11BA; # (ì­›; ì­›; á„ᅮᆺ; ì­›; á„ᅮᆺ; ) HANGUL SYLLABLE JJUS
+CB5C;CB5C;110D 116E 11BB;CB5C;110D 116E 11BB; # (ì­œ; ì­œ; á„ᅮᆻ; ì­œ; á„ᅮᆻ; ) HANGUL SYLLABLE JJUSS
+CB5D;CB5D;110D 116E 11BC;CB5D;110D 116E 11BC; # (ì­; ì­; á„ᅮᆼ; ì­; á„ᅮᆼ; ) HANGUL SYLLABLE JJUNG
+CB5E;CB5E;110D 116E 11BD;CB5E;110D 116E 11BD; # (ì­ž; ì­ž; á„ᅮᆽ; ì­ž; á„ᅮᆽ; ) HANGUL SYLLABLE JJUJ
+CB5F;CB5F;110D 116E 11BE;CB5F;110D 116E 11BE; # (ì­Ÿ; ì­Ÿ; á„ᅮᆾ; ì­Ÿ; á„ᅮᆾ; ) HANGUL SYLLABLE JJUC
+CB60;CB60;110D 116E 11BF;CB60;110D 116E 11BF; # (ì­ ; ì­ ; á„ᅮᆿ; ì­ ; á„ᅮᆿ; ) HANGUL SYLLABLE JJUK
+CB61;CB61;110D 116E 11C0;CB61;110D 116E 11C0; # (ì­¡; ì­¡; á„ᅮᇀ; ì­¡; á„ᅮᇀ; ) HANGUL SYLLABLE JJUT
+CB62;CB62;110D 116E 11C1;CB62;110D 116E 11C1; # (ì­¢; ì­¢; á„á…®á‡; ì­¢; á„á…®á‡; ) HANGUL SYLLABLE JJUP
+CB63;CB63;110D 116E 11C2;CB63;110D 116E 11C2; # (ì­£; ì­£; á„ᅮᇂ; ì­£; á„ᅮᇂ; ) HANGUL SYLLABLE JJUH
+CB64;CB64;110D 116F;CB64;110D 116F; # (ì­¤; ì­¤; á„á…¯; ì­¤; á„á…¯; ) HANGUL SYLLABLE JJWEO
+CB65;CB65;110D 116F 11A8;CB65;110D 116F 11A8; # (ì­¥; ì­¥; á„ᅯᆨ; ì­¥; á„ᅯᆨ; ) HANGUL SYLLABLE JJWEOG
+CB66;CB66;110D 116F 11A9;CB66;110D 116F 11A9; # (ì­¦; ì­¦; á„ᅯᆩ; ì­¦; á„ᅯᆩ; ) HANGUL SYLLABLE JJWEOGG
+CB67;CB67;110D 116F 11AA;CB67;110D 116F 11AA; # (ì­§; ì­§; á„ᅯᆪ; ì­§; á„ᅯᆪ; ) HANGUL SYLLABLE JJWEOGS
+CB68;CB68;110D 116F 11AB;CB68;110D 116F 11AB; # (ì­¨; ì­¨; á„ᅯᆫ; ì­¨; á„ᅯᆫ; ) HANGUL SYLLABLE JJWEON
+CB69;CB69;110D 116F 11AC;CB69;110D 116F 11AC; # (ì­©; ì­©; á„ᅯᆬ; ì­©; á„ᅯᆬ; ) HANGUL SYLLABLE JJWEONJ
+CB6A;CB6A;110D 116F 11AD;CB6A;110D 116F 11AD; # (ì­ª; ì­ª; á„ᅯᆭ; ì­ª; á„ᅯᆭ; ) HANGUL SYLLABLE JJWEONH
+CB6B;CB6B;110D 116F 11AE;CB6B;110D 116F 11AE; # (ì­«; ì­«; á„ᅯᆮ; ì­«; á„ᅯᆮ; ) HANGUL SYLLABLE JJWEOD
+CB6C;CB6C;110D 116F 11AF;CB6C;110D 116F 11AF; # (ì­¬; ì­¬; á„ᅯᆯ; ì­¬; á„ᅯᆯ; ) HANGUL SYLLABLE JJWEOL
+CB6D;CB6D;110D 116F 11B0;CB6D;110D 116F 11B0; # (ì­­; ì­­; á„ᅯᆰ; ì­­; á„ᅯᆰ; ) HANGUL SYLLABLE JJWEOLG
+CB6E;CB6E;110D 116F 11B1;CB6E;110D 116F 11B1; # (ì­®; ì­®; á„ᅯᆱ; ì­®; á„ᅯᆱ; ) HANGUL SYLLABLE JJWEOLM
+CB6F;CB6F;110D 116F 11B2;CB6F;110D 116F 11B2; # (ì­¯; ì­¯; á„ᅯᆲ; ì­¯; á„ᅯᆲ; ) HANGUL SYLLABLE JJWEOLB
+CB70;CB70;110D 116F 11B3;CB70;110D 116F 11B3; # (ì­°; ì­°; á„ᅯᆳ; ì­°; á„ᅯᆳ; ) HANGUL SYLLABLE JJWEOLS
+CB71;CB71;110D 116F 11B4;CB71;110D 116F 11B4; # (ì­±; ì­±; á„ᅯᆴ; ì­±; á„ᅯᆴ; ) HANGUL SYLLABLE JJWEOLT
+CB72;CB72;110D 116F 11B5;CB72;110D 116F 11B5; # (ì­²; ì­²; á„ᅯᆵ; ì­²; á„ᅯᆵ; ) HANGUL SYLLABLE JJWEOLP
+CB73;CB73;110D 116F 11B6;CB73;110D 116F 11B6; # (ì­³; ì­³; á„ᅯᆶ; ì­³; á„ᅯᆶ; ) HANGUL SYLLABLE JJWEOLH
+CB74;CB74;110D 116F 11B7;CB74;110D 116F 11B7; # (ì­´; ì­´; á„ᅯᆷ; ì­´; á„ᅯᆷ; ) HANGUL SYLLABLE JJWEOM
+CB75;CB75;110D 116F 11B8;CB75;110D 116F 11B8; # (ì­µ; ì­µ; á„ᅯᆸ; ì­µ; á„ᅯᆸ; ) HANGUL SYLLABLE JJWEOB
+CB76;CB76;110D 116F 11B9;CB76;110D 116F 11B9; # (ì­¶; ì­¶; á„ᅯᆹ; ì­¶; á„ᅯᆹ; ) HANGUL SYLLABLE JJWEOBS
+CB77;CB77;110D 116F 11BA;CB77;110D 116F 11BA; # (ì­·; ì­·; á„ᅯᆺ; ì­·; á„ᅯᆺ; ) HANGUL SYLLABLE JJWEOS
+CB78;CB78;110D 116F 11BB;CB78;110D 116F 11BB; # (ì­¸; ì­¸; á„ᅯᆻ; ì­¸; á„ᅯᆻ; ) HANGUL SYLLABLE JJWEOSS
+CB79;CB79;110D 116F 11BC;CB79;110D 116F 11BC; # (ì­¹; ì­¹; á„ᅯᆼ; ì­¹; á„ᅯᆼ; ) HANGUL SYLLABLE JJWEONG
+CB7A;CB7A;110D 116F 11BD;CB7A;110D 116F 11BD; # (ì­º; ì­º; á„ᅯᆽ; ì­º; á„ᅯᆽ; ) HANGUL SYLLABLE JJWEOJ
+CB7B;CB7B;110D 116F 11BE;CB7B;110D 116F 11BE; # (ì­»; ì­»; á„ᅯᆾ; ì­»; á„ᅯᆾ; ) HANGUL SYLLABLE JJWEOC
+CB7C;CB7C;110D 116F 11BF;CB7C;110D 116F 11BF; # (ì­¼; ì­¼; á„ᅯᆿ; ì­¼; á„ᅯᆿ; ) HANGUL SYLLABLE JJWEOK
+CB7D;CB7D;110D 116F 11C0;CB7D;110D 116F 11C0; # (ì­½; ì­½; á„ᅯᇀ; ì­½; á„ᅯᇀ; ) HANGUL SYLLABLE JJWEOT
+CB7E;CB7E;110D 116F 11C1;CB7E;110D 116F 11C1; # (ì­¾; ì­¾; á„á…¯á‡; ì­¾; á„á…¯á‡; ) HANGUL SYLLABLE JJWEOP
+CB7F;CB7F;110D 116F 11C2;CB7F;110D 116F 11C2; # (ì­¿; ì­¿; á„ᅯᇂ; ì­¿; á„ᅯᇂ; ) HANGUL SYLLABLE JJWEOH
+CB80;CB80;110D 1170;CB80;110D 1170; # (쮀; 쮀; á„á…°; 쮀; á„á…°; ) HANGUL SYLLABLE JJWE
+CB81;CB81;110D 1170 11A8;CB81;110D 1170 11A8; # (ì®; ì®; á„ᅰᆨ; ì®; á„ᅰᆨ; ) HANGUL SYLLABLE JJWEG
+CB82;CB82;110D 1170 11A9;CB82;110D 1170 11A9; # (쮂; 쮂; á„ᅰᆩ; 쮂; á„ᅰᆩ; ) HANGUL SYLLABLE JJWEGG
+CB83;CB83;110D 1170 11AA;CB83;110D 1170 11AA; # (쮃; 쮃; á„ᅰᆪ; 쮃; á„ᅰᆪ; ) HANGUL SYLLABLE JJWEGS
+CB84;CB84;110D 1170 11AB;CB84;110D 1170 11AB; # (쮄; 쮄; á„ᅰᆫ; 쮄; á„ᅰᆫ; ) HANGUL SYLLABLE JJWEN
+CB85;CB85;110D 1170 11AC;CB85;110D 1170 11AC; # (ì®…; ì®…; á„ᅰᆬ; ì®…; á„ᅰᆬ; ) HANGUL SYLLABLE JJWENJ
+CB86;CB86;110D 1170 11AD;CB86;110D 1170 11AD; # (쮆; 쮆; á„ᅰᆭ; 쮆; á„ᅰᆭ; ) HANGUL SYLLABLE JJWENH
+CB87;CB87;110D 1170 11AE;CB87;110D 1170 11AE; # (쮇; 쮇; á„ᅰᆮ; 쮇; á„ᅰᆮ; ) HANGUL SYLLABLE JJWED
+CB88;CB88;110D 1170 11AF;CB88;110D 1170 11AF; # (쮈; 쮈; á„ᅰᆯ; 쮈; á„ᅰᆯ; ) HANGUL SYLLABLE JJWEL
+CB89;CB89;110D 1170 11B0;CB89;110D 1170 11B0; # (쮉; 쮉; á„ᅰᆰ; 쮉; á„ᅰᆰ; ) HANGUL SYLLABLE JJWELG
+CB8A;CB8A;110D 1170 11B1;CB8A;110D 1170 11B1; # (쮊; 쮊; á„ᅰᆱ; 쮊; á„ᅰᆱ; ) HANGUL SYLLABLE JJWELM
+CB8B;CB8B;110D 1170 11B2;CB8B;110D 1170 11B2; # (쮋; 쮋; á„ᅰᆲ; 쮋; á„ᅰᆲ; ) HANGUL SYLLABLE JJWELB
+CB8C;CB8C;110D 1170 11B3;CB8C;110D 1170 11B3; # (쮌; 쮌; á„ᅰᆳ; 쮌; á„ᅰᆳ; ) HANGUL SYLLABLE JJWELS
+CB8D;CB8D;110D 1170 11B4;CB8D;110D 1170 11B4; # (ì®; ì®; á„ᅰᆴ; ì®; á„ᅰᆴ; ) HANGUL SYLLABLE JJWELT
+CB8E;CB8E;110D 1170 11B5;CB8E;110D 1170 11B5; # (쮎; 쮎; á„ᅰᆵ; 쮎; á„ᅰᆵ; ) HANGUL SYLLABLE JJWELP
+CB8F;CB8F;110D 1170 11B6;CB8F;110D 1170 11B6; # (ì®; ì®; á„ᅰᆶ; ì®; á„ᅰᆶ; ) HANGUL SYLLABLE JJWELH
+CB90;CB90;110D 1170 11B7;CB90;110D 1170 11B7; # (ì®; ì®; á„ᅰᆷ; ì®; á„ᅰᆷ; ) HANGUL SYLLABLE JJWEM
+CB91;CB91;110D 1170 11B8;CB91;110D 1170 11B8; # (쮑; 쮑; á„ᅰᆸ; 쮑; á„ᅰᆸ; ) HANGUL SYLLABLE JJWEB
+CB92;CB92;110D 1170 11B9;CB92;110D 1170 11B9; # (ì®’; ì®’; á„ᅰᆹ; ì®’; á„ᅰᆹ; ) HANGUL SYLLABLE JJWEBS
+CB93;CB93;110D 1170 11BA;CB93;110D 1170 11BA; # (쮓; 쮓; á„ᅰᆺ; 쮓; á„ᅰᆺ; ) HANGUL SYLLABLE JJWES
+CB94;CB94;110D 1170 11BB;CB94;110D 1170 11BB; # (ì®”; ì®”; á„ᅰᆻ; ì®”; á„ᅰᆻ; ) HANGUL SYLLABLE JJWESS
+CB95;CB95;110D 1170 11BC;CB95;110D 1170 11BC; # (쮕; 쮕; á„ᅰᆼ; 쮕; á„ᅰᆼ; ) HANGUL SYLLABLE JJWENG
+CB96;CB96;110D 1170 11BD;CB96;110D 1170 11BD; # (ì®–; ì®–; á„ᅰᆽ; ì®–; á„ᅰᆽ; ) HANGUL SYLLABLE JJWEJ
+CB97;CB97;110D 1170 11BE;CB97;110D 1170 11BE; # (ì®—; ì®—; á„ᅰᆾ; ì®—; á„ᅰᆾ; ) HANGUL SYLLABLE JJWEC
+CB98;CB98;110D 1170 11BF;CB98;110D 1170 11BF; # (쮘; 쮘; á„ᅰᆿ; 쮘; á„ᅰᆿ; ) HANGUL SYLLABLE JJWEK
+CB99;CB99;110D 1170 11C0;CB99;110D 1170 11C0; # (ì®™; ì®™; á„ᅰᇀ; ì®™; á„ᅰᇀ; ) HANGUL SYLLABLE JJWET
+CB9A;CB9A;110D 1170 11C1;CB9A;110D 1170 11C1; # (쮚; 쮚; á„á…°á‡; 쮚; á„á…°á‡; ) HANGUL SYLLABLE JJWEP
+CB9B;CB9B;110D 1170 11C2;CB9B;110D 1170 11C2; # (ì®›; ì®›; á„ᅰᇂ; ì®›; á„ᅰᇂ; ) HANGUL SYLLABLE JJWEH
+CB9C;CB9C;110D 1171;CB9C;110D 1171; # (쮜; 쮜; á„á…±; 쮜; á„á…±; ) HANGUL SYLLABLE JJWI
+CB9D;CB9D;110D 1171 11A8;CB9D;110D 1171 11A8; # (ì®; ì®; á„ᅱᆨ; ì®; á„ᅱᆨ; ) HANGUL SYLLABLE JJWIG
+CB9E;CB9E;110D 1171 11A9;CB9E;110D 1171 11A9; # (쮞; 쮞; á„ᅱᆩ; 쮞; á„ᅱᆩ; ) HANGUL SYLLABLE JJWIGG
+CB9F;CB9F;110D 1171 11AA;CB9F;110D 1171 11AA; # (쮟; 쮟; á„ᅱᆪ; 쮟; á„ᅱᆪ; ) HANGUL SYLLABLE JJWIGS
+CBA0;CBA0;110D 1171 11AB;CBA0;110D 1171 11AB; # (ì® ; ì® ; á„ᅱᆫ; ì® ; á„ᅱᆫ; ) HANGUL SYLLABLE JJWIN
+CBA1;CBA1;110D 1171 11AC;CBA1;110D 1171 11AC; # (쮡; 쮡; á„ᅱᆬ; 쮡; á„ᅱᆬ; ) HANGUL SYLLABLE JJWINJ
+CBA2;CBA2;110D 1171 11AD;CBA2;110D 1171 11AD; # (쮢; 쮢; á„ᅱᆭ; 쮢; á„ᅱᆭ; ) HANGUL SYLLABLE JJWINH
+CBA3;CBA3;110D 1171 11AE;CBA3;110D 1171 11AE; # (쮣; 쮣; á„ᅱᆮ; 쮣; á„ᅱᆮ; ) HANGUL SYLLABLE JJWID
+CBA4;CBA4;110D 1171 11AF;CBA4;110D 1171 11AF; # (쮤; 쮤; á„ᅱᆯ; 쮤; á„ᅱᆯ; ) HANGUL SYLLABLE JJWIL
+CBA5;CBA5;110D 1171 11B0;CBA5;110D 1171 11B0; # (쮥; 쮥; á„ᅱᆰ; 쮥; á„ᅱᆰ; ) HANGUL SYLLABLE JJWILG
+CBA6;CBA6;110D 1171 11B1;CBA6;110D 1171 11B1; # (쮦; 쮦; á„ᅱᆱ; 쮦; á„ᅱᆱ; ) HANGUL SYLLABLE JJWILM
+CBA7;CBA7;110D 1171 11B2;CBA7;110D 1171 11B2; # (쮧; 쮧; á„ᅱᆲ; 쮧; á„ᅱᆲ; ) HANGUL SYLLABLE JJWILB
+CBA8;CBA8;110D 1171 11B3;CBA8;110D 1171 11B3; # (쮨; 쮨; á„ᅱᆳ; 쮨; á„ᅱᆳ; ) HANGUL SYLLABLE JJWILS
+CBA9;CBA9;110D 1171 11B4;CBA9;110D 1171 11B4; # (쮩; 쮩; á„ᅱᆴ; 쮩; á„ᅱᆴ; ) HANGUL SYLLABLE JJWILT
+CBAA;CBAA;110D 1171 11B5;CBAA;110D 1171 11B5; # (쮪; 쮪; á„ᅱᆵ; 쮪; á„ᅱᆵ; ) HANGUL SYLLABLE JJWILP
+CBAB;CBAB;110D 1171 11B6;CBAB;110D 1171 11B6; # (쮫; 쮫; á„ᅱᆶ; 쮫; á„ᅱᆶ; ) HANGUL SYLLABLE JJWILH
+CBAC;CBAC;110D 1171 11B7;CBAC;110D 1171 11B7; # (쮬; 쮬; á„ᅱᆷ; 쮬; á„ᅱᆷ; ) HANGUL SYLLABLE JJWIM
+CBAD;CBAD;110D 1171 11B8;CBAD;110D 1171 11B8; # (ì®­; ì®­; á„ᅱᆸ; ì®­; á„ᅱᆸ; ) HANGUL SYLLABLE JJWIB
+CBAE;CBAE;110D 1171 11B9;CBAE;110D 1171 11B9; # (ì®®; ì®®; á„ᅱᆹ; ì®®; á„ᅱᆹ; ) HANGUL SYLLABLE JJWIBS
+CBAF;CBAF;110D 1171 11BA;CBAF;110D 1171 11BA; # (쮯; 쮯; á„ᅱᆺ; 쮯; á„ᅱᆺ; ) HANGUL SYLLABLE JJWIS
+CBB0;CBB0;110D 1171 11BB;CBB0;110D 1171 11BB; # (ì®°; ì®°; á„ᅱᆻ; ì®°; á„ᅱᆻ; ) HANGUL SYLLABLE JJWISS
+CBB1;CBB1;110D 1171 11BC;CBB1;110D 1171 11BC; # (ì®±; ì®±; á„ᅱᆼ; ì®±; á„ᅱᆼ; ) HANGUL SYLLABLE JJWING
+CBB2;CBB2;110D 1171 11BD;CBB2;110D 1171 11BD; # (쮲; 쮲; á„ᅱᆽ; 쮲; á„ᅱᆽ; ) HANGUL SYLLABLE JJWIJ
+CBB3;CBB3;110D 1171 11BE;CBB3;110D 1171 11BE; # (쮳; 쮳; á„ᅱᆾ; 쮳; á„ᅱᆾ; ) HANGUL SYLLABLE JJWIC
+CBB4;CBB4;110D 1171 11BF;CBB4;110D 1171 11BF; # (ì®´; ì®´; á„ᅱᆿ; ì®´; á„ᅱᆿ; ) HANGUL SYLLABLE JJWIK
+CBB5;CBB5;110D 1171 11C0;CBB5;110D 1171 11C0; # (쮵; 쮵; á„ᅱᇀ; 쮵; á„ᅱᇀ; ) HANGUL SYLLABLE JJWIT
+CBB6;CBB6;110D 1171 11C1;CBB6;110D 1171 11C1; # (쮶; 쮶; á„á…±á‡; 쮶; á„á…±á‡; ) HANGUL SYLLABLE JJWIP
+CBB7;CBB7;110D 1171 11C2;CBB7;110D 1171 11C2; # (ì®·; ì®·; á„ᅱᇂ; ì®·; á„ᅱᇂ; ) HANGUL SYLLABLE JJWIH
+CBB8;CBB8;110D 1172;CBB8;110D 1172; # (쮸; 쮸; á„á…²; 쮸; á„á…²; ) HANGUL SYLLABLE JJYU
+CBB9;CBB9;110D 1172 11A8;CBB9;110D 1172 11A8; # (쮹; 쮹; á„ᅲᆨ; 쮹; á„ᅲᆨ; ) HANGUL SYLLABLE JJYUG
+CBBA;CBBA;110D 1172 11A9;CBBA;110D 1172 11A9; # (쮺; 쮺; á„ᅲᆩ; 쮺; á„ᅲᆩ; ) HANGUL SYLLABLE JJYUGG
+CBBB;CBBB;110D 1172 11AA;CBBB;110D 1172 11AA; # (ì®»; ì®»; á„ᅲᆪ; ì®»; á„ᅲᆪ; ) HANGUL SYLLABLE JJYUGS
+CBBC;CBBC;110D 1172 11AB;CBBC;110D 1172 11AB; # (쮼; 쮼; á„ᅲᆫ; 쮼; á„ᅲᆫ; ) HANGUL SYLLABLE JJYUN
+CBBD;CBBD;110D 1172 11AC;CBBD;110D 1172 11AC; # (쮽; 쮽; á„ᅲᆬ; 쮽; á„ᅲᆬ; ) HANGUL SYLLABLE JJYUNJ
+CBBE;CBBE;110D 1172 11AD;CBBE;110D 1172 11AD; # (쮾; 쮾; á„ᅲᆭ; 쮾; á„ᅲᆭ; ) HANGUL SYLLABLE JJYUNH
+CBBF;CBBF;110D 1172 11AE;CBBF;110D 1172 11AE; # (쮿; 쮿; á„ᅲᆮ; 쮿; á„ᅲᆮ; ) HANGUL SYLLABLE JJYUD
+CBC0;CBC0;110D 1172 11AF;CBC0;110D 1172 11AF; # (쯀; 쯀; á„ᅲᆯ; 쯀; á„ᅲᆯ; ) HANGUL SYLLABLE JJYUL
+CBC1;CBC1;110D 1172 11B0;CBC1;110D 1172 11B0; # (ì¯; ì¯; á„ᅲᆰ; ì¯; á„ᅲᆰ; ) HANGUL SYLLABLE JJYULG
+CBC2;CBC2;110D 1172 11B1;CBC2;110D 1172 11B1; # (쯂; 쯂; á„ᅲᆱ; 쯂; á„ᅲᆱ; ) HANGUL SYLLABLE JJYULM
+CBC3;CBC3;110D 1172 11B2;CBC3;110D 1172 11B2; # (쯃; 쯃; á„ᅲᆲ; 쯃; á„ᅲᆲ; ) HANGUL SYLLABLE JJYULB
+CBC4;CBC4;110D 1172 11B3;CBC4;110D 1172 11B3; # (쯄; 쯄; á„ᅲᆳ; 쯄; á„ᅲᆳ; ) HANGUL SYLLABLE JJYULS
+CBC5;CBC5;110D 1172 11B4;CBC5;110D 1172 11B4; # (쯅; 쯅; á„ᅲᆴ; 쯅; á„ᅲᆴ; ) HANGUL SYLLABLE JJYULT
+CBC6;CBC6;110D 1172 11B5;CBC6;110D 1172 11B5; # (쯆; 쯆; á„ᅲᆵ; 쯆; á„ᅲᆵ; ) HANGUL SYLLABLE JJYULP
+CBC7;CBC7;110D 1172 11B6;CBC7;110D 1172 11B6; # (쯇; 쯇; á„ᅲᆶ; 쯇; á„ᅲᆶ; ) HANGUL SYLLABLE JJYULH
+CBC8;CBC8;110D 1172 11B7;CBC8;110D 1172 11B7; # (쯈; 쯈; á„ᅲᆷ; 쯈; á„ᅲᆷ; ) HANGUL SYLLABLE JJYUM
+CBC9;CBC9;110D 1172 11B8;CBC9;110D 1172 11B8; # (쯉; 쯉; á„ᅲᆸ; 쯉; á„ᅲᆸ; ) HANGUL SYLLABLE JJYUB
+CBCA;CBCA;110D 1172 11B9;CBCA;110D 1172 11B9; # (쯊; 쯊; á„ᅲᆹ; 쯊; á„ᅲᆹ; ) HANGUL SYLLABLE JJYUBS
+CBCB;CBCB;110D 1172 11BA;CBCB;110D 1172 11BA; # (쯋; 쯋; á„ᅲᆺ; 쯋; á„ᅲᆺ; ) HANGUL SYLLABLE JJYUS
+CBCC;CBCC;110D 1172 11BB;CBCC;110D 1172 11BB; # (쯌; 쯌; á„ᅲᆻ; 쯌; á„ᅲᆻ; ) HANGUL SYLLABLE JJYUSS
+CBCD;CBCD;110D 1172 11BC;CBCD;110D 1172 11BC; # (ì¯; ì¯; á„ᅲᆼ; ì¯; á„ᅲᆼ; ) HANGUL SYLLABLE JJYUNG
+CBCE;CBCE;110D 1172 11BD;CBCE;110D 1172 11BD; # (쯎; 쯎; á„ᅲᆽ; 쯎; á„ᅲᆽ; ) HANGUL SYLLABLE JJYUJ
+CBCF;CBCF;110D 1172 11BE;CBCF;110D 1172 11BE; # (ì¯; ì¯; á„ᅲᆾ; ì¯; á„ᅲᆾ; ) HANGUL SYLLABLE JJYUC
+CBD0;CBD0;110D 1172 11BF;CBD0;110D 1172 11BF; # (ì¯; ì¯; á„ᅲᆿ; ì¯; á„ᅲᆿ; ) HANGUL SYLLABLE JJYUK
+CBD1;CBD1;110D 1172 11C0;CBD1;110D 1172 11C0; # (쯑; 쯑; á„ᅲᇀ; 쯑; á„ᅲᇀ; ) HANGUL SYLLABLE JJYUT
+CBD2;CBD2;110D 1172 11C1;CBD2;110D 1172 11C1; # (쯒; 쯒; á„á…²á‡; 쯒; á„á…²á‡; ) HANGUL SYLLABLE JJYUP
+CBD3;CBD3;110D 1172 11C2;CBD3;110D 1172 11C2; # (쯓; 쯓; á„ᅲᇂ; 쯓; á„ᅲᇂ; ) HANGUL SYLLABLE JJYUH
+CBD4;CBD4;110D 1173;CBD4;110D 1173; # (쯔; 쯔; á„á…³; 쯔; á„á…³; ) HANGUL SYLLABLE JJEU
+CBD5;CBD5;110D 1173 11A8;CBD5;110D 1173 11A8; # (쯕; 쯕; á„ᅳᆨ; 쯕; á„ᅳᆨ; ) HANGUL SYLLABLE JJEUG
+CBD6;CBD6;110D 1173 11A9;CBD6;110D 1173 11A9; # (쯖; 쯖; á„ᅳᆩ; 쯖; á„ᅳᆩ; ) HANGUL SYLLABLE JJEUGG
+CBD7;CBD7;110D 1173 11AA;CBD7;110D 1173 11AA; # (쯗; 쯗; á„ᅳᆪ; 쯗; á„ᅳᆪ; ) HANGUL SYLLABLE JJEUGS
+CBD8;CBD8;110D 1173 11AB;CBD8;110D 1173 11AB; # (쯘; 쯘; á„ᅳᆫ; 쯘; á„ᅳᆫ; ) HANGUL SYLLABLE JJEUN
+CBD9;CBD9;110D 1173 11AC;CBD9;110D 1173 11AC; # (쯙; 쯙; á„ᅳᆬ; 쯙; á„ᅳᆬ; ) HANGUL SYLLABLE JJEUNJ
+CBDA;CBDA;110D 1173 11AD;CBDA;110D 1173 11AD; # (쯚; 쯚; á„ᅳᆭ; 쯚; á„ᅳᆭ; ) HANGUL SYLLABLE JJEUNH
+CBDB;CBDB;110D 1173 11AE;CBDB;110D 1173 11AE; # (쯛; 쯛; á„ᅳᆮ; 쯛; á„ᅳᆮ; ) HANGUL SYLLABLE JJEUD
+CBDC;CBDC;110D 1173 11AF;CBDC;110D 1173 11AF; # (쯜; 쯜; á„ᅳᆯ; 쯜; á„ᅳᆯ; ) HANGUL SYLLABLE JJEUL
+CBDD;CBDD;110D 1173 11B0;CBDD;110D 1173 11B0; # (ì¯; ì¯; á„ᅳᆰ; ì¯; á„ᅳᆰ; ) HANGUL SYLLABLE JJEULG
+CBDE;CBDE;110D 1173 11B1;CBDE;110D 1173 11B1; # (쯞; 쯞; á„ᅳᆱ; 쯞; á„ᅳᆱ; ) HANGUL SYLLABLE JJEULM
+CBDF;CBDF;110D 1173 11B2;CBDF;110D 1173 11B2; # (쯟; 쯟; á„ᅳᆲ; 쯟; á„ᅳᆲ; ) HANGUL SYLLABLE JJEULB
+CBE0;CBE0;110D 1173 11B3;CBE0;110D 1173 11B3; # (쯠; 쯠; á„ᅳᆳ; 쯠; á„ᅳᆳ; ) HANGUL SYLLABLE JJEULS
+CBE1;CBE1;110D 1173 11B4;CBE1;110D 1173 11B4; # (쯡; 쯡; á„ᅳᆴ; 쯡; á„ᅳᆴ; ) HANGUL SYLLABLE JJEULT
+CBE2;CBE2;110D 1173 11B5;CBE2;110D 1173 11B5; # (쯢; 쯢; á„ᅳᆵ; 쯢; á„ᅳᆵ; ) HANGUL SYLLABLE JJEULP
+CBE3;CBE3;110D 1173 11B6;CBE3;110D 1173 11B6; # (쯣; 쯣; á„ᅳᆶ; 쯣; á„ᅳᆶ; ) HANGUL SYLLABLE JJEULH
+CBE4;CBE4;110D 1173 11B7;CBE4;110D 1173 11B7; # (쯤; 쯤; á„ᅳᆷ; 쯤; á„ᅳᆷ; ) HANGUL SYLLABLE JJEUM
+CBE5;CBE5;110D 1173 11B8;CBE5;110D 1173 11B8; # (쯥; 쯥; á„ᅳᆸ; 쯥; á„ᅳᆸ; ) HANGUL SYLLABLE JJEUB
+CBE6;CBE6;110D 1173 11B9;CBE6;110D 1173 11B9; # (쯦; 쯦; á„ᅳᆹ; 쯦; á„ᅳᆹ; ) HANGUL SYLLABLE JJEUBS
+CBE7;CBE7;110D 1173 11BA;CBE7;110D 1173 11BA; # (쯧; 쯧; á„ᅳᆺ; 쯧; á„ᅳᆺ; ) HANGUL SYLLABLE JJEUS
+CBE8;CBE8;110D 1173 11BB;CBE8;110D 1173 11BB; # (쯨; 쯨; á„ᅳᆻ; 쯨; á„ᅳᆻ; ) HANGUL SYLLABLE JJEUSS
+CBE9;CBE9;110D 1173 11BC;CBE9;110D 1173 11BC; # (쯩; 쯩; á„ᅳᆼ; 쯩; á„ᅳᆼ; ) HANGUL SYLLABLE JJEUNG
+CBEA;CBEA;110D 1173 11BD;CBEA;110D 1173 11BD; # (쯪; 쯪; á„ᅳᆽ; 쯪; á„ᅳᆽ; ) HANGUL SYLLABLE JJEUJ
+CBEB;CBEB;110D 1173 11BE;CBEB;110D 1173 11BE; # (쯫; 쯫; á„ᅳᆾ; 쯫; á„ᅳᆾ; ) HANGUL SYLLABLE JJEUC
+CBEC;CBEC;110D 1173 11BF;CBEC;110D 1173 11BF; # (쯬; 쯬; á„ᅳᆿ; 쯬; á„ᅳᆿ; ) HANGUL SYLLABLE JJEUK
+CBED;CBED;110D 1173 11C0;CBED;110D 1173 11C0; # (쯭; 쯭; á„ᅳᇀ; 쯭; á„ᅳᇀ; ) HANGUL SYLLABLE JJEUT
+CBEE;CBEE;110D 1173 11C1;CBEE;110D 1173 11C1; # (쯮; 쯮; á„á…³á‡; 쯮; á„á…³á‡; ) HANGUL SYLLABLE JJEUP
+CBEF;CBEF;110D 1173 11C2;CBEF;110D 1173 11C2; # (쯯; 쯯; á„ᅳᇂ; 쯯; á„ᅳᇂ; ) HANGUL SYLLABLE JJEUH
+CBF0;CBF0;110D 1174;CBF0;110D 1174; # (쯰; 쯰; á„á…´; 쯰; á„á…´; ) HANGUL SYLLABLE JJYI
+CBF1;CBF1;110D 1174 11A8;CBF1;110D 1174 11A8; # (쯱; 쯱; á„ᅴᆨ; 쯱; á„ᅴᆨ; ) HANGUL SYLLABLE JJYIG
+CBF2;CBF2;110D 1174 11A9;CBF2;110D 1174 11A9; # (쯲; 쯲; á„ᅴᆩ; 쯲; á„ᅴᆩ; ) HANGUL SYLLABLE JJYIGG
+CBF3;CBF3;110D 1174 11AA;CBF3;110D 1174 11AA; # (쯳; 쯳; á„ᅴᆪ; 쯳; á„ᅴᆪ; ) HANGUL SYLLABLE JJYIGS
+CBF4;CBF4;110D 1174 11AB;CBF4;110D 1174 11AB; # (쯴; 쯴; á„ᅴᆫ; 쯴; á„ᅴᆫ; ) HANGUL SYLLABLE JJYIN
+CBF5;CBF5;110D 1174 11AC;CBF5;110D 1174 11AC; # (쯵; 쯵; á„ᅴᆬ; 쯵; á„ᅴᆬ; ) HANGUL SYLLABLE JJYINJ
+CBF6;CBF6;110D 1174 11AD;CBF6;110D 1174 11AD; # (쯶; 쯶; á„ᅴᆭ; 쯶; á„ᅴᆭ; ) HANGUL SYLLABLE JJYINH
+CBF7;CBF7;110D 1174 11AE;CBF7;110D 1174 11AE; # (쯷; 쯷; á„ᅴᆮ; 쯷; á„ᅴᆮ; ) HANGUL SYLLABLE JJYID
+CBF8;CBF8;110D 1174 11AF;CBF8;110D 1174 11AF; # (쯸; 쯸; á„ᅴᆯ; 쯸; á„ᅴᆯ; ) HANGUL SYLLABLE JJYIL
+CBF9;CBF9;110D 1174 11B0;CBF9;110D 1174 11B0; # (쯹; 쯹; á„ᅴᆰ; 쯹; á„ᅴᆰ; ) HANGUL SYLLABLE JJYILG
+CBFA;CBFA;110D 1174 11B1;CBFA;110D 1174 11B1; # (쯺; 쯺; á„ᅴᆱ; 쯺; á„ᅴᆱ; ) HANGUL SYLLABLE JJYILM
+CBFB;CBFB;110D 1174 11B2;CBFB;110D 1174 11B2; # (쯻; 쯻; á„ᅴᆲ; 쯻; á„ᅴᆲ; ) HANGUL SYLLABLE JJYILB
+CBFC;CBFC;110D 1174 11B3;CBFC;110D 1174 11B3; # (쯼; 쯼; á„ᅴᆳ; 쯼; á„ᅴᆳ; ) HANGUL SYLLABLE JJYILS
+CBFD;CBFD;110D 1174 11B4;CBFD;110D 1174 11B4; # (쯽; 쯽; á„ᅴᆴ; 쯽; á„ᅴᆴ; ) HANGUL SYLLABLE JJYILT
+CBFE;CBFE;110D 1174 11B5;CBFE;110D 1174 11B5; # (쯾; 쯾; á„ᅴᆵ; 쯾; á„ᅴᆵ; ) HANGUL SYLLABLE JJYILP
+CBFF;CBFF;110D 1174 11B6;CBFF;110D 1174 11B6; # (쯿; 쯿; á„ᅴᆶ; 쯿; á„ᅴᆶ; ) HANGUL SYLLABLE JJYILH
+CC00;CC00;110D 1174 11B7;CC00;110D 1174 11B7; # (ì°€; ì°€; á„ᅴᆷ; ì°€; á„ᅴᆷ; ) HANGUL SYLLABLE JJYIM
+CC01;CC01;110D 1174 11B8;CC01;110D 1174 11B8; # (ì°; ì°; á„ᅴᆸ; ì°; á„ᅴᆸ; ) HANGUL SYLLABLE JJYIB
+CC02;CC02;110D 1174 11B9;CC02;110D 1174 11B9; # (ì°‚; ì°‚; á„ᅴᆹ; ì°‚; á„ᅴᆹ; ) HANGUL SYLLABLE JJYIBS
+CC03;CC03;110D 1174 11BA;CC03;110D 1174 11BA; # (ì°ƒ; ì°ƒ; á„ᅴᆺ; ì°ƒ; á„ᅴᆺ; ) HANGUL SYLLABLE JJYIS
+CC04;CC04;110D 1174 11BB;CC04;110D 1174 11BB; # (ì°„; ì°„; á„ᅴᆻ; ì°„; á„ᅴᆻ; ) HANGUL SYLLABLE JJYISS
+CC05;CC05;110D 1174 11BC;CC05;110D 1174 11BC; # (ì°…; ì°…; á„ᅴᆼ; ì°…; á„ᅴᆼ; ) HANGUL SYLLABLE JJYING
+CC06;CC06;110D 1174 11BD;CC06;110D 1174 11BD; # (ì°†; ì°†; á„ᅴᆽ; ì°†; á„ᅴᆽ; ) HANGUL SYLLABLE JJYIJ
+CC07;CC07;110D 1174 11BE;CC07;110D 1174 11BE; # (ì°‡; ì°‡; á„ᅴᆾ; ì°‡; á„ᅴᆾ; ) HANGUL SYLLABLE JJYIC
+CC08;CC08;110D 1174 11BF;CC08;110D 1174 11BF; # (ì°ˆ; ì°ˆ; á„ᅴᆿ; ì°ˆ; á„ᅴᆿ; ) HANGUL SYLLABLE JJYIK
+CC09;CC09;110D 1174 11C0;CC09;110D 1174 11C0; # (ì°‰; ì°‰; á„ᅴᇀ; ì°‰; á„ᅴᇀ; ) HANGUL SYLLABLE JJYIT
+CC0A;CC0A;110D 1174 11C1;CC0A;110D 1174 11C1; # (ì°Š; ì°Š; á„á…´á‡; ì°Š; á„á…´á‡; ) HANGUL SYLLABLE JJYIP
+CC0B;CC0B;110D 1174 11C2;CC0B;110D 1174 11C2; # (ì°‹; ì°‹; á„ᅴᇂ; ì°‹; á„ᅴᇂ; ) HANGUL SYLLABLE JJYIH
+CC0C;CC0C;110D 1175;CC0C;110D 1175; # (ì°Œ; ì°Œ; á„á…µ; ì°Œ; á„á…µ; ) HANGUL SYLLABLE JJI
+CC0D;CC0D;110D 1175 11A8;CC0D;110D 1175 11A8; # (ì°; ì°; á„ᅵᆨ; ì°; á„ᅵᆨ; ) HANGUL SYLLABLE JJIG
+CC0E;CC0E;110D 1175 11A9;CC0E;110D 1175 11A9; # (ì°Ž; ì°Ž; á„ᅵᆩ; ì°Ž; á„ᅵᆩ; ) HANGUL SYLLABLE JJIGG
+CC0F;CC0F;110D 1175 11AA;CC0F;110D 1175 11AA; # (ì°; ì°; á„ᅵᆪ; ì°; á„ᅵᆪ; ) HANGUL SYLLABLE JJIGS
+CC10;CC10;110D 1175 11AB;CC10;110D 1175 11AB; # (ì°; ì°; á„ᅵᆫ; ì°; á„ᅵᆫ; ) HANGUL SYLLABLE JJIN
+CC11;CC11;110D 1175 11AC;CC11;110D 1175 11AC; # (ì°‘; ì°‘; á„ᅵᆬ; ì°‘; á„ᅵᆬ; ) HANGUL SYLLABLE JJINJ
+CC12;CC12;110D 1175 11AD;CC12;110D 1175 11AD; # (ì°’; ì°’; á„ᅵᆭ; ì°’; á„ᅵᆭ; ) HANGUL SYLLABLE JJINH
+CC13;CC13;110D 1175 11AE;CC13;110D 1175 11AE; # (ì°“; ì°“; á„ᅵᆮ; ì°“; á„ᅵᆮ; ) HANGUL SYLLABLE JJID
+CC14;CC14;110D 1175 11AF;CC14;110D 1175 11AF; # (ì°”; ì°”; á„ᅵᆯ; ì°”; á„ᅵᆯ; ) HANGUL SYLLABLE JJIL
+CC15;CC15;110D 1175 11B0;CC15;110D 1175 11B0; # (ì°•; ì°•; á„ᅵᆰ; ì°•; á„ᅵᆰ; ) HANGUL SYLLABLE JJILG
+CC16;CC16;110D 1175 11B1;CC16;110D 1175 11B1; # (ì°–; ì°–; á„ᅵᆱ; ì°–; á„ᅵᆱ; ) HANGUL SYLLABLE JJILM
+CC17;CC17;110D 1175 11B2;CC17;110D 1175 11B2; # (ì°—; ì°—; á„ᅵᆲ; ì°—; á„ᅵᆲ; ) HANGUL SYLLABLE JJILB
+CC18;CC18;110D 1175 11B3;CC18;110D 1175 11B3; # (ì°˜; ì°˜; á„ᅵᆳ; ì°˜; á„ᅵᆳ; ) HANGUL SYLLABLE JJILS
+CC19;CC19;110D 1175 11B4;CC19;110D 1175 11B4; # (ì°™; ì°™; á„ᅵᆴ; ì°™; á„ᅵᆴ; ) HANGUL SYLLABLE JJILT
+CC1A;CC1A;110D 1175 11B5;CC1A;110D 1175 11B5; # (ì°š; ì°š; á„ᅵᆵ; ì°š; á„ᅵᆵ; ) HANGUL SYLLABLE JJILP
+CC1B;CC1B;110D 1175 11B6;CC1B;110D 1175 11B6; # (ì°›; ì°›; á„ᅵᆶ; ì°›; á„ᅵᆶ; ) HANGUL SYLLABLE JJILH
+CC1C;CC1C;110D 1175 11B7;CC1C;110D 1175 11B7; # (ì°œ; ì°œ; á„ᅵᆷ; ì°œ; á„ᅵᆷ; ) HANGUL SYLLABLE JJIM
+CC1D;CC1D;110D 1175 11B8;CC1D;110D 1175 11B8; # (ì°; ì°; á„ᅵᆸ; ì°; á„ᅵᆸ; ) HANGUL SYLLABLE JJIB
+CC1E;CC1E;110D 1175 11B9;CC1E;110D 1175 11B9; # (ì°ž; ì°ž; á„ᅵᆹ; ì°ž; á„ᅵᆹ; ) HANGUL SYLLABLE JJIBS
+CC1F;CC1F;110D 1175 11BA;CC1F;110D 1175 11BA; # (ì°Ÿ; ì°Ÿ; á„ᅵᆺ; ì°Ÿ; á„ᅵᆺ; ) HANGUL SYLLABLE JJIS
+CC20;CC20;110D 1175 11BB;CC20;110D 1175 11BB; # (ì° ; ì° ; á„ᅵᆻ; ì° ; á„ᅵᆻ; ) HANGUL SYLLABLE JJISS
+CC21;CC21;110D 1175 11BC;CC21;110D 1175 11BC; # (ì°¡; ì°¡; á„ᅵᆼ; ì°¡; á„ᅵᆼ; ) HANGUL SYLLABLE JJING
+CC22;CC22;110D 1175 11BD;CC22;110D 1175 11BD; # (ì°¢; ì°¢; á„ᅵᆽ; ì°¢; á„ᅵᆽ; ) HANGUL SYLLABLE JJIJ
+CC23;CC23;110D 1175 11BE;CC23;110D 1175 11BE; # (ì°£; ì°£; á„ᅵᆾ; ì°£; á„ᅵᆾ; ) HANGUL SYLLABLE JJIC
+CC24;CC24;110D 1175 11BF;CC24;110D 1175 11BF; # (ì°¤; ì°¤; á„ᅵᆿ; ì°¤; á„ᅵᆿ; ) HANGUL SYLLABLE JJIK
+CC25;CC25;110D 1175 11C0;CC25;110D 1175 11C0; # (ì°¥; ì°¥; á„ᅵᇀ; ì°¥; á„ᅵᇀ; ) HANGUL SYLLABLE JJIT
+CC26;CC26;110D 1175 11C1;CC26;110D 1175 11C1; # (ì°¦; ì°¦; á„á…µá‡; ì°¦; á„á…µá‡; ) HANGUL SYLLABLE JJIP
+CC27;CC27;110D 1175 11C2;CC27;110D 1175 11C2; # (ì°§; ì°§; á„ᅵᇂ; ì°§; á„ᅵᇂ; ) HANGUL SYLLABLE JJIH
+CC28;CC28;110E 1161;CC28;110E 1161; # (ì°¨; ì°¨; á„Žá…¡; ì°¨; á„Žá…¡; ) HANGUL SYLLABLE CA
+CC29;CC29;110E 1161 11A8;CC29;110E 1161 11A8; # (착; 착; 착; 착; 착; ) HANGUL SYLLABLE CAG
+CC2A;CC2A;110E 1161 11A9;CC2A;110E 1161 11A9; # (찪; 찪; 찪; 찪; 찪; ) HANGUL SYLLABLE CAGG
+CC2B;CC2B;110E 1161 11AA;CC2B;110E 1161 11AA; # (찫; 찫; 찫; 찫; 찫; ) HANGUL SYLLABLE CAGS
+CC2C;CC2C;110E 1161 11AB;CC2C;110E 1161 11AB; # (찬; 찬; 찬; 찬; 찬; ) HANGUL SYLLABLE CAN
+CC2D;CC2D;110E 1161 11AC;CC2D;110E 1161 11AC; # (찭; 찭; 찭; 찭; 찭; ) HANGUL SYLLABLE CANJ
+CC2E;CC2E;110E 1161 11AD;CC2E;110E 1161 11AD; # (찮; 찮; 찮; 찮; 찮; ) HANGUL SYLLABLE CANH
+CC2F;CC2F;110E 1161 11AE;CC2F;110E 1161 11AE; # (찯; 찯; 찯; 찯; 찯; ) HANGUL SYLLABLE CAD
+CC30;CC30;110E 1161 11AF;CC30;110E 1161 11AF; # (찰; 찰; 찰; 찰; 찰; ) HANGUL SYLLABLE CAL
+CC31;CC31;110E 1161 11B0;CC31;110E 1161 11B0; # (찱; 찱; 찱; 찱; 찱; ) HANGUL SYLLABLE CALG
+CC32;CC32;110E 1161 11B1;CC32;110E 1161 11B1; # (찲; 찲; 찲; 찲; 찲; ) HANGUL SYLLABLE CALM
+CC33;CC33;110E 1161 11B2;CC33;110E 1161 11B2; # (찳; 찳; 찳; 찳; 찳; ) HANGUL SYLLABLE CALB
+CC34;CC34;110E 1161 11B3;CC34;110E 1161 11B3; # (찴; 찴; 찴; 찴; 찴; ) HANGUL SYLLABLE CALS
+CC35;CC35;110E 1161 11B4;CC35;110E 1161 11B4; # (찵; 찵; 찵; 찵; 찵; ) HANGUL SYLLABLE CALT
+CC36;CC36;110E 1161 11B5;CC36;110E 1161 11B5; # (찶; 찶; 찶; 찶; 찶; ) HANGUL SYLLABLE CALP
+CC37;CC37;110E 1161 11B6;CC37;110E 1161 11B6; # (찷; 찷; 찷; 찷; 찷; ) HANGUL SYLLABLE CALH
+CC38;CC38;110E 1161 11B7;CC38;110E 1161 11B7; # (참; 참; 참; 참; 참; ) HANGUL SYLLABLE CAM
+CC39;CC39;110E 1161 11B8;CC39;110E 1161 11B8; # (찹; 찹; 찹; 찹; 찹; ) HANGUL SYLLABLE CAB
+CC3A;CC3A;110E 1161 11B9;CC3A;110E 1161 11B9; # (찺; 찺; 찺; 찺; 찺; ) HANGUL SYLLABLE CABS
+CC3B;CC3B;110E 1161 11BA;CC3B;110E 1161 11BA; # (찻; 찻; 찻; 찻; 찻; ) HANGUL SYLLABLE CAS
+CC3C;CC3C;110E 1161 11BB;CC3C;110E 1161 11BB; # (찼; 찼; 찼; 찼; 찼; ) HANGUL SYLLABLE CASS
+CC3D;CC3D;110E 1161 11BC;CC3D;110E 1161 11BC; # (창; 창; 창; 창; 창; ) HANGUL SYLLABLE CANG
+CC3E;CC3E;110E 1161 11BD;CC3E;110E 1161 11BD; # (찾; 찾; 찾; 찾; 찾; ) HANGUL SYLLABLE CAJ
+CC3F;CC3F;110E 1161 11BE;CC3F;110E 1161 11BE; # (찿; 찿; 찿; 찿; 찿; ) HANGUL SYLLABLE CAC
+CC40;CC40;110E 1161 11BF;CC40;110E 1161 11BF; # (챀; 챀; 챀; 챀; 챀; ) HANGUL SYLLABLE CAK
+CC41;CC41;110E 1161 11C0;CC41;110E 1161 11C0; # (ì±; ì±; 챁; ì±; 챁; ) HANGUL SYLLABLE CAT
+CC42;CC42;110E 1161 11C1;CC42;110E 1161 11C1; # (챂; 챂; á„Žá…¡á‡; 챂; á„Žá…¡á‡; ) HANGUL SYLLABLE CAP
+CC43;CC43;110E 1161 11C2;CC43;110E 1161 11C2; # (챃; 챃; 챃; 챃; 챃; ) HANGUL SYLLABLE CAH
+CC44;CC44;110E 1162;CC44;110E 1162; # (채; 채; 채; 채; 채; ) HANGUL SYLLABLE CAE
+CC45;CC45;110E 1162 11A8;CC45;110E 1162 11A8; # (책; 책; 책; 책; 책; ) HANGUL SYLLABLE CAEG
+CC46;CC46;110E 1162 11A9;CC46;110E 1162 11A9; # (챆; 챆; 챆; 챆; 챆; ) HANGUL SYLLABLE CAEGG
+CC47;CC47;110E 1162 11AA;CC47;110E 1162 11AA; # (챇; 챇; 챇; 챇; 챇; ) HANGUL SYLLABLE CAEGS
+CC48;CC48;110E 1162 11AB;CC48;110E 1162 11AB; # (챈; 챈; 챈; 챈; 챈; ) HANGUL SYLLABLE CAEN
+CC49;CC49;110E 1162 11AC;CC49;110E 1162 11AC; # (챉; 챉; 챉; 챉; 챉; ) HANGUL SYLLABLE CAENJ
+CC4A;CC4A;110E 1162 11AD;CC4A;110E 1162 11AD; # (챊; 챊; 챊; 챊; 챊; ) HANGUL SYLLABLE CAENH
+CC4B;CC4B;110E 1162 11AE;CC4B;110E 1162 11AE; # (챋; 챋; 챋; 챋; 챋; ) HANGUL SYLLABLE CAED
+CC4C;CC4C;110E 1162 11AF;CC4C;110E 1162 11AF; # (챌; 챌; 챌; 챌; 챌; ) HANGUL SYLLABLE CAEL
+CC4D;CC4D;110E 1162 11B0;CC4D;110E 1162 11B0; # (ì±; ì±; 챍; ì±; 챍; ) HANGUL SYLLABLE CAELG
+CC4E;CC4E;110E 1162 11B1;CC4E;110E 1162 11B1; # (챎; 챎; 챎; 챎; 챎; ) HANGUL SYLLABLE CAELM
+CC4F;CC4F;110E 1162 11B2;CC4F;110E 1162 11B2; # (ì±; ì±; 챏; ì±; 챏; ) HANGUL SYLLABLE CAELB
+CC50;CC50;110E 1162 11B3;CC50;110E 1162 11B3; # (ì±; ì±; 챐; ì±; 챐; ) HANGUL SYLLABLE CAELS
+CC51;CC51;110E 1162 11B4;CC51;110E 1162 11B4; # (챑; 챑; 챑; 챑; 챑; ) HANGUL SYLLABLE CAELT
+CC52;CC52;110E 1162 11B5;CC52;110E 1162 11B5; # (챒; 챒; 챒; 챒; 챒; ) HANGUL SYLLABLE CAELP
+CC53;CC53;110E 1162 11B6;CC53;110E 1162 11B6; # (챓; 챓; 챓; 챓; 챓; ) HANGUL SYLLABLE CAELH
+CC54;CC54;110E 1162 11B7;CC54;110E 1162 11B7; # (챔; 챔; 챔; 챔; 챔; ) HANGUL SYLLABLE CAEM
+CC55;CC55;110E 1162 11B8;CC55;110E 1162 11B8; # (챕; 챕; 챕; 챕; 챕; ) HANGUL SYLLABLE CAEB
+CC56;CC56;110E 1162 11B9;CC56;110E 1162 11B9; # (챖; 챖; 챖; 챖; 챖; ) HANGUL SYLLABLE CAEBS
+CC57;CC57;110E 1162 11BA;CC57;110E 1162 11BA; # (챗; 챗; 챗; 챗; 챗; ) HANGUL SYLLABLE CAES
+CC58;CC58;110E 1162 11BB;CC58;110E 1162 11BB; # (챘; 챘; 챘; 챘; 챘; ) HANGUL SYLLABLE CAESS
+CC59;CC59;110E 1162 11BC;CC59;110E 1162 11BC; # (챙; 챙; 챙; 챙; 챙; ) HANGUL SYLLABLE CAENG
+CC5A;CC5A;110E 1162 11BD;CC5A;110E 1162 11BD; # (챚; 챚; 챚; 챚; 챚; ) HANGUL SYLLABLE CAEJ
+CC5B;CC5B;110E 1162 11BE;CC5B;110E 1162 11BE; # (챛; 챛; 챛; 챛; 챛; ) HANGUL SYLLABLE CAEC
+CC5C;CC5C;110E 1162 11BF;CC5C;110E 1162 11BF; # (챜; 챜; 챜; 챜; 챜; ) HANGUL SYLLABLE CAEK
+CC5D;CC5D;110E 1162 11C0;CC5D;110E 1162 11C0; # (ì±; ì±; 챝; ì±; 챝; ) HANGUL SYLLABLE CAET
+CC5E;CC5E;110E 1162 11C1;CC5E;110E 1162 11C1; # (챞; 챞; á„Žá…¢á‡; 챞; á„Žá…¢á‡; ) HANGUL SYLLABLE CAEP
+CC5F;CC5F;110E 1162 11C2;CC5F;110E 1162 11C2; # (챟; 챟; 챟; 챟; 챟; ) HANGUL SYLLABLE CAEH
+CC60;CC60;110E 1163;CC60;110E 1163; # (ì± ; ì± ; á„Žá…£; ì± ; á„Žá…£; ) HANGUL SYLLABLE CYA
+CC61;CC61;110E 1163 11A8;CC61;110E 1163 11A8; # (챡; 챡; 챡; 챡; 챡; ) HANGUL SYLLABLE CYAG
+CC62;CC62;110E 1163 11A9;CC62;110E 1163 11A9; # (챢; 챢; 챢; 챢; 챢; ) HANGUL SYLLABLE CYAGG
+CC63;CC63;110E 1163 11AA;CC63;110E 1163 11AA; # (챣; 챣; 챣; 챣; 챣; ) HANGUL SYLLABLE CYAGS
+CC64;CC64;110E 1163 11AB;CC64;110E 1163 11AB; # (챤; 챤; 챤; 챤; 챤; ) HANGUL SYLLABLE CYAN
+CC65;CC65;110E 1163 11AC;CC65;110E 1163 11AC; # (챥; 챥; 챥; 챥; 챥; ) HANGUL SYLLABLE CYANJ
+CC66;CC66;110E 1163 11AD;CC66;110E 1163 11AD; # (챦; 챦; 챦; 챦; 챦; ) HANGUL SYLLABLE CYANH
+CC67;CC67;110E 1163 11AE;CC67;110E 1163 11AE; # (챧; 챧; 챧; 챧; 챧; ) HANGUL SYLLABLE CYAD
+CC68;CC68;110E 1163 11AF;CC68;110E 1163 11AF; # (챨; 챨; 챨; 챨; 챨; ) HANGUL SYLLABLE CYAL
+CC69;CC69;110E 1163 11B0;CC69;110E 1163 11B0; # (챩; 챩; 챩; 챩; 챩; ) HANGUL SYLLABLE CYALG
+CC6A;CC6A;110E 1163 11B1;CC6A;110E 1163 11B1; # (챪; 챪; 챪; 챪; 챪; ) HANGUL SYLLABLE CYALM
+CC6B;CC6B;110E 1163 11B2;CC6B;110E 1163 11B2; # (챫; 챫; 챫; 챫; 챫; ) HANGUL SYLLABLE CYALB
+CC6C;CC6C;110E 1163 11B3;CC6C;110E 1163 11B3; # (챬; 챬; 챬; 챬; 챬; ) HANGUL SYLLABLE CYALS
+CC6D;CC6D;110E 1163 11B4;CC6D;110E 1163 11B4; # (챭; 챭; 챭; 챭; 챭; ) HANGUL SYLLABLE CYALT
+CC6E;CC6E;110E 1163 11B5;CC6E;110E 1163 11B5; # (챮; 챮; 챮; 챮; 챮; ) HANGUL SYLLABLE CYALP
+CC6F;CC6F;110E 1163 11B6;CC6F;110E 1163 11B6; # (챯; 챯; 챯; 챯; 챯; ) HANGUL SYLLABLE CYALH
+CC70;CC70;110E 1163 11B7;CC70;110E 1163 11B7; # (챰; 챰; 챰; 챰; 챰; ) HANGUL SYLLABLE CYAM
+CC71;CC71;110E 1163 11B8;CC71;110E 1163 11B8; # (챱; 챱; 챱; 챱; 챱; ) HANGUL SYLLABLE CYAB
+CC72;CC72;110E 1163 11B9;CC72;110E 1163 11B9; # (챲; 챲; 챲; 챲; 챲; ) HANGUL SYLLABLE CYABS
+CC73;CC73;110E 1163 11BA;CC73;110E 1163 11BA; # (챳; 챳; 챳; 챳; 챳; ) HANGUL SYLLABLE CYAS
+CC74;CC74;110E 1163 11BB;CC74;110E 1163 11BB; # (챴; 챴; 챴; 챴; 챴; ) HANGUL SYLLABLE CYASS
+CC75;CC75;110E 1163 11BC;CC75;110E 1163 11BC; # (챵; 챵; 챵; 챵; 챵; ) HANGUL SYLLABLE CYANG
+CC76;CC76;110E 1163 11BD;CC76;110E 1163 11BD; # (챶; 챶; 챶; 챶; 챶; ) HANGUL SYLLABLE CYAJ
+CC77;CC77;110E 1163 11BE;CC77;110E 1163 11BE; # (챷; 챷; 챷; 챷; 챷; ) HANGUL SYLLABLE CYAC
+CC78;CC78;110E 1163 11BF;CC78;110E 1163 11BF; # (챸; 챸; 챸; 챸; 챸; ) HANGUL SYLLABLE CYAK
+CC79;CC79;110E 1163 11C0;CC79;110E 1163 11C0; # (챹; 챹; 챹; 챹; 챹; ) HANGUL SYLLABLE CYAT
+CC7A;CC7A;110E 1163 11C1;CC7A;110E 1163 11C1; # (챺; 챺; á„Žá…£á‡; 챺; á„Žá…£á‡; ) HANGUL SYLLABLE CYAP
+CC7B;CC7B;110E 1163 11C2;CC7B;110E 1163 11C2; # (챻; 챻; 챻; 챻; 챻; ) HANGUL SYLLABLE CYAH
+CC7C;CC7C;110E 1164;CC7C;110E 1164; # (ì±¼; ì±¼; á„Žá…¤; ì±¼; á„Žá…¤; ) HANGUL SYLLABLE CYAE
+CC7D;CC7D;110E 1164 11A8;CC7D;110E 1164 11A8; # (챽; 챽; 챽; 챽; 챽; ) HANGUL SYLLABLE CYAEG
+CC7E;CC7E;110E 1164 11A9;CC7E;110E 1164 11A9; # (챾; 챾; 챾; 챾; 챾; ) HANGUL SYLLABLE CYAEGG
+CC7F;CC7F;110E 1164 11AA;CC7F;110E 1164 11AA; # (챿; 챿; 챿; 챿; 챿; ) HANGUL SYLLABLE CYAEGS
+CC80;CC80;110E 1164 11AB;CC80;110E 1164 11AB; # (첀; 첀; 첀; 첀; 첀; ) HANGUL SYLLABLE CYAEN
+CC81;CC81;110E 1164 11AC;CC81;110E 1164 11AC; # (ì²; ì²; 첁; ì²; 첁; ) HANGUL SYLLABLE CYAENJ
+CC82;CC82;110E 1164 11AD;CC82;110E 1164 11AD; # (첂; 첂; 첂; 첂; 첂; ) HANGUL SYLLABLE CYAENH
+CC83;CC83;110E 1164 11AE;CC83;110E 1164 11AE; # (첃; 첃; 첃; 첃; 첃; ) HANGUL SYLLABLE CYAED
+CC84;CC84;110E 1164 11AF;CC84;110E 1164 11AF; # (첄; 첄; 첄; 첄; 첄; ) HANGUL SYLLABLE CYAEL
+CC85;CC85;110E 1164 11B0;CC85;110E 1164 11B0; # (첅; 첅; 첅; 첅; 첅; ) HANGUL SYLLABLE CYAELG
+CC86;CC86;110E 1164 11B1;CC86;110E 1164 11B1; # (첆; 첆; 첆; 첆; 첆; ) HANGUL SYLLABLE CYAELM
+CC87;CC87;110E 1164 11B2;CC87;110E 1164 11B2; # (첇; 첇; 첇; 첇; 첇; ) HANGUL SYLLABLE CYAELB
+CC88;CC88;110E 1164 11B3;CC88;110E 1164 11B3; # (첈; 첈; 첈; 첈; 첈; ) HANGUL SYLLABLE CYAELS
+CC89;CC89;110E 1164 11B4;CC89;110E 1164 11B4; # (첉; 첉; 첉; 첉; 첉; ) HANGUL SYLLABLE CYAELT
+CC8A;CC8A;110E 1164 11B5;CC8A;110E 1164 11B5; # (첊; 첊; 첊; 첊; 첊; ) HANGUL SYLLABLE CYAELP
+CC8B;CC8B;110E 1164 11B6;CC8B;110E 1164 11B6; # (첋; 첋; 첋; 첋; 첋; ) HANGUL SYLLABLE CYAELH
+CC8C;CC8C;110E 1164 11B7;CC8C;110E 1164 11B7; # (첌; 첌; 첌; 첌; 첌; ) HANGUL SYLLABLE CYAEM
+CC8D;CC8D;110E 1164 11B8;CC8D;110E 1164 11B8; # (ì²; ì²; 첍; ì²; 첍; ) HANGUL SYLLABLE CYAEB
+CC8E;CC8E;110E 1164 11B9;CC8E;110E 1164 11B9; # (첎; 첎; 첎; 첎; 첎; ) HANGUL SYLLABLE CYAEBS
+CC8F;CC8F;110E 1164 11BA;CC8F;110E 1164 11BA; # (ì²; ì²; 첏; ì²; 첏; ) HANGUL SYLLABLE CYAES
+CC90;CC90;110E 1164 11BB;CC90;110E 1164 11BB; # (ì²; ì²; 첐; ì²; 첐; ) HANGUL SYLLABLE CYAESS
+CC91;CC91;110E 1164 11BC;CC91;110E 1164 11BC; # (첑; 첑; 첑; 첑; 첑; ) HANGUL SYLLABLE CYAENG
+CC92;CC92;110E 1164 11BD;CC92;110E 1164 11BD; # (첒; 첒; 첒; 첒; 첒; ) HANGUL SYLLABLE CYAEJ
+CC93;CC93;110E 1164 11BE;CC93;110E 1164 11BE; # (첓; 첓; 첓; 첓; 첓; ) HANGUL SYLLABLE CYAEC
+CC94;CC94;110E 1164 11BF;CC94;110E 1164 11BF; # (첔; 첔; 첔; 첔; 첔; ) HANGUL SYLLABLE CYAEK
+CC95;CC95;110E 1164 11C0;CC95;110E 1164 11C0; # (첕; 첕; 첕; 첕; 첕; ) HANGUL SYLLABLE CYAET
+CC96;CC96;110E 1164 11C1;CC96;110E 1164 11C1; # (ì²–; ì²–; á„Žá…¤á‡; ì²–; á„Žá…¤á‡; ) HANGUL SYLLABLE CYAEP
+CC97;CC97;110E 1164 11C2;CC97;110E 1164 11C2; # (첗; 첗; 첗; 첗; 첗; ) HANGUL SYLLABLE CYAEH
+CC98;CC98;110E 1165;CC98;110E 1165; # (처; 처; 처; 처; 처; ) HANGUL SYLLABLE CEO
+CC99;CC99;110E 1165 11A8;CC99;110E 1165 11A8; # (척; 척; 척; 척; 척; ) HANGUL SYLLABLE CEOG
+CC9A;CC9A;110E 1165 11A9;CC9A;110E 1165 11A9; # (첚; 첚; 첚; 첚; 첚; ) HANGUL SYLLABLE CEOGG
+CC9B;CC9B;110E 1165 11AA;CC9B;110E 1165 11AA; # (첛; 첛; 첛; 첛; 첛; ) HANGUL SYLLABLE CEOGS
+CC9C;CC9C;110E 1165 11AB;CC9C;110E 1165 11AB; # (천; 천; 천; 천; 천; ) HANGUL SYLLABLE CEON
+CC9D;CC9D;110E 1165 11AC;CC9D;110E 1165 11AC; # (ì²; ì²; 첝; ì²; 첝; ) HANGUL SYLLABLE CEONJ
+CC9E;CC9E;110E 1165 11AD;CC9E;110E 1165 11AD; # (첞; 첞; 첞; 첞; 첞; ) HANGUL SYLLABLE CEONH
+CC9F;CC9F;110E 1165 11AE;CC9F;110E 1165 11AE; # (첟; 첟; 첟; 첟; 첟; ) HANGUL SYLLABLE CEOD
+CCA0;CCA0;110E 1165 11AF;CCA0;110E 1165 11AF; # (철; 철; 철; 철; 철; ) HANGUL SYLLABLE CEOL
+CCA1;CCA1;110E 1165 11B0;CCA1;110E 1165 11B0; # (첡; 첡; 첡; 첡; 첡; ) HANGUL SYLLABLE CEOLG
+CCA2;CCA2;110E 1165 11B1;CCA2;110E 1165 11B1; # (첢; 첢; 첢; 첢; 첢; ) HANGUL SYLLABLE CEOLM
+CCA3;CCA3;110E 1165 11B2;CCA3;110E 1165 11B2; # (첣; 첣; 첣; 첣; 첣; ) HANGUL SYLLABLE CEOLB
+CCA4;CCA4;110E 1165 11B3;CCA4;110E 1165 11B3; # (첤; 첤; 첤; 첤; 첤; ) HANGUL SYLLABLE CEOLS
+CCA5;CCA5;110E 1165 11B4;CCA5;110E 1165 11B4; # (첥; 첥; 첥; 첥; 첥; ) HANGUL SYLLABLE CEOLT
+CCA6;CCA6;110E 1165 11B5;CCA6;110E 1165 11B5; # (첦; 첦; 첦; 첦; 첦; ) HANGUL SYLLABLE CEOLP
+CCA7;CCA7;110E 1165 11B6;CCA7;110E 1165 11B6; # (첧; 첧; 첧; 첧; 첧; ) HANGUL SYLLABLE CEOLH
+CCA8;CCA8;110E 1165 11B7;CCA8;110E 1165 11B7; # (첨; 첨; 첨; 첨; 첨; ) HANGUL SYLLABLE CEOM
+CCA9;CCA9;110E 1165 11B8;CCA9;110E 1165 11B8; # (첩; 첩; 첩; 첩; 첩; ) HANGUL SYLLABLE CEOB
+CCAA;CCAA;110E 1165 11B9;CCAA;110E 1165 11B9; # (첪; 첪; 첪; 첪; 첪; ) HANGUL SYLLABLE CEOBS
+CCAB;CCAB;110E 1165 11BA;CCAB;110E 1165 11BA; # (첫; 첫; 첫; 첫; 첫; ) HANGUL SYLLABLE CEOS
+CCAC;CCAC;110E 1165 11BB;CCAC;110E 1165 11BB; # (첬; 첬; 첬; 첬; 첬; ) HANGUL SYLLABLE CEOSS
+CCAD;CCAD;110E 1165 11BC;CCAD;110E 1165 11BC; # (청; 청; 청; 청; 청; ) HANGUL SYLLABLE CEONG
+CCAE;CCAE;110E 1165 11BD;CCAE;110E 1165 11BD; # (첮; 첮; 첮; 첮; 첮; ) HANGUL SYLLABLE CEOJ
+CCAF;CCAF;110E 1165 11BE;CCAF;110E 1165 11BE; # (첯; 첯; 첯; 첯; 첯; ) HANGUL SYLLABLE CEOC
+CCB0;CCB0;110E 1165 11BF;CCB0;110E 1165 11BF; # (첰; 첰; 첰; 첰; 첰; ) HANGUL SYLLABLE CEOK
+CCB1;CCB1;110E 1165 11C0;CCB1;110E 1165 11C0; # (첱; 첱; 첱; 첱; 첱; ) HANGUL SYLLABLE CEOT
+CCB2;CCB2;110E 1165 11C1;CCB2;110E 1165 11C1; # (ì²²; ì²²; á„Žá…¥á‡; ì²²; á„Žá…¥á‡; ) HANGUL SYLLABLE CEOP
+CCB3;CCB3;110E 1165 11C2;CCB3;110E 1165 11C2; # (첳; 첳; 첳; 첳; 첳; ) HANGUL SYLLABLE CEOH
+CCB4;CCB4;110E 1166;CCB4;110E 1166; # (ì²´; ì²´; á„Žá…¦; ì²´; á„Žá…¦; ) HANGUL SYLLABLE CE
+CCB5;CCB5;110E 1166 11A8;CCB5;110E 1166 11A8; # (첵; 첵; 첵; 첵; 첵; ) HANGUL SYLLABLE CEG
+CCB6;CCB6;110E 1166 11A9;CCB6;110E 1166 11A9; # (첶; 첶; 첶; 첶; 첶; ) HANGUL SYLLABLE CEGG
+CCB7;CCB7;110E 1166 11AA;CCB7;110E 1166 11AA; # (첷; 첷; 첷; 첷; 첷; ) HANGUL SYLLABLE CEGS
+CCB8;CCB8;110E 1166 11AB;CCB8;110E 1166 11AB; # (첸; 첸; 첸; 첸; 첸; ) HANGUL SYLLABLE CEN
+CCB9;CCB9;110E 1166 11AC;CCB9;110E 1166 11AC; # (첹; 첹; 첹; 첹; 첹; ) HANGUL SYLLABLE CENJ
+CCBA;CCBA;110E 1166 11AD;CCBA;110E 1166 11AD; # (첺; 첺; 첺; 첺; 첺; ) HANGUL SYLLABLE CENH
+CCBB;CCBB;110E 1166 11AE;CCBB;110E 1166 11AE; # (첻; 첻; 첻; 첻; 첻; ) HANGUL SYLLABLE CED
+CCBC;CCBC;110E 1166 11AF;CCBC;110E 1166 11AF; # (첼; 첼; 첼; 첼; 첼; ) HANGUL SYLLABLE CEL
+CCBD;CCBD;110E 1166 11B0;CCBD;110E 1166 11B0; # (첽; 첽; 첽; 첽; 첽; ) HANGUL SYLLABLE CELG
+CCBE;CCBE;110E 1166 11B1;CCBE;110E 1166 11B1; # (첾; 첾; 첾; 첾; 첾; ) HANGUL SYLLABLE CELM
+CCBF;CCBF;110E 1166 11B2;CCBF;110E 1166 11B2; # (첿; 첿; 첿; 첿; 첿; ) HANGUL SYLLABLE CELB
+CCC0;CCC0;110E 1166 11B3;CCC0;110E 1166 11B3; # (쳀; 쳀; 쳀; 쳀; 쳀; ) HANGUL SYLLABLE CELS
+CCC1;CCC1;110E 1166 11B4;CCC1;110E 1166 11B4; # (ì³; ì³; 쳁; ì³; 쳁; ) HANGUL SYLLABLE CELT
+CCC2;CCC2;110E 1166 11B5;CCC2;110E 1166 11B5; # (쳂; 쳂; 쳂; 쳂; 쳂; ) HANGUL SYLLABLE CELP
+CCC3;CCC3;110E 1166 11B6;CCC3;110E 1166 11B6; # (쳃; 쳃; 쳃; 쳃; 쳃; ) HANGUL SYLLABLE CELH
+CCC4;CCC4;110E 1166 11B7;CCC4;110E 1166 11B7; # (쳄; 쳄; 쳄; 쳄; 쳄; ) HANGUL SYLLABLE CEM
+CCC5;CCC5;110E 1166 11B8;CCC5;110E 1166 11B8; # (쳅; 쳅; 쳅; 쳅; 쳅; ) HANGUL SYLLABLE CEB
+CCC6;CCC6;110E 1166 11B9;CCC6;110E 1166 11B9; # (쳆; 쳆; 쳆; 쳆; 쳆; ) HANGUL SYLLABLE CEBS
+CCC7;CCC7;110E 1166 11BA;CCC7;110E 1166 11BA; # (쳇; 쳇; 쳇; 쳇; 쳇; ) HANGUL SYLLABLE CES
+CCC8;CCC8;110E 1166 11BB;CCC8;110E 1166 11BB; # (쳈; 쳈; 쳈; 쳈; 쳈; ) HANGUL SYLLABLE CESS
+CCC9;CCC9;110E 1166 11BC;CCC9;110E 1166 11BC; # (쳉; 쳉; 쳉; 쳉; 쳉; ) HANGUL SYLLABLE CENG
+CCCA;CCCA;110E 1166 11BD;CCCA;110E 1166 11BD; # (쳊; 쳊; 쳊; 쳊; 쳊; ) HANGUL SYLLABLE CEJ
+CCCB;CCCB;110E 1166 11BE;CCCB;110E 1166 11BE; # (쳋; 쳋; 쳋; 쳋; 쳋; ) HANGUL SYLLABLE CEC
+CCCC;CCCC;110E 1166 11BF;CCCC;110E 1166 11BF; # (쳌; 쳌; 쳌; 쳌; 쳌; ) HANGUL SYLLABLE CEK
+CCCD;CCCD;110E 1166 11C0;CCCD;110E 1166 11C0; # (ì³; ì³; 쳍; ì³; 쳍; ) HANGUL SYLLABLE CET
+CCCE;CCCE;110E 1166 11C1;CCCE;110E 1166 11C1; # (쳎; 쳎; á„Žá…¦á‡; 쳎; á„Žá…¦á‡; ) HANGUL SYLLABLE CEP
+CCCF;CCCF;110E 1166 11C2;CCCF;110E 1166 11C2; # (ì³; ì³; 쳏; ì³; 쳏; ) HANGUL SYLLABLE CEH
+CCD0;CCD0;110E 1167;CCD0;110E 1167; # (ì³; ì³; á„Žá…§; ì³; á„Žá…§; ) HANGUL SYLLABLE CYEO
+CCD1;CCD1;110E 1167 11A8;CCD1;110E 1167 11A8; # (쳑; 쳑; 쳑; 쳑; 쳑; ) HANGUL SYLLABLE CYEOG
+CCD2;CCD2;110E 1167 11A9;CCD2;110E 1167 11A9; # (쳒; 쳒; 쳒; 쳒; 쳒; ) HANGUL SYLLABLE CYEOGG
+CCD3;CCD3;110E 1167 11AA;CCD3;110E 1167 11AA; # (쳓; 쳓; 쳓; 쳓; 쳓; ) HANGUL SYLLABLE CYEOGS
+CCD4;CCD4;110E 1167 11AB;CCD4;110E 1167 11AB; # (쳔; 쳔; 쳔; 쳔; 쳔; ) HANGUL SYLLABLE CYEON
+CCD5;CCD5;110E 1167 11AC;CCD5;110E 1167 11AC; # (쳕; 쳕; 쳕; 쳕; 쳕; ) HANGUL SYLLABLE CYEONJ
+CCD6;CCD6;110E 1167 11AD;CCD6;110E 1167 11AD; # (쳖; 쳖; 쳖; 쳖; 쳖; ) HANGUL SYLLABLE CYEONH
+CCD7;CCD7;110E 1167 11AE;CCD7;110E 1167 11AE; # (쳗; 쳗; 쳗; 쳗; 쳗; ) HANGUL SYLLABLE CYEOD
+CCD8;CCD8;110E 1167 11AF;CCD8;110E 1167 11AF; # (쳘; 쳘; 쳘; 쳘; 쳘; ) HANGUL SYLLABLE CYEOL
+CCD9;CCD9;110E 1167 11B0;CCD9;110E 1167 11B0; # (쳙; 쳙; 쳙; 쳙; 쳙; ) HANGUL SYLLABLE CYEOLG
+CCDA;CCDA;110E 1167 11B1;CCDA;110E 1167 11B1; # (쳚; 쳚; 쳚; 쳚; 쳚; ) HANGUL SYLLABLE CYEOLM
+CCDB;CCDB;110E 1167 11B2;CCDB;110E 1167 11B2; # (쳛; 쳛; 쳛; 쳛; 쳛; ) HANGUL SYLLABLE CYEOLB
+CCDC;CCDC;110E 1167 11B3;CCDC;110E 1167 11B3; # (쳜; 쳜; 쳜; 쳜; 쳜; ) HANGUL SYLLABLE CYEOLS
+CCDD;CCDD;110E 1167 11B4;CCDD;110E 1167 11B4; # (ì³; ì³; 쳝; ì³; 쳝; ) HANGUL SYLLABLE CYEOLT
+CCDE;CCDE;110E 1167 11B5;CCDE;110E 1167 11B5; # (쳞; 쳞; 쳞; 쳞; 쳞; ) HANGUL SYLLABLE CYEOLP
+CCDF;CCDF;110E 1167 11B6;CCDF;110E 1167 11B6; # (쳟; 쳟; 쳟; 쳟; 쳟; ) HANGUL SYLLABLE CYEOLH
+CCE0;CCE0;110E 1167 11B7;CCE0;110E 1167 11B7; # (쳠; 쳠; 쳠; 쳠; 쳠; ) HANGUL SYLLABLE CYEOM
+CCE1;CCE1;110E 1167 11B8;CCE1;110E 1167 11B8; # (쳡; 쳡; 쳡; 쳡; 쳡; ) HANGUL SYLLABLE CYEOB
+CCE2;CCE2;110E 1167 11B9;CCE2;110E 1167 11B9; # (쳢; 쳢; 쳢; 쳢; 쳢; ) HANGUL SYLLABLE CYEOBS
+CCE3;CCE3;110E 1167 11BA;CCE3;110E 1167 11BA; # (쳣; 쳣; 쳣; 쳣; 쳣; ) HANGUL SYLLABLE CYEOS
+CCE4;CCE4;110E 1167 11BB;CCE4;110E 1167 11BB; # (쳤; 쳤; 쳤; 쳤; 쳤; ) HANGUL SYLLABLE CYEOSS
+CCE5;CCE5;110E 1167 11BC;CCE5;110E 1167 11BC; # (쳥; 쳥; 쳥; 쳥; 쳥; ) HANGUL SYLLABLE CYEONG
+CCE6;CCE6;110E 1167 11BD;CCE6;110E 1167 11BD; # (쳦; 쳦; 쳦; 쳦; 쳦; ) HANGUL SYLLABLE CYEOJ
+CCE7;CCE7;110E 1167 11BE;CCE7;110E 1167 11BE; # (쳧; 쳧; 쳧; 쳧; 쳧; ) HANGUL SYLLABLE CYEOC
+CCE8;CCE8;110E 1167 11BF;CCE8;110E 1167 11BF; # (쳨; 쳨; 쳨; 쳨; 쳨; ) HANGUL SYLLABLE CYEOK
+CCE9;CCE9;110E 1167 11C0;CCE9;110E 1167 11C0; # (쳩; 쳩; 쳩; 쳩; 쳩; ) HANGUL SYLLABLE CYEOT
+CCEA;CCEA;110E 1167 11C1;CCEA;110E 1167 11C1; # (쳪; 쳪; á„Žá…§á‡; 쳪; á„Žá…§á‡; ) HANGUL SYLLABLE CYEOP
+CCEB;CCEB;110E 1167 11C2;CCEB;110E 1167 11C2; # (쳫; 쳫; 쳫; 쳫; 쳫; ) HANGUL SYLLABLE CYEOH
+CCEC;CCEC;110E 1168;CCEC;110E 1168; # (쳬; 쳬; 쳬; 쳬; 쳬; ) HANGUL SYLLABLE CYE
+CCED;CCED;110E 1168 11A8;CCED;110E 1168 11A8; # (쳭; 쳭; 쳭; 쳭; 쳭; ) HANGUL SYLLABLE CYEG
+CCEE;CCEE;110E 1168 11A9;CCEE;110E 1168 11A9; # (쳮; 쳮; 쳮; 쳮; 쳮; ) HANGUL SYLLABLE CYEGG
+CCEF;CCEF;110E 1168 11AA;CCEF;110E 1168 11AA; # (쳯; 쳯; 쳯; 쳯; 쳯; ) HANGUL SYLLABLE CYEGS
+CCF0;CCF0;110E 1168 11AB;CCF0;110E 1168 11AB; # (쳰; 쳰; 쳰; 쳰; 쳰; ) HANGUL SYLLABLE CYEN
+CCF1;CCF1;110E 1168 11AC;CCF1;110E 1168 11AC; # (쳱; 쳱; 쳱; 쳱; 쳱; ) HANGUL SYLLABLE CYENJ
+CCF2;CCF2;110E 1168 11AD;CCF2;110E 1168 11AD; # (쳲; 쳲; 쳲; 쳲; 쳲; ) HANGUL SYLLABLE CYENH
+CCF3;CCF3;110E 1168 11AE;CCF3;110E 1168 11AE; # (쳳; 쳳; 쳳; 쳳; 쳳; ) HANGUL SYLLABLE CYED
+CCF4;CCF4;110E 1168 11AF;CCF4;110E 1168 11AF; # (쳴; 쳴; 쳴; 쳴; 쳴; ) HANGUL SYLLABLE CYEL
+CCF5;CCF5;110E 1168 11B0;CCF5;110E 1168 11B0; # (쳵; 쳵; 쳵; 쳵; 쳵; ) HANGUL SYLLABLE CYELG
+CCF6;CCF6;110E 1168 11B1;CCF6;110E 1168 11B1; # (쳶; 쳶; 쳶; 쳶; 쳶; ) HANGUL SYLLABLE CYELM
+CCF7;CCF7;110E 1168 11B2;CCF7;110E 1168 11B2; # (쳷; 쳷; 쳷; 쳷; 쳷; ) HANGUL SYLLABLE CYELB
+CCF8;CCF8;110E 1168 11B3;CCF8;110E 1168 11B3; # (쳸; 쳸; 쳸; 쳸; 쳸; ) HANGUL SYLLABLE CYELS
+CCF9;CCF9;110E 1168 11B4;CCF9;110E 1168 11B4; # (쳹; 쳹; 쳹; 쳹; 쳹; ) HANGUL SYLLABLE CYELT
+CCFA;CCFA;110E 1168 11B5;CCFA;110E 1168 11B5; # (쳺; 쳺; 쳺; 쳺; 쳺; ) HANGUL SYLLABLE CYELP
+CCFB;CCFB;110E 1168 11B6;CCFB;110E 1168 11B6; # (쳻; 쳻; 쳻; 쳻; 쳻; ) HANGUL SYLLABLE CYELH
+CCFC;CCFC;110E 1168 11B7;CCFC;110E 1168 11B7; # (쳼; 쳼; 쳼; 쳼; 쳼; ) HANGUL SYLLABLE CYEM
+CCFD;CCFD;110E 1168 11B8;CCFD;110E 1168 11B8; # (쳽; 쳽; 쳽; 쳽; 쳽; ) HANGUL SYLLABLE CYEB
+CCFE;CCFE;110E 1168 11B9;CCFE;110E 1168 11B9; # (쳾; 쳾; 쳾; 쳾; 쳾; ) HANGUL SYLLABLE CYEBS
+CCFF;CCFF;110E 1168 11BA;CCFF;110E 1168 11BA; # (쳿; 쳿; 쳿; 쳿; 쳿; ) HANGUL SYLLABLE CYES
+CD00;CD00;110E 1168 11BB;CD00;110E 1168 11BB; # (촀; 촀; 촀; 촀; 촀; ) HANGUL SYLLABLE CYESS
+CD01;CD01;110E 1168 11BC;CD01;110E 1168 11BC; # (ì´; ì´; 촁; ì´; 촁; ) HANGUL SYLLABLE CYENG
+CD02;CD02;110E 1168 11BD;CD02;110E 1168 11BD; # (촂; 촂; 촂; 촂; 촂; ) HANGUL SYLLABLE CYEJ
+CD03;CD03;110E 1168 11BE;CD03;110E 1168 11BE; # (촃; 촃; 촃; 촃; 촃; ) HANGUL SYLLABLE CYEC
+CD04;CD04;110E 1168 11BF;CD04;110E 1168 11BF; # (촄; 촄; 촄; 촄; 촄; ) HANGUL SYLLABLE CYEK
+CD05;CD05;110E 1168 11C0;CD05;110E 1168 11C0; # (촅; 촅; 촅; 촅; 촅; ) HANGUL SYLLABLE CYET
+CD06;CD06;110E 1168 11C1;CD06;110E 1168 11C1; # (ì´†; ì´†; á„Žá…¨á‡; ì´†; á„Žá…¨á‡; ) HANGUL SYLLABLE CYEP
+CD07;CD07;110E 1168 11C2;CD07;110E 1168 11C2; # (촇; 촇; 촇; 촇; 촇; ) HANGUL SYLLABLE CYEH
+CD08;CD08;110E 1169;CD08;110E 1169; # (ì´ˆ; ì´ˆ; á„Žá…©; ì´ˆ; á„Žá…©; ) HANGUL SYLLABLE CO
+CD09;CD09;110E 1169 11A8;CD09;110E 1169 11A8; # (촉; 촉; 촉; 촉; 촉; ) HANGUL SYLLABLE COG
+CD0A;CD0A;110E 1169 11A9;CD0A;110E 1169 11A9; # (촊; 촊; 촊; 촊; 촊; ) HANGUL SYLLABLE COGG
+CD0B;CD0B;110E 1169 11AA;CD0B;110E 1169 11AA; # (촋; 촋; 촋; 촋; 촋; ) HANGUL SYLLABLE COGS
+CD0C;CD0C;110E 1169 11AB;CD0C;110E 1169 11AB; # (촌; 촌; 촌; 촌; 촌; ) HANGUL SYLLABLE CON
+CD0D;CD0D;110E 1169 11AC;CD0D;110E 1169 11AC; # (ì´; ì´; 촍; ì´; 촍; ) HANGUL SYLLABLE CONJ
+CD0E;CD0E;110E 1169 11AD;CD0E;110E 1169 11AD; # (촎; 촎; 촎; 촎; 촎; ) HANGUL SYLLABLE CONH
+CD0F;CD0F;110E 1169 11AE;CD0F;110E 1169 11AE; # (ì´; ì´; 촏; ì´; 촏; ) HANGUL SYLLABLE COD
+CD10;CD10;110E 1169 11AF;CD10;110E 1169 11AF; # (ì´; ì´; 촐; ì´; 촐; ) HANGUL SYLLABLE COL
+CD11;CD11;110E 1169 11B0;CD11;110E 1169 11B0; # (촑; 촑; 촑; 촑; 촑; ) HANGUL SYLLABLE COLG
+CD12;CD12;110E 1169 11B1;CD12;110E 1169 11B1; # (촒; 촒; 촒; 촒; 촒; ) HANGUL SYLLABLE COLM
+CD13;CD13;110E 1169 11B2;CD13;110E 1169 11B2; # (촓; 촓; 촓; 촓; 촓; ) HANGUL SYLLABLE COLB
+CD14;CD14;110E 1169 11B3;CD14;110E 1169 11B3; # (촔; 촔; 촔; 촔; 촔; ) HANGUL SYLLABLE COLS
+CD15;CD15;110E 1169 11B4;CD15;110E 1169 11B4; # (촕; 촕; 촕; 촕; 촕; ) HANGUL SYLLABLE COLT
+CD16;CD16;110E 1169 11B5;CD16;110E 1169 11B5; # (촖; 촖; 촖; 촖; 촖; ) HANGUL SYLLABLE COLP
+CD17;CD17;110E 1169 11B6;CD17;110E 1169 11B6; # (촗; 촗; 촗; 촗; 촗; ) HANGUL SYLLABLE COLH
+CD18;CD18;110E 1169 11B7;CD18;110E 1169 11B7; # (촘; 촘; 촘; 촘; 촘; ) HANGUL SYLLABLE COM
+CD19;CD19;110E 1169 11B8;CD19;110E 1169 11B8; # (촙; 촙; 촙; 촙; 촙; ) HANGUL SYLLABLE COB
+CD1A;CD1A;110E 1169 11B9;CD1A;110E 1169 11B9; # (촚; 촚; 촚; 촚; 촚; ) HANGUL SYLLABLE COBS
+CD1B;CD1B;110E 1169 11BA;CD1B;110E 1169 11BA; # (촛; 촛; 촛; 촛; 촛; ) HANGUL SYLLABLE COS
+CD1C;CD1C;110E 1169 11BB;CD1C;110E 1169 11BB; # (촜; 촜; 촜; 촜; 촜; ) HANGUL SYLLABLE COSS
+CD1D;CD1D;110E 1169 11BC;CD1D;110E 1169 11BC; # (ì´; ì´; 총; ì´; 총; ) HANGUL SYLLABLE CONG
+CD1E;CD1E;110E 1169 11BD;CD1E;110E 1169 11BD; # (촞; 촞; 촞; 촞; 촞; ) HANGUL SYLLABLE COJ
+CD1F;CD1F;110E 1169 11BE;CD1F;110E 1169 11BE; # (촟; 촟; 촟; 촟; 촟; ) HANGUL SYLLABLE COC
+CD20;CD20;110E 1169 11BF;CD20;110E 1169 11BF; # (촠; 촠; 촠; 촠; 촠; ) HANGUL SYLLABLE COK
+CD21;CD21;110E 1169 11C0;CD21;110E 1169 11C0; # (촡; 촡; 촡; 촡; 촡; ) HANGUL SYLLABLE COT
+CD22;CD22;110E 1169 11C1;CD22;110E 1169 11C1; # (ì´¢; ì´¢; á„Žá…©á‡; ì´¢; á„Žá…©á‡; ) HANGUL SYLLABLE COP
+CD23;CD23;110E 1169 11C2;CD23;110E 1169 11C2; # (촣; 촣; 촣; 촣; 촣; ) HANGUL SYLLABLE COH
+CD24;CD24;110E 116A;CD24;110E 116A; # (ì´¤; ì´¤; á„Žá…ª; ì´¤; á„Žá…ª; ) HANGUL SYLLABLE CWA
+CD25;CD25;110E 116A 11A8;CD25;110E 116A 11A8; # (촥; 촥; 촥; 촥; 촥; ) HANGUL SYLLABLE CWAG
+CD26;CD26;110E 116A 11A9;CD26;110E 116A 11A9; # (촦; 촦; 촦; 촦; 촦; ) HANGUL SYLLABLE CWAGG
+CD27;CD27;110E 116A 11AA;CD27;110E 116A 11AA; # (촧; 촧; 촧; 촧; 촧; ) HANGUL SYLLABLE CWAGS
+CD28;CD28;110E 116A 11AB;CD28;110E 116A 11AB; # (촨; 촨; 촨; 촨; 촨; ) HANGUL SYLLABLE CWAN
+CD29;CD29;110E 116A 11AC;CD29;110E 116A 11AC; # (촩; 촩; 촩; 촩; 촩; ) HANGUL SYLLABLE CWANJ
+CD2A;CD2A;110E 116A 11AD;CD2A;110E 116A 11AD; # (촪; 촪; 촪; 촪; 촪; ) HANGUL SYLLABLE CWANH
+CD2B;CD2B;110E 116A 11AE;CD2B;110E 116A 11AE; # (촫; 촫; 촫; 촫; 촫; ) HANGUL SYLLABLE CWAD
+CD2C;CD2C;110E 116A 11AF;CD2C;110E 116A 11AF; # (촬; 촬; 촬; 촬; 촬; ) HANGUL SYLLABLE CWAL
+CD2D;CD2D;110E 116A 11B0;CD2D;110E 116A 11B0; # (촭; 촭; 촭; 촭; 촭; ) HANGUL SYLLABLE CWALG
+CD2E;CD2E;110E 116A 11B1;CD2E;110E 116A 11B1; # (촮; 촮; 촮; 촮; 촮; ) HANGUL SYLLABLE CWALM
+CD2F;CD2F;110E 116A 11B2;CD2F;110E 116A 11B2; # (촯; 촯; 촯; 촯; 촯; ) HANGUL SYLLABLE CWALB
+CD30;CD30;110E 116A 11B3;CD30;110E 116A 11B3; # (촰; 촰; 촰; 촰; 촰; ) HANGUL SYLLABLE CWALS
+CD31;CD31;110E 116A 11B4;CD31;110E 116A 11B4; # (촱; 촱; 촱; 촱; 촱; ) HANGUL SYLLABLE CWALT
+CD32;CD32;110E 116A 11B5;CD32;110E 116A 11B5; # (촲; 촲; 촲; 촲; 촲; ) HANGUL SYLLABLE CWALP
+CD33;CD33;110E 116A 11B6;CD33;110E 116A 11B6; # (촳; 촳; 촳; 촳; 촳; ) HANGUL SYLLABLE CWALH
+CD34;CD34;110E 116A 11B7;CD34;110E 116A 11B7; # (촴; 촴; 촴; 촴; 촴; ) HANGUL SYLLABLE CWAM
+CD35;CD35;110E 116A 11B8;CD35;110E 116A 11B8; # (촵; 촵; 촵; 촵; 촵; ) HANGUL SYLLABLE CWAB
+CD36;CD36;110E 116A 11B9;CD36;110E 116A 11B9; # (촶; 촶; 촶; 촶; 촶; ) HANGUL SYLLABLE CWABS
+CD37;CD37;110E 116A 11BA;CD37;110E 116A 11BA; # (촷; 촷; 촷; 촷; 촷; ) HANGUL SYLLABLE CWAS
+CD38;CD38;110E 116A 11BB;CD38;110E 116A 11BB; # (촸; 촸; 촸; 촸; 촸; ) HANGUL SYLLABLE CWASS
+CD39;CD39;110E 116A 11BC;CD39;110E 116A 11BC; # (촹; 촹; 촹; 촹; 촹; ) HANGUL SYLLABLE CWANG
+CD3A;CD3A;110E 116A 11BD;CD3A;110E 116A 11BD; # (촺; 촺; 촺; 촺; 촺; ) HANGUL SYLLABLE CWAJ
+CD3B;CD3B;110E 116A 11BE;CD3B;110E 116A 11BE; # (촻; 촻; 촻; 촻; 촻; ) HANGUL SYLLABLE CWAC
+CD3C;CD3C;110E 116A 11BF;CD3C;110E 116A 11BF; # (촼; 촼; 촼; 촼; 촼; ) HANGUL SYLLABLE CWAK
+CD3D;CD3D;110E 116A 11C0;CD3D;110E 116A 11C0; # (촽; 촽; 촽; 촽; 촽; ) HANGUL SYLLABLE CWAT
+CD3E;CD3E;110E 116A 11C1;CD3E;110E 116A 11C1; # (ì´¾; ì´¾; á„Žá…ªá‡; ì´¾; á„Žá…ªá‡; ) HANGUL SYLLABLE CWAP
+CD3F;CD3F;110E 116A 11C2;CD3F;110E 116A 11C2; # (촿; 촿; 촿; 촿; 촿; ) HANGUL SYLLABLE CWAH
+CD40;CD40;110E 116B;CD40;110E 116B; # (ìµ€; ìµ€; á„Žá…«; ìµ€; á„Žá…«; ) HANGUL SYLLABLE CWAE
+CD41;CD41;110E 116B 11A8;CD41;110E 116B 11A8; # (ìµ; ìµ; 쵁; ìµ; 쵁; ) HANGUL SYLLABLE CWAEG
+CD42;CD42;110E 116B 11A9;CD42;110E 116B 11A9; # (쵂; 쵂; 쵂; 쵂; 쵂; ) HANGUL SYLLABLE CWAEGG
+CD43;CD43;110E 116B 11AA;CD43;110E 116B 11AA; # (쵃; 쵃; 쵃; 쵃; 쵃; ) HANGUL SYLLABLE CWAEGS
+CD44;CD44;110E 116B 11AB;CD44;110E 116B 11AB; # (쵄; 쵄; 쵄; 쵄; 쵄; ) HANGUL SYLLABLE CWAEN
+CD45;CD45;110E 116B 11AC;CD45;110E 116B 11AC; # (쵅; 쵅; 쵅; 쵅; 쵅; ) HANGUL SYLLABLE CWAENJ
+CD46;CD46;110E 116B 11AD;CD46;110E 116B 11AD; # (쵆; 쵆; 쵆; 쵆; 쵆; ) HANGUL SYLLABLE CWAENH
+CD47;CD47;110E 116B 11AE;CD47;110E 116B 11AE; # (쵇; 쵇; 쵇; 쵇; 쵇; ) HANGUL SYLLABLE CWAED
+CD48;CD48;110E 116B 11AF;CD48;110E 116B 11AF; # (쵈; 쵈; 쵈; 쵈; 쵈; ) HANGUL SYLLABLE CWAEL
+CD49;CD49;110E 116B 11B0;CD49;110E 116B 11B0; # (쵉; 쵉; 쵉; 쵉; 쵉; ) HANGUL SYLLABLE CWAELG
+CD4A;CD4A;110E 116B 11B1;CD4A;110E 116B 11B1; # (쵊; 쵊; 쵊; 쵊; 쵊; ) HANGUL SYLLABLE CWAELM
+CD4B;CD4B;110E 116B 11B2;CD4B;110E 116B 11B2; # (쵋; 쵋; 쵋; 쵋; 쵋; ) HANGUL SYLLABLE CWAELB
+CD4C;CD4C;110E 116B 11B3;CD4C;110E 116B 11B3; # (쵌; 쵌; 쵌; 쵌; 쵌; ) HANGUL SYLLABLE CWAELS
+CD4D;CD4D;110E 116B 11B4;CD4D;110E 116B 11B4; # (ìµ; ìµ; 쵍; ìµ; 쵍; ) HANGUL SYLLABLE CWAELT
+CD4E;CD4E;110E 116B 11B5;CD4E;110E 116B 11B5; # (쵎; 쵎; 쵎; 쵎; 쵎; ) HANGUL SYLLABLE CWAELP
+CD4F;CD4F;110E 116B 11B6;CD4F;110E 116B 11B6; # (ìµ; ìµ; 쵏; ìµ; 쵏; ) HANGUL SYLLABLE CWAELH
+CD50;CD50;110E 116B 11B7;CD50;110E 116B 11B7; # (ìµ; ìµ; 쵐; ìµ; 쵐; ) HANGUL SYLLABLE CWAEM
+CD51;CD51;110E 116B 11B8;CD51;110E 116B 11B8; # (쵑; 쵑; 쵑; 쵑; 쵑; ) HANGUL SYLLABLE CWAEB
+CD52;CD52;110E 116B 11B9;CD52;110E 116B 11B9; # (쵒; 쵒; 쵒; 쵒; 쵒; ) HANGUL SYLLABLE CWAEBS
+CD53;CD53;110E 116B 11BA;CD53;110E 116B 11BA; # (쵓; 쵓; 쵓; 쵓; 쵓; ) HANGUL SYLLABLE CWAES
+CD54;CD54;110E 116B 11BB;CD54;110E 116B 11BB; # (쵔; 쵔; 쵔; 쵔; 쵔; ) HANGUL SYLLABLE CWAESS
+CD55;CD55;110E 116B 11BC;CD55;110E 116B 11BC; # (쵕; 쵕; 쵕; 쵕; 쵕; ) HANGUL SYLLABLE CWAENG
+CD56;CD56;110E 116B 11BD;CD56;110E 116B 11BD; # (쵖; 쵖; 쵖; 쵖; 쵖; ) HANGUL SYLLABLE CWAEJ
+CD57;CD57;110E 116B 11BE;CD57;110E 116B 11BE; # (쵗; 쵗; 쵗; 쵗; 쵗; ) HANGUL SYLLABLE CWAEC
+CD58;CD58;110E 116B 11BF;CD58;110E 116B 11BF; # (쵘; 쵘; 쵘; 쵘; 쵘; ) HANGUL SYLLABLE CWAEK
+CD59;CD59;110E 116B 11C0;CD59;110E 116B 11C0; # (쵙; 쵙; 쵙; 쵙; 쵙; ) HANGUL SYLLABLE CWAET
+CD5A;CD5A;110E 116B 11C1;CD5A;110E 116B 11C1; # (쵚; 쵚; á„Žá…«á‡; 쵚; á„Žá…«á‡; ) HANGUL SYLLABLE CWAEP
+CD5B;CD5B;110E 116B 11C2;CD5B;110E 116B 11C2; # (쵛; 쵛; 쵛; 쵛; 쵛; ) HANGUL SYLLABLE CWAEH
+CD5C;CD5C;110E 116C;CD5C;110E 116C; # (최; 최; 최; 최; 최; ) HANGUL SYLLABLE COE
+CD5D;CD5D;110E 116C 11A8;CD5D;110E 116C 11A8; # (ìµ; ìµ; 쵝; ìµ; 쵝; ) HANGUL SYLLABLE COEG
+CD5E;CD5E;110E 116C 11A9;CD5E;110E 116C 11A9; # (쵞; 쵞; 쵞; 쵞; 쵞; ) HANGUL SYLLABLE COEGG
+CD5F;CD5F;110E 116C 11AA;CD5F;110E 116C 11AA; # (쵟; 쵟; 쵟; 쵟; 쵟; ) HANGUL SYLLABLE COEGS
+CD60;CD60;110E 116C 11AB;CD60;110E 116C 11AB; # (쵠; 쵠; 쵠; 쵠; 쵠; ) HANGUL SYLLABLE COEN
+CD61;CD61;110E 116C 11AC;CD61;110E 116C 11AC; # (쵡; 쵡; 쵡; 쵡; 쵡; ) HANGUL SYLLABLE COENJ
+CD62;CD62;110E 116C 11AD;CD62;110E 116C 11AD; # (쵢; 쵢; 쵢; 쵢; 쵢; ) HANGUL SYLLABLE COENH
+CD63;CD63;110E 116C 11AE;CD63;110E 116C 11AE; # (쵣; 쵣; 쵣; 쵣; 쵣; ) HANGUL SYLLABLE COED
+CD64;CD64;110E 116C 11AF;CD64;110E 116C 11AF; # (쵤; 쵤; 쵤; 쵤; 쵤; ) HANGUL SYLLABLE COEL
+CD65;CD65;110E 116C 11B0;CD65;110E 116C 11B0; # (쵥; 쵥; 쵥; 쵥; 쵥; ) HANGUL SYLLABLE COELG
+CD66;CD66;110E 116C 11B1;CD66;110E 116C 11B1; # (쵦; 쵦; 쵦; 쵦; 쵦; ) HANGUL SYLLABLE COELM
+CD67;CD67;110E 116C 11B2;CD67;110E 116C 11B2; # (쵧; 쵧; 쵧; 쵧; 쵧; ) HANGUL SYLLABLE COELB
+CD68;CD68;110E 116C 11B3;CD68;110E 116C 11B3; # (쵨; 쵨; 쵨; 쵨; 쵨; ) HANGUL SYLLABLE COELS
+CD69;CD69;110E 116C 11B4;CD69;110E 116C 11B4; # (쵩; 쵩; 쵩; 쵩; 쵩; ) HANGUL SYLLABLE COELT
+CD6A;CD6A;110E 116C 11B5;CD6A;110E 116C 11B5; # (쵪; 쵪; 쵪; 쵪; 쵪; ) HANGUL SYLLABLE COELP
+CD6B;CD6B;110E 116C 11B6;CD6B;110E 116C 11B6; # (쵫; 쵫; 쵫; 쵫; 쵫; ) HANGUL SYLLABLE COELH
+CD6C;CD6C;110E 116C 11B7;CD6C;110E 116C 11B7; # (쵬; 쵬; 쵬; 쵬; 쵬; ) HANGUL SYLLABLE COEM
+CD6D;CD6D;110E 116C 11B8;CD6D;110E 116C 11B8; # (쵭; 쵭; 쵭; 쵭; 쵭; ) HANGUL SYLLABLE COEB
+CD6E;CD6E;110E 116C 11B9;CD6E;110E 116C 11B9; # (쵮; 쵮; 쵮; 쵮; 쵮; ) HANGUL SYLLABLE COEBS
+CD6F;CD6F;110E 116C 11BA;CD6F;110E 116C 11BA; # (쵯; 쵯; 쵯; 쵯; 쵯; ) HANGUL SYLLABLE COES
+CD70;CD70;110E 116C 11BB;CD70;110E 116C 11BB; # (쵰; 쵰; 쵰; 쵰; 쵰; ) HANGUL SYLLABLE COESS
+CD71;CD71;110E 116C 11BC;CD71;110E 116C 11BC; # (쵱; 쵱; 쵱; 쵱; 쵱; ) HANGUL SYLLABLE COENG
+CD72;CD72;110E 116C 11BD;CD72;110E 116C 11BD; # (쵲; 쵲; 쵲; 쵲; 쵲; ) HANGUL SYLLABLE COEJ
+CD73;CD73;110E 116C 11BE;CD73;110E 116C 11BE; # (쵳; 쵳; 쵳; 쵳; 쵳; ) HANGUL SYLLABLE COEC
+CD74;CD74;110E 116C 11BF;CD74;110E 116C 11BF; # (쵴; 쵴; 쵴; 쵴; 쵴; ) HANGUL SYLLABLE COEK
+CD75;CD75;110E 116C 11C0;CD75;110E 116C 11C0; # (쵵; 쵵; 쵵; 쵵; 쵵; ) HANGUL SYLLABLE COET
+CD76;CD76;110E 116C 11C1;CD76;110E 116C 11C1; # (쵶; 쵶; á„Žá…¬á‡; 쵶; á„Žá…¬á‡; ) HANGUL SYLLABLE COEP
+CD77;CD77;110E 116C 11C2;CD77;110E 116C 11C2; # (쵷; 쵷; 쵷; 쵷; 쵷; ) HANGUL SYLLABLE COEH
+CD78;CD78;110E 116D;CD78;110E 116D; # (쵸; 쵸; 쵸; 쵸; 쵸; ) HANGUL SYLLABLE CYO
+CD79;CD79;110E 116D 11A8;CD79;110E 116D 11A8; # (쵹; 쵹; 쵹; 쵹; 쵹; ) HANGUL SYLLABLE CYOG
+CD7A;CD7A;110E 116D 11A9;CD7A;110E 116D 11A9; # (쵺; 쵺; 쵺; 쵺; 쵺; ) HANGUL SYLLABLE CYOGG
+CD7B;CD7B;110E 116D 11AA;CD7B;110E 116D 11AA; # (쵻; 쵻; 쵻; 쵻; 쵻; ) HANGUL SYLLABLE CYOGS
+CD7C;CD7C;110E 116D 11AB;CD7C;110E 116D 11AB; # (쵼; 쵼; 쵼; 쵼; 쵼; ) HANGUL SYLLABLE CYON
+CD7D;CD7D;110E 116D 11AC;CD7D;110E 116D 11AC; # (쵽; 쵽; 쵽; 쵽; 쵽; ) HANGUL SYLLABLE CYONJ
+CD7E;CD7E;110E 116D 11AD;CD7E;110E 116D 11AD; # (쵾; 쵾; 쵾; 쵾; 쵾; ) HANGUL SYLLABLE CYONH
+CD7F;CD7F;110E 116D 11AE;CD7F;110E 116D 11AE; # (쵿; 쵿; 쵿; 쵿; 쵿; ) HANGUL SYLLABLE CYOD
+CD80;CD80;110E 116D 11AF;CD80;110E 116D 11AF; # (춀; 춀; 춀; 춀; 춀; ) HANGUL SYLLABLE CYOL
+CD81;CD81;110E 116D 11B0;CD81;110E 116D 11B0; # (ì¶; ì¶; 춁; ì¶; 춁; ) HANGUL SYLLABLE CYOLG
+CD82;CD82;110E 116D 11B1;CD82;110E 116D 11B1; # (춂; 춂; 춂; 춂; 춂; ) HANGUL SYLLABLE CYOLM
+CD83;CD83;110E 116D 11B2;CD83;110E 116D 11B2; # (춃; 춃; 춃; 춃; 춃; ) HANGUL SYLLABLE CYOLB
+CD84;CD84;110E 116D 11B3;CD84;110E 116D 11B3; # (춄; 춄; 춄; 춄; 춄; ) HANGUL SYLLABLE CYOLS
+CD85;CD85;110E 116D 11B4;CD85;110E 116D 11B4; # (춅; 춅; 춅; 춅; 춅; ) HANGUL SYLLABLE CYOLT
+CD86;CD86;110E 116D 11B5;CD86;110E 116D 11B5; # (춆; 춆; 춆; 춆; 춆; ) HANGUL SYLLABLE CYOLP
+CD87;CD87;110E 116D 11B6;CD87;110E 116D 11B6; # (춇; 춇; 춇; 춇; 춇; ) HANGUL SYLLABLE CYOLH
+CD88;CD88;110E 116D 11B7;CD88;110E 116D 11B7; # (춈; 춈; 춈; 춈; 춈; ) HANGUL SYLLABLE CYOM
+CD89;CD89;110E 116D 11B8;CD89;110E 116D 11B8; # (춉; 춉; 춉; 춉; 춉; ) HANGUL SYLLABLE CYOB
+CD8A;CD8A;110E 116D 11B9;CD8A;110E 116D 11B9; # (춊; 춊; 춊; 춊; 춊; ) HANGUL SYLLABLE CYOBS
+CD8B;CD8B;110E 116D 11BA;CD8B;110E 116D 11BA; # (춋; 춋; 춋; 춋; 춋; ) HANGUL SYLLABLE CYOS
+CD8C;CD8C;110E 116D 11BB;CD8C;110E 116D 11BB; # (춌; 춌; 춌; 춌; 춌; ) HANGUL SYLLABLE CYOSS
+CD8D;CD8D;110E 116D 11BC;CD8D;110E 116D 11BC; # (ì¶; ì¶; 춍; ì¶; 춍; ) HANGUL SYLLABLE CYONG
+CD8E;CD8E;110E 116D 11BD;CD8E;110E 116D 11BD; # (춎; 춎; 춎; 춎; 춎; ) HANGUL SYLLABLE CYOJ
+CD8F;CD8F;110E 116D 11BE;CD8F;110E 116D 11BE; # (ì¶; ì¶; 춏; ì¶; 춏; ) HANGUL SYLLABLE CYOC
+CD90;CD90;110E 116D 11BF;CD90;110E 116D 11BF; # (ì¶; ì¶; 춐; ì¶; 춐; ) HANGUL SYLLABLE CYOK
+CD91;CD91;110E 116D 11C0;CD91;110E 116D 11C0; # (춑; 춑; 춑; 춑; 춑; ) HANGUL SYLLABLE CYOT
+CD92;CD92;110E 116D 11C1;CD92;110E 116D 11C1; # (춒; 춒; á„Žá…­á‡; 춒; á„Žá…­á‡; ) HANGUL SYLLABLE CYOP
+CD93;CD93;110E 116D 11C2;CD93;110E 116D 11C2; # (춓; 춓; 춓; 춓; 춓; ) HANGUL SYLLABLE CYOH
+CD94;CD94;110E 116E;CD94;110E 116E; # (추; 추; 추; 추; 추; ) HANGUL SYLLABLE CU
+CD95;CD95;110E 116E 11A8;CD95;110E 116E 11A8; # (축; 축; 축; 축; 축; ) HANGUL SYLLABLE CUG
+CD96;CD96;110E 116E 11A9;CD96;110E 116E 11A9; # (춖; 춖; 춖; 춖; 춖; ) HANGUL SYLLABLE CUGG
+CD97;CD97;110E 116E 11AA;CD97;110E 116E 11AA; # (춗; 춗; 춗; 춗; 춗; ) HANGUL SYLLABLE CUGS
+CD98;CD98;110E 116E 11AB;CD98;110E 116E 11AB; # (춘; 춘; 춘; 춘; 춘; ) HANGUL SYLLABLE CUN
+CD99;CD99;110E 116E 11AC;CD99;110E 116E 11AC; # (춙; 춙; 춙; 춙; 춙; ) HANGUL SYLLABLE CUNJ
+CD9A;CD9A;110E 116E 11AD;CD9A;110E 116E 11AD; # (춚; 춚; 춚; 춚; 춚; ) HANGUL SYLLABLE CUNH
+CD9B;CD9B;110E 116E 11AE;CD9B;110E 116E 11AE; # (춛; 춛; 춛; 춛; 춛; ) HANGUL SYLLABLE CUD
+CD9C;CD9C;110E 116E 11AF;CD9C;110E 116E 11AF; # (출; 출; 출; 출; 출; ) HANGUL SYLLABLE CUL
+CD9D;CD9D;110E 116E 11B0;CD9D;110E 116E 11B0; # (ì¶; ì¶; 춝; ì¶; 춝; ) HANGUL SYLLABLE CULG
+CD9E;CD9E;110E 116E 11B1;CD9E;110E 116E 11B1; # (춞; 춞; 춞; 춞; 춞; ) HANGUL SYLLABLE CULM
+CD9F;CD9F;110E 116E 11B2;CD9F;110E 116E 11B2; # (춟; 춟; 춟; 춟; 춟; ) HANGUL SYLLABLE CULB
+CDA0;CDA0;110E 116E 11B3;CDA0;110E 116E 11B3; # (춠; 춠; 춠; 춠; 춠; ) HANGUL SYLLABLE CULS
+CDA1;CDA1;110E 116E 11B4;CDA1;110E 116E 11B4; # (춡; 춡; 춡; 춡; 춡; ) HANGUL SYLLABLE CULT
+CDA2;CDA2;110E 116E 11B5;CDA2;110E 116E 11B5; # (춢; 춢; 춢; 춢; 춢; ) HANGUL SYLLABLE CULP
+CDA3;CDA3;110E 116E 11B6;CDA3;110E 116E 11B6; # (춣; 춣; 춣; 춣; 춣; ) HANGUL SYLLABLE CULH
+CDA4;CDA4;110E 116E 11B7;CDA4;110E 116E 11B7; # (춤; 춤; 춤; 춤; 춤; ) HANGUL SYLLABLE CUM
+CDA5;CDA5;110E 116E 11B8;CDA5;110E 116E 11B8; # (춥; 춥; 춥; 춥; 춥; ) HANGUL SYLLABLE CUB
+CDA6;CDA6;110E 116E 11B9;CDA6;110E 116E 11B9; # (춦; 춦; 춦; 춦; 춦; ) HANGUL SYLLABLE CUBS
+CDA7;CDA7;110E 116E 11BA;CDA7;110E 116E 11BA; # (춧; 춧; 춧; 춧; 춧; ) HANGUL SYLLABLE CUS
+CDA8;CDA8;110E 116E 11BB;CDA8;110E 116E 11BB; # (춨; 춨; 춨; 춨; 춨; ) HANGUL SYLLABLE CUSS
+CDA9;CDA9;110E 116E 11BC;CDA9;110E 116E 11BC; # (충; 충; 충; 충; 충; ) HANGUL SYLLABLE CUNG
+CDAA;CDAA;110E 116E 11BD;CDAA;110E 116E 11BD; # (춪; 춪; 춪; 춪; 춪; ) HANGUL SYLLABLE CUJ
+CDAB;CDAB;110E 116E 11BE;CDAB;110E 116E 11BE; # (춫; 춫; 춫; 춫; 춫; ) HANGUL SYLLABLE CUC
+CDAC;CDAC;110E 116E 11BF;CDAC;110E 116E 11BF; # (춬; 춬; 춬; 춬; 춬; ) HANGUL SYLLABLE CUK
+CDAD;CDAD;110E 116E 11C0;CDAD;110E 116E 11C0; # (춭; 춭; 춭; 춭; 춭; ) HANGUL SYLLABLE CUT
+CDAE;CDAE;110E 116E 11C1;CDAE;110E 116E 11C1; # (춮; 춮; á„Žá…®á‡; 춮; á„Žá…®á‡; ) HANGUL SYLLABLE CUP
+CDAF;CDAF;110E 116E 11C2;CDAF;110E 116E 11C2; # (춯; 춯; 춯; 춯; 춯; ) HANGUL SYLLABLE CUH
+CDB0;CDB0;110E 116F;CDB0;110E 116F; # (춰; 춰; 춰; 춰; 춰; ) HANGUL SYLLABLE CWEO
+CDB1;CDB1;110E 116F 11A8;CDB1;110E 116F 11A8; # (춱; 춱; 춱; 춱; 춱; ) HANGUL SYLLABLE CWEOG
+CDB2;CDB2;110E 116F 11A9;CDB2;110E 116F 11A9; # (춲; 춲; 춲; 춲; 춲; ) HANGUL SYLLABLE CWEOGG
+CDB3;CDB3;110E 116F 11AA;CDB3;110E 116F 11AA; # (춳; 춳; 춳; 춳; 춳; ) HANGUL SYLLABLE CWEOGS
+CDB4;CDB4;110E 116F 11AB;CDB4;110E 116F 11AB; # (춴; 춴; 춴; 춴; 춴; ) HANGUL SYLLABLE CWEON
+CDB5;CDB5;110E 116F 11AC;CDB5;110E 116F 11AC; # (춵; 춵; 춵; 춵; 춵; ) HANGUL SYLLABLE CWEONJ
+CDB6;CDB6;110E 116F 11AD;CDB6;110E 116F 11AD; # (춶; 춶; 춶; 춶; 춶; ) HANGUL SYLLABLE CWEONH
+CDB7;CDB7;110E 116F 11AE;CDB7;110E 116F 11AE; # (춷; 춷; 춷; 춷; 춷; ) HANGUL SYLLABLE CWEOD
+CDB8;CDB8;110E 116F 11AF;CDB8;110E 116F 11AF; # (춸; 춸; 춸; 춸; 춸; ) HANGUL SYLLABLE CWEOL
+CDB9;CDB9;110E 116F 11B0;CDB9;110E 116F 11B0; # (춹; 춹; 춹; 춹; 춹; ) HANGUL SYLLABLE CWEOLG
+CDBA;CDBA;110E 116F 11B1;CDBA;110E 116F 11B1; # (춺; 춺; 춺; 춺; 춺; ) HANGUL SYLLABLE CWEOLM
+CDBB;CDBB;110E 116F 11B2;CDBB;110E 116F 11B2; # (춻; 춻; 춻; 춻; 춻; ) HANGUL SYLLABLE CWEOLB
+CDBC;CDBC;110E 116F 11B3;CDBC;110E 116F 11B3; # (춼; 춼; 춼; 춼; 춼; ) HANGUL SYLLABLE CWEOLS
+CDBD;CDBD;110E 116F 11B4;CDBD;110E 116F 11B4; # (춽; 춽; 춽; 춽; 춽; ) HANGUL SYLLABLE CWEOLT
+CDBE;CDBE;110E 116F 11B5;CDBE;110E 116F 11B5; # (춾; 춾; 춾; 춾; 춾; ) HANGUL SYLLABLE CWEOLP
+CDBF;CDBF;110E 116F 11B6;CDBF;110E 116F 11B6; # (춿; 춿; 춿; 춿; 춿; ) HANGUL SYLLABLE CWEOLH
+CDC0;CDC0;110E 116F 11B7;CDC0;110E 116F 11B7; # (췀; 췀; 췀; 췀; 췀; ) HANGUL SYLLABLE CWEOM
+CDC1;CDC1;110E 116F 11B8;CDC1;110E 116F 11B8; # (ì·; ì·; 췁; ì·; 췁; ) HANGUL SYLLABLE CWEOB
+CDC2;CDC2;110E 116F 11B9;CDC2;110E 116F 11B9; # (췂; 췂; 췂; 췂; 췂; ) HANGUL SYLLABLE CWEOBS
+CDC3;CDC3;110E 116F 11BA;CDC3;110E 116F 11BA; # (췃; 췃; 췃; 췃; 췃; ) HANGUL SYLLABLE CWEOS
+CDC4;CDC4;110E 116F 11BB;CDC4;110E 116F 11BB; # (췄; 췄; 췄; 췄; 췄; ) HANGUL SYLLABLE CWEOSS
+CDC5;CDC5;110E 116F 11BC;CDC5;110E 116F 11BC; # (췅; 췅; 췅; 췅; 췅; ) HANGUL SYLLABLE CWEONG
+CDC6;CDC6;110E 116F 11BD;CDC6;110E 116F 11BD; # (췆; 췆; 췆; 췆; 췆; ) HANGUL SYLLABLE CWEOJ
+CDC7;CDC7;110E 116F 11BE;CDC7;110E 116F 11BE; # (췇; 췇; 췇; 췇; 췇; ) HANGUL SYLLABLE CWEOC
+CDC8;CDC8;110E 116F 11BF;CDC8;110E 116F 11BF; # (췈; 췈; 췈; 췈; 췈; ) HANGUL SYLLABLE CWEOK
+CDC9;CDC9;110E 116F 11C0;CDC9;110E 116F 11C0; # (췉; 췉; 췉; 췉; 췉; ) HANGUL SYLLABLE CWEOT
+CDCA;CDCA;110E 116F 11C1;CDCA;110E 116F 11C1; # (ì·Š; ì·Š; á„Žá…¯á‡; ì·Š; á„Žá…¯á‡; ) HANGUL SYLLABLE CWEOP
+CDCB;CDCB;110E 116F 11C2;CDCB;110E 116F 11C2; # (췋; 췋; 췋; 췋; 췋; ) HANGUL SYLLABLE CWEOH
+CDCC;CDCC;110E 1170;CDCC;110E 1170; # (췌; 췌; 췌; 췌; 췌; ) HANGUL SYLLABLE CWE
+CDCD;CDCD;110E 1170 11A8;CDCD;110E 1170 11A8; # (ì·; ì·; 췍; ì·; 췍; ) HANGUL SYLLABLE CWEG
+CDCE;CDCE;110E 1170 11A9;CDCE;110E 1170 11A9; # (췎; 췎; 췎; 췎; 췎; ) HANGUL SYLLABLE CWEGG
+CDCF;CDCF;110E 1170 11AA;CDCF;110E 1170 11AA; # (ì·; ì·; 췏; ì·; 췏; ) HANGUL SYLLABLE CWEGS
+CDD0;CDD0;110E 1170 11AB;CDD0;110E 1170 11AB; # (ì·; ì·; 췐; ì·; 췐; ) HANGUL SYLLABLE CWEN
+CDD1;CDD1;110E 1170 11AC;CDD1;110E 1170 11AC; # (췑; 췑; 췑; 췑; 췑; ) HANGUL SYLLABLE CWENJ
+CDD2;CDD2;110E 1170 11AD;CDD2;110E 1170 11AD; # (췒; 췒; 췒; 췒; 췒; ) HANGUL SYLLABLE CWENH
+CDD3;CDD3;110E 1170 11AE;CDD3;110E 1170 11AE; # (췓; 췓; 췓; 췓; 췓; ) HANGUL SYLLABLE CWED
+CDD4;CDD4;110E 1170 11AF;CDD4;110E 1170 11AF; # (췔; 췔; 췔; 췔; 췔; ) HANGUL SYLLABLE CWEL
+CDD5;CDD5;110E 1170 11B0;CDD5;110E 1170 11B0; # (췕; 췕; 췕; 췕; 췕; ) HANGUL SYLLABLE CWELG
+CDD6;CDD6;110E 1170 11B1;CDD6;110E 1170 11B1; # (췖; 췖; 췖; 췖; 췖; ) HANGUL SYLLABLE CWELM
+CDD7;CDD7;110E 1170 11B2;CDD7;110E 1170 11B2; # (췗; 췗; 췗; 췗; 췗; ) HANGUL SYLLABLE CWELB
+CDD8;CDD8;110E 1170 11B3;CDD8;110E 1170 11B3; # (췘; 췘; 췘; 췘; 췘; ) HANGUL SYLLABLE CWELS
+CDD9;CDD9;110E 1170 11B4;CDD9;110E 1170 11B4; # (췙; 췙; 췙; 췙; 췙; ) HANGUL SYLLABLE CWELT
+CDDA;CDDA;110E 1170 11B5;CDDA;110E 1170 11B5; # (췚; 췚; 췚; 췚; 췚; ) HANGUL SYLLABLE CWELP
+CDDB;CDDB;110E 1170 11B6;CDDB;110E 1170 11B6; # (췛; 췛; 췛; 췛; 췛; ) HANGUL SYLLABLE CWELH
+CDDC;CDDC;110E 1170 11B7;CDDC;110E 1170 11B7; # (췜; 췜; 췜; 췜; 췜; ) HANGUL SYLLABLE CWEM
+CDDD;CDDD;110E 1170 11B8;CDDD;110E 1170 11B8; # (ì·; ì·; 췝; ì·; 췝; ) HANGUL SYLLABLE CWEB
+CDDE;CDDE;110E 1170 11B9;CDDE;110E 1170 11B9; # (췞; 췞; 췞; 췞; 췞; ) HANGUL SYLLABLE CWEBS
+CDDF;CDDF;110E 1170 11BA;CDDF;110E 1170 11BA; # (췟; 췟; 췟; 췟; 췟; ) HANGUL SYLLABLE CWES
+CDE0;CDE0;110E 1170 11BB;CDE0;110E 1170 11BB; # (췠; 췠; 췠; 췠; 췠; ) HANGUL SYLLABLE CWESS
+CDE1;CDE1;110E 1170 11BC;CDE1;110E 1170 11BC; # (췡; 췡; 췡; 췡; 췡; ) HANGUL SYLLABLE CWENG
+CDE2;CDE2;110E 1170 11BD;CDE2;110E 1170 11BD; # (췢; 췢; 췢; 췢; 췢; ) HANGUL SYLLABLE CWEJ
+CDE3;CDE3;110E 1170 11BE;CDE3;110E 1170 11BE; # (췣; 췣; 췣; 췣; 췣; ) HANGUL SYLLABLE CWEC
+CDE4;CDE4;110E 1170 11BF;CDE4;110E 1170 11BF; # (췤; 췤; 췤; 췤; 췤; ) HANGUL SYLLABLE CWEK
+CDE5;CDE5;110E 1170 11C0;CDE5;110E 1170 11C0; # (췥; 췥; 췥; 췥; 췥; ) HANGUL SYLLABLE CWET
+CDE6;CDE6;110E 1170 11C1;CDE6;110E 1170 11C1; # (ì·¦; ì·¦; á„Žá…°á‡; ì·¦; á„Žá…°á‡; ) HANGUL SYLLABLE CWEP
+CDE7;CDE7;110E 1170 11C2;CDE7;110E 1170 11C2; # (췧; 췧; 췧; 췧; 췧; ) HANGUL SYLLABLE CWEH
+CDE8;CDE8;110E 1171;CDE8;110E 1171; # (ì·¨; ì·¨; á„Žá…±; ì·¨; á„Žá…±; ) HANGUL SYLLABLE CWI
+CDE9;CDE9;110E 1171 11A8;CDE9;110E 1171 11A8; # (췩; 췩; 췩; 췩; 췩; ) HANGUL SYLLABLE CWIG
+CDEA;CDEA;110E 1171 11A9;CDEA;110E 1171 11A9; # (췪; 췪; 췪; 췪; 췪; ) HANGUL SYLLABLE CWIGG
+CDEB;CDEB;110E 1171 11AA;CDEB;110E 1171 11AA; # (췫; 췫; 췫; 췫; 췫; ) HANGUL SYLLABLE CWIGS
+CDEC;CDEC;110E 1171 11AB;CDEC;110E 1171 11AB; # (췬; 췬; 췬; 췬; 췬; ) HANGUL SYLLABLE CWIN
+CDED;CDED;110E 1171 11AC;CDED;110E 1171 11AC; # (췭; 췭; 췭; 췭; 췭; ) HANGUL SYLLABLE CWINJ
+CDEE;CDEE;110E 1171 11AD;CDEE;110E 1171 11AD; # (췮; 췮; 췮; 췮; 췮; ) HANGUL SYLLABLE CWINH
+CDEF;CDEF;110E 1171 11AE;CDEF;110E 1171 11AE; # (췯; 췯; 췯; 췯; 췯; ) HANGUL SYLLABLE CWID
+CDF0;CDF0;110E 1171 11AF;CDF0;110E 1171 11AF; # (췰; 췰; 췰; 췰; 췰; ) HANGUL SYLLABLE CWIL
+CDF1;CDF1;110E 1171 11B0;CDF1;110E 1171 11B0; # (췱; 췱; 췱; 췱; 췱; ) HANGUL SYLLABLE CWILG
+CDF2;CDF2;110E 1171 11B1;CDF2;110E 1171 11B1; # (췲; 췲; 췲; 췲; 췲; ) HANGUL SYLLABLE CWILM
+CDF3;CDF3;110E 1171 11B2;CDF3;110E 1171 11B2; # (췳; 췳; 췳; 췳; 췳; ) HANGUL SYLLABLE CWILB
+CDF4;CDF4;110E 1171 11B3;CDF4;110E 1171 11B3; # (췴; 췴; 췴; 췴; 췴; ) HANGUL SYLLABLE CWILS
+CDF5;CDF5;110E 1171 11B4;CDF5;110E 1171 11B4; # (췵; 췵; 췵; 췵; 췵; ) HANGUL SYLLABLE CWILT
+CDF6;CDF6;110E 1171 11B5;CDF6;110E 1171 11B5; # (췶; 췶; 췶; 췶; 췶; ) HANGUL SYLLABLE CWILP
+CDF7;CDF7;110E 1171 11B6;CDF7;110E 1171 11B6; # (췷; 췷; 췷; 췷; 췷; ) HANGUL SYLLABLE CWILH
+CDF8;CDF8;110E 1171 11B7;CDF8;110E 1171 11B7; # (췸; 췸; 췸; 췸; 췸; ) HANGUL SYLLABLE CWIM
+CDF9;CDF9;110E 1171 11B8;CDF9;110E 1171 11B8; # (췹; 췹; 췹; 췹; 췹; ) HANGUL SYLLABLE CWIB
+CDFA;CDFA;110E 1171 11B9;CDFA;110E 1171 11B9; # (췺; 췺; 췺; 췺; 췺; ) HANGUL SYLLABLE CWIBS
+CDFB;CDFB;110E 1171 11BA;CDFB;110E 1171 11BA; # (췻; 췻; 췻; 췻; 췻; ) HANGUL SYLLABLE CWIS
+CDFC;CDFC;110E 1171 11BB;CDFC;110E 1171 11BB; # (췼; 췼; 췼; 췼; 췼; ) HANGUL SYLLABLE CWISS
+CDFD;CDFD;110E 1171 11BC;CDFD;110E 1171 11BC; # (췽; 췽; 췽; 췽; 췽; ) HANGUL SYLLABLE CWING
+CDFE;CDFE;110E 1171 11BD;CDFE;110E 1171 11BD; # (췾; 췾; 췾; 췾; 췾; ) HANGUL SYLLABLE CWIJ
+CDFF;CDFF;110E 1171 11BE;CDFF;110E 1171 11BE; # (췿; 췿; 췿; 췿; 췿; ) HANGUL SYLLABLE CWIC
+CE00;CE00;110E 1171 11BF;CE00;110E 1171 11BF; # (츀; 츀; 츀; 츀; 츀; ) HANGUL SYLLABLE CWIK
+CE01;CE01;110E 1171 11C0;CE01;110E 1171 11C0; # (ì¸; ì¸; 츁; ì¸; 츁; ) HANGUL SYLLABLE CWIT
+CE02;CE02;110E 1171 11C1;CE02;110E 1171 11C1; # (츂; 츂; á„Žá…±á‡; 츂; á„Žá…±á‡; ) HANGUL SYLLABLE CWIP
+CE03;CE03;110E 1171 11C2;CE03;110E 1171 11C2; # (츃; 츃; 츃; 츃; 츃; ) HANGUL SYLLABLE CWIH
+CE04;CE04;110E 1172;CE04;110E 1172; # (츄; 츄; 츄; 츄; 츄; ) HANGUL SYLLABLE CYU
+CE05;CE05;110E 1172 11A8;CE05;110E 1172 11A8; # (츅; 츅; 츅; 츅; 츅; ) HANGUL SYLLABLE CYUG
+CE06;CE06;110E 1172 11A9;CE06;110E 1172 11A9; # (츆; 츆; 츆; 츆; 츆; ) HANGUL SYLLABLE CYUGG
+CE07;CE07;110E 1172 11AA;CE07;110E 1172 11AA; # (츇; 츇; 츇; 츇; 츇; ) HANGUL SYLLABLE CYUGS
+CE08;CE08;110E 1172 11AB;CE08;110E 1172 11AB; # (츈; 츈; 츈; 츈; 츈; ) HANGUL SYLLABLE CYUN
+CE09;CE09;110E 1172 11AC;CE09;110E 1172 11AC; # (츉; 츉; 츉; 츉; 츉; ) HANGUL SYLLABLE CYUNJ
+CE0A;CE0A;110E 1172 11AD;CE0A;110E 1172 11AD; # (츊; 츊; 츊; 츊; 츊; ) HANGUL SYLLABLE CYUNH
+CE0B;CE0B;110E 1172 11AE;CE0B;110E 1172 11AE; # (츋; 츋; 츋; 츋; 츋; ) HANGUL SYLLABLE CYUD
+CE0C;CE0C;110E 1172 11AF;CE0C;110E 1172 11AF; # (츌; 츌; 츌; 츌; 츌; ) HANGUL SYLLABLE CYUL
+CE0D;CE0D;110E 1172 11B0;CE0D;110E 1172 11B0; # (ì¸; ì¸; 츍; ì¸; 츍; ) HANGUL SYLLABLE CYULG
+CE0E;CE0E;110E 1172 11B1;CE0E;110E 1172 11B1; # (츎; 츎; 츎; 츎; 츎; ) HANGUL SYLLABLE CYULM
+CE0F;CE0F;110E 1172 11B2;CE0F;110E 1172 11B2; # (ì¸; ì¸; 츏; ì¸; 츏; ) HANGUL SYLLABLE CYULB
+CE10;CE10;110E 1172 11B3;CE10;110E 1172 11B3; # (ì¸; ì¸; 츐; ì¸; 츐; ) HANGUL SYLLABLE CYULS
+CE11;CE11;110E 1172 11B4;CE11;110E 1172 11B4; # (츑; 츑; 츑; 츑; 츑; ) HANGUL SYLLABLE CYULT
+CE12;CE12;110E 1172 11B5;CE12;110E 1172 11B5; # (츒; 츒; 츒; 츒; 츒; ) HANGUL SYLLABLE CYULP
+CE13;CE13;110E 1172 11B6;CE13;110E 1172 11B6; # (츓; 츓; 츓; 츓; 츓; ) HANGUL SYLLABLE CYULH
+CE14;CE14;110E 1172 11B7;CE14;110E 1172 11B7; # (츔; 츔; 츔; 츔; 츔; ) HANGUL SYLLABLE CYUM
+CE15;CE15;110E 1172 11B8;CE15;110E 1172 11B8; # (츕; 츕; 츕; 츕; 츕; ) HANGUL SYLLABLE CYUB
+CE16;CE16;110E 1172 11B9;CE16;110E 1172 11B9; # (츖; 츖; 츖; 츖; 츖; ) HANGUL SYLLABLE CYUBS
+CE17;CE17;110E 1172 11BA;CE17;110E 1172 11BA; # (츗; 츗; 츗; 츗; 츗; ) HANGUL SYLLABLE CYUS
+CE18;CE18;110E 1172 11BB;CE18;110E 1172 11BB; # (츘; 츘; 츘; 츘; 츘; ) HANGUL SYLLABLE CYUSS
+CE19;CE19;110E 1172 11BC;CE19;110E 1172 11BC; # (츙; 츙; 츙; 츙; 츙; ) HANGUL SYLLABLE CYUNG
+CE1A;CE1A;110E 1172 11BD;CE1A;110E 1172 11BD; # (츚; 츚; 츚; 츚; 츚; ) HANGUL SYLLABLE CYUJ
+CE1B;CE1B;110E 1172 11BE;CE1B;110E 1172 11BE; # (츛; 츛; 츛; 츛; 츛; ) HANGUL SYLLABLE CYUC
+CE1C;CE1C;110E 1172 11BF;CE1C;110E 1172 11BF; # (츜; 츜; 츜; 츜; 츜; ) HANGUL SYLLABLE CYUK
+CE1D;CE1D;110E 1172 11C0;CE1D;110E 1172 11C0; # (ì¸; ì¸; 츝; ì¸; 츝; ) HANGUL SYLLABLE CYUT
+CE1E;CE1E;110E 1172 11C1;CE1E;110E 1172 11C1; # (츞; 츞; á„Žá…²á‡; 츞; á„Žá…²á‡; ) HANGUL SYLLABLE CYUP
+CE1F;CE1F;110E 1172 11C2;CE1F;110E 1172 11C2; # (츟; 츟; 츟; 츟; 츟; ) HANGUL SYLLABLE CYUH
+CE20;CE20;110E 1173;CE20;110E 1173; # (츠; 츠; 츠; 츠; 츠; ) HANGUL SYLLABLE CEU
+CE21;CE21;110E 1173 11A8;CE21;110E 1173 11A8; # (측; 측; 측; 측; 측; ) HANGUL SYLLABLE CEUG
+CE22;CE22;110E 1173 11A9;CE22;110E 1173 11A9; # (츢; 츢; 츢; 츢; 츢; ) HANGUL SYLLABLE CEUGG
+CE23;CE23;110E 1173 11AA;CE23;110E 1173 11AA; # (츣; 츣; 츣; 츣; 츣; ) HANGUL SYLLABLE CEUGS
+CE24;CE24;110E 1173 11AB;CE24;110E 1173 11AB; # (츤; 츤; 츤; 츤; 츤; ) HANGUL SYLLABLE CEUN
+CE25;CE25;110E 1173 11AC;CE25;110E 1173 11AC; # (츥; 츥; 츥; 츥; 츥; ) HANGUL SYLLABLE CEUNJ
+CE26;CE26;110E 1173 11AD;CE26;110E 1173 11AD; # (츦; 츦; 츦; 츦; 츦; ) HANGUL SYLLABLE CEUNH
+CE27;CE27;110E 1173 11AE;CE27;110E 1173 11AE; # (츧; 츧; 츧; 츧; 츧; ) HANGUL SYLLABLE CEUD
+CE28;CE28;110E 1173 11AF;CE28;110E 1173 11AF; # (츨; 츨; 츨; 츨; 츨; ) HANGUL SYLLABLE CEUL
+CE29;CE29;110E 1173 11B0;CE29;110E 1173 11B0; # (츩; 츩; 츩; 츩; 츩; ) HANGUL SYLLABLE CEULG
+CE2A;CE2A;110E 1173 11B1;CE2A;110E 1173 11B1; # (츪; 츪; 츪; 츪; 츪; ) HANGUL SYLLABLE CEULM
+CE2B;CE2B;110E 1173 11B2;CE2B;110E 1173 11B2; # (츫; 츫; 츫; 츫; 츫; ) HANGUL SYLLABLE CEULB
+CE2C;CE2C;110E 1173 11B3;CE2C;110E 1173 11B3; # (츬; 츬; 츬; 츬; 츬; ) HANGUL SYLLABLE CEULS
+CE2D;CE2D;110E 1173 11B4;CE2D;110E 1173 11B4; # (츭; 츭; 츭; 츭; 츭; ) HANGUL SYLLABLE CEULT
+CE2E;CE2E;110E 1173 11B5;CE2E;110E 1173 11B5; # (츮; 츮; 츮; 츮; 츮; ) HANGUL SYLLABLE CEULP
+CE2F;CE2F;110E 1173 11B6;CE2F;110E 1173 11B6; # (츯; 츯; 츯; 츯; 츯; ) HANGUL SYLLABLE CEULH
+CE30;CE30;110E 1173 11B7;CE30;110E 1173 11B7; # (츰; 츰; 츰; 츰; 츰; ) HANGUL SYLLABLE CEUM
+CE31;CE31;110E 1173 11B8;CE31;110E 1173 11B8; # (츱; 츱; 츱; 츱; 츱; ) HANGUL SYLLABLE CEUB
+CE32;CE32;110E 1173 11B9;CE32;110E 1173 11B9; # (츲; 츲; 츲; 츲; 츲; ) HANGUL SYLLABLE CEUBS
+CE33;CE33;110E 1173 11BA;CE33;110E 1173 11BA; # (츳; 츳; 츳; 츳; 츳; ) HANGUL SYLLABLE CEUS
+CE34;CE34;110E 1173 11BB;CE34;110E 1173 11BB; # (츴; 츴; 츴; 츴; 츴; ) HANGUL SYLLABLE CEUSS
+CE35;CE35;110E 1173 11BC;CE35;110E 1173 11BC; # (층; 층; 층; 층; 층; ) HANGUL SYLLABLE CEUNG
+CE36;CE36;110E 1173 11BD;CE36;110E 1173 11BD; # (츶; 츶; 츶; 츶; 츶; ) HANGUL SYLLABLE CEUJ
+CE37;CE37;110E 1173 11BE;CE37;110E 1173 11BE; # (츷; 츷; 츷; 츷; 츷; ) HANGUL SYLLABLE CEUC
+CE38;CE38;110E 1173 11BF;CE38;110E 1173 11BF; # (츸; 츸; 츸; 츸; 츸; ) HANGUL SYLLABLE CEUK
+CE39;CE39;110E 1173 11C0;CE39;110E 1173 11C0; # (츹; 츹; 츹; 츹; 츹; ) HANGUL SYLLABLE CEUT
+CE3A;CE3A;110E 1173 11C1;CE3A;110E 1173 11C1; # (츺; 츺; á„Žá…³á‡; 츺; á„Žá…³á‡; ) HANGUL SYLLABLE CEUP
+CE3B;CE3B;110E 1173 11C2;CE3B;110E 1173 11C2; # (츻; 츻; 츻; 츻; 츻; ) HANGUL SYLLABLE CEUH
+CE3C;CE3C;110E 1174;CE3C;110E 1174; # (츼; 츼; 츼; 츼; 츼; ) HANGUL SYLLABLE CYI
+CE3D;CE3D;110E 1174 11A8;CE3D;110E 1174 11A8; # (츽; 츽; 츽; 츽; 츽; ) HANGUL SYLLABLE CYIG
+CE3E;CE3E;110E 1174 11A9;CE3E;110E 1174 11A9; # (츾; 츾; 츾; 츾; 츾; ) HANGUL SYLLABLE CYIGG
+CE3F;CE3F;110E 1174 11AA;CE3F;110E 1174 11AA; # (츿; 츿; 츿; 츿; 츿; ) HANGUL SYLLABLE CYIGS
+CE40;CE40;110E 1174 11AB;CE40;110E 1174 11AB; # (칀; 칀; 칀; 칀; 칀; ) HANGUL SYLLABLE CYIN
+CE41;CE41;110E 1174 11AC;CE41;110E 1174 11AC; # (ì¹; ì¹; 칁; ì¹; 칁; ) HANGUL SYLLABLE CYINJ
+CE42;CE42;110E 1174 11AD;CE42;110E 1174 11AD; # (칂; 칂; 칂; 칂; 칂; ) HANGUL SYLLABLE CYINH
+CE43;CE43;110E 1174 11AE;CE43;110E 1174 11AE; # (칃; 칃; 칃; 칃; 칃; ) HANGUL SYLLABLE CYID
+CE44;CE44;110E 1174 11AF;CE44;110E 1174 11AF; # (칄; 칄; 칄; 칄; 칄; ) HANGUL SYLLABLE CYIL
+CE45;CE45;110E 1174 11B0;CE45;110E 1174 11B0; # (칅; 칅; 칅; 칅; 칅; ) HANGUL SYLLABLE CYILG
+CE46;CE46;110E 1174 11B1;CE46;110E 1174 11B1; # (칆; 칆; 칆; 칆; 칆; ) HANGUL SYLLABLE CYILM
+CE47;CE47;110E 1174 11B2;CE47;110E 1174 11B2; # (칇; 칇; 칇; 칇; 칇; ) HANGUL SYLLABLE CYILB
+CE48;CE48;110E 1174 11B3;CE48;110E 1174 11B3; # (칈; 칈; 칈; 칈; 칈; ) HANGUL SYLLABLE CYILS
+CE49;CE49;110E 1174 11B4;CE49;110E 1174 11B4; # (칉; 칉; 칉; 칉; 칉; ) HANGUL SYLLABLE CYILT
+CE4A;CE4A;110E 1174 11B5;CE4A;110E 1174 11B5; # (칊; 칊; 칊; 칊; 칊; ) HANGUL SYLLABLE CYILP
+CE4B;CE4B;110E 1174 11B6;CE4B;110E 1174 11B6; # (칋; 칋; 칋; 칋; 칋; ) HANGUL SYLLABLE CYILH
+CE4C;CE4C;110E 1174 11B7;CE4C;110E 1174 11B7; # (칌; 칌; 칌; 칌; 칌; ) HANGUL SYLLABLE CYIM
+CE4D;CE4D;110E 1174 11B8;CE4D;110E 1174 11B8; # (ì¹; ì¹; 칍; ì¹; 칍; ) HANGUL SYLLABLE CYIB
+CE4E;CE4E;110E 1174 11B9;CE4E;110E 1174 11B9; # (칎; 칎; 칎; 칎; 칎; ) HANGUL SYLLABLE CYIBS
+CE4F;CE4F;110E 1174 11BA;CE4F;110E 1174 11BA; # (ì¹; ì¹; 칏; ì¹; 칏; ) HANGUL SYLLABLE CYIS
+CE50;CE50;110E 1174 11BB;CE50;110E 1174 11BB; # (ì¹; ì¹; 칐; ì¹; 칐; ) HANGUL SYLLABLE CYISS
+CE51;CE51;110E 1174 11BC;CE51;110E 1174 11BC; # (칑; 칑; 칑; 칑; 칑; ) HANGUL SYLLABLE CYING
+CE52;CE52;110E 1174 11BD;CE52;110E 1174 11BD; # (칒; 칒; 칒; 칒; 칒; ) HANGUL SYLLABLE CYIJ
+CE53;CE53;110E 1174 11BE;CE53;110E 1174 11BE; # (칓; 칓; 칓; 칓; 칓; ) HANGUL SYLLABLE CYIC
+CE54;CE54;110E 1174 11BF;CE54;110E 1174 11BF; # (칔; 칔; 칔; 칔; 칔; ) HANGUL SYLLABLE CYIK
+CE55;CE55;110E 1174 11C0;CE55;110E 1174 11C0; # (칕; 칕; 칕; 칕; 칕; ) HANGUL SYLLABLE CYIT
+CE56;CE56;110E 1174 11C1;CE56;110E 1174 11C1; # (ì¹–; ì¹–; á„Žá…´á‡; ì¹–; á„Žá…´á‡; ) HANGUL SYLLABLE CYIP
+CE57;CE57;110E 1174 11C2;CE57;110E 1174 11C2; # (칗; 칗; 칗; 칗; 칗; ) HANGUL SYLLABLE CYIH
+CE58;CE58;110E 1175;CE58;110E 1175; # (치; 치; 치; 치; 치; ) HANGUL SYLLABLE CI
+CE59;CE59;110E 1175 11A8;CE59;110E 1175 11A8; # (칙; 칙; 칙; 칙; 칙; ) HANGUL SYLLABLE CIG
+CE5A;CE5A;110E 1175 11A9;CE5A;110E 1175 11A9; # (칚; 칚; 칚; 칚; 칚; ) HANGUL SYLLABLE CIGG
+CE5B;CE5B;110E 1175 11AA;CE5B;110E 1175 11AA; # (칛; 칛; 칛; 칛; 칛; ) HANGUL SYLLABLE CIGS
+CE5C;CE5C;110E 1175 11AB;CE5C;110E 1175 11AB; # (친; 친; 친; 친; 친; ) HANGUL SYLLABLE CIN
+CE5D;CE5D;110E 1175 11AC;CE5D;110E 1175 11AC; # (ì¹; ì¹; 칝; ì¹; 칝; ) HANGUL SYLLABLE CINJ
+CE5E;CE5E;110E 1175 11AD;CE5E;110E 1175 11AD; # (칞; 칞; 칞; 칞; 칞; ) HANGUL SYLLABLE CINH
+CE5F;CE5F;110E 1175 11AE;CE5F;110E 1175 11AE; # (칟; 칟; 칟; 칟; 칟; ) HANGUL SYLLABLE CID
+CE60;CE60;110E 1175 11AF;CE60;110E 1175 11AF; # (칠; 칠; 칠; 칠; 칠; ) HANGUL SYLLABLE CIL
+CE61;CE61;110E 1175 11B0;CE61;110E 1175 11B0; # (칡; 칡; 칡; 칡; 칡; ) HANGUL SYLLABLE CILG
+CE62;CE62;110E 1175 11B1;CE62;110E 1175 11B1; # (칢; 칢; 칢; 칢; 칢; ) HANGUL SYLLABLE CILM
+CE63;CE63;110E 1175 11B2;CE63;110E 1175 11B2; # (칣; 칣; 칣; 칣; 칣; ) HANGUL SYLLABLE CILB
+CE64;CE64;110E 1175 11B3;CE64;110E 1175 11B3; # (칤; 칤; 칤; 칤; 칤; ) HANGUL SYLLABLE CILS
+CE65;CE65;110E 1175 11B4;CE65;110E 1175 11B4; # (칥; 칥; 칥; 칥; 칥; ) HANGUL SYLLABLE CILT
+CE66;CE66;110E 1175 11B5;CE66;110E 1175 11B5; # (칦; 칦; 칦; 칦; 칦; ) HANGUL SYLLABLE CILP
+CE67;CE67;110E 1175 11B6;CE67;110E 1175 11B6; # (칧; 칧; 칧; 칧; 칧; ) HANGUL SYLLABLE CILH
+CE68;CE68;110E 1175 11B7;CE68;110E 1175 11B7; # (침; 침; 침; 침; 침; ) HANGUL SYLLABLE CIM
+CE69;CE69;110E 1175 11B8;CE69;110E 1175 11B8; # (칩; 칩; 칩; 칩; 칩; ) HANGUL SYLLABLE CIB
+CE6A;CE6A;110E 1175 11B9;CE6A;110E 1175 11B9; # (칪; 칪; 칪; 칪; 칪; ) HANGUL SYLLABLE CIBS
+CE6B;CE6B;110E 1175 11BA;CE6B;110E 1175 11BA; # (칫; 칫; 칫; 칫; 칫; ) HANGUL SYLLABLE CIS
+CE6C;CE6C;110E 1175 11BB;CE6C;110E 1175 11BB; # (칬; 칬; 칬; 칬; 칬; ) HANGUL SYLLABLE CISS
+CE6D;CE6D;110E 1175 11BC;CE6D;110E 1175 11BC; # (칭; 칭; 칭; 칭; 칭; ) HANGUL SYLLABLE CING
+CE6E;CE6E;110E 1175 11BD;CE6E;110E 1175 11BD; # (칮; 칮; 칮; 칮; 칮; ) HANGUL SYLLABLE CIJ
+CE6F;CE6F;110E 1175 11BE;CE6F;110E 1175 11BE; # (칯; 칯; 칯; 칯; 칯; ) HANGUL SYLLABLE CIC
+CE70;CE70;110E 1175 11BF;CE70;110E 1175 11BF; # (칰; 칰; 칰; 칰; 칰; ) HANGUL SYLLABLE CIK
+CE71;CE71;110E 1175 11C0;CE71;110E 1175 11C0; # (칱; 칱; 칱; 칱; 칱; ) HANGUL SYLLABLE CIT
+CE72;CE72;110E 1175 11C1;CE72;110E 1175 11C1; # (ì¹²; ì¹²; á„Žá…µá‡; ì¹²; á„Žá…µá‡; ) HANGUL SYLLABLE CIP
+CE73;CE73;110E 1175 11C2;CE73;110E 1175 11C2; # (칳; 칳; 칳; 칳; 칳; ) HANGUL SYLLABLE CIH
+CE74;CE74;110F 1161;CE74;110F 1161; # (ì¹´; ì¹´; á„á…¡; ì¹´; á„á…¡; ) HANGUL SYLLABLE KA
+CE75;CE75;110F 1161 11A8;CE75;110F 1161 11A8; # (ì¹µ; ì¹µ; á„ᅡᆨ; ì¹µ; á„ᅡᆨ; ) HANGUL SYLLABLE KAG
+CE76;CE76;110F 1161 11A9;CE76;110F 1161 11A9; # (칶; 칶; á„ᅡᆩ; 칶; á„ᅡᆩ; ) HANGUL SYLLABLE KAGG
+CE77;CE77;110F 1161 11AA;CE77;110F 1161 11AA; # (ì¹·; ì¹·; á„ᅡᆪ; ì¹·; á„ᅡᆪ; ) HANGUL SYLLABLE KAGS
+CE78;CE78;110F 1161 11AB;CE78;110F 1161 11AB; # (칸; 칸; á„ᅡᆫ; 칸; á„ᅡᆫ; ) HANGUL SYLLABLE KAN
+CE79;CE79;110F 1161 11AC;CE79;110F 1161 11AC; # (ì¹¹; ì¹¹; á„ᅡᆬ; ì¹¹; á„ᅡᆬ; ) HANGUL SYLLABLE KANJ
+CE7A;CE7A;110F 1161 11AD;CE7A;110F 1161 11AD; # (칺; 칺; á„ᅡᆭ; 칺; á„ᅡᆭ; ) HANGUL SYLLABLE KANH
+CE7B;CE7B;110F 1161 11AE;CE7B;110F 1161 11AE; # (ì¹»; ì¹»; á„ᅡᆮ; ì¹»; á„ᅡᆮ; ) HANGUL SYLLABLE KAD
+CE7C;CE7C;110F 1161 11AF;CE7C;110F 1161 11AF; # (ì¹¼; ì¹¼; á„ᅡᆯ; ì¹¼; á„ᅡᆯ; ) HANGUL SYLLABLE KAL
+CE7D;CE7D;110F 1161 11B0;CE7D;110F 1161 11B0; # (ì¹½; ì¹½; á„ᅡᆰ; ì¹½; á„ᅡᆰ; ) HANGUL SYLLABLE KALG
+CE7E;CE7E;110F 1161 11B1;CE7E;110F 1161 11B1; # (ì¹¾; ì¹¾; á„ᅡᆱ; ì¹¾; á„ᅡᆱ; ) HANGUL SYLLABLE KALM
+CE7F;CE7F;110F 1161 11B2;CE7F;110F 1161 11B2; # (칿; 칿; á„ᅡᆲ; 칿; á„ᅡᆲ; ) HANGUL SYLLABLE KALB
+CE80;CE80;110F 1161 11B3;CE80;110F 1161 11B3; # (캀; 캀; á„ᅡᆳ; 캀; á„ᅡᆳ; ) HANGUL SYLLABLE KALS
+CE81;CE81;110F 1161 11B4;CE81;110F 1161 11B4; # (ìº; ìº; á„ᅡᆴ; ìº; á„ᅡᆴ; ) HANGUL SYLLABLE KALT
+CE82;CE82;110F 1161 11B5;CE82;110F 1161 11B5; # (캂; 캂; á„ᅡᆵ; 캂; á„ᅡᆵ; ) HANGUL SYLLABLE KALP
+CE83;CE83;110F 1161 11B6;CE83;110F 1161 11B6; # (캃; 캃; á„ᅡᆶ; 캃; á„ᅡᆶ; ) HANGUL SYLLABLE KALH
+CE84;CE84;110F 1161 11B7;CE84;110F 1161 11B7; # (캄; 캄; á„ᅡᆷ; 캄; á„ᅡᆷ; ) HANGUL SYLLABLE KAM
+CE85;CE85;110F 1161 11B8;CE85;110F 1161 11B8; # (캅; 캅; á„ᅡᆸ; 캅; á„ᅡᆸ; ) HANGUL SYLLABLE KAB
+CE86;CE86;110F 1161 11B9;CE86;110F 1161 11B9; # (캆; 캆; á„ᅡᆹ; 캆; á„ᅡᆹ; ) HANGUL SYLLABLE KABS
+CE87;CE87;110F 1161 11BA;CE87;110F 1161 11BA; # (캇; 캇; á„ᅡᆺ; 캇; á„ᅡᆺ; ) HANGUL SYLLABLE KAS
+CE88;CE88;110F 1161 11BB;CE88;110F 1161 11BB; # (캈; 캈; á„ᅡᆻ; 캈; á„ᅡᆻ; ) HANGUL SYLLABLE KASS
+CE89;CE89;110F 1161 11BC;CE89;110F 1161 11BC; # (캉; 캉; á„ᅡᆼ; 캉; á„ᅡᆼ; ) HANGUL SYLLABLE KANG
+CE8A;CE8A;110F 1161 11BD;CE8A;110F 1161 11BD; # (캊; 캊; á„ᅡᆽ; 캊; á„ᅡᆽ; ) HANGUL SYLLABLE KAJ
+CE8B;CE8B;110F 1161 11BE;CE8B;110F 1161 11BE; # (캋; 캋; á„ᅡᆾ; 캋; á„ᅡᆾ; ) HANGUL SYLLABLE KAC
+CE8C;CE8C;110F 1161 11BF;CE8C;110F 1161 11BF; # (캌; 캌; á„ᅡᆿ; 캌; á„ᅡᆿ; ) HANGUL SYLLABLE KAK
+CE8D;CE8D;110F 1161 11C0;CE8D;110F 1161 11C0; # (ìº; ìº; á„ᅡᇀ; ìº; á„ᅡᇀ; ) HANGUL SYLLABLE KAT
+CE8E;CE8E;110F 1161 11C1;CE8E;110F 1161 11C1; # (캎; 캎; á„á…¡á‡; 캎; á„á…¡á‡; ) HANGUL SYLLABLE KAP
+CE8F;CE8F;110F 1161 11C2;CE8F;110F 1161 11C2; # (ìº; ìº; á„ᅡᇂ; ìº; á„ᅡᇂ; ) HANGUL SYLLABLE KAH
+CE90;CE90;110F 1162;CE90;110F 1162; # (ìº; ìº; á„á…¢; ìº; á„á…¢; ) HANGUL SYLLABLE KAE
+CE91;CE91;110F 1162 11A8;CE91;110F 1162 11A8; # (캑; 캑; á„ᅢᆨ; 캑; á„ᅢᆨ; ) HANGUL SYLLABLE KAEG
+CE92;CE92;110F 1162 11A9;CE92;110F 1162 11A9; # (캒; 캒; á„ᅢᆩ; 캒; á„ᅢᆩ; ) HANGUL SYLLABLE KAEGG
+CE93;CE93;110F 1162 11AA;CE93;110F 1162 11AA; # (캓; 캓; á„ᅢᆪ; 캓; á„ᅢᆪ; ) HANGUL SYLLABLE KAEGS
+CE94;CE94;110F 1162 11AB;CE94;110F 1162 11AB; # (캔; 캔; á„ᅢᆫ; 캔; á„ᅢᆫ; ) HANGUL SYLLABLE KAEN
+CE95;CE95;110F 1162 11AC;CE95;110F 1162 11AC; # (캕; 캕; á„ᅢᆬ; 캕; á„ᅢᆬ; ) HANGUL SYLLABLE KAENJ
+CE96;CE96;110F 1162 11AD;CE96;110F 1162 11AD; # (캖; 캖; á„ᅢᆭ; 캖; á„ᅢᆭ; ) HANGUL SYLLABLE KAENH
+CE97;CE97;110F 1162 11AE;CE97;110F 1162 11AE; # (캗; 캗; á„ᅢᆮ; 캗; á„ᅢᆮ; ) HANGUL SYLLABLE KAED
+CE98;CE98;110F 1162 11AF;CE98;110F 1162 11AF; # (캘; 캘; á„ᅢᆯ; 캘; á„ᅢᆯ; ) HANGUL SYLLABLE KAEL
+CE99;CE99;110F 1162 11B0;CE99;110F 1162 11B0; # (캙; 캙; á„ᅢᆰ; 캙; á„ᅢᆰ; ) HANGUL SYLLABLE KAELG
+CE9A;CE9A;110F 1162 11B1;CE9A;110F 1162 11B1; # (캚; 캚; á„ᅢᆱ; 캚; á„ᅢᆱ; ) HANGUL SYLLABLE KAELM
+CE9B;CE9B;110F 1162 11B2;CE9B;110F 1162 11B2; # (캛; 캛; á„ᅢᆲ; 캛; á„ᅢᆲ; ) HANGUL SYLLABLE KAELB
+CE9C;CE9C;110F 1162 11B3;CE9C;110F 1162 11B3; # (캜; 캜; á„ᅢᆳ; 캜; á„ᅢᆳ; ) HANGUL SYLLABLE KAELS
+CE9D;CE9D;110F 1162 11B4;CE9D;110F 1162 11B4; # (ìº; ìº; á„ᅢᆴ; ìº; á„ᅢᆴ; ) HANGUL SYLLABLE KAELT
+CE9E;CE9E;110F 1162 11B5;CE9E;110F 1162 11B5; # (캞; 캞; á„ᅢᆵ; 캞; á„ᅢᆵ; ) HANGUL SYLLABLE KAELP
+CE9F;CE9F;110F 1162 11B6;CE9F;110F 1162 11B6; # (캟; 캟; á„ᅢᆶ; 캟; á„ᅢᆶ; ) HANGUL SYLLABLE KAELH
+CEA0;CEA0;110F 1162 11B7;CEA0;110F 1162 11B7; # (캠; 캠; á„ᅢᆷ; 캠; á„ᅢᆷ; ) HANGUL SYLLABLE KAEM
+CEA1;CEA1;110F 1162 11B8;CEA1;110F 1162 11B8; # (캡; 캡; á„ᅢᆸ; 캡; á„ᅢᆸ; ) HANGUL SYLLABLE KAEB
+CEA2;CEA2;110F 1162 11B9;CEA2;110F 1162 11B9; # (캢; 캢; á„ᅢᆹ; 캢; á„ᅢᆹ; ) HANGUL SYLLABLE KAEBS
+CEA3;CEA3;110F 1162 11BA;CEA3;110F 1162 11BA; # (캣; 캣; á„ᅢᆺ; 캣; á„ᅢᆺ; ) HANGUL SYLLABLE KAES
+CEA4;CEA4;110F 1162 11BB;CEA4;110F 1162 11BB; # (캤; 캤; á„ᅢᆻ; 캤; á„ᅢᆻ; ) HANGUL SYLLABLE KAESS
+CEA5;CEA5;110F 1162 11BC;CEA5;110F 1162 11BC; # (캥; 캥; á„ᅢᆼ; 캥; á„ᅢᆼ; ) HANGUL SYLLABLE KAENG
+CEA6;CEA6;110F 1162 11BD;CEA6;110F 1162 11BD; # (캦; 캦; á„ᅢᆽ; 캦; á„ᅢᆽ; ) HANGUL SYLLABLE KAEJ
+CEA7;CEA7;110F 1162 11BE;CEA7;110F 1162 11BE; # (캧; 캧; á„ᅢᆾ; 캧; á„ᅢᆾ; ) HANGUL SYLLABLE KAEC
+CEA8;CEA8;110F 1162 11BF;CEA8;110F 1162 11BF; # (캨; 캨; á„ᅢᆿ; 캨; á„ᅢᆿ; ) HANGUL SYLLABLE KAEK
+CEA9;CEA9;110F 1162 11C0;CEA9;110F 1162 11C0; # (캩; 캩; á„ᅢᇀ; 캩; á„ᅢᇀ; ) HANGUL SYLLABLE KAET
+CEAA;CEAA;110F 1162 11C1;CEAA;110F 1162 11C1; # (캪; 캪; á„á…¢á‡; 캪; á„á…¢á‡; ) HANGUL SYLLABLE KAEP
+CEAB;CEAB;110F 1162 11C2;CEAB;110F 1162 11C2; # (캫; 캫; á„ᅢᇂ; 캫; á„ᅢᇂ; ) HANGUL SYLLABLE KAEH
+CEAC;CEAC;110F 1163;CEAC;110F 1163; # (캬; 캬; á„á…£; 캬; á„á…£; ) HANGUL SYLLABLE KYA
+CEAD;CEAD;110F 1163 11A8;CEAD;110F 1163 11A8; # (캭; 캭; á„ᅣᆨ; 캭; á„ᅣᆨ; ) HANGUL SYLLABLE KYAG
+CEAE;CEAE;110F 1163 11A9;CEAE;110F 1163 11A9; # (캮; 캮; á„ᅣᆩ; 캮; á„ᅣᆩ; ) HANGUL SYLLABLE KYAGG
+CEAF;CEAF;110F 1163 11AA;CEAF;110F 1163 11AA; # (캯; 캯; á„ᅣᆪ; 캯; á„ᅣᆪ; ) HANGUL SYLLABLE KYAGS
+CEB0;CEB0;110F 1163 11AB;CEB0;110F 1163 11AB; # (캰; 캰; á„ᅣᆫ; 캰; á„ᅣᆫ; ) HANGUL SYLLABLE KYAN
+CEB1;CEB1;110F 1163 11AC;CEB1;110F 1163 11AC; # (캱; 캱; á„ᅣᆬ; 캱; á„ᅣᆬ; ) HANGUL SYLLABLE KYANJ
+CEB2;CEB2;110F 1163 11AD;CEB2;110F 1163 11AD; # (캲; 캲; á„ᅣᆭ; 캲; á„ᅣᆭ; ) HANGUL SYLLABLE KYANH
+CEB3;CEB3;110F 1163 11AE;CEB3;110F 1163 11AE; # (캳; 캳; á„ᅣᆮ; 캳; á„ᅣᆮ; ) HANGUL SYLLABLE KYAD
+CEB4;CEB4;110F 1163 11AF;CEB4;110F 1163 11AF; # (캴; 캴; á„ᅣᆯ; 캴; á„ᅣᆯ; ) HANGUL SYLLABLE KYAL
+CEB5;CEB5;110F 1163 11B0;CEB5;110F 1163 11B0; # (캵; 캵; á„ᅣᆰ; 캵; á„ᅣᆰ; ) HANGUL SYLLABLE KYALG
+CEB6;CEB6;110F 1163 11B1;CEB6;110F 1163 11B1; # (캶; 캶; á„ᅣᆱ; 캶; á„ᅣᆱ; ) HANGUL SYLLABLE KYALM
+CEB7;CEB7;110F 1163 11B2;CEB7;110F 1163 11B2; # (캷; 캷; á„ᅣᆲ; 캷; á„ᅣᆲ; ) HANGUL SYLLABLE KYALB
+CEB8;CEB8;110F 1163 11B3;CEB8;110F 1163 11B3; # (캸; 캸; á„ᅣᆳ; 캸; á„ᅣᆳ; ) HANGUL SYLLABLE KYALS
+CEB9;CEB9;110F 1163 11B4;CEB9;110F 1163 11B4; # (캹; 캹; á„ᅣᆴ; 캹; á„ᅣᆴ; ) HANGUL SYLLABLE KYALT
+CEBA;CEBA;110F 1163 11B5;CEBA;110F 1163 11B5; # (캺; 캺; á„ᅣᆵ; 캺; á„ᅣᆵ; ) HANGUL SYLLABLE KYALP
+CEBB;CEBB;110F 1163 11B6;CEBB;110F 1163 11B6; # (캻; 캻; á„ᅣᆶ; 캻; á„ᅣᆶ; ) HANGUL SYLLABLE KYALH
+CEBC;CEBC;110F 1163 11B7;CEBC;110F 1163 11B7; # (캼; 캼; á„ᅣᆷ; 캼; á„ᅣᆷ; ) HANGUL SYLLABLE KYAM
+CEBD;CEBD;110F 1163 11B8;CEBD;110F 1163 11B8; # (캽; 캽; á„ᅣᆸ; 캽; á„ᅣᆸ; ) HANGUL SYLLABLE KYAB
+CEBE;CEBE;110F 1163 11B9;CEBE;110F 1163 11B9; # (캾; 캾; á„ᅣᆹ; 캾; á„ᅣᆹ; ) HANGUL SYLLABLE KYABS
+CEBF;CEBF;110F 1163 11BA;CEBF;110F 1163 11BA; # (캿; 캿; á„ᅣᆺ; 캿; á„ᅣᆺ; ) HANGUL SYLLABLE KYAS
+CEC0;CEC0;110F 1163 11BB;CEC0;110F 1163 11BB; # (컀; 컀; á„ᅣᆻ; 컀; á„ᅣᆻ; ) HANGUL SYLLABLE KYASS
+CEC1;CEC1;110F 1163 11BC;CEC1;110F 1163 11BC; # (ì»; ì»; á„ᅣᆼ; ì»; á„ᅣᆼ; ) HANGUL SYLLABLE KYANG
+CEC2;CEC2;110F 1163 11BD;CEC2;110F 1163 11BD; # (컂; 컂; á„ᅣᆽ; 컂; á„ᅣᆽ; ) HANGUL SYLLABLE KYAJ
+CEC3;CEC3;110F 1163 11BE;CEC3;110F 1163 11BE; # (컃; 컃; á„ᅣᆾ; 컃; á„ᅣᆾ; ) HANGUL SYLLABLE KYAC
+CEC4;CEC4;110F 1163 11BF;CEC4;110F 1163 11BF; # (컄; 컄; á„ᅣᆿ; 컄; á„ᅣᆿ; ) HANGUL SYLLABLE KYAK
+CEC5;CEC5;110F 1163 11C0;CEC5;110F 1163 11C0; # (ì»…; ì»…; á„ᅣᇀ; ì»…; á„ᅣᇀ; ) HANGUL SYLLABLE KYAT
+CEC6;CEC6;110F 1163 11C1;CEC6;110F 1163 11C1; # (컆; 컆; á„á…£á‡; 컆; á„á…£á‡; ) HANGUL SYLLABLE KYAP
+CEC7;CEC7;110F 1163 11C2;CEC7;110F 1163 11C2; # (컇; 컇; á„ᅣᇂ; 컇; á„ᅣᇂ; ) HANGUL SYLLABLE KYAH
+CEC8;CEC8;110F 1164;CEC8;110F 1164; # (컈; 컈; á„á…¤; 컈; á„á…¤; ) HANGUL SYLLABLE KYAE
+CEC9;CEC9;110F 1164 11A8;CEC9;110F 1164 11A8; # (컉; 컉; á„ᅤᆨ; 컉; á„ᅤᆨ; ) HANGUL SYLLABLE KYAEG
+CECA;CECA;110F 1164 11A9;CECA;110F 1164 11A9; # (컊; 컊; á„ᅤᆩ; 컊; á„ᅤᆩ; ) HANGUL SYLLABLE KYAEGG
+CECB;CECB;110F 1164 11AA;CECB;110F 1164 11AA; # (컋; 컋; á„ᅤᆪ; 컋; á„ᅤᆪ; ) HANGUL SYLLABLE KYAEGS
+CECC;CECC;110F 1164 11AB;CECC;110F 1164 11AB; # (컌; 컌; á„ᅤᆫ; 컌; á„ᅤᆫ; ) HANGUL SYLLABLE KYAEN
+CECD;CECD;110F 1164 11AC;CECD;110F 1164 11AC; # (ì»; ì»; á„ᅤᆬ; ì»; á„ᅤᆬ; ) HANGUL SYLLABLE KYAENJ
+CECE;CECE;110F 1164 11AD;CECE;110F 1164 11AD; # (컎; 컎; á„ᅤᆭ; 컎; á„ᅤᆭ; ) HANGUL SYLLABLE KYAENH
+CECF;CECF;110F 1164 11AE;CECF;110F 1164 11AE; # (ì»; ì»; á„ᅤᆮ; ì»; á„ᅤᆮ; ) HANGUL SYLLABLE KYAED
+CED0;CED0;110F 1164 11AF;CED0;110F 1164 11AF; # (ì»; ì»; á„ᅤᆯ; ì»; á„ᅤᆯ; ) HANGUL SYLLABLE KYAEL
+CED1;CED1;110F 1164 11B0;CED1;110F 1164 11B0; # (컑; 컑; á„ᅤᆰ; 컑; á„ᅤᆰ; ) HANGUL SYLLABLE KYAELG
+CED2;CED2;110F 1164 11B1;CED2;110F 1164 11B1; # (ì»’; ì»’; á„ᅤᆱ; ì»’; á„ᅤᆱ; ) HANGUL SYLLABLE KYAELM
+CED3;CED3;110F 1164 11B2;CED3;110F 1164 11B2; # (컓; 컓; á„ᅤᆲ; 컓; á„ᅤᆲ; ) HANGUL SYLLABLE KYAELB
+CED4;CED4;110F 1164 11B3;CED4;110F 1164 11B3; # (ì»”; ì»”; á„ᅤᆳ; ì»”; á„ᅤᆳ; ) HANGUL SYLLABLE KYAELS
+CED5;CED5;110F 1164 11B4;CED5;110F 1164 11B4; # (컕; 컕; á„ᅤᆴ; 컕; á„ᅤᆴ; ) HANGUL SYLLABLE KYAELT
+CED6;CED6;110F 1164 11B5;CED6;110F 1164 11B5; # (ì»–; ì»–; á„ᅤᆵ; ì»–; á„ᅤᆵ; ) HANGUL SYLLABLE KYAELP
+CED7;CED7;110F 1164 11B6;CED7;110F 1164 11B6; # (ì»—; ì»—; á„ᅤᆶ; ì»—; á„ᅤᆶ; ) HANGUL SYLLABLE KYAELH
+CED8;CED8;110F 1164 11B7;CED8;110F 1164 11B7; # (컘; 컘; á„ᅤᆷ; 컘; á„ᅤᆷ; ) HANGUL SYLLABLE KYAEM
+CED9;CED9;110F 1164 11B8;CED9;110F 1164 11B8; # (ì»™; ì»™; á„ᅤᆸ; ì»™; á„ᅤᆸ; ) HANGUL SYLLABLE KYAEB
+CEDA;CEDA;110F 1164 11B9;CEDA;110F 1164 11B9; # (컚; 컚; á„ᅤᆹ; 컚; á„ᅤᆹ; ) HANGUL SYLLABLE KYAEBS
+CEDB;CEDB;110F 1164 11BA;CEDB;110F 1164 11BA; # (ì»›; ì»›; á„ᅤᆺ; ì»›; á„ᅤᆺ; ) HANGUL SYLLABLE KYAES
+CEDC;CEDC;110F 1164 11BB;CEDC;110F 1164 11BB; # (컜; 컜; á„ᅤᆻ; 컜; á„ᅤᆻ; ) HANGUL SYLLABLE KYAESS
+CEDD;CEDD;110F 1164 11BC;CEDD;110F 1164 11BC; # (ì»; ì»; á„ᅤᆼ; ì»; á„ᅤᆼ; ) HANGUL SYLLABLE KYAENG
+CEDE;CEDE;110F 1164 11BD;CEDE;110F 1164 11BD; # (컞; 컞; á„ᅤᆽ; 컞; á„ᅤᆽ; ) HANGUL SYLLABLE KYAEJ
+CEDF;CEDF;110F 1164 11BE;CEDF;110F 1164 11BE; # (컟; 컟; á„ᅤᆾ; 컟; á„ᅤᆾ; ) HANGUL SYLLABLE KYAEC
+CEE0;CEE0;110F 1164 11BF;CEE0;110F 1164 11BF; # (ì» ; ì» ; á„ᅤᆿ; ì» ; á„ᅤᆿ; ) HANGUL SYLLABLE KYAEK
+CEE1;CEE1;110F 1164 11C0;CEE1;110F 1164 11C0; # (컡; 컡; á„ᅤᇀ; 컡; á„ᅤᇀ; ) HANGUL SYLLABLE KYAET
+CEE2;CEE2;110F 1164 11C1;CEE2;110F 1164 11C1; # (컢; 컢; á„á…¤á‡; 컢; á„á…¤á‡; ) HANGUL SYLLABLE KYAEP
+CEE3;CEE3;110F 1164 11C2;CEE3;110F 1164 11C2; # (컣; 컣; á„ᅤᇂ; 컣; á„ᅤᇂ; ) HANGUL SYLLABLE KYAEH
+CEE4;CEE4;110F 1165;CEE4;110F 1165; # (커; 커; á„á…¥; 커; á„á…¥; ) HANGUL SYLLABLE KEO
+CEE5;CEE5;110F 1165 11A8;CEE5;110F 1165 11A8; # (컥; 컥; á„ᅥᆨ; 컥; á„ᅥᆨ; ) HANGUL SYLLABLE KEOG
+CEE6;CEE6;110F 1165 11A9;CEE6;110F 1165 11A9; # (컦; 컦; á„ᅥᆩ; 컦; á„ᅥᆩ; ) HANGUL SYLLABLE KEOGG
+CEE7;CEE7;110F 1165 11AA;CEE7;110F 1165 11AA; # (컧; 컧; á„ᅥᆪ; 컧; á„ᅥᆪ; ) HANGUL SYLLABLE KEOGS
+CEE8;CEE8;110F 1165 11AB;CEE8;110F 1165 11AB; # (컨; 컨; á„ᅥᆫ; 컨; á„ᅥᆫ; ) HANGUL SYLLABLE KEON
+CEE9;CEE9;110F 1165 11AC;CEE9;110F 1165 11AC; # (컩; 컩; á„ᅥᆬ; 컩; á„ᅥᆬ; ) HANGUL SYLLABLE KEONJ
+CEEA;CEEA;110F 1165 11AD;CEEA;110F 1165 11AD; # (컪; 컪; á„ᅥᆭ; 컪; á„ᅥᆭ; ) HANGUL SYLLABLE KEONH
+CEEB;CEEB;110F 1165 11AE;CEEB;110F 1165 11AE; # (컫; 컫; á„ᅥᆮ; 컫; á„ᅥᆮ; ) HANGUL SYLLABLE KEOD
+CEEC;CEEC;110F 1165 11AF;CEEC;110F 1165 11AF; # (컬; 컬; á„ᅥᆯ; 컬; á„ᅥᆯ; ) HANGUL SYLLABLE KEOL
+CEED;CEED;110F 1165 11B0;CEED;110F 1165 11B0; # (ì»­; ì»­; á„ᅥᆰ; ì»­; á„ᅥᆰ; ) HANGUL SYLLABLE KEOLG
+CEEE;CEEE;110F 1165 11B1;CEEE;110F 1165 11B1; # (ì»®; ì»®; á„ᅥᆱ; ì»®; á„ᅥᆱ; ) HANGUL SYLLABLE KEOLM
+CEEF;CEEF;110F 1165 11B2;CEEF;110F 1165 11B2; # (컯; 컯; á„ᅥᆲ; 컯; á„ᅥᆲ; ) HANGUL SYLLABLE KEOLB
+CEF0;CEF0;110F 1165 11B3;CEF0;110F 1165 11B3; # (ì»°; ì»°; á„ᅥᆳ; ì»°; á„ᅥᆳ; ) HANGUL SYLLABLE KEOLS
+CEF1;CEF1;110F 1165 11B4;CEF1;110F 1165 11B4; # (ì»±; ì»±; á„ᅥᆴ; ì»±; á„ᅥᆴ; ) HANGUL SYLLABLE KEOLT
+CEF2;CEF2;110F 1165 11B5;CEF2;110F 1165 11B5; # (컲; 컲; á„ᅥᆵ; 컲; á„ᅥᆵ; ) HANGUL SYLLABLE KEOLP
+CEF3;CEF3;110F 1165 11B6;CEF3;110F 1165 11B6; # (컳; 컳; á„ᅥᆶ; 컳; á„ᅥᆶ; ) HANGUL SYLLABLE KEOLH
+CEF4;CEF4;110F 1165 11B7;CEF4;110F 1165 11B7; # (ì»´; ì»´; á„ᅥᆷ; ì»´; á„ᅥᆷ; ) HANGUL SYLLABLE KEOM
+CEF5;CEF5;110F 1165 11B8;CEF5;110F 1165 11B8; # (컵; 컵; á„ᅥᆸ; 컵; á„ᅥᆸ; ) HANGUL SYLLABLE KEOB
+CEF6;CEF6;110F 1165 11B9;CEF6;110F 1165 11B9; # (컶; 컶; á„ᅥᆹ; 컶; á„ᅥᆹ; ) HANGUL SYLLABLE KEOBS
+CEF7;CEF7;110F 1165 11BA;CEF7;110F 1165 11BA; # (ì»·; ì»·; á„ᅥᆺ; ì»·; á„ᅥᆺ; ) HANGUL SYLLABLE KEOS
+CEF8;CEF8;110F 1165 11BB;CEF8;110F 1165 11BB; # (컸; 컸; á„ᅥᆻ; 컸; á„ᅥᆻ; ) HANGUL SYLLABLE KEOSS
+CEF9;CEF9;110F 1165 11BC;CEF9;110F 1165 11BC; # (컹; 컹; á„ᅥᆼ; 컹; á„ᅥᆼ; ) HANGUL SYLLABLE KEONG
+CEFA;CEFA;110F 1165 11BD;CEFA;110F 1165 11BD; # (컺; 컺; á„ᅥᆽ; 컺; á„ᅥᆽ; ) HANGUL SYLLABLE KEOJ
+CEFB;CEFB;110F 1165 11BE;CEFB;110F 1165 11BE; # (ì»»; ì»»; á„ᅥᆾ; ì»»; á„ᅥᆾ; ) HANGUL SYLLABLE KEOC
+CEFC;CEFC;110F 1165 11BF;CEFC;110F 1165 11BF; # (컼; 컼; á„ᅥᆿ; 컼; á„ᅥᆿ; ) HANGUL SYLLABLE KEOK
+CEFD;CEFD;110F 1165 11C0;CEFD;110F 1165 11C0; # (컽; 컽; á„ᅥᇀ; 컽; á„ᅥᇀ; ) HANGUL SYLLABLE KEOT
+CEFE;CEFE;110F 1165 11C1;CEFE;110F 1165 11C1; # (컾; 컾; á„á…¥á‡; 컾; á„á…¥á‡; ) HANGUL SYLLABLE KEOP
+CEFF;CEFF;110F 1165 11C2;CEFF;110F 1165 11C2; # (컿; 컿; á„ᅥᇂ; 컿; á„ᅥᇂ; ) HANGUL SYLLABLE KEOH
+CF00;CF00;110F 1166;CF00;110F 1166; # (ì¼€; ì¼€; á„á…¦; ì¼€; á„á…¦; ) HANGUL SYLLABLE KE
+CF01;CF01;110F 1166 11A8;CF01;110F 1166 11A8; # (ì¼; ì¼; á„ᅦᆨ; ì¼; á„ᅦᆨ; ) HANGUL SYLLABLE KEG
+CF02;CF02;110F 1166 11A9;CF02;110F 1166 11A9; # (켂; 켂; á„ᅦᆩ; 켂; á„ᅦᆩ; ) HANGUL SYLLABLE KEGG
+CF03;CF03;110F 1166 11AA;CF03;110F 1166 11AA; # (켃; 켃; á„ᅦᆪ; 켃; á„ᅦᆪ; ) HANGUL SYLLABLE KEGS
+CF04;CF04;110F 1166 11AB;CF04;110F 1166 11AB; # (켄; 켄; á„ᅦᆫ; 켄; á„ᅦᆫ; ) HANGUL SYLLABLE KEN
+CF05;CF05;110F 1166 11AC;CF05;110F 1166 11AC; # (ì¼…; ì¼…; á„ᅦᆬ; ì¼…; á„ᅦᆬ; ) HANGUL SYLLABLE KENJ
+CF06;CF06;110F 1166 11AD;CF06;110F 1166 11AD; # (켆; 켆; á„ᅦᆭ; 켆; á„ᅦᆭ; ) HANGUL SYLLABLE KENH
+CF07;CF07;110F 1166 11AE;CF07;110F 1166 11AE; # (켇; 켇; á„ᅦᆮ; 켇; á„ᅦᆮ; ) HANGUL SYLLABLE KED
+CF08;CF08;110F 1166 11AF;CF08;110F 1166 11AF; # (켈; 켈; á„ᅦᆯ; 켈; á„ᅦᆯ; ) HANGUL SYLLABLE KEL
+CF09;CF09;110F 1166 11B0;CF09;110F 1166 11B0; # (켉; 켉; á„ᅦᆰ; 켉; á„ᅦᆰ; ) HANGUL SYLLABLE KELG
+CF0A;CF0A;110F 1166 11B1;CF0A;110F 1166 11B1; # (켊; 켊; á„ᅦᆱ; 켊; á„ᅦᆱ; ) HANGUL SYLLABLE KELM
+CF0B;CF0B;110F 1166 11B2;CF0B;110F 1166 11B2; # (켋; 켋; á„ᅦᆲ; 켋; á„ᅦᆲ; ) HANGUL SYLLABLE KELB
+CF0C;CF0C;110F 1166 11B3;CF0C;110F 1166 11B3; # (켌; 켌; á„ᅦᆳ; 켌; á„ᅦᆳ; ) HANGUL SYLLABLE KELS
+CF0D;CF0D;110F 1166 11B4;CF0D;110F 1166 11B4; # (ì¼; ì¼; á„ᅦᆴ; ì¼; á„ᅦᆴ; ) HANGUL SYLLABLE KELT
+CF0E;CF0E;110F 1166 11B5;CF0E;110F 1166 11B5; # (켎; 켎; á„ᅦᆵ; 켎; á„ᅦᆵ; ) HANGUL SYLLABLE KELP
+CF0F;CF0F;110F 1166 11B6;CF0F;110F 1166 11B6; # (ì¼; ì¼; á„ᅦᆶ; ì¼; á„ᅦᆶ; ) HANGUL SYLLABLE KELH
+CF10;CF10;110F 1166 11B7;CF10;110F 1166 11B7; # (ì¼; ì¼; á„ᅦᆷ; ì¼; á„ᅦᆷ; ) HANGUL SYLLABLE KEM
+CF11;CF11;110F 1166 11B8;CF11;110F 1166 11B8; # (켑; 켑; á„ᅦᆸ; 켑; á„ᅦᆸ; ) HANGUL SYLLABLE KEB
+CF12;CF12;110F 1166 11B9;CF12;110F 1166 11B9; # (ì¼’; ì¼’; á„ᅦᆹ; ì¼’; á„ᅦᆹ; ) HANGUL SYLLABLE KEBS
+CF13;CF13;110F 1166 11BA;CF13;110F 1166 11BA; # (켓; 켓; á„ᅦᆺ; 켓; á„ᅦᆺ; ) HANGUL SYLLABLE KES
+CF14;CF14;110F 1166 11BB;CF14;110F 1166 11BB; # (ì¼”; ì¼”; á„ᅦᆻ; ì¼”; á„ᅦᆻ; ) HANGUL SYLLABLE KESS
+CF15;CF15;110F 1166 11BC;CF15;110F 1166 11BC; # (켕; 켕; á„ᅦᆼ; 켕; á„ᅦᆼ; ) HANGUL SYLLABLE KENG
+CF16;CF16;110F 1166 11BD;CF16;110F 1166 11BD; # (ì¼–; ì¼–; á„ᅦᆽ; ì¼–; á„ᅦᆽ; ) HANGUL SYLLABLE KEJ
+CF17;CF17;110F 1166 11BE;CF17;110F 1166 11BE; # (ì¼—; ì¼—; á„ᅦᆾ; ì¼—; á„ᅦᆾ; ) HANGUL SYLLABLE KEC
+CF18;CF18;110F 1166 11BF;CF18;110F 1166 11BF; # (켘; 켘; á„ᅦᆿ; 켘; á„ᅦᆿ; ) HANGUL SYLLABLE KEK
+CF19;CF19;110F 1166 11C0;CF19;110F 1166 11C0; # (ì¼™; ì¼™; á„ᅦᇀ; ì¼™; á„ᅦᇀ; ) HANGUL SYLLABLE KET
+CF1A;CF1A;110F 1166 11C1;CF1A;110F 1166 11C1; # (켚; 켚; á„á…¦á‡; 켚; á„á…¦á‡; ) HANGUL SYLLABLE KEP
+CF1B;CF1B;110F 1166 11C2;CF1B;110F 1166 11C2; # (ì¼›; ì¼›; á„ᅦᇂ; ì¼›; á„ᅦᇂ; ) HANGUL SYLLABLE KEH
+CF1C;CF1C;110F 1167;CF1C;110F 1167; # (켜; 켜; á„á…§; 켜; á„á…§; ) HANGUL SYLLABLE KYEO
+CF1D;CF1D;110F 1167 11A8;CF1D;110F 1167 11A8; # (ì¼; ì¼; á„ᅧᆨ; ì¼; á„ᅧᆨ; ) HANGUL SYLLABLE KYEOG
+CF1E;CF1E;110F 1167 11A9;CF1E;110F 1167 11A9; # (켞; 켞; á„ᅧᆩ; 켞; á„ᅧᆩ; ) HANGUL SYLLABLE KYEOGG
+CF1F;CF1F;110F 1167 11AA;CF1F;110F 1167 11AA; # (켟; 켟; á„ᅧᆪ; 켟; á„ᅧᆪ; ) HANGUL SYLLABLE KYEOGS
+CF20;CF20;110F 1167 11AB;CF20;110F 1167 11AB; # (ì¼ ; ì¼ ; á„ᅧᆫ; ì¼ ; á„ᅧᆫ; ) HANGUL SYLLABLE KYEON
+CF21;CF21;110F 1167 11AC;CF21;110F 1167 11AC; # (켡; 켡; á„ᅧᆬ; 켡; á„ᅧᆬ; ) HANGUL SYLLABLE KYEONJ
+CF22;CF22;110F 1167 11AD;CF22;110F 1167 11AD; # (ì¼¢; ì¼¢; á„ᅧᆭ; ì¼¢; á„ᅧᆭ; ) HANGUL SYLLABLE KYEONH
+CF23;CF23;110F 1167 11AE;CF23;110F 1167 11AE; # (ì¼£; ì¼£; á„ᅧᆮ; ì¼£; á„ᅧᆮ; ) HANGUL SYLLABLE KYEOD
+CF24;CF24;110F 1167 11AF;CF24;110F 1167 11AF; # (켤; 켤; á„ᅧᆯ; 켤; á„ᅧᆯ; ) HANGUL SYLLABLE KYEOL
+CF25;CF25;110F 1167 11B0;CF25;110F 1167 11B0; # (ì¼¥; ì¼¥; á„ᅧᆰ; ì¼¥; á„ᅧᆰ; ) HANGUL SYLLABLE KYEOLG
+CF26;CF26;110F 1167 11B1;CF26;110F 1167 11B1; # (켦; 켦; á„ᅧᆱ; 켦; á„ᅧᆱ; ) HANGUL SYLLABLE KYEOLM
+CF27;CF27;110F 1167 11B2;CF27;110F 1167 11B2; # (켧; 켧; á„ᅧᆲ; 켧; á„ᅧᆲ; ) HANGUL SYLLABLE KYEOLB
+CF28;CF28;110F 1167 11B3;CF28;110F 1167 11B3; # (켨; 켨; á„ᅧᆳ; 켨; á„ᅧᆳ; ) HANGUL SYLLABLE KYEOLS
+CF29;CF29;110F 1167 11B4;CF29;110F 1167 11B4; # (켩; 켩; á„ᅧᆴ; 켩; á„ᅧᆴ; ) HANGUL SYLLABLE KYEOLT
+CF2A;CF2A;110F 1167 11B5;CF2A;110F 1167 11B5; # (켪; 켪; á„ᅧᆵ; 켪; á„ᅧᆵ; ) HANGUL SYLLABLE KYEOLP
+CF2B;CF2B;110F 1167 11B6;CF2B;110F 1167 11B6; # (켫; 켫; á„ᅧᆶ; 켫; á„ᅧᆶ; ) HANGUL SYLLABLE KYEOLH
+CF2C;CF2C;110F 1167 11B7;CF2C;110F 1167 11B7; # (켬; 켬; á„ᅧᆷ; 켬; á„ᅧᆷ; ) HANGUL SYLLABLE KYEOM
+CF2D;CF2D;110F 1167 11B8;CF2D;110F 1167 11B8; # (ì¼­; ì¼­; á„ᅧᆸ; ì¼­; á„ᅧᆸ; ) HANGUL SYLLABLE KYEOB
+CF2E;CF2E;110F 1167 11B9;CF2E;110F 1167 11B9; # (ì¼®; ì¼®; á„ᅧᆹ; ì¼®; á„ᅧᆹ; ) HANGUL SYLLABLE KYEOBS
+CF2F;CF2F;110F 1167 11BA;CF2F;110F 1167 11BA; # (켯; 켯; á„ᅧᆺ; 켯; á„ᅧᆺ; ) HANGUL SYLLABLE KYEOS
+CF30;CF30;110F 1167 11BB;CF30;110F 1167 11BB; # (ì¼°; ì¼°; á„ᅧᆻ; ì¼°; á„ᅧᆻ; ) HANGUL SYLLABLE KYEOSS
+CF31;CF31;110F 1167 11BC;CF31;110F 1167 11BC; # (ì¼±; ì¼±; á„ᅧᆼ; ì¼±; á„ᅧᆼ; ) HANGUL SYLLABLE KYEONG
+CF32;CF32;110F 1167 11BD;CF32;110F 1167 11BD; # (ì¼²; ì¼²; á„ᅧᆽ; ì¼²; á„ᅧᆽ; ) HANGUL SYLLABLE KYEOJ
+CF33;CF33;110F 1167 11BE;CF33;110F 1167 11BE; # (ì¼³; ì¼³; á„ᅧᆾ; ì¼³; á„ᅧᆾ; ) HANGUL SYLLABLE KYEOC
+CF34;CF34;110F 1167 11BF;CF34;110F 1167 11BF; # (ì¼´; ì¼´; á„ᅧᆿ; ì¼´; á„ᅧᆿ; ) HANGUL SYLLABLE KYEOK
+CF35;CF35;110F 1167 11C0;CF35;110F 1167 11C0; # (ì¼µ; ì¼µ; á„ᅧᇀ; ì¼µ; á„ᅧᇀ; ) HANGUL SYLLABLE KYEOT
+CF36;CF36;110F 1167 11C1;CF36;110F 1167 11C1; # (켶; 켶; á„á…§á‡; 켶; á„á…§á‡; ) HANGUL SYLLABLE KYEOP
+CF37;CF37;110F 1167 11C2;CF37;110F 1167 11C2; # (ì¼·; ì¼·; á„ᅧᇂ; ì¼·; á„ᅧᇂ; ) HANGUL SYLLABLE KYEOH
+CF38;CF38;110F 1168;CF38;110F 1168; # (켸; 켸; á„á…¨; 켸; á„á…¨; ) HANGUL SYLLABLE KYE
+CF39;CF39;110F 1168 11A8;CF39;110F 1168 11A8; # (ì¼¹; ì¼¹; á„ᅨᆨ; ì¼¹; á„ᅨᆨ; ) HANGUL SYLLABLE KYEG
+CF3A;CF3A;110F 1168 11A9;CF3A;110F 1168 11A9; # (켺; 켺; á„ᅨᆩ; 켺; á„ᅨᆩ; ) HANGUL SYLLABLE KYEGG
+CF3B;CF3B;110F 1168 11AA;CF3B;110F 1168 11AA; # (ì¼»; ì¼»; á„ᅨᆪ; ì¼»; á„ᅨᆪ; ) HANGUL SYLLABLE KYEGS
+CF3C;CF3C;110F 1168 11AB;CF3C;110F 1168 11AB; # (ì¼¼; ì¼¼; á„ᅨᆫ; ì¼¼; á„ᅨᆫ; ) HANGUL SYLLABLE KYEN
+CF3D;CF3D;110F 1168 11AC;CF3D;110F 1168 11AC; # (ì¼½; ì¼½; á„ᅨᆬ; ì¼½; á„ᅨᆬ; ) HANGUL SYLLABLE KYENJ
+CF3E;CF3E;110F 1168 11AD;CF3E;110F 1168 11AD; # (ì¼¾; ì¼¾; á„ᅨᆭ; ì¼¾; á„ᅨᆭ; ) HANGUL SYLLABLE KYENH
+CF3F;CF3F;110F 1168 11AE;CF3F;110F 1168 11AE; # (켿; 켿; á„ᅨᆮ; 켿; á„ᅨᆮ; ) HANGUL SYLLABLE KYED
+CF40;CF40;110F 1168 11AF;CF40;110F 1168 11AF; # (ì½€; ì½€; á„ᅨᆯ; ì½€; á„ᅨᆯ; ) HANGUL SYLLABLE KYEL
+CF41;CF41;110F 1168 11B0;CF41;110F 1168 11B0; # (ì½; ì½; á„ᅨᆰ; ì½; á„ᅨᆰ; ) HANGUL SYLLABLE KYELG
+CF42;CF42;110F 1168 11B1;CF42;110F 1168 11B1; # (콂; 콂; á„ᅨᆱ; 콂; á„ᅨᆱ; ) HANGUL SYLLABLE KYELM
+CF43;CF43;110F 1168 11B2;CF43;110F 1168 11B2; # (콃; 콃; á„ᅨᆲ; 콃; á„ᅨᆲ; ) HANGUL SYLLABLE KYELB
+CF44;CF44;110F 1168 11B3;CF44;110F 1168 11B3; # (콄; 콄; á„ᅨᆳ; 콄; á„ᅨᆳ; ) HANGUL SYLLABLE KYELS
+CF45;CF45;110F 1168 11B4;CF45;110F 1168 11B4; # (ì½…; ì½…; á„ᅨᆴ; ì½…; á„ᅨᆴ; ) HANGUL SYLLABLE KYELT
+CF46;CF46;110F 1168 11B5;CF46;110F 1168 11B5; # (콆; 콆; á„ᅨᆵ; 콆; á„ᅨᆵ; ) HANGUL SYLLABLE KYELP
+CF47;CF47;110F 1168 11B6;CF47;110F 1168 11B6; # (콇; 콇; á„ᅨᆶ; 콇; á„ᅨᆶ; ) HANGUL SYLLABLE KYELH
+CF48;CF48;110F 1168 11B7;CF48;110F 1168 11B7; # (콈; 콈; á„ᅨᆷ; 콈; á„ᅨᆷ; ) HANGUL SYLLABLE KYEM
+CF49;CF49;110F 1168 11B8;CF49;110F 1168 11B8; # (콉; 콉; á„ᅨᆸ; 콉; á„ᅨᆸ; ) HANGUL SYLLABLE KYEB
+CF4A;CF4A;110F 1168 11B9;CF4A;110F 1168 11B9; # (콊; 콊; á„ᅨᆹ; 콊; á„ᅨᆹ; ) HANGUL SYLLABLE KYEBS
+CF4B;CF4B;110F 1168 11BA;CF4B;110F 1168 11BA; # (콋; 콋; á„ᅨᆺ; 콋; á„ᅨᆺ; ) HANGUL SYLLABLE KYES
+CF4C;CF4C;110F 1168 11BB;CF4C;110F 1168 11BB; # (콌; 콌; á„ᅨᆻ; 콌; á„ᅨᆻ; ) HANGUL SYLLABLE KYESS
+CF4D;CF4D;110F 1168 11BC;CF4D;110F 1168 11BC; # (ì½; ì½; á„ᅨᆼ; ì½; á„ᅨᆼ; ) HANGUL SYLLABLE KYENG
+CF4E;CF4E;110F 1168 11BD;CF4E;110F 1168 11BD; # (콎; 콎; á„ᅨᆽ; 콎; á„ᅨᆽ; ) HANGUL SYLLABLE KYEJ
+CF4F;CF4F;110F 1168 11BE;CF4F;110F 1168 11BE; # (ì½; ì½; á„ᅨᆾ; ì½; á„ᅨᆾ; ) HANGUL SYLLABLE KYEC
+CF50;CF50;110F 1168 11BF;CF50;110F 1168 11BF; # (ì½; ì½; á„ᅨᆿ; ì½; á„ᅨᆿ; ) HANGUL SYLLABLE KYEK
+CF51;CF51;110F 1168 11C0;CF51;110F 1168 11C0; # (콑; 콑; á„ᅨᇀ; 콑; á„ᅨᇀ; ) HANGUL SYLLABLE KYET
+CF52;CF52;110F 1168 11C1;CF52;110F 1168 11C1; # (ì½’; ì½’; á„á…¨á‡; ì½’; á„á…¨á‡; ) HANGUL SYLLABLE KYEP
+CF53;CF53;110F 1168 11C2;CF53;110F 1168 11C2; # (콓; 콓; á„ᅨᇂ; 콓; á„ᅨᇂ; ) HANGUL SYLLABLE KYEH
+CF54;CF54;110F 1169;CF54;110F 1169; # (ì½”; ì½”; á„á…©; ì½”; á„á…©; ) HANGUL SYLLABLE KO
+CF55;CF55;110F 1169 11A8;CF55;110F 1169 11A8; # (콕; 콕; á„ᅩᆨ; 콕; á„ᅩᆨ; ) HANGUL SYLLABLE KOG
+CF56;CF56;110F 1169 11A9;CF56;110F 1169 11A9; # (ì½–; ì½–; á„ᅩᆩ; ì½–; á„ᅩᆩ; ) HANGUL SYLLABLE KOGG
+CF57;CF57;110F 1169 11AA;CF57;110F 1169 11AA; # (ì½—; ì½—; á„ᅩᆪ; ì½—; á„ᅩᆪ; ) HANGUL SYLLABLE KOGS
+CF58;CF58;110F 1169 11AB;CF58;110F 1169 11AB; # (콘; 콘; á„ᅩᆫ; 콘; á„ᅩᆫ; ) HANGUL SYLLABLE KON
+CF59;CF59;110F 1169 11AC;CF59;110F 1169 11AC; # (ì½™; ì½™; á„ᅩᆬ; ì½™; á„ᅩᆬ; ) HANGUL SYLLABLE KONJ
+CF5A;CF5A;110F 1169 11AD;CF5A;110F 1169 11AD; # (콚; 콚; á„ᅩᆭ; 콚; á„ᅩᆭ; ) HANGUL SYLLABLE KONH
+CF5B;CF5B;110F 1169 11AE;CF5B;110F 1169 11AE; # (ì½›; ì½›; á„ᅩᆮ; ì½›; á„ᅩᆮ; ) HANGUL SYLLABLE KOD
+CF5C;CF5C;110F 1169 11AF;CF5C;110F 1169 11AF; # (콜; 콜; á„ᅩᆯ; 콜; á„ᅩᆯ; ) HANGUL SYLLABLE KOL
+CF5D;CF5D;110F 1169 11B0;CF5D;110F 1169 11B0; # (ì½; ì½; á„ᅩᆰ; ì½; á„ᅩᆰ; ) HANGUL SYLLABLE KOLG
+CF5E;CF5E;110F 1169 11B1;CF5E;110F 1169 11B1; # (콞; 콞; á„ᅩᆱ; 콞; á„ᅩᆱ; ) HANGUL SYLLABLE KOLM
+CF5F;CF5F;110F 1169 11B2;CF5F;110F 1169 11B2; # (콟; 콟; á„ᅩᆲ; 콟; á„ᅩᆲ; ) HANGUL SYLLABLE KOLB
+CF60;CF60;110F 1169 11B3;CF60;110F 1169 11B3; # (ì½ ; ì½ ; á„ᅩᆳ; ì½ ; á„ᅩᆳ; ) HANGUL SYLLABLE KOLS
+CF61;CF61;110F 1169 11B4;CF61;110F 1169 11B4; # (콡; 콡; á„ᅩᆴ; 콡; á„ᅩᆴ; ) HANGUL SYLLABLE KOLT
+CF62;CF62;110F 1169 11B5;CF62;110F 1169 11B5; # (ì½¢; ì½¢; á„ᅩᆵ; ì½¢; á„ᅩᆵ; ) HANGUL SYLLABLE KOLP
+CF63;CF63;110F 1169 11B6;CF63;110F 1169 11B6; # (ì½£; ì½£; á„ᅩᆶ; ì½£; á„ᅩᆶ; ) HANGUL SYLLABLE KOLH
+CF64;CF64;110F 1169 11B7;CF64;110F 1169 11B7; # (콤; 콤; á„ᅩᆷ; 콤; á„ᅩᆷ; ) HANGUL SYLLABLE KOM
+CF65;CF65;110F 1169 11B8;CF65;110F 1169 11B8; # (ì½¥; ì½¥; á„ᅩᆸ; ì½¥; á„ᅩᆸ; ) HANGUL SYLLABLE KOB
+CF66;CF66;110F 1169 11B9;CF66;110F 1169 11B9; # (콦; 콦; á„ᅩᆹ; 콦; á„ᅩᆹ; ) HANGUL SYLLABLE KOBS
+CF67;CF67;110F 1169 11BA;CF67;110F 1169 11BA; # (콧; 콧; á„ᅩᆺ; 콧; á„ᅩᆺ; ) HANGUL SYLLABLE KOS
+CF68;CF68;110F 1169 11BB;CF68;110F 1169 11BB; # (콨; 콨; á„ᅩᆻ; 콨; á„ᅩᆻ; ) HANGUL SYLLABLE KOSS
+CF69;CF69;110F 1169 11BC;CF69;110F 1169 11BC; # (콩; 콩; á„ᅩᆼ; 콩; á„ᅩᆼ; ) HANGUL SYLLABLE KONG
+CF6A;CF6A;110F 1169 11BD;CF6A;110F 1169 11BD; # (콪; 콪; á„ᅩᆽ; 콪; á„ᅩᆽ; ) HANGUL SYLLABLE KOJ
+CF6B;CF6B;110F 1169 11BE;CF6B;110F 1169 11BE; # (콫; 콫; á„ᅩᆾ; 콫; á„ᅩᆾ; ) HANGUL SYLLABLE KOC
+CF6C;CF6C;110F 1169 11BF;CF6C;110F 1169 11BF; # (콬; 콬; á„ᅩᆿ; 콬; á„ᅩᆿ; ) HANGUL SYLLABLE KOK
+CF6D;CF6D;110F 1169 11C0;CF6D;110F 1169 11C0; # (ì½­; ì½­; á„ᅩᇀ; ì½­; á„ᅩᇀ; ) HANGUL SYLLABLE KOT
+CF6E;CF6E;110F 1169 11C1;CF6E;110F 1169 11C1; # (ì½®; ì½®; á„á…©á‡; ì½®; á„á…©á‡; ) HANGUL SYLLABLE KOP
+CF6F;CF6F;110F 1169 11C2;CF6F;110F 1169 11C2; # (콯; 콯; á„ᅩᇂ; 콯; á„ᅩᇂ; ) HANGUL SYLLABLE KOH
+CF70;CF70;110F 116A;CF70;110F 116A; # (ì½°; ì½°; á„á…ª; ì½°; á„á…ª; ) HANGUL SYLLABLE KWA
+CF71;CF71;110F 116A 11A8;CF71;110F 116A 11A8; # (ì½±; ì½±; á„ᅪᆨ; ì½±; á„ᅪᆨ; ) HANGUL SYLLABLE KWAG
+CF72;CF72;110F 116A 11A9;CF72;110F 116A 11A9; # (ì½²; ì½²; á„ᅪᆩ; ì½²; á„ᅪᆩ; ) HANGUL SYLLABLE KWAGG
+CF73;CF73;110F 116A 11AA;CF73;110F 116A 11AA; # (ì½³; ì½³; á„ᅪᆪ; ì½³; á„ᅪᆪ; ) HANGUL SYLLABLE KWAGS
+CF74;CF74;110F 116A 11AB;CF74;110F 116A 11AB; # (ì½´; ì½´; á„ᅪᆫ; ì½´; á„ᅪᆫ; ) HANGUL SYLLABLE KWAN
+CF75;CF75;110F 116A 11AC;CF75;110F 116A 11AC; # (ì½µ; ì½µ; á„ᅪᆬ; ì½µ; á„ᅪᆬ; ) HANGUL SYLLABLE KWANJ
+CF76;CF76;110F 116A 11AD;CF76;110F 116A 11AD; # (콶; 콶; á„ᅪᆭ; 콶; á„ᅪᆭ; ) HANGUL SYLLABLE KWANH
+CF77;CF77;110F 116A 11AE;CF77;110F 116A 11AE; # (ì½·; ì½·; á„ᅪᆮ; ì½·; á„ᅪᆮ; ) HANGUL SYLLABLE KWAD
+CF78;CF78;110F 116A 11AF;CF78;110F 116A 11AF; # (콸; 콸; á„ᅪᆯ; 콸; á„ᅪᆯ; ) HANGUL SYLLABLE KWAL
+CF79;CF79;110F 116A 11B0;CF79;110F 116A 11B0; # (ì½¹; ì½¹; á„ᅪᆰ; ì½¹; á„ᅪᆰ; ) HANGUL SYLLABLE KWALG
+CF7A;CF7A;110F 116A 11B1;CF7A;110F 116A 11B1; # (콺; 콺; á„ᅪᆱ; 콺; á„ᅪᆱ; ) HANGUL SYLLABLE KWALM
+CF7B;CF7B;110F 116A 11B2;CF7B;110F 116A 11B2; # (ì½»; ì½»; á„ᅪᆲ; ì½»; á„ᅪᆲ; ) HANGUL SYLLABLE KWALB
+CF7C;CF7C;110F 116A 11B3;CF7C;110F 116A 11B3; # (ì½¼; ì½¼; á„ᅪᆳ; ì½¼; á„ᅪᆳ; ) HANGUL SYLLABLE KWALS
+CF7D;CF7D;110F 116A 11B4;CF7D;110F 116A 11B4; # (ì½½; ì½½; á„ᅪᆴ; ì½½; á„ᅪᆴ; ) HANGUL SYLLABLE KWALT
+CF7E;CF7E;110F 116A 11B5;CF7E;110F 116A 11B5; # (ì½¾; ì½¾; á„ᅪᆵ; ì½¾; á„ᅪᆵ; ) HANGUL SYLLABLE KWALP
+CF7F;CF7F;110F 116A 11B6;CF7F;110F 116A 11B6; # (콿; 콿; á„ᅪᆶ; 콿; á„ᅪᆶ; ) HANGUL SYLLABLE KWALH
+CF80;CF80;110F 116A 11B7;CF80;110F 116A 11B7; # (ì¾€; ì¾€; á„ᅪᆷ; ì¾€; á„ᅪᆷ; ) HANGUL SYLLABLE KWAM
+CF81;CF81;110F 116A 11B8;CF81;110F 116A 11B8; # (ì¾; ì¾; á„ᅪᆸ; ì¾; á„ᅪᆸ; ) HANGUL SYLLABLE KWAB
+CF82;CF82;110F 116A 11B9;CF82;110F 116A 11B9; # (쾂; 쾂; á„ᅪᆹ; 쾂; á„ᅪᆹ; ) HANGUL SYLLABLE KWABS
+CF83;CF83;110F 116A 11BA;CF83;110F 116A 11BA; # (쾃; 쾃; á„ᅪᆺ; 쾃; á„ᅪᆺ; ) HANGUL SYLLABLE KWAS
+CF84;CF84;110F 116A 11BB;CF84;110F 116A 11BB; # (쾄; 쾄; á„ᅪᆻ; 쾄; á„ᅪᆻ; ) HANGUL SYLLABLE KWASS
+CF85;CF85;110F 116A 11BC;CF85;110F 116A 11BC; # (ì¾…; ì¾…; á„ᅪᆼ; ì¾…; á„ᅪᆼ; ) HANGUL SYLLABLE KWANG
+CF86;CF86;110F 116A 11BD;CF86;110F 116A 11BD; # (쾆; 쾆; á„ᅪᆽ; 쾆; á„ᅪᆽ; ) HANGUL SYLLABLE KWAJ
+CF87;CF87;110F 116A 11BE;CF87;110F 116A 11BE; # (쾇; 쾇; á„ᅪᆾ; 쾇; á„ᅪᆾ; ) HANGUL SYLLABLE KWAC
+CF88;CF88;110F 116A 11BF;CF88;110F 116A 11BF; # (쾈; 쾈; á„ᅪᆿ; 쾈; á„ᅪᆿ; ) HANGUL SYLLABLE KWAK
+CF89;CF89;110F 116A 11C0;CF89;110F 116A 11C0; # (쾉; 쾉; á„ᅪᇀ; 쾉; á„ᅪᇀ; ) HANGUL SYLLABLE KWAT
+CF8A;CF8A;110F 116A 11C1;CF8A;110F 116A 11C1; # (쾊; 쾊; á„á…ªá‡; 쾊; á„á…ªá‡; ) HANGUL SYLLABLE KWAP
+CF8B;CF8B;110F 116A 11C2;CF8B;110F 116A 11C2; # (쾋; 쾋; á„ᅪᇂ; 쾋; á„ᅪᇂ; ) HANGUL SYLLABLE KWAH
+CF8C;CF8C;110F 116B;CF8C;110F 116B; # (쾌; 쾌; á„á…«; 쾌; á„á…«; ) HANGUL SYLLABLE KWAE
+CF8D;CF8D;110F 116B 11A8;CF8D;110F 116B 11A8; # (ì¾; ì¾; á„ᅫᆨ; ì¾; á„ᅫᆨ; ) HANGUL SYLLABLE KWAEG
+CF8E;CF8E;110F 116B 11A9;CF8E;110F 116B 11A9; # (쾎; 쾎; á„ᅫᆩ; 쾎; á„ᅫᆩ; ) HANGUL SYLLABLE KWAEGG
+CF8F;CF8F;110F 116B 11AA;CF8F;110F 116B 11AA; # (ì¾; ì¾; á„ᅫᆪ; ì¾; á„ᅫᆪ; ) HANGUL SYLLABLE KWAEGS
+CF90;CF90;110F 116B 11AB;CF90;110F 116B 11AB; # (ì¾; ì¾; á„ᅫᆫ; ì¾; á„ᅫᆫ; ) HANGUL SYLLABLE KWAEN
+CF91;CF91;110F 116B 11AC;CF91;110F 116B 11AC; # (쾑; 쾑; á„ᅫᆬ; 쾑; á„ᅫᆬ; ) HANGUL SYLLABLE KWAENJ
+CF92;CF92;110F 116B 11AD;CF92;110F 116B 11AD; # (ì¾’; ì¾’; á„ᅫᆭ; ì¾’; á„ᅫᆭ; ) HANGUL SYLLABLE KWAENH
+CF93;CF93;110F 116B 11AE;CF93;110F 116B 11AE; # (쾓; 쾓; á„ᅫᆮ; 쾓; á„ᅫᆮ; ) HANGUL SYLLABLE KWAED
+CF94;CF94;110F 116B 11AF;CF94;110F 116B 11AF; # (ì¾”; ì¾”; á„ᅫᆯ; ì¾”; á„ᅫᆯ; ) HANGUL SYLLABLE KWAEL
+CF95;CF95;110F 116B 11B0;CF95;110F 116B 11B0; # (쾕; 쾕; á„ᅫᆰ; 쾕; á„ᅫᆰ; ) HANGUL SYLLABLE KWAELG
+CF96;CF96;110F 116B 11B1;CF96;110F 116B 11B1; # (ì¾–; ì¾–; á„ᅫᆱ; ì¾–; á„ᅫᆱ; ) HANGUL SYLLABLE KWAELM
+CF97;CF97;110F 116B 11B2;CF97;110F 116B 11B2; # (ì¾—; ì¾—; á„ᅫᆲ; ì¾—; á„ᅫᆲ; ) HANGUL SYLLABLE KWAELB
+CF98;CF98;110F 116B 11B3;CF98;110F 116B 11B3; # (쾘; 쾘; á„ᅫᆳ; 쾘; á„ᅫᆳ; ) HANGUL SYLLABLE KWAELS
+CF99;CF99;110F 116B 11B4;CF99;110F 116B 11B4; # (ì¾™; ì¾™; á„ᅫᆴ; ì¾™; á„ᅫᆴ; ) HANGUL SYLLABLE KWAELT
+CF9A;CF9A;110F 116B 11B5;CF9A;110F 116B 11B5; # (쾚; 쾚; á„ᅫᆵ; 쾚; á„ᅫᆵ; ) HANGUL SYLLABLE KWAELP
+CF9B;CF9B;110F 116B 11B6;CF9B;110F 116B 11B6; # (ì¾›; ì¾›; á„ᅫᆶ; ì¾›; á„ᅫᆶ; ) HANGUL SYLLABLE KWAELH
+CF9C;CF9C;110F 116B 11B7;CF9C;110F 116B 11B7; # (쾜; 쾜; á„ᅫᆷ; 쾜; á„ᅫᆷ; ) HANGUL SYLLABLE KWAEM
+CF9D;CF9D;110F 116B 11B8;CF9D;110F 116B 11B8; # (ì¾; ì¾; á„ᅫᆸ; ì¾; á„ᅫᆸ; ) HANGUL SYLLABLE KWAEB
+CF9E;CF9E;110F 116B 11B9;CF9E;110F 116B 11B9; # (쾞; 쾞; á„ᅫᆹ; 쾞; á„ᅫᆹ; ) HANGUL SYLLABLE KWAEBS
+CF9F;CF9F;110F 116B 11BA;CF9F;110F 116B 11BA; # (쾟; 쾟; á„ᅫᆺ; 쾟; á„ᅫᆺ; ) HANGUL SYLLABLE KWAES
+CFA0;CFA0;110F 116B 11BB;CFA0;110F 116B 11BB; # (ì¾ ; ì¾ ; á„ᅫᆻ; ì¾ ; á„ᅫᆻ; ) HANGUL SYLLABLE KWAESS
+CFA1;CFA1;110F 116B 11BC;CFA1;110F 116B 11BC; # (쾡; 쾡; á„ᅫᆼ; 쾡; á„ᅫᆼ; ) HANGUL SYLLABLE KWAENG
+CFA2;CFA2;110F 116B 11BD;CFA2;110F 116B 11BD; # (ì¾¢; ì¾¢; á„ᅫᆽ; ì¾¢; á„ᅫᆽ; ) HANGUL SYLLABLE KWAEJ
+CFA3;CFA3;110F 116B 11BE;CFA3;110F 116B 11BE; # (ì¾£; ì¾£; á„ᅫᆾ; ì¾£; á„ᅫᆾ; ) HANGUL SYLLABLE KWAEC
+CFA4;CFA4;110F 116B 11BF;CFA4;110F 116B 11BF; # (쾤; 쾤; á„ᅫᆿ; 쾤; á„ᅫᆿ; ) HANGUL SYLLABLE KWAEK
+CFA5;CFA5;110F 116B 11C0;CFA5;110F 116B 11C0; # (ì¾¥; ì¾¥; á„ᅫᇀ; ì¾¥; á„ᅫᇀ; ) HANGUL SYLLABLE KWAET
+CFA6;CFA6;110F 116B 11C1;CFA6;110F 116B 11C1; # (쾦; 쾦; á„á…«á‡; 쾦; á„á…«á‡; ) HANGUL SYLLABLE KWAEP
+CFA7;CFA7;110F 116B 11C2;CFA7;110F 116B 11C2; # (쾧; 쾧; á„ᅫᇂ; 쾧; á„ᅫᇂ; ) HANGUL SYLLABLE KWAEH
+CFA8;CFA8;110F 116C;CFA8;110F 116C; # (쾨; 쾨; á„á…¬; 쾨; á„á…¬; ) HANGUL SYLLABLE KOE
+CFA9;CFA9;110F 116C 11A8;CFA9;110F 116C 11A8; # (쾩; 쾩; á„ᅬᆨ; 쾩; á„ᅬᆨ; ) HANGUL SYLLABLE KOEG
+CFAA;CFAA;110F 116C 11A9;CFAA;110F 116C 11A9; # (쾪; 쾪; á„ᅬᆩ; 쾪; á„ᅬᆩ; ) HANGUL SYLLABLE KOEGG
+CFAB;CFAB;110F 116C 11AA;CFAB;110F 116C 11AA; # (쾫; 쾫; á„ᅬᆪ; 쾫; á„ᅬᆪ; ) HANGUL SYLLABLE KOEGS
+CFAC;CFAC;110F 116C 11AB;CFAC;110F 116C 11AB; # (쾬; 쾬; á„ᅬᆫ; 쾬; á„ᅬᆫ; ) HANGUL SYLLABLE KOEN
+CFAD;CFAD;110F 116C 11AC;CFAD;110F 116C 11AC; # (ì¾­; ì¾­; á„ᅬᆬ; ì¾­; á„ᅬᆬ; ) HANGUL SYLLABLE KOENJ
+CFAE;CFAE;110F 116C 11AD;CFAE;110F 116C 11AD; # (ì¾®; ì¾®; á„ᅬᆭ; ì¾®; á„ᅬᆭ; ) HANGUL SYLLABLE KOENH
+CFAF;CFAF;110F 116C 11AE;CFAF;110F 116C 11AE; # (쾯; 쾯; á„ᅬᆮ; 쾯; á„ᅬᆮ; ) HANGUL SYLLABLE KOED
+CFB0;CFB0;110F 116C 11AF;CFB0;110F 116C 11AF; # (ì¾°; ì¾°; á„ᅬᆯ; ì¾°; á„ᅬᆯ; ) HANGUL SYLLABLE KOEL
+CFB1;CFB1;110F 116C 11B0;CFB1;110F 116C 11B0; # (ì¾±; ì¾±; á„ᅬᆰ; ì¾±; á„ᅬᆰ; ) HANGUL SYLLABLE KOELG
+CFB2;CFB2;110F 116C 11B1;CFB2;110F 116C 11B1; # (ì¾²; ì¾²; á„ᅬᆱ; ì¾²; á„ᅬᆱ; ) HANGUL SYLLABLE KOELM
+CFB3;CFB3;110F 116C 11B2;CFB3;110F 116C 11B2; # (ì¾³; ì¾³; á„ᅬᆲ; ì¾³; á„ᅬᆲ; ) HANGUL SYLLABLE KOELB
+CFB4;CFB4;110F 116C 11B3;CFB4;110F 116C 11B3; # (ì¾´; ì¾´; á„ᅬᆳ; ì¾´; á„ᅬᆳ; ) HANGUL SYLLABLE KOELS
+CFB5;CFB5;110F 116C 11B4;CFB5;110F 116C 11B4; # (ì¾µ; ì¾µ; á„ᅬᆴ; ì¾µ; á„ᅬᆴ; ) HANGUL SYLLABLE KOELT
+CFB6;CFB6;110F 116C 11B5;CFB6;110F 116C 11B5; # (쾶; 쾶; á„ᅬᆵ; 쾶; á„ᅬᆵ; ) HANGUL SYLLABLE KOELP
+CFB7;CFB7;110F 116C 11B6;CFB7;110F 116C 11B6; # (ì¾·; ì¾·; á„ᅬᆶ; ì¾·; á„ᅬᆶ; ) HANGUL SYLLABLE KOELH
+CFB8;CFB8;110F 116C 11B7;CFB8;110F 116C 11B7; # (쾸; 쾸; á„ᅬᆷ; 쾸; á„ᅬᆷ; ) HANGUL SYLLABLE KOEM
+CFB9;CFB9;110F 116C 11B8;CFB9;110F 116C 11B8; # (ì¾¹; ì¾¹; á„ᅬᆸ; ì¾¹; á„ᅬᆸ; ) HANGUL SYLLABLE KOEB
+CFBA;CFBA;110F 116C 11B9;CFBA;110F 116C 11B9; # (쾺; 쾺; á„ᅬᆹ; 쾺; á„ᅬᆹ; ) HANGUL SYLLABLE KOEBS
+CFBB;CFBB;110F 116C 11BA;CFBB;110F 116C 11BA; # (ì¾»; ì¾»; á„ᅬᆺ; ì¾»; á„ᅬᆺ; ) HANGUL SYLLABLE KOES
+CFBC;CFBC;110F 116C 11BB;CFBC;110F 116C 11BB; # (ì¾¼; ì¾¼; á„ᅬᆻ; ì¾¼; á„ᅬᆻ; ) HANGUL SYLLABLE KOESS
+CFBD;CFBD;110F 116C 11BC;CFBD;110F 116C 11BC; # (ì¾½; ì¾½; á„ᅬᆼ; ì¾½; á„ᅬᆼ; ) HANGUL SYLLABLE KOENG
+CFBE;CFBE;110F 116C 11BD;CFBE;110F 116C 11BD; # (ì¾¾; ì¾¾; á„ᅬᆽ; ì¾¾; á„ᅬᆽ; ) HANGUL SYLLABLE KOEJ
+CFBF;CFBF;110F 116C 11BE;CFBF;110F 116C 11BE; # (쾿; 쾿; á„ᅬᆾ; 쾿; á„ᅬᆾ; ) HANGUL SYLLABLE KOEC
+CFC0;CFC0;110F 116C 11BF;CFC0;110F 116C 11BF; # (ì¿€; ì¿€; á„ᅬᆿ; ì¿€; á„ᅬᆿ; ) HANGUL SYLLABLE KOEK
+CFC1;CFC1;110F 116C 11C0;CFC1;110F 116C 11C0; # (ì¿; ì¿; á„ᅬᇀ; ì¿; á„ᅬᇀ; ) HANGUL SYLLABLE KOET
+CFC2;CFC2;110F 116C 11C1;CFC2;110F 116C 11C1; # (ì¿‚; ì¿‚; á„á…¬á‡; ì¿‚; á„á…¬á‡; ) HANGUL SYLLABLE KOEP
+CFC3;CFC3;110F 116C 11C2;CFC3;110F 116C 11C2; # (쿃; 쿃; á„ᅬᇂ; 쿃; á„ᅬᇂ; ) HANGUL SYLLABLE KOEH
+CFC4;CFC4;110F 116D;CFC4;110F 116D; # (ì¿„; ì¿„; á„á…­; ì¿„; á„á…­; ) HANGUL SYLLABLE KYO
+CFC5;CFC5;110F 116D 11A8;CFC5;110F 116D 11A8; # (ì¿…; ì¿…; á„ᅭᆨ; ì¿…; á„ᅭᆨ; ) HANGUL SYLLABLE KYOG
+CFC6;CFC6;110F 116D 11A9;CFC6;110F 116D 11A9; # (쿆; 쿆; á„ᅭᆩ; 쿆; á„ᅭᆩ; ) HANGUL SYLLABLE KYOGG
+CFC7;CFC7;110F 116D 11AA;CFC7;110F 116D 11AA; # (쿇; 쿇; á„ᅭᆪ; 쿇; á„ᅭᆪ; ) HANGUL SYLLABLE KYOGS
+CFC8;CFC8;110F 116D 11AB;CFC8;110F 116D 11AB; # (쿈; 쿈; á„ᅭᆫ; 쿈; á„ᅭᆫ; ) HANGUL SYLLABLE KYON
+CFC9;CFC9;110F 116D 11AC;CFC9;110F 116D 11AC; # (쿉; 쿉; á„ᅭᆬ; 쿉; á„ᅭᆬ; ) HANGUL SYLLABLE KYONJ
+CFCA;CFCA;110F 116D 11AD;CFCA;110F 116D 11AD; # (ì¿Š; ì¿Š; á„ᅭᆭ; ì¿Š; á„ᅭᆭ; ) HANGUL SYLLABLE KYONH
+CFCB;CFCB;110F 116D 11AE;CFCB;110F 116D 11AE; # (ì¿‹; ì¿‹; á„ᅭᆮ; ì¿‹; á„ᅭᆮ; ) HANGUL SYLLABLE KYOD
+CFCC;CFCC;110F 116D 11AF;CFCC;110F 116D 11AF; # (ì¿Œ; ì¿Œ; á„ᅭᆯ; ì¿Œ; á„ᅭᆯ; ) HANGUL SYLLABLE KYOL
+CFCD;CFCD;110F 116D 11B0;CFCD;110F 116D 11B0; # (ì¿; ì¿; á„ᅭᆰ; ì¿; á„ᅭᆰ; ) HANGUL SYLLABLE KYOLG
+CFCE;CFCE;110F 116D 11B1;CFCE;110F 116D 11B1; # (ì¿Ž; ì¿Ž; á„ᅭᆱ; ì¿Ž; á„ᅭᆱ; ) HANGUL SYLLABLE KYOLM
+CFCF;CFCF;110F 116D 11B2;CFCF;110F 116D 11B2; # (ì¿; ì¿; á„ᅭᆲ; ì¿; á„ᅭᆲ; ) HANGUL SYLLABLE KYOLB
+CFD0;CFD0;110F 116D 11B3;CFD0;110F 116D 11B3; # (ì¿; ì¿; á„ᅭᆳ; ì¿; á„ᅭᆳ; ) HANGUL SYLLABLE KYOLS
+CFD1;CFD1;110F 116D 11B4;CFD1;110F 116D 11B4; # (ì¿‘; ì¿‘; á„ᅭᆴ; ì¿‘; á„ᅭᆴ; ) HANGUL SYLLABLE KYOLT
+CFD2;CFD2;110F 116D 11B5;CFD2;110F 116D 11B5; # (ì¿’; ì¿’; á„ᅭᆵ; ì¿’; á„ᅭᆵ; ) HANGUL SYLLABLE KYOLP
+CFD3;CFD3;110F 116D 11B6;CFD3;110F 116D 11B6; # (ì¿“; ì¿“; á„ᅭᆶ; ì¿“; á„ᅭᆶ; ) HANGUL SYLLABLE KYOLH
+CFD4;CFD4;110F 116D 11B7;CFD4;110F 116D 11B7; # (ì¿”; ì¿”; á„ᅭᆷ; ì¿”; á„ᅭᆷ; ) HANGUL SYLLABLE KYOM
+CFD5;CFD5;110F 116D 11B8;CFD5;110F 116D 11B8; # (ì¿•; ì¿•; á„ᅭᆸ; ì¿•; á„ᅭᆸ; ) HANGUL SYLLABLE KYOB
+CFD6;CFD6;110F 116D 11B9;CFD6;110F 116D 11B9; # (ì¿–; ì¿–; á„ᅭᆹ; ì¿–; á„ᅭᆹ; ) HANGUL SYLLABLE KYOBS
+CFD7;CFD7;110F 116D 11BA;CFD7;110F 116D 11BA; # (ì¿—; ì¿—; á„ᅭᆺ; ì¿—; á„ᅭᆺ; ) HANGUL SYLLABLE KYOS
+CFD8;CFD8;110F 116D 11BB;CFD8;110F 116D 11BB; # (쿘; 쿘; á„ᅭᆻ; 쿘; á„ᅭᆻ; ) HANGUL SYLLABLE KYOSS
+CFD9;CFD9;110F 116D 11BC;CFD9;110F 116D 11BC; # (ì¿™; ì¿™; á„ᅭᆼ; ì¿™; á„ᅭᆼ; ) HANGUL SYLLABLE KYONG
+CFDA;CFDA;110F 116D 11BD;CFDA;110F 116D 11BD; # (ì¿š; ì¿š; á„ᅭᆽ; ì¿š; á„ᅭᆽ; ) HANGUL SYLLABLE KYOJ
+CFDB;CFDB;110F 116D 11BE;CFDB;110F 116D 11BE; # (ì¿›; ì¿›; á„ᅭᆾ; ì¿›; á„ᅭᆾ; ) HANGUL SYLLABLE KYOC
+CFDC;CFDC;110F 116D 11BF;CFDC;110F 116D 11BF; # (ì¿œ; ì¿œ; á„ᅭᆿ; ì¿œ; á„ᅭᆿ; ) HANGUL SYLLABLE KYOK
+CFDD;CFDD;110F 116D 11C0;CFDD;110F 116D 11C0; # (ì¿; ì¿; á„ᅭᇀ; ì¿; á„ᅭᇀ; ) HANGUL SYLLABLE KYOT
+CFDE;CFDE;110F 116D 11C1;CFDE;110F 116D 11C1; # (ì¿ž; ì¿ž; á„á…­á‡; ì¿ž; á„á…­á‡; ) HANGUL SYLLABLE KYOP
+CFDF;CFDF;110F 116D 11C2;CFDF;110F 116D 11C2; # (ì¿Ÿ; ì¿Ÿ; á„ᅭᇂ; ì¿Ÿ; á„ᅭᇂ; ) HANGUL SYLLABLE KYOH
+CFE0;CFE0;110F 116E;CFE0;110F 116E; # (ì¿ ; ì¿ ; á„á…®; ì¿ ; á„á…®; ) HANGUL SYLLABLE KU
+CFE1;CFE1;110F 116E 11A8;CFE1;110F 116E 11A8; # (ì¿¡; ì¿¡; á„ᅮᆨ; ì¿¡; á„ᅮᆨ; ) HANGUL SYLLABLE KUG
+CFE2;CFE2;110F 116E 11A9;CFE2;110F 116E 11A9; # (ì¿¢; ì¿¢; á„ᅮᆩ; ì¿¢; á„ᅮᆩ; ) HANGUL SYLLABLE KUGG
+CFE3;CFE3;110F 116E 11AA;CFE3;110F 116E 11AA; # (ì¿£; ì¿£; á„ᅮᆪ; ì¿£; á„ᅮᆪ; ) HANGUL SYLLABLE KUGS
+CFE4;CFE4;110F 116E 11AB;CFE4;110F 116E 11AB; # (쿤; 쿤; á„ᅮᆫ; 쿤; á„ᅮᆫ; ) HANGUL SYLLABLE KUN
+CFE5;CFE5;110F 116E 11AC;CFE5;110F 116E 11AC; # (ì¿¥; ì¿¥; á„ᅮᆬ; ì¿¥; á„ᅮᆬ; ) HANGUL SYLLABLE KUNJ
+CFE6;CFE6;110F 116E 11AD;CFE6;110F 116E 11AD; # (쿦; 쿦; á„ᅮᆭ; 쿦; á„ᅮᆭ; ) HANGUL SYLLABLE KUNH
+CFE7;CFE7;110F 116E 11AE;CFE7;110F 116E 11AE; # (쿧; 쿧; á„ᅮᆮ; 쿧; á„ᅮᆮ; ) HANGUL SYLLABLE KUD
+CFE8;CFE8;110F 116E 11AF;CFE8;110F 116E 11AF; # (쿨; 쿨; á„ᅮᆯ; 쿨; á„ᅮᆯ; ) HANGUL SYLLABLE KUL
+CFE9;CFE9;110F 116E 11B0;CFE9;110F 116E 11B0; # (ì¿©; ì¿©; á„ᅮᆰ; ì¿©; á„ᅮᆰ; ) HANGUL SYLLABLE KULG
+CFEA;CFEA;110F 116E 11B1;CFEA;110F 116E 11B1; # (쿪; 쿪; á„ᅮᆱ; 쿪; á„ᅮᆱ; ) HANGUL SYLLABLE KULM
+CFEB;CFEB;110F 116E 11B2;CFEB;110F 116E 11B2; # (ì¿«; ì¿«; á„ᅮᆲ; ì¿«; á„ᅮᆲ; ) HANGUL SYLLABLE KULB
+CFEC;CFEC;110F 116E 11B3;CFEC;110F 116E 11B3; # (쿬; 쿬; á„ᅮᆳ; 쿬; á„ᅮᆳ; ) HANGUL SYLLABLE KULS
+CFED;CFED;110F 116E 11B4;CFED;110F 116E 11B4; # (ì¿­; ì¿­; á„ᅮᆴ; ì¿­; á„ᅮᆴ; ) HANGUL SYLLABLE KULT
+CFEE;CFEE;110F 116E 11B5;CFEE;110F 116E 11B5; # (ì¿®; ì¿®; á„ᅮᆵ; ì¿®; á„ᅮᆵ; ) HANGUL SYLLABLE KULP
+CFEF;CFEF;110F 116E 11B6;CFEF;110F 116E 11B6; # (쿯; 쿯; á„ᅮᆶ; 쿯; á„ᅮᆶ; ) HANGUL SYLLABLE KULH
+CFF0;CFF0;110F 116E 11B7;CFF0;110F 116E 11B7; # (ì¿°; ì¿°; á„ᅮᆷ; ì¿°; á„ᅮᆷ; ) HANGUL SYLLABLE KUM
+CFF1;CFF1;110F 116E 11B8;CFF1;110F 116E 11B8; # (쿱; 쿱; á„ᅮᆸ; 쿱; á„ᅮᆸ; ) HANGUL SYLLABLE KUB
+CFF2;CFF2;110F 116E 11B9;CFF2;110F 116E 11B9; # (쿲; 쿲; á„ᅮᆹ; 쿲; á„ᅮᆹ; ) HANGUL SYLLABLE KUBS
+CFF3;CFF3;110F 116E 11BA;CFF3;110F 116E 11BA; # (쿳; 쿳; á„ᅮᆺ; 쿳; á„ᅮᆺ; ) HANGUL SYLLABLE KUS
+CFF4;CFF4;110F 116E 11BB;CFF4;110F 116E 11BB; # (ì¿´; ì¿´; á„ᅮᆻ; ì¿´; á„ᅮᆻ; ) HANGUL SYLLABLE KUSS
+CFF5;CFF5;110F 116E 11BC;CFF5;110F 116E 11BC; # (쿵; 쿵; á„ᅮᆼ; 쿵; á„ᅮᆼ; ) HANGUL SYLLABLE KUNG
+CFF6;CFF6;110F 116E 11BD;CFF6;110F 116E 11BD; # (쿶; 쿶; á„ᅮᆽ; 쿶; á„ᅮᆽ; ) HANGUL SYLLABLE KUJ
+CFF7;CFF7;110F 116E 11BE;CFF7;110F 116E 11BE; # (ì¿·; ì¿·; á„ᅮᆾ; ì¿·; á„ᅮᆾ; ) HANGUL SYLLABLE KUC
+CFF8;CFF8;110F 116E 11BF;CFF8;110F 116E 11BF; # (쿸; 쿸; á„ᅮᆿ; 쿸; á„ᅮᆿ; ) HANGUL SYLLABLE KUK
+CFF9;CFF9;110F 116E 11C0;CFF9;110F 116E 11C0; # (쿹; 쿹; á„ᅮᇀ; 쿹; á„ᅮᇀ; ) HANGUL SYLLABLE KUT
+CFFA;CFFA;110F 116E 11C1;CFFA;110F 116E 11C1; # (쿺; 쿺; á„á…®á‡; 쿺; á„á…®á‡; ) HANGUL SYLLABLE KUP
+CFFB;CFFB;110F 116E 11C2;CFFB;110F 116E 11C2; # (ì¿»; ì¿»; á„ᅮᇂ; ì¿»; á„ᅮᇂ; ) HANGUL SYLLABLE KUH
+CFFC;CFFC;110F 116F;CFFC;110F 116F; # (쿼; 쿼; á„á…¯; 쿼; á„á…¯; ) HANGUL SYLLABLE KWEO
+CFFD;CFFD;110F 116F 11A8;CFFD;110F 116F 11A8; # (쿽; 쿽; á„ᅯᆨ; 쿽; á„ᅯᆨ; ) HANGUL SYLLABLE KWEOG
+CFFE;CFFE;110F 116F 11A9;CFFE;110F 116F 11A9; # (쿾; 쿾; á„ᅯᆩ; 쿾; á„ᅯᆩ; ) HANGUL SYLLABLE KWEOGG
+CFFF;CFFF;110F 116F 11AA;CFFF;110F 116F 11AA; # (ì¿¿; ì¿¿; á„ᅯᆪ; ì¿¿; á„ᅯᆪ; ) HANGUL SYLLABLE KWEOGS
+D000;D000;110F 116F 11AB;D000;110F 116F 11AB; # (퀀; 퀀; á„ᅯᆫ; 퀀; á„ᅯᆫ; ) HANGUL SYLLABLE KWEON
+D001;D001;110F 116F 11AC;D001;110F 116F 11AC; # (í€; í€; á„ᅯᆬ; í€; á„ᅯᆬ; ) HANGUL SYLLABLE KWEONJ
+D002;D002;110F 116F 11AD;D002;110F 116F 11AD; # (퀂; 퀂; á„ᅯᆭ; 퀂; á„ᅯᆭ; ) HANGUL SYLLABLE KWEONH
+D003;D003;110F 116F 11AE;D003;110F 116F 11AE; # (퀃; 퀃; á„ᅯᆮ; 퀃; á„ᅯᆮ; ) HANGUL SYLLABLE KWEOD
+D004;D004;110F 116F 11AF;D004;110F 116F 11AF; # (퀄; 퀄; á„ᅯᆯ; 퀄; á„ᅯᆯ; ) HANGUL SYLLABLE KWEOL
+D005;D005;110F 116F 11B0;D005;110F 116F 11B0; # (퀅; 퀅; á„ᅯᆰ; 퀅; á„ᅯᆰ; ) HANGUL SYLLABLE KWEOLG
+D006;D006;110F 116F 11B1;D006;110F 116F 11B1; # (퀆; 퀆; á„ᅯᆱ; 퀆; á„ᅯᆱ; ) HANGUL SYLLABLE KWEOLM
+D007;D007;110F 116F 11B2;D007;110F 116F 11B2; # (퀇; 퀇; á„ᅯᆲ; 퀇; á„ᅯᆲ; ) HANGUL SYLLABLE KWEOLB
+D008;D008;110F 116F 11B3;D008;110F 116F 11B3; # (퀈; 퀈; á„ᅯᆳ; 퀈; á„ᅯᆳ; ) HANGUL SYLLABLE KWEOLS
+D009;D009;110F 116F 11B4;D009;110F 116F 11B4; # (퀉; 퀉; á„ᅯᆴ; 퀉; á„ᅯᆴ; ) HANGUL SYLLABLE KWEOLT
+D00A;D00A;110F 116F 11B5;D00A;110F 116F 11B5; # (퀊; 퀊; á„ᅯᆵ; 퀊; á„ᅯᆵ; ) HANGUL SYLLABLE KWEOLP
+D00B;D00B;110F 116F 11B6;D00B;110F 116F 11B6; # (퀋; 퀋; á„ᅯᆶ; 퀋; á„ᅯᆶ; ) HANGUL SYLLABLE KWEOLH
+D00C;D00C;110F 116F 11B7;D00C;110F 116F 11B7; # (퀌; 퀌; á„ᅯᆷ; 퀌; á„ᅯᆷ; ) HANGUL SYLLABLE KWEOM
+D00D;D00D;110F 116F 11B8;D00D;110F 116F 11B8; # (í€; í€; á„ᅯᆸ; í€; á„ᅯᆸ; ) HANGUL SYLLABLE KWEOB
+D00E;D00E;110F 116F 11B9;D00E;110F 116F 11B9; # (퀎; 퀎; á„ᅯᆹ; 퀎; á„ᅯᆹ; ) HANGUL SYLLABLE KWEOBS
+D00F;D00F;110F 116F 11BA;D00F;110F 116F 11BA; # (í€; í€; á„ᅯᆺ; í€; á„ᅯᆺ; ) HANGUL SYLLABLE KWEOS
+D010;D010;110F 116F 11BB;D010;110F 116F 11BB; # (í€; í€; á„ᅯᆻ; í€; á„ᅯᆻ; ) HANGUL SYLLABLE KWEOSS
+D011;D011;110F 116F 11BC;D011;110F 116F 11BC; # (퀑; 퀑; á„ᅯᆼ; 퀑; á„ᅯᆼ; ) HANGUL SYLLABLE KWEONG
+D012;D012;110F 116F 11BD;D012;110F 116F 11BD; # (퀒; 퀒; á„ᅯᆽ; 퀒; á„ᅯᆽ; ) HANGUL SYLLABLE KWEOJ
+D013;D013;110F 116F 11BE;D013;110F 116F 11BE; # (퀓; 퀓; á„ᅯᆾ; 퀓; á„ᅯᆾ; ) HANGUL SYLLABLE KWEOC
+D014;D014;110F 116F 11BF;D014;110F 116F 11BF; # (퀔; 퀔; á„ᅯᆿ; 퀔; á„ᅯᆿ; ) HANGUL SYLLABLE KWEOK
+D015;D015;110F 116F 11C0;D015;110F 116F 11C0; # (퀕; 퀕; á„ᅯᇀ; 퀕; á„ᅯᇀ; ) HANGUL SYLLABLE KWEOT
+D016;D016;110F 116F 11C1;D016;110F 116F 11C1; # (퀖; 퀖; á„á…¯á‡; 퀖; á„á…¯á‡; ) HANGUL SYLLABLE KWEOP
+D017;D017;110F 116F 11C2;D017;110F 116F 11C2; # (퀗; 퀗; á„ᅯᇂ; 퀗; á„ᅯᇂ; ) HANGUL SYLLABLE KWEOH
+D018;D018;110F 1170;D018;110F 1170; # (퀘; 퀘; á„á…°; 퀘; á„á…°; ) HANGUL SYLLABLE KWE
+D019;D019;110F 1170 11A8;D019;110F 1170 11A8; # (퀙; 퀙; á„ᅰᆨ; 퀙; á„ᅰᆨ; ) HANGUL SYLLABLE KWEG
+D01A;D01A;110F 1170 11A9;D01A;110F 1170 11A9; # (퀚; 퀚; á„ᅰᆩ; 퀚; á„ᅰᆩ; ) HANGUL SYLLABLE KWEGG
+D01B;D01B;110F 1170 11AA;D01B;110F 1170 11AA; # (퀛; 퀛; á„ᅰᆪ; 퀛; á„ᅰᆪ; ) HANGUL SYLLABLE KWEGS
+D01C;D01C;110F 1170 11AB;D01C;110F 1170 11AB; # (퀜; 퀜; á„ᅰᆫ; 퀜; á„ᅰᆫ; ) HANGUL SYLLABLE KWEN
+D01D;D01D;110F 1170 11AC;D01D;110F 1170 11AC; # (í€; í€; á„ᅰᆬ; í€; á„ᅰᆬ; ) HANGUL SYLLABLE KWENJ
+D01E;D01E;110F 1170 11AD;D01E;110F 1170 11AD; # (퀞; 퀞; á„ᅰᆭ; 퀞; á„ᅰᆭ; ) HANGUL SYLLABLE KWENH
+D01F;D01F;110F 1170 11AE;D01F;110F 1170 11AE; # (퀟; 퀟; á„ᅰᆮ; 퀟; á„ᅰᆮ; ) HANGUL SYLLABLE KWED
+D020;D020;110F 1170 11AF;D020;110F 1170 11AF; # (퀠; 퀠; á„ᅰᆯ; 퀠; á„ᅰᆯ; ) HANGUL SYLLABLE KWEL
+D021;D021;110F 1170 11B0;D021;110F 1170 11B0; # (퀡; 퀡; á„ᅰᆰ; 퀡; á„ᅰᆰ; ) HANGUL SYLLABLE KWELG
+D022;D022;110F 1170 11B1;D022;110F 1170 11B1; # (퀢; 퀢; á„ᅰᆱ; 퀢; á„ᅰᆱ; ) HANGUL SYLLABLE KWELM
+D023;D023;110F 1170 11B2;D023;110F 1170 11B2; # (퀣; 퀣; á„ᅰᆲ; 퀣; á„ᅰᆲ; ) HANGUL SYLLABLE KWELB
+D024;D024;110F 1170 11B3;D024;110F 1170 11B3; # (퀤; 퀤; á„ᅰᆳ; 퀤; á„ᅰᆳ; ) HANGUL SYLLABLE KWELS
+D025;D025;110F 1170 11B4;D025;110F 1170 11B4; # (퀥; 퀥; á„ᅰᆴ; 퀥; á„ᅰᆴ; ) HANGUL SYLLABLE KWELT
+D026;D026;110F 1170 11B5;D026;110F 1170 11B5; # (퀦; 퀦; á„ᅰᆵ; 퀦; á„ᅰᆵ; ) HANGUL SYLLABLE KWELP
+D027;D027;110F 1170 11B6;D027;110F 1170 11B6; # (퀧; 퀧; á„ᅰᆶ; 퀧; á„ᅰᆶ; ) HANGUL SYLLABLE KWELH
+D028;D028;110F 1170 11B7;D028;110F 1170 11B7; # (퀨; 퀨; á„ᅰᆷ; 퀨; á„ᅰᆷ; ) HANGUL SYLLABLE KWEM
+D029;D029;110F 1170 11B8;D029;110F 1170 11B8; # (퀩; 퀩; á„ᅰᆸ; 퀩; á„ᅰᆸ; ) HANGUL SYLLABLE KWEB
+D02A;D02A;110F 1170 11B9;D02A;110F 1170 11B9; # (퀪; 퀪; á„ᅰᆹ; 퀪; á„ᅰᆹ; ) HANGUL SYLLABLE KWEBS
+D02B;D02B;110F 1170 11BA;D02B;110F 1170 11BA; # (퀫; 퀫; á„ᅰᆺ; 퀫; á„ᅰᆺ; ) HANGUL SYLLABLE KWES
+D02C;D02C;110F 1170 11BB;D02C;110F 1170 11BB; # (퀬; 퀬; á„ᅰᆻ; 퀬; á„ᅰᆻ; ) HANGUL SYLLABLE KWESS
+D02D;D02D;110F 1170 11BC;D02D;110F 1170 11BC; # (퀭; 퀭; á„ᅰᆼ; 퀭; á„ᅰᆼ; ) HANGUL SYLLABLE KWENG
+D02E;D02E;110F 1170 11BD;D02E;110F 1170 11BD; # (퀮; 퀮; á„ᅰᆽ; 퀮; á„ᅰᆽ; ) HANGUL SYLLABLE KWEJ
+D02F;D02F;110F 1170 11BE;D02F;110F 1170 11BE; # (퀯; 퀯; á„ᅰᆾ; 퀯; á„ᅰᆾ; ) HANGUL SYLLABLE KWEC
+D030;D030;110F 1170 11BF;D030;110F 1170 11BF; # (퀰; 퀰; á„ᅰᆿ; 퀰; á„ᅰᆿ; ) HANGUL SYLLABLE KWEK
+D031;D031;110F 1170 11C0;D031;110F 1170 11C0; # (퀱; 퀱; á„ᅰᇀ; 퀱; á„ᅰᇀ; ) HANGUL SYLLABLE KWET
+D032;D032;110F 1170 11C1;D032;110F 1170 11C1; # (퀲; 퀲; á„á…°á‡; 퀲; á„á…°á‡; ) HANGUL SYLLABLE KWEP
+D033;D033;110F 1170 11C2;D033;110F 1170 11C2; # (퀳; 퀳; á„ᅰᇂ; 퀳; á„ᅰᇂ; ) HANGUL SYLLABLE KWEH
+D034;D034;110F 1171;D034;110F 1171; # (퀴; 퀴; á„á…±; 퀴; á„á…±; ) HANGUL SYLLABLE KWI
+D035;D035;110F 1171 11A8;D035;110F 1171 11A8; # (퀵; 퀵; á„ᅱᆨ; 퀵; á„ᅱᆨ; ) HANGUL SYLLABLE KWIG
+D036;D036;110F 1171 11A9;D036;110F 1171 11A9; # (퀶; 퀶; á„ᅱᆩ; 퀶; á„ᅱᆩ; ) HANGUL SYLLABLE KWIGG
+D037;D037;110F 1171 11AA;D037;110F 1171 11AA; # (퀷; 퀷; á„ᅱᆪ; 퀷; á„ᅱᆪ; ) HANGUL SYLLABLE KWIGS
+D038;D038;110F 1171 11AB;D038;110F 1171 11AB; # (퀸; 퀸; á„ᅱᆫ; 퀸; á„ᅱᆫ; ) HANGUL SYLLABLE KWIN
+D039;D039;110F 1171 11AC;D039;110F 1171 11AC; # (퀹; 퀹; á„ᅱᆬ; 퀹; á„ᅱᆬ; ) HANGUL SYLLABLE KWINJ
+D03A;D03A;110F 1171 11AD;D03A;110F 1171 11AD; # (퀺; 퀺; á„ᅱᆭ; 퀺; á„ᅱᆭ; ) HANGUL SYLLABLE KWINH
+D03B;D03B;110F 1171 11AE;D03B;110F 1171 11AE; # (퀻; 퀻; á„ᅱᆮ; 퀻; á„ᅱᆮ; ) HANGUL SYLLABLE KWID
+D03C;D03C;110F 1171 11AF;D03C;110F 1171 11AF; # (퀼; 퀼; á„ᅱᆯ; 퀼; á„ᅱᆯ; ) HANGUL SYLLABLE KWIL
+D03D;D03D;110F 1171 11B0;D03D;110F 1171 11B0; # (퀽; 퀽; á„ᅱᆰ; 퀽; á„ᅱᆰ; ) HANGUL SYLLABLE KWILG
+D03E;D03E;110F 1171 11B1;D03E;110F 1171 11B1; # (퀾; 퀾; á„ᅱᆱ; 퀾; á„ᅱᆱ; ) HANGUL SYLLABLE KWILM
+D03F;D03F;110F 1171 11B2;D03F;110F 1171 11B2; # (퀿; 퀿; á„ᅱᆲ; 퀿; á„ᅱᆲ; ) HANGUL SYLLABLE KWILB
+D040;D040;110F 1171 11B3;D040;110F 1171 11B3; # (í€; í€; á„ᅱᆳ; í€; á„ᅱᆳ; ) HANGUL SYLLABLE KWILS
+D041;D041;110F 1171 11B4;D041;110F 1171 11B4; # (í; í; á„ᅱᆴ; í; á„ᅱᆴ; ) HANGUL SYLLABLE KWILT
+D042;D042;110F 1171 11B5;D042;110F 1171 11B5; # (í‚; í‚; á„ᅱᆵ; í‚; á„ᅱᆵ; ) HANGUL SYLLABLE KWILP
+D043;D043;110F 1171 11B6;D043;110F 1171 11B6; # (íƒ; íƒ; á„ᅱᆶ; íƒ; á„ᅱᆶ; ) HANGUL SYLLABLE KWILH
+D044;D044;110F 1171 11B7;D044;110F 1171 11B7; # (í„; í„; á„ᅱᆷ; í„; á„ᅱᆷ; ) HANGUL SYLLABLE KWIM
+D045;D045;110F 1171 11B8;D045;110F 1171 11B8; # (í…; í…; á„ᅱᆸ; í…; á„ᅱᆸ; ) HANGUL SYLLABLE KWIB
+D046;D046;110F 1171 11B9;D046;110F 1171 11B9; # (í†; í†; á„ᅱᆹ; í†; á„ᅱᆹ; ) HANGUL SYLLABLE KWIBS
+D047;D047;110F 1171 11BA;D047;110F 1171 11BA; # (í‡; í‡; á„ᅱᆺ; í‡; á„ᅱᆺ; ) HANGUL SYLLABLE KWIS
+D048;D048;110F 1171 11BB;D048;110F 1171 11BB; # (íˆ; íˆ; á„ᅱᆻ; íˆ; á„ᅱᆻ; ) HANGUL SYLLABLE KWISS
+D049;D049;110F 1171 11BC;D049;110F 1171 11BC; # (í‰; í‰; á„ᅱᆼ; í‰; á„ᅱᆼ; ) HANGUL SYLLABLE KWING
+D04A;D04A;110F 1171 11BD;D04A;110F 1171 11BD; # (íŠ; íŠ; á„ᅱᆽ; íŠ; á„ᅱᆽ; ) HANGUL SYLLABLE KWIJ
+D04B;D04B;110F 1171 11BE;D04B;110F 1171 11BE; # (í‹; í‹; á„ᅱᆾ; í‹; á„ᅱᆾ; ) HANGUL SYLLABLE KWIC
+D04C;D04C;110F 1171 11BF;D04C;110F 1171 11BF; # (íŒ; íŒ; á„ᅱᆿ; íŒ; á„ᅱᆿ; ) HANGUL SYLLABLE KWIK
+D04D;D04D;110F 1171 11C0;D04D;110F 1171 11C0; # (í; í; á„ᅱᇀ; í; á„ᅱᇀ; ) HANGUL SYLLABLE KWIT
+D04E;D04E;110F 1171 11C1;D04E;110F 1171 11C1; # (íŽ; íŽ; á„á…±á‡; íŽ; á„á…±á‡; ) HANGUL SYLLABLE KWIP
+D04F;D04F;110F 1171 11C2;D04F;110F 1171 11C2; # (í; í; á„ᅱᇂ; í; á„ᅱᇂ; ) HANGUL SYLLABLE KWIH
+D050;D050;110F 1172;D050;110F 1172; # (í; í; á„á…²; í; á„á…²; ) HANGUL SYLLABLE KYU
+D051;D051;110F 1172 11A8;D051;110F 1172 11A8; # (í‘; í‘; á„ᅲᆨ; í‘; á„ᅲᆨ; ) HANGUL SYLLABLE KYUG
+D052;D052;110F 1172 11A9;D052;110F 1172 11A9; # (í’; í’; á„ᅲᆩ; í’; á„ᅲᆩ; ) HANGUL SYLLABLE KYUGG
+D053;D053;110F 1172 11AA;D053;110F 1172 11AA; # (í“; í“; á„ᅲᆪ; í“; á„ᅲᆪ; ) HANGUL SYLLABLE KYUGS
+D054;D054;110F 1172 11AB;D054;110F 1172 11AB; # (í”; í”; á„ᅲᆫ; í”; á„ᅲᆫ; ) HANGUL SYLLABLE KYUN
+D055;D055;110F 1172 11AC;D055;110F 1172 11AC; # (í•; í•; á„ᅲᆬ; í•; á„ᅲᆬ; ) HANGUL SYLLABLE KYUNJ
+D056;D056;110F 1172 11AD;D056;110F 1172 11AD; # (í–; í–; á„ᅲᆭ; í–; á„ᅲᆭ; ) HANGUL SYLLABLE KYUNH
+D057;D057;110F 1172 11AE;D057;110F 1172 11AE; # (í—; í—; á„ᅲᆮ; í—; á„ᅲᆮ; ) HANGUL SYLLABLE KYUD
+D058;D058;110F 1172 11AF;D058;110F 1172 11AF; # (í˜; í˜; á„ᅲᆯ; í˜; á„ᅲᆯ; ) HANGUL SYLLABLE KYUL
+D059;D059;110F 1172 11B0;D059;110F 1172 11B0; # (í™; í™; á„ᅲᆰ; í™; á„ᅲᆰ; ) HANGUL SYLLABLE KYULG
+D05A;D05A;110F 1172 11B1;D05A;110F 1172 11B1; # (íš; íš; á„ᅲᆱ; íš; á„ᅲᆱ; ) HANGUL SYLLABLE KYULM
+D05B;D05B;110F 1172 11B2;D05B;110F 1172 11B2; # (í›; í›; á„ᅲᆲ; í›; á„ᅲᆲ; ) HANGUL SYLLABLE KYULB
+D05C;D05C;110F 1172 11B3;D05C;110F 1172 11B3; # (íœ; íœ; á„ᅲᆳ; íœ; á„ᅲᆳ; ) HANGUL SYLLABLE KYULS
+D05D;D05D;110F 1172 11B4;D05D;110F 1172 11B4; # (í; í; á„ᅲᆴ; í; á„ᅲᆴ; ) HANGUL SYLLABLE KYULT
+D05E;D05E;110F 1172 11B5;D05E;110F 1172 11B5; # (íž; íž; á„ᅲᆵ; íž; á„ᅲᆵ; ) HANGUL SYLLABLE KYULP
+D05F;D05F;110F 1172 11B6;D05F;110F 1172 11B6; # (íŸ; íŸ; á„ᅲᆶ; íŸ; á„ᅲᆶ; ) HANGUL SYLLABLE KYULH
+D060;D060;110F 1172 11B7;D060;110F 1172 11B7; # (í ; í ; á„ᅲᆷ; í ; á„ᅲᆷ; ) HANGUL SYLLABLE KYUM
+D061;D061;110F 1172 11B8;D061;110F 1172 11B8; # (í¡; í¡; á„ᅲᆸ; í¡; á„ᅲᆸ; ) HANGUL SYLLABLE KYUB
+D062;D062;110F 1172 11B9;D062;110F 1172 11B9; # (í¢; í¢; á„ᅲᆹ; í¢; á„ᅲᆹ; ) HANGUL SYLLABLE KYUBS
+D063;D063;110F 1172 11BA;D063;110F 1172 11BA; # (í£; í£; á„ᅲᆺ; í£; á„ᅲᆺ; ) HANGUL SYLLABLE KYUS
+D064;D064;110F 1172 11BB;D064;110F 1172 11BB; # (í¤; í¤; á„ᅲᆻ; í¤; á„ᅲᆻ; ) HANGUL SYLLABLE KYUSS
+D065;D065;110F 1172 11BC;D065;110F 1172 11BC; # (í¥; í¥; á„ᅲᆼ; í¥; á„ᅲᆼ; ) HANGUL SYLLABLE KYUNG
+D066;D066;110F 1172 11BD;D066;110F 1172 11BD; # (í¦; í¦; á„ᅲᆽ; í¦; á„ᅲᆽ; ) HANGUL SYLLABLE KYUJ
+D067;D067;110F 1172 11BE;D067;110F 1172 11BE; # (í§; í§; á„ᅲᆾ; í§; á„ᅲᆾ; ) HANGUL SYLLABLE KYUC
+D068;D068;110F 1172 11BF;D068;110F 1172 11BF; # (í¨; í¨; á„ᅲᆿ; í¨; á„ᅲᆿ; ) HANGUL SYLLABLE KYUK
+D069;D069;110F 1172 11C0;D069;110F 1172 11C0; # (í©; í©; á„ᅲᇀ; í©; á„ᅲᇀ; ) HANGUL SYLLABLE KYUT
+D06A;D06A;110F 1172 11C1;D06A;110F 1172 11C1; # (íª; íª; á„á…²á‡; íª; á„á…²á‡; ) HANGUL SYLLABLE KYUP
+D06B;D06B;110F 1172 11C2;D06B;110F 1172 11C2; # (í«; í«; á„ᅲᇂ; í«; á„ᅲᇂ; ) HANGUL SYLLABLE KYUH
+D06C;D06C;110F 1173;D06C;110F 1173; # (í¬; í¬; á„á…³; í¬; á„á…³; ) HANGUL SYLLABLE KEU
+D06D;D06D;110F 1173 11A8;D06D;110F 1173 11A8; # (í­; í­; á„ᅳᆨ; í­; á„ᅳᆨ; ) HANGUL SYLLABLE KEUG
+D06E;D06E;110F 1173 11A9;D06E;110F 1173 11A9; # (í®; í®; á„ᅳᆩ; í®; á„ᅳᆩ; ) HANGUL SYLLABLE KEUGG
+D06F;D06F;110F 1173 11AA;D06F;110F 1173 11AA; # (í¯; í¯; á„ᅳᆪ; í¯; á„ᅳᆪ; ) HANGUL SYLLABLE KEUGS
+D070;D070;110F 1173 11AB;D070;110F 1173 11AB; # (í°; í°; á„ᅳᆫ; í°; á„ᅳᆫ; ) HANGUL SYLLABLE KEUN
+D071;D071;110F 1173 11AC;D071;110F 1173 11AC; # (í±; í±; á„ᅳᆬ; í±; á„ᅳᆬ; ) HANGUL SYLLABLE KEUNJ
+D072;D072;110F 1173 11AD;D072;110F 1173 11AD; # (í²; í²; á„ᅳᆭ; í²; á„ᅳᆭ; ) HANGUL SYLLABLE KEUNH
+D073;D073;110F 1173 11AE;D073;110F 1173 11AE; # (í³; í³; á„ᅳᆮ; í³; á„ᅳᆮ; ) HANGUL SYLLABLE KEUD
+D074;D074;110F 1173 11AF;D074;110F 1173 11AF; # (í´; í´; á„ᅳᆯ; í´; á„ᅳᆯ; ) HANGUL SYLLABLE KEUL
+D075;D075;110F 1173 11B0;D075;110F 1173 11B0; # (íµ; íµ; á„ᅳᆰ; íµ; á„ᅳᆰ; ) HANGUL SYLLABLE KEULG
+D076;D076;110F 1173 11B1;D076;110F 1173 11B1; # (í¶; í¶; á„ᅳᆱ; í¶; á„ᅳᆱ; ) HANGUL SYLLABLE KEULM
+D077;D077;110F 1173 11B2;D077;110F 1173 11B2; # (í·; í·; á„ᅳᆲ; í·; á„ᅳᆲ; ) HANGUL SYLLABLE KEULB
+D078;D078;110F 1173 11B3;D078;110F 1173 11B3; # (í¸; í¸; á„ᅳᆳ; í¸; á„ᅳᆳ; ) HANGUL SYLLABLE KEULS
+D079;D079;110F 1173 11B4;D079;110F 1173 11B4; # (í¹; í¹; á„ᅳᆴ; í¹; á„ᅳᆴ; ) HANGUL SYLLABLE KEULT
+D07A;D07A;110F 1173 11B5;D07A;110F 1173 11B5; # (íº; íº; á„ᅳᆵ; íº; á„ᅳᆵ; ) HANGUL SYLLABLE KEULP
+D07B;D07B;110F 1173 11B6;D07B;110F 1173 11B6; # (í»; í»; á„ᅳᆶ; í»; á„ᅳᆶ; ) HANGUL SYLLABLE KEULH
+D07C;D07C;110F 1173 11B7;D07C;110F 1173 11B7; # (í¼; í¼; á„ᅳᆷ; í¼; á„ᅳᆷ; ) HANGUL SYLLABLE KEUM
+D07D;D07D;110F 1173 11B8;D07D;110F 1173 11B8; # (í½; í½; á„ᅳᆸ; í½; á„ᅳᆸ; ) HANGUL SYLLABLE KEUB
+D07E;D07E;110F 1173 11B9;D07E;110F 1173 11B9; # (í¾; í¾; á„ᅳᆹ; í¾; á„ᅳᆹ; ) HANGUL SYLLABLE KEUBS
+D07F;D07F;110F 1173 11BA;D07F;110F 1173 11BA; # (í¿; í¿; á„ᅳᆺ; í¿; á„ᅳᆺ; ) HANGUL SYLLABLE KEUS
+D080;D080;110F 1173 11BB;D080;110F 1173 11BB; # (í‚€; í‚€; á„ᅳᆻ; í‚€; á„ᅳᆻ; ) HANGUL SYLLABLE KEUSS
+D081;D081;110F 1173 11BC;D081;110F 1173 11BC; # (í‚; í‚; á„ᅳᆼ; í‚; á„ᅳᆼ; ) HANGUL SYLLABLE KEUNG
+D082;D082;110F 1173 11BD;D082;110F 1173 11BD; # (í‚‚; í‚‚; á„ᅳᆽ; í‚‚; á„ᅳᆽ; ) HANGUL SYLLABLE KEUJ
+D083;D083;110F 1173 11BE;D083;110F 1173 11BE; # (킃; 킃; á„ᅳᆾ; 킃; á„ᅳᆾ; ) HANGUL SYLLABLE KEUC
+D084;D084;110F 1173 11BF;D084;110F 1173 11BF; # (í‚„; í‚„; á„ᅳᆿ; í‚„; á„ᅳᆿ; ) HANGUL SYLLABLE KEUK
+D085;D085;110F 1173 11C0;D085;110F 1173 11C0; # (í‚…; í‚…; á„ᅳᇀ; í‚…; á„ᅳᇀ; ) HANGUL SYLLABLE KEUT
+D086;D086;110F 1173 11C1;D086;110F 1173 11C1; # (킆; 킆; á„á…³á‡; 킆; á„á…³á‡; ) HANGUL SYLLABLE KEUP
+D087;D087;110F 1173 11C2;D087;110F 1173 11C2; # (킇; 킇; á„ᅳᇂ; 킇; á„ᅳᇂ; ) HANGUL SYLLABLE KEUH
+D088;D088;110F 1174;D088;110F 1174; # (킈; 킈; á„á…´; 킈; á„á…´; ) HANGUL SYLLABLE KYI
+D089;D089;110F 1174 11A8;D089;110F 1174 11A8; # (킉; 킉; á„ᅴᆨ; 킉; á„ᅴᆨ; ) HANGUL SYLLABLE KYIG
+D08A;D08A;110F 1174 11A9;D08A;110F 1174 11A9; # (í‚Š; í‚Š; á„ᅴᆩ; í‚Š; á„ᅴᆩ; ) HANGUL SYLLABLE KYIGG
+D08B;D08B;110F 1174 11AA;D08B;110F 1174 11AA; # (í‚‹; í‚‹; á„ᅴᆪ; í‚‹; á„ᅴᆪ; ) HANGUL SYLLABLE KYIGS
+D08C;D08C;110F 1174 11AB;D08C;110F 1174 11AB; # (í‚Œ; í‚Œ; á„ᅴᆫ; í‚Œ; á„ᅴᆫ; ) HANGUL SYLLABLE KYIN
+D08D;D08D;110F 1174 11AC;D08D;110F 1174 11AC; # (í‚; í‚; á„ᅴᆬ; í‚; á„ᅴᆬ; ) HANGUL SYLLABLE KYINJ
+D08E;D08E;110F 1174 11AD;D08E;110F 1174 11AD; # (í‚Ž; í‚Ž; á„ᅴᆭ; í‚Ž; á„ᅴᆭ; ) HANGUL SYLLABLE KYINH
+D08F;D08F;110F 1174 11AE;D08F;110F 1174 11AE; # (í‚; í‚; á„ᅴᆮ; í‚; á„ᅴᆮ; ) HANGUL SYLLABLE KYID
+D090;D090;110F 1174 11AF;D090;110F 1174 11AF; # (í‚; í‚; á„ᅴᆯ; í‚; á„ᅴᆯ; ) HANGUL SYLLABLE KYIL
+D091;D091;110F 1174 11B0;D091;110F 1174 11B0; # (í‚‘; í‚‘; á„ᅴᆰ; í‚‘; á„ᅴᆰ; ) HANGUL SYLLABLE KYILG
+D092;D092;110F 1174 11B1;D092;110F 1174 11B1; # (í‚’; í‚’; á„ᅴᆱ; í‚’; á„ᅴᆱ; ) HANGUL SYLLABLE KYILM
+D093;D093;110F 1174 11B2;D093;110F 1174 11B2; # (í‚“; í‚“; á„ᅴᆲ; í‚“; á„ᅴᆲ; ) HANGUL SYLLABLE KYILB
+D094;D094;110F 1174 11B3;D094;110F 1174 11B3; # (í‚”; í‚”; á„ᅴᆳ; í‚”; á„ᅴᆳ; ) HANGUL SYLLABLE KYILS
+D095;D095;110F 1174 11B4;D095;110F 1174 11B4; # (í‚•; í‚•; á„ᅴᆴ; í‚•; á„ᅴᆴ; ) HANGUL SYLLABLE KYILT
+D096;D096;110F 1174 11B5;D096;110F 1174 11B5; # (í‚–; í‚–; á„ᅴᆵ; í‚–; á„ᅴᆵ; ) HANGUL SYLLABLE KYILP
+D097;D097;110F 1174 11B6;D097;110F 1174 11B6; # (í‚—; í‚—; á„ᅴᆶ; í‚—; á„ᅴᆶ; ) HANGUL SYLLABLE KYILH
+D098;D098;110F 1174 11B7;D098;110F 1174 11B7; # (킘; 킘; á„ᅴᆷ; 킘; á„ᅴᆷ; ) HANGUL SYLLABLE KYIM
+D099;D099;110F 1174 11B8;D099;110F 1174 11B8; # (í‚™; í‚™; á„ᅴᆸ; í‚™; á„ᅴᆸ; ) HANGUL SYLLABLE KYIB
+D09A;D09A;110F 1174 11B9;D09A;110F 1174 11B9; # (í‚š; í‚š; á„ᅴᆹ; í‚š; á„ᅴᆹ; ) HANGUL SYLLABLE KYIBS
+D09B;D09B;110F 1174 11BA;D09B;110F 1174 11BA; # (í‚›; í‚›; á„ᅴᆺ; í‚›; á„ᅴᆺ; ) HANGUL SYLLABLE KYIS
+D09C;D09C;110F 1174 11BB;D09C;110F 1174 11BB; # (í‚œ; í‚œ; á„ᅴᆻ; í‚œ; á„ᅴᆻ; ) HANGUL SYLLABLE KYISS
+D09D;D09D;110F 1174 11BC;D09D;110F 1174 11BC; # (í‚; í‚; á„ᅴᆼ; í‚; á„ᅴᆼ; ) HANGUL SYLLABLE KYING
+D09E;D09E;110F 1174 11BD;D09E;110F 1174 11BD; # (í‚ž; í‚ž; á„ᅴᆽ; í‚ž; á„ᅴᆽ; ) HANGUL SYLLABLE KYIJ
+D09F;D09F;110F 1174 11BE;D09F;110F 1174 11BE; # (í‚Ÿ; í‚Ÿ; á„ᅴᆾ; í‚Ÿ; á„ᅴᆾ; ) HANGUL SYLLABLE KYIC
+D0A0;D0A0;110F 1174 11BF;D0A0;110F 1174 11BF; # (í‚ ; í‚ ; á„ᅴᆿ; í‚ ; á„ᅴᆿ; ) HANGUL SYLLABLE KYIK
+D0A1;D0A1;110F 1174 11C0;D0A1;110F 1174 11C0; # (í‚¡; í‚¡; á„ᅴᇀ; í‚¡; á„ᅴᇀ; ) HANGUL SYLLABLE KYIT
+D0A2;D0A2;110F 1174 11C1;D0A2;110F 1174 11C1; # (í‚¢; í‚¢; á„á…´á‡; í‚¢; á„á…´á‡; ) HANGUL SYLLABLE KYIP
+D0A3;D0A3;110F 1174 11C2;D0A3;110F 1174 11C2; # (í‚£; í‚£; á„ᅴᇂ; í‚£; á„ᅴᇂ; ) HANGUL SYLLABLE KYIH
+D0A4;D0A4;110F 1175;D0A4;110F 1175; # (키; 키; á„á…µ; 키; á„á…µ; ) HANGUL SYLLABLE KI
+D0A5;D0A5;110F 1175 11A8;D0A5;110F 1175 11A8; # (í‚¥; í‚¥; á„ᅵᆨ; í‚¥; á„ᅵᆨ; ) HANGUL SYLLABLE KIG
+D0A6;D0A6;110F 1175 11A9;D0A6;110F 1175 11A9; # (킦; 킦; á„ᅵᆩ; 킦; á„ᅵᆩ; ) HANGUL SYLLABLE KIGG
+D0A7;D0A7;110F 1175 11AA;D0A7;110F 1175 11AA; # (킧; 킧; á„ᅵᆪ; 킧; á„ᅵᆪ; ) HANGUL SYLLABLE KIGS
+D0A8;D0A8;110F 1175 11AB;D0A8;110F 1175 11AB; # (킨; 킨; á„ᅵᆫ; 킨; á„ᅵᆫ; ) HANGUL SYLLABLE KIN
+D0A9;D0A9;110F 1175 11AC;D0A9;110F 1175 11AC; # (í‚©; í‚©; á„ᅵᆬ; í‚©; á„ᅵᆬ; ) HANGUL SYLLABLE KINJ
+D0AA;D0AA;110F 1175 11AD;D0AA;110F 1175 11AD; # (킪; 킪; á„ᅵᆭ; 킪; á„ᅵᆭ; ) HANGUL SYLLABLE KINH
+D0AB;D0AB;110F 1175 11AE;D0AB;110F 1175 11AE; # (í‚«; í‚«; á„ᅵᆮ; í‚«; á„ᅵᆮ; ) HANGUL SYLLABLE KID
+D0AC;D0AC;110F 1175 11AF;D0AC;110F 1175 11AF; # (킬; 킬; á„ᅵᆯ; 킬; á„ᅵᆯ; ) HANGUL SYLLABLE KIL
+D0AD;D0AD;110F 1175 11B0;D0AD;110F 1175 11B0; # (í‚­; í‚­; á„ᅵᆰ; í‚­; á„ᅵᆰ; ) HANGUL SYLLABLE KILG
+D0AE;D0AE;110F 1175 11B1;D0AE;110F 1175 11B1; # (í‚®; í‚®; á„ᅵᆱ; í‚®; á„ᅵᆱ; ) HANGUL SYLLABLE KILM
+D0AF;D0AF;110F 1175 11B2;D0AF;110F 1175 11B2; # (킯; 킯; á„ᅵᆲ; 킯; á„ᅵᆲ; ) HANGUL SYLLABLE KILB
+D0B0;D0B0;110F 1175 11B3;D0B0;110F 1175 11B3; # (í‚°; í‚°; á„ᅵᆳ; í‚°; á„ᅵᆳ; ) HANGUL SYLLABLE KILS
+D0B1;D0B1;110F 1175 11B4;D0B1;110F 1175 11B4; # (킱; 킱; á„ᅵᆴ; 킱; á„ᅵᆴ; ) HANGUL SYLLABLE KILT
+D0B2;D0B2;110F 1175 11B5;D0B2;110F 1175 11B5; # (킲; 킲; á„ᅵᆵ; 킲; á„ᅵᆵ; ) HANGUL SYLLABLE KILP
+D0B3;D0B3;110F 1175 11B6;D0B3;110F 1175 11B6; # (킳; 킳; á„ᅵᆶ; 킳; á„ᅵᆶ; ) HANGUL SYLLABLE KILH
+D0B4;D0B4;110F 1175 11B7;D0B4;110F 1175 11B7; # (í‚´; í‚´; á„ᅵᆷ; í‚´; á„ᅵᆷ; ) HANGUL SYLLABLE KIM
+D0B5;D0B5;110F 1175 11B8;D0B5;110F 1175 11B8; # (킵; 킵; á„ᅵᆸ; 킵; á„ᅵᆸ; ) HANGUL SYLLABLE KIB
+D0B6;D0B6;110F 1175 11B9;D0B6;110F 1175 11B9; # (킶; 킶; á„ᅵᆹ; 킶; á„ᅵᆹ; ) HANGUL SYLLABLE KIBS
+D0B7;D0B7;110F 1175 11BA;D0B7;110F 1175 11BA; # (í‚·; í‚·; á„ᅵᆺ; í‚·; á„ᅵᆺ; ) HANGUL SYLLABLE KIS
+D0B8;D0B8;110F 1175 11BB;D0B8;110F 1175 11BB; # (킸; 킸; á„ᅵᆻ; 킸; á„ᅵᆻ; ) HANGUL SYLLABLE KISS
+D0B9;D0B9;110F 1175 11BC;D0B9;110F 1175 11BC; # (킹; 킹; á„ᅵᆼ; 킹; á„ᅵᆼ; ) HANGUL SYLLABLE KING
+D0BA;D0BA;110F 1175 11BD;D0BA;110F 1175 11BD; # (킺; 킺; á„ᅵᆽ; 킺; á„ᅵᆽ; ) HANGUL SYLLABLE KIJ
+D0BB;D0BB;110F 1175 11BE;D0BB;110F 1175 11BE; # (í‚»; í‚»; á„ᅵᆾ; í‚»; á„ᅵᆾ; ) HANGUL SYLLABLE KIC
+D0BC;D0BC;110F 1175 11BF;D0BC;110F 1175 11BF; # (킼; 킼; á„ᅵᆿ; 킼; á„ᅵᆿ; ) HANGUL SYLLABLE KIK
+D0BD;D0BD;110F 1175 11C0;D0BD;110F 1175 11C0; # (킽; 킽; á„ᅵᇀ; 킽; á„ᅵᇀ; ) HANGUL SYLLABLE KIT
+D0BE;D0BE;110F 1175 11C1;D0BE;110F 1175 11C1; # (킾; 킾; á„á…µá‡; 킾; á„á…µá‡; ) HANGUL SYLLABLE KIP
+D0BF;D0BF;110F 1175 11C2;D0BF;110F 1175 11C2; # (í‚¿; í‚¿; á„ᅵᇂ; í‚¿; á„ᅵᇂ; ) HANGUL SYLLABLE KIH
+D0C0;D0C0;1110 1161;D0C0;1110 1161; # (타; 타; á„á…¡; 타; á„á…¡; ) HANGUL SYLLABLE TA
+D0C1;D0C1;1110 1161 11A8;D0C1;1110 1161 11A8; # (íƒ; íƒ; á„ᅡᆨ; íƒ; á„ᅡᆨ; ) HANGUL SYLLABLE TAG
+D0C2;D0C2;1110 1161 11A9;D0C2;1110 1161 11A9; # (탂; 탂; á„ᅡᆩ; 탂; á„ᅡᆩ; ) HANGUL SYLLABLE TAGG
+D0C3;D0C3;1110 1161 11AA;D0C3;1110 1161 11AA; # (탃; 탃; á„ᅡᆪ; 탃; á„ᅡᆪ; ) HANGUL SYLLABLE TAGS
+D0C4;D0C4;1110 1161 11AB;D0C4;1110 1161 11AB; # (탄; 탄; á„ᅡᆫ; 탄; á„ᅡᆫ; ) HANGUL SYLLABLE TAN
+D0C5;D0C5;1110 1161 11AC;D0C5;1110 1161 11AC; # (탅; 탅; á„ᅡᆬ; 탅; á„ᅡᆬ; ) HANGUL SYLLABLE TANJ
+D0C6;D0C6;1110 1161 11AD;D0C6;1110 1161 11AD; # (탆; 탆; á„ᅡᆭ; 탆; á„ᅡᆭ; ) HANGUL SYLLABLE TANH
+D0C7;D0C7;1110 1161 11AE;D0C7;1110 1161 11AE; # (탇; 탇; á„ᅡᆮ; 탇; á„ᅡᆮ; ) HANGUL SYLLABLE TAD
+D0C8;D0C8;1110 1161 11AF;D0C8;1110 1161 11AF; # (탈; 탈; á„ᅡᆯ; 탈; á„ᅡᆯ; ) HANGUL SYLLABLE TAL
+D0C9;D0C9;1110 1161 11B0;D0C9;1110 1161 11B0; # (탉; 탉; á„ᅡᆰ; 탉; á„ᅡᆰ; ) HANGUL SYLLABLE TALG
+D0CA;D0CA;1110 1161 11B1;D0CA;1110 1161 11B1; # (탊; 탊; á„ᅡᆱ; 탊; á„ᅡᆱ; ) HANGUL SYLLABLE TALM
+D0CB;D0CB;1110 1161 11B2;D0CB;1110 1161 11B2; # (탋; 탋; á„ᅡᆲ; 탋; á„ᅡᆲ; ) HANGUL SYLLABLE TALB
+D0CC;D0CC;1110 1161 11B3;D0CC;1110 1161 11B3; # (탌; 탌; á„ᅡᆳ; 탌; á„ᅡᆳ; ) HANGUL SYLLABLE TALS
+D0CD;D0CD;1110 1161 11B4;D0CD;1110 1161 11B4; # (íƒ; íƒ; á„ᅡᆴ; íƒ; á„ᅡᆴ; ) HANGUL SYLLABLE TALT
+D0CE;D0CE;1110 1161 11B5;D0CE;1110 1161 11B5; # (탎; 탎; á„ᅡᆵ; 탎; á„ᅡᆵ; ) HANGUL SYLLABLE TALP
+D0CF;D0CF;1110 1161 11B6;D0CF;1110 1161 11B6; # (íƒ; íƒ; á„ᅡᆶ; íƒ; á„ᅡᆶ; ) HANGUL SYLLABLE TALH
+D0D0;D0D0;1110 1161 11B7;D0D0;1110 1161 11B7; # (íƒ; íƒ; á„ᅡᆷ; íƒ; á„ᅡᆷ; ) HANGUL SYLLABLE TAM
+D0D1;D0D1;1110 1161 11B8;D0D1;1110 1161 11B8; # (탑; 탑; á„ᅡᆸ; 탑; á„ᅡᆸ; ) HANGUL SYLLABLE TAB
+D0D2;D0D2;1110 1161 11B9;D0D2;1110 1161 11B9; # (탒; 탒; á„ᅡᆹ; 탒; á„ᅡᆹ; ) HANGUL SYLLABLE TABS
+D0D3;D0D3;1110 1161 11BA;D0D3;1110 1161 11BA; # (탓; 탓; á„ᅡᆺ; 탓; á„ᅡᆺ; ) HANGUL SYLLABLE TAS
+D0D4;D0D4;1110 1161 11BB;D0D4;1110 1161 11BB; # (탔; 탔; á„ᅡᆻ; 탔; á„ᅡᆻ; ) HANGUL SYLLABLE TASS
+D0D5;D0D5;1110 1161 11BC;D0D5;1110 1161 11BC; # (탕; 탕; á„ᅡᆼ; 탕; á„ᅡᆼ; ) HANGUL SYLLABLE TANG
+D0D6;D0D6;1110 1161 11BD;D0D6;1110 1161 11BD; # (탖; 탖; á„ᅡᆽ; 탖; á„ᅡᆽ; ) HANGUL SYLLABLE TAJ
+D0D7;D0D7;1110 1161 11BE;D0D7;1110 1161 11BE; # (탗; 탗; á„ᅡᆾ; 탗; á„ᅡᆾ; ) HANGUL SYLLABLE TAC
+D0D8;D0D8;1110 1161 11BF;D0D8;1110 1161 11BF; # (탘; 탘; á„ᅡᆿ; 탘; á„ᅡᆿ; ) HANGUL SYLLABLE TAK
+D0D9;D0D9;1110 1161 11C0;D0D9;1110 1161 11C0; # (탙; 탙; á„ᅡᇀ; 탙; á„ᅡᇀ; ) HANGUL SYLLABLE TAT
+D0DA;D0DA;1110 1161 11C1;D0DA;1110 1161 11C1; # (탚; 탚; á„á…¡á‡; 탚; á„á…¡á‡; ) HANGUL SYLLABLE TAP
+D0DB;D0DB;1110 1161 11C2;D0DB;1110 1161 11C2; # (탛; 탛; á„ᅡᇂ; 탛; á„ᅡᇂ; ) HANGUL SYLLABLE TAH
+D0DC;D0DC;1110 1162;D0DC;1110 1162; # (태; 태; á„á…¢; 태; á„á…¢; ) HANGUL SYLLABLE TAE
+D0DD;D0DD;1110 1162 11A8;D0DD;1110 1162 11A8; # (íƒ; íƒ; á„ᅢᆨ; íƒ; á„ᅢᆨ; ) HANGUL SYLLABLE TAEG
+D0DE;D0DE;1110 1162 11A9;D0DE;1110 1162 11A9; # (탞; 탞; á„ᅢᆩ; 탞; á„ᅢᆩ; ) HANGUL SYLLABLE TAEGG
+D0DF;D0DF;1110 1162 11AA;D0DF;1110 1162 11AA; # (탟; 탟; á„ᅢᆪ; 탟; á„ᅢᆪ; ) HANGUL SYLLABLE TAEGS
+D0E0;D0E0;1110 1162 11AB;D0E0;1110 1162 11AB; # (탠; 탠; á„ᅢᆫ; 탠; á„ᅢᆫ; ) HANGUL SYLLABLE TAEN
+D0E1;D0E1;1110 1162 11AC;D0E1;1110 1162 11AC; # (탡; 탡; á„ᅢᆬ; 탡; á„ᅢᆬ; ) HANGUL SYLLABLE TAENJ
+D0E2;D0E2;1110 1162 11AD;D0E2;1110 1162 11AD; # (탢; 탢; á„ᅢᆭ; 탢; á„ᅢᆭ; ) HANGUL SYLLABLE TAENH
+D0E3;D0E3;1110 1162 11AE;D0E3;1110 1162 11AE; # (탣; 탣; á„ᅢᆮ; 탣; á„ᅢᆮ; ) HANGUL SYLLABLE TAED
+D0E4;D0E4;1110 1162 11AF;D0E4;1110 1162 11AF; # (탤; 탤; á„ᅢᆯ; 탤; á„ᅢᆯ; ) HANGUL SYLLABLE TAEL
+D0E5;D0E5;1110 1162 11B0;D0E5;1110 1162 11B0; # (탥; 탥; á„ᅢᆰ; 탥; á„ᅢᆰ; ) HANGUL SYLLABLE TAELG
+D0E6;D0E6;1110 1162 11B1;D0E6;1110 1162 11B1; # (탦; 탦; á„ᅢᆱ; 탦; á„ᅢᆱ; ) HANGUL SYLLABLE TAELM
+D0E7;D0E7;1110 1162 11B2;D0E7;1110 1162 11B2; # (탧; 탧; á„ᅢᆲ; 탧; á„ᅢᆲ; ) HANGUL SYLLABLE TAELB
+D0E8;D0E8;1110 1162 11B3;D0E8;1110 1162 11B3; # (탨; 탨; á„ᅢᆳ; 탨; á„ᅢᆳ; ) HANGUL SYLLABLE TAELS
+D0E9;D0E9;1110 1162 11B4;D0E9;1110 1162 11B4; # (탩; 탩; á„ᅢᆴ; 탩; á„ᅢᆴ; ) HANGUL SYLLABLE TAELT
+D0EA;D0EA;1110 1162 11B5;D0EA;1110 1162 11B5; # (탪; 탪; á„ᅢᆵ; 탪; á„ᅢᆵ; ) HANGUL SYLLABLE TAELP
+D0EB;D0EB;1110 1162 11B6;D0EB;1110 1162 11B6; # (탫; 탫; á„ᅢᆶ; 탫; á„ᅢᆶ; ) HANGUL SYLLABLE TAELH
+D0EC;D0EC;1110 1162 11B7;D0EC;1110 1162 11B7; # (탬; 탬; á„ᅢᆷ; 탬; á„ᅢᆷ; ) HANGUL SYLLABLE TAEM
+D0ED;D0ED;1110 1162 11B8;D0ED;1110 1162 11B8; # (탭; 탭; á„ᅢᆸ; 탭; á„ᅢᆸ; ) HANGUL SYLLABLE TAEB
+D0EE;D0EE;1110 1162 11B9;D0EE;1110 1162 11B9; # (탮; 탮; á„ᅢᆹ; 탮; á„ᅢᆹ; ) HANGUL SYLLABLE TAEBS
+D0EF;D0EF;1110 1162 11BA;D0EF;1110 1162 11BA; # (탯; 탯; á„ᅢᆺ; 탯; á„ᅢᆺ; ) HANGUL SYLLABLE TAES
+D0F0;D0F0;1110 1162 11BB;D0F0;1110 1162 11BB; # (탰; 탰; á„ᅢᆻ; 탰; á„ᅢᆻ; ) HANGUL SYLLABLE TAESS
+D0F1;D0F1;1110 1162 11BC;D0F1;1110 1162 11BC; # (탱; 탱; á„ᅢᆼ; 탱; á„ᅢᆼ; ) HANGUL SYLLABLE TAENG
+D0F2;D0F2;1110 1162 11BD;D0F2;1110 1162 11BD; # (탲; 탲; á„ᅢᆽ; 탲; á„ᅢᆽ; ) HANGUL SYLLABLE TAEJ
+D0F3;D0F3;1110 1162 11BE;D0F3;1110 1162 11BE; # (탳; 탳; á„ᅢᆾ; 탳; á„ᅢᆾ; ) HANGUL SYLLABLE TAEC
+D0F4;D0F4;1110 1162 11BF;D0F4;1110 1162 11BF; # (탴; 탴; á„ᅢᆿ; 탴; á„ᅢᆿ; ) HANGUL SYLLABLE TAEK
+D0F5;D0F5;1110 1162 11C0;D0F5;1110 1162 11C0; # (탵; 탵; á„ᅢᇀ; 탵; á„ᅢᇀ; ) HANGUL SYLLABLE TAET
+D0F6;D0F6;1110 1162 11C1;D0F6;1110 1162 11C1; # (탶; 탶; á„á…¢á‡; 탶; á„á…¢á‡; ) HANGUL SYLLABLE TAEP
+D0F7;D0F7;1110 1162 11C2;D0F7;1110 1162 11C2; # (탷; 탷; á„ᅢᇂ; 탷; á„ᅢᇂ; ) HANGUL SYLLABLE TAEH
+D0F8;D0F8;1110 1163;D0F8;1110 1163; # (탸; 탸; á„á…£; 탸; á„á…£; ) HANGUL SYLLABLE TYA
+D0F9;D0F9;1110 1163 11A8;D0F9;1110 1163 11A8; # (탹; 탹; á„ᅣᆨ; 탹; á„ᅣᆨ; ) HANGUL SYLLABLE TYAG
+D0FA;D0FA;1110 1163 11A9;D0FA;1110 1163 11A9; # (탺; 탺; á„ᅣᆩ; 탺; á„ᅣᆩ; ) HANGUL SYLLABLE TYAGG
+D0FB;D0FB;1110 1163 11AA;D0FB;1110 1163 11AA; # (탻; 탻; á„ᅣᆪ; 탻; á„ᅣᆪ; ) HANGUL SYLLABLE TYAGS
+D0FC;D0FC;1110 1163 11AB;D0FC;1110 1163 11AB; # (탼; 탼; á„ᅣᆫ; 탼; á„ᅣᆫ; ) HANGUL SYLLABLE TYAN
+D0FD;D0FD;1110 1163 11AC;D0FD;1110 1163 11AC; # (탽; 탽; á„ᅣᆬ; 탽; á„ᅣᆬ; ) HANGUL SYLLABLE TYANJ
+D0FE;D0FE;1110 1163 11AD;D0FE;1110 1163 11AD; # (탾; 탾; á„ᅣᆭ; 탾; á„ᅣᆭ; ) HANGUL SYLLABLE TYANH
+D0FF;D0FF;1110 1163 11AE;D0FF;1110 1163 11AE; # (탿; 탿; á„ᅣᆮ; 탿; á„ᅣᆮ; ) HANGUL SYLLABLE TYAD
+D100;D100;1110 1163 11AF;D100;1110 1163 11AF; # (í„€; í„€; á„ᅣᆯ; í„€; á„ᅣᆯ; ) HANGUL SYLLABLE TYAL
+D101;D101;1110 1163 11B0;D101;1110 1163 11B0; # (í„; í„; á„ᅣᆰ; í„; á„ᅣᆰ; ) HANGUL SYLLABLE TYALG
+D102;D102;1110 1163 11B1;D102;1110 1163 11B1; # (í„‚; í„‚; á„ᅣᆱ; í„‚; á„ᅣᆱ; ) HANGUL SYLLABLE TYALM
+D103;D103;1110 1163 11B2;D103;1110 1163 11B2; # (턃; 턃; á„ᅣᆲ; 턃; á„ᅣᆲ; ) HANGUL SYLLABLE TYALB
+D104;D104;1110 1163 11B3;D104;1110 1163 11B3; # (í„„; í„„; á„ᅣᆳ; í„„; á„ᅣᆳ; ) HANGUL SYLLABLE TYALS
+D105;D105;1110 1163 11B4;D105;1110 1163 11B4; # (í„…; í„…; á„ᅣᆴ; í„…; á„ᅣᆴ; ) HANGUL SYLLABLE TYALT
+D106;D106;1110 1163 11B5;D106;1110 1163 11B5; # (턆; 턆; á„ᅣᆵ; 턆; á„ᅣᆵ; ) HANGUL SYLLABLE TYALP
+D107;D107;1110 1163 11B6;D107;1110 1163 11B6; # (턇; 턇; á„ᅣᆶ; 턇; á„ᅣᆶ; ) HANGUL SYLLABLE TYALH
+D108;D108;1110 1163 11B7;D108;1110 1163 11B7; # (턈; 턈; á„ᅣᆷ; 턈; á„ᅣᆷ; ) HANGUL SYLLABLE TYAM
+D109;D109;1110 1163 11B8;D109;1110 1163 11B8; # (턉; 턉; á„ᅣᆸ; 턉; á„ᅣᆸ; ) HANGUL SYLLABLE TYAB
+D10A;D10A;1110 1163 11B9;D10A;1110 1163 11B9; # (í„Š; í„Š; á„ᅣᆹ; í„Š; á„ᅣᆹ; ) HANGUL SYLLABLE TYABS
+D10B;D10B;1110 1163 11BA;D10B;1110 1163 11BA; # (í„‹; í„‹; á„ᅣᆺ; í„‹; á„ᅣᆺ; ) HANGUL SYLLABLE TYAS
+D10C;D10C;1110 1163 11BB;D10C;1110 1163 11BB; # (í„Œ; í„Œ; á„ᅣᆻ; í„Œ; á„ᅣᆻ; ) HANGUL SYLLABLE TYASS
+D10D;D10D;1110 1163 11BC;D10D;1110 1163 11BC; # (í„; í„; á„ᅣᆼ; í„; á„ᅣᆼ; ) HANGUL SYLLABLE TYANG
+D10E;D10E;1110 1163 11BD;D10E;1110 1163 11BD; # (í„Ž; í„Ž; á„ᅣᆽ; í„Ž; á„ᅣᆽ; ) HANGUL SYLLABLE TYAJ
+D10F;D10F;1110 1163 11BE;D10F;1110 1163 11BE; # (í„; í„; á„ᅣᆾ; í„; á„ᅣᆾ; ) HANGUL SYLLABLE TYAC
+D110;D110;1110 1163 11BF;D110;1110 1163 11BF; # (í„; í„; á„ᅣᆿ; í„; á„ᅣᆿ; ) HANGUL SYLLABLE TYAK
+D111;D111;1110 1163 11C0;D111;1110 1163 11C0; # (í„‘; í„‘; á„ᅣᇀ; í„‘; á„ᅣᇀ; ) HANGUL SYLLABLE TYAT
+D112;D112;1110 1163 11C1;D112;1110 1163 11C1; # (í„’; í„’; á„á…£á‡; í„’; á„á…£á‡; ) HANGUL SYLLABLE TYAP
+D113;D113;1110 1163 11C2;D113;1110 1163 11C2; # (í„“; í„“; á„ᅣᇂ; í„“; á„ᅣᇂ; ) HANGUL SYLLABLE TYAH
+D114;D114;1110 1164;D114;1110 1164; # (í„”; í„”; á„á…¤; í„”; á„á…¤; ) HANGUL SYLLABLE TYAE
+D115;D115;1110 1164 11A8;D115;1110 1164 11A8; # (í„•; í„•; á„ᅤᆨ; í„•; á„ᅤᆨ; ) HANGUL SYLLABLE TYAEG
+D116;D116;1110 1164 11A9;D116;1110 1164 11A9; # (í„–; í„–; á„ᅤᆩ; í„–; á„ᅤᆩ; ) HANGUL SYLLABLE TYAEGG
+D117;D117;1110 1164 11AA;D117;1110 1164 11AA; # (í„—; í„—; á„ᅤᆪ; í„—; á„ᅤᆪ; ) HANGUL SYLLABLE TYAEGS
+D118;D118;1110 1164 11AB;D118;1110 1164 11AB; # (턘; 턘; á„ᅤᆫ; 턘; á„ᅤᆫ; ) HANGUL SYLLABLE TYAEN
+D119;D119;1110 1164 11AC;D119;1110 1164 11AC; # (í„™; í„™; á„ᅤᆬ; í„™; á„ᅤᆬ; ) HANGUL SYLLABLE TYAENJ
+D11A;D11A;1110 1164 11AD;D11A;1110 1164 11AD; # (í„š; í„š; á„ᅤᆭ; í„š; á„ᅤᆭ; ) HANGUL SYLLABLE TYAENH
+D11B;D11B;1110 1164 11AE;D11B;1110 1164 11AE; # (í„›; í„›; á„ᅤᆮ; í„›; á„ᅤᆮ; ) HANGUL SYLLABLE TYAED
+D11C;D11C;1110 1164 11AF;D11C;1110 1164 11AF; # (í„œ; í„œ; á„ᅤᆯ; í„œ; á„ᅤᆯ; ) HANGUL SYLLABLE TYAEL
+D11D;D11D;1110 1164 11B0;D11D;1110 1164 11B0; # (í„; í„; á„ᅤᆰ; í„; á„ᅤᆰ; ) HANGUL SYLLABLE TYAELG
+D11E;D11E;1110 1164 11B1;D11E;1110 1164 11B1; # (í„ž; í„ž; á„ᅤᆱ; í„ž; á„ᅤᆱ; ) HANGUL SYLLABLE TYAELM
+D11F;D11F;1110 1164 11B2;D11F;1110 1164 11B2; # (í„Ÿ; í„Ÿ; á„ᅤᆲ; í„Ÿ; á„ᅤᆲ; ) HANGUL SYLLABLE TYAELB
+D120;D120;1110 1164 11B3;D120;1110 1164 11B3; # (í„ ; í„ ; á„ᅤᆳ; í„ ; á„ᅤᆳ; ) HANGUL SYLLABLE TYAELS
+D121;D121;1110 1164 11B4;D121;1110 1164 11B4; # (í„¡; í„¡; á„ᅤᆴ; í„¡; á„ᅤᆴ; ) HANGUL SYLLABLE TYAELT
+D122;D122;1110 1164 11B5;D122;1110 1164 11B5; # (í„¢; í„¢; á„ᅤᆵ; í„¢; á„ᅤᆵ; ) HANGUL SYLLABLE TYAELP
+D123;D123;1110 1164 11B6;D123;1110 1164 11B6; # (í„£; í„£; á„ᅤᆶ; í„£; á„ᅤᆶ; ) HANGUL SYLLABLE TYAELH
+D124;D124;1110 1164 11B7;D124;1110 1164 11B7; # (턤; 턤; á„ᅤᆷ; 턤; á„ᅤᆷ; ) HANGUL SYLLABLE TYAEM
+D125;D125;1110 1164 11B8;D125;1110 1164 11B8; # (í„¥; í„¥; á„ᅤᆸ; í„¥; á„ᅤᆸ; ) HANGUL SYLLABLE TYAEB
+D126;D126;1110 1164 11B9;D126;1110 1164 11B9; # (턦; 턦; á„ᅤᆹ; 턦; á„ᅤᆹ; ) HANGUL SYLLABLE TYAEBS
+D127;D127;1110 1164 11BA;D127;1110 1164 11BA; # (턧; 턧; á„ᅤᆺ; 턧; á„ᅤᆺ; ) HANGUL SYLLABLE TYAES
+D128;D128;1110 1164 11BB;D128;1110 1164 11BB; # (턨; 턨; á„ᅤᆻ; 턨; á„ᅤᆻ; ) HANGUL SYLLABLE TYAESS
+D129;D129;1110 1164 11BC;D129;1110 1164 11BC; # (í„©; í„©; á„ᅤᆼ; í„©; á„ᅤᆼ; ) HANGUL SYLLABLE TYAENG
+D12A;D12A;1110 1164 11BD;D12A;1110 1164 11BD; # (턪; 턪; á„ᅤᆽ; 턪; á„ᅤᆽ; ) HANGUL SYLLABLE TYAEJ
+D12B;D12B;1110 1164 11BE;D12B;1110 1164 11BE; # (í„«; í„«; á„ᅤᆾ; í„«; á„ᅤᆾ; ) HANGUL SYLLABLE TYAEC
+D12C;D12C;1110 1164 11BF;D12C;1110 1164 11BF; # (턬; 턬; á„ᅤᆿ; 턬; á„ᅤᆿ; ) HANGUL SYLLABLE TYAEK
+D12D;D12D;1110 1164 11C0;D12D;1110 1164 11C0; # (í„­; í„­; á„ᅤᇀ; í„­; á„ᅤᇀ; ) HANGUL SYLLABLE TYAET
+D12E;D12E;1110 1164 11C1;D12E;1110 1164 11C1; # (í„®; í„®; á„á…¤á‡; í„®; á„á…¤á‡; ) HANGUL SYLLABLE TYAEP
+D12F;D12F;1110 1164 11C2;D12F;1110 1164 11C2; # (턯; 턯; á„ᅤᇂ; 턯; á„ᅤᇂ; ) HANGUL SYLLABLE TYAEH
+D130;D130;1110 1165;D130;1110 1165; # (í„°; í„°; á„á…¥; í„°; á„á…¥; ) HANGUL SYLLABLE TEO
+D131;D131;1110 1165 11A8;D131;1110 1165 11A8; # (턱; 턱; á„ᅥᆨ; 턱; á„ᅥᆨ; ) HANGUL SYLLABLE TEOG
+D132;D132;1110 1165 11A9;D132;1110 1165 11A9; # (턲; 턲; á„ᅥᆩ; 턲; á„ᅥᆩ; ) HANGUL SYLLABLE TEOGG
+D133;D133;1110 1165 11AA;D133;1110 1165 11AA; # (턳; 턳; á„ᅥᆪ; 턳; á„ᅥᆪ; ) HANGUL SYLLABLE TEOGS
+D134;D134;1110 1165 11AB;D134;1110 1165 11AB; # (í„´; í„´; á„ᅥᆫ; í„´; á„ᅥᆫ; ) HANGUL SYLLABLE TEON
+D135;D135;1110 1165 11AC;D135;1110 1165 11AC; # (턵; 턵; á„ᅥᆬ; 턵; á„ᅥᆬ; ) HANGUL SYLLABLE TEONJ
+D136;D136;1110 1165 11AD;D136;1110 1165 11AD; # (턶; 턶; á„ᅥᆭ; 턶; á„ᅥᆭ; ) HANGUL SYLLABLE TEONH
+D137;D137;1110 1165 11AE;D137;1110 1165 11AE; # (í„·; í„·; á„ᅥᆮ; í„·; á„ᅥᆮ; ) HANGUL SYLLABLE TEOD
+D138;D138;1110 1165 11AF;D138;1110 1165 11AF; # (털; 털; á„ᅥᆯ; 털; á„ᅥᆯ; ) HANGUL SYLLABLE TEOL
+D139;D139;1110 1165 11B0;D139;1110 1165 11B0; # (턹; 턹; á„ᅥᆰ; 턹; á„ᅥᆰ; ) HANGUL SYLLABLE TEOLG
+D13A;D13A;1110 1165 11B1;D13A;1110 1165 11B1; # (턺; 턺; á„ᅥᆱ; 턺; á„ᅥᆱ; ) HANGUL SYLLABLE TEOLM
+D13B;D13B;1110 1165 11B2;D13B;1110 1165 11B2; # (í„»; í„»; á„ᅥᆲ; í„»; á„ᅥᆲ; ) HANGUL SYLLABLE TEOLB
+D13C;D13C;1110 1165 11B3;D13C;1110 1165 11B3; # (턼; 턼; á„ᅥᆳ; 턼; á„ᅥᆳ; ) HANGUL SYLLABLE TEOLS
+D13D;D13D;1110 1165 11B4;D13D;1110 1165 11B4; # (턽; 턽; á„ᅥᆴ; 턽; á„ᅥᆴ; ) HANGUL SYLLABLE TEOLT
+D13E;D13E;1110 1165 11B5;D13E;1110 1165 11B5; # (턾; 턾; á„ᅥᆵ; 턾; á„ᅥᆵ; ) HANGUL SYLLABLE TEOLP
+D13F;D13F;1110 1165 11B6;D13F;1110 1165 11B6; # (í„¿; í„¿; á„ᅥᆶ; í„¿; á„ᅥᆶ; ) HANGUL SYLLABLE TEOLH
+D140;D140;1110 1165 11B7;D140;1110 1165 11B7; # (í…€; í…€; á„ᅥᆷ; í…€; á„ᅥᆷ; ) HANGUL SYLLABLE TEOM
+D141;D141;1110 1165 11B8;D141;1110 1165 11B8; # (í…; í…; á„ᅥᆸ; í…; á„ᅥᆸ; ) HANGUL SYLLABLE TEOB
+D142;D142;1110 1165 11B9;D142;1110 1165 11B9; # (í…‚; í…‚; á„ᅥᆹ; í…‚; á„ᅥᆹ; ) HANGUL SYLLABLE TEOBS
+D143;D143;1110 1165 11BA;D143;1110 1165 11BA; # (í…ƒ; í…ƒ; á„ᅥᆺ; í…ƒ; á„ᅥᆺ; ) HANGUL SYLLABLE TEOS
+D144;D144;1110 1165 11BB;D144;1110 1165 11BB; # (í…„; í…„; á„ᅥᆻ; í…„; á„ᅥᆻ; ) HANGUL SYLLABLE TEOSS
+D145;D145;1110 1165 11BC;D145;1110 1165 11BC; # (í……; í……; á„ᅥᆼ; í……; á„ᅥᆼ; ) HANGUL SYLLABLE TEONG
+D146;D146;1110 1165 11BD;D146;1110 1165 11BD; # (í…†; í…†; á„ᅥᆽ; í…†; á„ᅥᆽ; ) HANGUL SYLLABLE TEOJ
+D147;D147;1110 1165 11BE;D147;1110 1165 11BE; # (í…‡; í…‡; á„ᅥᆾ; í…‡; á„ᅥᆾ; ) HANGUL SYLLABLE TEOC
+D148;D148;1110 1165 11BF;D148;1110 1165 11BF; # (í…ˆ; í…ˆ; á„ᅥᆿ; í…ˆ; á„ᅥᆿ; ) HANGUL SYLLABLE TEOK
+D149;D149;1110 1165 11C0;D149;1110 1165 11C0; # (í…‰; í…‰; á„ᅥᇀ; í…‰; á„ᅥᇀ; ) HANGUL SYLLABLE TEOT
+D14A;D14A;1110 1165 11C1;D14A;1110 1165 11C1; # (í…Š; í…Š; á„á…¥á‡; í…Š; á„á…¥á‡; ) HANGUL SYLLABLE TEOP
+D14B;D14B;1110 1165 11C2;D14B;1110 1165 11C2; # (í…‹; í…‹; á„ᅥᇂ; í…‹; á„ᅥᇂ; ) HANGUL SYLLABLE TEOH
+D14C;D14C;1110 1166;D14C;1110 1166; # (í…Œ; í…Œ; á„á…¦; í…Œ; á„á…¦; ) HANGUL SYLLABLE TE
+D14D;D14D;1110 1166 11A8;D14D;1110 1166 11A8; # (í…; í…; á„ᅦᆨ; í…; á„ᅦᆨ; ) HANGUL SYLLABLE TEG
+D14E;D14E;1110 1166 11A9;D14E;1110 1166 11A9; # (í…Ž; í…Ž; á„ᅦᆩ; í…Ž; á„ᅦᆩ; ) HANGUL SYLLABLE TEGG
+D14F;D14F;1110 1166 11AA;D14F;1110 1166 11AA; # (í…; í…; á„ᅦᆪ; í…; á„ᅦᆪ; ) HANGUL SYLLABLE TEGS
+D150;D150;1110 1166 11AB;D150;1110 1166 11AB; # (í…; í…; á„ᅦᆫ; í…; á„ᅦᆫ; ) HANGUL SYLLABLE TEN
+D151;D151;1110 1166 11AC;D151;1110 1166 11AC; # (í…‘; í…‘; á„ᅦᆬ; í…‘; á„ᅦᆬ; ) HANGUL SYLLABLE TENJ
+D152;D152;1110 1166 11AD;D152;1110 1166 11AD; # (í…’; í…’; á„ᅦᆭ; í…’; á„ᅦᆭ; ) HANGUL SYLLABLE TENH
+D153;D153;1110 1166 11AE;D153;1110 1166 11AE; # (í…“; í…“; á„ᅦᆮ; í…“; á„ᅦᆮ; ) HANGUL SYLLABLE TED
+D154;D154;1110 1166 11AF;D154;1110 1166 11AF; # (í…”; í…”; á„ᅦᆯ; í…”; á„ᅦᆯ; ) HANGUL SYLLABLE TEL
+D155;D155;1110 1166 11B0;D155;1110 1166 11B0; # (í…•; í…•; á„ᅦᆰ; í…•; á„ᅦᆰ; ) HANGUL SYLLABLE TELG
+D156;D156;1110 1166 11B1;D156;1110 1166 11B1; # (í…–; í…–; á„ᅦᆱ; í…–; á„ᅦᆱ; ) HANGUL SYLLABLE TELM
+D157;D157;1110 1166 11B2;D157;1110 1166 11B2; # (í…—; í…—; á„ᅦᆲ; í…—; á„ᅦᆲ; ) HANGUL SYLLABLE TELB
+D158;D158;1110 1166 11B3;D158;1110 1166 11B3; # (í…˜; í…˜; á„ᅦᆳ; í…˜; á„ᅦᆳ; ) HANGUL SYLLABLE TELS
+D159;D159;1110 1166 11B4;D159;1110 1166 11B4; # (í…™; í…™; á„ᅦᆴ; í…™; á„ᅦᆴ; ) HANGUL SYLLABLE TELT
+D15A;D15A;1110 1166 11B5;D15A;1110 1166 11B5; # (í…š; í…š; á„ᅦᆵ; í…š; á„ᅦᆵ; ) HANGUL SYLLABLE TELP
+D15B;D15B;1110 1166 11B6;D15B;1110 1166 11B6; # (í…›; í…›; á„ᅦᆶ; í…›; á„ᅦᆶ; ) HANGUL SYLLABLE TELH
+D15C;D15C;1110 1166 11B7;D15C;1110 1166 11B7; # (í…œ; í…œ; á„ᅦᆷ; í…œ; á„ᅦᆷ; ) HANGUL SYLLABLE TEM
+D15D;D15D;1110 1166 11B8;D15D;1110 1166 11B8; # (í…; í…; á„ᅦᆸ; í…; á„ᅦᆸ; ) HANGUL SYLLABLE TEB
+D15E;D15E;1110 1166 11B9;D15E;1110 1166 11B9; # (í…ž; í…ž; á„ᅦᆹ; í…ž; á„ᅦᆹ; ) HANGUL SYLLABLE TEBS
+D15F;D15F;1110 1166 11BA;D15F;1110 1166 11BA; # (í…Ÿ; í…Ÿ; á„ᅦᆺ; í…Ÿ; á„ᅦᆺ; ) HANGUL SYLLABLE TES
+D160;D160;1110 1166 11BB;D160;1110 1166 11BB; # (í… ; í… ; á„ᅦᆻ; í… ; á„ᅦᆻ; ) HANGUL SYLLABLE TESS
+D161;D161;1110 1166 11BC;D161;1110 1166 11BC; # (í…¡; í…¡; á„ᅦᆼ; í…¡; á„ᅦᆼ; ) HANGUL SYLLABLE TENG
+D162;D162;1110 1166 11BD;D162;1110 1166 11BD; # (í…¢; í…¢; á„ᅦᆽ; í…¢; á„ᅦᆽ; ) HANGUL SYLLABLE TEJ
+D163;D163;1110 1166 11BE;D163;1110 1166 11BE; # (í…£; í…£; á„ᅦᆾ; í…£; á„ᅦᆾ; ) HANGUL SYLLABLE TEC
+D164;D164;1110 1166 11BF;D164;1110 1166 11BF; # (í…¤; í…¤; á„ᅦᆿ; í…¤; á„ᅦᆿ; ) HANGUL SYLLABLE TEK
+D165;D165;1110 1166 11C0;D165;1110 1166 11C0; # (í…¥; í…¥; á„ᅦᇀ; í…¥; á„ᅦᇀ; ) HANGUL SYLLABLE TET
+D166;D166;1110 1166 11C1;D166;1110 1166 11C1; # (í…¦; í…¦; á„á…¦á‡; í…¦; á„á…¦á‡; ) HANGUL SYLLABLE TEP
+D167;D167;1110 1166 11C2;D167;1110 1166 11C2; # (í…§; í…§; á„ᅦᇂ; í…§; á„ᅦᇂ; ) HANGUL SYLLABLE TEH
+D168;D168;1110 1167;D168;1110 1167; # (í…¨; í…¨; á„á…§; í…¨; á„á…§; ) HANGUL SYLLABLE TYEO
+D169;D169;1110 1167 11A8;D169;1110 1167 11A8; # (í…©; í…©; á„ᅧᆨ; í…©; á„ᅧᆨ; ) HANGUL SYLLABLE TYEOG
+D16A;D16A;1110 1167 11A9;D16A;1110 1167 11A9; # (í…ª; í…ª; á„ᅧᆩ; í…ª; á„ᅧᆩ; ) HANGUL SYLLABLE TYEOGG
+D16B;D16B;1110 1167 11AA;D16B;1110 1167 11AA; # (í…«; í…«; á„ᅧᆪ; í…«; á„ᅧᆪ; ) HANGUL SYLLABLE TYEOGS
+D16C;D16C;1110 1167 11AB;D16C;1110 1167 11AB; # (í…¬; í…¬; á„ᅧᆫ; í…¬; á„ᅧᆫ; ) HANGUL SYLLABLE TYEON
+D16D;D16D;1110 1167 11AC;D16D;1110 1167 11AC; # (í…­; í…­; á„ᅧᆬ; í…­; á„ᅧᆬ; ) HANGUL SYLLABLE TYEONJ
+D16E;D16E;1110 1167 11AD;D16E;1110 1167 11AD; # (í…®; í…®; á„ᅧᆭ; í…®; á„ᅧᆭ; ) HANGUL SYLLABLE TYEONH
+D16F;D16F;1110 1167 11AE;D16F;1110 1167 11AE; # (í…¯; í…¯; á„ᅧᆮ; í…¯; á„ᅧᆮ; ) HANGUL SYLLABLE TYEOD
+D170;D170;1110 1167 11AF;D170;1110 1167 11AF; # (í…°; í…°; á„ᅧᆯ; í…°; á„ᅧᆯ; ) HANGUL SYLLABLE TYEOL
+D171;D171;1110 1167 11B0;D171;1110 1167 11B0; # (í…±; í…±; á„ᅧᆰ; í…±; á„ᅧᆰ; ) HANGUL SYLLABLE TYEOLG
+D172;D172;1110 1167 11B1;D172;1110 1167 11B1; # (í…²; í…²; á„ᅧᆱ; í…²; á„ᅧᆱ; ) HANGUL SYLLABLE TYEOLM
+D173;D173;1110 1167 11B2;D173;1110 1167 11B2; # (í…³; í…³; á„ᅧᆲ; í…³; á„ᅧᆲ; ) HANGUL SYLLABLE TYEOLB
+D174;D174;1110 1167 11B3;D174;1110 1167 11B3; # (í…´; í…´; á„ᅧᆳ; í…´; á„ᅧᆳ; ) HANGUL SYLLABLE TYEOLS
+D175;D175;1110 1167 11B4;D175;1110 1167 11B4; # (í…µ; í…µ; á„ᅧᆴ; í…µ; á„ᅧᆴ; ) HANGUL SYLLABLE TYEOLT
+D176;D176;1110 1167 11B5;D176;1110 1167 11B5; # (í…¶; í…¶; á„ᅧᆵ; í…¶; á„ᅧᆵ; ) HANGUL SYLLABLE TYEOLP
+D177;D177;1110 1167 11B6;D177;1110 1167 11B6; # (í…·; í…·; á„ᅧᆶ; í…·; á„ᅧᆶ; ) HANGUL SYLLABLE TYEOLH
+D178;D178;1110 1167 11B7;D178;1110 1167 11B7; # (í…¸; í…¸; á„ᅧᆷ; í…¸; á„ᅧᆷ; ) HANGUL SYLLABLE TYEOM
+D179;D179;1110 1167 11B8;D179;1110 1167 11B8; # (í…¹; í…¹; á„ᅧᆸ; í…¹; á„ᅧᆸ; ) HANGUL SYLLABLE TYEOB
+D17A;D17A;1110 1167 11B9;D17A;1110 1167 11B9; # (í…º; í…º; á„ᅧᆹ; í…º; á„ᅧᆹ; ) HANGUL SYLLABLE TYEOBS
+D17B;D17B;1110 1167 11BA;D17B;1110 1167 11BA; # (í…»; í…»; á„ᅧᆺ; í…»; á„ᅧᆺ; ) HANGUL SYLLABLE TYEOS
+D17C;D17C;1110 1167 11BB;D17C;1110 1167 11BB; # (í…¼; í…¼; á„ᅧᆻ; í…¼; á„ᅧᆻ; ) HANGUL SYLLABLE TYEOSS
+D17D;D17D;1110 1167 11BC;D17D;1110 1167 11BC; # (í…½; í…½; á„ᅧᆼ; í…½; á„ᅧᆼ; ) HANGUL SYLLABLE TYEONG
+D17E;D17E;1110 1167 11BD;D17E;1110 1167 11BD; # (í…¾; í…¾; á„ᅧᆽ; í…¾; á„ᅧᆽ; ) HANGUL SYLLABLE TYEOJ
+D17F;D17F;1110 1167 11BE;D17F;1110 1167 11BE; # (í…¿; í…¿; á„ᅧᆾ; í…¿; á„ᅧᆾ; ) HANGUL SYLLABLE TYEOC
+D180;D180;1110 1167 11BF;D180;1110 1167 11BF; # (톀; 톀; á„ᅧᆿ; 톀; á„ᅧᆿ; ) HANGUL SYLLABLE TYEOK
+D181;D181;1110 1167 11C0;D181;1110 1167 11C0; # (í†; í†; á„ᅧᇀ; í†; á„ᅧᇀ; ) HANGUL SYLLABLE TYEOT
+D182;D182;1110 1167 11C1;D182;1110 1167 11C1; # (톂; 톂; á„á…§á‡; 톂; á„á…§á‡; ) HANGUL SYLLABLE TYEOP
+D183;D183;1110 1167 11C2;D183;1110 1167 11C2; # (톃; 톃; á„ᅧᇂ; 톃; á„ᅧᇂ; ) HANGUL SYLLABLE TYEOH
+D184;D184;1110 1168;D184;1110 1168; # (톄; 톄; á„á…¨; 톄; á„á…¨; ) HANGUL SYLLABLE TYE
+D185;D185;1110 1168 11A8;D185;1110 1168 11A8; # (톅; 톅; á„ᅨᆨ; 톅; á„ᅨᆨ; ) HANGUL SYLLABLE TYEG
+D186;D186;1110 1168 11A9;D186;1110 1168 11A9; # (톆; 톆; á„ᅨᆩ; 톆; á„ᅨᆩ; ) HANGUL SYLLABLE TYEGG
+D187;D187;1110 1168 11AA;D187;1110 1168 11AA; # (톇; 톇; á„ᅨᆪ; 톇; á„ᅨᆪ; ) HANGUL SYLLABLE TYEGS
+D188;D188;1110 1168 11AB;D188;1110 1168 11AB; # (톈; 톈; á„ᅨᆫ; 톈; á„ᅨᆫ; ) HANGUL SYLLABLE TYEN
+D189;D189;1110 1168 11AC;D189;1110 1168 11AC; # (톉; 톉; á„ᅨᆬ; 톉; á„ᅨᆬ; ) HANGUL SYLLABLE TYENJ
+D18A;D18A;1110 1168 11AD;D18A;1110 1168 11AD; # (톊; 톊; á„ᅨᆭ; 톊; á„ᅨᆭ; ) HANGUL SYLLABLE TYENH
+D18B;D18B;1110 1168 11AE;D18B;1110 1168 11AE; # (톋; 톋; á„ᅨᆮ; 톋; á„ᅨᆮ; ) HANGUL SYLLABLE TYED
+D18C;D18C;1110 1168 11AF;D18C;1110 1168 11AF; # (톌; 톌; á„ᅨᆯ; 톌; á„ᅨᆯ; ) HANGUL SYLLABLE TYEL
+D18D;D18D;1110 1168 11B0;D18D;1110 1168 11B0; # (í†; í†; á„ᅨᆰ; í†; á„ᅨᆰ; ) HANGUL SYLLABLE TYELG
+D18E;D18E;1110 1168 11B1;D18E;1110 1168 11B1; # (톎; 톎; á„ᅨᆱ; 톎; á„ᅨᆱ; ) HANGUL SYLLABLE TYELM
+D18F;D18F;1110 1168 11B2;D18F;1110 1168 11B2; # (í†; í†; á„ᅨᆲ; í†; á„ᅨᆲ; ) HANGUL SYLLABLE TYELB
+D190;D190;1110 1168 11B3;D190;1110 1168 11B3; # (í†; í†; á„ᅨᆳ; í†; á„ᅨᆳ; ) HANGUL SYLLABLE TYELS
+D191;D191;1110 1168 11B4;D191;1110 1168 11B4; # (톑; 톑; á„ᅨᆴ; 톑; á„ᅨᆴ; ) HANGUL SYLLABLE TYELT
+D192;D192;1110 1168 11B5;D192;1110 1168 11B5; # (톒; 톒; á„ᅨᆵ; 톒; á„ᅨᆵ; ) HANGUL SYLLABLE TYELP
+D193;D193;1110 1168 11B6;D193;1110 1168 11B6; # (톓; 톓; á„ᅨᆶ; 톓; á„ᅨᆶ; ) HANGUL SYLLABLE TYELH
+D194;D194;1110 1168 11B7;D194;1110 1168 11B7; # (톔; 톔; á„ᅨᆷ; 톔; á„ᅨᆷ; ) HANGUL SYLLABLE TYEM
+D195;D195;1110 1168 11B8;D195;1110 1168 11B8; # (톕; 톕; á„ᅨᆸ; 톕; á„ᅨᆸ; ) HANGUL SYLLABLE TYEB
+D196;D196;1110 1168 11B9;D196;1110 1168 11B9; # (톖; 톖; á„ᅨᆹ; 톖; á„ᅨᆹ; ) HANGUL SYLLABLE TYEBS
+D197;D197;1110 1168 11BA;D197;1110 1168 11BA; # (톗; 톗; á„ᅨᆺ; 톗; á„ᅨᆺ; ) HANGUL SYLLABLE TYES
+D198;D198;1110 1168 11BB;D198;1110 1168 11BB; # (톘; 톘; á„ᅨᆻ; 톘; á„ᅨᆻ; ) HANGUL SYLLABLE TYESS
+D199;D199;1110 1168 11BC;D199;1110 1168 11BC; # (톙; 톙; á„ᅨᆼ; 톙; á„ᅨᆼ; ) HANGUL SYLLABLE TYENG
+D19A;D19A;1110 1168 11BD;D19A;1110 1168 11BD; # (톚; 톚; á„ᅨᆽ; 톚; á„ᅨᆽ; ) HANGUL SYLLABLE TYEJ
+D19B;D19B;1110 1168 11BE;D19B;1110 1168 11BE; # (톛; 톛; á„ᅨᆾ; 톛; á„ᅨᆾ; ) HANGUL SYLLABLE TYEC
+D19C;D19C;1110 1168 11BF;D19C;1110 1168 11BF; # (톜; 톜; á„ᅨᆿ; 톜; á„ᅨᆿ; ) HANGUL SYLLABLE TYEK
+D19D;D19D;1110 1168 11C0;D19D;1110 1168 11C0; # (í†; í†; á„ᅨᇀ; í†; á„ᅨᇀ; ) HANGUL SYLLABLE TYET
+D19E;D19E;1110 1168 11C1;D19E;1110 1168 11C1; # (톞; 톞; á„á…¨á‡; 톞; á„á…¨á‡; ) HANGUL SYLLABLE TYEP
+D19F;D19F;1110 1168 11C2;D19F;1110 1168 11C2; # (톟; 톟; á„ᅨᇂ; 톟; á„ᅨᇂ; ) HANGUL SYLLABLE TYEH
+D1A0;D1A0;1110 1169;D1A0;1110 1169; # (토; 토; á„á…©; 토; á„á…©; ) HANGUL SYLLABLE TO
+D1A1;D1A1;1110 1169 11A8;D1A1;1110 1169 11A8; # (톡; 톡; á„ᅩᆨ; 톡; á„ᅩᆨ; ) HANGUL SYLLABLE TOG
+D1A2;D1A2;1110 1169 11A9;D1A2;1110 1169 11A9; # (톢; 톢; á„ᅩᆩ; 톢; á„ᅩᆩ; ) HANGUL SYLLABLE TOGG
+D1A3;D1A3;1110 1169 11AA;D1A3;1110 1169 11AA; # (톣; 톣; á„ᅩᆪ; 톣; á„ᅩᆪ; ) HANGUL SYLLABLE TOGS
+D1A4;D1A4;1110 1169 11AB;D1A4;1110 1169 11AB; # (톤; 톤; á„ᅩᆫ; 톤; á„ᅩᆫ; ) HANGUL SYLLABLE TON
+D1A5;D1A5;1110 1169 11AC;D1A5;1110 1169 11AC; # (톥; 톥; á„ᅩᆬ; 톥; á„ᅩᆬ; ) HANGUL SYLLABLE TONJ
+D1A6;D1A6;1110 1169 11AD;D1A6;1110 1169 11AD; # (톦; 톦; á„ᅩᆭ; 톦; á„ᅩᆭ; ) HANGUL SYLLABLE TONH
+D1A7;D1A7;1110 1169 11AE;D1A7;1110 1169 11AE; # (톧; 톧; á„ᅩᆮ; 톧; á„ᅩᆮ; ) HANGUL SYLLABLE TOD
+D1A8;D1A8;1110 1169 11AF;D1A8;1110 1169 11AF; # (톨; 톨; á„ᅩᆯ; 톨; á„ᅩᆯ; ) HANGUL SYLLABLE TOL
+D1A9;D1A9;1110 1169 11B0;D1A9;1110 1169 11B0; # (톩; 톩; á„ᅩᆰ; 톩; á„ᅩᆰ; ) HANGUL SYLLABLE TOLG
+D1AA;D1AA;1110 1169 11B1;D1AA;1110 1169 11B1; # (톪; 톪; á„ᅩᆱ; 톪; á„ᅩᆱ; ) HANGUL SYLLABLE TOLM
+D1AB;D1AB;1110 1169 11B2;D1AB;1110 1169 11B2; # (톫; 톫; á„ᅩᆲ; 톫; á„ᅩᆲ; ) HANGUL SYLLABLE TOLB
+D1AC;D1AC;1110 1169 11B3;D1AC;1110 1169 11B3; # (톬; 톬; á„ᅩᆳ; 톬; á„ᅩᆳ; ) HANGUL SYLLABLE TOLS
+D1AD;D1AD;1110 1169 11B4;D1AD;1110 1169 11B4; # (톭; 톭; á„ᅩᆴ; 톭; á„ᅩᆴ; ) HANGUL SYLLABLE TOLT
+D1AE;D1AE;1110 1169 11B5;D1AE;1110 1169 11B5; # (톮; 톮; á„ᅩᆵ; 톮; á„ᅩᆵ; ) HANGUL SYLLABLE TOLP
+D1AF;D1AF;1110 1169 11B6;D1AF;1110 1169 11B6; # (톯; 톯; á„ᅩᆶ; 톯; á„ᅩᆶ; ) HANGUL SYLLABLE TOLH
+D1B0;D1B0;1110 1169 11B7;D1B0;1110 1169 11B7; # (톰; 톰; á„ᅩᆷ; 톰; á„ᅩᆷ; ) HANGUL SYLLABLE TOM
+D1B1;D1B1;1110 1169 11B8;D1B1;1110 1169 11B8; # (톱; 톱; á„ᅩᆸ; 톱; á„ᅩᆸ; ) HANGUL SYLLABLE TOB
+D1B2;D1B2;1110 1169 11B9;D1B2;1110 1169 11B9; # (톲; 톲; á„ᅩᆹ; 톲; á„ᅩᆹ; ) HANGUL SYLLABLE TOBS
+D1B3;D1B3;1110 1169 11BA;D1B3;1110 1169 11BA; # (톳; 톳; á„ᅩᆺ; 톳; á„ᅩᆺ; ) HANGUL SYLLABLE TOS
+D1B4;D1B4;1110 1169 11BB;D1B4;1110 1169 11BB; # (톴; 톴; á„ᅩᆻ; 톴; á„ᅩᆻ; ) HANGUL SYLLABLE TOSS
+D1B5;D1B5;1110 1169 11BC;D1B5;1110 1169 11BC; # (통; 통; á„ᅩᆼ; 통; á„ᅩᆼ; ) HANGUL SYLLABLE TONG
+D1B6;D1B6;1110 1169 11BD;D1B6;1110 1169 11BD; # (톶; 톶; á„ᅩᆽ; 톶; á„ᅩᆽ; ) HANGUL SYLLABLE TOJ
+D1B7;D1B7;1110 1169 11BE;D1B7;1110 1169 11BE; # (톷; 톷; á„ᅩᆾ; 톷; á„ᅩᆾ; ) HANGUL SYLLABLE TOC
+D1B8;D1B8;1110 1169 11BF;D1B8;1110 1169 11BF; # (톸; 톸; á„ᅩᆿ; 톸; á„ᅩᆿ; ) HANGUL SYLLABLE TOK
+D1B9;D1B9;1110 1169 11C0;D1B9;1110 1169 11C0; # (톹; 톹; á„ᅩᇀ; 톹; á„ᅩᇀ; ) HANGUL SYLLABLE TOT
+D1BA;D1BA;1110 1169 11C1;D1BA;1110 1169 11C1; # (톺; 톺; á„á…©á‡; 톺; á„á…©á‡; ) HANGUL SYLLABLE TOP
+D1BB;D1BB;1110 1169 11C2;D1BB;1110 1169 11C2; # (톻; 톻; á„ᅩᇂ; 톻; á„ᅩᇂ; ) HANGUL SYLLABLE TOH
+D1BC;D1BC;1110 116A;D1BC;1110 116A; # (톼; 톼; á„á…ª; 톼; á„á…ª; ) HANGUL SYLLABLE TWA
+D1BD;D1BD;1110 116A 11A8;D1BD;1110 116A 11A8; # (톽; 톽; á„ᅪᆨ; 톽; á„ᅪᆨ; ) HANGUL SYLLABLE TWAG
+D1BE;D1BE;1110 116A 11A9;D1BE;1110 116A 11A9; # (톾; 톾; á„ᅪᆩ; 톾; á„ᅪᆩ; ) HANGUL SYLLABLE TWAGG
+D1BF;D1BF;1110 116A 11AA;D1BF;1110 116A 11AA; # (톿; 톿; á„ᅪᆪ; 톿; á„ᅪᆪ; ) HANGUL SYLLABLE TWAGS
+D1C0;D1C0;1110 116A 11AB;D1C0;1110 116A 11AB; # (퇀; 퇀; á„ᅪᆫ; 퇀; á„ᅪᆫ; ) HANGUL SYLLABLE TWAN
+D1C1;D1C1;1110 116A 11AC;D1C1;1110 116A 11AC; # (í‡; í‡; á„ᅪᆬ; í‡; á„ᅪᆬ; ) HANGUL SYLLABLE TWANJ
+D1C2;D1C2;1110 116A 11AD;D1C2;1110 116A 11AD; # (퇂; 퇂; á„ᅪᆭ; 퇂; á„ᅪᆭ; ) HANGUL SYLLABLE TWANH
+D1C3;D1C3;1110 116A 11AE;D1C3;1110 116A 11AE; # (퇃; 퇃; á„ᅪᆮ; 퇃; á„ᅪᆮ; ) HANGUL SYLLABLE TWAD
+D1C4;D1C4;1110 116A 11AF;D1C4;1110 116A 11AF; # (퇄; 퇄; á„ᅪᆯ; 퇄; á„ᅪᆯ; ) HANGUL SYLLABLE TWAL
+D1C5;D1C5;1110 116A 11B0;D1C5;1110 116A 11B0; # (퇅; 퇅; á„ᅪᆰ; 퇅; á„ᅪᆰ; ) HANGUL SYLLABLE TWALG
+D1C6;D1C6;1110 116A 11B1;D1C6;1110 116A 11B1; # (퇆; 퇆; á„ᅪᆱ; 퇆; á„ᅪᆱ; ) HANGUL SYLLABLE TWALM
+D1C7;D1C7;1110 116A 11B2;D1C7;1110 116A 11B2; # (퇇; 퇇; á„ᅪᆲ; 퇇; á„ᅪᆲ; ) HANGUL SYLLABLE TWALB
+D1C8;D1C8;1110 116A 11B3;D1C8;1110 116A 11B3; # (퇈; 퇈; á„ᅪᆳ; 퇈; á„ᅪᆳ; ) HANGUL SYLLABLE TWALS
+D1C9;D1C9;1110 116A 11B4;D1C9;1110 116A 11B4; # (퇉; 퇉; á„ᅪᆴ; 퇉; á„ᅪᆴ; ) HANGUL SYLLABLE TWALT
+D1CA;D1CA;1110 116A 11B5;D1CA;1110 116A 11B5; # (퇊; 퇊; á„ᅪᆵ; 퇊; á„ᅪᆵ; ) HANGUL SYLLABLE TWALP
+D1CB;D1CB;1110 116A 11B6;D1CB;1110 116A 11B6; # (퇋; 퇋; á„ᅪᆶ; 퇋; á„ᅪᆶ; ) HANGUL SYLLABLE TWALH
+D1CC;D1CC;1110 116A 11B7;D1CC;1110 116A 11B7; # (퇌; 퇌; á„ᅪᆷ; 퇌; á„ᅪᆷ; ) HANGUL SYLLABLE TWAM
+D1CD;D1CD;1110 116A 11B8;D1CD;1110 116A 11B8; # (í‡; í‡; á„ᅪᆸ; í‡; á„ᅪᆸ; ) HANGUL SYLLABLE TWAB
+D1CE;D1CE;1110 116A 11B9;D1CE;1110 116A 11B9; # (퇎; 퇎; á„ᅪᆹ; 퇎; á„ᅪᆹ; ) HANGUL SYLLABLE TWABS
+D1CF;D1CF;1110 116A 11BA;D1CF;1110 116A 11BA; # (í‡; í‡; á„ᅪᆺ; í‡; á„ᅪᆺ; ) HANGUL SYLLABLE TWAS
+D1D0;D1D0;1110 116A 11BB;D1D0;1110 116A 11BB; # (í‡; í‡; á„ᅪᆻ; í‡; á„ᅪᆻ; ) HANGUL SYLLABLE TWASS
+D1D1;D1D1;1110 116A 11BC;D1D1;1110 116A 11BC; # (퇑; 퇑; á„ᅪᆼ; 퇑; á„ᅪᆼ; ) HANGUL SYLLABLE TWANG
+D1D2;D1D2;1110 116A 11BD;D1D2;1110 116A 11BD; # (퇒; 퇒; á„ᅪᆽ; 퇒; á„ᅪᆽ; ) HANGUL SYLLABLE TWAJ
+D1D3;D1D3;1110 116A 11BE;D1D3;1110 116A 11BE; # (퇓; 퇓; á„ᅪᆾ; 퇓; á„ᅪᆾ; ) HANGUL SYLLABLE TWAC
+D1D4;D1D4;1110 116A 11BF;D1D4;1110 116A 11BF; # (퇔; 퇔; á„ᅪᆿ; 퇔; á„ᅪᆿ; ) HANGUL SYLLABLE TWAK
+D1D5;D1D5;1110 116A 11C0;D1D5;1110 116A 11C0; # (퇕; 퇕; á„ᅪᇀ; 퇕; á„ᅪᇀ; ) HANGUL SYLLABLE TWAT
+D1D6;D1D6;1110 116A 11C1;D1D6;1110 116A 11C1; # (퇖; 퇖; á„á…ªá‡; 퇖; á„á…ªá‡; ) HANGUL SYLLABLE TWAP
+D1D7;D1D7;1110 116A 11C2;D1D7;1110 116A 11C2; # (퇗; 퇗; á„ᅪᇂ; 퇗; á„ᅪᇂ; ) HANGUL SYLLABLE TWAH
+D1D8;D1D8;1110 116B;D1D8;1110 116B; # (퇘; 퇘; á„á…«; 퇘; á„á…«; ) HANGUL SYLLABLE TWAE
+D1D9;D1D9;1110 116B 11A8;D1D9;1110 116B 11A8; # (퇙; 퇙; á„ᅫᆨ; 퇙; á„ᅫᆨ; ) HANGUL SYLLABLE TWAEG
+D1DA;D1DA;1110 116B 11A9;D1DA;1110 116B 11A9; # (퇚; 퇚; á„ᅫᆩ; 퇚; á„ᅫᆩ; ) HANGUL SYLLABLE TWAEGG
+D1DB;D1DB;1110 116B 11AA;D1DB;1110 116B 11AA; # (퇛; 퇛; á„ᅫᆪ; 퇛; á„ᅫᆪ; ) HANGUL SYLLABLE TWAEGS
+D1DC;D1DC;1110 116B 11AB;D1DC;1110 116B 11AB; # (퇜; 퇜; á„ᅫᆫ; 퇜; á„ᅫᆫ; ) HANGUL SYLLABLE TWAEN
+D1DD;D1DD;1110 116B 11AC;D1DD;1110 116B 11AC; # (í‡; í‡; á„ᅫᆬ; í‡; á„ᅫᆬ; ) HANGUL SYLLABLE TWAENJ
+D1DE;D1DE;1110 116B 11AD;D1DE;1110 116B 11AD; # (퇞; 퇞; á„ᅫᆭ; 퇞; á„ᅫᆭ; ) HANGUL SYLLABLE TWAENH
+D1DF;D1DF;1110 116B 11AE;D1DF;1110 116B 11AE; # (퇟; 퇟; á„ᅫᆮ; 퇟; á„ᅫᆮ; ) HANGUL SYLLABLE TWAED
+D1E0;D1E0;1110 116B 11AF;D1E0;1110 116B 11AF; # (퇠; 퇠; á„ᅫᆯ; 퇠; á„ᅫᆯ; ) HANGUL SYLLABLE TWAEL
+D1E1;D1E1;1110 116B 11B0;D1E1;1110 116B 11B0; # (퇡; 퇡; á„ᅫᆰ; 퇡; á„ᅫᆰ; ) HANGUL SYLLABLE TWAELG
+D1E2;D1E2;1110 116B 11B1;D1E2;1110 116B 11B1; # (퇢; 퇢; á„ᅫᆱ; 퇢; á„ᅫᆱ; ) HANGUL SYLLABLE TWAELM
+D1E3;D1E3;1110 116B 11B2;D1E3;1110 116B 11B2; # (퇣; 퇣; á„ᅫᆲ; 퇣; á„ᅫᆲ; ) HANGUL SYLLABLE TWAELB
+D1E4;D1E4;1110 116B 11B3;D1E4;1110 116B 11B3; # (퇤; 퇤; á„ᅫᆳ; 퇤; á„ᅫᆳ; ) HANGUL SYLLABLE TWAELS
+D1E5;D1E5;1110 116B 11B4;D1E5;1110 116B 11B4; # (퇥; 퇥; á„ᅫᆴ; 퇥; á„ᅫᆴ; ) HANGUL SYLLABLE TWAELT
+D1E6;D1E6;1110 116B 11B5;D1E6;1110 116B 11B5; # (퇦; 퇦; á„ᅫᆵ; 퇦; á„ᅫᆵ; ) HANGUL SYLLABLE TWAELP
+D1E7;D1E7;1110 116B 11B6;D1E7;1110 116B 11B6; # (퇧; 퇧; á„ᅫᆶ; 퇧; á„ᅫᆶ; ) HANGUL SYLLABLE TWAELH
+D1E8;D1E8;1110 116B 11B7;D1E8;1110 116B 11B7; # (퇨; 퇨; á„ᅫᆷ; 퇨; á„ᅫᆷ; ) HANGUL SYLLABLE TWAEM
+D1E9;D1E9;1110 116B 11B8;D1E9;1110 116B 11B8; # (퇩; 퇩; á„ᅫᆸ; 퇩; á„ᅫᆸ; ) HANGUL SYLLABLE TWAEB
+D1EA;D1EA;1110 116B 11B9;D1EA;1110 116B 11B9; # (퇪; 퇪; á„ᅫᆹ; 퇪; á„ᅫᆹ; ) HANGUL SYLLABLE TWAEBS
+D1EB;D1EB;1110 116B 11BA;D1EB;1110 116B 11BA; # (퇫; 퇫; á„ᅫᆺ; 퇫; á„ᅫᆺ; ) HANGUL SYLLABLE TWAES
+D1EC;D1EC;1110 116B 11BB;D1EC;1110 116B 11BB; # (퇬; 퇬; á„ᅫᆻ; 퇬; á„ᅫᆻ; ) HANGUL SYLLABLE TWAESS
+D1ED;D1ED;1110 116B 11BC;D1ED;1110 116B 11BC; # (퇭; 퇭; á„ᅫᆼ; 퇭; á„ᅫᆼ; ) HANGUL SYLLABLE TWAENG
+D1EE;D1EE;1110 116B 11BD;D1EE;1110 116B 11BD; # (퇮; 퇮; á„ᅫᆽ; 퇮; á„ᅫᆽ; ) HANGUL SYLLABLE TWAEJ
+D1EF;D1EF;1110 116B 11BE;D1EF;1110 116B 11BE; # (퇯; 퇯; á„ᅫᆾ; 퇯; á„ᅫᆾ; ) HANGUL SYLLABLE TWAEC
+D1F0;D1F0;1110 116B 11BF;D1F0;1110 116B 11BF; # (퇰; 퇰; á„ᅫᆿ; 퇰; á„ᅫᆿ; ) HANGUL SYLLABLE TWAEK
+D1F1;D1F1;1110 116B 11C0;D1F1;1110 116B 11C0; # (퇱; 퇱; á„ᅫᇀ; 퇱; á„ᅫᇀ; ) HANGUL SYLLABLE TWAET
+D1F2;D1F2;1110 116B 11C1;D1F2;1110 116B 11C1; # (퇲; 퇲; á„á…«á‡; 퇲; á„á…«á‡; ) HANGUL SYLLABLE TWAEP
+D1F3;D1F3;1110 116B 11C2;D1F3;1110 116B 11C2; # (퇳; 퇳; á„ᅫᇂ; 퇳; á„ᅫᇂ; ) HANGUL SYLLABLE TWAEH
+D1F4;D1F4;1110 116C;D1F4;1110 116C; # (퇴; 퇴; á„á…¬; 퇴; á„á…¬; ) HANGUL SYLLABLE TOE
+D1F5;D1F5;1110 116C 11A8;D1F5;1110 116C 11A8; # (퇵; 퇵; á„ᅬᆨ; 퇵; á„ᅬᆨ; ) HANGUL SYLLABLE TOEG
+D1F6;D1F6;1110 116C 11A9;D1F6;1110 116C 11A9; # (퇶; 퇶; á„ᅬᆩ; 퇶; á„ᅬᆩ; ) HANGUL SYLLABLE TOEGG
+D1F7;D1F7;1110 116C 11AA;D1F7;1110 116C 11AA; # (퇷; 퇷; á„ᅬᆪ; 퇷; á„ᅬᆪ; ) HANGUL SYLLABLE TOEGS
+D1F8;D1F8;1110 116C 11AB;D1F8;1110 116C 11AB; # (퇸; 퇸; á„ᅬᆫ; 퇸; á„ᅬᆫ; ) HANGUL SYLLABLE TOEN
+D1F9;D1F9;1110 116C 11AC;D1F9;1110 116C 11AC; # (퇹; 퇹; á„ᅬᆬ; 퇹; á„ᅬᆬ; ) HANGUL SYLLABLE TOENJ
+D1FA;D1FA;1110 116C 11AD;D1FA;1110 116C 11AD; # (퇺; 퇺; á„ᅬᆭ; 퇺; á„ᅬᆭ; ) HANGUL SYLLABLE TOENH
+D1FB;D1FB;1110 116C 11AE;D1FB;1110 116C 11AE; # (퇻; 퇻; á„ᅬᆮ; 퇻; á„ᅬᆮ; ) HANGUL SYLLABLE TOED
+D1FC;D1FC;1110 116C 11AF;D1FC;1110 116C 11AF; # (퇼; 퇼; á„ᅬᆯ; 퇼; á„ᅬᆯ; ) HANGUL SYLLABLE TOEL
+D1FD;D1FD;1110 116C 11B0;D1FD;1110 116C 11B0; # (퇽; 퇽; á„ᅬᆰ; 퇽; á„ᅬᆰ; ) HANGUL SYLLABLE TOELG
+D1FE;D1FE;1110 116C 11B1;D1FE;1110 116C 11B1; # (퇾; 퇾; á„ᅬᆱ; 퇾; á„ᅬᆱ; ) HANGUL SYLLABLE TOELM
+D1FF;D1FF;1110 116C 11B2;D1FF;1110 116C 11B2; # (퇿; 퇿; á„ᅬᆲ; 퇿; á„ᅬᆲ; ) HANGUL SYLLABLE TOELB
+D200;D200;1110 116C 11B3;D200;1110 116C 11B3; # (툀; 툀; á„ᅬᆳ; 툀; á„ᅬᆳ; ) HANGUL SYLLABLE TOELS
+D201;D201;1110 116C 11B4;D201;1110 116C 11B4; # (íˆ; íˆ; á„ᅬᆴ; íˆ; á„ᅬᆴ; ) HANGUL SYLLABLE TOELT
+D202;D202;1110 116C 11B5;D202;1110 116C 11B5; # (툂; 툂; á„ᅬᆵ; 툂; á„ᅬᆵ; ) HANGUL SYLLABLE TOELP
+D203;D203;1110 116C 11B6;D203;1110 116C 11B6; # (툃; 툃; á„ᅬᆶ; 툃; á„ᅬᆶ; ) HANGUL SYLLABLE TOELH
+D204;D204;1110 116C 11B7;D204;1110 116C 11B7; # (툄; 툄; á„ᅬᆷ; 툄; á„ᅬᆷ; ) HANGUL SYLLABLE TOEM
+D205;D205;1110 116C 11B8;D205;1110 116C 11B8; # (툅; 툅; á„ᅬᆸ; 툅; á„ᅬᆸ; ) HANGUL SYLLABLE TOEB
+D206;D206;1110 116C 11B9;D206;1110 116C 11B9; # (툆; 툆; á„ᅬᆹ; 툆; á„ᅬᆹ; ) HANGUL SYLLABLE TOEBS
+D207;D207;1110 116C 11BA;D207;1110 116C 11BA; # (툇; 툇; á„ᅬᆺ; 툇; á„ᅬᆺ; ) HANGUL SYLLABLE TOES
+D208;D208;1110 116C 11BB;D208;1110 116C 11BB; # (툈; 툈; á„ᅬᆻ; 툈; á„ᅬᆻ; ) HANGUL SYLLABLE TOESS
+D209;D209;1110 116C 11BC;D209;1110 116C 11BC; # (툉; 툉; á„ᅬᆼ; 툉; á„ᅬᆼ; ) HANGUL SYLLABLE TOENG
+D20A;D20A;1110 116C 11BD;D20A;1110 116C 11BD; # (툊; 툊; á„ᅬᆽ; 툊; á„ᅬᆽ; ) HANGUL SYLLABLE TOEJ
+D20B;D20B;1110 116C 11BE;D20B;1110 116C 11BE; # (툋; 툋; á„ᅬᆾ; 툋; á„ᅬᆾ; ) HANGUL SYLLABLE TOEC
+D20C;D20C;1110 116C 11BF;D20C;1110 116C 11BF; # (툌; 툌; á„ᅬᆿ; 툌; á„ᅬᆿ; ) HANGUL SYLLABLE TOEK
+D20D;D20D;1110 116C 11C0;D20D;1110 116C 11C0; # (íˆ; íˆ; á„ᅬᇀ; íˆ; á„ᅬᇀ; ) HANGUL SYLLABLE TOET
+D20E;D20E;1110 116C 11C1;D20E;1110 116C 11C1; # (툎; 툎; á„á…¬á‡; 툎; á„á…¬á‡; ) HANGUL SYLLABLE TOEP
+D20F;D20F;1110 116C 11C2;D20F;1110 116C 11C2; # (íˆ; íˆ; á„ᅬᇂ; íˆ; á„ᅬᇂ; ) HANGUL SYLLABLE TOEH
+D210;D210;1110 116D;D210;1110 116D; # (íˆ; íˆ; á„á…­; íˆ; á„á…­; ) HANGUL SYLLABLE TYO
+D211;D211;1110 116D 11A8;D211;1110 116D 11A8; # (툑; 툑; á„ᅭᆨ; 툑; á„ᅭᆨ; ) HANGUL SYLLABLE TYOG
+D212;D212;1110 116D 11A9;D212;1110 116D 11A9; # (툒; 툒; á„ᅭᆩ; 툒; á„ᅭᆩ; ) HANGUL SYLLABLE TYOGG
+D213;D213;1110 116D 11AA;D213;1110 116D 11AA; # (툓; 툓; á„ᅭᆪ; 툓; á„ᅭᆪ; ) HANGUL SYLLABLE TYOGS
+D214;D214;1110 116D 11AB;D214;1110 116D 11AB; # (툔; 툔; á„ᅭᆫ; 툔; á„ᅭᆫ; ) HANGUL SYLLABLE TYON
+D215;D215;1110 116D 11AC;D215;1110 116D 11AC; # (툕; 툕; á„ᅭᆬ; 툕; á„ᅭᆬ; ) HANGUL SYLLABLE TYONJ
+D216;D216;1110 116D 11AD;D216;1110 116D 11AD; # (툖; 툖; á„ᅭᆭ; 툖; á„ᅭᆭ; ) HANGUL SYLLABLE TYONH
+D217;D217;1110 116D 11AE;D217;1110 116D 11AE; # (툗; 툗; á„ᅭᆮ; 툗; á„ᅭᆮ; ) HANGUL SYLLABLE TYOD
+D218;D218;1110 116D 11AF;D218;1110 116D 11AF; # (툘; 툘; á„ᅭᆯ; 툘; á„ᅭᆯ; ) HANGUL SYLLABLE TYOL
+D219;D219;1110 116D 11B0;D219;1110 116D 11B0; # (툙; 툙; á„ᅭᆰ; 툙; á„ᅭᆰ; ) HANGUL SYLLABLE TYOLG
+D21A;D21A;1110 116D 11B1;D21A;1110 116D 11B1; # (툚; 툚; á„ᅭᆱ; 툚; á„ᅭᆱ; ) HANGUL SYLLABLE TYOLM
+D21B;D21B;1110 116D 11B2;D21B;1110 116D 11B2; # (툛; 툛; á„ᅭᆲ; 툛; á„ᅭᆲ; ) HANGUL SYLLABLE TYOLB
+D21C;D21C;1110 116D 11B3;D21C;1110 116D 11B3; # (툜; 툜; á„ᅭᆳ; 툜; á„ᅭᆳ; ) HANGUL SYLLABLE TYOLS
+D21D;D21D;1110 116D 11B4;D21D;1110 116D 11B4; # (íˆ; íˆ; á„ᅭᆴ; íˆ; á„ᅭᆴ; ) HANGUL SYLLABLE TYOLT
+D21E;D21E;1110 116D 11B5;D21E;1110 116D 11B5; # (툞; 툞; á„ᅭᆵ; 툞; á„ᅭᆵ; ) HANGUL SYLLABLE TYOLP
+D21F;D21F;1110 116D 11B6;D21F;1110 116D 11B6; # (툟; 툟; á„ᅭᆶ; 툟; á„ᅭᆶ; ) HANGUL SYLLABLE TYOLH
+D220;D220;1110 116D 11B7;D220;1110 116D 11B7; # (툠; 툠; á„ᅭᆷ; 툠; á„ᅭᆷ; ) HANGUL SYLLABLE TYOM
+D221;D221;1110 116D 11B8;D221;1110 116D 11B8; # (툡; 툡; á„ᅭᆸ; 툡; á„ᅭᆸ; ) HANGUL SYLLABLE TYOB
+D222;D222;1110 116D 11B9;D222;1110 116D 11B9; # (툢; 툢; á„ᅭᆹ; 툢; á„ᅭᆹ; ) HANGUL SYLLABLE TYOBS
+D223;D223;1110 116D 11BA;D223;1110 116D 11BA; # (툣; 툣; á„ᅭᆺ; 툣; á„ᅭᆺ; ) HANGUL SYLLABLE TYOS
+D224;D224;1110 116D 11BB;D224;1110 116D 11BB; # (툤; 툤; á„ᅭᆻ; 툤; á„ᅭᆻ; ) HANGUL SYLLABLE TYOSS
+D225;D225;1110 116D 11BC;D225;1110 116D 11BC; # (툥; 툥; á„ᅭᆼ; 툥; á„ᅭᆼ; ) HANGUL SYLLABLE TYONG
+D226;D226;1110 116D 11BD;D226;1110 116D 11BD; # (툦; 툦; á„ᅭᆽ; 툦; á„ᅭᆽ; ) HANGUL SYLLABLE TYOJ
+D227;D227;1110 116D 11BE;D227;1110 116D 11BE; # (툧; 툧; á„ᅭᆾ; 툧; á„ᅭᆾ; ) HANGUL SYLLABLE TYOC
+D228;D228;1110 116D 11BF;D228;1110 116D 11BF; # (툨; 툨; á„ᅭᆿ; 툨; á„ᅭᆿ; ) HANGUL SYLLABLE TYOK
+D229;D229;1110 116D 11C0;D229;1110 116D 11C0; # (툩; 툩; á„ᅭᇀ; 툩; á„ᅭᇀ; ) HANGUL SYLLABLE TYOT
+D22A;D22A;1110 116D 11C1;D22A;1110 116D 11C1; # (툪; 툪; á„á…­á‡; 툪; á„á…­á‡; ) HANGUL SYLLABLE TYOP
+D22B;D22B;1110 116D 11C2;D22B;1110 116D 11C2; # (툫; 툫; á„ᅭᇂ; 툫; á„ᅭᇂ; ) HANGUL SYLLABLE TYOH
+D22C;D22C;1110 116E;D22C;1110 116E; # (투; 투; á„á…®; 투; á„á…®; ) HANGUL SYLLABLE TU
+D22D;D22D;1110 116E 11A8;D22D;1110 116E 11A8; # (툭; 툭; á„ᅮᆨ; 툭; á„ᅮᆨ; ) HANGUL SYLLABLE TUG
+D22E;D22E;1110 116E 11A9;D22E;1110 116E 11A9; # (툮; 툮; á„ᅮᆩ; 툮; á„ᅮᆩ; ) HANGUL SYLLABLE TUGG
+D22F;D22F;1110 116E 11AA;D22F;1110 116E 11AA; # (툯; 툯; á„ᅮᆪ; 툯; á„ᅮᆪ; ) HANGUL SYLLABLE TUGS
+D230;D230;1110 116E 11AB;D230;1110 116E 11AB; # (툰; 툰; á„ᅮᆫ; 툰; á„ᅮᆫ; ) HANGUL SYLLABLE TUN
+D231;D231;1110 116E 11AC;D231;1110 116E 11AC; # (툱; 툱; á„ᅮᆬ; 툱; á„ᅮᆬ; ) HANGUL SYLLABLE TUNJ
+D232;D232;1110 116E 11AD;D232;1110 116E 11AD; # (툲; 툲; á„ᅮᆭ; 툲; á„ᅮᆭ; ) HANGUL SYLLABLE TUNH
+D233;D233;1110 116E 11AE;D233;1110 116E 11AE; # (툳; 툳; á„ᅮᆮ; 툳; á„ᅮᆮ; ) HANGUL SYLLABLE TUD
+D234;D234;1110 116E 11AF;D234;1110 116E 11AF; # (툴; 툴; á„ᅮᆯ; 툴; á„ᅮᆯ; ) HANGUL SYLLABLE TUL
+D235;D235;1110 116E 11B0;D235;1110 116E 11B0; # (툵; 툵; á„ᅮᆰ; 툵; á„ᅮᆰ; ) HANGUL SYLLABLE TULG
+D236;D236;1110 116E 11B1;D236;1110 116E 11B1; # (툶; 툶; á„ᅮᆱ; 툶; á„ᅮᆱ; ) HANGUL SYLLABLE TULM
+D237;D237;1110 116E 11B2;D237;1110 116E 11B2; # (툷; 툷; á„ᅮᆲ; 툷; á„ᅮᆲ; ) HANGUL SYLLABLE TULB
+D238;D238;1110 116E 11B3;D238;1110 116E 11B3; # (툸; 툸; á„ᅮᆳ; 툸; á„ᅮᆳ; ) HANGUL SYLLABLE TULS
+D239;D239;1110 116E 11B4;D239;1110 116E 11B4; # (툹; 툹; á„ᅮᆴ; 툹; á„ᅮᆴ; ) HANGUL SYLLABLE TULT
+D23A;D23A;1110 116E 11B5;D23A;1110 116E 11B5; # (툺; 툺; á„ᅮᆵ; 툺; á„ᅮᆵ; ) HANGUL SYLLABLE TULP
+D23B;D23B;1110 116E 11B6;D23B;1110 116E 11B6; # (툻; 툻; á„ᅮᆶ; 툻; á„ᅮᆶ; ) HANGUL SYLLABLE TULH
+D23C;D23C;1110 116E 11B7;D23C;1110 116E 11B7; # (툼; 툼; á„ᅮᆷ; 툼; á„ᅮᆷ; ) HANGUL SYLLABLE TUM
+D23D;D23D;1110 116E 11B8;D23D;1110 116E 11B8; # (툽; 툽; á„ᅮᆸ; 툽; á„ᅮᆸ; ) HANGUL SYLLABLE TUB
+D23E;D23E;1110 116E 11B9;D23E;1110 116E 11B9; # (툾; 툾; á„ᅮᆹ; 툾; á„ᅮᆹ; ) HANGUL SYLLABLE TUBS
+D23F;D23F;1110 116E 11BA;D23F;1110 116E 11BA; # (툿; 툿; á„ᅮᆺ; 툿; á„ᅮᆺ; ) HANGUL SYLLABLE TUS
+D240;D240;1110 116E 11BB;D240;1110 116E 11BB; # (퉀; 퉀; á„ᅮᆻ; 퉀; á„ᅮᆻ; ) HANGUL SYLLABLE TUSS
+D241;D241;1110 116E 11BC;D241;1110 116E 11BC; # (í‰; í‰; á„ᅮᆼ; í‰; á„ᅮᆼ; ) HANGUL SYLLABLE TUNG
+D242;D242;1110 116E 11BD;D242;1110 116E 11BD; # (퉂; 퉂; á„ᅮᆽ; 퉂; á„ᅮᆽ; ) HANGUL SYLLABLE TUJ
+D243;D243;1110 116E 11BE;D243;1110 116E 11BE; # (퉃; 퉃; á„ᅮᆾ; 퉃; á„ᅮᆾ; ) HANGUL SYLLABLE TUC
+D244;D244;1110 116E 11BF;D244;1110 116E 11BF; # (퉄; 퉄; á„ᅮᆿ; 퉄; á„ᅮᆿ; ) HANGUL SYLLABLE TUK
+D245;D245;1110 116E 11C0;D245;1110 116E 11C0; # (퉅; 퉅; á„ᅮᇀ; 퉅; á„ᅮᇀ; ) HANGUL SYLLABLE TUT
+D246;D246;1110 116E 11C1;D246;1110 116E 11C1; # (퉆; 퉆; á„á…®á‡; 퉆; á„á…®á‡; ) HANGUL SYLLABLE TUP
+D247;D247;1110 116E 11C2;D247;1110 116E 11C2; # (퉇; 퉇; á„ᅮᇂ; 퉇; á„ᅮᇂ; ) HANGUL SYLLABLE TUH
+D248;D248;1110 116F;D248;1110 116F; # (퉈; 퉈; á„á…¯; 퉈; á„á…¯; ) HANGUL SYLLABLE TWEO
+D249;D249;1110 116F 11A8;D249;1110 116F 11A8; # (퉉; 퉉; á„ᅯᆨ; 퉉; á„ᅯᆨ; ) HANGUL SYLLABLE TWEOG
+D24A;D24A;1110 116F 11A9;D24A;1110 116F 11A9; # (퉊; 퉊; á„ᅯᆩ; 퉊; á„ᅯᆩ; ) HANGUL SYLLABLE TWEOGG
+D24B;D24B;1110 116F 11AA;D24B;1110 116F 11AA; # (퉋; 퉋; á„ᅯᆪ; 퉋; á„ᅯᆪ; ) HANGUL SYLLABLE TWEOGS
+D24C;D24C;1110 116F 11AB;D24C;1110 116F 11AB; # (퉌; 퉌; á„ᅯᆫ; 퉌; á„ᅯᆫ; ) HANGUL SYLLABLE TWEON
+D24D;D24D;1110 116F 11AC;D24D;1110 116F 11AC; # (í‰; í‰; á„ᅯᆬ; í‰; á„ᅯᆬ; ) HANGUL SYLLABLE TWEONJ
+D24E;D24E;1110 116F 11AD;D24E;1110 116F 11AD; # (퉎; 퉎; á„ᅯᆭ; 퉎; á„ᅯᆭ; ) HANGUL SYLLABLE TWEONH
+D24F;D24F;1110 116F 11AE;D24F;1110 116F 11AE; # (í‰; í‰; á„ᅯᆮ; í‰; á„ᅯᆮ; ) HANGUL SYLLABLE TWEOD
+D250;D250;1110 116F 11AF;D250;1110 116F 11AF; # (í‰; í‰; á„ᅯᆯ; í‰; á„ᅯᆯ; ) HANGUL SYLLABLE TWEOL
+D251;D251;1110 116F 11B0;D251;1110 116F 11B0; # (퉑; 퉑; á„ᅯᆰ; 퉑; á„ᅯᆰ; ) HANGUL SYLLABLE TWEOLG
+D252;D252;1110 116F 11B1;D252;1110 116F 11B1; # (퉒; 퉒; á„ᅯᆱ; 퉒; á„ᅯᆱ; ) HANGUL SYLLABLE TWEOLM
+D253;D253;1110 116F 11B2;D253;1110 116F 11B2; # (퉓; 퉓; á„ᅯᆲ; 퉓; á„ᅯᆲ; ) HANGUL SYLLABLE TWEOLB
+D254;D254;1110 116F 11B3;D254;1110 116F 11B3; # (퉔; 퉔; á„ᅯᆳ; 퉔; á„ᅯᆳ; ) HANGUL SYLLABLE TWEOLS
+D255;D255;1110 116F 11B4;D255;1110 116F 11B4; # (퉕; 퉕; á„ᅯᆴ; 퉕; á„ᅯᆴ; ) HANGUL SYLLABLE TWEOLT
+D256;D256;1110 116F 11B5;D256;1110 116F 11B5; # (퉖; 퉖; á„ᅯᆵ; 퉖; á„ᅯᆵ; ) HANGUL SYLLABLE TWEOLP
+D257;D257;1110 116F 11B6;D257;1110 116F 11B6; # (퉗; 퉗; á„ᅯᆶ; 퉗; á„ᅯᆶ; ) HANGUL SYLLABLE TWEOLH
+D258;D258;1110 116F 11B7;D258;1110 116F 11B7; # (퉘; 퉘; á„ᅯᆷ; 퉘; á„ᅯᆷ; ) HANGUL SYLLABLE TWEOM
+D259;D259;1110 116F 11B8;D259;1110 116F 11B8; # (퉙; 퉙; á„ᅯᆸ; 퉙; á„ᅯᆸ; ) HANGUL SYLLABLE TWEOB
+D25A;D25A;1110 116F 11B9;D25A;1110 116F 11B9; # (퉚; 퉚; á„ᅯᆹ; 퉚; á„ᅯᆹ; ) HANGUL SYLLABLE TWEOBS
+D25B;D25B;1110 116F 11BA;D25B;1110 116F 11BA; # (퉛; 퉛; á„ᅯᆺ; 퉛; á„ᅯᆺ; ) HANGUL SYLLABLE TWEOS
+D25C;D25C;1110 116F 11BB;D25C;1110 116F 11BB; # (퉜; 퉜; á„ᅯᆻ; 퉜; á„ᅯᆻ; ) HANGUL SYLLABLE TWEOSS
+D25D;D25D;1110 116F 11BC;D25D;1110 116F 11BC; # (í‰; í‰; á„ᅯᆼ; í‰; á„ᅯᆼ; ) HANGUL SYLLABLE TWEONG
+D25E;D25E;1110 116F 11BD;D25E;1110 116F 11BD; # (퉞; 퉞; á„ᅯᆽ; 퉞; á„ᅯᆽ; ) HANGUL SYLLABLE TWEOJ
+D25F;D25F;1110 116F 11BE;D25F;1110 116F 11BE; # (퉟; 퉟; á„ᅯᆾ; 퉟; á„ᅯᆾ; ) HANGUL SYLLABLE TWEOC
+D260;D260;1110 116F 11BF;D260;1110 116F 11BF; # (퉠; 퉠; á„ᅯᆿ; 퉠; á„ᅯᆿ; ) HANGUL SYLLABLE TWEOK
+D261;D261;1110 116F 11C0;D261;1110 116F 11C0; # (퉡; 퉡; á„ᅯᇀ; 퉡; á„ᅯᇀ; ) HANGUL SYLLABLE TWEOT
+D262;D262;1110 116F 11C1;D262;1110 116F 11C1; # (퉢; 퉢; á„á…¯á‡; 퉢; á„á…¯á‡; ) HANGUL SYLLABLE TWEOP
+D263;D263;1110 116F 11C2;D263;1110 116F 11C2; # (퉣; 퉣; á„ᅯᇂ; 퉣; á„ᅯᇂ; ) HANGUL SYLLABLE TWEOH
+D264;D264;1110 1170;D264;1110 1170; # (퉤; 퉤; á„á…°; 퉤; á„á…°; ) HANGUL SYLLABLE TWE
+D265;D265;1110 1170 11A8;D265;1110 1170 11A8; # (퉥; 퉥; á„ᅰᆨ; 퉥; á„ᅰᆨ; ) HANGUL SYLLABLE TWEG
+D266;D266;1110 1170 11A9;D266;1110 1170 11A9; # (퉦; 퉦; á„ᅰᆩ; 퉦; á„ᅰᆩ; ) HANGUL SYLLABLE TWEGG
+D267;D267;1110 1170 11AA;D267;1110 1170 11AA; # (퉧; 퉧; á„ᅰᆪ; 퉧; á„ᅰᆪ; ) HANGUL SYLLABLE TWEGS
+D268;D268;1110 1170 11AB;D268;1110 1170 11AB; # (퉨; 퉨; á„ᅰᆫ; 퉨; á„ᅰᆫ; ) HANGUL SYLLABLE TWEN
+D269;D269;1110 1170 11AC;D269;1110 1170 11AC; # (퉩; 퉩; á„ᅰᆬ; 퉩; á„ᅰᆬ; ) HANGUL SYLLABLE TWENJ
+D26A;D26A;1110 1170 11AD;D26A;1110 1170 11AD; # (퉪; 퉪; á„ᅰᆭ; 퉪; á„ᅰᆭ; ) HANGUL SYLLABLE TWENH
+D26B;D26B;1110 1170 11AE;D26B;1110 1170 11AE; # (퉫; 퉫; á„ᅰᆮ; 퉫; á„ᅰᆮ; ) HANGUL SYLLABLE TWED
+D26C;D26C;1110 1170 11AF;D26C;1110 1170 11AF; # (퉬; 퉬; á„ᅰᆯ; 퉬; á„ᅰᆯ; ) HANGUL SYLLABLE TWEL
+D26D;D26D;1110 1170 11B0;D26D;1110 1170 11B0; # (퉭; 퉭; á„ᅰᆰ; 퉭; á„ᅰᆰ; ) HANGUL SYLLABLE TWELG
+D26E;D26E;1110 1170 11B1;D26E;1110 1170 11B1; # (퉮; 퉮; á„ᅰᆱ; 퉮; á„ᅰᆱ; ) HANGUL SYLLABLE TWELM
+D26F;D26F;1110 1170 11B2;D26F;1110 1170 11B2; # (퉯; 퉯; á„ᅰᆲ; 퉯; á„ᅰᆲ; ) HANGUL SYLLABLE TWELB
+D270;D270;1110 1170 11B3;D270;1110 1170 11B3; # (퉰; 퉰; á„ᅰᆳ; 퉰; á„ᅰᆳ; ) HANGUL SYLLABLE TWELS
+D271;D271;1110 1170 11B4;D271;1110 1170 11B4; # (퉱; 퉱; á„ᅰᆴ; 퉱; á„ᅰᆴ; ) HANGUL SYLLABLE TWELT
+D272;D272;1110 1170 11B5;D272;1110 1170 11B5; # (퉲; 퉲; á„ᅰᆵ; 퉲; á„ᅰᆵ; ) HANGUL SYLLABLE TWELP
+D273;D273;1110 1170 11B6;D273;1110 1170 11B6; # (퉳; 퉳; á„ᅰᆶ; 퉳; á„ᅰᆶ; ) HANGUL SYLLABLE TWELH
+D274;D274;1110 1170 11B7;D274;1110 1170 11B7; # (퉴; 퉴; á„ᅰᆷ; 퉴; á„ᅰᆷ; ) HANGUL SYLLABLE TWEM
+D275;D275;1110 1170 11B8;D275;1110 1170 11B8; # (퉵; 퉵; á„ᅰᆸ; 퉵; á„ᅰᆸ; ) HANGUL SYLLABLE TWEB
+D276;D276;1110 1170 11B9;D276;1110 1170 11B9; # (퉶; 퉶; á„ᅰᆹ; 퉶; á„ᅰᆹ; ) HANGUL SYLLABLE TWEBS
+D277;D277;1110 1170 11BA;D277;1110 1170 11BA; # (퉷; 퉷; á„ᅰᆺ; 퉷; á„ᅰᆺ; ) HANGUL SYLLABLE TWES
+D278;D278;1110 1170 11BB;D278;1110 1170 11BB; # (퉸; 퉸; á„ᅰᆻ; 퉸; á„ᅰᆻ; ) HANGUL SYLLABLE TWESS
+D279;D279;1110 1170 11BC;D279;1110 1170 11BC; # (퉹; 퉹; á„ᅰᆼ; 퉹; á„ᅰᆼ; ) HANGUL SYLLABLE TWENG
+D27A;D27A;1110 1170 11BD;D27A;1110 1170 11BD; # (퉺; 퉺; á„ᅰᆽ; 퉺; á„ᅰᆽ; ) HANGUL SYLLABLE TWEJ
+D27B;D27B;1110 1170 11BE;D27B;1110 1170 11BE; # (퉻; 퉻; á„ᅰᆾ; 퉻; á„ᅰᆾ; ) HANGUL SYLLABLE TWEC
+D27C;D27C;1110 1170 11BF;D27C;1110 1170 11BF; # (퉼; 퉼; á„ᅰᆿ; 퉼; á„ᅰᆿ; ) HANGUL SYLLABLE TWEK
+D27D;D27D;1110 1170 11C0;D27D;1110 1170 11C0; # (퉽; 퉽; á„ᅰᇀ; 퉽; á„ᅰᇀ; ) HANGUL SYLLABLE TWET
+D27E;D27E;1110 1170 11C1;D27E;1110 1170 11C1; # (퉾; 퉾; á„á…°á‡; 퉾; á„á…°á‡; ) HANGUL SYLLABLE TWEP
+D27F;D27F;1110 1170 11C2;D27F;1110 1170 11C2; # (퉿; 퉿; á„ᅰᇂ; 퉿; á„ᅰᇂ; ) HANGUL SYLLABLE TWEH
+D280;D280;1110 1171;D280;1110 1171; # (튀; 튀; á„á…±; 튀; á„á…±; ) HANGUL SYLLABLE TWI
+D281;D281;1110 1171 11A8;D281;1110 1171 11A8; # (íŠ; íŠ; á„ᅱᆨ; íŠ; á„ᅱᆨ; ) HANGUL SYLLABLE TWIG
+D282;D282;1110 1171 11A9;D282;1110 1171 11A9; # (튂; 튂; á„ᅱᆩ; 튂; á„ᅱᆩ; ) HANGUL SYLLABLE TWIGG
+D283;D283;1110 1171 11AA;D283;1110 1171 11AA; # (튃; 튃; á„ᅱᆪ; 튃; á„ᅱᆪ; ) HANGUL SYLLABLE TWIGS
+D284;D284;1110 1171 11AB;D284;1110 1171 11AB; # (튄; 튄; á„ᅱᆫ; 튄; á„ᅱᆫ; ) HANGUL SYLLABLE TWIN
+D285;D285;1110 1171 11AC;D285;1110 1171 11AC; # (튅; 튅; á„ᅱᆬ; 튅; á„ᅱᆬ; ) HANGUL SYLLABLE TWINJ
+D286;D286;1110 1171 11AD;D286;1110 1171 11AD; # (튆; 튆; á„ᅱᆭ; 튆; á„ᅱᆭ; ) HANGUL SYLLABLE TWINH
+D287;D287;1110 1171 11AE;D287;1110 1171 11AE; # (튇; 튇; á„ᅱᆮ; 튇; á„ᅱᆮ; ) HANGUL SYLLABLE TWID
+D288;D288;1110 1171 11AF;D288;1110 1171 11AF; # (튈; 튈; á„ᅱᆯ; 튈; á„ᅱᆯ; ) HANGUL SYLLABLE TWIL
+D289;D289;1110 1171 11B0;D289;1110 1171 11B0; # (튉; 튉; á„ᅱᆰ; 튉; á„ᅱᆰ; ) HANGUL SYLLABLE TWILG
+D28A;D28A;1110 1171 11B1;D28A;1110 1171 11B1; # (튊; 튊; á„ᅱᆱ; 튊; á„ᅱᆱ; ) HANGUL SYLLABLE TWILM
+D28B;D28B;1110 1171 11B2;D28B;1110 1171 11B2; # (튋; 튋; á„ᅱᆲ; 튋; á„ᅱᆲ; ) HANGUL SYLLABLE TWILB
+D28C;D28C;1110 1171 11B3;D28C;1110 1171 11B3; # (튌; 튌; á„ᅱᆳ; 튌; á„ᅱᆳ; ) HANGUL SYLLABLE TWILS
+D28D;D28D;1110 1171 11B4;D28D;1110 1171 11B4; # (íŠ; íŠ; á„ᅱᆴ; íŠ; á„ᅱᆴ; ) HANGUL SYLLABLE TWILT
+D28E;D28E;1110 1171 11B5;D28E;1110 1171 11B5; # (튎; 튎; á„ᅱᆵ; 튎; á„ᅱᆵ; ) HANGUL SYLLABLE TWILP
+D28F;D28F;1110 1171 11B6;D28F;1110 1171 11B6; # (íŠ; íŠ; á„ᅱᆶ; íŠ; á„ᅱᆶ; ) HANGUL SYLLABLE TWILH
+D290;D290;1110 1171 11B7;D290;1110 1171 11B7; # (íŠ; íŠ; á„ᅱᆷ; íŠ; á„ᅱᆷ; ) HANGUL SYLLABLE TWIM
+D291;D291;1110 1171 11B8;D291;1110 1171 11B8; # (튑; 튑; á„ᅱᆸ; 튑; á„ᅱᆸ; ) HANGUL SYLLABLE TWIB
+D292;D292;1110 1171 11B9;D292;1110 1171 11B9; # (튒; 튒; á„ᅱᆹ; 튒; á„ᅱᆹ; ) HANGUL SYLLABLE TWIBS
+D293;D293;1110 1171 11BA;D293;1110 1171 11BA; # (튓; 튓; á„ᅱᆺ; 튓; á„ᅱᆺ; ) HANGUL SYLLABLE TWIS
+D294;D294;1110 1171 11BB;D294;1110 1171 11BB; # (튔; 튔; á„ᅱᆻ; 튔; á„ᅱᆻ; ) HANGUL SYLLABLE TWISS
+D295;D295;1110 1171 11BC;D295;1110 1171 11BC; # (튕; 튕; á„ᅱᆼ; 튕; á„ᅱᆼ; ) HANGUL SYLLABLE TWING
+D296;D296;1110 1171 11BD;D296;1110 1171 11BD; # (튖; 튖; á„ᅱᆽ; 튖; á„ᅱᆽ; ) HANGUL SYLLABLE TWIJ
+D297;D297;1110 1171 11BE;D297;1110 1171 11BE; # (튗; 튗; á„ᅱᆾ; 튗; á„ᅱᆾ; ) HANGUL SYLLABLE TWIC
+D298;D298;1110 1171 11BF;D298;1110 1171 11BF; # (튘; 튘; á„ᅱᆿ; 튘; á„ᅱᆿ; ) HANGUL SYLLABLE TWIK
+D299;D299;1110 1171 11C0;D299;1110 1171 11C0; # (튙; 튙; á„ᅱᇀ; 튙; á„ᅱᇀ; ) HANGUL SYLLABLE TWIT
+D29A;D29A;1110 1171 11C1;D29A;1110 1171 11C1; # (튚; 튚; á„á…±á‡; 튚; á„á…±á‡; ) HANGUL SYLLABLE TWIP
+D29B;D29B;1110 1171 11C2;D29B;1110 1171 11C2; # (튛; 튛; á„ᅱᇂ; 튛; á„ᅱᇂ; ) HANGUL SYLLABLE TWIH
+D29C;D29C;1110 1172;D29C;1110 1172; # (튜; 튜; á„á…²; 튜; á„á…²; ) HANGUL SYLLABLE TYU
+D29D;D29D;1110 1172 11A8;D29D;1110 1172 11A8; # (íŠ; íŠ; á„ᅲᆨ; íŠ; á„ᅲᆨ; ) HANGUL SYLLABLE TYUG
+D29E;D29E;1110 1172 11A9;D29E;1110 1172 11A9; # (튞; 튞; á„ᅲᆩ; 튞; á„ᅲᆩ; ) HANGUL SYLLABLE TYUGG
+D29F;D29F;1110 1172 11AA;D29F;1110 1172 11AA; # (튟; 튟; á„ᅲᆪ; 튟; á„ᅲᆪ; ) HANGUL SYLLABLE TYUGS
+D2A0;D2A0;1110 1172 11AB;D2A0;1110 1172 11AB; # (튠; 튠; á„ᅲᆫ; 튠; á„ᅲᆫ; ) HANGUL SYLLABLE TYUN
+D2A1;D2A1;1110 1172 11AC;D2A1;1110 1172 11AC; # (튡; 튡; á„ᅲᆬ; 튡; á„ᅲᆬ; ) HANGUL SYLLABLE TYUNJ
+D2A2;D2A2;1110 1172 11AD;D2A2;1110 1172 11AD; # (튢; 튢; á„ᅲᆭ; 튢; á„ᅲᆭ; ) HANGUL SYLLABLE TYUNH
+D2A3;D2A3;1110 1172 11AE;D2A3;1110 1172 11AE; # (튣; 튣; á„ᅲᆮ; 튣; á„ᅲᆮ; ) HANGUL SYLLABLE TYUD
+D2A4;D2A4;1110 1172 11AF;D2A4;1110 1172 11AF; # (튤; 튤; á„ᅲᆯ; 튤; á„ᅲᆯ; ) HANGUL SYLLABLE TYUL
+D2A5;D2A5;1110 1172 11B0;D2A5;1110 1172 11B0; # (튥; 튥; á„ᅲᆰ; 튥; á„ᅲᆰ; ) HANGUL SYLLABLE TYULG
+D2A6;D2A6;1110 1172 11B1;D2A6;1110 1172 11B1; # (튦; 튦; á„ᅲᆱ; 튦; á„ᅲᆱ; ) HANGUL SYLLABLE TYULM
+D2A7;D2A7;1110 1172 11B2;D2A7;1110 1172 11B2; # (튧; 튧; á„ᅲᆲ; 튧; á„ᅲᆲ; ) HANGUL SYLLABLE TYULB
+D2A8;D2A8;1110 1172 11B3;D2A8;1110 1172 11B3; # (튨; 튨; á„ᅲᆳ; 튨; á„ᅲᆳ; ) HANGUL SYLLABLE TYULS
+D2A9;D2A9;1110 1172 11B4;D2A9;1110 1172 11B4; # (튩; 튩; á„ᅲᆴ; 튩; á„ᅲᆴ; ) HANGUL SYLLABLE TYULT
+D2AA;D2AA;1110 1172 11B5;D2AA;1110 1172 11B5; # (튪; 튪; á„ᅲᆵ; 튪; á„ᅲᆵ; ) HANGUL SYLLABLE TYULP
+D2AB;D2AB;1110 1172 11B6;D2AB;1110 1172 11B6; # (튫; 튫; á„ᅲᆶ; 튫; á„ᅲᆶ; ) HANGUL SYLLABLE TYULH
+D2AC;D2AC;1110 1172 11B7;D2AC;1110 1172 11B7; # (튬; 튬; á„ᅲᆷ; 튬; á„ᅲᆷ; ) HANGUL SYLLABLE TYUM
+D2AD;D2AD;1110 1172 11B8;D2AD;1110 1172 11B8; # (튭; 튭; á„ᅲᆸ; 튭; á„ᅲᆸ; ) HANGUL SYLLABLE TYUB
+D2AE;D2AE;1110 1172 11B9;D2AE;1110 1172 11B9; # (튮; 튮; á„ᅲᆹ; 튮; á„ᅲᆹ; ) HANGUL SYLLABLE TYUBS
+D2AF;D2AF;1110 1172 11BA;D2AF;1110 1172 11BA; # (튯; 튯; á„ᅲᆺ; 튯; á„ᅲᆺ; ) HANGUL SYLLABLE TYUS
+D2B0;D2B0;1110 1172 11BB;D2B0;1110 1172 11BB; # (튰; 튰; á„ᅲᆻ; 튰; á„ᅲᆻ; ) HANGUL SYLLABLE TYUSS
+D2B1;D2B1;1110 1172 11BC;D2B1;1110 1172 11BC; # (튱; 튱; á„ᅲᆼ; 튱; á„ᅲᆼ; ) HANGUL SYLLABLE TYUNG
+D2B2;D2B2;1110 1172 11BD;D2B2;1110 1172 11BD; # (튲; 튲; á„ᅲᆽ; 튲; á„ᅲᆽ; ) HANGUL SYLLABLE TYUJ
+D2B3;D2B3;1110 1172 11BE;D2B3;1110 1172 11BE; # (튳; 튳; á„ᅲᆾ; 튳; á„ᅲᆾ; ) HANGUL SYLLABLE TYUC
+D2B4;D2B4;1110 1172 11BF;D2B4;1110 1172 11BF; # (튴; 튴; á„ᅲᆿ; 튴; á„ᅲᆿ; ) HANGUL SYLLABLE TYUK
+D2B5;D2B5;1110 1172 11C0;D2B5;1110 1172 11C0; # (튵; 튵; á„ᅲᇀ; 튵; á„ᅲᇀ; ) HANGUL SYLLABLE TYUT
+D2B6;D2B6;1110 1172 11C1;D2B6;1110 1172 11C1; # (튶; 튶; á„á…²á‡; 튶; á„á…²á‡; ) HANGUL SYLLABLE TYUP
+D2B7;D2B7;1110 1172 11C2;D2B7;1110 1172 11C2; # (튷; 튷; á„ᅲᇂ; 튷; á„ᅲᇂ; ) HANGUL SYLLABLE TYUH
+D2B8;D2B8;1110 1173;D2B8;1110 1173; # (트; 트; á„á…³; 트; á„á…³; ) HANGUL SYLLABLE TEU
+D2B9;D2B9;1110 1173 11A8;D2B9;1110 1173 11A8; # (특; 특; á„ᅳᆨ; 특; á„ᅳᆨ; ) HANGUL SYLLABLE TEUG
+D2BA;D2BA;1110 1173 11A9;D2BA;1110 1173 11A9; # (튺; 튺; á„ᅳᆩ; 튺; á„ᅳᆩ; ) HANGUL SYLLABLE TEUGG
+D2BB;D2BB;1110 1173 11AA;D2BB;1110 1173 11AA; # (튻; 튻; á„ᅳᆪ; 튻; á„ᅳᆪ; ) HANGUL SYLLABLE TEUGS
+D2BC;D2BC;1110 1173 11AB;D2BC;1110 1173 11AB; # (튼; 튼; á„ᅳᆫ; 튼; á„ᅳᆫ; ) HANGUL SYLLABLE TEUN
+D2BD;D2BD;1110 1173 11AC;D2BD;1110 1173 11AC; # (튽; 튽; á„ᅳᆬ; 튽; á„ᅳᆬ; ) HANGUL SYLLABLE TEUNJ
+D2BE;D2BE;1110 1173 11AD;D2BE;1110 1173 11AD; # (튾; 튾; á„ᅳᆭ; 튾; á„ᅳᆭ; ) HANGUL SYLLABLE TEUNH
+D2BF;D2BF;1110 1173 11AE;D2BF;1110 1173 11AE; # (튿; 튿; á„ᅳᆮ; 튿; á„ᅳᆮ; ) HANGUL SYLLABLE TEUD
+D2C0;D2C0;1110 1173 11AF;D2C0;1110 1173 11AF; # (í‹€; í‹€; á„ᅳᆯ; í‹€; á„ᅳᆯ; ) HANGUL SYLLABLE TEUL
+D2C1;D2C1;1110 1173 11B0;D2C1;1110 1173 11B0; # (í‹; í‹; á„ᅳᆰ; í‹; á„ᅳᆰ; ) HANGUL SYLLABLE TEULG
+D2C2;D2C2;1110 1173 11B1;D2C2;1110 1173 11B1; # (í‹‚; í‹‚; á„ᅳᆱ; í‹‚; á„ᅳᆱ; ) HANGUL SYLLABLE TEULM
+D2C3;D2C3;1110 1173 11B2;D2C3;1110 1173 11B2; # (틃; 틃; á„ᅳᆲ; 틃; á„ᅳᆲ; ) HANGUL SYLLABLE TEULB
+D2C4;D2C4;1110 1173 11B3;D2C4;1110 1173 11B3; # (í‹„; í‹„; á„ᅳᆳ; í‹„; á„ᅳᆳ; ) HANGUL SYLLABLE TEULS
+D2C5;D2C5;1110 1173 11B4;D2C5;1110 1173 11B4; # (í‹…; í‹…; á„ᅳᆴ; í‹…; á„ᅳᆴ; ) HANGUL SYLLABLE TEULT
+D2C6;D2C6;1110 1173 11B5;D2C6;1110 1173 11B5; # (틆; 틆; á„ᅳᆵ; 틆; á„ᅳᆵ; ) HANGUL SYLLABLE TEULP
+D2C7;D2C7;1110 1173 11B6;D2C7;1110 1173 11B6; # (틇; 틇; á„ᅳᆶ; 틇; á„ᅳᆶ; ) HANGUL SYLLABLE TEULH
+D2C8;D2C8;1110 1173 11B7;D2C8;1110 1173 11B7; # (틈; 틈; á„ᅳᆷ; 틈; á„ᅳᆷ; ) HANGUL SYLLABLE TEUM
+D2C9;D2C9;1110 1173 11B8;D2C9;1110 1173 11B8; # (틉; 틉; á„ᅳᆸ; 틉; á„ᅳᆸ; ) HANGUL SYLLABLE TEUB
+D2CA;D2CA;1110 1173 11B9;D2CA;1110 1173 11B9; # (í‹Š; í‹Š; á„ᅳᆹ; í‹Š; á„ᅳᆹ; ) HANGUL SYLLABLE TEUBS
+D2CB;D2CB;1110 1173 11BA;D2CB;1110 1173 11BA; # (í‹‹; í‹‹; á„ᅳᆺ; í‹‹; á„ᅳᆺ; ) HANGUL SYLLABLE TEUS
+D2CC;D2CC;1110 1173 11BB;D2CC;1110 1173 11BB; # (í‹Œ; í‹Œ; á„ᅳᆻ; í‹Œ; á„ᅳᆻ; ) HANGUL SYLLABLE TEUSS
+D2CD;D2CD;1110 1173 11BC;D2CD;1110 1173 11BC; # (í‹; í‹; á„ᅳᆼ; í‹; á„ᅳᆼ; ) HANGUL SYLLABLE TEUNG
+D2CE;D2CE;1110 1173 11BD;D2CE;1110 1173 11BD; # (í‹Ž; í‹Ž; á„ᅳᆽ; í‹Ž; á„ᅳᆽ; ) HANGUL SYLLABLE TEUJ
+D2CF;D2CF;1110 1173 11BE;D2CF;1110 1173 11BE; # (í‹; í‹; á„ᅳᆾ; í‹; á„ᅳᆾ; ) HANGUL SYLLABLE TEUC
+D2D0;D2D0;1110 1173 11BF;D2D0;1110 1173 11BF; # (í‹; í‹; á„ᅳᆿ; í‹; á„ᅳᆿ; ) HANGUL SYLLABLE TEUK
+D2D1;D2D1;1110 1173 11C0;D2D1;1110 1173 11C0; # (í‹‘; í‹‘; á„ᅳᇀ; í‹‘; á„ᅳᇀ; ) HANGUL SYLLABLE TEUT
+D2D2;D2D2;1110 1173 11C1;D2D2;1110 1173 11C1; # (í‹’; í‹’; á„á…³á‡; í‹’; á„á…³á‡; ) HANGUL SYLLABLE TEUP
+D2D3;D2D3;1110 1173 11C2;D2D3;1110 1173 11C2; # (í‹“; í‹“; á„ᅳᇂ; í‹“; á„ᅳᇂ; ) HANGUL SYLLABLE TEUH
+D2D4;D2D4;1110 1174;D2D4;1110 1174; # (í‹”; í‹”; á„á…´; í‹”; á„á…´; ) HANGUL SYLLABLE TYI
+D2D5;D2D5;1110 1174 11A8;D2D5;1110 1174 11A8; # (í‹•; í‹•; á„ᅴᆨ; í‹•; á„ᅴᆨ; ) HANGUL SYLLABLE TYIG
+D2D6;D2D6;1110 1174 11A9;D2D6;1110 1174 11A9; # (í‹–; í‹–; á„ᅴᆩ; í‹–; á„ᅴᆩ; ) HANGUL SYLLABLE TYIGG
+D2D7;D2D7;1110 1174 11AA;D2D7;1110 1174 11AA; # (í‹—; í‹—; á„ᅴᆪ; í‹—; á„ᅴᆪ; ) HANGUL SYLLABLE TYIGS
+D2D8;D2D8;1110 1174 11AB;D2D8;1110 1174 11AB; # (틘; 틘; á„ᅴᆫ; 틘; á„ᅴᆫ; ) HANGUL SYLLABLE TYIN
+D2D9;D2D9;1110 1174 11AC;D2D9;1110 1174 11AC; # (í‹™; í‹™; á„ᅴᆬ; í‹™; á„ᅴᆬ; ) HANGUL SYLLABLE TYINJ
+D2DA;D2DA;1110 1174 11AD;D2DA;1110 1174 11AD; # (í‹š; í‹š; á„ᅴᆭ; í‹š; á„ᅴᆭ; ) HANGUL SYLLABLE TYINH
+D2DB;D2DB;1110 1174 11AE;D2DB;1110 1174 11AE; # (í‹›; í‹›; á„ᅴᆮ; í‹›; á„ᅴᆮ; ) HANGUL SYLLABLE TYID
+D2DC;D2DC;1110 1174 11AF;D2DC;1110 1174 11AF; # (í‹œ; í‹œ; á„ᅴᆯ; í‹œ; á„ᅴᆯ; ) HANGUL SYLLABLE TYIL
+D2DD;D2DD;1110 1174 11B0;D2DD;1110 1174 11B0; # (í‹; í‹; á„ᅴᆰ; í‹; á„ᅴᆰ; ) HANGUL SYLLABLE TYILG
+D2DE;D2DE;1110 1174 11B1;D2DE;1110 1174 11B1; # (í‹ž; í‹ž; á„ᅴᆱ; í‹ž; á„ᅴᆱ; ) HANGUL SYLLABLE TYILM
+D2DF;D2DF;1110 1174 11B2;D2DF;1110 1174 11B2; # (í‹Ÿ; í‹Ÿ; á„ᅴᆲ; í‹Ÿ; á„ᅴᆲ; ) HANGUL SYLLABLE TYILB
+D2E0;D2E0;1110 1174 11B3;D2E0;1110 1174 11B3; # (í‹ ; í‹ ; á„ᅴᆳ; í‹ ; á„ᅴᆳ; ) HANGUL SYLLABLE TYILS
+D2E1;D2E1;1110 1174 11B4;D2E1;1110 1174 11B4; # (í‹¡; í‹¡; á„ᅴᆴ; í‹¡; á„ᅴᆴ; ) HANGUL SYLLABLE TYILT
+D2E2;D2E2;1110 1174 11B5;D2E2;1110 1174 11B5; # (í‹¢; í‹¢; á„ᅴᆵ; í‹¢; á„ᅴᆵ; ) HANGUL SYLLABLE TYILP
+D2E3;D2E3;1110 1174 11B6;D2E3;1110 1174 11B6; # (í‹£; í‹£; á„ᅴᆶ; í‹£; á„ᅴᆶ; ) HANGUL SYLLABLE TYILH
+D2E4;D2E4;1110 1174 11B7;D2E4;1110 1174 11B7; # (틤; 틤; á„ᅴᆷ; 틤; á„ᅴᆷ; ) HANGUL SYLLABLE TYIM
+D2E5;D2E5;1110 1174 11B8;D2E5;1110 1174 11B8; # (í‹¥; í‹¥; á„ᅴᆸ; í‹¥; á„ᅴᆸ; ) HANGUL SYLLABLE TYIB
+D2E6;D2E6;1110 1174 11B9;D2E6;1110 1174 11B9; # (틦; 틦; á„ᅴᆹ; 틦; á„ᅴᆹ; ) HANGUL SYLLABLE TYIBS
+D2E7;D2E7;1110 1174 11BA;D2E7;1110 1174 11BA; # (틧; 틧; á„ᅴᆺ; 틧; á„ᅴᆺ; ) HANGUL SYLLABLE TYIS
+D2E8;D2E8;1110 1174 11BB;D2E8;1110 1174 11BB; # (틨; 틨; á„ᅴᆻ; 틨; á„ᅴᆻ; ) HANGUL SYLLABLE TYISS
+D2E9;D2E9;1110 1174 11BC;D2E9;1110 1174 11BC; # (í‹©; í‹©; á„ᅴᆼ; í‹©; á„ᅴᆼ; ) HANGUL SYLLABLE TYING
+D2EA;D2EA;1110 1174 11BD;D2EA;1110 1174 11BD; # (틪; 틪; á„ᅴᆽ; 틪; á„ᅴᆽ; ) HANGUL SYLLABLE TYIJ
+D2EB;D2EB;1110 1174 11BE;D2EB;1110 1174 11BE; # (í‹«; í‹«; á„ᅴᆾ; í‹«; á„ᅴᆾ; ) HANGUL SYLLABLE TYIC
+D2EC;D2EC;1110 1174 11BF;D2EC;1110 1174 11BF; # (틬; 틬; á„ᅴᆿ; 틬; á„ᅴᆿ; ) HANGUL SYLLABLE TYIK
+D2ED;D2ED;1110 1174 11C0;D2ED;1110 1174 11C0; # (í‹­; í‹­; á„ᅴᇀ; í‹­; á„ᅴᇀ; ) HANGUL SYLLABLE TYIT
+D2EE;D2EE;1110 1174 11C1;D2EE;1110 1174 11C1; # (í‹®; í‹®; á„á…´á‡; í‹®; á„á…´á‡; ) HANGUL SYLLABLE TYIP
+D2EF;D2EF;1110 1174 11C2;D2EF;1110 1174 11C2; # (틯; 틯; á„ᅴᇂ; 틯; á„ᅴᇂ; ) HANGUL SYLLABLE TYIH
+D2F0;D2F0;1110 1175;D2F0;1110 1175; # (í‹°; í‹°; á„á…µ; í‹°; á„á…µ; ) HANGUL SYLLABLE TI
+D2F1;D2F1;1110 1175 11A8;D2F1;1110 1175 11A8; # (틱; 틱; á„ᅵᆨ; 틱; á„ᅵᆨ; ) HANGUL SYLLABLE TIG
+D2F2;D2F2;1110 1175 11A9;D2F2;1110 1175 11A9; # (틲; 틲; á„ᅵᆩ; 틲; á„ᅵᆩ; ) HANGUL SYLLABLE TIGG
+D2F3;D2F3;1110 1175 11AA;D2F3;1110 1175 11AA; # (틳; 틳; á„ᅵᆪ; 틳; á„ᅵᆪ; ) HANGUL SYLLABLE TIGS
+D2F4;D2F4;1110 1175 11AB;D2F4;1110 1175 11AB; # (í‹´; í‹´; á„ᅵᆫ; í‹´; á„ᅵᆫ; ) HANGUL SYLLABLE TIN
+D2F5;D2F5;1110 1175 11AC;D2F5;1110 1175 11AC; # (틵; 틵; á„ᅵᆬ; 틵; á„ᅵᆬ; ) HANGUL SYLLABLE TINJ
+D2F6;D2F6;1110 1175 11AD;D2F6;1110 1175 11AD; # (틶; 틶; á„ᅵᆭ; 틶; á„ᅵᆭ; ) HANGUL SYLLABLE TINH
+D2F7;D2F7;1110 1175 11AE;D2F7;1110 1175 11AE; # (í‹·; í‹·; á„ᅵᆮ; í‹·; á„ᅵᆮ; ) HANGUL SYLLABLE TID
+D2F8;D2F8;1110 1175 11AF;D2F8;1110 1175 11AF; # (틸; 틸; á„ᅵᆯ; 틸; á„ᅵᆯ; ) HANGUL SYLLABLE TIL
+D2F9;D2F9;1110 1175 11B0;D2F9;1110 1175 11B0; # (틹; 틹; á„ᅵᆰ; 틹; á„ᅵᆰ; ) HANGUL SYLLABLE TILG
+D2FA;D2FA;1110 1175 11B1;D2FA;1110 1175 11B1; # (틺; 틺; á„ᅵᆱ; 틺; á„ᅵᆱ; ) HANGUL SYLLABLE TILM
+D2FB;D2FB;1110 1175 11B2;D2FB;1110 1175 11B2; # (í‹»; í‹»; á„ᅵᆲ; í‹»; á„ᅵᆲ; ) HANGUL SYLLABLE TILB
+D2FC;D2FC;1110 1175 11B3;D2FC;1110 1175 11B3; # (틼; 틼; á„ᅵᆳ; 틼; á„ᅵᆳ; ) HANGUL SYLLABLE TILS
+D2FD;D2FD;1110 1175 11B4;D2FD;1110 1175 11B4; # (틽; 틽; á„ᅵᆴ; 틽; á„ᅵᆴ; ) HANGUL SYLLABLE TILT
+D2FE;D2FE;1110 1175 11B5;D2FE;1110 1175 11B5; # (틾; 틾; á„ᅵᆵ; 틾; á„ᅵᆵ; ) HANGUL SYLLABLE TILP
+D2FF;D2FF;1110 1175 11B6;D2FF;1110 1175 11B6; # (í‹¿; í‹¿; á„ᅵᆶ; í‹¿; á„ᅵᆶ; ) HANGUL SYLLABLE TILH
+D300;D300;1110 1175 11B7;D300;1110 1175 11B7; # (팀; 팀; á„ᅵᆷ; 팀; á„ᅵᆷ; ) HANGUL SYLLABLE TIM
+D301;D301;1110 1175 11B8;D301;1110 1175 11B8; # (íŒ; íŒ; á„ᅵᆸ; íŒ; á„ᅵᆸ; ) HANGUL SYLLABLE TIB
+D302;D302;1110 1175 11B9;D302;1110 1175 11B9; # (팂; 팂; á„ᅵᆹ; 팂; á„ᅵᆹ; ) HANGUL SYLLABLE TIBS
+D303;D303;1110 1175 11BA;D303;1110 1175 11BA; # (팃; 팃; á„ᅵᆺ; 팃; á„ᅵᆺ; ) HANGUL SYLLABLE TIS
+D304;D304;1110 1175 11BB;D304;1110 1175 11BB; # (팄; 팄; á„ᅵᆻ; 팄; á„ᅵᆻ; ) HANGUL SYLLABLE TISS
+D305;D305;1110 1175 11BC;D305;1110 1175 11BC; # (팅; 팅; á„ᅵᆼ; 팅; á„ᅵᆼ; ) HANGUL SYLLABLE TING
+D306;D306;1110 1175 11BD;D306;1110 1175 11BD; # (팆; 팆; á„ᅵᆽ; 팆; á„ᅵᆽ; ) HANGUL SYLLABLE TIJ
+D307;D307;1110 1175 11BE;D307;1110 1175 11BE; # (팇; 팇; á„ᅵᆾ; 팇; á„ᅵᆾ; ) HANGUL SYLLABLE TIC
+D308;D308;1110 1175 11BF;D308;1110 1175 11BF; # (팈; 팈; á„ᅵᆿ; 팈; á„ᅵᆿ; ) HANGUL SYLLABLE TIK
+D309;D309;1110 1175 11C0;D309;1110 1175 11C0; # (팉; 팉; á„ᅵᇀ; 팉; á„ᅵᇀ; ) HANGUL SYLLABLE TIT
+D30A;D30A;1110 1175 11C1;D30A;1110 1175 11C1; # (팊; 팊; á„á…µá‡; 팊; á„á…µá‡; ) HANGUL SYLLABLE TIP
+D30B;D30B;1110 1175 11C2;D30B;1110 1175 11C2; # (팋; 팋; á„ᅵᇂ; 팋; á„ᅵᇂ; ) HANGUL SYLLABLE TIH
+D30C;D30C;1111 1161;D30C;1111 1161; # (파; 파; 파; 파; 파; ) HANGUL SYLLABLE PA
+D30D;D30D;1111 1161 11A8;D30D;1111 1161 11A8; # (íŒ; íŒ; 팍; íŒ; 팍; ) HANGUL SYLLABLE PAG
+D30E;D30E;1111 1161 11A9;D30E;1111 1161 11A9; # (팎; 팎; 팎; 팎; 팎; ) HANGUL SYLLABLE PAGG
+D30F;D30F;1111 1161 11AA;D30F;1111 1161 11AA; # (íŒ; íŒ; 팏; íŒ; 팏; ) HANGUL SYLLABLE PAGS
+D310;D310;1111 1161 11AB;D310;1111 1161 11AB; # (íŒ; íŒ; 판; íŒ; 판; ) HANGUL SYLLABLE PAN
+D311;D311;1111 1161 11AC;D311;1111 1161 11AC; # (팑; 팑; 팑; 팑; 팑; ) HANGUL SYLLABLE PANJ
+D312;D312;1111 1161 11AD;D312;1111 1161 11AD; # (팒; 팒; 팒; 팒; 팒; ) HANGUL SYLLABLE PANH
+D313;D313;1111 1161 11AE;D313;1111 1161 11AE; # (팓; 팓; 팓; 팓; 팓; ) HANGUL SYLLABLE PAD
+D314;D314;1111 1161 11AF;D314;1111 1161 11AF; # (팔; 팔; 팔; 팔; 팔; ) HANGUL SYLLABLE PAL
+D315;D315;1111 1161 11B0;D315;1111 1161 11B0; # (팕; 팕; 팕; 팕; 팕; ) HANGUL SYLLABLE PALG
+D316;D316;1111 1161 11B1;D316;1111 1161 11B1; # (팖; 팖; 팖; 팖; 팖; ) HANGUL SYLLABLE PALM
+D317;D317;1111 1161 11B2;D317;1111 1161 11B2; # (팗; 팗; 팗; 팗; 팗; ) HANGUL SYLLABLE PALB
+D318;D318;1111 1161 11B3;D318;1111 1161 11B3; # (팘; 팘; 팘; 팘; 팘; ) HANGUL SYLLABLE PALS
+D319;D319;1111 1161 11B4;D319;1111 1161 11B4; # (팙; 팙; 팙; 팙; 팙; ) HANGUL SYLLABLE PALT
+D31A;D31A;1111 1161 11B5;D31A;1111 1161 11B5; # (팚; 팚; 팚; 팚; 팚; ) HANGUL SYLLABLE PALP
+D31B;D31B;1111 1161 11B6;D31B;1111 1161 11B6; # (팛; 팛; 팛; 팛; 팛; ) HANGUL SYLLABLE PALH
+D31C;D31C;1111 1161 11B7;D31C;1111 1161 11B7; # (팜; 팜; 팜; 팜; 팜; ) HANGUL SYLLABLE PAM
+D31D;D31D;1111 1161 11B8;D31D;1111 1161 11B8; # (íŒ; íŒ; 팝; íŒ; 팝; ) HANGUL SYLLABLE PAB
+D31E;D31E;1111 1161 11B9;D31E;1111 1161 11B9; # (팞; 팞; 팞; 팞; 팞; ) HANGUL SYLLABLE PABS
+D31F;D31F;1111 1161 11BA;D31F;1111 1161 11BA; # (팟; 팟; 팟; 팟; 팟; ) HANGUL SYLLABLE PAS
+D320;D320;1111 1161 11BB;D320;1111 1161 11BB; # (팠; 팠; 팠; 팠; 팠; ) HANGUL SYLLABLE PASS
+D321;D321;1111 1161 11BC;D321;1111 1161 11BC; # (팡; 팡; 팡; 팡; 팡; ) HANGUL SYLLABLE PANG
+D322;D322;1111 1161 11BD;D322;1111 1161 11BD; # (팢; 팢; 팢; 팢; 팢; ) HANGUL SYLLABLE PAJ
+D323;D323;1111 1161 11BE;D323;1111 1161 11BE; # (팣; 팣; 팣; 팣; 팣; ) HANGUL SYLLABLE PAC
+D324;D324;1111 1161 11BF;D324;1111 1161 11BF; # (팤; 팤; 팤; 팤; 팤; ) HANGUL SYLLABLE PAK
+D325;D325;1111 1161 11C0;D325;1111 1161 11C0; # (팥; 팥; 팥; 팥; 팥; ) HANGUL SYLLABLE PAT
+D326;D326;1111 1161 11C1;D326;1111 1161 11C1; # (팦; 팦; á„‘á…¡á‡; 팦; á„‘á…¡á‡; ) HANGUL SYLLABLE PAP
+D327;D327;1111 1161 11C2;D327;1111 1161 11C2; # (팧; 팧; 팧; 팧; 팧; ) HANGUL SYLLABLE PAH
+D328;D328;1111 1162;D328;1111 1162; # (패; 패; 패; 패; 패; ) HANGUL SYLLABLE PAE
+D329;D329;1111 1162 11A8;D329;1111 1162 11A8; # (팩; 팩; 팩; 팩; 팩; ) HANGUL SYLLABLE PAEG
+D32A;D32A;1111 1162 11A9;D32A;1111 1162 11A9; # (팪; 팪; 팪; 팪; 팪; ) HANGUL SYLLABLE PAEGG
+D32B;D32B;1111 1162 11AA;D32B;1111 1162 11AA; # (팫; 팫; 팫; 팫; 팫; ) HANGUL SYLLABLE PAEGS
+D32C;D32C;1111 1162 11AB;D32C;1111 1162 11AB; # (팬; 팬; 팬; 팬; 팬; ) HANGUL SYLLABLE PAEN
+D32D;D32D;1111 1162 11AC;D32D;1111 1162 11AC; # (팭; 팭; 팭; 팭; 팭; ) HANGUL SYLLABLE PAENJ
+D32E;D32E;1111 1162 11AD;D32E;1111 1162 11AD; # (팮; 팮; 팮; 팮; 팮; ) HANGUL SYLLABLE PAENH
+D32F;D32F;1111 1162 11AE;D32F;1111 1162 11AE; # (팯; 팯; 팯; 팯; 팯; ) HANGUL SYLLABLE PAED
+D330;D330;1111 1162 11AF;D330;1111 1162 11AF; # (팰; 팰; 팰; 팰; 팰; ) HANGUL SYLLABLE PAEL
+D331;D331;1111 1162 11B0;D331;1111 1162 11B0; # (팱; 팱; 팱; 팱; 팱; ) HANGUL SYLLABLE PAELG
+D332;D332;1111 1162 11B1;D332;1111 1162 11B1; # (팲; 팲; 팲; 팲; 팲; ) HANGUL SYLLABLE PAELM
+D333;D333;1111 1162 11B2;D333;1111 1162 11B2; # (팳; 팳; 팳; 팳; 팳; ) HANGUL SYLLABLE PAELB
+D334;D334;1111 1162 11B3;D334;1111 1162 11B3; # (팴; 팴; 팴; 팴; 팴; ) HANGUL SYLLABLE PAELS
+D335;D335;1111 1162 11B4;D335;1111 1162 11B4; # (팵; 팵; 팵; 팵; 팵; ) HANGUL SYLLABLE PAELT
+D336;D336;1111 1162 11B5;D336;1111 1162 11B5; # (팶; 팶; 팶; 팶; 팶; ) HANGUL SYLLABLE PAELP
+D337;D337;1111 1162 11B6;D337;1111 1162 11B6; # (팷; 팷; 팷; 팷; 팷; ) HANGUL SYLLABLE PAELH
+D338;D338;1111 1162 11B7;D338;1111 1162 11B7; # (팸; 팸; 팸; 팸; 팸; ) HANGUL SYLLABLE PAEM
+D339;D339;1111 1162 11B8;D339;1111 1162 11B8; # (팹; 팹; 팹; 팹; 팹; ) HANGUL SYLLABLE PAEB
+D33A;D33A;1111 1162 11B9;D33A;1111 1162 11B9; # (팺; 팺; 팺; 팺; 팺; ) HANGUL SYLLABLE PAEBS
+D33B;D33B;1111 1162 11BA;D33B;1111 1162 11BA; # (팻; 팻; 팻; 팻; 팻; ) HANGUL SYLLABLE PAES
+D33C;D33C;1111 1162 11BB;D33C;1111 1162 11BB; # (팼; 팼; 팼; 팼; 팼; ) HANGUL SYLLABLE PAESS
+D33D;D33D;1111 1162 11BC;D33D;1111 1162 11BC; # (팽; 팽; 팽; 팽; 팽; ) HANGUL SYLLABLE PAENG
+D33E;D33E;1111 1162 11BD;D33E;1111 1162 11BD; # (팾; 팾; 팾; 팾; 팾; ) HANGUL SYLLABLE PAEJ
+D33F;D33F;1111 1162 11BE;D33F;1111 1162 11BE; # (팿; 팿; 팿; 팿; 팿; ) HANGUL SYLLABLE PAEC
+D340;D340;1111 1162 11BF;D340;1111 1162 11BF; # (í€; í€; 퍀; í€; 퍀; ) HANGUL SYLLABLE PAEK
+D341;D341;1111 1162 11C0;D341;1111 1162 11C0; # (í; í; 퍁; í; 퍁; ) HANGUL SYLLABLE PAET
+D342;D342;1111 1162 11C1;D342;1111 1162 11C1; # (í‚; í‚; á„‘á…¢á‡; í‚; á„‘á…¢á‡; ) HANGUL SYLLABLE PAEP
+D343;D343;1111 1162 11C2;D343;1111 1162 11C2; # (íƒ; íƒ; 퍃; íƒ; 퍃; ) HANGUL SYLLABLE PAEH
+D344;D344;1111 1163;D344;1111 1163; # (í„; í„; á„‘á…£; í„; á„‘á…£; ) HANGUL SYLLABLE PYA
+D345;D345;1111 1163 11A8;D345;1111 1163 11A8; # (í…; í…; 퍅; í…; 퍅; ) HANGUL SYLLABLE PYAG
+D346;D346;1111 1163 11A9;D346;1111 1163 11A9; # (í†; í†; 퍆; í†; 퍆; ) HANGUL SYLLABLE PYAGG
+D347;D347;1111 1163 11AA;D347;1111 1163 11AA; # (í‡; í‡; 퍇; í‡; 퍇; ) HANGUL SYLLABLE PYAGS
+D348;D348;1111 1163 11AB;D348;1111 1163 11AB; # (íˆ; íˆ; 퍈; íˆ; 퍈; ) HANGUL SYLLABLE PYAN
+D349;D349;1111 1163 11AC;D349;1111 1163 11AC; # (í‰; í‰; 퍉; í‰; 퍉; ) HANGUL SYLLABLE PYANJ
+D34A;D34A;1111 1163 11AD;D34A;1111 1163 11AD; # (íŠ; íŠ; 퍊; íŠ; 퍊; ) HANGUL SYLLABLE PYANH
+D34B;D34B;1111 1163 11AE;D34B;1111 1163 11AE; # (í‹; í‹; 퍋; í‹; 퍋; ) HANGUL SYLLABLE PYAD
+D34C;D34C;1111 1163 11AF;D34C;1111 1163 11AF; # (íŒ; íŒ; 퍌; íŒ; 퍌; ) HANGUL SYLLABLE PYAL
+D34D;D34D;1111 1163 11B0;D34D;1111 1163 11B0; # (í; í; 퍍; í; 퍍; ) HANGUL SYLLABLE PYALG
+D34E;D34E;1111 1163 11B1;D34E;1111 1163 11B1; # (íŽ; íŽ; 퍎; íŽ; 퍎; ) HANGUL SYLLABLE PYALM
+D34F;D34F;1111 1163 11B2;D34F;1111 1163 11B2; # (í; í; 퍏; í; 퍏; ) HANGUL SYLLABLE PYALB
+D350;D350;1111 1163 11B3;D350;1111 1163 11B3; # (í; í; 퍐; í; 퍐; ) HANGUL SYLLABLE PYALS
+D351;D351;1111 1163 11B4;D351;1111 1163 11B4; # (í‘; í‘; 퍑; í‘; 퍑; ) HANGUL SYLLABLE PYALT
+D352;D352;1111 1163 11B5;D352;1111 1163 11B5; # (í’; í’; 퍒; í’; 퍒; ) HANGUL SYLLABLE PYALP
+D353;D353;1111 1163 11B6;D353;1111 1163 11B6; # (í“; í“; 퍓; í“; 퍓; ) HANGUL SYLLABLE PYALH
+D354;D354;1111 1163 11B7;D354;1111 1163 11B7; # (í”; í”; 퍔; í”; 퍔; ) HANGUL SYLLABLE PYAM
+D355;D355;1111 1163 11B8;D355;1111 1163 11B8; # (í•; í•; 퍕; í•; 퍕; ) HANGUL SYLLABLE PYAB
+D356;D356;1111 1163 11B9;D356;1111 1163 11B9; # (í–; í–; 퍖; í–; 퍖; ) HANGUL SYLLABLE PYABS
+D357;D357;1111 1163 11BA;D357;1111 1163 11BA; # (í—; í—; 퍗; í—; 퍗; ) HANGUL SYLLABLE PYAS
+D358;D358;1111 1163 11BB;D358;1111 1163 11BB; # (í˜; í˜; 퍘; í˜; 퍘; ) HANGUL SYLLABLE PYASS
+D359;D359;1111 1163 11BC;D359;1111 1163 11BC; # (í™; í™; 퍙; í™; 퍙; ) HANGUL SYLLABLE PYANG
+D35A;D35A;1111 1163 11BD;D35A;1111 1163 11BD; # (íš; íš; 퍚; íš; 퍚; ) HANGUL SYLLABLE PYAJ
+D35B;D35B;1111 1163 11BE;D35B;1111 1163 11BE; # (í›; í›; 퍛; í›; 퍛; ) HANGUL SYLLABLE PYAC
+D35C;D35C;1111 1163 11BF;D35C;1111 1163 11BF; # (íœ; íœ; 퍜; íœ; 퍜; ) HANGUL SYLLABLE PYAK
+D35D;D35D;1111 1163 11C0;D35D;1111 1163 11C0; # (í; í; 퍝; í; 퍝; ) HANGUL SYLLABLE PYAT
+D35E;D35E;1111 1163 11C1;D35E;1111 1163 11C1; # (íž; íž; á„‘á…£á‡; íž; á„‘á…£á‡; ) HANGUL SYLLABLE PYAP
+D35F;D35F;1111 1163 11C2;D35F;1111 1163 11C2; # (íŸ; íŸ; 퍟; íŸ; 퍟; ) HANGUL SYLLABLE PYAH
+D360;D360;1111 1164;D360;1111 1164; # (í ; í ; á„‘á…¤; í ; á„‘á…¤; ) HANGUL SYLLABLE PYAE
+D361;D361;1111 1164 11A8;D361;1111 1164 11A8; # (í¡; í¡; 퍡; í¡; 퍡; ) HANGUL SYLLABLE PYAEG
+D362;D362;1111 1164 11A9;D362;1111 1164 11A9; # (í¢; í¢; 퍢; í¢; 퍢; ) HANGUL SYLLABLE PYAEGG
+D363;D363;1111 1164 11AA;D363;1111 1164 11AA; # (í£; í£; 퍣; í£; 퍣; ) HANGUL SYLLABLE PYAEGS
+D364;D364;1111 1164 11AB;D364;1111 1164 11AB; # (í¤; í¤; 퍤; í¤; 퍤; ) HANGUL SYLLABLE PYAEN
+D365;D365;1111 1164 11AC;D365;1111 1164 11AC; # (í¥; í¥; 퍥; í¥; 퍥; ) HANGUL SYLLABLE PYAENJ
+D366;D366;1111 1164 11AD;D366;1111 1164 11AD; # (í¦; í¦; 퍦; í¦; 퍦; ) HANGUL SYLLABLE PYAENH
+D367;D367;1111 1164 11AE;D367;1111 1164 11AE; # (í§; í§; 퍧; í§; 퍧; ) HANGUL SYLLABLE PYAED
+D368;D368;1111 1164 11AF;D368;1111 1164 11AF; # (í¨; í¨; 퍨; í¨; 퍨; ) HANGUL SYLLABLE PYAEL
+D369;D369;1111 1164 11B0;D369;1111 1164 11B0; # (í©; í©; 퍩; í©; 퍩; ) HANGUL SYLLABLE PYAELG
+D36A;D36A;1111 1164 11B1;D36A;1111 1164 11B1; # (íª; íª; 퍪; íª; 퍪; ) HANGUL SYLLABLE PYAELM
+D36B;D36B;1111 1164 11B2;D36B;1111 1164 11B2; # (í«; í«; 퍫; í«; 퍫; ) HANGUL SYLLABLE PYAELB
+D36C;D36C;1111 1164 11B3;D36C;1111 1164 11B3; # (í¬; í¬; 퍬; í¬; 퍬; ) HANGUL SYLLABLE PYAELS
+D36D;D36D;1111 1164 11B4;D36D;1111 1164 11B4; # (í­; í­; 퍭; í­; 퍭; ) HANGUL SYLLABLE PYAELT
+D36E;D36E;1111 1164 11B5;D36E;1111 1164 11B5; # (í®; í®; 퍮; í®; 퍮; ) HANGUL SYLLABLE PYAELP
+D36F;D36F;1111 1164 11B6;D36F;1111 1164 11B6; # (í¯; í¯; 퍯; í¯; 퍯; ) HANGUL SYLLABLE PYAELH
+D370;D370;1111 1164 11B7;D370;1111 1164 11B7; # (í°; í°; 퍰; í°; 퍰; ) HANGUL SYLLABLE PYAEM
+D371;D371;1111 1164 11B8;D371;1111 1164 11B8; # (í±; í±; 퍱; í±; 퍱; ) HANGUL SYLLABLE PYAEB
+D372;D372;1111 1164 11B9;D372;1111 1164 11B9; # (í²; í²; 퍲; í²; 퍲; ) HANGUL SYLLABLE PYAEBS
+D373;D373;1111 1164 11BA;D373;1111 1164 11BA; # (í³; í³; 퍳; í³; 퍳; ) HANGUL SYLLABLE PYAES
+D374;D374;1111 1164 11BB;D374;1111 1164 11BB; # (í´; í´; 퍴; í´; 퍴; ) HANGUL SYLLABLE PYAESS
+D375;D375;1111 1164 11BC;D375;1111 1164 11BC; # (íµ; íµ; 퍵; íµ; 퍵; ) HANGUL SYLLABLE PYAENG
+D376;D376;1111 1164 11BD;D376;1111 1164 11BD; # (í¶; í¶; 퍶; í¶; 퍶; ) HANGUL SYLLABLE PYAEJ
+D377;D377;1111 1164 11BE;D377;1111 1164 11BE; # (í·; í·; 퍷; í·; 퍷; ) HANGUL SYLLABLE PYAEC
+D378;D378;1111 1164 11BF;D378;1111 1164 11BF; # (í¸; í¸; 퍸; í¸; 퍸; ) HANGUL SYLLABLE PYAEK
+D379;D379;1111 1164 11C0;D379;1111 1164 11C0; # (í¹; í¹; 퍹; í¹; 퍹; ) HANGUL SYLLABLE PYAET
+D37A;D37A;1111 1164 11C1;D37A;1111 1164 11C1; # (íº; íº; á„‘á…¤á‡; íº; á„‘á…¤á‡; ) HANGUL SYLLABLE PYAEP
+D37B;D37B;1111 1164 11C2;D37B;1111 1164 11C2; # (í»; í»; 퍻; í»; 퍻; ) HANGUL SYLLABLE PYAEH
+D37C;D37C;1111 1165;D37C;1111 1165; # (í¼; í¼; á„‘á…¥; í¼; á„‘á…¥; ) HANGUL SYLLABLE PEO
+D37D;D37D;1111 1165 11A8;D37D;1111 1165 11A8; # (í½; í½; 퍽; í½; 퍽; ) HANGUL SYLLABLE PEOG
+D37E;D37E;1111 1165 11A9;D37E;1111 1165 11A9; # (í¾; í¾; 퍾; í¾; 퍾; ) HANGUL SYLLABLE PEOGG
+D37F;D37F;1111 1165 11AA;D37F;1111 1165 11AA; # (í¿; í¿; 퍿; í¿; 퍿; ) HANGUL SYLLABLE PEOGS
+D380;D380;1111 1165 11AB;D380;1111 1165 11AB; # (펀; 펀; 펀; 펀; 펀; ) HANGUL SYLLABLE PEON
+D381;D381;1111 1165 11AC;D381;1111 1165 11AC; # (íŽ; íŽ; 펁; íŽ; 펁; ) HANGUL SYLLABLE PEONJ
+D382;D382;1111 1165 11AD;D382;1111 1165 11AD; # (펂; 펂; 펂; 펂; 펂; ) HANGUL SYLLABLE PEONH
+D383;D383;1111 1165 11AE;D383;1111 1165 11AE; # (펃; 펃; 펃; 펃; 펃; ) HANGUL SYLLABLE PEOD
+D384;D384;1111 1165 11AF;D384;1111 1165 11AF; # (펄; 펄; 펄; 펄; 펄; ) HANGUL SYLLABLE PEOL
+D385;D385;1111 1165 11B0;D385;1111 1165 11B0; # (펅; 펅; 펅; 펅; 펅; ) HANGUL SYLLABLE PEOLG
+D386;D386;1111 1165 11B1;D386;1111 1165 11B1; # (펆; 펆; 펆; 펆; 펆; ) HANGUL SYLLABLE PEOLM
+D387;D387;1111 1165 11B2;D387;1111 1165 11B2; # (펇; 펇; 펇; 펇; 펇; ) HANGUL SYLLABLE PEOLB
+D388;D388;1111 1165 11B3;D388;1111 1165 11B3; # (펈; 펈; 펈; 펈; 펈; ) HANGUL SYLLABLE PEOLS
+D389;D389;1111 1165 11B4;D389;1111 1165 11B4; # (펉; 펉; 펉; 펉; 펉; ) HANGUL SYLLABLE PEOLT
+D38A;D38A;1111 1165 11B5;D38A;1111 1165 11B5; # (펊; 펊; 펊; 펊; 펊; ) HANGUL SYLLABLE PEOLP
+D38B;D38B;1111 1165 11B6;D38B;1111 1165 11B6; # (펋; 펋; 펋; 펋; 펋; ) HANGUL SYLLABLE PEOLH
+D38C;D38C;1111 1165 11B7;D38C;1111 1165 11B7; # (펌; 펌; 펌; 펌; 펌; ) HANGUL SYLLABLE PEOM
+D38D;D38D;1111 1165 11B8;D38D;1111 1165 11B8; # (íŽ; íŽ; 펍; íŽ; 펍; ) HANGUL SYLLABLE PEOB
+D38E;D38E;1111 1165 11B9;D38E;1111 1165 11B9; # (펎; 펎; 펎; 펎; 펎; ) HANGUL SYLLABLE PEOBS
+D38F;D38F;1111 1165 11BA;D38F;1111 1165 11BA; # (íŽ; íŽ; 펏; íŽ; 펏; ) HANGUL SYLLABLE PEOS
+D390;D390;1111 1165 11BB;D390;1111 1165 11BB; # (íŽ; íŽ; 펐; íŽ; 펐; ) HANGUL SYLLABLE PEOSS
+D391;D391;1111 1165 11BC;D391;1111 1165 11BC; # (펑; 펑; 펑; 펑; 펑; ) HANGUL SYLLABLE PEONG
+D392;D392;1111 1165 11BD;D392;1111 1165 11BD; # (펒; 펒; 펒; 펒; 펒; ) HANGUL SYLLABLE PEOJ
+D393;D393;1111 1165 11BE;D393;1111 1165 11BE; # (펓; 펓; 펓; 펓; 펓; ) HANGUL SYLLABLE PEOC
+D394;D394;1111 1165 11BF;D394;1111 1165 11BF; # (펔; 펔; 펔; 펔; 펔; ) HANGUL SYLLABLE PEOK
+D395;D395;1111 1165 11C0;D395;1111 1165 11C0; # (펕; 펕; 펕; 펕; 펕; ) HANGUL SYLLABLE PEOT
+D396;D396;1111 1165 11C1;D396;1111 1165 11C1; # (펖; 펖; á„‘á…¥á‡; 펖; á„‘á…¥á‡; ) HANGUL SYLLABLE PEOP
+D397;D397;1111 1165 11C2;D397;1111 1165 11C2; # (펗; 펗; 펗; 펗; 펗; ) HANGUL SYLLABLE PEOH
+D398;D398;1111 1166;D398;1111 1166; # (페; 페; 페; 페; 페; ) HANGUL SYLLABLE PE
+D399;D399;1111 1166 11A8;D399;1111 1166 11A8; # (펙; 펙; 펙; 펙; 펙; ) HANGUL SYLLABLE PEG
+D39A;D39A;1111 1166 11A9;D39A;1111 1166 11A9; # (펚; 펚; 펚; 펚; 펚; ) HANGUL SYLLABLE PEGG
+D39B;D39B;1111 1166 11AA;D39B;1111 1166 11AA; # (펛; 펛; 펛; 펛; 펛; ) HANGUL SYLLABLE PEGS
+D39C;D39C;1111 1166 11AB;D39C;1111 1166 11AB; # (펜; 펜; 펜; 펜; 펜; ) HANGUL SYLLABLE PEN
+D39D;D39D;1111 1166 11AC;D39D;1111 1166 11AC; # (íŽ; íŽ; 펝; íŽ; 펝; ) HANGUL SYLLABLE PENJ
+D39E;D39E;1111 1166 11AD;D39E;1111 1166 11AD; # (펞; 펞; 펞; 펞; 펞; ) HANGUL SYLLABLE PENH
+D39F;D39F;1111 1166 11AE;D39F;1111 1166 11AE; # (펟; 펟; 펟; 펟; 펟; ) HANGUL SYLLABLE PED
+D3A0;D3A0;1111 1166 11AF;D3A0;1111 1166 11AF; # (펠; 펠; 펠; 펠; 펠; ) HANGUL SYLLABLE PEL
+D3A1;D3A1;1111 1166 11B0;D3A1;1111 1166 11B0; # (펡; 펡; 펡; 펡; 펡; ) HANGUL SYLLABLE PELG
+D3A2;D3A2;1111 1166 11B1;D3A2;1111 1166 11B1; # (펢; 펢; 펢; 펢; 펢; ) HANGUL SYLLABLE PELM
+D3A3;D3A3;1111 1166 11B2;D3A3;1111 1166 11B2; # (펣; 펣; 펣; 펣; 펣; ) HANGUL SYLLABLE PELB
+D3A4;D3A4;1111 1166 11B3;D3A4;1111 1166 11B3; # (펤; 펤; 펤; 펤; 펤; ) HANGUL SYLLABLE PELS
+D3A5;D3A5;1111 1166 11B4;D3A5;1111 1166 11B4; # (펥; 펥; 펥; 펥; 펥; ) HANGUL SYLLABLE PELT
+D3A6;D3A6;1111 1166 11B5;D3A6;1111 1166 11B5; # (펦; 펦; 펦; 펦; 펦; ) HANGUL SYLLABLE PELP
+D3A7;D3A7;1111 1166 11B6;D3A7;1111 1166 11B6; # (펧; 펧; 펧; 펧; 펧; ) HANGUL SYLLABLE PELH
+D3A8;D3A8;1111 1166 11B7;D3A8;1111 1166 11B7; # (펨; 펨; 펨; 펨; 펨; ) HANGUL SYLLABLE PEM
+D3A9;D3A9;1111 1166 11B8;D3A9;1111 1166 11B8; # (펩; 펩; 펩; 펩; 펩; ) HANGUL SYLLABLE PEB
+D3AA;D3AA;1111 1166 11B9;D3AA;1111 1166 11B9; # (펪; 펪; 펪; 펪; 펪; ) HANGUL SYLLABLE PEBS
+D3AB;D3AB;1111 1166 11BA;D3AB;1111 1166 11BA; # (펫; 펫; 펫; 펫; 펫; ) HANGUL SYLLABLE PES
+D3AC;D3AC;1111 1166 11BB;D3AC;1111 1166 11BB; # (펬; 펬; 펬; 펬; 펬; ) HANGUL SYLLABLE PESS
+D3AD;D3AD;1111 1166 11BC;D3AD;1111 1166 11BC; # (펭; 펭; 펭; 펭; 펭; ) HANGUL SYLLABLE PENG
+D3AE;D3AE;1111 1166 11BD;D3AE;1111 1166 11BD; # (펮; 펮; 펮; 펮; 펮; ) HANGUL SYLLABLE PEJ
+D3AF;D3AF;1111 1166 11BE;D3AF;1111 1166 11BE; # (펯; 펯; 펯; 펯; 펯; ) HANGUL SYLLABLE PEC
+D3B0;D3B0;1111 1166 11BF;D3B0;1111 1166 11BF; # (펰; 펰; 펰; 펰; 펰; ) HANGUL SYLLABLE PEK
+D3B1;D3B1;1111 1166 11C0;D3B1;1111 1166 11C0; # (펱; 펱; 펱; 펱; 펱; ) HANGUL SYLLABLE PET
+D3B2;D3B2;1111 1166 11C1;D3B2;1111 1166 11C1; # (펲; 펲; á„‘á…¦á‡; 펲; á„‘á…¦á‡; ) HANGUL SYLLABLE PEP
+D3B3;D3B3;1111 1166 11C2;D3B3;1111 1166 11C2; # (펳; 펳; 펳; 펳; 펳; ) HANGUL SYLLABLE PEH
+D3B4;D3B4;1111 1167;D3B4;1111 1167; # (펴; 펴; 펴; 펴; 펴; ) HANGUL SYLLABLE PYEO
+D3B5;D3B5;1111 1167 11A8;D3B5;1111 1167 11A8; # (펵; 펵; 펵; 펵; 펵; ) HANGUL SYLLABLE PYEOG
+D3B6;D3B6;1111 1167 11A9;D3B6;1111 1167 11A9; # (펶; 펶; 펶; 펶; 펶; ) HANGUL SYLLABLE PYEOGG
+D3B7;D3B7;1111 1167 11AA;D3B7;1111 1167 11AA; # (펷; 펷; 펷; 펷; 펷; ) HANGUL SYLLABLE PYEOGS
+D3B8;D3B8;1111 1167 11AB;D3B8;1111 1167 11AB; # (편; 편; 편; 편; 편; ) HANGUL SYLLABLE PYEON
+D3B9;D3B9;1111 1167 11AC;D3B9;1111 1167 11AC; # (펹; 펹; 펹; 펹; 펹; ) HANGUL SYLLABLE PYEONJ
+D3BA;D3BA;1111 1167 11AD;D3BA;1111 1167 11AD; # (펺; 펺; 펺; 펺; 펺; ) HANGUL SYLLABLE PYEONH
+D3BB;D3BB;1111 1167 11AE;D3BB;1111 1167 11AE; # (펻; 펻; 펻; 펻; 펻; ) HANGUL SYLLABLE PYEOD
+D3BC;D3BC;1111 1167 11AF;D3BC;1111 1167 11AF; # (펼; 펼; 펼; 펼; 펼; ) HANGUL SYLLABLE PYEOL
+D3BD;D3BD;1111 1167 11B0;D3BD;1111 1167 11B0; # (펽; 펽; 펽; 펽; 펽; ) HANGUL SYLLABLE PYEOLG
+D3BE;D3BE;1111 1167 11B1;D3BE;1111 1167 11B1; # (펾; 펾; 펾; 펾; 펾; ) HANGUL SYLLABLE PYEOLM
+D3BF;D3BF;1111 1167 11B2;D3BF;1111 1167 11B2; # (펿; 펿; 펿; 펿; 펿; ) HANGUL SYLLABLE PYEOLB
+D3C0;D3C0;1111 1167 11B3;D3C0;1111 1167 11B3; # (í€; í€; 폀; í€; 폀; ) HANGUL SYLLABLE PYEOLS
+D3C1;D3C1;1111 1167 11B4;D3C1;1111 1167 11B4; # (í; í; 폁; í; 폁; ) HANGUL SYLLABLE PYEOLT
+D3C2;D3C2;1111 1167 11B5;D3C2;1111 1167 11B5; # (í‚; í‚; 폂; í‚; 폂; ) HANGUL SYLLABLE PYEOLP
+D3C3;D3C3;1111 1167 11B6;D3C3;1111 1167 11B6; # (íƒ; íƒ; 폃; íƒ; 폃; ) HANGUL SYLLABLE PYEOLH
+D3C4;D3C4;1111 1167 11B7;D3C4;1111 1167 11B7; # (í„; í„; 폄; í„; 폄; ) HANGUL SYLLABLE PYEOM
+D3C5;D3C5;1111 1167 11B8;D3C5;1111 1167 11B8; # (í…; í…; 폅; í…; 폅; ) HANGUL SYLLABLE PYEOB
+D3C6;D3C6;1111 1167 11B9;D3C6;1111 1167 11B9; # (í†; í†; 폆; í†; 폆; ) HANGUL SYLLABLE PYEOBS
+D3C7;D3C7;1111 1167 11BA;D3C7;1111 1167 11BA; # (í‡; í‡; 폇; í‡; 폇; ) HANGUL SYLLABLE PYEOS
+D3C8;D3C8;1111 1167 11BB;D3C8;1111 1167 11BB; # (íˆ; íˆ; 폈; íˆ; 폈; ) HANGUL SYLLABLE PYEOSS
+D3C9;D3C9;1111 1167 11BC;D3C9;1111 1167 11BC; # (í‰; í‰; 평; í‰; 평; ) HANGUL SYLLABLE PYEONG
+D3CA;D3CA;1111 1167 11BD;D3CA;1111 1167 11BD; # (íŠ; íŠ; 폊; íŠ; 폊; ) HANGUL SYLLABLE PYEOJ
+D3CB;D3CB;1111 1167 11BE;D3CB;1111 1167 11BE; # (í‹; í‹; 폋; í‹; 폋; ) HANGUL SYLLABLE PYEOC
+D3CC;D3CC;1111 1167 11BF;D3CC;1111 1167 11BF; # (íŒ; íŒ; 폌; íŒ; 폌; ) HANGUL SYLLABLE PYEOK
+D3CD;D3CD;1111 1167 11C0;D3CD;1111 1167 11C0; # (í; í; 폍; í; 폍; ) HANGUL SYLLABLE PYEOT
+D3CE;D3CE;1111 1167 11C1;D3CE;1111 1167 11C1; # (íŽ; íŽ; á„‘á…§á‡; íŽ; á„‘á…§á‡; ) HANGUL SYLLABLE PYEOP
+D3CF;D3CF;1111 1167 11C2;D3CF;1111 1167 11C2; # (í; í; 폏; í; 폏; ) HANGUL SYLLABLE PYEOH
+D3D0;D3D0;1111 1168;D3D0;1111 1168; # (í; í; á„‘á…¨; í; á„‘á…¨; ) HANGUL SYLLABLE PYE
+D3D1;D3D1;1111 1168 11A8;D3D1;1111 1168 11A8; # (í‘; í‘; 폑; í‘; 폑; ) HANGUL SYLLABLE PYEG
+D3D2;D3D2;1111 1168 11A9;D3D2;1111 1168 11A9; # (í’; í’; 폒; í’; 폒; ) HANGUL SYLLABLE PYEGG
+D3D3;D3D3;1111 1168 11AA;D3D3;1111 1168 11AA; # (í“; í“; 폓; í“; 폓; ) HANGUL SYLLABLE PYEGS
+D3D4;D3D4;1111 1168 11AB;D3D4;1111 1168 11AB; # (í”; í”; 폔; í”; 폔; ) HANGUL SYLLABLE PYEN
+D3D5;D3D5;1111 1168 11AC;D3D5;1111 1168 11AC; # (í•; í•; 폕; í•; 폕; ) HANGUL SYLLABLE PYENJ
+D3D6;D3D6;1111 1168 11AD;D3D6;1111 1168 11AD; # (í–; í–; 폖; í–; 폖; ) HANGUL SYLLABLE PYENH
+D3D7;D3D7;1111 1168 11AE;D3D7;1111 1168 11AE; # (í—; í—; 폗; í—; 폗; ) HANGUL SYLLABLE PYED
+D3D8;D3D8;1111 1168 11AF;D3D8;1111 1168 11AF; # (í˜; í˜; 폘; í˜; 폘; ) HANGUL SYLLABLE PYEL
+D3D9;D3D9;1111 1168 11B0;D3D9;1111 1168 11B0; # (í™; í™; 폙; í™; 폙; ) HANGUL SYLLABLE PYELG
+D3DA;D3DA;1111 1168 11B1;D3DA;1111 1168 11B1; # (íš; íš; 폚; íš; 폚; ) HANGUL SYLLABLE PYELM
+D3DB;D3DB;1111 1168 11B2;D3DB;1111 1168 11B2; # (í›; í›; 폛; í›; 폛; ) HANGUL SYLLABLE PYELB
+D3DC;D3DC;1111 1168 11B3;D3DC;1111 1168 11B3; # (íœ; íœ; 폜; íœ; 폜; ) HANGUL SYLLABLE PYELS
+D3DD;D3DD;1111 1168 11B4;D3DD;1111 1168 11B4; # (í; í; 폝; í; 폝; ) HANGUL SYLLABLE PYELT
+D3DE;D3DE;1111 1168 11B5;D3DE;1111 1168 11B5; # (íž; íž; 폞; íž; 폞; ) HANGUL SYLLABLE PYELP
+D3DF;D3DF;1111 1168 11B6;D3DF;1111 1168 11B6; # (íŸ; íŸ; 폟; íŸ; 폟; ) HANGUL SYLLABLE PYELH
+D3E0;D3E0;1111 1168 11B7;D3E0;1111 1168 11B7; # (í ; í ; 폠; í ; 폠; ) HANGUL SYLLABLE PYEM
+D3E1;D3E1;1111 1168 11B8;D3E1;1111 1168 11B8; # (í¡; í¡; 폡; í¡; 폡; ) HANGUL SYLLABLE PYEB
+D3E2;D3E2;1111 1168 11B9;D3E2;1111 1168 11B9; # (í¢; í¢; 폢; í¢; 폢; ) HANGUL SYLLABLE PYEBS
+D3E3;D3E3;1111 1168 11BA;D3E3;1111 1168 11BA; # (í£; í£; 폣; í£; 폣; ) HANGUL SYLLABLE PYES
+D3E4;D3E4;1111 1168 11BB;D3E4;1111 1168 11BB; # (í¤; í¤; 폤; í¤; 폤; ) HANGUL SYLLABLE PYESS
+D3E5;D3E5;1111 1168 11BC;D3E5;1111 1168 11BC; # (í¥; í¥; 폥; í¥; 폥; ) HANGUL SYLLABLE PYENG
+D3E6;D3E6;1111 1168 11BD;D3E6;1111 1168 11BD; # (í¦; í¦; 폦; í¦; 폦; ) HANGUL SYLLABLE PYEJ
+D3E7;D3E7;1111 1168 11BE;D3E7;1111 1168 11BE; # (í§; í§; 폧; í§; 폧; ) HANGUL SYLLABLE PYEC
+D3E8;D3E8;1111 1168 11BF;D3E8;1111 1168 11BF; # (í¨; í¨; 폨; í¨; 폨; ) HANGUL SYLLABLE PYEK
+D3E9;D3E9;1111 1168 11C0;D3E9;1111 1168 11C0; # (í©; í©; 폩; í©; 폩; ) HANGUL SYLLABLE PYET
+D3EA;D3EA;1111 1168 11C1;D3EA;1111 1168 11C1; # (íª; íª; á„‘á…¨á‡; íª; á„‘á…¨á‡; ) HANGUL SYLLABLE PYEP
+D3EB;D3EB;1111 1168 11C2;D3EB;1111 1168 11C2; # (í«; í«; 폫; í«; 폫; ) HANGUL SYLLABLE PYEH
+D3EC;D3EC;1111 1169;D3EC;1111 1169; # (í¬; í¬; á„‘á…©; í¬; á„‘á…©; ) HANGUL SYLLABLE PO
+D3ED;D3ED;1111 1169 11A8;D3ED;1111 1169 11A8; # (í­; í­; 폭; í­; 폭; ) HANGUL SYLLABLE POG
+D3EE;D3EE;1111 1169 11A9;D3EE;1111 1169 11A9; # (í®; í®; 폮; í®; 폮; ) HANGUL SYLLABLE POGG
+D3EF;D3EF;1111 1169 11AA;D3EF;1111 1169 11AA; # (í¯; í¯; 폯; í¯; 폯; ) HANGUL SYLLABLE POGS
+D3F0;D3F0;1111 1169 11AB;D3F0;1111 1169 11AB; # (í°; í°; 폰; í°; 폰; ) HANGUL SYLLABLE PON
+D3F1;D3F1;1111 1169 11AC;D3F1;1111 1169 11AC; # (í±; í±; 폱; í±; 폱; ) HANGUL SYLLABLE PONJ
+D3F2;D3F2;1111 1169 11AD;D3F2;1111 1169 11AD; # (í²; í²; 폲; í²; 폲; ) HANGUL SYLLABLE PONH
+D3F3;D3F3;1111 1169 11AE;D3F3;1111 1169 11AE; # (í³; í³; 폳; í³; 폳; ) HANGUL SYLLABLE POD
+D3F4;D3F4;1111 1169 11AF;D3F4;1111 1169 11AF; # (í´; í´; 폴; í´; 폴; ) HANGUL SYLLABLE POL
+D3F5;D3F5;1111 1169 11B0;D3F5;1111 1169 11B0; # (íµ; íµ; 폵; íµ; 폵; ) HANGUL SYLLABLE POLG
+D3F6;D3F6;1111 1169 11B1;D3F6;1111 1169 11B1; # (í¶; í¶; 폶; í¶; 폶; ) HANGUL SYLLABLE POLM
+D3F7;D3F7;1111 1169 11B2;D3F7;1111 1169 11B2; # (í·; í·; 폷; í·; 폷; ) HANGUL SYLLABLE POLB
+D3F8;D3F8;1111 1169 11B3;D3F8;1111 1169 11B3; # (í¸; í¸; 폸; í¸; 폸; ) HANGUL SYLLABLE POLS
+D3F9;D3F9;1111 1169 11B4;D3F9;1111 1169 11B4; # (í¹; í¹; 폹; í¹; 폹; ) HANGUL SYLLABLE POLT
+D3FA;D3FA;1111 1169 11B5;D3FA;1111 1169 11B5; # (íº; íº; 폺; íº; 폺; ) HANGUL SYLLABLE POLP
+D3FB;D3FB;1111 1169 11B6;D3FB;1111 1169 11B6; # (í»; í»; 폻; í»; 폻; ) HANGUL SYLLABLE POLH
+D3FC;D3FC;1111 1169 11B7;D3FC;1111 1169 11B7; # (í¼; í¼; 폼; í¼; 폼; ) HANGUL SYLLABLE POM
+D3FD;D3FD;1111 1169 11B8;D3FD;1111 1169 11B8; # (í½; í½; 폽; í½; 폽; ) HANGUL SYLLABLE POB
+D3FE;D3FE;1111 1169 11B9;D3FE;1111 1169 11B9; # (í¾; í¾; 폾; í¾; 폾; ) HANGUL SYLLABLE POBS
+D3FF;D3FF;1111 1169 11BA;D3FF;1111 1169 11BA; # (í¿; í¿; 폿; í¿; 폿; ) HANGUL SYLLABLE POS
+D400;D400;1111 1169 11BB;D400;1111 1169 11BB; # (í€; í€; 퐀; í€; 퐀; ) HANGUL SYLLABLE POSS
+D401;D401;1111 1169 11BC;D401;1111 1169 11BC; # (í; í; 퐁; í; 퐁; ) HANGUL SYLLABLE PONG
+D402;D402;1111 1169 11BD;D402;1111 1169 11BD; # (í‚; í‚; 퐂; í‚; 퐂; ) HANGUL SYLLABLE POJ
+D403;D403;1111 1169 11BE;D403;1111 1169 11BE; # (íƒ; íƒ; 퐃; íƒ; 퐃; ) HANGUL SYLLABLE POC
+D404;D404;1111 1169 11BF;D404;1111 1169 11BF; # (í„; í„; 퐄; í„; 퐄; ) HANGUL SYLLABLE POK
+D405;D405;1111 1169 11C0;D405;1111 1169 11C0; # (í…; í…; 퐅; í…; 퐅; ) HANGUL SYLLABLE POT
+D406;D406;1111 1169 11C1;D406;1111 1169 11C1; # (í†; í†; á„‘á…©á‡; í†; á„‘á…©á‡; ) HANGUL SYLLABLE POP
+D407;D407;1111 1169 11C2;D407;1111 1169 11C2; # (í‡; í‡; 퐇; í‡; 퐇; ) HANGUL SYLLABLE POH
+D408;D408;1111 116A;D408;1111 116A; # (íˆ; íˆ; á„‘á…ª; íˆ; á„‘á…ª; ) HANGUL SYLLABLE PWA
+D409;D409;1111 116A 11A8;D409;1111 116A 11A8; # (í‰; í‰; 퐉; í‰; 퐉; ) HANGUL SYLLABLE PWAG
+D40A;D40A;1111 116A 11A9;D40A;1111 116A 11A9; # (íŠ; íŠ; 퐊; íŠ; 퐊; ) HANGUL SYLLABLE PWAGG
+D40B;D40B;1111 116A 11AA;D40B;1111 116A 11AA; # (í‹; í‹; 퐋; í‹; 퐋; ) HANGUL SYLLABLE PWAGS
+D40C;D40C;1111 116A 11AB;D40C;1111 116A 11AB; # (íŒ; íŒ; 퐌; íŒ; 퐌; ) HANGUL SYLLABLE PWAN
+D40D;D40D;1111 116A 11AC;D40D;1111 116A 11AC; # (í; í; 퐍; í; 퐍; ) HANGUL SYLLABLE PWANJ
+D40E;D40E;1111 116A 11AD;D40E;1111 116A 11AD; # (íŽ; íŽ; 퐎; íŽ; 퐎; ) HANGUL SYLLABLE PWANH
+D40F;D40F;1111 116A 11AE;D40F;1111 116A 11AE; # (í; í; 퐏; í; 퐏; ) HANGUL SYLLABLE PWAD
+D410;D410;1111 116A 11AF;D410;1111 116A 11AF; # (í; í; 퐐; í; 퐐; ) HANGUL SYLLABLE PWAL
+D411;D411;1111 116A 11B0;D411;1111 116A 11B0; # (í‘; í‘; 퐑; í‘; 퐑; ) HANGUL SYLLABLE PWALG
+D412;D412;1111 116A 11B1;D412;1111 116A 11B1; # (í’; í’; 퐒; í’; 퐒; ) HANGUL SYLLABLE PWALM
+D413;D413;1111 116A 11B2;D413;1111 116A 11B2; # (í“; í“; 퐓; í“; 퐓; ) HANGUL SYLLABLE PWALB
+D414;D414;1111 116A 11B3;D414;1111 116A 11B3; # (í”; í”; 퐔; í”; 퐔; ) HANGUL SYLLABLE PWALS
+D415;D415;1111 116A 11B4;D415;1111 116A 11B4; # (í•; í•; 퐕; í•; 퐕; ) HANGUL SYLLABLE PWALT
+D416;D416;1111 116A 11B5;D416;1111 116A 11B5; # (í–; í–; 퐖; í–; 퐖; ) HANGUL SYLLABLE PWALP
+D417;D417;1111 116A 11B6;D417;1111 116A 11B6; # (í—; í—; 퐗; í—; 퐗; ) HANGUL SYLLABLE PWALH
+D418;D418;1111 116A 11B7;D418;1111 116A 11B7; # (í˜; í˜; 퐘; í˜; 퐘; ) HANGUL SYLLABLE PWAM
+D419;D419;1111 116A 11B8;D419;1111 116A 11B8; # (í™; í™; 퐙; í™; 퐙; ) HANGUL SYLLABLE PWAB
+D41A;D41A;1111 116A 11B9;D41A;1111 116A 11B9; # (íš; íš; 퐚; íš; 퐚; ) HANGUL SYLLABLE PWABS
+D41B;D41B;1111 116A 11BA;D41B;1111 116A 11BA; # (í›; í›; 퐛; í›; 퐛; ) HANGUL SYLLABLE PWAS
+D41C;D41C;1111 116A 11BB;D41C;1111 116A 11BB; # (íœ; íœ; 퐜; íœ; 퐜; ) HANGUL SYLLABLE PWASS
+D41D;D41D;1111 116A 11BC;D41D;1111 116A 11BC; # (í; í; 퐝; í; 퐝; ) HANGUL SYLLABLE PWANG
+D41E;D41E;1111 116A 11BD;D41E;1111 116A 11BD; # (íž; íž; 퐞; íž; 퐞; ) HANGUL SYLLABLE PWAJ
+D41F;D41F;1111 116A 11BE;D41F;1111 116A 11BE; # (íŸ; íŸ; 퐟; íŸ; 퐟; ) HANGUL SYLLABLE PWAC
+D420;D420;1111 116A 11BF;D420;1111 116A 11BF; # (í ; í ; 퐠; í ; 퐠; ) HANGUL SYLLABLE PWAK
+D421;D421;1111 116A 11C0;D421;1111 116A 11C0; # (í¡; í¡; 퐡; í¡; 퐡; ) HANGUL SYLLABLE PWAT
+D422;D422;1111 116A 11C1;D422;1111 116A 11C1; # (í¢; í¢; á„‘á…ªá‡; í¢; á„‘á…ªá‡; ) HANGUL SYLLABLE PWAP
+D423;D423;1111 116A 11C2;D423;1111 116A 11C2; # (í£; í£; 퐣; í£; 퐣; ) HANGUL SYLLABLE PWAH
+D424;D424;1111 116B;D424;1111 116B; # (í¤; í¤; á„‘á…«; í¤; á„‘á…«; ) HANGUL SYLLABLE PWAE
+D425;D425;1111 116B 11A8;D425;1111 116B 11A8; # (í¥; í¥; 퐥; í¥; 퐥; ) HANGUL SYLLABLE PWAEG
+D426;D426;1111 116B 11A9;D426;1111 116B 11A9; # (í¦; í¦; 퐦; í¦; 퐦; ) HANGUL SYLLABLE PWAEGG
+D427;D427;1111 116B 11AA;D427;1111 116B 11AA; # (í§; í§; 퐧; í§; 퐧; ) HANGUL SYLLABLE PWAEGS
+D428;D428;1111 116B 11AB;D428;1111 116B 11AB; # (í¨; í¨; 퐨; í¨; 퐨; ) HANGUL SYLLABLE PWAEN
+D429;D429;1111 116B 11AC;D429;1111 116B 11AC; # (í©; í©; 퐩; í©; 퐩; ) HANGUL SYLLABLE PWAENJ
+D42A;D42A;1111 116B 11AD;D42A;1111 116B 11AD; # (íª; íª; 퐪; íª; 퐪; ) HANGUL SYLLABLE PWAENH
+D42B;D42B;1111 116B 11AE;D42B;1111 116B 11AE; # (í«; í«; 퐫; í«; 퐫; ) HANGUL SYLLABLE PWAED
+D42C;D42C;1111 116B 11AF;D42C;1111 116B 11AF; # (í¬; í¬; 퐬; í¬; 퐬; ) HANGUL SYLLABLE PWAEL
+D42D;D42D;1111 116B 11B0;D42D;1111 116B 11B0; # (í­; í­; 퐭; í­; 퐭; ) HANGUL SYLLABLE PWAELG
+D42E;D42E;1111 116B 11B1;D42E;1111 116B 11B1; # (í®; í®; 퐮; í®; 퐮; ) HANGUL SYLLABLE PWAELM
+D42F;D42F;1111 116B 11B2;D42F;1111 116B 11B2; # (í¯; í¯; 퐯; í¯; 퐯; ) HANGUL SYLLABLE PWAELB
+D430;D430;1111 116B 11B3;D430;1111 116B 11B3; # (í°; í°; 퐰; í°; 퐰; ) HANGUL SYLLABLE PWAELS
+D431;D431;1111 116B 11B4;D431;1111 116B 11B4; # (í±; í±; 퐱; í±; 퐱; ) HANGUL SYLLABLE PWAELT
+D432;D432;1111 116B 11B5;D432;1111 116B 11B5; # (í²; í²; 퐲; í²; 퐲; ) HANGUL SYLLABLE PWAELP
+D433;D433;1111 116B 11B6;D433;1111 116B 11B6; # (í³; í³; 퐳; í³; 퐳; ) HANGUL SYLLABLE PWAELH
+D434;D434;1111 116B 11B7;D434;1111 116B 11B7; # (í´; í´; 퐴; í´; 퐴; ) HANGUL SYLLABLE PWAEM
+D435;D435;1111 116B 11B8;D435;1111 116B 11B8; # (íµ; íµ; 퐵; íµ; 퐵; ) HANGUL SYLLABLE PWAEB
+D436;D436;1111 116B 11B9;D436;1111 116B 11B9; # (í¶; í¶; 퐶; í¶; 퐶; ) HANGUL SYLLABLE PWAEBS
+D437;D437;1111 116B 11BA;D437;1111 116B 11BA; # (í·; í·; 퐷; í·; 퐷; ) HANGUL SYLLABLE PWAES
+D438;D438;1111 116B 11BB;D438;1111 116B 11BB; # (í¸; í¸; 퐸; í¸; 퐸; ) HANGUL SYLLABLE PWAESS
+D439;D439;1111 116B 11BC;D439;1111 116B 11BC; # (í¹; í¹; 퐹; í¹; 퐹; ) HANGUL SYLLABLE PWAENG
+D43A;D43A;1111 116B 11BD;D43A;1111 116B 11BD; # (íº; íº; 퐺; íº; 퐺; ) HANGUL SYLLABLE PWAEJ
+D43B;D43B;1111 116B 11BE;D43B;1111 116B 11BE; # (í»; í»; 퐻; í»; 퐻; ) HANGUL SYLLABLE PWAEC
+D43C;D43C;1111 116B 11BF;D43C;1111 116B 11BF; # (í¼; í¼; 퐼; í¼; 퐼; ) HANGUL SYLLABLE PWAEK
+D43D;D43D;1111 116B 11C0;D43D;1111 116B 11C0; # (í½; í½; 퐽; í½; 퐽; ) HANGUL SYLLABLE PWAET
+D43E;D43E;1111 116B 11C1;D43E;1111 116B 11C1; # (í¾; í¾; á„‘á…«á‡; í¾; á„‘á…«á‡; ) HANGUL SYLLABLE PWAEP
+D43F;D43F;1111 116B 11C2;D43F;1111 116B 11C2; # (í¿; í¿; 퐿; í¿; 퐿; ) HANGUL SYLLABLE PWAEH
+D440;D440;1111 116C;D440;1111 116C; # (í‘€; í‘€; á„‘á…¬; í‘€; á„‘á…¬; ) HANGUL SYLLABLE POE
+D441;D441;1111 116C 11A8;D441;1111 116C 11A8; # (í‘; í‘; 푁; í‘; 푁; ) HANGUL SYLLABLE POEG
+D442;D442;1111 116C 11A9;D442;1111 116C 11A9; # (푂; 푂; 푂; 푂; 푂; ) HANGUL SYLLABLE POEGG
+D443;D443;1111 116C 11AA;D443;1111 116C 11AA; # (푃; 푃; 푃; 푃; 푃; ) HANGUL SYLLABLE POEGS
+D444;D444;1111 116C 11AB;D444;1111 116C 11AB; # (푄; 푄; 푄; 푄; 푄; ) HANGUL SYLLABLE POEN
+D445;D445;1111 116C 11AC;D445;1111 116C 11AC; # (푅; 푅; 푅; 푅; 푅; ) HANGUL SYLLABLE POENJ
+D446;D446;1111 116C 11AD;D446;1111 116C 11AD; # (푆; 푆; 푆; 푆; 푆; ) HANGUL SYLLABLE POENH
+D447;D447;1111 116C 11AE;D447;1111 116C 11AE; # (푇; 푇; 푇; 푇; 푇; ) HANGUL SYLLABLE POED
+D448;D448;1111 116C 11AF;D448;1111 116C 11AF; # (푈; 푈; 푈; 푈; 푈; ) HANGUL SYLLABLE POEL
+D449;D449;1111 116C 11B0;D449;1111 116C 11B0; # (푉; 푉; 푉; 푉; 푉; ) HANGUL SYLLABLE POELG
+D44A;D44A;1111 116C 11B1;D44A;1111 116C 11B1; # (푊; 푊; 푊; 푊; 푊; ) HANGUL SYLLABLE POELM
+D44B;D44B;1111 116C 11B2;D44B;1111 116C 11B2; # (푋; 푋; 푋; 푋; 푋; ) HANGUL SYLLABLE POELB
+D44C;D44C;1111 116C 11B3;D44C;1111 116C 11B3; # (푌; 푌; 푌; 푌; 푌; ) HANGUL SYLLABLE POELS
+D44D;D44D;1111 116C 11B4;D44D;1111 116C 11B4; # (í‘; í‘; 푍; í‘; 푍; ) HANGUL SYLLABLE POELT
+D44E;D44E;1111 116C 11B5;D44E;1111 116C 11B5; # (푎; 푎; 푎; 푎; 푎; ) HANGUL SYLLABLE POELP
+D44F;D44F;1111 116C 11B6;D44F;1111 116C 11B6; # (í‘; í‘; 푏; í‘; 푏; ) HANGUL SYLLABLE POELH
+D450;D450;1111 116C 11B7;D450;1111 116C 11B7; # (í‘; í‘; 푐; í‘; 푐; ) HANGUL SYLLABLE POEM
+D451;D451;1111 116C 11B8;D451;1111 116C 11B8; # (푑; 푑; 푑; 푑; 푑; ) HANGUL SYLLABLE POEB
+D452;D452;1111 116C 11B9;D452;1111 116C 11B9; # (푒; 푒; 푒; 푒; 푒; ) HANGUL SYLLABLE POEBS
+D453;D453;1111 116C 11BA;D453;1111 116C 11BA; # (푓; 푓; 푓; 푓; 푓; ) HANGUL SYLLABLE POES
+D454;D454;1111 116C 11BB;D454;1111 116C 11BB; # (푔; 푔; 푔; 푔; 푔; ) HANGUL SYLLABLE POESS
+D455;D455;1111 116C 11BC;D455;1111 116C 11BC; # (푕; 푕; 푕; 푕; 푕; ) HANGUL SYLLABLE POENG
+D456;D456;1111 116C 11BD;D456;1111 116C 11BD; # (푖; 푖; 푖; 푖; 푖; ) HANGUL SYLLABLE POEJ
+D457;D457;1111 116C 11BE;D457;1111 116C 11BE; # (푗; 푗; 푗; 푗; 푗; ) HANGUL SYLLABLE POEC
+D458;D458;1111 116C 11BF;D458;1111 116C 11BF; # (푘; 푘; 푘; 푘; 푘; ) HANGUL SYLLABLE POEK
+D459;D459;1111 116C 11C0;D459;1111 116C 11C0; # (푙; 푙; 푙; 푙; 푙; ) HANGUL SYLLABLE POET
+D45A;D45A;1111 116C 11C1;D45A;1111 116C 11C1; # (í‘š; í‘š; á„‘á…¬á‡; í‘š; á„‘á…¬á‡; ) HANGUL SYLLABLE POEP
+D45B;D45B;1111 116C 11C2;D45B;1111 116C 11C2; # (푛; 푛; 푛; 푛; 푛; ) HANGUL SYLLABLE POEH
+D45C;D45C;1111 116D;D45C;1111 116D; # (표; 표; 표; 표; 표; ) HANGUL SYLLABLE PYO
+D45D;D45D;1111 116D 11A8;D45D;1111 116D 11A8; # (í‘; í‘; 푝; í‘; 푝; ) HANGUL SYLLABLE PYOG
+D45E;D45E;1111 116D 11A9;D45E;1111 116D 11A9; # (푞; 푞; 푞; 푞; 푞; ) HANGUL SYLLABLE PYOGG
+D45F;D45F;1111 116D 11AA;D45F;1111 116D 11AA; # (푟; 푟; 푟; 푟; 푟; ) HANGUL SYLLABLE PYOGS
+D460;D460;1111 116D 11AB;D460;1111 116D 11AB; # (푠; 푠; 푠; 푠; 푠; ) HANGUL SYLLABLE PYON
+D461;D461;1111 116D 11AC;D461;1111 116D 11AC; # (푡; 푡; 푡; 푡; 푡; ) HANGUL SYLLABLE PYONJ
+D462;D462;1111 116D 11AD;D462;1111 116D 11AD; # (푢; 푢; 푢; 푢; 푢; ) HANGUL SYLLABLE PYONH
+D463;D463;1111 116D 11AE;D463;1111 116D 11AE; # (푣; 푣; 푣; 푣; 푣; ) HANGUL SYLLABLE PYOD
+D464;D464;1111 116D 11AF;D464;1111 116D 11AF; # (푤; 푤; 푤; 푤; 푤; ) HANGUL SYLLABLE PYOL
+D465;D465;1111 116D 11B0;D465;1111 116D 11B0; # (푥; 푥; 푥; 푥; 푥; ) HANGUL SYLLABLE PYOLG
+D466;D466;1111 116D 11B1;D466;1111 116D 11B1; # (푦; 푦; 푦; 푦; 푦; ) HANGUL SYLLABLE PYOLM
+D467;D467;1111 116D 11B2;D467;1111 116D 11B2; # (푧; 푧; 푧; 푧; 푧; ) HANGUL SYLLABLE PYOLB
+D468;D468;1111 116D 11B3;D468;1111 116D 11B3; # (푨; 푨; 푨; 푨; 푨; ) HANGUL SYLLABLE PYOLS
+D469;D469;1111 116D 11B4;D469;1111 116D 11B4; # (푩; 푩; 푩; 푩; 푩; ) HANGUL SYLLABLE PYOLT
+D46A;D46A;1111 116D 11B5;D46A;1111 116D 11B5; # (푪; 푪; 푪; 푪; 푪; ) HANGUL SYLLABLE PYOLP
+D46B;D46B;1111 116D 11B6;D46B;1111 116D 11B6; # (푫; 푫; 푫; 푫; 푫; ) HANGUL SYLLABLE PYOLH
+D46C;D46C;1111 116D 11B7;D46C;1111 116D 11B7; # (푬; 푬; 푬; 푬; 푬; ) HANGUL SYLLABLE PYOM
+D46D;D46D;1111 116D 11B8;D46D;1111 116D 11B8; # (푭; 푭; 푭; 푭; 푭; ) HANGUL SYLLABLE PYOB
+D46E;D46E;1111 116D 11B9;D46E;1111 116D 11B9; # (푮; 푮; 푮; 푮; 푮; ) HANGUL SYLLABLE PYOBS
+D46F;D46F;1111 116D 11BA;D46F;1111 116D 11BA; # (푯; 푯; 푯; 푯; 푯; ) HANGUL SYLLABLE PYOS
+D470;D470;1111 116D 11BB;D470;1111 116D 11BB; # (푰; 푰; 푰; 푰; 푰; ) HANGUL SYLLABLE PYOSS
+D471;D471;1111 116D 11BC;D471;1111 116D 11BC; # (푱; 푱; 푱; 푱; 푱; ) HANGUL SYLLABLE PYONG
+D472;D472;1111 116D 11BD;D472;1111 116D 11BD; # (푲; 푲; 푲; 푲; 푲; ) HANGUL SYLLABLE PYOJ
+D473;D473;1111 116D 11BE;D473;1111 116D 11BE; # (푳; 푳; 푳; 푳; 푳; ) HANGUL SYLLABLE PYOC
+D474;D474;1111 116D 11BF;D474;1111 116D 11BF; # (푴; 푴; 푴; 푴; 푴; ) HANGUL SYLLABLE PYOK
+D475;D475;1111 116D 11C0;D475;1111 116D 11C0; # (푵; 푵; 푵; 푵; 푵; ) HANGUL SYLLABLE PYOT
+D476;D476;1111 116D 11C1;D476;1111 116D 11C1; # (푶; 푶; á„‘á…­á‡; 푶; á„‘á…­á‡; ) HANGUL SYLLABLE PYOP
+D477;D477;1111 116D 11C2;D477;1111 116D 11C2; # (푷; 푷; 푷; 푷; 푷; ) HANGUL SYLLABLE PYOH
+D478;D478;1111 116E;D478;1111 116E; # (푸; 푸; 푸; 푸; 푸; ) HANGUL SYLLABLE PU
+D479;D479;1111 116E 11A8;D479;1111 116E 11A8; # (푹; 푹; 푹; 푹; 푹; ) HANGUL SYLLABLE PUG
+D47A;D47A;1111 116E 11A9;D47A;1111 116E 11A9; # (푺; 푺; 푺; 푺; 푺; ) HANGUL SYLLABLE PUGG
+D47B;D47B;1111 116E 11AA;D47B;1111 116E 11AA; # (푻; 푻; 푻; 푻; 푻; ) HANGUL SYLLABLE PUGS
+D47C;D47C;1111 116E 11AB;D47C;1111 116E 11AB; # (푼; 푼; 푼; 푼; 푼; ) HANGUL SYLLABLE PUN
+D47D;D47D;1111 116E 11AC;D47D;1111 116E 11AC; # (푽; 푽; 푽; 푽; 푽; ) HANGUL SYLLABLE PUNJ
+D47E;D47E;1111 116E 11AD;D47E;1111 116E 11AD; # (푾; 푾; 푾; 푾; 푾; ) HANGUL SYLLABLE PUNH
+D47F;D47F;1111 116E 11AE;D47F;1111 116E 11AE; # (푿; 푿; 푿; 푿; 푿; ) HANGUL SYLLABLE PUD
+D480;D480;1111 116E 11AF;D480;1111 116E 11AF; # (풀; 풀; 풀; 풀; 풀; ) HANGUL SYLLABLE PUL
+D481;D481;1111 116E 11B0;D481;1111 116E 11B0; # (í’; í’; 풁; í’; 풁; ) HANGUL SYLLABLE PULG
+D482;D482;1111 116E 11B1;D482;1111 116E 11B1; # (풂; 풂; 풂; 풂; 풂; ) HANGUL SYLLABLE PULM
+D483;D483;1111 116E 11B2;D483;1111 116E 11B2; # (풃; 풃; 풃; 풃; 풃; ) HANGUL SYLLABLE PULB
+D484;D484;1111 116E 11B3;D484;1111 116E 11B3; # (풄; 풄; 풄; 풄; 풄; ) HANGUL SYLLABLE PULS
+D485;D485;1111 116E 11B4;D485;1111 116E 11B4; # (풅; 풅; 풅; 풅; 풅; ) HANGUL SYLLABLE PULT
+D486;D486;1111 116E 11B5;D486;1111 116E 11B5; # (풆; 풆; 풆; 풆; 풆; ) HANGUL SYLLABLE PULP
+D487;D487;1111 116E 11B6;D487;1111 116E 11B6; # (풇; 풇; 풇; 풇; 풇; ) HANGUL SYLLABLE PULH
+D488;D488;1111 116E 11B7;D488;1111 116E 11B7; # (품; 품; 품; 품; 품; ) HANGUL SYLLABLE PUM
+D489;D489;1111 116E 11B8;D489;1111 116E 11B8; # (풉; 풉; 풉; 풉; 풉; ) HANGUL SYLLABLE PUB
+D48A;D48A;1111 116E 11B9;D48A;1111 116E 11B9; # (풊; 풊; 풊; 풊; 풊; ) HANGUL SYLLABLE PUBS
+D48B;D48B;1111 116E 11BA;D48B;1111 116E 11BA; # (풋; 풋; 풋; 풋; 풋; ) HANGUL SYLLABLE PUS
+D48C;D48C;1111 116E 11BB;D48C;1111 116E 11BB; # (풌; 풌; 풌; 풌; 풌; ) HANGUL SYLLABLE PUSS
+D48D;D48D;1111 116E 11BC;D48D;1111 116E 11BC; # (í’; í’; 풍; í’; 풍; ) HANGUL SYLLABLE PUNG
+D48E;D48E;1111 116E 11BD;D48E;1111 116E 11BD; # (풎; 풎; 풎; 풎; 풎; ) HANGUL SYLLABLE PUJ
+D48F;D48F;1111 116E 11BE;D48F;1111 116E 11BE; # (í’; í’; 풏; í’; 풏; ) HANGUL SYLLABLE PUC
+D490;D490;1111 116E 11BF;D490;1111 116E 11BF; # (í’; í’; 풐; í’; 풐; ) HANGUL SYLLABLE PUK
+D491;D491;1111 116E 11C0;D491;1111 116E 11C0; # (풑; 풑; 풑; 풑; 풑; ) HANGUL SYLLABLE PUT
+D492;D492;1111 116E 11C1;D492;1111 116E 11C1; # (í’’; í’’; á„‘á…®á‡; í’’; á„‘á…®á‡; ) HANGUL SYLLABLE PUP
+D493;D493;1111 116E 11C2;D493;1111 116E 11C2; # (풓; 풓; 풓; 풓; 풓; ) HANGUL SYLLABLE PUH
+D494;D494;1111 116F;D494;1111 116F; # (í’”; í’”; á„‘á…¯; í’”; á„‘á…¯; ) HANGUL SYLLABLE PWEO
+D495;D495;1111 116F 11A8;D495;1111 116F 11A8; # (풕; 풕; 풕; 풕; 풕; ) HANGUL SYLLABLE PWEOG
+D496;D496;1111 116F 11A9;D496;1111 116F 11A9; # (풖; 풖; 풖; 풖; 풖; ) HANGUL SYLLABLE PWEOGG
+D497;D497;1111 116F 11AA;D497;1111 116F 11AA; # (풗; 풗; 풗; 풗; 풗; ) HANGUL SYLLABLE PWEOGS
+D498;D498;1111 116F 11AB;D498;1111 116F 11AB; # (풘; 풘; 풘; 풘; 풘; ) HANGUL SYLLABLE PWEON
+D499;D499;1111 116F 11AC;D499;1111 116F 11AC; # (풙; 풙; 풙; 풙; 풙; ) HANGUL SYLLABLE PWEONJ
+D49A;D49A;1111 116F 11AD;D49A;1111 116F 11AD; # (풚; 풚; 풚; 풚; 풚; ) HANGUL SYLLABLE PWEONH
+D49B;D49B;1111 116F 11AE;D49B;1111 116F 11AE; # (풛; 풛; 풛; 풛; 풛; ) HANGUL SYLLABLE PWEOD
+D49C;D49C;1111 116F 11AF;D49C;1111 116F 11AF; # (풜; 풜; 풜; 풜; 풜; ) HANGUL SYLLABLE PWEOL
+D49D;D49D;1111 116F 11B0;D49D;1111 116F 11B0; # (í’; í’; 풝; í’; 풝; ) HANGUL SYLLABLE PWEOLG
+D49E;D49E;1111 116F 11B1;D49E;1111 116F 11B1; # (풞; 풞; 풞; 풞; 풞; ) HANGUL SYLLABLE PWEOLM
+D49F;D49F;1111 116F 11B2;D49F;1111 116F 11B2; # (풟; 풟; 풟; 풟; 풟; ) HANGUL SYLLABLE PWEOLB
+D4A0;D4A0;1111 116F 11B3;D4A0;1111 116F 11B3; # (풠; 풠; 풠; 풠; 풠; ) HANGUL SYLLABLE PWEOLS
+D4A1;D4A1;1111 116F 11B4;D4A1;1111 116F 11B4; # (풡; 풡; 풡; 풡; 풡; ) HANGUL SYLLABLE PWEOLT
+D4A2;D4A2;1111 116F 11B5;D4A2;1111 116F 11B5; # (풢; 풢; 풢; 풢; 풢; ) HANGUL SYLLABLE PWEOLP
+D4A3;D4A3;1111 116F 11B6;D4A3;1111 116F 11B6; # (풣; 풣; 풣; 풣; 풣; ) HANGUL SYLLABLE PWEOLH
+D4A4;D4A4;1111 116F 11B7;D4A4;1111 116F 11B7; # (풤; 풤; 풤; 풤; 풤; ) HANGUL SYLLABLE PWEOM
+D4A5;D4A5;1111 116F 11B8;D4A5;1111 116F 11B8; # (풥; 풥; 풥; 풥; 풥; ) HANGUL SYLLABLE PWEOB
+D4A6;D4A6;1111 116F 11B9;D4A6;1111 116F 11B9; # (풦; 풦; 풦; 풦; 풦; ) HANGUL SYLLABLE PWEOBS
+D4A7;D4A7;1111 116F 11BA;D4A7;1111 116F 11BA; # (풧; 풧; 풧; 풧; 풧; ) HANGUL SYLLABLE PWEOS
+D4A8;D4A8;1111 116F 11BB;D4A8;1111 116F 11BB; # (풨; 풨; 풨; 풨; 풨; ) HANGUL SYLLABLE PWEOSS
+D4A9;D4A9;1111 116F 11BC;D4A9;1111 116F 11BC; # (풩; 풩; 풩; 풩; 풩; ) HANGUL SYLLABLE PWEONG
+D4AA;D4AA;1111 116F 11BD;D4AA;1111 116F 11BD; # (풪; 풪; 풪; 풪; 풪; ) HANGUL SYLLABLE PWEOJ
+D4AB;D4AB;1111 116F 11BE;D4AB;1111 116F 11BE; # (풫; 풫; 풫; 풫; 풫; ) HANGUL SYLLABLE PWEOC
+D4AC;D4AC;1111 116F 11BF;D4AC;1111 116F 11BF; # (풬; 풬; 풬; 풬; 풬; ) HANGUL SYLLABLE PWEOK
+D4AD;D4AD;1111 116F 11C0;D4AD;1111 116F 11C0; # (풭; 풭; 풭; 풭; 풭; ) HANGUL SYLLABLE PWEOT
+D4AE;D4AE;1111 116F 11C1;D4AE;1111 116F 11C1; # (í’®; í’®; á„‘á…¯á‡; í’®; á„‘á…¯á‡; ) HANGUL SYLLABLE PWEOP
+D4AF;D4AF;1111 116F 11C2;D4AF;1111 116F 11C2; # (풯; 풯; 풯; 풯; 풯; ) HANGUL SYLLABLE PWEOH
+D4B0;D4B0;1111 1170;D4B0;1111 1170; # (í’°; í’°; á„‘á…°; í’°; á„‘á…°; ) HANGUL SYLLABLE PWE
+D4B1;D4B1;1111 1170 11A8;D4B1;1111 1170 11A8; # (풱; 풱; 풱; 풱; 풱; ) HANGUL SYLLABLE PWEG
+D4B2;D4B2;1111 1170 11A9;D4B2;1111 1170 11A9; # (풲; 풲; 풲; 풲; 풲; ) HANGUL SYLLABLE PWEGG
+D4B3;D4B3;1111 1170 11AA;D4B3;1111 1170 11AA; # (풳; 풳; 풳; 풳; 풳; ) HANGUL SYLLABLE PWEGS
+D4B4;D4B4;1111 1170 11AB;D4B4;1111 1170 11AB; # (풴; 풴; 풴; 풴; 풴; ) HANGUL SYLLABLE PWEN
+D4B5;D4B5;1111 1170 11AC;D4B5;1111 1170 11AC; # (풵; 풵; 풵; 풵; 풵; ) HANGUL SYLLABLE PWENJ
+D4B6;D4B6;1111 1170 11AD;D4B6;1111 1170 11AD; # (풶; 풶; 풶; 풶; 풶; ) HANGUL SYLLABLE PWENH
+D4B7;D4B7;1111 1170 11AE;D4B7;1111 1170 11AE; # (풷; 풷; 풷; 풷; 풷; ) HANGUL SYLLABLE PWED
+D4B8;D4B8;1111 1170 11AF;D4B8;1111 1170 11AF; # (풸; 풸; 풸; 풸; 풸; ) HANGUL SYLLABLE PWEL
+D4B9;D4B9;1111 1170 11B0;D4B9;1111 1170 11B0; # (풹; 풹; 풹; 풹; 풹; ) HANGUL SYLLABLE PWELG
+D4BA;D4BA;1111 1170 11B1;D4BA;1111 1170 11B1; # (풺; 풺; 풺; 풺; 풺; ) HANGUL SYLLABLE PWELM
+D4BB;D4BB;1111 1170 11B2;D4BB;1111 1170 11B2; # (풻; 풻; 풻; 풻; 풻; ) HANGUL SYLLABLE PWELB
+D4BC;D4BC;1111 1170 11B3;D4BC;1111 1170 11B3; # (풼; 풼; 풼; 풼; 풼; ) HANGUL SYLLABLE PWELS
+D4BD;D4BD;1111 1170 11B4;D4BD;1111 1170 11B4; # (풽; 풽; 풽; 풽; 풽; ) HANGUL SYLLABLE PWELT
+D4BE;D4BE;1111 1170 11B5;D4BE;1111 1170 11B5; # (풾; 풾; 풾; 풾; 풾; ) HANGUL SYLLABLE PWELP
+D4BF;D4BF;1111 1170 11B6;D4BF;1111 1170 11B6; # (풿; 풿; 풿; 풿; 풿; ) HANGUL SYLLABLE PWELH
+D4C0;D4C0;1111 1170 11B7;D4C0;1111 1170 11B7; # (퓀; 퓀; 퓀; 퓀; 퓀; ) HANGUL SYLLABLE PWEM
+D4C1;D4C1;1111 1170 11B8;D4C1;1111 1170 11B8; # (í“; í“; 퓁; í“; 퓁; ) HANGUL SYLLABLE PWEB
+D4C2;D4C2;1111 1170 11B9;D4C2;1111 1170 11B9; # (퓂; 퓂; 퓂; 퓂; 퓂; ) HANGUL SYLLABLE PWEBS
+D4C3;D4C3;1111 1170 11BA;D4C3;1111 1170 11BA; # (퓃; 퓃; 퓃; 퓃; 퓃; ) HANGUL SYLLABLE PWES
+D4C4;D4C4;1111 1170 11BB;D4C4;1111 1170 11BB; # (퓄; 퓄; 퓄; 퓄; 퓄; ) HANGUL SYLLABLE PWESS
+D4C5;D4C5;1111 1170 11BC;D4C5;1111 1170 11BC; # (퓅; 퓅; 퓅; 퓅; 퓅; ) HANGUL SYLLABLE PWENG
+D4C6;D4C6;1111 1170 11BD;D4C6;1111 1170 11BD; # (퓆; 퓆; 퓆; 퓆; 퓆; ) HANGUL SYLLABLE PWEJ
+D4C7;D4C7;1111 1170 11BE;D4C7;1111 1170 11BE; # (퓇; 퓇; 퓇; 퓇; 퓇; ) HANGUL SYLLABLE PWEC
+D4C8;D4C8;1111 1170 11BF;D4C8;1111 1170 11BF; # (퓈; 퓈; 퓈; 퓈; 퓈; ) HANGUL SYLLABLE PWEK
+D4C9;D4C9;1111 1170 11C0;D4C9;1111 1170 11C0; # (퓉; 퓉; 퓉; 퓉; 퓉; ) HANGUL SYLLABLE PWET
+D4CA;D4CA;1111 1170 11C1;D4CA;1111 1170 11C1; # (í“Š; í“Š; á„‘á…°á‡; í“Š; á„‘á…°á‡; ) HANGUL SYLLABLE PWEP
+D4CB;D4CB;1111 1170 11C2;D4CB;1111 1170 11C2; # (퓋; 퓋; 퓋; 퓋; 퓋; ) HANGUL SYLLABLE PWEH
+D4CC;D4CC;1111 1171;D4CC;1111 1171; # (퓌; 퓌; 퓌; 퓌; 퓌; ) HANGUL SYLLABLE PWI
+D4CD;D4CD;1111 1171 11A8;D4CD;1111 1171 11A8; # (í“; í“; 퓍; í“; 퓍; ) HANGUL SYLLABLE PWIG
+D4CE;D4CE;1111 1171 11A9;D4CE;1111 1171 11A9; # (퓎; 퓎; 퓎; 퓎; 퓎; ) HANGUL SYLLABLE PWIGG
+D4CF;D4CF;1111 1171 11AA;D4CF;1111 1171 11AA; # (í“; í“; 퓏; í“; 퓏; ) HANGUL SYLLABLE PWIGS
+D4D0;D4D0;1111 1171 11AB;D4D0;1111 1171 11AB; # (í“; í“; 퓐; í“; 퓐; ) HANGUL SYLLABLE PWIN
+D4D1;D4D1;1111 1171 11AC;D4D1;1111 1171 11AC; # (퓑; 퓑; 퓑; 퓑; 퓑; ) HANGUL SYLLABLE PWINJ
+D4D2;D4D2;1111 1171 11AD;D4D2;1111 1171 11AD; # (퓒; 퓒; 퓒; 퓒; 퓒; ) HANGUL SYLLABLE PWINH
+D4D3;D4D3;1111 1171 11AE;D4D3;1111 1171 11AE; # (퓓; 퓓; 퓓; 퓓; 퓓; ) HANGUL SYLLABLE PWID
+D4D4;D4D4;1111 1171 11AF;D4D4;1111 1171 11AF; # (퓔; 퓔; 퓔; 퓔; 퓔; ) HANGUL SYLLABLE PWIL
+D4D5;D4D5;1111 1171 11B0;D4D5;1111 1171 11B0; # (퓕; 퓕; 퓕; 퓕; 퓕; ) HANGUL SYLLABLE PWILG
+D4D6;D4D6;1111 1171 11B1;D4D6;1111 1171 11B1; # (퓖; 퓖; 퓖; 퓖; 퓖; ) HANGUL SYLLABLE PWILM
+D4D7;D4D7;1111 1171 11B2;D4D7;1111 1171 11B2; # (퓗; 퓗; 퓗; 퓗; 퓗; ) HANGUL SYLLABLE PWILB
+D4D8;D4D8;1111 1171 11B3;D4D8;1111 1171 11B3; # (퓘; 퓘; 퓘; 퓘; 퓘; ) HANGUL SYLLABLE PWILS
+D4D9;D4D9;1111 1171 11B4;D4D9;1111 1171 11B4; # (퓙; 퓙; 퓙; 퓙; 퓙; ) HANGUL SYLLABLE PWILT
+D4DA;D4DA;1111 1171 11B5;D4DA;1111 1171 11B5; # (퓚; 퓚; 퓚; 퓚; 퓚; ) HANGUL SYLLABLE PWILP
+D4DB;D4DB;1111 1171 11B6;D4DB;1111 1171 11B6; # (퓛; 퓛; 퓛; 퓛; 퓛; ) HANGUL SYLLABLE PWILH
+D4DC;D4DC;1111 1171 11B7;D4DC;1111 1171 11B7; # (퓜; 퓜; 퓜; 퓜; 퓜; ) HANGUL SYLLABLE PWIM
+D4DD;D4DD;1111 1171 11B8;D4DD;1111 1171 11B8; # (í“; í“; 퓝; í“; 퓝; ) HANGUL SYLLABLE PWIB
+D4DE;D4DE;1111 1171 11B9;D4DE;1111 1171 11B9; # (퓞; 퓞; 퓞; 퓞; 퓞; ) HANGUL SYLLABLE PWIBS
+D4DF;D4DF;1111 1171 11BA;D4DF;1111 1171 11BA; # (퓟; 퓟; 퓟; 퓟; 퓟; ) HANGUL SYLLABLE PWIS
+D4E0;D4E0;1111 1171 11BB;D4E0;1111 1171 11BB; # (퓠; 퓠; 퓠; 퓠; 퓠; ) HANGUL SYLLABLE PWISS
+D4E1;D4E1;1111 1171 11BC;D4E1;1111 1171 11BC; # (퓡; 퓡; 퓡; 퓡; 퓡; ) HANGUL SYLLABLE PWING
+D4E2;D4E2;1111 1171 11BD;D4E2;1111 1171 11BD; # (퓢; 퓢; 퓢; 퓢; 퓢; ) HANGUL SYLLABLE PWIJ
+D4E3;D4E3;1111 1171 11BE;D4E3;1111 1171 11BE; # (퓣; 퓣; 퓣; 퓣; 퓣; ) HANGUL SYLLABLE PWIC
+D4E4;D4E4;1111 1171 11BF;D4E4;1111 1171 11BF; # (퓤; 퓤; 퓤; 퓤; 퓤; ) HANGUL SYLLABLE PWIK
+D4E5;D4E5;1111 1171 11C0;D4E5;1111 1171 11C0; # (퓥; 퓥; 퓥; 퓥; 퓥; ) HANGUL SYLLABLE PWIT
+D4E6;D4E6;1111 1171 11C1;D4E6;1111 1171 11C1; # (퓦; 퓦; á„‘á…±á‡; 퓦; á„‘á…±á‡; ) HANGUL SYLLABLE PWIP
+D4E7;D4E7;1111 1171 11C2;D4E7;1111 1171 11C2; # (퓧; 퓧; 퓧; 퓧; 퓧; ) HANGUL SYLLABLE PWIH
+D4E8;D4E8;1111 1172;D4E8;1111 1172; # (퓨; 퓨; 퓨; 퓨; 퓨; ) HANGUL SYLLABLE PYU
+D4E9;D4E9;1111 1172 11A8;D4E9;1111 1172 11A8; # (퓩; 퓩; 퓩; 퓩; 퓩; ) HANGUL SYLLABLE PYUG
+D4EA;D4EA;1111 1172 11A9;D4EA;1111 1172 11A9; # (퓪; 퓪; 퓪; 퓪; 퓪; ) HANGUL SYLLABLE PYUGG
+D4EB;D4EB;1111 1172 11AA;D4EB;1111 1172 11AA; # (퓫; 퓫; 퓫; 퓫; 퓫; ) HANGUL SYLLABLE PYUGS
+D4EC;D4EC;1111 1172 11AB;D4EC;1111 1172 11AB; # (퓬; 퓬; 퓬; 퓬; 퓬; ) HANGUL SYLLABLE PYUN
+D4ED;D4ED;1111 1172 11AC;D4ED;1111 1172 11AC; # (퓭; 퓭; 퓭; 퓭; 퓭; ) HANGUL SYLLABLE PYUNJ
+D4EE;D4EE;1111 1172 11AD;D4EE;1111 1172 11AD; # (퓮; 퓮; 퓮; 퓮; 퓮; ) HANGUL SYLLABLE PYUNH
+D4EF;D4EF;1111 1172 11AE;D4EF;1111 1172 11AE; # (퓯; 퓯; 퓯; 퓯; 퓯; ) HANGUL SYLLABLE PYUD
+D4F0;D4F0;1111 1172 11AF;D4F0;1111 1172 11AF; # (퓰; 퓰; 퓰; 퓰; 퓰; ) HANGUL SYLLABLE PYUL
+D4F1;D4F1;1111 1172 11B0;D4F1;1111 1172 11B0; # (퓱; 퓱; 퓱; 퓱; 퓱; ) HANGUL SYLLABLE PYULG
+D4F2;D4F2;1111 1172 11B1;D4F2;1111 1172 11B1; # (퓲; 퓲; 퓲; 퓲; 퓲; ) HANGUL SYLLABLE PYULM
+D4F3;D4F3;1111 1172 11B2;D4F3;1111 1172 11B2; # (퓳; 퓳; 퓳; 퓳; 퓳; ) HANGUL SYLLABLE PYULB
+D4F4;D4F4;1111 1172 11B3;D4F4;1111 1172 11B3; # (퓴; 퓴; 퓴; 퓴; 퓴; ) HANGUL SYLLABLE PYULS
+D4F5;D4F5;1111 1172 11B4;D4F5;1111 1172 11B4; # (퓵; 퓵; 퓵; 퓵; 퓵; ) HANGUL SYLLABLE PYULT
+D4F6;D4F6;1111 1172 11B5;D4F6;1111 1172 11B5; # (퓶; 퓶; 퓶; 퓶; 퓶; ) HANGUL SYLLABLE PYULP
+D4F7;D4F7;1111 1172 11B6;D4F7;1111 1172 11B6; # (퓷; 퓷; 퓷; 퓷; 퓷; ) HANGUL SYLLABLE PYULH
+D4F8;D4F8;1111 1172 11B7;D4F8;1111 1172 11B7; # (퓸; 퓸; 퓸; 퓸; 퓸; ) HANGUL SYLLABLE PYUM
+D4F9;D4F9;1111 1172 11B8;D4F9;1111 1172 11B8; # (퓹; 퓹; 퓹; 퓹; 퓹; ) HANGUL SYLLABLE PYUB
+D4FA;D4FA;1111 1172 11B9;D4FA;1111 1172 11B9; # (퓺; 퓺; 퓺; 퓺; 퓺; ) HANGUL SYLLABLE PYUBS
+D4FB;D4FB;1111 1172 11BA;D4FB;1111 1172 11BA; # (퓻; 퓻; 퓻; 퓻; 퓻; ) HANGUL SYLLABLE PYUS
+D4FC;D4FC;1111 1172 11BB;D4FC;1111 1172 11BB; # (퓼; 퓼; 퓼; 퓼; 퓼; ) HANGUL SYLLABLE PYUSS
+D4FD;D4FD;1111 1172 11BC;D4FD;1111 1172 11BC; # (퓽; 퓽; 퓽; 퓽; 퓽; ) HANGUL SYLLABLE PYUNG
+D4FE;D4FE;1111 1172 11BD;D4FE;1111 1172 11BD; # (퓾; 퓾; 퓾; 퓾; 퓾; ) HANGUL SYLLABLE PYUJ
+D4FF;D4FF;1111 1172 11BE;D4FF;1111 1172 11BE; # (퓿; 퓿; 퓿; 퓿; 퓿; ) HANGUL SYLLABLE PYUC
+D500;D500;1111 1172 11BF;D500;1111 1172 11BF; # (픀; 픀; 픀; 픀; 픀; ) HANGUL SYLLABLE PYUK
+D501;D501;1111 1172 11C0;D501;1111 1172 11C0; # (í”; í”; 픁; í”; 픁; ) HANGUL SYLLABLE PYUT
+D502;D502;1111 1172 11C1;D502;1111 1172 11C1; # (픂; 픂; á„‘á…²á‡; 픂; á„‘á…²á‡; ) HANGUL SYLLABLE PYUP
+D503;D503;1111 1172 11C2;D503;1111 1172 11C2; # (픃; 픃; 픃; 픃; 픃; ) HANGUL SYLLABLE PYUH
+D504;D504;1111 1173;D504;1111 1173; # (프; 프; 프; 프; 프; ) HANGUL SYLLABLE PEU
+D505;D505;1111 1173 11A8;D505;1111 1173 11A8; # (픅; 픅; 픅; 픅; 픅; ) HANGUL SYLLABLE PEUG
+D506;D506;1111 1173 11A9;D506;1111 1173 11A9; # (픆; 픆; 픆; 픆; 픆; ) HANGUL SYLLABLE PEUGG
+D507;D507;1111 1173 11AA;D507;1111 1173 11AA; # (픇; 픇; 픇; 픇; 픇; ) HANGUL SYLLABLE PEUGS
+D508;D508;1111 1173 11AB;D508;1111 1173 11AB; # (픈; 픈; 픈; 픈; 픈; ) HANGUL SYLLABLE PEUN
+D509;D509;1111 1173 11AC;D509;1111 1173 11AC; # (픉; 픉; 픉; 픉; 픉; ) HANGUL SYLLABLE PEUNJ
+D50A;D50A;1111 1173 11AD;D50A;1111 1173 11AD; # (픊; 픊; 픊; 픊; 픊; ) HANGUL SYLLABLE PEUNH
+D50B;D50B;1111 1173 11AE;D50B;1111 1173 11AE; # (픋; 픋; 픋; 픋; 픋; ) HANGUL SYLLABLE PEUD
+D50C;D50C;1111 1173 11AF;D50C;1111 1173 11AF; # (플; 플; 플; 플; 플; ) HANGUL SYLLABLE PEUL
+D50D;D50D;1111 1173 11B0;D50D;1111 1173 11B0; # (í”; í”; 픍; í”; 픍; ) HANGUL SYLLABLE PEULG
+D50E;D50E;1111 1173 11B1;D50E;1111 1173 11B1; # (픎; 픎; 픎; 픎; 픎; ) HANGUL SYLLABLE PEULM
+D50F;D50F;1111 1173 11B2;D50F;1111 1173 11B2; # (í”; í”; 픏; í”; 픏; ) HANGUL SYLLABLE PEULB
+D510;D510;1111 1173 11B3;D510;1111 1173 11B3; # (í”; í”; 픐; í”; 픐; ) HANGUL SYLLABLE PEULS
+D511;D511;1111 1173 11B4;D511;1111 1173 11B4; # (픑; 픑; 픑; 픑; 픑; ) HANGUL SYLLABLE PEULT
+D512;D512;1111 1173 11B5;D512;1111 1173 11B5; # (픒; 픒; 픒; 픒; 픒; ) HANGUL SYLLABLE PEULP
+D513;D513;1111 1173 11B6;D513;1111 1173 11B6; # (픓; 픓; 픓; 픓; 픓; ) HANGUL SYLLABLE PEULH
+D514;D514;1111 1173 11B7;D514;1111 1173 11B7; # (픔; 픔; 픔; 픔; 픔; ) HANGUL SYLLABLE PEUM
+D515;D515;1111 1173 11B8;D515;1111 1173 11B8; # (픕; 픕; 픕; 픕; 픕; ) HANGUL SYLLABLE PEUB
+D516;D516;1111 1173 11B9;D516;1111 1173 11B9; # (픖; 픖; 픖; 픖; 픖; ) HANGUL SYLLABLE PEUBS
+D517;D517;1111 1173 11BA;D517;1111 1173 11BA; # (픗; 픗; 픗; 픗; 픗; ) HANGUL SYLLABLE PEUS
+D518;D518;1111 1173 11BB;D518;1111 1173 11BB; # (픘; 픘; 픘; 픘; 픘; ) HANGUL SYLLABLE PEUSS
+D519;D519;1111 1173 11BC;D519;1111 1173 11BC; # (픙; 픙; 픙; 픙; 픙; ) HANGUL SYLLABLE PEUNG
+D51A;D51A;1111 1173 11BD;D51A;1111 1173 11BD; # (픚; 픚; 픚; 픚; 픚; ) HANGUL SYLLABLE PEUJ
+D51B;D51B;1111 1173 11BE;D51B;1111 1173 11BE; # (픛; 픛; 픛; 픛; 픛; ) HANGUL SYLLABLE PEUC
+D51C;D51C;1111 1173 11BF;D51C;1111 1173 11BF; # (픜; 픜; 픜; 픜; 픜; ) HANGUL SYLLABLE PEUK
+D51D;D51D;1111 1173 11C0;D51D;1111 1173 11C0; # (í”; í”; 픝; í”; 픝; ) HANGUL SYLLABLE PEUT
+D51E;D51E;1111 1173 11C1;D51E;1111 1173 11C1; # (픞; 픞; á„‘á…³á‡; 픞; á„‘á…³á‡; ) HANGUL SYLLABLE PEUP
+D51F;D51F;1111 1173 11C2;D51F;1111 1173 11C2; # (픟; 픟; 픟; 픟; 픟; ) HANGUL SYLLABLE PEUH
+D520;D520;1111 1174;D520;1111 1174; # (í” ; í” ; á„‘á…´; í” ; á„‘á…´; ) HANGUL SYLLABLE PYI
+D521;D521;1111 1174 11A8;D521;1111 1174 11A8; # (픡; 픡; 픡; 픡; 픡; ) HANGUL SYLLABLE PYIG
+D522;D522;1111 1174 11A9;D522;1111 1174 11A9; # (픢; 픢; 픢; 픢; 픢; ) HANGUL SYLLABLE PYIGG
+D523;D523;1111 1174 11AA;D523;1111 1174 11AA; # (픣; 픣; 픣; 픣; 픣; ) HANGUL SYLLABLE PYIGS
+D524;D524;1111 1174 11AB;D524;1111 1174 11AB; # (픤; 픤; 픤; 픤; 픤; ) HANGUL SYLLABLE PYIN
+D525;D525;1111 1174 11AC;D525;1111 1174 11AC; # (픥; 픥; 픥; 픥; 픥; ) HANGUL SYLLABLE PYINJ
+D526;D526;1111 1174 11AD;D526;1111 1174 11AD; # (픦; 픦; 픦; 픦; 픦; ) HANGUL SYLLABLE PYINH
+D527;D527;1111 1174 11AE;D527;1111 1174 11AE; # (픧; 픧; 픧; 픧; 픧; ) HANGUL SYLLABLE PYID
+D528;D528;1111 1174 11AF;D528;1111 1174 11AF; # (픨; 픨; 픨; 픨; 픨; ) HANGUL SYLLABLE PYIL
+D529;D529;1111 1174 11B0;D529;1111 1174 11B0; # (픩; 픩; 픩; 픩; 픩; ) HANGUL SYLLABLE PYILG
+D52A;D52A;1111 1174 11B1;D52A;1111 1174 11B1; # (픪; 픪; 픪; 픪; 픪; ) HANGUL SYLLABLE PYILM
+D52B;D52B;1111 1174 11B2;D52B;1111 1174 11B2; # (픫; 픫; 픫; 픫; 픫; ) HANGUL SYLLABLE PYILB
+D52C;D52C;1111 1174 11B3;D52C;1111 1174 11B3; # (픬; 픬; 픬; 픬; 픬; ) HANGUL SYLLABLE PYILS
+D52D;D52D;1111 1174 11B4;D52D;1111 1174 11B4; # (픭; 픭; 픭; 픭; 픭; ) HANGUL SYLLABLE PYILT
+D52E;D52E;1111 1174 11B5;D52E;1111 1174 11B5; # (픮; 픮; 픮; 픮; 픮; ) HANGUL SYLLABLE PYILP
+D52F;D52F;1111 1174 11B6;D52F;1111 1174 11B6; # (픯; 픯; 픯; 픯; 픯; ) HANGUL SYLLABLE PYILH
+D530;D530;1111 1174 11B7;D530;1111 1174 11B7; # (픰; 픰; 픰; 픰; 픰; ) HANGUL SYLLABLE PYIM
+D531;D531;1111 1174 11B8;D531;1111 1174 11B8; # (픱; 픱; 픱; 픱; 픱; ) HANGUL SYLLABLE PYIB
+D532;D532;1111 1174 11B9;D532;1111 1174 11B9; # (픲; 픲; 픲; 픲; 픲; ) HANGUL SYLLABLE PYIBS
+D533;D533;1111 1174 11BA;D533;1111 1174 11BA; # (픳; 픳; 픳; 픳; 픳; ) HANGUL SYLLABLE PYIS
+D534;D534;1111 1174 11BB;D534;1111 1174 11BB; # (픴; 픴; 픴; 픴; 픴; ) HANGUL SYLLABLE PYISS
+D535;D535;1111 1174 11BC;D535;1111 1174 11BC; # (픵; 픵; 픵; 픵; 픵; ) HANGUL SYLLABLE PYING
+D536;D536;1111 1174 11BD;D536;1111 1174 11BD; # (픶; 픶; 픶; 픶; 픶; ) HANGUL SYLLABLE PYIJ
+D537;D537;1111 1174 11BE;D537;1111 1174 11BE; # (픷; 픷; 픷; 픷; 픷; ) HANGUL SYLLABLE PYIC
+D538;D538;1111 1174 11BF;D538;1111 1174 11BF; # (픸; 픸; 픸; 픸; 픸; ) HANGUL SYLLABLE PYIK
+D539;D539;1111 1174 11C0;D539;1111 1174 11C0; # (픹; 픹; 픹; 픹; 픹; ) HANGUL SYLLABLE PYIT
+D53A;D53A;1111 1174 11C1;D53A;1111 1174 11C1; # (픺; 픺; á„‘á…´á‡; 픺; á„‘á…´á‡; ) HANGUL SYLLABLE PYIP
+D53B;D53B;1111 1174 11C2;D53B;1111 1174 11C2; # (픻; 픻; 픻; 픻; 픻; ) HANGUL SYLLABLE PYIH
+D53C;D53C;1111 1175;D53C;1111 1175; # (피; 피; 피; 피; 피; ) HANGUL SYLLABLE PI
+D53D;D53D;1111 1175 11A8;D53D;1111 1175 11A8; # (픽; 픽; 픽; 픽; 픽; ) HANGUL SYLLABLE PIG
+D53E;D53E;1111 1175 11A9;D53E;1111 1175 11A9; # (픾; 픾; 픾; 픾; 픾; ) HANGUL SYLLABLE PIGG
+D53F;D53F;1111 1175 11AA;D53F;1111 1175 11AA; # (픿; 픿; 픿; 픿; 픿; ) HANGUL SYLLABLE PIGS
+D540;D540;1111 1175 11AB;D540;1111 1175 11AB; # (핀; 핀; 핀; 핀; 핀; ) HANGUL SYLLABLE PIN
+D541;D541;1111 1175 11AC;D541;1111 1175 11AC; # (í•; í•; 핁; í•; 핁; ) HANGUL SYLLABLE PINJ
+D542;D542;1111 1175 11AD;D542;1111 1175 11AD; # (핂; 핂; 핂; 핂; 핂; ) HANGUL SYLLABLE PINH
+D543;D543;1111 1175 11AE;D543;1111 1175 11AE; # (핃; 핃; 핃; 핃; 핃; ) HANGUL SYLLABLE PID
+D544;D544;1111 1175 11AF;D544;1111 1175 11AF; # (필; 필; 필; 필; 필; ) HANGUL SYLLABLE PIL
+D545;D545;1111 1175 11B0;D545;1111 1175 11B0; # (핅; 핅; 핅; 핅; 핅; ) HANGUL SYLLABLE PILG
+D546;D546;1111 1175 11B1;D546;1111 1175 11B1; # (핆; 핆; 핆; 핆; 핆; ) HANGUL SYLLABLE PILM
+D547;D547;1111 1175 11B2;D547;1111 1175 11B2; # (핇; 핇; 핇; 핇; 핇; ) HANGUL SYLLABLE PILB
+D548;D548;1111 1175 11B3;D548;1111 1175 11B3; # (핈; 핈; 핈; 핈; 핈; ) HANGUL SYLLABLE PILS
+D549;D549;1111 1175 11B4;D549;1111 1175 11B4; # (핉; 핉; 핉; 핉; 핉; ) HANGUL SYLLABLE PILT
+D54A;D54A;1111 1175 11B5;D54A;1111 1175 11B5; # (핊; 핊; 핊; 핊; 핊; ) HANGUL SYLLABLE PILP
+D54B;D54B;1111 1175 11B6;D54B;1111 1175 11B6; # (핋; 핋; 핋; 핋; 핋; ) HANGUL SYLLABLE PILH
+D54C;D54C;1111 1175 11B7;D54C;1111 1175 11B7; # (핌; 핌; 핌; 핌; 핌; ) HANGUL SYLLABLE PIM
+D54D;D54D;1111 1175 11B8;D54D;1111 1175 11B8; # (í•; í•; 핍; í•; 핍; ) HANGUL SYLLABLE PIB
+D54E;D54E;1111 1175 11B9;D54E;1111 1175 11B9; # (핎; 핎; 핎; 핎; 핎; ) HANGUL SYLLABLE PIBS
+D54F;D54F;1111 1175 11BA;D54F;1111 1175 11BA; # (í•; í•; 핏; í•; 핏; ) HANGUL SYLLABLE PIS
+D550;D550;1111 1175 11BB;D550;1111 1175 11BB; # (í•; í•; 핐; í•; 핐; ) HANGUL SYLLABLE PISS
+D551;D551;1111 1175 11BC;D551;1111 1175 11BC; # (핑; 핑; 핑; 핑; 핑; ) HANGUL SYLLABLE PING
+D552;D552;1111 1175 11BD;D552;1111 1175 11BD; # (핒; 핒; 핒; 핒; 핒; ) HANGUL SYLLABLE PIJ
+D553;D553;1111 1175 11BE;D553;1111 1175 11BE; # (핓; 핓; 핓; 핓; 핓; ) HANGUL SYLLABLE PIC
+D554;D554;1111 1175 11BF;D554;1111 1175 11BF; # (핔; 핔; 핔; 핔; 핔; ) HANGUL SYLLABLE PIK
+D555;D555;1111 1175 11C0;D555;1111 1175 11C0; # (핕; 핕; 핕; 핕; 핕; ) HANGUL SYLLABLE PIT
+D556;D556;1111 1175 11C1;D556;1111 1175 11C1; # (í•–; í•–; á„‘á…µá‡; í•–; á„‘á…µá‡; ) HANGUL SYLLABLE PIP
+D557;D557;1111 1175 11C2;D557;1111 1175 11C2; # (핗; 핗; 핗; 핗; 핗; ) HANGUL SYLLABLE PIH
+D558;D558;1112 1161;D558;1112 1161; # (하; 하; 하; 하; 하; ) HANGUL SYLLABLE HA
+D559;D559;1112 1161 11A8;D559;1112 1161 11A8; # (학; 학; 학; 학; 학; ) HANGUL SYLLABLE HAG
+D55A;D55A;1112 1161 11A9;D55A;1112 1161 11A9; # (핚; 핚; 핚; 핚; 핚; ) HANGUL SYLLABLE HAGG
+D55B;D55B;1112 1161 11AA;D55B;1112 1161 11AA; # (핛; 핛; 핛; 핛; 핛; ) HANGUL SYLLABLE HAGS
+D55C;D55C;1112 1161 11AB;D55C;1112 1161 11AB; # (한; 한; 한; 한; 한; ) HANGUL SYLLABLE HAN
+D55D;D55D;1112 1161 11AC;D55D;1112 1161 11AC; # (í•; í•; 핝; í•; 핝; ) HANGUL SYLLABLE HANJ
+D55E;D55E;1112 1161 11AD;D55E;1112 1161 11AD; # (핞; 핞; 핞; 핞; 핞; ) HANGUL SYLLABLE HANH
+D55F;D55F;1112 1161 11AE;D55F;1112 1161 11AE; # (핟; 핟; 핟; 핟; 핟; ) HANGUL SYLLABLE HAD
+D560;D560;1112 1161 11AF;D560;1112 1161 11AF; # (할; 할; 할; 할; 할; ) HANGUL SYLLABLE HAL
+D561;D561;1112 1161 11B0;D561;1112 1161 11B0; # (핡; 핡; 핡; 핡; 핡; ) HANGUL SYLLABLE HALG
+D562;D562;1112 1161 11B1;D562;1112 1161 11B1; # (핢; 핢; 핢; 핢; 핢; ) HANGUL SYLLABLE HALM
+D563;D563;1112 1161 11B2;D563;1112 1161 11B2; # (핣; 핣; 핣; 핣; 핣; ) HANGUL SYLLABLE HALB
+D564;D564;1112 1161 11B3;D564;1112 1161 11B3; # (핤; 핤; 핤; 핤; 핤; ) HANGUL SYLLABLE HALS
+D565;D565;1112 1161 11B4;D565;1112 1161 11B4; # (핥; 핥; 핥; 핥; 핥; ) HANGUL SYLLABLE HALT
+D566;D566;1112 1161 11B5;D566;1112 1161 11B5; # (핦; 핦; 핦; 핦; 핦; ) HANGUL SYLLABLE HALP
+D567;D567;1112 1161 11B6;D567;1112 1161 11B6; # (핧; 핧; 핧; 핧; 핧; ) HANGUL SYLLABLE HALH
+D568;D568;1112 1161 11B7;D568;1112 1161 11B7; # (함; 함; 함; 함; 함; ) HANGUL SYLLABLE HAM
+D569;D569;1112 1161 11B8;D569;1112 1161 11B8; # (합; 합; 합; 합; 합; ) HANGUL SYLLABLE HAB
+D56A;D56A;1112 1161 11B9;D56A;1112 1161 11B9; # (핪; 핪; 핪; 핪; 핪; ) HANGUL SYLLABLE HABS
+D56B;D56B;1112 1161 11BA;D56B;1112 1161 11BA; # (핫; 핫; 핫; 핫; 핫; ) HANGUL SYLLABLE HAS
+D56C;D56C;1112 1161 11BB;D56C;1112 1161 11BB; # (핬; 핬; 핬; 핬; 핬; ) HANGUL SYLLABLE HASS
+D56D;D56D;1112 1161 11BC;D56D;1112 1161 11BC; # (항; 항; 항; 항; 항; ) HANGUL SYLLABLE HANG
+D56E;D56E;1112 1161 11BD;D56E;1112 1161 11BD; # (핮; 핮; 핮; 핮; 핮; ) HANGUL SYLLABLE HAJ
+D56F;D56F;1112 1161 11BE;D56F;1112 1161 11BE; # (핯; 핯; 핯; 핯; 핯; ) HANGUL SYLLABLE HAC
+D570;D570;1112 1161 11BF;D570;1112 1161 11BF; # (핰; 핰; 핰; 핰; 핰; ) HANGUL SYLLABLE HAK
+D571;D571;1112 1161 11C0;D571;1112 1161 11C0; # (핱; 핱; 핱; 핱; 핱; ) HANGUL SYLLABLE HAT
+D572;D572;1112 1161 11C1;D572;1112 1161 11C1; # (핲; 핲; á„’á…¡á‡; 핲; á„’á…¡á‡; ) HANGUL SYLLABLE HAP
+D573;D573;1112 1161 11C2;D573;1112 1161 11C2; # (핳; 핳; 핳; 핳; 핳; ) HANGUL SYLLABLE HAH
+D574;D574;1112 1162;D574;1112 1162; # (í•´; í•´; á„’á…¢; í•´; á„’á…¢; ) HANGUL SYLLABLE HAE
+D575;D575;1112 1162 11A8;D575;1112 1162 11A8; # (핵; 핵; 핵; 핵; 핵; ) HANGUL SYLLABLE HAEG
+D576;D576;1112 1162 11A9;D576;1112 1162 11A9; # (핶; 핶; 핶; 핶; 핶; ) HANGUL SYLLABLE HAEGG
+D577;D577;1112 1162 11AA;D577;1112 1162 11AA; # (핷; 핷; 핷; 핷; 핷; ) HANGUL SYLLABLE HAEGS
+D578;D578;1112 1162 11AB;D578;1112 1162 11AB; # (핸; 핸; 핸; 핸; 핸; ) HANGUL SYLLABLE HAEN
+D579;D579;1112 1162 11AC;D579;1112 1162 11AC; # (핹; 핹; 핹; 핹; 핹; ) HANGUL SYLLABLE HAENJ
+D57A;D57A;1112 1162 11AD;D57A;1112 1162 11AD; # (핺; 핺; 핺; 핺; 핺; ) HANGUL SYLLABLE HAENH
+D57B;D57B;1112 1162 11AE;D57B;1112 1162 11AE; # (핻; 핻; 핻; 핻; 핻; ) HANGUL SYLLABLE HAED
+D57C;D57C;1112 1162 11AF;D57C;1112 1162 11AF; # (핼; 핼; 핼; 핼; 핼; ) HANGUL SYLLABLE HAEL
+D57D;D57D;1112 1162 11B0;D57D;1112 1162 11B0; # (핽; 핽; 핽; 핽; 핽; ) HANGUL SYLLABLE HAELG
+D57E;D57E;1112 1162 11B1;D57E;1112 1162 11B1; # (핾; 핾; 핾; 핾; 핾; ) HANGUL SYLLABLE HAELM
+D57F;D57F;1112 1162 11B2;D57F;1112 1162 11B2; # (핿; 핿; 핿; 핿; 핿; ) HANGUL SYLLABLE HAELB
+D580;D580;1112 1162 11B3;D580;1112 1162 11B3; # (햀; 햀; 햀; 햀; 햀; ) HANGUL SYLLABLE HAELS
+D581;D581;1112 1162 11B4;D581;1112 1162 11B4; # (í–; í–; 햁; í–; 햁; ) HANGUL SYLLABLE HAELT
+D582;D582;1112 1162 11B5;D582;1112 1162 11B5; # (햂; 햂; 햂; 햂; 햂; ) HANGUL SYLLABLE HAELP
+D583;D583;1112 1162 11B6;D583;1112 1162 11B6; # (햃; 햃; 햃; 햃; 햃; ) HANGUL SYLLABLE HAELH
+D584;D584;1112 1162 11B7;D584;1112 1162 11B7; # (햄; 햄; 햄; 햄; 햄; ) HANGUL SYLLABLE HAEM
+D585;D585;1112 1162 11B8;D585;1112 1162 11B8; # (햅; 햅; 햅; 햅; 햅; ) HANGUL SYLLABLE HAEB
+D586;D586;1112 1162 11B9;D586;1112 1162 11B9; # (햆; 햆; 햆; 햆; 햆; ) HANGUL SYLLABLE HAEBS
+D587;D587;1112 1162 11BA;D587;1112 1162 11BA; # (햇; 햇; 햇; 햇; 햇; ) HANGUL SYLLABLE HAES
+D588;D588;1112 1162 11BB;D588;1112 1162 11BB; # (했; 했; 했; 했; 했; ) HANGUL SYLLABLE HAESS
+D589;D589;1112 1162 11BC;D589;1112 1162 11BC; # (행; 행; 행; 행; 행; ) HANGUL SYLLABLE HAENG
+D58A;D58A;1112 1162 11BD;D58A;1112 1162 11BD; # (햊; 햊; 햊; 햊; 햊; ) HANGUL SYLLABLE HAEJ
+D58B;D58B;1112 1162 11BE;D58B;1112 1162 11BE; # (햋; 햋; 햋; 햋; 햋; ) HANGUL SYLLABLE HAEC
+D58C;D58C;1112 1162 11BF;D58C;1112 1162 11BF; # (햌; 햌; 햌; 햌; 햌; ) HANGUL SYLLABLE HAEK
+D58D;D58D;1112 1162 11C0;D58D;1112 1162 11C0; # (í–; í–; 햍; í–; 햍; ) HANGUL SYLLABLE HAET
+D58E;D58E;1112 1162 11C1;D58E;1112 1162 11C1; # (í–Ž; í–Ž; á„’á…¢á‡; í–Ž; á„’á…¢á‡; ) HANGUL SYLLABLE HAEP
+D58F;D58F;1112 1162 11C2;D58F;1112 1162 11C2; # (í–; í–; 햏; í–; 햏; ) HANGUL SYLLABLE HAEH
+D590;D590;1112 1163;D590;1112 1163; # (í–; í–; á„’á…£; í–; á„’á…£; ) HANGUL SYLLABLE HYA
+D591;D591;1112 1163 11A8;D591;1112 1163 11A8; # (햑; 햑; 햑; 햑; 햑; ) HANGUL SYLLABLE HYAG
+D592;D592;1112 1163 11A9;D592;1112 1163 11A9; # (햒; 햒; 햒; 햒; 햒; ) HANGUL SYLLABLE HYAGG
+D593;D593;1112 1163 11AA;D593;1112 1163 11AA; # (햓; 햓; 햓; 햓; 햓; ) HANGUL SYLLABLE HYAGS
+D594;D594;1112 1163 11AB;D594;1112 1163 11AB; # (햔; 햔; 햔; 햔; 햔; ) HANGUL SYLLABLE HYAN
+D595;D595;1112 1163 11AC;D595;1112 1163 11AC; # (햕; 햕; 햕; 햕; 햕; ) HANGUL SYLLABLE HYANJ
+D596;D596;1112 1163 11AD;D596;1112 1163 11AD; # (햖; 햖; 햖; 햖; 햖; ) HANGUL SYLLABLE HYANH
+D597;D597;1112 1163 11AE;D597;1112 1163 11AE; # (햗; 햗; 햗; 햗; 햗; ) HANGUL SYLLABLE HYAD
+D598;D598;1112 1163 11AF;D598;1112 1163 11AF; # (햘; 햘; 햘; 햘; 햘; ) HANGUL SYLLABLE HYAL
+D599;D599;1112 1163 11B0;D599;1112 1163 11B0; # (햙; 햙; 햙; 햙; 햙; ) HANGUL SYLLABLE HYALG
+D59A;D59A;1112 1163 11B1;D59A;1112 1163 11B1; # (햚; 햚; 햚; 햚; 햚; ) HANGUL SYLLABLE HYALM
+D59B;D59B;1112 1163 11B2;D59B;1112 1163 11B2; # (햛; 햛; 햛; 햛; 햛; ) HANGUL SYLLABLE HYALB
+D59C;D59C;1112 1163 11B3;D59C;1112 1163 11B3; # (햜; 햜; 햜; 햜; 햜; ) HANGUL SYLLABLE HYALS
+D59D;D59D;1112 1163 11B4;D59D;1112 1163 11B4; # (í–; í–; 햝; í–; 햝; ) HANGUL SYLLABLE HYALT
+D59E;D59E;1112 1163 11B5;D59E;1112 1163 11B5; # (햞; 햞; 햞; 햞; 햞; ) HANGUL SYLLABLE HYALP
+D59F;D59F;1112 1163 11B6;D59F;1112 1163 11B6; # (햟; 햟; 햟; 햟; 햟; ) HANGUL SYLLABLE HYALH
+D5A0;D5A0;1112 1163 11B7;D5A0;1112 1163 11B7; # (햠; 햠; 햠; 햠; 햠; ) HANGUL SYLLABLE HYAM
+D5A1;D5A1;1112 1163 11B8;D5A1;1112 1163 11B8; # (햡; 햡; 햡; 햡; 햡; ) HANGUL SYLLABLE HYAB
+D5A2;D5A2;1112 1163 11B9;D5A2;1112 1163 11B9; # (햢; 햢; 햢; 햢; 햢; ) HANGUL SYLLABLE HYABS
+D5A3;D5A3;1112 1163 11BA;D5A3;1112 1163 11BA; # (햣; 햣; 햣; 햣; 햣; ) HANGUL SYLLABLE HYAS
+D5A4;D5A4;1112 1163 11BB;D5A4;1112 1163 11BB; # (햤; 햤; 햤; 햤; 햤; ) HANGUL SYLLABLE HYASS
+D5A5;D5A5;1112 1163 11BC;D5A5;1112 1163 11BC; # (향; 향; 향; 향; 향; ) HANGUL SYLLABLE HYANG
+D5A6;D5A6;1112 1163 11BD;D5A6;1112 1163 11BD; # (햦; 햦; 햦; 햦; 햦; ) HANGUL SYLLABLE HYAJ
+D5A7;D5A7;1112 1163 11BE;D5A7;1112 1163 11BE; # (햧; 햧; 햧; 햧; 햧; ) HANGUL SYLLABLE HYAC
+D5A8;D5A8;1112 1163 11BF;D5A8;1112 1163 11BF; # (햨; 햨; 햨; 햨; 햨; ) HANGUL SYLLABLE HYAK
+D5A9;D5A9;1112 1163 11C0;D5A9;1112 1163 11C0; # (햩; 햩; 햩; 햩; 햩; ) HANGUL SYLLABLE HYAT
+D5AA;D5AA;1112 1163 11C1;D5AA;1112 1163 11C1; # (í–ª; í–ª; á„’á…£á‡; í–ª; á„’á…£á‡; ) HANGUL SYLLABLE HYAP
+D5AB;D5AB;1112 1163 11C2;D5AB;1112 1163 11C2; # (햫; 햫; 햫; 햫; 햫; ) HANGUL SYLLABLE HYAH
+D5AC;D5AC;1112 1164;D5AC;1112 1164; # (í–¬; í–¬; á„’á…¤; í–¬; á„’á…¤; ) HANGUL SYLLABLE HYAE
+D5AD;D5AD;1112 1164 11A8;D5AD;1112 1164 11A8; # (햭; 햭; 햭; 햭; 햭; ) HANGUL SYLLABLE HYAEG
+D5AE;D5AE;1112 1164 11A9;D5AE;1112 1164 11A9; # (햮; 햮; 햮; 햮; 햮; ) HANGUL SYLLABLE HYAEGG
+D5AF;D5AF;1112 1164 11AA;D5AF;1112 1164 11AA; # (햯; 햯; 햯; 햯; 햯; ) HANGUL SYLLABLE HYAEGS
+D5B0;D5B0;1112 1164 11AB;D5B0;1112 1164 11AB; # (햰; 햰; 햰; 햰; 햰; ) HANGUL SYLLABLE HYAEN
+D5B1;D5B1;1112 1164 11AC;D5B1;1112 1164 11AC; # (햱; 햱; 햱; 햱; 햱; ) HANGUL SYLLABLE HYAENJ
+D5B2;D5B2;1112 1164 11AD;D5B2;1112 1164 11AD; # (햲; 햲; 햲; 햲; 햲; ) HANGUL SYLLABLE HYAENH
+D5B3;D5B3;1112 1164 11AE;D5B3;1112 1164 11AE; # (햳; 햳; 햳; 햳; 햳; ) HANGUL SYLLABLE HYAED
+D5B4;D5B4;1112 1164 11AF;D5B4;1112 1164 11AF; # (햴; 햴; 햴; 햴; 햴; ) HANGUL SYLLABLE HYAEL
+D5B5;D5B5;1112 1164 11B0;D5B5;1112 1164 11B0; # (햵; 햵; 햵; 햵; 햵; ) HANGUL SYLLABLE HYAELG
+D5B6;D5B6;1112 1164 11B1;D5B6;1112 1164 11B1; # (햶; 햶; 햶; 햶; 햶; ) HANGUL SYLLABLE HYAELM
+D5B7;D5B7;1112 1164 11B2;D5B7;1112 1164 11B2; # (햷; 햷; 햷; 햷; 햷; ) HANGUL SYLLABLE HYAELB
+D5B8;D5B8;1112 1164 11B3;D5B8;1112 1164 11B3; # (햸; 햸; 햸; 햸; 햸; ) HANGUL SYLLABLE HYAELS
+D5B9;D5B9;1112 1164 11B4;D5B9;1112 1164 11B4; # (햹; 햹; 햹; 햹; 햹; ) HANGUL SYLLABLE HYAELT
+D5BA;D5BA;1112 1164 11B5;D5BA;1112 1164 11B5; # (햺; 햺; 햺; 햺; 햺; ) HANGUL SYLLABLE HYAELP
+D5BB;D5BB;1112 1164 11B6;D5BB;1112 1164 11B6; # (햻; 햻; 햻; 햻; 햻; ) HANGUL SYLLABLE HYAELH
+D5BC;D5BC;1112 1164 11B7;D5BC;1112 1164 11B7; # (햼; 햼; 햼; 햼; 햼; ) HANGUL SYLLABLE HYAEM
+D5BD;D5BD;1112 1164 11B8;D5BD;1112 1164 11B8; # (햽; 햽; 햽; 햽; 햽; ) HANGUL SYLLABLE HYAEB
+D5BE;D5BE;1112 1164 11B9;D5BE;1112 1164 11B9; # (햾; 햾; 햾; 햾; 햾; ) HANGUL SYLLABLE HYAEBS
+D5BF;D5BF;1112 1164 11BA;D5BF;1112 1164 11BA; # (햿; 햿; 햿; 햿; 햿; ) HANGUL SYLLABLE HYAES
+D5C0;D5C0;1112 1164 11BB;D5C0;1112 1164 11BB; # (헀; 헀; 헀; 헀; 헀; ) HANGUL SYLLABLE HYAESS
+D5C1;D5C1;1112 1164 11BC;D5C1;1112 1164 11BC; # (í—; í—; 헁; í—; 헁; ) HANGUL SYLLABLE HYAENG
+D5C2;D5C2;1112 1164 11BD;D5C2;1112 1164 11BD; # (헂; 헂; 헂; 헂; 헂; ) HANGUL SYLLABLE HYAEJ
+D5C3;D5C3;1112 1164 11BE;D5C3;1112 1164 11BE; # (헃; 헃; 헃; 헃; 헃; ) HANGUL SYLLABLE HYAEC
+D5C4;D5C4;1112 1164 11BF;D5C4;1112 1164 11BF; # (헄; 헄; 헄; 헄; 헄; ) HANGUL SYLLABLE HYAEK
+D5C5;D5C5;1112 1164 11C0;D5C5;1112 1164 11C0; # (헅; 헅; 헅; 헅; 헅; ) HANGUL SYLLABLE HYAET
+D5C6;D5C6;1112 1164 11C1;D5C6;1112 1164 11C1; # (í—†; í—†; á„’á…¤á‡; í—†; á„’á…¤á‡; ) HANGUL SYLLABLE HYAEP
+D5C7;D5C7;1112 1164 11C2;D5C7;1112 1164 11C2; # (헇; 헇; 헇; 헇; 헇; ) HANGUL SYLLABLE HYAEH
+D5C8;D5C8;1112 1165;D5C8;1112 1165; # (í—ˆ; í—ˆ; á„’á…¥; í—ˆ; á„’á…¥; ) HANGUL SYLLABLE HEO
+D5C9;D5C9;1112 1165 11A8;D5C9;1112 1165 11A8; # (헉; 헉; 헉; 헉; 헉; ) HANGUL SYLLABLE HEOG
+D5CA;D5CA;1112 1165 11A9;D5CA;1112 1165 11A9; # (헊; 헊; 헊; 헊; 헊; ) HANGUL SYLLABLE HEOGG
+D5CB;D5CB;1112 1165 11AA;D5CB;1112 1165 11AA; # (헋; 헋; 헋; 헋; 헋; ) HANGUL SYLLABLE HEOGS
+D5CC;D5CC;1112 1165 11AB;D5CC;1112 1165 11AB; # (헌; 헌; 헌; 헌; 헌; ) HANGUL SYLLABLE HEON
+D5CD;D5CD;1112 1165 11AC;D5CD;1112 1165 11AC; # (í—; í—; 헍; í—; 헍; ) HANGUL SYLLABLE HEONJ
+D5CE;D5CE;1112 1165 11AD;D5CE;1112 1165 11AD; # (헎; 헎; 헎; 헎; 헎; ) HANGUL SYLLABLE HEONH
+D5CF;D5CF;1112 1165 11AE;D5CF;1112 1165 11AE; # (í—; í—; 헏; í—; 헏; ) HANGUL SYLLABLE HEOD
+D5D0;D5D0;1112 1165 11AF;D5D0;1112 1165 11AF; # (í—; í—; 헐; í—; 헐; ) HANGUL SYLLABLE HEOL
+D5D1;D5D1;1112 1165 11B0;D5D1;1112 1165 11B0; # (헑; 헑; 헑; 헑; 헑; ) HANGUL SYLLABLE HEOLG
+D5D2;D5D2;1112 1165 11B1;D5D2;1112 1165 11B1; # (헒; 헒; 헒; 헒; 헒; ) HANGUL SYLLABLE HEOLM
+D5D3;D5D3;1112 1165 11B2;D5D3;1112 1165 11B2; # (헓; 헓; 헓; 헓; 헓; ) HANGUL SYLLABLE HEOLB
+D5D4;D5D4;1112 1165 11B3;D5D4;1112 1165 11B3; # (헔; 헔; 헔; 헔; 헔; ) HANGUL SYLLABLE HEOLS
+D5D5;D5D5;1112 1165 11B4;D5D5;1112 1165 11B4; # (헕; 헕; 헕; 헕; 헕; ) HANGUL SYLLABLE HEOLT
+D5D6;D5D6;1112 1165 11B5;D5D6;1112 1165 11B5; # (헖; 헖; 헖; 헖; 헖; ) HANGUL SYLLABLE HEOLP
+D5D7;D5D7;1112 1165 11B6;D5D7;1112 1165 11B6; # (헗; 헗; 헗; 헗; 헗; ) HANGUL SYLLABLE HEOLH
+D5D8;D5D8;1112 1165 11B7;D5D8;1112 1165 11B7; # (험; 험; 험; 험; 험; ) HANGUL SYLLABLE HEOM
+D5D9;D5D9;1112 1165 11B8;D5D9;1112 1165 11B8; # (헙; 헙; 헙; 헙; 헙; ) HANGUL SYLLABLE HEOB
+D5DA;D5DA;1112 1165 11B9;D5DA;1112 1165 11B9; # (헚; 헚; 헚; 헚; 헚; ) HANGUL SYLLABLE HEOBS
+D5DB;D5DB;1112 1165 11BA;D5DB;1112 1165 11BA; # (헛; 헛; 헛; 헛; 헛; ) HANGUL SYLLABLE HEOS
+D5DC;D5DC;1112 1165 11BB;D5DC;1112 1165 11BB; # (헜; 헜; 헜; 헜; 헜; ) HANGUL SYLLABLE HEOSS
+D5DD;D5DD;1112 1165 11BC;D5DD;1112 1165 11BC; # (í—; í—; 헝; í—; 헝; ) HANGUL SYLLABLE HEONG
+D5DE;D5DE;1112 1165 11BD;D5DE;1112 1165 11BD; # (헞; 헞; 헞; 헞; 헞; ) HANGUL SYLLABLE HEOJ
+D5DF;D5DF;1112 1165 11BE;D5DF;1112 1165 11BE; # (헟; 헟; 헟; 헟; 헟; ) HANGUL SYLLABLE HEOC
+D5E0;D5E0;1112 1165 11BF;D5E0;1112 1165 11BF; # (헠; 헠; 헠; 헠; 헠; ) HANGUL SYLLABLE HEOK
+D5E1;D5E1;1112 1165 11C0;D5E1;1112 1165 11C0; # (헡; 헡; 헡; 헡; 헡; ) HANGUL SYLLABLE HEOT
+D5E2;D5E2;1112 1165 11C1;D5E2;1112 1165 11C1; # (í—¢; í—¢; á„’á…¥á‡; í—¢; á„’á…¥á‡; ) HANGUL SYLLABLE HEOP
+D5E3;D5E3;1112 1165 11C2;D5E3;1112 1165 11C2; # (헣; 헣; 헣; 헣; 헣; ) HANGUL SYLLABLE HEOH
+D5E4;D5E4;1112 1166;D5E4;1112 1166; # (í—¤; í—¤; á„’á…¦; í—¤; á„’á…¦; ) HANGUL SYLLABLE HE
+D5E5;D5E5;1112 1166 11A8;D5E5;1112 1166 11A8; # (헥; 헥; 헥; 헥; 헥; ) HANGUL SYLLABLE HEG
+D5E6;D5E6;1112 1166 11A9;D5E6;1112 1166 11A9; # (헦; 헦; 헦; 헦; 헦; ) HANGUL SYLLABLE HEGG
+D5E7;D5E7;1112 1166 11AA;D5E7;1112 1166 11AA; # (헧; 헧; 헧; 헧; 헧; ) HANGUL SYLLABLE HEGS
+D5E8;D5E8;1112 1166 11AB;D5E8;1112 1166 11AB; # (헨; 헨; 헨; 헨; 헨; ) HANGUL SYLLABLE HEN
+D5E9;D5E9;1112 1166 11AC;D5E9;1112 1166 11AC; # (헩; 헩; 헩; 헩; 헩; ) HANGUL SYLLABLE HENJ
+D5EA;D5EA;1112 1166 11AD;D5EA;1112 1166 11AD; # (헪; 헪; 헪; 헪; 헪; ) HANGUL SYLLABLE HENH
+D5EB;D5EB;1112 1166 11AE;D5EB;1112 1166 11AE; # (헫; 헫; 헫; 헫; 헫; ) HANGUL SYLLABLE HED
+D5EC;D5EC;1112 1166 11AF;D5EC;1112 1166 11AF; # (헬; 헬; 헬; 헬; 헬; ) HANGUL SYLLABLE HEL
+D5ED;D5ED;1112 1166 11B0;D5ED;1112 1166 11B0; # (헭; 헭; 헭; 헭; 헭; ) HANGUL SYLLABLE HELG
+D5EE;D5EE;1112 1166 11B1;D5EE;1112 1166 11B1; # (헮; 헮; 헮; 헮; 헮; ) HANGUL SYLLABLE HELM
+D5EF;D5EF;1112 1166 11B2;D5EF;1112 1166 11B2; # (헯; 헯; 헯; 헯; 헯; ) HANGUL SYLLABLE HELB
+D5F0;D5F0;1112 1166 11B3;D5F0;1112 1166 11B3; # (헰; 헰; 헰; 헰; 헰; ) HANGUL SYLLABLE HELS
+D5F1;D5F1;1112 1166 11B4;D5F1;1112 1166 11B4; # (헱; 헱; 헱; 헱; 헱; ) HANGUL SYLLABLE HELT
+D5F2;D5F2;1112 1166 11B5;D5F2;1112 1166 11B5; # (헲; 헲; 헲; 헲; 헲; ) HANGUL SYLLABLE HELP
+D5F3;D5F3;1112 1166 11B6;D5F3;1112 1166 11B6; # (헳; 헳; 헳; 헳; 헳; ) HANGUL SYLLABLE HELH
+D5F4;D5F4;1112 1166 11B7;D5F4;1112 1166 11B7; # (헴; 헴; 헴; 헴; 헴; ) HANGUL SYLLABLE HEM
+D5F5;D5F5;1112 1166 11B8;D5F5;1112 1166 11B8; # (헵; 헵; 헵; 헵; 헵; ) HANGUL SYLLABLE HEB
+D5F6;D5F6;1112 1166 11B9;D5F6;1112 1166 11B9; # (헶; 헶; 헶; 헶; 헶; ) HANGUL SYLLABLE HEBS
+D5F7;D5F7;1112 1166 11BA;D5F7;1112 1166 11BA; # (헷; 헷; 헷; 헷; 헷; ) HANGUL SYLLABLE HES
+D5F8;D5F8;1112 1166 11BB;D5F8;1112 1166 11BB; # (헸; 헸; 헸; 헸; 헸; ) HANGUL SYLLABLE HESS
+D5F9;D5F9;1112 1166 11BC;D5F9;1112 1166 11BC; # (헹; 헹; 헹; 헹; 헹; ) HANGUL SYLLABLE HENG
+D5FA;D5FA;1112 1166 11BD;D5FA;1112 1166 11BD; # (헺; 헺; 헺; 헺; 헺; ) HANGUL SYLLABLE HEJ
+D5FB;D5FB;1112 1166 11BE;D5FB;1112 1166 11BE; # (헻; 헻; 헻; 헻; 헻; ) HANGUL SYLLABLE HEC
+D5FC;D5FC;1112 1166 11BF;D5FC;1112 1166 11BF; # (헼; 헼; 헼; 헼; 헼; ) HANGUL SYLLABLE HEK
+D5FD;D5FD;1112 1166 11C0;D5FD;1112 1166 11C0; # (헽; 헽; 헽; 헽; 헽; ) HANGUL SYLLABLE HET
+D5FE;D5FE;1112 1166 11C1;D5FE;1112 1166 11C1; # (í—¾; í—¾; á„’á…¦á‡; í—¾; á„’á…¦á‡; ) HANGUL SYLLABLE HEP
+D5FF;D5FF;1112 1166 11C2;D5FF;1112 1166 11C2; # (헿; 헿; 헿; 헿; 헿; ) HANGUL SYLLABLE HEH
+D600;D600;1112 1167;D600;1112 1167; # (혀; 혀; 혀; 혀; 혀; ) HANGUL SYLLABLE HYEO
+D601;D601;1112 1167 11A8;D601;1112 1167 11A8; # (í˜; í˜; 혁; í˜; 혁; ) HANGUL SYLLABLE HYEOG
+D602;D602;1112 1167 11A9;D602;1112 1167 11A9; # (혂; 혂; 혂; 혂; 혂; ) HANGUL SYLLABLE HYEOGG
+D603;D603;1112 1167 11AA;D603;1112 1167 11AA; # (혃; 혃; 혃; 혃; 혃; ) HANGUL SYLLABLE HYEOGS
+D604;D604;1112 1167 11AB;D604;1112 1167 11AB; # (현; 현; 현; 현; 현; ) HANGUL SYLLABLE HYEON
+D605;D605;1112 1167 11AC;D605;1112 1167 11AC; # (혅; 혅; 혅; 혅; 혅; ) HANGUL SYLLABLE HYEONJ
+D606;D606;1112 1167 11AD;D606;1112 1167 11AD; # (혆; 혆; 혆; 혆; 혆; ) HANGUL SYLLABLE HYEONH
+D607;D607;1112 1167 11AE;D607;1112 1167 11AE; # (혇; 혇; 혇; 혇; 혇; ) HANGUL SYLLABLE HYEOD
+D608;D608;1112 1167 11AF;D608;1112 1167 11AF; # (혈; 혈; 혈; 혈; 혈; ) HANGUL SYLLABLE HYEOL
+D609;D609;1112 1167 11B0;D609;1112 1167 11B0; # (혉; 혉; 혉; 혉; 혉; ) HANGUL SYLLABLE HYEOLG
+D60A;D60A;1112 1167 11B1;D60A;1112 1167 11B1; # (혊; 혊; 혊; 혊; 혊; ) HANGUL SYLLABLE HYEOLM
+D60B;D60B;1112 1167 11B2;D60B;1112 1167 11B2; # (혋; 혋; 혋; 혋; 혋; ) HANGUL SYLLABLE HYEOLB
+D60C;D60C;1112 1167 11B3;D60C;1112 1167 11B3; # (혌; 혌; 혌; 혌; 혌; ) HANGUL SYLLABLE HYEOLS
+D60D;D60D;1112 1167 11B4;D60D;1112 1167 11B4; # (í˜; í˜; 혍; í˜; 혍; ) HANGUL SYLLABLE HYEOLT
+D60E;D60E;1112 1167 11B5;D60E;1112 1167 11B5; # (혎; 혎; 혎; 혎; 혎; ) HANGUL SYLLABLE HYEOLP
+D60F;D60F;1112 1167 11B6;D60F;1112 1167 11B6; # (í˜; í˜; 혏; í˜; 혏; ) HANGUL SYLLABLE HYEOLH
+D610;D610;1112 1167 11B7;D610;1112 1167 11B7; # (í˜; í˜; 혐; í˜; 혐; ) HANGUL SYLLABLE HYEOM
+D611;D611;1112 1167 11B8;D611;1112 1167 11B8; # (협; 협; 협; 협; 협; ) HANGUL SYLLABLE HYEOB
+D612;D612;1112 1167 11B9;D612;1112 1167 11B9; # (혒; 혒; 혒; 혒; 혒; ) HANGUL SYLLABLE HYEOBS
+D613;D613;1112 1167 11BA;D613;1112 1167 11BA; # (혓; 혓; 혓; 혓; 혓; ) HANGUL SYLLABLE HYEOS
+D614;D614;1112 1167 11BB;D614;1112 1167 11BB; # (혔; 혔; 혔; 혔; 혔; ) HANGUL SYLLABLE HYEOSS
+D615;D615;1112 1167 11BC;D615;1112 1167 11BC; # (형; 형; 형; 형; 형; ) HANGUL SYLLABLE HYEONG
+D616;D616;1112 1167 11BD;D616;1112 1167 11BD; # (혖; 혖; 혖; 혖; 혖; ) HANGUL SYLLABLE HYEOJ
+D617;D617;1112 1167 11BE;D617;1112 1167 11BE; # (혗; 혗; 혗; 혗; 혗; ) HANGUL SYLLABLE HYEOC
+D618;D618;1112 1167 11BF;D618;1112 1167 11BF; # (혘; 혘; 혘; 혘; 혘; ) HANGUL SYLLABLE HYEOK
+D619;D619;1112 1167 11C0;D619;1112 1167 11C0; # (혙; 혙; 혙; 혙; 혙; ) HANGUL SYLLABLE HYEOT
+D61A;D61A;1112 1167 11C1;D61A;1112 1167 11C1; # (혚; 혚; á„’á…§á‡; 혚; á„’á…§á‡; ) HANGUL SYLLABLE HYEOP
+D61B;D61B;1112 1167 11C2;D61B;1112 1167 11C2; # (혛; 혛; 혛; 혛; 혛; ) HANGUL SYLLABLE HYEOH
+D61C;D61C;1112 1168;D61C;1112 1168; # (혜; 혜; 혜; 혜; 혜; ) HANGUL SYLLABLE HYE
+D61D;D61D;1112 1168 11A8;D61D;1112 1168 11A8; # (í˜; í˜; 혝; í˜; 혝; ) HANGUL SYLLABLE HYEG
+D61E;D61E;1112 1168 11A9;D61E;1112 1168 11A9; # (혞; 혞; 혞; 혞; 혞; ) HANGUL SYLLABLE HYEGG
+D61F;D61F;1112 1168 11AA;D61F;1112 1168 11AA; # (혟; 혟; 혟; 혟; 혟; ) HANGUL SYLLABLE HYEGS
+D620;D620;1112 1168 11AB;D620;1112 1168 11AB; # (혠; 혠; 혠; 혠; 혠; ) HANGUL SYLLABLE HYEN
+D621;D621;1112 1168 11AC;D621;1112 1168 11AC; # (혡; 혡; 혡; 혡; 혡; ) HANGUL SYLLABLE HYENJ
+D622;D622;1112 1168 11AD;D622;1112 1168 11AD; # (혢; 혢; 혢; 혢; 혢; ) HANGUL SYLLABLE HYENH
+D623;D623;1112 1168 11AE;D623;1112 1168 11AE; # (혣; 혣; 혣; 혣; 혣; ) HANGUL SYLLABLE HYED
+D624;D624;1112 1168 11AF;D624;1112 1168 11AF; # (혤; 혤; 혤; 혤; 혤; ) HANGUL SYLLABLE HYEL
+D625;D625;1112 1168 11B0;D625;1112 1168 11B0; # (혥; 혥; 혥; 혥; 혥; ) HANGUL SYLLABLE HYELG
+D626;D626;1112 1168 11B1;D626;1112 1168 11B1; # (혦; 혦; 혦; 혦; 혦; ) HANGUL SYLLABLE HYELM
+D627;D627;1112 1168 11B2;D627;1112 1168 11B2; # (혧; 혧; 혧; 혧; 혧; ) HANGUL SYLLABLE HYELB
+D628;D628;1112 1168 11B3;D628;1112 1168 11B3; # (혨; 혨; 혨; 혨; 혨; ) HANGUL SYLLABLE HYELS
+D629;D629;1112 1168 11B4;D629;1112 1168 11B4; # (혩; 혩; 혩; 혩; 혩; ) HANGUL SYLLABLE HYELT
+D62A;D62A;1112 1168 11B5;D62A;1112 1168 11B5; # (혪; 혪; 혪; 혪; 혪; ) HANGUL SYLLABLE HYELP
+D62B;D62B;1112 1168 11B6;D62B;1112 1168 11B6; # (혫; 혫; 혫; 혫; 혫; ) HANGUL SYLLABLE HYELH
+D62C;D62C;1112 1168 11B7;D62C;1112 1168 11B7; # (혬; 혬; 혬; 혬; 혬; ) HANGUL SYLLABLE HYEM
+D62D;D62D;1112 1168 11B8;D62D;1112 1168 11B8; # (혭; 혭; 혭; 혭; 혭; ) HANGUL SYLLABLE HYEB
+D62E;D62E;1112 1168 11B9;D62E;1112 1168 11B9; # (혮; 혮; 혮; 혮; 혮; ) HANGUL SYLLABLE HYEBS
+D62F;D62F;1112 1168 11BA;D62F;1112 1168 11BA; # (혯; 혯; 혯; 혯; 혯; ) HANGUL SYLLABLE HYES
+D630;D630;1112 1168 11BB;D630;1112 1168 11BB; # (혰; 혰; 혰; 혰; 혰; ) HANGUL SYLLABLE HYESS
+D631;D631;1112 1168 11BC;D631;1112 1168 11BC; # (혱; 혱; 혱; 혱; 혱; ) HANGUL SYLLABLE HYENG
+D632;D632;1112 1168 11BD;D632;1112 1168 11BD; # (혲; 혲; 혲; 혲; 혲; ) HANGUL SYLLABLE HYEJ
+D633;D633;1112 1168 11BE;D633;1112 1168 11BE; # (혳; 혳; 혳; 혳; 혳; ) HANGUL SYLLABLE HYEC
+D634;D634;1112 1168 11BF;D634;1112 1168 11BF; # (혴; 혴; 혴; 혴; 혴; ) HANGUL SYLLABLE HYEK
+D635;D635;1112 1168 11C0;D635;1112 1168 11C0; # (혵; 혵; 혵; 혵; 혵; ) HANGUL SYLLABLE HYET
+D636;D636;1112 1168 11C1;D636;1112 1168 11C1; # (혶; 혶; á„’á…¨á‡; 혶; á„’á…¨á‡; ) HANGUL SYLLABLE HYEP
+D637;D637;1112 1168 11C2;D637;1112 1168 11C2; # (혷; 혷; 혷; 혷; 혷; ) HANGUL SYLLABLE HYEH
+D638;D638;1112 1169;D638;1112 1169; # (호; 호; 호; 호; 호; ) HANGUL SYLLABLE HO
+D639;D639;1112 1169 11A8;D639;1112 1169 11A8; # (혹; 혹; 혹; 혹; 혹; ) HANGUL SYLLABLE HOG
+D63A;D63A;1112 1169 11A9;D63A;1112 1169 11A9; # (혺; 혺; 혺; 혺; 혺; ) HANGUL SYLLABLE HOGG
+D63B;D63B;1112 1169 11AA;D63B;1112 1169 11AA; # (혻; 혻; 혻; 혻; 혻; ) HANGUL SYLLABLE HOGS
+D63C;D63C;1112 1169 11AB;D63C;1112 1169 11AB; # (혼; 혼; 혼; 혼; 혼; ) HANGUL SYLLABLE HON
+D63D;D63D;1112 1169 11AC;D63D;1112 1169 11AC; # (혽; 혽; 혽; 혽; 혽; ) HANGUL SYLLABLE HONJ
+D63E;D63E;1112 1169 11AD;D63E;1112 1169 11AD; # (혾; 혾; 혾; 혾; 혾; ) HANGUL SYLLABLE HONH
+D63F;D63F;1112 1169 11AE;D63F;1112 1169 11AE; # (혿; 혿; 혿; 혿; 혿; ) HANGUL SYLLABLE HOD
+D640;D640;1112 1169 11AF;D640;1112 1169 11AF; # (홀; 홀; 홀; 홀; 홀; ) HANGUL SYLLABLE HOL
+D641;D641;1112 1169 11B0;D641;1112 1169 11B0; # (í™; í™; 홁; í™; 홁; ) HANGUL SYLLABLE HOLG
+D642;D642;1112 1169 11B1;D642;1112 1169 11B1; # (홂; 홂; 홂; 홂; 홂; ) HANGUL SYLLABLE HOLM
+D643;D643;1112 1169 11B2;D643;1112 1169 11B2; # (홃; 홃; 홃; 홃; 홃; ) HANGUL SYLLABLE HOLB
+D644;D644;1112 1169 11B3;D644;1112 1169 11B3; # (홄; 홄; 홄; 홄; 홄; ) HANGUL SYLLABLE HOLS
+D645;D645;1112 1169 11B4;D645;1112 1169 11B4; # (홅; 홅; 홅; 홅; 홅; ) HANGUL SYLLABLE HOLT
+D646;D646;1112 1169 11B5;D646;1112 1169 11B5; # (홆; 홆; 홆; 홆; 홆; ) HANGUL SYLLABLE HOLP
+D647;D647;1112 1169 11B6;D647;1112 1169 11B6; # (홇; 홇; 홇; 홇; 홇; ) HANGUL SYLLABLE HOLH
+D648;D648;1112 1169 11B7;D648;1112 1169 11B7; # (홈; 홈; 홈; 홈; 홈; ) HANGUL SYLLABLE HOM
+D649;D649;1112 1169 11B8;D649;1112 1169 11B8; # (홉; 홉; 홉; 홉; 홉; ) HANGUL SYLLABLE HOB
+D64A;D64A;1112 1169 11B9;D64A;1112 1169 11B9; # (홊; 홊; 홊; 홊; 홊; ) HANGUL SYLLABLE HOBS
+D64B;D64B;1112 1169 11BA;D64B;1112 1169 11BA; # (홋; 홋; 홋; 홋; 홋; ) HANGUL SYLLABLE HOS
+D64C;D64C;1112 1169 11BB;D64C;1112 1169 11BB; # (홌; 홌; 홌; 홌; 홌; ) HANGUL SYLLABLE HOSS
+D64D;D64D;1112 1169 11BC;D64D;1112 1169 11BC; # (í™; í™; 홍; í™; 홍; ) HANGUL SYLLABLE HONG
+D64E;D64E;1112 1169 11BD;D64E;1112 1169 11BD; # (홎; 홎; 홎; 홎; 홎; ) HANGUL SYLLABLE HOJ
+D64F;D64F;1112 1169 11BE;D64F;1112 1169 11BE; # (í™; í™; 홏; í™; 홏; ) HANGUL SYLLABLE HOC
+D650;D650;1112 1169 11BF;D650;1112 1169 11BF; # (í™; í™; 홐; í™; 홐; ) HANGUL SYLLABLE HOK
+D651;D651;1112 1169 11C0;D651;1112 1169 11C0; # (홑; 홑; 홑; 홑; 홑; ) HANGUL SYLLABLE HOT
+D652;D652;1112 1169 11C1;D652;1112 1169 11C1; # (í™’; í™’; á„’á…©á‡; í™’; á„’á…©á‡; ) HANGUL SYLLABLE HOP
+D653;D653;1112 1169 11C2;D653;1112 1169 11C2; # (홓; 홓; 홓; 홓; 홓; ) HANGUL SYLLABLE HOH
+D654;D654;1112 116A;D654;1112 116A; # (í™”; í™”; á„’á…ª; í™”; á„’á…ª; ) HANGUL SYLLABLE HWA
+D655;D655;1112 116A 11A8;D655;1112 116A 11A8; # (확; 확; 확; 확; 확; ) HANGUL SYLLABLE HWAG
+D656;D656;1112 116A 11A9;D656;1112 116A 11A9; # (홖; 홖; 홖; 홖; 홖; ) HANGUL SYLLABLE HWAGG
+D657;D657;1112 116A 11AA;D657;1112 116A 11AA; # (홗; 홗; 홗; 홗; 홗; ) HANGUL SYLLABLE HWAGS
+D658;D658;1112 116A 11AB;D658;1112 116A 11AB; # (환; 환; 환; 환; 환; ) HANGUL SYLLABLE HWAN
+D659;D659;1112 116A 11AC;D659;1112 116A 11AC; # (홙; 홙; 홙; 홙; 홙; ) HANGUL SYLLABLE HWANJ
+D65A;D65A;1112 116A 11AD;D65A;1112 116A 11AD; # (홚; 홚; 홚; 홚; 홚; ) HANGUL SYLLABLE HWANH
+D65B;D65B;1112 116A 11AE;D65B;1112 116A 11AE; # (홛; 홛; 홛; 홛; 홛; ) HANGUL SYLLABLE HWAD
+D65C;D65C;1112 116A 11AF;D65C;1112 116A 11AF; # (활; 활; 활; 활; 활; ) HANGUL SYLLABLE HWAL
+D65D;D65D;1112 116A 11B0;D65D;1112 116A 11B0; # (í™; í™; 홝; í™; 홝; ) HANGUL SYLLABLE HWALG
+D65E;D65E;1112 116A 11B1;D65E;1112 116A 11B1; # (홞; 홞; 홞; 홞; 홞; ) HANGUL SYLLABLE HWALM
+D65F;D65F;1112 116A 11B2;D65F;1112 116A 11B2; # (홟; 홟; 홟; 홟; 홟; ) HANGUL SYLLABLE HWALB
+D660;D660;1112 116A 11B3;D660;1112 116A 11B3; # (홠; 홠; 홠; 홠; 홠; ) HANGUL SYLLABLE HWALS
+D661;D661;1112 116A 11B4;D661;1112 116A 11B4; # (홡; 홡; 홡; 홡; 홡; ) HANGUL SYLLABLE HWALT
+D662;D662;1112 116A 11B5;D662;1112 116A 11B5; # (홢; 홢; 홢; 홢; 홢; ) HANGUL SYLLABLE HWALP
+D663;D663;1112 116A 11B6;D663;1112 116A 11B6; # (홣; 홣; 홣; 홣; 홣; ) HANGUL SYLLABLE HWALH
+D664;D664;1112 116A 11B7;D664;1112 116A 11B7; # (홤; 홤; 홤; 홤; 홤; ) HANGUL SYLLABLE HWAM
+D665;D665;1112 116A 11B8;D665;1112 116A 11B8; # (홥; 홥; 홥; 홥; 홥; ) HANGUL SYLLABLE HWAB
+D666;D666;1112 116A 11B9;D666;1112 116A 11B9; # (홦; 홦; 홦; 홦; 홦; ) HANGUL SYLLABLE HWABS
+D667;D667;1112 116A 11BA;D667;1112 116A 11BA; # (홧; 홧; 홧; 홧; 홧; ) HANGUL SYLLABLE HWAS
+D668;D668;1112 116A 11BB;D668;1112 116A 11BB; # (홨; 홨; 홨; 홨; 홨; ) HANGUL SYLLABLE HWASS
+D669;D669;1112 116A 11BC;D669;1112 116A 11BC; # (황; 황; 황; 황; 황; ) HANGUL SYLLABLE HWANG
+D66A;D66A;1112 116A 11BD;D66A;1112 116A 11BD; # (홪; 홪; 홪; 홪; 홪; ) HANGUL SYLLABLE HWAJ
+D66B;D66B;1112 116A 11BE;D66B;1112 116A 11BE; # (홫; 홫; 홫; 홫; 홫; ) HANGUL SYLLABLE HWAC
+D66C;D66C;1112 116A 11BF;D66C;1112 116A 11BF; # (홬; 홬; 홬; 홬; 홬; ) HANGUL SYLLABLE HWAK
+D66D;D66D;1112 116A 11C0;D66D;1112 116A 11C0; # (홭; 홭; 홭; 홭; 홭; ) HANGUL SYLLABLE HWAT
+D66E;D66E;1112 116A 11C1;D66E;1112 116A 11C1; # (í™®; í™®; á„’á…ªá‡; í™®; á„’á…ªá‡; ) HANGUL SYLLABLE HWAP
+D66F;D66F;1112 116A 11C2;D66F;1112 116A 11C2; # (홯; 홯; 홯; 홯; 홯; ) HANGUL SYLLABLE HWAH
+D670;D670;1112 116B;D670;1112 116B; # (í™°; í™°; á„’á…«; í™°; á„’á…«; ) HANGUL SYLLABLE HWAE
+D671;D671;1112 116B 11A8;D671;1112 116B 11A8; # (홱; 홱; 홱; 홱; 홱; ) HANGUL SYLLABLE HWAEG
+D672;D672;1112 116B 11A9;D672;1112 116B 11A9; # (홲; 홲; 홲; 홲; 홲; ) HANGUL SYLLABLE HWAEGG
+D673;D673;1112 116B 11AA;D673;1112 116B 11AA; # (홳; 홳; 홳; 홳; 홳; ) HANGUL SYLLABLE HWAEGS
+D674;D674;1112 116B 11AB;D674;1112 116B 11AB; # (홴; 홴; 홴; 홴; 홴; ) HANGUL SYLLABLE HWAEN
+D675;D675;1112 116B 11AC;D675;1112 116B 11AC; # (홵; 홵; 홵; 홵; 홵; ) HANGUL SYLLABLE HWAENJ
+D676;D676;1112 116B 11AD;D676;1112 116B 11AD; # (홶; 홶; 홶; 홶; 홶; ) HANGUL SYLLABLE HWAENH
+D677;D677;1112 116B 11AE;D677;1112 116B 11AE; # (홷; 홷; 홷; 홷; 홷; ) HANGUL SYLLABLE HWAED
+D678;D678;1112 116B 11AF;D678;1112 116B 11AF; # (홸; 홸; 홸; 홸; 홸; ) HANGUL SYLLABLE HWAEL
+D679;D679;1112 116B 11B0;D679;1112 116B 11B0; # (홹; 홹; 홹; 홹; 홹; ) HANGUL SYLLABLE HWAELG
+D67A;D67A;1112 116B 11B1;D67A;1112 116B 11B1; # (홺; 홺; 홺; 홺; 홺; ) HANGUL SYLLABLE HWAELM
+D67B;D67B;1112 116B 11B2;D67B;1112 116B 11B2; # (홻; 홻; 홻; 홻; 홻; ) HANGUL SYLLABLE HWAELB
+D67C;D67C;1112 116B 11B3;D67C;1112 116B 11B3; # (홼; 홼; 홼; 홼; 홼; ) HANGUL SYLLABLE HWAELS
+D67D;D67D;1112 116B 11B4;D67D;1112 116B 11B4; # (홽; 홽; 홽; 홽; 홽; ) HANGUL SYLLABLE HWAELT
+D67E;D67E;1112 116B 11B5;D67E;1112 116B 11B5; # (홾; 홾; 홾; 홾; 홾; ) HANGUL SYLLABLE HWAELP
+D67F;D67F;1112 116B 11B6;D67F;1112 116B 11B6; # (홿; 홿; 홿; 홿; 홿; ) HANGUL SYLLABLE HWAELH
+D680;D680;1112 116B 11B7;D680;1112 116B 11B7; # (횀; 횀; 횀; 횀; 횀; ) HANGUL SYLLABLE HWAEM
+D681;D681;1112 116B 11B8;D681;1112 116B 11B8; # (íš; íš; 횁; íš; 횁; ) HANGUL SYLLABLE HWAEB
+D682;D682;1112 116B 11B9;D682;1112 116B 11B9; # (횂; 횂; 횂; 횂; 횂; ) HANGUL SYLLABLE HWAEBS
+D683;D683;1112 116B 11BA;D683;1112 116B 11BA; # (횃; 횃; 횃; 횃; 횃; ) HANGUL SYLLABLE HWAES
+D684;D684;1112 116B 11BB;D684;1112 116B 11BB; # (횄; 횄; 횄; 횄; 횄; ) HANGUL SYLLABLE HWAESS
+D685;D685;1112 116B 11BC;D685;1112 116B 11BC; # (횅; 횅; 횅; 횅; 횅; ) HANGUL SYLLABLE HWAENG
+D686;D686;1112 116B 11BD;D686;1112 116B 11BD; # (횆; 횆; 횆; 횆; 횆; ) HANGUL SYLLABLE HWAEJ
+D687;D687;1112 116B 11BE;D687;1112 116B 11BE; # (횇; 횇; 횇; 횇; 횇; ) HANGUL SYLLABLE HWAEC
+D688;D688;1112 116B 11BF;D688;1112 116B 11BF; # (횈; 횈; 횈; 횈; 횈; ) HANGUL SYLLABLE HWAEK
+D689;D689;1112 116B 11C0;D689;1112 116B 11C0; # (횉; 횉; 횉; 횉; 횉; ) HANGUL SYLLABLE HWAET
+D68A;D68A;1112 116B 11C1;D68A;1112 116B 11C1; # (횊; 횊; á„’á…«á‡; 횊; á„’á…«á‡; ) HANGUL SYLLABLE HWAEP
+D68B;D68B;1112 116B 11C2;D68B;1112 116B 11C2; # (횋; 횋; 횋; 횋; 횋; ) HANGUL SYLLABLE HWAEH
+D68C;D68C;1112 116C;D68C;1112 116C; # (회; 회; 회; 회; 회; ) HANGUL SYLLABLE HOE
+D68D;D68D;1112 116C 11A8;D68D;1112 116C 11A8; # (íš; íš; 획; íš; 획; ) HANGUL SYLLABLE HOEG
+D68E;D68E;1112 116C 11A9;D68E;1112 116C 11A9; # (횎; 횎; 횎; 횎; 횎; ) HANGUL SYLLABLE HOEGG
+D68F;D68F;1112 116C 11AA;D68F;1112 116C 11AA; # (íš; íš; 횏; íš; 횏; ) HANGUL SYLLABLE HOEGS
+D690;D690;1112 116C 11AB;D690;1112 116C 11AB; # (íš; íš; 횐; íš; 횐; ) HANGUL SYLLABLE HOEN
+D691;D691;1112 116C 11AC;D691;1112 116C 11AC; # (횑; 횑; 횑; 횑; 횑; ) HANGUL SYLLABLE HOENJ
+D692;D692;1112 116C 11AD;D692;1112 116C 11AD; # (횒; 횒; 횒; 횒; 횒; ) HANGUL SYLLABLE HOENH
+D693;D693;1112 116C 11AE;D693;1112 116C 11AE; # (횓; 횓; 횓; 횓; 횓; ) HANGUL SYLLABLE HOED
+D694;D694;1112 116C 11AF;D694;1112 116C 11AF; # (횔; 횔; 횔; 횔; 횔; ) HANGUL SYLLABLE HOEL
+D695;D695;1112 116C 11B0;D695;1112 116C 11B0; # (횕; 횕; 횕; 횕; 횕; ) HANGUL SYLLABLE HOELG
+D696;D696;1112 116C 11B1;D696;1112 116C 11B1; # (횖; 횖; 횖; 횖; 횖; ) HANGUL SYLLABLE HOELM
+D697;D697;1112 116C 11B2;D697;1112 116C 11B2; # (횗; 횗; 횗; 횗; 횗; ) HANGUL SYLLABLE HOELB
+D698;D698;1112 116C 11B3;D698;1112 116C 11B3; # (횘; 횘; 횘; 횘; 횘; ) HANGUL SYLLABLE HOELS
+D699;D699;1112 116C 11B4;D699;1112 116C 11B4; # (횙; 횙; 횙; 횙; 횙; ) HANGUL SYLLABLE HOELT
+D69A;D69A;1112 116C 11B5;D69A;1112 116C 11B5; # (횚; 횚; 횚; 횚; 횚; ) HANGUL SYLLABLE HOELP
+D69B;D69B;1112 116C 11B6;D69B;1112 116C 11B6; # (횛; 횛; 횛; 횛; 횛; ) HANGUL SYLLABLE HOELH
+D69C;D69C;1112 116C 11B7;D69C;1112 116C 11B7; # (횜; 횜; 횜; 횜; 횜; ) HANGUL SYLLABLE HOEM
+D69D;D69D;1112 116C 11B8;D69D;1112 116C 11B8; # (íš; íš; 횝; íš; 횝; ) HANGUL SYLLABLE HOEB
+D69E;D69E;1112 116C 11B9;D69E;1112 116C 11B9; # (횞; 횞; 횞; 횞; 횞; ) HANGUL SYLLABLE HOEBS
+D69F;D69F;1112 116C 11BA;D69F;1112 116C 11BA; # (횟; 횟; 횟; 횟; 횟; ) HANGUL SYLLABLE HOES
+D6A0;D6A0;1112 116C 11BB;D6A0;1112 116C 11BB; # (횠; 횠; 횠; 횠; 횠; ) HANGUL SYLLABLE HOESS
+D6A1;D6A1;1112 116C 11BC;D6A1;1112 116C 11BC; # (횡; 횡; 횡; 횡; 횡; ) HANGUL SYLLABLE HOENG
+D6A2;D6A2;1112 116C 11BD;D6A2;1112 116C 11BD; # (횢; 횢; 횢; 횢; 횢; ) HANGUL SYLLABLE HOEJ
+D6A3;D6A3;1112 116C 11BE;D6A3;1112 116C 11BE; # (횣; 횣; 횣; 횣; 횣; ) HANGUL SYLLABLE HOEC
+D6A4;D6A4;1112 116C 11BF;D6A4;1112 116C 11BF; # (횤; 횤; 횤; 횤; 횤; ) HANGUL SYLLABLE HOEK
+D6A5;D6A5;1112 116C 11C0;D6A5;1112 116C 11C0; # (횥; 횥; 횥; 횥; 횥; ) HANGUL SYLLABLE HOET
+D6A6;D6A6;1112 116C 11C1;D6A6;1112 116C 11C1; # (횦; 횦; á„’á…¬á‡; 횦; á„’á…¬á‡; ) HANGUL SYLLABLE HOEP
+D6A7;D6A7;1112 116C 11C2;D6A7;1112 116C 11C2; # (횧; 횧; 횧; 횧; 횧; ) HANGUL SYLLABLE HOEH
+D6A8;D6A8;1112 116D;D6A8;1112 116D; # (효; 효; 효; 효; 효; ) HANGUL SYLLABLE HYO
+D6A9;D6A9;1112 116D 11A8;D6A9;1112 116D 11A8; # (횩; 횩; 횩; 횩; 횩; ) HANGUL SYLLABLE HYOG
+D6AA;D6AA;1112 116D 11A9;D6AA;1112 116D 11A9; # (횪; 횪; 횪; 횪; 횪; ) HANGUL SYLLABLE HYOGG
+D6AB;D6AB;1112 116D 11AA;D6AB;1112 116D 11AA; # (횫; 횫; 횫; 횫; 횫; ) HANGUL SYLLABLE HYOGS
+D6AC;D6AC;1112 116D 11AB;D6AC;1112 116D 11AB; # (횬; 횬; 횬; 횬; 횬; ) HANGUL SYLLABLE HYON
+D6AD;D6AD;1112 116D 11AC;D6AD;1112 116D 11AC; # (횭; 횭; 횭; 횭; 횭; ) HANGUL SYLLABLE HYONJ
+D6AE;D6AE;1112 116D 11AD;D6AE;1112 116D 11AD; # (횮; 횮; 횮; 횮; 횮; ) HANGUL SYLLABLE HYONH
+D6AF;D6AF;1112 116D 11AE;D6AF;1112 116D 11AE; # (횯; 횯; 횯; 횯; 횯; ) HANGUL SYLLABLE HYOD
+D6B0;D6B0;1112 116D 11AF;D6B0;1112 116D 11AF; # (횰; 횰; 횰; 횰; 횰; ) HANGUL SYLLABLE HYOL
+D6B1;D6B1;1112 116D 11B0;D6B1;1112 116D 11B0; # (횱; 횱; 횱; 횱; 횱; ) HANGUL SYLLABLE HYOLG
+D6B2;D6B2;1112 116D 11B1;D6B2;1112 116D 11B1; # (횲; 횲; 횲; 횲; 횲; ) HANGUL SYLLABLE HYOLM
+D6B3;D6B3;1112 116D 11B2;D6B3;1112 116D 11B2; # (횳; 횳; 횳; 횳; 횳; ) HANGUL SYLLABLE HYOLB
+D6B4;D6B4;1112 116D 11B3;D6B4;1112 116D 11B3; # (횴; 횴; 횴; 횴; 횴; ) HANGUL SYLLABLE HYOLS
+D6B5;D6B5;1112 116D 11B4;D6B5;1112 116D 11B4; # (횵; 횵; 횵; 횵; 횵; ) HANGUL SYLLABLE HYOLT
+D6B6;D6B6;1112 116D 11B5;D6B6;1112 116D 11B5; # (횶; 횶; 횶; 횶; 횶; ) HANGUL SYLLABLE HYOLP
+D6B7;D6B7;1112 116D 11B6;D6B7;1112 116D 11B6; # (횷; 횷; 횷; 횷; 횷; ) HANGUL SYLLABLE HYOLH
+D6B8;D6B8;1112 116D 11B7;D6B8;1112 116D 11B7; # (횸; 횸; 횸; 횸; 횸; ) HANGUL SYLLABLE HYOM
+D6B9;D6B9;1112 116D 11B8;D6B9;1112 116D 11B8; # (횹; 횹; 횹; 횹; 횹; ) HANGUL SYLLABLE HYOB
+D6BA;D6BA;1112 116D 11B9;D6BA;1112 116D 11B9; # (횺; 횺; 횺; 횺; 횺; ) HANGUL SYLLABLE HYOBS
+D6BB;D6BB;1112 116D 11BA;D6BB;1112 116D 11BA; # (횻; 횻; 횻; 횻; 횻; ) HANGUL SYLLABLE HYOS
+D6BC;D6BC;1112 116D 11BB;D6BC;1112 116D 11BB; # (횼; 횼; 횼; 횼; 횼; ) HANGUL SYLLABLE HYOSS
+D6BD;D6BD;1112 116D 11BC;D6BD;1112 116D 11BC; # (횽; 횽; 횽; 횽; 횽; ) HANGUL SYLLABLE HYONG
+D6BE;D6BE;1112 116D 11BD;D6BE;1112 116D 11BD; # (횾; 횾; 횾; 횾; 횾; ) HANGUL SYLLABLE HYOJ
+D6BF;D6BF;1112 116D 11BE;D6BF;1112 116D 11BE; # (횿; 횿; 횿; 횿; 횿; ) HANGUL SYLLABLE HYOC
+D6C0;D6C0;1112 116D 11BF;D6C0;1112 116D 11BF; # (훀; 훀; 훀; 훀; 훀; ) HANGUL SYLLABLE HYOK
+D6C1;D6C1;1112 116D 11C0;D6C1;1112 116D 11C0; # (í›; í›; 훁; í›; 훁; ) HANGUL SYLLABLE HYOT
+D6C2;D6C2;1112 116D 11C1;D6C2;1112 116D 11C1; # (훂; 훂; á„’á…­á‡; 훂; á„’á…­á‡; ) HANGUL SYLLABLE HYOP
+D6C3;D6C3;1112 116D 11C2;D6C3;1112 116D 11C2; # (훃; 훃; 훃; 훃; 훃; ) HANGUL SYLLABLE HYOH
+D6C4;D6C4;1112 116E;D6C4;1112 116E; # (후; 후; 후; 후; 후; ) HANGUL SYLLABLE HU
+D6C5;D6C5;1112 116E 11A8;D6C5;1112 116E 11A8; # (훅; 훅; 훅; 훅; 훅; ) HANGUL SYLLABLE HUG
+D6C6;D6C6;1112 116E 11A9;D6C6;1112 116E 11A9; # (훆; 훆; 훆; 훆; 훆; ) HANGUL SYLLABLE HUGG
+D6C7;D6C7;1112 116E 11AA;D6C7;1112 116E 11AA; # (훇; 훇; 훇; 훇; 훇; ) HANGUL SYLLABLE HUGS
+D6C8;D6C8;1112 116E 11AB;D6C8;1112 116E 11AB; # (훈; 훈; 훈; 훈; 훈; ) HANGUL SYLLABLE HUN
+D6C9;D6C9;1112 116E 11AC;D6C9;1112 116E 11AC; # (훉; 훉; 훉; 훉; 훉; ) HANGUL SYLLABLE HUNJ
+D6CA;D6CA;1112 116E 11AD;D6CA;1112 116E 11AD; # (훊; 훊; 훊; 훊; 훊; ) HANGUL SYLLABLE HUNH
+D6CB;D6CB;1112 116E 11AE;D6CB;1112 116E 11AE; # (훋; 훋; 훋; 훋; 훋; ) HANGUL SYLLABLE HUD
+D6CC;D6CC;1112 116E 11AF;D6CC;1112 116E 11AF; # (훌; 훌; 훌; 훌; 훌; ) HANGUL SYLLABLE HUL
+D6CD;D6CD;1112 116E 11B0;D6CD;1112 116E 11B0; # (í›; í›; 훍; í›; 훍; ) HANGUL SYLLABLE HULG
+D6CE;D6CE;1112 116E 11B1;D6CE;1112 116E 11B1; # (훎; 훎; 훎; 훎; 훎; ) HANGUL SYLLABLE HULM
+D6CF;D6CF;1112 116E 11B2;D6CF;1112 116E 11B2; # (í›; í›; 훏; í›; 훏; ) HANGUL SYLLABLE HULB
+D6D0;D6D0;1112 116E 11B3;D6D0;1112 116E 11B3; # (í›; í›; 훐; í›; 훐; ) HANGUL SYLLABLE HULS
+D6D1;D6D1;1112 116E 11B4;D6D1;1112 116E 11B4; # (훑; 훑; 훑; 훑; 훑; ) HANGUL SYLLABLE HULT
+D6D2;D6D2;1112 116E 11B5;D6D2;1112 116E 11B5; # (훒; 훒; 훒; 훒; 훒; ) HANGUL SYLLABLE HULP
+D6D3;D6D3;1112 116E 11B6;D6D3;1112 116E 11B6; # (훓; 훓; 훓; 훓; 훓; ) HANGUL SYLLABLE HULH
+D6D4;D6D4;1112 116E 11B7;D6D4;1112 116E 11B7; # (훔; 훔; 훔; 훔; 훔; ) HANGUL SYLLABLE HUM
+D6D5;D6D5;1112 116E 11B8;D6D5;1112 116E 11B8; # (훕; 훕; 훕; 훕; 훕; ) HANGUL SYLLABLE HUB
+D6D6;D6D6;1112 116E 11B9;D6D6;1112 116E 11B9; # (훖; 훖; 훖; 훖; 훖; ) HANGUL SYLLABLE HUBS
+D6D7;D6D7;1112 116E 11BA;D6D7;1112 116E 11BA; # (훗; 훗; 훗; 훗; 훗; ) HANGUL SYLLABLE HUS
+D6D8;D6D8;1112 116E 11BB;D6D8;1112 116E 11BB; # (훘; 훘; 훘; 훘; 훘; ) HANGUL SYLLABLE HUSS
+D6D9;D6D9;1112 116E 11BC;D6D9;1112 116E 11BC; # (훙; 훙; 훙; 훙; 훙; ) HANGUL SYLLABLE HUNG
+D6DA;D6DA;1112 116E 11BD;D6DA;1112 116E 11BD; # (훚; 훚; 훚; 훚; 훚; ) HANGUL SYLLABLE HUJ
+D6DB;D6DB;1112 116E 11BE;D6DB;1112 116E 11BE; # (훛; 훛; 훛; 훛; 훛; ) HANGUL SYLLABLE HUC
+D6DC;D6DC;1112 116E 11BF;D6DC;1112 116E 11BF; # (훜; 훜; 훜; 훜; 훜; ) HANGUL SYLLABLE HUK
+D6DD;D6DD;1112 116E 11C0;D6DD;1112 116E 11C0; # (í›; í›; 훝; í›; 훝; ) HANGUL SYLLABLE HUT
+D6DE;D6DE;1112 116E 11C1;D6DE;1112 116E 11C1; # (훞; 훞; á„’á…®á‡; 훞; á„’á…®á‡; ) HANGUL SYLLABLE HUP
+D6DF;D6DF;1112 116E 11C2;D6DF;1112 116E 11C2; # (훟; 훟; 훟; 훟; 훟; ) HANGUL SYLLABLE HUH
+D6E0;D6E0;1112 116F;D6E0;1112 116F; # (í› ; í› ; á„’á…¯; í› ; á„’á…¯; ) HANGUL SYLLABLE HWEO
+D6E1;D6E1;1112 116F 11A8;D6E1;1112 116F 11A8; # (훡; 훡; 훡; 훡; 훡; ) HANGUL SYLLABLE HWEOG
+D6E2;D6E2;1112 116F 11A9;D6E2;1112 116F 11A9; # (훢; 훢; 훢; 훢; 훢; ) HANGUL SYLLABLE HWEOGG
+D6E3;D6E3;1112 116F 11AA;D6E3;1112 116F 11AA; # (훣; 훣; 훣; 훣; 훣; ) HANGUL SYLLABLE HWEOGS
+D6E4;D6E4;1112 116F 11AB;D6E4;1112 116F 11AB; # (훤; 훤; 훤; 훤; 훤; ) HANGUL SYLLABLE HWEON
+D6E5;D6E5;1112 116F 11AC;D6E5;1112 116F 11AC; # (훥; 훥; 훥; 훥; 훥; ) HANGUL SYLLABLE HWEONJ
+D6E6;D6E6;1112 116F 11AD;D6E6;1112 116F 11AD; # (훦; 훦; 훦; 훦; 훦; ) HANGUL SYLLABLE HWEONH
+D6E7;D6E7;1112 116F 11AE;D6E7;1112 116F 11AE; # (훧; 훧; 훧; 훧; 훧; ) HANGUL SYLLABLE HWEOD
+D6E8;D6E8;1112 116F 11AF;D6E8;1112 116F 11AF; # (훨; 훨; 훨; 훨; 훨; ) HANGUL SYLLABLE HWEOL
+D6E9;D6E9;1112 116F 11B0;D6E9;1112 116F 11B0; # (훩; 훩; 훩; 훩; 훩; ) HANGUL SYLLABLE HWEOLG
+D6EA;D6EA;1112 116F 11B1;D6EA;1112 116F 11B1; # (훪; 훪; 훪; 훪; 훪; ) HANGUL SYLLABLE HWEOLM
+D6EB;D6EB;1112 116F 11B2;D6EB;1112 116F 11B2; # (훫; 훫; 훫; 훫; 훫; ) HANGUL SYLLABLE HWEOLB
+D6EC;D6EC;1112 116F 11B3;D6EC;1112 116F 11B3; # (훬; 훬; 훬; 훬; 훬; ) HANGUL SYLLABLE HWEOLS
+D6ED;D6ED;1112 116F 11B4;D6ED;1112 116F 11B4; # (훭; 훭; 훭; 훭; 훭; ) HANGUL SYLLABLE HWEOLT
+D6EE;D6EE;1112 116F 11B5;D6EE;1112 116F 11B5; # (훮; 훮; 훮; 훮; 훮; ) HANGUL SYLLABLE HWEOLP
+D6EF;D6EF;1112 116F 11B6;D6EF;1112 116F 11B6; # (훯; 훯; 훯; 훯; 훯; ) HANGUL SYLLABLE HWEOLH
+D6F0;D6F0;1112 116F 11B7;D6F0;1112 116F 11B7; # (훰; 훰; 훰; 훰; 훰; ) HANGUL SYLLABLE HWEOM
+D6F1;D6F1;1112 116F 11B8;D6F1;1112 116F 11B8; # (훱; 훱; 훱; 훱; 훱; ) HANGUL SYLLABLE HWEOB
+D6F2;D6F2;1112 116F 11B9;D6F2;1112 116F 11B9; # (훲; 훲; 훲; 훲; 훲; ) HANGUL SYLLABLE HWEOBS
+D6F3;D6F3;1112 116F 11BA;D6F3;1112 116F 11BA; # (훳; 훳; 훳; 훳; 훳; ) HANGUL SYLLABLE HWEOS
+D6F4;D6F4;1112 116F 11BB;D6F4;1112 116F 11BB; # (훴; 훴; 훴; 훴; 훴; ) HANGUL SYLLABLE HWEOSS
+D6F5;D6F5;1112 116F 11BC;D6F5;1112 116F 11BC; # (훵; 훵; 훵; 훵; 훵; ) HANGUL SYLLABLE HWEONG
+D6F6;D6F6;1112 116F 11BD;D6F6;1112 116F 11BD; # (훶; 훶; 훶; 훶; 훶; ) HANGUL SYLLABLE HWEOJ
+D6F7;D6F7;1112 116F 11BE;D6F7;1112 116F 11BE; # (훷; 훷; 훷; 훷; 훷; ) HANGUL SYLLABLE HWEOC
+D6F8;D6F8;1112 116F 11BF;D6F8;1112 116F 11BF; # (훸; 훸; 훸; 훸; 훸; ) HANGUL SYLLABLE HWEOK
+D6F9;D6F9;1112 116F 11C0;D6F9;1112 116F 11C0; # (훹; 훹; 훹; 훹; 훹; ) HANGUL SYLLABLE HWEOT
+D6FA;D6FA;1112 116F 11C1;D6FA;1112 116F 11C1; # (훺; 훺; á„’á…¯á‡; 훺; á„’á…¯á‡; ) HANGUL SYLLABLE HWEOP
+D6FB;D6FB;1112 116F 11C2;D6FB;1112 116F 11C2; # (훻; 훻; 훻; 훻; 훻; ) HANGUL SYLLABLE HWEOH
+D6FC;D6FC;1112 1170;D6FC;1112 1170; # (훼; 훼; 훼; 훼; 훼; ) HANGUL SYLLABLE HWE
+D6FD;D6FD;1112 1170 11A8;D6FD;1112 1170 11A8; # (훽; 훽; 훽; 훽; 훽; ) HANGUL SYLLABLE HWEG
+D6FE;D6FE;1112 1170 11A9;D6FE;1112 1170 11A9; # (훾; 훾; 훾; 훾; 훾; ) HANGUL SYLLABLE HWEGG
+D6FF;D6FF;1112 1170 11AA;D6FF;1112 1170 11AA; # (훿; 훿; 훿; 훿; 훿; ) HANGUL SYLLABLE HWEGS
+D700;D700;1112 1170 11AB;D700;1112 1170 11AB; # (휀; 휀; 휀; 휀; 휀; ) HANGUL SYLLABLE HWEN
+D701;D701;1112 1170 11AC;D701;1112 1170 11AC; # (íœ; íœ; 휁; íœ; 휁; ) HANGUL SYLLABLE HWENJ
+D702;D702;1112 1170 11AD;D702;1112 1170 11AD; # (휂; 휂; 휂; 휂; 휂; ) HANGUL SYLLABLE HWENH
+D703;D703;1112 1170 11AE;D703;1112 1170 11AE; # (휃; 휃; 휃; 휃; 휃; ) HANGUL SYLLABLE HWED
+D704;D704;1112 1170 11AF;D704;1112 1170 11AF; # (휄; 휄; 휄; 휄; 휄; ) HANGUL SYLLABLE HWEL
+D705;D705;1112 1170 11B0;D705;1112 1170 11B0; # (휅; 휅; 휅; 휅; 휅; ) HANGUL SYLLABLE HWELG
+D706;D706;1112 1170 11B1;D706;1112 1170 11B1; # (휆; 휆; 휆; 휆; 휆; ) HANGUL SYLLABLE HWELM
+D707;D707;1112 1170 11B2;D707;1112 1170 11B2; # (휇; 휇; 휇; 휇; 휇; ) HANGUL SYLLABLE HWELB
+D708;D708;1112 1170 11B3;D708;1112 1170 11B3; # (휈; 휈; 휈; 휈; 휈; ) HANGUL SYLLABLE HWELS
+D709;D709;1112 1170 11B4;D709;1112 1170 11B4; # (휉; 휉; 휉; 휉; 휉; ) HANGUL SYLLABLE HWELT
+D70A;D70A;1112 1170 11B5;D70A;1112 1170 11B5; # (휊; 휊; 휊; 휊; 휊; ) HANGUL SYLLABLE HWELP
+D70B;D70B;1112 1170 11B6;D70B;1112 1170 11B6; # (휋; 휋; 휋; 휋; 휋; ) HANGUL SYLLABLE HWELH
+D70C;D70C;1112 1170 11B7;D70C;1112 1170 11B7; # (휌; 휌; 휌; 휌; 휌; ) HANGUL SYLLABLE HWEM
+D70D;D70D;1112 1170 11B8;D70D;1112 1170 11B8; # (íœ; íœ; 휍; íœ; 휍; ) HANGUL SYLLABLE HWEB
+D70E;D70E;1112 1170 11B9;D70E;1112 1170 11B9; # (휎; 휎; 휎; 휎; 휎; ) HANGUL SYLLABLE HWEBS
+D70F;D70F;1112 1170 11BA;D70F;1112 1170 11BA; # (íœ; íœ; 휏; íœ; 휏; ) HANGUL SYLLABLE HWES
+D710;D710;1112 1170 11BB;D710;1112 1170 11BB; # (íœ; íœ; 휐; íœ; 휐; ) HANGUL SYLLABLE HWESS
+D711;D711;1112 1170 11BC;D711;1112 1170 11BC; # (휑; 휑; 휑; 휑; 휑; ) HANGUL SYLLABLE HWENG
+D712;D712;1112 1170 11BD;D712;1112 1170 11BD; # (휒; 휒; 휒; 휒; 휒; ) HANGUL SYLLABLE HWEJ
+D713;D713;1112 1170 11BE;D713;1112 1170 11BE; # (휓; 휓; 휓; 휓; 휓; ) HANGUL SYLLABLE HWEC
+D714;D714;1112 1170 11BF;D714;1112 1170 11BF; # (휔; 휔; 휔; 휔; 휔; ) HANGUL SYLLABLE HWEK
+D715;D715;1112 1170 11C0;D715;1112 1170 11C0; # (휕; 휕; 휕; 휕; 휕; ) HANGUL SYLLABLE HWET
+D716;D716;1112 1170 11C1;D716;1112 1170 11C1; # (휖; 휖; á„’á…°á‡; 휖; á„’á…°á‡; ) HANGUL SYLLABLE HWEP
+D717;D717;1112 1170 11C2;D717;1112 1170 11C2; # (휗; 휗; 휗; 휗; 휗; ) HANGUL SYLLABLE HWEH
+D718;D718;1112 1171;D718;1112 1171; # (휘; 휘; 휘; 휘; 휘; ) HANGUL SYLLABLE HWI
+D719;D719;1112 1171 11A8;D719;1112 1171 11A8; # (휙; 휙; 휙; 휙; 휙; ) HANGUL SYLLABLE HWIG
+D71A;D71A;1112 1171 11A9;D71A;1112 1171 11A9; # (휚; 휚; 휚; 휚; 휚; ) HANGUL SYLLABLE HWIGG
+D71B;D71B;1112 1171 11AA;D71B;1112 1171 11AA; # (휛; 휛; 휛; 휛; 휛; ) HANGUL SYLLABLE HWIGS
+D71C;D71C;1112 1171 11AB;D71C;1112 1171 11AB; # (휜; 휜; 휜; 휜; 휜; ) HANGUL SYLLABLE HWIN
+D71D;D71D;1112 1171 11AC;D71D;1112 1171 11AC; # (íœ; íœ; 휝; íœ; 휝; ) HANGUL SYLLABLE HWINJ
+D71E;D71E;1112 1171 11AD;D71E;1112 1171 11AD; # (휞; 휞; 휞; 휞; 휞; ) HANGUL SYLLABLE HWINH
+D71F;D71F;1112 1171 11AE;D71F;1112 1171 11AE; # (휟; 휟; 휟; 휟; 휟; ) HANGUL SYLLABLE HWID
+D720;D720;1112 1171 11AF;D720;1112 1171 11AF; # (휠; 휠; 휠; 휠; 휠; ) HANGUL SYLLABLE HWIL
+D721;D721;1112 1171 11B0;D721;1112 1171 11B0; # (휡; 휡; 휡; 휡; 휡; ) HANGUL SYLLABLE HWILG
+D722;D722;1112 1171 11B1;D722;1112 1171 11B1; # (휢; 휢; 휢; 휢; 휢; ) HANGUL SYLLABLE HWILM
+D723;D723;1112 1171 11B2;D723;1112 1171 11B2; # (휣; 휣; 휣; 휣; 휣; ) HANGUL SYLLABLE HWILB
+D724;D724;1112 1171 11B3;D724;1112 1171 11B3; # (휤; 휤; 휤; 휤; 휤; ) HANGUL SYLLABLE HWILS
+D725;D725;1112 1171 11B4;D725;1112 1171 11B4; # (휥; 휥; 휥; 휥; 휥; ) HANGUL SYLLABLE HWILT
+D726;D726;1112 1171 11B5;D726;1112 1171 11B5; # (휦; 휦; 휦; 휦; 휦; ) HANGUL SYLLABLE HWILP
+D727;D727;1112 1171 11B6;D727;1112 1171 11B6; # (휧; 휧; 휧; 휧; 휧; ) HANGUL SYLLABLE HWILH
+D728;D728;1112 1171 11B7;D728;1112 1171 11B7; # (휨; 휨; 휨; 휨; 휨; ) HANGUL SYLLABLE HWIM
+D729;D729;1112 1171 11B8;D729;1112 1171 11B8; # (휩; 휩; 휩; 휩; 휩; ) HANGUL SYLLABLE HWIB
+D72A;D72A;1112 1171 11B9;D72A;1112 1171 11B9; # (휪; 휪; 휪; 휪; 휪; ) HANGUL SYLLABLE HWIBS
+D72B;D72B;1112 1171 11BA;D72B;1112 1171 11BA; # (휫; 휫; 휫; 휫; 휫; ) HANGUL SYLLABLE HWIS
+D72C;D72C;1112 1171 11BB;D72C;1112 1171 11BB; # (휬; 휬; 휬; 휬; 휬; ) HANGUL SYLLABLE HWISS
+D72D;D72D;1112 1171 11BC;D72D;1112 1171 11BC; # (휭; 휭; 휭; 휭; 휭; ) HANGUL SYLLABLE HWING
+D72E;D72E;1112 1171 11BD;D72E;1112 1171 11BD; # (휮; 휮; 휮; 휮; 휮; ) HANGUL SYLLABLE HWIJ
+D72F;D72F;1112 1171 11BE;D72F;1112 1171 11BE; # (휯; 휯; 휯; 휯; 휯; ) HANGUL SYLLABLE HWIC
+D730;D730;1112 1171 11BF;D730;1112 1171 11BF; # (휰; 휰; 휰; 휰; 휰; ) HANGUL SYLLABLE HWIK
+D731;D731;1112 1171 11C0;D731;1112 1171 11C0; # (휱; 휱; 휱; 휱; 휱; ) HANGUL SYLLABLE HWIT
+D732;D732;1112 1171 11C1;D732;1112 1171 11C1; # (휲; 휲; á„’á…±á‡; 휲; á„’á…±á‡; ) HANGUL SYLLABLE HWIP
+D733;D733;1112 1171 11C2;D733;1112 1171 11C2; # (휳; 휳; 휳; 휳; 휳; ) HANGUL SYLLABLE HWIH
+D734;D734;1112 1172;D734;1112 1172; # (휴; 휴; 휴; 휴; 휴; ) HANGUL SYLLABLE HYU
+D735;D735;1112 1172 11A8;D735;1112 1172 11A8; # (휵; 휵; 휵; 휵; 휵; ) HANGUL SYLLABLE HYUG
+D736;D736;1112 1172 11A9;D736;1112 1172 11A9; # (휶; 휶; 휶; 휶; 휶; ) HANGUL SYLLABLE HYUGG
+D737;D737;1112 1172 11AA;D737;1112 1172 11AA; # (휷; 휷; 휷; 휷; 휷; ) HANGUL SYLLABLE HYUGS
+D738;D738;1112 1172 11AB;D738;1112 1172 11AB; # (휸; 휸; 휸; 휸; 휸; ) HANGUL SYLLABLE HYUN
+D739;D739;1112 1172 11AC;D739;1112 1172 11AC; # (휹; 휹; 휹; 휹; 휹; ) HANGUL SYLLABLE HYUNJ
+D73A;D73A;1112 1172 11AD;D73A;1112 1172 11AD; # (휺; 휺; 휺; 휺; 휺; ) HANGUL SYLLABLE HYUNH
+D73B;D73B;1112 1172 11AE;D73B;1112 1172 11AE; # (휻; 휻; 휻; 휻; 휻; ) HANGUL SYLLABLE HYUD
+D73C;D73C;1112 1172 11AF;D73C;1112 1172 11AF; # (휼; 휼; 휼; 휼; 휼; ) HANGUL SYLLABLE HYUL
+D73D;D73D;1112 1172 11B0;D73D;1112 1172 11B0; # (휽; 휽; 휽; 휽; 휽; ) HANGUL SYLLABLE HYULG
+D73E;D73E;1112 1172 11B1;D73E;1112 1172 11B1; # (휾; 휾; 휾; 휾; 휾; ) HANGUL SYLLABLE HYULM
+D73F;D73F;1112 1172 11B2;D73F;1112 1172 11B2; # (휿; 휿; 휿; 휿; 휿; ) HANGUL SYLLABLE HYULB
+D740;D740;1112 1172 11B3;D740;1112 1172 11B3; # (í€; í€; 흀; í€; 흀; ) HANGUL SYLLABLE HYULS
+D741;D741;1112 1172 11B4;D741;1112 1172 11B4; # (í; í; 흁; í; 흁; ) HANGUL SYLLABLE HYULT
+D742;D742;1112 1172 11B5;D742;1112 1172 11B5; # (í‚; í‚; 흂; í‚; 흂; ) HANGUL SYLLABLE HYULP
+D743;D743;1112 1172 11B6;D743;1112 1172 11B6; # (íƒ; íƒ; 흃; íƒ; 흃; ) HANGUL SYLLABLE HYULH
+D744;D744;1112 1172 11B7;D744;1112 1172 11B7; # (í„; í„; 흄; í„; 흄; ) HANGUL SYLLABLE HYUM
+D745;D745;1112 1172 11B8;D745;1112 1172 11B8; # (í…; í…; 흅; í…; 흅; ) HANGUL SYLLABLE HYUB
+D746;D746;1112 1172 11B9;D746;1112 1172 11B9; # (í†; í†; 흆; í†; 흆; ) HANGUL SYLLABLE HYUBS
+D747;D747;1112 1172 11BA;D747;1112 1172 11BA; # (í‡; í‡; 흇; í‡; 흇; ) HANGUL SYLLABLE HYUS
+D748;D748;1112 1172 11BB;D748;1112 1172 11BB; # (íˆ; íˆ; 흈; íˆ; 흈; ) HANGUL SYLLABLE HYUSS
+D749;D749;1112 1172 11BC;D749;1112 1172 11BC; # (í‰; í‰; 흉; í‰; 흉; ) HANGUL SYLLABLE HYUNG
+D74A;D74A;1112 1172 11BD;D74A;1112 1172 11BD; # (íŠ; íŠ; 흊; íŠ; 흊; ) HANGUL SYLLABLE HYUJ
+D74B;D74B;1112 1172 11BE;D74B;1112 1172 11BE; # (í‹; í‹; 흋; í‹; 흋; ) HANGUL SYLLABLE HYUC
+D74C;D74C;1112 1172 11BF;D74C;1112 1172 11BF; # (íŒ; íŒ; 흌; íŒ; 흌; ) HANGUL SYLLABLE HYUK
+D74D;D74D;1112 1172 11C0;D74D;1112 1172 11C0; # (í; í; 흍; í; 흍; ) HANGUL SYLLABLE HYUT
+D74E;D74E;1112 1172 11C1;D74E;1112 1172 11C1; # (íŽ; íŽ; á„’á…²á‡; íŽ; á„’á…²á‡; ) HANGUL SYLLABLE HYUP
+D74F;D74F;1112 1172 11C2;D74F;1112 1172 11C2; # (í; í; 흏; í; 흏; ) HANGUL SYLLABLE HYUH
+D750;D750;1112 1173;D750;1112 1173; # (í; í; á„’á…³; í; á„’á…³; ) HANGUL SYLLABLE HEU
+D751;D751;1112 1173 11A8;D751;1112 1173 11A8; # (í‘; í‘; 흑; í‘; 흑; ) HANGUL SYLLABLE HEUG
+D752;D752;1112 1173 11A9;D752;1112 1173 11A9; # (í’; í’; 흒; í’; 흒; ) HANGUL SYLLABLE HEUGG
+D753;D753;1112 1173 11AA;D753;1112 1173 11AA; # (í“; í“; 흓; í“; 흓; ) HANGUL SYLLABLE HEUGS
+D754;D754;1112 1173 11AB;D754;1112 1173 11AB; # (í”; í”; 흔; í”; 흔; ) HANGUL SYLLABLE HEUN
+D755;D755;1112 1173 11AC;D755;1112 1173 11AC; # (í•; í•; 흕; í•; 흕; ) HANGUL SYLLABLE HEUNJ
+D756;D756;1112 1173 11AD;D756;1112 1173 11AD; # (í–; í–; 흖; í–; 흖; ) HANGUL SYLLABLE HEUNH
+D757;D757;1112 1173 11AE;D757;1112 1173 11AE; # (í—; í—; 흗; í—; 흗; ) HANGUL SYLLABLE HEUD
+D758;D758;1112 1173 11AF;D758;1112 1173 11AF; # (í˜; í˜; 흘; í˜; 흘; ) HANGUL SYLLABLE HEUL
+D759;D759;1112 1173 11B0;D759;1112 1173 11B0; # (í™; í™; 흙; í™; 흙; ) HANGUL SYLLABLE HEULG
+D75A;D75A;1112 1173 11B1;D75A;1112 1173 11B1; # (íš; íš; 흚; íš; 흚; ) HANGUL SYLLABLE HEULM
+D75B;D75B;1112 1173 11B2;D75B;1112 1173 11B2; # (í›; í›; 흛; í›; 흛; ) HANGUL SYLLABLE HEULB
+D75C;D75C;1112 1173 11B3;D75C;1112 1173 11B3; # (íœ; íœ; 흜; íœ; 흜; ) HANGUL SYLLABLE HEULS
+D75D;D75D;1112 1173 11B4;D75D;1112 1173 11B4; # (í; í; 흝; í; 흝; ) HANGUL SYLLABLE HEULT
+D75E;D75E;1112 1173 11B5;D75E;1112 1173 11B5; # (íž; íž; 흞; íž; 흞; ) HANGUL SYLLABLE HEULP
+D75F;D75F;1112 1173 11B6;D75F;1112 1173 11B6; # (íŸ; íŸ; 흟; íŸ; 흟; ) HANGUL SYLLABLE HEULH
+D760;D760;1112 1173 11B7;D760;1112 1173 11B7; # (í ; í ; 흠; í ; 흠; ) HANGUL SYLLABLE HEUM
+D761;D761;1112 1173 11B8;D761;1112 1173 11B8; # (í¡; í¡; 흡; í¡; 흡; ) HANGUL SYLLABLE HEUB
+D762;D762;1112 1173 11B9;D762;1112 1173 11B9; # (í¢; í¢; 흢; í¢; 흢; ) HANGUL SYLLABLE HEUBS
+D763;D763;1112 1173 11BA;D763;1112 1173 11BA; # (í£; í£; 흣; í£; 흣; ) HANGUL SYLLABLE HEUS
+D764;D764;1112 1173 11BB;D764;1112 1173 11BB; # (í¤; í¤; 흤; í¤; 흤; ) HANGUL SYLLABLE HEUSS
+D765;D765;1112 1173 11BC;D765;1112 1173 11BC; # (í¥; í¥; 흥; í¥; 흥; ) HANGUL SYLLABLE HEUNG
+D766;D766;1112 1173 11BD;D766;1112 1173 11BD; # (í¦; í¦; 흦; í¦; 흦; ) HANGUL SYLLABLE HEUJ
+D767;D767;1112 1173 11BE;D767;1112 1173 11BE; # (í§; í§; 흧; í§; 흧; ) HANGUL SYLLABLE HEUC
+D768;D768;1112 1173 11BF;D768;1112 1173 11BF; # (í¨; í¨; 흨; í¨; 흨; ) HANGUL SYLLABLE HEUK
+D769;D769;1112 1173 11C0;D769;1112 1173 11C0; # (í©; í©; 흩; í©; 흩; ) HANGUL SYLLABLE HEUT
+D76A;D76A;1112 1173 11C1;D76A;1112 1173 11C1; # (íª; íª; á„’á…³á‡; íª; á„’á…³á‡; ) HANGUL SYLLABLE HEUP
+D76B;D76B;1112 1173 11C2;D76B;1112 1173 11C2; # (í«; í«; 흫; í«; 흫; ) HANGUL SYLLABLE HEUH
+D76C;D76C;1112 1174;D76C;1112 1174; # (í¬; í¬; á„’á…´; í¬; á„’á…´; ) HANGUL SYLLABLE HYI
+D76D;D76D;1112 1174 11A8;D76D;1112 1174 11A8; # (í­; í­; 흭; í­; 흭; ) HANGUL SYLLABLE HYIG
+D76E;D76E;1112 1174 11A9;D76E;1112 1174 11A9; # (í®; í®; 흮; í®; 흮; ) HANGUL SYLLABLE HYIGG
+D76F;D76F;1112 1174 11AA;D76F;1112 1174 11AA; # (í¯; í¯; 흯; í¯; 흯; ) HANGUL SYLLABLE HYIGS
+D770;D770;1112 1174 11AB;D770;1112 1174 11AB; # (í°; í°; 흰; í°; 흰; ) HANGUL SYLLABLE HYIN
+D771;D771;1112 1174 11AC;D771;1112 1174 11AC; # (í±; í±; 흱; í±; 흱; ) HANGUL SYLLABLE HYINJ
+D772;D772;1112 1174 11AD;D772;1112 1174 11AD; # (í²; í²; 흲; í²; 흲; ) HANGUL SYLLABLE HYINH
+D773;D773;1112 1174 11AE;D773;1112 1174 11AE; # (í³; í³; 흳; í³; 흳; ) HANGUL SYLLABLE HYID
+D774;D774;1112 1174 11AF;D774;1112 1174 11AF; # (í´; í´; 흴; í´; 흴; ) HANGUL SYLLABLE HYIL
+D775;D775;1112 1174 11B0;D775;1112 1174 11B0; # (íµ; íµ; 흵; íµ; 흵; ) HANGUL SYLLABLE HYILG
+D776;D776;1112 1174 11B1;D776;1112 1174 11B1; # (í¶; í¶; 흶; í¶; 흶; ) HANGUL SYLLABLE HYILM
+D777;D777;1112 1174 11B2;D777;1112 1174 11B2; # (í·; í·; 흷; í·; 흷; ) HANGUL SYLLABLE HYILB
+D778;D778;1112 1174 11B3;D778;1112 1174 11B3; # (í¸; í¸; 흸; í¸; 흸; ) HANGUL SYLLABLE HYILS
+D779;D779;1112 1174 11B4;D779;1112 1174 11B4; # (í¹; í¹; 흹; í¹; 흹; ) HANGUL SYLLABLE HYILT
+D77A;D77A;1112 1174 11B5;D77A;1112 1174 11B5; # (íº; íº; 흺; íº; 흺; ) HANGUL SYLLABLE HYILP
+D77B;D77B;1112 1174 11B6;D77B;1112 1174 11B6; # (í»; í»; 흻; í»; 흻; ) HANGUL SYLLABLE HYILH
+D77C;D77C;1112 1174 11B7;D77C;1112 1174 11B7; # (í¼; í¼; 흼; í¼; 흼; ) HANGUL SYLLABLE HYIM
+D77D;D77D;1112 1174 11B8;D77D;1112 1174 11B8; # (í½; í½; 흽; í½; 흽; ) HANGUL SYLLABLE HYIB
+D77E;D77E;1112 1174 11B9;D77E;1112 1174 11B9; # (í¾; í¾; 흾; í¾; 흾; ) HANGUL SYLLABLE HYIBS
+D77F;D77F;1112 1174 11BA;D77F;1112 1174 11BA; # (í¿; í¿; 흿; í¿; 흿; ) HANGUL SYLLABLE HYIS
+D780;D780;1112 1174 11BB;D780;1112 1174 11BB; # (힀; 힀; 힀; 힀; 힀; ) HANGUL SYLLABLE HYISS
+D781;D781;1112 1174 11BC;D781;1112 1174 11BC; # (íž; íž; 힁; íž; 힁; ) HANGUL SYLLABLE HYING
+D782;D782;1112 1174 11BD;D782;1112 1174 11BD; # (힂; 힂; 힂; 힂; 힂; ) HANGUL SYLLABLE HYIJ
+D783;D783;1112 1174 11BE;D783;1112 1174 11BE; # (힃; 힃; 힃; 힃; 힃; ) HANGUL SYLLABLE HYIC
+D784;D784;1112 1174 11BF;D784;1112 1174 11BF; # (힄; 힄; 힄; 힄; 힄; ) HANGUL SYLLABLE HYIK
+D785;D785;1112 1174 11C0;D785;1112 1174 11C0; # (힅; 힅; 힅; 힅; 힅; ) HANGUL SYLLABLE HYIT
+D786;D786;1112 1174 11C1;D786;1112 1174 11C1; # (힆; 힆; á„’á…´á‡; 힆; á„’á…´á‡; ) HANGUL SYLLABLE HYIP
+D787;D787;1112 1174 11C2;D787;1112 1174 11C2; # (힇; 힇; 힇; 힇; 힇; ) HANGUL SYLLABLE HYIH
+D788;D788;1112 1175;D788;1112 1175; # (히; 히; 히; 히; 히; ) HANGUL SYLLABLE HI
+D789;D789;1112 1175 11A8;D789;1112 1175 11A8; # (힉; 힉; 힉; 힉; 힉; ) HANGUL SYLLABLE HIG
+D78A;D78A;1112 1175 11A9;D78A;1112 1175 11A9; # (힊; 힊; 힊; 힊; 힊; ) HANGUL SYLLABLE HIGG
+D78B;D78B;1112 1175 11AA;D78B;1112 1175 11AA; # (힋; 힋; 힋; 힋; 힋; ) HANGUL SYLLABLE HIGS
+D78C;D78C;1112 1175 11AB;D78C;1112 1175 11AB; # (힌; 힌; 힌; 힌; 힌; ) HANGUL SYLLABLE HIN
+D78D;D78D;1112 1175 11AC;D78D;1112 1175 11AC; # (íž; íž; 힍; íž; 힍; ) HANGUL SYLLABLE HINJ
+D78E;D78E;1112 1175 11AD;D78E;1112 1175 11AD; # (힎; 힎; 힎; 힎; 힎; ) HANGUL SYLLABLE HINH
+D78F;D78F;1112 1175 11AE;D78F;1112 1175 11AE; # (íž; íž; 힏; íž; 힏; ) HANGUL SYLLABLE HID
+D790;D790;1112 1175 11AF;D790;1112 1175 11AF; # (íž; íž; 힐; íž; 힐; ) HANGUL SYLLABLE HIL
+D791;D791;1112 1175 11B0;D791;1112 1175 11B0; # (힑; 힑; 힑; 힑; 힑; ) HANGUL SYLLABLE HILG
+D792;D792;1112 1175 11B1;D792;1112 1175 11B1; # (힒; 힒; 힒; 힒; 힒; ) HANGUL SYLLABLE HILM
+D793;D793;1112 1175 11B2;D793;1112 1175 11B2; # (힓; 힓; 힓; 힓; 힓; ) HANGUL SYLLABLE HILB
+D794;D794;1112 1175 11B3;D794;1112 1175 11B3; # (힔; 힔; 힔; 힔; 힔; ) HANGUL SYLLABLE HILS
+D795;D795;1112 1175 11B4;D795;1112 1175 11B4; # (힕; 힕; 힕; 힕; 힕; ) HANGUL SYLLABLE HILT
+D796;D796;1112 1175 11B5;D796;1112 1175 11B5; # (힖; 힖; 힖; 힖; 힖; ) HANGUL SYLLABLE HILP
+D797;D797;1112 1175 11B6;D797;1112 1175 11B6; # (힗; 힗; 힗; 힗; 힗; ) HANGUL SYLLABLE HILH
+D798;D798;1112 1175 11B7;D798;1112 1175 11B7; # (힘; 힘; 힘; 힘; 힘; ) HANGUL SYLLABLE HIM
+D799;D799;1112 1175 11B8;D799;1112 1175 11B8; # (힙; 힙; 힙; 힙; 힙; ) HANGUL SYLLABLE HIB
+D79A;D79A;1112 1175 11B9;D79A;1112 1175 11B9; # (힚; 힚; 힚; 힚; 힚; ) HANGUL SYLLABLE HIBS
+D79B;D79B;1112 1175 11BA;D79B;1112 1175 11BA; # (힛; 힛; 힛; 힛; 힛; ) HANGUL SYLLABLE HIS
+D79C;D79C;1112 1175 11BB;D79C;1112 1175 11BB; # (힜; 힜; 힜; 힜; 힜; ) HANGUL SYLLABLE HISS
+D79D;D79D;1112 1175 11BC;D79D;1112 1175 11BC; # (íž; íž; 힝; íž; 힝; ) HANGUL SYLLABLE HING
+D79E;D79E;1112 1175 11BD;D79E;1112 1175 11BD; # (힞; 힞; 힞; 힞; 힞; ) HANGUL SYLLABLE HIJ
+D79F;D79F;1112 1175 11BE;D79F;1112 1175 11BE; # (힟; 힟; 힟; 힟; 힟; ) HANGUL SYLLABLE HIC
+D7A0;D7A0;1112 1175 11BF;D7A0;1112 1175 11BF; # (힠; 힠; 힠; 힠; 힠; ) HANGUL SYLLABLE HIK
+D7A1;D7A1;1112 1175 11C0;D7A1;1112 1175 11C0; # (힡; 힡; 힡; 힡; 힡; ) HANGUL SYLLABLE HIT
+D7A2;D7A2;1112 1175 11C1;D7A2;1112 1175 11C1; # (힢; 힢; á„’á…µá‡; 힢; á„’á…µá‡; ) HANGUL SYLLABLE HIP
+D7A3;D7A3;1112 1175 11C2;D7A3;1112 1175 11C2; # (힣; 힣; 힣; 힣; 힣; ) HANGUL SYLLABLE HIH
+F900;8C48;8C48;8C48;8C48; # (豈; 豈; 豈; 豈; 豈; ) CJK COMPATIBILITY IDEOGRAPH-F900
+F901;66F4;66F4;66F4;66F4; # (ï¤; æ›´; æ›´; æ›´; æ›´; ) CJK COMPATIBILITY IDEOGRAPH-F901
+F902;8ECA;8ECA;8ECA;8ECA; # (車; 車; 車; 車; 車; ) CJK COMPATIBILITY IDEOGRAPH-F902
+F903;8CC8;8CC8;8CC8;8CC8; # (賈; 賈; 賈; 賈; 賈; ) CJK COMPATIBILITY IDEOGRAPH-F903
+F904;6ED1;6ED1;6ED1;6ED1; # (滑; 滑; 滑; 滑; 滑; ) CJK COMPATIBILITY IDEOGRAPH-F904
+F905;4E32;4E32;4E32;4E32; # (串; 串; 串; 串; 串; ) CJK COMPATIBILITY IDEOGRAPH-F905
+F906;53E5;53E5;53E5;53E5; # (句; å¥; å¥; å¥; å¥; ) CJK COMPATIBILITY IDEOGRAPH-F906
+F907;9F9C;9F9C;9F9C;9F9C; # (龜; 龜; 龜; 龜; 龜; ) CJK COMPATIBILITY IDEOGRAPH-F907
+F908;9F9C;9F9C;9F9C;9F9C; # (龜; 龜; 龜; 龜; 龜; ) CJK COMPATIBILITY IDEOGRAPH-F908
+F909;5951;5951;5951;5951; # (契; 契; 契; 契; 契; ) CJK COMPATIBILITY IDEOGRAPH-F909
+F90A;91D1;91D1;91D1;91D1; # (金; 金; 金; 金; 金; ) CJK COMPATIBILITY IDEOGRAPH-F90A
+F90B;5587;5587;5587;5587; # (喇; 喇; 喇; 喇; 喇; ) CJK COMPATIBILITY IDEOGRAPH-F90B
+F90C;5948;5948;5948;5948; # (奈; 奈; 奈; 奈; 奈; ) CJK COMPATIBILITY IDEOGRAPH-F90C
+F90D;61F6;61F6;61F6;61F6; # (ï¤; 懶; 懶; 懶; 懶; ) CJK COMPATIBILITY IDEOGRAPH-F90D
+F90E;7669;7669;7669;7669; # (癩; 癩; 癩; 癩; 癩; ) CJK COMPATIBILITY IDEOGRAPH-F90E
+F90F;7F85;7F85;7F85;7F85; # (ï¤; ç¾…; ç¾…; ç¾…; ç¾…; ) CJK COMPATIBILITY IDEOGRAPH-F90F
+F910;863F;863F;863F;863F; # (ï¤; 蘿; 蘿; 蘿; 蘿; ) CJK COMPATIBILITY IDEOGRAPH-F910
+F911;87BA;87BA;87BA;87BA; # (螺; 螺; 螺; 螺; 螺; ) CJK COMPATIBILITY IDEOGRAPH-F911
+F912;88F8;88F8;88F8;88F8; # (裸; 裸; 裸; 裸; 裸; ) CJK COMPATIBILITY IDEOGRAPH-F912
+F913;908F;908F;908F;908F; # (邏; é‚; é‚; é‚; é‚; ) CJK COMPATIBILITY IDEOGRAPH-F913
+F914;6A02;6A02;6A02;6A02; # (樂; 樂; 樂; 樂; 樂; ) CJK COMPATIBILITY IDEOGRAPH-F914
+F915;6D1B;6D1B;6D1B;6D1B; # (洛; 洛; 洛; 洛; 洛; ) CJK COMPATIBILITY IDEOGRAPH-F915
+F916;70D9;70D9;70D9;70D9; # (烙; 烙; 烙; 烙; 烙; ) CJK COMPATIBILITY IDEOGRAPH-F916
+F917;73DE;73DE;73DE;73DE; # (珞; çž; çž; çž; çž; ) CJK COMPATIBILITY IDEOGRAPH-F917
+F918;843D;843D;843D;843D; # (落; è½; è½; è½; è½; ) CJK COMPATIBILITY IDEOGRAPH-F918
+F919;916A;916A;916A;916A; # (酪; 酪; 酪; 酪; 酪; ) CJK COMPATIBILITY IDEOGRAPH-F919
+F91A;99F1;99F1;99F1;99F1; # (駱; 駱; 駱; 駱; 駱; ) CJK COMPATIBILITY IDEOGRAPH-F91A
+F91B;4E82;4E82;4E82;4E82; # (亂; 亂; 亂; 亂; 亂; ) CJK COMPATIBILITY IDEOGRAPH-F91B
+F91C;5375;5375;5375;5375; # (卵; åµ; åµ; åµ; åµ; ) CJK COMPATIBILITY IDEOGRAPH-F91C
+F91D;6B04;6B04;6B04;6B04; # (ï¤; 欄; 欄; 欄; 欄; ) CJK COMPATIBILITY IDEOGRAPH-F91D
+F91E;721B;721B;721B;721B; # (爛; 爛; 爛; 爛; 爛; ) CJK COMPATIBILITY IDEOGRAPH-F91E
+F91F;862D;862D;862D;862D; # (蘭; 蘭; 蘭; 蘭; 蘭; ) CJK COMPATIBILITY IDEOGRAPH-F91F
+F920;9E1E;9E1E;9E1E;9E1E; # (鸞; 鸞; 鸞; 鸞; 鸞; ) CJK COMPATIBILITY IDEOGRAPH-F920
+F921;5D50;5D50;5D50;5D50; # (嵐; åµ; åµ; åµ; åµ; ) CJK COMPATIBILITY IDEOGRAPH-F921
+F922;6FEB;6FEB;6FEB;6FEB; # (濫; 濫; 濫; 濫; 濫; ) CJK COMPATIBILITY IDEOGRAPH-F922
+F923;85CD;85CD;85CD;85CD; # (藍; è—; è—; è—; è—; ) CJK COMPATIBILITY IDEOGRAPH-F923
+F924;8964;8964;8964;8964; # (襤; 襤; 襤; 襤; 襤; ) CJK COMPATIBILITY IDEOGRAPH-F924
+F925;62C9;62C9;62C9;62C9; # (拉; 拉; 拉; 拉; 拉; ) CJK COMPATIBILITY IDEOGRAPH-F925
+F926;81D8;81D8;81D8;81D8; # (臘; 臘; 臘; 臘; 臘; ) CJK COMPATIBILITY IDEOGRAPH-F926
+F927;881F;881F;881F;881F; # (蠟; 蠟; 蠟; 蠟; 蠟; ) CJK COMPATIBILITY IDEOGRAPH-F927
+F928;5ECA;5ECA;5ECA;5ECA; # (廊; 廊; 廊; 廊; 廊; ) CJK COMPATIBILITY IDEOGRAPH-F928
+F929;6717;6717;6717;6717; # (朗; 朗; 朗; 朗; 朗; ) CJK COMPATIBILITY IDEOGRAPH-F929
+F92A;6D6A;6D6A;6D6A;6D6A; # (浪; 浪; 浪; 浪; 浪; ) CJK COMPATIBILITY IDEOGRAPH-F92A
+F92B;72FC;72FC;72FC;72FC; # (狼; 狼; 狼; 狼; 狼; ) CJK COMPATIBILITY IDEOGRAPH-F92B
+F92C;90CE;90CE;90CE;90CE; # (郎; 郎; 郎; 郎; 郎; ) CJK COMPATIBILITY IDEOGRAPH-F92C
+F92D;4F86;4F86;4F86;4F86; # (來; 來; 來; 來; 來; ) CJK COMPATIBILITY IDEOGRAPH-F92D
+F92E;51B7;51B7;51B7;51B7; # (冷; 冷; 冷; 冷; 冷; ) CJK COMPATIBILITY IDEOGRAPH-F92E
+F92F;52DE;52DE;52DE;52DE; # (勞; 勞; 勞; 勞; 勞; ) CJK COMPATIBILITY IDEOGRAPH-F92F
+F930;64C4;64C4;64C4;64C4; # (擄; 擄; 擄; 擄; 擄; ) CJK COMPATIBILITY IDEOGRAPH-F930
+F931;6AD3;6AD3;6AD3;6AD3; # (櫓; 櫓; 櫓; 櫓; 櫓; ) CJK COMPATIBILITY IDEOGRAPH-F931
+F932;7210;7210;7210;7210; # (爐; çˆ; çˆ; çˆ; çˆ; ) CJK COMPATIBILITY IDEOGRAPH-F932
+F933;76E7;76E7;76E7;76E7; # (盧; 盧; 盧; 盧; 盧; ) CJK COMPATIBILITY IDEOGRAPH-F933
+F934;8001;8001;8001;8001; # (老; è€; è€; è€; è€; ) CJK COMPATIBILITY IDEOGRAPH-F934
+F935;8606;8606;8606;8606; # (蘆; 蘆; 蘆; 蘆; 蘆; ) CJK COMPATIBILITY IDEOGRAPH-F935
+F936;865C;865C;865C;865C; # (虜; 虜; 虜; 虜; 虜; ) CJK COMPATIBILITY IDEOGRAPH-F936
+F937;8DEF;8DEF;8DEF;8DEF; # (路; 路; 路; 路; 路; ) CJK COMPATIBILITY IDEOGRAPH-F937
+F938;9732;9732;9732;9732; # (露; 露; 露; 露; 露; ) CJK COMPATIBILITY IDEOGRAPH-F938
+F939;9B6F;9B6F;9B6F;9B6F; # (魯; 魯; 魯; 魯; 魯; ) CJK COMPATIBILITY IDEOGRAPH-F939
+F93A;9DFA;9DFA;9DFA;9DFA; # (鷺; 鷺; 鷺; 鷺; 鷺; ) CJK COMPATIBILITY IDEOGRAPH-F93A
+F93B;788C;788C;788C;788C; # (碌; 碌; 碌; 碌; 碌; ) CJK COMPATIBILITY IDEOGRAPH-F93B
+F93C;797F;797F;797F;797F; # (祿; 祿; 祿; 祿; 祿; ) CJK COMPATIBILITY IDEOGRAPH-F93C
+F93D;7DA0;7DA0;7DA0;7DA0; # (綠; 綠; 綠; 綠; 綠; ) CJK COMPATIBILITY IDEOGRAPH-F93D
+F93E;83C9;83C9;83C9;83C9; # (菉; è‰; è‰; è‰; è‰; ) CJK COMPATIBILITY IDEOGRAPH-F93E
+F93F;9304;9304;9304;9304; # (錄; 錄; 錄; 錄; 錄; ) CJK COMPATIBILITY IDEOGRAPH-F93F
+F940;9E7F;9E7F;9E7F;9E7F; # (鹿; 鹿; 鹿; 鹿; 鹿; ) CJK COMPATIBILITY IDEOGRAPH-F940
+F941;8AD6;8AD6;8AD6;8AD6; # (ï¥; è«–; è«–; è«–; è«–; ) CJK COMPATIBILITY IDEOGRAPH-F941
+F942;58DF;58DF;58DF;58DF; # (壟; 壟; 壟; 壟; 壟; ) CJK COMPATIBILITY IDEOGRAPH-F942
+F943;5F04;5F04;5F04;5F04; # (弄; 弄; 弄; 弄; 弄; ) CJK COMPATIBILITY IDEOGRAPH-F943
+F944;7C60;7C60;7C60;7C60; # (籠; 籠; 籠; 籠; 籠; ) CJK COMPATIBILITY IDEOGRAPH-F944
+F945;807E;807E;807E;807E; # (聾; è¾; è¾; è¾; è¾; ) CJK COMPATIBILITY IDEOGRAPH-F945
+F946;7262;7262;7262;7262; # (牢; 牢; 牢; 牢; 牢; ) CJK COMPATIBILITY IDEOGRAPH-F946
+F947;78CA;78CA;78CA;78CA; # (磊; 磊; 磊; 磊; 磊; ) CJK COMPATIBILITY IDEOGRAPH-F947
+F948;8CC2;8CC2;8CC2;8CC2; # (賂; 賂; 賂; 賂; 賂; ) CJK COMPATIBILITY IDEOGRAPH-F948
+F949;96F7;96F7;96F7;96F7; # (雷; 雷; 雷; 雷; 雷; ) CJK COMPATIBILITY IDEOGRAPH-F949
+F94A;58D8;58D8;58D8;58D8; # (壘; 壘; 壘; 壘; 壘; ) CJK COMPATIBILITY IDEOGRAPH-F94A
+F94B;5C62;5C62;5C62;5C62; # (屢; 屢; 屢; 屢; 屢; ) CJK COMPATIBILITY IDEOGRAPH-F94B
+F94C;6A13;6A13;6A13;6A13; # (樓; 樓; 樓; 樓; 樓; ) CJK COMPATIBILITY IDEOGRAPH-F94C
+F94D;6DDA;6DDA;6DDA;6DDA; # (ï¥; æ·š; æ·š; æ·š; æ·š; ) CJK COMPATIBILITY IDEOGRAPH-F94D
+F94E;6F0F;6F0F;6F0F;6F0F; # (漏; æ¼; æ¼; æ¼; æ¼; ) CJK COMPATIBILITY IDEOGRAPH-F94E
+F94F;7D2F;7D2F;7D2F;7D2F; # (ï¥; ç´¯; ç´¯; ç´¯; ç´¯; ) CJK COMPATIBILITY IDEOGRAPH-F94F
+F950;7E37;7E37;7E37;7E37; # (ï¥; 縷; 縷; 縷; 縷; ) CJK COMPATIBILITY IDEOGRAPH-F950
+F951;964B;964B;964B;964B; # (陋; 陋; 陋; 陋; 陋; ) CJK COMPATIBILITY IDEOGRAPH-F951
+F952;52D2;52D2;52D2;52D2; # (勒; 勒; 勒; 勒; 勒; ) CJK COMPATIBILITY IDEOGRAPH-F952
+F953;808B;808B;808B;808B; # (肋; 肋; 肋; 肋; 肋; ) CJK COMPATIBILITY IDEOGRAPH-F953
+F954;51DC;51DC;51DC;51DC; # (凜; 凜; 凜; 凜; 凜; ) CJK COMPATIBILITY IDEOGRAPH-F954
+F955;51CC;51CC;51CC;51CC; # (凌; 凌; 凌; 凌; 凌; ) CJK COMPATIBILITY IDEOGRAPH-F955
+F956;7A1C;7A1C;7A1C;7A1C; # (稜; 稜; 稜; 稜; 稜; ) CJK COMPATIBILITY IDEOGRAPH-F956
+F957;7DBE;7DBE;7DBE;7DBE; # (綾; 綾; 綾; 綾; 綾; ) CJK COMPATIBILITY IDEOGRAPH-F957
+F958;83F1;83F1;83F1;83F1; # (菱; è±; è±; è±; è±; ) CJK COMPATIBILITY IDEOGRAPH-F958
+F959;9675;9675;9675;9675; # (陵; 陵; 陵; 陵; 陵; ) CJK COMPATIBILITY IDEOGRAPH-F959
+F95A;8B80;8B80;8B80;8B80; # (讀; 讀; 讀; 讀; 讀; ) CJK COMPATIBILITY IDEOGRAPH-F95A
+F95B;62CF;62CF;62CF;62CF; # (拏; æ‹; æ‹; æ‹; æ‹; ) CJK COMPATIBILITY IDEOGRAPH-F95B
+F95C;6A02;6A02;6A02;6A02; # (樂; 樂; 樂; 樂; 樂; ) CJK COMPATIBILITY IDEOGRAPH-F95C
+F95D;8AFE;8AFE;8AFE;8AFE; # (ï¥; 諾; 諾; 諾; 諾; ) CJK COMPATIBILITY IDEOGRAPH-F95D
+F95E;4E39;4E39;4E39;4E39; # (丹; 丹; 丹; 丹; 丹; ) CJK COMPATIBILITY IDEOGRAPH-F95E
+F95F;5BE7;5BE7;5BE7;5BE7; # (寧; 寧; 寧; 寧; 寧; ) CJK COMPATIBILITY IDEOGRAPH-F95F
+F960;6012;6012;6012;6012; # (怒; 怒; 怒; 怒; 怒; ) CJK COMPATIBILITY IDEOGRAPH-F960
+F961;7387;7387;7387;7387; # (率; 率; 率; 率; 率; ) CJK COMPATIBILITY IDEOGRAPH-F961
+F962;7570;7570;7570;7570; # (異; 異; 異; 異; 異; ) CJK COMPATIBILITY IDEOGRAPH-F962
+F963;5317;5317;5317;5317; # (北; 北; 北; 北; 北; ) CJK COMPATIBILITY IDEOGRAPH-F963
+F964;78FB;78FB;78FB;78FB; # (磻; 磻; 磻; 磻; 磻; ) CJK COMPATIBILITY IDEOGRAPH-F964
+F965;4FBF;4FBF;4FBF;4FBF; # (便; 便; 便; 便; 便; ) CJK COMPATIBILITY IDEOGRAPH-F965
+F966;5FA9;5FA9;5FA9;5FA9; # (復; 復; 復; 復; 復; ) CJK COMPATIBILITY IDEOGRAPH-F966
+F967;4E0D;4E0D;4E0D;4E0D; # (不; ä¸; ä¸; ä¸; ä¸; ) CJK COMPATIBILITY IDEOGRAPH-F967
+F968;6CCC;6CCC;6CCC;6CCC; # (泌; 泌; 泌; 泌; 泌; ) CJK COMPATIBILITY IDEOGRAPH-F968
+F969;6578;6578;6578;6578; # (數; 數; 數; 數; 數; ) CJK COMPATIBILITY IDEOGRAPH-F969
+F96A;7D22;7D22;7D22;7D22; # (索; 索; 索; 索; 索; ) CJK COMPATIBILITY IDEOGRAPH-F96A
+F96B;53C3;53C3;53C3;53C3; # (參; åƒ; åƒ; åƒ; åƒ; ) CJK COMPATIBILITY IDEOGRAPH-F96B
+F96C;585E;585E;585E;585E; # (塞; 塞; 塞; 塞; 塞; ) CJK COMPATIBILITY IDEOGRAPH-F96C
+F96D;7701;7701;7701;7701; # (省; çœ; çœ; çœ; çœ; ) CJK COMPATIBILITY IDEOGRAPH-F96D
+F96E;8449;8449;8449;8449; # (葉; 葉; 葉; 葉; 葉; ) CJK COMPATIBILITY IDEOGRAPH-F96E
+F96F;8AAA;8AAA;8AAA;8AAA; # (說; 說; 說; 說; 說; ) CJK COMPATIBILITY IDEOGRAPH-F96F
+F970;6BBA;6BBA;6BBA;6BBA; # (殺; 殺; 殺; 殺; 殺; ) CJK COMPATIBILITY IDEOGRAPH-F970
+F971;8FB0;8FB0;8FB0;8FB0; # (辰; 辰; 辰; 辰; 辰; ) CJK COMPATIBILITY IDEOGRAPH-F971
+F972;6C88;6C88;6C88;6C88; # (沈; 沈; 沈; 沈; 沈; ) CJK COMPATIBILITY IDEOGRAPH-F972
+F973;62FE;62FE;62FE;62FE; # (拾; 拾; 拾; 拾; 拾; ) CJK COMPATIBILITY IDEOGRAPH-F973
+F974;82E5;82E5;82E5;82E5; # (若; 若; 若; 若; 若; ) CJK COMPATIBILITY IDEOGRAPH-F974
+F975;63A0;63A0;63A0;63A0; # (掠; 掠; 掠; 掠; 掠; ) CJK COMPATIBILITY IDEOGRAPH-F975
+F976;7565;7565;7565;7565; # (略; 略; 略; 略; 略; ) CJK COMPATIBILITY IDEOGRAPH-F976
+F977;4EAE;4EAE;4EAE;4EAE; # (亮; 亮; 亮; 亮; 亮; ) CJK COMPATIBILITY IDEOGRAPH-F977
+F978;5169;5169;5169;5169; # (兩; 兩; 兩; 兩; 兩; ) CJK COMPATIBILITY IDEOGRAPH-F978
+F979;51C9;51C9;51C9;51C9; # (凉; 凉; 凉; 凉; 凉; ) CJK COMPATIBILITY IDEOGRAPH-F979
+F97A;6881;6881;6881;6881; # (梁; æ¢; æ¢; æ¢; æ¢; ) CJK COMPATIBILITY IDEOGRAPH-F97A
+F97B;7CE7;7CE7;7CE7;7CE7; # (糧; 糧; 糧; 糧; 糧; ) CJK COMPATIBILITY IDEOGRAPH-F97B
+F97C;826F;826F;826F;826F; # (良; 良; 良; 良; 良; ) CJK COMPATIBILITY IDEOGRAPH-F97C
+F97D;8AD2;8AD2;8AD2;8AD2; # (諒; 諒; 諒; 諒; 諒; ) CJK COMPATIBILITY IDEOGRAPH-F97D
+F97E;91CF;91CF;91CF;91CF; # (量; é‡; é‡; é‡; é‡; ) CJK COMPATIBILITY IDEOGRAPH-F97E
+F97F;52F5;52F5;52F5;52F5; # (勵; 勵; 勵; 勵; 勵; ) CJK COMPATIBILITY IDEOGRAPH-F97F
+F980;5442;5442;5442;5442; # (呂; 呂; 呂; 呂; 呂; ) CJK COMPATIBILITY IDEOGRAPH-F980
+F981;5973;5973;5973;5973; # (ï¦; 女; 女; 女; 女; ) CJK COMPATIBILITY IDEOGRAPH-F981
+F982;5EEC;5EEC;5EEC;5EEC; # (廬; 廬; 廬; 廬; 廬; ) CJK COMPATIBILITY IDEOGRAPH-F982
+F983;65C5;65C5;65C5;65C5; # (旅; 旅; 旅; 旅; 旅; ) CJK COMPATIBILITY IDEOGRAPH-F983
+F984;6FFE;6FFE;6FFE;6FFE; # (濾; 濾; 濾; 濾; 濾; ) CJK COMPATIBILITY IDEOGRAPH-F984
+F985;792A;792A;792A;792A; # (礪; 礪; 礪; 礪; 礪; ) CJK COMPATIBILITY IDEOGRAPH-F985
+F986;95AD;95AD;95AD;95AD; # (閭; 閭; 閭; 閭; 閭; ) CJK COMPATIBILITY IDEOGRAPH-F986
+F987;9A6A;9A6A;9A6A;9A6A; # (驪; 驪; 驪; 驪; 驪; ) CJK COMPATIBILITY IDEOGRAPH-F987
+F988;9E97;9E97;9E97;9E97; # (麗; 麗; 麗; 麗; 麗; ) CJK COMPATIBILITY IDEOGRAPH-F988
+F989;9ECE;9ECE;9ECE;9ECE; # (黎; 黎; 黎; 黎; 黎; ) CJK COMPATIBILITY IDEOGRAPH-F989
+F98A;529B;529B;529B;529B; # (力; 力; 力; 力; 力; ) CJK COMPATIBILITY IDEOGRAPH-F98A
+F98B;66C6;66C6;66C6;66C6; # (曆; 曆; 曆; 曆; 曆; ) CJK COMPATIBILITY IDEOGRAPH-F98B
+F98C;6B77;6B77;6B77;6B77; # (歷; 歷; 歷; 歷; 歷; ) CJK COMPATIBILITY IDEOGRAPH-F98C
+F98D;8F62;8F62;8F62;8F62; # (ï¦; è½¢; è½¢; è½¢; è½¢; ) CJK COMPATIBILITY IDEOGRAPH-F98D
+F98E;5E74;5E74;5E74;5E74; # (年; 年; 年; 年; 年; ) CJK COMPATIBILITY IDEOGRAPH-F98E
+F98F;6190;6190;6190;6190; # (ï¦; æ†; æ†; æ†; æ†; ) CJK COMPATIBILITY IDEOGRAPH-F98F
+F990;6200;6200;6200;6200; # (ï¦; 戀; 戀; 戀; 戀; ) CJK COMPATIBILITY IDEOGRAPH-F990
+F991;649A;649A;649A;649A; # (撚; 撚; 撚; 撚; 撚; ) CJK COMPATIBILITY IDEOGRAPH-F991
+F992;6F23;6F23;6F23;6F23; # (漣; 漣; 漣; 漣; 漣; ) CJK COMPATIBILITY IDEOGRAPH-F992
+F993;7149;7149;7149;7149; # (煉; 煉; 煉; 煉; 煉; ) CJK COMPATIBILITY IDEOGRAPH-F993
+F994;7489;7489;7489;7489; # (璉; 璉; 璉; 璉; 璉; ) CJK COMPATIBILITY IDEOGRAPH-F994
+F995;79CA;79CA;79CA;79CA; # (秊; 秊; 秊; 秊; 秊; ) CJK COMPATIBILITY IDEOGRAPH-F995
+F996;7DF4;7DF4;7DF4;7DF4; # (練; 練; 練; 練; 練; ) CJK COMPATIBILITY IDEOGRAPH-F996
+F997;806F;806F;806F;806F; # (聯; è¯; è¯; è¯; è¯; ) CJK COMPATIBILITY IDEOGRAPH-F997
+F998;8F26;8F26;8F26;8F26; # (輦; 輦; 輦; 輦; 輦; ) CJK COMPATIBILITY IDEOGRAPH-F998
+F999;84EE;84EE;84EE;84EE; # (蓮; 蓮; 蓮; 蓮; 蓮; ) CJK COMPATIBILITY IDEOGRAPH-F999
+F99A;9023;9023;9023;9023; # (連; 連; 連; 連; 連; ) CJK COMPATIBILITY IDEOGRAPH-F99A
+F99B;934A;934A;934A;934A; # (鍊; éŠ; éŠ; éŠ; éŠ; ) CJK COMPATIBILITY IDEOGRAPH-F99B
+F99C;5217;5217;5217;5217; # (列; 列; 列; 列; 列; ) CJK COMPATIBILITY IDEOGRAPH-F99C
+F99D;52A3;52A3;52A3;52A3; # (ï¦; 劣; 劣; 劣; 劣; ) CJK COMPATIBILITY IDEOGRAPH-F99D
+F99E;54BD;54BD;54BD;54BD; # (咽; 咽; 咽; 咽; 咽; ) CJK COMPATIBILITY IDEOGRAPH-F99E
+F99F;70C8;70C8;70C8;70C8; # (烈; 烈; 烈; 烈; 烈; ) CJK COMPATIBILITY IDEOGRAPH-F99F
+F9A0;88C2;88C2;88C2;88C2; # (裂; 裂; 裂; 裂; 裂; ) CJK COMPATIBILITY IDEOGRAPH-F9A0
+F9A1;8AAA;8AAA;8AAA;8AAA; # (說; 說; 說; 說; 說; ) CJK COMPATIBILITY IDEOGRAPH-F9A1
+F9A2;5EC9;5EC9;5EC9;5EC9; # (廉; 廉; 廉; 廉; 廉; ) CJK COMPATIBILITY IDEOGRAPH-F9A2
+F9A3;5FF5;5FF5;5FF5;5FF5; # (念; 念; 念; 念; 念; ) CJK COMPATIBILITY IDEOGRAPH-F9A3
+F9A4;637B;637B;637B;637B; # (捻; æ»; æ»; æ»; æ»; ) CJK COMPATIBILITY IDEOGRAPH-F9A4
+F9A5;6BAE;6BAE;6BAE;6BAE; # (殮; 殮; 殮; 殮; 殮; ) CJK COMPATIBILITY IDEOGRAPH-F9A5
+F9A6;7C3E;7C3E;7C3E;7C3E; # (簾; 簾; 簾; 簾; 簾; ) CJK COMPATIBILITY IDEOGRAPH-F9A6
+F9A7;7375;7375;7375;7375; # (獵; çµ; çµ; çµ; çµ; ) CJK COMPATIBILITY IDEOGRAPH-F9A7
+F9A8;4EE4;4EE4;4EE4;4EE4; # (令; 令; 令; 令; 令; ) CJK COMPATIBILITY IDEOGRAPH-F9A8
+F9A9;56F9;56F9;56F9;56F9; # (囹; 囹; 囹; 囹; 囹; ) CJK COMPATIBILITY IDEOGRAPH-F9A9
+F9AA;5BE7;5BE7;5BE7;5BE7; # (寧; 寧; 寧; 寧; 寧; ) CJK COMPATIBILITY IDEOGRAPH-F9AA
+F9AB;5DBA;5DBA;5DBA;5DBA; # (嶺; 嶺; 嶺; 嶺; 嶺; ) CJK COMPATIBILITY IDEOGRAPH-F9AB
+F9AC;601C;601C;601C;601C; # (怜; 怜; 怜; 怜; 怜; ) CJK COMPATIBILITY IDEOGRAPH-F9AC
+F9AD;73B2;73B2;73B2;73B2; # (玲; 玲; 玲; 玲; 玲; ) CJK COMPATIBILITY IDEOGRAPH-F9AD
+F9AE;7469;7469;7469;7469; # (瑩; 瑩; 瑩; 瑩; 瑩; ) CJK COMPATIBILITY IDEOGRAPH-F9AE
+F9AF;7F9A;7F9A;7F9A;7F9A; # (羚; 羚; 羚; 羚; 羚; ) CJK COMPATIBILITY IDEOGRAPH-F9AF
+F9B0;8046;8046;8046;8046; # (聆; è†; è†; è†; è†; ) CJK COMPATIBILITY IDEOGRAPH-F9B0
+F9B1;9234;9234;9234;9234; # (鈴; 鈴; 鈴; 鈴; 鈴; ) CJK COMPATIBILITY IDEOGRAPH-F9B1
+F9B2;96F6;96F6;96F6;96F6; # (零; 零; 零; 零; 零; ) CJK COMPATIBILITY IDEOGRAPH-F9B2
+F9B3;9748;9748;9748;9748; # (靈; éˆ; éˆ; éˆ; éˆ; ) CJK COMPATIBILITY IDEOGRAPH-F9B3
+F9B4;9818;9818;9818;9818; # (領; 領; 領; 領; 領; ) CJK COMPATIBILITY IDEOGRAPH-F9B4
+F9B5;4F8B;4F8B;4F8B;4F8B; # (例; 例; 例; 例; 例; ) CJK COMPATIBILITY IDEOGRAPH-F9B5
+F9B6;79AE;79AE;79AE;79AE; # (禮; 禮; 禮; 禮; 禮; ) CJK COMPATIBILITY IDEOGRAPH-F9B6
+F9B7;91B4;91B4;91B4;91B4; # (醴; 醴; 醴; 醴; 醴; ) CJK COMPATIBILITY IDEOGRAPH-F9B7
+F9B8;96B8;96B8;96B8;96B8; # (隸; 隸; 隸; 隸; 隸; ) CJK COMPATIBILITY IDEOGRAPH-F9B8
+F9B9;60E1;60E1;60E1;60E1; # (惡; 惡; 惡; 惡; 惡; ) CJK COMPATIBILITY IDEOGRAPH-F9B9
+F9BA;4E86;4E86;4E86;4E86; # (了; 了; 了; 了; 了; ) CJK COMPATIBILITY IDEOGRAPH-F9BA
+F9BB;50DA;50DA;50DA;50DA; # (僚; 僚; 僚; 僚; 僚; ) CJK COMPATIBILITY IDEOGRAPH-F9BB
+F9BC;5BEE;5BEE;5BEE;5BEE; # (寮; 寮; 寮; 寮; 寮; ) CJK COMPATIBILITY IDEOGRAPH-F9BC
+F9BD;5C3F;5C3F;5C3F;5C3F; # (尿; 尿; 尿; 尿; 尿; ) CJK COMPATIBILITY IDEOGRAPH-F9BD
+F9BE;6599;6599;6599;6599; # (料; 料; 料; 料; 料; ) CJK COMPATIBILITY IDEOGRAPH-F9BE
+F9BF;6A02;6A02;6A02;6A02; # (樂; 樂; 樂; 樂; 樂; ) CJK COMPATIBILITY IDEOGRAPH-F9BF
+F9C0;71CE;71CE;71CE;71CE; # (燎; 燎; 燎; 燎; 燎; ) CJK COMPATIBILITY IDEOGRAPH-F9C0
+F9C1;7642;7642;7642;7642; # (ï§; 療; 療; 療; 療; ) CJK COMPATIBILITY IDEOGRAPH-F9C1
+F9C2;84FC;84FC;84FC;84FC; # (蓼; 蓼; 蓼; 蓼; 蓼; ) CJK COMPATIBILITY IDEOGRAPH-F9C2
+F9C3;907C;907C;907C;907C; # (遼; é¼; é¼; é¼; é¼; ) CJK COMPATIBILITY IDEOGRAPH-F9C3
+F9C4;9F8D;9F8D;9F8D;9F8D; # (龍; é¾; é¾; é¾; é¾; ) CJK COMPATIBILITY IDEOGRAPH-F9C4
+F9C5;6688;6688;6688;6688; # (暈; 暈; 暈; 暈; 暈; ) CJK COMPATIBILITY IDEOGRAPH-F9C5
+F9C6;962E;962E;962E;962E; # (阮; 阮; 阮; 阮; 阮; ) CJK COMPATIBILITY IDEOGRAPH-F9C6
+F9C7;5289;5289;5289;5289; # (劉; 劉; 劉; 劉; 劉; ) CJK COMPATIBILITY IDEOGRAPH-F9C7
+F9C8;677B;677B;677B;677B; # (杻; æ»; æ»; æ»; æ»; ) CJK COMPATIBILITY IDEOGRAPH-F9C8
+F9C9;67F3;67F3;67F3;67F3; # (柳; 柳; 柳; 柳; 柳; ) CJK COMPATIBILITY IDEOGRAPH-F9C9
+F9CA;6D41;6D41;6D41;6D41; # (流; æµ; æµ; æµ; æµ; ) CJK COMPATIBILITY IDEOGRAPH-F9CA
+F9CB;6E9C;6E9C;6E9C;6E9C; # (溜; 溜; 溜; 溜; 溜; ) CJK COMPATIBILITY IDEOGRAPH-F9CB
+F9CC;7409;7409;7409;7409; # (琉; ç‰; ç‰; ç‰; ç‰; ) CJK COMPATIBILITY IDEOGRAPH-F9CC
+F9CD;7559;7559;7559;7559; # (ï§; ç•™; ç•™; ç•™; ç•™; ) CJK COMPATIBILITY IDEOGRAPH-F9CD
+F9CE;786B;786B;786B;786B; # (硫; 硫; 硫; 硫; 硫; ) CJK COMPATIBILITY IDEOGRAPH-F9CE
+F9CF;7D10;7D10;7D10;7D10; # (ï§; ç´; ç´; ç´; ç´; ) CJK COMPATIBILITY IDEOGRAPH-F9CF
+F9D0;985E;985E;985E;985E; # (ï§; é¡ž; é¡ž; é¡ž; é¡ž; ) CJK COMPATIBILITY IDEOGRAPH-F9D0
+F9D1;516D;516D;516D;516D; # (六; 六; 六; 六; 六; ) CJK COMPATIBILITY IDEOGRAPH-F9D1
+F9D2;622E;622E;622E;622E; # (戮; 戮; 戮; 戮; 戮; ) CJK COMPATIBILITY IDEOGRAPH-F9D2
+F9D3;9678;9678;9678;9678; # (陸; 陸; 陸; 陸; 陸; ) CJK COMPATIBILITY IDEOGRAPH-F9D3
+F9D4;502B;502B;502B;502B; # (倫; 倫; 倫; 倫; 倫; ) CJK COMPATIBILITY IDEOGRAPH-F9D4
+F9D5;5D19;5D19;5D19;5D19; # (崙; 崙; 崙; 崙; 崙; ) CJK COMPATIBILITY IDEOGRAPH-F9D5
+F9D6;6DEA;6DEA;6DEA;6DEA; # (淪; 淪; 淪; 淪; 淪; ) CJK COMPATIBILITY IDEOGRAPH-F9D6
+F9D7;8F2A;8F2A;8F2A;8F2A; # (輪; 輪; 輪; 輪; 輪; ) CJK COMPATIBILITY IDEOGRAPH-F9D7
+F9D8;5F8B;5F8B;5F8B;5F8B; # (律; 律; 律; 律; 律; ) CJK COMPATIBILITY IDEOGRAPH-F9D8
+F9D9;6144;6144;6144;6144; # (慄; 慄; 慄; 慄; 慄; ) CJK COMPATIBILITY IDEOGRAPH-F9D9
+F9DA;6817;6817;6817;6817; # (栗; 栗; 栗; 栗; 栗; ) CJK COMPATIBILITY IDEOGRAPH-F9DA
+F9DB;7387;7387;7387;7387; # (率; 率; 率; 率; 率; ) CJK COMPATIBILITY IDEOGRAPH-F9DB
+F9DC;9686;9686;9686;9686; # (隆; 隆; 隆; 隆; 隆; ) CJK COMPATIBILITY IDEOGRAPH-F9DC
+F9DD;5229;5229;5229;5229; # (ï§; 利; 利; 利; 利; ) CJK COMPATIBILITY IDEOGRAPH-F9DD
+F9DE;540F;540F;540F;540F; # (吏; å; å; å; å; ) CJK COMPATIBILITY IDEOGRAPH-F9DE
+F9DF;5C65;5C65;5C65;5C65; # (履; 履; 履; 履; 履; ) CJK COMPATIBILITY IDEOGRAPH-F9DF
+F9E0;6613;6613;6613;6613; # (易; 易; 易; 易; 易; ) CJK COMPATIBILITY IDEOGRAPH-F9E0
+F9E1;674E;674E;674E;674E; # (李; æŽ; æŽ; æŽ; æŽ; ) CJK COMPATIBILITY IDEOGRAPH-F9E1
+F9E2;68A8;68A8;68A8;68A8; # (梨; 梨; 梨; 梨; 梨; ) CJK COMPATIBILITY IDEOGRAPH-F9E2
+F9E3;6CE5;6CE5;6CE5;6CE5; # (泥; 泥; 泥; 泥; 泥; ) CJK COMPATIBILITY IDEOGRAPH-F9E3
+F9E4;7406;7406;7406;7406; # (理; ç†; ç†; ç†; ç†; ) CJK COMPATIBILITY IDEOGRAPH-F9E4
+F9E5;75E2;75E2;75E2;75E2; # (痢; 痢; 痢; 痢; 痢; ) CJK COMPATIBILITY IDEOGRAPH-F9E5
+F9E6;7F79;7F79;7F79;7F79; # (罹; 罹; 罹; 罹; 罹; ) CJK COMPATIBILITY IDEOGRAPH-F9E6
+F9E7;88CF;88CF;88CF;88CF; # (裏; è£; è£; è£; è£; ) CJK COMPATIBILITY IDEOGRAPH-F9E7
+F9E8;88E1;88E1;88E1;88E1; # (裡; 裡; 裡; 裡; 裡; ) CJK COMPATIBILITY IDEOGRAPH-F9E8
+F9E9;91CC;91CC;91CC;91CC; # (里; 里; 里; 里; 里; ) CJK COMPATIBILITY IDEOGRAPH-F9E9
+F9EA;96E2;96E2;96E2;96E2; # (離; 離; 離; 離; 離; ) CJK COMPATIBILITY IDEOGRAPH-F9EA
+F9EB;533F;533F;533F;533F; # (匿; 匿; 匿; 匿; 匿; ) CJK COMPATIBILITY IDEOGRAPH-F9EB
+F9EC;6EBA;6EBA;6EBA;6EBA; # (溺; 溺; 溺; 溺; 溺; ) CJK COMPATIBILITY IDEOGRAPH-F9EC
+F9ED;541D;541D;541D;541D; # (吝; å; å; å; å; ) CJK COMPATIBILITY IDEOGRAPH-F9ED
+F9EE;71D0;71D0;71D0;71D0; # (燐; ç‡; ç‡; ç‡; ç‡; ) CJK COMPATIBILITY IDEOGRAPH-F9EE
+F9EF;7498;7498;7498;7498; # (璘; 璘; 璘; 璘; 璘; ) CJK COMPATIBILITY IDEOGRAPH-F9EF
+F9F0;85FA;85FA;85FA;85FA; # (藺; 藺; 藺; 藺; 藺; ) CJK COMPATIBILITY IDEOGRAPH-F9F0
+F9F1;96A3;96A3;96A3;96A3; # (隣; 隣; 隣; 隣; 隣; ) CJK COMPATIBILITY IDEOGRAPH-F9F1
+F9F2;9C57;9C57;9C57;9C57; # (鱗; 鱗; 鱗; 鱗; 鱗; ) CJK COMPATIBILITY IDEOGRAPH-F9F2
+F9F3;9E9F;9E9F;9E9F;9E9F; # (麟; 麟; 麟; 麟; 麟; ) CJK COMPATIBILITY IDEOGRAPH-F9F3
+F9F4;6797;6797;6797;6797; # (林; 林; 林; 林; 林; ) CJK COMPATIBILITY IDEOGRAPH-F9F4
+F9F5;6DCB;6DCB;6DCB;6DCB; # (淋; 淋; 淋; 淋; 淋; ) CJK COMPATIBILITY IDEOGRAPH-F9F5
+F9F6;81E8;81E8;81E8;81E8; # (臨; 臨; 臨; 臨; 臨; ) CJK COMPATIBILITY IDEOGRAPH-F9F6
+F9F7;7ACB;7ACB;7ACB;7ACB; # (立; 立; 立; 立; 立; ) CJK COMPATIBILITY IDEOGRAPH-F9F7
+F9F8;7B20;7B20;7B20;7B20; # (笠; 笠; 笠; 笠; 笠; ) CJK COMPATIBILITY IDEOGRAPH-F9F8
+F9F9;7C92;7C92;7C92;7C92; # (粒; 粒; 粒; 粒; 粒; ) CJK COMPATIBILITY IDEOGRAPH-F9F9
+F9FA;72C0;72C0;72C0;72C0; # (狀; 狀; 狀; 狀; 狀; ) CJK COMPATIBILITY IDEOGRAPH-F9FA
+F9FB;7099;7099;7099;7099; # (炙; 炙; 炙; 炙; 炙; ) CJK COMPATIBILITY IDEOGRAPH-F9FB
+F9FC;8B58;8B58;8B58;8B58; # (識; 識; 識; 識; 識; ) CJK COMPATIBILITY IDEOGRAPH-F9FC
+F9FD;4EC0;4EC0;4EC0;4EC0; # (什; 什; 什; 什; 什; ) CJK COMPATIBILITY IDEOGRAPH-F9FD
+F9FE;8336;8336;8336;8336; # (茶; 茶; 茶; 茶; 茶; ) CJK COMPATIBILITY IDEOGRAPH-F9FE
+F9FF;523A;523A;523A;523A; # (刺; 刺; 刺; 刺; 刺; ) CJK COMPATIBILITY IDEOGRAPH-F9FF
+FA00;5207;5207;5207;5207; # (切; 切; 切; 切; 切; ) CJK COMPATIBILITY IDEOGRAPH-FA00
+FA01;5EA6;5EA6;5EA6;5EA6; # (ï¨; 度; 度; 度; 度; ) CJK COMPATIBILITY IDEOGRAPH-FA01
+FA02;62D3;62D3;62D3;62D3; # (拓; 拓; 拓; 拓; 拓; ) CJK COMPATIBILITY IDEOGRAPH-FA02
+FA03;7CD6;7CD6;7CD6;7CD6; # (糖; 糖; 糖; 糖; 糖; ) CJK COMPATIBILITY IDEOGRAPH-FA03
+FA04;5B85;5B85;5B85;5B85; # (宅; 宅; 宅; 宅; 宅; ) CJK COMPATIBILITY IDEOGRAPH-FA04
+FA05;6D1E;6D1E;6D1E;6D1E; # (洞; 洞; 洞; 洞; 洞; ) CJK COMPATIBILITY IDEOGRAPH-FA05
+FA06;66B4;66B4;66B4;66B4; # (暴; 暴; 暴; 暴; 暴; ) CJK COMPATIBILITY IDEOGRAPH-FA06
+FA07;8F3B;8F3B;8F3B;8F3B; # (輻; 輻; 輻; 輻; 輻; ) CJK COMPATIBILITY IDEOGRAPH-FA07
+FA08;884C;884C;884C;884C; # (行; 行; 行; 行; 行; ) CJK COMPATIBILITY IDEOGRAPH-FA08
+FA09;964D;964D;964D;964D; # (降; é™; é™; é™; é™; ) CJK COMPATIBILITY IDEOGRAPH-FA09
+FA0A;898B;898B;898B;898B; # (見; 見; 見; 見; 見; ) CJK COMPATIBILITY IDEOGRAPH-FA0A
+FA0B;5ED3;5ED3;5ED3;5ED3; # (廓; 廓; 廓; 廓; 廓; ) CJK COMPATIBILITY IDEOGRAPH-FA0B
+FA0C;5140;5140;5140;5140; # (兀; 兀; 兀; 兀; 兀; ) CJK COMPATIBILITY IDEOGRAPH-FA0C
+FA0D;55C0;55C0;55C0;55C0; # (ï¨; å—€; å—€; å—€; å—€; ) CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10;585A;585A;585A;585A; # (ï¨; å¡š; å¡š; å¡š; å¡š; ) CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12;6674;6674;6674;6674; # (晴; 晴; 晴; 晴; 晴; ) CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15;51DE;51DE;51DE;51DE; # (凞; 凞; 凞; 凞; 凞; ) CJK COMPATIBILITY IDEOGRAPH-FA15
+FA16;732A;732A;732A;732A; # (猪; 猪; 猪; 猪; 猪; ) CJK COMPATIBILITY IDEOGRAPH-FA16
+FA17;76CA;76CA;76CA;76CA; # (益; 益; 益; 益; 益; ) CJK COMPATIBILITY IDEOGRAPH-FA17
+FA18;793C;793C;793C;793C; # (礼; 礼; 礼; 礼; 礼; ) CJK COMPATIBILITY IDEOGRAPH-FA18
+FA19;795E;795E;795E;795E; # (神; 神; 神; 神; 神; ) CJK COMPATIBILITY IDEOGRAPH-FA19
+FA1A;7965;7965;7965;7965; # (祥; 祥; 祥; 祥; 祥; ) CJK COMPATIBILITY IDEOGRAPH-FA1A
+FA1B;798F;798F;798F;798F; # (福; ç¦; ç¦; ç¦; ç¦; ) CJK COMPATIBILITY IDEOGRAPH-FA1B
+FA1C;9756;9756;9756;9756; # (靖; é–; é–; é–; é–; ) CJK COMPATIBILITY IDEOGRAPH-FA1C
+FA1D;7CBE;7CBE;7CBE;7CBE; # (ï¨; ç²¾; ç²¾; ç²¾; ç²¾; ) CJK COMPATIBILITY IDEOGRAPH-FA1D
+FA1E;7FBD;7FBD;7FBD;7FBD; # (羽; 羽; 羽; 羽; 羽; ) CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20;8612;8612;8612;8612; # (蘒; 蘒; 蘒; 蘒; 蘒; ) CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22;8AF8;8AF8;8AF8;8AF8; # (諸; 諸; 諸; 諸; 諸; ) CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25;9038;9038;9038;9038; # (逸; 逸; 逸; 逸; 逸; ) CJK COMPATIBILITY IDEOGRAPH-FA25
+FA26;90FD;90FD;90FD;90FD; # (都; 都; 都; 都; 都; ) CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A;98EF;98EF;98EF;98EF; # (飯; 飯; 飯; 飯; 飯; ) CJK COMPATIBILITY IDEOGRAPH-FA2A
+FA2B;98FC;98FC;98FC;98FC; # (飼; 飼; 飼; 飼; 飼; ) CJK COMPATIBILITY IDEOGRAPH-FA2B
+FA2C;9928;9928;9928;9928; # (館; 館; 館; 館; 館; ) CJK COMPATIBILITY IDEOGRAPH-FA2C
+FA2D;9DB4;9DB4;9DB4;9DB4; # (鶴; 鶴; 鶴; 鶴; 鶴; ) CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30;4FAE;4FAE;4FAE;4FAE; # (侮; 侮; 侮; 侮; 侮; ) CJK COMPATIBILITY IDEOGRAPH-FA30
+FA31;50E7;50E7;50E7;50E7; # (僧; 僧; 僧; 僧; 僧; ) CJK COMPATIBILITY IDEOGRAPH-FA31
+FA32;514D;514D;514D;514D; # (免; å…; å…; å…; å…; ) CJK COMPATIBILITY IDEOGRAPH-FA32
+FA33;52C9;52C9;52C9;52C9; # (勉; 勉; 勉; 勉; 勉; ) CJK COMPATIBILITY IDEOGRAPH-FA33
+FA34;52E4;52E4;52E4;52E4; # (勤; 勤; 勤; 勤; 勤; ) CJK COMPATIBILITY IDEOGRAPH-FA34
+FA35;5351;5351;5351;5351; # (卑; å‘; å‘; å‘; å‘; ) CJK COMPATIBILITY IDEOGRAPH-FA35
+FA36;559D;559D;559D;559D; # (喝; å–; å–; å–; å–; ) CJK COMPATIBILITY IDEOGRAPH-FA36
+FA37;5606;5606;5606;5606; # (嘆; 嘆; 嘆; 嘆; 嘆; ) CJK COMPATIBILITY IDEOGRAPH-FA37
+FA38;5668;5668;5668;5668; # (器; 器; 器; 器; 器; ) CJK COMPATIBILITY IDEOGRAPH-FA38
+FA39;5840;5840;5840;5840; # (塀; 塀; 塀; 塀; 塀; ) CJK COMPATIBILITY IDEOGRAPH-FA39
+FA3A;58A8;58A8;58A8;58A8; # (墨; 墨; 墨; 墨; 墨; ) CJK COMPATIBILITY IDEOGRAPH-FA3A
+FA3B;5C64;5C64;5C64;5C64; # (層; 層; 層; 層; 層; ) CJK COMPATIBILITY IDEOGRAPH-FA3B
+FA3C;5C6E;5C6E;5C6E;5C6E; # (屮; 屮; 屮; 屮; 屮; ) CJK COMPATIBILITY IDEOGRAPH-FA3C
+FA3D;6094;6094;6094;6094; # (悔; 悔; 悔; 悔; 悔; ) CJK COMPATIBILITY IDEOGRAPH-FA3D
+FA3E;6168;6168;6168;6168; # (慨; 慨; 慨; 慨; 慨; ) CJK COMPATIBILITY IDEOGRAPH-FA3E
+FA3F;618E;618E;618E;618E; # (憎; 憎; 憎; 憎; 憎; ) CJK COMPATIBILITY IDEOGRAPH-FA3F
+FA40;61F2;61F2;61F2;61F2; # (懲; 懲; 懲; 懲; 懲; ) CJK COMPATIBILITY IDEOGRAPH-FA40
+FA41;654F;654F;654F;654F; # (ï©; æ•; æ•; æ•; æ•; ) CJK COMPATIBILITY IDEOGRAPH-FA41
+FA42;65E2;65E2;65E2;65E2; # (ï©‚; æ—¢; æ—¢; æ—¢; æ—¢; ) CJK COMPATIBILITY IDEOGRAPH-FA42
+FA43;6691;6691;6691;6691; # (暑; 暑; 暑; 暑; 暑; ) CJK COMPATIBILITY IDEOGRAPH-FA43
+FA44;6885;6885;6885;6885; # (梅; 梅; 梅; 梅; 梅; ) CJK COMPATIBILITY IDEOGRAPH-FA44
+FA45;6D77;6D77;6D77;6D77; # (ï©…; æµ·; æµ·; æµ·; æµ·; ) CJK COMPATIBILITY IDEOGRAPH-FA45
+FA46;6E1A;6E1A;6E1A;6E1A; # (渚; 渚; 渚; 渚; 渚; ) CJK COMPATIBILITY IDEOGRAPH-FA46
+FA47;6F22;6F22;6F22;6F22; # (漢; 漢; 漢; 漢; 漢; ) CJK COMPATIBILITY IDEOGRAPH-FA47
+FA48;716E;716E;716E;716E; # (煮; 煮; 煮; 煮; 煮; ) CJK COMPATIBILITY IDEOGRAPH-FA48
+FA49;722B;722B;722B;722B; # (爫; 爫; 爫; 爫; 爫; ) CJK COMPATIBILITY IDEOGRAPH-FA49
+FA4A;7422;7422;7422;7422; # (ï©Š; ç¢; ç¢; ç¢; ç¢; ) CJK COMPATIBILITY IDEOGRAPH-FA4A
+FA4B;7891;7891;7891;7891; # (碑; 碑; 碑; 碑; 碑; ) CJK COMPATIBILITY IDEOGRAPH-FA4B
+FA4C;793E;793E;793E;793E; # (社; 社; 社; 社; 社; ) CJK COMPATIBILITY IDEOGRAPH-FA4C
+FA4D;7949;7949;7949;7949; # (ï©; 祉; 祉; 祉; 祉; ) CJK COMPATIBILITY IDEOGRAPH-FA4D
+FA4E;7948;7948;7948;7948; # (祈; 祈; 祈; 祈; 祈; ) CJK COMPATIBILITY IDEOGRAPH-FA4E
+FA4F;7950;7950;7950;7950; # (ï©; ç¥; ç¥; ç¥; ç¥; ) CJK COMPATIBILITY IDEOGRAPH-FA4F
+FA50;7956;7956;7956;7956; # (ï©; 祖; 祖; 祖; 祖; ) CJK COMPATIBILITY IDEOGRAPH-FA50
+FA51;795D;795D;795D;795D; # (ï©‘; ç¥; ç¥; ç¥; ç¥; ) CJK COMPATIBILITY IDEOGRAPH-FA51
+FA52;798D;798D;798D;798D; # (ï©’; ç¦; ç¦; ç¦; ç¦; ) CJK COMPATIBILITY IDEOGRAPH-FA52
+FA53;798E;798E;798E;798E; # (禎; 禎; 禎; 禎; 禎; ) CJK COMPATIBILITY IDEOGRAPH-FA53
+FA54;7A40;7A40;7A40;7A40; # (ï©”; ç©€; ç©€; ç©€; ç©€; ) CJK COMPATIBILITY IDEOGRAPH-FA54
+FA55;7A81;7A81;7A81;7A81; # (ï©•; çª; çª; çª; çª; ) CJK COMPATIBILITY IDEOGRAPH-FA55
+FA56;7BC0;7BC0;7BC0;7BC0; # (節; 節; 節; 節; 節; ) CJK COMPATIBILITY IDEOGRAPH-FA56
+FA57;7DF4;7DF4;7DF4;7DF4; # (ï©—; ç·´; ç·´; ç·´; ç·´; ) CJK COMPATIBILITY IDEOGRAPH-FA57
+FA58;7E09;7E09;7E09;7E09; # (縉; 縉; 縉; 縉; 縉; ) CJK COMPATIBILITY IDEOGRAPH-FA58
+FA59;7E41;7E41;7E41;7E41; # (ï©™; ç¹; ç¹; ç¹; ç¹; ) CJK COMPATIBILITY IDEOGRAPH-FA59
+FA5A;7F72;7F72;7F72;7F72; # (ï©š; ç½²; ç½²; ç½²; ç½²; ) CJK COMPATIBILITY IDEOGRAPH-FA5A
+FA5B;8005;8005;8005;8005; # (者; 者; 者; 者; 者; ) CJK COMPATIBILITY IDEOGRAPH-FA5B
+FA5C;81ED;81ED;81ED;81ED; # (臭; 臭; 臭; 臭; 臭; ) CJK COMPATIBILITY IDEOGRAPH-FA5C
+FA5D;8279;8279;8279;8279; # (ï©; 艹; 艹; 艹; 艹; ) CJK COMPATIBILITY IDEOGRAPH-FA5D
+FA5E;8279;8279;8279;8279; # (艹; 艹; 艹; 艹; 艹; ) CJK COMPATIBILITY IDEOGRAPH-FA5E
+FA5F;8457;8457;8457;8457; # (ï©Ÿ; è‘—; è‘—; è‘—; è‘—; ) CJK COMPATIBILITY IDEOGRAPH-FA5F
+FA60;8910;8910;8910;8910; # (ï© ; è¤; è¤; è¤; è¤; ) CJK COMPATIBILITY IDEOGRAPH-FA60
+FA61;8996;8996;8996;8996; # (視; 視; 視; 視; 視; ) CJK COMPATIBILITY IDEOGRAPH-FA61
+FA62;8B01;8B01;8B01;8B01; # (ï©¢; è¬; è¬; è¬; è¬; ) CJK COMPATIBILITY IDEOGRAPH-FA62
+FA63;8B39;8B39;8B39;8B39; # (謹; 謹; 謹; 謹; 謹; ) CJK COMPATIBILITY IDEOGRAPH-FA63
+FA64;8CD3;8CD3;8CD3;8CD3; # (賓; 賓; 賓; 賓; 賓; ) CJK COMPATIBILITY IDEOGRAPH-FA64
+FA65;8D08;8D08;8D08;8D08; # (ï©¥; è´ˆ; è´ˆ; è´ˆ; è´ˆ; ) CJK COMPATIBILITY IDEOGRAPH-FA65
+FA66;8FB6;8FB6;8FB6;8FB6; # (辶; 辶; 辶; 辶; 辶; ) CJK COMPATIBILITY IDEOGRAPH-FA66
+FA67;9038;9038;9038;9038; # (逸; 逸; 逸; 逸; 逸; ) CJK COMPATIBILITY IDEOGRAPH-FA67
+FA68;96E3;96E3;96E3;96E3; # (難; 難; 難; 難; 難; ) CJK COMPATIBILITY IDEOGRAPH-FA68
+FA69;97FF;97FF;97FF;97FF; # (響; 響; 響; 響; 響; ) CJK COMPATIBILITY IDEOGRAPH-FA69
+FA6A;983B;983B;983B;983B; # (頻; 頻; 頻; 頻; 頻; ) CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70;4E26;4E26;4E26;4E26; # (並; 並; 並; 並; 並; ) CJK COMPATIBILITY IDEOGRAPH-FA70
+FA71;51B5;51B5;51B5;51B5; # (况; 况; 况; 况; 况; ) CJK COMPATIBILITY IDEOGRAPH-FA71
+FA72;5168;5168;5168;5168; # (全; 全; 全; 全; 全; ) CJK COMPATIBILITY IDEOGRAPH-FA72
+FA73;4F80;4F80;4F80;4F80; # (侀; 侀; 侀; 侀; 侀; ) CJK COMPATIBILITY IDEOGRAPH-FA73
+FA74;5145;5145;5145;5145; # (ï©´; å……; å……; å……; å……; ) CJK COMPATIBILITY IDEOGRAPH-FA74
+FA75;5180;5180;5180;5180; # (冀; 冀; 冀; 冀; 冀; ) CJK COMPATIBILITY IDEOGRAPH-FA75
+FA76;52C7;52C7;52C7;52C7; # (勇; 勇; 勇; 勇; 勇; ) CJK COMPATIBILITY IDEOGRAPH-FA76
+FA77;52FA;52FA;52FA;52FA; # (勺; 勺; 勺; 勺; 勺; ) CJK COMPATIBILITY IDEOGRAPH-FA77
+FA78;559D;559D;559D;559D; # (喝; å–; å–; å–; å–; ) CJK COMPATIBILITY IDEOGRAPH-FA78
+FA79;5555;5555;5555;5555; # (啕; 啕; 啕; 啕; 啕; ) CJK COMPATIBILITY IDEOGRAPH-FA79
+FA7A;5599;5599;5599;5599; # (喙; 喙; 喙; 喙; 喙; ) CJK COMPATIBILITY IDEOGRAPH-FA7A
+FA7B;55E2;55E2;55E2;55E2; # (ï©»; å—¢; å—¢; å—¢; å—¢; ) CJK COMPATIBILITY IDEOGRAPH-FA7B
+FA7C;585A;585A;585A;585A; # (塚; 塚; 塚; 塚; 塚; ) CJK COMPATIBILITY IDEOGRAPH-FA7C
+FA7D;58B3;58B3;58B3;58B3; # (墳; 墳; 墳; 墳; 墳; ) CJK COMPATIBILITY IDEOGRAPH-FA7D
+FA7E;5944;5944;5944;5944; # (奄; 奄; 奄; 奄; 奄; ) CJK COMPATIBILITY IDEOGRAPH-FA7E
+FA7F;5954;5954;5954;5954; # (奔; 奔; 奔; 奔; 奔; ) CJK COMPATIBILITY IDEOGRAPH-FA7F
+FA80;5A62;5A62;5A62;5A62; # (婢; 婢; 婢; 婢; 婢; ) CJK COMPATIBILITY IDEOGRAPH-FA80
+FA81;5B28;5B28;5B28;5B28; # (ïª; 嬨; 嬨; 嬨; 嬨; ) CJK COMPATIBILITY IDEOGRAPH-FA81
+FA82;5ED2;5ED2;5ED2;5ED2; # (廒; 廒; 廒; 廒; 廒; ) CJK COMPATIBILITY IDEOGRAPH-FA82
+FA83;5ED9;5ED9;5ED9;5ED9; # (廙; 廙; 廙; 廙; 廙; ) CJK COMPATIBILITY IDEOGRAPH-FA83
+FA84;5F69;5F69;5F69;5F69; # (彩; 彩; 彩; 彩; 彩; ) CJK COMPATIBILITY IDEOGRAPH-FA84
+FA85;5FAD;5FAD;5FAD;5FAD; # (徭; 徭; 徭; 徭; 徭; ) CJK COMPATIBILITY IDEOGRAPH-FA85
+FA86;60D8;60D8;60D8;60D8; # (惘; 惘; 惘; 惘; 惘; ) CJK COMPATIBILITY IDEOGRAPH-FA86
+FA87;614E;614E;614E;614E; # (慎; 慎; 慎; 慎; 慎; ) CJK COMPATIBILITY IDEOGRAPH-FA87
+FA88;6108;6108;6108;6108; # (愈; 愈; 愈; 愈; 愈; ) CJK COMPATIBILITY IDEOGRAPH-FA88
+FA89;618E;618E;618E;618E; # (憎; 憎; 憎; 憎; 憎; ) CJK COMPATIBILITY IDEOGRAPH-FA89
+FA8A;6160;6160;6160;6160; # (慠; 慠; 慠; 慠; 慠; ) CJK COMPATIBILITY IDEOGRAPH-FA8A
+FA8B;61F2;61F2;61F2;61F2; # (懲; 懲; 懲; 懲; 懲; ) CJK COMPATIBILITY IDEOGRAPH-FA8B
+FA8C;6234;6234;6234;6234; # (戴; 戴; 戴; 戴; 戴; ) CJK COMPATIBILITY IDEOGRAPH-FA8C
+FA8D;63C4;63C4;63C4;63C4; # (ïª; æ„; æ„; æ„; æ„; ) CJK COMPATIBILITY IDEOGRAPH-FA8D
+FA8E;641C;641C;641C;641C; # (搜; æœ; æœ; æœ; æœ; ) CJK COMPATIBILITY IDEOGRAPH-FA8E
+FA8F;6452;6452;6452;6452; # (ïª; æ‘’; æ‘’; æ‘’; æ‘’; ) CJK COMPATIBILITY IDEOGRAPH-FA8F
+FA90;6556;6556;6556;6556; # (ïª; æ•–; æ•–; æ•–; æ•–; ) CJK COMPATIBILITY IDEOGRAPH-FA90
+FA91;6674;6674;6674;6674; # (晴; 晴; 晴; 晴; 晴; ) CJK COMPATIBILITY IDEOGRAPH-FA91
+FA92;6717;6717;6717;6717; # (朗; 朗; 朗; 朗; 朗; ) CJK COMPATIBILITY IDEOGRAPH-FA92
+FA93;671B;671B;671B;671B; # (望; 望; 望; 望; 望; ) CJK COMPATIBILITY IDEOGRAPH-FA93
+FA94;6756;6756;6756;6756; # (杖; æ–; æ–; æ–; æ–; ) CJK COMPATIBILITY IDEOGRAPH-FA94
+FA95;6B79;6B79;6B79;6B79; # (歹; 歹; 歹; 歹; 歹; ) CJK COMPATIBILITY IDEOGRAPH-FA95
+FA96;6BBA;6BBA;6BBA;6BBA; # (殺; 殺; 殺; 殺; 殺; ) CJK COMPATIBILITY IDEOGRAPH-FA96
+FA97;6D41;6D41;6D41;6D41; # (流; æµ; æµ; æµ; æµ; ) CJK COMPATIBILITY IDEOGRAPH-FA97
+FA98;6EDB;6EDB;6EDB;6EDB; # (滛; 滛; 滛; 滛; 滛; ) CJK COMPATIBILITY IDEOGRAPH-FA98
+FA99;6ECB;6ECB;6ECB;6ECB; # (滋; 滋; 滋; 滋; 滋; ) CJK COMPATIBILITY IDEOGRAPH-FA99
+FA9A;6F22;6F22;6F22;6F22; # (漢; 漢; 漢; 漢; 漢; ) CJK COMPATIBILITY IDEOGRAPH-FA9A
+FA9B;701E;701E;701E;701E; # (瀞; 瀞; 瀞; 瀞; 瀞; ) CJK COMPATIBILITY IDEOGRAPH-FA9B
+FA9C;716E;716E;716E;716E; # (煮; 煮; 煮; 煮; 煮; ) CJK COMPATIBILITY IDEOGRAPH-FA9C
+FA9D;77A7;77A7;77A7;77A7; # (ïª; 瞧; 瞧; 瞧; 瞧; ) CJK COMPATIBILITY IDEOGRAPH-FA9D
+FA9E;7235;7235;7235;7235; # (爵; 爵; 爵; 爵; 爵; ) CJK COMPATIBILITY IDEOGRAPH-FA9E
+FA9F;72AF;72AF;72AF;72AF; # (犯; 犯; 犯; 犯; 犯; ) CJK COMPATIBILITY IDEOGRAPH-FA9F
+FAA0;732A;732A;732A;732A; # (猪; 猪; 猪; 猪; 猪; ) CJK COMPATIBILITY IDEOGRAPH-FAA0
+FAA1;7471;7471;7471;7471; # (瑱; 瑱; 瑱; 瑱; 瑱; ) CJK COMPATIBILITY IDEOGRAPH-FAA1
+FAA2;7506;7506;7506;7506; # (甆; 甆; 甆; 甆; 甆; ) CJK COMPATIBILITY IDEOGRAPH-FAA2
+FAA3;753B;753B;753B;753B; # (画; 画; 画; 画; 画; ) CJK COMPATIBILITY IDEOGRAPH-FAA3
+FAA4;761D;761D;761D;761D; # (瘝; ç˜; ç˜; ç˜; ç˜; ) CJK COMPATIBILITY IDEOGRAPH-FAA4
+FAA5;761F;761F;761F;761F; # (瘟; 瘟; 瘟; 瘟; 瘟; ) CJK COMPATIBILITY IDEOGRAPH-FAA5
+FAA6;76CA;76CA;76CA;76CA; # (益; 益; 益; 益; 益; ) CJK COMPATIBILITY IDEOGRAPH-FAA6
+FAA7;76DB;76DB;76DB;76DB; # (盛; 盛; 盛; 盛; 盛; ) CJK COMPATIBILITY IDEOGRAPH-FAA7
+FAA8;76F4;76F4;76F4;76F4; # (直; 直; 直; 直; 直; ) CJK COMPATIBILITY IDEOGRAPH-FAA8
+FAA9;774A;774A;774A;774A; # (睊; çŠ; çŠ; çŠ; çŠ; ) CJK COMPATIBILITY IDEOGRAPH-FAA9
+FAAA;7740;7740;7740;7740; # (着; ç€; ç€; ç€; ç€; ) CJK COMPATIBILITY IDEOGRAPH-FAAA
+FAAB;78CC;78CC;78CC;78CC; # (磌; 磌; 磌; 磌; 磌; ) CJK COMPATIBILITY IDEOGRAPH-FAAB
+FAAC;7AB1;7AB1;7AB1;7AB1; # (窱; 窱; 窱; 窱; 窱; ) CJK COMPATIBILITY IDEOGRAPH-FAAC
+FAAD;7BC0;7BC0;7BC0;7BC0; # (節; 節; 節; 節; 節; ) CJK COMPATIBILITY IDEOGRAPH-FAAD
+FAAE;7C7B;7C7B;7C7B;7C7B; # (类; 类; 类; 类; 类; ) CJK COMPATIBILITY IDEOGRAPH-FAAE
+FAAF;7D5B;7D5B;7D5B;7D5B; # (絛; 絛; 絛; 絛; 絛; ) CJK COMPATIBILITY IDEOGRAPH-FAAF
+FAB0;7DF4;7DF4;7DF4;7DF4; # (練; 練; 練; 練; 練; ) CJK COMPATIBILITY IDEOGRAPH-FAB0
+FAB1;7F3E;7F3E;7F3E;7F3E; # (缾; 缾; 缾; 缾; 缾; ) CJK COMPATIBILITY IDEOGRAPH-FAB1
+FAB2;8005;8005;8005;8005; # (者; 者; 者; 者; 者; ) CJK COMPATIBILITY IDEOGRAPH-FAB2
+FAB3;8352;8352;8352;8352; # (荒; è’; è’; è’; è’; ) CJK COMPATIBILITY IDEOGRAPH-FAB3
+FAB4;83EF;83EF;83EF;83EF; # (華; è¯; è¯; è¯; è¯; ) CJK COMPATIBILITY IDEOGRAPH-FAB4
+FAB5;8779;8779;8779;8779; # (蝹; è¹; è¹; è¹; è¹; ) CJK COMPATIBILITY IDEOGRAPH-FAB5
+FAB6;8941;8941;8941;8941; # (襁; è¥; è¥; è¥; è¥; ) CJK COMPATIBILITY IDEOGRAPH-FAB6
+FAB7;8986;8986;8986;8986; # (覆; 覆; 覆; 覆; 覆; ) CJK COMPATIBILITY IDEOGRAPH-FAB7
+FAB8;8996;8996;8996;8996; # (視; 視; 視; 視; 視; ) CJK COMPATIBILITY IDEOGRAPH-FAB8
+FAB9;8ABF;8ABF;8ABF;8ABF; # (調; 調; 調; 調; 調; ) CJK COMPATIBILITY IDEOGRAPH-FAB9
+FABA;8AF8;8AF8;8AF8;8AF8; # (諸; 諸; 諸; 諸; 諸; ) CJK COMPATIBILITY IDEOGRAPH-FABA
+FABB;8ACB;8ACB;8ACB;8ACB; # (請; 請; 請; 請; 請; ) CJK COMPATIBILITY IDEOGRAPH-FABB
+FABC;8B01;8B01;8B01;8B01; # (謁; è¬; è¬; è¬; è¬; ) CJK COMPATIBILITY IDEOGRAPH-FABC
+FABD;8AFE;8AFE;8AFE;8AFE; # (諾; 諾; 諾; 諾; 諾; ) CJK COMPATIBILITY IDEOGRAPH-FABD
+FABE;8AED;8AED;8AED;8AED; # (諭; 諭; 諭; 諭; 諭; ) CJK COMPATIBILITY IDEOGRAPH-FABE
+FABF;8B39;8B39;8B39;8B39; # (謹; 謹; 謹; 謹; 謹; ) CJK COMPATIBILITY IDEOGRAPH-FABF
+FAC0;8B8A;8B8A;8B8A;8B8A; # (變; 變; 變; 變; 變; ) CJK COMPATIBILITY IDEOGRAPH-FAC0
+FAC1;8D08;8D08;8D08;8D08; # (ï«; è´ˆ; è´ˆ; è´ˆ; è´ˆ; ) CJK COMPATIBILITY IDEOGRAPH-FAC1
+FAC2;8F38;8F38;8F38;8F38; # (輸; 輸; 輸; 輸; 輸; ) CJK COMPATIBILITY IDEOGRAPH-FAC2
+FAC3;9072;9072;9072;9072; # (遲; é²; é²; é²; é²; ) CJK COMPATIBILITY IDEOGRAPH-FAC3
+FAC4;9199;9199;9199;9199; # (醙; 醙; 醙; 醙; 醙; ) CJK COMPATIBILITY IDEOGRAPH-FAC4
+FAC5;9276;9276;9276;9276; # (鉶; 鉶; 鉶; 鉶; 鉶; ) CJK COMPATIBILITY IDEOGRAPH-FAC5
+FAC6;967C;967C;967C;967C; # (陼; 陼; 陼; 陼; 陼; ) CJK COMPATIBILITY IDEOGRAPH-FAC6
+FAC7;96E3;96E3;96E3;96E3; # (難; 難; 難; 難; 難; ) CJK COMPATIBILITY IDEOGRAPH-FAC7
+FAC8;9756;9756;9756;9756; # (靖; é–; é–; é–; é–; ) CJK COMPATIBILITY IDEOGRAPH-FAC8
+FAC9;97DB;97DB;97DB;97DB; # (韛; 韛; 韛; 韛; 韛; ) CJK COMPATIBILITY IDEOGRAPH-FAC9
+FACA;97FF;97FF;97FF;97FF; # (響; 響; 響; 響; 響; ) CJK COMPATIBILITY IDEOGRAPH-FACA
+FACB;980B;980B;980B;980B; # (ï«‹; é ‹; é ‹; é ‹; é ‹; ) CJK COMPATIBILITY IDEOGRAPH-FACB
+FACC;983B;983B;983B;983B; # (頻; 頻; 頻; 頻; 頻; ) CJK COMPATIBILITY IDEOGRAPH-FACC
+FACD;9B12;9B12;9B12;9B12; # (ï«; 鬒; 鬒; 鬒; 鬒; ) CJK COMPATIBILITY IDEOGRAPH-FACD
+FACE;9F9C;9F9C;9F9C;9F9C; # (龜; 龜; 龜; 龜; 龜; ) CJK COMPATIBILITY IDEOGRAPH-FACE
+FACF;2284A;2284A;2284A;2284A; # (ï«; 𢡊; 𢡊; 𢡊; 𢡊; ) CJK COMPATIBILITY IDEOGRAPH-FACF
+FAD0;22844;22844;22844;22844; # (ï«; 𢡄; 𢡄; 𢡄; 𢡄; ) CJK COMPATIBILITY IDEOGRAPH-FAD0
+FAD1;233D5;233D5;233D5;233D5; # (ï«‘; ð£•; ð£•; ð£•; ð£•; ) CJK COMPATIBILITY IDEOGRAPH-FAD1
+FAD2;3B9D;3B9D;3B9D;3B9D; # (ï«’; ã®; ã®; ã®; ã®; ) CJK COMPATIBILITY IDEOGRAPH-FAD2
+FAD3;4018;4018;4018;4018; # (䀘; 䀘; 䀘; 䀘; 䀘; ) CJK COMPATIBILITY IDEOGRAPH-FAD3
+FAD4;4039;4039;4039;4039; # (䀹; 䀹; 䀹; 䀹; 䀹; ) CJK COMPATIBILITY IDEOGRAPH-FAD4
+FAD5;25249;25249;25249;25249; # (𥉉; 𥉉; 𥉉; 𥉉; 𥉉; ) CJK COMPATIBILITY IDEOGRAPH-FAD5
+FAD6;25CD0;25CD0;25CD0;25CD0; # (ï«–; ð¥³; ð¥³; ð¥³; ð¥³; ) CJK COMPATIBILITY IDEOGRAPH-FAD6
+FAD7;27ED3;27ED3;27ED3;27ED3; # (𧻓; 𧻓; 𧻓; 𧻓; 𧻓; ) CJK COMPATIBILITY IDEOGRAPH-FAD7
+FAD8;9F43;9F43;9F43;9F43; # (齃; 齃; 齃; 齃; 齃; ) CJK COMPATIBILITY IDEOGRAPH-FAD8
+FAD9;9F8E;9F8E;9F8E;9F8E; # (龎; 龎; 龎; 龎; 龎; ) CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB00;FB00;FB00;0066 0066;0066 0066; # (ff; ff; ff; ff; ff; ) LATIN SMALL LIGATURE FF
+FB01;FB01;FB01;0066 0069;0066 0069; # (ï¬; ï¬; ï¬; fi; fi; ) LATIN SMALL LIGATURE FI
+FB02;FB02;FB02;0066 006C;0066 006C; # (fl; fl; fl; fl; fl; ) LATIN SMALL LIGATURE FL
+FB03;FB03;FB03;0066 0066 0069;0066 0066 0069; # (ffi; ffi; ffi; ffi; ffi; ) LATIN SMALL LIGATURE FFI
+FB04;FB04;FB04;0066 0066 006C;0066 0066 006C; # (ffl; ffl; ffl; ffl; ffl; ) LATIN SMALL LIGATURE FFL
+FB05;FB05;FB05;0073 0074;0073 0074; # (ſt; ſt; ſt; st; st; ) LATIN SMALL LIGATURE LONG S T
+FB06;FB06;FB06;0073 0074;0073 0074; # (st; st; st; st; st; ) LATIN SMALL LIGATURE ST
+FB13;FB13;FB13;0574 0576;0574 0576; # (ﬓ; ﬓ; ﬓ; մն; մն; ) ARMENIAN SMALL LIGATURE MEN NOW
+FB14;FB14;FB14;0574 0565;0574 0565; # (ﬔ; ﬔ; ﬔ; մե; մե; ) ARMENIAN SMALL LIGATURE MEN ECH
+FB15;FB15;FB15;0574 056B;0574 056B; # (ﬕ; ﬕ; ﬕ; մի; մի; ) ARMENIAN SMALL LIGATURE MEN INI
+FB16;FB16;FB16;057E 0576;057E 0576; # (ﬖ; ﬖ; ﬖ; վն; վն; ) ARMENIAN SMALL LIGATURE VEW NOW
+FB17;FB17;FB17;0574 056D;0574 056D; # (ﬗ; ﬗ; ﬗ; մխ; մխ; ) ARMENIAN SMALL LIGATURE MEN XEH
+FB1D;05D9 05B4;05D9 05B4;05D9 05B4;05D9 05B4; # (ï¬; י◌ִ; י◌ִ; י◌ִ; י◌ִ; ) HEBREW LETTER YOD WITH HIRIQ
+FB1F;05F2 05B7;05F2 05B7;05F2 05B7;05F2 05B7; # (ײַ; ײ◌ַ; ײ◌ַ; ײ◌ַ; ײ◌ַ; ) HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB20;FB20;FB20;05E2;05E2; # (ﬠ; ﬠ; ﬠ; ע; ע; ) HEBREW LETTER ALTERNATIVE AYIN
+FB21;FB21;FB21;05D0;05D0; # (ﬡ; ﬡ; ﬡ; ×; ×; ) HEBREW LETTER WIDE ALEF
+FB22;FB22;FB22;05D3;05D3; # (ﬢ; ﬢ; ﬢ; ד; ד; ) HEBREW LETTER WIDE DALET
+FB23;FB23;FB23;05D4;05D4; # (ﬣ; ﬣ; ﬣ; ה; ה; ) HEBREW LETTER WIDE HE
+FB24;FB24;FB24;05DB;05DB; # (ﬤ; ﬤ; ﬤ; כ; כ; ) HEBREW LETTER WIDE KAF
+FB25;FB25;FB25;05DC;05DC; # (ﬥ; ﬥ; ﬥ; ל; ל; ) HEBREW LETTER WIDE LAMED
+FB26;FB26;FB26;05DD;05DD; # (ﬦ; ﬦ; ﬦ; ×; ×; ) HEBREW LETTER WIDE FINAL MEM
+FB27;FB27;FB27;05E8;05E8; # (ﬧ; ﬧ; ﬧ; ר; ר; ) HEBREW LETTER WIDE RESH
+FB28;FB28;FB28;05EA;05EA; # (ﬨ; ﬨ; ﬨ; ת; ת; ) HEBREW LETTER WIDE TAV
+FB29;FB29;FB29;002B;002B; # (﬩; ﬩; ﬩; +; +; ) HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A;05E9 05C1;05E9 05C1;05E9 05C1;05E9 05C1; # (שׁ; ש◌×; ש◌×; ש◌×; ש◌×; ) HEBREW LETTER SHIN WITH SHIN DOT
+FB2B;05E9 05C2;05E9 05C2;05E9 05C2;05E9 05C2; # (שׂ; ש◌ׂ; ש◌ׂ; ש◌ׂ; ש◌ׂ; ) HEBREW LETTER SHIN WITH SIN DOT
+FB2C;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1; # (שּׁ; ש◌ּ◌×; ש◌ּ◌×; ש◌ּ◌×; ש◌ּ◌×; ) HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2; # (שּׂ; ש◌ּ◌ׂ; ש◌ּ◌ׂ; ש◌ּ◌ׂ; ש◌ּ◌ׂ; ) HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E;05D0 05B7;05D0 05B7;05D0 05B7;05D0 05B7; # (אַ; ×◌ַ; ×◌ַ; ×◌ַ; ×◌ַ; ) HEBREW LETTER ALEF WITH PATAH
+FB2F;05D0 05B8;05D0 05B8;05D0 05B8;05D0 05B8; # (אָ; ×◌ָ; ×◌ָ; ×◌ָ; ×◌ָ; ) HEBREW LETTER ALEF WITH QAMATS
+FB30;05D0 05BC;05D0 05BC;05D0 05BC;05D0 05BC; # (אּ; ×◌ּ; ×◌ּ; ×◌ּ; ×◌ּ; ) HEBREW LETTER ALEF WITH MAPIQ
+FB31;05D1 05BC;05D1 05BC;05D1 05BC;05D1 05BC; # (בּ; ב◌ּ; ב◌ּ; ב◌ּ; ב◌ּ; ) HEBREW LETTER BET WITH DAGESH
+FB32;05D2 05BC;05D2 05BC;05D2 05BC;05D2 05BC; # (גּ; ג◌ּ; ג◌ּ; ג◌ּ; ג◌ּ; ) HEBREW LETTER GIMEL WITH DAGESH
+FB33;05D3 05BC;05D3 05BC;05D3 05BC;05D3 05BC; # (דּ; ד◌ּ; ד◌ּ; ד◌ּ; ד◌ּ; ) HEBREW LETTER DALET WITH DAGESH
+FB34;05D4 05BC;05D4 05BC;05D4 05BC;05D4 05BC; # (הּ; ה◌ּ; ה◌ּ; ה◌ּ; ה◌ּ; ) HEBREW LETTER HE WITH MAPIQ
+FB35;05D5 05BC;05D5 05BC;05D5 05BC;05D5 05BC; # (וּ; ו◌ּ; ו◌ּ; ו◌ּ; ו◌ּ; ) HEBREW LETTER VAV WITH DAGESH
+FB36;05D6 05BC;05D6 05BC;05D6 05BC;05D6 05BC; # (זּ; ז◌ּ; ז◌ּ; ז◌ּ; ז◌ּ; ) HEBREW LETTER ZAYIN WITH DAGESH
+FB38;05D8 05BC;05D8 05BC;05D8 05BC;05D8 05BC; # (טּ; ט◌ּ; ט◌ּ; ט◌ּ; ט◌ּ; ) HEBREW LETTER TET WITH DAGESH
+FB39;05D9 05BC;05D9 05BC;05D9 05BC;05D9 05BC; # (יּ; י◌ּ; י◌ּ; י◌ּ; י◌ּ; ) HEBREW LETTER YOD WITH DAGESH
+FB3A;05DA 05BC;05DA 05BC;05DA 05BC;05DA 05BC; # (ךּ; ך◌ּ; ך◌ּ; ך◌ּ; ך◌ּ; ) HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B;05DB 05BC;05DB 05BC;05DB 05BC;05DB 05BC; # (כּ; כ◌ּ; כ◌ּ; כ◌ּ; כ◌ּ; ) HEBREW LETTER KAF WITH DAGESH
+FB3C;05DC 05BC;05DC 05BC;05DC 05BC;05DC 05BC; # (לּ; ל◌ּ; ל◌ּ; ל◌ּ; ל◌ּ; ) HEBREW LETTER LAMED WITH DAGESH
+FB3E;05DE 05BC;05DE 05BC;05DE 05BC;05DE 05BC; # (מּ; מ◌ּ; מ◌ּ; מ◌ּ; מ◌ּ; ) HEBREW LETTER MEM WITH DAGESH
+FB40;05E0 05BC;05E0 05BC;05E0 05BC;05E0 05BC; # (נּ; נ◌ּ; נ◌ּ; נ◌ּ; נ◌ּ; ) HEBREW LETTER NUN WITH DAGESH
+FB41;05E1 05BC;05E1 05BC;05E1 05BC;05E1 05BC; # (ï­; ס◌ּ; ס◌ּ; ס◌ּ; ס◌ּ; ) HEBREW LETTER SAMEKH WITH DAGESH
+FB43;05E3 05BC;05E3 05BC;05E3 05BC;05E3 05BC; # (ףּ; ף◌ּ; ף◌ּ; ף◌ּ; ף◌ּ; ) HEBREW LETTER FINAL PE WITH DAGESH
+FB44;05E4 05BC;05E4 05BC;05E4 05BC;05E4 05BC; # (פּ; פ◌ּ; פ◌ּ; פ◌ּ; פ◌ּ; ) HEBREW LETTER PE WITH DAGESH
+FB46;05E6 05BC;05E6 05BC;05E6 05BC;05E6 05BC; # (צּ; צ◌ּ; צ◌ּ; צ◌ּ; צ◌ּ; ) HEBREW LETTER TSADI WITH DAGESH
+FB47;05E7 05BC;05E7 05BC;05E7 05BC;05E7 05BC; # (קּ; ק◌ּ; ק◌ּ; ק◌ּ; ק◌ּ; ) HEBREW LETTER QOF WITH DAGESH
+FB48;05E8 05BC;05E8 05BC;05E8 05BC;05E8 05BC; # (רּ; ר◌ּ; ר◌ּ; ר◌ּ; ר◌ּ; ) HEBREW LETTER RESH WITH DAGESH
+FB49;05E9 05BC;05E9 05BC;05E9 05BC;05E9 05BC; # (שּ; ש◌ּ; ש◌ּ; ש◌ּ; ש◌ּ; ) HEBREW LETTER SHIN WITH DAGESH
+FB4A;05EA 05BC;05EA 05BC;05EA 05BC;05EA 05BC; # (תּ; ת◌ּ; ת◌ּ; ת◌ּ; ת◌ּ; ) HEBREW LETTER TAV WITH DAGESH
+FB4B;05D5 05B9;05D5 05B9;05D5 05B9;05D5 05B9; # (וֹ; ו◌ֹ; ו◌ֹ; ו◌ֹ; ו◌ֹ; ) HEBREW LETTER VAV WITH HOLAM
+FB4C;05D1 05BF;05D1 05BF;05D1 05BF;05D1 05BF; # (בֿ; ב◌ֿ; ב◌ֿ; ב◌ֿ; ב◌ֿ; ) HEBREW LETTER BET WITH RAFE
+FB4D;05DB 05BF;05DB 05BF;05DB 05BF;05DB 05BF; # (ï­; כ◌ֿ; כ◌ֿ; כ◌ֿ; כ◌ֿ; ) HEBREW LETTER KAF WITH RAFE
+FB4E;05E4 05BF;05E4 05BF;05E4 05BF;05E4 05BF; # (פֿ; פ◌ֿ; פ◌ֿ; פ◌ֿ; פ◌ֿ; ) HEBREW LETTER PE WITH RAFE
+FB4F;FB4F;FB4F;05D0 05DC;05D0 05DC; # (ï­; ï­; ï­; ×ל; ×ל; ) HEBREW LIGATURE ALEF LAMED
+FB50;FB50;FB50;0671;0671; # (ï­; ï­; ï­; Ù±; Ù±; ) ARABIC LETTER ALEF WASLA ISOLATED FORM
+FB51;FB51;FB51;0671;0671; # (ï­‘; ï­‘; ï­‘; Ù±; Ù±; ) ARABIC LETTER ALEF WASLA FINAL FORM
+FB52;FB52;FB52;067B;067B; # (ï­’; ï­’; ï­’; Ù»; Ù»; ) ARABIC LETTER BEEH ISOLATED FORM
+FB53;FB53;FB53;067B;067B; # (ï­“; ï­“; ï­“; Ù»; Ù»; ) ARABIC LETTER BEEH FINAL FORM
+FB54;FB54;FB54;067B;067B; # (ï­”; ï­”; ï­”; Ù»; Ù»; ) ARABIC LETTER BEEH INITIAL FORM
+FB55;FB55;FB55;067B;067B; # (ï­•; ï­•; ï­•; Ù»; Ù»; ) ARABIC LETTER BEEH MEDIAL FORM
+FB56;FB56;FB56;067E;067E; # (ï­–; ï­–; ï­–; Ù¾; Ù¾; ) ARABIC LETTER PEH ISOLATED FORM
+FB57;FB57;FB57;067E;067E; # (ï­—; ï­—; ï­—; Ù¾; Ù¾; ) ARABIC LETTER PEH FINAL FORM
+FB58;FB58;FB58;067E;067E; # (ï­˜; ï­˜; ï­˜; Ù¾; Ù¾; ) ARABIC LETTER PEH INITIAL FORM
+FB59;FB59;FB59;067E;067E; # (ï­™; ï­™; ï­™; Ù¾; Ù¾; ) ARABIC LETTER PEH MEDIAL FORM
+FB5A;FB5A;FB5A;0680;0680; # (ï­š; ï­š; ï­š; Ú€; Ú€; ) ARABIC LETTER BEHEH ISOLATED FORM
+FB5B;FB5B;FB5B;0680;0680; # (ï­›; ï­›; ï­›; Ú€; Ú€; ) ARABIC LETTER BEHEH FINAL FORM
+FB5C;FB5C;FB5C;0680;0680; # (ﭜ; ﭜ; ﭜ; ڀ; ڀ; ) ARABIC LETTER BEHEH INITIAL FORM
+FB5D;FB5D;FB5D;0680;0680; # (ï­; ï­; ï­; Ú€; Ú€; ) ARABIC LETTER BEHEH MEDIAL FORM
+FB5E;FB5E;FB5E;067A;067A; # (ï­ž; ï­ž; ï­ž; Ùº; Ùº; ) ARABIC LETTER TTEHEH ISOLATED FORM
+FB5F;FB5F;FB5F;067A;067A; # (ï­Ÿ; ï­Ÿ; ï­Ÿ; Ùº; Ùº; ) ARABIC LETTER TTEHEH FINAL FORM
+FB60;FB60;FB60;067A;067A; # (ï­ ; ï­ ; ï­ ; Ùº; Ùº; ) ARABIC LETTER TTEHEH INITIAL FORM
+FB61;FB61;FB61;067A;067A; # (ï­¡; ï­¡; ï­¡; Ùº; Ùº; ) ARABIC LETTER TTEHEH MEDIAL FORM
+FB62;FB62;FB62;067F;067F; # (ï­¢; ï­¢; ï­¢; Ù¿; Ù¿; ) ARABIC LETTER TEHEH ISOLATED FORM
+FB63;FB63;FB63;067F;067F; # (ï­£; ï­£; ï­£; Ù¿; Ù¿; ) ARABIC LETTER TEHEH FINAL FORM
+FB64;FB64;FB64;067F;067F; # (ï­¤; ï­¤; ï­¤; Ù¿; Ù¿; ) ARABIC LETTER TEHEH INITIAL FORM
+FB65;FB65;FB65;067F;067F; # (ï­¥; ï­¥; ï­¥; Ù¿; Ù¿; ) ARABIC LETTER TEHEH MEDIAL FORM
+FB66;FB66;FB66;0679;0679; # (ï­¦; ï­¦; ï­¦; Ù¹; Ù¹; ) ARABIC LETTER TTEH ISOLATED FORM
+FB67;FB67;FB67;0679;0679; # (ï­§; ï­§; ï­§; Ù¹; Ù¹; ) ARABIC LETTER TTEH FINAL FORM
+FB68;FB68;FB68;0679;0679; # (ï­¨; ï­¨; ï­¨; Ù¹; Ù¹; ) ARABIC LETTER TTEH INITIAL FORM
+FB69;FB69;FB69;0679;0679; # (ï­©; ï­©; ï­©; Ù¹; Ù¹; ) ARABIC LETTER TTEH MEDIAL FORM
+FB6A;FB6A;FB6A;06A4;06A4; # (ï­ª; ï­ª; ï­ª; Ú¤; Ú¤; ) ARABIC LETTER VEH ISOLATED FORM
+FB6B;FB6B;FB6B;06A4;06A4; # (ï­«; ï­«; ï­«; Ú¤; Ú¤; ) ARABIC LETTER VEH FINAL FORM
+FB6C;FB6C;FB6C;06A4;06A4; # (ï­¬; ï­¬; ï­¬; Ú¤; Ú¤; ) ARABIC LETTER VEH INITIAL FORM
+FB6D;FB6D;FB6D;06A4;06A4; # (ï­­; ï­­; ï­­; Ú¤; Ú¤; ) ARABIC LETTER VEH MEDIAL FORM
+FB6E;FB6E;FB6E;06A6;06A6; # (ï­®; ï­®; ï­®; Ú¦; Ú¦; ) ARABIC LETTER PEHEH ISOLATED FORM
+FB6F;FB6F;FB6F;06A6;06A6; # (ï­¯; ï­¯; ï­¯; Ú¦; Ú¦; ) ARABIC LETTER PEHEH FINAL FORM
+FB70;FB70;FB70;06A6;06A6; # (ï­°; ï­°; ï­°; Ú¦; Ú¦; ) ARABIC LETTER PEHEH INITIAL FORM
+FB71;FB71;FB71;06A6;06A6; # (ï­±; ï­±; ï­±; Ú¦; Ú¦; ) ARABIC LETTER PEHEH MEDIAL FORM
+FB72;FB72;FB72;0684;0684; # (ï­²; ï­²; ï­²; Ú„; Ú„; ) ARABIC LETTER DYEH ISOLATED FORM
+FB73;FB73;FB73;0684;0684; # (ï­³; ï­³; ï­³; Ú„; Ú„; ) ARABIC LETTER DYEH FINAL FORM
+FB74;FB74;FB74;0684;0684; # (ï­´; ï­´; ï­´; Ú„; Ú„; ) ARABIC LETTER DYEH INITIAL FORM
+FB75;FB75;FB75;0684;0684; # (ï­µ; ï­µ; ï­µ; Ú„; Ú„; ) ARABIC LETTER DYEH MEDIAL FORM
+FB76;FB76;FB76;0683;0683; # (ï­¶; ï­¶; ï­¶; Úƒ; Úƒ; ) ARABIC LETTER NYEH ISOLATED FORM
+FB77;FB77;FB77;0683;0683; # (ï­·; ï­·; ï­·; Úƒ; Úƒ; ) ARABIC LETTER NYEH FINAL FORM
+FB78;FB78;FB78;0683;0683; # (ï­¸; ï­¸; ï­¸; Úƒ; Úƒ; ) ARABIC LETTER NYEH INITIAL FORM
+FB79;FB79;FB79;0683;0683; # (ï­¹; ï­¹; ï­¹; Úƒ; Úƒ; ) ARABIC LETTER NYEH MEDIAL FORM
+FB7A;FB7A;FB7A;0686;0686; # (ï­º; ï­º; ï­º; Ú†; Ú†; ) ARABIC LETTER TCHEH ISOLATED FORM
+FB7B;FB7B;FB7B;0686;0686; # (ï­»; ï­»; ï­»; Ú†; Ú†; ) ARABIC LETTER TCHEH FINAL FORM
+FB7C;FB7C;FB7C;0686;0686; # (ï­¼; ï­¼; ï­¼; Ú†; Ú†; ) ARABIC LETTER TCHEH INITIAL FORM
+FB7D;FB7D;FB7D;0686;0686; # (ï­½; ï­½; ï­½; Ú†; Ú†; ) ARABIC LETTER TCHEH MEDIAL FORM
+FB7E;FB7E;FB7E;0687;0687; # (ï­¾; ï­¾; ï­¾; Ú‡; Ú‡; ) ARABIC LETTER TCHEHEH ISOLATED FORM
+FB7F;FB7F;FB7F;0687;0687; # (ï­¿; ï­¿; ï­¿; Ú‡; Ú‡; ) ARABIC LETTER TCHEHEH FINAL FORM
+FB80;FB80;FB80;0687;0687; # (ﮀ; ﮀ; ﮀ; ڇ; ڇ; ) ARABIC LETTER TCHEHEH INITIAL FORM
+FB81;FB81;FB81;0687;0687; # (ï®; ï®; ï®; Ú‡; Ú‡; ) ARABIC LETTER TCHEHEH MEDIAL FORM
+FB82;FB82;FB82;068D;068D; # (ﮂ; ﮂ; ﮂ; Ú; Ú; ) ARABIC LETTER DDAHAL ISOLATED FORM
+FB83;FB83;FB83;068D;068D; # (ﮃ; ﮃ; ﮃ; Ú; Ú; ) ARABIC LETTER DDAHAL FINAL FORM
+FB84;FB84;FB84;068C;068C; # (ﮄ; ﮄ; ﮄ; ڌ; ڌ; ) ARABIC LETTER DAHAL ISOLATED FORM
+FB85;FB85;FB85;068C;068C; # (ﮅ; ﮅ; ﮅ; ڌ; ڌ; ) ARABIC LETTER DAHAL FINAL FORM
+FB86;FB86;FB86;068E;068E; # (ﮆ; ﮆ; ﮆ; ڎ; ڎ; ) ARABIC LETTER DUL ISOLATED FORM
+FB87;FB87;FB87;068E;068E; # (ﮇ; ﮇ; ﮇ; ڎ; ڎ; ) ARABIC LETTER DUL FINAL FORM
+FB88;FB88;FB88;0688;0688; # (ﮈ; ﮈ; ﮈ; ڈ; ڈ; ) ARABIC LETTER DDAL ISOLATED FORM
+FB89;FB89;FB89;0688;0688; # (ﮉ; ﮉ; ﮉ; ڈ; ڈ; ) ARABIC LETTER DDAL FINAL FORM
+FB8A;FB8A;FB8A;0698;0698; # (ﮊ; ﮊ; ﮊ; ژ; ژ; ) ARABIC LETTER JEH ISOLATED FORM
+FB8B;FB8B;FB8B;0698;0698; # (ﮋ; ﮋ; ﮋ; ژ; ژ; ) ARABIC LETTER JEH FINAL FORM
+FB8C;FB8C;FB8C;0691;0691; # (ﮌ; ﮌ; ﮌ; ڑ; ڑ; ) ARABIC LETTER RREH ISOLATED FORM
+FB8D;FB8D;FB8D;0691;0691; # (ï®; ï®; ï®; Ú‘; Ú‘; ) ARABIC LETTER RREH FINAL FORM
+FB8E;FB8E;FB8E;06A9;06A9; # (ﮎ; ﮎ; ﮎ; ک; ک; ) ARABIC LETTER KEHEH ISOLATED FORM
+FB8F;FB8F;FB8F;06A9;06A9; # (ï®; ï®; ï®; Ú©; Ú©; ) ARABIC LETTER KEHEH FINAL FORM
+FB90;FB90;FB90;06A9;06A9; # (ï®; ï®; ï®; Ú©; Ú©; ) ARABIC LETTER KEHEH INITIAL FORM
+FB91;FB91;FB91;06A9;06A9; # (ﮑ; ﮑ; ﮑ; ک; ک; ) ARABIC LETTER KEHEH MEDIAL FORM
+FB92;FB92;FB92;06AF;06AF; # (ï®’; ï®’; ï®’; Ú¯; Ú¯; ) ARABIC LETTER GAF ISOLATED FORM
+FB93;FB93;FB93;06AF;06AF; # (ﮓ; ﮓ; ﮓ; گ; گ; ) ARABIC LETTER GAF FINAL FORM
+FB94;FB94;FB94;06AF;06AF; # (ï®”; ï®”; ï®”; Ú¯; Ú¯; ) ARABIC LETTER GAF INITIAL FORM
+FB95;FB95;FB95;06AF;06AF; # (ﮕ; ﮕ; ﮕ; گ; گ; ) ARABIC LETTER GAF MEDIAL FORM
+FB96;FB96;FB96;06B3;06B3; # (ï®–; ï®–; ï®–; Ú³; Ú³; ) ARABIC LETTER GUEH ISOLATED FORM
+FB97;FB97;FB97;06B3;06B3; # (ï®—; ï®—; ï®—; Ú³; Ú³; ) ARABIC LETTER GUEH FINAL FORM
+FB98;FB98;FB98;06B3;06B3; # (ﮘ; ﮘ; ﮘ; ڳ; ڳ; ) ARABIC LETTER GUEH INITIAL FORM
+FB99;FB99;FB99;06B3;06B3; # (ï®™; ï®™; ï®™; Ú³; Ú³; ) ARABIC LETTER GUEH MEDIAL FORM
+FB9A;FB9A;FB9A;06B1;06B1; # (ﮚ; ﮚ; ﮚ; ڱ; ڱ; ) ARABIC LETTER NGOEH ISOLATED FORM
+FB9B;FB9B;FB9B;06B1;06B1; # (ï®›; ï®›; ï®›; Ú±; Ú±; ) ARABIC LETTER NGOEH FINAL FORM
+FB9C;FB9C;FB9C;06B1;06B1; # (ﮜ; ﮜ; ﮜ; ڱ; ڱ; ) ARABIC LETTER NGOEH INITIAL FORM
+FB9D;FB9D;FB9D;06B1;06B1; # (ï®; ï®; ï®; Ú±; Ú±; ) ARABIC LETTER NGOEH MEDIAL FORM
+FB9E;FB9E;FB9E;06BA;06BA; # (ﮞ; ﮞ; ﮞ; ں; ں; ) ARABIC LETTER NOON GHUNNA ISOLATED FORM
+FB9F;FB9F;FB9F;06BA;06BA; # (ﮟ; ﮟ; ﮟ; ں; ں; ) ARABIC LETTER NOON GHUNNA FINAL FORM
+FBA0;FBA0;FBA0;06BB;06BB; # (ï® ; ï® ; ï® ; Ú»; Ú»; ) ARABIC LETTER RNOON ISOLATED FORM
+FBA1;FBA1;FBA1;06BB;06BB; # (ﮡ; ﮡ; ﮡ; ڻ; ڻ; ) ARABIC LETTER RNOON FINAL FORM
+FBA2;FBA2;FBA2;06BB;06BB; # (ﮢ; ﮢ; ﮢ; ڻ; ڻ; ) ARABIC LETTER RNOON INITIAL FORM
+FBA3;FBA3;FBA3;06BB;06BB; # (ﮣ; ﮣ; ﮣ; ڻ; ڻ; ) ARABIC LETTER RNOON MEDIAL FORM
+FBA4;FBA4;FBA4;06C0;06D5 0654; # (ﮤ; ﮤ; ﮤ; ۀ; ە◌ٔ; ) ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
+FBA5;FBA5;FBA5;06C0;06D5 0654; # (ﮥ; ﮥ; ﮥ; ۀ; ە◌ٔ; ) ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+FBA6;FBA6;FBA6;06C1;06C1; # (ﮦ; ﮦ; ﮦ; Û; Û; ) ARABIC LETTER HEH GOAL ISOLATED FORM
+FBA7;FBA7;FBA7;06C1;06C1; # (ﮧ; ﮧ; ﮧ; Û; Û; ) ARABIC LETTER HEH GOAL FINAL FORM
+FBA8;FBA8;FBA8;06C1;06C1; # (ﮨ; ﮨ; ﮨ; Û; Û; ) ARABIC LETTER HEH GOAL INITIAL FORM
+FBA9;FBA9;FBA9;06C1;06C1; # (ﮩ; ﮩ; ﮩ; Û; Û; ) ARABIC LETTER HEH GOAL MEDIAL FORM
+FBAA;FBAA;FBAA;06BE;06BE; # (ﮪ; ﮪ; ﮪ; ھ; ھ; ) ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+FBAB;FBAB;FBAB;06BE;06BE; # (ﮫ; ﮫ; ﮫ; ھ; ھ; ) ARABIC LETTER HEH DOACHASHMEE FINAL FORM
+FBAC;FBAC;FBAC;06BE;06BE; # (ﮬ; ﮬ; ﮬ; ھ; ھ; ) ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
+FBAD;FBAD;FBAD;06BE;06BE; # (ï®­; ï®­; ï®­; Ú¾; Ú¾; ) ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
+FBAE;FBAE;FBAE;06D2;06D2; # (ï®®; ï®®; ï®®; Û’; Û’; ) ARABIC LETTER YEH BARREE ISOLATED FORM
+FBAF;FBAF;FBAF;06D2;06D2; # (ﮯ; ﮯ; ﮯ; ے; ے; ) ARABIC LETTER YEH BARREE FINAL FORM
+FBB0;FBB0;FBB0;06D3;06D2 0654; # (ﮰ; ﮰ; ﮰ; ۓ; ے◌ٔ; ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+FBB1;FBB1;FBB1;06D3;06D2 0654; # (ﮱ; ﮱ; ﮱ; ۓ; ے◌ٔ; ) ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3;FBD3;FBD3;06AD;06AD; # (ﯓ; ﯓ; ﯓ; ڭ; ڭ; ) ARABIC LETTER NG ISOLATED FORM
+FBD4;FBD4;FBD4;06AD;06AD; # (ﯔ; ﯔ; ﯔ; ڭ; ڭ; ) ARABIC LETTER NG FINAL FORM
+FBD5;FBD5;FBD5;06AD;06AD; # (ﯕ; ﯕ; ﯕ; ڭ; ڭ; ) ARABIC LETTER NG INITIAL FORM
+FBD6;FBD6;FBD6;06AD;06AD; # (ﯖ; ﯖ; ﯖ; ڭ; ڭ; ) ARABIC LETTER NG MEDIAL FORM
+FBD7;FBD7;FBD7;06C7;06C7; # (ﯗ; ﯗ; ﯗ; ۇ; ۇ; ) ARABIC LETTER U ISOLATED FORM
+FBD8;FBD8;FBD8;06C7;06C7; # (ﯘ; ﯘ; ﯘ; ۇ; ۇ; ) ARABIC LETTER U FINAL FORM
+FBD9;FBD9;FBD9;06C6;06C6; # (ﯙ; ﯙ; ﯙ; ۆ; ۆ; ) ARABIC LETTER OE ISOLATED FORM
+FBDA;FBDA;FBDA;06C6;06C6; # (ﯚ; ﯚ; ﯚ; ۆ; ۆ; ) ARABIC LETTER OE FINAL FORM
+FBDB;FBDB;FBDB;06C8;06C8; # (ﯛ; ﯛ; ﯛ; ۈ; ۈ; ) ARABIC LETTER YU ISOLATED FORM
+FBDC;FBDC;FBDC;06C8;06C8; # (ﯜ; ﯜ; ﯜ; ۈ; ۈ; ) ARABIC LETTER YU FINAL FORM
+FBDD;FBDD;FBDD;06C7 0674;06C7 0674; # (ï¯; ï¯; ï¯; Û‡Ù´; Û‡Ù´; ) ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+FBDE;FBDE;FBDE;06CB;06CB; # (ﯞ; ﯞ; ﯞ; ۋ; ۋ; ) ARABIC LETTER VE ISOLATED FORM
+FBDF;FBDF;FBDF;06CB;06CB; # (ﯟ; ﯟ; ﯟ; ۋ; ۋ; ) ARABIC LETTER VE FINAL FORM
+FBE0;FBE0;FBE0;06C5;06C5; # (ﯠ; ﯠ; ﯠ; ۅ; ۅ; ) ARABIC LETTER KIRGHIZ OE ISOLATED FORM
+FBE1;FBE1;FBE1;06C5;06C5; # (ﯡ; ﯡ; ﯡ; ۅ; ۅ; ) ARABIC LETTER KIRGHIZ OE FINAL FORM
+FBE2;FBE2;FBE2;06C9;06C9; # (ﯢ; ﯢ; ﯢ; ۉ; ۉ; ) ARABIC LETTER KIRGHIZ YU ISOLATED FORM
+FBE3;FBE3;FBE3;06C9;06C9; # (ﯣ; ﯣ; ﯣ; ۉ; ۉ; ) ARABIC LETTER KIRGHIZ YU FINAL FORM
+FBE4;FBE4;FBE4;06D0;06D0; # (ﯤ; ﯤ; ﯤ; Û; Û; ) ARABIC LETTER E ISOLATED FORM
+FBE5;FBE5;FBE5;06D0;06D0; # (ﯥ; ﯥ; ﯥ; Û; Û; ) ARABIC LETTER E FINAL FORM
+FBE6;FBE6;FBE6;06D0;06D0; # (ﯦ; ﯦ; ﯦ; Û; Û; ) ARABIC LETTER E INITIAL FORM
+FBE7;FBE7;FBE7;06D0;06D0; # (ﯧ; ﯧ; ﯧ; Û; Û; ) ARABIC LETTER E MEDIAL FORM
+FBE8;FBE8;FBE8;0649;0649; # (ﯨ; ﯨ; ﯨ; ى; ى; ) ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+FBE9;FBE9;FBE9;0649;0649; # (ﯩ; ﯩ; ﯩ; ى; ى; ) ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
+FBEA;FBEA;FBEA;0626 0627;064A 0654 0627; # (ﯪ; ﯪ; ﯪ; ئا; ي◌ٔا; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
+FBEB;FBEB;FBEB;0626 0627;064A 0654 0627; # (ﯫ; ﯫ; ﯫ; ئا; ي◌ٔا; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
+FBEC;FBEC;FBEC;0626 06D5;064A 0654 06D5; # (ﯬ; ﯬ; ﯬ; ئە; ي◌ٔە; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
+FBED;FBED;FBED;0626 06D5;064A 0654 06D5; # (ﯭ; ﯭ; ﯭ; ئە; ي◌ٔە; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
+FBEE;FBEE;FBEE;0626 0648;064A 0654 0648; # (ﯮ; ﯮ; ﯮ; ئو; ي◌ٔو; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
+FBEF;FBEF;FBEF;0626 0648;064A 0654 0648; # (ﯯ; ﯯ; ﯯ; ئو; ي◌ٔو; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
+FBF0;FBF0;FBF0;0626 06C7;064A 0654 06C7; # (ﯰ; ﯰ; ﯰ; ئۇ; ي◌ٔۇ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
+FBF1;FBF1;FBF1;0626 06C7;064A 0654 06C7; # (ﯱ; ﯱ; ﯱ; ئۇ; ي◌ٔۇ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
+FBF2;FBF2;FBF2;0626 06C6;064A 0654 06C6; # (ﯲ; ﯲ; ﯲ; ئۆ; ي◌ٔۆ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
+FBF3;FBF3;FBF3;0626 06C6;064A 0654 06C6; # (ﯳ; ﯳ; ﯳ; ئۆ; ي◌ٔۆ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
+FBF4;FBF4;FBF4;0626 06C8;064A 0654 06C8; # (ﯴ; ﯴ; ﯴ; ئۈ; ي◌ٔۈ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
+FBF5;FBF5;FBF5;0626 06C8;064A 0654 06C8; # (ﯵ; ﯵ; ﯵ; ئۈ; ي◌ٔۈ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
+FBF6;FBF6;FBF6;0626 06D0;064A 0654 06D0; # (ﯶ; ﯶ; ﯶ; ئÛ; ي◌ٔÛ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
+FBF7;FBF7;FBF7;0626 06D0;064A 0654 06D0; # (ﯷ; ﯷ; ﯷ; ئÛ; ي◌ٔÛ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
+FBF8;FBF8;FBF8;0626 06D0;064A 0654 06D0; # (ﯸ; ﯸ; ﯸ; ئÛ; ي◌ٔÛ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
+FBF9;FBF9;FBF9;0626 0649;064A 0654 0649; # (ﯹ; ﯹ; ﯹ; ئى; ي◌ٔى; ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FBFA;FBFA;FBFA;0626 0649;064A 0654 0649; # (ﯺ; ﯺ; ﯺ; ئى; ي◌ٔى; ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FBFB;FBFB;FBFB;0626 0649;064A 0654 0649; # (ﯻ; ﯻ; ﯻ; ئى; ي◌ٔى; ) ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FBFC;FBFC;FBFC;06CC;06CC; # (ﯼ; ﯼ; ﯼ; ی; ی; ) ARABIC LETTER FARSI YEH ISOLATED FORM
+FBFD;FBFD;FBFD;06CC;06CC; # (ﯽ; ﯽ; ﯽ; ی; ی; ) ARABIC LETTER FARSI YEH FINAL FORM
+FBFE;FBFE;FBFE;06CC;06CC; # (ﯾ; ﯾ; ﯾ; ی; ی; ) ARABIC LETTER FARSI YEH INITIAL FORM
+FBFF;FBFF;FBFF;06CC;06CC; # (ﯿ; ﯿ; ﯿ; ی; ی; ) ARABIC LETTER FARSI YEH MEDIAL FORM
+FC00;FC00;FC00;0626 062C;064A 0654 062C; # (ﰀ; ﰀ; ﰀ; ئج; ي◌ٔج; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
+FC01;FC01;FC01;0626 062D;064A 0654 062D; # (ï°; ï°; ï°; ئح; ي◌ٔح; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
+FC02;FC02;FC02;0626 0645;064A 0654 0645; # (ﰂ; ﰂ; ﰂ; ئم; ي◌ٔم; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
+FC03;FC03;FC03;0626 0649;064A 0654 0649; # (ﰃ; ﰃ; ﰃ; ئى; ي◌ٔى; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FC04;FC04;FC04;0626 064A;064A 0654 064A; # (ﰄ; ﰄ; ﰄ; ئي; ي◌ٔي; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
+FC05;FC05;FC05;0628 062C;0628 062C; # (ﰅ; ﰅ; ﰅ; بج; بج; ) ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
+FC06;FC06;FC06;0628 062D;0628 062D; # (ﰆ; ﰆ; ﰆ; بح; بح; ) ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
+FC07;FC07;FC07;0628 062E;0628 062E; # (ﰇ; ﰇ; ﰇ; بخ; بخ; ) ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
+FC08;FC08;FC08;0628 0645;0628 0645; # (ﰈ; ﰈ; ﰈ; بم; بم; ) ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
+FC09;FC09;FC09;0628 0649;0628 0649; # (ﰉ; ﰉ; ﰉ; بى; بى; ) ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
+FC0A;FC0A;FC0A;0628 064A;0628 064A; # (ﰊ; ﰊ; ﰊ; بي; بي; ) ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
+FC0B;FC0B;FC0B;062A 062C;062A 062C; # (ﰋ; ﰋ; ﰋ; تج; تج; ) ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
+FC0C;FC0C;FC0C;062A 062D;062A 062D; # (ﰌ; ﰌ; ﰌ; تح; تح; ) ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
+FC0D;FC0D;FC0D;062A 062E;062A 062E; # (ï°; ï°; ï°; تخ; تخ; ) ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
+FC0E;FC0E;FC0E;062A 0645;062A 0645; # (ﰎ; ﰎ; ﰎ; تم; تم; ) ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
+FC0F;FC0F;FC0F;062A 0649;062A 0649; # (ï°; ï°; ï°; تى; تى; ) ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
+FC10;FC10;FC10;062A 064A;062A 064A; # (ï°; ï°; ï°; تي; تي; ) ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
+FC11;FC11;FC11;062B 062C;062B 062C; # (ﰑ; ﰑ; ﰑ; ثج; ثج; ) ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
+FC12;FC12;FC12;062B 0645;062B 0645; # (ﰒ; ﰒ; ﰒ; ثم; ثم; ) ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
+FC13;FC13;FC13;062B 0649;062B 0649; # (ﰓ; ﰓ; ﰓ; ثى; ثى; ) ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
+FC14;FC14;FC14;062B 064A;062B 064A; # (ﰔ; ﰔ; ﰔ; ثي; ثي; ) ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
+FC15;FC15;FC15;062C 062D;062C 062D; # (ﰕ; ﰕ; ﰕ; جح; جح; ) ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
+FC16;FC16;FC16;062C 0645;062C 0645; # (ﰖ; ﰖ; ﰖ; جم; جم; ) ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
+FC17;FC17;FC17;062D 062C;062D 062C; # (ﰗ; ﰗ; ﰗ; حج; حج; ) ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
+FC18;FC18;FC18;062D 0645;062D 0645; # (ﰘ; ﰘ; ﰘ; حم; حم; ) ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
+FC19;FC19;FC19;062E 062C;062E 062C; # (ﰙ; ﰙ; ﰙ; خج; خج; ) ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
+FC1A;FC1A;FC1A;062E 062D;062E 062D; # (ﰚ; ﰚ; ﰚ; خح; خح; ) ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
+FC1B;FC1B;FC1B;062E 0645;062E 0645; # (ﰛ; ﰛ; ﰛ; خم; خم; ) ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
+FC1C;FC1C;FC1C;0633 062C;0633 062C; # (ﰜ; ﰜ; ﰜ; سج; سج; ) ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
+FC1D;FC1D;FC1D;0633 062D;0633 062D; # (ï°; ï°; ï°; سح; سح; ) ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
+FC1E;FC1E;FC1E;0633 062E;0633 062E; # (ﰞ; ﰞ; ﰞ; سخ; سخ; ) ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
+FC1F;FC1F;FC1F;0633 0645;0633 0645; # (ﰟ; ﰟ; ﰟ; سم; سم; ) ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
+FC20;FC20;FC20;0635 062D;0635 062D; # (ﰠ; ﰠ; ﰠ; صح; صح; ) ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
+FC21;FC21;FC21;0635 0645;0635 0645; # (ﰡ; ﰡ; ﰡ; صم; صم; ) ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
+FC22;FC22;FC22;0636 062C;0636 062C; # (ﰢ; ﰢ; ﰢ; ضج; ضج; ) ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
+FC23;FC23;FC23;0636 062D;0636 062D; # (ﰣ; ﰣ; ﰣ; ضح; ضح; ) ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
+FC24;FC24;FC24;0636 062E;0636 062E; # (ﰤ; ﰤ; ﰤ; ضخ; ضخ; ) ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
+FC25;FC25;FC25;0636 0645;0636 0645; # (ﰥ; ﰥ; ﰥ; ضم; ضم; ) ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
+FC26;FC26;FC26;0637 062D;0637 062D; # (ﰦ; ﰦ; ﰦ; طح; طح; ) ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
+FC27;FC27;FC27;0637 0645;0637 0645; # (ﰧ; ﰧ; ﰧ; طم; طم; ) ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
+FC28;FC28;FC28;0638 0645;0638 0645; # (ﰨ; ﰨ; ﰨ; ظم; ظم; ) ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
+FC29;FC29;FC29;0639 062C;0639 062C; # (ﰩ; ﰩ; ﰩ; عج; عج; ) ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
+FC2A;FC2A;FC2A;0639 0645;0639 0645; # (ﰪ; ﰪ; ﰪ; عم; عم; ) ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
+FC2B;FC2B;FC2B;063A 062C;063A 062C; # (ﰫ; ﰫ; ﰫ; غج; غج; ) ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
+FC2C;FC2C;FC2C;063A 0645;063A 0645; # (ﰬ; ﰬ; ﰬ; غم; غم; ) ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
+FC2D;FC2D;FC2D;0641 062C;0641 062C; # (ï°­; ï°­; ï°­; Ùج; Ùج; ) ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
+FC2E;FC2E;FC2E;0641 062D;0641 062D; # (ï°®; ï°®; ï°®; ÙØ­; ÙØ­; ) ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
+FC2F;FC2F;FC2F;0641 062E;0641 062E; # (ï°¯; ï°¯; ï°¯; ÙØ®; ÙØ®; ) ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
+FC30;FC30;FC30;0641 0645;0641 0645; # (ï°°; ï°°; ï°°; ÙÙ…; ÙÙ…; ) ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
+FC31;FC31;FC31;0641 0649;0641 0649; # (ï°±; ï°±; ï°±; ÙÙ‰; ÙÙ‰; ) ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
+FC32;FC32;FC32;0641 064A;0641 064A; # (ï°²; ï°²; ï°²; ÙÙŠ; ÙÙŠ; ) ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
+FC33;FC33;FC33;0642 062D;0642 062D; # (ﰳ; ﰳ; ﰳ; قح; قح; ) ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
+FC34;FC34;FC34;0642 0645;0642 0645; # (ﰴ; ﰴ; ﰴ; قم; قم; ) ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
+FC35;FC35;FC35;0642 0649;0642 0649; # (ﰵ; ﰵ; ﰵ; قى; قى; ) ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
+FC36;FC36;FC36;0642 064A;0642 064A; # (ﰶ; ﰶ; ﰶ; قي; قي; ) ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
+FC37;FC37;FC37;0643 0627;0643 0627; # (ﰷ; ﰷ; ﰷ; كا; كا; ) ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
+FC38;FC38;FC38;0643 062C;0643 062C; # (ﰸ; ﰸ; ﰸ; كج; كج; ) ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
+FC39;FC39;FC39;0643 062D;0643 062D; # (ﰹ; ﰹ; ﰹ; كح; كح; ) ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
+FC3A;FC3A;FC3A;0643 062E;0643 062E; # (ﰺ; ﰺ; ﰺ; كخ; كخ; ) ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
+FC3B;FC3B;FC3B;0643 0644;0643 0644; # (ﰻ; ﰻ; ﰻ; كل; كل; ) ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
+FC3C;FC3C;FC3C;0643 0645;0643 0645; # (ﰼ; ﰼ; ﰼ; كم; كم; ) ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
+FC3D;FC3D;FC3D;0643 0649;0643 0649; # (ﰽ; ﰽ; ﰽ; كى; كى; ) ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
+FC3E;FC3E;FC3E;0643 064A;0643 064A; # (ﰾ; ﰾ; ﰾ; كي; كي; ) ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
+FC3F;FC3F;FC3F;0644 062C;0644 062C; # (ﰿ; ﰿ; ﰿ; لج; لج; ) ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
+FC40;FC40;FC40;0644 062D;0644 062D; # (ﱀ; ﱀ; ﱀ; لح; لح; ) ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
+FC41;FC41;FC41;0644 062E;0644 062E; # (ï±; ï±; ï±; لخ; لخ; ) ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
+FC42;FC42;FC42;0644 0645;0644 0645; # (ﱂ; ﱂ; ﱂ; لم; لم; ) ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
+FC43;FC43;FC43;0644 0649;0644 0649; # (ﱃ; ﱃ; ﱃ; لى; لى; ) ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
+FC44;FC44;FC44;0644 064A;0644 064A; # (ﱄ; ﱄ; ﱄ; لي; لي; ) ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
+FC45;FC45;FC45;0645 062C;0645 062C; # (ﱅ; ﱅ; ﱅ; مج; مج; ) ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
+FC46;FC46;FC46;0645 062D;0645 062D; # (ﱆ; ﱆ; ﱆ; مح; مح; ) ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
+FC47;FC47;FC47;0645 062E;0645 062E; # (ﱇ; ﱇ; ﱇ; مخ; مخ; ) ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
+FC48;FC48;FC48;0645 0645;0645 0645; # (ﱈ; ﱈ; ﱈ; مم; مم; ) ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
+FC49;FC49;FC49;0645 0649;0645 0649; # (ﱉ; ﱉ; ﱉ; مى; مى; ) ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
+FC4A;FC4A;FC4A;0645 064A;0645 064A; # (ﱊ; ﱊ; ﱊ; مي; مي; ) ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
+FC4B;FC4B;FC4B;0646 062C;0646 062C; # (ﱋ; ﱋ; ﱋ; نج; نج; ) ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
+FC4C;FC4C;FC4C;0646 062D;0646 062D; # (ﱌ; ﱌ; ﱌ; نح; نح; ) ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
+FC4D;FC4D;FC4D;0646 062E;0646 062E; # (ï±; ï±; ï±; نخ; نخ; ) ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
+FC4E;FC4E;FC4E;0646 0645;0646 0645; # (ﱎ; ﱎ; ﱎ; نم; نم; ) ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
+FC4F;FC4F;FC4F;0646 0649;0646 0649; # (ï±; ï±; ï±; نى; نى; ) ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
+FC50;FC50;FC50;0646 064A;0646 064A; # (ï±; ï±; ï±; ني; ني; ) ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
+FC51;FC51;FC51;0647 062C;0647 062C; # (ﱑ; ﱑ; ﱑ; هج; هج; ) ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
+FC52;FC52;FC52;0647 0645;0647 0645; # (ﱒ; ﱒ; ﱒ; هم; هم; ) ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
+FC53;FC53;FC53;0647 0649;0647 0649; # (ﱓ; ﱓ; ﱓ; هى; هى; ) ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
+FC54;FC54;FC54;0647 064A;0647 064A; # (ﱔ; ﱔ; ﱔ; هي; هي; ) ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
+FC55;FC55;FC55;064A 062C;064A 062C; # (ﱕ; ﱕ; ﱕ; يج; يج; ) ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
+FC56;FC56;FC56;064A 062D;064A 062D; # (ﱖ; ﱖ; ﱖ; يح; يح; ) ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
+FC57;FC57;FC57;064A 062E;064A 062E; # (ﱗ; ﱗ; ﱗ; يخ; يخ; ) ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
+FC58;FC58;FC58;064A 0645;064A 0645; # (ﱘ; ﱘ; ﱘ; يم; يم; ) ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
+FC59;FC59;FC59;064A 0649;064A 0649; # (ﱙ; ﱙ; ﱙ; يى; يى; ) ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
+FC5A;FC5A;FC5A;064A 064A;064A 064A; # (ﱚ; ﱚ; ﱚ; يي; يي; ) ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
+FC5B;FC5B;FC5B;0630 0670;0630 0670; # (ﱛ; ﱛ; ﱛ; ذ◌ٰ; ذ◌ٰ; ) ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5C;FC5C;FC5C;0631 0670;0631 0670; # (ﱜ; ﱜ; ﱜ; ر◌ٰ; ر◌ٰ; ) ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5D;FC5D;FC5D;0649 0670;0649 0670; # (ï±; ï±; ï±; ى◌ٰ; ى◌ٰ; ) ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5E;FC5E;FC5E;0020 064C 0651;0020 064C 0651; # (ﱞ; ﱞ; ﱞ; ◌ٌ◌ّ; ◌ٌ◌ّ; ) ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+FC5F;FC5F;FC5F;0020 064D 0651;0020 064D 0651; # (ﱟ; ﱟ; ﱟ; â—ŒÙ◌ّ; â—ŒÙ◌ّ; ) ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
+FC60;FC60;FC60;0020 064E 0651;0020 064E 0651; # (ﱠ; ﱠ; ﱠ; ◌َ◌ّ; ◌َ◌ّ; ) ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
+FC61;FC61;FC61;0020 064F 0651;0020 064F 0651; # (ﱡ; ﱡ; ﱡ; â—ŒÙ◌ّ; â—ŒÙ◌ّ; ) ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
+FC62;FC62;FC62;0020 0650 0651;0020 0650 0651; # (ï±¢; ï±¢; ï±¢; â—ŒÙ◌ّ; â—ŒÙ◌ّ; ) ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
+FC63;FC63;FC63;0020 0651 0670;0020 0651 0670; # (ﱣ; ﱣ; ﱣ; ◌ّ◌ٰ; ◌ّ◌ٰ; ) ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC64;FC64;FC64;0626 0631;064A 0654 0631; # (ﱤ; ﱤ; ﱤ; ئر; ي◌ٔر; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
+FC65;FC65;FC65;0626 0632;064A 0654 0632; # (ﱥ; ﱥ; ﱥ; ئز; ي◌ٔز; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
+FC66;FC66;FC66;0626 0645;064A 0654 0645; # (ﱦ; ﱦ; ﱦ; ئم; ي◌ٔم; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
+FC67;FC67;FC67;0626 0646;064A 0654 0646; # (ﱧ; ﱧ; ﱧ; ئن; ي◌ٔن; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
+FC68;FC68;FC68;0626 0649;064A 0654 0649; # (ﱨ; ﱨ; ﱨ; ئى; ي◌ٔى; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FC69;FC69;FC69;0626 064A;064A 0654 064A; # (ﱩ; ﱩ; ﱩ; ئي; ي◌ٔي; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
+FC6A;FC6A;FC6A;0628 0631;0628 0631; # (ﱪ; ﱪ; ﱪ; بر; بر; ) ARABIC LIGATURE BEH WITH REH FINAL FORM
+FC6B;FC6B;FC6B;0628 0632;0628 0632; # (ﱫ; ﱫ; ﱫ; بز; بز; ) ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
+FC6C;FC6C;FC6C;0628 0645;0628 0645; # (ﱬ; ﱬ; ﱬ; بم; بم; ) ARABIC LIGATURE BEH WITH MEEM FINAL FORM
+FC6D;FC6D;FC6D;0628 0646;0628 0646; # (ﱭ; ﱭ; ﱭ; بن; بن; ) ARABIC LIGATURE BEH WITH NOON FINAL FORM
+FC6E;FC6E;FC6E;0628 0649;0628 0649; # (ﱮ; ﱮ; ﱮ; بى; بى; ) ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
+FC6F;FC6F;FC6F;0628 064A;0628 064A; # (ﱯ; ﱯ; ﱯ; بي; بي; ) ARABIC LIGATURE BEH WITH YEH FINAL FORM
+FC70;FC70;FC70;062A 0631;062A 0631; # (ﱰ; ﱰ; ﱰ; تر; تر; ) ARABIC LIGATURE TEH WITH REH FINAL FORM
+FC71;FC71;FC71;062A 0632;062A 0632; # (ﱱ; ﱱ; ﱱ; تز; تز; ) ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
+FC72;FC72;FC72;062A 0645;062A 0645; # (ﱲ; ﱲ; ﱲ; تم; تم; ) ARABIC LIGATURE TEH WITH MEEM FINAL FORM
+FC73;FC73;FC73;062A 0646;062A 0646; # (ﱳ; ﱳ; ﱳ; تن; تن; ) ARABIC LIGATURE TEH WITH NOON FINAL FORM
+FC74;FC74;FC74;062A 0649;062A 0649; # (ﱴ; ﱴ; ﱴ; تى; تى; ) ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
+FC75;FC75;FC75;062A 064A;062A 064A; # (ﱵ; ﱵ; ﱵ; تي; تي; ) ARABIC LIGATURE TEH WITH YEH FINAL FORM
+FC76;FC76;FC76;062B 0631;062B 0631; # (ﱶ; ﱶ; ﱶ; ثر; ثر; ) ARABIC LIGATURE THEH WITH REH FINAL FORM
+FC77;FC77;FC77;062B 0632;062B 0632; # (ﱷ; ﱷ; ﱷ; ثز; ثز; ) ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
+FC78;FC78;FC78;062B 0645;062B 0645; # (ﱸ; ﱸ; ﱸ; ثم; ثم; ) ARABIC LIGATURE THEH WITH MEEM FINAL FORM
+FC79;FC79;FC79;062B 0646;062B 0646; # (ﱹ; ﱹ; ﱹ; ثن; ثن; ) ARABIC LIGATURE THEH WITH NOON FINAL FORM
+FC7A;FC7A;FC7A;062B 0649;062B 0649; # (ﱺ; ﱺ; ﱺ; ثى; ثى; ) ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
+FC7B;FC7B;FC7B;062B 064A;062B 064A; # (ﱻ; ﱻ; ﱻ; ثي; ثي; ) ARABIC LIGATURE THEH WITH YEH FINAL FORM
+FC7C;FC7C;FC7C;0641 0649;0641 0649; # (ï±¼; ï±¼; ï±¼; ÙÙ‰; ÙÙ‰; ) ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
+FC7D;FC7D;FC7D;0641 064A;0641 064A; # (ï±½; ï±½; ï±½; ÙÙŠ; ÙÙŠ; ) ARABIC LIGATURE FEH WITH YEH FINAL FORM
+FC7E;FC7E;FC7E;0642 0649;0642 0649; # (ﱾ; ﱾ; ﱾ; قى; قى; ) ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
+FC7F;FC7F;FC7F;0642 064A;0642 064A; # (ﱿ; ﱿ; ﱿ; قي; قي; ) ARABIC LIGATURE QAF WITH YEH FINAL FORM
+FC80;FC80;FC80;0643 0627;0643 0627; # (ﲀ; ﲀ; ﲀ; كا; كا; ) ARABIC LIGATURE KAF WITH ALEF FINAL FORM
+FC81;FC81;FC81;0643 0644;0643 0644; # (ï²; ï²; ï²; كل; كل; ) ARABIC LIGATURE KAF WITH LAM FINAL FORM
+FC82;FC82;FC82;0643 0645;0643 0645; # (ﲂ; ﲂ; ﲂ; كم; كم; ) ARABIC LIGATURE KAF WITH MEEM FINAL FORM
+FC83;FC83;FC83;0643 0649;0643 0649; # (ﲃ; ﲃ; ﲃ; كى; كى; ) ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
+FC84;FC84;FC84;0643 064A;0643 064A; # (ﲄ; ﲄ; ﲄ; كي; كي; ) ARABIC LIGATURE KAF WITH YEH FINAL FORM
+FC85;FC85;FC85;0644 0645;0644 0645; # (ﲅ; ﲅ; ﲅ; لم; لم; ) ARABIC LIGATURE LAM WITH MEEM FINAL FORM
+FC86;FC86;FC86;0644 0649;0644 0649; # (ﲆ; ﲆ; ﲆ; لى; لى; ) ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
+FC87;FC87;FC87;0644 064A;0644 064A; # (ﲇ; ﲇ; ﲇ; لي; لي; ) ARABIC LIGATURE LAM WITH YEH FINAL FORM
+FC88;FC88;FC88;0645 0627;0645 0627; # (ﲈ; ﲈ; ﲈ; ما; ما; ) ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
+FC89;FC89;FC89;0645 0645;0645 0645; # (ﲉ; ﲉ; ﲉ; مم; مم; ) ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
+FC8A;FC8A;FC8A;0646 0631;0646 0631; # (ﲊ; ﲊ; ﲊ; نر; نر; ) ARABIC LIGATURE NOON WITH REH FINAL FORM
+FC8B;FC8B;FC8B;0646 0632;0646 0632; # (ﲋ; ﲋ; ﲋ; نز; نز; ) ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
+FC8C;FC8C;FC8C;0646 0645;0646 0645; # (ﲌ; ﲌ; ﲌ; نم; نم; ) ARABIC LIGATURE NOON WITH MEEM FINAL FORM
+FC8D;FC8D;FC8D;0646 0646;0646 0646; # (ï²; ï²; ï²; نن; نن; ) ARABIC LIGATURE NOON WITH NOON FINAL FORM
+FC8E;FC8E;FC8E;0646 0649;0646 0649; # (ﲎ; ﲎ; ﲎ; نى; نى; ) ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
+FC8F;FC8F;FC8F;0646 064A;0646 064A; # (ï²; ï²; ï²; ني; ني; ) ARABIC LIGATURE NOON WITH YEH FINAL FORM
+FC90;FC90;FC90;0649 0670;0649 0670; # (ï²; ï²; ï²; ى◌ٰ; ى◌ٰ; ) ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
+FC91;FC91;FC91;064A 0631;064A 0631; # (ﲑ; ﲑ; ﲑ; ير; ير; ) ARABIC LIGATURE YEH WITH REH FINAL FORM
+FC92;FC92;FC92;064A 0632;064A 0632; # (ﲒ; ﲒ; ﲒ; يز; يز; ) ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
+FC93;FC93;FC93;064A 0645;064A 0645; # (ﲓ; ﲓ; ﲓ; يم; يم; ) ARABIC LIGATURE YEH WITH MEEM FINAL FORM
+FC94;FC94;FC94;064A 0646;064A 0646; # (ﲔ; ﲔ; ﲔ; ين; ين; ) ARABIC LIGATURE YEH WITH NOON FINAL FORM
+FC95;FC95;FC95;064A 0649;064A 0649; # (ﲕ; ﲕ; ﲕ; يى; يى; ) ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
+FC96;FC96;FC96;064A 064A;064A 064A; # (ﲖ; ﲖ; ﲖ; يي; يي; ) ARABIC LIGATURE YEH WITH YEH FINAL FORM
+FC97;FC97;FC97;0626 062C;064A 0654 062C; # (ﲗ; ﲗ; ﲗ; ئج; ي◌ٔج; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
+FC98;FC98;FC98;0626 062D;064A 0654 062D; # (ﲘ; ﲘ; ﲘ; ئح; ي◌ٔح; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
+FC99;FC99;FC99;0626 062E;064A 0654 062E; # (ﲙ; ﲙ; ﲙ; ئخ; ي◌ٔخ; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
+FC9A;FC9A;FC9A;0626 0645;064A 0654 0645; # (ﲚ; ﲚ; ﲚ; ئم; ي◌ٔم; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
+FC9B;FC9B;FC9B;0626 0647;064A 0654 0647; # (ﲛ; ﲛ; ﲛ; ئه; ي◌ٔه; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
+FC9C;FC9C;FC9C;0628 062C;0628 062C; # (ﲜ; ﲜ; ﲜ; بج; بج; ) ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
+FC9D;FC9D;FC9D;0628 062D;0628 062D; # (ï²; ï²; ï²; بح; بح; ) ARABIC LIGATURE BEH WITH HAH INITIAL FORM
+FC9E;FC9E;FC9E;0628 062E;0628 062E; # (ﲞ; ﲞ; ﲞ; بخ; بخ; ) ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
+FC9F;FC9F;FC9F;0628 0645;0628 0645; # (ﲟ; ﲟ; ﲟ; بم; بم; ) ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
+FCA0;FCA0;FCA0;0628 0647;0628 0647; # (ﲠ; ﲠ; ﲠ; به; به; ) ARABIC LIGATURE BEH WITH HEH INITIAL FORM
+FCA1;FCA1;FCA1;062A 062C;062A 062C; # (ﲡ; ﲡ; ﲡ; تج; تج; ) ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
+FCA2;FCA2;FCA2;062A 062D;062A 062D; # (ﲢ; ﲢ; ﲢ; تح; تح; ) ARABIC LIGATURE TEH WITH HAH INITIAL FORM
+FCA3;FCA3;FCA3;062A 062E;062A 062E; # (ﲣ; ﲣ; ﲣ; تخ; تخ; ) ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
+FCA4;FCA4;FCA4;062A 0645;062A 0645; # (ﲤ; ﲤ; ﲤ; تم; تم; ) ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
+FCA5;FCA5;FCA5;062A 0647;062A 0647; # (ﲥ; ﲥ; ﲥ; ته; ته; ) ARABIC LIGATURE TEH WITH HEH INITIAL FORM
+FCA6;FCA6;FCA6;062B 0645;062B 0645; # (ﲦ; ﲦ; ﲦ; ثم; ثم; ) ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
+FCA7;FCA7;FCA7;062C 062D;062C 062D; # (ﲧ; ﲧ; ﲧ; جح; جح; ) ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
+FCA8;FCA8;FCA8;062C 0645;062C 0645; # (ﲨ; ﲨ; ﲨ; جم; جم; ) ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
+FCA9;FCA9;FCA9;062D 062C;062D 062C; # (ﲩ; ﲩ; ﲩ; حج; حج; ) ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
+FCAA;FCAA;FCAA;062D 0645;062D 0645; # (ﲪ; ﲪ; ﲪ; حم; حم; ) ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
+FCAB;FCAB;FCAB;062E 062C;062E 062C; # (ﲫ; ﲫ; ﲫ; خج; خج; ) ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
+FCAC;FCAC;FCAC;062E 0645;062E 0645; # (ﲬ; ﲬ; ﲬ; خم; خم; ) ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
+FCAD;FCAD;FCAD;0633 062C;0633 062C; # (ﲭ; ﲭ; ﲭ; سج; سج; ) ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
+FCAE;FCAE;FCAE;0633 062D;0633 062D; # (ﲮ; ﲮ; ﲮ; سح; سح; ) ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
+FCAF;FCAF;FCAF;0633 062E;0633 062E; # (ﲯ; ﲯ; ﲯ; سخ; سخ; ) ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
+FCB0;FCB0;FCB0;0633 0645;0633 0645; # (ﲰ; ﲰ; ﲰ; سم; سم; ) ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
+FCB1;FCB1;FCB1;0635 062D;0635 062D; # (ﲱ; ﲱ; ﲱ; صح; صح; ) ARABIC LIGATURE SAD WITH HAH INITIAL FORM
+FCB2;FCB2;FCB2;0635 062E;0635 062E; # (ﲲ; ﲲ; ﲲ; صخ; صخ; ) ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
+FCB3;FCB3;FCB3;0635 0645;0635 0645; # (ﲳ; ﲳ; ﲳ; صم; صم; ) ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
+FCB4;FCB4;FCB4;0636 062C;0636 062C; # (ﲴ; ﲴ; ﲴ; ضج; ضج; ) ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
+FCB5;FCB5;FCB5;0636 062D;0636 062D; # (ﲵ; ﲵ; ﲵ; ضح; ضح; ) ARABIC LIGATURE DAD WITH HAH INITIAL FORM
+FCB6;FCB6;FCB6;0636 062E;0636 062E; # (ﲶ; ﲶ; ﲶ; ضخ; ضخ; ) ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
+FCB7;FCB7;FCB7;0636 0645;0636 0645; # (ﲷ; ﲷ; ﲷ; ضم; ضم; ) ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
+FCB8;FCB8;FCB8;0637 062D;0637 062D; # (ﲸ; ﲸ; ﲸ; طح; طح; ) ARABIC LIGATURE TAH WITH HAH INITIAL FORM
+FCB9;FCB9;FCB9;0638 0645;0638 0645; # (ﲹ; ﲹ; ﲹ; ظم; ظم; ) ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
+FCBA;FCBA;FCBA;0639 062C;0639 062C; # (ﲺ; ﲺ; ﲺ; عج; عج; ) ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
+FCBB;FCBB;FCBB;0639 0645;0639 0645; # (ﲻ; ﲻ; ﲻ; عم; عم; ) ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
+FCBC;FCBC;FCBC;063A 062C;063A 062C; # (ﲼ; ﲼ; ﲼ; غج; غج; ) ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
+FCBD;FCBD;FCBD;063A 0645;063A 0645; # (ﲽ; ﲽ; ﲽ; غم; غم; ) ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
+FCBE;FCBE;FCBE;0641 062C;0641 062C; # (ï²¾; ï²¾; ï²¾; Ùج; Ùج; ) ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
+FCBF;FCBF;FCBF;0641 062D;0641 062D; # (ﲿ; ﲿ; ﲿ; ÙØ­; ÙØ­; ) ARABIC LIGATURE FEH WITH HAH INITIAL FORM
+FCC0;FCC0;FCC0;0641 062E;0641 062E; # (ï³€; ï³€; ï³€; ÙØ®; ÙØ®; ) ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
+FCC1;FCC1;FCC1;0641 0645;0641 0645; # (ï³; ï³; ï³; ÙÙ…; ÙÙ…; ) ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
+FCC2;FCC2;FCC2;0642 062D;0642 062D; # (ﳂ; ﳂ; ﳂ; قح; قح; ) ARABIC LIGATURE QAF WITH HAH INITIAL FORM
+FCC3;FCC3;FCC3;0642 0645;0642 0645; # (ﳃ; ﳃ; ﳃ; قم; قم; ) ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
+FCC4;FCC4;FCC4;0643 062C;0643 062C; # (ﳄ; ﳄ; ﳄ; كج; كج; ) ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
+FCC5;FCC5;FCC5;0643 062D;0643 062D; # (ﳅ; ﳅ; ﳅ; كح; كح; ) ARABIC LIGATURE KAF WITH HAH INITIAL FORM
+FCC6;FCC6;FCC6;0643 062E;0643 062E; # (ﳆ; ﳆ; ﳆ; كخ; كخ; ) ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
+FCC7;FCC7;FCC7;0643 0644;0643 0644; # (ﳇ; ﳇ; ﳇ; كل; كل; ) ARABIC LIGATURE KAF WITH LAM INITIAL FORM
+FCC8;FCC8;FCC8;0643 0645;0643 0645; # (ﳈ; ﳈ; ﳈ; كم; كم; ) ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
+FCC9;FCC9;FCC9;0644 062C;0644 062C; # (ﳉ; ﳉ; ﳉ; لج; لج; ) ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
+FCCA;FCCA;FCCA;0644 062D;0644 062D; # (ﳊ; ﳊ; ﳊ; لح; لح; ) ARABIC LIGATURE LAM WITH HAH INITIAL FORM
+FCCB;FCCB;FCCB;0644 062E;0644 062E; # (ﳋ; ﳋ; ﳋ; لخ; لخ; ) ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
+FCCC;FCCC;FCCC;0644 0645;0644 0645; # (ﳌ; ﳌ; ﳌ; لم; لم; ) ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
+FCCD;FCCD;FCCD;0644 0647;0644 0647; # (ï³; ï³; ï³; له; له; ) ARABIC LIGATURE LAM WITH HEH INITIAL FORM
+FCCE;FCCE;FCCE;0645 062C;0645 062C; # (ﳎ; ﳎ; ﳎ; مج; مج; ) ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
+FCCF;FCCF;FCCF;0645 062D;0645 062D; # (ï³; ï³; ï³; مح; مح; ) ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
+FCD0;FCD0;FCD0;0645 062E;0645 062E; # (ï³; ï³; ï³; مخ; مخ; ) ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
+FCD1;FCD1;FCD1;0645 0645;0645 0645; # (ﳑ; ﳑ; ﳑ; مم; مم; ) ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
+FCD2;FCD2;FCD2;0646 062C;0646 062C; # (ﳒ; ﳒ; ﳒ; نج; نج; ) ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
+FCD3;FCD3;FCD3;0646 062D;0646 062D; # (ﳓ; ﳓ; ﳓ; نح; نح; ) ARABIC LIGATURE NOON WITH HAH INITIAL FORM
+FCD4;FCD4;FCD4;0646 062E;0646 062E; # (ﳔ; ﳔ; ﳔ; نخ; نخ; ) ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
+FCD5;FCD5;FCD5;0646 0645;0646 0645; # (ﳕ; ﳕ; ﳕ; نم; نم; ) ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
+FCD6;FCD6;FCD6;0646 0647;0646 0647; # (ﳖ; ﳖ; ﳖ; نه; نه; ) ARABIC LIGATURE NOON WITH HEH INITIAL FORM
+FCD7;FCD7;FCD7;0647 062C;0647 062C; # (ﳗ; ﳗ; ﳗ; هج; هج; ) ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
+FCD8;FCD8;FCD8;0647 0645;0647 0645; # (ﳘ; ﳘ; ﳘ; هم; هم; ) ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
+FCD9;FCD9;FCD9;0647 0670;0647 0670; # (ﳙ; ﳙ; ﳙ; ه◌ٰ; ه◌ٰ; ) ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
+FCDA;FCDA;FCDA;064A 062C;064A 062C; # (ﳚ; ﳚ; ﳚ; يج; يج; ) ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
+FCDB;FCDB;FCDB;064A 062D;064A 062D; # (ﳛ; ﳛ; ﳛ; يح; يح; ) ARABIC LIGATURE YEH WITH HAH INITIAL FORM
+FCDC;FCDC;FCDC;064A 062E;064A 062E; # (ﳜ; ﳜ; ﳜ; يخ; يخ; ) ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
+FCDD;FCDD;FCDD;064A 0645;064A 0645; # (ï³; ï³; ï³; يم; يم; ) ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
+FCDE;FCDE;FCDE;064A 0647;064A 0647; # (ﳞ; ﳞ; ﳞ; يه; يه; ) ARABIC LIGATURE YEH WITH HEH INITIAL FORM
+FCDF;FCDF;FCDF;0626 0645;064A 0654 0645; # (ﳟ; ﳟ; ﳟ; ئم; ي◌ٔم; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
+FCE0;FCE0;FCE0;0626 0647;064A 0654 0647; # (ﳠ; ﳠ; ﳠ; ئه; ي◌ٔه; ) ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
+FCE1;FCE1;FCE1;0628 0645;0628 0645; # (ﳡ; ﳡ; ﳡ; بم; بم; ) ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
+FCE2;FCE2;FCE2;0628 0647;0628 0647; # (ﳢ; ﳢ; ﳢ; به; به; ) ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
+FCE3;FCE3;FCE3;062A 0645;062A 0645; # (ﳣ; ﳣ; ﳣ; تم; تم; ) ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
+FCE4;FCE4;FCE4;062A 0647;062A 0647; # (ﳤ; ﳤ; ﳤ; ته; ته; ) ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
+FCE5;FCE5;FCE5;062B 0645;062B 0645; # (ﳥ; ﳥ; ﳥ; ثم; ثم; ) ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
+FCE6;FCE6;FCE6;062B 0647;062B 0647; # (ﳦ; ﳦ; ﳦ; ثه; ثه; ) ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
+FCE7;FCE7;FCE7;0633 0645;0633 0645; # (ﳧ; ﳧ; ﳧ; سم; سم; ) ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
+FCE8;FCE8;FCE8;0633 0647;0633 0647; # (ﳨ; ﳨ; ﳨ; سه; سه; ) ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
+FCE9;FCE9;FCE9;0634 0645;0634 0645; # (ﳩ; ﳩ; ﳩ; شم; شم; ) ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
+FCEA;FCEA;FCEA;0634 0647;0634 0647; # (ﳪ; ﳪ; ﳪ; شه; شه; ) ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
+FCEB;FCEB;FCEB;0643 0644;0643 0644; # (ﳫ; ﳫ; ﳫ; كل; كل; ) ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
+FCEC;FCEC;FCEC;0643 0645;0643 0645; # (ﳬ; ﳬ; ﳬ; كم; كم; ) ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
+FCED;FCED;FCED;0644 0645;0644 0645; # (ﳭ; ﳭ; ﳭ; لم; لم; ) ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
+FCEE;FCEE;FCEE;0646 0645;0646 0645; # (ﳮ; ﳮ; ﳮ; نم; نم; ) ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
+FCEF;FCEF;FCEF;0646 0647;0646 0647; # (ﳯ; ﳯ; ﳯ; نه; نه; ) ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
+FCF0;FCF0;FCF0;064A 0645;064A 0645; # (ﳰ; ﳰ; ﳰ; يم; يم; ) ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
+FCF1;FCF1;FCF1;064A 0647;064A 0647; # (ﳱ; ﳱ; ﳱ; يه; يه; ) ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
+FCF2;FCF2;FCF2;0640 064E 0651;0640 064E 0651; # (ﳲ; ﳲ; ﳲ; ـ◌َ◌ّ; ـ◌َ◌ّ; ) ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
+FCF3;FCF3;FCF3;0640 064F 0651;0640 064F 0651; # (ï³³; ï³³; ï³³; ـ◌Ù◌ّ; ـ◌Ù◌ّ; ) ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
+FCF4;FCF4;FCF4;0640 0650 0651;0640 0650 0651; # (ï³´; ï³´; ï³´; ـ◌Ù◌ّ; ـ◌Ù◌ّ; ) ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
+FCF5;FCF5;FCF5;0637 0649;0637 0649; # (ﳵ; ﳵ; ﳵ; طى; طى; ) ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
+FCF6;FCF6;FCF6;0637 064A;0637 064A; # (ﳶ; ﳶ; ﳶ; طي; طي; ) ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
+FCF7;FCF7;FCF7;0639 0649;0639 0649; # (ﳷ; ﳷ; ﳷ; عى; عى; ) ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
+FCF8;FCF8;FCF8;0639 064A;0639 064A; # (ﳸ; ﳸ; ﳸ; عي; عي; ) ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
+FCF9;FCF9;FCF9;063A 0649;063A 0649; # (ﳹ; ﳹ; ﳹ; غى; غى; ) ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
+FCFA;FCFA;FCFA;063A 064A;063A 064A; # (ﳺ; ﳺ; ﳺ; غي; غي; ) ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
+FCFB;FCFB;FCFB;0633 0649;0633 0649; # (ﳻ; ﳻ; ﳻ; سى; سى; ) ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
+FCFC;FCFC;FCFC;0633 064A;0633 064A; # (ﳼ; ﳼ; ﳼ; سي; سي; ) ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
+FCFD;FCFD;FCFD;0634 0649;0634 0649; # (ﳽ; ﳽ; ﳽ; شى; شى; ) ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
+FCFE;FCFE;FCFE;0634 064A;0634 064A; # (ﳾ; ﳾ; ﳾ; شي; شي; ) ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
+FCFF;FCFF;FCFF;062D 0649;062D 0649; # (ﳿ; ﳿ; ﳿ; حى; حى; ) ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
+FD00;FD00;FD00;062D 064A;062D 064A; # (ﴀ; ﴀ; ﴀ; حي; حي; ) ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
+FD01;FD01;FD01;062C 0649;062C 0649; # (ï´; ï´; ï´; جى; جى; ) ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
+FD02;FD02;FD02;062C 064A;062C 064A; # (ﴂ; ﴂ; ﴂ; جي; جي; ) ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
+FD03;FD03;FD03;062E 0649;062E 0649; # (ﴃ; ﴃ; ﴃ; خى; خى; ) ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
+FD04;FD04;FD04;062E 064A;062E 064A; # (ﴄ; ﴄ; ﴄ; خي; خي; ) ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
+FD05;FD05;FD05;0635 0649;0635 0649; # (ﴅ; ﴅ; ﴅ; صى; صى; ) ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
+FD06;FD06;FD06;0635 064A;0635 064A; # (ﴆ; ﴆ; ﴆ; صي; صي; ) ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
+FD07;FD07;FD07;0636 0649;0636 0649; # (ﴇ; ﴇ; ﴇ; ضى; ضى; ) ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
+FD08;FD08;FD08;0636 064A;0636 064A; # (ﴈ; ﴈ; ﴈ; ضي; ضي; ) ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
+FD09;FD09;FD09;0634 062C;0634 062C; # (ﴉ; ﴉ; ﴉ; شج; شج; ) ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
+FD0A;FD0A;FD0A;0634 062D;0634 062D; # (ﴊ; ﴊ; ﴊ; شح; شح; ) ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
+FD0B;FD0B;FD0B;0634 062E;0634 062E; # (ﴋ; ﴋ; ﴋ; شخ; شخ; ) ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
+FD0C;FD0C;FD0C;0634 0645;0634 0645; # (ﴌ; ﴌ; ﴌ; شم; شم; ) ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
+FD0D;FD0D;FD0D;0634 0631;0634 0631; # (ï´; ï´; ï´; شر; شر; ) ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
+FD0E;FD0E;FD0E;0633 0631;0633 0631; # (ﴎ; ﴎ; ﴎ; سر; سر; ) ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
+FD0F;FD0F;FD0F;0635 0631;0635 0631; # (ï´; ï´; ï´; صر; صر; ) ARABIC LIGATURE SAD WITH REH ISOLATED FORM
+FD10;FD10;FD10;0636 0631;0636 0631; # (ï´; ï´; ï´; ضر; ضر; ) ARABIC LIGATURE DAD WITH REH ISOLATED FORM
+FD11;FD11;FD11;0637 0649;0637 0649; # (ﴑ; ﴑ; ﴑ; طى; طى; ) ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
+FD12;FD12;FD12;0637 064A;0637 064A; # (ﴒ; ﴒ; ﴒ; طي; طي; ) ARABIC LIGATURE TAH WITH YEH FINAL FORM
+FD13;FD13;FD13;0639 0649;0639 0649; # (ﴓ; ﴓ; ﴓ; عى; عى; ) ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
+FD14;FD14;FD14;0639 064A;0639 064A; # (ﴔ; ﴔ; ﴔ; عي; عي; ) ARABIC LIGATURE AIN WITH YEH FINAL FORM
+FD15;FD15;FD15;063A 0649;063A 0649; # (ﴕ; ﴕ; ﴕ; غى; غى; ) ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
+FD16;FD16;FD16;063A 064A;063A 064A; # (ﴖ; ﴖ; ﴖ; غي; غي; ) ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
+FD17;FD17;FD17;0633 0649;0633 0649; # (ﴗ; ﴗ; ﴗ; سى; سى; ) ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
+FD18;FD18;FD18;0633 064A;0633 064A; # (ﴘ; ﴘ; ﴘ; سي; سي; ) ARABIC LIGATURE SEEN WITH YEH FINAL FORM
+FD19;FD19;FD19;0634 0649;0634 0649; # (ﴙ; ﴙ; ﴙ; شى; شى; ) ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
+FD1A;FD1A;FD1A;0634 064A;0634 064A; # (ﴚ; ﴚ; ﴚ; شي; شي; ) ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
+FD1B;FD1B;FD1B;062D 0649;062D 0649; # (ﴛ; ﴛ; ﴛ; حى; حى; ) ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
+FD1C;FD1C;FD1C;062D 064A;062D 064A; # (ﴜ; ﴜ; ﴜ; حي; حي; ) ARABIC LIGATURE HAH WITH YEH FINAL FORM
+FD1D;FD1D;FD1D;062C 0649;062C 0649; # (ï´; ï´; ï´; جى; جى; ) ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
+FD1E;FD1E;FD1E;062C 064A;062C 064A; # (ﴞ; ﴞ; ﴞ; جي; جي; ) ARABIC LIGATURE JEEM WITH YEH FINAL FORM
+FD1F;FD1F;FD1F;062E 0649;062E 0649; # (ﴟ; ﴟ; ﴟ; خى; خى; ) ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
+FD20;FD20;FD20;062E 064A;062E 064A; # (ﴠ; ﴠ; ﴠ; خي; خي; ) ARABIC LIGATURE KHAH WITH YEH FINAL FORM
+FD21;FD21;FD21;0635 0649;0635 0649; # (ﴡ; ﴡ; ﴡ; صى; صى; ) ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
+FD22;FD22;FD22;0635 064A;0635 064A; # (ﴢ; ﴢ; ﴢ; صي; صي; ) ARABIC LIGATURE SAD WITH YEH FINAL FORM
+FD23;FD23;FD23;0636 0649;0636 0649; # (ﴣ; ﴣ; ﴣ; ضى; ضى; ) ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
+FD24;FD24;FD24;0636 064A;0636 064A; # (ﴤ; ﴤ; ﴤ; ضي; ضي; ) ARABIC LIGATURE DAD WITH YEH FINAL FORM
+FD25;FD25;FD25;0634 062C;0634 062C; # (ﴥ; ﴥ; ﴥ; شج; شج; ) ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
+FD26;FD26;FD26;0634 062D;0634 062D; # (ﴦ; ﴦ; ﴦ; شح; شح; ) ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
+FD27;FD27;FD27;0634 062E;0634 062E; # (ﴧ; ﴧ; ﴧ; شخ; شخ; ) ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
+FD28;FD28;FD28;0634 0645;0634 0645; # (ﴨ; ﴨ; ﴨ; شم; شم; ) ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
+FD29;FD29;FD29;0634 0631;0634 0631; # (ﴩ; ﴩ; ﴩ; شر; شر; ) ARABIC LIGATURE SHEEN WITH REH FINAL FORM
+FD2A;FD2A;FD2A;0633 0631;0633 0631; # (ﴪ; ﴪ; ﴪ; سر; سر; ) ARABIC LIGATURE SEEN WITH REH FINAL FORM
+FD2B;FD2B;FD2B;0635 0631;0635 0631; # (ﴫ; ﴫ; ﴫ; صر; صر; ) ARABIC LIGATURE SAD WITH REH FINAL FORM
+FD2C;FD2C;FD2C;0636 0631;0636 0631; # (ﴬ; ﴬ; ﴬ; ضر; ضر; ) ARABIC LIGATURE DAD WITH REH FINAL FORM
+FD2D;FD2D;FD2D;0634 062C;0634 062C; # (ﴭ; ﴭ; ﴭ; شج; شج; ) ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
+FD2E;FD2E;FD2E;0634 062D;0634 062D; # (ﴮ; ﴮ; ﴮ; شح; شح; ) ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
+FD2F;FD2F;FD2F;0634 062E;0634 062E; # (ﴯ; ﴯ; ﴯ; شخ; شخ; ) ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
+FD30;FD30;FD30;0634 0645;0634 0645; # (ﴰ; ﴰ; ﴰ; شم; شم; ) ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
+FD31;FD31;FD31;0633 0647;0633 0647; # (ﴱ; ﴱ; ﴱ; سه; سه; ) ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
+FD32;FD32;FD32;0634 0647;0634 0647; # (ﴲ; ﴲ; ﴲ; شه; شه; ) ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
+FD33;FD33;FD33;0637 0645;0637 0645; # (ﴳ; ﴳ; ﴳ; طم; طم; ) ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
+FD34;FD34;FD34;0633 062C;0633 062C; # (ﴴ; ﴴ; ﴴ; سج; سج; ) ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
+FD35;FD35;FD35;0633 062D;0633 062D; # (ﴵ; ﴵ; ﴵ; سح; سح; ) ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
+FD36;FD36;FD36;0633 062E;0633 062E; # (ﴶ; ﴶ; ﴶ; سخ; سخ; ) ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
+FD37;FD37;FD37;0634 062C;0634 062C; # (ﴷ; ﴷ; ﴷ; شج; شج; ) ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
+FD38;FD38;FD38;0634 062D;0634 062D; # (ﴸ; ﴸ; ﴸ; شح; شح; ) ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
+FD39;FD39;FD39;0634 062E;0634 062E; # (ﴹ; ﴹ; ﴹ; شخ; شخ; ) ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
+FD3A;FD3A;FD3A;0637 0645;0637 0645; # (ﴺ; ﴺ; ﴺ; طم; طم; ) ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
+FD3B;FD3B;FD3B;0638 0645;0638 0645; # (ﴻ; ﴻ; ﴻ; ظم; ظم; ) ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
+FD3C;FD3C;FD3C;0627 064B;0627 064B; # (ﴼ; ﴼ; ﴼ; ا◌ً; ا◌ً; ) ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
+FD3D;FD3D;FD3D;0627 064B;0627 064B; # (ﴽ; ﴽ; ﴽ; ا◌ً; ا◌ً; ) ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50;FD50;FD50;062A 062C 0645;062A 062C 0645; # (ïµ; ïµ; ïµ; تجم; تجم; ) ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
+FD51;FD51;FD51;062A 062D 062C;062A 062D 062C; # (ﵑ; ﵑ; ﵑ; تحج; تحج; ) ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
+FD52;FD52;FD52;062A 062D 062C;062A 062D 062C; # (ﵒ; ﵒ; ﵒ; تحج; تحج; ) ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
+FD53;FD53;FD53;062A 062D 0645;062A 062D 0645; # (ﵓ; ﵓ; ﵓ; تحم; تحم; ) ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
+FD54;FD54;FD54;062A 062E 0645;062A 062E 0645; # (ﵔ; ﵔ; ﵔ; تخم; تخم; ) ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
+FD55;FD55;FD55;062A 0645 062C;062A 0645 062C; # (ﵕ; ﵕ; ﵕ; تمج; تمج; ) ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
+FD56;FD56;FD56;062A 0645 062D;062A 0645 062D; # (ﵖ; ﵖ; ﵖ; تمح; تمح; ) ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
+FD57;FD57;FD57;062A 0645 062E;062A 0645 062E; # (ﵗ; ﵗ; ﵗ; تمخ; تمخ; ) ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
+FD58;FD58;FD58;062C 0645 062D;062C 0645 062D; # (ﵘ; ﵘ; ﵘ; جمح; جمح; ) ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
+FD59;FD59;FD59;062C 0645 062D;062C 0645 062D; # (ﵙ; ﵙ; ﵙ; جمح; جمح; ) ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
+FD5A;FD5A;FD5A;062D 0645 064A;062D 0645 064A; # (ﵚ; ﵚ; ﵚ; حمي; حمي; ) ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
+FD5B;FD5B;FD5B;062D 0645 0649;062D 0645 0649; # (ﵛ; ﵛ; ﵛ; حمى; حمى; ) ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD5C;FD5C;FD5C;0633 062D 062C;0633 062D 062C; # (ﵜ; ﵜ; ﵜ; سحج; سحج; ) ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
+FD5D;FD5D;FD5D;0633 062C 062D;0633 062C 062D; # (ïµ; ïµ; ïµ; سجح; سجح; ) ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
+FD5E;FD5E;FD5E;0633 062C 0649;0633 062C 0649; # (ﵞ; ﵞ; ﵞ; سجى; سجى; ) ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD5F;FD5F;FD5F;0633 0645 062D;0633 0645 062D; # (ﵟ; ﵟ; ﵟ; سمح; سمح; ) ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
+FD60;FD60;FD60;0633 0645 062D;0633 0645 062D; # (ﵠ; ﵠ; ﵠ; سمح; سمح; ) ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
+FD61;FD61;FD61;0633 0645 062C;0633 0645 062C; # (ﵡ; ﵡ; ﵡ; سمج; سمج; ) ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
+FD62;FD62;FD62;0633 0645 0645;0633 0645 0645; # (ﵢ; ﵢ; ﵢ; سمم; سمم; ) ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
+FD63;FD63;FD63;0633 0645 0645;0633 0645 0645; # (ﵣ; ﵣ; ﵣ; سمم; سمم; ) ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
+FD64;FD64;FD64;0635 062D 062D;0635 062D 062D; # (ﵤ; ﵤ; ﵤ; صحح; صحح; ) ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
+FD65;FD65;FD65;0635 062D 062D;0635 062D 062D; # (ﵥ; ﵥ; ﵥ; صحح; صحح; ) ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
+FD66;FD66;FD66;0635 0645 0645;0635 0645 0645; # (ﵦ; ﵦ; ﵦ; صمم; صمم; ) ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
+FD67;FD67;FD67;0634 062D 0645;0634 062D 0645; # (ﵧ; ﵧ; ﵧ; شحم; شحم; ) ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
+FD68;FD68;FD68;0634 062D 0645;0634 062D 0645; # (ﵨ; ﵨ; ﵨ; شحم; شحم; ) ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
+FD69;FD69;FD69;0634 062C 064A;0634 062C 064A; # (ﵩ; ﵩ; ﵩ; شجي; شجي; ) ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
+FD6A;FD6A;FD6A;0634 0645 062E;0634 0645 062E; # (ﵪ; ﵪ; ﵪ; شمخ; شمخ; ) ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
+FD6B;FD6B;FD6B;0634 0645 062E;0634 0645 062E; # (ﵫ; ﵫ; ﵫ; شمخ; شمخ; ) ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
+FD6C;FD6C;FD6C;0634 0645 0645;0634 0645 0645; # (ﵬ; ﵬ; ﵬ; شمم; شمم; ) ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
+FD6D;FD6D;FD6D;0634 0645 0645;0634 0645 0645; # (ﵭ; ﵭ; ﵭ; شمم; شمم; ) ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
+FD6E;FD6E;FD6E;0636 062D 0649;0636 062D 0649; # (ﵮ; ﵮ; ﵮ; ضحى; ضحى; ) ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD6F;FD6F;FD6F;0636 062E 0645;0636 062E 0645; # (ﵯ; ﵯ; ﵯ; ضخم; ضخم; ) ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
+FD70;FD70;FD70;0636 062E 0645;0636 062E 0645; # (ﵰ; ﵰ; ﵰ; ضخم; ضخم; ) ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
+FD71;FD71;FD71;0637 0645 062D;0637 0645 062D; # (ﵱ; ﵱ; ﵱ; طمح; طمح; ) ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
+FD72;FD72;FD72;0637 0645 062D;0637 0645 062D; # (ﵲ; ﵲ; ﵲ; طمح; طمح; ) ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
+FD73;FD73;FD73;0637 0645 0645;0637 0645 0645; # (ﵳ; ﵳ; ﵳ; طمم; طمم; ) ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
+FD74;FD74;FD74;0637 0645 064A;0637 0645 064A; # (ﵴ; ﵴ; ﵴ; طمي; طمي; ) ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
+FD75;FD75;FD75;0639 062C 0645;0639 062C 0645; # (ﵵ; ﵵ; ﵵ; عجم; عجم; ) ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
+FD76;FD76;FD76;0639 0645 0645;0639 0645 0645; # (ﵶ; ﵶ; ﵶ; عمم; عمم; ) ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
+FD77;FD77;FD77;0639 0645 0645;0639 0645 0645; # (ﵷ; ﵷ; ﵷ; عمم; عمم; ) ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
+FD78;FD78;FD78;0639 0645 0649;0639 0645 0649; # (ﵸ; ﵸ; ﵸ; عمى; عمى; ) ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD79;FD79;FD79;063A 0645 0645;063A 0645 0645; # (ﵹ; ﵹ; ﵹ; غمم; غمم; ) ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
+FD7A;FD7A;FD7A;063A 0645 064A;063A 0645 064A; # (ﵺ; ﵺ; ﵺ; غمي; غمي; ) ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
+FD7B;FD7B;FD7B;063A 0645 0649;063A 0645 0649; # (ﵻ; ﵻ; ﵻ; غمى; غمى; ) ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD7C;FD7C;FD7C;0641 062E 0645;0641 062E 0645; # (ïµ¼; ïµ¼; ïµ¼; Ùخم; Ùخم; ) ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
+FD7D;FD7D;FD7D;0641 062E 0645;0641 062E 0645; # (ïµ½; ïµ½; ïµ½; Ùخم; Ùخم; ) ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
+FD7E;FD7E;FD7E;0642 0645 062D;0642 0645 062D; # (ﵾ; ﵾ; ﵾ; قمح; قمح; ) ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
+FD7F;FD7F;FD7F;0642 0645 0645;0642 0645 0645; # (ﵿ; ﵿ; ﵿ; قمم; قمم; ) ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
+FD80;FD80;FD80;0644 062D 0645;0644 062D 0645; # (ﶀ; ﶀ; ﶀ; لحم; لحم; ) ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
+FD81;FD81;FD81;0644 062D 064A;0644 062D 064A; # (ï¶; ï¶; ï¶; لحي; لحي; ) ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
+FD82;FD82;FD82;0644 062D 0649;0644 062D 0649; # (ﶂ; ﶂ; ﶂ; لحى; لحى; ) ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD83;FD83;FD83;0644 062C 062C;0644 062C 062C; # (ﶃ; ﶃ; ﶃ; لجج; لجج; ) ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
+FD84;FD84;FD84;0644 062C 062C;0644 062C 062C; # (ﶄ; ﶄ; ﶄ; لجج; لجج; ) ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
+FD85;FD85;FD85;0644 062E 0645;0644 062E 0645; # (ﶅ; ﶅ; ﶅ; لخم; لخم; ) ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
+FD86;FD86;FD86;0644 062E 0645;0644 062E 0645; # (ﶆ; ﶆ; ﶆ; لخم; لخم; ) ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
+FD87;FD87;FD87;0644 0645 062D;0644 0645 062D; # (ﶇ; ﶇ; ﶇ; لمح; لمح; ) ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
+FD88;FD88;FD88;0644 0645 062D;0644 0645 062D; # (ﶈ; ﶈ; ﶈ; لمح; لمح; ) ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
+FD89;FD89;FD89;0645 062D 062C;0645 062D 062C; # (ﶉ; ﶉ; ﶉ; محج; محج; ) ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
+FD8A;FD8A;FD8A;0645 062D 0645;0645 062D 0645; # (ﶊ; ﶊ; ﶊ; محم; محم; ) ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
+FD8B;FD8B;FD8B;0645 062D 064A;0645 062D 064A; # (ﶋ; ﶋ; ﶋ; محي; محي; ) ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
+FD8C;FD8C;FD8C;0645 062C 062D;0645 062C 062D; # (ﶌ; ﶌ; ﶌ; مجح; مجح; ) ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
+FD8D;FD8D;FD8D;0645 062C 0645;0645 062C 0645; # (ï¶; ï¶; ï¶; مجم; مجم; ) ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
+FD8E;FD8E;FD8E;0645 062E 062C;0645 062E 062C; # (ﶎ; ﶎ; ﶎ; مخج; مخج; ) ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
+FD8F;FD8F;FD8F;0645 062E 0645;0645 062E 0645; # (ï¶; ï¶; ï¶; مخم; مخم; ) ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92;FD92;FD92;0645 062C 062E;0645 062C 062E; # (ﶒ; ﶒ; ﶒ; مجخ; مجخ; ) ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
+FD93;FD93;FD93;0647 0645 062C;0647 0645 062C; # (ﶓ; ﶓ; ﶓ; همج; همج; ) ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
+FD94;FD94;FD94;0647 0645 0645;0647 0645 0645; # (ﶔ; ﶔ; ﶔ; همم; همم; ) ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
+FD95;FD95;FD95;0646 062D 0645;0646 062D 0645; # (ﶕ; ﶕ; ﶕ; نحم; نحم; ) ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
+FD96;FD96;FD96;0646 062D 0649;0646 062D 0649; # (ﶖ; ﶖ; ﶖ; نحى; نحى; ) ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD97;FD97;FD97;0646 062C 0645;0646 062C 0645; # (ﶗ; ﶗ; ﶗ; نجم; نجم; ) ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
+FD98;FD98;FD98;0646 062C 0645;0646 062C 0645; # (ﶘ; ﶘ; ﶘ; نجم; نجم; ) ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
+FD99;FD99;FD99;0646 062C 0649;0646 062C 0649; # (ﶙ; ﶙ; ﶙ; نجى; نجى; ) ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD9A;FD9A;FD9A;0646 0645 064A;0646 0645 064A; # (ﶚ; ﶚ; ﶚ; نمي; نمي; ) ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
+FD9B;FD9B;FD9B;0646 0645 0649;0646 0645 0649; # (ﶛ; ﶛ; ﶛ; نمى; نمى; ) ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD9C;FD9C;FD9C;064A 0645 0645;064A 0645 0645; # (ﶜ; ﶜ; ﶜ; يمم; يمم; ) ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
+FD9D;FD9D;FD9D;064A 0645 0645;064A 0645 0645; # (ï¶; ï¶; ï¶; يمم; يمم; ) ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
+FD9E;FD9E;FD9E;0628 062E 064A;0628 062E 064A; # (ﶞ; ﶞ; ﶞ; بخي; بخي; ) ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
+FD9F;FD9F;FD9F;062A 062C 064A;062A 062C 064A; # (ﶟ; ﶟ; ﶟ; تجي; تجي; ) ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
+FDA0;FDA0;FDA0;062A 062C 0649;062A 062C 0649; # (ﶠ; ﶠ; ﶠ; تجى; تجى; ) ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FDA1;FDA1;FDA1;062A 062E 064A;062A 062E 064A; # (ﶡ; ﶡ; ﶡ; تخي; تخي; ) ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
+FDA2;FDA2;FDA2;062A 062E 0649;062A 062E 0649; # (ﶢ; ﶢ; ﶢ; تخى; تخى; ) ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA3;FDA3;FDA3;062A 0645 064A;062A 0645 064A; # (ﶣ; ﶣ; ﶣ; تمي; تمي; ) ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
+FDA4;FDA4;FDA4;062A 0645 0649;062A 0645 0649; # (ﶤ; ﶤ; ﶤ; تمى; تمى; ) ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA5;FDA5;FDA5;062C 0645 064A;062C 0645 064A; # (ﶥ; ﶥ; ﶥ; جمي; جمي; ) ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
+FDA6;FDA6;FDA6;062C 062D 0649;062C 062D 0649; # (ﶦ; ﶦ; ﶦ; جحى; جحى; ) ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FDA7;FDA7;FDA7;062C 0645 0649;062C 0645 0649; # (ﶧ; ﶧ; ﶧ; جمى; جمى; ) ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA8;FDA8;FDA8;0633 062E 0649;0633 062E 0649; # (ﶨ; ﶨ; ﶨ; سخى; سخى; ) ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA9;FDA9;FDA9;0635 062D 064A;0635 062D 064A; # (ﶩ; ﶩ; ﶩ; صحي; صحي; ) ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
+FDAA;FDAA;FDAA;0634 062D 064A;0634 062D 064A; # (ﶪ; ﶪ; ﶪ; شحي; شحي; ) ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
+FDAB;FDAB;FDAB;0636 062D 064A;0636 062D 064A; # (ﶫ; ﶫ; ﶫ; ضحي; ضحي; ) ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
+FDAC;FDAC;FDAC;0644 062C 064A;0644 062C 064A; # (ﶬ; ﶬ; ﶬ; لجي; لجي; ) ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
+FDAD;FDAD;FDAD;0644 0645 064A;0644 0645 064A; # (ﶭ; ﶭ; ﶭ; لمي; لمي; ) ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
+FDAE;FDAE;FDAE;064A 062D 064A;064A 062D 064A; # (ﶮ; ﶮ; ﶮ; يحي; يحي; ) ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
+FDAF;FDAF;FDAF;064A 062C 064A;064A 062C 064A; # (ﶯ; ﶯ; ﶯ; يجي; يجي; ) ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
+FDB0;FDB0;FDB0;064A 0645 064A;064A 0645 064A; # (ﶰ; ﶰ; ﶰ; يمي; يمي; ) ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
+FDB1;FDB1;FDB1;0645 0645 064A;0645 0645 064A; # (ﶱ; ﶱ; ﶱ; ممي; ممي; ) ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
+FDB2;FDB2;FDB2;0642 0645 064A;0642 0645 064A; # (ﶲ; ﶲ; ﶲ; قمي; قمي; ) ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
+FDB3;FDB3;FDB3;0646 062D 064A;0646 062D 064A; # (ﶳ; ﶳ; ﶳ; نحي; نحي; ) ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
+FDB4;FDB4;FDB4;0642 0645 062D;0642 0645 062D; # (ﶴ; ﶴ; ﶴ; قمح; قمح; ) ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
+FDB5;FDB5;FDB5;0644 062D 0645;0644 062D 0645; # (ﶵ; ﶵ; ﶵ; لحم; لحم; ) ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
+FDB6;FDB6;FDB6;0639 0645 064A;0639 0645 064A; # (ﶶ; ﶶ; ﶶ; عمي; عمي; ) ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
+FDB7;FDB7;FDB7;0643 0645 064A;0643 0645 064A; # (ﶷ; ﶷ; ﶷ; كمي; كمي; ) ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
+FDB8;FDB8;FDB8;0646 062C 062D;0646 062C 062D; # (ﶸ; ﶸ; ﶸ; نجح; نجح; ) ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
+FDB9;FDB9;FDB9;0645 062E 064A;0645 062E 064A; # (ﶹ; ﶹ; ﶹ; مخي; مخي; ) ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
+FDBA;FDBA;FDBA;0644 062C 0645;0644 062C 0645; # (ﶺ; ﶺ; ﶺ; لجم; لجم; ) ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
+FDBB;FDBB;FDBB;0643 0645 0645;0643 0645 0645; # (ﶻ; ﶻ; ﶻ; كمم; كمم; ) ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
+FDBC;FDBC;FDBC;0644 062C 0645;0644 062C 0645; # (ﶼ; ﶼ; ﶼ; لجم; لجم; ) ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
+FDBD;FDBD;FDBD;0646 062C 062D;0646 062C 062D; # (ﶽ; ﶽ; ﶽ; نجح; نجح; ) ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
+FDBE;FDBE;FDBE;062C 062D 064A;062C 062D 064A; # (ﶾ; ﶾ; ﶾ; جحي; جحي; ) ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
+FDBF;FDBF;FDBF;062D 062C 064A;062D 062C 064A; # (ﶿ; ﶿ; ﶿ; حجي; حجي; ) ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
+FDC0;FDC0;FDC0;0645 062C 064A;0645 062C 064A; # (ﷀ; ﷀ; ﷀ; مجي; مجي; ) ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
+FDC1;FDC1;FDC1;0641 0645 064A;0641 0645 064A; # (ï·; ï·; ï·; Ùمي; Ùمي; ) ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
+FDC2;FDC2;FDC2;0628 062D 064A;0628 062D 064A; # (ﷂ; ﷂ; ﷂ; بحي; بحي; ) ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
+FDC3;FDC3;FDC3;0643 0645 0645;0643 0645 0645; # (ﷃ; ﷃ; ﷃ; كمم; كمم; ) ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
+FDC4;FDC4;FDC4;0639 062C 0645;0639 062C 0645; # (ﷄ; ﷄ; ﷄ; عجم; عجم; ) ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
+FDC5;FDC5;FDC5;0635 0645 0645;0635 0645 0645; # (ﷅ; ﷅ; ﷅ; صمم; صمم; ) ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
+FDC6;FDC6;FDC6;0633 062E 064A;0633 062E 064A; # (ﷆ; ﷆ; ﷆ; سخي; سخي; ) ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
+FDC7;FDC7;FDC7;0646 062C 064A;0646 062C 064A; # (ﷇ; ﷇ; ﷇ; نجي; نجي; ) ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0;FDF0;FDF0;0635 0644 06D2;0635 0644 06D2; # (ﷰ; ﷰ; ﷰ; صلے; صلے; ) ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
+FDF1;FDF1;FDF1;0642 0644 06D2;0642 0644 06D2; # (ﷱ; ﷱ; ﷱ; قلے; قلے; ) ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
+FDF2;FDF2;FDF2;0627 0644 0644 0647;0627 0644 0644 0647; # (ﷲ; ﷲ; ﷲ; الله; الله; ) ARABIC LIGATURE ALLAH ISOLATED FORM
+FDF3;FDF3;FDF3;0627 0643 0628 0631;0627 0643 0628 0631; # (ﷳ; ﷳ; ﷳ; اكبر; اكبر; ) ARABIC LIGATURE AKBAR ISOLATED FORM
+FDF4;FDF4;FDF4;0645 062D 0645 062F;0645 062D 0645 062F; # (ﷴ; ﷴ; ﷴ; محمد; محمد; ) ARABIC LIGATURE MOHAMMAD ISOLATED FORM
+FDF5;FDF5;FDF5;0635 0644 0639 0645;0635 0644 0639 0645; # (ﷵ; ﷵ; ﷵ; صلعم; صلعم; ) ARABIC LIGATURE SALAM ISOLATED FORM
+FDF6;FDF6;FDF6;0631 0633 0648 0644;0631 0633 0648 0644; # (ﷶ; ﷶ; ﷶ; رسول; رسول; ) ARABIC LIGATURE RASOUL ISOLATED FORM
+FDF7;FDF7;FDF7;0639 0644 064A 0647;0639 0644 064A 0647; # (ﷷ; ﷷ; ﷷ; عليه; عليه; ) ARABIC LIGATURE ALAYHE ISOLATED FORM
+FDF8;FDF8;FDF8;0648 0633 0644 0645;0648 0633 0644 0645; # (ﷸ; ﷸ; ﷸ; وسلم; وسلم; ) ARABIC LIGATURE WASALLAM ISOLATED FORM
+FDF9;FDF9;FDF9;0635 0644 0649;0635 0644 0649; # (ﷹ; ﷹ; ﷹ; صلى; صلى; ) ARABIC LIGATURE SALLA ISOLATED FORM
+FDFA;FDFA;FDFA;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645; # (ﷺ; ﷺ; ﷺ; صلى الله عليه وسلم; صلى الله عليه وسلم; ) ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
+FDFB;FDFB;FDFB;062C 0644 0020 062C 0644 0627 0644 0647;062C 0644 0020 062C 0644 0627 0644 0647; # (ﷻ; ﷻ; ﷻ; جل جلاله; جل جلاله; ) ARABIC LIGATURE JALLAJALALOUHOU
+FDFC;FDFC;FDFC;0631 06CC 0627 0644;0631 06CC 0627 0644; # (﷼; ﷼; ﷼; ریال; ریال; ) RIAL SIGN
+FE10;FE10;FE10;002C;002C; # (ï¸; ï¸; ï¸; ,; ,; ) PRESENTATION FORM FOR VERTICAL COMMA
+FE11;FE11;FE11;3001;3001; # (︑; ︑; ︑; ã€; ã€; ) PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA
+FE12;FE12;FE12;3002;3002; # (︒; ︒; ︒; 。; 。; ) PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
+FE13;FE13;FE13;003A;003A; # (︓; ︓; ︓; :; :; ) PRESENTATION FORM FOR VERTICAL COLON
+FE14;FE14;FE14;003B;003B; # (︔; ︔; ︔; ;; ;; ) PRESENTATION FORM FOR VERTICAL SEMICOLON
+FE15;FE15;FE15;0021;0021; # (︕; ︕; ︕; !; !; ) PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK
+FE16;FE16;FE16;003F;003F; # (︖; ︖; ︖; ?; ?; ) PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE17;FE17;FE17;3016;3016; # (︗; ︗; ︗; 〖; 〖; ) PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18;FE18;FE18;3017;3017; # (︘; ︘; ︘; 〗; 〗; ) PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE19;FE19;FE19;002E 002E 002E;002E 002E 002E; # (︙; ︙; ︙; ...; ...; ) PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30;FE30;FE30;002E 002E;002E 002E; # (︰; ︰; ︰; ..; ..; ) PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31;FE31;FE31;2014;2014; # (︱; ︱; ︱; —; —; ) PRESENTATION FORM FOR VERTICAL EM DASH
+FE32;FE32;FE32;2013;2013; # (︲; ︲; ︲; –; –; ) PRESENTATION FORM FOR VERTICAL EN DASH
+FE33;FE33;FE33;005F;005F; # (︳; ︳; ︳; _; _; ) PRESENTATION FORM FOR VERTICAL LOW LINE
+FE34;FE34;FE34;005F;005F; # (︴; ︴; ︴; _; _; ) PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35;FE35;FE35;0028;0028; # (︵; ︵; ︵; (; (; ) PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36;FE36;FE36;0029;0029; # (︶; ︶; ︶; ); ); ) PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37;FE37;FE37;007B;007B; # (︷; ︷; ︷; {; {; ) PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38;FE38;FE38;007D;007D; # (︸; ︸; ︸; }; }; ) PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39;FE39;FE39;3014;3014; # (︹; ︹; ︹; 〔; 〔; ) PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A;FE3A;FE3A;3015;3015; # (︺; ︺; ︺; 〕; 〕; ) PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B;FE3B;FE3B;3010;3010; # (︻; ︻; ︻; ã€; ã€; ) PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C;FE3C;FE3C;3011;3011; # (︼; ︼; ︼; 】; 】; ) PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D;FE3D;FE3D;300A;300A; # (︽; ︽; ︽; 《; 《; ) PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E;FE3E;FE3E;300B;300B; # (︾; ︾; ︾; 》; 》; ) PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F;FE3F;FE3F;3008;3008; # (︿; ︿; ︿; 〈; 〈; ) PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40;FE40;FE40;3009;3009; # (﹀; ﹀; ﹀; 〉; 〉; ) PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41;FE41;FE41;300C;300C; # (ï¹; ï¹; ï¹; 「; 「; ) PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42;FE42;FE42;300D;300D; # (﹂; ﹂; ﹂; ã€; ã€; ) PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43;FE43;FE43;300E;300E; # (﹃; ﹃; ﹃; 『; 『; ) PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44;FE44;FE44;300F;300F; # (﹄; ﹄; ﹄; ã€; ã€; ) PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE47;FE47;FE47;005B;005B; # (﹇; ﹇; ﹇; [; [; ) PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48;FE48;FE48;005D;005D; # (﹈; ﹈; ﹈; ]; ]; ) PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE49;FE49;FE49;0020 0305;0020 0305; # (﹉; ﹉; ﹉; ◌̅; ◌̅; ) DASHED OVERLINE
+FE4A;FE4A;FE4A;0020 0305;0020 0305; # (﹊; ﹊; ﹊; ◌̅; ◌̅; ) CENTRELINE OVERLINE
+FE4B;FE4B;FE4B;0020 0305;0020 0305; # (﹋; ﹋; ﹋; ◌̅; ◌̅; ) WAVY OVERLINE
+FE4C;FE4C;FE4C;0020 0305;0020 0305; # (﹌; ﹌; ﹌; ◌̅; ◌̅; ) DOUBLE WAVY OVERLINE
+FE4D;FE4D;FE4D;005F;005F; # (ï¹; ï¹; ï¹; _; _; ) DASHED LOW LINE
+FE4E;FE4E;FE4E;005F;005F; # (﹎; ﹎; ﹎; _; _; ) CENTRELINE LOW LINE
+FE4F;FE4F;FE4F;005F;005F; # (ï¹; ï¹; ï¹; _; _; ) WAVY LOW LINE
+FE50;FE50;FE50;002C;002C; # (ï¹; ï¹; ï¹; ,; ,; ) SMALL COMMA
+FE51;FE51;FE51;3001;3001; # (﹑; ﹑; ﹑; ã€; ã€; ) SMALL IDEOGRAPHIC COMMA
+FE52;FE52;FE52;002E;002E; # (ï¹’; ï¹’; ï¹’; .; .; ) SMALL FULL STOP
+FE54;FE54;FE54;003B;003B; # (ï¹”; ï¹”; ï¹”; ;; ;; ) SMALL SEMICOLON
+FE55;FE55;FE55;003A;003A; # (﹕; ﹕; ﹕; :; :; ) SMALL COLON
+FE56;FE56;FE56;003F;003F; # (ï¹–; ï¹–; ï¹–; ?; ?; ) SMALL QUESTION MARK
+FE57;FE57;FE57;0021;0021; # (ï¹—; ï¹—; ï¹—; !; !; ) SMALL EXCLAMATION MARK
+FE58;FE58;FE58;2014;2014; # (﹘; ﹘; ﹘; —; —; ) SMALL EM DASH
+FE59;FE59;FE59;0028;0028; # (ï¹™; ï¹™; ï¹™; (; (; ) SMALL LEFT PARENTHESIS
+FE5A;FE5A;FE5A;0029;0029; # (﹚; ﹚; ﹚; ); ); ) SMALL RIGHT PARENTHESIS
+FE5B;FE5B;FE5B;007B;007B; # (ï¹›; ï¹›; ï¹›; {; {; ) SMALL LEFT CURLY BRACKET
+FE5C;FE5C;FE5C;007D;007D; # (﹜; ﹜; ﹜; }; }; ) SMALL RIGHT CURLY BRACKET
+FE5D;FE5D;FE5D;3014;3014; # (ï¹; ï¹; ï¹; 〔; 〔; ) SMALL LEFT TORTOISE SHELL BRACKET
+FE5E;FE5E;FE5E;3015;3015; # (﹞; ﹞; ﹞; 〕; 〕; ) SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F;FE5F;FE5F;0023;0023; # (﹟; ﹟; ﹟; #; #; ) SMALL NUMBER SIGN
+FE60;FE60;FE60;0026;0026; # (ï¹ ; ï¹ ; ï¹ ; &; &; ) SMALL AMPERSAND
+FE61;FE61;FE61;002A;002A; # (﹡; ﹡; ﹡; *; *; ) SMALL ASTERISK
+FE62;FE62;FE62;002B;002B; # (ï¹¢; ï¹¢; ï¹¢; +; +; ) SMALL PLUS SIGN
+FE63;FE63;FE63;002D;002D; # (ï¹£; ï¹£; ï¹£; -; -; ) SMALL HYPHEN-MINUS
+FE64;FE64;FE64;003C;003C; # (﹤; ﹤; ﹤; <; <; ) SMALL LESS-THAN SIGN
+FE65;FE65;FE65;003E;003E; # (ï¹¥; ï¹¥; ï¹¥; >; >; ) SMALL GREATER-THAN SIGN
+FE66;FE66;FE66;003D;003D; # (﹦; ﹦; ﹦; =; =; ) SMALL EQUALS SIGN
+FE68;FE68;FE68;005C;005C; # (﹨; ﹨; ﹨; \; \; ) SMALL REVERSE SOLIDUS
+FE69;FE69;FE69;0024;0024; # (﹩; ﹩; ﹩; $; $; ) SMALL DOLLAR SIGN
+FE6A;FE6A;FE6A;0025;0025; # (﹪; ﹪; ﹪; %; %; ) SMALL PERCENT SIGN
+FE6B;FE6B;FE6B;0040;0040; # (﹫; ﹫; ﹫; @; @; ) SMALL COMMERCIAL AT
+FE70;FE70;FE70;0020 064B;0020 064B; # (ﹰ; ﹰ; ﹰ; ◌ً; ◌ً; ) ARABIC FATHATAN ISOLATED FORM
+FE71;FE71;FE71;0640 064B;0640 064B; # (ﹱ; ﹱ; ﹱ; ـ◌ً; ـ◌ً; ) ARABIC TATWEEL WITH FATHATAN ABOVE
+FE72;FE72;FE72;0020 064C;0020 064C; # (ﹲ; ﹲ; ﹲ; ◌ٌ; ◌ٌ; ) ARABIC DAMMATAN ISOLATED FORM
+FE74;FE74;FE74;0020 064D;0020 064D; # (ï¹´; ï¹´; ï¹´; â—ŒÙ; â—ŒÙ; ) ARABIC KASRATAN ISOLATED FORM
+FE76;FE76;FE76;0020 064E;0020 064E; # (ﹶ; ﹶ; ﹶ; ◌َ; ◌َ; ) ARABIC FATHA ISOLATED FORM
+FE77;FE77;FE77;0640 064E;0640 064E; # (ﹷ; ﹷ; ﹷ; ـ◌َ; ـ◌َ; ) ARABIC FATHA MEDIAL FORM
+FE78;FE78;FE78;0020 064F;0020 064F; # (ﹸ; ﹸ; ﹸ; â—ŒÙ; â—ŒÙ; ) ARABIC DAMMA ISOLATED FORM
+FE79;FE79;FE79;0640 064F;0640 064F; # (ï¹¹; ï¹¹; ï¹¹; ـ◌Ù; ـ◌Ù; ) ARABIC DAMMA MEDIAL FORM
+FE7A;FE7A;FE7A;0020 0650;0020 0650; # (ﹺ; ﹺ; ﹺ; â—ŒÙ; â—ŒÙ; ) ARABIC KASRA ISOLATED FORM
+FE7B;FE7B;FE7B;0640 0650;0640 0650; # (ï¹»; ï¹»; ï¹»; ـ◌Ù; ـ◌Ù; ) ARABIC KASRA MEDIAL FORM
+FE7C;FE7C;FE7C;0020 0651;0020 0651; # (ﹼ; ﹼ; ﹼ; ◌ّ; ◌ّ; ) ARABIC SHADDA ISOLATED FORM
+FE7D;FE7D;FE7D;0640 0651;0640 0651; # (ﹽ; ﹽ; ﹽ; ـ◌ّ; ـ◌ّ; ) ARABIC SHADDA MEDIAL FORM
+FE7E;FE7E;FE7E;0020 0652;0020 0652; # (ﹾ; ﹾ; ﹾ; ◌ْ; ◌ْ; ) ARABIC SUKUN ISOLATED FORM
+FE7F;FE7F;FE7F;0640 0652;0640 0652; # (ﹿ; ﹿ; ﹿ; ـ◌ْ; ـ◌ْ; ) ARABIC SUKUN MEDIAL FORM
+FE80;FE80;FE80;0621;0621; # (ﺀ; ﺀ; ﺀ; ء; ء; ) ARABIC LETTER HAMZA ISOLATED FORM
+FE81;FE81;FE81;0622;0627 0653; # (ïº; ïº; ïº; Ø¢; ا◌ٓ; ) ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+FE82;FE82;FE82;0622;0627 0653; # (ﺂ; ﺂ; ﺂ; آ; ا◌ٓ; ) ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+FE83;FE83;FE83;0623;0627 0654; # (ﺃ; ﺃ; ﺃ; أ; ا◌ٔ; ) ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+FE84;FE84;FE84;0623;0627 0654; # (ﺄ; ﺄ; ﺄ; أ; ا◌ٔ; ) ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+FE85;FE85;FE85;0624;0648 0654; # (ﺅ; ﺅ; ﺅ; ؤ; و◌ٔ; ) ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+FE86;FE86;FE86;0624;0648 0654; # (ﺆ; ﺆ; ﺆ; ؤ; و◌ٔ; ) ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
+FE87;FE87;FE87;0625;0627 0655; # (ﺇ; ﺇ; ﺇ; إ; ا◌ٕ; ) ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
+FE88;FE88;FE88;0625;0627 0655; # (ﺈ; ﺈ; ﺈ; إ; ا◌ٕ; ) ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
+FE89;FE89;FE89;0626;064A 0654; # (ﺉ; ﺉ; ﺉ; ئ; ي◌ٔ; ) ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+FE8A;FE8A;FE8A;0626;064A 0654; # (ﺊ; ﺊ; ﺊ; ئ; ي◌ٔ; ) ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+FE8B;FE8B;FE8B;0626;064A 0654; # (ﺋ; ﺋ; ﺋ; ئ; ي◌ٔ; ) ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+FE8C;FE8C;FE8C;0626;064A 0654; # (ﺌ; ﺌ; ﺌ; ئ; ي◌ٔ; ) ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+FE8D;FE8D;FE8D;0627;0627; # (ïº; ïº; ïº; ا; ا; ) ARABIC LETTER ALEF ISOLATED FORM
+FE8E;FE8E;FE8E;0627;0627; # (ﺎ; ﺎ; ﺎ; ا; ا; ) ARABIC LETTER ALEF FINAL FORM
+FE8F;FE8F;FE8F;0628;0628; # (ïº; ïº; ïº; ب; ب; ) ARABIC LETTER BEH ISOLATED FORM
+FE90;FE90;FE90;0628;0628; # (ïº; ïº; ïº; ب; ب; ) ARABIC LETTER BEH FINAL FORM
+FE91;FE91;FE91;0628;0628; # (ﺑ; ﺑ; ﺑ; ب; ب; ) ARABIC LETTER BEH INITIAL FORM
+FE92;FE92;FE92;0628;0628; # (ﺒ; ﺒ; ﺒ; ب; ب; ) ARABIC LETTER BEH MEDIAL FORM
+FE93;FE93;FE93;0629;0629; # (ﺓ; ﺓ; ﺓ; ة; ة; ) ARABIC LETTER TEH MARBUTA ISOLATED FORM
+FE94;FE94;FE94;0629;0629; # (ﺔ; ﺔ; ﺔ; ة; ة; ) ARABIC LETTER TEH MARBUTA FINAL FORM
+FE95;FE95;FE95;062A;062A; # (ﺕ; ﺕ; ﺕ; ت; ت; ) ARABIC LETTER TEH ISOLATED FORM
+FE96;FE96;FE96;062A;062A; # (ﺖ; ﺖ; ﺖ; ت; ت; ) ARABIC LETTER TEH FINAL FORM
+FE97;FE97;FE97;062A;062A; # (ﺗ; ﺗ; ﺗ; ت; ت; ) ARABIC LETTER TEH INITIAL FORM
+FE98;FE98;FE98;062A;062A; # (ﺘ; ﺘ; ﺘ; ت; ت; ) ARABIC LETTER TEH MEDIAL FORM
+FE99;FE99;FE99;062B;062B; # (ﺙ; ﺙ; ﺙ; ث; ث; ) ARABIC LETTER THEH ISOLATED FORM
+FE9A;FE9A;FE9A;062B;062B; # (ﺚ; ﺚ; ﺚ; ث; ث; ) ARABIC LETTER THEH FINAL FORM
+FE9B;FE9B;FE9B;062B;062B; # (ﺛ; ﺛ; ﺛ; ث; ث; ) ARABIC LETTER THEH INITIAL FORM
+FE9C;FE9C;FE9C;062B;062B; # (ﺜ; ﺜ; ﺜ; ث; ث; ) ARABIC LETTER THEH MEDIAL FORM
+FE9D;FE9D;FE9D;062C;062C; # (ïº; ïº; ïº; ج; ج; ) ARABIC LETTER JEEM ISOLATED FORM
+FE9E;FE9E;FE9E;062C;062C; # (ﺞ; ﺞ; ﺞ; ج; ج; ) ARABIC LETTER JEEM FINAL FORM
+FE9F;FE9F;FE9F;062C;062C; # (ﺟ; ﺟ; ﺟ; ج; ج; ) ARABIC LETTER JEEM INITIAL FORM
+FEA0;FEA0;FEA0;062C;062C; # (ﺠ; ﺠ; ﺠ; ج; ج; ) ARABIC LETTER JEEM MEDIAL FORM
+FEA1;FEA1;FEA1;062D;062D; # (ﺡ; ﺡ; ﺡ; ح; ح; ) ARABIC LETTER HAH ISOLATED FORM
+FEA2;FEA2;FEA2;062D;062D; # (ﺢ; ﺢ; ﺢ; ح; ح; ) ARABIC LETTER HAH FINAL FORM
+FEA3;FEA3;FEA3;062D;062D; # (ﺣ; ﺣ; ﺣ; ح; ح; ) ARABIC LETTER HAH INITIAL FORM
+FEA4;FEA4;FEA4;062D;062D; # (ﺤ; ﺤ; ﺤ; ح; ح; ) ARABIC LETTER HAH MEDIAL FORM
+FEA5;FEA5;FEA5;062E;062E; # (ﺥ; ﺥ; ﺥ; خ; خ; ) ARABIC LETTER KHAH ISOLATED FORM
+FEA6;FEA6;FEA6;062E;062E; # (ﺦ; ﺦ; ﺦ; خ; خ; ) ARABIC LETTER KHAH FINAL FORM
+FEA7;FEA7;FEA7;062E;062E; # (ﺧ; ﺧ; ﺧ; خ; خ; ) ARABIC LETTER KHAH INITIAL FORM
+FEA8;FEA8;FEA8;062E;062E; # (ﺨ; ﺨ; ﺨ; خ; خ; ) ARABIC LETTER KHAH MEDIAL FORM
+FEA9;FEA9;FEA9;062F;062F; # (ﺩ; ﺩ; ﺩ; د; د; ) ARABIC LETTER DAL ISOLATED FORM
+FEAA;FEAA;FEAA;062F;062F; # (ﺪ; ﺪ; ﺪ; د; د; ) ARABIC LETTER DAL FINAL FORM
+FEAB;FEAB;FEAB;0630;0630; # (ﺫ; ﺫ; ﺫ; ذ; ذ; ) ARABIC LETTER THAL ISOLATED FORM
+FEAC;FEAC;FEAC;0630;0630; # (ﺬ; ﺬ; ﺬ; ذ; ذ; ) ARABIC LETTER THAL FINAL FORM
+FEAD;FEAD;FEAD;0631;0631; # (ﺭ; ﺭ; ﺭ; ر; ر; ) ARABIC LETTER REH ISOLATED FORM
+FEAE;FEAE;FEAE;0631;0631; # (ﺮ; ﺮ; ﺮ; ر; ر; ) ARABIC LETTER REH FINAL FORM
+FEAF;FEAF;FEAF;0632;0632; # (ﺯ; ﺯ; ﺯ; ز; ز; ) ARABIC LETTER ZAIN ISOLATED FORM
+FEB0;FEB0;FEB0;0632;0632; # (ﺰ; ﺰ; ﺰ; ز; ز; ) ARABIC LETTER ZAIN FINAL FORM
+FEB1;FEB1;FEB1;0633;0633; # (ﺱ; ﺱ; ﺱ; س; س; ) ARABIC LETTER SEEN ISOLATED FORM
+FEB2;FEB2;FEB2;0633;0633; # (ﺲ; ﺲ; ﺲ; س; س; ) ARABIC LETTER SEEN FINAL FORM
+FEB3;FEB3;FEB3;0633;0633; # (ﺳ; ﺳ; ﺳ; س; س; ) ARABIC LETTER SEEN INITIAL FORM
+FEB4;FEB4;FEB4;0633;0633; # (ﺴ; ﺴ; ﺴ; س; س; ) ARABIC LETTER SEEN MEDIAL FORM
+FEB5;FEB5;FEB5;0634;0634; # (ﺵ; ﺵ; ﺵ; ش; ش; ) ARABIC LETTER SHEEN ISOLATED FORM
+FEB6;FEB6;FEB6;0634;0634; # (ﺶ; ﺶ; ﺶ; ش; ش; ) ARABIC LETTER SHEEN FINAL FORM
+FEB7;FEB7;FEB7;0634;0634; # (ﺷ; ﺷ; ﺷ; ش; ش; ) ARABIC LETTER SHEEN INITIAL FORM
+FEB8;FEB8;FEB8;0634;0634; # (ﺸ; ﺸ; ﺸ; ش; ش; ) ARABIC LETTER SHEEN MEDIAL FORM
+FEB9;FEB9;FEB9;0635;0635; # (ﺹ; ﺹ; ﺹ; ص; ص; ) ARABIC LETTER SAD ISOLATED FORM
+FEBA;FEBA;FEBA;0635;0635; # (ﺺ; ﺺ; ﺺ; ص; ص; ) ARABIC LETTER SAD FINAL FORM
+FEBB;FEBB;FEBB;0635;0635; # (ﺻ; ﺻ; ﺻ; ص; ص; ) ARABIC LETTER SAD INITIAL FORM
+FEBC;FEBC;FEBC;0635;0635; # (ﺼ; ﺼ; ﺼ; ص; ص; ) ARABIC LETTER SAD MEDIAL FORM
+FEBD;FEBD;FEBD;0636;0636; # (ﺽ; ﺽ; ﺽ; ض; ض; ) ARABIC LETTER DAD ISOLATED FORM
+FEBE;FEBE;FEBE;0636;0636; # (ﺾ; ﺾ; ﺾ; ض; ض; ) ARABIC LETTER DAD FINAL FORM
+FEBF;FEBF;FEBF;0636;0636; # (ﺿ; ﺿ; ﺿ; ض; ض; ) ARABIC LETTER DAD INITIAL FORM
+FEC0;FEC0;FEC0;0636;0636; # (ﻀ; ﻀ; ﻀ; ض; ض; ) ARABIC LETTER DAD MEDIAL FORM
+FEC1;FEC1;FEC1;0637;0637; # (ï»; ï»; ï»; Ø·; Ø·; ) ARABIC LETTER TAH ISOLATED FORM
+FEC2;FEC2;FEC2;0637;0637; # (ﻂ; ﻂ; ﻂ; ط; ط; ) ARABIC LETTER TAH FINAL FORM
+FEC3;FEC3;FEC3;0637;0637; # (ﻃ; ﻃ; ﻃ; ط; ط; ) ARABIC LETTER TAH INITIAL FORM
+FEC4;FEC4;FEC4;0637;0637; # (ﻄ; ﻄ; ﻄ; ط; ط; ) ARABIC LETTER TAH MEDIAL FORM
+FEC5;FEC5;FEC5;0638;0638; # (ﻅ; ﻅ; ﻅ; ظ; ظ; ) ARABIC LETTER ZAH ISOLATED FORM
+FEC6;FEC6;FEC6;0638;0638; # (ﻆ; ﻆ; ﻆ; ظ; ظ; ) ARABIC LETTER ZAH FINAL FORM
+FEC7;FEC7;FEC7;0638;0638; # (ﻇ; ﻇ; ﻇ; ظ; ظ; ) ARABIC LETTER ZAH INITIAL FORM
+FEC8;FEC8;FEC8;0638;0638; # (ﻈ; ﻈ; ﻈ; ظ; ظ; ) ARABIC LETTER ZAH MEDIAL FORM
+FEC9;FEC9;FEC9;0639;0639; # (ﻉ; ﻉ; ﻉ; ع; ع; ) ARABIC LETTER AIN ISOLATED FORM
+FECA;FECA;FECA;0639;0639; # (ﻊ; ﻊ; ﻊ; ع; ع; ) ARABIC LETTER AIN FINAL FORM
+FECB;FECB;FECB;0639;0639; # (ﻋ; ﻋ; ﻋ; ع; ع; ) ARABIC LETTER AIN INITIAL FORM
+FECC;FECC;FECC;0639;0639; # (ﻌ; ﻌ; ﻌ; ع; ع; ) ARABIC LETTER AIN MEDIAL FORM
+FECD;FECD;FECD;063A;063A; # (ï»; ï»; ï»; غ; غ; ) ARABIC LETTER GHAIN ISOLATED FORM
+FECE;FECE;FECE;063A;063A; # (ﻎ; ﻎ; ﻎ; غ; غ; ) ARABIC LETTER GHAIN FINAL FORM
+FECF;FECF;FECF;063A;063A; # (ï»; ï»; ï»; غ; غ; ) ARABIC LETTER GHAIN INITIAL FORM
+FED0;FED0;FED0;063A;063A; # (ï»; ï»; ï»; غ; غ; ) ARABIC LETTER GHAIN MEDIAL FORM
+FED1;FED1;FED1;0641;0641; # (ﻑ; ﻑ; ﻑ; Ù; Ù; ) ARABIC LETTER FEH ISOLATED FORM
+FED2;FED2;FED2;0641;0641; # (ï»’; ï»’; ï»’; Ù; Ù; ) ARABIC LETTER FEH FINAL FORM
+FED3;FED3;FED3;0641;0641; # (ﻓ; ﻓ; ﻓ; Ù; Ù; ) ARABIC LETTER FEH INITIAL FORM
+FED4;FED4;FED4;0641;0641; # (ï»”; ï»”; ï»”; Ù; Ù; ) ARABIC LETTER FEH MEDIAL FORM
+FED5;FED5;FED5;0642;0642; # (ﻕ; ﻕ; ﻕ; ق; ق; ) ARABIC LETTER QAF ISOLATED FORM
+FED6;FED6;FED6;0642;0642; # (ï»–; ï»–; ï»–; Ù‚; Ù‚; ) ARABIC LETTER QAF FINAL FORM
+FED7;FED7;FED7;0642;0642; # (ï»—; ï»—; ï»—; Ù‚; Ù‚; ) ARABIC LETTER QAF INITIAL FORM
+FED8;FED8;FED8;0642;0642; # (ﻘ; ﻘ; ﻘ; ق; ق; ) ARABIC LETTER QAF MEDIAL FORM
+FED9;FED9;FED9;0643;0643; # (ï»™; ï»™; ï»™; Ùƒ; Ùƒ; ) ARABIC LETTER KAF ISOLATED FORM
+FEDA;FEDA;FEDA;0643;0643; # (ﻚ; ﻚ; ﻚ; ك; ك; ) ARABIC LETTER KAF FINAL FORM
+FEDB;FEDB;FEDB;0643;0643; # (ï»›; ï»›; ï»›; Ùƒ; Ùƒ; ) ARABIC LETTER KAF INITIAL FORM
+FEDC;FEDC;FEDC;0643;0643; # (ﻜ; ﻜ; ﻜ; ك; ك; ) ARABIC LETTER KAF MEDIAL FORM
+FEDD;FEDD;FEDD;0644;0644; # (ï»; ï»; ï»; Ù„; Ù„; ) ARABIC LETTER LAM ISOLATED FORM
+FEDE;FEDE;FEDE;0644;0644; # (ﻞ; ﻞ; ﻞ; ل; ل; ) ARABIC LETTER LAM FINAL FORM
+FEDF;FEDF;FEDF;0644;0644; # (ﻟ; ﻟ; ﻟ; ل; ل; ) ARABIC LETTER LAM INITIAL FORM
+FEE0;FEE0;FEE0;0644;0644; # (ï» ; ï» ; ï» ; Ù„; Ù„; ) ARABIC LETTER LAM MEDIAL FORM
+FEE1;FEE1;FEE1;0645;0645; # (ﻡ; ﻡ; ﻡ; م; م; ) ARABIC LETTER MEEM ISOLATED FORM
+FEE2;FEE2;FEE2;0645;0645; # (ﻢ; ﻢ; ﻢ; م; م; ) ARABIC LETTER MEEM FINAL FORM
+FEE3;FEE3;FEE3;0645;0645; # (ﻣ; ﻣ; ﻣ; م; م; ) ARABIC LETTER MEEM INITIAL FORM
+FEE4;FEE4;FEE4;0645;0645; # (ﻤ; ﻤ; ﻤ; م; م; ) ARABIC LETTER MEEM MEDIAL FORM
+FEE5;FEE5;FEE5;0646;0646; # (ﻥ; ﻥ; ﻥ; ن; ن; ) ARABIC LETTER NOON ISOLATED FORM
+FEE6;FEE6;FEE6;0646;0646; # (ﻦ; ﻦ; ﻦ; ن; ن; ) ARABIC LETTER NOON FINAL FORM
+FEE7;FEE7;FEE7;0646;0646; # (ﻧ; ﻧ; ﻧ; ن; ن; ) ARABIC LETTER NOON INITIAL FORM
+FEE8;FEE8;FEE8;0646;0646; # (ﻨ; ﻨ; ﻨ; ن; ن; ) ARABIC LETTER NOON MEDIAL FORM
+FEE9;FEE9;FEE9;0647;0647; # (ﻩ; ﻩ; ﻩ; ه; ه; ) ARABIC LETTER HEH ISOLATED FORM
+FEEA;FEEA;FEEA;0647;0647; # (ﻪ; ﻪ; ﻪ; ه; ه; ) ARABIC LETTER HEH FINAL FORM
+FEEB;FEEB;FEEB;0647;0647; # (ﻫ; ﻫ; ﻫ; ه; ه; ) ARABIC LETTER HEH INITIAL FORM
+FEEC;FEEC;FEEC;0647;0647; # (ﻬ; ﻬ; ﻬ; ه; ه; ) ARABIC LETTER HEH MEDIAL FORM
+FEED;FEED;FEED;0648;0648; # (ï»­; ï»­; ï»­; Ùˆ; Ùˆ; ) ARABIC LETTER WAW ISOLATED FORM
+FEEE;FEEE;FEEE;0648;0648; # (ï»®; ï»®; ï»®; Ùˆ; Ùˆ; ) ARABIC LETTER WAW FINAL FORM
+FEEF;FEEF;FEEF;0649;0649; # (ﻯ; ﻯ; ﻯ; ى; ى; ) ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+FEF0;FEF0;FEF0;0649;0649; # (ï»°; ï»°; ï»°; Ù‰; Ù‰; ) ARABIC LETTER ALEF MAKSURA FINAL FORM
+FEF1;FEF1;FEF1;064A;064A; # (ï»±; ï»±; ï»±; ÙŠ; ÙŠ; ) ARABIC LETTER YEH ISOLATED FORM
+FEF2;FEF2;FEF2;064A;064A; # (ﻲ; ﻲ; ﻲ; ي; ي; ) ARABIC LETTER YEH FINAL FORM
+FEF3;FEF3;FEF3;064A;064A; # (ﻳ; ﻳ; ﻳ; ي; ي; ) ARABIC LETTER YEH INITIAL FORM
+FEF4;FEF4;FEF4;064A;064A; # (ï»´; ï»´; ï»´; ÙŠ; ÙŠ; ) ARABIC LETTER YEH MEDIAL FORM
+FEF5;FEF5;FEF5;0644 0622;0644 0627 0653; # (ﻵ; ﻵ; ﻵ; لآ; لا◌ٓ; ) ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+FEF6;FEF6;FEF6;0644 0622;0644 0627 0653; # (ﻶ; ﻶ; ﻶ; لآ; لا◌ٓ; ) ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+FEF7;FEF7;FEF7;0644 0623;0644 0627 0654; # (ﻷ; ﻷ; ﻷ; لأ; لا◌ٔ; ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+FEF8;FEF8;FEF8;0644 0623;0644 0627 0654; # (ﻸ; ﻸ; ﻸ; لأ; لا◌ٔ; ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+FEF9;FEF9;FEF9;0644 0625;0644 0627 0655; # (ﻹ; ﻹ; ﻹ; لإ; لا◌ٕ; ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+FEFA;FEFA;FEFA;0644 0625;0644 0627 0655; # (ﻺ; ﻺ; ﻺ; لإ; لا◌ٕ; ) ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
+FEFB;FEFB;FEFB;0644 0627;0644 0627; # (ﻻ; ﻻ; ﻻ; لا; لا; ) ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+FEFC;FEFC;FEFC;0644 0627;0644 0627; # (ﻼ; ﻼ; ﻼ; لا; لا; ) ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FF01;FF01;FF01;0021;0021; # (ï¼; ï¼; ï¼; !; !; ) FULLWIDTH EXCLAMATION MARK
+FF02;FF02;FF02;0022;0022; # ("; "; "; "; "; ) FULLWIDTH QUOTATION MARK
+FF03;FF03;FF03;0023;0023; # (#; #; #; #; #; ) FULLWIDTH NUMBER SIGN
+FF04;FF04;FF04;0024;0024; # ($; $; $; $; $; ) FULLWIDTH DOLLAR SIGN
+FF05;FF05;FF05;0025;0025; # (ï¼…; ï¼…; ï¼…; %; %; ) FULLWIDTH PERCENT SIGN
+FF06;FF06;FF06;0026;0026; # (&; &; &; &; &; ) FULLWIDTH AMPERSAND
+FF07;FF07;FF07;0027;0027; # ('; '; '; '; '; ) FULLWIDTH APOSTROPHE
+FF08;FF08;FF08;0028;0028; # ((; (; (; (; (; ) FULLWIDTH LEFT PARENTHESIS
+FF09;FF09;FF09;0029;0029; # (); ); ); ); ); ) FULLWIDTH RIGHT PARENTHESIS
+FF0A;FF0A;FF0A;002A;002A; # (*; *; *; *; *; ) FULLWIDTH ASTERISK
+FF0B;FF0B;FF0B;002B;002B; # (+; +; +; +; +; ) FULLWIDTH PLUS SIGN
+FF0C;FF0C;FF0C;002C;002C; # (,; ,; ,; ,; ,; ) FULLWIDTH COMMA
+FF0D;FF0D;FF0D;002D;002D; # (ï¼; ï¼; ï¼; -; -; ) FULLWIDTH HYPHEN-MINUS
+FF0E;FF0E;FF0E;002E;002E; # (.; .; .; .; .; ) FULLWIDTH FULL STOP
+FF0F;FF0F;FF0F;002F;002F; # (ï¼; ï¼; ï¼; /; /; ) FULLWIDTH SOLIDUS
+FF10;FF10;FF10;0030;0030; # (ï¼; ï¼; ï¼; 0; 0; ) FULLWIDTH DIGIT ZERO
+FF11;FF11;FF11;0031;0031; # (1; 1; 1; 1; 1; ) FULLWIDTH DIGIT ONE
+FF12;FF12;FF12;0032;0032; # (ï¼’; ï¼’; ï¼’; 2; 2; ) FULLWIDTH DIGIT TWO
+FF13;FF13;FF13;0033;0033; # (3; 3; 3; 3; 3; ) FULLWIDTH DIGIT THREE
+FF14;FF14;FF14;0034;0034; # (ï¼”; ï¼”; ï¼”; 4; 4; ) FULLWIDTH DIGIT FOUR
+FF15;FF15;FF15;0035;0035; # (5; 5; 5; 5; 5; ) FULLWIDTH DIGIT FIVE
+FF16;FF16;FF16;0036;0036; # (ï¼–; ï¼–; ï¼–; 6; 6; ) FULLWIDTH DIGIT SIX
+FF17;FF17;FF17;0037;0037; # (ï¼—; ï¼—; ï¼—; 7; 7; ) FULLWIDTH DIGIT SEVEN
+FF18;FF18;FF18;0038;0038; # (8; 8; 8; 8; 8; ) FULLWIDTH DIGIT EIGHT
+FF19;FF19;FF19;0039;0039; # (ï¼™; ï¼™; ï¼™; 9; 9; ) FULLWIDTH DIGIT NINE
+FF1A;FF1A;FF1A;003A;003A; # (:; :; :; :; :; ) FULLWIDTH COLON
+FF1B;FF1B;FF1B;003B;003B; # (ï¼›; ï¼›; ï¼›; ;; ;; ) FULLWIDTH SEMICOLON
+FF1C;FF1C;FF1C;003C;003C; # (<; <; <; <; <; ) FULLWIDTH LESS-THAN SIGN
+FF1D;FF1D;FF1D;003D;003D; # (ï¼; ï¼; ï¼; =; =; ) FULLWIDTH EQUALS SIGN
+FF1E;FF1E;FF1E;003E;003E; # (>; >; >; >; >; ) FULLWIDTH GREATER-THAN SIGN
+FF1F;FF1F;FF1F;003F;003F; # (?; ?; ?; ?; ?; ) FULLWIDTH QUESTION MARK
+FF20;FF20;FF20;0040;0040; # (ï¼ ; ï¼ ; ï¼ ; @; @; ) FULLWIDTH COMMERCIAL AT
+FF21;FF21;FF21;0041;0041; # (A; A; A; A; A; ) FULLWIDTH LATIN CAPITAL LETTER A
+FF22;FF22;FF22;0042;0042; # (ï¼¢; ï¼¢; ï¼¢; B; B; ) FULLWIDTH LATIN CAPITAL LETTER B
+FF23;FF23;FF23;0043;0043; # (ï¼£; ï¼£; ï¼£; C; C; ) FULLWIDTH LATIN CAPITAL LETTER C
+FF24;FF24;FF24;0044;0044; # (D; D; D; D; D; ) FULLWIDTH LATIN CAPITAL LETTER D
+FF25;FF25;FF25;0045;0045; # (ï¼¥; ï¼¥; ï¼¥; E; E; ) FULLWIDTH LATIN CAPITAL LETTER E
+FF26;FF26;FF26;0046;0046; # (F; F; F; F; F; ) FULLWIDTH LATIN CAPITAL LETTER F
+FF27;FF27;FF27;0047;0047; # (G; G; G; G; G; ) FULLWIDTH LATIN CAPITAL LETTER G
+FF28;FF28;FF28;0048;0048; # (H; H; H; H; H; ) FULLWIDTH LATIN CAPITAL LETTER H
+FF29;FF29;FF29;0049;0049; # (I; I; I; I; I; ) FULLWIDTH LATIN CAPITAL LETTER I
+FF2A;FF2A;FF2A;004A;004A; # (J; J; J; J; J; ) FULLWIDTH LATIN CAPITAL LETTER J
+FF2B;FF2B;FF2B;004B;004B; # (K; K; K; K; K; ) FULLWIDTH LATIN CAPITAL LETTER K
+FF2C;FF2C;FF2C;004C;004C; # (L; L; L; L; L; ) FULLWIDTH LATIN CAPITAL LETTER L
+FF2D;FF2D;FF2D;004D;004D; # (ï¼­; ï¼­; ï¼­; M; M; ) FULLWIDTH LATIN CAPITAL LETTER M
+FF2E;FF2E;FF2E;004E;004E; # (ï¼®; ï¼®; ï¼®; N; N; ) FULLWIDTH LATIN CAPITAL LETTER N
+FF2F;FF2F;FF2F;004F;004F; # (O; O; O; O; O; ) FULLWIDTH LATIN CAPITAL LETTER O
+FF30;FF30;FF30;0050;0050; # (ï¼°; ï¼°; ï¼°; P; P; ) FULLWIDTH LATIN CAPITAL LETTER P
+FF31;FF31;FF31;0051;0051; # (ï¼±; ï¼±; ï¼±; Q; Q; ) FULLWIDTH LATIN CAPITAL LETTER Q
+FF32;FF32;FF32;0052;0052; # (ï¼²; ï¼²; ï¼²; R; R; ) FULLWIDTH LATIN CAPITAL LETTER R
+FF33;FF33;FF33;0053;0053; # (ï¼³; ï¼³; ï¼³; S; S; ) FULLWIDTH LATIN CAPITAL LETTER S
+FF34;FF34;FF34;0054;0054; # (ï¼´; ï¼´; ï¼´; T; T; ) FULLWIDTH LATIN CAPITAL LETTER T
+FF35;FF35;FF35;0055;0055; # (ï¼µ; ï¼µ; ï¼µ; U; U; ) FULLWIDTH LATIN CAPITAL LETTER U
+FF36;FF36;FF36;0056;0056; # (V; V; V; V; V; ) FULLWIDTH LATIN CAPITAL LETTER V
+FF37;FF37;FF37;0057;0057; # (ï¼·; ï¼·; ï¼·; W; W; ) FULLWIDTH LATIN CAPITAL LETTER W
+FF38;FF38;FF38;0058;0058; # (X; X; X; X; X; ) FULLWIDTH LATIN CAPITAL LETTER X
+FF39;FF39;FF39;0059;0059; # (ï¼¹; ï¼¹; ï¼¹; Y; Y; ) FULLWIDTH LATIN CAPITAL LETTER Y
+FF3A;FF3A;FF3A;005A;005A; # (Z; Z; Z; Z; Z; ) FULLWIDTH LATIN CAPITAL LETTER Z
+FF3B;FF3B;FF3B;005B;005B; # (ï¼»; ï¼»; ï¼»; [; [; ) FULLWIDTH LEFT SQUARE BRACKET
+FF3C;FF3C;FF3C;005C;005C; # (ï¼¼; ï¼¼; ï¼¼; \; \; ) FULLWIDTH REVERSE SOLIDUS
+FF3D;FF3D;FF3D;005D;005D; # (ï¼½; ï¼½; ï¼½; ]; ]; ) FULLWIDTH RIGHT SQUARE BRACKET
+FF3E;FF3E;FF3E;005E;005E; # (ï¼¾; ï¼¾; ï¼¾; ^; ^; ) FULLWIDTH CIRCUMFLEX ACCENT
+FF3F;FF3F;FF3F;005F;005F; # (_; _; _; _; _; ) FULLWIDTH LOW LINE
+FF40;FF40;FF40;0060;0060; # (ï½€; ï½€; ï½€; `; `; ) FULLWIDTH GRAVE ACCENT
+FF41;FF41;FF41;0061;0061; # (ï½; ï½; ï½; a; a; ) FULLWIDTH LATIN SMALL LETTER A
+FF42;FF42;FF42;0062;0062; # (b; b; b; b; b; ) FULLWIDTH LATIN SMALL LETTER B
+FF43;FF43;FF43;0063;0063; # (c; c; c; c; c; ) FULLWIDTH LATIN SMALL LETTER C
+FF44;FF44;FF44;0064;0064; # (d; d; d; d; d; ) FULLWIDTH LATIN SMALL LETTER D
+FF45;FF45;FF45;0065;0065; # (ï½…; ï½…; ï½…; e; e; ) FULLWIDTH LATIN SMALL LETTER E
+FF46;FF46;FF46;0066;0066; # (f; f; f; f; f; ) FULLWIDTH LATIN SMALL LETTER F
+FF47;FF47;FF47;0067;0067; # (g; g; g; g; g; ) FULLWIDTH LATIN SMALL LETTER G
+FF48;FF48;FF48;0068;0068; # (h; h; h; h; h; ) FULLWIDTH LATIN SMALL LETTER H
+FF49;FF49;FF49;0069;0069; # (i; i; i; i; i; ) FULLWIDTH LATIN SMALL LETTER I
+FF4A;FF4A;FF4A;006A;006A; # (j; j; j; j; j; ) FULLWIDTH LATIN SMALL LETTER J
+FF4B;FF4B;FF4B;006B;006B; # (k; k; k; k; k; ) FULLWIDTH LATIN SMALL LETTER K
+FF4C;FF4C;FF4C;006C;006C; # (l; l; l; l; l; ) FULLWIDTH LATIN SMALL LETTER L
+FF4D;FF4D;FF4D;006D;006D; # (ï½; ï½; ï½; m; m; ) FULLWIDTH LATIN SMALL LETTER M
+FF4E;FF4E;FF4E;006E;006E; # (n; n; n; n; n; ) FULLWIDTH LATIN SMALL LETTER N
+FF4F;FF4F;FF4F;006F;006F; # (ï½; ï½; ï½; o; o; ) FULLWIDTH LATIN SMALL LETTER O
+FF50;FF50;FF50;0070;0070; # (ï½; ï½; ï½; p; p; ) FULLWIDTH LATIN SMALL LETTER P
+FF51;FF51;FF51;0071;0071; # (q; q; q; q; q; ) FULLWIDTH LATIN SMALL LETTER Q
+FF52;FF52;FF52;0072;0072; # (ï½’; ï½’; ï½’; r; r; ) FULLWIDTH LATIN SMALL LETTER R
+FF53;FF53;FF53;0073;0073; # (s; s; s; s; s; ) FULLWIDTH LATIN SMALL LETTER S
+FF54;FF54;FF54;0074;0074; # (ï½”; ï½”; ï½”; t; t; ) FULLWIDTH LATIN SMALL LETTER T
+FF55;FF55;FF55;0075;0075; # (u; u; u; u; u; ) FULLWIDTH LATIN SMALL LETTER U
+FF56;FF56;FF56;0076;0076; # (ï½–; ï½–; ï½–; v; v; ) FULLWIDTH LATIN SMALL LETTER V
+FF57;FF57;FF57;0077;0077; # (ï½—; ï½—; ï½—; w; w; ) FULLWIDTH LATIN SMALL LETTER W
+FF58;FF58;FF58;0078;0078; # (x; x; x; x; x; ) FULLWIDTH LATIN SMALL LETTER X
+FF59;FF59;FF59;0079;0079; # (ï½™; ï½™; ï½™; y; y; ) FULLWIDTH LATIN SMALL LETTER Y
+FF5A;FF5A;FF5A;007A;007A; # (z; z; z; z; z; ) FULLWIDTH LATIN SMALL LETTER Z
+FF5B;FF5B;FF5B;007B;007B; # (ï½›; ï½›; ï½›; {; {; ) FULLWIDTH LEFT CURLY BRACKET
+FF5C;FF5C;FF5C;007C;007C; # (|; |; |; |; |; ) FULLWIDTH VERTICAL LINE
+FF5D;FF5D;FF5D;007D;007D; # (ï½; ï½; ï½; }; }; ) FULLWIDTH RIGHT CURLY BRACKET
+FF5E;FF5E;FF5E;007E;007E; # (~; ~; ~; ~; ~; ) FULLWIDTH TILDE
+FF5F;FF5F;FF5F;2985;2985; # (⦅; ⦅; ⦅; ⦅; ⦅; ) FULLWIDTH LEFT WHITE PARENTHESIS
+FF60;FF60;FF60;2986;2986; # (⦆; ⦆; ⦆; ⦆; ⦆; ) FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61;FF61;FF61;3002;3002; # (。; 。; 。; 。; 。; ) HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62;FF62;FF62;300C;300C; # (「; 「; 「; 「; 「; ) HALFWIDTH LEFT CORNER BRACKET
+FF63;FF63;FF63;300D;300D; # (ï½£; ï½£; ï½£; ã€; ã€; ) HALFWIDTH RIGHT CORNER BRACKET
+FF64;FF64;FF64;3001;3001; # (、; 、; 、; ã€; ã€; ) HALFWIDTH IDEOGRAPHIC COMMA
+FF65;FF65;FF65;30FB;30FB; # (・; ・; ・; ・; ・; ) HALFWIDTH KATAKANA MIDDLE DOT
+FF66;FF66;FF66;30F2;30F2; # (ヲ; ヲ; ヲ; ヲ; ヲ; ) HALFWIDTH KATAKANA LETTER WO
+FF67;FF67;FF67;30A1;30A1; # (ァ; ァ; ァ; ァ; ァ; ) HALFWIDTH KATAKANA LETTER SMALL A
+FF68;FF68;FF68;30A3;30A3; # (ィ; ィ; ィ; ィ; ィ; ) HALFWIDTH KATAKANA LETTER SMALL I
+FF69;FF69;FF69;30A5;30A5; # (ゥ; ゥ; ゥ; ゥ; ゥ; ) HALFWIDTH KATAKANA LETTER SMALL U
+FF6A;FF6A;FF6A;30A7;30A7; # (ェ; ェ; ェ; ェ; ェ; ) HALFWIDTH KATAKANA LETTER SMALL E
+FF6B;FF6B;FF6B;30A9;30A9; # (ォ; ォ; ォ; ォ; ォ; ) HALFWIDTH KATAKANA LETTER SMALL O
+FF6C;FF6C;FF6C;30E3;30E3; # (ャ; ャ; ャ; ャ; ャ; ) HALFWIDTH KATAKANA LETTER SMALL YA
+FF6D;FF6D;FF6D;30E5;30E5; # (ュ; ュ; ュ; ュ; ュ; ) HALFWIDTH KATAKANA LETTER SMALL YU
+FF6E;FF6E;FF6E;30E7;30E7; # (ョ; ョ; ョ; ョ; ョ; ) HALFWIDTH KATAKANA LETTER SMALL YO
+FF6F;FF6F;FF6F;30C3;30C3; # (ッ; ッ; ッ; ッ; ッ; ) HALFWIDTH KATAKANA LETTER SMALL TU
+FF70;FF70;FF70;30FC;30FC; # (ー; ー; ー; ー; ー; ) HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71;FF71;FF71;30A2;30A2; # (ï½±; ï½±; ï½±; ã‚¢; ã‚¢; ) HALFWIDTH KATAKANA LETTER A
+FF72;FF72;FF72;30A4;30A4; # (イ; イ; イ; イ; イ; ) HALFWIDTH KATAKANA LETTER I
+FF73;FF73;FF73;30A6;30A6; # (ウ; ウ; ウ; ウ; ウ; ) HALFWIDTH KATAKANA LETTER U
+FF74;FF74;FF74;30A8;30A8; # (エ; エ; エ; エ; エ; ) HALFWIDTH KATAKANA LETTER E
+FF75;FF75;FF75;30AA;30AA; # (オ; オ; オ; オ; オ; ) HALFWIDTH KATAKANA LETTER O
+FF76;FF76;FF76;30AB;30AB; # (カ; カ; カ; カ; カ; ) HALFWIDTH KATAKANA LETTER KA
+FF77;FF77;FF77;30AD;30AD; # (ï½·; ï½·; ï½·; ã‚­; ã‚­; ) HALFWIDTH KATAKANA LETTER KI
+FF78;FF78;FF78;30AF;30AF; # (ク; ク; ク; ク; ク; ) HALFWIDTH KATAKANA LETTER KU
+FF79;FF79;FF79;30B1;30B1; # (ケ; ケ; ケ; ケ; ケ; ) HALFWIDTH KATAKANA LETTER KE
+FF7A;FF7A;FF7A;30B3;30B3; # (コ; コ; コ; コ; コ; ) HALFWIDTH KATAKANA LETTER KO
+FF7B;FF7B;FF7B;30B5;30B5; # (サ; サ; サ; サ; サ; ) HALFWIDTH KATAKANA LETTER SA
+FF7C;FF7C;FF7C;30B7;30B7; # (ï½¼; ï½¼; ï½¼; ã‚·; ã‚·; ) HALFWIDTH KATAKANA LETTER SI
+FF7D;FF7D;FF7D;30B9;30B9; # (ス; ス; ス; ス; ス; ) HALFWIDTH KATAKANA LETTER SU
+FF7E;FF7E;FF7E;30BB;30BB; # (ï½¾; ï½¾; ï½¾; ã‚»; ã‚»; ) HALFWIDTH KATAKANA LETTER SE
+FF7F;FF7F;FF7F;30BD;30BD; # (ソ; ソ; ソ; ソ; ソ; ) HALFWIDTH KATAKANA LETTER SO
+FF80;FF80;FF80;30BF;30BF; # (ï¾€; ï¾€; ï¾€; ã‚¿; ã‚¿; ) HALFWIDTH KATAKANA LETTER TA
+FF81;FF81;FF81;30C1;30C1; # (ï¾; ï¾; ï¾; ãƒ; ãƒ; ) HALFWIDTH KATAKANA LETTER TI
+FF82;FF82;FF82;30C4;30C4; # (ツ; ツ; ツ; ツ; ツ; ) HALFWIDTH KATAKANA LETTER TU
+FF83;FF83;FF83;30C6;30C6; # (テ; テ; テ; テ; テ; ) HALFWIDTH KATAKANA LETTER TE
+FF84;FF84;FF84;30C8;30C8; # (ト; ト; ト; ト; ト; ) HALFWIDTH KATAKANA LETTER TO
+FF85;FF85;FF85;30CA;30CA; # (ナ; ナ; ナ; ナ; ナ; ) HALFWIDTH KATAKANA LETTER NA
+FF86;FF86;FF86;30CB;30CB; # (ニ; ニ; ニ; ニ; ニ; ) HALFWIDTH KATAKANA LETTER NI
+FF87;FF87;FF87;30CC;30CC; # (ヌ; ヌ; ヌ; ヌ; ヌ; ) HALFWIDTH KATAKANA LETTER NU
+FF88;FF88;FF88;30CD;30CD; # (ネ; ネ; ネ; ãƒ; ãƒ; ) HALFWIDTH KATAKANA LETTER NE
+FF89;FF89;FF89;30CE;30CE; # (ノ; ノ; ノ; ノ; ノ; ) HALFWIDTH KATAKANA LETTER NO
+FF8A;FF8A;FF8A;30CF;30CF; # (ハ; ハ; ハ; ãƒ; ãƒ; ) HALFWIDTH KATAKANA LETTER HA
+FF8B;FF8B;FF8B;30D2;30D2; # (ヒ; ヒ; ヒ; ヒ; ヒ; ) HALFWIDTH KATAKANA LETTER HI
+FF8C;FF8C;FF8C;30D5;30D5; # (フ; フ; フ; フ; フ; ) HALFWIDTH KATAKANA LETTER HU
+FF8D;FF8D;FF8D;30D8;30D8; # (ï¾; ï¾; ï¾; ヘ; ヘ; ) HALFWIDTH KATAKANA LETTER HE
+FF8E;FF8E;FF8E;30DB;30DB; # (ホ; ホ; ホ; ホ; ホ; ) HALFWIDTH KATAKANA LETTER HO
+FF8F;FF8F;FF8F;30DE;30DE; # (ï¾; ï¾; ï¾; マ; マ; ) HALFWIDTH KATAKANA LETTER MA
+FF90;FF90;FF90;30DF;30DF; # (ï¾; ï¾; ï¾; ミ; ミ; ) HALFWIDTH KATAKANA LETTER MI
+FF91;FF91;FF91;30E0;30E0; # (ム; ム; ム; ム; ム; ) HALFWIDTH KATAKANA LETTER MU
+FF92;FF92;FF92;30E1;30E1; # (メ; メ; メ; メ; メ; ) HALFWIDTH KATAKANA LETTER ME
+FF93;FF93;FF93;30E2;30E2; # (モ; モ; モ; モ; モ; ) HALFWIDTH KATAKANA LETTER MO
+FF94;FF94;FF94;30E4;30E4; # (ヤ; ヤ; ヤ; ヤ; ヤ; ) HALFWIDTH KATAKANA LETTER YA
+FF95;FF95;FF95;30E6;30E6; # (ユ; ユ; ユ; ユ; ユ; ) HALFWIDTH KATAKANA LETTER YU
+FF96;FF96;FF96;30E8;30E8; # (ヨ; ヨ; ヨ; ヨ; ヨ; ) HALFWIDTH KATAKANA LETTER YO
+FF97;FF97;FF97;30E9;30E9; # (ラ; ラ; ラ; ラ; ラ; ) HALFWIDTH KATAKANA LETTER RA
+FF98;FF98;FF98;30EA;30EA; # (リ; リ; リ; リ; リ; ) HALFWIDTH KATAKANA LETTER RI
+FF99;FF99;FF99;30EB;30EB; # (ル; ル; ル; ル; ル; ) HALFWIDTH KATAKANA LETTER RU
+FF9A;FF9A;FF9A;30EC;30EC; # (レ; レ; レ; レ; レ; ) HALFWIDTH KATAKANA LETTER RE
+FF9B;FF9B;FF9B;30ED;30ED; # (ロ; ロ; ロ; ロ; ロ; ) HALFWIDTH KATAKANA LETTER RO
+FF9C;FF9C;FF9C;30EF;30EF; # (ワ; ワ; ワ; ワ; ワ; ) HALFWIDTH KATAKANA LETTER WA
+FF9D;FF9D;FF9D;30F3;30F3; # (ï¾; ï¾; ï¾; ン; ン; ) HALFWIDTH KATAKANA LETTER N
+FF9E;FF9E;FF9E;3099;3099; # (゙; ゙; ゙; ◌゙; ◌゙; ) HALFWIDTH KATAKANA VOICED SOUND MARK
+FF9F;FF9F;FF9F;309A;309A; # (゚; ゚; ゚; ◌゚; ◌゚; ) HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0;FFA0;FFA0;1160;1160; # (ï¾ ; ï¾ ; ï¾ ; á… ; á… ; ) HALFWIDTH HANGUL FILLER
+FFA1;FFA1;FFA1;1100;1100; # (ᄀ; ᄀ; ᄀ; ᄀ; ᄀ; ) HALFWIDTH HANGUL LETTER KIYEOK
+FFA2;FFA2;FFA2;1101;1101; # (ï¾¢; ï¾¢; ï¾¢; á„; á„; ) HALFWIDTH HANGUL LETTER SSANGKIYEOK
+FFA3;FFA3;FFA3;11AA;11AA; # (ᆪ; ᆪ; ᆪ; ᆪ; ᆪ; ) HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+FFA4;FFA4;FFA4;1102;1102; # (ᄂ; ᄂ; ᄂ; ᄂ; ᄂ; ) HALFWIDTH HANGUL LETTER NIEUN
+FFA5;FFA5;FFA5;11AC;11AC; # (ᆬ; ᆬ; ᆬ; ᆬ; ᆬ; ) HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+FFA6;FFA6;FFA6;11AD;11AD; # (ᆭ; ᆭ; ᆭ; ᆭ; ᆭ; ) HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+FFA7;FFA7;FFA7;1103;1103; # (ᄃ; ᄃ; ᄃ; ᄃ; ᄃ; ) HALFWIDTH HANGUL LETTER TIKEUT
+FFA8;FFA8;FFA8;1104;1104; # (ᄄ; ᄄ; ᄄ; ᄄ; ᄄ; ) HALFWIDTH HANGUL LETTER SSANGTIKEUT
+FFA9;FFA9;FFA9;1105;1105; # (ᄅ; ᄅ; ᄅ; ᄅ; ᄅ; ) HALFWIDTH HANGUL LETTER RIEUL
+FFAA;FFAA;FFAA;11B0;11B0; # (ᆰ; ᆰ; ᆰ; ᆰ; ᆰ; ) HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+FFAB;FFAB;FFAB;11B1;11B1; # (ᆱ; ᆱ; ᆱ; ᆱ; ᆱ; ) HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+FFAC;FFAC;FFAC;11B2;11B2; # (ᆲ; ᆲ; ᆲ; ᆲ; ᆲ; ) HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+FFAD;FFAD;FFAD;11B3;11B3; # (ᆳ; ᆳ; ᆳ; ᆳ; ᆳ; ) HALFWIDTH HANGUL LETTER RIEUL-SIOS
+FFAE;FFAE;FFAE;11B4;11B4; # (ᆴ; ᆴ; ᆴ; ᆴ; ᆴ; ) HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+FFAF;FFAF;FFAF;11B5;11B5; # (ᆵ; ᆵ; ᆵ; ᆵ; ᆵ; ) HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+FFB0;FFB0;FFB0;111A;111A; # (ï¾°; ï¾°; ï¾°; á„š; á„š; ) HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+FFB1;FFB1;FFB1;1106;1106; # (ᄆ; ᄆ; ᄆ; ᄆ; ᄆ; ) HALFWIDTH HANGUL LETTER MIEUM
+FFB2;FFB2;FFB2;1107;1107; # (ᄇ; ᄇ; ᄇ; ᄇ; ᄇ; ) HALFWIDTH HANGUL LETTER PIEUP
+FFB3;FFB3;FFB3;1108;1108; # (ᄈ; ᄈ; ᄈ; ᄈ; ᄈ; ) HALFWIDTH HANGUL LETTER SSANGPIEUP
+FFB4;FFB4;FFB4;1121;1121; # (ï¾´; ï¾´; ï¾´; á„¡; á„¡; ) HALFWIDTH HANGUL LETTER PIEUP-SIOS
+FFB5;FFB5;FFB5;1109;1109; # (ᄉ; ᄉ; ᄉ; ᄉ; ᄉ; ) HALFWIDTH HANGUL LETTER SIOS
+FFB6;FFB6;FFB6;110A;110A; # (ᄊ; ᄊ; ᄊ; ᄊ; ᄊ; ) HALFWIDTH HANGUL LETTER SSANGSIOS
+FFB7;FFB7;FFB7;110B;110B; # (ï¾·; ï¾·; ï¾·; á„‹; á„‹; ) HALFWIDTH HANGUL LETTER IEUNG
+FFB8;FFB8;FFB8;110C;110C; # (ᄌ; ᄌ; ᄌ; ᄌ; ᄌ; ) HALFWIDTH HANGUL LETTER CIEUC
+FFB9;FFB9;FFB9;110D;110D; # (ï¾¹; ï¾¹; ï¾¹; á„; á„; ) HALFWIDTH HANGUL LETTER SSANGCIEUC
+FFBA;FFBA;FFBA;110E;110E; # (ᄎ; ᄎ; ᄎ; ᄎ; ᄎ; ) HALFWIDTH HANGUL LETTER CHIEUCH
+FFBB;FFBB;FFBB;110F;110F; # (ï¾»; ï¾»; ï¾»; á„; á„; ) HALFWIDTH HANGUL LETTER KHIEUKH
+FFBC;FFBC;FFBC;1110;1110; # (ï¾¼; ï¾¼; ï¾¼; á„; á„; ) HALFWIDTH HANGUL LETTER THIEUTH
+FFBD;FFBD;FFBD;1111;1111; # (ï¾½; ï¾½; ï¾½; á„‘; á„‘; ) HALFWIDTH HANGUL LETTER PHIEUPH
+FFBE;FFBE;FFBE;1112;1112; # (ï¾¾; ï¾¾; ï¾¾; á„’; á„’; ) HALFWIDTH HANGUL LETTER HIEUH
+FFC2;FFC2;FFC2;1161;1161; # (ï¿‚; ï¿‚; ï¿‚; á…¡; á…¡; ) HALFWIDTH HANGUL LETTER A
+FFC3;FFC3;FFC3;1162;1162; # (ᅢ; ᅢ; ᅢ; ᅢ; ᅢ; ) HALFWIDTH HANGUL LETTER AE
+FFC4;FFC4;FFC4;1163;1163; # (ï¿„; ï¿„; ï¿„; á…£; á…£; ) HALFWIDTH HANGUL LETTER YA
+FFC5;FFC5;FFC5;1164;1164; # (ï¿…; ï¿…; ï¿…; á…¤; á…¤; ) HALFWIDTH HANGUL LETTER YAE
+FFC6;FFC6;FFC6;1165;1165; # (ᅥ; ᅥ; ᅥ; ᅥ; ᅥ; ) HALFWIDTH HANGUL LETTER EO
+FFC7;FFC7;FFC7;1166;1166; # (ᅦ; ᅦ; ᅦ; ᅦ; ᅦ; ) HALFWIDTH HANGUL LETTER E
+FFCA;FFCA;FFCA;1167;1167; # (ï¿Š; ï¿Š; ï¿Š; á…§; á…§; ) HALFWIDTH HANGUL LETTER YEO
+FFCB;FFCB;FFCB;1168;1168; # (ï¿‹; ï¿‹; ï¿‹; á…¨; á…¨; ) HALFWIDTH HANGUL LETTER YE
+FFCC;FFCC;FFCC;1169;1169; # (ᅩ; ᅩ; ᅩ; ᅩ; ᅩ; ) HALFWIDTH HANGUL LETTER O
+FFCD;FFCD;FFCD;116A;116A; # (ï¿; ï¿; ï¿; á…ª; á…ª; ) HALFWIDTH HANGUL LETTER WA
+FFCE;FFCE;FFCE;116B;116B; # (ï¿Ž; ï¿Ž; ï¿Ž; á…«; á…«; ) HALFWIDTH HANGUL LETTER WAE
+FFCF;FFCF;FFCF;116C;116C; # (ï¿; ï¿; ï¿; á…¬; á…¬; ) HALFWIDTH HANGUL LETTER OE
+FFD2;FFD2;FFD2;116D;116D; # (ï¿’; ï¿’; ï¿’; á…­; á…­; ) HALFWIDTH HANGUL LETTER YO
+FFD3;FFD3;FFD3;116E;116E; # (ï¿“; ï¿“; ï¿“; á…®; á…®; ) HALFWIDTH HANGUL LETTER U
+FFD4;FFD4;FFD4;116F;116F; # (ï¿”; ï¿”; ï¿”; á…¯; á…¯; ) HALFWIDTH HANGUL LETTER WEO
+FFD5;FFD5;FFD5;1170;1170; # (ï¿•; ï¿•; ï¿•; á…°; á…°; ) HALFWIDTH HANGUL LETTER WE
+FFD6;FFD6;FFD6;1171;1171; # (ï¿–; ï¿–; ï¿–; á…±; á…±; ) HALFWIDTH HANGUL LETTER WI
+FFD7;FFD7;FFD7;1172;1172; # (ï¿—; ï¿—; ï¿—; á…²; á…²; ) HALFWIDTH HANGUL LETTER YU
+FFDA;FFDA;FFDA;1173;1173; # (ï¿š; ï¿š; ï¿š; á…³; á…³; ) HALFWIDTH HANGUL LETTER EU
+FFDB;FFDB;FFDB;1174;1174; # (ï¿›; ï¿›; ï¿›; á…´; á…´; ) HALFWIDTH HANGUL LETTER YI
+FFDC;FFDC;FFDC;1175;1175; # (ᅵ; ᅵ; ᅵ; ᅵ; ᅵ; ) HALFWIDTH HANGUL LETTER I
+FFE0;FFE0;FFE0;00A2;00A2; # (¢; ¢; ¢; ¢; ¢; ) FULLWIDTH CENT SIGN
+FFE1;FFE1;FFE1;00A3;00A3; # (£; £; £; £; £; ) FULLWIDTH POUND SIGN
+FFE2;FFE2;FFE2;00AC;00AC; # (¬; ¬; ¬; ¬; ¬; ) FULLWIDTH NOT SIGN
+FFE3;FFE3;FFE3;0020 0304;0020 0304; # ( ̄;  ̄;  ̄; ◌̄; ◌̄; ) FULLWIDTH MACRON
+FFE4;FFE4;FFE4;00A6;00A6; # (¦; ¦; ¦; ¦; ¦; ) FULLWIDTH BROKEN BAR
+FFE5;FFE5;FFE5;00A5;00A5; # (¥; ¥; ¥; ¥; ¥; ) FULLWIDTH YEN SIGN
+FFE6;FFE6;FFE6;20A9;20A9; # (₩; ₩; ₩; ₩; ₩; ) FULLWIDTH WON SIGN
+FFE8;FFE8;FFE8;2502;2502; # (│; │; │; │; │; ) HALFWIDTH FORMS LIGHT VERTICAL
+FFE9;FFE9;FFE9;2190;2190; # (ï¿©; ï¿©; ï¿©; â†; â†; ) HALFWIDTH LEFTWARDS ARROW
+FFEA;FFEA;FFEA;2191;2191; # (↑; ↑; ↑; ↑; ↑; ) HALFWIDTH UPWARDS ARROW
+FFEB;FFEB;FFEB;2192;2192; # (→; →; →; →; →; ) HALFWIDTH RIGHTWARDS ARROW
+FFEC;FFEC;FFEC;2193;2193; # (↓; ↓; ↓; ↓; ↓; ) HALFWIDTH DOWNWARDS ARROW
+FFED;FFED;FFED;25A0;25A0; # (ï¿­; ï¿­; ï¿­; â– ; â– ; ) HALFWIDTH BLACK SQUARE
+FFEE;FFEE;FFEE;25CB;25CB; # (ï¿®; ï¿®; ï¿®; â—‹; â—‹; ) HALFWIDTH WHITE CIRCLE
+1D15E;1D157 1D165;1D157 1D165;1D157 1D165;1D157 1D165; # (ð…ž; ð…—ð…¥; ð…—ð…¥; ð…—ð…¥; ð…—ð…¥; ) MUSICAL SYMBOL HALF NOTE
+1D15F;1D158 1D165;1D158 1D165;1D158 1D165;1D158 1D165; # (ð…Ÿ; ð…˜ð…¥; ð…˜ð…¥; ð…˜ð…¥; ð…˜ð…¥; ) MUSICAL SYMBOL QUARTER NOTE
+1D160;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E; # (ð… ; ð…˜ð…¥ð…®; ð…˜ð…¥ð…®; ð…˜ð…¥ð…®; ð…˜ð…¥ð…®; ) MUSICAL SYMBOL EIGHTH NOTE
+1D161;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F; # (ð…¡; ð…˜ð…¥ð…¯; ð…˜ð…¥ð…¯; ð…˜ð…¥ð…¯; ð…˜ð…¥ð…¯; ) MUSICAL SYMBOL SIXTEENTH NOTE
+1D162;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170; # (ð…¢; ð…˜ð…¥ð…°; ð…˜ð…¥ð…°; ð…˜ð…¥ð…°; ð…˜ð…¥ð…°; ) MUSICAL SYMBOL THIRTY-SECOND NOTE
+1D163;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171; # (ð…£; ð…˜ð…¥ð…±; ð…˜ð…¥ð…±; ð…˜ð…¥ð…±; ð…˜ð…¥ð…±; ) MUSICAL SYMBOL SIXTY-FOURTH NOTE
+1D164;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172; # (ð…¤; ð…˜ð…¥ð…²; ð…˜ð…¥ð…²; ð…˜ð…¥ð…²; ð…˜ð…¥ð…²; ) MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165; # (ð†»; ð†¹ð…¥; ð†¹ð…¥; ð†¹ð…¥; ð†¹ð…¥; ) MUSICAL SYMBOL MINIMA
+1D1BC;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165; # (ð†¼; ð†ºð…¥; ð†ºð…¥; ð†ºð…¥; ð†ºð…¥; ) MUSICAL SYMBOL MINIMA BLACK
+1D1BD;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E; # (ð†½; ð†¹ð…¥ð…®; ð†¹ð…¥ð…®; ð†¹ð…¥ð…®; ð†¹ð…¥ð…®; ) MUSICAL SYMBOL SEMIMINIMA WHITE
+1D1BE;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E; # (ð†¾; ð†ºð…¥ð…®; ð†ºð…¥ð…®; ð†ºð…¥ð…®; ð†ºð…¥ð…®; ) MUSICAL SYMBOL SEMIMINIMA BLACK
+1D1BF;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F; # (ð†¿; ð†¹ð…¥ð…¯; ð†¹ð…¥ð…¯; ð†¹ð…¥ð…¯; ð†¹ð…¥ð…¯; ) MUSICAL SYMBOL FUSA WHITE
+1D1C0;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F; # (ð‡€; ð†ºð…¥ð…¯; ð†ºð…¥ð…¯; ð†ºð…¥ð…¯; ð†ºð…¥ð…¯; ) MUSICAL SYMBOL FUSA BLACK
+1D400;1D400;1D400;0041;0041; # (ð€; ð€; ð€; A; A; ) MATHEMATICAL BOLD CAPITAL A
+1D401;1D401;1D401;0042;0042; # (ð; ð; ð; B; B; ) MATHEMATICAL BOLD CAPITAL B
+1D402;1D402;1D402;0043;0043; # (ð‚; ð‚; ð‚; C; C; ) MATHEMATICAL BOLD CAPITAL C
+1D403;1D403;1D403;0044;0044; # (ðƒ; ðƒ; ðƒ; D; D; ) MATHEMATICAL BOLD CAPITAL D
+1D404;1D404;1D404;0045;0045; # (ð„; ð„; ð„; E; E; ) MATHEMATICAL BOLD CAPITAL E
+1D405;1D405;1D405;0046;0046; # (ð…; ð…; ð…; F; F; ) MATHEMATICAL BOLD CAPITAL F
+1D406;1D406;1D406;0047;0047; # (ð†; ð†; ð†; G; G; ) MATHEMATICAL BOLD CAPITAL G
+1D407;1D407;1D407;0048;0048; # (ð‡; ð‡; ð‡; H; H; ) MATHEMATICAL BOLD CAPITAL H
+1D408;1D408;1D408;0049;0049; # (ðˆ; ðˆ; ðˆ; I; I; ) MATHEMATICAL BOLD CAPITAL I
+1D409;1D409;1D409;004A;004A; # (ð‰; ð‰; ð‰; J; J; ) MATHEMATICAL BOLD CAPITAL J
+1D40A;1D40A;1D40A;004B;004B; # (ðŠ; ðŠ; ðŠ; K; K; ) MATHEMATICAL BOLD CAPITAL K
+1D40B;1D40B;1D40B;004C;004C; # (ð‹; ð‹; ð‹; L; L; ) MATHEMATICAL BOLD CAPITAL L
+1D40C;1D40C;1D40C;004D;004D; # (ðŒ; ðŒ; ðŒ; M; M; ) MATHEMATICAL BOLD CAPITAL M
+1D40D;1D40D;1D40D;004E;004E; # (ð; ð; ð; N; N; ) MATHEMATICAL BOLD CAPITAL N
+1D40E;1D40E;1D40E;004F;004F; # (ðŽ; ðŽ; ðŽ; O; O; ) MATHEMATICAL BOLD CAPITAL O
+1D40F;1D40F;1D40F;0050;0050; # (ð; ð; ð; P; P; ) MATHEMATICAL BOLD CAPITAL P
+1D410;1D410;1D410;0051;0051; # (ð; ð; ð; Q; Q; ) MATHEMATICAL BOLD CAPITAL Q
+1D411;1D411;1D411;0052;0052; # (ð‘; ð‘; ð‘; R; R; ) MATHEMATICAL BOLD CAPITAL R
+1D412;1D412;1D412;0053;0053; # (ð’; ð’; ð’; S; S; ) MATHEMATICAL BOLD CAPITAL S
+1D413;1D413;1D413;0054;0054; # (ð“; ð“; ð“; T; T; ) MATHEMATICAL BOLD CAPITAL T
+1D414;1D414;1D414;0055;0055; # (ð”; ð”; ð”; U; U; ) MATHEMATICAL BOLD CAPITAL U
+1D415;1D415;1D415;0056;0056; # (ð•; ð•; ð•; V; V; ) MATHEMATICAL BOLD CAPITAL V
+1D416;1D416;1D416;0057;0057; # (ð–; ð–; ð–; W; W; ) MATHEMATICAL BOLD CAPITAL W
+1D417;1D417;1D417;0058;0058; # (ð—; ð—; ð—; X; X; ) MATHEMATICAL BOLD CAPITAL X
+1D418;1D418;1D418;0059;0059; # (ð˜; ð˜; ð˜; Y; Y; ) MATHEMATICAL BOLD CAPITAL Y
+1D419;1D419;1D419;005A;005A; # (ð™; ð™; ð™; Z; Z; ) MATHEMATICAL BOLD CAPITAL Z
+1D41A;1D41A;1D41A;0061;0061; # (ðš; ðš; ðš; a; a; ) MATHEMATICAL BOLD SMALL A
+1D41B;1D41B;1D41B;0062;0062; # (ð›; ð›; ð›; b; b; ) MATHEMATICAL BOLD SMALL B
+1D41C;1D41C;1D41C;0063;0063; # (ðœ; ðœ; ðœ; c; c; ) MATHEMATICAL BOLD SMALL C
+1D41D;1D41D;1D41D;0064;0064; # (ð; ð; ð; d; d; ) MATHEMATICAL BOLD SMALL D
+1D41E;1D41E;1D41E;0065;0065; # (ðž; ðž; ðž; e; e; ) MATHEMATICAL BOLD SMALL E
+1D41F;1D41F;1D41F;0066;0066; # (ðŸ; ðŸ; ðŸ; f; f; ) MATHEMATICAL BOLD SMALL F
+1D420;1D420;1D420;0067;0067; # (ð ; ð ; ð ; g; g; ) MATHEMATICAL BOLD SMALL G
+1D421;1D421;1D421;0068;0068; # (ð¡; ð¡; ð¡; h; h; ) MATHEMATICAL BOLD SMALL H
+1D422;1D422;1D422;0069;0069; # (ð¢; ð¢; ð¢; i; i; ) MATHEMATICAL BOLD SMALL I
+1D423;1D423;1D423;006A;006A; # (ð£; ð£; ð£; j; j; ) MATHEMATICAL BOLD SMALL J
+1D424;1D424;1D424;006B;006B; # (ð¤; ð¤; ð¤; k; k; ) MATHEMATICAL BOLD SMALL K
+1D425;1D425;1D425;006C;006C; # (ð¥; ð¥; ð¥; l; l; ) MATHEMATICAL BOLD SMALL L
+1D426;1D426;1D426;006D;006D; # (ð¦; ð¦; ð¦; m; m; ) MATHEMATICAL BOLD SMALL M
+1D427;1D427;1D427;006E;006E; # (ð§; ð§; ð§; n; n; ) MATHEMATICAL BOLD SMALL N
+1D428;1D428;1D428;006F;006F; # (ð¨; ð¨; ð¨; o; o; ) MATHEMATICAL BOLD SMALL O
+1D429;1D429;1D429;0070;0070; # (ð©; ð©; ð©; p; p; ) MATHEMATICAL BOLD SMALL P
+1D42A;1D42A;1D42A;0071;0071; # (ðª; ðª; ðª; q; q; ) MATHEMATICAL BOLD SMALL Q
+1D42B;1D42B;1D42B;0072;0072; # (ð«; ð«; ð«; r; r; ) MATHEMATICAL BOLD SMALL R
+1D42C;1D42C;1D42C;0073;0073; # (ð¬; ð¬; ð¬; s; s; ) MATHEMATICAL BOLD SMALL S
+1D42D;1D42D;1D42D;0074;0074; # (ð­; ð­; ð­; t; t; ) MATHEMATICAL BOLD SMALL T
+1D42E;1D42E;1D42E;0075;0075; # (ð®; ð®; ð®; u; u; ) MATHEMATICAL BOLD SMALL U
+1D42F;1D42F;1D42F;0076;0076; # (ð¯; ð¯; ð¯; v; v; ) MATHEMATICAL BOLD SMALL V
+1D430;1D430;1D430;0077;0077; # (ð°; ð°; ð°; w; w; ) MATHEMATICAL BOLD SMALL W
+1D431;1D431;1D431;0078;0078; # (ð±; ð±; ð±; x; x; ) MATHEMATICAL BOLD SMALL X
+1D432;1D432;1D432;0079;0079; # (ð²; ð²; ð²; y; y; ) MATHEMATICAL BOLD SMALL Y
+1D433;1D433;1D433;007A;007A; # (ð³; ð³; ð³; z; z; ) MATHEMATICAL BOLD SMALL Z
+1D434;1D434;1D434;0041;0041; # (ð´; ð´; ð´; A; A; ) MATHEMATICAL ITALIC CAPITAL A
+1D435;1D435;1D435;0042;0042; # (ðµ; ðµ; ðµ; B; B; ) MATHEMATICAL ITALIC CAPITAL B
+1D436;1D436;1D436;0043;0043; # (ð¶; ð¶; ð¶; C; C; ) MATHEMATICAL ITALIC CAPITAL C
+1D437;1D437;1D437;0044;0044; # (ð·; ð·; ð·; D; D; ) MATHEMATICAL ITALIC CAPITAL D
+1D438;1D438;1D438;0045;0045; # (ð¸; ð¸; ð¸; E; E; ) MATHEMATICAL ITALIC CAPITAL E
+1D439;1D439;1D439;0046;0046; # (ð¹; ð¹; ð¹; F; F; ) MATHEMATICAL ITALIC CAPITAL F
+1D43A;1D43A;1D43A;0047;0047; # (ðº; ðº; ðº; G; G; ) MATHEMATICAL ITALIC CAPITAL G
+1D43B;1D43B;1D43B;0048;0048; # (ð»; ð»; ð»; H; H; ) MATHEMATICAL ITALIC CAPITAL H
+1D43C;1D43C;1D43C;0049;0049; # (ð¼; ð¼; ð¼; I; I; ) MATHEMATICAL ITALIC CAPITAL I
+1D43D;1D43D;1D43D;004A;004A; # (ð½; ð½; ð½; J; J; ) MATHEMATICAL ITALIC CAPITAL J
+1D43E;1D43E;1D43E;004B;004B; # (ð¾; ð¾; ð¾; K; K; ) MATHEMATICAL ITALIC CAPITAL K
+1D43F;1D43F;1D43F;004C;004C; # (ð¿; ð¿; ð¿; L; L; ) MATHEMATICAL ITALIC CAPITAL L
+1D440;1D440;1D440;004D;004D; # (ð‘€; ð‘€; ð‘€; M; M; ) MATHEMATICAL ITALIC CAPITAL M
+1D441;1D441;1D441;004E;004E; # (ð‘; ð‘; ð‘; N; N; ) MATHEMATICAL ITALIC CAPITAL N
+1D442;1D442;1D442;004F;004F; # (ð‘‚; ð‘‚; ð‘‚; O; O; ) MATHEMATICAL ITALIC CAPITAL O
+1D443;1D443;1D443;0050;0050; # (ð‘ƒ; ð‘ƒ; ð‘ƒ; P; P; ) MATHEMATICAL ITALIC CAPITAL P
+1D444;1D444;1D444;0051;0051; # (ð‘„; ð‘„; ð‘„; Q; Q; ) MATHEMATICAL ITALIC CAPITAL Q
+1D445;1D445;1D445;0052;0052; # (ð‘…; ð‘…; ð‘…; R; R; ) MATHEMATICAL ITALIC CAPITAL R
+1D446;1D446;1D446;0053;0053; # (ð‘†; ð‘†; ð‘†; S; S; ) MATHEMATICAL ITALIC CAPITAL S
+1D447;1D447;1D447;0054;0054; # (ð‘‡; ð‘‡; ð‘‡; T; T; ) MATHEMATICAL ITALIC CAPITAL T
+1D448;1D448;1D448;0055;0055; # (ð‘ˆ; ð‘ˆ; ð‘ˆ; U; U; ) MATHEMATICAL ITALIC CAPITAL U
+1D449;1D449;1D449;0056;0056; # (ð‘‰; ð‘‰; ð‘‰; V; V; ) MATHEMATICAL ITALIC CAPITAL V
+1D44A;1D44A;1D44A;0057;0057; # (ð‘Š; ð‘Š; ð‘Š; W; W; ) MATHEMATICAL ITALIC CAPITAL W
+1D44B;1D44B;1D44B;0058;0058; # (ð‘‹; ð‘‹; ð‘‹; X; X; ) MATHEMATICAL ITALIC CAPITAL X
+1D44C;1D44C;1D44C;0059;0059; # (ð‘Œ; ð‘Œ; ð‘Œ; Y; Y; ) MATHEMATICAL ITALIC CAPITAL Y
+1D44D;1D44D;1D44D;005A;005A; # (ð‘; ð‘; ð‘; Z; Z; ) MATHEMATICAL ITALIC CAPITAL Z
+1D44E;1D44E;1D44E;0061;0061; # (ð‘Ž; ð‘Ž; ð‘Ž; a; a; ) MATHEMATICAL ITALIC SMALL A
+1D44F;1D44F;1D44F;0062;0062; # (ð‘; ð‘; ð‘; b; b; ) MATHEMATICAL ITALIC SMALL B
+1D450;1D450;1D450;0063;0063; # (ð‘; ð‘; ð‘; c; c; ) MATHEMATICAL ITALIC SMALL C
+1D451;1D451;1D451;0064;0064; # (ð‘‘; ð‘‘; ð‘‘; d; d; ) MATHEMATICAL ITALIC SMALL D
+1D452;1D452;1D452;0065;0065; # (ð‘’; ð‘’; ð‘’; e; e; ) MATHEMATICAL ITALIC SMALL E
+1D453;1D453;1D453;0066;0066; # (ð‘“; ð‘“; ð‘“; f; f; ) MATHEMATICAL ITALIC SMALL F
+1D454;1D454;1D454;0067;0067; # (ð‘”; ð‘”; ð‘”; g; g; ) MATHEMATICAL ITALIC SMALL G
+1D456;1D456;1D456;0069;0069; # (ð‘–; ð‘–; ð‘–; i; i; ) MATHEMATICAL ITALIC SMALL I
+1D457;1D457;1D457;006A;006A; # (ð‘—; ð‘—; ð‘—; j; j; ) MATHEMATICAL ITALIC SMALL J
+1D458;1D458;1D458;006B;006B; # (ð‘˜; ð‘˜; ð‘˜; k; k; ) MATHEMATICAL ITALIC SMALL K
+1D459;1D459;1D459;006C;006C; # (ð‘™; ð‘™; ð‘™; l; l; ) MATHEMATICAL ITALIC SMALL L
+1D45A;1D45A;1D45A;006D;006D; # (ð‘š; ð‘š; ð‘š; m; m; ) MATHEMATICAL ITALIC SMALL M
+1D45B;1D45B;1D45B;006E;006E; # (ð‘›; ð‘›; ð‘›; n; n; ) MATHEMATICAL ITALIC SMALL N
+1D45C;1D45C;1D45C;006F;006F; # (ð‘œ; ð‘œ; ð‘œ; o; o; ) MATHEMATICAL ITALIC SMALL O
+1D45D;1D45D;1D45D;0070;0070; # (ð‘; ð‘; ð‘; p; p; ) MATHEMATICAL ITALIC SMALL P
+1D45E;1D45E;1D45E;0071;0071; # (ð‘ž; ð‘ž; ð‘ž; q; q; ) MATHEMATICAL ITALIC SMALL Q
+1D45F;1D45F;1D45F;0072;0072; # (ð‘Ÿ; ð‘Ÿ; ð‘Ÿ; r; r; ) MATHEMATICAL ITALIC SMALL R
+1D460;1D460;1D460;0073;0073; # (ð‘ ; ð‘ ; ð‘ ; s; s; ) MATHEMATICAL ITALIC SMALL S
+1D461;1D461;1D461;0074;0074; # (ð‘¡; ð‘¡; ð‘¡; t; t; ) MATHEMATICAL ITALIC SMALL T
+1D462;1D462;1D462;0075;0075; # (ð‘¢; ð‘¢; ð‘¢; u; u; ) MATHEMATICAL ITALIC SMALL U
+1D463;1D463;1D463;0076;0076; # (ð‘£; ð‘£; ð‘£; v; v; ) MATHEMATICAL ITALIC SMALL V
+1D464;1D464;1D464;0077;0077; # (ð‘¤; ð‘¤; ð‘¤; w; w; ) MATHEMATICAL ITALIC SMALL W
+1D465;1D465;1D465;0078;0078; # (ð‘¥; ð‘¥; ð‘¥; x; x; ) MATHEMATICAL ITALIC SMALL X
+1D466;1D466;1D466;0079;0079; # (ð‘¦; ð‘¦; ð‘¦; y; y; ) MATHEMATICAL ITALIC SMALL Y
+1D467;1D467;1D467;007A;007A; # (ð‘§; ð‘§; ð‘§; z; z; ) MATHEMATICAL ITALIC SMALL Z
+1D468;1D468;1D468;0041;0041; # (ð‘¨; ð‘¨; ð‘¨; A; A; ) MATHEMATICAL BOLD ITALIC CAPITAL A
+1D469;1D469;1D469;0042;0042; # (ð‘©; ð‘©; ð‘©; B; B; ) MATHEMATICAL BOLD ITALIC CAPITAL B
+1D46A;1D46A;1D46A;0043;0043; # (ð‘ª; ð‘ª; ð‘ª; C; C; ) MATHEMATICAL BOLD ITALIC CAPITAL C
+1D46B;1D46B;1D46B;0044;0044; # (ð‘«; ð‘«; ð‘«; D; D; ) MATHEMATICAL BOLD ITALIC CAPITAL D
+1D46C;1D46C;1D46C;0045;0045; # (ð‘¬; ð‘¬; ð‘¬; E; E; ) MATHEMATICAL BOLD ITALIC CAPITAL E
+1D46D;1D46D;1D46D;0046;0046; # (ð‘­; ð‘­; ð‘­; F; F; ) MATHEMATICAL BOLD ITALIC CAPITAL F
+1D46E;1D46E;1D46E;0047;0047; # (ð‘®; ð‘®; ð‘®; G; G; ) MATHEMATICAL BOLD ITALIC CAPITAL G
+1D46F;1D46F;1D46F;0048;0048; # (ð‘¯; ð‘¯; ð‘¯; H; H; ) MATHEMATICAL BOLD ITALIC CAPITAL H
+1D470;1D470;1D470;0049;0049; # (ð‘°; ð‘°; ð‘°; I; I; ) MATHEMATICAL BOLD ITALIC CAPITAL I
+1D471;1D471;1D471;004A;004A; # (ð‘±; ð‘±; ð‘±; J; J; ) MATHEMATICAL BOLD ITALIC CAPITAL J
+1D472;1D472;1D472;004B;004B; # (ð‘²; ð‘²; ð‘²; K; K; ) MATHEMATICAL BOLD ITALIC CAPITAL K
+1D473;1D473;1D473;004C;004C; # (ð‘³; ð‘³; ð‘³; L; L; ) MATHEMATICAL BOLD ITALIC CAPITAL L
+1D474;1D474;1D474;004D;004D; # (ð‘´; ð‘´; ð‘´; M; M; ) MATHEMATICAL BOLD ITALIC CAPITAL M
+1D475;1D475;1D475;004E;004E; # (ð‘µ; ð‘µ; ð‘µ; N; N; ) MATHEMATICAL BOLD ITALIC CAPITAL N
+1D476;1D476;1D476;004F;004F; # (ð‘¶; ð‘¶; ð‘¶; O; O; ) MATHEMATICAL BOLD ITALIC CAPITAL O
+1D477;1D477;1D477;0050;0050; # (ð‘·; ð‘·; ð‘·; P; P; ) MATHEMATICAL BOLD ITALIC CAPITAL P
+1D478;1D478;1D478;0051;0051; # (ð‘¸; ð‘¸; ð‘¸; Q; Q; ) MATHEMATICAL BOLD ITALIC CAPITAL Q
+1D479;1D479;1D479;0052;0052; # (ð‘¹; ð‘¹; ð‘¹; R; R; ) MATHEMATICAL BOLD ITALIC CAPITAL R
+1D47A;1D47A;1D47A;0053;0053; # (ð‘º; ð‘º; ð‘º; S; S; ) MATHEMATICAL BOLD ITALIC CAPITAL S
+1D47B;1D47B;1D47B;0054;0054; # (ð‘»; ð‘»; ð‘»; T; T; ) MATHEMATICAL BOLD ITALIC CAPITAL T
+1D47C;1D47C;1D47C;0055;0055; # (ð‘¼; ð‘¼; ð‘¼; U; U; ) MATHEMATICAL BOLD ITALIC CAPITAL U
+1D47D;1D47D;1D47D;0056;0056; # (ð‘½; ð‘½; ð‘½; V; V; ) MATHEMATICAL BOLD ITALIC CAPITAL V
+1D47E;1D47E;1D47E;0057;0057; # (ð‘¾; ð‘¾; ð‘¾; W; W; ) MATHEMATICAL BOLD ITALIC CAPITAL W
+1D47F;1D47F;1D47F;0058;0058; # (ð‘¿; ð‘¿; ð‘¿; X; X; ) MATHEMATICAL BOLD ITALIC CAPITAL X
+1D480;1D480;1D480;0059;0059; # (ð’€; ð’€; ð’€; Y; Y; ) MATHEMATICAL BOLD ITALIC CAPITAL Y
+1D481;1D481;1D481;005A;005A; # (ð’; ð’; ð’; Z; Z; ) MATHEMATICAL BOLD ITALIC CAPITAL Z
+1D482;1D482;1D482;0061;0061; # (ð’‚; ð’‚; ð’‚; a; a; ) MATHEMATICAL BOLD ITALIC SMALL A
+1D483;1D483;1D483;0062;0062; # (ð’ƒ; ð’ƒ; ð’ƒ; b; b; ) MATHEMATICAL BOLD ITALIC SMALL B
+1D484;1D484;1D484;0063;0063; # (ð’„; ð’„; ð’„; c; c; ) MATHEMATICAL BOLD ITALIC SMALL C
+1D485;1D485;1D485;0064;0064; # (ð’…; ð’…; ð’…; d; d; ) MATHEMATICAL BOLD ITALIC SMALL D
+1D486;1D486;1D486;0065;0065; # (ð’†; ð’†; ð’†; e; e; ) MATHEMATICAL BOLD ITALIC SMALL E
+1D487;1D487;1D487;0066;0066; # (ð’‡; ð’‡; ð’‡; f; f; ) MATHEMATICAL BOLD ITALIC SMALL F
+1D488;1D488;1D488;0067;0067; # (ð’ˆ; ð’ˆ; ð’ˆ; g; g; ) MATHEMATICAL BOLD ITALIC SMALL G
+1D489;1D489;1D489;0068;0068; # (ð’‰; ð’‰; ð’‰; h; h; ) MATHEMATICAL BOLD ITALIC SMALL H
+1D48A;1D48A;1D48A;0069;0069; # (ð’Š; ð’Š; ð’Š; i; i; ) MATHEMATICAL BOLD ITALIC SMALL I
+1D48B;1D48B;1D48B;006A;006A; # (ð’‹; ð’‹; ð’‹; j; j; ) MATHEMATICAL BOLD ITALIC SMALL J
+1D48C;1D48C;1D48C;006B;006B; # (ð’Œ; ð’Œ; ð’Œ; k; k; ) MATHEMATICAL BOLD ITALIC SMALL K
+1D48D;1D48D;1D48D;006C;006C; # (ð’; ð’; ð’; l; l; ) MATHEMATICAL BOLD ITALIC SMALL L
+1D48E;1D48E;1D48E;006D;006D; # (ð’Ž; ð’Ž; ð’Ž; m; m; ) MATHEMATICAL BOLD ITALIC SMALL M
+1D48F;1D48F;1D48F;006E;006E; # (ð’; ð’; ð’; n; n; ) MATHEMATICAL BOLD ITALIC SMALL N
+1D490;1D490;1D490;006F;006F; # (ð’; ð’; ð’; o; o; ) MATHEMATICAL BOLD ITALIC SMALL O
+1D491;1D491;1D491;0070;0070; # (ð’‘; ð’‘; ð’‘; p; p; ) MATHEMATICAL BOLD ITALIC SMALL P
+1D492;1D492;1D492;0071;0071; # (ð’’; ð’’; ð’’; q; q; ) MATHEMATICAL BOLD ITALIC SMALL Q
+1D493;1D493;1D493;0072;0072; # (ð’“; ð’“; ð’“; r; r; ) MATHEMATICAL BOLD ITALIC SMALL R
+1D494;1D494;1D494;0073;0073; # (ð’”; ð’”; ð’”; s; s; ) MATHEMATICAL BOLD ITALIC SMALL S
+1D495;1D495;1D495;0074;0074; # (ð’•; ð’•; ð’•; t; t; ) MATHEMATICAL BOLD ITALIC SMALL T
+1D496;1D496;1D496;0075;0075; # (ð’–; ð’–; ð’–; u; u; ) MATHEMATICAL BOLD ITALIC SMALL U
+1D497;1D497;1D497;0076;0076; # (ð’—; ð’—; ð’—; v; v; ) MATHEMATICAL BOLD ITALIC SMALL V
+1D498;1D498;1D498;0077;0077; # (ð’˜; ð’˜; ð’˜; w; w; ) MATHEMATICAL BOLD ITALIC SMALL W
+1D499;1D499;1D499;0078;0078; # (ð’™; ð’™; ð’™; x; x; ) MATHEMATICAL BOLD ITALIC SMALL X
+1D49A;1D49A;1D49A;0079;0079; # (ð’š; ð’š; ð’š; y; y; ) MATHEMATICAL BOLD ITALIC SMALL Y
+1D49B;1D49B;1D49B;007A;007A; # (ð’›; ð’›; ð’›; z; z; ) MATHEMATICAL BOLD ITALIC SMALL Z
+1D49C;1D49C;1D49C;0041;0041; # (ð’œ; ð’œ; ð’œ; A; A; ) MATHEMATICAL SCRIPT CAPITAL A
+1D49E;1D49E;1D49E;0043;0043; # (ð’ž; ð’ž; ð’ž; C; C; ) MATHEMATICAL SCRIPT CAPITAL C
+1D49F;1D49F;1D49F;0044;0044; # (ð’Ÿ; ð’Ÿ; ð’Ÿ; D; D; ) MATHEMATICAL SCRIPT CAPITAL D
+1D4A2;1D4A2;1D4A2;0047;0047; # (ð’¢; ð’¢; ð’¢; G; G; ) MATHEMATICAL SCRIPT CAPITAL G
+1D4A5;1D4A5;1D4A5;004A;004A; # (ð’¥; ð’¥; ð’¥; J; J; ) MATHEMATICAL SCRIPT CAPITAL J
+1D4A6;1D4A6;1D4A6;004B;004B; # (ð’¦; ð’¦; ð’¦; K; K; ) MATHEMATICAL SCRIPT CAPITAL K
+1D4A9;1D4A9;1D4A9;004E;004E; # (ð’©; ð’©; ð’©; N; N; ) MATHEMATICAL SCRIPT CAPITAL N
+1D4AA;1D4AA;1D4AA;004F;004F; # (ð’ª; ð’ª; ð’ª; O; O; ) MATHEMATICAL SCRIPT CAPITAL O
+1D4AB;1D4AB;1D4AB;0050;0050; # (ð’«; ð’«; ð’«; P; P; ) MATHEMATICAL SCRIPT CAPITAL P
+1D4AC;1D4AC;1D4AC;0051;0051; # (ð’¬; ð’¬; ð’¬; Q; Q; ) MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE;1D4AE;1D4AE;0053;0053; # (ð’®; ð’®; ð’®; S; S; ) MATHEMATICAL SCRIPT CAPITAL S
+1D4AF;1D4AF;1D4AF;0054;0054; # (ð’¯; ð’¯; ð’¯; T; T; ) MATHEMATICAL SCRIPT CAPITAL T
+1D4B0;1D4B0;1D4B0;0055;0055; # (ð’°; ð’°; ð’°; U; U; ) MATHEMATICAL SCRIPT CAPITAL U
+1D4B1;1D4B1;1D4B1;0056;0056; # (ð’±; ð’±; ð’±; V; V; ) MATHEMATICAL SCRIPT CAPITAL V
+1D4B2;1D4B2;1D4B2;0057;0057; # (ð’²; ð’²; ð’²; W; W; ) MATHEMATICAL SCRIPT CAPITAL W
+1D4B3;1D4B3;1D4B3;0058;0058; # (ð’³; ð’³; ð’³; X; X; ) MATHEMATICAL SCRIPT CAPITAL X
+1D4B4;1D4B4;1D4B4;0059;0059; # (ð’´; ð’´; ð’´; Y; Y; ) MATHEMATICAL SCRIPT CAPITAL Y
+1D4B5;1D4B5;1D4B5;005A;005A; # (ð’µ; ð’µ; ð’µ; Z; Z; ) MATHEMATICAL SCRIPT CAPITAL Z
+1D4B6;1D4B6;1D4B6;0061;0061; # (ð’¶; ð’¶; ð’¶; a; a; ) MATHEMATICAL SCRIPT SMALL A
+1D4B7;1D4B7;1D4B7;0062;0062; # (ð’·; ð’·; ð’·; b; b; ) MATHEMATICAL SCRIPT SMALL B
+1D4B8;1D4B8;1D4B8;0063;0063; # (ð’¸; ð’¸; ð’¸; c; c; ) MATHEMATICAL SCRIPT SMALL C
+1D4B9;1D4B9;1D4B9;0064;0064; # (ð’¹; ð’¹; ð’¹; d; d; ) MATHEMATICAL SCRIPT SMALL D
+1D4BB;1D4BB;1D4BB;0066;0066; # (ð’»; ð’»; ð’»; f; f; ) MATHEMATICAL SCRIPT SMALL F
+1D4BD;1D4BD;1D4BD;0068;0068; # (ð’½; ð’½; ð’½; h; h; ) MATHEMATICAL SCRIPT SMALL H
+1D4BE;1D4BE;1D4BE;0069;0069; # (ð’¾; ð’¾; ð’¾; i; i; ) MATHEMATICAL SCRIPT SMALL I
+1D4BF;1D4BF;1D4BF;006A;006A; # (ð’¿; ð’¿; ð’¿; j; j; ) MATHEMATICAL SCRIPT SMALL J
+1D4C0;1D4C0;1D4C0;006B;006B; # (ð“€; ð“€; ð“€; k; k; ) MATHEMATICAL SCRIPT SMALL K
+1D4C1;1D4C1;1D4C1;006C;006C; # (ð“; ð“; ð“; l; l; ) MATHEMATICAL SCRIPT SMALL L
+1D4C2;1D4C2;1D4C2;006D;006D; # (ð“‚; ð“‚; ð“‚; m; m; ) MATHEMATICAL SCRIPT SMALL M
+1D4C3;1D4C3;1D4C3;006E;006E; # (ð“ƒ; ð“ƒ; ð“ƒ; n; n; ) MATHEMATICAL SCRIPT SMALL N
+1D4C5;1D4C5;1D4C5;0070;0070; # (ð“…; ð“…; ð“…; p; p; ) MATHEMATICAL SCRIPT SMALL P
+1D4C6;1D4C6;1D4C6;0071;0071; # (ð“†; ð“†; ð“†; q; q; ) MATHEMATICAL SCRIPT SMALL Q
+1D4C7;1D4C7;1D4C7;0072;0072; # (ð“‡; ð“‡; ð“‡; r; r; ) MATHEMATICAL SCRIPT SMALL R
+1D4C8;1D4C8;1D4C8;0073;0073; # (ð“ˆ; ð“ˆ; ð“ˆ; s; s; ) MATHEMATICAL SCRIPT SMALL S
+1D4C9;1D4C9;1D4C9;0074;0074; # (ð“‰; ð“‰; ð“‰; t; t; ) MATHEMATICAL SCRIPT SMALL T
+1D4CA;1D4CA;1D4CA;0075;0075; # (ð“Š; ð“Š; ð“Š; u; u; ) MATHEMATICAL SCRIPT SMALL U
+1D4CB;1D4CB;1D4CB;0076;0076; # (ð“‹; ð“‹; ð“‹; v; v; ) MATHEMATICAL SCRIPT SMALL V
+1D4CC;1D4CC;1D4CC;0077;0077; # (ð“Œ; ð“Œ; ð“Œ; w; w; ) MATHEMATICAL SCRIPT SMALL W
+1D4CD;1D4CD;1D4CD;0078;0078; # (ð“; ð“; ð“; x; x; ) MATHEMATICAL SCRIPT SMALL X
+1D4CE;1D4CE;1D4CE;0079;0079; # (ð“Ž; ð“Ž; ð“Ž; y; y; ) MATHEMATICAL SCRIPT SMALL Y
+1D4CF;1D4CF;1D4CF;007A;007A; # (ð“; ð“; ð“; z; z; ) MATHEMATICAL SCRIPT SMALL Z
+1D4D0;1D4D0;1D4D0;0041;0041; # (ð“; ð“; ð“; A; A; ) MATHEMATICAL BOLD SCRIPT CAPITAL A
+1D4D1;1D4D1;1D4D1;0042;0042; # (ð“‘; ð“‘; ð“‘; B; B; ) MATHEMATICAL BOLD SCRIPT CAPITAL B
+1D4D2;1D4D2;1D4D2;0043;0043; # (ð“’; ð“’; ð“’; C; C; ) MATHEMATICAL BOLD SCRIPT CAPITAL C
+1D4D3;1D4D3;1D4D3;0044;0044; # (ð““; ð““; ð““; D; D; ) MATHEMATICAL BOLD SCRIPT CAPITAL D
+1D4D4;1D4D4;1D4D4;0045;0045; # (ð“”; ð“”; ð“”; E; E; ) MATHEMATICAL BOLD SCRIPT CAPITAL E
+1D4D5;1D4D5;1D4D5;0046;0046; # (ð“•; ð“•; ð“•; F; F; ) MATHEMATICAL BOLD SCRIPT CAPITAL F
+1D4D6;1D4D6;1D4D6;0047;0047; # (ð“–; ð“–; ð“–; G; G; ) MATHEMATICAL BOLD SCRIPT CAPITAL G
+1D4D7;1D4D7;1D4D7;0048;0048; # (ð“—; ð“—; ð“—; H; H; ) MATHEMATICAL BOLD SCRIPT CAPITAL H
+1D4D8;1D4D8;1D4D8;0049;0049; # (ð“˜; ð“˜; ð“˜; I; I; ) MATHEMATICAL BOLD SCRIPT CAPITAL I
+1D4D9;1D4D9;1D4D9;004A;004A; # (ð“™; ð“™; ð“™; J; J; ) MATHEMATICAL BOLD SCRIPT CAPITAL J
+1D4DA;1D4DA;1D4DA;004B;004B; # (ð“š; ð“š; ð“š; K; K; ) MATHEMATICAL BOLD SCRIPT CAPITAL K
+1D4DB;1D4DB;1D4DB;004C;004C; # (ð“›; ð“›; ð“›; L; L; ) MATHEMATICAL BOLD SCRIPT CAPITAL L
+1D4DC;1D4DC;1D4DC;004D;004D; # (ð“œ; ð“œ; ð“œ; M; M; ) MATHEMATICAL BOLD SCRIPT CAPITAL M
+1D4DD;1D4DD;1D4DD;004E;004E; # (ð“; ð“; ð“; N; N; ) MATHEMATICAL BOLD SCRIPT CAPITAL N
+1D4DE;1D4DE;1D4DE;004F;004F; # (ð“ž; ð“ž; ð“ž; O; O; ) MATHEMATICAL BOLD SCRIPT CAPITAL O
+1D4DF;1D4DF;1D4DF;0050;0050; # (ð“Ÿ; ð“Ÿ; ð“Ÿ; P; P; ) MATHEMATICAL BOLD SCRIPT CAPITAL P
+1D4E0;1D4E0;1D4E0;0051;0051; # (ð“ ; ð“ ; ð“ ; Q; Q; ) MATHEMATICAL BOLD SCRIPT CAPITAL Q
+1D4E1;1D4E1;1D4E1;0052;0052; # (ð“¡; ð“¡; ð“¡; R; R; ) MATHEMATICAL BOLD SCRIPT CAPITAL R
+1D4E2;1D4E2;1D4E2;0053;0053; # (ð“¢; ð“¢; ð“¢; S; S; ) MATHEMATICAL BOLD SCRIPT CAPITAL S
+1D4E3;1D4E3;1D4E3;0054;0054; # (ð“£; ð“£; ð“£; T; T; ) MATHEMATICAL BOLD SCRIPT CAPITAL T
+1D4E4;1D4E4;1D4E4;0055;0055; # (ð“¤; ð“¤; ð“¤; U; U; ) MATHEMATICAL BOLD SCRIPT CAPITAL U
+1D4E5;1D4E5;1D4E5;0056;0056; # (ð“¥; ð“¥; ð“¥; V; V; ) MATHEMATICAL BOLD SCRIPT CAPITAL V
+1D4E6;1D4E6;1D4E6;0057;0057; # (ð“¦; ð“¦; ð“¦; W; W; ) MATHEMATICAL BOLD SCRIPT CAPITAL W
+1D4E7;1D4E7;1D4E7;0058;0058; # (ð“§; ð“§; ð“§; X; X; ) MATHEMATICAL BOLD SCRIPT CAPITAL X
+1D4E8;1D4E8;1D4E8;0059;0059; # (ð“¨; ð“¨; ð“¨; Y; Y; ) MATHEMATICAL BOLD SCRIPT CAPITAL Y
+1D4E9;1D4E9;1D4E9;005A;005A; # (ð“©; ð“©; ð“©; Z; Z; ) MATHEMATICAL BOLD SCRIPT CAPITAL Z
+1D4EA;1D4EA;1D4EA;0061;0061; # (ð“ª; ð“ª; ð“ª; a; a; ) MATHEMATICAL BOLD SCRIPT SMALL A
+1D4EB;1D4EB;1D4EB;0062;0062; # (ð“«; ð“«; ð“«; b; b; ) MATHEMATICAL BOLD SCRIPT SMALL B
+1D4EC;1D4EC;1D4EC;0063;0063; # (ð“¬; ð“¬; ð“¬; c; c; ) MATHEMATICAL BOLD SCRIPT SMALL C
+1D4ED;1D4ED;1D4ED;0064;0064; # (ð“­; ð“­; ð“­; d; d; ) MATHEMATICAL BOLD SCRIPT SMALL D
+1D4EE;1D4EE;1D4EE;0065;0065; # (ð“®; ð“®; ð“®; e; e; ) MATHEMATICAL BOLD SCRIPT SMALL E
+1D4EF;1D4EF;1D4EF;0066;0066; # (ð“¯; ð“¯; ð“¯; f; f; ) MATHEMATICAL BOLD SCRIPT SMALL F
+1D4F0;1D4F0;1D4F0;0067;0067; # (ð“°; ð“°; ð“°; g; g; ) MATHEMATICAL BOLD SCRIPT SMALL G
+1D4F1;1D4F1;1D4F1;0068;0068; # (ð“±; ð“±; ð“±; h; h; ) MATHEMATICAL BOLD SCRIPT SMALL H
+1D4F2;1D4F2;1D4F2;0069;0069; # (ð“²; ð“²; ð“²; i; i; ) MATHEMATICAL BOLD SCRIPT SMALL I
+1D4F3;1D4F3;1D4F3;006A;006A; # (ð“³; ð“³; ð“³; j; j; ) MATHEMATICAL BOLD SCRIPT SMALL J
+1D4F4;1D4F4;1D4F4;006B;006B; # (ð“´; ð“´; ð“´; k; k; ) MATHEMATICAL BOLD SCRIPT SMALL K
+1D4F5;1D4F5;1D4F5;006C;006C; # (ð“µ; ð“µ; ð“µ; l; l; ) MATHEMATICAL BOLD SCRIPT SMALL L
+1D4F6;1D4F6;1D4F6;006D;006D; # (ð“¶; ð“¶; ð“¶; m; m; ) MATHEMATICAL BOLD SCRIPT SMALL M
+1D4F7;1D4F7;1D4F7;006E;006E; # (ð“·; ð“·; ð“·; n; n; ) MATHEMATICAL BOLD SCRIPT SMALL N
+1D4F8;1D4F8;1D4F8;006F;006F; # (ð“¸; ð“¸; ð“¸; o; o; ) MATHEMATICAL BOLD SCRIPT SMALL O
+1D4F9;1D4F9;1D4F9;0070;0070; # (ð“¹; ð“¹; ð“¹; p; p; ) MATHEMATICAL BOLD SCRIPT SMALL P
+1D4FA;1D4FA;1D4FA;0071;0071; # (ð“º; ð“º; ð“º; q; q; ) MATHEMATICAL BOLD SCRIPT SMALL Q
+1D4FB;1D4FB;1D4FB;0072;0072; # (ð“»; ð“»; ð“»; r; r; ) MATHEMATICAL BOLD SCRIPT SMALL R
+1D4FC;1D4FC;1D4FC;0073;0073; # (ð“¼; ð“¼; ð“¼; s; s; ) MATHEMATICAL BOLD SCRIPT SMALL S
+1D4FD;1D4FD;1D4FD;0074;0074; # (ð“½; ð“½; ð“½; t; t; ) MATHEMATICAL BOLD SCRIPT SMALL T
+1D4FE;1D4FE;1D4FE;0075;0075; # (ð“¾; ð“¾; ð“¾; u; u; ) MATHEMATICAL BOLD SCRIPT SMALL U
+1D4FF;1D4FF;1D4FF;0076;0076; # (ð“¿; ð“¿; ð“¿; v; v; ) MATHEMATICAL BOLD SCRIPT SMALL V
+1D500;1D500;1D500;0077;0077; # (ð”€; ð”€; ð”€; w; w; ) MATHEMATICAL BOLD SCRIPT SMALL W
+1D501;1D501;1D501;0078;0078; # (ð”; ð”; ð”; x; x; ) MATHEMATICAL BOLD SCRIPT SMALL X
+1D502;1D502;1D502;0079;0079; # (ð”‚; ð”‚; ð”‚; y; y; ) MATHEMATICAL BOLD SCRIPT SMALL Y
+1D503;1D503;1D503;007A;007A; # (ð”ƒ; ð”ƒ; ð”ƒ; z; z; ) MATHEMATICAL BOLD SCRIPT SMALL Z
+1D504;1D504;1D504;0041;0041; # (ð”„; ð”„; ð”„; A; A; ) MATHEMATICAL FRAKTUR CAPITAL A
+1D505;1D505;1D505;0042;0042; # (ð”…; ð”…; ð”…; B; B; ) MATHEMATICAL FRAKTUR CAPITAL B
+1D507;1D507;1D507;0044;0044; # (ð”‡; ð”‡; ð”‡; D; D; ) MATHEMATICAL FRAKTUR CAPITAL D
+1D508;1D508;1D508;0045;0045; # (ð”ˆ; ð”ˆ; ð”ˆ; E; E; ) MATHEMATICAL FRAKTUR CAPITAL E
+1D509;1D509;1D509;0046;0046; # (ð”‰; ð”‰; ð”‰; F; F; ) MATHEMATICAL FRAKTUR CAPITAL F
+1D50A;1D50A;1D50A;0047;0047; # (ð”Š; ð”Š; ð”Š; G; G; ) MATHEMATICAL FRAKTUR CAPITAL G
+1D50D;1D50D;1D50D;004A;004A; # (ð”; ð”; ð”; J; J; ) MATHEMATICAL FRAKTUR CAPITAL J
+1D50E;1D50E;1D50E;004B;004B; # (ð”Ž; ð”Ž; ð”Ž; K; K; ) MATHEMATICAL FRAKTUR CAPITAL K
+1D50F;1D50F;1D50F;004C;004C; # (ð”; ð”; ð”; L; L; ) MATHEMATICAL FRAKTUR CAPITAL L
+1D510;1D510;1D510;004D;004D; # (ð”; ð”; ð”; M; M; ) MATHEMATICAL FRAKTUR CAPITAL M
+1D511;1D511;1D511;004E;004E; # (ð”‘; ð”‘; ð”‘; N; N; ) MATHEMATICAL FRAKTUR CAPITAL N
+1D512;1D512;1D512;004F;004F; # (ð”’; ð”’; ð”’; O; O; ) MATHEMATICAL FRAKTUR CAPITAL O
+1D513;1D513;1D513;0050;0050; # (ð”“; ð”“; ð”“; P; P; ) MATHEMATICAL FRAKTUR CAPITAL P
+1D514;1D514;1D514;0051;0051; # (ð””; ð””; ð””; Q; Q; ) MATHEMATICAL FRAKTUR CAPITAL Q
+1D516;1D516;1D516;0053;0053; # (ð”–; ð”–; ð”–; S; S; ) MATHEMATICAL FRAKTUR CAPITAL S
+1D517;1D517;1D517;0054;0054; # (ð”—; ð”—; ð”—; T; T; ) MATHEMATICAL FRAKTUR CAPITAL T
+1D518;1D518;1D518;0055;0055; # (ð”˜; ð”˜; ð”˜; U; U; ) MATHEMATICAL FRAKTUR CAPITAL U
+1D519;1D519;1D519;0056;0056; # (ð”™; ð”™; ð”™; V; V; ) MATHEMATICAL FRAKTUR CAPITAL V
+1D51A;1D51A;1D51A;0057;0057; # (ð”š; ð”š; ð”š; W; W; ) MATHEMATICAL FRAKTUR CAPITAL W
+1D51B;1D51B;1D51B;0058;0058; # (ð”›; ð”›; ð”›; X; X; ) MATHEMATICAL FRAKTUR CAPITAL X
+1D51C;1D51C;1D51C;0059;0059; # (ð”œ; ð”œ; ð”œ; Y; Y; ) MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E;1D51E;1D51E;0061;0061; # (ð”ž; ð”ž; ð”ž; a; a; ) MATHEMATICAL FRAKTUR SMALL A
+1D51F;1D51F;1D51F;0062;0062; # (ð”Ÿ; ð”Ÿ; ð”Ÿ; b; b; ) MATHEMATICAL FRAKTUR SMALL B
+1D520;1D520;1D520;0063;0063; # (ð” ; ð” ; ð” ; c; c; ) MATHEMATICAL FRAKTUR SMALL C
+1D521;1D521;1D521;0064;0064; # (ð”¡; ð”¡; ð”¡; d; d; ) MATHEMATICAL FRAKTUR SMALL D
+1D522;1D522;1D522;0065;0065; # (ð”¢; ð”¢; ð”¢; e; e; ) MATHEMATICAL FRAKTUR SMALL E
+1D523;1D523;1D523;0066;0066; # (ð”£; ð”£; ð”£; f; f; ) MATHEMATICAL FRAKTUR SMALL F
+1D524;1D524;1D524;0067;0067; # (ð”¤; ð”¤; ð”¤; g; g; ) MATHEMATICAL FRAKTUR SMALL G
+1D525;1D525;1D525;0068;0068; # (ð”¥; ð”¥; ð”¥; h; h; ) MATHEMATICAL FRAKTUR SMALL H
+1D526;1D526;1D526;0069;0069; # (ð”¦; ð”¦; ð”¦; i; i; ) MATHEMATICAL FRAKTUR SMALL I
+1D527;1D527;1D527;006A;006A; # (ð”§; ð”§; ð”§; j; j; ) MATHEMATICAL FRAKTUR SMALL J
+1D528;1D528;1D528;006B;006B; # (ð”¨; ð”¨; ð”¨; k; k; ) MATHEMATICAL FRAKTUR SMALL K
+1D529;1D529;1D529;006C;006C; # (ð”©; ð”©; ð”©; l; l; ) MATHEMATICAL FRAKTUR SMALL L
+1D52A;1D52A;1D52A;006D;006D; # (ð”ª; ð”ª; ð”ª; m; m; ) MATHEMATICAL FRAKTUR SMALL M
+1D52B;1D52B;1D52B;006E;006E; # (ð”«; ð”«; ð”«; n; n; ) MATHEMATICAL FRAKTUR SMALL N
+1D52C;1D52C;1D52C;006F;006F; # (ð”¬; ð”¬; ð”¬; o; o; ) MATHEMATICAL FRAKTUR SMALL O
+1D52D;1D52D;1D52D;0070;0070; # (ð”­; ð”­; ð”­; p; p; ) MATHEMATICAL FRAKTUR SMALL P
+1D52E;1D52E;1D52E;0071;0071; # (ð”®; ð”®; ð”®; q; q; ) MATHEMATICAL FRAKTUR SMALL Q
+1D52F;1D52F;1D52F;0072;0072; # (ð”¯; ð”¯; ð”¯; r; r; ) MATHEMATICAL FRAKTUR SMALL R
+1D530;1D530;1D530;0073;0073; # (ð”°; ð”°; ð”°; s; s; ) MATHEMATICAL FRAKTUR SMALL S
+1D531;1D531;1D531;0074;0074; # (ð”±; ð”±; ð”±; t; t; ) MATHEMATICAL FRAKTUR SMALL T
+1D532;1D532;1D532;0075;0075; # (ð”²; ð”²; ð”²; u; u; ) MATHEMATICAL FRAKTUR SMALL U
+1D533;1D533;1D533;0076;0076; # (ð”³; ð”³; ð”³; v; v; ) MATHEMATICAL FRAKTUR SMALL V
+1D534;1D534;1D534;0077;0077; # (ð”´; ð”´; ð”´; w; w; ) MATHEMATICAL FRAKTUR SMALL W
+1D535;1D535;1D535;0078;0078; # (ð”µ; ð”µ; ð”µ; x; x; ) MATHEMATICAL FRAKTUR SMALL X
+1D536;1D536;1D536;0079;0079; # (ð”¶; ð”¶; ð”¶; y; y; ) MATHEMATICAL FRAKTUR SMALL Y
+1D537;1D537;1D537;007A;007A; # (ð”·; ð”·; ð”·; z; z; ) MATHEMATICAL FRAKTUR SMALL Z
+1D538;1D538;1D538;0041;0041; # (ð”¸; ð”¸; ð”¸; A; A; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL A
+1D539;1D539;1D539;0042;0042; # (ð”¹; ð”¹; ð”¹; B; B; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B;1D53B;1D53B;0044;0044; # (ð”»; ð”»; ð”»; D; D; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL D
+1D53C;1D53C;1D53C;0045;0045; # (ð”¼; ð”¼; ð”¼; E; E; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL E
+1D53D;1D53D;1D53D;0046;0046; # (ð”½; ð”½; ð”½; F; F; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL F
+1D53E;1D53E;1D53E;0047;0047; # (ð”¾; ð”¾; ð”¾; G; G; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540;1D540;1D540;0049;0049; # (ð•€; ð•€; ð•€; I; I; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL I
+1D541;1D541;1D541;004A;004A; # (ð•; ð•; ð•; J; J; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL J
+1D542;1D542;1D542;004B;004B; # (ð•‚; ð•‚; ð•‚; K; K; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL K
+1D543;1D543;1D543;004C;004C; # (ð•ƒ; ð•ƒ; ð•ƒ; L; L; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL L
+1D544;1D544;1D544;004D;004D; # (ð•„; ð•„; ð•„; M; M; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546;1D546;1D546;004F;004F; # (ð•†; ð•†; ð•†; O; O; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A;1D54A;1D54A;0053;0053; # (ð•Š; ð•Š; ð•Š; S; S; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL S
+1D54B;1D54B;1D54B;0054;0054; # (ð•‹; ð•‹; ð•‹; T; T; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL T
+1D54C;1D54C;1D54C;0055;0055; # (ð•Œ; ð•Œ; ð•Œ; U; U; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL U
+1D54D;1D54D;1D54D;0056;0056; # (ð•; ð•; ð•; V; V; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL V
+1D54E;1D54E;1D54E;0057;0057; # (ð•Ž; ð•Ž; ð•Ž; W; W; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL W
+1D54F;1D54F;1D54F;0058;0058; # (ð•; ð•; ð•; X; X; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL X
+1D550;1D550;1D550;0059;0059; # (ð•; ð•; ð•; Y; Y; ) MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552;1D552;1D552;0061;0061; # (ð•’; ð•’; ð•’; a; a; ) MATHEMATICAL DOUBLE-STRUCK SMALL A
+1D553;1D553;1D553;0062;0062; # (ð•“; ð•“; ð•“; b; b; ) MATHEMATICAL DOUBLE-STRUCK SMALL B
+1D554;1D554;1D554;0063;0063; # (ð•”; ð•”; ð•”; c; c; ) MATHEMATICAL DOUBLE-STRUCK SMALL C
+1D555;1D555;1D555;0064;0064; # (ð••; ð••; ð••; d; d; ) MATHEMATICAL DOUBLE-STRUCK SMALL D
+1D556;1D556;1D556;0065;0065; # (ð•–; ð•–; ð•–; e; e; ) MATHEMATICAL DOUBLE-STRUCK SMALL E
+1D557;1D557;1D557;0066;0066; # (ð•—; ð•—; ð•—; f; f; ) MATHEMATICAL DOUBLE-STRUCK SMALL F
+1D558;1D558;1D558;0067;0067; # (ð•˜; ð•˜; ð•˜; g; g; ) MATHEMATICAL DOUBLE-STRUCK SMALL G
+1D559;1D559;1D559;0068;0068; # (ð•™; ð•™; ð•™; h; h; ) MATHEMATICAL DOUBLE-STRUCK SMALL H
+1D55A;1D55A;1D55A;0069;0069; # (ð•š; ð•š; ð•š; i; i; ) MATHEMATICAL DOUBLE-STRUCK SMALL I
+1D55B;1D55B;1D55B;006A;006A; # (ð•›; ð•›; ð•›; j; j; ) MATHEMATICAL DOUBLE-STRUCK SMALL J
+1D55C;1D55C;1D55C;006B;006B; # (ð•œ; ð•œ; ð•œ; k; k; ) MATHEMATICAL DOUBLE-STRUCK SMALL K
+1D55D;1D55D;1D55D;006C;006C; # (ð•; ð•; ð•; l; l; ) MATHEMATICAL DOUBLE-STRUCK SMALL L
+1D55E;1D55E;1D55E;006D;006D; # (ð•ž; ð•ž; ð•ž; m; m; ) MATHEMATICAL DOUBLE-STRUCK SMALL M
+1D55F;1D55F;1D55F;006E;006E; # (ð•Ÿ; ð•Ÿ; ð•Ÿ; n; n; ) MATHEMATICAL DOUBLE-STRUCK SMALL N
+1D560;1D560;1D560;006F;006F; # (ð• ; ð• ; ð• ; o; o; ) MATHEMATICAL DOUBLE-STRUCK SMALL O
+1D561;1D561;1D561;0070;0070; # (ð•¡; ð•¡; ð•¡; p; p; ) MATHEMATICAL DOUBLE-STRUCK SMALL P
+1D562;1D562;1D562;0071;0071; # (ð•¢; ð•¢; ð•¢; q; q; ) MATHEMATICAL DOUBLE-STRUCK SMALL Q
+1D563;1D563;1D563;0072;0072; # (ð•£; ð•£; ð•£; r; r; ) MATHEMATICAL DOUBLE-STRUCK SMALL R
+1D564;1D564;1D564;0073;0073; # (ð•¤; ð•¤; ð•¤; s; s; ) MATHEMATICAL DOUBLE-STRUCK SMALL S
+1D565;1D565;1D565;0074;0074; # (ð•¥; ð•¥; ð•¥; t; t; ) MATHEMATICAL DOUBLE-STRUCK SMALL T
+1D566;1D566;1D566;0075;0075; # (ð•¦; ð•¦; ð•¦; u; u; ) MATHEMATICAL DOUBLE-STRUCK SMALL U
+1D567;1D567;1D567;0076;0076; # (ð•§; ð•§; ð•§; v; v; ) MATHEMATICAL DOUBLE-STRUCK SMALL V
+1D568;1D568;1D568;0077;0077; # (ð•¨; ð•¨; ð•¨; w; w; ) MATHEMATICAL DOUBLE-STRUCK SMALL W
+1D569;1D569;1D569;0078;0078; # (ð•©; ð•©; ð•©; x; x; ) MATHEMATICAL DOUBLE-STRUCK SMALL X
+1D56A;1D56A;1D56A;0079;0079; # (ð•ª; ð•ª; ð•ª; y; y; ) MATHEMATICAL DOUBLE-STRUCK SMALL Y
+1D56B;1D56B;1D56B;007A;007A; # (ð•«; ð•«; ð•«; z; z; ) MATHEMATICAL DOUBLE-STRUCK SMALL Z
+1D56C;1D56C;1D56C;0041;0041; # (ð•¬; ð•¬; ð•¬; A; A; ) MATHEMATICAL BOLD FRAKTUR CAPITAL A
+1D56D;1D56D;1D56D;0042;0042; # (ð•­; ð•­; ð•­; B; B; ) MATHEMATICAL BOLD FRAKTUR CAPITAL B
+1D56E;1D56E;1D56E;0043;0043; # (ð•®; ð•®; ð•®; C; C; ) MATHEMATICAL BOLD FRAKTUR CAPITAL C
+1D56F;1D56F;1D56F;0044;0044; # (ð•¯; ð•¯; ð•¯; D; D; ) MATHEMATICAL BOLD FRAKTUR CAPITAL D
+1D570;1D570;1D570;0045;0045; # (ð•°; ð•°; ð•°; E; E; ) MATHEMATICAL BOLD FRAKTUR CAPITAL E
+1D571;1D571;1D571;0046;0046; # (ð•±; ð•±; ð•±; F; F; ) MATHEMATICAL BOLD FRAKTUR CAPITAL F
+1D572;1D572;1D572;0047;0047; # (ð•²; ð•²; ð•²; G; G; ) MATHEMATICAL BOLD FRAKTUR CAPITAL G
+1D573;1D573;1D573;0048;0048; # (ð•³; ð•³; ð•³; H; H; ) MATHEMATICAL BOLD FRAKTUR CAPITAL H
+1D574;1D574;1D574;0049;0049; # (ð•´; ð•´; ð•´; I; I; ) MATHEMATICAL BOLD FRAKTUR CAPITAL I
+1D575;1D575;1D575;004A;004A; # (ð•µ; ð•µ; ð•µ; J; J; ) MATHEMATICAL BOLD FRAKTUR CAPITAL J
+1D576;1D576;1D576;004B;004B; # (ð•¶; ð•¶; ð•¶; K; K; ) MATHEMATICAL BOLD FRAKTUR CAPITAL K
+1D577;1D577;1D577;004C;004C; # (ð•·; ð•·; ð•·; L; L; ) MATHEMATICAL BOLD FRAKTUR CAPITAL L
+1D578;1D578;1D578;004D;004D; # (ð•¸; ð•¸; ð•¸; M; M; ) MATHEMATICAL BOLD FRAKTUR CAPITAL M
+1D579;1D579;1D579;004E;004E; # (ð•¹; ð•¹; ð•¹; N; N; ) MATHEMATICAL BOLD FRAKTUR CAPITAL N
+1D57A;1D57A;1D57A;004F;004F; # (ð•º; ð•º; ð•º; O; O; ) MATHEMATICAL BOLD FRAKTUR CAPITAL O
+1D57B;1D57B;1D57B;0050;0050; # (ð•»; ð•»; ð•»; P; P; ) MATHEMATICAL BOLD FRAKTUR CAPITAL P
+1D57C;1D57C;1D57C;0051;0051; # (ð•¼; ð•¼; ð•¼; Q; Q; ) MATHEMATICAL BOLD FRAKTUR CAPITAL Q
+1D57D;1D57D;1D57D;0052;0052; # (ð•½; ð•½; ð•½; R; R; ) MATHEMATICAL BOLD FRAKTUR CAPITAL R
+1D57E;1D57E;1D57E;0053;0053; # (ð•¾; ð•¾; ð•¾; S; S; ) MATHEMATICAL BOLD FRAKTUR CAPITAL S
+1D57F;1D57F;1D57F;0054;0054; # (ð•¿; ð•¿; ð•¿; T; T; ) MATHEMATICAL BOLD FRAKTUR CAPITAL T
+1D580;1D580;1D580;0055;0055; # (ð–€; ð–€; ð–€; U; U; ) MATHEMATICAL BOLD FRAKTUR CAPITAL U
+1D581;1D581;1D581;0056;0056; # (ð–; ð–; ð–; V; V; ) MATHEMATICAL BOLD FRAKTUR CAPITAL V
+1D582;1D582;1D582;0057;0057; # (ð–‚; ð–‚; ð–‚; W; W; ) MATHEMATICAL BOLD FRAKTUR CAPITAL W
+1D583;1D583;1D583;0058;0058; # (ð–ƒ; ð–ƒ; ð–ƒ; X; X; ) MATHEMATICAL BOLD FRAKTUR CAPITAL X
+1D584;1D584;1D584;0059;0059; # (ð–„; ð–„; ð–„; Y; Y; ) MATHEMATICAL BOLD FRAKTUR CAPITAL Y
+1D585;1D585;1D585;005A;005A; # (ð–…; ð–…; ð–…; Z; Z; ) MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+1D586;1D586;1D586;0061;0061; # (ð–†; ð–†; ð–†; a; a; ) MATHEMATICAL BOLD FRAKTUR SMALL A
+1D587;1D587;1D587;0062;0062; # (ð–‡; ð–‡; ð–‡; b; b; ) MATHEMATICAL BOLD FRAKTUR SMALL B
+1D588;1D588;1D588;0063;0063; # (ð–ˆ; ð–ˆ; ð–ˆ; c; c; ) MATHEMATICAL BOLD FRAKTUR SMALL C
+1D589;1D589;1D589;0064;0064; # (ð–‰; ð–‰; ð–‰; d; d; ) MATHEMATICAL BOLD FRAKTUR SMALL D
+1D58A;1D58A;1D58A;0065;0065; # (ð–Š; ð–Š; ð–Š; e; e; ) MATHEMATICAL BOLD FRAKTUR SMALL E
+1D58B;1D58B;1D58B;0066;0066; # (ð–‹; ð–‹; ð–‹; f; f; ) MATHEMATICAL BOLD FRAKTUR SMALL F
+1D58C;1D58C;1D58C;0067;0067; # (ð–Œ; ð–Œ; ð–Œ; g; g; ) MATHEMATICAL BOLD FRAKTUR SMALL G
+1D58D;1D58D;1D58D;0068;0068; # (ð–; ð–; ð–; h; h; ) MATHEMATICAL BOLD FRAKTUR SMALL H
+1D58E;1D58E;1D58E;0069;0069; # (ð–Ž; ð–Ž; ð–Ž; i; i; ) MATHEMATICAL BOLD FRAKTUR SMALL I
+1D58F;1D58F;1D58F;006A;006A; # (ð–; ð–; ð–; j; j; ) MATHEMATICAL BOLD FRAKTUR SMALL J
+1D590;1D590;1D590;006B;006B; # (ð–; ð–; ð–; k; k; ) MATHEMATICAL BOLD FRAKTUR SMALL K
+1D591;1D591;1D591;006C;006C; # (ð–‘; ð–‘; ð–‘; l; l; ) MATHEMATICAL BOLD FRAKTUR SMALL L
+1D592;1D592;1D592;006D;006D; # (ð–’; ð–’; ð–’; m; m; ) MATHEMATICAL BOLD FRAKTUR SMALL M
+1D593;1D593;1D593;006E;006E; # (ð–“; ð–“; ð–“; n; n; ) MATHEMATICAL BOLD FRAKTUR SMALL N
+1D594;1D594;1D594;006F;006F; # (ð–”; ð–”; ð–”; o; o; ) MATHEMATICAL BOLD FRAKTUR SMALL O
+1D595;1D595;1D595;0070;0070; # (ð–•; ð–•; ð–•; p; p; ) MATHEMATICAL BOLD FRAKTUR SMALL P
+1D596;1D596;1D596;0071;0071; # (ð––; ð––; ð––; q; q; ) MATHEMATICAL BOLD FRAKTUR SMALL Q
+1D597;1D597;1D597;0072;0072; # (ð–—; ð–—; ð–—; r; r; ) MATHEMATICAL BOLD FRAKTUR SMALL R
+1D598;1D598;1D598;0073;0073; # (ð–˜; ð–˜; ð–˜; s; s; ) MATHEMATICAL BOLD FRAKTUR SMALL S
+1D599;1D599;1D599;0074;0074; # (ð–™; ð–™; ð–™; t; t; ) MATHEMATICAL BOLD FRAKTUR SMALL T
+1D59A;1D59A;1D59A;0075;0075; # (ð–š; ð–š; ð–š; u; u; ) MATHEMATICAL BOLD FRAKTUR SMALL U
+1D59B;1D59B;1D59B;0076;0076; # (ð–›; ð–›; ð–›; v; v; ) MATHEMATICAL BOLD FRAKTUR SMALL V
+1D59C;1D59C;1D59C;0077;0077; # (ð–œ; ð–œ; ð–œ; w; w; ) MATHEMATICAL BOLD FRAKTUR SMALL W
+1D59D;1D59D;1D59D;0078;0078; # (ð–; ð–; ð–; x; x; ) MATHEMATICAL BOLD FRAKTUR SMALL X
+1D59E;1D59E;1D59E;0079;0079; # (ð–ž; ð–ž; ð–ž; y; y; ) MATHEMATICAL BOLD FRAKTUR SMALL Y
+1D59F;1D59F;1D59F;007A;007A; # (ð–Ÿ; ð–Ÿ; ð–Ÿ; z; z; ) MATHEMATICAL BOLD FRAKTUR SMALL Z
+1D5A0;1D5A0;1D5A0;0041;0041; # (ð– ; ð– ; ð– ; A; A; ) MATHEMATICAL SANS-SERIF CAPITAL A
+1D5A1;1D5A1;1D5A1;0042;0042; # (ð–¡; ð–¡; ð–¡; B; B; ) MATHEMATICAL SANS-SERIF CAPITAL B
+1D5A2;1D5A2;1D5A2;0043;0043; # (ð–¢; ð–¢; ð–¢; C; C; ) MATHEMATICAL SANS-SERIF CAPITAL C
+1D5A3;1D5A3;1D5A3;0044;0044; # (ð–£; ð–£; ð–£; D; D; ) MATHEMATICAL SANS-SERIF CAPITAL D
+1D5A4;1D5A4;1D5A4;0045;0045; # (ð–¤; ð–¤; ð–¤; E; E; ) MATHEMATICAL SANS-SERIF CAPITAL E
+1D5A5;1D5A5;1D5A5;0046;0046; # (ð–¥; ð–¥; ð–¥; F; F; ) MATHEMATICAL SANS-SERIF CAPITAL F
+1D5A6;1D5A6;1D5A6;0047;0047; # (ð–¦; ð–¦; ð–¦; G; G; ) MATHEMATICAL SANS-SERIF CAPITAL G
+1D5A7;1D5A7;1D5A7;0048;0048; # (ð–§; ð–§; ð–§; H; H; ) MATHEMATICAL SANS-SERIF CAPITAL H
+1D5A8;1D5A8;1D5A8;0049;0049; # (ð–¨; ð–¨; ð–¨; I; I; ) MATHEMATICAL SANS-SERIF CAPITAL I
+1D5A9;1D5A9;1D5A9;004A;004A; # (ð–©; ð–©; ð–©; J; J; ) MATHEMATICAL SANS-SERIF CAPITAL J
+1D5AA;1D5AA;1D5AA;004B;004B; # (ð–ª; ð–ª; ð–ª; K; K; ) MATHEMATICAL SANS-SERIF CAPITAL K
+1D5AB;1D5AB;1D5AB;004C;004C; # (ð–«; ð–«; ð–«; L; L; ) MATHEMATICAL SANS-SERIF CAPITAL L
+1D5AC;1D5AC;1D5AC;004D;004D; # (ð–¬; ð–¬; ð–¬; M; M; ) MATHEMATICAL SANS-SERIF CAPITAL M
+1D5AD;1D5AD;1D5AD;004E;004E; # (ð–­; ð–­; ð–­; N; N; ) MATHEMATICAL SANS-SERIF CAPITAL N
+1D5AE;1D5AE;1D5AE;004F;004F; # (ð–®; ð–®; ð–®; O; O; ) MATHEMATICAL SANS-SERIF CAPITAL O
+1D5AF;1D5AF;1D5AF;0050;0050; # (ð–¯; ð–¯; ð–¯; P; P; ) MATHEMATICAL SANS-SERIF CAPITAL P
+1D5B0;1D5B0;1D5B0;0051;0051; # (ð–°; ð–°; ð–°; Q; Q; ) MATHEMATICAL SANS-SERIF CAPITAL Q
+1D5B1;1D5B1;1D5B1;0052;0052; # (ð–±; ð–±; ð–±; R; R; ) MATHEMATICAL SANS-SERIF CAPITAL R
+1D5B2;1D5B2;1D5B2;0053;0053; # (ð–²; ð–²; ð–²; S; S; ) MATHEMATICAL SANS-SERIF CAPITAL S
+1D5B3;1D5B3;1D5B3;0054;0054; # (ð–³; ð–³; ð–³; T; T; ) MATHEMATICAL SANS-SERIF CAPITAL T
+1D5B4;1D5B4;1D5B4;0055;0055; # (ð–´; ð–´; ð–´; U; U; ) MATHEMATICAL SANS-SERIF CAPITAL U
+1D5B5;1D5B5;1D5B5;0056;0056; # (ð–µ; ð–µ; ð–µ; V; V; ) MATHEMATICAL SANS-SERIF CAPITAL V
+1D5B6;1D5B6;1D5B6;0057;0057; # (ð–¶; ð–¶; ð–¶; W; W; ) MATHEMATICAL SANS-SERIF CAPITAL W
+1D5B7;1D5B7;1D5B7;0058;0058; # (ð–·; ð–·; ð–·; X; X; ) MATHEMATICAL SANS-SERIF CAPITAL X
+1D5B8;1D5B8;1D5B8;0059;0059; # (ð–¸; ð–¸; ð–¸; Y; Y; ) MATHEMATICAL SANS-SERIF CAPITAL Y
+1D5B9;1D5B9;1D5B9;005A;005A; # (ð–¹; ð–¹; ð–¹; Z; Z; ) MATHEMATICAL SANS-SERIF CAPITAL Z
+1D5BA;1D5BA;1D5BA;0061;0061; # (ð–º; ð–º; ð–º; a; a; ) MATHEMATICAL SANS-SERIF SMALL A
+1D5BB;1D5BB;1D5BB;0062;0062; # (ð–»; ð–»; ð–»; b; b; ) MATHEMATICAL SANS-SERIF SMALL B
+1D5BC;1D5BC;1D5BC;0063;0063; # (ð–¼; ð–¼; ð–¼; c; c; ) MATHEMATICAL SANS-SERIF SMALL C
+1D5BD;1D5BD;1D5BD;0064;0064; # (ð–½; ð–½; ð–½; d; d; ) MATHEMATICAL SANS-SERIF SMALL D
+1D5BE;1D5BE;1D5BE;0065;0065; # (ð–¾; ð–¾; ð–¾; e; e; ) MATHEMATICAL SANS-SERIF SMALL E
+1D5BF;1D5BF;1D5BF;0066;0066; # (ð–¿; ð–¿; ð–¿; f; f; ) MATHEMATICAL SANS-SERIF SMALL F
+1D5C0;1D5C0;1D5C0;0067;0067; # (ð—€; ð—€; ð—€; g; g; ) MATHEMATICAL SANS-SERIF SMALL G
+1D5C1;1D5C1;1D5C1;0068;0068; # (ð—; ð—; ð—; h; h; ) MATHEMATICAL SANS-SERIF SMALL H
+1D5C2;1D5C2;1D5C2;0069;0069; # (ð—‚; ð—‚; ð—‚; i; i; ) MATHEMATICAL SANS-SERIF SMALL I
+1D5C3;1D5C3;1D5C3;006A;006A; # (ð—ƒ; ð—ƒ; ð—ƒ; j; j; ) MATHEMATICAL SANS-SERIF SMALL J
+1D5C4;1D5C4;1D5C4;006B;006B; # (ð—„; ð—„; ð—„; k; k; ) MATHEMATICAL SANS-SERIF SMALL K
+1D5C5;1D5C5;1D5C5;006C;006C; # (ð—…; ð—…; ð—…; l; l; ) MATHEMATICAL SANS-SERIF SMALL L
+1D5C6;1D5C6;1D5C6;006D;006D; # (ð—†; ð—†; ð—†; m; m; ) MATHEMATICAL SANS-SERIF SMALL M
+1D5C7;1D5C7;1D5C7;006E;006E; # (ð—‡; ð—‡; ð—‡; n; n; ) MATHEMATICAL SANS-SERIF SMALL N
+1D5C8;1D5C8;1D5C8;006F;006F; # (ð—ˆ; ð—ˆ; ð—ˆ; o; o; ) MATHEMATICAL SANS-SERIF SMALL O
+1D5C9;1D5C9;1D5C9;0070;0070; # (ð—‰; ð—‰; ð—‰; p; p; ) MATHEMATICAL SANS-SERIF SMALL P
+1D5CA;1D5CA;1D5CA;0071;0071; # (ð—Š; ð—Š; ð—Š; q; q; ) MATHEMATICAL SANS-SERIF SMALL Q
+1D5CB;1D5CB;1D5CB;0072;0072; # (ð—‹; ð—‹; ð—‹; r; r; ) MATHEMATICAL SANS-SERIF SMALL R
+1D5CC;1D5CC;1D5CC;0073;0073; # (ð—Œ; ð—Œ; ð—Œ; s; s; ) MATHEMATICAL SANS-SERIF SMALL S
+1D5CD;1D5CD;1D5CD;0074;0074; # (ð—; ð—; ð—; t; t; ) MATHEMATICAL SANS-SERIF SMALL T
+1D5CE;1D5CE;1D5CE;0075;0075; # (ð—Ž; ð—Ž; ð—Ž; u; u; ) MATHEMATICAL SANS-SERIF SMALL U
+1D5CF;1D5CF;1D5CF;0076;0076; # (ð—; ð—; ð—; v; v; ) MATHEMATICAL SANS-SERIF SMALL V
+1D5D0;1D5D0;1D5D0;0077;0077; # (ð—; ð—; ð—; w; w; ) MATHEMATICAL SANS-SERIF SMALL W
+1D5D1;1D5D1;1D5D1;0078;0078; # (ð—‘; ð—‘; ð—‘; x; x; ) MATHEMATICAL SANS-SERIF SMALL X
+1D5D2;1D5D2;1D5D2;0079;0079; # (ð—’; ð—’; ð—’; y; y; ) MATHEMATICAL SANS-SERIF SMALL Y
+1D5D3;1D5D3;1D5D3;007A;007A; # (ð—“; ð—“; ð—“; z; z; ) MATHEMATICAL SANS-SERIF SMALL Z
+1D5D4;1D5D4;1D5D4;0041;0041; # (ð—”; ð—”; ð—”; A; A; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+1D5D5;1D5D5;1D5D5;0042;0042; # (ð—•; ð—•; ð—•; B; B; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+1D5D6;1D5D6;1D5D6;0043;0043; # (ð—–; ð—–; ð—–; C; C; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+1D5D7;1D5D7;1D5D7;0044;0044; # (ð——; ð——; ð——; D; D; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+1D5D8;1D5D8;1D5D8;0045;0045; # (ð—˜; ð—˜; ð—˜; E; E; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+1D5D9;1D5D9;1D5D9;0046;0046; # (ð—™; ð—™; ð—™; F; F; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL F
+1D5DA;1D5DA;1D5DA;0047;0047; # (ð—š; ð—š; ð—š; G; G; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+1D5DB;1D5DB;1D5DB;0048;0048; # (ð—›; ð—›; ð—›; H; H; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL H
+1D5DC;1D5DC;1D5DC;0049;0049; # (ð—œ; ð—œ; ð—œ; I; I; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+1D5DD;1D5DD;1D5DD;004A;004A; # (ð—; ð—; ð—; J; J; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL J
+1D5DE;1D5DE;1D5DE;004B;004B; # (ð—ž; ð—ž; ð—ž; K; K; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+1D5DF;1D5DF;1D5DF;004C;004C; # (ð—Ÿ; ð—Ÿ; ð—Ÿ; L; L; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+1D5E0;1D5E0;1D5E0;004D;004D; # (ð— ; ð— ; ð— ; M; M; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+1D5E1;1D5E1;1D5E1;004E;004E; # (ð—¡; ð—¡; ð—¡; N; N; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+1D5E2;1D5E2;1D5E2;004F;004F; # (ð—¢; ð—¢; ð—¢; O; O; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+1D5E3;1D5E3;1D5E3;0050;0050; # (ð—£; ð—£; ð—£; P; P; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+1D5E4;1D5E4;1D5E4;0051;0051; # (ð—¤; ð—¤; ð—¤; Q; Q; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
+1D5E5;1D5E5;1D5E5;0052;0052; # (ð—¥; ð—¥; ð—¥; R; R; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+1D5E6;1D5E6;1D5E6;0053;0053; # (ð—¦; ð—¦; ð—¦; S; S; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+1D5E7;1D5E7;1D5E7;0054;0054; # (ð—§; ð—§; ð—§; T; T; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+1D5E8;1D5E8;1D5E8;0055;0055; # (ð—¨; ð—¨; ð—¨; U; U; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+1D5E9;1D5E9;1D5E9;0056;0056; # (ð—©; ð—©; ð—©; V; V; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL V
+1D5EA;1D5EA;1D5EA;0057;0057; # (ð—ª; ð—ª; ð—ª; W; W; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL W
+1D5EB;1D5EB;1D5EB;0058;0058; # (ð—«; ð—«; ð—«; X; X; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+1D5EC;1D5EC;1D5EC;0059;0059; # (ð—¬; ð—¬; ð—¬; Y; Y; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
+1D5ED;1D5ED;1D5ED;005A;005A; # (ð—­; ð—­; ð—­; Z; Z; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+1D5EE;1D5EE;1D5EE;0061;0061; # (ð—®; ð—®; ð—®; a; a; ) MATHEMATICAL SANS-SERIF BOLD SMALL A
+1D5EF;1D5EF;1D5EF;0062;0062; # (ð—¯; ð—¯; ð—¯; b; b; ) MATHEMATICAL SANS-SERIF BOLD SMALL B
+1D5F0;1D5F0;1D5F0;0063;0063; # (ð—°; ð—°; ð—°; c; c; ) MATHEMATICAL SANS-SERIF BOLD SMALL C
+1D5F1;1D5F1;1D5F1;0064;0064; # (ð—±; ð—±; ð—±; d; d; ) MATHEMATICAL SANS-SERIF BOLD SMALL D
+1D5F2;1D5F2;1D5F2;0065;0065; # (ð—²; ð—²; ð—²; e; e; ) MATHEMATICAL SANS-SERIF BOLD SMALL E
+1D5F3;1D5F3;1D5F3;0066;0066; # (ð—³; ð—³; ð—³; f; f; ) MATHEMATICAL SANS-SERIF BOLD SMALL F
+1D5F4;1D5F4;1D5F4;0067;0067; # (ð—´; ð—´; ð—´; g; g; ) MATHEMATICAL SANS-SERIF BOLD SMALL G
+1D5F5;1D5F5;1D5F5;0068;0068; # (ð—µ; ð—µ; ð—µ; h; h; ) MATHEMATICAL SANS-SERIF BOLD SMALL H
+1D5F6;1D5F6;1D5F6;0069;0069; # (ð—¶; ð—¶; ð—¶; i; i; ) MATHEMATICAL SANS-SERIF BOLD SMALL I
+1D5F7;1D5F7;1D5F7;006A;006A; # (ð—·; ð—·; ð—·; j; j; ) MATHEMATICAL SANS-SERIF BOLD SMALL J
+1D5F8;1D5F8;1D5F8;006B;006B; # (ð—¸; ð—¸; ð—¸; k; k; ) MATHEMATICAL SANS-SERIF BOLD SMALL K
+1D5F9;1D5F9;1D5F9;006C;006C; # (ð—¹; ð—¹; ð—¹; l; l; ) MATHEMATICAL SANS-SERIF BOLD SMALL L
+1D5FA;1D5FA;1D5FA;006D;006D; # (ð—º; ð—º; ð—º; m; m; ) MATHEMATICAL SANS-SERIF BOLD SMALL M
+1D5FB;1D5FB;1D5FB;006E;006E; # (ð—»; ð—»; ð—»; n; n; ) MATHEMATICAL SANS-SERIF BOLD SMALL N
+1D5FC;1D5FC;1D5FC;006F;006F; # (ð—¼; ð—¼; ð—¼; o; o; ) MATHEMATICAL SANS-SERIF BOLD SMALL O
+1D5FD;1D5FD;1D5FD;0070;0070; # (ð—½; ð—½; ð—½; p; p; ) MATHEMATICAL SANS-SERIF BOLD SMALL P
+1D5FE;1D5FE;1D5FE;0071;0071; # (ð—¾; ð—¾; ð—¾; q; q; ) MATHEMATICAL SANS-SERIF BOLD SMALL Q
+1D5FF;1D5FF;1D5FF;0072;0072; # (ð—¿; ð—¿; ð—¿; r; r; ) MATHEMATICAL SANS-SERIF BOLD SMALL R
+1D600;1D600;1D600;0073;0073; # (ð˜€; ð˜€; ð˜€; s; s; ) MATHEMATICAL SANS-SERIF BOLD SMALL S
+1D601;1D601;1D601;0074;0074; # (ð˜; ð˜; ð˜; t; t; ) MATHEMATICAL SANS-SERIF BOLD SMALL T
+1D602;1D602;1D602;0075;0075; # (ð˜‚; ð˜‚; ð˜‚; u; u; ) MATHEMATICAL SANS-SERIF BOLD SMALL U
+1D603;1D603;1D603;0076;0076; # (ð˜ƒ; ð˜ƒ; ð˜ƒ; v; v; ) MATHEMATICAL SANS-SERIF BOLD SMALL V
+1D604;1D604;1D604;0077;0077; # (ð˜„; ð˜„; ð˜„; w; w; ) MATHEMATICAL SANS-SERIF BOLD SMALL W
+1D605;1D605;1D605;0078;0078; # (ð˜…; ð˜…; ð˜…; x; x; ) MATHEMATICAL SANS-SERIF BOLD SMALL X
+1D606;1D606;1D606;0079;0079; # (ð˜†; ð˜†; ð˜†; y; y; ) MATHEMATICAL SANS-SERIF BOLD SMALL Y
+1D607;1D607;1D607;007A;007A; # (ð˜‡; ð˜‡; ð˜‡; z; z; ) MATHEMATICAL SANS-SERIF BOLD SMALL Z
+1D608;1D608;1D608;0041;0041; # (ð˜ˆ; ð˜ˆ; ð˜ˆ; A; A; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
+1D609;1D609;1D609;0042;0042; # (ð˜‰; ð˜‰; ð˜‰; B; B; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
+1D60A;1D60A;1D60A;0043;0043; # (ð˜Š; ð˜Š; ð˜Š; C; C; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
+1D60B;1D60B;1D60B;0044;0044; # (ð˜‹; ð˜‹; ð˜‹; D; D; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
+1D60C;1D60C;1D60C;0045;0045; # (ð˜Œ; ð˜Œ; ð˜Œ; E; E; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
+1D60D;1D60D;1D60D;0046;0046; # (ð˜; ð˜; ð˜; F; F; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
+1D60E;1D60E;1D60E;0047;0047; # (ð˜Ž; ð˜Ž; ð˜Ž; G; G; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
+1D60F;1D60F;1D60F;0048;0048; # (ð˜; ð˜; ð˜; H; H; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
+1D610;1D610;1D610;0049;0049; # (ð˜; ð˜; ð˜; I; I; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
+1D611;1D611;1D611;004A;004A; # (ð˜‘; ð˜‘; ð˜‘; J; J; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
+1D612;1D612;1D612;004B;004B; # (ð˜’; ð˜’; ð˜’; K; K; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
+1D613;1D613;1D613;004C;004C; # (ð˜“; ð˜“; ð˜“; L; L; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
+1D614;1D614;1D614;004D;004D; # (ð˜”; ð˜”; ð˜”; M; M; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
+1D615;1D615;1D615;004E;004E; # (ð˜•; ð˜•; ð˜•; N; N; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
+1D616;1D616;1D616;004F;004F; # (ð˜–; ð˜–; ð˜–; O; O; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
+1D617;1D617;1D617;0050;0050; # (ð˜—; ð˜—; ð˜—; P; P; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
+1D618;1D618;1D618;0051;0051; # (ð˜˜; ð˜˜; ð˜˜; Q; Q; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
+1D619;1D619;1D619;0052;0052; # (ð˜™; ð˜™; ð˜™; R; R; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
+1D61A;1D61A;1D61A;0053;0053; # (ð˜š; ð˜š; ð˜š; S; S; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
+1D61B;1D61B;1D61B;0054;0054; # (ð˜›; ð˜›; ð˜›; T; T; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
+1D61C;1D61C;1D61C;0055;0055; # (ð˜œ; ð˜œ; ð˜œ; U; U; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
+1D61D;1D61D;1D61D;0056;0056; # (ð˜; ð˜; ð˜; V; V; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
+1D61E;1D61E;1D61E;0057;0057; # (ð˜ž; ð˜ž; ð˜ž; W; W; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
+1D61F;1D61F;1D61F;0058;0058; # (ð˜Ÿ; ð˜Ÿ; ð˜Ÿ; X; X; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
+1D620;1D620;1D620;0059;0059; # (ð˜ ; ð˜ ; ð˜ ; Y; Y; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
+1D621;1D621;1D621;005A;005A; # (ð˜¡; ð˜¡; ð˜¡; Z; Z; ) MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+1D622;1D622;1D622;0061;0061; # (ð˜¢; ð˜¢; ð˜¢; a; a; ) MATHEMATICAL SANS-SERIF ITALIC SMALL A
+1D623;1D623;1D623;0062;0062; # (ð˜£; ð˜£; ð˜£; b; b; ) MATHEMATICAL SANS-SERIF ITALIC SMALL B
+1D624;1D624;1D624;0063;0063; # (ð˜¤; ð˜¤; ð˜¤; c; c; ) MATHEMATICAL SANS-SERIF ITALIC SMALL C
+1D625;1D625;1D625;0064;0064; # (ð˜¥; ð˜¥; ð˜¥; d; d; ) MATHEMATICAL SANS-SERIF ITALIC SMALL D
+1D626;1D626;1D626;0065;0065; # (ð˜¦; ð˜¦; ð˜¦; e; e; ) MATHEMATICAL SANS-SERIF ITALIC SMALL E
+1D627;1D627;1D627;0066;0066; # (ð˜§; ð˜§; ð˜§; f; f; ) MATHEMATICAL SANS-SERIF ITALIC SMALL F
+1D628;1D628;1D628;0067;0067; # (ð˜¨; ð˜¨; ð˜¨; g; g; ) MATHEMATICAL SANS-SERIF ITALIC SMALL G
+1D629;1D629;1D629;0068;0068; # (ð˜©; ð˜©; ð˜©; h; h; ) MATHEMATICAL SANS-SERIF ITALIC SMALL H
+1D62A;1D62A;1D62A;0069;0069; # (ð˜ª; ð˜ª; ð˜ª; i; i; ) MATHEMATICAL SANS-SERIF ITALIC SMALL I
+1D62B;1D62B;1D62B;006A;006A; # (ð˜«; ð˜«; ð˜«; j; j; ) MATHEMATICAL SANS-SERIF ITALIC SMALL J
+1D62C;1D62C;1D62C;006B;006B; # (ð˜¬; ð˜¬; ð˜¬; k; k; ) MATHEMATICAL SANS-SERIF ITALIC SMALL K
+1D62D;1D62D;1D62D;006C;006C; # (ð˜­; ð˜­; ð˜­; l; l; ) MATHEMATICAL SANS-SERIF ITALIC SMALL L
+1D62E;1D62E;1D62E;006D;006D; # (ð˜®; ð˜®; ð˜®; m; m; ) MATHEMATICAL SANS-SERIF ITALIC SMALL M
+1D62F;1D62F;1D62F;006E;006E; # (ð˜¯; ð˜¯; ð˜¯; n; n; ) MATHEMATICAL SANS-SERIF ITALIC SMALL N
+1D630;1D630;1D630;006F;006F; # (ð˜°; ð˜°; ð˜°; o; o; ) MATHEMATICAL SANS-SERIF ITALIC SMALL O
+1D631;1D631;1D631;0070;0070; # (ð˜±; ð˜±; ð˜±; p; p; ) MATHEMATICAL SANS-SERIF ITALIC SMALL P
+1D632;1D632;1D632;0071;0071; # (ð˜²; ð˜²; ð˜²; q; q; ) MATHEMATICAL SANS-SERIF ITALIC SMALL Q
+1D633;1D633;1D633;0072;0072; # (ð˜³; ð˜³; ð˜³; r; r; ) MATHEMATICAL SANS-SERIF ITALIC SMALL R
+1D634;1D634;1D634;0073;0073; # (ð˜´; ð˜´; ð˜´; s; s; ) MATHEMATICAL SANS-SERIF ITALIC SMALL S
+1D635;1D635;1D635;0074;0074; # (ð˜µ; ð˜µ; ð˜µ; t; t; ) MATHEMATICAL SANS-SERIF ITALIC SMALL T
+1D636;1D636;1D636;0075;0075; # (ð˜¶; ð˜¶; ð˜¶; u; u; ) MATHEMATICAL SANS-SERIF ITALIC SMALL U
+1D637;1D637;1D637;0076;0076; # (ð˜·; ð˜·; ð˜·; v; v; ) MATHEMATICAL SANS-SERIF ITALIC SMALL V
+1D638;1D638;1D638;0077;0077; # (ð˜¸; ð˜¸; ð˜¸; w; w; ) MATHEMATICAL SANS-SERIF ITALIC SMALL W
+1D639;1D639;1D639;0078;0078; # (ð˜¹; ð˜¹; ð˜¹; x; x; ) MATHEMATICAL SANS-SERIF ITALIC SMALL X
+1D63A;1D63A;1D63A;0079;0079; # (ð˜º; ð˜º; ð˜º; y; y; ) MATHEMATICAL SANS-SERIF ITALIC SMALL Y
+1D63B;1D63B;1D63B;007A;007A; # (ð˜»; ð˜»; ð˜»; z; z; ) MATHEMATICAL SANS-SERIF ITALIC SMALL Z
+1D63C;1D63C;1D63C;0041;0041; # (ð˜¼; ð˜¼; ð˜¼; A; A; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+1D63D;1D63D;1D63D;0042;0042; # (ð˜½; ð˜½; ð˜½; B; B; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+1D63E;1D63E;1D63E;0043;0043; # (ð˜¾; ð˜¾; ð˜¾; C; C; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+1D63F;1D63F;1D63F;0044;0044; # (ð˜¿; ð˜¿; ð˜¿; D; D; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+1D640;1D640;1D640;0045;0045; # (ð™€; ð™€; ð™€; E; E; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+1D641;1D641;1D641;0046;0046; # (ð™; ð™; ð™; F; F; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
+1D642;1D642;1D642;0047;0047; # (ð™‚; ð™‚; ð™‚; G; G; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+1D643;1D643;1D643;0048;0048; # (ð™ƒ; ð™ƒ; ð™ƒ; H; H; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
+1D644;1D644;1D644;0049;0049; # (ð™„; ð™„; ð™„; I; I; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+1D645;1D645;1D645;004A;004A; # (ð™…; ð™…; ð™…; J; J; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
+1D646;1D646;1D646;004B;004B; # (ð™†; ð™†; ð™†; K; K; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+1D647;1D647;1D647;004C;004C; # (ð™‡; ð™‡; ð™‡; L; L; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+1D648;1D648;1D648;004D;004D; # (ð™ˆ; ð™ˆ; ð™ˆ; M; M; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+1D649;1D649;1D649;004E;004E; # (ð™‰; ð™‰; ð™‰; N; N; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+1D64A;1D64A;1D64A;004F;004F; # (ð™Š; ð™Š; ð™Š; O; O; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+1D64B;1D64B;1D64B;0050;0050; # (ð™‹; ð™‹; ð™‹; P; P; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+1D64C;1D64C;1D64C;0051;0051; # (ð™Œ; ð™Œ; ð™Œ; Q; Q; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
+1D64D;1D64D;1D64D;0052;0052; # (ð™; ð™; ð™; R; R; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+1D64E;1D64E;1D64E;0053;0053; # (ð™Ž; ð™Ž; ð™Ž; S; S; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+1D64F;1D64F;1D64F;0054;0054; # (ð™; ð™; ð™; T; T; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+1D650;1D650;1D650;0055;0055; # (ð™; ð™; ð™; U; U; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+1D651;1D651;1D651;0056;0056; # (ð™‘; ð™‘; ð™‘; V; V; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
+1D652;1D652;1D652;0057;0057; # (ð™’; ð™’; ð™’; W; W; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
+1D653;1D653;1D653;0058;0058; # (ð™“; ð™“; ð™“; X; X; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+1D654;1D654;1D654;0059;0059; # (ð™”; ð™”; ð™”; Y; Y; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
+1D655;1D655;1D655;005A;005A; # (ð™•; ð™•; ð™•; Z; Z; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+1D656;1D656;1D656;0061;0061; # (ð™–; ð™–; ð™–; a; a; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
+1D657;1D657;1D657;0062;0062; # (ð™—; ð™—; ð™—; b; b; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
+1D658;1D658;1D658;0063;0063; # (ð™˜; ð™˜; ð™˜; c; c; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
+1D659;1D659;1D659;0064;0064; # (ð™™; ð™™; ð™™; d; d; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
+1D65A;1D65A;1D65A;0065;0065; # (ð™š; ð™š; ð™š; e; e; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
+1D65B;1D65B;1D65B;0066;0066; # (ð™›; ð™›; ð™›; f; f; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
+1D65C;1D65C;1D65C;0067;0067; # (ð™œ; ð™œ; ð™œ; g; g; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
+1D65D;1D65D;1D65D;0068;0068; # (ð™; ð™; ð™; h; h; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
+1D65E;1D65E;1D65E;0069;0069; # (ð™ž; ð™ž; ð™ž; i; i; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
+1D65F;1D65F;1D65F;006A;006A; # (ð™Ÿ; ð™Ÿ; ð™Ÿ; j; j; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
+1D660;1D660;1D660;006B;006B; # (ð™ ; ð™ ; ð™ ; k; k; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
+1D661;1D661;1D661;006C;006C; # (ð™¡; ð™¡; ð™¡; l; l; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
+1D662;1D662;1D662;006D;006D; # (ð™¢; ð™¢; ð™¢; m; m; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
+1D663;1D663;1D663;006E;006E; # (ð™£; ð™£; ð™£; n; n; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
+1D664;1D664;1D664;006F;006F; # (ð™¤; ð™¤; ð™¤; o; o; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
+1D665;1D665;1D665;0070;0070; # (ð™¥; ð™¥; ð™¥; p; p; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
+1D666;1D666;1D666;0071;0071; # (ð™¦; ð™¦; ð™¦; q; q; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
+1D667;1D667;1D667;0072;0072; # (ð™§; ð™§; ð™§; r; r; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
+1D668;1D668;1D668;0073;0073; # (ð™¨; ð™¨; ð™¨; s; s; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
+1D669;1D669;1D669;0074;0074; # (ð™©; ð™©; ð™©; t; t; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
+1D66A;1D66A;1D66A;0075;0075; # (ð™ª; ð™ª; ð™ª; u; u; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
+1D66B;1D66B;1D66B;0076;0076; # (ð™«; ð™«; ð™«; v; v; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
+1D66C;1D66C;1D66C;0077;0077; # (ð™¬; ð™¬; ð™¬; w; w; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
+1D66D;1D66D;1D66D;0078;0078; # (ð™­; ð™­; ð™­; x; x; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
+1D66E;1D66E;1D66E;0079;0079; # (ð™®; ð™®; ð™®; y; y; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
+1D66F;1D66F;1D66F;007A;007A; # (ð™¯; ð™¯; ð™¯; z; z; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+1D670;1D670;1D670;0041;0041; # (ð™°; ð™°; ð™°; A; A; ) MATHEMATICAL MONOSPACE CAPITAL A
+1D671;1D671;1D671;0042;0042; # (ð™±; ð™±; ð™±; B; B; ) MATHEMATICAL MONOSPACE CAPITAL B
+1D672;1D672;1D672;0043;0043; # (ð™²; ð™²; ð™²; C; C; ) MATHEMATICAL MONOSPACE CAPITAL C
+1D673;1D673;1D673;0044;0044; # (ð™³; ð™³; ð™³; D; D; ) MATHEMATICAL MONOSPACE CAPITAL D
+1D674;1D674;1D674;0045;0045; # (ð™´; ð™´; ð™´; E; E; ) MATHEMATICAL MONOSPACE CAPITAL E
+1D675;1D675;1D675;0046;0046; # (ð™µ; ð™µ; ð™µ; F; F; ) MATHEMATICAL MONOSPACE CAPITAL F
+1D676;1D676;1D676;0047;0047; # (ð™¶; ð™¶; ð™¶; G; G; ) MATHEMATICAL MONOSPACE CAPITAL G
+1D677;1D677;1D677;0048;0048; # (ð™·; ð™·; ð™·; H; H; ) MATHEMATICAL MONOSPACE CAPITAL H
+1D678;1D678;1D678;0049;0049; # (ð™¸; ð™¸; ð™¸; I; I; ) MATHEMATICAL MONOSPACE CAPITAL I
+1D679;1D679;1D679;004A;004A; # (ð™¹; ð™¹; ð™¹; J; J; ) MATHEMATICAL MONOSPACE CAPITAL J
+1D67A;1D67A;1D67A;004B;004B; # (ð™º; ð™º; ð™º; K; K; ) MATHEMATICAL MONOSPACE CAPITAL K
+1D67B;1D67B;1D67B;004C;004C; # (ð™»; ð™»; ð™»; L; L; ) MATHEMATICAL MONOSPACE CAPITAL L
+1D67C;1D67C;1D67C;004D;004D; # (ð™¼; ð™¼; ð™¼; M; M; ) MATHEMATICAL MONOSPACE CAPITAL M
+1D67D;1D67D;1D67D;004E;004E; # (ð™½; ð™½; ð™½; N; N; ) MATHEMATICAL MONOSPACE CAPITAL N
+1D67E;1D67E;1D67E;004F;004F; # (ð™¾; ð™¾; ð™¾; O; O; ) MATHEMATICAL MONOSPACE CAPITAL O
+1D67F;1D67F;1D67F;0050;0050; # (ð™¿; ð™¿; ð™¿; P; P; ) MATHEMATICAL MONOSPACE CAPITAL P
+1D680;1D680;1D680;0051;0051; # (ðš€; ðš€; ðš€; Q; Q; ) MATHEMATICAL MONOSPACE CAPITAL Q
+1D681;1D681;1D681;0052;0052; # (ðš; ðš; ðš; R; R; ) MATHEMATICAL MONOSPACE CAPITAL R
+1D682;1D682;1D682;0053;0053; # (ðš‚; ðš‚; ðš‚; S; S; ) MATHEMATICAL MONOSPACE CAPITAL S
+1D683;1D683;1D683;0054;0054; # (ðšƒ; ðšƒ; ðšƒ; T; T; ) MATHEMATICAL MONOSPACE CAPITAL T
+1D684;1D684;1D684;0055;0055; # (ðš„; ðš„; ðš„; U; U; ) MATHEMATICAL MONOSPACE CAPITAL U
+1D685;1D685;1D685;0056;0056; # (ðš…; ðš…; ðš…; V; V; ) MATHEMATICAL MONOSPACE CAPITAL V
+1D686;1D686;1D686;0057;0057; # (ðš†; ðš†; ðš†; W; W; ) MATHEMATICAL MONOSPACE CAPITAL W
+1D687;1D687;1D687;0058;0058; # (ðš‡; ðš‡; ðš‡; X; X; ) MATHEMATICAL MONOSPACE CAPITAL X
+1D688;1D688;1D688;0059;0059; # (ðšˆ; ðšˆ; ðšˆ; Y; Y; ) MATHEMATICAL MONOSPACE CAPITAL Y
+1D689;1D689;1D689;005A;005A; # (ðš‰; ðš‰; ðš‰; Z; Z; ) MATHEMATICAL MONOSPACE CAPITAL Z
+1D68A;1D68A;1D68A;0061;0061; # (ðšŠ; ðšŠ; ðšŠ; a; a; ) MATHEMATICAL MONOSPACE SMALL A
+1D68B;1D68B;1D68B;0062;0062; # (ðš‹; ðš‹; ðš‹; b; b; ) MATHEMATICAL MONOSPACE SMALL B
+1D68C;1D68C;1D68C;0063;0063; # (ðšŒ; ðšŒ; ðšŒ; c; c; ) MATHEMATICAL MONOSPACE SMALL C
+1D68D;1D68D;1D68D;0064;0064; # (ðš; ðš; ðš; d; d; ) MATHEMATICAL MONOSPACE SMALL D
+1D68E;1D68E;1D68E;0065;0065; # (ðšŽ; ðšŽ; ðšŽ; e; e; ) MATHEMATICAL MONOSPACE SMALL E
+1D68F;1D68F;1D68F;0066;0066; # (ðš; ðš; ðš; f; f; ) MATHEMATICAL MONOSPACE SMALL F
+1D690;1D690;1D690;0067;0067; # (ðš; ðš; ðš; g; g; ) MATHEMATICAL MONOSPACE SMALL G
+1D691;1D691;1D691;0068;0068; # (ðš‘; ðš‘; ðš‘; h; h; ) MATHEMATICAL MONOSPACE SMALL H
+1D692;1D692;1D692;0069;0069; # (ðš’; ðš’; ðš’; i; i; ) MATHEMATICAL MONOSPACE SMALL I
+1D693;1D693;1D693;006A;006A; # (ðš“; ðš“; ðš“; j; j; ) MATHEMATICAL MONOSPACE SMALL J
+1D694;1D694;1D694;006B;006B; # (ðš”; ðš”; ðš”; k; k; ) MATHEMATICAL MONOSPACE SMALL K
+1D695;1D695;1D695;006C;006C; # (ðš•; ðš•; ðš•; l; l; ) MATHEMATICAL MONOSPACE SMALL L
+1D696;1D696;1D696;006D;006D; # (ðš–; ðš–; ðš–; m; m; ) MATHEMATICAL MONOSPACE SMALL M
+1D697;1D697;1D697;006E;006E; # (ðš—; ðš—; ðš—; n; n; ) MATHEMATICAL MONOSPACE SMALL N
+1D698;1D698;1D698;006F;006F; # (ðš˜; ðš˜; ðš˜; o; o; ) MATHEMATICAL MONOSPACE SMALL O
+1D699;1D699;1D699;0070;0070; # (ðš™; ðš™; ðš™; p; p; ) MATHEMATICAL MONOSPACE SMALL P
+1D69A;1D69A;1D69A;0071;0071; # (ðšš; ðšš; ðšš; q; q; ) MATHEMATICAL MONOSPACE SMALL Q
+1D69B;1D69B;1D69B;0072;0072; # (ðš›; ðš›; ðš›; r; r; ) MATHEMATICAL MONOSPACE SMALL R
+1D69C;1D69C;1D69C;0073;0073; # (ðšœ; ðšœ; ðšœ; s; s; ) MATHEMATICAL MONOSPACE SMALL S
+1D69D;1D69D;1D69D;0074;0074; # (ðš; ðš; ðš; t; t; ) MATHEMATICAL MONOSPACE SMALL T
+1D69E;1D69E;1D69E;0075;0075; # (ðšž; ðšž; ðšž; u; u; ) MATHEMATICAL MONOSPACE SMALL U
+1D69F;1D69F;1D69F;0076;0076; # (ðšŸ; ðšŸ; ðšŸ; v; v; ) MATHEMATICAL MONOSPACE SMALL V
+1D6A0;1D6A0;1D6A0;0077;0077; # (ðš ; ðš ; ðš ; w; w; ) MATHEMATICAL MONOSPACE SMALL W
+1D6A1;1D6A1;1D6A1;0078;0078; # (ðš¡; ðš¡; ðš¡; x; x; ) MATHEMATICAL MONOSPACE SMALL X
+1D6A2;1D6A2;1D6A2;0079;0079; # (ðš¢; ðš¢; ðš¢; y; y; ) MATHEMATICAL MONOSPACE SMALL Y
+1D6A3;1D6A3;1D6A3;007A;007A; # (ðš£; ðš£; ðš£; z; z; ) MATHEMATICAL MONOSPACE SMALL Z
+1D6A4;1D6A4;1D6A4;0131;0131; # (ðš¤; ðš¤; ðš¤; ı; ı; ) MATHEMATICAL ITALIC SMALL DOTLESS I
+1D6A5;1D6A5;1D6A5;0237;0237; # (ðš¥; ðš¥; ðš¥; È·; È·; ) MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8;1D6A8;1D6A8;0391;0391; # (ðš¨; ðš¨; ðš¨; Α; Α; ) MATHEMATICAL BOLD CAPITAL ALPHA
+1D6A9;1D6A9;1D6A9;0392;0392; # (ðš©; ðš©; ðš©; Î’; Î’; ) MATHEMATICAL BOLD CAPITAL BETA
+1D6AA;1D6AA;1D6AA;0393;0393; # (ðšª; ðšª; ðšª; Γ; Γ; ) MATHEMATICAL BOLD CAPITAL GAMMA
+1D6AB;1D6AB;1D6AB;0394;0394; # (ðš«; ðš«; ðš«; Δ; Δ; ) MATHEMATICAL BOLD CAPITAL DELTA
+1D6AC;1D6AC;1D6AC;0395;0395; # (ðš¬; ðš¬; ðš¬; Ε; Ε; ) MATHEMATICAL BOLD CAPITAL EPSILON
+1D6AD;1D6AD;1D6AD;0396;0396; # (ðš­; ðš­; ðš­; Ζ; Ζ; ) MATHEMATICAL BOLD CAPITAL ZETA
+1D6AE;1D6AE;1D6AE;0397;0397; # (ðš®; ðš®; ðš®; Η; Η; ) MATHEMATICAL BOLD CAPITAL ETA
+1D6AF;1D6AF;1D6AF;0398;0398; # (ðš¯; ðš¯; ðš¯; Θ; Θ; ) MATHEMATICAL BOLD CAPITAL THETA
+1D6B0;1D6B0;1D6B0;0399;0399; # (ðš°; ðš°; ðš°; Ι; Ι; ) MATHEMATICAL BOLD CAPITAL IOTA
+1D6B1;1D6B1;1D6B1;039A;039A; # (ðš±; ðš±; ðš±; Κ; Κ; ) MATHEMATICAL BOLD CAPITAL KAPPA
+1D6B2;1D6B2;1D6B2;039B;039B; # (ðš²; ðš²; ðš²; Λ; Λ; ) MATHEMATICAL BOLD CAPITAL LAMDA
+1D6B3;1D6B3;1D6B3;039C;039C; # (ðš³; ðš³; ðš³; Îœ; Îœ; ) MATHEMATICAL BOLD CAPITAL MU
+1D6B4;1D6B4;1D6B4;039D;039D; # (ðš´; ðš´; ðš´; Î; Î; ) MATHEMATICAL BOLD CAPITAL NU
+1D6B5;1D6B5;1D6B5;039E;039E; # (ðšµ; ðšµ; ðšµ; Ξ; Ξ; ) MATHEMATICAL BOLD CAPITAL XI
+1D6B6;1D6B6;1D6B6;039F;039F; # (ðš¶; ðš¶; ðš¶; Ο; Ο; ) MATHEMATICAL BOLD CAPITAL OMICRON
+1D6B7;1D6B7;1D6B7;03A0;03A0; # (ðš·; ðš·; ðš·; Π; Π; ) MATHEMATICAL BOLD CAPITAL PI
+1D6B8;1D6B8;1D6B8;03A1;03A1; # (ðš¸; ðš¸; ðš¸; Ρ; Ρ; ) MATHEMATICAL BOLD CAPITAL RHO
+1D6B9;1D6B9;1D6B9;0398;0398; # (ðš¹; ðš¹; ðš¹; Θ; Θ; ) MATHEMATICAL BOLD CAPITAL THETA SYMBOL
+1D6BA;1D6BA;1D6BA;03A3;03A3; # (ðšº; ðšº; ðšº; Σ; Σ; ) MATHEMATICAL BOLD CAPITAL SIGMA
+1D6BB;1D6BB;1D6BB;03A4;03A4; # (ðš»; ðš»; ðš»; Τ; Τ; ) MATHEMATICAL BOLD CAPITAL TAU
+1D6BC;1D6BC;1D6BC;03A5;03A5; # (ðš¼; ðš¼; ðš¼; Î¥; Î¥; ) MATHEMATICAL BOLD CAPITAL UPSILON
+1D6BD;1D6BD;1D6BD;03A6;03A6; # (ðš½; ðš½; ðš½; Φ; Φ; ) MATHEMATICAL BOLD CAPITAL PHI
+1D6BE;1D6BE;1D6BE;03A7;03A7; # (ðš¾; ðš¾; ðš¾; Χ; Χ; ) MATHEMATICAL BOLD CAPITAL CHI
+1D6BF;1D6BF;1D6BF;03A8;03A8; # (ðš¿; ðš¿; ðš¿; Ψ; Ψ; ) MATHEMATICAL BOLD CAPITAL PSI
+1D6C0;1D6C0;1D6C0;03A9;03A9; # (ð›€; ð›€; ð›€; Ω; Ω; ) MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1;1D6C1;1D6C1;2207;2207; # (ð›; ð›; ð›; ∇; ∇; ) MATHEMATICAL BOLD NABLA
+1D6C2;1D6C2;1D6C2;03B1;03B1; # (ð›‚; ð›‚; ð›‚; α; α; ) MATHEMATICAL BOLD SMALL ALPHA
+1D6C3;1D6C3;1D6C3;03B2;03B2; # (ð›ƒ; ð›ƒ; ð›ƒ; β; β; ) MATHEMATICAL BOLD SMALL BETA
+1D6C4;1D6C4;1D6C4;03B3;03B3; # (ð›„; ð›„; ð›„; γ; γ; ) MATHEMATICAL BOLD SMALL GAMMA
+1D6C5;1D6C5;1D6C5;03B4;03B4; # (ð›…; ð›…; ð›…; δ; δ; ) MATHEMATICAL BOLD SMALL DELTA
+1D6C6;1D6C6;1D6C6;03B5;03B5; # (ð›†; ð›†; ð›†; ε; ε; ) MATHEMATICAL BOLD SMALL EPSILON
+1D6C7;1D6C7;1D6C7;03B6;03B6; # (ð›‡; ð›‡; ð›‡; ζ; ζ; ) MATHEMATICAL BOLD SMALL ZETA
+1D6C8;1D6C8;1D6C8;03B7;03B7; # (ð›ˆ; ð›ˆ; ð›ˆ; η; η; ) MATHEMATICAL BOLD SMALL ETA
+1D6C9;1D6C9;1D6C9;03B8;03B8; # (ð›‰; ð›‰; ð›‰; θ; θ; ) MATHEMATICAL BOLD SMALL THETA
+1D6CA;1D6CA;1D6CA;03B9;03B9; # (ð›Š; ð›Š; ð›Š; ι; ι; ) MATHEMATICAL BOLD SMALL IOTA
+1D6CB;1D6CB;1D6CB;03BA;03BA; # (ð›‹; ð›‹; ð›‹; κ; κ; ) MATHEMATICAL BOLD SMALL KAPPA
+1D6CC;1D6CC;1D6CC;03BB;03BB; # (ð›Œ; ð›Œ; ð›Œ; λ; λ; ) MATHEMATICAL BOLD SMALL LAMDA
+1D6CD;1D6CD;1D6CD;03BC;03BC; # (ð›; ð›; ð›; μ; μ; ) MATHEMATICAL BOLD SMALL MU
+1D6CE;1D6CE;1D6CE;03BD;03BD; # (ð›Ž; ð›Ž; ð›Ž; ν; ν; ) MATHEMATICAL BOLD SMALL NU
+1D6CF;1D6CF;1D6CF;03BE;03BE; # (ð›; ð›; ð›; ξ; ξ; ) MATHEMATICAL BOLD SMALL XI
+1D6D0;1D6D0;1D6D0;03BF;03BF; # (ð›; ð›; ð›; ο; ο; ) MATHEMATICAL BOLD SMALL OMICRON
+1D6D1;1D6D1;1D6D1;03C0;03C0; # (ð›‘; ð›‘; ð›‘; Ï€; Ï€; ) MATHEMATICAL BOLD SMALL PI
+1D6D2;1D6D2;1D6D2;03C1;03C1; # (ð›’; ð›’; ð›’; Ï; Ï; ) MATHEMATICAL BOLD SMALL RHO
+1D6D3;1D6D3;1D6D3;03C2;03C2; # (ð›“; ð›“; ð›“; Ï‚; Ï‚; ) MATHEMATICAL BOLD SMALL FINAL SIGMA
+1D6D4;1D6D4;1D6D4;03C3;03C3; # (ð›”; ð›”; ð›”; σ; σ; ) MATHEMATICAL BOLD SMALL SIGMA
+1D6D5;1D6D5;1D6D5;03C4;03C4; # (ð›•; ð›•; ð›•; Ï„; Ï„; ) MATHEMATICAL BOLD SMALL TAU
+1D6D6;1D6D6;1D6D6;03C5;03C5; # (ð›–; ð›–; ð›–; Ï…; Ï…; ) MATHEMATICAL BOLD SMALL UPSILON
+1D6D7;1D6D7;1D6D7;03C6;03C6; # (ð›—; ð›—; ð›—; φ; φ; ) MATHEMATICAL BOLD SMALL PHI
+1D6D8;1D6D8;1D6D8;03C7;03C7; # (ð›˜; ð›˜; ð›˜; χ; χ; ) MATHEMATICAL BOLD SMALL CHI
+1D6D9;1D6D9;1D6D9;03C8;03C8; # (ð›™; ð›™; ð›™; ψ; ψ; ) MATHEMATICAL BOLD SMALL PSI
+1D6DA;1D6DA;1D6DA;03C9;03C9; # (ð›š; ð›š; ð›š; ω; ω; ) MATHEMATICAL BOLD SMALL OMEGA
+1D6DB;1D6DB;1D6DB;2202;2202; # (ð››; ð››; ð››; ∂; ∂; ) MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC;1D6DC;1D6DC;03B5;03B5; # (ð›œ; ð›œ; ð›œ; ε; ε; ) MATHEMATICAL BOLD EPSILON SYMBOL
+1D6DD;1D6DD;1D6DD;03B8;03B8; # (ð›; ð›; ð›; θ; θ; ) MATHEMATICAL BOLD THETA SYMBOL
+1D6DE;1D6DE;1D6DE;03BA;03BA; # (ð›ž; ð›ž; ð›ž; κ; κ; ) MATHEMATICAL BOLD KAPPA SYMBOL
+1D6DF;1D6DF;1D6DF;03C6;03C6; # (ð›Ÿ; ð›Ÿ; ð›Ÿ; φ; φ; ) MATHEMATICAL BOLD PHI SYMBOL
+1D6E0;1D6E0;1D6E0;03C1;03C1; # (ð› ; ð› ; ð› ; Ï; Ï; ) MATHEMATICAL BOLD RHO SYMBOL
+1D6E1;1D6E1;1D6E1;03C0;03C0; # (ð›¡; ð›¡; ð›¡; Ï€; Ï€; ) MATHEMATICAL BOLD PI SYMBOL
+1D6E2;1D6E2;1D6E2;0391;0391; # (ð›¢; ð›¢; ð›¢; Α; Α; ) MATHEMATICAL ITALIC CAPITAL ALPHA
+1D6E3;1D6E3;1D6E3;0392;0392; # (ð›£; ð›£; ð›£; Î’; Î’; ) MATHEMATICAL ITALIC CAPITAL BETA
+1D6E4;1D6E4;1D6E4;0393;0393; # (ð›¤; ð›¤; ð›¤; Γ; Γ; ) MATHEMATICAL ITALIC CAPITAL GAMMA
+1D6E5;1D6E5;1D6E5;0394;0394; # (ð›¥; ð›¥; ð›¥; Δ; Δ; ) MATHEMATICAL ITALIC CAPITAL DELTA
+1D6E6;1D6E6;1D6E6;0395;0395; # (ð›¦; ð›¦; ð›¦; Ε; Ε; ) MATHEMATICAL ITALIC CAPITAL EPSILON
+1D6E7;1D6E7;1D6E7;0396;0396; # (ð›§; ð›§; ð›§; Ζ; Ζ; ) MATHEMATICAL ITALIC CAPITAL ZETA
+1D6E8;1D6E8;1D6E8;0397;0397; # (ð›¨; ð›¨; ð›¨; Η; Η; ) MATHEMATICAL ITALIC CAPITAL ETA
+1D6E9;1D6E9;1D6E9;0398;0398; # (ð›©; ð›©; ð›©; Θ; Θ; ) MATHEMATICAL ITALIC CAPITAL THETA
+1D6EA;1D6EA;1D6EA;0399;0399; # (ð›ª; ð›ª; ð›ª; Ι; Ι; ) MATHEMATICAL ITALIC CAPITAL IOTA
+1D6EB;1D6EB;1D6EB;039A;039A; # (ð›«; ð›«; ð›«; Κ; Κ; ) MATHEMATICAL ITALIC CAPITAL KAPPA
+1D6EC;1D6EC;1D6EC;039B;039B; # (ð›¬; ð›¬; ð›¬; Λ; Λ; ) MATHEMATICAL ITALIC CAPITAL LAMDA
+1D6ED;1D6ED;1D6ED;039C;039C; # (ð›­; ð›­; ð›­; Îœ; Îœ; ) MATHEMATICAL ITALIC CAPITAL MU
+1D6EE;1D6EE;1D6EE;039D;039D; # (ð›®; ð›®; ð›®; Î; Î; ) MATHEMATICAL ITALIC CAPITAL NU
+1D6EF;1D6EF;1D6EF;039E;039E; # (ð›¯; ð›¯; ð›¯; Ξ; Ξ; ) MATHEMATICAL ITALIC CAPITAL XI
+1D6F0;1D6F0;1D6F0;039F;039F; # (ð›°; ð›°; ð›°; Ο; Ο; ) MATHEMATICAL ITALIC CAPITAL OMICRON
+1D6F1;1D6F1;1D6F1;03A0;03A0; # (ð›±; ð›±; ð›±; Π; Π; ) MATHEMATICAL ITALIC CAPITAL PI
+1D6F2;1D6F2;1D6F2;03A1;03A1; # (ð›²; ð›²; ð›²; Ρ; Ρ; ) MATHEMATICAL ITALIC CAPITAL RHO
+1D6F3;1D6F3;1D6F3;0398;0398; # (ð›³; ð›³; ð›³; Θ; Θ; ) MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
+1D6F4;1D6F4;1D6F4;03A3;03A3; # (ð›´; ð›´; ð›´; Σ; Σ; ) MATHEMATICAL ITALIC CAPITAL SIGMA
+1D6F5;1D6F5;1D6F5;03A4;03A4; # (ð›µ; ð›µ; ð›µ; Τ; Τ; ) MATHEMATICAL ITALIC CAPITAL TAU
+1D6F6;1D6F6;1D6F6;03A5;03A5; # (ð›¶; ð›¶; ð›¶; Î¥; Î¥; ) MATHEMATICAL ITALIC CAPITAL UPSILON
+1D6F7;1D6F7;1D6F7;03A6;03A6; # (ð›·; ð›·; ð›·; Φ; Φ; ) MATHEMATICAL ITALIC CAPITAL PHI
+1D6F8;1D6F8;1D6F8;03A7;03A7; # (ð›¸; ð›¸; ð›¸; Χ; Χ; ) MATHEMATICAL ITALIC CAPITAL CHI
+1D6F9;1D6F9;1D6F9;03A8;03A8; # (ð›¹; ð›¹; ð›¹; Ψ; Ψ; ) MATHEMATICAL ITALIC CAPITAL PSI
+1D6FA;1D6FA;1D6FA;03A9;03A9; # (ð›º; ð›º; ð›º; Ω; Ω; ) MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB;1D6FB;1D6FB;2207;2207; # (ð›»; ð›»; ð›»; ∇; ∇; ) MATHEMATICAL ITALIC NABLA
+1D6FC;1D6FC;1D6FC;03B1;03B1; # (ð›¼; ð›¼; ð›¼; α; α; ) MATHEMATICAL ITALIC SMALL ALPHA
+1D6FD;1D6FD;1D6FD;03B2;03B2; # (ð›½; ð›½; ð›½; β; β; ) MATHEMATICAL ITALIC SMALL BETA
+1D6FE;1D6FE;1D6FE;03B3;03B3; # (ð›¾; ð›¾; ð›¾; γ; γ; ) MATHEMATICAL ITALIC SMALL GAMMA
+1D6FF;1D6FF;1D6FF;03B4;03B4; # (ð›¿; ð›¿; ð›¿; δ; δ; ) MATHEMATICAL ITALIC SMALL DELTA
+1D700;1D700;1D700;03B5;03B5; # (ðœ€; ðœ€; ðœ€; ε; ε; ) MATHEMATICAL ITALIC SMALL EPSILON
+1D701;1D701;1D701;03B6;03B6; # (ðœ; ðœ; ðœ; ζ; ζ; ) MATHEMATICAL ITALIC SMALL ZETA
+1D702;1D702;1D702;03B7;03B7; # (ðœ‚; ðœ‚; ðœ‚; η; η; ) MATHEMATICAL ITALIC SMALL ETA
+1D703;1D703;1D703;03B8;03B8; # (ðœƒ; ðœƒ; ðœƒ; θ; θ; ) MATHEMATICAL ITALIC SMALL THETA
+1D704;1D704;1D704;03B9;03B9; # (ðœ„; ðœ„; ðœ„; ι; ι; ) MATHEMATICAL ITALIC SMALL IOTA
+1D705;1D705;1D705;03BA;03BA; # (ðœ…; ðœ…; ðœ…; κ; κ; ) MATHEMATICAL ITALIC SMALL KAPPA
+1D706;1D706;1D706;03BB;03BB; # (ðœ†; ðœ†; ðœ†; λ; λ; ) MATHEMATICAL ITALIC SMALL LAMDA
+1D707;1D707;1D707;03BC;03BC; # (ðœ‡; ðœ‡; ðœ‡; μ; μ; ) MATHEMATICAL ITALIC SMALL MU
+1D708;1D708;1D708;03BD;03BD; # (ðœˆ; ðœˆ; ðœˆ; ν; ν; ) MATHEMATICAL ITALIC SMALL NU
+1D709;1D709;1D709;03BE;03BE; # (ðœ‰; ðœ‰; ðœ‰; ξ; ξ; ) MATHEMATICAL ITALIC SMALL XI
+1D70A;1D70A;1D70A;03BF;03BF; # (ðœŠ; ðœŠ; ðœŠ; ο; ο; ) MATHEMATICAL ITALIC SMALL OMICRON
+1D70B;1D70B;1D70B;03C0;03C0; # (ðœ‹; ðœ‹; ðœ‹; Ï€; Ï€; ) MATHEMATICAL ITALIC SMALL PI
+1D70C;1D70C;1D70C;03C1;03C1; # (ðœŒ; ðœŒ; ðœŒ; Ï; Ï; ) MATHEMATICAL ITALIC SMALL RHO
+1D70D;1D70D;1D70D;03C2;03C2; # (ðœ; ðœ; ðœ; Ï‚; Ï‚; ) MATHEMATICAL ITALIC SMALL FINAL SIGMA
+1D70E;1D70E;1D70E;03C3;03C3; # (ðœŽ; ðœŽ; ðœŽ; σ; σ; ) MATHEMATICAL ITALIC SMALL SIGMA
+1D70F;1D70F;1D70F;03C4;03C4; # (ðœ; ðœ; ðœ; Ï„; Ï„; ) MATHEMATICAL ITALIC SMALL TAU
+1D710;1D710;1D710;03C5;03C5; # (ðœ; ðœ; ðœ; Ï…; Ï…; ) MATHEMATICAL ITALIC SMALL UPSILON
+1D711;1D711;1D711;03C6;03C6; # (ðœ‘; ðœ‘; ðœ‘; φ; φ; ) MATHEMATICAL ITALIC SMALL PHI
+1D712;1D712;1D712;03C7;03C7; # (ðœ’; ðœ’; ðœ’; χ; χ; ) MATHEMATICAL ITALIC SMALL CHI
+1D713;1D713;1D713;03C8;03C8; # (ðœ“; ðœ“; ðœ“; ψ; ψ; ) MATHEMATICAL ITALIC SMALL PSI
+1D714;1D714;1D714;03C9;03C9; # (ðœ”; ðœ”; ðœ”; ω; ω; ) MATHEMATICAL ITALIC SMALL OMEGA
+1D715;1D715;1D715;2202;2202; # (ðœ•; ðœ•; ðœ•; ∂; ∂; ) MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716;1D716;1D716;03B5;03B5; # (ðœ–; ðœ–; ðœ–; ε; ε; ) MATHEMATICAL ITALIC EPSILON SYMBOL
+1D717;1D717;1D717;03B8;03B8; # (ðœ—; ðœ—; ðœ—; θ; θ; ) MATHEMATICAL ITALIC THETA SYMBOL
+1D718;1D718;1D718;03BA;03BA; # (ðœ˜; ðœ˜; ðœ˜; κ; κ; ) MATHEMATICAL ITALIC KAPPA SYMBOL
+1D719;1D719;1D719;03C6;03C6; # (ðœ™; ðœ™; ðœ™; φ; φ; ) MATHEMATICAL ITALIC PHI SYMBOL
+1D71A;1D71A;1D71A;03C1;03C1; # (ðœš; ðœš; ðœš; Ï; Ï; ) MATHEMATICAL ITALIC RHO SYMBOL
+1D71B;1D71B;1D71B;03C0;03C0; # (ðœ›; ðœ›; ðœ›; Ï€; Ï€; ) MATHEMATICAL ITALIC PI SYMBOL
+1D71C;1D71C;1D71C;0391;0391; # (ðœœ; ðœœ; ðœœ; Α; Α; ) MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
+1D71D;1D71D;1D71D;0392;0392; # (ðœ; ðœ; ðœ; Î’; Î’; ) MATHEMATICAL BOLD ITALIC CAPITAL BETA
+1D71E;1D71E;1D71E;0393;0393; # (ðœž; ðœž; ðœž; Γ; Γ; ) MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
+1D71F;1D71F;1D71F;0394;0394; # (ðœŸ; ðœŸ; ðœŸ; Δ; Δ; ) MATHEMATICAL BOLD ITALIC CAPITAL DELTA
+1D720;1D720;1D720;0395;0395; # (ðœ ; ðœ ; ðœ ; Ε; Ε; ) MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
+1D721;1D721;1D721;0396;0396; # (ðœ¡; ðœ¡; ðœ¡; Ζ; Ζ; ) MATHEMATICAL BOLD ITALIC CAPITAL ZETA
+1D722;1D722;1D722;0397;0397; # (ðœ¢; ðœ¢; ðœ¢; Η; Η; ) MATHEMATICAL BOLD ITALIC CAPITAL ETA
+1D723;1D723;1D723;0398;0398; # (ðœ£; ðœ£; ðœ£; Θ; Θ; ) MATHEMATICAL BOLD ITALIC CAPITAL THETA
+1D724;1D724;1D724;0399;0399; # (ðœ¤; ðœ¤; ðœ¤; Ι; Ι; ) MATHEMATICAL BOLD ITALIC CAPITAL IOTA
+1D725;1D725;1D725;039A;039A; # (ðœ¥; ðœ¥; ðœ¥; Κ; Κ; ) MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
+1D726;1D726;1D726;039B;039B; # (ðœ¦; ðœ¦; ðœ¦; Λ; Λ; ) MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
+1D727;1D727;1D727;039C;039C; # (ðœ§; ðœ§; ðœ§; Îœ; Îœ; ) MATHEMATICAL BOLD ITALIC CAPITAL MU
+1D728;1D728;1D728;039D;039D; # (ðœ¨; ðœ¨; ðœ¨; Î; Î; ) MATHEMATICAL BOLD ITALIC CAPITAL NU
+1D729;1D729;1D729;039E;039E; # (ðœ©; ðœ©; ðœ©; Ξ; Ξ; ) MATHEMATICAL BOLD ITALIC CAPITAL XI
+1D72A;1D72A;1D72A;039F;039F; # (ðœª; ðœª; ðœª; Ο; Ο; ) MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
+1D72B;1D72B;1D72B;03A0;03A0; # (ðœ«; ðœ«; ðœ«; Π; Π; ) MATHEMATICAL BOLD ITALIC CAPITAL PI
+1D72C;1D72C;1D72C;03A1;03A1; # (ðœ¬; ðœ¬; ðœ¬; Ρ; Ρ; ) MATHEMATICAL BOLD ITALIC CAPITAL RHO
+1D72D;1D72D;1D72D;0398;0398; # (ðœ­; ðœ­; ðœ­; Θ; Θ; ) MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
+1D72E;1D72E;1D72E;03A3;03A3; # (ðœ®; ðœ®; ðœ®; Σ; Σ; ) MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
+1D72F;1D72F;1D72F;03A4;03A4; # (ðœ¯; ðœ¯; ðœ¯; Τ; Τ; ) MATHEMATICAL BOLD ITALIC CAPITAL TAU
+1D730;1D730;1D730;03A5;03A5; # (ðœ°; ðœ°; ðœ°; Î¥; Î¥; ) MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
+1D731;1D731;1D731;03A6;03A6; # (ðœ±; ðœ±; ðœ±; Φ; Φ; ) MATHEMATICAL BOLD ITALIC CAPITAL PHI
+1D732;1D732;1D732;03A7;03A7; # (ðœ²; ðœ²; ðœ²; Χ; Χ; ) MATHEMATICAL BOLD ITALIC CAPITAL CHI
+1D733;1D733;1D733;03A8;03A8; # (ðœ³; ðœ³; ðœ³; Ψ; Ψ; ) MATHEMATICAL BOLD ITALIC CAPITAL PSI
+1D734;1D734;1D734;03A9;03A9; # (ðœ´; ðœ´; ðœ´; Ω; Ω; ) MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735;1D735;1D735;2207;2207; # (ðœµ; ðœµ; ðœµ; ∇; ∇; ) MATHEMATICAL BOLD ITALIC NABLA
+1D736;1D736;1D736;03B1;03B1; # (ðœ¶; ðœ¶; ðœ¶; α; α; ) MATHEMATICAL BOLD ITALIC SMALL ALPHA
+1D737;1D737;1D737;03B2;03B2; # (ðœ·; ðœ·; ðœ·; β; β; ) MATHEMATICAL BOLD ITALIC SMALL BETA
+1D738;1D738;1D738;03B3;03B3; # (ðœ¸; ðœ¸; ðœ¸; γ; γ; ) MATHEMATICAL BOLD ITALIC SMALL GAMMA
+1D739;1D739;1D739;03B4;03B4; # (ðœ¹; ðœ¹; ðœ¹; δ; δ; ) MATHEMATICAL BOLD ITALIC SMALL DELTA
+1D73A;1D73A;1D73A;03B5;03B5; # (ðœº; ðœº; ðœº; ε; ε; ) MATHEMATICAL BOLD ITALIC SMALL EPSILON
+1D73B;1D73B;1D73B;03B6;03B6; # (ðœ»; ðœ»; ðœ»; ζ; ζ; ) MATHEMATICAL BOLD ITALIC SMALL ZETA
+1D73C;1D73C;1D73C;03B7;03B7; # (ðœ¼; ðœ¼; ðœ¼; η; η; ) MATHEMATICAL BOLD ITALIC SMALL ETA
+1D73D;1D73D;1D73D;03B8;03B8; # (ðœ½; ðœ½; ðœ½; θ; θ; ) MATHEMATICAL BOLD ITALIC SMALL THETA
+1D73E;1D73E;1D73E;03B9;03B9; # (ðœ¾; ðœ¾; ðœ¾; ι; ι; ) MATHEMATICAL BOLD ITALIC SMALL IOTA
+1D73F;1D73F;1D73F;03BA;03BA; # (ðœ¿; ðœ¿; ðœ¿; κ; κ; ) MATHEMATICAL BOLD ITALIC SMALL KAPPA
+1D740;1D740;1D740;03BB;03BB; # (ð€; ð€; ð€; λ; λ; ) MATHEMATICAL BOLD ITALIC SMALL LAMDA
+1D741;1D741;1D741;03BC;03BC; # (ð; ð; ð; μ; μ; ) MATHEMATICAL BOLD ITALIC SMALL MU
+1D742;1D742;1D742;03BD;03BD; # (ð‚; ð‚; ð‚; ν; ν; ) MATHEMATICAL BOLD ITALIC SMALL NU
+1D743;1D743;1D743;03BE;03BE; # (ðƒ; ðƒ; ðƒ; ξ; ξ; ) MATHEMATICAL BOLD ITALIC SMALL XI
+1D744;1D744;1D744;03BF;03BF; # (ð„; ð„; ð„; ο; ο; ) MATHEMATICAL BOLD ITALIC SMALL OMICRON
+1D745;1D745;1D745;03C0;03C0; # (ð…; ð…; ð…; Ï€; Ï€; ) MATHEMATICAL BOLD ITALIC SMALL PI
+1D746;1D746;1D746;03C1;03C1; # (ð†; ð†; ð†; Ï; Ï; ) MATHEMATICAL BOLD ITALIC SMALL RHO
+1D747;1D747;1D747;03C2;03C2; # (ð‡; ð‡; ð‡; Ï‚; Ï‚; ) MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
+1D748;1D748;1D748;03C3;03C3; # (ðˆ; ðˆ; ðˆ; σ; σ; ) MATHEMATICAL BOLD ITALIC SMALL SIGMA
+1D749;1D749;1D749;03C4;03C4; # (ð‰; ð‰; ð‰; Ï„; Ï„; ) MATHEMATICAL BOLD ITALIC SMALL TAU
+1D74A;1D74A;1D74A;03C5;03C5; # (ðŠ; ðŠ; ðŠ; Ï…; Ï…; ) MATHEMATICAL BOLD ITALIC SMALL UPSILON
+1D74B;1D74B;1D74B;03C6;03C6; # (ð‹; ð‹; ð‹; φ; φ; ) MATHEMATICAL BOLD ITALIC SMALL PHI
+1D74C;1D74C;1D74C;03C7;03C7; # (ðŒ; ðŒ; ðŒ; χ; χ; ) MATHEMATICAL BOLD ITALIC SMALL CHI
+1D74D;1D74D;1D74D;03C8;03C8; # (ð; ð; ð; ψ; ψ; ) MATHEMATICAL BOLD ITALIC SMALL PSI
+1D74E;1D74E;1D74E;03C9;03C9; # (ðŽ; ðŽ; ðŽ; ω; ω; ) MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F;1D74F;1D74F;2202;2202; # (ð; ð; ð; ∂; ∂; ) MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750;1D750;1D750;03B5;03B5; # (ð; ð; ð; ε; ε; ) MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
+1D751;1D751;1D751;03B8;03B8; # (ð‘; ð‘; ð‘; θ; θ; ) MATHEMATICAL BOLD ITALIC THETA SYMBOL
+1D752;1D752;1D752;03BA;03BA; # (ð’; ð’; ð’; κ; κ; ) MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
+1D753;1D753;1D753;03C6;03C6; # (ð“; ð“; ð“; φ; φ; ) MATHEMATICAL BOLD ITALIC PHI SYMBOL
+1D754;1D754;1D754;03C1;03C1; # (ð”; ð”; ð”; Ï; Ï; ) MATHEMATICAL BOLD ITALIC RHO SYMBOL
+1D755;1D755;1D755;03C0;03C0; # (ð•; ð•; ð•; Ï€; Ï€; ) MATHEMATICAL BOLD ITALIC PI SYMBOL
+1D756;1D756;1D756;0391;0391; # (ð–; ð–; ð–; Α; Α; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
+1D757;1D757;1D757;0392;0392; # (ð—; ð—; ð—; Î’; Î’; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
+1D758;1D758;1D758;0393;0393; # (ð˜; ð˜; ð˜; Γ; Γ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
+1D759;1D759;1D759;0394;0394; # (ð™; ð™; ð™; Δ; Δ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
+1D75A;1D75A;1D75A;0395;0395; # (ðš; ðš; ðš; Ε; Ε; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
+1D75B;1D75B;1D75B;0396;0396; # (ð›; ð›; ð›; Ζ; Ζ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
+1D75C;1D75C;1D75C;0397;0397; # (ðœ; ðœ; ðœ; Η; Η; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
+1D75D;1D75D;1D75D;0398;0398; # (ð; ð; ð; Θ; Θ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
+1D75E;1D75E;1D75E;0399;0399; # (ðž; ðž; ðž; Ι; Ι; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
+1D75F;1D75F;1D75F;039A;039A; # (ðŸ; ðŸ; ðŸ; Κ; Κ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
+1D760;1D760;1D760;039B;039B; # (ð ; ð ; ð ; Λ; Λ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
+1D761;1D761;1D761;039C;039C; # (ð¡; ð¡; ð¡; Îœ; Îœ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
+1D762;1D762;1D762;039D;039D; # (ð¢; ð¢; ð¢; Î; Î; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
+1D763;1D763;1D763;039E;039E; # (ð£; ð£; ð£; Ξ; Ξ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
+1D764;1D764;1D764;039F;039F; # (ð¤; ð¤; ð¤; Ο; Ο; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
+1D765;1D765;1D765;03A0;03A0; # (ð¥; ð¥; ð¥; Π; Π; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
+1D766;1D766;1D766;03A1;03A1; # (ð¦; ð¦; ð¦; Ρ; Ρ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
+1D767;1D767;1D767;0398;0398; # (ð§; ð§; ð§; Θ; Θ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
+1D768;1D768;1D768;03A3;03A3; # (ð¨; ð¨; ð¨; Σ; Σ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
+1D769;1D769;1D769;03A4;03A4; # (ð©; ð©; ð©; Τ; Τ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
+1D76A;1D76A;1D76A;03A5;03A5; # (ðª; ðª; ðª; Î¥; Î¥; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
+1D76B;1D76B;1D76B;03A6;03A6; # (ð«; ð«; ð«; Φ; Φ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
+1D76C;1D76C;1D76C;03A7;03A7; # (ð¬; ð¬; ð¬; Χ; Χ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
+1D76D;1D76D;1D76D;03A8;03A8; # (ð­; ð­; ð­; Ψ; Ψ; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
+1D76E;1D76E;1D76E;03A9;03A9; # (ð®; ð®; ð®; Ω; Ω; ) MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F;1D76F;1D76F;2207;2207; # (ð¯; ð¯; ð¯; ∇; ∇; ) MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770;1D770;1D770;03B1;03B1; # (ð°; ð°; ð°; α; α; ) MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
+1D771;1D771;1D771;03B2;03B2; # (ð±; ð±; ð±; β; β; ) MATHEMATICAL SANS-SERIF BOLD SMALL BETA
+1D772;1D772;1D772;03B3;03B3; # (ð²; ð²; ð²; γ; γ; ) MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
+1D773;1D773;1D773;03B4;03B4; # (ð³; ð³; ð³; δ; δ; ) MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
+1D774;1D774;1D774;03B5;03B5; # (ð´; ð´; ð´; ε; ε; ) MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
+1D775;1D775;1D775;03B6;03B6; # (ðµ; ðµ; ðµ; ζ; ζ; ) MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
+1D776;1D776;1D776;03B7;03B7; # (ð¶; ð¶; ð¶; η; η; ) MATHEMATICAL SANS-SERIF BOLD SMALL ETA
+1D777;1D777;1D777;03B8;03B8; # (ð·; ð·; ð·; θ; θ; ) MATHEMATICAL SANS-SERIF BOLD SMALL THETA
+1D778;1D778;1D778;03B9;03B9; # (ð¸; ð¸; ð¸; ι; ι; ) MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
+1D779;1D779;1D779;03BA;03BA; # (ð¹; ð¹; ð¹; κ; κ; ) MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
+1D77A;1D77A;1D77A;03BB;03BB; # (ðº; ðº; ðº; λ; λ; ) MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
+1D77B;1D77B;1D77B;03BC;03BC; # (ð»; ð»; ð»; μ; μ; ) MATHEMATICAL SANS-SERIF BOLD SMALL MU
+1D77C;1D77C;1D77C;03BD;03BD; # (ð¼; ð¼; ð¼; ν; ν; ) MATHEMATICAL SANS-SERIF BOLD SMALL NU
+1D77D;1D77D;1D77D;03BE;03BE; # (ð½; ð½; ð½; ξ; ξ; ) MATHEMATICAL SANS-SERIF BOLD SMALL XI
+1D77E;1D77E;1D77E;03BF;03BF; # (ð¾; ð¾; ð¾; ο; ο; ) MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
+1D77F;1D77F;1D77F;03C0;03C0; # (ð¿; ð¿; ð¿; Ï€; Ï€; ) MATHEMATICAL SANS-SERIF BOLD SMALL PI
+1D780;1D780;1D780;03C1;03C1; # (ðž€; ðž€; ðž€; Ï; Ï; ) MATHEMATICAL SANS-SERIF BOLD SMALL RHO
+1D781;1D781;1D781;03C2;03C2; # (ðž; ðž; ðž; Ï‚; Ï‚; ) MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
+1D782;1D782;1D782;03C3;03C3; # (ðž‚; ðž‚; ðž‚; σ; σ; ) MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
+1D783;1D783;1D783;03C4;03C4; # (ðžƒ; ðžƒ; ðžƒ; Ï„; Ï„; ) MATHEMATICAL SANS-SERIF BOLD SMALL TAU
+1D784;1D784;1D784;03C5;03C5; # (ðž„; ðž„; ðž„; Ï…; Ï…; ) MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
+1D785;1D785;1D785;03C6;03C6; # (ðž…; ðž…; ðž…; φ; φ; ) MATHEMATICAL SANS-SERIF BOLD SMALL PHI
+1D786;1D786;1D786;03C7;03C7; # (ðž†; ðž†; ðž†; χ; χ; ) MATHEMATICAL SANS-SERIF BOLD SMALL CHI
+1D787;1D787;1D787;03C8;03C8; # (ðž‡; ðž‡; ðž‡; ψ; ψ; ) MATHEMATICAL SANS-SERIF BOLD SMALL PSI
+1D788;1D788;1D788;03C9;03C9; # (ðžˆ; ðžˆ; ðžˆ; ω; ω; ) MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789;1D789;1D789;2202;2202; # (ðž‰; ðž‰; ðž‰; ∂; ∂; ) MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A;1D78A;1D78A;03B5;03B5; # (ðžŠ; ðžŠ; ðžŠ; ε; ε; ) MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
+1D78B;1D78B;1D78B;03B8;03B8; # (ðž‹; ðž‹; ðž‹; θ; θ; ) MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
+1D78C;1D78C;1D78C;03BA;03BA; # (ðžŒ; ðžŒ; ðžŒ; κ; κ; ) MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
+1D78D;1D78D;1D78D;03C6;03C6; # (ðž; ðž; ðž; φ; φ; ) MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
+1D78E;1D78E;1D78E;03C1;03C1; # (ðžŽ; ðžŽ; ðžŽ; Ï; Ï; ) MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
+1D78F;1D78F;1D78F;03C0;03C0; # (ðž; ðž; ðž; Ï€; Ï€; ) MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
+1D790;1D790;1D790;0391;0391; # (ðž; ðž; ðž; Α; Α; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
+1D791;1D791;1D791;0392;0392; # (ðž‘; ðž‘; ðž‘; Î’; Î’; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
+1D792;1D792;1D792;0393;0393; # (ðž’; ðž’; ðž’; Γ; Γ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
+1D793;1D793;1D793;0394;0394; # (ðž“; ðž“; ðž“; Δ; Δ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
+1D794;1D794;1D794;0395;0395; # (ðž”; ðž”; ðž”; Ε; Ε; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
+1D795;1D795;1D795;0396;0396; # (ðž•; ðž•; ðž•; Ζ; Ζ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
+1D796;1D796;1D796;0397;0397; # (ðž–; ðž–; ðž–; Η; Η; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
+1D797;1D797;1D797;0398;0398; # (ðž—; ðž—; ðž—; Θ; Θ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
+1D798;1D798;1D798;0399;0399; # (ðž˜; ðž˜; ðž˜; Ι; Ι; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
+1D799;1D799;1D799;039A;039A; # (ðž™; ðž™; ðž™; Κ; Κ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
+1D79A;1D79A;1D79A;039B;039B; # (ðžš; ðžš; ðžš; Λ; Λ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
+1D79B;1D79B;1D79B;039C;039C; # (ðž›; ðž›; ðž›; Îœ; Îœ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
+1D79C;1D79C;1D79C;039D;039D; # (ðžœ; ðžœ; ðžœ; Î; Î; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
+1D79D;1D79D;1D79D;039E;039E; # (ðž; ðž; ðž; Ξ; Ξ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
+1D79E;1D79E;1D79E;039F;039F; # (ðžž; ðžž; ðžž; Ο; Ο; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
+1D79F;1D79F;1D79F;03A0;03A0; # (ðžŸ; ðžŸ; ðžŸ; Π; Π; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
+1D7A0;1D7A0;1D7A0;03A1;03A1; # (ðž ; ðž ; ðž ; Ρ; Ρ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
+1D7A1;1D7A1;1D7A1;0398;0398; # (ðž¡; ðž¡; ðž¡; Θ; Θ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
+1D7A2;1D7A2;1D7A2;03A3;03A3; # (ðž¢; ðž¢; ðž¢; Σ; Σ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
+1D7A3;1D7A3;1D7A3;03A4;03A4; # (ðž£; ðž£; ðž£; Τ; Τ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
+1D7A4;1D7A4;1D7A4;03A5;03A5; # (ðž¤; ðž¤; ðž¤; Î¥; Î¥; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
+1D7A5;1D7A5;1D7A5;03A6;03A6; # (ðž¥; ðž¥; ðž¥; Φ; Φ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
+1D7A6;1D7A6;1D7A6;03A7;03A7; # (ðž¦; ðž¦; ðž¦; Χ; Χ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
+1D7A7;1D7A7;1D7A7;03A8;03A8; # (ðž§; ðž§; ðž§; Ψ; Ψ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
+1D7A8;1D7A8;1D7A8;03A9;03A9; # (ðž¨; ðž¨; ðž¨; Ω; Ω; ) MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9;1D7A9;1D7A9;2207;2207; # (ðž©; ðž©; ðž©; ∇; ∇; ) MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA;1D7AA;1D7AA;03B1;03B1; # (ðžª; ðžª; ðžª; α; α; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
+1D7AB;1D7AB;1D7AB;03B2;03B2; # (ðž«; ðž«; ðž«; β; β; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
+1D7AC;1D7AC;1D7AC;03B3;03B3; # (ðž¬; ðž¬; ðž¬; γ; γ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
+1D7AD;1D7AD;1D7AD;03B4;03B4; # (ðž­; ðž­; ðž­; δ; δ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
+1D7AE;1D7AE;1D7AE;03B5;03B5; # (ðž®; ðž®; ðž®; ε; ε; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
+1D7AF;1D7AF;1D7AF;03B6;03B6; # (ðž¯; ðž¯; ðž¯; ζ; ζ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
+1D7B0;1D7B0;1D7B0;03B7;03B7; # (ðž°; ðž°; ðž°; η; η; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
+1D7B1;1D7B1;1D7B1;03B8;03B8; # (ðž±; ðž±; ðž±; θ; θ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
+1D7B2;1D7B2;1D7B2;03B9;03B9; # (ðž²; ðž²; ðž²; ι; ι; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
+1D7B3;1D7B3;1D7B3;03BA;03BA; # (ðž³; ðž³; ðž³; κ; κ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
+1D7B4;1D7B4;1D7B4;03BB;03BB; # (ðž´; ðž´; ðž´; λ; λ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
+1D7B5;1D7B5;1D7B5;03BC;03BC; # (ðžµ; ðžµ; ðžµ; μ; μ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
+1D7B6;1D7B6;1D7B6;03BD;03BD; # (ðž¶; ðž¶; ðž¶; ν; ν; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
+1D7B7;1D7B7;1D7B7;03BE;03BE; # (ðž·; ðž·; ðž·; ξ; ξ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
+1D7B8;1D7B8;1D7B8;03BF;03BF; # (ðž¸; ðž¸; ðž¸; ο; ο; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
+1D7B9;1D7B9;1D7B9;03C0;03C0; # (ðž¹; ðž¹; ðž¹; Ï€; Ï€; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
+1D7BA;1D7BA;1D7BA;03C1;03C1; # (ðžº; ðžº; ðžº; Ï; Ï; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
+1D7BB;1D7BB;1D7BB;03C2;03C2; # (ðž»; ðž»; ðž»; Ï‚; Ï‚; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
+1D7BC;1D7BC;1D7BC;03C3;03C3; # (ðž¼; ðž¼; ðž¼; σ; σ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
+1D7BD;1D7BD;1D7BD;03C4;03C4; # (ðž½; ðž½; ðž½; Ï„; Ï„; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
+1D7BE;1D7BE;1D7BE;03C5;03C5; # (ðž¾; ðž¾; ðž¾; Ï…; Ï…; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
+1D7BF;1D7BF;1D7BF;03C6;03C6; # (ðž¿; ðž¿; ðž¿; φ; φ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
+1D7C0;1D7C0;1D7C0;03C7;03C7; # (ðŸ€; ðŸ€; ðŸ€; χ; χ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
+1D7C1;1D7C1;1D7C1;03C8;03C8; # (ðŸ; ðŸ; ðŸ; ψ; ψ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
+1D7C2;1D7C2;1D7C2;03C9;03C9; # (ðŸ‚; ðŸ‚; ðŸ‚; ω; ω; ) MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3;1D7C3;1D7C3;2202;2202; # (ðŸƒ; ðŸƒ; ðŸƒ; ∂; ∂; ) MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4;1D7C4;1D7C4;03B5;03B5; # (ðŸ„; ðŸ„; ðŸ„; ε; ε; ) MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
+1D7C5;1D7C5;1D7C5;03B8;03B8; # (ðŸ…; ðŸ…; ðŸ…; θ; θ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
+1D7C6;1D7C6;1D7C6;03BA;03BA; # (ðŸ†; ðŸ†; ðŸ†; κ; κ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
+1D7C7;1D7C7;1D7C7;03C6;03C6; # (ðŸ‡; ðŸ‡; ðŸ‡; φ; φ; ) MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
+1D7C8;1D7C8;1D7C8;03C1;03C1; # (ðŸˆ; ðŸˆ; ðŸˆ; Ï; Ï; ) MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
+1D7C9;1D7C9;1D7C9;03C0;03C0; # (ðŸ‰; ðŸ‰; ðŸ‰; Ï€; Ï€; ) MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+1D7CA;1D7CA;1D7CA;03DC;03DC; # (ðŸŠ; ðŸŠ; ðŸŠ; Ïœ; Ïœ; ) MATHEMATICAL BOLD CAPITAL DIGAMMA
+1D7CB;1D7CB;1D7CB;03DD;03DD; # (ðŸ‹; ðŸ‹; ðŸ‹; Ï; Ï; ) MATHEMATICAL BOLD SMALL DIGAMMA
+1D7CE;1D7CE;1D7CE;0030;0030; # (ðŸŽ; ðŸŽ; ðŸŽ; 0; 0; ) MATHEMATICAL BOLD DIGIT ZERO
+1D7CF;1D7CF;1D7CF;0031;0031; # (ðŸ; ðŸ; ðŸ; 1; 1; ) MATHEMATICAL BOLD DIGIT ONE
+1D7D0;1D7D0;1D7D0;0032;0032; # (ðŸ; ðŸ; ðŸ; 2; 2; ) MATHEMATICAL BOLD DIGIT TWO
+1D7D1;1D7D1;1D7D1;0033;0033; # (ðŸ‘; ðŸ‘; ðŸ‘; 3; 3; ) MATHEMATICAL BOLD DIGIT THREE
+1D7D2;1D7D2;1D7D2;0034;0034; # (ðŸ’; ðŸ’; ðŸ’; 4; 4; ) MATHEMATICAL BOLD DIGIT FOUR
+1D7D3;1D7D3;1D7D3;0035;0035; # (ðŸ“; ðŸ“; ðŸ“; 5; 5; ) MATHEMATICAL BOLD DIGIT FIVE
+1D7D4;1D7D4;1D7D4;0036;0036; # (ðŸ”; ðŸ”; ðŸ”; 6; 6; ) MATHEMATICAL BOLD DIGIT SIX
+1D7D5;1D7D5;1D7D5;0037;0037; # (ðŸ•; ðŸ•; ðŸ•; 7; 7; ) MATHEMATICAL BOLD DIGIT SEVEN
+1D7D6;1D7D6;1D7D6;0038;0038; # (ðŸ–; ðŸ–; ðŸ–; 8; 8; ) MATHEMATICAL BOLD DIGIT EIGHT
+1D7D7;1D7D7;1D7D7;0039;0039; # (ðŸ—; ðŸ—; ðŸ—; 9; 9; ) MATHEMATICAL BOLD DIGIT NINE
+1D7D8;1D7D8;1D7D8;0030;0030; # (ðŸ˜; ðŸ˜; ðŸ˜; 0; 0; ) MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
+1D7D9;1D7D9;1D7D9;0031;0031; # (ðŸ™; ðŸ™; ðŸ™; 1; 1; ) MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
+1D7DA;1D7DA;1D7DA;0032;0032; # (ðŸš; ðŸš; ðŸš; 2; 2; ) MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
+1D7DB;1D7DB;1D7DB;0033;0033; # (ðŸ›; ðŸ›; ðŸ›; 3; 3; ) MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
+1D7DC;1D7DC;1D7DC;0034;0034; # (ðŸœ; ðŸœ; ðŸœ; 4; 4; ) MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
+1D7DD;1D7DD;1D7DD;0035;0035; # (ðŸ; ðŸ; ðŸ; 5; 5; ) MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
+1D7DE;1D7DE;1D7DE;0036;0036; # (ðŸž; ðŸž; ðŸž; 6; 6; ) MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
+1D7DF;1D7DF;1D7DF;0037;0037; # (ðŸŸ; ðŸŸ; ðŸŸ; 7; 7; ) MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
+1D7E0;1D7E0;1D7E0;0038;0038; # (ðŸ ; ðŸ ; ðŸ ; 8; 8; ) MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
+1D7E1;1D7E1;1D7E1;0039;0039; # (ðŸ¡; ðŸ¡; ðŸ¡; 9; 9; ) MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
+1D7E2;1D7E2;1D7E2;0030;0030; # (ðŸ¢; ðŸ¢; ðŸ¢; 0; 0; ) MATHEMATICAL SANS-SERIF DIGIT ZERO
+1D7E3;1D7E3;1D7E3;0031;0031; # (ðŸ£; ðŸ£; ðŸ£; 1; 1; ) MATHEMATICAL SANS-SERIF DIGIT ONE
+1D7E4;1D7E4;1D7E4;0032;0032; # (ðŸ¤; ðŸ¤; ðŸ¤; 2; 2; ) MATHEMATICAL SANS-SERIF DIGIT TWO
+1D7E5;1D7E5;1D7E5;0033;0033; # (ðŸ¥; ðŸ¥; ðŸ¥; 3; 3; ) MATHEMATICAL SANS-SERIF DIGIT THREE
+1D7E6;1D7E6;1D7E6;0034;0034; # (ðŸ¦; ðŸ¦; ðŸ¦; 4; 4; ) MATHEMATICAL SANS-SERIF DIGIT FOUR
+1D7E7;1D7E7;1D7E7;0035;0035; # (ðŸ§; ðŸ§; ðŸ§; 5; 5; ) MATHEMATICAL SANS-SERIF DIGIT FIVE
+1D7E8;1D7E8;1D7E8;0036;0036; # (ðŸ¨; ðŸ¨; ðŸ¨; 6; 6; ) MATHEMATICAL SANS-SERIF DIGIT SIX
+1D7E9;1D7E9;1D7E9;0037;0037; # (ðŸ©; ðŸ©; ðŸ©; 7; 7; ) MATHEMATICAL SANS-SERIF DIGIT SEVEN
+1D7EA;1D7EA;1D7EA;0038;0038; # (ðŸª; ðŸª; ðŸª; 8; 8; ) MATHEMATICAL SANS-SERIF DIGIT EIGHT
+1D7EB;1D7EB;1D7EB;0039;0039; # (ðŸ«; ðŸ«; ðŸ«; 9; 9; ) MATHEMATICAL SANS-SERIF DIGIT NINE
+1D7EC;1D7EC;1D7EC;0030;0030; # (ðŸ¬; ðŸ¬; ðŸ¬; 0; 0; ) MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
+1D7ED;1D7ED;1D7ED;0031;0031; # (ðŸ­; ðŸ­; ðŸ­; 1; 1; ) MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
+1D7EE;1D7EE;1D7EE;0032;0032; # (ðŸ®; ðŸ®; ðŸ®; 2; 2; ) MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
+1D7EF;1D7EF;1D7EF;0033;0033; # (ðŸ¯; ðŸ¯; ðŸ¯; 3; 3; ) MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
+1D7F0;1D7F0;1D7F0;0034;0034; # (ðŸ°; ðŸ°; ðŸ°; 4; 4; ) MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
+1D7F1;1D7F1;1D7F1;0035;0035; # (ðŸ±; ðŸ±; ðŸ±; 5; 5; ) MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
+1D7F2;1D7F2;1D7F2;0036;0036; # (ðŸ²; ðŸ²; ðŸ²; 6; 6; ) MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
+1D7F3;1D7F3;1D7F3;0037;0037; # (ðŸ³; ðŸ³; ðŸ³; 7; 7; ) MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
+1D7F4;1D7F4;1D7F4;0038;0038; # (ðŸ´; ðŸ´; ðŸ´; 8; 8; ) MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
+1D7F5;1D7F5;1D7F5;0039;0039; # (ðŸµ; ðŸµ; ðŸµ; 9; 9; ) MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
+1D7F6;1D7F6;1D7F6;0030;0030; # (ðŸ¶; ðŸ¶; ðŸ¶; 0; 0; ) MATHEMATICAL MONOSPACE DIGIT ZERO
+1D7F7;1D7F7;1D7F7;0031;0031; # (ðŸ·; ðŸ·; ðŸ·; 1; 1; ) MATHEMATICAL MONOSPACE DIGIT ONE
+1D7F8;1D7F8;1D7F8;0032;0032; # (ðŸ¸; ðŸ¸; ðŸ¸; 2; 2; ) MATHEMATICAL MONOSPACE DIGIT TWO
+1D7F9;1D7F9;1D7F9;0033;0033; # (ðŸ¹; ðŸ¹; ðŸ¹; 3; 3; ) MATHEMATICAL MONOSPACE DIGIT THREE
+1D7FA;1D7FA;1D7FA;0034;0034; # (ðŸº; ðŸº; ðŸº; 4; 4; ) MATHEMATICAL MONOSPACE DIGIT FOUR
+1D7FB;1D7FB;1D7FB;0035;0035; # (ðŸ»; ðŸ»; ðŸ»; 5; 5; ) MATHEMATICAL MONOSPACE DIGIT FIVE
+1D7FC;1D7FC;1D7FC;0036;0036; # (ðŸ¼; ðŸ¼; ðŸ¼; 6; 6; ) MATHEMATICAL MONOSPACE DIGIT SIX
+1D7FD;1D7FD;1D7FD;0037;0037; # (ðŸ½; ðŸ½; ðŸ½; 7; 7; ) MATHEMATICAL MONOSPACE DIGIT SEVEN
+1D7FE;1D7FE;1D7FE;0038;0038; # (ðŸ¾; ðŸ¾; ðŸ¾; 8; 8; ) MATHEMATICAL MONOSPACE DIGIT EIGHT
+1D7FF;1D7FF;1D7FF;0039;0039; # (ðŸ¿; ðŸ¿; ðŸ¿; 9; 9; ) MATHEMATICAL MONOSPACE DIGIT NINE
+2F800;4E3D;4E3D;4E3D;4E3D; # (丽; 丽; 丽; 丽; 丽; ) CJK COMPATIBILITY IDEOGRAPH-2F800
+2F801;4E38;4E38;4E38;4E38; # (ð¯ ; 丸; 丸; 丸; 丸; ) CJK COMPATIBILITY IDEOGRAPH-2F801
+2F802;4E41;4E41;4E41;4E41; # (乁; ä¹; ä¹; ä¹; ä¹; ) CJK COMPATIBILITY IDEOGRAPH-2F802
+2F803;20122;20122;20122;20122; # (𠄢; 𠄢; 𠄢; 𠄢; 𠄢; ) CJK COMPATIBILITY IDEOGRAPH-2F803
+2F804;4F60;4F60;4F60;4F60; # (你; 你; 你; 你; 你; ) CJK COMPATIBILITY IDEOGRAPH-2F804
+2F805;4FAE;4FAE;4FAE;4FAE; # (侮; 侮; 侮; 侮; 侮; ) CJK COMPATIBILITY IDEOGRAPH-2F805
+2F806;4FBB;4FBB;4FBB;4FBB; # (侻; 侻; 侻; 侻; 侻; ) CJK COMPATIBILITY IDEOGRAPH-2F806
+2F807;5002;5002;5002;5002; # (倂; 倂; 倂; 倂; 倂; ) CJK COMPATIBILITY IDEOGRAPH-2F807
+2F808;507A;507A;507A;507A; # (偺; åº; åº; åº; åº; ) CJK COMPATIBILITY IDEOGRAPH-2F808
+2F809;5099;5099;5099;5099; # (備; 備; 備; 備; 備; ) CJK COMPATIBILITY IDEOGRAPH-2F809
+2F80A;50E7;50E7;50E7;50E7; # (僧; 僧; 僧; 僧; 僧; ) CJK COMPATIBILITY IDEOGRAPH-2F80A
+2F80B;50CF;50CF;50CF;50CF; # (像; åƒ; åƒ; åƒ; åƒ; ) CJK COMPATIBILITY IDEOGRAPH-2F80B
+2F80C;349E;349E;349E;349E; # (㒞; 㒞; 㒞; 㒞; 㒞; ) CJK COMPATIBILITY IDEOGRAPH-2F80C
+2F80D;2063A;2063A;2063A;2063A; # (ð¯ ; 𠘺; 𠘺; 𠘺; 𠘺; ) CJK COMPATIBILITY IDEOGRAPH-2F80D
+2F80E;514D;514D;514D;514D; # (免; å…; å…; å…; å…; ) CJK COMPATIBILITY IDEOGRAPH-2F80E
+2F80F;5154;5154;5154;5154; # (ð¯ ; å…”; å…”; å…”; å…”; ) CJK COMPATIBILITY IDEOGRAPH-2F80F
+2F810;5164;5164;5164;5164; # (ð¯ ; å…¤; å…¤; å…¤; å…¤; ) CJK COMPATIBILITY IDEOGRAPH-2F810
+2F811;5177;5177;5177;5177; # (具; 具; 具; 具; 具; ) CJK COMPATIBILITY IDEOGRAPH-2F811
+2F812;2051C;2051C;2051C;2051C; # (𠔜; 𠔜; 𠔜; 𠔜; 𠔜; ) CJK COMPATIBILITY IDEOGRAPH-2F812
+2F813;34B9;34B9;34B9;34B9; # (㒹; 㒹; 㒹; 㒹; 㒹; ) CJK COMPATIBILITY IDEOGRAPH-2F813
+2F814;5167;5167;5167;5167; # (內; 內; 內; 內; 內; ) CJK COMPATIBILITY IDEOGRAPH-2F814
+2F815;518D;518D;518D;518D; # (再; å†; å†; å†; å†; ) CJK COMPATIBILITY IDEOGRAPH-2F815
+2F816;2054B;2054B;2054B;2054B; # (𠕋; 𠕋; 𠕋; 𠕋; 𠕋; ) CJK COMPATIBILITY IDEOGRAPH-2F816
+2F817;5197;5197;5197;5197; # (冗; 冗; 冗; 冗; 冗; ) CJK COMPATIBILITY IDEOGRAPH-2F817
+2F818;51A4;51A4;51A4;51A4; # (冤; 冤; 冤; 冤; 冤; ) CJK COMPATIBILITY IDEOGRAPH-2F818
+2F819;4ECC;4ECC;4ECC;4ECC; # (仌; 仌; 仌; 仌; 仌; ) CJK COMPATIBILITY IDEOGRAPH-2F819
+2F81A;51AC;51AC;51AC;51AC; # (冬; 冬; 冬; 冬; 冬; ) CJK COMPATIBILITY IDEOGRAPH-2F81A
+2F81B;51B5;51B5;51B5;51B5; # (况; 况; 况; 况; 况; ) CJK COMPATIBILITY IDEOGRAPH-2F81B
+2F81C;291DF;291DF;291DF;291DF; # (𩇟; 𩇟; 𩇟; 𩇟; 𩇟; ) CJK COMPATIBILITY IDEOGRAPH-2F81C
+2F81D;51F5;51F5;51F5;51F5; # (ð¯ ; 凵; 凵; 凵; 凵; ) CJK COMPATIBILITY IDEOGRAPH-2F81D
+2F81E;5203;5203;5203;5203; # (刃; 刃; 刃; 刃; 刃; ) CJK COMPATIBILITY IDEOGRAPH-2F81E
+2F81F;34DF;34DF;34DF;34DF; # (㓟; 㓟; 㓟; 㓟; 㓟; ) CJK COMPATIBILITY IDEOGRAPH-2F81F
+2F820;523B;523B;523B;523B; # (刻; 刻; 刻; 刻; 刻; ) CJK COMPATIBILITY IDEOGRAPH-2F820
+2F821;5246;5246;5246;5246; # (剆; 剆; 剆; 剆; 剆; ) CJK COMPATIBILITY IDEOGRAPH-2F821
+2F822;5272;5272;5272;5272; # (割; 割; 割; 割; 割; ) CJK COMPATIBILITY IDEOGRAPH-2F822
+2F823;5277;5277;5277;5277; # (剷; 剷; 剷; 剷; 剷; ) CJK COMPATIBILITY IDEOGRAPH-2F823
+2F824;3515;3515;3515;3515; # (㔕; 㔕; 㔕; 㔕; 㔕; ) CJK COMPATIBILITY IDEOGRAPH-2F824
+2F825;52C7;52C7;52C7;52C7; # (勇; 勇; 勇; 勇; 勇; ) CJK COMPATIBILITY IDEOGRAPH-2F825
+2F826;52C9;52C9;52C9;52C9; # (勉; 勉; 勉; 勉; 勉; ) CJK COMPATIBILITY IDEOGRAPH-2F826
+2F827;52E4;52E4;52E4;52E4; # (勤; 勤; 勤; 勤; 勤; ) CJK COMPATIBILITY IDEOGRAPH-2F827
+2F828;52FA;52FA;52FA;52FA; # (勺; 勺; 勺; 勺; 勺; ) CJK COMPATIBILITY IDEOGRAPH-2F828
+2F829;5305;5305;5305;5305; # (包; 包; 包; 包; 包; ) CJK COMPATIBILITY IDEOGRAPH-2F829
+2F82A;5306;5306;5306;5306; # (匆; 匆; 匆; 匆; 匆; ) CJK COMPATIBILITY IDEOGRAPH-2F82A
+2F82B;5317;5317;5317;5317; # (北; 北; 北; 北; 北; ) CJK COMPATIBILITY IDEOGRAPH-2F82B
+2F82C;5349;5349;5349;5349; # (卉; å‰; å‰; å‰; å‰; ) CJK COMPATIBILITY IDEOGRAPH-2F82C
+2F82D;5351;5351;5351;5351; # (卑; å‘; å‘; å‘; å‘; ) CJK COMPATIBILITY IDEOGRAPH-2F82D
+2F82E;535A;535A;535A;535A; # (博; åš; åš; åš; åš; ) CJK COMPATIBILITY IDEOGRAPH-2F82E
+2F82F;5373;5373;5373;5373; # (即; å³; å³; å³; å³; ) CJK COMPATIBILITY IDEOGRAPH-2F82F
+2F830;537D;537D;537D;537D; # (卽; å½; å½; å½; å½; ) CJK COMPATIBILITY IDEOGRAPH-2F830
+2F831;537F;537F;537F;537F; # (卿; å¿; å¿; å¿; å¿; ) CJK COMPATIBILITY IDEOGRAPH-2F831
+2F832;537F;537F;537F;537F; # (卿; å¿; å¿; å¿; å¿; ) CJK COMPATIBILITY IDEOGRAPH-2F832
+2F833;537F;537F;537F;537F; # (卿; å¿; å¿; å¿; å¿; ) CJK COMPATIBILITY IDEOGRAPH-2F833
+2F834;20A2C;20A2C;20A2C;20A2C; # (𠨬; 𠨬; 𠨬; 𠨬; 𠨬; ) CJK COMPATIBILITY IDEOGRAPH-2F834
+2F835;7070;7070;7070;7070; # (灰; ç°; ç°; ç°; ç°; ) CJK COMPATIBILITY IDEOGRAPH-2F835
+2F836;53CA;53CA;53CA;53CA; # (及; åŠ; åŠ; åŠ; åŠ; ) CJK COMPATIBILITY IDEOGRAPH-2F836
+2F837;53DF;53DF;53DF;53DF; # (叟; åŸ; åŸ; åŸ; åŸ; ) CJK COMPATIBILITY IDEOGRAPH-2F837
+2F838;20B63;20B63;20B63;20B63; # (𠭣; 𠭣; 𠭣; 𠭣; 𠭣; ) CJK COMPATIBILITY IDEOGRAPH-2F838
+2F839;53EB;53EB;53EB;53EB; # (叫; å«; å«; å«; å«; ) CJK COMPATIBILITY IDEOGRAPH-2F839
+2F83A;53F1;53F1;53F1;53F1; # (叱; å±; å±; å±; å±; ) CJK COMPATIBILITY IDEOGRAPH-2F83A
+2F83B;5406;5406;5406;5406; # (吆; å†; å†; å†; å†; ) CJK COMPATIBILITY IDEOGRAPH-2F83B
+2F83C;549E;549E;549E;549E; # (咞; 咞; 咞; 咞; 咞; ) CJK COMPATIBILITY IDEOGRAPH-2F83C
+2F83D;5438;5438;5438;5438; # (吸; å¸; å¸; å¸; å¸; ) CJK COMPATIBILITY IDEOGRAPH-2F83D
+2F83E;5448;5448;5448;5448; # (呈; 呈; 呈; 呈; 呈; ) CJK COMPATIBILITY IDEOGRAPH-2F83E
+2F83F;5468;5468;5468;5468; # (周; 周; 周; 周; 周; ) CJK COMPATIBILITY IDEOGRAPH-2F83F
+2F840;54A2;54A2;54A2;54A2; # (咢; 咢; 咢; 咢; 咢; ) CJK COMPATIBILITY IDEOGRAPH-2F840
+2F841;54F6;54F6;54F6;54F6; # (ð¯¡; 哶; 哶; 哶; 哶; ) CJK COMPATIBILITY IDEOGRAPH-2F841
+2F842;5510;5510;5510;5510; # (唐; å”; å”; å”; å”; ) CJK COMPATIBILITY IDEOGRAPH-2F842
+2F843;5553;5553;5553;5553; # (啓; 啓; 啓; 啓; 啓; ) CJK COMPATIBILITY IDEOGRAPH-2F843
+2F844;5563;5563;5563;5563; # (啣; 啣; 啣; 啣; 啣; ) CJK COMPATIBILITY IDEOGRAPH-2F844
+2F845;5584;5584;5584;5584; # (善; 善; 善; 善; 善; ) CJK COMPATIBILITY IDEOGRAPH-2F845
+2F846;5584;5584;5584;5584; # (善; 善; 善; 善; 善; ) CJK COMPATIBILITY IDEOGRAPH-2F846
+2F847;5599;5599;5599;5599; # (喙; 喙; 喙; 喙; 喙; ) CJK COMPATIBILITY IDEOGRAPH-2F847
+2F848;55AB;55AB;55AB;55AB; # (喫; 喫; 喫; 喫; 喫; ) CJK COMPATIBILITY IDEOGRAPH-2F848
+2F849;55B3;55B3;55B3;55B3; # (喳; 喳; 喳; 喳; 喳; ) CJK COMPATIBILITY IDEOGRAPH-2F849
+2F84A;55C2;55C2;55C2;55C2; # (嗂; 嗂; 嗂; 嗂; 嗂; ) CJK COMPATIBILITY IDEOGRAPH-2F84A
+2F84B;5716;5716;5716;5716; # (圖; 圖; 圖; 圖; 圖; ) CJK COMPATIBILITY IDEOGRAPH-2F84B
+2F84C;5606;5606;5606;5606; # (嘆; 嘆; 嘆; 嘆; 嘆; ) CJK COMPATIBILITY IDEOGRAPH-2F84C
+2F84D;5717;5717;5717;5717; # (ð¯¡; 圗; 圗; 圗; 圗; ) CJK COMPATIBILITY IDEOGRAPH-2F84D
+2F84E;5651;5651;5651;5651; # (噑; 噑; 噑; 噑; 噑; ) CJK COMPATIBILITY IDEOGRAPH-2F84E
+2F84F;5674;5674;5674;5674; # (ð¯¡; å™´; å™´; å™´; å™´; ) CJK COMPATIBILITY IDEOGRAPH-2F84F
+2F850;5207;5207;5207;5207; # (ð¯¡; 切; 切; 切; 切; ) CJK COMPATIBILITY IDEOGRAPH-2F850
+2F851;58EE;58EE;58EE;58EE; # (壮; 壮; 壮; 壮; 壮; ) CJK COMPATIBILITY IDEOGRAPH-2F851
+2F852;57CE;57CE;57CE;57CE; # (城; 城; 城; 城; 城; ) CJK COMPATIBILITY IDEOGRAPH-2F852
+2F853;57F4;57F4;57F4;57F4; # (埴; 埴; 埴; 埴; 埴; ) CJK COMPATIBILITY IDEOGRAPH-2F853
+2F854;580D;580D;580D;580D; # (堍; å ; å ; å ; å ; ) CJK COMPATIBILITY IDEOGRAPH-2F854
+2F855;578B;578B;578B;578B; # (型; 型; 型; 型; 型; ) CJK COMPATIBILITY IDEOGRAPH-2F855
+2F856;5832;5832;5832;5832; # (堲; 堲; 堲; 堲; 堲; ) CJK COMPATIBILITY IDEOGRAPH-2F856
+2F857;5831;5831;5831;5831; # (報; 報; 報; 報; 報; ) CJK COMPATIBILITY IDEOGRAPH-2F857
+2F858;58AC;58AC;58AC;58AC; # (墬; 墬; 墬; 墬; 墬; ) CJK COMPATIBILITY IDEOGRAPH-2F858
+2F859;214E4;214E4;214E4;214E4; # (𡓤; 𡓤; 𡓤; 𡓤; 𡓤; ) CJK COMPATIBILITY IDEOGRAPH-2F859
+2F85A;58F2;58F2;58F2;58F2; # (売; 売; 売; 売; 売; ) CJK COMPATIBILITY IDEOGRAPH-2F85A
+2F85B;58F7;58F7;58F7;58F7; # (壷; 壷; 壷; 壷; 壷; ) CJK COMPATIBILITY IDEOGRAPH-2F85B
+2F85C;5906;5906;5906;5906; # (夆; 夆; 夆; 夆; 夆; ) CJK COMPATIBILITY IDEOGRAPH-2F85C
+2F85D;591A;591A;591A;591A; # (ð¯¡; 多; 多; 多; 多; ) CJK COMPATIBILITY IDEOGRAPH-2F85D
+2F85E;5922;5922;5922;5922; # (夢; 夢; 夢; 夢; 夢; ) CJK COMPATIBILITY IDEOGRAPH-2F85E
+2F85F;5962;5962;5962;5962; # (奢; 奢; 奢; 奢; 奢; ) CJK COMPATIBILITY IDEOGRAPH-2F85F
+2F860;216A8;216A8;216A8;216A8; # (𡚨; 𡚨; 𡚨; 𡚨; 𡚨; ) CJK COMPATIBILITY IDEOGRAPH-2F860
+2F861;216EA;216EA;216EA;216EA; # (𡛪; 𡛪; 𡛪; 𡛪; 𡛪; ) CJK COMPATIBILITY IDEOGRAPH-2F861
+2F862;59EC;59EC;59EC;59EC; # (姬; 姬; 姬; 姬; 姬; ) CJK COMPATIBILITY IDEOGRAPH-2F862
+2F863;5A1B;5A1B;5A1B;5A1B; # (娛; 娛; 娛; 娛; 娛; ) CJK COMPATIBILITY IDEOGRAPH-2F863
+2F864;5A27;5A27;5A27;5A27; # (娧; 娧; 娧; 娧; 娧; ) CJK COMPATIBILITY IDEOGRAPH-2F864
+2F865;59D8;59D8;59D8;59D8; # (姘; 姘; 姘; 姘; 姘; ) CJK COMPATIBILITY IDEOGRAPH-2F865
+2F866;5A66;5A66;5A66;5A66; # (婦; 婦; 婦; 婦; 婦; ) CJK COMPATIBILITY IDEOGRAPH-2F866
+2F867;36EE;36EE;36EE;36EE; # (㛮; 㛮; 㛮; 㛮; 㛮; ) CJK COMPATIBILITY IDEOGRAPH-2F867
+2F868;36FC;36FC;36FC;36FC; # (㛼; 㛼; 㛼; 㛼; 㛼; ) CJK COMPATIBILITY IDEOGRAPH-2F868
+2F869;5B08;5B08;5B08;5B08; # (嬈; 嬈; 嬈; 嬈; 嬈; ) CJK COMPATIBILITY IDEOGRAPH-2F869
+2F86A;5B3E;5B3E;5B3E;5B3E; # (嬾; 嬾; 嬾; 嬾; 嬾; ) CJK COMPATIBILITY IDEOGRAPH-2F86A
+2F86B;5B3E;5B3E;5B3E;5B3E; # (嬾; 嬾; 嬾; 嬾; 嬾; ) CJK COMPATIBILITY IDEOGRAPH-2F86B
+2F86C;219C8;219C8;219C8;219C8; # (𡧈; 𡧈; 𡧈; 𡧈; 𡧈; ) CJK COMPATIBILITY IDEOGRAPH-2F86C
+2F86D;5BC3;5BC3;5BC3;5BC3; # (寃; 寃; 寃; 寃; 寃; ) CJK COMPATIBILITY IDEOGRAPH-2F86D
+2F86E;5BD8;5BD8;5BD8;5BD8; # (寘; 寘; 寘; 寘; 寘; ) CJK COMPATIBILITY IDEOGRAPH-2F86E
+2F86F;5BE7;5BE7;5BE7;5BE7; # (寧; 寧; 寧; 寧; 寧; ) CJK COMPATIBILITY IDEOGRAPH-2F86F
+2F870;5BF3;5BF3;5BF3;5BF3; # (寳; 寳; 寳; 寳; 寳; ) CJK COMPATIBILITY IDEOGRAPH-2F870
+2F871;21B18;21B18;21B18;21B18; # (𡬘; 𡬘; 𡬘; 𡬘; 𡬘; ) CJK COMPATIBILITY IDEOGRAPH-2F871
+2F872;5BFF;5BFF;5BFF;5BFF; # (寿; 寿; 寿; 寿; 寿; ) CJK COMPATIBILITY IDEOGRAPH-2F872
+2F873;5C06;5C06;5C06;5C06; # (将; 将; 将; 将; 将; ) CJK COMPATIBILITY IDEOGRAPH-2F873
+2F874;5F53;5F53;5F53;5F53; # (当; 当; 当; 当; 当; ) CJK COMPATIBILITY IDEOGRAPH-2F874
+2F875;5C22;5C22;5C22;5C22; # (尢; 尢; 尢; 尢; 尢; ) CJK COMPATIBILITY IDEOGRAPH-2F875
+2F876;3781;3781;3781;3781; # (㞁; ãž; ãž; ãž; ãž; ) CJK COMPATIBILITY IDEOGRAPH-2F876
+2F877;5C60;5C60;5C60;5C60; # (屠; 屠; 屠; 屠; 屠; ) CJK COMPATIBILITY IDEOGRAPH-2F877
+2F878;5C6E;5C6E;5C6E;5C6E; # (屮; 屮; 屮; 屮; 屮; ) CJK COMPATIBILITY IDEOGRAPH-2F878
+2F879;5CC0;5CC0;5CC0;5CC0; # (峀; 峀; 峀; 峀; 峀; ) CJK COMPATIBILITY IDEOGRAPH-2F879
+2F87A;5C8D;5C8D;5C8D;5C8D; # (岍; å²; å²; å²; å²; ) CJK COMPATIBILITY IDEOGRAPH-2F87A
+2F87B;21DE4;21DE4;21DE4;21DE4; # (𡷤; 𡷤; 𡷤; 𡷤; 𡷤; ) CJK COMPATIBILITY IDEOGRAPH-2F87B
+2F87C;5D43;5D43;5D43;5D43; # (嵃; 嵃; 嵃; 嵃; 嵃; ) CJK COMPATIBILITY IDEOGRAPH-2F87C
+2F87D;21DE6;21DE6;21DE6;21DE6; # (𡷦; 𡷦; 𡷦; 𡷦; 𡷦; ) CJK COMPATIBILITY IDEOGRAPH-2F87D
+2F87E;5D6E;5D6E;5D6E;5D6E; # (嵮; 嵮; 嵮; 嵮; 嵮; ) CJK COMPATIBILITY IDEOGRAPH-2F87E
+2F87F;5D6B;5D6B;5D6B;5D6B; # (嵫; 嵫; 嵫; 嵫; 嵫; ) CJK COMPATIBILITY IDEOGRAPH-2F87F
+2F880;5D7C;5D7C;5D7C;5D7C; # (嵼; 嵼; 嵼; 嵼; 嵼; ) CJK COMPATIBILITY IDEOGRAPH-2F880
+2F881;5DE1;5DE1;5DE1;5DE1; # (ð¯¢; å·¡; å·¡; å·¡; å·¡; ) CJK COMPATIBILITY IDEOGRAPH-2F881
+2F882;5DE2;5DE2;5DE2;5DE2; # (巢; 巢; 巢; 巢; 巢; ) CJK COMPATIBILITY IDEOGRAPH-2F882
+2F883;382F;382F;382F;382F; # (㠯; 㠯; 㠯; 㠯; 㠯; ) CJK COMPATIBILITY IDEOGRAPH-2F883
+2F884;5DFD;5DFD;5DFD;5DFD; # (巽; 巽; 巽; 巽; 巽; ) CJK COMPATIBILITY IDEOGRAPH-2F884
+2F885;5E28;5E28;5E28;5E28; # (帨; 帨; 帨; 帨; 帨; ) CJK COMPATIBILITY IDEOGRAPH-2F885
+2F886;5E3D;5E3D;5E3D;5E3D; # (帽; 帽; 帽; 帽; 帽; ) CJK COMPATIBILITY IDEOGRAPH-2F886
+2F887;5E69;5E69;5E69;5E69; # (幩; 幩; 幩; 幩; 幩; ) CJK COMPATIBILITY IDEOGRAPH-2F887
+2F888;3862;3862;3862;3862; # (㡢; 㡢; 㡢; 㡢; 㡢; ) CJK COMPATIBILITY IDEOGRAPH-2F888
+2F889;22183;22183;22183;22183; # (𢆃; 𢆃; 𢆃; 𢆃; 𢆃; ) CJK COMPATIBILITY IDEOGRAPH-2F889
+2F88A;387C;387C;387C;387C; # (㡼; 㡼; 㡼; 㡼; 㡼; ) CJK COMPATIBILITY IDEOGRAPH-2F88A
+2F88B;5EB0;5EB0;5EB0;5EB0; # (庰; 庰; 庰; 庰; 庰; ) CJK COMPATIBILITY IDEOGRAPH-2F88B
+2F88C;5EB3;5EB3;5EB3;5EB3; # (庳; 庳; 庳; 庳; 庳; ) CJK COMPATIBILITY IDEOGRAPH-2F88C
+2F88D;5EB6;5EB6;5EB6;5EB6; # (ð¯¢; 庶; 庶; 庶; 庶; ) CJK COMPATIBILITY IDEOGRAPH-2F88D
+2F88E;5ECA;5ECA;5ECA;5ECA; # (廊; 廊; 廊; 廊; 廊; ) CJK COMPATIBILITY IDEOGRAPH-2F88E
+2F88F;2A392;2A392;2A392;2A392; # (ð¯¢; 𪎒; 𪎒; 𪎒; 𪎒; ) CJK COMPATIBILITY IDEOGRAPH-2F88F
+2F890;5EFE;5EFE;5EFE;5EFE; # (ð¯¢; 廾; 廾; 廾; 廾; ) CJK COMPATIBILITY IDEOGRAPH-2F890
+2F891;22331;22331;22331;22331; # (𢌱; 𢌱; 𢌱; 𢌱; 𢌱; ) CJK COMPATIBILITY IDEOGRAPH-2F891
+2F892;22331;22331;22331;22331; # (𢌱; 𢌱; 𢌱; 𢌱; 𢌱; ) CJK COMPATIBILITY IDEOGRAPH-2F892
+2F893;8201;8201;8201;8201; # (舁; èˆ; èˆ; èˆ; èˆ; ) CJK COMPATIBILITY IDEOGRAPH-2F893
+2F894;5F22;5F22;5F22;5F22; # (弢; 弢; 弢; 弢; 弢; ) CJK COMPATIBILITY IDEOGRAPH-2F894
+2F895;5F22;5F22;5F22;5F22; # (弢; 弢; 弢; 弢; 弢; ) CJK COMPATIBILITY IDEOGRAPH-2F895
+2F896;38C7;38C7;38C7;38C7; # (㣇; 㣇; 㣇; 㣇; 㣇; ) CJK COMPATIBILITY IDEOGRAPH-2F896
+2F897;232B8;232B8;232B8;232B8; # (𣊸; 𣊸; 𣊸; 𣊸; 𣊸; ) CJK COMPATIBILITY IDEOGRAPH-2F897
+2F898;261DA;261DA;261DA;261DA; # (𦇚; 𦇚; 𦇚; 𦇚; 𦇚; ) CJK COMPATIBILITY IDEOGRAPH-2F898
+2F899;5F62;5F62;5F62;5F62; # (形; 形; 形; 形; 形; ) CJK COMPATIBILITY IDEOGRAPH-2F899
+2F89A;5F6B;5F6B;5F6B;5F6B; # (彫; 彫; 彫; 彫; 彫; ) CJK COMPATIBILITY IDEOGRAPH-2F89A
+2F89B;38E3;38E3;38E3;38E3; # (㣣; 㣣; 㣣; 㣣; 㣣; ) CJK COMPATIBILITY IDEOGRAPH-2F89B
+2F89C;5F9A;5F9A;5F9A;5F9A; # (徚; 徚; 徚; 徚; 徚; ) CJK COMPATIBILITY IDEOGRAPH-2F89C
+2F89D;5FCD;5FCD;5FCD;5FCD; # (ð¯¢; å¿; å¿; å¿; å¿; ) CJK COMPATIBILITY IDEOGRAPH-2F89D
+2F89E;5FD7;5FD7;5FD7;5FD7; # (志; 志; 志; 志; 志; ) CJK COMPATIBILITY IDEOGRAPH-2F89E
+2F89F;5FF9;5FF9;5FF9;5FF9; # (忹; 忹; 忹; 忹; 忹; ) CJK COMPATIBILITY IDEOGRAPH-2F89F
+2F8A0;6081;6081;6081;6081; # (悁; æ‚; æ‚; æ‚; æ‚; ) CJK COMPATIBILITY IDEOGRAPH-2F8A0
+2F8A1;393A;393A;393A;393A; # (㤺; 㤺; 㤺; 㤺; 㤺; ) CJK COMPATIBILITY IDEOGRAPH-2F8A1
+2F8A2;391C;391C;391C;391C; # (㤜; 㤜; 㤜; 㤜; 㤜; ) CJK COMPATIBILITY IDEOGRAPH-2F8A2
+2F8A3;6094;6094;6094;6094; # (悔; 悔; 悔; 悔; 悔; ) CJK COMPATIBILITY IDEOGRAPH-2F8A3
+2F8A4;226D4;226D4;226D4;226D4; # (𢛔; 𢛔; 𢛔; 𢛔; 𢛔; ) CJK COMPATIBILITY IDEOGRAPH-2F8A4
+2F8A5;60C7;60C7;60C7;60C7; # (惇; 惇; 惇; 惇; 惇; ) CJK COMPATIBILITY IDEOGRAPH-2F8A5
+2F8A6;6148;6148;6148;6148; # (慈; 慈; 慈; 慈; 慈; ) CJK COMPATIBILITY IDEOGRAPH-2F8A6
+2F8A7;614C;614C;614C;614C; # (慌; 慌; 慌; 慌; 慌; ) CJK COMPATIBILITY IDEOGRAPH-2F8A7
+2F8A8;614E;614E;614E;614E; # (慎; 慎; 慎; 慎; 慎; ) CJK COMPATIBILITY IDEOGRAPH-2F8A8
+2F8A9;614C;614C;614C;614C; # (慌; 慌; 慌; 慌; 慌; ) CJK COMPATIBILITY IDEOGRAPH-2F8A9
+2F8AA;617A;617A;617A;617A; # (慺; 慺; 慺; 慺; 慺; ) CJK COMPATIBILITY IDEOGRAPH-2F8AA
+2F8AB;618E;618E;618E;618E; # (憎; 憎; 憎; 憎; 憎; ) CJK COMPATIBILITY IDEOGRAPH-2F8AB
+2F8AC;61B2;61B2;61B2;61B2; # (憲; 憲; 憲; 憲; 憲; ) CJK COMPATIBILITY IDEOGRAPH-2F8AC
+2F8AD;61A4;61A4;61A4;61A4; # (憤; 憤; 憤; 憤; 憤; ) CJK COMPATIBILITY IDEOGRAPH-2F8AD
+2F8AE;61AF;61AF;61AF;61AF; # (憯; 憯; 憯; 憯; 憯; ) CJK COMPATIBILITY IDEOGRAPH-2F8AE
+2F8AF;61DE;61DE;61DE;61DE; # (懞; 懞; 懞; 懞; 懞; ) CJK COMPATIBILITY IDEOGRAPH-2F8AF
+2F8B0;61F2;61F2;61F2;61F2; # (懲; 懲; 懲; 懲; 懲; ) CJK COMPATIBILITY IDEOGRAPH-2F8B0
+2F8B1;61F6;61F6;61F6;61F6; # (懶; 懶; 懶; 懶; 懶; ) CJK COMPATIBILITY IDEOGRAPH-2F8B1
+2F8B2;6210;6210;6210;6210; # (成; æˆ; æˆ; æˆ; æˆ; ) CJK COMPATIBILITY IDEOGRAPH-2F8B2
+2F8B3;621B;621B;621B;621B; # (戛; 戛; 戛; 戛; 戛; ) CJK COMPATIBILITY IDEOGRAPH-2F8B3
+2F8B4;625D;625D;625D;625D; # (扝; æ‰; æ‰; æ‰; æ‰; ) CJK COMPATIBILITY IDEOGRAPH-2F8B4
+2F8B5;62B1;62B1;62B1;62B1; # (抱; 抱; 抱; 抱; 抱; ) CJK COMPATIBILITY IDEOGRAPH-2F8B5
+2F8B6;62D4;62D4;62D4;62D4; # (拔; 拔; 拔; 拔; 拔; ) CJK COMPATIBILITY IDEOGRAPH-2F8B6
+2F8B7;6350;6350;6350;6350; # (捐; æ; æ; æ; æ; ) CJK COMPATIBILITY IDEOGRAPH-2F8B7
+2F8B8;22B0C;22B0C;22B0C;22B0C; # (𢬌; 𢬌; 𢬌; 𢬌; 𢬌; ) CJK COMPATIBILITY IDEOGRAPH-2F8B8
+2F8B9;633D;633D;633D;633D; # (挽; 挽; 挽; 挽; 挽; ) CJK COMPATIBILITY IDEOGRAPH-2F8B9
+2F8BA;62FC;62FC;62FC;62FC; # (拼; 拼; 拼; 拼; 拼; ) CJK COMPATIBILITY IDEOGRAPH-2F8BA
+2F8BB;6368;6368;6368;6368; # (捨; æ¨; æ¨; æ¨; æ¨; ) CJK COMPATIBILITY IDEOGRAPH-2F8BB
+2F8BC;6383;6383;6383;6383; # (掃; 掃; 掃; 掃; 掃; ) CJK COMPATIBILITY IDEOGRAPH-2F8BC
+2F8BD;63E4;63E4;63E4;63E4; # (揤; æ¤; æ¤; æ¤; æ¤; ) CJK COMPATIBILITY IDEOGRAPH-2F8BD
+2F8BE;22BF1;22BF1;22BF1;22BF1; # (𢯱; 𢯱; 𢯱; 𢯱; 𢯱; ) CJK COMPATIBILITY IDEOGRAPH-2F8BE
+2F8BF;6422;6422;6422;6422; # (搢; æ¢; æ¢; æ¢; æ¢; ) CJK COMPATIBILITY IDEOGRAPH-2F8BF
+2F8C0;63C5;63C5;63C5;63C5; # (揅; æ…; æ…; æ…; æ…; ) CJK COMPATIBILITY IDEOGRAPH-2F8C0
+2F8C1;63A9;63A9;63A9;63A9; # (ð¯£; 掩; 掩; 掩; 掩; ) CJK COMPATIBILITY IDEOGRAPH-2F8C1
+2F8C2;3A2E;3A2E;3A2E;3A2E; # (㨮; 㨮; 㨮; 㨮; 㨮; ) CJK COMPATIBILITY IDEOGRAPH-2F8C2
+2F8C3;6469;6469;6469;6469; # (摩; 摩; 摩; 摩; 摩; ) CJK COMPATIBILITY IDEOGRAPH-2F8C3
+2F8C4;647E;647E;647E;647E; # (摾; 摾; 摾; 摾; 摾; ) CJK COMPATIBILITY IDEOGRAPH-2F8C4
+2F8C5;649D;649D;649D;649D; # (撝; æ’; æ’; æ’; æ’; ) CJK COMPATIBILITY IDEOGRAPH-2F8C5
+2F8C6;6477;6477;6477;6477; # (摷; 摷; 摷; 摷; 摷; ) CJK COMPATIBILITY IDEOGRAPH-2F8C6
+2F8C7;3A6C;3A6C;3A6C;3A6C; # (㩬; 㩬; 㩬; 㩬; 㩬; ) CJK COMPATIBILITY IDEOGRAPH-2F8C7
+2F8C8;654F;654F;654F;654F; # (敏; æ•; æ•; æ•; æ•; ) CJK COMPATIBILITY IDEOGRAPH-2F8C8
+2F8C9;656C;656C;656C;656C; # (敬; 敬; 敬; 敬; 敬; ) CJK COMPATIBILITY IDEOGRAPH-2F8C9
+2F8CA;2300A;2300A;2300A;2300A; # (𣀊; 𣀊; 𣀊; 𣀊; 𣀊; ) CJK COMPATIBILITY IDEOGRAPH-2F8CA
+2F8CB;65E3;65E3;65E3;65E3; # (旣; 旣; 旣; 旣; 旣; ) CJK COMPATIBILITY IDEOGRAPH-2F8CB
+2F8CC;66F8;66F8;66F8;66F8; # (書; 書; 書; 書; 書; ) CJK COMPATIBILITY IDEOGRAPH-2F8CC
+2F8CD;6649;6649;6649;6649; # (ð¯£; 晉; 晉; 晉; 晉; ) CJK COMPATIBILITY IDEOGRAPH-2F8CD
+2F8CE;3B19;3B19;3B19;3B19; # (㬙; 㬙; 㬙; 㬙; 㬙; ) CJK COMPATIBILITY IDEOGRAPH-2F8CE
+2F8CF;6691;6691;6691;6691; # (ð¯£; æš‘; æš‘; æš‘; æš‘; ) CJK COMPATIBILITY IDEOGRAPH-2F8CF
+2F8D0;3B08;3B08;3B08;3B08; # (ð¯£; 㬈; 㬈; 㬈; 㬈; ) CJK COMPATIBILITY IDEOGRAPH-2F8D0
+2F8D1;3AE4;3AE4;3AE4;3AE4; # (㫤; 㫤; 㫤; 㫤; 㫤; ) CJK COMPATIBILITY IDEOGRAPH-2F8D1
+2F8D2;5192;5192;5192;5192; # (冒; 冒; 冒; 冒; 冒; ) CJK COMPATIBILITY IDEOGRAPH-2F8D2
+2F8D3;5195;5195;5195;5195; # (冕; 冕; 冕; 冕; 冕; ) CJK COMPATIBILITY IDEOGRAPH-2F8D3
+2F8D4;6700;6700;6700;6700; # (最; 最; 最; 最; 最; ) CJK COMPATIBILITY IDEOGRAPH-2F8D4
+2F8D5;669C;669C;669C;669C; # (暜; 暜; 暜; 暜; 暜; ) CJK COMPATIBILITY IDEOGRAPH-2F8D5
+2F8D6;80AD;80AD;80AD;80AD; # (肭; 肭; 肭; 肭; 肭; ) CJK COMPATIBILITY IDEOGRAPH-2F8D6
+2F8D7;43D9;43D9;43D9;43D9; # (䏙; ä™; ä™; ä™; ä™; ) CJK COMPATIBILITY IDEOGRAPH-2F8D7
+2F8D8;6717;6717;6717;6717; # (朗; 朗; 朗; 朗; 朗; ) CJK COMPATIBILITY IDEOGRAPH-2F8D8
+2F8D9;671B;671B;671B;671B; # (望; 望; 望; 望; 望; ) CJK COMPATIBILITY IDEOGRAPH-2F8D9
+2F8DA;6721;6721;6721;6721; # (朡; 朡; 朡; 朡; 朡; ) CJK COMPATIBILITY IDEOGRAPH-2F8DA
+2F8DB;675E;675E;675E;675E; # (杞; æž; æž; æž; æž; ) CJK COMPATIBILITY IDEOGRAPH-2F8DB
+2F8DC;6753;6753;6753;6753; # (杓; æ“; æ“; æ“; æ“; ) CJK COMPATIBILITY IDEOGRAPH-2F8DC
+2F8DD;233C3;233C3;233C3;233C3; # (ð¯£; ð£ƒ; ð£ƒ; ð£ƒ; ð£ƒ; ) CJK COMPATIBILITY IDEOGRAPH-2F8DD
+2F8DE;3B49;3B49;3B49;3B49; # (㭉; 㭉; 㭉; 㭉; 㭉; ) CJK COMPATIBILITY IDEOGRAPH-2F8DE
+2F8DF;67FA;67FA;67FA;67FA; # (柺; 柺; 柺; 柺; 柺; ) CJK COMPATIBILITY IDEOGRAPH-2F8DF
+2F8E0;6785;6785;6785;6785; # (枅; 枅; 枅; 枅; 枅; ) CJK COMPATIBILITY IDEOGRAPH-2F8E0
+2F8E1;6852;6852;6852;6852; # (桒; 桒; 桒; 桒; 桒; ) CJK COMPATIBILITY IDEOGRAPH-2F8E1
+2F8E2;6885;6885;6885;6885; # (梅; 梅; 梅; 梅; 梅; ) CJK COMPATIBILITY IDEOGRAPH-2F8E2
+2F8E3;2346D;2346D;2346D;2346D; # (𣑭; 𣑭; 𣑭; 𣑭; 𣑭; ) CJK COMPATIBILITY IDEOGRAPH-2F8E3
+2F8E4;688E;688E;688E;688E; # (梎; 梎; 梎; 梎; 梎; ) CJK COMPATIBILITY IDEOGRAPH-2F8E4
+2F8E5;681F;681F;681F;681F; # (栟; 栟; 栟; 栟; 栟; ) CJK COMPATIBILITY IDEOGRAPH-2F8E5
+2F8E6;6914;6914;6914;6914; # (椔; 椔; 椔; 椔; 椔; ) CJK COMPATIBILITY IDEOGRAPH-2F8E6
+2F8E7;3B9D;3B9D;3B9D;3B9D; # (㮝; ã®; ã®; ã®; ã®; ) CJK COMPATIBILITY IDEOGRAPH-2F8E7
+2F8E8;6942;6942;6942;6942; # (楂; 楂; 楂; 楂; 楂; ) CJK COMPATIBILITY IDEOGRAPH-2F8E8
+2F8E9;69A3;69A3;69A3;69A3; # (榣; 榣; 榣; 榣; 榣; ) CJK COMPATIBILITY IDEOGRAPH-2F8E9
+2F8EA;69EA;69EA;69EA;69EA; # (槪; 槪; 槪; 槪; 槪; ) CJK COMPATIBILITY IDEOGRAPH-2F8EA
+2F8EB;6AA8;6AA8;6AA8;6AA8; # (檨; 檨; 檨; 檨; 檨; ) CJK COMPATIBILITY IDEOGRAPH-2F8EB
+2F8EC;236A3;236A3;236A3;236A3; # (𣚣; 𣚣; 𣚣; 𣚣; 𣚣; ) CJK COMPATIBILITY IDEOGRAPH-2F8EC
+2F8ED;6ADB;6ADB;6ADB;6ADB; # (櫛; 櫛; 櫛; 櫛; 櫛; ) CJK COMPATIBILITY IDEOGRAPH-2F8ED
+2F8EE;3C18;3C18;3C18;3C18; # (㰘; 㰘; 㰘; 㰘; 㰘; ) CJK COMPATIBILITY IDEOGRAPH-2F8EE
+2F8EF;6B21;6B21;6B21;6B21; # (次; 次; 次; 次; 次; ) CJK COMPATIBILITY IDEOGRAPH-2F8EF
+2F8F0;238A7;238A7;238A7;238A7; # (𣢧; 𣢧; 𣢧; 𣢧; 𣢧; ) CJK COMPATIBILITY IDEOGRAPH-2F8F0
+2F8F1;6B54;6B54;6B54;6B54; # (歔; 歔; 歔; 歔; 歔; ) CJK COMPATIBILITY IDEOGRAPH-2F8F1
+2F8F2;3C4E;3C4E;3C4E;3C4E; # (㱎; 㱎; 㱎; 㱎; 㱎; ) CJK COMPATIBILITY IDEOGRAPH-2F8F2
+2F8F3;6B72;6B72;6B72;6B72; # (歲; 歲; 歲; 歲; 歲; ) CJK COMPATIBILITY IDEOGRAPH-2F8F3
+2F8F4;6B9F;6B9F;6B9F;6B9F; # (殟; 殟; 殟; 殟; 殟; ) CJK COMPATIBILITY IDEOGRAPH-2F8F4
+2F8F5;6BBA;6BBA;6BBA;6BBA; # (殺; 殺; 殺; 殺; 殺; ) CJK COMPATIBILITY IDEOGRAPH-2F8F5
+2F8F6;6BBB;6BBB;6BBB;6BBB; # (殻; 殻; 殻; 殻; 殻; ) CJK COMPATIBILITY IDEOGRAPH-2F8F6
+2F8F7;23A8D;23A8D;23A8D;23A8D; # (𣪍; ð£ª; ð£ª; ð£ª; ð£ª; ) CJK COMPATIBILITY IDEOGRAPH-2F8F7
+2F8F8;21D0B;21D0B;21D0B;21D0B; # (𡴋; 𡴋; 𡴋; 𡴋; 𡴋; ) CJK COMPATIBILITY IDEOGRAPH-2F8F8
+2F8F9;23AFA;23AFA;23AFA;23AFA; # (𣫺; 𣫺; 𣫺; 𣫺; 𣫺; ) CJK COMPATIBILITY IDEOGRAPH-2F8F9
+2F8FA;6C4E;6C4E;6C4E;6C4E; # (汎; 汎; 汎; 汎; 汎; ) CJK COMPATIBILITY IDEOGRAPH-2F8FA
+2F8FB;23CBC;23CBC;23CBC;23CBC; # (𣲼; 𣲼; 𣲼; 𣲼; 𣲼; ) CJK COMPATIBILITY IDEOGRAPH-2F8FB
+2F8FC;6CBF;6CBF;6CBF;6CBF; # (沿; 沿; 沿; 沿; 沿; ) CJK COMPATIBILITY IDEOGRAPH-2F8FC
+2F8FD;6CCD;6CCD;6CCD;6CCD; # (泍; æ³; æ³; æ³; æ³; ) CJK COMPATIBILITY IDEOGRAPH-2F8FD
+2F8FE;6C67;6C67;6C67;6C67; # (汧; 汧; 汧; 汧; 汧; ) CJK COMPATIBILITY IDEOGRAPH-2F8FE
+2F8FF;6D16;6D16;6D16;6D16; # (洖; 洖; 洖; 洖; 洖; ) CJK COMPATIBILITY IDEOGRAPH-2F8FF
+2F900;6D3E;6D3E;6D3E;6D3E; # (派; 派; 派; 派; 派; ) CJK COMPATIBILITY IDEOGRAPH-2F900
+2F901;6D77;6D77;6D77;6D77; # (ð¯¤; æµ·; æµ·; æµ·; æµ·; ) CJK COMPATIBILITY IDEOGRAPH-2F901
+2F902;6D41;6D41;6D41;6D41; # (流; æµ; æµ; æµ; æµ; ) CJK COMPATIBILITY IDEOGRAPH-2F902
+2F903;6D69;6D69;6D69;6D69; # (浩; 浩; 浩; 浩; 浩; ) CJK COMPATIBILITY IDEOGRAPH-2F903
+2F904;6D78;6D78;6D78;6D78; # (浸; 浸; 浸; 浸; 浸; ) CJK COMPATIBILITY IDEOGRAPH-2F904
+2F905;6D85;6D85;6D85;6D85; # (涅; 涅; 涅; 涅; 涅; ) CJK COMPATIBILITY IDEOGRAPH-2F905
+2F906;23D1E;23D1E;23D1E;23D1E; # (𣴞; 𣴞; 𣴞; 𣴞; 𣴞; ) CJK COMPATIBILITY IDEOGRAPH-2F906
+2F907;6D34;6D34;6D34;6D34; # (洴; 洴; 洴; 洴; 洴; ) CJK COMPATIBILITY IDEOGRAPH-2F907
+2F908;6E2F;6E2F;6E2F;6E2F; # (港; 港; 港; 港; 港; ) CJK COMPATIBILITY IDEOGRAPH-2F908
+2F909;6E6E;6E6E;6E6E;6E6E; # (湮; 湮; 湮; 湮; 湮; ) CJK COMPATIBILITY IDEOGRAPH-2F909
+2F90A;3D33;3D33;3D33;3D33; # (㴳; 㴳; 㴳; 㴳; 㴳; ) CJK COMPATIBILITY IDEOGRAPH-2F90A
+2F90B;6ECB;6ECB;6ECB;6ECB; # (滋; 滋; 滋; 滋; 滋; ) CJK COMPATIBILITY IDEOGRAPH-2F90B
+2F90C;6EC7;6EC7;6EC7;6EC7; # (滇; 滇; 滇; 滇; 滇; ) CJK COMPATIBILITY IDEOGRAPH-2F90C
+2F90D;23ED1;23ED1;23ED1;23ED1; # (ð¯¤; 𣻑; 𣻑; 𣻑; 𣻑; ) CJK COMPATIBILITY IDEOGRAPH-2F90D
+2F90E;6DF9;6DF9;6DF9;6DF9; # (淹; 淹; 淹; 淹; 淹; ) CJK COMPATIBILITY IDEOGRAPH-2F90E
+2F90F;6F6E;6F6E;6F6E;6F6E; # (ð¯¤; æ½®; æ½®; æ½®; æ½®; ) CJK COMPATIBILITY IDEOGRAPH-2F90F
+2F910;23F5E;23F5E;23F5E;23F5E; # (ð¯¤; 𣽞; 𣽞; 𣽞; 𣽞; ) CJK COMPATIBILITY IDEOGRAPH-2F910
+2F911;23F8E;23F8E;23F8E;23F8E; # (𣾎; 𣾎; 𣾎; 𣾎; 𣾎; ) CJK COMPATIBILITY IDEOGRAPH-2F911
+2F912;6FC6;6FC6;6FC6;6FC6; # (濆; 濆; 濆; 濆; 濆; ) CJK COMPATIBILITY IDEOGRAPH-2F912
+2F913;7039;7039;7039;7039; # (瀹; 瀹; 瀹; 瀹; 瀹; ) CJK COMPATIBILITY IDEOGRAPH-2F913
+2F914;701E;701E;701E;701E; # (瀞; 瀞; 瀞; 瀞; 瀞; ) CJK COMPATIBILITY IDEOGRAPH-2F914
+2F915;701B;701B;701B;701B; # (瀛; 瀛; 瀛; 瀛; 瀛; ) CJK COMPATIBILITY IDEOGRAPH-2F915
+2F916;3D96;3D96;3D96;3D96; # (㶖; 㶖; 㶖; 㶖; 㶖; ) CJK COMPATIBILITY IDEOGRAPH-2F916
+2F917;704A;704A;704A;704A; # (灊; çŠ; çŠ; çŠ; çŠ; ) CJK COMPATIBILITY IDEOGRAPH-2F917
+2F918;707D;707D;707D;707D; # (災; ç½; ç½; ç½; ç½; ) CJK COMPATIBILITY IDEOGRAPH-2F918
+2F919;7077;7077;7077;7077; # (灷; ç·; ç·; ç·; ç·; ) CJK COMPATIBILITY IDEOGRAPH-2F919
+2F91A;70AD;70AD;70AD;70AD; # (炭; 炭; 炭; 炭; 炭; ) CJK COMPATIBILITY IDEOGRAPH-2F91A
+2F91B;20525;20525;20525;20525; # (𠔥; 𠔥; 𠔥; 𠔥; 𠔥; ) CJK COMPATIBILITY IDEOGRAPH-2F91B
+2F91C;7145;7145;7145;7145; # (煅; 煅; 煅; 煅; 煅; ) CJK COMPATIBILITY IDEOGRAPH-2F91C
+2F91D;24263;24263;24263;24263; # (ð¯¤; 𤉣; 𤉣; 𤉣; 𤉣; ) CJK COMPATIBILITY IDEOGRAPH-2F91D
+2F91E;719C;719C;719C;719C; # (熜; 熜; 熜; 熜; 熜; ) CJK COMPATIBILITY IDEOGRAPH-2F91E
+2F91F;243AB;243AB;243AB;243AB; # (𤎫; 𤎫; 𤎫; 𤎫; 𤎫; ) CJK COMPATIBILITY IDEOGRAPH-2F91F
+2F920;7228;7228;7228;7228; # (爨; 爨; 爨; 爨; 爨; ) CJK COMPATIBILITY IDEOGRAPH-2F920
+2F921;7235;7235;7235;7235; # (爵; 爵; 爵; 爵; 爵; ) CJK COMPATIBILITY IDEOGRAPH-2F921
+2F922;7250;7250;7250;7250; # (牐; ç‰; ç‰; ç‰; ç‰; ) CJK COMPATIBILITY IDEOGRAPH-2F922
+2F923;24608;24608;24608;24608; # (𤘈; 𤘈; 𤘈; 𤘈; 𤘈; ) CJK COMPATIBILITY IDEOGRAPH-2F923
+2F924;7280;7280;7280;7280; # (犀; 犀; 犀; 犀; 犀; ) CJK COMPATIBILITY IDEOGRAPH-2F924
+2F925;7295;7295;7295;7295; # (犕; 犕; 犕; 犕; 犕; ) CJK COMPATIBILITY IDEOGRAPH-2F925
+2F926;24735;24735;24735;24735; # (𤜵; 𤜵; 𤜵; 𤜵; 𤜵; ) CJK COMPATIBILITY IDEOGRAPH-2F926
+2F927;24814;24814;24814;24814; # (𤠔; 𤠔; 𤠔; 𤠔; 𤠔; ) CJK COMPATIBILITY IDEOGRAPH-2F927
+2F928;737A;737A;737A;737A; # (獺; çº; çº; çº; çº; ) CJK COMPATIBILITY IDEOGRAPH-2F928
+2F929;738B;738B;738B;738B; # (王; 王; 王; 王; 王; ) CJK COMPATIBILITY IDEOGRAPH-2F929
+2F92A;3EAC;3EAC;3EAC;3EAC; # (㺬; 㺬; 㺬; 㺬; 㺬; ) CJK COMPATIBILITY IDEOGRAPH-2F92A
+2F92B;73A5;73A5;73A5;73A5; # (玥; 玥; 玥; 玥; 玥; ) CJK COMPATIBILITY IDEOGRAPH-2F92B
+2F92C;3EB8;3EB8;3EB8;3EB8; # (㺸; 㺸; 㺸; 㺸; 㺸; ) CJK COMPATIBILITY IDEOGRAPH-2F92C
+2F92D;3EB8;3EB8;3EB8;3EB8; # (㺸; 㺸; 㺸; 㺸; 㺸; ) CJK COMPATIBILITY IDEOGRAPH-2F92D
+2F92E;7447;7447;7447;7447; # (瑇; 瑇; 瑇; 瑇; 瑇; ) CJK COMPATIBILITY IDEOGRAPH-2F92E
+2F92F;745C;745C;745C;745C; # (瑜; 瑜; 瑜; 瑜; 瑜; ) CJK COMPATIBILITY IDEOGRAPH-2F92F
+2F930;7471;7471;7471;7471; # (瑱; 瑱; 瑱; 瑱; 瑱; ) CJK COMPATIBILITY IDEOGRAPH-2F930
+2F931;7485;7485;7485;7485; # (璅; 璅; 璅; 璅; 璅; ) CJK COMPATIBILITY IDEOGRAPH-2F931
+2F932;74CA;74CA;74CA;74CA; # (瓊; 瓊; 瓊; 瓊; 瓊; ) CJK COMPATIBILITY IDEOGRAPH-2F932
+2F933;3F1B;3F1B;3F1B;3F1B; # (㼛; 㼛; 㼛; 㼛; 㼛; ) CJK COMPATIBILITY IDEOGRAPH-2F933
+2F934;7524;7524;7524;7524; # (甤; 甤; 甤; 甤; 甤; ) CJK COMPATIBILITY IDEOGRAPH-2F934
+2F935;24C36;24C36;24C36;24C36; # (𤰶; 𤰶; 𤰶; 𤰶; 𤰶; ) CJK COMPATIBILITY IDEOGRAPH-2F935
+2F936;753E;753E;753E;753E; # (甾; 甾; 甾; 甾; 甾; ) CJK COMPATIBILITY IDEOGRAPH-2F936
+2F937;24C92;24C92;24C92;24C92; # (𤲒; 𤲒; 𤲒; 𤲒; 𤲒; ) CJK COMPATIBILITY IDEOGRAPH-2F937
+2F938;7570;7570;7570;7570; # (異; 異; 異; 異; 異; ) CJK COMPATIBILITY IDEOGRAPH-2F938
+2F939;2219F;2219F;2219F;2219F; # (𢆟; 𢆟; 𢆟; 𢆟; 𢆟; ) CJK COMPATIBILITY IDEOGRAPH-2F939
+2F93A;7610;7610;7610;7610; # (瘐; ç˜; ç˜; ç˜; ç˜; ) CJK COMPATIBILITY IDEOGRAPH-2F93A
+2F93B;24FA1;24FA1;24FA1;24FA1; # (𤾡; 𤾡; 𤾡; 𤾡; 𤾡; ) CJK COMPATIBILITY IDEOGRAPH-2F93B
+2F93C;24FB8;24FB8;24FB8;24FB8; # (𤾸; 𤾸; 𤾸; 𤾸; 𤾸; ) CJK COMPATIBILITY IDEOGRAPH-2F93C
+2F93D;25044;25044;25044;25044; # (𥁄; ð¥„; ð¥„; ð¥„; ð¥„; ) CJK COMPATIBILITY IDEOGRAPH-2F93D
+2F93E;3FFC;3FFC;3FFC;3FFC; # (㿼; 㿼; 㿼; 㿼; 㿼; ) CJK COMPATIBILITY IDEOGRAPH-2F93E
+2F93F;4008;4008;4008;4008; # (䀈; 䀈; 䀈; 䀈; 䀈; ) CJK COMPATIBILITY IDEOGRAPH-2F93F
+2F940;76F4;76F4;76F4;76F4; # (直; 直; 直; 直; 直; ) CJK COMPATIBILITY IDEOGRAPH-2F940
+2F941;250F3;250F3;250F3;250F3; # (ð¯¥; 𥃳; 𥃳; 𥃳; 𥃳; ) CJK COMPATIBILITY IDEOGRAPH-2F941
+2F942;250F2;250F2;250F2;250F2; # (𥃲; 𥃲; 𥃲; 𥃲; 𥃲; ) CJK COMPATIBILITY IDEOGRAPH-2F942
+2F943;25119;25119;25119;25119; # (𥄙; 𥄙; 𥄙; 𥄙; 𥄙; ) CJK COMPATIBILITY IDEOGRAPH-2F943
+2F944;25133;25133;25133;25133; # (𥄳; 𥄳; 𥄳; 𥄳; 𥄳; ) CJK COMPATIBILITY IDEOGRAPH-2F944
+2F945;771E;771E;771E;771E; # (眞; 眞; 眞; 眞; 眞; ) CJK COMPATIBILITY IDEOGRAPH-2F945
+2F946;771F;771F;771F;771F; # (真; 真; 真; 真; 真; ) CJK COMPATIBILITY IDEOGRAPH-2F946
+2F947;771F;771F;771F;771F; # (真; 真; 真; 真; 真; ) CJK COMPATIBILITY IDEOGRAPH-2F947
+2F948;774A;774A;774A;774A; # (睊; çŠ; çŠ; çŠ; çŠ; ) CJK COMPATIBILITY IDEOGRAPH-2F948
+2F949;4039;4039;4039;4039; # (䀹; 䀹; 䀹; 䀹; 䀹; ) CJK COMPATIBILITY IDEOGRAPH-2F949
+2F94A;778B;778B;778B;778B; # (瞋; 瞋; 瞋; 瞋; 瞋; ) CJK COMPATIBILITY IDEOGRAPH-2F94A
+2F94B;4046;4046;4046;4046; # (䁆; ä†; ä†; ä†; ä†; ) CJK COMPATIBILITY IDEOGRAPH-2F94B
+2F94C;4096;4096;4096;4096; # (䂖; 䂖; 䂖; 䂖; 䂖; ) CJK COMPATIBILITY IDEOGRAPH-2F94C
+2F94D;2541D;2541D;2541D;2541D; # (ð¯¥; ð¥; ð¥; ð¥; ð¥; ) CJK COMPATIBILITY IDEOGRAPH-2F94D
+2F94E;784E;784E;784E;784E; # (硎; 硎; 硎; 硎; 硎; ) CJK COMPATIBILITY IDEOGRAPH-2F94E
+2F94F;788C;788C;788C;788C; # (ð¯¥; 碌; 碌; 碌; 碌; ) CJK COMPATIBILITY IDEOGRAPH-2F94F
+2F950;78CC;78CC;78CC;78CC; # (ð¯¥; 磌; 磌; 磌; 磌; ) CJK COMPATIBILITY IDEOGRAPH-2F950
+2F951;40E3;40E3;40E3;40E3; # (䃣; 䃣; 䃣; 䃣; 䃣; ) CJK COMPATIBILITY IDEOGRAPH-2F951
+2F952;25626;25626;25626;25626; # (𥘦; 𥘦; 𥘦; 𥘦; 𥘦; ) CJK COMPATIBILITY IDEOGRAPH-2F952
+2F953;7956;7956;7956;7956; # (祖; 祖; 祖; 祖; 祖; ) CJK COMPATIBILITY IDEOGRAPH-2F953
+2F954;2569A;2569A;2569A;2569A; # (𥚚; 𥚚; 𥚚; 𥚚; 𥚚; ) CJK COMPATIBILITY IDEOGRAPH-2F954
+2F955;256C5;256C5;256C5;256C5; # (𥛅; 𥛅; 𥛅; 𥛅; 𥛅; ) CJK COMPATIBILITY IDEOGRAPH-2F955
+2F956;798F;798F;798F;798F; # (福; ç¦; ç¦; ç¦; ç¦; ) CJK COMPATIBILITY IDEOGRAPH-2F956
+2F957;79EB;79EB;79EB;79EB; # (秫; 秫; 秫; 秫; 秫; ) CJK COMPATIBILITY IDEOGRAPH-2F957
+2F958;412F;412F;412F;412F; # (䄯; 䄯; 䄯; 䄯; 䄯; ) CJK COMPATIBILITY IDEOGRAPH-2F958
+2F959;7A40;7A40;7A40;7A40; # (穀; 穀; 穀; 穀; 穀; ) CJK COMPATIBILITY IDEOGRAPH-2F959
+2F95A;7A4A;7A4A;7A4A;7A4A; # (穊; 穊; 穊; 穊; 穊; ) CJK COMPATIBILITY IDEOGRAPH-2F95A
+2F95B;7A4F;7A4F;7A4F;7A4F; # (穏; ç©; ç©; ç©; ç©; ) CJK COMPATIBILITY IDEOGRAPH-2F95B
+2F95C;2597C;2597C;2597C;2597C; # (𥥼; 𥥼; 𥥼; 𥥼; 𥥼; ) CJK COMPATIBILITY IDEOGRAPH-2F95C
+2F95D;25AA7;25AA7;25AA7;25AA7; # (ð¯¥; 𥪧; 𥪧; 𥪧; 𥪧; ) CJK COMPATIBILITY IDEOGRAPH-2F95D
+2F95E;25AA7;25AA7;25AA7;25AA7; # (𥪧; 𥪧; 𥪧; 𥪧; 𥪧; ) CJK COMPATIBILITY IDEOGRAPH-2F95E
+2F95F;7AEE;7AEE;7AEE;7AEE; # (竮; 竮; 竮; 竮; 竮; ) CJK COMPATIBILITY IDEOGRAPH-2F95F
+2F960;4202;4202;4202;4202; # (䈂; 䈂; 䈂; 䈂; 䈂; ) CJK COMPATIBILITY IDEOGRAPH-2F960
+2F961;25BAB;25BAB;25BAB;25BAB; # (𥮫; 𥮫; 𥮫; 𥮫; 𥮫; ) CJK COMPATIBILITY IDEOGRAPH-2F961
+2F962;7BC6;7BC6;7BC6;7BC6; # (篆; 篆; 篆; 篆; 篆; ) CJK COMPATIBILITY IDEOGRAPH-2F962
+2F963;7BC9;7BC9;7BC9;7BC9; # (築; 築; 築; 築; 築; ) CJK COMPATIBILITY IDEOGRAPH-2F963
+2F964;4227;4227;4227;4227; # (䈧; 䈧; 䈧; 䈧; 䈧; ) CJK COMPATIBILITY IDEOGRAPH-2F964
+2F965;25C80;25C80;25C80;25C80; # (𥲀; 𥲀; 𥲀; 𥲀; 𥲀; ) CJK COMPATIBILITY IDEOGRAPH-2F965
+2F966;7CD2;7CD2;7CD2;7CD2; # (糒; 糒; 糒; 糒; 糒; ) CJK COMPATIBILITY IDEOGRAPH-2F966
+2F967;42A0;42A0;42A0;42A0; # (䊠; 䊠; 䊠; 䊠; 䊠; ) CJK COMPATIBILITY IDEOGRAPH-2F967
+2F968;7CE8;7CE8;7CE8;7CE8; # (糨; 糨; 糨; 糨; 糨; ) CJK COMPATIBILITY IDEOGRAPH-2F968
+2F969;7CE3;7CE3;7CE3;7CE3; # (糣; 糣; 糣; 糣; 糣; ) CJK COMPATIBILITY IDEOGRAPH-2F969
+2F96A;7D00;7D00;7D00;7D00; # (紀; 紀; 紀; 紀; 紀; ) CJK COMPATIBILITY IDEOGRAPH-2F96A
+2F96B;25F86;25F86;25F86;25F86; # (𥾆; 𥾆; 𥾆; 𥾆; 𥾆; ) CJK COMPATIBILITY IDEOGRAPH-2F96B
+2F96C;7D63;7D63;7D63;7D63; # (絣; 絣; 絣; 絣; 絣; ) CJK COMPATIBILITY IDEOGRAPH-2F96C
+2F96D;4301;4301;4301;4301; # (䌁; äŒ; äŒ; äŒ; äŒ; ) CJK COMPATIBILITY IDEOGRAPH-2F96D
+2F96E;7DC7;7DC7;7DC7;7DC7; # (緇; 緇; 緇; 緇; 緇; ) CJK COMPATIBILITY IDEOGRAPH-2F96E
+2F96F;7E02;7E02;7E02;7E02; # (縂; 縂; 縂; 縂; 縂; ) CJK COMPATIBILITY IDEOGRAPH-2F96F
+2F970;7E45;7E45;7E45;7E45; # (繅; 繅; 繅; 繅; 繅; ) CJK COMPATIBILITY IDEOGRAPH-2F970
+2F971;4334;4334;4334;4334; # (䌴; 䌴; 䌴; 䌴; 䌴; ) CJK COMPATIBILITY IDEOGRAPH-2F971
+2F972;26228;26228;26228;26228; # (𦈨; 𦈨; 𦈨; 𦈨; 𦈨; ) CJK COMPATIBILITY IDEOGRAPH-2F972
+2F973;26247;26247;26247;26247; # (𦉇; 𦉇; 𦉇; 𦉇; 𦉇; ) CJK COMPATIBILITY IDEOGRAPH-2F973
+2F974;4359;4359;4359;4359; # (䍙; ä™; ä™; ä™; ä™; ) CJK COMPATIBILITY IDEOGRAPH-2F974
+2F975;262D9;262D9;262D9;262D9; # (𦋙; 𦋙; 𦋙; 𦋙; 𦋙; ) CJK COMPATIBILITY IDEOGRAPH-2F975
+2F976;7F7A;7F7A;7F7A;7F7A; # (罺; 罺; 罺; 罺; 罺; ) CJK COMPATIBILITY IDEOGRAPH-2F976
+2F977;2633E;2633E;2633E;2633E; # (𦌾; 𦌾; 𦌾; 𦌾; 𦌾; ) CJK COMPATIBILITY IDEOGRAPH-2F977
+2F978;7F95;7F95;7F95;7F95; # (羕; 羕; 羕; 羕; 羕; ) CJK COMPATIBILITY IDEOGRAPH-2F978
+2F979;7FFA;7FFA;7FFA;7FFA; # (翺; 翺; 翺; 翺; 翺; ) CJK COMPATIBILITY IDEOGRAPH-2F979
+2F97A;8005;8005;8005;8005; # (者; 者; 者; 者; 者; ) CJK COMPATIBILITY IDEOGRAPH-2F97A
+2F97B;264DA;264DA;264DA;264DA; # (𦓚; 𦓚; 𦓚; 𦓚; 𦓚; ) CJK COMPATIBILITY IDEOGRAPH-2F97B
+2F97C;26523;26523;26523;26523; # (𦔣; 𦔣; 𦔣; 𦔣; 𦔣; ) CJK COMPATIBILITY IDEOGRAPH-2F97C
+2F97D;8060;8060;8060;8060; # (聠; è ; è ; è ; è ; ) CJK COMPATIBILITY IDEOGRAPH-2F97D
+2F97E;265A8;265A8;265A8;265A8; # (𦖨; 𦖨; 𦖨; 𦖨; 𦖨; ) CJK COMPATIBILITY IDEOGRAPH-2F97E
+2F97F;8070;8070;8070;8070; # (聰; è°; è°; è°; è°; ) CJK COMPATIBILITY IDEOGRAPH-2F97F
+2F980;2335F;2335F;2335F;2335F; # (𣍟; ð£Ÿ; ð£Ÿ; ð£Ÿ; ð£Ÿ; ) CJK COMPATIBILITY IDEOGRAPH-2F980
+2F981;43D5;43D5;43D5;43D5; # (ð¯¦; ä•; ä•; ä•; ä•; ) CJK COMPATIBILITY IDEOGRAPH-2F981
+2F982;80B2;80B2;80B2;80B2; # (育; 育; 育; 育; 育; ) CJK COMPATIBILITY IDEOGRAPH-2F982
+2F983;8103;8103;8103;8103; # (脃; 脃; 脃; 脃; 脃; ) CJK COMPATIBILITY IDEOGRAPH-2F983
+2F984;440B;440B;440B;440B; # (䐋; ä‹; ä‹; ä‹; ä‹; ) CJK COMPATIBILITY IDEOGRAPH-2F984
+2F985;813E;813E;813E;813E; # (脾; 脾; 脾; 脾; 脾; ) CJK COMPATIBILITY IDEOGRAPH-2F985
+2F986;5AB5;5AB5;5AB5;5AB5; # (媵; 媵; 媵; 媵; 媵; ) CJK COMPATIBILITY IDEOGRAPH-2F986
+2F987;267A7;267A7;267A7;267A7; # (𦞧; 𦞧; 𦞧; 𦞧; 𦞧; ) CJK COMPATIBILITY IDEOGRAPH-2F987
+2F988;267B5;267B5;267B5;267B5; # (𦞵; 𦞵; 𦞵; 𦞵; 𦞵; ) CJK COMPATIBILITY IDEOGRAPH-2F988
+2F989;23393;23393;23393;23393; # (𣎓; 𣎓; 𣎓; 𣎓; 𣎓; ) CJK COMPATIBILITY IDEOGRAPH-2F989
+2F98A;2339C;2339C;2339C;2339C; # (𣎜; 𣎜; 𣎜; 𣎜; 𣎜; ) CJK COMPATIBILITY IDEOGRAPH-2F98A
+2F98B;8201;8201;8201;8201; # (舁; èˆ; èˆ; èˆ; èˆ; ) CJK COMPATIBILITY IDEOGRAPH-2F98B
+2F98C;8204;8204;8204;8204; # (舄; 舄; 舄; 舄; 舄; ) CJK COMPATIBILITY IDEOGRAPH-2F98C
+2F98D;8F9E;8F9E;8F9E;8F9E; # (ð¯¦; 辞; 辞; 辞; 辞; ) CJK COMPATIBILITY IDEOGRAPH-2F98D
+2F98E;446B;446B;446B;446B; # (䑫; 䑫; 䑫; 䑫; 䑫; ) CJK COMPATIBILITY IDEOGRAPH-2F98E
+2F98F;8291;8291;8291;8291; # (ð¯¦; 芑; 芑; 芑; 芑; ) CJK COMPATIBILITY IDEOGRAPH-2F98F
+2F990;828B;828B;828B;828B; # (ð¯¦; 芋; 芋; 芋; 芋; ) CJK COMPATIBILITY IDEOGRAPH-2F990
+2F991;829D;829D;829D;829D; # (芝; èŠ; èŠ; èŠ; èŠ; ) CJK COMPATIBILITY IDEOGRAPH-2F991
+2F992;52B3;52B3;52B3;52B3; # (劳; 劳; 劳; 劳; 劳; ) CJK COMPATIBILITY IDEOGRAPH-2F992
+2F993;82B1;82B1;82B1;82B1; # (花; 花; 花; 花; 花; ) CJK COMPATIBILITY IDEOGRAPH-2F993
+2F994;82B3;82B3;82B3;82B3; # (芳; 芳; 芳; 芳; 芳; ) CJK COMPATIBILITY IDEOGRAPH-2F994
+2F995;82BD;82BD;82BD;82BD; # (芽; 芽; 芽; 芽; 芽; ) CJK COMPATIBILITY IDEOGRAPH-2F995
+2F996;82E6;82E6;82E6;82E6; # (苦; 苦; 苦; 苦; 苦; ) CJK COMPATIBILITY IDEOGRAPH-2F996
+2F997;26B3C;26B3C;26B3C;26B3C; # (𦬼; 𦬼; 𦬼; 𦬼; 𦬼; ) CJK COMPATIBILITY IDEOGRAPH-2F997
+2F998;82E5;82E5;82E5;82E5; # (若; 若; 若; 若; 若; ) CJK COMPATIBILITY IDEOGRAPH-2F998
+2F999;831D;831D;831D;831D; # (茝; èŒ; èŒ; èŒ; èŒ; ) CJK COMPATIBILITY IDEOGRAPH-2F999
+2F99A;8363;8363;8363;8363; # (荣; è£; è£; è£; è£; ) CJK COMPATIBILITY IDEOGRAPH-2F99A
+2F99B;83AD;83AD;83AD;83AD; # (莭; 莭; 莭; 莭; 莭; ) CJK COMPATIBILITY IDEOGRAPH-2F99B
+2F99C;8323;8323;8323;8323; # (茣; 茣; 茣; 茣; 茣; ) CJK COMPATIBILITY IDEOGRAPH-2F99C
+2F99D;83BD;83BD;83BD;83BD; # (ð¯¦; 莽; 莽; 莽; 莽; ) CJK COMPATIBILITY IDEOGRAPH-2F99D
+2F99E;83E7;83E7;83E7;83E7; # (菧; è§; è§; è§; è§; ) CJK COMPATIBILITY IDEOGRAPH-2F99E
+2F99F;8457;8457;8457;8457; # (著; 著; 著; 著; 著; ) CJK COMPATIBILITY IDEOGRAPH-2F99F
+2F9A0;8353;8353;8353;8353; # (荓; è“; è“; è“; è“; ) CJK COMPATIBILITY IDEOGRAPH-2F9A0
+2F9A1;83CA;83CA;83CA;83CA; # (菊; èŠ; èŠ; èŠ; èŠ; ) CJK COMPATIBILITY IDEOGRAPH-2F9A1
+2F9A2;83CC;83CC;83CC;83CC; # (菌; èŒ; èŒ; èŒ; èŒ; ) CJK COMPATIBILITY IDEOGRAPH-2F9A2
+2F9A3;83DC;83DC;83DC;83DC; # (菜; èœ; èœ; èœ; èœ; ) CJK COMPATIBILITY IDEOGRAPH-2F9A3
+2F9A4;26C36;26C36;26C36;26C36; # (𦰶; 𦰶; 𦰶; 𦰶; 𦰶; ) CJK COMPATIBILITY IDEOGRAPH-2F9A4
+2F9A5;26D6B;26D6B;26D6B;26D6B; # (𦵫; 𦵫; 𦵫; 𦵫; 𦵫; ) CJK COMPATIBILITY IDEOGRAPH-2F9A5
+2F9A6;26CD5;26CD5;26CD5;26CD5; # (𦳕; 𦳕; 𦳕; 𦳕; 𦳕; ) CJK COMPATIBILITY IDEOGRAPH-2F9A6
+2F9A7;452B;452B;452B;452B; # (䔫; 䔫; 䔫; 䔫; 䔫; ) CJK COMPATIBILITY IDEOGRAPH-2F9A7
+2F9A8;84F1;84F1;84F1;84F1; # (蓱; 蓱; 蓱; 蓱; 蓱; ) CJK COMPATIBILITY IDEOGRAPH-2F9A8
+2F9A9;84F3;84F3;84F3;84F3; # (蓳; 蓳; 蓳; 蓳; 蓳; ) CJK COMPATIBILITY IDEOGRAPH-2F9A9
+2F9AA;8516;8516;8516;8516; # (蔖; 蔖; 蔖; 蔖; 蔖; ) CJK COMPATIBILITY IDEOGRAPH-2F9AA
+2F9AB;273CA;273CA;273CA;273CA; # (𧏊; ð§Š; ð§Š; ð§Š; ð§Š; ) CJK COMPATIBILITY IDEOGRAPH-2F9AB
+2F9AC;8564;8564;8564;8564; # (蕤; 蕤; 蕤; 蕤; 蕤; ) CJK COMPATIBILITY IDEOGRAPH-2F9AC
+2F9AD;26F2C;26F2C;26F2C;26F2C; # (𦼬; 𦼬; 𦼬; 𦼬; 𦼬; ) CJK COMPATIBILITY IDEOGRAPH-2F9AD
+2F9AE;455D;455D;455D;455D; # (䕝; ä•; ä•; ä•; ä•; ) CJK COMPATIBILITY IDEOGRAPH-2F9AE
+2F9AF;4561;4561;4561;4561; # (䕡; 䕡; 䕡; 䕡; 䕡; ) CJK COMPATIBILITY IDEOGRAPH-2F9AF
+2F9B0;26FB1;26FB1;26FB1;26FB1; # (𦾱; 𦾱; 𦾱; 𦾱; 𦾱; ) CJK COMPATIBILITY IDEOGRAPH-2F9B0
+2F9B1;270D2;270D2;270D2;270D2; # (𧃒; 𧃒; 𧃒; 𧃒; 𧃒; ) CJK COMPATIBILITY IDEOGRAPH-2F9B1
+2F9B2;456B;456B;456B;456B; # (䕫; 䕫; 䕫; 䕫; 䕫; ) CJK COMPATIBILITY IDEOGRAPH-2F9B2
+2F9B3;8650;8650;8650;8650; # (虐; è™; è™; è™; è™; ) CJK COMPATIBILITY IDEOGRAPH-2F9B3
+2F9B4;865C;865C;865C;865C; # (虜; 虜; 虜; 虜; 虜; ) CJK COMPATIBILITY IDEOGRAPH-2F9B4
+2F9B5;8667;8667;8667;8667; # (虧; 虧; 虧; 虧; 虧; ) CJK COMPATIBILITY IDEOGRAPH-2F9B5
+2F9B6;8669;8669;8669;8669; # (虩; 虩; 虩; 虩; 虩; ) CJK COMPATIBILITY IDEOGRAPH-2F9B6
+2F9B7;86A9;86A9;86A9;86A9; # (蚩; 蚩; 蚩; 蚩; 蚩; ) CJK COMPATIBILITY IDEOGRAPH-2F9B7
+2F9B8;8688;8688;8688;8688; # (蚈; 蚈; 蚈; 蚈; 蚈; ) CJK COMPATIBILITY IDEOGRAPH-2F9B8
+2F9B9;870E;870E;870E;870E; # (蜎; 蜎; 蜎; 蜎; 蜎; ) CJK COMPATIBILITY IDEOGRAPH-2F9B9
+2F9BA;86E2;86E2;86E2;86E2; # (蛢; 蛢; 蛢; 蛢; 蛢; ) CJK COMPATIBILITY IDEOGRAPH-2F9BA
+2F9BB;8779;8779;8779;8779; # (蝹; è¹; è¹; è¹; è¹; ) CJK COMPATIBILITY IDEOGRAPH-2F9BB
+2F9BC;8728;8728;8728;8728; # (蜨; 蜨; 蜨; 蜨; 蜨; ) CJK COMPATIBILITY IDEOGRAPH-2F9BC
+2F9BD;876B;876B;876B;876B; # (蝫; è«; è«; è«; è«; ) CJK COMPATIBILITY IDEOGRAPH-2F9BD
+2F9BE;8786;8786;8786;8786; # (螆; 螆; 螆; 螆; 螆; ) CJK COMPATIBILITY IDEOGRAPH-2F9BE
+2F9BF;45D7;45D7;45D7;45D7; # (䗗; 䗗; 䗗; 䗗; 䗗; ) CJK COMPATIBILITY IDEOGRAPH-2F9BF
+2F9C0;87E1;87E1;87E1;87E1; # (蟡; 蟡; 蟡; 蟡; 蟡; ) CJK COMPATIBILITY IDEOGRAPH-2F9C0
+2F9C1;8801;8801;8801;8801; # (ð¯§; è ; è ; è ; è ; ) CJK COMPATIBILITY IDEOGRAPH-2F9C1
+2F9C2;45F9;45F9;45F9;45F9; # (䗹; 䗹; 䗹; 䗹; 䗹; ) CJK COMPATIBILITY IDEOGRAPH-2F9C2
+2F9C3;8860;8860;8860;8860; # (衠; 衠; 衠; 衠; 衠; ) CJK COMPATIBILITY IDEOGRAPH-2F9C3
+2F9C4;8863;8863;8863;8863; # (衣; 衣; 衣; 衣; 衣; ) CJK COMPATIBILITY IDEOGRAPH-2F9C4
+2F9C5;27667;27667;27667;27667; # (𧙧; 𧙧; 𧙧; 𧙧; 𧙧; ) CJK COMPATIBILITY IDEOGRAPH-2F9C5
+2F9C6;88D7;88D7;88D7;88D7; # (裗; 裗; 裗; 裗; 裗; ) CJK COMPATIBILITY IDEOGRAPH-2F9C6
+2F9C7;88DE;88DE;88DE;88DE; # (裞; 裞; 裞; 裞; 裞; ) CJK COMPATIBILITY IDEOGRAPH-2F9C7
+2F9C8;4635;4635;4635;4635; # (䘵; 䘵; 䘵; 䘵; 䘵; ) CJK COMPATIBILITY IDEOGRAPH-2F9C8
+2F9C9;88FA;88FA;88FA;88FA; # (裺; 裺; 裺; 裺; 裺; ) CJK COMPATIBILITY IDEOGRAPH-2F9C9
+2F9CA;34BB;34BB;34BB;34BB; # (㒻; 㒻; 㒻; 㒻; 㒻; ) CJK COMPATIBILITY IDEOGRAPH-2F9CA
+2F9CB;278AE;278AE;278AE;278AE; # (𧢮; 𧢮; 𧢮; 𧢮; 𧢮; ) CJK COMPATIBILITY IDEOGRAPH-2F9CB
+2F9CC;27966;27966;27966;27966; # (𧥦; 𧥦; 𧥦; 𧥦; 𧥦; ) CJK COMPATIBILITY IDEOGRAPH-2F9CC
+2F9CD;46BE;46BE;46BE;46BE; # (ð¯§; äš¾; äš¾; äš¾; äš¾; ) CJK COMPATIBILITY IDEOGRAPH-2F9CD
+2F9CE;46C7;46C7;46C7;46C7; # (䛇; 䛇; 䛇; 䛇; 䛇; ) CJK COMPATIBILITY IDEOGRAPH-2F9CE
+2F9CF;8AA0;8AA0;8AA0;8AA0; # (ð¯§; 誠; 誠; 誠; 誠; ) CJK COMPATIBILITY IDEOGRAPH-2F9CF
+2F9D0;8AED;8AED;8AED;8AED; # (ð¯§; è«­; è«­; è«­; è«­; ) CJK COMPATIBILITY IDEOGRAPH-2F9D0
+2F9D1;8B8A;8B8A;8B8A;8B8A; # (變; 變; 變; 變; 變; ) CJK COMPATIBILITY IDEOGRAPH-2F9D1
+2F9D2;8C55;8C55;8C55;8C55; # (豕; 豕; 豕; 豕; 豕; ) CJK COMPATIBILITY IDEOGRAPH-2F9D2
+2F9D3;27CA8;27CA8;27CA8;27CA8; # (𧲨; 𧲨; 𧲨; 𧲨; 𧲨; ) CJK COMPATIBILITY IDEOGRAPH-2F9D3
+2F9D4;8CAB;8CAB;8CAB;8CAB; # (貫; 貫; 貫; 貫; 貫; ) CJK COMPATIBILITY IDEOGRAPH-2F9D4
+2F9D5;8CC1;8CC1;8CC1;8CC1; # (賁; è³; è³; è³; è³; ) CJK COMPATIBILITY IDEOGRAPH-2F9D5
+2F9D6;8D1B;8D1B;8D1B;8D1B; # (贛; 贛; 贛; 贛; 贛; ) CJK COMPATIBILITY IDEOGRAPH-2F9D6
+2F9D7;8D77;8D77;8D77;8D77; # (起; 起; 起; 起; 起; ) CJK COMPATIBILITY IDEOGRAPH-2F9D7
+2F9D8;27F2F;27F2F;27F2F;27F2F; # (𧼯; 𧼯; 𧼯; 𧼯; 𧼯; ) CJK COMPATIBILITY IDEOGRAPH-2F9D8
+2F9D9;20804;20804;20804;20804; # (𠠄; 𠠄; 𠠄; 𠠄; 𠠄; ) CJK COMPATIBILITY IDEOGRAPH-2F9D9
+2F9DA;8DCB;8DCB;8DCB;8DCB; # (跋; 跋; 跋; 跋; 跋; ) CJK COMPATIBILITY IDEOGRAPH-2F9DA
+2F9DB;8DBC;8DBC;8DBC;8DBC; # (趼; 趼; 趼; 趼; 趼; ) CJK COMPATIBILITY IDEOGRAPH-2F9DB
+2F9DC;8DF0;8DF0;8DF0;8DF0; # (跰; 跰; 跰; 跰; 跰; ) CJK COMPATIBILITY IDEOGRAPH-2F9DC
+2F9DD;208DE;208DE;208DE;208DE; # (ð¯§; 𠣞; 𠣞; 𠣞; 𠣞; ) CJK COMPATIBILITY IDEOGRAPH-2F9DD
+2F9DE;8ED4;8ED4;8ED4;8ED4; # (軔; 軔; 軔; 軔; 軔; ) CJK COMPATIBILITY IDEOGRAPH-2F9DE
+2F9DF;8F38;8F38;8F38;8F38; # (輸; 輸; 輸; 輸; 輸; ) CJK COMPATIBILITY IDEOGRAPH-2F9DF
+2F9E0;285D2;285D2;285D2;285D2; # (𨗒; 𨗒; 𨗒; 𨗒; 𨗒; ) CJK COMPATIBILITY IDEOGRAPH-2F9E0
+2F9E1;285ED;285ED;285ED;285ED; # (𨗭; 𨗭; 𨗭; 𨗭; 𨗭; ) CJK COMPATIBILITY IDEOGRAPH-2F9E1
+2F9E2;9094;9094;9094;9094; # (邔; 邔; 邔; 邔; 邔; ) CJK COMPATIBILITY IDEOGRAPH-2F9E2
+2F9E3;90F1;90F1;90F1;90F1; # (郱; 郱; 郱; 郱; 郱; ) CJK COMPATIBILITY IDEOGRAPH-2F9E3
+2F9E4;9111;9111;9111;9111; # (鄑; 鄑; 鄑; 鄑; 鄑; ) CJK COMPATIBILITY IDEOGRAPH-2F9E4
+2F9E5;2872E;2872E;2872E;2872E; # (𨜮; 𨜮; 𨜮; 𨜮; 𨜮; ) CJK COMPATIBILITY IDEOGRAPH-2F9E5
+2F9E6;911B;911B;911B;911B; # (鄛; 鄛; 鄛; 鄛; 鄛; ) CJK COMPATIBILITY IDEOGRAPH-2F9E6
+2F9E7;9238;9238;9238;9238; # (鈸; 鈸; 鈸; 鈸; 鈸; ) CJK COMPATIBILITY IDEOGRAPH-2F9E7
+2F9E8;92D7;92D7;92D7;92D7; # (鋗; 鋗; 鋗; 鋗; 鋗; ) CJK COMPATIBILITY IDEOGRAPH-2F9E8
+2F9E9;92D8;92D8;92D8;92D8; # (鋘; 鋘; 鋘; 鋘; 鋘; ) CJK COMPATIBILITY IDEOGRAPH-2F9E9
+2F9EA;927C;927C;927C;927C; # (鉼; 鉼; 鉼; 鉼; 鉼; ) CJK COMPATIBILITY IDEOGRAPH-2F9EA
+2F9EB;93F9;93F9;93F9;93F9; # (鏹; é¹; é¹; é¹; é¹; ) CJK COMPATIBILITY IDEOGRAPH-2F9EB
+2F9EC;9415;9415;9415;9415; # (鐕; é•; é•; é•; é•; ) CJK COMPATIBILITY IDEOGRAPH-2F9EC
+2F9ED;28BFA;28BFA;28BFA;28BFA; # (𨯺; 𨯺; 𨯺; 𨯺; 𨯺; ) CJK COMPATIBILITY IDEOGRAPH-2F9ED
+2F9EE;958B;958B;958B;958B; # (開; 開; 開; 開; 開; ) CJK COMPATIBILITY IDEOGRAPH-2F9EE
+2F9EF;4995;4995;4995;4995; # (䦕; 䦕; 䦕; 䦕; 䦕; ) CJK COMPATIBILITY IDEOGRAPH-2F9EF
+2F9F0;95B7;95B7;95B7;95B7; # (閷; 閷; 閷; 閷; 閷; ) CJK COMPATIBILITY IDEOGRAPH-2F9F0
+2F9F1;28D77;28D77;28D77;28D77; # (𨵷; 𨵷; 𨵷; 𨵷; 𨵷; ) CJK COMPATIBILITY IDEOGRAPH-2F9F1
+2F9F2;49E6;49E6;49E6;49E6; # (䧦; 䧦; 䧦; 䧦; 䧦; ) CJK COMPATIBILITY IDEOGRAPH-2F9F2
+2F9F3;96C3;96C3;96C3;96C3; # (雃; 雃; 雃; 雃; 雃; ) CJK COMPATIBILITY IDEOGRAPH-2F9F3
+2F9F4;5DB2;5DB2;5DB2;5DB2; # (嶲; 嶲; 嶲; 嶲; 嶲; ) CJK COMPATIBILITY IDEOGRAPH-2F9F4
+2F9F5;9723;9723;9723;9723; # (霣; 霣; 霣; 霣; 霣; ) CJK COMPATIBILITY IDEOGRAPH-2F9F5
+2F9F6;29145;29145;29145;29145; # (𩅅; 𩅅; 𩅅; 𩅅; 𩅅; ) CJK COMPATIBILITY IDEOGRAPH-2F9F6
+2F9F7;2921A;2921A;2921A;2921A; # (𩈚; 𩈚; 𩈚; 𩈚; 𩈚; ) CJK COMPATIBILITY IDEOGRAPH-2F9F7
+2F9F8;4A6E;4A6E;4A6E;4A6E; # (䩮; 䩮; 䩮; 䩮; 䩮; ) CJK COMPATIBILITY IDEOGRAPH-2F9F8
+2F9F9;4A76;4A76;4A76;4A76; # (䩶; 䩶; 䩶; 䩶; 䩶; ) CJK COMPATIBILITY IDEOGRAPH-2F9F9
+2F9FA;97E0;97E0;97E0;97E0; # (韠; 韠; 韠; 韠; 韠; ) CJK COMPATIBILITY IDEOGRAPH-2F9FA
+2F9FB;2940A;2940A;2940A;2940A; # (𩐊; ð©Š; ð©Š; ð©Š; ð©Š; ) CJK COMPATIBILITY IDEOGRAPH-2F9FB
+2F9FC;4AB2;4AB2;4AB2;4AB2; # (䪲; 䪲; 䪲; 䪲; 䪲; ) CJK COMPATIBILITY IDEOGRAPH-2F9FC
+2F9FD;29496;29496;29496;29496; # (𩒖; 𩒖; 𩒖; 𩒖; 𩒖; ) CJK COMPATIBILITY IDEOGRAPH-2F9FD
+2F9FE;980B;980B;980B;980B; # (頋; 頋; 頋; 頋; 頋; ) CJK COMPATIBILITY IDEOGRAPH-2F9FE
+2F9FF;980B;980B;980B;980B; # (頋; 頋; 頋; 頋; 頋; ) CJK COMPATIBILITY IDEOGRAPH-2F9FF
+2FA00;9829;9829;9829;9829; # (頩; 頩; 頩; 頩; 頩; ) CJK COMPATIBILITY IDEOGRAPH-2FA00
+2FA01;295B6;295B6;295B6;295B6; # (ð¯¨; ð©–¶; ð©–¶; ð©–¶; ð©–¶; ) CJK COMPATIBILITY IDEOGRAPH-2FA01
+2FA02;98E2;98E2;98E2;98E2; # (飢; 飢; 飢; 飢; 飢; ) CJK COMPATIBILITY IDEOGRAPH-2FA02
+2FA03;4B33;4B33;4B33;4B33; # (䬳; 䬳; 䬳; 䬳; 䬳; ) CJK COMPATIBILITY IDEOGRAPH-2FA03
+2FA04;9929;9929;9929;9929; # (餩; 餩; 餩; 餩; 餩; ) CJK COMPATIBILITY IDEOGRAPH-2FA04
+2FA05;99A7;99A7;99A7;99A7; # (馧; 馧; 馧; 馧; 馧; ) CJK COMPATIBILITY IDEOGRAPH-2FA05
+2FA06;99C2;99C2;99C2;99C2; # (駂; 駂; 駂; 駂; 駂; ) CJK COMPATIBILITY IDEOGRAPH-2FA06
+2FA07;99FE;99FE;99FE;99FE; # (駾; 駾; 駾; 駾; 駾; ) CJK COMPATIBILITY IDEOGRAPH-2FA07
+2FA08;4BCE;4BCE;4BCE;4BCE; # (䯎; 䯎; 䯎; 䯎; 䯎; ) CJK COMPATIBILITY IDEOGRAPH-2FA08
+2FA09;29B30;29B30;29B30;29B30; # (𩬰; 𩬰; 𩬰; 𩬰; 𩬰; ) CJK COMPATIBILITY IDEOGRAPH-2FA09
+2FA0A;9B12;9B12;9B12;9B12; # (鬒; 鬒; 鬒; 鬒; 鬒; ) CJK COMPATIBILITY IDEOGRAPH-2FA0A
+2FA0B;9C40;9C40;9C40;9C40; # (鱀; 鱀; 鱀; 鱀; 鱀; ) CJK COMPATIBILITY IDEOGRAPH-2FA0B
+2FA0C;9CFD;9CFD;9CFD;9CFD; # (鳽; 鳽; 鳽; 鳽; 鳽; ) CJK COMPATIBILITY IDEOGRAPH-2FA0C
+2FA0D;4CCE;4CCE;4CCE;4CCE; # (ð¯¨; 䳎; 䳎; 䳎; 䳎; ) CJK COMPATIBILITY IDEOGRAPH-2FA0D
+2FA0E;4CED;4CED;4CED;4CED; # (䳭; 䳭; 䳭; 䳭; 䳭; ) CJK COMPATIBILITY IDEOGRAPH-2FA0E
+2FA0F;9D67;9D67;9D67;9D67; # (ð¯¨; 鵧; 鵧; 鵧; 鵧; ) CJK COMPATIBILITY IDEOGRAPH-2FA0F
+2FA10;2A0CE;2A0CE;2A0CE;2A0CE; # (ð¯¨; 𪃎; 𪃎; 𪃎; 𪃎; ) CJK COMPATIBILITY IDEOGRAPH-2FA10
+2FA11;4CF8;4CF8;4CF8;4CF8; # (䳸; 䳸; 䳸; 䳸; 䳸; ) CJK COMPATIBILITY IDEOGRAPH-2FA11
+2FA12;2A105;2A105;2A105;2A105; # (𪄅; 𪄅; 𪄅; 𪄅; 𪄅; ) CJK COMPATIBILITY IDEOGRAPH-2FA12
+2FA13;2A20E;2A20E;2A20E;2A20E; # (𪈎; 𪈎; 𪈎; 𪈎; 𪈎; ) CJK COMPATIBILITY IDEOGRAPH-2FA13
+2FA14;2A291;2A291;2A291;2A291; # (𪊑; 𪊑; 𪊑; 𪊑; 𪊑; ) CJK COMPATIBILITY IDEOGRAPH-2FA14
+2FA15;9EBB;9EBB;9EBB;9EBB; # (麻; 麻; 麻; 麻; 麻; ) CJK COMPATIBILITY IDEOGRAPH-2FA15
+2FA16;4D56;4D56;4D56;4D56; # (䵖; 䵖; 䵖; 䵖; 䵖; ) CJK COMPATIBILITY IDEOGRAPH-2FA16
+2FA17;9EF9;9EF9;9EF9;9EF9; # (黹; 黹; 黹; 黹; 黹; ) CJK COMPATIBILITY IDEOGRAPH-2FA17
+2FA18;9EFE;9EFE;9EFE;9EFE; # (黾; 黾; 黾; 黾; 黾; ) CJK COMPATIBILITY IDEOGRAPH-2FA18
+2FA19;9F05;9F05;9F05;9F05; # (鼅; 鼅; 鼅; 鼅; 鼅; ) CJK COMPATIBILITY IDEOGRAPH-2FA19
+2FA1A;9F0F;9F0F;9F0F;9F0F; # (鼏; é¼; é¼; é¼; é¼; ) CJK COMPATIBILITY IDEOGRAPH-2FA1A
+2FA1B;9F16;9F16;9F16;9F16; # (鼖; 鼖; 鼖; 鼖; 鼖; ) CJK COMPATIBILITY IDEOGRAPH-2FA1B
+2FA1C;9F3B;9F3B;9F3B;9F3B; # (鼻; 鼻; 鼻; 鼻; 鼻; ) CJK COMPATIBILITY IDEOGRAPH-2FA1C
+2FA1D;2A600;2A600;2A600;2A600; # (ð¯¨; 𪘀; 𪘀; 𪘀; 𪘀; ) CJK COMPATIBILITY IDEOGRAPH-2FA1D
+#
+@Part2 # Canonical Order Test
+#
+0061 0315 0300 05AE 0300 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062; # (a◌̕◌̀◌֮◌̀b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRAVE ACCENT, LATIN SMALL LETTER B
+0061 0300 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062; # (a◌̀◌̕◌̀◌֮b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GRAVE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0301 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062; # (a◌̕◌̀◌֮◌Ìb; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ACUTE ACCENT, LATIN SMALL LETTER B
+0061 0301 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062; # (aâ—ŒÌ◌̕◌̀◌֮b; á◌֮◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; á◌֮◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ACUTE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0302 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062; # (a◌̕◌̀◌֮◌̂b; à◌֮◌̂◌̕b; a◌֮◌̀◌̂◌̕b; à◌֮◌̂◌̕b; a◌֮◌̀◌̂◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CIRCUMFLEX ACCENT, LATIN SMALL LETTER B
+0061 0302 0315 0300 05AE 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062; # (a◌̂◌̕◌̀◌֮b; ầ◌֮◌̕b; a◌֮◌̂◌̀◌̕b; ầ◌֮◌̕b; a◌֮◌̂◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CIRCUMFLEX ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0303 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062; # (a◌̕◌̀◌֮◌̃b; à◌֮◌̃◌̕b; a◌֮◌̀◌̃◌̕b; à◌֮◌̃◌̕b; a◌֮◌̀◌̃◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING TILDE, LATIN SMALL LETTER B
+0061 0303 0315 0300 05AE 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062; # (a◌̃◌̕◌̀◌֮b; ã◌֮◌̀◌̕b; a◌֮◌̃◌̀◌̕b; ã◌֮◌̀◌̕b; a◌֮◌̃◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING TILDE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0304 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062; # (a◌̕◌̀◌֮◌̄b; à◌֮◌̄◌̕b; a◌֮◌̀◌̄◌̕b; à◌֮◌̄◌̕b; a◌֮◌̀◌̄◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING MACRON, LATIN SMALL LETTER B
+0061 0304 0315 0300 05AE 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062; # (a◌̄◌̕◌̀◌֮b; Ä◌֮◌̀◌̕b; a◌֮◌̄◌̀◌̕b; Ä◌֮◌̀◌̕b; a◌֮◌̄◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING MACRON, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0305 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062; # (a◌̕◌̀◌֮◌̅b; à◌֮◌̅◌̕b; a◌֮◌̀◌̅◌̕b; à◌֮◌̅◌̕b; a◌֮◌̀◌̅◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING OVERLINE, LATIN SMALL LETTER B
+0061 0305 0315 0300 05AE 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062; # (a◌̅◌̕◌̀◌֮b; a◌֮◌̅◌̀◌̕b; a◌֮◌̅◌̀◌̕b; a◌֮◌̅◌̀◌̕b; a◌֮◌̅◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING OVERLINE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0306 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062; # (a◌̕◌̀◌֮◌̆b; à◌֮◌̆◌̕b; a◌֮◌̀◌̆◌̕b; à◌֮◌̆◌̕b; a◌֮◌̀◌̆◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING BREVE, LATIN SMALL LETTER B
+0061 0306 0315 0300 05AE 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062; # (a◌̆◌̕◌̀◌֮b; ằ◌֮◌̕b; a◌֮◌̆◌̀◌̕b; ằ◌֮◌̕b; a◌֮◌̆◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING BREVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0307 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062; # (a◌̕◌̀◌֮◌̇b; à◌֮◌̇◌̕b; a◌֮◌̀◌̇◌̕b; à◌֮◌̇◌̕b; a◌֮◌̀◌̇◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOT ABOVE, LATIN SMALL LETTER B
+0061 0307 0315 0300 05AE 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062; # (a◌̇◌̕◌̀◌֮b; ȧ◌֮◌̀◌̕b; a◌֮◌̇◌̀◌̕b; ȧ◌֮◌̀◌̕b; a◌֮◌̇◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOT ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0308 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062; # (a◌̕◌̀◌֮◌̈b; à◌֮◌̈◌̕b; a◌֮◌̀◌̈◌̕b; à◌֮◌̈◌̕b; a◌֮◌̀◌̈◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DIAERESIS, LATIN SMALL LETTER B
+0061 0308 0315 0300 05AE 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062; # (a◌̈◌̕◌̀◌֮b; ä◌֮◌̀◌̕b; a◌֮◌̈◌̀◌̕b; ä◌֮◌̀◌̕b; a◌֮◌̈◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DIAERESIS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0309 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062; # (a◌̕◌̀◌֮◌̉b; à◌֮◌̉◌̕b; a◌֮◌̀◌̉◌̕b; à◌֮◌̉◌̕b; a◌֮◌̀◌̉◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING HOOK ABOVE, LATIN SMALL LETTER B
+0061 0309 0315 0300 05AE 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062; # (a◌̉◌̕◌̀◌֮b; ả◌֮◌̀◌̕b; a◌֮◌̉◌̀◌̕b; ả◌֮◌̀◌̕b; a◌֮◌̉◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING HOOK ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 030A 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062; # (a◌̕◌̀◌֮◌̊b; à◌֮◌̊◌̕b; a◌֮◌̀◌̊◌̕b; à◌֮◌̊◌̕b; a◌֮◌̀◌̊◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING RING ABOVE, LATIN SMALL LETTER B
+0061 030A 0315 0300 05AE 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062; # (a◌̊◌̕◌̀◌֮b; å◌֮◌̀◌̕b; a◌֮◌̊◌̀◌̕b; å◌֮◌̀◌̕b; a◌֮◌̊◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING RING ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 030B 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062; # (a◌̕◌̀◌֮◌̋b; à◌֮◌̋◌̕b; a◌֮◌̀◌̋◌̕b; à◌֮◌̋◌̕b; a◌֮◌̀◌̋◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLE ACUTE ACCENT, LATIN SMALL LETTER B
+0061 030B 0315 0300 05AE 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062; # (a◌̋◌̕◌̀◌֮b; a◌֮◌̋◌̀◌̕b; a◌֮◌̋◌̀◌̕b; a◌֮◌̋◌̀◌̕b; a◌֮◌̋◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLE ACUTE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 030C 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062; # (a◌̕◌̀◌֮◌̌b; à◌֮◌̌◌̕b; a◌֮◌̀◌̌◌̕b; à◌֮◌̌◌̕b; a◌֮◌̀◌̌◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CARON, LATIN SMALL LETTER B
+0061 030C 0315 0300 05AE 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062; # (a◌̌◌̕◌̀◌֮b; ǎ◌֮◌̀◌̕b; a◌֮◌̌◌̀◌̕b; ǎ◌֮◌̀◌̕b; a◌֮◌̌◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CARON, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 030D 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062; # (a◌̕◌̀◌֮◌Ìb; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING VERTICAL LINE ABOVE, LATIN SMALL LETTER B
+0061 030D 0315 0300 05AE 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062; # (aâ—ŒÌ◌̕◌̀◌֮b; a◌֮◌Ì◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING VERTICAL LINE ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 030E 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062; # (a◌̕◌̀◌֮◌̎b; à◌֮◌̎◌̕b; a◌֮◌̀◌̎◌̕b; à◌֮◌̎◌̕b; a◌֮◌̀◌̎◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLE VERTICAL LINE ABOVE, LATIN SMALL LETTER B
+0061 030E 0315 0300 05AE 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062; # (a◌̎◌̕◌̀◌֮b; a◌֮◌̎◌̀◌̕b; a◌֮◌̎◌̀◌̕b; a◌֮◌̎◌̀◌̕b; a◌֮◌̎◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLE VERTICAL LINE ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 030F 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062; # (a◌̕◌̀◌֮◌Ìb; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLE GRAVE ACCENT, LATIN SMALL LETTER B
+0061 030F 0315 0300 05AE 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062; # (aâ—ŒÌ◌̕◌̀◌֮b; È◌֮◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; È◌֮◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLE GRAVE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0310 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062; # (a◌̕◌̀◌֮◌Ìb; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CANDRABINDU, LATIN SMALL LETTER B
+0061 0310 0315 0300 05AE 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062; # (aâ—ŒÌ◌̕◌̀◌֮b; a◌֮◌Ì◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CANDRABINDU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0311 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062; # (a◌̕◌̀◌֮◌̑b; à◌֮◌̑◌̕b; a◌֮◌̀◌̑◌̕b; à◌֮◌̑◌̕b; a◌֮◌̀◌̑◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING INVERTED BREVE, LATIN SMALL LETTER B
+0061 0311 0315 0300 05AE 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062; # (a◌̑◌̕◌̀◌֮b; ȃ◌֮◌̀◌̕b; a◌֮◌̑◌̀◌̕b; ȃ◌֮◌̀◌̕b; a◌֮◌̑◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING INVERTED BREVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0312 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062; # (a◌̕◌̀◌֮◌̒b; à◌֮◌̒◌̕b; a◌֮◌̀◌̒◌̕b; à◌֮◌̒◌̕b; a◌֮◌̀◌̒◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING TURNED COMMA ABOVE, LATIN SMALL LETTER B
+0061 0312 0315 0300 05AE 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062; # (a◌̒◌̕◌̀◌֮b; a◌֮◌̒◌̀◌̕b; a◌֮◌̒◌̀◌̕b; a◌֮◌̒◌̀◌̕b; a◌֮◌̒◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING TURNED COMMA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0313 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062; # (a◌̕◌̀◌֮◌̓b; à◌֮◌̓◌̕b; a◌֮◌̀◌̓◌̕b; à◌֮◌̓◌̕b; a◌֮◌̀◌̓◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING COMMA ABOVE, LATIN SMALL LETTER B
+0061 0313 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062; # (a◌̓◌̕◌̀◌֮b; a◌֮◌̓◌̀◌̕b; a◌֮◌̓◌̀◌̕b; a◌֮◌̓◌̀◌̕b; a◌֮◌̓◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0314 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062; # (a◌̕◌̀◌֮◌̔b; à◌֮◌̔◌̕b; a◌֮◌̀◌̔◌̕b; à◌֮◌̔◌̕b; a◌֮◌̀◌̔◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING REVERSED COMMA ABOVE, LATIN SMALL LETTER B
+0061 0314 0315 0300 05AE 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062; # (a◌̔◌̕◌̀◌֮b; a◌֮◌̔◌̀◌̕b; a◌֮◌̔◌̀◌̕b; a◌֮◌̔◌̀◌̕b; a◌֮◌̔◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING REVERSED COMMA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 035C 0315 0300 0315 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062; # (a◌͜◌̕◌̀◌̕b; à◌̕◌̕◌͜b; a◌̀◌̕◌̕◌͜b; à◌̕◌̕◌͜b; a◌̀◌̕◌̕◌͜b; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, COMBINING COMMA ABOVE RIGHT, LATIN SMALL LETTER B
+0061 0315 035C 0315 0300 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062; # (a◌̕◌͜◌̕◌̀b; à◌̕◌̕◌͜b; a◌̀◌̕◌̕◌͜b; à◌̕◌̕◌͜b; a◌̀◌̕◌̕◌͜b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, LATIN SMALL LETTER B
+0061 059A 0316 302A 0316 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062; # (a◌֚◌̖◌〪◌̖b; a◌〪◌̖◌̖◌֚b; a◌〪◌̖◌̖◌֚b; a◌〪◌̖◌̖◌֚b; a◌〪◌̖◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING GRAVE ACCENT BELOW, LATIN SMALL LETTER B
+0061 0316 059A 0316 302A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062; # (a◌̖◌֚◌̖◌〪b; a◌〪◌̖◌̖◌֚b; a◌〪◌̖◌̖◌֚b; a◌〪◌̖◌̖◌֚b; a◌〪◌̖◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING GRAVE ACCENT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0317 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062; # (a◌֚◌̖◌〪◌̗b; a◌〪◌̖◌̗◌֚b; a◌〪◌̖◌̗◌֚b; a◌〪◌̖◌̗◌֚b; a◌〪◌̖◌̗◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING ACUTE ACCENT BELOW, LATIN SMALL LETTER B
+0061 0317 059A 0316 302A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062; # (a◌̗◌֚◌̖◌〪b; a◌〪◌̗◌̖◌֚b; a◌〪◌̗◌̖◌֚b; a◌〪◌̗◌̖◌֚b; a◌〪◌̗◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING ACUTE ACCENT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0318 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062; # (a◌֚◌̖◌〪◌̘b; a◌〪◌̖◌̘◌֚b; a◌〪◌̖◌̘◌֚b; a◌〪◌̖◌̘◌֚b; a◌〪◌̖◌̘◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFT TACK BELOW, LATIN SMALL LETTER B
+0061 0318 059A 0316 302A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062; # (a◌̘◌֚◌̖◌〪b; a◌〪◌̘◌̖◌֚b; a◌〪◌̘◌̖◌֚b; a◌〪◌̘◌̖◌֚b; a◌〪◌̘◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFT TACK BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0319 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062; # (a◌֚◌̖◌〪◌̙b; a◌〪◌̖◌̙◌֚b; a◌〪◌̖◌̙◌֚b; a◌〪◌̖◌̙◌֚b; a◌〪◌̖◌̙◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHT TACK BELOW, LATIN SMALL LETTER B
+0061 0319 059A 0316 302A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062; # (a◌̙◌֚◌̖◌〪b; a◌〪◌̙◌̖◌֚b; a◌〪◌̙◌̖◌֚b; a◌〪◌̙◌̖◌֚b; a◌〪◌̙◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHT TACK BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 035C 0315 0300 031A 0062;00E0 0315 031A 035C 0062;0061 0300 0315 031A 035C 0062;00E0 0315 031A 035C 0062;0061 0300 0315 031A 035C 0062; # (a◌͜◌̕◌̀◌̚b; à◌̕◌̚◌͜b; a◌̀◌̕◌̚◌͜b; à◌̕◌̚◌͜b; a◌̀◌̕◌̚◌͜b; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, COMBINING LEFT ANGLE ABOVE, LATIN SMALL LETTER B
+0061 031A 035C 0315 0300 0062;00E0 031A 0315 035C 0062;0061 0300 031A 0315 035C 0062;00E0 031A 0315 035C 0062;0061 0300 031A 0315 035C 0062; # (a◌̚◌͜◌̕◌̀b; à◌̚◌̕◌͜b; a◌̀◌̚◌̕◌͜b; à◌̚◌̕◌͜b; a◌̀◌̚◌̕◌͜b; ) LATIN SMALL LETTER A, COMBINING LEFT ANGLE ABOVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, LATIN SMALL LETTER B
+0061 302A 031B 0321 031B 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062; # (a◌〪◌̛◌̡◌̛b; a◌̡◌̛◌̛◌〪b; a◌̡◌̛◌̛◌〪b; a◌̡◌̛◌̛◌〪b; a◌̡◌̛◌̛◌〪b; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, COMBINING HORN, LATIN SMALL LETTER B
+0061 031B 302A 031B 0321 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062; # (a◌̛◌〪◌̛◌̡b; a◌̡◌̛◌̛◌〪b; a◌̡◌̛◌̛◌〪b; a◌̡◌̛◌̛◌〪b; a◌̡◌̛◌̛◌〪b; ) LATIN SMALL LETTER A, COMBINING HORN, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, LATIN SMALL LETTER B
+0061 059A 0316 302A 031C 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062; # (a◌֚◌̖◌〪◌̜b; a◌〪◌̖◌̜◌֚b; a◌〪◌̖◌̜◌֚b; a◌〪◌̖◌̜◌֚b; a◌〪◌̖◌̜◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFT HALF RING BELOW, LATIN SMALL LETTER B
+0061 031C 059A 0316 302A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062; # (a◌̜◌֚◌̖◌〪b; a◌〪◌̜◌̖◌֚b; a◌〪◌̜◌̖◌֚b; a◌〪◌̜◌̖◌֚b; a◌〪◌̜◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFT HALF RING BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 031D 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062; # (a◌֚◌̖◌〪◌Ìb; a◌〪◌̖◌Ì◌֚b; a◌〪◌̖◌Ì◌֚b; a◌〪◌̖◌Ì◌֚b; a◌〪◌̖◌Ì◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING UP TACK BELOW, LATIN SMALL LETTER B
+0061 031D 059A 0316 302A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062; # (aâ—ŒÌ◌֚◌̖◌〪b; a◌〪◌Ì◌̖◌֚b; a◌〪◌Ì◌̖◌֚b; a◌〪◌Ì◌̖◌֚b; a◌〪◌Ì◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING UP TACK BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 031E 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062; # (a◌֚◌̖◌〪◌̞b; a◌〪◌̖◌̞◌֚b; a◌〪◌̖◌̞◌֚b; a◌〪◌̖◌̞◌֚b; a◌〪◌̖◌̞◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING DOWN TACK BELOW, LATIN SMALL LETTER B
+0061 031E 059A 0316 302A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062; # (a◌̞◌֚◌̖◌〪b; a◌〪◌̞◌̖◌֚b; a◌〪◌̞◌̖◌֚b; a◌〪◌̞◌̖◌֚b; a◌〪◌̞◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING DOWN TACK BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 031F 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062; # (a◌֚◌̖◌〪◌̟b; a◌〪◌̖◌̟◌֚b; a◌〪◌̖◌̟◌֚b; a◌〪◌̖◌̟◌֚b; a◌〪◌̖◌̟◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING PLUS SIGN BELOW, LATIN SMALL LETTER B
+0061 031F 059A 0316 302A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062; # (a◌̟◌֚◌̖◌〪b; a◌〪◌̟◌̖◌֚b; a◌〪◌̟◌̖◌֚b; a◌〪◌̟◌̖◌֚b; a◌〪◌̟◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING PLUS SIGN BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0320 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062; # (a◌֚◌̖◌〪◌̠b; a◌〪◌̖◌̠◌֚b; a◌〪◌̖◌̠◌֚b; a◌〪◌̖◌̠◌֚b; a◌〪◌̖◌̠◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING MINUS SIGN BELOW, LATIN SMALL LETTER B
+0061 0320 059A 0316 302A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062; # (a◌̠◌֚◌̖◌〪b; a◌〪◌̠◌̖◌֚b; a◌〪◌̠◌̖◌֚b; a◌〪◌̠◌̖◌֚b; a◌〪◌̠◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING MINUS SIGN BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 031B 0321 0F74 0321 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062; # (a◌̛◌̡◌ུ◌̡b; a◌ུ◌̡◌̡◌̛b; a◌ུ◌̡◌̡◌̛b; a◌ུ◌̡◌̡◌̛b; a◌ུ◌̡◌̡◌̛b; ) LATIN SMALL LETTER A, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, COMBINING PALATALIZED HOOK BELOW, LATIN SMALL LETTER B
+0061 0321 031B 0321 0F74 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062; # (a◌̡◌̛◌̡◌ུb; a◌ུ◌̡◌̡◌̛b; a◌ུ◌̡◌̡◌̛b; a◌ུ◌̡◌̡◌̛b; a◌ུ◌̡◌̡◌̛b; ) LATIN SMALL LETTER A, COMBINING PALATALIZED HOOK BELOW, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, LATIN SMALL LETTER B
+0061 031B 0321 0F74 0322 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062; # (a◌̛◌̡◌ུ◌̢b; a◌ུ◌̡◌̢◌̛b; a◌ུ◌̡◌̢◌̛b; a◌ུ◌̡◌̢◌̛b; a◌ུ◌̡◌̢◌̛b; ) LATIN SMALL LETTER A, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, COMBINING RETROFLEX HOOK BELOW, LATIN SMALL LETTER B
+0061 0322 031B 0321 0F74 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062; # (a◌̢◌̛◌̡◌ུb; a◌ུ◌̢◌̡◌̛b; a◌ུ◌̢◌̡◌̛b; a◌ུ◌̢◌̡◌̛b; a◌ུ◌̢◌̡◌̛b; ) LATIN SMALL LETTER A, COMBINING RETROFLEX HOOK BELOW, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, LATIN SMALL LETTER B
+0061 059A 0316 302A 0323 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062; # (a◌֚◌̖◌〪◌̣b; a◌〪◌̖◌̣◌֚b; a◌〪◌̖◌̣◌֚b; a◌〪◌̖◌̣◌֚b; a◌〪◌̖◌̣◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING DOT BELOW, LATIN SMALL LETTER B
+0061 0323 059A 0316 302A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062; # (a◌̣◌֚◌̖◌〪b; ạ◌〪◌̖◌֚b; a◌〪◌̣◌̖◌֚b; ạ◌〪◌̖◌֚b; a◌〪◌̣◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING DOT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0324 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062; # (a◌֚◌̖◌〪◌̤b; a◌〪◌̖◌̤◌֚b; a◌〪◌̖◌̤◌֚b; a◌〪◌̖◌̤◌֚b; a◌〪◌̖◌̤◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING DIAERESIS BELOW, LATIN SMALL LETTER B
+0061 0324 059A 0316 302A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062; # (a◌̤◌֚◌̖◌〪b; a◌〪◌̤◌̖◌֚b; a◌〪◌̤◌̖◌֚b; a◌〪◌̤◌̖◌֚b; a◌〪◌̤◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING DIAERESIS BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0325 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062; # (a◌֚◌̖◌〪◌̥b; a◌〪◌̖◌̥◌֚b; a◌〪◌̖◌̥◌֚b; a◌〪◌̖◌̥◌֚b; a◌〪◌̖◌̥◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RING BELOW, LATIN SMALL LETTER B
+0061 0325 059A 0316 302A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062; # (a◌̥◌֚◌̖◌〪b; á¸â—Œã€ªâ—ŒÌ–◌֚b; a◌〪◌̥◌̖◌֚b; á¸â—Œã€ªâ—ŒÌ–◌֚b; a◌〪◌̥◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RING BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0326 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062; # (a◌֚◌̖◌〪◌̦b; a◌〪◌̖◌̦◌֚b; a◌〪◌̖◌̦◌֚b; a◌〪◌̖◌̦◌֚b; a◌〪◌̖◌̦◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING COMMA BELOW, LATIN SMALL LETTER B
+0061 0326 059A 0316 302A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062; # (a◌̦◌֚◌̖◌〪b; a◌〪◌̦◌̖◌֚b; a◌〪◌̦◌̖◌֚b; a◌〪◌̦◌̖◌֚b; a◌〪◌̦◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING COMMA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 031B 0321 0F74 0327 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062; # (a◌̛◌̡◌ུ◌̧b; a◌ུ◌̡◌̧◌̛b; a◌ུ◌̡◌̧◌̛b; a◌ུ◌̡◌̧◌̛b; a◌ུ◌̡◌̧◌̛b; ) LATIN SMALL LETTER A, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, COMBINING CEDILLA, LATIN SMALL LETTER B
+0061 0327 031B 0321 0F74 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062; # (a◌̧◌̛◌̡◌ུb; a◌ུ◌̧◌̡◌̛b; a◌ུ◌̧◌̡◌̛b; a◌ུ◌̧◌̡◌̛b; a◌ུ◌̧◌̡◌̛b; ) LATIN SMALL LETTER A, COMBINING CEDILLA, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, LATIN SMALL LETTER B
+0061 031B 0321 0F74 0328 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062; # (a◌̛◌̡◌ུ◌̨b; a◌ུ◌̡◌̨◌̛b; a◌ུ◌̡◌̨◌̛b; a◌ུ◌̡◌̨◌̛b; a◌ུ◌̡◌̨◌̛b; ) LATIN SMALL LETTER A, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, COMBINING OGONEK, LATIN SMALL LETTER B
+0061 0328 031B 0321 0F74 0062;0105 0F74 0321 031B 0062;0061 0F74 0328 0321 031B 0062;0105 0F74 0321 031B 0062;0061 0F74 0328 0321 031B 0062; # (a◌̨◌̛◌̡◌ུb; ą◌ུ◌̡◌̛b; a◌ུ◌̨◌̡◌̛b; ą◌ུ◌̡◌̛b; a◌ུ◌̨◌̡◌̛b; ) LATIN SMALL LETTER A, COMBINING OGONEK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, LATIN SMALL LETTER B
+0061 059A 0316 302A 0329 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062; # (a◌֚◌̖◌〪◌̩b; a◌〪◌̖◌̩◌֚b; a◌〪◌̖◌̩◌֚b; a◌〪◌̖◌̩◌֚b; a◌〪◌̖◌̩◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING VERTICAL LINE BELOW, LATIN SMALL LETTER B
+0061 0329 059A 0316 302A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062; # (a◌̩◌֚◌̖◌〪b; a◌〪◌̩◌̖◌֚b; a◌〪◌̩◌̖◌֚b; a◌〪◌̩◌̖◌֚b; a◌〪◌̩◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING VERTICAL LINE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 032A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062; # (a◌֚◌̖◌〪◌̪b; a◌〪◌̖◌̪◌֚b; a◌〪◌̖◌̪◌֚b; a◌〪◌̖◌̪◌֚b; a◌〪◌̖◌̪◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING BRIDGE BELOW, LATIN SMALL LETTER B
+0061 032A 059A 0316 302A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062; # (a◌̪◌֚◌̖◌〪b; a◌〪◌̪◌̖◌֚b; a◌〪◌̪◌̖◌֚b; a◌〪◌̪◌̖◌֚b; a◌〪◌̪◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING BRIDGE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 032B 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062; # (a◌֚◌̖◌〪◌̫b; a◌〪◌̖◌̫◌֚b; a◌〪◌̖◌̫◌֚b; a◌〪◌̖◌̫◌֚b; a◌〪◌̖◌̫◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING INVERTED DOUBLE ARCH BELOW, LATIN SMALL LETTER B
+0061 032B 059A 0316 302A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062; # (a◌̫◌֚◌̖◌〪b; a◌〪◌̫◌̖◌֚b; a◌〪◌̫◌̖◌֚b; a◌〪◌̫◌̖◌֚b; a◌〪◌̫◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING INVERTED DOUBLE ARCH BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 032C 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062; # (a◌֚◌̖◌〪◌̬b; a◌〪◌̖◌̬◌֚b; a◌〪◌̖◌̬◌֚b; a◌〪◌̖◌̬◌֚b; a◌〪◌̖◌̬◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING CARON BELOW, LATIN SMALL LETTER B
+0061 032C 059A 0316 302A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062; # (a◌̬◌֚◌̖◌〪b; a◌〪◌̬◌̖◌֚b; a◌〪◌̬◌̖◌֚b; a◌〪◌̬◌̖◌֚b; a◌〪◌̬◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING CARON BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 032D 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062; # (a◌֚◌̖◌〪◌̭b; a◌〪◌̖◌̭◌֚b; a◌〪◌̖◌̭◌֚b; a◌〪◌̖◌̭◌֚b; a◌〪◌̖◌̭◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING CIRCUMFLEX ACCENT BELOW, LATIN SMALL LETTER B
+0061 032D 059A 0316 302A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062; # (a◌̭◌֚◌̖◌〪b; a◌〪◌̭◌̖◌֚b; a◌〪◌̭◌̖◌֚b; a◌〪◌̭◌̖◌֚b; a◌〪◌̭◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING CIRCUMFLEX ACCENT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 032E 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062; # (a◌֚◌̖◌〪◌̮b; a◌〪◌̖◌̮◌֚b; a◌〪◌̖◌̮◌֚b; a◌〪◌̖◌̮◌֚b; a◌〪◌̖◌̮◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING BREVE BELOW, LATIN SMALL LETTER B
+0061 032E 059A 0316 302A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062; # (a◌̮◌֚◌̖◌〪b; a◌〪◌̮◌̖◌֚b; a◌〪◌̮◌̖◌֚b; a◌〪◌̮◌̖◌֚b; a◌〪◌̮◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING BREVE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 032F 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062; # (a◌֚◌̖◌〪◌̯b; a◌〪◌̖◌̯◌֚b; a◌〪◌̖◌̯◌֚b; a◌〪◌̖◌̯◌֚b; a◌〪◌̖◌̯◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING INVERTED BREVE BELOW, LATIN SMALL LETTER B
+0061 032F 059A 0316 302A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062; # (a◌̯◌֚◌̖◌〪b; a◌〪◌̯◌̖◌֚b; a◌〪◌̯◌̖◌֚b; a◌〪◌̯◌̖◌֚b; a◌〪◌̯◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING INVERTED BREVE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0330 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062; # (a◌֚◌̖◌〪◌̰b; a◌〪◌̖◌̰◌֚b; a◌〪◌̖◌̰◌֚b; a◌〪◌̖◌̰◌֚b; a◌〪◌̖◌̰◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING TILDE BELOW, LATIN SMALL LETTER B
+0061 0330 059A 0316 302A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062; # (a◌̰◌֚◌̖◌〪b; a◌〪◌̰◌̖◌֚b; a◌〪◌̰◌̖◌֚b; a◌〪◌̰◌̖◌֚b; a◌〪◌̰◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING TILDE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0331 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062; # (a◌֚◌̖◌〪◌̱b; a◌〪◌̖◌̱◌֚b; a◌〪◌̖◌̱◌֚b; a◌〪◌̖◌̱◌֚b; a◌〪◌̖◌̱◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING MACRON BELOW, LATIN SMALL LETTER B
+0061 0331 059A 0316 302A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062; # (a◌̱◌֚◌̖◌〪b; a◌〪◌̱◌̖◌֚b; a◌〪◌̱◌̖◌֚b; a◌〪◌̱◌̖◌֚b; a◌〪◌̱◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING MACRON BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0332 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062; # (a◌֚◌̖◌〪◌̲b; a◌〪◌̖◌̲◌֚b; a◌〪◌̖◌̲◌֚b; a◌〪◌̖◌̲◌֚b; a◌〪◌̖◌̲◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LOW LINE, LATIN SMALL LETTER B
+0061 0332 059A 0316 302A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062; # (a◌̲◌֚◌̖◌〪b; a◌〪◌̲◌̖◌֚b; a◌〪◌̲◌̖◌֚b; a◌〪◌̲◌̖◌֚b; a◌〪◌̲◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LOW LINE, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0333 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062; # (a◌֚◌̖◌〪◌̳b; a◌〪◌̖◌̳◌֚b; a◌〪◌̖◌̳◌֚b; a◌〪◌̖◌̳◌֚b; a◌〪◌̖◌̳◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING DOUBLE LOW LINE, LATIN SMALL LETTER B
+0061 0333 059A 0316 302A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062; # (a◌̳◌֚◌̖◌〪b; a◌〪◌̳◌̖◌֚b; a◌〪◌̳◌̖◌֚b; a◌〪◌̳◌̖◌֚b; a◌〪◌̳◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING DOUBLE LOW LINE, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 093C 0334 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062; # (a◌़◌̴◌̴b; a◌̴◌̴◌़b; a◌̴◌̴◌़b; a◌̴◌̴◌़b; a◌̴◌̴◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 0334 093C 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062; # (a◌̴◌़◌̴b; a◌̴◌̴◌़b; a◌̴◌̴◌़b; a◌̴◌̴◌़b; a◌̴◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING TILDE OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 0335 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062; # (a◌़◌̴◌̵b; a◌̴◌̵◌़b; a◌̴◌̵◌़b; a◌̴◌̵◌़b; a◌̴◌̵◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING SHORT STROKE OVERLAY, LATIN SMALL LETTER B
+0061 0335 093C 0334 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062; # (a◌̵◌़◌̴b; a◌̵◌̴◌़b; a◌̵◌̴◌़b; a◌̵◌̴◌़b; a◌̵◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING SHORT STROKE OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 0336 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062; # (a◌़◌̴◌̶b; a◌̴◌̶◌़b; a◌̴◌̶◌़b; a◌̴◌̶◌़b; a◌̴◌̶◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING LONG STROKE OVERLAY, LATIN SMALL LETTER B
+0061 0336 093C 0334 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062; # (a◌̶◌़◌̴b; a◌̶◌̴◌़b; a◌̶◌̴◌़b; a◌̶◌̴◌़b; a◌̶◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING LONG STROKE OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 0337 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062; # (a◌़◌̴◌̷b; a◌̴◌̷◌़b; a◌̴◌̷◌़b; a◌̴◌̷◌़b; a◌̴◌̷◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING SHORT SOLIDUS OVERLAY, LATIN SMALL LETTER B
+0061 0337 093C 0334 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062; # (a◌̷◌़◌̴b; a◌̷◌̴◌़b; a◌̷◌̴◌़b; a◌̷◌̴◌़b; a◌̷◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING SHORT SOLIDUS OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 0338 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062; # (a◌़◌̴◌̸b; a◌̴◌̸◌़b; a◌̴◌̸◌़b; a◌̴◌̸◌़b; a◌̴◌̸◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING LONG SOLIDUS OVERLAY, LATIN SMALL LETTER B
+0061 0338 093C 0334 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062; # (a◌̸◌़◌̴b; a◌̸◌̴◌़b; a◌̸◌̴◌़b; a◌̸◌̴◌़b; a◌̸◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING LONG SOLIDUS OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 059A 0316 302A 0339 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062; # (a◌֚◌̖◌〪◌̹b; a◌〪◌̖◌̹◌֚b; a◌〪◌̖◌̹◌֚b; a◌〪◌̖◌̹◌֚b; a◌〪◌̖◌̹◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHT HALF RING BELOW, LATIN SMALL LETTER B
+0061 0339 059A 0316 302A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062; # (a◌̹◌֚◌̖◌〪b; a◌〪◌̹◌̖◌֚b; a◌〪◌̹◌̖◌֚b; a◌〪◌̹◌̖◌֚b; a◌〪◌̹◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHT HALF RING BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 033A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062; # (a◌֚◌̖◌〪◌̺b; a◌〪◌̖◌̺◌֚b; a◌〪◌̖◌̺◌֚b; a◌〪◌̖◌̺◌֚b; a◌〪◌̖◌̺◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING INVERTED BRIDGE BELOW, LATIN SMALL LETTER B
+0061 033A 059A 0316 302A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062; # (a◌̺◌֚◌̖◌〪b; a◌〪◌̺◌̖◌֚b; a◌〪◌̺◌̖◌֚b; a◌〪◌̺◌̖◌֚b; a◌〪◌̺◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING INVERTED BRIDGE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 033B 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062; # (a◌֚◌̖◌〪◌̻b; a◌〪◌̖◌̻◌֚b; a◌〪◌̖◌̻◌֚b; a◌〪◌̖◌̻◌֚b; a◌〪◌̖◌̻◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING SQUARE BELOW, LATIN SMALL LETTER B
+0061 033B 059A 0316 302A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062; # (a◌̻◌֚◌̖◌〪b; a◌〪◌̻◌̖◌֚b; a◌〪◌̻◌̖◌֚b; a◌〪◌̻◌̖◌֚b; a◌〪◌̻◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING SQUARE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 033C 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062; # (a◌֚◌̖◌〪◌̼b; a◌〪◌̖◌̼◌֚b; a◌〪◌̖◌̼◌֚b; a◌〪◌̖◌̼◌֚b; a◌〪◌̖◌̼◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING SEAGULL BELOW, LATIN SMALL LETTER B
+0061 033C 059A 0316 302A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062; # (a◌̼◌֚◌̖◌〪b; a◌〪◌̼◌̖◌֚b; a◌〪◌̼◌̖◌֚b; a◌〪◌̼◌̖◌֚b; a◌〪◌̼◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING SEAGULL BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 033D 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062; # (a◌̕◌̀◌֮◌̽b; à◌֮◌̽◌̕b; a◌֮◌̀◌̽◌̕b; à◌֮◌̽◌̕b; a◌֮◌̀◌̽◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING X ABOVE, LATIN SMALL LETTER B
+0061 033D 0315 0300 05AE 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062; # (a◌̽◌̕◌̀◌֮b; a◌֮◌̽◌̀◌̕b; a◌֮◌̽◌̀◌̕b; a◌֮◌̽◌̀◌̕b; a◌֮◌̽◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING X ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 033E 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062; # (a◌̕◌̀◌֮◌̾b; à◌֮◌̾◌̕b; a◌֮◌̀◌̾◌̕b; à◌֮◌̾◌̕b; a◌֮◌̀◌̾◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING VERTICAL TILDE, LATIN SMALL LETTER B
+0061 033E 0315 0300 05AE 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062; # (a◌̾◌̕◌̀◌֮b; a◌֮◌̾◌̀◌̕b; a◌֮◌̾◌̀◌̕b; a◌֮◌̾◌̀◌̕b; a◌֮◌̾◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING VERTICAL TILDE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 033F 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062; # (a◌̕◌̀◌֮◌̿b; à◌֮◌̿◌̕b; a◌֮◌̀◌̿◌̕b; à◌֮◌̿◌̕b; a◌֮◌̀◌̿◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLE OVERLINE, LATIN SMALL LETTER B
+0061 033F 0315 0300 05AE 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062; # (a◌̿◌̕◌̀◌֮b; a◌֮◌̿◌̀◌̕b; a◌֮◌̿◌̀◌̕b; a◌֮◌̿◌̀◌̕b; a◌֮◌̿◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLE OVERLINE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0340 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062; # (a◌̕◌̀◌֮◌̀b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRAVE TONE MARK, LATIN SMALL LETTER B
+0061 0340 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062; # (a◌̀◌̕◌̀◌֮b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; à◌֮◌̀◌̕b; a◌֮◌̀◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GRAVE TONE MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0341 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062; # (a◌̕◌̀◌֮◌Íb; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; à◌֮◌Ì◌̕b; a◌֮◌̀◌Ì◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ACUTE TONE MARK, LATIN SMALL LETTER B
+0061 0341 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062; # (aâ—ŒÍ◌̕◌̀◌֮b; á◌֮◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; á◌֮◌̀◌̕b; a◌֮◌Ì◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ACUTE TONE MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0342 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062; # (a◌̕◌̀◌֮◌͂b; à◌֮◌͂◌̕b; a◌֮◌̀◌͂◌̕b; à◌֮◌͂◌̕b; a◌֮◌̀◌͂◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GREEK PERISPOMENI, LATIN SMALL LETTER B
+0061 0342 0315 0300 05AE 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062; # (a◌͂◌̕◌̀◌֮b; a◌֮◌͂◌̀◌̕b; a◌֮◌͂◌̀◌̕b; a◌֮◌͂◌̀◌̕b; a◌֮◌͂◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GREEK PERISPOMENI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0343 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062; # (a◌̕◌̀◌֮◌̓b; à◌֮◌̓◌̕b; a◌֮◌̀◌̓◌̕b; à◌֮◌̓◌̕b; a◌֮◌̀◌̓◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GREEK KORONIS, LATIN SMALL LETTER B
+0061 0343 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062; # (a◌̓◌̕◌̀◌֮b; a◌֮◌̓◌̀◌̕b; a◌֮◌̓◌̀◌̕b; a◌֮◌̓◌̀◌̕b; a◌֮◌̓◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GREEK KORONIS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0344 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062; # (a◌̕◌̀◌֮◌̈́b; à◌֮◌̈◌Ì◌̕b; a◌֮◌̀◌̈◌Ì◌̕b; à◌֮◌̈◌Ì◌̕b; a◌֮◌̀◌̈◌Ì◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GREEK DIALYTIKA TONOS, LATIN SMALL LETTER B
+0061 0344 0315 0300 05AE 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062; # (a◌̈́◌̕◌̀◌֮b; ä◌֮◌Ì◌̀◌̕b; a◌֮◌̈◌Ì◌̀◌̕b; ä◌֮◌Ì◌̀◌̕b; a◌֮◌̈◌Ì◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GREEK DIALYTIKA TONOS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0345 035D 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062; # (a◌ͅ◌Í◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; ) LATIN SMALL LETTER A, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING GREEK YPOGEGRAMMENI, LATIN SMALL LETTER B
+0061 0345 0345 035D 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062; # (a◌ͅ◌ͅ◌Íb; aâ—ŒÍ◌ͅ◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; aâ—ŒÍ◌ͅ◌ͅb; ) LATIN SMALL LETTER A, COMBINING GREEK YPOGEGRAMMENI, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0346 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062; # (a◌̕◌̀◌֮◌͆b; à◌֮◌͆◌̕b; a◌֮◌̀◌͆◌̕b; à◌֮◌͆◌̕b; a◌֮◌̀◌͆◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING BRIDGE ABOVE, LATIN SMALL LETTER B
+0061 0346 0315 0300 05AE 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062; # (a◌͆◌̕◌̀◌֮b; a◌֮◌͆◌̀◌̕b; a◌֮◌͆◌̀◌̕b; a◌֮◌͆◌̀◌̕b; a◌֮◌͆◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING BRIDGE ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0347 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062; # (a◌֚◌̖◌〪◌͇b; a◌〪◌̖◌͇◌֚b; a◌〪◌̖◌͇◌֚b; a◌〪◌̖◌͇◌֚b; a◌〪◌̖◌͇◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING EQUALS SIGN BELOW, LATIN SMALL LETTER B
+0061 0347 059A 0316 302A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062; # (a◌͇◌֚◌̖◌〪b; a◌〪◌͇◌̖◌֚b; a◌〪◌͇◌̖◌֚b; a◌〪◌͇◌̖◌֚b; a◌〪◌͇◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING EQUALS SIGN BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0348 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062; # (a◌֚◌̖◌〪◌͈b; a◌〪◌̖◌͈◌֚b; a◌〪◌̖◌͈◌֚b; a◌〪◌̖◌͈◌֚b; a◌〪◌̖◌͈◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING DOUBLE VERTICAL LINE BELOW, LATIN SMALL LETTER B
+0061 0348 059A 0316 302A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062; # (a◌͈◌֚◌̖◌〪b; a◌〪◌͈◌̖◌֚b; a◌〪◌͈◌̖◌֚b; a◌〪◌͈◌̖◌֚b; a◌〪◌͈◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING DOUBLE VERTICAL LINE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0349 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062; # (a◌֚◌̖◌〪◌͉b; a◌〪◌̖◌͉◌֚b; a◌〪◌̖◌͉◌֚b; a◌〪◌̖◌͉◌֚b; a◌〪◌̖◌͉◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFT ANGLE BELOW, LATIN SMALL LETTER B
+0061 0349 059A 0316 302A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062; # (a◌͉◌֚◌̖◌〪b; a◌〪◌͉◌̖◌֚b; a◌〪◌͉◌̖◌֚b; a◌〪◌͉◌̖◌֚b; a◌〪◌͉◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFT ANGLE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 034A 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062; # (a◌̕◌̀◌֮◌͊b; à◌֮◌͊◌̕b; a◌֮◌̀◌͊◌̕b; à◌֮◌͊◌̕b; a◌֮◌̀◌͊◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING NOT TILDE ABOVE, LATIN SMALL LETTER B
+0061 034A 0315 0300 05AE 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062; # (a◌͊◌̕◌̀◌֮b; a◌֮◌͊◌̀◌̕b; a◌֮◌͊◌̀◌̕b; a◌֮◌͊◌̀◌̕b; a◌֮◌͊◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING NOT TILDE ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 034B 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062; # (a◌̕◌̀◌֮◌͋b; à◌֮◌͋◌̕b; a◌֮◌̀◌͋◌̕b; à◌֮◌͋◌̕b; a◌֮◌̀◌͋◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING HOMOTHETIC ABOVE, LATIN SMALL LETTER B
+0061 034B 0315 0300 05AE 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062; # (a◌͋◌̕◌̀◌֮b; a◌֮◌͋◌̀◌̕b; a◌֮◌͋◌̀◌̕b; a◌֮◌͋◌̀◌̕b; a◌֮◌͋◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING HOMOTHETIC ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 034C 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062; # (a◌̕◌̀◌֮◌͌b; à◌֮◌͌◌̕b; a◌֮◌̀◌͌◌̕b; à◌֮◌͌◌̕b; a◌֮◌̀◌͌◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ALMOST EQUAL TO ABOVE, LATIN SMALL LETTER B
+0061 034C 0315 0300 05AE 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062; # (a◌͌◌̕◌̀◌֮b; a◌֮◌͌◌̀◌̕b; a◌֮◌͌◌̀◌̕b; a◌֮◌͌◌̀◌̕b; a◌֮◌͌◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ALMOST EQUAL TO ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 034D 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062; # (a◌֚◌̖◌〪◌Íb; a◌〪◌̖◌Í◌֚b; a◌〪◌̖◌Í◌֚b; a◌〪◌̖◌Í◌֚b; a◌〪◌̖◌Í◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFT RIGHT ARROW BELOW, LATIN SMALL LETTER B
+0061 034D 059A 0316 302A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062; # (aâ—ŒÍ◌֚◌̖◌〪b; a◌〪◌Í◌̖◌֚b; a◌〪◌Í◌̖◌֚b; a◌〪◌Í◌̖◌֚b; a◌〪◌Í◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFT RIGHT ARROW BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 034E 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062; # (a◌֚◌̖◌〪◌͎b; a◌〪◌̖◌͎◌֚b; a◌〪◌̖◌͎◌֚b; a◌〪◌̖◌͎◌֚b; a◌〪◌̖◌͎◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING UPWARDS ARROW BELOW, LATIN SMALL LETTER B
+0061 034E 059A 0316 302A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062; # (a◌͎◌֚◌̖◌〪b; a◌〪◌͎◌̖◌֚b; a◌〪◌͎◌̖◌֚b; a◌〪◌͎◌̖◌֚b; a◌〪◌͎◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING UPWARDS ARROW BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0350 0062;00E0 05AE 0350 0315 0062;0061 05AE 0300 0350 0315 0062;00E0 05AE 0350 0315 0062;0061 05AE 0300 0350 0315 0062; # (a◌̕◌̀◌֮◌Íb; à◌֮◌Í◌̕b; a◌֮◌̀◌Í◌̕b; à◌֮◌Í◌̕b; a◌֮◌̀◌Í◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING RIGHT ARROWHEAD ABOVE, LATIN SMALL LETTER B
+0061 0350 0315 0300 05AE 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062; # (aâ—ŒÍ◌̕◌̀◌֮b; a◌֮◌Í◌̀◌̕b; a◌֮◌Í◌̀◌̕b; a◌֮◌Í◌̀◌̕b; a◌֮◌Í◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING RIGHT ARROWHEAD ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0351 0062;00E0 05AE 0351 0315 0062;0061 05AE 0300 0351 0315 0062;00E0 05AE 0351 0315 0062;0061 05AE 0300 0351 0315 0062; # (a◌̕◌̀◌֮◌͑b; à◌֮◌͑◌̕b; a◌֮◌̀◌͑◌̕b; à◌֮◌͑◌̕b; a◌֮◌̀◌͑◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LEFT HALF RING ABOVE, LATIN SMALL LETTER B
+0061 0351 0315 0300 05AE 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062; # (a◌͑◌̕◌̀◌֮b; a◌֮◌͑◌̀◌̕b; a◌֮◌͑◌̀◌̕b; a◌֮◌͑◌̀◌̕b; a◌֮◌͑◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LEFT HALF RING ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0352 0062;00E0 05AE 0352 0315 0062;0061 05AE 0300 0352 0315 0062;00E0 05AE 0352 0315 0062;0061 05AE 0300 0352 0315 0062; # (a◌̕◌̀◌֮◌͒b; à◌֮◌͒◌̕b; a◌֮◌̀◌͒◌̕b; à◌֮◌͒◌̕b; a◌֮◌̀◌͒◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING FERMATA, LATIN SMALL LETTER B
+0061 0352 0315 0300 05AE 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062; # (a◌͒◌̕◌̀◌֮b; a◌֮◌͒◌̀◌̕b; a◌֮◌͒◌̀◌̕b; a◌֮◌͒◌̀◌̕b; a◌֮◌͒◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING FERMATA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0353 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062; # (a◌֚◌̖◌〪◌͓b; a◌〪◌̖◌͓◌֚b; a◌〪◌̖◌͓◌֚b; a◌〪◌̖◌͓◌֚b; a◌〪◌̖◌͓◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING X BELOW, LATIN SMALL LETTER B
+0061 0353 059A 0316 302A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062; # (a◌͓◌֚◌̖◌〪b; a◌〪◌͓◌̖◌֚b; a◌〪◌͓◌̖◌֚b; a◌〪◌͓◌̖◌֚b; a◌〪◌͓◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING X BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0354 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062; # (a◌֚◌̖◌〪◌͔b; a◌〪◌̖◌͔◌֚b; a◌〪◌̖◌͔◌֚b; a◌〪◌̖◌͔◌֚b; a◌〪◌̖◌͔◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFT ARROWHEAD BELOW, LATIN SMALL LETTER B
+0061 0354 059A 0316 302A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062; # (a◌͔◌֚◌̖◌〪b; a◌〪◌͔◌̖◌֚b; a◌〪◌͔◌̖◌֚b; a◌〪◌͔◌̖◌֚b; a◌〪◌͔◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFT ARROWHEAD BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0355 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062; # (a◌֚◌̖◌〪◌͕b; a◌〪◌̖◌͕◌֚b; a◌〪◌̖◌͕◌֚b; a◌〪◌̖◌͕◌֚b; a◌〪◌̖◌͕◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHT ARROWHEAD BELOW, LATIN SMALL LETTER B
+0061 0355 059A 0316 302A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062; # (a◌͕◌֚◌̖◌〪b; a◌〪◌͕◌̖◌֚b; a◌〪◌͕◌̖◌֚b; a◌〪◌͕◌̖◌֚b; a◌〪◌͕◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHT ARROWHEAD BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0356 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062; # (a◌֚◌̖◌〪◌͖b; a◌〪◌̖◌͖◌֚b; a◌〪◌̖◌͖◌֚b; a◌〪◌̖◌͖◌֚b; a◌〪◌̖◌͖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW, LATIN SMALL LETTER B
+0061 0356 059A 0316 302A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062; # (a◌͖◌֚◌̖◌〪b; a◌〪◌͖◌̖◌֚b; a◌〪◌͖◌̖◌֚b; a◌〪◌͖◌̖◌֚b; a◌〪◌͖◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0357 0062;00E0 05AE 0357 0315 0062;0061 05AE 0300 0357 0315 0062;00E0 05AE 0357 0315 0062;0061 05AE 0300 0357 0315 0062; # (a◌̕◌̀◌֮◌͗b; à◌֮◌͗◌̕b; a◌֮◌̀◌͗◌̕b; à◌֮◌͗◌̕b; a◌֮◌̀◌͗◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING RIGHT HALF RING ABOVE, LATIN SMALL LETTER B
+0061 0357 0315 0300 05AE 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062; # (a◌͗◌̕◌̀◌֮b; a◌֮◌͗◌̀◌̕b; a◌֮◌͗◌̀◌̕b; a◌֮◌͗◌̀◌̕b; a◌֮◌͗◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING RIGHT HALF RING ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 035C 0315 0300 0358 0062;00E0 0315 0358 035C 0062;0061 0300 0315 0358 035C 0062;00E0 0315 0358 035C 0062;0061 0300 0315 0358 035C 0062; # (a◌͜◌̕◌̀◌͘b; à◌̕◌͘◌͜b; a◌̀◌̕◌͘◌͜b; à◌̕◌͘◌͜b; a◌̀◌̕◌͘◌͜b; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, COMBINING DOT ABOVE RIGHT, LATIN SMALL LETTER B
+0061 0358 035C 0315 0300 0062;00E0 0358 0315 035C 0062;0061 0300 0358 0315 035C 0062;00E0 0358 0315 035C 0062;0061 0300 0358 0315 035C 0062; # (a◌͘◌͜◌̕◌̀b; à◌͘◌̕◌͜b; a◌̀◌͘◌̕◌͜b; à◌͘◌̕◌͜b; a◌̀◌͘◌̕◌͜b; ) LATIN SMALL LETTER A, COMBINING DOT ABOVE RIGHT, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, LATIN SMALL LETTER B
+0061 059A 0316 302A 0359 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062; # (a◌֚◌̖◌〪◌͙b; a◌〪◌̖◌͙◌֚b; a◌〪◌̖◌͙◌֚b; a◌〪◌̖◌͙◌֚b; a◌〪◌̖◌͙◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING ASTERISK BELOW, LATIN SMALL LETTER B
+0061 0359 059A 0316 302A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062; # (a◌͙◌֚◌̖◌〪b; a◌〪◌͙◌̖◌֚b; a◌〪◌͙◌̖◌֚b; a◌〪◌͙◌̖◌֚b; a◌〪◌͙◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING ASTERISK BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 035A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062; # (a◌֚◌̖◌〪◌͚b; a◌〪◌̖◌͚◌֚b; a◌〪◌̖◌͚◌֚b; a◌〪◌̖◌͚◌֚b; a◌〪◌̖◌͚◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING DOUBLE RING BELOW, LATIN SMALL LETTER B
+0061 035A 059A 0316 302A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062; # (a◌͚◌֚◌̖◌〪b; a◌〪◌͚◌̖◌֚b; a◌〪◌͚◌̖◌֚b; a◌〪◌͚◌̖◌֚b; a◌〪◌͚◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING DOUBLE RING BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 035B 0062;00E0 05AE 035B 0315 0062;0061 05AE 0300 035B 0315 0062;00E0 05AE 035B 0315 0062;0061 05AE 0300 035B 0315 0062; # (a◌̕◌̀◌֮◌͛b; à◌֮◌͛◌̕b; a◌֮◌̀◌͛◌̕b; à◌֮◌͛◌̕b; a◌֮◌̀◌͛◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ZIGZAG ABOVE, LATIN SMALL LETTER B
+0061 035B 0315 0300 05AE 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062; # (a◌͛◌̕◌̀◌֮b; a◌֮◌͛◌̀◌̕b; a◌֮◌͛◌̀◌̕b; a◌֮◌͛◌̀◌̕b; a◌֮◌͛◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ZIGZAG ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 035D 035C 0315 035C 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062; # (aâ—ŒÍ◌͜◌̕◌͜b; a◌̕◌͜◌͜◌Íb; a◌̕◌͜◌͜◌Íb; a◌̕◌͜◌͜◌Íb; a◌̕◌͜◌͜◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING DOUBLE BREVE BELOW, LATIN SMALL LETTER B
+0061 035C 035D 035C 0315 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062; # (a◌͜◌Í◌͜◌̕b; a◌̕◌͜◌͜◌Íb; a◌̕◌͜◌͜◌Íb; a◌̕◌͜◌͜◌Íb; a◌̕◌͜◌͜◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE BELOW, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, LATIN SMALL LETTER B
+0061 0345 035D 035C 035D 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062; # (a◌ͅ◌Í◌͜◌Íb; a◌͜◌Íâ—ŒÍ◌ͅb; a◌͜◌Íâ—ŒÍ◌ͅb; a◌͜◌Íâ—ŒÍ◌ͅb; a◌͜◌Íâ—ŒÍ◌ͅb; ) LATIN SMALL LETTER A, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING DOUBLE BREVE, LATIN SMALL LETTER B
+0061 035D 0345 035D 035C 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062; # (aâ—ŒÍ◌ͅ◌Í◌͜b; a◌͜◌Íâ—ŒÍ◌ͅb; a◌͜◌Íâ—ŒÍ◌ͅb; a◌͜◌Íâ—ŒÍ◌ͅb; a◌͜◌Íâ—ŒÍ◌ͅb; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, LATIN SMALL LETTER B
+0061 0345 035D 035C 035E 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062; # (a◌ͅ◌Í◌͜◌͞b; a◌͜◌Í◌͞◌ͅb; a◌͜◌Í◌͞◌ͅb; a◌͜◌Í◌͞◌ͅb; a◌͜◌Í◌͞◌ͅb; ) LATIN SMALL LETTER A, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING DOUBLE MACRON, LATIN SMALL LETTER B
+0061 035E 0345 035D 035C 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062; # (a◌͞◌ͅ◌Í◌͜b; a◌͜◌͞◌Í◌ͅb; a◌͜◌͞◌Í◌ͅb; a◌͜◌͞◌Í◌ͅb; a◌͜◌͞◌Í◌ͅb; ) LATIN SMALL LETTER A, COMBINING DOUBLE MACRON, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, LATIN SMALL LETTER B
+0061 035D 035C 0315 035F 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062; # (aâ—ŒÍ◌͜◌̕◌͟b; a◌̕◌͜◌͟◌Íb; a◌̕◌͜◌͟◌Íb; a◌̕◌͜◌͟◌Íb; a◌̕◌͜◌͟◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING DOUBLE MACRON BELOW, LATIN SMALL LETTER B
+0061 035F 035D 035C 0315 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062; # (a◌͟◌Í◌͜◌̕b; a◌̕◌͟◌͜◌Íb; a◌̕◌͟◌͜◌Íb; a◌̕◌͟◌͜◌Íb; a◌̕◌͟◌͜◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE MACRON BELOW, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, LATIN SMALL LETTER B
+0061 0345 035D 035C 0360 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062; # (a◌ͅ◌Í◌͜◌͠b; a◌͜◌Í◌͠◌ͅb; a◌͜◌Í◌͠◌ͅb; a◌͜◌Í◌͠◌ͅb; a◌͜◌Í◌͠◌ͅb; ) LATIN SMALL LETTER A, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING DOUBLE TILDE, LATIN SMALL LETTER B
+0061 0360 0345 035D 035C 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062; # (a◌͠◌ͅ◌Í◌͜b; a◌͜◌͠◌Í◌ͅb; a◌͜◌͠◌Í◌ͅb; a◌͜◌͠◌Í◌ͅb; a◌͜◌͠◌Í◌ͅb; ) LATIN SMALL LETTER A, COMBINING DOUBLE TILDE, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, LATIN SMALL LETTER B
+0061 0345 035D 035C 0361 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062; # (a◌ͅ◌Í◌͜◌͡b; a◌͜◌Í◌͡◌ͅb; a◌͜◌Í◌͡◌ͅb; a◌͜◌Í◌͡◌ͅb; a◌͜◌Í◌͡◌ͅb; ) LATIN SMALL LETTER A, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING DOUBLE INVERTED BREVE, LATIN SMALL LETTER B
+0061 0361 0345 035D 035C 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062; # (a◌͡◌ͅ◌Í◌͜b; a◌͜◌͡◌Í◌ͅb; a◌͜◌͡◌Í◌ͅb; a◌͜◌͡◌Í◌ͅb; a◌͜◌͡◌Í◌ͅb; ) LATIN SMALL LETTER A, COMBINING DOUBLE INVERTED BREVE, COMBINING GREEK YPOGEGRAMMENI, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, LATIN SMALL LETTER B
+0061 035D 035C 0315 0362 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062; # (aâ—ŒÍ◌͜◌̕◌͢b; a◌̕◌͜◌͢◌Íb; a◌̕◌͜◌͢◌Íb; a◌̕◌͜◌͢◌Íb; a◌̕◌͜◌͢◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING DOUBLE RIGHTWARDS ARROW BELOW, LATIN SMALL LETTER B
+0061 0362 035D 035C 0315 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062; # (a◌͢◌Í◌͜◌̕b; a◌̕◌͢◌͜◌Íb; a◌̕◌͢◌͜◌Íb; a◌̕◌͢◌͜◌Íb; a◌̕◌͢◌͜◌Íb; ) LATIN SMALL LETTER A, COMBINING DOUBLE RIGHTWARDS ARROW BELOW, COMBINING DOUBLE BREVE, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0363 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062; # (a◌̕◌̀◌֮◌ͣb; à◌֮◌ͣ◌̕b; a◌֮◌̀◌ͣ◌̕b; à◌֮◌ͣ◌̕b; a◌֮◌̀◌ͣ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER A, LATIN SMALL LETTER B
+0061 0363 0315 0300 05AE 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062; # (a◌ͣ◌̕◌̀◌֮b; a◌֮◌ͣ◌̀◌̕b; a◌֮◌ͣ◌̀◌̕b; a◌֮◌ͣ◌̀◌̕b; a◌֮◌ͣ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0364 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062; # (a◌̕◌̀◌֮◌ͤb; à◌֮◌ͤ◌̕b; a◌֮◌̀◌ͤ◌̕b; à◌֮◌ͤ◌̕b; a◌֮◌̀◌ͤ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER E, LATIN SMALL LETTER B
+0061 0364 0315 0300 05AE 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062; # (a◌ͤ◌̕◌̀◌֮b; a◌֮◌ͤ◌̀◌̕b; a◌֮◌ͤ◌̀◌̕b; a◌֮◌ͤ◌̀◌̕b; a◌֮◌ͤ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER E, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0365 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062; # (a◌̕◌̀◌֮◌ͥb; à◌֮◌ͥ◌̕b; a◌֮◌̀◌ͥ◌̕b; à◌֮◌ͥ◌̕b; a◌֮◌̀◌ͥ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER I, LATIN SMALL LETTER B
+0061 0365 0315 0300 05AE 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062; # (a◌ͥ◌̕◌̀◌֮b; a◌֮◌ͥ◌̀◌̕b; a◌֮◌ͥ◌̀◌̕b; a◌֮◌ͥ◌̀◌̕b; a◌֮◌ͥ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER I, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0366 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062; # (a◌̕◌̀◌֮◌ͦb; à◌֮◌ͦ◌̕b; a◌֮◌̀◌ͦ◌̕b; à◌֮◌ͦ◌̕b; a◌֮◌̀◌ͦ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER O, LATIN SMALL LETTER B
+0061 0366 0315 0300 05AE 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062; # (a◌ͦ◌̕◌̀◌֮b; a◌֮◌ͦ◌̀◌̕b; a◌֮◌ͦ◌̀◌̕b; a◌֮◌ͦ◌̀◌̕b; a◌֮◌ͦ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER O, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0367 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062; # (a◌̕◌̀◌֮◌ͧb; à◌֮◌ͧ◌̕b; a◌֮◌̀◌ͧ◌̕b; à◌֮◌ͧ◌̕b; a◌֮◌̀◌ͧ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER U, LATIN SMALL LETTER B
+0061 0367 0315 0300 05AE 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062; # (a◌ͧ◌̕◌̀◌֮b; a◌֮◌ͧ◌̀◌̕b; a◌֮◌ͧ◌̀◌̕b; a◌֮◌ͧ◌̀◌̕b; a◌֮◌ͧ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER U, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0368 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062; # (a◌̕◌̀◌֮◌ͨb; à◌֮◌ͨ◌̕b; a◌֮◌̀◌ͨ◌̕b; à◌֮◌ͨ◌̕b; a◌֮◌̀◌ͨ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER C, LATIN SMALL LETTER B
+0061 0368 0315 0300 05AE 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062; # (a◌ͨ◌̕◌̀◌֮b; a◌֮◌ͨ◌̀◌̕b; a◌֮◌ͨ◌̀◌̕b; a◌֮◌ͨ◌̀◌̕b; a◌֮◌ͨ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER C, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0369 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062; # (a◌̕◌̀◌֮◌ͩb; à◌֮◌ͩ◌̕b; a◌֮◌̀◌ͩ◌̕b; à◌֮◌ͩ◌̕b; a◌֮◌̀◌ͩ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER D, LATIN SMALL LETTER B
+0061 0369 0315 0300 05AE 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062; # (a◌ͩ◌̕◌̀◌֮b; a◌֮◌ͩ◌̀◌̕b; a◌֮◌ͩ◌̀◌̕b; a◌֮◌ͩ◌̀◌̕b; a◌֮◌ͩ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER D, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 036A 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062; # (a◌̕◌̀◌֮◌ͪb; à◌֮◌ͪ◌̕b; a◌֮◌̀◌ͪ◌̕b; à◌֮◌ͪ◌̕b; a◌֮◌̀◌ͪ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER H, LATIN SMALL LETTER B
+0061 036A 0315 0300 05AE 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062; # (a◌ͪ◌̕◌̀◌֮b; a◌֮◌ͪ◌̀◌̕b; a◌֮◌ͪ◌̀◌̕b; a◌֮◌ͪ◌̀◌̕b; a◌֮◌ͪ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER H, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 036B 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062; # (a◌̕◌̀◌֮◌ͫb; à◌֮◌ͫ◌̕b; a◌֮◌̀◌ͫ◌̕b; à◌֮◌ͫ◌̕b; a◌֮◌̀◌ͫ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER M, LATIN SMALL LETTER B
+0061 036B 0315 0300 05AE 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062; # (a◌ͫ◌̕◌̀◌֮b; a◌֮◌ͫ◌̀◌̕b; a◌֮◌ͫ◌̀◌̕b; a◌֮◌ͫ◌̀◌̕b; a◌֮◌ͫ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER M, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 036C 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062; # (a◌̕◌̀◌֮◌ͬb; à◌֮◌ͬ◌̕b; a◌֮◌̀◌ͬ◌̕b; à◌֮◌ͬ◌̕b; a◌֮◌̀◌ͬ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER R, LATIN SMALL LETTER B
+0061 036C 0315 0300 05AE 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062; # (a◌ͬ◌̕◌̀◌֮b; a◌֮◌ͬ◌̀◌̕b; a◌֮◌ͬ◌̀◌̕b; a◌֮◌ͬ◌̀◌̕b; a◌֮◌ͬ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER R, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 036D 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062; # (a◌̕◌̀◌֮◌ͭb; à◌֮◌ͭ◌̕b; a◌֮◌̀◌ͭ◌̕b; à◌֮◌ͭ◌̕b; a◌֮◌̀◌ͭ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER T, LATIN SMALL LETTER B
+0061 036D 0315 0300 05AE 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062; # (a◌ͭ◌̕◌̀◌֮b; a◌֮◌ͭ◌̀◌̕b; a◌֮◌ͭ◌̀◌̕b; a◌֮◌ͭ◌̀◌̕b; a◌֮◌ͭ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER T, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 036E 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062; # (a◌̕◌̀◌֮◌ͮb; à◌֮◌ͮ◌̕b; a◌֮◌̀◌ͮ◌̕b; à◌֮◌ͮ◌̕b; a◌֮◌̀◌ͮ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER V, LATIN SMALL LETTER B
+0061 036E 0315 0300 05AE 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062; # (a◌ͮ◌̕◌̀◌֮b; a◌֮◌ͮ◌̀◌̕b; a◌֮◌ͮ◌̀◌̕b; a◌֮◌ͮ◌̀◌̕b; a◌֮◌ͮ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER V, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 036F 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062; # (a◌̕◌̀◌֮◌ͯb; à◌֮◌ͯ◌̕b; a◌֮◌̀◌ͯ◌̕b; à◌֮◌ͯ◌̕b; a◌֮◌̀◌ͯ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LATIN SMALL LETTER X, LATIN SMALL LETTER B
+0061 036F 0315 0300 05AE 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062; # (a◌ͯ◌̕◌̀◌֮b; a◌֮◌ͯ◌̀◌̕b; a◌֮◌ͯ◌̀◌̕b; a◌֮◌ͯ◌̀◌̕b; a◌֮◌ͯ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER X, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0483 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062; # (a◌̕◌̀◌֮◌҃b; à◌֮◌҃◌̕b; a◌֮◌̀◌҃◌̕b; à◌֮◌҃◌̕b; a◌֮◌̀◌҃◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC TITLO, LATIN SMALL LETTER B
+0061 0483 0315 0300 05AE 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062; # (a◌҃◌̕◌̀◌֮b; a◌֮◌҃◌̀◌̕b; a◌֮◌҃◌̀◌̕b; a◌֮◌҃◌̀◌̕b; a◌֮◌҃◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC TITLO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0484 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062; # (a◌̕◌̀◌֮◌҄b; à◌֮◌҄◌̕b; a◌֮◌̀◌҄◌̕b; à◌֮◌҄◌̕b; a◌֮◌̀◌҄◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC PALATALIZATION, LATIN SMALL LETTER B
+0061 0484 0315 0300 05AE 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062; # (a◌҄◌̕◌̀◌֮b; a◌֮◌҄◌̀◌̕b; a◌֮◌҄◌̀◌̕b; a◌֮◌҄◌̀◌̕b; a◌֮◌҄◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC PALATALIZATION, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0485 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062; # (a◌̕◌̀◌֮◌҅b; à◌֮◌҅◌̕b; a◌֮◌̀◌҅◌̕b; à◌֮◌҅◌̕b; a◌֮◌̀◌҅◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC DASIA PNEUMATA, LATIN SMALL LETTER B
+0061 0485 0315 0300 05AE 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062; # (a◌҅◌̕◌̀◌֮b; a◌֮◌҅◌̀◌̕b; a◌֮◌҅◌̀◌̕b; a◌֮◌҅◌̀◌̕b; a◌֮◌҅◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC DASIA PNEUMATA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0486 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062; # (a◌̕◌̀◌֮◌҆b; à◌֮◌҆◌̕b; a◌֮◌̀◌҆◌̕b; à◌֮◌҆◌̕b; a◌֮◌̀◌҆◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC PSILI PNEUMATA, LATIN SMALL LETTER B
+0061 0486 0315 0300 05AE 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062; # (a◌҆◌̕◌̀◌֮b; a◌֮◌҆◌̀◌̕b; a◌֮◌҆◌̀◌̕b; a◌֮◌҆◌̀◌̕b; a◌֮◌҆◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC PSILI PNEUMATA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0591 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062; # (a◌֚◌̖◌〪◌֑b; a◌〪◌̖◌֑◌֚b; a◌〪◌̖◌֑◌֚b; a◌〪◌̖◌֑◌֚b; a◌〪◌̖◌֑◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT ETNAHTA, LATIN SMALL LETTER B
+0061 0591 059A 0316 302A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062; # (a◌֑◌֚◌̖◌〪b; a◌〪◌֑◌̖◌֚b; a◌〪◌֑◌̖◌֚b; a◌〪◌֑◌̖◌֚b; a◌〪◌֑◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT ETNAHTA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0592 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062; # (a◌̕◌̀◌֮◌֒b; à◌֮◌֒◌̕b; a◌֮◌̀◌֒◌̕b; à◌֮◌֒◌̕b; a◌֮◌̀◌֒◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT SEGOL, LATIN SMALL LETTER B
+0061 0592 0315 0300 05AE 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062; # (a◌֒◌̕◌̀◌֮b; a◌֮◌֒◌̀◌̕b; a◌֮◌֒◌̀◌̕b; a◌֮◌֒◌̀◌̕b; a◌֮◌֒◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT SEGOL, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0593 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062; # (a◌̕◌̀◌֮◌֓b; à◌֮◌֓◌̕b; a◌֮◌̀◌֓◌̕b; à◌֮◌֓◌̕b; a◌֮◌̀◌֓◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT SHALSHELET, LATIN SMALL LETTER B
+0061 0593 0315 0300 05AE 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062; # (a◌֓◌̕◌̀◌֮b; a◌֮◌֓◌̀◌̕b; a◌֮◌֓◌̀◌̕b; a◌֮◌֓◌̀◌̕b; a◌֮◌֓◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT SHALSHELET, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0594 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062; # (a◌̕◌̀◌֮◌֔b; à◌֮◌֔◌̕b; a◌֮◌̀◌֔◌̕b; à◌֮◌֔◌̕b; a◌֮◌̀◌֔◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT ZAQEF QATAN, LATIN SMALL LETTER B
+0061 0594 0315 0300 05AE 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062; # (a◌֔◌̕◌̀◌֮b; a◌֮◌֔◌̀◌̕b; a◌֮◌֔◌̀◌̕b; a◌֮◌֔◌̀◌̕b; a◌֮◌֔◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT ZAQEF QATAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0595 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062; # (a◌̕◌̀◌֮◌֕b; à◌֮◌֕◌̕b; a◌֮◌̀◌֕◌̕b; à◌֮◌֕◌̕b; a◌֮◌̀◌֕◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT ZAQEF GADOL, LATIN SMALL LETTER B
+0061 0595 0315 0300 05AE 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062; # (a◌֕◌̕◌̀◌֮b; a◌֮◌֕◌̀◌̕b; a◌֮◌֕◌̀◌̕b; a◌֮◌֕◌̀◌̕b; a◌֮◌֕◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT ZAQEF GADOL, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0596 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062; # (a◌֚◌̖◌〪◌֖b; a◌〪◌̖◌֖◌֚b; a◌〪◌̖◌֖◌֚b; a◌〪◌̖◌֖◌֚b; a◌〪◌̖◌֖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT TIPEHA, LATIN SMALL LETTER B
+0061 0596 059A 0316 302A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062; # (a◌֖◌֚◌̖◌〪b; a◌〪◌֖◌̖◌֚b; a◌〪◌֖◌̖◌֚b; a◌〪◌֖◌̖◌֚b; a◌〪◌֖◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT TIPEHA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0597 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062; # (a◌̕◌̀◌֮◌֗b; à◌֮◌֗◌̕b; a◌֮◌̀◌֗◌̕b; à◌֮◌֗◌̕b; a◌֮◌̀◌֗◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT REVIA, LATIN SMALL LETTER B
+0061 0597 0315 0300 05AE 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062; # (a◌֗◌̕◌̀◌֮b; a◌֮◌֗◌̀◌̕b; a◌֮◌֗◌̀◌̕b; a◌֮◌֗◌̀◌̕b; a◌֮◌֗◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT REVIA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0598 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062; # (a◌̕◌̀◌֮◌֘b; à◌֮◌֘◌̕b; a◌֮◌̀◌֘◌̕b; à◌֮◌֘◌̕b; a◌֮◌̀◌֘◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT ZARQA, LATIN SMALL LETTER B
+0061 0598 0315 0300 05AE 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062; # (a◌֘◌̕◌̀◌֮b; a◌֮◌֘◌̀◌̕b; a◌֮◌֘◌̀◌̕b; a◌֮◌֘◌̀◌̕b; a◌֮◌֘◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT ZARQA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0599 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062; # (a◌̕◌̀◌֮◌֙b; à◌֮◌֙◌̕b; a◌֮◌̀◌֙◌̕b; à◌֮◌֙◌̕b; a◌֮◌̀◌֙◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT PASHTA, LATIN SMALL LETTER B
+0061 0599 0315 0300 05AE 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062; # (a◌֙◌̕◌̀◌֮b; a◌֮◌֙◌̀◌̕b; a◌֮◌֙◌̀◌̕b; a◌֮◌֙◌̀◌̕b; a◌֮◌֙◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT PASHTA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 302E 059A 0316 059A 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062; # (a◌〮◌֚◌̖◌֚b; a◌̖◌֚◌֚◌〮b; a◌̖◌֚◌֚◌〮b; a◌̖◌֚◌֚◌〮b; a◌̖◌֚◌֚◌〮b; ) LATIN SMALL LETTER A, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, HEBREW ACCENT YETIV, LATIN SMALL LETTER B
+0061 059A 302E 059A 0316 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062; # (a◌֚◌〮◌֚◌̖b; a◌̖◌֚◌֚◌〮b; a◌̖◌֚◌֚◌〮b; a◌̖◌֚◌֚◌〮b; a◌̖◌֚◌֚◌〮b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, LATIN SMALL LETTER B
+0061 059A 0316 302A 059B 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062; # (a◌֚◌̖◌〪◌֛b; a◌〪◌̖◌֛◌֚b; a◌〪◌̖◌֛◌֚b; a◌〪◌̖◌֛◌֚b; a◌〪◌̖◌֛◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT TEVIR, LATIN SMALL LETTER B
+0061 059B 059A 0316 302A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062; # (a◌֛◌֚◌̖◌〪b; a◌〪◌֛◌̖◌֚b; a◌〪◌֛◌̖◌֚b; a◌〪◌֛◌̖◌֚b; a◌〪◌֛◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT TEVIR, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 059C 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062; # (a◌̕◌̀◌֮◌֜b; à◌֮◌֜◌̕b; a◌֮◌̀◌֜◌̕b; à◌֮◌֜◌̕b; a◌֮◌̀◌֜◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT GERESH, LATIN SMALL LETTER B
+0061 059C 0315 0300 05AE 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062; # (a◌֜◌̕◌̀◌֮b; a◌֮◌֜◌̀◌̕b; a◌֮◌֜◌̀◌̕b; a◌֮◌֜◌̀◌̕b; a◌֮◌֜◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT GERESH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 059D 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062; # (a◌̕◌̀◌֮◌Öb; à◌֮◌Ö◌̕b; a◌֮◌̀◌Ö◌̕b; à◌֮◌Ö◌̕b; a◌֮◌̀◌Ö◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT GERESH MUQDAM, LATIN SMALL LETTER B
+0061 059D 0315 0300 05AE 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062; # (aâ—ŒÖ◌̕◌̀◌֮b; a◌֮◌Ö◌̀◌̕b; a◌֮◌Ö◌̀◌̕b; a◌֮◌Ö◌̀◌̕b; a◌֮◌Ö◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT GERESH MUQDAM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 059E 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062; # (a◌̕◌̀◌֮◌֞b; à◌֮◌֞◌̕b; a◌֮◌̀◌֞◌̕b; à◌֮◌֞◌̕b; a◌֮◌̀◌֞◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT GERSHAYIM, LATIN SMALL LETTER B
+0061 059E 0315 0300 05AE 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062; # (a◌֞◌̕◌̀◌֮b; a◌֮◌֞◌̀◌̕b; a◌֮◌֞◌̀◌̕b; a◌֮◌֞◌̀◌̕b; a◌֮◌֞◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT GERSHAYIM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 059F 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062; # (a◌̕◌̀◌֮◌֟b; à◌֮◌֟◌̕b; a◌֮◌̀◌֟◌̕b; à◌֮◌֟◌̕b; a◌֮◌̀◌֟◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT QARNEY PARA, LATIN SMALL LETTER B
+0061 059F 0315 0300 05AE 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062; # (a◌֟◌̕◌̀◌֮b; a◌֮◌֟◌̀◌̕b; a◌֮◌֟◌̀◌̕b; a◌֮◌֟◌̀◌̕b; a◌֮◌֟◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT QARNEY PARA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05A0 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062; # (a◌̕◌̀◌֮◌֠b; à◌֮◌֠◌̕b; a◌֮◌̀◌֠◌̕b; à◌֮◌֠◌̕b; a◌֮◌̀◌֠◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT TELISHA GEDOLA, LATIN SMALL LETTER B
+0061 05A0 0315 0300 05AE 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062; # (a◌֠◌̕◌̀◌֮b; a◌֮◌֠◌̀◌̕b; a◌֮◌֠◌̀◌̕b; a◌֮◌֠◌̀◌̕b; a◌֮◌֠◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT TELISHA GEDOLA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05A1 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062; # (a◌̕◌̀◌֮◌֡b; à◌֮◌֡◌̕b; a◌֮◌̀◌֡◌̕b; à◌֮◌֡◌̕b; a◌֮◌̀◌֡◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT PAZER, LATIN SMALL LETTER B
+0061 05A1 0315 0300 05AE 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062; # (a◌֡◌̕◌̀◌֮b; a◌֮◌֡◌̀◌̕b; a◌֮◌֡◌̀◌̕b; a◌֮◌֡◌̀◌̕b; a◌֮◌֡◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT PAZER, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 05A2 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062; # (a◌֚◌̖◌〪◌֢b; a◌〪◌̖◌֢◌֚b; a◌〪◌̖◌֢◌֚b; a◌〪◌̖◌֢◌֚b; a◌〪◌̖◌֢◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT ATNAH HAFUKH, LATIN SMALL LETTER B
+0061 05A2 059A 0316 302A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062; # (a◌֢◌֚◌̖◌〪b; a◌〪◌֢◌̖◌֚b; a◌〪◌֢◌̖◌֚b; a◌〪◌֢◌̖◌֚b; a◌〪◌֢◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT ATNAH HAFUKH, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 05A3 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062; # (a◌֚◌̖◌〪◌֣b; a◌〪◌̖◌֣◌֚b; a◌〪◌̖◌֣◌֚b; a◌〪◌̖◌֣◌֚b; a◌〪◌̖◌֣◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT MUNAH, LATIN SMALL LETTER B
+0061 05A3 059A 0316 302A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062; # (a◌֣◌֚◌̖◌〪b; a◌〪◌֣◌̖◌֚b; a◌〪◌֣◌̖◌֚b; a◌〪◌֣◌̖◌֚b; a◌〪◌֣◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT MUNAH, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 05A4 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062; # (a◌֚◌̖◌〪◌֤b; a◌〪◌̖◌֤◌֚b; a◌〪◌̖◌֤◌֚b; a◌〪◌̖◌֤◌֚b; a◌〪◌̖◌֤◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT MAHAPAKH, LATIN SMALL LETTER B
+0061 05A4 059A 0316 302A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062; # (a◌֤◌֚◌̖◌〪b; a◌〪◌֤◌̖◌֚b; a◌〪◌֤◌̖◌֚b; a◌〪◌֤◌̖◌֚b; a◌〪◌֤◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT MAHAPAKH, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 05A5 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062; # (a◌֚◌̖◌〪◌֥b; a◌〪◌̖◌֥◌֚b; a◌〪◌̖◌֥◌֚b; a◌〪◌̖◌֥◌֚b; a◌〪◌̖◌֥◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT MERKHA, LATIN SMALL LETTER B
+0061 05A5 059A 0316 302A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062; # (a◌֥◌֚◌̖◌〪b; a◌〪◌֥◌̖◌֚b; a◌〪◌֥◌̖◌֚b; a◌〪◌֥◌̖◌֚b; a◌〪◌֥◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT MERKHA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 05A6 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062; # (a◌֚◌̖◌〪◌֦b; a◌〪◌̖◌֦◌֚b; a◌〪◌̖◌֦◌֚b; a◌〪◌̖◌֦◌֚b; a◌〪◌̖◌֦◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT MERKHA KEFULA, LATIN SMALL LETTER B
+0061 05A6 059A 0316 302A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062; # (a◌֦◌֚◌̖◌〪b; a◌〪◌֦◌̖◌֚b; a◌〪◌֦◌̖◌֚b; a◌〪◌֦◌̖◌֚b; a◌〪◌֦◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT MERKHA KEFULA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 05A7 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062; # (a◌֚◌̖◌〪◌֧b; a◌〪◌̖◌֧◌֚b; a◌〪◌̖◌֧◌֚b; a◌〪◌̖◌֧◌֚b; a◌〪◌̖◌֧◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT DARGA, LATIN SMALL LETTER B
+0061 05A7 059A 0316 302A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062; # (a◌֧◌֚◌̖◌〪b; a◌〪◌֧◌̖◌֚b; a◌〪◌֧◌̖◌֚b; a◌〪◌֧◌̖◌֚b; a◌〪◌֧◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT DARGA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05A8 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062; # (a◌̕◌̀◌֮◌֨b; à◌֮◌֨◌̕b; a◌֮◌̀◌֨◌̕b; à◌֮◌֨◌̕b; a◌֮◌̀◌֨◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT QADMA, LATIN SMALL LETTER B
+0061 05A8 0315 0300 05AE 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062; # (a◌֨◌̕◌̀◌֮b; a◌֮◌֨◌̀◌̕b; a◌֮◌֨◌̀◌̕b; a◌֮◌֨◌̀◌̕b; a◌֮◌֨◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT QADMA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05A9 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062; # (a◌̕◌̀◌֮◌֩b; à◌֮◌֩◌̕b; a◌֮◌̀◌֩◌̕b; à◌֮◌֩◌̕b; a◌֮◌̀◌֩◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT TELISHA QETANA, LATIN SMALL LETTER B
+0061 05A9 0315 0300 05AE 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062; # (a◌֩◌̕◌̀◌֮b; a◌֮◌֩◌̀◌̕b; a◌֮◌֩◌̀◌̕b; a◌֮◌֩◌̀◌̕b; a◌֮◌֩◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT TELISHA QETANA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 05AA 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062; # (a◌֚◌̖◌〪◌֪b; a◌〪◌̖◌֪◌֚b; a◌〪◌̖◌֪◌֚b; a◌〪◌̖◌֪◌֚b; a◌〪◌̖◌֪◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW ACCENT YERAH BEN YOMO, LATIN SMALL LETTER B
+0061 05AA 059A 0316 302A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062; # (a◌֪◌֚◌̖◌〪b; a◌〪◌֪◌̖◌֚b; a◌〪◌֪◌̖◌֚b; a◌〪◌֪◌̖◌֚b; a◌〪◌֪◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YERAH BEN YOMO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05AB 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062; # (a◌̕◌̀◌֮◌֫b; à◌֮◌֫◌̕b; a◌֮◌̀◌֫◌̕b; à◌֮◌֫◌̕b; a◌֮◌̀◌֫◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT OLE, LATIN SMALL LETTER B
+0061 05AB 0315 0300 05AE 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062; # (a◌֫◌̕◌̀◌֮b; a◌֮◌֫◌̀◌̕b; a◌֮◌֫◌̀◌̕b; a◌֮◌֫◌̀◌̕b; a◌֮◌֫◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT OLE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05AC 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062; # (a◌̕◌̀◌֮◌֬b; à◌֮◌֬◌̕b; a◌֮◌̀◌֬◌̕b; à◌֮◌֬◌̕b; a◌֮◌̀◌֬◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW ACCENT ILUY, LATIN SMALL LETTER B
+0061 05AC 0315 0300 05AE 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062; # (a◌֬◌̕◌̀◌֮b; a◌֮◌֬◌̀◌̕b; a◌֮◌֬◌̀◌̕b; a◌֮◌֬◌̀◌̕b; a◌֮◌֬◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW ACCENT ILUY, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 302E 059A 0316 05AD 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062; # (a◌〮◌֚◌̖◌֭b; a◌̖◌֚◌֭◌〮b; a◌̖◌֚◌֭◌〮b; a◌̖◌֚◌֭◌〮b; a◌̖◌֚◌֭◌〮b; ) LATIN SMALL LETTER A, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, HEBREW ACCENT DEHI, LATIN SMALL LETTER B
+0061 05AD 302E 059A 0316 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062; # (a◌֭◌〮◌֚◌̖b; a◌̖◌֭◌֚◌〮b; a◌̖◌֭◌֚◌〮b; a◌̖◌֭◌֚◌〮b; a◌̖◌֭◌֚◌〮b; ) LATIN SMALL LETTER A, HEBREW ACCENT DEHI, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, LATIN SMALL LETTER B
+0061 0300 05AE 1D16D 05AE 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062; # (a◌̀◌֮ð…­â—ŒÖ®b; àð…­â—ŒÖ®â—ŒÖ®b; að…­â—ŒÖ®â—ŒÖ®â—ŒÌ€b; àð…­â—ŒÖ®â—ŒÖ®b; að…­â—ŒÖ®â—ŒÖ®â—ŒÌ€b; ) LATIN SMALL LETTER A, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05AE 0300 05AE 1D16D 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062; # (a◌֮◌̀◌֮ð…­b; àð…­â—ŒÖ®â—ŒÖ®b; að…­â—ŒÖ®â—ŒÖ®â—ŒÌ€b; àð…­â—ŒÖ®â—ŒÖ®b; að…­â—ŒÖ®â—ŒÖ®â—ŒÌ€b; ) LATIN SMALL LETTER A, HEBREW ACCENT ZINOR, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05AF 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062; # (a◌̕◌̀◌֮◌֯b; à◌֮◌֯◌̕b; a◌֮◌̀◌֯◌̕b; à◌֮◌֯◌̕b; a◌֮◌̀◌֯◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW MARK MASORA CIRCLE, LATIN SMALL LETTER B
+0061 05AF 0315 0300 05AE 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062; # (a◌֯◌̕◌̀◌֮b; a◌֮◌֯◌̀◌̕b; a◌֮◌֯◌̀◌̕b; a◌֮◌֯◌̀◌̕b; a◌֮◌֯◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW MARK MASORA CIRCLE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05B1 05B0 094D 05B0 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062; # (a◌ֱ◌ְ◌à¥â—ŒÖ°b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; ) LATIN SMALL LETTER A, HEBREW POINT HATAF SEGOL, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, HEBREW POINT SHEVA, LATIN SMALL LETTER B
+0061 05B0 05B1 05B0 094D 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062; # (a◌ְ◌ֱ◌ְ◌à¥b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; aâ—Œà¥â—ŒÖ°â—ŒÖ°â—ŒÖ±b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, HEBREW POINT HATAF SEGOL, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 05B2 05B1 05B0 05B1 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062; # (a◌ֲ◌ֱ◌ְ◌ֱb; a◌ְ◌ֱ◌ֱ◌ֲb; a◌ְ◌ֱ◌ֱ◌ֲb; a◌ְ◌ֱ◌ֱ◌ֲb; a◌ְ◌ֱ◌ֱ◌ֲb; ) LATIN SMALL LETTER A, HEBREW POINT HATAF PATAH, HEBREW POINT HATAF SEGOL, HEBREW POINT SHEVA, HEBREW POINT HATAF SEGOL, LATIN SMALL LETTER B
+0061 05B1 05B2 05B1 05B0 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062; # (a◌ֱ◌ֲ◌ֱ◌ְb; a◌ְ◌ֱ◌ֱ◌ֲb; a◌ְ◌ֱ◌ֱ◌ֲb; a◌ְ◌ֱ◌ֱ◌ֲb; a◌ְ◌ֱ◌ֱ◌ֲb; ) LATIN SMALL LETTER A, HEBREW POINT HATAF SEGOL, HEBREW POINT HATAF PATAH, HEBREW POINT HATAF SEGOL, HEBREW POINT SHEVA, LATIN SMALL LETTER B
+0061 05B3 05B2 05B1 05B2 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062; # (a◌ֳ◌ֲ◌ֱ◌ֲb; a◌ֱ◌ֲ◌ֲ◌ֳb; a◌ֱ◌ֲ◌ֲ◌ֳb; a◌ֱ◌ֲ◌ֲ◌ֳb; a◌ֱ◌ֲ◌ֲ◌ֳb; ) LATIN SMALL LETTER A, HEBREW POINT HATAF QAMATS, HEBREW POINT HATAF PATAH, HEBREW POINT HATAF SEGOL, HEBREW POINT HATAF PATAH, LATIN SMALL LETTER B
+0061 05B2 05B3 05B2 05B1 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062; # (a◌ֲ◌ֳ◌ֲ◌ֱb; a◌ֱ◌ֲ◌ֲ◌ֳb; a◌ֱ◌ֲ◌ֲ◌ֳb; a◌ֱ◌ֲ◌ֲ◌ֳb; a◌ֱ◌ֲ◌ֲ◌ֳb; ) LATIN SMALL LETTER A, HEBREW POINT HATAF PATAH, HEBREW POINT HATAF QAMATS, HEBREW POINT HATAF PATAH, HEBREW POINT HATAF SEGOL, LATIN SMALL LETTER B
+0061 05B4 05B3 05B2 05B3 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062; # (a◌ִ◌ֳ◌ֲ◌ֳb; a◌ֲ◌ֳ◌ֳ◌ִb; a◌ֲ◌ֳ◌ֳ◌ִb; a◌ֲ◌ֳ◌ֳ◌ִb; a◌ֲ◌ֳ◌ֳ◌ִb; ) LATIN SMALL LETTER A, HEBREW POINT HIRIQ, HEBREW POINT HATAF QAMATS, HEBREW POINT HATAF PATAH, HEBREW POINT HATAF QAMATS, LATIN SMALL LETTER B
+0061 05B3 05B4 05B3 05B2 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062; # (a◌ֳ◌ִ◌ֳ◌ֲb; a◌ֲ◌ֳ◌ֳ◌ִb; a◌ֲ◌ֳ◌ֳ◌ִb; a◌ֲ◌ֳ◌ֳ◌ִb; a◌ֲ◌ֳ◌ֳ◌ִb; ) LATIN SMALL LETTER A, HEBREW POINT HATAF QAMATS, HEBREW POINT HIRIQ, HEBREW POINT HATAF QAMATS, HEBREW POINT HATAF PATAH, LATIN SMALL LETTER B
+0061 05B5 05B4 05B3 05B4 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062; # (a◌ֵ◌ִ◌ֳ◌ִb; a◌ֳ◌ִ◌ִ◌ֵb; a◌ֳ◌ִ◌ִ◌ֵb; a◌ֳ◌ִ◌ִ◌ֵb; a◌ֳ◌ִ◌ִ◌ֵb; ) LATIN SMALL LETTER A, HEBREW POINT TSERE, HEBREW POINT HIRIQ, HEBREW POINT HATAF QAMATS, HEBREW POINT HIRIQ, LATIN SMALL LETTER B
+0061 05B4 05B5 05B4 05B3 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062; # (a◌ִ◌ֵ◌ִ◌ֳb; a◌ֳ◌ִ◌ִ◌ֵb; a◌ֳ◌ִ◌ִ◌ֵb; a◌ֳ◌ִ◌ִ◌ֵb; a◌ֳ◌ִ◌ִ◌ֵb; ) LATIN SMALL LETTER A, HEBREW POINT HIRIQ, HEBREW POINT TSERE, HEBREW POINT HIRIQ, HEBREW POINT HATAF QAMATS, LATIN SMALL LETTER B
+0061 05B6 05B5 05B4 05B5 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062; # (a◌ֶ◌ֵ◌ִ◌ֵb; a◌ִ◌ֵ◌ֵ◌ֶb; a◌ִ◌ֵ◌ֵ◌ֶb; a◌ִ◌ֵ◌ֵ◌ֶb; a◌ִ◌ֵ◌ֵ◌ֶb; ) LATIN SMALL LETTER A, HEBREW POINT SEGOL, HEBREW POINT TSERE, HEBREW POINT HIRIQ, HEBREW POINT TSERE, LATIN SMALL LETTER B
+0061 05B5 05B6 05B5 05B4 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062; # (a◌ֵ◌ֶ◌ֵ◌ִb; a◌ִ◌ֵ◌ֵ◌ֶb; a◌ִ◌ֵ◌ֵ◌ֶb; a◌ִ◌ֵ◌ֵ◌ֶb; a◌ִ◌ֵ◌ֵ◌ֶb; ) LATIN SMALL LETTER A, HEBREW POINT TSERE, HEBREW POINT SEGOL, HEBREW POINT TSERE, HEBREW POINT HIRIQ, LATIN SMALL LETTER B
+0061 05B7 05B6 05B5 05B6 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062; # (a◌ַ◌ֶ◌ֵ◌ֶb; a◌ֵ◌ֶ◌ֶ◌ַb; a◌ֵ◌ֶ◌ֶ◌ַb; a◌ֵ◌ֶ◌ֶ◌ַb; a◌ֵ◌ֶ◌ֶ◌ַb; ) LATIN SMALL LETTER A, HEBREW POINT PATAH, HEBREW POINT SEGOL, HEBREW POINT TSERE, HEBREW POINT SEGOL, LATIN SMALL LETTER B
+0061 05B6 05B7 05B6 05B5 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062; # (a◌ֶ◌ַ◌ֶ◌ֵb; a◌ֵ◌ֶ◌ֶ◌ַb; a◌ֵ◌ֶ◌ֶ◌ַb; a◌ֵ◌ֶ◌ֶ◌ַb; a◌ֵ◌ֶ◌ֶ◌ַb; ) LATIN SMALL LETTER A, HEBREW POINT SEGOL, HEBREW POINT PATAH, HEBREW POINT SEGOL, HEBREW POINT TSERE, LATIN SMALL LETTER B
+0061 05B8 05B7 05B6 05B7 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062; # (a◌ָ◌ַ◌ֶ◌ַb; a◌ֶ◌ַ◌ַ◌ָb; a◌ֶ◌ַ◌ַ◌ָb; a◌ֶ◌ַ◌ַ◌ָb; a◌ֶ◌ַ◌ַ◌ָb; ) LATIN SMALL LETTER A, HEBREW POINT QAMATS, HEBREW POINT PATAH, HEBREW POINT SEGOL, HEBREW POINT PATAH, LATIN SMALL LETTER B
+0061 05B7 05B8 05B7 05B6 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062; # (a◌ַ◌ָ◌ַ◌ֶb; a◌ֶ◌ַ◌ַ◌ָb; a◌ֶ◌ַ◌ַ◌ָb; a◌ֶ◌ַ◌ַ◌ָb; a◌ֶ◌ַ◌ַ◌ָb; ) LATIN SMALL LETTER A, HEBREW POINT PATAH, HEBREW POINT QAMATS, HEBREW POINT PATAH, HEBREW POINT SEGOL, LATIN SMALL LETTER B
+0061 05B9 05B8 05B7 05B8 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062; # (a◌ֹ◌ָ◌ַ◌ָb; a◌ַ◌ָ◌ָ◌ֹb; a◌ַ◌ָ◌ָ◌ֹb; a◌ַ◌ָ◌ָ◌ֹb; a◌ַ◌ָ◌ָ◌ֹb; ) LATIN SMALL LETTER A, HEBREW POINT HOLAM, HEBREW POINT QAMATS, HEBREW POINT PATAH, HEBREW POINT QAMATS, LATIN SMALL LETTER B
+0061 05B8 05B9 05B8 05B7 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062; # (a◌ָ◌ֹ◌ָ◌ַb; a◌ַ◌ָ◌ָ◌ֹb; a◌ַ◌ָ◌ָ◌ֹb; a◌ַ◌ָ◌ָ◌ֹb; a◌ַ◌ָ◌ָ◌ֹb; ) LATIN SMALL LETTER A, HEBREW POINT QAMATS, HEBREW POINT HOLAM, HEBREW POINT QAMATS, HEBREW POINT PATAH, LATIN SMALL LETTER B
+0061 05BB 05B9 05B8 05B9 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062; # (a◌ֻ◌ֹ◌ָ◌ֹb; a◌ָ◌ֹ◌ֹ◌ֻb; a◌ָ◌ֹ◌ֹ◌ֻb; a◌ָ◌ֹ◌ֹ◌ֻb; a◌ָ◌ֹ◌ֹ◌ֻb; ) LATIN SMALL LETTER A, HEBREW POINT QUBUTS, HEBREW POINT HOLAM, HEBREW POINT QAMATS, HEBREW POINT HOLAM, LATIN SMALL LETTER B
+0061 05B9 05BB 05B9 05B8 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062; # (a◌ֹ◌ֻ◌ֹ◌ָb; a◌ָ◌ֹ◌ֹ◌ֻb; a◌ָ◌ֹ◌ֹ◌ֻb; a◌ָ◌ֹ◌ֹ◌ֻb; a◌ָ◌ֹ◌ֹ◌ֻb; ) LATIN SMALL LETTER A, HEBREW POINT HOLAM, HEBREW POINT QUBUTS, HEBREW POINT HOLAM, HEBREW POINT QAMATS, LATIN SMALL LETTER B
+0061 05BB 05B9 05B8 05BA 0062;0061 05B8 05B9 05BA 05BB 0062;0061 05B8 05B9 05BA 05BB 0062;0061 05B8 05B9 05BA 05BB 0062;0061 05B8 05B9 05BA 05BB 0062; # (a◌ֻ◌ֹ◌ָ◌ֺb; a◌ָ◌ֹ◌ֺ◌ֻb; a◌ָ◌ֹ◌ֺ◌ֻb; a◌ָ◌ֹ◌ֺ◌ֻb; a◌ָ◌ֹ◌ֺ◌ֻb; ) LATIN SMALL LETTER A, HEBREW POINT QUBUTS, HEBREW POINT HOLAM, HEBREW POINT QAMATS, HEBREW POINT HOLAM HASER FOR VAV, LATIN SMALL LETTER B
+0061 05BA 05BB 05B9 05B8 0062;0061 05B8 05BA 05B9 05BB 0062;0061 05B8 05BA 05B9 05BB 0062;0061 05B8 05BA 05B9 05BB 0062;0061 05B8 05BA 05B9 05BB 0062; # (a◌ֺ◌ֻ◌ֹ◌ָb; a◌ָ◌ֺ◌ֹ◌ֻb; a◌ָ◌ֺ◌ֹ◌ֻb; a◌ָ◌ֺ◌ֹ◌ֻb; a◌ָ◌ֺ◌ֹ◌ֻb; ) LATIN SMALL LETTER A, HEBREW POINT HOLAM HASER FOR VAV, HEBREW POINT QUBUTS, HEBREW POINT HOLAM, HEBREW POINT QAMATS, LATIN SMALL LETTER B
+0061 05BC 05BB 05B9 05BB 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062; # (a◌ּ◌ֻ◌ֹ◌ֻb; a◌ֹ◌ֻ◌ֻ◌ּb; a◌ֹ◌ֻ◌ֻ◌ּb; a◌ֹ◌ֻ◌ֻ◌ּb; a◌ֹ◌ֻ◌ֻ◌ּb; ) LATIN SMALL LETTER A, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT QUBUTS, HEBREW POINT HOLAM, HEBREW POINT QUBUTS, LATIN SMALL LETTER B
+0061 05BB 05BC 05BB 05B9 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062; # (a◌ֻ◌ּ◌ֻ◌ֹb; a◌ֹ◌ֻ◌ֻ◌ּb; a◌ֹ◌ֻ◌ֻ◌ּb; a◌ֹ◌ֻ◌ֻ◌ּb; a◌ֹ◌ֻ◌ֻ◌ּb; ) LATIN SMALL LETTER A, HEBREW POINT QUBUTS, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT QUBUTS, HEBREW POINT HOLAM, LATIN SMALL LETTER B
+0061 05BD 05BC 05BB 05BC 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062; # (a◌ֽ◌ּ◌ֻ◌ּb; a◌ֻ◌ּ◌ּ◌ֽb; a◌ֻ◌ּ◌ּ◌ֽb; a◌ֻ◌ּ◌ּ◌ֽb; a◌ֻ◌ּ◌ּ◌ֽb; ) LATIN SMALL LETTER A, HEBREW POINT METEG, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT QUBUTS, HEBREW POINT DAGESH OR MAPIQ, LATIN SMALL LETTER B
+0061 05BC 05BD 05BC 05BB 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062; # (a◌ּ◌ֽ◌ּ◌ֻb; a◌ֻ◌ּ◌ּ◌ֽb; a◌ֻ◌ּ◌ּ◌ֽb; a◌ֻ◌ּ◌ּ◌ֽb; a◌ֻ◌ּ◌ּ◌ֽb; ) LATIN SMALL LETTER A, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT METEG, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT QUBUTS, LATIN SMALL LETTER B
+0061 05BF 05BD 05BC 05BD 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062; # (a◌ֿ◌ֽ◌ּ◌ֽb; a◌ּ◌ֽ◌ֽ◌ֿb; a◌ּ◌ֽ◌ֽ◌ֿb; a◌ּ◌ֽ◌ֽ◌ֿb; a◌ּ◌ֽ◌ֽ◌ֿb; ) LATIN SMALL LETTER A, HEBREW POINT RAFE, HEBREW POINT METEG, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT METEG, LATIN SMALL LETTER B
+0061 05BD 05BF 05BD 05BC 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062; # (a◌ֽ◌ֿ◌ֽ◌ּb; a◌ּ◌ֽ◌ֽ◌ֿb; a◌ּ◌ֽ◌ֽ◌ֿb; a◌ּ◌ֽ◌ֽ◌ֿb; a◌ּ◌ֽ◌ֽ◌ֿb; ) LATIN SMALL LETTER A, HEBREW POINT METEG, HEBREW POINT RAFE, HEBREW POINT METEG, HEBREW POINT DAGESH OR MAPIQ, LATIN SMALL LETTER B
+0061 05C1 05BF 05BD 05BF 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062; # (aâ—Œ×◌ֿ◌ֽ◌ֿb; a◌ֽ◌ֿ◌ֿ◌×b; a◌ֽ◌ֿ◌ֿ◌×b; a◌ֽ◌ֿ◌ֿ◌×b; a◌ֽ◌ֿ◌ֿ◌×b; ) LATIN SMALL LETTER A, HEBREW POINT SHIN DOT, HEBREW POINT RAFE, HEBREW POINT METEG, HEBREW POINT RAFE, LATIN SMALL LETTER B
+0061 05BF 05C1 05BF 05BD 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062; # (a◌ֿ◌×◌ֿ◌ֽb; a◌ֽ◌ֿ◌ֿ◌×b; a◌ֽ◌ֿ◌ֿ◌×b; a◌ֽ◌ֿ◌ֿ◌×b; a◌ֽ◌ֿ◌ֿ◌×b; ) LATIN SMALL LETTER A, HEBREW POINT RAFE, HEBREW POINT SHIN DOT, HEBREW POINT RAFE, HEBREW POINT METEG, LATIN SMALL LETTER B
+0061 05C2 05C1 05BF 05C1 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062; # (a◌ׂ◌×◌ֿ◌×b; a◌ֿ◌×â—Œ×◌ׂb; a◌ֿ◌×â—Œ×◌ׂb; a◌ֿ◌×â—Œ×◌ׂb; a◌ֿ◌×â—Œ×◌ׂb; ) LATIN SMALL LETTER A, HEBREW POINT SIN DOT, HEBREW POINT SHIN DOT, HEBREW POINT RAFE, HEBREW POINT SHIN DOT, LATIN SMALL LETTER B
+0061 05C1 05C2 05C1 05BF 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062; # (aâ—Œ×◌ׂ◌×◌ֿb; a◌ֿ◌×â—Œ×◌ׂb; a◌ֿ◌×â—Œ×◌ׂb; a◌ֿ◌×â—Œ×◌ׂb; a◌ֿ◌×â—Œ×◌ׂb; ) LATIN SMALL LETTER A, HEBREW POINT SHIN DOT, HEBREW POINT SIN DOT, HEBREW POINT SHIN DOT, HEBREW POINT RAFE, LATIN SMALL LETTER B
+0061 FB1E 05C2 05C1 05C2 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062; # (a◌ﬞ◌ׂ◌×◌ׂb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; ) LATIN SMALL LETTER A, HEBREW POINT JUDEO-SPANISH VARIKA, HEBREW POINT SIN DOT, HEBREW POINT SHIN DOT, HEBREW POINT SIN DOT, LATIN SMALL LETTER B
+0061 05C2 FB1E 05C2 05C1 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062; # (a◌ׂ◌ﬞ◌ׂ◌×b; aâ—Œ×◌ׂ◌ׂ◌ﬞb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; aâ—Œ×◌ׂ◌ׂ◌ﬞb; ) LATIN SMALL LETTER A, HEBREW POINT SIN DOT, HEBREW POINT JUDEO-SPANISH VARIKA, HEBREW POINT SIN DOT, HEBREW POINT SHIN DOT, LATIN SMALL LETTER B
+0061 0315 0300 05AE 05C4 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062; # (a◌̕◌̀◌֮◌ׄb; à◌֮◌ׄ◌̕b; a◌֮◌̀◌ׄ◌̕b; à◌֮◌ׄ◌̕b; a◌֮◌̀◌ׄ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, HEBREW MARK UPPER DOT, LATIN SMALL LETTER B
+0061 05C4 0315 0300 05AE 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062; # (a◌ׄ◌̕◌̀◌֮b; a◌֮◌ׄ◌̀◌̕b; a◌֮◌ׄ◌̀◌̕b; a◌֮◌ׄ◌̀◌̕b; a◌֮◌ׄ◌̀◌̕b; ) LATIN SMALL LETTER A, HEBREW MARK UPPER DOT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 05C5 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062; # (a◌֚◌̖◌〪◌ׅb; a◌〪◌̖◌ׅ◌֚b; a◌〪◌̖◌ׅ◌֚b; a◌〪◌̖◌ׅ◌֚b; a◌〪◌̖◌ׅ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, HEBREW MARK LOWER DOT, LATIN SMALL LETTER B
+0061 05C5 059A 0316 302A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062; # (a◌ׅ◌֚◌̖◌〪b; a◌〪◌ׅ◌̖◌֚b; a◌〪◌ׅ◌̖◌֚b; a◌〪◌ׅ◌̖◌֚b; a◌〪◌ׅ◌̖◌֚b; ) LATIN SMALL LETTER A, HEBREW MARK LOWER DOT, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 05B9 05B8 05B7 05C7 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062; # (a◌ֹ◌ָ◌ַ◌ׇb; a◌ַ◌ָ◌ׇ◌ֹb; a◌ַ◌ָ◌ׇ◌ֹb; a◌ַ◌ָ◌ׇ◌ֹb; a◌ַ◌ָ◌ׇ◌ֹb; ) LATIN SMALL LETTER A, HEBREW POINT HOLAM, HEBREW POINT QAMATS, HEBREW POINT PATAH, HEBREW POINT QAMATS QATAN, LATIN SMALL LETTER B
+0061 05C7 05B9 05B8 05B7 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062; # (a◌ׇ◌ֹ◌ָ◌ַb; a◌ַ◌ׇ◌ָ◌ֹb; a◌ַ◌ׇ◌ָ◌ֹb; a◌ַ◌ׇ◌ָ◌ֹb; a◌ַ◌ׇ◌ָ◌ֹb; ) LATIN SMALL LETTER A, HEBREW POINT QAMATS QATAN, HEBREW POINT HOLAM, HEBREW POINT QAMATS, HEBREW POINT PATAH, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0610 0062;00E0 05AE 0610 0315 0062;0061 05AE 0300 0610 0315 0062;00E0 05AE 0610 0315 0062;0061 05AE 0300 0610 0315 0062; # (a◌̕◌̀◌֮◌Øb; à◌֮◌Ø◌̕b; a◌֮◌̀◌Ø◌̕b; à◌֮◌Ø◌̕b; a◌֮◌̀◌Ø◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM, LATIN SMALL LETTER B
+0061 0610 0315 0300 05AE 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062; # (aâ—ŒØ◌̕◌̀◌֮b; a◌֮◌Ø◌̀◌̕b; a◌֮◌Ø◌̀◌̕b; a◌֮◌Ø◌̀◌̕b; a◌֮◌Ø◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0611 0062;00E0 05AE 0611 0315 0062;0061 05AE 0300 0611 0315 0062;00E0 05AE 0611 0315 0062;0061 05AE 0300 0611 0315 0062; # (a◌̕◌̀◌֮◌ؑb; à◌֮◌ؑ◌̕b; a◌֮◌̀◌ؑ◌̕b; à◌֮◌ؑ◌̕b; a◌֮◌̀◌ؑ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SIGN ALAYHE ASSALLAM, LATIN SMALL LETTER B
+0061 0611 0315 0300 05AE 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062; # (a◌ؑ◌̕◌̀◌֮b; a◌֮◌ؑ◌̀◌̕b; a◌֮◌ؑ◌̀◌̕b; a◌֮◌ؑ◌̀◌̕b; a◌֮◌ؑ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SIGN ALAYHE ASSALLAM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0612 0062;00E0 05AE 0612 0315 0062;0061 05AE 0300 0612 0315 0062;00E0 05AE 0612 0315 0062;0061 05AE 0300 0612 0315 0062; # (a◌̕◌̀◌֮◌ؒb; à◌֮◌ؒ◌̕b; a◌֮◌̀◌ؒ◌̕b; à◌֮◌ؒ◌̕b; a◌֮◌̀◌ؒ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SIGN RAHMATULLAH ALAYHE, LATIN SMALL LETTER B
+0061 0612 0315 0300 05AE 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062; # (a◌ؒ◌̕◌̀◌֮b; a◌֮◌ؒ◌̀◌̕b; a◌֮◌ؒ◌̀◌̕b; a◌֮◌ؒ◌̀◌̕b; a◌֮◌ؒ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SIGN RAHMATULLAH ALAYHE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0613 0062;00E0 05AE 0613 0315 0062;0061 05AE 0300 0613 0315 0062;00E0 05AE 0613 0315 0062;0061 05AE 0300 0613 0315 0062; # (a◌̕◌̀◌֮◌ؓb; à◌֮◌ؓ◌̕b; a◌֮◌̀◌ؓ◌̕b; à◌֮◌ؓ◌̕b; a◌֮◌̀◌ؓ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SIGN RADI ALLAHOU ANHU, LATIN SMALL LETTER B
+0061 0613 0315 0300 05AE 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062; # (a◌ؓ◌̕◌̀◌֮b; a◌֮◌ؓ◌̀◌̕b; a◌֮◌ؓ◌̀◌̕b; a◌֮◌ؓ◌̀◌̕b; a◌֮◌ؓ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SIGN RADI ALLAHOU ANHU, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0614 0062;00E0 05AE 0614 0315 0062;0061 05AE 0300 0614 0315 0062;00E0 05AE 0614 0315 0062;0061 05AE 0300 0614 0315 0062; # (a◌̕◌̀◌֮◌ؔb; à◌֮◌ؔ◌̕b; a◌֮◌̀◌ؔ◌̕b; à◌֮◌ؔ◌̕b; a◌֮◌̀◌ؔ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SIGN TAKHALLUS, LATIN SMALL LETTER B
+0061 0614 0315 0300 05AE 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062; # (a◌ؔ◌̕◌̀◌֮b; a◌֮◌ؔ◌̀◌̕b; a◌֮◌ؔ◌̀◌̕b; a◌֮◌ؔ◌̀◌̕b; a◌֮◌ؔ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SIGN TAKHALLUS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0615 0062;00E0 05AE 0615 0315 0062;0061 05AE 0300 0615 0315 0062;00E0 05AE 0615 0315 0062;0061 05AE 0300 0615 0315 0062; # (a◌̕◌̀◌֮◌ؕb; à◌֮◌ؕ◌̕b; a◌֮◌̀◌ؕ◌̕b; à◌֮◌ؕ◌̕b; a◌֮◌̀◌ؕ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH TAH, LATIN SMALL LETTER B
+0061 0615 0315 0300 05AE 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062; # (a◌ؕ◌̕◌̀◌֮b; a◌֮◌ؕ◌̀◌̕b; a◌֮◌ؕ◌̀◌̕b; a◌֮◌ؕ◌̀◌̕b; a◌֮◌ؕ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH TAH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 064C 064B FB1E 064B 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062; # (a◌ٌ◌ً◌ﬞ◌ًb; a◌ﬞ◌ً◌ً◌ٌb; a◌ﬞ◌ً◌ً◌ٌb; a◌ﬞ◌ً◌ً◌ٌb; a◌ﬞ◌ً◌ً◌ٌb; ) LATIN SMALL LETTER A, ARABIC DAMMATAN, ARABIC FATHATAN, HEBREW POINT JUDEO-SPANISH VARIKA, ARABIC FATHATAN, LATIN SMALL LETTER B
+0061 064B 064C 064B FB1E 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062; # (a◌ً◌ٌ◌ً◌ﬞb; a◌ﬞ◌ً◌ً◌ٌb; a◌ﬞ◌ً◌ً◌ٌb; a◌ﬞ◌ً◌ً◌ٌb; a◌ﬞ◌ً◌ً◌ٌb; ) LATIN SMALL LETTER A, ARABIC FATHATAN, ARABIC DAMMATAN, ARABIC FATHATAN, HEBREW POINT JUDEO-SPANISH VARIKA, LATIN SMALL LETTER B
+0061 064D 064C 064B 064C 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062; # (aâ—ŒÙ◌ٌ◌ً◌ٌb; a◌ً◌ٌ◌ٌ◌Ùb; a◌ً◌ٌ◌ٌ◌Ùb; a◌ً◌ٌ◌ٌ◌Ùb; a◌ً◌ٌ◌ٌ◌Ùb; ) LATIN SMALL LETTER A, ARABIC KASRATAN, ARABIC DAMMATAN, ARABIC FATHATAN, ARABIC DAMMATAN, LATIN SMALL LETTER B
+0061 064C 064D 064C 064B 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062; # (a◌ٌ◌Ù◌ٌ◌ًb; a◌ً◌ٌ◌ٌ◌Ùb; a◌ً◌ٌ◌ٌ◌Ùb; a◌ً◌ٌ◌ٌ◌Ùb; a◌ً◌ٌ◌ٌ◌Ùb; ) LATIN SMALL LETTER A, ARABIC DAMMATAN, ARABIC KASRATAN, ARABIC DAMMATAN, ARABIC FATHATAN, LATIN SMALL LETTER B
+0061 064E 064D 064C 064D 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062; # (a◌َ◌Ù◌ٌ◌Ùb; a◌ٌ◌Ùâ—ŒÙ◌َb; a◌ٌ◌Ùâ—ŒÙ◌َb; a◌ٌ◌Ùâ—ŒÙ◌َb; a◌ٌ◌Ùâ—ŒÙ◌َb; ) LATIN SMALL LETTER A, ARABIC FATHA, ARABIC KASRATAN, ARABIC DAMMATAN, ARABIC KASRATAN, LATIN SMALL LETTER B
+0061 064D 064E 064D 064C 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062; # (aâ—ŒÙ◌َ◌Ù◌ٌb; a◌ٌ◌Ùâ—ŒÙ◌َb; a◌ٌ◌Ùâ—ŒÙ◌َb; a◌ٌ◌Ùâ—ŒÙ◌َb; a◌ٌ◌Ùâ—ŒÙ◌َb; ) LATIN SMALL LETTER A, ARABIC KASRATAN, ARABIC FATHA, ARABIC KASRATAN, ARABIC DAMMATAN, LATIN SMALL LETTER B
+0061 064F 064E 064D 064E 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062; # (aâ—ŒÙ◌َ◌Ù◌َb; aâ—ŒÙ◌َ◌َ◌Ùb; aâ—ŒÙ◌َ◌َ◌Ùb; aâ—ŒÙ◌َ◌َ◌Ùb; aâ—ŒÙ◌َ◌َ◌Ùb; ) LATIN SMALL LETTER A, ARABIC DAMMA, ARABIC FATHA, ARABIC KASRATAN, ARABIC FATHA, LATIN SMALL LETTER B
+0061 064E 064F 064E 064D 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062; # (a◌َ◌Ù◌َ◌Ùb; aâ—ŒÙ◌َ◌َ◌Ùb; aâ—ŒÙ◌َ◌َ◌Ùb; aâ—ŒÙ◌َ◌َ◌Ùb; aâ—ŒÙ◌َ◌َ◌Ùb; ) LATIN SMALL LETTER A, ARABIC FATHA, ARABIC DAMMA, ARABIC FATHA, ARABIC KASRATAN, LATIN SMALL LETTER B
+0061 0650 064F 064E 064F 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062; # (aâ—ŒÙâ—ŒÙ◌َ◌Ùb; a◌َ◌Ùâ—ŒÙâ—ŒÙb; a◌َ◌Ùâ—ŒÙâ—ŒÙb; a◌َ◌Ùâ—ŒÙâ—ŒÙb; a◌َ◌Ùâ—ŒÙâ—ŒÙb; ) LATIN SMALL LETTER A, ARABIC KASRA, ARABIC DAMMA, ARABIC FATHA, ARABIC DAMMA, LATIN SMALL LETTER B
+0061 064F 0650 064F 064E 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062; # (aâ—ŒÙâ—ŒÙâ—ŒÙ◌َb; a◌َ◌Ùâ—ŒÙâ—ŒÙb; a◌َ◌Ùâ—ŒÙâ—ŒÙb; a◌َ◌Ùâ—ŒÙâ—ŒÙb; a◌َ◌Ùâ—ŒÙâ—ŒÙb; ) LATIN SMALL LETTER A, ARABIC DAMMA, ARABIC KASRA, ARABIC DAMMA, ARABIC FATHA, LATIN SMALL LETTER B
+0061 0651 0650 064F 0650 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062; # (a◌ّ◌Ùâ—ŒÙâ—ŒÙb; aâ—ŒÙâ—ŒÙâ—ŒÙ◌ّb; aâ—ŒÙâ—ŒÙâ—ŒÙ◌ّb; aâ—ŒÙâ—ŒÙâ—ŒÙ◌ّb; aâ—ŒÙâ—ŒÙâ—ŒÙ◌ّb; ) LATIN SMALL LETTER A, ARABIC SHADDA, ARABIC KASRA, ARABIC DAMMA, ARABIC KASRA, LATIN SMALL LETTER B
+0061 0650 0651 0650 064F 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062; # (aâ—ŒÙ◌ّ◌Ùâ—ŒÙb; aâ—ŒÙâ—ŒÙâ—ŒÙ◌ّb; aâ—ŒÙâ—ŒÙâ—ŒÙ◌ّb; aâ—ŒÙâ—ŒÙâ—ŒÙ◌ّb; aâ—ŒÙâ—ŒÙâ—ŒÙ◌ّb; ) LATIN SMALL LETTER A, ARABIC KASRA, ARABIC SHADDA, ARABIC KASRA, ARABIC DAMMA, LATIN SMALL LETTER B
+0061 0652 0651 0650 0651 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062; # (a◌ْ◌ّ◌Ù◌ّb; aâ—ŒÙ◌ّ◌ّ◌ْb; aâ—ŒÙ◌ّ◌ّ◌ْb; aâ—ŒÙ◌ّ◌ّ◌ْb; aâ—ŒÙ◌ّ◌ّ◌ْb; ) LATIN SMALL LETTER A, ARABIC SUKUN, ARABIC SHADDA, ARABIC KASRA, ARABIC SHADDA, LATIN SMALL LETTER B
+0061 0651 0652 0651 0650 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062; # (a◌ّ◌ْ◌ّ◌Ùb; aâ—ŒÙ◌ّ◌ّ◌ْb; aâ—ŒÙ◌ّ◌ّ◌ْb; aâ—ŒÙ◌ّ◌ّ◌ْb; aâ—ŒÙ◌ّ◌ّ◌ْb; ) LATIN SMALL LETTER A, ARABIC SHADDA, ARABIC SUKUN, ARABIC SHADDA, ARABIC KASRA, LATIN SMALL LETTER B
+0061 0670 0652 0651 0652 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062; # (a◌ٰ◌ْ◌ّ◌ْb; a◌ّ◌ْ◌ْ◌ٰb; a◌ّ◌ْ◌ْ◌ٰb; a◌ّ◌ْ◌ْ◌ٰb; a◌ّ◌ْ◌ْ◌ٰb; ) LATIN SMALL LETTER A, ARABIC LETTER SUPERSCRIPT ALEF, ARABIC SUKUN, ARABIC SHADDA, ARABIC SUKUN, LATIN SMALL LETTER B
+0061 0652 0670 0652 0651 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062; # (a◌ْ◌ٰ◌ْ◌ّb; a◌ّ◌ْ◌ْ◌ٰb; a◌ّ◌ْ◌ْ◌ٰb; a◌ّ◌ْ◌ْ◌ٰb; a◌ّ◌ْ◌ْ◌ٰb; ) LATIN SMALL LETTER A, ARABIC SUKUN, ARABIC LETTER SUPERSCRIPT ALEF, ARABIC SUKUN, ARABIC SHADDA, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0653 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062; # (a◌̕◌̀◌֮◌ٓb; à◌֮◌ٓ◌̕b; a◌֮◌̀◌ٓ◌̕b; à◌֮◌ٓ◌̕b; a◌֮◌̀◌ٓ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC MADDAH ABOVE, LATIN SMALL LETTER B
+0061 0653 0315 0300 05AE 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062; # (a◌ٓ◌̕◌̀◌֮b; a◌֮◌ٓ◌̀◌̕b; a◌֮◌ٓ◌̀◌̕b; a◌֮◌ٓ◌̀◌̕b; a◌֮◌ٓ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC MADDAH ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0654 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062; # (a◌̕◌̀◌֮◌ٔb; à◌֮◌ٔ◌̕b; a◌֮◌̀◌ٔ◌̕b; à◌֮◌ٔ◌̕b; a◌֮◌̀◌ٔ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC HAMZA ABOVE, LATIN SMALL LETTER B
+0061 0654 0315 0300 05AE 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062; # (a◌ٔ◌̕◌̀◌֮b; a◌֮◌ٔ◌̀◌̕b; a◌֮◌ٔ◌̀◌̕b; a◌֮◌ٔ◌̀◌̕b; a◌֮◌ٔ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC HAMZA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0655 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062; # (a◌֚◌̖◌〪◌ٕb; a◌〪◌̖◌ٕ◌֚b; a◌〪◌̖◌ٕ◌֚b; a◌〪◌̖◌ٕ◌֚b; a◌〪◌̖◌ٕ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC HAMZA BELOW, LATIN SMALL LETTER B
+0061 0655 059A 0316 302A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062; # (a◌ٕ◌֚◌̖◌〪b; a◌〪◌ٕ◌̖◌֚b; a◌〪◌ٕ◌̖◌֚b; a◌〪◌ٕ◌̖◌֚b; a◌〪◌ٕ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC HAMZA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0656 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062; # (a◌֚◌̖◌〪◌ٖb; a◌〪◌̖◌ٖ◌֚b; a◌〪◌̖◌ٖ◌֚b; a◌〪◌̖◌ٖ◌֚b; a◌〪◌̖◌ٖ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC SUBSCRIPT ALEF, LATIN SMALL LETTER B
+0061 0656 059A 0316 302A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062; # (a◌ٖ◌֚◌̖◌〪b; a◌〪◌ٖ◌̖◌֚b; a◌〪◌ٖ◌̖◌֚b; a◌〪◌ٖ◌̖◌֚b; a◌〪◌ٖ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC SUBSCRIPT ALEF, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0657 0062;00E0 05AE 0657 0315 0062;0061 05AE 0300 0657 0315 0062;00E0 05AE 0657 0315 0062;0061 05AE 0300 0657 0315 0062; # (a◌̕◌̀◌֮◌ٗb; à◌֮◌ٗ◌̕b; a◌֮◌̀◌ٗ◌̕b; à◌֮◌ٗ◌̕b; a◌֮◌̀◌ٗ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC INVERTED DAMMA, LATIN SMALL LETTER B
+0061 0657 0315 0300 05AE 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062; # (a◌ٗ◌̕◌̀◌֮b; a◌֮◌ٗ◌̀◌̕b; a◌֮◌ٗ◌̀◌̕b; a◌֮◌ٗ◌̀◌̕b; a◌֮◌ٗ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC INVERTED DAMMA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0658 0062;00E0 05AE 0658 0315 0062;0061 05AE 0300 0658 0315 0062;00E0 05AE 0658 0315 0062;0061 05AE 0300 0658 0315 0062; # (a◌̕◌̀◌֮◌٘b; à◌֮◌٘◌̕b; a◌֮◌̀◌٘◌̕b; à◌֮◌٘◌̕b; a◌֮◌̀◌٘◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC MARK NOON GHUNNA, LATIN SMALL LETTER B
+0061 0658 0315 0300 05AE 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062; # (a◌٘◌̕◌̀◌֮b; a◌֮◌٘◌̀◌̕b; a◌֮◌٘◌̀◌̕b; a◌֮◌٘◌̀◌̕b; a◌֮◌٘◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC MARK NOON GHUNNA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0659 0062;00E0 05AE 0659 0315 0062;0061 05AE 0300 0659 0315 0062;00E0 05AE 0659 0315 0062;0061 05AE 0300 0659 0315 0062; # (a◌̕◌̀◌֮◌ٙb; à◌֮◌ٙ◌̕b; a◌֮◌̀◌ٙ◌̕b; à◌֮◌ٙ◌̕b; a◌֮◌̀◌ٙ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC ZWARAKAY, LATIN SMALL LETTER B
+0061 0659 0315 0300 05AE 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062; # (a◌ٙ◌̕◌̀◌֮b; a◌֮◌ٙ◌̀◌̕b; a◌֮◌ٙ◌̀◌̕b; a◌֮◌ٙ◌̀◌̕b; a◌֮◌ٙ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC ZWARAKAY, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 065A 0062;00E0 05AE 065A 0315 0062;0061 05AE 0300 065A 0315 0062;00E0 05AE 065A 0315 0062;0061 05AE 0300 065A 0315 0062; # (a◌̕◌̀◌֮◌ٚb; à◌֮◌ٚ◌̕b; a◌֮◌̀◌ٚ◌̕b; à◌֮◌ٚ◌̕b; a◌֮◌̀◌ٚ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC VOWEL SIGN SMALL V ABOVE, LATIN SMALL LETTER B
+0061 065A 0315 0300 05AE 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062; # (a◌ٚ◌̕◌̀◌֮b; a◌֮◌ٚ◌̀◌̕b; a◌֮◌ٚ◌̀◌̕b; a◌֮◌ٚ◌̀◌̕b; a◌֮◌ٚ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC VOWEL SIGN SMALL V ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 065B 0062;00E0 05AE 065B 0315 0062;0061 05AE 0300 065B 0315 0062;00E0 05AE 065B 0315 0062;0061 05AE 0300 065B 0315 0062; # (a◌̕◌̀◌֮◌ٛb; à◌֮◌ٛ◌̕b; a◌֮◌̀◌ٛ◌̕b; à◌֮◌ٛ◌̕b; a◌֮◌̀◌ٛ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC VOWEL SIGN INVERTED SMALL V ABOVE, LATIN SMALL LETTER B
+0061 065B 0315 0300 05AE 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062; # (a◌ٛ◌̕◌̀◌֮b; a◌֮◌ٛ◌̀◌̕b; a◌֮◌ٛ◌̀◌̕b; a◌֮◌ٛ◌̀◌̕b; a◌֮◌ٛ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC VOWEL SIGN INVERTED SMALL V ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 065C 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062; # (a◌֚◌̖◌〪◌ٜb; a◌〪◌̖◌ٜ◌֚b; a◌〪◌̖◌ٜ◌֚b; a◌〪◌̖◌ٜ◌֚b; a◌〪◌̖◌ٜ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC VOWEL SIGN DOT BELOW, LATIN SMALL LETTER B
+0061 065C 059A 0316 302A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062; # (a◌ٜ◌֚◌̖◌〪b; a◌〪◌ٜ◌̖◌֚b; a◌〪◌ٜ◌̖◌֚b; a◌〪◌ٜ◌̖◌֚b; a◌〪◌ٜ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC VOWEL SIGN DOT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 065D 0062;00E0 05AE 065D 0315 0062;0061 05AE 0300 065D 0315 0062;00E0 05AE 065D 0315 0062;0061 05AE 0300 065D 0315 0062; # (a◌̕◌̀◌֮◌Ùb; à◌֮◌Ù◌̕b; a◌֮◌̀◌Ù◌̕b; à◌֮◌Ù◌̕b; a◌֮◌̀◌Ù◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC REVERSED DAMMA, LATIN SMALL LETTER B
+0061 065D 0315 0300 05AE 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062; # (aâ—ŒÙ◌̕◌̀◌֮b; a◌֮◌Ù◌̀◌̕b; a◌֮◌Ù◌̀◌̕b; a◌֮◌Ù◌̀◌̕b; a◌֮◌Ù◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC REVERSED DAMMA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 065E 0062;00E0 05AE 065E 0315 0062;0061 05AE 0300 065E 0315 0062;00E0 05AE 065E 0315 0062;0061 05AE 0300 065E 0315 0062; # (a◌̕◌̀◌֮◌ٞb; à◌֮◌ٞ◌̕b; a◌֮◌̀◌ٞ◌̕b; à◌֮◌ٞ◌̕b; a◌֮◌̀◌ٞ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC FATHA WITH TWO DOTS, LATIN SMALL LETTER B
+0061 065E 0315 0300 05AE 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062; # (a◌ٞ◌̕◌̀◌֮b; a◌֮◌ٞ◌̀◌̕b; a◌֮◌ٞ◌̀◌̕b; a◌֮◌ٞ◌̀◌̕b; a◌֮◌ٞ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC FATHA WITH TWO DOTS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0711 0670 0652 0670 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062; # (a◌ܑ◌ٰ◌ْ◌ٰb; a◌ْ◌ٰ◌ٰ◌ܑb; a◌ْ◌ٰ◌ٰ◌ܑb; a◌ْ◌ٰ◌ٰ◌ܑb; a◌ْ◌ٰ◌ٰ◌ܑb; ) LATIN SMALL LETTER A, SYRIAC LETTER SUPERSCRIPT ALAPH, ARABIC LETTER SUPERSCRIPT ALEF, ARABIC SUKUN, ARABIC LETTER SUPERSCRIPT ALEF, LATIN SMALL LETTER B
+0061 0670 0711 0670 0652 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062; # (a◌ٰ◌ܑ◌ٰ◌ْb; a◌ْ◌ٰ◌ٰ◌ܑb; a◌ْ◌ٰ◌ٰ◌ܑb; a◌ْ◌ٰ◌ٰ◌ܑb; a◌ْ◌ٰ◌ٰ◌ܑb; ) LATIN SMALL LETTER A, ARABIC LETTER SUPERSCRIPT ALEF, SYRIAC LETTER SUPERSCRIPT ALAPH, ARABIC LETTER SUPERSCRIPT ALEF, ARABIC SUKUN, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06D6 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062; # (a◌̕◌̀◌֮◌ۖb; à◌֮◌ۖ◌̕b; a◌֮◌̀◌ۖ◌̕b; à◌֮◌ۖ◌̕b; a◌֮◌̀◌ۖ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA, LATIN SMALL LETTER B
+0061 06D6 0315 0300 05AE 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062; # (a◌ۖ◌̕◌̀◌֮b; a◌֮◌ۖ◌̀◌̕b; a◌֮◌ۖ◌̀◌̕b; a◌֮◌ۖ◌̀◌̕b; a◌֮◌ۖ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06D7 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062; # (a◌̕◌̀◌֮◌ۗb; à◌֮◌ۗ◌̕b; a◌֮◌̀◌ۗ◌̕b; à◌֮◌ۗ◌̕b; a◌֮◌̀◌ۗ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA, LATIN SMALL LETTER B
+0061 06D7 0315 0300 05AE 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062; # (a◌ۗ◌̕◌̀◌֮b; a◌֮◌ۗ◌̀◌̕b; a◌֮◌ۗ◌̀◌̕b; a◌֮◌ۗ◌̀◌̕b; a◌֮◌ۗ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06D8 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062; # (a◌̕◌̀◌֮◌ۘb; à◌֮◌ۘ◌̕b; a◌֮◌̀◌ۘ◌̕b; à◌֮◌ۘ◌̕b; a◌֮◌̀◌ۘ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH MEEM INITIAL FORM, LATIN SMALL LETTER B
+0061 06D8 0315 0300 05AE 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062; # (a◌ۘ◌̕◌̀◌֮b; a◌֮◌ۘ◌̀◌̕b; a◌֮◌ۘ◌̀◌̕b; a◌֮◌ۘ◌̀◌̕b; a◌֮◌ۘ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH MEEM INITIAL FORM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06D9 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062; # (a◌̕◌̀◌֮◌ۙb; à◌֮◌ۙ◌̕b; a◌֮◌̀◌ۙ◌̕b; à◌֮◌ۙ◌̕b; a◌֮◌̀◌ۙ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH LAM ALEF, LATIN SMALL LETTER B
+0061 06D9 0315 0300 05AE 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062; # (a◌ۙ◌̕◌̀◌֮b; a◌֮◌ۙ◌̀◌̕b; a◌֮◌ۙ◌̀◌̕b; a◌֮◌ۙ◌̀◌̕b; a◌֮◌ۙ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH LAM ALEF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06DA 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062; # (a◌̕◌̀◌֮◌ۚb; à◌֮◌ۚ◌̕b; a◌֮◌̀◌ۚ◌̕b; à◌֮◌ۚ◌̕b; a◌֮◌̀◌ۚ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH JEEM, LATIN SMALL LETTER B
+0061 06DA 0315 0300 05AE 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062; # (a◌ۚ◌̕◌̀◌֮b; a◌֮◌ۚ◌̀◌̕b; a◌֮◌ۚ◌̀◌̕b; a◌֮◌ۚ◌̀◌̕b; a◌֮◌ۚ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH JEEM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06DB 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062; # (a◌̕◌̀◌֮◌ۛb; à◌֮◌ۛ◌̕b; a◌֮◌̀◌ۛ◌̕b; à◌֮◌ۛ◌̕b; a◌֮◌̀◌ۛ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH THREE DOTS, LATIN SMALL LETTER B
+0061 06DB 0315 0300 05AE 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062; # (a◌ۛ◌̕◌̀◌֮b; a◌֮◌ۛ◌̀◌̕b; a◌֮◌ۛ◌̀◌̕b; a◌֮◌ۛ◌̀◌̕b; a◌֮◌ۛ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH THREE DOTS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06DC 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062; # (a◌̕◌̀◌֮◌ۜb; à◌֮◌ۜ◌̕b; a◌֮◌̀◌ۜ◌̕b; à◌֮◌ۜ◌̕b; a◌֮◌̀◌ۜ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH SEEN, LATIN SMALL LETTER B
+0061 06DC 0315 0300 05AE 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062; # (a◌ۜ◌̕◌̀◌֮b; a◌֮◌ۜ◌̀◌̕b; a◌֮◌ۜ◌̀◌̕b; a◌֮◌ۜ◌̀◌̕b; a◌֮◌ۜ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH SEEN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06DF 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062; # (a◌̕◌̀◌֮◌۟b; à◌֮◌۟◌̕b; a◌֮◌̀◌۟◌̕b; à◌֮◌۟◌̕b; a◌֮◌̀◌۟◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH ROUNDED ZERO, LATIN SMALL LETTER B
+0061 06DF 0315 0300 05AE 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062; # (a◌۟◌̕◌̀◌֮b; a◌֮◌۟◌̀◌̕b; a◌֮◌۟◌̀◌̕b; a◌֮◌۟◌̀◌̕b; a◌֮◌۟◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH ROUNDED ZERO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06E0 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062; # (a◌̕◌̀◌֮◌۠b; à◌֮◌۠◌̕b; a◌֮◌̀◌۠◌̕b; à◌֮◌۠◌̕b; a◌֮◌̀◌۠◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO, LATIN SMALL LETTER B
+0061 06E0 0315 0300 05AE 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062; # (a◌۠◌̕◌̀◌֮b; a◌֮◌۠◌̀◌̕b; a◌֮◌۠◌̀◌̕b; a◌֮◌۠◌̀◌̕b; a◌֮◌۠◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06E1 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062; # (a◌̕◌̀◌֮◌ۡb; à◌֮◌ۡ◌̕b; a◌֮◌̀◌ۡ◌̕b; à◌֮◌ۡ◌̕b; a◌֮◌̀◌ۡ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH DOTLESS HEAD OF KHAH, LATIN SMALL LETTER B
+0061 06E1 0315 0300 05AE 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062; # (a◌ۡ◌̕◌̀◌֮b; a◌֮◌ۡ◌̀◌̕b; a◌֮◌ۡ◌̀◌̕b; a◌֮◌ۡ◌̀◌̕b; a◌֮◌ۡ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH DOTLESS HEAD OF KHAH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06E2 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062; # (a◌̕◌̀◌֮◌ۢb; à◌֮◌ۢ◌̕b; a◌֮◌̀◌ۢ◌̕b; à◌֮◌ۢ◌̕b; a◌֮◌̀◌ۢ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH MEEM ISOLATED FORM, LATIN SMALL LETTER B
+0061 06E2 0315 0300 05AE 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062; # (a◌ۢ◌̕◌̀◌֮b; a◌֮◌ۢ◌̀◌̕b; a◌֮◌ۢ◌̀◌̕b; a◌֮◌ۢ◌̀◌̕b; a◌֮◌ۢ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH MEEM ISOLATED FORM, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 06E3 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062; # (a◌֚◌̖◌〪◌ۣb; a◌〪◌̖◌ۣ◌֚b; a◌〪◌̖◌ۣ◌֚b; a◌〪◌̖◌ۣ◌֚b; a◌〪◌̖◌ۣ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC SMALL LOW SEEN, LATIN SMALL LETTER B
+0061 06E3 059A 0316 302A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062; # (a◌ۣ◌֚◌̖◌〪b; a◌〪◌ۣ◌̖◌֚b; a◌〪◌ۣ◌̖◌֚b; a◌〪◌ۣ◌̖◌֚b; a◌〪◌ۣ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC SMALL LOW SEEN, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06E4 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062; # (a◌̕◌̀◌֮◌ۤb; à◌֮◌ۤ◌̕b; a◌֮◌̀◌ۤ◌̕b; à◌֮◌ۤ◌̕b; a◌֮◌̀◌ۤ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH MADDA, LATIN SMALL LETTER B
+0061 06E4 0315 0300 05AE 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062; # (a◌ۤ◌̕◌̀◌֮b; a◌֮◌ۤ◌̀◌̕b; a◌֮◌ۤ◌̀◌̕b; a◌֮◌ۤ◌̀◌̕b; a◌֮◌ۤ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH MADDA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06E7 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062; # (a◌̕◌̀◌֮◌ۧb; à◌֮◌ۧ◌̕b; a◌֮◌̀◌ۧ◌̕b; à◌֮◌ۧ◌̕b; a◌֮◌̀◌ۧ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH YEH, LATIN SMALL LETTER B
+0061 06E7 0315 0300 05AE 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062; # (a◌ۧ◌̕◌̀◌֮b; a◌֮◌ۧ◌̀◌̕b; a◌֮◌ۧ◌̀◌̕b; a◌֮◌ۧ◌̀◌̕b; a◌֮◌ۧ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH YEH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06E8 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062; # (a◌̕◌̀◌֮◌ۨb; à◌֮◌ۨ◌̕b; a◌֮◌̀◌ۨ◌̕b; à◌֮◌ۨ◌̕b; a◌֮◌̀◌ۨ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC SMALL HIGH NOON, LATIN SMALL LETTER B
+0061 06E8 0315 0300 05AE 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062; # (a◌ۨ◌̕◌̀◌֮b; a◌֮◌ۨ◌̀◌̕b; a◌֮◌ۨ◌̀◌̕b; a◌֮◌ۨ◌̀◌̕b; a◌֮◌ۨ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC SMALL HIGH NOON, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 06EA 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062; # (a◌֚◌̖◌〪◌۪b; a◌〪◌̖◌۪◌֚b; a◌〪◌̖◌۪◌֚b; a◌〪◌̖◌۪◌֚b; a◌〪◌̖◌۪◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC EMPTY CENTRE LOW STOP, LATIN SMALL LETTER B
+0061 06EA 059A 0316 302A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062; # (a◌۪◌֚◌̖◌〪b; a◌〪◌۪◌̖◌֚b; a◌〪◌۪◌̖◌֚b; a◌〪◌۪◌̖◌֚b; a◌〪◌۪◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC EMPTY CENTRE LOW STOP, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06EB 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062; # (a◌̕◌̀◌֮◌۫b; à◌֮◌۫◌̕b; a◌֮◌̀◌۫◌̕b; à◌֮◌۫◌̕b; a◌֮◌̀◌۫◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC EMPTY CENTRE HIGH STOP, LATIN SMALL LETTER B
+0061 06EB 0315 0300 05AE 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062; # (a◌۫◌̕◌̀◌֮b; a◌֮◌۫◌̀◌̕b; a◌֮◌۫◌̀◌̕b; a◌֮◌۫◌̀◌̕b; a◌֮◌۫◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC EMPTY CENTRE HIGH STOP, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 06EC 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062; # (a◌̕◌̀◌֮◌۬b; à◌֮◌۬◌̕b; a◌֮◌̀◌۬◌̕b; à◌֮◌۬◌̕b; a◌֮◌̀◌۬◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE, LATIN SMALL LETTER B
+0061 06EC 0315 0300 05AE 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062; # (a◌۬◌̕◌̀◌֮b; a◌֮◌۬◌̀◌̕b; a◌֮◌۬◌̀◌̕b; a◌֮◌۬◌̀◌̕b; a◌֮◌۬◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 06ED 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062; # (a◌֚◌̖◌〪◌ۭb; a◌〪◌̖◌ۭ◌֚b; a◌〪◌̖◌ۭ◌֚b; a◌〪◌̖◌ۭ◌֚b; a◌〪◌̖◌ۭ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC SMALL LOW MEEM, LATIN SMALL LETTER B
+0061 06ED 059A 0316 302A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062; # (a◌ۭ◌֚◌̖◌〪b; a◌〪◌ۭ◌̖◌֚b; a◌〪◌ۭ◌̖◌֚b; a◌〪◌ۭ◌̖◌֚b; a◌〪◌ۭ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC SMALL LOW MEEM, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0C55 0711 0670 0711 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062; # (a◌ౕ◌ܑ◌ٰ◌ܑb; a◌ٰ◌ܑ◌ܑ◌ౕb; a◌ٰ◌ܑ◌ܑ◌ౕb; a◌ٰ◌ܑ◌ܑ◌ౕb; a◌ٰ◌ܑ◌ܑ◌ౕb; ) LATIN SMALL LETTER A, TELUGU LENGTH MARK, SYRIAC LETTER SUPERSCRIPT ALAPH, ARABIC LETTER SUPERSCRIPT ALEF, SYRIAC LETTER SUPERSCRIPT ALAPH, LATIN SMALL LETTER B
+0061 0711 0C55 0711 0670 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062; # (a◌ܑ◌ౕ◌ܑ◌ٰb; a◌ٰ◌ܑ◌ܑ◌ౕb; a◌ٰ◌ܑ◌ܑ◌ౕb; a◌ٰ◌ܑ◌ܑ◌ౕb; a◌ٰ◌ܑ◌ܑ◌ౕb; ) LATIN SMALL LETTER A, SYRIAC LETTER SUPERSCRIPT ALAPH, TELUGU LENGTH MARK, SYRIAC LETTER SUPERSCRIPT ALAPH, ARABIC LETTER SUPERSCRIPT ALEF, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0730 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062; # (a◌̕◌̀◌֮◌ܰb; à◌֮◌ܰ◌̕b; a◌֮◌̀◌ܰ◌̕b; à◌֮◌ܰ◌̕b; a◌֮◌̀◌ܰ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC PTHAHA ABOVE, LATIN SMALL LETTER B
+0061 0730 0315 0300 05AE 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062; # (a◌ܰ◌̕◌̀◌֮b; a◌֮◌ܰ◌̀◌̕b; a◌֮◌ܰ◌̀◌̕b; a◌֮◌ܰ◌̀◌̕b; a◌֮◌ܰ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC PTHAHA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0731 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062; # (a◌֚◌̖◌〪◌ܱb; a◌〪◌̖◌ܱ◌֚b; a◌〪◌̖◌ܱ◌֚b; a◌〪◌̖◌ܱ◌֚b; a◌〪◌̖◌ܱ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC PTHAHA BELOW, LATIN SMALL LETTER B
+0061 0731 059A 0316 302A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062; # (a◌ܱ◌֚◌̖◌〪b; a◌〪◌ܱ◌̖◌֚b; a◌〪◌ܱ◌̖◌֚b; a◌〪◌ܱ◌̖◌֚b; a◌〪◌ܱ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC PTHAHA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0732 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062; # (a◌̕◌̀◌֮◌ܲb; à◌֮◌ܲ◌̕b; a◌֮◌̀◌ܲ◌̕b; à◌֮◌ܲ◌̕b; a◌֮◌̀◌ܲ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC PTHAHA DOTTED, LATIN SMALL LETTER B
+0061 0732 0315 0300 05AE 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062; # (a◌ܲ◌̕◌̀◌֮b; a◌֮◌ܲ◌̀◌̕b; a◌֮◌ܲ◌̀◌̕b; a◌֮◌ܲ◌̀◌̕b; a◌֮◌ܲ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC PTHAHA DOTTED, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0733 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062; # (a◌̕◌̀◌֮◌ܳb; à◌֮◌ܳ◌̕b; a◌֮◌̀◌ܳ◌̕b; à◌֮◌ܳ◌̕b; a◌֮◌̀◌ܳ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC ZQAPHA ABOVE, LATIN SMALL LETTER B
+0061 0733 0315 0300 05AE 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062; # (a◌ܳ◌̕◌̀◌֮b; a◌֮◌ܳ◌̀◌̕b; a◌֮◌ܳ◌̀◌̕b; a◌֮◌ܳ◌̀◌̕b; a◌֮◌ܳ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC ZQAPHA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0734 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062; # (a◌֚◌̖◌〪◌ܴb; a◌〪◌̖◌ܴ◌֚b; a◌〪◌̖◌ܴ◌֚b; a◌〪◌̖◌ܴ◌֚b; a◌〪◌̖◌ܴ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC ZQAPHA BELOW, LATIN SMALL LETTER B
+0061 0734 059A 0316 302A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062; # (a◌ܴ◌֚◌̖◌〪b; a◌〪◌ܴ◌̖◌֚b; a◌〪◌ܴ◌̖◌֚b; a◌〪◌ܴ◌̖◌֚b; a◌〪◌ܴ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC ZQAPHA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0735 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062; # (a◌̕◌̀◌֮◌ܵb; à◌֮◌ܵ◌̕b; a◌֮◌̀◌ܵ◌̕b; à◌֮◌ܵ◌̕b; a◌֮◌̀◌ܵ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC ZQAPHA DOTTED, LATIN SMALL LETTER B
+0061 0735 0315 0300 05AE 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062; # (a◌ܵ◌̕◌̀◌֮b; a◌֮◌ܵ◌̀◌̕b; a◌֮◌ܵ◌̀◌̕b; a◌֮◌ܵ◌̀◌̕b; a◌֮◌ܵ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC ZQAPHA DOTTED, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0736 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062; # (a◌̕◌̀◌֮◌ܶb; à◌֮◌ܶ◌̕b; a◌֮◌̀◌ܶ◌̕b; à◌֮◌ܶ◌̕b; a◌֮◌̀◌ܶ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC RBASA ABOVE, LATIN SMALL LETTER B
+0061 0736 0315 0300 05AE 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062; # (a◌ܶ◌̕◌̀◌֮b; a◌֮◌ܶ◌̀◌̕b; a◌֮◌ܶ◌̀◌̕b; a◌֮◌ܶ◌̀◌̕b; a◌֮◌ܶ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC RBASA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0737 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062; # (a◌֚◌̖◌〪◌ܷb; a◌〪◌̖◌ܷ◌֚b; a◌〪◌̖◌ܷ◌֚b; a◌〪◌̖◌ܷ◌֚b; a◌〪◌̖◌ܷ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC RBASA BELOW, LATIN SMALL LETTER B
+0061 0737 059A 0316 302A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062; # (a◌ܷ◌֚◌̖◌〪b; a◌〪◌ܷ◌̖◌֚b; a◌〪◌ܷ◌̖◌֚b; a◌〪◌ܷ◌̖◌֚b; a◌〪◌ܷ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC RBASA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0738 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062; # (a◌֚◌̖◌〪◌ܸb; a◌〪◌̖◌ܸ◌֚b; a◌〪◌̖◌ܸ◌֚b; a◌〪◌̖◌ܸ◌֚b; a◌〪◌̖◌ܸ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC DOTTED ZLAMA HORIZONTAL, LATIN SMALL LETTER B
+0061 0738 059A 0316 302A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062; # (a◌ܸ◌֚◌̖◌〪b; a◌〪◌ܸ◌̖◌֚b; a◌〪◌ܸ◌̖◌֚b; a◌〪◌ܸ◌̖◌֚b; a◌〪◌ܸ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC DOTTED ZLAMA HORIZONTAL, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0739 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062; # (a◌֚◌̖◌〪◌ܹb; a◌〪◌̖◌ܹ◌֚b; a◌〪◌̖◌ܹ◌֚b; a◌〪◌̖◌ܹ◌֚b; a◌〪◌̖◌ܹ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC DOTTED ZLAMA ANGULAR, LATIN SMALL LETTER B
+0061 0739 059A 0316 302A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062; # (a◌ܹ◌֚◌̖◌〪b; a◌〪◌ܹ◌̖◌֚b; a◌〪◌ܹ◌̖◌֚b; a◌〪◌ܹ◌̖◌֚b; a◌〪◌ܹ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC DOTTED ZLAMA ANGULAR, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 073A 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062; # (a◌̕◌̀◌֮◌ܺb; à◌֮◌ܺ◌̕b; a◌֮◌̀◌ܺ◌̕b; à◌֮◌ܺ◌̕b; a◌֮◌̀◌ܺ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC HBASA ABOVE, LATIN SMALL LETTER B
+0061 073A 0315 0300 05AE 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062; # (a◌ܺ◌̕◌̀◌֮b; a◌֮◌ܺ◌̀◌̕b; a◌֮◌ܺ◌̀◌̕b; a◌֮◌ܺ◌̀◌̕b; a◌֮◌ܺ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC HBASA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 073B 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062; # (a◌֚◌̖◌〪◌ܻb; a◌〪◌̖◌ܻ◌֚b; a◌〪◌̖◌ܻ◌֚b; a◌〪◌̖◌ܻ◌֚b; a◌〪◌̖◌ܻ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC HBASA BELOW, LATIN SMALL LETTER B
+0061 073B 059A 0316 302A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062; # (a◌ܻ◌֚◌̖◌〪b; a◌〪◌ܻ◌̖◌֚b; a◌〪◌ܻ◌̖◌֚b; a◌〪◌ܻ◌̖◌֚b; a◌〪◌ܻ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC HBASA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 073C 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062; # (a◌֚◌̖◌〪◌ܼb; a◌〪◌̖◌ܼ◌֚b; a◌〪◌̖◌ܼ◌֚b; a◌〪◌̖◌ܼ◌֚b; a◌〪◌̖◌ܼ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC HBASA-ESASA DOTTED, LATIN SMALL LETTER B
+0061 073C 059A 0316 302A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062; # (a◌ܼ◌֚◌̖◌〪b; a◌〪◌ܼ◌̖◌֚b; a◌〪◌ܼ◌̖◌֚b; a◌〪◌ܼ◌̖◌֚b; a◌〪◌ܼ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC HBASA-ESASA DOTTED, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 073D 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062; # (a◌̕◌̀◌֮◌ܽb; à◌֮◌ܽ◌̕b; a◌֮◌̀◌ܽ◌̕b; à◌֮◌ܽ◌̕b; a◌֮◌̀◌ܽ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC ESASA ABOVE, LATIN SMALL LETTER B
+0061 073D 0315 0300 05AE 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062; # (a◌ܽ◌̕◌̀◌֮b; a◌֮◌ܽ◌̀◌̕b; a◌֮◌ܽ◌̀◌̕b; a◌֮◌ܽ◌̀◌̕b; a◌֮◌ܽ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC ESASA ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 073E 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062; # (a◌֚◌̖◌〪◌ܾb; a◌〪◌̖◌ܾ◌֚b; a◌〪◌̖◌ܾ◌֚b; a◌〪◌̖◌ܾ◌֚b; a◌〪◌̖◌ܾ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC ESASA BELOW, LATIN SMALL LETTER B
+0061 073E 059A 0316 302A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062; # (a◌ܾ◌֚◌̖◌〪b; a◌〪◌ܾ◌̖◌֚b; a◌〪◌ܾ◌̖◌֚b; a◌〪◌ܾ◌̖◌֚b; a◌〪◌ܾ◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC ESASA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 073F 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062; # (a◌̕◌̀◌֮◌ܿb; à◌֮◌ܿ◌̕b; a◌֮◌̀◌ܿ◌̕b; à◌֮◌ܿ◌̕b; a◌֮◌̀◌ܿ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC RWAHA, LATIN SMALL LETTER B
+0061 073F 0315 0300 05AE 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062; # (a◌ܿ◌̕◌̀◌֮b; a◌֮◌ܿ◌̀◌̕b; a◌֮◌ܿ◌̀◌̕b; a◌֮◌ܿ◌̀◌̕b; a◌֮◌ܿ◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC RWAHA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0740 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062; # (a◌̕◌̀◌֮◌݀b; à◌֮◌݀◌̕b; a◌֮◌̀◌݀◌̕b; à◌֮◌݀◌̕b; a◌֮◌̀◌݀◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC FEMININE DOT, LATIN SMALL LETTER B
+0061 0740 0315 0300 05AE 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062; # (a◌݀◌̕◌̀◌֮b; a◌֮◌݀◌̀◌̕b; a◌֮◌݀◌̀◌̕b; a◌֮◌݀◌̀◌̕b; a◌֮◌݀◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC FEMININE DOT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0741 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062; # (a◌̕◌̀◌֮◌Ýb; à◌֮◌Ý◌̕b; a◌֮◌̀◌Ý◌̕b; à◌֮◌Ý◌̕b; a◌֮◌̀◌Ý◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC QUSHSHAYA, LATIN SMALL LETTER B
+0061 0741 0315 0300 05AE 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062; # (aâ—ŒÝ◌̕◌̀◌֮b; a◌֮◌Ý◌̀◌̕b; a◌֮◌Ý◌̀◌̕b; a◌֮◌Ý◌̀◌̕b; a◌֮◌Ý◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC QUSHSHAYA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0742 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062; # (a◌֚◌̖◌〪◌݂b; a◌〪◌̖◌݂◌֚b; a◌〪◌̖◌݂◌֚b; a◌〪◌̖◌݂◌֚b; a◌〪◌̖◌݂◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC RUKKAKHA, LATIN SMALL LETTER B
+0061 0742 059A 0316 302A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062; # (a◌݂◌֚◌̖◌〪b; a◌〪◌݂◌̖◌֚b; a◌〪◌݂◌̖◌֚b; a◌〪◌݂◌̖◌֚b; a◌〪◌݂◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC RUKKAKHA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0743 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062; # (a◌̕◌̀◌֮◌݃b; à◌֮◌݃◌̕b; a◌֮◌̀◌݃◌̕b; à◌֮◌݃◌̕b; a◌֮◌̀◌݃◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC TWO VERTICAL DOTS ABOVE, LATIN SMALL LETTER B
+0061 0743 0315 0300 05AE 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062; # (a◌݃◌̕◌̀◌֮b; a◌֮◌݃◌̀◌̕b; a◌֮◌݃◌̀◌̕b; a◌֮◌݃◌̀◌̕b; a◌֮◌݃◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC TWO VERTICAL DOTS ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0744 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062; # (a◌֚◌̖◌〪◌݄b; a◌〪◌̖◌݄◌֚b; a◌〪◌̖◌݄◌֚b; a◌〪◌̖◌݄◌֚b; a◌〪◌̖◌݄◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC TWO VERTICAL DOTS BELOW, LATIN SMALL LETTER B
+0061 0744 059A 0316 302A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062; # (a◌݄◌֚◌̖◌〪b; a◌〪◌݄◌̖◌֚b; a◌〪◌݄◌̖◌֚b; a◌〪◌݄◌̖◌֚b; a◌〪◌݄◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC TWO VERTICAL DOTS BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0745 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062; # (a◌̕◌̀◌֮◌݅b; à◌֮◌݅◌̕b; a◌֮◌̀◌݅◌̕b; à◌֮◌݅◌̕b; a◌֮◌̀◌݅◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC THREE DOTS ABOVE, LATIN SMALL LETTER B
+0061 0745 0315 0300 05AE 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062; # (a◌݅◌̕◌̀◌֮b; a◌֮◌݅◌̀◌̕b; a◌֮◌݅◌̀◌̕b; a◌֮◌݅◌̀◌̕b; a◌֮◌݅◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC THREE DOTS ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0746 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062; # (a◌֚◌̖◌〪◌݆b; a◌〪◌̖◌݆◌֚b; a◌〪◌̖◌݆◌֚b; a◌〪◌̖◌݆◌֚b; a◌〪◌̖◌݆◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC THREE DOTS BELOW, LATIN SMALL LETTER B
+0061 0746 059A 0316 302A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062; # (a◌݆◌֚◌̖◌〪b; a◌〪◌݆◌̖◌֚b; a◌〪◌݆◌̖◌֚b; a◌〪◌݆◌̖◌֚b; a◌〪◌݆◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC THREE DOTS BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0747 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062; # (a◌̕◌̀◌֮◌݇b; à◌֮◌݇◌̕b; a◌֮◌̀◌݇◌̕b; à◌֮◌݇◌̕b; a◌֮◌̀◌݇◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC OBLIQUE LINE ABOVE, LATIN SMALL LETTER B
+0061 0747 0315 0300 05AE 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062; # (a◌݇◌̕◌̀◌֮b; a◌֮◌݇◌̀◌̕b; a◌֮◌݇◌̀◌̕b; a◌֮◌݇◌̀◌̕b; a◌֮◌݇◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC OBLIQUE LINE ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0748 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062; # (a◌֚◌̖◌〪◌݈b; a◌〪◌̖◌݈◌֚b; a◌〪◌̖◌݈◌֚b; a◌〪◌̖◌݈◌֚b; a◌〪◌̖◌݈◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, SYRIAC OBLIQUE LINE BELOW, LATIN SMALL LETTER B
+0061 0748 059A 0316 302A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062; # (a◌݈◌֚◌̖◌〪b; a◌〪◌݈◌̖◌֚b; a◌〪◌݈◌̖◌֚b; a◌〪◌݈◌̖◌֚b; a◌〪◌݈◌̖◌֚b; ) LATIN SMALL LETTER A, SYRIAC OBLIQUE LINE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0749 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062; # (a◌̕◌̀◌֮◌݉b; à◌֮◌݉◌̕b; a◌֮◌̀◌݉◌̕b; à◌֮◌݉◌̕b; a◌֮◌̀◌݉◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC MUSIC, LATIN SMALL LETTER B
+0061 0749 0315 0300 05AE 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062; # (a◌݉◌̕◌̀◌֮b; a◌֮◌݉◌̀◌̕b; a◌֮◌݉◌̀◌̕b; a◌֮◌݉◌̀◌̕b; a◌֮◌݉◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC MUSIC, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 074A 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062; # (a◌̕◌̀◌֮◌݊b; à◌֮◌݊◌̕b; a◌֮◌̀◌݊◌̕b; à◌֮◌݊◌̕b; a◌֮◌̀◌݊◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, SYRIAC BARREKH, LATIN SMALL LETTER B
+0061 074A 0315 0300 05AE 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062; # (a◌݊◌̕◌̀◌֮b; a◌֮◌݊◌̀◌̕b; a◌֮◌݊◌̀◌̕b; a◌֮◌݊◌̀◌̕b; a◌֮◌݊◌̀◌̕b; ) LATIN SMALL LETTER A, SYRIAC BARREKH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07EB 0062;00E0 05AE 07EB 0315 0062;0061 05AE 0300 07EB 0315 0062;00E0 05AE 07EB 0315 0062;0061 05AE 0300 07EB 0315 0062; # (a◌̕◌̀◌֮◌߫b; à◌֮◌߫◌̕b; a◌֮◌̀◌߫◌̕b; à◌֮◌߫◌̕b; a◌֮◌̀◌߫◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING SHORT HIGH TONE, LATIN SMALL LETTER B
+0061 07EB 0315 0300 05AE 0062;0061 05AE 07EB 0300 0315 0062;0061 05AE 07EB 0300 0315 0062;0061 05AE 07EB 0300 0315 0062;0061 05AE 07EB 0300 0315 0062; # (a◌߫◌̕◌̀◌֮b; a◌֮◌߫◌̀◌̕b; a◌֮◌߫◌̀◌̕b; a◌֮◌߫◌̀◌̕b; a◌֮◌߫◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING SHORT HIGH TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07EC 0062;00E0 05AE 07EC 0315 0062;0061 05AE 0300 07EC 0315 0062;00E0 05AE 07EC 0315 0062;0061 05AE 0300 07EC 0315 0062; # (a◌̕◌̀◌֮◌߬b; à◌֮◌߬◌̕b; a◌֮◌̀◌߬◌̕b; à◌֮◌߬◌̕b; a◌֮◌̀◌߬◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING SHORT LOW TONE, LATIN SMALL LETTER B
+0061 07EC 0315 0300 05AE 0062;0061 05AE 07EC 0300 0315 0062;0061 05AE 07EC 0300 0315 0062;0061 05AE 07EC 0300 0315 0062;0061 05AE 07EC 0300 0315 0062; # (a◌߬◌̕◌̀◌֮b; a◌֮◌߬◌̀◌̕b; a◌֮◌߬◌̀◌̕b; a◌֮◌߬◌̀◌̕b; a◌֮◌߬◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING SHORT LOW TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07ED 0062;00E0 05AE 07ED 0315 0062;0061 05AE 0300 07ED 0315 0062;00E0 05AE 07ED 0315 0062;0061 05AE 0300 07ED 0315 0062; # (a◌̕◌̀◌֮◌߭b; à◌֮◌߭◌̕b; a◌֮◌̀◌߭◌̕b; à◌֮◌߭◌̕b; a◌֮◌̀◌߭◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING SHORT RISING TONE, LATIN SMALL LETTER B
+0061 07ED 0315 0300 05AE 0062;0061 05AE 07ED 0300 0315 0062;0061 05AE 07ED 0300 0315 0062;0061 05AE 07ED 0300 0315 0062;0061 05AE 07ED 0300 0315 0062; # (a◌߭◌̕◌̀◌֮b; a◌֮◌߭◌̀◌̕b; a◌֮◌߭◌̀◌̕b; a◌֮◌߭◌̀◌̕b; a◌֮◌߭◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING SHORT RISING TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07EE 0062;00E0 05AE 07EE 0315 0062;0061 05AE 0300 07EE 0315 0062;00E0 05AE 07EE 0315 0062;0061 05AE 0300 07EE 0315 0062; # (a◌̕◌̀◌֮◌߮b; à◌֮◌߮◌̕b; a◌֮◌̀◌߮◌̕b; à◌֮◌߮◌̕b; a◌֮◌̀◌߮◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING LONG DESCENDING TONE, LATIN SMALL LETTER B
+0061 07EE 0315 0300 05AE 0062;0061 05AE 07EE 0300 0315 0062;0061 05AE 07EE 0300 0315 0062;0061 05AE 07EE 0300 0315 0062;0061 05AE 07EE 0300 0315 0062; # (a◌߮◌̕◌̀◌֮b; a◌֮◌߮◌̀◌̕b; a◌֮◌߮◌̀◌̕b; a◌֮◌߮◌̀◌̕b; a◌֮◌߮◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING LONG DESCENDING TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07EF 0062;00E0 05AE 07EF 0315 0062;0061 05AE 0300 07EF 0315 0062;00E0 05AE 07EF 0315 0062;0061 05AE 0300 07EF 0315 0062; # (a◌̕◌̀◌֮◌߯b; à◌֮◌߯◌̕b; a◌֮◌̀◌߯◌̕b; à◌֮◌߯◌̕b; a◌֮◌̀◌߯◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING LONG HIGH TONE, LATIN SMALL LETTER B
+0061 07EF 0315 0300 05AE 0062;0061 05AE 07EF 0300 0315 0062;0061 05AE 07EF 0300 0315 0062;0061 05AE 07EF 0300 0315 0062;0061 05AE 07EF 0300 0315 0062; # (a◌߯◌̕◌̀◌֮b; a◌֮◌߯◌̀◌̕b; a◌֮◌߯◌̀◌̕b; a◌֮◌߯◌̀◌̕b; a◌֮◌߯◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING LONG HIGH TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07F0 0062;00E0 05AE 07F0 0315 0062;0061 05AE 0300 07F0 0315 0062;00E0 05AE 07F0 0315 0062;0061 05AE 0300 07F0 0315 0062; # (a◌̕◌̀◌֮◌߰b; à◌֮◌߰◌̕b; a◌֮◌̀◌߰◌̕b; à◌֮◌߰◌̕b; a◌֮◌̀◌߰◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING LONG LOW TONE, LATIN SMALL LETTER B
+0061 07F0 0315 0300 05AE 0062;0061 05AE 07F0 0300 0315 0062;0061 05AE 07F0 0300 0315 0062;0061 05AE 07F0 0300 0315 0062;0061 05AE 07F0 0300 0315 0062; # (a◌߰◌̕◌̀◌֮b; a◌֮◌߰◌̀◌̕b; a◌֮◌߰◌̀◌̕b; a◌֮◌߰◌̀◌̕b; a◌֮◌߰◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING LONG LOW TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07F1 0062;00E0 05AE 07F1 0315 0062;0061 05AE 0300 07F1 0315 0062;00E0 05AE 07F1 0315 0062;0061 05AE 0300 07F1 0315 0062; # (a◌̕◌̀◌֮◌߱b; à◌֮◌߱◌̕b; a◌֮◌̀◌߱◌̕b; à◌֮◌߱◌̕b; a◌֮◌̀◌߱◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING LONG RISING TONE, LATIN SMALL LETTER B
+0061 07F1 0315 0300 05AE 0062;0061 05AE 07F1 0300 0315 0062;0061 05AE 07F1 0300 0315 0062;0061 05AE 07F1 0300 0315 0062;0061 05AE 07F1 0300 0315 0062; # (a◌߱◌̕◌̀◌֮b; a◌֮◌߱◌̀◌̕b; a◌֮◌߱◌̀◌̕b; a◌֮◌߱◌̀◌̕b; a◌֮◌߱◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING LONG RISING TONE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 07F2 0062;0061 302A 0316 07F2 059A 0062;0061 302A 0316 07F2 059A 0062;0061 302A 0316 07F2 059A 0062;0061 302A 0316 07F2 059A 0062; # (a◌֚◌̖◌〪◌߲b; a◌〪◌̖◌߲◌֚b; a◌〪◌̖◌߲◌֚b; a◌〪◌̖◌߲◌֚b; a◌〪◌̖◌߲◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, NKO COMBINING NASALIZATION MARK, LATIN SMALL LETTER B
+0061 07F2 059A 0316 302A 0062;0061 302A 07F2 0316 059A 0062;0061 302A 07F2 0316 059A 0062;0061 302A 07F2 0316 059A 0062;0061 302A 07F2 0316 059A 0062; # (a◌߲◌֚◌̖◌〪b; a◌〪◌߲◌̖◌֚b; a◌〪◌߲◌̖◌֚b; a◌〪◌߲◌̖◌֚b; a◌〪◌߲◌̖◌֚b; ) LATIN SMALL LETTER A, NKO COMBINING NASALIZATION MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 07F3 0062;00E0 05AE 07F3 0315 0062;0061 05AE 0300 07F3 0315 0062;00E0 05AE 07F3 0315 0062;0061 05AE 0300 07F3 0315 0062; # (a◌̕◌̀◌֮◌߳b; à◌֮◌߳◌̕b; a◌֮◌̀◌߳◌̕b; à◌֮◌߳◌̕b; a◌֮◌̀◌߳◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, NKO COMBINING DOUBLE DOT ABOVE, LATIN SMALL LETTER B
+0061 07F3 0315 0300 05AE 0062;0061 05AE 07F3 0300 0315 0062;0061 05AE 07F3 0300 0315 0062;0061 05AE 07F3 0300 0315 0062;0061 05AE 07F3 0300 0315 0062; # (a◌߳◌̕◌̀◌֮b; a◌֮◌߳◌̀◌̕b; a◌֮◌߳◌̀◌̕b; a◌֮◌߳◌̀◌̕b; a◌֮◌߳◌̀◌̕b; ) LATIN SMALL LETTER A, NKO COMBINING DOUBLE DOT ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 3099 093C 0334 093C 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062; # (a◌゙◌़◌̴◌़b; a◌̴◌़◌़◌゙b; a◌̴◌़◌़◌゙b; a◌̴◌़◌़◌゙b; a◌̴◌़◌़◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, DEVANAGARI SIGN NUKTA, LATIN SMALL LETTER B
+0061 093C 3099 093C 0334 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062; # (a◌़◌゙◌़◌̴b; a◌̴◌़◌़◌゙b; a◌̴◌़◌़◌゙b; a◌̴◌़◌़◌゙b; a◌̴◌़◌़◌゙b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 094D 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà¥b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 094D 05B0 094D 3099 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062; # (aâ—Œà¥â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; a◌゙◌à¥â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0951 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062; # (a◌̕◌̀◌֮◌॑b; à◌֮◌॑◌̕b; a◌֮◌̀◌॑◌̕b; à◌֮◌॑◌̕b; a◌֮◌̀◌॑◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, DEVANAGARI STRESS SIGN UDATTA, LATIN SMALL LETTER B
+0061 0951 0315 0300 05AE 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062; # (a◌॑◌̕◌̀◌֮b; a◌֮◌॑◌̀◌̕b; a◌֮◌॑◌̀◌̕b; a◌֮◌॑◌̀◌̕b; a◌֮◌॑◌̀◌̕b; ) LATIN SMALL LETTER A, DEVANAGARI STRESS SIGN UDATTA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0952 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062; # (a◌֚◌̖◌〪◌॒b; a◌〪◌̖◌॒◌֚b; a◌〪◌̖◌॒◌֚b; a◌〪◌̖◌॒◌֚b; a◌〪◌̖◌॒◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, DEVANAGARI STRESS SIGN ANUDATTA, LATIN SMALL LETTER B
+0061 0952 059A 0316 302A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062; # (a◌॒◌֚◌̖◌〪b; a◌〪◌॒◌̖◌֚b; a◌〪◌॒◌̖◌֚b; a◌〪◌॒◌̖◌֚b; a◌〪◌॒◌̖◌֚b; ) LATIN SMALL LETTER A, DEVANAGARI STRESS SIGN ANUDATTA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0953 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062; # (a◌̕◌̀◌֮◌॓b; à◌֮◌॓◌̕b; a◌֮◌̀◌॓◌̕b; à◌֮◌॓◌̕b; a◌֮◌̀◌॓◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, DEVANAGARI GRAVE ACCENT, LATIN SMALL LETTER B
+0061 0953 0315 0300 05AE 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062; # (a◌॓◌̕◌̀◌֮b; a◌֮◌॓◌̀◌̕b; a◌֮◌॓◌̀◌̕b; a◌֮◌॓◌̀◌̕b; a◌֮◌॓◌̀◌̕b; ) LATIN SMALL LETTER A, DEVANAGARI GRAVE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0954 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062; # (a◌̕◌̀◌֮◌॔b; à◌֮◌॔◌̕b; a◌֮◌̀◌॔◌̕b; à◌֮◌॔◌̕b; a◌֮◌̀◌॔◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, DEVANAGARI ACUTE ACCENT, LATIN SMALL LETTER B
+0061 0954 0315 0300 05AE 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062; # (a◌॔◌̕◌̀◌֮b; a◌֮◌॔◌̀◌̕b; a◌֮◌॔◌̀◌̕b; a◌֮◌॔◌̀◌̕b; a◌֮◌॔◌̀◌̕b; ) LATIN SMALL LETTER A, DEVANAGARI ACUTE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 3099 093C 0334 09BC 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062; # (a◌゙◌़◌̴◌়b; a◌̴◌़◌়◌゙b; a◌̴◌़◌়◌゙b; a◌̴◌़◌়◌゙b; a◌̴◌़◌়◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, BENGALI SIGN NUKTA, LATIN SMALL LETTER B
+0061 09BC 3099 093C 0334 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062; # (a◌়◌゙◌़◌̴b; a◌̴◌়◌़◌゙b; a◌̴◌়◌़◌゙b; a◌̴◌়◌़◌゙b; a◌̴◌়◌़◌゙b; ) LATIN SMALL LETTER A, BENGALI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 09CD 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà§b; a◌゙◌à¥â—Œà§â—ŒÖ°b; a◌゙◌à¥â—Œà§â—ŒÖ°b; a◌゙◌à¥â—Œà§â—ŒÖ°b; a◌゙◌à¥â—Œà§â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, BENGALI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 09CD 05B0 094D 3099 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062; # (aâ—Œà§â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à§â—Œà¥â—ŒÖ°b; a◌゙◌à§â—Œà¥â—ŒÖ°b; a◌゙◌à§â—Œà¥â—ŒÖ°b; a◌゙◌à§â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, BENGALI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 0A3C 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062; # (a◌゙◌़◌̴◌਼b; a◌̴◌़◌਼◌゙b; a◌̴◌़◌਼◌゙b; a◌̴◌़◌਼◌゙b; a◌̴◌़◌਼◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, GURMUKHI SIGN NUKTA, LATIN SMALL LETTER B
+0061 0A3C 3099 093C 0334 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062; # (a◌਼◌゙◌़◌̴b; a◌̴◌਼◌़◌゙b; a◌̴◌਼◌़◌゙b; a◌̴◌਼◌़◌゙b; a◌̴◌਼◌़◌゙b; ) LATIN SMALL LETTER A, GURMUKHI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0A4D 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà©b; a◌゙◌à¥â—Œà©â—ŒÖ°b; a◌゙◌à¥â—Œà©â—ŒÖ°b; a◌゙◌à¥â—Œà©â—ŒÖ°b; a◌゙◌à¥â—Œà©â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, GURMUKHI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0A4D 05B0 094D 3099 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062; # (aâ—Œà©â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à©â—Œà¥â—ŒÖ°b; a◌゙◌à©â—Œà¥â—ŒÖ°b; a◌゙◌à©â—Œà¥â—ŒÖ°b; a◌゙◌à©â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, GURMUKHI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 0ABC 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062; # (a◌゙◌़◌̴◌઼b; a◌̴◌़◌઼◌゙b; a◌̴◌़◌઼◌゙b; a◌̴◌़◌઼◌゙b; a◌̴◌़◌઼◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, GUJARATI SIGN NUKTA, LATIN SMALL LETTER B
+0061 0ABC 3099 093C 0334 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062; # (a◌઼◌゙◌़◌̴b; a◌̴◌઼◌़◌゙b; a◌̴◌઼◌़◌゙b; a◌̴◌઼◌़◌゙b; a◌̴◌઼◌़◌゙b; ) LATIN SMALL LETTER A, GUJARATI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0ACD 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà«b; a◌゙◌à¥â—Œà«â—ŒÖ°b; a◌゙◌à¥â—Œà«â—ŒÖ°b; a◌゙◌à¥â—Œà«â—ŒÖ°b; a◌゙◌à¥â—Œà«â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, GUJARATI SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0ACD 05B0 094D 3099 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062; # (aâ—Œà«â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à«â—Œà¥â—ŒÖ°b; a◌゙◌à«â—Œà¥â—ŒÖ°b; a◌゙◌à«â—Œà¥â—ŒÖ°b; a◌゙◌à«â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, GUJARATI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 0B3C 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062; # (a◌゙◌़◌̴◌଼b; a◌̴◌़◌଼◌゙b; a◌̴◌़◌଼◌゙b; a◌̴◌़◌଼◌゙b; a◌̴◌़◌଼◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, ORIYA SIGN NUKTA, LATIN SMALL LETTER B
+0061 0B3C 3099 093C 0334 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062; # (a◌଼◌゙◌़◌̴b; a◌̴◌଼◌़◌゙b; a◌̴◌଼◌़◌゙b; a◌̴◌଼◌़◌゙b; a◌̴◌଼◌़◌゙b; ) LATIN SMALL LETTER A, ORIYA SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0B4D 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà­b; a◌゙◌à¥â—Œà­â—ŒÖ°b; a◌゙◌à¥â—Œà­â—ŒÖ°b; a◌゙◌à¥â—Œà­â—ŒÖ°b; a◌゙◌à¥â—Œà­â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, ORIYA SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0B4D 05B0 094D 3099 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062; # (aâ—Œà­â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à­â—Œà¥â—ŒÖ°b; a◌゙◌à­â—Œà¥â—ŒÖ°b; a◌゙◌à­â—Œà¥â—ŒÖ°b; a◌゙◌à­â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, ORIYA SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0BCD 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà¯b; a◌゙◌à¥â—Œà¯â—ŒÖ°b; a◌゙◌à¥â—Œà¯â—ŒÖ°b; a◌゙◌à¥â—Œà¯â—ŒÖ°b; a◌゙◌à¥â—Œà¯â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, TAMIL SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0BCD 05B0 094D 3099 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062; # (aâ—Œà¯â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à¯â—Œà¥â—ŒÖ°b; a◌゙◌à¯â—Œà¥â—ŒÖ°b; a◌゙◌à¯â—Œà¥â—ŒÖ°b; a◌゙◌à¯â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, TAMIL SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0C4D 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà±b; a◌゙◌à¥â—Œà±â—ŒÖ°b; a◌゙◌à¥â—Œà±â—ŒÖ°b; a◌゙◌à¥â—Œà±â—ŒÖ°b; a◌゙◌à¥â—Œà±â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, TELUGU SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0C4D 05B0 094D 3099 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062; # (aâ—Œà±â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à±â—Œà¥â—ŒÖ°b; a◌゙◌à±â—Œà¥â—ŒÖ°b; a◌゙◌à±â—Œà¥â—ŒÖ°b; a◌゙◌à±â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, TELUGU SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0C56 0C55 0711 0C55 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062; # (a◌ౖ◌ౕ◌ܑ◌ౕb; a◌ܑ◌ౕ◌ౕ◌ౖb; a◌ܑ◌ౕ◌ౕ◌ౖb; a◌ܑ◌ౕ◌ౕ◌ౖb; a◌ܑ◌ౕ◌ౕ◌ౖb; ) LATIN SMALL LETTER A, TELUGU AI LENGTH MARK, TELUGU LENGTH MARK, SYRIAC LETTER SUPERSCRIPT ALAPH, TELUGU LENGTH MARK, LATIN SMALL LETTER B
+0061 0C55 0C56 0C55 0711 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062; # (a◌ౕ◌ౖ◌ౕ◌ܑb; a◌ܑ◌ౕ◌ౕ◌ౖb; a◌ܑ◌ౕ◌ౕ◌ౖb; a◌ܑ◌ౕ◌ౕ◌ౖb; a◌ܑ◌ౕ◌ౕ◌ౖb; ) LATIN SMALL LETTER A, TELUGU LENGTH MARK, TELUGU AI LENGTH MARK, TELUGU LENGTH MARK, SYRIAC LETTER SUPERSCRIPT ALAPH, LATIN SMALL LETTER B
+0061 0E38 0C56 0C55 0C56 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062; # (a◌ุ◌ౖ◌ౕ◌ౖb; a◌ౕ◌ౖ◌ౖ◌ุb; a◌ౕ◌ౖ◌ౖ◌ุb; a◌ౕ◌ౖ◌ౖ◌ุb; a◌ౕ◌ౖ◌ౖ◌ุb; ) LATIN SMALL LETTER A, THAI CHARACTER SARA U, TELUGU AI LENGTH MARK, TELUGU LENGTH MARK, TELUGU AI LENGTH MARK, LATIN SMALL LETTER B
+0061 0C56 0E38 0C56 0C55 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062; # (a◌ౖ◌ุ◌ౖ◌ౕb; a◌ౕ◌ౖ◌ౖ◌ุb; a◌ౕ◌ౖ◌ౖ◌ุb; a◌ౕ◌ౖ◌ౖ◌ุb; a◌ౕ◌ౖ◌ౖ◌ุb; ) LATIN SMALL LETTER A, TELUGU AI LENGTH MARK, THAI CHARACTER SARA U, TELUGU AI LENGTH MARK, TELUGU LENGTH MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 0CBC 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062; # (a◌゙◌़◌̴◌಼b; a◌̴◌़◌಼◌゙b; a◌̴◌़◌಼◌゙b; a◌̴◌़◌಼◌゙b; a◌̴◌़◌಼◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, KANNADA SIGN NUKTA, LATIN SMALL LETTER B
+0061 0CBC 3099 093C 0334 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062; # (a◌಼◌゙◌़◌̴b; a◌̴◌಼◌़◌゙b; a◌̴◌಼◌़◌゙b; a◌̴◌಼◌़◌゙b; a◌̴◌಼◌़◌゙b; ) LATIN SMALL LETTER A, KANNADA SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0CCD 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà³b; a◌゙◌à¥â—Œà³â—ŒÖ°b; a◌゙◌à¥â—Œà³â—ŒÖ°b; a◌゙◌à¥â—Œà³â—ŒÖ°b; a◌゙◌à¥â—Œà³â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KANNADA SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0CCD 05B0 094D 3099 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062; # (aâ—Œà³â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌à³â—Œà¥â—ŒÖ°b; a◌゙◌à³â—Œà¥â—ŒÖ°b; a◌゙◌à³â—Œà¥â—ŒÖ°b; a◌゙◌à³â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, KANNADA SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0D4D 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œàµb; a◌゙◌à¥â—Œàµâ—ŒÖ°b; a◌゙◌à¥â—Œàµâ—ŒÖ°b; a◌゙◌à¥â—Œàµâ—ŒÖ°b; a◌゙◌à¥â—Œàµâ—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, MALAYALAM SIGN VIRAMA, LATIN SMALL LETTER B
+0061 0D4D 05B0 094D 3099 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062; # (aâ—Œàµâ—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌àµâ—Œà¥â—ŒÖ°b; a◌゙◌àµâ—Œà¥â—ŒÖ°b; a◌゙◌àµâ—Œà¥â—ŒÖ°b; a◌゙◌àµâ—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, MALAYALAM SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0DCA 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà·Šb; a◌゙◌à¥â—Œà·Šâ—ŒÖ°b; a◌゙◌à¥â—Œà·Šâ—ŒÖ°b; a◌゙◌à¥â—Œà·Šâ—ŒÖ°b; a◌゙◌à¥â—Œà·Šâ—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, SINHALA SIGN AL-LAKUNA, LATIN SMALL LETTER B
+0061 0DCA 05B0 094D 3099 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062; # (a◌්◌ְ◌à¥â—Œã‚™b; a◌゙◌්◌à¥â—ŒÖ°b; a◌゙◌්◌à¥â—ŒÖ°b; a◌゙◌්◌à¥â—ŒÖ°b; a◌゙◌්◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, SINHALA SIGN AL-LAKUNA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0E48 0E38 0C56 0E38 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062; # (a◌่◌ุ◌ౖ◌ุb; a◌ౖ◌ุ◌ุ◌่b; a◌ౖ◌ุ◌ุ◌่b; a◌ౖ◌ุ◌ุ◌่b; a◌ౖ◌ุ◌ุ◌่b; ) LATIN SMALL LETTER A, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, TELUGU AI LENGTH MARK, THAI CHARACTER SARA U, LATIN SMALL LETTER B
+0061 0E38 0E48 0E38 0C56 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062; # (a◌ุ◌่◌ุ◌ౖb; a◌ౖ◌ุ◌ุ◌่b; a◌ౖ◌ุ◌ุ◌่b; a◌ౖ◌ุ◌ุ◌่b; a◌ౖ◌ุ◌ุ◌่b; ) LATIN SMALL LETTER A, THAI CHARACTER SARA U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, TELUGU AI LENGTH MARK, LATIN SMALL LETTER B
+0061 0E48 0E38 0C56 0E39 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062; # (a◌่◌ุ◌ౖ◌ูb; a◌ౖ◌ุ◌ู◌่b; a◌ౖ◌ุ◌ู◌่b; a◌ౖ◌ุ◌ู◌่b; a◌ౖ◌ุ◌ู◌่b; ) LATIN SMALL LETTER A, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, TELUGU AI LENGTH MARK, THAI CHARACTER SARA UU, LATIN SMALL LETTER B
+0061 0E39 0E48 0E38 0C56 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062; # (a◌ู◌่◌ุ◌ౖb; a◌ౖ◌ู◌ุ◌่b; a◌ౖ◌ู◌ุ◌่b; a◌ౖ◌ู◌ุ◌่b; a◌ౖ◌ู◌ุ◌่b; ) LATIN SMALL LETTER A, THAI CHARACTER SARA UU, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, TELUGU AI LENGTH MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0E3A 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà¸ºb; a◌゙◌à¥â—Œà¸ºâ—ŒÖ°b; a◌゙◌à¥â—Œà¸ºâ—ŒÖ°b; a◌゙◌à¥â—Œà¸ºâ—ŒÖ°b; a◌゙◌à¥â—Œà¸ºâ—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, THAI CHARACTER PHINTHU, LATIN SMALL LETTER B
+0061 0E3A 05B0 094D 3099 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062; # (a◌ฺ◌ְ◌à¥â—Œã‚™b; a◌゙◌ฺ◌à¥â—ŒÖ°b; a◌゙◌ฺ◌à¥â—ŒÖ°b; a◌゙◌ฺ◌à¥â—ŒÖ°b; a◌゙◌ฺ◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, THAI CHARACTER PHINTHU, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0EB8 0E48 0E38 0E48 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062; # (a◌ຸ◌่◌ุ◌่b; a◌ุ◌่◌่◌ຸb; a◌ุ◌่◌่◌ຸb; a◌ุ◌่◌่◌ຸb; a◌ุ◌่◌่◌ຸb; ) LATIN SMALL LETTER A, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, THAI CHARACTER MAI EK, LATIN SMALL LETTER B
+0061 0E48 0EB8 0E48 0E38 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062; # (a◌่◌ຸ◌่◌ุb; a◌ุ◌่◌่◌ຸb; a◌ุ◌่◌่◌ຸb; a◌ุ◌่◌่◌ຸb; a◌ุ◌่◌่◌ຸb; ) LATIN SMALL LETTER A, THAI CHARACTER MAI EK, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, LATIN SMALL LETTER B
+0061 0EB8 0E48 0E38 0E49 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062; # (a◌ຸ◌่◌ุ◌้b; a◌ุ◌่◌้◌ຸb; a◌ุ◌่◌้◌ຸb; a◌ุ◌่◌้◌ຸb; a◌ุ◌่◌้◌ຸb; ) LATIN SMALL LETTER A, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, THAI CHARACTER MAI THO, LATIN SMALL LETTER B
+0061 0E49 0EB8 0E48 0E38 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062; # (a◌้◌ຸ◌่◌ุb; a◌ุ◌้◌่◌ຸb; a◌ุ◌้◌่◌ຸb; a◌ุ◌้◌่◌ຸb; a◌ุ◌้◌่◌ຸb; ) LATIN SMALL LETTER A, THAI CHARACTER MAI THO, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, LATIN SMALL LETTER B
+0061 0EB8 0E48 0E38 0E4A 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062; # (a◌ຸ◌่◌ุ◌๊b; a◌ุ◌่◌๊◌ຸb; a◌ุ◌่◌๊◌ຸb; a◌ุ◌่◌๊◌ຸb; a◌ุ◌่◌๊◌ຸb; ) LATIN SMALL LETTER A, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, THAI CHARACTER MAI TRI, LATIN SMALL LETTER B
+0061 0E4A 0EB8 0E48 0E38 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062; # (a◌๊◌ຸ◌่◌ุb; a◌ุ◌๊◌่◌ຸb; a◌ุ◌๊◌่◌ຸb; a◌ุ◌๊◌่◌ຸb; a◌ุ◌๊◌่◌ຸb; ) LATIN SMALL LETTER A, THAI CHARACTER MAI TRI, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, LATIN SMALL LETTER B
+0061 0EB8 0E48 0E38 0E4B 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062; # (a◌ຸ◌่◌ุ◌๋b; a◌ุ◌่◌๋◌ຸb; a◌ุ◌่◌๋◌ຸb; a◌ุ◌่◌๋◌ຸb; a◌ุ◌่◌๋◌ຸb; ) LATIN SMALL LETTER A, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, THAI CHARACTER MAI CHATTAWA, LATIN SMALL LETTER B
+0061 0E4B 0EB8 0E48 0E38 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062; # (a◌๋◌ຸ◌่◌ุb; a◌ุ◌๋◌่◌ຸb; a◌ุ◌๋◌่◌ຸb; a◌ุ◌๋◌่◌ຸb; a◌ุ◌๋◌่◌ຸb; ) LATIN SMALL LETTER A, THAI CHARACTER MAI CHATTAWA, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, THAI CHARACTER SARA U, LATIN SMALL LETTER B
+0061 0EC8 0EB8 0E48 0EB8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062; # (a◌່◌ຸ◌่◌ຸb; a◌่◌ຸ◌ຸ◌່b; a◌่◌ຸ◌ຸ◌່b; a◌่◌ຸ◌ຸ◌່b; a◌่◌ຸ◌ຸ◌່b; ) LATIN SMALL LETTER A, LAO TONE MAI EK, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, LAO VOWEL SIGN U, LATIN SMALL LETTER B
+0061 0EB8 0EC8 0EB8 0E48 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062; # (a◌ຸ◌່◌ຸ◌่b; a◌่◌ຸ◌ຸ◌່b; a◌่◌ຸ◌ຸ◌່b; a◌่◌ຸ◌ຸ◌່b; a◌่◌ຸ◌ຸ◌່b; ) LATIN SMALL LETTER A, LAO VOWEL SIGN U, LAO TONE MAI EK, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, LATIN SMALL LETTER B
+0061 0EC8 0EB8 0E48 0EB9 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062; # (a◌່◌ຸ◌่◌ູb; a◌่◌ຸ◌ູ◌່b; a◌่◌ຸ◌ູ◌່b; a◌่◌ຸ◌ູ◌່b; a◌่◌ຸ◌ູ◌່b; ) LATIN SMALL LETTER A, LAO TONE MAI EK, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, LAO VOWEL SIGN UU, LATIN SMALL LETTER B
+0061 0EB9 0EC8 0EB8 0E48 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062; # (a◌ູ◌່◌ຸ◌่b; a◌่◌ູ◌ຸ◌່b; a◌่◌ູ◌ຸ◌່b; a◌่◌ູ◌ຸ◌່b; a◌่◌ູ◌ຸ◌່b; ) LATIN SMALL LETTER A, LAO VOWEL SIGN UU, LAO TONE MAI EK, LAO VOWEL SIGN U, THAI CHARACTER MAI EK, LATIN SMALL LETTER B
+0061 0F71 0EC8 0EB8 0EC8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062; # (a◌ཱ◌່◌ຸ◌່b; a◌ຸ◌່◌່◌ཱb; a◌ຸ◌່◌່◌ཱb; a◌ຸ◌່◌່◌ཱb; a◌ຸ◌່◌່◌ཱb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LAO TONE MAI EK, LATIN SMALL LETTER B
+0061 0EC8 0F71 0EC8 0EB8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062; # (a◌່◌ཱ◌່◌ຸb; a◌ຸ◌່◌່◌ཱb; a◌ຸ◌່◌່◌ཱb; a◌ຸ◌່◌່◌ཱb; a◌ຸ◌່◌່◌ཱb; ) LATIN SMALL LETTER A, LAO TONE MAI EK, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LATIN SMALL LETTER B
+0061 0F71 0EC8 0EB8 0EC9 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062; # (a◌ཱ◌່◌ຸ◌້b; a◌ຸ◌່◌້◌ཱb; a◌ຸ◌່◌້◌ཱb; a◌ຸ◌່◌້◌ཱb; a◌ຸ◌່◌້◌ཱb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LAO TONE MAI THO, LATIN SMALL LETTER B
+0061 0EC9 0F71 0EC8 0EB8 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062; # (a◌້◌ཱ◌່◌ຸb; a◌ຸ◌້◌່◌ཱb; a◌ຸ◌້◌່◌ཱb; a◌ຸ◌້◌່◌ཱb; a◌ຸ◌້◌່◌ཱb; ) LATIN SMALL LETTER A, LAO TONE MAI THO, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LATIN SMALL LETTER B
+0061 0F71 0EC8 0EB8 0ECA 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062; # (a◌ཱ◌່◌ຸ◌໊b; a◌ຸ◌່◌໊◌ཱb; a◌ຸ◌່◌໊◌ཱb; a◌ຸ◌່◌໊◌ཱb; a◌ຸ◌່◌໊◌ཱb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LAO TONE MAI TI, LATIN SMALL LETTER B
+0061 0ECA 0F71 0EC8 0EB8 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062; # (a◌໊◌ཱ◌່◌ຸb; a◌ຸ◌໊◌່◌ཱb; a◌ຸ◌໊◌່◌ཱb; a◌ຸ◌໊◌່◌ཱb; a◌ຸ◌໊◌່◌ཱb; ) LATIN SMALL LETTER A, LAO TONE MAI TI, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LATIN SMALL LETTER B
+0061 0F71 0EC8 0EB8 0ECB 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062; # (a◌ཱ◌່◌ຸ◌໋b; a◌ຸ◌່◌໋◌ཱb; a◌ຸ◌່◌໋◌ཱb; a◌ຸ◌່◌໋◌ཱb; a◌ຸ◌່◌໋◌ཱb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LAO TONE MAI CATAWA, LATIN SMALL LETTER B
+0061 0ECB 0F71 0EC8 0EB8 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062; # (a◌໋◌ཱ◌່◌ຸb; a◌ຸ◌໋◌່◌ཱb; a◌ຸ◌໋◌່◌ཱb; a◌ຸ◌໋◌່◌ཱb; a◌ຸ◌໋◌່◌ཱb; ) LATIN SMALL LETTER A, LAO TONE MAI CATAWA, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LAO VOWEL SIGN U, LATIN SMALL LETTER B
+0061 059A 0316 302A 0F18 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062; # (a◌֚◌̖◌〪◌༘b; a◌〪◌̖◌༘◌֚b; a◌〪◌̖◌༘◌֚b; a◌〪◌̖◌༘◌֚b; a◌〪◌̖◌༘◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, TIBETAN ASTROLOGICAL SIGN -KHYUD PA, LATIN SMALL LETTER B
+0061 0F18 059A 0316 302A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062; # (a◌༘◌֚◌̖◌〪b; a◌〪◌༘◌̖◌֚b; a◌〪◌༘◌̖◌֚b; a◌〪◌༘◌̖◌֚b; a◌〪◌༘◌̖◌֚b; ) LATIN SMALL LETTER A, TIBETAN ASTROLOGICAL SIGN -KHYUD PA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0F19 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062; # (a◌֚◌̖◌〪◌༙b; a◌〪◌̖◌༙◌֚b; a◌〪◌̖◌༙◌֚b; a◌〪◌̖◌༙◌֚b; a◌〪◌̖◌༙◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS, LATIN SMALL LETTER B
+0061 0F19 059A 0316 302A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062; # (a◌༙◌֚◌̖◌〪b; a◌〪◌༙◌̖◌֚b; a◌〪◌༙◌̖◌֚b; a◌〪◌༙◌̖◌֚b; a◌〪◌༙◌̖◌֚b; ) LATIN SMALL LETTER A, TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0F35 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062; # (a◌֚◌̖◌〪◌༵b; a◌〪◌̖◌༵◌֚b; a◌〪◌̖◌༵◌֚b; a◌〪◌̖◌༵◌֚b; a◌〪◌̖◌༵◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, TIBETAN MARK NGAS BZUNG NYI ZLA, LATIN SMALL LETTER B
+0061 0F35 059A 0316 302A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062; # (a◌༵◌֚◌̖◌〪b; a◌〪◌༵◌̖◌֚b; a◌〪◌༵◌̖◌֚b; a◌〪◌༵◌̖◌֚b; a◌〪◌༵◌̖◌֚b; ) LATIN SMALL LETTER A, TIBETAN MARK NGAS BZUNG NYI ZLA, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 0F37 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062; # (a◌֚◌̖◌〪◌༷b; a◌〪◌̖◌༷◌֚b; a◌〪◌̖◌༷◌֚b; a◌〪◌̖◌༷◌֚b; a◌〪◌̖◌༷◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, TIBETAN MARK NGAS BZUNG SGOR RTAGS, LATIN SMALL LETTER B
+0061 0F37 059A 0316 302A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062; # (a◌༷◌֚◌̖◌〪b; a◌〪◌༷◌̖◌֚b; a◌〪◌༷◌̖◌֚b; a◌〪◌༷◌̖◌֚b; a◌〪◌༷◌̖◌֚b; ) LATIN SMALL LETTER A, TIBETAN MARK NGAS BZUNG SGOR RTAGS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 302A 031B 0321 0F39 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062; # (a◌〪◌̛◌̡◌༹b; a◌̡◌̛◌༹◌〪b; a◌̡◌̛◌༹◌〪b; a◌̡◌̛◌༹◌〪b; a◌̡◌̛◌༹◌〪b; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, TIBETAN MARK TSA -PHRU, LATIN SMALL LETTER B
+0061 0F39 302A 031B 0321 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062; # (a◌༹◌〪◌̛◌̡b; a◌̡◌༹◌̛◌〪b; a◌̡◌༹◌̛◌〪b; a◌̡◌༹◌̛◌〪b; a◌̡◌༹◌̛◌〪b; ) LATIN SMALL LETTER A, TIBETAN MARK TSA -PHRU, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, LATIN SMALL LETTER B
+0061 0F72 0F71 0EC8 0F71 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062; # (a◌ི◌ཱ◌່◌ཱb; a◌່◌ཱ◌ཱ◌ིb; a◌່◌ཱ◌ཱ◌ིb; a◌່◌ཱ◌ཱ◌ིb; a◌່◌ཱ◌ཱ◌ིb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0F71 0F72 0F71 0EC8 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062; # (a◌ཱ◌ི◌ཱ◌່b; a◌່◌ཱ◌ཱ◌ིb; a◌່◌ཱ◌ཱ◌ིb; a◌່◌ཱ◌ཱ◌ིb; a◌່◌ཱ◌ཱ◌ིb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LAO TONE MAI EK, LATIN SMALL LETTER B
+0061 0F74 0F72 0F71 0F72 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062; # (a◌ུ◌ི◌ཱ◌ིb; a◌ཱ◌ི◌ི◌ུb; a◌ཱ◌ི◌ི◌ུb; a◌ཱ◌ི◌ི◌ུb; a◌ཱ◌ི◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN I, LATIN SMALL LETTER B
+0061 0F72 0F74 0F72 0F71 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062; # (a◌ི◌ུ◌ི◌ཱb; a◌ཱ◌ི◌ི◌ུb; a◌ཱ◌ི◌ི◌ུb; a◌ཱ◌ི◌ི◌ུb; a◌ཱ◌ི◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0321 0F74 0F72 0F74 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062; # (a◌̡◌ུ◌ི◌ུb; a◌ི◌ུ◌ུ◌̡b; a◌ི◌ུ◌ུ◌̡b; a◌ི◌ུ◌ུ◌̡b; a◌ི◌ུ◌ུ◌̡b; ) LATIN SMALL LETTER A, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN U, LATIN SMALL LETTER B
+0061 0F74 0321 0F74 0F72 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062; # (a◌ུ◌̡◌ུ◌ིb; a◌ི◌ུ◌ུ◌̡b; a◌ི◌ུ◌ུ◌̡b; a◌ི◌ུ◌ུ◌̡b; a◌ི◌ུ◌ུ◌̡b; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, COMBINING PALATALIZED HOOK BELOW, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, LATIN SMALL LETTER B
+0061 0F74 0F72 0F71 0F7A 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062; # (a◌ུ◌ི◌ཱ◌ེb; a◌ཱ◌ི◌ེ◌ུb; a◌ཱ◌ི◌ེ◌ུb; a◌ཱ◌ི◌ེ◌ུb; a◌ཱ◌ི◌ེ◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN E, LATIN SMALL LETTER B
+0061 0F7A 0F74 0F72 0F71 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062; # (a◌ེ◌ུ◌ི◌ཱb; a◌ཱ◌ེ◌ི◌ུb; a◌ཱ◌ེ◌ི◌ུb; a◌ཱ◌ེ◌ི◌ུb; a◌ཱ◌ེ◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN E, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0F74 0F72 0F71 0F7B 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062; # (a◌ུ◌ི◌ཱ◌ཻb; a◌ཱ◌ི◌ཻ◌ུb; a◌ཱ◌ི◌ཻ◌ུb; a◌ཱ◌ི◌ཻ◌ུb; a◌ཱ◌ི◌ཻ◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN EE, LATIN SMALL LETTER B
+0061 0F7B 0F74 0F72 0F71 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062; # (a◌ཻ◌ུ◌ི◌ཱb; a◌ཱ◌ཻ◌ི◌ུb; a◌ཱ◌ཻ◌ི◌ུb; a◌ཱ◌ཻ◌ི◌ུb; a◌ཱ◌ཻ◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN EE, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0F74 0F72 0F71 0F7C 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062; # (a◌ུ◌ི◌ཱ◌ོb; a◌ཱ◌ི◌ོ◌ུb; a◌ཱ◌ི◌ོ◌ུb; a◌ཱ◌ི◌ོ◌ུb; a◌ཱ◌ི◌ོ◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN O, LATIN SMALL LETTER B
+0061 0F7C 0F74 0F72 0F71 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062; # (a◌ོ◌ུ◌ི◌ཱb; a◌ཱ◌ོ◌ི◌ུb; a◌ཱ◌ོ◌ི◌ུb; a◌ཱ◌ོ◌ི◌ུb; a◌ཱ◌ོ◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN O, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0F74 0F72 0F71 0F7D 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062; # (a◌ུ◌ི◌ཱ◌ཽb; a◌ཱ◌ི◌ཽ◌ུb; a◌ཱ◌ི◌ཽ◌ུb; a◌ཱ◌ི◌ཽ◌ུb; a◌ཱ◌ི◌ཽ◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN OO, LATIN SMALL LETTER B
+0061 0F7D 0F74 0F72 0F71 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062; # (a◌ཽ◌ུ◌ི◌ཱb; a◌ཱ◌ཽ◌ི◌ུb; a◌ཱ◌ཽ◌ི◌ུb; a◌ཱ◌ཽ◌ི◌ུb; a◌ཱ◌ཽ◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN OO, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0F74 0F72 0F71 0F80 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062; # (a◌ུ◌ི◌ཱ◌ྀb; a◌ཱ◌ི◌ྀ◌ུb; a◌ཱ◌ི◌ྀ◌ུb; a◌ཱ◌ི◌ྀ◌ུb; a◌ཱ◌ི◌ྀ◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, TIBETAN VOWEL SIGN REVERSED I, LATIN SMALL LETTER B
+0061 0F80 0F74 0F72 0F71 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062; # (a◌ྀ◌ུ◌ི◌ཱb; a◌ཱ◌ྀ◌ི◌ུb; a◌ཱ◌ྀ◌ི◌ུb; a◌ཱ◌ྀ◌ི◌ུb; a◌ཱ◌ྀ◌ི◌ུb; ) LATIN SMALL LETTER A, TIBETAN VOWEL SIGN REVERSED I, TIBETAN VOWEL SIGN U, TIBETAN VOWEL SIGN I, TIBETAN VOWEL SIGN AA, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0F82 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062; # (a◌̕◌̀◌֮◌ྂb; à◌֮◌ྂ◌̕b; a◌֮◌̀◌ྂ◌̕b; à◌֮◌ྂ◌̕b; a◌֮◌̀◌ྂ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TIBETAN SIGN NYI ZLA NAA DA, LATIN SMALL LETTER B
+0061 0F82 0315 0300 05AE 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062; # (a◌ྂ◌̕◌̀◌֮b; a◌֮◌ྂ◌̀◌̕b; a◌֮◌ྂ◌̀◌̕b; a◌֮◌ྂ◌̀◌̕b; a◌֮◌ྂ◌̀◌̕b; ) LATIN SMALL LETTER A, TIBETAN SIGN NYI ZLA NAA DA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0F83 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062; # (a◌̕◌̀◌֮◌ྃb; à◌֮◌ྃ◌̕b; a◌֮◌̀◌ྃ◌̕b; à◌֮◌ྃ◌̕b; a◌֮◌̀◌ྃ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TIBETAN SIGN SNA LDAN, LATIN SMALL LETTER B
+0061 0F83 0315 0300 05AE 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062; # (a◌ྃ◌̕◌̀◌֮b; a◌֮◌ྃ◌̀◌̕b; a◌֮◌ྃ◌̀◌̕b; a◌֮◌ྃ◌̀◌̕b; a◌֮◌ྃ◌̀◌̕b; ) LATIN SMALL LETTER A, TIBETAN SIGN SNA LDAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05B0 094D 3099 0F84 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œà¾„b; a◌゙◌à¥â—Œà¾„◌ְb; a◌゙◌à¥â—Œà¾„◌ְb; a◌゙◌à¥â—Œà¾„◌ְb; a◌゙◌à¥â—Œà¾„◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, TIBETAN MARK HALANTA, LATIN SMALL LETTER B
+0061 0F84 05B0 094D 3099 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062; # (a◌྄◌ְ◌à¥â—Œã‚™b; a◌゙◌྄◌à¥â—ŒÖ°b; a◌゙◌྄◌à¥â—ŒÖ°b; a◌゙◌྄◌à¥â—ŒÖ°b; a◌゙◌྄◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, TIBETAN MARK HALANTA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0F86 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062; # (a◌̕◌̀◌֮◌྆b; à◌֮◌྆◌̕b; a◌֮◌̀◌྆◌̕b; à◌֮◌྆◌̕b; a◌֮◌̀◌྆◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TIBETAN SIGN LCI RTAGS, LATIN SMALL LETTER B
+0061 0F86 0315 0300 05AE 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062; # (a◌྆◌̕◌̀◌֮b; a◌֮◌྆◌̀◌̕b; a◌֮◌྆◌̀◌̕b; a◌֮◌྆◌̀◌̕b; a◌֮◌྆◌̀◌̕b; ) LATIN SMALL LETTER A, TIBETAN SIGN LCI RTAGS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 0F87 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062; # (a◌̕◌̀◌֮◌྇b; à◌֮◌྇◌̕b; a◌֮◌̀◌྇◌̕b; à◌֮◌྇◌̕b; a◌֮◌̀◌྇◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, TIBETAN SIGN YANG RTAGS, LATIN SMALL LETTER B
+0061 0F87 0315 0300 05AE 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062; # (a◌྇◌̕◌̀◌֮b; a◌֮◌྇◌̀◌̕b; a◌֮◌྇◌̀◌̕b; a◌֮◌྇◌̀◌̕b; a◌֮◌྇◌̀◌̕b; ) LATIN SMALL LETTER A, TIBETAN SIGN YANG RTAGS, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 0FC6 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062; # (a◌֚◌̖◌〪◌࿆b; a◌〪◌̖◌࿆◌֚b; a◌〪◌̖◌࿆◌֚b; a◌〪◌̖◌࿆◌֚b; a◌〪◌̖◌࿆◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, TIBETAN SYMBOL PADMA GDAN, LATIN SMALL LETTER B
+0061 0FC6 059A 0316 302A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062; # (a◌࿆◌֚◌̖◌〪b; a◌〪◌࿆◌̖◌֚b; a◌〪◌࿆◌̖◌֚b; a◌〪◌࿆◌̖◌֚b; a◌〪◌࿆◌̖◌֚b; ) LATIN SMALL LETTER A, TIBETAN SYMBOL PADMA GDAN, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 1037 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062; # (a◌゙◌़◌̴◌့b; a◌̴◌़◌့◌゙b; a◌̴◌़◌့◌゙b; a◌̴◌़◌့◌゙b; a◌̴◌़◌့◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, MYANMAR SIGN DOT BELOW, LATIN SMALL LETTER B
+0061 1037 3099 093C 0334 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062; # (a◌့◌゙◌़◌̴b; a◌̴◌့◌़◌゙b; a◌̴◌့◌़◌゙b; a◌̴◌့◌़◌゙b; a◌̴◌့◌़◌゙b; ) LATIN SMALL LETTER A, MYANMAR SIGN DOT BELOW, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1039 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œá€¹b; a◌゙◌à¥â—Œá€¹â—ŒÖ°b; a◌゙◌à¥â—Œá€¹â—ŒÖ°b; a◌゙◌à¥â—Œá€¹â—ŒÖ°b; a◌゙◌à¥â—Œá€¹â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, MYANMAR SIGN VIRAMA, LATIN SMALL LETTER B
+0061 1039 05B0 094D 3099 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062; # (a◌္◌ְ◌à¥â—Œã‚™b; a◌゙◌္◌à¥â—ŒÖ°b; a◌゙◌္◌à¥â—ŒÖ°b; a◌゙◌္◌à¥â—ŒÖ°b; a◌゙◌္◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, MYANMAR SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 135F 0062;00E0 05AE 135F 0315 0062;0061 05AE 0300 135F 0315 0062;00E0 05AE 135F 0315 0062;0061 05AE 0300 135F 0315 0062; # (a◌̕◌̀◌֮◌áŸb; à◌֮◌áŸâ—ŒÌ•b; a◌֮◌̀◌áŸâ—ŒÌ•b; à◌֮◌áŸâ—ŒÌ•b; a◌֮◌̀◌áŸâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ETHIOPIC COMBINING GEMINATION MARK, LATIN SMALL LETTER B
+0061 135F 0315 0300 05AE 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062; # (aâ—ŒáŸâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, ETHIOPIC COMBINING GEMINATION MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1714 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œáœ”b; a◌゙◌à¥â—Œáœ”◌ְb; a◌゙◌à¥â—Œáœ”◌ְb; a◌゙◌à¥â—Œáœ”◌ְb; a◌゙◌à¥â—Œáœ”◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, TAGALOG SIGN VIRAMA, LATIN SMALL LETTER B
+0061 1714 05B0 094D 3099 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062; # (a◌᜔◌ְ◌à¥â—Œã‚™b; a◌゙◌᜔◌à¥â—ŒÖ°b; a◌゙◌᜔◌à¥â—ŒÖ°b; a◌゙◌᜔◌à¥â—ŒÖ°b; a◌゙◌᜔◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, TAGALOG SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1734 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œáœ´b; a◌゙◌à¥â—Œáœ´â—ŒÖ°b; a◌゙◌à¥â—Œáœ´â—ŒÖ°b; a◌゙◌à¥â—Œáœ´â—ŒÖ°b; a◌゙◌à¥â—Œáœ´â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, HANUNOO SIGN PAMUDPOD, LATIN SMALL LETTER B
+0061 1734 05B0 094D 3099 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062; # (a◌᜴◌ְ◌à¥â—Œã‚™b; a◌゙◌᜴◌à¥â—ŒÖ°b; a◌゙◌᜴◌à¥â—ŒÖ°b; a◌゙◌᜴◌à¥â—ŒÖ°b; a◌゙◌᜴◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, HANUNOO SIGN PAMUDPOD, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 17D2 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—ŒáŸ’b; a◌゙◌à¥â—ŒáŸ’◌ְb; a◌゙◌à¥â—ŒáŸ’◌ְb; a◌゙◌à¥â—ŒáŸ’◌ְb; a◌゙◌à¥â—ŒáŸ’◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KHMER SIGN COENG, LATIN SMALL LETTER B
+0061 17D2 05B0 094D 3099 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062; # (a◌្◌ְ◌à¥â—Œã‚™b; a◌゙◌្◌à¥â—ŒÖ°b; a◌゙◌្◌à¥â—ŒÖ°b; a◌゙◌្◌à¥â—ŒÖ°b; a◌゙◌្◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, KHMER SIGN COENG, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 17DD 0062;00E0 05AE 17DD 0315 0062;0061 05AE 0300 17DD 0315 0062;00E0 05AE 17DD 0315 0062;0061 05AE 0300 17DD 0315 0062; # (a◌̕◌̀◌֮◌áŸb; à◌֮◌áŸâ—ŒÌ•b; a◌֮◌̀◌áŸâ—ŒÌ•b; à◌֮◌áŸâ—ŒÌ•b; a◌֮◌̀◌áŸâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, KHMER SIGN ATTHACAN, LATIN SMALL LETTER B
+0061 17DD 0315 0300 05AE 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062; # (aâ—ŒáŸâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; a◌֮◌áŸâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, KHMER SIGN ATTHACAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0300 05AE 1D16D 18A9 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062; # (a◌̀◌֮ð…­â—Œá¢©b; àð…­â—ŒÖ®â—Œá¢©b; að…­â—ŒÖ®â—Œá¢©â—ŒÌ€b; àð…­â—ŒÖ®â—Œá¢©b; að…­â—ŒÖ®â—Œá¢©â—ŒÌ€b; ) LATIN SMALL LETTER A, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, MONGOLIAN LETTER ALI GALI DAGALGA, LATIN SMALL LETTER B
+0061 18A9 0300 05AE 1D16D 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062; # (a◌ᢩ◌̀◌֮ð…­b; àð…­â—Œá¢©â—ŒÖ®b; að…­â—Œá¢©â—ŒÖ®â—ŒÌ€b; àð…­â—Œá¢©â—ŒÖ®b; að…­â—Œá¢©â—ŒÖ®â—ŒÌ€b; ) LATIN SMALL LETTER A, MONGOLIAN LETTER ALI GALI DAGALGA, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, LATIN SMALL LETTER B
+0061 302E 059A 0316 1939 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062; # (a◌〮◌֚◌̖◌᤹b; a◌̖◌֚◌᤹◌〮b; a◌̖◌֚◌᤹◌〮b; a◌̖◌֚◌᤹◌〮b; a◌̖◌֚◌᤹◌〮b; ) LATIN SMALL LETTER A, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, LIMBU SIGN MUKPHRENG, LATIN SMALL LETTER B
+0061 1939 302E 059A 0316 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062; # (a◌᤹◌〮◌֚◌̖b; a◌̖◌᤹◌֚◌〮b; a◌̖◌᤹◌֚◌〮b; a◌̖◌᤹◌֚◌〮b; a◌̖◌᤹◌֚◌〮b; ) LATIN SMALL LETTER A, LIMBU SIGN MUKPHRENG, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, LATIN SMALL LETTER B
+0061 0315 0300 05AE 193A 0062;00E0 05AE 193A 0315 0062;0061 05AE 0300 193A 0315 0062;00E0 05AE 193A 0315 0062;0061 05AE 0300 193A 0315 0062; # (a◌̕◌̀◌֮◌᤺b; à◌֮◌᤺◌̕b; a◌֮◌̀◌᤺◌̕b; à◌֮◌᤺◌̕b; a◌֮◌̀◌᤺◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LIMBU SIGN KEMPHRENG, LATIN SMALL LETTER B
+0061 193A 0315 0300 05AE 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062; # (a◌᤺◌̕◌̀◌֮b; a◌֮◌᤺◌̀◌̕b; a◌֮◌᤺◌̀◌̕b; a◌֮◌᤺◌̀◌̕b; a◌֮◌᤺◌̀◌̕b; ) LATIN SMALL LETTER A, LIMBU SIGN KEMPHRENG, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 193B 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062; # (a◌֚◌̖◌〪◌᤻b; a◌〪◌̖◌᤻◌֚b; a◌〪◌̖◌᤻◌֚b; a◌〪◌̖◌᤻◌֚b; a◌〪◌̖◌᤻◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LIMBU SIGN SA-I, LATIN SMALL LETTER B
+0061 193B 059A 0316 302A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062; # (a◌᤻◌֚◌̖◌〪b; a◌〪◌᤻◌̖◌֚b; a◌〪◌᤻◌̖◌֚b; a◌〪◌᤻◌̖◌֚b; a◌〪◌᤻◌̖◌֚b; ) LATIN SMALL LETTER A, LIMBU SIGN SA-I, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1A17 0062;00E0 05AE 1A17 0315 0062;0061 05AE 0300 1A17 0315 0062;00E0 05AE 1A17 0315 0062;0061 05AE 0300 1A17 0315 0062; # (a◌̕◌̀◌֮◌ᨗb; à◌֮◌ᨗ◌̕b; a◌֮◌̀◌ᨗ◌̕b; à◌֮◌ᨗ◌̕b; a◌֮◌̀◌ᨗ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BUGINESE VOWEL SIGN I, LATIN SMALL LETTER B
+0061 1A17 0315 0300 05AE 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062; # (a◌ᨗ◌̕◌̀◌֮b; a◌֮◌ᨗ◌̀◌̕b; a◌֮◌ᨗ◌̀◌̕b; a◌֮◌ᨗ◌̀◌̕b; a◌֮◌ᨗ◌̀◌̕b; ) LATIN SMALL LETTER A, BUGINESE VOWEL SIGN I, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1A18 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062; # (a◌֚◌̖◌〪◌ᨘb; a◌〪◌̖◌ᨘ◌֚b; a◌〪◌̖◌ᨘ◌֚b; a◌〪◌̖◌ᨘ◌֚b; a◌〪◌̖◌ᨘ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, BUGINESE VOWEL SIGN U, LATIN SMALL LETTER B
+0061 1A18 059A 0316 302A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062; # (a◌ᨘ◌֚◌̖◌〪b; a◌〪◌ᨘ◌̖◌֚b; a◌〪◌ᨘ◌̖◌֚b; a◌〪◌ᨘ◌̖◌֚b; a◌〪◌ᨘ◌̖◌֚b; ) LATIN SMALL LETTER A, BUGINESE VOWEL SIGN U, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 3099 093C 0334 1B34 0062;0061 0334 093C 1B34 3099 0062;0061 0334 093C 1B34 3099 0062;0061 0334 093C 1B34 3099 0062;0061 0334 093C 1B34 3099 0062; # (a◌゙◌़◌̴◌᬴b; a◌̴◌़◌᬴◌゙b; a◌̴◌़◌᬴◌゙b; a◌̴◌़◌᬴◌゙b; a◌̴◌़◌᬴◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, BALINESE SIGN REREKAN, LATIN SMALL LETTER B
+0061 1B34 3099 093C 0334 0062;0061 0334 1B34 093C 3099 0062;0061 0334 1B34 093C 3099 0062;0061 0334 1B34 093C 3099 0062;0061 0334 1B34 093C 3099 0062; # (a◌᬴◌゙◌़◌̴b; a◌̴◌᬴◌़◌゙b; a◌̴◌᬴◌़◌゙b; a◌̴◌᬴◌़◌゙b; a◌̴◌᬴◌़◌゙b; ) LATIN SMALL LETTER A, BALINESE SIGN REREKAN, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05B0 094D 3099 1B44 0062;0061 3099 094D 1B44 05B0 0062;0061 3099 094D 1B44 05B0 0062;0061 3099 094D 1B44 05B0 0062;0061 3099 094D 1B44 05B0 0062; # (a◌ְ◌à¥â—Œã‚™á­„b; a◌゙◌à¥á­„◌ְb; a◌゙◌à¥á­„◌ְb; a◌゙◌à¥á­„◌ְb; a◌゙◌à¥á­„◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, BALINESE ADEG ADEG, LATIN SMALL LETTER B
+0061 1B44 05B0 094D 3099 0062;0061 3099 1B44 094D 05B0 0062;0061 3099 1B44 094D 05B0 0062;0061 3099 1B44 094D 05B0 0062;0061 3099 1B44 094D 05B0 0062; # (a᭄◌ְ◌à¥â—Œã‚™b; a◌゙᭄◌à¥â—ŒÖ°b; a◌゙᭄◌à¥â—ŒÖ°b; a◌゙᭄◌à¥â—ŒÖ°b; a◌゙᭄◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, BALINESE ADEG ADEG, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B6B 0062;00E0 05AE 1B6B 0315 0062;0061 05AE 0300 1B6B 0315 0062;00E0 05AE 1B6B 0315 0062;0061 05AE 0300 1B6B 0315 0062; # (a◌̕◌̀◌֮◌᭫b; à◌֮◌᭫◌̕b; a◌֮◌̀◌᭫◌̕b; à◌֮◌᭫◌̕b; a◌֮◌̀◌᭫◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING TEGEH, LATIN SMALL LETTER B
+0061 1B6B 0315 0300 05AE 0062;0061 05AE 1B6B 0300 0315 0062;0061 05AE 1B6B 0300 0315 0062;0061 05AE 1B6B 0300 0315 0062;0061 05AE 1B6B 0300 0315 0062; # (a◌᭫◌̕◌̀◌֮b; a◌֮◌᭫◌̀◌̕b; a◌֮◌᭫◌̀◌̕b; a◌֮◌᭫◌̀◌̕b; a◌֮◌᭫◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING TEGEH, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1B6C 0062;0061 302A 0316 1B6C 059A 0062;0061 302A 0316 1B6C 059A 0062;0061 302A 0316 1B6C 059A 0062;0061 302A 0316 1B6C 059A 0062; # (a◌֚◌̖◌〪◌᭬b; a◌〪◌̖◌᭬◌֚b; a◌〪◌̖◌᭬◌֚b; a◌〪◌̖◌᭬◌֚b; a◌〪◌̖◌᭬◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, BALINESE MUSICAL SYMBOL COMBINING ENDEP, LATIN SMALL LETTER B
+0061 1B6C 059A 0316 302A 0062;0061 302A 1B6C 0316 059A 0062;0061 302A 1B6C 0316 059A 0062;0061 302A 1B6C 0316 059A 0062;0061 302A 1B6C 0316 059A 0062; # (a◌᭬◌֚◌̖◌〪b; a◌〪◌᭬◌̖◌֚b; a◌〪◌᭬◌̖◌֚b; a◌〪◌᭬◌̖◌֚b; a◌〪◌᭬◌̖◌֚b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING ENDEP, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B6D 0062;00E0 05AE 1B6D 0315 0062;0061 05AE 0300 1B6D 0315 0062;00E0 05AE 1B6D 0315 0062;0061 05AE 0300 1B6D 0315 0062; # (a◌̕◌̀◌֮◌᭭b; à◌֮◌᭭◌̕b; a◌֮◌̀◌᭭◌̕b; à◌֮◌᭭◌̕b; a◌֮◌̀◌᭭◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING KEMPUL, LATIN SMALL LETTER B
+0061 1B6D 0315 0300 05AE 0062;0061 05AE 1B6D 0300 0315 0062;0061 05AE 1B6D 0300 0315 0062;0061 05AE 1B6D 0300 0315 0062;0061 05AE 1B6D 0300 0315 0062; # (a◌᭭◌̕◌̀◌֮b; a◌֮◌᭭◌̀◌̕b; a◌֮◌᭭◌̀◌̕b; a◌֮◌᭭◌̀◌̕b; a◌֮◌᭭◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING KEMPUL, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B6E 0062;00E0 05AE 1B6E 0315 0062;0061 05AE 0300 1B6E 0315 0062;00E0 05AE 1B6E 0315 0062;0061 05AE 0300 1B6E 0315 0062; # (a◌̕◌̀◌֮◌᭮b; à◌֮◌᭮◌̕b; a◌֮◌̀◌᭮◌̕b; à◌֮◌᭮◌̕b; a◌֮◌̀◌᭮◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING KEMPLI, LATIN SMALL LETTER B
+0061 1B6E 0315 0300 05AE 0062;0061 05AE 1B6E 0300 0315 0062;0061 05AE 1B6E 0300 0315 0062;0061 05AE 1B6E 0300 0315 0062;0061 05AE 1B6E 0300 0315 0062; # (a◌᭮◌̕◌̀◌֮b; a◌֮◌᭮◌̀◌̕b; a◌֮◌᭮◌̀◌̕b; a◌֮◌᭮◌̀◌̕b; a◌֮◌᭮◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING KEMPLI, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B6F 0062;00E0 05AE 1B6F 0315 0062;0061 05AE 0300 1B6F 0315 0062;00E0 05AE 1B6F 0315 0062;0061 05AE 0300 1B6F 0315 0062; # (a◌̕◌̀◌֮◌᭯b; à◌֮◌᭯◌̕b; a◌֮◌̀◌᭯◌̕b; à◌֮◌᭯◌̕b; a◌֮◌̀◌᭯◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING JEGOGAN, LATIN SMALL LETTER B
+0061 1B6F 0315 0300 05AE 0062;0061 05AE 1B6F 0300 0315 0062;0061 05AE 1B6F 0300 0315 0062;0061 05AE 1B6F 0300 0315 0062;0061 05AE 1B6F 0300 0315 0062; # (a◌᭯◌̕◌̀◌֮b; a◌֮◌᭯◌̀◌̕b; a◌֮◌᭯◌̀◌̕b; a◌֮◌᭯◌̀◌̕b; a◌֮◌᭯◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING JEGOGAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B70 0062;00E0 05AE 1B70 0315 0062;0061 05AE 0300 1B70 0315 0062;00E0 05AE 1B70 0315 0062;0061 05AE 0300 1B70 0315 0062; # (a◌̕◌̀◌֮◌᭰b; à◌֮◌᭰◌̕b; a◌֮◌̀◌᭰◌̕b; à◌֮◌᭰◌̕b; a◌֮◌̀◌᭰◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN, LATIN SMALL LETTER B
+0061 1B70 0315 0300 05AE 0062;0061 05AE 1B70 0300 0315 0062;0061 05AE 1B70 0300 0315 0062;0061 05AE 1B70 0300 0315 0062;0061 05AE 1B70 0300 0315 0062; # (a◌᭰◌̕◌̀◌֮b; a◌֮◌᭰◌̀◌̕b; a◌֮◌᭰◌̀◌̕b; a◌֮◌᭰◌̀◌̕b; a◌֮◌᭰◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B71 0062;00E0 05AE 1B71 0315 0062;0061 05AE 0300 1B71 0315 0062;00E0 05AE 1B71 0315 0062;0061 05AE 0300 1B71 0315 0062; # (a◌̕◌̀◌֮◌᭱b; à◌֮◌᭱◌̕b; a◌֮◌̀◌᭱◌̕b; à◌֮◌᭱◌̕b; a◌֮◌̀◌᭱◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN, LATIN SMALL LETTER B
+0061 1B71 0315 0300 05AE 0062;0061 05AE 1B71 0300 0315 0062;0061 05AE 1B71 0300 0315 0062;0061 05AE 1B71 0300 0315 0062;0061 05AE 1B71 0300 0315 0062; # (a◌᭱◌̕◌̀◌֮b; a◌֮◌᭱◌̀◌̕b; a◌֮◌᭱◌̀◌̕b; a◌֮◌᭱◌̀◌̕b; a◌֮◌᭱◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B72 0062;00E0 05AE 1B72 0315 0062;0061 05AE 0300 1B72 0315 0062;00E0 05AE 1B72 0315 0062;0061 05AE 0300 1B72 0315 0062; # (a◌̕◌̀◌֮◌᭲b; à◌֮◌᭲◌̕b; a◌֮◌̀◌᭲◌̕b; à◌֮◌᭲◌̕b; a◌֮◌̀◌᭲◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING BENDE, LATIN SMALL LETTER B
+0061 1B72 0315 0300 05AE 0062;0061 05AE 1B72 0300 0315 0062;0061 05AE 1B72 0300 0315 0062;0061 05AE 1B72 0300 0315 0062;0061 05AE 1B72 0300 0315 0062; # (a◌᭲◌̕◌̀◌֮b; a◌֮◌᭲◌̀◌̕b; a◌֮◌᭲◌̀◌̕b; a◌֮◌᭲◌̀◌̕b; a◌֮◌᭲◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING BENDE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1B73 0062;00E0 05AE 1B73 0315 0062;0061 05AE 0300 1B73 0315 0062;00E0 05AE 1B73 0315 0062;0061 05AE 0300 1B73 0315 0062; # (a◌̕◌̀◌֮◌᭳b; à◌֮◌᭳◌̕b; a◌֮◌̀◌᭳◌̕b; à◌֮◌᭳◌̕b; a◌֮◌̀◌᭳◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BALINESE MUSICAL SYMBOL COMBINING GONG, LATIN SMALL LETTER B
+0061 1B73 0315 0300 05AE 0062;0061 05AE 1B73 0300 0315 0062;0061 05AE 1B73 0300 0315 0062;0061 05AE 1B73 0300 0315 0062;0061 05AE 1B73 0300 0315 0062; # (a◌᭳◌̕◌̀◌֮b; a◌֮◌᭳◌̀◌̕b; a◌֮◌᭳◌̀◌̕b; a◌֮◌᭳◌̀◌̕b; a◌֮◌᭳◌̀◌̕b; ) LATIN SMALL LETTER A, BALINESE MUSICAL SYMBOL COMBINING GONG, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC0 0062;00E0 05AE 1DC0 0315 0062;0061 05AE 0300 1DC0 0315 0062;00E0 05AE 1DC0 0315 0062;0061 05AE 0300 1DC0 0315 0062; # (a◌̕◌̀◌֮◌᷀b; à◌֮◌᷀◌̕b; a◌֮◌̀◌᷀◌̕b; à◌֮◌᷀◌̕b; a◌֮◌̀◌᷀◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOTTED GRAVE ACCENT, LATIN SMALL LETTER B
+0061 1DC0 0315 0300 05AE 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062; # (a◌᷀◌̕◌̀◌֮b; a◌֮◌᷀◌̀◌̕b; a◌֮◌᷀◌̀◌̕b; a◌֮◌᷀◌̀◌̕b; a◌֮◌᷀◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOTTED GRAVE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC1 0062;00E0 05AE 1DC1 0315 0062;0061 05AE 0300 1DC1 0315 0062;00E0 05AE 1DC1 0315 0062;0061 05AE 0300 1DC1 0315 0062; # (a◌̕◌̀◌֮◌á·b; à◌֮◌á·â—ŒÌ•b; a◌֮◌̀◌á·â—ŒÌ•b; à◌֮◌á·â—ŒÌ•b; a◌֮◌̀◌á·â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOTTED ACUTE ACCENT, LATIN SMALL LETTER B
+0061 1DC1 0315 0300 05AE 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062; # (aâ—Œá·â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌á·â—ŒÌ€â—ŒÌ•b; a◌֮◌á·â—ŒÌ€â—ŒÌ•b; a◌֮◌á·â—ŒÌ€â—ŒÌ•b; a◌֮◌á·â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING DOTTED ACUTE ACCENT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1DC2 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062; # (a◌֚◌̖◌〪◌᷂b; a◌〪◌̖◌᷂◌֚b; a◌〪◌̖◌᷂◌֚b; a◌〪◌̖◌᷂◌֚b; a◌〪◌̖◌᷂◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING SNAKE BELOW, LATIN SMALL LETTER B
+0061 1DC2 059A 0316 302A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062; # (a◌᷂◌֚◌̖◌〪b; a◌〪◌᷂◌̖◌֚b; a◌〪◌᷂◌̖◌֚b; a◌〪◌᷂◌̖◌֚b; a◌〪◌᷂◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING SNAKE BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC3 0062;00E0 05AE 1DC3 0315 0062;0061 05AE 0300 1DC3 0315 0062;00E0 05AE 1DC3 0315 0062;0061 05AE 0300 1DC3 0315 0062; # (a◌̕◌̀◌֮◌᷃b; à◌֮◌᷃◌̕b; a◌֮◌̀◌᷃◌̕b; à◌֮◌᷃◌̕b; a◌֮◌̀◌᷃◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING SUSPENSION MARK, LATIN SMALL LETTER B
+0061 1DC3 0315 0300 05AE 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062; # (a◌᷃◌̕◌̀◌֮b; a◌֮◌᷃◌̀◌̕b; a◌֮◌᷃◌̀◌̕b; a◌֮◌᷃◌̀◌̕b; a◌֮◌᷃◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING SUSPENSION MARK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC4 0062;00E0 05AE 1DC4 0315 0062;0061 05AE 0300 1DC4 0315 0062;00E0 05AE 1DC4 0315 0062;0061 05AE 0300 1DC4 0315 0062; # (a◌̕◌̀◌֮◌᷄b; à◌֮◌᷄◌̕b; a◌֮◌̀◌᷄◌̕b; à◌֮◌᷄◌̕b; a◌֮◌̀◌᷄◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING MACRON-ACUTE, LATIN SMALL LETTER B
+0061 1DC4 0315 0300 05AE 0062;0061 05AE 1DC4 0300 0315 0062;0061 05AE 1DC4 0300 0315 0062;0061 05AE 1DC4 0300 0315 0062;0061 05AE 1DC4 0300 0315 0062; # (a◌᷄◌̕◌̀◌֮b; a◌֮◌᷄◌̀◌̕b; a◌֮◌᷄◌̀◌̕b; a◌֮◌᷄◌̀◌̕b; a◌֮◌᷄◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING MACRON-ACUTE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC5 0062;00E0 05AE 1DC5 0315 0062;0061 05AE 0300 1DC5 0315 0062;00E0 05AE 1DC5 0315 0062;0061 05AE 0300 1DC5 0315 0062; # (a◌̕◌̀◌֮◌᷅b; à◌֮◌᷅◌̕b; a◌֮◌̀◌᷅◌̕b; à◌֮◌᷅◌̕b; a◌֮◌̀◌᷅◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRAVE-MACRON, LATIN SMALL LETTER B
+0061 1DC5 0315 0300 05AE 0062;0061 05AE 1DC5 0300 0315 0062;0061 05AE 1DC5 0300 0315 0062;0061 05AE 1DC5 0300 0315 0062;0061 05AE 1DC5 0300 0315 0062; # (a◌᷅◌̕◌̀◌֮b; a◌֮◌᷅◌̀◌̕b; a◌֮◌᷅◌̀◌̕b; a◌֮◌᷅◌̀◌̕b; a◌֮◌᷅◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GRAVE-MACRON, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC6 0062;00E0 05AE 1DC6 0315 0062;0061 05AE 0300 1DC6 0315 0062;00E0 05AE 1DC6 0315 0062;0061 05AE 0300 1DC6 0315 0062; # (a◌̕◌̀◌֮◌᷆b; à◌֮◌᷆◌̕b; a◌֮◌̀◌᷆◌̕b; à◌֮◌᷆◌̕b; a◌֮◌̀◌᷆◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING MACRON-GRAVE, LATIN SMALL LETTER B
+0061 1DC6 0315 0300 05AE 0062;0061 05AE 1DC6 0300 0315 0062;0061 05AE 1DC6 0300 0315 0062;0061 05AE 1DC6 0300 0315 0062;0061 05AE 1DC6 0300 0315 0062; # (a◌᷆◌̕◌̀◌֮b; a◌֮◌᷆◌̀◌̕b; a◌֮◌᷆◌̀◌̕b; a◌֮◌᷆◌̀◌̕b; a◌֮◌᷆◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING MACRON-GRAVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC7 0062;00E0 05AE 1DC7 0315 0062;0061 05AE 0300 1DC7 0315 0062;00E0 05AE 1DC7 0315 0062;0061 05AE 0300 1DC7 0315 0062; # (a◌̕◌̀◌֮◌᷇b; à◌֮◌᷇◌̕b; a◌֮◌̀◌᷇◌̕b; à◌֮◌᷇◌̕b; a◌֮◌̀◌᷇◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ACUTE-MACRON, LATIN SMALL LETTER B
+0061 1DC7 0315 0300 05AE 0062;0061 05AE 1DC7 0300 0315 0062;0061 05AE 1DC7 0300 0315 0062;0061 05AE 1DC7 0300 0315 0062;0061 05AE 1DC7 0300 0315 0062; # (a◌᷇◌̕◌̀◌֮b; a◌֮◌᷇◌̀◌̕b; a◌֮◌᷇◌̀◌̕b; a◌֮◌᷇◌̀◌̕b; a◌֮◌᷇◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ACUTE-MACRON, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC8 0062;00E0 05AE 1DC8 0315 0062;0061 05AE 0300 1DC8 0315 0062;00E0 05AE 1DC8 0315 0062;0061 05AE 0300 1DC8 0315 0062; # (a◌̕◌̀◌֮◌᷈b; à◌֮◌᷈◌̕b; a◌֮◌̀◌᷈◌̕b; à◌֮◌᷈◌̕b; a◌֮◌̀◌᷈◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GRAVE-ACUTE-GRAVE, LATIN SMALL LETTER B
+0061 1DC8 0315 0300 05AE 0062;0061 05AE 1DC8 0300 0315 0062;0061 05AE 1DC8 0300 0315 0062;0061 05AE 1DC8 0300 0315 0062;0061 05AE 1DC8 0300 0315 0062; # (a◌᷈◌̕◌̀◌֮b; a◌֮◌᷈◌̀◌̕b; a◌֮◌᷈◌̀◌̕b; a◌֮◌᷈◌̀◌̕b; a◌֮◌᷈◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GRAVE-ACUTE-GRAVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DC9 0062;00E0 05AE 1DC9 0315 0062;0061 05AE 0300 1DC9 0315 0062;00E0 05AE 1DC9 0315 0062;0061 05AE 0300 1DC9 0315 0062; # (a◌̕◌̀◌֮◌᷉b; à◌֮◌᷉◌̕b; a◌֮◌̀◌᷉◌̕b; à◌֮◌᷉◌̕b; a◌֮◌̀◌᷉◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ACUTE-GRAVE-ACUTE, LATIN SMALL LETTER B
+0061 1DC9 0315 0300 05AE 0062;0061 05AE 1DC9 0300 0315 0062;0061 05AE 1DC9 0300 0315 0062;0061 05AE 1DC9 0300 0315 0062;0061 05AE 1DC9 0300 0315 0062; # (a◌᷉◌̕◌̀◌֮b; a◌֮◌᷉◌̀◌̕b; a◌֮◌᷉◌̀◌̕b; a◌֮◌᷉◌̀◌̕b; a◌֮◌᷉◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ACUTE-GRAVE-ACUTE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1DCA 0062;0061 302A 0316 1DCA 059A 0062;0061 302A 0316 1DCA 059A 0062;0061 302A 0316 1DCA 059A 0062;0061 302A 0316 1DCA 059A 0062; # (a◌֚◌̖◌〪◌᷊b; a◌〪◌̖◌᷊◌֚b; a◌〪◌̖◌᷊◌֚b; a◌〪◌̖◌᷊◌֚b; a◌〪◌̖◌᷊◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LATIN SMALL LETTER R BELOW, LATIN SMALL LETTER B
+0061 1DCA 059A 0316 302A 0062;0061 302A 1DCA 0316 059A 0062;0061 302A 1DCA 0316 059A 0062;0061 302A 1DCA 0316 059A 0062;0061 302A 1DCA 0316 059A 0062; # (a◌᷊◌֚◌̖◌〪b; a◌〪◌᷊◌̖◌֚b; a◌〪◌᷊◌̖◌֚b; a◌〪◌᷊◌̖◌֚b; a◌〪◌᷊◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LATIN SMALL LETTER R BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1DFE 0062;00E0 05AE 1DFE 0315 0062;0061 05AE 0300 1DFE 0315 0062;00E0 05AE 1DFE 0315 0062;0061 05AE 0300 1DFE 0315 0062; # (a◌̕◌̀◌֮◌᷾b; à◌֮◌᷾◌̕b; a◌֮◌̀◌᷾◌̕b; à◌֮◌᷾◌̕b; a◌֮◌̀◌᷾◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LEFT ARROWHEAD ABOVE, LATIN SMALL LETTER B
+0061 1DFE 0315 0300 05AE 0062;0061 05AE 1DFE 0300 0315 0062;0061 05AE 1DFE 0300 0315 0062;0061 05AE 1DFE 0300 0315 0062;0061 05AE 1DFE 0300 0315 0062; # (a◌᷾◌̕◌̀◌֮b; a◌֮◌᷾◌̀◌̕b; a◌֮◌᷾◌̀◌̕b; a◌֮◌᷾◌̀◌̕b; a◌֮◌᷾◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LEFT ARROWHEAD ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1DFF 0062;0061 302A 0316 1DFF 059A 0062;0061 302A 0316 1DFF 059A 0062;0061 302A 0316 1DFF 059A 0062;0061 302A 0316 1DFF 059A 0062; # (a◌֚◌̖◌〪◌᷿b; a◌〪◌̖◌᷿◌֚b; a◌〪◌̖◌᷿◌֚b; a◌〪◌̖◌᷿◌֚b; a◌〪◌̖◌᷿◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW, LATIN SMALL LETTER B
+0061 1DFF 059A 0316 302A 0062;0061 302A 1DFF 0316 059A 0062;0061 302A 1DFF 0316 059A 0062;0061 302A 1DFF 0316 059A 0062;0061 302A 1DFF 0316 059A 0062; # (a◌᷿◌֚◌̖◌〪b; a◌〪◌᷿◌̖◌֚b; a◌〪◌᷿◌̖◌֚b; a◌〪◌᷿◌̖◌֚b; a◌〪◌᷿◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20D0 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062; # (a◌̕◌̀◌֮◌âƒb; à◌֮◌âƒâ—ŒÌ•b; a◌֮◌̀◌âƒâ—ŒÌ•b; à◌֮◌âƒâ—ŒÌ•b; a◌֮◌̀◌âƒâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LEFT HARPOON ABOVE, LATIN SMALL LETTER B
+0061 20D0 0315 0300 05AE 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062; # (aâ—Œâƒâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌âƒâ—ŒÌ€â—ŒÌ•b; a◌֮◌âƒâ—ŒÌ€â—ŒÌ•b; a◌֮◌âƒâ—ŒÌ€â—ŒÌ•b; a◌֮◌âƒâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING LEFT HARPOON ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20D1 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062; # (a◌̕◌̀◌֮◌⃑b; à◌֮◌⃑◌̕b; a◌֮◌̀◌⃑◌̕b; à◌֮◌⃑◌̕b; a◌֮◌̀◌⃑◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING RIGHT HARPOON ABOVE, LATIN SMALL LETTER B
+0061 20D1 0315 0300 05AE 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062; # (a◌⃑◌̕◌̀◌֮b; a◌֮◌⃑◌̀◌̕b; a◌֮◌⃑◌̀◌̕b; a◌֮◌⃑◌̀◌̕b; a◌֮◌⃑◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING RIGHT HARPOON ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 093C 0334 20D2 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062; # (a◌़◌̴◌⃒b; a◌̴◌⃒◌़b; a◌̴◌⃒◌़b; a◌̴◌⃒◌़b; a◌̴◌⃒◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING LONG VERTICAL LINE OVERLAY, LATIN SMALL LETTER B
+0061 20D2 093C 0334 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062; # (a◌⃒◌़◌̴b; a◌⃒◌̴◌़b; a◌⃒◌̴◌़b; a◌⃒◌̴◌़b; a◌⃒◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING LONG VERTICAL LINE OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 20D3 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062; # (a◌़◌̴◌⃓b; a◌̴◌⃓◌़b; a◌̴◌⃓◌़b; a◌̴◌⃓◌़b; a◌̴◌⃓◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING SHORT VERTICAL LINE OVERLAY, LATIN SMALL LETTER B
+0061 20D3 093C 0334 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062; # (a◌⃓◌़◌̴b; a◌⃓◌̴◌़b; a◌⃓◌̴◌़b; a◌⃓◌̴◌़b; a◌⃓◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING SHORT VERTICAL LINE OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20D4 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062; # (a◌̕◌̀◌֮◌⃔b; à◌֮◌⃔◌̕b; a◌֮◌̀◌⃔◌̕b; à◌֮◌⃔◌̕b; a◌֮◌̀◌⃔◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ANTICLOCKWISE ARROW ABOVE, LATIN SMALL LETTER B
+0061 20D4 0315 0300 05AE 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062; # (a◌⃔◌̕◌̀◌֮b; a◌֮◌⃔◌̀◌̕b; a◌֮◌⃔◌̀◌̕b; a◌֮◌⃔◌̀◌̕b; a◌֮◌⃔◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ANTICLOCKWISE ARROW ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20D5 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062; # (a◌̕◌̀◌֮◌⃕b; à◌֮◌⃕◌̕b; a◌֮◌̀◌⃕◌̕b; à◌֮◌⃕◌̕b; a◌֮◌̀◌⃕◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CLOCKWISE ARROW ABOVE, LATIN SMALL LETTER B
+0061 20D5 0315 0300 05AE 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062; # (a◌⃕◌̕◌̀◌֮b; a◌֮◌⃕◌̀◌̕b; a◌֮◌⃕◌̀◌̕b; a◌֮◌⃕◌̀◌̕b; a◌֮◌⃕◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CLOCKWISE ARROW ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20D6 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062; # (a◌̕◌̀◌֮◌⃖b; à◌֮◌⃖◌̕b; a◌֮◌̀◌⃖◌̕b; à◌֮◌⃖◌̕b; a◌֮◌̀◌⃖◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LEFT ARROW ABOVE, LATIN SMALL LETTER B
+0061 20D6 0315 0300 05AE 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062; # (a◌⃖◌̕◌̀◌֮b; a◌֮◌⃖◌̀◌̕b; a◌֮◌⃖◌̀◌̕b; a◌֮◌⃖◌̀◌̕b; a◌֮◌⃖◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LEFT ARROW ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20D7 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062; # (a◌̕◌̀◌֮◌⃗b; à◌֮◌⃗◌̕b; a◌֮◌̀◌⃗◌̕b; à◌֮◌⃗◌̕b; a◌֮◌̀◌⃗◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING RIGHT ARROW ABOVE, LATIN SMALL LETTER B
+0061 20D7 0315 0300 05AE 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062; # (a◌⃗◌̕◌̀◌֮b; a◌֮◌⃗◌̀◌̕b; a◌֮◌⃗◌̀◌̕b; a◌֮◌⃗◌̀◌̕b; a◌֮◌⃗◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING RIGHT ARROW ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 093C 0334 20D8 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062; # (a◌़◌̴◌⃘b; a◌̴◌⃘◌़b; a◌̴◌⃘◌़b; a◌̴◌⃘◌़b; a◌̴◌⃘◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING RING OVERLAY, LATIN SMALL LETTER B
+0061 20D8 093C 0334 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062; # (a◌⃘◌़◌̴b; a◌⃘◌̴◌़b; a◌⃘◌̴◌़b; a◌⃘◌̴◌़b; a◌⃘◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING RING OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 20D9 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062; # (a◌़◌̴◌⃙b; a◌̴◌⃙◌़b; a◌̴◌⃙◌़b; a◌̴◌⃙◌़b; a◌̴◌⃙◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING CLOCKWISE RING OVERLAY, LATIN SMALL LETTER B
+0061 20D9 093C 0334 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062; # (a◌⃙◌़◌̴b; a◌⃙◌̴◌़b; a◌⃙◌̴◌़b; a◌⃙◌̴◌़b; a◌⃙◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING CLOCKWISE RING OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 20DA 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062; # (a◌़◌̴◌⃚b; a◌̴◌⃚◌़b; a◌̴◌⃚◌़b; a◌̴◌⃚◌़b; a◌̴◌⃚◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING ANTICLOCKWISE RING OVERLAY, LATIN SMALL LETTER B
+0061 20DA 093C 0334 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062; # (a◌⃚◌़◌̴b; a◌⃚◌̴◌़b; a◌⃚◌̴◌़b; a◌⃚◌̴◌़b; a◌⃚◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING ANTICLOCKWISE RING OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20DB 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062; # (a◌̕◌̀◌֮◌⃛b; à◌֮◌⃛◌̕b; a◌֮◌̀◌⃛◌̕b; à◌֮◌⃛◌̕b; a◌֮◌̀◌⃛◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING THREE DOTS ABOVE, LATIN SMALL LETTER B
+0061 20DB 0315 0300 05AE 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062; # (a◌⃛◌̕◌̀◌֮b; a◌֮◌⃛◌̀◌̕b; a◌֮◌⃛◌̀◌̕b; a◌֮◌⃛◌̀◌̕b; a◌֮◌⃛◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING THREE DOTS ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20DC 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062; # (a◌̕◌̀◌֮◌⃜b; à◌֮◌⃜◌̕b; a◌֮◌̀◌⃜◌̕b; à◌֮◌⃜◌̕b; a◌֮◌̀◌⃜◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING FOUR DOTS ABOVE, LATIN SMALL LETTER B
+0061 20DC 0315 0300 05AE 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062; # (a◌⃜◌̕◌̀◌֮b; a◌֮◌⃜◌̀◌̕b; a◌֮◌⃜◌̀◌̕b; a◌֮◌⃜◌̀◌̕b; a◌֮◌⃜◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING FOUR DOTS ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20E1 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062; # (a◌̕◌̀◌֮◌⃡b; à◌֮◌⃡◌̕b; a◌֮◌̀◌⃡◌̕b; à◌֮◌⃡◌̕b; a◌֮◌̀◌⃡◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LEFT RIGHT ARROW ABOVE, LATIN SMALL LETTER B
+0061 20E1 0315 0300 05AE 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062; # (a◌⃡◌̕◌̀◌֮b; a◌֮◌⃡◌̀◌̕b; a◌֮◌⃡◌̀◌̕b; a◌֮◌⃡◌̀◌̕b; a◌֮◌⃡◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LEFT RIGHT ARROW ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 093C 0334 20E5 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062; # (a◌़◌̴◌⃥b; a◌̴◌⃥◌़b; a◌̴◌⃥◌़b; a◌̴◌⃥◌़b; a◌̴◌⃥◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING REVERSE SOLIDUS OVERLAY, LATIN SMALL LETTER B
+0061 20E5 093C 0334 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062; # (a◌⃥◌़◌̴b; a◌⃥◌̴◌़b; a◌⃥◌̴◌़b; a◌⃥◌̴◌़b; a◌⃥◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING REVERSE SOLIDUS OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 20E6 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062; # (a◌़◌̴◌⃦b; a◌̴◌⃦◌़b; a◌̴◌⃦◌़b; a◌̴◌⃦◌़b; a◌̴◌⃦◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING DOUBLE VERTICAL STROKE OVERLAY, LATIN SMALL LETTER B
+0061 20E6 093C 0334 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062; # (a◌⃦◌़◌̴b; a◌⃦◌̴◌़b; a◌⃦◌̴◌़b; a◌⃦◌̴◌़b; a◌⃦◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING DOUBLE VERTICAL STROKE OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20E7 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062; # (a◌̕◌̀◌֮◌⃧b; à◌֮◌⃧◌̕b; a◌֮◌̀◌⃧◌̕b; à◌֮◌⃧◌̕b; a◌֮◌̀◌⃧◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING ANNUITY SYMBOL, LATIN SMALL LETTER B
+0061 20E7 0315 0300 05AE 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062; # (a◌⃧◌̕◌̀◌֮b; a◌֮◌⃧◌̀◌̕b; a◌֮◌⃧◌̀◌̕b; a◌֮◌⃧◌̀◌̕b; a◌֮◌⃧◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING ANNUITY SYMBOL, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 20E8 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062; # (a◌֚◌̖◌〪◌⃨b; a◌〪◌̖◌⃨◌֚b; a◌〪◌̖◌⃨◌֚b; a◌〪◌̖◌⃨◌֚b; a◌〪◌̖◌⃨◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING TRIPLE UNDERDOT, LATIN SMALL LETTER B
+0061 20E8 059A 0316 302A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062; # (a◌⃨◌֚◌̖◌〪b; a◌〪◌⃨◌̖◌֚b; a◌〪◌⃨◌̖◌֚b; a◌〪◌⃨◌̖◌֚b; a◌〪◌⃨◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING TRIPLE UNDERDOT, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 20E9 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062; # (a◌̕◌̀◌֮◌⃩b; à◌֮◌⃩◌̕b; a◌֮◌̀◌⃩◌̕b; à◌֮◌⃩◌̕b; a◌֮◌̀◌⃩◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING WIDE BRIDGE ABOVE, LATIN SMALL LETTER B
+0061 20E9 0315 0300 05AE 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062; # (a◌⃩◌̕◌̀◌֮b; a◌֮◌⃩◌̀◌̕b; a◌֮◌⃩◌̀◌̕b; a◌֮◌⃩◌̀◌̕b; a◌֮◌⃩◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING WIDE BRIDGE ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 093C 0334 20EA 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062; # (a◌़◌̴◌⃪b; a◌̴◌⃪◌़b; a◌̴◌⃪◌़b; a◌̴◌⃪◌़b; a◌̴◌⃪◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING LEFTWARDS ARROW OVERLAY, LATIN SMALL LETTER B
+0061 20EA 093C 0334 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062; # (a◌⃪◌़◌̴b; a◌⃪◌̴◌़b; a◌⃪◌̴◌़b; a◌⃪◌̴◌़b; a◌⃪◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING LEFTWARDS ARROW OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 20EB 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062; # (a◌़◌̴◌⃫b; a◌̴◌⃫◌़b; a◌̴◌⃫◌़b; a◌̴◌⃫◌़b; a◌̴◌⃫◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, COMBINING LONG DOUBLE SOLIDUS OVERLAY, LATIN SMALL LETTER B
+0061 20EB 093C 0334 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062; # (a◌⃫◌़◌̴b; a◌⃫◌̴◌़b; a◌⃫◌̴◌़b; a◌⃫◌̴◌़b; a◌⃫◌̴◌़b; ) LATIN SMALL LETTER A, COMBINING LONG DOUBLE SOLIDUS OVERLAY, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 059A 0316 302A 20EC 0062;0061 302A 0316 20EC 059A 0062;0061 302A 0316 20EC 059A 0062;0061 302A 0316 20EC 059A 0062;0061 302A 0316 20EC 059A 0062; # (a◌֚◌̖◌〪◌⃬b; a◌〪◌̖◌⃬◌֚b; a◌〪◌̖◌⃬◌֚b; a◌〪◌̖◌⃬◌֚b; a◌〪◌̖◌⃬◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS, LATIN SMALL LETTER B
+0061 20EC 059A 0316 302A 0062;0061 302A 20EC 0316 059A 0062;0061 302A 20EC 0316 059A 0062;0061 302A 20EC 0316 059A 0062;0061 302A 20EC 0316 059A 0062; # (a◌⃬◌֚◌̖◌〪b; a◌〪◌⃬◌̖◌֚b; a◌〪◌⃬◌̖◌֚b; a◌〪◌⃬◌̖◌֚b; a◌〪◌⃬◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 20ED 0062;0061 302A 0316 20ED 059A 0062;0061 302A 0316 20ED 059A 0062;0061 302A 0316 20ED 059A 0062;0061 302A 0316 20ED 059A 0062; # (a◌֚◌̖◌〪◌⃭b; a◌〪◌̖◌⃭◌֚b; a◌〪◌̖◌⃭◌֚b; a◌〪◌̖◌⃭◌֚b; a◌〪◌̖◌⃭◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS, LATIN SMALL LETTER B
+0061 20ED 059A 0316 302A 0062;0061 302A 20ED 0316 059A 0062;0061 302A 20ED 0316 059A 0062;0061 302A 20ED 0316 059A 0062;0061 302A 20ED 0316 059A 0062; # (a◌⃭◌֚◌̖◌〪b; a◌〪◌⃭◌̖◌֚b; a◌〪◌⃭◌̖◌֚b; a◌〪◌⃭◌̖◌֚b; a◌〪◌⃭◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 20EE 0062;0061 302A 0316 20EE 059A 0062;0061 302A 0316 20EE 059A 0062;0061 302A 0316 20EE 059A 0062;0061 302A 0316 20EE 059A 0062; # (a◌֚◌̖◌〪◌⃮b; a◌〪◌̖◌⃮◌֚b; a◌〪◌̖◌⃮◌֚b; a◌〪◌̖◌⃮◌֚b; a◌〪◌̖◌⃮◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING LEFT ARROW BELOW, LATIN SMALL LETTER B
+0061 20EE 059A 0316 302A 0062;0061 302A 20EE 0316 059A 0062;0061 302A 20EE 0316 059A 0062;0061 302A 20EE 0316 059A 0062;0061 302A 20EE 0316 059A 0062; # (a◌⃮◌֚◌̖◌〪b; a◌〪◌⃮◌̖◌֚b; a◌〪◌⃮◌̖◌֚b; a◌〪◌⃮◌̖◌֚b; a◌〪◌⃮◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING LEFT ARROW BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 20EF 0062;0061 302A 0316 20EF 059A 0062;0061 302A 0316 20EF 059A 0062;0061 302A 0316 20EF 059A 0062;0061 302A 0316 20EF 059A 0062; # (a◌֚◌̖◌〪◌⃯b; a◌〪◌̖◌⃯◌֚b; a◌〪◌̖◌⃯◌֚b; a◌〪◌̖◌⃯◌֚b; a◌〪◌̖◌⃯◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING RIGHT ARROW BELOW, LATIN SMALL LETTER B
+0061 20EF 059A 0316 302A 0062;0061 302A 20EF 0316 059A 0062;0061 302A 20EF 0316 059A 0062;0061 302A 20EF 0316 059A 0062;0061 302A 20EF 0316 059A 0062; # (a◌⃯◌֚◌̖◌〪b; a◌〪◌⃯◌̖◌֚b; a◌〪◌⃯◌̖◌֚b; a◌〪◌⃯◌̖◌֚b; a◌〪◌⃯◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING RIGHT ARROW BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0316 302A 031B 302A 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062; # (a◌̖◌〪◌̛◌〪b; a◌̛◌〪◌〪◌̖b; a◌̛◌〪◌〪◌̖b; a◌̛◌〪◌〪◌̖b; a◌̛◌〪◌〪◌̖b; ) LATIN SMALL LETTER A, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 302A 0316 302A 031B 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062; # (a◌〪◌̖◌〪◌̛b; a◌̛◌〪◌〪◌̖b; a◌̛◌〪◌〪◌̖b; a◌̛◌〪◌〪◌̖b; a◌̛◌〪◌〪◌̖b; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, LATIN SMALL LETTER B
+0061 0300 05AE 1D16D 302B 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062; # (a◌̀◌֮ð…­â—Œã€«b; àð…­â—ŒÖ®â—Œã€«b; að…­â—ŒÖ®â—Œã€«â—ŒÌ€b; àð…­â—ŒÖ®â—Œã€«b; að…­â—ŒÖ®â—Œã€«â—ŒÌ€b; ) LATIN SMALL LETTER A, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, IDEOGRAPHIC RISING TONE MARK, LATIN SMALL LETTER B
+0061 302B 0300 05AE 1D16D 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062; # (a◌〫◌̀◌֮ð…­b; àð…­â—Œã€«â—ŒÖ®b; að…­â—Œã€«â—ŒÖ®â—ŒÌ€b; àð…­â—Œã€«â—ŒÖ®b; að…­â—Œã€«â—ŒÖ®â—ŒÌ€b; ) LATIN SMALL LETTER A, IDEOGRAPHIC RISING TONE MARK, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, LATIN SMALL LETTER B
+0061 035C 0315 0300 302C 0062;00E0 0315 302C 035C 0062;0061 0300 0315 302C 035C 0062;00E0 0315 302C 035C 0062;0061 0300 0315 302C 035C 0062; # (a◌͜◌̕◌̀◌〬b; à◌̕◌〬◌͜b; a◌̀◌̕◌〬◌͜b; à◌̕◌〬◌͜b; a◌̀◌̕◌〬◌͜b; ) LATIN SMALL LETTER A, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, IDEOGRAPHIC DEPARTING TONE MARK, LATIN SMALL LETTER B
+0061 302C 035C 0315 0300 0062;00E0 302C 0315 035C 0062;0061 0300 302C 0315 035C 0062;00E0 302C 0315 035C 0062;0061 0300 302C 0315 035C 0062; # (a◌〬◌͜◌̕◌̀b; à◌〬◌̕◌͜b; a◌̀◌〬◌̕◌͜b; à◌〬◌̕◌͜b; a◌̀◌〬◌̕◌͜b; ) LATIN SMALL LETTER A, IDEOGRAPHIC DEPARTING TONE MARK, COMBINING DOUBLE BREVE BELOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, LATIN SMALL LETTER B
+0061 302E 059A 0316 302D 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062; # (a◌〮◌֚◌̖◌〭b; a◌̖◌֚◌〭◌〮b; a◌̖◌֚◌〭◌〮b; a◌̖◌֚◌〭◌〮b; a◌̖◌֚◌〭◌〮b; ) LATIN SMALL LETTER A, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC ENTERING TONE MARK, LATIN SMALL LETTER B
+0061 302D 302E 059A 0316 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062; # (a◌〭◌〮◌֚◌̖b; a◌̖◌〭◌֚◌〮b; a◌̖◌〭◌֚◌〮b; a◌̖◌〭◌֚◌〮b; a◌̖◌〭◌֚◌〮b; ) LATIN SMALL LETTER A, IDEOGRAPHIC ENTERING TONE MARK, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, LATIN SMALL LETTER B
+0061 1D16D 302E 059A 302E 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062; # (að…­â—Œã€®â—ŒÖšâ—Œã€®b; a◌֚◌〮◌〮ð…­b; a◌֚◌〮◌〮ð…­b; a◌֚◌〮◌〮ð…­b; a◌֚◌〮◌〮ð…­b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, HANGUL SINGLE DOT TONE MARK, LATIN SMALL LETTER B
+0061 302E 1D16D 302E 059A 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062; # (a◌〮ð…­â—Œã€®â—ŒÖšb; a◌֚◌〮◌〮ð…­b; a◌֚◌〮◌〮ð…­b; a◌֚◌〮◌〮ð…­b; a◌֚◌〮◌〮ð…­b; ) LATIN SMALL LETTER A, HANGUL SINGLE DOT TONE MARK, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, LATIN SMALL LETTER B
+0061 1D16D 302E 059A 302F 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062; # (að…­â—Œã€®â—ŒÖšâ—Œã€¯b; a◌֚◌〮◌〯ð…­b; a◌֚◌〮◌〯ð…­b; a◌֚◌〮◌〯ð…­b; a◌֚◌〮◌〯ð…­b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, HANGUL DOUBLE DOT TONE MARK, LATIN SMALL LETTER B
+0061 302F 1D16D 302E 059A 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062; # (a◌〯ð…­â—Œã€®â—ŒÖšb; a◌֚◌〯◌〮ð…­b; a◌֚◌〯◌〮ð…­b; a◌֚◌〯◌〮ð…­b; a◌֚◌〯◌〮ð…­b; ) LATIN SMALL LETTER A, HANGUL DOUBLE DOT TONE MARK, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HANGUL SINGLE DOT TONE MARK, HEBREW ACCENT YETIV, LATIN SMALL LETTER B
+0061 094D 3099 093C 3099 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062; # (aâ—Œà¥â—Œã‚™â—Œà¤¼â—Œã‚™b; a◌़◌゙◌゙◌à¥b; a◌़◌゙◌゙◌à¥b; a◌़◌゙◌゙◌à¥b; a◌़◌゙◌゙◌à¥b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 3099 094D 3099 093C 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062; # (a◌゙◌à¥â—Œã‚™â—Œà¤¼b; a◌़◌゙◌゙◌à¥b; a◌़◌゙◌゙◌à¥b; a◌़◌゙◌゙◌à¥b; a◌़◌゙◌゙◌à¥b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, LATIN SMALL LETTER B
+0061 094D 3099 093C 309A 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062; # (aâ—Œà¥â—Œã‚™â—Œà¤¼â—Œã‚šb; a◌़◌゙◌゚◌à¥b; a◌़◌゙◌゚◌à¥b; a◌़◌゙◌゚◌à¥b; a◌़◌゙◌゚◌à¥b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 309A 094D 3099 093C 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062; # (a◌゚◌à¥â—Œã‚™â—Œà¤¼b; a◌़◌゚◌゙◌à¥b; a◌़◌゚◌゙◌à¥b; a◌़◌゚◌゙◌à¥b; a◌़◌゚◌゙◌à¥b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, LATIN SMALL LETTER B
+0061 05B0 094D 3099 A806 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œê †b; a◌゙◌à¥â—Œê †â—ŒÖ°b; a◌゙◌à¥â—Œê †â—ŒÖ°b; a◌゙◌à¥â—Œê †â—ŒÖ°b; a◌゙◌à¥â—Œê †â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, SYLOTI NAGRI SIGN HASANTA, LATIN SMALL LETTER B
+0061 A806 05B0 094D 3099 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062; # (a◌꠆◌ְ◌à¥â—Œã‚™b; a◌゙◌꠆◌à¥â—ŒÖ°b; a◌゙◌꠆◌à¥â—ŒÖ°b; a◌゙◌꠆◌à¥â—ŒÖ°b; a◌゙◌꠆◌à¥â—ŒÖ°b; ) LATIN SMALL LETTER A, SYLOTI NAGRI SIGN HASANTA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 064B FB1E 05C2 FB1E 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062; # (a◌ً◌ﬞ◌ׂ◌ﬞb; a◌ׂ◌ﬞ◌ﬞ◌ًb; a◌ׂ◌ﬞ◌ﬞ◌ًb; a◌ׂ◌ﬞ◌ﬞ◌ًb; a◌ׂ◌ﬞ◌ﬞ◌ًb; ) LATIN SMALL LETTER A, ARABIC FATHATAN, HEBREW POINT JUDEO-SPANISH VARIKA, HEBREW POINT SIN DOT, HEBREW POINT JUDEO-SPANISH VARIKA, LATIN SMALL LETTER B
+0061 FB1E 064B FB1E 05C2 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062; # (a◌ﬞ◌ً◌ﬞ◌ׂb; a◌ׂ◌ﬞ◌ﬞ◌ًb; a◌ׂ◌ﬞ◌ﬞ◌ًb; a◌ׂ◌ﬞ◌ﬞ◌ًb; a◌ׂ◌ﬞ◌ﬞ◌ًb; ) LATIN SMALL LETTER A, HEBREW POINT JUDEO-SPANISH VARIKA, ARABIC FATHATAN, HEBREW POINT JUDEO-SPANISH VARIKA, HEBREW POINT SIN DOT, LATIN SMALL LETTER B
+0061 0315 0300 05AE FE20 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062; # (a◌̕◌̀◌֮◌︠b; à◌֮◌︠◌̕b; a◌֮◌̀◌︠◌̕b; à◌֮◌︠◌̕b; a◌֮◌̀◌︠◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LIGATURE LEFT HALF, LATIN SMALL LETTER B
+0061 FE20 0315 0300 05AE 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062; # (a◌︠◌̕◌̀◌֮b; a◌֮◌︠◌̀◌̕b; a◌֮◌︠◌̀◌̕b; a◌֮◌︠◌̀◌̕b; a◌֮◌︠◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LIGATURE LEFT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE FE21 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062; # (a◌̕◌̀◌֮◌︡b; à◌֮◌︡◌̕b; a◌֮◌̀◌︡◌̕b; à◌֮◌︡◌̕b; a◌֮◌̀◌︡◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING LIGATURE RIGHT HALF, LATIN SMALL LETTER B
+0061 FE21 0315 0300 05AE 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062; # (a◌︡◌̕◌̀◌֮b; a◌֮◌︡◌̀◌̕b; a◌֮◌︡◌̀◌̕b; a◌֮◌︡◌̀◌̕b; a◌֮◌︡◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING LIGATURE RIGHT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE FE22 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062; # (a◌̕◌̀◌֮◌︢b; à◌֮◌︢◌̕b; a◌֮◌̀◌︢◌̕b; à◌֮◌︢◌̕b; a◌֮◌̀◌︢◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLE TILDE LEFT HALF, LATIN SMALL LETTER B
+0061 FE22 0315 0300 05AE 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062; # (a◌︢◌̕◌̀◌֮b; a◌֮◌︢◌̀◌̕b; a◌֮◌︢◌̀◌̕b; a◌֮◌︢◌̀◌̕b; a◌֮◌︢◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLE TILDE LEFT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE FE23 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062; # (a◌̕◌̀◌֮◌︣b; à◌֮◌︣◌̕b; a◌֮◌̀◌︣◌̕b; à◌֮◌︣◌̕b; a◌֮◌̀◌︣◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING DOUBLE TILDE RIGHT HALF, LATIN SMALL LETTER B
+0061 FE23 0315 0300 05AE 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062; # (a◌︣◌̕◌̀◌֮b; a◌֮◌︣◌̀◌̕b; a◌֮◌︣◌̀◌̕b; a◌֮◌︣◌̀◌̕b; a◌֮◌︣◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING DOUBLE TILDE RIGHT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 10A0D 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062; # (a◌֚◌̖◌〪◌ð¨b; a◌〪◌̖◌ð¨â—ŒÖšb; a◌〪◌̖◌ð¨â—ŒÖšb; a◌〪◌̖◌ð¨â—ŒÖšb; a◌〪◌̖◌ð¨â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, KHAROSHTHI SIGN DOUBLE RING BELOW, LATIN SMALL LETTER B
+0061 10A0D 059A 0316 302A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062; # (aâ—Œð¨â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð¨â—ŒÌ–◌֚b; a◌〪◌ð¨â—ŒÌ–◌֚b; a◌〪◌ð¨â—ŒÌ–◌֚b; a◌〪◌ð¨â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, KHAROSHTHI SIGN DOUBLE RING BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 10A0F 0062;00E0 05AE 10A0F 0315 0062;0061 05AE 0300 10A0F 0315 0062;00E0 05AE 10A0F 0315 0062;0061 05AE 0300 10A0F 0315 0062; # (a◌̕◌̀◌֮◌ð¨b; à◌֮◌ð¨â—ŒÌ•b; a◌֮◌̀◌ð¨â—ŒÌ•b; à◌֮◌ð¨â—ŒÌ•b; a◌֮◌̀◌ð¨â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, KHAROSHTHI SIGN VISARGA, LATIN SMALL LETTER B
+0061 10A0F 0315 0300 05AE 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062; # (aâ—Œð¨â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð¨â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¨â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¨â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¨â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, KHAROSHTHI SIGN VISARGA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 10A38 0062;00E0 05AE 10A38 0315 0062;0061 05AE 0300 10A38 0315 0062;00E0 05AE 10A38 0315 0062;0061 05AE 0300 10A38 0315 0062; # (a◌̕◌̀◌֮◌ð¨¸b; à◌֮◌ð¨¸â—ŒÌ•b; a◌֮◌̀◌ð¨¸â—ŒÌ•b; à◌֮◌ð¨¸â—ŒÌ•b; a◌֮◌̀◌ð¨¸â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, KHAROSHTHI SIGN BAR ABOVE, LATIN SMALL LETTER B
+0061 10A38 0315 0300 05AE 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062; # (aâ—Œð¨¸â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð¨¸â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¨¸â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¨¸â—ŒÌ€â—ŒÌ•b; a◌֮◌ð¨¸â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, KHAROSHTHI SIGN BAR ABOVE, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 093C 0334 10A39 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062; # (a◌़◌̴◌ð¨¹b; a◌̴◌ð¨¹â—Œà¤¼b; a◌̴◌ð¨¹â—Œà¤¼b; a◌̴◌ð¨¹â—Œà¤¼b; a◌̴◌ð¨¹â—Œà¤¼b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, KHAROSHTHI SIGN CAUDA, LATIN SMALL LETTER B
+0061 10A39 093C 0334 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062; # (aâ—Œð¨¹â—Œà¤¼â—ŒÌ´b; aâ—Œð¨¹â—ŒÌ´â—Œà¤¼b; aâ—Œð¨¹â—ŒÌ´â—Œà¤¼b; aâ—Œð¨¹â—ŒÌ´â—Œà¤¼b; aâ—Œð¨¹â—ŒÌ´â—Œà¤¼b; ) LATIN SMALL LETTER A, KHAROSHTHI SIGN CAUDA, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 059A 0316 302A 10A3A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062; # (a◌֚◌̖◌〪◌ð¨ºb; a◌〪◌̖◌ð¨ºâ—ŒÖšb; a◌〪◌̖◌ð¨ºâ—ŒÖšb; a◌〪◌̖◌ð¨ºâ—ŒÖšb; a◌〪◌̖◌ð¨ºâ—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, KHAROSHTHI SIGN DOT BELOW, LATIN SMALL LETTER B
+0061 10A3A 059A 0316 302A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062; # (aâ—Œð¨ºâ—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð¨ºâ—ŒÌ–◌֚b; a◌〪◌ð¨ºâ—ŒÌ–◌֚b; a◌〪◌ð¨ºâ—ŒÌ–◌֚b; a◌〪◌ð¨ºâ—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, KHAROSHTHI SIGN DOT BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 05B0 094D 3099 10A3F 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062; # (a◌ְ◌à¥â—Œã‚™â—Œð¨¿b; a◌゙◌à¥â—Œð¨¿â—ŒÖ°b; a◌゙◌à¥â—Œð¨¿â—ŒÖ°b; a◌゙◌à¥â—Œð¨¿â—ŒÖ°b; a◌゙◌à¥â—Œð¨¿â—ŒÖ°b; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KHAROSHTHI VIRAMA, LATIN SMALL LETTER B
+0061 10A3F 05B0 094D 3099 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062; # (aâ—Œð¨¿â—ŒÖ°â—Œà¥â—Œã‚™b; a◌゙◌ð¨¿â—Œà¥â—ŒÖ°b; a◌゙◌ð¨¿â—Œà¥â—ŒÖ°b; a◌゙◌ð¨¿â—Œà¥â—ŒÖ°b; a◌゙◌ð¨¿â—Œà¥â—ŒÖ°b; ) LATIN SMALL LETTER A, KHAROSHTHI VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B
+0061 302A 031B 0321 1D165 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062; # (a◌〪◌̛◌̡ð…¥b; a◌̡◌̛ð…¥â—Œã€ªb; a◌̡◌̛ð…¥â—Œã€ªb; a◌̡◌̛ð…¥â—Œã€ªb; a◌̡◌̛ð…¥â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, MUSICAL SYMBOL COMBINING STEM, LATIN SMALL LETTER B
+0061 1D165 302A 031B 0321 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062; # (að…¥â—Œã€ªâ—ŒÌ›â—ŒÌ¡b; a◌̡ð…¥â—ŒÌ›â—Œã€ªb; a◌̡ð…¥â—ŒÌ›â—Œã€ªb; a◌̡ð…¥â—ŒÌ›â—Œã€ªb; a◌̡ð…¥â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING STEM, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, LATIN SMALL LETTER B
+0061 302A 031B 0321 1D166 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062; # (a◌〪◌̛◌̡ð…¦b; a◌̡◌̛ð…¦â—Œã€ªb; a◌̡◌̛ð…¦â—Œã€ªb; a◌̡◌̛ð…¦â—Œã€ªb; a◌̡◌̛ð…¦â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, MUSICAL SYMBOL COMBINING SPRECHGESANG STEM, LATIN SMALL LETTER B
+0061 1D166 302A 031B 0321 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062; # (að…¦â—Œã€ªâ—ŒÌ›â—ŒÌ¡b; a◌̡ð…¦â—ŒÌ›â—Œã€ªb; a◌̡ð…¦â—ŒÌ›â—Œã€ªb; a◌̡ð…¦â—ŒÌ›â—Œã€ªb; a◌̡ð…¦â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING SPRECHGESANG STEM, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, LATIN SMALL LETTER B
+0061 093C 0334 1D167 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062; # (a◌़◌̴◌ð…§b; a◌̴◌ð…§â—Œà¤¼b; a◌̴◌ð…§â—Œà¤¼b; a◌̴◌ð…§â—Œà¤¼b; a◌̴◌ð…§â—Œà¤¼b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, MUSICAL SYMBOL COMBINING TREMOLO-1, LATIN SMALL LETTER B
+0061 1D167 093C 0334 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062; # (aâ—Œð…§â—Œà¤¼â—ŒÌ´b; aâ—Œð…§â—ŒÌ´â—Œà¤¼b; aâ—Œð…§â—ŒÌ´â—Œà¤¼b; aâ—Œð…§â—ŒÌ´â—Œà¤¼b; aâ—Œð…§â—ŒÌ´â—Œà¤¼b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING TREMOLO-1, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 1D168 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062; # (a◌़◌̴◌ð…¨b; a◌̴◌ð…¨â—Œà¤¼b; a◌̴◌ð…¨â—Œà¤¼b; a◌̴◌ð…¨â—Œà¤¼b; a◌̴◌ð…¨â—Œà¤¼b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, MUSICAL SYMBOL COMBINING TREMOLO-2, LATIN SMALL LETTER B
+0061 1D168 093C 0334 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062; # (aâ—Œð…¨â—Œà¤¼â—ŒÌ´b; aâ—Œð…¨â—ŒÌ´â—Œà¤¼b; aâ—Œð…¨â—ŒÌ´â—Œà¤¼b; aâ—Œð…¨â—ŒÌ´â—Œà¤¼b; aâ—Œð…¨â—ŒÌ´â—Œà¤¼b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING TREMOLO-2, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 093C 0334 1D169 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062; # (a◌़◌̴◌ð…©b; a◌̴◌ð…©â—Œà¤¼b; a◌̴◌ð…©â—Œà¤¼b; a◌̴◌ð…©â—Œà¤¼b; a◌̴◌ð…©â—Œà¤¼b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, MUSICAL SYMBOL COMBINING TREMOLO-3, LATIN SMALL LETTER B
+0061 1D169 093C 0334 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062; # (aâ—Œð…©â—Œà¤¼â—ŒÌ´b; aâ—Œð…©â—ŒÌ´â—Œà¤¼b; aâ—Œð…©â—ŒÌ´â—Œà¤¼b; aâ—Œð…©â—ŒÌ´â—Œà¤¼b; aâ—Œð…©â—ŒÌ´â—Œà¤¼b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING TREMOLO-3, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B
+0061 05AE 1D16D 302E 1D16D 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062; # (a◌֮ð…­â—Œã€®ð…­b; a◌〮ð…­ð…­â—ŒÖ®b; a◌〮ð…­ð…­â—ŒÖ®b; a◌〮ð…­ð…­â—ŒÖ®b; a◌〮ð…­ð…­â—ŒÖ®b; ) LATIN SMALL LETTER A, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HANGUL SINGLE DOT TONE MARK, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, LATIN SMALL LETTER B
+0061 1D16D 05AE 1D16D 302E 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062; # (að…­â—ŒÖ®ð…­â—Œã€®b; a◌〮ð…­ð…­â—ŒÖ®b; a◌〮ð…­ð…­â—ŒÖ®b; a◌〮ð…­ð…­â—ŒÖ®b; a◌〮ð…­ð…­â—ŒÖ®b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING AUGMENTATION DOT, HANGUL SINGLE DOT TONE MARK, LATIN SMALL LETTER B
+0061 302A 031B 0321 1D16E 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062; # (a◌〪◌̛◌̡ð…®b; a◌̡◌̛ð…®â—Œã€ªb; a◌̡◌̛ð…®â—Œã€ªb; a◌̡◌̛ð…®â—Œã€ªb; a◌̡◌̛ð…®â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, MUSICAL SYMBOL COMBINING FLAG-1, LATIN SMALL LETTER B
+0061 1D16E 302A 031B 0321 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062; # (að…®â—Œã€ªâ—ŒÌ›â—ŒÌ¡b; a◌̡ð…®â—ŒÌ›â—Œã€ªb; a◌̡ð…®â—ŒÌ›â—Œã€ªb; a◌̡ð…®â—ŒÌ›â—Œã€ªb; a◌̡ð…®â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLAG-1, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, LATIN SMALL LETTER B
+0061 302A 031B 0321 1D16F 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062; # (a◌〪◌̛◌̡ð…¯b; a◌̡◌̛ð…¯â—Œã€ªb; a◌̡◌̛ð…¯â—Œã€ªb; a◌̡◌̛ð…¯â—Œã€ªb; a◌̡◌̛ð…¯â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, MUSICAL SYMBOL COMBINING FLAG-2, LATIN SMALL LETTER B
+0061 1D16F 302A 031B 0321 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062; # (að…¯â—Œã€ªâ—ŒÌ›â—ŒÌ¡b; a◌̡ð…¯â—ŒÌ›â—Œã€ªb; a◌̡ð…¯â—ŒÌ›â—Œã€ªb; a◌̡ð…¯â—ŒÌ›â—Œã€ªb; a◌̡ð…¯â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLAG-2, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, LATIN SMALL LETTER B
+0061 302A 031B 0321 1D170 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062; # (a◌〪◌̛◌̡ð…°b; a◌̡◌̛ð…°â—Œã€ªb; a◌̡◌̛ð…°â—Œã€ªb; a◌̡◌̛ð…°â—Œã€ªb; a◌̡◌̛ð…°â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, MUSICAL SYMBOL COMBINING FLAG-3, LATIN SMALL LETTER B
+0061 1D170 302A 031B 0321 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062; # (að…°â—Œã€ªâ—ŒÌ›â—ŒÌ¡b; a◌̡ð…°â—ŒÌ›â—Œã€ªb; a◌̡ð…°â—ŒÌ›â—Œã€ªb; a◌̡ð…°â—ŒÌ›â—Œã€ªb; a◌̡ð…°â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLAG-3, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, LATIN SMALL LETTER B
+0061 302A 031B 0321 1D171 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062; # (a◌〪◌̛◌̡ð…±b; a◌̡◌̛ð…±â—Œã€ªb; a◌̡◌̛ð…±â—Œã€ªb; a◌̡◌̛ð…±â—Œã€ªb; a◌̡◌̛ð…±â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, MUSICAL SYMBOL COMBINING FLAG-4, LATIN SMALL LETTER B
+0061 1D171 302A 031B 0321 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062; # (að…±â—Œã€ªâ—ŒÌ›â—ŒÌ¡b; a◌̡ð…±â—ŒÌ›â—Œã€ªb; a◌̡ð…±â—ŒÌ›â—Œã€ªb; a◌̡ð…±â—ŒÌ›â—Œã€ªb; a◌̡ð…±â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLAG-4, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, LATIN SMALL LETTER B
+0061 302A 031B 0321 1D172 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062; # (a◌〪◌̛◌̡ð…²b; a◌̡◌̛ð…²â—Œã€ªb; a◌̡◌̛ð…²â—Œã€ªb; a◌̡◌̛ð…²â—Œã€ªb; a◌̡◌̛ð…²â—Œã€ªb; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, MUSICAL SYMBOL COMBINING FLAG-5, LATIN SMALL LETTER B
+0061 1D172 302A 031B 0321 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062; # (að…²â—Œã€ªâ—ŒÌ›â—ŒÌ¡b; a◌̡ð…²â—ŒÌ›â—Œã€ªb; a◌̡ð…²â—ŒÌ›â—Œã€ªb; a◌̡ð…²â—ŒÌ›â—Œã€ªb; a◌̡ð…²â—ŒÌ›â—Œã€ªb; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLAG-5, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING PALATALIZED HOOK BELOW, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D17B 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062; # (a◌֚◌̖◌〪◌ð…»b; a◌〪◌̖◌ð…»â—ŒÖšb; a◌〪◌̖◌ð…»â—ŒÖšb; a◌〪◌̖◌ð…»â—ŒÖšb; a◌〪◌̖◌ð…»â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING ACCENT, LATIN SMALL LETTER B
+0061 1D17B 059A 0316 302A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062; # (aâ—Œð…»â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð…»â—ŒÌ–◌֚b; a◌〪◌ð…»â—ŒÌ–◌֚b; a◌〪◌ð…»â—ŒÌ–◌֚b; a◌〪◌ð…»â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING ACCENT, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D17C 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062; # (a◌֚◌̖◌〪◌ð…¼b; a◌〪◌̖◌ð…¼â—ŒÖšb; a◌〪◌̖◌ð…¼â—ŒÖšb; a◌〪◌̖◌ð…¼â—ŒÖšb; a◌〪◌̖◌ð…¼â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING STACCATO, LATIN SMALL LETTER B
+0061 1D17C 059A 0316 302A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062; # (aâ—Œð…¼â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð…¼â—ŒÌ–◌֚b; a◌〪◌ð…¼â—ŒÌ–◌֚b; a◌〪◌ð…¼â—ŒÌ–◌֚b; a◌〪◌ð…¼â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING STACCATO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D17D 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062; # (a◌֚◌̖◌〪◌ð…½b; a◌〪◌̖◌ð…½â—ŒÖšb; a◌〪◌̖◌ð…½â—ŒÖšb; a◌〪◌̖◌ð…½â—ŒÖšb; a◌〪◌̖◌ð…½â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING TENUTO, LATIN SMALL LETTER B
+0061 1D17D 059A 0316 302A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062; # (aâ—Œð…½â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð…½â—ŒÌ–◌֚b; a◌〪◌ð…½â—ŒÌ–◌֚b; a◌〪◌ð…½â—ŒÌ–◌֚b; a◌〪◌ð…½â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING TENUTO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D17E 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062; # (a◌֚◌̖◌〪◌ð…¾b; a◌〪◌̖◌ð…¾â—ŒÖšb; a◌〪◌̖◌ð…¾â—ŒÖšb; a◌〪◌̖◌ð…¾â—ŒÖšb; a◌〪◌̖◌ð…¾â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING STACCATISSIMO, LATIN SMALL LETTER B
+0061 1D17E 059A 0316 302A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062; # (aâ—Œð…¾â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð…¾â—ŒÌ–◌֚b; a◌〪◌ð…¾â—ŒÌ–◌֚b; a◌〪◌ð…¾â—ŒÌ–◌֚b; a◌〪◌ð…¾â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING STACCATISSIMO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D17F 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062; # (a◌֚◌̖◌〪◌ð…¿b; a◌〪◌̖◌ð…¿â—ŒÖšb; a◌〪◌̖◌ð…¿â—ŒÖšb; a◌〪◌̖◌ð…¿â—ŒÖšb; a◌〪◌̖◌ð…¿â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING MARCATO, LATIN SMALL LETTER B
+0061 1D17F 059A 0316 302A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062; # (aâ—Œð…¿â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð…¿â—ŒÌ–◌֚b; a◌〪◌ð…¿â—ŒÌ–◌֚b; a◌〪◌ð…¿â—ŒÌ–◌֚b; a◌〪◌ð…¿â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING MARCATO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D180 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062; # (a◌֚◌̖◌〪◌ð†€b; a◌〪◌̖◌ð†€â—ŒÖšb; a◌〪◌̖◌ð†€â—ŒÖšb; a◌〪◌̖◌ð†€â—ŒÖšb; a◌〪◌̖◌ð†€â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING MARCATO-STACCATO, LATIN SMALL LETTER B
+0061 1D180 059A 0316 302A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062; # (aâ—Œð†€â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð†€â—ŒÌ–◌֚b; a◌〪◌ð†€â—ŒÌ–◌֚b; a◌〪◌ð†€â—ŒÌ–◌֚b; a◌〪◌ð†€â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING MARCATO-STACCATO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D181 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062; # (a◌֚◌̖◌〪◌ð†b; a◌〪◌̖◌ð†â—ŒÖšb; a◌〪◌̖◌ð†â—ŒÖšb; a◌〪◌̖◌ð†â—ŒÖšb; a◌〪◌̖◌ð†â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING ACCENT-STACCATO, LATIN SMALL LETTER B
+0061 1D181 059A 0316 302A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062; # (aâ—Œð†â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð†â—ŒÌ–◌֚b; a◌〪◌ð†â—ŒÌ–◌֚b; a◌〪◌ð†â—ŒÌ–◌֚b; a◌〪◌ð†â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING ACCENT-STACCATO, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D182 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062; # (a◌֚◌̖◌〪◌ð†‚b; a◌〪◌̖◌ð†‚◌֚b; a◌〪◌̖◌ð†‚◌֚b; a◌〪◌̖◌ð†‚◌֚b; a◌〪◌̖◌ð†‚◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING LOURE, LATIN SMALL LETTER B
+0061 1D182 059A 0316 302A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062; # (aâ—Œð†‚◌֚◌̖◌〪b; a◌〪◌ð†‚◌̖◌֚b; a◌〪◌ð†‚◌̖◌֚b; a◌〪◌ð†‚◌̖◌֚b; a◌〪◌ð†‚◌̖◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING LOURE, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D185 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062; # (a◌̕◌̀◌֮◌ð†…b; à◌֮◌ð†…◌̕b; a◌֮◌̀◌ð†…◌̕b; à◌֮◌ð†…◌̕b; a◌֮◌̀◌ð†…◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING DOIT, LATIN SMALL LETTER B
+0061 1D185 0315 0300 05AE 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062; # (aâ—Œð†…◌̕◌̀◌֮b; a◌֮◌ð†…◌̀◌̕b; a◌֮◌ð†…◌̀◌̕b; a◌֮◌ð†…◌̀◌̕b; a◌֮◌ð†…◌̀◌̕b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING DOIT, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D186 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062; # (a◌̕◌̀◌֮◌ð††b; à◌֮◌ð††â—ŒÌ•b; a◌֮◌̀◌ð††â—ŒÌ•b; à◌֮◌ð††â—ŒÌ•b; a◌֮◌̀◌ð††â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING RIP, LATIN SMALL LETTER B
+0061 1D186 0315 0300 05AE 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062; # (aâ—Œð††â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð††â—ŒÌ€â—ŒÌ•b; a◌֮◌ð††â—ŒÌ€â—ŒÌ•b; a◌֮◌ð††â—ŒÌ€â—ŒÌ•b; a◌֮◌ð††â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING RIP, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D187 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062; # (a◌̕◌̀◌֮◌ð†‡b; à◌֮◌ð†‡â—ŒÌ•b; a◌֮◌̀◌ð†‡â—ŒÌ•b; à◌֮◌ð†‡â—ŒÌ•b; a◌֮◌̀◌ð†‡â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING FLIP, LATIN SMALL LETTER B
+0061 1D187 0315 0300 05AE 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062; # (aâ—Œð†‡â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†‡â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†‡â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†‡â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†‡â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLIP, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D188 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062; # (a◌̕◌̀◌֮◌ð†ˆb; à◌֮◌ð†ˆâ—ŒÌ•b; a◌֮◌̀◌ð†ˆâ—ŒÌ•b; à◌֮◌ð†ˆâ—ŒÌ•b; a◌֮◌̀◌ð†ˆâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING SMEAR, LATIN SMALL LETTER B
+0061 1D188 0315 0300 05AE 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062; # (aâ—Œð†ˆâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†ˆâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð†ˆâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð†ˆâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð†ˆâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING SMEAR, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D189 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062; # (a◌̕◌̀◌֮◌ð†‰b; à◌֮◌ð†‰â—ŒÌ•b; a◌֮◌̀◌ð†‰â—ŒÌ•b; à◌֮◌ð†‰â—ŒÌ•b; a◌֮◌̀◌ð†‰â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING BEND, LATIN SMALL LETTER B
+0061 1D189 0315 0300 05AE 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062; # (aâ—Œð†‰â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†‰â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†‰â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†‰â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†‰â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING BEND, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D18A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062; # (a◌֚◌̖◌〪◌ð†Šb; a◌〪◌̖◌ð†Šâ—ŒÖšb; a◌〪◌̖◌ð†Šâ—ŒÖšb; a◌〪◌̖◌ð†Šâ—ŒÖšb; a◌〪◌̖◌ð†Šâ—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING DOUBLE TONGUE, LATIN SMALL LETTER B
+0061 1D18A 059A 0316 302A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062; # (aâ—Œð†Šâ—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð†Šâ—ŒÌ–◌֚b; a◌〪◌ð†Šâ—ŒÌ–◌֚b; a◌〪◌ð†Šâ—ŒÌ–◌֚b; a◌〪◌ð†Šâ—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING DOUBLE TONGUE, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 059A 0316 302A 1D18B 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062; # (a◌֚◌̖◌〪◌ð†‹b; a◌〪◌̖◌ð†‹â—ŒÖšb; a◌〪◌̖◌ð†‹â—ŒÖšb; a◌〪◌̖◌ð†‹â—ŒÖšb; a◌〪◌̖◌ð†‹â—ŒÖšb; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MUSICAL SYMBOL COMBINING TRIPLE TONGUE, LATIN SMALL LETTER B
+0061 1D18B 059A 0316 302A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062; # (aâ—Œð†‹â—ŒÖšâ—ŒÌ–◌〪b; a◌〪◌ð†‹â—ŒÌ–◌֚b; a◌〪◌ð†‹â—ŒÌ–◌֚b; a◌〪◌ð†‹â—ŒÌ–◌֚b; a◌〪◌ð†‹â—ŒÌ–◌֚b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING TRIPLE TONGUE, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D1AA 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062; # (a◌̕◌̀◌֮◌ð†ªb; à◌֮◌ð†ªâ—ŒÌ•b; a◌֮◌̀◌ð†ªâ—ŒÌ•b; à◌֮◌ð†ªâ—ŒÌ•b; a◌֮◌̀◌ð†ªâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING DOWN BOW, LATIN SMALL LETTER B
+0061 1D1AA 0315 0300 05AE 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062; # (aâ—Œð†ªâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†ªâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð†ªâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð†ªâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð†ªâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING DOWN BOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D1AB 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062; # (a◌̕◌̀◌֮◌ð†«b; à◌֮◌ð†«â—ŒÌ•b; a◌֮◌̀◌ð†«â—ŒÌ•b; à◌֮◌ð†«â—ŒÌ•b; a◌֮◌̀◌ð†«â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING UP BOW, LATIN SMALL LETTER B
+0061 1D1AB 0315 0300 05AE 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062; # (aâ—Œð†«â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†«â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†«â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†«â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†«â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING UP BOW, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D1AC 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062; # (a◌̕◌̀◌֮◌ð†¬b; à◌֮◌ð†¬â—ŒÌ•b; a◌֮◌̀◌ð†¬â—ŒÌ•b; à◌֮◌ð†¬â—ŒÌ•b; a◌֮◌̀◌ð†¬â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING HARMONIC, LATIN SMALL LETTER B
+0061 1D1AC 0315 0300 05AE 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062; # (aâ—Œð†¬â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†¬â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†¬â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†¬â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†¬â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING HARMONIC, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D1AD 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062; # (a◌̕◌̀◌֮◌ð†­b; à◌֮◌ð†­â—ŒÌ•b; a◌֮◌̀◌ð†­â—ŒÌ•b; à◌֮◌ð†­â—ŒÌ•b; a◌֮◌̀◌ð†­â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, MUSICAL SYMBOL COMBINING SNAP PIZZICATO, LATIN SMALL LETTER B
+0061 1D1AD 0315 0300 05AE 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062; # (aâ—Œð†­â—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð†­â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†­â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†­â—ŒÌ€â—ŒÌ•b; a◌֮◌ð†­â—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING SNAP PIZZICATO, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D242 0062;00E0 05AE 1D242 0315 0062;0061 05AE 0300 1D242 0315 0062;00E0 05AE 1D242 0315 0062;0061 05AE 0300 1D242 0315 0062; # (a◌̕◌̀◌֮◌ð‰‚b; à◌֮◌ð‰‚◌̕b; a◌֮◌̀◌ð‰‚◌̕b; à◌֮◌ð‰‚◌̕b; a◌֮◌̀◌ð‰‚◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GREEK MUSICAL TRISEME, LATIN SMALL LETTER B
+0061 1D242 0315 0300 05AE 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062; # (aâ—Œð‰‚◌̕◌̀◌֮b; a◌֮◌ð‰‚◌̀◌̕b; a◌֮◌ð‰‚◌̀◌̕b; a◌֮◌ð‰‚◌̀◌̕b; a◌֮◌ð‰‚◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GREEK MUSICAL TRISEME, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D243 0062;00E0 05AE 1D243 0315 0062;0061 05AE 0300 1D243 0315 0062;00E0 05AE 1D243 0315 0062;0061 05AE 0300 1D243 0315 0062; # (a◌̕◌̀◌֮◌ð‰ƒb; à◌֮◌ð‰ƒâ—ŒÌ•b; a◌֮◌̀◌ð‰ƒâ—ŒÌ•b; à◌֮◌ð‰ƒâ—ŒÌ•b; a◌֮◌̀◌ð‰ƒâ—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GREEK MUSICAL TETRASEME, LATIN SMALL LETTER B
+0061 1D243 0315 0300 05AE 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062; # (aâ—Œð‰ƒâ—ŒÌ•â—ŒÌ€â—ŒÖ®b; a◌֮◌ð‰ƒâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð‰ƒâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð‰ƒâ—ŒÌ€â—ŒÌ•b; a◌֮◌ð‰ƒâ—ŒÌ€â—ŒÌ•b; ) LATIN SMALL LETTER A, COMBINING GREEK MUSICAL TETRASEME, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+0061 0315 0300 05AE 1D244 0062;00E0 05AE 1D244 0315 0062;0061 05AE 0300 1D244 0315 0062;00E0 05AE 1D244 0315 0062;0061 05AE 0300 1D244 0315 0062; # (a◌̕◌̀◌֮◌ð‰„b; à◌֮◌ð‰„◌̕b; a◌֮◌̀◌ð‰„◌̕b; à◌֮◌ð‰„◌̕b; a◌֮◌̀◌ð‰„◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING GREEK MUSICAL PENTASEME, LATIN SMALL LETTER B
+0061 1D244 0315 0300 05AE 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062; # (aâ—Œð‰„◌̕◌̀◌֮b; a◌֮◌ð‰„◌̀◌̕b; a◌֮◌ð‰„◌̀◌̕b; a◌֮◌ð‰„◌̀◌̕b; a◌֮◌ð‰„◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING GREEK MUSICAL PENTASEME, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B
+#
+@Part3 # PRI #29 Test
+#
+09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE; # (ে◌̴া; ে◌̴া; ে◌̴া; ে◌̴া; ে◌̴া; ) BENGALI VOWEL SIGN E, COMBINING TILDE OVERLAY, BENGALI VOWEL SIGN AA
+09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7; # (ে◌̴ৗ; ে◌̴ৗ; ে◌̴ৗ; ে◌̴ৗ; ে◌̴ৗ; ) BENGALI VOWEL SIGN E, COMBINING TILDE OVERLAY, BENGALI AU LENGTH MARK
+0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E; # (େ◌̴ା; େ◌̴ା; େ◌̴ା; େ◌̴ା; େ◌̴ା; ) ORIYA VOWEL SIGN E, COMBINING TILDE OVERLAY, ORIYA VOWEL SIGN AA
+0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56; # (େ◌̴◌ୖ; େ◌̴◌ୖ; େ◌̴◌ୖ; େ◌̴◌ୖ; େ◌̴◌ୖ; ) ORIYA VOWEL SIGN E, COMBINING TILDE OVERLAY, ORIYA AI LENGTH MARK
+0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57; # (େ◌̴ୗ; େ◌̴ୗ; େ◌̴ୗ; େ◌̴ୗ; େ◌̴ୗ; ) ORIYA VOWEL SIGN E, COMBINING TILDE OVERLAY, ORIYA AU LENGTH MARK
+0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7; # (ஒ◌̴ௗ; ஒ◌̴ௗ; ஒ◌̴ௗ; ஒ◌̴ௗ; ஒ◌̴ௗ; ) TAMIL LETTER O, COMBINING TILDE OVERLAY, TAMIL AU LENGTH MARK
+0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE; # (ெ◌̴ா; ெ◌̴ா; ெ◌̴ா; ெ◌̴ா; ெ◌̴ா; ) TAMIL VOWEL SIGN E, COMBINING TILDE OVERLAY, TAMIL VOWEL SIGN AA
+0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7; # (ெ◌̴ௗ; ெ◌̴ௗ; ெ◌̴ௗ; ெ◌̴ௗ; ெ◌̴ௗ; ) TAMIL VOWEL SIGN E, COMBINING TILDE OVERLAY, TAMIL AU LENGTH MARK
+0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE; # (ே◌̴ா; ே◌̴ா; ே◌̴ா; ே◌̴ா; ே◌̴ா; ) TAMIL VOWEL SIGN EE, COMBINING TILDE OVERLAY, TAMIL VOWEL SIGN AA
+0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5; # (◌ಿ◌̴ೕ; ◌ಿ◌̴ೕ; ◌ಿ◌̴ೕ; ◌ಿ◌̴ೕ; ◌ಿ◌̴ೕ; ) KANNADA VOWEL SIGN I, COMBINING TILDE OVERLAY, KANNADA LENGTH MARK
+0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2; # (◌ೆ◌̴ೂ; ◌ೆ◌̴ೂ; ◌ೆ◌̴ೂ; ◌ೆ◌̴ೂ; ◌ೆ◌̴ೂ; ) KANNADA VOWEL SIGN E, COMBINING TILDE OVERLAY, KANNADA VOWEL SIGN UU
+0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5; # (◌ೆ◌̴ೕ; ◌ೆ◌̴ೕ; ◌ೆ◌̴ೕ; ◌ೆ◌̴ೕ; ◌ೆ◌̴ೕ; ) KANNADA VOWEL SIGN E, COMBINING TILDE OVERLAY, KANNADA LENGTH MARK
+0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6; # (◌ೆ◌̴ೖ; ◌ೆ◌̴ೖ; ◌ೆ◌̴ೖ; ◌ೆ◌̴ೖ; ◌ೆ◌̴ೖ; ) KANNADA VOWEL SIGN E, COMBINING TILDE OVERLAY, KANNADA AI LENGTH MARK
+0CCA 0334 0CD5;0CCA 0334 0CD5;0CC6 0CC2 0334 0CD5;0CCA 0334 0CD5;0CC6 0CC2 0334 0CD5; # (ೊ◌̴ೕ; ೊ◌̴ೕ; ◌ೊ◌̴ೕ; ೊ◌̴ೕ; ◌ೊ◌̴ೕ; ) KANNADA VOWEL SIGN O, COMBINING TILDE OVERLAY, KANNADA LENGTH MARK
+0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E; # (െ◌̴ാ; െ◌̴ാ; െ◌̴ാ; െ◌̴ാ; െ◌̴ാ; ) MALAYALAM VOWEL SIGN E, COMBINING TILDE OVERLAY, MALAYALAM VOWEL SIGN AA
+0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57; # (െ◌̴ൗ; െ◌̴ൗ; െ◌̴ൗ; െ◌̴ൗ; െ◌̴ൗ; ) MALAYALAM VOWEL SIGN E, COMBINING TILDE OVERLAY, MALAYALAM AU LENGTH MARK
+0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E; # (േ◌̴ാ; േ◌̴ാ; േ◌̴ാ; േ◌̴ാ; േ◌̴ാ; ) MALAYALAM VOWEL SIGN EE, COMBINING TILDE OVERLAY, MALAYALAM VOWEL SIGN AA
+0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF; # (ෙ◌̴à·; ෙ◌̴à·; ෙ◌̴à·; ෙ◌̴à·; ෙ◌̴à·; ) SINHALA VOWEL SIGN KOMBUVA, COMBINING TILDE OVERLAY, SINHALA VOWEL SIGN AELA-PILLA
+0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF; # (ෙ◌̴ෟ; ෙ◌̴ෟ; ෙ◌̴ෟ; ෙ◌̴ෟ; ෙ◌̴ෟ; ) SINHALA VOWEL SIGN KOMBUVA, COMBINING TILDE OVERLAY, SINHALA VOWEL SIGN GAYANUKITTA
+0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5; # (ཀ◌̴◌ྵ; ཀ◌̴◌ྵ; ཀ◌̴◌ྵ; ཀ◌̴◌ྵ; ཀ◌̴◌ྵ; ) TIBETAN LETTER KA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER SSA
+0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7; # (ག◌̴◌ྷ; ག◌̴◌ྷ; ག◌̴◌ྷ; ག◌̴◌ྷ; ག◌̴◌ྷ; ) TIBETAN LETTER GA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7; # (ཌ◌̴◌ྷ; ཌ◌̴◌ྷ; ཌ◌̴◌ྷ; ཌ◌̴◌ྷ; ཌ◌̴◌ྷ; ) TIBETAN LETTER DDA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7; # (ད◌̴◌ྷ; ད◌̴◌ྷ; ད◌̴◌ྷ; ད◌̴◌ྷ; ད◌̴◌ྷ; ) TIBETAN LETTER DA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7; # (བ◌̴◌ྷ; བ◌̴◌ྷ; བ◌̴◌ྷ; བ◌̴◌ྷ; བ◌̴◌ྷ; ) TIBETAN LETTER BA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7; # (ཛ◌̴◌ྷ; ཛ◌̴◌ྷ; ཛ◌̴◌ྷ; ཛ◌̴◌ྷ; ཛ◌̴◌ྷ; ) TIBETAN LETTER DZA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5; # (â—Œà¾â—ŒÌ´â—Œà¾µ; â—Œà¾â—ŒÌ´â—Œà¾µ; â—Œà¾â—ŒÌ´â—Œà¾µ; â—Œà¾â—ŒÌ´â—Œà¾µ; â—Œà¾â—ŒÌ´â—Œà¾µ; ) TIBETAN SUBJOINED LETTER KA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER SSA
+0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7; # (◌ྒ◌̴◌ྷ; ◌ྒ◌̴◌ྷ; ◌ྒ◌̴◌ྷ; ◌ྒ◌̴◌ྷ; ◌ྒ◌̴◌ྷ; ) TIBETAN SUBJOINED LETTER GA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7; # (◌ྜ◌̴◌ྷ; ◌ྜ◌̴◌ྷ; ◌ྜ◌̴◌ྷ; ◌ྜ◌̴◌ྷ; ◌ྜ◌̴◌ྷ; ) TIBETAN SUBJOINED LETTER DDA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7; # (◌ྡ◌̴◌ྷ; ◌ྡ◌̴◌ྷ; ◌ྡ◌̴◌ྷ; ◌ྡ◌̴◌ྷ; ◌ྡ◌̴◌ྷ; ) TIBETAN SUBJOINED LETTER DA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7; # (◌ྦ◌̴◌ྷ; ◌ྦ◌̴◌ྷ; ◌ྦ◌̴◌ྷ; ◌ྦ◌̴◌ྷ; ◌ྦ◌̴◌ྷ; ) TIBETAN SUBJOINED LETTER BA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7; # (◌ྫ◌̴◌ྷ; ◌ྫ◌̴◌ྷ; ◌ྫ◌̴◌ྷ; ◌ྫ◌̴◌ྷ; ◌ྫ◌̴◌ྷ; ) TIBETAN SUBJOINED LETTER DZA, COMBINING TILDE OVERLAY, TIBETAN SUBJOINED LETTER HA
+1025 0334 102E;1025 0334 102E;1025 0334 102E;1025 0334 102E;1025 0334 102E; # (ဥ◌̴◌ီ; ဥ◌̴◌ီ; ဥ◌̴◌ီ; ဥ◌̴◌ီ; ဥ◌̴◌ီ; ) MYANMAR LETTER U, COMBINING TILDE OVERLAY, MYANMAR VOWEL SIGN II
+1100 0334 1161;1100 0334 1161;1100 0334 1161;1100 0334 1161;1100 0334 1161; # (ᄀ◌̴ᅡ; ᄀ◌̴ᅡ; ᄀ◌̴ᅡ; ᄀ◌̴ᅡ; ᄀ◌̴ᅡ; ) HANGUL CHOSEONG KIYEOK, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG A
+1100 0334 116E;1100 0334 116E;1100 0334 116E;1100 0334 116E;1100 0334 116E; # (ᄀ◌̴ᅮ; ᄀ◌̴ᅮ; ᄀ◌̴ᅮ; ᄀ◌̴ᅮ; ᄀ◌̴ᅮ; ) HANGUL CHOSEONG KIYEOK, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG U
+1101 0334 1166;1101 0334 1166;1101 0334 1166;1101 0334 1166;1101 0334 1166; # (á„◌̴ᅦ; á„◌̴ᅦ; á„◌̴ᅦ; á„◌̴ᅦ; á„◌̴ᅦ; ) HANGUL CHOSEONG SSANGKIYEOK, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG E
+1101 0334 1173;1101 0334 1173;1101 0334 1173;1101 0334 1173;1101 0334 1173; # (á„◌̴ᅳ; á„◌̴ᅳ; á„◌̴ᅳ; á„◌̴ᅳ; á„◌̴ᅳ; ) HANGUL CHOSEONG SSANGKIYEOK, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG EU
+1102 0334 116B;1102 0334 116B;1102 0334 116B;1102 0334 116B;1102 0334 116B; # (ᄂ◌̴ᅫ; ᄂ◌̴ᅫ; ᄂ◌̴ᅫ; ᄂ◌̴ᅫ; ᄂ◌̴ᅫ; ) HANGUL CHOSEONG NIEUN, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WAE
+1103 0334 1163;1103 0334 1163;1103 0334 1163;1103 0334 1163;1103 0334 1163; # (ᄃ◌̴ᅣ; ᄃ◌̴ᅣ; ᄃ◌̴ᅣ; ᄃ◌̴ᅣ; ᄃ◌̴ᅣ; ) HANGUL CHOSEONG TIKEUT, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YA
+1103 0334 1170;1103 0334 1170;1103 0334 1170;1103 0334 1170;1103 0334 1170; # (ᄃ◌̴ᅰ; ᄃ◌̴ᅰ; ᄃ◌̴ᅰ; ᄃ◌̴ᅰ; ᄃ◌̴ᅰ; ) HANGUL CHOSEONG TIKEUT, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WE
+1104 0334 1168;1104 0334 1168;1104 0334 1168;1104 0334 1168;1104 0334 1168; # (ᄄ◌̴ᅨ; ᄄ◌̴ᅨ; ᄄ◌̴ᅨ; ᄄ◌̴ᅨ; ᄄ◌̴ᅨ; ) HANGUL CHOSEONG SSANGTIKEUT, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YE
+1104 0334 1175;1104 0334 1175;1104 0334 1175;1104 0334 1175;1104 0334 1175; # (ᄄ◌̴ᅵ; ᄄ◌̴ᅵ; ᄄ◌̴ᅵ; ᄄ◌̴ᅵ; ᄄ◌̴ᅵ; ) HANGUL CHOSEONG SSANGTIKEUT, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG I
+1105 0334 116D;1105 0334 116D;1105 0334 116D;1105 0334 116D;1105 0334 116D; # (ᄅ◌̴ᅭ; ᄅ◌̴ᅭ; ᄅ◌̴ᅭ; ᄅ◌̴ᅭ; ᄅ◌̴ᅭ; ) HANGUL CHOSEONG RIEUL, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YO
+1106 0334 1165;1106 0334 1165;1106 0334 1165;1106 0334 1165;1106 0334 1165; # (ᄆ◌̴ᅥ; ᄆ◌̴ᅥ; ᄆ◌̴ᅥ; ᄆ◌̴ᅥ; ᄆ◌̴ᅥ; ) HANGUL CHOSEONG MIEUM, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG EO
+1106 0334 1172;1106 0334 1172;1106 0334 1172;1106 0334 1172;1106 0334 1172; # (ᄆ◌̴ᅲ; ᄆ◌̴ᅲ; ᄆ◌̴ᅲ; ᄆ◌̴ᅲ; ᄆ◌̴ᅲ; ) HANGUL CHOSEONG MIEUM, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YU
+1107 0334 116A;1107 0334 116A;1107 0334 116A;1107 0334 116A;1107 0334 116A; # (ᄇ◌̴ᅪ; ᄇ◌̴ᅪ; ᄇ◌̴ᅪ; ᄇ◌̴ᅪ; ᄇ◌̴ᅪ; ) HANGUL CHOSEONG PIEUP, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WA
+1108 0334 1162;1108 0334 1162;1108 0334 1162;1108 0334 1162;1108 0334 1162; # (ᄈ◌̴ᅢ; ᄈ◌̴ᅢ; ᄈ◌̴ᅢ; ᄈ◌̴ᅢ; ᄈ◌̴ᅢ; ) HANGUL CHOSEONG SSANGPIEUP, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG AE
+1108 0334 116F;1108 0334 116F;1108 0334 116F;1108 0334 116F;1108 0334 116F; # (ᄈ◌̴ᅯ; ᄈ◌̴ᅯ; ᄈ◌̴ᅯ; ᄈ◌̴ᅯ; ᄈ◌̴ᅯ; ) HANGUL CHOSEONG SSANGPIEUP, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WEO
+1109 0334 1167;1109 0334 1167;1109 0334 1167;1109 0334 1167;1109 0334 1167; # (ᄉ◌̴ᅧ; ᄉ◌̴ᅧ; ᄉ◌̴ᅧ; ᄉ◌̴ᅧ; ᄉ◌̴ᅧ; ) HANGUL CHOSEONG SIOS, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YEO
+1109 0334 1174;1109 0334 1174;1109 0334 1174;1109 0334 1174;1109 0334 1174; # (ᄉ◌̴ᅴ; ᄉ◌̴ᅴ; ᄉ◌̴ᅴ; ᄉ◌̴ᅴ; ᄉ◌̴ᅴ; ) HANGUL CHOSEONG SIOS, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YI
+110A 0334 116C;110A 0334 116C;110A 0334 116C;110A 0334 116C;110A 0334 116C; # (ᄊ◌̴ᅬ; ᄊ◌̴ᅬ; ᄊ◌̴ᅬ; ᄊ◌̴ᅬ; ᄊ◌̴ᅬ; ) HANGUL CHOSEONG SSANGSIOS, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG OE
+110B 0334 1164;110B 0334 1164;110B 0334 1164;110B 0334 1164;110B 0334 1164; # (ᄋ◌̴ᅤ; ᄋ◌̴ᅤ; ᄋ◌̴ᅤ; ᄋ◌̴ᅤ; ᄋ◌̴ᅤ; ) HANGUL CHOSEONG IEUNG, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YAE
+110B 0334 1171;110B 0334 1171;110B 0334 1171;110B 0334 1171;110B 0334 1171; # (ᄋ◌̴ᅱ; ᄋ◌̴ᅱ; ᄋ◌̴ᅱ; ᄋ◌̴ᅱ; ᄋ◌̴ᅱ; ) HANGUL CHOSEONG IEUNG, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WI
+110C 0334 1169;110C 0334 1169;110C 0334 1169;110C 0334 1169;110C 0334 1169; # (ᄌ◌̴ᅩ; ᄌ◌̴ᅩ; ᄌ◌̴ᅩ; ᄌ◌̴ᅩ; ᄌ◌̴ᅩ; ) HANGUL CHOSEONG CIEUC, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG O
+110D 0334 1161;110D 0334 1161;110D 0334 1161;110D 0334 1161;110D 0334 1161; # (á„◌̴ᅡ; á„◌̴ᅡ; á„◌̴ᅡ; á„◌̴ᅡ; á„◌̴ᅡ; ) HANGUL CHOSEONG SSANGCIEUC, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG A
+110D 0334 116E;110D 0334 116E;110D 0334 116E;110D 0334 116E;110D 0334 116E; # (á„◌̴ᅮ; á„◌̴ᅮ; á„◌̴ᅮ; á„◌̴ᅮ; á„◌̴ᅮ; ) HANGUL CHOSEONG SSANGCIEUC, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG U
+110E 0334 1166;110E 0334 1166;110E 0334 1166;110E 0334 1166;110E 0334 1166; # (ᄎ◌̴ᅦ; ᄎ◌̴ᅦ; ᄎ◌̴ᅦ; ᄎ◌̴ᅦ; ᄎ◌̴ᅦ; ) HANGUL CHOSEONG CHIEUCH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG E
+110E 0334 1173;110E 0334 1173;110E 0334 1173;110E 0334 1173;110E 0334 1173; # (ᄎ◌̴ᅳ; ᄎ◌̴ᅳ; ᄎ◌̴ᅳ; ᄎ◌̴ᅳ; ᄎ◌̴ᅳ; ) HANGUL CHOSEONG CHIEUCH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG EU
+110F 0334 116B;110F 0334 116B;110F 0334 116B;110F 0334 116B;110F 0334 116B; # (á„◌̴ᅫ; á„◌̴ᅫ; á„◌̴ᅫ; á„◌̴ᅫ; á„◌̴ᅫ; ) HANGUL CHOSEONG KHIEUKH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WAE
+1110 0334 1163;1110 0334 1163;1110 0334 1163;1110 0334 1163;1110 0334 1163; # (á„◌̴ᅣ; á„◌̴ᅣ; á„◌̴ᅣ; á„◌̴ᅣ; á„◌̴ᅣ; ) HANGUL CHOSEONG THIEUTH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YA
+1110 0334 1170;1110 0334 1170;1110 0334 1170;1110 0334 1170;1110 0334 1170; # (á„◌̴ᅰ; á„◌̴ᅰ; á„◌̴ᅰ; á„◌̴ᅰ; á„◌̴ᅰ; ) HANGUL CHOSEONG THIEUTH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG WE
+1111 0334 1168;1111 0334 1168;1111 0334 1168;1111 0334 1168;1111 0334 1168; # (ᄑ◌̴ᅨ; ᄑ◌̴ᅨ; ᄑ◌̴ᅨ; ᄑ◌̴ᅨ; ᄑ◌̴ᅨ; ) HANGUL CHOSEONG PHIEUPH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YE
+1111 0334 1175;1111 0334 1175;1111 0334 1175;1111 0334 1175;1111 0334 1175; # (ᄑ◌̴ᅵ; ᄑ◌̴ᅵ; ᄑ◌̴ᅵ; ᄑ◌̴ᅵ; ᄑ◌̴ᅵ; ) HANGUL CHOSEONG PHIEUPH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG I
+1112 0334 116D;1112 0334 116D;1112 0334 116D;1112 0334 116D;1112 0334 116D; # (ᄒ◌̴ᅭ; ᄒ◌̴ᅭ; ᄒ◌̴ᅭ; ᄒ◌̴ᅭ; ᄒ◌̴ᅭ; ) HANGUL CHOSEONG HIEUH, COMBINING TILDE OVERLAY, HANGUL JUNGSEONG YO
+1B05 0334 1B35;1B05 0334 1B35;1B05 0334 1B35;1B05 0334 1B35;1B05 0334 1B35; # (ᬅ◌̴ᬵ; ᬅ◌̴ᬵ; ᬅ◌̴ᬵ; ᬅ◌̴ᬵ; ᬅ◌̴ᬵ; ) BALINESE LETTER AKARA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B07 0334 1B35;1B07 0334 1B35;1B07 0334 1B35;1B07 0334 1B35;1B07 0334 1B35; # (ᬇ◌̴ᬵ; ᬇ◌̴ᬵ; ᬇ◌̴ᬵ; ᬇ◌̴ᬵ; ᬇ◌̴ᬵ; ) BALINESE LETTER IKARA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B09 0334 1B35;1B09 0334 1B35;1B09 0334 1B35;1B09 0334 1B35;1B09 0334 1B35; # (ᬉ◌̴ᬵ; ᬉ◌̴ᬵ; ᬉ◌̴ᬵ; ᬉ◌̴ᬵ; ᬉ◌̴ᬵ; ) BALINESE LETTER UKARA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B0B 0334 1B35;1B0B 0334 1B35;1B0B 0334 1B35;1B0B 0334 1B35;1B0B 0334 1B35; # (ᬋ◌̴ᬵ; ᬋ◌̴ᬵ; ᬋ◌̴ᬵ; ᬋ◌̴ᬵ; ᬋ◌̴ᬵ; ) BALINESE LETTER RA REPA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B0D 0334 1B35;1B0D 0334 1B35;1B0D 0334 1B35;1B0D 0334 1B35;1B0D 0334 1B35; # (á¬â—ŒÌ´á¬µ; á¬â—ŒÌ´á¬µ; á¬â—ŒÌ´á¬µ; á¬â—ŒÌ´á¬µ; á¬â—ŒÌ´á¬µ; ) BALINESE LETTER LA LENGA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B11 0334 1B35;1B11 0334 1B35;1B11 0334 1B35;1B11 0334 1B35;1B11 0334 1B35; # (ᬑ◌̴ᬵ; ᬑ◌̴ᬵ; ᬑ◌̴ᬵ; ᬑ◌̴ᬵ; ᬑ◌̴ᬵ; ) BALINESE LETTER OKARA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B3A 0334 1B35;1B3A 0334 1B35;1B3A 0334 1B35;1B3A 0334 1B35;1B3A 0334 1B35; # (◌ᬺ◌̴ᬵ; ◌ᬺ◌̴ᬵ; ◌ᬺ◌̴ᬵ; ◌ᬺ◌̴ᬵ; ◌ᬺ◌̴ᬵ; ) BALINESE VOWEL SIGN RA REPA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B3C 0334 1B35;1B3C 0334 1B35;1B3C 0334 1B35;1B3C 0334 1B35;1B3C 0334 1B35; # (◌ᬼ◌̴ᬵ; ◌ᬼ◌̴ᬵ; ◌ᬼ◌̴ᬵ; ◌ᬼ◌̴ᬵ; ◌ᬼ◌̴ᬵ; ) BALINESE VOWEL SIGN LA LENGA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B3E 0334 1B35;1B3E 0334 1B35;1B3E 0334 1B35;1B3E 0334 1B35;1B3E 0334 1B35; # (ᬾ◌̴ᬵ; ᬾ◌̴ᬵ; ᬾ◌̴ᬵ; ᬾ◌̴ᬵ; ᬾ◌̴ᬵ; ) BALINESE VOWEL SIGN TALING, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B3F 0334 1B35;1B3F 0334 1B35;1B3F 0334 1B35;1B3F 0334 1B35;1B3F 0334 1B35; # (ᬿ◌̴ᬵ; ᬿ◌̴ᬵ; ᬿ◌̴ᬵ; ᬿ◌̴ᬵ; ᬿ◌̴ᬵ; ) BALINESE VOWEL SIGN TALING REPA, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+1B42 0334 1B35;1B42 0334 1B35;1B42 0334 1B35;1B42 0334 1B35;1B42 0334 1B35; # (◌ᭂ◌̴ᬵ; ◌ᭂ◌̴ᬵ; ◌ᭂ◌̴ᬵ; ◌ᭂ◌̴ᬵ; ◌ᭂ◌̴ᬵ; ) BALINESE VOWEL SIGN PEPET, COMBINING TILDE OVERLAY, BALINESE VOWEL SIGN TEDUNG
+AC54 0334 11AE;AC54 0334 11AE;1100 1164 0334 11AE;AC54 0334 11AE;1100 1164 0334 11AE; # (걔◌̴ᆮ; 걔◌̴ᆮ; 걔◌̴ᆮ; 걔◌̴ᆮ; 걔◌̴ᆮ; ) HANGUL SYLLABLE GYAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+ACA8 0334 11B5;ACA8 0334 11B5;1100 1167 0334 11B5;ACA8 0334 11B5;1100 1167 0334 11B5; # (겨◌̴ᆵ; 겨◌̴ᆵ; 겨◌̴ᆵ; 겨◌̴ᆵ; 겨◌̴ᆵ; ) HANGUL SYLLABLE GYEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+ACFC 0334 11BC;ACFC 0334 11BC;1100 116A 0334 11BC;ACFC 0334 11BC;1100 116A 0334 11BC; # (과◌̴ᆼ; 과◌̴ᆼ; 과◌̴ᆼ; 과◌̴ᆼ; 과◌̴ᆼ; ) HANGUL SYLLABLE GWA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+ADC0 0334 11AE;ADC0 0334 11AE;1100 1171 0334 11AE;ADC0 0334 11AE;1100 1171 0334 11AE; # (귀◌̴ᆮ; 귀◌̴ᆮ; 귀◌̴ᆮ; 귀◌̴ᆮ; 귀◌̴ᆮ; ) HANGUL SYLLABLE GWI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+AE14 0334 11B5;AE14 0334 11B5;1100 1174 0334 11B5;AE14 0334 11B5;1100 1174 0334 11B5; # (긔◌̴ᆵ; 긔◌̴ᆵ; 긔◌̴ᆵ; 긔◌̴ᆵ; 긔◌̴ᆵ; ) HANGUL SYLLABLE GYI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+AE68 0334 11BC;AE68 0334 11BC;1101 1162 0334 11BC;AE68 0334 11BC;1101 1162 0334 11BC; # (깨◌̴ᆼ; 깨◌̴ᆼ; á„ᅢ◌̴ᆼ; 깨◌̴ᆼ; á„ᅢ◌̴ᆼ; ) HANGUL SYLLABLE GGAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+AF2C 0334 11AE;AF2C 0334 11AE;1101 1169 0334 11AE;AF2C 0334 11AE;1101 1169 0334 11AE; # (꼬◌̴ᆮ; 꼬◌̴ᆮ; á„ᅩ◌̴ᆮ; 꼬◌̴ᆮ; á„ᅩ◌̴ᆮ; ) HANGUL SYLLABLE GGO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+AF80 0334 11B5;AF80 0334 11B5;1101 116C 0334 11B5;AF80 0334 11B5;1101 116C 0334 11B5; # (꾀◌̴ᆵ; 꾀◌̴ᆵ; á„ᅬ◌̴ᆵ; 꾀◌̴ᆵ; á„ᅬ◌̴ᆵ; ) HANGUL SYLLABLE GGOE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+AFD4 0334 11BC;AFD4 0334 11BC;1101 116F 0334 11BC;AFD4 0334 11BC;1101 116F 0334 11BC; # (꿔◌̴ᆼ; 꿔◌̴ᆼ; á„ᅯ◌̴ᆼ; 꿔◌̴ᆼ; á„ᅯ◌̴ᆼ; ) HANGUL SYLLABLE GGWEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B098 0334 11AE;B098 0334 11AE;1102 1161 0334 11AE;B098 0334 11AE;1102 1161 0334 11AE; # (나◌̴ᆮ; 나◌̴ᆮ; 나◌̴ᆮ; 나◌̴ᆮ; 나◌̴ᆮ; ) HANGUL SYLLABLE NA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B0EC 0334 11B5;B0EC 0334 11B5;1102 1164 0334 11B5;B0EC 0334 11B5;1102 1164 0334 11B5; # (냬◌̴ᆵ; 냬◌̴ᆵ; 냬◌̴ᆵ; 냬◌̴ᆵ; 냬◌̴ᆵ; ) HANGUL SYLLABLE NYAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B140 0334 11BC;B140 0334 11BC;1102 1167 0334 11BC;B140 0334 11BC;1102 1167 0334 11BC; # (녀◌̴ᆼ; 녀◌̴ᆼ; 녀◌̴ᆼ; 녀◌̴ᆼ; 녀◌̴ᆼ; ) HANGUL SYLLABLE NYEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B204 0334 11AE;B204 0334 11AE;1102 116E 0334 11AE;B204 0334 11AE;1102 116E 0334 11AE; # (누◌̴ᆮ; 누◌̴ᆮ; 누◌̴ᆮ; 누◌̴ᆮ; 누◌̴ᆮ; ) HANGUL SYLLABLE NU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B258 0334 11B5;B258 0334 11B5;1102 1171 0334 11B5;B258 0334 11B5;1102 1171 0334 11B5; # (뉘◌̴ᆵ; 뉘◌̴ᆵ; 뉘◌̴ᆵ; 뉘◌̴ᆵ; 뉘◌̴ᆵ; ) HANGUL SYLLABLE NWI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B2AC 0334 11BC;B2AC 0334 11BC;1102 1174 0334 11BC;B2AC 0334 11BC;1102 1174 0334 11BC; # (늬◌̴ᆼ; 늬◌̴ᆼ; 늬◌̴ᆼ; 늬◌̴ᆼ; 늬◌̴ᆼ; ) HANGUL SYLLABLE NYI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B370 0334 11AE;B370 0334 11AE;1103 1166 0334 11AE;B370 0334 11AE;1103 1166 0334 11AE; # (ë°â—ŒÌ´á†®; ë°â—ŒÌ´á†®; 데◌̴ᆮ; ë°â—ŒÌ´á†®; 데◌̴ᆮ; ) HANGUL SYLLABLE DE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B3C4 0334 11B5;B3C4 0334 11B5;1103 1169 0334 11B5;B3C4 0334 11B5;1103 1169 0334 11B5; # (ë„◌̴ᆵ; ë„◌̴ᆵ; 도◌̴ᆵ; ë„◌̴ᆵ; 도◌̴ᆵ; ) HANGUL SYLLABLE DO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B418 0334 11BC;B418 0334 11BC;1103 116C 0334 11BC;B418 0334 11BC;1103 116C 0334 11BC; # (ë˜â—ŒÌ´á†¼; ë˜â—ŒÌ´á†¼; 되◌̴ᆼ; ë˜â—ŒÌ´á†¼; 되◌̴ᆼ; ) HANGUL SYLLABLE DOE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B4DC 0334 11AE;B4DC 0334 11AE;1103 1173 0334 11AE;B4DC 0334 11AE;1103 1173 0334 11AE; # (드◌̴ᆮ; 드◌̴ᆮ; 드◌̴ᆮ; 드◌̴ᆮ; 드◌̴ᆮ; ) HANGUL SYLLABLE DEU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B530 0334 11B5;B530 0334 11B5;1104 1161 0334 11B5;B530 0334 11B5;1104 1161 0334 11B5; # (따◌̴ᆵ; 따◌̴ᆵ; 따◌̴ᆵ; 따◌̴ᆵ; 따◌̴ᆵ; ) HANGUL SYLLABLE DDA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B584 0334 11BC;B584 0334 11BC;1104 1164 0334 11BC;B584 0334 11BC;1104 1164 0334 11BC; # (떄◌̴ᆼ; 떄◌̴ᆼ; 떄◌̴ᆼ; 떄◌̴ᆼ; 떄◌̴ᆼ; ) HANGUL SYLLABLE DDYAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B648 0334 11AE;B648 0334 11AE;1104 116B 0334 11AE;B648 0334 11AE;1104 116B 0334 11AE; # (뙈◌̴ᆮ; 뙈◌̴ᆮ; 뙈◌̴ᆮ; 뙈◌̴ᆮ; 뙈◌̴ᆮ; ) HANGUL SYLLABLE DDWAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B69C 0334 11B5;B69C 0334 11B5;1104 116E 0334 11B5;B69C 0334 11B5;1104 116E 0334 11B5; # (뚜◌̴ᆵ; 뚜◌̴ᆵ; 뚜◌̴ᆵ; 뚜◌̴ᆵ; 뚜◌̴ᆵ; ) HANGUL SYLLABLE DDU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B6F0 0334 11BC;B6F0 0334 11BC;1104 1171 0334 11BC;B6F0 0334 11BC;1104 1171 0334 11BC; # (뛰◌̴ᆼ; 뛰◌̴ᆼ; 뛰◌̴ᆼ; 뛰◌̴ᆼ; 뛰◌̴ᆼ; ) HANGUL SYLLABLE DDWI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B7B4 0334 11AE;B7B4 0334 11AE;1105 1163 0334 11AE;B7B4 0334 11AE;1105 1163 0334 11AE; # (랴◌̴ᆮ; 랴◌̴ᆮ; 랴◌̴ᆮ; 랴◌̴ᆮ; 랴◌̴ᆮ; ) HANGUL SYLLABLE RYA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B808 0334 11B5;B808 0334 11B5;1105 1166 0334 11B5;B808 0334 11B5;1105 1166 0334 11B5; # (레◌̴ᆵ; 레◌̴ᆵ; 레◌̴ᆵ; 레◌̴ᆵ; 레◌̴ᆵ; ) HANGUL SYLLABLE RE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B85C 0334 11BC;B85C 0334 11BC;1105 1169 0334 11BC;B85C 0334 11BC;1105 1169 0334 11BC; # (로◌̴ᆼ; 로◌̴ᆼ; 로◌̴ᆼ; 로◌̴ᆼ; 로◌̴ᆼ; ) HANGUL SYLLABLE RO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+B920 0334 11AE;B920 0334 11AE;1105 1170 0334 11AE;B920 0334 11AE;1105 1170 0334 11AE; # (뤠◌̴ᆮ; 뤠◌̴ᆮ; 뤠◌̴ᆮ; 뤠◌̴ᆮ; 뤠◌̴ᆮ; ) HANGUL SYLLABLE RWE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+B974 0334 11B5;B974 0334 11B5;1105 1173 0334 11B5;B974 0334 11B5;1105 1173 0334 11B5; # (르◌̴ᆵ; 르◌̴ᆵ; 르◌̴ᆵ; 르◌̴ᆵ; 르◌̴ᆵ; ) HANGUL SYLLABLE REU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+B9C8 0334 11BC;B9C8 0334 11BC;1106 1161 0334 11BC;B9C8 0334 11BC;1106 1161 0334 11BC; # (마◌̴ᆼ; 마◌̴ᆼ; 마◌̴ᆼ; 마◌̴ᆼ; 마◌̴ᆼ; ) HANGUL SYLLABLE MA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+BA8C 0334 11AE;BA8C 0334 11AE;1106 1168 0334 11AE;BA8C 0334 11AE;1106 1168 0334 11AE; # (몌◌̴ᆮ; 몌◌̴ᆮ; 몌◌̴ᆮ; 몌◌̴ᆮ; 몌◌̴ᆮ; ) HANGUL SYLLABLE MYE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+BAE0 0334 11B5;BAE0 0334 11B5;1106 116B 0334 11B5;BAE0 0334 11B5;1106 116B 0334 11B5; # (뫠◌̴ᆵ; 뫠◌̴ᆵ; 뫠◌̴ᆵ; 뫠◌̴ᆵ; 뫠◌̴ᆵ; ) HANGUL SYLLABLE MWAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+BB34 0334 11BC;BB34 0334 11BC;1106 116E 0334 11BC;BB34 0334 11BC;1106 116E 0334 11BC; # (무◌̴ᆼ; 무◌̴ᆼ; 무◌̴ᆼ; 무◌̴ᆼ; 무◌̴ᆼ; ) HANGUL SYLLABLE MU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+BBF8 0334 11AE;BBF8 0334 11AE;1106 1175 0334 11AE;BBF8 0334 11AE;1106 1175 0334 11AE; # (미◌̴ᆮ; 미◌̴ᆮ; 미◌̴ᆮ; 미◌̴ᆮ; 미◌̴ᆮ; ) HANGUL SYLLABLE MI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+BC4C 0334 11B5;BC4C 0334 11B5;1107 1163 0334 11B5;BC4C 0334 11B5;1107 1163 0334 11B5; # (뱌◌̴ᆵ; 뱌◌̴ᆵ; 뱌◌̴ᆵ; 뱌◌̴ᆵ; 뱌◌̴ᆵ; ) HANGUL SYLLABLE BYA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+BCA0 0334 11BC;BCA0 0334 11BC;1107 1166 0334 11BC;BCA0 0334 11BC;1107 1166 0334 11BC; # (베◌̴ᆼ; 베◌̴ᆼ; 베◌̴ᆼ; 베◌̴ᆼ; 베◌̴ᆼ; ) HANGUL SYLLABLE BE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+BD64 0334 11AE;BD64 0334 11AE;1107 116D 0334 11AE;BD64 0334 11AE;1107 116D 0334 11AE; # (뵤◌̴ᆮ; 뵤◌̴ᆮ; 뵤◌̴ᆮ; 뵤◌̴ᆮ; 뵤◌̴ᆮ; ) HANGUL SYLLABLE BYO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+BDB8 0334 11B5;BDB8 0334 11B5;1107 1170 0334 11B5;BDB8 0334 11B5;1107 1170 0334 11B5; # (붸◌̴ᆵ; 붸◌̴ᆵ; 붸◌̴ᆵ; 붸◌̴ᆵ; 붸◌̴ᆵ; ) HANGUL SYLLABLE BWE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+BE0C 0334 11BC;BE0C 0334 11BC;1107 1173 0334 11BC;BE0C 0334 11BC;1107 1173 0334 11BC; # (브◌̴ᆼ; 브◌̴ᆼ; 브◌̴ᆼ; 브◌̴ᆼ; 브◌̴ᆼ; ) HANGUL SYLLABLE BEU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+BED0 0334 11AE;BED0 0334 11AE;1108 1165 0334 11AE;BED0 0334 11AE;1108 1165 0334 11AE; # (ë»â—ŒÌ´á†®; ë»â—ŒÌ´á†®; 뻐◌̴ᆮ; ë»â—ŒÌ´á†®; 뻐◌̴ᆮ; ) HANGUL SYLLABLE BBEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+BF24 0334 11B5;BF24 0334 11B5;1108 1168 0334 11B5;BF24 0334 11B5;1108 1168 0334 11B5; # (뼤◌̴ᆵ; 뼤◌̴ᆵ; 뼤◌̴ᆵ; 뼤◌̴ᆵ; 뼤◌̴ᆵ; ) HANGUL SYLLABLE BBYE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+BF78 0334 11BC;BF78 0334 11BC;1108 116B 0334 11BC;BF78 0334 11BC;1108 116B 0334 11BC; # (뽸◌̴ᆼ; 뽸◌̴ᆼ; 뽸◌̴ᆼ; 뽸◌̴ᆼ; 뽸◌̴ᆼ; ) HANGUL SYLLABLE BBWAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C03C 0334 11AE;C03C 0334 11AE;1108 1172 0334 11AE;C03C 0334 11AE;1108 1172 0334 11AE; # (쀼◌̴ᆮ; 쀼◌̴ᆮ; 쀼◌̴ᆮ; 쀼◌̴ᆮ; 쀼◌̴ᆮ; ) HANGUL SYLLABLE BBYU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C090 0334 11B5;C090 0334 11B5;1108 1175 0334 11B5;C090 0334 11B5;1108 1175 0334 11B5; # (ì‚◌̴ᆵ; ì‚◌̴ᆵ; 삐◌̴ᆵ; ì‚◌̴ᆵ; 삐◌̴ᆵ; ) HANGUL SYLLABLE BBI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C0E4 0334 11BC;C0E4 0334 11BC;1109 1163 0334 11BC;C0E4 0334 11BC;1109 1163 0334 11BC; # (샤◌̴ᆼ; 샤◌̴ᆼ; 샤◌̴ᆼ; 샤◌̴ᆼ; 샤◌̴ᆼ; ) HANGUL SYLLABLE SYA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C1A8 0334 11AE;C1A8 0334 11AE;1109 116A 0334 11AE;C1A8 0334 11AE;1109 116A 0334 11AE; # (솨◌̴ᆮ; 솨◌̴ᆮ; 솨◌̴ᆮ; 솨◌̴ᆮ; 솨◌̴ᆮ; ) HANGUL SYLLABLE SWA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C1FC 0334 11B5;C1FC 0334 11B5;1109 116D 0334 11B5;C1FC 0334 11B5;1109 116D 0334 11B5; # (쇼◌̴ᆵ; 쇼◌̴ᆵ; 쇼◌̴ᆵ; 쇼◌̴ᆵ; 쇼◌̴ᆵ; ) HANGUL SYLLABLE SYO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C250 0334 11BC;C250 0334 11BC;1109 1170 0334 11BC;C250 0334 11BC;1109 1170 0334 11BC; # (ì‰â—ŒÌ´á†¼; ì‰â—ŒÌ´á†¼; 쉐◌̴ᆼ; ì‰â—ŒÌ´á†¼; 쉐◌̴ᆼ; ) HANGUL SYLLABLE SWE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C314 0334 11AE;C314 0334 11AE;110A 1162 0334 11AE;C314 0334 11AE;110A 1162 0334 11AE; # (쌔◌̴ᆮ; 쌔◌̴ᆮ; 쌔◌̴ᆮ; 쌔◌̴ᆮ; 쌔◌̴ᆮ; ) HANGUL SYLLABLE SSAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C368 0334 11B5;C368 0334 11B5;110A 1165 0334 11B5;C368 0334 11B5;110A 1165 0334 11B5; # (ì¨â—ŒÌ´á†µ; ì¨â—ŒÌ´á†µ; 써◌̴ᆵ; ì¨â—ŒÌ´á†µ; 써◌̴ᆵ; ) HANGUL SYLLABLE SSEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C3BC 0334 11BC;C3BC 0334 11BC;110A 1168 0334 11BC;C3BC 0334 11BC;110A 1168 0334 11BC; # (쎼◌̴ᆼ; 쎼◌̴ᆼ; 쎼◌̴ᆼ; 쎼◌̴ᆼ; 쎼◌̴ᆼ; ) HANGUL SYLLABLE SSYE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C480 0334 11AE;C480 0334 11AE;110A 116F 0334 11AE;C480 0334 11AE;110A 116F 0334 11AE; # (쒀◌̴ᆮ; 쒀◌̴ᆮ; 쒀◌̴ᆮ; 쒀◌̴ᆮ; 쒀◌̴ᆮ; ) HANGUL SYLLABLE SSWEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C4D4 0334 11B5;C4D4 0334 11B5;110A 1172 0334 11B5;C4D4 0334 11B5;110A 1172 0334 11B5; # (쓔◌̴ᆵ; 쓔◌̴ᆵ; 쓔◌̴ᆵ; 쓔◌̴ᆵ; 쓔◌̴ᆵ; ) HANGUL SYLLABLE SSYU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C528 0334 11BC;C528 0334 11BC;110A 1175 0334 11BC;C528 0334 11BC;110A 1175 0334 11BC; # (씨◌̴ᆼ; 씨◌̴ᆼ; 씨◌̴ᆼ; 씨◌̴ᆼ; 씨◌̴ᆼ; ) HANGUL SYLLABLE SSI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C5EC 0334 11AE;C5EC 0334 11AE;110B 1167 0334 11AE;C5EC 0334 11AE;110B 1167 0334 11AE; # (여◌̴ᆮ; 여◌̴ᆮ; 여◌̴ᆮ; 여◌̴ᆮ; 여◌̴ᆮ; ) HANGUL SYLLABLE YEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C640 0334 11B5;C640 0334 11B5;110B 116A 0334 11B5;C640 0334 11B5;110B 116A 0334 11B5; # (와◌̴ᆵ; 와◌̴ᆵ; 와◌̴ᆵ; 와◌̴ᆵ; 와◌̴ᆵ; ) HANGUL SYLLABLE WA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C694 0334 11BC;C694 0334 11BC;110B 116D 0334 11BC;C694 0334 11BC;110B 116D 0334 11BC; # (요◌̴ᆼ; 요◌̴ᆼ; 요◌̴ᆼ; 요◌̴ᆼ; 요◌̴ᆼ; ) HANGUL SYLLABLE YO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C758 0334 11AE;C758 0334 11AE;110B 1174 0334 11AE;C758 0334 11AE;110B 1174 0334 11AE; # (ì˜â—ŒÌ´á†®; ì˜â—ŒÌ´á†®; 의◌̴ᆮ; ì˜â—ŒÌ´á†®; 의◌̴ᆮ; ) HANGUL SYLLABLE YI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C7AC 0334 11B5;C7AC 0334 11B5;110C 1162 0334 11B5;C7AC 0334 11B5;110C 1162 0334 11B5; # (재◌̴ᆵ; 재◌̴ᆵ; 재◌̴ᆵ; 재◌̴ᆵ; 재◌̴ᆵ; ) HANGUL SYLLABLE JAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C800 0334 11BC;C800 0334 11BC;110C 1165 0334 11BC;C800 0334 11BC;110C 1165 0334 11BC; # (저◌̴ᆼ; 저◌̴ᆼ; 저◌̴ᆼ; 저◌̴ᆼ; 저◌̴ᆼ; ) HANGUL SYLLABLE JEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+C8C4 0334 11AE;C8C4 0334 11AE;110C 116C 0334 11AE;C8C4 0334 11AE;110C 116C 0334 11AE; # (죄◌̴ᆮ; 죄◌̴ᆮ; 죄◌̴ᆮ; 죄◌̴ᆮ; 죄◌̴ᆮ; ) HANGUL SYLLABLE JOE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+C918 0334 11B5;C918 0334 11B5;110C 116F 0334 11B5;C918 0334 11B5;110C 116F 0334 11B5; # (줘◌̴ᆵ; 줘◌̴ᆵ; 줘◌̴ᆵ; 줘◌̴ᆵ; 줘◌̴ᆵ; ) HANGUL SYLLABLE JWEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+C96C 0334 11BC;C96C 0334 11BC;110C 1172 0334 11BC;C96C 0334 11BC;110C 1172 0334 11BC; # (쥬◌̴ᆼ; 쥬◌̴ᆼ; 쥬◌̴ᆼ; 쥬◌̴ᆼ; 쥬◌̴ᆼ; ) HANGUL SYLLABLE JYU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+CA30 0334 11AE;CA30 0334 11AE;110D 1164 0334 11AE;CA30 0334 11AE;110D 1164 0334 11AE; # (쨰◌̴ᆮ; 쨰◌̴ᆮ; á„ᅤ◌̴ᆮ; 쨰◌̴ᆮ; á„ᅤ◌̴ᆮ; ) HANGUL SYLLABLE JJYAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+CA84 0334 11B5;CA84 0334 11B5;110D 1167 0334 11B5;CA84 0334 11B5;110D 1167 0334 11B5; # (쪄◌̴ᆵ; 쪄◌̴ᆵ; á„ᅧ◌̴ᆵ; 쪄◌̴ᆵ; á„ᅧ◌̴ᆵ; ) HANGUL SYLLABLE JJYEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+CAD8 0334 11BC;CAD8 0334 11BC;110D 116A 0334 11BC;CAD8 0334 11BC;110D 116A 0334 11BC; # (쫘◌̴ᆼ; 쫘◌̴ᆼ; á„ᅪ◌̴ᆼ; 쫘◌̴ᆼ; á„ᅪ◌̴ᆼ; ) HANGUL SYLLABLE JJWA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+CB9C 0334 11AE;CB9C 0334 11AE;110D 1171 0334 11AE;CB9C 0334 11AE;110D 1171 0334 11AE; # (쮜◌̴ᆮ; 쮜◌̴ᆮ; á„ᅱ◌̴ᆮ; 쮜◌̴ᆮ; á„ᅱ◌̴ᆮ; ) HANGUL SYLLABLE JJWI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+CBF0 0334 11B5;CBF0 0334 11B5;110D 1174 0334 11B5;CBF0 0334 11B5;110D 1174 0334 11B5; # (쯰◌̴ᆵ; 쯰◌̴ᆵ; á„ᅴ◌̴ᆵ; 쯰◌̴ᆵ; á„ᅴ◌̴ᆵ; ) HANGUL SYLLABLE JJYI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+CC44 0334 11BC;CC44 0334 11BC;110E 1162 0334 11BC;CC44 0334 11BC;110E 1162 0334 11BC; # (채◌̴ᆼ; 채◌̴ᆼ; 채◌̴ᆼ; 채◌̴ᆼ; 채◌̴ᆼ; ) HANGUL SYLLABLE CAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+CD08 0334 11AE;CD08 0334 11AE;110E 1169 0334 11AE;CD08 0334 11AE;110E 1169 0334 11AE; # (초◌̴ᆮ; 초◌̴ᆮ; 초◌̴ᆮ; 초◌̴ᆮ; 초◌̴ᆮ; ) HANGUL SYLLABLE CO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+CD5C 0334 11B5;CD5C 0334 11B5;110E 116C 0334 11B5;CD5C 0334 11B5;110E 116C 0334 11B5; # (최◌̴ᆵ; 최◌̴ᆵ; 최◌̴ᆵ; 최◌̴ᆵ; 최◌̴ᆵ; ) HANGUL SYLLABLE COE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+CDB0 0334 11BC;CDB0 0334 11BC;110E 116F 0334 11BC;CDB0 0334 11BC;110E 116F 0334 11BC; # (춰◌̴ᆼ; 춰◌̴ᆼ; 춰◌̴ᆼ; 춰◌̴ᆼ; 춰◌̴ᆼ; ) HANGUL SYLLABLE CWEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+CE74 0334 11AE;CE74 0334 11AE;110F 1161 0334 11AE;CE74 0334 11AE;110F 1161 0334 11AE; # (카◌̴ᆮ; 카◌̴ᆮ; á„ᅡ◌̴ᆮ; 카◌̴ᆮ; á„ᅡ◌̴ᆮ; ) HANGUL SYLLABLE KA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+CEC8 0334 11B5;CEC8 0334 11B5;110F 1164 0334 11B5;CEC8 0334 11B5;110F 1164 0334 11B5; # (컈◌̴ᆵ; 컈◌̴ᆵ; á„ᅤ◌̴ᆵ; 컈◌̴ᆵ; á„ᅤ◌̴ᆵ; ) HANGUL SYLLABLE KYAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+CF1C 0334 11BC;CF1C 0334 11BC;110F 1167 0334 11BC;CF1C 0334 11BC;110F 1167 0334 11BC; # (켜◌̴ᆼ; 켜◌̴ᆼ; á„ᅧ◌̴ᆼ; 켜◌̴ᆼ; á„ᅧ◌̴ᆼ; ) HANGUL SYLLABLE KYEO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+CFE0 0334 11AE;CFE0 0334 11AE;110F 116E 0334 11AE;CFE0 0334 11AE;110F 116E 0334 11AE; # (쿠◌̴ᆮ; 쿠◌̴ᆮ; á„ᅮ◌̴ᆮ; 쿠◌̴ᆮ; á„ᅮ◌̴ᆮ; ) HANGUL SYLLABLE KU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+D034 0334 11B5;D034 0334 11B5;110F 1171 0334 11B5;D034 0334 11B5;110F 1171 0334 11B5; # (퀴◌̴ᆵ; 퀴◌̴ᆵ; á„ᅱ◌̴ᆵ; 퀴◌̴ᆵ; á„ᅱ◌̴ᆵ; ) HANGUL SYLLABLE KWI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+D088 0334 11BC;D088 0334 11BC;110F 1174 0334 11BC;D088 0334 11BC;110F 1174 0334 11BC; # (킈◌̴ᆼ; 킈◌̴ᆼ; á„ᅴ◌̴ᆼ; 킈◌̴ᆼ; á„ᅴ◌̴ᆼ; ) HANGUL SYLLABLE KYI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+D14C 0334 11AE;D14C 0334 11AE;1110 1166 0334 11AE;D14C 0334 11AE;1110 1166 0334 11AE; # (테◌̴ᆮ; 테◌̴ᆮ; á„ᅦ◌̴ᆮ; 테◌̴ᆮ; á„ᅦ◌̴ᆮ; ) HANGUL SYLLABLE TE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+D1A0 0334 11B5;D1A0 0334 11B5;1110 1169 0334 11B5;D1A0 0334 11B5;1110 1169 0334 11B5; # (토◌̴ᆵ; 토◌̴ᆵ; á„ᅩ◌̴ᆵ; 토◌̴ᆵ; á„ᅩ◌̴ᆵ; ) HANGUL SYLLABLE TO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+D1F4 0334 11BC;D1F4 0334 11BC;1110 116C 0334 11BC;D1F4 0334 11BC;1110 116C 0334 11BC; # (퇴◌̴ᆼ; 퇴◌̴ᆼ; á„ᅬ◌̴ᆼ; 퇴◌̴ᆼ; á„ᅬ◌̴ᆼ; ) HANGUL SYLLABLE TOE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+D2B8 0334 11AE;D2B8 0334 11AE;1110 1173 0334 11AE;D2B8 0334 11AE;1110 1173 0334 11AE; # (트◌̴ᆮ; 트◌̴ᆮ; á„ᅳ◌̴ᆮ; 트◌̴ᆮ; á„ᅳ◌̴ᆮ; ) HANGUL SYLLABLE TEU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+D30C 0334 11B5;D30C 0334 11B5;1111 1161 0334 11B5;D30C 0334 11B5;1111 1161 0334 11B5; # (파◌̴ᆵ; 파◌̴ᆵ; 파◌̴ᆵ; 파◌̴ᆵ; 파◌̴ᆵ; ) HANGUL SYLLABLE PA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+D360 0334 11BC;D360 0334 11BC;1111 1164 0334 11BC;D360 0334 11BC;1111 1164 0334 11BC; # (í â—ŒÌ´á†¼; í â—ŒÌ´á†¼; 퍠◌̴ᆼ; í â—ŒÌ´á†¼; 퍠◌̴ᆼ; ) HANGUL SYLLABLE PYAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+D424 0334 11AE;D424 0334 11AE;1111 116B 0334 11AE;D424 0334 11AE;1111 116B 0334 11AE; # (í¤â—ŒÌ´á†®; í¤â—ŒÌ´á†®; 퐤◌̴ᆮ; í¤â—ŒÌ´á†®; 퐤◌̴ᆮ; ) HANGUL SYLLABLE PWAE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+D478 0334 11B5;D478 0334 11B5;1111 116E 0334 11B5;D478 0334 11B5;1111 116E 0334 11B5; # (푸◌̴ᆵ; 푸◌̴ᆵ; 푸◌̴ᆵ; 푸◌̴ᆵ; 푸◌̴ᆵ; ) HANGUL SYLLABLE PU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+D4CC 0334 11BC;D4CC 0334 11BC;1111 1171 0334 11BC;D4CC 0334 11BC;1111 1171 0334 11BC; # (퓌◌̴ᆼ; 퓌◌̴ᆼ; 퓌◌̴ᆼ; 퓌◌̴ᆼ; 퓌◌̴ᆼ; ) HANGUL SYLLABLE PWI, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+D590 0334 11AE;D590 0334 11AE;1112 1163 0334 11AE;D590 0334 11AE;1112 1163 0334 11AE; # (í–◌̴ᆮ; í–◌̴ᆮ; 햐◌̴ᆮ; í–◌̴ᆮ; 햐◌̴ᆮ; ) HANGUL SYLLABLE HYA, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+D5E4 0334 11B5;D5E4 0334 11B5;1112 1166 0334 11B5;D5E4 0334 11B5;1112 1166 0334 11B5; # (헤◌̴ᆵ; 헤◌̴ᆵ; 헤◌̴ᆵ; 헤◌̴ᆵ; 헤◌̴ᆵ; ) HANGUL SYLLABLE HE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+D638 0334 11BC;D638 0334 11BC;1112 1169 0334 11BC;D638 0334 11BC;1112 1169 0334 11BC; # (호◌̴ᆼ; 호◌̴ᆼ; 호◌̴ᆼ; 호◌̴ᆼ; 호◌̴ᆼ; ) HANGUL SYLLABLE HO, COMBINING TILDE OVERLAY, HANGUL JONGSEONG IEUNG
+D6FC 0334 11AE;D6FC 0334 11AE;1112 1170 0334 11AE;D6FC 0334 11AE;1112 1170 0334 11AE; # (훼◌̴ᆮ; 훼◌̴ᆮ; 훼◌̴ᆮ; 훼◌̴ᆮ; 훼◌̴ᆮ; ) HANGUL SYLLABLE HWE, COMBINING TILDE OVERLAY, HANGUL JONGSEONG TIKEUT
+D750 0334 11B5;D750 0334 11B5;1112 1173 0334 11B5;D750 0334 11B5;1112 1173 0334 11B5; # (í◌̴ᆵ; í◌̴ᆵ; 흐◌̴ᆵ; í◌̴ᆵ; 흐◌̴ᆵ; ) HANGUL SYLLABLE HEU, COMBINING TILDE OVERLAY, HANGUL JONGSEONG RIEUL-PHIEUPH
+#
+# END OF FILE
diff --git a/tests/auto/corelib/tools/qchar/qchar.pro b/tests/auto/corelib/tools/qchar/qchar.pro
new file mode 100644
index 0000000000..154c37e1af
--- /dev/null
+++ b/tests/auto/corelib/tools/qchar/qchar.pro
@@ -0,0 +1,16 @@
+load(qttest_p4)
+SOURCES += tst_qchar.cpp
+
+QT = core core-private
+
+wince*|symbian: {
+deploy.files += NormalizationTest.txt
+DEPLOYMENT += deploy
+}
+
+symbian: {
+ DEFINES += SRCDIR=""
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qchar/tst_qchar.cpp b/tests/auto/corelib/tools/qchar/tst_qchar.cpp
new file mode 100644
index 0000000000..02807f38b3
--- /dev/null
+++ b/tests/auto/corelib/tools/qchar/tst_qchar.cpp
@@ -0,0 +1,700 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qchar.h>
+#include <qfile.h>
+#include <qstringlist.h>
+#include <private/qunicodetables_p.h>
+#if defined(Q_OS_WINCE)
+#include <qcoreapplication.h>
+#endif
+
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QChar : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QChar();
+ ~tst_QChar();
+
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void toUpper();
+ void toLower();
+ void toTitle();
+ void toCaseFolded();
+ void isPrint();
+ void isUpper();
+ void isLower();
+ void isTitle();
+ void category();
+ void direction();
+ void joining();
+ void combiningClass();
+ void digitValue();
+ void decomposition();
+// void ligature();
+ void lineBreakClass();
+ void normalization_data();
+ void normalization();
+ void normalization_manual();
+ void normalizationCorrections();
+ void unicodeVersion();
+#if defined(Q_OS_WINCE)
+private:
+ QCoreApplication* app;
+#endif
+};
+
+tst_QChar::tst_QChar()
+{}
+
+tst_QChar::~tst_QChar()
+{ }
+
+void tst_QChar::initTestCase()
+{ }
+
+void tst_QChar::cleanupTestCase()
+{ }
+
+void tst_QChar::init()
+{
+#if defined(Q_OS_WINCE)
+ int argc = 0;
+ app = new QCoreApplication(argc, NULL);
+#endif
+}
+
+void tst_QChar::cleanup()
+{
+#if defined(Q_OS_WINCE)
+ delete app;
+#endif
+}
+
+void tst_QChar::toUpper()
+{
+ QVERIFY(QChar('a').toUpper() == 'A');
+ QVERIFY(QChar('A').toUpper() == 'A');
+ QVERIFY(QChar((ushort)0x1c7).toUpper().unicode() == 0x1c7);
+ QVERIFY(QChar((ushort)0x1c8).toUpper().unicode() == 0x1c7);
+ QVERIFY(QChar((ushort)0x1c9).toUpper().unicode() == 0x1c7);
+
+ QVERIFY(QChar::toUpper((ushort)'a') == 'A');
+ QVERIFY(QChar::toUpper((ushort)'A') == 'A');
+ QVERIFY(QChar::toUpper((ushort)0x1c7) == 0x1c7);
+ QVERIFY(QChar::toUpper((ushort)0x1c8) == 0x1c7);
+ QVERIFY(QChar::toUpper((ushort)0x1c9) == 0x1c7);
+
+ QVERIFY(QChar::toUpper((uint)'a') == 'A');
+ QVERIFY(QChar::toUpper((uint)'A') == 'A');
+ QVERIFY(QChar::toUpper((uint)0x1c7) == 0x1c7);
+ QVERIFY(QChar::toUpper((uint)0x1c8) == 0x1c7);
+ QVERIFY(QChar::toUpper((uint)0x1c9) == 0x1c7);
+
+ QVERIFY(QChar::toUpper((uint)0x10400) == 0x10400);
+ QVERIFY(QChar::toUpper((uint)0x10428) == 0x10400);
+
+}
+
+void tst_QChar::toLower()
+{
+ QVERIFY(QChar('A').toLower() == 'a');
+ QVERIFY(QChar('a').toLower() == 'a');
+ QVERIFY(QChar((ushort)0x1c7).toLower().unicode() == 0x1c9);
+ QVERIFY(QChar((ushort)0x1c8).toLower().unicode() == 0x1c9);
+ QVERIFY(QChar((ushort)0x1c9).toLower().unicode() == 0x1c9);
+
+ QVERIFY(QChar::toLower((ushort)'a') == 'a');
+ QVERIFY(QChar::toLower((ushort)'A') == 'a');
+ QVERIFY(QChar::toLower((ushort)0x1c7) == 0x1c9);
+ QVERIFY(QChar::toLower((ushort)0x1c8) == 0x1c9);
+ QVERIFY(QChar::toLower((ushort)0x1c9) == 0x1c9);
+
+ QVERIFY(QChar::toLower((uint)'a') == 'a');
+ QVERIFY(QChar::toLower((uint)'A') == 'a');
+ QVERIFY(QChar::toLower((uint)0x1c7) == 0x1c9);
+ QVERIFY(QChar::toLower((uint)0x1c8) == 0x1c9);
+ QVERIFY(QChar::toLower((uint)0x1c9) == 0x1c9);
+
+ QVERIFY(QChar::toLower((uint)0x10400) == 0x10428);
+ QVERIFY(QChar::toLower((uint)0x10428) == 0x10428);
+}
+
+void tst_QChar::toTitle()
+{
+ QVERIFY(QChar('a').toTitleCase() == 'A');
+ QVERIFY(QChar('A').toTitleCase() == 'A');
+ QVERIFY(QChar((ushort)0x1c7).toTitleCase().unicode() == 0x1c8);
+ QVERIFY(QChar((ushort)0x1c8).toTitleCase().unicode() == 0x1c8);
+ QVERIFY(QChar((ushort)0x1c9).toTitleCase().unicode() == 0x1c8);
+
+ QVERIFY(QChar::toTitleCase((ushort)'a') == 'A');
+ QVERIFY(QChar::toTitleCase((ushort)'A') == 'A');
+ QVERIFY(QChar::toTitleCase((ushort)0x1c7) == 0x1c8);
+ QVERIFY(QChar::toTitleCase((ushort)0x1c8) == 0x1c8);
+ QVERIFY(QChar::toTitleCase((ushort)0x1c9) == 0x1c8);
+
+ QVERIFY(QChar::toTitleCase((uint)'a') == 'A');
+ QVERIFY(QChar::toTitleCase((uint)'A') == 'A');
+ QVERIFY(QChar::toTitleCase((uint)0x1c7) == 0x1c8);
+ QVERIFY(QChar::toTitleCase((uint)0x1c8) == 0x1c8);
+ QVERIFY(QChar::toTitleCase((uint)0x1c9) == 0x1c8);
+
+ QVERIFY(QChar::toTitleCase((uint)0x10400) == 0x10400);
+ QVERIFY(QChar::toTitleCase((uint)0x10428) == 0x10400);
+
+}
+
+void tst_QChar::toCaseFolded()
+{
+ QVERIFY(QChar('a').toCaseFolded() == 'a');
+ QVERIFY(QChar('A').toCaseFolded() == 'a');
+ QVERIFY(QChar((ushort)0x1c7).toCaseFolded().unicode() == 0x1c9);
+ QVERIFY(QChar((ushort)0x1c8).toCaseFolded().unicode() == 0x1c9);
+ QVERIFY(QChar((ushort)0x1c9).toCaseFolded().unicode() == 0x1c9);
+
+ QVERIFY(QChar::toCaseFolded((ushort)'a') == 'a');
+ QVERIFY(QChar::toCaseFolded((ushort)'A') == 'a');
+ QVERIFY(QChar::toCaseFolded((ushort)0x1c7) == 0x1c9);
+ QVERIFY(QChar::toCaseFolded((ushort)0x1c8) == 0x1c9);
+ QVERIFY(QChar::toCaseFolded((ushort)0x1c9) == 0x1c9);
+
+ QVERIFY(QChar::toCaseFolded((uint)'a') == 'a');
+ QVERIFY(QChar::toCaseFolded((uint)'A') == 'a');
+ QVERIFY(QChar::toCaseFolded((uint)0x1c7) == 0x1c9);
+ QVERIFY(QChar::toCaseFolded((uint)0x1c8) == 0x1c9);
+ QVERIFY(QChar::toCaseFolded((uint)0x1c9) == 0x1c9);
+
+ QVERIFY(QChar::toCaseFolded((uint)0x10400) == 0x10428);
+ QVERIFY(QChar::toCaseFolded((uint)0x10428) == 0x10428);
+
+ QVERIFY(QChar::toCaseFolded((ushort)0xb5) == 0x3bc);
+}
+
+void tst_QChar::isPrint()
+{
+ QVERIFY(QChar('A').isPrint());
+ QVERIFY(!QChar(0x1aff).isPrint()); // General_Gategory =Cn
+}
+
+void tst_QChar::isUpper()
+{
+ QVERIFY(QChar('A').isUpper());
+ QVERIFY(QChar('Z').isUpper());
+ QVERIFY(!QChar('a').isUpper());
+ QVERIFY(!QChar('z').isUpper());
+ QVERIFY(!QChar('?').isUpper());
+ QVERIFY(QChar(0xC2).isUpper()); // A with ^
+ QVERIFY(!QChar(0xE2).isUpper()); // a with ^
+
+ for (uint codepoint = 0; codepoint <= UNICODE_LAST_CODEPOINT; ++codepoint) {
+ if (QChar::category(codepoint) == QChar::Letter_Uppercase)
+ QVERIFY(codepoint == QChar::toUpper(codepoint));
+ }
+}
+
+void tst_QChar::isLower()
+{
+ QVERIFY(!QChar('A').isLower());
+ QVERIFY(!QChar('Z').isLower());
+ QVERIFY(QChar('a').isLower());
+ QVERIFY(QChar('z').isLower());
+ QVERIFY(!QChar('?').isLower());
+ QVERIFY(!QChar(0xC2).isLower()); // A with ^
+ QVERIFY(QChar(0xE2).isLower()); // a with ^
+
+ for (uint codepoint = 0; codepoint <= UNICODE_LAST_CODEPOINT; ++codepoint) {
+ if (QChar::category(codepoint) == QChar::Letter_Lowercase)
+ QVERIFY(codepoint == QChar::toLower(codepoint));
+ }
+}
+
+void tst_QChar::isTitle()
+{
+ for (uint codepoint = 0; codepoint <= UNICODE_LAST_CODEPOINT; ++codepoint) {
+ if (QChar::category(codepoint) == QChar::Letter_Titlecase)
+ QVERIFY(codepoint == QChar::toTitleCase(codepoint));
+ }
+}
+
+void tst_QChar::category()
+{
+ QVERIFY(QChar('a').category() == QChar::Letter_Lowercase);
+ QVERIFY(QChar('A').category() == QChar::Letter_Uppercase);
+
+ QVERIFY(QChar::category((ushort)'a') == QChar::Letter_Lowercase);
+ QVERIFY(QChar::category((ushort)'A') == QChar::Letter_Uppercase);
+
+ QVERIFY(QChar::category((uint)'a') == QChar::Letter_Lowercase);
+ QVERIFY(QChar::category((uint)'A') == QChar::Letter_Uppercase);
+
+ QVERIFY(QChar::category(0xe0100u) == QChar::Mark_NonSpacing);
+ QVERIFY(QChar::category(0xeffffu) != QChar::Other_PrivateUse);
+ QVERIFY(QChar::category(0xf0000u) == QChar::Other_PrivateUse);
+ QVERIFY(QChar::category(0xf0001u) == QChar::Other_PrivateUse);
+
+ QVERIFY(QChar::category(0xd900u) == QChar::Other_Surrogate);
+ QVERIFY(QChar::category(0xdc00u) == QChar::Other_Surrogate);
+ QVERIFY(QChar::category(0xdc01u) == QChar::Other_Surrogate);
+
+ QVERIFY(QChar::category((uint)0x1aff) == QChar::Other_NotAssigned);
+ QVERIFY(QChar::category((uint)0x10fffdu) == QChar::Other_PrivateUse);
+ QVERIFY(QChar::category((uint)0x10ffffu) == QChar::Other_NotAssigned);
+ QVERIFY(QChar::category((uint)0x110000u) == QChar::Other_NotAssigned);
+}
+
+void tst_QChar::direction()
+{
+ QVERIFY(QChar('a').direction() == QChar::DirL);
+ QVERIFY(QChar('0').direction() == QChar::DirEN);
+ QVERIFY(QChar((ushort)0x627).direction() == QChar::DirAL);
+ QVERIFY(QChar((ushort)0x5d0).direction() == QChar::DirR);
+
+ QVERIFY(QChar::direction((ushort)'a') == QChar::DirL);
+ QVERIFY(QChar::direction((ushort)'0') == QChar::DirEN);
+ QVERIFY(QChar::direction((ushort)0x627) == QChar::DirAL);
+ QVERIFY(QChar::direction((ushort)0x5d0) == QChar::DirR);
+
+ QVERIFY(QChar::direction((uint)'a') == QChar::DirL);
+ QVERIFY(QChar::direction((uint)'0') == QChar::DirEN);
+ QVERIFY(QChar::direction((uint)0x627) == QChar::DirAL);
+ QVERIFY(QChar::direction((uint)0x5d0) == QChar::DirR);
+
+ QVERIFY(QChar::direction(0xE01DAu) == QChar::DirNSM);
+ QVERIFY(QChar::direction(0xf0000u) == QChar::DirL);
+ QVERIFY(QChar::direction(0xE0030u) == QChar::DirBN);
+ QVERIFY(QChar::direction(0x2FA17u) == QChar::DirL);
+}
+
+void tst_QChar::joining()
+{
+ QVERIFY(QChar('a').joining() == QChar::OtherJoining);
+ QVERIFY(QChar('0').joining() == QChar::OtherJoining);
+ QVERIFY(QChar((ushort)0x627).joining() == QChar::Right);
+ QVERIFY(QChar((ushort)0x5d0).joining() == QChar::OtherJoining);
+
+ QVERIFY(QChar::joining((ushort)'a') == QChar::OtherJoining);
+ QVERIFY(QChar::joining((ushort)'0') == QChar::OtherJoining);
+ QVERIFY(QChar::joining((ushort)0x627) == QChar::Right);
+ QVERIFY(QChar::joining((ushort)0x5d0) == QChar::OtherJoining);
+
+ QVERIFY(QChar::joining((uint)'a') == QChar::OtherJoining);
+ QVERIFY(QChar::joining((uint)'0') == QChar::OtherJoining);
+ QVERIFY(QChar::joining((uint)0x627) == QChar::Right);
+ QVERIFY(QChar::joining((uint)0x5d0) == QChar::OtherJoining);
+
+ QVERIFY(QChar::joining(0xE01DAu) == QChar::OtherJoining);
+ QVERIFY(QChar::joining(0xf0000u) == QChar::OtherJoining);
+ QVERIFY(QChar::joining(0xE0030u) == QChar::OtherJoining);
+ QVERIFY(QChar::joining(0x2FA17u) == QChar::OtherJoining);
+}
+
+void tst_QChar::combiningClass()
+{
+ QVERIFY(QChar('a').combiningClass() == 0);
+ QVERIFY(QChar('0').combiningClass() == 0);
+ QVERIFY(QChar((ushort)0x627).combiningClass() == 0);
+ QVERIFY(QChar((ushort)0x5d0).combiningClass() == 0);
+
+ QVERIFY(QChar::combiningClass((ushort)'a') == 0);
+ QVERIFY(QChar::combiningClass((ushort)'0') == 0);
+ QVERIFY(QChar::combiningClass((ushort)0x627) == 0);
+ QVERIFY(QChar::combiningClass((ushort)0x5d0) == 0);
+
+ QVERIFY(QChar::combiningClass((uint)'a') == 0);
+ QVERIFY(QChar::combiningClass((uint)'0') == 0);
+ QVERIFY(QChar::combiningClass((uint)0x627) == 0);
+ QVERIFY(QChar::combiningClass((uint)0x5d0) == 0);
+
+ QVERIFY(QChar::combiningClass(0xE01DAu) == 0);
+ QVERIFY(QChar::combiningClass(0xf0000u) == 0);
+ QVERIFY(QChar::combiningClass(0xE0030u) == 0);
+ QVERIFY(QChar::combiningClass(0x2FA17u) == 0);
+
+ QVERIFY(QChar::combiningClass((ushort)0x300) == 230);
+ QVERIFY(QChar::combiningClass((uint)0x300) == 230);
+
+ QVERIFY(QChar::combiningClass((uint)0x1d244) == 230);
+
+}
+
+void tst_QChar::unicodeVersion()
+{
+ QVERIFY(QChar('a').unicodeVersion() == QChar::Unicode_1_1);
+ QVERIFY(QChar('0').unicodeVersion() == QChar::Unicode_1_1);
+ QVERIFY(QChar((ushort)0x627).unicodeVersion() == QChar::Unicode_1_1);
+ QVERIFY(QChar((ushort)0x5d0).unicodeVersion() == QChar::Unicode_1_1);
+
+ QVERIFY(QChar::unicodeVersion((ushort)'a') == QChar::Unicode_1_1);
+ QVERIFY(QChar::unicodeVersion((ushort)'0') == QChar::Unicode_1_1);
+ QVERIFY(QChar::unicodeVersion((ushort)0x627) == QChar::Unicode_1_1);
+ QVERIFY(QChar::unicodeVersion((ushort)0x5d0) == QChar::Unicode_1_1);
+
+ QVERIFY(QChar::unicodeVersion((uint)'a') == QChar::Unicode_1_1);
+ QVERIFY(QChar::unicodeVersion((uint)'0') == QChar::Unicode_1_1);
+ QVERIFY(QChar::unicodeVersion((uint)0x627) == QChar::Unicode_1_1);
+ QVERIFY(QChar::unicodeVersion((uint)0x5d0) == QChar::Unicode_1_1);
+
+ QVERIFY(QChar(0x0591).unicodeVersion() == QChar::Unicode_2_0);
+ QVERIFY(QChar::unicodeVersion((ushort)0x0591) == QChar::Unicode_2_0);
+ QVERIFY(QChar::unicodeVersion((uint)0x0591) == QChar::Unicode_2_0);
+
+ QVERIFY(QChar(0x20AC).unicodeVersion() == QChar::Unicode_2_1_2);
+ QVERIFY(QChar::unicodeVersion((ushort)0x020AC) == QChar::Unicode_2_1_2);
+ QVERIFY(QChar::unicodeVersion((uint)0x20AC) == QChar::Unicode_2_1_2);
+ QVERIFY(QChar(0xfffc).unicodeVersion() == QChar::Unicode_2_1_2);
+ QVERIFY(QChar::unicodeVersion((ushort)0x0fffc) == QChar::Unicode_2_1_2);
+ QVERIFY(QChar::unicodeVersion((uint)0xfffc) == QChar::Unicode_2_1_2);
+
+ QVERIFY(QChar(0x01f6).unicodeVersion() == QChar::Unicode_3_0);
+ QVERIFY(QChar::unicodeVersion((ushort)0x01f6) == QChar::Unicode_3_0);
+ QVERIFY(QChar::unicodeVersion((uint)0x01f6) == QChar::Unicode_3_0);
+
+ QVERIFY(QChar(0x03F4).unicodeVersion() == QChar::Unicode_3_1);
+ QVERIFY(QChar::unicodeVersion((ushort)0x03F4) == QChar::Unicode_3_1);
+ QVERIFY(QChar::unicodeVersion((uint)0x03F4) == QChar::Unicode_3_1);
+ QVERIFY(QChar::unicodeVersion((uint)0x10300) == QChar::Unicode_3_1);
+
+ QVERIFY(QChar(0x0220).unicodeVersion() == QChar::Unicode_3_2);
+ QVERIFY(QChar::unicodeVersion((ushort)0x0220) == QChar::Unicode_3_2);
+ QVERIFY(QChar::unicodeVersion((uint)0x0220) == QChar::Unicode_3_2);
+ QVERIFY(QChar::unicodeVersion((uint)0xFF5F) == QChar::Unicode_3_2);
+
+ QVERIFY(QChar(0x0221).unicodeVersion() == QChar::Unicode_4_0);
+ QVERIFY(QChar::unicodeVersion((ushort)0x0221) == QChar::Unicode_4_0);
+ QVERIFY(QChar::unicodeVersion((uint)0x0221) == QChar::Unicode_4_0);
+ QVERIFY(QChar::unicodeVersion((uint)0x10000) == QChar::Unicode_4_0);
+
+ QVERIFY(QChar(0x0237).unicodeVersion() == QChar::Unicode_4_1);
+ QVERIFY(QChar::unicodeVersion((ushort)0x0237) == QChar::Unicode_4_1);
+ QVERIFY(QChar::unicodeVersion((uint)0x0237) == QChar::Unicode_4_1);
+ QVERIFY(QChar::unicodeVersion((uint)0x10140) == QChar::Unicode_4_1);
+
+ QVERIFY(QChar(0x0242).unicodeVersion() == QChar::Unicode_5_0);
+ QVERIFY(QChar::unicodeVersion((ushort)0x0242) == QChar::Unicode_5_0);
+ QVERIFY(QChar::unicodeVersion((uint)0x0242) == QChar::Unicode_5_0);
+ QVERIFY(QChar::unicodeVersion((uint)0x12000) == QChar::Unicode_5_0);
+
+}
+
+
+void tst_QChar::digitValue()
+{
+ QVERIFY(QChar('9').digitValue() == 9);
+ QVERIFY(QChar('0').digitValue() == 0);
+ QVERIFY(QChar('a').digitValue() == -1);
+
+ QVERIFY(QChar::digitValue((ushort)'9') == 9);
+ QVERIFY(QChar::digitValue((ushort)'0') == 0);
+ QVERIFY(QChar::digitValue((uint)'9') == 9);
+ QVERIFY(QChar::digitValue((uint)'0') == 0);
+
+ QVERIFY(QChar::digitValue((ushort)0x1049) == 9);
+ QVERIFY(QChar::digitValue((ushort)0x1040) == 0);
+ QVERIFY(QChar::digitValue((uint)0x1049) == 9);
+ QVERIFY(QChar::digitValue((uint)0x1040) == 0);
+}
+
+void tst_QChar::decomposition()
+{
+ QVERIFY(QChar((ushort)0xa0).decompositionTag() == QChar::NoBreak);
+ QVERIFY(QChar((ushort)0xa8).decompositionTag() == QChar::Compat);
+ QVERIFY(QChar((ushort)0x41).decompositionTag() == QChar::NoDecomposition);
+
+ QVERIFY(QChar::decompositionTag(0xa0) == QChar::NoBreak);
+ QVERIFY(QChar::decompositionTag(0xa8) == QChar::Compat);
+ QVERIFY(QChar::decompositionTag(0x41) == QChar::NoDecomposition);
+
+ QVERIFY(QChar::decomposition(0xa0) == QString(QChar(0x20)));
+ QVERIFY(QChar::decomposition(0xc0) == (QString(QChar(0x41)) + QString(QChar(0x300))));
+
+ {
+ QString str;
+ str += QChar( (0x1D157 - 0x10000) / 0x400 + 0xd800 );
+ str += QChar( ((0x1D157 - 0x10000) % 0x400) + 0xdc00 );
+ str += QChar( (0x1D165 - 0x10000) / 0x400 + 0xd800 );
+ str += QChar( ((0x1D165 - 0x10000) % 0x400) + 0xdc00 );
+ QVERIFY(QChar::decomposition(0x1D15e) == str);
+ }
+
+ {
+ QString str;
+ str += QChar(0x1100);
+ str += QChar(0x1161);
+ QVERIFY(QChar::decomposition(0xac00) == str);
+ }
+ {
+ QString str;
+ str += QChar(0x110c);
+ str += QChar(0x1165);
+ str += QChar(0x11b7);
+ QVERIFY(QChar::decomposition(0xc810) == str);
+ }
+}
+
+#if 0
+void tst_QChar::ligature()
+{
+ QVERIFY(QChar::ligature(0x0041, 0x00300) == 0xc0);
+ QVERIFY(QChar::ligature(0x0049, 0x00308) == 0xcf);
+ QVERIFY(QChar::ligature(0x0391, 0x00301) == 0x386);
+ QVERIFY(QChar::ligature(0x0627, 0x00653) == 0x622);
+
+ QVERIFY(QChar::ligature(0x1100, 0x1161) == 0xac00);
+ QVERIFY(QChar::ligature(0xac00, 0x11a8) == 0xac01);
+}
+#endif
+
+void tst_QChar::lineBreakClass()
+{
+ QVERIFY(QUnicodeTables::lineBreakClass(0x0041u) == QUnicodeTables::LineBreak_AL);
+ QVERIFY(QUnicodeTables::lineBreakClass(0x0033u) == QUnicodeTables::LineBreak_NU);
+ QVERIFY(QUnicodeTables::lineBreakClass(0xe0164u) == QUnicodeTables::LineBreak_CM);
+ QVERIFY(QUnicodeTables::lineBreakClass(0x2f9a4u) == QUnicodeTables::LineBreak_ID);
+ QVERIFY(QUnicodeTables::lineBreakClass(0x10000u) == QUnicodeTables::LineBreak_AL);
+ QVERIFY(QUnicodeTables::lineBreakClass(0x0fffdu) == QUnicodeTables::LineBreak_AL);
+}
+
+void tst_QChar::normalization_data()
+{
+ QTest::addColumn<QStringList>("columns");
+ QTest::addColumn<int>("part");
+
+ int linenum = 0;
+ int part = 0;
+
+ QFile f(SRCDIR "NormalizationTest.txt");
+ QVERIFY(f.exists());
+
+ f.open(QIODevice::ReadOnly);
+
+ while (!f.atEnd()) {
+ linenum++;
+
+ QByteArray line;
+ line.resize(1024);
+ int len = f.readLine(line.data(), 1024);
+ line.resize(len-1);
+
+ int comment = line.indexOf('#');
+ if (comment >= 0)
+ line = line.left(comment);
+
+ if (line.startsWith("@")) {
+ if (line.startsWith("@Part") && line.size() > 5 && QChar(line.at(5)).isDigit())
+ part = QChar(line.at(5)).digitValue();
+ continue;
+ }
+
+ if (line.isEmpty())
+ continue;
+
+ line = line.trimmed();
+ if (line.endsWith(';'))
+ line.truncate(line.length()-1);
+
+ QList<QByteArray> l = line.split(';');
+
+ QCOMPARE(l.size(), 5);
+
+ QStringList columns;
+ for (int i = 0; i < 5; ++i) {
+ columns.append(QString());
+
+ QList<QByteArray> c = l.at(i).split(' ');
+ QVERIFY(!c.isEmpty());
+
+ for (int j = 0; j < c.size(); ++j) {
+ bool ok;
+ uint uc = c.at(j).toInt(&ok, 16);
+ if (uc < 0x10000)
+ columns[i].append(QChar(uc));
+ else {
+ // convert to utf16
+ ushort high = QChar::highSurrogate(uc);
+ ushort low = QChar::lowSurrogate(uc);
+ columns[i].append(QChar(high));
+ columns[i].append(QChar(low));
+ }
+ }
+ }
+
+ QString nm = QString("line #%1:").arg(linenum);
+ QTest::newRow(nm.toLatin1()) << columns << part;
+ }
+}
+
+void tst_QChar::normalization()
+{
+ QFETCH(QStringList, columns);
+ QFETCH(int, part);
+
+ Q_UNUSED(part)
+
+ // CONFORMANCE:
+ // 1. The following invariants must be true for all conformant implementations
+ //
+ // NFC
+ // c2 == NFC(c1) == NFC(c2) == NFC(c3)
+ // c4 == NFC(c4) == NFC(c5)
+
+ QVERIFY(columns[1] == columns[0].normalized(QString::NormalizationForm_C));
+ QVERIFY(columns[1] == columns[1].normalized(QString::NormalizationForm_C));
+ QVERIFY(columns[1] == columns[2].normalized(QString::NormalizationForm_C));
+ QVERIFY(columns[3] == columns[3].normalized(QString::NormalizationForm_C));
+ QVERIFY(columns[3] == columns[4].normalized(QString::NormalizationForm_C));
+
+ // NFD
+ // c3 == NFD(c1) == NFD(c2) == NFD(c3)
+ // c5 == NFD(c4) == NFD(c5)
+
+ QVERIFY(columns[2] == columns[0].normalized(QString::NormalizationForm_D));
+ QVERIFY(columns[2] == columns[1].normalized(QString::NormalizationForm_D));
+ QVERIFY(columns[2] == columns[2].normalized(QString::NormalizationForm_D));
+ QVERIFY(columns[4] == columns[3].normalized(QString::NormalizationForm_D));
+ QVERIFY(columns[4] == columns[4].normalized(QString::NormalizationForm_D));
+
+ // NFKC
+ // c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+
+ QVERIFY(columns[3] == columns[0].normalized(QString::NormalizationForm_KC));
+ QVERIFY(columns[3] == columns[1].normalized(QString::NormalizationForm_KC));
+ QVERIFY(columns[3] == columns[2].normalized(QString::NormalizationForm_KC));
+ QVERIFY(columns[3] == columns[3].normalized(QString::NormalizationForm_KC));
+ QVERIFY(columns[3] == columns[4].normalized(QString::NormalizationForm_KC));
+
+ // NFKD
+ // c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+
+ QVERIFY(columns[4] == columns[0].normalized(QString::NormalizationForm_KD));
+ QVERIFY(columns[4] == columns[1].normalized(QString::NormalizationForm_KD));
+ QVERIFY(columns[4] == columns[2].normalized(QString::NormalizationForm_KD));
+ QVERIFY(columns[4] == columns[3].normalized(QString::NormalizationForm_KD));
+ QVERIFY(columns[4] == columns[4].normalized(QString::NormalizationForm_KD));
+
+ // 2. For every code point X assigned in this version of Unicode that is not specifically
+ // listed in Part 1, the following invariants must be true for all conformant
+ // implementations:
+ //
+ // X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X)
+
+ // #################
+
+}
+
+void tst_QChar::normalization_manual()
+{
+ {
+ QString composed;
+ composed += QChar(0xc0);
+ QString decomposed;
+ decomposed += QChar(0x41);
+ decomposed += QChar(0x300);
+
+ QVERIFY(composed.normalized(QString::NormalizationForm_D) == decomposed);
+ QVERIFY(composed.normalized(QString::NormalizationForm_C) == composed);
+ QVERIFY(composed.normalized(QString::NormalizationForm_KD) == decomposed);
+ QVERIFY(composed.normalized(QString::NormalizationForm_KC) == composed);
+ }
+ {
+ QString composed;
+ composed += QChar(0xa0);
+ QString decomposed;
+ decomposed += QChar(0x20);
+
+ QVERIFY(composed.normalized(QString::NormalizationForm_D) == composed);
+ QVERIFY(composed.normalized(QString::NormalizationForm_C) == composed);
+ QVERIFY(composed.normalized(QString::NormalizationForm_KD) == decomposed);
+ QVERIFY(composed.normalized(QString::NormalizationForm_KC) == decomposed);
+ }
+}
+
+void tst_QChar::normalizationCorrections()
+{
+ QString s;
+ s.append(QChar(0xf951));
+
+ QString n = s.normalized(QString::NormalizationForm_D);
+ QString res;
+ res.append(QChar(0x964b));
+ QCOMPARE(n, res);
+
+ n = s.normalized(QString::NormalizationForm_D, QChar::Unicode_3_1);
+ res.clear();
+ res.append(QChar(0x96fb));
+ QCOMPARE(n, res);
+
+ s.clear();
+ s += QChar(QChar::highSurrogate(0x2f868));
+ s += QChar(QChar::lowSurrogate(0x2f868));
+
+ n = s.normalized(QString::NormalizationForm_C);
+ res.clear();
+ res += QChar(0x36fc);
+ QCOMPARE(n, res);
+
+ n = s.normalized(QString::NormalizationForm_C, QChar::Unicode_3_1);
+ res.clear();
+ res += QChar(0xd844);
+ res += QChar(0xdf6a);
+ QCOMPARE(n, res);
+
+ n = s.normalized(QString::NormalizationForm_C, QChar::Unicode_3_2);
+ QCOMPARE(n, res);
+}
+
+
+QTEST_APPLESS_MAIN(tst_QChar)
+#include "tst_qchar.moc"
diff --git a/tests/auto/corelib/tools/qcontiguouscache/qcontiguouscache.pro b/tests/auto/corelib/tools/qcontiguouscache/qcontiguouscache.pro
new file mode 100644
index 0000000000..5951f87f89
--- /dev/null
+++ b/tests/auto/corelib/tools/qcontiguouscache/qcontiguouscache.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+
+QT = core
+
+SOURCES += tst_qcontiguouscache.cpp
+
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp b/tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp
new file mode 100644
index 0000000000..0a0c999b31
--- /dev/null
+++ b/tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp
@@ -0,0 +1,504 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QObject>
+#include <QTest>
+#include <QCache>
+#include <QContiguousCache>
+
+#include <QDebug>
+#include <stdio.h>
+
+class tst_QContiguousCache : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QContiguousCache() {}
+ virtual ~tst_QContiguousCache() {}
+private slots:
+ void empty();
+ void swap();
+
+ void append_data();
+ void append();
+
+ void prepend_data();
+ void prepend();
+
+ void asScrollingList();
+
+ void complexType();
+
+ void operatorAt();
+
+ void cacheBenchmark();
+ void contiguousCacheBenchmark();
+
+ void setCapacity();
+
+ void zeroCapacity();
+};
+
+QTEST_MAIN(tst_QContiguousCache)
+
+void tst_QContiguousCache::empty()
+{
+ QContiguousCache<int> c(10);
+ QCOMPARE(c.capacity(), 10);
+ QCOMPARE(c.count(), 0);
+ QVERIFY(c.isEmpty());
+ c.append(1);
+ QCOMPARE(c.count(), 1);
+ QVERIFY(!c.isEmpty());
+ c.clear();
+ QCOMPARE(c.capacity(), 10);
+ QCOMPARE(c.count(), 0);
+ QVERIFY(c.isEmpty());
+ c.prepend(1);
+ QCOMPARE(c.count(), 1);
+ QVERIFY(!c.isEmpty());
+ c.clear();
+ QCOMPARE(c.count(), 0);
+ QVERIFY(c.isEmpty());
+ QCOMPARE(c.capacity(), 10);
+}
+
+void tst_QContiguousCache::swap()
+{
+ QContiguousCache<int> c1(10), c2(100);
+ c1.append(1);
+ c1.swap(c2);
+ QCOMPARE(c1.capacity(), 100);
+ QCOMPARE(c1.count(), 0 );
+ QCOMPARE(c2.capacity(), 10 );
+ QCOMPARE(c2.count(), 1 );
+}
+
+void tst_QContiguousCache::append_data()
+{
+ QTest::addColumn<int>("start");
+ QTest::addColumn<int>("count");
+ QTest::addColumn<int>("cacheSize");
+ QTest::addColumn<bool>("invalidIndexes");
+
+ QTest::newRow("0+30[10]") << 0 << 30 << 10 << false;
+ QTest::newRow("300+30[10]") << 300 << 30 << 10 << false;
+ QTest::newRow("MAX-10+30[10]") << INT_MAX-10 << 30 << 10 << true;
+}
+
+void tst_QContiguousCache::append()
+{
+ QFETCH(int, start);
+ QFETCH(int, count);
+ QFETCH(int, cacheSize);
+ QFETCH(bool, invalidIndexes);
+
+ int i, j;
+ QContiguousCache<int> c(cacheSize);
+
+ i = 1;
+ QCOMPARE(c.available(), cacheSize);
+ if (start == 0)
+ c.append(i++);
+ else
+ c.insert(start, i++);
+ while (i < count) {
+ c.append(i);
+ QCOMPARE(c.available(), qMax(0, cacheSize - i));
+ QCOMPARE(c.first(), qMax(1, i-cacheSize+1));
+ QCOMPARE(c.last(), i);
+ QCOMPARE(c.count(), qMin(i, cacheSize));
+ QCOMPARE(c.isFull(), i >= cacheSize);
+ i++;
+ }
+
+ QCOMPARE(c.areIndexesValid(), !invalidIndexes);
+ if (invalidIndexes)
+ c.normalizeIndexes();
+ QVERIFY(c.areIndexesValid());
+
+ // test taking from end until empty.
+ for (j = 0; j < cacheSize; j++, i--) {
+ QCOMPARE(c.takeLast(), i-1);
+ QCOMPARE(c.count(), cacheSize-j-1);
+ QCOMPARE(c.available(), j+1);
+ QVERIFY(!c.isFull());
+ QCOMPARE(c.isEmpty(), j==cacheSize-1);
+ }
+
+}
+
+void tst_QContiguousCache::prepend_data()
+{
+ QTest::addColumn<int>("start");
+ QTest::addColumn<int>("count");
+ QTest::addColumn<int>("cacheSize");
+ QTest::addColumn<bool>("invalidIndexes");
+
+ QTest::newRow("30-30[10]") << 30 << 30 << 10 << false;
+ QTest::newRow("300-30[10]") << 300 << 30 << 10 << false;
+ QTest::newRow("10-30[10]") << 10 << 30 << 10 << true;
+}
+
+void tst_QContiguousCache::prepend()
+{
+ QFETCH(int, start);
+ QFETCH(int, count);
+ QFETCH(int, cacheSize);
+ QFETCH(bool, invalidIndexes);
+
+ int i, j;
+ QContiguousCache<int> c(cacheSize);
+
+ i = 1;
+ QCOMPARE(c.available(), cacheSize);
+ c.insert(start, i++);
+ while(i < count) {
+ c.prepend(i);
+ QCOMPARE(c.available(), qMax(0, cacheSize - i));
+ QCOMPARE(c.last(), qMax(1, i-cacheSize+1));
+ QCOMPARE(c.first(), i);
+ QCOMPARE(c.count(), qMin(i, cacheSize));
+ QCOMPARE(c.isFull(), i >= cacheSize);
+ i++;
+ }
+
+ QCOMPARE(c.areIndexesValid(), !invalidIndexes);
+ if (invalidIndexes)
+ c.normalizeIndexes();
+ QVERIFY(c.areIndexesValid());
+
+ // test taking from start until empty.
+ for (j = 0; j < cacheSize; j++, i--) {
+ QCOMPARE(c.takeFirst(), i-1);
+ QCOMPARE(c.count(), cacheSize-j-1);
+ QCOMPARE(c.available(), j+1);
+ QVERIFY(!c.isFull());
+ QCOMPARE(c.isEmpty(), j==cacheSize-1);
+ }
+}
+
+void tst_QContiguousCache::asScrollingList()
+{
+ int i;
+ QContiguousCache<int> c(10);
+
+ // Once allocated QContiguousCache should not
+ // allocate any additional memory for non
+ // complex data types.
+ QBENCHMARK {
+ // simulate scrolling in a list of items;
+ for(i = 0; i < 10; ++i) {
+ QCOMPARE(c.available(), 10-i);
+ c.append(i);
+ }
+
+ QCOMPARE(c.firstIndex(), 0);
+ QCOMPARE(c.lastIndex(), 9);
+ QCOMPARE(c.first(), 0);
+ QCOMPARE(c.last(), 9);
+ QVERIFY(!c.containsIndex(-1));
+ QVERIFY(!c.containsIndex(10));
+ QCOMPARE(c.available(), 0);
+
+ for (i = 0; i < 10; ++i) {
+ QVERIFY(c.containsIndex(i));
+ QCOMPARE(c.at(i), i);
+ QCOMPARE(c[i], i);
+ QCOMPARE(((const QContiguousCache<int>)c)[i], i);
+ }
+
+ for (i = 10; i < 30; ++i)
+ c.append(i);
+
+ QCOMPARE(c.firstIndex(), 20);
+ QCOMPARE(c.lastIndex(), 29);
+ QCOMPARE(c.first(), 20);
+ QCOMPARE(c.last(), 29);
+ QVERIFY(!c.containsIndex(19));
+ QVERIFY(!c.containsIndex(30));
+ QCOMPARE(c.available(), 0);
+
+ for (i = 20; i < 30; ++i) {
+ QVERIFY(c.containsIndex(i));
+ QCOMPARE(c.at(i), i);
+ QCOMPARE(c[i], i);
+ QCOMPARE(((const QContiguousCache<int> )c)[i], i);
+ }
+
+ for (i = 19; i >= 10; --i)
+ c.prepend(i);
+
+ QCOMPARE(c.firstIndex(), 10);
+ QCOMPARE(c.lastIndex(), 19);
+ QCOMPARE(c.first(), 10);
+ QCOMPARE(c.last(), 19);
+ QVERIFY(!c.containsIndex(9));
+ QVERIFY(!c.containsIndex(20));
+ QCOMPARE(c.available(), 0);
+
+ for (i = 10; i < 20; ++i) {
+ QVERIFY(c.containsIndex(i));
+ QCOMPARE(c.at(i), i);
+ QCOMPARE(c[i], i);
+ QCOMPARE(((const QContiguousCache<int> )c)[i], i);
+ }
+
+ for (i = 200; i < 220; ++i)
+ c.insert(i, i);
+
+ QCOMPARE(c.firstIndex(), 210);
+ QCOMPARE(c.lastIndex(), 219);
+ QCOMPARE(c.first(), 210);
+ QCOMPARE(c.last(), 219);
+ QVERIFY(!c.containsIndex(209));
+ QVERIFY(!c.containsIndex(300));
+ QCOMPARE(c.available(), 0);
+
+ for (i = 210; i < 220; ++i) {
+ QVERIFY(c.containsIndex(i));
+ QCOMPARE(c.at(i), i);
+ QCOMPARE(c[i], i);
+ QCOMPARE(((const QContiguousCache<int> )c)[i], i);
+ }
+ c.clear(); // needed to reset benchmark
+ }
+
+ // from a specific bug that was encountered. 100 to 299 cached, attempted to cache 250 - 205 via insert, failed.
+ // bug was that item at 150 would instead be item that should have been inserted at 250
+ c.setCapacity(200);
+ for(i = 100; i < 300; ++i)
+ c.insert(i, i);
+ for (i = 250; i <= 306; ++i)
+ c.insert(i, 1000+i);
+ for (i = 107; i <= 306; ++i) {
+ QVERIFY(c.containsIndex(i));
+ QCOMPARE(c.at(i), i < 250 ? i : 1000+i);
+ }
+}
+
+struct RefCountingClassData
+{
+ QBasicAtomicInt ref;
+ static RefCountingClassData shared_null;
+};
+
+RefCountingClassData RefCountingClassData::shared_null = {
+ Q_BASIC_ATOMIC_INITIALIZER(1)
+};
+
+class RefCountingClass
+{
+public:
+ RefCountingClass() : d(&RefCountingClassData::shared_null) { d->ref.ref(); }
+
+ RefCountingClass(const RefCountingClass &other)
+ {
+ d = other.d;
+ d->ref.ref();
+ }
+
+ ~RefCountingClass()
+ {
+ if (!d->ref.deref())
+ delete d;
+ }
+
+ RefCountingClass &operator=(const RefCountingClass &other)
+ {
+ if (!d->ref.deref())
+ delete d;
+ d = other.d;
+ d->ref.ref();
+ return *this;
+ }
+
+ int refCount() const { return d->ref; }
+private:
+ RefCountingClassData *d;
+};
+
+void tst_QContiguousCache::complexType()
+{
+ RefCountingClass original;
+
+ QContiguousCache<RefCountingClass> contiguousCache(10);
+ contiguousCache.append(original);
+ QCOMPARE(original.refCount(), 3);
+ contiguousCache.removeFirst();
+ QCOMPARE(original.refCount(), 2); // shared null, 'original'.
+ contiguousCache.append(original);
+ QCOMPARE(original.refCount(), 3);
+ contiguousCache.clear();
+ QCOMPARE(original.refCount(), 2);
+
+ for(int i = 0; i < 100; ++i)
+ contiguousCache.insert(i, original);
+
+ QCOMPARE(original.refCount(), 12); // shared null, 'original', + 10 in contiguousCache.
+
+ contiguousCache.clear();
+ QCOMPARE(original.refCount(), 2);
+ for (int i = 0; i < 100; i++)
+ contiguousCache.append(original);
+
+ QCOMPARE(original.refCount(), 12); // shared null, 'original', + 10 in contiguousCache.
+ contiguousCache.clear();
+ QCOMPARE(original.refCount(), 2);
+
+ for (int i = 0; i < 100; i++)
+ contiguousCache.prepend(original);
+
+ QCOMPARE(original.refCount(), 12); // shared null, 'original', + 10 in contiguousCache.
+ contiguousCache.clear();
+ QCOMPARE(original.refCount(), 2);
+
+ for (int i = 0; i < 100; i++)
+ contiguousCache.append(original);
+
+ contiguousCache.takeLast();
+ QCOMPARE(original.refCount(), 11);
+
+ contiguousCache.takeFirst();
+ QCOMPARE(original.refCount(), 10);
+}
+
+void tst_QContiguousCache::operatorAt()
+{
+ RefCountingClass original;
+ QContiguousCache<RefCountingClass> contiguousCache(10);
+
+ for (int i = 25; i < 35; ++i)
+ contiguousCache[i] = original;
+
+ QCOMPARE(original.refCount(), 12); // shared null, orig, items in cache
+
+ // verify const access does not copy items.
+ const QContiguousCache<RefCountingClass> copy(contiguousCache);
+ for (int i = 25; i < 35; ++i)
+ QCOMPARE(copy[i].refCount(), 12);
+
+ // verify modifying the original increments ref count (e.g. does a detach)
+ contiguousCache[25] = original;
+ QCOMPARE(original.refCount(), 22);
+}
+
+/*
+ Benchmarks must be near identical in tasks to be fair.
+ QCache uses pointers to ints as its a requirement of QCache,
+ whereas QContiguousCache doesn't support pointers (won't free them).
+ Given the ability to use simple data types is a benefit, its
+ fair. Although this obviously must take into account we are
+ testing QContiguousCache use cases here, QCache has its own
+ areas where it is the more sensible class to use.
+*/
+void tst_QContiguousCache::cacheBenchmark()
+{
+ QBENCHMARK {
+ QCache<int, int> cache;
+ cache.setMaxCost(100);
+
+ for (int i = 0; i < 1000; i++)
+ cache.insert(i, new int(i));
+ }
+}
+
+void tst_QContiguousCache::contiguousCacheBenchmark()
+{
+ QBENCHMARK {
+ QContiguousCache<int> contiguousCache(100);
+ for (int i = 0; i < 1000; i++)
+ contiguousCache.insert(i, i);
+ }
+}
+
+void tst_QContiguousCache::setCapacity()
+{
+ int i;
+ QContiguousCache<int> contiguousCache(100);
+ for (i = 280; i < 310; ++i)
+ contiguousCache.insert(i, i);
+ QCOMPARE(contiguousCache.capacity(), 100);
+ QCOMPARE(contiguousCache.count(), 30);
+ QCOMPARE(contiguousCache.firstIndex(), 280);
+ QCOMPARE(contiguousCache.lastIndex(), 309);
+
+ for (i = contiguousCache.firstIndex(); i <= contiguousCache.lastIndex(); ++i) {
+ QVERIFY(contiguousCache.containsIndex(i));
+ QCOMPARE(contiguousCache.at(i), i);
+ }
+
+ contiguousCache.setCapacity(150);
+
+ QCOMPARE(contiguousCache.capacity(), 150);
+ QCOMPARE(contiguousCache.count(), 30);
+ QCOMPARE(contiguousCache.firstIndex(), 280);
+ QCOMPARE(contiguousCache.lastIndex(), 309);
+
+ for (i = contiguousCache.firstIndex(); i <= contiguousCache.lastIndex(); ++i) {
+ QVERIFY(contiguousCache.containsIndex(i));
+ QCOMPARE(contiguousCache.at(i), i);
+ }
+
+ contiguousCache.setCapacity(20);
+
+ QCOMPARE(contiguousCache.capacity(), 20);
+ QCOMPARE(contiguousCache.count(), 20);
+ QCOMPARE(contiguousCache.firstIndex(), 290);
+ QCOMPARE(contiguousCache.lastIndex(), 309);
+
+ for (i = contiguousCache.firstIndex(); i <= contiguousCache.lastIndex(); ++i) {
+ QVERIFY(contiguousCache.containsIndex(i));
+ QCOMPARE(contiguousCache.at(i), i);
+ }
+}
+
+void tst_QContiguousCache::zeroCapacity()
+{
+ QContiguousCache<int> contiguousCache;
+ QCOMPARE(contiguousCache.capacity(),0);
+ contiguousCache.setCapacity(10);
+ QCOMPARE(contiguousCache.capacity(),10);
+ contiguousCache.setCapacity(0);
+ QCOMPARE(contiguousCache.capacity(),0);
+}
+
+#include "tst_qcontiguouscache.moc"
diff --git a/tests/auto/corelib/tools/qcryptographichash/.gitignore b/tests/auto/corelib/tools/qcryptographichash/.gitignore
new file mode 100644
index 0000000000..cdc1de2626
--- /dev/null
+++ b/tests/auto/corelib/tools/qcryptographichash/.gitignore
@@ -0,0 +1 @@
+tst_qcryptographichash
diff --git a/tests/auto/corelib/tools/qcryptographichash/qcryptographichash.pro b/tests/auto/corelib/tools/qcryptographichash/qcryptographichash.pro
new file mode 100644
index 0000000000..65e31dcb57
--- /dev/null
+++ b/tests/auto/corelib/tools/qcryptographichash/qcryptographichash.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+SOURCES += tst_qcryptographichash.cpp
+QT = core
+
+symbian: {
+TARGET.EPOCSTACKSIZE =0x5000
+TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
+}
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp b/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp
new file mode 100644
index 0000000000..b8592e1850
--- /dev/null
+++ b/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp
@@ -0,0 +1,154 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+class tst_QCryptographicHash : public QObject
+{
+ Q_OBJECT
+private slots:
+ void repeated_result_data();
+ void repeated_result();
+ void intermediary_result_data();
+ void intermediary_result();
+ void sha1();
+};
+#include <QtCore>
+
+void tst_QCryptographicHash::repeated_result_data()
+{
+ intermediary_result_data();
+}
+
+void tst_QCryptographicHash::repeated_result()
+{
+ QFETCH(int, algo);
+ QCryptographicHash::Algorithm _algo = QCryptographicHash::Algorithm(algo);
+ QCryptographicHash hash(_algo);
+
+ QFETCH(QByteArray, first);
+ hash.addData(first);
+
+ QFETCH(QByteArray, hash_first);
+ QByteArray result = hash.result();
+ QCOMPARE(result, hash_first);
+ QCOMPARE(result, hash.result());
+
+ hash.reset();
+ hash.addData(first);
+ result = hash.result();
+ QCOMPARE(result, hash_first);
+ QCOMPARE(result, hash.result());
+}
+
+void tst_QCryptographicHash::intermediary_result_data()
+{
+ QTest::addColumn<int>("algo");
+ QTest::addColumn<QByteArray>("first");
+ QTest::addColumn<QByteArray>("second");
+ QTest::addColumn<QByteArray>("hash_first");
+ QTest::addColumn<QByteArray>("hash_firstsecond");
+
+ QTest::newRow("md4") << int(QCryptographicHash::Md4)
+ << QByteArray("abc") << QByteArray("abc")
+ << QByteArray::fromHex("A448017AAF21D8525FC10AE87AA6729D")
+ << QByteArray::fromHex("03E5E436DAFAF3B9B3589DB83C417C6B");
+ QTest::newRow("md5") << int(QCryptographicHash::Md5)
+ << QByteArray("abc") << QByteArray("abc")
+ << QByteArray::fromHex("900150983CD24FB0D6963F7D28E17F72")
+ << QByteArray::fromHex("440AC85892CA43AD26D44C7AD9D47D3E");
+ QTest::newRow("sha1") << int(QCryptographicHash::Sha1)
+ << QByteArray("abc") << QByteArray("abc")
+ << QByteArray::fromHex("A9993E364706816ABA3E25717850C26C9CD0D89D")
+ << QByteArray::fromHex("F8C1D87006FBF7E5CC4B026C3138BC046883DC71");
+}
+
+void tst_QCryptographicHash::intermediary_result()
+{
+ QFETCH(int, algo);
+ QCryptographicHash::Algorithm _algo = QCryptographicHash::Algorithm(algo);
+ QCryptographicHash hash(_algo);
+
+ QFETCH(QByteArray, first);
+ hash.addData(first);
+
+ QFETCH(QByteArray, hash_first);
+ QByteArray result = hash.result();
+ QCOMPARE(result, hash_first);
+
+ // don't reset
+ QFETCH(QByteArray, second);
+ QFETCH(QByteArray, hash_firstsecond);
+ hash.addData(second);
+
+ result = hash.result();
+ QCOMPARE(result, hash_firstsecond);
+
+ hash.reset();
+}
+
+
+void tst_QCryptographicHash::sha1()
+{
+// SHA1("abc") =
+// A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D
+ QCOMPARE(QCryptographicHash::hash("abc", QCryptographicHash::Sha1).toHex().toUpper(),
+ QByteArray("A9993E364706816ABA3E25717850C26C9CD0D89D"));
+
+// SHA1("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq") =
+// 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1
+ QCOMPARE(QCryptographicHash::hash("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
+ QCryptographicHash::Sha1).toHex().toUpper(),
+ QByteArray("84983E441C3BD26EBAAE4AA1F95129E5E54670F1"));
+
+// SHA1(A million repetitions of "a") =
+// 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
+ QByteArray as;
+ for (int i = 0; i < 1000000; ++i)
+ as += 'a';
+ QCOMPARE(QCryptographicHash::hash(as, QCryptographicHash::Sha1).toHex().toUpper(),
+ QByteArray("34AA973CD4C4DAA4F61EEB2BDBAD27316534016F"));
+}
+
+
+QTEST_MAIN(tst_QCryptographicHash)
+#include "tst_qcryptographichash.moc"
diff --git a/tests/auto/corelib/tools/qdate/.gitignore b/tests/auto/corelib/tools/qdate/.gitignore
new file mode 100644
index 0000000000..70945d4a86
--- /dev/null
+++ b/tests/auto/corelib/tools/qdate/.gitignore
@@ -0,0 +1 @@
+tst_qdate
diff --git a/tests/auto/corelib/tools/qdate/qdate.pro b/tests/auto/corelib/tools/qdate/qdate.pro
new file mode 100644
index 0000000000..1c041004d3
--- /dev/null
+++ b/tests/auto/corelib/tools/qdate/qdate.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qdate.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qdate/tst_qdate.cpp b/tests/auto/corelib/tools/qdate/tst_qdate.cpp
new file mode 100644
index 0000000000..b1e0f33ba6
--- /dev/null
+++ b/tests/auto/corelib/tools/qdate/tst_qdate.cpp
@@ -0,0 +1,948 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qdatetime.h>
+#include <qlocale.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=corelib/tools/qdatetime.h corelib/tools/qdatetime.cpp
+
+class tst_QDate : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QDate();
+ virtual ~tst_QDate();
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void toString();
+ void isValid_data();
+ void isValid();
+ void julianDay_data();
+ void julianDay();
+ void weekNumber_invalid_data();
+ void weekNumber_invalid();
+ void weekNumber_data();
+ void weekNumber();
+ void addDays_data();
+ void addDays();
+ void addMonths_data();
+ void addMonths();
+ void addYears_data();
+ void addYears();
+ void operator_eq_eq();
+ void operator_not_eq();
+ void operator_lt();
+ void operator_gt();
+ void operator_lt_eq();
+ void operator_gt_eq();
+ void fromString_data();
+ void fromString();
+ void fromString_format_data();
+ void fromString_format();
+ void toString_format_data();
+ void toString_format();
+ void isLeapYear();
+ void yearsZeroToNinetyNine();
+ void negativeYear() const;
+ void printNegativeYear() const;
+ void roundtripGermanLocale() const;
+ void shortDayName() const;
+ void standaloneShortDayName() const;
+ void longDayName() const;
+ void standaloneLongDayName() const;
+ void shortMonthName() const;
+ void standaloneShortMonthName() const;
+ void longMonthName() const;
+ void standaloneLongMonthName() const;
+ void roundtrip() const;
+};
+
+Q_DECLARE_METATYPE(QDate)
+
+tst_QDate::tst_QDate()
+{
+}
+
+tst_QDate::~tst_QDate()
+{
+
+}
+
+void tst_QDate::init()
+{
+// This will be executed immediately before each test is run.
+// TODO: Add initialization code here.
+}
+
+void tst_QDate::cleanup()
+{
+// This will be executed immediately after each test is run.
+// TODO: Add cleanup code here.
+}
+
+void tst_QDate::isValid_data()
+{
+ QTest::addColumn<int>("year");
+ QTest::addColumn<int>("month");
+ QTest::addColumn<int>("day");
+ QTest::addColumn<uint>("jd");
+ QTest::addColumn<bool>("valid");
+
+ QTest::newRow("0-0-0") << 0 << 0 << 0 << 0U << false;
+ QTest::newRow("month 0") << 2000 << 0 << 1 << 0U << false;
+ QTest::newRow("day 0") << 2000 << 1 << 0 << 0U << false;
+
+ QTest::newRow("month 13") << 2000 << 13 << 1 << 0U << false;
+
+ // test leap years
+ QTest::newRow("non-leap") << 2006 << 2 << 29 << 0U << false;
+ QTest::newRow("normal leap") << 2004 << 2 << 29 << 2453065U << true;
+ QTest::newRow("century leap") << 1900 << 2 << 29 << 0U << false;
+ QTest::newRow("century leap") << 2100 << 2 << 29 << 0U << false;
+ QTest::newRow("400-years leap") << 2000 << 2 << 29 << 2451604U << true;
+ QTest::newRow("400-years leap 2") << 2400 << 2 << 29 << 2597701U << true;
+ QTest::newRow("400-years leap 3") << 1600 << 2 << 29 << 2305507U << true;
+ QTest::newRow("year 0") << 0 << 2 << 27 << 0U << false;
+
+ // test the number of days in months:
+ QTest::newRow("jan") << 2000 << 1 << 31 << 2451575U << true;
+ QTest::newRow("feb") << 2000 << 2 << 29 << 2451604U << true; // same data as 400-years leap
+ QTest::newRow("mar") << 2000 << 3 << 31 << 2451635U << true;
+ QTest::newRow("apr") << 2000 << 4 << 30 << 2451665U << true;
+ QTest::newRow("may") << 2000 << 5 << 31 << 2451696U << true;
+ QTest::newRow("jun") << 2000 << 6 << 30 << 2451726U << true;
+ QTest::newRow("jul") << 2000 << 7 << 31 << 2451757U << true;
+ QTest::newRow("aug") << 2000 << 8 << 31 << 2451788U << true;
+ QTest::newRow("sep") << 2000 << 9 << 30 << 2451818U << true;
+ QTest::newRow("oct") << 2000 << 10 << 31 << 2451849U << true;
+ QTest::newRow("nov") << 2000 << 11 << 30 << 2451879U << true;
+ QTest::newRow("dec") << 2000 << 12 << 31 << 2451910U << true;
+
+ // and invalid dates:
+ QTest::newRow("ijan") << 2000 << 1 << 32 << 0U << false;
+ QTest::newRow("ifeb") << 2000 << 2 << 30 << 0U << false;
+ QTest::newRow("imar") << 2000 << 3 << 32 << 0U << false;
+ QTest::newRow("iapr") << 2000 << 4 << 31 << 0U << false;
+ QTest::newRow("imay") << 2000 << 5 << 32 << 0U << false;
+ QTest::newRow("ijun") << 2000 << 6 << 31 << 0U << false;
+ QTest::newRow("ijul") << 2000 << 7 << 32 << 0U << false;
+ QTest::newRow("iaug") << 2000 << 8 << 32 << 0U << false;
+ QTest::newRow("isep") << 2000 << 9 << 31 << 0U << false;
+ QTest::newRow("ioct") << 2000 << 10 << 32 << 0U << false;
+ QTest::newRow("inov") << 2000 << 11 << 31 << 0U << false;
+ QTest::newRow("idec") << 2000 << 12 << 32 << 0U << false;
+
+ // the beginning of the Julian Day calendar:
+ QTest::newRow("jd negative1") << -4714 << 1 << 1 << 0U << false;
+ QTest::newRow("jd negative2") << -4713 << 1 << 1 << 0U << false;
+ QTest::newRow("jd negative3") << -4713 << 1 << 2 << 1U << true;
+ QTest::newRow("jd negative4") << -4713 << 1 << 3 << 2U << true;
+ QTest::newRow("jd 0") << -4713 << 1 << 1 << 0U << false;
+ QTest::newRow("jd 1") << -4713 << 1 << 2 << 1U << true;
+ QTest::newRow("imminent overflow") << 11754508 << 12 << 13 << 4294967295U << true;
+}
+
+void tst_QDate::isValid()
+{
+ QFETCH(int, year);
+ QFETCH(int, month);
+ QFETCH(int, day);
+
+ QTEST(QDate::isValid(year, month, day), "valid");
+
+ QDate d;
+ d.setDate(year, month, day);
+ QTEST(d.isValid(), "valid");
+}
+
+void tst_QDate::julianDay_data()
+{
+ isValid_data();
+}
+
+void tst_QDate::julianDay()
+{
+ QFETCH(int, year);
+ QFETCH(int, month);
+ QFETCH(int, day);
+ QFETCH(uint, jd);
+
+ {
+ QDate d;
+ d.setDate(year, month, day);
+ QCOMPARE(uint(d.toJulianDay()), jd);
+ }
+
+ if (jd) {
+ QDate d = QDate::fromJulianDay(jd);
+ QCOMPARE(d.year(), year);
+ QCOMPARE(d.month(), month);
+ QCOMPARE(d.day(), day);
+ }
+}
+
+void tst_QDate::weekNumber_data()
+{
+ QTest::addColumn<int>("expectedWeekNum");
+ QTest::addColumn<int>("expectedYearNum");
+ QTest::addColumn<int>("year");
+ QTest::addColumn<int>("month");
+ QTest::addColumn<int>("day");
+
+ //next we fill it with data
+ QTest::newRow( "data0" ) << 10 << 2002 << 2002 << 3 << 8;
+ QTest::newRow( "data1" ) << 10 << 2002 << 2002 << 3 << 8;
+ QTest::newRow( "data2" ) << 52 << 1999 << 2000 << 1 << 1;
+ QTest::newRow( "data3" ) << 52 << 1999 << 1999 << 12 << 31;
+ QTest::newRow( "data4" ) << 1 << 2001 << 2001 << 1 << 1;
+ QTest::newRow( "data5" ) << 53 << 1998 << 1998 << 12 << 31;
+ QTest::newRow( "data6" ) << 1 << 1985 << 1984 << 12 << 31;
+ QTest::newRow( "data7" ) << 52 << 2006 << 2006 << 12 << 31;
+}
+
+void tst_QDate::weekNumber()
+{
+ int yearNumber;
+ QFETCH( int, year );
+ QFETCH( int, month );
+ QFETCH( int, day );
+ QFETCH( int, expectedWeekNum );
+ QFETCH( int, expectedYearNum );
+ QDate dt1( year, month, day );
+ QCOMPARE( dt1.weekNumber( &yearNumber ), expectedWeekNum );
+ QCOMPARE( yearNumber, expectedYearNum );
+}
+
+void tst_QDate::weekNumber_invalid_data()
+{
+ QTest::addColumn<int>("year");
+ QTest::addColumn<int>("month");
+ QTest::addColumn<int>("day");
+
+ //next we fill it with data
+ QTest::newRow( "data0" ) << 0 << 0 << 0;
+ QTest::newRow( "data1" ) << 2001 << 1 << 32;
+ QTest::newRow( "data2" ) << 1999 << 2 << 29;
+}
+
+void tst_QDate::weekNumber_invalid()
+{
+ QDate dt;
+ int yearNumber;
+ QCOMPARE( dt.weekNumber( &yearNumber ), 0 );
+}
+
+void tst_QDate::addDays()
+{
+ QFETCH( int, year );
+ QFETCH( int, month );
+ QFETCH( int, day );
+ QFETCH( int, amountToAdd );
+ QFETCH( int, expectedYear );
+ QFETCH( int, expectedMonth );
+ QFETCH( int, expectedDay );
+
+ QDate dt( year, month, day );
+ dt = dt.addDays( amountToAdd );
+
+ QCOMPARE( dt.year(), expectedYear );
+ QCOMPARE( dt.month(), expectedMonth );
+ QCOMPARE( dt.day(), expectedDay );
+}
+
+void tst_QDate::addDays_data()
+{
+ QTest::addColumn<int>("year");
+ QTest::addColumn<int>("month");
+ QTest::addColumn<int>("day");
+ QTest::addColumn<int>("amountToAdd");
+ QTest::addColumn<int>("expectedYear");
+ QTest::addColumn<int>("expectedMonth");
+ QTest::addColumn<int>("expectedDay");
+
+ QTest::newRow( "data0" ) << 2000 << 1 << 1 << 1 << 2000 << 1 << 2;
+ QTest::newRow( "data1" ) << 2000 << 1 << 31 << 1 << 2000 << 2 << 1;
+ QTest::newRow( "data2" ) << 2000 << 2 << 28 << 1 << 2000 << 2 << 29;
+ QTest::newRow( "data3" ) << 2000 << 2 << 29 << 1 << 2000 << 3 << 1;
+ QTest::newRow( "data4" ) << 2000 << 12 << 31 << 1 << 2001 << 1 << 1;
+ QTest::newRow( "data5" ) << 2001 << 2 << 28 << 1 << 2001 << 3 << 1;
+ QTest::newRow( "data6" ) << 2001 << 2 << 28 << 30 << 2001 << 3 << 30;
+ QTest::newRow( "data7" ) << 2001 << 3 << 30 << 5 << 2001 << 4 << 4;
+
+ QTest::newRow( "data8" ) << 2000 << 1 << 1 << -1 << 1999 << 12 << 31;
+ QTest::newRow( "data9" ) << 2000 << 1 << 31 << -1 << 2000 << 1 << 30;
+ QTest::newRow( "data10" ) << 2000 << 2 << 28 << -1 << 2000 << 2 << 27;
+ QTest::newRow( "data11" ) << 2001 << 2 << 28 << -30 << 2001 << 1 << 29;
+
+ QDate invalid;
+ QTest::newRow( "data12" ) << -4713 << 1 << 2 << -2
+ << invalid.year() << invalid.month() << invalid.day();
+}
+
+void tst_QDate::addMonths()
+{
+ QFETCH( int, year );
+ QFETCH( int, month );
+ QFETCH( int, day );
+ QFETCH( int, amountToAdd );
+ QFETCH( int, expectedYear );
+ QFETCH( int, expectedMonth );
+ QFETCH( int, expectedDay );
+
+ QDate dt( year, month, day );
+ dt = dt.addMonths( amountToAdd );
+
+ QCOMPARE( dt.year(), expectedYear );
+ QCOMPARE( dt.month(), expectedMonth );
+ QCOMPARE( dt.day(), expectedDay );
+}
+
+void tst_QDate::addMonths_data()
+{
+ QTest::addColumn<int>("year");
+ QTest::addColumn<int>("month");
+ QTest::addColumn<int>("day");
+ QTest::addColumn<int>("amountToAdd");
+ QTest::addColumn<int>("expectedYear");
+ QTest::addColumn<int>("expectedMonth");
+ QTest::addColumn<int>("expectedDay");
+
+ QTest::newRow( "data0" ) << 2000 << 1 << 1 << 1 << 2000 << 2 << 1;
+ QTest::newRow( "data1" ) << 2000 << 1 << 31 << 1 << 2000 << 2 << 29;
+ QTest::newRow( "data2" ) << 2000 << 2 << 28 << 1 << 2000 << 3 << 28;
+ QTest::newRow( "data3" ) << 2000 << 2 << 29 << 1 << 2000 << 3 << 29;
+ QTest::newRow( "data4" ) << 2000 << 12 << 31 << 1 << 2001 << 1 << 31;
+ QTest::newRow( "data5" ) << 2001 << 2 << 28 << 1 << 2001 << 3 << 28;
+ QTest::newRow( "data6" ) << 2001 << 2 << 28 << 12 << 2002 << 2 << 28;
+ QTest::newRow( "data7" ) << 2000 << 2 << 29 << 12 << 2001 << 2 << 28;
+ QTest::newRow( "data8" ) << 2000 << 10 << 15 << 4 << 2001 << 2 << 15;
+
+ QTest::newRow( "data9" ) << 2000 << 1 << 1 << -1 << 1999 << 12 << 1;
+ QTest::newRow( "data10" ) << 2000 << 1 << 31 << -1 << 1999 << 12 << 31;
+ QTest::newRow( "data11" ) << 2000 << 12 << 31 << -1 << 2000 << 11 << 30;
+ QTest::newRow( "data12" ) << 2001 << 2 << 28 << -12 << 2000 << 2 << 28;
+ QTest::newRow( "data13" ) << 2000 << 1 << 31 << -7 << 1999 << 6 << 30;
+ QTest::newRow( "data14" ) << 2000 << 2 << 29 << -12 << 1999 << 2 << 28;
+
+ // year sign change:
+ QTest::newRow( "data14" ) << 1 << 1 << 1 << -1 << -1 << 12 << 1;
+ QTest::newRow( "data15" ) << 1 << 1 << 1 << -12 << -1 << 1 << 1;
+ QTest::newRow( "data16" ) << -1 << 12 << 1 << 1 << 1 << 1 << 1;
+ QTest::newRow( "data17" ) << -1 << 1 << 1 << 12 << 1 << 1 << 1;
+
+ // Gregorian/Julian switchover
+ QTest::newRow( "data18" ) << 1582 << 9 << 4 << 1 << 1582 << 10 << 4;
+ QTest::newRow( "data19" ) << 1582 << 9 << 10 << 1 << 1582 << 10 << 15;
+ QTest::newRow( "data20" ) << 1582 << 9 << 20 << 1 << 1582 << 10 << 20;
+ QTest::newRow( "data21" ) << 1582 << 11 << 4 << -1 << 1582 << 10 << 4;
+ QTest::newRow( "data22" ) << 1582 << 11 << 10 << -1 << 1582 << 10 << 4;
+ QTest::newRow( "data23" ) << 1582 << 11 << 20 << -1 << 1582 << 10 << 20;
+}
+
+void tst_QDate::addYears()
+{
+ QFETCH( int, year );
+ QFETCH( int, month );
+ QFETCH( int, day );
+ QFETCH( int, amountToAdd );
+ QFETCH( int, expectedYear );
+ QFETCH( int, expectedMonth );
+ QFETCH( int, expectedDay );
+
+ QDate dt( year, month, day );
+ dt = dt.addYears( amountToAdd );
+
+ QCOMPARE( dt.year(), expectedYear );
+ QCOMPARE( dt.month(), expectedMonth );
+ QCOMPARE( dt.day(), expectedDay );
+}
+
+void tst_QDate::addYears_data()
+{
+ QTest::addColumn<int>("year");
+ QTest::addColumn<int>("month");
+ QTest::addColumn<int>("day");
+ QTest::addColumn<int>("amountToAdd");
+ QTest::addColumn<int>("expectedYear");
+ QTest::addColumn<int>("expectedMonth");
+ QTest::addColumn<int>("expectedDay");
+
+ QTest::newRow( "data0" ) << 2000 << 1 << 1 << 1 << 2001 << 1 << 1;
+ QTest::newRow( "data1" ) << 2000 << 1 << 31 << 1 << 2001 << 1 << 31;
+ QTest::newRow( "data2" ) << 2000 << 2 << 28 << 1 << 2001 << 2 << 28;
+ QTest::newRow( "data3" ) << 2000 << 2 << 29 << 1 << 2001 << 2 << 28;
+ QTest::newRow( "data4" ) << 2000 << 12 << 31 << 1 << 2001 << 12 << 31;
+ QTest::newRow( "data5" ) << 2001 << 2 << 28 << 3 << 2004 << 2 << 28;
+ QTest::newRow( "data6" ) << 2000 << 2 << 29 << 4 << 2004 << 2 << 29;
+
+ QTest::newRow( "data7" ) << 2000 << 1 << 31 << -1 << 1999 << 1 << 31;
+ QTest::newRow( "data9" ) << 2000 << 2 << 29 << -1 << 1999 << 2 << 28;
+ QTest::newRow( "data10" ) << 2000 << 12 << 31 << -1 << 1999 << 12 << 31;
+ QTest::newRow( "data11" ) << 2001 << 2 << 28 << -3 << 1998 << 2 << 28;
+ QTest::newRow( "data12" ) << 2000 << 2 << 29 << -4 << 1996 << 2 << 29;
+ QTest::newRow( "data13" ) << 2000 << 2 << 29 << -5 << 1995 << 2 << 28;
+
+ QTest::newRow( "data14" ) << 2000 << 1 << 1 << -1999 << 1 << 1 << 1;
+ QTest::newRow( "data15" ) << 2000 << 1 << 1 << -2000 << -1 << 1 << 1;
+ QTest::newRow( "data16" ) << 2000 << 1 << 1 << -2001 << -2 << 1 << 1;
+ QTest::newRow( "data17" ) << -2000 << 1 << 1 << 1999 << -1 << 1 << 1;
+ QTest::newRow( "data18" ) << -2000 << 1 << 1 << 2000 << 1 << 1 << 1;
+ QTest::newRow( "data19" ) << -2000 << 1 << 1 << 2001 << 2 << 1 << 1;
+}
+
+void tst_QDate::operator_eq_eq()
+{
+ QDate d1(2000,1,2);
+ QDate d2(2000,1,2);
+ QVERIFY( d1 == d2 );
+
+ d1 = QDate(2001,12,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( d1 == d2 );
+
+ d2 = QDate(2002,12,5);
+ QVERIFY( !(d1 == d2) );
+}
+
+void tst_QDate::operator_not_eq()
+{
+ QDate d1(2000,1,2);
+ QDate d2(2000,1,2);
+ QVERIFY( !(d1 != d2) );
+
+ d1 = QDate(2001,12,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( !(d1 != d2) );
+
+ d2 = QDate(2002,12,5);
+ QVERIFY( d1 != d2 );
+}
+
+void tst_QDate::operator_lt()
+{
+ QDate d1(2000,1,2);
+ QDate d2(2000,1,2);
+ QVERIFY( !(d1 < d2) );
+
+ d1 = QDate(2001,12,4);
+ d2 = QDate(2001,12,5);
+ QVERIFY( d1 < d2 );
+
+ d1 = QDate(2001,11,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( d1 < d2 );
+
+ d1 = QDate(2000,12,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( d1 < d2 );
+
+ d1 = QDate(2002,12,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( !(d1 < d2) );
+
+ d1 = QDate(2001,12,5);
+ d2 = QDate(2001,11,5);
+ QVERIFY( !(d1 < d2) );
+
+ d1 = QDate(2001,12,6);
+ d2 = QDate(2001,12,5);
+ QVERIFY( !(d1 < d2) );
+}
+
+void tst_QDate::operator_gt()
+{
+ QDate d1(2000,1,2);
+ QDate d2(2000,1,2);
+ QVERIFY( !(d1 > d2) );
+
+ d1 = QDate(2001,12,4);
+ d2 = QDate(2001,12,5);
+ QVERIFY( !(d1 > d2) );
+
+ d1 = QDate(2001,11,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( !(d1 > d2) );
+
+ d1 = QDate(2000,12,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( !(d1 > d2) );
+
+ d1 = QDate(2002,12,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( d1 > d2 );
+
+ d1 = QDate(2001,12,5);
+ d2 = QDate(2001,11,5);
+ QVERIFY( d1 > d2 );
+
+ d1 = QDate(2001,12,6);
+ d2 = QDate(2001,12,5);
+ QVERIFY( d1 > d2 );
+}
+
+void tst_QDate::operator_lt_eq()
+{
+ QDate d1(2000,1,2);
+ QDate d2(2000,1,2);
+ QVERIFY( d1 <= d2 );
+
+ d1 = QDate(2001,12,4);
+ d2 = QDate(2001,12,5);
+ QVERIFY( d1 <= d2 );
+
+ d1 = QDate(2001,11,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( d1 <= d2 );
+
+ d1 = QDate(2000,12,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( d1 <= d2 );
+
+ d1 = QDate(2002,12,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( !(d1 <= d2) );
+
+ d1 = QDate(2001,12,5);
+ d2 = QDate(2001,11,5);
+ QVERIFY( !(d1 <= d2) );
+
+ d1 = QDate(2001,12,6);
+ d2 = QDate(2001,12,5);
+ QVERIFY( !(d1 <= d2) );
+}
+
+void tst_QDate::operator_gt_eq()
+{
+ QDate d1(2000,1,2);
+ QDate d2(2000,1,2);
+ QVERIFY( d1 >= d2 );
+
+ d1 = QDate(2001,12,4);
+ d2 = QDate(2001,12,5);
+ QVERIFY( !(d1 >= d2) );
+
+ d1 = QDate(2001,11,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( !(d1 >= d2) );
+
+ d1 = QDate(2000,12,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( !(d1 >= d2) );
+
+ d1 = QDate(2002,12,5);
+ d2 = QDate(2001,12,5);
+ QVERIFY( d1 >= d2 );
+
+ d1 = QDate(2001,12,5);
+ d2 = QDate(2001,11,5);
+ QVERIFY( d1 >= d2 );
+
+ d1 = QDate(2001,12,6);
+ d2 = QDate(2001,12,5);
+ QVERIFY( d1 >= d2 );
+}
+
+void tst_QDate::fromString_data()
+{
+ // Since we can't define an element of Qt::DateFormat, d1 will be the date
+ // expected when we have a TextDate, and d2 will be the date expected when
+ // we have an ISODate.
+
+ QTest::addColumn<QString>("str1");
+ QTest::addColumn<QString>("str2");
+ QTest::addColumn<QDate>("d1");
+
+ QTest::newRow( "data0" ) << QString("Sat May 20 1995") << QString("1995-05-20") << QDate(1995,5,20);
+ QTest::newRow( "data1" ) << QString("Tue Dec 17 2002") << QString("2002-12-17") << QDate(2002,12,17);
+ QDate d( 1999, 11, 14 );
+ QTest::newRow( "data2" ) << d.toString( Qt::TextDate ) << d.toString( Qt::ISODate ) << d;
+
+ QTest::newRow( "data3" ) << QString("xxx Jan 1 0999") << QString("0999-01-01") << QDate(999, 1, 1);
+ QTest::newRow( "data3b" ) << QString("xxx Jan 1 999") << QString("0999-01-01") << QDate(999, 1, 1);
+ QTest::newRow( "data4" ) << QString("xxx Jan 1 12345") << QString() << QDate(12345, 1, 1);
+ QTest::newRow( "data5" ) << QString("xxx Jan 1 -0001") << QString() << QDate(-1, 1, 1);
+ QTest::newRow( "data6" ) << QString("xxx Jan 1 -4712") << QString() << QDate(-4712, 1, 1);
+ QTest::newRow( "data7" ) << QString("xxx Nov 25 -4713") << QString() << QDate(-4713, 11, 25);
+}
+
+void tst_QDate::fromString()
+{
+ QFETCH( QString, str1 );
+ QFETCH( QString, str2 );
+ QFETCH( QDate, d1 );
+
+ QCOMPARE( QDate::fromString( str1, Qt::TextDate ), d1 );
+ if (!str2.isEmpty())
+ QCOMPARE( QDate::fromString( str2, Qt::ISODate ), d1 );
+}
+
+void tst_QDate::fromString_format_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QDate>("date");
+
+ //year with yy is always 19xx for compatibility
+ QTest::newRow( "data0" ) << QString("21052006") << QString("ddMMyyyy") << QDate(2006,5,21);
+ QTest::newRow( "data1" ) << QString("210506") << QString("ddMMyy") << QDate(1906,5,21);
+ QTest::newRow( "data2" ) << QString("21/5/2006") << QString("d/M/yyyy") << QDate(2006,5,21);
+ QTest::newRow( "data3" ) << QString("21/5/06") << QString("d/M/yy") << QDate(1906,5,21);
+ QTest::newRow( "data4" ) << QString("20060521") << QString("yyyyMMdd") << QDate(2006,5,21);
+ QTest::newRow( "data5" ) << QString("060521") << QString("yyMMdd") << QDate(1906,5,21);
+}
+
+void tst_QDate::fromString_format()
+{
+ QFETCH( QString, string );
+ QFETCH( QString, format );
+ QFETCH( QDate, date );
+
+ QCOMPARE( QDate::fromString( string, format ), date );
+}
+
+void tst_QDate::toString_format_data()
+{
+ QTest::addColumn<QDate>("t");
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QString>("str");
+
+ QTest::newRow( "data0" ) << QDate(1995,5,20) << QString("d-M-yy") << QString("20-5-95");
+ QTest::newRow( "data1" ) << QDate(2002,12,17) << QString("dd-MM-yyyy") << QString("17-12-2002");
+ QTest::newRow( "data2" ) << QDate(1995,5,20) << QString("M-yy") << QString("5-95");
+ QTest::newRow( "data3" ) << QDate(2002,12,17) << QString("dd") << QString("17");
+ QTest::newRow( "data4" ) << QDate() << QString("dd-mm-yyyy") << QString();
+}
+
+void tst_QDate::toString_format()
+{
+ QFETCH( QDate, t );
+ QFETCH( QString, format );
+ QFETCH( QString, str );
+
+ QCOMPARE( t.toString( format ), str );
+}
+
+void tst_QDate::isLeapYear()
+{
+ QVERIFY(QDate::isLeapYear(-4445));
+ QVERIFY(!QDate::isLeapYear(-4444));
+ QVERIFY(!QDate::isLeapYear(-6));
+ QVERIFY(QDate::isLeapYear(-5));
+ QVERIFY(!QDate::isLeapYear(-4));
+ QVERIFY(!QDate::isLeapYear(-3));
+ QVERIFY(!QDate::isLeapYear(-2));
+ QVERIFY(QDate::isLeapYear(-1));
+ QVERIFY(!QDate::isLeapYear(0)); // Doesn't exist
+ QVERIFY(!QDate::isLeapYear(1));
+ QVERIFY(!QDate::isLeapYear(2));
+ QVERIFY(!QDate::isLeapYear(3));
+ QVERIFY(QDate::isLeapYear(4));
+ QVERIFY(!QDate::isLeapYear(7));
+ QVERIFY(QDate::isLeapYear(8));
+ QVERIFY(QDate::isLeapYear(100));
+ QVERIFY(QDate::isLeapYear(400));
+ QVERIFY(QDate::isLeapYear(700));
+ QVERIFY(QDate::isLeapYear(1500));
+ QVERIFY(QDate::isLeapYear(1600));
+ QVERIFY(!QDate::isLeapYear(1700));
+ QVERIFY(!QDate::isLeapYear(1800));
+ QVERIFY(!QDate::isLeapYear(1900));
+ QVERIFY(QDate::isLeapYear(2000));
+ QVERIFY(!QDate::isLeapYear(2100));
+ QVERIFY(!QDate::isLeapYear(2200));
+ QVERIFY(!QDate::isLeapYear(2300));
+ QVERIFY(QDate::isLeapYear(2400));
+ QVERIFY(!QDate::isLeapYear(2500));
+ QVERIFY(!QDate::isLeapYear(2600));
+ QVERIFY(!QDate::isLeapYear(2700));
+ QVERIFY(QDate::isLeapYear(2800));
+
+ for (int i = -4713; i <= 10000; ++i) {
+ if (i == 0)
+ continue;
+ QVERIFY(!QDate(i, 2, 29).isValid() == !QDate::isLeapYear(i));
+ }
+}
+
+void tst_QDate::yearsZeroToNinetyNine()
+{
+ {
+ QDate dt(-1, 2, 3);
+ QCOMPARE(dt.year(), -1);
+ QCOMPARE(dt.month(), 2);
+ QCOMPARE(dt.day(), 3);
+ }
+
+ {
+ QDate dt(1, 2, 3);
+ QCOMPARE(dt.year(), 1);
+ QCOMPARE(dt.month(), 2);
+ QCOMPARE(dt.day(), 3);
+ }
+
+ {
+ QDate dt(99, 2, 3);
+ QCOMPARE(dt.year(), 99);
+ QCOMPARE(dt.month(), 2);
+ QCOMPARE(dt.day(), 3);
+ }
+
+ QVERIFY(!QDate::isValid(0, 2, 3));
+ QVERIFY(QDate::isValid(1, 2, 3));
+ QVERIFY(QDate::isValid(-1, 2, 3));
+
+ {
+ QDate dt;
+ dt.setYMD(1, 2, 3);
+ QCOMPARE(dt.year(), 1901);
+ QCOMPARE(dt.month(), 2);
+ QCOMPARE(dt.day(), 3);
+ }
+
+ {
+ QDate dt;
+ dt.setDate(1, 2, 3);
+ QCOMPARE(dt.year(), 1);
+ QCOMPARE(dt.month(), 2);
+ QCOMPARE(dt.day(), 3);
+
+ dt.setDate(0, 2, 3);
+ QVERIFY(!dt.isValid());
+ }
+}
+
+void tst_QDate::toString()
+{
+ QDate date(1974,12,1);
+ QCOMPARE(date.toString(Qt::SystemLocaleDate),
+ QLocale::system().toString(date, QLocale::ShortFormat));
+ QCOMPARE(date.toString(Qt::LocaleDate),
+ QLocale().toString(date, QLocale::ShortFormat));
+ QLocale::setDefault(QLocale::German);
+ QCOMPARE(date.toString(Qt::SystemLocaleDate),
+ QLocale::system().toString(date, QLocale::ShortFormat));
+ QCOMPARE(date.toString(Qt::LocaleDate),
+ QLocale().toString(date, QLocale::ShortFormat));
+}
+
+void tst_QDate::negativeYear() const
+{
+ QDate y(-20, 3, 4);
+ QVERIFY(y.isValid());
+ QCOMPARE(y.year(), -20);
+}
+
+void tst_QDate::printNegativeYear() const
+{
+ {
+ QDate date(-500, 3, 4);
+ QVERIFY(date.isValid());
+ QCOMPARE(date.toString(QLatin1String("yyyy")), QString::fromLatin1("-0500"));
+ }
+
+ {
+ QDate date(-10, 3, 4);
+ QVERIFY(date.isValid());
+ QCOMPARE(date.toString(QLatin1String("yyyy")), QString::fromLatin1("-0010"));
+ }
+
+ {
+ QDate date(-2, 3, 4);
+ QVERIFY(date.isValid());
+ QCOMPARE(date.toString(QLatin1String("yyyy")), QString::fromLatin1("-0002"));
+ }
+}
+
+void tst_QDate::roundtripGermanLocale() const
+{
+ /* This code path should not result in warnings. */
+ const QDate theDate(QDate::currentDate());
+ theDate.fromString(theDate.toString(Qt::TextDate), Qt::TextDate);
+
+ const QDateTime theDateTime(QDateTime::currentDateTime());
+ theDateTime.fromString(theDateTime.toString(Qt::TextDate), Qt::TextDate);
+}
+
+void tst_QDate::shortDayName() const
+{
+ if (QLocale::system().language() == QLocale::C) {
+ QCOMPARE(QDate::shortDayName(1), QLatin1String("Mon"));
+ QCOMPARE(QDate::shortDayName(7), QLatin1String("Sun"));
+ }
+
+ QLocale locale = QLocale::system();
+ for(int i = 1; i <= 7; ++i) {
+ QCOMPARE(QDate::shortDayName(i), locale.dayName(i, QLocale::ShortFormat));
+ }
+}
+
+void tst_QDate::standaloneShortDayName() const
+{
+ if (QLocale::system().language() == QLocale::C) {
+ QCOMPARE(QDate::shortDayName(1, QDate::StandaloneFormat), QLatin1String("Mon"));
+ QCOMPARE(QDate::shortDayName(7, QDate::StandaloneFormat), QLatin1String("Sun"));
+ }
+
+ QLocale locale = QLocale::system();
+ for(int i = 1; i <= 7; ++i) {
+ QCOMPARE(QDate::shortDayName(i, QDate::StandaloneFormat), locale.standaloneDayName(i, QLocale::ShortFormat));
+ }
+}
+
+void tst_QDate::longDayName() const
+{
+ if (QLocale::system().language() == QLocale::C) {
+ QCOMPARE(QDate::longDayName(1), QLatin1String("Monday"));
+ QCOMPARE(QDate::longDayName(7), QLatin1String("Sunday"));
+ }
+
+ QLocale locale = QLocale::system();
+ for(int i = 1; i <= 7; ++i) {
+ QCOMPARE(QDate::longDayName(i), locale.dayName(i, QLocale::LongFormat));
+ }
+}
+
+void tst_QDate::standaloneLongDayName() const
+{
+ if (QLocale::system().language() == QLocale::C) {
+ QCOMPARE(QDate::longDayName(1, QDate::StandaloneFormat), QLatin1String("Monday"));
+ QCOMPARE(QDate::longDayName(7, QDate::StandaloneFormat), QLatin1String("Sunday"));
+ }
+
+ QLocale locale = QLocale::system();
+ for(int i = 1; i <= 7; ++i) {
+ QCOMPARE(QDate::longDayName(i, QDate::StandaloneFormat), locale.standaloneDayName(i, QLocale::LongFormat));
+ }
+}
+
+void tst_QDate::shortMonthName() const
+{
+ if (QLocale::system().language() == QLocale::C) {
+ QCOMPARE(QDate::shortMonthName(1), QLatin1String("Jan"));
+ QCOMPARE(QDate::shortMonthName(8), QLatin1String("Aug"));
+ }
+
+ QLocale locale = QLocale::system();
+ for(int i = 1; i <= 12; ++i) {
+ QCOMPARE(QDate::shortMonthName(i), locale.monthName(i, QLocale::ShortFormat));
+ }
+}
+
+void tst_QDate::standaloneShortMonthName() const
+{
+ if (QLocale::system().language() == QLocale::C) {
+ QCOMPARE(QDate::shortMonthName(1, QDate::StandaloneFormat), QLatin1String("Jan"));
+ QCOMPARE(QDate::shortMonthName(8, QDate::StandaloneFormat), QLatin1String("Aug"));
+ }
+
+ QLocale locale = QLocale::system();
+ for(int i = 1; i <= 12; ++i) {
+ QCOMPARE(QDate::shortMonthName(i, QDate::StandaloneFormat), locale.standaloneMonthName(i, QLocale::ShortFormat));
+ }
+}
+
+void tst_QDate::longMonthName() const
+{
+ if (QLocale::system().language() == QLocale::C) {
+ QCOMPARE(QDate::longMonthName(1), QLatin1String("January"));
+ QCOMPARE(QDate::longMonthName(8), QLatin1String("August"));
+ }
+
+ QLocale locale = QLocale::system();
+ for(int i = 1; i <= 12; ++i) {
+ QCOMPARE(QDate::longMonthName(i), locale.monthName(i, QLocale::LongFormat));
+ }
+}
+
+void tst_QDate::standaloneLongMonthName() const
+{
+ if (QLocale::system().language() == QLocale::C) {
+ QCOMPARE(QDate::longMonthName(1, QDate::StandaloneFormat), QLatin1String("January"));
+ QCOMPARE(QDate::longMonthName(8, QDate::StandaloneFormat), QLatin1String("August"));
+ }
+
+ QLocale locale = QLocale::system();
+ for(int i = 1; i <= 12; ++i) {
+ QCOMPARE(QDate::longMonthName(i, QDate::StandaloneFormat), locale.standaloneMonthName(i, QLocale::LongFormat));
+ }
+}
+
+void tst_QDate::roundtrip() const
+{
+ // Test round trip, this exercises setDate(), isValid(), isLeapYear(),
+ // year(), month(), day(), julianDayFromDate(), and getDateFromJulianDay()
+ // to ensure they are internally consistent (but doesn't guarantee correct)
+
+ // Test Julian round trip in both BC and AD
+ QDate testDate;
+ QDate loopDate = QDate::fromJulianDay(1684899); // 1 Jan 100 BC
+ while ( loopDate.toJulianDay() <= 1757948 ) { // 31 Dec 100 AD
+ testDate.setDate( loopDate.year(), loopDate.month(), loopDate.day() );
+ QCOMPARE( loopDate.toJulianDay(), testDate.toJulianDay() );
+ loopDate = loopDate.addDays(1);
+ }
+
+ // Test Julian and Gregorian round trip during changeover period
+ loopDate = QDate::fromJulianDay(2298153); // 1 Jan 1580 AD
+ while ( loopDate.toJulianDay() <= 2300334 ) { // 31 Dec 1585 AD
+ testDate.setDate( loopDate.year(), loopDate.month(), loopDate.day() );
+ QCOMPARE( loopDate.toJulianDay(), testDate.toJulianDay() );
+ loopDate = loopDate.addDays(1);
+ }
+
+ // Test Gregorian round trip during current useful period
+ loopDate = QDate::fromJulianDay(2378497); // 1 Jan 1900 AD
+ while ( loopDate.toJulianDay() <= 2488433 ) { // 31 Dec 2100 AD
+ testDate.setDate( loopDate.year(), loopDate.month(), loopDate.day() );
+ QCOMPARE( loopDate.toJulianDay(), testDate.toJulianDay() );
+ loopDate = loopDate.addDays(1);
+ }
+}
+
+QTEST_APPLESS_MAIN(tst_QDate)
+#include "tst_qdate.moc"
diff --git a/tests/auto/corelib/tools/qdatetime/.gitignore b/tests/auto/corelib/tools/qdatetime/.gitignore
new file mode 100644
index 0000000000..7784f3a3eb
--- /dev/null
+++ b/tests/auto/corelib/tools/qdatetime/.gitignore
@@ -0,0 +1 @@
+tst_qdatetime
diff --git a/tests/auto/corelib/tools/qdatetime/qdatetime.pro b/tests/auto/corelib/tools/qdatetime/qdatetime.pro
new file mode 100644
index 0000000000..cd335826ec
--- /dev/null
+++ b/tests/auto/corelib/tools/qdatetime/qdatetime.pro
@@ -0,0 +1,15 @@
+load(qttest_p4)
+
+SOURCES += tst_qdatetime.cpp
+QT = core core-private
+
+# For some reason using optimization here triggers a compiler issue, which causes an exception
+# However, the code is correct
+win32-msvc|win32-msvc9x {
+ !build_pass:message ( "Compiler issue, removing -O1 flag" )
+ QMAKE_CFLAGS_RELEASE -= -O1
+ QMAKE_CXXFLAGS_RELEASE -= -O1
+}
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
new file mode 100644
index 0000000000..95995e857b
--- /dev/null
+++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
@@ -0,0 +1,1740 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#ifndef Q_OS_WINCE
+#include <time.h>
+#endif
+
+#include <qdatetime.h>
+#include <private/qdatetime_p.h>
+
+#ifdef Q_OS_WIN
+# include <windows.h>
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QDateTime : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QDateTime();
+ virtual ~tst_QDateTime();
+
+ static QString str( int y, int month, int d, int h, int min, int s );
+ static QDateTime dt( const QString& str );
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void ctor();
+ void operator_eq();
+ void isNull();
+ void isValid();
+ void date();
+ void time();
+ void timeSpec();
+ void toTime_t_data();
+ void toTime_t();
+ void task_137698();
+ void setDate();
+ void setTime();
+ void setTimeSpec();
+ void setTime_t();
+ void setMSecsSinceEpoch_data();
+ void setMSecsSinceEpoch();
+ void toString_isoDate_data();
+ void toString_isoDate();
+ void toString_enumformat();
+ void toString_strformat_data();
+ void toString_strformat();
+ void addDays();
+ void addMonths();
+ void addMonths_data();
+ void addYears();
+ void addYears_data();
+ void addSecs_data();
+ void addSecs();
+ void addMSecs_data();
+ void addMSecs();
+ void toTimeSpec_data();
+ void toTimeSpec();
+ void toLocalTime_data();
+ void toLocalTime();
+ void toUTC_data();
+ void toUTC();
+ void daysTo();
+ void secsTo_data();
+ void secsTo();
+ void msecsTo_data();
+ void msecsTo();
+ void operator_eqeq();
+ void currentDateTime();
+ void currentDateTimeUtc();
+ void currentDateTimeUtc2();
+ void fromStringTextDate_data();
+ void fromStringTextDate();
+
+ void dateFromStringFormat_data();
+ void dateFromStringFormat();
+ void timeFromStringFormat_data();
+ void timeFromStringFormat();
+ void dateTimeFromStringFormat_data();
+ void dateTimeFromStringFormat();
+
+ void fromString_LOCALE_ILDATE();
+
+ void fromString();
+
+ void utcOffset();
+ void setUtcOffset();
+
+ void getDate();
+
+ void fewDigitsInYear() const;
+ void printNegativeYear() const;
+ void roundtripGermanLocale() const;
+ void utcOffsetLessThan() const;
+
+private:
+ bool europeanTimeZone;
+ QDate defDate() const { return QDate(1900, 1, 1); }
+ QTime defTime() const { return QTime(0, 0, 0); }
+ QDateTime defDateTime() const { return QDateTime(defDate(), defTime()); }
+ QDateTime invalidDateTime() const { return QDateTime(invalidDate(), invalidTime()); }
+ QDate invalidDate() const { return QDate(); }
+ QTime invalidTime() const { return QTime(-1, -1, -1); }
+};
+
+Q_DECLARE_METATYPE(QDateTime)
+Q_DECLARE_METATYPE(QDate)
+Q_DECLARE_METATYPE(QTime)
+
+
+tst_QDateTime::tst_QDateTime()
+{
+ uint x1 = QDateTime(QDate(1990, 1, 1), QTime()).toTime_t();
+ uint x2 = QDateTime(QDate(1990, 6, 1), QTime()).toTime_t();
+ europeanTimeZone = (x1 == 631148400 && x2 == 644191200);
+}
+
+tst_QDateTime::~tst_QDateTime()
+{
+
+}
+
+void tst_QDateTime::init()
+{
+#if defined(Q_OS_WINCE)
+ SetUserDefaultLCID(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT));
+#elif defined(Q_OS_WIN)
+ SetThreadLocale(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT));
+#endif
+
+}
+
+void tst_QDateTime::cleanup()
+{
+}
+
+QString tst_QDateTime::str( int y, int month, int d, int h, int min, int s )
+{
+ return QDateTime( QDate(y, month, d), QTime(h, min, s) ).toString( Qt::ISODate );
+}
+
+QDateTime tst_QDateTime::dt( const QString& str )
+{
+ if ( str == "INVALID" ) {
+ return QDateTime();
+ } else {
+ return QDateTime::fromString( str, Qt::ISODate );
+ }
+}
+
+void tst_QDateTime::ctor()
+{
+ QDateTime dt1(QDate(2004, 1, 2), QTime(1, 2, 3));
+ QDateTime dt2(QDate(2004, 1, 2), QTime(1, 2, 3), Qt::LocalTime);
+ QDateTime dt3(QDate(2004, 1, 2), QTime(1, 2, 3), Qt::UTC);
+
+ QVERIFY(dt1 == dt2);
+ if (europeanTimeZone) {
+ QVERIFY(dt1 != dt3);
+ QVERIFY(dt1 < dt3);
+ QVERIFY(dt1.addSecs(3600).toUTC() == dt3);
+ }
+}
+
+void tst_QDateTime::operator_eq()
+{
+ QDateTime dt1(QDate(2004, 3, 24), QTime(23, 45, 57), Qt::UTC);
+ QDateTime dt2(QDate(2005, 3, 11), QTime(), Qt::UTC);
+ dt2 = dt1;
+ QVERIFY(dt1 == dt2);
+}
+
+void tst_QDateTime::isNull()
+{
+ QDateTime dt1;
+ QVERIFY(dt1.isNull());
+ dt1.setDate(QDate());
+ QVERIFY(dt1.isNull());
+ dt1.setTime(QTime());
+ QVERIFY(dt1.isNull());
+ dt1.setTimeSpec(Qt::UTC);
+ QVERIFY(dt1.isNull()); // maybe it should return false?
+
+ dt1.setDate(QDate(2004, 1, 2));
+ QVERIFY(!dt1.isNull());
+ dt1.setTime(QTime(12, 34, 56));
+ QVERIFY(!dt1.isNull());
+ dt1.setTime(QTime());
+ QVERIFY(!dt1.isNull());
+}
+
+void tst_QDateTime::isValid()
+{
+ QDateTime dt1;
+ QVERIFY(!dt1.isValid());
+ dt1.setDate(QDate());
+ QVERIFY(!dt1.isValid());
+ dt1.setTime(QTime());
+ QVERIFY(!dt1.isValid());
+ dt1.setTimeSpec(Qt::UTC);
+ QVERIFY(!dt1.isValid());
+
+ dt1.setDate(QDate(2004, 1, 2));
+ QVERIFY(dt1.isValid());
+ dt1.setDate(QDate());
+ QVERIFY(!dt1.isValid());
+ dt1.setTime(QTime(12, 34, 56));
+ QVERIFY(!dt1.isValid());
+ dt1.setTime(QTime());
+ QVERIFY(!dt1.isValid());
+}
+
+void tst_QDateTime::date()
+{
+ QDateTime dt1(QDate(2004, 3, 24), QTime(23, 45, 57), Qt::LocalTime);
+ QCOMPARE(dt1.date(), QDate(2004, 3, 24));
+
+ QDateTime dt2(QDate(2004, 3, 25), QTime(0, 45, 57), Qt::LocalTime);
+ QCOMPARE(dt2.date(), QDate(2004, 3, 25));
+
+ QDateTime dt3(QDate(2004, 3, 24), QTime(23, 45, 57), Qt::UTC);
+ QCOMPARE(dt3.date(), QDate(2004, 3, 24));
+
+ QDateTime dt4(QDate(2004, 3, 25), QTime(0, 45, 57), Qt::UTC);
+ QCOMPARE(dt4.date(), QDate(2004, 3, 25));
+}
+
+void tst_QDateTime::time()
+{
+ QDateTime dt1(QDate(2004, 3, 24), QTime(23, 45, 57), Qt::LocalTime);
+ QCOMPARE(dt1.time(), QTime(23, 45, 57));
+
+ QDateTime dt2(QDate(2004, 3, 25), QTime(0, 45, 57), Qt::LocalTime);
+ QCOMPARE(dt2.time(), QTime(0, 45, 57));
+
+ QDateTime dt3(QDate(2004, 3, 24), QTime(23, 45, 57), Qt::UTC);
+ QCOMPARE(dt3.time(), QTime(23, 45, 57));
+
+ QDateTime dt4(QDate(2004, 3, 25), QTime(0, 45, 57), Qt::UTC);
+ QCOMPARE(dt4.time(), QTime(0, 45, 57));
+}
+
+void tst_QDateTime::timeSpec()
+{
+ QDateTime dt1(QDate(2004, 1, 24), QTime(23, 45, 57));
+ QCOMPARE(dt1.timeSpec(), Qt::LocalTime);
+ QCOMPARE(dt1.addDays(0).timeSpec(), Qt::LocalTime);
+ QCOMPARE(dt1.addMonths(0).timeSpec(), Qt::LocalTime);
+ QCOMPARE(dt1.addMonths(6).timeSpec(), Qt::LocalTime);
+ QCOMPARE(dt1.addYears(0).timeSpec(), Qt::LocalTime);
+ QCOMPARE(dt1.addSecs(0).timeSpec(), Qt::LocalTime);
+ QCOMPARE(dt1.addSecs(86400 * 185).timeSpec(), Qt::LocalTime);
+ QCOMPARE(dt1.toTimeSpec(Qt::LocalTime).timeSpec(), Qt::LocalTime);
+ QCOMPARE(dt1.toTimeSpec(Qt::UTC).timeSpec(), Qt::UTC);
+
+ QDateTime dt2(QDate(2004, 1, 24), QTime(23, 45, 57), Qt::LocalTime);
+ QCOMPARE(dt2.timeSpec(), Qt::LocalTime);
+
+ QDateTime dt3(QDate(2004, 1, 25), QTime(0, 45, 57), Qt::UTC);
+ QCOMPARE(dt3.timeSpec(), Qt::UTC);
+
+ QDateTime dt4 = QDateTime::currentDateTime();
+ QCOMPARE(dt4.timeSpec(), Qt::LocalTime);
+}
+
+void tst_QDateTime::setDate()
+{
+ QDateTime dt1(QDate(2004, 3, 25), QTime(0, 45, 57), Qt::UTC);
+ dt1.setDate(QDate(2004, 6, 25));
+ QCOMPARE(dt1.date(), QDate(2004, 6, 25));
+ QCOMPARE(dt1.time(), QTime(0, 45, 57));
+ QCOMPARE(dt1.timeSpec(), Qt::UTC);
+
+ QDateTime dt2(QDate(2004, 3, 25), QTime(0, 45, 57), Qt::LocalTime);
+ dt2.setDate(QDate(2004, 6, 25));
+ QCOMPARE(dt2.date(), QDate(2004, 6, 25));
+ QCOMPARE(dt2.time(), QTime(0, 45, 57));
+ QCOMPARE(dt2.timeSpec(), Qt::LocalTime);
+
+ QDateTime dt3(QDate(4004, 3, 25), QTime(0, 45, 57), Qt::UTC);
+ dt3.setDate(QDate(4004, 6, 25));
+ QCOMPARE(dt3.date(), QDate(4004, 6, 25));
+ QCOMPARE(dt3.time(), QTime(0, 45, 57));
+ QCOMPARE(dt3.timeSpec(), Qt::UTC);
+
+ QDateTime dt4(QDate(4004, 3, 25), QTime(0, 45, 57), Qt::LocalTime);
+ dt4.setDate(QDate(4004, 6, 25));
+ QCOMPARE(dt4.date(), QDate(4004, 6, 25));
+ QCOMPARE(dt4.time(), QTime(0, 45, 57));
+ QCOMPARE(dt4.timeSpec(), Qt::LocalTime);
+
+ QDateTime dt5(QDate(1760, 3, 25), QTime(0, 45, 57), Qt::UTC);
+ dt5.setDate(QDate(1760, 6, 25));
+ QCOMPARE(dt5.date(), QDate(1760, 6, 25));
+ QCOMPARE(dt5.time(), QTime(0, 45, 57));
+ QCOMPARE(dt5.timeSpec(), Qt::UTC);
+
+ QDateTime dt6(QDate(1760, 3, 25), QTime(0, 45, 57), Qt::LocalTime);
+ dt6.setDate(QDate(1760, 6, 25));
+ QCOMPARE(dt6.date(), QDate(1760, 6, 25));
+ QCOMPARE(dt6.time(), QTime(0, 45, 57));
+ QCOMPARE(dt6.timeSpec(), Qt::LocalTime);
+}
+
+void tst_QDateTime::setTime()
+{
+ QDateTime dt1(QDate(2004, 3, 25), QTime(0, 45, 57), Qt::UTC);
+ dt1.setTime(QTime(23, 11, 22));
+ QCOMPARE(dt1.date(), QDate(2004, 3, 25));
+ QCOMPARE(dt1.time(), QTime(23, 11, 22));
+ QCOMPARE(dt1.timeSpec(), Qt::UTC);
+
+ QDateTime dt2(QDate(2004, 3, 25), QTime(0, 45, 57), Qt::LocalTime);
+ dt2.setTime(QTime(23, 11, 22));
+ QCOMPARE(dt2.date(), QDate(2004, 3, 25));
+ QCOMPARE(dt2.time(), QTime(23, 11, 22));
+ QCOMPARE(dt2.timeSpec(), Qt::LocalTime);
+
+ QDateTime dt3(QDate(4004, 3, 25), QTime(0, 45, 57), Qt::UTC);
+ dt3.setTime(QTime(23, 11, 22));
+ QCOMPARE(dt3.date(), QDate(4004, 3, 25));
+ QCOMPARE(dt3.time(), QTime(23, 11, 22));
+ QCOMPARE(dt3.timeSpec(), Qt::UTC);
+
+ QDateTime dt4(QDate(4004, 3, 25), QTime(0, 45, 57), Qt::LocalTime);
+ dt4.setTime(QTime(23, 11, 22));
+ QCOMPARE(dt4.date(), QDate(4004, 3, 25));
+ QCOMPARE(dt4.time(), QTime(23, 11, 22));
+ QCOMPARE(dt4.timeSpec(), Qt::LocalTime);
+
+ QDateTime dt5(QDate(1760, 3, 25), QTime(0, 45, 57), Qt::UTC);
+ dt5.setTime(QTime(23, 11, 22));
+ QCOMPARE(dt5.date(), QDate(1760, 3, 25));
+ QCOMPARE(dt5.time(), QTime(23, 11, 22));
+ QCOMPARE(dt5.timeSpec(), Qt::UTC);
+
+ QDateTime dt6(QDate(1760, 3, 25), QTime(0, 45, 57), Qt::LocalTime);
+ dt6.setTime(QTime(23, 11, 22));
+ QCOMPARE(dt6.date(), QDate(1760, 3, 25));
+ QCOMPARE(dt6.time(), QTime(23, 11, 22));
+ QCOMPARE(dt6.timeSpec(), Qt::LocalTime);
+}
+
+void tst_QDateTime::setTimeSpec()
+{
+ QDateTime dt1(QDate(2004, 3, 25), QTime(0, 45, 57), Qt::UTC);
+ dt1.setTimeSpec(Qt::UTC);
+ QCOMPARE(dt1.date(), QDate(2004, 3, 25));
+ QCOMPARE(dt1.time(), QTime(0, 45, 57));
+ QCOMPARE(dt1.timeSpec(), Qt::UTC);
+
+ dt1.setTimeSpec(Qt::LocalTime);
+ QCOMPARE(dt1.date(), QDate(2004, 3, 25));
+ QCOMPARE(dt1.time(), QTime(0, 45, 57));
+ QCOMPARE(dt1.timeSpec(), Qt::LocalTime);
+}
+
+void tst_QDateTime::setTime_t()
+{
+ QDateTime dt1;
+ dt1.setTime_t(0);
+ QCOMPARE(dt1.toUTC(), QDateTime(QDate(1970, 1, 1), QTime(), Qt::UTC));
+
+ dt1.setTimeSpec(Qt::UTC);
+ dt1.setTime_t(0);
+ QCOMPARE(dt1, QDateTime(QDate(1970, 1, 1), QTime(), Qt::UTC));
+
+ dt1.setTime_t(123456);
+ QCOMPARE(dt1, QDateTime(QDate(1970, 1, 2), QTime(10, 17, 36), Qt::UTC));
+ if (europeanTimeZone) {
+ QDateTime dt2;
+ dt2.setTime_t(123456);
+ QCOMPARE(dt2, QDateTime(QDate(1970, 1, 2), QTime(11, 17, 36), Qt::LocalTime));
+ }
+
+ dt1.setTime_t((uint)(quint32)-123456);
+ QCOMPARE(dt1, QDateTime(QDate(2106, 2, 5), QTime(20, 10, 40), Qt::UTC));
+ if (europeanTimeZone) {
+ QDateTime dt2;
+ dt2.setTime_t((uint)(quint32)-123456);
+ QCOMPARE(dt2, QDateTime(QDate(2106, 2, 5), QTime(21, 10, 40), Qt::LocalTime));
+ }
+
+ dt1.setTime_t(1214567890);
+ QCOMPARE(dt1, QDateTime(QDate(2008, 6, 27), QTime(11, 58, 10), Qt::UTC));
+ if (europeanTimeZone) {
+ QDateTime dt2;
+ dt2.setTime_t(1214567890);
+ QCOMPARE(dt2, QDateTime(QDate(2008, 6, 27), QTime(13, 58, 10), Qt::LocalTime));
+ }
+
+ dt1.setTime_t(0x7FFFFFFF);
+ QCOMPARE(dt1, QDateTime(QDate(2038, 1, 19), QTime(3, 14, 7), Qt::UTC));
+ if (europeanTimeZone) {
+ QDateTime dt2;
+ dt2.setTime_t(0x7FFFFFFF);
+ QCOMPARE(dt2, QDateTime(QDate(2038, 1, 19), QTime(4, 14, 7), Qt::LocalTime));
+ }
+}
+
+void tst_QDateTime::setMSecsSinceEpoch_data()
+{
+ QTest::addColumn<qint64>("msecs");
+ QTest::addColumn<QDateTime>("utc");
+ QTest::addColumn<QDateTime>("european");
+
+ QTest::newRow("zero")
+ << Q_INT64_C(0)
+ << QDateTime(QDate(1970, 1, 1), QTime(), Qt::UTC)
+ << QDateTime(QDate(1970, 1, 1), QTime(1, 0));
+ QTest::newRow("-1")
+ << Q_INT64_C(-1)
+ << QDateTime(QDate(1969, 12, 31), QTime(23, 59, 59, 999), Qt::UTC)
+ << QDateTime(QDate(1970, 1, 1), QTime(0, 59, 59, 999));
+ QTest::newRow("123456789")
+ << Q_INT64_C(123456789)
+ << QDateTime(QDate(1970, 1, 2), QTime(10, 17, 36, 789), Qt::UTC)
+ << QDateTime(QDate(1970, 1, 2), QTime(11, 17, 36, 789), Qt::LocalTime);
+ QTest::newRow("-123456789")
+ << Q_INT64_C(-123456789)
+ << QDateTime(QDate(1969, 12, 30), QTime(13, 42, 23, 211), Qt::UTC)
+ << QDateTime(QDate(1969, 12, 30), QTime(14, 42, 23, 211), Qt::LocalTime);
+ QTest::newRow("non-time_t")
+ << (Q_INT64_C(1000) << 32)
+ << QDateTime(QDate(2106, 2, 7), QTime(6, 28, 16), Qt::UTC)
+ << QDateTime(QDate(2106, 2, 7), QTime(7, 28, 16));
+ QTest::newRow("very-large")
+ << (Q_INT64_C(123456) << 32)
+ << QDateTime(QDate(18772, 8, 15), QTime(1, 8, 14, 976), Qt::UTC)
+ << QDateTime(QDate(18772, 8, 15), QTime(3, 8, 14, 976));
+ QTest::newRow("min_date") // julian day 0 is an invalid date for QDate
+ << Q_INT64_C(-210866716800000)
+ << QDateTime(QDate::fromJulianDay(1), QTime(), Qt::UTC)
+ << QDateTime(QDate::fromJulianDay(1), QTime(1, 0));
+ QTest::newRow("max_date") // technically jd is unsigned, but fromJulianDay takes int
+ << Q_INT64_C(185331720376799999)
+ << QDateTime(QDate::fromJulianDay(0x7fffffff), QTime(21, 59, 59, 999), Qt::UTC)
+ << QDateTime(QDate::fromJulianDay(0x7fffffff), QTime(23, 59, 59, 999));
+}
+
+void tst_QDateTime::setMSecsSinceEpoch()
+{
+ QFETCH(qint64, msecs);
+ QFETCH(QDateTime, utc);
+ QFETCH(QDateTime, european);
+
+ QDateTime dt;
+ dt.setTimeSpec(Qt::UTC);
+ dt.setMSecsSinceEpoch(msecs);
+
+ QCOMPARE(dt, utc);
+ if (europeanTimeZone) {
+ QCOMPARE(dt.toLocalTime(), european);
+ }
+
+ QCOMPARE(dt.toMSecsSinceEpoch(), msecs);
+
+ if (quint64(msecs / 1000) < 0xFFFFFFFF) {
+ QCOMPARE(qint64(dt.toTime_t()), msecs / 1000);
+ }
+
+ QDateTime reference(QDate(1970, 1, 1), QTime(), Qt::UTC);
+ QCOMPARE(dt, reference.addMSecs(msecs));
+}
+
+void tst_QDateTime::toString_isoDate_data()
+{
+ QTest::addColumn<QDateTime>("dt");
+ QTest::addColumn<QString>("formatted");
+
+ QTest::newRow("localtime")
+ << QDateTime(QDate(1978, 11, 9), QTime(13, 28, 34))
+ << QString("1978-11-09T13:28:34");
+ QTest::newRow("UTC")
+ << QDateTime(QDate(1978, 11, 9), QTime(13, 28, 34), Qt::UTC)
+ << QString("1978-11-09T13:28:34Z");
+ QDateTime dt(QDate(1978, 11, 9), QTime(13, 28, 34));
+ dt.setUtcOffset(19800);
+ QTest::newRow("positive OffsetFromUTC")
+ << dt
+ << QString("1978-11-09T13:28:34+05:30");
+ dt.setUtcOffset(-7200);
+ QTest::newRow("negative OffsetFromUTC")
+ << dt
+ << QString("1978-11-09T13:28:34-02:00");
+}
+
+void tst_QDateTime::toString_isoDate()
+{
+ QFETCH(QDateTime, dt);
+ QFETCH(QString, formatted);
+
+ QCOMPARE(dt.toString(Qt::ISODate), formatted);
+}
+
+void tst_QDateTime::toString_enumformat()
+{
+ QDateTime dt1(QDate(1995, 5, 20), QTime(12, 34, 56));
+
+
+ QString str1 = dt1.toString(Qt::TextDate);
+ QVERIFY(!str1.isEmpty()); // It's locale dependent everywhere
+
+ QString str2 = dt1.toString(Qt::ISODate);
+ QCOMPARE(str2, QString("1995-05-20T12:34:56"));
+
+ QString str3 = dt1.toString(Qt::LocalDate);
+ qDebug() << str3;
+ QVERIFY(!str3.isEmpty());
+ //check for date/time components in any order
+ //year may be 2 or 4 digits
+ QVERIFY(str3.contains("95"));
+ //day and month may be in numeric or word form
+ QVERIFY(str3.contains("12"));
+ QVERIFY(str3.contains("34"));
+ //seconds may be absent
+}
+
+void tst_QDateTime::addDays()
+{
+ for (int pass = 0; pass < 2; ++pass) {
+ QDateTime dt(QDate(2004, 1, 1), QTime(12, 34, 56), pass == 0 ? Qt::LocalTime : Qt::UTC);
+ dt = dt.addDays(185);
+ QVERIFY(dt.date().year() == 2004 && dt.date().month() == 7 && dt.date().day() == 4);
+ QVERIFY(dt.time().hour() == 12 && dt.time().minute() == 34 && dt.time().second() == 56
+ && dt.time().msec() == 0);
+ QCOMPARE(dt.timeSpec(), (pass == 0 ? Qt::LocalTime : Qt::UTC));
+
+ dt = dt.addDays(-185);
+ QCOMPARE(dt.date(), QDate(2004, 1, 1));
+ QCOMPARE(dt.time(), QTime(12, 34, 56));
+ }
+
+ QDateTime dt(QDate(1752, 9, 14), QTime(12, 34, 56));
+ while (dt.date().year() < 8000) {
+ int year = dt.date().year();
+ if (QDate::isLeapYear(year + 1))
+ dt = dt.addDays(366);
+ else
+ dt = dt.addDays(365);
+ QCOMPARE(dt.date(), QDate(year + 1, 9, 14));
+ QCOMPARE(dt.time(), QTime(12, 34, 56));
+ }
+
+ // ### test invalid QDateTime()
+}
+
+
+void tst_QDateTime::addMonths_data()
+{
+ QTest::addColumn<int>("months");
+ QTest::addColumn<QDate>("dt");
+
+ QTest::newRow("-15") << -15 << QDate(2002, 10, 31);
+ QTest::newRow("-14") << -14 << QDate(2002, 11, 30);
+ QTest::newRow("-13") << -13 << QDate(2002, 12, 31);
+ QTest::newRow("-12") << -12 << QDate(2003, 1, 31);
+
+ QTest::newRow("-11") << -11 << QDate(2003, 2, 28);
+ QTest::newRow("-10") << -10 << QDate(2003, 3, 31);
+ QTest::newRow("-9") << -9 << QDate(2003, 4, 30);
+ QTest::newRow("-8") << -8 << QDate(2003, 5, 31);
+ QTest::newRow("-7") << -7 << QDate(2003, 6, 30);
+ QTest::newRow("-6") << -6 << QDate(2003, 7, 31);
+ QTest::newRow("-5") << -5 << QDate(2003, 8, 31);
+ QTest::newRow("-4") << -4 << QDate(2003, 9, 30);
+ QTest::newRow("-3") << -3 << QDate(2003, 10, 31);
+ QTest::newRow("-2") << -2 << QDate(2003, 11, 30);
+ QTest::newRow("-1") << -1 << QDate(2003, 12, 31);
+ QTest::newRow("0") << 0 << QDate(2004, 1, 31);
+ QTest::newRow("1") << 1 << QDate(2004, 2, 29);
+ QTest::newRow("2") << 2 << QDate(2004, 3, 31);
+ QTest::newRow("3") << 3 << QDate(2004, 4, 30);
+ QTest::newRow("4") << 4 << QDate(2004, 5, 31);
+ QTest::newRow("5") << 5 << QDate(2004, 6, 30);
+ QTest::newRow("6") << 6 << QDate(2004, 7, 31);
+ QTest::newRow("7") << 7 << QDate(2004, 8, 31);
+ QTest::newRow("8") << 8 << QDate(2004, 9, 30);
+ QTest::newRow("9") << 9 << QDate(2004, 10, 31);
+ QTest::newRow("10") << 10 << QDate(2004, 11, 30);
+ QTest::newRow("11") << 11 << QDate(2004, 12, 31);
+ QTest::newRow("12") << 12 << QDate(2005, 1, 31);
+ QTest::newRow("13") << 13 << QDate(2005, 2, 28);
+ QTest::newRow("14") << 14 << QDate(2005, 3, 31);
+ QTest::newRow("15") << 15 << QDate(2005, 4, 30);
+}
+
+void tst_QDateTime::addMonths()
+{
+ QFETCH(QDate, dt);
+ QFETCH(int, months);
+
+ QDateTime start(QDate(2004, 1, 31), QTime(12, 34, 56));
+ QCOMPARE(start.addMonths(months).date(), dt);
+ QCOMPARE(start.addMonths(months).time(), QTime(12, 34, 56));
+}
+
+void tst_QDateTime::addYears_data()
+{
+ QTest::addColumn<int>("years1");
+ QTest::addColumn<int>("years2");
+ QTest::addColumn<QDate>("start");
+ QTest::addColumn<QDate>("dt");
+
+ QTest::newRow("0") << 0 << 0 << QDate(1752, 9, 14) << QDate(1752, 9, 14);
+ QTest::newRow("4000 - 4000") << 4000 << -4000 << QDate(1752, 9, 14) << QDate(1752, 9, 14);
+ QTest::newRow("10") << 10 << 0 << QDate(1752, 9, 14) << QDate(1762, 9, 14);
+ QTest::newRow("0 leap year") << 0 << 0 << QDate(1760, 2, 29) << QDate(1760, 2, 29);
+ QTest::newRow("1 leap year") << 1 << 0 << QDate(1760, 2, 29) << QDate(1761, 2, 28);
+ QTest::newRow("2 leap year") << 2 << 0 << QDate(1760, 2, 29) << QDate(1762, 2, 28);
+ QTest::newRow("3 leap year") << 3 << 0 << QDate(1760, 2, 29) << QDate(1763, 2, 28);
+ QTest::newRow("4 leap year") << 4 << 0 << QDate(1760, 2, 29) << QDate(1764, 2, 29);
+
+ QTest::newRow("toNegative1") << -2000 << 0 << QDate(1752, 9, 14) << QDate(-249, 9, 14);
+ QTest::newRow("toNegative2") << -1752 << 0 << QDate(1752, 9, 14) << QDate(-1, 9, 14);
+ QTest::newRow("toNegative3") << -1751 << 0 << QDate(1752, 9, 14) << QDate(1, 9, 14);
+ QTest::newRow("toPositive1") << 2000 << 0 << QDate(-1752, 9, 14) << QDate(249, 9, 14);
+ QTest::newRow("toPositive2") << 1752 << 0 << QDate(-1752, 9, 14) << QDate(1, 9, 14);
+ QTest::newRow("toPositive3") << 1751 << 0 << QDate(-1752, 9, 14) << QDate(-1, 9, 14);
+}
+
+void tst_QDateTime::addYears()
+{
+ QFETCH(int, years1);
+ QFETCH(int, years2);
+ QFETCH(QDate, start);
+ QFETCH(QDate, dt);
+
+ QDateTime startdt(start, QTime(14, 25, 36));
+ QCOMPARE(startdt.addYears(years1).addYears(years2).date(), dt);
+ QCOMPARE(startdt.addYears(years1).addYears(years2).time(), QTime(14, 25, 36));
+}
+
+void tst_QDateTime::addSecs_data()
+{
+ QTest::addColumn<QDateTime>("dt");
+ QTest::addColumn<int>("nsecs");
+ QTest::addColumn<QDateTime>("result");
+
+ QTime standardTime(12, 34, 56);
+ QTime daylightTime(13, 34, 56);
+
+ QTest::newRow("utc0") << QDateTime(QDate(2004, 1, 1), standardTime, Qt::UTC) << 86400
+ << QDateTime(QDate(2004, 1, 2), standardTime, Qt::UTC);
+ QTest::newRow("utc1") << QDateTime(QDate(2004, 1, 1), standardTime, Qt::UTC) << (86400 * 185)
+ << QDateTime(QDate(2004, 7, 4), standardTime, Qt::UTC);
+ QTest::newRow("utc2") << QDateTime(QDate(2004, 1, 1), standardTime, Qt::UTC) << (86400 * 366)
+ << QDateTime(QDate(2005, 1, 1), standardTime, Qt::UTC);
+ QTest::newRow("utc3") << QDateTime(QDate(1760, 1, 1), standardTime, Qt::UTC) << 86400
+ << QDateTime(QDate(1760, 1, 2), standardTime, Qt::UTC);
+ QTest::newRow("utc4") << QDateTime(QDate(1760, 1, 1), standardTime, Qt::UTC) << (86400 * 185)
+ << QDateTime(QDate(1760, 7, 4), standardTime, Qt::UTC);
+ QTest::newRow("utc5") << QDateTime(QDate(1760, 1, 1), standardTime, Qt::UTC) << (86400 * 366)
+ << QDateTime(QDate(1761, 1, 1), standardTime, Qt::UTC);
+ QTest::newRow("utc6") << QDateTime(QDate(4000, 1, 1), standardTime, Qt::UTC) << 86400
+ << QDateTime(QDate(4000, 1, 2), standardTime, Qt::UTC);
+ QTest::newRow("utc7") << QDateTime(QDate(4000, 1, 1), standardTime, Qt::UTC) << (86400 * 185)
+ << QDateTime(QDate(4000, 7, 4), standardTime, Qt::UTC);
+ QTest::newRow("utc8") << QDateTime(QDate(4000, 1, 1), standardTime, Qt::UTC) << (86400 * 366)
+ << QDateTime(QDate(4001, 1, 1), standardTime, Qt::UTC);
+ QTest::newRow("utc9") << QDateTime(QDate(4000, 1, 1), standardTime, Qt::UTC) << 0
+ << QDateTime(QDate(4000, 1, 1), standardTime, Qt::UTC);
+
+ if (europeanTimeZone) {
+ QTest::newRow("cet0") << QDateTime(QDate(2004, 1, 1), standardTime, Qt::LocalTime) << 86400
+ << QDateTime(QDate(2004, 1, 2), standardTime, Qt::LocalTime);
+ QTest::newRow("cet1") << QDateTime(QDate(2004, 1, 1), standardTime, Qt::LocalTime) << (86400 * 185)
+ << QDateTime(QDate(2004, 7, 4), daylightTime, Qt::LocalTime);
+ QTest::newRow("cet2") << QDateTime(QDate(2004, 1, 1), standardTime, Qt::LocalTime) << (86400 * 366)
+ << QDateTime(QDate(2005, 1, 1), standardTime, Qt::LocalTime);
+ QTest::newRow("cet3") << QDateTime(QDate(1760, 1, 1), standardTime, Qt::LocalTime) << 86400
+ << QDateTime(QDate(1760, 1, 2), standardTime, Qt::LocalTime);
+#ifdef Q_OS_WIN
+ // QDateTime uses 1980 on Windows, which did have daylight savings in July
+ QTest::newRow("cet4") << QDateTime(QDate(1760, 1, 1), standardTime, Qt::LocalTime) << (86400 * 185)
+ << QDateTime(QDate(1760, 7, 4), daylightTime, Qt::LocalTime);
+#else
+ // QDateTime uses 1970 everywhere else, which did NOT have daylight savings in July
+ QTest::newRow("cet4") << QDateTime(QDate(1760, 1, 1), standardTime, Qt::LocalTime) << (86400 * 185)
+ << QDateTime(QDate(1760, 7, 4), standardTime, Qt::LocalTime);
+#endif
+ QTest::newRow("cet5") << QDateTime(QDate(1760, 1, 1), standardTime, Qt::LocalTime) << (86400 * 366)
+ << QDateTime(QDate(1761, 1, 1), standardTime, Qt::LocalTime);
+ QTest::newRow("cet6") << QDateTime(QDate(4000, 1, 1), standardTime, Qt::LocalTime) << 86400
+ << QDateTime(QDate(4000, 1, 2), standardTime, Qt::LocalTime);
+ QTest::newRow("cet7") << QDateTime(QDate(4000, 1, 1), standardTime, Qt::LocalTime) << (86400 * 185)
+ << QDateTime(QDate(4000, 7, 4), daylightTime, Qt::LocalTime);
+ QTest::newRow("cet8") << QDateTime(QDate(4000, 1, 1), standardTime, Qt::LocalTime) << (86400 * 366)
+ << QDateTime(QDate(4001, 1, 1), standardTime, Qt::LocalTime);
+ QTest::newRow("cet9") << QDateTime(QDate(4000, 1, 1), standardTime, Qt::LocalTime) << 0
+ << QDateTime(QDate(4000, 1, 1), standardTime, Qt::LocalTime);
+ }
+
+ // Year sign change
+ QTest::newRow("toNegative") << QDateTime(QDate(1, 1, 1), QTime(0, 0, 0), Qt::UTC)
+ << -1
+ << QDateTime(QDate(-1, 12, 31), QTime(23, 59, 59), Qt::UTC);
+ QTest::newRow("toPositive") << QDateTime(QDate(-1, 12, 31), QTime(23, 59, 59), Qt::UTC)
+ << 1
+ << QDateTime(QDate(1, 1, 1), QTime(0, 0, 0), Qt::UTC);
+
+ // Gregorian/Julian switchover
+ QTest::newRow("toGregorian") << QDateTime(QDate(1582, 10, 4), QTime(23, 59, 59))
+ << 1
+ << QDateTime(QDate(1582, 10, 15), QTime(0, 0, 0));
+ QTest::newRow("toJulian") << QDateTime(QDate(1582, 10, 15), QTime(0, 0, 0))
+ << -1
+ << QDateTime(QDate(1582, 10, 4), QTime(23, 59, 59));
+}
+
+void tst_QDateTime::addSecs()
+{
+ QFETCH(QDateTime, dt);
+ QFETCH(int, nsecs);
+ QFETCH(QDateTime, result);
+
+#ifdef Q_OS_IRIX
+ QEXPECT_FAIL("cet4", "IRIX databases say 1970 had DST", Abort);
+#endif
+ QCOMPARE(dt.addSecs(nsecs), result);
+ QCOMPARE(result.addSecs(-nsecs), dt);
+}
+
+void tst_QDateTime::addMSecs_data()
+{
+ addSecs_data();
+}
+
+void tst_QDateTime::addMSecs()
+{
+ QFETCH(QDateTime, dt);
+ QFETCH(int, nsecs);
+ QFETCH(QDateTime, result);
+
+#ifdef Q_OS_IRIX
+ QEXPECT_FAIL("cet4", "IRIX databases say 1970 had DST", Abort);
+#endif
+ QCOMPARE(dt.addMSecs(qint64(nsecs) * 1000), result);
+ QCOMPARE(result.addMSecs(qint64(-nsecs) * 1000), dt);
+}
+
+void tst_QDateTime::toTimeSpec_data()
+{
+ QTest::addColumn<QDateTime>("utc");
+ QTest::addColumn<QDateTime>("local");
+
+ QTime utcTime(4, 20, 30);
+ QTime localStandardTime(5, 20, 30);
+ QTime localDaylightTime(6, 20, 30);
+
+ QTest::newRow("winter1") << QDateTime(QDate(2004, 1, 1), utcTime, Qt::UTC)
+ << QDateTime(QDate(2004, 1, 1), localStandardTime, Qt::LocalTime);
+ QTest::newRow("winter2") << QDateTime(QDate(2004, 2, 29), utcTime, Qt::UTC)
+ << QDateTime(QDate(2004, 2, 29), localStandardTime, Qt::LocalTime);
+ QTest::newRow("winter3") << QDateTime(QDate(1760, 2, 29), utcTime, Qt::UTC)
+ << QDateTime(QDate(1760, 2, 29), localStandardTime, Qt::LocalTime);
+ QTest::newRow("winter4") << QDateTime(QDate(6000, 2, 29), utcTime, Qt::UTC)
+ << QDateTime(QDate(6000, 2, 29), localStandardTime, Qt::LocalTime);
+
+ if (europeanTimeZone) {
+ QTest::newRow("summer1") << QDateTime(QDate(2004, 6, 30), utcTime, Qt::UTC)
+ << QDateTime(QDate(2004, 6, 30), localDaylightTime, Qt::LocalTime);
+#ifdef Q_OS_WIN
+ // QDateTime uses 1980 on Windows, which did have daylight savings in July
+ QTest::newRow("summer2") << QDateTime(QDate(1760, 6, 30), utcTime, Qt::UTC)
+ << QDateTime(QDate(1760, 6, 30), localDaylightTime, Qt::LocalTime);
+#else
+ // QDateTime uses 1970 everywhere else, which did NOT have daylight savings in July
+ QTest::newRow("summer2") << QDateTime(QDate(1760, 6, 30), utcTime, Qt::UTC)
+ << QDateTime(QDate(1760, 6, 30), localStandardTime, Qt::LocalTime);
+#endif
+ QTest::newRow("summer3") << QDateTime(QDate(4000, 6, 30), utcTime, Qt::UTC)
+ << QDateTime(QDate(4000, 6, 30), localDaylightTime, Qt::LocalTime);
+ }
+
+ QTest::newRow("msec") << QDateTime(QDate(4000, 6, 30), utcTime.addMSecs(1), Qt::UTC)
+ << QDateTime(QDate(4000, 6, 30), localDaylightTime.addMSecs(1), Qt::LocalTime);
+}
+
+void tst_QDateTime::toTimeSpec()
+{
+ if (europeanTimeZone) {
+ QFETCH(QDateTime, utc);
+ QFETCH(QDateTime, local);
+
+ QCOMPARE(utc.toTimeSpec(Qt::UTC), utc);
+ QCOMPARE(local.toTimeSpec(Qt::LocalTime), local);
+#ifdef Q_OS_IRIX
+ QEXPECT_FAIL("summer2", "IRIX databases say 1970 had DST", Abort);
+#endif
+ QCOMPARE(utc.toTimeSpec(Qt::LocalTime), local);
+ QCOMPARE(local.toTimeSpec(Qt::UTC), utc);
+ QCOMPARE(utc.toTimeSpec(Qt::UTC), local.toTimeSpec(Qt::UTC));
+ QCOMPARE(utc.toTimeSpec(Qt::LocalTime), local.toTimeSpec(Qt::LocalTime));
+ } else {
+ QSKIP("Not tested with timezone other than Central European (CET/CST)", SkipAll);
+ }
+}
+
+void tst_QDateTime::toLocalTime_data()
+{
+ toTimeSpec_data();
+}
+
+void tst_QDateTime::toLocalTime()
+{
+ if (europeanTimeZone) {
+ QFETCH(QDateTime, utc);
+ QFETCH(QDateTime, local);
+
+ QCOMPARE(local.toLocalTime(), local);
+#ifdef Q_OS_IRIX
+ QEXPECT_FAIL("summer2", "IRIX databases say 1970 had DST", Abort);
+#endif
+ QCOMPARE(utc.toLocalTime(), local);
+ QCOMPARE(utc.toLocalTime(), local.toLocalTime());
+ } else {
+ QSKIP("Not tested with timezone other than Central European (CET/CST)", SkipAll);
+ }
+}
+
+void tst_QDateTime::toUTC_data()
+{
+ toTimeSpec_data();
+}
+
+void tst_QDateTime::toUTC()
+{
+ if (europeanTimeZone) {
+ QFETCH(QDateTime, utc);
+ QFETCH(QDateTime, local);
+
+ QCOMPARE(utc.toUTC(), utc);
+#ifdef Q_OS_IRIX
+ QEXPECT_FAIL("summer2", "IRIX databases say 1970 had DST", Abort);
+#endif
+ QCOMPARE(local.toUTC(), utc);
+ QCOMPARE(utc.toUTC(), local.toUTC());
+ } else {
+ QSKIP("Not tested with timezone other than Central European (CET/CST)", SkipAll);
+ }
+
+ // To make sure bug 72713 never happens again
+ QDateTime dt = QDateTime::currentDateTime();
+ if(dt.time().msec() == 0){
+ dt.setTime(dt.time().addMSecs(1));
+ }
+ QString s = dt.toString("zzz");
+ QString t = dt.toUTC().toString("zzz");
+ QCOMPARE(s, t);
+}
+
+void tst_QDateTime::daysTo()
+{
+ QDateTime dt1(QDate(1760, 1, 2), QTime());
+ QDateTime dt2(QDate(1760, 2, 2), QTime());
+ QDateTime dt3(QDate(1760, 3, 2), QTime());
+
+ QCOMPARE(dt1.daysTo(dt2), 31);
+ QCOMPARE(dt1.addDays(31), dt2);
+
+ QCOMPARE(dt2.daysTo(dt3), 29);
+ QCOMPARE(dt2.addDays(29), dt3);
+
+ QCOMPARE(dt1.daysTo(dt3), 60);
+ QCOMPARE(dt1.addDays(60), dt3);
+
+ QCOMPARE(dt2.daysTo(dt1), -31);
+ QCOMPARE(dt2.addDays(-31), dt1);
+
+ QCOMPARE(dt3.daysTo(dt2), -29);
+ QCOMPARE(dt3.addDays(-29), dt2);
+
+ QCOMPARE(dt3.daysTo(dt1), -60);
+ QCOMPARE(dt3.addDays(-60), dt1);
+}
+
+void tst_QDateTime::secsTo_data()
+{
+ addSecs_data();
+}
+
+void tst_QDateTime::secsTo()
+{
+ QFETCH(QDateTime, dt);
+ QFETCH(int, nsecs);
+ QFETCH(QDateTime, result);
+
+#ifdef Q_OS_IRIX
+ QEXPECT_FAIL("cet4", "IRIX databases say 1970 had DST", Abort);
+#endif
+ QCOMPARE(dt.secsTo(result), nsecs);
+ QCOMPARE(result.secsTo(dt), -nsecs);
+ QVERIFY((dt == result) == (0 == nsecs));
+ QVERIFY((dt != result) == (0 != nsecs));
+ QVERIFY((dt < result) == (0 < nsecs));
+ QVERIFY((dt <= result) == (0 <= nsecs));
+ QVERIFY((dt > result) == (0 > nsecs));
+ QVERIFY((dt >= result) == (0 >= nsecs));
+}
+
+void tst_QDateTime::msecsTo_data()
+{
+ addMSecs_data();
+}
+
+void tst_QDateTime::msecsTo()
+{
+ QFETCH(QDateTime, dt);
+ QFETCH(int, nsecs);
+ QFETCH(QDateTime, result);
+
+#ifdef Q_OS_IRIX
+ QEXPECT_FAIL("cet4", "IRIX databases say 1970 had DST", Abort);
+#endif
+ QCOMPARE(dt.msecsTo(result), qint64(nsecs) * 1000);
+ QCOMPARE(result.msecsTo(dt), -qint64(nsecs) * 1000);
+ QVERIFY((dt == result) == (0 == (qint64(nsecs) * 1000)));
+ QVERIFY((dt != result) == (0 != (qint64(nsecs) * 1000)));
+ QVERIFY((dt < result) == (0 < (qint64(nsecs) * 1000)));
+ QVERIFY((dt <= result) == (0 <= (qint64(nsecs) * 1000)));
+ QVERIFY((dt > result) == (0 > (qint64(nsecs) * 1000)));
+ QVERIFY((dt >= result) == (0 >= (qint64(nsecs) * 1000)));
+}
+
+void tst_QDateTime::currentDateTime()
+{
+#if defined(Q_OS_WINCE)
+ __time64_t buf1, buf2;
+ ::_time64(&buf1);
+#else
+ time_t buf1, buf2;
+ ::time(&buf1);
+#endif
+ QDateTime lowerBound;
+ lowerBound.setTime_t(buf1);
+
+ QDateTime dt1 = QDateTime::currentDateTime();
+ QDateTime dt2 = QDateTime::currentDateTime().toLocalTime();
+ QDateTime dt3 = QDateTime::currentDateTime().toUTC();
+
+#if defined(Q_OS_WINCE)
+ ::_time64(&buf2);
+#else
+ ::time(&buf2);
+#endif
+ QDateTime upperBound;
+ upperBound.setTime_t(buf2);
+ // Note we must add 2 seconds here because time() may return up to
+ // 1 second difference from the more accurate method used by QDateTime::currentDateTime()
+ upperBound = upperBound.addSecs(2);
+
+ QString details = QString("\n"
+ "lowerBound: %1\n"
+ "dt1: %2\n"
+ "dt2: %3\n"
+ "dt3: %4\n"
+ "upperBound: %5\n")
+ .arg(lowerBound.toTime_t())
+ .arg(dt1.toTime_t())
+ .arg(dt2.toTime_t())
+ .arg(dt3.toTime_t())
+ .arg(upperBound.toTime_t());
+
+ QVERIFY2(lowerBound < upperBound, qPrintable(details));
+
+ QVERIFY2(lowerBound <= dt1, qPrintable(details));
+ QVERIFY2(dt1 < upperBound, qPrintable(details));
+ QVERIFY2(lowerBound <= dt2, qPrintable(details));
+ QVERIFY2(dt2 < upperBound, qPrintable(details));
+ QVERIFY2(lowerBound <= dt3, qPrintable(details));
+ QVERIFY2(dt3 < upperBound, qPrintable(details));
+
+ QVERIFY(dt1.timeSpec() == Qt::LocalTime);
+ QVERIFY(dt2.timeSpec() == Qt::LocalTime);
+ QVERIFY(dt3.timeSpec() == Qt::UTC);
+}
+
+void tst_QDateTime::currentDateTimeUtc()
+{
+#if defined(Q_OS_WINCE)
+ __time64_t buf1, buf2;
+ ::_time64(&buf1);
+#else
+ time_t buf1, buf2;
+ ::time(&buf1);
+#endif
+ QDateTime lowerBound;
+ lowerBound.setTime_t(buf1);
+
+ QDateTime dt1 = QDateTime::currentDateTimeUtc();
+ QDateTime dt2 = QDateTime::currentDateTimeUtc().toLocalTime();
+ QDateTime dt3 = QDateTime::currentDateTimeUtc().toUTC();
+
+#if defined(Q_OS_WINCE)
+ ::_time64(&buf2);
+#else
+ ::time(&buf2);
+#endif
+ QDateTime upperBound;
+ upperBound.setTime_t(buf2);
+ // Note we must add 2 seconds here because time() may return up to
+ // 1 second difference from the more accurate method used by QDateTime::currentDateTime()
+ upperBound = upperBound.addSecs(2);
+
+ QString details = QString("\n"
+ "lowerBound: %1\n"
+ "dt1: %2\n"
+ "dt2: %3\n"
+ "dt3: %4\n"
+ "upperBound: %5\n")
+ .arg(lowerBound.toTime_t())
+ .arg(dt1.toTime_t())
+ .arg(dt2.toTime_t())
+ .arg(dt3.toTime_t())
+ .arg(upperBound.toTime_t());
+
+ QVERIFY2(lowerBound < upperBound, qPrintable(details));
+
+ QVERIFY2(lowerBound <= dt1, qPrintable(details));
+ QVERIFY2(dt1 < upperBound, qPrintable(details));
+ QVERIFY2(lowerBound <= dt2, qPrintable(details));
+ QVERIFY2(dt2 < upperBound, qPrintable(details));
+ QVERIFY2(lowerBound <= dt3, qPrintable(details));
+ QVERIFY2(dt3 < upperBound, qPrintable(details));
+
+ QVERIFY(dt1.timeSpec() == Qt::UTC);
+ QVERIFY(dt2.timeSpec() == Qt::LocalTime);
+ QVERIFY(dt3.timeSpec() == Qt::UTC);
+}
+
+void tst_QDateTime::currentDateTimeUtc2()
+{
+ QDateTime local, utc;
+ qint64 msec;
+
+ // check that we got all down to the same milliseconds
+ int i = 2;
+ bool ok = false;
+ do {
+ local = QDateTime::currentDateTime();
+ utc = QDateTime::currentDateTimeUtc();
+ msec = QDateTime::currentMSecsSinceEpoch();
+ ok = local.time().msec() == utc.time().msec()
+ && utc.time().msec() == (msec % 1000);
+ } while (--i && !ok);
+
+ if (!i)
+ QSKIP("Failed to get the dates within 1 ms of each other", SkipAll);
+
+ // seconds and milliseconds should be the same:
+ QCOMPARE(utc.time().second(), local.time().second());
+ QCOMPARE(utc.time().msec(), local.time().msec());
+ QCOMPARE(msec % 1000, qint64(local.time().msec()));
+ QCOMPARE(msec / 1000 % 60, qint64(local.time().second()));
+
+ // the two dates should be equal, actually
+ QCOMPARE(local.toUTC(), utc);
+ QCOMPARE(utc.toLocalTime(), local);
+
+ // and finally, the time_t should equal our number
+ QCOMPARE(qint64(utc.toTime_t()), msec / 1000);
+ QCOMPARE(qint64(local.toTime_t()), msec / 1000);
+ QCOMPARE(utc.toMSecsSinceEpoch(), msec);
+ QCOMPARE(local.toMSecsSinceEpoch(), msec);
+}
+
+void tst_QDateTime::toTime_t_data()
+{
+ QTest::addColumn<QString>("dateTimeStr");
+ QTest::addColumn<bool>("res");
+
+ QTest::newRow( "data1" ) << str( 1800, 1, 1, 12, 0, 0 ) << false;
+ QTest::newRow( "data2" ) << str( 1969, 1, 1, 12, 0, 0 ) << false;
+ QTest::newRow( "data3" ) << str( 2002, 1, 1, 12, 0, 0 ) << true;
+ QTest::newRow( "data4" ) << str( 2002, 6, 1, 12, 0, 0 ) << true;
+ QTest::newRow( "data5" ) << QString("INVALID") << false;
+ QTest::newRow( "data6" ) << str( 2038, 1, 1, 12, 0, 0 ) << true;
+ QTest::newRow( "data7" ) << str( 2063, 4, 5, 12, 0, 0 ) << true; // the day of First Contact
+ QTest::newRow( "data8" ) << str( 2107, 1, 1, 12, 0, 0 )
+ << bool( sizeof(uint) > 32 && sizeof(time_t) > 32 );
+}
+
+void tst_QDateTime::toTime_t()
+{
+ QFETCH( QString, dateTimeStr );
+ QDateTime datetime = dt( dateTimeStr );
+
+ uint asTime_t = datetime.toTime_t();
+ QFETCH( bool, res );
+ if (res) {
+ QVERIFY( asTime_t != (uint)-1 );
+ } else {
+ QVERIFY( asTime_t == (uint)-1 );
+ }
+
+ if ( asTime_t != (uint) -1 ) {
+ QDateTime datetime2 = QDateTime::fromTime_t( asTime_t );
+ QCOMPARE(datetime, datetime2);
+ }
+}
+
+void tst_QDateTime::task_137698()
+{
+ // This bug is caused by QDateTime knowing more than it lets show
+ // Internally, if it knows, QDateTime stores a flag indicating if the time is
+ // DST or not. If it doesn't, it sets to "LocalUnknown"
+ //
+ // The problem happens if you start with a date in DST and then move to a date
+ // outside it (or vice-versa). Some functions did not reset the flag, which caused
+ // weird 1-hour jumps in time when addSecs() was called.
+
+ // WARNING: This test only works if there's a Daylight Savings Time change
+ // in the current locale between 2006-11-06 and 2006-10-16
+ // This is true for Central European Time
+
+ if (!europeanTimeZone)
+ QSKIP("Not tested with timezone other than Central European (CET/CEST)", SkipAll);
+
+ QDateTime dt = QDateTime(QDate(2006, 11, 6), QTime(0, 0, 0), Qt::LocalTime);
+ dt.setDate(QDate(2006, 10, 16));
+ dt = dt.addSecs(1);
+ QCOMPARE(dt.date(), QDate(2006, 10, 16));
+ QCOMPARE(dt.time(), QTime(0, 0, 1));
+
+ // now using fromTime_t
+ dt = QDateTime::fromTime_t(1162767600); // 2006-11-06 00:00:00 +0100
+ dt.setDate(QDate(2006, 10, 16));
+ dt = dt.addSecs (1);
+ QCOMPARE(dt.date(), QDate(2006, 10, 16));
+ QCOMPARE(dt.time(), QTime(0, 0, 1));
+}
+
+void tst_QDateTime::operator_eqeq()
+{
+ QDateTime dt1(QDate(2004, 1, 2), QTime(2, 2, 3), Qt::LocalTime);
+ QDateTime dt2(QDate(2004, 1, 2), QTime(1, 2, 3), Qt::UTC);
+
+ QVERIFY(dt1 == dt1);
+ QVERIFY(!(dt1 != dt1));
+
+ QVERIFY(dt2 == dt2);
+ QVERIFY(!(dt2 != dt2));
+
+ QVERIFY(dt1 != QDateTime::currentDateTime());
+ QVERIFY(dt2 != QDateTime::currentDateTime());
+
+ QVERIFY(dt1.toUTC() == dt1.toUTC());
+
+ if (europeanTimeZone) {
+ QVERIFY(dt1.toUTC() == dt2);
+ QVERIFY(dt1 == dt2.toLocalTime());
+ }
+}
+
+void tst_QDateTime::toString_strformat_data()
+{
+ QTest::addColumn<QDateTime>("dt");
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QString>("str");
+
+ QTest::newRow( "datetime0" ) << QDateTime() << QString("dd-MM-yyyy hh:mm:ss") << QString();
+ QTest::newRow( "datetime1" ) << QDateTime(QDate(1999, 12, 31), QTime(23, 59, 59, 999))
+ << QString("dd-'mmddyy'MM-yyyy hh:mm:ss.zzz")
+ << QString("31-mmddyy12-1999 23:59:59.999");
+ QTest::newRow( "datetime2" ) << QDateTime(QDate(1999, 12, 31), QTime(23, 59, 59, 999))
+ << QString("dd-'apAP'MM-yyyy hh:mm:ss.zzz")
+ << QString("31-apAP12-1999 23:59:59.999");
+ QTest::newRow( "datetime3" ) << QDateTime(QDate(1999, 12, 31), QTime(23, 59, 59, 999))
+ << QString("Apdd-MM-yyyy hh:mm:ss.zzz")
+ << QString("PMp31-12-1999 11:59:59.999");
+ QTest::newRow( "datetime4" ) << QDateTime(QDate(1999, 12, 31), QTime(23, 59, 59, 999))
+ << QString("'ap'apdd-MM-yyyy 'AP'hh:mm:ss.zzz")
+ << QString("appm31-12-1999 AP11:59:59.999");
+ QTest::newRow( "datetime5" ) << QDateTime(QDate(1999, 12, 31), QTime(23, 59, 59, 999))
+ << QString("'''") << QString("'");
+ QTest::newRow( "datetime6" ) << QDateTime(QDate(1999, 12, 31), QTime(23, 59, 59, 999))
+ << QString("'ap") << QString("ap");
+ QTest::newRow( "datetime7" ) << QDateTime(QDate(1999, 12, 31), QTime(23, 59, 59, 999))
+ << QString("' ' 'hh' hh") << QString(" hh 23");
+ QTest::newRow( "datetime8" ) << QDateTime(QDate(1999, 12, 31), QTime(23, 59, 59, 999))
+ << QString("d'foobar'") << QString("31foobar");
+ QTest::newRow( "datetime9" ) << QDateTime(QDate(1999, 12, 31), QTime(3, 59, 59, 999))
+ << QString("hhhhh") << QString("03033");
+ QTest::newRow( "datetime10" ) << QDateTime(QDate(1999, 12, 31), QTime(3, 59, 59, 999))
+ << QString("hhhhhaA") << QString("03033amAM");
+ QTest::newRow( "datetime11" ) << QDateTime(QDate(1999, 12, 31), QTime(23, 59, 59, 999))
+ << QString("HHHhhhAaAPap") << QString("23231111PMpmPMpm");
+ QTest::newRow( "datetime12" ) << QDateTime(QDate(1999, 12, 31), QTime(3, 59, 59, 999))
+ << QString("HHHhhhAaAPap") << QString("033033AMamAMam");
+ QTest::newRow( "datetime13" ) << QDateTime(QDate(1974, 12, 1), QTime(14, 14, 20))
+ << QString("hh''mm''ss dd''MM''yyyy")
+ << QString("14'14'20 01'12'1974");
+}
+
+void tst_QDateTime::toString_strformat()
+{
+ QFETCH( QDateTime, dt );
+ QFETCH( QString, format );
+ QFETCH( QString, str );
+ QCOMPARE( dt.toString( format ), str );
+}
+
+void tst_QDateTime::fromStringTextDate_data()
+{
+ QTest::addColumn<QString>("dateTime");
+ QTest::addColumn<int>("dateFormat");
+ QTest::addColumn<int>("day");
+ QTest::addColumn<int>("month");
+ QTest::addColumn<int>("year");
+ QTest::addColumn<int>("hour");
+ QTest::addColumn<int>("minute");
+ QTest::addColumn<int>("second");
+ QTest::addColumn<int>("msec");
+ QTest::addColumn<int>("timeSpec");
+
+ QTest::newRow("task27910") << QString("Tue Jun 17 08:00:10 2003")
+ << int(Qt::TextDate)
+ << 17 << 6 << 2003 << 8 << 0 << 10 << 0
+ << int(Qt::LocalTime);
+ QTest::newRow("task77042") << QString("2005-06-28T07:57:30.0010000000Z")
+ << int(Qt::ISODate)
+ << 28 << 6 << 2005 << 7 << 57 << 30 << 1
+ << int(Qt::UTC);
+
+ QTest::newRow("task77042-2") << QString("2005-06-28T07:57:30,0040000000Z")
+ << int(Qt::ISODate)
+ << 28 << 6 << 2005 << 7 << 57 << 30 << 4
+ << int(Qt::UTC);
+
+ QTest::newRow("task77042-3") << QString("2005-06-28T07:57:30,0015Z")
+ << int(Qt::ISODate)
+ << 28 << 6 << 2005 << 7 << 57 << 30 << 2
+ << int(Qt::UTC);
+
+ QTest::newRow("task77042-4") << QString("2005-06-28T07:57:30,0014Z")
+ << int(Qt::ISODate)
+ << 28 << 6 << 2005 << 7 << 57 << 30 << 1
+ << int(Qt::UTC);
+
+ QTest::newRow("task77042-5") << QString("2005-06-28T07:57:30,1Z")
+ << int(Qt::ISODate)
+ << 28 << 6 << 2005 << 7 << 57 << 30 << 100
+ << int(Qt::UTC);
+
+ QTest::newRow("task77042-6") << QString("2005-06-28T07:57:30,11")
+ << int(Qt::ISODate)
+ << 28 << 6 << 2005 << 7 << 57 << 30 << 110
+ << int(Qt::LocalTime);
+
+ QTest::newRow("Year 0999") << QString("Tue Jun 17 08:00:10 0999")
+ << int(Qt::TextDate)
+ << 17 << 6 << 999 << 8 << 0 << 10 << 0
+ << int(Qt::LocalTime);
+
+ QTest::newRow("Year 999") << QString("Tue Jun 17 08:00:10 999")
+ << int(Qt::TextDate)
+ << 17 << 6 << 999 << 8 << 0 << 10 << 0
+ << int(Qt::LocalTime);
+
+ QTest::newRow("Year 12345") << QString("Tue Jun 17 08:00:10 12345")
+ << int(Qt::TextDate)
+ << 17 << 6 << 12345 << 8 << 0 << 10 << 0
+ << int(Qt::LocalTime);
+
+ QTest::newRow("Year -4712") << QString("Tue Jan 1 00:01:02 -4712")
+ << int(Qt::TextDate)
+ << 1 << 1 << -4712 << 0 << 01 << 02 << 0
+ << int(Qt::LocalTime);
+}
+
+void tst_QDateTime::fromStringTextDate()
+{
+ QFETCH(QString, dateTime);
+ QFETCH(int, dateFormat);
+ QFETCH(int, day);
+ QFETCH(int, month);
+ QFETCH(int, year);
+ QFETCH(int, hour);
+ QFETCH(int, minute);
+ QFETCH(int, second);
+ QFETCH(int, msec);
+ QFETCH(int, timeSpec);
+
+ QDateTime dt = QDateTime::fromString(dateTime, (Qt::DateFormat)dateFormat);
+ QCOMPARE(dt.date().day(), day);
+ QCOMPARE(dt.date().month(), month);
+ QCOMPARE(dt.date().year(), year);
+ QCOMPARE(dt.time().hour(), hour);
+ QCOMPARE(dt.time().minute(), minute);
+ QCOMPARE(dt.time().second(), second);
+ QCOMPARE(dt.time().msec(), msec);
+ QCOMPARE(int(dt.timeSpec()), timeSpec);
+}
+
+void tst_QDateTime::dateFromStringFormat_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QDate>("expected");
+
+ //get localized names
+ QString january = QDate::longMonthName(1);
+ QString february = QDate::longMonthName(2);
+ QString march = QDate::longMonthName(3);
+ QString august = QDate::longMonthName(8);
+ QString mon = QDate::shortDayName(1);
+ QString monday = QDate::longDayName(1);
+ QString tuesday = QDate::longDayName(2);
+ QString wednesday = QDate::longDayName(3);
+ QString thursday = QDate::longDayName(4);
+ QString friday = QDate::longDayName(5);
+ QString saturday = QDate::longDayName(6);
+ QString sunday = QDate::longDayName(7);
+
+ QTest::newRow("data0") << QString("") << QString("") << defDate();
+ QTest::newRow("data1") << QString(" ") << QString("") << invalidDate();
+ QTest::newRow("data2") << QString(" ") << QString(" ") << defDate();
+ QTest::newRow("data3") << QString("-%$%#") << QString("$*(#@") << invalidDate();
+ QTest::newRow("data4") << QString("d") << QString("'d'") << defDate();
+ QTest::newRow("data5") << QString("101010") << QString("dMyy") << QDate(1910, 10, 10);
+ QTest::newRow("data6") << QString("101010b") << QString("dMyy") << invalidDate();
+ QTest::newRow("data7") << january << QString("MMMM") << defDate();
+ QTest::newRow("data8") << QString("ball") << QString("balle") << invalidDate();
+ QTest::newRow("data9") << QString("balleh") << QString("balleh") << defDate();
+ QTest::newRow("data10") << QString("10.01.1") << QString("M.dd.d") << QDate(defDate().year(), 10, 1);
+ QTest::newRow("data11") << QString("-1.01.1") << QString("M.dd.d") << invalidDate();
+ QTest::newRow("data12") << QString("11010") << QString("dMMyy") << invalidDate();
+ QTest::newRow("data13") << QString("-2") << QString("d") << invalidDate();
+ QTest::newRow("data14") << QString("132") << QString("Md") << invalidDate();
+ QTest::newRow("data15") << february << QString("MMMM") << QDate(defDate().year(), 2, 1);
+
+ QString date = mon + " " + august + " 8 2005";
+ QTest::newRow("data16") << date << QString("ddd MMMM d yyyy") << QDate(2005, 8, 8);
+ QTest::newRow("data17") << QString("2000:00") << QString("yyyy:yy") << QDate(2000, 1, 1);
+ QTest::newRow("data18") << QString("1999:99") << QString("yyyy:yy") << QDate(1999, 1, 1);
+ QTest::newRow("data19") << QString("2099:99") << QString("yyyy:yy") << QDate(2099, 1, 1);
+ QTest::newRow("data20") << QString("2001:01") << QString("yyyy:yy") << QDate(2001, 1, 1);
+ QTest::newRow("data21") << QString("99") << QString("yy") << QDate(1999, 1, 1);
+ QTest::newRow("data22") << QString("01") << QString("yy") << QDate(1901, 1, 1);
+
+ QTest::newRow("data23") << monday << QString("dddd") << QDate(1900, 1, 1);
+ QTest::newRow("data24") << tuesday << QString("dddd") << QDate(1900, 1, 2);
+ QTest::newRow("data25") << wednesday << QString("dddd") << QDate(1900, 1, 3);
+ QTest::newRow("data26") << thursday << QString("dddd") << QDate(1900, 1, 4);
+ QTest::newRow("data26") << friday << QString("dddd") << QDate(1900, 1, 5);
+ QTest::newRow("data27") << saturday << QString("dddd") << QDate(1900, 1, 6);
+ QTest::newRow("data28") << sunday << QString("dddd") << QDate(1900, 1, 7);
+
+ QTest::newRow("data29") << monday + " 2006" << QString("dddd yyyy") << QDate(2006, 1, 2);
+ QTest::newRow("data30") << tuesday + " 2006" << QString("dddd yyyy") << QDate(2006, 1, 3);
+ QTest::newRow("data31") << wednesday + " 2006" << QString("dddd yyyy") << QDate(2006, 1, 4);
+ QTest::newRow("data32") << thursday + " 2006" << QString("dddd yyyy") << QDate(2006, 1, 5);
+ QTest::newRow("data33") << friday + " 2006" << QString("dddd yyyy") << QDate(2006, 1, 6);
+ QTest::newRow("data34") << saturday + " 2006" << QString("dddd yyyy") << QDate(2006, 1, 7);
+ QTest::newRow("data35") << sunday + " 2006" << QString("dddd yyyy") << QDate(2006, 1, 1);
+
+ QTest::newRow("data36 ") << tuesday + " 2007 " + march << QString("dddd yyyy MMMM") << QDate(2007, 3, 6);
+
+}
+
+
+void tst_QDateTime::dateFromStringFormat()
+{
+ QFETCH(QString, string);
+ QFETCH(QString, format);
+ QFETCH(QDate, expected);
+
+ QDate dt = QDate::fromString(string, format);
+ QCOMPARE(dt, expected);
+}
+
+void tst_QDateTime::timeFromStringFormat_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QTime>("expected");
+
+ QTest::newRow("data0") << QString("1010") << QString("mmm") << QTime(0, 10, 0);
+ QTest::newRow("data1") << QString("00") << QString("hm") << invalidTime();
+ QTest::newRow("data2") << QString("10am") << QString("hap") << QTime(10, 0, 0);
+ QTest::newRow("data3") << QString("10pm") << QString("hap") << QTime(22, 0, 0);
+ QTest::newRow("data4") << QString("10pmam") << QString("hapap") << invalidTime();
+ QTest::newRow("data5") << QString("1070") << QString("hhm") << invalidTime();
+ QTest::newRow("data6") << QString("1011") << QString("hh") << invalidTime();
+ QTest::newRow("data7") << QString("25") << QString("hh") << invalidTime();
+ QTest::newRow("data8") << QString("22pm") << QString("Hap") << QTime(22, 0, 0);
+ QTest::newRow("data9") << QString("2221") << QString("hhhh") << invalidTime();
+}
+
+
+void tst_QDateTime::timeFromStringFormat()
+{
+ QFETCH(QString, string);
+ QFETCH(QString, format);
+ QFETCH(QTime, expected);
+
+ QTime dt = QTime::fromString(string, format);
+ QCOMPARE(dt, expected);
+}
+
+
+void tst_QDateTime::dateTimeFromStringFormat_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QDateTime>("expected");
+
+ QString january = QDate::longMonthName(1);
+ QString oct = QDate::shortMonthName(10);
+ QString december = QDate::longMonthName(12);
+ QString thu = QDate::shortDayName(4);
+ QString fri = QDate::shortDayName(5);
+ QString date = "10 " + oct + " 10";
+
+ QTest::newRow("data0") << QString("101010") << QString("dMyy") << QDateTime(QDate(1910, 10, 10), QTime());
+ QTest::newRow("data1") << QString("1020") << QString("sss") << invalidDateTime();
+ QTest::newRow("data2") << QString("1010") << QString("sss") << QDateTime(defDate(), QTime(0, 0, 10));
+ QTest::newRow("data3") << QString("10hello20") << QString("ss'hello'ss") << invalidDateTime();
+ QTest::newRow("data4") << QString("10") << QString("''") << invalidDateTime();
+ QTest::newRow("data5") << QString("10") << QString("'") << invalidDateTime();
+ QTest::newRow("data6") << QString("pm") << QString("ap") << QDateTime(defDate(), QTime(12, 0, 0));
+ QTest::newRow("data7") << QString("foo") << QString("ap") << invalidDateTime();
+ QTest::newRow("data8") << QString("101010") << QString("dMyy") << QDateTime(QDate(1910, 10, 10), QTime());
+ QTest::newRow("data9") << QString("101010") << QString("dMyy") << QDateTime(QDate(1910, 10, 10), QTime());
+ QTest::newRow("data10") << QString("101010") << QString("dMyy") << QDateTime(QDate(1910, 10, 10), QTime());
+ QTest::newRow("data11") << date << QString("dd MMM yy") << QDateTime(QDate(1910, 10, 10), QTime());
+ date = fri + " " + december + " 3 2004";
+ QTest::newRow("data12") << date << QString("ddd MMMM d yyyy") << QDateTime(QDate(2004, 12, 3), QTime());
+ QTest::newRow("data13") << QString("30.02.2004") << QString("dd.MM.yyyy") << invalidDateTime();
+ QTest::newRow("data14") << QString("32.01.2004") << QString("dd.MM.yyyy") << invalidDateTime();
+ date = thu + " " + january + " 2004";
+ QTest::newRow("data15") << date << QString("ddd MMMM yyyy") << QDateTime(QDate(2004, 1, 1), QTime());
+ QTest::newRow("data16") << QString("2005-06-28T07:57:30.001Z")
+ << QString("yyyy-MM-ddThh:mm:ss.zZ")
+ << QDateTime(QDate(2005, 06, 28), QTime(07, 57, 30, 1));
+
+}
+
+void tst_QDateTime::dateTimeFromStringFormat()
+{
+ QFETCH(QString, string);
+ QFETCH(QString, format);
+ QFETCH(QDateTime, expected);
+
+ QDateTime dt = QDateTime::fromString(string, format);
+
+ QCOMPARE(dt, expected);
+}
+
+void tst_QDateTime::fromString()
+{
+ QDateTime dt = QDateTime::fromString("Thu Jan 1 00:00:00 1970");
+ QCOMPARE(dt, QDateTime(QDate(1970, 1, 1), QTime(0, 0, 0)));
+
+ dt = QDateTime::fromString("Thu Jan 2 12:34 1970");
+ QCOMPARE(dt, QDateTime(QDate(1970, 1, 2), QTime(12, 34, 0)));
+
+ dt = QDateTime::fromString("Thu Jan 1 00 1970");
+ QCOMPARE(dt, QDateTime());
+
+ dt = QDateTime::fromString("Thu Jan 1 00:00:00:00 1970");
+ QCOMPARE(dt, QDateTime());
+
+ dt = QDateTime::fromString(" Thu Jan 1 00:00:00 1970 ");
+ QCOMPARE(dt, QDateTime(QDate(1970, 1, 1), QTime(0, 0, 0)));
+
+ dt = QDateTime::fromString("Thu Jan 1 00:00:00");
+ QCOMPARE(dt, QDateTime());
+
+ dt = QDateTime::fromString("2002-10-01", Qt::ISODate);
+ QCOMPARE(dt, QDateTime(QDate(2002, 10, 1), QTime(0, 0, 0, 0)));
+
+ dt = QDateTime::fromString("1987-02-13T13:24:51+01:00", Qt::ISODate);
+ QCOMPARE(dt, QDateTime(QDate(1987, 2, 13), QTime(12, 24, 51), Qt::UTC));
+
+ dt = QDateTime::fromString("1987-02-13T13:24:51-01:00", Qt::ISODate);
+ QCOMPARE(dt, QDateTime(QDate(1987, 2, 13), QTime(14, 24, 51), Qt::UTC));
+
+ dt = QDateTime::fromString("Thu Jan 1 00:12:34 1970 GMT");
+ QCOMPARE(dt.toUTC(), QDateTime(QDate(1970, 1, 1), QTime(0, 12, 34), Qt::UTC));
+
+ dt = QDateTime::fromString("Thu Jan 1 00:12:34 1970 GMT-0300");
+ QCOMPARE(dt.toUTC(), QDateTime(QDate(1970, 1, 1), QTime(3, 12, 34), Qt::UTC));
+
+ dt = QDateTime::fromString("Thu Jan 1 00:12:34 1970 GMT+0300");
+ QCOMPARE(dt.toUTC(), QDateTime(QDate(1969, 12, 31), QTime(21, 12, 34), Qt::UTC));
+
+ dt = QDateTime::fromString("Thu Jan 1 00:12:34 1970 GMT+foo");
+ QCOMPARE(dt, QDateTime());
+
+ dt = QDateTime::fromString("Thu Jan 1 00:12:34 1970 gmt");
+ QCOMPARE(dt.toUTC(), QDateTime(QDate(1970, 1, 1), QTime(0, 12, 34), Qt::UTC));
+
+ dt = QDateTime::fromString("Thu Jan 1 1970 00:00:00");
+ QCOMPARE(dt, QDateTime(QDate(1970, 1, 1), QTime(0, 0, 0)));
+
+ dt = QDateTime::fromString("Thu Jan 1 1970 00:12:34 GMT+0100");
+ QCOMPARE(dt.toUTC(), QDateTime(QDate(1969, 12, 31), QTime(23, 12, 34), Qt::UTC));
+
+ QDate d = QDate::fromString("Thu Jan 1 1970");
+ QCOMPARE(d, QDate(1970, 1, 1));
+
+ d = QDate::fromString(" Thu Jan 1 1970 ");
+ QCOMPARE(d, QDate(1970, 1, 1));
+
+ d = QDate::fromString("Thu Jan 1");
+ QCOMPARE(d, QDate());
+
+ QDateTime dt2(QDate(1999, 1, 18), QTime(11, 49, 00));
+
+ QLocale def;
+ QLocale::setDefault(QLocale(QLocale::French, QLocale::France));
+
+ QCOMPARE(QDateTime::fromString(dt2.toString(Qt::DefaultLocaleShortDate), Qt::DefaultLocaleShortDate), dt2);
+ QCOMPARE(QDateTime::fromString(dt2.toString(Qt::SystemLocaleShortDate), Qt::SystemLocaleShortDate), dt2);
+
+ // obsolete
+ QCOMPARE(QDateTime::fromString(dt2.toString(Qt::SystemLocaleDate), Qt::SystemLocaleDate), dt2);
+ QCOMPARE(QDateTime::fromString(dt2.toString(Qt::LocaleDate), Qt::LocaleDate), dt2);
+
+// cannot have these because of bug in datetime parser
+// QCOMPARE(QDateTime::fromString(dt2.toString(Qt::DefaultLocaleLongDate), Qt::DefaultLocaleLongDate), dt2);
+// QCOMPARE(QDateTime::fromString(dt2.toString(Qt::SystemLocaleLongDate), Qt::SystemLocaleLongDate), dt2);
+
+
+ // same thing for QDate and QTime
+
+ QCOMPARE(QDate::fromString(dt2.date().toString(Qt::DefaultLocaleShortDate), Qt::DefaultLocaleShortDate), dt2.date());
+ QCOMPARE(QDate::fromString(dt2.date().toString(Qt::SystemLocaleShortDate), Qt::SystemLocaleShortDate), dt2.date());
+ QCOMPARE(QDate::fromString(dt2.date().toString(Qt::LocaleDate), Qt::LocaleDate), dt2.date());
+ QCOMPARE(QDate::fromString(dt2.date().toString(Qt::SystemLocaleDate), Qt::SystemLocaleDate), dt2.date());
+ QCOMPARE(QTime::fromString(dt2.time().toString(Qt::DefaultLocaleShortDate), Qt::DefaultLocaleShortDate), dt2.time());
+ QCOMPARE(QTime::fromString(dt2.time().toString(Qt::SystemLocaleShortDate), Qt::SystemLocaleShortDate), dt2.time());
+ QCOMPARE(QTime::fromString(dt2.time().toString(Qt::LocaleDate), Qt::LocaleDate), dt2.time());
+ QCOMPARE(QTime::fromString(dt2.time().toString(Qt::SystemLocaleDate), Qt::SystemLocaleDate), dt2.time());
+
+ QLocale::setDefault(def);
+}
+
+void tst_QDateTime::fromString_LOCALE_ILDATE()
+{
+#ifdef Q_OS_WIN
+ QString date1 = QLatin1String("Sun 1. Dec 13:02:00 1974");
+ QString date2 = QLatin1String("Sun Dec 1 13:02:00 1974");
+
+ QDateTime ref(QDate(1974, 12, 1), QTime(13, 2));
+ QCOMPARE(ref, QDateTime::fromString(date2, Qt::TextDate));
+ QCOMPARE(ref, QDateTime::fromString(date1, Qt::TextDate));
+#else
+ QSKIP("Windows only", SkipAll);
+#endif
+}
+
+void tst_QDateTime::utcOffset()
+{
+ /* Check default value. */
+ QCOMPARE(QDateTime().utcOffset(), 0);
+}
+
+void tst_QDateTime::setUtcOffset()
+{
+ /* Basic tests. */
+ {
+ QDateTime dt(QDateTime::currentDateTime());
+ dt.setTimeSpec(Qt::LocalTime);
+
+ dt.setUtcOffset(0);
+ QCOMPARE(dt.utcOffset(), 0);
+ QCOMPARE(dt.timeSpec(), Qt::UTC);
+
+ dt.setUtcOffset(-100);
+ QCOMPARE(dt.utcOffset(), -100);
+ QCOMPARE(dt.timeSpec(), Qt::OffsetFromUTC);
+ }
+
+ /* Test detaching. */
+ {
+ QDateTime dt(QDateTime::currentDateTime());
+ QDateTime dt2(dt);
+
+ dt.setUtcOffset(501);
+
+ QCOMPARE(dt.utcOffset(), 501);
+ QCOMPARE(dt2.utcOffset(), 0);
+ }
+
+ /* Check copying. */
+ {
+ QDateTime dt(QDateTime::currentDateTime());
+ dt.setUtcOffset(502);
+ QCOMPARE(dt.utcOffset(), 502);
+
+ QDateTime dt2(dt);
+ QCOMPARE(dt2.utcOffset(), 502);
+ }
+
+ /* Check assignment. */
+ {
+ QDateTime dt(QDateTime::currentDateTime());
+ dt.setUtcOffset(502);
+ QDateTime dt2;
+ dt2 = dt;
+
+ QCOMPARE(dt2.utcOffset(), 502);
+ }
+}
+
+void tst_QDateTime::getDate()
+{
+ {
+ int y = -33, m = -44, d = -55;
+ QDate date;
+ date.getDate(&y, &m, &d);
+ QVERIFY(date.year() == y);
+ QVERIFY(date.month() == m);
+ QVERIFY(date.day() == d);
+
+ date.getDate(0, 0, 0);
+ }
+
+ {
+ int y = -33, m = -44, d = -55;
+ QDate date(1998, 5, 24);
+ date.getDate(0, &m, 0);
+ date.getDate(&y, 0, 0);
+ date.getDate(0, 0, &d);
+
+ QVERIFY(date.year() == y);
+ QVERIFY(date.month() == m);
+ QVERIFY(date.day() == d);
+ }
+}
+
+void tst_QDateTime::fewDigitsInYear() const
+{
+ const QDateTime three(QDate(300, 10, 11), QTime());
+ QCOMPARE(three.toString(QLatin1String("yyyy-MM-dd")), QString::fromLatin1("0300-10-11"));
+
+ const QDateTime two(QDate(20, 10, 11), QTime());
+ QCOMPARE(two.toString(QLatin1String("yyyy-MM-dd")), QString::fromLatin1("0020-10-11"));
+
+ const QDateTime yyTwo(QDate(30, 10, 11), QTime());
+ QCOMPARE(yyTwo.toString(QLatin1String("yy-MM-dd")), QString::fromLatin1("30-10-11"));
+
+ const QDateTime yyOne(QDate(4, 10, 11), QTime());
+ QCOMPARE(yyOne.toString(QLatin1String("yy-MM-dd")), QString::fromLatin1("04-10-11"));
+}
+
+void tst_QDateTime::printNegativeYear() const
+{
+ {
+ QDateTime date(QDate(-20, 10, 11));
+ QVERIFY(date.isValid());
+ QCOMPARE(date.toString(QLatin1String("yyyy")), QString::fromLatin1("-0020"));
+ }
+
+ {
+ QDateTime date(QDate(-3, 10, 11));
+ QVERIFY(date.isValid());
+ QCOMPARE(date.toString(QLatin1String("yyyy")), QString::fromLatin1("-0003"));
+ }
+
+ {
+ QDateTime date(QDate(-400, 10, 11));
+ QVERIFY(date.isValid());
+ QCOMPARE(date.toString(QLatin1String("yyyy")), QString::fromLatin1("-0400"));
+ }
+}
+
+void tst_QDateTime::roundtripGermanLocale() const
+{
+ /* This code path should not result in warnings. */
+ const QDateTime theDateTime(QDateTime::currentDateTime());
+ theDateTime.fromString(theDateTime.toString(Qt::TextDate), Qt::TextDate);
+}
+
+void tst_QDateTime::utcOffsetLessThan() const
+{
+ QDateTime dt1(QDate(2002, 10, 10), QTime(0, 0, 0));
+ QDateTime dt2(dt1);
+
+ dt1.setUtcOffset(-(2 * 60 * 60)); // Minus two hours.
+ dt2.setUtcOffset(-(3 * 60 * 60)); // Minus three hours.
+
+ QVERIFY(dt1 != dt2);
+ QVERIFY(!(dt1 == dt2));
+ QVERIFY(dt1 < dt2);
+ QVERIFY(!(dt2 < dt1));
+}
+
+Q_DECLARE_METATYPE(Qt::DateFormat)
+
+QTEST_APPLESS_MAIN(tst_QDateTime)
+#include "tst_qdatetime.moc"
diff --git a/tests/auto/corelib/tools/qeasingcurve/qeasingcurve.pro b/tests/auto/corelib/tools/qeasingcurve/qeasingcurve.pro
new file mode 100644
index 0000000000..2a3a075d8a
--- /dev/null
+++ b/tests/auto/corelib/tools/qeasingcurve/qeasingcurve.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+QT = core
+SOURCES += tst_qeasingcurve.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp b/tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp
new file mode 100644
index 0000000000..851a9d463c
--- /dev/null
+++ b/tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp
@@ -0,0 +1,576 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qeasingcurve.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QEasingCurve : public QObject {
+ Q_OBJECT
+
+public:
+ tst_QEasingCurve();
+ virtual ~tst_QEasingCurve();
+
+public Q_SLOTS:
+ void init();
+ void cleanup();
+
+private slots:
+ void type();
+ void propertyDefaults();
+ void valueForProgress_data();
+ void valueForProgress();
+ void setCustomType();
+ void operators();
+ void properties();
+ void metaTypes();
+
+protected:
+};
+
+tst_QEasingCurve::tst_QEasingCurve()
+{
+}
+
+tst_QEasingCurve::~tst_QEasingCurve()
+{
+}
+
+void tst_QEasingCurve::init()
+{
+}
+
+void tst_QEasingCurve::cleanup()
+{
+}
+#include <qdebug.h>
+
+void tst_QEasingCurve::type()
+{
+ {
+ QEasingCurve curve(QEasingCurve::Linear);
+ QCOMPARE(curve.period(), 0.3);
+ QCOMPARE(curve.amplitude(), 1.0);
+
+ curve.setPeriod(5);
+ curve.setAmplitude(3);
+ QCOMPARE(curve.period(), 5.0);
+ QCOMPARE(curve.amplitude(), 3.0);
+
+ curve.setType(QEasingCurve::InElastic);
+ QCOMPARE(curve.period(), 5.0);
+ QCOMPARE(curve.amplitude(), 3.0);
+ }
+
+ {
+ QEasingCurve curve(QEasingCurve::InElastic);
+ QCOMPARE(curve.period(), 0.3);
+ QCOMPARE(curve.amplitude(), 1.0);
+ curve.setAmplitude(2);
+ QCOMPARE(curve.type(), QEasingCurve::InElastic);
+ curve.setType(QEasingCurve::Linear);
+ }
+
+ {
+ // check bounaries
+ QEasingCurve curve(QEasingCurve::InCubic);
+ QTest::ignoreMessage(QtWarningMsg, "QEasingCurve: Invalid curve type 9999");
+ curve.setType((QEasingCurve::Type)9999);
+ QCOMPARE(curve.type(), QEasingCurve::InCubic);
+ QTest::ignoreMessage(QtWarningMsg, "QEasingCurve: Invalid curve type -9999");
+ curve.setType((QEasingCurve::Type)-9999);
+ QCOMPARE(curve.type(), QEasingCurve::InCubic);
+ QTest::ignoreMessage(QtWarningMsg, QString::fromAscii("QEasingCurve: Invalid curve type %1")
+ .arg(QEasingCurve::NCurveTypes).toLatin1().constData());
+ curve.setType(QEasingCurve::NCurveTypes);
+ QCOMPARE(curve.type(), QEasingCurve::InCubic);
+ QTest::ignoreMessage(QtWarningMsg, QString::fromAscii("QEasingCurve: Invalid curve type %1")
+ .arg(QEasingCurve::Custom).toLatin1().constData());
+ curve.setType(QEasingCurve::Custom);
+ QCOMPARE(curve.type(), QEasingCurve::InCubic);
+ QTest::ignoreMessage(QtWarningMsg, QString::fromAscii("QEasingCurve: Invalid curve type %1")
+ .arg(-1).toLatin1().constData());
+ curve.setType((QEasingCurve::Type)-1);
+ QCOMPARE(curve.type(), QEasingCurve::InCubic);
+ curve.setType(QEasingCurve::Linear);
+ QCOMPARE(curve.type(), QEasingCurve::Linear);
+ curve.setType(QEasingCurve::CosineCurve);
+ QCOMPARE(curve.type(), QEasingCurve::CosineCurve);
+ }
+}
+
+void tst_QEasingCurve::propertyDefaults()
+{
+ {
+ // checks if the defaults are correct, but also demonstrates a weakness with the API.
+ QEasingCurve curve(QEasingCurve::InElastic);
+ QCOMPARE(curve.period(), 0.3);
+ QCOMPARE(curve.amplitude(), 1.0);
+ QCOMPARE(curve.overshoot(), qreal(1.70158));
+ curve.setType(QEasingCurve::InBounce);
+ QCOMPARE(curve.period(), 0.3);
+ QCOMPARE(curve.amplitude(), 1.0);
+ QCOMPARE(curve.overshoot(), qreal(1.70158));
+ curve.setType(QEasingCurve::Linear);
+ QCOMPARE(curve.period(), 0.3);
+ QCOMPARE(curve.amplitude(), 1.0);
+ QCOMPARE(curve.overshoot(), qreal(1.70158));
+ curve.setType(QEasingCurve::InElastic);
+ QCOMPARE(curve.period(), 0.3);
+ QCOMPARE(curve.amplitude(), 1.0);
+ QCOMPARE(curve.overshoot(), qreal(1.70158));
+ curve.setPeriod(0.4);
+ curve.setAmplitude(0.6);
+ curve.setOvershoot(1.0);
+ curve.setType(QEasingCurve::Linear);
+ QCOMPARE(curve.period(), 0.4);
+ QCOMPARE(curve.amplitude(), 0.6);
+ QCOMPARE(curve.overshoot(), 1.0);
+ curve.setType(QEasingCurve::InElastic);
+ QCOMPARE(curve.period(), 0.4);
+ QCOMPARE(curve.amplitude(), 0.6);
+ QCOMPARE(curve.overshoot(), 1.0);
+ }
+}
+
+typedef QList<int> IntList;
+typedef QList<qreal> RealList;
+Q_DECLARE_METATYPE(IntList)
+Q_DECLARE_METATYPE(RealList)
+
+void tst_QEasingCurve::valueForProgress_data()
+{
+ QTest::addColumn<int>("type");
+ QTest::addColumn<IntList>("at");
+ QTest::addColumn<RealList>("expected");
+ // automatically generated.
+ // note that values are scaled from range [0,1] to range [0, 100] in order to store them as
+ // integer values and avoid fp inaccuracies
+ QTest::newRow("Linear") << int(QEasingCurve::Linear)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.1000 << 0.2000 << 0.3000 << 0.4000 << 0.5000 << 0.6000 << 0.7000 << 0.8000 << 0.9000 << 1.0000);
+
+ QTest::newRow("InQuad") << int(QEasingCurve::InQuad)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0100 << 0.0400 << 0.0900 << 0.1600 << 0.2500 << 0.3600 << 0.4900 << 0.6400 << 0.8100 << 1.0000);
+
+ QTest::newRow("OutQuad") << int(QEasingCurve::OutQuad)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.1900 << 0.3600 << 0.5100 << 0.6400 << 0.7500 << 0.8400 << 0.9100 << 0.9600 << 0.9900 << 1.0000);
+
+ QTest::newRow("InOutQuad") << int(QEasingCurve::InOutQuad)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0200 << 0.0800 << 0.1800 << 0.3200 << 0.5000 << 0.6800 << 0.8200 << 0.9200 << 0.9800 << 1.0000);
+
+ QTest::newRow("OutInQuad") << int(QEasingCurve::OutInQuad)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.1800 << 0.3200 << 0.4200 << 0.4800 << 0.5000 << 0.5200 << 0.5800 << 0.6800 << 0.8200 << 1.0000);
+
+ QTest::newRow("InCubic") << int(QEasingCurve::InCubic)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0010 << 0.0080 << 0.0270 << 0.0640 << 0.1250 << 0.2160 << 0.3430 << 0.5120 << 0.7290 << 1.0000);
+
+ QTest::newRow("OutCubic") << int(QEasingCurve::OutCubic)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.2710 << 0.4880 << 0.6570 << 0.7840 << 0.8750 << 0.9360 << 0.9730 << 0.9920 << 0.9990 << 1.0000);
+
+ QTest::newRow("InOutCubic") << int(QEasingCurve::InOutCubic)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0040 << 0.0320 << 0.1080 << 0.2560 << 0.5000 << 0.7440 << 0.8920 << 0.9680 << 0.9960 << 1.0000);
+
+ QTest::newRow("OutInCubic") << int(QEasingCurve::OutInCubic)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.2440 << 0.3920 << 0.4680 << 0.4960 << 0.5000 << 0.5040 << 0.5320 << 0.6080 << 0.7560 << 1.0000);
+
+ QTest::newRow("InQuart") << int(QEasingCurve::InQuart)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0001 << 0.0016 << 0.0081 << 0.0256 << 0.0625 << 0.1296 << 0.2401 << 0.4096 << 0.6561 << 1.0000);
+
+ QTest::newRow("OutQuart") << int(QEasingCurve::OutQuart)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.3439 << 0.5904 << 0.7599 << 0.8704 << 0.9375 << 0.9744 << 0.9919 << 0.9984 << 0.9999 << 1.0000);
+
+ QTest::newRow("InOutQuart") << int(QEasingCurve::InOutQuart)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0008 << 0.0128 << 0.0648 << 0.2048 << 0.5000 << 0.7952 << 0.9352 << 0.9872 << 0.9992 << 1.0000);
+
+ QTest::newRow("OutInQuart") << int(QEasingCurve::OutInQuart)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.2952 << 0.4352 << 0.4872 << 0.4992 << 0.5000 << 0.5008 << 0.5128 << 0.5648 << 0.7048 << 1.0000);
+
+ QTest::newRow("InQuint") << int(QEasingCurve::InQuint)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0000 << 0.0003 << 0.0024 << 0.0102 << 0.0313 << 0.0778 << 0.1681 << 0.3277 << 0.5905 << 1.0000);
+
+ QTest::newRow("OutQuint") << int(QEasingCurve::OutQuint)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.4095 << 0.6723 << 0.8319 << 0.9222 << 0.9688 << 0.9898 << 0.9976 << 0.9997 << 1.0000 << 1.0000);
+
+ QTest::newRow("InOutQuint") << int(QEasingCurve::InOutQuint)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0002 << 0.0051 << 0.0389 << 0.1638 << 0.5000 << 0.8362 << 0.9611 << 0.9949 << 0.9998 << 1.0000);
+
+ QTest::newRow("OutInQuint") << int(QEasingCurve::OutInQuint)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.3362 << 0.4611 << 0.4949 << 0.4998 << 0.5000 << 0.5002 << 0.5051 << 0.5389 << 0.6638 << 1.0000);
+
+ QTest::newRow("InSine") << int(QEasingCurve::InSine)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0123 << 0.0489 << 0.1090 << 0.1910 << 0.2929 << 0.4122 << 0.5460 << 0.6910 << 0.8436 << 1.0000);
+
+ QTest::newRow("OutSine") << int(QEasingCurve::OutSine)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.1564 << 0.3090 << 0.4540 << 0.5878 << 0.7071 << 0.8090 << 0.8910 << 0.9511 << 0.9877 << 1.0000);
+
+ QTest::newRow("InOutSine") << int(QEasingCurve::InOutSine)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0245 << 0.0955 << 0.2061 << 0.3455 << 0.5000 << 0.6545 << 0.7939 << 0.9045 << 0.9755 << 1.0000);
+
+ QTest::newRow("OutInSine") << int(QEasingCurve::OutInSine)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.1545 << 0.2939 << 0.4045 << 0.4755 << 0.5000 << 0.5245 << 0.5955 << 0.7061 << 0.8455 << 1.0000);
+
+ QTest::newRow("InExpo") << int(QEasingCurve::InExpo)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0010 << 0.0029 << 0.0068 << 0.0146 << 0.0303 << 0.0615 << 0.1240 << 0.2490 << 0.4990 << 1.0000);
+
+ QTest::newRow("OutExpo") << int(QEasingCurve::OutExpo)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.5005 << 0.7507 << 0.8759 << 0.9384 << 0.9697 << 0.9854 << 0.9932 << 0.9971 << 0.9990 << 1.0000);
+
+ QTest::newRow("InOutExpo") << int(QEasingCurve::InOutExpo)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0015 << 0.0073 << 0.0308 << 0.1245 << 0.5003 << 0.8754 << 0.9692 << 0.9927 << 0.9985 << 1.0000);
+
+ QTest::newRow("OutInExpo") << int(QEasingCurve::OutInExpo)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.3754 << 0.4692 << 0.4927 << 0.4985 << 0.5000 << 0.5015 << 0.5073 << 0.5308 << 0.6245 << 1.0000);
+
+ QTest::newRow("InCirc") << int(QEasingCurve::InCirc)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0050 << 0.0202 << 0.0461 << 0.0835 << 0.1340 << 0.2000 << 0.2859 << 0.4000 << 0.5641 << 1.0000);
+
+ QTest::newRow("OutCirc") << int(QEasingCurve::OutCirc)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.4359 << 0.6000 << 0.7141 << 0.8000 << 0.8660 << 0.9165 << 0.9539 << 0.9798 << 0.9950 << 1.0000);
+
+ QTest::newRow("InOutCirc") << int(QEasingCurve::InOutCirc)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0101 << 0.0417 << 0.1000 << 0.2000 << 0.5000 << 0.8000 << 0.9000 << 0.9583 << 0.9899 << 1.0000);
+
+ QTest::newRow("OutInCirc") << int(QEasingCurve::OutInCirc)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.3000 << 0.4000 << 0.4583 << 0.4899 << 0.5000 << 0.5101 << 0.5417 << 0.6000 << 0.7000 << 1.0000);
+
+ QTest::newRow("InElastic") << int(QEasingCurve::InElastic)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0020 << -0.0020 << -0.0039 << 0.0156 << -0.0156 << -0.0313 << 0.1250 << -0.1250 << -0.2500 << 1.0000);
+
+ QTest::newRow("OutElastic") << int(QEasingCurve::OutElastic)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 1.2500 << 1.1250 << 0.8750 << 1.0313 << 1.0156 << 0.9844 << 1.0039 << 1.0020 << 0.9980 << 1.0000);
+
+ QTest::newRow("InOutElastic") << int(QEasingCurve::InOutElastic)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << -0.0010 << 0.0078 << -0.0156 << -0.0625 << 0.5000 << 1.0625 << 1.0156 << 0.9922 << 1.0010 << 1.0000);
+
+ QTest::newRow("OutInElastic") << int(QEasingCurve::OutInElastic)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.3750 << 0.5625 << 0.4922 << 0.4980 << 0.5000 << 0.4961 << 0.5078 << 0.5313 << 0.2500 << 1.0000);
+
+ QTest::newRow("InBack") << int(QEasingCurve::InBack)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << -0.0143 << -0.0465 << -0.0802 << -0.0994 << -0.0877 << -0.0290 << 0.0929 << 0.2942 << 0.5912 << 1.0000);
+
+ QTest::newRow("OutBack") << int(QEasingCurve::OutBack)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.4088 << 0.7058 << 0.9071 << 1.0290 << 1.0877 << 1.0994 << 1.0802 << 1.0465 << 1.0143 << 1.0000);
+
+ QTest::newRow("InOutBack") << int(QEasingCurve::InOutBack)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << -0.0375 << -0.0926 << -0.0788 << 0.0899 << 0.5000 << 0.9101 << 1.0788 << 1.0926 << 1.0375 << 1.0000);
+
+ QTest::newRow("OutInBack") << int(QEasingCurve::OutInBack)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.3529 << 0.5145 << 0.5497 << 0.5232 << 0.5000 << 0.4768 << 0.4503 << 0.4855 << 0.6471 << 1.0000);
+
+ QTest::newRow("InBounce") << int(QEasingCurve::InBounce)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0119 << 0.0600 << 0.0694 << 0.2275 << 0.2344 << 0.0900 << 0.3194 << 0.6975 << 0.9244 << 1.0000);
+
+ QTest::newRow("OutBounce") << int(QEasingCurve::OutBounce)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0756 << 0.3025 << 0.6806 << 0.9100 << 0.7656 << 0.7725 << 0.9306 << 0.9400 << 0.9881 << 1.0000);
+
+ QTest::newRow("InOutBounce") << int(QEasingCurve::InOutBounce)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0300 << 0.1138 << 0.0450 << 0.3488 << 0.5000 << 0.6512 << 0.9550 << 0.8863 << 0.9700 << 1.0000);
+
+ QTest::newRow("OutInBounce") << int(QEasingCurve::OutInBounce)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.1513 << 0.4100 << 0.2725 << 0.4400 << 0.5000 << 0.5600 << 0.7275 << 0.5900 << 0.8488 << 1.0000);
+
+ QTest::newRow("InCurve") << int(QEasingCurve::InCurve)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0245 << 0.1059 << 0.2343 << 0.3727 << 0.5000 << 0.6055 << 0.7000 << 0.8000 << 0.9000 << 1.0000);
+
+ QTest::newRow("OutCurve") << int(QEasingCurve::OutCurve)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.1000 << 0.2000 << 0.3000 << 0.3945 << 0.5000 << 0.6273 << 0.7657 << 0.8941 << 0.9755 << 1.0000);
+
+ QTest::newRow("SineCurve") << int(QEasingCurve::SineCurve)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.0000 << 0.0955 << 0.3455 << 0.6545 << 0.9045 << 1.0000 << 0.9045 << 0.6545 << 0.3455 << 0.0955 << 0.0000);
+
+ QTest::newRow("CosineCurve") << int(QEasingCurve::CosineCurve)
+ << (IntList() << 0 << 10 << 20 << 30 << 40 << 50 << 60 << 70 << 80 << 90 << 100)
+ << (RealList() << 0.5000 << 0.7939 << 0.9755 << 0.9755 << 0.7939 << 0.5000 << 0.2061 << 0.0245 << 0.0245 << 0.2061 << 0.5000);
+
+}
+
+/*
+ "fixedpoint" number that is scaled up by 10000.
+ This is to work around two bugs (precision and rounding error) in QString::setNum().
+ It does not trim off trailing zeros. This is good, just to emphasize the precision.
+*/
+QString fixedToString(int value)
+{
+ QString str;
+ if (value < 0) {
+ str+= QLatin1Char('-');
+ value = -value;
+ }
+
+ QString digitArg(QLatin1String("%1."));
+ for (int i = 10000; i >= 1; i/=10) {
+ int digit = value/i;
+ value -= digit*i;
+ str.append(digitArg.arg(digit));
+ digitArg = QLatin1String("%1");
+ }
+ return str;
+}
+
+void tst_QEasingCurve::valueForProgress()
+{
+#if 0
+ // used to generate data tables...
+ QFile out;
+ out.open(stdout, QIODevice::WriteOnly);
+ for (int c = QEasingCurve::Linear; c < QEasingCurve::NCurveTypes - 1; ++c) {
+ QEasingCurve curve((QEasingCurve::Type)c);
+ QMetaObject mo = QEasingCurve::staticMetaObject;
+ QString strCurve = QLatin1String(mo.enumerator(mo.indexOfEnumerator("Type")).key(c));
+ QString strInputs;
+ QString strOutputs;
+
+ for (int t = 0; t <= 100; t+= 10) {
+ qreal ease = curve.valueForProgress(t/qreal(100));
+ strInputs += QString::fromAscii(" << %1").arg(t);
+ strOutputs += " << " + fixedToString(qRound(ease*10000));
+ }
+ QString str = QString::fromAscii(" QTest::newRow(\"%1\") << int(QEasingCurve::%2)\n"
+ " << (IntList() %3)\n"
+ " << (RealList()%4);\n\n")
+ .arg(strCurve)
+ .arg(strCurve)
+ .arg(strInputs)
+ .arg(strOutputs);
+ out.write(str.toLatin1().constData());
+ }
+ out.close();
+ exit(1);
+#else
+ QFETCH(int, type);
+ QFETCH(IntList, at);
+ QFETCH(RealList, expected);
+
+ QEasingCurve curve((QEasingCurve::Type)type);
+ // in theory the baseline should't have an error of more than 0.00005 due to how its rounded,
+ // but due to FP imprecision, we have to adjust the error a bit more.
+ const qreal errorBound = 0.00006;
+ for (int i = 0; i < at.count(); ++i) {
+ const qreal ex = expected.at(i);
+ const qreal error = qAbs(ex - curve.valueForProgress(at.at(i)/qreal(100)));
+ QVERIFY(error <= errorBound);
+ }
+#endif
+}
+
+static qreal discreteEase(qreal progress)
+{
+ return qFloor(progress * 10) / qreal(10.0);
+}
+
+void tst_QEasingCurve::setCustomType()
+{
+ QEasingCurve curve;
+ curve.setCustomType(&discreteEase);
+ QCOMPARE(curve.type(), QEasingCurve::Custom);
+ QCOMPARE(curve.valueForProgress(0.0), 0.0);
+ QCOMPARE(curve.valueForProgress(0.05), 0.0);
+ QCOMPARE(curve.valueForProgress(0.10), 0.1);
+ QCOMPARE(curve.valueForProgress(0.15), 0.1);
+ QCOMPARE(curve.valueForProgress(0.20), 0.2);
+ QCOMPARE(curve.valueForProgress(0.25), 0.2);
+ QCOMPARE(curve.valueForProgress(0.30), 0.3);
+ QCOMPARE(curve.valueForProgress(0.35), 0.3);
+ QCOMPARE(curve.valueForProgress(0.999999), 0.9);
+
+ curve.setType(QEasingCurve::Linear);
+ QCOMPARE(curve.type(), QEasingCurve::Linear);
+ QCOMPARE(curve.valueForProgress(0.0), 0.0);
+ QCOMPARE(curve.valueForProgress(0.1), 0.1);
+ QCOMPARE(curve.valueForProgress(0.5), 0.5);
+ QCOMPARE(curve.valueForProgress(0.99), 0.99);
+}
+
+void tst_QEasingCurve::operators()
+{
+ // operator=
+ QEasingCurve curve;
+ QEasingCurve curve2;
+ curve.setCustomType(&discreteEase);
+ curve2 = curve;
+ QCOMPARE(curve2.type(), QEasingCurve::Custom);
+ QCOMPARE(curve2.valueForProgress(0.0), 0.0);
+ QCOMPARE(curve2.valueForProgress(0.05), 0.0);
+ QCOMPARE(curve2.valueForProgress(0.15), 0.1);
+ QCOMPARE(curve2.valueForProgress(0.25), 0.2);
+ QCOMPARE(curve2.valueForProgress(0.35), 0.3);
+ QCOMPARE(curve2.valueForProgress(0.999999), 0.9);
+
+ // operator==
+ curve.setType(QEasingCurve::InBack);
+ curve2 = curve;
+ curve2.setOvershoot(qreal(1.70158));
+ QCOMPARE(curve.overshoot(), curve2.overshoot());
+ QVERIFY(curve2 == curve);
+
+ curve.setOvershoot(3.0);
+ QVERIFY(curve2 != curve);
+ curve2.setOvershoot(3.0);
+ QVERIFY(curve2 == curve);
+
+ curve2.setType(QEasingCurve::Linear);
+ QCOMPARE(curve.overshoot(), curve2.overshoot());
+ QVERIFY(curve2 != curve);
+ curve2.setType(QEasingCurve::InBack);
+ QCOMPARE(curve.overshoot(), curve2.overshoot());
+ QVERIFY(curve2 == curve);
+
+ QEasingCurve curve3;
+ QEasingCurve curve4;
+ curve4.setAmplitude(curve4.amplitude());
+ QEasingCurve curve5;
+ curve5.setAmplitude(0.12345);
+ QVERIFY(curve3 == curve4); // default value and not assigned
+ QVERIFY(curve3 != curve5); // unassinged and other value
+ QVERIFY(curve4 != curve5);
+}
+
+class tst_QEasingProperties : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QEasingCurve easing READ easing WRITE setEasing)
+public:
+ tst_QEasingProperties(QObject *parent = 0) : QObject(parent) {}
+
+ QEasingCurve easing() const { return e; }
+ void setEasing(const QEasingCurve& value) { e = value; }
+
+private:
+ QEasingCurve e;
+};
+
+// Test getting and setting easing properties via the metaobject system.
+void tst_QEasingCurve::properties()
+{
+ tst_QEasingProperties obj;
+
+ QEasingCurve inOutBack(QEasingCurve::InOutBack);
+ qreal overshoot = 1.5;
+ inOutBack.setOvershoot(overshoot);
+ qreal amplitude = inOutBack.amplitude();
+ qreal period = inOutBack.period();
+
+ obj.setEasing(inOutBack);
+
+ QEasingCurve easing = qVariantValue<QEasingCurve>(obj.property("easing"));
+ QCOMPARE(easing.type(), QEasingCurve::InOutBack);
+ QCOMPARE(easing.overshoot(), overshoot);
+ QCOMPARE(easing.amplitude(), amplitude);
+ QCOMPARE(easing.period(), period);
+
+ QEasingCurve linear(QEasingCurve::Linear);
+ overshoot = linear.overshoot();
+ amplitude = linear.amplitude();
+ period = linear.period();
+
+ obj.setProperty("easing",
+ qVariantFromValue(QEasingCurve(QEasingCurve::Linear)));
+
+ easing = qVariantValue<QEasingCurve>(obj.property("easing"));
+ QCOMPARE(easing.type(), QEasingCurve::Linear);
+ QCOMPARE(easing.overshoot(), overshoot);
+ QCOMPARE(easing.amplitude(), amplitude);
+ QCOMPARE(easing.period(), period);
+}
+
+void tst_QEasingCurve::metaTypes()
+{
+ QVERIFY(QMetaType::type("QEasingCurve") == QMetaType::QEasingCurve);
+
+ QCOMPARE(QByteArray(QMetaType::typeName(QMetaType::QEasingCurve)),
+ QByteArray("QEasingCurve"));
+
+ QVERIFY(QMetaType::isRegistered(QMetaType::QEasingCurve));
+
+ QVERIFY(qMetaTypeId<QEasingCurve>() == QMetaType::QEasingCurve);
+}
+
+QTEST_MAIN(tst_QEasingCurve)
+#include "tst_qeasingcurve.moc"
diff --git a/tests/auto/corelib/tools/qelapsedtimer/qelapsedtimer.pro b/tests/auto/corelib/tools/qelapsedtimer/qelapsedtimer.pro
new file mode 100644
index 0000000000..876887678f
--- /dev/null
+++ b/tests/auto/corelib/tools/qelapsedtimer/qelapsedtimer.pro
@@ -0,0 +1,14 @@
+load(qttest_p4)
+QT -= gui
+
+SOURCES += tst_qelapsedtimer.cpp
+wince* {
+ DEFINES += SRCDIR=\\\"\\\"
+} else:symbian {
+ # do not define SRCDIR at all
+ TARGET.EPOCHEAPSIZE = 0x100000 0x3000000
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qelapsedtimer/tst_qelapsedtimer.cpp b/tests/auto/corelib/tools/qelapsedtimer/tst_qelapsedtimer.cpp
new file mode 100644
index 0000000000..40b2d30c02
--- /dev/null
+++ b/tests/auto/corelib/tools/qelapsedtimer/tst_qelapsedtimer.cpp
@@ -0,0 +1,175 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QString>
+#include <QtCore/QTime>
+#include <QtCore/QElapsedTimer>
+#include <QtTest/QtTest>
+
+static const int minResolution = 50; // the minimum resolution for the tests
+
+QDebug operator<<(QDebug s, const QElapsedTimer &t)
+{
+ union {
+ QElapsedTimer t;
+ struct { qint64 t1, t2; } i;
+ } copy;
+ copy.t = t;
+ s.nospace() << "(" << copy.i.t1 << ", " << copy.i.t2 << ")";
+ return s.space();
+}
+
+class tst_QElapsedTimer : public QObject
+{
+ Q_OBJECT
+
+private Q_SLOTS:
+ void statics();
+ void validity();
+ void basics();
+ void elapsed();
+};
+
+void tst_QElapsedTimer::statics()
+{
+ qDebug() << "Clock type is" << QElapsedTimer::clockType();
+ qDebug() << "Said clock is" << (QElapsedTimer::isMonotonic() ? "monotonic" : "not monotonic");
+ QElapsedTimer t;
+ t.start();
+ qDebug() << "Current time is" << t.msecsSinceReference();
+}
+
+void tst_QElapsedTimer::validity()
+{
+ QElapsedTimer t;
+
+ t.invalidate();
+ QVERIFY(!t.isValid());
+
+ t.start();
+ QVERIFY(t.isValid());
+
+ t.invalidate();
+ QVERIFY(!t.isValid());
+}
+
+void tst_QElapsedTimer::basics()
+{
+ QElapsedTimer t1;
+ t1.start();
+
+ QVERIFY(t1.msecsSinceReference() != 0);
+
+ QCOMPARE(t1, t1);
+ QVERIFY(!(t1 != t1));
+ QVERIFY(!(t1 < t1));
+ QCOMPARE(t1.msecsTo(t1), qint64(0));
+ QCOMPARE(t1.secsTo(t1), qint64(0));
+// QCOMPARE(t1 + 0, t1);
+// QCOMPARE(t1 - 0, t1);
+
+#if 0
+ QElapsedTimer t2 = t1;
+ t2 += 1000; // so we can use secsTo
+
+ QVERIFY(t1 != t2);
+ QVERIFY(!(t1 == t2));
+ QVERIFY(t1 < t2);
+ QVERIFY(!(t2 < t1));
+ QCOMPARE(t1.msecsTo(t2), qint64(1000));
+ QCOMPARE(t1.secsTo(t2), qint64(1));
+// QCOMPARE(t2 - t1, qint64(1000));
+// QCOMPARE(t1 - t2, qint64(-1000));
+#endif
+
+ quint64 value1 = t1.msecsSinceReference();
+ qDebug() << value1 << t1;
+ qint64 nsecs = t1.nsecsElapsed();
+ qint64 elapsed = t1.restart();
+ QVERIFY(elapsed < minResolution);
+ QVERIFY(nsecs / 1000000 < minResolution);
+
+ quint64 value2 = t1.msecsSinceReference();
+ qDebug() << value2 << t1 << elapsed << nsecs;
+ // in theory, elapsed == value2 - value1
+
+ // However, since QElapsedTimer keeps internally the full resolution,
+ // we have here a rounding error due to integer division
+ QVERIFY(qAbs(elapsed - qint64(value2 - value1)) <= 1);
+}
+
+void tst_QElapsedTimer::elapsed()
+{
+ QElapsedTimer t1;
+ t1.start();
+
+ QTest::qSleep(4*minResolution);
+ QElapsedTimer t2;
+ t2.start();
+
+ QVERIFY(t1 != t2);
+ QVERIFY(!(t1 == t2));
+ QVERIFY(t1 < t2);
+ QVERIFY(t1.msecsTo(t2) > 0);
+ // don't check: t1.secsTo(t2)
+// QVERIFY(t1 - t2 < 0);
+
+ QVERIFY(t1.nsecsElapsed() > 0);
+ QVERIFY(t1.elapsed() > 0);
+ // the number of elapsed nanoseconds and milliseconds should match
+ QVERIFY(t1.nsecsElapsed() - t1.elapsed() * 1000000 < 1000000);
+ QVERIFY(t1.hasExpired(minResolution));
+ QVERIFY(!t1.hasExpired(8*minResolution));
+ QVERIFY(!t2.hasExpired(minResolution));
+
+ QVERIFY(!t1.hasExpired(-1));
+ QVERIFY(!t2.hasExpired(-1));
+
+ qint64 elapsed = t1.restart();
+ QVERIFY(elapsed > 3*minResolution);
+ QVERIFY(elapsed < 5*minResolution);
+ qint64 diff = t2.msecsTo(t1);
+ QVERIFY(diff < minResolution);
+}
+
+QTEST_MAIN(tst_QElapsedTimer);
+
+#include "tst_qelapsedtimer.moc"
diff --git a/tests/auto/corelib/tools/qexplicitlyshareddatapointer/.gitignore b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/.gitignore
new file mode 100644
index 0000000000..47e152c120
--- /dev/null
+++ b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/.gitignore
@@ -0,0 +1 @@
+tst_qexplicitlyshareddatapointer
diff --git a/tests/auto/corelib/tools/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
new file mode 100644
index 0000000000..cf574ffc40
--- /dev/null
+++ b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qexplicitlyshareddatapointer.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp
new file mode 100644
index 0000000000..a6c2f50e6d
--- /dev/null
+++ b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp
@@ -0,0 +1,259 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QtCore/QSharedData>
+
+/*!
+ \class tst_QExplicitlySharedDataPointer
+ \internal
+ \since 4.4
+ \brief Tests class QExplicitlySharedDataPointer.
+
+ */
+class tst_QExplicitlySharedDataPointer : public QObject
+{
+ Q_OBJECT
+
+private Q_SLOTS:
+ void pointerOperatorOnConst() const;
+ void pointerOperatorOnMutable() const;
+ void copyConstructor() const;
+ void clone() const;
+ void data() const;
+ void reset() const;
+ void swap() const;
+};
+
+class MyClass : public QSharedData
+{
+public:
+ void mutating()
+ {
+ }
+
+ void notMutating() const
+ {
+ }
+
+ MyClass &operator=(const MyClass &)
+ {
+ return *this;
+ }
+};
+
+class Base : public QSharedData
+{
+public:
+ virtual ~Base() { }
+ virtual Base *clone() { return new Base(*this); }
+ virtual bool isBase() const { return true; }
+};
+
+class Derived : public Base
+{
+public:
+ virtual Base *clone() { return new Derived(*this); }
+ virtual bool isBase() const { return false; }
+};
+
+QT_BEGIN_NAMESPACE
+template<> Base *QExplicitlySharedDataPointer<Base>::clone()
+{
+ return d->clone();
+}
+QT_END_NAMESPACE
+
+void tst_QExplicitlySharedDataPointer::pointerOperatorOnConst() const
+{
+ /* Pointer itself is const. */
+ {
+ const QExplicitlySharedDataPointer<const MyClass> pointer(new MyClass());
+ pointer->notMutating();
+ }
+
+ /* Pointer itself is mutable. */
+ {
+ QExplicitlySharedDataPointer<const MyClass> pointer(new MyClass());
+ pointer->notMutating();
+ }
+}
+
+void tst_QExplicitlySharedDataPointer::pointerOperatorOnMutable() const
+{
+ /* Pointer itself is const. */
+ {
+ const QExplicitlySharedDataPointer<MyClass> pointer(new MyClass());
+ pointer->notMutating();
+ pointer->mutating();
+ *pointer = MyClass();
+ }
+
+ /* Pointer itself is mutable. */
+ {
+ const QExplicitlySharedDataPointer<MyClass> pointer(new MyClass());
+ pointer->notMutating();
+ pointer->mutating();
+ *pointer = MyClass();
+ }
+}
+
+void tst_QExplicitlySharedDataPointer::copyConstructor() const
+{
+ const QExplicitlySharedDataPointer<const MyClass> pointer(new MyClass());
+ const QExplicitlySharedDataPointer<const MyClass> copy(pointer);
+}
+
+void tst_QExplicitlySharedDataPointer::clone() const
+{
+ /* holding a base element */
+ {
+ QExplicitlySharedDataPointer<Base> pointer(new Base);
+ QVERIFY(pointer->isBase());
+
+ QExplicitlySharedDataPointer<Base> copy(pointer);
+ pointer.detach();
+ QVERIFY(pointer->isBase());
+ }
+
+ /* holding a derived element */
+ {
+ QExplicitlySharedDataPointer<Base> pointer(new Derived);
+ QVERIFY(!pointer->isBase());
+
+ QExplicitlySharedDataPointer<Base> copy(pointer);
+ pointer.detach();
+ QVERIFY(!pointer->isBase());
+ }
+}
+
+void tst_QExplicitlySharedDataPointer::data() const
+{
+ /* Check default value. */
+ {
+ QExplicitlySharedDataPointer<const MyClass> pointer;
+ QCOMPARE(pointer.data(), static_cast<const MyClass *>(0));
+ }
+
+ /* On const pointer. Must not mutate the pointer. */
+ {
+ const QExplicitlySharedDataPointer<const MyClass> pointer(new MyClass());
+ pointer.data();
+
+ /* Check that this cast is possible. */
+ static_cast<const MyClass *>(pointer.data());
+ }
+
+ /* On mutatable pointer. Must not mutate the pointer. */
+ {
+ QExplicitlySharedDataPointer<const MyClass> pointer(new MyClass());
+ pointer.data();
+
+ /* Check that this cast is possible. */
+ static_cast<const MyClass *>(pointer.data());
+ }
+
+ /* Must not mutate the pointer. */
+ {
+ const QExplicitlySharedDataPointer<MyClass> pointer(new MyClass());
+ pointer.data();
+
+ /* Check that these casts are possible. */
+ static_cast<MyClass *>(pointer.data());
+ static_cast<const MyClass *>(pointer.data());
+ }
+
+ /* Must not mutate the pointer. */
+ {
+ QExplicitlySharedDataPointer<MyClass> pointer(new MyClass());
+ pointer.data();
+
+ /* Check that these casts are possible. */
+ static_cast<MyClass *>(pointer.data());
+ static_cast<const MyClass *>(pointer.data());
+ }
+}
+
+void tst_QExplicitlySharedDataPointer::reset() const
+{
+ /* Do reset on a single ref count. */
+ {
+ QExplicitlySharedDataPointer<MyClass> pointer(new MyClass());
+ QVERIFY(pointer.data() != 0);
+
+ pointer.reset();
+ QCOMPARE(pointer.data(), static_cast<MyClass *>(0));
+ }
+
+ /* Do reset on a default constructed object. */
+ {
+ QExplicitlySharedDataPointer<MyClass> pointer;
+ QCOMPARE(pointer.data(), static_cast<MyClass *>(0));
+
+ pointer.reset();
+ QCOMPARE(pointer.data(), static_cast<MyClass *>(0));
+ }
+}
+
+void tst_QExplicitlySharedDataPointer::swap() const
+{
+ QExplicitlySharedDataPointer<MyClass> p1(0), p2(new MyClass());
+ QVERIFY(!p1.data());
+ QVERIFY(p2.data());
+
+ p1.swap(p2);
+ QVERIFY(p1.data());
+ QVERIFY(!p2.data());
+
+ p1.swap(p2);
+ QVERIFY(!p1.data());
+ QVERIFY(p2.data());
+
+ qSwap(p1, p2);
+ QVERIFY(p1.data());
+ QVERIFY(!p2.data());
+}
+
+QTEST_MAIN(tst_QExplicitlySharedDataPointer)
+
+#include "tst_qexplicitlyshareddatapointer.moc"
+// vim: et:ts=4:sw=4:sts=4
diff --git a/tests/auto/corelib/tools/qfreelist/qfreelist.pro b/tests/auto/corelib/tools/qfreelist/qfreelist.pro
new file mode 100644
index 0000000000..0afa12b8a8
--- /dev/null
+++ b/tests/auto/corelib/tools/qfreelist/qfreelist.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qfreelist.cpp
+QT += core-private
+QT -= gui
+!contains(QT_CONFIG,private_tests): SOURCES += $$QT.core.sources/tools/qfreelist.cpp
diff --git a/tests/auto/corelib/tools/qfreelist/tst_qfreelist.cpp b/tests/auto/corelib/tools/qfreelist/tst_qfreelist.cpp
new file mode 100644
index 0000000000..139d76e64a
--- /dev/null
+++ b/tests/auto/corelib/tools/qfreelist/tst_qfreelist.cpp
@@ -0,0 +1,179 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QElapsedTimer>
+#include <QtCore/QList>
+#include <QtCore/QThread>
+#include <private/qfreelist_p.h>
+#include <QtTest/QtTest>
+
+//TESTED_CLASS=QFreeList
+//TESTED_FILES=corelib/tools/qfreelist_p.h
+
+class tst_QFreeList : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void basicTest();
+ void customized();
+ void threadedTest();
+};
+
+void tst_QFreeList::basicTest()
+{
+ {
+ QFreeList<void> voidFreeList;
+ int zero = voidFreeList.next();
+ int one = voidFreeList.next();
+ int two = voidFreeList.next();
+ QCOMPARE(zero, 0);
+ QCOMPARE(one, 1);
+ QCOMPARE(two, 2);
+ voidFreeList[zero];
+ voidFreeList[one];
+ voidFreeList[two];
+ voidFreeList.at(zero);
+ voidFreeList.at(one);
+ voidFreeList.at(two);
+ voidFreeList.release(one);
+ int next = voidFreeList.next();
+ QCOMPARE(next, 1);
+ voidFreeList[next];
+ voidFreeList.at(next);
+ }
+
+ {
+ QFreeList<int> intFreeList;
+ int zero = intFreeList.next();
+ int one = intFreeList.next();
+ int two = intFreeList.next();
+ QCOMPARE(zero, 0);
+ QCOMPARE(one, 1);
+ QCOMPARE(two, 2);
+ intFreeList[zero] = zero;
+ intFreeList[one] = one;
+ intFreeList[two] = two;
+ QCOMPARE(intFreeList.at(zero), zero);
+ QCOMPARE(intFreeList.at(one), one);
+ QCOMPARE(intFreeList.at(two), two);
+ intFreeList.release(one);
+ int next = intFreeList.next();
+ QCOMPARE(next, 1);
+ QCOMPARE(intFreeList.at(next), one);
+ intFreeList[next] = -one;
+ QCOMPARE(intFreeList.at(next), -one);
+ }
+}
+
+struct CustomFreeListConstants : public QFreeListDefaultConstants
+{
+ enum {
+ InitialNextValue = 50,
+ BlockCount = 10
+ };
+
+ static const int Sizes[10];
+};
+
+const int CustomFreeListConstants::Sizes[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 16777216 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 };
+
+void tst_QFreeList::customized()
+{
+ QFreeList<void, CustomFreeListConstants> customFreeList;
+ int next = customFreeList.next();
+ QCOMPARE(next, int(CustomFreeListConstants::InitialNextValue));
+ customFreeList[next];
+ customFreeList.at(next);
+ customFreeList.release(next);
+}
+
+enum { TimeLimit = 3000 };
+
+class FreeListThread : public QThread
+{
+ static QFreeList<void> freelist;
+
+public:
+ inline FreeListThread() : QThread() { }
+ inline void run()
+ {
+ QElapsedTimer t;
+ t.start();
+ QList<int> needToRelease;
+ do {
+ int i = freelist.next();
+ int j = freelist.next();
+ int k = freelist.next();
+ int l = freelist.next();
+ freelist.release(k);
+ int n = freelist.next();
+ int m = freelist.next();
+ freelist.release(l);
+ freelist.release(m);
+ freelist.release(n);
+ freelist.release(j);
+ // freelist.release(i);
+ needToRelease << i;
+ } while (t.elapsed() < TimeLimit);
+
+ foreach (int x, needToRelease)
+ freelist.release(x);
+ }
+};
+
+QFreeList<void> FreeListThread::freelist;
+
+void tst_QFreeList::threadedTest()
+{
+ const int ThreadCount = QThread::idealThreadCount();
+ FreeListThread *threads = new FreeListThread[ThreadCount];
+ for (int i = 0; i < ThreadCount; ++i)
+ threads[i].start();
+ for (int i = 0; i < ThreadCount; ++i)
+ threads[i].wait();
+ delete [] threads;
+}
+
+QTEST_MAIN(tst_QFreeList)
+#include "tst_qfreelist.moc"
diff --git a/tests/auto/corelib/tools/qhash/.gitignore b/tests/auto/corelib/tools/qhash/.gitignore
new file mode 100644
index 0000000000..4c54a69b3a
--- /dev/null
+++ b/tests/auto/corelib/tools/qhash/.gitignore
@@ -0,0 +1 @@
+tst_qhash
diff --git a/tests/auto/corelib/tools/qhash/qhash.pro b/tests/auto/corelib/tools/qhash/qhash.pro
new file mode 100644
index 0000000000..16c9eabecc
--- /dev/null
+++ b/tests/auto/corelib/tools/qhash/qhash.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+SOURCES += tst_qhash.cpp
+QT = core
+
+symbian: {
+TARGET.EPOCSTACKSIZE =0x5000
+TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
+}
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qhash/tst_qhash.cpp b/tests/auto/corelib/tools/qhash/tst_qhash.cpp
new file mode 100644
index 0000000000..18654cf763
--- /dev/null
+++ b/tests/auto/corelib/tools/qhash/tst_qhash.cpp
@@ -0,0 +1,1241 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <qhash.h>
+#include <qmap.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QHash : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QHash();
+ virtual ~tst_QHash() {}
+
+private slots:
+ void insert1();
+ void erase();
+ void key();
+
+ void swap();
+ void count(); // copied from tst_QMap
+ void clear(); // copied from tst_QMap
+ void empty(); // copied from tst_QMap
+ void find(); // copied from tst_QMap
+ void constFind(); // copied from tst_QMap
+ void contains(); // copied from tst_QMap
+ void take(); // copied from tst_QMap
+ void operator_eq(); // copied from tst_QMap
+ void rehash_isnt_quadratic();
+ void dont_need_default_constructor();
+ void qhash();
+ void qmultihash_specific();
+
+ void compare();
+ void compare2();
+ void iterators(); // sligthly modified from tst_QMap
+ void keys_values_uniqueKeys(); // slightly modified from tst_QMap
+ void noNeedlessRehashes();
+};
+
+struct Foo {
+ static int count;
+ Foo():c(count) { ++count; }
+ Foo(const Foo& o):c(o.c) { ++count; }
+ ~Foo() { --count; }
+ int c;
+ int data[8];
+};
+
+tst_QHash::tst_QHash()
+{}
+
+int Foo::count = 0;
+
+//copied from tst_QMap.cpp
+class MyClass
+{
+public:
+ MyClass() { ++count;
+// qDebug("creating MyClass count=%d", count);
+ }
+ MyClass( const QString& c) {
+ count++; str = c;
+// qDebug("creating MyClass '%s' count = %d", str.latin1(), count);
+ }
+ ~MyClass() {
+ count--;
+// qDebug("deleting MyClass '%s' count = %d", str.latin1(), count);
+ }
+ MyClass( const MyClass& c ) {
+ count++; str = c.str;
+// qDebug("creating MyClass '%s' count = %d", str.latin1(), count);
+ }
+ MyClass &operator =(const MyClass &o) {
+// qDebug("copying MyClass '%s'", o.str.latin1());
+ str = o.str; return *this;
+ }
+
+ QString str;
+ static int count;
+};
+
+int MyClass::count = 0;
+
+typedef QHash<QString, MyClass> MyMap;
+
+//void tst_QMap::count()
+void tst_QHash::count()
+{
+ {
+ MyMap map;
+ MyMap map2( map );
+ QCOMPARE( map.count(), 0 );
+ QCOMPARE( map2.count(), 0 );
+ QCOMPARE( MyClass::count, 0 );
+ // detach
+ map2["Hallo"] = MyClass( "Fritz" );
+ QCOMPARE( map.count(), 0 );
+ QCOMPARE( map2.count(), 1 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 1 );
+#endif
+ }
+ QCOMPARE( MyClass::count, 0 );
+
+ {
+ typedef QHash<QString, MyClass> Map;
+ Map map;
+ QCOMPARE( map.count(), 0);
+ map.insert( "Torben", MyClass("Weis") );
+ QCOMPARE( map.count(), 1 );
+ map.insert( "Claudia", MyClass("Sorg") );
+ QCOMPARE( map.count(), 2 );
+ map.insert( "Lars", MyClass("Linzbach") );
+ map.insert( "Matthias", MyClass("Ettrich") );
+ map.insert( "Sue", MyClass("Paludo") );
+ map.insert( "Eirik", MyClass("Eng") );
+ map.insert( "Haavard", MyClass("Nord") );
+ map.insert( "Arnt", MyClass("Gulbrandsen") );
+ map.insert( "Paul", MyClass("Tvete") );
+ QCOMPARE( map.count(), 9 );
+ map.insert( "Paul", MyClass("Tvete 1") );
+ map.insert( "Paul", MyClass("Tvete 2") );
+ map.insert( "Paul", MyClass("Tvete 3") );
+ map.insert( "Paul", MyClass("Tvete 4") );
+ map.insert( "Paul", MyClass("Tvete 5") );
+ map.insert( "Paul", MyClass("Tvete 6") );
+
+ QCOMPARE( map.count(), 9 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 9 );
+#endif
+
+ Map map2( map );
+ QVERIFY( map2.count() == 9 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 9 );
+#endif
+
+ map2.insert( "Kay", MyClass("Roemer") );
+ QVERIFY( map2.count() == 10 );
+ QVERIFY( map.count() == 9 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 19 );
+#endif
+
+ map2 = map;
+ QVERIFY( map.count() == 9 );
+ QVERIFY( map2.count() == 9 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 9 );
+#endif
+
+ map2.insert( "Kay", MyClass("Roemer") );
+ QVERIFY( map2.count() == 10 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 19 );
+#endif
+
+ map2.clear();
+ QVERIFY( map.count() == 9 );
+ QVERIFY( map2.count() == 0 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 9 );
+#endif
+
+ map2 = map;
+ QVERIFY( map.count() == 9 );
+ QVERIFY( map2.count() == 9 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 9 );
+#endif
+
+ map2.clear();
+ QVERIFY( map.count() == 9 );
+ QVERIFY( map2.count() == 0 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 9 );
+#endif
+
+ map.remove( "Lars" );
+ QVERIFY( map.count() == 8 );
+ QVERIFY( map2.count() == 0 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 8 );
+#endif
+
+ map.remove( "Mist" );
+ QVERIFY( map.count() == 8 );
+ QVERIFY( map2.count() == 0 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 8 );
+#endif
+ }
+ QVERIFY( MyClass::count == 0 );
+
+ {
+ typedef QHash<QString,MyClass> Map;
+ Map map;
+ map["Torben"] = MyClass("Weis");
+#ifndef Q_CC_SUN
+ QVERIFY( MyClass::count == 1 );
+#endif
+ QVERIFY( map.count() == 1 );
+
+ (void)map["Torben"].str;
+ (void)map["Lars"].str;
+#ifndef Q_CC_SUN
+ QVERIFY( MyClass::count == 2 );
+#endif
+ QVERIFY( map.count() == 2 );
+
+ const Map& cmap = map;
+ (void)cmap["Depp"].str;
+#ifndef Q_CC_SUN
+ QVERIFY( MyClass::count == 2 );
+#endif
+ QVERIFY( map.count() == 2 );
+ QVERIFY( cmap.count() == 2 );
+ }
+ QCOMPARE( MyClass::count, 0 );
+ {
+ for ( int i = 0; i < 100; ++i )
+ {
+ QHash<int, MyClass> map;
+ for (int j = 0; j < i; ++j)
+ map.insert(j, MyClass(QString::number(j)));
+ }
+ QCOMPARE( MyClass::count, 0 );
+ }
+ QCOMPARE( MyClass::count, 0 );
+}
+void tst_QHash::insert1()
+{
+ const char *hello = "hello";
+ const char *world = "world";
+ const char *allo = "allo";
+ const char *monde = "monde";
+
+ {
+ typedef QHash<QString, QString> Hash;
+ Hash hash;
+ QString key;
+ for (int i = 0; i < 10; ++i) {
+ key[0] = i + '0';
+ for (int j = 0; j < 10; ++j) {
+ key[1] = j + '0';
+ hash.insert(key, "V" + key);
+ }
+ }
+
+ for (int i = 0; i < 10; ++i) {
+ key[0] = i + '0';
+ for (int j = 0; j < 10; ++j) {
+ key[1] = j + '0';
+ hash.remove(key);
+ }
+ }
+ }
+
+ {
+ typedef QHash<int, const char *> Hash;
+ Hash hash;
+ hash.insert(1, hello);
+ hash.insert(2, world);
+
+ QVERIFY(hash.size() == 2);
+ QVERIFY(!hash.isEmpty());
+
+ {
+ Hash hash2 = hash;
+ hash2 = hash;
+ hash = hash2;
+ hash2 = hash2;
+ hash = hash;
+ hash2.clear();
+ hash2 = hash2;
+ QVERIFY(hash2.size() == 0);
+ QVERIFY(hash2.isEmpty());
+ }
+ QVERIFY(hash.size() == 2);
+
+ {
+ Hash hash2 = hash;
+ hash2[1] = allo;
+ hash2[2] = monde;
+
+ QVERIFY(hash2[1] == allo);
+ QVERIFY(hash2[2] == monde);
+ QVERIFY(hash[1] == hello);
+ QVERIFY(hash[2] == world);
+
+ hash2[1] = hash[1];
+ hash2[2] = hash[2];
+
+ QVERIFY(hash2[1] == hello);
+ QVERIFY(hash2[2] == world);
+
+ hash[1] = hash[1];
+ QVERIFY(hash[1] == hello);
+ }
+ {
+ Hash hash2 = hash;
+ hash2.detach();
+ hash2.remove(1);
+ QVERIFY(hash2.size() == 1);
+ hash2.remove(1);
+ QVERIFY(hash2.size() == 1);
+ hash2.remove(0);
+ QVERIFY(hash2.size() == 1);
+ hash2.remove(2);
+ QVERIFY(hash2.size() == 0);
+ QVERIFY(hash.size() == 2);
+ }
+
+ hash.detach();
+
+ {
+ Hash::iterator it1 = hash.find(1);
+ QVERIFY(it1 != hash.end());
+
+ Hash::iterator it2 = hash.find(0);
+ QVERIFY(it2 != hash.begin());
+ QVERIFY(it2 == hash.end());
+
+ *it1 = monde;
+ QVERIFY(*it1 == monde);
+ QVERIFY(hash[1] == monde);
+
+ *it1 = hello;
+ QVERIFY(*it1 == hello);
+ QVERIFY(hash[1] == hello);
+
+ hash[1] = monde;
+ QVERIFY(it1.key() == 1);
+ QVERIFY(it1.value() == monde);
+ QVERIFY(*it1 == monde);
+ QVERIFY(hash[1] == monde);
+
+ hash[1] = hello;
+ QVERIFY(*it1 == hello);
+ QVERIFY(hash[1] == hello);
+ }
+
+ {
+ const Hash hash2 = hash;
+
+ Hash::const_iterator it1 = hash2.find(1);
+ QVERIFY(it1 != hash2.end());
+ QVERIFY(it1.key() == 1);
+ QVERIFY(it1.value() == hello);
+ QVERIFY(*it1 == hello);
+
+ Hash::const_iterator it2 = hash2.find(2);
+ QVERIFY(it1 != it2);
+ QVERIFY(it1 != hash2.end());
+ QVERIFY(it2 != hash2.end());
+
+ int count = 0;
+ it1 = hash2.begin();
+ while (it1 != hash2.end()) {
+ count++;
+ ++it1;
+ }
+ QVERIFY(count == 2);
+
+ count = 0;
+ it1 = hash.begin();
+ while (it1 != hash.end()) {
+ count++;
+ ++it1;
+ }
+ QVERIFY(count == 2);
+ }
+
+ {
+ QVERIFY(hash.contains(1));
+ QVERIFY(hash.contains(2));
+ QVERIFY(!hash.contains(0));
+ QVERIFY(!hash.contains(3));
+ }
+
+ {
+ QVERIFY(hash.value(1) == hello);
+ QVERIFY(hash.value(2) == world);
+ QVERIFY(hash.value(3) == 0);
+ QVERIFY(hash.value(1, allo) == hello);
+ QVERIFY(hash.value(2, allo) == world);
+ QVERIFY(hash.value(3, allo) == allo);
+ QVERIFY(hash.value(0, monde) == monde);
+ }
+
+ {
+ QHash<int,Foo> hash;
+ for (int i = 0; i < 10; i++)
+ hash.insert(i, Foo());
+ QVERIFY(Foo::count == 10);
+ hash.remove(7);
+ QVERIFY(Foo::count == 9);
+
+ }
+ QVERIFY(Foo::count == 0);
+ {
+ QHash<int, int*> hash;
+ QVERIFY(((const QHash<int,int*>*) &hash)->operator[](7) == 0);
+ }
+ }
+}
+
+void tst_QHash::erase()
+{
+ QHash<int, int> h1;
+ h1.insert(1, 2);
+ h1.erase(h1.begin());
+ QVERIFY(h1.size() == 0);
+ QVERIFY(h1.begin() == h1.end());
+ h1.insert(3, 4);
+ QVERIFY(*h1.begin() == 4);
+ h1.insert(5, 6);
+ QVERIFY(h1.size() == 2);
+ QHash<int, int>::iterator it1 = h1.begin();
+ ++it1;
+ it1 = h1.erase(it1);
+ QVERIFY(it1 == h1.end());
+ h1.insert(7, 8);
+ h1.insert(9, 10);
+ it1 = h1.begin();
+ int n = 0;
+ while (it1 != h1.end()) {
+ it1 = h1.erase(it1);
+ ++n;
+ }
+ QVERIFY(n == 3);
+ QHash<int, int> h2;
+ h2.insertMulti(20, 41);
+ h2.insertMulti(20, 42);
+ QVERIFY(h2.size() == 2);
+ it1 = h2.erase(h2.begin());
+ it1 = h2.erase(h2.begin());
+ QVERIFY(it1 == h2.end());
+}
+
+void tst_QHash::key()
+{
+ {
+ QString def("default value");
+
+ QHash<QString, int> hash1;
+ QCOMPARE(hash1.key(1), QString());
+ QCOMPARE(hash1.key(1, def), def);
+
+ hash1.insert("one", 1);
+ QCOMPARE(hash1.key(1), QString("one"));
+ QCOMPARE(hash1.key(1, def), QString("one"));
+ QCOMPARE(hash1.key(2), QString());
+ QCOMPARE(hash1.key(2, def), def);
+
+ hash1.insert("two", 2);
+ QCOMPARE(hash1.key(1), QString("one"));
+ QCOMPARE(hash1.key(1, def), QString("one"));
+ QCOMPARE(hash1.key(2), QString("two"));
+ QCOMPARE(hash1.key(2, def), QString("two"));
+ QCOMPARE(hash1.key(3), QString());
+ QCOMPARE(hash1.key(3, def), def);
+
+ hash1.insert("deux", 2);
+ QCOMPARE(hash1.key(1), QString("one"));
+ QCOMPARE(hash1.key(1, def), QString("one"));
+ QVERIFY(hash1.key(2) == "deux" || hash1.key(2) == "two");
+ QVERIFY(hash1.key(2, def) == "deux" || hash1.key(2, def) == "two");
+ QCOMPARE(hash1.key(3), QString());
+ QCOMPARE(hash1.key(3, def), def);
+ }
+
+ {
+ int def = 666;
+
+ QHash<int, QString> hash2;
+ QCOMPARE(hash2.key("one"), 0);
+ QCOMPARE(hash2.key("one", def), def);
+
+ hash2.insert(1, "one");
+ QCOMPARE(hash2.key("one"), 1);
+ QCOMPARE(hash2.key("one", def), 1);
+ QCOMPARE(hash2.key("two"), 0);
+ QCOMPARE(hash2.key("two", def), def);
+
+ hash2.insert(2, "two");
+ QCOMPARE(hash2.key("one"), 1);
+ QCOMPARE(hash2.key("one", def), 1);
+ QCOMPARE(hash2.key("two"), 2);
+ QCOMPARE(hash2.key("two", def), 2);
+ QCOMPARE(hash2.key("three"), 0);
+ QCOMPARE(hash2.key("three", def), def);
+
+ hash2.insert(3, "two");
+ QCOMPARE(hash2.key("one"), 1);
+ QCOMPARE(hash2.key("one", def), 1);
+ QCOMPARE(hash2.key("two"), 2);
+ QCOMPARE(hash2.key("two", def), 2);
+ QCOMPARE(hash2.key("three"), 0);
+ QCOMPARE(hash2.key("three", def), def);
+
+ hash2.insert(-1, "two");
+ QCOMPARE(hash2.key("two"), -1);
+ QCOMPARE(hash2.key("two", def), -1);
+
+ hash2.insert(0, "zero");
+ QCOMPARE(hash2.key("zero"), 0);
+ QCOMPARE(hash2.key("zero", def), 0);
+ }
+}
+
+void tst_QHash::swap()
+{
+ QHash<int,QString> h1, h2;
+ h1[0] = "h1[0]";
+ h2[1] = "h2[1]";
+ h1.swap(h2);
+ QCOMPARE(h1.value(1),QLatin1String("h2[1]"));
+ QCOMPARE(h2.value(0),QLatin1String("h1[0]"));
+}
+
+// copied from tst_QMap
+void tst_QHash::clear()
+{
+ {
+ MyMap map;
+ map.clear();
+ QVERIFY( map.isEmpty() );
+ map.insert( "key", MyClass( "value" ) );
+ map.clear();
+ QVERIFY( map.isEmpty() );
+ map.insert( "key0", MyClass( "value0" ) );
+ map.insert( "key0", MyClass( "value1" ) );
+ map.insert( "key1", MyClass( "value2" ) );
+ map.clear();
+ QVERIFY( map.isEmpty() );
+ }
+ QCOMPARE( MyClass::count, int(0) );
+}
+//copied from tst_QMap
+void tst_QHash::empty()
+{
+ QHash<int, QString> map1;
+
+ QVERIFY(map1.isEmpty());
+
+ map1.insert(1, "one");
+ QVERIFY(!map1.isEmpty());
+
+ map1.clear();
+ QVERIFY(map1.isEmpty());
+
+}
+
+//copied from tst_QMap
+void tst_QHash::find()
+{
+ QHash<int, QString> map1;
+ QString testString="Teststring %0";
+ QString compareString;
+ int i,count=0;
+
+ //QVERIFY(map1.find(1) == map1.end());
+
+ map1.insert(1,"Mensch");
+ map1.insert(1,"Mayer");
+ map1.insert(2,"Hej");
+
+ QVERIFY(map1.find(1).value() == "Mayer");
+ QVERIFY(map1.find(2).value() == "Hej");
+
+ for(i = 3; i < 10; ++i) {
+ compareString = testString.arg(i);
+ map1.insertMulti(4, compareString);
+ }
+
+ QHash<int, QString>::const_iterator it=map1.find(4);
+
+ for(i = 9; i > 2 && it != map1.end() && it.key() == 4; --i) {
+ compareString = testString.arg(i);
+ QVERIFY(it.value() == compareString);
+ ++it;
+ ++count;
+ }
+ QCOMPARE(count, 7);
+}
+
+// copied from tst_QMap
+void tst_QHash::constFind()
+{
+ QHash<int, QString> map1;
+ QString testString="Teststring %0";
+ QString compareString;
+ int i,count=0;
+
+ QVERIFY(map1.constFind(1) == map1.constEnd());
+
+ map1.insert(1,"Mensch");
+ map1.insert(1,"Mayer");
+ map1.insert(2,"Hej");
+
+ QVERIFY(map1.constFind(1).value() == "Mayer");
+ QVERIFY(map1.constFind(2).value() == "Hej");
+
+ for(i = 3; i < 10; ++i) {
+ compareString = testString.arg(i);
+ map1.insertMulti(4, compareString);
+ }
+
+ QHash<int, QString>::const_iterator it=map1.constFind(4);
+
+ for(i = 9; i > 2 && it != map1.constEnd() && it.key() == 4; --i) {
+ compareString = testString.arg(i);
+ QVERIFY(it.value() == compareString);
+ ++it;
+ ++count;
+ }
+ QCOMPARE(count, 7);
+}
+
+// copied from tst_QMap
+void tst_QHash::contains()
+{
+ QHash<int, QString> map1;
+ int i;
+
+ map1.insert(1, "one");
+ QVERIFY(map1.contains(1));
+
+ for(i=2; i < 100; ++i)
+ map1.insert(i, "teststring");
+ for(i=99; i > 1; --i)
+ QVERIFY(map1.contains(i));
+
+ map1.remove(43);
+ QVERIFY(!map1.contains(43));
+}
+
+//copied from tst_QMap
+void tst_QHash::take()
+{
+ QHash<int, QString> map;
+
+ map.insert(2, "zwei");
+ map.insert(3, "drei");
+
+ QVERIFY(map.take(3) == "drei");
+ QVERIFY(!map.contains(3));
+}
+
+//copied from tst_QMap
+void tst_QHash::operator_eq()
+{
+ {
+ // compare for equality:
+ QHash<int, int> a;
+ QHash<int, int> b;
+
+ QVERIFY(a == b);
+ QVERIFY(!(a != b));
+
+ a.insert(1,1);
+ b.insert(1,1);
+ QVERIFY(a == b);
+ QVERIFY(!(a != b));
+
+ a.insert(0,1);
+ b.insert(0,1);
+ QVERIFY(a == b);
+ QVERIFY(!(a != b));
+
+ // compare for inequality:
+ a.insert(42,0);
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+
+ a.insert(65, -1);
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+
+ b.insert(-1, -1);
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+ }
+
+ {
+ // a more complex map
+ QHash<QString, QString> a;
+ QHash<QString, QString> b;
+
+ QVERIFY(a == b);
+ QVERIFY(!(a != b));
+
+ a.insert("Hello", "World");
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+
+ b.insert("Hello", "World");
+ QVERIFY(a == b);
+ QVERIFY(!(a != b));
+
+ a.insert("Goodbye", "cruel world");
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+
+ b.insert("Goodbye", "cruel world");
+
+ // what happens if we insert nulls?
+ a.insert(QString(), QString());
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+
+ // empty keys and null keys match:
+ b.insert(QString(""), QString());
+ QVERIFY(a == b);
+ QVERIFY(!(a != b));
+ }
+
+ {
+ // task 102658
+
+ QHash<QString, int> a;
+ QHash<QString, int> b;
+
+ a.insert("otto", 1);
+ b.insert("willy", 1);
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+ }
+}
+
+void tst_QHash::compare()
+{
+ QHash<int, QString> hash1,hash2;
+ QString testString = "Teststring %1";
+ int i;
+
+ for(i = 0; i < 1000; ++i)
+ hash1.insert(i,testString.arg(i));
+
+ for(--i; i >= 0; --i)
+ hash2.insert(i,testString.arg(i));
+
+ hash1.squeeze();
+ hash2.squeeze();
+
+ QVERIFY(hash1 == hash2);
+ QVERIFY(!(hash1 != hash2));
+
+ hash1.take(234);
+ hash2.take(234);
+ QVERIFY(hash1 == hash2);
+ QVERIFY(!(hash1 != hash2));
+
+ hash2.take(261);
+ QVERIFY(!(hash1 == hash2));
+ QVERIFY(hash1 != hash2);
+}
+
+void tst_QHash::compare2()
+{
+ QHash<int, int> a;
+ QHash<int, int> b;
+
+ a.insertMulti(17, 1);
+ a.insertMulti(17 * 2, 1);
+ b.insertMulti(17 * 2, 1);
+ b.insertMulti(17, 1);
+ QVERIFY(a == b);
+ QVERIFY(b == a);
+
+ a.insertMulti(17, 2);
+ a.insertMulti(17 * 2, 3);
+ b.insertMulti(17 * 2, 3);
+ b.insertMulti(17, 2);
+ QVERIFY(a == b);
+ QVERIFY(b == a);
+
+ a.insertMulti(17, 4);
+ a.insertMulti(17 * 2, 5);
+ b.insertMulti(17 * 2, 4);
+ b.insertMulti(17, 5);
+ QVERIFY(!(a == b));
+ QVERIFY(!(b == a));
+
+ a.clear();
+ b.clear();
+ a.insertMulti(1, 1);
+ a.insertMulti(1, 2);
+ a.insertMulti(1, 3);
+ b.insertMulti(1, 1);
+ b.insertMulti(1, 2);
+ b.insertMulti(1, 3);
+ b.insertMulti(1, 4);
+ QVERIFY(!(a == b));
+ QVERIFY(!(b == a));
+}
+
+//sligthly modified from tst_QMap
+void tst_QHash::iterators()
+{
+ QHash<int, QString> hash;
+ QMap<int, QString> testMap;
+ QString testString="Teststring %1";
+ QString testString1;
+ int i;
+
+ for(i = 1; i < 100; ++i)
+ hash.insert(i, testString.arg(i));
+
+ //to get some chaos in the hash
+ hash.squeeze();
+
+ //STL-Style iterators
+
+ QHash<int, QString>::iterator stlIt = hash.begin();
+ for(stlIt = hash.begin(), i = 1; stlIt != hash.end(), i < 100; ++stlIt, ++i) {
+ testMap.insert(i,stlIt.value());
+ //QVERIFY(stlIt.value() == hash.value(
+ }
+ stlIt = hash.begin();
+
+ QVERIFY(stlIt.value() == testMap.value(1));
+
+ stlIt+=5;
+ QVERIFY(stlIt.value() == testMap.value(6));
+
+ stlIt++;
+ QVERIFY(stlIt.value() == testMap.value(7));
+
+ stlIt-=3;
+ QVERIFY(stlIt.value() == testMap.value(4));
+
+ stlIt--;
+ QVERIFY(stlIt.value() == testMap.value(3));
+
+ testMap.clear();
+
+ //STL-Style const-iterators
+
+ QHash<int, QString>::const_iterator cstlIt = hash.constBegin();
+ for(cstlIt = hash.constBegin(), i = 1; cstlIt != hash.constEnd(), i < 100; ++cstlIt, ++i) {
+ testMap.insert(i,cstlIt.value());
+ //QVERIFY(stlIt.value() == hash.value(
+ }
+ cstlIt = hash.constBegin();
+
+ QVERIFY(cstlIt.value() == testMap.value(1));
+
+ cstlIt+=5;
+ QVERIFY(cstlIt.value() == testMap.value(6));
+
+ cstlIt++;
+ QVERIFY(cstlIt.value() == testMap.value(7));
+
+ cstlIt-=3;
+ QVERIFY(cstlIt.value() == testMap.value(4));
+
+ cstlIt--;
+ QVERIFY(cstlIt.value() == testMap.value(3));
+
+ testMap.clear();
+
+ //Java-Style iterators
+
+ QHashIterator<int, QString> javaIt(hash);
+
+ //walk through
+ i = 0;
+ while(javaIt.hasNext()) {
+ ++i;
+ javaIt.next();
+ testMap.insert(i,javaIt.value());
+ }
+ javaIt.toFront();
+ i = 0;
+ while(javaIt.hasNext()) {
+ ++i;
+ javaIt.next();
+ //qDebug(javaIt.value());
+ QVERIFY(javaIt.value() == testMap.value(i));
+ }
+
+ ++i;
+ while(javaIt.hasPrevious()) {
+ --i;
+ javaIt.previous();
+ QVERIFY(javaIt.value() == testMap.value(i));
+ }
+
+ /*
+ I've removed findNextKey() and findPreviousKey() from the API
+ for Qt 4.0 beta 1.
+ */
+
+#if 0
+ //findPreviousKey() findNextKey()
+ for(i = 1; i < 100; ++i) {
+ if(javaIt.findNextKey(i))
+ QVERIFY(javaIt.value() == testString.arg(i));
+ else {
+ QVERIFY(!javaIt.hasNext());
+ QVERIFY(javaIt.findPreviousKey(i));
+ QVERIFY(javaIt.value() == testString.arg(i));
+ }
+
+ if(javaIt.findPreviousKey(i))
+ QVERIFY(javaIt.value() == testString.arg(i));
+ else {
+ QVERIFY(!javaIt.hasPrevious());
+ QVERIFY(javaIt.findNextKey(i));
+ QVERIFY(javaIt.value() == testString.arg(i));
+ }
+ }
+#endif
+
+ //peekNext() peekPrevious()
+ javaIt.toFront();
+ javaIt.next();
+ while(javaIt.hasNext()) {
+ testString = javaIt.value();
+ testString1 = javaIt.peekNext().value();
+ javaIt.next();
+ //qDebug(testString + " " + testString1 + " " + javaIt.peekPrevious().value());
+ QVERIFY(javaIt.value() == testString1);
+ QCOMPARE(javaIt.peekPrevious().value(), testString1);
+ }
+ while(javaIt.hasPrevious()) {
+ testString = javaIt.value();
+ testString1 = javaIt.peekPrevious().value();
+ javaIt.previous();
+ QVERIFY(javaIt.value() == testString1);
+ //qDebug(testString + testString1 + javaIt.peekNext().value());
+ QCOMPARE(javaIt.peekNext().value(), testString1);
+ }
+}
+
+void tst_QHash::rehash_isnt_quadratic()
+{
+ // this test should be incredibly slow if rehash() is quadratic
+ for (int j = 0; j < 5; ++j) {
+ QHash<int, int> testHash;
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN) // mobiles do not have infinite mem...
+ for (int i = 0; i < 50000; ++i)
+#else
+ for (int i = 0; i < 500000; ++i)
+#endif
+ testHash.insertMulti(1, 1);
+ }
+}
+
+class Bar
+{
+public:
+ Bar(int i) : j(i) {}
+
+ int j;
+};
+
+void tst_QHash::dont_need_default_constructor()
+{
+ QHash<int, Bar> hash1;
+ for (int i = 0; i < 100; ++i) {
+ hash1.insert(i, Bar(2 * i));
+ QVERIFY(hash1.value(i, Bar(-1)).j == 2 * i);
+ QVERIFY(hash1.size() == i + 1);
+ }
+
+ QHash<QString, Bar> hash2;
+ for (int i = 0; i < 100; ++i) {
+ hash2.insert(QString::number(i), Bar(2 * i));
+ QVERIFY(hash2.value(QString::number(i), Bar(-1)).j == 2 * i);
+ QVERIFY(hash2.size() == i + 1);
+ }
+}
+
+void tst_QHash::qhash()
+{
+ {
+ QBitArray a1;
+ QBitArray a2;
+ QVERIFY(qHash(a1) == 0);
+
+ a1.resize(1);
+ a1.setBit(0, true);
+
+ a2.resize(1);
+ a2.setBit(0, false);
+
+ uint h1 = qHash(a1);
+ uint h2 = qHash(a2);
+
+ QVERIFY(h1 != h2);
+
+ a2.setBit(0, true);
+ QVERIFY(h1 == qHash(a2));
+
+ a1.fill(true, 8);
+ a1.resize(7);
+
+ h1 = qHash(a1);
+
+ a2.fill(true, 7);
+ h2 = qHash(a2);
+
+ QVERIFY(h1 == h2);
+
+ a2.setBit(0, false);
+ uint h3 = qHash(a2);
+ QVERIFY(h2 != h3);
+
+ a2.setBit(0, true);
+ QVERIFY(h2 == qHash(a2));
+
+ a2.setBit(6, false);
+ uint h4 = qHash(a2);
+ QVERIFY(h2 != h4);
+
+ a2.setBit(6, true);
+ QVERIFY(h2 == qHash(a2));
+
+ QVERIFY(h3 != h4);
+ }
+
+ {
+ QPair<int, int> p12(1, 2);
+ QPair<int, int> p21(2, 1);
+
+ QVERIFY(qHash(p12) == qHash(p12));
+ QVERIFY(qHash(p21) == qHash(p21));
+ QVERIFY(qHash(p12) != qHash(p21));
+
+ QPair<int, int> pA(0x12345678, 0x12345678);
+ QPair<int, int> pB(0x12345675, 0x12345675);
+
+ QVERIFY(qHash(pA) != qHash(pB));
+ }
+}
+
+void tst_QHash::qmultihash_specific()
+{
+ QMultiHash<int, int> hash1;
+ for (int i = 1; i <= 9; ++i) {
+ for (int j = 1; j <= i; ++j) {
+ int k = i * 10 + j;
+ QVERIFY(!hash1.contains(i, k));
+ hash1.insert(i, k);
+ QVERIFY(hash1.contains(i, k));
+ }
+ }
+
+ for (int i = 1; i <= 9; ++i) {
+ for (int j = 1; j <= i; ++j) {
+ int k = i * 10 + j;
+ QVERIFY(hash1.contains(i, k));
+ }
+ }
+
+ QVERIFY(hash1.contains(9, 99));
+ QCOMPARE(hash1.count(), 45);
+ hash1.remove(9, 99);
+ QVERIFY(!hash1.contains(9, 99));
+ QCOMPARE(hash1.count(), 44);
+
+ hash1.remove(9, 99);
+ QVERIFY(!hash1.contains(9, 99));
+ QCOMPARE(hash1.count(), 44);
+
+ hash1.remove(1, 99);
+ QCOMPARE(hash1.count(), 44);
+
+ hash1.insert(1, 99);
+ hash1.insert(1, 99);
+
+ QCOMPARE(hash1.count(), 46);
+ hash1.remove(1, 99);
+ QCOMPARE(hash1.count(), 44);
+ hash1.remove(1, 99);
+ QCOMPARE(hash1.count(), 44);
+
+ {
+ QMultiHash<int, int>::const_iterator i = hash1.constFind(1, 11);
+ QVERIFY(i.key() == 1);
+ QVERIFY(i.value() == 11);
+
+ i = hash1.constFind(2, 22);
+ QVERIFY(i.key() == 2);
+ QVERIFY(i.value() == 22);
+
+ i = hash1.constFind(9, 98);
+ QVERIFY(i.key() == 9);
+ QVERIFY(i.value() == 98);
+ }
+
+ {
+ const QMultiHash<int, int> hash2(hash1);
+ QMultiHash<int, int>::const_iterator i = hash2.find(1, 11);
+ QVERIFY(i.key() == 1);
+ QVERIFY(i.value() == 11);
+
+ i = hash2.find(2, 22);
+ QVERIFY(i.key() == 2);
+ QVERIFY(i.value() == 22);
+
+ i = hash2.find(9, 98);
+ QVERIFY(i.key() == 9);
+ QVERIFY(i.value() == 98);
+ }
+
+ {
+ QMultiHash<int, int>::iterator i = hash1.find(1, 11);
+ QVERIFY(i.key() == 1);
+ QVERIFY(i.value() == 11);
+
+ i = hash1.find(2, 22);
+ QVERIFY(i.key() == 2);
+ QVERIFY(i.value() == 22);
+
+ i = hash1.find(9, 98);
+ QVERIFY(i.key() == 9);
+ QVERIFY(i.value() == 98);
+ }
+
+ {
+ QMultiHash<int, int> map1;
+ map1.insert(42, 1);
+ map1.insert(10, 2);
+ map1.insert(48, 3);
+ QMultiHash<int, int> map2;
+ map2.insert(8, 4);
+ map2.insert(42, 5);
+ map2.insert(95, 12);
+
+ map1+=map2;
+ map2.insert(42, 1);
+ map2.insert(10, 2);
+ map2.insert(48, 3);
+ QCOMPARE(map1.count(), map2.count());
+ QVERIFY(map1.remove(42,5));
+ QVERIFY(map2.remove(42,5));
+ QVERIFY(map1 == map2);
+ }
+}
+
+template <typename T>
+QList<T> sorted(const QList<T> &list)
+{
+ QList<T> res = list;
+ qSort(res);
+ return res;
+}
+
+void tst_QHash::keys_values_uniqueKeys()
+{
+ QHash<QString, int> hash;
+ QVERIFY(hash.uniqueKeys().isEmpty());
+ QVERIFY(hash.keys().isEmpty());
+ QVERIFY(hash.values().isEmpty());
+
+ hash.insertMulti("alpha", 1);
+ QVERIFY(sorted(hash.keys()) == (QList<QString>() << "alpha"));
+ QVERIFY(hash.keys() == hash.uniqueKeys());
+ QVERIFY(hash.values() == (QList<int>() << 1));
+
+ hash.insertMulti("beta", -2);
+ QVERIFY(sorted(hash.keys()) == (QList<QString>() << "alpha" << "beta"));
+ QVERIFY(hash.keys() == hash.uniqueKeys());
+ QVERIFY(sorted(hash.values()) == sorted(QList<int>() << 1 << -2));
+
+ hash.insertMulti("alpha", 2);
+ QVERIFY(sorted(hash.uniqueKeys()) == (QList<QString>() << "alpha" << "beta"));
+ QVERIFY(sorted(hash.keys()) == (QList<QString>() << "alpha" << "alpha" << "beta"));
+ QVERIFY(sorted(hash.values()) == sorted(QList<int>() << 2 << 1 << -2));
+
+ hash.insertMulti("beta", 4);
+ QVERIFY(sorted(hash.uniqueKeys()) == (QList<QString>() << "alpha" << "beta"));
+ QVERIFY(sorted(hash.keys()) == (QList<QString>() << "alpha" << "alpha" << "beta" << "beta"));
+ QVERIFY(sorted(hash.values()) == sorted(QList<int>() << 2 << 1 << 4 << -2));
+}
+
+void tst_QHash::noNeedlessRehashes()
+{
+ QHash<int, int> hash;
+ for (int i = 0; i < 512; ++i) {
+ int j = (i * 345) % 512;
+ hash.insert(j, j);
+ int oldCapacity = hash.capacity();
+ hash[j] = j + 1;
+ QCOMPARE(oldCapacity, hash.capacity());
+ hash.insert(j, j + 1);
+ QCOMPARE(oldCapacity, hash.capacity());
+ }
+}
+
+QTEST_APPLESS_MAIN(tst_QHash)
+#include "tst_qhash.moc"
diff --git a/tests/auto/corelib/tools/qline/.gitignore b/tests/auto/corelib/tools/qline/.gitignore
new file mode 100644
index 0000000000..5f1f39d4bf
--- /dev/null
+++ b/tests/auto/corelib/tools/qline/.gitignore
@@ -0,0 +1 @@
+tst_qline
diff --git a/tests/auto/corelib/tools/qline/qline.pro b/tests/auto/corelib/tools/qline/qline.pro
new file mode 100644
index 0000000000..6e9af24476
--- /dev/null
+++ b/tests/auto/corelib/tools/qline/qline.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+QT -= gui
+SOURCES += tst_qline.cpp
+unix:!mac:!symbian:!vxworks:LIBS+=-lm
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qline/tst_qline.cpp b/tests/auto/corelib/tools/qline/tst_qline.cpp
new file mode 100644
index 0000000000..de47506ae3
--- /dev/null
+++ b/tests/auto/corelib/tools/qline/tst_qline.cpp
@@ -0,0 +1,492 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qline.h>
+#include <math.h>
+
+#ifndef M_2PI
+#define M_2PI 6.28318530717958647692528676655900576
+#endif
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QLine : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QLine();
+
+private slots:
+ void testIntersection();
+ void testIntersection_data();
+
+ void testLength();
+ void testLength_data();
+
+ void testNormalVector();
+ void testNormalVector_data();
+
+ void testAngle();
+ void testAngle_data();
+
+ void testAngle2();
+ void testAngle2_data();
+
+ void testAngle3();
+
+ void testAngleTo();
+ void testAngleTo_data();
+
+ void testSet();
+};
+
+// Square root of two
+#define SQRT2 1.4142135623731
+
+// Length of unit vector projected to x from 45 degrees
+#define UNITX_45 0.707106781186547
+
+const qreal epsilon = sizeof(qreal) == sizeof(double) ? 1e-8 : 1e-4;
+
+tst_QLine::tst_QLine()
+
+{
+}
+
+void tst_QLine::testSet()
+{
+ {
+ QLine l;
+ l.setP1(QPoint(1, 2));
+ l.setP2(QPoint(3, 4));
+
+ QCOMPARE(l.x1(), 1);
+ QCOMPARE(l.y1(), 2);
+ QCOMPARE(l.x2(), 3);
+ QCOMPARE(l.y2(), 4);
+
+ l.setPoints(QPoint(5, 6), QPoint(7, 8));
+ QCOMPARE(l.x1(), 5);
+ QCOMPARE(l.y1(), 6);
+ QCOMPARE(l.x2(), 7);
+ QCOMPARE(l.y2(), 8);
+
+ l.setLine(9, 10, 11, 12);
+ QCOMPARE(l.x1(), 9);
+ QCOMPARE(l.y1(), 10);
+ QCOMPARE(l.x2(), 11);
+ QCOMPARE(l.y2(), 12);
+ }
+
+ {
+ QLineF l;
+ l.setP1(QPointF(1, 2));
+ l.setP2(QPointF(3, 4));
+
+ QCOMPARE(l.x1(), 1.0);
+ QCOMPARE(l.y1(), 2.0);
+ QCOMPARE(l.x2(), 3.0);
+ QCOMPARE(l.y2(), 4.0);
+
+ l.setPoints(QPointF(5, 6), QPointF(7, 8));
+ QCOMPARE(l.x1(), 5.0);
+ QCOMPARE(l.y1(), 6.0);
+ QCOMPARE(l.x2(), 7.0);
+ QCOMPARE(l.y2(), 8.0);
+
+ l.setLine(9.0, 10.0, 11.0, 12.0);
+ QCOMPARE(l.x1(), 9.0);
+ QCOMPARE(l.y1(), 10.0);
+ QCOMPARE(l.x2(), 11.0);
+ QCOMPARE(l.y2(), 12.0);
+ }
+
+}
+
+void tst_QLine::testIntersection_data()
+{
+ QTest::addColumn<double>("xa1");
+ QTest::addColumn<double>("ya1");
+ QTest::addColumn<double>("xa2");
+ QTest::addColumn<double>("ya2");
+ QTest::addColumn<double>("xb1");
+ QTest::addColumn<double>("yb1");
+ QTest::addColumn<double>("xb2");
+ QTest::addColumn<double>("yb2");
+ QTest::addColumn<int>("type");
+ QTest::addColumn<double>("ix");
+ QTest::addColumn<double>("iy");
+
+ QTest::newRow("parallel") << 1.0 << 1.0 << 3.0 << 4.0
+ << 5.0 << 6.0 << 7.0 << 9.0
+ << int(QLineF::NoIntersection) << 0.0 << 0.0;
+ QTest::newRow("unbounded") << 1.0 << 1.0 << 5.0 << 5.0
+ << 0.0 << 4.0 << 3.0 << 4.0
+ << int(QLineF::UnboundedIntersection) << 4.0 << 4.0;
+ QTest::newRow("bounded") << 1.0 << 1.0 << 5.0 << 5.0
+ << 0.0 << 4.0 << 5.0 << 4.0
+ << int(QLineF::BoundedIntersection) << 4.0 << 4.0;
+
+ QTest::newRow("almost vertical") << 0.0 << 10.0 << 20.0000000000001 << 10.0
+ << 10.0 << 0.0 << 10.0 << 20.0
+ << int(QLineF::BoundedIntersection) << 10.0 << 10.0;
+
+ QTest::newRow("almost horizontal") << 0.0 << 10.0 << 20.0 << 10.0
+ << 10.0000000000001 << 0.0 << 10.0 << 20.0
+ << int(QLineF::BoundedIntersection) << 10.0 << 10.0;
+
+ QTest::newRow("task 241464") << 100.1599256468623
+ << 100.7861905065196
+ << 100.1599256468604
+ << -9999.78619050651
+ << 10.0 << 50.0 << 190.0 << 50.0
+ << int(QLineF::BoundedIntersection)
+ << 100.1599256468622
+ << 50.0;
+
+ QLineF baseA(0, -50, 0, 50);
+ QLineF baseB(-50, 0, 50, 0);
+
+ for (int i = 0; i < 1000; ++i) {
+ QLineF a = QLineF::fromPolar(50, i);
+ a.setP1(-a.p2());
+
+ QLineF b = QLineF::fromPolar(50, i * 0.997 + 90);
+ b.setP1(-b.p2());
+
+ // make the qFuzzyCompare be a bit more lenient
+ a = a.translated(1, 1);
+ b = b.translated(1, 1);
+
+ QTest::newRow(qPrintable(QString::fromLatin1("rotation-%0").arg(i)))
+ << (double)a.x1() << (double)a.y1() << (double)a.x2() << (double)a.y2()
+ << (double)b.x1() << (double)b.y1() << (double)b.x2() << (double)b.y2()
+ << int(QLineF::BoundedIntersection)
+ << 1.0
+ << 1.0;
+ }
+}
+
+void tst_QLine::testIntersection()
+{
+ QFETCH(double, xa1);
+ QFETCH(double, ya1);
+ QFETCH(double, xa2);
+ QFETCH(double, ya2);
+ QFETCH(double, xb1);
+ QFETCH(double, yb1);
+ QFETCH(double, xb2);
+ QFETCH(double, yb2);
+ QFETCH(int, type);
+ QFETCH(double, ix);
+ QFETCH(double, iy);
+
+ QLineF a(xa1, ya1, xa2, ya2);
+ QLineF b(xb1, yb1, xb2, yb2);
+
+
+ QPointF ip;
+ QLineF::IntersectType itype = a.intersect(b, &ip);
+
+ QCOMPARE(int(itype), type);
+ if (type != QLineF::NoIntersection) {
+ QVERIFY(qAbs(ip.x() - ix) < epsilon);
+ QVERIFY(qAbs(ip.y() - iy) < epsilon);
+ }
+}
+
+void tst_QLine::testLength_data()
+{
+ QTest::addColumn<double>("x1");
+ QTest::addColumn<double>("y1");
+ QTest::addColumn<double>("x2");
+ QTest::addColumn<double>("y2");
+ QTest::addColumn<double>("length");
+ QTest::addColumn<double>("lengthToSet");
+ QTest::addColumn<double>("vx");
+ QTest::addColumn<double>("vy");
+
+ QTest::newRow("[1,0]*2") << 0.0 << 0.0 << 1.0 << 0.0 << 1.0 << 2.0 << 2.0 << 0.0;
+ QTest::newRow("[0,1]*2") << 0.0 << 0.0 << 0.0 << 1.0 << 1.0 << 2.0 << 0.0 << 2.0;
+ QTest::newRow("[-1,0]*2") << 0.0 << 0.0 << -1.0 << 0.0 << 1.0 << 2.0 << -2.0 << 0.0;
+ QTest::newRow("[0,-1]*2") << 0.0 << 0.0 << 0.0 << -1.0 << 1.0 << 2.0 << 0.0 << -2.0;
+ QTest::newRow("[1,1]->|1|") << 0.0 << 0.0 << 1.0 << 1.0
+ << double(SQRT2) << 1.0 << double(UNITX_45) << double(UNITX_45);
+ QTest::newRow("[-1,1]->|1|") << 0.0 << 0.0 << -1.0 << 1.0
+ << double(SQRT2) << 1.0 << double(-UNITX_45) << double(UNITX_45);
+ QTest::newRow("[1,-1]->|1|") << 0.0 << 0.0 << 1.0 << -1.0
+ << double(SQRT2) << 1.0 << double(UNITX_45) << double(-UNITX_45);
+ QTest::newRow("[-1,-1]->|1|") << 0.0 << 0.0 << -1.0 << -1.0
+ << double(SQRT2) << 1.0 << double(-UNITX_45) << double(-UNITX_45);
+ QTest::newRow("[1,0]*2 (2,2)") << 2.0 << 2.0 << 3.0 << 2.0 << 1.0 << 2.0 << 2.0 << 0.0;
+ QTest::newRow("[0,1]*2 (2,2)") << 2.0 << 2.0 << 2.0 << 3.0 << 1.0 << 2.0 << 0.0 << 2.0;
+ QTest::newRow("[-1,0]*2 (2,2)") << 2.0 << 2.0 << 1.0 << 2.0 << 1.0 << 2.0 << -2.0 << 0.0;
+ QTest::newRow("[0,-1]*2 (2,2)") << 2.0 << 2.0 << 2.0 << 1.0 << 1.0 << 2.0 << 0.0 << -2.0;
+ QTest::newRow("[1,1]->|1| (2,2)") << 2.0 << 2.0 << 3.0 << 3.0
+ << double(SQRT2) << 1.0 << double(UNITX_45) << double(UNITX_45);
+ QTest::newRow("[-1,1]->|1| (2,2)") << 2.0 << 2.0 << 1.0 << 3.0
+ << double(SQRT2) << 1.0 << double(-UNITX_45) << double(UNITX_45);
+ QTest::newRow("[1,-1]->|1| (2,2)") << 2.0 << 2.0 << 3.0 << 1.0
+ << double(SQRT2) << 1.0 << double(UNITX_45) << double(-UNITX_45);
+ QTest::newRow("[-1,-1]->|1| (2,2)") << 2.0 << 2.0 << 1.0 << 1.0
+ << double(SQRT2) << 1.0 << double(-UNITX_45) << double(-UNITX_45);
+}
+
+void tst_QLine::testLength()
+{
+ QFETCH(double, x1);
+ QFETCH(double, y1);
+ QFETCH(double, x2);
+ QFETCH(double, y2);
+ QFETCH(double, length);
+ QFETCH(double, lengthToSet);
+ QFETCH(double, vx);
+ QFETCH(double, vy);
+
+ QLineF l(x1, y1, x2, y2);
+ QCOMPARE(l.length(), qreal(length));
+
+ l.setLength(lengthToSet);
+ QCOMPARE(l.length(), qreal(lengthToSet));
+ QCOMPARE(l.dx(), qreal(vx));
+ QCOMPARE(l.dy(), qreal(vy));
+}
+
+
+void tst_QLine::testNormalVector_data()
+{
+ QTest::addColumn<double>("x1");
+ QTest::addColumn<double>("y1");
+ QTest::addColumn<double>("x2");
+ QTest::addColumn<double>("y2");
+ QTest::addColumn<double>("nvx");
+ QTest::addColumn<double>("nvy");
+
+ QTest::newRow("[1, 0]") << 0.0 << 0.0 << 1.0 << 0.0 << 0.0 << -1.0;
+ QTest::newRow("[-1, 0]") << 0.0 << 0.0 << -1.0 << 0.0 << 0.0 << 1.0;
+ QTest::newRow("[0, 1]") << 0.0 << 0.0 << 0.0 << 1.0 << 1.0 << 0.0;
+ QTest::newRow("[0, -1]") << 0.0 << 0.0 << 0.0 << -1.0 << -1.0 << 0.0;
+ QTest::newRow("[2, 3]") << 2.0 << 3.0 << 4.0 << 6.0 << 3.0 << -2.0;
+}
+
+void tst_QLine::testNormalVector()
+{
+ QFETCH(double, x1);
+ QFETCH(double, y1);
+ QFETCH(double, x2);
+ QFETCH(double, y2);
+ QFETCH(double, nvx);
+ QFETCH(double, nvy);
+
+ QLineF l(x1, y1, x2, y2);
+ QLineF n = l.normalVector();
+
+ QCOMPARE(l.x1(), n.x1());
+ QCOMPARE(l.y1(), n.y1());
+
+ QCOMPARE(n.dx(), qreal(nvx));
+ QCOMPARE(n.dy(), qreal(nvy));
+}
+
+void tst_QLine::testAngle_data()
+{
+ QTest::addColumn<double>("xa1");
+ QTest::addColumn<double>("ya1");
+ QTest::addColumn<double>("xa2");
+ QTest::addColumn<double>("ya2");
+ QTest::addColumn<double>("xb1");
+ QTest::addColumn<double>("yb1");
+ QTest::addColumn<double>("xb2");
+ QTest::addColumn<double>("yb2");
+ QTest::addColumn<double>("angle");
+
+ QTest::newRow("parallel") << 1.0 << 1.0 << 3.0 << 4.0
+ << 5.0 << 6.0 << 7.0 << 9.0
+ << 0.0;
+ QTest::newRow("[4,4]-[4,0]") << 1.0 << 1.0 << 5.0 << 5.0
+ << 0.0 << 4.0 << 3.0 << 4.0
+ << 45.0;
+ QTest::newRow("[4,4]-[-4,0]") << 1.0 << 1.0 << 5.0 << 5.0
+ << 3.0 << 4.0 << 0.0 << 4.0
+ << 135.0;
+
+ for (int i=0; i<180; ++i) {
+ QTest::newRow(QString("angle:%1").arg(i).toLatin1())
+ << 0.0 << 0.0 << double(cos(i*M_2PI/360)) << double(sin(i*M_2PI/360))
+ << 0.0 << 0.0 << 1.0 << 0.0
+ << double(i);
+ }
+}
+
+void tst_QLine::testAngle()
+{
+ QFETCH(double, xa1);
+ QFETCH(double, ya1);
+ QFETCH(double, xa2);
+ QFETCH(double, ya2);
+ QFETCH(double, xb1);
+ QFETCH(double, yb1);
+ QFETCH(double, xb2);
+ QFETCH(double, yb2);
+ QFETCH(double, angle);
+
+ QLineF a(xa1, ya1, xa2, ya2);
+ QLineF b(xb1, yb1, xb2, yb2);
+
+ double resultAngle = a.angle(b);
+ QCOMPARE(qRound(resultAngle), qRound(angle));
+}
+
+void tst_QLine::testAngle2_data()
+{
+ QTest::addColumn<qreal>("x1");
+ QTest::addColumn<qreal>("y1");
+ QTest::addColumn<qreal>("x2");
+ QTest::addColumn<qreal>("y2");
+ QTest::addColumn<qreal>("angle");
+
+ QTest::newRow("right") << qreal(0.0) << qreal(0.0) << qreal(10.0) << qreal(0.0) << qreal(0.0);
+ QTest::newRow("left") << qreal(0.0) << qreal(0.0) << qreal(-10.0) << qreal(0.0) << qreal(180.0);
+ QTest::newRow("up") << qreal(0.0) << qreal(0.0) << qreal(0.0) << qreal(-10.0) << qreal(90.0);
+ QTest::newRow("down") << qreal(0.0) << qreal(0.0) << qreal(0.0) << qreal(10.0) << qreal(270.0);
+
+ QTest::newRow("diag a") << qreal(0.0) << qreal(0.0) << qreal(10.0) << qreal(-10.0) << qreal(45.0);
+ QTest::newRow("diag b") << qreal(0.0) << qreal(0.0) << qreal(-10.0) << qreal(-10.0) << qreal(135.0);
+ QTest::newRow("diag c") << qreal(0.0) << qreal(0.0) << qreal(-10.0) << qreal(10.0) << qreal(225.0);
+ QTest::newRow("diag d") << qreal(0.0) << qreal(0.0) << qreal(10.0) << qreal(10.0) << qreal(315.0);
+}
+
+void tst_QLine::testAngle2()
+{
+ QFETCH(qreal, x1);
+ QFETCH(qreal, y1);
+ QFETCH(qreal, x2);
+ QFETCH(qreal, y2);
+ QFETCH(qreal, angle);
+
+ QLineF line(x1, y1, x2, y2);
+ QCOMPARE(line.angle(), angle);
+
+ QLineF polar = QLineF::fromPolar(line.length(), angle);
+
+ QVERIFY(qAbs(line.x1() - polar.x1()) < epsilon);
+ QVERIFY(qAbs(line.y1() - polar.y1()) < epsilon);
+ QVERIFY(qAbs(line.x2() - polar.x2()) < epsilon);
+ QVERIFY(qAbs(line.y2() - polar.y2()) < epsilon);
+}
+
+void tst_QLine::testAngle3()
+{
+ for (int i = -720; i <= 720; ++i) {
+ QLineF line(0, 0, 100, 0);
+ line.setAngle(i);
+ const int expected = (i + 720) % 360;
+
+ QVERIFY2(qAbs(line.angle() - qreal(expected)) < epsilon, qPrintable(QString::fromLatin1("value: %1").arg(i)));
+
+ QCOMPARE(line.length(), qreal(100.0));
+
+ QCOMPARE(QLineF::fromPolar(100.0, i), line);
+ }
+}
+
+void tst_QLine::testAngleTo()
+{
+ QFETCH(qreal, xa1);
+ QFETCH(qreal, ya1);
+ QFETCH(qreal, xa2);
+ QFETCH(qreal, ya2);
+ QFETCH(qreal, xb1);
+ QFETCH(qreal, yb1);
+ QFETCH(qreal, xb2);
+ QFETCH(qreal, yb2);
+ QFETCH(qreal, angle);
+
+ QLineF a(xa1, ya1, xa2, ya2);
+ QLineF b(xb1, yb1, xb2, yb2);
+
+ const qreal resultAngle = a.angleTo(b);
+ QVERIFY(qAbs(resultAngle - angle) < epsilon);
+
+ a.translate(b.p1() - a.p1());
+ a.setAngle(a.angle() + resultAngle);
+ a.setLength(b.length());
+
+ QCOMPARE(a, b);
+}
+
+void tst_QLine::testAngleTo_data()
+{
+ QTest::addColumn<qreal>("xa1");
+ QTest::addColumn<qreal>("ya1");
+ QTest::addColumn<qreal>("xa2");
+ QTest::addColumn<qreal>("ya2");
+ QTest::addColumn<qreal>("xb1");
+ QTest::addColumn<qreal>("yb1");
+ QTest::addColumn<qreal>("xb2");
+ QTest::addColumn<qreal>("yb2");
+ QTest::addColumn<qreal>("angle");
+
+ QTest::newRow("parallel") << qreal(1.0) << qreal(1.0) << qreal(3.0) << qreal(4.0)
+ << qreal(5.0) << qreal(6.0) << qreal(7.0) << qreal(9.0)
+ << qreal(0.0);
+ QTest::newRow("[4,4]-[4,0]") << qreal(1.0) << qreal(1.0) << qreal(5.0) << qreal(5.0)
+ << qreal(0.0) << qreal(4.0) << qreal(3.0) << qreal(4.0)
+ << qreal(45.0);
+ QTest::newRow("[4,4]-[-4,0]") << qreal(1.0) << qreal(1.0) << qreal(5.0) << qreal(5.0)
+ << qreal(3.0) << qreal(4.0) << qreal(0.0) << qreal(4.0)
+ << qreal(225.0);
+
+ for (int i = 0; i < 360; ++i) {
+ const QLineF l = QLineF::fromPolar(1, i);
+ QTest::newRow(QString("angle:%1").arg(i).toLatin1())
+ << qreal(0.0) << qreal(0.0) << qreal(1.0) << qreal(0.0)
+ << qreal(0.0) << qreal(0.0) << l.p2().x() << l.p2().y()
+ << qreal(i);
+ }
+}
+
+QTEST_MAIN(tst_QLine)
+#include "tst_qline.moc"
diff --git a/tests/auto/corelib/tools/qlist/.gitignore b/tests/auto/corelib/tools/qlist/.gitignore
new file mode 100644
index 0000000000..df208b6e78
--- /dev/null
+++ b/tests/auto/corelib/tools/qlist/.gitignore
@@ -0,0 +1 @@
+tst_qlist
diff --git a/tests/auto/corelib/tools/qlist/qlist.pro b/tests/auto/corelib/tools/qlist/qlist.pro
new file mode 100644
index 0000000000..be599b7b85
--- /dev/null
+++ b/tests/auto/corelib/tools/qlist/qlist.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qlist.cpp
+
+
+
diff --git a/tests/auto/corelib/tools/qlist/tst_qlist.cpp b/tests/auto/corelib/tools/qlist/tst_qlist.cpp
new file mode 100644
index 0000000000..3901b6ffe8
--- /dev/null
+++ b/tests/auto/corelib/tools/qlist/tst_qlist.cpp
@@ -0,0 +1,692 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <QList>
+
+//TESTED_CLASS=QList
+//TESTED_FILES=corelib/tools/qlist.h corelib/tools/qlist.cpp
+
+/*!
+ \class tst_QVector
+ \internal
+ \since 4.5
+ \brief Test Qt's class QList.
+ */
+class tst_QList : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void length() const;
+ void lengthSignature() const;
+ void append() const;
+ void prepend() const;
+ void mid() const;
+ void at() const;
+ void first() const;
+ void last() const;
+ void begin() const;
+ void end() const;
+ void contains() const;
+ void count() const;
+ void empty() const;
+ void endsWith() const;
+ void lastIndexOf() const;
+ void move() const;
+ void removeAll() const;
+ void removeAt() const;
+ void removeOne() const;
+ void replace() const;
+ void startsWith() const;
+ void swap() const;
+ void takeAt() const;
+ void takeFirst() const;
+ void takeLast() const;
+ void toSet() const;
+ void toStdList() const;
+ void toVector() const;
+ void value() const;
+
+ void testSTLIterators() const;
+ void testOperators() const;
+
+ void initializeList() const;
+};
+
+void tst_QList::length() const
+{
+ /* Empty list. */
+ {
+ const QList<int> list;
+ QCOMPARE(list.length(), 0);
+ }
+
+ /* One entry. */
+ {
+ QList<int> list;
+ list.append(0);
+ QCOMPARE(list.length(), 1);
+ }
+
+ /* Two entries. */
+ {
+ QList<int> list;
+ list.append(0);
+ list.append(1);
+ QCOMPARE(list.length(), 2);
+ }
+
+ /* Three entries. */
+ {
+ QList<int> list;
+ list.append(0);
+ list.append(0);
+ list.append(0);
+ QCOMPARE(list.length(), 3);
+ }
+}
+
+void tst_QList::lengthSignature() const
+{
+ /* Constness. */
+ {
+ const QList<int> list;
+ /* The function should be const. */
+ list.length();
+ }
+}
+
+void tst_QList::append() const
+{
+ /* test append(const QList<T> &) function */
+ QString one("one");
+ QString two("two");
+ QString three("three");
+ QString four("four");
+ QList<QString> list1;
+ QList<QString> list2;
+ QList<QString> listTotal;
+ list1.append(one);
+ list1.append(two);
+ list2.append(three);
+ list2.append(four);
+ list1.append(list2);
+ qDebug() << list1;
+ listTotal.append(one);
+ listTotal.append(two);
+ listTotal.append(three);
+ listTotal.append(four);
+ QCOMPARE(list1, listTotal);
+
+}
+
+void tst_QList::prepend() const
+{
+ QList<QString *> list;
+ QString *str1 = new QString;
+ list.prepend(str1);
+ QVERIFY(list.size() == 1);
+ QVERIFY(list.at(0) == str1);
+ QString *str2 = new QString;
+ list.prepend(str2);
+ QVERIFY(list.size() == 2);
+ QVERIFY(list.at(0) == str2);
+ QVERIFY(list.at(1) == str1);
+ QString *str3 = new QString;
+ list.prepend(str3);
+ QVERIFY(list.size() == 3);
+ QVERIFY(list.at(0) == str3);
+ QVERIFY(list.at(1) == str2);
+ QVERIFY(list.at(2) == str1);
+ list.removeAll(str2);
+ delete str2;
+ QVERIFY(list.size() == 2);
+ QVERIFY(list.at(0) == str3);
+ QVERIFY(list.at(1) == str1);
+ QString *str4 = new QString;
+ list.prepend(str4);
+ QVERIFY(list.size() == 3);
+ QVERIFY(list.at(0) == str4);
+ QVERIFY(list.at(1) == str3);
+ QVERIFY(list.at(2) == str1);
+ qDeleteAll(list);
+ list.clear();
+}
+
+void tst_QList::mid() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz" << "bak" << "buck" << "hello" << "kitty";
+
+ QCOMPARE(list.mid(3, 3),
+ QList<QString>() << "bak" << "buck" << "hello");
+
+ QList<int> list1;
+ QCOMPARE(list1.mid(1, 1).length(), 0);
+}
+
+void tst_QList::at() const
+{
+ // test at() and make sure it functions correctly with some simple list manipulation.
+ QList<QString> list;
+
+ // create a list
+ list << "foo" << "bar" << "baz";
+ QVERIFY(list.size() == 3);
+ QCOMPARE(list.at(0), QLatin1String("foo"));
+ QCOMPARE(list.at(1), QLatin1String("bar"));
+ QCOMPARE(list.at(2), QLatin1String("baz"));
+
+ // append an item
+ list << "hello";
+ QVERIFY(list.size() == 4);
+ QCOMPARE(list.at(0), QLatin1String("foo"));
+ QCOMPARE(list.at(1), QLatin1String("bar"));
+ QCOMPARE(list.at(2), QLatin1String("baz"));
+ QCOMPARE(list.at(3), QLatin1String("hello"));
+
+ // remove an item
+ list.removeAt(1);
+ QVERIFY(list.size() == 3);
+ QCOMPARE(list.at(0), QLatin1String("foo"));
+ QCOMPARE(list.at(1), QLatin1String("baz"));
+ QCOMPARE(list.at(2), QLatin1String("hello"));
+}
+
+void tst_QList::first() const
+{
+ QList<QString> list;
+ list << "foo" << "bar";
+
+ QCOMPARE(list.first(), QLatin1String("foo"));
+
+ // remove an item, make sure it still works
+ list.pop_front();
+ QVERIFY(list.size() == 1);
+ QCOMPARE(list.first(), QLatin1String("bar"));
+}
+
+void tst_QList::last() const
+{
+ QList<QString> list;
+ list << "foo" << "bar";
+
+ QCOMPARE(list.last(), QLatin1String("bar"));
+
+ // remove an item, make sure it still works
+ list.pop_back();
+ QVERIFY(list.size() == 1);
+ QCOMPARE(list.last(), QLatin1String("foo"));
+}
+
+void tst_QList::begin() const
+{
+ QList<QString> list;
+ list << "foo" << "bar";
+
+ QCOMPARE(*list.begin(), QLatin1String("foo"));
+
+ // remove an item, make sure it still works
+ list.pop_front();
+ QVERIFY(list.size() == 1);
+ QCOMPARE(*list.begin(), QLatin1String("bar"));
+}
+
+void tst_QList::end() const
+{
+ QList<QString> list;
+ list << "foo" << "bar";
+
+ QCOMPARE(*--list.end(), QLatin1String("bar"));
+
+ // remove an item, make sure it still works
+ list.pop_back();
+ QVERIFY(list.size() == 1);
+ QCOMPARE(*--list.end(), QLatin1String("foo"));
+}
+
+void tst_QList::contains() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ QVERIFY(list.contains(QLatin1String("foo")) == true);
+ QVERIFY(list.contains(QLatin1String("pirates")) != true);
+
+ // add it and make sure it matches
+ list.append(QLatin1String("ninjas"));
+ QVERIFY(list.contains(QLatin1String("ninjas")) == true);
+}
+
+void tst_QList::count() const
+{
+ QList<QString> list;
+
+ // starts empty
+ QVERIFY(list.count() == 0);
+
+ // goes up
+ list.append(QLatin1String("foo"));
+ QVERIFY(list.count() == 1);
+
+ // and up
+ list.append(QLatin1String("bar"));
+ QVERIFY(list.count() == 2);
+
+ // and down
+ list.pop_back();
+ QVERIFY(list.count() == 1);
+
+ // and empty. :)
+ list.pop_back();
+ QVERIFY(list.count() == 0);
+}
+
+void tst_QList::empty() const
+{
+ QList<QString> list;
+
+ // make sure it starts empty
+ QVERIFY(list.empty());
+
+ // and doesn't stay empty
+ list.append(QLatin1String("foo"));
+ QVERIFY(!list.empty());
+
+ // and goes back to being empty
+ list.pop_back();
+ QVERIFY(list.empty());
+}
+
+void tst_QList::endsWith() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ // test it returns correctly in both cases
+ QVERIFY(list.endsWith(QLatin1String("baz")));
+ QVERIFY(!list.endsWith(QLatin1String("bar")));
+
+ // remove an item and make sure the end item changes
+ list.pop_back();
+ QVERIFY(list.endsWith(QLatin1String("bar")));
+}
+
+void tst_QList::lastIndexOf() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ // one instance of the target item
+ QVERIFY(list.lastIndexOf(QLatin1String("baz")) == 2);
+
+ // shouldn't find this
+ QVERIFY(list.lastIndexOf(QLatin1String("shouldntfindme")) == -1);
+
+ // multiple instances
+ list.append("baz");
+ list.append("baz");
+ QVERIFY(list.lastIndexOf(QLatin1String("baz")) == 4);
+
+ // search from the middle to find the last one
+ QVERIFY(list.lastIndexOf(QLatin1String("baz"), 3) == 3);
+
+ // try find none
+ QVERIFY(list.lastIndexOf(QLatin1String("baz"), 1) == -1);
+}
+
+void tst_QList::move() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ // move an item
+ list.move(0, list.count() - 1);
+ QCOMPARE(list, QList<QString>() << "bar" << "baz" << "foo");
+
+ // move it back
+ list.move(list.count() - 1, 0);
+ QCOMPARE(list, QList<QString>() << "foo" << "bar" << "baz");
+
+ // move an item in the middle
+ list.move(1, 0);
+ QCOMPARE(list, QList<QString>() << "bar" << "foo" << "baz");
+}
+
+void tst_QList::removeAll() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ // remove one instance
+ list.removeAll(QLatin1String("bar"));
+ QCOMPARE(list, QList<QString>() << "foo" << "baz");
+
+ // many instances
+ list << "foo" << "bar" << "baz";
+ list << "foo" << "bar" << "baz";
+ list << "foo" << "bar" << "baz";
+ list.removeAll(QLatin1String("bar"));
+ QCOMPARE(list, QList<QString>() << "foo" << "baz" << "foo" << "baz" << "foo" << "baz" << "foo" << "baz");
+
+ // try remove something that doesn't exist
+ list.removeAll(QLatin1String("you won't remove anything I hope"));
+ QCOMPARE(list, QList<QString>() << "foo" << "baz" << "foo" << "baz" << "foo" << "baz" << "foo" << "baz");
+}
+
+void tst_QList::removeAt() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ // middle
+ list.removeAt(1);
+ QCOMPARE(list, QList<QString>() << "foo" << "baz");
+
+ // start
+ list.removeAt(0);
+ QCOMPARE(list, QList<QString>() << "baz");
+
+ // final
+ list.removeAt(0);
+ QCOMPARE(list, QList<QString>());
+}
+
+void tst_QList::removeOne() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ // middle
+ list.removeOne(QLatin1String("bar"));
+ QCOMPARE(list, QList<QString>() << "foo" << "baz");
+
+ // start
+ list.removeOne(QLatin1String("foo"));
+ QCOMPARE(list, QList<QString>() << "baz");
+
+ // last
+ list.removeOne(QLatin1String("baz"));
+ QCOMPARE(list, QList<QString>());
+
+ // make sure it really only removes one :)
+ list << "foo" << "foo";
+ list.removeOne("foo");
+ QCOMPARE(list, QList<QString>() << "foo");
+
+ // try remove something that doesn't exist
+ list.removeOne(QLatin1String("you won't remove anything I hope"));
+ QCOMPARE(list, QList<QString>() << "foo");
+}
+
+void tst_QList::replace() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ // start
+ list.replace(0, "moo");
+ QCOMPARE(list, QList<QString>() << "moo" << "bar" << "baz");
+
+ // middle
+ list.replace(1, "cow");
+ QCOMPARE(list, QList<QString>() << "moo" << "cow" << "baz");
+
+ // end
+ list.replace(2, "milk");
+ QCOMPARE(list, QList<QString>() << "moo" << "cow" << "milk");
+}
+
+void tst_QList::startsWith() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ // make sure it starts ok
+ QVERIFY(list.startsWith(QLatin1String("foo")));
+
+ // remove an item
+ list.removeFirst();
+ QVERIFY(list.startsWith(QLatin1String("bar")));
+}
+
+void tst_QList::swap() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ // swap
+ list.swap(0, 2);
+ QCOMPARE(list, QList<QString>() << "baz" << "bar" << "foo");
+
+ // swap again
+ list.swap(1, 2);
+ QCOMPARE(list, QList<QString>() << "baz" << "foo" << "bar");
+
+ QList<QString> list2;
+ list2 << "alpha" << "beta";
+
+ list.swap(list2);
+ QCOMPARE(list, QList<QString>() << "alpha" << "beta");
+ QCOMPARE(list2, QList<QString>() << "baz" << "foo" << "bar");
+}
+
+void tst_QList::takeAt() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ QCOMPARE(list.takeAt(0), QLatin1String("foo"));
+ QVERIFY(list.size() == 2);
+ QCOMPARE(list.takeAt(1), QLatin1String("baz"));
+ QVERIFY(list.size() == 1);
+ QCOMPARE(list.takeAt(0), QLatin1String("bar"));
+ QVERIFY(list.size() == 0);
+}
+
+void tst_QList::takeFirst() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ QCOMPARE(list.takeFirst(), QLatin1String("foo"));
+ QVERIFY(list.size() == 2);
+ QCOMPARE(list.takeFirst(), QLatin1String("bar"));
+ QVERIFY(list.size() == 1);
+ QCOMPARE(list.takeFirst(), QLatin1String("baz"));
+ QVERIFY(list.size() == 0);
+}
+
+void tst_QList::takeLast() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ QCOMPARE(list.takeLast(), QLatin1String("baz"));
+ QCOMPARE(list.takeLast(), QLatin1String("bar"));
+ QCOMPARE(list.takeLast(), QLatin1String("foo"));
+}
+
+void tst_QList::toSet() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ // no duplicates
+ QCOMPARE(list.toSet(), QSet<QString>() << "foo" << "bar" << "baz");
+ QCOMPARE(list, QList<QString>() << "foo" << "bar" << "baz");
+
+ // duplicates (is this more of a QSet test?)
+ list << "foo" << "bar" << "baz";
+ QCOMPARE(list.toSet(), QSet<QString>() << "foo" << "bar" << "baz");
+ QCOMPARE(list, QList<QString>() << "foo" << "bar" << "baz" << "foo" << "bar" << "baz");
+}
+
+void tst_QList::toStdList() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ // yuck.
+ std::list<QString> slist;
+ slist.push_back(QLatin1String("foo"));
+ slist.push_back(QLatin1String("bar"));
+ slist.push_back(QLatin1String("baz"));
+
+ QCOMPARE(list.toStdList(), slist);
+ QCOMPARE(list, QList<QString>() << "foo" << "bar" << "baz");
+}
+
+void tst_QList::toVector() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ QCOMPARE(list.toVector(), QVector<QString>() << "foo" << "bar" << "baz");
+}
+
+void tst_QList::value() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ // test real values
+ QCOMPARE(list.value(0), QLatin1String("foo"));
+ QCOMPARE(list.value(2), QLatin1String("baz"));
+
+ // test empty default
+ QCOMPARE(list.value(3), QString());
+ QCOMPARE(list.value(-1), QString());
+
+ // test defaults
+ QLatin1String defaultstr("default");
+ QCOMPARE(list.value(-1, defaultstr), defaultstr);
+ QCOMPARE(list.value(3, defaultstr), defaultstr);
+}
+
+void tst_QList::testOperators() const
+{
+ QList<QString> list;
+ list << "foo" << "bar" << "baz";
+
+ QList<QString> listtwo;
+ listtwo << "foo" << "bar" << "baz";
+
+ // test equal
+ QVERIFY(list == listtwo);
+
+ // not equal
+ listtwo.append("not equal");
+ QVERIFY(list != listtwo);
+
+ // +=
+ list += listtwo;
+ QVERIFY(list.size() == 7);
+ QVERIFY(listtwo.size() == 4);
+ QCOMPARE(list, QList<QString>() << "foo" << "bar" << "baz" << "foo" << "bar" << "baz" << "not equal");
+
+ // =
+ list = listtwo;
+ QCOMPARE(list, listtwo);
+ QCOMPARE(list, QList<QString>() << "foo" << "bar" << "baz" << "not equal");
+
+ // []
+ QCOMPARE(list[0], QLatin1String("foo"));
+ QCOMPARE(list[list.size() - 1], QLatin1String("not equal"));
+}
+
+void tst_QList::testSTLIterators() const
+{
+ QList<QString> list;
+
+ // create a list
+ list << "foo" << "bar" << "baz";
+ QList<QString>::iterator it = list.begin();
+ QCOMPARE(*it, QLatin1String("foo")); it++;
+ QCOMPARE(*it, QLatin1String("bar")); it++;
+ QCOMPARE(*it, QLatin1String("baz")); it++;
+ QCOMPARE(it, list.end()); it--;
+
+ // walk backwards
+ QCOMPARE(*it, QLatin1String("baz")); it--;
+ QCOMPARE(*it, QLatin1String("bar")); it--;
+ QCOMPARE(*it, QLatin1String("foo"));
+
+ // test erase
+ it = list.erase(it);
+ QVERIFY(list.size() == 2);
+ QCOMPARE(*it, QLatin1String("bar"));
+
+ // test multiple erase
+ it = list.erase(it, it + 2);
+ QVERIFY(list.size() == 0);
+ QCOMPARE(it, list.end());
+
+ // insert again
+ it = list.insert(it, QLatin1String("foo"));
+ QVERIFY(list.size() == 1);
+ QCOMPARE(*it, QLatin1String("foo"));
+
+ // insert again
+ it = list.insert(it, QLatin1String("bar"));
+ QVERIFY(list.size() == 2);
+ QCOMPARE(*it++, QLatin1String("bar"));
+ QCOMPARE(*it, QLatin1String("foo"));
+}
+
+void tst_QList::initializeList() const
+{
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+ QList<int> v1{2,3,4};
+ QCOMPARE(v1, QList<int>() << 2 << 3 << 4);
+ QCOMPARE(v1, (QList<int>{2,3,4}));
+
+ QList<QList<int>> v2{ v1, {1}, QList<int>(), {2,3,4} };
+ QList<QList<int>> v3;
+ v3 << v1 << (QList<int>() << 1) << QList<int>() << v1;
+ QCOMPARE(v3, v2);
+#endif
+}
+
+QTEST_APPLESS_MAIN(tst_QList)
+#include "tst_qlist.moc"
diff --git a/tests/auto/corelib/tools/qlocale/.gitignore b/tests/auto/corelib/tools/qlocale/.gitignore
new file mode 100644
index 0000000000..21ab80a2af
--- /dev/null
+++ b/tests/auto/corelib/tools/qlocale/.gitignore
@@ -0,0 +1,3 @@
+tst_qlocale
+syslocaleapp/syslocaleapp
+syslocaleapp/syslocaleapp.exe
diff --git a/tests/auto/corelib/tools/qlocale/qlocale.pro b/tests/auto/corelib/tools/qlocale/qlocale.pro
new file mode 100644
index 0000000000..4c4a31e0de
--- /dev/null
+++ b/tests/auto/corelib/tools/qlocale/qlocale.pro
@@ -0,0 +1,4 @@
+TEMPLATE = subdirs
+
+SUBDIRS += test \
+ syslocaleapp \ No newline at end of file
diff --git a/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.cpp b/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.cpp
new file mode 100644
index 0000000000..030fc4a728
--- /dev/null
+++ b/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.cpp
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QLocale>
+#include <QCoreApplication>
+#include <QTextStream>
+
+int main(int argc, char** argv)
+{
+ QCoreApplication app(argc, argv);
+ QLocale l;
+ QTextStream str(stdout);
+ str << l.name();
+
+ return 0;
+}
diff --git a/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.pro b/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.pro
new file mode 100644
index 0000000000..d3188c020d
--- /dev/null
+++ b/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.pro
@@ -0,0 +1,8 @@
+SOURCES += syslocaleapp.cpp
+DESTDIR = ./
+
+QT = core
+
+# no install rule for application used by test
+INSTALLS =
+CONFIG -= app_bundle
diff --git a/tests/auto/corelib/tools/qlocale/test/test.pro b/tests/auto/corelib/tools/qlocale/test/test.pro
new file mode 100644
index 0000000000..8117708c46
--- /dev/null
+++ b/tests/auto/corelib/tools/qlocale/test/test.pro
@@ -0,0 +1,41 @@
+load(qttest_p4)
+SOURCES += ../tst_qlocale.cpp
+
+!wince*: {
+TARGET = ../tst_qlocale
+
+win32: {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_qlocale
+} else {
+ TARGET = ../../release/tst_qlocale
+ }
+}
+} else {
+ TARGET = tst_qlocale
+}
+
+
+
+QT = core
+QT += network
+embedded: QT += gui
+
+wince*: {
+ addFiles.files = \
+ ../syslocaleapp
+
+ addFiles.path = "\\Program Files\\tst_qlocale"
+ DEPLOYMENT += addFiles
+}
+
+symbian:contains(S60_VERSION,3.2) {
+ # This test case compilation crashes on 3.2 for gcce if paging is on
+ MMP_RULES -= PAGED
+ custom_paged_rule = "$${LITERAL_HASH}ifndef GCCE"\
+ "PAGED" \
+ "$${LITERAL_HASH}endif"
+ MMP_RULES += custom_paged_rule
+}
+
+symbian: INCLUDEPATH *= $$MW_LAYER_SYSTEMINCLUDE # Needed for e32svr.h in S^3 envs
diff --git a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
new file mode 100644
index 0000000000..b9e5fd93e1
--- /dev/null
+++ b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
@@ -0,0 +1,2282 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <math.h>
+#include <qglobal.h>
+#include <qtextcodec.h>
+#include <qdatetime.h>
+#include <float.h>
+
+#include <qlocale.h>
+#include <qnumeric.h>
+
+#ifdef Q_OS_LINUX
+# include <fenv.h>
+#endif
+
+#ifdef Q_OS_WINCE
+#include <qcoreapplication.h>
+#include <windows.h> // needed for GetUserDefaultLCID
+#define _control87 _controlfp
+extern "C" DWORD GetThreadLocale(void) {
+ return GetUserDefaultLCID();
+}
+
+#endif
+
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
+# include <stdlib.h>
+#endif
+
+#if defined(Q_OS_SYMBIAN)
+# include <e32std.h>
+# include <private/qcore_symbian_p.h>
+#endif
+
+Q_DECLARE_METATYPE(qlonglong)
+Q_DECLARE_METATYPE(QDate)
+Q_DECLARE_METATYPE(QLocale::FormatType)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QLocale : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QLocale();
+
+private slots:
+ void windowsDefaultLocale();
+ void macDefaultLocale();
+
+ void ctor();
+ void emptyCtor();
+ void unixLocaleName();
+ void double_conversion_data();
+ void double_conversion();
+ void long_long_conversion_data();
+ void long_long_conversion();
+ void long_long_conversion_extra();
+ void testInfAndNan();
+ void fpExceptions();
+ void negativeZero();
+ void dayOfWeek();
+ void dayOfWeek_data();
+ void formatDate();
+ void formatDate_data();
+ void formatTime();
+ void formatTime_data();
+ void formatDateTime();
+ void formatDateTime_data();
+ void toDateTime_data();
+ void toDateTime();
+ void negativeNumbers();
+ void numberOptions();
+ void testNames();
+ void dayName_data();
+ void dayName();
+ void standaloneDayName_data();
+ void standaloneDayName();
+ void underflowOverflow();
+ void measurementSystems_data();
+ void measurementSystems();
+ void systemMeasurementSystems_data();
+ void systemMeasurementSystems();
+
+ void dateFormat();
+ void timeFormat();
+ void dateTimeFormat();
+ void monthName();
+ void standaloneMonthName();
+
+ // QSystemLocale tests
+ void queryDateTime();
+ void queryMeasureSystem_data();
+ void queryMeasureSystem();
+#if defined(Q_OS_SYMBIAN)
+ void symbianSystemLocale();
+#endif
+
+ void ampm();
+ void currency();
+ void quoteString();
+ void uiLanguages();
+ void weekendDays();
+ void listPatterns();
+
+private:
+ QString m_decimal, m_thousand, m_sdate, m_ldate, m_time;
+};
+
+tst_QLocale::tst_QLocale()
+{
+ qRegisterMetaType<QLocale::FormatType>("QLocale::FormatType");
+}
+
+void tst_QLocale::ctor()
+{
+#ifdef Q_OS_WINCE
+ int argc = 1;
+ char argv[20] = "tst_qlocale.exe";
+ QCoreApplication app(argc, (char**)&argv);
+#endif
+ QLocale default_locale = QLocale::system();
+ QLocale::Language default_lang = default_locale.language();
+ QLocale::Country default_country = default_locale.country();
+
+ qDebug("Default: %s/%s", QLocale::languageToString(default_lang).toLatin1().constData(),
+ QLocale::countryToString(default_country).toLatin1().constData());
+
+ {
+ QLocale l;
+ QVERIFY(l.language() == default_lang);
+ QVERIFY(l.country() == default_country);
+ }
+
+#define TEST_CTOR(req_lang, req_country, exp_lang, exp_country) \
+ { \
+ QLocale l(QLocale::req_lang, QLocale::req_country); \
+ QCOMPARE(l.language(), exp_lang); \
+ QCOMPARE(l.country(), exp_country); \
+ }
+ {
+ QLocale l(QLocale::C, QLocale::AnyCountry);
+ QCOMPARE(l.language(), QLocale::C);
+ QCOMPARE(l.country(), QLocale::AnyCountry);
+ }
+ TEST_CTOR(AnyLanguage, AnyCountry, default_lang, default_country)
+ TEST_CTOR(C, AnyCountry, QLocale::C, QLocale::AnyCountry)
+ TEST_CTOR(Aymara, AnyCountry, default_lang, default_country)
+ TEST_CTOR(Aymara, France, default_lang, default_country)
+
+ TEST_CTOR(English, AnyCountry, QLocale::English, QLocale::UnitedStates)
+ TEST_CTOR(English, UnitedStates, QLocale::English, QLocale::UnitedStates)
+ TEST_CTOR(English, France, QLocale::English, QLocale::UnitedStates)
+ TEST_CTOR(English, UnitedKingdom, QLocale::English, QLocale::UnitedKingdom)
+
+ TEST_CTOR(French, France, QLocale::French, QLocale::France)
+ TEST_CTOR(C, France, QLocale::C, QLocale::AnyCountry)
+ TEST_CTOR(Spanish, LatinAmericaAndTheCaribbean, QLocale::Spanish, QLocale::LatinAmericaAndTheCaribbean)
+
+ QLocale::setDefault(QLocale(QLocale::English, QLocale::France));
+
+ {
+ QLocale l;
+ QVERIFY(l.language() == QLocale::English);
+ QVERIFY(l.country() == QLocale::UnitedStates);
+ }
+
+ TEST_CTOR(French, France, QLocale::French, QLocale::France)
+ TEST_CTOR(English, UnitedKingdom, QLocale::English, QLocale::UnitedKingdom)
+
+ TEST_CTOR(French, France, QLocale::French, QLocale::France)
+ TEST_CTOR(C, AnyCountry, QLocale::C, QLocale::AnyCountry)
+ TEST_CTOR(C, France, QLocale::C, QLocale::AnyCountry)
+ TEST_CTOR(Aymara, AnyCountry, QLocale::English, QLocale::UnitedStates)
+
+ QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedKingdom));
+
+ {
+ QLocale l;
+ QVERIFY(l.language() == QLocale::English);
+ QVERIFY(l.country() == QLocale::UnitedKingdom);
+ }
+
+ TEST_CTOR(French, France, QLocale::French, QLocale::France)
+ TEST_CTOR(English, UnitedKingdom, QLocale::English, QLocale::UnitedKingdom)
+
+ TEST_CTOR(C, AnyCountry, QLocale::C, QLocale::AnyCountry)
+ TEST_CTOR(C, France, QLocale::C, QLocale::AnyCountry)
+
+ QLocale::setDefault(QLocale(QLocale::Aymara, QLocale::France));
+
+ {
+ QLocale l;
+ QVERIFY(l.language() == QLocale::English);
+ QVERIFY(l.country() == QLocale::UnitedKingdom);
+ }
+
+ TEST_CTOR(Aymara, AnyCountry, QLocale::English, QLocale::UnitedKingdom)
+ TEST_CTOR(Aymara, France, QLocale::English, QLocale::UnitedKingdom)
+
+ TEST_CTOR(English, AnyCountry, QLocale::English, QLocale::UnitedStates)
+ TEST_CTOR(English, UnitedStates, QLocale::English, QLocale::UnitedStates)
+ TEST_CTOR(English, France, QLocale::English, QLocale::UnitedStates)
+ TEST_CTOR(English, UnitedKingdom, QLocale::English, QLocale::UnitedKingdom)
+
+ TEST_CTOR(French, France, QLocale::French, QLocale::France)
+ TEST_CTOR(C, AnyCountry, QLocale::C, QLocale::AnyCountry)
+ TEST_CTOR(C, France, QLocale::C, QLocale::AnyCountry)
+
+ QLocale::setDefault(QLocale(QLocale::Aymara, QLocale::AnyCountry));
+
+ {
+ QLocale l;
+ QVERIFY(l.language() == QLocale::English);
+ QVERIFY(l.country() == QLocale::UnitedKingdom);
+ }
+
+
+ TEST_CTOR(Aymara, AnyCountry, QLocale::English, QLocale::UnitedKingdom)
+ TEST_CTOR(Aymara, France, QLocale::English, QLocale::UnitedKingdom)
+
+ TEST_CTOR(English, AnyCountry, QLocale::English, QLocale::UnitedStates)
+ TEST_CTOR(English, UnitedStates, QLocale::English, QLocale::UnitedStates)
+ TEST_CTOR(English, France, QLocale::English, QLocale::UnitedStates)
+ TEST_CTOR(English, UnitedKingdom, QLocale::English, QLocale::UnitedKingdom)
+
+ TEST_CTOR(French, France, QLocale::French, QLocale::France)
+ TEST_CTOR(C, AnyCountry, QLocale::C, QLocale::AnyCountry)
+ TEST_CTOR(C, France, QLocale::C, QLocale::AnyCountry)
+
+ TEST_CTOR(Arabic, AnyCountry, QLocale::Arabic, QLocale::SaudiArabia)
+ TEST_CTOR(Dutch, AnyCountry, QLocale::Dutch, QLocale::Netherlands)
+ TEST_CTOR(German, AnyCountry, QLocale::German, QLocale::Germany)
+ TEST_CTOR(Greek, AnyCountry, QLocale::Greek, QLocale::Greece)
+ TEST_CTOR(Malay, AnyCountry, QLocale::Malay, QLocale::Malaysia)
+ TEST_CTOR(Persian, AnyCountry, QLocale::Persian, QLocale::Iran)
+ TEST_CTOR(Portuguese, AnyCountry, QLocale::Portuguese, QLocale::Portugal)
+ TEST_CTOR(Serbian, AnyCountry, QLocale::Serbian, QLocale::SerbiaAndMontenegro)
+ TEST_CTOR(Somali, AnyCountry, QLocale::Somali, QLocale::Somalia)
+ TEST_CTOR(Spanish, AnyCountry, QLocale::Spanish, QLocale::Spain)
+ TEST_CTOR(Swedish, AnyCountry, QLocale::Swedish, QLocale::Sweden)
+ TEST_CTOR(Uzbek, AnyCountry, QLocale::Uzbek, QLocale::Uzbekistan)
+
+#undef TEST_CTOR
+
+#define TEST_CTOR(req_lc, exp_lang, exp_country) \
+ { \
+ QLocale l(req_lc); \
+ QVERIFY2(l.language() == QLocale::exp_lang \
+ && l.country() == QLocale::exp_country, \
+ QString("requested: \"" + QString(req_lc) + "\", got: " \
+ + QLocale::languageToString(l.language()) \
+ + "/" + QLocale::countryToString(l.country())).toLatin1().constData()); \
+ }
+
+ QLocale::setDefault(QLocale(QLocale::C));
+
+ TEST_CTOR("C", C, AnyCountry)
+ TEST_CTOR("bla", C, AnyCountry)
+ TEST_CTOR("zz", C, AnyCountry)
+ TEST_CTOR("zz_zz", C, AnyCountry)
+ TEST_CTOR("zz...", C, AnyCountry)
+ TEST_CTOR("", C, AnyCountry)
+ TEST_CTOR("en/", C, AnyCountry)
+ TEST_CTOR(QString::null, C, AnyCountry)
+ TEST_CTOR("en", English, UnitedStates)
+ TEST_CTOR("en", English, UnitedStates)
+ TEST_CTOR("en.", English, UnitedStates)
+ TEST_CTOR("en@", English, UnitedStates)
+ TEST_CTOR("en.@", English, UnitedStates)
+ TEST_CTOR("en_", English, UnitedStates)
+ TEST_CTOR("en_U", English, UnitedStates)
+ TEST_CTOR("en_.", English, UnitedStates)
+ TEST_CTOR("en_.@", English, UnitedStates)
+ TEST_CTOR("en.bla", English, UnitedStates)
+ TEST_CTOR("en@bla", English, UnitedStates)
+ TEST_CTOR("en_blaaa", English, UnitedStates)
+ TEST_CTOR("en_zz", English, UnitedStates)
+ TEST_CTOR("en_GB", English, UnitedKingdom)
+ TEST_CTOR("en_GB.bla", English, UnitedKingdom)
+ TEST_CTOR("en_GB@.bla", English, UnitedKingdom)
+ TEST_CTOR("en_GB@bla", English, UnitedKingdom)
+ TEST_CTOR("en-GB", English, UnitedKingdom)
+ TEST_CTOR("en-GB@bla", English, UnitedKingdom)
+
+ QVERIFY(QLocale::Norwegian == QLocale::NorwegianBokmal);
+ TEST_CTOR("no", Norwegian, Norway)
+ TEST_CTOR("nb", Norwegian, Norway)
+ TEST_CTOR("nn", NorwegianNynorsk, Norway)
+ TEST_CTOR("no_NO", Norwegian, Norway)
+ TEST_CTOR("nb_NO", Norwegian, Norway)
+ TEST_CTOR("nn_NO", NorwegianNynorsk, Norway)
+ TEST_CTOR("es_ES", Spanish, Spain)
+ TEST_CTOR("es_419", Spanish, LatinAmericaAndTheCaribbean)
+ TEST_CTOR("es-419", Spanish, LatinAmericaAndTheCaribbean)
+
+ // test default countries for languages
+ TEST_CTOR("zh", Chinese, China)
+ TEST_CTOR("zh-Hans", Chinese, China)
+ TEST_CTOR("mn", Mongolian, Mongolia)
+ TEST_CTOR("ne", Nepali, Nepal)
+
+#undef TEST_CTOR
+#define TEST_CTOR(req_lc, exp_lang, exp_script, exp_country) \
+ { \
+ QLocale l(req_lc); \
+ QVERIFY2(l.language() == QLocale::exp_lang \
+ && l.script() == QLocale::exp_script \
+ && l.country() == QLocale::exp_country, \
+ QString("requested: \"" + QString(req_lc) + "\", got: " \
+ + QLocale::languageToString(l.language()) \
+ + "/" + QLocale::scriptToString(l.script()) \
+ + "/" + QLocale::countryToString(l.country())).toLatin1().constData()); \
+ }
+
+ TEST_CTOR("zh_CN", Chinese, AnyScript, China)
+ TEST_CTOR("zh_Hans_CN", Chinese, SimplifiedHanScript, China)
+ TEST_CTOR("zh_Hans", Chinese, SimplifiedHanScript, China)
+ TEST_CTOR("zh_Hant", Chinese, TraditionalHanScript, HongKong)
+ TEST_CTOR("zh_Hans_MO", Chinese, SimplifiedHanScript, Macau)
+ TEST_CTOR("zh_Hant_MO", Chinese, TraditionalHanScript, Macau)
+ TEST_CTOR("az_Latn_AZ", Azerbaijani, LatinScript, Azerbaijan)
+ TEST_CTOR("ha_Arab_NG", Hausa, ArabicScript, Nigeria)
+ TEST_CTOR("ha_Latn_NG", Hausa, LatinScript, Nigeria)
+
+#undef TEST_CTOR
+}
+
+void tst_QLocale::emptyCtor()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ QSKIP("Uses unsupported Windows CE / Symbian QProcess functionality (std streams, env)", SkipAll);
+#endif
+#if defined(QT_NO_PROCESS)
+ QSKIP("Qt was compiled with QT_NO_PROCESS", SkipAll);
+#else
+#define TEST_CTOR(req_lc, exp_str) \
+ { \
+ /* Test constructor without arguments. Needs separate process */ \
+ /* because of caching of the system locale. */ \
+ QProcess process; \
+ process.setEnvironment(QStringList(env) << QString("LANG=%1").arg(req_lc)); \
+ process.start("syslocaleapp/syslocaleapp"); \
+ process.waitForReadyRead(); \
+ QString ret = QString(process.readAll()); \
+ process.waitForFinished(); \
+ QVERIFY2(!ret.isEmpty(), "Cannot launch external process"); \
+ QVERIFY2(QString(exp_str) == ret, QString("Expected: " + QString(exp_str) + ", got: " \
+ + ret + ". Requested: " + QString(req_lc)).toLatin1().constData()); \
+ }
+
+ // Get an environment free of any locale-related variables
+ QStringList env;
+ foreach (QString const& entry, QProcess::systemEnvironment()) {
+ if (entry.startsWith("LANG=") || entry.startsWith("LC_"))
+ continue;
+ env << entry;
+ }
+
+ // Get default locale.
+ QProcess p;
+ p.setEnvironment(env);
+ p.start("syslocaleapp/syslocaleapp");
+ p.waitForReadyRead();
+ QString defaultLoc = QString(p.readAll());
+ p.waitForFinished();
+
+ TEST_CTOR("C", "C")
+ TEST_CTOR("bla", "C")
+ TEST_CTOR("zz", "C")
+ TEST_CTOR("zz_zz", "C")
+ TEST_CTOR("zz...", "C")
+ TEST_CTOR("en", "en_US")
+ TEST_CTOR("en", "en_US")
+ TEST_CTOR("en.", "en_US")
+ TEST_CTOR("en@", "en_US")
+ TEST_CTOR("en.@", "en_US")
+ TEST_CTOR("en_", "en_US")
+ TEST_CTOR("en_.", "en_US")
+ TEST_CTOR("en_.@", "en_US")
+ TEST_CTOR("en.bla", "en_US")
+ TEST_CTOR("en@bla", "en_US")
+ TEST_CTOR("en_blaaa", "en_US")
+ TEST_CTOR("en_zz", "en_US")
+ TEST_CTOR("en_GB", "en_GB")
+ TEST_CTOR("en_GB.bla", "en_GB")
+ TEST_CTOR("en_GB@.bla", "en_GB")
+ TEST_CTOR("en_GB@bla", "en_GB")
+ TEST_CTOR("de", "de_DE")
+
+ QVERIFY(QLocale::Norwegian == QLocale::NorwegianBokmal);
+ TEST_CTOR("no", "nb_NO")
+ TEST_CTOR("nb", "nb_NO")
+ TEST_CTOR("nn", "nn_NO")
+ TEST_CTOR("no_NO", "nb_NO")
+ TEST_CTOR("nb_NO", "nb_NO")
+ TEST_CTOR("nn_NO", "nn_NO")
+
+ TEST_CTOR("DE", "de_DE");
+ TEST_CTOR("EN", "en_US");
+
+ TEST_CTOR("en/", defaultLoc)
+ TEST_CTOR("asdfghj", defaultLoc);
+ TEST_CTOR("123456", defaultLoc);
+
+#undef TEST_CTOR
+#endif
+}
+
+void tst_QLocale::unixLocaleName()
+{
+#define TEST_NAME(req_lang, req_country, exp_name) \
+ { \
+ QLocale l(QLocale::req_lang, QLocale::req_country); \
+ QCOMPARE(l.name(), QString(exp_name)); \
+ }
+
+ QLocale::setDefault(QLocale(QLocale::C));
+
+ TEST_NAME(C, AnyCountry, "C")
+ TEST_NAME(English, AnyCountry, "en_US")
+ TEST_NAME(English, UnitedKingdom, "en_GB")
+ TEST_NAME(Aymara, UnitedKingdom, "C")
+
+#undef TEST_NAME
+}
+
+void tst_QLocale::double_conversion_data()
+{
+ QTest::addColumn<QString>("locale_name");
+ QTest::addColumn<QString>("num_str");
+ QTest::addColumn<bool>("good");
+ QTest::addColumn<double>("num");
+
+ QTest::newRow("C 1") << QString("C") << QString("1") << true << 1.0;
+ QTest::newRow("C 1.0") << QString("C") << QString("1.0") << true << 1.0;
+ QTest::newRow("C 1.234") << QString("C") << QString("1.234") << true << 1.234;
+ QTest::newRow("C 1.234e-10") << QString("C") << QString("1.234e-10") << true << 1.234e-10;
+ QTest::newRow("C 1.234E10") << QString("C") << QString("1.234E10") << true << 1.234e10;
+ QTest::newRow("C 1e10") << QString("C") << QString("1e10") << true << 1.0e10;
+ QTest::newRow("C 1") << QString("C") << QString(" 1") << true << 1.0;
+ QTest::newRow("C 1") << QString("C") << QString(" 1") << true << 1.0;
+ QTest::newRow("C 1 ") << QString("C") << QString("1 ") << true << 1.0;
+ QTest::newRow("C 1 ") << QString("C") << QString("1 ") << true << 1.0;
+
+ QTest::newRow("C 1,") << QString("C") << QString("1,") << false << 0.0;
+ QTest::newRow("C 1,2") << QString("C") << QString("1,2") << false << 0.0;
+ QTest::newRow("C 1,23") << QString("C") << QString("1,23") << false << 0.0;
+ QTest::newRow("C 1,234") << QString("C") << QString("1,234") << true << 1234.0;
+ QTest::newRow("C 1,234,") << QString("C") << QString("1,234,") << false << 0.0;
+ QTest::newRow("C 1,234,5") << QString("C") << QString("1,234,5") << false << 0.0;
+ QTest::newRow("C 1,234,56") << QString("C") << QString("1,234,56") << false << 0.0;
+ QTest::newRow("C 1,234,567") << QString("C") << QString("1,234,567") << true << 1234567.0;
+ QTest::newRow("C 1,234,567.") << QString("C") << QString("1,234,567.") << true << 1234567.0;
+ QTest::newRow("C 1,234,567.8") << QString("C") << QString("1,234,567.8")<< true << 1234567.8;
+ QTest::newRow("C 1,234567.8") << QString("C") << QString("1,234567.8") << false << 0.0;
+ QTest::newRow("C 12,34567.8") << QString("C") << QString("12,34567.8") << false << 0.0;
+ QTest::newRow("C 1234,567.8") << QString("C") << QString("1234,567.8") << false << 0.0;
+ QTest::newRow("C 1234567.8") << QString("C") << QString("1234567.8") << true << 1234567.8;
+ QTest::newRow("C ,") << QString("C") << QString(",") << false << 0.0;
+ QTest::newRow("C ,123") << QString("C") << QString(",123") << false << 0.0;
+ QTest::newRow("C ,3") << QString("C") << QString(",3") << false << 0.0;
+ QTest::newRow("C , 3") << QString("C") << QString(", 3") << false << 0.0;
+ QTest::newRow("C , 3") << QString("C") << QString(", 3") << false << 0.0;
+ QTest::newRow("C , 3.2") << QString("C") << QString(", 3.2") << false << 0.0;
+ QTest::newRow("C , 3.2e2") << QString("C") << QString(", 3.2e2") << false << 0.0;
+ QTest::newRow("C , e2") << QString("C") << QString(", e2") << false << 0.0;
+ QTest::newRow("C 1,,234") << QString("C") << QString("1,,234") << false << 0.0;
+
+ QTest::newRow("C empty") << QString("C") << QString("") << false << 0.0;
+ QTest::newRow("C null") << QString("C") << QString() << false << 0.0;
+ QTest::newRow("C .") << QString("C") << QString(".") << false << 0.0;
+ QTest::newRow("C 1e") << QString("C") << QString("1e") << false << 0.0;
+ QTest::newRow("C 1,0") << QString("C") << QString("1,0") << false << 0.0;
+ QTest::newRow("C 1,000") << QString("C") << QString("1,000") << true << 1000.0;
+ QTest::newRow("C 1,000e-6") << QString("C") << QString("1,000e-6") << true << 1000.0e-6;
+ QTest::newRow("C 1e1.0") << QString("C") << QString("1e1.0") << false << 0.0;
+ QTest::newRow("C 1e+") << QString("C") << QString("1e+") << false << 0.0;
+ QTest::newRow("C 1e-") << QString("C") << QString("1e-") << false << 0.0;
+
+ QTest::newRow("C .1") << QString("C") << QString(".1") << true << 0.1;
+ QTest::newRow("C -.1") << QString("C") << QString("-.1") << true << -0.1;
+ QTest::newRow("C 1.") << QString("C") << QString("1.") << true << 1.0;
+ QTest::newRow("C 1.E10") << QString("C") << QString("1.E10") << true << 1.0e10;
+ QTest::newRow("C 1e+10") << QString("C") << QString("1e+10") << true << 1.0e+10;
+
+ QTest::newRow("de_DE 1.") << QString("de_DE") << QString("1.") << false << 0.0;
+ QTest::newRow("de_DE 1.2") << QString("de_DE") << QString("1.2") << false << 0.0;
+ QTest::newRow("de_DE 1.23") << QString("de_DE") << QString("1.23") << false << 0.0;
+ QTest::newRow("de_DE 1.234") << QString("de_DE") << QString("1.234") << true << 1234.0;
+ QTest::newRow("de_DE 1.234,") << QString("de_DE") << QString("1.234.") << false << 0.0;
+ QTest::newRow("de_DE 1.234.5") << QString("de_DE") << QString("1.234.5") << false << 0.0;
+ QTest::newRow("de_DE 1.234.56") << QString("de_DE") << QString("1.234.56") << false << 0.0;
+ QTest::newRow("de_DE 1.234.567") << QString("de_DE") << QString("1.234.567") << true << 1234567.0;
+ QTest::newRow("de_DE 1.234.567,") << QString("de_DE") << QString("1.234.567,") << true << 1234567.0;
+ QTest::newRow("de_DE 1.234.567,8") << QString("de_DE") << QString("1.234.567,8")<< true << 1234567.8;
+ QTest::newRow("de_DE 1.234567,8") << QString("de_DE") << QString("1.234567,8") << false << 0.0;
+ QTest::newRow("de_DE 12.34567,8") << QString("de_DE") << QString("12.34567,8") << false << 0.0;
+ QTest::newRow("de_DE 1234.567,8") << QString("de_DE") << QString("1234.567,8") << false << 0.0;
+ QTest::newRow("de_DE 1234567,8") << QString("de_DE") << QString("1234567,8") << true << 1234567.8;
+ QTest::newRow("de_DE .123") << QString("de_DE") << QString(".123") << false << 0.0;
+ QTest::newRow("de_DE .3") << QString("de_DE") << QString(".3") << false << 0.0;
+ QTest::newRow("de_DE . 3") << QString("de_DE") << QString(". 3") << false << 0.0;
+ QTest::newRow("de_DE . 3") << QString("de_DE") << QString(". 3") << false << 0.0;
+ QTest::newRow("de_DE . 3,2") << QString("de_DE") << QString(". 3,2") << false << 0.0;
+ QTest::newRow("de_DE . 3,2e2") << QString("de_DE") << QString(". 3,2e2") << false << 0.0;
+ QTest::newRow("de_DE . e2") << QString("de_DE") << QString(". e2") << false << 0.0;
+ QTest::newRow("de_DE 1..234") << QString("de_DE") << QString("1..234") << false << 0.0;
+
+ QTest::newRow("de_DE 1") << QString("de_DE") << QString("1") << true << 1.0;
+ QTest::newRow("de_DE 1.0") << QString("de_DE") << QString("1.0") << false << 0.0;
+ QTest::newRow("de_DE 1.234e-10") << QString("de_DE") << QString("1.234e-10") << true << 1234.0e-10;
+ QTest::newRow("de_DE 1.234E10") << QString("de_DE") << QString("1.234E10") << true << 1234.0e10;
+ QTest::newRow("de_DE 1e10") << QString("de_DE") << QString("1e10") << true << 1.0e10;
+ QTest::newRow("de_DE .1") << QString("de_DE") << QString(".1") << false << 0.0;
+ QTest::newRow("de_DE -.1") << QString("de_DE") << QString("-.1") << false << 0.0;
+ QTest::newRow("de_DE 1.E10") << QString("de_DE") << QString("1.E10") << false << 0.0;
+ QTest::newRow("de_DE 1e+10") << QString("de_DE") << QString("1e+10") << true << 1.0e+10;
+
+ QTest::newRow("de_DE 1,0") << QString("de_DE") << QString("1,0") << true << 1.0;
+ QTest::newRow("de_DE 1,234") << QString("de_DE") << QString("1,234") << true << 1.234;
+ QTest::newRow("de_DE 1,234e-10") << QString("de_DE") << QString("1,234e-10") << true << 1.234e-10;
+ QTest::newRow("de_DE 1,234E10") << QString("de_DE") << QString("1,234E10") << true << 1.234e10;
+ QTest::newRow("de_DE ,1") << QString("de_DE") << QString(",1") << true << 0.1;
+ QTest::newRow("de_DE -,1") << QString("de_DE") << QString("-,1") << true << -0.1;
+ QTest::newRow("de_DE 1,") << QString("de_DE") << QString("1,") << true << 1.0;
+ QTest::newRow("de_DE 1,E10") << QString("de_DE") << QString("1,E10") << true << 1.0e10;
+
+ QTest::newRow("de_DE empty") << QString("de_DE") << QString("") << false << 0.0;
+ QTest::newRow("de_DE null") << QString("de_DE") << QString() << false << 0.0;
+ QTest::newRow("de_DE .") << QString("de_DE") << QString(".") << false << 0.0;
+ QTest::newRow("de_DE 1e") << QString("de_DE") << QString("1e") << false << 0.0;
+ QTest::newRow("de_DE 1e1.0") << QString("de_DE") << QString("1e1.0") << false << 0.0;
+ QTest::newRow("de_DE 1e+") << QString("de_DE") << QString("1e+") << false << 0.0;
+ QTest::newRow("de_DE 1e-") << QString("de_DE") << QString("1e-") << false << 0.0;
+
+ QTest::newRow("C 9,876543") << QString("C") << QString("9,876543") << false << 0.0;
+ QTest::newRow("C 9,876543.2") << QString("C") << QString("9,876543.2") << false << 0.0;
+ QTest::newRow("C 9,876543e-2") << QString("C") << QString("9,876543e-2") << false << 0.0;
+ QTest::newRow("C 9,876543.0e-2") << QString("C") << QString("9,876543.0e-2") << false << 0.0;
+
+ QTest::newRow("de_DE 9.876543") << QString("de_DE") << QString("9876.543") << false << 0.0;
+ QTest::newRow("de_DE 9.876543,2") << QString("de_DE") << QString("9.876543,2") << false << 0.0;
+ QTest::newRow("de_DE 9.876543e-2") << QString("de_DE") << QString("9.876543e-2") << false << 0.0;
+ QTest::newRow("de_DE 9.876543,0e-2") << QString("de_DE") << QString("9.876543,0e-2") << false << 0.0;
+ QTest::newRow("de_DE 9.876543e--2") << QString("de_DE") << QString("9.876543e")+QChar(8722)+QString("2") << false << 0.0;
+ QTest::newRow("de_DE 9.876543,0e--2") << QString("de_DE") << QString("9.876543,0e")+QChar(8722)+QString("2") << false << 0.0;
+}
+
+void tst_QLocale::double_conversion()
+{
+#define MY_DOUBLE_EPSILON (2.22045e-16)
+
+ QFETCH(QString, locale_name);
+ QFETCH(QString, num_str);
+ QFETCH(bool, good);
+ QFETCH(double, num);
+
+ QLocale locale(locale_name);
+ QCOMPARE(locale.name(), locale_name);
+
+ bool ok;
+ double d = locale.toDouble(num_str, &ok);
+ QCOMPARE(ok, good);
+
+ if (ok) {
+ double diff = d - num;
+ if (diff < 0)
+ diff = -diff;
+ QVERIFY(diff <= MY_DOUBLE_EPSILON);
+ }
+}
+
+void tst_QLocale::long_long_conversion_data()
+{
+ QTest::addColumn<QString>("locale_name");
+ QTest::addColumn<QString>("num_str");
+ QTest::addColumn<bool>("good");
+ QTest::addColumn<qlonglong>("num");
+
+ QTest::newRow("C null") << QString("C") << QString() << false << (qlonglong) 0;
+ QTest::newRow("C empty") << QString("C") << QString("") << false << (qlonglong) 0;
+ QTest::newRow("C 1") << QString("C") << "1" << true << (qlonglong) 1;
+ QTest::newRow("C 1,") << QString("C") << "1," << false << (qlonglong) 0;
+ QTest::newRow("C 1,2") << QString("C") << "1,2" << false << (qlonglong) 0;
+ QTest::newRow("C 1,23") << QString("C") << "1,23" << false << (qlonglong) 0;
+ QTest::newRow("C 1,234") << QString("C") << "1,234" << true << (qlonglong) 1234;
+ QTest::newRow("C 1234567") << QString("C") << "1234567"<< true << (qlonglong) 1234567;
+ QTest::newRow("C 1,234567") << QString("C") << "1,234567"<< false << (qlonglong) 0;
+ QTest::newRow("C 12,34567") << QString("C") << "12,34567"<< false << (qlonglong) 0;
+ QTest::newRow("C 123,4567") << QString("C") << "123,4567"<< false << (qlonglong) 0;
+ QTest::newRow("C 1234,567") << QString("C") << "1234,567"<< false << (qlonglong) 0;
+ QTest::newRow("C 12345,67") << QString("C") << "12345,67"<< false << (qlonglong) 0;
+ QTest::newRow("C 123456,7") << QString("C") << "123456,7"<< false << (qlonglong) 0;
+ QTest::newRow("C 1,234,567") << QString("C")<< "1,234,567"<< true << (qlonglong) 1234567;
+
+ QTest::newRow("de_DE 1") << QString("de_DE") << "1" << true << (qlonglong) 1;
+ QTest::newRow("de_DE 1.") << QString("de_DE") << "1." << false << (qlonglong) 0;
+ QTest::newRow("de_DE 1.2") << QString("de_DE") << "1.2" << false << (qlonglong) 0;
+ QTest::newRow("de_DE 1.23") << QString("de_DE") << "1.23" << false << (qlonglong) 0;
+ QTest::newRow("de_DE 1.234") << QString("de_DE") << "1.234" << true << (qlonglong) 1234;
+ QTest::newRow("de_DE 1234567") << QString("de_DE") << "1234567"<< true << (qlonglong) 1234567;
+ QTest::newRow("de_DE 1.234567") << QString("de_DE") << "1.234567"<< false << (qlonglong) 0;
+ QTest::newRow("de_DE 12.34567") << QString("de_DE") << "12.34567"<< false << (qlonglong) 0;
+ QTest::newRow("de_DE 123.4567") << QString("de_DE") << "123.4567"<< false << (qlonglong) 0;
+ QTest::newRow("de_DE 1234.567") << QString("de_DE") << "1234.567"<< false << (qlonglong) 0;
+ QTest::newRow("de_DE 12345.67") << QString("de_DE") << "12345.67"<< false << (qlonglong) 0;
+ QTest::newRow("de_DE 123456.7") << QString("de_DE") << "123456.7"<< false << (qlonglong) 0;
+ QTest::newRow("de_DE 1.234.567") << QString("de_DE")<< "1.234.567"<< true << (qlonglong) 1234567;
+ QTest::newRow("de_DE 1.234.567 ldspcs") << QString("de_DE")<< " 1.234.567" << true << (qlonglong) 1234567;
+ QTest::newRow("de_DE 1.234.567 trspcs") << QString("de_DE")<< "1.234.567 "<< true << (qlonglong) 1234567;
+ QTest::newRow("de_DE 1.234.567 ldtrspcs") << QString("de_DE")<< " 1.234.567 "<< true << (qlonglong) 1234567;
+
+ // test that space is also accepted whenever QLocale::groupSeparator() == 0xa0 (which looks like space).
+ QTest::newRow("nb_NO 123 groupsep") << QString("nb_NO")<< QString("1")+QChar(0xa0)+QString("234") << true << (qlonglong) 1234;
+ QTest::newRow("nb_NO 123 groupsep_space") << QString("nb_NO")<< QString("1")+QChar(0x20)+QString("234") << true << (qlonglong) 1234;
+
+ QTest::newRow("nb_NO 123 ldspcs") << QString("nb_NO")<< " 123" << true << (qlonglong) 123;
+ QTest::newRow("nb_NO 123 trspcs") << QString("nb_NO")<< "123 "<< true << (qlonglong) 123;
+ QTest::newRow("nb_NO 123 ldtrspcs") << QString("nb_NO")<< " 123 "<< true << (qlonglong) 123;
+
+ QTest::newRow("C 1234") << QString("C") << " 1234" << true << (qlonglong) 1234;
+ QTest::newRow("C 1234 ") << QString("C") << "1234 " << true << (qlonglong) 1234;
+ QTest::newRow("C 1234 ") << QString("C") << " 1234 " << true << (qlonglong) 1234;
+}
+
+void tst_QLocale::long_long_conversion()
+{
+ QFETCH(QString, locale_name);
+ QFETCH(QString, num_str);
+ QFETCH(bool, good);
+ QFETCH(qlonglong, num);
+
+ QLocale locale(locale_name);
+ QCOMPARE(locale.name(), locale_name);
+
+ bool ok;
+ qlonglong l = locale.toLongLong(num_str, &ok);
+ QCOMPARE(ok, good);
+
+ if (ok) {
+ QCOMPARE(l, num);
+ }
+}
+
+void tst_QLocale::long_long_conversion_extra()
+{
+ QLocale l(QLocale::C);
+ QCOMPARE(l.toString((qlonglong)1), QString("1"));
+ QCOMPARE(l.toString((qlonglong)12), QString("12"));
+ QCOMPARE(l.toString((qlonglong)123), QString("123"));
+ QCOMPARE(l.toString((qlonglong)1234), QString("1,234"));
+ QCOMPARE(l.toString((qlonglong)12345), QString("12,345"));
+ QCOMPARE(l.toString((qlonglong)-1), QString("-1"));
+ QCOMPARE(l.toString((qlonglong)-12), QString("-12"));
+ QCOMPARE(l.toString((qlonglong)-123), QString("-123"));
+ QCOMPARE(l.toString((qlonglong)-1234), QString("-1,234"));
+ QCOMPARE(l.toString((qlonglong)-12345), QString("-12,345"));
+ QCOMPARE(l.toString((qulonglong)1), QString("1"));
+ QCOMPARE(l.toString((qulonglong)12), QString("12"));
+ QCOMPARE(l.toString((qulonglong)123), QString("123"));
+ QCOMPARE(l.toString((qulonglong)1234), QString("1,234"));
+ QCOMPARE(l.toString((qulonglong)12345), QString("12,345"));
+}
+
+/*
+void tst_QLocale::languageToString()
+{
+}
+
+void tst_QLocale::setDefault()
+{
+}
+*/
+
+void tst_QLocale::testInfAndNan()
+{
+ double neginf = log(0.0);
+ double nan = sqrt(-1.0);
+
+#ifdef Q_OS_WIN
+ // these cause INVALID floating point exception so we want to clear the status.
+ _clear87();
+#endif
+
+ QVERIFY(qIsInf(-neginf));
+ QVERIFY(!qIsNaN(-neginf));
+ QVERIFY(!qIsFinite(-neginf));
+
+ QVERIFY(!qIsInf(nan));
+ QVERIFY(qIsNaN(nan));
+ QVERIFY(!qIsFinite(nan));
+
+ QVERIFY(!qIsInf(1.234));
+ QVERIFY(!qIsNaN(1.234));
+ QVERIFY(qIsFinite(1.234));
+}
+
+void tst_QLocale::fpExceptions()
+{
+#ifndef _MCW_EM
+#define _MCW_EM 0x0008001F
+#endif
+#ifndef _EM_INEXACT
+#define _EM_INEXACT 0x00000001
+#endif
+
+ // check that qdtoa doesn't throw floating point exceptions when they are enabled
+#ifdef Q_OS_WIN
+ unsigned int oldbits = _control87(0, 0);
+ _control87( 0 | _EM_INEXACT, _MCW_EM );
+#endif
+
+#ifdef Q_OS_LINUX
+ fenv_t envp;
+ fegetenv(&envp);
+ feclearexcept(FE_ALL_EXCEPT);
+ feenableexcept(FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW | FE_INVALID);
+#endif
+
+ QString::number(1000.1245);
+ QString::number(1.1);
+ QString::number(0.0);
+
+ QVERIFY(true);
+
+#ifdef Q_OS_WIN
+ _clear87();
+ _control87(oldbits, 0xFFFFF);
+#endif
+
+#ifdef Q_OS_LINUX
+ fesetenv(&envp);
+#endif
+}
+
+void tst_QLocale::negativeZero()
+{
+ double negativeZero( 0.0 ); // Initialise to zero.
+ uchar *ptr = (uchar *)&negativeZero;
+#ifdef QT_ARMFPA
+ ptr[3] = 0x80;
+#else
+ ptr[QSysInfo::ByteOrder == QSysInfo::BigEndian ? 0 : 7] = 0x80;
+#endif
+ QString s = QString::number(negativeZero);
+ QCOMPARE(s, QString("0"));
+}
+
+void tst_QLocale::dayOfWeek_data()
+{
+ QTest::addColumn<QDate>("date");
+ QTest::addColumn<QString>("shortName");
+ QTest::addColumn<QString>("longName");
+
+ QTest::newRow("Sun") << QDate(2006, 1, 1) << "Sun" << "Sunday";
+ QTest::newRow("Mon") << QDate(2006, 1, 2) << "Mon" << "Monday";
+ QTest::newRow("Tue") << QDate(2006, 1, 3) << "Tue" << "Tuesday";
+ QTest::newRow("Wed") << QDate(2006, 1, 4) << "Wed" << "Wednesday";
+ QTest::newRow("Thu") << QDate(2006, 1, 5) << "Thu" << "Thursday";
+ QTest::newRow("Fri") << QDate(2006, 1, 6) << "Fri" << "Friday";
+ QTest::newRow("Sat") << QDate(2006, 1, 7) << "Sat" << "Saturday";
+}
+
+void tst_QLocale::dayOfWeek()
+{
+ QFETCH(QDate, date);
+ QFETCH(QString, shortName);
+ QFETCH(QString, longName);
+
+ QCOMPARE(QLocale::c().toString(date, "ddd"), shortName);
+ QCOMPARE(QLocale::c().toString(date, "dddd"), longName);
+}
+
+void tst_QLocale::formatDate_data()
+{
+ QTest::addColumn<QDate>("date");
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("1") << QDate(1974, 12, 1) << "d/M/yyyy" << "1/12/1974";
+ QTest::newRow("2") << QDate(1974, 12, 1) << "d/M/yyyyy" << "1/12/1974y";
+ QTest::newRow("4") << QDate(1974, 1, 1) << "d/M/yyyy" << "1/1/1974";
+ QTest::newRow("5") << QDate(1974, 1, 1) << "dd/MM/yyy" << "01/01/74y";
+ QTest::newRow("6") << QDate(1974, 12, 1) << "ddd/MMM/yy" << "Sun/Dec/74";
+ QTest::newRow("7") << QDate(1974, 12, 1) << "dddd/MMMM/y" << "Sunday/December/y";
+ QTest::newRow("8") << QDate(1974, 12, 1) << "ddddd/MMMMM/yy" << "Sunday1/December12/74";
+ QTest::newRow("9") << QDate(1974, 12, 1) << "'dddd'/MMMM/yy" << "dddd/December/74";
+ QTest::newRow("10") << QDate(1974, 12, 1) << "d'dd'd/MMMM/yyy" << "1dd1/December/74y";
+ QTest::newRow("11") << QDate(1974, 12, 1) << "d'dd'd/MMM'M'/yy" << "1dd1/DecM/74";
+ QTest::newRow("12") << QDate(1974, 12, 1) << "d'd'dd/M/yy" << "1d01/12/74";
+
+ QTest::newRow("20") << QDate(1974, 12, 1) << "foo" << "foo";
+ QTest::newRow("21") << QDate(1974, 12, 1) << "'" << "";
+ QTest::newRow("22") << QDate(1974, 12, 1) << "''" << "'";
+ QTest::newRow("23") << QDate(1974, 12, 1) << "'''" << "'";
+ QTest::newRow("24") << QDate(1974, 12, 1) << "\"" << "\"";
+ QTest::newRow("25") << QDate(1974, 12, 1) << "\"\"" << "\"\"";
+ QTest::newRow("26") << QDate(1974, 12, 1) << "\"yy\"" << "\"74\"";
+ QTest::newRow("27") << QDate(1974, 12, 1) << "'\"yy\"'" << "\"yy\"";
+ QTest::newRow("28") << QDate() << "'\"yy\"'" << "";
+ QTest::newRow("29") << QDate(1974, 12, 1) << "hh:mm:ss.zzz ap d'd'dd/M/yy" << "hh:mm:ss.zzz ap 1d01/12/74";
+
+}
+
+void tst_QLocale::formatDate()
+{
+ QFETCH(QDate, date);
+ QFETCH(QString, format);
+ QFETCH(QString, result);
+
+ QLocale l(QLocale::C);
+ QCOMPARE(l.toString(date, format), result);
+}
+
+Q_DECLARE_METATYPE(QTime)
+
+void tst_QLocale::formatTime_data()
+{
+ QTest::addColumn<QTime>("time");
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("1") << QTime(1, 2, 3) << "h:m:s" << "1:2:3";
+ QTest::newRow("3") << QTime(1, 2, 3) << "H:m:s" << "1:2:3";
+ QTest::newRow("4") << QTime(1, 2, 3) << "hh:mm:ss" << "01:02:03";
+ QTest::newRow("5") << QTime(1, 2, 3) << "HH:mm:ss" << "01:02:03";
+ QTest::newRow("6") << QTime(1, 2, 3) << "hhh:mmm:sss" << "011:022:033";
+
+ QTest::newRow("8") << QTime(14, 2, 3) << "h:m:s" << "14:2:3";
+ QTest::newRow("9") << QTime(14, 2, 3) << "H:m:s" << "14:2:3";
+ QTest::newRow("10") << QTime(14, 2, 3) << "hh:mm:ss" << "14:02:03";
+ QTest::newRow("11") << QTime(14, 2, 3) << "HH:mm:ss" << "14:02:03";
+ QTest::newRow("12") << QTime(14, 2, 3) << "hhh:mmm:sss" << "1414:022:033";
+
+ QTest::newRow("14") << QTime(14, 2, 3) << "h:m:s ap" << "2:2:3 pm";
+ QTest::newRow("15") << QTime(14, 2, 3) << "H:m:s AP" << "14:2:3 PM";
+ QTest::newRow("16") << QTime(14, 2, 3) << "hh:mm:ss aap" << "02:02:03 pmpm";
+ QTest::newRow("17") << QTime(14, 2, 3) << "HH:mm:ss AP aa" << "14:02:03 PM pmpm";
+
+ QTest::newRow("18") << QTime(1, 2, 3) << "h:m:s ap" << "1:2:3 am";
+ QTest::newRow("19") << QTime(1, 2, 3) << "H:m:s AP" << "1:2:3 AM";
+
+ QTest::newRow("20") << QTime(1, 2, 3) << "foo" << "foo";
+ QTest::newRow("21") << QTime(1, 2, 3) << "'" << "";
+ QTest::newRow("22") << QTime(1, 2, 3) << "''" << "'";
+ QTest::newRow("23") << QTime(1, 2, 3) << "'''" << "'";
+ QTest::newRow("24") << QTime(1, 2, 3) << "\"" << "\"";
+ QTest::newRow("25") << QTime(1, 2, 3) << "\"\"" << "\"\"";
+ QTest::newRow("26") << QTime(1, 2, 3) << "\"H\"" << "\"1\"";
+ QTest::newRow("27") << QTime(1, 2, 3) << "'\"H\"'" << "\"H\"";
+
+ QTest::newRow("28") << QTime(1, 2, 3, 456) << "H:m:s.z" << "1:2:3.456";
+ QTest::newRow("29") << QTime(1, 2, 3, 456) << "H:m:s.zz" << "1:2:3.456456";
+ QTest::newRow("30") << QTime(1, 2, 3, 456) << "H:m:s.zzz" << "1:2:3.456";
+ QTest::newRow("31") << QTime(1, 2, 3, 4) << "H:m:s.z" << "1:2:3.4";
+ QTest::newRow("32") << QTime(1, 2, 3, 4) << "H:m:s.zzz" << "1:2:3.004";
+ QTest::newRow("33") << QTime() << "H:m:s.zzz" << "";
+ QTest::newRow("34") << QTime(1, 2, 3, 4) << "dd MM yyyy H:m:s.zzz" << "dd MM yyyy 1:2:3.004";
+}
+
+void tst_QLocale::formatTime()
+{
+ QFETCH(QTime, time);
+ QFETCH(QString, format);
+ QFETCH(QString, result);
+
+ QLocale l(QLocale::C);
+ QCOMPARE(l.toString(time, format), result);
+}
+
+
+void tst_QLocale::formatDateTime_data()
+{
+ QTest::addColumn<QString>("localeName");
+ QTest::addColumn<QDateTime>("dateTime");
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("1C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(5, 14, 13))
+ << "d/M/yyyy hh:h:mm" << "1/12/1974 05:5:14";
+ QTest::newRow("2C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "d/M/yyyyy h" << "1/12/1974y 15";
+ QTest::newRow("4C") << "C" << QDateTime(QDate(1974, 1, 1), QTime(15, 14, 13))
+ << "d/M/yyyy zzz" << "1/1/1974 000";
+ QTest::newRow("5C") << "C" << QDateTime(QDate(1974, 1, 1), QTime(15, 14, 13))
+ << "dd/MM/yyy z" << "01/01/74y 0";
+ QTest::newRow("6C") << "C" << QDateTime(QDate(1974, 12, 2), QTime(15, 14, 13))
+ << "ddd/MMM/yy AP" << "Mon/Dec/74 PM";
+ QTest::newRow("7C") << "C" << QDateTime(QDate(1974, 12, 2), QTime(15, 14, 13))
+ << "dddd/MMMM/y apa" << "Monday/December/y pmpm";
+ QTest::newRow("8C") << "C" << QDateTime(QDate(1974, 12, 2), QTime(15, 14, 13))
+ << "ddddd/MMMMM/yy ss" << "Monday2/December12/74 13";
+ QTest::newRow("9C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "'dddd'/MMMM/yy s" << "dddd/December/74 13";
+ QTest::newRow("10C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 4, 13))
+ << "d'dd'd/MMMM/yyy m'm'mm" << "1dd1/December/74y 4m04";
+ QTest::newRow("11C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 3))
+ << "d'dd'd/MMM'M'/yysss" << "1dd1/DecM/74033";
+ QTest::newRow("12C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "d'd'dd/M/yyh" << "1d01/12/7415";
+
+ QTest::newRow("20C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "foo" << "foo";
+ QTest::newRow("21C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "'" << "";
+ QTest::newRow("22C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "''" << "'";
+ QTest::newRow("23C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "'''" << "'";
+ QTest::newRow("24C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "\"" << "\"";
+ QTest::newRow("25C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "\"\"" << "\"\"";
+ QTest::newRow("26C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "\"yymm\"" << "\"7414\"";
+ QTest::newRow("27C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "'\"yymm\"'" << "\"yymm\"";
+ QTest::newRow("27C") << "C" << QDateTime()
+ << "'\"yymm\"'" << "";
+
+ QTest::newRow("1no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(5, 14, 13))
+ << "d/M/yyyy hh:h:mm" << "1/12/1974 05:5:14";
+ QTest::newRow("2no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "d/M/yyyyy h" << "1/12/1974y 15";
+ QTest::newRow("4no_NO") << "no_NO" << QDateTime(QDate(1974, 1, 1), QTime(15, 14, 13))
+ << "d/M/yyyy zzz" << "1/1/1974 000";
+ QTest::newRow("5no_NO") << "no_NO" << QDateTime(QDate(1974, 1, 1), QTime(15, 14, 13))
+ << "dd/MM/yyy z" << "01/01/74y 0";
+ QTest::newRow("6no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 2), QTime(15, 14, 13))
+ << "ddd/MMM/yy AP" << "man./des./74 PM";
+ QTest::newRow("7no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 2), QTime(15, 14, 13))
+ << "dddd/MMMM/y apa" << "mandag/desember/y pmpm";
+ QTest::newRow("8no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 2), QTime(15, 14, 13))
+ << "ddddd/MMMMM/yy ss" << "mandag2/desember12/74 13";
+ QTest::newRow("9no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "'dddd'/MMMM/yy s" << "dddd/desember/74 13";
+ QTest::newRow("10no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 4, 13))
+ << "d'dd'd/MMMM/yyy m'm'mm" << "1dd1/desember/74y 4m04";
+ QTest::newRow("11no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 3))
+ << "d'dd'd/MMM'M'/yysss" << "1dd1/des.M/74033";
+ QTest::newRow("12no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "d'd'dd/M/yyh" << "1d01/12/7415";
+
+ QTest::newRow("20no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "foo" << "foo";
+ QTest::newRow("21no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "'" << "";
+ QTest::newRow("22no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "''" << "'";
+ QTest::newRow("23no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "'''" << "'";
+ QTest::newRow("24no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "\"" << "\"";
+ QTest::newRow("25no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "\"\"" << "\"\"";
+ QTest::newRow("26no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "\"yymm\"" << "\"7414\"";
+ QTest::newRow("27no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 14, 13))
+ << "'\"yymm\"'" << "\"yymm\"";
+ QTest::newRow("27no_NO") << "no_NO" << QDateTime()
+ << "'\"yymm\"'" << "";
+
+}
+
+void tst_QLocale::formatDateTime()
+{
+ QFETCH(QString, localeName);
+ QFETCH(QDateTime, dateTime);
+ QFETCH(QString, format);
+ QFETCH(QString, result);
+
+ QLocale l(localeName);
+ QCOMPARE(l.toString(dateTime, format), result);
+}
+
+void tst_QLocale::toDateTime_data()
+{
+ QTest::addColumn<QString>("localeName");
+ QTest::addColumn<QDateTime>("result");
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QString>("string");
+
+ QTest::newRow("1C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(5, 14, 0))
+ << "d/M/yyyy hh:h:mm" << "1/12/1974 05:5:14";
+ QTest::newRow("2C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 0, 0))
+ << "d/M/yyyyy h" << "1/12/1974y 15";
+ QTest::newRow("4C") << "C" << QDateTime(QDate(1974, 1, 1), QTime(0, 0, 0))
+ << "d/M/yyyy zzz" << "1/1/1974 000";
+ QTest::newRow("5C") << "C" << QDateTime(QDate(1974, 1, 1), QTime(0, 0, 0))
+ << "dd/MM/yyy z" << "01/01/74y 0";
+ QTest::newRow("8C") << "C" << QDateTime(QDate(1974, 12, 2), QTime(0, 0, 13))
+ << "ddddd/MMMMM/yy ss" << "Monday2/December12/74 13";
+ QTest::newRow("9C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(0, 0, 13))
+ << "'dddd'/MMMM/yy s" << "dddd/December/74 13";
+ QTest::newRow("10C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(0, 4, 0))
+ << "d'dd'd/MMMM/yyy m'm'mm" << "1dd1/December/74y 4m04";
+ QTest::newRow("11C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(0, 0, 3))
+ << "d'dd'd/MMM'M'/yysss" << "1dd1/DecM/74033";
+ QTest::newRow("12C") << "C" << QDateTime(QDate(1974, 12, 1), QTime(15, 0, 0))
+ << "d'd'dd/M/yyh" << "1d01/12/7415";
+
+ QTest::newRow("1no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(5, 14, 0))
+ << "d/M/yyyy hh:h:mm" << "1/12/1974 05:5:14";
+ QTest::newRow("2no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 0, 0))
+ << "d/M/yyyyy h" << "1/12/1974y 15";
+ QTest::newRow("4no_NO") << "no_NO" << QDateTime(QDate(1974, 1, 1), QTime(0, 0, 0))
+ << "d/M/yyyy zzz" << "1/1/1974 000";
+ QTest::newRow("5no_NO") << "no_NO" << QDateTime(QDate(1974, 1, 1), QTime(0, 0, 0))
+ << "dd/MM/yyy z" << "01/01/74y 0";
+ QTest::newRow("8no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 2), QTime(0, 0, 13))
+ << "ddddd/MMMMM/yy ss" << "mandag2/desember12/74 13";
+ QTest::newRow("9no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(0, 0, 13))
+ << "'dddd'/MMMM/yy s" << "dddd/desember/74 13";
+ QTest::newRow("10no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(0, 4, 0))
+ << "d'dd'd/MMMM/yyy m'm'mm" << "1dd1/desember/74y 4m04";
+ QTest::newRow("11no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(0, 0, 3))
+ << "d'dd'd/MMM'M'/yysss" << "1dd1/des.M/74033";
+ QTest::newRow("12no_NO") << "no_NO" << QDateTime(QDate(1974, 12, 1), QTime(15, 0, 0))
+ << "d'd'dd/M/yyh" << "1d01/12/7415";
+
+ QTest::newRow("RFC-1123") << "C" << QDateTime(QDate(2007, 11, 1), QTime(18, 8, 30))
+ << "ddd, dd MMM yyyy hh:mm:ss 'GMT'" << "Thu, 01 Nov 2007 18:08:30 GMT";
+
+ QTest::newRow("longFormat") << "en_US" << QDateTime(QDate(2009, 1, 5), QTime(11, 48, 32))
+ << "dddd, MMMM d, yyyy h:mm:ss AP " << "Monday, January 5, 2009 11:48:32 AM ";
+}
+
+void tst_QLocale::toDateTime()
+{
+ QFETCH(QString, localeName);
+ QFETCH(QDateTime, result);
+ QFETCH(QString, format);
+ QFETCH(QString, string);
+
+ QLocale l(localeName);
+ QCOMPARE(l.toDateTime(string, format), result);
+ if (l.dateTimeFormat(QLocale::LongFormat) == format)
+ QCOMPARE(l.toDateTime(string, QLocale::LongFormat), result);
+}
+
+void tst_QLocale::macDefaultLocale()
+{
+#ifndef Q_OS_MAC
+ QSKIP("This is a Mac OS X-only test", SkipAll);
+#endif
+
+ QLocale locale = QLocale::system();
+ if (locale.name() != QLatin1String("en_US")) {
+ QSKIP("This test only tests for en_US", SkipAll);
+ }
+
+ QTime invalidTime;
+ QDate invalidDate;
+ QCOMPARE(locale.toString(invalidTime, QLocale::ShortFormat), QString());
+ QCOMPARE(locale.toString(invalidDate, QLocale::ShortFormat), QString());
+ QCOMPARE(locale.toString(invalidTime, QLocale::NarrowFormat), QString());
+ QCOMPARE(locale.toString(invalidDate, QLocale::NarrowFormat), QString());
+ QCOMPARE(locale.toString(invalidTime, QLocale::LongFormat), QString());
+ QCOMPARE(locale.toString(invalidDate, QLocale::LongFormat), QString());
+ QCOMPARE(locale.decimalPoint(), QChar('.'));
+ QCOMPARE(locale.groupSeparator(), QChar(','));
+ QCOMPARE(locale.dateFormat(QLocale::ShortFormat), QString("M/d/yy"));
+ QCOMPARE(locale.dateFormat(QLocale::LongFormat), QString("MMMM d, yyyy"));
+ QCOMPARE(locale.timeFormat(QLocale::ShortFormat), QString("h:mm AP"));
+ QCOMPARE(locale.timeFormat(QLocale::LongFormat), QString("h:mm:ss AP t"));
+
+ // make sure we are using the system to parse them
+ QCOMPARE(locale.toString(1234.56), QString("1,234.56"));
+ QCOMPARE(locale.toString(QDate(1974, 12, 1), QLocale::ShortFormat), QString("12/1/74"));
+ QCOMPARE(locale.toString(QDate(1974, 12, 1), QLocale::NarrowFormat), locale.toString(QDate(1974, 12, 1), QLocale::ShortFormat));
+ QCOMPARE(locale.toString(QDate(1974, 12, 1), QLocale::LongFormat), QString("December 1, 1974"));
+ QCOMPARE(locale.toString(QTime(1,2,3), QLocale::ShortFormat), QString("1:02 AM"));
+ QCOMPARE(locale.toString(QTime(1,2,3), QLocale::NarrowFormat), locale.toString(QTime(1,2,3), QLocale::ShortFormat));
+
+ QTime currentTime = QTime::currentTime();
+ QTime utcTime = QDateTime::currentDateTime().toUTC().time();
+
+ int diff = currentTime.hour() - utcTime.hour();
+
+ // Check if local time and utc time are on opposite sides of the 24-hour wrap-around.
+ if (diff < -12)
+ diff += 24;
+ if (diff > 12)
+ diff -= 24;
+
+ const QString timeString = locale.toString(QTime(1,2,3), QLocale::LongFormat);
+ QVERIFY(timeString.contains(QString("1:02:03")));
+
+ QCOMPARE(locale.toCurrencyString(qulonglong(1234)), QString("$1,234.00"));
+ QCOMPARE(locale.toCurrencyString(qlonglong(-1234)), QString("($1,234.00)"));
+ QCOMPARE(locale.toCurrencyString(double(1234.56)), QString("$1,234.56"));
+ QCOMPARE(locale.toCurrencyString(double(-1234.56)), QString("($1,234.56)"));
+
+ // Depending on the configured time zone, the time string might not
+ // contain a GMT specifier. (Sometimes it just names the zone, like "CEST")
+ if (timeString.contains(QString("GMT"))) {
+ QString expectedGMTSpecifier("GMT");
+ if (diff >= 0)
+ expectedGMTSpecifier.append("+");
+ else
+ expectedGMTSpecifier.append("-");
+ if (qAbs(diff) < 10)
+ expectedGMTSpecifier.append(QString("0%1").arg(qAbs(diff)));
+ else
+ expectedGMTSpecifier.append(QString("%1").arg(qAbs(diff)));
+ QVERIFY2(timeString.contains(expectedGMTSpecifier), qPrintable(
+ QString("timeString `%1', expectedGMTSpecifier `%2'")
+ .arg(timeString)
+ .arg(expectedGMTSpecifier)
+ ));
+ }
+ QCOMPARE(locale.dayName(1), QString("Monday"));
+ QCOMPARE(locale.dayName(7), QString("Sunday"));
+ QCOMPARE(locale.monthName(1), QString("January"));
+ QCOMPARE(locale.monthName(12), QString("December"));
+ QCOMPARE(locale.firstDayOfWeek(), Qt::Sunday);
+ QCOMPARE(locale.quoteString("string"), QString::fromUtf8("\xe2\x80\x9c" "string" "\xe2\x80\x9d"));
+ QCOMPARE(locale.quoteString("string", QLocale::AlternateQuotation), QString::fromUtf8("\xe2\x80\x98" "string" "\xe2\x80\x99"));
+
+ QList<Qt::DayOfWeek> days;
+ days << Qt::Monday << Qt::Tuesday << Qt::Wednesday << Qt::Thursday << Qt::Friday;
+ QCOMPARE(locale.weekdays(), days);
+
+}
+
+#ifdef Q_OS_WIN
+#include <qt_windows.h>
+
+static QString getWinLocaleInfo(LCTYPE type)
+{
+ LCID id = GetThreadLocale();
+ int cnt = GetLocaleInfo(id, type, 0, 0) * 2;
+
+ if (cnt == 0) {
+ qWarning("QLocale: empty windows locale info (%d)", type);
+ return QString();
+ }
+
+ QByteArray buff(cnt, 0);
+
+ cnt = GetLocaleInfo(id, type, reinterpret_cast<wchar_t*>(buff.data()), buff.size() / 2);
+
+ if (cnt == 0) {
+ qWarning("QLocale: empty windows locale info (%d)", type);
+ return QString();
+ }
+
+ return QString::fromWCharArray(reinterpret_cast<wchar_t*>(buff.data()));
+}
+
+static void setWinLocaleInfo(LCTYPE type, const QString &value)
+{
+ LCID id = GetThreadLocale();
+ SetLocaleInfo(id, type, reinterpret_cast<const wchar_t*>(value.utf16()));
+}
+
+class RestoreLocaleHelper {
+public:
+ RestoreLocaleHelper() {
+ m_decimal = getWinLocaleInfo(LOCALE_SDECIMAL);
+ m_thousand = getWinLocaleInfo(LOCALE_STHOUSAND);
+ m_sdate = getWinLocaleInfo(LOCALE_SSHORTDATE);
+ m_ldate = getWinLocaleInfo(LOCALE_SLONGDATE);
+ m_time = getWinLocaleInfo(LOCALE_STIMEFORMAT);
+ }
+
+ ~RestoreLocaleHelper() {
+ // restore these, or the user will get a surprise
+ setWinLocaleInfo(LOCALE_SDECIMAL, m_decimal);
+ setWinLocaleInfo(LOCALE_STHOUSAND, m_thousand);
+ setWinLocaleInfo(LOCALE_SSHORTDATE, m_sdate);
+ setWinLocaleInfo(LOCALE_SLONGDATE, m_ldate);
+ setWinLocaleInfo(LOCALE_STIMEFORMAT, m_time);
+ }
+
+ QString m_decimal, m_thousand, m_sdate, m_ldate, m_time;
+
+};
+
+#endif
+
+void tst_QLocale::windowsDefaultLocale()
+{
+#ifndef Q_OS_WIN
+ QSKIP("This is a Windows test", SkipAll);
+#else
+ RestoreLocaleHelper systemLocale;
+ // set weird system defaults and make sure we're using them
+ setWinLocaleInfo(LOCALE_SDECIMAL, QLatin1String("@"));
+ setWinLocaleInfo(LOCALE_STHOUSAND, QLatin1String("?"));
+ setWinLocaleInfo(LOCALE_SSHORTDATE, QLatin1String("d*M*yyyy"));
+ setWinLocaleInfo(LOCALE_SLONGDATE, QLatin1String("d@M@yyyy"));
+ setWinLocaleInfo(LOCALE_STIMEFORMAT, QLatin1String("h^m^s"));
+ QLocale locale = QLocale::system();
+
+ // make sure we are seeing the system's format strings
+ QCOMPARE(locale.decimalPoint(), QChar('@'));
+ QCOMPARE(locale.groupSeparator(), QChar('?'));
+ QCOMPARE(locale.dateFormat(QLocale::ShortFormat), QString("d*M*yyyy"));
+ QCOMPARE(locale.dateFormat(QLocale::LongFormat), QString("d@M@yyyy"));
+ QCOMPARE(locale.timeFormat(QLocale::ShortFormat), QString("h^m^s"));
+ QCOMPARE(locale.timeFormat(QLocale::LongFormat), QString("h^m^s"));
+ QCOMPARE(locale.dateTimeFormat(QLocale::ShortFormat), QString("d*M*yyyy h^m^s"));
+ QCOMPARE(locale.dateTimeFormat(QLocale::LongFormat), QString("d@M@yyyy h^m^s"));
+
+ // make sure we are using the system to parse them
+ QCOMPARE(locale.toString(1234.56), QString("1?234@56"));
+ QCOMPARE(locale.toString(QDate(1974, 12, 1), QLocale::ShortFormat), QString("1*12*1974"));
+ QCOMPARE(locale.toString(QDate(1974, 12, 1), QLocale::NarrowFormat), locale.toString(QDate(1974, 12, 1), QLocale::ShortFormat));
+ QCOMPARE(locale.toString(QDate(1974, 12, 1), QLocale::LongFormat), QString("1@12@1974"));
+ QCOMPARE(locale.toString(QTime(1,2,3), QLocale::ShortFormat), QString("1^2^3"));
+ QCOMPARE(locale.toString(QTime(1,2,3), QLocale::NarrowFormat), locale.toString(QTime(1,2,3), QLocale::ShortFormat));
+ QCOMPARE(locale.toString(QTime(1,2,3), QLocale::LongFormat), QString("1^2^3"));
+ QCOMPARE(locale.toString(QDateTime(QDate(1974, 12, 1), QTime(1,2,3)), QLocale::ShortFormat),
+ QString("1*12*1974 1^2^3"));
+ QCOMPARE(locale.toString(QDateTime(QDate(1974, 12, 1), QTime(1,2,3)), QLocale::NarrowFormat),
+ locale.toString(QDateTime(QDate(1974, 12, 1), QTime(1,2,3)), QLocale::ShortFormat));
+ QCOMPARE(locale.toString(QDateTime(QDate(1974, 12, 1), QTime(1,2,3)), QLocale::LongFormat),
+ QString("1@12@1974 1^2^3"));
+ QCOMPARE(locale.toString(QTime(1,2,3), QLocale::LongFormat), QString("1^2^3"));
+#endif
+}
+
+void tst_QLocale::numberOptions()
+{
+ bool ok;
+
+ QLocale locale(QLocale::C);
+ QCOMPARE(locale.numberOptions(), 0);
+ QCOMPARE(locale.toInt(QString("12,345"), &ok), 12345);
+ QVERIFY(ok);
+ QCOMPARE(locale.toInt(QString("12345"), &ok), 12345);
+ QVERIFY(ok);
+ QCOMPARE(locale.toString(12345), QString("12,345"));
+
+ locale.setNumberOptions(QLocale::OmitGroupSeparator);
+ QCOMPARE(locale.numberOptions(), QLocale::OmitGroupSeparator);
+ QCOMPARE(locale.toInt(QString("12,345"), &ok), 12345);
+ QVERIFY(ok);
+ QCOMPARE(locale.toInt(QString("12345"), &ok), 12345);
+ QVERIFY(ok);
+ QCOMPARE(locale.toString(12345), QString("12345"));
+
+ locale.setNumberOptions(QLocale::RejectGroupSeparator);
+ QCOMPARE(locale.numberOptions(), QLocale::RejectGroupSeparator);
+ locale.toInt(QString("12,345"), &ok);
+ QVERIFY(!ok);
+ QCOMPARE(locale.toInt(QString("12345"), &ok), 12345);
+ QVERIFY(ok);
+ QCOMPARE(locale.toString(12345), QString("12,345"));
+
+ QLocale locale2 = locale;
+ QCOMPARE(locale2.numberOptions(), QLocale::RejectGroupSeparator);
+}
+
+void tst_QLocale::negativeNumbers()
+{
+ QLocale locale(QLocale::C);
+
+ bool ok;
+ int i;
+
+ i = locale.toInt(QLatin1String("-100"), &ok);
+ QVERIFY(ok);
+ QCOMPARE(i, -100);
+
+ i = locale.toInt(QLatin1String("-1,000"), &ok);
+ QVERIFY(ok);
+ QCOMPARE(i, -1000);
+
+ i = locale.toInt(QLatin1String("-1000"), &ok);
+ QVERIFY(ok);
+ QCOMPARE(i, -1000);
+
+ i = locale.toInt(QLatin1String("-10,000"), &ok);
+ QVERIFY(ok);
+ QCOMPARE(i, -10000);
+
+ i = locale.toInt(QLatin1String("-10000"), &ok);
+ QVERIFY(ok);
+ QCOMPARE(i, -10000);
+
+ i = locale.toInt(QLatin1String("-100,000"), &ok);
+ QVERIFY(ok);
+ QCOMPARE(i, -100000);
+
+ i = locale.toInt(QLatin1String("-100000"), &ok);
+ QVERIFY(ok);
+ QCOMPARE(i, -100000);
+
+ i = locale.toInt(QLatin1String("-1,000,000"), &ok);
+ QVERIFY(ok);
+ QCOMPARE(i, -1000000);
+
+ i = locale.toInt(QLatin1String("-1000000"), &ok);
+ QVERIFY(ok);
+ QCOMPARE(i, -1000000);
+}
+
+struct LocaleListItem
+{
+ int language;
+ int country;
+};
+
+// first two rows of locale_data[] in qlocale_data_p.h
+static const LocaleListItem g_locale_list[] = {
+ { 1, 0}, // C/AnyCountry
+ { 3, 69}, // Afan/Ethiopia
+ { 3, 111}, // Afan/Kenya
+ { 4, 59}, // Afar/Djibouti
+ { 4, 67}, // Afar/Eritrea
+ { 4, 69}, // Afar/Ethiopia
+ { 5, 195}, // Afrikaans/SouthAfrica
+ { 5, 148}, // Afrikaans/Namibia
+ { 6, 2}, // Albanian/Albania
+ { 7, 69}, // Amharic/Ethiopia
+ { 8, 186}, // Arabic/SaudiArabia
+ { 8, 3}, // Arabic/Algeria
+ { 8, 17}, // Arabic/Bahrain
+ { 8, 64}, // Arabic/Egypt
+ { 8, 103}, // Arabic/Iraq
+ { 8, 109}, // Arabic/Jordan
+ { 8, 115}, // Arabic/Kuwait
+ { 8, 119}, // Arabic/Lebanon
+ { 8, 122}, // Arabic/LibyanArabJamahiriya
+ { 8, 145}, // Arabic/Morocco
+ { 8, 162}, // Arabic/Oman
+ { 8, 175}, // Arabic/Qatar
+ { 8, 201}, // Arabic/Sudan
+ { 8, 207}, // Arabic/SyrianArabRepublic
+ { 8, 216}, // Arabic/Tunisia
+ { 8, 223}, // Arabic/UnitedArabEmirates
+ { 8, 237}, // Arabic/Yemen
+ { 9, 11}, // Armenian/Armenia
+ { 10, 100}, // Assamese/India
+ { 12, 15}, // Azerbaijani/Azerbaijan
+ { 12, 102}, // Azerbaijani/Iran
+ { 14, 197}, // Basque/Spain
+ { 15, 18}, // Bengali/Bangladesh
+ { 15, 100}, // Bengali/India
+ { 16, 25}, // Bhutani/Bhutan
+ { 19, 74}, // Breton/France
+ { 20, 33}, // Bulgarian/Bulgaria
+ { 21, 147}, // Burmese/Myanmar
+ { 22, 20}, // Byelorussian/Belarus
+ { 23, 36}, // Cambodian/Cambodia
+ { 24, 197}, // Catalan/Spain
+ { 25, 44}, // Chinese/China
+ { 25, 97}, // Chinese/HongKong
+ { 25, 126}, // Chinese/Macau
+ { 25, 190}, // Chinese/Singapore
+ { 25, 208}, // Chinese/Taiwan
+ { 27, 54}, // Croatian/Croatia
+ { 28, 57}, // Czech/CzechRepublic
+ { 29, 58}, // Danish/Denmark
+ { 30, 151}, // Dutch/Netherlands
+ { 30, 21}, // Dutch/Belgium
+ { 31, 225}, // English/UnitedStates
+ { 31, 4}, // English/AmericanSamoa
+ { 31, 13}, // English/Australia
+ { 31, 21}, // English/Belgium
+ { 31, 22}, // English/Belize
+ { 31, 28}, // English/Botswana
+ { 31, 38}, // English/Canada
+ { 31, 89}, // English/Guam
+ { 31, 97}, // English/HongKong
+ { 31, 100}, // English/India
+ { 31, 104}, // English/Ireland
+ { 31, 107}, // English/Jamaica
+ { 31, 133}, // English/Malta
+ { 31, 134}, // English/MarshallIslands
+ { 31, 137}, // English/Mauritius
+ { 31, 148}, // English/Namibia
+ { 31, 154}, // English/NewZealand
+ { 31, 160}, // English/NorthernMarianaIslands
+ { 31, 163}, // English/Pakistan
+ { 31, 170}, // English/Philippines
+ { 31, 190}, // English/Singapore
+ { 31, 195}, // English/SouthAfrica
+ { 31, 215}, // English/TrinidadAndTobago
+ { 31, 224}, // English/UnitedKingdom
+ { 31, 226}, // English/UnitedStatesMinorOutlyingIslands
+ { 31, 234}, // English/USVirginIslands
+ { 31, 240}, // English/Zimbabwe
+ { 33, 68}, // Estonian/Estonia
+ { 34, 71}, // Faroese/FaroeIslands
+ { 36, 73}, // Finnish/Finland
+ { 37, 74}, // French/France
+ { 37, 21}, // French/Belgium
+ { 37, 37}, // French/Cameroon
+ { 37, 38}, // French/Canada
+ { 37, 41}, // French/CentralAfricanRepublic
+ { 37, 53}, // French/IvoryCoast
+ { 37, 88}, // French/Guadeloupe
+ { 37, 91}, // French/Guinea
+ { 37, 125}, // French/Luxembourg
+ { 37, 128}, // French/Madagascar
+ { 37, 132}, // French/Mali
+ { 37, 135}, // French/Martinique
+ { 37, 142}, // French/Monaco
+ { 37, 156}, // French/Niger
+ { 37, 176}, // French/Reunion
+ { 37, 187}, // French/Senegal
+ { 37, 206}, // French/Switzerland
+ { 37, 244}, // French/Saint Barthelemy
+ { 37, 245}, // French/Saint Martin
+ { 40, 197}, // Galician/Spain
+ { 41, 81}, // Georgian/Georgia
+ { 42, 82}, // German/Germany
+ { 42, 14}, // German/Austria
+ { 42, 21}, // German/Belgium
+ { 42, 123}, // German/Liechtenstein
+ { 42, 125}, // German/Luxembourg
+ { 42, 206}, // German/Switzerland
+ { 43, 85}, // Greek/Greece
+ { 43, 56}, // Greek/Cyprus
+ { 44, 86}, // Greenlandic/Greenland
+ { 46, 100}, // Gujarati/India
+ { 47, 83}, // Hausa/Ghana
+ { 47, 156}, // Hausa/Niger
+ { 47, 157}, // Hausa/Nigeria
+ { 47, 201}, // Hausa/Sudan
+ { 48, 105}, // Hebrew/Israel
+ { 49, 100}, // Hindi/India
+ { 50, 98}, // Hungarian/Hungary
+ { 51, 99}, // Icelandic/Iceland
+ { 52, 101}, // Indonesian/Indonesia
+ { 57, 104}, // Irish/Ireland
+ { 58, 106}, // Italian/Italy
+ { 58, 206}, // Italian/Switzerland
+ { 59, 108}, // Japanese/Japan
+ { 61, 100}, // Kannada/India
+ { 63, 110}, // Kazakh/Kazakhstan
+ { 64, 179}, // Kinyarwanda/Rwanda
+ { 65, 116}, // Kirghiz/Kyrgyzstan
+ { 66, 114}, // Korean/RepublicOfKorea
+ { 67, 102}, // Kurdish/Iran
+ { 67, 103}, // Kurdish/Iraq
+ { 67, 207}, // Kurdish/SyrianArabRepublic
+ { 67, 217}, // Kurdish/Turkey
+ { 69, 117}, // Laothian/Lao
+ { 71, 118}, // Latvian/Latvia
+ { 72, 49}, // Lingala/DemocraticRepublicOfCongo
+ { 72, 50}, // Lingala/PeoplesRepublicOfCongo
+ { 73, 124}, // Lithuanian/Lithuania
+ { 74, 127}, // Macedonian/Macedonia
+ { 75, 128}, // Malagasy/Madagascar
+ { 76, 130}, // Malay/Malaysia
+ { 76, 32}, // Malay/BruneiDarussalam
+ { 77, 100}, // Malayalam/India
+ { 78, 133}, // Maltese/Malta
+ { 79, 154}, // Maori/NewZealand
+ { 80, 100}, // Marathi/India
+ { 82, 44}, // Mongolian/China
+ { 82, 143}, // Mongolian/Mongolia
+ { 84, 100}, // Nepali/India
+ { 84, 150}, // Nepali/Nepal
+ { 85, 161}, // Norwegian/Norway
+ { 86, 74}, // Occitan/France
+ { 87, 100}, // Oriya/India
+ { 88, 1}, // Pashto/Afghanistan
+ { 89, 102}, // Persian/Iran
+ { 89, 1}, // Persian/Afghanistan
+ { 90, 172}, // Polish/Poland
+ { 91, 173}, // Portuguese/Portugal
+ { 91, 30}, // Portuguese/Brazil
+ { 91, 92}, // Portuguese/GuineaBissau
+ { 91, 146}, // Portuguese/Mozambique
+ { 92, 100}, // Punjabi/India
+ { 92, 163}, // Punjabi/Pakistan
+ { 94, 206}, // RhaetoRomance/Switzerland
+ { 95, 141}, // Romanian/Moldova
+ { 95, 177}, // Romanian/Romania
+ { 96, 178}, // Russian/RussianFederation
+ { 96, 141}, // Russian/Moldova
+ { 96, 222}, // Russian/Ukraine
+ { 98, 41}, // Sangho/CentralAfricanRepublic
+ { 99, 100}, // Sanskrit/India
+ { 100, 241}, // Serbian/SerbiaAndMontenegro
+ { 100, 27}, // Serbian/BosniaAndHerzegowina
+ { 100, 238}, // Serbian/Yugoslavia
+ { 100, 242}, // Serbian/Montenegro
+ { 100, 243}, // Serbian/Serbia
+ { 101, 241}, // SerboCroatian/SerbiaAndMontenegro
+ { 101, 27}, // SerboCroatian/BosniaAndHerzegowina
+ { 101, 238}, // SerboCroatian/Yugoslavia
+ { 102, 120}, // Sesotho/Lesotho
+ { 102, 195}, // Sesotho/SouthAfrica
+ { 103, 195}, // Setswana/SouthAfrica
+ { 104, 240}, // Shona/Zimbabwe
+ { 106, 198}, // Singhalese/SriLanka
+ { 107, 195}, // Siswati/SouthAfrica
+ { 107, 204}, // Siswati/Swaziland
+ { 108, 191}, // Slovak/Slovakia
+ { 109, 192}, // Slovenian/Slovenia
+ { 110, 194}, // Somali/Somalia
+ { 110, 59}, // Somali/Djibouti
+ { 110, 69}, // Somali/Ethiopia
+ { 110, 111}, // Somali/Kenya
+ { 111, 197}, // Spanish/Spain
+ { 111, 10}, // Spanish/Argentina
+ { 111, 26}, // Spanish/Bolivia
+ { 111, 43}, // Spanish/Chile
+ { 111, 47}, // Spanish/Colombia
+ { 111, 52}, // Spanish/CostaRica
+ { 111, 61}, // Spanish/DominicanRepublic
+ { 111, 63}, // Spanish/Ecuador
+ { 111, 65}, // Spanish/ElSalvador
+ { 111, 66}, // Spanish/EquatorialGuinea
+ { 111, 90}, // Spanish/Guatemala
+ { 111, 96}, // Spanish/Honduras
+ { 111, 139}, // Spanish/Mexico
+ { 111, 155}, // Spanish/Nicaragua
+ { 111, 166}, // Spanish/Panama
+ { 111, 168}, // Spanish/Paraguay
+ { 111, 169}, // Spanish/Peru
+ { 111, 174}, // Spanish/PuertoRico
+ { 111, 225}, // Spanish/UnitedStates
+ { 111, 227}, // Spanish/Uruguay
+ { 111, 231}, // Spanish/Venezuela
+ { 113, 111}, // Swahili/Kenya
+ { 113, 210}, // Swahili/Tanzania
+ { 114, 205}, // Swedish/Sweden
+ { 114, 73}, // Swedish/Finland
+ { 116, 209}, // Tajik/Tajikistan
+ { 117, 100}, // Tamil/India
+ { 117, 198}, // Tamil/SriLanka
+ { 118, 178}, // Tatar/RussianFederation
+ { 119, 100}, // Telugu/India
+ { 120, 211}, // Thai/Thailand
+ { 121, 44}, // Tibetan/China
+ { 121, 100}, // Tibetan/India
+ { 122, 67}, // Tigrinya/Eritrea
+ { 122, 69}, // Tigrinya/Ethiopia
+ { 123, 214}, // Tonga/Tonga
+ { 124, 195}, // Tsonga/SouthAfrica
+ { 125, 217}, // Turkish/Turkey
+ { 128, 44}, // Uigur/China
+ { 129, 222}, // Ukrainian/Ukraine
+ { 130, 100}, // Urdu/India
+ { 130, 163}, // Urdu/Pakistan
+ { 131, 228}, // Uzbek/Uzbekistan
+ { 131, 1}, // Uzbek/Afghanistan
+ { 132, 232}, // Vietnamese/VietNam
+ { 134, 224}, // Welsh/UnitedKingdom
+ { 135, 187}, // Wolof/Senegal
+ { 136, 195}, // Xhosa/SouthAfrica
+ { 138, 157}, // Yoruba/Nigeria
+ { 140, 195}, // Zulu/SouthAfrica
+ { 141, 161}, // Nynorsk/Norway
+ { 142, 27}, // Bosnian/BosniaAndHerzegowina
+ { 143, 131}, // Divehi/Maldives
+ { 144, 224}, // Manx/UnitedKingdom
+ { 145, 224}, // Cornish/UnitedKingdom
+ { 146, 83}, // Akan/Ghana
+ { 147, 100}, // Konkani/India
+ { 148, 83}, // Ga/Ghana
+ { 149, 157}, // Igbo/Nigeria
+ { 150, 111}, // Kamba/Kenya
+ { 151, 207}, // Syriac/SyrianArabRepublic
+ { 152, 67}, // Blin/Eritrea
+ { 153, 67}, // Geez/Eritrea
+ { 153, 69}, // Geez/Ethiopia
+ { 154, 53}, // Koro/IvoryCoast
+ { 155, 69}, // Sidamo/Ethiopia
+ { 156, 157}, // Atsam/Nigeria
+ { 157, 67}, // Tigre/Eritrea
+ { 158, 157}, // Jju/Nigeria
+ { 159, 106}, // Friulian/Italy
+ { 160, 195}, // Venda/SouthAfrica
+ { 161, 83}, // Ewe/Ghana
+ { 161, 212}, // Ewe/Togo
+ { 162, 69}, // Walamo/Ethiopia
+ { 163, 225}, // Hawaiian/UnitedStates
+ { 164, 157}, // Tyap/Nigeria
+ { 165, 129}, // Chewa/Malawi
+ { 166, 170}, // Filipino/Philippines
+ { 167, 206}, // Swiss German/Switzerland
+ { 168, 44}, // Sichuan Yi/China
+ { 169, 91}, // Kpelle/Guinea
+ { 169, 121}, // Kpelle/Liberia
+ { 170, 82}, // Low German/Germany
+ { 171, 195}, // South Ndebele/SouthAfrica
+ { 172, 195}, // Northern Sotho/SouthAfrica
+ { 173, 73}, // Northern Sami/Finland
+ { 173, 161}, // Northern Sami/Norway
+ { 174, 208}, // Taroko/Taiwan
+ { 175, 111}, // Gusii/Kenya
+ { 176, 111}, // Taita/Kenya
+ { 177, 187}, // Fulah/Senegal
+ { 178, 111}, // Kikuyu/Kenya
+ { 179, 111}, // Samburu/Kenya
+ { 180, 146}, // Sena/Mozambique
+ { 181, 240}, // North Ndebele/Zimbabwe
+ { 182, 210}, // Rombo/Tanzania
+ { 183, 145}, // Tachelhit/Morocco
+ { 184, 3}, // Kabyle/Algeria
+ { 185, 221}, // Nyankole/Uganda
+ { 186, 210}, // Bena/Tanzania
+ { 187, 210}, // Vunjo/Tanzania
+ { 188, 132}, // Bambara/Mali
+ { 189, 111}, // Embu/Kenya
+ { 190, 225}, // Cherokee/UnitedStates
+ { 191, 137}, // Morisyen/Mauritius
+ { 192, 210}, // Makonde/Tanzania
+ { 193, 210}, // Langi/Tanzania
+ { 194, 221}, // Ganda/Uganda
+ { 195, 239}, // Bemba/Zambia
+ { 196, 39}, // Kabuverdianu/CapeVerde
+ { 197, 111}, // Meru/Kenya
+ { 198, 111}, // Kalenjin/Kenya
+ { 199, 148}, // Nama/Namibia
+ { 200, 210}, // Machame/Tanzania
+ { 201, 82}, // Colognian/Germany
+ { 202, 111}, // Masai/Kenya
+ { 202, 210}, // Masai/Tanzania
+ { 203, 221}, // Soga/Uganda
+ { 204, 111}, // Luyia/Kenya
+ { 205, 210}, // Asu/Tanzania
+ { 206, 111}, // Teso/Kenya
+ { 206, 221}, // Teso/Uganda
+ { 207, 67}, // Saho/Eritrea
+ { 208, 132}, // Koyra Chiini/Mali
+ { 209, 210}, // Rwa/Tanzania
+ { 210, 111}, // Luo/Kenya
+ { 211, 221}, // Chiga/Uganda
+ { 212, 145}, // Central Morocco Tamazight/Morocco
+ { 213, 132}, // Koyraboro Senni/Mali
+ { 214, 210} // Shambala/Tanzania
+};
+static const int g_locale_list_count = sizeof(g_locale_list)/sizeof(g_locale_list[0]);
+
+
+void tst_QLocale::testNames()
+{
+ for (int i = 0; i < g_locale_list_count; ++i) {
+ const LocaleListItem &item = g_locale_list[i];
+ QLocale l1((QLocale::Language)item.language, (QLocale::Country)item.country);
+ QCOMPARE((int)l1.language(), item.language);
+ QCOMPARE((int)l1.country(), item.country);
+
+ QString name = l1.name();
+
+ QLocale l2(name);
+ QCOMPARE((int)l2.language(), item.language);
+ QCOMPARE((int)l2.country(), item.country);
+ QCOMPARE(l2.name(), name);
+
+ QLocale l3(name + QLatin1String("@foo"));
+ QCOMPARE((int)l3.language(), item.language);
+ QCOMPARE((int)l3.country(), item.country);
+ QCOMPARE(l3.name(), name);
+
+ QLocale l4(name + QLatin1String(".foo"));
+ QCOMPARE((int)l4.language(), item.language);
+ QCOMPARE((int)l4.country(), item.country);
+ QCOMPARE(l4.name(), name);
+
+ if (item.language != QLocale::C) {
+ int idx = name.indexOf(QLatin1Char('_'));
+ QVERIFY(idx != -1);
+ QString lang = name.left(idx);
+
+ QCOMPARE((int)QLocale(lang).language(), item.language);
+ QCOMPARE((int)QLocale(lang + QLatin1String("@foo")).language(), item.language);
+ QCOMPARE((int)QLocale(lang + QLatin1String(".foo")).language(), item.language);
+ }
+ }
+}
+
+void tst_QLocale::dayName_data()
+{
+ QTest::addColumn<QString>("locale_name");
+ QTest::addColumn<QString>("dayName");
+ QTest::addColumn<int>("day");
+ QTest::addColumn<QLocale::FormatType>("format");
+
+ QTest::newRow("no_NO") << QString("no_NO") << QString("tirsdag") << 2 << QLocale::LongFormat;
+ QTest::newRow("nb_NO") << QString("nb_NO") << QString("tirsdag") << 2 << QLocale::LongFormat;
+ QTest::newRow("nn_NO") << QString("nn_NO") << QString("tysdag") << 2 << QLocale::LongFormat;
+
+ QTest::newRow("C long") << QString("C") << QString("Sunday") << 7 << QLocale::LongFormat;
+ QTest::newRow("C short") << QString("C") << QString("Sun") << 7 << QLocale::ShortFormat;
+ QTest::newRow("C narrow") << QString("C") << QString("7") << 7 << QLocale::NarrowFormat;
+
+ QTest::newRow("ru_RU long") << QString("ru_RU") << QString::fromUtf8("\320\262\320\276\321\201\320\272\321\200\320\265\321\201\320\265\320\275\321\214\320\265") << 7 << QLocale::LongFormat;
+ QTest::newRow("ru_RU short") << QString("ru_RU") << QString::fromUtf8("\320\222\321\201") << 7 << QLocale::ShortFormat;
+ QTest::newRow("ru_RU narrow") << QString("ru_RU") << QString::fromUtf8("\320\222") << 7 << QLocale::NarrowFormat;
+}
+
+void tst_QLocale::dayName()
+{
+ QFETCH(QString, locale_name);
+ QFETCH(QString, dayName);
+ QFETCH(int, day);
+ QFETCH(QLocale::FormatType, format);
+
+ QLocale l(locale_name);
+ QCOMPARE(l.dayName(day, format), dayName);
+}
+
+void tst_QLocale::standaloneDayName_data()
+{
+ QTest::addColumn<QString>("locale_name");
+ QTest::addColumn<QString>("dayName");
+ QTest::addColumn<int>("day");
+ QTest::addColumn<QLocale::FormatType>("format");
+
+ QTest::newRow("no_NO") << QString("no_NO") << QString("tirsdag") << 2 << QLocale::LongFormat;
+ QTest::newRow("nb_NO") << QString("nb_NO") << QString("tirsdag") << 2 << QLocale::LongFormat;
+ QTest::newRow("nn_NO") << QString("nn_NO") << QString("tysdag") << 2 << QLocale::LongFormat;
+
+ QTest::newRow("C invalid: 0 long") << QString("C") << QString() << 0 << QLocale::LongFormat;
+ QTest::newRow("C invalid: 0 short") << QString("C") << QString() << 0 << QLocale::ShortFormat;
+ QTest::newRow("C invalid: 0 narrow") << QString("C") << QString() << 0 << QLocale::NarrowFormat;
+ QTest::newRow("C invalid: 8 long") << QString("C") << QString() << 8 << QLocale::LongFormat;
+ QTest::newRow("C invalid: 8 short") << QString("C") << QString() << 8 << QLocale::ShortFormat;
+ QTest::newRow("C invalid: 8 narrow") << QString("C") << QString() << 8 << QLocale::NarrowFormat;
+
+ QTest::newRow("C long") << QString("C") << QString("Sunday") << 7 << QLocale::LongFormat;
+ QTest::newRow("C short") << QString("C") << QString("Sun") << 7 << QLocale::ShortFormat;
+ QTest::newRow("C narrow") << QString("C") << QString("S") << 7 << QLocale::NarrowFormat;
+
+ QTest::newRow("ru_RU long") << QString("ru_RU") << QString::fromUtf8("\320\222\320\276\321\201\320\272\321\200\320\265\321\201\320\265\320\275\321\214\320\265") << 7 << QLocale::LongFormat;
+ QTest::newRow("ru_RU short") << QString("ru_RU") << QString::fromUtf8("\320\222\321\201") << 7 << QLocale::ShortFormat;
+ QTest::newRow("ru_RU narrow") << QString("ru_RU") << QString::fromUtf8("\320\222") << 7 << QLocale::NarrowFormat;
+}
+
+void tst_QLocale::standaloneDayName()
+{
+ QFETCH(QString, locale_name);
+ QFETCH(QString, dayName);
+ QFETCH(int, day);
+ QFETCH(QLocale::FormatType, format);
+
+ QLocale l(locale_name);
+ QCOMPARE(l.standaloneDayName(day, format), dayName);
+}
+
+void tst_QLocale::underflowOverflow()
+{
+ QString
+a(QLatin1String("0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e10"));
+
+ bool ok = false;
+ a.toDouble(&ok);
+ QVERIFY(!ok);
+
+ a = QLatin1String("1e600");
+ ok = false;
+ a.toDouble(&ok);
+ QVERIFY(!ok);
+
+ a = QLatin1String("-9223372036854775809");
+ a.toLongLong(&ok);
+ QVERIFY(!ok);
+}
+
+void tst_QLocale::measurementSystems_data()
+{
+ QTest::addColumn<QString>("localeName");
+ QTest::addColumn<int>("mSystem");
+
+ QTest::newRow("no_NO") << QString("no_NO") << (int)QLocale::MetricSystem; // Norwegian/Norway
+ QTest::newRow("sv_SE") << QString("sv_SE") << (int)QLocale::MetricSystem; // Swedish/Sweden
+ QTest::newRow("en_US") << QString("en_US") << (int)QLocale::ImperialSystem; // English/United States
+ QTest::newRow("en_GB") << QString("en_GB") << (int)QLocale::MetricSystem; // English/Great Britain
+ QTest::newRow("no") << QString("no") << (int)QLocale::MetricSystem; // Norwegian
+ QTest::newRow("en") << QString("en") << (int)QLocale::ImperialSystem; // English
+ QTest::newRow("es_US") << QString("es_US") << (int)QLocale::ImperialSystem; // Spanish/United States
+ QTest::newRow("es_ES") << QString("es_ES") << (int)QLocale::MetricSystem; // Spanish/Spain
+ QTest::newRow("es") << QString("es") << (int)QLocale::MetricSystem; // Spanish
+}
+
+void tst_QLocale::measurementSystems()
+{
+ QSKIP("Meh, skip the test as we do not reread the environment variables anymore", SkipAll);
+ QFETCH(QString, localeName);
+ QFETCH(int, mSystem);
+
+ // Method should be const.
+ const QLocale locale(localeName);
+ QCOMPARE((int)locale.measurementSystem(), mSystem);
+}
+
+void tst_QLocale::systemMeasurementSystems_data()
+{
+ QTest::addColumn<QString>("lcAllLocale");
+ QTest::addColumn<QString>("lcMeasurementLocale");
+ QTest::addColumn<QString>("langLocale");
+ QTest::addColumn<int>("mSystem");
+
+ QTest::newRow("row0") << QString("no_NO") << QString("no_NO") << QString("no_NO")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row1") << QString("no_NO") << QString("no_NO") << QString("en_US")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row2") << QString("no_NO") << QString("en_US") << QString("no_NO")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row3") << QString("no_NO") << QString("en_US") << QString("en_US")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row4") << QString("en_US") << QString("no_NO") << QString("no_NO")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row5") << QString("en_US") << QString("no_NO") << QString("en_US")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row6") << QString("en_US") << QString("en_US") << QString("no_NO")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row7") << QString("en_US") << QString("en_US") << QString("en_US")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row8") << QString("") << QString("") << QString("")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row9") << QString("") << QString("") << QString("no_NO")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row10") << QString("") << QString("") << QString("en_US")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row11") << QString("") << QString("no_NO") << QString("")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row12") << QString("") << QString("en_US") << QString("")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row13") << QString("") << QString("no_NO") << QString("en_US")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row14") << QString("") << QString("en_US") << QString("no_NO")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row15") << QString("no_NO") << QString("") << QString("")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row16") << QString("en_US") << QString("") << QString("")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row17") << QString("no_NO") << QString("en_US") << QString("")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row18") << QString("en_US") << QString("no_NO") << QString("")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row19") << QString("no_NO") << QString("") << QString("en_US")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row20") << QString("en_US") << QString("") << QString("no_NO")
+ << (int)QLocale::ImperialSystem;
+}
+
+void tst_QLocale::systemMeasurementSystems()
+{
+ QSKIP("Meh, skip the test as we do not reread the environment variables anymore", SkipAll);
+ // Theoretically, we could include HPUX in this test, but its setenv implementation
+ // stinks. It's called putenv, and it requires you to keep the variable you pass
+ // to it around forever.
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC) && !defined(Q_OS_SYMBIAN)
+ QFETCH(QString, lcAllLocale);
+ QFETCH(QString, lcMeasurementLocale);
+ QFETCH(QString, langLocale);
+ QFETCH(int, mSystem);
+
+ // Save any old environment variables.
+ QString oldLcAll = QString::fromLocal8Bit(getenv("LC_ALL"));
+ QString oldLcMeasurement = QString::fromLocal8Bit(getenv("LC_MEASUREMENT"));
+ QString oldLang = QString::fromLocal8Bit(getenv("LANG"));
+
+ qputenv("LC_ALL", lcAllLocale.toLocal8Bit());
+ qputenv("LC_MEASUREMENT", lcMeasurementLocale.toLocal8Bit());
+ qputenv("LANG", langLocale.toLocal8Bit());
+
+ // Method should be const.
+ const QLocale locale(QLocale::system());
+ QCOMPARE((int)locale.measurementSystem(), mSystem);
+
+ // Restore environment.
+ qputenv("LC_ALL", oldLcAll.toLocal8Bit());
+ qputenv("LC_MEASUREMENT", oldLcMeasurement.toLocal8Bit());
+ qputenv("LANG", oldLang.toLocal8Bit());
+#else
+ QSKIP("Test doesn't work on Mac, Windows or Symbian", SkipAll);
+#endif
+}
+
+class SystemLocale : public QSystemLocale
+{
+public:
+ virtual QVariant query(QueryType type, QVariant in) const
+ {
+ switch (type) {
+ case DateTimeFormatLong: return QLatin1String("dddd ddd dd d MMMM MMM MM M yyyy hh:mm:ss.zzz");
+ case DateTimeFormatShort: return QLatin1String("d M yy h:m");
+ case DateTimeToStringLong:
+ case DateTimeToStringShort:
+ return in.toDateTime().toString(type == DateTimeToStringShort
+ ? QLatin1String("dMyyhm")
+ : QLatin1String("ddMMyyyyhhmmsszzz"));
+ default:
+ break;
+ }
+ return QSystemLocale::query(type, in);
+ }
+};
+
+
+
+void tst_QLocale::queryDateTime()
+{
+ SystemLocale loc;
+ QCOMPARE(QLocale::system().dateTimeFormat(QLocale::LongFormat),
+ loc.query(QSystemLocale::DateTimeFormatLong, QVariant()).toString());
+ QCOMPARE(QLocale::system().dateTimeFormat(QLocale::ShortFormat),
+ loc.query(QSystemLocale::DateTimeFormatShort, QVariant()).toString());
+ QCOMPARE(QLocale::system().toString(QDateTime(QDate(1974, 12, 1), QTime(1, 2, 3, 4)), QLocale::ShortFormat),
+ QString("1127412"));
+ QCOMPARE(QLocale::system().toString(QDateTime(QDate(1974, 12, 1), QTime(1, 2, 3, 4)), QLocale::NarrowFormat),
+ QLocale::system().toString(QDateTime(QDate(1974, 12, 1), QTime(1, 2, 3, 4)), QLocale::ShortFormat));
+ QCOMPARE(QLocale::system().toString(QDateTime(QDate(1974, 12, 1), QTime(1, 2, 3, 4)), QLocale::LongFormat),
+ QString("01121974010203004"));
+}
+
+#ifndef QT_NO_SYSTEMLOCALE
+void tst_QLocale::queryMeasureSystem_data()
+{
+ QTest::addColumn<QString>("lcAllLocale");
+ QTest::addColumn<QString>("lcMeasurementLocale");
+ QTest::addColumn<QString>("langLocale");
+ QTest::addColumn<int>("mSystem");
+
+ QTest::newRow("row0") << QString("no_NO") << QString("no_NO") << QString("no_NO")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row1") << QString("no_NO") << QString("no_NO") << QString("en_US")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row2") << QString("no_NO") << QString("en_US") << QString("no_NO")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row3") << QString("no_NO") << QString("en_US") << QString("en_US")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row4") << QString("en_US") << QString("no_NO") << QString("no_NO")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row5") << QString("en_US") << QString("no_NO") << QString("en_US")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row6") << QString("en_US") << QString("en_US") << QString("no_NO")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row7") << QString("en_US") << QString("en_US") << QString("en_US")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row8") << QString("") << QString("") << QString("")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row9") << QString("") << QString("") << QString("no_NO")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row10") << QString("") << QString("") << QString("en_US")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row11") << QString("") << QString("no_NO") << QString("")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row12") << QString("") << QString("en_US") << QString("")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row13") << QString("") << QString("no_NO") << QString("en_US")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row14") << QString("") << QString("en_US") << QString("no_NO")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row15") << QString("no_NO") << QString("") << QString("")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row16") << QString("en_US") << QString("") << QString("")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row17") << QString("no_NO") << QString("en_US") << QString("")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row18") << QString("en_US") << QString("no_NO") << QString("")
+ << (int)QLocale::ImperialSystem;
+ QTest::newRow("row19") << QString("no_NO") << QString("") << QString("en_US")
+ << (int)QLocale::MetricSystem;
+ QTest::newRow("row20") << QString("en_US") << QString("") << QString("no_NO")
+ << (int)QLocale::ImperialSystem;
+}
+
+void tst_QLocale::queryMeasureSystem()
+{
+ QSKIP("Meh, skip the test as we do not reread the environment variables anymore", SkipAll);
+ // Theoretically, we could include HPUX in this test, but its setenv implementation
+ // stinks. It's called putenv, and it requires you to keep the variable you pass
+ // to it around forever.
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC) && !defined(Q_OS_SYMBIAN)
+ QFETCH(QString, lcAllLocale);
+ QFETCH(QString, lcMeasurementLocale);
+ QFETCH(QString, langLocale);
+ QFETCH(int, mSystem);
+
+ // Save any old environment variables.
+ QString oldLcAll = QString::fromLocal8Bit(getenv("LC_ALL"));
+ QString oldLcMeasurement = QString::fromLocal8Bit(getenv("LC_MEASUREMENT"));
+ QString oldLang = QString::fromLocal8Bit(getenv("LANG"));
+
+ qputenv("LC_ALL", lcAllLocale.toLocal8Bit());
+ qputenv("LC_MEASUREMENT", lcMeasurementLocale.toLocal8Bit());
+ qputenv("LANG", langLocale.toLocal8Bit());
+
+ // Method should be const.
+ const QSystemLocale locale;
+ QCOMPARE(locale.query(QSystemLocale::MeasurementSystem, QVariant()).toInt(), mSystem);
+
+ // Restore environment.
+ qputenv("LC_ALL", oldLcAll.toLocal8Bit());
+ qputenv("LC_MEASUREMENT", oldLcMeasurement.toLocal8Bit());
+ qputenv("LANG", oldLang.toLocal8Bit());
+#else
+ QSKIP("Test doesn't work on Mac, Windows or Symbian", SkipAll);
+#endif
+}
+#endif // QT_NO_SYSTEMLOCALE
+
+void tst_QLocale::ampm()
+{
+ QLocale c(QLocale::C);
+ QCOMPARE(c.amText(), QLatin1String("AM"));
+ QCOMPARE(c.pmText(), QLatin1String("PM"));
+
+ QLocale de("de_DE");
+ QCOMPARE(de.amText(), QLatin1String("vorm."));
+ QCOMPARE(de.pmText(), QLatin1String("nachm."));
+
+ QLocale sv("sv_SE");
+ QCOMPARE(sv.amText(), QLatin1String("fm"));
+ QCOMPARE(sv.pmText(), QLatin1String("em"));
+
+ QLocale nn("nl_NL");
+ QCOMPARE(nn.amText(), QLatin1String("AM"));
+ QCOMPARE(nn.pmText(), QLatin1String("PM"));
+
+ QLocale ua("uk_UA");
+ QCOMPARE(ua.amText(), QString::fromUtf8("\320\264\320\277"));
+ QCOMPARE(ua.pmText(), QString::fromUtf8("\320\277\320\277"));
+}
+
+void tst_QLocale::dateFormat()
+{
+ const QLocale c(QLocale::C);
+ // check that the NarrowFormat is the same as ShortFormat.
+ QCOMPARE(c.dateFormat(QLocale::NarrowFormat), c.dateFormat(QLocale::ShortFormat));
+
+ const QLocale no("no_NO");
+ QCOMPARE(no.dateFormat(QLocale::NarrowFormat), QLatin1String("dd.MM.yy"));
+ QCOMPARE(no.dateFormat(QLocale::ShortFormat), QLatin1String("dd.MM.yy"));
+ QCOMPARE(no.dateFormat(QLocale::LongFormat), QLatin1String("dddd d. MMMM yyyy"));
+}
+
+void tst_QLocale::timeFormat()
+{
+ const QLocale c(QLocale::C);
+ // check that the NarrowFormat is the same as ShortFormat.
+ QCOMPARE(c.timeFormat(QLocale::NarrowFormat), c.timeFormat(QLocale::ShortFormat));
+
+ const QLocale no("no_NO");
+ QCOMPARE(no.timeFormat(QLocale::NarrowFormat), QLatin1String("HH:mm"));
+ QCOMPARE(no.timeFormat(QLocale::ShortFormat), QLatin1String("HH:mm"));
+ QCOMPARE(no.timeFormat(QLocale::LongFormat), QLatin1String("'kl'. HH:mm:ss t"));
+}
+
+void tst_QLocale::dateTimeFormat()
+{
+ const QLocale c(QLocale::C);
+ // check that the NarrowFormat is the same as ShortFormat.
+ QCOMPARE(c.dateTimeFormat(QLocale::NarrowFormat), c.dateTimeFormat(QLocale::ShortFormat));
+
+ const QLocale no("no_NO");
+ QCOMPARE(no.dateTimeFormat(QLocale::NarrowFormat), QLatin1String("dd.MM.yy HH:mm"));
+ QCOMPARE(no.dateTimeFormat(QLocale::ShortFormat), QLatin1String("dd.MM.yy HH:mm"));
+ QCOMPARE(no.dateTimeFormat(QLocale::LongFormat), QLatin1String("dddd d. MMMM yyyy 'kl'. HH:mm:ss t"));
+}
+
+void tst_QLocale::monthName()
+{
+ const QLocale c(QLocale::C);
+ QCOMPARE(c.monthName(0, QLocale::ShortFormat), QString());
+ QCOMPARE(c.monthName(0, QLocale::LongFormat), QString());
+ QCOMPARE(c.monthName(0, QLocale::NarrowFormat), QString());
+ QCOMPARE(c.monthName(13, QLocale::ShortFormat), QString());
+ QCOMPARE(c.monthName(13, QLocale::LongFormat), QString());
+ QCOMPARE(c.monthName(13, QLocale::NarrowFormat), QString());
+
+ QCOMPARE(c.monthName(1, QLocale::LongFormat), QLatin1String("January"));
+ QCOMPARE(c.monthName(1, QLocale::ShortFormat), QLatin1String("Jan"));
+ QCOMPARE(c.monthName(1, QLocale::NarrowFormat), QLatin1String("1"));
+
+ const QLocale de("de_DE");
+ QCOMPARE(de.monthName(12, QLocale::LongFormat), QLatin1String("Dezember"));
+ QCOMPARE(de.monthName(12, QLocale::ShortFormat), QLatin1String("Dez"));
+ // 'de' locale doesn't have narrow month name
+ QCOMPARE(de.monthName(12, QLocale::NarrowFormat), QLatin1String("D"));
+
+ QLocale ru("ru_RU");
+ QCOMPARE(ru.monthName(1, QLocale::LongFormat), QString::fromUtf8("\321\217\320\275\320\262\320\260\321\200\321\217"));
+ QCOMPARE(ru.monthName(1, QLocale::ShortFormat), QString::fromUtf8("\321\217\320\275\320\262\56"));
+ QCOMPARE(ru.monthName(1, QLocale::NarrowFormat), QString::fromUtf8("\320\257"));
+
+ // check that our CLDR scripts handle surrogate pairs correctly
+ QLocale dsrt("en-Dsrt-US");
+ QCOMPARE(dsrt.monthName(1, QLocale::LongFormat), QString::fromUtf8("\xf0\x90\x90\x96\xf0\x90\x90\xb0\xf0\x90\x91\x8c\xf0\x90\x90\xb7\xf0\x90\x90\xad\xf0\x90\x90\xaf\xf0\x90\x91\x89\xf0\x90\x90\xa8"));
+}
+
+void tst_QLocale::standaloneMonthName()
+{
+ const QLocale c(QLocale::C);
+ QCOMPARE(c.monthName(0, QLocale::ShortFormat), QString());
+ QCOMPARE(c.monthName(0, QLocale::LongFormat), QString());
+ QCOMPARE(c.monthName(0, QLocale::NarrowFormat), QString());
+ QCOMPARE(c.monthName(13, QLocale::ShortFormat), QString());
+ QCOMPARE(c.monthName(13, QLocale::LongFormat), QString());
+ QCOMPARE(c.monthName(13, QLocale::NarrowFormat), QString());
+
+ QCOMPARE(c.standaloneMonthName(1, QLocale::LongFormat), QLatin1String("January"));
+ QCOMPARE(c.standaloneMonthName(1, QLocale::ShortFormat), QLatin1String("Jan"));
+
+ const QLocale de("de_DE");
+ // For de_DE locale Unicode CLDR database doesn't contain standalone long months
+ // so just checking if the return value is the same as in monthName().
+ QCOMPARE(de.standaloneMonthName(12, QLocale::LongFormat), QLatin1String("Dezember"));
+ QCOMPARE(de.standaloneMonthName(12, QLocale::LongFormat), de.monthName(12, QLocale::LongFormat));
+ QCOMPARE(de.standaloneMonthName(12, QLocale::ShortFormat), QLatin1String("Dez"));
+ QCOMPARE(de.standaloneMonthName(12, QLocale::NarrowFormat), QLatin1String("D"));
+
+ QLocale ru("ru_RU");
+ QCOMPARE(ru.standaloneMonthName(1, QLocale::LongFormat), QString::fromUtf8("\320\257\320\275\320\262\320\260\321\200\321\214"));
+ QCOMPARE(ru.standaloneMonthName(1, QLocale::ShortFormat), QString::fromUtf8("\321\217\320\275\320\262\56"));
+ QCOMPARE(ru.standaloneMonthName(1, QLocale::NarrowFormat), QString::fromUtf8("\320\257"));
+}
+
+#if defined(Q_OS_SYMBIAN)
+void tst_QLocale::symbianSystemLocale()
+{
+# if defined(__SERIES60_31__)
+ QSKIP("S60 3.1 doesn't support system format properly", SkipAll);
+# else
+ // Simple test to verify that Symbian system locale works at all
+ const QSystemLocale locale;
+ TExtendedLocale s60Locale;
+ s60Locale.LoadSystemSettings();
+
+ TTime s60Date(_L("20090117:")); // Symbian offsets day and month from zero
+ QDate date(2009,2,18);
+
+ TPtrC s60DateFormat = s60Locale.GetShortDateFormatSpec();
+ QString dateFormat = locale.query(QSystemLocale::DateFormatShort, QVariant()).toString();
+
+ TBuf<50> s60FormattedDate;
+ TRAPD(err, s60Date.FormatL(s60FormattedDate, s60DateFormat));
+ QVERIFY(err == KErrNone);
+ QString s60FinalResult = qt_TDesC2QString(s60FormattedDate);
+ QString finalResult = date.toString(dateFormat);
+
+ QCOMPARE(finalResult, s60FinalResult);
+# endif
+}
+#endif
+
+void tst_QLocale::currency()
+{
+ const QLocale c(QLocale::C);
+ QCOMPARE(c.toCurrencyString(qulonglong(1234)), QString("1234"));
+ QCOMPARE(c.toCurrencyString(qlonglong(-1234)), QString("-1234"));
+ QCOMPARE(c.toCurrencyString(double(1234.56)), QString("1234.56"));
+ QCOMPARE(c.toCurrencyString(double(-1234.56)), QString("-1234.56"));
+
+ const QLocale ru_RU("ru_RU");
+ QCOMPARE(ru_RU.toCurrencyString(qulonglong(1234)), QString::fromUtf8("1234\xc2\xa0\xd1\x80\xd1\x83\xd0\xb1."));
+ QCOMPARE(ru_RU.toCurrencyString(qlonglong(-1234)), QString::fromUtf8("-1234\xc2\xa0\xd1\x80\xd1\x83\xd0\xb1."));
+ QCOMPARE(ru_RU.toCurrencyString(double(1234.56)), QString::fromUtf8("1234,56\xc2\xa0\xd1\x80\xd1\x83\xd0\xb1."));
+ QCOMPARE(ru_RU.toCurrencyString(double(-1234.56)), QString::fromUtf8("-1234,56\xc2\xa0\xd1\x80\xd1\x83\xd0\xb1."));
+
+ const QLocale de_DE("de_DE");
+ QCOMPARE(de_DE.toCurrencyString(qulonglong(1234)), QString::fromUtf8("1234\xc2\xa0\xe2\x82\xac"));
+ QCOMPARE(de_DE.toCurrencyString(qulonglong(1234), QLatin1String("BAZ")), QString::fromUtf8("1234\xc2\xa0" "BAZ"));
+ QCOMPARE(de_DE.toCurrencyString(qlonglong(-1234)), QString::fromUtf8("-1234\xc2\xa0\xe2\x82\xac"));
+ QCOMPARE(de_DE.toCurrencyString(qlonglong(-1234), QLatin1String("BAZ")), QString::fromUtf8("-1234\xc2\xa0" "BAZ"));
+ QCOMPARE(de_DE.toCurrencyString(double(1234.56)), QString::fromUtf8("1234,56\xc2\xa0\xe2\x82\xac"));
+ QCOMPARE(de_DE.toCurrencyString(double(-1234.56)), QString::fromUtf8("-1234,56\xc2\xa0\xe2\x82\xac"));
+ QCOMPARE(de_DE.toCurrencyString(double(-1234.56), QLatin1String("BAZ")), QString::fromUtf8("-1234,56\xc2\xa0" "BAZ"));
+
+ const QLocale system = QLocale::system();
+ QVERIFY(system.toCurrencyString(1, QLatin1String("FOO")).contains(QLatin1String("FOO")));
+}
+
+void tst_QLocale::quoteString()
+{
+ const QString someText("text");
+ const QLocale c(QLocale::C);
+ QCOMPARE(c.quoteString(someText), QString::fromUtf8("\x22" "text" "\x22"));
+ QCOMPARE(c.quoteString(someText, QLocale::AlternateQuotation), QString::fromUtf8("\x27" "text" "\x27"));
+
+ const QLocale de_CH("de_CH");
+ QCOMPARE(de_CH.quoteString(someText), QString::fromUtf8("\xc2\xab" "text" "\xc2\xbb"));
+ QCOMPARE(de_CH.quoteString(someText, QLocale::AlternateQuotation), QString::fromUtf8("\xe2\x80\xb9" "text" "\xe2\x80\xba"));
+
+}
+
+void tst_QLocale::uiLanguages()
+{
+ const QLocale c(QLocale::C);
+ QCOMPARE(c.uiLanguages().size(), 1);
+ QCOMPARE(c.uiLanguages().at(0), QLatin1String("C"));
+
+ const QLocale en_US("en_US");
+ QCOMPARE(en_US.uiLanguages().size(), 1);
+ QCOMPARE(en_US.uiLanguages().at(0), QLatin1String("en-US"));
+
+ const QLocale ru_RU("ru_RU");
+ QCOMPARE(ru_RU.uiLanguages().size(), 1);
+ QCOMPARE(ru_RU.uiLanguages().at(0), QLatin1String("ru-RU"));
+}
+
+void tst_QLocale::weekendDays()
+{
+ const QLocale c(QLocale::C);
+ QList<Qt::DayOfWeek> days;
+ days << Qt::Monday << Qt::Tuesday << Qt::Wednesday << Qt::Thursday << Qt::Friday;
+ QCOMPARE(c.weekdays(), days);
+}
+
+void tst_QLocale::listPatterns()
+{
+ QStringList sl1;
+ QStringList sl2;
+ sl2 << "aaa";
+ QStringList sl3;
+ sl3 << "aaa" << "bbb";
+ QStringList sl4;
+ sl4 << "aaa" << "bbb" << "ccc";
+ QStringList sl5;
+ sl5 << "aaa" << "bbb" << "ccc" << "ddd";
+
+ const QLocale c(QLocale::C);
+ QCOMPARE(c.createSeparatedList(sl1), QString(""));
+ QCOMPARE(c.createSeparatedList(sl2), QString("aaa"));
+ QCOMPARE(c.createSeparatedList(sl3), QString("aaa, bbb"));
+ QCOMPARE(c.createSeparatedList(sl4), QString("aaa, bbb, ccc"));
+ QCOMPARE(c.createSeparatedList(sl5), QString("aaa, bbb, ccc, ddd"));
+
+ const QLocale en_US("en_US");
+ QCOMPARE(en_US.createSeparatedList(sl1), QString(""));
+ QCOMPARE(en_US.createSeparatedList(sl2), QString("aaa"));
+ QCOMPARE(en_US.createSeparatedList(sl3), QString("aaa and bbb"));
+ QCOMPARE(en_US.createSeparatedList(sl4), QString("aaa, bbb, and ccc"));
+ QCOMPARE(en_US.createSeparatedList(sl5), QString("aaa, bbb, ccc, and ddd"));
+
+ const QLocale zh_CN("zh_CN");
+ QCOMPARE(zh_CN.createSeparatedList(sl1), QString(""));
+ QCOMPARE(zh_CN.createSeparatedList(sl2), QString("aaa"));
+ QCOMPARE(zh_CN.createSeparatedList(sl3), QString::fromUtf8("aaa" "\xe5\x92\x8c" "bbb"));
+ QCOMPARE(zh_CN.createSeparatedList(sl4), QString::fromUtf8("aaa" "\xe3\x80\x81" "bbb" "\xe5\x92\x8c" "ccc"));
+ QCOMPARE(zh_CN.createSeparatedList(sl5), QString::fromUtf8("aaa" "\xe3\x80\x81" "bbb" "\xe3\x80\x81" "ccc" "\xe5\x92\x8c" "ddd"));
+}
+
+QTEST_APPLESS_MAIN(tst_QLocale)
+#include "tst_qlocale.moc"
diff --git a/tests/auto/corelib/tools/qmap/.gitignore b/tests/auto/corelib/tools/qmap/.gitignore
new file mode 100644
index 0000000000..e94a75d242
--- /dev/null
+++ b/tests/auto/corelib/tools/qmap/.gitignore
@@ -0,0 +1 @@
+tst_qmap
diff --git a/tests/auto/corelib/tools/qmap/qmap.pro b/tests/auto/corelib/tools/qmap/qmap.pro
new file mode 100644
index 0000000000..eaed926481
--- /dev/null
+++ b/tests/auto/corelib/tools/qmap/qmap.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+
+QT = core
+
+SOURCES += tst_qmap.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qmap/tst_qmap.cpp b/tests/auto/corelib/tools/qmap/tst_qmap.cpp
new file mode 100644
index 0000000000..141e693b16
--- /dev/null
+++ b/tests/auto/corelib/tools/qmap/tst_qmap.cpp
@@ -0,0 +1,875 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#define QT_STRICT_ITERATORS
+
+#include <QtTest/QtTest>
+#include <QDebug>
+
+
+#include <qmap.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QMap : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QMap();
+
+public slots:
+ void init();
+private slots:
+ void count();
+ void clear();
+ void beginEnd();
+ void key();
+
+ void swap();
+
+ void operator_eq();
+
+ void empty();
+ void contains();
+ void find();
+ void constFind();
+ void lowerUpperBound();
+ void mergeCompare();
+ void take();
+
+ void iterators();
+ void keys_values_uniqueKeys();
+ void qmultimap_specific();
+};
+
+tst_QMap::tst_QMap()
+{
+}
+
+typedef QMap<QString, QString> StringMap;
+
+class MyClass
+{
+public:
+ MyClass() {
+ ++count;
+// qDebug("creating MyClass count=%d", count);
+ }
+ MyClass( const QString& c) {
+ count++; str = c;
+// qDebug("creating MyClass '%s' count = %d", str.latin1(), count);
+ }
+ ~MyClass() {
+ count--;
+// qDebug("deleting MyClass '%s' count = %d", str.latin1(), count);
+ }
+ MyClass( const MyClass& c ) {
+ count++; str = c.str;
+// qDebug("creating MyClass '%s' count = %d", str.latin1(), count);
+ }
+ MyClass &operator =(const MyClass &o) {
+// qDebug("copying MyClass '%s'", o.str.latin1());
+ str = o.str; return *this;
+ }
+
+ QString str;
+ static int count;
+};
+
+int MyClass::count = 0;
+
+typedef QMap<QString, MyClass> MyMap;
+
+void tst_QMap::init()
+{
+ MyClass::count = 0;
+}
+
+void tst_QMap::count()
+{
+ {
+ MyMap map;
+ MyMap map2( map );
+ QCOMPARE( map.count(), 0 );
+ QCOMPARE( map2.count(), 0 );
+ QCOMPARE( MyClass::count, int(0) );
+ // detach
+ map2["Hallo"] = MyClass( "Fritz" );
+ QCOMPARE( map.count(), 0 );
+ QCOMPARE( map2.count(), 1 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 1 );
+#endif
+ }
+ QCOMPARE( MyClass::count, int(0) );
+
+ {
+ typedef QMap<QString, MyClass> Map;
+ Map map;
+ QCOMPARE( map.count(), 0);
+ map.insert( "Torben", MyClass("Weis") );
+ QCOMPARE( map.count(), 1 );
+ map.insert( "Claudia", MyClass("Sorg") );
+ QCOMPARE( map.count(), 2 );
+ map.insert( "Lars", MyClass("Linzbach") );
+ map.insert( "Matthias", MyClass("Ettrich") );
+ map.insert( "Sue", MyClass("Paludo") );
+ map.insert( "Eirik", MyClass("Eng") );
+ map.insert( "Haavard", MyClass("Nord") );
+ map.insert( "Arnt", MyClass("Gulbrandsen") );
+ map.insert( "Paul", MyClass("Tvete") );
+ QCOMPARE( map.count(), 9 );
+ map.insert( "Paul", MyClass("Tvete 1") );
+ map.insert( "Paul", MyClass("Tvete 2") );
+ map.insert( "Paul", MyClass("Tvete 3") );
+ map.insert( "Paul", MyClass("Tvete 4") );
+ map.insert( "Paul", MyClass("Tvete 5") );
+ map.insert( "Paul", MyClass("Tvete 6") );
+
+ QCOMPARE( map.count(), 9 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 9 );
+#endif
+
+ Map map2( map );
+ QVERIFY( map2.count() == 9 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 9 );
+#endif
+
+ map2.insert( "Kay", MyClass("Roemer") );
+ QVERIFY( map2.count() == 10 );
+ QVERIFY( map.count() == 9 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 19 );
+#endif
+
+ map2 = map;
+ QVERIFY( map.count() == 9 );
+ QVERIFY( map2.count() == 9 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 9 );
+#endif
+
+ map2.insert( "Kay", MyClass("Roemer") );
+ QVERIFY( map2.count() == 10 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 19 );
+#endif
+
+ map2.clear();
+ QVERIFY( map.count() == 9 );
+ QVERIFY( map2.count() == 0 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 9 );
+#endif
+
+ map2 = map;
+ QVERIFY( map.count() == 9 );
+ QVERIFY( map2.count() == 9 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 9 );
+#endif
+
+ map2.clear();
+ QVERIFY( map.count() == 9 );
+ QVERIFY( map2.count() == 0 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 9 );
+#endif
+
+ map.remove( "Lars" );
+ QVERIFY( map.count() == 8 );
+ QVERIFY( map2.count() == 0 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 8 );
+#endif
+
+ map.remove( "Mist" );
+ QVERIFY( map.count() == 8 );
+ QVERIFY( map2.count() == 0 );
+#ifndef Q_CC_SUN
+ QCOMPARE( MyClass::count, 8 );
+#endif
+ }
+ QVERIFY( MyClass::count == 0 );
+
+ {
+ typedef QMap<QString,MyClass> Map;
+ Map map;
+ map["Torben"] = MyClass("Weis");
+#ifndef Q_CC_SUN
+ QVERIFY( MyClass::count == 1 );
+#endif
+ QVERIFY( map.count() == 1 );
+
+ (void)map["Torben"].str;
+ (void)map["Lars"].str;
+#ifndef Q_CC_SUN
+ QVERIFY( MyClass::count == 2 );
+#endif
+ QVERIFY( map.count() == 2 );
+
+ const Map& cmap = map;
+ (void)cmap["Depp"].str;
+#ifndef Q_CC_SUN
+ QVERIFY( MyClass::count == 2 );
+#endif
+ QVERIFY( map.count() == 2 );
+ QVERIFY( cmap.count() == 2 );
+ }
+ QCOMPARE( MyClass::count, 0 );
+ {
+ for ( int i = 0; i < 100; ++i )
+ {
+ QMap<int, MyClass> map;
+ for (int j = 0; j < i; ++j)
+ map.insert(j, MyClass(QString::number(j)));
+ }
+ QCOMPARE( MyClass::count, 0 );
+ }
+ QCOMPARE( MyClass::count, 0 );
+}
+
+void tst_QMap::clear()
+{
+ {
+ MyMap map;
+ map.clear();
+ QVERIFY( map.isEmpty() );
+ map.insert( "key", MyClass( "value" ) );
+ map.clear();
+ QVERIFY( map.isEmpty() );
+ map.insert( "key0", MyClass( "value0" ) );
+ map.insert( "key0", MyClass( "value1" ) );
+ map.insert( "key1", MyClass( "value2" ) );
+ map.clear();
+ QVERIFY( map.isEmpty() );
+ }
+ QCOMPARE( MyClass::count, int(0) );
+}
+
+void tst_QMap::beginEnd()
+{
+ StringMap m0;
+ QVERIFY( m0.begin() == m0.end() );
+ QVERIFY( m0.begin() == m0.begin() );
+
+ // sample string->string map
+ StringMap map;
+ QVERIFY( map.constBegin() == map.constEnd() );
+ map.insert( "0", "a" );
+ map.insert( "1", "b" );
+
+ // make a copy. const function shouldn't detach
+ StringMap map2 = map;
+ QVERIFY( map.constBegin() == map2.constBegin() );
+ QVERIFY( map.constEnd() == map2.constEnd() );
+
+ // test iteration
+ QString result;
+ for ( StringMap::ConstIterator it = map.constBegin();
+ it != map.constEnd(); ++it )
+ result += *it;
+ QCOMPARE( result, QString( "ab" ) );
+
+ // maps should still be identical
+ QVERIFY( map.constBegin() == map2.constBegin() );
+ QVERIFY( map.constEnd() == map2.constEnd() );
+
+ // detach
+ map2.insert( "2", "c" );
+ QVERIFY( map.constBegin() == map.constBegin() );
+ QVERIFY( map.constBegin() != map2.constBegin() );
+}
+
+void tst_QMap::key()
+{
+ {
+ QString def("default value");
+
+ QMap<QString, int> map1;
+ QCOMPARE(map1.key(1), QString());
+ QCOMPARE(map1.key(1, def), def);
+
+ map1.insert("one", 1);
+ QCOMPARE(map1.key(1), QString("one"));
+ QCOMPARE(map1.key(1, def), QString("one"));
+ QCOMPARE(map1.key(2), QString());
+ QCOMPARE(map1.key(2, def), def);
+
+ map1.insert("two", 2);
+ QCOMPARE(map1.key(1), QString("one"));
+ QCOMPARE(map1.key(1, def), QString("one"));
+ QCOMPARE(map1.key(2), QString("two"));
+ QCOMPARE(map1.key(2, def), QString("two"));
+ QCOMPARE(map1.key(3), QString());
+ QCOMPARE(map1.key(3, def), def);
+
+ map1.insert("deux", 2);
+ QCOMPARE(map1.key(1), QString("one"));
+ QCOMPARE(map1.key(1, def), QString("one"));
+ QVERIFY(map1.key(2) == "deux" || map1.key(2) == "two");
+ QVERIFY(map1.key(2, def) == "deux" || map1.key(2, def) == "two");
+ QCOMPARE(map1.key(3), QString());
+ QCOMPARE(map1.key(3, def), def);
+ }
+
+ {
+ int def = 666;
+
+ QMap<int, QString> map2;
+ QCOMPARE(map2.key("one"), 0);
+ QCOMPARE(map2.key("one", def), def);
+
+ map2.insert(1, "one");
+ QCOMPARE(map2.key("one"), 1);
+ QCOMPARE(map2.key("one", def), 1);
+ QCOMPARE(map2.key("two"), 0);
+ QCOMPARE(map2.key("two", def), def);
+
+ map2.insert(2, "two");
+ QCOMPARE(map2.key("one"), 1);
+ QCOMPARE(map2.key("one", def), 1);
+ QCOMPARE(map2.key("two"), 2);
+ QCOMPARE(map2.key("two", def), 2);
+ QCOMPARE(map2.key("three"), 0);
+ QCOMPARE(map2.key("three", def), def);
+
+ map2.insert(3, "two");
+ QCOMPARE(map2.key("one"), 1);
+ QCOMPARE(map2.key("one", def), 1);
+ QCOMPARE(map2.key("two"), 2);
+ QCOMPARE(map2.key("two", def), 2);
+ QCOMPARE(map2.key("three"), 0);
+ QCOMPARE(map2.key("three", def), def);
+
+ map2.insert(-1, "two");
+ QCOMPARE(map2.key("two"), -1);
+ QCOMPARE(map2.key("two", def), -1);
+
+ map2.insert(0, "zero");
+ QCOMPARE(map2.key("zero"), 0);
+ QCOMPARE(map2.key("zero", def), 0);
+ }
+}
+
+void tst_QMap::swap()
+{
+ QMap<int,QString> m1, m2;
+ m1[0] = "m1[0]";
+ m2[1] = "m2[1]";
+ m1.swap(m2);
+ QCOMPARE(m1.value(1),QLatin1String("m2[1]"));
+ QCOMPARE(m2.value(0),QLatin1String("m1[0]"));
+}
+
+void tst_QMap::operator_eq()
+{
+ {
+ // compare for equality:
+ QMap<int, int> a;
+ QMap<int, int> b;
+
+ QVERIFY(a == b);
+ QVERIFY(!(a != b));
+
+ a.insert(1,1);
+ b.insert(1,1);
+ QVERIFY(a == b);
+ QVERIFY(!(a != b));
+
+ a.insert(0,1);
+ b.insert(0,1);
+ QVERIFY(a == b);
+ QVERIFY(!(a != b));
+
+ // compare for inequality:
+ a.insert(42,0);
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+
+ a.insert(65, -1);
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+
+ b.insert(-1, -1);
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+ }
+
+ {
+ // a more complex map
+ QMap<QString, QString> a;
+ QMap<QString, QString> b;
+
+ QVERIFY(a == b);
+ QVERIFY(!(a != b));
+
+ a.insert("Hello", "World");
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+
+ b.insert("Hello", "World");
+ QVERIFY(a == b);
+ QVERIFY(!(a != b));
+
+ a.insert("Goodbye", "cruel world");
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+
+ b.insert("Goodbye", "cruel world");
+
+ // what happens if we insert nulls?
+ a.insert(QString(), QString());
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+
+ // empty keys and null keys match:
+ b.insert(QString(""), QString());
+ QVERIFY(a == b);
+ QVERIFY(!(a != b));
+ }
+
+ {
+ // task 102658
+
+ QMap<QString, int> a;
+ QMap<QString, int> b;
+
+ a.insert("otto", 1);
+ b.insert("willy", 1);
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+ }
+}
+
+void tst_QMap::empty()
+{
+ QMap<int, QString> map1;
+
+ QVERIFY(map1.isEmpty());
+
+ map1.insert(1, "one");
+ QVERIFY(!map1.isEmpty());
+
+ map1.clear();
+ QVERIFY(map1.isEmpty());
+
+}
+
+void tst_QMap::contains()
+{
+ QMap<int, QString> map1;
+ int i;
+
+ map1.insert(1, "one");
+ QVERIFY(map1.contains(1));
+
+ for(i=2; i < 100; ++i)
+ map1.insert(i, "teststring");
+ for(i=99; i > 1; --i)
+ QVERIFY(map1.contains(i));
+
+ map1.remove(43);
+ QVERIFY(!map1.contains(43));
+}
+
+void tst_QMap::find()
+{
+ QMap<int, QString> map1;
+ QString testString="Teststring %0";
+ QString compareString;
+ int i,count=0;
+
+ QVERIFY(map1.find(1) == map1.end());
+
+ map1.insert(1,"Mensch");
+ map1.insert(1,"Mayer");
+ map1.insert(2,"Hej");
+
+ QVERIFY(map1.find(1).value() == "Mayer");
+ QVERIFY(map1.find(2).value() == "Hej");
+
+ for(i = 3; i < 10; ++i) {
+ compareString = testString.arg(i);
+ map1.insertMulti(4, compareString);
+ }
+
+ QMap<int, QString>::const_iterator it=map1.constFind(4);
+
+ for(i = 9; i > 2 && it != map1.constEnd() && it.key() == 4; --i) {
+ compareString = testString.arg(i);
+ QVERIFY(it.value() == compareString);
+ ++it;
+ ++count;
+ }
+ QCOMPARE(count, 7);
+}
+
+void tst_QMap::constFind()
+{
+ QMap<int, QString> map1;
+ QString testString="Teststring %0";
+ QString compareString;
+ int i,count=0;
+
+ QVERIFY(map1.constFind(1) == map1.constEnd());
+
+ map1.insert(1,"Mensch");
+ map1.insert(1,"Mayer");
+ map1.insert(2,"Hej");
+
+ QVERIFY(map1.constFind(4) == map1.constEnd());
+
+ QVERIFY(map1.constFind(1).value() == "Mayer");
+ QVERIFY(map1.constFind(2).value() == "Hej");
+
+ for(i = 3; i < 10; ++i) {
+ compareString = testString.arg(i);
+ map1.insertMulti(4, compareString);
+ }
+
+ QMap<int, QString>::const_iterator it=map1.constFind(4);
+
+ for(i = 9; i > 2 && it != map1.constEnd() && it.key() == 4; --i) {
+ compareString = testString.arg(i);
+ QVERIFY(it.value() == compareString);
+ ++it;
+ ++count;
+ }
+ QCOMPARE(count, 7);
+}
+
+void tst_QMap::lowerUpperBound()
+{
+ QMap<int, QString> map1;
+
+ map1.insert(1, "one");
+ map1.insert(5, "five");
+ map1.insert(10, "ten");
+
+
+ //Copied from documentation
+
+ QCOMPARE(map1.upperBound(0).key(), 1); // returns iterator to (1, "one")
+ QCOMPARE(map1.upperBound(1).key(), 5); // returns iterator to (5, "five")
+ QCOMPARE(map1.upperBound(2).key(), 5); // returns iterator to (5, "five")
+ QVERIFY(map1.upperBound(10) == map1.end()); // returns end()
+ QVERIFY(map1.upperBound(999) == map1.end()); // returns end()
+
+ QCOMPARE(map1.lowerBound(0).key(), 1); // returns iterator to (1, "one")
+ QCOMPARE(map1.lowerBound(1).key(), 1); // returns iterator to (1, "one")
+ QCOMPARE(map1.lowerBound(2).key(), 5); // returns iterator to (5, "five")
+ QCOMPARE(map1.lowerBound(10).key(), 10); // returns iterator to (10, "ten")
+ QVERIFY(map1.lowerBound(999) == map1.end()); // returns end()
+}
+
+void tst_QMap::mergeCompare()
+{
+ QMap<int, QString> map1, map2, map3;
+
+ map1.insert(1,"ett");
+ map1.insert(3,"tre");
+ map1.insert(5,"fem");
+
+ map2.insert(2,"tvo");
+ map2.insert(4,"fyra");
+
+ map1.unite(map2);
+
+ QVERIFY(map1.value(1) == "ett");
+ QVERIFY(map1.value(2) == "tvo");
+ QVERIFY(map1.value(3) == "tre");
+ QVERIFY(map1.value(4) == "fyra");
+ QVERIFY(map1.value(5) == "fem");
+
+ map3.insert(1, "ett");
+ map3.insert(2, "tvo");
+ map3.insert(3, "tre");
+ map3.insert(4, "fyra");
+ map3.insert(5, "fem");
+
+ QVERIFY(map1 == map3);
+}
+
+void tst_QMap::take()
+{
+ QMap<int, QString> map;
+
+ map.insert(2, "zwei");
+ map.insert(3, "drei");
+
+ QVERIFY(map.take(3) == "drei");
+ QVERIFY(!map.contains(3));
+}
+
+void tst_QMap::iterators()
+{
+ QMap<int, QString> map;
+ QString testString="Teststring %1";
+ int i;
+
+ for(i = 1; i < 100; ++i)
+ map.insert(i, testString.arg(i));
+
+ //STL-Style iterators
+
+ QMap<int, QString>::iterator stlIt = map.begin();
+ QVERIFY(stlIt.value() == "Teststring 1");
+
+ stlIt+=5;
+ QVERIFY(stlIt.value() == "Teststring 6");
+
+ stlIt++;
+ QVERIFY(stlIt.value() == "Teststring 7");
+
+ stlIt-=3;
+ QVERIFY(stlIt.value() == "Teststring 4");
+
+ stlIt--;
+ QVERIFY(stlIt.value() == "Teststring 3");
+
+ for(stlIt = map.begin(), i = 1; stlIt != map.end(), i < 100; ++stlIt, ++i)
+ QVERIFY(stlIt.value() == testString.arg(i));
+
+ //STL-Style const-iterators
+
+ QMap<int, QString>::const_iterator cstlIt = map.constBegin();
+ QVERIFY(cstlIt.value() == "Teststring 1");
+
+ cstlIt+=5;
+ QVERIFY(cstlIt.value() == "Teststring 6");
+
+ cstlIt++;
+ QVERIFY(cstlIt.value() == "Teststring 7");
+
+ cstlIt-=3;
+ QVERIFY(cstlIt.value() == "Teststring 4");
+
+ cstlIt--;
+ QVERIFY(cstlIt.value() == "Teststring 3");
+
+ for(cstlIt = map.constBegin(), i = 1; cstlIt != map.constEnd(), i < 100; ++cstlIt, ++i)
+ QVERIFY(cstlIt.value() == testString.arg(i));
+
+ //Java-Style iterators
+
+ QMapIterator<int, QString> javaIt(map);
+
+ i = 0;
+ while(javaIt.hasNext()) {
+ ++i;
+ javaIt.next();
+ QVERIFY(javaIt.value() == testString.arg(i));
+ }
+
+ ++i;
+ while(javaIt.hasPrevious()) {
+ --i;
+ javaIt.previous();
+ QVERIFY(javaIt.value() == testString.arg(i));
+ }
+
+ /*
+ I've removed findNextKey() and findPreviousKey() from the API
+ for Qt 4.0 beta 1.
+ */
+
+#if 0
+ QVERIFY(javaIt.findNextKey(50));
+ QVERIFY(javaIt.value() == "Teststring 50");
+#endif
+
+ i = 51;
+ while(javaIt.hasPrevious()) {
+ --i;
+ javaIt.previous();
+ QVERIFY(javaIt.value() == testString.arg(i));
+ }
+
+#if 0
+ QVERIFY(javaIt.findNextKey(50));
+ QVERIFY(javaIt.value() == "Teststring 50");
+
+ QVERIFY(javaIt.hasPrevious());
+ QVERIFY(javaIt.findPreviousKey(20));
+ QCOMPARE(javaIt.value(), QString("Teststring 20"));
+#endif
+}
+
+void tst_QMap::keys_values_uniqueKeys()
+{
+ QMap<QString, int> map;
+ QVERIFY(map.uniqueKeys().isEmpty());
+ QVERIFY(map.keys().isEmpty());
+ QVERIFY(map.values().isEmpty());
+
+ map.insertMulti("alpha", 1);
+ QVERIFY(map.keys() == (QList<QString>() << "alpha"));
+ QVERIFY(map.uniqueKeys() == map.keys());
+ QVERIFY(map.values() == (QList<int>() << 1));
+
+ map.insertMulti("beta", -2);
+ QVERIFY(map.keys() == (QList<QString>() << "alpha" << "beta"));
+ QVERIFY(map.keys() == map.uniqueKeys());
+ QVERIFY(map.values() == (QList<int>() << 1 << -2));
+
+ map.insertMulti("alpha", 2);
+ QVERIFY(map.uniqueKeys() == (QList<QString>() << "alpha" << "beta"));
+ QVERIFY(map.keys() == (QList<QString>() << "alpha" << "alpha" << "beta"));
+ QVERIFY(map.values() == (QList<int>() << 2 << 1 << -2));
+
+ map.insertMulti("beta", 4);
+ QVERIFY(map.uniqueKeys() == (QList<QString>() << "alpha" << "beta"));
+ QVERIFY(map.keys() == (QList<QString>() << "alpha" << "alpha" << "beta" << "beta"));
+ QVERIFY(map.values() == (QList<int>() << 2 << 1 << 4 << -2));
+}
+
+void tst_QMap::qmultimap_specific()
+{
+ QMultiMap<int, int> map1;
+ for (int i = 1; i <= 9; ++i) {
+ for (int j = 1; j <= i; ++j) {
+ int k = i * 10 + j;
+ QVERIFY(!map1.contains(i, k));
+ map1.insert(i, k);
+ QVERIFY(map1.contains(i, k));
+ }
+ }
+
+ for (int i = 1; i <= 9; ++i) {
+ for (int j = 1; j <= i; ++j) {
+ int k = i * 10 + j;
+ QVERIFY(map1.contains(i, k));
+ }
+ }
+
+ QVERIFY(map1.contains(9, 99));
+ QCOMPARE(map1.count(), 45);
+ map1.remove(9, 99);
+ QVERIFY(!map1.contains(9, 99));
+ QCOMPARE(map1.count(), 44);
+
+ map1.remove(9, 99);
+ QVERIFY(!map1.contains(9, 99));
+ QCOMPARE(map1.count(), 44);
+
+ map1.remove(1, 99);
+ QCOMPARE(map1.count(), 44);
+
+ map1.insert(1, 99);
+ map1.insert(1, 99);
+
+ QCOMPARE(map1.count(), 46);
+ map1.remove(1, 99);
+ QCOMPARE(map1.count(), 44);
+ map1.remove(1, 99);
+ QCOMPARE(map1.count(), 44);
+
+ {
+ QMultiMap<int, int>::const_iterator i = map1.constFind(1, 11);
+ QVERIFY(i.key() == 1);
+ QVERIFY(i.value() == 11);
+
+ i = map1.constFind(2, 22);
+ QVERIFY(i.key() == 2);
+ QVERIFY(i.value() == 22);
+
+ i = map1.constFind(9, 98);
+ QVERIFY(i.key() == 9);
+ QVERIFY(i.value() == 98);
+ }
+
+ {
+ const QMultiMap<int, int> map2(map1);
+ QMultiMap<int, int>::const_iterator i = map2.find(1, 11);
+ QVERIFY(i.key() == 1);
+ QVERIFY(i.value() == 11);
+
+ i = map2.find(2, 22);
+ QVERIFY(i.key() == 2);
+ QVERIFY(i.value() == 22);
+
+ i = map2.find(9, 98);
+ QVERIFY(i.key() == 9);
+ QVERIFY(i.value() == 98);
+ }
+
+ {
+ QMultiMap<int, int>::iterator i = map1.find(1, 11);
+ QVERIFY(i.key() == 1);
+ QVERIFY(i.value() == 11);
+
+ i = map1.find(2, 22);
+ QVERIFY(i.key() == 2);
+ QVERIFY(i.value() == 22);
+
+ i = map1.find(9, 98);
+ QVERIFY(i.key() == 9);
+ QVERIFY(i.value() == 98);
+ }
+
+ {
+ QMultiMap<int, int> map1;
+ map1.insert(42, 1);
+ map1.insert(10, 2);
+ map1.insert(48, 3);
+ QMultiMap<int, int> map2;
+ map2.insert(8, 4);
+ map2.insert(42, 5);
+ map2.insert(95, 12);
+
+ map1+=map2;
+ map2.insert(42, 1);
+ map2.insert(10, 2);
+ map2.insert(48, 3);
+ QCOMPARE(map1.count(), map2.count());
+ QVERIFY(map1.remove(42,5));
+ QVERIFY(map2.remove(42,5));
+ QVERIFY(map1 == map2);
+ }
+}
+
+QTEST_APPLESS_MAIN(tst_QMap)
+#include "tst_qmap.moc"
diff --git a/tests/auto/corelib/tools/qmargins/qmargins.pro b/tests/auto/corelib/tools/qmargins/qmargins.pro
new file mode 100644
index 0000000000..0404da0424
--- /dev/null
+++ b/tests/auto/corelib/tools/qmargins/qmargins.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qmargins.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qmargins/tst_qmargins.cpp b/tests/auto/corelib/tools/qmargins/tst_qmargins.cpp
new file mode 100644
index 0000000000..c7632d125a
--- /dev/null
+++ b/tests/auto/corelib/tools/qmargins/tst_qmargins.cpp
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <qmargins.h>
+
+Q_DECLARE_METATYPE(QMargins)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QMargins : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QMargins();
+ virtual ~tst_QMargins();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void getSetCheck();
+};
+
+// Testing get/set functions
+void tst_QMargins::getSetCheck()
+{
+ QMargins margins;
+ // int QMargins::width()
+ // void QMargins::setWidth(int)
+ margins.setLeft(0);
+ QCOMPARE(0, margins.left());
+ margins.setTop(INT_MIN);
+ QCOMPARE(INT_MIN, margins.top());
+ margins.setBottom(INT_MAX);
+ QCOMPARE(INT_MAX, margins.bottom());
+ margins.setRight(INT_MAX);
+ QCOMPARE(INT_MAX, margins.right());
+
+ margins = QMargins();
+ QVERIFY(margins.isNull());
+ margins.setLeft(5);
+ margins.setRight(5);
+ QVERIFY(!margins.isNull());
+ QCOMPARE(margins, QMargins(5, 0, 5, 0));
+}
+
+tst_QMargins::tst_QMargins()
+{
+}
+
+tst_QMargins::~tst_QMargins()
+{
+}
+
+void tst_QMargins::init()
+{
+}
+
+void tst_QMargins::cleanup()
+{
+}
+
+
+
+QTEST_APPLESS_MAIN(tst_QMargins)
+#include "tst_qmargins.moc"
diff --git a/tests/auto/corelib/tools/qpoint/.gitignore b/tests/auto/corelib/tools/qpoint/.gitignore
new file mode 100644
index 0000000000..c8711ed354
--- /dev/null
+++ b/tests/auto/corelib/tools/qpoint/.gitignore
@@ -0,0 +1 @@
+tst_qpoint
diff --git a/tests/auto/corelib/tools/qpoint/qpoint.pro b/tests/auto/corelib/tools/qpoint/qpoint.pro
new file mode 100644
index 0000000000..fd240461e2
--- /dev/null
+++ b/tests/auto/corelib/tools/qpoint/qpoint.pro
@@ -0,0 +1,8 @@
+############################################################
+# Project file for autotest for file qpoint.h
+############################################################
+
+load(qttest_p4)
+SOURCES += tst_qpoint.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp b/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
new file mode 100644
index 0000000000..c4b5339a3b
--- /dev/null
+++ b/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
@@ -0,0 +1,151 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qdebug.h>
+#include <qpoint.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QPoint : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QPoint();
+ virtual ~tst_QPoint();
+
+private slots:
+ void getSetCheck();
+ void division();
+
+ void manhattanLength();
+};
+
+tst_QPoint::tst_QPoint()
+{
+}
+
+tst_QPoint::~tst_QPoint()
+{
+}
+
+
+
+void tst_QPoint::manhattanLength()
+{
+ {
+ QPoint p(10, 20);
+ QCOMPARE(p.manhattanLength(), 30);
+ }
+ {
+ QPointF p(10., 20.);
+ QCOMPARE(p.manhattanLength(), 30.);
+ }
+ {
+ QPointF p(10.1, 20.2);
+ QCOMPARE(p.manhattanLength(), 30.3);
+ }
+}
+
+// Testing get/set functions
+void tst_QPoint::getSetCheck()
+{
+ QPoint obj1;
+ // int QPoint::x()
+ // void QPoint::setX(int)
+ obj1.setX(0);
+ QCOMPARE(0, obj1.x());
+ obj1.setX(INT_MIN);
+ QCOMPARE(INT_MIN, obj1.x());
+ obj1.setX(INT_MAX);
+ QCOMPARE(INT_MAX, obj1.x());
+
+ // int QPoint::y()
+ // void QPoint::setY(int)
+ obj1.setY(0);
+ QCOMPARE(0, obj1.y());
+ obj1.setY(INT_MIN);
+ QCOMPARE(INT_MIN, obj1.y());
+ obj1.setY(INT_MAX);
+ QCOMPARE(INT_MAX, obj1.y());
+
+ QPointF obj2;
+ // qreal QPointF::x()
+ // void QPointF::setX(qreal)
+ obj2.setX(0.0);
+ QCOMPARE(0.0, obj2.x());
+ obj2.setX(1.1);
+ QCOMPARE(1.1, obj2.x());
+
+ // qreal QPointF::y()
+ // void QPointF::setY(qreal)
+ obj2.setY(0.0);
+ QCOMPARE(0.0, obj2.y());
+ obj2.setY(1.1);
+ QCOMPARE(1.1, obj2.y());
+}
+
+static inline qreal dot(const QPointF &a, const QPointF &b)
+{
+ return a.x() * b.x() + a.y() * b.y();
+}
+
+void tst_QPoint::division()
+{
+ {
+ QPointF p(1e-14, 1e-14);
+ p = p / sqrt(dot(p, p));
+ qFuzzyCompare(dot(p, p), 1);
+ }
+ {
+ QPointF p(1e-14, 1e-14);
+ p /= sqrt(dot(p, p));
+ qFuzzyCompare(dot(p, p), 1);
+ }
+}
+
+QTEST_MAIN(tst_QPoint)
+#include "tst_qpoint.moc"
diff --git a/tests/auto/corelib/tools/qqueue/.gitignore b/tests/auto/corelib/tools/qqueue/.gitignore
new file mode 100644
index 0000000000..706f21fa7a
--- /dev/null
+++ b/tests/auto/corelib/tools/qqueue/.gitignore
@@ -0,0 +1 @@
+tst_qqueue
diff --git a/tests/auto/corelib/tools/qqueue/qqueue.pro b/tests/auto/corelib/tools/qqueue/qqueue.pro
new file mode 100644
index 0000000000..ce0d8c30ca
--- /dev/null
+++ b/tests/auto/corelib/tools/qqueue/qqueue.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+
+QT = core
+
+SOURCES += tst_qqueue.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp b/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp
new file mode 100644
index 0000000000..483cf93918
--- /dev/null
+++ b/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp
@@ -0,0 +1,100 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qqueue.h>
+
+class tst_QQueue : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void enqueue_dequeue_data();
+ void enqueue_dequeue();
+};
+
+void tst_QQueue::enqueue_dequeue_data()
+{
+ QTest::addColumn<int>("num_items");
+
+ QTest::newRow("1") << 11;
+ QTest::newRow("2") << 211;
+ QTest::newRow("3") << 1024 + 211;
+}
+
+void tst_QQueue::enqueue_dequeue()
+{
+ QFETCH(int, num_items);
+
+ int *values = new int[num_items];
+ QQueue<int> queue_v;
+ QQueue<int*> queue_p;
+
+ QVERIFY(queue_v.empty());
+ QVERIFY(queue_p.empty());
+
+ for (int i = 0; i < num_items; i++ ) {
+ values[i] = i;
+ queue_p.enqueue(values + i);
+ queue_v.enqueue(values[i]);
+ }
+ QVERIFY(!queue_p.empty());
+ QVERIFY(!queue_v.empty());
+ for (int i = 0; i < num_items; i++ ) {
+ int v, *p;
+ v = queue_v.head();
+ p = queue_p.head();
+ QCOMPARE(*p, v);
+ QCOMPARE(v, i);
+ v = queue_v.dequeue();
+ p = queue_p.dequeue();
+ QCOMPARE(*p, v);
+ QCOMPARE(v, values[i]);
+ }
+ QVERIFY(queue_v.empty());
+ QVERIFY(queue_p.empty());
+
+ delete[] values;
+}
+
+QTEST_APPLESS_MAIN(tst_QQueue)
+#include "tst_qqueue.moc"
diff --git a/tests/auto/corelib/tools/qrect/.gitignore b/tests/auto/corelib/tools/qrect/.gitignore
new file mode 100644
index 0000000000..95866b6fbd
--- /dev/null
+++ b/tests/auto/corelib/tools/qrect/.gitignore
@@ -0,0 +1 @@
+tst_qrect
diff --git a/tests/auto/corelib/tools/qrect/qrect.pro b/tests/auto/corelib/tools/qrect/qrect.pro
new file mode 100644
index 0000000000..f1ad046e34
--- /dev/null
+++ b/tests/auto/corelib/tools/qrect/qrect.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qrect.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qrect/tst_qrect.cpp b/tests/auto/corelib/tools/qrect/tst_qrect.cpp
new file mode 100644
index 0000000000..c84e175857
--- /dev/null
+++ b/tests/auto/corelib/tools/qrect/tst_qrect.cpp
@@ -0,0 +1,4432 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qrect.h>
+#include <limits.h>
+#include <qdebug.h>
+
+Q_DECLARE_METATYPE(QRectF)
+Q_DECLARE_METATYPE(QPointF)
+Q_DECLARE_METATYPE(QRect)
+Q_DECLARE_METATYPE(QPoint)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QRect : public QObject
+{
+ Q_OBJECT
+public:
+ enum QRectCases {
+ InvalidQRect, SmallestQRect, MiddleQRect, LargestQRect, SmallestCoordQRect,
+ LargestCoordQRect, RandomQRect, NegativeSizeQRect, NegativePointQRect, NullQRect, EmptyQRect,
+ MiddleCoordQRect = MiddleQRect
+ };
+
+ enum IntCases {
+ MinimumInt, MiddleNegativeInt, ZeroInt, MiddlePositiveInt, MaximumInt, RandomInt
+ };
+
+ enum QPointCases {
+ NullQPoint, SmallestCoordQPoint, MiddleNegCoordQPoint, MiddlePosCoordQPoint, LargestCoordQPoint, NegativeQPoint,
+ NegXQPoint, NegYQPoint, RandomQPoint
+ };
+
+ tst_QRect();
+ virtual ~tst_QRect();
+
+
+ static QRect getQRectCase( QRectCases c );
+ static int getIntCase( IntCases i );
+ static QPoint getQPointCase( QPointCases p );
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void isNull_data();
+ void isNull();
+ void newIsEmpty_data();
+ void newIsEmpty();
+ void newIsValid_data();
+ void newIsValid();
+ void normalized_data();
+ void normalized();
+ void left_data();
+ void left();
+ void top_data();
+ void top();
+ void right_data();
+ void right();
+ void bottom_data();
+ void bottom();
+ /*
+ The test framework has a problem with implementing QCOORD as a type that can be used, if it's
+ implemented then the 4 tests above have problems. Ed has been notified.
+ void rLeft_data();
+ void rLeft();
+ void rTop_data();
+ void rTop();
+ void rRight_data();
+ void rRight();
+ void rBottom_data();
+ void rBottom();
+ */
+ void x_data();
+ void x();
+ void y_data();
+ void y();
+ void setWidthHeight_data();
+ void setWidthHeight();
+ void setLeft_data();
+ void setLeft();
+ void setTop_data();
+ void setTop();
+ void setRight_data();
+ void setRight();
+ void setBottom_data();
+ void setBottom();
+ void setX();
+ void setY();
+ void newSetTopLeft_data();
+ void newSetTopLeft();
+ void newSetBottomRight_data();
+ void newSetBottomRight();
+ void newSetTopRight_data();
+ void newSetTopRight();
+ void newSetBottomLeft_data();
+ void newSetBottomLeft();
+ void topLeft_data();
+ void topLeft();
+ void bottomRight_data();
+ void bottomRight();
+ void topRight_data();
+ void topRight();
+ void bottomLeft_data();
+ void bottomLeft();
+ void center_data();
+ void center();
+ void getRect_data();
+ void getRect();
+ void getCoords_data();
+ void getCoords();
+ void newMoveLeft_data();
+ void newMoveLeft();
+ void newMoveTop_data();
+ void newMoveTop();
+ void newMoveRight_data();
+ void newMoveRight();
+ void newMoveBottom_data();
+ void newMoveBottom();
+ void newMoveTopLeft_data();
+ void newMoveTopLeft();
+ void newMoveBottomRight_data();
+ void newMoveBottomRight();
+ /*void newMoveTopRight_data();
+ void newMoveTopRight();
+ void newMoveBottomLeft_data();
+ void newMoveBottomLeft();*/
+
+ void translate_data();
+ void translate();
+
+ void moveTop();
+ void moveBottom();
+ void moveLeft();
+ void moveRight();
+ void moveTopLeft();
+ void moveTopRight();
+ void moveBottomLeft();
+ void moveBottomRight();
+ void setTopLeft();
+ void setTopRight();
+ void setBottomLeft();
+ void setBottomRight();
+ void operator_amp();
+ void operator_amp_eq();
+ void isEmpty();
+ void isValid();
+
+ void testAdjust_data();
+ void testAdjust();
+
+ void intersectedRect_data();
+ void intersectedRect();
+ void intersectedRectF_data();
+ void intersectedRectF();
+ void unitedRect_data();
+ void unitedRect();
+ void unitedRectF_data();
+ void unitedRectF();
+ void intersectsRect_data();
+ void intersectsRect();
+ void intersectsRectF_data();
+ void intersectsRectF();
+ void containsRect_data();
+ void containsRect();
+ void containsRectF_data();
+ void containsRectF();
+ void containsPoint_data();
+ void containsPoint();
+ void containsPointF_data();
+ void containsPointF();
+ void smallRects() const;
+};
+
+// Used to work around some floating point precision problems.
+#define LARGE 1000000000
+static bool isLarge(int x) { return x > LARGE || x < -LARGE; }
+
+
+tst_QRect::tst_QRect()
+{
+}
+
+tst_QRect::~tst_QRect()
+{
+}
+
+void tst_QRect::init()
+{
+}
+
+void tst_QRect::cleanup()
+{
+}
+
+QRect tst_QRect::getQRectCase( QRectCases c )
+{
+ // Should return the best variety of possible QRects, if a
+ // case is missing, please add it.
+
+ switch ( c ) {
+ case InvalidQRect:
+ return QRect();
+ case SmallestQRect:
+ return QRect( 1, 1, 1, 1 );
+ case MiddleQRect:
+ return QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint( INT_MAX / 2, INT_MAX / 2 ) );
+ case LargestQRect:
+ return QRect( QPoint( 0, 0 ), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ case SmallestCoordQRect:
+ return QRect( QPoint( INT_MIN, INT_MIN ), QSize( 1, 1 ) );
+ case LargestCoordQRect:
+ return QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MAX, INT_MAX ) );
+ case RandomQRect:
+ return QRect( 100, 200, 11, 16 );
+ case NegativeSizeQRect:
+ return QRect( 1, 1, -10, -10 );
+ case NegativePointQRect:
+ return QRect( -10, -10, 5, 5 );
+ case NullQRect:
+ return QRect( 5, 5, 0, 0 );
+ case EmptyQRect:
+ return QRect( QPoint( 2, 2 ), QPoint( 1, 1 ) );
+ default:
+ return QRect();
+ }
+}
+
+int tst_QRect::getIntCase( IntCases i )
+{
+ // Should return the best variety of possible ints, if a
+ // case is missing, please add it.
+
+ switch ( i ) {
+ case MinimumInt:
+ return INT_MIN;
+ case MiddleNegativeInt:
+ return INT_MIN / 2;
+ case ZeroInt:
+ return 0;
+ case MiddlePositiveInt:
+ return INT_MAX / 2;
+ case MaximumInt:
+ return INT_MAX;
+ case RandomInt:
+ return 4953;
+ default:
+ return 0;
+ }
+}
+
+QPoint tst_QRect::getQPointCase( QPointCases p )
+{
+ // Should return the best variety of possible QPoints, if a
+ // case is missing, please add it.
+ switch ( p ) {
+ case NullQPoint:
+ return QPoint();
+ case SmallestCoordQPoint:
+ return QPoint(INT_MIN,INT_MIN);
+ case MiddleNegCoordQPoint:
+ return QPoint(INT_MIN/2,INT_MIN/2);
+ case MiddlePosCoordQPoint:
+ return QPoint(INT_MAX/2,INT_MAX/2);
+ case LargestCoordQPoint:
+ return QPoint(INT_MAX,INT_MAX);
+ case NegXQPoint:
+ return QPoint(-12,7);
+ case NegYQPoint:
+ return QPoint(12,-7);
+ case RandomQPoint:
+ return QPoint(12,7);
+ default:
+ return QPoint();
+ }
+}
+
+void tst_QRect::isNull_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<bool>("isNull");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << true;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << false;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << false;
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << false;
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << false;
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << true; // Due to overflow
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << false;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << false;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << false;
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << true;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << true;
+}
+
+void tst_QRect::isNull()
+{
+ QFETCH( QRect, r );
+ QFETCH( bool, isNull );
+
+ QRectF rf(r);
+
+ QVERIFY( r.isNull() == isNull );
+ QVERIFY( rf.isNull() == isNull );
+}
+
+void tst_QRect::newIsEmpty_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<bool>("isEmpty");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << true;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << false;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << false;
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << false;
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << false;
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << false;
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << false;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << true;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << false;
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << true;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << true;
+}
+
+void tst_QRect::newIsEmpty()
+{
+ // A new test is written so the old one isn't removed
+ QFETCH( QRect, r );
+ QFETCH( bool, isEmpty );
+
+ QRectF rf(r);
+
+ QVERIFY( r.isEmpty() == isEmpty );
+
+ if (isLarge(r.x()) || isLarge(r.y()) || isLarge(r.width()) || isLarge(r.height()))
+ return;
+ QVERIFY( rf.isEmpty() == isEmpty );
+}
+
+void tst_QRect::newIsValid_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<bool>("isValid");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << false;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << true;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << true;
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << true;
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << true;
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << true;
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << true;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << false;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << true;
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << false;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << false;
+}
+
+void tst_QRect::newIsValid()
+{
+ // A new test is written so the old one isn't removed
+ QFETCH( QRect, r );
+ QFETCH( bool, isValid );
+
+ QRectF rf(r);
+
+ QVERIFY( r.isValid() == isValid );
+
+ if (isLarge(r.x()) || isLarge(r.y()) || isLarge(r.width()) || isLarge(r.height()))
+ return;
+
+ QVERIFY( rf.isValid() == isValid );
+}
+
+void tst_QRect::normalized_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QRect>("nr");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << getQRectCase( InvalidQRect );
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << QRect( 1, 1, 1, 1 );
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect )
+ << QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint( INT_MAX / 2, INT_MAX / 2 ) );
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect )
+ << QRect( QPoint( 0, 0 ), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QSize( 1, 1 ) );
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect )
+ << getQRectCase( LargestCoordQRect ); // overflow
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << QRect( 100, 200, 11, 16 );
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << QRect(QPoint(-10,-10),QPoint(1,1));
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << QRect( -10, -10, 5, 5 );
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << getQRectCase( NullQRect );
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << getQRectCase( EmptyQRect );
+ QTest::newRow( "Task80908") << QRect(100, 200, 100, 0) << QRect(100, 200, 100, 0);
+ // Since "NegativeSizeQRect passes, I expect both of these to pass too.
+ // This passes, since height() returns -1 before normalization
+ QTest::newRow( "Task85023") << QRect(QPoint(100,201), QPoint(199,199)) << QRect(QPoint(100,199), QPoint(199,201));
+ // This, on the other hand height() returns 0 before normalization.
+ QTest::newRow( "Task85023.1") << QRect(QPoint(100,200), QPoint(199,199)) << QRect(QPoint(100,199), QPoint(199,200));
+ QTest::newRow( "Task188109" ) << QRect(QPoint(263, 113), QPoint(136, 112)) << QRect(QPoint(136, 113), QPoint(263, 112));
+}
+
+void tst_QRect::normalized()
+{
+ QFETCH(QRect, r);
+ QFETCH(QRect, nr);
+
+ if (QTest::currentDataTag() == QString("Task85023.1"))
+ QEXPECT_FAIL("", "due to broken QRect definition (not possible to change)", Continue);
+ QCOMPARE(r.normalized(), nr);
+}
+
+void tst_QRect::left_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("left");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << 0;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << 1;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << int(INT_MIN) / 2;
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << 0;
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << 100;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << 1;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << -10;
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << 5;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << 2;
+}
+
+void tst_QRect::left()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, left );
+
+ QRectF rf(r);
+
+ QCOMPARE( r.left(), left );
+ QCOMPARE(QRectF(rf).left(), qreal(left));
+}
+
+void tst_QRect::top_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("top");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << 0;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << 1;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << int(INT_MIN) / 2;
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << 0;
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << 200;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << 1;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << -10;
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << 5;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << 2;
+}
+
+void tst_QRect::top()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, top );
+
+ QCOMPARE( r.top(), top );
+ QCOMPARE(QRectF(r).top(), qreal(top));
+}
+
+void tst_QRect::right_data()
+{
+ // We don't test the NullQRect case as the return value is undefined.
+
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("right");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << -1;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << 1;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << int(INT_MAX / 2);
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << int(INT_MAX) - 1;
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << int(INT_MAX);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << 110;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << -10;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << -6;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << 1;
+}
+
+void tst_QRect::right()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, right );
+
+ QCOMPARE( r.right(), right );
+
+ if (isLarge(r.width()))
+ return;
+ QCOMPARE(QRectF(r).right(), qreal(right+1));
+}
+
+void tst_QRect::bottom_data()
+{
+ // We don't test the NullQRect case as the return value is undefined.
+
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("bottom");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << -1;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << 1;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << int(INT_MAX / 2);
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << int(INT_MAX - 1);
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << int(INT_MAX);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << 215;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << -10;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << -6;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << 1;
+}
+
+
+void tst_QRect::bottom()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, bottom );
+
+ QCOMPARE( r.bottom(), bottom );
+
+ if (isLarge(r.height()))
+ return;
+ QCOMPARE(QRectF(r).bottom(), qreal(bottom + 1));
+}
+
+/*
+Q_DECLARE_METATYPE(QCOORD)
+
+void tst_QRect::rLeft_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QCOORD>("rLeft");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << 0;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << 1;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << int(INT_MIN) / 2;
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << 0;
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << 100;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << 1;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << -10;
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << 5;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << 2;
+}
+
+void tst_QRect::rLeft()
+{
+ QFETCH( QRect, r );
+ QFETCH( QCOORD, rLeft );
+
+ QCOMPARE( r.rLeft(), rLeft );
+}
+
+void tst_QRect::rTop_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QCOORD>("rTop");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << 0;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << 1;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << int(INT_MIN) / 2;
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << 0;
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << 200;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << 1;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << -10;
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << 5;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << 2;
+}
+
+void tst_QRect::rTop()
+{
+ QFETCH( QRect, r );
+ QFETCH( QCOORD, rTop );
+
+ QCOMPARE( r.rTop(), rTop );
+}
+
+void tst_QRect::rRight_data()
+{
+ // We don't test the NullQRect case as the return value is undefined.
+
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QCOORD>("rRight");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << -1;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << 1;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << int(INT_MAX) / 2;
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << int(INT_MAX) - 1;
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << int(INT_MAX);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << 110;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << -10;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << -6;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << 1;
+}
+
+void tst_QRect::rRight()
+{
+ QFETCH( QRect, r );
+ QFETCH( QCOORD, rRight );
+
+ QCOMPARE( r.rRight(), rRight );
+}
+
+void tst_QRect::rBottom_data()
+{
+ // We don't test the NullQRect case as the return value is undefined.
+
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QCOORD>("rBottom");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << -1;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << 1;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << int(INT_MAX) / 2;
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << int(INT_MAX) - 1;
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << int(INT_MAX);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << 215;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << -10;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << -6;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << 1;
+}
+
+void tst_QRect::rBottom()
+{
+ QFETCH( QRect, r );
+ QFETCH( QCOORD, rBottom );
+
+ QCOMPARE( r.rBottom(), rBottom );
+}
+*/
+
+void tst_QRect::x_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("x");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << 0;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << 1;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << int(INT_MIN / 2);
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << 0;
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << 100;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << 1;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << -10;
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << 5;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << 2;
+
+}
+
+void tst_QRect::x()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, x );
+
+ QCOMPARE( r.x(), x );
+ QCOMPARE(QRectF(r).x(), qreal(x));
+}
+
+void tst_QRect::y_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("y");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << 0;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << 1;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << int(INT_MIN / 2);
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << 0;
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << int(INT_MIN);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << 200;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << 1;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << -10;
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << 5;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << 2;
+}
+
+void tst_QRect::y()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, y );
+
+ QCOMPARE( r.y(), y );
+ QCOMPARE(QRectF(r).y(), qreal(y));
+}
+
+void tst_QRect::setWidthHeight_data()
+{
+ QTest::addColumn<int>("w");
+ QTest::addColumn<int>("h");
+
+ QTest::newRow("10x20") << 10 << 20;
+ QTest::newRow("-1x-1") << -1 << -1;
+ QTest::newRow("0x0") << 0 << 0;
+ QTest::newRow("-10x-100") << -10 << -100;
+}
+
+void tst_QRect::setWidthHeight()
+{
+ QFETCH(int, w);
+ QFETCH(int, h);
+
+ QRect r;
+ r.setWidth(w);
+ r.setHeight(h);
+
+ QCOMPARE(r.width(), w);
+ QCOMPARE(r.height(), h);
+
+ QRectF rf;
+ rf.setWidth(w);
+ rf.setHeight(h);
+ QCOMPARE(rf.width(), qreal(w));
+ QCOMPARE(rf.height(), qreal(h));
+}
+
+
+void tst_QRect::setLeft_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("left");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ QTest::newRow( "InvalidQRect_MinimumInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(INT_MIN,0), QPoint(-1,-1) );
+ QTest::newRow( "InvalidQRect_MiddleNegativeInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN/2,0), QPoint(-1,-1) );
+ QTest::newRow( "InvalidQRect_ZeroInt" ) << getQRectCase( InvalidQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0,0), QPoint(-1,-1) );
+ QTest::newRow( "InvalidQRect_MiddlePositiveInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MAX/2,0), QPoint(-1,-1) );
+ QTest::newRow( "InvalidQRect_MaximumInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(INT_MAX,0), QPoint(-1,-1) );
+ QTest::newRow( "InvalidQRect_RandomInt" ) << getQRectCase( InvalidQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(4953,0), QPoint(-1,-1) );
+ }
+
+ {
+ QTest::newRow( "SmallestQRect_MinimumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(INT_MIN,1), QPoint(1,1) );
+ QTest::newRow( "SmallestQRect_MiddleNegativeInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN/2,1), QPoint(1,1) );
+ QTest::newRow( "SmallestQRect_ZeroInt" ) << getQRectCase( SmallestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0,1), QPoint(1,1) );
+ QTest::newRow( "SmallestQRect_MiddlePositiveInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MAX/2,1), QPoint(1,1) );
+ QTest::newRow( "SmallestQRect_MaximumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(INT_MAX,1), QPoint(1,1) );
+ QTest::newRow( "SmallestQRect_RandomInt" ) << getQRectCase( SmallestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(4953,1), QPoint(1,1) );
+ }
+
+ {
+ QTest::newRow( "MiddleQRect_MinimumInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(INT_MIN, INT_MIN / 2 ), QPoint( INT_MAX / 2, INT_MAX / 2 ) );
+ QTest::newRow( "MiddleQRect_MiddleNegativeInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN/2, INT_MIN / 2 ), QPoint( INT_MAX / 2, INT_MAX / 2 ) );
+ QTest::newRow( "MiddleQRect_ZeroInt" ) << getQRectCase( MiddleQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0, INT_MIN / 2 ), QPoint( INT_MAX / 2, INT_MAX / 2 ));
+ QTest::newRow( "MiddleQRect_MiddlePositiveInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MAX/2, INT_MIN / 2 ), QPoint( INT_MAX / 2, INT_MAX / 2 ));
+ QTest::newRow( "MiddleQRect_MaximumInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(INT_MAX, INT_MIN / 2 ), QPoint( INT_MAX / 2, INT_MAX / 2 ));
+ QTest::newRow( "MiddleQRect_RandomInt" ) << getQRectCase( MiddleQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(4953, INT_MIN / 2 ), QPoint( INT_MAX / 2, INT_MAX / 2 ));
+ }
+
+ {
+ QTest::newRow( "LargestQRect_MinimumInt" ) << getQRectCase( LargestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(INT_MIN, 0), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_MiddleNegativeInt" ) << getQRectCase( LargestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN/2, 0), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_ZeroInt" ) << getQRectCase( LargestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0, 0), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_MiddlePositiveInt" ) << getQRectCase( LargestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MAX/2, 0), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_MaximumInt" ) << getQRectCase( LargestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(INT_MAX, 0), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_RandomInt" ) << getQRectCase( LargestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(4953, 0), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ }
+
+ {
+ QTest::newRow( "SmallestCoordQRect_MinimumInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MIN, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_MiddleNegativeInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, INT_MIN ), QPoint( INT_MIN, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_ZeroInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, INT_MIN ), QPoint( INT_MIN, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_MiddlePositiveInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, INT_MIN ), QPoint( INT_MIN, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_MaximumInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MAX, INT_MIN ), QPoint( INT_MIN, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_RandomInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, INT_MIN ), QPoint( INT_MIN, INT_MIN ) );
+ }
+
+ {
+ QTest::newRow( "LargestCoordQRect_MinimumInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MAX, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_MiddleNegativeInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, INT_MIN ), QPoint( INT_MAX, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_ZeroInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, INT_MIN ), QPoint( INT_MAX, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_MiddlePositiveInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, INT_MIN ), QPoint( INT_MAX, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_MaximumInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MAX, INT_MIN ), QPoint( INT_MAX, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_RandomInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, INT_MIN ), QPoint( INT_MAX, INT_MAX ) );
+ }
+
+ {
+ QTest::newRow( "RandomQRect_MinimumInt" ) << getQRectCase( RandomQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN, 200 ), QPoint( 110, 215 ) );
+ QTest::newRow( "RandomQRect_MiddleNegativeInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, 200 ), QPoint( 110, 215 ) );
+ QTest::newRow( "RandomQRect_ZeroInt" ) << getQRectCase( RandomQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, 200 ), QPoint( 110, 215 ) );
+ QTest::newRow( "RandomQRect_MiddlePositiveInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, 200 ), QPoint( 110, 215 ) );
+ QTest::newRow( "RandomQRect_MaximumInt" ) << getQRectCase( RandomQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MAX, 200 ), QPoint( 110, 215 ) );
+ QTest::newRow( "RandomQRect_RandomInt" ) << getQRectCase( RandomQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, 200 ), QPoint( 110, 215 ) );
+ }
+
+ {
+ QTest::newRow( "NegativeSizeQRect_MinimumInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN, 1 ), QPoint( -10, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_MiddleNegativeInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, 1 ), QPoint( -10, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_ZeroInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, 1 ), QPoint( -10, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_MiddlePositiveInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, 1 ), QPoint( -10, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_MaximumInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MAX, 1 ), QPoint( -10, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_RandomInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, 1 ), QPoint( -10, -10 ) );
+ }
+
+ {
+ QTest::newRow( "NegativePointQRect_MinimumInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN, -10 ), QPoint( -6, -6 ) );
+ QTest::newRow( "NegativePointQRect_MiddleNegativeInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, -10 ), QPoint( -6, -6 ) );
+ QTest::newRow( "NegativePointQRect_ZeroInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, -10 ), QPoint( -6, -6 ) );
+ QTest::newRow( "NegativePointQRect_MiddlePositiveInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, -10 ), QPoint( -6, -6 ) );
+ QTest::newRow( "NegativePointQRect_MaximumInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MAX, -10 ), QPoint( -6, -6 ) );
+ QTest::newRow( "NegativePointQRect_RandomInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, -10 ), QPoint( -6, -6 ) );
+ }
+
+ {
+ QTest::newRow( "NullQRect_MinimumInt" ) << getQRectCase( NullQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN, 5 ), QPoint( 4, 4 ) );
+ QTest::newRow( "NullQRect_MiddleNegativeInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, 5 ), QPoint( 4, 4 ) );
+ QTest::newRow( "NullQRect_ZeroInt" ) << getQRectCase( NullQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, 5 ), QPoint( 4, 4 ) );
+ QTest::newRow( "NullQRect_MiddlePositiveInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, 5), QPoint( 4, 4 ) );
+ QTest::newRow( "NullQRect_MaximumInt" ) << getQRectCase( NullQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MAX, 5 ), QPoint( 4, 4 ) );
+ QTest::newRow( "NullQRect_RandomInt" ) << getQRectCase( NullQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, 5 ), QPoint( 4, 4 ) );
+ }
+
+ {
+ QTest::newRow( "EmptyQRect_MinimumInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN, 2 ), QPoint( 1, 1 ) );
+ QTest::newRow( "EmptyQRect_MiddleNegativeInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, 2 ), QPoint( 1, 1 ) );
+ QTest::newRow( "EmptyQRect_ZeroInt" ) << getQRectCase( EmptyQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, 2 ), QPoint( 1, 1 ) );
+ QTest::newRow( "EmptyQRect_MiddlePositiveInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, 2 ), QPoint( 1, 1 ) );
+ QTest::newRow( "EmptyQRect_MaximumInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MAX, 2 ), QPoint( 1, 1 ) );
+ QTest::newRow( "EmptyQRect_RandomInt" ) << getQRectCase( EmptyQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, 2 ), QPoint( 1, 1 ) );
+ }
+}
+
+void tst_QRect::setLeft()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, left );
+ QFETCH( QRect, nr );
+
+ QRectF rf(r);
+ QRectF nrf(nr);
+
+ r.setLeft( left );
+
+ QCOMPARE( r, nr );
+
+ rf.setLeft(left);
+}
+
+void tst_QRect::setTop_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("top");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ QTest::newRow( "InvalidQRect_MinimumInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(0,INT_MIN), QPoint(-1,-1) );
+ QTest::newRow( "InvalidQRect_MiddleNegativeInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(0,INT_MIN/2), QPoint(-1,-1) );
+ QTest::newRow( "InvalidQRect_ZeroInt" ) << getQRectCase( InvalidQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0,0), QPoint(-1,-1) );
+ QTest::newRow( "InvalidQRect_MiddlePositiveInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(0,INT_MAX/2), QPoint(-1,-1) );
+ QTest::newRow( "InvalidQRect_MaximumInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(0,INT_MAX), QPoint(-1,-1) );
+ QTest::newRow( "InvalidQRect_RandomInt" ) << getQRectCase( InvalidQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(0,4953), QPoint(-1,-1) );
+ }
+
+ {
+ QTest::newRow( "SmallestQRect_MinimumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(1,INT_MIN), QPoint(1,1) );
+ QTest::newRow( "SmallestQRect_MiddleNegativeInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(1,INT_MIN/2), QPoint(1,1) );
+ QTest::newRow( "SmallestQRect_ZeroInt" ) << getQRectCase( SmallestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(1,0), QPoint(1,1) );
+ QTest::newRow( "SmallestQRect_MiddlePositiveInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(1,INT_MAX/2), QPoint(1,1) );
+ QTest::newRow( "SmallestQRect_MaximumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(1,INT_MAX), QPoint(1,1) );
+ QTest::newRow( "SmallestQRect_RandomInt" ) << getQRectCase( SmallestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(1,4953), QPoint(1,1) );
+ }
+
+ {
+ QTest::newRow( "MiddleQRect_MinimumInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(INT_MIN/2,INT_MIN), QPoint( INT_MAX / 2, INT_MAX / 2 ) );
+ QTest::newRow( "MiddleQRect_MiddleNegativeInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN/2,INT_MIN/2), QPoint( INT_MAX / 2, INT_MAX / 2 ) );
+ QTest::newRow( "MiddleQRect_ZeroInt" ) << getQRectCase( MiddleQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(INT_MIN/2,0), QPoint( INT_MAX / 2, INT_MAX / 2 ));
+ QTest::newRow( "MiddleQRect_MiddlePositiveInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MIN/2,INT_MAX/2), QPoint( INT_MAX / 2, INT_MAX / 2 ));
+ QTest::newRow( "MiddleQRect_MaximumInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(INT_MIN/2,INT_MAX), QPoint( INT_MAX / 2, INT_MAX / 2 ));
+ QTest::newRow( "MiddleQRect_RandomInt" ) << getQRectCase( MiddleQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(INT_MIN/2,4953), QPoint( INT_MAX / 2, INT_MAX / 2 ));
+ }
+
+ {
+ QTest::newRow( "LargestQRect_MinimumInt" ) << getQRectCase( LargestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(0,INT_MIN), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_MiddleNegativeInt" ) << getQRectCase( LargestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(0,INT_MIN/2), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_ZeroInt" ) << getQRectCase( LargestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0, 0), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_MiddlePositiveInt" ) << getQRectCase( LargestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(0,INT_MAX/2), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_MaximumInt" ) << getQRectCase( LargestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(0,INT_MAX), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_RandomInt" ) << getQRectCase( LargestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(0,4953), QPoint( INT_MAX - 1, INT_MAX - 1 ) );
+ }
+
+ {
+ QTest::newRow( "SmallestCoordQRect_MinimumInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(INT_MIN,INT_MIN), QPoint( INT_MIN, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_MiddleNegativeInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN,INT_MIN/2), QPoint( INT_MIN, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_ZeroInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(INT_MIN,0), QPoint( INT_MIN, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_MiddlePositiveInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MIN,INT_MAX/2), QPoint( INT_MIN, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_MaximumInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(INT_MIN,INT_MAX), QPoint( INT_MIN, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_RandomInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(INT_MIN,4953), QPoint( INT_MIN, INT_MIN ) );
+ }
+
+ {
+ QTest::newRow( "LargestCoordQRect_MinimumInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(INT_MIN,INT_MIN), QPoint( INT_MAX, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_MiddleNegativeInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN,INT_MIN/2), QPoint( INT_MAX, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_ZeroInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(INT_MIN,0), QPoint( INT_MAX, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_MiddlePositiveInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MIN,INT_MAX/2), QPoint( INT_MAX, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_MaximumInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(INT_MIN,INT_MAX), QPoint( INT_MAX, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_RandomInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(INT_MIN,4953), QPoint( INT_MAX, INT_MAX ) );
+ }
+
+ {
+ QTest::newRow( "RandomQRect_MinimumInt" ) << getQRectCase( RandomQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(100,INT_MIN), QPoint( 110, 215 ) );
+ QTest::newRow( "RandomQRect_MiddleNegativeInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(100,INT_MIN/2), QPoint( 110, 215 ) );
+ QTest::newRow( "RandomQRect_ZeroInt" ) << getQRectCase( RandomQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(100,0), QPoint( 110, 215 ) );
+ QTest::newRow( "RandomQRect_MiddlePositiveInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(100,INT_MAX/2), QPoint( 110, 215 ) );
+ QTest::newRow( "RandomQRect_MaximumInt" ) << getQRectCase( RandomQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(100,INT_MAX), QPoint( 110, 215 ) );
+ QTest::newRow( "RandomQRect_RandomInt" ) << getQRectCase( RandomQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(100,4953), QPoint( 110, 215 ) );
+ }
+
+ {
+ QTest::newRow( "NegativeSizeQRect_MinimumInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(1,INT_MIN), QPoint( -10, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_MiddleNegativeInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(1,INT_MIN/2), QPoint( -10, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_ZeroInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(1,0), QPoint( -10, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_MiddlePositiveInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(1,INT_MAX/2), QPoint( -10, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_MaximumInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(1,INT_MAX), QPoint( -10, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_RandomInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(1,4953), QPoint( -10, -10 ) );
+ }
+
+ {
+ QTest::newRow( "NegativePointQRect_MinimumInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(-10,INT_MIN), QPoint( -6, -6 ) );
+ QTest::newRow( "NegativePointQRect_MiddleNegativeInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(-10,INT_MIN/2), QPoint( -6, -6 ) );
+ QTest::newRow( "NegativePointQRect_ZeroInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(-10,0), QPoint( -6, -6 ) );
+ QTest::newRow( "NegativePointQRect_MiddlePositiveInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(-10,INT_MAX/2), QPoint( -6, -6 ) );
+ QTest::newRow( "NegativePointQRect_MaximumInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(-10,INT_MAX), QPoint( -6, -6 ) );
+ QTest::newRow( "NegativePointQRect_RandomInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(-10,4953), QPoint( -6, -6 ) );
+ }
+
+ {
+ QTest::newRow( "NullQRect_MinimumInt" ) << getQRectCase( NullQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(5,INT_MIN), QPoint( 4, 4 ) );
+ QTest::newRow( "NullQRect_MiddleNegativeInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(5,INT_MIN/2), QPoint( 4, 4 ) );
+ QTest::newRow( "NullQRect_ZeroInt" ) << getQRectCase( NullQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(5,0), QPoint( 4, 4 ) );
+ QTest::newRow( "NullQRect_MiddlePositiveInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(5,INT_MAX/2), QPoint( 4, 4 ) );
+ QTest::newRow( "NullQRect_MaximumInt" ) << getQRectCase( NullQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(5,INT_MAX), QPoint( 4, 4 ) );
+ QTest::newRow( "NullQRect_RandomInt" ) << getQRectCase( NullQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(5,4953), QPoint( 4, 4 ) );
+ }
+
+ {
+ QTest::newRow( "EmptyQRect_MinimumInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(2,INT_MIN), QPoint( 1, 1 ) );
+ QTest::newRow( "EmptyQRect_MiddleNegativeInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(2,INT_MIN/2), QPoint( 1, 1 ) );
+ QTest::newRow( "EmptyQRect_ZeroInt" ) << getQRectCase( EmptyQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(2,0), QPoint( 1, 1 ) );
+ QTest::newRow( "EmptyQRect_MiddlePositiveInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(2,INT_MAX/2), QPoint( 1, 1 ) );
+ QTest::newRow( "EmptyQRect_MaximumInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(2,INT_MAX), QPoint( 1, 1 ) );
+ QTest::newRow( "EmptyQRect_RandomInt" ) << getQRectCase( EmptyQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(2,4953), QPoint( 1, 1 ) );
+ }
+}
+
+void tst_QRect::setTop()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, top );
+ QFETCH( QRect, nr );
+
+ r.setTop( top );
+
+ QCOMPARE( r, nr );
+}
+
+void tst_QRect::setRight_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("right");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ QTest::newRow( "InvalidQRect_MinimumInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(0,0), QPoint(INT_MIN,-1) );
+ QTest::newRow( "InvalidQRect_MiddleNegativeInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(0,0), QPoint(INT_MIN/2,-1) );
+ QTest::newRow( "InvalidQRect_ZeroInt" ) << getQRectCase( InvalidQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0,0), QPoint(0,-1) );
+ QTest::newRow( "InvalidQRect_MiddlePositiveInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(0,0), QPoint(INT_MAX/2,-1) );
+ QTest::newRow( "InvalidQRect_MaximumInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(0,0), QPoint(INT_MAX,-1) );
+ QTest::newRow( "InvalidQRect_RandomInt" ) << getQRectCase( InvalidQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(0,0), QPoint(4953,-1) );
+ }
+
+ {
+ QTest::newRow( "SmallestQRect_MinimumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(1,1), QPoint(INT_MIN,1) );
+ QTest::newRow( "SmallestQRect_MiddleNegativeInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(1,1), QPoint(INT_MIN/2,1) );
+ QTest::newRow( "SmallestQRect_ZeroInt" ) << getQRectCase( SmallestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(1,1), QPoint(0,1) );
+ QTest::newRow( "SmallestQRect_MiddlePositiveInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(1,1), QPoint(INT_MAX/2,1) );
+ QTest::newRow( "SmallestQRect_MaximumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(1,1), QPoint(INT_MAX,1) );
+ QTest::newRow( "SmallestQRect_RandomInt" ) << getQRectCase( SmallestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(1,1), QPoint(4953,1) );
+ }
+
+ {
+ QTest::newRow( "MiddleQRect_MinimumInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint(INT_MIN, INT_MAX / 2 ) );
+ QTest::newRow( "MiddleQRect_MiddleNegativeInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint(INT_MIN/2, INT_MAX / 2 ) );
+ QTest::newRow( "MiddleQRect_ZeroInt" ) << getQRectCase( MiddleQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint(0, INT_MAX / 2 ));
+ QTest::newRow( "MiddleQRect_MiddlePositiveInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint(INT_MAX/2, INT_MAX / 2 ));
+ QTest::newRow( "MiddleQRect_MaximumInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint(INT_MAX, INT_MAX / 2 ));
+ QTest::newRow( "MiddleQRect_RandomInt" ) << getQRectCase( MiddleQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint(4953, INT_MAX / 2 ));
+ }
+
+ {
+ QTest::newRow( "LargestQRect_MinimumInt" ) << getQRectCase( LargestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( 0, 0 ), QPoint( INT_MIN, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_MiddleNegativeInt" ) << getQRectCase( LargestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( 0, 0 ), QPoint( INT_MIN/2, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_ZeroInt" ) << getQRectCase( LargestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, 0 ), QPoint( 0, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_MiddlePositiveInt" ) << getQRectCase( LargestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( 0, 0 ), QPoint( INT_MAX/2, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_MaximumInt" ) << getQRectCase( LargestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( 0, 0 ), QPoint( INT_MAX, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_RandomInt" ) << getQRectCase( LargestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 0, 0 ), QPoint( 4953, INT_MAX - 1 ) );
+ }
+
+ {
+ QTest::newRow( "SmallestCoordQRect_MinimumInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MIN, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_MiddleNegativeInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MIN/2, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_ZeroInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( 0, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_MiddlePositiveInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MAX/2, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_MaximumInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MAX, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_RandomInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( 4953, INT_MIN ) );
+ }
+
+ {
+ QTest::newRow( "LargestCoordQRect_MinimumInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MIN, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_MiddleNegativeInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MIN/2, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_ZeroInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( 0, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_MiddlePositiveInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MAX/2, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_MaximumInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MAX, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_RandomInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( 4953, INT_MAX ) );
+ }
+
+ {
+ QTest::newRow( "RandomQRect_MinimumInt" ) << getQRectCase( RandomQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( 100, 200 ), QPoint( INT_MIN, 215 ) );
+ QTest::newRow( "RandomQRect_MiddleNegativeInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( 100, 200 ), QPoint( INT_MIN/2, 215 ) );
+ QTest::newRow( "RandomQRect_ZeroInt" ) << getQRectCase( RandomQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 100, 200 ), QPoint( 0, 215 ) );
+ QTest::newRow( "RandomQRect_MiddlePositiveInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( 100, 200 ), QPoint( INT_MAX/2, 215 ) );
+ QTest::newRow( "RandomQRect_MaximumInt" ) << getQRectCase( RandomQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( 100, 200 ), QPoint( INT_MAX, 215 ) );
+ QTest::newRow( "RandomQRect_RandomInt" ) << getQRectCase( RandomQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 100, 200 ), QPoint( 4953, 215 ) );
+ }
+
+ {
+ QTest::newRow( "NegativeSizeQRect_MinimumInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( 1, 1 ), QPoint( INT_MIN, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_MiddleNegativeInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( 1, 1 ), QPoint( INT_MIN/2, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_ZeroInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 1, 1 ), QPoint( 0, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_MiddlePositiveInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( 1, 1 ), QPoint( INT_MAX/2, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_MaximumInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( 1, 1 ), QPoint( INT_MAX, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_RandomInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 1, 1 ), QPoint( 4953, -10 ) );
+ }
+
+ {
+ QTest::newRow( "NegativePointQRect_MinimumInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( -10, -10 ), QPoint( INT_MIN, -6 ) );
+ QTest::newRow( "NegativePointQRect_MiddleNegativeInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( -10, -10 ), QPoint( INT_MIN/2, -6 ) );
+ QTest::newRow( "NegativePointQRect_ZeroInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( -10, -10 ), QPoint( 0, -6 ) );
+ QTest::newRow( "NegativePointQRect_MiddlePositiveInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( -10, -10 ), QPoint( INT_MAX/2, -6 ) );
+ QTest::newRow( "NegativePointQRect_MaximumInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( -10, -10 ), QPoint( INT_MAX, -6 ) );
+ QTest::newRow( "NegativePointQRect_RandomInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( -10, -10 ), QPoint( 4953, -6 ) );
+ }
+
+ {
+ QTest::newRow( "NullQRect_MinimumInt" ) << getQRectCase( NullQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( 5, 5 ), QPoint( INT_MIN, 4 ) );
+ QTest::newRow( "NullQRect_MiddleNegativeInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( 5, 5 ), QPoint( INT_MIN/2, 4 ) );
+ QTest::newRow( "NullQRect_ZeroInt" ) << getQRectCase( NullQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 5, 5 ), QPoint( 0, 4 ) );
+ QTest::newRow( "NullQRect_MiddlePositiveInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( 5, 5 ), QPoint( INT_MAX/2, 4 ) );
+ QTest::newRow( "NullQRect_MaximumInt" ) << getQRectCase( NullQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( 5, 5 ), QPoint( INT_MAX, 4 ) );
+ QTest::newRow( "NullQRect_RandomInt" ) << getQRectCase( NullQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 5, 5 ), QPoint( 4953, 4 ) );
+ }
+
+ {
+ QTest::newRow( "EmptyQRect_MinimumInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( 2, 2 ), QPoint( INT_MIN, 1 ) );
+ QTest::newRow( "EmptyQRect_MiddleNegativeInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( 2, 2 ), QPoint( INT_MIN/2, 1 ) );
+ QTest::newRow( "EmptyQRect_ZeroInt" ) << getQRectCase( EmptyQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 2, 2 ), QPoint( 0, 1 ) );
+ QTest::newRow( "EmptyQRect_MiddlePositiveInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( 2, 2 ), QPoint( INT_MAX/2, 1 ) );
+ QTest::newRow( "EmptyQRect_MaximumInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( 2, 2 ), QPoint( INT_MAX, 1 ) );
+ QTest::newRow( "EmptyQRect_RandomInt" ) << getQRectCase( EmptyQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 2, 2 ), QPoint( 4953, 1 ) );
+ }
+}
+
+void tst_QRect::setRight()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, right );
+ QFETCH( QRect, nr );
+
+ r.setRight( right );
+
+ QCOMPARE( r, nr );
+}
+
+void tst_QRect::setBottom_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("bottom");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ QTest::newRow( "InvalidQRect_MinimumInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(0,0), QPoint(-1,INT_MIN) );
+ QTest::newRow( "InvalidQRect_MiddleNegativeInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(0,0), QPoint(-1,INT_MIN/2) );
+ QTest::newRow( "InvalidQRect_ZeroInt" ) << getQRectCase( InvalidQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0,0), QPoint(-1,0) );
+ QTest::newRow( "InvalidQRect_MiddlePositiveInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(0,0), QPoint(-1,INT_MAX/2) );
+ QTest::newRow( "InvalidQRect_MaximumInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(0,0), QPoint(-1,INT_MAX) );
+ QTest::newRow( "InvalidQRect_RandomInt" ) << getQRectCase( InvalidQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(0,0), QPoint(-1,4953) );
+ }
+
+ {
+ QTest::newRow( "SmallestQRect_MinimumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(1,1), QPoint(1,INT_MIN) );
+ QTest::newRow( "SmallestQRect_MiddleNegativeInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(1,1), QPoint(1,INT_MIN/2) );
+ QTest::newRow( "SmallestQRect_ZeroInt" ) << getQRectCase( SmallestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(1,1), QPoint(1,0) );
+ QTest::newRow( "SmallestQRect_MiddlePositiveInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(1,1), QPoint(1,INT_MAX/2) );
+ QTest::newRow( "SmallestQRect_MaximumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(1,1), QPoint(1,INT_MAX) );
+ QTest::newRow( "SmallestQRect_RandomInt" ) << getQRectCase( SmallestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(1,1), QPoint(1,4953) );
+ }
+
+ {
+ QTest::newRow( "MiddleQRect_MinimumInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint(INT_MAX / 2, INT_MIN ) );
+ QTest::newRow( "MiddleQRect_MiddleNegativeInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint(INT_MAX / 2, INT_MIN / 2 ) );
+ QTest::newRow( "MiddleQRect_ZeroInt" ) << getQRectCase( MiddleQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint(INT_MAX / 2, 0) );
+ QTest::newRow( "MiddleQRect_MiddlePositiveInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint(INT_MAX / 2, INT_MAX / 2 ) );
+ QTest::newRow( "MiddleQRect_MaximumInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint(INT_MAX / 2, INT_MAX) );
+ QTest::newRow( "MiddleQRect_RandomInt" ) << getQRectCase( MiddleQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( INT_MIN / 2, INT_MIN / 2 ), QPoint(INT_MAX / 2, 4953) );
+ }
+
+ {
+ QTest::newRow( "LargestQRect_MinimumInt" ) << getQRectCase( LargestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( 0, 0 ), QPoint( INT_MAX - 1, INT_MIN) );
+ QTest::newRow( "LargestQRect_MiddleNegativeInt" ) << getQRectCase( LargestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( 0, 0 ), QPoint( INT_MAX - 1, INT_MIN/2) );
+ QTest::newRow( "LargestQRect_ZeroInt" ) << getQRectCase( LargestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, 0 ), QPoint( INT_MAX - 1, 0 ) );
+ QTest::newRow( "LargestQRect_MiddlePositiveInt" ) << getQRectCase( LargestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( 0, 0 ), QPoint( INT_MAX - 1, INT_MAX/2 ) );
+ QTest::newRow( "LargestQRect_MaximumInt" ) << getQRectCase( LargestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( 0, 0 ), QPoint( INT_MAX - 1, INT_MAX ) );
+ QTest::newRow( "LargestQRect_RandomInt" ) << getQRectCase( LargestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 0, 0 ), QPoint( INT_MAX - 1, 4953) );
+ }
+
+ {
+ QTest::newRow( "SmallestCoordQRect_MinimumInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MIN, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_MiddleNegativeInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MIN, INT_MIN/2 ) );
+ QTest::newRow( "SmallestCoordQRect_ZeroInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MIN, 0 ) );
+ QTest::newRow( "SmallestCoordQRect_MiddlePositiveInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MIN, INT_MAX/2 ) );
+ QTest::newRow( "SmallestCoordQRect_MaximumInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MIN, INT_MAX ) );
+ QTest::newRow( "SmallestCoordQRect_RandomInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MIN, 4953 ) );
+ }
+
+ {
+ QTest::newRow( "LargestCoordQRect_MinimumInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MAX, INT_MIN ) );
+ QTest::newRow( "LargestCoordQRect_MiddleNegativeInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MAX, INT_MIN/2 ) );
+ QTest::newRow( "LargestCoordQRect_ZeroInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MAX, 0 ) );
+ QTest::newRow( "LargestCoordQRect_MiddlePositiveInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MAX, INT_MAX/2 ) );
+ QTest::newRow( "LargestCoordQRect_MaximumInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MAX, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_RandomInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( INT_MIN, INT_MIN ), QPoint( INT_MAX, 4953 ) );
+ }
+
+ {
+ QTest::newRow( "RandomQRect_MinimumInt" ) << getQRectCase( RandomQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( 100, 200 ), QPoint( 110, INT_MIN ) );
+ QTest::newRow( "RandomQRect_MiddleNegativeInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( 100, 200 ), QPoint( 110, INT_MIN/2 ) );
+ QTest::newRow( "RandomQRect_ZeroInt" ) << getQRectCase( RandomQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 100, 200 ), QPoint( 110, 0) );
+ QTest::newRow( "RandomQRect_MiddlePositiveInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( 100, 200 ), QPoint( 110, INT_MAX/2) );
+ QTest::newRow( "RandomQRect_MaximumInt" ) << getQRectCase( RandomQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( 100, 200 ), QPoint( 110, INT_MAX ) );
+ QTest::newRow( "RandomQRect_RandomInt" ) << getQRectCase( RandomQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 100, 200 ), QPoint( 110,4953 ) );
+ }
+
+ {
+ QTest::newRow( "NegativeSizeQRect_MinimumInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( 1, 1 ), QPoint( -10, INT_MIN ) );
+ QTest::newRow( "NegativeSizeQRect_MiddleNegativeInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( 1, 1 ), QPoint( -10, INT_MIN/2 ) );
+ QTest::newRow( "NegativeSizeQRect_ZeroInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 1, 1 ), QPoint( -10, 0 ) );
+ QTest::newRow( "NegativeSizeQRect_MiddlePositiveInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( 1, 1 ), QPoint( -10, INT_MAX/2 ) );
+ QTest::newRow( "NegativeSizeQRect_MaximumInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( 1, 1 ), QPoint( -10, INT_MAX ) );
+ QTest::newRow( "NegativeSizeQRect_RandomInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 1, 1 ), QPoint( -10, 4953 ) );
+ }
+
+ {
+ QTest::newRow( "NegativePointQRect_MinimumInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( -10, -10 ), QPoint( -6, INT_MIN ) );
+ QTest::newRow( "NegativePointQRect_MiddleNegativeInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( -10, -10 ), QPoint( -6, INT_MIN/2 ) );
+ QTest::newRow( "NegativePointQRect_ZeroInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( -10, -10 ), QPoint( -6, 0 ) );
+ QTest::newRow( "NegativePointQRect_MiddlePositiveInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( -10, -10 ), QPoint( -6, INT_MAX/2 ) );
+ QTest::newRow( "NegativePointQRect_MaximumInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( -10, -10 ), QPoint( -6, INT_MAX ) );
+ QTest::newRow( "NegativePointQRect_RandomInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( -10, -10 ), QPoint( -6, 4953 ) );
+ }
+
+ {
+ QTest::newRow( "NullQRect_MinimumInt" ) << getQRectCase( NullQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( 5, 5 ), QPoint( 4, INT_MIN ) );
+ QTest::newRow( "NullQRect_MiddleNegativeInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( 5, 5 ), QPoint( 4, INT_MIN/2 ) );
+ QTest::newRow( "NullQRect_ZeroInt" ) << getQRectCase( NullQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 5, 5 ), QPoint( 4, 0 ) );
+ QTest::newRow( "NullQRect_MiddlePositiveInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( 5, 5 ), QPoint( 4, INT_MAX/2 ) );
+ QTest::newRow( "NullQRect_MaximumInt" ) << getQRectCase( NullQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( 5, 5 ), QPoint( 4, INT_MAX ) );
+ QTest::newRow( "NullQRect_RandomInt" ) << getQRectCase( NullQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 5, 5 ), QPoint( 4, 4953 ) );
+ }
+
+ {
+ QTest::newRow( "EmptyQRect_MinimumInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( 2, 2 ), QPoint( 1, INT_MIN ) );
+ QTest::newRow( "EmptyQRect_MiddleNegativeInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( 2, 2 ), QPoint( 1, INT_MIN/2 ) );
+ QTest::newRow( "EmptyQRect_ZeroInt" ) << getQRectCase( EmptyQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 2, 2 ), QPoint( 1, 0 ) );
+ QTest::newRow( "EmptyQRect_MiddlePositiveInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( 2, 2 ), QPoint( 1, INT_MAX/2 ) );
+ QTest::newRow( "EmptyQRect_MaximumInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( 2, 2 ), QPoint( 1, INT_MAX ) );
+ QTest::newRow( "EmptyQRect_RandomInt" ) << getQRectCase( EmptyQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 2, 2 ), QPoint( 1, 4953 ) );
+ }
+}
+
+void tst_QRect::setBottom()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, bottom );
+ QFETCH( QRect, nr );
+
+ r.setBottom( bottom );
+
+ QCOMPARE( r, nr );
+}
+
+void tst_QRect::setX()
+{
+ DEPENDS_ON( "setLeft" );
+}
+
+void tst_QRect::setY()
+{
+ DEPENDS_ON( "setTop" );
+}
+
+void tst_QRect::newSetTopLeft_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QPoint>("topLeft");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ QTest::newRow("InvalidQRect_NullQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(-1,-1));
+ QTest::newRow("InvalidQRect_SmallestCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(-1,-1));
+ QTest::newRow("InvalidQRect_MiddleNegCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(-1,-1));
+ QTest::newRow("InvalidQRect_MiddlePosCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(-1,-1));
+ QTest::newRow("InvalidQRect_LargestCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(-1,-1));
+ QTest::newRow("InvalidQRect_NegXQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(-1,-1));
+ QTest::newRow("InvalidQRect_NegYQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(-1,-1));
+ QTest::newRow("InvalidQRect_RandomQPoint") << getQRectCase(InvalidQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(-1,-1));
+ }
+
+ {
+ QTest::newRow("SmallestQRect_NullQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(1,1));
+ QTest::newRow("SmallestQRect_SmallestCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(1,1));
+ QTest::newRow("SmallestQRect_MiddleNegCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(1,1));
+ QTest::newRow("SmallestQRect_MiddlePosCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(1,1));
+ QTest::newRow("SmallestQRect_LargestCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(1,1));
+ QTest::newRow("SmallestQRect_NegXQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(1,1));
+ QTest::newRow("SmallestQRect_NegYQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(1,1));
+ QTest::newRow("SmallestQRect_RandomQPoint") << getQRectCase(SmallestQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(1,1));
+ }
+
+ {
+ QTest::newRow("MiddleQRect_NullQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("MiddleQRect_SmallestCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("MiddleQRect_MiddleNegCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("MiddleQRect_MiddlePosCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("MiddleQRect_LargestCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("MiddleQRect_NegXQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("MiddleQRect_NegYQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("MiddleQRect_RandomQPoint") << getQRectCase(MiddleQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(INT_MAX/2,INT_MAX/2));
+ }
+
+ {
+ QTest::newRow("LargestQRect_NullQPoint") << getQRectCase(LargestQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MAX-1,INT_MAX-1));
+ QTest::newRow("LargestQRect_SmallestCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MAX-1,INT_MAX-1));
+ QTest::newRow("LargestQRect_MiddleNegCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(INT_MAX-1,INT_MAX-1));
+ QTest::newRow("LargestQRect_MiddlePosCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(INT_MAX-1,INT_MAX-1));
+ QTest::newRow("LargestQRect_LargestCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(INT_MAX-1,INT_MAX-1));
+ QTest::newRow("LargestQRect_NegXQPoint") << getQRectCase(LargestQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(INT_MAX-1,INT_MAX-1));
+ QTest::newRow("LargestQRect_NegYQPoint") << getQRectCase(LargestQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(INT_MAX-1,INT_MAX-1));
+ QTest::newRow("LargestQRect_RandomQPoint") << getQRectCase(LargestQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(INT_MAX-1,INT_MAX-1));
+ }
+
+ {
+ QTest::newRow("SmallestCoordQRect_NullQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_SmallestCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_MiddleNegCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_MiddlePosCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_LargestCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_NegXQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_NegYQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_RandomQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(INT_MIN,INT_MIN));
+ }
+
+ {
+ QTest::newRow("LargestCoordQRect_NullQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("LargestCoordQRect_SmallestCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("LargestCoordQRect_MiddleNegCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("LargestCoordQRect_MiddlePosCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("LargestCoordQRect_LargestCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("LargestCoordQRect_NegXQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("LargestCoordQRect_NegYQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("LargestCoordQRect_RandomQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(INT_MAX,INT_MAX));
+ }
+
+ {
+ QTest::newRow("RandomQRect_NullQPoint") << getQRectCase(RandomQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(110,215));
+ QTest::newRow("RandomQRect_SmallestCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(110,215));
+ QTest::newRow("RandomQRect_MiddleNegCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(110,215));
+ QTest::newRow("RandomQRect_MiddlePosCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(110,215));
+ QTest::newRow("RandomQRect_LargestCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(110,215));
+ QTest::newRow("RandomQRect_NegXQPoint") << getQRectCase(RandomQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(110,215));
+ QTest::newRow("RandomQRect_NegYQPoint") << getQRectCase(RandomQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(110,215));
+ QTest::newRow("RandomQRect_RandomQPoint") << getQRectCase(RandomQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(110,215));
+ }
+
+ {
+ QTest::newRow("NegativeSizeQRect_NullQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(-10,-10));
+ QTest::newRow("NegativeSizeQRect_SmallestCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(-10,-10));
+ QTest::newRow("NegativeSizeQRect_MiddleNegCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(-10,-10));
+ QTest::newRow("NegativeSizeQRect_MiddlePosCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(-10,-10));
+ QTest::newRow("NegativeSizeQRect_LargestCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(-10,-10));
+ QTest::newRow("NegativeSizeQRect_NegXQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(-10,-10));
+ QTest::newRow("NegativeSizeQRect_NegYQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(-10,-10));
+ QTest::newRow("NegativeSizeQRect_RandomQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(-10,-10));
+ }
+
+ {
+ QTest::newRow("NegativePointQRect_NullQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(-6,-6));
+ QTest::newRow("NegativePointQRect_SmallestCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(-6,-6));
+ QTest::newRow("NegativePointQRect_MiddleNegCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(-6,-6));
+ QTest::newRow("NegativePointQRect_MiddlePosCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(-6,-6));
+ QTest::newRow("NegativePointQRect_LargestCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(-6,-6));
+ QTest::newRow("NegativePointQRect_NegXQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(-6,-6));
+ QTest::newRow("NegativePointQRect_NegYQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(-6,-6));
+ QTest::newRow("NegativePointQRect_RandomQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(-6,-6));
+ }
+
+ {
+ QTest::newRow("NullQRect_NullQPoint") << getQRectCase(NullQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(4,4));
+ QTest::newRow("NullQRect_SmallestCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(4,4));
+ QTest::newRow("NullQRect_MiddleNegCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(4,4));
+ QTest::newRow("NullQRect_MiddlePosCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(4,4));
+ QTest::newRow("NullQRect_LargestCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(4,4));
+ QTest::newRow("NullQRect_NegXQPoint") << getQRectCase(NullQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(4,4));
+ QTest::newRow("NullQRect_NegYQPoint") << getQRectCase(NullQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(4,4));
+ QTest::newRow("NullQRect_RandomQPoint") << getQRectCase(NullQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(4,4));
+ }
+
+ {
+ QTest::newRow("EmptyQRect_NullQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(1,1));
+ QTest::newRow("EmptyQRect_SmallestCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(1,1));
+ QTest::newRow("EmptyQRect_MiddleNegCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(1,1));
+ QTest::newRow("EmptyQRect_MiddlePosCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(1,1));
+ QTest::newRow("EmptyQRect_LargestCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(1,1));
+ QTest::newRow("EmptyQRect_NegXQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(1,1));
+ QTest::newRow("EmptyQRect_NegYQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(1,1));
+ QTest::newRow("EmptyQRect_RandomQPoint") << getQRectCase(EmptyQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(1,1));
+ }
+}
+
+void tst_QRect::newSetTopLeft()
+{
+ QFETCH( QRect, r );
+ QFETCH( QPoint, topLeft );
+ QFETCH( QRect, nr );
+
+ r.setTopLeft( topLeft );
+ QCOMPARE( r, nr );
+}
+
+void tst_QRect::newSetBottomRight_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QPoint>("bottomRight");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ QTest::newRow("InvalidQRect_NullQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(0,0));
+ QTest::newRow("InvalidQRect_SmallestCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("InvalidQRect_MiddleNegCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("InvalidQRect_MiddlePosCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("InvalidQRect_LargestCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("InvalidQRect_NegXQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(0,0), QPoint(-12,7));
+ QTest::newRow("InvalidQRect_NegYQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(0,0), QPoint(12,-7));
+ QTest::newRow("InvalidQRect_RandomQPoint") << getQRectCase(InvalidQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(0,0), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("SmallestQRect_NullQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(1,1), QPoint(0,0));
+ QTest::newRow("SmallestQRect_SmallestCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(1,1), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestQRect_MiddleNegCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(1,1), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("SmallestQRect_MiddlePosCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(1,1), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("SmallestQRect_LargestCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(1,1), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("SmallestQRect_NegXQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(1,1), QPoint(-12,7));
+ QTest::newRow("SmallestQRect_NegYQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(1,1), QPoint(12,-7));
+ QTest::newRow("SmallestQRect_RandomQPoint") << getQRectCase(SmallestQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(1,1), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("MiddleQRect_NullQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(QPoint(INT_MIN/2,INT_MIN/2)), QPoint(0,0));
+ QTest::newRow("MiddleQRect_SmallestCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("MiddleQRect_MiddleNegCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("MiddleQRect_MiddlePosCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("MiddleQRect_LargestCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("MiddleQRect_NegXQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(-12,7));
+ QTest::newRow("MiddleQRect_NegYQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(12,-7));
+ QTest::newRow("MiddleQRect_RandomQPoint") << getQRectCase(MiddleQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("LargestQRect_NullQPoint") << getQRectCase(LargestQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(0,0));
+ QTest::newRow("LargestQRect_SmallestCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("LargestQRect_MiddleNegCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("LargestQRect_MiddlePosCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("LargestQRect_LargestCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("LargestQRect_NegXQPoint") << getQRectCase(LargestQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(0,0), QPoint(-12,7));
+ QTest::newRow("LargestQRect_NegYQPoint") << getQRectCase(LargestQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(0,0), QPoint(12,-7));
+ QTest::newRow("LargestQRect_RandomQPoint") << getQRectCase(LargestQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(0,0), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("SmallestCoordQRect_NullQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(0,0));
+ QTest::newRow("SmallestCoordQRect_SmallestCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_MiddleNegCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("SmallestCoordQRect_MiddlePosCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("SmallestCoordQRect_LargestCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("SmallestCoordQRect_NegXQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(-12,7));
+ QTest::newRow("SmallestCoordQRect_NegYQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(12,-7));
+ QTest::newRow("SmallestCoordQRect_RandomQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("LargestCoordQRect_NullQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(0,0));
+ QTest::newRow("LargestCoordQRect_SmallestCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("LargestCoordQRect_MiddleNegCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("LargestCoordQRect_MiddlePosCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("LargestCoordQRect_LargestCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("LargestCoordQRect_NegXQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(-12,7));
+ QTest::newRow("LargestCoordQRect_NegYQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(12,-7));
+ QTest::newRow("LargestCoordQRect_RandomQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("RandomQRect_NullQPoint") << getQRectCase(RandomQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(100,200), QPoint(0,0));
+ QTest::newRow("RandomQRect_SmallestCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(100,200), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("RandomQRect_MiddleNegCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(100,200), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("RandomQRect_MiddlePosCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(100,200), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("RandomQRect_LargestCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(100,200), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("RandomQRect_NegXQPoint") << getQRectCase(RandomQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(100,200), QPoint(-12,7));
+ QTest::newRow("RandomQRect_NegYQPoint") << getQRectCase(RandomQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(100,200), QPoint(12,-7));
+ QTest::newRow("RandomQRect_RandomQPoint") << getQRectCase(RandomQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(100,200), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("NegativeSizeQRect_NullQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(1,1), QPoint(0,0));
+ QTest::newRow("NegativeSizeQRect_SmallestCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(1,1), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("NegativeSizeQRect_MiddleNegCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(1,1), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("NegativeSizeQRect_MiddlePosCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(1,1), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("NegativeSizeQRect_LargestCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(1,1), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("NegativeSizeQRect_NegXQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(1,1), QPoint(-12,7));
+ QTest::newRow("NegativeSizeQRect_NegYQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(1,1), QPoint(12,-7));
+ QTest::newRow("NegativeSizeQRect_RandomQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(1,1), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("NegativePointQRect_NullQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(-10,-10), QPoint(0,0));
+ QTest::newRow("NegativePointQRect_SmallestCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(-10,-10), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("NegativePointQRect_MiddleNegCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(-10,-10), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("NegativePointQRect_MiddlePosCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(-10,-10), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("NegativePointQRect_LargestCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(-10,-10), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("NegativePointQRect_NegXQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-10,-10), QPoint(-12,7));
+ QTest::newRow("NegativePointQRect_NegYQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(-10,-10), QPoint(12,-7));
+ QTest::newRow("NegativePointQRect_RandomQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(-10,-10), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("NullQRect_NullQPoint") << getQRectCase(NullQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(5,5), QPoint(0,0));
+ QTest::newRow("NullQRect_SmallestCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(5,5), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("NullQRect_MiddleNegCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(5,5), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("NullQRect_MiddlePosCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(5,5), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("NullQRect_LargestCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(5,5), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("NullQRect_NegXQPoint") << getQRectCase(NullQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(5,5), QPoint(-12,7));
+ QTest::newRow("NullQRect_NegYQPoint") << getQRectCase(NullQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(5,5), QPoint(12,-7));
+ QTest::newRow("NullQRect_RandomQPoint") << getQRectCase(NullQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(5,5), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("EmptyQRect_NullQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(2,2), QPoint(0,0));
+ QTest::newRow("EmptyQRect_SmallestCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(2,2), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("EmptyQRect_MiddleNegCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(2,2), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("EmptyQRect_MiddlePosCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(2,2), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("EmptyQRect_LargestCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(2,2), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("EmptyQRect_NegXQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(2,2), QPoint(-12,7));
+ QTest::newRow("EmptyQRect_NegYQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(2,2), QPoint(12,-7));
+ QTest::newRow("EmptyQRect_RandomQPoint") << getQRectCase(EmptyQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(2,2), QPoint(12,7));
+ }
+}
+
+void tst_QRect::newSetBottomRight()
+{
+ QFETCH( QRect, r );
+ QFETCH( QPoint, bottomRight );
+ QFETCH( QRect, nr );
+
+ r.setBottomRight( bottomRight );
+
+ QCOMPARE( r, nr );
+}
+
+void tst_QRect::newSetTopRight_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QPoint>("topRight");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ QTest::newRow("InvalidQRect_NullQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(0,-1));
+ QTest::newRow("InvalidQRect_SmallestCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(0,INT_MIN), QPoint(INT_MIN,-1));
+ QTest::newRow("InvalidQRect_MiddleNegCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(0,INT_MIN/2), QPoint(INT_MIN/2,-1));
+ QTest::newRow("InvalidQRect_MiddlePosCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(0,INT_MAX/2), QPoint(INT_MAX/2,-1));
+ QTest::newRow("InvalidQRect_LargestCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(0,INT_MAX), QPoint(INT_MAX,-1));
+ QTest::newRow("InvalidQRect_NegXQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(0,7), QPoint(-12,-1));
+ QTest::newRow("InvalidQRect_NegYQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(0,-7), QPoint(12,-1));
+ QTest::newRow("InvalidQRect_RandomQPoint") << getQRectCase(InvalidQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(0,7), QPoint(12,-1));
+ }
+
+ {
+ QTest::newRow("SmallestQRect_NullQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(1,0), QPoint(0,1));
+ QTest::newRow("SmallestQRect_SmallestCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(1,INT_MIN), QPoint(INT_MIN,1));
+ QTest::newRow("SmallestQRect_MiddleNegCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(1,INT_MIN/2), QPoint(INT_MIN/2,1));
+ QTest::newRow("SmallestQRect_MiddlePosCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(1,INT_MAX/2), QPoint(INT_MAX/2,1));
+ QTest::newRow("SmallestQRect_LargestCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(1,INT_MAX), QPoint(INT_MAX,1));
+ QTest::newRow("SmallestQRect_NegXQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(1,7), QPoint(-12,1));
+ QTest::newRow("SmallestQRect_NegYQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(1,-7), QPoint(12,1));
+ QTest::newRow("SmallestQRect_RandomQPoint") << getQRectCase(SmallestQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(1,7), QPoint(12,1));
+ }
+
+ {
+ QTest::newRow("MiddleQRect_NullQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(INT_MIN/2,0),QPoint(0,INT_MAX/2));
+ QTest::newRow("MiddleQRect_SmallestCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN),QPoint(INT_MIN,INT_MAX/2));
+ QTest::newRow("MiddleQRect_MiddleNegCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2),QPoint(INT_MIN/2,INT_MAX/2));
+ QTest::newRow("MiddleQRect_MiddlePosCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MAX/2),QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("MiddleQRect_LargestCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MAX),QPoint(INT_MAX,INT_MAX/2));
+ QTest::newRow("MiddleQRect_NegXQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(INT_MIN/2,7),QPoint(-12,INT_MAX/2));
+ QTest::newRow("MiddleQRect_NegYQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(INT_MIN/2,-7),QPoint(12,INT_MAX/2));
+ QTest::newRow("MiddleQRect_RandomQPoint") << getQRectCase(MiddleQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(INT_MIN/2,7),QPoint(12,INT_MAX/2));
+ }
+
+ {
+ QTest::newRow("LargestQRect_NullQPoint") << getQRectCase(LargestQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0),QPoint(0,INT_MAX-1));
+ QTest::newRow("LargestQRect_SmallestCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(0,INT_MIN),QPoint(INT_MIN,INT_MAX-1));
+ QTest::newRow("LargestQRect_MiddleNegCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(0,INT_MIN/2),QPoint(INT_MIN/2,INT_MAX-1));
+ QTest::newRow("LargestQRect_MiddlePosCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(0,INT_MAX/2),QPoint(INT_MAX/2,INT_MAX-1));
+ QTest::newRow("LargestQRect_LargestCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(0,INT_MAX),QPoint(INT_MAX,INT_MAX-1));
+ QTest::newRow("LargestQRect_NegXQPoint") << getQRectCase(LargestQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(0,7),QPoint(-12,INT_MAX-1));
+ QTest::newRow("LargestQRect_NegYQPoint") << getQRectCase(LargestQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(0,-7),QPoint(12,INT_MAX-1));
+ QTest::newRow("LargestQRect_RandomQPoint") << getQRectCase(LargestQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(0,7),QPoint(12,INT_MAX-1));
+ }
+
+ {
+ QTest::newRow("SmallestCoordQRect_NullQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(INT_MIN,0),QPoint(0,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_SmallestCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN),QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_MiddleNegCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN/2),QPoint(INT_MIN/2,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_MiddlePosCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MAX/2),QPoint(INT_MAX/2,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_LargestCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MAX),QPoint(INT_MAX,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_NegXQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(INT_MIN,7),QPoint(-12,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_NegYQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(INT_MIN,-7),QPoint(12,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_RandomQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(INT_MIN,7),QPoint(12,INT_MIN));
+ }
+
+ {
+ QTest::newRow("LargestCoordQRect_NullQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(INT_MIN,0),QPoint(0,INT_MAX));
+ QTest::newRow("LargestCoordQRect_SmallestCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN),QPoint(INT_MIN,INT_MAX));
+ QTest::newRow("LargestCoordQRect_MiddleNegCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN/2),QPoint(INT_MIN/2,INT_MAX));
+ QTest::newRow("LargestCoordQRect_MiddlePosCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MAX/2),QPoint(INT_MAX/2,INT_MAX));
+ QTest::newRow("LargestCoordQRect_LargestCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MAX),QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("LargestCoordQRect_NegXQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(INT_MIN,7),QPoint(-12,INT_MAX));
+ QTest::newRow("LargestCoordQRect_NegYQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(INT_MIN,-7),QPoint(12,INT_MAX));
+ QTest::newRow("LargestCoordQRect_RandomQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(INT_MIN,7),QPoint(12,INT_MAX));
+ }
+
+ {
+ QTest::newRow("RandomQRect_NullQPoint") << getQRectCase(RandomQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(100,0),QPoint(0,215));
+ QTest::newRow("RandomQRect_SmallestCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(100,INT_MIN),QPoint(INT_MIN,215));
+ QTest::newRow("RandomQRect_MiddleNegCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(100,INT_MIN/2),QPoint(INT_MIN/2,215));
+ QTest::newRow("RandomQRect_MiddlePosCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(100,INT_MAX/2),QPoint(INT_MAX/2,215));
+ QTest::newRow("RandomQRect_LargestCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(100,INT_MAX),QPoint(INT_MAX,215));
+ QTest::newRow("RandomQRect_NegXQPoint") << getQRectCase(RandomQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(100,7),QPoint(-12,215));
+ QTest::newRow("RandomQRect_NegYQPoint") << getQRectCase(RandomQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(100,-7),QPoint(12,215));
+ QTest::newRow("RandomQRect_RandomQPoint") << getQRectCase(RandomQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(100,7),QPoint(12,215));
+ }
+
+ {
+ QTest::newRow("NegativeSizeQRect_NullQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(1, 0),QPoint(0,-10));
+ QTest::newRow("NegativeSizeQRect_SmallestCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(1, INT_MIN),QPoint(INT_MIN,-10));
+ QTest::newRow("NegativeSizeQRect_MiddleNegCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(1, INT_MIN/2),QPoint(INT_MIN/2,-10));
+ QTest::newRow("NegativeSizeQRect_MiddlePosCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(1, INT_MAX/2),QPoint(INT_MAX/2,-10));
+ QTest::newRow("NegativeSizeQRect_LargestCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(1, INT_MAX),QPoint(INT_MAX,-10));
+ QTest::newRow("NegativeSizeQRect_NegXQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(1, 7),QPoint(-12,-10));
+ QTest::newRow("NegativeSizeQRect_NegYQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(1, -7),QPoint(12,-10));
+ QTest::newRow("NegativeSizeQRect_RandomQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(1, 7),QPoint(12,-10));
+ }
+
+ {
+ QTest::newRow("NegativePointQRect_NullQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(-10,0),QPoint(0,-6));
+ QTest::newRow("NegativePointQRect_SmallestCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(-10,INT_MIN),QPoint(INT_MIN,-6));
+ QTest::newRow("NegativePointQRect_MiddleNegCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(-10,INT_MIN/2),QPoint(INT_MIN/2,-6));
+ QTest::newRow("NegativePointQRect_MiddlePosCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(-10,INT_MAX/2),QPoint(INT_MAX/2,-6));
+ QTest::newRow("NegativePointQRect_LargestCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(-10,INT_MAX),QPoint(INT_MAX,-6));
+ QTest::newRow("NegativePointQRect_NegXQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-10,7),QPoint(-12,-6));
+ QTest::newRow("NegativePointQRect_NegYQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(-10,-7),QPoint(12,-6));
+ QTest::newRow("NegativePointQRect_RandomQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(-10,7),QPoint(12,-6));
+ }
+
+ {
+ QTest::newRow("NullQRect_NullQPoint") << getQRectCase(NullQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(5,0),QPoint(0,4));
+ QTest::newRow("NullQRect_SmallestCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(5,INT_MIN),QPoint(INT_MIN,4));
+ QTest::newRow("NullQRect_MiddleNegCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(5,INT_MIN/2),QPoint(INT_MIN/2,4));
+ QTest::newRow("NullQRect_MiddlePosCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(5,INT_MAX/2),QPoint(INT_MAX/2,4));
+ QTest::newRow("NullQRect_LargestCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(5,INT_MAX),QPoint(INT_MAX,4));
+ QTest::newRow("NullQRect_NegXQPoint") << getQRectCase(NullQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(5,7),QPoint(-12,4));
+ QTest::newRow("NullQRect_NegYQPoint") << getQRectCase(NullQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(5,-7),QPoint(12,4));
+ QTest::newRow("NullQRect_RandomQPoint") << getQRectCase(NullQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(5,7),QPoint(12,4));
+ }
+
+ {
+ QTest::newRow("EmptyQRect_NullQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(2,0),QPoint(0,1));
+ QTest::newRow("EmptyQRect_SmallestCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(2,INT_MIN),QPoint(INT_MIN,1));
+ QTest::newRow("EmptyQRect_MiddleNegCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(2,INT_MIN/2),QPoint(INT_MIN/2,1));
+ QTest::newRow("EmptyQRect_MiddlePosCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(2,INT_MAX/2),QPoint(INT_MAX/2,1));
+ QTest::newRow("EmptyQRect_LargestCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(2,INT_MAX),QPoint(INT_MAX,1));
+ QTest::newRow("EmptyQRect_NegXQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(2,7),QPoint(-12,1));
+ QTest::newRow("EmptyQRect_NegYQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(2,-7),QPoint(12,1));
+ QTest::newRow("EmptyQRect_RandomQPoint") << getQRectCase(EmptyQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(2,7),QPoint(12,1));
+ }
+}
+
+void tst_QRect::newSetTopRight()
+{
+ QFETCH( QRect, r );
+ QFETCH( QPoint, topRight );
+ QFETCH( QRect, nr );
+
+ r.setTopRight( topRight );
+
+ QCOMPARE( r, nr );
+}
+
+void tst_QRect::newSetBottomLeft_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QPoint>("bottomLeft");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ QTest::newRow("InvalidQRect_NullQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0),QPoint(-1,0));
+ QTest::newRow("InvalidQRect_SmallestCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,0),QPoint(-1,INT_MIN));
+ QTest::newRow("InvalidQRect_MiddleNegCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,0),QPoint(-1,INT_MIN/2));
+ QTest::newRow("InvalidQRect_MiddlePosCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,0),QPoint(-1,INT_MAX/2));
+ QTest::newRow("InvalidQRect_LargestCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,0),QPoint(-1,INT_MAX));
+ QTest::newRow("InvalidQRect_NegXQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,0),QPoint(-1,7));
+ QTest::newRow("InvalidQRect_NegYQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,0),QPoint(-1,-7));
+ QTest::newRow("InvalidQRect_RandomQPoint") << getQRectCase(InvalidQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,0),QPoint(-1,7));
+ }
+
+ {
+ QTest::newRow("SmallestQRect_NullQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,1),QPoint(1,0));
+ QTest::newRow("SmallestQRect_SmallestCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,1),QPoint(1,INT_MIN));
+ QTest::newRow("SmallestQRect_MiddleNegCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,1),QPoint(1,INT_MIN/2));
+ QTest::newRow("SmallestQRect_MiddlePosCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,1), QPoint(1,INT_MAX/2));
+ QTest::newRow("SmallestQRect_LargestCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,1), QPoint(1,INT_MAX));
+ QTest::newRow("SmallestQRect_NegXQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,1),QPoint(1,7));
+ QTest::newRow("SmallestQRect_NegYQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,1),QPoint(1,-7));
+ QTest::newRow("SmallestQRect_RandomQPoint") << getQRectCase(SmallestQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,1),QPoint(1,7));
+ }
+
+ {
+ QTest::newRow("MiddleQRect_NullQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,INT_MIN/2),QPoint(INT_MAX/2,0));
+ QTest::newRow("MiddleQRect_SmallestCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN/2),QPoint(INT_MAX/2,INT_MIN));
+ QTest::newRow("MiddleQRect_MiddleNegCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2),QPoint(INT_MAX/2,INT_MIN/2));
+ QTest::newRow("MiddleQRect_MiddlePosCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MIN/2),QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("MiddleQRect_LargestCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MIN/2),QPoint(INT_MAX/2,INT_MAX));
+ QTest::newRow("MiddleQRect_NegXQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,INT_MIN/2),QPoint(INT_MAX/2,7));
+ QTest::newRow("MiddleQRect_NegYQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,INT_MIN/2),QPoint(INT_MAX/2,-7));
+ QTest::newRow("MiddleQRect_RandomQPoint") << getQRectCase(MiddleQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,INT_MIN/2),QPoint(INT_MAX/2,7));
+ }
+
+ {
+ QTest::newRow("LargestQRect_NullQPoint") << getQRectCase(LargestQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0),QPoint(INT_MAX-1,0));
+ QTest::newRow("LargestQRect_SmallestCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,0),QPoint(INT_MAX-1,INT_MIN));
+ QTest::newRow("LargestQRect_MiddleNegCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,0),QPoint(INT_MAX-1,INT_MIN/2));
+ QTest::newRow("LargestQRect_MiddlePosCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,0),QPoint(INT_MAX-1,INT_MAX/2));
+ QTest::newRow("LargestQRect_LargestCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,0),QPoint(INT_MAX-1,INT_MAX));
+ QTest::newRow("LargestQRect_NegXQPoint") << getQRectCase(LargestQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,0),QPoint(INT_MAX-1,7));
+ QTest::newRow("LargestQRect_NegYQPoint") << getQRectCase(LargestQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,0),QPoint(INT_MAX-1,-7));
+ QTest::newRow("LargestQRect_RandomQPoint") << getQRectCase(LargestQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,0),QPoint(INT_MAX-1,7));
+ }
+
+ {
+ QTest::newRow("SmallestCoordQRect_NullQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,INT_MIN),QPoint(INT_MIN,0));
+ QTest::newRow("SmallestCoordQRect_SmallestCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN),QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_MiddleNegCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN),QPoint(INT_MIN,INT_MIN/2));
+ QTest::newRow("SmallestCoordQRect_MiddlePosCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MIN),QPoint(INT_MIN,INT_MAX/2));
+ QTest::newRow("SmallestCoordQRect_LargestCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MIN),QPoint(INT_MIN,INT_MAX));
+ QTest::newRow("SmallestCoordQRect_NegXQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,INT_MIN),QPoint(INT_MIN,7));
+ QTest::newRow("SmallestCoordQRect_NegYQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,INT_MIN),QPoint(INT_MIN,-7));
+ QTest::newRow("SmallestCoordQRect_RandomQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,INT_MIN),QPoint(INT_MIN,7));
+ }
+
+ {
+ QTest::newRow("LargestCoordQRect_NullQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,INT_MIN),QPoint(INT_MAX,0));
+ QTest::newRow("LargestCoordQRect_SmallestCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN),QPoint(INT_MAX,INT_MIN));
+ QTest::newRow("LargestCoordQRect_MiddleNegCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN),QPoint(INT_MAX,INT_MIN/2));
+ QTest::newRow("LargestCoordQRect_MiddlePosCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MIN),QPoint(INT_MAX,INT_MAX/2));
+ QTest::newRow("LargestCoordQRect_LargestCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MIN),QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("LargestCoordQRect_NegXQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,INT_MIN),QPoint(INT_MAX,7));
+ QTest::newRow("LargestCoordQRect_NegYQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,INT_MIN),QPoint(INT_MAX,-7));
+ QTest::newRow("LargestCoordQRect_RandomQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,INT_MIN),QPoint(INT_MAX,7));
+ }
+
+ {
+ QTest::newRow("RandomQRect_NullQPoint") << getQRectCase(RandomQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,200),QPoint(110,0));
+ QTest::newRow("RandomQRect_SmallestCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,200),QPoint(110,INT_MIN));
+ QTest::newRow("RandomQRect_MiddleNegCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,200),QPoint(110,INT_MIN/2));
+ QTest::newRow("RandomQRect_MiddlePosCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,200),QPoint(110,INT_MAX/2));
+ QTest::newRow("RandomQRect_LargestCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,200),QPoint(110,INT_MAX));
+ QTest::newRow("RandomQRect_NegXQPoint") << getQRectCase(RandomQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,200),QPoint(110,7));
+ QTest::newRow("RandomQRect_NegYQPoint") << getQRectCase(RandomQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,200),QPoint(110,-7));
+ QTest::newRow("RandomQRect_RandomQPoint") << getQRectCase(RandomQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,200),QPoint(110,7));
+ }
+
+ {
+ QTest::newRow("NegativeSizeQRect_NullQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0, 1),QPoint(-10,0));
+ QTest::newRow("NegativeSizeQRect_SmallestCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN, 1),QPoint(-10,INT_MIN));
+ QTest::newRow("NegativeSizeQRect_MiddleNegCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2, 1),QPoint(-10,INT_MIN/2));
+ QTest::newRow("NegativeSizeQRect_MiddlePosCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2, 1),QPoint(-10,INT_MAX/2));
+ QTest::newRow("NegativeSizeQRect_LargestCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX, 1),QPoint(-10,INT_MAX));
+ QTest::newRow("NegativeSizeQRect_NegXQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12, 1),QPoint(-10,7));
+ QTest::newRow("NegativeSizeQRect_NegYQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12, 1),QPoint(-10,-7));
+ QTest::newRow("NegativeSizeQRect_RandomQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12, 1),QPoint(-10,7));
+ }
+
+ {
+ QTest::newRow("NegativePointQRect_NullQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,-10),QPoint(-6,0));
+ QTest::newRow("NegativePointQRect_SmallestCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,-10),QPoint(-6,INT_MIN));
+ QTest::newRow("NegativePointQRect_MiddleNegCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,-10),QPoint(-6,INT_MIN/2));
+ QTest::newRow("NegativePointQRect_MiddlePosCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,-10),QPoint(-6,INT_MAX/2));
+ QTest::newRow("NegativePointQRect_LargestCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,-10),QPoint(-6,INT_MAX));
+ QTest::newRow("NegativePointQRect_NegXQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,-10),QPoint(-6,7));
+ QTest::newRow("NegativePointQRect_NegYQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-10),QPoint(-6,-7));
+ QTest::newRow("NegativePointQRect_RandomQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,-10),QPoint(-6,7));
+ }
+
+ {
+ QTest::newRow("NullQRect_NullQPoint") << getQRectCase(NullQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,5),QPoint(4,0));
+ QTest::newRow("NullQRect_SmallestCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,5),QPoint(4,INT_MIN));
+ QTest::newRow("NullQRect_MiddleNegCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,5),QPoint(4,INT_MIN/2));
+ QTest::newRow("NullQRect_MiddlePosCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,5),QPoint(4,INT_MAX/2));
+ QTest::newRow("NullQRect_LargestCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,5),QPoint(4,INT_MAX));
+ QTest::newRow("NullQRect_NegXQPoint") << getQRectCase(NullQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,5),QPoint(4,7));
+ QTest::newRow("NullQRect_NegYQPoint") << getQRectCase(NullQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,5),QPoint(4,-7));
+ QTest::newRow("NullQRect_RandomQPoint") << getQRectCase(NullQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,5),QPoint(4,7));
+ }
+
+ {
+ QTest::newRow("EmptyQRect_NullQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,2),QPoint(1,0));
+ QTest::newRow("EmptyQRect_SmallestCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,2),QPoint(1,INT_MIN));
+ QTest::newRow("EmptyQRect_MiddleNegCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,2),QPoint(1,INT_MIN/2));
+ QTest::newRow("EmptyQRect_MiddlePosCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,2),QPoint(1,INT_MAX/2));
+ QTest::newRow("EmptyQRect_LargestCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,2),QPoint(1,INT_MAX));
+ QTest::newRow("EmptyQRect_NegXQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,2),QPoint(1,7));
+ QTest::newRow("EmptyQRect_NegYQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,2),QPoint(1,-7));
+ QTest::newRow("EmptyQRect_RandomQPoint") << getQRectCase(EmptyQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,2),QPoint(1,7));
+ }
+}
+
+void tst_QRect::newSetBottomLeft()
+{
+ QFETCH( QRect, r );
+ QFETCH( QPoint, bottomLeft );
+ QFETCH( QRect, nr );
+
+ r.setBottomLeft( bottomLeft );
+
+ QCOMPARE( r, nr );
+}
+
+void tst_QRect::topLeft_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QPoint>("topLeft");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << QPoint(0,0);
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << QPoint(1,1);
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << QPoint(INT_MIN/2,INT_MIN/2);
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << QPoint(0,0);
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << QPoint(INT_MIN,INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << QPoint(INT_MIN,INT_MIN);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << QPoint(100,200);
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << QPoint(1,1);
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << QPoint(-10,-10);
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << QPoint(5,5);
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << QPoint(2,2);
+}
+void tst_QRect::topLeft()
+{
+ QFETCH( QRect, r );
+ QFETCH( QPoint, topLeft );
+
+ QCOMPARE( r.topLeft(), topLeft );
+}
+void tst_QRect::bottomRight_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QPoint>("bottomRight");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << QPoint(-1,-1);
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << QPoint(1,1);
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << QPoint(INT_MAX/2,INT_MAX/2);
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << QPoint(INT_MAX-1,INT_MAX-1);
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << QPoint(INT_MIN,INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << QPoint(INT_MAX,INT_MAX);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << QPoint(110,215);
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << QPoint(-10,-10);
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << QPoint(-6,-6);
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << QPoint(4,4);
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << QPoint(1,1);
+}
+void tst_QRect::bottomRight()
+{
+ QFETCH( QRect, r );
+ QFETCH( QPoint, bottomRight );
+
+ QCOMPARE( r.bottomRight(), bottomRight );
+}
+void tst_QRect::topRight_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QPoint>("topRight");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << QPoint(-1,0);
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << QPoint(1,1);
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << QPoint(INT_MAX/2,INT_MIN/2);
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << QPoint(INT_MAX-1,0);
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << QPoint(INT_MIN,INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << QPoint(INT_MAX,INT_MIN);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << QPoint(110,200);
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << QPoint(-10,1);
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << QPoint(-6,-10);
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << QPoint(4,5);
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << QPoint(1,2);
+}
+void tst_QRect::topRight()
+{
+ QFETCH( QRect, r );
+ QFETCH( QPoint, topRight );
+
+ QCOMPARE( r.topRight(), topRight );
+}
+void tst_QRect::bottomLeft_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QPoint>("bottomLeft");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << QPoint(0,-1);
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << QPoint(1,1);
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << QPoint(INT_MIN/2,INT_MAX/2);
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << QPoint(0,INT_MAX-1);
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << QPoint(INT_MIN,INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << QPoint(INT_MIN,INT_MAX);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << QPoint(100,215);
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << QPoint(1,-10);
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << QPoint(-10,-6);
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << QPoint(5,4);
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << QPoint(2,1);
+}
+void tst_QRect::bottomLeft()
+{
+ QFETCH( QRect, r );
+ QFETCH( QPoint, bottomLeft );
+
+ QCOMPARE( r.bottomLeft(), bottomLeft );
+}
+void tst_QRect::center_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QPoint>("center");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << QPoint(0,0);
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << QPoint(1,1);
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << QPoint(0,0);
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << QPoint(INT_MAX/2,INT_MAX/2);
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << QPoint(0,0);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << QPoint(0,0);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << QPoint(105,207);
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << QPoint(-4,-4);
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << QPoint(-8,-8);
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << QPoint(4,4);
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << QPoint(1,1);
+}
+void tst_QRect::center()
+{
+ QFETCH( QRect, r );
+ QFETCH( QPoint, center );
+
+ QCOMPARE( r.center(), center );
+}
+
+void tst_QRect::getRect_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("x");
+ QTest::addColumn<int>("y");
+ QTest::addColumn<int>("w");
+ QTest::addColumn<int>("h");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << 0 << 0 << 0 << 0;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << 1 << 1 << 1 << 1;
+ // QTest::newRow( "MiddleQRect" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << 0 << 0 << int(INT_MAX) << int(INT_MAX);
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << int(INT_MIN) << int(INT_MIN) << 1 << 1;
+ // QTest::newRow( "LargestCoordQRect" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << 100 << 200 << 11 << 16;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << 1 << 1 << -10 << -10;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << -10 << -10 << 5 << 5;
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << 5 << 5 << 0 << 0;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << 2 << 2 << 0 << 0;
+}
+
+void tst_QRect::getRect()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, x );
+ QFETCH( int, y );
+ QFETCH( int, w );
+ QFETCH( int, h );
+
+ int x2, y2, w2, h2;
+ r.getRect( &x2, &y2, &w2, &h2 );
+
+ QVERIFY( x == x2 );
+ QVERIFY( y == y2 );
+ QVERIFY( w == w2 );
+ QVERIFY( h == h2 );
+}
+
+void tst_QRect::getCoords_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("xp1");
+ QTest::addColumn<int>("yp1");
+ QTest::addColumn<int>("xp2");
+ QTest::addColumn<int>("yp2");
+
+ QTest::newRow( "InvalidQRect" ) << getQRectCase( InvalidQRect ) << 0 << 0 << -1 << -1;
+ QTest::newRow( "SmallestQRect" ) << getQRectCase( SmallestQRect ) << 1 << 1 << 1 << 1;
+ QTest::newRow( "MiddleQRect" ) << getQRectCase( MiddleQRect ) << int(INT_MIN)/2 << int(INT_MIN)/2 << int(INT_MAX)/2 << int(INT_MAX)/2;
+ QTest::newRow( "LargestQRect" ) << getQRectCase( LargestQRect ) << 0 << 0 << int(INT_MAX)-1 << int(INT_MAX)-1;
+ QTest::newRow( "SmallestCoordQRect" ) << getQRectCase( SmallestCoordQRect ) << int(INT_MIN) << int(INT_MIN) << int(INT_MIN) << int(INT_MIN);
+ QTest::newRow( "LargestCoordQRect" ) << getQRectCase( LargestCoordQRect ) << int(INT_MIN) << int(INT_MIN) << int(INT_MAX) << int(INT_MAX);
+ QTest::newRow( "RandomQRect" ) << getQRectCase( RandomQRect ) << 100 << 200 << 110 << 215;
+ QTest::newRow( "NegativeSizeQRect" ) << getQRectCase( NegativeSizeQRect ) << 1 << 1 << -10 << -10;
+ QTest::newRow( "NegativePointQRect" ) << getQRectCase( NegativePointQRect ) << -10 << -10 << -6 << -6;
+ QTest::newRow( "NullQRect" ) << getQRectCase( NullQRect ) << 5 << 5 << 4 << 4;
+ QTest::newRow( "EmptyQRect" ) << getQRectCase( EmptyQRect ) << 2 << 2 << 1 << 1;
+}
+
+void tst_QRect::getCoords()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, xp1 );
+ QFETCH( int, yp1 );
+ QFETCH( int, xp2 );
+ QFETCH( int, yp2 );
+
+ int xp12, yp12, xp22, yp22;
+ r.getCoords( &xp12, &yp12, &xp22, &yp22 );
+
+ QVERIFY( xp1 == xp12 );
+ QVERIFY( yp1 == yp12 );
+ QVERIFY( xp2 == xp22 );
+ QVERIFY( yp2 == yp22 );
+}
+
+void tst_QRect::newMoveLeft_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("left");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ // QTest::newRow( "InvalidQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "InvalidQRect_MiddleNegativeInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN/2,0), QPoint(INT_MIN/2-1,-1) );
+ QTest::newRow( "InvalidQRect_ZeroInt" ) << getQRectCase( InvalidQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0,0), QPoint(-1,-1) );
+ QTest::newRow( "InvalidQRect_MiddlePositiveInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MAX/2,0), QPoint(INT_MAX/2-1,-1) );
+ QTest::newRow( "InvalidQRect_MaximumInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(INT_MAX,0), QPoint(INT_MAX-1,-1) );
+ QTest::newRow( "InvalidQRect_RandomInt" ) << getQRectCase( InvalidQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(4953,0), QPoint(4952,-1) );
+ }
+
+ {
+ QTest::newRow( "SmallestQRect_MinimumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(INT_MIN,1), QPoint(INT_MIN,1) );
+ QTest::newRow( "SmallestQRect_MiddleNegativeInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN/2,1), QPoint(INT_MIN/2,1) );
+ QTest::newRow( "SmallestQRect_ZeroInt" ) << getQRectCase( SmallestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0,1), QPoint(0,1) );
+ QTest::newRow( "SmallestQRect_MiddlePositiveInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MAX/2,1), QPoint(INT_MAX/2,1) );
+ QTest::newRow( "SmallestQRect_MaximumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(INT_MAX,1), QPoint(INT_MAX,1) );
+ QTest::newRow( "SmallestQRect_RandomInt" ) << getQRectCase( SmallestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(4953,1), QPoint(4953,1) );
+ }
+
+ {
+ QTest::newRow( "MiddleQRect_MinimumInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(INT_MIN, INT_MIN / 2 ), QPoint( (INT_MAX/2)+(INT_MIN-INT_MIN/2), INT_MAX / 2 ) );
+ QTest::newRow( "MiddleQRect_MiddleNegativeInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN/2, INT_MIN / 2 ), QPoint((INT_MAX/2)+(INT_MIN/2-INT_MIN/2), INT_MAX / 2 ) );
+ QTest::newRow( "MiddleQRect_ZeroInt" ) << getQRectCase( MiddleQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0, INT_MIN / 2 ), QPoint((INT_MAX/2)+(0-INT_MIN/2),INT_MAX/2));
+ // QTest::newRow( "MiddleQRect_MiddlePositiveInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "MiddleQRect_MaximumInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "MiddleQRect_RandomInt" ) -- Not tested as it would cause an overflow
+ }
+
+ {
+ QTest::newRow( "LargestQRect_MinimumInt" ) << getQRectCase( LargestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(INT_MIN, 0), QPoint((INT_MAX-1)+INT_MIN, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_MiddleNegativeInt" ) << getQRectCase( LargestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN/2, 0), QPoint((INT_MAX-1)+(INT_MIN/2), INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_ZeroInt" ) << getQRectCase( LargestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0, 0), QPoint(INT_MAX-1,INT_MAX - 1 ) );
+ // QTest::newRow( "LargestQRect_MiddlePositiveInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "LargestQRect_MaximumInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "LargestQRect_RandomInt" ) -- Not tested as it would cause an overflow
+ }
+
+ {
+ // QTest::newRow( "SmallestCoordQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "SmallestCoordQRect_MiddleNegativeInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, INT_MIN ), QPoint(INT_MIN/2, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_ZeroInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, INT_MIN ), QPoint(0, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_MiddlePositiveInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, INT_MIN ), QPoint(INT_MAX/2, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_MaximumInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MAX, INT_MIN ), QPoint(INT_MAX, INT_MIN ) );
+ QTest::newRow( "SmallestCoordQRect_RandomInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, INT_MIN ), QPoint(4953, INT_MIN ) );
+ }
+
+ {
+ // QTest::newRow( "LargestCoordQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "LargestCoordQRect_MiddleNegativeInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, INT_MIN ), QPoint(INT_MIN/2-1, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_ZeroInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, INT_MIN ), QPoint(-1, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_MiddlePositiveInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, INT_MIN ), QPoint(INT_MAX/2-1, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_MaximumInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MAX, INT_MIN ), QPoint(INT_MAX-1, INT_MAX ) );
+ QTest::newRow( "LargestCoordQRect_RandomInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, INT_MIN ), QPoint(4952, INT_MAX ) );
+ }
+
+ {
+ QTest::newRow( "RandomQRect_MinimumInt" ) << getQRectCase( RandomQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN, 200 ), QPoint(10+INT_MIN, 215 ) );
+ QTest::newRow( "RandomQRect_MiddleNegativeInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, 200 ), QPoint(10+INT_MIN/2, 215 ) );
+ QTest::newRow( "RandomQRect_ZeroInt" ) << getQRectCase( RandomQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, 200 ), QPoint(10, 215 ) );
+ QTest::newRow( "RandomQRect_MiddlePositiveInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, 200 ), QPoint(10+INT_MAX/2, 215 ) );
+ // QTest::newRow( "RandomQRect_MaximumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "RandomQRect_RandomInt" ) << getQRectCase( RandomQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, 200 ), QPoint(4963, 215 ) );
+ }
+
+ {
+ // QTest::newRow( "NegativeSizeQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "NegativeSizeQRect_MiddleNegativeInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, 1 ), QPoint(INT_MIN/2-11, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_ZeroInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, 1 ), QPoint(-11, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_MiddlePositiveInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, 1 ), QPoint(INT_MAX/2-11, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_MaximumInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MAX, 1 ), QPoint(INT_MAX-11, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_RandomInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, 1 ), QPoint(4942, -10 ) );
+ }
+
+ {
+ QTest::newRow( "NegativePointQRect_MinimumInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint( INT_MIN, -10 ), QPoint(4+INT_MIN, -6 ) );
+ QTest::newRow( "NegativePointQRect_MiddleNegativeInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, -10 ), QPoint(4+INT_MIN/2, -6 ) );
+ QTest::newRow( "NegativePointQRect_ZeroInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, -10 ), QPoint(4, -6 ) );
+ QTest::newRow( "NegativePointQRect_MiddlePositiveInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, -10 ), QPoint(4+INT_MAX/2, -6 ) );
+ // QTest::newRow( "NegativePointQRect_MaximumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NegativePointQRect_RandomInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, -10 ), QPoint(4957, -6 ) );
+ }
+
+ {
+ // QTest::newRow( "NullQRect_MinimumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NullQRect_MiddleNegativeInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, 5 ), QPoint(INT_MIN/2-1, 4 ) );
+ QTest::newRow( "NullQRect_ZeroInt" ) << getQRectCase( NullQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, 5 ), QPoint(-1, 4 ) );
+ QTest::newRow( "NullQRect_MiddlePositiveInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, 5), QPoint(INT_MAX/2-1, 4 ) );
+ QTest::newRow( "NullQRect_MaximumInt" ) << getQRectCase( NullQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MAX, 5 ), QPoint(INT_MAX-1, 4 ) );
+ QTest::newRow( "NullQRect_RandomInt" ) << getQRectCase( NullQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, 5 ), QPoint(4952, 4 ) );
+ }
+
+ {
+ // QTest::newRow( "EmptyQRect_MinimumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "EmptyQRect_MiddleNegativeInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint( INT_MIN/2, 2 ), QPoint(INT_MIN/2-1, 1 ) );
+ QTest::newRow( "EmptyQRect_ZeroInt" ) << getQRectCase( EmptyQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint( 0, 2 ), QPoint(-1, 1 ) );
+ QTest::newRow( "EmptyQRect_MiddlePositiveInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint( INT_MAX/2, 2 ), QPoint(INT_MAX/2-1, 1 ) );
+ QTest::newRow( "EmptyQRect_MaximumInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint( INT_MAX, 2 ), QPoint(INT_MAX-1, 1 ) );
+ QTest::newRow( "EmptyQRect_RandomInt" ) << getQRectCase( EmptyQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4953, 2 ), QPoint(4952, 1 ) );
+ }
+}
+
+void tst_QRect::newMoveLeft()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, left );
+ QFETCH( QRect, nr );
+
+ r.moveLeft( left );
+
+ QCOMPARE( r, nr );
+}
+
+void tst_QRect::newMoveTop_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("top");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ // QTest::newRow( "InvalidQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "InvalidQRect_MiddleNegativeInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(0,INT_MIN/2), QPoint(-1,INT_MIN/2-1) );
+ QTest::newRow( "InvalidQRect_ZeroInt" ) << getQRectCase( InvalidQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0,0), QPoint(-1,-1) );
+ QTest::newRow( "InvalidQRect_MiddlePositiveInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(0,INT_MAX/2), QPoint(-1,INT_MAX/2-1) );
+ QTest::newRow( "InvalidQRect_MaximumInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(0,INT_MAX), QPoint(-1,INT_MAX-1) );
+ QTest::newRow( "InvalidQRect_RandomInt" ) << getQRectCase( InvalidQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(0,4953), QPoint(-1,4952) );
+ }
+
+ {
+ QTest::newRow( "SmallestQRect_MinimumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(1,INT_MIN), QPoint(1,INT_MIN) );
+ QTest::newRow( "SmallestQRect_MiddleNegativeInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(1,INT_MIN/2), QPoint(1,INT_MIN/2) );
+ QTest::newRow( "SmallestQRect_ZeroInt" ) << getQRectCase( SmallestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(1,0), QPoint(1,0) );
+ QTest::newRow( "SmallestQRect_MiddlePositiveInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(1,INT_MAX/2), QPoint(1,INT_MAX/2) );
+ QTest::newRow( "SmallestQRect_MaximumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(1,INT_MAX), QPoint(1,INT_MAX) );
+ QTest::newRow( "SmallestQRect_RandomInt" ) << getQRectCase( SmallestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(1,4953), QPoint(1,4953) );
+ }
+
+ {
+ QTest::newRow( "MiddleQRect_MinimumInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(INT_MIN / 2,INT_MIN ), QPoint(INT_MAX / 2,(INT_MAX/2)+(INT_MIN-INT_MIN/2)) );
+ QTest::newRow( "MiddleQRect_MiddleNegativeInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN / 2,INT_MIN / 2), QPoint(INT_MAX / 2,(INT_MAX/2)+(INT_MIN/2-INT_MIN/2)) );
+ QTest::newRow( "MiddleQRect_ZeroInt" ) << getQRectCase( MiddleQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(INT_MIN / 2,0 ), QPoint(INT_MAX/2,(INT_MAX/2)+(0-INT_MIN/2)));
+ // QTest::newRow( "MiddleQRect_MiddlePositiveInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "MiddleQRect_MaximumInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "MiddleQRect_RandomInt" ) -- Not tested as it would cause an overflow
+ }
+
+ {
+ QTest::newRow( "LargestQRect_MinimumInt" ) << getQRectCase( LargestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(0,INT_MIN), QPoint(INT_MAX - 1,(INT_MAX-1)+INT_MIN) );
+ QTest::newRow( "LargestQRect_MiddleNegativeInt" ) << getQRectCase( LargestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(0,INT_MIN/2), QPoint(INT_MAX - 1,(INT_MAX-1)+(INT_MIN/2)) );
+ QTest::newRow( "LargestQRect_ZeroInt" ) << getQRectCase( LargestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0, 0), QPoint(INT_MAX-1,INT_MAX - 1) );
+ // QTest::newRow( "LargestQRect_MiddlePositiveInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "LargestQRect_MaximumInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "LargestQRect_RandomInt" ) -- Not tested as it would cause an overflow
+ }
+
+ {
+ // QTest::newRow( "SmallestCoordQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "SmallestCoordQRect_MiddleNegativeInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN,INT_MIN/2), QPoint(INT_MIN,INT_MIN/2) );
+ QTest::newRow( "SmallestCoordQRect_ZeroInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(INT_MIN,0), QPoint(INT_MIN,0) );
+ QTest::newRow( "SmallestCoordQRect_MiddlePositiveInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MIN,INT_MAX/2), QPoint(INT_MIN,INT_MAX/2) );
+ QTest::newRow( "SmallestCoordQRect_MaximumInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(INT_MIN,INT_MAX), QPoint(INT_MIN,INT_MAX) );
+ QTest::newRow( "SmallestCoordQRect_RandomInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(INT_MIN,4953), QPoint(INT_MIN,4953) );
+ }
+
+ {
+ // QTest::newRow( "LargestCoordQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "LargestCoordQRect_MiddleNegativeInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN,INT_MIN/2), QPoint(INT_MAX,INT_MIN/2-1) );
+ QTest::newRow( "LargestCoordQRect_ZeroInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(INT_MIN,0), QPoint(INT_MAX,-1) );
+ QTest::newRow( "LargestCoordQRect_MiddlePositiveInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MIN,INT_MAX/2), QPoint(INT_MAX,INT_MAX/2-1) );
+ QTest::newRow( "LargestCoordQRect_MaximumInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(INT_MIN,INT_MAX), QPoint(INT_MAX,INT_MAX-1) );
+ QTest::newRow( "LargestCoordQRect_RandomInt" ) << getQRectCase( LargestCoordQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(INT_MIN,4953), QPoint(INT_MAX,4952) );
+ }
+
+ {
+ QTest::newRow( "RandomQRect_MinimumInt" ) << getQRectCase( RandomQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(100,INT_MIN), QPoint(110,15+INT_MIN) );
+ QTest::newRow( "RandomQRect_MiddleNegativeInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(100,INT_MIN/2), QPoint(110,15+INT_MIN/2) );
+ QTest::newRow( "RandomQRect_ZeroInt" ) << getQRectCase( RandomQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(100, 0), QPoint(110,15) );
+ QTest::newRow( "RandomQRect_MiddlePositiveInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(100,INT_MAX/2), QPoint(110,15+INT_MAX/2) );
+ // QTest::newRow( "RandomQRect_MaximumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "RandomQRect_RandomInt" ) << getQRectCase( RandomQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(100,4953), QPoint(110,4968) );
+ }
+
+ {
+ // QTest::newRow( "NegativeSizeQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "NegativeSizeQRect_MiddleNegativeInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(1,INT_MIN/2), QPoint(-10,INT_MIN/2-11) );
+ QTest::newRow( "NegativeSizeQRect_ZeroInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(1,0), QPoint(-10,-11) );
+ QTest::newRow( "NegativeSizeQRect_MiddlePositiveInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(1,INT_MAX/2), QPoint(-10,INT_MAX/2-11) );
+ QTest::newRow( "NegativeSizeQRect_MaximumInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(1,INT_MAX), QPoint(-10,INT_MAX-11) );
+ QTest::newRow( "NegativeSizeQRect_RandomInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(1,4953), QPoint(-10,4942) );
+ }
+
+ {
+ QTest::newRow( "NegativePointQRect_MinimumInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(-10,INT_MIN), QPoint(-6,4+INT_MIN) );
+ QTest::newRow( "NegativePointQRect_MiddleNegativeInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(-10,INT_MIN/2), QPoint(-6,4+INT_MIN/2) );
+ QTest::newRow( "NegativePointQRect_ZeroInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(-10,0), QPoint(-6,4) );
+ QTest::newRow( "NegativePointQRect_MiddlePositiveInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(-10,INT_MAX/2), QPoint(-6,4+INT_MAX/2) );
+ // QTest::newRow( "NegativePointQRect_MaximumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NegativePointQRect_RandomInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(-10,4953), QPoint(-6,4957) );
+ }
+
+ {
+ // QTest::newRow( "NullQRect_MinimumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NullQRect_MiddleNegativeInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(5,INT_MIN/2), QPoint(4,INT_MIN/2-1) );
+ QTest::newRow( "NullQRect_ZeroInt" ) << getQRectCase( NullQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(5,0), QPoint(4,-1) );
+ QTest::newRow( "NullQRect_MiddlePositiveInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(5,INT_MAX/2), QPoint(4,INT_MAX/2-1) );
+ QTest::newRow( "NullQRect_MaximumInt" ) << getQRectCase( NullQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(5,INT_MAX), QPoint(4,INT_MAX-1) );
+ QTest::newRow( "NullQRect_RandomInt" ) << getQRectCase( NullQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(5,4953), QPoint(4,4952) );
+ }
+
+ {
+ // QTest::newRow( "EmptyQRect_MinimumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "EmptyQRect_MiddleNegativeInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(2,INT_MIN/2), QPoint(1,INT_MIN/2-1) );
+ QTest::newRow( "EmptyQRect_ZeroInt" ) << getQRectCase( EmptyQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(2,0), QPoint(1,-1) );
+ QTest::newRow( "EmptyQRect_MiddlePositiveInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(2,INT_MAX/2), QPoint(1,INT_MAX/2-1) );
+ QTest::newRow( "EmptyQRect_MaximumInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(2,INT_MAX), QPoint(1,INT_MAX-1) );
+ QTest::newRow( "EmptyQRect_RandomInt" ) << getQRectCase( EmptyQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(2,4953), QPoint(1,4952) );
+ }
+}
+
+void tst_QRect::newMoveTop()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, top );
+ QFETCH( QRect, nr );
+
+ r.moveTop( top );
+
+ QCOMPARE( r, nr );
+}
+
+void tst_QRect::newMoveRight_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("right");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ // QTest::newRow( "InvalidQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "InvalidQRect_MiddleNegativeInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN/2+1,0), QPoint(INT_MIN/2,-1) );
+ QTest::newRow( "InvalidQRect_ZeroInt" ) << getQRectCase( InvalidQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(1,0), QPoint(0,-1) );
+ QTest::newRow( "InvalidQRect_MiddlePositiveInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MAX/2+1,0), QPoint(INT_MAX/2,-1) );
+ // QTest::newRow( "InvalidQRect_MaximumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "InvalidQRect_RandomInt" ) << getQRectCase( InvalidQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(4954,0), QPoint(4953,-1) );
+ }
+
+ {
+ QTest::newRow( "SmallestQRect_MinimumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(INT_MIN,1), QPoint(INT_MIN,1) );
+ QTest::newRow( "SmallestQRect_MiddleNegativeInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN/2,1), QPoint(INT_MIN/2,1) );
+ QTest::newRow( "SmallestQRect_ZeroInt" ) << getQRectCase( SmallestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0,1), QPoint(0,1) );
+ QTest::newRow( "SmallestQRect_MiddlePositiveInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MAX/2,1), QPoint(INT_MAX/2,1) );
+ QTest::newRow( "SmallestQRect_MaximumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(INT_MAX,1), QPoint(INT_MAX,1) );
+ QTest::newRow( "SmallestQRect_RandomInt" ) << getQRectCase( SmallestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(4953,1), QPoint(4953,1) );
+ }
+
+ {
+ // QTest::newRow( "MiddleQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "MiddleQRect_MiddleNegativeInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "MiddleQRect_ZeroInt" ) << getQRectCase( MiddleQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(INT_MIN/2+(0-INT_MAX/2),INT_MIN/2), QPoint(0,INT_MAX/2));
+ QTest::newRow( "MiddleQRect_MiddlePositiveInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect(QPoint(INT_MIN/2+(INT_MAX/2-INT_MAX/2),INT_MIN/2),QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow( "MiddleQRect_MaximumInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MaximumInt )
+ << QRect(QPoint(INT_MIN/2+(INT_MAX-INT_MAX/2),INT_MIN/2),QPoint(INT_MAX,INT_MAX/2));
+ QTest::newRow( "MiddleQRect_RandomInt" ) << getQRectCase( MiddleQRect ) << getIntCase( RandomInt )
+ << QRect(QPoint(INT_MIN/2+(4953-INT_MAX/2),INT_MIN/2),QPoint(4953,INT_MAX/2));
+ }
+
+ {
+ // QTest::newRow( "LargestQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "LargestQRect_MiddleNegativeInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "LargestQRect_ZeroInt" ) << getQRectCase( LargestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0-(INT_MAX-1), 0), QPoint(0, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_MiddlePositiveInt" ) << getQRectCase( LargestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MAX/2-(INT_MAX-1), 0), QPoint(INT_MAX/2, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_MaximumInt" ) << getQRectCase( LargestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(INT_MAX-(INT_MAX-1), 0), QPoint(INT_MAX, INT_MAX - 1 ) );
+ QTest::newRow( "LargestQRect_RandomInt" ) << getQRectCase( LargestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(4953-(INT_MAX-1), 0), QPoint(4953, INT_MAX - 1 ) );
+ }
+
+ {
+ QTest::newRow( "SmallestCoordQRect_MinimumInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MinimumInt )
+ << QRect(QPoint(INT_MIN+(INT_MIN-INT_MIN),INT_MIN), QPoint(INT_MIN,INT_MIN) );
+ QTest::newRow( "SmallestCoordQRect_MiddleNegativeInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect(QPoint(INT_MIN+(INT_MIN/2-INT_MIN),INT_MIN), QPoint(INT_MIN/2, INT_MIN ) );
+ // QTest::newRow( "SmallestCoordQRect_ZeroInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "SmallestCoordQRect_MiddlePositiveInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "SmallestCoordQRect_MaximumInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "SmallestCoordQRect_RandomInt" ) -- Not tested as it would cause an overflow
+ }
+
+ {
+ // LargestQRect cases -- Not tested as it would cause an overflow
+ }
+
+ {
+ // QTest::newRow( "RandomQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "RandomQRect_MiddleNegativeInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(100+(INT_MIN/2-110), 200 ), QPoint(INT_MIN/2, 215 ) );
+ QTest::newRow( "RandomQRect_ZeroInt" ) << getQRectCase( RandomQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(-10, 200 ), QPoint(0, 215 ) );
+ QTest::newRow( "RandomQRect_MiddlePositiveInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(100+(INT_MAX/2-110), 200 ), QPoint(INT_MAX/2, 215 ) );
+ QTest::newRow( "RandomQRect_MaximumInt" ) << getQRectCase( RandomQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(100+(INT_MAX-110), 200 ), QPoint(INT_MAX, 215 ) );
+ QTest::newRow( "RandomQRect_RandomInt" ) << getQRectCase( RandomQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(4943, 200 ), QPoint(4953, 215 ) );
+ }
+
+ {
+ QTest::newRow( "NegativeSizeQRect_MinimumInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(1+(INT_MIN-(-10)), 1 ), QPoint(INT_MIN, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_MiddleNegativeInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(1+(INT_MIN/2-(-10)), 1 ), QPoint(INT_MIN/2, -10 ) );
+ QTest::newRow( "NegativeSizeQRect_ZeroInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(11, 1 ), QPoint(0, -10 ) );
+ // QTest::newRow( "NegativeSizeQRect_MiddlePositiveInt" ) -- Not tested as this would cause an overflow
+ // QTest::newRow( "NegativeSizeQRect_MaximumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NegativeSizeQRect_RandomInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(4964, 1 ), QPoint(4953, -10 ) );
+ }
+
+ {
+ // QTest::newRow( "NegativePointQRect_MinimumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NegativePointQRect_MiddleNegativeInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint((-10)+(INT_MIN/2-(-6)), -10 ), QPoint(INT_MIN/2, -6 ) );
+ QTest::newRow( "NegativePointQRect_ZeroInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(-4, -10 ), QPoint(0, -6 ) );
+ QTest::newRow( "NegativePointQRect_MiddlePositiveInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint((-10)+(INT_MAX/2-(-6)), -10 ), QPoint(INT_MAX/2, -6 ) );
+ // QTest::newRow( "NegativePointQRect_MaximumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NegativePointQRect_RandomInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(4949, -10 ), QPoint(4953, -6 ) );
+ }
+
+ {
+ // QTest::newRow( "NullQRect_MinimumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NullQRect_MiddleNegativeInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(5+(INT_MIN/2-4), 5 ), QPoint(INT_MIN/2, 4 ) );
+ QTest::newRow( "NullQRect_ZeroInt" ) << getQRectCase( NullQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(1, 5 ), QPoint(0, 4 ) );
+ QTest::newRow( "NullQRect_MiddlePositiveInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(5+(INT_MAX/2-4), 5 ), QPoint(INT_MAX/2, 4 ) );
+ // QTest::newRow( "NullQRect_MaximumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NullQRect_RandomInt" ) << getQRectCase( NullQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(4954, 5 ), QPoint(4953, 4 ) );
+ }
+
+ {
+ QTest::newRow( "EmptyQRect_MinimumInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(INT_MIN+1,2 ), QPoint(INT_MIN, 1 ) );
+ QTest::newRow( "EmptyQRect_MiddleNegativeInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(INT_MIN/2+1, 2 ), QPoint(INT_MIN/2, 1 ) );
+ QTest::newRow( "EmptyQRect_ZeroInt" ) << getQRectCase( EmptyQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(1,2 ), QPoint(0, 1 ) );
+ QTest::newRow( "EmptyQRect_MiddlePositiveInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(INT_MAX/2+1,2 ), QPoint(INT_MAX/2, 1 ) );
+ // QTest::newRow( "EmptyQRect_MaximumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "EmptyQRect_RandomInt" ) << getQRectCase( EmptyQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint( 4954, 2 ), QPoint(4953, 1 ) );
+ }
+}
+
+void tst_QRect::newMoveRight()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, right );
+ QFETCH( QRect, nr );
+
+ r.moveRight( right );
+
+ QCOMPARE( r, nr );
+}
+
+void tst_QRect::newMoveBottom_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<int>("bottom");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ // QTest::newRow( "InvalidQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "InvalidQRect_MiddleNegativeInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(0,INT_MIN/2+1), QPoint(-1,INT_MIN/2) );
+ QTest::newRow( "InvalidQRect_ZeroInt" ) << getQRectCase( InvalidQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0,1), QPoint(-1,0) );
+ QTest::newRow( "InvalidQRect_MiddlePositiveInt" ) << getQRectCase( InvalidQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(0,INT_MAX/2+1), QPoint(-1,INT_MAX/2) );
+ // QTest::newRow( "InvalidQRect_MaximumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "InvalidQRect_RandomInt" ) << getQRectCase( InvalidQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(0,4954), QPoint(-1,4953) );
+ }
+
+ {
+ QTest::newRow( "SmallestQRect_MinimumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(1,INT_MIN), QPoint(1,INT_MIN) );
+ QTest::newRow( "SmallestQRect_MiddleNegativeInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(1,INT_MIN/2), QPoint(1,INT_MIN/2) );
+ QTest::newRow( "SmallestQRect_ZeroInt" ) << getQRectCase( SmallestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(1,0), QPoint(1,0) );
+ QTest::newRow( "SmallestQRect_MiddlePositiveInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(1,INT_MAX/2), QPoint(1,INT_MAX/2) );
+ QTest::newRow( "SmallestQRect_MaximumInt" ) << getQRectCase( SmallestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(1,INT_MAX), QPoint(1,INT_MAX) );
+ QTest::newRow( "SmallestQRect_RandomInt" ) << getQRectCase( SmallestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(1,4953), QPoint(1,4953) );
+ }
+
+ {
+ // QTest::newRow( "MiddleQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "MiddleQRect_MiddleNegativeInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "MiddleQRect_ZeroInt" ) << getQRectCase( MiddleQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(INT_MIN/2,INT_MIN/2+(0-INT_MAX/2)), QPoint(INT_MAX/2,0));
+ QTest::newRow( "MiddleQRect_MiddlePositiveInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2+(INT_MAX/2-INT_MAX/2)),QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow( "MiddleQRect_MaximumInt" ) << getQRectCase( MiddleQRect ) << getIntCase( MaximumInt )
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2+(INT_MAX-INT_MAX/2)),QPoint(INT_MAX/2,INT_MAX));
+ QTest::newRow( "MiddleQRect_RandomInt" ) << getQRectCase( MiddleQRect ) << getIntCase( RandomInt )
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2+(4953-INT_MAX/2)),QPoint(INT_MAX/2,4953));
+ }
+
+ {
+ // QTest::newRow( "LargestQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "LargestQRect_MiddleNegativeInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "LargestQRect_ZeroInt" ) << getQRectCase( LargestQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(0,0-(INT_MAX-1)), QPoint(INT_MAX - 1,0 ) );
+ QTest::newRow( "LargestQRect_MiddlePositiveInt" ) << getQRectCase( LargestQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(0,INT_MAX/2-(INT_MAX-1)), QPoint(INT_MAX - 1,INT_MAX/2 ) );
+ QTest::newRow( "LargestQRect_MaximumInt" ) << getQRectCase( LargestQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(0,INT_MAX-(INT_MAX-1)), QPoint(INT_MAX - 1,INT_MAX) );
+ QTest::newRow( "LargestQRect_RandomInt" ) << getQRectCase( LargestQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(0,4953-(INT_MAX-1)), QPoint(INT_MAX - 1,4953) );
+ }
+
+ {
+ QTest::newRow( "SmallestCoordQRect_MinimumInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MinimumInt )
+ << QRect(QPoint(INT_MIN,INT_MIN+(INT_MIN-INT_MIN)), QPoint(INT_MIN,INT_MIN) );
+ QTest::newRow( "SmallestCoordQRect_MiddleNegativeInt" ) << getQRectCase( SmallestCoordQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect(QPoint(INT_MIN,INT_MIN+(INT_MIN/2-INT_MIN)), QPoint(INT_MIN,INT_MIN/2) );
+ // QTest::newRow( "SmallestCoordQRect_ZeroInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "SmallestCoordQRect_MiddlePositiveInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "SmallestCoordQRect_MaximumInt" ) -- Not tested as it would cause an overflow
+ // QTest::newRow( "SmallestCoordQRect_RandomInt" ) -- Not tested as it would cause an overflow
+ }
+
+ {
+ // LargestQRect cases -- Not tested as it would cause an overflow
+ }
+
+ {
+ // QTest::newRow( "RandomQRect_MinimumInt" ) -- Not tested as it would cause an overflow
+ QTest::newRow( "RandomQRect_MiddleNegativeInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(100,200+(INT_MIN/2-215)), QPoint(110,INT_MIN/2) );
+ QTest::newRow( "RandomQRect_ZeroInt" ) << getQRectCase( RandomQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(100,-15), QPoint(110,0) );
+ QTest::newRow( "RandomQRect_MiddlePositiveInt" ) << getQRectCase( RandomQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(100,200+(INT_MAX/2-215)), QPoint(110,INT_MAX/2) );
+ QTest::newRow( "RandomQRect_MaximumInt" ) << getQRectCase( RandomQRect ) << getIntCase( MaximumInt )
+ << QRect( QPoint(100,200+(INT_MAX-215)), QPoint(110,INT_MAX) );
+ QTest::newRow( "RandomQRect_RandomInt" ) << getQRectCase( RandomQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(100,4938), QPoint(110,4953) );
+ }
+
+ {
+ QTest::newRow( "NegativeSizeQRect_MinimumInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(1,1+(INT_MIN-(-10))), QPoint(-10,INT_MIN));
+ QTest::newRow( "NegativeSizeQRect_MiddleNegativeInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(1,1+(INT_MIN/2-(-10))), QPoint(-10,INT_MIN/2));
+ QTest::newRow( "NegativeSizeQRect_ZeroInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(1,11), QPoint(-10,0) );
+ // QTest::newRow( "NegativeSizeQRect_MiddlePositiveInt" ) -- Not tested as this would cause an overflow
+ // QTest::newRow( "NegativeSizeQRect_MaximumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NegativeSizeQRect_RandomInt" ) << getQRectCase( NegativeSizeQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(1,4964), QPoint(-10,4953) );
+ }
+
+ {
+ // QTest::newRow( "NegativePointQRect_MinimumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NegativePointQRect_MiddleNegativeInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(-10,(-10)+(INT_MIN/2-(-6))), QPoint(-6,INT_MIN/2) );
+ QTest::newRow( "NegativePointQRect_ZeroInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(-10,-4), QPoint(-6,0) );
+ QTest::newRow( "NegativePointQRect_MiddlePositiveInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(-10,(-10)+(INT_MAX/2-(-6))), QPoint(-6,INT_MAX/2) );
+ // QTest::newRow( "NegativePointQRect_MaximumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NegativePointQRect_RandomInt" ) << getQRectCase( NegativePointQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(-10,4949), QPoint(-6,4953) );
+ }
+
+ {
+ // QTest::newRow( "NullQRect_MinimumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NullQRect_MiddleNegativeInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(5,5+(INT_MIN/2-4)), QPoint(4,INT_MIN/2) );
+ QTest::newRow( "NullQRect_ZeroInt" ) << getQRectCase( NullQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(5,1), QPoint(4,0) );
+ QTest::newRow( "NullQRect_MiddlePositiveInt" ) << getQRectCase( NullQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(5,5+(INT_MAX/2-4)), QPoint(4,INT_MAX/2) );
+ // QTest::newRow( "NullQRect_MaximumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "NullQRect_RandomInt" ) << getQRectCase( NullQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(5,4954), QPoint(4,4953) );
+ }
+
+ {
+ QTest::newRow( "EmptyQRect_MinimumInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MinimumInt )
+ << QRect( QPoint(2,INT_MIN+1), QPoint(1,INT_MIN) );
+ QTest::newRow( "EmptyQRect_MiddleNegativeInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddleNegativeInt )
+ << QRect( QPoint(2,INT_MIN/2+1), QPoint(1,INT_MIN/2) );
+ QTest::newRow( "EmptyQRect_ZeroInt" ) << getQRectCase( EmptyQRect ) << getIntCase( ZeroInt )
+ << QRect( QPoint(2,1), QPoint(1,0) );
+ QTest::newRow( "EmptyQRect_MiddlePositiveInt" ) << getQRectCase( EmptyQRect ) << getIntCase( MiddlePositiveInt )
+ << QRect( QPoint(2,INT_MAX/2+1), QPoint(1,INT_MAX/2) );
+ // QTest::newRow( "EmptyQRect_MaximumInt" ) -- Not tested as this would cause an overflow
+ QTest::newRow( "EmptyQRect_RandomInt" ) << getQRectCase( EmptyQRect ) << getIntCase( RandomInt )
+ << QRect( QPoint(2,4954), QPoint(1,4953) );
+ }
+}
+
+void tst_QRect::newMoveBottom()
+{
+ QFETCH( QRect, r );
+ QFETCH( int, bottom );
+ QFETCH( QRect, nr );
+
+ r.moveBottom( bottom );
+
+ QCOMPARE( r, nr );
+}
+
+void tst_QRect::newMoveTopLeft_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QPoint>("topLeft");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ QTest::newRow("InvalidQRect_NullQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(-1,-1));
+ // QTest::newRow("InvalidQRect_SmallestCoordQPoint") -- Not tested as this would cause an overflow
+ QTest::newRow("InvalidQRect_MiddleNegCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(-1+(INT_MIN/2-0),-1+(INT_MIN/2-0)));
+ QTest::newRow("InvalidQRect_MiddlePosCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(-1+(INT_MAX/2-0),-1+(INT_MAX/2-0)));
+ QTest::newRow("InvalidQRect_LargestCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(-1+(INT_MAX-0),-1+(INT_MAX-0)));
+ QTest::newRow("InvalidQRect_NegXQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(-13,6));
+ QTest::newRow("InvalidQRect_NegYQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(11,-8));
+ QTest::newRow("InvalidQRect_RandomQPoint") << getQRectCase(InvalidQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(11,6));
+ }
+
+ {
+ QTest::newRow("SmallestQRect_NullQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(0,0));
+ QTest::newRow("SmallestQRect_SmallestCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestQRect_MiddleNegCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("SmallestQRect_MiddlePosCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("SmallestQRect_LargestCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("SmallestQRect_NegXQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(-12,7));
+ QTest::newRow("SmallestQRect_NegYQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(12,-7));
+ QTest::newRow("SmallestQRect_RandomQPoint") << getQRectCase(SmallestQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("MiddleQRect_NullQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MAX/2+(0-INT_MIN/2),INT_MAX/2+(0-INT_MIN/2)));
+ QTest::newRow("MiddleQRect_SmallestCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MAX/2+(INT_MIN-INT_MIN/2),INT_MAX/2+(INT_MIN-INT_MIN/2)));
+ QTest::newRow("MiddleQRect_MiddleNegCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(INT_MAX/2,INT_MAX/2));
+ // QTest::newRow("MiddleQRect_MiddlePosCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("MiddleQRect_LargestCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("MiddleQRect_NegXQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("MiddleQRect_NegYQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("MiddleQRect_RandomQPoint") -- Not tested as it would cause an overflow
+ }
+
+ {
+ QTest::newRow("LargestQRect_NullQPoint") << getQRectCase(LargestQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MAX-1,INT_MAX-1));
+ QTest::newRow("LargestQRect_SmallestCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MAX-1+INT_MIN,INT_MAX-1+INT_MIN));
+ // QTest::newRow("LargestQRect_MiddleNegCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestQRect_MiddlePosCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestQRect_LargestCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestQRect_NegXQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestQRect_NegYQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestQRect_RandomQPoint") -- Not tested as it would cause an overflow
+ }
+
+ {
+ // QTest::newRow("SmallestCoordQRect_NullQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("SmallestCoordQRect_SmallestCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_MiddleNegCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(INT_MIN+(INT_MIN/2-INT_MIN),INT_MIN+(INT_MIN/2-INT_MIN)));
+ // QTest::newRow("SmallestCoordQRect_MiddlePosCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("SmallestCoordQRect_LargestCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("SmallestCoordQRect_NegXQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("SmallestCoordQRect_NegYQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("SmallestCoordQRect_RandomQPoint") -- Not tested as it would cause an overflow
+ }
+
+ {
+ QTest::newRow("LargestCoordQRect_NullQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(INT_MAX+(0-INT_MIN),INT_MAX+(0-INT_MIN)));
+ QTest::newRow("LargestCoordQRect_SmallestCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MAX,INT_MAX));
+ // QTest::newRow("LargestCoordQRect_MiddleNegCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestCoordQRect_MiddlePosCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestCoordQRect_LargestCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestCoordQRect_NegXQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestCoordQRect_NegYQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestCoordQRect_RandomQPoint") -- Not tested as it would cause an overflow
+ }
+
+ {
+ QTest::newRow("RandomQRect_NullQPoint") << getQRectCase(RandomQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(10,15));
+ // QTest::newRow("RandomQRect_SmallestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("RandomQRect_MiddleNegCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(110+(INT_MIN/2-100),215+(INT_MIN/2-200)));
+ QTest::newRow("RandomQRect_MiddlePosCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(110+(INT_MAX/2-100),215+(INT_MAX/2-200)));
+ // QTest::newRow("RandomQRect_LargestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("RandomQRect_NegXQPoint") << getQRectCase(RandomQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(-2,22));
+ QTest::newRow("RandomQRect_NegYQPoint") << getQRectCase(RandomQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(22,8));
+ QTest::newRow("RandomQRect_RandomQPoint") << getQRectCase(RandomQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(22,22));
+ }
+
+ {
+ QTest::newRow("NegativeSizeQRect_NullQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(-11,-11));
+ // QTest::newRow("NegativeSizeQRect_SmallestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("NegativeSizeQRect_MiddleNegCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint(-10+((INT_MIN/2)-1),-10+((INT_MIN/2)-1)));
+ QTest::newRow("NegativeSizeQRect_MiddlePosCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint(-10+((INT_MAX/2)-1),-10+((INT_MAX/2)-1)));
+ // QTest::newRow("NegativeSizeQRect_LargestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("NegativeSizeQRect_NegXQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(-23,-4));
+ QTest::newRow("NegativeSizeQRect_NegYQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(1,-18));
+ QTest::newRow("NegativeSizeQRect_RandomQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(1,-4));
+ }
+
+ {
+ QTest::newRow("NegativePointQRect_NullQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(4,4));
+ QTest::newRow("NegativePointQRect_SmallestCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN,INT_MIN), QPoint(INT_MIN+4,INT_MIN+4));
+ QTest::newRow("NegativePointQRect_MiddleNegCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint((INT_MIN/2)+4,(INT_MIN/2)+4));
+ QTest::newRow("NegativePointQRect_MiddlePosCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint((INT_MAX/2)+4,(INT_MAX/2)+4));
+ // QTest::newRow("NegativePointQRect_LargestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("NegativePointQRect_NegXQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(-8,11));
+ QTest::newRow("NegativePointQRect_NegYQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(16,-3));
+ QTest::newRow("NegativePointQRect_RandomQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(16,11));
+ }
+
+ {
+ QTest::newRow("NullQRect_NullQPoint") << getQRectCase(NullQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(-1,-1));
+ // QTest::newRow("NullQRect_SmallestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("NullQRect_MiddleNegCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint((INT_MIN/2)-1,(INT_MIN/2)-1));
+ QTest::newRow("NullQRect_MiddlePosCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint((INT_MAX/2)-1,(INT_MAX/2)-1));
+ QTest::newRow("NullQRect_LargestCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(INT_MAX-1,INT_MAX-1));
+ QTest::newRow("NullQRect_NegXQPoint") << getQRectCase(NullQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(-13,6));
+ QTest::newRow("NullQRect_NegYQPoint") << getQRectCase(NullQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(11,-8));
+ QTest::newRow("NullQRect_RandomQPoint") << getQRectCase(NullQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(11,6));
+ }
+
+ {
+ QTest::newRow("EmptyQRect_NullQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0,0), QPoint(-1,-1));
+ // QTest::newRow("EmptyQRect_SmallestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("EmptyQRect_MiddleNegCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN/2,INT_MIN/2), QPoint((INT_MIN/2)-1,(INT_MIN/2)-1));
+ QTest::newRow("EmptyQRect_MiddlePosCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MAX/2,INT_MAX/2), QPoint((INT_MAX/2)-1,(INT_MAX/2)-1));
+ QTest::newRow("EmptyQRect_LargestCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MAX,INT_MAX), QPoint(INT_MAX-1,INT_MAX-1));
+ QTest::newRow("EmptyQRect_NegXQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(-12,7), QPoint(-13,6));
+ QTest::newRow("EmptyQRect_NegYQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(12,-7), QPoint(11,-8));
+ QTest::newRow("EmptyQRect_RandomQPoint") << getQRectCase(EmptyQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(12,7), QPoint(11,6));
+ }
+}
+
+void tst_QRect::newMoveTopLeft()
+{
+ QFETCH(QRect,r);
+ QFETCH(QPoint,topLeft);
+ QFETCH(QRect,nr);
+
+ r.moveTopLeft(topLeft);
+
+ QCOMPARE(r,nr);
+}
+
+void tst_QRect::newMoveBottomRight_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QPoint>("bottomRight");
+ QTest::addColumn<QRect>("nr");
+
+ {
+ QTest::newRow("InvalidQRect_NullQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0+(0-(-1)),0+(0-(-1))), QPoint(0,0));
+ QTest::newRow("InvalidQRect_SmallestCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(0+(INT_MIN-(-1)),0+(INT_MIN-(-1))), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("InvalidQRect_MiddleNegCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(0+((INT_MIN/2)-(-1)),0+((INT_MIN/2)-(-1))), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("InvalidQRect_MiddlePosCoordQPoint") << getQRectCase(InvalidQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(0+((INT_MAX/2)-(-1)),0+((INT_MAX/2)-(-1))), QPoint(INT_MAX/2,INT_MAX/2));
+ // QTest::newRow("InvalidQRect_LargestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("InvalidQRect_NegXQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(0+(-12-(-1)),0+(7-(-1))), QPoint(-12,7));
+ QTest::newRow("InvalidQRect_NegYQPoint") << getQRectCase(InvalidQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(0+(12-(-1)),0+(-7-(-1))), QPoint(12,-7));
+ QTest::newRow("InvalidQRect_RandomQPoint") << getQRectCase(InvalidQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(0+(12-(-1)),0+(7-(-1))), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("SmallestQRect_NullQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(1+(0-1),1+(0-1)), QPoint(0,0));
+ // QTest::newRow("SmallestQRect_SmallestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("SmallestQRect_MiddleNegCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(1+((INT_MIN/2)-1),1+((INT_MIN/2)-1)), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("SmallestQRect_MiddlePosCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(1+((INT_MAX/2)-1),1+((INT_MAX/2)-1)), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("SmallestQRect_LargestCoordQPoint") << getQRectCase(SmallestQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(1+(INT_MAX-1),1+(INT_MAX-1)), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("SmallestQRect_NegXQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(1+(-12-1),1+(7-1)), QPoint(-12,7));
+ QTest::newRow("SmallestQRect_NegYQPoint") << getQRectCase(SmallestQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(1+(12-1),1+(-7-1)), QPoint(12,-7));
+ QTest::newRow("SmallestQRect_RandomQPoint") << getQRectCase(SmallestQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(1+(12-1),1+(7-1)), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("MiddleQRect_NullQPoint") << getQRectCase(MiddleQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(INT_MIN/2+(0-(INT_MAX/2)),INT_MIN/2+(0-(INT_MAX/2))), QPoint(0,0));
+ // QTest::newRow("MiddleQRect_SmallestCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("MiddleQRect_MiddleNegCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("MiddleQRect_MiddlePosCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(INT_MIN/2+((INT_MAX/2)-(INT_MAX/2)),INT_MIN/2+((INT_MAX/2)-(INT_MAX/2))), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("MiddleQRect_LargestCoordQPoint") << getQRectCase(MiddleQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MIN/2+(INT_MAX-(INT_MAX/2)),INT_MIN/2+(INT_MAX-(INT_MAX/2))), QPoint(INT_MAX,INT_MAX));
+ // QTest::newRow("MiddleQRect_NegXQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("MiddleQRect_NegYQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("MiddleQRect_RandomQPoint") << getQRectCase(MiddleQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(INT_MIN/2+(12-(INT_MAX/2)),INT_MIN/2+(7-(INT_MAX/2))), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("LargestQRect_NullQPoint") << getQRectCase(LargestQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(0+(0-(INT_MAX-1)),0+(0-(INT_MAX-1))), QPoint(0,0));
+ // QTest::newRow("LargestQRect_SmallestCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestQRect_MiddleNegCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("LargestQRect_MiddlePosCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(0+((INT_MAX/2)-(INT_MAX-1)),0+((INT_MAX/2)-(INT_MAX-1))), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("LargestQRect_LargestCoordQPoint") << getQRectCase(LargestQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(0+(INT_MAX-(INT_MAX-1)),0+(INT_MAX-(INT_MAX-1))), QPoint(INT_MAX,INT_MAX));
+ // QTest::newRow("LargestQRect_NegXQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestQRect_NegYQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("LargestQRect_RandomQPoint") << getQRectCase(LargestQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(0+(12-(INT_MAX-1)),0+(7-(INT_MAX-1))), QPoint(12,7));
+ }
+
+ {
+ // QTest::newRow("SmallestCoordQRect_NullQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("SmallestCoordQRect_SmallestCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(INT_MIN+(INT_MIN-INT_MIN),INT_MIN+(INT_MIN-INT_MIN)), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("SmallestCoordQRect_MiddleNegCoordQPoint") << getQRectCase(SmallestCoordQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(INT_MIN+((INT_MIN/2)-INT_MIN),INT_MIN+((INT_MIN/2)-INT_MIN)), QPoint(INT_MIN/2,INT_MIN/2));
+ // QTest::newRow("SmallestCoordQRect_MiddlePosCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("SmallestCoordQRect_LargestCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("SmallestCoordQRect_NegXQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("SmallestCoordQRect_NegYQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("SmallestCoordQRect_RandomQPoint") -- Not tested as it would cause an overflow
+ }
+
+ {
+ // QTest::newRow("LargestCoordQRect_NullQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestCoordQRect_SmallestCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestCoordQRect_MiddleNegCoordQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestCoordQRect_MiddlePosCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("LargestCoordQRect_LargestCoordQPoint") << getQRectCase(LargestCoordQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(INT_MIN+(INT_MAX-INT_MAX),INT_MIN+(INT_MAX-INT_MAX)), QPoint(INT_MAX,INT_MAX));
+ // QTest::newRow("LargestCoordQRect_NegXQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestCoordQRect_NegYQPoint") -- Not tested as it would cause an overflow
+ // QTest::newRow("LargestCoordQRect_RandomQPoint") -- Not tested as it would cause an overflow
+ }
+
+ {
+ QTest::newRow("RandomQRect_NullQPoint") << getQRectCase(RandomQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(100+(0-110),200+(0-215)), QPoint(0,0));
+ // QTest::newRow("RandomQRect_SmallestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("RandomQRect_MiddleNegCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(100+((INT_MIN/2)-110),200+((INT_MIN/2)-215)), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("RandomQRect_MiddlePosCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(100+((INT_MAX/2)-110),200+((INT_MAX/2)-215)), QPoint(INT_MAX/2,INT_MAX/2));
+ QTest::newRow("RandomQRect_LargestCoordQPoint") << getQRectCase(RandomQRect) << getQPointCase(LargestCoordQPoint)
+ << QRect(QPoint(100+(INT_MAX-110),200+(INT_MAX-215)), QPoint(INT_MAX,INT_MAX));
+ QTest::newRow("RandomQRect_NegXQPoint") << getQRectCase(RandomQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(100+(-12-110),200+(7-215)), QPoint(-12,7));
+ QTest::newRow("RandomQRect_NegYQPoint") << getQRectCase(RandomQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(100+(12-110),200+(-7-215)), QPoint(12,-7));
+ QTest::newRow("RandomQRect_RandomQPoint") << getQRectCase(RandomQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(100+(12-110),200+(7-215)), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("NegativeSizeQRect_NullQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(1+(0-(-10)),1+(0-(-10))), QPoint(0,0));
+ QTest::newRow("NegativeSizeQRect_SmallestCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(SmallestCoordQPoint)
+ << QRect(QPoint(1+(INT_MIN-(-10)),1+(INT_MIN-(-10))), QPoint(INT_MIN,INT_MIN));
+ QTest::newRow("NegativeSizeQRect_MiddleNegCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(1+((INT_MIN/2)-(-10)),1+((INT_MIN/2)-(-10))), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("NegativeSizeQRect_MiddlePosCoordQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(1+((INT_MAX/2)-(-10)),1+((INT_MAX/2)-(-10))), QPoint(INT_MAX/2,INT_MAX/2));
+ // QTest::newRow("NegativeSizeQRect_LargestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("NegativeSizeQRect_NegXQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(1+(-12-(-10)),1+(7-(-10))), QPoint(-12,7));
+ QTest::newRow("NegativeSizeQRect_NegYQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(1+(12-(-10)),1+(-7-(-10))), QPoint(12,-7));
+ QTest::newRow("NegativeSizeQRect_RandomQPoint") << getQRectCase(NegativeSizeQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(1+(12-(-10)),1+(7-(-10))), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("NegativePointQRect_NullQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint((-10)+(0-(-6)),(-10)+(0-(-6))), QPoint(0,0));
+ // QTest::newRow("NegativePointQRect_SmallestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("NegativePointQRect_MiddleNegCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint((-10)+((INT_MIN/2)-(-6)),(-10)+((INT_MIN/2)-(-6))), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("NegativePointQRect_MiddlePosCoordQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint((-10)+((INT_MAX/2)-(-6)),(-10)+((INT_MAX/2)-(-6))), QPoint(INT_MAX/2,INT_MAX/2));
+ // QTest::newRow("NegativePointQRect_LargestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("NegativePointQRect_NegXQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint((-10)+(-12-(-6)),(-10)+(7-(-6))), QPoint(-12,7));
+ QTest::newRow("NegativePointQRect_NegYQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint((-10)+(12-(-6)),(-10)+(-7-(-6))), QPoint(12,-7));
+ QTest::newRow("NegativePointQRect_RandomQPoint") << getQRectCase(NegativePointQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint((-10)+(12-(-6)),(-10)+(7-(-6))), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("NullQRect_NullQPoint") << getQRectCase(NullQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(5+(0-4),5+(0-4)), QPoint(0,0));
+ // QTest::newRow("NullQRect_SmallestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("NullQRect_MiddleNegCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(5+((INT_MIN/2)-4),5+((INT_MIN/2)-4)), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("NullQRect_MiddlePosCoordQPoint") << getQRectCase(NullQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(5+((INT_MAX/2)-4),5+((INT_MAX/2)-4)), QPoint(INT_MAX/2,INT_MAX/2));
+ // QTest::newRow("NullQRect_LargestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("NullQRect_NegXQPoint") << getQRectCase(NullQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(5+(-12-4),5+(7-4)), QPoint(-12,7));
+ QTest::newRow("NullQRect_NegYQPoint") << getQRectCase(NullQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(5+(12-4),5+(-7-4)), QPoint(12,-7));
+ QTest::newRow("NullQRect_RandomQPoint") << getQRectCase(NullQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(5+(12-4),5+(7-4)), QPoint(12,7));
+ }
+
+ {
+ QTest::newRow("EmptyQRect_NullQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NullQPoint)
+ << QRect(QPoint(2+(0-1),2+(0-1)), QPoint(0,0));
+ // QTest::newRow("EmptyQRect_SmallestCoordQPoint") -- Not tested as it would cause an overflow
+ QTest::newRow("EmptyQRect_MiddleNegCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(MiddleNegCoordQPoint)
+ << QRect(QPoint(2+((INT_MIN/2)-1),2+((INT_MIN/2)-1)), QPoint(INT_MIN/2,INT_MIN/2));
+ QTest::newRow("EmptyQRect_MiddlePosCoordQPoint") << getQRectCase(EmptyQRect) << getQPointCase(MiddlePosCoordQPoint)
+ << QRect(QPoint(2+((INT_MAX/2)-1),2+((INT_MAX/2)-1)), QPoint(INT_MAX/2,INT_MAX/2));
+ // QTest::newRow("EmptyQRect_LargestCoordQPoint") << getQRectCase(EmptyQRect) -- Not tested as it would cause an overflow
+ QTest::newRow("EmptyQRect_NegXQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NegXQPoint)
+ << QRect(QPoint(2+(-12-1),2+(7-1)), QPoint(-12,7));
+ QTest::newRow("EmptyQRect_NegYQPoint") << getQRectCase(EmptyQRect) << getQPointCase(NegYQPoint)
+ << QRect(QPoint(2+(12-1),2+(-7-1)), QPoint(12,-7));
+ QTest::newRow("EmptyQRect_RandomQPoint") << getQRectCase(EmptyQRect) << getQPointCase(RandomQPoint)
+ << QRect(QPoint(2+(12-1),2+(7-1)), QPoint(12,7));
+ }
+}
+
+void tst_QRect::newMoveBottomRight()
+{
+ QFETCH(QRect,r);
+ QFETCH(QPoint,bottomRight);
+ QFETCH(QRect,nr);
+
+ r.moveBottomRight(bottomRight);
+
+ QCOMPARE(r,nr);
+}
+
+
+void tst_QRect::translate_data()
+{
+ QTest::addColumn<QRect>("r");
+ QTest::addColumn<QPoint>("delta");
+ QTest::addColumn<QRect>("result");
+
+ QTest::newRow("Case 1") << QRect(10,20,5,15) << QPoint(3,7) << QRect(13,27,5,15);
+ QTest::newRow("Case 2") << QRect(0,0,-1,-1) << QPoint(3,7) << QRect(3,7,-1,-1);
+ QTest::newRow("Case 3") << QRect(0,0,-1,-1) << QPoint(0,0) << QRect(0,0,-1,-1);
+ QTest::newRow("Case 4") << QRect(10,20,5,15) << QPoint(3,0) << QRect(13,20, 5,15);
+ QTest::newRow("Case 5") << QRect(10,20,5,15) << QPoint(0,7) << QRect(10,27,5,15);
+ QTest::newRow("Case 6") << QRect(10,20,5,15) << QPoint(-3,7) << QRect(7,27,5,15);
+ QTest::newRow("Case 7") << QRect(10,20,5,15) << QPoint(3,-7) << QRect(13,13,5,15);
+}
+
+void tst_QRect::translate()
+{
+ QFETCH(QRect, r);
+ QFETCH(QPoint, delta);
+ QFETCH(QRect, result);
+
+ QRect oldr = r;
+ QRect r2 = r;
+ r2.translate(delta);
+ QCOMPARE(result,r2);
+
+ r2 = r;
+ r2.translate(delta.x(), delta.y());
+ QCOMPARE(result,r2);
+
+ r2 = r.translated(delta);
+ QCOMPARE(result,r2);
+ QCOMPARE(oldr,r); //r should not change
+
+ r2 = r.translated(delta.x(), delta.y());
+ QCOMPARE(result,r2);
+ QCOMPARE(oldr,r);
+
+}
+
+
+void tst_QRect::moveTop()
+{
+ {
+ QRect r( 10, 10, 100, 100 );
+ r.moveTop( 3 );
+ QCOMPARE( r, QRect(10, 3, 100, 100) );
+
+ r = QRect( 10, 3, 100, 100 );
+ r.moveTop( -22 );
+ QCOMPARE( r, QRect(10, -22, 100, 100) );
+ }
+ {
+ QRectF r( 10, 10, 100, 100 );
+ r.moveTop( 3 );
+ QCOMPARE( r, QRectF(10, 3, 100, 100) );
+
+ r = QRectF( 10, 3, 100, 100 );
+ r.moveTop( -22 );
+ QCOMPARE( r, QRectF(10, -22, 100, 100) );
+ }
+}
+
+void tst_QRect::moveBottom()
+{
+ {
+ QRect r( 10, -22, 100, 100 );
+ r.moveBottom( 104 );
+ QCOMPARE( r, QRect(10, 5, 100, 100) );
+ }
+ {
+ QRectF r( 10, -22, 100, 100 );
+ r.moveBottom( 104 );
+ QCOMPARE( r, QRectF(10, 4, 100, 100) );
+ }
+}
+
+void tst_QRect::moveLeft()
+{
+ {
+ QRect r( 10, 5, 100, 100 );
+ r.moveLeft( 11 );
+ QCOMPARE( r, QRect(11, 5, 100, 100) );
+ }
+ {
+ QRectF r( 10, 5, 100, 100 );
+ r.moveLeft( 11 );
+ QCOMPARE( r, QRectF(11, 5, 100, 100) );
+ }
+}
+
+void tst_QRect::moveRight()
+{
+ {
+ QRect r( 11, 5, 100, 100 );
+ r.moveRight( 106 );
+ QCOMPARE( r, QRect(7, 5, 100, 100) );
+ }
+ {
+ QRectF r( 11, 5, 100, 100 );
+ r.moveRight( 106 );
+ QCOMPARE( r, QRectF(6, 5, 100, 100) );
+ }
+}
+
+void tst_QRect::moveTopLeft()
+{
+ {
+ QRect r( 7, 5, 100, 100 );
+ r.moveTopLeft( QPoint(1, 2) );
+ QCOMPARE( r, QRect(1, 2, 100, 100) );
+ }
+ {
+ QRectF r( 7, 5, 100, 100 );
+ r.moveTopLeft( QPoint(1, 2) );
+ QCOMPARE( r, QRectF(1, 2, 100, 100) );
+ }
+}
+
+void tst_QRect::moveTopRight()
+{
+ {
+ QRect r( 1, 2, 100, 100 );
+ r.moveTopRight( QPoint(103, 5) );
+ QCOMPARE( r, QRect(4, 5, 100, 100) );
+ }
+ {
+ QRectF r( 1, 2, 100, 100 );
+ r.moveTopRight( QPoint(103, 5) );
+ QCOMPARE( r, QRectF(3, 5, 100, 100) );
+ }
+}
+
+void tst_QRect::moveBottomLeft()
+{
+ {
+ QRect r( 4, 5, 100, 100 );
+ r.moveBottomLeft( QPoint(3, 105) );
+ QCOMPARE( r, QRect(3, 6, 100, 100) );
+ }
+ {
+ QRectF r( 4, 5, 100, 100 );
+ r.moveBottomLeft( QPoint(3, 105) );
+ QCOMPARE( r, QRectF(3, 5, 100, 100) );
+ }
+}
+
+void tst_QRect::moveBottomRight()
+{
+ {
+ QRect r( 3, 6, 100, 100 );
+ r.moveBottomRight( QPoint(103, 105) );
+ QCOMPARE( r, QRect(4, 6, 100, 100) );
+ }
+ {
+ QRectF r( 3, 6, 100, 100 );
+ r.moveBottomRight( QPoint(103, 105) );
+ QCOMPARE( r, QRectF(3, 5, 100, 100) );
+ }
+}
+
+void tst_QRect::setTopLeft()
+{
+ {
+ QRect r( 20, 10, 200, 100 );
+ r.setTopLeft( QPoint(5, 7) );
+ QCOMPARE( r, QRect(5, 7, 215, 103) );
+ }
+ {
+ QRectF r( 20, 10, 200, 100 );
+ r.setTopLeft( QPoint(5, 7) );
+ QCOMPARE( r, QRectF(5, 7, 215, 103) );
+ }
+}
+
+void tst_QRect::setTopRight()
+{
+ {
+ QRect r( 20, 10, 200, 100 );
+ r.setTopRight( QPoint(225, 7) );
+ QCOMPARE( r, QRect(20, 7, 206, 103) );
+ }
+ {
+ QRectF r( 20, 10, 200, 100 );
+ r.setTopRight( QPoint(225, 7) );
+ QCOMPARE( r, QRectF(20, 7, 205, 103) );
+ }
+}
+
+void tst_QRect::setBottomLeft()
+{
+ {
+ QRect r( 20, 10, 200, 100 );
+ r.setBottomLeft( QPoint(5, 117) );
+ QCOMPARE( r, QRect(5, 10, 215, 108) );
+ }
+ {
+ QRectF r( 20, 10, 200, 100 );
+ r.setBottomLeft( QPoint(5, 117) );
+ QCOMPARE( r, QRectF(5, 10, 215, 107) );
+ }
+}
+
+void tst_QRect::setBottomRight()
+{
+ {
+ QRect r( 20, 10, 200, 100 );
+ r.setBottomRight( QPoint(225, 117) );
+ QCOMPARE( r, QRect(20, 10, 206, 108) );
+ }
+ {
+ QRectF r( 20, 10, 200, 100 );
+ r.setBottomRight( QPoint(225, 117) );
+ QCOMPARE( r, QRectF(20, 10, 205, 107) );
+ }
+}
+
+void tst_QRect::operator_amp()
+{
+ QRect r( QPoint(20, 10), QPoint(200, 100) );
+ QRect r2( QPoint(50, 50), QPoint(300, 300) );
+ QRect r3 = r & r2;
+ QCOMPARE( r3, QRect( QPoint(50, 50), QPoint(200, 100) ) );
+ QVERIFY( !r3.isEmpty() );
+ QVERIFY( r3.isValid() );
+
+ QRect r4( QPoint(300, 300), QPoint(400, 400) );
+ QRect r5 = r & r4;
+ QVERIFY( r5.isEmpty() );
+ QVERIFY( !r5.isValid() );
+}
+
+void tst_QRect::operator_amp_eq()
+{
+ QRect r( QPoint(20, 10), QPoint(200, 100) );
+ QRect r2( QPoint(50, 50), QPoint(300, 300) );
+ r &= r2;
+ QCOMPARE( r, QRect( QPoint(50, 50), QPoint(200, 100) ) );
+ QVERIFY( !r.isEmpty() );
+ QVERIFY( r.isValid() );
+
+ QRect r3( QPoint(300, 300), QPoint(400, 400) );
+ r &= r3;
+ QVERIFY( r.isEmpty() );
+ QVERIFY( !r.isValid() );
+}
+
+void tst_QRect::isValid()
+{
+ QRect r;
+ QVERIFY( !r.isValid() );
+ QRect r2( 0, 0, 0, 0 );
+ QVERIFY( !r2.isValid() );
+ QRect r3( 100, 200, 300, 400 );
+ QVERIFY( r3.isValid() );
+}
+
+void tst_QRect::isEmpty()
+{
+ QRect r;
+ QVERIFY( r.isEmpty() );
+ QRect r2( 0, 0, 0, 0 );
+ QVERIFY( r2.isEmpty() );
+ QRect r3( 100, 200, 300, 400 );
+ QVERIFY( !r3.isEmpty() );
+ QRect r4( QPoint(300, 100), QPoint(200, 200) );
+ QVERIFY( r4.isEmpty() );
+ QRect r5( QPoint(200, 200), QPoint(200, 100) );
+ QVERIFY( r5.isEmpty() );
+ QRect r6( QPoint(300, 200), QPoint(200, 100) );
+ QVERIFY( r6.isEmpty() );
+}
+
+
+void tst_QRect::testAdjust_data()
+{
+ QTest::addColumn<QRect>("original");
+ QTest::addColumn<int>("x1_adjust");
+ QTest::addColumn<int>("y1_adjust");
+ QTest::addColumn<int>("x2_adjust");
+ QTest::addColumn<int>("y2_adjust");
+ QTest::addColumn<QRect>("expected");
+
+ QTest::newRow("test 01") << QRect(13, 12, 11, 10) << 4 << 3 << 2 << 1 << QRect(17, 15, 9, 8);
+ QTest::newRow("test 02") << QRect(13, 12, 11, 10) << 4 << 3 << 2 << 0 << QRect(17, 15, 9, 7);
+ QTest::newRow("test 03") << QRect(13, 12, 11, 10) << 4 << 3 << 0 << 1 << QRect(17, 15, 7, 8);
+ QTest::newRow("test 04") << QRect(13, 12, 11, 10) << 4 << 3 << 0 << 0 << QRect(17, 15, 7, 7);
+ QTest::newRow("test 05") << QRect(13, 12, 11, 10) << 4 << 0 << 2 << 1 << QRect(17, 12, 9, 11);
+ QTest::newRow("test 06") << QRect(13, 12, 11, 10) << 4 << 0 << 2 << 0 << QRect(17, 12, 9, 10);
+ QTest::newRow("test 07") << QRect(13, 12, 11, 10) << 4 << 0 << 0 << 1 << QRect(17, 12, 7, 11);
+ QTest::newRow("test 08") << QRect(13, 12, 11, 10) << 4 << 0 << 0 << 0 << QRect(17, 12, 7, 10);
+ QTest::newRow("test 09") << QRect(13, 12, 11, 10) << 0 << 3 << 2 << 1 << QRect(13, 15, 13, 8);
+ QTest::newRow("test 10") << QRect(13, 12, 11, 10) << 0 << 3 << 2 << 0 << QRect(13, 15, 13, 7);
+ QTest::newRow("test 11") << QRect(13, 12, 11, 10) << 0 << 3 << 0 << 1 << QRect(13, 15, 11, 8);
+ QTest::newRow("test 12") << QRect(13, 12, 11, 10) << 0 << 3 << 0 << 0 << QRect(13, 15, 11, 7);
+ QTest::newRow("test 13") << QRect(13, 12, 11, 10) << 0 << 0 << 2 << 1 << QRect(13, 12, 13, 11);
+ QTest::newRow("test 14") << QRect(13, 12, 11, 10) << 0 << 0 << 2 << 0 << QRect(13, 12, 13, 10);
+ QTest::newRow("test 15") << QRect(13, 12, 11, 10) << 0 << 0 << 0 << 1 << QRect(13, 12, 11, 11);
+ QTest::newRow("test 16") << QRect(13, 12, 11, 10) << 0 << 0 << 0 << 0 << QRect(13, 12, 11, 10);
+
+ QTest::newRow("test 17") << QRect(13, 12, 11, 10) << -4 << -3 << -2 << -1 << QRect( 9, 9, 13, 12);
+ QTest::newRow("test 18") << QRect(13, 12, 11, 10) << -4 << -3 << -2 << 0 << QRect( 9, 9, 13, 13);
+ QTest::newRow("test 19") << QRect(13, 12, 11, 10) << -4 << -3 << 0 << -1 << QRect( 9, 9, 15, 12);
+ QTest::newRow("test 20") << QRect(13, 12, 11, 10) << -4 << -3 << 0 << 0 << QRect( 9, 9, 15, 13);
+ QTest::newRow("test 21") << QRect(13, 12, 11, 10) << -4 << 0 << -2 << -1 << QRect( 9, 12, 13, 9);
+ QTest::newRow("test 22") << QRect(13, 12, 11, 10) << -4 << 0 << -2 << 0 << QRect( 9, 12, 13, 10);
+ QTest::newRow("test 23") << QRect(13, 12, 11, 10) << -4 << 0 << 0 << -1 << QRect( 9, 12, 15, 9);
+ QTest::newRow("test 24") << QRect(13, 12, 11, 10) << -4 << 0 << 0 << 0 << QRect( 9, 12, 15, 10);
+ QTest::newRow("test 25") << QRect(13, 12, 11, 10) << 0 << -3 << -2 << -1 << QRect(13, 9, 9, 12);
+ QTest::newRow("test 26") << QRect(13, 12, 11, 10) << 0 << -3 << -2 << 0 << QRect(13, 9, 9, 13);
+ QTest::newRow("test 27") << QRect(13, 12, 11, 10) << 0 << -3 << 0 << -1 << QRect(13, 9, 11, 12);
+ QTest::newRow("test 28") << QRect(13, 12, 11, 10) << 0 << -3 << 0 << 0 << QRect(13, 9, 11, 13);
+ QTest::newRow("test 29") << QRect(13, 12, 11, 10) << 0 << 0 << -2 << -1 << QRect(13, 12, 9, 9);
+ QTest::newRow("test 30") << QRect(13, 12, 11, 10) << 0 << 0 << -2 << 0 << QRect(13, 12, 9, 10);
+ QTest::newRow("test 31") << QRect(13, 12, 11, 10) << 0 << 0 << 0 << -1 << QRect(13, 12, 11, 9);
+ QTest::newRow("test 32") << QRect(13, 12, 11, 10) << 0 << 0 << 0 << 0 << QRect(13, 12, 11, 10);
+
+}
+
+void tst_QRect::testAdjust()
+{
+ QFETCH(QRect, original);
+ QFETCH(int, x1_adjust);
+ QFETCH(int, y1_adjust);
+ QFETCH(int, x2_adjust);
+ QFETCH(int, y2_adjust);
+ QFETCH(QRect, expected);
+
+ {
+ QRect r1 = original;
+ r1.adjust(x1_adjust, y1_adjust, x2_adjust, y2_adjust);
+ QCOMPARE(r1.x(), expected.x());
+ QCOMPARE(r1.y(), expected.y());
+ QCOMPARE(r1.width(), expected.width());
+ QCOMPARE(r1.height(), expected.height());
+
+ QRect r2 = original.adjusted(x1_adjust, y1_adjust, x2_adjust, y2_adjust);
+ QCOMPARE(r2.x(), expected.x());
+ QCOMPARE(r2.y(), expected.y());
+ QCOMPARE(r2.width(), expected.width());
+ QCOMPARE(r2.height(), expected.height());
+ }
+ {
+ QRectF expectedF(expected);
+
+ QRectF r1 = original;
+ r1.adjust(x1_adjust, y1_adjust, x2_adjust, y2_adjust);
+ QCOMPARE(r1.x(), expectedF.x());
+ QCOMPARE(r1.y(), expectedF.y());
+ QCOMPARE(r1.width(), expectedF.width());
+ QCOMPARE(r1.height(), expectedF.height());
+
+ QRectF r2 = original.adjusted(x1_adjust, y1_adjust, x2_adjust, y2_adjust);
+ QCOMPARE(r2.x(), expectedF.x());
+ QCOMPARE(r2.y(), expectedF.y());
+ QCOMPARE(r2.width(), expectedF.width());
+ QCOMPARE(r2.height(), expectedF.height());
+ }
+}
+
+void tst_QRect::intersectedRect_data()
+{
+ QTest::addColumn<QRect>("rect1");
+ QTest::addColumn<QRect>("rect2");
+ QTest::addColumn<QRect>("intersect");
+
+ QTest::newRow("test 01") << QRect(0, 0, 10, 10) << QRect( 2, 2, 6, 6) << QRect(2, 2, 6, 6);
+ QTest::newRow("test 02") << QRect(0, 0, 10, 10) << QRect( 0, 0, 10, 10) << QRect(0, 0, 10, 10);
+ QTest::newRow("test 03") << QRect(0, 0, 10, 10) << QRect( 2, 2, 10, 10) << QRect(2, 2, 8, 8);
+ QTest::newRow("test 04") << QRect(0, 0, 10, 10) << QRect(20, 20, 10, 10) << QRect();
+
+ QTest::newRow("test 05") << QRect(9, 9, -8, -8) << QRect( 2, 2, 6, 6) << QRect(2, 2, 6, 6);
+ QTest::newRow("test 06") << QRect(9, 9, -8, -8) << QRect( 0, 0, 10, 10) << QRect(0, 0, 10, 10);
+ QTest::newRow("test 07") << QRect(9, 9, -8, -8) << QRect( 2, 2, 10, 10) << QRect(2, 2, 8, 8);
+ QTest::newRow("test 08") << QRect(9, 9, -8, -8) << QRect(20, 20, 10, 10) << QRect();
+
+ QTest::newRow("test 09") << QRect(0, 0, 10, 10) << QRect( 7, 7, -4, -4) << QRect(2, 2, 6, 6);
+ QTest::newRow("test 10") << QRect(0, 0, 10, 10) << QRect( 9, 9, -8, -8) << QRect(0, 0, 10, 10);
+ QTest::newRow("test 11") << QRect(0, 0, 10, 10) << QRect(11, 11, -8, -8) << QRect(2, 2, 8, 8);
+ QTest::newRow("test 12") << QRect(0, 0, 10, 10) << QRect(29, 29, -8, -8) << QRect();
+
+ QTest::newRow("test 13") << QRect(0, 0, 10, 10) << QRect() << QRect();
+ QTest::newRow("test 14") << QRect() << QRect(0, 0, 10, 10) << QRect();
+ QTest::newRow("test 15") << QRect() << QRect() << QRect();
+ QTest::newRow("test 16") << QRect(2, 0, 1, 652) << QRect(2, 0, 1, 652) << QRect(2, 0, 1, 652);
+}
+
+void tst_QRect::intersectedRect()
+{
+ QFETCH(QRect, rect1);
+ QFETCH(QRect, rect2);
+ QFETCH(QRect, intersect);
+
+ if (intersect.isValid())
+ QCOMPARE(rect1.intersected(rect2), intersect);
+ else
+ QVERIFY(rect1.intersected(rect2).isEmpty());
+
+ QRect wayOutside(rect1.right() + 100, rect1.bottom() + 100, 10, 10);
+ QRect empty = rect1 & wayOutside;
+ QVERIFY(empty.intersected(rect2).isEmpty());
+}
+
+void tst_QRect::intersectedRectF_data()
+{
+ QTest::addColumn<QRectF>("rect1");
+ QTest::addColumn<QRectF>("rect2");
+ QTest::addColumn<QRectF>("intersect");
+
+ QTest::newRow("test 01") << QRectF(0, 0, 10, 10) << QRectF( 2, 2, 6, 6) << QRectF(2, 2, 6, 6);
+ QTest::newRow("test 02") << QRectF(0, 0, 10, 10) << QRectF( 0, 0, 10, 10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("test 03") << QRectF(0, 0, 10, 10) << QRectF( 2, 2, 10, 10) << QRectF(2, 2, 8, 8);
+ QTest::newRow("test 04") << QRectF(0, 0, 10, 10) << QRectF(20, 20, 10, 10) << QRectF();
+
+ QTest::newRow("test 05") << QRectF(10, 10, -10, -10) << QRectF( 2, 2, 6, 6) << QRectF(2, 2, 6, 6);
+ QTest::newRow("test 06") << QRectF(10, 10, -10, -10) << QRectF( 0, 0, 10, 10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("test 07") << QRectF(10, 10, -10, -10) << QRectF( 2, 2, 10, 10) << QRectF(2, 2, 8, 8);
+ QTest::newRow("test 08") << QRectF(10, 10, -10, -10) << QRectF(20, 20, 10, 10) << QRectF();
+
+ QTest::newRow("test 09") << QRectF(0, 0, 10, 10) << QRectF( 8, 8, -6, -6) << QRectF(2, 2, 6, 6);
+ QTest::newRow("test 10") << QRectF(0, 0, 10, 10) << QRectF(10, 10, -10, -10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("test 11") << QRectF(0, 0, 10, 10) << QRectF(12, 12, -10, -10) << QRectF(2, 2, 8, 8);
+ QTest::newRow("test 12") << QRectF(0, 0, 10, 10) << QRectF(30, 30, -10, -10) << QRectF();
+
+ QTest::newRow("test 13") << QRectF(-1, 1, 10, 10) << QRectF() << QRectF();
+ QTest::newRow("test 14") << QRectF() << QRectF(0, 0, 10, 10) << QRectF();
+ QTest::newRow("test 15") << QRectF() << QRectF() << QRectF();
+}
+
+void tst_QRect::intersectedRectF()
+{
+ QFETCH(QRectF, rect1);
+ QFETCH(QRectF, rect2);
+ QFETCH(QRectF, intersect);
+
+ if (intersect.isValid())
+ QCOMPARE(rect1.intersected(rect2), intersect);
+ else
+ QVERIFY(rect1.intersected(rect2).isEmpty());
+
+ QRectF wayOutside(rect1.right() + 100.0, rect1.bottom() + 100.0, 10.0, 10.0);
+ QRectF empty = rect1 & wayOutside;
+ QVERIFY(empty.intersected(rect2).isEmpty());
+}
+
+void tst_QRect::unitedRect_data()
+{
+ QTest::addColumn<QRect>("rect1");
+ QTest::addColumn<QRect>("rect2");
+ QTest::addColumn<QRect>("unite");
+
+ QTest::newRow("test 01") << QRect(0, 0, 10, 10) << QRect( 2, 2, 6, 6) << QRect(0, 0, 10, 10);
+ QTest::newRow("test 02") << QRect(0, 0, 10, 10) << QRect( 0, 0, 10, 10) << QRect(0, 0, 10, 10);
+ QTest::newRow("test 03") << QRect(0, 0, 10, 10) << QRect( 2, 2, 10, 10) << QRect(0, 0, 12, 12);
+ QTest::newRow("test 04") << QRect(0, 0, 10, 10) << QRect(20, 20, 10, 10) << QRect(0, 0, 30, 30);
+
+ QTest::newRow("test 05") << QRect(9, 9, -8, -8) << QRect( 2, 2, 6, 6) << QRect(0, 0, 10, 10);
+ QTest::newRow("test 06") << QRect(9, 9, -8, -8) << QRect( 0, 0, 10, 10) << QRect(0, 0, 10, 10);
+ QTest::newRow("test 07") << QRect(9, 9, -8, -8) << QRect( 2, 2, 10, 10) << QRect(0, 0, 12, 12);
+ QTest::newRow("test 08") << QRect(9, 9, -8, -8) << QRect(20, 20, 10, 10) << QRect(0, 0, 30, 30);
+
+ QTest::newRow("test 09") << QRect(0, 0, 10, 10) << QRect( 7, 7, -4, -4) << QRect(0, 0, 10, 10);
+ QTest::newRow("test 10") << QRect(0, 0, 10, 10) << QRect( 9, 9, -8, -8) << QRect(0, 0, 10, 10);
+ QTest::newRow("test 11") << QRect(0, 0, 10, 10) << QRect(11, 11, -8, -8) << QRect(0, 0, 12, 12);
+ QTest::newRow("test 12") << QRect(0, 0, 10, 10) << QRect(29, 29, -8, -8) << QRect(0, 0, 30, 30);
+
+ QTest::newRow("test 13") << QRect() << QRect(10, 10, 10, 10) << QRect(10, 10, 10, 10);
+ QTest::newRow("test 14") << QRect(10, 10, 10, 10) << QRect() << QRect(10, 10, 10, 10);
+ QTest::newRow("test 15") << QRect() << QRect() << QRect();
+ QTest::newRow("test 16") << QRect(0, 0, 100, 0) << QRect(0, 0, 0, 100) << QRect(0, 0, 100, 100);
+}
+
+void tst_QRect::unitedRect()
+{
+ QFETCH(QRect, rect1);
+ QFETCH(QRect, rect2);
+ QFETCH(QRect, unite);
+
+ QCOMPARE(rect1.united(rect2), unite);
+}
+
+void tst_QRect::unitedRectF_data()
+{
+ QTest::addColumn<QRectF>("rect1");
+ QTest::addColumn<QRectF>("rect2");
+ QTest::addColumn<QRectF>("unite");
+
+ QTest::newRow("test 01") << QRectF(0, 0, 10, 10) << QRectF( 2, 2, 6, 6) << QRectF(0, 0, 10, 10);
+ QTest::newRow("test 02") << QRectF(0, 0, 10, 10) << QRectF( 0, 0, 10, 10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("test 03") << QRectF(0, 0, 10, 10) << QRectF( 2, 2, 10, 10) << QRectF(0, 0, 12, 12);
+ QTest::newRow("test 04") << QRectF(0, 0, 10, 10) << QRectF(20, 20, 10, 10) << QRectF(0, 0, 30, 30);
+
+ QTest::newRow("test 05") << QRectF(10, 10, -10, -10) << QRectF( 2, 2, 6, 6) << QRectF(0, 0, 10, 10);
+ QTest::newRow("test 06") << QRectF(10, 10, -10, -10) << QRectF( 0, 0, 10, 10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("test 07") << QRectF(10, 10, -10, -10) << QRectF( 2, 2, 10, 10) << QRectF(0, 0, 12, 12);
+ QTest::newRow("test 08") << QRectF(10, 10, -10, -10) << QRectF(20, 20, 10, 10) << QRectF(0, 0, 30, 30);
+
+ QTest::newRow("test 09") << QRectF(0, 0, 10, 10) << QRectF( 8, 8, -6, -6) << QRectF(0, 0, 10, 10);
+ QTest::newRow("test 10") << QRectF(0, 0, 10, 10) << QRectF(10, 10, -10, -10) << QRectF(0, 0, 10, 10);
+ QTest::newRow("test 11") << QRectF(0, 0, 10, 10) << QRectF(12, 12, -10, -10) << QRectF(0, 0, 12, 12);
+ QTest::newRow("test 12") << QRectF(0, 0, 10, 10) << QRectF(30, 30, -10, -10) << QRectF(0, 0, 30, 30);
+
+ QTest::newRow("test 13") << QRectF() << QRectF(10, 10, 10, 10) << QRectF(10, 10, 10, 10);
+ QTest::newRow("test 14") << QRectF(10, 10, 10, 10) << QRectF() << QRectF(10, 10, 10, 10);
+ QTest::newRow("test 15") << QRectF() << QRectF() << QRectF();
+ QTest::newRow("test 16") << QRectF(0, 0, 100, 0) << QRectF(0, 0, 0, 100) << QRectF(0, 0, 100, 100);
+}
+
+void tst_QRect::unitedRectF()
+{
+ QFETCH(QRectF, rect1);
+ QFETCH(QRectF, rect2);
+ QFETCH(QRectF, unite);
+
+ QCOMPARE(rect1.united(rect2), unite);
+}
+
+void tst_QRect::intersectsRect_data()
+{
+ QTest::addColumn<QRect>("rect1");
+ QTest::addColumn<QRect>("rect2");
+ QTest::addColumn<bool>("intersects");
+
+ QTest::newRow("test 01") << QRect(0, 0, 10, 10) << QRect( 2, 2, 6, 6) << true;
+ QTest::newRow("test 02") << QRect(0, 0, 10, 10) << QRect( 0, 0, 10, 10) << true;
+ QTest::newRow("test 03") << QRect(0, 0, 10, 10) << QRect( 2, 2, 10, 10) << true;
+ QTest::newRow("test 04") << QRect(0, 0, 10, 10) << QRect(20, 20, 10, 10) << false;
+
+ QTest::newRow("test 05") << QRect(9, 9, -8, -8) << QRect( 2, 2, 6, 6) << true;
+ QTest::newRow("test 06") << QRect(9, 9, -8, -8) << QRect( 0, 0, 10, 10) << true;
+ QTest::newRow("test 07") << QRect(9, 9, -8, -8) << QRect( 2, 2, 10, 10) << true;
+ QTest::newRow("test 08") << QRect(9, 9, -8, -8) << QRect(20, 20, 10, 10) << false;
+
+ QTest::newRow("test 09") << QRect(0, 0, 10, 10) << QRect( 7, 7, -4, -4) << true;
+ QTest::newRow("test 10") << QRect(0, 0, 10, 10) << QRect( 9, 9, -8, -8) << true;
+ QTest::newRow("test 11") << QRect(0, 0, 10, 10) << QRect(11, 11, -8, -8) << true;
+ QTest::newRow("test 12") << QRect(0, 0, 10, 10) << QRect(29, 29, -8, -8) << false;
+
+ QTest::newRow("test 13") << QRect() << QRect(10, 10, 10, 10) << false;
+ QTest::newRow("test 14") << QRect(10, 10, 10, 10) << QRect() << false;
+ QTest::newRow("test 15") << QRect() << QRect() << false;
+ QTest::newRow("test 16") << QRect(10, 10, 10, 10) << QRect(19, 15, 1, 5) << true;
+
+ QTest::newRow("test 17") << QRect(10, 10, 10, 10) << QRect(15, 19, 5, 1) << true;
+ QTest::newRow("test 18") << QRect(2, 0, 1, 652) << QRect(2, 0, 1, 652) << true;
+}
+
+void tst_QRect::intersectsRect()
+{
+ QFETCH(QRect, rect1);
+ QFETCH(QRect, rect2);
+ QFETCH(bool, intersects);
+
+ QVERIFY(rect1.intersects(rect2) == intersects);
+}
+
+void tst_QRect::intersectsRectF_data()
+{
+ QTest::addColumn<QRectF>("rect1");
+ QTest::addColumn<QRectF>("rect2");
+ QTest::addColumn<bool>("intersects");
+
+ QTest::newRow("test 01") << QRectF(0, 0, 10, 10) << QRectF( 2, 2, 6, 6) << true;
+ QTest::newRow("test 02") << QRectF(0, 0, 10, 10) << QRectF( 0, 0, 10, 10) << true;
+ QTest::newRow("test 03") << QRectF(0, 0, 10, 10) << QRectF( 2, 2, 10, 10) << true;
+ QTest::newRow("test 04") << QRectF(0, 0, 10, 10) << QRectF(20, 20, 10, 10) << false;
+
+ QTest::newRow("test 05") << QRectF(10, 10, -10, -10) << QRectF( 2, 2, 6, 6) << true;
+ QTest::newRow("test 06") << QRectF(10, 10, -10, -10) << QRectF( 0, 0, 10, 10) << true;
+ QTest::newRow("test 07") << QRectF(10, 10, -10, -10) << QRectF( 2, 2, 10, 10) << true;
+ QTest::newRow("test 08") << QRectF(10, 10, -10, -10) << QRectF(20, 20, 10, 10) << false;
+
+ QTest::newRow("test 09") << QRectF(0, 0, 10, 10) << QRectF( 8, 8, -6, -6) << true;
+ QTest::newRow("test 10") << QRectF(0, 0, 10, 10) << QRectF(10, 10, -10, -10) << true;
+ QTest::newRow("test 11") << QRectF(0, 0, 10, 10) << QRectF(12, 12, -10, -10) << true;
+ QTest::newRow("test 12") << QRectF(0, 0, 10, 10) << QRectF(30, 30, -10, -10) << false;
+
+ QTest::newRow("test 13") << QRectF() << QRectF(10, 10, 10, 10) << false;
+ QTest::newRow("test 14") << QRectF(10, 10, 10, 10) << QRectF() << false;
+ QTest::newRow("test 15") << QRectF() << QRectF() << false;
+
+ QTest::newRow("test 16") << QRectF(0, 0, 10, 10) << QRectF(10, 10, 10, 10) << false;
+ QTest::newRow("test 17") << QRectF(0, 0, 10, 10) << QRectF(0, 10, 10, 10) << false;
+ QTest::newRow("test 18") << QRectF(0, 0, 10, 10) << QRectF(10, 0, 10, 10) << false;
+}
+
+void tst_QRect::intersectsRectF()
+{
+ QFETCH(QRectF, rect1);
+ QFETCH(QRectF, rect2);
+ QFETCH(bool, intersects);
+
+ QVERIFY(rect1.intersects(rect2) == intersects);
+}
+
+void tst_QRect::containsRect_data()
+{
+ QTest::addColumn<QRect>("rect1");
+ QTest::addColumn<QRect>("rect2");
+ QTest::addColumn<bool>("contains");
+
+ QTest::newRow("test 01") << QRect(0, 0, 10, 10) << QRect( 2, 2, 6, 6) << true;
+ QTest::newRow("test 02") << QRect(0, 0, 10, 10) << QRect( 0, 0, 10, 10) << true;
+ QTest::newRow("test 03") << QRect(0, 0, 10, 10) << QRect( 2, 2, 10, 10) << false;
+ QTest::newRow("test 04") << QRect(0, 0, 10, 10) << QRect(20, 20, 10, 10) << false;
+
+ QTest::newRow("test 05") << QRect(9, 9, -8, -8) << QRect( 2, 2, 6, 6) << true;
+ QTest::newRow("test 06") << QRect(9, 9, -8, -8) << QRect( 0, 0, 10, 10) << true;
+ QTest::newRow("test 07") << QRect(9, 9, -8, -8) << QRect( 2, 2, 10, 10) << false;
+ QTest::newRow("test 08") << QRect(9, 9, -8, -8) << QRect(20, 20, 10, 10) << false;
+
+ QTest::newRow("test 09") << QRect(0, 0, 10, 10) << QRect( 7, 7, -4, -4) << true;
+ QTest::newRow("test 10") << QRect(0, 0, 10, 10) << QRect( 9, 9, -8, -8) << true;
+ QTest::newRow("test 11") << QRect(0, 0, 10, 10) << QRect(11, 11, -8, -8) << false;
+ QTest::newRow("test 12") << QRect(0, 0, 10, 10) << QRect(29, 29, -8, -8) << false;
+
+ QTest::newRow("test 13") << QRect(-1, 1, 10, 10) << QRect() << false;
+ QTest::newRow("test 14") << QRect() << QRect(0, 0, 10, 10) << false;
+ QTest::newRow("test 15") << QRect() << QRect() << false;
+}
+
+void tst_QRect::containsRect()
+{
+ QFETCH(QRect, rect1);
+ QFETCH(QRect, rect2);
+ QFETCH(bool, contains);
+
+ QVERIFY(rect1.contains(rect2) == contains);
+}
+
+void tst_QRect::containsRectF_data()
+{
+ QTest::addColumn<QRectF>("rect1");
+ QTest::addColumn<QRectF>("rect2");
+ QTest::addColumn<bool>("contains");
+
+ QTest::newRow("test 01") << QRectF(0, 0, 10, 10) << QRectF( 2, 2, 6, 6) << true;
+ QTest::newRow("test 02") << QRectF(0, 0, 10, 10) << QRectF( 0, 0, 10, 10) << true;
+ QTest::newRow("test 03") << QRectF(0, 0, 10, 10) << QRectF( 2, 2, 10, 10) << false;
+ QTest::newRow("test 04") << QRectF(0, 0, 10, 10) << QRectF(20, 20, 10, 10) << false;
+
+ QTest::newRow("test 05") << QRectF(10, 10, -10, -10) << QRectF( 2, 2, 6, 6) << true;
+ QTest::newRow("test 06") << QRectF(10, 10, -10, -10) << QRectF( 0, 0, 10, 10) << true;
+ QTest::newRow("test 07") << QRectF(10, 10, -10, -10) << QRectF( 2, 2, 10, 10) << false;
+ QTest::newRow("test 08") << QRectF(10, 10, -10, -10) << QRectF(20, 20, 10, 10) << false;
+
+ QTest::newRow("test 09") << QRectF(0, 0, 10, 10) << QRectF( 8, 8, -6, -6) << true;
+ QTest::newRow("test 10") << QRectF(0, 0, 10, 10) << QRectF(10, 10, -10, -10) << true;
+ QTest::newRow("test 11") << QRectF(0, 0, 10, 10) << QRectF(12, 12, -10, -10) << false;
+ QTest::newRow("test 12") << QRectF(0, 0, 10, 10) << QRectF(30, 30, -10, -10) << false;
+
+ QTest::newRow("test 13") << QRectF(-1, 1, 10, 10) << QRectF() << false;
+ QTest::newRow("test 14") << QRectF() << QRectF(0, 0, 10, 10) << false;
+ QTest::newRow("test 15") << QRectF() << QRectF() << false;
+}
+
+void tst_QRect::containsRectF()
+{
+ QFETCH(QRectF, rect1);
+ QFETCH(QRectF, rect2);
+ QFETCH(bool, contains);
+
+ QVERIFY(rect1.contains(rect2) == contains);
+}
+
+void tst_QRect::containsPoint_data()
+{
+ QTest::addColumn<QRect>("rect");
+ QTest::addColumn<QPoint>("point");
+ QTest::addColumn<bool>("contains");
+ QTest::addColumn<bool>("containsProper");
+
+ QTest::newRow("test 01") << QRect(0, 0, 10, 10) << QPoint( 0, 0) << true << false;
+ QTest::newRow("test 02") << QRect(0, 0, 10, 10) << QPoint( 0, 10) << false << false;
+ QTest::newRow("test 03") << QRect(0, 0, 10, 10) << QPoint(10, 0) << false << false;
+ QTest::newRow("test 04") << QRect(0, 0, 10, 10) << QPoint(10, 10) << false << false;
+ QTest::newRow("test 05") << QRect(0, 0, 10, 10) << QPoint( 0, 9) << true << false;
+ QTest::newRow("test 06") << QRect(0, 0, 10, 10) << QPoint( 9, 0) << true << false;
+ QTest::newRow("test 07") << QRect(0, 0, 10, 10) << QPoint( 9, 9) << true << false;
+ QTest::newRow("test 08") << QRect(0, 0, 10, 10) << QPoint( 1, 0) << true << false;
+ QTest::newRow("test 09") << QRect(0, 0, 10, 10) << QPoint( 9, 1) << true << false;
+ QTest::newRow("test 10") << QRect(0, 0, 10, 10) << QPoint( 1, 1) << true << true;
+ QTest::newRow("test 11") << QRect(0, 0, 10, 10) << QPoint( 1, 8) << true << true;
+ QTest::newRow("test 12") << QRect(0, 0, 10, 10) << QPoint( 8, 8) << true << true;
+
+ QTest::newRow("test 13") << QRect(9, 9, -8, -8) << QPoint( 0, 0) << true << false;
+ QTest::newRow("test 14") << QRect(9, 9, -8, -8) << QPoint( 0, 10) << false << false;
+ QTest::newRow("test 15") << QRect(9, 9, -8, -8) << QPoint(10, 0) << false << false;
+ QTest::newRow("test 16") << QRect(9, 9, -8, -8) << QPoint(10, 10) << false << false;
+ QTest::newRow("test 17") << QRect(9, 9, -8, -8) << QPoint( 0, 9) << true << false;
+ QTest::newRow("test 18") << QRect(9, 9, -8, -8) << QPoint( 9, 0) << true << false;
+ QTest::newRow("test 19") << QRect(9, 9, -8, -8) << QPoint( 9, 9) << true << false;
+ QTest::newRow("test 20") << QRect(9, 9, -8, -8) << QPoint( 1, 0) << true << false;
+ QTest::newRow("test 21") << QRect(9, 9, -8, -8) << QPoint( 9, 1) << true << false;
+ QTest::newRow("test 22") << QRect(9, 9, -8, -8) << QPoint( 1, 1) << true << true;
+ QTest::newRow("test 23") << QRect(9, 9, -8, -8) << QPoint( 1, 8) << true << true;
+ QTest::newRow("test 24") << QRect(9, 9, -8, -8) << QPoint( 8, 8) << true << true;
+
+ QTest::newRow("test 25") << QRect(-1, 1, 10, 10) << QPoint() << false << false;
+ QTest::newRow("test 26") << QRect() << QPoint(1, 1) << false << false;
+ QTest::newRow("test 27") << QRect() << QPoint() << false << false;
+}
+
+void tst_QRect::containsPoint()
+{
+ QFETCH(QRect, rect);
+ QFETCH(QPoint, point);
+ QFETCH(bool, contains);
+ QFETCH(bool, containsProper);
+
+ QVERIFY(rect.contains(point) == contains);
+ QVERIFY(rect.contains(point, true) == containsProper);
+}
+
+void tst_QRect::containsPointF_data()
+{
+ QTest::addColumn<QRectF>("rect");
+ QTest::addColumn<QPointF>("point");
+ QTest::addColumn<bool>("contains");
+
+ QTest::newRow("test 27") << QRectF() << QPointF() << false;
+
+ QTest::newRow("test 01") << QRectF(0, 0, 10, 10) << QPointF( 0, 0) << true;
+ QTest::newRow("test 02") << QRectF(0, 0, 10, 10) << QPointF( 0, 10) << true;
+ QTest::newRow("test 03") << QRectF(0, 0, 10, 10) << QPointF(10, 0) << true;
+ QTest::newRow("test 04") << QRectF(0, 0, 10, 10) << QPointF(10, 10) << true;
+ QTest::newRow("test 05") << QRectF(0, 0, 10, 10) << QPointF( 0, 9) << true;
+ QTest::newRow("test 06") << QRectF(0, 0, 10, 10) << QPointF( 9, 0) << true;
+ QTest::newRow("test 07") << QRectF(0, 0, 10, 10) << QPointF( 9, 9) << true;
+ QTest::newRow("test 08") << QRectF(0, 0, 10, 10) << QPointF( 1, 0) << true;
+ QTest::newRow("test 09") << QRectF(0, 0, 10, 10) << QPointF( 9, 1) << true;
+ QTest::newRow("test 10") << QRectF(0, 0, 10, 10) << QPointF( 1, 1) << true;
+ QTest::newRow("test 11") << QRectF(0, 0, 10, 10) << QPointF( 1, 8) << true;
+ QTest::newRow("test 12") << QRectF(0, 0, 10, 10) << QPointF( 8, 8) << true;
+
+ QTest::newRow("test 13") << QRectF(10, 10, -10, -10) << QPointF( 0, 0) << true;
+ QTest::newRow("test 14") << QRectF(10, 10, -10, -10) << QPointF( 0, 10) << true;
+ QTest::newRow("test 15") << QRectF(10, 10, -10, -10) << QPointF(10, 0) << true;
+ QTest::newRow("test 16") << QRectF(10, 10, -10, -10) << QPointF(10, 10) << true;
+ QTest::newRow("test 17") << QRectF(10, 10, -10, -10) << QPointF( 0, 9) << true;
+ QTest::newRow("test 18") << QRectF(10, 10, -10, -10) << QPointF( 9, 0) << true;
+ QTest::newRow("test 19") << QRectF(10, 10, -10, -10) << QPointF( 9, 9) << true;
+ QTest::newRow("test 20") << QRectF(10, 10, -10, -10) << QPointF( 1, 0) << true;
+ QTest::newRow("test 21") << QRectF(10, 10, -10, -10) << QPointF( 9, 1) << true;
+ QTest::newRow("test 22") << QRectF(10, 10, -10, -10) << QPointF( 1, 1) << true;
+ QTest::newRow("test 23") << QRectF(10, 10, -10, -10) << QPointF( 1, 8) << true;
+ QTest::newRow("test 24") << QRectF(10, 10, -10, -10) << QPointF( 8, 8) << true;
+
+ QTest::newRow("test 25") << QRectF(-1, 1, 10, 10) << QPointF() << false;
+ QTest::newRow("test 26") << QRectF() << QPointF(1, 1) << false;
+ QTest::newRow("test 27") << QRectF() << QPointF() << false;
+}
+
+void tst_QRect::containsPointF()
+{
+ QFETCH(QRectF, rect);
+ QFETCH(QPointF, point);
+ QFETCH(bool, contains);
+
+ QVERIFY(rect.contains(point) == contains);
+}
+
+void tst_QRect::smallRects() const
+{
+ const QRectF r1( 0, 0, 1e-12, 1e-12 );
+ const QRectF r2( 0, 0, 1e-14, 1e-14 );
+
+ // r2 is 10000 times bigger than r1
+ QVERIFY(!(r1 == r2));
+ QVERIFY(r1 != r2);
+}
+
+QTEST_MAIN(tst_QRect)
+#include "tst_qrect.moc"
diff --git a/tests/auto/corelib/tools/qregexp/.gitignore b/tests/auto/corelib/tools/qregexp/.gitignore
new file mode 100644
index 0000000000..e6e629ee2c
--- /dev/null
+++ b/tests/auto/corelib/tools/qregexp/.gitignore
@@ -0,0 +1 @@
+tst_qregexp
diff --git a/tests/auto/corelib/tools/qregexp/qregexp.pro b/tests/auto/corelib/tools/qregexp/qregexp.pro
new file mode 100644
index 0000000000..e0fef12479
--- /dev/null
+++ b/tests/auto/corelib/tools/qregexp/qregexp.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+
+QT = core
+
+
+QT = core
+
+SOURCES += tst_qregexp.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qregexp/tst_qregexp.cpp b/tests/auto/corelib/tools/qregexp/tst_qregexp.cpp
new file mode 100644
index 0000000000..65edb56410
--- /dev/null
+++ b/tests/auto/corelib/tools/qregexp/tst_qregexp.cpp
@@ -0,0 +1,1457 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qregexp.h>
+
+const int N = 1;
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QRegExp : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QRegExp();
+ virtual ~tst_QRegExp();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void getSetCheck();
+ void indexIn_data();
+ void indexIn_addMoreRows(const QByteArray &stri);
+ void indexIn();
+ void lastIndexIn_data();
+ void lastIndexIn();
+ void matchedLength();
+ void wildcard_data();
+ void wildcard();
+ void testEscapingWildcard_data();
+ void testEscapingWildcard();
+ void testInvalidWildcard_data();
+ void testInvalidWildcard();
+ void caretAnchoredOptimization();
+ void isEmpty();
+ void prepareEngineOptimization();
+ void swap();
+ void operator_eq();
+
+ /*
+ void isValid();
+ void pattern();
+ void setPattern();
+ void caseSensitive();
+ void setCaseSensitive();
+ void minimal();
+ void setMinimal();
+*/
+ void exactMatch();
+ void capturedTexts();
+/*
+ void cap();
+ void pos();
+ void errorString();
+ void escape();
+*/
+ void staticRegExp();
+ void rainersSlowRegExpCopyBug();
+ void nonExistingBackReferenceBug();
+
+ void reentrancy();
+ void threadsafeEngineCache();
+
+ void QTBUG_7049_data();
+ void QTBUG_7049();
+ void interval();
+};
+
+// Testing get/set functions
+void tst_QRegExp::getSetCheck()
+{
+ QRegExp obj1;
+ // PatternSyntax QRegExp::patternSyntax()
+ // void QRegExp::setPatternSyntax(PatternSyntax)
+ obj1.setPatternSyntax(QRegExp::PatternSyntax(QRegExp::RegExp));
+ QCOMPARE(QRegExp::PatternSyntax(QRegExp::RegExp), obj1.patternSyntax());
+ obj1.setPatternSyntax(QRegExp::PatternSyntax(QRegExp::Wildcard));
+ QCOMPARE(QRegExp::PatternSyntax(QRegExp::Wildcard), obj1.patternSyntax());
+ obj1.setPatternSyntax(QRegExp::PatternSyntax(QRegExp::FixedString));
+ QCOMPARE(QRegExp::PatternSyntax(QRegExp::FixedString), obj1.patternSyntax());
+}
+
+extern const char email[];
+
+tst_QRegExp::tst_QRegExp()
+{
+}
+
+tst_QRegExp::~tst_QRegExp()
+{
+}
+
+void tst_QRegExp::lastIndexIn_data()
+{
+ indexIn_data();
+}
+
+void tst_QRegExp::indexIn_data()
+{
+ QTest::addColumn<QString>("regexpStr");
+ QTest::addColumn<QString>("target");
+ QTest::addColumn<int>("pos");
+ QTest::addColumn<int>("len");
+ QTest::addColumn<QStringList>("caps");
+
+ for (int i = 0; i < N; ++i) {
+ QByteArray stri;
+ if (i > 0)
+ stri.setNum(i);
+
+ // anchors
+ QTest::newRow( stri + "anc00" ) << QString("a(?=)z") << QString("az") << 0 << 2 << QStringList();
+ QTest::newRow( stri + "anc01" ) << QString("a(?!)z") << QString("az") << -1 << -1 << QStringList();
+ QTest::newRow( stri + "anc02" ) << QString("a(?:(?=)|(?=))z") << QString("az") << 0 << 2
+ << QStringList();
+ QTest::newRow( stri + "anc03" ) << QString("a(?:(?=)|(?!))z") << QString("az") << 0 << 2
+ << QStringList();
+ QTest::newRow( stri + "anc04" ) << QString("a(?:(?!)|(?=))z") << QString("az") << 0 << 2
+ << QStringList();
+ QTest::newRow( stri + "anc05" ) << QString("a(?:(?!)|(?!))z") << QString("az") << -1 << -1
+ << QStringList();
+ QTest::newRow( stri + "anc06" ) << QString("a(?:(?=)|b)z") << QString("az") << 0 << 2
+ << QStringList();
+ QTest::newRow( stri + "anc07" ) << QString("a(?:(?=)|b)z") << QString("abz") << 0 << 3
+ << QStringList();
+ QTest::newRow( stri + "anc08" ) << QString("a(?:(?!)|b)z") << QString("az") << -1 << -1
+ << QStringList();
+ QTest::newRow( stri + "anc09" ) << QString("a(?:(?!)|b)z") << QString("abz") << 0 << 3
+ << QStringList();
+#if 0
+ QTest::newRow( stri + "anc10" ) << QString("a?(?=^b$)") << QString("ab") << 0 << 1
+ << QStringList();
+ QTest::newRow( stri + "anc11" ) << QString("a?(?=^b$)") << QString("b") << 0 << 0
+ << QStringList();
+#endif
+
+ // back-references
+ QTest::newRow( stri + "bref00" ) << QString("(a*)(\\1)") << QString("aaaaa") << 0 << 4
+ << QStringList( QStringList() << "aa" << "aa" );
+ QTest::newRow( stri + "bref01" ) << QString("<(\\w*)>.+</\\1>") << QString("<b>blabla</b>bla</>")
+ << 0 << 13 << QStringList( QStringList() << "b" );
+ QTest::newRow( stri + "bref02" ) << QString("<(\\w*)>.+</\\1>") << QString("<>blabla</b>bla</>")
+ << 0 << 18 << QStringList( QStringList() << "" );
+ QTest::newRow( stri + "bref03" ) << QString("((a*\\2)\\2)") << QString("aaaa") << 0 << 4
+ << QStringList( QStringList() << QString("aaaa") << "aa" );
+ QTest::newRow( stri + "bref04" ) << QString("^(aa+)\\1+$") << QString("aaaaaa") << 0 << 6
+ << QStringList( QStringList() << QString("aa") );
+ QTest::newRow( stri + "bref05" ) << QString("^(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)(14)"
+ "\\14\\13\\12\\11\\10\\9\\8\\7\\6\\5\\4\\3\\2\\1")
+ << QString("12345678910111213141413121110987654321") << 0 << 38
+ << QStringList( QStringList() << "1" << "2" << "3" << "4" << "5" << "6"
+ << "7" << "8" << "9" << "10" << "11"
+ << "12" << "13" << "14");
+
+ // captures
+ QTest::newRow( stri + "cap00" ) << QString("(a*)") << QString("") << 0 << 0
+ << QStringList( QStringList() << QString("") );
+ QTest::newRow( stri + "cap01" ) << QString("(a*)") << QString("aaa") << 0 << 3
+ << QStringList( QStringList() << "aaa" );
+ QTest::newRow( stri + "cap02" ) << QString("(a*)") << QString("baaa") << 0 << 0
+ << QStringList( QStringList() << QString("") );
+ QTest::newRow( stri + "cap03" ) << QString("(a*)(a*)") << QString("aaa") << 0 << 3
+ << QStringList( QStringList() << QString("aaa") << QString("") );
+ QTest::newRow( stri + "cap04" ) << QString("(a*)(b*)") << QString("aaabbb") << 0 << 6
+ << QStringList( QStringList() << QString("aaa") << QString("bbb") );
+ QTest::newRow( stri + "cap06" ) << QString("(a*)a*") << QString("aaa") << 0 << 3
+ << QStringList( QStringList() << QString("aaa") );
+ QTest::newRow( stri + "cap07" ) << QString("((a*a*)*)") << QString("aaa") << 0 << 3
+ << QStringList( QStringList() << "aaa" << QString("aaa") );
+ QTest::newRow( stri + "cap08" ) << QString("(((a)*(b)*)*)") << QString("ababa") << 0 << 5
+ << QStringList( QStringList() << QString("ababa") << QString("a") << QString("a")
+ << "" );
+ QTest::newRow( stri + "cap09" ) << QString("(((a)*(b)*)c)*") << QString("") << 0 << 0
+ << QStringList( QStringList() << QString("") << QString("") << QString("") << QString("") );
+ QTest::newRow( stri + "cap10" ) << QString("(((a)*(b)*)c)*") << QString("abc") << 0 << 3
+ << QStringList( QStringList() << "abc" << "ab" << "a"
+ << "b" );
+ QTest::newRow( stri + "cap11" ) << QString("(((a)*(b)*)c)*") << QString("abcc") << 0 << 4
+ << QStringList( QStringList() << "c" << "" << "" << "" );
+ QTest::newRow( stri + "cap12" ) << QString("(((a)*(b)*)c)*") << QString("abcac") << 0 << 5
+ << QStringList( QStringList() << "ac" << "a" << "a" << "" );
+ QTest::newRow( stri + "cap13" ) << QString("(to|top)?(o|polo)?(gical|o?logical)")
+ << QString("topological") << 0 << 11
+ << QStringList( QStringList() << "top" << "o"
+ << "logical" );
+ QTest::newRow( stri + "cap14" ) << QString("(a)+") << QString("aaaa") << 0 << 4
+ << QStringList( QStringList() << "a" );
+
+ // concatenation
+ QTest::newRow( stri + "cat00" ) << QString("") << QString("") << 0 << 0 << QStringList();
+ QTest::newRow( stri + "cat01" ) << QString("") << QString("a") << 0 << 0 << QStringList();
+ QTest::newRow( stri + "cat02" ) << QString("a") << QString("") << -1 << -1 << QStringList();
+ QTest::newRow( stri + "cat03" ) << QString("a") << QString("a") << 0 << 1 << QStringList();
+ QTest::newRow( stri + "cat04" ) << QString("a") << QString("b") << -1 << -1 << QStringList();
+ QTest::newRow( stri + "cat05" ) << QString("b") << QString("a") << -1 << -1 << QStringList();
+ QTest::newRow( stri + "cat06" ) << QString("ab") << QString("ab") << 0 << 2 << QStringList();
+ QTest::newRow( stri + "cat07" ) << QString("ab") << QString("ba") << -1 << -1 << QStringList();
+ QTest::newRow( stri + "cat08" ) << QString("abab") << QString("abbaababab") << 4 << 4
+ << QStringList();
+
+ indexIn_addMoreRows(stri);
+ }
+}
+
+
+
+void tst_QRegExp::indexIn_addMoreRows(const QByteArray &stri)
+{
+
+ // from Perl Cookbook
+ QTest::newRow( stri + "cook00" ) << QString("^(m*)(d?c{0,3}|c[dm])(1?x{0,3}|x[lc])(v?i{0"
+ ",3}|i[vx])$")
+ << QString("mmxl") << 0 << 4
+ << QStringList( QStringList() << "mm" << "" << "xl"
+ << "" );
+ QTest::newRow( stri + "cook01" ) << QString("(\\S+)(\\s+)(\\S+)") << QString(" a b") << 1 << 5
+ << QStringList( QStringList() << "a" << " " << "b" );
+ QTest::newRow( stri + "cook02" ) << QString("(\\w+)\\s*=\\s*(.*)\\s*$") << QString(" PATH=. ") << 1
+ << 7 << QStringList( QStringList() << "PATH" << ". " );
+ QTest::newRow( stri + "cook03" ) << QString(".{80,}")
+ << QString("0000000011111111222222223333333344444444555"
+ "5555566666666777777778888888899999999000000"
+ "00aaaaaaaa")
+ << 0 << 96 << QStringList();
+ QTest::newRow( stri + "cook04" ) << QString("(\\d+)/(\\d+)/(\\d+) (\\d+):(\\d+):(\\d+)")
+ << QString("1978/05/24 07:30:00") << 0 << 19
+ << QStringList( QStringList() << "1978" << "05" << "24"
+ << "07" << "30" << "00" );
+ QTest::newRow( stri + "cook05" ) << QString("/usr/bin") << QString("/usr/local/bin:/usr/bin")
+ << 15 << 8 << QStringList();
+ QTest::newRow( stri + "cook06" ) << QString("%([0-9A-Fa-f]{2})") << QString("http://%7f") << 7 << 3
+ << QStringList( QStringList() << "7f" );
+ QTest::newRow( stri + "cook07" ) << QString("/\\*.*\\*/") << QString("i++; /* increment i */") << 5
+ << 17 << QStringList();
+ QTest::newRow( stri + "cook08" ) << QString("^\\s+") << QString(" aaa ") << 0 << 3
+ << QStringList();
+ QTest::newRow( stri + "cook09" ) << QString("\\s+$") << QString(" aaa ") << 6 << 3
+ << QStringList();
+ QTest::newRow( stri + "cook10" ) << QString("^.*::") << QString("Box::cat") << 0 << 5
+ << QStringList();
+ QTest::newRow( stri + "cook11" ) << QString("^([01]?\\d\\d|2[0-4]\\d|25[0-5])\\.([01]?\\"
+ "d\\d|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d|2[0-"
+ "4]\\d|25[0-5])\\.([01]?\\d\\d|2[0-4]\\d|25["
+ "0-5])$")
+ << QString("255.00.40.30") << 0 << 12
+ << QStringList( QStringList() << "255" << "00" << "40"
+ << "30" );
+ QTest::newRow( stri + "cook12" ) << QString("^.*/") << QString(" /usr/local/bin/moc") << 0 << 16
+ << QStringList();
+ QTest::newRow( stri + "cook13" ) << QString(":co#(\\d+):") << QString("bla:co#55:") << 3 << 7
+ << QStringList( QStringList() << "55" );
+ QTest::newRow( stri + "cook14" ) << QString("linux") << QString("alphalinuxinunix") << 5 << 5
+ << QStringList();
+ QTest::newRow( stri + "cook15" ) << QString("(\\d+\\.?\\d*|\\.\\d+)") << QString("0.0.5") << 0 << 3
+ << QStringList( QStringList() << "0.0" );
+
+ // mathematical trivia
+ QTest::newRow( stri + "math00" ) << QString("^(a\\1*)$") << QString("a") << 0 << 1
+ << QStringList( QStringList() << "a" );
+ QTest::newRow( stri + "math01" ) << QString("^(a\\1*)$") << QString("aa") << 0 << 2
+ << QStringList( QStringList() << "aa" );
+ QTest::newRow( stri + "math02" ) << QString("^(a\\1*)$") << QString("aaa") << -1 << -1
+ << QStringList( QStringList() << QString() );
+ QTest::newRow( stri + "math03" ) << QString("^(a\\1*)$") << QString("aaaa") << 0 << 4
+ << QStringList( QStringList() << "aaaa" );
+ QTest::newRow( stri + "math04" ) << QString("^(a\\1*)$") << QString("aaaaa") << -1 << -1
+ << QStringList( QStringList() << QString() );
+ QTest::newRow( stri + "math05" ) << QString("^(a\\1*)$") << QString("aaaaaa") << -1 << -1
+ << QStringList( QStringList() << QString() );
+ QTest::newRow( stri + "math06" ) << QString("^(a\\1*)$") << QString("aaaaaaa") << -1 << -1
+ << QStringList( QStringList() << QString() );
+ QTest::newRow( stri + "math07" ) << QString("^(a\\1*)$") << QString("aaaaaaaa") << 0 << 8
+ << QStringList( QStringList() << "aaaaaaaa" );
+ QTest::newRow( stri + "math08" ) << QString("^(a\\1*)$") << QString("aaaaaaaaa") << -1 << -1
+ << QStringList( QStringList() << QString() );
+ QTest::newRow( stri + "math09" ) << QString("^a(?:a(\\1a))*$") << QString("a") << 0 << 1
+ << QStringList( QStringList() << "" );
+ QTest::newRow( stri + "math10" ) << QString("^a(?:a(\\1a))*$") << QString("aaa") << 0 << 3
+ << QStringList( QStringList() << "a" );
+
+ QTest::newRow( stri + "math13" ) << QString("^(?:((?:^a)?\\2\\3)(\\3\\1|(?=a$))(\\1\\2|("
+ "?=a$)))*a$")
+ << QString("aaa") << 0 << 3
+ << QStringList( QStringList() << "a" << "a" << "" );
+ QTest::newRow( stri + "math14" ) << QString("^(?:((?:^a)?\\2\\3)(\\3\\1|(?=a$))(\\1\\2|("
+ "?=a$)))*a$")
+ << QString("aaaaa") << 0 << 5
+ << QStringList( QStringList() << "a" << "a" << "aa" );
+ QTest::newRow( stri + "math17" ) << QString("^(?:(a(?:(\\1\\3)(\\1\\2))*(?:\\1\\3)?)|((?"
+ ":(\\4(?:^a)?\\6)(\\4\\5))*(?:\\4\\6)?))$")
+ << QString("aaa") << 0 << 3
+ << QStringList( QStringList() << "" << "" << "" << "aaa"
+ << "a" << "aa" );
+ QTest::newRow( stri + "math18" ) << QString("^(?:(a(?:(\\1\\3)(\\1\\2))*(?:\\1\\3)?)|((?"
+ ":(\\4(?:^a)?\\6)(\\4\\5))*(?:\\4\\6)?))$")
+ << QString("aaaaa") << 0 << 5
+ << QStringList( QStringList() << "aaaaa" << "a" << "aaa"
+ << "" << "" << "" );
+ QTest::newRow( stri + "math19" ) << QString("^(?:(a(?:(\\1\\3)(\\1\\2))*(?:\\1\\3)?)|((?"
+ ":(\\4(?:^a)?\\6)(\\4\\5))*(?:\\4\\6)?))$")
+ << QString("aaaaaaaa") << 0 << 8
+ << QStringList( QStringList() << "" << "" << ""
+ << "aaaaaaaa" << "a"
+ << "aa" );
+ QTest::newRow( stri + "math20" ) << QString("^(?:(a(?:(\\1\\3)(\\1\\2))*(?:\\1\\3)?)|((?"
+ ":(\\4(?:^a)?\\6)(\\4\\5))*(?:\\4\\6)?))$")
+ << QString("aaaaaaaaa") << -1 << -1
+ << QStringList( QStringList() << QString()
+ << QString()
+ << QString()
+ << QString()
+ << QString()
+ << QString() );
+ QTest::newRow( stri + "math21" ) << QString("^(aa+)\\1+$") << QString("aaaaaaaaaaaa") << 0 << 12
+ << QStringList( QStringList() << "aa" );
+
+ static const char * const squareRegExp[] = {
+ "^a(?:(\\1aa)a)*$",
+ "^(\\2(\\1a))+$",
+#if 0
+ "^(?:(\\B\\1aa|^a))+$",
+#endif
+ "^((\\2a)*)\\1\\2a$",
+ 0
+ };
+
+ int ii = 0;
+
+ while ( squareRegExp[ii] != 0 ) {
+ for ( int j = 0; j < 100; j++ ) {
+ QString name;
+ name.sprintf( "square%.1d%.2d", ii, j );
+
+ QString target = "";
+ target.fill( 'a', j );
+
+ int pos = -1;
+ int len = -1;
+
+ for ( int k = 1; k * k <= j; k++ ) {
+ if ( k * k == j ) {
+ pos = 0;
+ len = j;
+ break;
+ }
+ }
+
+ QTest::newRow( name.toLatin1() ) << QString( squareRegExp[ii] ) << target
+ << pos << len << QStringList( "IGNORE ME" );
+ }
+ ii++;
+ }
+
+ // miscellaneous
+ QTest::newRow( stri + "misc00" ) << QString(email)
+ << QString("troll1@trolltech.com") << 0 << 20
+ << QStringList();
+ QTest::newRow( stri + "misc01" ) << QString("[0-9]*\\.[0-9]+") << QString("pi = 3.14") << 5 << 4
+ << QStringList();
+
+ // or operator
+ QTest::newRow( stri + "or00" ) << QString("(?:|b)") << QString("xxx") << 0 << 0 << QStringList();
+ QTest::newRow( stri + "or01" ) << QString("(?:|b)") << QString("b") << 0 << 1 << QStringList();
+ QTest::newRow( stri + "or02" ) << QString("(?:b|)") << QString("") << 0 << 0 << QStringList();
+ QTest::newRow( stri + "or03" ) << QString("(?:b|)") << QString("b") << 0 << 1 << QStringList();
+ QTest::newRow( stri + "or04" ) << QString("(?:||b||)") << QString("") << 0 << 0 << QStringList();
+ QTest::newRow( stri + "or05" ) << QString("(?:||b||)") << QString("b") << 0 << 1 << QStringList();
+ QTest::newRow( stri + "or06" ) << QString("(?:a|b)") << QString("") << -1 << -1 << QStringList();
+ QTest::newRow( stri + "or07" ) << QString("(?:a|b)") << QString("cc") << -1 << -1 << QStringList();
+ QTest::newRow( stri + "or08" ) << QString("(?:a|b)") << QString("abc") << 0 << 1 << QStringList();
+ QTest::newRow( stri + "or09" ) << QString("(?:a|b)") << QString("cba") << 1 << 1 << QStringList();
+ QTest::newRow( stri + "or10" ) << QString("(?:ab|ba)") << QString("aba") << 0 << 2
+ << QStringList();
+ QTest::newRow( stri + "or11" ) << QString("(?:ab|ba)") << QString("bab") << 0 << 2
+ << QStringList();
+ QTest::newRow( stri + "or12" ) << QString("(?:ab|ba)") << QString("caba") << 1 << 2
+ << QStringList();
+ QTest::newRow( stri + "or13" ) << QString("(?:ab|ba)") << QString("cbab") << 1 << 2
+ << QStringList();
+
+ // quantifiers
+ QTest::newRow( stri + "qua00" ) << QString("((([a-j])){0,0})") << QString("") << 0 << 0
+ << QStringList( QStringList() << "" << "" << "" );
+ QTest::newRow( stri + "qua01" ) << QString("((([a-j])){0,0})") << QString("a") << 0 << 0
+ << QStringList( QStringList() << "" << "" << "" );
+ QTest::newRow( stri + "qua02" ) << QString("((([a-j])){0,0})") << QString("xyz") << 0 << 0
+ << QStringList( QStringList() << "" << "" << "" );
+ QTest::newRow( stri + "qua03" ) << QString("((([a-j]))?)") << QString("") << 0 << 0
+ << QStringList( QStringList() << "" << "" << "" );
+ QTest::newRow( stri + "qua04" ) << QString("((([a-j]))?)") << QString("a") << 0 << 1
+ << QStringList( QStringList() << "a" << "a" << "a" );
+ QTest::newRow( stri + "qua05" ) << QString("((([a-j]))?)") << QString("x") << 0 << 0
+ << QStringList( QStringList() << "" << "" << "" );
+ QTest::newRow( stri + "qua06" ) << QString("((([a-j]))?)") << QString("ab") << 0 << 1
+ << QStringList( QStringList() << "a" << "a" << "a" );
+ QTest::newRow( stri + "qua07" ) << QString("((([a-j]))?)") << QString("xa") << 0 << 0
+ << QStringList( QStringList() << "" << "" << "" );
+ QTest::newRow( stri + "qua08" ) << QString("((([a-j])){0,3})") << QString("") << 0 << 0
+ << QStringList( QStringList() << "" << "" << "" );
+ QTest::newRow( stri + "qua09" ) << QString("((([a-j])){0,3})") << QString("a") << 0 << 1
+ << QStringList( QStringList() << "a" << "a" << "a" );
+ QTest::newRow( stri + "qua10" ) << QString("((([a-j])){0,3})") << QString("abcd") << 0 << 3
+ << QStringList( QStringList() << "abc" << "c" << "c" );
+ QTest::newRow( stri + "qua11" ) << QString("((([a-j])){0,3})") << QString("abcde") << 0 << 3
+ << QStringList( QStringList() << "abc" << "c" << "c" );
+ QTest::newRow( stri + "qua12" ) << QString("((([a-j])){2,4})") << QString("a") << -1 << -1
+ << QStringList( QStringList() << QString()
+ << QString()
+ << QString() );
+ QTest::newRow( stri + "qua13" ) << QString("((([a-j])){2,4})") << QString("ab") << 0 << 2
+ << QStringList( QStringList() << "ab" << "b" << "b" );
+ QTest::newRow( stri + "qua14" ) << QString("((([a-j])){2,4})") << QString("abcd") << 0 << 4
+ << QStringList( QStringList() << "abcd" << "d" << "d" );
+ QTest::newRow( stri + "qua15" ) << QString("((([a-j])){2,4})") << QString("abcdef") << 0 << 4
+ << QStringList( QStringList() << "abcd" << "d" << "d" );
+ QTest::newRow( stri + "qua16" ) << QString("((([a-j])){2,4})") << QString("xaybcd") << 3 << 3
+ << QStringList( QStringList() << "bcd" << "d" << "d" );
+ QTest::newRow( stri + "qua17" ) << QString("((([a-j])){0,})") << QString("abcdefgh") << 0 << 8
+ << QStringList( QStringList() << "abcdefgh" << "h" << "h" );
+ QTest::newRow( stri + "qua18" ) << QString("((([a-j])){,0})") << QString("abcdefgh") << 0 << 0
+ << QStringList( QStringList() << "" << "" << "" );
+ QTest::newRow( stri + "qua19" ) << QString("(1(2(3){3,4}){2,3}){1,2}") << QString("123332333") << 0
+ << 9
+ << QStringList( QStringList() << "123332333" << "2333"
+ << "3" );
+ QTest::newRow( stri + "qua20" ) << QString("(1(2(3){3,4}){2,3}){1,2}")
+ << QString("12333323333233331233332333323333") << 0 << 32
+ << QStringList( QStringList() << "1233332333323333"
+ << "23333" << "3" );
+ QTest::newRow( stri + "qua21" ) << QString("(1(2(3){3,4}){2,3}){1,2}") << QString("") << -1 << -1
+ << QStringList( QStringList() << QString()
+ << QString()
+ << QString() );
+ QTest::newRow( stri + "qua22" ) << QString("(1(2(3){3,4}){2,3}){1,2}") << QString("12333") << -1
+ << -1
+ << QStringList( QStringList() << QString()
+ << QString()
+ << QString() );
+ QTest::newRow( stri + "qua23" ) << QString("(1(2(3){3,4}){2,3}){1,2}") << QString("12333233") << -1
+ << -1
+ << QStringList( QStringList() << QString()
+ << QString()
+ << QString() );
+ QTest::newRow( stri + "qua24" ) << QString("(1(2(3){3,4}){2,3}){1,2}") << QString("122333") << -1
+ << -1
+ << QStringList( QStringList() << QString()
+ << QString()
+ << QString() );
+
+ // star operator
+ QTest::newRow( stri + "star00" ) << QString("(?:)*") << QString("") << 0 << 0 << QStringList();
+ QTest::newRow( stri + "star01" ) << QString("(?:)*") << QString("abc") << 0 << 0 << QStringList();
+ QTest::newRow( stri + "star02" ) << QString("(?:a)*") << QString("") << 0 << 0 << QStringList();
+ QTest::newRow( stri + "star03" ) << QString("(?:a)*") << QString("a") << 0 << 1 << QStringList();
+ QTest::newRow( stri + "star04" ) << QString("(?:a)*") << QString("aaa") << 0 << 3 << QStringList();
+ QTest::newRow( stri + "star05" ) << QString("(?:a)*") << QString("bbbbaaa") << 0 << 0
+ << QStringList();
+ QTest::newRow( stri + "star06" ) << QString("(?:a)*") << QString("bbbbaaabbaaaaa") << 0 << 0
+ << QStringList();
+ QTest::newRow( stri + "star07" ) << QString("(?:b)*(?:a)*") << QString("") << 0 << 0
+ << QStringList();
+ QTest::newRow( stri + "star08" ) << QString("(?:b)*(?:a)*") << QString("a") << 0 << 1
+ << QStringList();
+ QTest::newRow( stri + "star09" ) << QString("(?:b)*(?:a)*") << QString("aaa") << 0 << 3
+ << QStringList();
+ QTest::newRow( stri + "star10" ) << QString("(?:b)*(?:a)*") << QString("bbbbaaa") << 0 << 7
+ << QStringList();
+ QTest::newRow( stri + "star11" ) << QString("(?:b)*(?:a)*") << QString("bbbbaaabbaaaaa") << 0 << 7
+ << QStringList();
+ QTest::newRow( stri + "star12" ) << QString("(?:a|b)*") << QString("c") << 0 << 0 << QStringList();
+ QTest::newRow( stri + "star13" ) << QString("(?:a|b)*") << QString("abac") << 0 << 3
+ << QStringList();
+ QTest::newRow( stri + "star14" ) << QString("(?:a|b|)*") << QString("c") << 0 << 0
+ << QStringList();
+ QTest::newRow( stri + "star15" ) << QString("(?:a|b|)*") << QString("abac") << 0 << 3
+ << QStringList();
+ QTest::newRow( stri + "star16" ) << QString("(?:ab|ba|b)*") << QString("abbbababbbaaab") << 0 << 11
+ << QStringList();
+}
+
+
+void tst_QRegExp::init()
+{
+}
+
+void tst_QRegExp::cleanup()
+{
+}
+
+/*
+void tst_QRegExp::isEmpty()
+{
+}
+
+void tst_QRegExp::isValid()
+{
+}
+
+void tst_QRegExp::pattern()
+{
+}
+
+void tst_QRegExp::setPattern()
+{
+}
+
+void tst_QRegExp::caseSensitive()
+{
+}
+
+void tst_QRegExp::setCaseSensitive()
+{
+}
+
+void tst_QRegExp::minimal()
+{
+}
+
+void tst_QRegExp::setMinimal()
+{
+}
+*/
+
+void tst_QRegExp::exactMatch()
+{
+ QRegExp rx_d( "\\d" );
+ QRegExp rx_s( "\\s" );
+ QRegExp rx_w( "\\w" );
+ QRegExp rx_D( "\\D" );
+ QRegExp rx_S( "\\S" );
+ QRegExp rx_W( "\\W" );
+
+ for ( int i = 0; i < 65536; i++ ) {
+ QChar ch( i );
+ bool is_d = ( ch.category() == QChar::Number_DecimalDigit );
+ bool is_s = ch.isSpace();
+ bool is_w = ( ch.isLetterOrNumber()
+ || ch.isMark()
+ || ch == '_' );
+
+ QVERIFY( rx_d.exactMatch(QString(ch)) == is_d );
+ QVERIFY( rx_s.exactMatch(QString(ch)) == is_s );
+ QVERIFY( rx_w.exactMatch(QString(ch)) == is_w );
+ QVERIFY( rx_D.exactMatch(QString(ch)) != is_d );
+ QVERIFY( rx_S.exactMatch(QString(ch)) != is_s );
+ QVERIFY( rx_W.exactMatch(QString(ch)) != is_w );
+ }
+}
+
+void tst_QRegExp::capturedTexts()
+{
+ QRegExp rx1("a*(a*)", Qt::CaseSensitive, QRegExp::RegExp);
+ rx1.exactMatch("aaa");
+ QCOMPARE(rx1.matchedLength(), 3);
+ QCOMPARE(rx1.cap(0), QString("aaa"));
+ QCOMPARE(rx1.cap(1), QString("aaa"));
+
+ QRegExp rx2("a*(a*)", Qt::CaseSensitive, QRegExp::RegExp2);
+ rx2.exactMatch("aaa");
+ QCOMPARE(rx2.matchedLength(), 3);
+ QCOMPARE(rx2.cap(0), QString("aaa"));
+ QCOMPARE(rx2.cap(1), QString(""));
+
+ QRegExp rx3("(?:a|aa)(a*)", Qt::CaseSensitive, QRegExp::RegExp);
+ rx3.exactMatch("aaa");
+ QCOMPARE(rx3.matchedLength(), 3);
+ QCOMPARE(rx3.cap(0), QString("aaa"));
+ QCOMPARE(rx3.cap(1), QString("aa"));
+
+ QRegExp rx4("(?:a|aa)(a*)", Qt::CaseSensitive, QRegExp::RegExp2);
+ rx4.exactMatch("aaa");
+ QCOMPARE(rx4.matchedLength(), 3);
+ QCOMPARE(rx4.cap(0), QString("aaa"));
+ QCOMPARE(rx4.cap(1), QString("a"));
+
+ QRegExp rx5("(a)*(a*)", Qt::CaseSensitive, QRegExp::RegExp);
+ rx5.exactMatch("aaa");
+ QCOMPARE(rx5.matchedLength(), 3);
+ QCOMPARE(rx5.cap(0), QString("aaa"));
+ QCOMPARE(rx5.cap(1), QString("a"));
+ QCOMPARE(rx5.cap(2), QString("aa"));
+
+ QRegExp rx6("(a)*(a*)", Qt::CaseSensitive, QRegExp::RegExp2);
+ rx6.exactMatch("aaa");
+ QCOMPARE(rx6.matchedLength(), 3);
+ QCOMPARE(rx6.cap(0), QString("aaa"));
+ QCOMPARE(rx6.cap(1), QString("a"));
+ QCOMPARE(rx6.cap(2), QString(""));
+
+ QRegExp rx7("([A-Za-z_])([A-Za-z_0-9]*)");
+ rx7.setCaseSensitivity(Qt::CaseSensitive);
+ rx7.setPatternSyntax(QRegExp::RegExp);
+ QCOMPARE(rx7.captureCount(), 2);
+
+ int pos = rx7.indexIn("(10 + delta4) * 32");
+ QCOMPARE(pos, 6);
+ QCOMPARE(rx7.matchedLength(), 6);
+ QCOMPARE(rx7.cap(0), QString("delta4"));
+ QCOMPARE(rx7.cap(1), QString("d"));
+ QCOMPARE(rx7.cap(2), QString("elta4"));
+}
+
+/*
+void tst_QRegExp::cap()
+{
+}
+
+void tst_QRegExp::pos()
+{
+}
+
+void tst_QRegExp::errorString()
+{
+}
+
+void tst_QRegExp::escape()
+{
+}
+*/
+
+void tst_QRegExp::indexIn()
+{
+ QFETCH( QString, regexpStr );
+ QFETCH( QString, target );
+ QFETCH( int, pos );
+ QFETCH( int, len );
+ QFETCH( QStringList, caps );
+
+ caps.prepend( "dummy cap(0)" );
+
+ {
+ QRegExp rx( regexpStr );
+ QVERIFY( rx.isValid() );
+
+ int mypos = rx.indexIn( target );
+ int mylen = rx.matchedLength();
+ QStringList mycaps = rx.capturedTexts();
+
+ QCOMPARE( mypos, pos );
+ QCOMPARE( mylen, len );
+ if ( caps.size() > 1 && caps[1] != "IGNORE ME" ) {
+ QCOMPARE( mycaps.count(), caps.count() );
+ for ( int i = 1; i < (int) mycaps.count(); i++ )
+ QCOMPARE( mycaps[i], caps[i] );
+ }
+ }
+
+ // same as above, but with RegExp2
+ {
+ QRegExp rx( regexpStr, Qt::CaseSensitive, QRegExp::RegExp2 );
+ QVERIFY( rx.isValid() );
+
+ int mypos = rx.indexIn( target );
+ int mylen = rx.matchedLength();
+ QStringList mycaps = rx.capturedTexts();
+
+ QCOMPARE( mypos, pos );
+ QCOMPARE( mylen, len );
+ if ( caps.size() > 1 && caps[1] != "IGNORE ME" ) {
+ QCOMPARE( mycaps.count(), caps.count() );
+ for ( int i = 1; i < (int) mycaps.count(); i++ )
+ QCOMPARE( mycaps[i], caps[i] );
+ }
+ }
+}
+
+void tst_QRegExp::lastIndexIn()
+{
+ QFETCH( QString, regexpStr );
+ QFETCH( QString, target );
+ QFETCH( int, pos );
+ QFETCH( int, len );
+ QFETCH( QStringList, caps );
+
+ caps.prepend( "dummy" );
+
+ /*
+ The test data was really designed for indexIn(), not
+ lastIndexIn(), but it turns out that we can reuse much of that
+ for lastIndexIn().
+ */
+
+ {
+ QRegExp rx( regexpStr );
+ QVERIFY( rx.isValid() );
+
+ int mypos = rx.lastIndexIn( target, target.length() );
+ int mylen = rx.matchedLength();
+ QStringList mycaps = rx.capturedTexts();
+
+ if ( mypos <= pos || pos == -1 ) {
+ QCOMPARE( mypos, pos );
+ QCOMPARE( mylen, len );
+
+ if (caps.size() > 1 && caps[1] != "IGNORE ME") {
+ QCOMPARE( mycaps.count(), caps.count() );
+ for ( int i = 1; i < (int) mycaps.count(); i++ )
+ QCOMPARE( mycaps[i], caps[i] );
+ }
+ }
+ }
+
+ {
+ QRegExp rx( regexpStr, Qt::CaseSensitive, QRegExp::RegExp2 );
+ QVERIFY( rx.isValid() );
+
+ int mypos = rx.lastIndexIn( target, target.length() );
+ int mylen = rx.matchedLength();
+ QStringList mycaps = rx.capturedTexts();
+
+ if ( mypos <= pos || pos == -1 ) {
+ QCOMPARE( mypos, pos );
+ QCOMPARE( mylen, len );
+
+ if (caps.size() > 1 && caps[1] != "IGNORE ME") {
+ QCOMPARE( mycaps.count(), caps.count() );
+ for ( int i = 1; i < (int) mycaps.count(); i++ )
+ QCOMPARE( mycaps[i], caps[i] );
+ }
+ }
+ }
+}
+
+void tst_QRegExp::matchedLength()
+{
+ QRegExp r1( "a+" );
+ r1.exactMatch( "aaaba" );
+ QCOMPARE( r1.matchedLength(), 3 );
+}
+
+const char email[] =
+ "^[\\040\\t]*(?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff"
+ "]|\\([^\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\x"
+ "ff\\n\\015()]*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*(?:"
+ "(?:[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+(?![^(\\040)<>@"
+ ",;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff])|\"[^\\\\\\x80-\\xff\\n\\015\""
+ "]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015\"]*)*\")[\\040\\t]*(?"
+ ":\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\x"
+ "80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]*"
+ ")*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*(?:\\.[\\040\\t]*"
+ "(?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\"
+ "\\x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015("
+ ")]*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*(?:[^(\\040)<>"
+ "@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+(?![^(\\040)<>@,;:\".\\\\\\["
+ "\\]\\000-\\037\\x80-\\xff])|\"[^\\\\\\x80-\\xff\\n\\015\"]*(?:\\\\[^\\"
+ "x80-\\xff][^\\\\\\x80-\\xff\\n\\015\"]*)*\")[\\040\\t]*(?:\\([^\\\\\\x"
+ "80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\x80-\\xff\\n\\"
+ "015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]*)*\\))[^\\\\"
+ "\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*)*@[\\040\\t]*(?:\\([^\\\\\\x"
+ "80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\x80-\\xff\\n\\"
+ "015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]*)*\\))[^\\\\"
+ "\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*(?:[^(\\040)<>@,;:\".\\\\\\["
+ "\\]\\000-\\037\\x80-\\xff]+(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037"
+ "\\x80-\\xff])|\\[(?:[^\\\\\\x80-\\xff\\n\\015\\[\\]]|\\\\[^\\x80-\\xff"
+ "])*\\])[\\040\\t]*(?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80"
+ "-\\xff]|\\([^\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x"
+ "80-\\xff\\n\\015()]*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]"
+ "*)*(?:\\.[\\040\\t]*(?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x"
+ "80-\\xff]|\\([^\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\"
+ "\\x80-\\xff\\n\\015()]*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040"
+ "\\t]*)*(?:[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+(?![^(\\"
+ "040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff])|\\[(?:[^\\\\\\x80-\\xf"
+ "f\\n\\015\\[\\]]|\\\\[^\\x80-\\xff])*\\])[\\040\\t]*(?:\\([^\\\\\\x80-"
+ "\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\x80-\\xff\\n\\015"
+ "()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]*)*\\))[^\\\\\\x8"
+ "0-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*)*|(?:[^(\\040)<>@,;:\".\\\\\\[\\"
+ "]\\000-\\037\\x80-\\xff]+(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x"
+ "80-\\xff])|\"[^\\\\\\x80-\\xff\\n\\015\"]*(?:\\\\[^\\x80-\\xff][^\\\\"
+ "\\x80-\\xff\\n\\015\"]*)*\")[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\"
+ "010\\012-\\037]*(?:(?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x8"
+ "0-\\xff]|\\([^\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\"
+ "x80-\\xff\\n\\015()]*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)|\"[^\\\\"
+ "\\x80-\\xff\\n\\015\"]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015"
+ "\"]*)*\")[^()<>@,;:\".\\\\\\[\\]\\x80-\\xff\\000-\\010\\012-\\037]*)*<"
+ "[\\040\\t]*(?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]"
+ "|\\([^\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xf"
+ "f\\n\\015()]*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*(?:@"
+ "[\\040\\t]*(?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]"
+ "|\\([^\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xf"
+ "f\\n\\015()]*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*(?:["
+ "^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+(?![^(\\040)<>@,;:"
+ "\".\\\\\\[\\]\\000-\\037\\x80-\\xff])|\\[(?:[^\\\\\\x80-\\xff\\n\\015"
+ "\\[\\]]|\\\\[^\\x80-\\xff])*\\])[\\040\\t]*(?:\\([^\\\\\\x80-\\xff\\n"
+ "\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\x80-\\xff\\n\\015()]*(?:"
+ "\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]*)*\\))[^\\\\\\x80-\\xff"
+ "\\n\\015()]*)*\\)[\\040\\t]*)*(?:\\.[\\040\\t]*(?:\\([^\\\\\\x80-\\xff"
+ "\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\x80-\\xff\\n\\015()]*("
+ "?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]*)*\\))[^\\\\\\x80-\\x"
+ "ff\\n\\015()]*)*\\)[\\040\\t]*)*(?:[^(\\040)<>@,;:\".\\\\\\[\\]\\000-"
+ "\\037\\x80-\\xff]+(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xf"
+ "f])|\\[(?:[^\\\\\\x80-\\xff\\n\\015\\[\\]]|\\\\[^\\x80-\\xff])*\\])[\\"
+ "040\\t]*(?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\"
+ "([^\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\"
+ "n\\015()]*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*)*(?:,["
+ "\\040\\t]*(?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|"
+ "\\([^\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff"
+ "\\n\\015()]*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*@[\\0"
+ "40\\t]*(?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\("
+ "[^\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n"
+ "\\015()]*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*(?:[^(\\"
+ "040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+(?![^(\\040)<>@,;:\".\\"
+ "\\\\[\\]\\000-\\037\\x80-\\xff])|\\[(?:[^\\\\\\x80-\\xff\\n\\015\\[\\]"
+ "]|\\\\[^\\x80-\\xff])*\\])[\\040\\t]*(?:\\([^\\\\\\x80-\\xff\\n\\015()"
+ "]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^\\"
+ "x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]*)*\\))[^\\\\\\x80-\\xff\\n\\015"
+ "()]*)*\\)[\\040\\t]*)*(?:\\.[\\040\\t]*(?:\\([^\\\\\\x80-\\xff\\n\\015"
+ "()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^"
+ "\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]*)*\\))[^\\\\\\x80-\\xff\\n\\0"
+ "15()]*)*\\)[\\040\\t]*)*(?:[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x8"
+ "0-\\xff]+(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff])|\\[(?"
+ ":[^\\\\\\x80-\\xff\\n\\015\\[\\]]|\\\\[^\\x80-\\xff])*\\])[\\040\\t]*("
+ "?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\"
+ "x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]"
+ "*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*)*)*:[\\040\\t]*"
+ "(?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\"
+ "\\x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015("
+ ")]*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*)?(?:[^(\\040)"
+ "<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+(?![^(\\040)<>@,;:\".\\\\\\"
+ "[\\]\\000-\\037\\x80-\\xff])|\"[^\\\\\\x80-\\xff\\n\\015\"]*(?:\\\\[^"
+ "\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015\"]*)*\")[\\040\\t]*(?:\\([^\\\\"
+ "\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\x80-\\xff\\"
+ "n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]*)*\\))[^\\"
+ "\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*(?:\\.[\\040\\t]*(?:\\([^\\"
+ "\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\x80-\\xff"
+ "\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]*)*\\))[^"
+ "\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*(?:[^(\\040)<>@,;:\".\\\\"
+ "\\[\\]\\000-\\037\\x80-\\xff]+(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\0"
+ "37\\x80-\\xff])|\"[^\\\\\\x80-\\xff\\n\\015\"]*(?:\\\\[^\\x80-\\xff][^"
+ "\\\\\\x80-\\xff\\n\\015\"]*)*\")[\\040\\t]*(?:\\([^\\\\\\x80-\\xff\\n"
+ "\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\x80-\\xff\\n\\015()]*(?:"
+ "\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]*)*\\))[^\\\\\\x80-\\xff"
+ "\\n\\015()]*)*\\)[\\040\\t]*)*)*@[\\040\\t]*(?:\\([^\\\\\\x80-\\xff\\n"
+ "\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\x80-\\xff\\n\\015()]*(?:"
+ "\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]*)*\\))[^\\\\\\x80-\\xff"
+ "\\n\\015()]*)*\\)[\\040\\t]*)*(?:[^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\0"
+ "37\\x80-\\xff]+(?![^(\\040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff])"
+ "|\\[(?:[^\\\\\\x80-\\xff\\n\\015\\[\\]]|\\\\[^\\x80-\\xff])*\\])[\\040"
+ "\\t]*(?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\([^"
+ "\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\"
+ "015()]*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*(?:\\.[\\0"
+ "40\\t]*(?:\\([^\\\\\\x80-\\xff\\n\\015()]*(?:(?:\\\\[^\\x80-\\xff]|\\("
+ "[^\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n"
+ "\\015()]*)*\\))[^\\\\\\x80-\\xff\\n\\015()]*)*\\)[\\040\\t]*)*(?:[^(\\"
+ "040)<>@,;:\".\\\\\\[\\]\\000-\\037\\x80-\\xff]+(?![^(\\040)<>@,;:\".\\"
+ "\\\\[\\]\\000-\\037\\x80-\\xff])|\\[(?:[^\\\\\\x80-\\xff\\n\\015\\[\\]"
+ "]|\\\\[^\\x80-\\xff])*\\])[\\040\\t]*(?:\\([^\\\\\\x80-\\xff\\n\\015()"
+ "]*(?:(?:\\\\[^\\x80-\\xff]|\\([^\\\\\\x80-\\xff\\n\\015()]*(?:\\\\[^\\"
+ "x80-\\xff][^\\\\\\x80-\\xff\\n\\015()]*)*\\))[^\\\\\\x80-\\xff\\n\\015"
+ "()]*)*\\)[\\040\\t]*)*)*>)$";
+
+void tst_QRegExp::wildcard_data()
+{
+ QTest::addColumn<QString>("rxp");
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<int>("foundIndex");
+
+ QTest::newRow( "data0" ) << QString("*.html") << QString("test.html") << 0;
+ QTest::newRow( "data1" ) << QString("*.html") << QString("test.htm") << -1;
+ QTest::newRow( "data2" ) << QString("bar*") << QString("foobarbaz") << 3;
+ QTest::newRow( "data3" ) << QString("*") << QString("Trolltech") << 0;
+ QTest::newRow( "data4" ) << QString(".html") << QString("test.html") << 4;
+ QTest::newRow( "data5" ) << QString(".h") << QString("test.cpp") << -1;
+ QTest::newRow( "data6" ) << QString(".???l") << QString("test.html") << 4;
+ QTest::newRow( "data7" ) << QString("?") << QString("test.html") << 0;
+ QTest::newRow( "data8" ) << QString("?m") << QString("test.html") << 6;
+ QTest::newRow( "data9" ) << QString(".h[a-z]ml") << QString("test.html") << 4;
+ QTest::newRow( "data10" ) << QString(".h[A-Z]ml") << QString("test.html") << -1;
+ QTest::newRow( "data11" ) << QString(".h[A-Z]ml") << QString("test.hTml") << 4;
+}
+
+void tst_QRegExp::wildcard()
+{
+ QFETCH( QString, rxp );
+ QFETCH( QString, string );
+ QFETCH( int, foundIndex );
+
+ QRegExp r( rxp );
+ r.setPatternSyntax(QRegExp::WildcardUnix);
+ QCOMPARE( r.indexIn( string ), foundIndex );
+}
+
+void tst_QRegExp::testEscapingWildcard_data(){
+ QTest::addColumn<QString>("pattern");
+ QTest::addColumn<QString>("teststring");
+ QTest::addColumn<bool>("isMatching");
+
+ QTest::newRow("[ Not escaped") << "[Qt;" << "[Qt;" << false;
+ QTest::newRow("[ Escaped") << "\\[Qt;" << "[Qt;" << true;
+
+ QTest::newRow("] Not escaped") << "]Ik;" << "]Ik;" << false;
+ QTest::newRow("] Escaped") << "\\]Ip;" << "]Ip;" << true;
+
+ QTest::newRow("? Not escaped valid") << "?Ou:" << ".Ou:" << true;
+ QTest::newRow("? Not escaped invalid") << "?Tr;" << "Tr;" << false;
+ QTest::newRow("? Escaped") << "\\?O;" << "?O;" << true;
+
+ QTest::newRow("[] not escaped") << "[lL]" << "l" << true;
+ QTest::newRow("case [[]") << "[[abc]" << "[" << true;
+ QTest::newRow("case []abc] match ]") << "[]abc]" << "]" << true;
+ QTest::newRow("case []abc] match a") << "[]abc]" << "a" << true;
+ QTest::newRow("case [abc] match a") << "[abc]" << "a" << true;
+ QTest::newRow("case []] don't match [") << "[]abc]" << "[" << false;
+ QTest::newRow("case [^]abc] match d") << "[^]abc]" << "d" << true;
+ QTest::newRow("case [^]abc] don't match ]") << "[^]abc]" << "]" << false;
+
+ QTest::newRow("* Not escaped with char") << "*Te;" << "12345Te;" << true;
+ QTest::newRow("* Not escaped without char") << "*Ch;" << "Ch;" << true;
+ QTest::newRow("* Not escaped invalid") << "*Ro;" << "o;" << false;
+ QTest::newRow("* Escaped") << "\\[Cks;" << "[Cks;" << true;
+
+ QTest::newRow("a true '\\' in input") << "\\Qt;" << "\\Qt;" << true;
+ QTest::newRow("two true '\\' in input") << "\\\\Qt;" << "\\\\Qt;" << true;
+ QTest::newRow("a '\\' at the end") << "\\\\Qt;" << "\\\\Qt;" << true;
+
+}
+void tst_QRegExp::testEscapingWildcard(){
+ QFETCH(QString, pattern);
+
+ QRegExp re(pattern);
+ re.setPatternSyntax(QRegExp::WildcardUnix);
+
+ QFETCH(QString, teststring);
+ QFETCH(bool, isMatching);
+ QCOMPARE(re.exactMatch(teststring), isMatching);
+}
+
+void tst_QRegExp::testInvalidWildcard_data(){
+ QTest::addColumn<QString>("pattern");
+ QTest::addColumn<bool>("isValid");
+
+ QTest::newRow("valid []") << "[abc]" << true;
+ QTest::newRow("invalid [") << "[abc" << false;
+ QTest::newRow("ending [") << "abc[" << false;
+ QTest::newRow("ending ]") << "abc]" << false;
+ QTest::newRow("ending [^") << "abc[^" << false;
+ QTest::newRow("ending [\\") << "abc[\\" << false;
+ QTest::newRow("ending []") << "abc[]" << false;
+ QTest::newRow("ending [[") << "abc[[" << false;
+
+}
+void tst_QRegExp::testInvalidWildcard(){
+ QFETCH(QString, pattern);
+
+ QRegExp re(pattern);
+ re.setPatternSyntax(QRegExp::Wildcard);
+
+ QFETCH(bool, isValid);
+ QCOMPARE(re.isValid(), isValid);
+}
+
+void tst_QRegExp::caretAnchoredOptimization()
+{
+ QString s = "---babnana----";
+ s.replace( QRegExp("^-*|(-*)$"), "" );
+ QVERIFY(s == "babnana");
+
+ s = "---babnana----";
+ s.replace( QRegExp("^-*|(-{0,})$"), "" );
+ QVERIFY(s == "babnana");
+
+ s = "---babnana----";
+ s.replace( QRegExp("^-*|(-{1,})$"), "" );
+ QVERIFY(s == "babnana");
+
+ s = "---babnana----";
+ s.replace( QRegExp("^-*|(-+)$"), "" );
+ QVERIFY(s == "babnana");
+}
+
+void tst_QRegExp::isEmpty()
+{
+ QRegExp rx1;
+ QVERIFY(rx1.isEmpty());
+
+ QRegExp rx2 = rx1;
+ QVERIFY(rx2.isEmpty());
+
+ rx2.setPattern("");
+ QVERIFY(rx2.isEmpty());
+
+ rx2.setPattern("foo");
+ QVERIFY(!rx2.isEmpty());
+
+ rx2.setPattern(")(");
+ QVERIFY(!rx2.isEmpty());
+
+ rx2.setPattern("");
+ QVERIFY(rx2.isEmpty());
+
+ rx2.setPatternSyntax(QRegExp::Wildcard);
+ rx2.setPattern("");
+ QVERIFY(rx2.isEmpty());
+}
+
+static QRegExp re("foo.*bar");
+
+void tst_QRegExp::staticRegExp()
+{
+ QVERIFY(re.exactMatch("fooHARRYbar"));
+ // the actual test is that a static regexp should not crash
+}
+
+void tst_QRegExp::rainersSlowRegExpCopyBug()
+{
+ // this test should take an extreme amount of time if QRegExp is broken
+ QRegExp original(email);
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ for (int i = 0; i < 100; ++i) {
+#else
+ for (int i = 0; i < 100000; ++i) {
+#endif
+ QRegExp copy = original;
+ (void)copy.exactMatch("~");
+ QRegExp copy2 = original;
+ }
+}
+
+void tst_QRegExp::nonExistingBackReferenceBug()
+{
+ {
+ QRegExp rx("<\\5>");
+ QVERIFY(rx.isValid());
+ QCOMPARE(rx.indexIn("<>"), 0);
+ QCOMPARE(rx.capturedTexts(), QStringList("<>"));
+ }
+
+ {
+ QRegExp rx("<\\1>");
+ QVERIFY(rx.isValid());
+ QCOMPARE(rx.indexIn("<>"), 0);
+ QCOMPARE(rx.capturedTexts(), QStringList("<>"));
+ }
+
+ {
+ QRegExp rx("(?:<\\1>)\\1\\5\\4");
+ QVERIFY(rx.isValid());
+ QCOMPARE(rx.indexIn("<>"), 0);
+ QCOMPARE(rx.capturedTexts(), QStringList("<>"));
+ }
+}
+
+class Thread : public QThread
+{
+public:
+ Thread(const QRegExp &rx) : rx(rx) {}
+
+ void run();
+
+ QRegExp rx;
+};
+
+void Thread::run()
+{
+ QString str = "abc";
+ for (int i = 0; i < 10; ++i)
+ str += str;
+ str += "abbbdekcz";
+ int x;
+
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+ for (int j = 0; j < 100; ++j) {
+#else
+ for (int j = 0; j < 10000; ++j) {
+#endif
+ x = rx.indexIn(str);
+ }
+ QCOMPARE(x, 3072);
+}
+
+void tst_QRegExp::reentrancy()
+{
+ QRegExp rx("(ab{2,}d?e?f?[g-z]?)c");
+ Thread *threads[10];
+
+ for (int i = 0; i < int(sizeof(threads) / sizeof(threads[0])); ++i) {
+ threads[i] = new Thread(rx);
+ threads[i]->start();
+ }
+
+ for (int i = 0; i < int(sizeof(threads) / sizeof(threads[0])); ++i)
+ threads[i]->wait();
+
+ for (int i = 0; i < int(sizeof(threads) / sizeof(threads[0])); ++i)
+ delete threads[i];
+}
+
+class Thread2 : public QThread
+{
+public:
+ void run();
+};
+
+void Thread2::run()
+{
+ QRegExp rx("(ab{2,}d?e?f?[g-z]?)c");
+ QString str = "abc";
+ for (int i = 0; i < 10; ++i)
+ str += str;
+ str += "abbbdekcz";
+ int x;
+
+#if defined(Q_OS_WINCE)
+ for (int j = 0; j < 100; ++j) {
+#else
+ for (int j = 0; j < 10000; ++j) {
+#endif
+ x = rx.indexIn(str);
+ }
+ QCOMPARE(x, 3072);
+}
+
+// Test that multiple threads can construct equal QRegExps.
+// (In the current QRegExp design each engine instatance will share
+// the same cache key, so the threads will race for the cache entry
+// in the global cache.)
+void tst_QRegExp::threadsafeEngineCache()
+{
+ Thread2 *threads[10];
+
+ for (int i = 0; i < int(sizeof(threads) / sizeof(threads[0])); ++i) {
+ threads[i] = new Thread2();
+ threads[i]->start();
+ }
+
+ for (int i = 0; i < int(sizeof(threads) / sizeof(threads[0])); ++i)
+ threads[i]->wait();
+
+ for (int i = 0; i < int(sizeof(threads) / sizeof(threads[0])); ++i)
+ delete threads[i];
+}
+
+
+void tst_QRegExp::prepareEngineOptimization()
+{
+ QRegExp rx0("(f?)(?:(o?)(o?))?");
+
+ QRegExp rx1(rx0);
+
+ QCOMPARE(rx1.capturedTexts(), QStringList() << "" << "" << "" << "");
+ QCOMPARE(rx1.matchedLength(), -1);
+ QCOMPARE(rx1.matchedLength(), -1);
+ QCOMPARE(rx1.captureCount(), 3);
+
+ QCOMPARE(rx1.exactMatch("foo"), true);
+ QCOMPARE(rx1.matchedLength(), 3);
+ QCOMPARE(rx1.capturedTexts(), QStringList() << "foo" << "f" << "o" << "o");
+ QCOMPARE(rx1.captureCount(), 3);
+ QCOMPARE(rx1.matchedLength(), 3);
+ QCOMPARE(rx1.capturedTexts(), QStringList() << "foo" << "f" << "o" << "o");
+ QCOMPARE(rx1.pos(3), 2);
+
+ QCOMPARE(rx1.exactMatch("foo"), true);
+ QCOMPARE(rx1.captureCount(), 3);
+ QCOMPARE(rx1.matchedLength(), 3);
+ QCOMPARE(rx1.capturedTexts(), QStringList() << "foo" << "f" << "o" << "o");
+ QCOMPARE(rx1.pos(3), 2);
+
+ QRegExp rx2 = rx1;
+
+ QCOMPARE(rx1.captureCount(), 3);
+ QCOMPARE(rx1.matchedLength(), 3);
+ QCOMPARE(rx1.capturedTexts(), QStringList() << "foo" << "f" << "o" << "o");
+ QCOMPARE(rx1.pos(3), 2);
+
+ QCOMPARE(rx2.captureCount(), 3);
+ QCOMPARE(rx2.matchedLength(), 3);
+ QCOMPARE(rx2.capturedTexts(), QStringList() << "foo" << "f" << "o" << "o");
+ QCOMPARE(rx2.pos(3), 2);
+
+ QCOMPARE(rx1.exactMatch("fo"), true);
+ QCOMPARE(rx1.captureCount(), 3);
+ QCOMPARE(rx1.matchedLength(), 2);
+ QCOMPARE(rx1.capturedTexts(), QStringList() << "fo" << "f" << "o" << "");
+ QCOMPARE(rx1.pos(2), 1);
+#if 0
+ QCOMPARE(rx1.pos(3), -1); // ###
+#endif
+
+ QRegExp rx3;
+ QVERIFY(rx3.isValid());
+
+ QRegExp rx4("foo", Qt::CaseInsensitive, QRegExp::RegExp);
+ QVERIFY(rx4.isValid());
+
+ QRegExp rx5("foo", Qt::CaseInsensitive, QRegExp::RegExp2);
+ QVERIFY(rx5.isValid());
+
+ QRegExp rx6("foo", Qt::CaseInsensitive, QRegExp::FixedString);
+ QVERIFY(rx6.isValid());
+
+ QRegExp rx7("foo", Qt::CaseInsensitive, QRegExp::Wildcard);
+ QVERIFY(rx7.isValid());
+
+ QRegExp rx8("][", Qt::CaseInsensitive, QRegExp::RegExp);
+ QVERIFY(!rx8.isValid());
+
+ QRegExp rx9("][", Qt::CaseInsensitive, QRegExp::RegExp2);
+ QVERIFY(!rx9.isValid());
+
+ QRegExp rx10("][", Qt::CaseInsensitive, QRegExp::Wildcard);
+ QVERIFY(!rx10.isValid());
+
+ QRegExp rx11("][", Qt::CaseInsensitive, QRegExp::FixedString);
+ QVERIFY(rx11.isValid());
+ QVERIFY(rx11.exactMatch("]["));
+ QCOMPARE(rx11.matchedLength(), 2);
+
+ rx11.setPatternSyntax(QRegExp::Wildcard);
+ QVERIFY(!rx11.isValid());
+ QCOMPARE(rx11.captureCount(), 0);
+ QCOMPARE(rx11.matchedLength(), -1);
+
+ rx11.setPatternSyntax(QRegExp::RegExp);
+ QVERIFY(!rx11.isValid());
+ QCOMPARE(rx11.captureCount(), 0);
+ QCOMPARE(rx11.matchedLength(), -1);
+
+ rx11.setPattern("(foo)");
+ QVERIFY(rx11.isValid());
+ QCOMPARE(rx11.captureCount(), 1);
+ QCOMPARE(rx11.matchedLength(), -1);
+
+ QCOMPARE(rx11.indexIn("ofoo"), 1);
+ QCOMPARE(rx11.captureCount(), 1);
+ QCOMPARE(rx11.matchedLength(), 3);
+
+ rx11.setPatternSyntax(QRegExp::RegExp);
+ QCOMPARE(rx11.captureCount(), 1);
+ QCOMPARE(rx11.matchedLength(), 3);
+
+ /*
+ This behavior isn't entirely consistent with setPatter(),
+ setPatternSyntax(), and setCaseSensitivity(), but I'm testing
+ it here to ensure that it doesn't change subtly in future
+ releases.
+ */
+ rx11.setMinimal(true);
+ QCOMPARE(rx11.matchedLength(), 3);
+ rx11.setMinimal(false);
+ QCOMPARE(rx11.matchedLength(), 3);
+
+ rx11.setPatternSyntax(QRegExp::Wildcard);
+ QCOMPARE(rx11.captureCount(), 0);
+ QCOMPARE(rx11.matchedLength(), -1);
+
+ rx11.setPatternSyntax(QRegExp::RegExp);
+ QCOMPARE(rx11.captureCount(), 1);
+ QCOMPARE(rx11.matchedLength(), -1);
+}
+
+void tst_QRegExp::swap()
+{
+ QRegExp r1(QLatin1String(".*")), r2(QLatin1String("a*"));
+ r1.swap(r2);
+ QCOMPARE(r1.pattern(),QLatin1String("a*"));
+ QCOMPARE(r2.pattern(),QLatin1String(".*"));
+}
+
+void tst_QRegExp::operator_eq()
+{
+ const int I = 2;
+ const int J = 4;
+ const int K = 2;
+ const int ELL = 2;
+ QRegExp rxtable[I * J * K * ELL];
+ int n;
+
+ n = 0;
+ for (int i = 0; i < I; ++i) {
+ for (int j = 0; j < J; ++j) {
+ for (int k = 0; k < K; ++k) {
+ for (int ell = 0; ell < ELL; ++ell) {
+ Qt::CaseSensitivity cs = i == 0 ? Qt::CaseSensitive : Qt::CaseInsensitive;
+ QRegExp::PatternSyntax syntax = QRegExp::PatternSyntax(j);
+ bool minimal = k == 0;
+
+ if (ell == 0) {
+ QRegExp rx("foo", cs, syntax);
+ rx.setMinimal(minimal);
+ rxtable[n++] = rx;
+ } else {
+ QRegExp rx;
+ rx.setPattern("bar");
+ rx.setMinimal(true);
+ rx.exactMatch("bar");
+ rx.setCaseSensitivity(cs);
+ rx.setMinimal(minimal);
+ rx.setPattern("foo");
+ rx.setPatternSyntax(syntax);
+ rx.exactMatch("foo");
+ rxtable[n++] = rx;
+ }
+ }
+ }
+ }
+ }
+
+ for (int i = 0; i < I * J * K * ELL; ++i) {
+ for (int j = 0; j < I * J * K * ELL; ++j) {
+ QCOMPARE(rxtable[i] == rxtable[j], i / ELL == j / ELL);
+ QCOMPARE(rxtable[i] != rxtable[j], i / ELL != j / ELL);
+ }
+ }
+}
+
+void tst_QRegExp::QTBUG_7049_data()
+{
+ QTest::addColumn<QString>("reStr");
+ QTest::addColumn<QString>("text");
+ QTest::addColumn<int>("matchIndex");
+
+ QTest::addColumn<int>("pos0");
+ QTest::addColumn<int>("pos1");
+ QTest::addColumn<int>("pos2");
+
+ QTest::addColumn<QString>("cap0");
+ QTest::addColumn<QString>("cap1");
+ QTest::addColumn<QString>("cap2");
+
+ QTest::newRow("no match")
+ << QString("(a) (b)") << QString("b a") << -1
+ << -1 << -1 << -1 << QString() << QString() << QString();
+
+ QTest::newRow("both captures match")
+ << QString("(a) (b)") << QString("a b") << 0
+ << 0 << 0 << 2 << QString("a b") << QString("a") << QString("b");
+
+ QTest::newRow("first capture matches @0")
+ << QString("(a*)|(b*)") << QString("axx") << 0
+ << 0 << 0 << -1 << QString("a") << QString("a") << QString();
+ QTest::newRow("second capture matches @0")
+ << QString("(a*)|(b*)") << QString("bxx") << 0
+ << 0 << -1 << 0 << QString("b") << QString() << QString("b");
+ QTest::newRow("first capture empty match @0")
+ << QString("(a*)|(b*)") << QString("xx") << 0
+ << 0 << -1 << -1 << QString("") << QString() << QString();
+ QTest::newRow("second capture empty match @0")
+ << QString("(a)|(b*)") << QString("xx") << 0
+ << 0 << -1 << -1 << QString("") << QString() << QString();
+
+ QTest::newRow("first capture matches @1")
+ << QString("x(?:(a*)|(b*))") << QString("-xa") << 1
+ << 1 << 2 << -1 << QString("xa") << QString("a") << QString();
+ QTest::newRow("second capture matches @1")
+ << QString("x(?:(a*)|(b*))") << QString("-xb") << 1
+ << 1 << -1 << 2 << QString("xb") << QString() << QString("b");
+ QTest::newRow("first capture empty match @1")
+ << QString("x(?:(a*)|(b*))") << QString("-xx") << 1
+ << 1 << -1 << -1 << QString("x") << QString() << QString();
+ QTest::newRow("second capture empty match @1")
+ << QString("x(?:(a)|(b*))") << QString("-xx") << 1
+ << 1 << -1 << -1 << QString("x") << QString() << QString();
+
+ QTest::newRow("first capture matches @2")
+ << QString("(a)|(b)") << QString("xxa") << 2
+ << 2 << 2 << -1 << QString("a") << QString("a") << QString();
+ QTest::newRow("second capture matches @2")
+ << QString("(a)|(b)") << QString("xxb") << 2
+ << 2 << -1 << 2 << QString("b") << QString() << QString("b");
+ QTest::newRow("no match - with options")
+ << QString("(a)|(b)") << QString("xx") << -1
+ << -1 << -1 << -1 << QString() << QString() << QString();
+
+}
+
+void tst_QRegExp::QTBUG_7049()
+{
+ QFETCH( QString, reStr );
+ QFETCH( QString, text );
+ QFETCH( int, matchIndex );
+ QFETCH( int, pos0 );
+ QFETCH( int, pos1 );
+ QFETCH( int, pos2 );
+ QFETCH( QString, cap0 );
+ QFETCH( QString, cap1 );
+ QFETCH( QString, cap2 );
+
+ QRegExp re(reStr);
+ QCOMPARE(re.numCaptures(), 2);
+ QCOMPARE(re.capturedTexts().size(), 3);
+
+ QCOMPARE(re.indexIn(text), matchIndex);
+
+ QCOMPARE( re.pos(0), pos0 );
+ QCOMPARE( re.pos(1), pos1 );
+ QCOMPARE( re.pos(2), pos2 );
+
+ QCOMPARE( re.cap(0).isNull(), cap0.isNull() );
+ QCOMPARE( re.cap(0), cap0 );
+ QCOMPARE( re.cap(1).isNull(), cap1.isNull() );
+ QCOMPARE( re.cap(1), cap1 );
+ QCOMPARE( re.cap(2).isNull(), cap2.isNull() );
+ QCOMPARE( re.cap(2), cap2 );
+}
+
+void tst_QRegExp::interval()
+{
+ {
+ QRegExp exp("a{0,1}");
+ QVERIFY(exp.isValid());
+ }
+ {
+ QRegExp exp("a{1,1}");
+ QVERIFY(exp.isValid());
+ }
+ {
+ QRegExp exp("a{1,0}");
+ QVERIFY(!exp.isValid());
+ }
+}
+
+
+QTEST_APPLESS_MAIN(tst_QRegExp)
+#include "tst_qregexp.moc"
diff --git a/tests/auto/corelib/tools/qringbuffer/qringbuffer.pro b/tests/auto/corelib/tools/qringbuffer/qringbuffer.pro
new file mode 100644
index 0000000000..dc572d0633
--- /dev/null
+++ b/tests/auto/corelib/tools/qringbuffer/qringbuffer.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+SOURCES += tst_qringbuffer.cpp
+
+QT = core core-private
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qringbuffer/tst_qringbuffer.cpp b/tests/auto/corelib/tools/qringbuffer/tst_qringbuffer.cpp
new file mode 100644
index 0000000000..0ca360fda7
--- /dev/null
+++ b/tests/auto/corelib/tools/qringbuffer/tst_qringbuffer.cpp
@@ -0,0 +1,200 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <private/qringbuffer_p.h>
+
+class tst_QRingBuffer : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QRingBuffer();
+ virtual ~tst_QRingBuffer();
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+private slots:
+ void readPointerAtPositionWriteRead();
+ void readPointerAtPositionEmptyRead();
+ void readPointerAtPositionWithHead();
+ void readPointerAtPositionReadTooMuch();
+ void sizeWhenEmpty();
+ void sizeWhenReservedAndChopped();
+ void sizeWhenReserved();
+};
+
+tst_QRingBuffer::tst_QRingBuffer()
+{
+}
+
+tst_QRingBuffer::~tst_QRingBuffer()
+{
+}
+
+void tst_QRingBuffer::initTestCase()
+{
+}
+
+void tst_QRingBuffer::cleanupTestCase()
+{
+}
+
+void tst_QRingBuffer::sizeWhenReserved()
+{
+ QRingBuffer ringBuffer;
+ ringBuffer.reserve(5);
+
+ QCOMPARE(ringBuffer.size(), 5);
+}
+
+void tst_QRingBuffer::sizeWhenReservedAndChopped()
+{
+ QRingBuffer ringBuffer;
+ ringBuffer.reserve(31337);
+ ringBuffer.chop(31337);
+
+ QCOMPARE(ringBuffer.size(), 0);
+}
+
+void tst_QRingBuffer::sizeWhenEmpty()
+{
+ QRingBuffer ringBuffer;
+
+ QCOMPARE(ringBuffer.size(), 0);
+}
+
+void tst_QRingBuffer::readPointerAtPositionReadTooMuch()
+{
+ QRingBuffer ringBuffer;
+
+ qint64 length;
+ const char *buf = ringBuffer.readPointerAtPosition(42, length);
+ QVERIFY(buf == 0);
+ QVERIFY(length == 0);
+}
+
+void tst_QRingBuffer::readPointerAtPositionWithHead()
+{
+ QRingBuffer ringBuffer;
+ char *buf = ringBuffer.reserve(4);
+ memcpy (buf, "0123", 4);
+ ringBuffer.free(2);
+
+ // ringBuffer should have stayed the same except
+ // its head it had moved to position 2
+ qint64 length;
+ const char* buf2 = ringBuffer.readPointerAtPosition(0, length);
+
+ QCOMPARE(length, qint64(2));
+ QVERIFY(*buf2 == '2');
+ QVERIFY(*(buf2+1) == '3');
+
+ // advance 2 more, ringBuffer should be empty then
+ ringBuffer.free(2);
+ buf2 = ringBuffer.readPointerAtPosition(0, length);
+ QCOMPARE(length, qint64(0));
+ QVERIFY(buf2 == 0);
+}
+
+void tst_QRingBuffer::readPointerAtPositionEmptyRead()
+{
+ QRingBuffer ringBuffer;
+
+ qint64 length;
+ const char *buf = ringBuffer.readPointerAtPosition(0, length);
+ QVERIFY(buf == 0);
+ QVERIFY(length == 0);
+}
+
+void tst_QRingBuffer::readPointerAtPositionWriteRead()
+{
+ //create some data
+ QBuffer inData;
+ inData.open(QIODevice::ReadWrite);
+ inData.putChar(0x42);
+ inData.putChar(0x23);
+ inData.write("Qt rocks!");
+ for (int i = 0; i < 5000; i++)
+ inData.write(QString("Number %1").arg(i).toUtf8());
+ inData.reset();
+ QVERIFY(inData.size() > 0);
+
+ //put the inData in the QRingBuffer
+ QRingBuffer ringBuffer;
+ qint64 remaining = inData.size();
+ while (remaining > 0) {
+ // write in chunks of 50 bytes
+ // this ensures there will be multiple QByteArrays inside the QRingBuffer
+ // since QRingBuffer is then only using individual arrays of around 4000 bytes
+ qint64 thisWrite = qMin(remaining, qint64(50));
+ char *pos = ringBuffer.reserve(thisWrite);
+ inData.read(pos, thisWrite);
+ remaining -= thisWrite;
+ }
+ // was data put into it?
+ QVERIFY(ringBuffer.size() > 0);
+ QCOMPARE(qint64(ringBuffer.size()), inData.size());
+
+ //read from the QRingBuffer in loop, put back into another QBuffer
+ QBuffer outData;
+ outData.open(QIODevice::ReadWrite);
+ remaining = ringBuffer.size();
+ while (remaining > 0) {
+ qint64 thisRead;
+ // always try to read as much as possible
+ const char *buf = ringBuffer.readPointerAtPosition(ringBuffer.size() - remaining, thisRead);
+ outData.write(buf, thisRead);
+ remaining -= thisRead;
+ }
+ outData.reset();
+
+ QVERIFY(outData.size() > 0);
+
+ // was the data read from the QRingBuffer the same as the one written into it?
+ QCOMPARE(outData.size(), inData.size());
+ QVERIFY(outData.buffer().startsWith(inData.buffer()));
+}
+
+
+QTEST_APPLESS_MAIN(tst_QRingBuffer)
+#include "tst_qringbuffer.moc"
diff --git a/tests/auto/corelib/tools/qscopedpointer/.gitignore b/tests/auto/corelib/tools/qscopedpointer/.gitignore
new file mode 100644
index 0000000000..9f2324cb11
--- /dev/null
+++ b/tests/auto/corelib/tools/qscopedpointer/.gitignore
@@ -0,0 +1 @@
+tst_qscopedpointer
diff --git a/tests/auto/corelib/tools/qscopedpointer/qscopedpointer.pro b/tests/auto/corelib/tools/qscopedpointer/qscopedpointer.pro
new file mode 100644
index 0000000000..4a3d5b8de8
--- /dev/null
+++ b/tests/auto/corelib/tools/qscopedpointer/qscopedpointer.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qscopedpointer.cpp
+QT -= gui
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qscopedpointer/tst_qscopedpointer.cpp b/tests/auto/corelib/tools/qscopedpointer/tst_qscopedpointer.cpp
new file mode 100644
index 0000000000..06c0ecbafd
--- /dev/null
+++ b/tests/auto/corelib/tools/qscopedpointer/tst_qscopedpointer.cpp
@@ -0,0 +1,463 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtCore/QScopedPointer>
+
+/*!
+ \class tst_QScopedPointer
+ \internal
+ \since 4.6
+ \brief Tests class QScopedPointer.
+
+ */
+class tst_QScopedPointer : public QObject
+{
+ Q_OBJECT
+
+private Q_SLOTS:
+ void defaultConstructor();
+ void dataOnDefaultConstructed();
+ void useSubClassInConstructor();
+ void dataOnValue();
+ void dataSignature();
+ void reset();
+ void dereferenceOperator();
+ void dereferenceOperatorSignature();
+ void pointerOperator();
+ void pointerOperatorSignature();
+ void negationOperator();
+ void negationOperatorSignature();
+ void operatorBool();
+ void operatorBoolSignature();
+ void isNull();
+ void isNullSignature();
+ void objectSize();
+ void comparison();
+ void array();
+ // TODO instanciate on const object
+};
+
+void tst_QScopedPointer::defaultConstructor()
+{
+ /* Check that the members, one, is correctly initialized. */
+ QScopedPointer<int> p;
+ QCOMPARE(p.data(), static_cast<int *>(0));
+}
+
+void tst_QScopedPointer::dataOnDefaultConstructed()
+{
+ QScopedPointer<int> p;
+
+ QCOMPARE(p.data(), static_cast<int *>(0));
+}
+
+class MyClass
+{
+};
+
+class MySubClass : public MyClass
+{
+};
+
+void tst_QScopedPointer::useSubClassInConstructor()
+{
+ /* Use a syntax which users typically would do. */
+ QScopedPointer<MyClass> p(new MyClass());
+}
+
+void tst_QScopedPointer::dataOnValue()
+{
+ int *const rawPointer = new int(5);
+ QScopedPointer<int> p(rawPointer);
+
+ QCOMPARE(p.data(), rawPointer);
+}
+
+void tst_QScopedPointer::dataSignature()
+{
+ const QScopedPointer<int> p;
+ /* data() should be const. */
+ p.data();
+}
+
+void tst_QScopedPointer::reset()
+{
+ /* Call reset() on a default constructed value. */
+ {
+ QScopedPointer<int> p;
+ p.reset();
+ QCOMPARE(p.data(), static_cast<int *>(0));
+ }
+
+ /* Call reset() on an active value. */
+ {
+ QScopedPointer<int> p(new int(3));
+ p.reset();
+ QCOMPARE(p.data(), static_cast<int *>(0));
+ }
+
+ /* Call reset() with a value, on an active value. */
+ {
+ QScopedPointer<int> p(new int(3));
+
+ int *const value = new int(9);
+ p.reset(value);
+ QCOMPARE(*p.data(), 9);
+ }
+
+ /* Call reset() with a value, on default constructed value. */
+ {
+ QScopedPointer<int> p;
+
+ int *const value = new int(9);
+ p.reset(value);
+ QCOMPARE(*p.data(), 9);
+ }
+}
+
+class AbstractClass
+{
+public:
+ virtual ~AbstractClass()
+ {
+ }
+
+ virtual int member() const = 0;
+};
+
+class SubClass : public AbstractClass
+{
+public:
+ virtual int member() const
+ {
+ return 5;
+ }
+};
+
+void tst_QScopedPointer::dereferenceOperator()
+{
+ /* Dereference a basic value. */
+ {
+ QScopedPointer<int> p(new int(5));
+
+ const int value2 = *p;
+ QCOMPARE(value2, 5);
+ }
+
+ /* Dereference a pointer to an abstract class. This verifies
+ * that the operator returns a reference, when compiling
+ * with MSVC 2005. */
+ {
+ QScopedPointer<AbstractClass> p(new SubClass());
+
+ QCOMPARE((*p).member(), 5);
+ }
+}
+
+void tst_QScopedPointer::dereferenceOperatorSignature()
+{
+ /* The operator should be const. */
+ {
+ const QScopedPointer<int> p(new int(5));
+ *p;
+ }
+
+ /* A reference should be returned, not a value. */
+ {
+ const QScopedPointer<int> p(new int(5));
+ Q_UNUSED(static_cast<int &>(*p));
+ }
+
+ /* Instantiated on a const object, the returned object is a const reference. */
+ {
+ const QScopedPointer<const int> p(new int(5));
+ Q_UNUSED(static_cast<const int &>(*p));
+ }
+}
+
+class AnyForm
+{
+public:
+ int value;
+};
+
+void tst_QScopedPointer::pointerOperator()
+{
+ QScopedPointer<AnyForm> p(new AnyForm());
+ p->value = 5;
+
+ QCOMPARE(p->value, 5);
+}
+
+void tst_QScopedPointer::pointerOperatorSignature()
+{
+ /* The operator should be const. */
+ const QScopedPointer<AnyForm> p(new AnyForm);
+ p->value = 5;
+
+ QVERIFY(p->value);
+}
+
+void tst_QScopedPointer::negationOperator()
+{
+ /* Invoke on default constructed value. */
+ {
+ QScopedPointer<int> p;
+ QVERIFY(!p);
+ }
+
+ /* Invoke on a value. */
+ {
+ QScopedPointer<int> p(new int(2));
+ QCOMPARE(!p, false);
+ }
+}
+
+void tst_QScopedPointer::negationOperatorSignature()
+{
+ /* The signature should be const. */
+ const QScopedPointer<int> p;
+ !p;
+
+ /* The return value should be bool. */
+ static_cast<bool>(!p);
+}
+
+void tst_QScopedPointer::operatorBool()
+{
+ /* Invoke on default constructed value. */
+ {
+ QScopedPointer<int> p;
+ QCOMPARE(bool(p), false);
+ }
+
+ /* Invoke on active value. */
+ {
+ QScopedPointer<int> p(new int(3));
+ QVERIFY(p);
+ }
+}
+
+void tst_QScopedPointer::operatorBoolSignature()
+{
+ /* The signature should be const and return bool. */
+ const QScopedPointer<int> p;
+
+ (void)static_cast<bool>(p);
+}
+
+void tst_QScopedPointer::isNull()
+{
+ /* Invoke on default constructed value. */
+ {
+ QScopedPointer<int> p;
+ QVERIFY(p.isNull());
+ }
+
+ /* Invoke on a set value. */
+ {
+ QScopedPointer<int> p(new int(69));
+ QVERIFY(!p.isNull());
+ }
+}
+
+void tst_QScopedPointer::isNullSignature()
+{
+ const QScopedPointer<int> p(new int(69));
+
+ /* The signature should be const and return bool. */
+ static_cast<bool>(p.isNull());
+}
+
+void tst_QScopedPointer::objectSize()
+{
+ /* The size of QScopedPointer should be the same as one pointer. */
+ QCOMPARE(sizeof(QScopedPointer<int>), sizeof(void *));
+}
+
+struct RefCounted
+{
+ RefCounted()
+ : ref(0)
+ {
+ instanceCount.ref();
+ }
+
+ RefCounted(RefCounted const &)
+ : ref(0)
+ {
+ instanceCount.ref();
+ }
+
+ ~RefCounted()
+ {
+ QVERIFY( ref == 0 );
+ instanceCount.deref();
+ }
+
+ RefCounted &operator=(RefCounted const &)
+ {
+ return *this;
+ }
+
+ QAtomicInt ref;
+
+ static QAtomicInt instanceCount;
+};
+
+QAtomicInt RefCounted::instanceCount = 0;
+
+template <class A1, class A2, class B>
+void scopedPointerComparisonTest(const A1 &a1, const A2 &a2, const B &b)
+{
+ // test equality on equal pointers
+ QVERIFY(a1 == a2);
+ QVERIFY(a2 == a1);
+
+ // test inequality on equal pointers
+ QVERIFY(!(a1 != a2));
+ QVERIFY(!(a2 != a1));
+
+ // test equality on unequal pointers
+ QVERIFY(!(a1 == b));
+ QVERIFY(!(a2 == b));
+ QVERIFY(!(b == a1));
+ QVERIFY(!(b == a2));
+
+ // test inequality on unequal pointers
+ QVERIFY(b != a1);
+ QVERIFY(b != a2);
+ QVERIFY(a1 != b);
+ QVERIFY(a2 != b);
+}
+
+void tst_QScopedPointer::comparison()
+{
+ QCOMPARE( int(RefCounted::instanceCount), 0 );
+
+ {
+ RefCounted *a = new RefCounted;
+ RefCounted *b = new RefCounted;
+
+ QCOMPARE( int(RefCounted::instanceCount), 2 );
+
+ QScopedPointer<RefCounted> pa1(a);
+ QScopedPointer<RefCounted> pa2(a);
+ QScopedPointer<RefCounted> pb(b);
+
+ scopedPointerComparisonTest(pa1, pa1, pb);
+ scopedPointerComparisonTest(pa2, pa2, pb);
+ scopedPointerComparisonTest(pa1, pa2, pb);
+
+ pa2.take();
+
+ QCOMPARE( int(RefCounted::instanceCount), 2 );
+ }
+
+ QCOMPARE( int(RefCounted::instanceCount), 0 );
+
+ {
+ RefCounted *a = new RefCounted[42];
+ RefCounted *b = new RefCounted[43];
+
+ QCOMPARE( int(RefCounted::instanceCount), 85 );
+
+ QScopedArrayPointer<RefCounted> pa1(a);
+ QScopedArrayPointer<RefCounted> pa2(a);
+ QScopedArrayPointer<RefCounted> pb(b);
+
+ scopedPointerComparisonTest(pa1, pa2, pb);
+
+ pa2.take();
+
+ QCOMPARE( int(RefCounted::instanceCount), 85 );
+ }
+
+ QCOMPARE( int(RefCounted::instanceCount), 0 );
+
+ {
+ // QScopedSharedPointer is an internal helper class -- it is unsupported!
+
+ RefCounted *a = new RefCounted;
+ RefCounted *b = new RefCounted;
+
+ QCOMPARE( int(RefCounted::instanceCount), 2 );
+
+ QSharedDataPointer<RefCounted> pa1(a);
+ QSharedDataPointer<RefCounted> pa2(a);
+ QSharedDataPointer<RefCounted> pb(b);
+
+ QCOMPARE( int(a->ref), 2 );
+ QCOMPARE( int(b->ref), 1 );
+ QCOMPARE( int(RefCounted::instanceCount), 2 );
+
+ scopedPointerComparisonTest(pa1, pa2, pb);
+
+ QCOMPARE( int(RefCounted::instanceCount), 2 );
+ }
+
+ QCOMPARE( int(RefCounted::instanceCount), 0 );
+}
+
+void tst_QScopedPointer::array()
+{
+ int instCount = RefCounted::instanceCount;
+ {
+ QScopedArrayPointer<RefCounted> array;
+ array.reset(new RefCounted[42]);
+ QCOMPARE(instCount + 42, int(RefCounted::instanceCount));
+ }
+ QCOMPARE(instCount, int(RefCounted::instanceCount));
+ {
+ QScopedArrayPointer<RefCounted> array(new RefCounted[42]);
+ QCOMPARE(instCount + 42, int(RefCounted::instanceCount));
+ array.reset(new RefCounted[28]);
+ QCOMPARE(instCount + 28, int(RefCounted::instanceCount));
+ array.reset(0);
+ QCOMPARE(instCount, int(RefCounted::instanceCount));
+ }
+ QCOMPARE(instCount, int(RefCounted::instanceCount));
+}
+
+
+QTEST_MAIN(tst_QScopedPointer)
+#include "tst_qscopedpointer.moc"
diff --git a/tests/auto/corelib/tools/qscopedvaluerollback/qscopedvaluerollback.pro b/tests/auto/corelib/tools/qscopedvaluerollback/qscopedvaluerollback.pro
new file mode 100644
index 0000000000..f06e21ba1f
--- /dev/null
+++ b/tests/auto/corelib/tools/qscopedvaluerollback/qscopedvaluerollback.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qscopedvaluerollback.cpp
+QT -= gui
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qscopedvaluerollback/tst_qscopedvaluerollback.cpp b/tests/auto/corelib/tools/qscopedvaluerollback/tst_qscopedvaluerollback.cpp
new file mode 100644
index 0000000000..457733b7a8
--- /dev/null
+++ b/tests/auto/corelib/tools/qscopedvaluerollback/tst_qscopedvaluerollback.cpp
@@ -0,0 +1,203 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtCore/QScopedValueRollback>
+
+/*!
+ \class tst_QScopedValueRollback
+ \internal
+ \since 4.8
+ \brief Tests class QScopedValueRollback.
+
+ */
+class tst_QScopedValueRollback : public QObject
+{
+ Q_OBJECT
+
+private Q_SLOTS:
+ void leavingScope();
+ void leavingScopeAfterCommit();
+ void rollbackToPreviousCommit();
+ void exceptions();
+ void earlyExitScope();
+private:
+ void earlyExitScope_helper(int exitpoint, int &member);
+};
+
+void tst_QScopedValueRollback::leavingScope()
+{
+ int i = 0;
+ bool b = false;
+ QString s("This is useful");
+
+ //test rollback on going out of scope
+ {
+ QScopedValueRollback<int> ri(i);
+ QScopedValueRollback<bool> rb(b);
+ QScopedValueRollback<QString> rs(s);
+ QCOMPARE(b, false);
+ QCOMPARE(i, 0);
+ QCOMPARE(s, QString("This is useful"));
+ b = true;
+ i = 1;
+ s = "Useless";
+ QCOMPARE(b, true);
+ QCOMPARE(i, 1);
+ QCOMPARE(s, QString("Useless"));
+ }
+ QCOMPARE(b, false);
+ QCOMPARE(i, 0);
+ QCOMPARE(s, QString("This is useful"));
+}
+
+void tst_QScopedValueRollback::leavingScopeAfterCommit()
+{
+ int i = 0;
+ bool b = false;
+ QString s("This is useful");
+
+ //test rollback on going out of scope
+ {
+ QScopedValueRollback<int> ri(i);
+ QScopedValueRollback<bool> rb(b);
+ QScopedValueRollback<QString> rs(s);
+ QCOMPARE(b, false);
+ QCOMPARE(i, 0);
+ QCOMPARE(s, QString("This is useful"));
+ b = true;
+ i = 1;
+ s = "Useless";
+ QCOMPARE(b, true);
+ QCOMPARE(i, 1);
+ QCOMPARE(s, QString("Useless"));
+ ri.commit();
+ rb.commit();
+ rs.commit();
+ }
+ QCOMPARE(b, true);
+ QCOMPARE(i, 1);
+ QCOMPARE(s, QString("Useless"));
+}
+
+void tst_QScopedValueRollback::rollbackToPreviousCommit()
+{
+ int i=0;
+ {
+ QScopedValueRollback<int> ri(i);
+ i++;
+ ri.commit();
+ i++;
+ }
+ QCOMPARE(i,1);
+ {
+ QScopedValueRollback<int> ri1(i);
+ i++;
+ ri1.commit();
+ i++;
+ ri1.commit();
+ i++;
+ }
+ QCOMPARE(i,3);
+}
+
+void tst_QScopedValueRollback::exceptions()
+{
+ bool b = false;
+ bool caught = false;
+ QT_TRY
+ {
+ QScopedValueRollback<bool> rb(b);
+ b = true;
+ QT_THROW(std::bad_alloc()); //if Qt compiled without exceptions this is noop
+ rb.commit(); //if Qt compiled without exceptions, true is committed
+ }
+ QT_CATCH(...)
+ {
+ caught = true;
+ }
+ QCOMPARE(b, !caught); //expect false if exception was thrown, true otherwise
+}
+
+void tst_QScopedValueRollback::earlyExitScope()
+{
+ int i=0;
+ int j=0;
+ while (true) {
+ QScopedValueRollback<int> ri(i);
+ i++;
+ j=i;
+ if (i>8) break;
+ ri.commit();
+ }
+ QCOMPARE(i,8);
+ QCOMPARE(j,9);
+
+ for (i = 0; i < 5; i++) {
+ j=1;
+ earlyExitScope_helper(i,j);
+ QCOMPARE(j, 1<<i);
+ }
+}
+
+void tst_QScopedValueRollback::earlyExitScope_helper(int exitpoint, int& member)
+{
+ QScopedValueRollback<int> r(member);
+ member *= 2;
+ if (exitpoint == 0)
+ return;
+ r.commit();
+ member *= 2;
+ if (exitpoint == 1)
+ return;
+ r.commit();
+ member *= 2;
+ if (exitpoint == 2)
+ return;
+ r.commit();
+ member *= 2;
+ if (exitpoint == 3)
+ return;
+ r.commit();
+}
+
+QTEST_MAIN(tst_QScopedValueRollback)
+#include "tst_qscopedvaluerollback.moc"
diff --git a/tests/auto/corelib/tools/qset/.gitignore b/tests/auto/corelib/tools/qset/.gitignore
new file mode 100644
index 0000000000..43440e53f3
--- /dev/null
+++ b/tests/auto/corelib/tools/qset/.gitignore
@@ -0,0 +1 @@
+tst_qset
diff --git a/tests/auto/corelib/tools/qset/qset.pro b/tests/auto/corelib/tools/qset/qset.pro
new file mode 100644
index 0000000000..ebdf0d68f0
--- /dev/null
+++ b/tests/auto/corelib/tools/qset/qset.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+SOURCES += tst_qset.cpp
+QT = core
+
+symbian: {
+TARGET.EPOCSTACKSIZE =0x5000
+TARGET.EPOCHEAPSIZE="0x100000 0x1000000" # // Min 1Mb, max 16Mb
+}
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qset/tst_qset.cpp b/tests/auto/corelib/tools/qset/tst_qset.cpp
new file mode 100644
index 0000000000..5611709075
--- /dev/null
+++ b/tests/auto/corelib/tools/qset/tst_qset.cpp
@@ -0,0 +1,931 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//#define QT_STRICT_ITERATORS
+
+#include <QtTest/QtTest>
+#include <qset.h>
+#include <qdebug.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+int toNumber(const QString &str)
+{
+ int res = 0;
+ for (int i = 0; i < str.length(); ++i)
+ res = (res * 10) + str[i].digitValue();
+ return res;
+}
+
+class tst_QSet : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QSet() {}
+ virtual ~tst_QSet() {}
+
+private slots:
+ void operator_eq();
+ void swap();
+ void size();
+ void capacity();
+ void reserve();
+ void squeeze();
+ void detach();
+ void isDetached();
+ void clear();
+ void remove();
+ void contains();
+ void containsSet();
+ void begin();
+ void end();
+ void insert();
+ void setOperations();
+ void stlIterator();
+ void stlMutableIterator();
+ void javaIterator();
+ void javaMutableIterator();
+ void makeSureTheComfortFunctionsCompile();
+};
+
+void tst_QSet::operator_eq()
+{
+ {
+ QSet<int> set1, set2;
+ QVERIFY(set1 == set2);
+ QVERIFY(!(set1 != set2));
+
+ set1.insert(1);
+ QVERIFY(set1 != set2);
+ QVERIFY(!(set1 == set2));
+
+ set2.insert(1);
+ QVERIFY(set1 == set2);
+ QVERIFY(!(set1 != set2));
+
+ set2.insert(1);
+ QVERIFY(set1 == set2);
+ QVERIFY(!(set1 != set2));
+
+ set1.insert(2);
+ QVERIFY(set1 != set2);
+ QVERIFY(!(set1 == set2));
+ }
+
+ {
+ QSet<QString> set1, set2;
+ QVERIFY(set1 == set2);
+ QVERIFY(!(set1 != set2));
+
+ set1.insert("one");
+ QVERIFY(set1 != set2);
+ QVERIFY(!(set1 == set2));
+
+ set2.insert("one");
+ QVERIFY(set1 == set2);
+ QVERIFY(!(set1 != set2));
+
+ set2.insert("one");
+ QVERIFY(set1 == set2);
+ QVERIFY(!(set1 != set2));
+
+ set1.insert("two");
+ QVERIFY(set1 != set2);
+ QVERIFY(!(set1 == set2));
+ }
+
+ {
+ // Task 102658
+ QSet<QString> a;
+ QSet<QString> b;
+
+ a += "otto";
+ b += "willy";
+
+ QVERIFY(a != b);
+ QVERIFY(!(a == b));
+ }
+}
+
+void tst_QSet::swap()
+{
+ QSet<int> s1, s2;
+ s1.insert(1);
+ s2.insert(2);
+ s1.swap(s2);
+ QCOMPARE(*s1.begin(),2);
+ QCOMPARE(*s2.begin(),1);
+}
+
+void tst_QSet::size()
+{
+ QSet<int> set;
+ QVERIFY(set.size() == 0);
+ QVERIFY(set.isEmpty());
+ QVERIFY(set.count() == set.size());
+ QVERIFY(set.isEmpty() == set.empty());
+
+ set.insert(1);
+ QVERIFY(set.size() == 1);
+ QVERIFY(!set.isEmpty());
+ QVERIFY(set.count() == set.size());
+ QVERIFY(set.isEmpty() == set.empty());
+
+ set.insert(1);
+ QVERIFY(set.size() == 1);
+ QVERIFY(!set.isEmpty());
+ QVERIFY(set.count() == set.size());
+ QVERIFY(set.isEmpty() == set.empty());
+
+ set.insert(2);
+ QVERIFY(set.size() == 2);
+ QVERIFY(!set.isEmpty());
+ QVERIFY(set.count() == set.size());
+ QVERIFY(set.isEmpty() == set.empty());
+
+ set.remove(1);
+ QVERIFY(set.size() == 1);
+ QVERIFY(!set.isEmpty());
+ QVERIFY(set.count() == set.size());
+ QVERIFY(set.isEmpty() == set.empty());
+
+ set.remove(1);
+ QVERIFY(set.size() == 1);
+ QVERIFY(!set.isEmpty());
+ QVERIFY(set.count() == set.size());
+ QVERIFY(set.isEmpty() == set.empty());
+
+ set.remove(2);
+ QVERIFY(set.size() == 0);
+ QVERIFY(set.isEmpty());
+ QVERIFY(set.count() == set.size());
+ QVERIFY(set.isEmpty() == set.empty());
+}
+
+void tst_QSet::capacity()
+{
+ QSet<int> set;
+ int n = set.capacity();
+ QVERIFY(n == 0);
+
+ for (int i = 0; i < 1000; ++i) {
+ set.insert(i);
+ QVERIFY(set.capacity() >= set.size());
+ }
+}
+
+void tst_QSet::reserve()
+{
+ QSet<int> set;
+ int n = set.capacity();
+ QVERIFY(n == 0);
+
+ set.reserve(1000);
+ QVERIFY(set.capacity() >= 1000);
+
+ for (int i = 0; i < 500; ++i)
+ set.insert(i);
+
+ QVERIFY(set.capacity() >= 1000);
+
+ for (int j = 0; j < 500; ++j)
+ set.remove(j);
+
+ QVERIFY(set.capacity() >= 1000);
+
+ set.clear();
+ QVERIFY(set.capacity() == 0);
+}
+
+void tst_QSet::squeeze()
+{
+ QSet<int> set;
+ int n = set.capacity();
+ QVERIFY(n == 0);
+
+ set.reserve(1000);
+ QVERIFY(set.capacity() >= 1000);
+
+ set.squeeze();
+ QVERIFY(set.capacity() < 100);
+
+ for (int i = 0; i < 500; ++i)
+ set.insert(i);
+ QVERIFY(set.capacity() >= 500 && set.capacity() < 10000);
+
+ set.reserve(50000);
+ QVERIFY(set.capacity() >= 50000);
+
+ set.squeeze();
+ QVERIFY(set.capacity() < 500);
+
+ set.remove(499);
+ QVERIFY(set.capacity() < 500);
+
+ set.insert(499);
+ QVERIFY(set.capacity() >= 500);
+
+ for (int i = 0; i < 500; ++i)
+ set.remove(i);
+ set.squeeze();
+ QVERIFY(set.capacity() < 100);
+}
+
+void tst_QSet::detach()
+{
+ QSet<int> set;
+ set.detach();
+
+ set.insert(1);
+ set.insert(2);
+ set.detach();
+
+ QSet<int> copy = set;
+ set.detach();
+}
+
+void tst_QSet::isDetached()
+{
+ QSet<int> set1, set2;
+ QVERIFY(!set1.isDetached()); // shared_null
+ QVERIFY(!set2.isDetached()); // shared_null
+
+ set1.insert(1);
+ QVERIFY(set1.isDetached());
+ QVERIFY(!set2.isDetached()); // shared_null
+
+ set2 = set1;
+ QVERIFY(!set1.isDetached());
+ QVERIFY(!set2.isDetached());
+
+ set1.detach();
+ QVERIFY(set1.isDetached());
+ QVERIFY(set2.isDetached());
+}
+
+void tst_QSet::clear()
+{
+ QSet<QString> set1, set2;
+ QVERIFY(set1.size() == 0);
+
+ set1.clear();
+ QVERIFY(set1.size() == 0);
+
+ set1.insert("foo");
+ QVERIFY(set1.size() != 0);
+
+ set2 = set1;
+
+ set1.clear();
+ QVERIFY(set1.size() == 0);
+ QVERIFY(set2.size() != 0);
+
+ set2.clear();
+ QVERIFY(set1.size() == 0);
+ QVERIFY(set2.size() == 0);
+}
+
+void tst_QSet::remove()
+{
+ QSet<QString> set1;
+
+ for (int i = 0; i < 500; ++i)
+ set1.insert(QString::number(i));
+
+ QCOMPARE(set1.size(), 500);
+
+ for (int j = 0; j < 500; ++j) {
+ set1.remove(QString::number((j * 17) % 500));
+ QCOMPARE(set1.size(), 500 - j - 1);
+ }
+}
+
+void tst_QSet::contains()
+{
+ QSet<QString> set1;
+
+ for (int i = 0; i < 500; ++i) {
+ QVERIFY(!set1.contains(QString::number(i)));
+ set1.insert(QString::number(i));
+ QVERIFY(set1.contains(QString::number(i)));
+ }
+
+ QCOMPARE(set1.size(), 500);
+
+ for (int j = 0; j < 500; ++j) {
+ int i = (j * 17) % 500;
+ QVERIFY(set1.contains(QString::number(i)));
+ set1.remove(QString::number(i));
+ QVERIFY(!set1.contains(QString::number(i)));
+ }
+}
+
+void tst_QSet::containsSet()
+{
+ QSet<QString> set1;
+ QSet<QString> set2;
+
+ // empty set contains the empty set
+ QVERIFY(set1.contains(set2));
+
+ for (int i = 0; i < 500; ++i) {
+ set1.insert(QString::number(i));
+ set2.insert(QString::number(i));
+ }
+ QVERIFY(set1.contains(set2));
+
+ set2.remove(QString::number(19));
+ set2.remove(QString::number(82));
+ set2.remove(QString::number(7));
+ QVERIFY(set1.contains(set2));
+
+ set1.remove(QString::number(23));
+ QVERIFY(!set1.contains(set2));
+
+ // filled set contains the empty set as well
+ QSet<QString> set3;
+ QVERIFY(set1.contains(set3));
+
+ // the empty set doesn't contain a filled set
+ QVERIFY(!set3.contains(set1));
+
+ // verify const signature
+ const QSet<QString> set4;
+ QVERIFY(set3.contains(set4));
+}
+
+void tst_QSet::begin()
+{
+ QSet<int> set1;
+ QSet<int> set2 = set1;
+
+ {
+ QSet<int>::const_iterator i = set1.constBegin();
+ QSet<int>::const_iterator j = set1.constBegin();
+ QSet<int>::const_iterator k = set2.constBegin();
+ QSet<int>::const_iterator ell = set2.constBegin();
+
+ QVERIFY(i == j);
+ QVERIFY(k == ell);
+ QVERIFY(i == k);
+ QVERIFY(j == ell);
+ }
+
+ set1.insert(44);
+
+ {
+ QSet<int>::const_iterator i = set1.constBegin();
+ QSet<int>::const_iterator j = set1.constBegin();
+ QSet<int>::const_iterator k = set2.constBegin();
+ QSet<int>::const_iterator ell = set2.constBegin();
+
+ QVERIFY(i == j);
+ QVERIFY(k == ell);
+ QVERIFY(i != k);
+ QVERIFY(j != ell);
+ }
+
+ set2 = set1;
+
+ {
+ QSet<int>::const_iterator i = set1.constBegin();
+ QSet<int>::const_iterator j = set1.constBegin();
+ QSet<int>::const_iterator k = set2.constBegin();
+ QSet<int>::const_iterator ell = set2.constBegin();
+
+ QVERIFY(i == j);
+ QVERIFY(k == ell);
+ QVERIFY(i == k);
+ QVERIFY(j == ell);
+ }
+}
+
+void tst_QSet::end()
+{
+ QSet<int> set1;
+ QSet<int> set2 = set1;
+
+ {
+ QSet<int>::const_iterator i = set1.constEnd();
+ QSet<int>::const_iterator j = set1.constEnd();
+ QSet<int>::const_iterator k = set2.constEnd();
+ QSet<int>::const_iterator ell = set2.constEnd();
+
+ QVERIFY(i == j);
+ QVERIFY(k == ell);
+ QVERIFY(i == k);
+ QVERIFY(j == ell);
+
+ QVERIFY(set1.constBegin() == set1.constEnd());
+ QVERIFY(set2.constBegin() == set2.constEnd());
+ }
+
+ set1.insert(44);
+
+ {
+ QSet<int>::const_iterator i = set1.constEnd();
+ QSet<int>::const_iterator j = set1.constEnd();
+ QSet<int>::const_iterator k = set2.constEnd();
+ QSet<int>::const_iterator ell = set2.constEnd();
+
+ QVERIFY(i == j);
+ QVERIFY(k == ell);
+ QVERIFY(i != k);
+ QVERIFY(j != ell);
+
+ QVERIFY(set1.constBegin() != set1.constEnd());
+ QVERIFY(set2.constBegin() == set2.constEnd());
+ }
+
+ set2 = set1;
+
+ {
+ QSet<int>::const_iterator i = set1.constEnd();
+ QSet<int>::const_iterator j = set1.constEnd();
+ QSet<int>::const_iterator k = set2.constEnd();
+ QSet<int>::const_iterator ell = set2.constEnd();
+
+ QVERIFY(i == j);
+ QVERIFY(k == ell);
+ QVERIFY(i == k);
+ QVERIFY(j == ell);
+
+ QVERIFY(set1.constBegin() != set1.constEnd());
+ QVERIFY(set2.constBegin() != set2.constEnd());
+ }
+
+ set1.clear();
+ set2.clear();
+ QVERIFY(set1.constBegin() == set1.constEnd());
+ QVERIFY(set2.constBegin() == set2.constEnd());
+}
+
+void tst_QSet::insert()
+{
+ {
+ QSet<int> set1;
+ QVERIFY(set1.size() == 0);
+ set1.insert(1);
+ QVERIFY(set1.size() == 1);
+ set1.insert(2);
+ QVERIFY(set1.size() == 2);
+ set1.insert(2);
+ QVERIFY(set1.size() == 2);
+ QVERIFY(set1.contains(2));
+ set1.remove(2);
+ QVERIFY(set1.size() == 1);
+ QVERIFY(!set1.contains(2));
+ set1.insert(2);
+ QVERIFY(set1.size() == 2);
+ QVERIFY(set1.contains(2));
+ }
+
+ {
+ QSet<int> set1;
+ QVERIFY(set1.size() == 0);
+ set1 << 1;
+ QVERIFY(set1.size() == 1);
+ set1 << 2;
+ QVERIFY(set1.size() == 2);
+ set1 << 2;
+ QVERIFY(set1.size() == 2);
+ QVERIFY(set1.contains(2));
+ set1.remove(2);
+ QVERIFY(set1.size() == 1);
+ QVERIFY(!set1.contains(2));
+ set1 << 2;
+ QVERIFY(set1.size() == 2);
+ QVERIFY(set1.contains(2));
+ }
+}
+
+void tst_QSet::setOperations()
+{
+ QSet<QString> set1, set2;
+ set1 << "alpha" << "beta" << "gamma" << "delta" << "zeta" << "omega";
+ set2 << "beta" << "gamma" << "delta" << "epsilon" << "iota" << "omega";
+
+ QSet<QString> set3 = set1;
+ set3.unite(set2);
+ QVERIFY(set3.size() == 8);
+ QVERIFY(set3.contains("alpha"));
+ QVERIFY(set3.contains("beta"));
+ QVERIFY(set3.contains("gamma"));
+ QVERIFY(set3.contains("delta"));
+ QVERIFY(set3.contains("epsilon"));
+ QVERIFY(set3.contains("zeta"));
+ QVERIFY(set3.contains("iota"));
+ QVERIFY(set3.contains("omega"));
+
+ QSet<QString> set4 = set2;
+ set4.unite(set1);
+ QVERIFY(set4.size() == 8);
+ QVERIFY(set4.contains("alpha"));
+ QVERIFY(set4.contains("beta"));
+ QVERIFY(set4.contains("gamma"));
+ QVERIFY(set4.contains("delta"));
+ QVERIFY(set4.contains("epsilon"));
+ QVERIFY(set4.contains("zeta"));
+ QVERIFY(set4.contains("iota"));
+ QVERIFY(set4.contains("omega"));
+
+ QVERIFY(set3 == set4);
+
+ QSet<QString> set5 = set1;
+ set5.intersect(set2);
+ QVERIFY(set5.size() == 4);
+ QVERIFY(set5.contains("beta"));
+ QVERIFY(set5.contains("gamma"));
+ QVERIFY(set5.contains("delta"));
+ QVERIFY(set5.contains("omega"));
+
+ QSet<QString> set6 = set2;
+ set6.intersect(set1);
+ QVERIFY(set6.size() == 4);
+ QVERIFY(set6.contains("beta"));
+ QVERIFY(set6.contains("gamma"));
+ QVERIFY(set6.contains("delta"));
+ QVERIFY(set6.contains("omega"));
+
+ QVERIFY(set5 == set6);
+
+ QSet<QString> set7 = set1;
+ set7.subtract(set2);
+ QVERIFY(set7.size() == 2);
+ QVERIFY(set7.contains("alpha"));
+ QVERIFY(set7.contains("zeta"));
+
+ QSet<QString> set8 = set2;
+ set8.subtract(set1);
+ QVERIFY(set8.size() == 2);
+ QVERIFY(set8.contains("epsilon"));
+ QVERIFY(set8.contains("iota"));
+
+ QSet<QString> set9 = set1 | set2;
+ QVERIFY(set9 == set3);
+
+ QSet<QString> set10 = set1 & set2;
+ QVERIFY(set10 == set5);
+
+ QSet<QString> set11 = set1 + set2;
+ QVERIFY(set11 == set3);
+
+ QSet<QString> set12 = set1 - set2;
+ QVERIFY(set12 == set7);
+
+ QSet<QString> set13 = set2 - set1;
+ QVERIFY(set13 == set8);
+
+ QSet<QString> set14 = set1;
+ set14 |= set2;
+ QVERIFY(set14 == set3);
+
+ QSet<QString> set15 = set1;
+ set15 &= set2;
+ QVERIFY(set15 == set5);
+
+ QSet<QString> set16 = set1;
+ set16 += set2;
+ QVERIFY(set16 == set3);
+
+ QSet<QString> set17 = set1;
+ set17 -= set2;
+ QVERIFY(set17 == set7);
+
+ QSet<QString> set18 = set2;
+ set18 -= set1;
+ QVERIFY(set18 == set8);
+}
+
+void tst_QSet::stlIterator()
+{
+ QSet<QString> set1;
+ for (int i = 0; i < 25000; ++i)
+ set1.insert(QString::number(i));
+
+ {
+ int sum = 0;
+ QSet<QString>::const_iterator i = set1.begin();
+ while (i != set1.end()) {
+ sum += toNumber(*i);
+ ++i;
+ }
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ int sum = 0;
+ QSet<QString>::const_iterator i = set1.end();
+ while (i != set1.begin()) {
+ --i;
+ sum += toNumber(*i);
+ }
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+}
+
+void tst_QSet::stlMutableIterator()
+{
+ QSet<QString> set1;
+ for (int i = 0; i < 25000; ++i)
+ set1.insert(QString::number(i));
+
+ {
+ int sum = 0;
+ QSet<QString>::iterator i = set1.begin();
+ while (i != set1.end()) {
+ sum += toNumber(*i);
+ ++i;
+ }
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ int sum = 0;
+ QSet<QString>::iterator i = set1.end();
+ while (i != set1.begin()) {
+ --i;
+ sum += toNumber(*i);
+ }
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ QSet<QString> set2 = set1;
+ QSet<QString> set3 = set2;
+
+ QSet<QString>::iterator i = set2.begin();
+ QSet<QString>::iterator j = set3.begin();
+
+ while (i != set2.end()) {
+ i = set2.erase(i);
+ }
+ QVERIFY(set2.isEmpty());
+ QVERIFY(!set3.isEmpty());
+
+ j = set3.end();
+ while (j != set3.begin()) {
+ j--;
+ if (j + 1 != set3.end())
+ set3.erase(j + 1);
+ }
+ if (set3.begin() != set3.end())
+ set3.erase(set3.begin());
+
+ QVERIFY(set2.isEmpty());
+ QVERIFY(set3.isEmpty());
+
+// #if QT_VERSION >= 0x050000
+// i = set2.insert("foo");
+// #else
+ QSet<QString>::const_iterator k = set2.insert("foo");
+ i = reinterpret_cast<QSet<QString>::iterator &>(k);
+// #endif
+ QVERIFY(*i == "foo");
+ }
+}
+
+void tst_QSet::javaIterator()
+{
+ QSet<QString> set1;
+ for (int k = 0; k < 25000; ++k)
+ set1.insert(QString::number(k));
+
+ {
+ int sum = 0;
+ QSetIterator<QString> i(set1);
+ while (i.hasNext())
+ sum += toNumber(i.next());
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ int sum = 0;
+ QSetIterator<QString> i(set1);
+ while (i.hasNext()) {
+ sum += toNumber(i.peekNext());
+ i.next();
+ }
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ int sum = 0;
+ QSetIterator<QString> i(set1);
+ while (i.hasNext()) {
+ i.next();
+ sum += toNumber(i.peekPrevious());
+ }
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ int sum = 0;
+ QSetIterator<QString> i(set1);
+ i.toBack();
+ while (i.hasPrevious())
+ sum += toNumber(i.previous());
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ int sum = 0;
+ QSetIterator<QString> i(set1);
+ i.toBack();
+ while (i.hasPrevious()) {
+ sum += toNumber(i.peekPrevious());
+ i.previous();
+ }
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ int sum = 0;
+ QSetIterator<QString> i(set1);
+ i.toBack();
+ while (i.hasPrevious()) {
+ i.previous();
+ sum += toNumber(i.peekNext());
+ }
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ int sum1 = 0;
+ int sum2 = 0;
+ QSetIterator<QString> i(set1);
+ QSetIterator<QString> j(set1);
+
+ int n = 0;
+ while (i.hasNext()) {
+ QVERIFY(j.hasNext());
+ set1.remove(i.peekNext());
+ sum1 += toNumber(i.next());
+ sum2 += toNumber(j.next());
+ ++n;
+ }
+ QVERIFY(!j.hasNext());
+ QVERIFY(sum1 == 24999 * 25000 / 2);
+ QVERIFY(sum2 == sum1);
+ QVERIFY(set1.isEmpty());
+}
+
+void tst_QSet::javaMutableIterator()
+{
+ QSet<QString> set1;
+ for (int k = 0; k < 25000; ++k)
+ set1.insert(QString::number(k));
+
+ {
+ int sum = 0;
+ QMutableSetIterator<QString> i(set1);
+ while (i.hasNext())
+ sum += toNumber(i.next());
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ int sum = 0;
+ QMutableSetIterator<QString> i(set1);
+ while (i.hasNext()) {
+ i.next();
+ sum += toNumber(i.value());
+ }
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ int sum = 0;
+ QMutableSetIterator<QString> i(set1);
+ while (i.hasNext()) {
+ sum += toNumber(i.peekNext());
+ i.next();
+ }
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ int sum = 0;
+ QMutableSetIterator<QString> i(set1);
+ while (i.hasNext()) {
+ i.next();
+ sum += toNumber(i.peekPrevious());
+ }
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ int sum = 0;
+ QMutableSetIterator<QString> i(set1);
+ i.toBack();
+ while (i.hasPrevious())
+ sum += toNumber(i.previous());
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ int sum = 0;
+ QMutableSetIterator<QString> i(set1);
+ i.toBack();
+ while (i.hasPrevious()) {
+ sum += toNumber(i.peekPrevious());
+ i.previous();
+ }
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ int sum = 0;
+ QMutableSetIterator<QString> i(set1);
+ i.toBack();
+ while (i.hasPrevious()) {
+ i.previous();
+ sum += toNumber(i.peekNext());
+ }
+ QVERIFY(sum == 24999 * 25000 / 2);
+ }
+
+ {
+ QSet<QString> set2 = set1;
+ QSet<QString> set3 = set2;
+
+ QMutableSetIterator<QString> i(set2);
+ QMutableSetIterator<QString> j(set3);
+
+ while (i.hasNext()) {
+ i.next();
+ i.remove();
+ }
+ QVERIFY(set2.isEmpty());
+ QVERIFY(!set3.isEmpty());
+
+ j.toBack();
+ while (j.hasPrevious()) {
+ j.previous();
+ j.remove();
+ }
+ QVERIFY(set2.isEmpty());
+ QVERIFY(set3.isEmpty());
+ }
+}
+
+void tst_QSet::makeSureTheComfortFunctionsCompile()
+{
+ QSet<int> set1, set2, set3;
+ set1 << 5;
+ set1 |= set2;
+ set1 |= 5;
+ set1 &= set2;
+ set1 &= 5;
+ set1 += set2;
+ set1 += 5;
+ set1 -= set2;
+ set1 -= 5;
+ set1 = set2 | set3;
+ set1 = set2 & set3;
+ set1 = set2 + set3;
+ set1 = set2 - set3;
+}
+
+QTEST_APPLESS_MAIN(tst_QSet)
+
+#include "tst_qset.moc"
diff --git a/tests/auto/corelib/tools/qsharedpointer/.gitignore b/tests/auto/corelib/tools/qsharedpointer/.gitignore
new file mode 100644
index 0000000000..3cd9f1a085
--- /dev/null
+++ b/tests/auto/corelib/tools/qsharedpointer/.gitignore
@@ -0,0 +1 @@
+tst_qsharedpointer
diff --git a/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp b/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp
new file mode 100644
index 0000000000..1bfa1c10a0
--- /dev/null
+++ b/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp
@@ -0,0 +1,745 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include "externaltests.h"
+
+#include <QtCore/QTemporaryFile>
+#include <QtCore/QProcess>
+#include <QtCore/QByteArray>
+#include <QtCore/QString>
+#include <QtCore/QFileInfo>
+#include <QtCore/QDir>
+#include <QtCore/QDirIterator>
+#include <QtCore/QDateTime>
+#include <QtCore/QDebug>
+
+#ifdef Q_OS_SYMBIAN
+#define DEFAULT_MAKESPEC "X:/STLsupport/mkspecs/symbian-abld/"
+#endif
+
+#ifndef DEFAULT_MAKESPEC
+# error DEFAULT_MAKESPEC not defined
+#endif
+
+#ifdef Q_OS_UNIX
+# include <fcntl.h>
+# include <unistd.h>
+#endif
+
+static QString makespec()
+{
+ static const char default_makespec[] = DEFAULT_MAKESPEC;
+ const char *p;
+ for (p = default_makespec + sizeof(default_makespec) - 1; p >= default_makespec; --p)
+ if (*p == '/' || *p == '\\')
+ break;
+
+ return QString::fromLatin1(p + 1);
+}
+
+static bool removeRecursive(const QString &pathname)
+{
+ QFileInfo fi(pathname);
+ if (!fi.exists())
+ return true;
+
+ if (fi.isFile())
+ return QFile::remove(pathname);
+
+ if (!fi.isDir()) {
+ // not a file or directory. How do I remove it?
+ return false;
+ }
+
+ // not empty -- we must empty it first
+ QDirIterator di(pathname, QDir::AllEntries | QDir::Hidden | QDir::System | QDir::NoDotAndDotDot);
+ while (di.hasNext()) {
+ di.next();
+ if (!di.fileInfo().exists() && !di.fileInfo().isSymLink())
+ continue;
+ bool ok;
+ if (di.fileInfo().isFile() || di.fileInfo().isSymLink())
+ ok = QFile::remove(di.filePath());
+ else
+ ok = removeRecursive(di.filePath());
+ if (!ok) {
+ return false;
+ }
+ }
+
+ QDir dir(pathname);
+ QString dirname = dir.dirName();
+ dir.cdUp();
+ return dir.rmdir(dirname);
+}
+
+QT_BEGIN_NAMESPACE
+namespace QTest {
+ class QExternalProcess: public QProcess
+ {
+ protected:
+#ifdef Q_OS_UNIX
+ void setupChildProcess()
+ {
+ // run in user code
+ QProcess::setupChildProcess();
+
+ if (processChannelMode() == ForwardedChannels) {
+ // reopen /dev/tty into stdin
+ int fd = ::open("/dev/tty", O_RDONLY);
+ if (fd == -1)
+ return;
+ ::dup2(fd, 0);
+ ::close(fd);
+ }
+ }
+#endif
+ };
+
+ class QExternalTestPrivate
+ {
+ public:
+ QExternalTestPrivate()
+ : qtModules(QExternalTest::QtCore | QExternalTest::QtGui | QExternalTest::QtTest),
+ appType(QExternalTest::AutoApplication),
+ exitCode(-1)
+ {
+ }
+ ~QExternalTestPrivate()
+ {
+ clear();
+ }
+
+ enum Target { Compile, Link, Run };
+
+ QList<QByteArray> qmakeLines;
+ QStringList extraProgramSources;
+ QByteArray programHeader;
+ QExternalTest::QtModules qtModules;
+ QExternalTest::ApplicationType appType;
+
+ QString temporaryDir;
+ QByteArray sourceCode;
+ QByteArray std_out;
+ QByteArray std_err;
+ int exitCode;
+ QExternalTest::Stage failedStage;
+
+ void clear();
+ bool tryCompile(const QByteArray &body);
+ bool tryLink(const QByteArray &body);
+ bool tryRun(const QByteArray &body);
+
+ private:
+ void removeTemporaryDirectory();
+ bool createTemporaryDirectory();
+ bool prepareSourceCode(const QByteArray &body);
+ bool createProjectFile();
+ bool runQmake();
+ bool runMake(Target target);
+ bool commonSetup(const QByteArray &body);
+ };
+
+ QExternalTest::QExternalTest()
+ : d(new QExternalTestPrivate)
+ {
+ }
+
+ QExternalTest::~QExternalTest()
+ {
+ delete d;
+ }
+
+ QList<QByteArray> QExternalTest::qmakeSettings() const
+ {
+ return d->qmakeLines;
+ }
+
+ void QExternalTest::setQmakeSettings(const QList<QByteArray> &settings)
+ {
+ d->qmakeLines = settings;
+ }
+
+ QExternalTest::QtModules QExternalTest::qtModules() const
+ {
+ return d->qtModules;
+ }
+
+ void QExternalTest::setQtModules(QtModules modules)
+ {
+ d->qtModules = modules;
+ }
+
+ QExternalTest::ApplicationType QExternalTest::applicationType() const
+ {
+ return d->appType;
+ }
+
+ void QExternalTest::setApplicationType(ApplicationType type)
+ {
+ d->appType = type;
+ }
+
+ QStringList QExternalTest::extraProgramSources() const
+ {
+ return d->extraProgramSources;
+ }
+
+ void QExternalTest::setExtraProgramSources(const QStringList &extra)
+ {
+ d->extraProgramSources = extra;
+ }
+
+ QByteArray QExternalTest::programHeader() const
+ {
+ return d->programHeader;
+ }
+
+ void QExternalTest::setProgramHeader(const QByteArray &header)
+ {
+ d->programHeader = header;
+ }
+
+ bool QExternalTest::tryCompile(const QByteArray &body)
+ {
+ return d->tryCompile(body) && d->exitCode == 0;
+ }
+
+ bool QExternalTest::tryLink(const QByteArray &body)
+ {
+ return d->tryLink(body) && d->exitCode == 0;
+ }
+
+ bool QExternalTest::tryRun(const QByteArray &body)
+ {
+ return d->tryRun(body) && d->exitCode == 0;
+ }
+
+ bool QExternalTest::tryCompileFail(const QByteArray &body)
+ {
+ return d->tryCompile(body) && d->exitCode != 0;
+ }
+
+ bool QExternalTest::tryLinkFail(const QByteArray &body)
+ {
+ return d->tryLink(body) && d->exitCode != 0;
+ }
+
+ bool QExternalTest::tryRunFail(const QByteArray &body)
+ {
+ return d->tryRun(body) && d->exitCode != 0;
+ }
+
+ QExternalTest::Stage QExternalTest::failedStage() const
+ {
+ return d->failedStage;
+ }
+
+ int QExternalTest::exitCode() const
+ {
+ return d->exitCode;
+ }
+
+ QByteArray QExternalTest::fullProgramSource() const
+ {
+ return d->sourceCode;
+ }
+
+ QByteArray QExternalTest::standardOutput() const
+ {
+ return d->std_out;
+ }
+
+ QByteArray QExternalTest::standardError() const
+ {
+ return d->std_err;
+ }
+
+ QString QExternalTest::errorReport() const
+ {
+ const char *stage = 0;
+ switch (d->failedStage) {
+ case FileStage:
+ stage = "creating files";
+ break;
+ case QmakeStage:
+ stage = "executing qmake";
+ break;
+ case CompilationStage:
+ stage = "during compilation";
+ break;
+ case LinkStage:
+ stage = "during linking";
+ break;
+ case RunStage:
+ stage = "executing program";
+ break;
+ }
+
+ QString report = QString::fromLatin1(
+ "External test failed %1 with exit code %4\n"
+ "==== standard error: ====\n"
+ "%2\n"
+ "==== standard output: ====\n"
+ "%3\n"
+ "==== ====\n");
+ return report.arg(QString::fromLatin1(stage),
+ QString::fromLocal8Bit(d->std_err),
+ QString::fromLocal8Bit(d->std_out))
+ .arg(d->exitCode);
+ }
+
+ // actual execution code
+ void QExternalTestPrivate::clear()
+ {
+ if (!temporaryDir.isEmpty())
+ removeTemporaryDirectory();
+
+ sourceCode.clear();
+ std_out.clear();
+ std_err.clear();
+ exitCode = -1;
+ failedStage = QExternalTest::FileStage;
+ }
+
+ void QExternalTestPrivate::removeTemporaryDirectory()
+ {
+ if (temporaryDir.isEmpty())
+ qWarning() << "Temporary directory is expected to be non-empty";
+ removeRecursive(temporaryDir);
+ temporaryDir.clear();
+ }
+
+ bool QExternalTestPrivate::prepareSourceCode(const QByteArray &body)
+ {
+ sourceCode.clear();
+ sourceCode.reserve(8192);
+
+ sourceCode += programHeader;
+
+ // Add Qt header includes
+ if (qtModules & QExternalTest::QtCore)
+ sourceCode += "#include <QtCore/QtCore>\n";
+ if (qtModules & QExternalTest::QtGui)
+ sourceCode += "#include <QtGui/QtGui>\n";
+ if (qtModules & QExternalTest::QtNetwork)
+ sourceCode += "#include <QtNetwork/QtNetwork>\n";
+ if (qtModules & QExternalTest::QtXml)
+ sourceCode += "#include <QtXml/QtXml>\n";
+ if (qtModules & QExternalTest::QtXmlPatterns)
+ sourceCode += "#include <QtXmlPatterns/QtXmlPatterns>\n";
+ if (qtModules & QExternalTest::QtOpenGL)
+ sourceCode += "#include <QtOpenGL/QtOpenGL>\n";
+ if (qtModules & QExternalTest::QtSql)
+ sourceCode += "#include <QtSql/QtSql>\n";
+ if (qtModules & QExternalTest::QtSvg)
+ sourceCode += "#include <QtSvg/QtSvg>\n";
+ if (qtModules & QExternalTest::QtScript)
+ sourceCode += "#include <QtScript/QtScript>\n";
+ if (qtModules & QExternalTest::QtTest)
+ sourceCode += "#include <QtTest/QtTest>\n";
+ if (qtModules & QExternalTest::QtDBus)
+ sourceCode += "#include <QtDBus/QtDBus>\n";
+ if (qtModules & QExternalTest::QtWebKit)
+ sourceCode += "#include <QtWebKit/QtWebKit>\n";
+ if (qtModules & QExternalTest::Phonon)
+ sourceCode += "#include <Phonon/Phonon>\n";
+ sourceCode +=
+ "#include <stdlib.h>\n"
+ "#include <stddef.h>\n";
+
+ sourceCode +=
+ "\n"
+ "void q_external_test_user_code()\n"
+ "{\n"
+ "#include \"user_code.cpp\"\n"
+ "}\n"
+ "\n"
+ "#ifdef Q_OS_WIN\n"
+ "#include <windows.h>\n"
+ "static void q_test_setup()\n"
+ "{\n"
+ " SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);\n"
+ "}\n"
+ "#else\n"
+ "static void q_test_setup() { }\n"
+ "#endif\n"
+ "int main(int argc, char **argv)\n"
+ "{\n";
+
+ switch (appType) {
+ applicationless:
+ case QExternalTest::Applicationless:
+ sourceCode +=
+ " (void)argc; (void)argv;\n";
+ break;
+
+ coreapplication:
+ case QExternalTest::QCoreApplication:
+ sourceCode +=
+ " QCoreApplication app(argc, argv);\n";
+ break;
+
+ case QExternalTest::QApplicationTty:
+ sourceCode +=
+ " QApplication app(argc, argv, QApplication::Tty);\n";
+ break;
+
+ guiapplication:
+ case QExternalTest::QApplicationGuiClient:
+ sourceCode +=
+ " QApplication app(argc, argv, QApplication::GuiClient);\n";
+ break;
+
+ case QExternalTest::QApplicationGuiServer:
+ sourceCode +=
+ " QApplication app(argc, argv, QApplication::GuiServer);\n";
+ break;
+
+ case QExternalTest::AutoApplication:
+ if (qtModules & QExternalTest::QtGui)
+ goto guiapplication;
+ if (qtModules == 0)
+ goto applicationless;
+ goto coreapplication;
+ }
+
+ sourceCode +=
+ " q_test_setup();\n"
+ " q_external_test_user_code();\n"
+ " return 0;\n"
+ "}\n";
+
+ QFile sourceFile(temporaryDir + QLatin1String("/project.cpp"));
+ if (!sourceFile.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) {
+ std_err = sourceFile.errorString().toLocal8Bit();
+ return false;
+ }
+
+ sourceFile.write(sourceCode);
+ sourceFile.close();
+
+ sourceFile.setFileName(temporaryDir + QLatin1String("/user_code.cpp"));
+ if (!sourceFile.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) {
+ std_err = sourceFile.errorString().toLocal8Bit();
+ return false;
+ }
+ sourceFile.write(body);
+
+ return true;
+ }
+
+ bool QExternalTestPrivate::createTemporaryDirectory()
+ {
+ QDir temp = QDir::temp();
+ QString subdir = QString::fromLatin1("qexternaltest-%1-%2-%3")
+ .arg(QDateTime::currentDateTime().toString(QLatin1String("yyyyMMddhhmmss")))
+ .arg(quintptr(this), 0, 16)
+ .arg(qrand());
+ if (!temp.mkdir(subdir))
+ return false;
+
+ if (!temp.cd(subdir))
+ return false;
+
+ temporaryDir = temp.absolutePath();
+ return true;
+ }
+
+ bool QExternalTestPrivate::createProjectFile()
+ {
+ if (temporaryDir.isEmpty())
+ qWarning() << "Temporary directory is expected to be non-empty";
+
+ QFile projectFile(temporaryDir + QLatin1String("/project.pro"));
+ if (!projectFile.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) {
+ std_err = projectFile.errorString().toLocal8Bit();
+ return false;
+ }
+
+ projectFile.write(
+ "TEMPLATE = app\n"
+ "\n"
+ "TARGET = externaltest\n"
+ "CONFIG -= app_bundle\n" // for the Mac
+ "CONFIG -= debug_and_release\n"
+ "DESTDIR = .\n"
+ "OBJECTS_DIR = .\n"
+ "UI_DIR = .\n"
+ "MOC_DIR = .\n"
+ "RCC_DIR = .\n"
+ "HEADERS +=\n"
+ "SOURCES += project.cpp\n"
+ "QT -= core gui\n"
+ "INCLUDEPATH += . ");
+ projectFile.write(QFile::encodeName(QDir::currentPath()));
+
+#ifndef QT_NO_DEBUG
+ projectFile.write("\nCONFIG += debug\n");
+#else
+ projectFile.write("\nCONFIG += release\n");
+#endif
+
+ QByteArray extraSources = QFile::encodeName(extraProgramSources.join(" "));
+ if (!extraSources.isEmpty()) {
+ projectFile.write("SOURCES += ");
+ projectFile.write(extraSources);
+ projectFile.putChar('\n');
+ }
+
+ // Add Qt modules
+ if (qtModules & QExternalTest::QtCore)
+ projectFile.write("QT += core\n");
+ if (qtModules & QExternalTest::QtGui)
+ projectFile.write("QT += gui\n");
+ if (qtModules & QExternalTest::QtNetwork)
+ projectFile.write("QT += network\n");
+ if (qtModules & QExternalTest::QtXml)
+ projectFile.write("QT += xml\n");
+ if (qtModules & QExternalTest::QtXmlPatterns)
+ projectFile.write("QT += xmlpatterns\n");
+ if (qtModules & QExternalTest::QtOpenGL)
+ projectFile.write("QT += opengl\n");
+ if (qtModules & QExternalTest::QtSql)
+ projectFile.write("QT += sql\n");
+ if (qtModules & QExternalTest::QtSvg)
+ projectFile.write("QT += svg\n");
+ if (qtModules & QExternalTest::QtScript)
+ projectFile.write("QT += script\n");
+ if (qtModules & QExternalTest::QtTest)
+ projectFile.write("QT += testlib\n");
+ if (qtModules & QExternalTest::QtDBus)
+ projectFile.write("QT += dbus\n");
+ if (qtModules & QExternalTest::QtWebKit)
+ projectFile.write("QT += webkit\n");
+ if (qtModules & QExternalTest::Phonon)
+ projectFile.write("QT += phonon\n");
+
+ projectFile.write("\n### User-specified settings start ###\n");
+ foreach (QByteArray line, qmakeLines) {
+ projectFile.write(line);
+ projectFile.write("\n");
+ }
+ projectFile.write("\n### User-specified settings end ###\n");
+
+ // Use qmake to just compile:
+ projectFile.write(
+ "\n"
+ "test_compile.depends += $(OBJECTS)\n"
+ "QMAKE_EXTRA_TARGETS += test_compile\n");
+
+ // Use qmake to run the app too:
+ projectFile.write(
+ "\n"
+ "unix:test_run.commands = ./$(QMAKE_TARGET)\n"
+ "else:test_run.commands = $(QMAKE_TARGET)\n"
+ "embedded:test_run.commands += -qws\n"
+ "QMAKE_EXTRA_TARGETS += test_run\n");
+
+ // Use qmake to debug:
+ projectFile.write(
+ "\n"
+ "*-g++* {\n"
+ " unix:test_debug.commands = gdb --args ./$(QMAKE_TARGET)\n"
+ " else:test_debug.commands = gdb --args $(QMAKE_TARGET)\n"
+ " embedded:test_debug.commands += -qws\n"
+ " QMAKE_EXTRA_TARGETS += test_debug\n"
+ "}\n");
+
+ // Also use qmake to run the app with valgrind:
+ projectFile.write(
+ "\n"
+ "unix:test_valgrind.commands = valgrind ./$(QMAKE_TARGET)\n"
+ "else:test_valgrind.commands = valgrind $(QMAKE_TARGET)\n"
+ "embedded:test_valgrind.commands += -qws\n"
+ "QMAKE_EXTRA_TARGETS += test_valgrind\n");
+
+ return true;
+ }
+
+ bool QExternalTestPrivate::runQmake()
+ {
+ if (temporaryDir.isEmpty())
+ qWarning() << "Temporary directory is expected to be non-empty";
+
+ if (!createProjectFile())
+ return false;
+
+ failedStage = QExternalTest::QmakeStage;
+ QProcess qmake;
+ QStringList args;
+ args << QLatin1String("-makefile")
+ << QLatin1String("-spec")
+ << makespec()
+ << QLatin1String("project.pro");
+ qmake.setWorkingDirectory(temporaryDir);
+ qmake.start(QLatin1String("qmake"), args);
+
+ std_out += "### --- stdout from qmake --- ###\n";
+ std_err += "### --- stderr from qmake --- ###\n";
+ bool ok = qmake.waitForStarted();
+ if (!ok) {
+ exitCode = 255;
+ std_err += "qmake: ";
+ std_err += qmake.errorString().toLocal8Bit();
+ } else {
+ ok = qmake.waitForFinished();
+ exitCode = qmake.exitCode();
+
+ std_out += qmake.readAllStandardOutput();
+ std_err += qmake.readAllStandardError();
+ }
+
+ return ok && exitCode == 0;
+ }
+
+ bool QExternalTestPrivate::runMake(Target target)
+ {
+ if (temporaryDir.isEmpty())
+ qWarning() << "Temporary directory is expected to be non-empty";
+
+ QExternalProcess make;
+ make.setWorkingDirectory(temporaryDir);
+
+ QStringList environment = QProcess::systemEnvironment();
+ environment += QLatin1String("LC_ALL=C");
+ make.setEnvironment(environment);
+
+ QStringList args;
+ QProcess::ProcessChannelMode channelMode = QProcess::SeparateChannels;
+ if (target == Compile) {
+ args << QLatin1String("test_compile");
+ } else if (target == Run) {
+ QByteArray run = qgetenv("QTEST_EXTERNAL_RUN");
+ if (run == "valgrind")
+ args << QLatin1String("test_valgrind");
+ else if (run == "debug")
+ args << QLatin1String("test_debug");
+ else
+ args << QLatin1String("test_run");
+ if (!run.isEmpty())
+ channelMode = QProcess::ForwardedChannels;
+ }
+
+ make.setProcessChannelMode(channelMode);
+
+ static const char makes[] =
+ "nmake.exe\0" //for visual c++
+ "mingw32-make.exe\0" //for mingw
+ "gmake\0"
+ "make\0";
+ for (const char *p = makes; *p; p += strlen(p) + 1) {
+ make.start(QLatin1String(p), args);
+ if (make.waitForStarted())
+ break;
+ }
+
+ if (make.state() != QProcess::Running) {
+ exitCode = 255;
+ std_err += "make: ";
+ std_err += make.errorString().toLocal8Bit();
+ return false;
+ }
+
+ make.closeWriteChannel();
+ bool ok = make.waitForFinished(channelMode == QProcess::ForwardedChannels ? -1 : 60000);
+ if (!ok)
+ make.terminate();
+ exitCode = make.exitCode();
+ std_out += make.readAllStandardOutput();
+ std_err += make.readAllStandardError();
+
+ return ok;
+ }
+
+ bool QExternalTestPrivate::commonSetup(const QByteArray &body)
+ {
+ clear();
+
+ if (!createTemporaryDirectory())
+ return false;
+ if (!createProjectFile())
+ return false;
+ if (!prepareSourceCode(body))
+ return false;
+ if (!runQmake())
+ return false;
+ return true;
+ }
+
+ bool QExternalTestPrivate::tryCompile(const QByteArray &body)
+ {
+ if (!commonSetup(body))
+ return false;
+
+ // compile
+ failedStage = QExternalTest::CompilationStage;
+ std_out += "\n### --- stdout from make (compilation) --- ###\n";
+ std_err += "\n### --- stderr from make (compilation) --- ###\n";
+ return runMake(Compile);
+ }
+
+ bool QExternalTestPrivate::tryLink(const QByteArray &body)
+ {
+ if (!tryCompile(body) || exitCode != 0)
+ return false;
+
+ // link
+ failedStage = QExternalTest::LinkStage;
+ std_out += "\n### --- stdout from make (linking) --- ###\n";
+ std_err += "\n### --- stderr from make (linking) --- ###\n";
+ return runMake(Link);
+ }
+
+ bool QExternalTestPrivate::tryRun(const QByteArray &body)
+ {
+ if (!tryLink(body) || exitCode != 0)
+ return false;
+
+ // run
+ failedStage = QExternalTest::RunStage;
+ std_out += "\n### --- stdout from process --- ###\n";
+ std_err += "\n### --- stderr from process --- ###\n";
+ return runMake(Run);
+ }
+}
+QT_END_NAMESPACE
diff --git a/tests/auto/corelib/tools/qsharedpointer/externaltests.h b/tests/auto/corelib/tools/qsharedpointer/externaltests.h
new file mode 100644
index 0000000000..e07ba31928
--- /dev/null
+++ b/tests/auto/corelib/tools/qsharedpointer/externaltests.h
@@ -0,0 +1,132 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef QTEST_EXTERNAL_TESTS_H
+#define QTEST_EXTERNAL_TESTS_H
+
+#include <QList>
+#include <QByteArray>
+#include <QStringList>
+
+QT_BEGIN_NAMESPACE
+namespace QTest {
+ class QExternalTestPrivate;
+ class QExternalTest
+ {
+ public:
+ QExternalTest();
+ ~QExternalTest();
+
+ enum Stage {
+ FileStage,
+ QmakeStage,
+ CompilationStage,
+ LinkStage,
+ RunStage
+ };
+
+ enum QtModule {
+ QtCore = 0x0001,
+ QtGui = 0x0002,
+ QtNetwork = 0x0004,
+ QtXml = 0x0008,
+ QtXmlPatterns=0x0010,
+ QtOpenGL = 0x0020,
+ QtSql = 0x0040,
+ QtSvg = 0x0080,
+ QtScript = 0x0100,
+ QtTest = 0x0200,
+ QtDBus = 0x0400,
+ QtWebKit = 0x0800,
+ Phonon = 0x1000 // odd man out
+ };
+ Q_DECLARE_FLAGS(QtModules, QtModule)
+
+ enum ApplicationType {
+ AutoApplication,
+ Applicationless,
+ QCoreApplication,
+ QApplicationTty,
+ QApplicationGuiClient,
+ QApplicationGuiServer
+ };
+
+ QList<QByteArray> qmakeSettings() const;
+ void setQmakeSettings(const QList<QByteArray> &settings);
+
+ QtModules qtModules() const;
+ void setQtModules(QtModules modules);
+
+ ApplicationType applicationType() const;
+ void setApplicationType(ApplicationType type);
+
+ QStringList extraProgramSources() const;
+ void setExtraProgramSources(const QStringList &list);
+
+ QByteArray programHeader() const;
+ void setProgramHeader(const QByteArray &header);
+
+ // execution:
+ bool tryCompile(const QByteArray &body);
+ bool tryLink(const QByteArray &body);
+ bool tryRun(const QByteArray &body);
+ bool tryCompileFail(const QByteArray &body);
+ bool tryLinkFail(const QByteArray &body);
+ bool tryRunFail(const QByteArray &body);
+
+ Stage failedStage() const;
+ int exitCode() const;
+ QByteArray fullProgramSource() const;
+ QByteArray standardOutput() const;
+ QByteArray standardError() const;
+
+ QString errorReport() const;
+
+ private:
+ QExternalTestPrivate * const d;
+ };
+
+ Q_DECLARE_OPERATORS_FOR_FLAGS(QExternalTest::QtModules)
+}
+QT_END_NAMESPACE
+
+#endif
diff --git a/tests/auto/corelib/tools/qsharedpointer/externaltests.pri b/tests/auto/corelib/tools/qsharedpointer/externaltests.pri
new file mode 100644
index 0000000000..c8a36765ea
--- /dev/null
+++ b/tests/auto/corelib/tools/qsharedpointer/externaltests.pri
@@ -0,0 +1,8 @@
+SOURCES += $$PWD/externaltests.cpp
+HEADERS += $$PWD/externaltests.h
+cleanedQMAKESPEC = $$replace(QMAKESPEC, \\\\, /)
+!symbian:DEFINES += DEFAULT_MAKESPEC=\\\"$$cleanedQMAKESPEC\\\"
+
+embedded:DEFINES += QTEST_NO_RTTI QTEST_CROSS_COMPILED
+wince*:DEFINES += QTEST_CROSS_COMPILED QTEST_NO_RTTI
+symbian: DEFINES += QTEST_CROSS_COMPILED
diff --git a/tests/auto/corelib/tools/qsharedpointer/forwarddeclaration.cpp b/tests/auto/corelib/tools/qsharedpointer/forwarddeclaration.cpp
new file mode 100644
index 0000000000..f6ee9ad02a
--- /dev/null
+++ b/tests/auto/corelib/tools/qsharedpointer/forwarddeclaration.cpp
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#define QT_SHAREDPOINTER_TRACK_POINTERS
+#include "qsharedpointer.h"
+
+class ForwardDeclared;
+ForwardDeclared *forwardPointer();
+
+void externalForwardDeclaration()
+{
+ struct Wrapper { QSharedPointer<ForwardDeclared> pointer; };
+}
+
diff --git a/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.cpp b/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.cpp
new file mode 100644
index 0000000000..5ff8893b81
--- /dev/null
+++ b/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.cpp
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "forwarddeclared.h"
+
+ForwardDeclared *forwardPointer()
+{
+ return new ForwardDeclared;
+}
+
+int forwardDeclaredDestructorRunCount;
+ForwardDeclared::~ForwardDeclared()
+{
+ ++forwardDeclaredDestructorRunCount;
+}
diff --git a/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.h b/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.h
new file mode 100644
index 0000000000..6afc293dde
--- /dev/null
+++ b/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef FORWARDDECLARED_H
+#define FORWARDDECLARED_H
+
+extern int forwardDeclaredDestructorRunCount;
+class ForwardDeclared
+{
+public:
+ ~ForwardDeclared();
+};
+
+ForwardDeclared *forwardPointer();
+
+#endif // FORWARDDECLARED_H
diff --git a/tests/auto/corelib/tools/qsharedpointer/qsharedpointer.pro b/tests/auto/corelib/tools/qsharedpointer/qsharedpointer.pro
new file mode 100644
index 0000000000..fc791f485c
--- /dev/null
+++ b/tests/auto/corelib/tools/qsharedpointer/qsharedpointer.pro
@@ -0,0 +1,17 @@
+load(qttest_p4)
+
+SOURCES += tst_qsharedpointer.cpp \
+ forwarddeclaration.cpp \
+ forwarddeclared.cpp \
+ wrapper.cpp
+
+HEADERS += forwarddeclared.h \
+ wrapper.h
+
+QT = core
+!symbian:DEFINES += SRCDIR=\\\"$$PWD/\\\"
+
+include(externaltests.pri)
+CONFIG += parallel_test
+
+CONFIG += insignificant_test # QTBUG-21402
diff --git a/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
new file mode 100644
index 0000000000..27d2d4d24a
--- /dev/null
+++ b/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
@@ -0,0 +1,1922 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#define QT_SHAREDPOINTER_TRACK_POINTERS
+#include "qsharedpointer.h"
+#include <QtTest/QtTest>
+#include <QtCore/QHash>
+#include <QtCore/QMap>
+#include <QtCore/QThread>
+#include <QtCore/QVector>
+
+#include "externaltests.h"
+#include "wrapper.h"
+
+#include <stdlib.h>
+#include <time.h>
+
+QT_BEGIN_NAMESPACE
+namespace QtSharedPointer {
+ Q_CORE_EXPORT void internalSafetyCheckCleanCheck();
+}
+QT_END_NAMESPACE
+
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR "."
+#endif
+
+class tst_QSharedPointer: public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void basics_data();
+ void basics();
+ void operators();
+ void swap();
+ void forwardDeclaration1();
+ void forwardDeclaration2();
+ void memoryManagement();
+ void downCast();
+ void functionCallDownCast();
+ void upCast();
+ void qobjectWeakManagement();
+ void noSharedPointerFromWeakQObject();
+ void weakQObjectFromSharedPointer();
+ void objectCast();
+ void differentPointers();
+ void virtualBaseDifferentPointers();
+#ifndef QTEST_NO_RTTI
+ void dynamicCast();
+ void dynamicCastDifferentPointers();
+ void dynamicCastVirtualBase();
+ void dynamicCastFailure();
+#endif
+ void constCorrectness();
+ void customDeleter();
+ void creating();
+ void creatingQObject();
+ void mixTrackingPointerCode();
+ void reentrancyWhileDestructing();
+
+ void threadStressTest_data();
+ void threadStressTest();
+ void map();
+ void hash();
+ void validConstructs();
+ void invalidConstructs_data();
+ void invalidConstructs();
+
+public slots:
+ void cleanup() { check(); }
+
+public:
+ inline void check()
+ {
+#ifdef QT_BUILD_INTERNAL
+ QtSharedPointer::internalSafetyCheckCleanCheck();
+#endif
+ }
+};
+
+template <typename Base>
+class RefCountHack: public Base
+{
+public:
+ using Base::d;
+};
+template<typename Base> static inline
+QtSharedPointer::ExternalRefCountData *refCountData(const Base &b)
+{ return static_cast<const RefCountHack<Base> *>(&b)->d; }
+
+class Data
+{
+public:
+ static int destructorCounter;
+ static int generationCounter;
+ int generation;
+
+ Data() : generation(++generationCounter)
+ { }
+
+ virtual ~Data()
+ {
+ if (generation <= 0)
+ qFatal("tst_qsharedpointer: Double deletion!");
+ generation = 0;
+ ++destructorCounter;
+ }
+
+ void doDelete()
+ {
+ delete this;
+ }
+
+ bool alsoDelete()
+ {
+ doDelete();
+ return true;
+ }
+
+ virtual void virtualDelete()
+ {
+ delete this;
+ }
+
+ virtual int classLevel() { return 1; }
+};
+int Data::generationCounter = 0;
+int Data::destructorCounter = 0;
+
+void tst_QSharedPointer::basics_data()
+{
+ QTest::addColumn<bool>("isNull");
+ QTest::newRow("null") << true;
+ QTest::newRow("non-null") << false;
+}
+
+void tst_QSharedPointer::basics()
+{
+ {
+ QSharedPointer<Data> ptr;
+ QWeakPointer<Data> weakref;
+
+ QCOMPARE(sizeof(ptr), 2*sizeof(void*));
+ QCOMPARE(sizeof(weakref), 2*sizeof(void*));
+ }
+
+ QFETCH(bool, isNull);
+ Data *aData = 0;
+ if (!isNull)
+ aData = new Data;
+ Data *otherData = new Data;
+ QSharedPointer<Data> ptr(aData);
+
+ {
+ // basic self tests
+ QCOMPARE(ptr.isNull(), isNull);
+ QCOMPARE(bool(ptr), !isNull);
+ QCOMPARE(!ptr, isNull);
+
+ QCOMPARE(ptr.data(), aData);
+ QCOMPARE(ptr.operator->(), aData);
+ Data &dataReference = *ptr;
+ QCOMPARE(&dataReference, aData);
+
+ QVERIFY(ptr == aData);
+ QVERIFY(!(ptr != aData));
+ QVERIFY(aData == ptr);
+ QVERIFY(!(aData != ptr));
+
+ QVERIFY(ptr != otherData);
+ QVERIFY(otherData != ptr);
+ QVERIFY(! (ptr == otherData));
+ QVERIFY(! (otherData == ptr));
+ }
+ QVERIFY(!refCountData(ptr) || refCountData(ptr)->weakref == 1);
+ QVERIFY(!refCountData(ptr) || refCountData(ptr)->strongref == 1);
+
+ {
+ // create another object:
+ QSharedPointer<Data> otherCopy(otherData);
+ QVERIFY(ptr != otherCopy);
+ QVERIFY(otherCopy != ptr);
+ QVERIFY(! (ptr == otherCopy));
+ QVERIFY(! (otherCopy == ptr));
+
+ // otherData is deleted here
+ }
+ QVERIFY(!refCountData(ptr) || refCountData(ptr)->weakref == 1);
+ QVERIFY(!refCountData(ptr) || refCountData(ptr)->strongref == 1);
+
+ {
+ // create a copy:
+ QSharedPointer<Data> copy(ptr);
+ QVERIFY(copy == ptr);
+ QVERIFY(ptr == copy);
+ QVERIFY(! (copy != ptr));
+ QVERIFY(! (ptr != copy));
+ QCOMPARE(copy, ptr);
+ QCOMPARE(ptr, copy);
+
+ QCOMPARE(copy.isNull(), isNull);
+ QCOMPARE(copy.data(), aData);
+ QVERIFY(copy == aData);
+ }
+ QVERIFY(!refCountData(ptr) || refCountData(ptr)->weakref == 1);
+ QVERIFY(!refCountData(ptr) || refCountData(ptr)->strongref == 1);
+
+ {
+ // create a weak reference:
+ QWeakPointer<Data> weak(ptr);
+ QCOMPARE(weak.isNull(), isNull);
+ QCOMPARE(!weak, isNull);
+ QCOMPARE(bool(weak), !isNull);
+
+ QVERIFY(ptr == weak);
+ QVERIFY(weak == ptr);
+ QVERIFY(! (ptr != weak));
+ QVERIFY(! (weak != ptr));
+
+ // create another reference:
+ QWeakPointer<Data> weak2(weak);
+ QCOMPARE(weak2.isNull(), isNull);
+ QCOMPARE(!weak2, isNull);
+ QCOMPARE(bool(weak2), !isNull);
+
+ QVERIFY(weak2 == weak);
+ QVERIFY(weak == weak2);
+ QVERIFY(! (weak2 != weak));
+ QVERIFY(! (weak != weak2));
+
+ // create a strong reference back:
+ QSharedPointer<Data> strong(weak);
+ QVERIFY(strong == weak);
+ QVERIFY(strong == ptr);
+ QCOMPARE(strong.data(), aData);
+ }
+ QVERIFY(!refCountData(ptr) || refCountData(ptr)->weakref == 1);
+ QVERIFY(!refCountData(ptr) || refCountData(ptr)->strongref == 1);
+
+ // aData is deleted here
+}
+
+void tst_QSharedPointer::operators()
+{
+ QSharedPointer<char> p1;
+ QSharedPointer<char> p2(new char);
+ qptrdiff diff = p2.data() - p1.data();
+ QVERIFY(p1.data() != p2.data());
+ QVERIFY(diff != 0);
+
+ // operator-
+ QCOMPARE(p2 - p1.data(), diff);
+ QCOMPARE(p2.data() - p1, diff);
+ QCOMPARE(p2 - p1, diff);
+ QCOMPARE(p1 - p2, -diff);
+ QCOMPARE(p1 - p1, qptrdiff(0));
+ QCOMPARE(p2 - p2, qptrdiff(0));
+
+ // operator<
+ QVERIFY(p1 < p2.data());
+ QVERIFY(p1.data() < p2);
+ QVERIFY(p1 < p2);
+ QVERIFY(!(p2 < p1));
+ QVERIFY(!(p2 < p2));
+ QVERIFY(!(p1 < p1));
+
+ // qHash
+ QCOMPARE(qHash(p1), qHash(p1.data()));
+ QCOMPARE(qHash(p2), qHash(p2.data()));
+}
+
+void tst_QSharedPointer::swap()
+{
+ QSharedPointer<int> p1, p2(new int(42)), control = p2;
+ QVERIFY(p1 != control);
+ QVERIFY(p1.isNull());
+ QVERIFY(p2 == control);
+ QVERIFY(!p2.isNull());
+ QVERIFY(*p2 == 42);
+
+ p1.swap(p2);
+ QVERIFY(p1 == control);
+ QVERIFY(!p1.isNull());
+ QVERIFY(p2 != control);
+ QVERIFY(p2.isNull());
+ QVERIFY(*p1 == 42);
+
+ p1.swap(p2);
+ QVERIFY(p1 != control);
+ QVERIFY(p1.isNull());
+ QVERIFY(p2 == control);
+ QVERIFY(!p2.isNull());
+ QVERIFY(*p2 == 42);
+
+ qSwap(p1, p2);
+ QVERIFY(p1 == control);
+ QVERIFY(!p1.isNull());
+ QVERIFY(p2 != control);
+ QVERIFY(p2.isNull());
+ QVERIFY(*p1 == 42);
+}
+
+class ForwardDeclared;
+ForwardDeclared *forwardPointer();
+void externalForwardDeclaration();
+extern int forwardDeclaredDestructorRunCount;
+
+void tst_QSharedPointer::forwardDeclaration1()
+{
+#if defined(Q_CC_SUN) || defined(Q_CC_WINSCW) || defined(Q_CC_RVCT)
+ QSKIP("This type of forward declaration is not valid with this compiler", SkipAll);
+#else
+ externalForwardDeclaration();
+
+ struct Wrapper { QSharedPointer<ForwardDeclared> pointer; };
+
+ forwardDeclaredDestructorRunCount = 0;
+ {
+ Wrapper w;
+ w.pointer = QSharedPointer<ForwardDeclared>(forwardPointer());
+ QVERIFY(!w.pointer.isNull());
+ }
+ QCOMPARE(forwardDeclaredDestructorRunCount, 1);
+#endif
+}
+
+#include "forwarddeclared.h"
+
+void tst_QSharedPointer::forwardDeclaration2()
+{
+ forwardDeclaredDestructorRunCount = 0;
+ {
+ struct Wrapper { QSharedPointer<ForwardDeclared> pointer; };
+ Wrapper w1, w2;
+ w1.pointer = QSharedPointer<ForwardDeclared>(forwardPointer());
+ QVERIFY(!w1.pointer.isNull());
+ }
+ QCOMPARE(forwardDeclaredDestructorRunCount, 1);
+}
+
+void tst_QSharedPointer::memoryManagement()
+{
+ int generation = Data::generationCounter + 1;
+ int destructorCounter = Data::destructorCounter;
+
+ QSharedPointer<Data> ptr = QSharedPointer<Data>(new Data);
+ QCOMPARE(ptr->generation, generation);
+ QCOMPARE(Data::destructorCounter, destructorCounter);
+ QCOMPARE(Data::generationCounter, generation);
+
+ ptr = ptr;
+ QCOMPARE(ptr->generation, generation);
+ QCOMPARE(Data::destructorCounter, destructorCounter);
+ QCOMPARE(Data::generationCounter, generation);
+
+ {
+ QSharedPointer<Data> copy = ptr;
+ QCOMPARE(ptr->generation, generation);
+ QCOMPARE(copy->generation, generation);
+
+ // copy goes out of scope, ptr continues
+ }
+ QCOMPARE(ptr->generation, generation);
+ QCOMPARE(Data::destructorCounter, destructorCounter);
+ QCOMPARE(Data::generationCounter, generation);
+
+ {
+ QWeakPointer<Data> weak = ptr;
+ weak = ptr;
+ QCOMPARE(ptr->generation, generation);
+ QCOMPARE(Data::destructorCounter, destructorCounter);
+ QCOMPARE(Data::generationCounter, generation);
+
+ weak = weak;
+ QCOMPARE(ptr->generation, generation);
+ QCOMPARE(Data::destructorCounter, destructorCounter);
+ QCOMPARE(Data::generationCounter, generation);
+
+ QSharedPointer<Data> strong = weak;
+ QCOMPARE(ptr->generation, generation);
+ QCOMPARE(strong->generation, generation);
+ QCOMPARE(Data::destructorCounter, destructorCounter);
+ QCOMPARE(Data::generationCounter, generation);
+
+ // both weak and strong go out of scope
+ }
+ QCOMPARE(ptr->generation, generation);
+ QCOMPARE(Data::destructorCounter, destructorCounter);
+ QCOMPARE(Data::generationCounter, generation);
+
+ QWeakPointer<Data> weak = ptr;
+ ptr = QSharedPointer<Data>();
+
+ // destructor must have been called
+ QCOMPARE(Data::destructorCounter, destructorCounter + 1);
+ QVERIFY(ptr.isNull());
+ QVERIFY(weak.isNull());
+
+ // if we create a strong pointer from the weak, it must still be null
+ ptr = weak;
+ QVERIFY(ptr.isNull());
+ QVERIFY(ptr == 0);
+ QCOMPARE(ptr.data(), (Data*)0);
+}
+
+class DerivedData: public Data
+{
+public:
+ static int derivedDestructorCounter;
+ int moreData;
+ DerivedData() : moreData(0) { }
+ ~DerivedData() { ++derivedDestructorCounter; }
+
+ virtual void virtualDelete()
+ {
+ delete this;
+ }
+
+ virtual int classLevel() { return 2; }
+};
+int DerivedData::derivedDestructorCounter = 0;
+
+class Stuffing
+{
+public:
+ char buffer[16];
+ Stuffing() { for (uint i = 0; i < sizeof buffer; ++i) buffer[i] = 16 - i; }
+ virtual ~Stuffing() { }
+};
+
+class DiffPtrDerivedData: public Stuffing, public Data
+{
+public:
+ virtual int classLevel() { return 3; }
+};
+
+class VirtualDerived: virtual public Data
+{
+public:
+ int moreData;
+
+ VirtualDerived() : moreData(0xc0ffee) { }
+ virtual int classLevel() { return 4; }
+};
+
+void tst_QSharedPointer::downCast()
+{
+ {
+ QSharedPointer<DerivedData> ptr = QSharedPointer<DerivedData>(new DerivedData);
+ QSharedPointer<Data> baseptr = qSharedPointerCast<Data>(ptr);
+ QSharedPointer<Data> other;
+
+ QVERIFY(ptr == baseptr);
+ QVERIFY(baseptr == ptr);
+ QVERIFY(! (ptr != baseptr));
+ QVERIFY(! (baseptr != ptr));
+
+ QVERIFY(ptr != other);
+ QVERIFY(other != ptr);
+ QVERIFY(! (ptr == other));
+ QVERIFY(! (other == ptr));
+ }
+
+ {
+ QSharedPointer<DerivedData> ptr = QSharedPointer<DerivedData>(new DerivedData);
+ QSharedPointer<Data> baseptr = ptr;
+ }
+
+ int destructorCount;
+ destructorCount = DerivedData::derivedDestructorCounter;
+ {
+ QSharedPointer<Data> baseptr;
+ {
+ QSharedPointer<DerivedData> ptr = QSharedPointer<DerivedData>(new DerivedData);
+ baseptr = ptr;
+ QVERIFY(baseptr == ptr);
+ }
+ }
+ QCOMPARE(DerivedData::derivedDestructorCounter, destructorCount + 1);
+
+ destructorCount = DerivedData::derivedDestructorCounter;
+ {
+ QSharedPointer<DerivedData> ptr = QSharedPointer<DerivedData>(new DerivedData);
+ QWeakPointer<Data> baseptr = ptr;
+ QVERIFY(baseptr == ptr);
+
+ ptr = QSharedPointer<DerivedData>();
+ QVERIFY(baseptr.isNull());
+ }
+ QCOMPARE(DerivedData::derivedDestructorCounter, destructorCount + 1);
+
+ destructorCount = DerivedData::derivedDestructorCounter;
+ {
+ QSharedPointer<DerivedData> ptr = QSharedPointer<DerivedData>(new DerivedData);
+ QWeakPointer<DerivedData> weakptr(ptr);
+
+ QSharedPointer<Data> baseptr = weakptr;
+ QVERIFY(baseptr == ptr);
+ QWeakPointer<Data> baseweakptr = weakptr;
+ QVERIFY(baseweakptr == ptr);
+ }
+ QCOMPARE(DerivedData::derivedDestructorCounter, destructorCount + 1);
+}
+
+void functionDataByValue(QSharedPointer<Data> p) { Q_UNUSED(p); };
+void functionDataByRef(const QSharedPointer<Data> &p) { Q_UNUSED(p); };
+void tst_QSharedPointer::functionCallDownCast()
+{
+ QSharedPointer<DerivedData> p(new DerivedData());
+ functionDataByValue(p);
+ functionDataByRef(p);
+}
+
+void tst_QSharedPointer::upCast()
+{
+ QSharedPointer<Data> baseptr = QSharedPointer<Data>(new DerivedData);
+
+ {
+ QSharedPointer<DerivedData> derivedptr = qSharedPointerCast<DerivedData>(baseptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+
+ {
+ QWeakPointer<DerivedData> derivedptr = qWeakPointerCast<DerivedData>(baseptr);
+ QVERIFY(baseptr == derivedptr);
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+
+ {
+ QWeakPointer<Data> weakptr = baseptr;
+ QSharedPointer<DerivedData> derivedptr = qSharedPointerCast<DerivedData>(weakptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+
+ {
+ QSharedPointer<DerivedData> derivedptr = baseptr.staticCast<DerivedData>();
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+}
+
+class OtherObject: public QObject
+{
+ Q_OBJECT
+};
+
+void tst_QSharedPointer::qobjectWeakManagement()
+{
+ {
+ QWeakPointer<QObject> weak;
+ weak = QWeakPointer<QObject>();
+ QVERIFY(weak.isNull());
+ QVERIFY(!weak.data());
+ }
+
+ {
+ QObject *obj = new QObject;
+ QWeakPointer<QObject> weak(obj);
+ QVERIFY(!weak.isNull());
+ QVERIFY(weak.data() == obj);
+
+ // now delete
+ delete obj;
+ QVERIFY(weak.isNull());
+ }
+ check();
+
+ {
+ // same, bit with operator=
+ QObject *obj = new QObject;
+ QWeakPointer<QObject> weak;
+ weak = obj;
+ QVERIFY(!weak.isNull());
+ QVERIFY(weak.data() == obj);
+
+ // now delete
+ delete obj;
+ QVERIFY(weak.isNull());
+ }
+ check();
+
+ {
+ // delete triggered by parent
+ QObject *obj, *parent;
+ parent = new QObject;
+ obj = new QObject(parent);
+ QWeakPointer<QObject> weak(obj);
+
+ // now delete the parent
+ delete parent;
+ QVERIFY(weak.isNull());
+ }
+ check();
+
+ {
+ // same as above, but set the parent after QWeakPointer is created
+ QObject *obj, *parent;
+ obj = new QObject;
+ QWeakPointer<QObject> weak(obj);
+
+ parent = new QObject;
+ obj->setParent(parent);
+
+ // now delete the parent
+ delete parent;
+ QVERIFY(weak.isNull());
+ }
+ check();
+
+ {
+ // with two QWeakPointers
+ QObject *obj = new QObject;
+ QWeakPointer<QObject> weak(obj);
+
+ {
+ QWeakPointer<QObject> weak2(obj);
+ QVERIFY(!weak2.isNull());
+ QVERIFY(weak == weak2);
+ }
+ QVERIFY(!weak.isNull());
+
+ delete obj;
+ QVERIFY(weak.isNull());
+ }
+ check();
+
+ {
+ // same, but delete the pointer while two QWeakPointers exist
+ QObject *obj = new QObject;
+ QWeakPointer<QObject> weak(obj);
+
+ {
+ QWeakPointer<QObject> weak2(obj);
+ QVERIFY(!weak2.isNull());
+
+ delete obj;
+ QVERIFY(weak.isNull());
+ QVERIFY(weak2.isNull());
+ }
+ QVERIFY(weak.isNull());
+ }
+ check();
+}
+
+void tst_QSharedPointer::noSharedPointerFromWeakQObject()
+{
+ // you're not allowed to create a QSharedPointer from an unmanaged QObject
+ QObject obj;
+ QWeakPointer<QObject> weak(&obj);
+
+ QSharedPointer<QObject> strong = weak.toStrongRef();
+ QVERIFY(strong.isNull());
+
+ // if something went wrong, we'll probably crash here
+}
+
+void tst_QSharedPointer::weakQObjectFromSharedPointer()
+{
+ // this is the inverse of the above: you're allowed to create a QWeakPointer
+ // from a managed QObject
+ QSharedPointer<QObject> shared(new QObject);
+ QWeakPointer<QObject> weak = shared.data();
+ QVERIFY(!weak.isNull());
+
+ // delete:
+ shared.clear();
+ QVERIFY(weak.isNull());
+}
+
+void tst_QSharedPointer::objectCast()
+{
+ {
+ OtherObject *data = new OtherObject;
+ QSharedPointer<QObject> baseptr = QSharedPointer<QObject>(data);
+ QVERIFY(baseptr == data);
+ QVERIFY(data == baseptr);
+
+ // perform object cast
+ QSharedPointer<OtherObject> ptr = qSharedPointerObjectCast<OtherObject>(baseptr);
+ QVERIFY(!ptr.isNull());
+ QCOMPARE(ptr.data(), data);
+ QVERIFY(ptr == data);
+
+ // again:
+ ptr = baseptr.objectCast<OtherObject>();
+ QVERIFY(ptr == data);
+
+ // again:
+ ptr = qobject_cast<OtherObject *>(baseptr);
+ QVERIFY(ptr == data);
+
+ // again:
+ ptr = qobject_cast<QSharedPointer<OtherObject> >(baseptr);
+ QVERIFY(ptr == data);
+ }
+ check();
+
+ {
+ const OtherObject *data = new OtherObject;
+ QSharedPointer<const QObject> baseptr = QSharedPointer<const QObject>(data);
+ QVERIFY(baseptr == data);
+ QVERIFY(data == baseptr);
+
+ // perform object cast
+ QSharedPointer<const OtherObject> ptr = qSharedPointerObjectCast<const OtherObject>(baseptr);
+ QVERIFY(!ptr.isNull());
+ QCOMPARE(ptr.data(), data);
+ QVERIFY(ptr == data);
+
+ // again:
+ ptr = baseptr.objectCast<const OtherObject>();
+ QVERIFY(ptr == data);
+
+ // again:
+ ptr = qobject_cast<const OtherObject *>(baseptr);
+ QVERIFY(ptr == data);
+
+ // again:
+ ptr = qobject_cast<QSharedPointer<const OtherObject> >(baseptr);
+ QVERIFY(ptr == data);
+ }
+ check();
+
+ {
+ OtherObject *data = new OtherObject;
+ QPointer<OtherObject> qptr = data;
+ QSharedPointer<OtherObject> ptr = QSharedPointer<OtherObject>(data);
+ QWeakPointer<QObject> weakptr = ptr;
+
+ {
+ // perform object cast
+ QSharedPointer<OtherObject> otherptr = qSharedPointerObjectCast<OtherObject>(weakptr);
+ QVERIFY(otherptr == ptr);
+
+ // again:
+ otherptr = qobject_cast<OtherObject *>(weakptr);
+ QVERIFY(otherptr == ptr);
+
+ // again:
+ otherptr = qobject_cast<QSharedPointer<OtherObject> >(weakptr);
+ QVERIFY(otherptr == ptr);
+ }
+
+ // drop the reference:
+ ptr.clear();
+ QVERIFY(ptr.isNull());
+ QVERIFY(qptr.isNull());
+ QVERIFY(weakptr.toStrongRef().isNull());
+
+ // verify that the object casts fail without crash
+ QSharedPointer<OtherObject> otherptr = qSharedPointerObjectCast<OtherObject>(weakptr);
+ QVERIFY(otherptr.isNull());
+
+ // again:
+ otherptr = qobject_cast<OtherObject *>(weakptr);
+ QVERIFY(otherptr.isNull());
+
+ // again:
+ otherptr = qobject_cast<QSharedPointer<OtherObject> >(weakptr);
+ QVERIFY(otherptr.isNull());
+ }
+ check();
+}
+
+void tst_QSharedPointer::differentPointers()
+{
+ {
+ DiffPtrDerivedData *aData = new DiffPtrDerivedData;
+ Data *aBase = aData;
+
+ // ensure that this compiler isn't broken
+ if (*reinterpret_cast<quintptr *>(&aData) == *reinterpret_cast<quintptr *>(&aBase))
+ qFatal("Something went very wrong -- we couldn't create two different pointers to the same object");
+ if (aData != aBase)
+ QSKIP("Broken compiler", SkipAll);
+ if (aBase != aData)
+ QSKIP("Broken compiler", SkipAll);
+
+ QSharedPointer<DiffPtrDerivedData> ptr = QSharedPointer<DiffPtrDerivedData>(aData);
+ QSharedPointer<Data> baseptr = qSharedPointerCast<Data>(ptr);
+ qDebug("naked: orig: %p; base: %p (%s) -- QSharedPointer: orig: %p; base %p (%s) -- result: %s",
+ aData, aBase, aData == aBase ? "equal" : "not equal",
+ ptr.data(), baseptr.data(), ptr.data() == baseptr.data() ? "equal" : "not equal",
+ baseptr.data() == aData ? "equal" : "not equal");
+
+ QVERIFY(ptr.data() == baseptr.data());
+ QVERIFY(baseptr.data() == ptr.data());
+ QVERIFY(ptr == baseptr);
+ QVERIFY(baseptr == ptr);
+
+ QVERIFY(ptr.data() == aBase);
+ QVERIFY(aBase == ptr.data());
+ QVERIFY(ptr.data() == aData);
+ QVERIFY(aData == ptr.data());
+
+ QVERIFY(ptr == aBase);
+ QVERIFY(aBase == ptr);
+ QVERIFY(ptr == aData);
+ QVERIFY(aData == ptr);
+
+ QVERIFY(baseptr.data() == aBase);
+ QVERIFY(aBase == baseptr.data());
+ QVERIFY(baseptr == aBase);
+ QVERIFY(aBase == baseptr);
+
+ QVERIFY(baseptr.data() == aData);
+ QVERIFY(aData == baseptr.data());
+
+#if defined(Q_CC_MSVC) && _MSC_VER < 1400
+ QEXPECT_FAIL("", "Compiler bug", Continue);
+#endif
+ QVERIFY(baseptr == aData);
+#if defined(Q_CC_MSVC) && _MSC_VER < 1400
+ QEXPECT_FAIL("", "Compiler bug", Continue);
+#endif
+ QVERIFY(aData == baseptr);
+ }
+ check();
+
+ {
+ DiffPtrDerivedData *aData = new DiffPtrDerivedData;
+ Data *aBase = aData;
+ QVERIFY(aData == aBase);
+ QVERIFY(*reinterpret_cast<quintptr *>(&aData) != *reinterpret_cast<quintptr *>(&aBase));
+
+ QSharedPointer<Data> baseptr = QSharedPointer<Data>(aData);
+ QSharedPointer<DiffPtrDerivedData> ptr = qSharedPointerCast<DiffPtrDerivedData>(baseptr);
+ QVERIFY(ptr == baseptr);
+ QVERIFY(ptr.data() == baseptr.data());
+ QVERIFY(ptr == aBase);
+#if defined(Q_CC_MSVC) && _MSC_VER < 1400
+ QEXPECT_FAIL("", "Compiler bug", Continue);
+#endif
+ QVERIFY(baseptr == aData);
+ }
+ check();
+
+ {
+ DiffPtrDerivedData *aData = new DiffPtrDerivedData;
+ Data *aBase = aData;
+ QVERIFY(aData == aBase);
+ QVERIFY(*reinterpret_cast<quintptr *>(&aData) != *reinterpret_cast<quintptr *>(&aBase));
+
+ QSharedPointer<DiffPtrDerivedData> ptr = QSharedPointer<DiffPtrDerivedData>(aData);
+ QSharedPointer<Data> baseptr = ptr;
+ QVERIFY(ptr == baseptr);
+ QVERIFY(ptr.data() == baseptr.data());
+ QVERIFY(ptr == aBase);
+ QVERIFY(ptr == aData);
+#if defined(Q_CC_MSVC) && _MSC_VER < 1400
+ QEXPECT_FAIL("", "Compiler bug", Continue);
+#endif
+ QVERIFY(baseptr == aData);
+ QVERIFY(baseptr == aBase);
+ }
+ check();
+}
+
+void tst_QSharedPointer::virtualBaseDifferentPointers()
+{
+ {
+ VirtualDerived *aData = new VirtualDerived;
+ Data *aBase = aData;
+ QVERIFY(aData == aBase);
+ QVERIFY(*reinterpret_cast<quintptr *>(&aData) != *reinterpret_cast<quintptr *>(&aBase));
+
+ QSharedPointer<VirtualDerived> ptr = QSharedPointer<VirtualDerived>(aData);
+ QSharedPointer<Data> baseptr = qSharedPointerCast<Data>(ptr);
+ QVERIFY(ptr == baseptr);
+ QVERIFY(ptr.data() == baseptr.data());
+ QVERIFY(ptr == aBase);
+ QVERIFY(ptr == aData);
+#if defined(Q_CC_MSVC) && _MSC_VER < 1400
+ QEXPECT_FAIL("", "Compiler bug", Continue);
+#endif
+ QVERIFY(baseptr == aData);
+ QVERIFY(baseptr == aBase);
+ }
+ check();
+
+ {
+ VirtualDerived *aData = new VirtualDerived;
+ Data *aBase = aData;
+ QVERIFY(aData == aBase);
+ QVERIFY(*reinterpret_cast<quintptr *>(&aData) != *reinterpret_cast<quintptr *>(&aBase));
+
+ QSharedPointer<VirtualDerived> ptr = QSharedPointer<VirtualDerived>(aData);
+ QSharedPointer<Data> baseptr = ptr;
+ QVERIFY(ptr == baseptr);
+ QVERIFY(ptr.data() == baseptr.data());
+ QVERIFY(ptr == aBase);
+ QVERIFY(ptr == aData);
+#if defined(Q_CC_MSVC) && _MSC_VER < 1400
+ QEXPECT_FAIL("", "Compiler bug", Continue);
+#endif
+ QVERIFY(baseptr == aData);
+ QVERIFY(baseptr == aBase);
+ }
+ check();
+}
+
+#ifndef QTEST_NO_RTTI
+void tst_QSharedPointer::dynamicCast()
+{
+ DerivedData *aData = new DerivedData;
+ QSharedPointer<Data> baseptr = QSharedPointer<Data>(aData);
+
+ {
+ QSharedPointer<DerivedData> derivedptr = qSharedPointerDynamicCast<DerivedData>(baseptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+
+ {
+ QWeakPointer<Data> weakptr = baseptr;
+ QSharedPointer<DerivedData> derivedptr = qSharedPointerDynamicCast<DerivedData>(weakptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+
+ {
+ QSharedPointer<DerivedData> derivedptr = baseptr.dynamicCast<DerivedData>();
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+}
+
+void tst_QSharedPointer::dynamicCastDifferentPointers()
+{
+ // DiffPtrDerivedData derives from both Data and Stuffing
+ DiffPtrDerivedData *aData = new DiffPtrDerivedData;
+ QSharedPointer<Data> baseptr = QSharedPointer<Data>(aData);
+
+ {
+ QSharedPointer<DiffPtrDerivedData> derivedptr = qSharedPointerDynamicCast<DiffPtrDerivedData>(baseptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+
+ {
+ QWeakPointer<Data> weakptr = baseptr;
+ QSharedPointer<DiffPtrDerivedData> derivedptr = qSharedPointerDynamicCast<DiffPtrDerivedData>(weakptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+
+ {
+ QSharedPointer<DiffPtrDerivedData> derivedptr = baseptr.dynamicCast<DiffPtrDerivedData>();
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+
+ {
+ Stuffing *nakedptr = dynamic_cast<Stuffing *>(baseptr.data());
+ QVERIFY(nakedptr);
+
+ QSharedPointer<Stuffing> otherbaseptr = qSharedPointerDynamicCast<Stuffing>(baseptr);
+ QVERIFY(!otherbaseptr.isNull());
+ QVERIFY(otherbaseptr == nakedptr);
+ QCOMPARE(otherbaseptr.data(), nakedptr);
+ QCOMPARE(static_cast<DiffPtrDerivedData*>(otherbaseptr.data()), aData);
+ }
+}
+
+void tst_QSharedPointer::dynamicCastVirtualBase()
+{
+ VirtualDerived *aData = new VirtualDerived;
+ QSharedPointer<Data> baseptr = QSharedPointer<Data>(aData);
+
+ {
+ QSharedPointer<VirtualDerived> derivedptr = qSharedPointerDynamicCast<VirtualDerived>(baseptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+
+ {
+ QWeakPointer<Data> weakptr = baseptr;
+ QSharedPointer<VirtualDerived> derivedptr = qSharedPointerDynamicCast<VirtualDerived>(weakptr);
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+
+ {
+ QSharedPointer<VirtualDerived> derivedptr = baseptr.dynamicCast<VirtualDerived>();
+ QVERIFY(baseptr == derivedptr);
+ QCOMPARE(derivedptr.data(), aData);
+ QCOMPARE(static_cast<Data *>(derivedptr.data()), baseptr.data());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+}
+
+void tst_QSharedPointer::dynamicCastFailure()
+{
+ QSharedPointer<Data> baseptr = QSharedPointer<Data>(new Data);
+ QVERIFY(dynamic_cast<DerivedData *>(baseptr.data()) == 0);
+
+ {
+ QSharedPointer<DerivedData> derivedptr = qSharedPointerDynamicCast<DerivedData>(baseptr);
+ QVERIFY(derivedptr.isNull());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+
+ {
+ QSharedPointer<DerivedData> derivedptr = baseptr.dynamicCast<DerivedData>();
+ QVERIFY(derivedptr.isNull());
+ }
+ QCOMPARE(int(refCountData(baseptr)->weakref), 1);
+ QCOMPARE(int(refCountData(baseptr)->strongref), 1);
+}
+#endif
+
+void tst_QSharedPointer::constCorrectness()
+{
+ {
+ QSharedPointer<Data> ptr = QSharedPointer<Data>(new Data);
+ QSharedPointer<const Data> cptr(ptr);
+ QSharedPointer<volatile Data> vptr(ptr);
+ cptr = ptr;
+ vptr = ptr;
+
+ ptr = qSharedPointerConstCast<Data>(cptr);
+ ptr = qSharedPointerConstCast<Data>(vptr);
+ ptr = cptr.constCast<Data>();
+ ptr = vptr.constCast<Data>();
+
+#if !defined(Q_CC_HPACC) && !defined(QT_ARCH_PARISC)
+ // the aCC series 3 compiler we have on the PA-RISC
+ // machine crashes compiling this code
+
+ QSharedPointer<const volatile Data> cvptr(ptr);
+ QSharedPointer<const volatile Data> cvptr2(cptr);
+ QSharedPointer<const volatile Data> cvptr3(vptr);
+ cvptr = ptr;
+ cvptr2 = cptr;
+ cvptr3 = vptr;
+ ptr = qSharedPointerConstCast<Data>(cvptr);
+ ptr = cvptr.constCast<Data>();
+#endif
+ }
+ check();
+
+ {
+ Data *aData = new Data;
+ QSharedPointer<Data> ptr = QSharedPointer<Data>(aData);
+ const QSharedPointer<Data> cptr = ptr;
+
+ ptr = cptr;
+ QSharedPointer<Data> other = qSharedPointerCast<Data>(cptr);
+
+#ifndef QT_NO_DYNAMIC_CAST
+ other = qSharedPointerDynamicCast<Data>(cptr);
+#endif
+
+ QCOMPARE(cptr.data(), aData);
+ QCOMPARE(cptr.operator->(), aData);
+ }
+ check();
+}
+
+static int customDeleterFnCallCount;
+void customDeleterFn(Data *ptr)
+{
+ ++customDeleterFnCallCount;
+ delete ptr;
+}
+
+static int refcount;
+
+template <typename T>
+struct CustomDeleter
+{
+ CustomDeleter() { ++refcount; }
+ CustomDeleter(const CustomDeleter &) { ++refcount; }
+ ~CustomDeleter() { --refcount; }
+ inline void operator()(T *ptr)
+ {
+ delete ptr;
+ ++callCount;
+ }
+ static int callCount;
+};
+template<typename T> int CustomDeleter<T>::callCount = 0;
+
+void tst_QSharedPointer::customDeleter()
+{
+ {
+ QSharedPointer<Data> ptr(new Data, &Data::doDelete);
+ QSharedPointer<Data> ptr2(new Data, &Data::alsoDelete);
+ QSharedPointer<Data> ptr3(new Data, &Data::virtualDelete);
+ }
+ check();
+ {
+ QSharedPointer<DerivedData> ptr(new DerivedData, &Data::doDelete);
+ QSharedPointer<DerivedData> ptr2(new DerivedData, &Data::alsoDelete);
+ QSharedPointer<DerivedData> ptr3(new DerivedData, &Data::virtualDelete);
+ }
+ check();
+
+ customDeleterFnCallCount = 0;
+ {
+ QSharedPointer<Data> ptr = QSharedPointer<Data>(new Data, customDeleterFn);
+ ptr.data();
+ QCOMPARE(customDeleterFnCallCount, 0);
+ }
+ QCOMPARE(customDeleterFnCallCount, 1);
+ check();
+
+ customDeleterFnCallCount = 0;
+ {
+ QSharedPointer<Data> ptr = QSharedPointer<Data>(new Data, customDeleterFn);
+ QCOMPARE(customDeleterFnCallCount, 0);
+ ptr.clear();
+ QCOMPARE(customDeleterFnCallCount, 1);
+ }
+ QCOMPARE(customDeleterFnCallCount, 1);
+ check();
+
+ customDeleterFnCallCount = 0;
+ {
+ QSharedPointer<Data> ptr = QSharedPointer<Data>(new Data, customDeleterFn);
+ QCOMPARE(customDeleterFnCallCount, 0);
+ ptr = QSharedPointer<Data>(new Data);
+ QCOMPARE(customDeleterFnCallCount, 1);
+ }
+ QCOMPARE(customDeleterFnCallCount, 1);
+ check();
+
+ customDeleterFnCallCount = 0;
+ {
+ QSharedPointer<Data> ptr = QSharedPointer<Data>(new DerivedData, customDeleterFn);
+ ptr.data();
+ QCOMPARE(customDeleterFnCallCount, 0);
+ }
+ QCOMPARE(customDeleterFnCallCount, 1);
+ check();
+
+ customDeleterFnCallCount = 0;
+ {
+ QSharedPointer<DerivedData> ptr = QSharedPointer<DerivedData>(new DerivedData, customDeleterFn);
+ ptr.data();
+ QCOMPARE(customDeleterFnCallCount, 0);
+ }
+ QCOMPARE(customDeleterFnCallCount, 1);
+ check();
+
+ customDeleterFnCallCount = 0;
+ {
+ QSharedPointer<Data> other;
+ {
+ QSharedPointer<Data> ptr = QSharedPointer<Data>(new Data, customDeleterFn);
+ other = ptr;
+ QCOMPARE(customDeleterFnCallCount, 0);
+ }
+ QCOMPARE(customDeleterFnCallCount, 0);
+ }
+ QCOMPARE(customDeleterFnCallCount, 1);
+ check();
+
+ customDeleterFnCallCount = 0;
+ {
+ QSharedPointer<Data> other;
+ {
+ QSharedPointer<DerivedData> ptr = QSharedPointer<DerivedData>(new DerivedData, customDeleterFn);
+ other = ptr;
+ QCOMPARE(customDeleterFnCallCount, 0);
+ }
+ QCOMPARE(customDeleterFnCallCount, 0);
+ }
+ QCOMPARE(customDeleterFnCallCount, 1);
+ check();
+
+ refcount = 0;
+ CustomDeleter<Data> dataDeleter;
+ dataDeleter.callCount = 0;
+ {
+ QSharedPointer<Data> ptr = QSharedPointer<Data>(new Data, dataDeleter);
+ ptr.data();
+ QCOMPARE(dataDeleter.callCount, 0);
+ }
+ QCOMPARE(dataDeleter.callCount, 1);
+ QCOMPARE(refcount, 1);
+ check();
+
+ dataDeleter.callCount = 0;
+ {
+ QSharedPointer<Data> ptr = QSharedPointer<Data>(new Data, dataDeleter);
+ QSharedPointer<Data> other = ptr;
+ other.clear();
+ QCOMPARE(dataDeleter.callCount, 0);
+ }
+ QCOMPARE(dataDeleter.callCount, 1);
+ QCOMPARE(refcount, 1);
+ check();
+
+ dataDeleter.callCount = 0;
+ {
+ QSharedPointer<Data> other;
+ {
+ QSharedPointer<Data> ptr = QSharedPointer<Data>(new Data, dataDeleter);
+ other = ptr;
+ QCOMPARE(dataDeleter.callCount, 0);
+ }
+ QCOMPARE(dataDeleter.callCount, 0);
+ }
+ QCOMPARE(dataDeleter.callCount, 1);
+ QCOMPARE(refcount, 1);
+ check();
+
+ dataDeleter.callCount = 0;
+ {
+ QSharedPointer<DerivedData> ptr = QSharedPointer<DerivedData>(new DerivedData, dataDeleter);
+ ptr.data();
+ QCOMPARE(dataDeleter.callCount, 0);
+ }
+ QCOMPARE(dataDeleter.callCount, 1);
+ QCOMPARE(refcount, 1);
+ check();
+
+ CustomDeleter<DerivedData> derivedDataDeleter;
+ derivedDataDeleter.callCount = 0;
+ dataDeleter.callCount = 0;
+ {
+ QSharedPointer<DerivedData> ptr = QSharedPointer<DerivedData>(new DerivedData, derivedDataDeleter);
+ ptr.data();
+ QCOMPARE(dataDeleter.callCount, 0);
+ QCOMPARE(derivedDataDeleter.callCount, 0);
+ }
+ QCOMPARE(dataDeleter.callCount, 0);
+ QCOMPARE(derivedDataDeleter.callCount, 1);
+ QCOMPARE(refcount, 2);
+ check();
+
+ derivedDataDeleter.callCount = 0;
+ dataDeleter.callCount = 0;
+ {
+ QSharedPointer<Data> other;
+ {
+ QSharedPointer<DerivedData> ptr = QSharedPointer<DerivedData>(new DerivedData, dataDeleter);
+ other = ptr;
+ QCOMPARE(dataDeleter.callCount, 0);
+ QCOMPARE(derivedDataDeleter.callCount, 0);
+ }
+ QCOMPARE(dataDeleter.callCount, 0);
+ QCOMPARE(derivedDataDeleter.callCount, 0);
+ }
+ QCOMPARE(dataDeleter.callCount, 1);
+ QCOMPARE(derivedDataDeleter.callCount, 0);
+ QCOMPARE(refcount, 2);
+ check();
+
+ derivedDataDeleter.callCount = 0;
+ dataDeleter.callCount = 0;
+ {
+ QSharedPointer<Data> other;
+ {
+ QSharedPointer<DerivedData> ptr = QSharedPointer<DerivedData>(new DerivedData, derivedDataDeleter);
+ other = ptr;
+ QCOMPARE(dataDeleter.callCount, 0);
+ QCOMPARE(derivedDataDeleter.callCount, 0);
+ }
+ QCOMPARE(dataDeleter.callCount, 0);
+ QCOMPARE(derivedDataDeleter.callCount, 0);
+ }
+ QCOMPARE(dataDeleter.callCount, 0);
+ QCOMPARE(derivedDataDeleter.callCount, 1);
+ QCOMPARE(refcount, 2);
+ check();
+}
+
+void customQObjectDeleterFn(QObject *obj)
+{
+ ++customDeleterFnCallCount;
+ delete obj;
+}
+
+void tst_QSharedPointer::creating()
+{
+ Data::generationCounter = Data::destructorCounter = 0;
+ {
+ QSharedPointer<Data> ptr = QSharedPointer<Data>::create();
+ QVERIFY(ptr.data());
+ QCOMPARE(Data::generationCounter, 1);
+ QCOMPARE(ptr->generation, 1);
+ QCOMPARE(Data::destructorCounter, 0);
+
+ QCOMPARE(ptr->classLevel(), 1);
+
+ ptr.clear();
+ QCOMPARE(Data::destructorCounter, 1);
+ }
+ check();
+
+ Data::generationCounter = Data::destructorCounter = 0;
+ {
+ QSharedPointer<Data> ptr = QSharedPointer<Data>::create();
+ QWeakPointer<Data> weakptr = ptr;
+ QtSharedPointer::ExternalRefCountData *d = refCountData(ptr);
+
+ ptr.clear();
+ QVERIFY(ptr.isNull());
+ QCOMPARE(Data::destructorCounter, 1);
+
+ // valgrind will complain here if something happened to the pointer
+ QVERIFY(d->weakref == 1);
+ QVERIFY(d->strongref == 0);
+ }
+ check();
+
+ Data::generationCounter = Data::destructorCounter = 0;
+ DerivedData::derivedDestructorCounter = 0;
+ {
+ QSharedPointer<Data> ptr = QSharedPointer<DerivedData>::create();
+ QCOMPARE(ptr->classLevel(), 2);
+ QCOMPARE(ptr.staticCast<DerivedData>()->moreData, 0);
+ ptr.clear();
+
+ QCOMPARE(Data::destructorCounter, 1);
+ QCOMPARE(DerivedData::derivedDestructorCounter, 1);
+ }
+ check();
+
+ {
+ QSharedPointer<Data> ptr = QSharedPointer<DiffPtrDerivedData>::create();
+ QCOMPARE(ptr->classLevel(), 3);
+ QCOMPARE(ptr.staticCast<DiffPtrDerivedData>()->buffer[7]+0, 16-7);
+ QCOMPARE(ptr.staticCast<DiffPtrDerivedData>()->buffer[3]+0, 16-3);
+ QCOMPARE(ptr.staticCast<DiffPtrDerivedData>()->buffer[0]+0, 16);
+ }
+ check();
+
+ {
+ QSharedPointer<VirtualDerived> ptr = QSharedPointer<VirtualDerived>::create();
+ QCOMPARE(ptr->classLevel(), 4);
+ QCOMPARE(ptr->moreData, 0xc0ffee);
+
+ QSharedPointer<Data> baseptr = ptr;
+ QCOMPARE(baseptr->classLevel(), 4);
+ }
+ check();
+}
+
+void tst_QSharedPointer::creatingQObject()
+{
+ {
+ QSharedPointer<QObject> ptr = QSharedPointer<QObject>::create();
+ QCOMPARE(ptr->metaObject(), &QObject::staticMetaObject);
+
+ QPointer<QObject> qptr = ptr.data();
+ ptr.clear();
+
+ QVERIFY(qptr.isNull());
+ }
+ check();
+
+ {
+ QSharedPointer<QObject> ptr = QSharedPointer<OtherObject>::create();
+ QCOMPARE(ptr->metaObject(), &OtherObject::staticMetaObject);
+ }
+ check();
+}
+
+void tst_QSharedPointer::mixTrackingPointerCode()
+{
+ {
+ // pointer created with tracking
+ // deleted in code without tracking
+ QSharedPointer<int> ptr = QSharedPointer<int>(new int(42));
+ Wrapper w(ptr);
+ ptr.clear();
+ }
+ check();
+
+ {
+ // pointer created without tracking
+ // deleted in code with tracking
+ Wrapper w = Wrapper::create();
+ w.ptr.clear();
+ }
+}
+
+class ThreadData
+{
+ QAtomicInt * volatile ptr;
+public:
+ ThreadData(QAtomicInt *p) : ptr(p) { }
+ ~ThreadData() { ++ptr; }
+ void ref()
+ {
+ // if we're called after the destructor, we'll crash
+ ptr->ref();
+ }
+};
+
+class StrongThread: public QThread
+{
+protected:
+ void run()
+ {
+ usleep(rand() % 2000);
+ ptr->ref();
+ ptr.clear();
+ }
+public:
+ QSharedPointer<ThreadData> ptr;
+};
+
+class WeakThread: public QThread
+{
+protected:
+ void run()
+ {
+ usleep(rand() % 2000);
+ QSharedPointer<ThreadData> ptr = weak;
+ if (ptr)
+ ptr->ref();
+ ptr.clear();
+ }
+public:
+ QWeakPointer<ThreadData> weak;
+};
+
+void tst_QSharedPointer::threadStressTest_data()
+{
+ QTest::addColumn<int>("strongThreadCount");
+ QTest::addColumn<int>("weakThreadCount");
+
+ QTest::newRow("0+0") << 0 << 0;
+ QTest::newRow("1+0") << 1 << 0;
+ QTest::newRow("2+0") << 2 << 0;
+ QTest::newRow("10+0") << 10 << 0;
+
+ QTest::newRow("0+1") << 0 << 1;
+ QTest::newRow("1+1") << 1 << 1;
+
+ QTest::newRow("2+10") << 2 << 10;
+#ifndef Q_OS_WINCE
+ // Windows CE cannot run this many threads
+ QTest::newRow("5+10") << 5 << 10;
+ QTest::newRow("5+30") << 5 << 30;
+
+ QTest::newRow("100+100") << 100 << 100;
+#endif
+}
+
+void tst_QSharedPointer::threadStressTest()
+{
+ QFETCH(int, strongThreadCount);
+ QFETCH(int, weakThreadCount);
+
+ int guard1[128];
+ QAtomicInt counter;
+ int guard2[128];
+
+ memset(guard1, 0, sizeof guard1);
+ memset(guard2, 0, sizeof guard2);
+
+ for (int r = 0; r < 5; ++r) {
+ QVector<QThread*> allThreads(6 * qMax(strongThreadCount, weakThreadCount) + 3, 0);
+ QSharedPointer<ThreadData> base = QSharedPointer<ThreadData>(new ThreadData(&counter));
+ counter = 0;
+
+ // set the pointers
+ for (int i = 0; i < strongThreadCount; ++i) {
+ StrongThread *t = new StrongThread;
+ t->ptr = base;
+ allThreads[2 * i] = t;
+ }
+ for (int i = 0; i < weakThreadCount; ++i) {
+ WeakThread *t = new WeakThread;
+ t->weak = base;
+ allThreads[6 * i + 3] = t;
+ }
+
+ base.clear();
+
+#ifdef Q_OS_WINCE
+ srand(QDateTime::currentDateTime().toTime_t());
+#else
+ srand(time(NULL));
+#endif
+ // start threads
+ for (int i = 0; i < allThreads.count(); ++i)
+ if (allThreads[i]) allThreads[i]->start();
+
+ // wait for them to finish
+ for (int i = 0; i < allThreads.count(); ++i)
+ if (allThreads[i]) allThreads[i]->wait();
+ qDeleteAll(allThreads);
+
+ // ensure the guards aren't touched
+ for (uint i = 0; i < sizeof guard1 / sizeof guard1[0]; ++i)
+ QVERIFY(!guard1[i]);
+ for (uint i = 0; i < sizeof guard2 / sizeof guard2[0]; ++i)
+ QVERIFY(!guard2[i]);
+
+ // verify that the count is the right range
+ int minValue = strongThreadCount;
+ int maxValue = strongThreadCount + weakThreadCount;
+ QVERIFY(counter >= minValue);
+ QVERIFY(counter <= maxValue);
+ }
+}
+
+template<typename Container, bool Ordered>
+void hashAndMapTest()
+{
+ typedef typename Container::key_type Key;
+ typedef typename Container::mapped_type Value;
+
+ Container c;
+ QVERIFY(c.isEmpty());
+
+ Key k0;
+ c.insert(k0, Value(0));
+ QVERIFY(!c.isEmpty());
+
+ typename Container::iterator it;
+ it = c.find(k0);
+ QVERIFY(it != c.end());
+ it = c.find(Key());
+ QVERIFY(it != c.end());
+ it = c.find(Key(0));
+ QVERIFY(it != c.end());
+
+ Key k1(new typename Key::value_type(42));
+ it = c.find(k1);
+ QVERIFY(it == c.end());
+
+ c.insert(k1, Value(42));
+ it = c.find(k1);
+ QVERIFY(it != c.end());
+ QVERIFY(it != c.find(Key()));
+
+ if (Ordered) {
+ QVERIFY(k0 < k1);
+
+ it = c.begin();
+ QCOMPARE(it.key(), k0);
+ QCOMPARE(it.value(), Value(0));
+
+ ++it;
+ QCOMPARE(it.key(), k1);
+ QCOMPARE(it.value(), Value(42));
+
+ ++it;
+ QVERIFY(it == c.end());
+ }
+
+ c.insertMulti(k1, Value(47));
+ it = c.find(k1);
+ QVERIFY(it != c.end());
+ QCOMPARE(it.key(), k1);
+ ++it;
+ QVERIFY(it != c.end());
+ QCOMPARE(it.key(), k1);
+ ++it;
+ QVERIFY(it == c.end());
+}
+
+void tst_QSharedPointer::map()
+{
+ hashAndMapTest<QMap<QSharedPointer<int>, int>, true>();
+}
+
+void tst_QSharedPointer::hash()
+{
+ hashAndMapTest<QHash<QSharedPointer<int>, int>, false>();
+}
+
+void tst_QSharedPointer::validConstructs()
+{
+ {
+ Data *aData = new Data;
+ QSharedPointer<Data> ptr1 = QSharedPointer<Data>(aData);
+
+ ptr1 = ptr1; // valid
+
+ QSharedPointer<Data> ptr2(ptr1);
+
+ ptr1 = ptr2;
+ ptr2 = ptr1;
+
+ ptr1 = QSharedPointer<Data>();
+ ptr1 = ptr2;
+ }
+}
+
+typedef bool (QTest::QExternalTest:: * TestFunction)(const QByteArray &body);
+Q_DECLARE_METATYPE(TestFunction)
+void tst_QSharedPointer::invalidConstructs_data()
+{
+ QTest::addColumn<TestFunction>("testFunction");
+ QTest::addColumn<QString>("code");
+ QTest::newRow("sanity-checking") << &QTest::QExternalTest::tryCompile << "";
+
+ // QSharedPointer<void> is not allowed
+ QTest::newRow("void") << &QTest::QExternalTest::tryCompileFail << "QSharedPointer<void> ptr;";
+
+ // implicit initialization
+ QTest::newRow("implicit-initialization1")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<Data> ptr = new Data;";
+ QTest::newRow("implicit-initialization2")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<Data> ptr;"
+ "ptr = new Data;";
+ QTest::newRow("implicit-initialization3")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QWeakPointer<Data> ptr = new Data;";
+ QTest::newRow("implicit-initialization4")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QWeakPointer<Data> ptr;"
+ "ptr = new Data;";
+
+ // use of forward-declared class
+ QTest::newRow("forward-declaration")
+ << &QTest::QExternalTest::tryRun
+ << "forwardDeclaredDestructorRunCount = 0;\n"
+ "{ QSharedPointer<ForwardDeclared> ptr = QSharedPointer<ForwardDeclared>(forwardPointer()); }\n"
+ "exit(forwardDeclaredDestructorRunCount);";
+ QTest::newRow("creating-forward-declaration")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<ForwardDeclared>::create();";
+
+ // upcast without cast operator:
+ QTest::newRow("upcast1")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<Data> baseptr = QSharedPointer<Data>(new DerivedData);\n"
+ "QSharedPointer<DerivedData> ptr(baseptr);";
+ QTest::newRow("upcast2")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<Data> baseptr = QSharedPointer<Data>(new DerivedData);\n"
+ "QSharedPointer<DerivedData> ptr;\n"
+ "ptr = baseptr;";
+
+ // dropping of const
+ QTest::newRow("const-dropping1")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<const Data> baseptr = QSharedPointer<const Data>(new Data);\n"
+ "QSharedPointer<Data> ptr(baseptr);";
+ QTest::newRow("const-dropping2")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<const Data> baseptr = QSharedPointer<const Data>(new Data);\n"
+ "QSharedPointer<Data> ptr;"
+ "ptr = baseptr;";
+ QTest::newRow("const-dropping-static-cast")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<const Data> baseptr = QSharedPointer<const Data>(new Data);\n"
+ "qSharedPointerCast<DerivedData>(baseptr);";
+#ifndef QTEST_NO_RTTI
+ QTest::newRow("const-dropping-dynamic-cast")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<const Data> baseptr = QSharedPointer<const Data>(new Data);\n"
+ "qSharedPointerDynamicCast<DerivedData>(baseptr);";
+#endif
+ QTest::newRow("const-dropping-object-cast1")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<const QObject> baseptr = QSharedPointer<const QObject>(new QObject);\n"
+ "qSharedPointerObjectCast<QCoreApplication>(baseptr);";
+ QTest::newRow("const-dropping-object-cast2")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<const QObject> baseptr = QSharedPointer<const QObject>(new QObject);\n"
+ "qobject_cast<QCoreApplication *>(baseptr);";
+
+ // arithmethics through automatic cast operators
+ QTest::newRow("arithmethic1")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<int> a;"
+ "QSharedPointer<Data> b;\n"
+ "if (a == b) return;";
+ QTest::newRow("arithmethic2")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<int> a;"
+ "QSharedPointer<Data> b;\n"
+ "if (a + b) return;";
+
+ // two objects with the same pointer
+ QTest::newRow("same-pointer")
+ << &QTest::QExternalTest::tryRunFail
+ << "Data *aData = new Data;\n"
+ "QSharedPointer<Data> ptr1 = QSharedPointer<Data>(aData);\n"
+ "QSharedPointer<Data> ptr2 = QSharedPointer<Data>(aData);\n";
+
+ // re-creation:
+ QTest::newRow("re-creation")
+ << &QTest::QExternalTest::tryRunFail
+ << "Data *aData = new Data;\n"
+ "QSharedPointer<Data> ptr1 = QSharedPointer<Data>(aData);"
+ "ptr1 = QSharedPointer<Data>(aData);";
+
+ // any type of cast for unrelated types:
+ // (we have no reinterpret_cast)
+ QTest::newRow("invalid-cast1")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<Data> ptr1;\n"
+ "QSharedPointer<int> ptr2 = qSharedPointerCast<int>(ptr1);";
+#ifndef QTEST_NO_RTTI
+ QTest::newRow("invalid-cast2")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<Data> ptr1;\n"
+ "QSharedPointer<int> ptr2 = qSharedPointerDynamicCast<int>(ptr1);";
+#endif
+ QTest::newRow("invalid-cast3")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<Data> ptr1;\n"
+ "QSharedPointer<int> ptr2 = qSharedPointerConstCast<int>(ptr1);";
+ QTest::newRow("invalid-cast4")
+ << &QTest::QExternalTest::tryCompileFail
+ << "QSharedPointer<Data> ptr1;\n"
+ "QSharedPointer<int> ptr2 = qSharedPointerObjectCast<int>(ptr1);";
+
+ QTest::newRow("weak-pointer-from-regular-pointer")
+ << &QTest::QExternalTest::tryCompileFail
+ << "Data *ptr = 0;\n"
+ "QWeakPointer<Data> weakptr(ptr);\n";
+
+ QTest::newRow("shared-pointer-from-unmanaged-qobject")
+ << &QTest::QExternalTest::tryRunFail
+ << "QObject *ptr = new QObject;\n"
+ "QWeakPointer<QObject> weak = ptr;\n" // this makes the object unmanaged
+ "QSharedPointer<QObject> shared(ptr);\n";
+
+ QTest::newRow("shared-pointer-implicit-from-uninitialized")
+ << &QTest::QExternalTest::tryCompileFail
+ << "Data *ptr = 0;\n"
+ "QSharedPointer<Data> weakptr = Qt::Uninitialized;\n";
+}
+
+void tst_QSharedPointer::invalidConstructs()
+{
+#ifdef Q_CC_MINGW
+ QSKIP("The maintainer of QSharedPointer: 'We don't know what the problem is so skip the tests.'", SkipAll);
+#endif
+#ifdef QTEST_CROSS_COMPILED
+ QSKIP("This test does not work on cross compiled systems", SkipAll);
+#endif
+
+ QTest::QExternalTest test;
+ test.setQtModules(QTest::QExternalTest::QtCore);
+ test.setExtraProgramSources(QStringList() << SRCDIR "forwarddeclared.cpp");
+ test.setProgramHeader(
+ "#define QT_SHAREDPOINTER_TRACK_POINTERS\n"
+ "#define QT_DEBUG\n"
+ "#include <QtCore/qsharedpointer.h>\n"
+ "#include <QtCore/qcoreapplication.h>\n"
+ "\n"
+ "struct Data { int i; };\n"
+ "struct DerivedData: public Data { int j; };\n"
+ "\n"
+ "extern int forwardDeclaredDestructorRunCount;\n"
+ "class ForwardDeclared;\n"
+ "ForwardDeclared *forwardPointer();\n"
+ );
+
+ QFETCH(QString, code);
+ static bool sane = true;
+ if (code.isEmpty()) {
+ static const char snippet[] = "QSharedPointer<Data> baseptr; QSharedPointer<DerivedData> ptr;";
+ if (!test.tryCompile("")
+ || !test.tryRun("")
+ || !test.tryRunFail("exit(1);")
+ || !test.tryCompile(snippet)
+ || !test.tryLink(snippet)
+ || !test.tryRun(snippet)) {
+ sane = false;
+ qWarning("Sanity checking failed\nCode:\n%s\n",
+ qPrintable(test.errorReport()));
+ }
+ }
+ if (!sane)
+ QFAIL("External testing failed sanity checking, cannot proceed");
+
+ QFETCH(TestFunction, testFunction);
+
+ QByteArray body = code.toLatin1();
+
+ bool result = (test.*testFunction)(body);
+ if (qgetenv("QTEST_EXTERNAL_DEBUG").toInt() > 0) {
+ qDebug("External test output:");
+#ifdef Q_CC_MSVC
+ // MSVC prints errors to stdout
+ printf("%s\n", test.standardOutput().constData());
+#endif
+ printf("%s\n", test.standardError().constData());
+ }
+ if (!result) {
+ qWarning("External code testing failed\nCode:\n%s\n", body.constData());
+ QFAIL("Fail");
+ }
+}
+
+namespace QTBUG11730 {
+ struct IB
+ {
+ virtual ~IB() {}
+ };
+
+ struct IA
+ {
+ virtual QSharedPointer<IB> getB() = 0;
+ };
+
+ struct B: public IB
+ {
+ IA *m_a;
+ B(IA *a_a) :m_a(a_a)
+ { }
+ ~B()
+ {
+ QSharedPointer<IB> b = m_a->getB();
+ }
+ };
+
+ struct A: public IA
+ {
+ QSharedPointer<IB> b;
+
+ virtual QSharedPointer<IB> getB()
+ {
+ return b;
+ }
+
+ A()
+ {
+ b = QSharedPointer<IB>(new B(this));
+ }
+
+ ~A()
+ {
+ b.clear();
+ }
+ };
+}
+
+void tst_QSharedPointer::reentrancyWhileDestructing()
+{
+ // this bug is about recursing back into QSharedPointer::clear()
+ // from inside it
+ // that is, the destructor of the object being deleted recurses
+ // into the same QSharedPointer object.
+ // First reported as QTBUG-11730
+ QTBUG11730::A obj;
+}
+
+
+QTEST_MAIN(tst_QSharedPointer)
+
+#include "tst_qsharedpointer.moc"
diff --git a/tests/auto/corelib/tools/qsharedpointer/wrapper.cpp b/tests/auto/corelib/tools/qsharedpointer/wrapper.cpp
new file mode 100644
index 0000000000..018fc1c97b
--- /dev/null
+++ b/tests/auto/corelib/tools/qsharedpointer/wrapper.cpp
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifdef QT_SHAREDPOINTER_TRACK_POINTERS
+# undef QT_SHAREDPOINTER_TRACK_POINTERS
+#endif
+#include <QtCore/qsharedpointer.h>
+#include "wrapper.h"
+
+Wrapper::Wrapper(const QSharedPointer<int> &value)
+ : ptr(value)
+{
+}
+
+Wrapper::~Wrapper()
+{
+}
+
+Wrapper Wrapper::create()
+{
+ return Wrapper(QSharedPointer<int>(new int(-47)));
+}
diff --git a/tests/auto/corelib/tools/qsharedpointer/wrapper.h b/tests/auto/corelib/tools/qsharedpointer/wrapper.h
new file mode 100644
index 0000000000..b25510f76d
--- /dev/null
+++ b/tests/auto/corelib/tools/qsharedpointer/wrapper.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef WRAPPER_H
+#define WRAPPER_H
+
+QT_BEGIN_NAMESPACE
+template <class T> class QSharedPointer;
+QT_END_NAMESPACE
+
+class Wrapper
+{
+public:
+ QSharedPointer<int> ptr;
+ Wrapper(const QSharedPointer<int> &);
+ ~Wrapper();
+
+ static Wrapper create();
+};
+
+#endif // WRAPPER_H
diff --git a/tests/auto/corelib/tools/qsize/.gitignore b/tests/auto/corelib/tools/qsize/.gitignore
new file mode 100644
index 0000000000..748ce461c8
--- /dev/null
+++ b/tests/auto/corelib/tools/qsize/.gitignore
@@ -0,0 +1 @@
+tst_qsize
diff --git a/tests/auto/corelib/tools/qsize/qsize.pro b/tests/auto/corelib/tools/qsize/qsize.pro
new file mode 100644
index 0000000000..a1814ac8c5
--- /dev/null
+++ b/tests/auto/corelib/tools/qsize/qsize.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qsize.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qsize/tst_qsize.cpp b/tests/auto/corelib/tools/qsize/tst_qsize.cpp
new file mode 100644
index 0000000000..36654df618
--- /dev/null
+++ b/tests/auto/corelib/tools/qsize/tst_qsize.cpp
@@ -0,0 +1,254 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qsize.h>
+
+Q_DECLARE_METATYPE(QSize)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QSize : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QSize();
+ virtual ~tst_QSize();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void getSetCheck();
+ void scale();
+
+ void expandedTo();
+ void expandedTo_data();
+
+ void boundedTo_data();
+ void boundedTo();
+
+ void transpose_data();
+ void transpose();
+};
+
+// Testing get/set functions
+void tst_QSize::getSetCheck()
+{
+ QSize obj1;
+ // int QSize::width()
+ // void QSize::setWidth(int)
+ obj1.setWidth(0);
+ QCOMPARE(0, obj1.width());
+ obj1.setWidth(INT_MIN);
+ QCOMPARE(INT_MIN, obj1.width());
+ obj1.setWidth(INT_MAX);
+ QCOMPARE(INT_MAX, obj1.width());
+
+ // int QSize::height()
+ // void QSize::setHeight(int)
+ obj1.setHeight(0);
+ QCOMPARE(0, obj1.height());
+ obj1.setHeight(INT_MIN);
+ QCOMPARE(INT_MIN, obj1.height());
+ obj1.setHeight(INT_MAX);
+ QCOMPARE(INT_MAX, obj1.height());
+
+ QSizeF obj2;
+ // qreal QSizeF::width()
+ // void QSizeF::setWidth(qreal)
+ obj2.setWidth(0.0);
+ QCOMPARE(0.0, obj2.width());
+ obj2.setWidth(1.1);
+ QCOMPARE(1.1, obj2.width());
+
+ // qreal QSizeF::height()
+ // void QSizeF::setHeight(qreal)
+ obj2.setHeight(0.0);
+ QCOMPARE(0.0, obj2.height());
+ obj2.setHeight(1.1);
+ QCOMPARE(1.1, obj2.height());
+}
+
+
+tst_QSize::tst_QSize()
+{
+}
+
+tst_QSize::~tst_QSize()
+{
+}
+
+void tst_QSize::init()
+{
+}
+
+void tst_QSize::cleanup()
+{
+}
+
+void tst_QSize::scale()
+{
+ QSize t1( 10, 12 );
+ t1.scale( 60, 60, Qt::IgnoreAspectRatio );
+ QCOMPARE( t1, QSize(60, 60) );
+
+ QSize t2( 10, 12 );
+ t2.scale( 60, 60, Qt::KeepAspectRatio );
+ QCOMPARE( t2, QSize(50, 60) );
+
+ QSize t3( 10, 12 );
+ t3.scale( 60, 60, Qt::KeepAspectRatioByExpanding );
+ QCOMPARE( t3, QSize(60, 72) );
+
+ QSize t4( 12, 10 );
+ t4.scale( 60, 60, Qt::KeepAspectRatio );
+ QCOMPARE( t4, QSize(60, 50) );
+
+ QSize t5( 12, 10 );
+ t5.scale( 60, 60, Qt::KeepAspectRatioByExpanding );
+ QCOMPARE( t5, QSize(72, 60) );
+
+ // test potential int overflow
+ QSize t6(88473, 88473);
+ t6.scale(141817, 141817, Qt::KeepAspectRatio);
+ QCOMPARE(t6, QSize(141817, 141817));
+
+ QSize t7(800, 600);
+ t7.scale(400, INT_MAX, Qt::KeepAspectRatio);
+ QCOMPARE(t7, QSize(400, 300));
+
+ QSize t8(800, 600);
+ t8.scale(INT_MAX, 150, Qt::KeepAspectRatio);
+ QCOMPARE(t8, QSize(200, 150));
+
+ QSize t9(600, 800);
+ t9.scale(300, INT_MAX, Qt::KeepAspectRatio);
+ QCOMPARE(t9, QSize(300, 400));
+
+ QSize t10(600, 800);
+ t10.scale(INT_MAX, 200, Qt::KeepAspectRatio);
+ QCOMPARE(t10, QSize(150, 200));
+
+ QSize t11(0, 0);
+ t11.scale(240, 200, Qt::IgnoreAspectRatio);
+ QCOMPARE(t11, QSize(240, 200));
+
+ QSize t12(0, 0);
+ t12.scale(240, 200, Qt::KeepAspectRatio);
+ QCOMPARE(t12, QSize(240, 200));
+
+ QSize t13(0, 0);
+ t13.scale(240, 200, Qt::KeepAspectRatioByExpanding);
+ QCOMPARE(t13, QSize(240, 200));
+}
+
+
+void tst_QSize::expandedTo_data()
+{
+ QTest::addColumn<QSize>("input1");
+ QTest::addColumn<QSize>("input2");
+ QTest::addColumn<QSize>("expected");
+
+ QTest::newRow("data0") << QSize(10,12) << QSize(6,4) << QSize(10,12);
+ QTest::newRow("data1") << QSize(0,0) << QSize(6,4) << QSize(6,4);
+ // This should pick the highest of w,h components independently of each other,
+ // thus the result dont have to be equal to neither input1 nor input2.
+ QTest::newRow("data3") << QSize(6,4) << QSize(4,6) << QSize(6,6);
+}
+
+void tst_QSize::expandedTo()
+{
+ QFETCH( QSize, input1);
+ QFETCH( QSize, input2);
+ QFETCH( QSize, expected);
+
+ QCOMPARE( input1.expandedTo(input2), expected);
+}
+
+void tst_QSize::boundedTo_data()
+{
+ QTest::addColumn<QSize>("input1");
+ QTest::addColumn<QSize>("input2");
+ QTest::addColumn<QSize>("expected");
+
+ QTest::newRow("data0") << QSize(10,12) << QSize(6,4) << QSize(6,4);
+ QTest::newRow("data1") << QSize(0,0) << QSize(6,4) << QSize(0,0);
+ // This should pick the lowest of w,h components independently of each other,
+ // thus the result dont have to be equal to neither input1 nor input2.
+ QTest::newRow("data3") << QSize(6,4) << QSize(4,6) << QSize(4,4);
+}
+
+void tst_QSize::boundedTo()
+{
+ QFETCH( QSize, input1);
+ QFETCH( QSize, input2);
+ QFETCH( QSize, expected);
+
+ QCOMPARE( input1.boundedTo(input2), expected);
+}
+
+void tst_QSize::transpose_data()
+{
+ QTest::addColumn<QSize>("input1");
+ QTest::addColumn<QSize>("expected");
+
+ QTest::newRow("data0") << QSize(10,12) << QSize(12,10);
+ QTest::newRow("data1") << QSize(0,0) << QSize(0,0);
+ QTest::newRow("data3") << QSize(6,4) << QSize(4,6);
+}
+
+void tst_QSize::transpose()
+{
+ QFETCH( QSize, input1);
+ QFETCH( QSize, expected);
+
+ // transpose() works only inplace and does not return anything, so we must do the operation itself before the compare.
+ input1.transpose();
+ QCOMPARE(input1 , expected);
+}
+
+QTEST_APPLESS_MAIN(tst_QSize)
+#include "tst_qsize.moc"
diff --git a/tests/auto/corelib/tools/qsizef/.gitignore b/tests/auto/corelib/tools/qsizef/.gitignore
new file mode 100644
index 0000000000..f4ded487d7
--- /dev/null
+++ b/tests/auto/corelib/tools/qsizef/.gitignore
@@ -0,0 +1 @@
+tst_qsizef
diff --git a/tests/auto/corelib/tools/qsizef/qsizef.pro b/tests/auto/corelib/tools/qsizef/qsizef.pro
new file mode 100644
index 0000000000..5aa07d72a1
--- /dev/null
+++ b/tests/auto/corelib/tools/qsizef/qsizef.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qsizef.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qsizef/tst_qsizef.cpp b/tests/auto/corelib/tools/qsizef/tst_qsizef.cpp
new file mode 100644
index 0000000000..2e03a65197
--- /dev/null
+++ b/tests/auto/corelib/tools/qsizef/tst_qsizef.cpp
@@ -0,0 +1,181 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qsize.h>
+
+Q_DECLARE_METATYPE(QSizeF)
+
+//TESTED_CLASS=
+//TESTED_FILES=corelib/tools/qsize.h corelib/tools/qsize.cpp
+
+class tst_QSizeF : public QObject {
+ Q_OBJECT
+
+public:
+ tst_QSizeF();
+ virtual ~tst_QSizeF();
+
+public slots:
+ void init();
+ void cleanup();
+
+private slots:
+ void scale();
+
+ void expandedTo();
+ void expandedTo_data();
+
+ void boundedTo_data();
+ void boundedTo();
+
+ void transpose_data();
+ void transpose();
+};
+
+tst_QSizeF::tst_QSizeF() {
+}
+
+tst_QSizeF::~tst_QSizeF() {
+}
+
+void tst_QSizeF::init() {
+}
+
+void tst_QSizeF::cleanup() {
+}
+
+void tst_QSizeF::scale() {
+ QSizeF t1(10.4, 12.8);
+ t1.scale(60.6, 60.6, Qt::IgnoreAspectRatio);
+ QCOMPARE(t1, QSizeF(60.6, 60.6));
+
+ QSizeF t2(10.4, 12.8);
+ t2.scale(43.52, 43.52, Qt::KeepAspectRatio);
+ QCOMPARE(t2, QSizeF(35.36, 43.52));
+
+ QSizeF t3(9.6, 12.48);
+ t3.scale(31.68, 31.68, Qt::KeepAspectRatioByExpanding);
+ QCOMPARE(t3, QSizeF(31.68, 41.184));
+
+ QSizeF t4(12.8, 10.4);
+ t4.scale(43.52, 43.52, Qt::KeepAspectRatio);
+ QCOMPARE(t4, QSizeF(43.52, 35.36));
+
+ QSizeF t5(12.48, 9.6);
+ t5.scale(31.68, 31.68, Qt::KeepAspectRatioByExpanding);
+ QCOMPARE(t5, QSizeF(41.184, 31.68));
+
+ QSizeF t6(0.0, 0.0);
+ t6.scale(200, 240, Qt::IgnoreAspectRatio);
+ QCOMPARE(t6, QSizeF(200, 240));
+
+ QSizeF t7(0.0, 0.0);
+ t7.scale(200, 240, Qt::KeepAspectRatio);
+ QCOMPARE(t7, QSizeF(200, 240));
+
+ QSizeF t8(0.0, 0.0);
+ t8.scale(200, 240, Qt::KeepAspectRatioByExpanding);
+ QCOMPARE(t8, QSizeF(200, 240));
+}
+
+
+void tst_QSizeF::expandedTo_data() {
+ QTest::addColumn<QSizeF>("input1");
+ QTest::addColumn<QSizeF>("input2");
+ QTest::addColumn<QSizeF>("expected");
+
+ QTest::newRow("data0") << QSizeF(10.4, 12.8) << QSizeF(6.6, 4.4) << QSizeF(10.4, 12.8);
+ QTest::newRow("data1") << QSizeF(0.0, 0.0) << QSizeF(6.6, 4.4) << QSizeF(6.6, 4.4);
+ // This should pick the highest of w,h components independently of each other,
+ // thus the result dont have to be equal to neither input1 nor input2.
+ QTest::newRow("data3") << QSizeF(6.6, 4.4) << QSizeF(4.4, 6.6) << QSizeF(6.6, 6.6);
+}
+
+void tst_QSizeF::expandedTo() {
+ QFETCH( QSizeF, input1);
+ QFETCH( QSizeF, input2);
+ QFETCH( QSizeF, expected);
+
+ QCOMPARE( input1.expandedTo(input2), expected);
+}
+
+void tst_QSizeF::boundedTo_data() {
+ QTest::addColumn<QSizeF>("input1");
+ QTest::addColumn<QSizeF>("input2");
+ QTest::addColumn<QSizeF>("expected");
+
+ QTest::newRow("data0") << QSizeF(10.4, 12.8) << QSizeF(6.6, 4.4) << QSizeF(6.6, 4.4);
+ QTest::newRow("data1") << QSizeF(0.0, 0.0) << QSizeF(6.6, 4.4) << QSizeF(0.0, 0.0);
+ // This should pick the lowest of w,h components independently of each other,
+ // thus the result dont have to be equal to neither input1 nor input2.
+ QTest::newRow("data3") << QSizeF(6.6, 4.4) << QSizeF(4.4, 6.6) << QSizeF(4.4, 4.4);
+}
+
+void tst_QSizeF::boundedTo() {
+ QFETCH( QSizeF, input1);
+ QFETCH( QSizeF, input2);
+ QFETCH( QSizeF, expected);
+
+ QCOMPARE( input1.boundedTo(input2), expected);
+}
+
+void tst_QSizeF::transpose_data() {
+ QTest::addColumn<QSizeF>("input1");
+ QTest::addColumn<QSizeF>("expected");
+
+ QTest::newRow("data0") << QSizeF(10.4, 12.8) << QSizeF(12.8, 10.4);
+ QTest::newRow("data1") << QSizeF(0.0, 0.0) << QSizeF(0.0, 0.0);
+ QTest::newRow("data3") << QSizeF(6.6, 4.4) << QSizeF(4.4, 6.6);
+}
+
+void tst_QSizeF::transpose() {
+ QFETCH( QSizeF, input1);
+ QFETCH( QSizeF, expected);
+
+ // transpose() works only inplace and does not return anything, so we must do the operation itself before the compare.
+ input1.transpose();
+ QCOMPARE(input1 , expected);
+}
+
+QTEST_APPLESS_MAIN(tst_QSizeF)
+#include "tst_qsizef.moc"
diff --git a/tests/auto/corelib/tools/qstl/.gitignore b/tests/auto/corelib/tools/qstl/.gitignore
new file mode 100644
index 0000000000..6e6a885f4f
--- /dev/null
+++ b/tests/auto/corelib/tools/qstl/.gitignore
@@ -0,0 +1 @@
+tst_qstl
diff --git a/tests/auto/corelib/tools/qstl/qstl.pro b/tests/auto/corelib/tools/qstl/qstl.pro
new file mode 100644
index 0000000000..a0c9db1dfc
--- /dev/null
+++ b/tests/auto/corelib/tools/qstl/qstl.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qstl.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qstl/tst_qstl.cpp b/tests/auto/corelib/tools/qstl/tst_qstl.cpp
new file mode 100644
index 0000000000..43c318737f
--- /dev/null
+++ b/tests/auto/corelib/tools/qstl/tst_qstl.cpp
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qstring.h>
+
+#include <ostream>
+#include <sstream>
+
+class tst_QStl: public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void streaming_data();
+ void streaming();
+
+ void concatenate();
+};
+
+
+static inline std::ostream &operator<<(std::ostream &out, const QString &string)
+{
+ out << string.toLocal8Bit().constData();
+ return out;
+}
+
+void tst_QStl::streaming_data()
+{
+ QTest::addColumn<QString>("str");
+
+ QTest::newRow("hello") << "hello";
+ QTest::newRow("empty") << "";
+}
+
+void tst_QStl::streaming()
+{
+ QFETCH(QString, str);
+
+ std::ostringstream buf;
+ buf << str;
+
+ std::string result = buf.str();
+
+ QCOMPARE(QString::fromLatin1(result.data()), str);
+}
+
+void tst_QStl::concatenate()
+{
+ std::ostringstream buf;
+ buf << QLatin1String("Hello ") << QLatin1String("World");
+
+ QCOMPARE(QString::fromLatin1(buf.str().data()), QString("Hello World"));
+}
+
+
+QTEST_APPLESS_MAIN(tst_QStl)
+#include "tst_qstl.moc"
diff --git a/tests/auto/corelib/tools/qstring/.gitignore b/tests/auto/corelib/tools/qstring/.gitignore
new file mode 100644
index 0000000000..c2ea8d0336
--- /dev/null
+++ b/tests/auto/corelib/tools/qstring/.gitignore
@@ -0,0 +1 @@
+tst_qstring
diff --git a/tests/auto/corelib/tools/qstring/double_data.h b/tests/auto/corelib/tools/qstring/double_data.h
new file mode 100644
index 0000000000..e7e654c442
--- /dev/null
+++ b/tests/auto/corelib/tools/qstring/double_data.h
@@ -0,0 +1,10036 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+struct SprintfDoubleData
+{
+ const char *fmt;
+ const char *expected;
+ int bytes[8];
+};
+
+static const SprintfDoubleData g_sprintf_double_data[] = {
+ { "%'1g", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-'3g", "0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0'50g", "00000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-'.0g", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%'3.0g", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-'50.0g", "0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0'.1g", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-'1.1g", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%'50.1g", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-'.3g", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0'1.3g", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-'3.3g", "0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%'.50g", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-'1.50g", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0'3.50g", "000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-'50.50g", "0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%'1G", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-'3G", "0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0'50G", "00000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-'.0G", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%'3.0G", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-'50.0G", "0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0'.1G", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-'1.1G", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%'50.1G", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-'.3G", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0'1.3G", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-'3.3G", "0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%'.50G", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-'1.50G", "0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0'3.50G", "000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-'50.50G", "0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%+'1g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-+'3g", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0+'50g", "+0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-+'.0g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%+'3.0g", " +0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-+'50.0g", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0+'.1g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-+'1.1g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%+'50.1g", " +0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-+'.3g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0+'1.3g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-+'3.3g", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%+'.50g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-+'1.50g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0+'3.50g", "+00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-+'50.50g", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%+'1G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-+'3G", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0+'50G", "+0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-+'.0G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%+'3.0G", " +0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-+'50.0G", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0+'.1G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-+'1.1G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%+'50.1G", " +0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-+'.3G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0+'1.3G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-+'3.3G", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%+'.50G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%-+'1.50G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0+'3.50G", "+00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0-+'50.50G", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% '1g", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- '3g", " 0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 '50g", " 0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- '.0g", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% '3.0g", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- '50.0g", " 0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 '.1g", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- '1.1g", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% '50.1g", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- '.3g", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 '1.3g", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- '3.3g", " 0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% '.50g", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- '1.50g", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 '3.50g", " 00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- '50.50g", " 0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% '1G", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- '3G", " 0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 '50G", " 0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- '.0G", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% '3.0G", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- '50.0G", " 0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 '.1G", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- '1.1G", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% '50.1G", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- '.3G", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 '1.3G", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- '3.3G", " 0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% '.50G", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- '1.50G", " 0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 '3.50G", " 00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- '50.50G", " 0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% +'1g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- +'3g", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 +'50g", "+0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- +'.0g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% +'3.0g", " +0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- +'50.0g", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 +'.1g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- +'1.1g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% +'50.1g", " +0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- +'.3g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 +'1.3g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- +'3.3g", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% +'.50g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- +'1.50g", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 +'3.50g", "+00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- +'50.50g", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% +'1G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- +'3G", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 +'50G", "+0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- +'.0G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% +'3.0G", " +0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- +'50.0G", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 +'.1G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- +'1.1G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% +'50.1G", " +0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- +'.3G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 +'1.3G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- +'3.3G", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "% +'.50G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%- +'1.50G", "+0", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0 +'3.50G", "+00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%0- +'50.50G", "+0 ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#'1g", "0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-'3g", "0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0'50g", "00000000000000000000000000000000000000000000.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-'.0g", "0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#'3.0g", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-'50.0g", "0. ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0'.1g", "0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-'1.1g", "0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#'50.1g", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-'.3g", "0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0'1.3g", "0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-'3.3g", "0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#'.50g", "0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-'1.50g", "0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0'3.50g", "0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-'50.50g", "0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#'1G", "0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-'3G", "0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0'50G", "00000000000000000000000000000000000000000000.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-'.0G", "0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#'3.0G", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-'50.0G", "0. ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0'.1G", "0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-'1.1G", "0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#'50.1G", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-'.3G", "0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0'1.3G", "0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-'3.3G", "0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#'.50G", "0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-'1.50G", "0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0'3.50G", "0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-'50.50G", "0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#+'1g", "+0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-+'3g", "+0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0+'50g", "+0000000000000000000000000000000000000000000.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-+'.0g", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#+'3.0g", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-+'50.0g", "+0. ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0+'.1g", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-+'1.1g", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#+'50.1g", " +0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-+'.3g", "+0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0+'1.3g", "+0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-+'3.3g", "+0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#+'.50g", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-+'1.50g", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0+'3.50g", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-+'50.50g", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#+'1G", "+0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-+'3G", "+0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0+'50G", "+0000000000000000000000000000000000000000000.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-+'.0G", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#+'3.0G", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-+'50.0G", "+0. ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0+'.1G", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-+'1.1G", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#+'50.1G", " +0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-+'.3G", "+0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0+'1.3G", "+0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-+'3.3G", "+0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#+'.50G", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#-+'1.50G", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0+'3.50G", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0-+'50.50G", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# '1g", " 0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- '3g", " 0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 '50g", " 0000000000000000000000000000000000000000000.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- '.0g", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# '3.0g", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- '50.0g", " 0. ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 '.1g", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- '1.1g", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# '50.1g", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- '.3g", " 0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 '1.3g", " 0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- '3.3g", " 0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# '.50g", " 0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- '1.50g", " 0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 '3.50g", " 0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- '50.50g", " 0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# '1G", " 0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- '3G", " 0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 '50G", " 0000000000000000000000000000000000000000000.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- '.0G", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# '3.0G", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- '50.0G", " 0. ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 '.1G", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- '1.1G", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# '50.1G", " 0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- '.3G", " 0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 '1.3G", " 0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- '3.3G", " 0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# '.50G", " 0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- '1.50G", " 0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 '3.50G", " 0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- '50.50G", " 0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# +'1g", "+0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- +'3g", "+0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 +'50g", "+0000000000000000000000000000000000000000000.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- +'.0g", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# +'3.0g", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- +'50.0g", "+0. ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 +'.1g", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- +'1.1g", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# +'50.1g", " +0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- +'.3g", "+0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 +'1.3g", "+0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- +'3.3g", "+0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# +'.50g", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- +'1.50g", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 +'3.50g", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- +'50.50g", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# +'1G", "+0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- +'3G", "+0.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 +'50G", "+0000000000000000000000000000000000000000000.00000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- +'.0G", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# +'3.0G", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- +'50.0G", "+0. ", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 +'.1G", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- +'1.1G", "+0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# +'50.1G", " +0.", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- +'.3G", "+0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 +'1.3G", "+0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- +'3.3G", "+0.00", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%# +'.50G", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#- +'1.50G", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0 +'3.50G", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%#0- +'50.50G", "+0.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { "%'1g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-'3g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0'50g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-'.0g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%'3.0g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-'50.0g", "nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0'.1g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-'1.1g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%'50.1g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-'.3g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0'1.3g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-'3.3g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%'.50g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-'1.50g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0'3.50g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-'50.50g", "nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%'1G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-'3G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0'50G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-'.0G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%'3.0G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-'50.0G", "NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0'.1G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-'1.1G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%'50.1G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-'.3G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0'1.3G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-'3.3G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%'.50G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-'1.50G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0'3.50G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-'50.50G", "NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%+'1g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-+'3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0+'50g", " +nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-+'.0g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%+'3.0g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-+'50.0g", "+nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0+'.1g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-+'1.1g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%+'50.1g", " +nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-+'.3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0+'1.3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-+'3.3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%+'.50g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-+'1.50g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0+'3.50g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-+'50.50g", "+nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%+'1G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-+'3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0+'50G", " +NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-+'.0G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%+'3.0G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-+'50.0G", "+NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0+'.1G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-+'1.1G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%+'50.1G", " +NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-+'.3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0+'1.3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-+'3.3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%+'.50G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%-+'1.50G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0+'3.50G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0-+'50.50G", "+NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% '1g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- '3g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 '50g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- '.0g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% '3.0g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- '50.0g", " nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 '.1g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- '1.1g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% '50.1g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- '.3g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 '1.3g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- '3.3g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% '.50g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- '1.50g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 '3.50g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- '50.50g", " nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% '1G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- '3G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 '50G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- '.0G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% '3.0G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- '50.0G", " NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 '.1G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- '1.1G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% '50.1G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- '.3G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 '1.3G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- '3.3G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% '.50G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- '1.50G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 '3.50G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- '50.50G", " NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% +'1g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- +'3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 +'50g", " +nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- +'.0g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% +'3.0g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- +'50.0g", "+nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 +'.1g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- +'1.1g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% +'50.1g", " +nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- +'.3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 +'1.3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- +'3.3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% +'.50g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- +'1.50g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 +'3.50g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- +'50.50g", "+nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% +'1G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- +'3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 +'50G", " +NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- +'.0G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% +'3.0G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- +'50.0G", "+NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 +'.1G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- +'1.1G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% +'50.1G", " +NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- +'.3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 +'1.3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- +'3.3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "% +'.50G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%- +'1.50G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0 +'3.50G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%0- +'50.50G", "+NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#'1g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-'3g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0'50g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-'.0g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#'3.0g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-'50.0g", "nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0'.1g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-'1.1g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#'50.1g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-'.3g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0'1.3g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-'3.3g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#'.50g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-'1.50g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0'3.50g", "nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-'50.50g", "nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#'1G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-'3G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0'50G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-'.0G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#'3.0G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-'50.0G", "NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0'.1G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-'1.1G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#'50.1G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-'.3G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0'1.3G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-'3.3G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#'.50G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-'1.50G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0'3.50G", "NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-'50.50G", "NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#+'1g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-+'3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0+'50g", " +nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-+'.0g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#+'3.0g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-+'50.0g", "+nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0+'.1g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-+'1.1g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#+'50.1g", " +nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-+'.3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0+'1.3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-+'3.3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#+'.50g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-+'1.50g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0+'3.50g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-+'50.50g", "+nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#+'1G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-+'3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0+'50G", " +NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-+'.0G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#+'3.0G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-+'50.0G", "+NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0+'.1G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-+'1.1G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#+'50.1G", " +NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-+'.3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0+'1.3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-+'3.3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#+'.50G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#-+'1.50G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0+'3.50G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0-+'50.50G", "+NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# '1g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- '3g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 '50g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- '.0g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# '3.0g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- '50.0g", " nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 '.1g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- '1.1g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# '50.1g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- '.3g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 '1.3g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- '3.3g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# '.50g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- '1.50g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 '3.50g", " nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- '50.50g", " nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# '1G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- '3G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 '50G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- '.0G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# '3.0G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- '50.0G", " NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 '.1G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- '1.1G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# '50.1G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- '.3G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 '1.3G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- '3.3G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# '.50G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- '1.50G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 '3.50G", " NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- '50.50G", " NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# +'1g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- +'3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 +'50g", " +nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- +'.0g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# +'3.0g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- +'50.0g", "+nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 +'.1g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- +'1.1g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# +'50.1g", " +nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- +'.3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 +'1.3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- +'3.3g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# +'.50g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- +'1.50g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 +'3.50g", "+nan", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- +'50.50g", "+nan ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# +'1G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- +'3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 +'50G", " +NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- +'.0G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# +'3.0G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- +'50.0G", "+NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 +'.1G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- +'1.1G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# +'50.1G", " +NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- +'.3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 +'1.3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- +'3.3G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%# +'.50G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#- +'1.50G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0 +'3.50G", "+NAN", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%#0- +'50.50G", "+NAN ", { 0, 0, 0, 0, 0, 0, 248, 127 } },
+ { "%'1g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-'3g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0'50g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-'.0g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%'3.0g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-'50.0g", "inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0'.1g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-'1.1g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%'50.1g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-'.3g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0'1.3g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-'3.3g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%'.50g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-'1.50g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0'3.50g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-'50.50g", "inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%'1G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-'3G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0'50G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-'.0G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%'3.0G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-'50.0G", "INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0'.1G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-'1.1G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%'50.1G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-'.3G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0'1.3G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-'3.3G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%'.50G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-'1.50G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0'3.50G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-'50.50G", "INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%+'1g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-+'3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0+'50g", " +inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-+'.0g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%+'3.0g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-+'50.0g", "+inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0+'.1g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-+'1.1g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%+'50.1g", " +inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-+'.3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0+'1.3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-+'3.3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%+'.50g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-+'1.50g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0+'3.50g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-+'50.50g", "+inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%+'1G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-+'3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0+'50G", " +INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-+'.0G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%+'3.0G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-+'50.0G", "+INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0+'.1G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-+'1.1G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%+'50.1G", " +INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-+'.3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0+'1.3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-+'3.3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%+'.50G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%-+'1.50G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0+'3.50G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0-+'50.50G", "+INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% '1g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- '3g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 '50g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- '.0g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% '3.0g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- '50.0g", " inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 '.1g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- '1.1g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% '50.1g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- '.3g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 '1.3g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- '3.3g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% '.50g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- '1.50g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 '3.50g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- '50.50g", " inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% '1G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- '3G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 '50G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- '.0G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% '3.0G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- '50.0G", " INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 '.1G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- '1.1G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% '50.1G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- '.3G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 '1.3G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- '3.3G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% '.50G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- '1.50G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 '3.50G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- '50.50G", " INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% +'1g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- +'3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 +'50g", " +inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- +'.0g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% +'3.0g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- +'50.0g", "+inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 +'.1g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- +'1.1g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% +'50.1g", " +inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- +'.3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 +'1.3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- +'3.3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% +'.50g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- +'1.50g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 +'3.50g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- +'50.50g", "+inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% +'1G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- +'3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 +'50G", " +INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- +'.0G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% +'3.0G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- +'50.0G", "+INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 +'.1G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- +'1.1G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% +'50.1G", " +INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- +'.3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 +'1.3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- +'3.3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "% +'.50G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%- +'1.50G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0 +'3.50G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%0- +'50.50G", "+INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#'1g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-'3g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0'50g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-'.0g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#'3.0g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-'50.0g", "inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0'.1g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-'1.1g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#'50.1g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-'.3g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0'1.3g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-'3.3g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#'.50g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-'1.50g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0'3.50g", "inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-'50.50g", "inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#'1G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-'3G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0'50G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-'.0G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#'3.0G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-'50.0G", "INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0'.1G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-'1.1G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#'50.1G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-'.3G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0'1.3G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-'3.3G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#'.50G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-'1.50G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0'3.50G", "INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-'50.50G", "INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#+'1g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-+'3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0+'50g", " +inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-+'.0g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#+'3.0g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-+'50.0g", "+inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0+'.1g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-+'1.1g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#+'50.1g", " +inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-+'.3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0+'1.3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-+'3.3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#+'.50g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-+'1.50g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0+'3.50g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-+'50.50g", "+inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#+'1G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-+'3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0+'50G", " +INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-+'.0G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#+'3.0G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-+'50.0G", "+INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0+'.1G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-+'1.1G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#+'50.1G", " +INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-+'.3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0+'1.3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-+'3.3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#+'.50G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#-+'1.50G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0+'3.50G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0-+'50.50G", "+INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# '1g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- '3g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 '50g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- '.0g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# '3.0g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- '50.0g", " inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 '.1g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- '1.1g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# '50.1g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- '.3g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 '1.3g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- '3.3g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# '.50g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- '1.50g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 '3.50g", " inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- '50.50g", " inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# '1G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- '3G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 '50G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- '.0G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# '3.0G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- '50.0G", " INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 '.1G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- '1.1G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# '50.1G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- '.3G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 '1.3G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- '3.3G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# '.50G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- '1.50G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 '3.50G", " INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- '50.50G", " INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# +'1g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- +'3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 +'50g", " +inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- +'.0g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# +'3.0g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- +'50.0g", "+inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 +'.1g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- +'1.1g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# +'50.1g", " +inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- +'.3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 +'1.3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- +'3.3g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# +'.50g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- +'1.50g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 +'3.50g", "+inf", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- +'50.50g", "+inf ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# +'1G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- +'3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 +'50G", " +INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- +'.0G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# +'3.0G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- +'50.0G", "+INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 +'.1G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- +'1.1G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# +'50.1G", " +INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- +'.3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 +'1.3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- +'3.3G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%# +'.50G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#- +'1.50G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0 +'3.50G", "+INF", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%#0- +'50.50G", "+INF ", { 0, 0, 0, 0, 0, 0, 240, 127 } },
+ { "%'1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-'3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0'50g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-'.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%'3.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-'50.0g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0'.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-'1.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%'50.1g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-'.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0'1.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-'3.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%'.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-'1.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0'3.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-'50.50g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%'1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-'3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0'50G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-'.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%'3.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-'50.0G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0'.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-'1.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%'50.1G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-'.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0'1.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-'3.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%'.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-'1.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0'3.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-'50.50G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%+'1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-+'3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0+'50g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-+'.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%+'3.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-+'50.0g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0+'.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-+'1.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%+'50.1g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-+'.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0+'1.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-+'3.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%+'.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-+'1.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0+'3.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-+'50.50g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%+'1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-+'3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0+'50G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-+'.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%+'3.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-+'50.0G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0+'.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-+'1.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%+'50.1G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-+'.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0+'1.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-+'3.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%+'.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%-+'1.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0+'3.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0-+'50.50G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% '1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- '3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 '50g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- '.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% '3.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- '50.0g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 '.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- '1.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% '50.1g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- '.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 '1.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- '3.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% '.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- '1.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 '3.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- '50.50g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% '1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- '3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 '50G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- '.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% '3.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- '50.0G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 '.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- '1.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% '50.1G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- '.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 '1.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- '3.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% '.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- '1.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 '3.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- '50.50G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% +'1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- +'3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 +'50g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- +'.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% +'3.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- +'50.0g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 +'.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- +'1.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% +'50.1g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- +'.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 +'1.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- +'3.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% +'.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- +'1.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 +'3.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- +'50.50g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% +'1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- +'3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 +'50G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- +'.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% +'3.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- +'50.0G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 +'.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- +'1.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% +'50.1G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- +'.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 +'1.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- +'3.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "% +'.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%- +'1.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0 +'3.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%0- +'50.50G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#'1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-'3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0'50g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-'.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#'3.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-'50.0g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0'.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-'1.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#'50.1g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-'.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0'1.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-'3.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#'.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-'1.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0'3.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-'50.50g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#'1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-'3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0'50G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-'.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#'3.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-'50.0G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0'.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-'1.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#'50.1G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-'.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0'1.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-'3.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#'.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-'1.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0'3.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-'50.50G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#+'1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-+'3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0+'50g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-+'.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#+'3.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-+'50.0g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0+'.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-+'1.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#+'50.1g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-+'.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0+'1.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-+'3.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#+'.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-+'1.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0+'3.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-+'50.50g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#+'1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-+'3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0+'50G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-+'.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#+'3.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-+'50.0G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0+'.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-+'1.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#+'50.1G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-+'.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0+'1.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-+'3.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#+'.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#-+'1.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0+'3.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0-+'50.50G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# '1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- '3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 '50g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- '.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# '3.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- '50.0g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 '.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- '1.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# '50.1g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- '.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 '1.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- '3.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# '.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- '1.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 '3.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- '50.50g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# '1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- '3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 '50G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- '.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# '3.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- '50.0G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 '.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- '1.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# '50.1G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- '.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 '1.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- '3.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# '.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- '1.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 '3.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- '50.50G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# +'1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- +'3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 +'50g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- +'.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# +'3.0g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- +'50.0g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 +'.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- +'1.1g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# +'50.1g", " -inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- +'.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 +'1.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- +'3.3g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# +'.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- +'1.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 +'3.50g", "-inf", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- +'50.50g", "-inf ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# +'1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- +'3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 +'50G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- +'.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# +'3.0G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- +'50.0G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 +'.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- +'1.1G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# +'50.1G", " -INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- +'.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 +'1.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- +'3.3G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%# +'.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#- +'1.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0 +'3.50G", "-INF", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%#0- +'50.50G", "-INF ", { 0, 0, 0, 0, 0, 0, 240, 255 } },
+ { "%'1g", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-'3g", "1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0'50g", "00000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-'.0g", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%'3.0g", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-'50.0g", "1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0'.1g", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-'1.1g", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%'50.1g", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-'.3g", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0'1.3g", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-'3.3g", "1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%'.50g", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-'1.50g", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0'3.50g", "001", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-'50.50g", "1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%'1G", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-'3G", "1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0'50G", "00000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-'.0G", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%'3.0G", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-'50.0G", "1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0'.1G", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-'1.1G", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%'50.1G", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-'.3G", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0'1.3G", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-'3.3G", "1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%'.50G", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-'1.50G", "1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0'3.50G", "001", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-'50.50G", "1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%+'1g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-+'3g", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0+'50g", "+0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-+'.0g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%+'3.0g", " +1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-+'50.0g", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0+'.1g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-+'1.1g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%+'50.1g", " +1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-+'.3g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0+'1.3g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-+'3.3g", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%+'.50g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-+'1.50g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0+'3.50g", "+01", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-+'50.50g", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%+'1G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-+'3G", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0+'50G", "+0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-+'.0G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%+'3.0G", " +1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-+'50.0G", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0+'.1G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-+'1.1G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%+'50.1G", " +1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-+'.3G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0+'1.3G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-+'3.3G", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%+'.50G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%-+'1.50G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0+'3.50G", "+01", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0-+'50.50G", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% '1g", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- '3g", " 1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 '50g", " 0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- '.0g", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% '3.0g", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- '50.0g", " 1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 '.1g", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- '1.1g", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% '50.1g", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- '.3g", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 '1.3g", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- '3.3g", " 1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% '.50g", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- '1.50g", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 '3.50g", " 01", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- '50.50g", " 1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% '1G", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- '3G", " 1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 '50G", " 0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- '.0G", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% '3.0G", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- '50.0G", " 1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 '.1G", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- '1.1G", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% '50.1G", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- '.3G", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 '1.3G", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- '3.3G", " 1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% '.50G", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- '1.50G", " 1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 '3.50G", " 01", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- '50.50G", " 1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% +'1g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- +'3g", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 +'50g", "+0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- +'.0g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% +'3.0g", " +1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- +'50.0g", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 +'.1g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- +'1.1g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% +'50.1g", " +1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- +'.3g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 +'1.3g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- +'3.3g", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% +'.50g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- +'1.50g", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 +'3.50g", "+01", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- +'50.50g", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% +'1G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- +'3G", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 +'50G", "+0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- +'.0G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% +'3.0G", " +1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- +'50.0G", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 +'.1G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- +'1.1G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% +'50.1G", " +1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- +'.3G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 +'1.3G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- +'3.3G", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "% +'.50G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%- +'1.50G", "+1", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0 +'3.50G", "+01", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%0- +'50.50G", "+1 ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#'1g", "1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-'3g", "1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0'50g", "00000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-'.0g", "1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#'3.0g", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-'50.0g", "1. ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0'.1g", "1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-'1.1g", "1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#'50.1g", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-'.3g", "1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0'1.3g", "1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-'3.3g", "1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#'.50g", "1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-'1.50g", "1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0'3.50g", "1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-'50.50g", "1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#'1G", "1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-'3G", "1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0'50G", "00000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-'.0G", "1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#'3.0G", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-'50.0G", "1. ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0'.1G", "1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-'1.1G", "1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#'50.1G", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-'.3G", "1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0'1.3G", "1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-'3.3G", "1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#'.50G", "1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-'1.50G", "1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0'3.50G", "1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-'50.50G", "1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#+'1g", "+1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-+'3g", "+1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0+'50g", "+0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-+'.0g", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#+'3.0g", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-+'50.0g", "+1. ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0+'.1g", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-+'1.1g", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#+'50.1g", " +1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-+'.3g", "+1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0+'1.3g", "+1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-+'3.3g", "+1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#+'.50g", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-+'1.50g", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0+'3.50g", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-+'50.50g", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#+'1G", "+1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-+'3G", "+1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0+'50G", "+0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-+'.0G", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#+'3.0G", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-+'50.0G", "+1. ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0+'.1G", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-+'1.1G", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#+'50.1G", " +1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-+'.3G", "+1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0+'1.3G", "+1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-+'3.3G", "+1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#+'.50G", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#-+'1.50G", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0+'3.50G", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0-+'50.50G", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# '1g", " 1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- '3g", " 1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 '50g", " 0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- '.0g", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# '3.0g", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- '50.0g", " 1. ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 '.1g", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- '1.1g", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# '50.1g", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- '.3g", " 1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 '1.3g", " 1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- '3.3g", " 1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# '.50g", " 1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- '1.50g", " 1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 '3.50g", " 1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- '50.50g", " 1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# '1G", " 1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- '3G", " 1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 '50G", " 0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- '.0G", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# '3.0G", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- '50.0G", " 1. ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 '.1G", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- '1.1G", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# '50.1G", " 1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- '.3G", " 1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 '1.3G", " 1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- '3.3G", " 1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# '.50G", " 1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- '1.50G", " 1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 '3.50G", " 1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- '50.50G", " 1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# +'1g", "+1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- +'3g", "+1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 +'50g", "+0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- +'.0g", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# +'3.0g", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- +'50.0g", "+1. ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 +'.1g", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- +'1.1g", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# +'50.1g", " +1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- +'.3g", "+1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 +'1.3g", "+1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- +'3.3g", "+1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# +'.50g", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- +'1.50g", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 +'3.50g", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- +'50.50g", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# +'1G", "+1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- +'3G", "+1.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 +'50G", "+0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- +'.0G", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# +'3.0G", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- +'50.0G", "+1. ", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 +'.1G", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- +'1.1G", "+1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# +'50.1G", " +1.", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- +'.3G", "+1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 +'1.3G", "+1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- +'3.3G", "+1.00", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%# +'.50G", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#- +'1.50G", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0 +'3.50G", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%#0- +'50.50G", "+1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 63 } },
+ { "%'1g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-'3g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0'50g", "-0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-'.0g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%'3.0g", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-'50.0g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0'.1g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-'1.1g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%'50.1g", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-'.3g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0'1.3g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-'3.3g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%'.50g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-'1.50g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0'3.50g", "-01", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-'50.50g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%'1G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-'3G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0'50G", "-0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-'.0G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%'3.0G", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-'50.0G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0'.1G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-'1.1G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%'50.1G", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-'.3G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0'1.3G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-'3.3G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%'.50G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-'1.50G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0'3.50G", "-01", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-'50.50G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%+'1g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-+'3g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0+'50g", "-0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-+'.0g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%+'3.0g", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-+'50.0g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0+'.1g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-+'1.1g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%+'50.1g", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-+'.3g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0+'1.3g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-+'3.3g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%+'.50g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-+'1.50g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0+'3.50g", "-01", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-+'50.50g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%+'1G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-+'3G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0+'50G", "-0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-+'.0G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%+'3.0G", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-+'50.0G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0+'.1G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-+'1.1G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%+'50.1G", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-+'.3G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0+'1.3G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-+'3.3G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%+'.50G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%-+'1.50G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0+'3.50G", "-01", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0-+'50.50G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% '1g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- '3g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 '50g", "-0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- '.0g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% '3.0g", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- '50.0g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 '.1g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- '1.1g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% '50.1g", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- '.3g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 '1.3g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- '3.3g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% '.50g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- '1.50g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 '3.50g", "-01", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- '50.50g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% '1G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- '3G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 '50G", "-0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- '.0G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% '3.0G", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- '50.0G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 '.1G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- '1.1G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% '50.1G", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- '.3G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 '1.3G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- '3.3G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% '.50G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- '1.50G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 '3.50G", "-01", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- '50.50G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% +'1g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- +'3g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 +'50g", "-0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- +'.0g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% +'3.0g", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- +'50.0g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 +'.1g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- +'1.1g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% +'50.1g", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- +'.3g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 +'1.3g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- +'3.3g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% +'.50g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- +'1.50g", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 +'3.50g", "-01", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- +'50.50g", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% +'1G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- +'3G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 +'50G", "-0000000000000000000000000000000000000000000000001", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- +'.0G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% +'3.0G", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- +'50.0G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 +'.1G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- +'1.1G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% +'50.1G", " -1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- +'.3G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 +'1.3G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- +'3.3G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "% +'.50G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%- +'1.50G", "-1", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0 +'3.50G", "-01", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%0- +'50.50G", "-1 ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#'1g", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-'3g", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0'50g", "-0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-'.0g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#'3.0g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-'50.0g", "-1. ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0'.1g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-'1.1g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#'50.1g", " -1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-'.3g", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0'1.3g", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-'3.3g", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#'.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-'1.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0'3.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-'50.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#'1G", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-'3G", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0'50G", "-0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-'.0G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#'3.0G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-'50.0G", "-1. ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0'.1G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-'1.1G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#'50.1G", " -1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-'.3G", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0'1.3G", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-'3.3G", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#'.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-'1.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0'3.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-'50.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#+'1g", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-+'3g", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0+'50g", "-0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-+'.0g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#+'3.0g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-+'50.0g", "-1. ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0+'.1g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-+'1.1g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#+'50.1g", " -1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-+'.3g", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0+'1.3g", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-+'3.3g", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#+'.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-+'1.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0+'3.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-+'50.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#+'1G", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-+'3G", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0+'50G", "-0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-+'.0G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#+'3.0G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-+'50.0G", "-1. ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0+'.1G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-+'1.1G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#+'50.1G", " -1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-+'.3G", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0+'1.3G", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-+'3.3G", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#+'.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#-+'1.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0+'3.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0-+'50.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# '1g", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- '3g", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 '50g", "-0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- '.0g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# '3.0g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- '50.0g", "-1. ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 '.1g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- '1.1g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# '50.1g", " -1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- '.3g", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 '1.3g", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- '3.3g", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# '.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- '1.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 '3.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- '50.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# '1G", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- '3G", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 '50G", "-0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- '.0G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# '3.0G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- '50.0G", "-1. ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 '.1G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- '1.1G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# '50.1G", " -1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- '.3G", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 '1.3G", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- '3.3G", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# '.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- '1.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 '3.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- '50.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# +'1g", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- +'3g", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 +'50g", "-0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- +'.0g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# +'3.0g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- +'50.0g", "-1. ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 +'.1g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- +'1.1g", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# +'50.1g", " -1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- +'.3g", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 +'1.3g", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- +'3.3g", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# +'.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- +'1.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 +'3.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- +'50.50g", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# +'1G", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- +'3G", "-1.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 +'50G", "-0000000000000000000000000000000000000000001.00000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- +'.0G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# +'3.0G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- +'50.0G", "-1. ", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 +'.1G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- +'1.1G", "-1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# +'50.1G", " -1.", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- +'.3G", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 +'1.3G", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- +'3.3G", "-1.00", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%# +'.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#- +'1.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0 +'3.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%#0- +'50.50G", "-1.0000000000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 0, 240, 191 } },
+ { "%'1g", "1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-'3g", "1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0'50g", "00000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-'.0g", "2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%'3.0g", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-'50.0g", "2 ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0'.1g", "2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-'1.1g", "2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%'50.1g", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-'.3g", "1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0'1.3g", "1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-'3.3g", "1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%'.50g", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-'1.50g", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0'3.50g", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-'50.50g", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%'1G", "1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-'3G", "1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0'50G", "00000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-'.0G", "2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%'3.0G", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-'50.0G", "2 ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0'.1G", "2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-'1.1G", "2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%'50.1G", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-'.3G", "1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0'1.3G", "1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-'3.3G", "1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%'.50G", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-'1.50G", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0'3.50G", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-'50.50G", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%+'1g", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-+'3g", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0+'50g", "+0000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-+'.0g", "+2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%+'3.0g", " +2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-+'50.0g", "+2 ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0+'.1g", "+2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-+'1.1g", "+2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%+'50.1g", " +2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-+'.3g", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0+'1.3g", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-+'3.3g", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%+'.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-+'1.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0+'3.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-+'50.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%+'1G", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-+'3G", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0+'50G", "+0000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-+'.0G", "+2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%+'3.0G", " +2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-+'50.0G", "+2 ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0+'.1G", "+2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-+'1.1G", "+2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%+'50.1G", " +2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-+'.3G", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0+'1.3G", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-+'3.3G", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%+'.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%-+'1.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0+'3.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0-+'50.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% '1g", " 1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- '3g", " 1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 '50g", " 0000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- '.0g", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% '3.0g", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- '50.0g", " 2 ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 '.1g", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- '1.1g", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% '50.1g", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- '.3g", " 1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 '1.3g", " 1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- '3.3g", " 1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% '.50g", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- '1.50g", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 '3.50g", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- '50.50g", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% '1G", " 1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- '3G", " 1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 '50G", " 0000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- '.0G", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% '3.0G", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- '50.0G", " 2 ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 '.1G", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- '1.1G", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% '50.1G", " 2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- '.3G", " 1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 '1.3G", " 1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- '3.3G", " 1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% '.50G", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- '1.50G", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 '3.50G", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- '50.50G", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% +'1g", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- +'3g", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 +'50g", "+0000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- +'.0g", "+2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% +'3.0g", " +2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- +'50.0g", "+2 ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 +'.1g", "+2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- +'1.1g", "+2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% +'50.1g", " +2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- +'.3g", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 +'1.3g", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- +'3.3g", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% +'.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- +'1.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 +'3.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- +'50.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% +'1G", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- +'3G", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 +'50G", "+0000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- +'.0G", "+2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% +'3.0G", " +2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- +'50.0G", "+2 ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 +'.1G", "+2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- +'1.1G", "+2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% +'50.1G", " +2", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- +'.3G", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 +'1.3G", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- +'3.3G", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "% +'.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%- +'1.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0 +'3.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%0- +'50.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#'1g", "1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-'3g", "1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0'50g", "00000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-'.0g", "2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#'3.0g", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-'50.0g", "2. ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0'.1g", "2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-'1.1g", "2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#'50.1g", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-'.3g", "1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0'1.3g", "1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-'3.3g", "1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#'.50g", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-'1.50g", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0'3.50g", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-'50.50g", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#'1G", "1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-'3G", "1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0'50G", "00000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-'.0G", "2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#'3.0G", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-'50.0G", "2. ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0'.1G", "2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-'1.1G", "2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#'50.1G", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-'.3G", "1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0'1.3G", "1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-'3.3G", "1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#'.50G", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-'1.50G", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0'3.50G", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-'50.50G", "1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#+'1g", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-+'3g", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0+'50g", "+0000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-+'.0g", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#+'3.0g", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-+'50.0g", "+2. ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0+'.1g", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-+'1.1g", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#+'50.1g", " +2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-+'.3g", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0+'1.3g", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-+'3.3g", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#+'.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-+'1.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0+'3.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-+'50.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#+'1G", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-+'3G", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0+'50G", "+0000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-+'.0G", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#+'3.0G", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-+'50.0G", "+2. ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0+'.1G", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-+'1.1G", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#+'50.1G", " +2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-+'.3G", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0+'1.3G", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-+'3.3G", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#+'.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#-+'1.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0+'3.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0-+'50.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# '1g", " 1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- '3g", " 1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 '50g", " 0000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- '.0g", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# '3.0g", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- '50.0g", " 2. ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 '.1g", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- '1.1g", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# '50.1g", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- '.3g", " 1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 '1.3g", " 1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- '3.3g", " 1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# '.50g", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- '1.50g", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 '3.50g", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- '50.50g", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# '1G", " 1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- '3G", " 1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 '50G", " 0000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- '.0G", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# '3.0G", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- '50.0G", " 2. ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 '.1G", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- '1.1G", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# '50.1G", " 2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- '.3G", " 1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 '1.3G", " 1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- '3.3G", " 1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# '.50G", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- '1.50G", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 '3.50G", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- '50.50G", " 1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# +'1g", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- +'3g", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 +'50g", "+0000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- +'.0g", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# +'3.0g", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- +'50.0g", "+2. ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 +'.1g", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- +'1.1g", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# +'50.1g", " +2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- +'.3g", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 +'1.3g", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- +'3.3g", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# +'.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- +'1.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 +'3.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- +'50.50g", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# +'1G", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- +'3G", "+1.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 +'50G", "+0000000000000000000000000000000000000000001.57143", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- +'.0G", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# +'3.0G", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- +'50.0G", "+2. ", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 +'.1G", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- +'1.1G", "+2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# +'50.1G", " +2.", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- +'.3G", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 +'1.3G", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- +'3.3G", "+1.57", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%# +'.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#- +'1.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0 +'3.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%#0- +'50.50G", "+1.5714285714285713968507707249955274164676666259766", { 73, 146, 36, 73, 146, 36, 249, 63 } },
+ { "%'1g", "0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-'3g", "0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0'50g", "0000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-'.0g", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%'3.0g", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-'50.0g", "0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0'.1g", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-'1.1g", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%'50.1g", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-'.3g", "0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0'1.3g", "0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-'3.3g", "0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%'.50g", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-'1.50g", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0'3.50g", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-'50.50g", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%'1G", "0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-'3G", "0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0'50G", "0000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-'.0G", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%'3.0G", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-'50.0G", "0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0'.1G", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-'1.1G", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%'50.1G", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-'.3G", "0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0'1.3G", "0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-'3.3G", "0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%'.50G", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-'1.50G", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0'3.50G", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-'50.50G", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%+'1g", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-+'3g", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0+'50g", "+000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-+'.0g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%+'3.0g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-+'50.0g", "+0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0+'.1g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-+'1.1g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%+'50.1g", " +0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-+'.3g", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0+'1.3g", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-+'3.3g", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%+'.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-+'1.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0+'3.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-+'50.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%+'1G", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-+'3G", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0+'50G", "+000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-+'.0G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%+'3.0G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-+'50.0G", "+0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0+'.1G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-+'1.1G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%+'50.1G", " +0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-+'.3G", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0+'1.3G", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-+'3.3G", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%+'.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%-+'1.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0+'3.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0-+'50.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% '1g", " 0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- '3g", " 0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 '50g", " 000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- '.0g", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% '3.0g", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- '50.0g", " 0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 '.1g", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- '1.1g", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% '50.1g", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- '.3g", " 0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 '1.3g", " 0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- '3.3g", " 0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% '.50g", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- '1.50g", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 '3.50g", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- '50.50g", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% '1G", " 0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- '3G", " 0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 '50G", " 000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- '.0G", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% '3.0G", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- '50.0G", " 0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 '.1G", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- '1.1G", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% '50.1G", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- '.3G", " 0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 '1.3G", " 0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- '3.3G", " 0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% '.50G", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- '1.50G", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 '3.50G", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- '50.50G", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% +'1g", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- +'3g", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- +'.0g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% +'3.0g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- +'50.0g", "+0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 +'.1g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- +'1.1g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% +'50.1g", " +0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- +'.3g", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 +'1.3g", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- +'3.3g", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% +'.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- +'1.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 +'3.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- +'50.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% +'1G", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- +'3G", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- +'.0G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% +'3.0G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- +'50.0G", "+0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 +'.1G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- +'1.1G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% +'50.1G", " +0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- +'.3G", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 +'1.3G", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- +'3.3G", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "% +'.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%- +'1.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0 +'3.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%0- +'50.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#'1g", "0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-'3g", "0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0'50g", "0000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-'.0g", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#'3.0g", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-'50.0g", "0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0'.1g", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-'1.1g", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#'50.1g", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-'.3g", "0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0'1.3g", "0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-'3.3g", "0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#'.50g", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-'1.50g", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0'3.50g", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-'50.50g", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#'1G", "0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-'3G", "0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0'50G", "0000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-'.0G", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#'3.0G", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-'50.0G", "0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0'.1G", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-'1.1G", "0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#'50.1G", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-'.3G", "0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0'1.3G", "0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-'3.3G", "0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#'.50G", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-'1.50G", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0'3.50G", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-'50.50G", "0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#+'1g", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-+'3g", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-+'.0g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#+'3.0g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-+'50.0g", "+0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0+'.1g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-+'1.1g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#+'50.1g", " +0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-+'.3g", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0+'1.3g", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-+'3.3g", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#+'.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-+'1.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0+'3.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-+'50.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#+'1G", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-+'3G", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-+'.0G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#+'3.0G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-+'50.0G", "+0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0+'.1G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-+'1.1G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#+'50.1G", " +0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-+'.3G", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0+'1.3G", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-+'3.3G", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#+'.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#-+'1.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0+'3.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0-+'50.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# '1g", " 0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- '3g", " 0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- '.0g", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# '3.0g", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- '50.0g", " 0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 '.1g", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- '1.1g", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# '50.1g", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- '.3g", " 0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 '1.3g", " 0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- '3.3g", " 0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# '.50g", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- '1.50g", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 '3.50g", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- '50.50g", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# '1G", " 0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- '3G", " 0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- '.0G", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# '3.0G", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- '50.0G", " 0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 '.1G", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- '1.1G", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# '50.1G", " 0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- '.3G", " 0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 '1.3G", " 0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- '3.3G", " 0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# '.50G", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- '1.50G", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 '3.50G", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- '50.50G", " 0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# +'1g", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- +'3g", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- +'.0g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# +'3.0g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- +'50.0g", "+0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 +'.1g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- +'1.1g", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# +'50.1g", " +0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- +'.3g", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 +'1.3g", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- +'3.3g", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# +'.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- +'1.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 +'3.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- +'50.50g", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# +'1G", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- +'3G", "+0.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000000000.636364", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- +'.0G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# +'3.0G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- +'50.0G", "+0.6 ", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 +'.1G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- +'1.1G", "+0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# +'50.1G", " +0.6", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- +'.3G", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 +'1.3G", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- +'3.3G", "+0.636", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%# +'.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#- +'1.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0 +'3.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%#0- +'50.50G", "+0.63636363636363635354342704886221326887607574462891", { 93, 116, 209, 69, 23, 93, 228, 63 } },
+ { "%'1g", "1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-'3g", "1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0'50g", "0000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-'.0g", "2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%'3.0g", "2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-'50.0g", "2e+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0'.1g", "2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-'1.1g", "2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%'50.1g", " 2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-'.3g", "1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0'1.3g", "1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-'3.3g", "1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%'.50g", "1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-'1.50g", "1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0'3.50g", "1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-'50.50g", "1,571.428571428571331125567667186260223388671875 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%'1G", "1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-'3G", "1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0'50G", "0000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-'.0G", "2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%'3.0G", "2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-'50.0G", "2E+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0'.1G", "2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-'1.1G", "2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%'50.1G", " 2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-'.3G", "1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0'1.3G", "1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-'3.3G", "1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%'.50G", "1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-'1.50G", "1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0'3.50G", "1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-'50.50G", "1,571.428571428571331125567667186260223388671875 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%+'1g", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-+'3g", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0+'50g", "+000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-+'.0g", "+2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%+'3.0g", "+2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-+'50.0g", "+2e+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0+'.1g", "+2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-+'1.1g", "+2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%+'50.1g", " +2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-+'.3g", "+1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0+'1.3g", "+1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-+'3.3g", "+1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%+'.50g", "+1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-+'1.50g", "+1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0+'3.50g", "+1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-+'50.50g", "+1,571.428571428571331125567667186260223388671875 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%+'1G", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-+'3G", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0+'50G", "+000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-+'.0G", "+2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%+'3.0G", "+2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-+'50.0G", "+2E+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0+'.1G", "+2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-+'1.1G", "+2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%+'50.1G", " +2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-+'.3G", "+1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0+'1.3G", "+1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-+'3.3G", "+1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%+'.50G", "+1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%-+'1.50G", "+1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0+'3.50G", "+1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0-+'50.50G", "+1,571.428571428571331125567667186260223388671875 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% '1g", " 1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- '3g", " 1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 '50g", " 000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- '.0g", " 2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% '3.0g", " 2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- '50.0g", " 2e+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 '.1g", " 2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- '1.1g", " 2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% '50.1g", " 2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- '.3g", " 1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 '1.3g", " 1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- '3.3g", " 1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% '.50g", " 1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- '1.50g", " 1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 '3.50g", " 1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- '50.50g", " 1,571.428571428571331125567667186260223388671875 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% '1G", " 1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- '3G", " 1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 '50G", " 000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- '.0G", " 2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% '3.0G", " 2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- '50.0G", " 2E+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 '.1G", " 2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- '1.1G", " 2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% '50.1G", " 2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- '.3G", " 1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 '1.3G", " 1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- '3.3G", " 1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% '.50G", " 1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- '1.50G", " 1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 '3.50G", " 1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- '50.50G", " 1,571.428571428571331125567667186260223388671875 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% +'1g", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- +'3g", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- +'.0g", "+2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% +'3.0g", "+2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- +'50.0g", "+2e+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 +'.1g", "+2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- +'1.1g", "+2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% +'50.1g", " +2e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- +'.3g", "+1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 +'1.3g", "+1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- +'3.3g", "+1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% +'.50g", "+1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- +'1.50g", "+1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 +'3.50g", "+1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- +'50.50g", "+1,571.428571428571331125567667186260223388671875 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% +'1G", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- +'3G", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- +'.0G", "+2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% +'3.0G", "+2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- +'50.0G", "+2E+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 +'.1G", "+2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- +'1.1G", "+2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% +'50.1G", " +2E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- +'.3G", "+1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 +'1.3G", "+1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- +'3.3G", "+1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "% +'.50G", "+1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%- +'1.50G", "+1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0 +'3.50G", "+1,571.428571428571331125567667186260223388671875", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%0- +'50.50G", "+1,571.428571428571331125567667186260223388671875 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#'1g", "1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-'3g", "1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0'50g", "0000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-'.0g", "2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#'3.0g", "2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-'50.0g", "2.e+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0'.1g", "2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-'1.1g", "2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#'50.1g", " 2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-'.3g", "1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0'1.3g", "1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-'3.3g", "1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#'.50g", "1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-'1.50g", "1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0'3.50g", "1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-'50.50g", "1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#'1G", "1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-'3G", "1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0'50G", "0000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-'.0G", "2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#'3.0G", "2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-'50.0G", "2.E+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0'.1G", "2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-'1.1G", "2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#'50.1G", " 2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-'.3G", "1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0'1.3G", "1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-'3.3G", "1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#'.50G", "1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-'1.50G", "1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0'3.50G", "1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-'50.50G", "1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#+'1g", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-+'3g", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-+'.0g", "+2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#+'3.0g", "+2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-+'50.0g", "+2.e+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0+'.1g", "+2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-+'1.1g", "+2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#+'50.1g", " +2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-+'.3g", "+1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0+'1.3g", "+1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-+'3.3g", "+1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#+'.50g", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-+'1.50g", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0+'3.50g", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-+'50.50g", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#+'1G", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-+'3G", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-+'.0G", "+2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#+'3.0G", "+2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-+'50.0G", "+2.E+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0+'.1G", "+2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-+'1.1G", "+2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#+'50.1G", " +2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-+'.3G", "+1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0+'1.3G", "+1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-+'3.3G", "+1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#+'.50G", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#-+'1.50G", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0+'3.50G", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0-+'50.50G", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# '1g", " 1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- '3g", " 1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- '.0g", " 2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# '3.0g", " 2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- '50.0g", " 2.e+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 '.1g", " 2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- '1.1g", " 2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# '50.1g", " 2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- '.3g", " 1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 '1.3g", " 1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- '3.3g", " 1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# '.50g", " 1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- '1.50g", " 1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 '3.50g", " 1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- '50.50g", " 1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# '1G", " 1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- '3G", " 1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- '.0G", " 2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# '3.0G", " 2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- '50.0G", " 2.E+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 '.1G", " 2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- '1.1G", " 2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# '50.1G", " 2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- '.3G", " 1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 '1.3G", " 1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- '3.3G", " 1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# '.50G", " 1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- '1.50G", " 1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 '3.50G", " 1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- '50.50G", " 1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# +'1g", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- +'3g", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- +'.0g", "+2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# +'3.0g", "+2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- +'50.0g", "+2.e+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 +'.1g", "+2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- +'1.1g", "+2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# +'50.1g", " +2.e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- +'.3g", "+1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 +'1.3g", "+1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- +'3.3g", "+1.57e+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# +'.50g", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- +'1.50g", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 +'3.50g", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- +'50.50g", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# +'1G", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- +'3G", "+1,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000000001,571.43", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- +'.0G", "+2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# +'3.0G", "+2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- +'50.0G", "+2.E+03 ", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 +'.1G", "+2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- +'1.1G", "+2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# +'50.1G", " +2.E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- +'.3G", "+1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 +'1.3G", "+1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- +'3.3G", "+1.57E+03", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%# +'.50G", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#- +'1.50G", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0 +'3.50G", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%#0- +'50.50G", "+1,571.4285714285713311255676671862602233886718750000", { 219, 182, 109, 219, 182, 141, 152, 64 } },
+ { "%'1g", "1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-'3g", "1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0'50g", "0000000000000000000000000000000000000001.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-'.0g", "2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%'3.0g", "2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-'50.0g", "2e+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0'.1g", "2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-'1.1g", "2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%'50.1g", " 2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-'.3g", "1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0'1.3g", "1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-'3.3g", "1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%'.50g", "1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-'1.50g", "1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0'3.50g", "1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-'50.50g", "1,571,428.5714285713620483875274658203125 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%'1G", "1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-'3G", "1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0'50G", "0000000000000000000000000000000000000001.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-'.0G", "2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%'3.0G", "2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-'50.0G", "2E+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0'.1G", "2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-'1.1G", "2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%'50.1G", " 2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-'.3G", "1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0'1.3G", "1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-'3.3G", "1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%'.50G", "1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-'1.50G", "1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0'3.50G", "1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-'50.50G", "1,571,428.5714285713620483875274658203125 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%+'1g", "+1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-+'3g", "+1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0+'50g", "+000000000000000000000000000000000000001.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-+'.0g", "+2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%+'3.0g", "+2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-+'50.0g", "+2e+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0+'.1g", "+2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-+'1.1g", "+2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%+'50.1g", " +2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-+'.3g", "+1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0+'1.3g", "+1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-+'3.3g", "+1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%+'.50g", "+1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-+'1.50g", "+1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0+'3.50g", "+1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-+'50.50g", "+1,571,428.5714285713620483875274658203125 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%+'1G", "+1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-+'3G", "+1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0+'50G", "+000000000000000000000000000000000000001.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-+'.0G", "+2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%+'3.0G", "+2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-+'50.0G", "+2E+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0+'.1G", "+2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-+'1.1G", "+2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%+'50.1G", " +2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-+'.3G", "+1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0+'1.3G", "+1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-+'3.3G", "+1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%+'.50G", "+1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%-+'1.50G", "+1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0+'3.50G", "+1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0-+'50.50G", "+1,571,428.5714285713620483875274658203125 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% '1g", " 1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- '3g", " 1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 '50g", " 000000000000000000000000000000000000001.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- '.0g", " 2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% '3.0g", " 2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- '50.0g", " 2e+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 '.1g", " 2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- '1.1g", " 2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% '50.1g", " 2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- '.3g", " 1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 '1.3g", " 1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- '3.3g", " 1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% '.50g", " 1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- '1.50g", " 1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 '3.50g", " 1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- '50.50g", " 1,571,428.5714285713620483875274658203125 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% '1G", " 1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- '3G", " 1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 '50G", " 000000000000000000000000000000000000001.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- '.0G", " 2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% '3.0G", " 2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- '50.0G", " 2E+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 '.1G", " 2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- '1.1G", " 2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% '50.1G", " 2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- '.3G", " 1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 '1.3G", " 1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- '3.3G", " 1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% '.50G", " 1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- '1.50G", " 1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 '3.50G", " 1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- '50.50G", " 1,571,428.5714285713620483875274658203125 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% +'1g", "+1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- +'3g", "+1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000001.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- +'.0g", "+2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% +'3.0g", "+2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- +'50.0g", "+2e+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 +'.1g", "+2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- +'1.1g", "+2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% +'50.1g", " +2e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- +'.3g", "+1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 +'1.3g", "+1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- +'3.3g", "+1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% +'.50g", "+1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- +'1.50g", "+1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 +'3.50g", "+1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- +'50.50g", "+1,571,428.5714285713620483875274658203125 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% +'1G", "+1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- +'3G", "+1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000001.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- +'.0G", "+2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% +'3.0G", "+2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- +'50.0G", "+2E+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 +'.1G", "+2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- +'1.1G", "+2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% +'50.1G", " +2E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- +'.3G", "+1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 +'1.3G", "+1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- +'3.3G", "+1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "% +'.50G", "+1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%- +'1.50G", "+1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0 +'3.50G", "+1,571,428.5714285713620483875274658203125", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%0- +'50.50G", "+1,571,428.5714285713620483875274658203125 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#'1g", "1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-'3g", "1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0'50g", "0000000000000000000000000000000000000001.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-'.0g", "2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#'3.0g", "2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-'50.0g", "2.e+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0'.1g", "2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-'1.1g", "2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#'50.1g", " 2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-'.3g", "1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0'1.3g", "1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-'3.3g", "1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#'.50g", "1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-'1.50g", "1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0'3.50g", "1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-'50.50g", "1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#'1G", "1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-'3G", "1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0'50G", "0000000000000000000000000000000000000001.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-'.0G", "2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#'3.0G", "2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-'50.0G", "2.E+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0'.1G", "2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-'1.1G", "2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#'50.1G", " 2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-'.3G", "1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0'1.3G", "1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-'3.3G", "1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#'.50G", "1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-'1.50G", "1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0'3.50G", "1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-'50.50G", "1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#+'1g", "+1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-+'3g", "+1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000001.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-+'.0g", "+2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#+'3.0g", "+2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-+'50.0g", "+2.e+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0+'.1g", "+2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-+'1.1g", "+2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#+'50.1g", " +2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-+'.3g", "+1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0+'1.3g", "+1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-+'3.3g", "+1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#+'.50g", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-+'1.50g", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0+'3.50g", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-+'50.50g", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#+'1G", "+1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-+'3G", "+1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000001.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-+'.0G", "+2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#+'3.0G", "+2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-+'50.0G", "+2.E+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0+'.1G", "+2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-+'1.1G", "+2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#+'50.1G", " +2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-+'.3G", "+1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0+'1.3G", "+1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-+'3.3G", "+1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#+'.50G", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#-+'1.50G", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0+'3.50G", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0-+'50.50G", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# '1g", " 1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- '3g", " 1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000001.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- '.0g", " 2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# '3.0g", " 2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- '50.0g", " 2.e+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 '.1g", " 2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- '1.1g", " 2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# '50.1g", " 2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- '.3g", " 1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 '1.3g", " 1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- '3.3g", " 1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# '.50g", " 1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- '1.50g", " 1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 '3.50g", " 1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- '50.50g", " 1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# '1G", " 1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- '3G", " 1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000001.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- '.0G", " 2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# '3.0G", " 2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- '50.0G", " 2.E+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 '.1G", " 2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- '1.1G", " 2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# '50.1G", " 2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- '.3G", " 1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 '1.3G", " 1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- '3.3G", " 1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# '.50G", " 1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- '1.50G", " 1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 '3.50G", " 1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- '50.50G", " 1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# +'1g", "+1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- +'3g", "+1.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000001.57143e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- +'.0g", "+2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# +'3.0g", "+2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- +'50.0g", "+2.e+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 +'.1g", "+2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- +'1.1g", "+2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# +'50.1g", " +2.e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- +'.3g", "+1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 +'1.3g", "+1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- +'3.3g", "+1.57e+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# +'.50g", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- +'1.50g", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 +'3.50g", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- +'50.50g", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# +'1G", "+1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- +'3G", "+1.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000001.57143E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- +'.0G", "+2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# +'3.0G", "+2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- +'50.0G", "+2.E+06 ", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 +'.1G", "+2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- +'1.1G", "+2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# +'50.1G", " +2.E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- +'.3G", "+1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 +'1.3G", "+1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- +'3.3G", "+1.57E+06", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%# +'.50G", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#- +'1.50G", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0 +'3.50G", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%#0- +'50.50G", "+1,571,428.5714285713620483875274658203125000000000000", { 146, 36, 73, 146, 100, 250, 55, 65 } },
+ { "%'1g", "0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-'3g", "0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0'50g", "00000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-'.0g", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%'3.0g", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-'50.0g", "0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0'.1g", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-'1.1g", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%'50.1g", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-'.3g", "0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0'1.3g", "0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-'3.3g", "0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%'.50g", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-'1.50g", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0'3.50g", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-'50.50g", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%'1G", "0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-'3G", "0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0'50G", "00000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-'.0G", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%'3.0G", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-'50.0G", "0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0'.1G", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-'1.1G", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%'50.1G", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-'.3G", "0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0'1.3G", "0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-'3.3G", "0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%'.50G", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-'1.50G", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0'3.50G", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-'50.50G", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%+'1g", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-+'3g", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0+'50g", "+0000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-+'.0g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%+'3.0g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-+'50.0g", "+0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0+'.1g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-+'1.1g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%+'50.1g", " +0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-+'.3g", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0+'1.3g", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-+'3.3g", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%+'.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-+'1.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0+'3.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-+'50.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%+'1G", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-+'3G", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0+'50G", "+0000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-+'.0G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%+'3.0G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-+'50.0G", "+0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0+'.1G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-+'1.1G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%+'50.1G", " +0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-+'.3G", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0+'1.3G", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-+'3.3G", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%+'.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%-+'1.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0+'3.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0-+'50.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% '1g", " 0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- '3g", " 0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 '50g", " 0000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- '.0g", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% '3.0g", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- '50.0g", " 0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 '.1g", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- '1.1g", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% '50.1g", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- '.3g", " 0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 '1.3g", " 0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- '3.3g", " 0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% '.50g", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- '1.50g", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 '3.50g", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- '50.50g", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% '1G", " 0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- '3G", " 0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 '50G", " 0000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- '.0G", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% '3.0G", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- '50.0G", " 0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 '.1G", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- '1.1G", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% '50.1G", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- '.3G", " 0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 '1.3G", " 0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- '3.3G", " 0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% '.50G", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- '1.50G", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 '3.50G", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- '50.50G", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% +'1g", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- +'3g", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 +'50g", "+0000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- +'.0g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% +'3.0g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- +'50.0g", "+0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 +'.1g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- +'1.1g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% +'50.1g", " +0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- +'.3g", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 +'1.3g", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- +'3.3g", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% +'.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- +'1.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 +'3.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- +'50.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% +'1G", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- +'3G", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 +'50G", "+0000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- +'.0G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% +'3.0G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- +'50.0G", "+0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 +'.1G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- +'1.1G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% +'50.1G", " +0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- +'.3G", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 +'1.3G", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- +'3.3G", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "% +'.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%- +'1.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0 +'3.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%0- +'50.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#'1g", "0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-'3g", "0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0'50g", "00000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-'.0g", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#'3.0g", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-'50.0g", "0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0'.1g", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-'1.1g", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#'50.1g", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-'.3g", "0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0'1.3g", "0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-'3.3g", "0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#'.50g", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-'1.50g", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0'3.50g", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-'50.50g", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#'1G", "0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-'3G", "0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0'50G", "00000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-'.0G", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#'3.0G", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-'50.0G", "0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0'.1G", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-'1.1G", "0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#'50.1G", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-'.3G", "0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0'1.3G", "0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-'3.3G", "0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#'.50G", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-'1.50G", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0'3.50G", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-'50.50G", "0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#+'1g", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-+'3g", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0+'50g", "+0000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-+'.0g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#+'3.0g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-+'50.0g", "+0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0+'.1g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-+'1.1g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#+'50.1g", " +0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-+'.3g", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0+'1.3g", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-+'3.3g", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#+'.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-+'1.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0+'3.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-+'50.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#+'1G", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-+'3G", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0+'50G", "+0000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-+'.0G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#+'3.0G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-+'50.0G", "+0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0+'.1G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-+'1.1G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#+'50.1G", " +0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-+'.3G", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0+'1.3G", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-+'3.3G", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#+'.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#-+'1.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0+'3.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0-+'50.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# '1g", " 0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- '3g", " 0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 '50g", " 0000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- '.0g", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# '3.0g", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- '50.0g", " 0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 '.1g", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- '1.1g", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# '50.1g", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- '.3g", " 0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 '1.3g", " 0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- '3.3g", " 0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# '.50g", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- '1.50g", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 '3.50g", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- '50.50g", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# '1G", " 0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- '3G", " 0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 '50G", " 0000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- '.0G", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# '3.0G", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- '50.0G", " 0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 '.1G", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- '1.1G", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# '50.1G", " 0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- '.3G", " 0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 '1.3G", " 0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- '3.3G", " 0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# '.50G", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- '1.50G", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 '3.50G", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- '50.50G", " 0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# +'1g", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- +'3g", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 +'50g", "+0000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- +'.0g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# +'3.0g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- +'50.0g", "+0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 +'.1g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- +'1.1g", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# +'50.1g", " +0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- +'.3g", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 +'1.3g", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- +'3.3g", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# +'.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- +'1.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 +'3.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- +'50.50g", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# +'1G", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- +'3G", "+0.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 +'50G", "+0000000000000000000000000000000000000000.00157143", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- +'.0G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# +'3.0G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- +'50.0G", "+0.002 ", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 +'.1G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- +'1.1G", "+0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# +'50.1G", " +0.002", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- +'.3G", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 +'1.3G", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- +'3.3G", "+0.00157", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%# +'.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#- +'1.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0 +'3.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%#0- +'50.50G", "+0.0015714285714285714922605619037199176091235131025314", { 67, 84, 160, 148, 12, 191, 89, 63 } },
+ { "%'1g", "1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-'3g", "1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0'50g", "0000000000000000000000000000000000000001.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-'.0g", "2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%'3.0g", "2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-'50.0g", "2e-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0'.1g", "2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-'1.1g", "2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%'50.1g", " 2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-'.3g", "1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0'1.3g", "1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-'3.3g", "1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%'.50g", "1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-'1.50g", "1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0'3.50g", "1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-'50.50g", "1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%'1G", "1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-'3G", "1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0'50G", "0000000000000000000000000000000000000001.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-'.0G", "2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%'3.0G", "2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-'50.0G", "2E-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0'.1G", "2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-'1.1G", "2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%'50.1G", " 2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-'.3G", "1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0'1.3G", "1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-'3.3G", "1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%'.50G", "1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-'1.50G", "1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0'3.50G", "1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-'50.50G", "1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%+'1g", "+1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-+'3g", "+1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0+'50g", "+000000000000000000000000000000000000001.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-+'.0g", "+2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%+'3.0g", "+2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-+'50.0g", "+2e-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0+'.1g", "+2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-+'1.1g", "+2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%+'50.1g", " +2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-+'.3g", "+1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0+'1.3g", "+1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-+'3.3g", "+1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%+'.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-+'1.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0+'3.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-+'50.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%+'1G", "+1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-+'3G", "+1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0+'50G", "+000000000000000000000000000000000000001.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-+'.0G", "+2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%+'3.0G", "+2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-+'50.0G", "+2E-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0+'.1G", "+2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-+'1.1G", "+2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%+'50.1G", " +2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-+'.3G", "+1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0+'1.3G", "+1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-+'3.3G", "+1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%+'.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%-+'1.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0+'3.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0-+'50.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% '1g", " 1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- '3g", " 1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 '50g", " 000000000000000000000000000000000000001.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- '.0g", " 2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% '3.0g", " 2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- '50.0g", " 2e-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 '.1g", " 2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- '1.1g", " 2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% '50.1g", " 2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- '.3g", " 1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 '1.3g", " 1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- '3.3g", " 1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% '.50g", " 1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- '1.50g", " 1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 '3.50g", " 1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- '50.50g", " 1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% '1G", " 1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- '3G", " 1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 '50G", " 000000000000000000000000000000000000001.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- '.0G", " 2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% '3.0G", " 2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- '50.0G", " 2E-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 '.1G", " 2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- '1.1G", " 2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% '50.1G", " 2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- '.3G", " 1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 '1.3G", " 1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- '3.3G", " 1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% '.50G", " 1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- '1.50G", " 1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 '3.50G", " 1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- '50.50G", " 1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% +'1g", "+1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- +'3g", "+1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000001.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- +'.0g", "+2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% +'3.0g", "+2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- +'50.0g", "+2e-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 +'.1g", "+2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- +'1.1g", "+2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% +'50.1g", " +2e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- +'.3g", "+1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 +'1.3g", "+1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- +'3.3g", "+1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% +'.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- +'1.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 +'3.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- +'50.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% +'1G", "+1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- +'3G", "+1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000001.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- +'.0G", "+2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% +'3.0G", "+2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- +'50.0G", "+2E-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 +'.1G", "+2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- +'1.1G", "+2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% +'50.1G", " +2E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- +'.3G", "+1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 +'1.3G", "+1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- +'3.3G", "+1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "% +'.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%- +'1.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0 +'3.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%0- +'50.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#'1g", "1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-'3g", "1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0'50g", "0000000000000000000000000000000000000001.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-'.0g", "2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#'3.0g", "2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-'50.0g", "2.e-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0'.1g", "2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-'1.1g", "2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#'50.1g", " 2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-'.3g", "1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0'1.3g", "1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-'3.3g", "1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#'.50g", "1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-'1.50g", "1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0'3.50g", "1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-'50.50g", "1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#'1G", "1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-'3G", "1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0'50G", "0000000000000000000000000000000000000001.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-'.0G", "2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#'3.0G", "2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-'50.0G", "2.E-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0'.1G", "2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-'1.1G", "2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#'50.1G", " 2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-'.3G", "1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0'1.3G", "1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-'3.3G", "1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#'.50G", "1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-'1.50G", "1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0'3.50G", "1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-'50.50G", "1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#+'1g", "+1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-+'3g", "+1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000001.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-+'.0g", "+2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#+'3.0g", "+2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-+'50.0g", "+2.e-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0+'.1g", "+2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-+'1.1g", "+2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#+'50.1g", " +2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-+'.3g", "+1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0+'1.3g", "+1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-+'3.3g", "+1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#+'.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-+'1.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0+'3.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-+'50.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#+'1G", "+1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-+'3G", "+1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000001.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-+'.0G", "+2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#+'3.0G", "+2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-+'50.0G", "+2.E-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0+'.1G", "+2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-+'1.1G", "+2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#+'50.1G", " +2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-+'.3G", "+1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0+'1.3G", "+1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-+'3.3G", "+1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#+'.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#-+'1.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0+'3.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0-+'50.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# '1g", " 1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- '3g", " 1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000001.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- '.0g", " 2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# '3.0g", " 2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- '50.0g", " 2.e-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 '.1g", " 2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- '1.1g", " 2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# '50.1g", " 2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- '.3g", " 1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 '1.3g", " 1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- '3.3g", " 1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# '.50g", " 1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- '1.50g", " 1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 '3.50g", " 1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- '50.50g", " 1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# '1G", " 1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- '3G", " 1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000001.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- '.0G", " 2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# '3.0G", " 2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- '50.0G", " 2.E-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 '.1G", " 2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- '1.1G", " 2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# '50.1G", " 2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- '.3G", " 1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 '1.3G", " 1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- '3.3G", " 1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# '.50G", " 1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- '1.50G", " 1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 '3.50G", " 1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- '50.50G", " 1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# +'1g", "+1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- +'3g", "+1.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000001.57143e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- +'.0g", "+2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# +'3.0g", "+2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- +'50.0g", "+2.e-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 +'.1g", "+2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- +'1.1g", "+2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# +'50.1g", " +2.e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- +'.3g", "+1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 +'1.3g", "+1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- +'3.3g", "+1.57e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# +'.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- +'1.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 +'3.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- +'50.50g", "+1.5714285714285714482148486464962999775707430671901e-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# +'1G", "+1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- +'3G", "+1.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000001.57143E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- +'.0G", "+2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# +'3.0G", "+2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- +'50.0G", "+2.E-06 ", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 +'.1G", "+2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- +'1.1G", "+2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# +'50.1G", " +2.E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- +'.3G", "+1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 +'1.3G", "+1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- +'3.3G", "+1.57E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%# +'.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#- +'1.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0 +'3.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%#0- +'50.50G", "+1.5714285714285714482148486464962999775707430671901E-06", { 222, 153, 139, 252, 59, 93, 186, 62 } },
+ { "%'1g", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-'3g", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0'50g", "000000000000000000000000000000000000000000000000.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-'.0g", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%'3.0g", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-'50.0g", "0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0'.1g", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-'1.1g", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%'50.1g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-'.3g", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0'1.3g", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-'3.3g", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%'.50g", "0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-'1.50g", "0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0'3.50g", "0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-'50.50g", "0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%'1G", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-'3G", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0'50G", "000000000000000000000000000000000000000000000000.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-'.0G", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%'3.0G", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-'50.0G", "0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0'.1G", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-'1.1G", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%'50.1G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-'.3G", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0'1.3G", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-'3.3G", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%'.50G", "0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-'1.50G", "0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0'3.50G", "0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-'50.50G", "0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%+'1g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-+'3g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0+'50g", "+00000000000000000000000000000000000000000000000.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-+'.0g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%+'3.0g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-+'50.0g", "+0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0+'.1g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-+'1.1g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%+'50.1g", " +0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-+'.3g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0+'1.3g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-+'3.3g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%+'.50g", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-+'1.50g", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0+'3.50g", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-+'50.50g", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%+'1G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-+'3G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0+'50G", "+00000000000000000000000000000000000000000000000.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-+'.0G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%+'3.0G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-+'50.0G", "+0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0+'.1G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-+'1.1G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%+'50.1G", " +0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-+'.3G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0+'1.3G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-+'3.3G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%+'.50G", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%-+'1.50G", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0+'3.50G", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0-+'50.50G", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% '1g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- '3g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 '50g", " 00000000000000000000000000000000000000000000000.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- '.0g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% '3.0g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- '50.0g", " 0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 '.1g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- '1.1g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% '50.1g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- '.3g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 '1.3g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- '3.3g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% '.50g", " 0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- '1.50g", " 0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 '3.50g", " 0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- '50.50g", " 0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% '1G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- '3G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 '50G", " 00000000000000000000000000000000000000000000000.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- '.0G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% '3.0G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- '50.0G", " 0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 '.1G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- '1.1G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% '50.1G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- '.3G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 '1.3G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- '3.3G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% '.50G", " 0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- '1.50G", " 0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 '3.50G", " 0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- '50.50G", " 0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% +'1g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- +'3g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 +'50g", "+00000000000000000000000000000000000000000000000.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- +'.0g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% +'3.0g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- +'50.0g", "+0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 +'.1g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- +'1.1g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% +'50.1g", " +0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- +'.3g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 +'1.3g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- +'3.3g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% +'.50g", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- +'1.50g", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 +'3.50g", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- +'50.50g", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% +'1G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- +'3G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 +'50G", "+00000000000000000000000000000000000000000000000.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- +'.0G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% +'3.0G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- +'50.0G", "+0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 +'.1G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- +'1.1G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% +'50.1G", " +0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- +'.3G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 +'1.3G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- +'3.3G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "% +'.50G", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%- +'1.50G", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0 +'3.50G", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%0- +'50.50G", "+0.1000000000000000055511151231257827021181583404541", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#'1g", "0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-'3g", "0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0'50g", "0000000000000000000000000000000000000000000.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-'.0g", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#'3.0g", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-'50.0g", "0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0'.1g", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-'1.1g", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#'50.1g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-'.3g", "0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0'1.3g", "0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-'3.3g", "0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#'.50g", "0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-'1.50g", "0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0'3.50g", "0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-'50.50g", "0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#'1G", "0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-'3G", "0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0'50G", "0000000000000000000000000000000000000000000.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-'.0G", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#'3.0G", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-'50.0G", "0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0'.1G", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-'1.1G", "0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#'50.1G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-'.3G", "0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0'1.3G", "0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-'3.3G", "0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#'.50G", "0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-'1.50G", "0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0'3.50G", "0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-'50.50G", "0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#+'1g", "+0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-+'3g", "+0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000000000.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-+'.0g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#+'3.0g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-+'50.0g", "+0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0+'.1g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-+'1.1g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#+'50.1g", " +0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-+'.3g", "+0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0+'1.3g", "+0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-+'3.3g", "+0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#+'.50g", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-+'1.50g", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0+'3.50g", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-+'50.50g", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#+'1G", "+0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-+'3G", "+0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000000000.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-+'.0G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#+'3.0G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-+'50.0G", "+0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0+'.1G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-+'1.1G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#+'50.1G", " +0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-+'.3G", "+0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0+'1.3G", "+0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-+'3.3G", "+0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#+'.50G", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#-+'1.50G", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0+'3.50G", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0-+'50.50G", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# '1g", " 0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- '3g", " 0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000000000.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- '.0g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# '3.0g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- '50.0g", " 0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 '.1g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- '1.1g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# '50.1g", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- '.3g", " 0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 '1.3g", " 0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- '3.3g", " 0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# '.50g", " 0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- '1.50g", " 0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 '3.50g", " 0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- '50.50g", " 0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# '1G", " 0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- '3G", " 0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000000000.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- '.0G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# '3.0G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- '50.0G", " 0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 '.1G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- '1.1G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# '50.1G", " 0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- '.3G", " 0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 '1.3G", " 0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- '3.3G", " 0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# '.50G", " 0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- '1.50G", " 0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 '3.50G", " 0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- '50.50G", " 0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# +'1g", "+0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- +'3g", "+0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000000000.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- +'.0g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# +'3.0g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- +'50.0g", "+0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 +'.1g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- +'1.1g", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# +'50.1g", " +0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- +'.3g", "+0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 +'1.3g", "+0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- +'3.3g", "+0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# +'.50g", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- +'1.50g", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 +'3.50g", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- +'50.50g", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# +'1G", "+0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- +'3G", "+0.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000000000.100000", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- +'.0G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# +'3.0G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- +'50.0G", "+0.1 ", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 +'.1G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- +'1.1G", "+0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# +'50.1G", " +0.1", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- +'.3G", "+0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 +'1.3G", "+0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- +'3.3G", "+0.100", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%# +'.50G", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#- +'1.50G", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0 +'3.50G", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%#0- +'50.50G", "+0.10000000000000000555111512312578270211815834045410", { 154, 153, 153, 153, 153, 153, 185, 63 } },
+ { "%'1g", "1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-'3g", "1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0'50g", "0000000000000000000000000000000000000000000001e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-'.0g", "1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%'3.0g", "1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-'50.0g", "1e-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0'.1g", "1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-'1.1g", "1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%'50.1g", " 1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-'.3g", "1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0'1.3g", "1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-'3.3g", "1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%'.50g", "9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-'1.50g", "9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0'3.50g", "9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-'50.50g", "9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%'1G", "1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-'3G", "1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0'50G", "0000000000000000000000000000000000000000000001E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-'.0G", "1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%'3.0G", "1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-'50.0G", "1E-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0'.1G", "1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-'1.1G", "1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%'50.1G", " 1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-'.3G", "1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0'1.3G", "1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-'3.3G", "1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%'.50G", "9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-'1.50G", "9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0'3.50G", "9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-'50.50G", "9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%+'1g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-+'3g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0+'50g", "+000000000000000000000000000000000000000000001e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-+'.0g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%+'3.0g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-+'50.0g", "+1e-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0+'.1g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-+'1.1g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%+'50.1g", " +1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-+'.3g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0+'1.3g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-+'3.3g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%+'.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-+'1.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0+'3.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-+'50.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%+'1G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-+'3G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0+'50G", "+000000000000000000000000000000000000000000001E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-+'.0G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%+'3.0G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-+'50.0G", "+1E-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0+'.1G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-+'1.1G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%+'50.1G", " +1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-+'.3G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0+'1.3G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-+'3.3G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%+'.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%-+'1.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0+'3.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0-+'50.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% '1g", " 1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- '3g", " 1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 '50g", " 000000000000000000000000000000000000000000001e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- '.0g", " 1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% '3.0g", " 1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- '50.0g", " 1e-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 '.1g", " 1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- '1.1g", " 1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% '50.1g", " 1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- '.3g", " 1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 '1.3g", " 1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- '3.3g", " 1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% '.50g", " 9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- '1.50g", " 9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 '3.50g", " 9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- '50.50g", " 9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% '1G", " 1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- '3G", " 1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 '50G", " 000000000000000000000000000000000000000000001E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- '.0G", " 1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% '3.0G", " 1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- '50.0G", " 1E-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 '.1G", " 1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- '1.1G", " 1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% '50.1G", " 1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- '.3G", " 1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 '1.3G", " 1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- '3.3G", " 1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% '.50G", " 9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- '1.50G", " 9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 '3.50G", " 9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- '50.50G", " 9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% +'1g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- +'3g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000000000001e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- +'.0g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% +'3.0g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- +'50.0g", "+1e-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 +'.1g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- +'1.1g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% +'50.1g", " +1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- +'.3g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 +'1.3g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- +'3.3g", "+1e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% +'.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- +'1.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 +'3.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- +'50.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% +'1G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- +'3G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000000000001E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- +'.0G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% +'3.0G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- +'50.0G", "+1E-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 +'.1G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- +'1.1G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% +'50.1G", " +1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- +'.3G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 +'1.3G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- +'3.3G", "+1E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "% +'.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%- +'1.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0 +'3.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%0- +'50.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#'1g", "1.00000e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-'3g", "1.00000e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0'50g", "0000000000000000000000000000000000000001.00000e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-'.0g", "1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#'3.0g", "1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-'50.0g", "1.e-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0'.1g", "1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-'1.1g", "1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#'50.1g", " 1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-'.3g", "1.00e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0'1.3g", "1.00e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-'3.3g", "1.00e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#'.50g", "9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-'1.50g", "9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0'3.50g", "9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-'50.50g", "9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#'1G", "1.00000E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-'3G", "1.00000E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0'50G", "0000000000000000000000000000000000000001.00000E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-'.0G", "1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#'3.0G", "1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-'50.0G", "1.E-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0'.1G", "1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-'1.1G", "1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#'50.1G", " 1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-'.3G", "1.00E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0'1.3G", "1.00E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-'3.3G", "1.00E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#'.50G", "9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-'1.50G", "9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0'3.50G", "9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-'50.50G", "9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#+'1g", "+1.00000e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-+'3g", "+1.00000e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000001.00000e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-+'.0g", "+1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#+'3.0g", "+1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-+'50.0g", "+1.e-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0+'.1g", "+1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-+'1.1g", "+1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#+'50.1g", " +1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-+'.3g", "+1.00e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0+'1.3g", "+1.00e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-+'3.3g", "+1.00e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#+'.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-+'1.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0+'3.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-+'50.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#+'1G", "+1.00000E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-+'3G", "+1.00000E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000001.00000E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-+'.0G", "+1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#+'3.0G", "+1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-+'50.0G", "+1.E-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0+'.1G", "+1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-+'1.1G", "+1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#+'50.1G", " +1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-+'.3G", "+1.00E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0+'1.3G", "+1.00E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-+'3.3G", "+1.00E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#+'.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#-+'1.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0+'3.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0-+'50.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# '1g", " 1.00000e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- '3g", " 1.00000e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000001.00000e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- '.0g", " 1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# '3.0g", " 1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- '50.0g", " 1.e-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 '.1g", " 1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- '1.1g", " 1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# '50.1g", " 1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- '.3g", " 1.00e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 '1.3g", " 1.00e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- '3.3g", " 1.00e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# '.50g", " 9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- '1.50g", " 9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 '3.50g", " 9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- '50.50g", " 9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# '1G", " 1.00000E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- '3G", " 1.00000E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000001.00000E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- '.0G", " 1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# '3.0G", " 1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- '50.0G", " 1.E-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 '.1G", " 1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- '1.1G", " 1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# '50.1G", " 1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- '.3G", " 1.00E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 '1.3G", " 1.00E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- '3.3G", " 1.00E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# '.50G", " 9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- '1.50G", " 9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 '3.50G", " 9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- '50.50G", " 9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# +'1g", "+1.00000e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- +'3g", "+1.00000e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000001.00000e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- +'.0g", "+1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# +'3.0g", "+1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- +'50.0g", "+1.e-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 +'.1g", "+1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- +'1.1g", "+1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# +'50.1g", " +1.e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- +'.3g", "+1.00e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 +'1.3g", "+1.00e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- +'3.3g", "+1.00e-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# +'.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- +'1.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 +'3.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- +'50.50g", "+9.9999999999999995474811182588625868561393872369081e-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# +'1G", "+1.00000E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- +'3G", "+1.00000E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000001.00000E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- +'.0G", "+1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# +'3.0G", "+1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- +'50.0G", "+1.E-06 ", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 +'.1G", "+1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- +'1.1G", "+1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# +'50.1G", " +1.E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- +'.3G", "+1.00E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 +'1.3G", "+1.00E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- +'3.3G", "+1.00E-06", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%# +'.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#- +'1.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0 +'3.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%#0- +'50.50G", "+9.9999999999999995474811182588625868561393872369081E-07", { 141, 237, 181, 160, 247, 198, 176, 62 } },
+ { "%'1g", "100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-'3g", "100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0'50g", "0000000000000000000000000000000000000000000100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-'.0g", "1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%'3.0g", "1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-'50.0g", "1e+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0'.1g", "1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-'1.1g", "1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%'50.1g", " 1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-'.3g", "1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0'1.3g", "1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-'3.3g", "1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%'.50g", "100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-'1.50g", "100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0'3.50g", "100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-'50.50g", "100,000 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%'1G", "100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-'3G", "100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0'50G", "0000000000000000000000000000000000000000000100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-'.0G", "1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%'3.0G", "1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-'50.0G", "1E+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0'.1G", "1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-'1.1G", "1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%'50.1G", " 1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-'.3G", "1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0'1.3G", "1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-'3.3G", "1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%'.50G", "100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-'1.50G", "100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0'3.50G", "100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-'50.50G", "100,000 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%+'1g", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-+'3g", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0+'50g", "+000000000000000000000000000000000000000000100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-+'.0g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%+'3.0g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-+'50.0g", "+1e+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0+'.1g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-+'1.1g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%+'50.1g", " +1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-+'.3g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0+'1.3g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-+'3.3g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%+'.50g", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-+'1.50g", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0+'3.50g", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-+'50.50g", "+100,000 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%+'1G", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-+'3G", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0+'50G", "+000000000000000000000000000000000000000000100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-+'.0G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%+'3.0G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-+'50.0G", "+1E+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0+'.1G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-+'1.1G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%+'50.1G", " +1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-+'.3G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0+'1.3G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-+'3.3G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%+'.50G", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%-+'1.50G", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0+'3.50G", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0-+'50.50G", "+100,000 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% '1g", " 100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- '3g", " 100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 '50g", " 000000000000000000000000000000000000000000100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- '.0g", " 1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% '3.0g", " 1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- '50.0g", " 1e+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 '.1g", " 1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- '1.1g", " 1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% '50.1g", " 1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- '.3g", " 1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 '1.3g", " 1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- '3.3g", " 1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% '.50g", " 100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- '1.50g", " 100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 '3.50g", " 100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- '50.50g", " 100,000 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% '1G", " 100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- '3G", " 100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 '50G", " 000000000000000000000000000000000000000000100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- '.0G", " 1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% '3.0G", " 1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- '50.0G", " 1E+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 '.1G", " 1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- '1.1G", " 1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% '50.1G", " 1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- '.3G", " 1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 '1.3G", " 1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- '3.3G", " 1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% '.50G", " 100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- '1.50G", " 100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 '3.50G", " 100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- '50.50G", " 100,000 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% +'1g", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- +'3g", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000000000100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- +'.0g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% +'3.0g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- +'50.0g", "+1e+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 +'.1g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- +'1.1g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% +'50.1g", " +1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- +'.3g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 +'1.3g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- +'3.3g", "+1e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% +'.50g", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- +'1.50g", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 +'3.50g", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- +'50.50g", "+100,000 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% +'1G", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- +'3G", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000000000100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- +'.0G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% +'3.0G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- +'50.0G", "+1E+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 +'.1G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- +'1.1G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% +'50.1G", " +1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- +'.3G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 +'1.3G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- +'3.3G", "+1E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "% +'.50G", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%- +'1.50G", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0 +'3.50G", "+100,000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%0- +'50.50G", "+100,000 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#'1g", "100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-'3g", "100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0'50g", "000000000000000000000000000000000000000000100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-'.0g", "1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#'3.0g", "1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-'50.0g", "1.e+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0'.1g", "1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-'1.1g", "1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#'50.1g", " 1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-'.3g", "1.00e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0'1.3g", "1.00e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-'3.3g", "1.00e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#'.50g", "100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-'1.50g", "100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0'3.50g", "100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-'50.50g", "100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#'1G", "100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-'3G", "100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0'50G", "000000000000000000000000000000000000000000100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-'.0G", "1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#'3.0G", "1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-'50.0G", "1.E+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0'.1G", "1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-'1.1G", "1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#'50.1G", " 1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-'.3G", "1.00E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0'1.3G", "1.00E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-'3.3G", "1.00E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#'.50G", "100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-'1.50G", "100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0'3.50G", "100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-'50.50G", "100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#+'1g", "+100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-+'3g", "+100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0+'50g", "+00000000000000000000000000000000000000000100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-+'.0g", "+1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#+'3.0g", "+1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-+'50.0g", "+1.e+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0+'.1g", "+1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-+'1.1g", "+1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#+'50.1g", " +1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-+'.3g", "+1.00e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0+'1.3g", "+1.00e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-+'3.3g", "+1.00e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#+'.50g", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-+'1.50g", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0+'3.50g", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-+'50.50g", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#+'1G", "+100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-+'3G", "+100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0+'50G", "+00000000000000000000000000000000000000000100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-+'.0G", "+1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#+'3.0G", "+1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-+'50.0G", "+1.E+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0+'.1G", "+1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-+'1.1G", "+1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#+'50.1G", " +1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-+'.3G", "+1.00E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0+'1.3G", "+1.00E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-+'3.3G", "+1.00E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#+'.50G", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#-+'1.50G", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0+'3.50G", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0-+'50.50G", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# '1g", " 100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- '3g", " 100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 '50g", " 00000000000000000000000000000000000000000100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- '.0g", " 1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# '3.0g", " 1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- '50.0g", " 1.e+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 '.1g", " 1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- '1.1g", " 1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# '50.1g", " 1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- '.3g", " 1.00e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 '1.3g", " 1.00e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- '3.3g", " 1.00e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# '.50g", " 100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- '1.50g", " 100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 '3.50g", " 100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- '50.50g", " 100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# '1G", " 100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- '3G", " 100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 '50G", " 00000000000000000000000000000000000000000100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- '.0G", " 1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# '3.0G", " 1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- '50.0G", " 1.E+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 '.1G", " 1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- '1.1G", " 1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# '50.1G", " 1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- '.3G", " 1.00E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 '1.3G", " 1.00E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- '3.3G", " 1.00E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# '.50G", " 100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- '1.50G", " 100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 '3.50G", " 100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- '50.50G", " 100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# +'1g", "+100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- +'3g", "+100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 +'50g", "+00000000000000000000000000000000000000000100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- +'.0g", "+1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# +'3.0g", "+1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- +'50.0g", "+1.e+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 +'.1g", "+1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- +'1.1g", "+1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# +'50.1g", " +1.e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- +'.3g", "+1.00e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 +'1.3g", "+1.00e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- +'3.3g", "+1.00e+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# +'.50g", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- +'1.50g", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 +'3.50g", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- +'50.50g", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# +'1G", "+100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- +'3G", "+100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 +'50G", "+00000000000000000000000000000000000000000100,000.", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- +'.0G", "+1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# +'3.0G", "+1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- +'50.0G", "+1.E+05 ", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 +'.1G", "+1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- +'1.1G", "+1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# +'50.1G", " +1.E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- +'.3G", "+1.00E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 +'1.3G", "+1.00E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- +'3.3G", "+1.00E+05", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%# +'.50G", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#- +'1.50G", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0 +'3.50G", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%#0- +'50.50G", "+100,000.00000000000000000000000000000000000000000000", { 0, 0, 0, 0, 0, 106, 248, 64 } },
+ { "%'1g", "3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-'3g", "3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0'50g", "00000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-'.0g", "3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%'3.0g", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-'50.0g", "3 ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0'.1g", "3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-'1.1g", "3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%'50.1g", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-'.3g", "3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0'1.3g", "3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-'3.3g", "3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%'.50g", "3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-'1.50g", "3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0'3.50g", "3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-'50.50g", "3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%'1G", "3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-'3G", "3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0'50G", "00000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-'.0G", "3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%'3.0G", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-'50.0G", "3 ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0'.1G", "3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-'1.1G", "3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%'50.1G", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-'.3G", "3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0'1.3G", "3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-'3.3G", "3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%'.50G", "3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-'1.50G", "3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0'3.50G", "3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-'50.50G", "3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%+'1g", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-+'3g", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0+'50g", "+0000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-+'.0g", "+3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%+'3.0g", " +3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-+'50.0g", "+3 ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0+'.1g", "+3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-+'1.1g", "+3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%+'50.1g", " +3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-+'.3g", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0+'1.3g", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-+'3.3g", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%+'.50g", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-+'1.50g", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0+'3.50g", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-+'50.50g", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%+'1G", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-+'3G", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0+'50G", "+0000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-+'.0G", "+3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%+'3.0G", " +3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-+'50.0G", "+3 ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0+'.1G", "+3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-+'1.1G", "+3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%+'50.1G", " +3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-+'.3G", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0+'1.3G", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-+'3.3G", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%+'.50G", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%-+'1.50G", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0+'3.50G", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0-+'50.50G", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% '1g", " 3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- '3g", " 3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 '50g", " 0000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- '.0g", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% '3.0g", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- '50.0g", " 3 ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 '.1g", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- '1.1g", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% '50.1g", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- '.3g", " 3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 '1.3g", " 3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- '3.3g", " 3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% '.50g", " 3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- '1.50g", " 3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 '3.50g", " 3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- '50.50g", " 3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% '1G", " 3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- '3G", " 3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 '50G", " 0000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- '.0G", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% '3.0G", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- '50.0G", " 3 ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 '.1G", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- '1.1G", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% '50.1G", " 3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- '.3G", " 3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 '1.3G", " 3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- '3.3G", " 3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% '.50G", " 3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- '1.50G", " 3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 '3.50G", " 3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- '50.50G", " 3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% +'1g", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- +'3g", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 +'50g", "+0000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- +'.0g", "+3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% +'3.0g", " +3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- +'50.0g", "+3 ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 +'.1g", "+3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- +'1.1g", "+3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% +'50.1g", " +3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- +'.3g", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 +'1.3g", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- +'3.3g", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% +'.50g", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- +'1.50g", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 +'3.50g", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- +'50.50g", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% +'1G", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- +'3G", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 +'50G", "+0000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- +'.0G", "+3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% +'3.0G", " +3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- +'50.0G", "+3 ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 +'.1G", "+3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- +'1.1G", "+3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% +'50.1G", " +3", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- +'.3G", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 +'1.3G", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- +'3.3G", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "% +'.50G", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%- +'1.50G", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0 +'3.50G", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%0- +'50.50G", "+3.141592653589793115997963468544185161590576171875", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#'1g", "3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-'3g", "3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0'50g", "00000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-'.0g", "3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#'3.0g", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-'50.0g", "3. ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0'.1g", "3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-'1.1g", "3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#'50.1g", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-'.3g", "3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0'1.3g", "3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-'3.3g", "3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#'.50g", "3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-'1.50g", "3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0'3.50g", "3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-'50.50g", "3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#'1G", "3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-'3G", "3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0'50G", "00000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-'.0G", "3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#'3.0G", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-'50.0G", "3. ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0'.1G", "3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-'1.1G", "3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#'50.1G", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-'.3G", "3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0'1.3G", "3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-'3.3G", "3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#'.50G", "3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-'1.50G", "3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0'3.50G", "3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-'50.50G", "3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#+'1g", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-+'3g", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0+'50g", "+0000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-+'.0g", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#+'3.0g", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-+'50.0g", "+3. ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0+'.1g", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-+'1.1g", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#+'50.1g", " +3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-+'.3g", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0+'1.3g", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-+'3.3g", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#+'.50g", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-+'1.50g", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0+'3.50g", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-+'50.50g", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#+'1G", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-+'3G", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0+'50G", "+0000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-+'.0G", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#+'3.0G", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-+'50.0G", "+3. ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0+'.1G", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-+'1.1G", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#+'50.1G", " +3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-+'.3G", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0+'1.3G", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-+'3.3G", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#+'.50G", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#-+'1.50G", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0+'3.50G", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0-+'50.50G", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# '1g", " 3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- '3g", " 3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 '50g", " 0000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- '.0g", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# '3.0g", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- '50.0g", " 3. ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 '.1g", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- '1.1g", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# '50.1g", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- '.3g", " 3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 '1.3g", " 3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- '3.3g", " 3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# '.50g", " 3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- '1.50g", " 3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 '3.50g", " 3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- '50.50g", " 3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# '1G", " 3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- '3G", " 3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 '50G", " 0000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- '.0G", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# '3.0G", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- '50.0G", " 3. ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 '.1G", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- '1.1G", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# '50.1G", " 3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- '.3G", " 3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 '1.3G", " 3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- '3.3G", " 3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# '.50G", " 3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- '1.50G", " 3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 '3.50G", " 3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- '50.50G", " 3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# +'1g", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- +'3g", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 +'50g", "+0000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- +'.0g", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# +'3.0g", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- +'50.0g", "+3. ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 +'.1g", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- +'1.1g", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# +'50.1g", " +3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- +'.3g", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 +'1.3g", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- +'3.3g", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# +'.50g", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- +'1.50g", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 +'3.50g", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- +'50.50g", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# +'1G", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- +'3G", "+3.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 +'50G", "+0000000000000000000000000000000000000000003.14159", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- +'.0G", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# +'3.0G", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- +'50.0G", "+3. ", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 +'.1G", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- +'1.1G", "+3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# +'50.1G", " +3.", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- +'.3G", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 +'1.3G", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- +'3.3G", "+3.14", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%# +'.50G", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#- +'1.50G", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0 +'3.50G", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%#0- +'50.50G", "+3.1415926535897931159979634685441851615905761718750", { 24, 45, 68, 84, 251, 33, 9, 64 } },
+ { "%'1g", "3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-'3g", "3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0'50g", "0000000000000000000000000000000000000003.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-'.0g", "3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%'3.0g", "3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-'50.0g", "3e-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0'.1g", "3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-'1.1g", "3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%'50.1g", " 3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-'.3g", "3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0'1.3g", "3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-'3.3g", "3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%'.50g", "3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-'1.50g", "3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0'3.50g", "3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-'50.50g", "3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%'1G", "3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-'3G", "3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0'50G", "0000000000000000000000000000000000000003.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-'.0G", "3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%'3.0G", "3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-'50.0G", "3E-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0'.1G", "3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-'1.1G", "3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%'50.1G", " 3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-'.3G", "3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0'1.3G", "3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-'3.3G", "3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%'.50G", "3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-'1.50G", "3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0'3.50G", "3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-'50.50G", "3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%+'1g", "+3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-+'3g", "+3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0+'50g", "+000000000000000000000000000000000000003.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-+'.0g", "+3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%+'3.0g", "+3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-+'50.0g", "+3e-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0+'.1g", "+3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-+'1.1g", "+3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%+'50.1g", " +3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-+'.3g", "+3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0+'1.3g", "+3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-+'3.3g", "+3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%+'.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-+'1.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0+'3.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-+'50.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%+'1G", "+3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-+'3G", "+3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0+'50G", "+000000000000000000000000000000000000003.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-+'.0G", "+3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%+'3.0G", "+3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-+'50.0G", "+3E-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0+'.1G", "+3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-+'1.1G", "+3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%+'50.1G", " +3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-+'.3G", "+3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0+'1.3G", "+3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-+'3.3G", "+3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%+'.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%-+'1.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0+'3.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0-+'50.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% '1g", " 3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- '3g", " 3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 '50g", " 000000000000000000000000000000000000003.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- '.0g", " 3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% '3.0g", " 3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- '50.0g", " 3e-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 '.1g", " 3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- '1.1g", " 3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% '50.1g", " 3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- '.3g", " 3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 '1.3g", " 3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- '3.3g", " 3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% '.50g", " 3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- '1.50g", " 3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 '3.50g", " 3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- '50.50g", " 3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% '1G", " 3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- '3G", " 3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 '50G", " 000000000000000000000000000000000000003.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- '.0G", " 3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% '3.0G", " 3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- '50.0G", " 3E-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 '.1G", " 3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- '1.1G", " 3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% '50.1G", " 3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- '.3G", " 3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 '1.3G", " 3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- '3.3G", " 3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% '.50G", " 3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- '1.50G", " 3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 '3.50G", " 3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- '50.50G", " 3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% +'1g", "+3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- +'3g", "+3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000003.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- +'.0g", "+3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% +'3.0g", "+3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- +'50.0g", "+3e-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 +'.1g", "+3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- +'1.1g", "+3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% +'50.1g", " +3e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- +'.3g", "+3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 +'1.3g", "+3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- +'3.3g", "+3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% +'.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- +'1.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 +'3.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- +'50.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% +'1G", "+3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- +'3G", "+3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000003.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- +'.0G", "+3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% +'3.0G", "+3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- +'50.0G", "+3E-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 +'.1G", "+3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- +'1.1G", "+3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% +'50.1G", " +3E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- +'.3G", "+3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 +'1.3G", "+3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- +'3.3G", "+3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "% +'.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%- +'1.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0 +'3.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%0- +'50.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#'1g", "3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-'3g", "3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0'50g", "0000000000000000000000000000000000000003.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-'.0g", "3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#'3.0g", "3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-'50.0g", "3.e-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0'.1g", "3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-'1.1g", "3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#'50.1g", " 3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-'.3g", "3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0'1.3g", "3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-'3.3g", "3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#'.50g", "3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-'1.50g", "3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0'3.50g", "3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-'50.50g", "3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#'1G", "3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-'3G", "3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0'50G", "0000000000000000000000000000000000000003.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-'.0G", "3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#'3.0G", "3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-'50.0G", "3.E-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0'.1G", "3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-'1.1G", "3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#'50.1G", " 3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-'.3G", "3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0'1.3G", "3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-'3.3G", "3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#'.50G", "3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-'1.50G", "3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0'3.50G", "3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-'50.50G", "3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#+'1g", "+3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-+'3g", "+3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000003.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-+'.0g", "+3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#+'3.0g", "+3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-+'50.0g", "+3.e-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0+'.1g", "+3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-+'1.1g", "+3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#+'50.1g", " +3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-+'.3g", "+3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0+'1.3g", "+3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-+'3.3g", "+3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#+'.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-+'1.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0+'3.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-+'50.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#+'1G", "+3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-+'3G", "+3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000003.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-+'.0G", "+3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#+'3.0G", "+3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-+'50.0G", "+3.E-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0+'.1G", "+3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-+'1.1G", "+3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#+'50.1G", " +3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-+'.3G", "+3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0+'1.3G", "+3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-+'3.3G", "+3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#+'.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#-+'1.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0+'3.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0-+'50.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# '1g", " 3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- '3g", " 3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000003.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- '.0g", " 3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# '3.0g", " 3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- '50.0g", " 3.e-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 '.1g", " 3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- '1.1g", " 3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# '50.1g", " 3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- '.3g", " 3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 '1.3g", " 3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- '3.3g", " 3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# '.50g", " 3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- '1.50g", " 3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 '3.50g", " 3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- '50.50g", " 3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# '1G", " 3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- '3G", " 3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000003.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- '.0G", " 3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# '3.0G", " 3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- '50.0G", " 3.E-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 '.1G", " 3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- '1.1G", " 3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# '50.1G", " 3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- '.3G", " 3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 '1.3G", " 3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- '3.3G", " 3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# '.50G", " 3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- '1.50G", " 3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 '3.50G", " 3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- '50.50G", " 3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# +'1g", "+3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- +'3g", "+3.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000003.14159e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- +'.0g", "+3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# +'3.0g", "+3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- +'50.0g", "+3.e-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 +'.1g", "+3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- +'1.1g", "+3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# +'50.1g", " +3.e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- +'.3g", "+3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 +'1.3g", "+3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- +'3.3g", "+3.14e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# +'.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- +'1.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 +'3.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- +'50.50g", "+3.1415926535897932727069897539156880721183917323596e-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# +'1G", "+3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- +'3G", "+3.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000003.14159E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- +'.0G", "+3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# +'3.0G", "+3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- +'50.0G", "+3.E-50 ", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 +'.1G", "+3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- +'1.1G", "+3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# +'50.1G", " +3.E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- +'.3G", "+3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 +'1.3G", "+3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- +'3.3G", "+3.14E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%# +'.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#- +'1.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0 +'3.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%#0- +'50.50G", "+3.1415926535897932727069897539156880721183917323596E-50", { 33, 92, 244, 141, 24, 130, 167, 53 } },
+ { "%'1g", "3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-'3g", "3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0'50g", "0000000000000000000000000000000000000003.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-'.0g", "3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%'3.0g", "3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-'50.0g", "3e+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0'.1g", "3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-'1.1g", "3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%'50.1g", " 3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-'.3g", "3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0'1.3g", "3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-'3.3g", "3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%'.50g", "3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-'1.50g", "3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0'3.50g", "3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-'50.50g", "3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%'1G", "3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-'3G", "3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0'50G", "0000000000000000000000000000000000000003.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-'.0G", "3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%'3.0G", "3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-'50.0G", "3E+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0'.1G", "3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-'1.1G", "3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%'50.1G", " 3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-'.3G", "3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0'1.3G", "3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-'3.3G", "3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%'.50G", "3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-'1.50G", "3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0'3.50G", "3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-'50.50G", "3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%+'1g", "+3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-+'3g", "+3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0+'50g", "+000000000000000000000000000000000000003.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-+'.0g", "+3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%+'3.0g", "+3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-+'50.0g", "+3e+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0+'.1g", "+3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-+'1.1g", "+3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%+'50.1g", " +3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-+'.3g", "+3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0+'1.3g", "+3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-+'3.3g", "+3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%+'.50g", "+3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-+'1.50g", "+3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0+'3.50g", "+3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-+'50.50g", "+3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%+'1G", "+3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-+'3G", "+3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0+'50G", "+000000000000000000000000000000000000003.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-+'.0G", "+3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%+'3.0G", "+3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-+'50.0G", "+3E+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0+'.1G", "+3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-+'1.1G", "+3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%+'50.1G", " +3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-+'.3G", "+3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0+'1.3G", "+3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-+'3.3G", "+3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%+'.50G", "+3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%-+'1.50G", "+3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0+'3.50G", "+3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0-+'50.50G", "+3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% '1g", " 3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- '3g", " 3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 '50g", " 000000000000000000000000000000000000003.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- '.0g", " 3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% '3.0g", " 3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- '50.0g", " 3e+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 '.1g", " 3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- '1.1g", " 3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% '50.1g", " 3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- '.3g", " 3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 '1.3g", " 3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- '3.3g", " 3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% '.50g", " 3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- '1.50g", " 3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 '3.50g", " 3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- '50.50g", " 3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% '1G", " 3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- '3G", " 3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 '50G", " 000000000000000000000000000000000000003.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- '.0G", " 3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% '3.0G", " 3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- '50.0G", " 3E+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 '.1G", " 3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- '1.1G", " 3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% '50.1G", " 3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- '.3G", " 3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 '1.3G", " 3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- '3.3G", " 3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% '.50G", " 3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- '1.50G", " 3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 '3.50G", " 3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- '50.50G", " 3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% +'1g", "+3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- +'3g", "+3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000003.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- +'.0g", "+3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% +'3.0g", "+3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- +'50.0g", "+3e+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 +'.1g", "+3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- +'1.1g", "+3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% +'50.1g", " +3e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- +'.3g", "+3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 +'1.3g", "+3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- +'3.3g", "+3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% +'.50g", "+3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- +'1.50g", "+3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 +'3.50g", "+3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- +'50.50g", "+3.141592653589793652864438172706023653335508189184e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% +'1G", "+3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- +'3G", "+3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000003.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- +'.0G", "+3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% +'3.0G", "+3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- +'50.0G", "+3E+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 +'.1G", "+3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- +'1.1G", "+3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% +'50.1G", " +3E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- +'.3G", "+3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 +'1.3G", "+3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- +'3.3G", "+3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "% +'.50G", "+3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%- +'1.50G", "+3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0 +'3.50G", "+3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%0- +'50.50G", "+3.141592653589793652864438172706023653335508189184E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#'1g", "3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-'3g", "3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0'50g", "0000000000000000000000000000000000000003.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-'.0g", "3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#'3.0g", "3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-'50.0g", "3.e+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0'.1g", "3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-'1.1g", "3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#'50.1g", " 3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-'.3g", "3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0'1.3g", "3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-'3.3g", "3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#'.50g", "3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-'1.50g", "3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0'3.50g", "3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-'50.50g", "3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#'1G", "3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-'3G", "3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0'50G", "0000000000000000000000000000000000000003.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-'.0G", "3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#'3.0G", "3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-'50.0G", "3.E+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0'.1G", "3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-'1.1G", "3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#'50.1G", " 3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-'.3G", "3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0'1.3G", "3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-'3.3G", "3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#'.50G", "3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-'1.50G", "3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0'3.50G", "3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-'50.50G", "3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#+'1g", "+3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-+'3g", "+3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000003.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-+'.0g", "+3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#+'3.0g", "+3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-+'50.0g", "+3.e+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0+'.1g", "+3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-+'1.1g", "+3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#+'50.1g", " +3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-+'.3g", "+3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0+'1.3g", "+3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-+'3.3g", "+3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#+'.50g", "+3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-+'1.50g", "+3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0+'3.50g", "+3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-+'50.50g", "+3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#+'1G", "+3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-+'3G", "+3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000003.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-+'.0G", "+3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#+'3.0G", "+3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-+'50.0G", "+3.E+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0+'.1G", "+3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-+'1.1G", "+3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#+'50.1G", " +3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-+'.3G", "+3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0+'1.3G", "+3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-+'3.3G", "+3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#+'.50G", "+3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#-+'1.50G", "+3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0+'3.50G", "+3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0-+'50.50G", "+3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# '1g", " 3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- '3g", " 3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000003.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- '.0g", " 3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# '3.0g", " 3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- '50.0g", " 3.e+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 '.1g", " 3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- '1.1g", " 3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# '50.1g", " 3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- '.3g", " 3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 '1.3g", " 3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- '3.3g", " 3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# '.50g", " 3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- '1.50g", " 3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 '3.50g", " 3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- '50.50g", " 3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# '1G", " 3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- '3G", " 3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000003.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- '.0G", " 3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# '3.0G", " 3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- '50.0G", " 3.E+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 '.1G", " 3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- '1.1G", " 3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# '50.1G", " 3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- '.3G", " 3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 '1.3G", " 3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- '3.3G", " 3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# '.50G", " 3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- '1.50G", " 3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 '3.50G", " 3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- '50.50G", " 3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# +'1g", "+3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- +'3g", "+3.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000003.14159e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- +'.0g", "+3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# +'3.0g", "+3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- +'50.0g", "+3.e+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 +'.1g", "+3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- +'1.1g", "+3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# +'50.1g", " +3.e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- +'.3g", "+3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 +'1.3g", "+3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- +'3.3g", "+3.14e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# +'.50g", "+3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- +'1.50g", "+3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 +'3.50g", "+3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- +'50.50g", "+3.1415926535897936528644381727060236533355081891840e+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# +'1G", "+3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- +'3G", "+3.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000003.14159E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- +'.0G", "+3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# +'3.0G", "+3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- +'50.0G", "+3.E+50 ", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 +'.1G", "+3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- +'1.1G", "+3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# +'50.1G", " +3.E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- +'.3G", "+3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 +'1.3G", "+3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- +'3.3G", "+3.14E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%# +'.50G", "+3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#- +'1.50G", "+3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0 +'3.50G", "+3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%#0- +'50.50G", "+3.1415926535897936528644381727060236533355081891840E+50", { 209, 124, 155, 149, 155, 222, 106, 74 } },
+ { "%'1g", "2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-'3g", "2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0'50g", "00000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-'.0g", "3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%'3.0g", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-'50.0g", "3 ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0'.1g", "3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-'1.1g", "3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%'50.1g", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-'.3g", "2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0'1.3g", "2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-'3.3g", "2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%'.50g", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-'1.50g", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0'3.50g", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-'50.50g", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%'1G", "2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-'3G", "2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0'50G", "00000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-'.0G", "3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%'3.0G", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-'50.0G", "3 ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0'.1G", "3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-'1.1G", "3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%'50.1G", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-'.3G", "2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0'1.3G", "2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-'3.3G", "2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%'.50G", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-'1.50G", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0'3.50G", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-'50.50G", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%+'1g", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-+'3g", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0+'50g", "+0000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-+'.0g", "+3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%+'3.0g", " +3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-+'50.0g", "+3 ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0+'.1g", "+3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-+'1.1g", "+3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%+'50.1g", " +3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-+'.3g", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0+'1.3g", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-+'3.3g", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%+'.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-+'1.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0+'3.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-+'50.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%+'1G", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-+'3G", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0+'50G", "+0000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-+'.0G", "+3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%+'3.0G", " +3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-+'50.0G", "+3 ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0+'.1G", "+3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-+'1.1G", "+3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%+'50.1G", " +3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-+'.3G", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0+'1.3G", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-+'3.3G", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%+'.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%-+'1.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0+'3.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0-+'50.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% '1g", " 2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- '3g", " 2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 '50g", " 0000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- '.0g", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% '3.0g", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- '50.0g", " 3 ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 '.1g", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- '1.1g", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% '50.1g", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- '.3g", " 2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 '1.3g", " 2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- '3.3g", " 2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% '.50g", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- '1.50g", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 '3.50g", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- '50.50g", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% '1G", " 2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- '3G", " 2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 '50G", " 0000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- '.0G", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% '3.0G", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- '50.0G", " 3 ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 '.1G", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- '1.1G", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% '50.1G", " 3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- '.3G", " 2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 '1.3G", " 2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- '3.3G", " 2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% '.50G", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- '1.50G", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 '3.50G", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- '50.50G", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% +'1g", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- +'3g", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 +'50g", "+0000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- +'.0g", "+3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% +'3.0g", " +3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- +'50.0g", "+3 ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 +'.1g", "+3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- +'1.1g", "+3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% +'50.1g", " +3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- +'.3g", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 +'1.3g", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- +'3.3g", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% +'.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- +'1.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 +'3.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- +'50.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% +'1G", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- +'3G", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 +'50G", "+0000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- +'.0G", "+3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% +'3.0G", " +3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- +'50.0G", "+3 ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 +'.1G", "+3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- +'1.1G", "+3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% +'50.1G", " +3", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- +'.3G", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 +'1.3G", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- +'3.3G", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "% +'.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%- +'1.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0 +'3.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%0- +'50.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#'1g", "2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-'3g", "2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0'50g", "00000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-'.0g", "3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#'3.0g", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-'50.0g", "3. ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0'.1g", "3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-'1.1g", "3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#'50.1g", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-'.3g", "2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0'1.3g", "2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-'3.3g", "2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#'.50g", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-'1.50g", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0'3.50g", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-'50.50g", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#'1G", "2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-'3G", "2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0'50G", "00000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-'.0G", "3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#'3.0G", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-'50.0G", "3. ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0'.1G", "3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-'1.1G", "3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#'50.1G", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-'.3G", "2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0'1.3G", "2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-'3.3G", "2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#'.50G", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-'1.50G", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0'3.50G", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-'50.50G", "2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#+'1g", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-+'3g", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0+'50g", "+0000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-+'.0g", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#+'3.0g", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-+'50.0g", "+3. ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0+'.1g", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-+'1.1g", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#+'50.1g", " +3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-+'.3g", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0+'1.3g", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-+'3.3g", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#+'.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-+'1.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0+'3.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-+'50.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#+'1G", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-+'3G", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0+'50G", "+0000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-+'.0G", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#+'3.0G", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-+'50.0G", "+3. ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0+'.1G", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-+'1.1G", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#+'50.1G", " +3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-+'.3G", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0+'1.3G", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-+'3.3G", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#+'.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#-+'1.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0+'3.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0-+'50.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# '1g", " 2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- '3g", " 2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 '50g", " 0000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- '.0g", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# '3.0g", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- '50.0g", " 3. ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 '.1g", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- '1.1g", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# '50.1g", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- '.3g", " 2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 '1.3g", " 2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- '3.3g", " 2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# '.50g", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- '1.50g", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 '3.50g", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- '50.50g", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# '1G", " 2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- '3G", " 2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 '50G", " 0000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- '.0G", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# '3.0G", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- '50.0G", " 3. ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 '.1G", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- '1.1G", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# '50.1G", " 3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- '.3G", " 2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 '1.3G", " 2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- '3.3G", " 2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# '.50G", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- '1.50G", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 '3.50G", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- '50.50G", " 2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# +'1g", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- +'3g", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 +'50g", "+0000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- +'.0g", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# +'3.0g", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- +'50.0g", "+3. ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 +'.1g", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- +'1.1g", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# +'50.1g", " +3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- +'.3g", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 +'1.3g", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- +'3.3g", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# +'.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- +'1.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 +'3.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- +'50.50g", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# +'1G", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- +'3G", "+2.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 +'50G", "+0000000000000000000000000000000000000000002.71828", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- +'.0G", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# +'3.0G", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- +'50.0G", "+3. ", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 +'.1G", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- +'1.1G", "+3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# +'50.1G", " +3.", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- +'.3G", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 +'1.3G", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- +'3.3G", "+2.72", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%# +'.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#- +'1.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0 +'3.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%#0- +'50.50G", "+2.7182818284590450907955982984276488423347473144531", { 105, 87, 20, 139, 10, 191, 5, 64 } },
+ { "%'1g", "1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-'3g", "1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0'50g", "000000000000000000000000000000000000000000001.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-'.0g", "1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%'3.0g", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-'50.0g", "1 ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0'.1g", "1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-'1.1g", "1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%'50.1g", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-'.3g", "1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0'1.3g", "1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-'3.3g", "1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%'.50g", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-'1.50g", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0'3.50g", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-'50.50g", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%'1G", "1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-'3G", "1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0'50G", "000000000000000000000000000000000000000000001.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-'.0G", "1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%'3.0G", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-'50.0G", "1 ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0'.1G", "1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-'1.1G", "1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%'50.1G", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-'.3G", "1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0'1.3G", "1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-'3.3G", "1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%'.50G", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-'1.50G", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0'3.50G", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-'50.50G", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%+'1g", "+1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-+'3g", "+1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0+'50g", "+00000000000000000000000000000000000000000001.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-+'.0g", "+1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%+'3.0g", " +1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-+'50.0g", "+1 ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0+'.1g", "+1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-+'1.1g", "+1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%+'50.1g", " +1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-+'.3g", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0+'1.3g", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-+'3.3g", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%+'.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-+'1.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0+'3.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-+'50.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%+'1G", "+1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-+'3G", "+1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0+'50G", "+00000000000000000000000000000000000000000001.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-+'.0G", "+1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%+'3.0G", " +1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-+'50.0G", "+1 ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0+'.1G", "+1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-+'1.1G", "+1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%+'50.1G", " +1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-+'.3G", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0+'1.3G", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-+'3.3G", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%+'.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%-+'1.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0+'3.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0-+'50.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% '1g", " 1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- '3g", " 1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 '50g", " 00000000000000000000000000000000000000000001.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- '.0g", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% '3.0g", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- '50.0g", " 1 ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 '.1g", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- '1.1g", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% '50.1g", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- '.3g", " 1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 '1.3g", " 1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- '3.3g", " 1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% '.50g", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- '1.50g", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 '3.50g", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- '50.50g", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% '1G", " 1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- '3G", " 1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 '50G", " 00000000000000000000000000000000000000000001.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- '.0G", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% '3.0G", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- '50.0G", " 1 ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 '.1G", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- '1.1G", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% '50.1G", " 1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- '.3G", " 1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 '1.3G", " 1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- '3.3G", " 1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% '.50G", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- '1.50G", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 '3.50G", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- '50.50G", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% +'1g", "+1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- +'3g", "+1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 +'50g", "+00000000000000000000000000000000000000000001.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- +'.0g", "+1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% +'3.0g", " +1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- +'50.0g", "+1 ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 +'.1g", "+1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- +'1.1g", "+1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% +'50.1g", " +1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- +'.3g", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 +'1.3g", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- +'3.3g", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% +'.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- +'1.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 +'3.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- +'50.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% +'1G", "+1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- +'3G", "+1.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 +'50G", "+00000000000000000000000000000000000000000001.4427", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- +'.0G", "+1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% +'3.0G", " +1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- +'50.0G", "+1 ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 +'.1G", "+1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- +'1.1G", "+1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% +'50.1G", " +1", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- +'.3G", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 +'1.3G", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- +'3.3G", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "% +'.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%- +'1.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0 +'3.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%0- +'50.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#'1g", "1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-'3g", "1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0'50g", "00000000000000000000000000000000000000000001.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-'.0g", "1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#'3.0g", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-'50.0g", "1. ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0'.1g", "1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-'1.1g", "1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#'50.1g", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-'.3g", "1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0'1.3g", "1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-'3.3g", "1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#'.50g", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-'1.50g", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0'3.50g", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-'50.50g", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#'1G", "1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-'3G", "1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0'50G", "00000000000000000000000000000000000000000001.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-'.0G", "1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#'3.0G", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-'50.0G", "1. ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0'.1G", "1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-'1.1G", "1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#'50.1G", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-'.3G", "1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0'1.3G", "1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-'3.3G", "1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#'.50G", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-'1.50G", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0'3.50G", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-'50.50G", "1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#+'1g", "+1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-+'3g", "+1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0+'50g", "+0000000000000000000000000000000000000000001.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-+'.0g", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#+'3.0g", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-+'50.0g", "+1. ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0+'.1g", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-+'1.1g", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#+'50.1g", " +1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-+'.3g", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0+'1.3g", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-+'3.3g", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#+'.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-+'1.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0+'3.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-+'50.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#+'1G", "+1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-+'3G", "+1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0+'50G", "+0000000000000000000000000000000000000000001.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-+'.0G", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#+'3.0G", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-+'50.0G", "+1. ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0+'.1G", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-+'1.1G", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#+'50.1G", " +1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-+'.3G", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0+'1.3G", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-+'3.3G", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#+'.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#-+'1.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0+'3.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0-+'50.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# '1g", " 1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- '3g", " 1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 '50g", " 0000000000000000000000000000000000000000001.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- '.0g", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# '3.0g", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- '50.0g", " 1. ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 '.1g", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- '1.1g", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# '50.1g", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- '.3g", " 1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 '1.3g", " 1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- '3.3g", " 1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# '.50g", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- '1.50g", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 '3.50g", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- '50.50g", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# '1G", " 1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- '3G", " 1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 '50G", " 0000000000000000000000000000000000000000001.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- '.0G", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# '3.0G", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- '50.0G", " 1. ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 '.1G", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- '1.1G", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# '50.1G", " 1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- '.3G", " 1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 '1.3G", " 1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- '3.3G", " 1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# '.50G", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- '1.50G", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 '3.50G", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- '50.50G", " 1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# +'1g", "+1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- +'3g", "+1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 +'50g", "+0000000000000000000000000000000000000000001.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- +'.0g", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# +'3.0g", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- +'50.0g", "+1. ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 +'.1g", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- +'1.1g", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# +'50.1g", " +1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- +'.3g", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 +'1.3g", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- +'3.3g", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# +'.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- +'1.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 +'3.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- +'50.50g", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# +'1G", "+1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- +'3G", "+1.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 +'50G", "+0000000000000000000000000000000000000000001.44270", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- +'.0G", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# +'3.0G", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- +'50.0G", "+1. ", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 +'.1G", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- +'1.1G", "+1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# +'50.1G", " +1.", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- +'.3G", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 +'1.3G", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- +'3.3G", "+1.44", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%# +'.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#- +'1.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0 +'3.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%#0- +'50.50G", "+1.4426950408889633870046509400708600878715515136719", { 254, 130, 43, 101, 71, 21, 247, 63 } },
+ { "%'1g", "0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-'3g", "0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0'50g", "0000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-'.0g", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%'3.0g", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-'50.0g", "0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0'.1g", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-'1.1g", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%'50.1g", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-'.3g", "0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0'1.3g", "0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-'3.3g", "0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%'.50g", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-'1.50g", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0'3.50g", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-'50.50g", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%'1G", "0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-'3G", "0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0'50G", "0000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-'.0G", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%'3.0G", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-'50.0G", "0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0'.1G", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-'1.1G", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%'50.1G", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-'.3G", "0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0'1.3G", "0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-'3.3G", "0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%'.50G", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-'1.50G", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0'3.50G", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-'50.50G", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%+'1g", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-+'3g", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0+'50g", "+000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-+'.0g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%+'3.0g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-+'50.0g", "+0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0+'.1g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-+'1.1g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%+'50.1g", " +0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-+'.3g", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0+'1.3g", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-+'3.3g", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%+'.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-+'1.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0+'3.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-+'50.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%+'1G", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-+'3G", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0+'50G", "+000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-+'.0G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%+'3.0G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-+'50.0G", "+0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0+'.1G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-+'1.1G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%+'50.1G", " +0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-+'.3G", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0+'1.3G", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-+'3.3G", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%+'.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%-+'1.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0+'3.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0-+'50.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% '1g", " 0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- '3g", " 0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 '50g", " 000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- '.0g", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% '3.0g", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- '50.0g", " 0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 '.1g", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- '1.1g", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% '50.1g", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- '.3g", " 0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 '1.3g", " 0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- '3.3g", " 0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% '.50g", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- '1.50g", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 '3.50g", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- '50.50g", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% '1G", " 0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- '3G", " 0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 '50G", " 000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- '.0G", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% '3.0G", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- '50.0G", " 0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 '.1G", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- '1.1G", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% '50.1G", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- '.3G", " 0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 '1.3G", " 0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- '3.3G", " 0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% '.50G", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- '1.50G", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 '3.50G", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- '50.50G", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% +'1g", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- +'3g", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- +'.0g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% +'3.0g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- +'50.0g", "+0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 +'.1g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- +'1.1g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% +'50.1g", " +0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- +'.3g", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 +'1.3g", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- +'3.3g", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% +'.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- +'1.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 +'3.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- +'50.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% +'1G", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- +'3G", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- +'.0G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% +'3.0G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- +'50.0G", "+0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 +'.1G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- +'1.1G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% +'50.1G", " +0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- +'.3G", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 +'1.3G", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- +'3.3G", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "% +'.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%- +'1.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0 +'3.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%0- +'50.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#'1g", "0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-'3g", "0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0'50g", "0000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-'.0g", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#'3.0g", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-'50.0g", "0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0'.1g", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-'1.1g", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#'50.1g", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-'.3g", "0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0'1.3g", "0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-'3.3g", "0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#'.50g", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-'1.50g", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0'3.50g", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-'50.50g", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#'1G", "0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-'3G", "0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0'50G", "0000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-'.0G", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#'3.0G", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-'50.0G", "0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0'.1G", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-'1.1G", "0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#'50.1G", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-'.3G", "0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0'1.3G", "0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-'3.3G", "0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#'.50G", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-'1.50G", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0'3.50G", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-'50.50G", "0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#+'1g", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-+'3g", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-+'.0g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#+'3.0g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-+'50.0g", "+0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0+'.1g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-+'1.1g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#+'50.1g", " +0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-+'.3g", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0+'1.3g", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-+'3.3g", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#+'.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-+'1.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0+'3.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-+'50.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#+'1G", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-+'3G", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-+'.0G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#+'3.0G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-+'50.0G", "+0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0+'.1G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-+'1.1G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#+'50.1G", " +0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-+'.3G", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0+'1.3G", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-+'3.3G", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#+'.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#-+'1.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0+'3.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0-+'50.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# '1g", " 0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- '3g", " 0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- '.0g", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# '3.0g", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- '50.0g", " 0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 '.1g", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- '1.1g", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# '50.1g", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- '.3g", " 0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 '1.3g", " 0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- '3.3g", " 0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# '.50g", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- '1.50g", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 '3.50g", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- '50.50g", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# '1G", " 0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- '3G", " 0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- '.0G", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# '3.0G", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- '50.0G", " 0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 '.1G", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- '1.1G", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# '50.1G", " 0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- '.3G", " 0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 '1.3G", " 0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- '3.3G", " 0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# '.50G", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- '1.50G", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 '3.50G", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- '50.50G", " 0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# +'1g", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- +'3g", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- +'.0g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# +'3.0g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- +'50.0g", "+0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 +'.1g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- +'1.1g", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# +'50.1g", " +0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- +'.3g", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 +'1.3g", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- +'3.3g", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# +'.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- +'1.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 +'3.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- +'50.50g", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# +'1G", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- +'3G", "+0.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000000000.434294", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- +'.0G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# +'3.0G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- +'50.0G", "+0.4 ", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 +'.1G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- +'1.1G", "+0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# +'50.1G", " +0.4", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- +'.3G", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 +'1.3G", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- +'3.3G", "+0.434", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%# +'.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#- +'1.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0 +'3.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%#0- +'50.50G", "+0.43429448190325181666793241674895398318767547607422", { 14, 229, 38, 21, 123, 203, 219, 63 } },
+ { "%'1g", "0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-'3g", "0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0'50g", "0000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-'.0g", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%'3.0g", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-'50.0g", "0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0'.1g", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-'1.1g", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%'50.1g", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-'.3g", "0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0'1.3g", "0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-'3.3g", "0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%'.50g", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-'1.50g", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0'3.50g", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-'50.50g", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%'1G", "0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-'3G", "0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0'50G", "0000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-'.0G", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%'3.0G", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-'50.0G", "0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0'.1G", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-'1.1G", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%'50.1G", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-'.3G", "0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0'1.3G", "0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-'3.3G", "0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%'.50G", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-'1.50G", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0'3.50G", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-'50.50G", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%+'1g", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-+'3g", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0+'50g", "+000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-+'.0g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%+'3.0g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-+'50.0g", "+0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0+'.1g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-+'1.1g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%+'50.1g", " +0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-+'.3g", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0+'1.3g", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-+'3.3g", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%+'.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-+'1.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0+'3.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-+'50.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%+'1G", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-+'3G", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0+'50G", "+000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-+'.0G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%+'3.0G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-+'50.0G", "+0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0+'.1G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-+'1.1G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%+'50.1G", " +0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-+'.3G", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0+'1.3G", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-+'3.3G", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%+'.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%-+'1.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0+'3.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0-+'50.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% '1g", " 0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- '3g", " 0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 '50g", " 000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- '.0g", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% '3.0g", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- '50.0g", " 0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 '.1g", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- '1.1g", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% '50.1g", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- '.3g", " 0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 '1.3g", " 0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- '3.3g", " 0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% '.50g", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- '1.50g", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 '3.50g", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- '50.50g", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% '1G", " 0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- '3G", " 0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 '50G", " 000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- '.0G", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% '3.0G", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- '50.0G", " 0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 '.1G", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- '1.1G", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% '50.1G", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- '.3G", " 0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 '1.3G", " 0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- '3.3G", " 0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% '.50G", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- '1.50G", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 '3.50G", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- '50.50G", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% +'1g", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- +'3g", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- +'.0g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% +'3.0g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- +'50.0g", "+0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 +'.1g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- +'1.1g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% +'50.1g", " +0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- +'.3g", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 +'1.3g", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- +'3.3g", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% +'.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- +'1.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 +'3.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- +'50.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% +'1G", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- +'3G", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- +'.0G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% +'3.0G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- +'50.0G", "+0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 +'.1G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- +'1.1G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% +'50.1G", " +0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- +'.3G", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 +'1.3G", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- +'3.3G", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "% +'.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%- +'1.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0 +'3.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%0- +'50.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#'1g", "0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-'3g", "0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0'50g", "0000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-'.0g", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#'3.0g", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-'50.0g", "0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0'.1g", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-'1.1g", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#'50.1g", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-'.3g", "0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0'1.3g", "0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-'3.3g", "0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#'.50g", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-'1.50g", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0'3.50g", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-'50.50g", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#'1G", "0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-'3G", "0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0'50G", "0000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-'.0G", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#'3.0G", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-'50.0G", "0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0'.1G", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-'1.1G", "0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#'50.1G", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-'.3G", "0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0'1.3G", "0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-'3.3G", "0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#'.50G", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-'1.50G", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0'3.50G", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-'50.50G", "0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#+'1g", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-+'3g", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-+'.0g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#+'3.0g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-+'50.0g", "+0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0+'.1g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-+'1.1g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#+'50.1g", " +0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-+'.3g", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0+'1.3g", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-+'3.3g", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#+'.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-+'1.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0+'3.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-+'50.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#+'1G", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-+'3G", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-+'.0G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#+'3.0G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-+'50.0G", "+0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0+'.1G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-+'1.1G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#+'50.1G", " +0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-+'.3G", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0+'1.3G", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-+'3.3G", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#+'.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#-+'1.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0+'3.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0-+'50.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# '1g", " 0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- '3g", " 0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- '.0g", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# '3.0g", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- '50.0g", " 0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 '.1g", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- '1.1g", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# '50.1g", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- '.3g", " 0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 '1.3g", " 0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- '3.3g", " 0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# '.50g", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- '1.50g", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 '3.50g", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- '50.50g", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# '1G", " 0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- '3G", " 0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- '.0G", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# '3.0G", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- '50.0G", " 0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 '.1G", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- '1.1G", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# '50.1G", " 0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- '.3G", " 0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 '1.3G", " 0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- '3.3G", " 0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# '.50G", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- '1.50G", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 '3.50G", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- '50.50G", " 0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# +'1g", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- +'3g", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- +'.0g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# +'3.0g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- +'50.0g", "+0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 +'.1g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- +'1.1g", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# +'50.1g", " +0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- +'.3g", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 +'1.3g", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- +'3.3g", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# +'.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- +'1.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 +'3.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- +'50.50g", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# +'1G", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- +'3G", "+0.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000000000.693147", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- +'.0G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# +'3.0G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- +'50.0G", "+0.7 ", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 +'.1G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- +'1.1G", "+0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# +'50.1G", " +0.7", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- +'.3G", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 +'1.3G", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- +'3.3G", "+0.693", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%# +'.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#- +'1.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0 +'3.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%#0- +'50.50G", "+0.69314718055994528622676398299518041312694549560547", { 239, 57, 250, 254, 66, 46, 230, 63 } },
+ { "%'1g", "2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-'3g", "2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0'50g", "00000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-'.0g", "2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%'3.0g", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-'50.0g", "2 ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0'.1g", "2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-'1.1g", "2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%'50.1g", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-'.3g", "2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0'1.3g", "2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-'3.3g", "2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%'.50g", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-'1.50g", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0'3.50g", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-'50.50g", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%'1G", "2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-'3G", "2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0'50G", "00000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-'.0G", "2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%'3.0G", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-'50.0G", "2 ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0'.1G", "2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-'1.1G", "2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%'50.1G", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-'.3G", "2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0'1.3G", "2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-'3.3G", "2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%'.50G", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-'1.50G", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0'3.50G", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-'50.50G", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%+'1g", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-+'3g", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0+'50g", "+0000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-+'.0g", "+2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%+'3.0g", " +2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-+'50.0g", "+2 ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0+'.1g", "+2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-+'1.1g", "+2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%+'50.1g", " +2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-+'.3g", "+2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0+'1.3g", "+2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-+'3.3g", "+2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%+'.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-+'1.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0+'3.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-+'50.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%+'1G", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-+'3G", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0+'50G", "+0000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-+'.0G", "+2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%+'3.0G", " +2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-+'50.0G", "+2 ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0+'.1G", "+2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-+'1.1G", "+2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%+'50.1G", " +2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-+'.3G", "+2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0+'1.3G", "+2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-+'3.3G", "+2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%+'.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%-+'1.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0+'3.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0-+'50.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% '1g", " 2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- '3g", " 2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 '50g", " 0000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- '.0g", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% '3.0g", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- '50.0g", " 2 ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 '.1g", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- '1.1g", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% '50.1g", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- '.3g", " 2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 '1.3g", " 2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- '3.3g", " 2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% '.50g", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- '1.50g", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 '3.50g", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- '50.50g", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% '1G", " 2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- '3G", " 2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 '50G", " 0000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- '.0G", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% '3.0G", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- '50.0G", " 2 ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 '.1G", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- '1.1G", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% '50.1G", " 2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- '.3G", " 2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 '1.3G", " 2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- '3.3G", " 2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% '.50G", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- '1.50G", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 '3.50G", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- '50.50G", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% +'1g", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- +'3g", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 +'50g", "+0000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- +'.0g", "+2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% +'3.0g", " +2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- +'50.0g", "+2 ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 +'.1g", "+2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- +'1.1g", "+2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% +'50.1g", " +2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- +'.3g", "+2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 +'1.3g", "+2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- +'3.3g", "+2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% +'.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- +'1.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 +'3.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- +'50.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% +'1G", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- +'3G", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 +'50G", "+0000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- +'.0G", "+2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% +'3.0G", " +2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- +'50.0G", "+2 ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 +'.1G", "+2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- +'1.1G", "+2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% +'50.1G", " +2", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- +'.3G", "+2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 +'1.3G", "+2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- +'3.3G", "+2.3", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "% +'.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%- +'1.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0 +'3.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%0- +'50.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#'1g", "2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-'3g", "2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0'50g", "00000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-'.0g", "2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#'3.0g", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-'50.0g", "2. ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0'.1g", "2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-'1.1g", "2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#'50.1g", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-'.3g", "2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0'1.3g", "2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-'3.3g", "2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#'.50g", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-'1.50g", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0'3.50g", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-'50.50g", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#'1G", "2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-'3G", "2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0'50G", "00000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-'.0G", "2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#'3.0G", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-'50.0G", "2. ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0'.1G", "2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-'1.1G", "2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#'50.1G", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-'.3G", "2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0'1.3G", "2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-'3.3G", "2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#'.50G", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-'1.50G", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0'3.50G", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-'50.50G", "2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#+'1g", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-+'3g", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0+'50g", "+0000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-+'.0g", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#+'3.0g", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-+'50.0g", "+2. ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0+'.1g", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-+'1.1g", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#+'50.1g", " +2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-+'.3g", "+2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0+'1.3g", "+2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-+'3.3g", "+2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#+'.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-+'1.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0+'3.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-+'50.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#+'1G", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-+'3G", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0+'50G", "+0000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-+'.0G", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#+'3.0G", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-+'50.0G", "+2. ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0+'.1G", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-+'1.1G", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#+'50.1G", " +2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-+'.3G", "+2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0+'1.3G", "+2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-+'3.3G", "+2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#+'.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#-+'1.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0+'3.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0-+'50.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# '1g", " 2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- '3g", " 2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 '50g", " 0000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- '.0g", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# '3.0g", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- '50.0g", " 2. ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 '.1g", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- '1.1g", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# '50.1g", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- '.3g", " 2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 '1.3g", " 2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- '3.3g", " 2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# '.50g", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- '1.50g", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 '3.50g", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- '50.50g", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# '1G", " 2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- '3G", " 2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 '50G", " 0000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- '.0G", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# '3.0G", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- '50.0G", " 2. ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 '.1G", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- '1.1G", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# '50.1G", " 2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- '.3G", " 2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 '1.3G", " 2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- '3.3G", " 2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# '.50G", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- '1.50G", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 '3.50G", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- '50.50G", " 2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# +'1g", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- +'3g", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 +'50g", "+0000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- +'.0g", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# +'3.0g", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- +'50.0g", "+2. ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 +'.1g", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- +'1.1g", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# +'50.1g", " +2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- +'.3g", "+2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 +'1.3g", "+2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- +'3.3g", "+2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# +'.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- +'1.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 +'3.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- +'50.50g", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# +'1G", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- +'3G", "+2.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 +'50G", "+0000000000000000000000000000000000000000002.30259", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- +'.0G", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# +'3.0G", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- +'50.0G", "+2. ", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 +'.1G", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- +'1.1G", "+2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# +'50.1G", " +2.", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- +'.3G", "+2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 +'1.3G", "+2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- +'3.3G", "+2.30", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%# +'.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#- +'1.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0 +'3.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%#0- +'50.50G", "+2.3025850929940459010936137929093092679977416992188", { 22, 85, 181, 187, 177, 107, 2, 64 } },
+ { "%'1g", "1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-'3g", "1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0'50g", "00000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-'.0g", "1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%'3.0g", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-'50.0g", "1 ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0'.1g", "1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-'1.1g", "1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%'50.1g", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-'.3g", "1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0'1.3g", "1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-'3.3g", "1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%'.50g", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-'1.50g", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0'3.50g", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-'50.50g", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%'1G", "1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-'3G", "1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0'50G", "00000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-'.0G", "1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%'3.0G", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-'50.0G", "1 ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0'.1G", "1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-'1.1G", "1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%'50.1G", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-'.3G", "1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0'1.3G", "1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-'3.3G", "1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%'.50G", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-'1.50G", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0'3.50G", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-'50.50G", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%+'1g", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-+'3g", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0+'50g", "+0000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-+'.0g", "+1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%+'3.0g", " +1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-+'50.0g", "+1 ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0+'.1g", "+1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-+'1.1g", "+1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%+'50.1g", " +1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-+'.3g", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0+'1.3g", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-+'3.3g", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%+'.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-+'1.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0+'3.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-+'50.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%+'1G", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-+'3G", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0+'50G", "+0000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-+'.0G", "+1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%+'3.0G", " +1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-+'50.0G", "+1 ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0+'.1G", "+1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-+'1.1G", "+1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%+'50.1G", " +1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-+'.3G", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0+'1.3G", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-+'3.3G", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%+'.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%-+'1.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0+'3.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0-+'50.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% '1g", " 1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- '3g", " 1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 '50g", " 0000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- '.0g", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% '3.0g", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- '50.0g", " 1 ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 '.1g", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- '1.1g", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% '50.1g", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- '.3g", " 1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 '1.3g", " 1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- '3.3g", " 1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% '.50g", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- '1.50g", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 '3.50g", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- '50.50g", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% '1G", " 1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- '3G", " 1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 '50G", " 0000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- '.0G", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% '3.0G", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- '50.0G", " 1 ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 '.1G", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- '1.1G", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% '50.1G", " 1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- '.3G", " 1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 '1.3G", " 1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- '3.3G", " 1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% '.50G", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- '1.50G", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 '3.50G", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- '50.50G", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% +'1g", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- +'3g", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 +'50g", "+0000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- +'.0g", "+1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% +'3.0g", " +1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- +'50.0g", "+1 ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 +'.1g", "+1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- +'1.1g", "+1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% +'50.1g", " +1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- +'.3g", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 +'1.3g", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- +'3.3g", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% +'.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- +'1.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 +'3.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- +'50.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% +'1G", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- +'3G", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 +'50G", "+0000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- +'.0G", "+1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% +'3.0G", " +1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- +'50.0G", "+1 ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 +'.1G", "+1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- +'1.1G", "+1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% +'50.1G", " +1", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- +'.3G", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 +'1.3G", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- +'3.3G", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "% +'.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%- +'1.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0 +'3.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%0- +'50.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#'1g", "1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-'3g", "1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0'50g", "00000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-'.0g", "1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#'3.0g", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-'50.0g", "1. ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0'.1g", "1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-'1.1g", "1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#'50.1g", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-'.3g", "1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0'1.3g", "1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-'3.3g", "1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#'.50g", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-'1.50g", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0'3.50g", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-'50.50g", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#'1G", "1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-'3G", "1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0'50G", "00000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-'.0G", "1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#'3.0G", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-'50.0G", "1. ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0'.1G", "1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-'1.1G", "1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#'50.1G", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-'.3G", "1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0'1.3G", "1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-'3.3G", "1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#'.50G", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-'1.50G", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0'3.50G", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-'50.50G", "1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#+'1g", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-+'3g", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0+'50g", "+0000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-+'.0g", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#+'3.0g", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-+'50.0g", "+1. ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0+'.1g", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-+'1.1g", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#+'50.1g", " +1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-+'.3g", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0+'1.3g", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-+'3.3g", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#+'.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-+'1.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0+'3.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-+'50.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#+'1G", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-+'3G", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0+'50G", "+0000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-+'.0G", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#+'3.0G", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-+'50.0G", "+1. ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0+'.1G", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-+'1.1G", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#+'50.1G", " +1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-+'.3G", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0+'1.3G", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-+'3.3G", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#+'.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#-+'1.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0+'3.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0-+'50.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# '1g", " 1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- '3g", " 1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 '50g", " 0000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- '.0g", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# '3.0g", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- '50.0g", " 1. ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 '.1g", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- '1.1g", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# '50.1g", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- '.3g", " 1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 '1.3g", " 1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- '3.3g", " 1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# '.50g", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- '1.50g", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 '3.50g", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- '50.50g", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# '1G", " 1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- '3G", " 1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 '50G", " 0000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- '.0G", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# '3.0G", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- '50.0G", " 1. ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 '.1G", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- '1.1G", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# '50.1G", " 1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- '.3G", " 1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 '1.3G", " 1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- '3.3G", " 1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# '.50G", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- '1.50G", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 '3.50G", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- '50.50G", " 1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# +'1g", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- +'3g", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 +'50g", "+0000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- +'.0g", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# +'3.0g", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- +'50.0g", "+1. ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 +'.1g", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- +'1.1g", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# +'50.1g", " +1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- +'.3g", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 +'1.3g", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- +'3.3g", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# +'.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- +'1.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 +'3.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- +'50.50g", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# +'1G", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- +'3G", "+1.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 +'50G", "+0000000000000000000000000000000000000000001.12838", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- +'.0G", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# +'3.0G", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- +'50.0G", "+1. ", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 +'.1G", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- +'1.1G", "+1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# +'50.1G", " +1.", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- +'.3G", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 +'1.3G", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- +'3.3G", "+1.13", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%# +'.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#- +'1.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0 +'3.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%#0- +'50.50G", "+1.1283791670955125585606992899556644260883331298828", { 109, 155, 66, 80, 215, 13, 242, 63 } },
+ { "%'1g", "1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-'3g", "1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0'50g", "00000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-'.0g", "1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%'3.0g", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-'50.0g", "1 ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0'.1g", "1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-'1.1g", "1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%'50.1g", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-'.3g", "1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0'1.3g", "1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-'3.3g", "1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%'.50g", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-'1.50g", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0'3.50g", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-'50.50g", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%'1G", "1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-'3G", "1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0'50G", "00000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-'.0G", "1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%'3.0G", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-'50.0G", "1 ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0'.1G", "1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-'1.1G", "1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%'50.1G", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-'.3G", "1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0'1.3G", "1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-'3.3G", "1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%'.50G", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-'1.50G", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0'3.50G", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-'50.50G", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%+'1g", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-+'3g", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0+'50g", "+0000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-+'.0g", "+1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%+'3.0g", " +1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-+'50.0g", "+1 ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0+'.1g", "+1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-+'1.1g", "+1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%+'50.1g", " +1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-+'.3g", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0+'1.3g", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-+'3.3g", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%+'.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-+'1.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0+'3.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-+'50.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%+'1G", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-+'3G", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0+'50G", "+0000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-+'.0G", "+1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%+'3.0G", " +1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-+'50.0G", "+1 ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0+'.1G", "+1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-+'1.1G", "+1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%+'50.1G", " +1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-+'.3G", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0+'1.3G", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-+'3.3G", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%+'.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%-+'1.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0+'3.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0-+'50.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% '1g", " 1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- '3g", " 1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 '50g", " 0000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- '.0g", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% '3.0g", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- '50.0g", " 1 ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 '.1g", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- '1.1g", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% '50.1g", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- '.3g", " 1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 '1.3g", " 1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- '3.3g", " 1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% '.50g", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- '1.50g", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 '3.50g", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- '50.50g", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% '1G", " 1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- '3G", " 1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 '50G", " 0000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- '.0G", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% '3.0G", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- '50.0G", " 1 ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 '.1G", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- '1.1G", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% '50.1G", " 1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- '.3G", " 1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 '1.3G", " 1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- '3.3G", " 1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% '.50G", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- '1.50G", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 '3.50G", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- '50.50G", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% +'1g", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- +'3g", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 +'50g", "+0000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- +'.0g", "+1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% +'3.0g", " +1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- +'50.0g", "+1 ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 +'.1g", "+1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- +'1.1g", "+1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% +'50.1g", " +1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- +'.3g", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 +'1.3g", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- +'3.3g", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% +'.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- +'1.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 +'3.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- +'50.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% +'1G", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- +'3G", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 +'50G", "+0000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- +'.0G", "+1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% +'3.0G", " +1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- +'50.0G", "+1 ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 +'.1G", "+1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- +'1.1G", "+1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% +'50.1G", " +1", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- +'.3G", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 +'1.3G", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- +'3.3G", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "% +'.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%- +'1.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0 +'3.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%0- +'50.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#'1g", "1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-'3g", "1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0'50g", "00000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-'.0g", "1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#'3.0g", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-'50.0g", "1. ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0'.1g", "1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-'1.1g", "1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#'50.1g", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-'.3g", "1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0'1.3g", "1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-'3.3g", "1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#'.50g", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-'1.50g", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0'3.50g", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-'50.50g", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#'1G", "1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-'3G", "1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0'50G", "00000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-'.0G", "1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#'3.0G", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-'50.0G", "1. ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0'.1G", "1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-'1.1G", "1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#'50.1G", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-'.3G", "1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0'1.3G", "1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-'3.3G", "1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#'.50G", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-'1.50G", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0'3.50G", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-'50.50G", "1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#+'1g", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-+'3g", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0+'50g", "+0000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-+'.0g", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#+'3.0g", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-+'50.0g", "+1. ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0+'.1g", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-+'1.1g", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#+'50.1g", " +1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-+'.3g", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0+'1.3g", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-+'3.3g", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#+'.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-+'1.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0+'3.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-+'50.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#+'1G", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-+'3G", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0+'50G", "+0000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-+'.0G", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#+'3.0G", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-+'50.0G", "+1. ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0+'.1G", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-+'1.1G", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#+'50.1G", " +1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-+'.3G", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0+'1.3G", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-+'3.3G", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#+'.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#-+'1.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0+'3.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0-+'50.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# '1g", " 1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- '3g", " 1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 '50g", " 0000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- '.0g", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# '3.0g", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- '50.0g", " 1. ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 '.1g", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- '1.1g", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# '50.1g", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- '.3g", " 1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 '1.3g", " 1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- '3.3g", " 1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# '.50g", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- '1.50g", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 '3.50g", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- '50.50g", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# '1G", " 1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- '3G", " 1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 '50G", " 0000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- '.0G", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# '3.0G", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- '50.0G", " 1. ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 '.1G", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- '1.1G", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# '50.1G", " 1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- '.3G", " 1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 '1.3G", " 1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- '3.3G", " 1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# '.50G", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- '1.50G", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 '3.50G", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- '50.50G", " 1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# +'1g", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- +'3g", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 +'50g", "+0000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- +'.0g", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# +'3.0g", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- +'50.0g", "+1. ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 +'.1g", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- +'1.1g", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# +'50.1g", " +1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- +'.3g", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 +'1.3g", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- +'3.3g", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# +'.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- +'1.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 +'3.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- +'50.50g", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# +'1G", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- +'3G", "+1.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 +'50G", "+0000000000000000000000000000000000000000001.41421", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- +'.0G", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# +'3.0G", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- +'50.0G", "+1. ", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 +'.1G", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- +'1.1G", "+1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# +'50.1G", " +1.", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- +'.3G", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 +'1.3G", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- +'3.3G", "+1.41", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%# +'.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#- +'1.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0 +'3.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%#0- +'50.50G", "+1.4142135623730951454746218587388284504413604736328", { 205, 59, 127, 102, 158, 160, 246, 63 } },
+ { "%'1g", "0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-'3g", "0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0'50g", "0000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-'.0g", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%'3.0g", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-'50.0g", "0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0'.1g", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-'1.1g", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%'50.1g", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-'.3g", "0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0'1.3g", "0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-'3.3g", "0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%'.50g", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-'1.50g", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0'3.50g", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-'50.50g", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%'1G", "0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-'3G", "0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0'50G", "0000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-'.0G", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%'3.0G", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-'50.0G", "0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0'.1G", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-'1.1G", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%'50.1G", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-'.3G", "0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0'1.3G", "0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-'3.3G", "0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%'.50G", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-'1.50G", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0'3.50G", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-'50.50G", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%+'1g", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-+'3g", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0+'50g", "+000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-+'.0g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%+'3.0g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-+'50.0g", "+0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0+'.1g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-+'1.1g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%+'50.1g", " +0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-+'.3g", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0+'1.3g", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-+'3.3g", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%+'.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-+'1.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0+'3.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-+'50.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%+'1G", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-+'3G", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0+'50G", "+000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-+'.0G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%+'3.0G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-+'50.0G", "+0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0+'.1G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-+'1.1G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%+'50.1G", " +0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-+'.3G", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0+'1.3G", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-+'3.3G", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%+'.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%-+'1.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0+'3.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0-+'50.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% '1g", " 0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- '3g", " 0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 '50g", " 000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- '.0g", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% '3.0g", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- '50.0g", " 0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 '.1g", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- '1.1g", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% '50.1g", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- '.3g", " 0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 '1.3g", " 0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- '3.3g", " 0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% '.50g", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- '1.50g", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 '3.50g", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- '50.50g", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% '1G", " 0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- '3G", " 0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 '50G", " 000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- '.0G", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% '3.0G", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- '50.0G", " 0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 '.1G", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- '1.1G", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% '50.1G", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- '.3G", " 0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 '1.3G", " 0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- '3.3G", " 0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% '.50G", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- '1.50G", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 '3.50G", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- '50.50G", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% +'1g", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- +'3g", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- +'.0g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% +'3.0g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- +'50.0g", "+0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 +'.1g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- +'1.1g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% +'50.1g", " +0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- +'.3g", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 +'1.3g", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- +'3.3g", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% +'.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- +'1.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 +'3.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- +'50.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% +'1G", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- +'3G", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- +'.0G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% +'3.0G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- +'50.0G", "+0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 +'.1G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- +'1.1G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% +'50.1G", " +0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- +'.3G", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 +'1.3G", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- +'3.3G", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "% +'.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%- +'1.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0 +'3.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%0- +'50.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#'1g", "0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-'3g", "0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0'50g", "0000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-'.0g", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#'3.0g", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-'50.0g", "0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0'.1g", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-'1.1g", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#'50.1g", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-'.3g", "0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0'1.3g", "0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-'3.3g", "0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#'.50g", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-'1.50g", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0'3.50g", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-'50.50g", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#'1G", "0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-'3G", "0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0'50G", "0000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-'.0G", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#'3.0G", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-'50.0G", "0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0'.1G", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-'1.1G", "0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#'50.1G", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-'.3G", "0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0'1.3G", "0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-'3.3G", "0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#'.50G", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-'1.50G", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0'3.50G", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-'50.50G", "0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#+'1g", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-+'3g", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-+'.0g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#+'3.0g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-+'50.0g", "+0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0+'.1g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-+'1.1g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#+'50.1g", " +0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-+'.3g", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0+'1.3g", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-+'3.3g", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#+'.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-+'1.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0+'3.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-+'50.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#+'1G", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-+'3G", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-+'.0G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#+'3.0G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-+'50.0G", "+0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0+'.1G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-+'1.1G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#+'50.1G", " +0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-+'.3G", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0+'1.3G", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-+'3.3G", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#+'.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#-+'1.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0+'3.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0-+'50.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# '1g", " 0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- '3g", " 0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- '.0g", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# '3.0g", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- '50.0g", " 0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 '.1g", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- '1.1g", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# '50.1g", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- '.3g", " 0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 '1.3g", " 0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- '3.3g", " 0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# '.50g", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- '1.50g", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 '3.50g", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- '50.50g", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# '1G", " 0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- '3G", " 0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- '.0G", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# '3.0G", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- '50.0G", " 0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 '.1G", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- '1.1G", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# '50.1G", " 0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- '.3G", " 0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 '1.3G", " 0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- '3.3G", " 0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# '.50G", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- '1.50G", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 '3.50G", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- '50.50G", " 0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# +'1g", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- +'3g", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- +'.0g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# +'3.0g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- +'50.0g", "+0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 +'.1g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- +'1.1g", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# +'50.1g", " +0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- +'.3g", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 +'1.3g", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- +'3.3g", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# +'.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- +'1.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 +'3.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- +'50.50g", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# +'1G", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- +'3G", "+0.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000000000.707107", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- +'.0G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# +'3.0G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- +'50.0G", "+0.7 ", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 +'.1G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- +'1.1G", "+0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# +'50.1G", " +0.7", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- +'.3G", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 +'1.3G", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- +'3.3G", "+0.707", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%# +'.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#- +'1.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0 +'3.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%#0- +'50.50G", "+0.70710678118654757273731092936941422522068023681641", { 205, 59, 127, 102, 158, 160, 230, 63 } },
+ { "%'1g", "1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-'3g", "1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0'50g", "0000000000000000000000000000000000000000000001e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-'.0g", "1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%'3.0g", "1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-'50.0g", "1e-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0'.1g", "1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-'1.1g", "1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%'50.1g", " 1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-'.3g", "1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0'1.3g", "1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-'3.3g", "1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%'.50g", "9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-'1.50g", "9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0'3.50g", "9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-'50.50g", "9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%'1G", "1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-'3G", "1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0'50G", "0000000000000000000000000000000000000000000001E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-'.0G", "1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%'3.0G", "1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-'50.0G", "1E-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0'.1G", "1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-'1.1G", "1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%'50.1G", " 1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-'.3G", "1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0'1.3G", "1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-'3.3G", "1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%'.50G", "9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-'1.50G", "9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0'3.50G", "9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-'50.50G", "9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%+'1g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-+'3g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0+'50g", "+000000000000000000000000000000000000000000001e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-+'.0g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%+'3.0g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-+'50.0g", "+1e-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0+'.1g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-+'1.1g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%+'50.1g", " +1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-+'.3g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0+'1.3g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-+'3.3g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%+'.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-+'1.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0+'3.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-+'50.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%+'1G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-+'3G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0+'50G", "+000000000000000000000000000000000000000000001E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-+'.0G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%+'3.0G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-+'50.0G", "+1E-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0+'.1G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-+'1.1G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%+'50.1G", " +1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-+'.3G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0+'1.3G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-+'3.3G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%+'.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%-+'1.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0+'3.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0-+'50.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% '1g", " 1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- '3g", " 1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 '50g", " 000000000000000000000000000000000000000000001e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- '.0g", " 1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% '3.0g", " 1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- '50.0g", " 1e-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 '.1g", " 1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- '1.1g", " 1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% '50.1g", " 1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- '.3g", " 1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 '1.3g", " 1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- '3.3g", " 1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% '.50g", " 9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- '1.50g", " 9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 '3.50g", " 9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- '50.50g", " 9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% '1G", " 1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- '3G", " 1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 '50G", " 000000000000000000000000000000000000000000001E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- '.0G", " 1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% '3.0G", " 1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- '50.0G", " 1E-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 '.1G", " 1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- '1.1G", " 1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% '50.1G", " 1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- '.3G", " 1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 '1.3G", " 1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- '3.3G", " 1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% '.50G", " 9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- '1.50G", " 9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 '3.50G", " 9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- '50.50G", " 9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% +'1g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- +'3g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000000000001e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- +'.0g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% +'3.0g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- +'50.0g", "+1e-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 +'.1g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- +'1.1g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% +'50.1g", " +1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- +'.3g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 +'1.3g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- +'3.3g", "+1e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% +'.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- +'1.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 +'3.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- +'50.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% +'1G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- +'3G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000000000001E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- +'.0G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% +'3.0G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- +'50.0G", "+1E-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 +'.1G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- +'1.1G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% +'50.1G", " +1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- +'.3G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 +'1.3G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- +'3.3G", "+1E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "% +'.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%- +'1.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0 +'3.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%0- +'50.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#'1g", "1.00000e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-'3g", "1.00000e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0'50g", "0000000000000000000000000000000000000001.00000e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-'.0g", "1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#'3.0g", "1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-'50.0g", "1.e-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0'.1g", "1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-'1.1g", "1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#'50.1g", " 1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-'.3g", "1.00e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0'1.3g", "1.00e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-'3.3g", "1.00e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#'.50g", "9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-'1.50g", "9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0'3.50g", "9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-'50.50g", "9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#'1G", "1.00000E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-'3G", "1.00000E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0'50G", "0000000000000000000000000000000000000001.00000E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-'.0G", "1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#'3.0G", "1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-'50.0G", "1.E-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0'.1G", "1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-'1.1G", "1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#'50.1G", " 1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-'.3G", "1.00E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0'1.3G", "1.00E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-'3.3G", "1.00E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#'.50G", "9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-'1.50G", "9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0'3.50G", "9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-'50.50G", "9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#+'1g", "+1.00000e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-+'3g", "+1.00000e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000001.00000e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-+'.0g", "+1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#+'3.0g", "+1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-+'50.0g", "+1.e-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0+'.1g", "+1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-+'1.1g", "+1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#+'50.1g", " +1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-+'.3g", "+1.00e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0+'1.3g", "+1.00e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-+'3.3g", "+1.00e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#+'.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-+'1.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0+'3.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-+'50.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#+'1G", "+1.00000E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-+'3G", "+1.00000E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000001.00000E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-+'.0G", "+1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#+'3.0G", "+1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-+'50.0G", "+1.E-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0+'.1G", "+1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-+'1.1G", "+1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#+'50.1G", " +1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-+'.3G", "+1.00E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0+'1.3G", "+1.00E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-+'3.3G", "+1.00E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#+'.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#-+'1.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0+'3.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0-+'50.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# '1g", " 1.00000e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- '3g", " 1.00000e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000001.00000e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- '.0g", " 1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# '3.0g", " 1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- '50.0g", " 1.e-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 '.1g", " 1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- '1.1g", " 1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# '50.1g", " 1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- '.3g", " 1.00e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 '1.3g", " 1.00e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- '3.3g", " 1.00e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# '.50g", " 9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- '1.50g", " 9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 '3.50g", " 9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- '50.50g", " 9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# '1G", " 1.00000E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- '3G", " 1.00000E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000001.00000E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- '.0G", " 1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# '3.0G", " 1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- '50.0G", " 1.E-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 '.1G", " 1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- '1.1G", " 1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# '50.1G", " 1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- '.3G", " 1.00E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 '1.3G", " 1.00E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- '3.3G", " 1.00E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# '.50G", " 9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- '1.50G", " 9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 '3.50G", " 9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- '50.50G", " 9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# +'1g", "+1.00000e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- +'3g", "+1.00000e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000001.00000e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- +'.0g", "+1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# +'3.0g", "+1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- +'50.0g", "+1.e-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 +'.1g", "+1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- +'1.1g", "+1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# +'50.1g", " +1.e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- +'.3g", "+1.00e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 +'1.3g", "+1.00e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- +'3.3g", "+1.00e-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# +'.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- +'1.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 +'3.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- +'50.50g", "+9.9999999999999999881930935455989869713432907291639e-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# +'1G", "+1.00000E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- +'3G", "+1.00000E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000001.00000E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- +'.0G", "+1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# +'3.0G", "+1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- +'50.0G", "+1.E-14 ", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 +'.1G", "+1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- +'1.1G", "+1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# +'50.1G", " +1.E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- +'.3G", "+1.00E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 +'1.3G", "+1.00E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- +'3.3G", "+1.00E-14", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%# +'.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#- +'1.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0 +'3.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%#0- +'50.50G", "+9.9999999999999999881930935455989869713432907291639E-15", { 155, 43, 161, 134, 155, 132, 6, 61 } },
+ { "%'1g", "1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-'3g", "1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0'50g", "00000000000000000000000000000000000000000000000001", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-'.0g", "1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%'3.0g", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-'50.0g", "1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0'.1g", "1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-'1.1g", "1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%'50.1g", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-'.3g", "1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0'1.3g", "1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-'3.3g", "1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%'.50g", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-'1.50g", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0'3.50g", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-'50.50g", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%'1G", "1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-'3G", "1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0'50G", "00000000000000000000000000000000000000000000000001", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-'.0G", "1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%'3.0G", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-'50.0G", "1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0'.1G", "1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-'1.1G", "1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%'50.1G", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-'.3G", "1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0'1.3G", "1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-'3.3G", "1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%'.50G", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-'1.50G", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0'3.50G", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-'50.50G", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%+'1g", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-+'3g", "+1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0+'50g", "+0000000000000000000000000000000000000000000000001", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-+'.0g", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%+'3.0g", " +1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-+'50.0g", "+1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0+'.1g", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-+'1.1g", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%+'50.1g", " +1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-+'.3g", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0+'1.3g", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-+'3.3g", "+1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%+'.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-+'1.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0+'3.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-+'50.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%+'1G", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-+'3G", "+1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0+'50G", "+0000000000000000000000000000000000000000000000001", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-+'.0G", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%+'3.0G", " +1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-+'50.0G", "+1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0+'.1G", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-+'1.1G", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%+'50.1G", " +1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-+'.3G", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0+'1.3G", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-+'3.3G", "+1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%+'.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%-+'1.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0+'3.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0-+'50.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% '1g", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- '3g", " 1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 '50g", " 0000000000000000000000000000000000000000000000001", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- '.0g", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% '3.0g", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- '50.0g", " 1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 '.1g", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- '1.1g", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% '50.1g", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- '.3g", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 '1.3g", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- '3.3g", " 1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% '.50g", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- '1.50g", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 '3.50g", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- '50.50g", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% '1G", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- '3G", " 1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 '50G", " 0000000000000000000000000000000000000000000000001", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- '.0G", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% '3.0G", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- '50.0G", " 1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 '.1G", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- '1.1G", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% '50.1G", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- '.3G", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 '1.3G", " 1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- '3.3G", " 1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% '.50G", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- '1.50G", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 '3.50G", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- '50.50G", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% +'1g", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- +'3g", "+1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 +'50g", "+0000000000000000000000000000000000000000000000001", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- +'.0g", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% +'3.0g", " +1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- +'50.0g", "+1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 +'.1g", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- +'1.1g", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% +'50.1g", " +1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- +'.3g", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 +'1.3g", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- +'3.3g", "+1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% +'.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- +'1.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 +'3.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- +'50.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% +'1G", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- +'3G", "+1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 +'50G", "+0000000000000000000000000000000000000000000000001", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- +'.0G", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% +'3.0G", " +1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- +'50.0G", "+1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 +'.1G", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- +'1.1G", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% +'50.1G", " +1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- +'.3G", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 +'1.3G", "+1", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- +'3.3G", "+1 ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "% +'.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%- +'1.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0 +'3.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%0- +'50.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#'1g", "1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-'3g", "1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0'50g", "00000000000000000000000000000000000000000001.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-'.0g", "1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#'3.0g", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-'50.0g", "1. ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0'.1g", "1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-'1.1g", "1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#'50.1g", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-'.3g", "1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0'1.3g", "1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-'3.3g", "1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#'.50g", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-'1.50g", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0'3.50g", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-'50.50g", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#'1G", "1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-'3G", "1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0'50G", "00000000000000000000000000000000000000000001.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-'.0G", "1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#'3.0G", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-'50.0G", "1. ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0'.1G", "1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-'1.1G", "1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#'50.1G", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-'.3G", "1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0'1.3G", "1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-'3.3G", "1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#'.50G", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-'1.50G", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0'3.50G", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-'50.50G", "0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#+'1g", "+1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-+'3g", "+1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0+'50g", "+0000000000000000000000000000000000000000001.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-+'.0g", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#+'3.0g", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-+'50.0g", "+1. ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0+'.1g", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-+'1.1g", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#+'50.1g", " +1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-+'.3g", "+1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0+'1.3g", "+1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-+'3.3g", "+1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#+'.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-+'1.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0+'3.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-+'50.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#+'1G", "+1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-+'3G", "+1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0+'50G", "+0000000000000000000000000000000000000000001.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-+'.0G", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#+'3.0G", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-+'50.0G", "+1. ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0+'.1G", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-+'1.1G", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#+'50.1G", " +1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-+'.3G", "+1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0+'1.3G", "+1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-+'3.3G", "+1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#+'.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#-+'1.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0+'3.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0-+'50.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# '1g", " 1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- '3g", " 1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 '50g", " 0000000000000000000000000000000000000000001.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- '.0g", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# '3.0g", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- '50.0g", " 1. ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 '.1g", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- '1.1g", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# '50.1g", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- '.3g", " 1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 '1.3g", " 1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- '3.3g", " 1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# '.50g", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- '1.50g", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 '3.50g", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- '50.50g", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# '1G", " 1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- '3G", " 1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 '50G", " 0000000000000000000000000000000000000000001.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- '.0G", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# '3.0G", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- '50.0G", " 1. ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 '.1G", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- '1.1G", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# '50.1G", " 1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- '.3G", " 1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 '1.3G", " 1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- '3.3G", " 1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# '.50G", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- '1.50G", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 '3.50G", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- '50.50G", " 0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# +'1g", "+1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- +'3g", "+1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 +'50g", "+0000000000000000000000000000000000000000001.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- +'.0g", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# +'3.0g", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- +'50.0g", "+1. ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 +'.1g", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- +'1.1g", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# +'50.1g", " +1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- +'.3g", "+1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 +'1.3g", "+1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- +'3.3g", "+1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# +'.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- +'1.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 +'3.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- +'50.50g", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# +'1G", "+1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- +'3G", "+1.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 +'50G", "+0000000000000000000000000000000000000000001.00000", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- +'.0G", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# +'3.0G", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- +'50.0G", "+1. ", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 +'.1G", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- +'1.1G", "+1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# +'50.1G", " +1.", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- +'.3G", "+1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 +'1.3G", "+1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- +'3.3G", "+1.00", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%# +'.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#- +'1.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0 +'3.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%#0- +'50.50G", "+0.99999999999999000799277837359113618731498718261719", { 166, 255, 255, 255, 255, 255, 239, 63 } },
+ { "%'1g", "1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-'3g", "1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0'50g", "0000000000000000000000000000000000000000000001e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-'.0g", "1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%'3.0g", "1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-'50.0g", "1e+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0'.1g", "1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-'1.1g", "1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%'50.1g", " 1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-'.3g", "1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0'1.3g", "1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-'3.3g", "1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%'.50g", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-'1.50g", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0'3.50g", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-'50.50g", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%'1G", "1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-'3G", "1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0'50G", "0000000000000000000000000000000000000000000001E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-'.0G", "1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%'3.0G", "1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-'50.0G", "1E+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0'.1G", "1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-'1.1G", "1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%'50.1G", " 1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-'.3G", "1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0'1.3G", "1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-'3.3G", "1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%'.50G", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-'1.50G", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0'3.50G", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-'50.50G", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%+'1g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-+'3g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0+'50g", "+000000000000000000000000000000000000000000001e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-+'.0g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%+'3.0g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-+'50.0g", "+1e+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0+'.1g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-+'1.1g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%+'50.1g", " +1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-+'.3g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0+'1.3g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-+'3.3g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%+'.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-+'1.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0+'3.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-+'50.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%+'1G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-+'3G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0+'50G", "+000000000000000000000000000000000000000000001E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-+'.0G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%+'3.0G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-+'50.0G", "+1E+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0+'.1G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-+'1.1G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%+'50.1G", " +1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-+'.3G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0+'1.3G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-+'3.3G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%+'.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%-+'1.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0+'3.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0-+'50.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% '1g", " 1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- '3g", " 1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 '50g", " 000000000000000000000000000000000000000000001e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- '.0g", " 1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% '3.0g", " 1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- '50.0g", " 1e+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 '.1g", " 1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- '1.1g", " 1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% '50.1g", " 1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- '.3g", " 1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 '1.3g", " 1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- '3.3g", " 1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% '.50g", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- '1.50g", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 '3.50g", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- '50.50g", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% '1G", " 1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- '3G", " 1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 '50G", " 000000000000000000000000000000000000000000001E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- '.0G", " 1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% '3.0G", " 1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- '50.0G", " 1E+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 '.1G", " 1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- '1.1G", " 1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% '50.1G", " 1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- '.3G", " 1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 '1.3G", " 1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- '3.3G", " 1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% '.50G", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- '1.50G", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 '3.50G", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- '50.50G", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% +'1g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- +'3g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000000000001e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- +'.0g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% +'3.0g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- +'50.0g", "+1e+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 +'.1g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- +'1.1g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% +'50.1g", " +1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- +'.3g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 +'1.3g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- +'3.3g", "+1e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% +'.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- +'1.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 +'3.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- +'50.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% +'1G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- +'3G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000000000001E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- +'.0G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% +'3.0G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- +'50.0G", "+1E+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 +'.1G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- +'1.1G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% +'50.1G", " +1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- +'.3G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 +'1.3G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- +'3.3G", "+1E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "% +'.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%- +'1.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0 +'3.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%0- +'50.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#'1g", "1.00000e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-'3g", "1.00000e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0'50g", "0000000000000000000000000000000000000001.00000e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-'.0g", "1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#'3.0g", "1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-'50.0g", "1.e+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0'.1g", "1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-'1.1g", "1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#'50.1g", " 1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-'.3g", "1.00e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0'1.3g", "1.00e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-'3.3g", "1.00e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#'.50g", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-'1.50g", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0'3.50g", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-'50.50g", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#'1G", "1.00000E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-'3G", "1.00000E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0'50G", "0000000000000000000000000000000000000001.00000E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-'.0G", "1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#'3.0G", "1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-'50.0G", "1.E+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0'.1G", "1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-'1.1G", "1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#'50.1G", " 1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-'.3G", "1.00E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0'1.3G", "1.00E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-'3.3G", "1.00E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#'.50G", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-'1.50G", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0'3.50G", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-'50.50G", "99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#+'1g", "+1.00000e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-+'3g", "+1.00000e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000001.00000e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-+'.0g", "+1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#+'3.0g", "+1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-+'50.0g", "+1.e+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0+'.1g", "+1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-+'1.1g", "+1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#+'50.1g", " +1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-+'.3g", "+1.00e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0+'1.3g", "+1.00e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-+'3.3g", "+1.00e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#+'.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-+'1.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0+'3.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-+'50.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#+'1G", "+1.00000E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-+'3G", "+1.00000E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000001.00000E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-+'.0G", "+1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#+'3.0G", "+1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-+'50.0G", "+1.E+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0+'.1G", "+1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-+'1.1G", "+1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#+'50.1G", " +1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-+'.3G", "+1.00E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0+'1.3G", "+1.00E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-+'3.3G", "+1.00E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#+'.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#-+'1.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0+'3.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0-+'50.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# '1g", " 1.00000e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- '3g", " 1.00000e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000001.00000e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- '.0g", " 1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# '3.0g", " 1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- '50.0g", " 1.e+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 '.1g", " 1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- '1.1g", " 1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# '50.1g", " 1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- '.3g", " 1.00e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 '1.3g", " 1.00e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- '3.3g", " 1.00e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# '.50g", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- '1.50g", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 '3.50g", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- '50.50g", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# '1G", " 1.00000E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- '3G", " 1.00000E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000001.00000E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- '.0G", " 1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# '3.0G", " 1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- '50.0G", " 1.E+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 '.1G", " 1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- '1.1G", " 1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# '50.1G", " 1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- '.3G", " 1.00E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 '1.3G", " 1.00E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- '3.3G", " 1.00E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# '.50G", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- '1.50G", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 '3.50G", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- '50.50G", " 99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# +'1g", "+1.00000e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- +'3g", "+1.00000e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000001.00000e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- +'.0g", "+1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# +'3.0g", "+1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- +'50.0g", "+1.e+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 +'.1g", "+1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- +'1.1g", "+1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# +'50.1g", " +1.e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- +'.3g", "+1.00e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 +'1.3g", "+1.00e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- +'3.3g", "+1.00e+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# +'.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- +'1.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 +'3.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- +'50.50g", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# +'1G", "+1.00000E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- +'3G", "+1.00000E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000001.00000E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- +'.0G", "+1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# +'3.0G", "+1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- +'50.0G", "+1.E+50 ", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 +'.1G", "+1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- +'1.1G", "+1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# +'50.1G", " +1.E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- +'.3G", "+1.00E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 +'1.3G", "+1.00E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- +'3.3G", "+1.00E+50", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%# +'.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#- +'1.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0 +'3.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%#0- +'50.50G", "+99,999,999,999,999,010,708,773,002,404,982,325,439,669,760,688,128.", { 106, 100, 126, 197, 14, 27, 81, 74 } },
+ { "%'1g", "1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-'3g", "1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0'50g", "0000000000000000000000000000000000000000000001e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-'.0g", "1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%'3.0g", "1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-'50.0g", "1e-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0'.1g", "1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-'1.1g", "1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%'50.1g", " 1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-'.3g", "1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0'1.3g", "1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-'3.3g", "1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%'.50g", "9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-'1.50g", "9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0'3.50g", "9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-'50.50g", "9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%'1G", "1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-'3G", "1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0'50G", "0000000000000000000000000000000000000000000001E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-'.0G", "1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%'3.0G", "1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-'50.0G", "1E-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0'.1G", "1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-'1.1G", "1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%'50.1G", " 1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-'.3G", "1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0'1.3G", "1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-'3.3G", "1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%'.50G", "9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-'1.50G", "9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0'3.50G", "9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-'50.50G", "9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%+'1g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-+'3g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0+'50g", "+000000000000000000000000000000000000000000001e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-+'.0g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%+'3.0g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-+'50.0g", "+1e-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0+'.1g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-+'1.1g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%+'50.1g", " +1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-+'.3g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0+'1.3g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-+'3.3g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%+'.50g", "+9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-+'1.50g", "+9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0+'3.50g", "+9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-+'50.50g", "+9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%+'1G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-+'3G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0+'50G", "+000000000000000000000000000000000000000000001E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-+'.0G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%+'3.0G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-+'50.0G", "+1E-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0+'.1G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-+'1.1G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%+'50.1G", " +1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-+'.3G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0+'1.3G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-+'3.3G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%+'.50G", "+9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%-+'1.50G", "+9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0+'3.50G", "+9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0-+'50.50G", "+9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% '1g", " 1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- '3g", " 1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 '50g", " 000000000000000000000000000000000000000000001e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- '.0g", " 1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% '3.0g", " 1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- '50.0g", " 1e-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 '.1g", " 1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- '1.1g", " 1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% '50.1g", " 1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- '.3g", " 1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 '1.3g", " 1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- '3.3g", " 1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% '.50g", " 9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- '1.50g", " 9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 '3.50g", " 9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- '50.50g", " 9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% '1G", " 1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- '3G", " 1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 '50G", " 000000000000000000000000000000000000000000001E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- '.0G", " 1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% '3.0G", " 1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- '50.0G", " 1E-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 '.1G", " 1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- '1.1G", " 1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% '50.1G", " 1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- '.3G", " 1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 '1.3G", " 1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- '3.3G", " 1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% '.50G", " 9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- '1.50G", " 9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 '3.50G", " 9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- '50.50G", " 9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% +'1g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- +'3g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000000000001e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- +'.0g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% +'3.0g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- +'50.0g", "+1e-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 +'.1g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- +'1.1g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% +'50.1g", " +1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- +'.3g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 +'1.3g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- +'3.3g", "+1e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% +'.50g", "+9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- +'1.50g", "+9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 +'3.50g", "+9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- +'50.50g", "+9.999999999999900372700906579936580106949261241377e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% +'1G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- +'3G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000000000001E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- +'.0G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% +'3.0G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- +'50.0G", "+1E-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 +'.1G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- +'1.1G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% +'50.1G", " +1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- +'.3G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 +'1.3G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- +'3.3G", "+1E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "% +'.50G", "+9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%- +'1.50G", "+9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0 +'3.50G", "+9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%0- +'50.50G", "+9.999999999999900372700906579936580106949261241377E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#'1g", "1.00000e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-'3g", "1.00000e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0'50g", "0000000000000000000000000000000000000001.00000e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-'.0g", "1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#'3.0g", "1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-'50.0g", "1.e-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0'.1g", "1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-'1.1g", "1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#'50.1g", " 1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-'.3g", "1.00e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0'1.3g", "1.00e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-'3.3g", "1.00e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#'.50g", "9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-'1.50g", "9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0'3.50g", "9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-'50.50g", "9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#'1G", "1.00000E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-'3G", "1.00000E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0'50G", "0000000000000000000000000000000000000001.00000E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-'.0G", "1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#'3.0G", "1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-'50.0G", "1.E-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0'.1G", "1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-'1.1G", "1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#'50.1G", " 1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-'.3G", "1.00E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0'1.3G", "1.00E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-'3.3G", "1.00E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#'.50G", "9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-'1.50G", "9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0'3.50G", "9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-'50.50G", "9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#+'1g", "+1.00000e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-+'3g", "+1.00000e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000001.00000e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-+'.0g", "+1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#+'3.0g", "+1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-+'50.0g", "+1.e-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0+'.1g", "+1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-+'1.1g", "+1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#+'50.1g", " +1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-+'.3g", "+1.00e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0+'1.3g", "+1.00e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-+'3.3g", "+1.00e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#+'.50g", "+9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-+'1.50g", "+9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0+'3.50g", "+9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-+'50.50g", "+9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#+'1G", "+1.00000E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-+'3G", "+1.00000E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000001.00000E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-+'.0G", "+1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#+'3.0G", "+1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-+'50.0G", "+1.E-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0+'.1G", "+1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-+'1.1G", "+1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#+'50.1G", " +1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-+'.3G", "+1.00E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0+'1.3G", "+1.00E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-+'3.3G", "+1.00E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#+'.50G", "+9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#-+'1.50G", "+9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0+'3.50G", "+9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0-+'50.50G", "+9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# '1g", " 1.00000e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- '3g", " 1.00000e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000001.00000e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- '.0g", " 1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# '3.0g", " 1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- '50.0g", " 1.e-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 '.1g", " 1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- '1.1g", " 1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# '50.1g", " 1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- '.3g", " 1.00e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 '1.3g", " 1.00e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- '3.3g", " 1.00e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# '.50g", " 9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- '1.50g", " 9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 '3.50g", " 9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- '50.50g", " 9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# '1G", " 1.00000E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- '3G", " 1.00000E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000001.00000E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- '.0G", " 1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# '3.0G", " 1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- '50.0G", " 1.E-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 '.1G", " 1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- '1.1G", " 1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# '50.1G", " 1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- '.3G", " 1.00E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 '1.3G", " 1.00E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- '3.3G", " 1.00E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# '.50G", " 9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- '1.50G", " 9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 '3.50G", " 9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- '50.50G", " 9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# +'1g", "+1.00000e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- +'3g", "+1.00000e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000001.00000e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- +'.0g", "+1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# +'3.0g", "+1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- +'50.0g", "+1.e-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 +'.1g", "+1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- +'1.1g", "+1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# +'50.1g", " +1.e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- +'.3g", "+1.00e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 +'1.3g", "+1.00e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- +'3.3g", "+1.00e-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# +'.50g", "+9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- +'1.50g", "+9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 +'3.50g", "+9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- +'50.50g", "+9.9999999999999003727009065799365801069492612413770e-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# +'1G", "+1.00000E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- +'3G", "+1.00000E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000001.00000E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- +'.0G", "+1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# +'3.0G", "+1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- +'50.0G", "+1.E-50 ", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 +'.1G", "+1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- +'1.1G", "+1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# +'50.1G", " +1.E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- +'.3G", "+1.00E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 +'1.3G", "+1.00E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- +'3.3G", "+1.00E-50", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%# +'.50G", "+9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#- +'1.50G", "+9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0 +'3.50G", "+9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%#0- +'50.50G", "+9.9999999999999003727009065799365801069492612413770E-51", { 203, 183, 212, 74, 122, 238, 141, 53 } },
+ { "%'1g", "1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-'3g", "1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0'50g", "000000000000000000000000000000000000000000001e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-'.0g", "1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%'3.0g", "1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-'50.0g", "1e+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0'.1g", "1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-'1.1g", "1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%'50.1g", " 1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-'.3g", "1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0'1.3g", "1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-'3.3g", "1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%'.50g", "9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-'1.50g", "9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0'3.50g", "9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-'50.50g", "9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%'1G", "1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-'3G", "1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0'50G", "000000000000000000000000000000000000000000001E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-'.0G", "1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%'3.0G", "1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-'50.0G", "1E+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0'.1G", "1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-'1.1G", "1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%'50.1G", " 1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-'.3G", "1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0'1.3G", "1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-'3.3G", "1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%'.50G", "9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-'1.50G", "9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0'3.50G", "9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-'50.50G", "9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%+'1g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-+'3g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0+'50g", "+00000000000000000000000000000000000000000001e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-+'.0g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%+'3.0g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-+'50.0g", "+1e+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0+'.1g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-+'1.1g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%+'50.1g", " +1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-+'.3g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0+'1.3g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-+'3.3g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%+'.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-+'1.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0+'3.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-+'50.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%+'1G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-+'3G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0+'50G", "+00000000000000000000000000000000000000000001E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-+'.0G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%+'3.0G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-+'50.0G", "+1E+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0+'.1G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-+'1.1G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%+'50.1G", " +1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-+'.3G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0+'1.3G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-+'3.3G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%+'.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%-+'1.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0+'3.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0-+'50.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% '1g", " 1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- '3g", " 1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 '50g", " 00000000000000000000000000000000000000000001e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- '.0g", " 1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% '3.0g", " 1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- '50.0g", " 1e+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 '.1g", " 1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- '1.1g", " 1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% '50.1g", " 1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- '.3g", " 1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 '1.3g", " 1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- '3.3g", " 1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% '.50g", " 9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- '1.50g", " 9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 '3.50g", " 9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- '50.50g", " 9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% '1G", " 1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- '3G", " 1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 '50G", " 00000000000000000000000000000000000000000001E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- '.0G", " 1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% '3.0G", " 1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- '50.0G", " 1E+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 '.1G", " 1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- '1.1G", " 1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% '50.1G", " 1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- '.3G", " 1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 '1.3G", " 1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- '3.3G", " 1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% '.50G", " 9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- '1.50G", " 9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 '3.50G", " 9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- '50.50G", " 9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% +'1g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- +'3g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 +'50g", "+00000000000000000000000000000000000000000001e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- +'.0g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% +'3.0g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- +'50.0g", "+1e+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 +'.1g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- +'1.1g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% +'50.1g", " +1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- +'.3g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 +'1.3g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- +'3.3g", "+1e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% +'.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- +'1.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 +'3.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- +'50.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% +'1G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- +'3G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 +'50G", "+00000000000000000000000000000000000000000001E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- +'.0G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% +'3.0G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- +'50.0G", "+1E+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 +'.1G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- +'1.1G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% +'50.1G", " +1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- +'.3G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 +'1.3G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- +'3.3G", "+1E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "% +'.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%- +'1.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0 +'3.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%0- +'50.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#'1g", "1.00000e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-'3g", "1.00000e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0'50g", "000000000000000000000000000000000000001.00000e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-'.0g", "1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#'3.0g", "1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-'50.0g", "1.e+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0'.1g", "1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-'1.1g", "1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#'50.1g", " 1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-'.3g", "1.00e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0'1.3g", "1.00e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-'3.3g", "1.00e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#'.50g", "9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-'1.50g", "9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0'3.50g", "9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-'50.50g", "9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#'1G", "1.00000E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-'3G", "1.00000E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0'50G", "000000000000000000000000000000000000001.00000E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-'.0G", "1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#'3.0G", "1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-'50.0G", "1.E+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0'.1G", "1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-'1.1G", "1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#'50.1G", " 1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-'.3G", "1.00E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0'1.3G", "1.00E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-'3.3G", "1.00E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#'.50G", "9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-'1.50G", "9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0'3.50G", "9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-'50.50G", "9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#+'1g", "+1.00000e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-+'3g", "+1.00000e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0+'50g", "+00000000000000000000000000000000000001.00000e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-+'.0g", "+1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#+'3.0g", "+1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-+'50.0g", "+1.e+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0+'.1g", "+1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-+'1.1g", "+1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#+'50.1g", " +1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-+'.3g", "+1.00e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0+'1.3g", "+1.00e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-+'3.3g", "+1.00e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#+'.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-+'1.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0+'3.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-+'50.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#+'1G", "+1.00000E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-+'3G", "+1.00000E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0+'50G", "+00000000000000000000000000000000000001.00000E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-+'.0G", "+1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#+'3.0G", "+1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-+'50.0G", "+1.E+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0+'.1G", "+1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-+'1.1G", "+1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#+'50.1G", " +1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-+'.3G", "+1.00E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0+'1.3G", "+1.00E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-+'3.3G", "+1.00E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#+'.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#-+'1.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0+'3.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0-+'50.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# '1g", " 1.00000e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- '3g", " 1.00000e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 '50g", " 00000000000000000000000000000000000001.00000e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- '.0g", " 1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# '3.0g", " 1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- '50.0g", " 1.e+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 '.1g", " 1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- '1.1g", " 1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# '50.1g", " 1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- '.3g", " 1.00e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 '1.3g", " 1.00e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- '3.3g", " 1.00e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# '.50g", " 9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- '1.50g", " 9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 '3.50g", " 9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- '50.50g", " 9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# '1G", " 1.00000E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- '3G", " 1.00000E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 '50G", " 00000000000000000000000000000000000001.00000E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- '.0G", " 1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# '3.0G", " 1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- '50.0G", " 1.E+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 '.1G", " 1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- '1.1G", " 1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# '50.1G", " 1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- '.3G", " 1.00E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 '1.3G", " 1.00E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- '3.3G", " 1.00E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# '.50G", " 9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- '1.50G", " 9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 '3.50G", " 9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- '50.50G", " 9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# +'1g", "+1.00000e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- +'3g", "+1.00000e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 +'50g", "+00000000000000000000000000000000000001.00000e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- +'.0g", "+1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# +'3.0g", "+1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- +'50.0g", "+1.e+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 +'.1g", "+1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- +'1.1g", "+1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# +'50.1g", " +1.e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- +'.3g", "+1.00e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 +'1.3g", "+1.00e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- +'3.3g", "+1.00e+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# +'.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- +'1.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 +'3.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- +'50.50g", "+9.9999999999998998680313710784262953737076155396797e+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# +'1G", "+1.00000E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- +'3G", "+1.00000E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 +'50G", "+00000000000000000000000000000000000001.00000E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- +'.0G", "+1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# +'3.0G", "+1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- +'50.0G", "+1.E+150 ", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 +'.1G", "+1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- +'1.1G", "+1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# +'50.1G", " +1.E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- +'.3G", "+1.00E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 +'1.3G", "+1.00E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- +'3.3G", "+1.00E+150", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%# +'.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#- +'1.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0 +'3.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%#0- +'50.50G", "+9.9999999999998998680313710784262953737076155396797E+149", { 120, 150, 80, 46, 53, 141, 19, 95 } },
+ { "%'1g", "1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-'3g", "1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0'50g", "000000000000000000000000000000000000000000001e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-'.0g", "1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%'3.0g", "1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-'50.0g", "1e-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0'.1g", "1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-'1.1g", "1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%'50.1g", " 1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-'.3g", "1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0'1.3g", "1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-'3.3g", "1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%'.50g", "9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-'1.50g", "9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0'3.50g", "9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-'50.50g", "9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%'1G", "1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-'3G", "1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0'50G", "000000000000000000000000000000000000000000001E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-'.0G", "1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%'3.0G", "1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-'50.0G", "1E-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0'.1G", "1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-'1.1G", "1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%'50.1G", " 1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-'.3G", "1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0'1.3G", "1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-'3.3G", "1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%'.50G", "9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-'1.50G", "9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0'3.50G", "9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-'50.50G", "9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%+'1g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-+'3g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0+'50g", "+00000000000000000000000000000000000000000001e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-+'.0g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%+'3.0g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-+'50.0g", "+1e-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0+'.1g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-+'1.1g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%+'50.1g", " +1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-+'.3g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0+'1.3g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-+'3.3g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%+'.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-+'1.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0+'3.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-+'50.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%+'1G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-+'3G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0+'50G", "+00000000000000000000000000000000000000000001E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-+'.0G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%+'3.0G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-+'50.0G", "+1E-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0+'.1G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-+'1.1G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%+'50.1G", " +1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-+'.3G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0+'1.3G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-+'3.3G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%+'.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%-+'1.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0+'3.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0-+'50.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% '1g", " 1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- '3g", " 1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 '50g", " 00000000000000000000000000000000000000000001e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- '.0g", " 1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% '3.0g", " 1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- '50.0g", " 1e-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 '.1g", " 1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- '1.1g", " 1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% '50.1g", " 1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- '.3g", " 1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 '1.3g", " 1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- '3.3g", " 1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% '.50g", " 9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- '1.50g", " 9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 '3.50g", " 9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- '50.50g", " 9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% '1G", " 1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- '3G", " 1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 '50G", " 00000000000000000000000000000000000000000001E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- '.0G", " 1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% '3.0G", " 1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- '50.0G", " 1E-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 '.1G", " 1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- '1.1G", " 1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% '50.1G", " 1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- '.3G", " 1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 '1.3G", " 1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- '3.3G", " 1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% '.50G", " 9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- '1.50G", " 9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 '3.50G", " 9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- '50.50G", " 9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% +'1g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- +'3g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 +'50g", "+00000000000000000000000000000000000000000001e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- +'.0g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% +'3.0g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- +'50.0g", "+1e-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 +'.1g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- +'1.1g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% +'50.1g", " +1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- +'.3g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 +'1.3g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- +'3.3g", "+1e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% +'.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- +'1.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 +'3.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- +'50.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% +'1G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- +'3G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 +'50G", "+00000000000000000000000000000000000000000001E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- +'.0G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% +'3.0G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- +'50.0G", "+1E-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 +'.1G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- +'1.1G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% +'50.1G", " +1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- +'.3G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 +'1.3G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- +'3.3G", "+1E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "% +'.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%- +'1.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0 +'3.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%0- +'50.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#'1g", "1.00000e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-'3g", "1.00000e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0'50g", "000000000000000000000000000000000000001.00000e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-'.0g", "1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#'3.0g", "1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-'50.0g", "1.e-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0'.1g", "1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-'1.1g", "1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#'50.1g", " 1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-'.3g", "1.00e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0'1.3g", "1.00e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-'3.3g", "1.00e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#'.50g", "9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-'1.50g", "9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0'3.50g", "9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-'50.50g", "9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#'1G", "1.00000E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-'3G", "1.00000E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0'50G", "000000000000000000000000000000000000001.00000E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-'.0G", "1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#'3.0G", "1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-'50.0G", "1.E-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0'.1G", "1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-'1.1G", "1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#'50.1G", " 1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-'.3G", "1.00E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0'1.3G", "1.00E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-'3.3G", "1.00E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#'.50G", "9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-'1.50G", "9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0'3.50G", "9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-'50.50G", "9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#+'1g", "+1.00000e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-+'3g", "+1.00000e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0+'50g", "+00000000000000000000000000000000000001.00000e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-+'.0g", "+1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#+'3.0g", "+1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-+'50.0g", "+1.e-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0+'.1g", "+1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-+'1.1g", "+1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#+'50.1g", " +1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-+'.3g", "+1.00e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0+'1.3g", "+1.00e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-+'3.3g", "+1.00e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#+'.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-+'1.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0+'3.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-+'50.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#+'1G", "+1.00000E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-+'3G", "+1.00000E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0+'50G", "+00000000000000000000000000000000000001.00000E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-+'.0G", "+1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#+'3.0G", "+1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-+'50.0G", "+1.E-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0+'.1G", "+1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-+'1.1G", "+1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#+'50.1G", " +1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-+'.3G", "+1.00E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0+'1.3G", "+1.00E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-+'3.3G", "+1.00E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#+'.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#-+'1.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0+'3.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0-+'50.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# '1g", " 1.00000e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- '3g", " 1.00000e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 '50g", " 00000000000000000000000000000000000001.00000e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- '.0g", " 1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# '3.0g", " 1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- '50.0g", " 1.e-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 '.1g", " 1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- '1.1g", " 1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# '50.1g", " 1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- '.3g", " 1.00e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 '1.3g", " 1.00e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- '3.3g", " 1.00e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# '.50g", " 9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- '1.50g", " 9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 '3.50g", " 9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- '50.50g", " 9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# '1G", " 1.00000E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- '3G", " 1.00000E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 '50G", " 00000000000000000000000000000000000001.00000E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- '.0G", " 1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# '3.0G", " 1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- '50.0G", " 1.E-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 '.1G", " 1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- '1.1G", " 1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# '50.1G", " 1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- '.3G", " 1.00E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 '1.3G", " 1.00E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- '3.3G", " 1.00E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# '.50G", " 9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- '1.50G", " 9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 '3.50G", " 9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- '50.50G", " 9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# +'1g", "+1.00000e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- +'3g", "+1.00000e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 +'50g", "+00000000000000000000000000000000000001.00000e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- +'.0g", "+1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# +'3.0g", "+1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- +'50.0g", "+1.e-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 +'.1g", "+1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- +'1.1g", "+1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# +'50.1g", " +1.e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- +'.3g", "+1.00e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 +'1.3g", "+1.00e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- +'3.3g", "+1.00e-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# +'.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- +'1.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 +'3.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- +'50.50g", "+9.9999999999998996697971724732593184628359320226585e-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# +'1G", "+1.00000E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- +'3G", "+1.00000E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 +'50G", "+00000000000000000000000000000000000001.00000E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- +'.0G", "+1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# +'3.0G", "+1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- +'50.0G", "+1.E-150 ", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 +'.1G", "+1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- +'1.1G", "+1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# +'50.1G", " +1.E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- +'.3G", "+1.00E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 +'1.3G", "+1.00E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- +'3.3G", "+1.00E-150", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%# +'.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#- +'1.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0 +'3.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%#0- +'50.50G", "+9.9999999999998996697971724732593184628359320226585E-151", { 43, 148, 63, 106, 231, 47, 202, 32 } },
+ { "%'1g", "1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-'3g", "1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0'50g", "000000000000000000000000000000000000000000001e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-'.0g", "1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%'3.0g", "1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-'50.0g", "1e+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0'.1g", "1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-'1.1g", "1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%'50.1g", " 1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-'.3g", "1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0'1.3g", "1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-'3.3g", "1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%'.50g", "9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-'1.50g", "9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0'3.50g", "9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-'50.50g", "9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%'1G", "1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-'3G", "1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0'50G", "000000000000000000000000000000000000000000001E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-'.0G", "1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%'3.0G", "1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-'50.0G", "1E+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0'.1G", "1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-'1.1G", "1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%'50.1G", " 1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-'.3G", "1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0'1.3G", "1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-'3.3G", "1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%'.50G", "9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-'1.50G", "9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0'3.50G", "9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-'50.50G", "9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%+'1g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-+'3g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0+'50g", "+00000000000000000000000000000000000000000001e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-+'.0g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%+'3.0g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-+'50.0g", "+1e+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0+'.1g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-+'1.1g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%+'50.1g", " +1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-+'.3g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0+'1.3g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-+'3.3g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%+'.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-+'1.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0+'3.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-+'50.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%+'1G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-+'3G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0+'50G", "+00000000000000000000000000000000000000000001E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-+'.0G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%+'3.0G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-+'50.0G", "+1E+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0+'.1G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-+'1.1G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%+'50.1G", " +1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-+'.3G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0+'1.3G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-+'3.3G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%+'.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%-+'1.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0+'3.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0-+'50.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% '1g", " 1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- '3g", " 1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 '50g", " 00000000000000000000000000000000000000000001e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- '.0g", " 1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% '3.0g", " 1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- '50.0g", " 1e+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 '.1g", " 1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- '1.1g", " 1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% '50.1g", " 1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- '.3g", " 1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 '1.3g", " 1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- '3.3g", " 1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% '.50g", " 9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- '1.50g", " 9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 '3.50g", " 9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- '50.50g", " 9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% '1G", " 1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- '3G", " 1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 '50G", " 00000000000000000000000000000000000000000001E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- '.0G", " 1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% '3.0G", " 1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- '50.0G", " 1E+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 '.1G", " 1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- '1.1G", " 1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% '50.1G", " 1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- '.3G", " 1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 '1.3G", " 1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- '3.3G", " 1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% '.50G", " 9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- '1.50G", " 9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 '3.50G", " 9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- '50.50G", " 9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% +'1g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- +'3g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 +'50g", "+00000000000000000000000000000000000000000001e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- +'.0g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% +'3.0g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- +'50.0g", "+1e+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 +'.1g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- +'1.1g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% +'50.1g", " +1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- +'.3g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 +'1.3g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- +'3.3g", "+1e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% +'.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- +'1.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 +'3.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- +'50.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% +'1G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- +'3G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 +'50G", "+00000000000000000000000000000000000000000001E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- +'.0G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% +'3.0G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- +'50.0G", "+1E+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 +'.1G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- +'1.1G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% +'50.1G", " +1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- +'.3G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 +'1.3G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- +'3.3G", "+1E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "% +'.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%- +'1.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0 +'3.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%0- +'50.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#'1g", "1.00000e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-'3g", "1.00000e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0'50g", "000000000000000000000000000000000000001.00000e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-'.0g", "1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#'3.0g", "1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-'50.0g", "1.e+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0'.1g", "1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-'1.1g", "1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#'50.1g", " 1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-'.3g", "1.00e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0'1.3g", "1.00e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-'3.3g", "1.00e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#'.50g", "9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-'1.50g", "9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0'3.50g", "9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-'50.50g", "9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#'1G", "1.00000E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-'3G", "1.00000E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0'50G", "000000000000000000000000000000000000001.00000E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-'.0G", "1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#'3.0G", "1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-'50.0G", "1.E+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0'.1G", "1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-'1.1G", "1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#'50.1G", " 1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-'.3G", "1.00E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0'1.3G", "1.00E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-'3.3G", "1.00E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#'.50G", "9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-'1.50G", "9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0'3.50G", "9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-'50.50G", "9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#+'1g", "+1.00000e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-+'3g", "+1.00000e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0+'50g", "+00000000000000000000000000000000000001.00000e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-+'.0g", "+1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#+'3.0g", "+1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-+'50.0g", "+1.e+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0+'.1g", "+1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-+'1.1g", "+1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#+'50.1g", " +1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-+'.3g", "+1.00e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0+'1.3g", "+1.00e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-+'3.3g", "+1.00e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#+'.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-+'1.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0+'3.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-+'50.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#+'1G", "+1.00000E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-+'3G", "+1.00000E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0+'50G", "+00000000000000000000000000000000000001.00000E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-+'.0G", "+1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#+'3.0G", "+1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-+'50.0G", "+1.E+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0+'.1G", "+1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-+'1.1G", "+1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#+'50.1G", " +1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-+'.3G", "+1.00E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0+'1.3G", "+1.00E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-+'3.3G", "+1.00E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#+'.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#-+'1.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0+'3.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0-+'50.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# '1g", " 1.00000e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- '3g", " 1.00000e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 '50g", " 00000000000000000000000000000000000001.00000e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- '.0g", " 1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# '3.0g", " 1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- '50.0g", " 1.e+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 '.1g", " 1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- '1.1g", " 1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# '50.1g", " 1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- '.3g", " 1.00e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 '1.3g", " 1.00e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- '3.3g", " 1.00e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# '.50g", " 9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- '1.50g", " 9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 '3.50g", " 9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- '50.50g", " 9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# '1G", " 1.00000E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- '3G", " 1.00000E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 '50G", " 00000000000000000000000000000000000001.00000E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- '.0G", " 1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# '3.0G", " 1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- '50.0G", " 1.E+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 '.1G", " 1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- '1.1G", " 1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# '50.1G", " 1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- '.3G", " 1.00E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 '1.3G", " 1.00E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- '3.3G", " 1.00E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# '.50G", " 9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- '1.50G", " 9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 '3.50G", " 9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- '50.50G", " 9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# +'1g", "+1.00000e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- +'3g", "+1.00000e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 +'50g", "+00000000000000000000000000000000000001.00000e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- +'.0g", "+1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# +'3.0g", "+1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- +'50.0g", "+1.e+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 +'.1g", "+1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- +'1.1g", "+1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# +'50.1g", " +1.e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- +'.3g", "+1.00e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 +'1.3g", "+1.00e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- +'3.3g", "+1.00e+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# +'.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- +'1.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 +'3.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- +'50.50g", "+9.9999999999998994184781783194753840004916356484734e+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# +'1G", "+1.00000E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- +'3G", "+1.00000E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 +'50G", "+00000000000000000000000000000000000001.00000E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- +'.0G", "+1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# +'3.0G", "+1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- +'50.0G", "+1.E+200 ", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 +'.1G", "+1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- +'1.1G", "+1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# +'50.1G", " +1.E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- +'.3G", "+1.00E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 +'1.3G", "+1.00E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- +'3.3G", "+1.00E+200", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%# +'.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#- +'1.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0 +'3.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%#0- +'50.50G", "+9.9999999999998994184781783194753840004916356484734E+199", { 31, 98, 215, 215, 24, 231, 116, 105 } },
+ { "%'1g", "1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-'3g", "1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0'50g", "000000000000000000000000000000000000000000001e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-'.0g", "1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%'3.0g", "1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-'50.0g", "1e-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0'.1g", "1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-'1.1g", "1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%'50.1g", " 1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-'.3g", "1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0'1.3g", "1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-'3.3g", "1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%'.50g", "9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-'1.50g", "9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0'3.50g", "9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-'50.50g", "9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%'1G", "1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-'3G", "1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0'50G", "000000000000000000000000000000000000000000001E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-'.0G", "1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%'3.0G", "1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-'50.0G", "1E-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0'.1G", "1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-'1.1G", "1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%'50.1G", " 1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-'.3G", "1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0'1.3G", "1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-'3.3G", "1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%'.50G", "9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-'1.50G", "9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0'3.50G", "9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-'50.50G", "9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%+'1g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-+'3g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0+'50g", "+00000000000000000000000000000000000000000001e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-+'.0g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%+'3.0g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-+'50.0g", "+1e-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0+'.1g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-+'1.1g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%+'50.1g", " +1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-+'.3g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0+'1.3g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-+'3.3g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%+'.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-+'1.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0+'3.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-+'50.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%+'1G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-+'3G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0+'50G", "+00000000000000000000000000000000000000000001E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-+'.0G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%+'3.0G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-+'50.0G", "+1E-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0+'.1G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-+'1.1G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%+'50.1G", " +1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-+'.3G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0+'1.3G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-+'3.3G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%+'.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%-+'1.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0+'3.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0-+'50.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% '1g", " 1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- '3g", " 1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 '50g", " 00000000000000000000000000000000000000000001e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- '.0g", " 1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% '3.0g", " 1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- '50.0g", " 1e-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 '.1g", " 1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- '1.1g", " 1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% '50.1g", " 1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- '.3g", " 1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 '1.3g", " 1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- '3.3g", " 1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% '.50g", " 9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- '1.50g", " 9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 '3.50g", " 9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- '50.50g", " 9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% '1G", " 1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- '3G", " 1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 '50G", " 00000000000000000000000000000000000000000001E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- '.0G", " 1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% '3.0G", " 1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- '50.0G", " 1E-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 '.1G", " 1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- '1.1G", " 1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% '50.1G", " 1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- '.3G", " 1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 '1.3G", " 1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- '3.3G", " 1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% '.50G", " 9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- '1.50G", " 9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 '3.50G", " 9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- '50.50G", " 9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% +'1g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- +'3g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 +'50g", "+00000000000000000000000000000000000000000001e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- +'.0g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% +'3.0g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- +'50.0g", "+1e-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 +'.1g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- +'1.1g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% +'50.1g", " +1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- +'.3g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 +'1.3g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- +'3.3g", "+1e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% +'.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- +'1.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 +'3.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- +'50.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% +'1G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- +'3G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 +'50G", "+00000000000000000000000000000000000000000001E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- +'.0G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% +'3.0G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- +'50.0G", "+1E-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 +'.1G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- +'1.1G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% +'50.1G", " +1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- +'.3G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 +'1.3G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- +'3.3G", "+1E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "% +'.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%- +'1.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0 +'3.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%0- +'50.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#'1g", "1.00000e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-'3g", "1.00000e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0'50g", "000000000000000000000000000000000000001.00000e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-'.0g", "1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#'3.0g", "1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-'50.0g", "1.e-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0'.1g", "1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-'1.1g", "1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#'50.1g", " 1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-'.3g", "1.00e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0'1.3g", "1.00e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-'3.3g", "1.00e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#'.50g", "9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-'1.50g", "9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0'3.50g", "9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-'50.50g", "9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#'1G", "1.00000E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-'3G", "1.00000E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0'50G", "000000000000000000000000000000000000001.00000E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-'.0G", "1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#'3.0G", "1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-'50.0G", "1.E-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0'.1G", "1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-'1.1G", "1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#'50.1G", " 1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-'.3G", "1.00E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0'1.3G", "1.00E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-'3.3G", "1.00E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#'.50G", "9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-'1.50G", "9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0'3.50G", "9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-'50.50G", "9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#+'1g", "+1.00000e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-+'3g", "+1.00000e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0+'50g", "+00000000000000000000000000000000000001.00000e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-+'.0g", "+1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#+'3.0g", "+1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-+'50.0g", "+1.e-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0+'.1g", "+1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-+'1.1g", "+1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#+'50.1g", " +1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-+'.3g", "+1.00e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0+'1.3g", "+1.00e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-+'3.3g", "+1.00e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#+'.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-+'1.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0+'3.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-+'50.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#+'1G", "+1.00000E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-+'3G", "+1.00000E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0+'50G", "+00000000000000000000000000000000000001.00000E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-+'.0G", "+1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#+'3.0G", "+1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-+'50.0G", "+1.E-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0+'.1G", "+1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-+'1.1G", "+1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#+'50.1G", " +1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-+'.3G", "+1.00E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0+'1.3G", "+1.00E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-+'3.3G", "+1.00E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#+'.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#-+'1.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0+'3.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0-+'50.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# '1g", " 1.00000e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- '3g", " 1.00000e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 '50g", " 00000000000000000000000000000000000001.00000e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- '.0g", " 1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# '3.0g", " 1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- '50.0g", " 1.e-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 '.1g", " 1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- '1.1g", " 1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# '50.1g", " 1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- '.3g", " 1.00e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 '1.3g", " 1.00e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- '3.3g", " 1.00e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# '.50g", " 9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- '1.50g", " 9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 '3.50g", " 9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- '50.50g", " 9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# '1G", " 1.00000E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- '3G", " 1.00000E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 '50G", " 00000000000000000000000000000000000001.00000E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- '.0G", " 1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# '3.0G", " 1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- '50.0G", " 1.E-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 '.1G", " 1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- '1.1G", " 1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# '50.1G", " 1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- '.3G", " 1.00E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 '1.3G", " 1.00E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- '3.3G", " 1.00E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# '.50G", " 9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- '1.50G", " 9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 '3.50G", " 9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- '50.50G", " 9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# +'1g", "+1.00000e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- +'3g", "+1.00000e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 +'50g", "+00000000000000000000000000000000000001.00000e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- +'.0g", "+1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# +'3.0g", "+1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- +'50.0g", "+1.e-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 +'.1g", "+1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- +'1.1g", "+1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# +'50.1g", " +1.e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- +'.3g", "+1.00e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 +'1.3g", "+1.00e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- +'3.3g", "+1.00e-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# +'.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- +'1.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 +'3.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- +'50.50g", "+9.9999999999998997421771888360822479533450192126953e-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# +'1G", "+1.00000E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- +'3G", "+1.00000E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 +'50G", "+00000000000000000000000000000000000001.00000E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- +'.0G", "+1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# +'3.0G", "+1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- +'50.0G", "+1.E-200 ", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 +'.1G", "+1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- +'1.1G", "+1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# +'50.1G", " +1.E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- +'.3G", "+1.00E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 +'1.3G", "+1.00E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- +'3.3G", "+1.00E-200", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%# +'.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#- +'1.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0 +'3.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%#0- +'50.50G", "+9.9999999999998997421771888360822479533450192126953E-201", { 103, 247, 78, 21, 146, 126, 104, 22 } },
+ { "%'1g", "1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-'3g", "1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0'50g", "000000000000000000000000000000000000001.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-'.0g", "2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%'3.0g", "2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-'50.0g", "2e+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0'.1g", "2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-'1.1g", "2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%'50.1g", " 2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-'.3g", "1.8e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0'1.3g", "1.8e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-'3.3g", "1.8e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%'.50g", "1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-'1.50g", "1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0'3.50g", "1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-'50.50g", "1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%'1G", "1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-'3G", "1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0'50G", "000000000000000000000000000000000000001.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-'.0G", "2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%'3.0G", "2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-'50.0G", "2E+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0'.1G", "2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-'1.1G", "2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%'50.1G", " 2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-'.3G", "1.8E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0'1.3G", "1.8E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-'3.3G", "1.8E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%'.50G", "1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-'1.50G", "1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0'3.50G", "1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-'50.50G", "1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%+'1g", "+1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-+'3g", "+1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0+'50g", "+00000000000000000000000000000000000001.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-+'.0g", "+2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%+'3.0g", "+2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-+'50.0g", "+2e+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0+'.1g", "+2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-+'1.1g", "+2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%+'50.1g", " +2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-+'.3g", "+1.8e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0+'1.3g", "+1.8e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-+'3.3g", "+1.8e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%+'.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-+'1.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0+'3.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-+'50.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%+'1G", "+1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-+'3G", "+1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0+'50G", "+00000000000000000000000000000000000001.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-+'.0G", "+2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%+'3.0G", "+2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-+'50.0G", "+2E+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0+'.1G", "+2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-+'1.1G", "+2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%+'50.1G", " +2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-+'.3G", "+1.8E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0+'1.3G", "+1.8E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-+'3.3G", "+1.8E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%+'.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%-+'1.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0+'3.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0-+'50.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% '1g", " 1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- '3g", " 1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 '50g", " 00000000000000000000000000000000000001.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- '.0g", " 2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% '3.0g", " 2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- '50.0g", " 2e+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 '.1g", " 2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- '1.1g", " 2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% '50.1g", " 2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- '.3g", " 1.8e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 '1.3g", " 1.8e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- '3.3g", " 1.8e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% '.50g", " 1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- '1.50g", " 1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 '3.50g", " 1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- '50.50g", " 1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% '1G", " 1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- '3G", " 1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 '50G", " 00000000000000000000000000000000000001.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- '.0G", " 2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% '3.0G", " 2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- '50.0G", " 2E+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 '.1G", " 2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- '1.1G", " 2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% '50.1G", " 2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- '.3G", " 1.8E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 '1.3G", " 1.8E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- '3.3G", " 1.8E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% '.50G", " 1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- '1.50G", " 1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 '3.50G", " 1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- '50.50G", " 1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% +'1g", "+1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- +'3g", "+1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 +'50g", "+00000000000000000000000000000000000001.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- +'.0g", "+2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% +'3.0g", "+2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- +'50.0g", "+2e+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 +'.1g", "+2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- +'1.1g", "+2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% +'50.1g", " +2e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- +'.3g", "+1.8e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 +'1.3g", "+1.8e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- +'3.3g", "+1.8e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% +'.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- +'1.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 +'3.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- +'50.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% +'1G", "+1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- +'3G", "+1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 +'50G", "+00000000000000000000000000000000000001.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- +'.0G", "+2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% +'3.0G", "+2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- +'50.0G", "+2E+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 +'.1G", "+2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- +'1.1G", "+2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% +'50.1G", " +2E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- +'.3G", "+1.8E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 +'1.3G", "+1.8E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- +'3.3G", "+1.8E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "% +'.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%- +'1.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0 +'3.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%0- +'50.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#'1g", "1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-'3g", "1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0'50g", "000000000000000000000000000000000000001.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-'.0g", "2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#'3.0g", "2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-'50.0g", "2.e+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0'.1g", "2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-'1.1g", "2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#'50.1g", " 2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-'.3g", "1.80e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0'1.3g", "1.80e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-'3.3g", "1.80e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#'.50g", "1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-'1.50g", "1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0'3.50g", "1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-'50.50g", "1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#'1G", "1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-'3G", "1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0'50G", "000000000000000000000000000000000000001.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-'.0G", "2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#'3.0G", "2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-'50.0G", "2.E+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0'.1G", "2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-'1.1G", "2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#'50.1G", " 2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-'.3G", "1.80E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0'1.3G", "1.80E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-'3.3G", "1.80E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#'.50G", "1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-'1.50G", "1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0'3.50G", "1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-'50.50G", "1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#+'1g", "+1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-+'3g", "+1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0+'50g", "+00000000000000000000000000000000000001.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-+'.0g", "+2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#+'3.0g", "+2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-+'50.0g", "+2.e+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0+'.1g", "+2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-+'1.1g", "+2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#+'50.1g", " +2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-+'.3g", "+1.80e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0+'1.3g", "+1.80e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-+'3.3g", "+1.80e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#+'.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-+'1.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0+'3.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-+'50.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#+'1G", "+1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-+'3G", "+1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0+'50G", "+00000000000000000000000000000000000001.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-+'.0G", "+2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#+'3.0G", "+2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-+'50.0G", "+2.E+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0+'.1G", "+2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-+'1.1G", "+2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#+'50.1G", " +2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-+'.3G", "+1.80E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0+'1.3G", "+1.80E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-+'3.3G", "+1.80E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#+'.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#-+'1.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0+'3.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0-+'50.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# '1g", " 1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- '3g", " 1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 '50g", " 00000000000000000000000000000000000001.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- '.0g", " 2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# '3.0g", " 2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- '50.0g", " 2.e+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 '.1g", " 2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- '1.1g", " 2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# '50.1g", " 2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- '.3g", " 1.80e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 '1.3g", " 1.80e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- '3.3g", " 1.80e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# '.50g", " 1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- '1.50g", " 1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 '3.50g", " 1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- '50.50g", " 1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# '1G", " 1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- '3G", " 1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 '50G", " 00000000000000000000000000000000000001.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- '.0G", " 2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# '3.0G", " 2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- '50.0G", " 2.E+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 '.1G", " 2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- '1.1G", " 2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# '50.1G", " 2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- '.3G", " 1.80E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 '1.3G", " 1.80E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- '3.3G", " 1.80E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# '.50G", " 1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- '1.50G", " 1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 '3.50G", " 1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- '50.50G", " 1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# +'1g", "+1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- +'3g", "+1.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 +'50g", "+00000000000000000000000000000000000001.79769e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- +'.0g", "+2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# +'3.0g", "+2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- +'50.0g", "+2.e+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 +'.1g", "+2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- +'1.1g", "+2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# +'50.1g", " +2.e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- +'.3g", "+1.80e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 +'1.3g", "+1.80e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- +'3.3g", "+1.80e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# +'.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- +'1.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 +'3.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- +'50.50g", "+1.7976931348623157081452742373170435679807056752584e+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# +'1G", "+1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- +'3G", "+1.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 +'50G", "+00000000000000000000000000000000000001.79769E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- +'.0G", "+2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# +'3.0G", "+2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- +'50.0G", "+2.E+308 ", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 +'.1G", "+2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- +'1.1G", "+2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# +'50.1G", " +2.E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- +'.3G", "+1.80E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 +'1.3G", "+1.80E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- +'3.3G", "+1.80E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%# +'.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#- +'1.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0 +'3.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%#0- +'50.50G", "+1.7976931348623157081452742373170435679807056752584E+308", { 255, 255, 255, 255, 255, 255, 239, 127 } },
+ { "%'1g", "3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-'3g", "3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0'50g", "0000000000000000000000000000000000000003.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-'.0g", "3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%'3.0g", "3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-'50.0g", "3e+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0'.1g", "3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-'1.1g", "3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%'50.1g", " 3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-'.3g", "3.4e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0'1.3g", "3.4e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-'3.3g", "3.4e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%'.50g", "340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-'1.50g", "340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0'3.50g", "340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-'50.50g", "340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%'1G", "3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-'3G", "3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0'50G", "0000000000000000000000000000000000000003.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-'.0G", "3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%'3.0G", "3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-'50.0G", "3E+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0'.1G", "3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-'1.1G", "3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%'50.1G", " 3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-'.3G", "3.4E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0'1.3G", "3.4E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-'3.3G", "3.4E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%'.50G", "340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-'1.50G", "340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0'3.50G", "340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-'50.50G", "340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%+'1g", "+3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-+'3g", "+3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0+'50g", "+000000000000000000000000000000000000003.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-+'.0g", "+3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%+'3.0g", "+3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-+'50.0g", "+3e+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0+'.1g", "+3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-+'1.1g", "+3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%+'50.1g", " +3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-+'.3g", "+3.4e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0+'1.3g", "+3.4e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-+'3.3g", "+3.4e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%+'.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-+'1.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0+'3.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-+'50.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%+'1G", "+3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-+'3G", "+3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0+'50G", "+000000000000000000000000000000000000003.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-+'.0G", "+3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%+'3.0G", "+3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-+'50.0G", "+3E+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0+'.1G", "+3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-+'1.1G", "+3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%+'50.1G", " +3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-+'.3G", "+3.4E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0+'1.3G", "+3.4E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-+'3.3G", "+3.4E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%+'.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%-+'1.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0+'3.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0-+'50.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% '1g", " 3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- '3g", " 3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 '50g", " 000000000000000000000000000000000000003.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- '.0g", " 3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% '3.0g", " 3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- '50.0g", " 3e+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 '.1g", " 3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- '1.1g", " 3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% '50.1g", " 3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- '.3g", " 3.4e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 '1.3g", " 3.4e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- '3.3g", " 3.4e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% '.50g", " 340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- '1.50g", " 340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 '3.50g", " 340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- '50.50g", " 340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% '1G", " 3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- '3G", " 3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 '50G", " 000000000000000000000000000000000000003.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- '.0G", " 3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% '3.0G", " 3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- '50.0G", " 3E+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 '.1G", " 3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- '1.1G", " 3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% '50.1G", " 3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- '.3G", " 3.4E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 '1.3G", " 3.4E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- '3.3G", " 3.4E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% '.50G", " 340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- '1.50G", " 340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 '3.50G", " 340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- '50.50G", " 340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% +'1g", "+3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- +'3g", "+3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000003.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- +'.0g", "+3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% +'3.0g", "+3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- +'50.0g", "+3e+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 +'.1g", "+3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- +'1.1g", "+3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% +'50.1g", " +3e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- +'.3g", "+3.4e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 +'1.3g", "+3.4e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- +'3.3g", "+3.4e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% +'.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- +'1.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 +'3.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- +'50.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% +'1G", "+3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- +'3G", "+3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000003.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- +'.0G", "+3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% +'3.0G", "+3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- +'50.0G", "+3E+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 +'.1G", "+3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- +'1.1G", "+3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% +'50.1G", " +3E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- +'.3G", "+3.4E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 +'1.3G", "+3.4E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- +'3.3G", "+3.4E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "% +'.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%- +'1.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0 +'3.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%0- +'50.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#'1g", "3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-'3g", "3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0'50g", "0000000000000000000000000000000000000003.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-'.0g", "3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#'3.0g", "3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-'50.0g", "3.e+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0'.1g", "3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-'1.1g", "3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#'50.1g", " 3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-'.3g", "3.40e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0'1.3g", "3.40e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-'3.3g", "3.40e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#'.50g", "340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-'1.50g", "340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0'3.50g", "340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-'50.50g", "340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#'1G", "3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-'3G", "3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0'50G", "0000000000000000000000000000000000000003.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-'.0G", "3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#'3.0G", "3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-'50.0G", "3.E+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0'.1G", "3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-'1.1G", "3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#'50.1G", " 3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-'.3G", "3.40E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0'1.3G", "3.40E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-'3.3G", "3.40E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#'.50G", "340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-'1.50G", "340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0'3.50G", "340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-'50.50G", "340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#+'1g", "+3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-+'3g", "+3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000003.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-+'.0g", "+3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#+'3.0g", "+3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-+'50.0g", "+3.e+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0+'.1g", "+3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-+'1.1g", "+3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#+'50.1g", " +3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-+'.3g", "+3.40e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0+'1.3g", "+3.40e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-+'3.3g", "+3.40e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#+'.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-+'1.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0+'3.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-+'50.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#+'1G", "+3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-+'3G", "+3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000003.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-+'.0G", "+3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#+'3.0G", "+3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-+'50.0G", "+3.E+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0+'.1G", "+3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-+'1.1G", "+3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#+'50.1G", " +3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-+'.3G", "+3.40E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0+'1.3G", "+3.40E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-+'3.3G", "+3.40E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#+'.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#-+'1.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0+'3.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0-+'50.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# '1g", " 3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- '3g", " 3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000003.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- '.0g", " 3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# '3.0g", " 3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- '50.0g", " 3.e+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 '.1g", " 3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- '1.1g", " 3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# '50.1g", " 3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- '.3g", " 3.40e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 '1.3g", " 3.40e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- '3.3g", " 3.40e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# '.50g", " 340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- '1.50g", " 340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 '3.50g", " 340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- '50.50g", " 340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# '1G", " 3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- '3G", " 3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000003.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- '.0G", " 3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# '3.0G", " 3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- '50.0G", " 3.E+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 '.1G", " 3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- '1.1G", " 3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# '50.1G", " 3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- '.3G", " 3.40E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 '1.3G", " 3.40E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- '3.3G", " 3.40E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# '.50G", " 340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- '1.50G", " 340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 '3.50G", " 340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- '50.50G", " 340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# +'1g", "+3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- +'3g", "+3.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000003.40282e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- +'.0g", "+3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# +'3.0g", "+3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- +'50.0g", "+3.e+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 +'.1g", "+3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- +'1.1g", "+3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# +'50.1g", " +3.e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- +'.3g", "+3.40e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 +'1.3g", "+3.40e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- +'3.3g", "+3.40e+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# +'.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- +'1.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 +'3.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- +'50.50g", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# +'1G", "+3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- +'3G", "+3.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000003.40282E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- +'.0G", "+3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# +'3.0G", "+3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- +'50.0G", "+3.E+38 ", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 +'.1G", "+3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- +'1.1G", "+3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# +'50.1G", " +3.E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- +'.3G", "+3.40E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 +'1.3G", "+3.40E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- +'3.3G", "+3.40E+38", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%# +'.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#- +'1.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0 +'3.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%#0- +'50.50G", "+340,282,346,638,528,859,811,704,183,484,516,925,440.00000000000", { 0, 0, 0, 224, 255, 255, 239, 71 } },
+ { "%'1g", "2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-'3g", "2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0'50g", "0000000000000000000000000000000000000002.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-'.0g", "2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%'3.0g", "2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-'50.0g", "2e-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0'.1g", "2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-'1.1g", "2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%'50.1g", " 2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-'.3g", "2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0'1.3g", "2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-'3.3g", "2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%'.50g", "2.220446049250313080847263336181640625e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-'1.50g", "2.220446049250313080847263336181640625e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0'3.50g", "2.220446049250313080847263336181640625e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-'50.50g", "2.220446049250313080847263336181640625e-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%'1G", "2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-'3G", "2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0'50G", "0000000000000000000000000000000000000002.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-'.0G", "2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%'3.0G", "2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-'50.0G", "2E-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0'.1G", "2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-'1.1G", "2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%'50.1G", " 2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-'.3G", "2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0'1.3G", "2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-'3.3G", "2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%'.50G", "2.220446049250313080847263336181640625E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-'1.50G", "2.220446049250313080847263336181640625E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0'3.50G", "2.220446049250313080847263336181640625E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-'50.50G", "2.220446049250313080847263336181640625E-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%+'1g", "+2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-+'3g", "+2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0+'50g", "+000000000000000000000000000000000000002.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-+'.0g", "+2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%+'3.0g", "+2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-+'50.0g", "+2e-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0+'.1g", "+2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-+'1.1g", "+2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%+'50.1g", " +2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-+'.3g", "+2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0+'1.3g", "+2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-+'3.3g", "+2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%+'.50g", "+2.220446049250313080847263336181640625e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-+'1.50g", "+2.220446049250313080847263336181640625e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0+'3.50g", "+2.220446049250313080847263336181640625e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-+'50.50g", "+2.220446049250313080847263336181640625e-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%+'1G", "+2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-+'3G", "+2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0+'50G", "+000000000000000000000000000000000000002.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-+'.0G", "+2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%+'3.0G", "+2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-+'50.0G", "+2E-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0+'.1G", "+2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-+'1.1G", "+2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%+'50.1G", " +2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-+'.3G", "+2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0+'1.3G", "+2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-+'3.3G", "+2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%+'.50G", "+2.220446049250313080847263336181640625E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%-+'1.50G", "+2.220446049250313080847263336181640625E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0+'3.50G", "+2.220446049250313080847263336181640625E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0-+'50.50G", "+2.220446049250313080847263336181640625E-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% '1g", " 2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- '3g", " 2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 '50g", " 000000000000000000000000000000000000002.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- '.0g", " 2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% '3.0g", " 2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- '50.0g", " 2e-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 '.1g", " 2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- '1.1g", " 2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% '50.1g", " 2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- '.3g", " 2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 '1.3g", " 2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- '3.3g", " 2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% '.50g", " 2.220446049250313080847263336181640625e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- '1.50g", " 2.220446049250313080847263336181640625e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 '3.50g", " 2.220446049250313080847263336181640625e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- '50.50g", " 2.220446049250313080847263336181640625e-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% '1G", " 2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- '3G", " 2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 '50G", " 000000000000000000000000000000000000002.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- '.0G", " 2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% '3.0G", " 2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- '50.0G", " 2E-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 '.1G", " 2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- '1.1G", " 2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% '50.1G", " 2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- '.3G", " 2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 '1.3G", " 2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- '3.3G", " 2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% '.50G", " 2.220446049250313080847263336181640625E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- '1.50G", " 2.220446049250313080847263336181640625E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 '3.50G", " 2.220446049250313080847263336181640625E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- '50.50G", " 2.220446049250313080847263336181640625E-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% +'1g", "+2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- +'3g", "+2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000002.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- +'.0g", "+2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% +'3.0g", "+2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- +'50.0g", "+2e-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 +'.1g", "+2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- +'1.1g", "+2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% +'50.1g", " +2e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- +'.3g", "+2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 +'1.3g", "+2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- +'3.3g", "+2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% +'.50g", "+2.220446049250313080847263336181640625e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- +'1.50g", "+2.220446049250313080847263336181640625e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 +'3.50g", "+2.220446049250313080847263336181640625e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- +'50.50g", "+2.220446049250313080847263336181640625e-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% +'1G", "+2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- +'3G", "+2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000002.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- +'.0G", "+2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% +'3.0G", "+2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- +'50.0G", "+2E-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 +'.1G", "+2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- +'1.1G", "+2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% +'50.1G", " +2E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- +'.3G", "+2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 +'1.3G", "+2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- +'3.3G", "+2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "% +'.50G", "+2.220446049250313080847263336181640625E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%- +'1.50G", "+2.220446049250313080847263336181640625E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0 +'3.50G", "+2.220446049250313080847263336181640625E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%0- +'50.50G", "+2.220446049250313080847263336181640625E-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#'1g", "2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-'3g", "2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0'50g", "0000000000000000000000000000000000000002.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-'.0g", "2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#'3.0g", "2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-'50.0g", "2.e-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0'.1g", "2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-'1.1g", "2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#'50.1g", " 2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-'.3g", "2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0'1.3g", "2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-'3.3g", "2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#'.50g", "2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-'1.50g", "2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0'3.50g", "2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-'50.50g", "2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#'1G", "2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-'3G", "2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0'50G", "0000000000000000000000000000000000000002.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-'.0G", "2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#'3.0G", "2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-'50.0G", "2.E-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0'.1G", "2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-'1.1G", "2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#'50.1G", " 2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-'.3G", "2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0'1.3G", "2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-'3.3G", "2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#'.50G", "2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-'1.50G", "2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0'3.50G", "2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-'50.50G", "2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#+'1g", "+2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-+'3g", "+2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000002.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-+'.0g", "+2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#+'3.0g", "+2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-+'50.0g", "+2.e-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0+'.1g", "+2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-+'1.1g", "+2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#+'50.1g", " +2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-+'.3g", "+2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0+'1.3g", "+2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-+'3.3g", "+2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#+'.50g", "+2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-+'1.50g", "+2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0+'3.50g", "+2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-+'50.50g", "+2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#+'1G", "+2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-+'3G", "+2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000002.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-+'.0G", "+2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#+'3.0G", "+2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-+'50.0G", "+2.E-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0+'.1G", "+2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-+'1.1G", "+2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#+'50.1G", " +2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-+'.3G", "+2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0+'1.3G", "+2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-+'3.3G", "+2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#+'.50G", "+2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#-+'1.50G", "+2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0+'3.50G", "+2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0-+'50.50G", "+2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# '1g", " 2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- '3g", " 2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000002.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- '.0g", " 2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# '3.0g", " 2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- '50.0g", " 2.e-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 '.1g", " 2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- '1.1g", " 2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# '50.1g", " 2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- '.3g", " 2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 '1.3g", " 2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- '3.3g", " 2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# '.50g", " 2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- '1.50g", " 2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 '3.50g", " 2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- '50.50g", " 2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# '1G", " 2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- '3G", " 2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000002.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- '.0G", " 2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# '3.0G", " 2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- '50.0G", " 2.E-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 '.1G", " 2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- '1.1G", " 2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# '50.1G", " 2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- '.3G", " 2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 '1.3G", " 2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- '3.3G", " 2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# '.50G", " 2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- '1.50G", " 2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 '3.50G", " 2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- '50.50G", " 2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# +'1g", "+2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- +'3g", "+2.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000002.22045e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- +'.0g", "+2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# +'3.0g", "+2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- +'50.0g", "+2.e-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 +'.1g", "+2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- +'1.1g", "+2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# +'50.1g", " +2.e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- +'.3g", "+2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 +'1.3g", "+2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- +'3.3g", "+2.22e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# +'.50g", "+2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- +'1.50g", "+2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 +'3.50g", "+2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- +'50.50g", "+2.2204460492503130808472633361816406250000000000000e-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# +'1G", "+2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- +'3G", "+2.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000002.22045E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- +'.0G", "+2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# +'3.0G", "+2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- +'50.0G", "+2.E-16 ", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 +'.1G", "+2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- +'1.1G", "+2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# +'50.1G", " +2.E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- +'.3G", "+2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 +'1.3G", "+2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- +'3.3G", "+2.22E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%# +'.50G", "+2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#- +'1.50G", "+2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0 +'3.50G", "+2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%#0- +'50.50G", "+2.2204460492503130808472633361816406250000000000000E-16", { 0, 0, 0, 0, 0, 0, 176, 60 } },
+ { "%'1g", "2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-'3g", "2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0'50g", "000000000000000000000000000000000000002.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-'.0g", "2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%'3.0g", "2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-'50.0g", "2e-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0'.1g", "2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-'1.1g", "2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%'50.1g", " 2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-'.3g", "2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0'1.3g", "2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-'3.3g", "2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%'.50g", "2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-'1.50g", "2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0'3.50g", "2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-'50.50g", "2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%'1G", "2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-'3G", "2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0'50G", "000000000000000000000000000000000000002.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-'.0G", "2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%'3.0G", "2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-'50.0G", "2E-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0'.1G", "2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-'1.1G", "2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%'50.1G", " 2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-'.3G", "2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0'1.3G", "2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-'3.3G", "2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%'.50G", "2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-'1.50G", "2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0'3.50G", "2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-'50.50G", "2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%+'1g", "+2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-+'3g", "+2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0+'50g", "+00000000000000000000000000000000000002.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-+'.0g", "+2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%+'3.0g", "+2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-+'50.0g", "+2e-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0+'.1g", "+2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-+'1.1g", "+2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%+'50.1g", " +2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-+'.3g", "+2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0+'1.3g", "+2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-+'3.3g", "+2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%+'.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-+'1.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0+'3.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-+'50.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%+'1G", "+2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-+'3G", "+2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0+'50G", "+00000000000000000000000000000000000002.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-+'.0G", "+2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%+'3.0G", "+2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-+'50.0G", "+2E-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0+'.1G", "+2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-+'1.1G", "+2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%+'50.1G", " +2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-+'.3G", "+2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0+'1.3G", "+2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-+'3.3G", "+2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%+'.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%-+'1.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0+'3.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0-+'50.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% '1g", " 2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- '3g", " 2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 '50g", " 00000000000000000000000000000000000002.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- '.0g", " 2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% '3.0g", " 2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- '50.0g", " 2e-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 '.1g", " 2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- '1.1g", " 2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% '50.1g", " 2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- '.3g", " 2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 '1.3g", " 2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- '3.3g", " 2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% '.50g", " 2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- '1.50g", " 2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 '3.50g", " 2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- '50.50g", " 2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% '1G", " 2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- '3G", " 2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 '50G", " 00000000000000000000000000000000000002.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- '.0G", " 2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% '3.0G", " 2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- '50.0G", " 2E-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 '.1G", " 2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- '1.1G", " 2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% '50.1G", " 2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- '.3G", " 2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 '1.3G", " 2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- '3.3G", " 2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% '.50G", " 2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- '1.50G", " 2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 '3.50G", " 2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- '50.50G", " 2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% +'1g", "+2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- +'3g", "+2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 +'50g", "+00000000000000000000000000000000000002.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- +'.0g", "+2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% +'3.0g", "+2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- +'50.0g", "+2e-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 +'.1g", "+2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- +'1.1g", "+2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% +'50.1g", " +2e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- +'.3g", "+2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 +'1.3g", "+2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- +'3.3g", "+2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% +'.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- +'1.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 +'3.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- +'50.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% +'1G", "+2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- +'3G", "+2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 +'50G", "+00000000000000000000000000000000000002.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- +'.0G", "+2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% +'3.0G", "+2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- +'50.0G", "+2E-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 +'.1G", "+2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- +'1.1G", "+2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% +'50.1G", " +2E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- +'.3G", "+2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 +'1.3G", "+2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- +'3.3G", "+2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "% +'.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%- +'1.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0 +'3.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%0- +'50.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#'1g", "2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-'3g", "2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0'50g", "000000000000000000000000000000000000002.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-'.0g", "2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#'3.0g", "2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-'50.0g", "2.e-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0'.1g", "2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-'1.1g", "2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#'50.1g", " 2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-'.3g", "2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0'1.3g", "2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-'3.3g", "2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#'.50g", "2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-'1.50g", "2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0'3.50g", "2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-'50.50g", "2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#'1G", "2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-'3G", "2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0'50G", "000000000000000000000000000000000000002.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-'.0G", "2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#'3.0G", "2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-'50.0G", "2.E-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0'.1G", "2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-'1.1G", "2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#'50.1G", " 2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-'.3G", "2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0'1.3G", "2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-'3.3G", "2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#'.50G", "2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-'1.50G", "2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0'3.50G", "2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-'50.50G", "2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#+'1g", "+2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-+'3g", "+2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0+'50g", "+00000000000000000000000000000000000002.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-+'.0g", "+2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#+'3.0g", "+2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-+'50.0g", "+2.e-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0+'.1g", "+2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-+'1.1g", "+2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#+'50.1g", " +2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-+'.3g", "+2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0+'1.3g", "+2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-+'3.3g", "+2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#+'.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-+'1.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0+'3.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-+'50.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#+'1G", "+2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-+'3G", "+2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0+'50G", "+00000000000000000000000000000000000002.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-+'.0G", "+2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#+'3.0G", "+2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-+'50.0G", "+2.E-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0+'.1G", "+2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-+'1.1G", "+2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#+'50.1G", " +2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-+'.3G", "+2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0+'1.3G", "+2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-+'3.3G", "+2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#+'.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#-+'1.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0+'3.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0-+'50.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# '1g", " 2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- '3g", " 2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 '50g", " 00000000000000000000000000000000000002.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- '.0g", " 2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# '3.0g", " 2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- '50.0g", " 2.e-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 '.1g", " 2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- '1.1g", " 2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# '50.1g", " 2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- '.3g", " 2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 '1.3g", " 2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- '3.3g", " 2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# '.50g", " 2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- '1.50g", " 2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 '3.50g", " 2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- '50.50g", " 2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# '1G", " 2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- '3G", " 2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 '50G", " 00000000000000000000000000000000000002.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- '.0G", " 2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# '3.0G", " 2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- '50.0G", " 2.E-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 '.1G", " 2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- '1.1G", " 2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# '50.1G", " 2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- '.3G", " 2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 '1.3G", " 2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- '3.3G", " 2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# '.50G", " 2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- '1.50G", " 2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 '3.50G", " 2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- '50.50G", " 2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# +'1g", "+2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- +'3g", "+2.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 +'50g", "+00000000000000000000000000000000000002.22507e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- +'.0g", "+2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# +'3.0g", "+2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- +'50.0g", "+2.e-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 +'.1g", "+2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- +'1.1g", "+2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# +'50.1g", " +2.e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- +'.3g", "+2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 +'1.3g", "+2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- +'3.3g", "+2.23e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# +'.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- +'1.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 +'3.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- +'50.50g", "+2.2250738585072013830902327173324040642192159804623e-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# +'1G", "+2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- +'3G", "+2.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 +'50G", "+00000000000000000000000000000000000002.22507E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- +'.0G", "+2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# +'3.0G", "+2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- +'50.0G", "+2.E-308 ", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 +'.1G", "+2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- +'1.1G", "+2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# +'50.1G", " +2.E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- +'.3G", "+2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 +'1.3G", "+2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- +'3.3G", "+2.23E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%# +'.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#- +'1.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0 +'3.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%#0- +'50.50G", "+2.2250738585072013830902327173324040642192159804623E-308", { 0, 0, 0, 0, 0, 0, 16, 0 } },
+ { "%'1g", "1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-'3g", "1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0'50g", "0000000000000000000000000000000000000001.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-'.0g", "1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%'3.0g", "1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-'50.0g", "1e-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0'.1g", "1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-'1.1g", "1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%'50.1g", " 1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-'.3g", "1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0'1.3g", "1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-'3.3g", "1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%'.50g", "1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-'1.50g", "1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0'3.50g", "1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-'50.50g", "1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%'1G", "1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-'3G", "1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0'50G", "0000000000000000000000000000000000000001.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-'.0G", "1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%'3.0G", "1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-'50.0G", "1E-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0'.1G", "1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-'1.1G", "1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%'50.1G", " 1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-'.3G", "1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0'1.3G", "1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-'3.3G", "1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%'.50G", "1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-'1.50G", "1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0'3.50G", "1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-'50.50G", "1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%+'1g", "+1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-+'3g", "+1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0+'50g", "+000000000000000000000000000000000000001.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-+'.0g", "+1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%+'3.0g", "+1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-+'50.0g", "+1e-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0+'.1g", "+1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-+'1.1g", "+1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%+'50.1g", " +1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-+'.3g", "+1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0+'1.3g", "+1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-+'3.3g", "+1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%+'.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-+'1.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0+'3.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-+'50.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%+'1G", "+1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-+'3G", "+1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0+'50G", "+000000000000000000000000000000000000001.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-+'.0G", "+1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%+'3.0G", "+1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-+'50.0G", "+1E-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0+'.1G", "+1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-+'1.1G", "+1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%+'50.1G", " +1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-+'.3G", "+1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0+'1.3G", "+1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-+'3.3G", "+1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%+'.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%-+'1.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0+'3.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0-+'50.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% '1g", " 1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- '3g", " 1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 '50g", " 000000000000000000000000000000000000001.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- '.0g", " 1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% '3.0g", " 1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- '50.0g", " 1e-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 '.1g", " 1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- '1.1g", " 1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% '50.1g", " 1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- '.3g", " 1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 '1.3g", " 1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- '3.3g", " 1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% '.50g", " 1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- '1.50g", " 1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 '3.50g", " 1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- '50.50g", " 1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% '1G", " 1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- '3G", " 1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 '50G", " 000000000000000000000000000000000000001.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- '.0G", " 1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% '3.0G", " 1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- '50.0G", " 1E-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 '.1G", " 1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- '1.1G", " 1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% '50.1G", " 1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- '.3G", " 1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 '1.3G", " 1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- '3.3G", " 1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% '.50G", " 1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- '1.50G", " 1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 '3.50G", " 1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- '50.50G", " 1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% +'1g", "+1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- +'3g", "+1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 +'50g", "+000000000000000000000000000000000000001.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- +'.0g", "+1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% +'3.0g", "+1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- +'50.0g", "+1e-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 +'.1g", "+1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- +'1.1g", "+1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% +'50.1g", " +1e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- +'.3g", "+1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 +'1.3g", "+1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- +'3.3g", "+1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% +'.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- +'1.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 +'3.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- +'50.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% +'1G", "+1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- +'3G", "+1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 +'50G", "+000000000000000000000000000000000000001.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- +'.0G", "+1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% +'3.0G", "+1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- +'50.0G", "+1E-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 +'.1G", "+1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- +'1.1G", "+1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% +'50.1G", " +1E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- +'.3G", "+1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 +'1.3G", "+1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- +'3.3G", "+1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "% +'.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%- +'1.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0 +'3.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%0- +'50.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#'1g", "1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-'3g", "1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0'50g", "0000000000000000000000000000000000000001.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-'.0g", "1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#'3.0g", "1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-'50.0g", "1.e-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0'.1g", "1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-'1.1g", "1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#'50.1g", " 1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-'.3g", "1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0'1.3g", "1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-'3.3g", "1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#'.50g", "1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-'1.50g", "1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0'3.50g", "1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-'50.50g", "1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#'1G", "1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-'3G", "1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0'50G", "0000000000000000000000000000000000000001.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-'.0G", "1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#'3.0G", "1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-'50.0G", "1.E-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0'.1G", "1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-'1.1G", "1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#'50.1G", " 1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-'.3G", "1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0'1.3G", "1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-'3.3G", "1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#'.50G", "1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-'1.50G", "1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0'3.50G", "1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-'50.50G", "1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#+'1g", "+1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-+'3g", "+1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0+'50g", "+000000000000000000000000000000000000001.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-+'.0g", "+1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#+'3.0g", "+1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-+'50.0g", "+1.e-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0+'.1g", "+1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-+'1.1g", "+1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#+'50.1g", " +1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-+'.3g", "+1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0+'1.3g", "+1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-+'3.3g", "+1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#+'.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-+'1.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0+'3.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-+'50.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#+'1G", "+1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-+'3G", "+1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0+'50G", "+000000000000000000000000000000000000001.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-+'.0G", "+1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#+'3.0G", "+1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-+'50.0G", "+1.E-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0+'.1G", "+1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-+'1.1G", "+1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#+'50.1G", " +1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-+'.3G", "+1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0+'1.3G", "+1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-+'3.3G", "+1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#+'.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#-+'1.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0+'3.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0-+'50.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# '1g", " 1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- '3g", " 1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 '50g", " 000000000000000000000000000000000000001.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- '.0g", " 1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# '3.0g", " 1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- '50.0g", " 1.e-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 '.1g", " 1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- '1.1g", " 1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# '50.1g", " 1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- '.3g", " 1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 '1.3g", " 1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- '3.3g", " 1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# '.50g", " 1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- '1.50g", " 1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 '3.50g", " 1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- '50.50g", " 1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# '1G", " 1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- '3G", " 1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 '50G", " 000000000000000000000000000000000000001.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- '.0G", " 1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# '3.0G", " 1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- '50.0G", " 1.E-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 '.1G", " 1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- '1.1G", " 1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# '50.1G", " 1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- '.3G", " 1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 '1.3G", " 1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- '3.3G", " 1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# '.50G", " 1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- '1.50G", " 1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 '3.50G", " 1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- '50.50G", " 1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# +'1g", "+1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- +'3g", "+1.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 +'50g", "+000000000000000000000000000000000000001.17549e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- +'.0g", "+1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# +'3.0g", "+1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- +'50.0g", "+1.e-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 +'.1g", "+1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- +'1.1g", "+1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# +'50.1g", " +1.e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- +'.3g", "+1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 +'1.3g", "+1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- +'3.3g", "+1.18e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# +'.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- +'1.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 +'3.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- +'50.50g", "+1.1754943508222875079687365372222456778186655567721e-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# +'1G", "+1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- +'3G", "+1.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 +'50G", "+000000000000000000000000000000000000001.17549E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- +'.0G", "+1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# +'3.0G", "+1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- +'50.0G", "+1.E-38 ", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 +'.1G", "+1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- +'1.1G", "+1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# +'50.1G", " +1.E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- +'.3G", "+1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 +'1.3G", "+1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- +'3.3G", "+1.18E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%# +'.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#- +'1.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0 +'3.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { "%#0- +'50.50G", "+1.1754943508222875079687365372222456778186655567721E-38", { 0, 0, 0, 0, 0, 0, 16, 56 } },
+ { 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 } }
+};
+
diff --git a/tests/auto/corelib/tools/qstring/qstring.pro b/tests/auto/corelib/tools/qstring/qstring.pro
new file mode 100644
index 0000000000..1c123adcca
--- /dev/null
+++ b/tests/auto/corelib/tools/qstring/qstring.pro
@@ -0,0 +1,11 @@
+load(qttest_p4)
+SOURCES += tst_qstring.cpp
+
+symbian:LIBS += -llibm
+
+QT = core
+
+DEFINES += QT_NO_CAST_TO_ASCII
+CONFIG += parallel_test
+
+contains(QT_CONFIG,icu):DEFINES += QT_USE_ICU
diff --git a/tests/auto/corelib/tools/qstring/tst_qstring.cpp b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
new file mode 100644
index 0000000000..5ef8d70ef6
--- /dev/null
+++ b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
@@ -0,0 +1,5143 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qregexp.h>
+#include <qtextcodec.h>
+#include <qtextstream.h>
+#include <qstringlist.h>
+#include <qstringmatcher.h>
+#include <qbytearraymatcher.h>
+#include <qvariant.h>
+
+#include <qlocale.h>
+#include <locale.h>
+
+Q_DECLARE_METATYPE(qlonglong)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+#define CREATE_REF(string) \
+ const QString padded = QString::fromLatin1(" %1 ").arg(string); \
+ QStringRef ref = padded.midRef(1, padded.size() - 2);
+
+class tst_QString : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QString();
+ virtual ~tst_QString();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void fromStdString();
+ void toStdString();
+ void check_QTextIOStream();
+ void check_QTextStream();
+ void check_QDataStream();
+ void fromRawData();
+ void setRawData();
+ void endsWith();
+ void startsWith();
+ void setNum();
+ void toDouble_data();
+ void toDouble();
+ void toFloat();
+ void toLong_data();
+ void toLong();
+ void toULong_data();
+ void toULong();
+ void toLongLong();
+ void toULongLong();
+ void toUInt();
+ void toInt();
+ void toShort();
+ void toUShort();
+ void replace_qchar_qchar_data();
+ void replace_qchar_qchar();
+ void replace_qchar_qstring_data();
+ void replace_qchar_qstring();
+ void replace_uint_uint_data();
+ void replace_uint_uint();
+ void replace_uint_uint_extra();
+ void replace_string_data();
+ void replace_string();
+ void replace_regexp_data();
+ void replace_regexp();
+ void remove_uint_uint_data();
+ void remove_uint_uint();
+ void remove_string_data();
+ void remove_string();
+ void remove_regexp_data();
+ void remove_regexp();
+ void swap();
+ void prepend();
+ void prepend_bytearray_data();
+ void prepend_bytearray();
+ void append();
+ void append_bytearray_data();
+ void append_bytearray();
+ void operator_pluseq_bytearray_data();
+ void operator_pluseq_bytearray();
+ void operator_eqeq_nullstring();
+ void operator_smaller();
+ void insert();
+ void simplified_data();
+ void simplified();
+ void trimmed();
+ void toLower();
+ void toUpper();
+ void rightJustified();
+ void leftJustified();
+ void mid();
+ void right();
+ void left();
+ void midRef();
+ void rightRef();
+ void leftRef();
+ void stringRef();
+ void contains();
+ void count();
+ void lastIndexOf_data();
+ void lastIndexOf();
+ void indexOf_data();
+ void indexOf();
+ void indexOf2_data();
+ void indexOf2();
+ void indexOf3_data();
+// void indexOf3();
+ void sprintf();
+ void fill();
+ void truncate();
+ void constructor();
+ void constructorQByteArray_data();
+ void constructorQByteArray();
+ void STL();
+ void isEmpty();
+ void isNull();
+ void acc_01();
+ void length_data();
+ void length();
+ void utf8_data();
+ void utf8();
+ void fromUtf8_data();
+ void fromUtf8();
+ void nullFromUtf8();
+ void fromLocal8Bit_data();
+ void fromLocal8Bit();
+ void local8Bit_data();
+ void local8Bit();
+ void fromLatin1Roundtrip_data();
+ void fromLatin1Roundtrip();
+ void toLatin1Roundtrip_data();
+ void toLatin1Roundtrip();
+ void stringRef_toLatin1Roundtrip_data();
+ void stringRef_toLatin1Roundtrip();
+ void stringRef_utf8_data();
+ void stringRef_utf8();
+ void stringRef_local8Bit_data();
+ void stringRef_local8Bit();
+ void fromLatin1();
+ void fromAscii();
+ void arg();
+ void number();
+ void arg_fillChar_data();
+ void arg_fillChar();
+ void capacity_data();
+ void capacity();
+ void section_data();
+ void section();
+ void double_conversion_data();
+ void double_conversion();
+ void integer_conversion_data();
+ void integer_conversion();
+ void tortureSprintfDouble();
+ void toNum();
+ void localeAwareCompare_data();
+ void localeAwareCompare();
+ void split_data();
+ void split();
+ void split_regexp();
+ void fromUtf16_data();
+ void fromUtf16();
+ void latin1String();
+ void nanAndInf();
+ void compare_data();
+ void compare();
+ void resizeAfterFromRawData();
+ void resizeAfterReserve();
+ void resizeWithNegative() const;
+ void truncateWithNegative() const;
+ void QCharRefMutableUnicode() const;
+ void QCharRefDetaching() const;
+ void sprintfZU() const;
+ void repeatedSignature() const;
+ void repeated() const;
+ void repeated_data() const;
+ void task262677remove();
+ void QTBUG10404_compareRef();
+ void QTBUG9281_arg_locale();
+
+ void toUpperLower_icu();
+ void literals();
+};
+
+typedef QList<int> IntList;
+
+Q_DECLARE_METATYPE(QList<QVariant>)
+Q_DECLARE_METATYPE(IntList)
+
+// This next bit is needed for the NAN and INF in string -> number conversion tests
+#include <float.h>
+#include <limits.h>
+#include <math.h>
+#if defined (Q_OS_WIN)
+# include <windows.h>
+// mingw defines NAN and INFINITY to 0/0 and x/0
+# if defined(Q_CC_GNU)
+# undef NAN
+# undef INFINITY
+# else
+# define isnan(d) _isnan(d)
+# endif
+#endif
+#if defined (Q_OS_MAC) && !defined isnan
+#define isnan(d) __isnand(d)
+#endif
+#if defined (Q_OS_SOLARIS)
+# include <ieeefp.h>
+#endif
+#if defined (Q_OS_OSF) && (defined(__DECC) || defined(__DECCXX))
+# define INFINITY DBL_INFINITY
+# define NAN DBL_QNAN
+#endif
+#if defined(Q_OS_IRIX) && defined(Q_CC_GNU)
+# include <ieeefp.h>
+# define isnan(d) isnand(d)
+#endif
+
+enum {
+ LittleEndian,
+ BigEndian
+#ifdef Q_BYTE_ORDER
+# if Q_BYTE_ORDER == Q_BIG_ENDIAN
+ , ByteOrder = BigEndian
+# elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN
+ , ByteOrder = LittleEndian
+# else
+# error "undefined byte order"
+# endif
+};
+#else
+};
+static const unsigned int one = 1;
+static const bool ByteOrder = ((*((unsigned char *) &one) == 0) ? BigEndian : LittleEndian);
+#endif
+#if !defined(INFINITY)
+static const unsigned char be_inf_bytes[] = { 0x7f, 0xf0, 0, 0, 0, 0, 0,0 };
+static const unsigned char le_inf_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f };
+static inline double inf()
+{
+ if (ByteOrder == BigEndian)
+ return *reinterpret_cast<const double *>(be_inf_bytes);
+ return *reinterpret_cast<const double *>(le_inf_bytes);
+}
+# define INFINITY (::inf())
+#endif
+#if !defined(NAN)
+static const unsigned char be_nan_bytes[] = { 0x7f, 0xf8, 0, 0, 0, 0, 0,0 };
+static const unsigned char le_nan_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf8, 0x7f };
+static inline double nan()
+{
+ if (ByteOrder == BigEndian)
+ return *reinterpret_cast<const double *>(be_nan_bytes);
+ return *reinterpret_cast<const double *>(le_nan_bytes);
+}
+# define NAN (::nan())
+#endif
+
+tst_QString::tst_QString()
+{
+ QTextCodec::setCodecForLocale(QTextCodec::codecForName("ISO 8859-1"));
+}
+
+tst_QString::~tst_QString()
+{
+}
+
+void tst_QString::init()
+{
+}
+
+void tst_QString::cleanup()
+{
+ QLocale::setDefault(QString("C"));
+}
+
+void tst_QString::remove_uint_uint_data()
+{
+ replace_uint_uint_data();
+}
+
+void tst_QString::remove_string_data()
+{
+ replace_string_data();
+}
+
+void tst_QString::remove_regexp_data()
+{
+ replace_regexp_data();
+}
+
+void tst_QString::indexOf3_data()
+{
+ indexOf2_data();
+}
+
+void tst_QString::length_data()
+{
+ QTest::addColumn<QString>("s1" );
+ QTest::addColumn<int>("res" );
+
+ QTest::newRow( "data0" ) << QString("Test") << 4;
+ QTest::newRow( "data1" ) << QString("The quick brown fox jumps over the lazy dog") << 43;
+ QTest::newRow( "data2" ) << QString() << 0;
+ QTest::newRow( "data3" ) << QString("A") << 1;
+ QTest::newRow( "data4" ) << QString("AB") << 2;
+ QTest::newRow( "data5" ) << QString("AB\n") << 3;
+ QTest::newRow( "data6" ) << QString("AB\nC") << 4;
+ QTest::newRow( "data7" ) << QString("\n") << 1;
+ QTest::newRow( "data8" ) << QString("\nA") << 2;
+ QTest::newRow( "data9" ) << QString("\nAB") << 3;
+ QTest::newRow( "data10" ) << QString("\nAB\nCDE") << 7;
+ QTest::newRow( "data11" ) << QString("shdnftrheid fhgnt gjvnfmd chfugkh bnfhg thgjf vnghturkf chfnguh bjgnfhvygh hnbhgutjfv dhdnjds dcjs d") << 100;
+}
+
+void tst_QString::replace_qchar_qchar_data()
+{
+ QTest::addColumn<QString>("src" );
+ QTest::addColumn<QChar>("before" );
+ QTest::addColumn<QChar>("after" );
+ QTest::addColumn<int>("cs" );
+ QTest::addColumn<QString>("expected" );
+
+ QTest::newRow( "1" ) << QString("foo") << QChar('o') << QChar('a')
+ << int(Qt::CaseSensitive) << QString("faa");
+ QTest::newRow( "2" ) << QString("foo") << QChar('o') << QChar('a')
+ << int(Qt::CaseInsensitive) << QString("faa");
+ QTest::newRow( "3" ) << QString("foo") << QChar('O') << QChar('a')
+ << int(Qt::CaseSensitive) << QString("foo");
+ QTest::newRow( "4" ) << QString("foo") << QChar('O') << QChar('a')
+ << int(Qt::CaseInsensitive) << QString("faa");
+ QTest::newRow( "5" ) << QString("ababABAB") << QChar('a') << QChar(' ')
+ << int(Qt::CaseSensitive) << QString(" b bABAB");
+ QTest::newRow( "6" ) << QString("ababABAB") << QChar('a') << QChar(' ')
+ << int(Qt::CaseInsensitive) << QString(" b b B B");
+ QTest::newRow( "7" ) << QString("ababABAB") << QChar() << QChar(' ')
+ << int(Qt::CaseInsensitive) << QString("ababABAB");
+}
+
+void tst_QString::replace_qchar_qchar()
+{
+ QFETCH(QString, src);
+ QFETCH(QChar, before);
+ QFETCH(QChar, after);
+ QFETCH(int, cs);
+ QFETCH(QString, expected);
+
+ QCOMPARE(src.replace(before, after, Qt::CaseSensitivity(cs)), expected);
+}
+
+void tst_QString::replace_qchar_qstring_data()
+{
+ QTest::addColumn<QString>("src" );
+ QTest::addColumn<QChar>("before" );
+ QTest::addColumn<QString>("after" );
+ QTest::addColumn<int>("cs" );
+ QTest::addColumn<QString>("expected" );
+
+ QTest::newRow( "1" ) << QString("foo") << QChar('o') << QString("aA")
+ << int(Qt::CaseSensitive) << QString("faAaA");
+ QTest::newRow( "2" ) << QString("foo") << QChar('o') << QString("aA")
+ << int(Qt::CaseInsensitive) << QString("faAaA");
+ QTest::newRow( "3" ) << QString("foo") << QChar('O') << QString("aA")
+ << int(Qt::CaseSensitive) << QString("foo");
+ QTest::newRow( "4" ) << QString("foo") << QChar('O') << QString("aA")
+ << int(Qt::CaseInsensitive) << QString("faAaA");
+ QTest::newRow( "5" ) << QString("ababABAB") << QChar('a') << QString(" ")
+ << int(Qt::CaseSensitive) << QString(" b bABAB");
+ QTest::newRow( "6" ) << QString("ababABAB") << QChar('a') << QString(" ")
+ << int(Qt::CaseInsensitive) << QString(" b b B B");
+ QTest::newRow( "7" ) << QString("ababABAB") << QChar() << QString(" ")
+ << int(Qt::CaseInsensitive) << QString("ababABAB");
+ QTest::newRow( "8" ) << QString("ababABAB") << QChar() << QString()
+ << int(Qt::CaseInsensitive) << QString("ababABAB");
+}
+
+void tst_QString::replace_qchar_qstring()
+{
+ QFETCH(QString, src);
+ QFETCH(QChar, before);
+ QFETCH(QString, after);
+ QFETCH(int, cs);
+ QFETCH(QString, expected);
+
+ QCOMPARE(src.replace(before, after, Qt::CaseSensitivity(cs)), expected);
+}
+
+void tst_QString::replace_uint_uint_data()
+{
+ QTest::addColumn<QString>("string" );
+ QTest::addColumn<int>("index" );
+ QTest::addColumn<int>("len" );
+ QTest::addColumn<QString>("after" );
+ QTest::addColumn<QString>("result" );
+
+ QTest::newRow( "rem00" ) << QString("-<>ABCABCABCABC>") << 0 << 3 << QString("") << QString("ABCABCABCABC>");
+ QTest::newRow( "rem01" ) << QString("ABCABCABCABC>") << 1 << 4 << QString("") << QString("ACABCABC>");
+ QTest::newRow( "rem04" ) << QString("ACABCABC>") << 8 << 4 << QString("") << QString("ACABCABC");
+ QTest::newRow( "rem05" ) << QString("ACABCABC") << 7 << 1 << QString("") << QString("ACABCAB");
+ QTest::newRow( "rem06" ) << QString("ACABCAB") << 4 << 0 << QString("") << QString("ACABCAB");
+
+ QTest::newRow( "rep00" ) << QString("ACABCAB") << 4 << 0 << QString("X") << QString("ACABXCAB");
+ QTest::newRow( "rep01" ) << QString("ACABXCAB") << 4 << 1 << QString("Y") << QString("ACABYCAB");
+ QTest::newRow( "rep02" ) << QString("ACABYCAB") << 4 << 1 << QString("") << QString("ACABCAB");
+ QTest::newRow( "rep03" ) << QString("ACABCAB") << 0 << 9999 << QString("XX") << QString("XX");
+ QTest::newRow( "rep04" ) << QString("XX") << 0 << 9999 << QString("") << QString("");
+ QTest::newRow( "rep05" ) << QString("ACABCAB") << 0 << 2 << QString("XX") << QString("XXABCAB");
+ QTest::newRow( "rep06" ) << QString("ACABCAB") << 1 << 2 << QString("XX") << QString("AXXBCAB");
+ QTest::newRow( "rep07" ) << QString("ACABCAB") << 2 << 2 << QString("XX") << QString("ACXXCAB");
+ QTest::newRow( "rep08" ) << QString("ACABCAB") << 3 << 2 << QString("XX") << QString("ACAXXAB");
+ QTest::newRow( "rep09" ) << QString("ACABCAB") << 4 << 2 << QString("XX") << QString("ACABXXB");
+ QTest::newRow( "rep10" ) << QString("ACABCAB") << 5 << 2 << QString("XX") << QString("ACABCXX");
+ QTest::newRow( "rep10" ) << QString("ACABCAB") << 6 << 2 << QString("XX") << QString("ACABCAXX");
+ QTest::newRow( "rep12" ) << QString() << 0 << 10 << QString("X") << QString("X");
+ QTest::newRow( "rep13" ) << QString("short") << 0 << 10 << QString("X") << QString("X");
+ QTest::newRow( "rep14" ) << QString() << 0 << 10 << QString("XX") << QString("XX");
+ QTest::newRow( "rep15" ) << QString("short") << 0 << 10 << QString("XX") << QString("XX");
+}
+
+void tst_QString::replace_string_data()
+{
+ QTest::addColumn<QString>("string" );
+ QTest::addColumn<QString>("before" );
+ QTest::addColumn<QString>("after" );
+ QTest::addColumn<QString>("result" );
+ QTest::addColumn<bool>("bcs" );
+
+ QTest::newRow( "rem00" ) << QString("") << QString("") << QString("") << QString("") << true;
+ QTest::newRow( "rem01" ) << QString("A") << QString("") << QString("") << QString("A") << true;
+ QTest::newRow( "rem02" ) << QString("A") << QString("A") << QString("") << QString("") << true;
+ QTest::newRow( "rem03" ) << QString("A") << QString("B") << QString("") << QString("A") << true;
+ QTest::newRow( "rem04" ) << QString("AA") << QString("A") << QString("") << QString("") << true;
+ QTest::newRow( "rem05" ) << QString("AB") << QString("A") << QString("") << QString("B") << true;
+ QTest::newRow( "rem06" ) << QString("AB") << QString("B") << QString("") << QString("A") << true;
+ QTest::newRow( "rem07" ) << QString("AB") << QString("C") << QString("") << QString("AB") << true;
+ QTest::newRow( "rem08" ) << QString("ABA") << QString("A") << QString("") << QString("B") << true;
+ QTest::newRow( "rem09" ) << QString("ABA") << QString("B") << QString("") << QString("AA") << true;
+ QTest::newRow( "rem10" ) << QString("ABA") << QString("C") << QString("") << QString("ABA") << true;
+ QTest::newRow( "rem11" ) << QString("banana") << QString("an") << QString("") << QString("ba") << true;
+ QTest::newRow( "rem12" ) << QString("") << QString("A") << QString("") << QString("") << true;
+ QTest::newRow( "rem13" ) << QString("") << QString("A") << QString() << QString("") << true;
+ QTest::newRow( "rem14" ) << QString() << QString("A") << QString("") << QString() << true;
+ QTest::newRow( "rem15" ) << QString() << QString("A") << QString() << QString() << true;
+ QTest::newRow( "rem16" ) << QString() << QString("") << QString("") << QString("") << true;
+ QTest::newRow( "rem17" ) << QString("") << QString() << QString("") << QString("") << true;
+ QTest::newRow( "rem18" ) << QString("a") << QString("a") << QString("") << QString("") << false;
+ QTest::newRow( "rem19" ) << QString("A") << QString("A") << QString("") << QString("") << false;
+ QTest::newRow( "rem20" ) << QString("a") << QString("A") << QString("") << QString("") << false;
+ QTest::newRow( "rem21" ) << QString("A") << QString("a") << QString("") << QString("") << false;
+ QTest::newRow( "rem22" ) << QString("Alpha beta") << QString("a") << QString("") << QString("lph bet") << false;
+
+ QTest::newRow( "rep00" ) << QString("ABC") << QString("B") << QString("-") << QString("A-C") << true;
+ QTest::newRow( "rep01" ) << QString("$()*+.?[\\]^{|}") << QString("$()*+.?[\\]^{|}") << QString("X") << QString("X") << true;
+ QTest::newRow( "rep02" ) << QString("ABCDEF") << QString("") << QString("X") << QString("XAXBXCXDXEXFX") << true;
+ QTest::newRow( "rep03" ) << QString("") << QString("") << QString("X") << QString("X") << true;
+ QTest::newRow( "rep04" ) << QString("a") << QString("a") << QString("b") << QString("b") << false;
+ QTest::newRow( "rep05" ) << QString("A") << QString("A") << QString("b") << QString("b") << false;
+ QTest::newRow( "rep06" ) << QString("a") << QString("A") << QString("b") << QString("b") << false;
+ QTest::newRow( "rep07" ) << QString("A") << QString("a") << QString("b") << QString("b") << false;
+ QTest::newRow( "rep08" ) << QString("a") << QString("a") << QString("a") << QString("a") << false;
+ QTest::newRow( "rep09" ) << QString("A") << QString("A") << QString("a") << QString("a") << false;
+ QTest::newRow( "rep10" ) << QString("a") << QString("A") << QString("a") << QString("a") << false;
+ QTest::newRow( "rep11" ) << QString("A") << QString("a") << QString("a") << QString("a") << false;
+ QTest::newRow( "rep12" ) << QString("Alpha beta") << QString("a") << QString("o") << QString("olpho beto") << false;
+ QTest::newRow( "rep13" ) << QString() << QString("") << QString("A") << QString("A") << true;
+ QTest::newRow( "rep14" ) << QString("") << QString() << QString("A") << QString("A") << true;
+ QTest::newRow( "rep15" ) << QString("fooxbarxbazxblub") << QString("x") << QString("yz") << QString("fooyzbaryzbazyzblub") << true;
+ QTest::newRow( "rep16" ) << QString("fooxbarxbazxblub") << QString("x") << QString("z") << QString("foozbarzbazzblub") << true;
+ QTest::newRow( "rep17" ) << QString("fooxybarxybazxyblub") << QString("xy") << QString("z") << QString("foozbarzbazzblub") << true;
+}
+
+void tst_QString::replace_regexp_data()
+{
+ QTest::addColumn<QString>("string" );
+ QTest::addColumn<QString>("regexp" );
+ QTest::addColumn<QString>("after" );
+ QTest::addColumn<QString>("result" );
+
+ QTest::newRow( "rem00" ) << QString("alpha") << QString("a+") << QString("") << QString("lph");
+ QTest::newRow( "rem01" ) << QString("banana") << QString("^.a") << QString("") << QString("nana");
+ QTest::newRow( "rem02" ) << QString("") << QString("^.a") << QString("") << QString("");
+ QTest::newRow( "rem03" ) << QString("") << QString("^.a") << QString() << QString("");
+ QTest::newRow( "rem04" ) << QString() << QString("^.a") << QString("") << QString();
+ QTest::newRow( "rem05" ) << QString() << QString("^.a") << QString() << QString();
+
+ QTest::newRow( "rep00" ) << QString("A <i>bon mot</i>.") << QString("<i>([^<]*)</i>") << QString("\\emph{\\1}") << QString("A \\emph{bon mot}.");
+ QTest::newRow( "rep01" ) << QString("banana") << QString("^.a()") << QString("\\1") << QString("nana");
+ QTest::newRow( "rep02" ) << QString("banana") << QString("(ba)") << QString("\\1X\\1") << QString("baXbanana");
+ QTest::newRow( "rep03" ) << QString("banana") << QString("(ba)(na)na") << QString("\\2X\\1") << QString("naXba");
+
+ QTest::newRow("backref00") << QString("\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\10\\11") << QString("\\\\[34]")
+ << QString("X") << QString("\\1\\2XX\\5\\6\\7\\8\\9\\A\\10\\11");
+ QTest::newRow("backref01") << QString("foo") << QString("[fo]") << QString("\\1") << QString("\\1\\1\\1");
+ QTest::newRow("backref02") << QString("foo") << QString("([fo])") << QString("(\\1)") << QString("(f)(o)(o)");
+ QTest::newRow("backref03") << QString("foo") << QString("([fo])") << QString("\\2") << QString("\\2\\2\\2");
+ QTest::newRow("backref04") << QString("foo") << QString("([fo])") << QString("\\10") << QString("f0o0o0");
+ QTest::newRow("backref05") << QString("foo") << QString("([fo])") << QString("\\11") << QString("f1o1o1");
+ QTest::newRow("backref06") << QString("foo") << QString("([fo])") << QString("\\19") << QString("f9o9o9");
+ QTest::newRow("backref07") << QString("foo") << QString("(f)(o+)")
+ << QString("\\2\\1\\10\\20\\11\\22\\19\\29\\3")
+ << QString("ooff0oo0f1oo2f9oo9\\3");
+ QTest::newRow("backref08") << QString("abc") << QString("(((((((((((((([abc]))))))))))))))")
+ << QString("{\\14}") << QString("{a}{b}{c}");
+ QTest::newRow("backref09") << QString("abcdefghijklmn")
+ << QString("(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)")
+ << QString("\\19\\18\\17\\16\\15\\14\\13\\12\\11\\10"
+ "\\9\\90\\8\\80\\7\\70\\6\\60\\5\\50\\4\\40\\3\\30\\2\\20\\1")
+ << QString("a9a8a7a6a5nmlkjii0hh0gg0ff0ee0dd0cc0bb0a");
+ QTest::newRow("backref10") << QString("abc") << QString("((((((((((((((abc))))))))))))))")
+ << QString("\\0\\01\\011") << QString("\\0\\01\\011");
+}
+
+void tst_QString::utf8_data()
+{
+ QString str;
+ QTest::addColumn<QByteArray>("utf8" );
+ QTest::addColumn<QString>("res" );
+
+ QTest::newRow( "str0" ) << QByteArray("abcdefgh")
+ << QString("abcdefgh");
+ QTest::newRow( "str1" ) << QByteArray("\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205")
+ << QString("\366\344\374\326\304\334\370\346\345\330\306\305") ;
+ str += QChar( 0x05e9 );
+ str += QChar( 0x05d3 );
+ str += QChar( 0x05d2 );
+ QTest::newRow( "str2" ) << QByteArray("\327\251\327\223\327\222")
+ << str;
+
+ str = QChar( 0x20ac );
+ str += " some text";
+ QTest::newRow( "str3" ) << QByteArray("\342\202\254 some text")
+ << str;
+
+ str = "Old Italic: ";
+ str += QChar(0xd800);
+ str += QChar(0xdf00);
+ str += QChar(0xd800);
+ str += QChar(0xdf01);
+ str += QChar(0xd800);
+ str += QChar(0xdf02);
+ str += QChar(0xd800);
+ str += QChar(0xdf03);
+ str += QChar(0xd800);
+ str += QChar(0xdf04);
+ QTest::newRow("surrogate") << QByteArray("Old Italic: \360\220\214\200\360\220\214\201\360\220\214\202\360\220\214\203\360\220\214\204") << str;
+}
+
+void tst_QString::length()
+{
+ QFETCH( QString, s1 );
+ QTEST( (int)s1.length(), "res" );
+}
+
+#include <qfile.h>
+
+void tst_QString::acc_01()
+{
+ QString a;
+ QString b; //b(10);
+ QString bb; //bb((int)0);
+ QString c("String C");
+ QChar tmp[10];
+ tmp[0] = 'S';
+ tmp[1] = 't';
+ tmp[2] = 'r';
+ tmp[3] = 'i';
+ tmp[4] = 'n';
+ tmp[5] = 'g';
+ tmp[6] = ' ';
+ tmp[7] = 'D';
+ tmp[8] = 'X';
+ tmp[9] = '\0';
+ QString d(tmp,8);
+ QString ca(a);
+ QString cb(b);
+ QString cc(c);
+ QString n;
+ QString e("String E");
+ QString f;
+ f = e;
+ f[7]='F';
+ QCOMPARE(e,(QString)"String E");
+ char text[]="String f";
+ f = text;
+ text[7]='!';
+ QCOMPARE(f,(QString)"String f");
+ f[7]='F';
+ QCOMPARE(text[7],'!');
+
+ a="";
+ a[0]='A';
+ QCOMPARE(a,(QString)"A");
+ QCOMPARE(a.length(),1);
+ a[1]='B';
+ QCOMPARE(a,(QString)"AB");
+ QCOMPARE(a.length(),2);
+ a[2]='C';
+ QCOMPARE(a,(QString)"ABC");
+ QCOMPARE(a.length(),3);
+ a = QString();
+ QVERIFY(a.isNull());
+ a[0]='A';
+ QCOMPARE(a,(QString)"A");
+ QCOMPARE(a.length(),1);
+ a[1]='B';
+ QCOMPARE(a,(QString)"AB");
+ QCOMPARE(a.length(),2);
+ a[2]='C';
+ QCOMPARE(a,(QString)"ABC");
+ QCOMPARE(a.length(),3);
+
+ a="123";
+ b="456";
+ a[0]=a[1];
+ QCOMPARE(a,(QString)"223");
+ a[1]=b[1];
+ QCOMPARE(b,(QString)"456");
+ QCOMPARE(a,(QString)"253");
+
+ char t[]="TEXT";
+ a="A";
+ a=t;
+ QCOMPARE(a,(QString)"TEXT");
+ QCOMPARE(a,(QString)t);
+ a[0]='X';
+ QCOMPARE(a,(QString)"XEXT");
+ QCOMPARE(t[0],'T');
+ t[0]='Z';
+ QCOMPARE(a,(QString)"XEXT");
+
+ a="ABC";
+ QCOMPARE(char(a.toLatin1()[1]),'B');
+ QCOMPARE(strcmp(a.toLatin1(),((QString)"ABC").toLatin1()),0);
+ QCOMPARE(a+="DEF",(QString)"ABCDEF");
+ QCOMPARE(a+='G',(QString)"ABCDEFG");
+ QCOMPARE(a+=((const char*)(0)),(QString)"ABCDEFG");
+
+ // non-member operators
+
+ a="ABC";
+ b="ABC";
+ c="ACB";
+ d="ABCD";
+ QVERIFY(a==b);
+ QVERIFY(!(a==d));
+ QVERIFY(!(a!=b));
+ QVERIFY(a!=d);
+ QVERIFY(!(a<b));
+ QVERIFY(a<c);
+ QVERIFY(a<d);
+ QVERIFY(!(d<a));
+ QVERIFY(!(c<a));
+ QVERIFY(a<=b);
+ QVERIFY(a<=d);
+ QVERIFY(a<=c);
+ QVERIFY(!(c<=a));
+ QVERIFY(!(d<=a));
+ QCOMPARE(QString(a+b),(QString)"ABCABC");
+ QCOMPARE(QString(a+"XXXX"),(QString)"ABCXXXX");
+ QCOMPARE(QString(a+'X'),(QString)"ABCX");
+ QCOMPARE(QString("XXXX"+a),(QString)"XXXXABC");
+ QCOMPARE(QString('X'+a),(QString)"XABC");
+ a = (const char*)0;
+ QVERIFY(a.isNull());
+ QVERIFY(*a.toLatin1().constData() == '\0');
+ {
+#if defined(Q_OS_WINCE)
+ int argc = 0;
+ QCoreApplication app(argc, 0);
+#endif
+ QFile f("COMPARE.txt");
+ f.open(QIODevice::ReadOnly);
+ QTextStream ts( &f );
+ ts.setCodec(QTextCodec::codecForName("UTF-16"));
+ ts << "Abc";
+ }
+}
+
+void tst_QString::isNull()
+{
+ QString a;
+ QVERIFY(a.isNull());
+
+ const char *zero = 0;
+ a.sprintf( zero );
+ QVERIFY(!a.isNull());
+}
+
+void tst_QString::isEmpty()
+{
+ QString a;
+ QVERIFY(a.isEmpty());
+ QString c("Not empty");
+ QVERIFY(!c.isEmpty());
+}
+
+void tst_QString::constructor()
+{
+ QString a;
+ QString b; //b(10);
+ QString c("String C");
+ QChar tmp[10];
+ tmp[0] = 'S';
+ tmp[1] = 't';
+ tmp[2] = 'r';
+ tmp[3] = 'i';
+ tmp[4] = 'n';
+ tmp[5] = 'g';
+ tmp[6] = ' ';
+ tmp[7] = 'D';
+ tmp[8] = 'X';
+ tmp[9] = '\0';
+ QString d(tmp,8);
+ QString ca(a);
+ QString cb(b);
+ QString cc(c);
+
+ QCOMPARE(a,ca);
+ QVERIFY(a.isNull());
+ QVERIFY(a == (QString)"");
+ QCOMPARE(b,cb);
+ QCOMPARE(c,cc);
+ QCOMPARE(d,(QString)"String D");
+
+ QString nullStr;
+ QVERIFY( nullStr.isNull() );
+ QVERIFY( nullStr.isEmpty() );
+ QString empty("");
+ QVERIFY( !empty.isNull() );
+ QVERIFY( empty.isEmpty() );
+}
+
+
+
+void tst_QString::constructorQByteArray_data()
+{
+ QTest::addColumn<QByteArray>("src" );
+ QTest::addColumn<QString>("expected" );
+
+ QByteArray ba( 4, 0 );
+ ba[0] = 'C';
+ ba[1] = 'O';
+ ba[2] = 'M';
+ ba[3] = 'P';
+
+ QTest::newRow( "1" ) << ba << QString("COMP");
+
+ QByteArray ba1( 7, 0 );
+ ba1[0] = 'a';
+ ba1[1] = 'b';
+ ba1[2] = 'c';
+ ba1[3] = '\0';
+ ba1[4] = 'd';
+ ba1[5] = 'e';
+ ba1[6] = 'f';
+
+ QTest::newRow( "2" ) << ba1 << QString("abc");
+
+ QTest::newRow( "3" ) << QByteArray::fromRawData("abcd", 3) << QString("abc");
+}
+
+void tst_QString::constructorQByteArray()
+{
+ QFETCH(QByteArray, src);
+ QFETCH(QString, expected);
+
+ QString str1(src);
+ QCOMPARE(str1.length(), expected.length());
+ QCOMPARE( str1, expected );
+
+ QTextCodec::setCodecForCStrings( QTextCodec::codecForMib(4) ); // Latin 1
+ QString strBA(src);
+ QTextCodec::setCodecForCStrings( 0 );
+
+ QCOMPARE( strBA, expected );
+}
+
+void tst_QString::STL()
+{
+#ifdef Q_CC_HPACC
+ QSKIP("This test crashes on HP-UX with aCC", SkipSingle);
+#endif
+#ifndef QT_NO_STL
+#ifndef QT_NO_CAST_TO_ASCII
+ QString qt( "QString" );
+
+ std::string stdstr( "QString" );
+
+ QString stlqt;
+
+ // constructor
+ stlqt = QString( stdstr );
+ QCOMPARE( stlqt, qt );
+
+ // assignment
+ stlqt = stdstr;
+ QCOMPARE( stlqt, qt );
+
+ std::string stdstr2 = stlqt;
+ QCOMPARE( stdstr2, stdstr );
+
+ // prepend
+ stlqt = QString();
+ stlqt.prepend( stdstr );
+ QCOMPARE( stlqt, qt );
+
+ // append
+ stlqt = QString();
+ stlqt.append( stdstr );
+ QCOMPARE( stlqt, qt );
+
+ // pathologics (null-strings not supported by many STLs, so test only empty strings)
+ stdstr = std::string();
+ stlqt = stdstr;
+ QVERIFY( stlqt.isEmpty() );
+ std::string stdstr3 = stlqt;
+ QVERIFY( !stdstr3.length() );
+#endif
+
+//skip test if glibc is not compiled with wide character support
+#if (defined Q_CC_GNU && !defined _GLIBCPP_USE_WCHAR_T) || defined QT_NO_STL_WCHAR
+ QSKIP( "Not tested without wide character support", SkipAll);
+#else
+ const wchar_t arr[] = {'h', 'e', 'l', 'l', 'o', 0};
+ QStdWString stlStr = arr;
+
+ QString s = QString::fromStdWString(stlStr);
+
+ QCOMPARE(s, QString::fromLatin1("hello"));
+ QCOMPARE(stlStr, s.toStdWString());
+#endif
+#else
+ QSKIP( "Not tested without STL support", SkipAll);
+#endif
+}
+
+void tst_QString::truncate()
+{
+ QString e("String E");
+ e.truncate(4);
+ QCOMPARE(e,(QString)"Stri");
+
+ e = "String E";
+ e.truncate(0);
+ QCOMPARE(e,(QString)"");
+ QVERIFY(e.isEmpty());
+ QVERIFY(!e.isNull());
+
+}
+
+void tst_QString::fill()
+{
+ QString e;
+ e.fill('e',1);
+ QCOMPARE(e,(QString)"e");
+ QString f;
+ f.fill('f',3);
+ QCOMPARE(f,(QString)"fff");
+ f.fill('F');
+ QCOMPARE(f,(QString)"FFF");
+}
+
+void tst_QString::sprintf()
+{
+ QString a;
+ a.sprintf("COMPARE");
+ QCOMPARE(a,(QString)"COMPARE");
+ a.sprintf("%%%d",1);
+ QCOMPARE(a,(QString)"%1");
+ QCOMPARE(a.sprintf("X%dY",2),(QString)"X2Y");
+ QCOMPARE(a.sprintf("X%9iY", 50000 ),(QString)"X 50000Y");
+ QCOMPARE(a.sprintf("X%-9sY","hello"),(QString)"Xhello Y");
+ QCOMPARE(a.sprintf("X%-9iY", 50000 ),(QString)"X50000 Y");
+ QCOMPARE(a.sprintf("%lf", 1.23), QString("1.230000"));
+ QCOMPARE(a.sprintf("%lf", 1.23456789), QString("1.234568"));
+ QCOMPARE(a.sprintf("%p", (void *)0xbfffd350), QString("0xbfffd350"));
+ QCOMPARE(a.sprintf("%p", (void *)0), QString("0x0"));
+
+ int i = 6;
+ long l = -2;
+ float f = 4.023f;
+ QString S1;
+ S1.sprintf("%d %ld %f",i,l,f);
+ QCOMPARE(S1,QString("6 -2 4.023000"));
+
+ double d = -514.25683;
+ S1.sprintf("%f",d);
+ QCOMPARE(S1, QString("-514.256830"));
+
+ QCOMPARE(a.sprintf("%.3s", "Hello" ),(QString)"Hel");
+ QCOMPARE(a.sprintf("%10.3s", "Hello" ),(QString)" Hel");
+ QCOMPARE(a.sprintf("%.10s", "Hello" ),(QString)"Hello");
+ QCOMPARE(a.sprintf("%10.10s", "Hello" ),(QString)" Hello");
+ QCOMPARE(a.sprintf("%-10.10s", "Hello" ),(QString)"Hello ");
+ QCOMPARE(a.sprintf("%-10.3s", "Hello" ),(QString)"Hel ");
+ QCOMPARE(a.sprintf("%-5.5s", "Hello" ),(QString)"Hello");
+
+ // Check utf8 conversion for %s
+ QCOMPARE(a.sprintf("%s", "\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205"), QString("\366\344\374\326\304\334\370\346\345\330\306\305"));
+
+ // Check codecForCStrings is used to read non-modifier sequences in the format string
+ QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
+ QCOMPARE(a.sprintf("\303\251\303\250\303\240 %s", "\303\251\303\250\303\240"), QString("\303\251\303\250\303\240 \303\251\303\250\303\240"));
+ QTextCodec::setCodecForCStrings(0);
+
+ int n1;
+ a.sprintf("%s%n%s", "hello", &n1, "goodbye");
+ QCOMPARE(n1, 5);
+ QCOMPARE(a, QString("hellogoodbye"));
+ qlonglong n2;
+ a.sprintf("%s%s%lln%s", "foo", "bar", &n2, "whiz");
+ QCOMPARE((int)n2, 6);
+ QCOMPARE(a, QString("foobarwhiz"));
+}
+
+/*
+ indexOf() and indexOf02() test QString::indexOf(),
+ QString::lastIndexOf(), and their QByteArray equivalents.
+
+ lastIndexOf() tests QString::lastIndexOf() more in depth, but it
+ should probably be rewritten to use a data table.
+*/
+
+void tst_QString::indexOf_data()
+{
+ QTest::addColumn<QString>("haystack" );
+ QTest::addColumn<QString>("needle" );
+ QTest::addColumn<int>("startpos" );
+ QTest::addColumn<bool>("bcs" );
+ QTest::addColumn<int>("resultpos" );
+
+ QTest::newRow( "data0" ) << QString("abc") << QString("a") << 0 << true << 0;
+ QTest::newRow( "data1" ) << QString("abc") << QString("a") << 0 << false << 0;
+ QTest::newRow( "data2" ) << QString("abc") << QString("A") << 0 << true << -1;
+ QTest::newRow( "data3" ) << QString("abc") << QString("A") << 0 << false << 0;
+ QTest::newRow( "data4" ) << QString("abc") << QString("a") << 1 << true << -1;
+ QTest::newRow( "data5" ) << QString("abc") << QString("a") << 1 << false << -1;
+ QTest::newRow( "data6" ) << QString("abc") << QString("A") << 1 << true << -1;
+ QTest::newRow( "data7" ) << QString("abc") << QString("A") << 1 << false << -1;
+ QTest::newRow( "data8" ) << QString("abc") << QString("b") << 0 << true << 1;
+ QTest::newRow( "data9" ) << QString("abc") << QString("b") << 0 << false << 1;
+ QTest::newRow( "data10" ) << QString("abc") << QString("B") << 0 << true << -1;
+ QTest::newRow( "data11" ) << QString("abc") << QString("B") << 0 << false << 1;
+ QTest::newRow( "data12" ) << QString("abc") << QString("b") << 1 << true << 1;
+ QTest::newRow( "data13" ) << QString("abc") << QString("b") << 1 << false << 1;
+ QTest::newRow( "data14" ) << QString("abc") << QString("B") << 1 << true << -1;
+ QTest::newRow( "data15" ) << QString("abc") << QString("B") << 1 << false << 1;
+ QTest::newRow( "data16" ) << QString("abc") << QString("b") << 2 << true << -1;
+ QTest::newRow( "data17" ) << QString("abc") << QString("b") << 2 << false << -1;
+
+ QTest::newRow( "data20" ) << QString("ABC") << QString("A") << 0 << true << 0;
+ QTest::newRow( "data21" ) << QString("ABC") << QString("A") << 0 << false << 0;
+ QTest::newRow( "data22" ) << QString("ABC") << QString("a") << 0 << true << -1;
+ QTest::newRow( "data23" ) << QString("ABC") << QString("a") << 0 << false << 0;
+ QTest::newRow( "data24" ) << QString("ABC") << QString("A") << 1 << true << -1;
+ QTest::newRow( "data25" ) << QString("ABC") << QString("A") << 1 << false << -1;
+ QTest::newRow( "data26" ) << QString("ABC") << QString("a") << 1 << true << -1;
+ QTest::newRow( "data27" ) << QString("ABC") << QString("a") << 1 << false << -1;
+ QTest::newRow( "data28" ) << QString("ABC") << QString("B") << 0 << true << 1;
+ QTest::newRow( "data29" ) << QString("ABC") << QString("B") << 0 << false << 1;
+ QTest::newRow( "data30" ) << QString("ABC") << QString("b") << 0 << true << -1;
+ QTest::newRow( "data31" ) << QString("ABC") << QString("b") << 0 << false << 1;
+ QTest::newRow( "data32" ) << QString("ABC") << QString("B") << 1 << true << 1;
+ QTest::newRow( "data33" ) << QString("ABC") << QString("B") << 1 << false << 1;
+ QTest::newRow( "data34" ) << QString("ABC") << QString("b") << 1 << true << -1;
+ QTest::newRow( "data35" ) << QString("ABC") << QString("b") << 1 << false << 1;
+ QTest::newRow( "data36" ) << QString("ABC") << QString("B") << 2 << true << -1;
+ QTest::newRow( "data37" ) << QString("ABC") << QString("B") << 2 << false << -1;
+
+ QTest::newRow( "data40" ) << QString("aBc") << QString("bc") << 0 << true << -1;
+ QTest::newRow( "data41" ) << QString("aBc") << QString("Bc") << 0 << true << 1;
+ QTest::newRow( "data42" ) << QString("aBc") << QString("bC") << 0 << true << -1;
+ QTest::newRow( "data43" ) << QString("aBc") << QString("BC") << 0 << true << -1;
+ QTest::newRow( "data44" ) << QString("aBc") << QString("bc") << 0 << false << 1;
+ QTest::newRow( "data45" ) << QString("aBc") << QString("Bc") << 0 << false << 1;
+ QTest::newRow( "data46" ) << QString("aBc") << QString("bC") << 0 << false << 1;
+ QTest::newRow( "data47" ) << QString("aBc") << QString("BC") << 0 << false << 1;
+ QTest::newRow( "data48" ) << QString("AbC") << QString("bc") << 0 << true << -1;
+ QTest::newRow( "data49" ) << QString("AbC") << QString("Bc") << 0 << true << -1;
+ QTest::newRow( "data50" ) << QString("AbC") << QString("bC") << 0 << true << 1;
+ QTest::newRow( "data51" ) << QString("AbC") << QString("BC") << 0 << true << -1;
+ QTest::newRow( "data52" ) << QString("AbC") << QString("bc") << 0 << false << 1;
+ QTest::newRow( "data53" ) << QString("AbC") << QString("Bc") << 0 << false << 1;
+
+ QTest::newRow( "data54" ) << QString("AbC") << QString("bC") << 0 << false << 1;
+ QTest::newRow( "data55" ) << QString("AbC") << QString("BC") << 0 << false << 1;
+ QTest::newRow( "data56" ) << QString("AbC") << QString("BC") << 1 << false << 1;
+ QTest::newRow( "data57" ) << QString("AbC") << QString("BC") << 2 << false << -1;
+#if 0
+ QTest::newRow( "null-in-null") << QString() << QString() << 0 << false << 0;
+ QTest::newRow( "empty-in-null") << QString() << QString("") << 0 << false << 0;
+ QTest::newRow( "null-in-empty") << QString("") << QString() << 0 << false << 0;
+ QTest::newRow( "empty-in-empty") << QString("") << QString("") << 0 << false << 0;
+#endif
+
+
+ QString s1 = "abc";
+ s1 += QChar(0xb5);
+ QString s2;
+ s2 += QChar(0x3bc);
+ QTest::newRow( "data58" ) << s1 << s2 << 0 << false << 3;
+ s2.prepend("C");
+ QTest::newRow( "data59" ) << s1 << s2 << 0 << false << 2;
+
+ QString veryBigHaystack(500, 'a');
+ veryBigHaystack += 'B';
+ QTest::newRow("BoyerMooreStressTest") << veryBigHaystack << veryBigHaystack << 0 << true << 0;
+ QTest::newRow("BoyerMooreStressTest2") << QString(veryBigHaystack + 'c') << veryBigHaystack << 0 << true << 0;
+ QTest::newRow("BoyerMooreStressTest3") << QString('c' + veryBigHaystack) << veryBigHaystack << 0 << true << 1;
+ QTest::newRow("BoyerMooreStressTest4") << veryBigHaystack << QString(veryBigHaystack + 'c') << 0 << true << -1;
+ QTest::newRow("BoyerMooreStressTest5") << veryBigHaystack << QString('c' + veryBigHaystack) << 0 << true << -1;
+ QTest::newRow("BoyerMooreStressTest6") << QString('d' + veryBigHaystack) << QString('c' + veryBigHaystack) << 0 << true << -1;
+ QTest::newRow("BoyerMooreStressTest6") << QString(veryBigHaystack + 'c') << QString('c' + veryBigHaystack) << 0 << true << -1;
+
+ QTest::newRow("BoyerMooreInsensitiveStressTest") << veryBigHaystack << veryBigHaystack << 0 << false << 0;
+
+}
+
+void tst_QString::indexOf()
+{
+ QFETCH( QString, haystack );
+ QFETCH( QString, needle );
+ QFETCH( int, startpos );
+ QFETCH( bool, bcs );
+ QFETCH( int, resultpos );
+ CREATE_REF(needle);
+
+ Qt::CaseSensitivity cs = bcs ? Qt::CaseSensitive : Qt::CaseInsensitive;
+
+ bool needleIsLatin = (QString::fromLatin1(needle.toLatin1()) == needle);
+
+ QCOMPARE( haystack.indexOf(needle, startpos, cs), resultpos );
+ QCOMPARE( haystack.indexOf(ref, startpos, cs), resultpos );
+ if (needleIsLatin) {
+ QCOMPARE( haystack.indexOf(needle.toLatin1(), startpos, cs), resultpos );
+ QCOMPARE( haystack.indexOf(needle.toLatin1().data(), startpos, cs), resultpos );
+ }
+
+ {
+ QRegExp rx1 = QRegExp(QRegExp::escape(needle), cs);
+ QRegExp rx2 = QRegExp(needle, cs, QRegExp::FixedString);
+ QCOMPARE( haystack.indexOf(rx1, startpos), resultpos );
+ QCOMPARE( haystack.indexOf(rx2, startpos), resultpos );
+ // these QRegExp must have been modified
+ QVERIFY( resultpos == -1 || rx1.matchedLength() > 0);
+ QVERIFY( resultpos == -1 || rx2.matchedLength() > 0);
+ }
+
+ {
+ const QRegExp rx1 = QRegExp(QRegExp::escape(needle), cs);
+ const QRegExp rx2 = QRegExp(needle, cs, QRegExp::FixedString);
+ QCOMPARE( haystack.indexOf(rx1, startpos), resultpos );
+ QCOMPARE( haystack.indexOf(rx2, startpos), resultpos );
+ // our QRegExp mustn't have been modified
+ QCOMPARE( rx1.matchedLength(), -1 );
+ QCOMPARE( rx2.matchedLength(), -1 );
+ }
+
+ if (cs == Qt::CaseSensitive) {
+ QCOMPARE( haystack.indexOf(needle, startpos), resultpos );
+ QCOMPARE( haystack.indexOf(ref, startpos), resultpos );
+ if (needleIsLatin) {
+ QCOMPARE( haystack.indexOf(needle.toLatin1(), startpos), resultpos );
+ QCOMPARE( haystack.indexOf(needle.toLatin1().data(), startpos), resultpos );
+ }
+ if (startpos == 0) {
+ QCOMPARE( haystack.indexOf(needle), resultpos );
+ QCOMPARE( haystack.indexOf(ref), resultpos );
+ if (needleIsLatin) {
+ QCOMPARE( haystack.indexOf(needle.toLatin1()), resultpos );
+ QCOMPARE( haystack.indexOf(needle.toLatin1().data()), resultpos );
+ }
+ }
+ }
+ if (needle.size() == 1) {
+ QCOMPARE(haystack.indexOf(needle.at(0), startpos, cs), resultpos);
+ QCOMPARE(haystack.indexOf(ref.at(0), startpos, cs), resultpos);
+ }
+
+}
+
+void tst_QString::indexOf2_data()
+{
+ QTest::addColumn<QString>("haystack" );
+ QTest::addColumn<QString>("needle" );
+ QTest::addColumn<int>("resultpos" );
+
+ QTest::newRow( "data0" ) << QString() << QString() << 0;
+ QTest::newRow( "data1" ) << QString() << QString("") << 0;
+ QTest::newRow( "data2" ) << QString("") << QString() << 0;
+ QTest::newRow( "data3" ) << QString("") << QString("") << 0;
+ QTest::newRow( "data4" ) << QString() << QString("a") << -1;
+ QTest::newRow( "data5" ) << QString() << QString("abcdefg") << -1;
+ QTest::newRow( "data6" ) << QString("") << QString("a") << -1;
+ QTest::newRow( "data7" ) << QString("") << QString("abcdefg") << -1;
+
+ QTest::newRow( "data8" ) << QString("a") << QString() << 0;
+ QTest::newRow( "data9" ) << QString("a") << QString("") << 0;
+ QTest::newRow( "data10" ) << QString("a") << QString("a") << 0;
+ QTest::newRow( "data11" ) << QString("a") << QString("b") << -1;
+ QTest::newRow( "data12" ) << QString("a") << QString("abcdefg") << -1;
+ QTest::newRow( "data13" ) << QString("ab") << QString() << 0;
+ QTest::newRow( "data14" ) << QString("ab") << QString("") << 0;
+ QTest::newRow( "data15" ) << QString("ab") << QString("a") << 0;
+ QTest::newRow( "data16" ) << QString("ab") << QString("b") << 1;
+ QTest::newRow( "data17" ) << QString("ab") << QString("ab") << 0;
+ QTest::newRow( "data18" ) << QString("ab") << QString("bc") << -1;
+ QTest::newRow( "data19" ) << QString("ab") << QString("abcdefg") << -1;
+
+ QTest::newRow( "data30" ) << QString("abc") << QString("a") << 0;
+ QTest::newRow( "data31" ) << QString("abc") << QString("b") << 1;
+ QTest::newRow( "data32" ) << QString("abc") << QString("c") << 2;
+ QTest::newRow( "data33" ) << QString("abc") << QString("d") << -1;
+ QTest::newRow( "data34" ) << QString("abc") << QString("ab") << 0;
+ QTest::newRow( "data35" ) << QString("abc") << QString("bc") << 1;
+ QTest::newRow( "data36" ) << QString("abc") << QString("cd") << -1;
+ QTest::newRow( "data37" ) << QString("abc") << QString("ac") << -1;
+
+ // sizeof(whale) > 32
+ QString whale = "a5zby6cx7dw8evf9ug0th1si2rj3qkp4lomn";
+ QString minnow = "zby";
+ QTest::newRow( "data40" ) << whale << minnow << 2;
+ QTest::newRow( "data41" ) << QString(whale + whale) << minnow << 2;
+ QTest::newRow( "data42" ) << QString(minnow + whale) << minnow << 0;
+ QTest::newRow( "data43" ) << whale << whale << 0;
+ QTest::newRow( "data44" ) << QString(whale + whale) << whale << 0;
+ QTest::newRow( "data45" ) << whale << QString(whale + whale) << -1;
+ QTest::newRow( "data46" ) << QString(whale + whale) << QString(whale + whale) << 0;
+ QTest::newRow( "data47" ) << QString(whale + whale) << QString(whale + minnow) << -1;
+ QTest::newRow( "data48" ) << QString(minnow + whale) << whale << (int)minnow.length();
+}
+
+void tst_QString::indexOf2()
+{
+ QFETCH( QString, haystack );
+ QFETCH( QString, needle );
+ QFETCH( int, resultpos );
+ CREATE_REF(needle);
+
+ QByteArray chaystack = haystack.toLatin1();
+ QByteArray cneedle = needle.toLatin1();
+ int got;
+
+ QCOMPARE( haystack.indexOf(needle, 0, Qt::CaseSensitive), resultpos );
+ QCOMPARE( haystack.indexOf(ref, 0, Qt::CaseSensitive), resultpos );
+ QCOMPARE( QStringMatcher(needle, Qt::CaseSensitive).indexIn(haystack, 0), resultpos );
+ QCOMPARE( haystack.indexOf(needle, 0, Qt::CaseInsensitive), resultpos );
+ QCOMPARE( haystack.indexOf(ref, 0, Qt::CaseInsensitive), resultpos );
+ QCOMPARE( QStringMatcher(needle, Qt::CaseInsensitive).indexIn(haystack, 0), resultpos );
+ if ( needle.length() > 0 ) {
+ got = haystack.lastIndexOf( needle, -1, Qt::CaseSensitive );
+ QVERIFY( got == resultpos || (resultpos >= 0 && got >= resultpos) );
+ got = haystack.lastIndexOf( needle, -1, Qt::CaseInsensitive );
+ QVERIFY( got == resultpos || (resultpos >= 0 && got >= resultpos) );
+ }
+
+ QCOMPARE( chaystack.indexOf(cneedle, 0), resultpos );
+ QCOMPARE( QByteArrayMatcher(cneedle).indexIn(chaystack, 0), resultpos );
+ if ( cneedle.length() > 0 ) {
+ got = chaystack.lastIndexOf(cneedle, -1);
+ QVERIFY( got == resultpos || (resultpos >= 0 && got >= resultpos) );
+ }
+}
+
+void tst_QString::lastIndexOf_data()
+{
+ QTest::addColumn<QString>("haystack" );
+ QTest::addColumn<QString>("needle" );
+ QTest::addColumn<int>("from" );
+ QTest::addColumn<int>("expected" );
+ QTest::addColumn<bool>("caseSensitive" );
+
+ QString a = "ABCDEFGHIEfGEFG";
+
+ QTest::newRow("-1") << a << "G" << a.size() - 1 << 14 << true;
+ QTest::newRow("1") << a << "G" << - 1 << 14 << true;
+ QTest::newRow("2") << a << "G" << -3 << 11 << true;
+ QTest::newRow("3") << a << "G" << -5 << 6 << true;
+ QTest::newRow("4") << a << "G" << 14 << 14 << true;
+ QTest::newRow("5") << a << "G" << 13 << 11 << true;
+ QTest::newRow("6") << a << "B" << a.size() - 1 << 1 << true;
+ QTest::newRow("6") << a << "B" << - 1 << 1 << true;
+ QTest::newRow("7") << a << "B" << 1 << 1 << true;
+ QTest::newRow("8") << a << "B" << 0 << -1 << true;
+
+ QTest::newRow("9") << a << "G" << -1 << a.size()-1 << true;
+ QTest::newRow("10") << a << "G" << a.size()-1 << a.size()-1 << true;
+ QTest::newRow("11") << a << "G" << a.size() << -1 << true;
+ QTest::newRow("12") << a << "A" << 0 << 0 << true;
+ QTest::newRow("13") << a << "A" << -1*a.size() << 0 << true;
+
+ QTest::newRow("15") << a << "efg" << 0 << -1 << false;
+ QTest::newRow("16") << a << "efg" << a.size() << -1 << false;
+ QTest::newRow("17") << a << "efg" << -1 * a.size() << -1 << false;
+ QTest::newRow("19") << a << "efg" << a.size() - 1 << 12 << false;
+ QTest::newRow("20") << a << "efg" << 12 << 12 << false;
+ QTest::newRow("21") << a << "efg" << -12 << -1 << false;
+ QTest::newRow("22") << a << "efg" << 11 << 9 << false;
+
+ QTest::newRow("24") << "" << "asdf" << -1 << -1 << false;
+ QTest::newRow("25") << "asd" << "asdf" << -1 << -1 << false;
+ QTest::newRow("26") << "" << QString() << -1 << -1 << false;
+
+ QTest::newRow("27") << a << "" << a.size() << a.size() << false;
+ QTest::newRow("28") << a << "" << a.size() + 10 << -1 << false;
+}
+
+void tst_QString::lastIndexOf()
+{
+ QFETCH(QString, haystack);
+ QFETCH(QString, needle);
+ QFETCH(int, from);
+ QFETCH(int, expected);
+ QFETCH(bool, caseSensitive);
+ CREATE_REF(needle);
+
+ Qt::CaseSensitivity cs = (caseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive);
+
+ QCOMPARE(haystack.lastIndexOf(needle, from, cs), expected);
+ QCOMPARE(haystack.lastIndexOf(ref, from, cs), expected);
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1(), from, cs), expected);
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1().data(), from, cs), expected);
+
+ if (from >= -1 && from < haystack.size()) {
+ // unfortunately, QString and QRegExp don't have the same out of bound semantics
+ // I think QString is wrong -- See file log for contact information.
+ {
+ QRegExp rx1 = QRegExp(QRegExp::escape(needle), cs);
+ QRegExp rx2 = QRegExp(needle, cs, QRegExp::FixedString);
+ QCOMPARE(haystack.lastIndexOf(rx1, from), expected);
+ QCOMPARE(haystack.lastIndexOf(rx2, from), expected);
+ // our QRegExp mustn't have been modified
+ QVERIFY(expected == -1 || rx1.matchedLength() > 0);
+ QVERIFY(expected == -1 || rx2.matchedLength() > 0);
+ }
+
+ {
+ const QRegExp rx1 = QRegExp(QRegExp::escape(needle), cs);
+ const QRegExp rx2 = QRegExp(needle, cs, QRegExp::FixedString);
+ QCOMPARE(haystack.lastIndexOf(rx1, from), expected);
+ QCOMPARE(haystack.lastIndexOf(rx2, from), expected);
+ // our QRegExp mustn't have been modified
+ QCOMPARE(rx1.matchedLength(), -1);
+ QCOMPARE(rx2.matchedLength(), -1);
+ }
+ }
+
+ if (cs == Qt::CaseSensitive) {
+ QCOMPARE(haystack.lastIndexOf(needle, from), expected);
+ QCOMPARE(haystack.lastIndexOf(ref, from), expected);
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1(), from), expected);
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1().data(), from), expected);
+ if (from == -1) {
+ QCOMPARE(haystack.lastIndexOf(needle), expected);
+ QCOMPARE(haystack.lastIndexOf(ref), expected);
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1()), expected);
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1().data()), expected);
+ }
+ }
+ if (needle.size() == 1) {
+ QCOMPARE(haystack.lastIndexOf(needle.at(0), from), expected);
+ QCOMPARE(haystack.lastIndexOf(ref.at(0), from), expected);
+ }
+}
+
+void tst_QString::count()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+ QCOMPARE(a.count('A'),1);
+ QCOMPARE(a.count('Z'),0);
+ QCOMPARE(a.count('E'),3);
+ QCOMPARE(a.count('F'),2);
+ QCOMPARE(a.count('F',Qt::CaseInsensitive),3);
+ QCOMPARE(a.count("FG"),2);
+ QCOMPARE(a.count("FG",Qt::CaseInsensitive),3);
+ QCOMPARE(a.count( QString(), Qt::CaseInsensitive), 16);
+ QCOMPARE(a.count( "", Qt::CaseInsensitive), 16);
+ QCOMPARE(a.count(QRegExp("[FG][HI]")),1);
+ QCOMPARE(a.count(QRegExp("[G][HE]")),2);
+
+ CREATE_REF(QLatin1String("FG"));
+ QCOMPARE(a.count(ref),2);
+ QCOMPARE(a.count(ref,Qt::CaseInsensitive),3);
+ QCOMPARE(a.count( QStringRef(), Qt::CaseInsensitive), 16);
+ QStringRef emptyRef(&a, 0, 0);
+ QCOMPARE(a.count( emptyRef, Qt::CaseInsensitive), 16);
+
+}
+
+void tst_QString::contains()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+ QVERIFY(a.contains('A'));
+ QVERIFY(!a.contains('Z'));
+ QVERIFY(a.contains('E'));
+ QVERIFY(a.contains('F'));
+ QVERIFY(a.contains('F',Qt::CaseInsensitive));
+ QVERIFY(a.contains("FG"));
+ QVERIFY(a.contains("FG",Qt::CaseInsensitive));
+ QVERIFY(a.contains( QString(), Qt::CaseInsensitive));
+ QVERIFY(a.contains( "", Qt::CaseInsensitive));
+ QVERIFY(a.contains(QRegExp("[FG][HI]")));
+ QVERIFY(a.contains(QRegExp("[G][HE]")));
+
+ CREATE_REF(QLatin1String("FG"));
+ QVERIFY(a.contains(ref));
+ QVERIFY(a.contains(ref, Qt::CaseInsensitive));
+ QVERIFY(a.contains( QStringRef(), Qt::CaseInsensitive));
+ QStringRef emptyRef(&a, 0, 0);
+ QVERIFY(a.contains(emptyRef, Qt::CaseInsensitive));
+
+}
+
+
+void tst_QString::left()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+ QCOMPARE(a.left(3),(QString)"ABC");
+ QVERIFY(!a.left(0).isNull());
+ QCOMPARE(a.left(0),(QString)"");
+
+ QString n;
+ QVERIFY(n.left(3).isNull());
+ QVERIFY(n.left(0).isNull());
+ QVERIFY(n.left(0).isNull());
+
+ QString l = "Left";
+ QCOMPARE(l.left(-1), l);
+ QCOMPARE(l.left(100), l);
+}
+
+void tst_QString::leftRef()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+ QCOMPARE(a.leftRef(3).toString(),(QString)"ABC");
+
+ QVERIFY(a.leftRef(0).toString().isEmpty());
+ QCOMPARE(a.leftRef(0).toString(),(QString)"");
+
+ QString n;
+ QVERIFY(n.leftRef(3).toString().isEmpty());
+ QVERIFY(n.leftRef(0).toString().isEmpty());
+ QVERIFY(n.leftRef(0).toString().isEmpty());
+
+ QString l = "Left";
+ QCOMPARE(l.leftRef(-1).toString(), l);
+ QCOMPARE(l.leftRef(100).toString(), l);
+}
+
+void tst_QString::right()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+ QCOMPARE(a.right(3),(QString)"EFG");
+ QCOMPARE(a.right(0),(QString)"");
+
+ QString n;
+ QVERIFY(n.right(3).isNull());
+ QVERIFY(n.right(0).isNull());
+
+ QString r = "Right";
+ QCOMPARE(r.right(-1), r);
+ QCOMPARE(r.right(100), r);
+}
+
+void tst_QString::rightRef()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+ QCOMPARE(a.rightRef(3).toString(),(QString)"EFG");
+ QCOMPARE(a.rightRef(0).toString(),(QString)"");
+
+ QString n;
+ QVERIFY(n.rightRef(3).toString().isEmpty());
+ QVERIFY(n.rightRef(0).toString().isEmpty());
+
+ QString r = "Right";
+ QCOMPARE(r.rightRef(-1).toString(), r);
+ QCOMPARE(r.rightRef(100).toString(), r);
+}
+
+void tst_QString::mid()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+
+ QCOMPARE(a.mid(3,3),(QString)"DEF");
+ QCOMPARE(a.mid(0,0),(QString)"");
+ QVERIFY(a.mid(9999).isNull());
+ QVERIFY(a.mid(9999,1).isNull());
+
+ QString n;
+ QVERIFY(n.mid(3,3).isNull());
+ QVERIFY(n.mid(0,0).isNull());
+ QVERIFY(n.mid(9999,0).isNull());
+ QVERIFY(n.mid(9999,1).isNull());
+
+ QString x = "Nine pineapples";
+ QCOMPARE(x.mid(5, 4), QString("pine"));
+ QCOMPARE(x.mid(5), QString("pineapples"));
+
+}
+
+void tst_QString::midRef()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+
+ QCOMPARE(a.midRef(3,3).toString(),(QString)"DEF");
+ QCOMPARE(a.midRef(0,0).toString(),(QString)"");
+ QVERIFY(a.midRef(9999).toString().isEmpty());
+ QVERIFY(a.midRef(9999,1).toString().isEmpty());
+
+ QString n;
+ QVERIFY(n.midRef(3,3).toString().isEmpty());
+ QVERIFY(n.midRef(0,0).toString().isEmpty());
+ QVERIFY(n.midRef(9999,0).toString().isEmpty());
+ QVERIFY(n.midRef(9999,1).toString().isEmpty());
+
+ QString x = "Nine pineapples";
+ QCOMPARE(x.midRef(5, 4).toString(), QString("pine"));
+ QCOMPARE(x.midRef(5).toString(), QString("pineapples"));
+
+}
+
+void tst_QString::stringRef()
+{
+ QString a;
+ a="ABCDEFGHIEfGEFG"; // 15 chars
+
+ QVERIFY(QStringRef(&a, 0, 0) == (QString)"");
+
+ QVERIFY(QStringRef(&a, 3, 3) == (QString)"DEF");
+ QVERIFY(QStringRef(&a, 3, 3) == QLatin1String("DEF"));
+ QVERIFY(QStringRef(&a, 3, 3) == "DEF");
+ QVERIFY((QString)"DEF" == QStringRef(&a, 3, 3));
+ QVERIFY(QLatin1String("DEF") == QStringRef(&a, 3, 3));
+ QVERIFY("DEF" == QStringRef(&a, 3, 3));
+
+ QVERIFY(QStringRef(&a, 3, 3) != (QString)"DE");
+ QVERIFY(QStringRef(&a, 3, 3) != QLatin1String("DE"));
+ QVERIFY(QStringRef(&a, 3, 3) != "DE");
+ QVERIFY((QString)"DE" != QStringRef(&a, 3, 3));
+ QVERIFY(QLatin1String("DE") != QStringRef(&a, 3, 3));
+ QVERIFY("DE" != QStringRef(&a, 3, 3));
+
+ QString s_alpha("alpha");
+ QString s_beta("beta");
+ QStringRef alpha(&s_alpha);
+ QStringRef beta(&s_beta);
+
+ QVERIFY(alpha < beta);
+ QVERIFY(alpha <= beta);
+ QVERIFY(alpha <= alpha);
+ QVERIFY(beta > alpha);
+ QVERIFY(beta >= alpha);
+ QVERIFY(beta >= beta);
+
+ QString s_alpha2("alpha");
+
+ QMap<QStringRef, QString> map;
+ map.insert(alpha, "alpha");
+ map.insert(beta, "beta");
+ QVERIFY(alpha == map.value(QStringRef(&s_alpha2)));
+
+ QHash<QStringRef, QString> hash;
+ hash.insert(alpha, "alpha");
+ hash.insert(beta, "beta");
+
+ QVERIFY(alpha == hash.value(QStringRef(&s_alpha2)));
+}
+
+void tst_QString::leftJustified()
+{
+ QString a;
+ a="ABC";
+ QCOMPARE(a.leftJustified(5,'-'),(QString)"ABC--");
+ QCOMPARE(a.leftJustified(4,'-'),(QString)"ABC-");
+ QCOMPARE(a.leftJustified(4),(QString)"ABC ");
+ QCOMPARE(a.leftJustified(3),(QString)"ABC");
+ QCOMPARE(a.leftJustified(2),(QString)"ABC");
+ QCOMPARE(a.leftJustified(1),(QString)"ABC");
+ QCOMPARE(a.leftJustified(0),(QString)"ABC");
+
+ QString n;
+ QVERIFY(!n.leftJustified(3).isNull());
+ QCOMPARE(a.leftJustified(4,' ',true),(QString)"ABC ");
+ QCOMPARE(a.leftJustified(3,' ',true),(QString)"ABC");
+ QCOMPARE(a.leftJustified(2,' ',true),(QString)"AB");
+ QCOMPARE(a.leftJustified(1,' ',true),(QString)"A");
+ QCOMPARE(a.leftJustified(0,' ',true),(QString)"");
+}
+
+void tst_QString::rightJustified()
+{
+ QString a;
+ a="ABC";
+ QCOMPARE(a.rightJustified(5,'-'),(QString)"--ABC");
+ QCOMPARE(a.rightJustified(4,'-'),(QString)"-ABC");
+ QCOMPARE(a.rightJustified(4),(QString)" ABC");
+ QCOMPARE(a.rightJustified(3),(QString)"ABC");
+ QCOMPARE(a.rightJustified(2),(QString)"ABC");
+ QCOMPARE(a.rightJustified(1),(QString)"ABC");
+ QCOMPARE(a.rightJustified(0),(QString)"ABC");
+
+ QString n;
+ QVERIFY(!n.rightJustified(3).isNull());
+ QCOMPARE(a.rightJustified(4,'-',true),(QString)"-ABC");
+ QCOMPARE(a.rightJustified(4,' ',true),(QString)" ABC");
+ QCOMPARE(a.rightJustified(3,' ',true),(QString)"ABC");
+ QCOMPARE(a.rightJustified(2,' ',true),(QString)"AB");
+ QCOMPARE(a.rightJustified(1,' ',true),(QString)"A");
+ QCOMPARE(a.rightJustified(0,' ',true),(QString)"");
+ QCOMPARE(a,(QString)"ABC");
+}
+
+void tst_QString::toUpper()
+{
+ QCOMPARE( QString().toUpper(), QString() );
+ QCOMPARE( QString("").toUpper(), QString("") );
+ QCOMPARE( QString("text").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("Text").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("tExt").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("teXt").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("texT").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("TExt").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("teXT").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("tEXt").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("tExT").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("TEXT").toUpper(), QString("TEXT") );
+ QCOMPARE( QString("@ABYZ[").toUpper(), QString("@ABYZ["));
+ QCOMPARE( QString("@abyz[").toUpper(), QString("@ABYZ["));
+ QCOMPARE( QString("`ABYZ{").toUpper(), QString("`ABYZ{"));
+ QCOMPARE( QString("`abyz{").toUpper(), QString("`ABYZ{"));
+
+ QCOMPARE( QString(1, QChar(0xdf)).toUpper(), QString("SS"));
+
+ QString lower;
+ lower += QChar(QChar::highSurrogate(0x10428));
+ lower += QChar(QChar::lowSurrogate(0x10428));
+ QString upper;
+ upper += QChar(QChar::highSurrogate(0x10400));
+ upper += QChar(QChar::lowSurrogate(0x10400));
+ QCOMPARE( lower.toUpper(), upper);
+
+
+#ifdef QT_USE_ICU
+ // test doesn't work with ICU support, since QChar is unaware of any locale
+ QEXPECT_FAIL("", "test doesn't work with ICU support, since QChar is unaware of any locale", Continue);
+ QVERIFY(false);
+#else
+ for (int i = 0; i < 65536; ++i) {
+ QString str(1, QChar(i));
+ QString upper = str.toUpper();
+ QVERIFY(upper.length() >= 1);
+ if (upper.length() == 1)
+ QVERIFY(upper == QString(1, QChar(i).toUpper()));
+ }
+#endif
+}
+
+void tst_QString::toLower()
+{
+ QCOMPARE( QString().toLower(), QString() );
+ QCOMPARE( QString("").toLower(), QString("") );
+ QCOMPARE( QString("text").toLower(), QString("text") );
+ QCOMPARE( QString("Text").toLower(), QString("text") );
+ QCOMPARE( QString("tExt").toLower(), QString("text") );
+ QCOMPARE( QString("teXt").toLower(), QString("text") );
+ QCOMPARE( QString("texT").toLower(), QString("text") );
+ QCOMPARE( QString("TExt").toLower(), QString("text") );
+ QCOMPARE( QString("teXT").toLower(), QString("text") );
+ QCOMPARE( QString("tEXt").toLower(), QString("text") );
+ QCOMPARE( QString("tExT").toLower(), QString("text") );
+ QCOMPARE( QString("TEXT").toLower(), QString("text") );
+ QCOMPARE( QString("@ABYZ[").toLower(), QString("@abyz["));
+ QCOMPARE( QString("@abyz[").toLower(), QString("@abyz["));
+ QCOMPARE( QString("`ABYZ{").toLower(), QString("`abyz{"));
+ QCOMPARE( QString("`abyz{").toLower(), QString("`abyz{"));
+
+ QCOMPARE( QString(1, QChar(0x130)).toLower(), QString(QString(1, QChar(0x69)) + QChar(0x307)));
+
+ QString lower;
+ lower += QChar(QChar::highSurrogate(0x10428));
+ lower += QChar(QChar::lowSurrogate(0x10428));
+ QString upper;
+ upper += QChar(QChar::highSurrogate(0x10400));
+ upper += QChar(QChar::lowSurrogate(0x10400));
+ QCOMPARE( upper.toLower(), lower);
+
+#ifdef QT_USE_ICU
+ // test doesn't work with ICU support, since QChar is unaware of any locale
+ QEXPECT_FAIL("", "test doesn't work with ICU support, since QChar is unaware of any locale", Continue);
+ QVERIFY(false);
+#else
+ for (int i = 0; i < 65536; ++i) {
+ QString str(1, QChar(i));
+ QString lower = str.toLower();
+ QVERIFY(lower.length() >= 1);
+ if (lower.length() == 1)
+ QVERIFY(str.toLower() == QString(1, QChar(i).toLower()));
+ }
+#endif
+}
+
+void tst_QString::trimmed()
+{
+ QString a;
+ a="Text";
+ QCOMPARE(a,(QString)"Text");
+ QCOMPARE(a.trimmed(),(QString)"Text");
+ QCOMPARE(a,(QString)"Text");
+ a=" ";
+ QCOMPARE(a.trimmed(),(QString)"");
+ QCOMPARE(a,(QString)" ");
+ a=" a ";
+ QCOMPARE(a.trimmed(),(QString)"a");
+}
+
+void tst_QString::simplified_data()
+{
+ QTest::addColumn<QString>("full" );
+ QTest::addColumn<QString>("simple" );
+
+ QTest::newRow("null") << QString() << QString();
+ QTest::newRow("empty") << "" << "";
+ QTest::newRow("one char") << "a" << "a";
+ QTest::newRow("one word") << "foo" << "foo";
+ QTest::newRow("chars trivial") << "a b" << "a b";
+ QTest::newRow("words trivial") << "foo bar" << "foo bar";
+ QTest::newRow("allspace") << " \t\v " << "";
+ QTest::newRow("char trailing") << "a " << "a";
+ QTest::newRow("char trailing tab") << "a\t" << "a";
+ QTest::newRow("char multitrailing") << "a " << "a";
+ QTest::newRow("char multitrailing tab") << "a \t" << "a";
+ QTest::newRow("char leading") << " a" << "a";
+ QTest::newRow("char leading tab") << "\ta" << "a";
+ QTest::newRow("char multileading") << " a" << "a";
+ QTest::newRow("char multileading tab") << "\t a" << "a";
+ QTest::newRow("chars apart") << "a b" << "a b";
+ QTest::newRow("words apart") << "foo bar" << "foo bar";
+ QTest::newRow("enclosed word") << " foo \t " << "foo";
+ QTest::newRow("enclosed chars apart") << " a b " << "a b";
+ QTest::newRow("enclosed words apart") << " foo bar " << "foo bar";
+ QTest::newRow("chars apart posttab") << "a \tb" << "a b";
+ QTest::newRow("chars apart pretab") << "a\t b" << "a b";
+ QTest::newRow("many words") << " just some random\ttext here" << "just some random text here";
+}
+
+void tst_QString::simplified()
+{
+ QFETCH(QString, full);
+ QFETCH(QString, simple);
+
+ QString result = full.simplified();
+ if (simple.isNull()) {
+ QVERIFY2(result.isNull(), qPrintable("'" + full + "' did not yield null: " + result));
+ } else if (simple.isEmpty()) {
+ QVERIFY2(result.isEmpty() && !result.isNull(), qPrintable("'" + full + "' did not yield empty: " + result));
+ } else {
+ QCOMPARE(result, simple);
+ if (full == simple)
+ QVERIFY(result.isSharedWith(full));
+ }
+}
+
+void tst_QString::insert()
+{
+ QString a;
+
+ a = "Ys";
+ QCOMPARE(a.insert(1,'e'), QString("Yes"));
+ QCOMPARE(a.insert(3,'!'), QString("Yes!"));
+ QCOMPARE(a.insert(5,'?'), QString("Yes! ?"));
+
+ a = "ABC";
+ QCOMPARE(a.insert(5,"DEF"), QString("ABC DEF"));
+
+ a = "ABC";
+ QCOMPARE(a.insert(2, QString()), QString("ABC"));
+ QCOMPARE(a.insert(0,"ABC"), QString("ABCABC"));
+ QCOMPARE(a, QString("ABCABC"));
+ QCOMPARE(a.insert(0,a), QString("ABCABCABCABC"));
+
+ QCOMPARE(a, QString("ABCABCABCABC"));
+ QCOMPARE(a.insert(0,'<'), QString("<ABCABCABCABC"));
+ QCOMPARE(a.insert(1,'>'), QString("<>ABCABCABCABC"));
+
+ a = "Meal";
+ QCOMPARE(a.insert(1, QLatin1String("ontr")), QString("Montreal"));
+ QCOMPARE(a.insert(4, ""), QString("Montreal"));
+ QCOMPARE(a.insert(3, QLatin1String("")), QString("Montreal"));
+ QCOMPARE(a.insert(3, QLatin1String(0)), QString("Montreal"));
+ QCOMPARE(a.insert(3, static_cast<const char *>(0)), QString("Montreal"));
+ QCOMPARE(a.insert(0, QLatin1String("a")), QString("aMontreal"));
+}
+
+void tst_QString::append()
+{
+ QString a;
+ a = "<>ABCABCABCABC";
+ QCOMPARE(a.append(">"),(QString)"<>ABCABCABCABC>");
+#if 0
+#if !defined(QT_NO_STL)
+ /*
+ The std::string support is fairly trivial in itself. The major
+ problem is whether it compiles or not, because of the way
+ different compilers choose an overload based on the type of the
+ argument. If it compiles, we're happy.
+ */
+ std::string stroustrup;
+ a.append( stroustrup );
+ a += stroustrup;
+#endif
+#endif
+}
+
+void tst_QString::append_bytearray_data()
+{
+ QTest::addColumn<QString>("str" );
+ QTest::addColumn<QByteArray>("ba" );
+ QTest::addColumn<QString>("res" );
+
+ QByteArray ba( 5, 0 );
+ ba[0] = 'a';
+ ba[1] = 'b';
+ ba[2] = 'c';
+ ba[3] = 'd';
+#if 0
+ ba[4] = 0;
+
+ for ( int i=0; i<2; i++ ) {
+ // i == 0: the byte array is exactly strlen+1
+ // i == 1: the byte array is larger than strlen+1
+ QTest::newRow( QString("nullTerminated_%1_0").arg(i) ) << QString() << ba << QString("abcd");
+ QTest::newRow( QString("nullTerminated_%1_1").arg(i) ) << QString("") << ba << QString("abcd");
+ QTest::newRow( QString("nullTerminated_%1_2").arg(i) ) << QString("foobar ") << ba << QString("foobar abcd");
+
+ ba.resize( 8 );
+ }
+#endif
+ // no 0 termination
+ ba.resize( 4 );
+ QTest::newRow( "notTerminated_0" ) << QString() << ba << QString("abcd");
+ QTest::newRow( "notTerminated_1" ) << QString("") << ba << QString("abcd");
+ QTest::newRow( "notTerminated_2" ) << QString("foobar ") << ba << QString("foobar abcd");
+
+ // byte array with only a 0
+ ba.resize( 1 );
+ ba[0] = 0;
+ QByteArray ba2("foobar ");
+ ba2.append('\0');
+ QTest::newRow( "emptyString" ) << QString("foobar ") << ba << QString(ba2);
+
+ // empty byte array
+ ba.resize( 0 );
+ QTest::newRow( "emptyByteArray" ) << QString("foobar ") << ba << QString("foobar ");
+}
+
+void tst_QString::append_bytearray()
+{
+ {
+ QFETCH( QString, str );
+ QFETCH( QByteArray, ba );
+
+ str.append( ba );
+
+ QTEST( str, "res" );
+ }
+ {
+ QFETCH( QString, str );
+ QFETCH( QByteArray, ba );
+
+ QTextCodec::setCodecForCStrings( QTextCodec::codecForMib(4) ); // Latin 1
+ str.append( ba );
+ QTextCodec::setCodecForCStrings( 0 );
+
+ QTEST( str, "res" );
+ }
+}
+
+void tst_QString::operator_pluseq_bytearray_data()
+{
+ append_bytearray_data();
+}
+
+void tst_QString::operator_pluseq_bytearray()
+{
+ {
+ QFETCH( QString, str );
+ QFETCH( QByteArray, ba );
+
+ str += ba;
+
+ QTEST( str, "res" );
+ }
+ {
+ QFETCH( QString, str );
+ QFETCH( QByteArray, ba );
+
+ QTextCodec::setCodecForCStrings( QTextCodec::codecForMib(4) ); // Latin 1
+ str += ba;
+ QTextCodec::setCodecForCStrings( 0 );
+
+ QTEST( str, "res" );
+ }
+}
+
+void tst_QString::swap()
+{
+ QString s1, s2;
+ s1 = "s1";
+ s2 = "s2";
+ s1.swap(s2);
+ QCOMPARE(s1,QLatin1String("s2"));
+ QCOMPARE(s2,QLatin1String("s1"));
+}
+
+void tst_QString::prepend()
+{
+ QString a;
+ a = "<>ABCABCABCABC>";
+ QCOMPARE(a.prepend("-"),(QString)"-<>ABCABCABCABC>");
+#if 0
+#if !defined(QT_NO_STL)
+ std::string stroustrup;
+ a.prepend( stroustrup );
+#endif
+#endif
+}
+
+void tst_QString::prepend_bytearray_data()
+{
+ QTest::addColumn<QString>("str" );
+ QTest::addColumn<QByteArray>("ba" );
+ QTest::addColumn<QString>("res" );
+
+ QByteArray ba( 5, 0 );
+ ba[0] = 'a';
+ ba[1] = 'b';
+ ba[2] = 'c';
+ ba[3] = 'd';
+#if 0
+ ba[4] = 0;
+
+ for ( int i=0; i<2; i++ ) {
+ // i == 0: the byte array is exactly strlen+1
+ // i == 1: the byte array is larger than strlen+1
+ QTest::newRow( QString("nullTerminated_%1_0").arg(i) ) << QString() << ba << QString("abcd");
+ QTest::newRow( QString("nullTerminated_%1_1").arg(i) ) << QString("") << ba << QString("abcd");
+ QTest::newRow( QString("nullTerminated_%1_2").arg(i) ) << QString(" foobar") << ba << QString("abcd foobar");
+
+ ba.resize( 8 );
+ }
+ // no 0 termination
+ ba.resize( 4 );
+ QTest::newRow( "notTerminated_0" ) << QString() << ba << QString("abcd");
+ QTest::newRow( "notTerminated_1" ) << QString("") << ba << QString("abcd");
+ QTest::newRow( "notTerminated_2" ) << QString(" foobar") << ba << QString("abcd foobar");
+#endif
+
+ // byte array with only a 0
+ ba.resize( 1 );
+ ba[0] = 0;
+ QTest::newRow( "emptyString" ) << QString("foobar ") << ba << QString("foobar ");
+
+ // empty byte array
+ ba.resize( 0 );
+ QTest::newRow( "emptyByteArray" ) << QString(" foobar") << ba << QString(" foobar");
+}
+
+void tst_QString::prepend_bytearray()
+{
+ {
+ QFETCH( QString, str );
+ QFETCH( QByteArray, ba );
+
+ str.prepend( ba );
+
+ QFETCH( QString, res );
+ QCOMPARE( str, res );
+ }
+ {
+ QFETCH( QString, str );
+ QFETCH( QByteArray, ba );
+
+ QTextCodec::setCodecForCStrings( QTextCodec::codecForMib(4) ); // Latin 1
+ str.prepend( ba );
+ QTextCodec::setCodecForCStrings( 0 );
+
+ QTEST( str, "res" );
+ }
+}
+
+void tst_QString::replace_uint_uint()
+{
+ QFETCH( QString, string );
+ QFETCH( int, index );
+ QFETCH( int, len );
+ QFETCH( QString, after );
+
+ QString s1 = string;
+ s1.replace( (uint) index, (int) len, after );
+ QTEST( s1, "result" );
+
+ QString s2 = string;
+ s2.replace( (uint) index, (uint) len, after.unicode(), after.length() );
+ QTEST( s2, "result" );
+
+ if ( after.length() == 1 ) {
+ QString s3 = string;
+ s3.replace( (uint) index, (uint) len, QChar(after[0]) );
+ QTEST( s3, "result" );
+
+ QString s4 = string;
+ s4.replace( (uint) index, (uint) len, QChar(after[0]).toLatin1() );
+ QTEST( s4, "result" );
+ }
+}
+
+void tst_QString::replace_uint_uint_extra()
+{
+ /*
+ This test is designed to be extremely slow if QString::replace() doesn't optimize the case
+ len == after.size().
+ */
+ QString str("dsfkljfdsjklsdjsfjklfsdjkldfjslkjsdfkllkjdsfjklsfdkjsdflkjlsdfjklsdfkjldsflkjsddlkj");
+ for (int j = 1; j < 12; ++j)
+ str += str;
+
+ QString str2("aaaaaaaaaaaaaaaaaaaa");
+ for (int i = 0; i < 2000000; ++i) {
+ str.replace(10, 20, str2);
+ }
+
+ /*
+ Make sure that replacing with itself works.
+ */
+ QString copy(str);
+ copy.detach();
+ str.replace(0, str.length(), str);
+ QVERIFY(copy == str);
+
+ /*
+ Make sure that replacing a part of oneself with itself works.
+ */
+ QString str3("abcdefghij");
+ str3.replace(0, 1, str3);
+ QCOMPARE(str3, QString("abcdefghijbcdefghij"));
+
+ QString str4("abcdefghij");
+ str4.replace(1, 3, str4);
+ QCOMPARE(str4, QString("aabcdefghijefghij"));
+
+ QString str5("abcdefghij");
+ str5.replace(8, 10, str5);
+ QCOMPARE(str5, QString("abcdefghabcdefghij"));
+}
+
+void tst_QString::replace_string()
+{
+ QFETCH( QString, string );
+ QFETCH( QString, before );
+ QFETCH( QString, after );
+ QFETCH( bool, bcs );
+
+ Qt::CaseSensitivity cs = bcs ? Qt::CaseSensitive : Qt::CaseInsensitive;
+
+ if ( before.length() == 1 ) {
+ QChar ch = before.at( 0 );
+
+ QString s1 = string;
+ s1.replace( ch, after, cs );
+ QTEST( s1, "result" );
+
+ if ( QChar(ch.toLatin1()) == ch ) {
+ QString s2 = string;
+ s2.replace( ch.toLatin1(), after, cs );
+ QTEST( s2, "result" );
+ }
+ }
+
+ QString s3 = string;
+ s3.replace( before, after, cs );
+ QTEST( s3, "result" );
+
+ QString s4 = string;
+ s4.replace( QRegExp(QRegExp::escape(before), cs), after );
+ QTEST( s4, "result" );
+
+ QString s5 = string;
+ s5.replace(QRegExp(before, cs, QRegExp::FixedString), after);
+ QTEST( s5, "result" );
+}
+
+void tst_QString::replace_regexp()
+{
+ QFETCH( QString, string );
+ QFETCH( QString, regexp );
+ QFETCH( QString, after );
+
+ QString s2 = string;
+ s2.replace( QRegExp(regexp), after );
+ QTEST( s2, "result" );
+}
+
+void tst_QString::remove_uint_uint()
+{
+ QFETCH( QString, string );
+ QFETCH( int, index );
+ QFETCH( int, len );
+ QFETCH( QString, after );
+
+ if ( after.length() == 0 ) {
+ QString s1 = string;
+ s1.remove( (uint) index, (uint) len );
+ QTEST( s1, "result" );
+ } else
+ QCOMPARE( 0, 0 ); // shut QtTest
+}
+
+void tst_QString::remove_string()
+{
+ QFETCH( QString, string );
+ QFETCH( QString, before );
+ QFETCH( QString, after );
+ QFETCH( bool, bcs );
+
+ Qt::CaseSensitivity cs = bcs ? Qt::CaseSensitive : Qt::CaseInsensitive;
+
+ if ( after.length() == 0 ) {
+ if ( before.length() == 1 && cs ) {
+ QChar ch = before.at( 0 );
+
+ QString s1 = string;
+ s1.remove( ch );
+ QTEST( s1, "result" );
+
+ if ( QChar(ch.toLatin1()) == ch ) {
+ QString s2 = string;
+ s2.remove( ch );
+ QTEST( s2, "result" );
+ }
+ }
+
+ QString s3 = string;
+ s3.remove( before, cs );
+ QTEST( s3, "result" );
+
+ QString s4 = string;
+ s4.replace( QRegExp(QRegExp::escape(before), cs), after );
+ QTEST( s4, "result" );
+
+ QString s5 = string;
+ s5.replace( QRegExp(before, cs, QRegExp::FixedString), after );
+ QTEST( s5, "result" );
+ } else {
+ QCOMPARE( 0, 0 ); // shut QtTest
+ }
+}
+
+void tst_QString::remove_regexp()
+{
+ QFETCH( QString, string );
+ QFETCH( QString, regexp );
+ QFETCH( QString, after );
+
+ if ( after.length() == 0 ) {
+ string.remove( QRegExp(regexp) );
+ QTEST( string, "result" );
+ } else {
+ QCOMPARE( 0, 0 ); // shut QtTest
+ }
+}
+
+void tst_QString::toNum()
+{
+#if defined (Q_WS_WIN) && defined (Q_CC_MSVC)
+#define TEST_TO_INT(num, func) \
+ a = #num; \
+ QVERIFY2(a.func(&ok) == num ## i64 && ok, "Failed: num=" #num ", func=" #func);
+#else
+#define TEST_TO_INT(num, func) \
+ a = #num; \
+ QVERIFY2(a.func(&ok) == num ## LL && ok, "Failed: num=" #num ", func=" #func);
+#endif
+
+ QString a;
+ bool ok = false;
+
+ TEST_TO_INT(0, toInt)
+ TEST_TO_INT(-1, toInt)
+ TEST_TO_INT(1, toInt)
+ TEST_TO_INT(2147483647, toInt)
+ TEST_TO_INT(-2147483648, toInt)
+
+ TEST_TO_INT(0, toShort)
+ TEST_TO_INT(-1, toShort)
+ TEST_TO_INT(1, toShort)
+ TEST_TO_INT(32767, toShort)
+ TEST_TO_INT(-32768, toShort)
+
+ TEST_TO_INT(0, toLong)
+ TEST_TO_INT(-1, toLong)
+ TEST_TO_INT(1, toLong)
+ TEST_TO_INT(2147483647, toLong)
+ TEST_TO_INT(-2147483648, toLong)
+ TEST_TO_INT(0, toLongLong)
+ TEST_TO_INT(-1, toLongLong)
+ TEST_TO_INT(1, toLongLong)
+ TEST_TO_INT(9223372036854775807, toLongLong)
+ TEST_TO_INT(-9223372036854775807, toLongLong)
+
+#undef TEST_TO_INT
+
+#if defined (Q_WS_WIN) && defined (Q_CC_MSVC)
+#define TEST_TO_UINT(num, func) \
+ a = #num; \
+ QVERIFY2(a.func(&ok) == num ## i64 && ok, "Failed: num=" #num ", func=" #func);
+#else
+#define TEST_TO_UINT(num, func) \
+ a = #num; \
+ QVERIFY2(a.func(&ok) == num ## ULL && ok, "Failed: num=" #num ", func=" #func);
+#endif
+
+ TEST_TO_UINT(0, toUInt)
+ TEST_TO_UINT(1, toUInt)
+ TEST_TO_UINT(4294967295, toUInt)
+
+ TEST_TO_UINT(0, toUShort)
+ TEST_TO_UINT(1, toUShort)
+ TEST_TO_UINT(65535, toUShort)
+
+ TEST_TO_UINT(0, toULong)
+ TEST_TO_UINT(1, toULong)
+ TEST_TO_UINT(4294967295, toULong)
+
+ TEST_TO_UINT(0, toULongLong)
+ TEST_TO_UINT(1, toULongLong)
+ TEST_TO_UINT(18446744073709551615, toULongLong)
+#undef TEST_TO_UINT
+
+
+#define TEST_BASE(str, base, num) \
+ a = str; \
+ QVERIFY2(a.toInt(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toInt"); \
+ QVERIFY2(a.toUInt(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toUInt"); \
+ QVERIFY2(a.toShort(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toShort"); \
+ QVERIFY2(a.toUShort(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toUShort"); \
+ QVERIFY2(a.toLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLong"); \
+ QVERIFY2(a.toULong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toULong"); \
+ QVERIFY2(a.toLongLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLongLong"); \
+ QVERIFY2(a.toULongLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toULongLong");
+
+ TEST_BASE("FF", 16, 255)
+ TEST_BASE("0xFF", 16, 255)
+ TEST_BASE("77", 8, 63)
+ TEST_BASE("077", 8, 63)
+
+ TEST_BASE("0xFF", 0, 255)
+ TEST_BASE("077", 0, 63)
+ TEST_BASE("255", 0, 255)
+
+ TEST_BASE(" FF", 16, 255)
+ TEST_BASE(" 0xFF", 16, 255)
+ TEST_BASE(" 77", 8, 63)
+ TEST_BASE(" 077", 8, 63)
+
+ TEST_BASE(" 0xFF", 0, 255)
+ TEST_BASE(" 077", 0, 63)
+ TEST_BASE(" 255", 0, 255)
+
+ TEST_BASE("\tFF\t", 16, 255)
+ TEST_BASE("\t0xFF ", 16, 255)
+ TEST_BASE(" 77 ", 8, 63)
+ TEST_BASE("77 ", 8, 63)
+
+#undef TEST_BASE
+
+#define TEST_NEG_BASE(str, base, num) \
+ a = str; \
+ QVERIFY2(a.toInt(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toInt"); \
+ QVERIFY2(a.toShort(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toShort"); \
+ QVERIFY2(a.toLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLong"); \
+ QVERIFY2(a.toLongLong(&ok, base) == num && ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLongLong");
+
+ TEST_NEG_BASE("-FE", 16, -254)
+ TEST_NEG_BASE("-0xFE", 16, -254)
+ TEST_NEG_BASE("-77", 8, -63)
+ TEST_NEG_BASE("-077", 8, -63)
+
+ TEST_NEG_BASE("-0xFE", 0, -254)
+ TEST_NEG_BASE("-077", 0, -63)
+ TEST_NEG_BASE("-254", 0, -254)
+
+#undef TEST_NEG_BASE
+
+#define TEST_DOUBLE(num, str) \
+ a = str; \
+ QCOMPARE(a.toDouble(&ok), num); \
+ QVERIFY(ok);
+
+ TEST_DOUBLE(1.2345, "1.2345")
+ TEST_DOUBLE(12.345, "1.2345e+01")
+ TEST_DOUBLE(12.345, "1.2345E+01")
+ TEST_DOUBLE(12345.6, "12345.6")
+
+#undef TEST_DOUBLE
+
+
+#define TEST_BAD(str, func) \
+ a = str; \
+ a.func(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str " func=" #func);
+
+ TEST_BAD("32768", toShort)
+ TEST_BAD("-32769", toShort)
+ TEST_BAD("65536", toUShort)
+ TEST_BAD("2147483648", toInt)
+ TEST_BAD("-2147483649", toInt)
+ TEST_BAD("4294967296", toUInt)
+ if (sizeof(long) == 4) {
+ TEST_BAD("2147483648", toLong)
+ TEST_BAD("-2147483649", toLong)
+ TEST_BAD("4294967296", toULong)
+ }
+ TEST_BAD("9223372036854775808", toLongLong)
+ TEST_BAD("-9223372036854775809", toLongLong)
+ TEST_BAD("18446744073709551616", toULongLong)
+ TEST_BAD("-1", toUShort)
+ TEST_BAD("-1", toUInt)
+ TEST_BAD("-1", toULong)
+ TEST_BAD("-1", toULongLong)
+#undef TEST_BAD
+
+#define TEST_BAD_ALL(str) \
+ a = str; \
+ a.toShort(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toUShort(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toInt(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toUInt(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toLong(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toULong(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toLongLong(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toULongLong(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toFloat(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ a.toDouble(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str);
+
+ TEST_BAD_ALL((const char*)0);
+ TEST_BAD_ALL("");
+ TEST_BAD_ALL(" ");
+ TEST_BAD_ALL(".");
+ TEST_BAD_ALL("-");
+ TEST_BAD_ALL("hello");
+ TEST_BAD_ALL("1.2.3");
+ TEST_BAD_ALL("0x0x0x");
+ TEST_BAD_ALL("123-^~<");
+ TEST_BAD_ALL("123ThisIsNotANumber");
+
+#undef TEST_BAD_ALL
+
+ a = "FF";
+ a.toULongLong(&ok, 10);
+ QVERIFY(!ok);
+
+ a = "FF";
+ a.toULongLong(&ok, 0);
+ QVERIFY(!ok);
+
+#ifdef QT_NO_FPU
+ double d = 3.40282346638528e+38; // slightly off FLT_MAX when using hardfloats
+#else
+ double d = 3.4028234663852886e+38; // FLT_MAX
+#endif
+ QString::number(d, 'e', 17).toFloat(&ok);
+ QVERIFY(ok);
+ QString::number(d + 1e32, 'e', 17).toFloat(&ok);
+ QVERIFY(!ok);
+ QString::number(-d, 'e', 17).toFloat(&ok);
+ QVERIFY(ok);
+ QString::number(-d - 1e32, 'e', 17).toFloat(&ok);
+ QVERIFY(!ok);
+ QString::number(d + 1e32, 'e', 17).toDouble(&ok);
+ QVERIFY(ok);
+ QString::number(-d - 1e32, 'e', 17).toDouble(&ok);
+ QVERIFY(ok);
+}
+
+void tst_QString::toUShort()
+{
+ QString a;
+ bool ok;
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a="";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a="COMPARE";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a="123";
+ QCOMPARE(a.toUShort(),(ushort)123);
+ QCOMPARE(a.toUShort(&ok),(ushort)123);
+ QVERIFY(ok);
+
+ a="123A";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a="1234567";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a = "aaa123aaa";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a = "aaa123";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a = "123aaa";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a = "32767";
+ QCOMPARE(a.toUShort(),(ushort)32767);
+ QCOMPARE(a.toUShort(&ok),(ushort)32767);
+ QVERIFY(ok);
+
+ a = "-32767";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a = "65535";
+ QCOMPARE(a.toUShort(),(ushort)65535);
+ QCOMPARE(a.toUShort(&ok),(ushort)65535);
+ QVERIFY(ok);
+
+ if (sizeof(short) == 2) {
+ a = "65536";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+
+ a = "123456";
+ QCOMPARE(a.toUShort(),(ushort)0);
+ QCOMPARE(a.toUShort(&ok),(ushort)0);
+ QVERIFY(!ok);
+ }
+}
+
+void tst_QString::toShort()
+{
+ QString a;
+ bool ok;
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a="";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a="COMPARE";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a="123";
+ QCOMPARE(a.toShort(),(short)123);
+ QCOMPARE(a.toShort(&ok),(short)123);
+ QVERIFY(ok);
+
+ a="123A";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a="1234567";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a = "aaa123aaa";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a = "aaa123";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a = "123aaa";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a = "32767";
+ QCOMPARE(a.toShort(),(short)32767);
+ QCOMPARE(a.toShort(&ok),(short)32767);
+ QVERIFY(ok);
+
+ a = "-32767";
+ QCOMPARE(a.toShort(),(short)-32767);
+ QCOMPARE(a.toShort(&ok),(short)-32767);
+ QVERIFY(ok);
+
+ a = "-32768";
+ QCOMPARE(a.toShort(),(short)-32768);
+ QCOMPARE(a.toShort(&ok),(short)-32768);
+ QVERIFY(ok);
+
+ if (sizeof(short) == 2) {
+ a = "32768";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+
+ a = "-32769";
+ QCOMPARE(a.toShort(),(short)0);
+ QCOMPARE(a.toShort(&ok),(short)0);
+ QVERIFY(!ok);
+ }
+}
+
+void tst_QString::toInt()
+{
+ QString a;
+ bool ok;
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a = "";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a="COMPARE";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a="123";
+ QCOMPARE(a.toInt(),123);
+ QCOMPARE(a.toInt(&ok),123);
+ QVERIFY(ok);
+
+ a="123A";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a="1234567";
+ QCOMPARE(a.toInt(),1234567);
+ QCOMPARE(a.toInt(&ok),1234567);
+ QVERIFY(ok);
+
+ a="12345678901234";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a="3234567890";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a = "aaa12345aaa";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a = "aaa12345";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a = "12345aaa";
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a = "2147483647"; // 2**31 - 1
+ QCOMPARE(a.toInt(),2147483647);
+ QCOMPARE(a.toInt(&ok),2147483647);
+ QVERIFY(ok);
+
+ if (sizeof(int) == 4) {
+ a = "-2147483647"; // -(2**31 - 1)
+ QCOMPARE(a.toInt(),-2147483647);
+ QCOMPARE(a.toInt(&ok),-2147483647);
+ QVERIFY(ok);
+
+ a = "2147483648"; // 2**31
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+
+ a = "-2147483648"; // -2**31
+ QCOMPARE(a.toInt(),-2147483647 - 1);
+ QCOMPARE(a.toInt(&ok),-2147483647 - 1);
+ QVERIFY(ok);
+
+ a = "2147483649"; // 2**31 + 1
+ QCOMPARE(a.toInt(),0);
+ QCOMPARE(a.toInt(&ok),0);
+ QVERIFY(!ok);
+ }
+}
+
+void tst_QString::toUInt()
+{
+ bool ok;
+ QString a;
+ a="3234567890";
+ QCOMPARE(a.toUInt(&ok),3234567890u);
+ QVERIFY(ok);
+
+ a = "-50";
+ QCOMPARE(a.toUInt(),0u);
+ QCOMPARE(a.toUInt(&ok),0u);
+ QVERIFY(!ok);
+
+ a = "4294967295"; // 2**32 - 1
+ QCOMPARE(a.toUInt(),4294967295u);
+ QCOMPARE(a.toUInt(&ok),4294967295u);
+ QVERIFY(ok);
+
+ if (sizeof(int) == 4) {
+ a = "4294967296"; // 2**32
+ QCOMPARE(a.toUInt(),0u);
+ QCOMPARE(a.toUInt(&ok),0u);
+ QVERIFY(!ok);
+ }
+}
+
+///////////////////////////// to*Long //////////////////////////////////////
+
+void tst_QString::toULong_data()
+{
+ QTest::addColumn<QString>("str" );
+ QTest::addColumn<int>("base" );
+ QTest::addColumn<ulong>("result" );
+ QTest::addColumn<bool>("ok" );
+
+ QTest::newRow( "default" ) << QString() << 10 << 0UL << false;
+ QTest::newRow( "empty" ) << QString("") << 10 << 0UL << false;
+ QTest::newRow( "ulong1" ) << QString("3234567890") << 10 << 3234567890UL << true;
+ QTest::newRow( "ulong2" ) << QString("fFFfFfFf") << 16 << 0xFFFFFFFFUL << true;
+}
+
+void tst_QString::toULong()
+{
+ QFETCH( QString, str );
+ QFETCH( int, base );
+ QFETCH( ulong, result );
+ QFETCH( bool, ok );
+
+ bool b;
+ QCOMPARE( str.toULong( 0, base ), result );
+ QCOMPARE( str.toULong( &b, base ), result );
+ QCOMPARE( b, ok );
+}
+
+void tst_QString::toLong_data()
+{
+ QTest::addColumn<QString>("str" );
+ QTest::addColumn<int>("base" );
+ QTest::addColumn<long>("result" );
+ QTest::addColumn<bool>("ok" );
+
+ QTest::newRow( "default" ) << QString() << 10 << 0L << false;
+ QTest::newRow( "empty" ) << QString("") << 10 << 0L << false;
+ QTest::newRow( "normal" ) << QString("7fFFfFFf") << 16 << 0x7fFFfFFfL << true;
+ QTest::newRow( "long_max" ) << QString("2147483647") << 10 << 2147483647L << true;
+ if (sizeof(long) == 4) {
+ QTest::newRow( "long_max+1" ) << QString("2147483648") << 10 << 0L << false;
+ QTest::newRow( "long_min-1" ) << QString("-80000001") << 16 << 0L << false;
+ }
+ QTest::newRow( "negative" ) << QString("-7fffffff") << 16 << -0x7fffffffL << true;
+// QTest::newRow( "long_min" ) << QString("-80000000") << 16 << 0x80000000uL << true;
+}
+
+void tst_QString::toLong()
+{
+ QFETCH( QString, str );
+ QFETCH( int, base );
+ QFETCH( long, result );
+ QFETCH( bool, ok );
+
+ bool b;
+ QCOMPARE( str.toLong( 0, base ), result );
+ QCOMPARE( str.toLong( &b, base ), result );
+ QCOMPARE( b, ok );
+}
+
+
+////////////////////////// to*LongLong //////////////////////////////////////
+
+void tst_QString::toULongLong()
+{
+ QString str;
+ bool ok;
+ str = "18446744073709551615"; // ULLONG_MAX
+ QCOMPARE( str.toULongLong( 0 ), Q_UINT64_C(18446744073709551615) );
+ QCOMPARE( str.toULongLong( &ok ), Q_UINT64_C(18446744073709551615) );
+ QVERIFY( ok );
+
+ str = "18446744073709551616"; // ULLONG_MAX + 1
+ QCOMPARE( str.toULongLong( 0 ), Q_UINT64_C(0) );
+ QCOMPARE( str.toULongLong( &ok ), Q_UINT64_C(0) );
+ QVERIFY( !ok );
+
+ str = "-150";
+ QCOMPARE( str.toULongLong( 0 ), Q_UINT64_C(0) );
+ QCOMPARE( str.toULongLong( &ok ), Q_UINT64_C(0) );
+ QVERIFY( !ok );
+}
+
+void tst_QString::toLongLong()
+{
+ QString str;
+ bool ok;
+
+ str = "9223372036854775807"; // LLONG_MAX
+ QCOMPARE( str.toLongLong( 0 ), Q_INT64_C(9223372036854775807) );
+ QCOMPARE( str.toLongLong( &ok ), Q_INT64_C(9223372036854775807) );
+ QVERIFY( ok );
+
+ str = "-9223372036854775808"; // LLONG_MIN
+ QCOMPARE( str.toLongLong( 0 ),
+ -Q_INT64_C(9223372036854775807) - Q_INT64_C(1) );
+ QCOMPARE( str.toLongLong( &ok ),
+ -Q_INT64_C(9223372036854775807) - Q_INT64_C(1) );
+ QVERIFY( ok );
+
+ str = "aaaa9223372036854775807aaaa";
+ QCOMPARE( str.toLongLong( 0 ), Q_INT64_C(0) );
+ QCOMPARE( str.toLongLong( &ok ), Q_INT64_C(0) );
+ QVERIFY( !ok );
+
+ str = "9223372036854775807aaaa";
+ QCOMPARE( str.toLongLong( 0 ), Q_INT64_C(0) );
+ QCOMPARE( str.toLongLong( &ok ), Q_INT64_C(0) );
+ QVERIFY( !ok );
+
+ str = "aaaa9223372036854775807";
+ QCOMPARE( str.toLongLong( 0 ), Q_INT64_C(0) );
+ QCOMPARE( str.toLongLong( &ok ), Q_INT64_C(0) );
+ QVERIFY( !ok );
+
+ static char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+ for (int i = 0; i < 36; ++i) {
+ for (int j = 0; j < 36; ++j) {
+ for (int k = 0; k < 36; ++k) {
+ QString str;
+ str += QChar(digits[i]);
+ str += QChar(digits[j]);
+ str += QChar(digits[k]);
+ qlonglong value = (((i * 36) + j) * 36) + k;
+ QVERIFY(str.toLongLong(0, 36) == value);
+ }
+ }
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////
+
+void tst_QString::toFloat()
+{
+ QString a;
+ bool ok;
+ a="0.000000000931322574615478515625";
+ QCOMPARE(a.toFloat(&ok),(float)(0.000000000931322574615478515625));
+ QVERIFY(ok);
+}
+
+void tst_QString::toDouble_data()
+{
+ QTest::addColumn<QString>("str" );
+ QTest::addColumn<double>("result" );
+ QTest::addColumn<bool>("result_ok" );
+
+ QTest::newRow( "ok00" ) << QString("0.000000000931322574615478515625") << 0.000000000931322574615478515625 << true;
+ QTest::newRow( "ok01" ) << QString(" 123.45") << 123.45 << true;
+
+ QTest::newRow( "ok02" ) << QString("0.1e10") << 0.1e10 << true;
+ QTest::newRow( "ok03" ) << QString("0.1e-10") << 0.1e-10 << true;
+
+ QTest::newRow( "ok04" ) << QString("1e10") << 1.0e10 << true;
+ QTest::newRow( "ok05" ) << QString("1e+10") << 1.0e10 << true;
+ QTest::newRow( "ok06" ) << QString("1e-10") << 1.0e-10 << true;
+
+ QTest::newRow( "ok07" ) << QString(" 1e10") << 1.0e10 << true;
+ QTest::newRow( "ok08" ) << QString(" 1e+10") << 1.0e10 << true;
+ QTest::newRow( "ok09" ) << QString(" 1e-10") << 1.0e-10 << true;
+
+ QTest::newRow( "ok10" ) << QString("1.") << 1.0 << true;
+ QTest::newRow( "ok11" ) << QString(".1") << 0.1 << true;
+
+ QTest::newRow( "wrong00" ) << QString("123.45 ") << 123.45 << true;
+ QTest::newRow( "wrong01" ) << QString(" 123.45 ") << 123.45 << true;
+
+ QTest::newRow( "wrong02" ) << QString("aa123.45aa") << 0.0 << false;
+ QTest::newRow( "wrong03" ) << QString("123.45aa") << 0.0 << false;
+ QTest::newRow( "wrong04" ) << QString("123erf") << 0.0 << false;
+
+ QTest::newRow( "wrong05" ) << QString("abc") << 0.0 << false;
+ QTest::newRow( "wrong06" ) << QString() << 0.0 << false;
+ QTest::newRow( "wrong07" ) << QString("") << 0.0 << false;
+}
+
+void tst_QString::toDouble()
+{
+ QFETCH( QString, str );
+ QFETCH( bool, result_ok );
+ bool ok;
+ double d = str.toDouble( &ok );
+ if ( result_ok ) {
+ QTEST( d, "result" );
+ QVERIFY( ok );
+ } else {
+ QVERIFY( !ok );
+ }
+}
+
+void tst_QString::setNum()
+{
+ QString a;
+ QCOMPARE(a.setNum(123),(QString)"123");
+ QCOMPARE(a.setNum(-123),(QString)"-123");
+ QCOMPARE(a.setNum(0x123,16),(QString)"123");
+ QCOMPARE(a.setNum((short)123),(QString)"123");
+ QCOMPARE(a.setNum(123L),(QString)"123");
+ QCOMPARE(a.setNum(123UL),(QString)"123");
+ QCOMPARE(a.setNum(2147483647L), QString("2147483647")); // 32 bit LONG_MAX
+ QCOMPARE(a.setNum(-2147483647L), QString("-2147483647")); // LONG_MIN + 1
+ QCOMPARE(a.setNum(-2147483647L-1L), QString("-2147483648")); // LONG_MIN
+ QCOMPARE(a.setNum(1.23), QString("1.23"));
+ QCOMPARE(a.setNum(1.234567), QString("1.23457"));
+#if defined(LONG_MAX) && defined(LLONG_MAX) && LONG_MAX == LLONG_MAX
+ // LONG_MAX and LONG_MIN on 64 bit systems
+ QCOMPARE(a.setNum(9223372036854775807L), QString("9223372036854775807"));
+ QCOMPARE(a.setNum(-9223372036854775807L-1L), QString("-9223372036854775808"));
+ QCOMPARE(a.setNum(18446744073709551615UL), QString("18446744073709551615"));
+#endif
+ QCOMPARE(a.setNum(Q_INT64_C(123)), QString("123"));
+ // 2^40 == 1099511627776
+ QCOMPARE(a.setNum(Q_INT64_C(-1099511627776)), QString("-1099511627776"));
+ QCOMPARE(a.setNum(Q_UINT64_C(1099511627776)), QString("1099511627776"));
+ QCOMPARE(a.setNum(Q_INT64_C(9223372036854775807)), // LLONG_MAX
+ QString("9223372036854775807"));
+ QCOMPARE(a.setNum(-Q_INT64_C(9223372036854775807) - Q_INT64_C(1)),
+ QString("-9223372036854775808"));
+ QCOMPARE(a.setNum(Q_UINT64_C(18446744073709551615)), // ULLONG_MAX
+ QString("18446744073709551615"));
+ QCOMPARE(a.setNum(0.000000000931322574615478515625),QString("9.31323e-10"));
+
+// QCOMPARE(a.setNum(0.000000000931322574615478515625,'g',30),(QString)"9.31322574615478515625e-010");
+// QCOMPARE(a.setNum(0.000000000931322574615478515625,'f',30),(QString)"0.00000000093132257461547852");
+}
+
+void tst_QString::startsWith()
+{
+ QString a;
+ a = "AB";
+ QVERIFY( a.startsWith("A") );
+ QVERIFY( a.startsWith("AB") );
+ QVERIFY( !a.startsWith("C") );
+ QVERIFY( !a.startsWith("ABCDEF") );
+ QVERIFY( a.startsWith("") );
+ QVERIFY( a.startsWith(QString::null) );
+ QVERIFY( a.startsWith('A') );
+ QVERIFY( a.startsWith(QLatin1Char('A')) );
+ QVERIFY( a.startsWith(QChar('A')) );
+ QVERIFY( !a.startsWith('C') );
+ QVERIFY( !a.startsWith(QChar()) );
+ QVERIFY( !a.startsWith(QLatin1Char(0)) );
+
+ QVERIFY( a.startsWith(QLatin1String("A")) );
+ QVERIFY( a.startsWith(QLatin1String("AB")) );
+ QVERIFY( !a.startsWith(QLatin1String("C")) );
+ QVERIFY( !a.startsWith(QLatin1String("ABCDEF")) );
+ QVERIFY( a.startsWith(QLatin1String("")) );
+ QVERIFY( a.startsWith(QLatin1String(0)) );
+
+ QVERIFY( a.startsWith("A", Qt::CaseSensitive) );
+ QVERIFY( a.startsWith("A", Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith("a", Qt::CaseSensitive) );
+ QVERIFY( a.startsWith("a", Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith("aB", Qt::CaseSensitive) );
+ QVERIFY( a.startsWith("aB", Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith("C", Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith("C", Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith("c", Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith("c", Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith("abcdef", Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith("", Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith(QString::null, Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith('a', Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith('A', Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith(QLatin1Char('a'), Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith(QChar('a'), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith('c', Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QChar(), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QLatin1Char(0), Qt::CaseInsensitive) );
+
+ QVERIFY( a.startsWith(QLatin1String("A"), Qt::CaseSensitive) );
+ QVERIFY( a.startsWith(QLatin1String("A"), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("a"), Qt::CaseSensitive) );
+ QVERIFY( a.startsWith(QLatin1String("a"), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("aB"), Qt::CaseSensitive) );
+ QVERIFY( a.startsWith(QLatin1String("aB"), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("C"), Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("C"), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("c"), Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("c"), Qt::CaseInsensitive) );
+ QVERIFY( !a.startsWith(QLatin1String("abcdef"), Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith(QLatin1String(""), Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith(QLatin1String(0), Qt::CaseInsensitive) );
+ QVERIFY( a.startsWith('A', Qt::CaseSensitive) );
+ QVERIFY( a.startsWith(QLatin1Char('A'), Qt::CaseSensitive) );
+ QVERIFY( a.startsWith(QChar('A'), Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith('a', Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith(QChar(), Qt::CaseSensitive) );
+ QVERIFY( !a.startsWith(QLatin1Char(0), Qt::CaseSensitive) );
+
+#define TEST_REF_STARTS_WITH(string, yes) { CREATE_REF(string); QCOMPARE(a.startsWith(ref), yes); }
+
+ TEST_REF_STARTS_WITH("A", true);
+ TEST_REF_STARTS_WITH("AB", true);
+ TEST_REF_STARTS_WITH("C", false);
+ TEST_REF_STARTS_WITH("ABCDEF", false);
+#undef TEST_REF_STARTS_WITH
+
+ a = "";
+ QVERIFY( a.startsWith("") );
+ QVERIFY( a.startsWith(QString::null) );
+ QVERIFY( !a.startsWith("ABC") );
+
+ QVERIFY( a.startsWith(QLatin1String("")) );
+ QVERIFY( a.startsWith(QLatin1String(0)) );
+ QVERIFY( !a.startsWith(QLatin1String("ABC")) );
+
+ QVERIFY( !a.startsWith(QLatin1Char(0)) );
+ QVERIFY( !a.startsWith(QLatin1Char('x')) );
+ QVERIFY( !a.startsWith(QChar()) );
+
+ a = QString::null;
+ QVERIFY( !a.startsWith("") );
+ QVERIFY( a.startsWith(QString::null) );
+ QVERIFY( !a.startsWith("ABC") );
+
+ QVERIFY( !a.startsWith(QLatin1String("")) );
+ QVERIFY( a.startsWith(QLatin1String(0)) );
+ QVERIFY( !a.startsWith(QLatin1String("ABC")) );
+
+ QVERIFY( !a.startsWith(QLatin1Char(0)) );
+ QVERIFY( !a.startsWith(QLatin1Char('x')) );
+ QVERIFY( !a.startsWith(QChar()) );
+
+}
+
+void tst_QString::endsWith()
+{
+ QString a;
+ a = "AB";
+ QVERIFY( a.endsWith("B") );
+ QVERIFY( a.endsWith("AB") );
+ QVERIFY( !a.endsWith("C") );
+ QVERIFY( !a.endsWith("ABCDEF") );
+ QVERIFY( a.endsWith("") );
+ QVERIFY( a.endsWith(QString::null) );
+ QVERIFY( a.endsWith('B') );
+ QVERIFY( a.endsWith(QLatin1Char('B')) );
+ QVERIFY( a.endsWith(QChar('B')) );
+ QVERIFY( !a.endsWith('C') );
+ QVERIFY( !a.endsWith(QChar()) );
+ QVERIFY( !a.endsWith(QLatin1Char(0)) );
+
+ QVERIFY( a.endsWith(QLatin1String("B")) );
+ QVERIFY( a.endsWith(QLatin1String("AB")) );
+ QVERIFY( !a.endsWith(QLatin1String("C")) );
+ QVERIFY( !a.endsWith(QLatin1String("ABCDEF")) );
+ QVERIFY( a.endsWith(QLatin1String("")) );
+ QVERIFY( a.endsWith(QLatin1String(0)) );
+
+ QVERIFY( a.endsWith("B", Qt::CaseSensitive) );
+ QVERIFY( a.endsWith("B", Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith("b", Qt::CaseSensitive) );
+ QVERIFY( a.endsWith("b", Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith("aB", Qt::CaseSensitive) );
+ QVERIFY( a.endsWith("aB", Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith("C", Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith("C", Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith("c", Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith("c", Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith("abcdef", Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith("", Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith(QString::null, Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith('b', Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith('B', Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith(QLatin1Char('b'), Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith(QChar('b'), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith('c', Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QChar(), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QLatin1Char(0), Qt::CaseInsensitive) );
+
+ QVERIFY( a.endsWith(QLatin1String("B"), Qt::CaseSensitive) );
+ QVERIFY( a.endsWith(QLatin1String("B"), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("b"), Qt::CaseSensitive) );
+ QVERIFY( a.endsWith(QLatin1String("b"), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("aB"), Qt::CaseSensitive) );
+ QVERIFY( a.endsWith(QLatin1String("aB"), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("C"), Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("C"), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("c"), Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("c"), Qt::CaseInsensitive) );
+ QVERIFY( !a.endsWith(QLatin1String("abcdef"), Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith(QLatin1String(""), Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith(QLatin1String(0), Qt::CaseInsensitive) );
+ QVERIFY( a.endsWith('B', Qt::CaseSensitive) );
+ QVERIFY( a.endsWith(QLatin1Char('B'), Qt::CaseSensitive) );
+ QVERIFY( a.endsWith(QChar('B'), Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith('b', Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith(QChar(), Qt::CaseSensitive) );
+ QVERIFY( !a.endsWith(QLatin1Char(0), Qt::CaseSensitive) );
+
+
+#define TEST_REF_ENDS_WITH(string, yes) { CREATE_REF(string); QCOMPARE(a.endsWith(ref), yes); }
+ TEST_REF_ENDS_WITH(QLatin1String("B"), true);
+ TEST_REF_ENDS_WITH(QLatin1String("AB"), true);
+ TEST_REF_ENDS_WITH(QLatin1String("C"), false);
+ TEST_REF_ENDS_WITH(QLatin1String("ABCDEF"), false);
+ TEST_REF_ENDS_WITH(QLatin1String(""), true);
+ TEST_REF_ENDS_WITH(QLatin1String(0), true);
+
+#undef TEST_REF_STARTS_WITH
+
+ a = "";
+ QVERIFY( a.endsWith("") );
+ QVERIFY( a.endsWith(QString::null) );
+ QVERIFY( !a.endsWith("ABC") );
+ QVERIFY( !a.endsWith(QLatin1Char(0)) );
+ QVERIFY( !a.endsWith(QLatin1Char('x')) );
+ QVERIFY( !a.endsWith(QChar()) );
+
+ QVERIFY( a.endsWith(QLatin1String("")) );
+ QVERIFY( a.endsWith(QLatin1String(0)) );
+ QVERIFY( !a.endsWith(QLatin1String("ABC")) );
+
+ a = QString::null;
+ QVERIFY( !a.endsWith("") );
+ QVERIFY( a.endsWith(QString::null) );
+ QVERIFY( !a.endsWith("ABC") );
+
+ QVERIFY( !a.endsWith(QLatin1String("")) );
+ QVERIFY( a.endsWith(QLatin1String(0)) );
+ QVERIFY( !a.endsWith(QLatin1String("ABC")) );
+
+ QVERIFY( !a.endsWith(QLatin1Char(0)) );
+ QVERIFY( !a.endsWith(QLatin1Char('x')) );
+ QVERIFY( !a.endsWith(QChar()) );
+}
+
+void tst_QString::check_QDataStream()
+{
+ QString a;
+ QByteArray ar;
+ {
+ QDataStream out(&ar,QIODevice::WriteOnly);
+ out << QString("COMPARE Text");
+ }
+ {
+ QDataStream in(&ar,QIODevice::ReadOnly);
+ in >> a;
+ QCOMPARE(a,(QString)"COMPARE Text");
+ }
+}
+
+void tst_QString::check_QTextStream()
+{
+ QString a;
+ QByteArray ar;
+ {
+ QTextStream out(&ar,QIODevice::WriteOnly);
+ out << QString("This is COMPARE Text");
+ }
+ {
+ QTextStream in(&ar,QIODevice::ReadOnly);
+ in >> a;
+ QCOMPARE(a,(QString)"This");
+ }
+}
+
+void tst_QString::check_QTextIOStream()
+{
+ QString a;
+ {
+ a="";
+ QTextStream ts(&a);
+ ts << "pi \261= " << 3.125;
+ QCOMPARE(a,(QString)"pi \261= 3.125");
+ }
+ {
+ a="123 456";
+ int x,y;
+ QTextStream(&a) >> x >> y;
+ QCOMPARE(x,123);
+ QCOMPARE(y,456);
+ }
+}
+
+void tst_QString::fromRawData()
+{
+ const QChar ptr[] = { 0x1234, 0x0000 };
+ QString cstr = QString::fromRawData(ptr, 1);
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() == ptr);
+ QVERIFY(cstr == QString(ptr, 1));
+ cstr.squeeze();
+ QVERIFY(cstr.constData() == ptr);
+ cstr.detach();
+ QVERIFY(cstr.size() == 1);
+ QVERIFY(cstr.capacity() == 1);
+ QVERIFY(cstr.constData() != ptr);
+ QVERIFY(cstr.constData()[0] == QChar(0x1234));
+ QVERIFY(cstr.constData()[1] == QChar(0x0000));
+}
+
+void tst_QString::setRawData()
+{
+ const QChar ptr[] = { 0x1234, 0x0000 };
+ const QChar ptr2[] = { 0x4321, 0x0000 };
+ QString cstr;
+
+ // This just tests the fromRawData() fallback
+ QVERIFY(!cstr.isDetached());
+ cstr.setRawData(ptr, 1);
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() == ptr);
+ QVERIFY(cstr == QString(ptr, 1));
+
+ // This actually tests the recycling of the shared data object
+ QString::DataPtr csd = cstr.data_ptr();
+ cstr.setRawData(ptr2, 1);
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() == ptr2);
+ QVERIFY(cstr == QString(ptr2, 1));
+ QVERIFY(cstr.data_ptr() == csd);
+
+ // This tests the discarding of the shared data object
+ cstr = "foo";
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() != ptr2);
+
+ // Another test of the fallback
+ csd = cstr.data_ptr();
+ cstr.setRawData(ptr2, 1);
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() == ptr2);
+ QVERIFY(cstr == QString(ptr2, 1));
+ QVERIFY(cstr.data_ptr() != csd);
+}
+
+void tst_QString::fromStdString()
+{
+#ifdef Q_CC_HPACC
+ QSKIP("This test crashes on HP-UX with aCC", SkipSingle);
+#endif
+#if !defined(QT_NO_STL)
+ std::string stroustrup = "foo";
+ QString eng = QString::fromStdString( stroustrup );
+ QCOMPARE( eng, QString("foo") );
+ const char cnull[] = "Embedded\0null\0character!";
+ std::string stdnull( cnull, sizeof(cnull)-1 );
+ QString qtnull = QString::fromStdString( stdnull );
+ QCOMPARE( qtnull.size(), int(stdnull.size()) );
+#endif
+}
+
+void tst_QString::toStdString()
+{
+#ifdef Q_CC_HPACC
+ QSKIP("This test crashes on HP-UX with aCC", SkipSingle);
+#endif
+#if !defined(QT_NO_STL)
+ QString nord = "foo";
+ std::string stroustrup1 = nord.toStdString();
+ QVERIFY( qstrcmp(stroustrup1.c_str(), "foo") == 0 );
+ // For now, most QString constructors are also broken with respect
+ // to embedded null characters, had to find one that works...
+ const QChar qcnull[] = {
+ 'E', 'm', 'b', 'e', 'd', 'd', 'e', 'd', '\0',
+ 'n', 'u', 'l', 'l', '\0',
+ 'c', 'h', 'a', 'r', 'a', 'c', 't', 'e', 'r', '!'
+ };
+ QString qtnull( qcnull, sizeof(qcnull)/sizeof(QChar) );
+ std::string stdnull = qtnull.toStdString();
+ QCOMPARE( int(stdnull.size()), qtnull.size() );
+#endif
+}
+
+void tst_QString::utf8()
+{
+ QFETCH( QByteArray, utf8 );
+ QFETCH( QString, res );
+
+ QCOMPARE( utf8, QByteArray(res.toUtf8()) );
+}
+
+void tst_QString::stringRef_utf8_data()
+{
+ utf8_data();
+}
+
+void tst_QString::stringRef_utf8()
+{
+ QFETCH( QByteArray, utf8 );
+ QFETCH( QString, res );
+
+ QStringRef ref(&res, 0, res.length());
+ QCOMPARE( utf8, QByteArray(ref.toUtf8()) );
+}
+
+// copied to tst_QTextCodec::utf8Codec_data()
+void tst_QString::fromUtf8_data()
+{
+ QTest::addColumn<QByteArray>("utf8");
+ QTest::addColumn<QString>("res");
+ QTest::addColumn<int>("len");
+ QString str;
+
+ QTest::newRow("str0") << QByteArray("abcdefgh") << QString("abcdefgh") << -1;
+ QTest::newRow("str0-len") << QByteArray("abcdefgh") << QString("abc") << 3;
+ QTest::newRow("str1") << QByteArray("\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205") << QString("\366\344\374\326\304\334\370\346\345\330\306\305") << -1;
+ QTest::newRow("str1-len") << QByteArray("\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205") << QString("\366\344\374\326\304") << 10;
+
+ str += QChar(0x05e9);
+ str += QChar(0x05d3);
+ str += QChar(0x05d2);
+ QTest::newRow("str2") << QByteArray("\327\251\327\223\327\222") << str << -1;
+
+ str = QChar(0x05e9);
+ QTest::newRow("str2-len") << QByteArray("\327\251\327\223\327\222") << str << 2;
+
+ str = QChar(0x20ac);
+ str += " some text";
+ QTest::newRow("str3") << QByteArray("\342\202\254 some text") << str << -1;
+
+ str = QChar(0x20ac);
+ str += " some ";
+ QTest::newRow("str3-len") << QByteArray("\342\202\254 some text") << str << 9;
+
+ str = "hello";
+ str += QChar::ReplacementCharacter;
+ str += QChar(0x68);
+ str += QChar::ReplacementCharacter;
+ str += QChar::ReplacementCharacter;
+ str += QChar::ReplacementCharacter;
+ str += QChar::ReplacementCharacter;
+ str += QChar(0x61);
+ str += QChar::ReplacementCharacter;
+ QTest::newRow("invalid utf8") << QByteArray("hello\344h\344\344\366\344a\304") << str << -1;
+ QTest::newRow("invalid utf8-len") << QByteArray("hello\344h\344\344\366\344a\304") << QString("hello") << 5;
+
+ str = "Prohl";
+ str += QChar::ReplacementCharacter;
+ str += QChar::ReplacementCharacter;
+ str += "e";
+ str += QChar::ReplacementCharacter;
+ str += " plugin";
+ str += QChar::ReplacementCharacter;
+ str += " Netscape";
+
+ QTest::newRow("task28417") << QByteArray("Prohl\355\276e\350 plugin\371 Netscape") << str << -1;
+ QTest::newRow("task28417-len") << QByteArray("Prohl\355\276e\350 plugin\371 Netscape") << QString("") << 0;
+
+ QTest::newRow("null-1") << QByteArray() << QString() << -1;
+ QTest::newRow("null0") << QByteArray() << QString() << 0;
+ QTest::newRow("null5") << QByteArray() << QString() << 5;
+ QTest::newRow("empty-1") << QByteArray("\0abcd", 5) << QString() << -1;
+ QTest::newRow("empty0") << QByteArray() << QString() << 0;
+ QTest::newRow("empty5") << QByteArray("\0abcd", 5) << QString::fromAscii("\0abcd", 5) << 5;
+ QTest::newRow("other-1") << QByteArray("ab\0cd", 5) << QString::fromAscii("ab") << -1;
+ QTest::newRow("other5") << QByteArray("ab\0cd", 5) << QString::fromAscii("ab\0cd", 5) << 5;
+
+ str = "Old Italic: ";
+ str += QChar(0xd800);
+ str += QChar(0xdf00);
+ str += QChar(0xd800);
+ str += QChar(0xdf01);
+ str += QChar(0xd800);
+ str += QChar(0xdf02);
+ str += QChar(0xd800);
+ str += QChar(0xdf03);
+ str += QChar(0xd800);
+ str += QChar(0xdf04);
+ QTest::newRow("surrogate") << QByteArray("Old Italic: \360\220\214\200\360\220\214\201\360\220\214\202\360\220\214\203\360\220\214\204") << str << -1;
+
+ QTest::newRow("surrogate-len") << QByteArray("Old Italic: \360\220\214\200\360\220\214\201\360\220\214\202\360\220\214\203\360\220\214\204") << str.left(16) << 20;
+
+}
+
+void tst_QString::fromUtf8()
+{
+ QFETCH(QByteArray, utf8);
+ QFETCH(QString, res);
+ QFETCH(int, len);
+
+ QCOMPARE(QString::fromUtf8(utf8.isNull() ? 0 : utf8.data(), len), res);
+}
+
+void tst_QString::nullFromUtf8()
+{
+ QString a;
+ a = QString::fromUtf8(0);
+ QVERIFY(a.isNull());
+ QVERIFY(a.isEmpty());
+ a = QString::fromUtf8("");
+ QVERIFY(!a.isNull());
+ QVERIFY(a.isEmpty());
+}
+
+void tst_QString::fromLocal8Bit_data()
+{
+ QTest::addColumn<QByteArray>("local8Bit");
+ QTest::addColumn<int>("len");
+ QTest::addColumn<QString>("result");
+
+ //QTest::newRow("nullString") << QByteArray() << -1 << QString();
+ //QTest::newRow("emptyString") << QByteArray("") << -1 << QString("");
+ //QTest::newRow("string") << QByteArray("test") << -1 << QString("test");
+ //QTest::newRow("stringlen0") << QByteArray("test") << 0 << QString("");
+ //QTest::newRow("stringlen3") << QByteArray("test") << 3 << QString("tes");
+ QTest::newRow("stringlen99") << QByteArray("test\0foo", 8) << 8 << QString::fromLatin1("test\0foo", 8);
+
+ QByteArray longQByteArray;
+ QString longQString;
+
+ for (int l=0;l<111;l++) {
+ longQByteArray = longQByteArray + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+ longQString += "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+ }
+
+ //QTest::newRow("longString") << longQByteArray << -1 << longQString;
+ //QTest::newRow("longStringlen0") << longQByteArray << 0 << QString("");
+ //QTest::newRow("longStringlen3") << longQByteArray << 3 << QString("aaa");
+ //QTest::newRow("someNonAlphaChars") << QByteArray("d:/this/is/a/test.h") << -1 << QString("d:/this/is/a/test.h");
+
+ //QTest::newRow("null-1") << QByteArray() << -1 << QString();
+ //QTest::newRow("null0") << QByteArray() << 0 << QString();
+ //QTest::newRow("null5") << QByteArray() << 5 << QString();
+ //QTest::newRow("empty-1") << QByteArray("\0abcd", 5) << -1 << QString();
+ //QTest::newRow("empty0") << QByteArray() << 0 << QString();
+ //QTest::newRow("empty5") << QByteArray("\0abcd", 5) << 5 << QString::fromAscii("\0abcd", 5);
+ //QTest::newRow("other-1") << QByteArray("ab\0cd", 5) << -1 << QString::fromAscii("ab");
+ //QTest::newRow("other5") << QByteArray("ab\0cd", 5) << 5 << QString::fromAscii("ab\0cd", 5);
+}
+
+void tst_QString::fromLocal8Bit()
+{
+ QFETCH(QByteArray, local8Bit);
+ QFETCH(int, len);
+ QFETCH(QString, result);
+
+ QCOMPARE(QString::fromLocal8Bit(local8Bit.isNull() ? 0 : local8Bit.data(), len).length(),
+ result.length());
+ QCOMPARE(QString::fromLocal8Bit(local8Bit.isNull() ? 0 : local8Bit.data(), len), result);
+}
+
+void tst_QString::local8Bit_data()
+{
+ QTest::addColumn<QString>("local8Bit");
+ QTest::addColumn<QByteArray>("result");
+
+/*
+ QString::local8Bit() called on a null QString returns an _empty_
+ QByteArray.
+*/
+ QTest::newRow("nullString") << QString() << QByteArray("");
+ QTest::newRow("emptyString") << QString("") << QByteArray("");
+ QTest::newRow("string") << QString("test") << QByteArray("test");
+
+ QByteArray longQByteArray;
+ QString longQString;
+
+ for (int l=0;l<111;l++) {
+ longQByteArray = longQByteArray + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+ longQString += "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+ }
+
+ QTest::newRow("longString") << longQString << longQByteArray;
+ QTest::newRow("someNonAlphaChars") << QString("d:/this/is/a/test.h") << QByteArray("d:/this/is/a/test.h");
+}
+
+void tst_QString::local8Bit()
+{
+ QFETCH(QString, local8Bit);
+ QFETCH(QByteArray, result);
+
+ QCOMPARE(local8Bit.toLocal8Bit(), QByteArray(result));
+}
+
+void tst_QString::stringRef_local8Bit_data()
+{
+ local8Bit_data();
+}
+
+void tst_QString::stringRef_local8Bit()
+{
+ QFETCH(QString, local8Bit);
+ QFETCH(QByteArray, result);
+
+ QStringRef ref(&local8Bit, 0, local8Bit.length());
+ QCOMPARE(ref.toLocal8Bit(), QByteArray(result));
+}
+
+void tst_QString::fromLatin1Roundtrip_data()
+{
+ QTest::addColumn<QByteArray>("latin1");
+ QTest::addColumn<QString>("unicode");
+
+ QTest::newRow("null") << QByteArray() << QString();
+ QTest::newRow("empty") << QByteArray("") << "";
+
+ static const ushort unicode1[] = { 'H', 'e', 'l', 'l', 'o', 1, '\r', '\n', 0x7f };
+ QTest::newRow("ascii-only") << QByteArray("Hello") << QString::fromUtf16(unicode1, 5);
+ QTest::newRow("ascii+control") << QByteArray("Hello\1\r\n\x7f") << QString::fromUtf16(unicode1, 9);
+
+ static const ushort unicode3[] = { 'a', 0, 'z' };
+ QTest::newRow("ascii+nul") << QByteArray("a\0z", 3) << QString::fromUtf16(unicode3, 3);
+
+ static const ushort unicode4[] = { 0x80, 0xc0, 0xff };
+ QTest::newRow("non-ascii") << QByteArray("\x80\xc0\xff") << QString::fromUtf16(unicode4, 3);
+}
+
+void tst_QString::fromLatin1Roundtrip()
+{
+ QFETCH(QByteArray, latin1);
+ QFETCH(QString, unicode);
+
+ // QtTest safety check:
+ QCOMPARE(latin1.isNull(), unicode.isNull());
+ QCOMPARE(latin1.isEmpty(), unicode.isEmpty());
+ QCOMPARE(latin1.length(), unicode.length());
+
+ if (!latin1.isEmpty())
+ while (latin1.length() < 128) {
+ latin1 += latin1;
+ unicode += unicode;
+ }
+
+ // fromLatin1
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()).length(), unicode.length());
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()), unicode);
+
+ // and back:
+ QCOMPARE(unicode.toLatin1().length(), latin1.length());
+ QCOMPARE(unicode.toLatin1(), latin1);
+}
+
+void tst_QString::toLatin1Roundtrip_data()
+{
+ QTest::addColumn<QByteArray>("latin1");
+ QTest::addColumn<QString>("unicodesrc");
+ QTest::addColumn<QString>("unicodedst");
+
+ QTest::newRow("null") << QByteArray() << QString() << QString();
+ QTest::newRow("empty") << QByteArray("") << "" << "";
+
+ static const ushort unicode1[] = { 'H', 'e', 'l', 'l', 'o', 1, '\r', '\n', 0x7f };
+ QTest::newRow("ascii-only") << QByteArray("Hello") << QString::fromUtf16(unicode1, 5) << QString::fromUtf16(unicode1, 5);
+ QTest::newRow("ascii+control") << QByteArray("Hello\1\r\n\x7f") << QString::fromUtf16(unicode1, 9) << QString::fromUtf16(unicode1, 9);
+
+ static const ushort unicode3[] = { 'a', 0, 'z' };
+ QTest::newRow("ascii+nul") << QByteArray("a\0z", 3) << QString::fromUtf16(unicode3, 3) << QString::fromUtf16(unicode3, 3);
+
+ static const ushort unicode4[] = { 0x80, 0xc0, 0xff };
+ QTest::newRow("non-ascii") << QByteArray("\x80\xc0\xff") << QString::fromUtf16(unicode4, 3) << QString::fromUtf16(unicode4, 3);
+
+ static const ushort unicodeq[] = { '?', '?', '?', '?', '?' };
+ const QString questionmarks = QString::fromUtf16(unicodeq, 5);
+
+ static const ushort unicode5[] = { 0x100, 0x101, 0x17f, 0x7f00, 0x7f7f };
+ QTest::newRow("non-latin1a") << QByteArray("?????") << QString::fromUtf16(unicode5, 5) << questionmarks;
+
+ static const ushort unicode6[] = { 0x180, 0x1ff, 0x8001, 0x8080, 0xfffc };
+ QTest::newRow("non-latin1b") << QByteArray("?????") << QString::fromUtf16(unicode6, 5) << questionmarks;
+}
+
+void tst_QString::toLatin1Roundtrip()
+{
+ QFETCH(QByteArray, latin1);
+ QFETCH(QString, unicodesrc);
+ QFETCH(QString, unicodedst);
+
+ // QtTest safety check:
+ QCOMPARE(latin1.isNull(), unicodesrc.isNull());
+ QCOMPARE(latin1.isEmpty(), unicodesrc.isEmpty());
+ QCOMPARE(latin1.length(), unicodesrc.length());
+ QCOMPARE(latin1.isNull(), unicodedst.isNull());
+ QCOMPARE(latin1.isEmpty(), unicodedst.isEmpty());
+ QCOMPARE(latin1.length(), unicodedst.length());
+
+ if (!latin1.isEmpty())
+ while (latin1.length() < 128) {
+ latin1 += latin1;
+ unicodesrc += unicodesrc;
+ unicodedst += unicodedst;
+ }
+
+ // toLatin1
+ QCOMPARE(unicodesrc.toLatin1().length(), latin1.length());
+ QCOMPARE(unicodesrc.toLatin1(), latin1);
+
+ // and back:
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()).length(), unicodedst.length());
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()), unicodedst);
+}
+
+void tst_QString::stringRef_toLatin1Roundtrip_data()
+{
+ toLatin1Roundtrip_data();
+}
+
+void tst_QString::stringRef_toLatin1Roundtrip()
+{
+ QFETCH(QByteArray, latin1);
+ QFETCH(QString, unicodesrc);
+ QFETCH(QString, unicodedst);
+
+ // QtTest safety check:
+ QCOMPARE(latin1.isNull(), unicodesrc.isNull());
+ QCOMPARE(latin1.isEmpty(), unicodesrc.isEmpty());
+ QCOMPARE(latin1.length(), unicodesrc.length());
+ QCOMPARE(latin1.isNull(), unicodedst.isNull());
+ QCOMPARE(latin1.isEmpty(), unicodedst.isEmpty());
+ QCOMPARE(latin1.length(), unicodedst.length());
+
+ if (!latin1.isEmpty())
+ while (latin1.length() < 128) {
+ latin1 += latin1;
+ unicodesrc += unicodesrc;
+ unicodedst += unicodedst;
+ }
+
+ // toLatin1
+ QStringRef src(&unicodesrc, 0, unicodesrc.length());
+ QCOMPARE(src.toLatin1().length(), latin1.length());
+ QCOMPARE(src.toLatin1(), latin1);
+}
+
+void tst_QString::fromLatin1()
+{
+ QString a;
+ a = QString::fromLatin1( 0 );
+ QVERIFY( a.isNull() );
+ QVERIFY( a.isEmpty() );
+ a = QString::fromLatin1( "" );
+ QVERIFY( !a.isNull() );
+ QVERIFY( a.isEmpty() );
+
+ a = QString::fromLatin1(0, 0);
+ QVERIFY(a.isNull());
+ a = QString::fromLatin1(0, 5);
+ QVERIFY(a.isNull());
+ a = QString::fromLatin1("\0abcd", 0);
+ QVERIFY(!a.isNull());
+ QVERIFY(a.isEmpty());
+ a = QString::fromLatin1("\0abcd", 5);
+ QVERIFY(a.size() == 5);
+}
+
+void tst_QString::fromAscii()
+{
+ QString a;
+ a = QString::fromAscii( 0 );
+ QVERIFY( a.isNull() );
+ QVERIFY( a.isEmpty() );
+ a = QString::fromAscii( "" );
+ QVERIFY( !a.isNull() );
+ QVERIFY( a.isEmpty() );
+
+ a = QString::fromAscii(0, 0);
+ QVERIFY(a.isNull());
+ a = QString::fromAscii(0, 5);
+ QVERIFY(a.isNull());
+ a = QString::fromAscii("\0abcd", 0);
+ QVERIFY(!a.isNull());
+ QVERIFY(a.isEmpty());
+ a = QString::fromAscii("\0abcd", 5);
+ QVERIFY(a.size() == 5);
+}
+
+void tst_QString::arg()
+{
+/*
+ Warning: If any of these test fails, the warning given by QtTest
+ is all messed up, because QtTest itself uses QString::arg().
+*/
+
+ QLocale::setDefault(QString("de_DE"));
+
+ QString s4( "[%0]" );
+ QString s5( "[%1]" );
+ QString s6( "[%3]" );
+ QString s7( "[%9]" );
+ QString s8( "[%0 %1]" );
+ QString s9( "[%0 %3]" );
+ QString s10( "[%1 %2 %3]" );
+ QString s11( "[%9 %3 %0]" );
+ QString s12( "[%9 %1 %3 %9 %0 %8]" );
+ QString s13( "%1% %x%c%2 %d%2-%" );
+ QString s14( "%1%2%3" );
+
+ QCOMPARE( s4.arg("foo"), QString("[foo]") );
+ QCOMPARE( s5.arg("foo"), QString("[foo]") );
+ QCOMPARE( s6.arg("foo"), QString("[foo]") );
+ QCOMPARE( s7.arg("foo"), QString("[foo]") );
+ QCOMPARE( s8.arg("foo"), QString("[foo %1]") );
+ QCOMPARE( s8.arg("foo").arg("bar"), QString("[foo bar]") );
+ QCOMPARE( s8.arg("foo", "bar"), QString("[foo bar]") );
+ QCOMPARE( s9.arg("foo"), QString("[foo %3]") );
+ QCOMPARE( s9.arg("foo").arg("bar"), QString("[foo bar]") );
+ QCOMPARE( s9.arg("foo", "bar"), QString("[foo bar]") );
+ QCOMPARE( s10.arg("foo"), QString("[foo %2 %3]") );
+ QCOMPARE( s10.arg("foo").arg("bar"), QString("[foo bar %3]") );
+ QCOMPARE( s10.arg("foo", "bar"), QString("[foo bar %3]") );
+ QCOMPARE( s10.arg("foo").arg("bar").arg("baz"), QString("[foo bar baz]") );
+ QCOMPARE( s10.arg("foo", "bar", "baz"), QString("[foo bar baz]") );
+ QCOMPARE( s11.arg("foo"), QString("[%9 %3 foo]") );
+ QCOMPARE( s11.arg("foo").arg("bar"), QString("[%9 bar foo]") );
+ QCOMPARE( s11.arg("foo", "bar"), QString("[%9 bar foo]") );
+ QCOMPARE( s11.arg("foo").arg("bar").arg("baz"), QString("[baz bar foo]") );
+ QCOMPARE( s11.arg("foo", "bar", "baz"), QString("[baz bar foo]") );
+ QCOMPARE( s12.arg("a").arg("b").arg("c").arg("d").arg("e"),
+ QString("[e b c e a d]") );
+ QCOMPARE( s12.arg("a", "b", "c", "d").arg("e"), QString("[e b c e a d]") );
+ QCOMPARE( s12.arg("a").arg("b", "c", "d", "e"), QString("[e b c e a d]") );
+ QCOMPARE( s13.arg("alpha").arg("beta"),
+ QString("alpha% %x%cbeta %dbeta-%") );
+ QCOMPARE( s13.arg("alpha", "beta"), QString("alpha% %x%cbeta %dbeta-%") );
+ QCOMPARE( s14.arg("a", "b", "c"), QString("abc") );
+ QCOMPARE( s8.arg("%1").arg("foo"), QString("[foo foo]") );
+ QCOMPARE( s8.arg("%1", "foo"), QString("[%1 foo]") );
+ QCOMPARE( s4.arg("foo", 2), QString("[foo]") );
+ QCOMPARE( s4.arg("foo", -2), QString("[foo]") );
+ QCOMPARE( s4.arg("foo", 10), QString("[ foo]") );
+ QCOMPARE( s4.arg("foo", -10), QString("[foo ]") );
+
+ QString firstName( "James" );
+ QString lastName( "Bond" );
+ QString fullName = QString( "My name is %2, %1 %2" )
+ .arg( firstName ).arg( lastName );
+ QCOMPARE( fullName, QString("My name is Bond, James Bond") );
+
+ // number overloads
+ QCOMPARE( s4.arg(0), QString("[0]") );
+ QCOMPARE( s4.arg(-1), QString("[-1]") );
+ QCOMPARE( s4.arg(4294967295UL), QString("[4294967295]") ); // ULONG_MAX 32
+ QCOMPARE( s4.arg(Q_INT64_C(9223372036854775807)), // LLONG_MAX
+ QString("[9223372036854775807]") );
+
+ QCOMPARE( QString().arg(0), QString() );
+ QCOMPARE( QString("").arg(0), QString("") );
+ QCOMPARE( QString(" ").arg(0), QString(" ") );
+ QCOMPARE( QString("%").arg(0), QString("%") );
+ QCOMPARE( QString("%%").arg(0), QString("%%") );
+ QCOMPARE( QString("%%%").arg(0), QString("%%%") );
+ QCOMPARE( QString("%%%1%%%2").arg("foo").arg("bar"), QString("%%foo%%bar") );
+
+ QCOMPARE( QString("%1").arg("hello", -10), QString("hello ") );
+ QCOMPARE( QString("%1").arg("hello", -5), QString("hello") );
+ QCOMPARE( QString("%1").arg("hello", -2), QString("hello") );
+ QCOMPARE( QString("%1").arg("hello", 0), QString("hello") );
+ QCOMPARE( QString("%1").arg("hello", 2), QString("hello") );
+ QCOMPARE( QString("%1").arg("hello", 5), QString("hello") );
+ QCOMPARE( QString("%1").arg("hello", 10), QString(" hello") );
+ QCOMPARE( QString("%1%1").arg("hello"), QString("hellohello") );
+ QCOMPARE( QString("%2%1").arg("hello"), QString("%2hello") );
+ QCOMPARE( QString("%1%1").arg(QString::null), QString("") );
+ QCOMPARE( QString("%2%1").arg(""), QString("%2") );
+
+ QCOMPARE( QString("%2 %L1").arg(12345.6789).arg(12345.6789),
+ QString("12345.7 12.345,7") );
+ QCOMPARE( QString("%2 %L1").arg(123456789).arg(123456789),
+ QString("123456789 123.456.789") );
+ QCOMPARE( QString("%L2 %L1 %3").arg(12345.7).arg(123456789).arg('c'),
+ QString("123.456.789 12.345,7 c") );
+
+ // multi-digit replacement
+ QString input("%%%L0 %1 %02 %3 %4 %5 %L6 %7 %8 %%% %090 %10 %11 %L12 %14 %L9888 %9999 %%%%%%%L");
+ input = input.arg("A").arg("B").arg("C")
+ .arg("D").arg("E").arg("f")
+ .arg("g").arg("h").arg("i").arg("j")
+ .arg("k").arg("l").arg("m")
+ .arg("n").arg("o").arg("p");
+
+ QCOMPARE(input, QString("%%A B C D E f g h i %%% j0 k l m n o88 p99 %%%%%%%L"));
+
+ QString str("%1 %2 %3 %4 %5 %6 %7 %8 %9 foo %10 %11 bar");
+ str = str.arg("one", "2", "3", "4", "5", "6", "7", "8", "9");
+ str = str.arg("ahoy", "there");
+ QCOMPARE(str, QString("one 2 3 4 5 6 7 8 9 foo ahoy there bar"));
+
+ QString str2("%123 %234 %345 %456 %567 %999 %1000 %1230");
+ str2 = str2.arg("A", "B", "C", "D", "E", "F");
+ QCOMPARE(str2, QString("A B C D E F %1000 %1230"));
+
+ // task 201185
+ QCOMPARE(QString("%1").arg(-1, 3, 10, QChar('0')), QString("-01"));
+ QCOMPARE(QString("%1").arg(-100, 3, 10, QChar('0')), QString("-100"));
+ QCOMPARE(QString("%1").arg(-1, 3, 10, QChar(' ')), QString(" -1"));
+ QCOMPARE(QString("%1").arg(-100, 3, 10, QChar(' ')), QString("-100"));
+ QCOMPARE(QString("%1").arg(1U, 3, 10, QChar(' ')), QString(" 1"));
+ QCOMPARE(QString("%1").arg(1000U, 3, 10, QChar(' ')), QString("1000"));
+ QCOMPARE(QString("%1").arg(-1, 3, 10, QChar('x')), QString("x-1"));
+ QCOMPARE(QString("%1").arg(-100, 3, 10, QChar('x')), QString("-100"));
+ QCOMPARE(QString("%1").arg(1U, 3, 10, QChar('x')), QString("xx1"));
+ QCOMPARE(QString("%1").arg(1000U, 3, 10, QChar('x')), QString("1000"));
+
+ QCOMPARE(QString("%1").arg(-1., 3, 'g', -1, QChar('0')), QString("-01"));
+ QCOMPARE(QString("%1").arg(-100., 3, 'g', -1, QChar('0')), QString("-100"));
+ QCOMPARE(QString("%1").arg(-1., 3, 'g', -1, QChar(' ')), QString(" -1"));
+ QCOMPARE(QString("%1").arg(-100., 3, 'g', -1, QChar(' ')), QString("-100"));
+ QCOMPARE(QString("%1").arg(1., 3, 'g', -1, QChar('x')), QString("xx1"));
+ QCOMPARE(QString("%1").arg(1000., 3, 'g', -1, QChar('x')), QString("1000"));
+ QCOMPARE(QString("%1").arg(-1., 3, 'g', -1, QChar('x')), QString("x-1"));
+ QCOMPARE(QString("%1").arg(-100., 3, 'g', -1, QChar('x')), QString("-100"));
+}
+
+void tst_QString::number()
+{
+ QCOMPARE( QString::number(int(0)), QString("0") );
+ QCOMPARE( QString::number((unsigned int)(11)), QString("11") );
+ QCOMPARE( QString::number(-22L), QString("-22") );
+ QCOMPARE( QString::number(333UL), QString("333") );
+ QCOMPARE( QString::number(4.4), QString("4.4") );
+ QCOMPARE( QString::number(Q_INT64_C(-555)), QString("-555") );
+ QCOMPARE( QString::number(Q_UINT64_C(6666)), QString("6666") );
+}
+
+void tst_QString::capacity_data()
+{
+ length_data();
+}
+
+void tst_QString::capacity()
+{
+ QFETCH( QString, s1 );
+ QFETCH( int, res );
+
+ QString s2( s1 );
+ s2.reserve( res );
+ QVERIFY( (int)s2.capacity() >= res );
+ QCOMPARE( s2, s1 );
+
+ s2.reserve( res * 2 );
+ QVERIFY( (int)s2.capacity() >= res * 2 );
+ QCOMPARE( s2, s1 );
+
+ s2.squeeze();
+ QVERIFY( (int)s2.capacity() == res );
+ QCOMPARE( s2, s1 );
+
+}
+
+void tst_QString::section_data()
+{
+ QTest::addColumn<QString>("wholeString" );
+ QTest::addColumn<QString>("sep" );
+ QTest::addColumn<int>("start" );
+ QTest::addColumn<int>("end" );
+ QTest::addColumn<int>("flags" );
+ QTest::addColumn<QString>("sectionString" );
+ QTest::addColumn<bool>("regexp" );
+
+ QTest::newRow( "data0" ) << QString("forename,middlename,surname,phone") << QString(",") << 2 << 2 << int(QString::SectionDefault) << QString("surname") << false;
+ QTest::newRow( "data1" ) << QString("/usr/local/bin/myapp") << QString("/") << 3 << 4 << int(QString::SectionDefault) << QString("bin/myapp") << false;
+ QTest::newRow( "data2" ) << QString("/usr/local/bin/myapp") << QString("/") << 3 << 3 << int(QString::SectionSkipEmpty) << QString("myapp") << false;
+ QTest::newRow( "data3" ) << QString("forename**middlename**surname**phone") << QString("**") << 2 << 2 << int(QString::SectionDefault) << QString("surname") << false;
+ QTest::newRow( "data4" ) << QString("forename**middlename**surname**phone") << QString("**") << -3 << -2 << int(QString::SectionDefault) << QString("middlename**surname") << false;
+ QTest::newRow( "task-21749-1" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 0 << 0 << int(QString::SectionSkipEmpty) << QString("Datt") << false;
+ QTest::newRow( "task-21749-2" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 1 << 1 << int(QString::SectionSkipEmpty) << QString("wollen") << false;
+ QTest::newRow( "task-21749-3" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 2 << 2 << int(QString::SectionSkipEmpty) << QString("wir") << false;
+ QTest::newRow( "task-21749-4" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 3 << 3 << int(QString::SectionSkipEmpty) << QString("mal") << false;
+ QTest::newRow( "task-21749-5" ) << QString("##Datt######wollen######wir######mal######sehen##") << QString("#") << 4 << 4 << int(QString::SectionSkipEmpty) << QString("sehen") << false;
+ // not fixed for 3.1
+ QTest::newRow( "task-27269" ) << QString("a/b/c/d") << QString("/") << 1 << -1 << int(QString::SectionIncludeLeadingSep | QString::SectionIncludeTrailingSep) << QString("/b/c/d") << false;
+ QTest::newRow( "task-43641" ) << QString("aoLoboLocolod") << QString("olo") << -1 << -1 << int(QString::SectionCaseInsensitiveSeps) << QString("d") << false;
+ QTest::newRow( "task-27593" ) << QString("F0") << QString("F") << 0 << 0 << int(QString::SectionSkipEmpty) << QString("0") << false;
+ QTest::newRow( "foo1" ) << QString("foo;foo;") << QString(";") << 0 << 0
+ << int(QString::SectionIncludeLeadingSep) << QString("foo") << false;
+ QTest::newRow( "foo2" ) << QString("foo;foo;") << QString(";") << 1 << 1
+ << int(QString::SectionIncludeLeadingSep) << QString(";foo") << false;
+ QTest::newRow( "foo3" ) << QString("foo;foo;") << QString(";") << 2 << 2
+ << int(QString::SectionIncludeLeadingSep) << QString(";") << false;
+ QTest::newRow( "foo1rx" ) << QString("foo;foo;") << QString(";") << 0 << 0
+ << int(QString::SectionIncludeLeadingSep) << QString("foo") << true;
+ QTest::newRow( "foo2rx" ) << QString("foo;foo;") << QString(";") << 1 << 1
+ << int(QString::SectionIncludeLeadingSep) << QString(";foo") << true;
+ QTest::newRow( "foo3rx" ) << QString("foo;foo;") << QString(";") << 2 << 2
+ << int(QString::SectionIncludeLeadingSep) << QString(";") << true;
+
+ QTest::newRow( "qmake_path" ) << QString("/Users/sam/troll/qt4.0/src/corelib/QtCore_debug.xcode/")
+ << QString("/") << 0 << -2 << int(QString::SectionDefault)
+ << QString("/Users/sam/troll/qt4.0/src/corelib/QtCore_debug.xcode") << false;
+ QTest::newRow( "qmake_pathrx" ) << QString("/Users/sam/troll/qt4.0/src/corelib/QtCore_debug.xcode/")
+ << QString("/") << 0 << -2 << int(QString::SectionDefault)
+ << QString("/Users/sam/troll/qt4.0/src/corelib/QtCore_debug.xcode") << true;
+ QTest::newRow( "task72972" ) << QString("||2|3|||")
+ << QString("|") << 0 << 1 << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("||") << false;
+ QTest::newRow( "task72972rx" ) << QString("||2|3|||")
+ << QString("\\|") << 0 << 1 << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("||") << true;
+ QTest::newRow( "task72972-2" ) << QString("|1|2|")
+ << QString("|") << 0 << 1 << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("|1|") << false;
+ QTest::newRow( "task72972-2rx" ) << QString("|1|2|")
+ << QString("\\|") << 0 << 1
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("|1|") << true;
+ QTest::newRow( "normal1" ) << QString("o1o2o")
+ << QString("o") << 0 << 0
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o") << false;
+ QTest::newRow( "normal2" ) << QString("o1o2o")
+ << QString("o") << 1 << 1
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o1o") << false;
+ QTest::newRow( "normal3" ) << QString("o1o2o")
+ << QString("o") << 2 << 2
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o2o") << false;
+ QTest::newRow( "normal4" ) << QString("o1o2o")
+ << QString("o") << 2 << 3
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o2o") << false;
+ QTest::newRow( "normal5" ) << QString("o1o2o")
+ << QString("o") << 1 << 2
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o1o2o") << false;
+ QTest::newRow( "rx1" ) << QString("o1o2o")
+ << QString("[a-z]") << 0 << 0
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o") << true;
+ QTest::newRow( "rx2" ) << QString("o1o2o")
+ << QString("[a-z]") << 1 << 1
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o1o") << true;
+ QTest::newRow( "rx3" ) << QString("o1o2o")
+ << QString("[a-z]") << 2 << 2
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o2o") << true;
+ QTest::newRow( "rx4" ) << QString("o1o2o")
+ << QString("[a-z]") << 2 << 3
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o2o") << true;
+ QTest::newRow( "rx5" ) << QString("o1o2o")
+ << QString("[a-z]") << 1 << 2
+ << int(QString::SectionIncludeLeadingSep|QString::SectionIncludeTrailingSep)
+ << QString("o1o2o") << true;
+ QTest::newRow( "task45855-rx" ) << QString("This is a story, a small story")
+ << QString("\\b") << 3 << 3
+ << int(QString::SectionDefault)
+ << QString("is") << true;
+ QTest::newRow( "task257941-rx" ) << QString("99.0 42.3")
+ << QString("\\s*[AaBb]\\s*") << 1 << 1
+ << int(QString::SectionIncludeLeadingSep)
+ << QString() << true;
+}
+
+void tst_QString::section()
+{
+ QFETCH( QString, wholeString );
+ QFETCH( QString, sep );
+ QFETCH( int, start );
+ QFETCH( int, end );
+ QFETCH( int, flags );
+ QFETCH( QString, sectionString );
+ QFETCH( bool, regexp );
+ if (regexp) {
+ QCOMPARE( wholeString.section( QRegExp(sep), start, end, QString::SectionFlag(flags) ), sectionString );
+ } else {
+ QCOMPARE( wholeString.section( sep, start, end, QString::SectionFlag(flags) ), sectionString );
+ }
+}
+
+
+void tst_QString::operator_eqeq_nullstring()
+{
+ /* Some of these might not be all that logical but it's the behaviour we've had since 3.0.0
+ so we should probably stick with it. */
+
+ QVERIFY( QString() == "" );
+ QVERIFY( "" == QString() );
+
+ QVERIFY( QString("") == "" );
+ QVERIFY( "" == QString("") );
+
+ QVERIFY( QString().size() == 0 );
+
+ QVERIFY( QString("").size() == 0 );
+
+ QVERIFY( QString() == QString("") );
+ QVERIFY( QString("") == QString() );
+}
+
+void tst_QString::operator_smaller()
+{
+ QString null;
+ QString empty("");
+ QString foo("foo");
+
+ QVERIFY( !(null < QString()) );
+ QVERIFY( !(null > QString()) );
+
+ QVERIFY( !(empty < QString("")) );
+ QVERIFY( !(empty > QString("")) );
+
+ QVERIFY( !(null < empty) );
+ QVERIFY( !(null > empty) );
+
+ QVERIFY( null < foo );
+ QVERIFY( !(null > foo) );
+ QVERIFY( foo > null );
+ QVERIFY( !(foo < null) );
+
+ QVERIFY( empty < foo );
+ QVERIFY( !(empty > foo) );
+ QVERIFY( foo > empty );
+ QVERIFY( !(foo < empty) );
+
+ QVERIFY( !(null < QLatin1String(0)) );
+ QVERIFY( !(null > QLatin1String(0)) );
+ QVERIFY( !(null < QLatin1String("")) );
+ QVERIFY( !(null > QLatin1String("")) );
+
+ QVERIFY( !(null < QLatin1String("")) );
+ QVERIFY( !(null > QLatin1String("")) );
+ QVERIFY( !(empty < QLatin1String("")) );
+ QVERIFY( !(empty > QLatin1String("")) );
+
+ QVERIFY( !(QLatin1String(0) < null) );
+ QVERIFY( !(QLatin1String(0) > null) );
+ QVERIFY( !(QLatin1String("") < null) );
+ QVERIFY( !(QLatin1String("") > null) );
+
+ QVERIFY( !(QLatin1String(0) < empty) );
+ QVERIFY( !(QLatin1String(0) > empty) );
+ QVERIFY( !(QLatin1String("") < empty) );
+ QVERIFY( !(QLatin1String("") > empty) );
+
+ QVERIFY( QLatin1String(0) < foo );
+ QVERIFY( !(QLatin1String(0) > foo) );
+ QVERIFY( QLatin1String("") < foo );
+ QVERIFY( !(QLatin1String("") > foo) );
+
+ QVERIFY( foo > QLatin1String(0) );
+ QVERIFY( !(foo < QLatin1String(0)) );
+ QVERIFY( foo > QLatin1String("") );
+ QVERIFY( !(foo < QLatin1String("")) );
+
+ QVERIFY( QLatin1String(0) == empty);
+ QVERIFY( QLatin1String(0) == null);
+ QVERIFY( QLatin1String("") == empty);
+ QVERIFY( QLatin1String("") == null);
+
+ QVERIFY( !(foo < QLatin1String("foo")));
+ QVERIFY( !(foo > QLatin1String("foo")));
+ QVERIFY( !(QLatin1String("foo") < foo));
+ QVERIFY( !(QLatin1String("foo") > foo));
+
+ QVERIFY( !(foo < QLatin1String("a")));
+ QVERIFY( (foo > QLatin1String("a")));
+ QVERIFY( (QLatin1String("a") < foo));
+ QVERIFY( !(QLatin1String("a") > foo));
+
+ QVERIFY( (foo < QLatin1String("z")));
+ QVERIFY( !(foo > QLatin1String("z")));
+ QVERIFY( !(QLatin1String("z") < foo));
+ QVERIFY( (QLatin1String("z") > foo));
+}
+
+void tst_QString::integer_conversion_data()
+{
+ QTest::addColumn<QString>("locale_name");
+ QTest::addColumn<QString>("num_str");
+ QTest::addColumn<int>("base");
+ QTest::addColumn<bool>("good");
+ QTest::addColumn<qlonglong>("num");
+
+ QTest::newRow("C empty 0") << QString("C") << QString("") << 0 << false << (qlonglong)0;
+ QTest::newRow("C empty 8") << QString("C") << QString("") << 8 << false << (qlonglong)0;
+ QTest::newRow("C empty 10") << QString("C") << QString("") << 10 << false << (qlonglong)0;
+ QTest::newRow("C empty 16") << QString("C") << QString("") << 16 << false << (qlonglong)0;
+
+ QTest::newRow("C null 0") << QString("C") << QString() << 0 << false << (qlonglong)0;
+ QTest::newRow("C null 8") << QString("C") << QString() << 8 << false << (qlonglong)0;
+ QTest::newRow("C null 10") << QString("C") << QString() << 10 << false << (qlonglong)0;
+ QTest::newRow("C null 16") << QString("C") << QString() << 16 << false << (qlonglong)0;
+
+ QTest::newRow("C -0xf 0") << QString("C") << QString(" -0xf") << 0 << true << (qlonglong)-15;
+ QTest::newRow("C -0xf 0") << QString("C") << QString("-0xf ") << 0 << true << (qlonglong)-15;
+ QTest::newRow("C \t0xf\t 0") << QString("C") << QString("\t0xf\t") << 0 << true << (qlonglong)15;
+ QTest::newRow("C -010 0") << QString("C") << QString(" -010") << 0 << true << (qlonglong)-8;
+ QTest::newRow("C 010 0") << QString("C") << QString("010 ") << 0 << true << (qlonglong)8;
+ QTest::newRow("C \t-010\t 0") << QString("C") << QString("\t-010\t") << 0 << true << (qlonglong)-8;
+ QTest::newRow("C 123 10") << QString("C") << QString(" 123") << 10 << true << (qlonglong)123;
+ QTest::newRow("C 123 10") << QString("C") << QString("123 ") << 10 << true << (qlonglong)123;
+ QTest::newRow("C \t123\t 10") << QString("C") << QString("\t123\t") << 10 << true << (qlonglong)123;
+ QTest::newRow("C -0xf 16") << QString("C") << QString(" -0xf") << 16 << true << (qlonglong)-15;
+ QTest::newRow("C -0xf 16") << QString("C") << QString("-0xf ") << 16 << true << (qlonglong)-15;
+ QTest::newRow("C \t0xf\t 16") << QString("C") << QString("\t0xf\t") << 16 << true << (qlonglong)15;
+
+ QTest::newRow("C -0 0") << QString("C") << QString("-0") << 0 << true << (qlonglong)0;
+ QTest::newRow("C -0 8") << QString("C") << QString("-0") << 8 << true << (qlonglong)0;
+ QTest::newRow("C -0 10") << QString("C") << QString("-0") << 10 << true << (qlonglong)0;
+ QTest::newRow("C -0 16") << QString("C") << QString("-0") << 16 << true << (qlonglong)0;
+
+ QTest::newRow("C 1.234 10") << QString("C") << QString("1.234") << 10 << false << (qlonglong)0;
+ QTest::newRow("C 1,234 10") << QString("C") << QString("1,234") << 10 << false << (qlonglong)0;
+ QTest::newRow("de_DE 1.234 10") << QString("de_DE") << QString("1.234") << 10 << false << (qlonglong)0;
+ QTest::newRow("de_DE 1,234 10") << QString("de_DE") << QString("1,234") << 10 << false << (qlonglong)0;
+
+ QTest::newRow("C 0x 0") << QString("C") << QString("0x") << 0 << false << (qlonglong)0;
+ QTest::newRow("C 0x 16") << QString("C") << QString("0x") << 16 << false << (qlonglong)0;
+
+ QTest::newRow("C 10 0") << QString("C") << QString("10") << 0 << true << (qlonglong)10;
+ QTest::newRow("C 010 0") << QString("C") << QString("010") << 0 << true << (qlonglong)8;
+ QTest::newRow("C 0x10 0") << QString("C") << QString("0x10") << 0 << true << (qlonglong)16;
+ QTest::newRow("C 10 8") << QString("C") << QString("10") << 8 << true << (qlonglong)8;
+ QTest::newRow("C 010 8") << QString("C") << QString("010") << 8 << true << (qlonglong)8;
+ QTest::newRow("C 0x10 8") << QString("C") << QString("0x10") << 8 << false << (qlonglong)0;
+ QTest::newRow("C 10 10") << QString("C") << QString("10") << 10 << true << (qlonglong)10;
+ QTest::newRow("C 010 10") << QString("C") << QString("010") << 10 << true << (qlonglong)10;
+ QTest::newRow("C 0x10 10") << QString("C") << QString("0x10") << 10 << false << (qlonglong)0;
+ QTest::newRow("C 10 16") << QString("C") << QString("10") << 16 << true << (qlonglong)16;
+ QTest::newRow("C 010 16") << QString("C") << QString("010") << 16 << true << (qlonglong)16;
+ QTest::newRow("C 0x10 16") << QString("C") << QString("0x10") << 16 << true << (qlonglong)16;
+
+ QTest::newRow("de_DE 10 0") << QString("de_DE") << QString("10") << 0 << true << (qlonglong)10;
+ QTest::newRow("de_DE 010 0") << QString("de_DE") << QString("010") << 0 << true << (qlonglong)8;
+ QTest::newRow("de_DE 0x10 0") << QString("de_DE") << QString("0x10") << 0 << true << (qlonglong)16;
+ QTest::newRow("de_DE 10 8") << QString("de_DE") << QString("10") << 8 << true << (qlonglong)8;
+ QTest::newRow("de_DE 010 8") << QString("de_DE") << QString("010") << 8 << true << (qlonglong)8;
+ QTest::newRow("de_DE 0x10 8") << QString("de_DE") << QString("0x10") << 8 << false << (qlonglong)0;
+ QTest::newRow("de_DE 10 10") << QString("de_DE") << QString("10") << 10 << true << (qlonglong)10;
+ QTest::newRow("de_DE 010 10") << QString("de_DE") << QString("010") << 10 << true << (qlonglong)10;
+ QTest::newRow("de_DE 0x10 10") << QString("de_DE") << QString("0x10") << 10 << false << (qlonglong)0;
+ QTest::newRow("de_DE 10 16") << QString("de_DE") << QString("10") << 16 << true << (qlonglong)16;
+ QTest::newRow("de_DE 010 16") << QString("de_DE") << QString("010") << 16 << true << (qlonglong)16;
+ QTest::newRow("de_DE 0x10 16") << QString("de_DE") << QString("0x10") << 16 << true << (qlonglong)16;
+
+ QTest::newRow("C -10 0") << QString("C") << QString("-10") << 0 << true << (qlonglong)-10;
+ QTest::newRow("C -010 0") << QString("C") << QString("-010") << 0 << true << (qlonglong)-8;
+ QTest::newRow("C -0x10 0") << QString("C") << QString("-0x10") << 0 << true << (qlonglong)-16;
+ QTest::newRow("C -10 8") << QString("C") << QString("-10") << 8 << true << (qlonglong)-8;
+ QTest::newRow("C -010 8") << QString("C") << QString("-010") << 8 << true << (qlonglong)-8;
+ QTest::newRow("C -0x10 8") << QString("C") << QString("-0x10") << 8 << false << (qlonglong)0;
+ QTest::newRow("C -10 10") << QString("C") << QString("-10") << 10 << true << (qlonglong)-10;
+ QTest::newRow("C -010 10") << QString("C") << QString("-010") << 10 << true << (qlonglong)-10;
+ QTest::newRow("C -0x10 10") << QString("C") << QString("-0x10") << 10 << false << (qlonglong)0;
+ QTest::newRow("C -10 16") << QString("C") << QString("-10") << 16 << true << (qlonglong)-16;
+ QTest::newRow("C -010 16") << QString("C") << QString("-010") << 16 << true << (qlonglong)-16;
+ QTest::newRow("C -0x10 16") << QString("C") << QString("-0x10") << 16 << true << (qlonglong)-16;
+
+ // Let's try some Arabic
+ const quint16 arabic_str[] = { 0x0661, 0x0662, 0x0663, 0x0664, 0x0000 }; // "1234"
+ QTest::newRow("ar_SA 1234 0") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 0 << true << (qlonglong)1234;
+ QTest::newRow("ar_SA 1234 8") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 8 << true << (qlonglong)668;
+ QTest::newRow("ar_SA 1234 10") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 10 << true << (qlonglong)1234;
+ QTest::newRow("ar_SA 1234 16") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 16 << true << (qlonglong)4660;
+}
+
+void tst_QString::integer_conversion()
+{
+ QFETCH(QString, locale_name);
+ QFETCH(QString, num_str);
+ QFETCH(int, base);
+ QFETCH(bool, good);
+ QFETCH(qlonglong, num);
+
+
+ QLocale::setDefault(locale_name);
+ QCOMPARE(QLocale().name(), locale_name);
+
+ bool ok;
+ qlonglong d = num_str.toLongLong(&ok, base);
+ QCOMPARE(ok, good);
+
+ if (ok) {
+ QCOMPARE(d, num);
+ }
+
+ QLocale::setDefault(QLocale::C);
+}
+
+void tst_QString::double_conversion_data()
+{
+ QTest::addColumn<QString>("locale_name");
+ QTest::addColumn<QString>("num_str");
+ QTest::addColumn<bool>("good");
+ QTest::addColumn<double>("num");
+/*
+ // The good...
+
+ QTest::newRow("C 1") << QString("C") << QString("1") << true << 1.0;
+ QTest::newRow("C 1.0") << QString("C") << QString("1.0") << true << 1.0;
+ QTest::newRow("C 1.234") << QString("C") << QString("1.234") << true << 1.234;
+ QTest::newRow("C 1.234e-10") << QString("C") << QString("1.234e-10") << true << 1.234e-10;
+ QTest::newRow("C 1.234E10") << QString("C") << QString("1.234E10") << true << 1.234e10;
+ QTest::newRow("C 1e10") << QString("C") << QString("1e10") << true << 1.0e10;
+
+ // The bad...
+
+ QTest::newRow("C empty") << QString("C") << QString("") << false << 0.0;
+ QTest::newRow("C null") << QString("C") << QString() << false << 0.0;
+ QTest::newRow("C .") << QString("C") << QString(".") << false << 0.0;
+ QTest::newRow("C 1e") << QString("C") << QString("1e") << false << 0.0;
+ QTest::newRow("C 1,") << QString("C") << QString("1,") << false << 0.0;
+ QTest::newRow("C 1,0") << QString("C") << QString("1,0") << false << 0.0;
+ QTest::newRow("C 1,000") << QString("C") << QString("1,000") << false << 0.0;
+ QTest::newRow("C 1e1.0") << QString("C") << QString("1e1.0") << false << 0.0;
+ QTest::newRow("C 1e+") << QString("C") << QString("1e+") << false << 0.0;
+ QTest::newRow("C 1e-") << QString("C") << QString("1e-") << false << 0.0;
+
+ // And the ugly...
+
+ QTest::newRow("C .1") << QString("C") << QString(".1") << true << 0.1;
+ QTest::newRow("C -.1") << QString("C") << QString("-.1") << true << -0.1;
+ QTest::newRow("C 1.") << QString("C") << QString("1.") << true << 1.0;
+ QTest::newRow("C 1.E10") << QString("C") << QString("1.E10") << true << 1.0e10;
+ QTest::newRow("C 1e+10") << QString("C") << QString("1e+10") << true << 1.0e+10;
+
+ QTest::newRow("de_DE 1") << QString("de_DE") << QString("1") << true << 1.0;
+ QTest::newRow("de_DE 1.0") << QString("de_DE") << QString("1.0") << true << 1.0;
+ QTest::newRow("de_DE 1.234") << QString("de_DE") << QString("1.234") << true << 1.234;
+ QTest::newRow("de_DE 1.234e-10") << QString("de_DE") << QString("1.234e-10") << true << 1.234e-10;
+ QTest::newRow("de_DE 1.234E10") << QString("de_DE") << QString("1.234E10") << true << 1.234e10;
+ QTest::newRow("de_DE 1e10") << QString("de_DE") << QString("1e10") << true << 1.0e10;
+ QTest::newRow("de_DE .1") << QString("de_DE") << QString(".1") << true << 0.1;
+ QTest::newRow("de_DE -.1") << QString("de_DE") << QString("-.1") << true << -0.1;
+ QTest::newRow("de_DE 1.") << QString("de_DE") << QString("1.") << true << 1.0;
+ QTest::newRow("de_DE 1.E10") << QString("de_DE") << QString("1.E10") << true << 1.0e10;
+ QTest::newRow("de_DE 1e+10") << QString("de_DE") << QString("1e+10") << true << 1.0e+10;
+
+ QTest::newRow("de_DE 1,0") << QString("de_DE") << QString("1,0") << true << 1.0;
+ QTest::newRow("de_DE 1,234") << QString("de_DE") << QString("1,234") << true << 1.234;
+ QTest::newRow("de_DE 1,234e-10") << QString("de_DE") << QString("1,234e-10") << true << 1.234e-10;
+ QTest::newRow("de_DE 1,234E10") << QString("de_DE") << QString("1,234E10") << true << 1.234e10;
+ QTest::newRow("de_DE ,1") << QString("de_DE") << QString(",1") << true << 0.1;
+ QTest::newRow("de_DE -,1") << QString("de_DE") << QString("-,1") << true << -0.1;
+ QTest::newRow("de_DE 1,") << QString("de_DE") << QString("1,") << true << 1.0;
+ QTest::newRow("de_DE 1,E10") << QString("de_DE") << QString("1,E10") << true << 1.0e10;
+
+ QTest::newRow("de_DE empty") << QString("de_DE") << QString("") << false << 0.0;
+ QTest::newRow("de_DE null") << QString("de_DE") << QString() << false << 0.0;
+ QTest::newRow("de_DE .") << QString("de_DE") << QString(".") << false << 0.0;
+ QTest::newRow("de_DE 1e") << QString("de_DE") << QString("1e") << false << 0.0;
+ QTest::newRow("de_DE 1e1.0") << QString("de_DE") << QString("1e1.0") << false << 0.0;
+ QTest::newRow("de_DE 1e+") << QString("de_DE") << QString("1e+") << false << 0.0;
+ QTest::newRow("de_DE 1e-") << QString("de_DE") << QString("1e-") << false << 0.0;
+
+ QTest::newRow("C 1") << QString("C") << QString(" 1") << true << 1.0;
+ QTest::newRow("C 1 ") << QString("C") << QString("1 ") << true << 1.0;
+ QTest::newRow("de_DE 1") << QString("de_DE") << QString(" 1") << true << 1.0;
+ QTest::newRow("de_DE 1 ") << QString("de_DE") << QString("1 ") << true << 1.0;
+*/
+ // Let's try some Arabic
+ const quint16 arabic_str[] = { 0x0660, 0x066B, 0x0661, 0x0662,
+ 0x0663, 0x0664, 0x0065, 0x0662,
+ 0x0000 }; // "0.1234e2"
+ QTest::newRow("ar_SA") << QString("ar_SA") << QString::fromUtf16(arabic_str) << true << 0.1234e2;
+}
+
+void tst_QString::double_conversion()
+{
+#define MY_DOUBLE_EPSILON (2.22045e-16)
+
+ QFETCH(QString, locale_name);
+ QFETCH(QString, num_str);
+ QFETCH(bool, good);
+ QFETCH(double, num);
+
+ QLocale::setDefault(locale_name);
+ QCOMPARE(QLocale().name(), locale_name);
+
+ bool ok;
+ double d = num_str.toDouble(&ok);
+ QCOMPARE(ok, good);
+
+ if (ok) {
+ double diff = d - num;
+ if (diff < 0)
+ diff = -diff;
+ QVERIFY(diff <= MY_DOUBLE_EPSILON);
+ }
+
+ QLocale::setDefault(QLocale::C);
+}
+
+#ifndef Q_MOC_RUN
+#include "double_data.h"
+#endif
+
+void tst_QString::tortureSprintfDouble()
+{
+ const SprintfDoubleData *data = g_sprintf_double_data;
+
+ QString s;
+
+ for (; data->fmt != 0; ++data) {
+ double d;
+ char *buff = (char *)&d;
+# ifndef Q_BYTE_ORDER
+# error "Q_BYTE_ORDER not defined"
+# endif
+
+# ifdef QT_ARMFPA
+ buff[0] = data->bytes[4];
+ buff[1] = data->bytes[5];
+ buff[2] = data->bytes[6];
+ buff[3] = data->bytes[7];
+ buff[4] = data->bytes[0];
+ buff[5] = data->bytes[1];
+ buff[6] = data->bytes[2];
+ buff[7] = data->bytes[3];
+# elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN
+ for (uint i = 0; i < 8; ++i)
+ buff[i] = data->bytes[i];
+# else
+ for (uint i = 0; i < 8; ++i)
+ buff[7 - i] = data->bytes[i];
+# endif
+ s.sprintf(data->fmt, d);
+#ifdef QT_NO_FPU // reduced precision when running with hardfloats in qemu
+ if (d - 0.1 < 1e12)
+ QSKIP("clib sprintf doesn't fill with 0's on this platform",
+ SkipSingle);
+ QCOMPARE(s.left(16), QString(data->expected).left(16));
+#else
+ QCOMPARE(s, QString(data->expected));
+#endif
+ }
+}
+
+#include <locale.h>
+
+void tst_QString::localeAwareCompare_data()
+{
+#ifdef Q_OS_WIN
+ QTest::addColumn<ulong>("locale");
+#else
+ QTest::addColumn<QString>("locale");
+#endif
+ QTest::addColumn<QString>("s1");
+ QTest::addColumn<QString>("s2");
+ QTest::addColumn<int>("result");
+
+ /*
+ The C locale performs pure byte comparisons for
+ Latin-1-specific characters (I think). Compare with Swedish
+ below.
+ */
+#ifdef Q_OS_WIN // assume c locale to be english
+ QTest::newRow("c1") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("\xe5") << QString("\xe4") << 1;
+ QTest::newRow("c2") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("c3") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("\xe5") << QString("\xf6") << -1;
+#else
+ QTest::newRow("c1") << QString("C") << QString("\xe5") << QString("\xe4") << 1;
+ QTest::newRow("c2") << QString("C") << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("c3") << QString("C") << QString("\xe5") << QString("\xf6") << -1;
+#endif
+
+ /*
+ It's hard to test English, because it's treated differently
+ on different platforms. For example, on Linux, it uses the
+ iso14651_t1 template file, which happens to provide good
+ defaults for Swedish. Mac OS X seems to do a pure bytewise
+ comparison of Latin-1 values, although I'm not sure. So I
+ just test digits to make sure that it's not totally broken.
+ */
+#ifdef Q_OS_WIN
+ QTest::newRow("english1") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("5") << QString("4") << 1;
+ QTest::newRow("english2") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("4") << QString("6") << -1;
+ QTest::newRow("english3") << MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) << QString("5") << QString("6") << -1;
+#else
+ QTest::newRow("english1") << QString("en_US") << QString("5") << QString("4") << 1;
+ QTest::newRow("english2") << QString("en_US") << QString("4") << QString("6") << -1;
+ QTest::newRow("english3") << QString("en_US") << QString("5") << QString("6") << -1;
+#endif
+ /*
+ In Swedish, a with ring above (E5) comes before a with
+ diaresis (E4), which comes before o diaresis (F6), which
+ all come after z.
+ */
+#ifdef Q_OS_MAC
+ QTest::newRow("swedish1") << QString("sv_SE.ISO8859-1") << QString("\xe5") << QString("\xe4") << -1;
+ QTest::newRow("swedish2") << QString("sv_SE.ISO8859-1") << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("swedish3") << QString("sv_SE.ISO8859-1") << QString("\xe5") << QString("\xf6") << -1;
+ QTest::newRow("swedish4") << QString("sv_SE.ISO8859-1") << QString("z") << QString("\xe5") << -1;
+#elif defined(Q_OS_WIN)
+ QTest::newRow("swedish1") << MAKELCID(MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH), SORT_DEFAULT) << QString("\xe5") << QString("\xe4") << -1;
+ QTest::newRow("swedish2") << MAKELCID(MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH), SORT_DEFAULT) << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("swedish3") << MAKELCID(MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH), SORT_DEFAULT) << QString("\xe5") << QString("\xf6") << -1;
+ QTest::newRow("swedish4") << MAKELCID(MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH), SORT_DEFAULT) << QString("z") << QString("\xe5") << -1;
+#else
+ QTest::newRow("swedish1") << QString("sv_SE") << QString("\xe5") << QString("\xe4") << -1;
+ QTest::newRow("swedish2") << QString("sv_SE") << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("swedish3") << QString("sv_SE") << QString("\xe5") << QString("\xf6") << -1;
+ QTest::newRow("swedish4") << QString("sv_SE") << QString("z") << QString("\xe5") << -1;
+#endif
+
+#if 0
+ /*
+ In Norwegian, ae (E6) comes before o with stroke (D8), which
+ comes before a with ring above (E5).
+ */
+ QTest::newRow("norwegian1") << QString("no_NO") << QString("\xe6") << QString("\xd8") << -1;
+ QTest::newRow("norwegian2") << QString("no_NO") << QString("\xd8") << QString("\xe5") << -1;
+ QTest::newRow("norwegian3") << QString("no_NO") << QString("\xe6") << QString("\xe5") << -1;
+#endif
+
+ /*
+ In German, z comes *after* a with diaresis (E4),
+ which comes before o diaresis (F6).
+ */
+#ifdef Q_OS_MAC
+ QTest::newRow("german1") << QString("de_DE.ISO8859-1") << QString("z") << QString("\xe4") << 1;
+ QTest::newRow("german2") << QString("de_DE.ISO8859-1") << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("german3") << QString("de_DE.ISO8859-1") << QString("z") << QString("\xf6") << 1;
+#elif defined(Q_OS_WIN)
+ QTest::newRow("german1") << MAKELCID(MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), SORT_DEFAULT) << QString("z") << QString("\xe4") << 1;
+ QTest::newRow("german2") << MAKELCID(MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), SORT_DEFAULT) << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("german3") << MAKELCID(MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), SORT_DEFAULT) << QString("z") << QString("\xf6") << 1;
+#else
+ QTest::newRow("german1") << QString("de_DE") << QString("z") << QString("\xe4") << 1;
+ QTest::newRow("german2") << QString("de_DE") << QString("\xe4") << QString("\xf6") << -1;
+ QTest::newRow("german3") << QString("de_DE") << QString("z") << QString("\xf6") << 1;
+#endif
+}
+
+void tst_QString::localeAwareCompare()
+{
+#ifdef Q_OS_SYMBIAN
+ QSKIP("QTBUG-16921: There is no way to set up the system locale, so this test is not reliable in Symbian.");
+#else
+#ifdef Q_OS_WIN
+# ifndef Q_OS_WINCE
+ QSKIP("On others than Win CE, we cannot set the system or user locale.", SkipAll);
+# endif
+ QFETCH(ulong, locale);
+#else
+ QFETCH(QString, locale);
+#endif
+ QFETCH(QString, s1);
+ QFETCH(QString, s2);
+ QFETCH(int, result);
+
+ QStringRef r1(&s1, 0, s1.length());
+ QStringRef r2(&s2, 0, s2.length());
+
+#ifdef Q_OS_WIN
+# if defined(Q_OS_WINCE)
+ DWORD oldLcid = GetUserDefaultLCID();
+ SetUserDefaultLCID(locale);
+
+ QCOMPARE(locale, GetUserDefaultLCID());
+# else
+ DWORD oldLcid = GetThreadLocale();
+ SetThreadLocale(locale);
+
+ QCOMPARE(locale, GetThreadLocale());
+# endif
+
+#elif defined (Q_WS_MAC)
+ QSKIP("Setting the locale is not supported on OS X (you can set the C locale, but that won't affect CFStringCompare which is used to compare strings)", SkipAll);
+#elif defined(QT_USE_ICU)
+ QLocale::setDefault(QLocale(locale));
+#else
+ if (!locale.isEmpty()) {
+ const char *newLocale = setlocale(LC_ALL, locale.toLatin1());
+ if (!newLocale) {
+ setlocale(LC_ALL, "");
+ QSKIP("Please install the proper locale on this machine to test properly", SkipSingle);
+ return;
+ }
+ }
+#endif
+
+#ifdef QT_USE_ICU
+ // ### for c1, ICU disagrees with libc on how to compare
+ QEXPECT_FAIL("c1", "ICU disagrees with test", Abort);
+#endif
+
+ int testres = QString::localeAwareCompare(s1, s2);
+ if (result < 0) {
+ QVERIFY(testres < 0);
+ } else if (result > 0) {
+ QVERIFY(testres > 0);
+ } else {
+ QVERIFY(testres == 0);
+ }
+
+ testres = QString::localeAwareCompare(s2, s1);
+ if (result > 0) {
+ QVERIFY(testres < 0);
+ } else if (result < 0) {
+ QVERIFY(testres > 0);
+ } else {
+ QVERIFY(testres == 0);
+ }
+
+ testres = QString::localeAwareCompare(s1, r2);
+ if (result < 0) {
+ QVERIFY(testres < 0);
+ } else if (result > 0) {
+ QVERIFY(testres > 0);
+ } else {
+ QVERIFY(testres == 0);
+ }
+
+ testres = QStringRef::localeAwareCompare(r1, r2);
+ if (result < 0) {
+ QVERIFY(testres < 0);
+ } else if (result > 0) {
+ QVERIFY(testres > 0);
+ } else {
+ QVERIFY(testres == 0);
+ }
+
+ testres = QStringRef::localeAwareCompare(r2, r1);
+ if (result > 0) {
+ QVERIFY(testres < 0);
+ } else if (result < 0) {
+ QVERIFY(testres > 0);
+ } else {
+ QVERIFY(testres == 0);
+ }
+
+#ifdef Q_OS_WIN
+# if defined(Q_OS_WINCE)
+ SetUserDefaultLCID(oldLcid);
+# else
+ SetThreadLocale(oldLcid);
+# endif
+
+#else
+ if (!locale.isEmpty())
+ setlocale(LC_ALL, "");
+#endif
+#endif // Q_OS_SYMBIAN
+}
+
+void tst_QString::split_data()
+{
+ QTest::addColumn<QString>("str");
+ QTest::addColumn<QString>("sep");
+ QTest::addColumn<QStringList>("result");
+
+ QTest::newRow("1") << "a,b,c" << "," << (QStringList() << "a" << "b" << "c");
+ QTest::newRow("2") << QString("-rw-r--r-- 1 0 0 519240 Jul 9 2002 bigfile")
+ << " "
+ << (QStringList() << "-rw-r--r--" << "" << "1" << "0" << "" << "0" << ""
+ << "519240" << "Jul" << "" << "9" << "" << "2002" << "bigfile");
+ QTest::newRow("one-empty") << "" << " " << (QStringList() << "");
+ QTest::newRow("two-empty") << " " << " " << (QStringList() << "" << "");
+ QTest::newRow("three-empty") << " " << " " << (QStringList() << "" << "" << "");
+
+ QTest::newRow("all-empty") << "" << "" << (QStringList() << "" << "");
+ QTest::newRow("sep-empty") << "abc" << "" << (QStringList() << "" << "a" << "b" << "c" << "");
+}
+
+void tst_QString::split()
+{
+ QFETCH(QString, str);
+ QFETCH(QString, sep);
+ QFETCH(QStringList, result);
+
+ QRegExp rx = QRegExp(QRegExp::escape(sep));
+
+ QStringList list;
+
+ list = str.split(sep);
+ QVERIFY(list == result);
+ list = str.split(rx);
+ QVERIFY(list == result);
+ if (sep.size() == 1) {
+ list = str.split(sep.at(0));
+ QVERIFY(list == result);
+ }
+
+ list = str.split(sep, QString::KeepEmptyParts);
+ QVERIFY(list == result);
+ list = str.split(rx, QString::KeepEmptyParts);
+ QVERIFY(list == result);
+ if (sep.size() == 1) {
+ list = str.split(sep.at(0), QString::KeepEmptyParts);
+ QVERIFY(list == result);
+ }
+
+ result.removeAll("");
+ list = str.split(sep, QString::SkipEmptyParts);
+ QVERIFY(list == result);
+ list = str.split(rx, QString::SkipEmptyParts);
+ QVERIFY(list == result);
+ if (sep.size() == 1) {
+ list = str.split(sep.at(0), QString::SkipEmptyParts);
+ QVERIFY(list == result);
+ }
+}
+
+void tst_QString::split_regexp()
+{
+ QString str1 = "Some text\n\twith strange whitespace.";
+ QStringList list1 = str1.split(QRegExp("\\s+"));
+ QStringList result1;
+ result1 << "Some" << "text" << "with" << "strange" << "whitespace.";
+ QVERIFY(list1 == result1);
+ list1 = str1.split(QRegExp("\\s"), QString::SkipEmptyParts);
+ QVERIFY(list1 == result1);
+
+ QString str2 = "This time, a normal English sentence.";
+ QStringList list2 = str2.split(QRegExp("\\W+"));
+ QStringList result2;
+ result2 << "This" << "time" << "a" << "normal" << "English" << "sentence" << "";
+ QVERIFY(list2 == result2);
+ list2 = str2.split(QRegExp("\\W"), QString::SkipEmptyParts);
+ result2.removeAll(QString());
+ QVERIFY(list2 == result2);
+
+ QString str3 = "Now: this sentence fragment.";
+ QStringList list3 = str3.split(QRegExp("\\b"));
+ QStringList result3;
+ result3 << "" << "Now" << ": " << "this" << " " << "sentence" << " " << "fragment" << ".";
+ QVERIFY(list3 == result3);
+ list3 = str3.split(QRegExp("\\b"), QString::SkipEmptyParts);
+ result3.removeAll(QString());
+ QVERIFY(list3 == result3);
+}
+
+void tst_QString::fromUtf16_data()
+{
+ QTest::addColumn<QString>("ucs2");
+ QTest::addColumn<QString>("res");
+ QTest::addColumn<int>("len");
+
+ QTest::newRow("str0") << QString("abcdefgh") << QString("abcdefgh") << -1;
+ QTest::newRow("str0-len") << QString("abcdefgh") << QString("abc") << 3;
+}
+
+void tst_QString::fromUtf16()
+{
+ QFETCH(QString, ucs2);
+ QFETCH(QString, res);
+ QFETCH(int, len);
+
+ QCOMPARE(QString::fromUtf16(ucs2.utf16(), len), res);
+}
+
+
+void tst_QString::latin1String()
+{
+ QString s("Hello");
+
+ QVERIFY(s == QLatin1String("Hello"));
+ QVERIFY(s != QLatin1String("Hello World"));
+ QVERIFY(s < QLatin1String("Helloa"));
+ QVERIFY(!(s > QLatin1String("Helloa")));
+ QVERIFY(s > QLatin1String("Helln"));
+ QVERIFY(s > QLatin1String("Hell"));
+ QVERIFY(!(s < QLatin1String("Helln")));
+ QVERIFY(!(s < QLatin1String("Hell")));
+}
+
+void tst_QString::nanAndInf()
+{
+ bool ok;
+ double d;
+
+#define CHECK_DOUBLE(str, expected_ok, expected_inf) \
+ d = QString(str).toDouble(&ok); \
+ QVERIFY(ok == expected_ok); \
+ QVERIFY((d == INFINITY) == expected_inf);
+
+ CHECK_DOUBLE("inf", true, true)
+ CHECK_DOUBLE("INF", true, true)
+ CHECK_DOUBLE("inf ", true, true)
+ CHECK_DOUBLE("+inf", true, true)
+ CHECK_DOUBLE("\t +INF", true, true)
+ CHECK_DOUBLE("\t INF", true, true)
+ CHECK_DOUBLE("inF ", true, true)
+ CHECK_DOUBLE("+iNf", true, true)
+ CHECK_DOUBLE("INFe-10", false, false)
+ CHECK_DOUBLE("0xINF", false, false)
+ CHECK_DOUBLE("- INF", false, false)
+ CHECK_DOUBLE("+ INF", false, false)
+ CHECK_DOUBLE("-- INF", false, false)
+ CHECK_DOUBLE("inf0", false, false)
+ CHECK_DOUBLE("--INF", false, false)
+ CHECK_DOUBLE("++INF", false, false)
+ CHECK_DOUBLE("INF++", false, false)
+ CHECK_DOUBLE("INF--", false, false)
+ CHECK_DOUBLE("INF +", false, false)
+ CHECK_DOUBLE("INF -", false, false)
+ CHECK_DOUBLE("0INF", false, false)
+#undef CHECK_INF
+
+#define CHECK_NAN(str, expected_ok, expected_nan) \
+ d = QString(str).toDouble(&ok); \
+ QVERIFY(ok == expected_ok); \
+ QVERIFY((bool)isnan(d) == expected_nan); \
+
+ CHECK_NAN("nan", true, true)
+ CHECK_NAN("NAN", true, true)
+ CHECK_NAN("nan ", true, true)
+ CHECK_NAN("\t NAN", true, true)
+ CHECK_NAN("\t NAN ", true, true)
+#ifndef QT_QLOCALE_USES_FCVT //In case we use glibc this tests will fail
+ CHECK_NAN("-nan", false, false)
+ CHECK_NAN("+NAN", false, false)
+#endif
+ CHECK_NAN("NaN", true, true)
+ CHECK_NAN("nAn", true, true)
+ CHECK_NAN("NANe-10", false, false)
+ CHECK_NAN("0xNAN", false, false)
+ CHECK_NAN("0NAN", false, false)
+#undef CHECK_NAN
+
+ d = QString("-INF").toDouble(&ok);
+ QVERIFY(ok);
+ QVERIFY(d == -INFINITY);
+
+ long l;
+ l = QString("INF").toLong(&ok);
+ QVERIFY(!ok);
+
+ l = QString("INF").toLong(&ok, 36);
+ QVERIFY(ok);
+
+ l = QString("INF0").toLong(&ok, 36);
+ QVERIFY(ok);
+
+ l = QString("0INF0").toLong(&ok, 36);
+ QVERIFY(ok);
+}
+
+void tst_QString::arg_fillChar_data()
+{
+ QTest::addColumn<QString>("pattern");
+ QTest::addColumn<QList<QVariant> >("replaceValues");
+ QTest::addColumn<IntList>("widths");
+ QTest::addColumn<QString>("fillChars");
+ QTest::addColumn<QString>("expected");
+
+ QList<QVariant> replaceValues;
+ IntList widths;
+ QString fillChars;
+
+ replaceValues << QVariant((int)5) << QVariant(QString("f")) << QVariant((int)0);
+ widths << 3 << 2 << 5;
+ QTest::newRow("str0") << QString("%1%2%3") << replaceValues << widths << QString("abc") << QString("aa5bfcccc0");
+
+ replaceValues.clear();
+ widths.clear();
+ replaceValues << QVariant((int)5.5) << QVariant(QString("foo")) << QVariant((qulonglong)INT_MAX);
+ widths << 10 << 2 << 5;
+ QTest::newRow("str1") << QString("%3.%1.%3.%2") << replaceValues << widths << QString("0 c")
+ << QString("2147483647.0000000005.2147483647.foo");
+
+ replaceValues.clear();
+ widths.clear();
+ replaceValues << QVariant(QString("fisk"));
+ widths << 100;
+ QTest::newRow("str2") << QString("%9 og poteter") << replaceValues << widths << QString("f")
+ << QString("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffisk og poteter");
+}
+
+void tst_QString::arg_fillChar()
+{
+ static const int base = 10;
+ static const char fmt = 'g';
+ static const int prec = -1;
+
+ QFETCH(QString, pattern);
+ QFETCH(QList<QVariant>, replaceValues);
+ QFETCH(IntList, widths);
+ QFETCH(QString, fillChars);
+ QFETCH(QString, expected);
+ QCOMPARE(replaceValues.count(), fillChars.count());
+ QCOMPARE(replaceValues.count(), widths.count());
+
+ QString actual = pattern;
+ for (int i=0; i<replaceValues.count(); ++i) {
+ const QVariant &var = replaceValues.at(i);
+ const int width = widths.at(i);
+ const QChar &fillChar = fillChars.at(i);
+ switch (var.type()) {
+ case QVariant::String: actual = actual.arg(var.toString(), width, fillChar); break;
+ case QVariant::Int: actual = actual.arg(var.toInt(), width, base, fillChar); break;
+ case QVariant::UInt: actual = actual.arg(var.toUInt(), width, base, fillChar); break;
+ case QVariant::Double: actual = actual.arg(var.toDouble(), width, fmt, prec, fillChar); break;
+ case QVariant::LongLong: actual = actual.arg(var.toLongLong(), width, base, fillChar); break;
+ case QVariant::ULongLong: actual = actual.arg(var.toULongLong(), width, base, fillChar); break;
+ default: QVERIFY(0); break;
+ }
+ }
+
+ QCOMPARE(actual, expected);
+}
+
+static inline int sign(int x)
+{
+ return x == 0 ? 0 : (x < 0 ? -1 : 1);
+}
+
+void tst_QString::compare_data()
+{
+ QTest::addColumn<QString>("s1");
+ QTest::addColumn<QString>("s2");
+ QTest::addColumn<int>("csr"); // case sensitive result
+ QTest::addColumn<int>("cir"); // case insensitive result
+
+
+ // null strings
+ QTest::newRow("data0") << QString("") << QString("") << 0 << 0;
+ QTest::newRow("data1") << QString("a") << QString("") << 1 << 1;
+ QTest::newRow("data2") << QString("") << QString("a") << -1 << -1;
+
+ // equal length
+ QTest::newRow("data3") << QString("abc") << QString("abc") << 0 << 0;
+ QTest::newRow("data4") << QString("abC") << QString("abc") << -1 << 0;
+ QTest::newRow("data5") << QString("abc") << QString("abC") << 1 << 0;
+
+ // different length
+ QTest::newRow("data6") << QString("abcdef") << QString("abc") << 1 << 1;
+ QTest::newRow("data6") << QString("abCdef") << QString("abc") << -1 << 1;
+ QTest::newRow("data7") << QString("abc") << QString("abcdef") << -1 << -1;
+
+ QString upper;
+ upper += QChar(QChar::highSurrogate(0x10400));
+ upper += QChar(QChar::lowSurrogate(0x10400));
+ QString lower;
+ lower += QChar(QChar::highSurrogate(0x10428));
+ lower += QChar(QChar::lowSurrogate(0x10428));
+ QTest::newRow("data8") << upper << lower << -1 << 0;
+
+ // embedded nulls
+ // These dont work as of now. Its OK that these dont work since \0 is not a valid unicode
+ /*QTest::newRow("data9") << QString(QByteArray("\0", 1)) << QString(QByteArray("\0", 1)) << 0 << 0;
+ QTest::newRow("data10") << QString(QByteArray("\0", 1)) << QString("") << 1 << 1;
+ QTest::newRow("data11") << QString("") << QString(QByteArray("\0", 1)) << -1 << -1;
+ QTest::newRow("data12") << QString("ab\0c") << QString(QByteArray("ab\0c", 4)) << 0 << 0;
+ QTest::newRow("data13") << QString(QByteArray("ab\0c", 4)) << QString("abc") << -1 << -1;
+ QTest::newRow("data14") << QString("abc") << QString(QByteArray("ab\0c", 4)) << 1 << 1;*/
+}
+
+static bool isLatin(const QString &s)
+{
+ for (int i = 0; i < s.length(); ++i)
+ if (s.at(i).unicode() > 0xff)
+ return false;
+ return true;
+}
+
+void tst_QString::compare()
+{
+ QFETCH(QString, s1);
+ QFETCH(QString, s2);
+ QFETCH(int, csr);
+ QFETCH(int, cir);
+
+ QStringRef r1(&s1, 0, s1.length());
+ QStringRef r2(&s2, 0, s2.length());
+
+ QCOMPARE(sign(QString::compare(s1, s2)), csr);
+ QCOMPARE(sign(QStringRef::compare(r1, r2)), csr);
+ QCOMPARE(sign(s1.compare(s2)), csr);
+ QCOMPARE(sign(s1.compare(r2)), csr);
+ QCOMPARE(sign(r1.compare(r2)), csr);
+
+ QCOMPARE(sign(s1.compare(s2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(s1.compare(s2, Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(s1.compare(r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(s1.compare(r2, Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(r1.compare(r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(r1.compare(r2, Qt::CaseInsensitive)), cir);
+
+ QCOMPARE(sign(QString::compare(s1, s2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(QString::compare(s1, s2, Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(QString::compare(s1, r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(QString::compare(s1, r2, Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(QStringRef::compare(r1, r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(QStringRef::compare(r1, r2, Qt::CaseInsensitive)), cir);
+
+ if (!cir) {
+ QCOMPARE(s1.toCaseFolded(), s2.toCaseFolded());
+ }
+
+ if (isLatin(s2)) {
+ QCOMPARE(sign(QString::compare(s1, QLatin1String(s2.toLatin1()))), csr);
+ QCOMPARE(sign(QString::compare(s1, QLatin1String(s2.toLatin1()), Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(QStringRef::compare(r1, QLatin1String(s2.toLatin1()))), csr);
+ QCOMPARE(sign(QStringRef::compare(r1, QLatin1String(s2.toLatin1()), Qt::CaseInsensitive)), cir);
+ }
+
+ if (isLatin(s1)) {
+ QCOMPARE(sign(QString::compare(QLatin1String(s1.toLatin1()), s2)), csr);
+ QCOMPARE(sign(QString::compare(QLatin1String(s1.toLatin1()), s2, Qt::CaseInsensitive)), cir);
+ }
+}
+
+void tst_QString::resizeAfterFromRawData()
+{
+ QString buffer("hello world");
+
+ QString array = QString::fromRawData(buffer.constData(), buffer.size());
+ QVERIFY(array.constData() == buffer.constData());
+ array.resize(5);
+ QVERIFY(array.constData() == buffer.constData());
+}
+
+void tst_QString::resizeAfterReserve()
+{
+
+ QString s;
+ s.reserve(100);
+
+ s += "hello world";
+
+ // resize should not affect capacity
+ s.resize(s.size());
+ QVERIFY(s.capacity() == 100);
+
+ // but squeeze does
+ s.squeeze();
+ QVERIFY(s.capacity() == s.size());
+
+ // clear does too
+ s.clear();
+ QVERIFY(s.capacity() == 0);
+
+ // test resize(0) border case
+ s.reserve(100);
+ s += "hello world";
+ s.resize(0);
+ QVERIFY(s.capacity() == 100);
+}
+
+void tst_QString::resizeWithNegative() const
+{
+ {
+ QString string(QLatin1String("input"));
+ string.resize(-1);
+ QCOMPARE(string, QString());
+ }
+
+ {
+ QString string(QLatin1String("input"));
+ string.resize(-9099);
+ QCOMPARE(string, QString());
+ }
+
+ {
+ /* Example code from customer. */
+ QString s(QLatin1String("hola"));
+ s.reserve(1);
+ s.resize(-1);
+ QCOMPARE(s, QString());
+ }
+}
+
+void tst_QString::truncateWithNegative() const
+{
+ {
+ QString string(QLatin1String("input"));
+ string.truncate(-1);
+ QCOMPARE(string, QString());
+ }
+
+ {
+ QString string(QLatin1String("input"));
+ string.truncate(-9099);
+ QCOMPARE(string, QString());
+ }
+
+ {
+ /* Example code from customer. */
+ QString test(QLatin1String("c"));
+
+ test.replace(QRegExp(QLatin1String("c")), QLatin1String("z"));
+ test.truncate(-1);
+ QCOMPARE(test, QString());
+ }
+}
+
+void tst_QString::QCharRefMutableUnicode() const
+{
+ QString str;
+ str.resize(3);
+ str[0].unicode() = 115;
+ str[1].unicode() = 116;
+ str[2].unicode() = 114;
+
+ QCOMPARE(str, QString::fromLatin1("str"));
+}
+
+void tst_QString::QCharRefDetaching() const
+{
+ {
+ QString str = QString::fromLatin1("str");
+ QString copy;
+ copy[0] = QLatin1Char('S');
+
+ QCOMPARE(str, QString::fromLatin1("str"));
+ }
+
+ {
+ ushort buf[] = { 's', 't', 'r' };
+ QString str = QString::fromRawData((const QChar *)buf, 3);
+ str[0] = QLatin1Char('S');
+
+ QCOMPARE(buf[0], ushort('s'));
+ }
+
+ {
+ static const ushort buf[] = { 's', 't', 'r' };
+ QString str = QString::fromRawData((const QChar *)buf, 3);
+
+ // this causes a crash in most systems if the detaching doesn't work
+ str[0] = QLatin1Char('S');
+
+ QCOMPARE(buf[0], ushort('s'));
+ }
+}
+
+void tst_QString::sprintfZU() const
+{
+ {
+ QString string;
+ size_t s = 6;
+ string.sprintf("%zu", s);
+ QCOMPARE(string, QString::fromLatin1("6"));
+ }
+
+ {
+ QString string;
+ string.sprintf("%s\n", "foo");
+ QCOMPARE(string, QString::fromLatin1("foo\n"));
+ }
+
+ {
+ /* This code crashed. I don't know how to reduce it further. In other words,
+ * both %zu and %s needs to be present. */
+ size_t s = 6;
+ QString string;
+ string.sprintf("%zu%s", s, "foo");
+ QCOMPARE(string, QString::fromLatin1("6foo"));
+ }
+
+ {
+ size_t s = 6;
+ QString string;
+ string.sprintf("%zu %s\n", s, "foo");
+ QCOMPARE(string, QString::fromLatin1("6 foo\n"));
+ }
+}
+
+void tst_QString::repeatedSignature() const
+{
+ /* repated() should be a const member. */
+ const QString string;
+ string.repeated(3);
+}
+
+void tst_QString::repeated() const
+{
+ QFETCH(QString, string);
+ QFETCH(QString, expected);
+ QFETCH(int, count);
+
+ QCOMPARE(string.repeated(count), expected);
+}
+
+void tst_QString::repeated_data() const
+{
+ QTest::addColumn<QString>("string" );
+ QTest::addColumn<QString>("expected" );
+ QTest::addColumn<int>("count" );
+
+ /* Empty strings. */
+ QTest::newRow("")
+ << QString()
+ << QString()
+ << 0;
+
+ QTest::newRow("")
+ << QString()
+ << QString()
+ << -1004;
+
+ QTest::newRow("")
+ << QString()
+ << QString()
+ << 1;
+
+ QTest::newRow("")
+ << QString()
+ << QString()
+ << 5;
+
+ /* On simple string. */
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString()
+ << -1004;
+
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString()
+ << -1;
+
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString()
+ << 0;
+
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString(QLatin1String("abc"))
+ << 1;
+
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString(QLatin1String("abcabc"))
+ << 2;
+
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString(QLatin1String("abcabcabc"))
+ << 3;
+
+ QTest::newRow("")
+ << QString(QLatin1String("abc"))
+ << QString(QLatin1String("abcabcabcabc"))
+ << 4;
+}
+
+void tst_QString::task262677remove()
+{
+ QString driveName = QLatin1String("V:\\blahblah\\more_blahblah\\");
+ driveName.remove(2, INT_MAX); // should be "V:" - instead, it's "V::\\blahblah\\more_blahblah\\"
+ QVERIFY(driveName == QLatin1String("V:"));
+}
+
+void tst_QString::QTBUG10404_compareRef()
+{
+ QString a = "ABCDEFGH";
+
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QLatin1String("BC")), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QLatin1String("BCD")) < 0);
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QLatin1String("Bc"), Qt::CaseInsensitive), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QLatin1String("bCD"), Qt::CaseInsensitive) < 0);
+
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QString::fromLatin1("BC")), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QString::fromLatin1("BCD")) < 0);
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QString::fromLatin1("Bc"), Qt::CaseInsensitive), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QString::fromLatin1("bCD"), Qt::CaseInsensitive) < 0);
+
+ QCOMPARE(QString::fromLatin1("BC").compare(QStringRef(&a, 1, 2)), 0);
+ QVERIFY(QString::fromLatin1("BCD").compare(QStringRef(&a, 1, 2)) > 0);
+ QCOMPARE(QString::fromLatin1("Bc").compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive), 0);
+ QVERIFY(QString::fromLatin1("bCD").compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive) > 0);
+
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 2)), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 3)) < 0);
+ QCOMPARE(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive), 0);
+ QVERIFY(QStringRef(&a, 1, 2).compare(QStringRef(&a, 1, 3), Qt::CaseInsensitive) < 0);
+
+ QString a2 = "ABCDEFGh";
+ QCOMPARE(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 2)), 0);
+ QVERIFY(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 3)) < 0);
+ QCOMPARE(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 2), Qt::CaseInsensitive), 0);
+ QVERIFY(QStringRef(&a2, 1, 2).compare(QStringRef(&a, 1, 3), Qt::CaseInsensitive) < 0);
+}
+
+void tst_QString::QTBUG9281_arg_locale()
+{
+ QLocale l(QLocale::English, QLocale::UnitedKingdom);
+ l.setNumberOptions(QLocale::OmitGroupSeparator);
+ QLocale::setDefault(l);
+ QString str("*%L1*%L2*");
+ str = str.arg(123456).arg(1234.56);
+ QCOMPARE(str, QString::fromLatin1("*123456*1234.56*"));
+ QLocale::setDefault(QLocale::C);
+}
+
+void tst_QString::toUpperLower_icu()
+{
+#ifndef QT_USE_ICU
+ QSKIP("Qt was built without ICU support", SkipAll);
+#endif
+
+ QString s = QString::fromLatin1("i");
+
+ QCOMPARE(s.toUpper(), QString::fromLatin1("I"));
+ QCOMPARE(s.toLower(), QString::fromLatin1("i"));
+
+ QLocale::setDefault(QLocale(QLocale::Turkish, QLocale::Turkey));
+
+ QCOMPARE(s.toUpper(), QString::fromLatin1("I"));
+ QCOMPARE(s.toLower(), QString::fromLatin1("i"));
+
+ // turkish locale has a capital I with a dot (U+0130, utf8 c4b0)
+ QLocale l;
+
+ QCOMPARE(l.toUpper(s), QString::fromUtf8("\xc4\xb0"));
+ QCOMPARE(l.toLower(QString::fromUtf8("\xc4\xb0")), s);
+
+ // nothing should happen here
+ QCOMPARE(l.toLower(s), s);
+ QCOMPARE(l.toUpper(QString::fromLatin1("I")), QString::fromLatin1("I"));
+
+ // U+0131, utf8 c4b1 is the lower-case i without a dot
+ QString sup = QString::fromUtf8("\xc4\xb1");
+
+ QCOMPARE(l.toUpper(sup), QString::fromLatin1("I"));
+ QCOMPARE(l.toLower(QString::fromLatin1("I")), sup);
+
+ // nothing should happen here
+ QCOMPARE(l.toLower(sup), sup);
+ QCOMPARE(l.toLower(QString::fromLatin1("i")), QString::fromLatin1("i"));
+
+ // the cleanup function will restore the default locale
+}
+
+void tst_QString::literals()
+{
+#if defined(QT_UNICODE_LITERAL) && (defined(Q_COMPILER_LAMBDA) || defined(Q_CC_GNU))
+ QString str(QStringLiteral("abcd"));
+
+ QVERIFY(str.length() == 4);
+ QVERIFY(str == QLatin1String("abcd"));
+ QVERIFY(str.data_ptr()->ref == -1);
+ QVERIFY(str.data_ptr()->offset == 0);
+
+ const QChar *s = str.constData();
+ QString str2 = str;
+ QVERIFY(str2.constData() == s);
+
+ // detach on non const access
+ QVERIFY(str.data() != s);
+
+ QVERIFY(str2.constData() == s);
+ QVERIFY(str2.data() != s);
+
+#else
+ QSKIP("Only tested on c++0x compliant compiler or gcc", SkipAll);
+#endif
+}
+
+
+QTEST_APPLESS_MAIN(tst_QString)
+
+#include "tst_qstring.moc"
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder.pro b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder.pro
new file mode 100644
index 0000000000..d73d541502
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder.pro
@@ -0,0 +1,6 @@
+TEMPLATE=subdirs
+SUBDIRS= \
+ qstringbuilder1 \
+ qstringbuilder2 \
+ qstringbuilder3 \
+ qstringbuilder4
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/qstringbuilder1.pro b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/qstringbuilder1.pro
new file mode 100644
index 0000000000..dc9062f4da
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/qstringbuilder1.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+
+QT = core
+
+SOURCES += tst_qstringbuilder1.cpp
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp
new file mode 100644
index 0000000000..4d453b0585
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp
@@ -0,0 +1,239 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#define LITERAL "some literal"
+#define LITERAL_LEN (sizeof(LITERAL)-1)
+#define LITERAL_EXTRA "some literal" "EXTRA"
+
+// "some literal", but replacing all vocals by their umlauted UTF-8 string :)
+#define UTF8_LITERAL "s\xc3\xb6m\xc3\xab l\xc3\xaft\xc3\xabr\xc3\xa4l"
+#define UTF8_LITERAL_LEN (sizeof(UTF8_LITERAL)-1)
+#define UTF8_LITERAL_EXTRA "s\xc3\xb6m\xc3\xab l\xc3\xaft\xc3\xabr\xc3\xa4l" "EXTRA"
+
+#ifdef Q_COMPILER_UNICODE_STRINGS
+// "some literal", but replacing all vocals by their umlauted UTF-8 string :)
+#define UNICODE_LITERAL u"s\u00f6m\u00eb l\u00eft\u00ebr\u00e4l"
+#define UNICODE_LITERAL_LEN ((sizeof(UNICODE_LITERAL) - 1) / 2)
+#define UNICODE_LITERAL_EXTRA u"s\u00f6m\u00eb l\u00eft\u00ebr\u00e4l" "EXTRA"
+#endif
+
+//fix for gcc4.0: if the operator+ does not exist without QT_USE_FAST_OPERATOR_PLUS
+#ifndef QT_USE_FAST_CONCATENATION
+#define Q %
+#else
+#define Q P
+#endif
+
+void runScenario()
+{
+ // set codec for C strings to 0, enforcing Latin1
+ QTextCodec::setCodecForCStrings(0);
+ QVERIFY(!QTextCodec::codecForCStrings());
+
+ QLatin1Literal l1literal(LITERAL);
+ QLatin1String l1string(LITERAL);
+ QString string(l1string);
+ QStringRef stringref(&string, 2, 10);
+ QLatin1Char achar('c');
+ QString r2(QLatin1String(LITERAL LITERAL));
+ QString r3 = QString::fromUtf8(UTF8_LITERAL UTF8_LITERAL);
+ QString r;
+
+ r = l1literal Q l1literal;
+ QCOMPARE(r, r2);
+ r = string P string;
+ QCOMPARE(r, r2);
+ r = stringref Q stringref;
+ QCOMPARE(r, QString(stringref.toString() + stringref.toString()));
+ r = string Q l1literal;
+ QCOMPARE(r, r2);
+ r = string P l1string;
+ QCOMPARE(r, r2);
+ r = string Q QStringLiteral(LITERAL);
+ QCOMPARE(r, r2);
+ r = QStringLiteral(LITERAL) Q string;
+ QCOMPARE(r, r2);
+ r = l1string Q QStringLiteral(LITERAL);
+ QCOMPARE(r, r2);
+ r = string + achar;
+ QCOMPARE(r, QString(string P achar));
+ r = achar + string;
+ QCOMPARE(r, QString(achar P string));
+
+#ifdef Q_COMPILER_UNICODE_STRINGS
+ r = QStringLiteral(UNICODE_LITERAL);
+ r = r Q QStringLiteral(UNICODE_LITERAL);
+ QCOMPARE(r, r3);
+#endif
+
+#ifndef QT_NO_CAST_FROM_ASCII
+ r = string P LITERAL;
+ QCOMPARE(r, r2);
+ r = LITERAL P string;
+ QCOMPARE(r, r2);
+
+ QByteArray ba = QByteArray(LITERAL);
+ r = ba P string;
+ QCOMPARE(r, r2);
+ r = string P ba;
+ QCOMPARE(r, r2);
+
+ r = string P QByteArrayLiteral(LITERAL);
+ QCOMPARE(r, r2);
+ r = QByteArrayLiteral(LITERAL) P string;
+ QCOMPARE(r, r2);
+
+ static const char badata[] = LITERAL_EXTRA;
+ ba = QByteArray::fromRawData(badata, LITERAL_LEN);
+ r = ba P string;
+ QCOMPARE(r, r2);
+ r = string P ba;
+ QCOMPARE(r, r2);
+
+ // now test with codec for C strings set
+ QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
+ QVERIFY(QTextCodec::codecForCStrings());
+ QCOMPARE(QTextCodec::codecForCStrings()->name(), QByteArray("UTF-8"));
+
+ string = QString::fromUtf8(UTF8_LITERAL);
+ ba = UTF8_LITERAL;
+
+ r = string P UTF8_LITERAL;
+ QCOMPARE(r.size(), r3.size());
+ QCOMPARE(r, r3);
+ r = UTF8_LITERAL P string;
+ QCOMPARE(r, r3);
+ r = ba P string;
+ QCOMPARE(r, r3);
+ r = string P ba;
+ QCOMPARE(r, r3);
+
+ ba = QByteArray::fromRawData(UTF8_LITERAL_EXTRA, UTF8_LITERAL_LEN);
+ r = ba P string;
+ QCOMPARE(r, r3);
+ r = string P ba;
+ QCOMPARE(r, r3);
+
+ ba = QByteArray(); // empty
+ r = ba P string;
+ QCOMPARE(r, string);
+ r = string P ba;
+ QCOMPARE(r, string);
+
+ const char *zero = 0;
+ r = string P zero;
+ QCOMPARE(r, string);
+ r = zero P string;
+ QCOMPARE(r, string);
+#endif
+
+ string = QString::fromLatin1(LITERAL);
+ QCOMPARE(QByteArray(qPrintable(string P string)), QByteArray(string.toLatin1() + string.toLatin1()));
+
+
+
+ //QByteArray
+ {
+ QByteArray ba = LITERAL;
+ QByteArray superba = ba P ba P LITERAL;
+ QCOMPARE(superba, QByteArray(LITERAL LITERAL LITERAL));
+
+ ba = QByteArrayLiteral(LITERAL);
+ QCOMPARE(ba, QByteArray(LITERAL));
+ superba = ba P QByteArrayLiteral(LITERAL) P LITERAL;
+ QCOMPARE(superba, QByteArray(LITERAL LITERAL LITERAL));
+
+ QByteArray testWith0 = ba P "test\0with\0zero" P ba;
+ QCOMPARE(testWith0, QByteArray(LITERAL "test" LITERAL));
+
+ QByteArray ba2 = ba P '\0' + LITERAL;
+ QCOMPARE(ba2, QByteArray(LITERAL "\0" LITERAL, ba.size()*2+1));
+
+ const char *mmh = "test\0foo";
+ QCOMPARE(QByteArray(ba P mmh P ba), testWith0);
+
+ QByteArray raw = QByteArray::fromRawData(UTF8_LITERAL_EXTRA, UTF8_LITERAL_LEN);
+ QByteArray r = "hello" P raw;
+ QByteArray r2 = "hello" UTF8_LITERAL;
+ QCOMPARE(r, r2);
+ r2 = QByteArray("hello\0") P UTF8_LITERAL;
+ QCOMPARE(r, r2);
+
+ const char *zero = 0;
+ r = ba P zero;
+ QCOMPARE(r, ba);
+ r = zero P ba;
+ QCOMPARE(r, ba);
+ }
+
+ //operator QString +=
+ {
+ QString str = QString::fromUtf8(UTF8_LITERAL);
+ str += QLatin1String(LITERAL) P str;
+ QCOMPARE(str, QString::fromUtf8(UTF8_LITERAL LITERAL UTF8_LITERAL));
+#ifndef QT_NO_CAST_FROM_ASCII
+ str = (QString::fromUtf8(UTF8_LITERAL) += QLatin1String(LITERAL) P UTF8_LITERAL);
+ QCOMPARE(str, QString::fromUtf8(UTF8_LITERAL LITERAL UTF8_LITERAL));
+#endif
+ }
+
+ //operator QByteArray +=
+ {
+ QByteArray ba = UTF8_LITERAL;
+ ba += QByteArray(LITERAL) P UTF8_LITERAL;
+ QCOMPARE(ba, QByteArray(UTF8_LITERAL LITERAL UTF8_LITERAL));
+ ba += LITERAL P QByteArray::fromRawData(UTF8_LITERAL_EXTRA, UTF8_LITERAL_LEN);
+ QCOMPARE(ba, QByteArray(UTF8_LITERAL LITERAL UTF8_LITERAL LITERAL UTF8_LITERAL));
+ QByteArray withZero = QByteArray(LITERAL "\0" LITERAL, LITERAL_LEN*2+1);
+ QByteArray ba2 = withZero;
+ ba2 += ba2 P withZero;
+ QCOMPARE(ba2, QByteArray(withZero + withZero + withZero));
+#ifndef QT_NO_CAST_TO_ASCII
+ ba = UTF8_LITERAL;
+ ba2 = (ba += QLatin1String(LITERAL) + QString::fromUtf8(UTF8_LITERAL));
+ QCOMPARE(ba2, ba);
+ QCOMPARE(ba, QByteArray(UTF8_LITERAL LITERAL UTF8_LITERAL));
+#endif
+ }
+
+}
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/tst_qstringbuilder1.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/tst_qstringbuilder1.cpp
new file mode 100644
index 0000000000..134da1d877
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/tst_qstringbuilder1.cpp
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+// SCENARIO 1
+// this is the "no harm done" version. Only operator% is active,
+// with NO_CAST * defined
+#define P %
+#undef QT_USE_QSTRINGBUILDER
+#define QT_NO_CAST_FROM_ASCII
+#define QT_NO_CAST_TO_ASCII
+
+
+#include <QtTest/QtTest>
+
+//TESTED_CLASS=QStringBuilder
+//TESTED_FILES=qstringbuilder.cpp
+
+#define LITERAL "some literal"
+
+void runScenario(); // Defined in stringbuilder.cpp #included below.
+
+class tst_QStringBuilder1 : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void scenario() { runScenario(); }
+};
+
+#include "stringbuilder.cpp"
+#include "tst_qstringbuilder1.moc"
+
+QTEST_APPLESS_MAIN(tst_QStringBuilder1)
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/qstringbuilder2.pro b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/qstringbuilder2.pro
new file mode 100644
index 0000000000..a57c6f19f2
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/qstringbuilder2.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+
+QT = core
+
+SOURCES += tst_qstringbuilder2.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/tst_qstringbuilder2.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/tst_qstringbuilder2.cpp
new file mode 100644
index 0000000000..b74cea069d
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/tst_qstringbuilder2.cpp
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+// SCENARIO 2
+// this is the "full" version. Operator+ is replaced by a QStringBuilder
+// based version
+// with NO_CAST * defined
+#define P +
+#define QT_USE_QSTRINGBUILDER
+#define QT_NO_CAST_FROM_ASCII
+#define QT_NO_CAST_TO_ASCII
+
+
+#include <QtTest/QtTest>
+
+//TESTED_CLASS=QStringBuilder
+//TESTED_FILES=qstringbuilder.cpp
+
+#define LITERAL "some literal"
+
+void runScenario(); // Defined in stringbuilder.cpp #included below.
+
+class tst_QStringBuilder2 : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void scenario() { runScenario(); }
+};
+
+#include "../qstringbuilder1/stringbuilder.cpp"
+#include "tst_qstringbuilder2.moc"
+
+QTEST_APPLESS_MAIN(tst_QStringBuilder2)
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/qstringbuilder3.pro b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/qstringbuilder3.pro
new file mode 100644
index 0000000000..5aced7c258
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/qstringbuilder3.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+
+QT = core
+
+SOURCES += tst_qstringbuilder3.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/tst_qstringbuilder3.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/tst_qstringbuilder3.cpp
new file mode 100644
index 0000000000..0320ed293d
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/tst_qstringbuilder3.cpp
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+// SCENARIO 3
+// this is the "no harm done" version. Only operator% is active,
+// with NO_CAST * _not_ defined
+#define P %
+#undef QT_USE_QSTRINGBUILDER
+#undef QT_NO_CAST_FROM_ASCII
+#undef QT_NO_CAST_TO_ASCII
+
+
+#include <QtTest/QtTest>
+
+//TESTED_CLASS=QStringBuilder
+//TESTED_FILES=qstringbuilder.cpp
+
+#define LITERAL "some literal"
+
+void runScenario(); // Defined in stringbuilder.cpp #included below.
+
+class tst_QStringBuilder3 : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void scenario() { runScenario(); }
+};
+
+#include "../qstringbuilder1/stringbuilder.cpp"
+#include "tst_qstringbuilder3.moc"
+
+QTEST_APPLESS_MAIN(tst_QStringBuilder3)
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/qstringbuilder4.pro b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/qstringbuilder4.pro
new file mode 100644
index 0000000000..0532a9b925
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/qstringbuilder4.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+
+QT = core
+
+SOURCES += tst_qstringbuilder4.cpp
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/tst_qstringbuilder4.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/tst_qstringbuilder4.cpp
new file mode 100644
index 0000000000..7013780789
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/tst_qstringbuilder4.cpp
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+// SCENARIO 4
+// this is the "full" version. Operator+ is replaced by a QStringBuilder
+// based version
+// with NO_CAST * _not_ defined
+#define P +
+#define QT_USE_QSTRINGBUILDER
+#undef QT_NO_CAST_FROM_ASCII
+#undef QT_NO_CAST_TO_ASCII
+
+
+#include <QtTest/QtTest>
+
+//TESTED_CLASS=QStringBuilder
+//TESTED_FILES=qstringbuilder.cpp
+
+#define LITERAL "some literal"
+
+void runScenario(); // Defined in stringbuilder.cpp #included below.
+
+class tst_QStringBuilder4 : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void scenario() { runScenario(); }
+};
+
+#include "../qstringbuilder1/stringbuilder.cpp"
+#include "tst_qstringbuilder4.moc"
+
+QTEST_APPLESS_MAIN(tst_QStringBuilder4)
diff --git a/tests/auto/corelib/tools/qstringlist/.gitignore b/tests/auto/corelib/tools/qstringlist/.gitignore
new file mode 100644
index 0000000000..3e0cdc952f
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringlist/.gitignore
@@ -0,0 +1 @@
+tst_qstringlist
diff --git a/tests/auto/corelib/tools/qstringlist/qstringlist.pro b/tests/auto/corelib/tools/qstringlist/qstringlist.pro
new file mode 100644
index 0000000000..d82a3487fd
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringlist/qstringlist.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qstringlist.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qstringlist/tst_qstringlist.cpp b/tests/auto/corelib/tools/qstringlist/tst_qstringlist.cpp
new file mode 100644
index 0000000000..3342ec0d79
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringlist/tst_qstringlist.cpp
@@ -0,0 +1,338 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qregexp.h>
+#include <qstringlist.h>
+
+
+
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QStringList : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QStringList();
+ virtual ~tst_QStringList();
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void filter();
+ void replaceInStrings();
+ void removeDuplicates();
+ void removeDuplicates_data();
+ void contains();
+ void indexOf();
+ void lastIndexOf();
+
+ void indexOf_regExp();
+ void lastIndexOf_regExp();
+
+ void streamingOperator();
+ void join() const;
+ void join_data() const;
+ void joinEmptiness() const;
+
+ void initializeList() const;
+};
+
+extern const char email[];
+
+tst_QStringList::tst_QStringList()
+{
+}
+
+tst_QStringList::~tst_QStringList()
+{
+}
+
+void tst_QStringList::init()
+{
+}
+
+void tst_QStringList::cleanup()
+{
+}
+
+void tst_QStringList::indexOf_regExp()
+{
+ QStringList list;
+ list << "harald" << "trond" << "vohi" << "harald";
+
+ QRegExp re(".*o.*");
+
+ QCOMPARE(list.indexOf(re), 1);
+ QCOMPARE(list.indexOf(re, 2), 2);
+ QCOMPARE(list.indexOf(re, 3), -1);
+
+ QCOMPARE(list.indexOf(QRegExp(".*x.*")), -1);
+ QCOMPARE(list.indexOf(re, -1), -1);
+ QCOMPARE(list.indexOf(re, -3), 1);
+ QCOMPARE(list.indexOf(re, -9999), 1);
+ QCOMPARE(list.indexOf(re, 9999), -1);
+}
+
+void tst_QStringList::lastIndexOf_regExp()
+{
+ QStringList list;
+ list << "harald" << "trond" << "vohi" << "harald";
+
+ QRegExp re(".*o.*");
+
+ QCOMPARE(list.lastIndexOf(re), 2);
+ QCOMPARE(list.lastIndexOf(re, 2), 2);
+ QCOMPARE(list.lastIndexOf(re, 1), 1);
+
+ QCOMPARE(list.lastIndexOf(QRegExp(".*x.*")), -1);
+ QCOMPARE(list.lastIndexOf(re, -1), 2);
+ QCOMPARE(list.lastIndexOf(re, -3), 1);
+ QCOMPARE(list.lastIndexOf(re, -9999), -1);
+ QCOMPARE(list.lastIndexOf(re, 9999), 2);
+}
+
+void tst_QStringList::indexOf()
+{
+ QStringList list;
+ list << "harald" << "trond" << "vohi" << "harald";
+
+ QCOMPARE(list.indexOf("harald"), 0);
+ QCOMPARE(list.indexOf("trond"), 1);
+ QCOMPARE(list.indexOf("vohi"), 2);
+ QCOMPARE(list.indexOf("harald", 1), 3);
+
+ QCOMPARE(list.indexOf("hans"), -1);
+ QCOMPARE(list.indexOf("trond", 2), -1);
+ QCOMPARE(list.indexOf("harald", -1), 3);
+ QCOMPARE(list.indexOf("vohi", -3), 2);
+}
+
+void tst_QStringList::lastIndexOf()
+{
+ QStringList list;
+ list << "harald" << "trond" << "vohi" << "harald";
+
+ QCOMPARE(list.lastIndexOf("harald"), 3);
+ QCOMPARE(list.lastIndexOf("trond"), 1);
+ QCOMPARE(list.lastIndexOf("vohi"), 2);
+ QCOMPARE(list.lastIndexOf("harald", 2), 0);
+
+ QCOMPARE(list.lastIndexOf("hans"), -1);
+ QCOMPARE(list.lastIndexOf("vohi", 1), -1);
+ QCOMPARE(list.lastIndexOf("vohi", -1), 2);
+ QCOMPARE(list.lastIndexOf("vohi", -3), -1);
+}
+
+void tst_QStringList::filter()
+{
+ QStringList list1, list2;
+ list1 << "Bill Gates" << "Joe Blow" << "Bill Clinton";
+ list1 = list1.filter( "Bill" );
+ list2 << "Bill Gates" << "Bill Clinton";
+ QCOMPARE( list1, list2 );
+
+ QStringList list3, list4;
+ list3 << "Bill Gates" << "Joe Blow" << "Bill Clinton";
+ list3 = list3.filter( QRegExp("[i]ll") );
+ list4 << "Bill Gates" << "Bill Clinton";
+ QCOMPARE( list3, list4 );
+}
+
+void tst_QStringList::replaceInStrings()
+{
+ QStringList list1, list2;
+ list1 << "alpha" << "beta" << "gamma" << "epsilon";
+ list1.replaceInStrings( "a", "o" );
+ list2 << "olpho" << "beto" << "gommo" << "epsilon";
+ QCOMPARE( list1, list2 );
+
+ QStringList list3, list4;
+ list3 << "alpha" << "beta" << "gamma" << "epsilon";
+ list3.replaceInStrings( QRegExp("^a"), "o" );
+ list4 << "olpha" << "beta" << "gamma" << "epsilon";
+ QCOMPARE( list3, list4 );
+
+ QStringList list5, list6;
+ list5 << "Bill Clinton" << "Gates, Bill";
+ list6 << "Bill Clinton" << "Bill Gates";
+ list5.replaceInStrings( QRegExp("^(.*), (.*)$"), "\\2 \\1" );
+ QCOMPARE( list5, list6 );
+}
+
+void tst_QStringList::contains()
+{
+ QStringList list;
+ list << "arthur" << "Arthur" << "arthuR" << "ARTHUR" << "Dent" << "Hans Dent";
+
+ QVERIFY(list.contains("arthur"));
+ QVERIFY(!list.contains("ArthuR"));
+ QVERIFY(!list.contains("Hans"));
+ QVERIFY(list.contains("arthur", Qt::CaseInsensitive));
+ QVERIFY(list.contains("ArthuR", Qt::CaseInsensitive));
+ QVERIFY(list.contains("ARTHUR", Qt::CaseInsensitive));
+ QVERIFY(list.contains("dent", Qt::CaseInsensitive));
+ QVERIFY(!list.contains("hans", Qt::CaseInsensitive));
+}
+
+void tst_QStringList::removeDuplicates_data()
+{
+ QTest::addColumn<QString>("before");
+ QTest::addColumn<QString>("after");
+ QTest::addColumn<int>("count");
+
+ QTest::newRow("empty") << "Hello,Hello" << "Hello" << 1;
+ QTest::newRow("empty") << "Hello,World" << "Hello,World" << 0;
+}
+
+void tst_QStringList::removeDuplicates()
+{
+ QFETCH(QString, before);
+ QFETCH(QString, after);
+ QFETCH(int, count);
+
+ QStringList lbefore = before.split(',');
+ QStringList lafter = after.split(',');
+ int removed = lbefore.removeDuplicates();
+
+ QCOMPARE(removed, count);
+ QCOMPARE(lbefore, lafter);
+}
+
+void tst_QStringList::streamingOperator()
+{
+ QStringList list;
+ list << "hei";
+ list << list << "hopp" << list;
+
+ QCOMPARE(list, QStringList()
+ << "hei" << "hei" << "hopp"
+ << "hei" << "hei" << "hopp");
+
+ QStringList list2;
+ list2 << "adam";
+
+ QStringList list3;
+ list3 << "eva";
+
+ QCOMPARE(list2 << list3, QStringList() << "adam" << "eva");
+}
+
+void tst_QStringList::join() const
+{
+ QFETCH(QStringList, input);
+ QFETCH(QString, separator);
+ QFETCH(QString, expectedResult);
+
+ QCOMPARE(input.join(separator), expectedResult);
+}
+
+void tst_QStringList::join_data() const
+{
+ QTest::addColumn<QStringList>("input");
+ QTest::addColumn<QString>("separator");
+ QTest::addColumn<QString>("expectedResult");
+
+ QTest::newRow("")
+ << QStringList()
+ << QString()
+ << QString();
+
+ QTest::newRow("")
+ << QStringList()
+ << QString(QLatin1String("separator"))
+ << QString();
+
+ QTest::newRow("")
+ << QStringList("one")
+ << QString(QLatin1String("separator"))
+ << QString("one");
+
+ QTest::newRow("")
+ << QStringList("one")
+ << QString(QLatin1String("separator"))
+ << QString("one");
+
+
+ QTest::newRow("")
+ << (QStringList()
+ << QLatin1String("a")
+ << QLatin1String("b"))
+ << QString(QLatin1String(" "))
+ << QString("a b");
+
+ QTest::newRow("")
+ << (QStringList()
+ << QLatin1String("a")
+ << QLatin1String("b")
+ << QLatin1String("c"))
+ << QString(QLatin1String(" "))
+ << QString("a b c");
+}
+
+void tst_QStringList::joinEmptiness() const
+{
+ QStringList list;
+ QString string = list.join(QString());
+
+ QVERIFY(string.isEmpty());
+ QVERIFY(string.isNull());
+}
+
+void tst_QStringList::initializeList() const
+{
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+ QStringList v1{QLatin1String("hello"),"world",QString::fromLatin1("plop")};
+ QCOMPARE(v1, (QStringList() << "hello" << "world" << "plop"));
+ QCOMPARE(v1, (QStringList{"hello","world","plop"}));
+#else
+ QSKIP("Require C++0x support, pass the right flag to the compiler", SkipAll);
+#endif
+}
+
+QTEST_APPLESS_MAIN(tst_QStringList)
+#include "tst_qstringlist.moc"
diff --git a/tests/auto/corelib/tools/qstringmatcher/.gitignore b/tests/auto/corelib/tools/qstringmatcher/.gitignore
new file mode 100644
index 0000000000..3c7caf8490
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringmatcher/.gitignore
@@ -0,0 +1 @@
+tst_qstringmatcher
diff --git a/tests/auto/corelib/tools/qstringmatcher/qstringmatcher.pro b/tests/auto/corelib/tools/qstringmatcher/qstringmatcher.pro
new file mode 100644
index 0000000000..c5249ec84a
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringmatcher/qstringmatcher.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+SOURCES += tst_qstringmatcher.cpp
+QT = core
+DEFINES += QT_NO_CAST_TO_ASCII
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qstringmatcher/tst_qstringmatcher.cpp b/tests/auto/corelib/tools/qstringmatcher/tst_qstringmatcher.cpp
new file mode 100644
index 0000000000..9dade954f8
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringmatcher/tst_qstringmatcher.cpp
@@ -0,0 +1,163 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qstringmatcher.h>
+
+class tst_QStringMatcher : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void qstringmatcher_data();
+ void qstringmatcher();
+ void caseSensitivity();
+ void indexIn_data();
+ void indexIn();
+ void setCaseSensitivity_data();
+ void setCaseSensitivity();
+ void assignOperator();
+};
+
+// Subclass that exposes the protected functions.
+class SubQStringMatcher : public QStringMatcher
+{
+public:
+};
+
+void tst_QStringMatcher::qstringmatcher_data()
+{
+}
+
+void tst_QStringMatcher::qstringmatcher()
+{
+ SubQStringMatcher matcher;
+ QCOMPARE(matcher.caseSensitivity(), Qt::CaseSensitive);
+ QCOMPARE(matcher.indexIn("foo", 1), 1);
+ QCOMPARE(matcher.pattern(), QString());
+}
+
+// public Qt::CaseSensitivity caseSensitivity() const
+void tst_QStringMatcher::caseSensitivity()
+{
+ SubQStringMatcher matcher;
+
+ matcher.setCaseSensitivity(Qt::CaseSensitive);
+ QCOMPARE(matcher.caseSensitivity(), Qt::CaseSensitive);
+ matcher.setCaseSensitivity(Qt::CaseInsensitive);
+ QCOMPARE(matcher.caseSensitivity(), Qt::CaseInsensitive);
+}
+
+void tst_QStringMatcher::indexIn_data()
+{
+ QTest::addColumn<QString>("needle");
+ QTest::addColumn<QString>("haystack");
+ QTest::addColumn<int>("from");
+ QTest::addColumn<int>("indexIn");
+ QTest::newRow("empty") << QString() << QString("foo") << 0 << 0;
+ QTest::newRow("empty") << QString() << QString("foo") << 10 << -1;
+ QTest::newRow("empty") << QString() << QString("foo") << -10 << 0;
+
+ QTest::newRow("simple") << QString("a") << QString("foo") << 0 << -1;
+ QTest::newRow("simple") << QString("a") << QString("bar") << 0 << 1;
+ QTest::newRow("harder") << QString("foo") << QString("slkdf sldkjf slakjf lskd ffools ldjf") << 0 << 26;
+ QTest::newRow("harder") << QString("foo") << QString("slkdf sldkjf slakjf lskd ffools ldjf") << 20 << 26;
+ QTest::newRow("harder") << QString("foo") << QString("slkdf sldkjf slakjf lskd ffools ldjf") << 26 << 26;
+ QTest::newRow("harder") << QString("foo") << QString("slkdf sldkjf slakjf lskd ffools ldjf") << 27 << -1;
+}
+
+void tst_QStringMatcher::indexIn()
+{
+ QFETCH(QString, needle);
+ QFETCH(QString, haystack);
+ QFETCH(int, from);
+ QFETCH(int, indexIn);
+
+ SubQStringMatcher matcher;
+ matcher.setPattern(needle);
+
+ QCOMPARE(matcher.indexIn(haystack, from), indexIn);
+}
+
+void tst_QStringMatcher::setCaseSensitivity_data()
+{
+ QTest::addColumn<QString>("needle");
+ QTest::addColumn<QString>("haystack");
+ QTest::addColumn<int>("from");
+ QTest::addColumn<int>("indexIn");
+ QTest::addColumn<int>("cs");
+
+ QTest::newRow("overshot") << QString("foo") << QString("baFooz foo bar") << 14 << -1 << (int) Qt::CaseSensitive;
+ QTest::newRow("sensitive") << QString("foo") << QString("baFooz foo bar") << 1 << 7 << (int) Qt::CaseSensitive;
+ QTest::newRow("insensitive") << QString("foo") << QString("baFooz foo bar") << 1 << 2 << (int) Qt::CaseInsensitive;
+}
+
+void tst_QStringMatcher::setCaseSensitivity()
+{
+ QFETCH(QString, needle);
+ QFETCH(QString, haystack);
+ QFETCH(int, from);
+ QFETCH(int, indexIn);
+ QFETCH(int, cs);
+
+ SubQStringMatcher matcher;
+ matcher.setPattern(needle);
+ matcher.setCaseSensitivity(static_cast<Qt::CaseSensitivity> (cs));
+
+ QCOMPARE(matcher.indexIn(haystack, from), indexIn);
+}
+
+void tst_QStringMatcher::assignOperator()
+{
+ QString needle("d");
+ QString hayStack("abcdef");
+ QStringMatcher m1(needle);
+ QCOMPARE(m1.indexIn(hayStack), 3);
+
+ QStringMatcher m2 = m1;
+ QCOMPARE(m2.pattern(), needle);
+ QCOMPARE(m2.indexIn(hayStack), 3);
+}
+
+QTEST_MAIN(tst_QStringMatcher)
+#include "tst_qstringmatcher.moc"
+
diff --git a/tests/auto/corelib/tools/qstringref/qstringref.pro b/tests/auto/corelib/tools/qstringref/qstringref.pro
new file mode 100644
index 0000000000..34f2de46ae
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringref/qstringref.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+SOURCES += tst_qstringref.cpp
+
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp b/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp
new file mode 100644
index 0000000000..dbf8ee73fc
--- /dev/null
+++ b/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp
@@ -0,0 +1,881 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <qstringlist.h>
+#include <qvariant.h>
+
+#include <qlocale.h>
+#include <locale.h>
+
+Q_DECLARE_METATYPE(qlonglong)
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+
+class tst_QStringRef : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QStringRef();
+ virtual ~tst_QStringRef();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void endsWith();
+ void startsWith();
+ void contains();
+ void count();
+ void lastIndexOf_data();
+ void lastIndexOf();
+ void indexOf_data();
+ void indexOf();
+ void indexOf2_data();
+ void indexOf2();
+ void length_data();
+ void length();
+ void isEmpty();
+ void compare_data();
+ void compare();
+ void operator_eqeq_nullstring();
+};
+
+static QStringRef emptyRef()
+{
+ static const QString empty("");
+ return empty.midRef(0);
+}
+
+#define CREATE_REF(string) \
+ const QString padded = QString::fromLatin1(" %1 ").arg(string); \
+ QStringRef ref = padded.midRef(1, padded.size() - 2);
+
+typedef QList<int> IntList;
+
+Q_DECLARE_METATYPE(QList<QVariant>)
+Q_DECLARE_METATYPE(IntList)
+
+// This next bit is needed for the NAN and INF in string -> number conversion tests
+#include <float.h>
+#include <limits.h>
+#include <math.h>
+#if defined(Q_WS_WIN)
+# include <windows.h>
+// mingw defines NAN and INFINITY to 0/0 and x/0
+# if defined(Q_CC_GNU)
+# undef NAN
+# undef INFINITY
+# else
+# define isnan(d) _isnan(d)
+# endif
+#endif
+#if defined(Q_OS_MAC) && !defined isnan
+#define isnan(d) __isnand(d)
+#endif
+#if defined(Q_OS_SOLARIS)
+# include <ieeefp.h>
+#endif
+#if defined(Q_OS_OSF) && (defined(__DECC) || defined(__DECCXX))
+# define INFINITY DBL_INFINITY
+# define NAN DBL_QNAN
+#endif
+#if defined(Q_OS_IRIX) && defined(Q_CC_GNU)
+# include <ieeefp.h>
+# define isnan(d) isnand(d)
+#endif
+
+enum {
+ LittleEndian,
+ BigEndian
+#ifdef Q_BYTE_ORDER
+# if Q_BYTE_ORDER == Q_BIG_ENDIAN
+ , ByteOrder = BigEndian
+# elif Q_BYTE_ORDER == Q_LITTLE_ENDIAN
+ , ByteOrder = LittleEndian
+# else
+# error "undefined byte order"
+# endif
+};
+#else
+};
+static const unsigned int one = 1;
+static const bool ByteOrder = ((*((unsigned char *) &one) == 0) ? BigEndian : LittleEndian);
+#endif
+#if !defined(INFINITY)
+static const unsigned char be_inf_bytes[] = { 0x7f, 0xf0, 0, 0, 0, 0, 0,0 };
+static const unsigned char le_inf_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f };
+static inline double inf()
+{
+ if (ByteOrder == BigEndian)
+ return *reinterpret_cast<const double *>(be_inf_bytes);
+ return *reinterpret_cast<const double *>(le_inf_bytes);
+}
+# define INFINITY (::inf())
+#endif
+#if !defined(NAN)
+static const unsigned char be_nan_bytes[] = { 0x7f, 0xf8, 0, 0, 0, 0, 0,0 };
+static const unsigned char le_nan_bytes[] = { 0, 0, 0, 0, 0, 0, 0xf8, 0x7f };
+static inline double nan()
+{
+ if (ByteOrder == BigEndian)
+ return *reinterpret_cast<const double *>(be_nan_bytes);
+ return *reinterpret_cast<const double *>(le_nan_bytes);
+}
+# define NAN (::nan())
+#endif
+
+tst_QStringRef::tst_QStringRef()
+{
+}
+
+tst_QStringRef::~tst_QStringRef()
+{
+}
+
+void tst_QStringRef::init()
+{
+}
+
+void tst_QStringRef::cleanup()
+{
+ QLocale::setDefault(QString(QLatin1Char('C')));
+}
+
+void tst_QStringRef::length_data()
+{
+ QTest::addColumn<QString>("s1");
+ QTest::addColumn<int>("res");
+
+ QTest::newRow("data0") << QString("Test") << 4;
+ QTest::newRow("data1") << QString("The quick brown fox jumps over the lazy dog") << 43;
+ QTest::newRow("data2") << QString() << 0;
+ QTest::newRow("data3") << QString("A") << 1;
+ QTest::newRow("data4") << QString("AB") << 2;
+ QTest::newRow("data5") << QString("AB\n") << 3;
+ QTest::newRow("data6") << QString("AB\nC") << 4;
+ QTest::newRow("data7") << QString("\n") << 1;
+ QTest::newRow("data8") << QString("\nA") << 2;
+ QTest::newRow("data9") << QString("\nAB") << 3;
+ QTest::newRow("data10") << QString("\nAB\nCDE") << 7;
+ QTest::newRow("data11") << QString("shdnftrheid fhgnt gjvnfmd chfugkh bnfhg thgjf vnghturkf chfnguh bjgnfhvygh hnbhgutjfv dhdnjds dcjs d") << 100;
+ QTest::newRow("data12") << QString("") << 0;
+}
+
+
+void tst_QStringRef::length()
+{
+ QFETCH(QString, s1);
+ CREATE_REF(s1);
+ QTEST(ref.length(), "res");
+}
+
+
+void tst_QStringRef::isEmpty()
+{
+ QStringRef a;
+ QVERIFY(a.isEmpty());
+ QVERIFY(emptyRef().isEmpty());
+ CREATE_REF("Not empty");
+ QVERIFY(!ref.isEmpty());
+}
+
+void tst_QStringRef::indexOf_data()
+{
+ QTest::addColumn<QString>("haystack");
+ QTest::addColumn<QString>("needle");
+ QTest::addColumn<int>("startpos");
+ QTest::addColumn<bool>("bcs");
+ QTest::addColumn<int>("resultpos");
+
+ QTest::newRow("data0") << QString("abc") << QString("a") << 0 << true << 0;
+ QTest::newRow("data1") << QString("abc") << QString("a") << 0 << false << 0;
+ QTest::newRow("data2") << QString("abc") << QString("A") << 0 << true << -1;
+ QTest::newRow("data3") << QString("abc") << QString("A") << 0 << false << 0;
+ QTest::newRow("data4") << QString("abc") << QString("a") << 1 << true << -1;
+ QTest::newRow("data5") << QString("abc") << QString("a") << 1 << false << -1;
+ QTest::newRow("data6") << QString("abc") << QString("A") << 1 << true << -1;
+ QTest::newRow("data7") << QString("abc") << QString("A") << 1 << false << -1;
+ QTest::newRow("data8") << QString("abc") << QString("b") << 0 << true << 1;
+ QTest::newRow("data9") << QString("abc") << QString("b") << 0 << false << 1;
+ QTest::newRow("data10") << QString("abc") << QString("B") << 0 << true << -1;
+ QTest::newRow("data11") << QString("abc") << QString("B") << 0 << false << 1;
+ QTest::newRow("data12") << QString("abc") << QString("b") << 1 << true << 1;
+ QTest::newRow("data13") << QString("abc") << QString("b") << 1 << false << 1;
+ QTest::newRow("data14") << QString("abc") << QString("B") << 1 << true << -1;
+ QTest::newRow("data15") << QString("abc") << QString("B") << 1 << false << 1;
+ QTest::newRow("data16") << QString("abc") << QString("b") << 2 << true << -1;
+ QTest::newRow("data17") << QString("abc") << QString("b") << 2 << false << -1;
+
+ QTest::newRow("data20") << QString("ABC") << QString("A") << 0 << true << 0;
+ QTest::newRow("data21") << QString("ABC") << QString("A") << 0 << false << 0;
+ QTest::newRow("data22") << QString("ABC") << QString("a") << 0 << true << -1;
+ QTest::newRow("data23") << QString("ABC") << QString("a") << 0 << false << 0;
+ QTest::newRow("data24") << QString("ABC") << QString("A") << 1 << true << -1;
+ QTest::newRow("data25") << QString("ABC") << QString("A") << 1 << false << -1;
+ QTest::newRow("data26") << QString("ABC") << QString("a") << 1 << true << -1;
+ QTest::newRow("data27") << QString("ABC") << QString("a") << 1 << false << -1;
+ QTest::newRow("data28") << QString("ABC") << QString("B") << 0 << true << 1;
+ QTest::newRow("data29") << QString("ABC") << QString("B") << 0 << false << 1;
+ QTest::newRow("data30") << QString("ABC") << QString("b") << 0 << true << -1;
+ QTest::newRow("data31") << QString("ABC") << QString("b") << 0 << false << 1;
+ QTest::newRow("data32") << QString("ABC") << QString("B") << 1 << true << 1;
+ QTest::newRow("data33") << QString("ABC") << QString("B") << 1 << false << 1;
+ QTest::newRow("data34") << QString("ABC") << QString("b") << 1 << true << -1;
+ QTest::newRow("data35") << QString("ABC") << QString("b") << 1 << false << 1;
+ QTest::newRow("data36") << QString("ABC") << QString("B") << 2 << true << -1;
+ QTest::newRow("data37") << QString("ABC") << QString("B") << 2 << false << -1;
+
+ QTest::newRow("data40") << QString("aBc") << QString("bc") << 0 << true << -1;
+ QTest::newRow("data41") << QString("aBc") << QString("Bc") << 0 << true << 1;
+ QTest::newRow("data42") << QString("aBc") << QString("bC") << 0 << true << -1;
+ QTest::newRow("data43") << QString("aBc") << QString("BC") << 0 << true << -1;
+ QTest::newRow("data44") << QString("aBc") << QString("bc") << 0 << false << 1;
+ QTest::newRow("data45") << QString("aBc") << QString("Bc") << 0 << false << 1;
+ QTest::newRow("data46") << QString("aBc") << QString("bC") << 0 << false << 1;
+ QTest::newRow("data47") << QString("aBc") << QString("BC") << 0 << false << 1;
+ QTest::newRow("data48") << QString("AbC") << QString("bc") << 0 << true << -1;
+ QTest::newRow("data49") << QString("AbC") << QString("Bc") << 0 << true << -1;
+ QTest::newRow("data50") << QString("AbC") << QString("bC") << 0 << true << 1;
+ QTest::newRow("data51") << QString("AbC") << QString("BC") << 0 << true << -1;
+ QTest::newRow("data52") << QString("AbC") << QString("bc") << 0 << false << 1;
+ QTest::newRow("data53") << QString("AbC") << QString("Bc") << 0 << false << 1;
+
+ QTest::newRow("data54") << QString("AbC") << QString("bC") << 0 << false << 1;
+ QTest::newRow("data55") << QString("AbC") << QString("BC") << 0 << false << 1;
+ QTest::newRow("data56") << QString("AbC") << QString("BC") << 1 << false << 1;
+ QTest::newRow("data57") << QString("AbC") << QString("BC") << 2 << false << -1;
+#if 0
+ QTest::newRow("null-in-null") << QString() << QString() << 0 << false << 0;
+ QTest::newRow("empty-in-null") << QString() << QString("") << 0 << false << 0;
+ QTest::newRow("null-in-empty") << QString("") << QString() << 0 << false << 0;
+ QTest::newRow("empty-in-empty") << QString("") << QString("") << 0 << false << 0;
+#endif
+
+
+ QString s1 = "abc";
+ s1 += QChar(0xb5);
+ QString s2;
+ s2 += QChar(0x3bc);
+ QTest::newRow("data58") << QString(s1) << QString(s2) << 0 << false << 3;
+ s2.prepend("C");
+ QTest::newRow("data59") << QString(s1) << QString(s2) << 0 << false << 2;
+
+ QString veryBigHaystack(500, 'a');
+ veryBigHaystack += 'B';
+ QTest::newRow("BoyerMooreStressTest") << veryBigHaystack << veryBigHaystack << 0 << true << 0;
+ QTest::newRow("BoyerMooreStressTest2") << veryBigHaystack + 'c' << veryBigHaystack << 0 << true << 0;
+ QTest::newRow("BoyerMooreStressTest3") << 'c' + veryBigHaystack << veryBigHaystack << 0 << true << 1;
+ QTest::newRow("BoyerMooreStressTest4") << veryBigHaystack << veryBigHaystack + 'c' << 0 << true << -1;
+ QTest::newRow("BoyerMooreStressTest5") << veryBigHaystack << 'c' + veryBigHaystack << 0 << true << -1;
+ QTest::newRow("BoyerMooreStressTest6") << 'd' + veryBigHaystack << 'c' + veryBigHaystack << 0 << true << -1;
+ QTest::newRow("BoyerMooreStressTest6") << veryBigHaystack + 'c' << 'c' + veryBigHaystack << 0 << true << -1;
+
+ QTest::newRow("BoyerMooreInsensitiveStressTest") << veryBigHaystack << veryBigHaystack << 0 << false << 0;
+
+}
+
+void tst_QStringRef::indexOf()
+{
+ QFETCH(QString, haystack);
+ QFETCH(QString, needle);
+ QFETCH(int, startpos);
+ QFETCH(bool, bcs);
+ QFETCH(int, resultpos);
+
+ const QString haystackPadded = QString::fromLatin1(" %1 ").arg(haystack);
+ const QString needlePadded = QString::fromLatin1(" %1 ").arg(needle);
+ const QStringRef haystackRef(&haystackPadded, 1, haystack.size());
+ const QStringRef needleRef(&needlePadded, 1, needle.size());
+
+ Qt::CaseSensitivity cs = bcs ? Qt::CaseSensitive : Qt::CaseInsensitive;
+
+ QCOMPARE(haystack.indexOf(needle, startpos, cs), resultpos);
+ QCOMPARE(haystackRef.indexOf(needle, startpos, cs), resultpos);
+ QCOMPARE(haystackRef.indexOf(needleRef, startpos, cs), resultpos);
+ QCOMPARE(haystack.indexOf(needleRef, startpos, cs), resultpos);
+
+ if (cs == Qt::CaseSensitive) {
+ QCOMPARE(haystack.indexOf(needle, startpos), resultpos);
+ QCOMPARE(haystackRef.indexOf(needle, startpos), resultpos);
+ QCOMPARE(haystackRef.indexOf(needleRef, startpos), resultpos);
+ QCOMPARE(haystack.indexOf(needleRef, startpos), resultpos);
+ if (startpos == 0) {
+ QCOMPARE(haystack.indexOf(needle), resultpos);
+ QCOMPARE(haystackRef.indexOf(needle), resultpos);
+ QCOMPARE(haystackRef.indexOf(needleRef), resultpos);
+ QCOMPARE(haystack.indexOf(needleRef), resultpos);
+ }
+ }
+ if (needle.size() == 1) {
+ QCOMPARE(needle.at(0), needleRef.at(0));
+ QCOMPARE(haystack.indexOf(needleRef.at(0), startpos, cs), resultpos);
+ QCOMPARE(haystackRef.indexOf(needle.at(0), startpos, cs), resultpos);
+ QCOMPARE(haystackRef.indexOf(needleRef.at(0), startpos, cs), resultpos);
+ QCOMPARE(haystack.indexOf(needleRef.at(0), startpos ,cs), resultpos);
+ }
+}
+
+void tst_QStringRef::indexOf2_data()
+{
+ QTest::addColumn<QString>("haystack");
+ QTest::addColumn<QString>("needle");
+ QTest::addColumn<int>("resultpos");
+
+ QTest::newRow("data0") << QString() << QString() << 0;
+ QTest::newRow("data1") << QString() << QString("") << 0;
+ QTest::newRow("data2") << QString("") << QString() << 0;
+ QTest::newRow("data3") << QString("") << QString("") << 0;
+ QTest::newRow("data4") << QString() << QString("a") << -1;
+ QTest::newRow("data5") << QString() << QString("abcdefg") << -1;
+ QTest::newRow("data6") << QString("") << QString("a") << -1;
+ QTest::newRow("data7") << QString("") << QString("abcdefg") << -1;
+
+ QTest::newRow("data8") << QString("a") << QString() << 0;
+ QTest::newRow("data9") << QString("a") << QString("") << 0;
+ QTest::newRow("data10") << QString("a") << QString("a") << 0;
+ QTest::newRow("data11") << QString("a") << QString("b") << -1;
+ QTest::newRow("data12") << QString("a") << QString("abcdefg") << -1;
+ QTest::newRow("data13") << QString("ab") << QString() << 0;
+ QTest::newRow("data14") << QString("ab") << QString("") << 0;
+ QTest::newRow("data15") << QString("ab") << QString("a") << 0;
+ QTest::newRow("data16") << QString("ab") << QString("b") << 1;
+ QTest::newRow("data17") << QString("ab") << QString("ab") << 0;
+ QTest::newRow("data18") << QString("ab") << QString("bc") << -1;
+ QTest::newRow("data19") << QString("ab") << QString("abcdefg") << -1;
+
+ QTest::newRow("data30") << QString("abc") << QString("a") << 0;
+ QTest::newRow("data31") << QString("abc") << QString("b") << 1;
+ QTest::newRow("data32") << QString("abc") << QString("c") << 2;
+ QTest::newRow("data33") << QString("abc") << QString("d") << -1;
+ QTest::newRow("data34") << QString("abc") << QString("ab") << 0;
+ QTest::newRow("data35") << QString("abc") << QString("bc") << 1;
+ QTest::newRow("data36") << QString("abc") << QString("cd") << -1;
+ QTest::newRow("data37") << QString("abc") << QString("ac") << -1;
+
+ // sizeof(whale) > 32
+ QString whale = "a5zby6cx7dw8evf9ug0th1si2rj3qkp4lomn";
+ QString minnow = "zby";
+ QTest::newRow("data40") << whale << minnow << 2;
+ QTest::newRow("data41") << (whale + whale) << minnow << 2;
+ QTest::newRow("data42") << (minnow + whale) << minnow << 0;
+ QTest::newRow("data43") << whale << whale << 0;
+ QTest::newRow("data44") << (whale + whale) << whale << 0;
+ QTest::newRow("data45") << whale << (whale + whale) << -1;
+ QTest::newRow("data46") << (whale + whale) << (whale + whale) << 0;
+ QTest::newRow("data47") << (whale + whale) << (whale + minnow) << -1;
+ QTest::newRow("data48") << (minnow + whale) << whale << (int)minnow.length();
+}
+
+void tst_QStringRef::indexOf2()
+{
+ QFETCH(QString, haystack);
+ QFETCH(QString, needle);
+ QFETCH(int, resultpos);
+
+ const QString haystackPadded = QString::fromLatin1(" %1 ").arg(haystack);
+ const QString needlePadded = QString::fromLatin1(" %1 ").arg(needle);
+ const QStringRef haystackRef(&haystackPadded, 1, haystack.size());
+ const QStringRef needleRef(&needlePadded, 1, needle.size());
+
+
+ int got;
+
+ QCOMPARE(haystack.indexOf(needleRef, 0, Qt::CaseSensitive), resultpos);
+ QCOMPARE(haystackRef.indexOf(needle, 0, Qt::CaseSensitive), resultpos);
+ QCOMPARE(haystackRef.indexOf(needleRef, 0, Qt::CaseSensitive), resultpos);
+ QCOMPARE(haystack.indexOf(needleRef, 0, Qt::CaseInsensitive), resultpos);
+ QCOMPARE(haystackRef.indexOf(needle, 0, Qt::CaseInsensitive), resultpos);
+ QCOMPARE(haystackRef.indexOf(needleRef, 0, Qt::CaseInsensitive), resultpos);
+ if (needle.length() > 0) {
+ got = haystackRef.lastIndexOf(needle, -1, Qt::CaseSensitive);
+ QVERIFY(got == resultpos || (resultpos >= 0 && got >= resultpos));
+ got = haystackRef.lastIndexOf(needle, -1, Qt::CaseInsensitive);
+ QVERIFY(got == resultpos || (resultpos >= 0 && got >= resultpos));
+
+ got = haystack.lastIndexOf(needleRef, -1, Qt::CaseSensitive);
+ QVERIFY(got == resultpos || (resultpos >= 0 && got >= resultpos));
+ got = haystack.lastIndexOf(needleRef, -1, Qt::CaseInsensitive);
+ QVERIFY(got == resultpos || (resultpos >= 0 && got >= resultpos));
+
+ got = haystackRef.lastIndexOf(needleRef, -1, Qt::CaseSensitive);
+ QVERIFY(got == resultpos || (resultpos >= 0 && got >= resultpos));
+ got = haystackRef.lastIndexOf(needleRef, -1, Qt::CaseInsensitive);
+ QVERIFY(got == resultpos || (resultpos >= 0 && got >= resultpos));
+ }
+}
+
+void tst_QStringRef::lastIndexOf_data()
+{
+ QTest::addColumn<QString>("haystack");
+ QTest::addColumn<QString>("needle");
+ QTest::addColumn<int>("from");
+ QTest::addColumn<int>("expected");
+ QTest::addColumn<bool>("caseSensitive");
+
+ QString a = "ABCDEFGHIEfGEFG";
+
+ QTest::newRow("-1") << a << "G" << a.size() - 1 << 14 << true;
+ QTest::newRow("1") << a << "G" << - 1 << 14 << true;
+ QTest::newRow("2") << a << "G" << -3 << 11 << true;
+ QTest::newRow("3") << a << "G" << -5 << 6 << true;
+ QTest::newRow("4") << a << "G" << 14 << 14 << true;
+ QTest::newRow("5") << a << "G" << 13 << 11 << true;
+ QTest::newRow("6") << a << "B" << a.size() - 1 << 1 << true;
+ QTest::newRow("6") << a << "B" << - 1 << 1 << true;
+ QTest::newRow("7") << a << "B" << 1 << 1 << true;
+ QTest::newRow("8") << a << "B" << 0 << -1 << true;
+
+ QTest::newRow("9") << a << "G" << -1 << a.size()-1 << true;
+ QTest::newRow("10") << a << "G" << a.size()-1 << a.size()-1 << true;
+ QTest::newRow("11") << a << "G" << a.size() << -1 << true;
+ QTest::newRow("12") << a << "A" << 0 << 0 << true;
+ QTest::newRow("13") << a << "A" << -1*a.size() << 0 << true;
+
+ QTest::newRow("15") << a << "efg" << 0 << -1 << false;
+ QTest::newRow("16") << a << "efg" << a.size() << -1 << false;
+ QTest::newRow("17") << a << "efg" << -1 * a.size() << -1 << false;
+ QTest::newRow("19") << a << "efg" << a.size() - 1 << 12 << false;
+ QTest::newRow("20") << a << "efg" << 12 << 12 << false;
+ QTest::newRow("21") << a << "efg" << -12 << -1 << false;
+ QTest::newRow("22") << a << "efg" << 11 << 9 << false;
+
+ QTest::newRow("24") << "" << "asdf" << -1 << -1 << false;
+ QTest::newRow("25") << "asd" << "asdf" << -1 << -1 << false;
+ QTest::newRow("26") << "" << QString() << -1 << -1 << false;
+
+ QTest::newRow("27") << a << "" << a.size() << a.size() << false;
+ QTest::newRow("28") << a << "" << a.size() + 10 << -1 << false;
+}
+
+void tst_QStringRef::lastIndexOf()
+{
+ QFETCH(QString, haystack);
+ QFETCH(QString, needle);
+ QFETCH(int, from);
+ QFETCH(int, expected);
+ QFETCH(bool, caseSensitive);
+
+ const QString haystackPadded = QString::fromLatin1(" %1 ").arg(haystack);
+ const QString needlePadded = QString::fromLatin1(" %1 ").arg(needle);
+ const QStringRef haystackRef(&haystackPadded, 1, haystack.size());
+ const QStringRef needleRef(&needlePadded, 1, needle.size());
+
+ Qt::CaseSensitivity cs = (caseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive);
+
+ QCOMPARE(haystack.lastIndexOf(needleRef, from, cs), expected);
+ QCOMPARE(haystackRef.lastIndexOf(needle, from, cs), expected);
+ QCOMPARE(haystackRef.lastIndexOf(needleRef, from, cs), expected);
+
+
+ if (cs == Qt::CaseSensitive) {
+ QCOMPARE(haystack.lastIndexOf(needleRef, from), expected);
+ QCOMPARE(haystackRef.lastIndexOf(needle, from), expected);
+ QCOMPARE(haystackRef.lastIndexOf(needleRef, from), expected);
+
+ if (from == -1) {
+ QCOMPARE(haystack.lastIndexOf(needleRef), expected);
+ QCOMPARE(haystackRef.lastIndexOf(needle), expected);
+ QCOMPARE(haystackRef.lastIndexOf(needleRef), expected);
+
+ }
+ }
+ if (needle.size() == 1) {
+ QCOMPARE(haystack.lastIndexOf(needleRef.at(0), from), expected);
+ QCOMPARE(haystackRef.lastIndexOf(needle.at(0), from), expected);
+ QCOMPARE(haystackRef.lastIndexOf(needleRef.at(0), from), expected);
+ }
+}
+
+void tst_QStringRef::count()
+{
+ const QString a = QString::fromLatin1("ABCDEFGHIEfGEFG"); // 15 chars
+ CREATE_REF(a);
+ QCOMPARE(ref.count('A'),1);
+ QCOMPARE(ref.count('Z'),0);
+ QCOMPARE(ref.count('E'),3);
+ QCOMPARE(ref.count('F'),2);
+ QCOMPARE(ref.count('F',Qt::CaseInsensitive),3);
+ QCOMPARE(ref.count("FG"),2);
+ QCOMPARE(ref.count("FG",Qt::CaseInsensitive),3);
+ QCOMPARE(ref.count(QString(), Qt::CaseInsensitive), 16);
+ QCOMPARE(ref.count("", Qt::CaseInsensitive), 16);
+}
+
+void tst_QStringRef::contains()
+{
+ const QString a = QString::fromLatin1("ABCDEFGHIEfGEFG"); // 15 chars
+ CREATE_REF(a);
+ QVERIFY(ref.contains('A'));
+ QVERIFY(!ref.contains('Z'));
+ QVERIFY(ref.contains('E'));
+ QVERIFY(ref.contains('F'));
+ QVERIFY(ref.contains('F',Qt::CaseInsensitive));
+ QVERIFY(ref.contains("FG"));
+ QVERIFY(ref.contains(QString("FG").midRef(0)));
+ const QString ref2 = QString::fromLatin1(" FG ");
+ QVERIFY(ref.contains(ref2.midRef(1, 2),Qt::CaseInsensitive));
+ QVERIFY(ref.contains(QString(), Qt::CaseInsensitive));
+ QVERIFY(ref.contains("", Qt::CaseInsensitive)); // apparently
+}
+
+void tst_QStringRef::startsWith()
+{
+ {
+ const QString a = QString::fromLatin1("AB");
+ CREATE_REF(a);
+ QVERIFY(ref.startsWith("A"));
+ QVERIFY(ref.startsWith("AB"));
+ QVERIFY(!ref.startsWith("C"));
+ QVERIFY(!ref.startsWith("ABCDEF"));
+ QVERIFY(ref.startsWith(""));
+ QVERIFY(ref.startsWith(QString::null));
+ QVERIFY(ref.startsWith('A'));
+ QVERIFY(ref.startsWith(QLatin1Char('A')));
+ QVERIFY(ref.startsWith(QChar('A')));
+ QVERIFY(!ref.startsWith('C'));
+ QVERIFY(!ref.startsWith(QChar()));
+ QVERIFY(!ref.startsWith(QLatin1Char(0)));
+
+ QVERIFY(ref.startsWith(QLatin1String("A")));
+ QVERIFY(ref.startsWith(QLatin1String("AB")));
+ QVERIFY(!ref.startsWith(QLatin1String("C")));
+ QVERIFY(!ref.startsWith(QLatin1String("ABCDEF")));
+ QVERIFY(ref.startsWith(QLatin1String("")));
+ QVERIFY(ref.startsWith(QLatin1String(0)));
+
+ QVERIFY(ref.startsWith("A", Qt::CaseSensitive));
+ QVERIFY(ref.startsWith("A", Qt::CaseInsensitive));
+ QVERIFY(!ref.startsWith("a", Qt::CaseSensitive));
+ QVERIFY(ref.startsWith("a", Qt::CaseInsensitive));
+ QVERIFY(!ref.startsWith("aB", Qt::CaseSensitive));
+ QVERIFY(ref.startsWith("aB", Qt::CaseInsensitive));
+ QVERIFY(!ref.startsWith("C", Qt::CaseSensitive));
+ QVERIFY(!ref.startsWith("C", Qt::CaseInsensitive));
+ QVERIFY(!ref.startsWith("c", Qt::CaseSensitive));
+ QVERIFY(!ref.startsWith("c", Qt::CaseInsensitive));
+ QVERIFY(!ref.startsWith("abcdef", Qt::CaseInsensitive));
+ QVERIFY(ref.startsWith("", Qt::CaseInsensitive));
+ QVERIFY(ref.startsWith(QString::null, Qt::CaseInsensitive));
+ QVERIFY(ref.startsWith('a', Qt::CaseInsensitive));
+ QVERIFY(ref.startsWith('A', Qt::CaseInsensitive));
+ QVERIFY(ref.startsWith(QLatin1Char('a'), Qt::CaseInsensitive));
+ QVERIFY(ref.startsWith(QChar('a'), Qt::CaseInsensitive));
+ QVERIFY(!ref.startsWith('c', Qt::CaseInsensitive));
+ QVERIFY(!ref.startsWith(QChar(), Qt::CaseInsensitive));
+ QVERIFY(!ref.startsWith(QLatin1Char(0), Qt::CaseInsensitive));
+
+ QVERIFY(ref.startsWith(QLatin1String("A"), Qt::CaseSensitive));
+ QVERIFY(ref.startsWith(QLatin1String("A"), Qt::CaseInsensitive));
+ QVERIFY(!ref.startsWith(QLatin1String("a"), Qt::CaseSensitive));
+ QVERIFY(ref.startsWith(QLatin1String("a"), Qt::CaseInsensitive));
+ QVERIFY(!ref.startsWith(QLatin1String("aB"), Qt::CaseSensitive));
+ QVERIFY(ref.startsWith(QLatin1String("aB"), Qt::CaseInsensitive));
+ QVERIFY(!ref.startsWith(QLatin1String("C"), Qt::CaseSensitive));
+ QVERIFY(!ref.startsWith(QLatin1String("C"), Qt::CaseInsensitive));
+ QVERIFY(!ref.startsWith(QLatin1String("c"), Qt::CaseSensitive));
+ QVERIFY(!ref.startsWith(QLatin1String("c"), Qt::CaseInsensitive));
+ QVERIFY(!ref.startsWith(QLatin1String("abcdef"), Qt::CaseInsensitive));
+ QVERIFY(ref.startsWith(QLatin1String(""), Qt::CaseInsensitive));
+ QVERIFY(ref.startsWith(QLatin1String(0), Qt::CaseInsensitive));
+ QVERIFY(ref.startsWith('A', Qt::CaseSensitive));
+ QVERIFY(ref.startsWith(QLatin1Char('A'), Qt::CaseSensitive));
+ QVERIFY(ref.startsWith(QChar('A'), Qt::CaseSensitive));
+ QVERIFY(!ref.startsWith('a', Qt::CaseSensitive));
+ QVERIFY(!ref.startsWith(QChar(), Qt::CaseSensitive));
+ QVERIFY(!ref.startsWith(QLatin1Char(0), Qt::CaseSensitive));
+ }
+ {
+ const QString a = QString::fromLatin1("");
+ CREATE_REF(a);
+ QVERIFY(ref.startsWith(""));
+ QVERIFY(ref.startsWith(QString::null));
+ QVERIFY(!ref.startsWith("ABC"));
+
+ QVERIFY(ref.startsWith(QLatin1String("")));
+ QVERIFY(ref.startsWith(QLatin1String(0)));
+ QVERIFY(!ref.startsWith(QLatin1String("ABC")));
+
+ QVERIFY(!ref.startsWith(QLatin1Char(0)));
+ QVERIFY(!ref.startsWith(QLatin1Char('x')));
+ QVERIFY(!ref.startsWith(QChar()));
+ }
+ {
+ const QStringRef ref;
+ QVERIFY(!ref.startsWith(""));
+ QVERIFY(ref.startsWith(QString::null));
+ QVERIFY(!ref.startsWith("ABC"));
+
+ QVERIFY(!ref.startsWith(QLatin1String("")));
+ QVERIFY(ref.startsWith(QLatin1String(0)));
+ QVERIFY(!ref.startsWith(QLatin1String("ABC")));
+
+ QVERIFY(!ref.startsWith(QLatin1Char(0)));
+ QVERIFY(!ref.startsWith(QLatin1Char('x')));
+ QVERIFY(!ref.startsWith(QChar()));
+ }
+}
+
+void tst_QStringRef::endsWith()
+{
+ {
+ const QString a = QString::fromLatin1("AB");
+ CREATE_REF(a);
+ QVERIFY(ref.endsWith("B"));
+ QVERIFY(ref.endsWith("AB"));
+ QVERIFY(!ref.endsWith("C"));
+ QVERIFY(!ref.endsWith("ABCDEF"));
+ QVERIFY(ref.endsWith(""));
+ QVERIFY(ref.endsWith(QString::null));
+ QVERIFY(ref.endsWith('B'));
+ QVERIFY(ref.endsWith(QLatin1Char('B')));
+ QVERIFY(ref.endsWith(QChar('B')));
+ QVERIFY(!ref.endsWith('C'));
+ QVERIFY(!ref.endsWith(QChar()));
+ QVERIFY(!ref.endsWith(QLatin1Char(0)));
+
+ QVERIFY(ref.endsWith(QLatin1String("B")));
+ QVERIFY(ref.endsWith(QLatin1String("AB")));
+ QVERIFY(!ref.endsWith(QLatin1String("C")));
+ QVERIFY(!ref.endsWith(QLatin1String("ABCDEF")));
+ QVERIFY(ref.endsWith(QLatin1String("")));
+ QVERIFY(ref.endsWith(QLatin1String(0)));
+
+ QVERIFY(ref.endsWith("B", Qt::CaseSensitive));
+ QVERIFY(ref.endsWith("B", Qt::CaseInsensitive));
+ QVERIFY(!ref.endsWith("b", Qt::CaseSensitive));
+ QVERIFY(ref.endsWith("b", Qt::CaseInsensitive));
+ QVERIFY(!ref.endsWith("aB", Qt::CaseSensitive));
+ QVERIFY(ref.endsWith("aB", Qt::CaseInsensitive));
+ QVERIFY(!ref.endsWith("C", Qt::CaseSensitive));
+ QVERIFY(!ref.endsWith("C", Qt::CaseInsensitive));
+ QVERIFY(!ref.endsWith("c", Qt::CaseSensitive));
+ QVERIFY(!ref.endsWith("c", Qt::CaseInsensitive));
+ QVERIFY(!ref.endsWith("abcdef", Qt::CaseInsensitive));
+ QVERIFY(ref.endsWith("", Qt::CaseInsensitive));
+ QVERIFY(ref.endsWith(QString::null, Qt::CaseInsensitive));
+ QVERIFY(ref.endsWith('b', Qt::CaseInsensitive));
+ QVERIFY(ref.endsWith('B', Qt::CaseInsensitive));
+ QVERIFY(ref.endsWith(QLatin1Char('b'), Qt::CaseInsensitive));
+ QVERIFY(ref.endsWith(QChar('b'), Qt::CaseInsensitive));
+ QVERIFY(!ref.endsWith('c', Qt::CaseInsensitive));
+ QVERIFY(!ref.endsWith(QChar(), Qt::CaseInsensitive));
+ QVERIFY(!ref.endsWith(QLatin1Char(0), Qt::CaseInsensitive));
+
+ QVERIFY(ref.endsWith(QLatin1String("B"), Qt::CaseSensitive));
+ QVERIFY(ref.endsWith(QLatin1String("B"), Qt::CaseInsensitive));
+ QVERIFY(!ref.endsWith(QLatin1String("b"), Qt::CaseSensitive));
+ QVERIFY(ref.endsWith(QLatin1String("b"), Qt::CaseInsensitive));
+ QVERIFY(!ref.endsWith(QLatin1String("aB"), Qt::CaseSensitive));
+ QVERIFY(ref.endsWith(QLatin1String("aB"), Qt::CaseInsensitive));
+ QVERIFY(!ref.endsWith(QLatin1String("C"), Qt::CaseSensitive));
+ QVERIFY(!ref.endsWith(QLatin1String("C"), Qt::CaseInsensitive));
+ QVERIFY(!ref.endsWith(QLatin1String("c"), Qt::CaseSensitive));
+ QVERIFY(!ref.endsWith(QLatin1String("c"), Qt::CaseInsensitive));
+ QVERIFY(!ref.endsWith(QLatin1String("abcdef"), Qt::CaseInsensitive));
+ QVERIFY(ref.endsWith(QLatin1String(""), Qt::CaseInsensitive));
+ QVERIFY(ref.endsWith(QLatin1String(0), Qt::CaseInsensitive));
+ QVERIFY(ref.endsWith('B', Qt::CaseSensitive));
+ QVERIFY(ref.endsWith(QLatin1Char('B'), Qt::CaseSensitive));
+ QVERIFY(ref.endsWith(QChar('B'), Qt::CaseSensitive));
+ QVERIFY(!ref.endsWith('b', Qt::CaseSensitive));
+ QVERIFY(!ref.endsWith(QChar(), Qt::CaseSensitive));
+ QVERIFY(!ref.endsWith(QLatin1Char(0), Qt::CaseSensitive));
+
+ }
+ {
+ const QString a = QString::fromLatin1("");
+ CREATE_REF(a);
+ QVERIFY(ref.endsWith(""));
+ QVERIFY(ref.endsWith(QString::null));
+ QVERIFY(!ref.endsWith("ABC"));
+ QVERIFY(!ref.endsWith(QLatin1Char(0)));
+ QVERIFY(!ref.endsWith(QLatin1Char('x')));
+ QVERIFY(!ref.endsWith(QChar()));
+
+ QVERIFY(ref.endsWith(QLatin1String("")));
+ QVERIFY(ref.endsWith(QLatin1String(0)));
+ QVERIFY(!ref.endsWith(QLatin1String("ABC")));
+ }
+
+ {
+ QStringRef ref;
+ QVERIFY(!ref.endsWith(""));
+ QVERIFY(ref.endsWith(QString::null));
+ QVERIFY(!ref.endsWith("ABC"));
+
+ QVERIFY(!ref.endsWith(QLatin1String("")));
+ QVERIFY(ref.endsWith(QLatin1String(0)));
+ QVERIFY(!ref.endsWith(QLatin1String("ABC")));
+
+ QVERIFY(!ref.endsWith(QLatin1Char(0)));
+ QVERIFY(!ref.endsWith(QLatin1Char('x')));
+ QVERIFY(!ref.endsWith(QChar()));
+ }
+}
+
+void tst_QStringRef::operator_eqeq_nullstring()
+{
+ /* Some of these might not be all that logical but it's the behaviour we've had since 3.0.0
+ so we should probably stick with it. */
+
+ QVERIFY(QStringRef() == "");
+ QVERIFY("" == QStringRef());
+
+ QVERIFY(QString("") == "");
+ QVERIFY("" == QString(""));
+
+ QVERIFY(QStringRef().size() == 0);
+
+ QVERIFY(QString("").size() == 0);
+
+ QVERIFY(QStringRef() == QString(""));
+ QVERIFY(QString("") == QString());
+}
+
+static inline int sign(int x)
+{
+ return x == 0 ? 0 : (x < 0 ? -1 : 1);
+}
+
+void tst_QStringRef::compare_data()
+{
+ QTest::addColumn<QString>("s1");
+ QTest::addColumn<QString>("s2");
+ QTest::addColumn<int>("csr"); // case sensitive result
+ QTest::addColumn<int>("cir"); // case insensitive result
+
+
+ // null strings
+ QTest::newRow("data0") << QString("") << QString("") << 0 << 0;
+ QTest::newRow("data1") << QString("a") << QString("") << 1 << 1;
+ QTest::newRow("data2") << QString("") << QString("a") << -1 << -1;
+
+ // equal length
+ QTest::newRow("data3") << QString("abc") << QString("abc") << 0 << 0;
+ QTest::newRow("data4") << QString("abC") << QString("abc") << -1 << 0;
+ QTest::newRow("data5") << QString("abc") << QString("abC") << 1 << 0;
+
+ // different length
+ QTest::newRow("data6") << QString("abcdef") << QString("abc") << 1 << 1;
+ QTest::newRow("data6") << QString("abCdef") << QString("abc") << -1 << 1;
+ QTest::newRow("data7") << QString("abc") << QString("abcdef") << -1 << -1;
+
+ QString upper;
+ upper += QChar(QChar::highSurrogate(0x10400));
+ upper += QChar(QChar::lowSurrogate(0x10400));
+ QString lower;
+ lower += QChar(QChar::highSurrogate(0x10428));
+ lower += QChar(QChar::lowSurrogate(0x10428));
+ QTest::newRow("data8") << upper << lower << -1 << 0;
+
+ // embedded nulls
+ // These dont work as of now. Its OK that these dont work since \0 is not a valid unicode
+ /*QTest::newRow("data9") << QString(QByteArray("\0", 1)) << QString(QByteArray("\0", 1)) << 0 << 0;
+ QTest::newRow("data10") << QString(QByteArray("\0", 1)) << QString("") << 1 << 1;
+ QTest::newRow("data11") << QString("") << QString(QByteArray("\0", 1)) << -1 << -1;
+ QTest::newRow("data12") << QString("ab\0c") << QString(QByteArray("ab\0c", 4)) << 0 << 0;
+ QTest::newRow("data13") << QString(QByteArray("ab\0c", 4)) << QString("abc") << -1 << -1;
+ QTest::newRow("data14") << QString("abc") << QString(QByteArray("ab\0c", 4)) << 1 << 1;*/
+}
+
+static bool isLatin(const QString &s)
+{
+ for (int i = 0; i < s.length(); ++i)
+ if (s.at(i).unicode() > 0xff)
+ return false;
+ return true;
+}
+
+void tst_QStringRef::compare()
+{
+ QFETCH(QString, s1);
+ QFETCH(QString, s2);
+ QFETCH(int, csr);
+ QFETCH(int, cir);
+
+ QStringRef r1(&s1, 0, s1.length());
+ QStringRef r2(&s2, 0, s2.length());
+
+ QCOMPARE(sign(QString::compare(s1, s2)), csr);
+ QCOMPARE(sign(QStringRef::compare(r1, r2)), csr);
+ QCOMPARE(sign(s1.compare(s2)), csr);
+ QCOMPARE(sign(s1.compare(r2)), csr);
+ QCOMPARE(sign(r1.compare(r2)), csr);
+
+ QCOMPARE(sign(s1.compare(s2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(s1.compare(s2, Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(s1.compare(r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(s1.compare(r2, Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(r1.compare(r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(r1.compare(r2, Qt::CaseInsensitive)), cir);
+
+ QCOMPARE(sign(QString::compare(s1, s2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(QString::compare(s1, s2, Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(QString::compare(s1, r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(QString::compare(s1, r2, Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(QStringRef::compare(r1, r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(QStringRef::compare(r1, r2, Qt::CaseInsensitive)), cir);
+
+ if (!cir) {
+ QCOMPARE(s1.toCaseFolded(), s2.toCaseFolded());
+ }
+
+ if (isLatin(s2)) {
+ QCOMPARE(sign(QString::compare(s1, QLatin1String(s2.toLatin1()))), csr);
+ QCOMPARE(sign(QString::compare(s1, QLatin1String(s2.toLatin1()), Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(QStringRef::compare(r1, QLatin1String(s2.toLatin1()))), csr);
+ QCOMPARE(sign(QStringRef::compare(r1, QLatin1String(s2.toLatin1()), Qt::CaseInsensitive)), cir);
+ }
+
+ if (isLatin(s1)) {
+ QCOMPARE(sign(QString::compare(QLatin1String(s1.toLatin1()), s2)), csr);
+ QCOMPARE(sign(QString::compare(QLatin1String(s1.toLatin1()), s2, Qt::CaseInsensitive)), cir);
+ }
+}
+
+QTEST_APPLESS_MAIN(tst_QStringRef)
+
+#include "tst_qstringref.moc"
diff --git a/tests/auto/corelib/tools/qtextboundaryfinder/.gitignore b/tests/auto/corelib/tools/qtextboundaryfinder/.gitignore
new file mode 100644
index 0000000000..bd0df58233
--- /dev/null
+++ b/tests/auto/corelib/tools/qtextboundaryfinder/.gitignore
@@ -0,0 +1 @@
+tst_qtextboundaryfinder
diff --git a/tests/auto/corelib/tools/qtextboundaryfinder/data/GraphemeBreakTest.txt b/tests/auto/corelib/tools/qtextboundaryfinder/data/GraphemeBreakTest.txt
new file mode 100644
index 0000000000..69096e1065
--- /dev/null
+++ b/tests/auto/corelib/tools/qtextboundaryfinder/data/GraphemeBreakTest.txt
@@ -0,0 +1,123 @@
+# GraphemeBreakTest-5.0.0.txt
+# Date: 2006-06-11, 20:09:11 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+#
+# Default Grapheme Break Test
+#
+# Format:
+# <string> (# <comment>)?
+# <string> contains hex Unicode code points, with
+# ÷ wherever there is a break opportunity, and
+# × wherever there is not.
+# <comment> the format can change, but currently it shows:
+# - the sample character name
+# - (x) the line_break property* for the sample character
+# - [x] the rule that determines whether there is a break or not
+#
+# These samples may be extended or changed in the future.
+#
+÷ 0020 ÷ 0020 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0020 ÷ 000D ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0020 ÷ 000A ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0020 ÷ 0001 ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0020 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 0020 ÷ 1100 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0020 ÷ 1160 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0020 ÷ 11A8 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0020 ÷ AC00 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0020 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 000D ÷ 0020 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] SPACE (Other) ÷ [0.3]
+÷ 000D ÷ 000D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 000D × 000A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 000D ÷ 0001 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 000D ÷ 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 000D ÷ 1100 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 000D ÷ 1160 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 000D ÷ 11A8 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 000D ÷ AC00 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 000D ÷ AC01 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 000A ÷ 0020 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] SPACE (Other) ÷ [0.3]
+÷ 000A ÷ 000D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 000A ÷ 000A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 000A ÷ 0001 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 000A ÷ 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 000A ÷ 1100 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 000A ÷ 1160 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 000A ÷ 11A8 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 000A ÷ AC00 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 000A ÷ AC01 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0001 ÷ 0020 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] SPACE (Other) ÷ [0.3]
+÷ 0001 ÷ 000D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0001 ÷ 000A ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0001 ÷ 0001 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0001 ÷ 0300 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 0001 ÷ 1100 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0001 ÷ 1160 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0001 ÷ 11A8 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0001 ÷ AC00 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0001 ÷ AC01 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0300 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0300 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0300 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0300 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 0300 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0300 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0300 ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0300 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0300 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1100 ÷ 0020 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 1100 ÷ 000D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1100 ÷ 000A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1100 ÷ 0001 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 1100 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 1100 × 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 1100 × 1160 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 1100 ÷ 11A8 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 1100 × AC00 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 1100 × AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1160 ÷ 0020 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 1160 ÷ 000D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1160 ÷ 000A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1160 ÷ 0001 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 1160 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 1160 ÷ 1100 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 1160 × 1160 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 1160 × 11A8 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 1160 ÷ AC00 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 1160 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 11A8 ÷ 0020 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 11A8 ÷ 000D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 11A8 ÷ 000A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 11A8 ÷ 0001 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 11A8 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 11A8 ÷ 1160 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 11A8 × 11A8 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 11A8 ÷ AC00 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 11A8 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ AC00 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ AC00 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ AC00 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ AC00 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ AC00 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ AC00 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ AC00 × 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ AC00 × 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ AC00 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ AC00 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ AC01 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ AC01 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ AC01 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ AC01 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ AC01 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ AC01 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ AC01 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ AC01 × 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ AC01 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ AC01 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+# Lines: 100
diff --git a/tests/auto/corelib/tools/qtextboundaryfinder/data/SentenceBreakTest.txt b/tests/auto/corelib/tools/qtextboundaryfinder/data/SentenceBreakTest.txt
new file mode 100644
index 0000000000..431d0e6a36
--- /dev/null
+++ b/tests/auto/corelib/tools/qtextboundaryfinder/data/SentenceBreakTest.txt
@@ -0,0 +1,307 @@
+# SentenceBreakTest-5.0.0.txt
+# Date: 2006-06-11, 20:09:14 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+#
+# Default Sentence Break Test
+#
+# Format:
+# <string> (# <comment>)?
+# <string> contains hex Unicode code points, with
+# ÷ wherever there is a break opportunity, and
+# × wherever there is not.
+# <comment> the format can change, but currently it shows:
+# - the sample character name
+# - (x) the line_break property* for the sample character
+# - [x] the rule that determines whether there is a break or not
+#
+# These samples may be extended or changed in the future.
+#
+÷ 0023 × 0023 ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 0023 × 0001 ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0023 × 0300 ÷ # ÷ [0.2] NUMBER SIGN (Other) × [5.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0023 × 00AD ÷ # ÷ [0.2] NUMBER SIGN (Other) × [5.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0023 × 000A ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0023 × 000D ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0023 × 0085 ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0023 × 0009 ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 0023 × 0020 ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] SPACE (Sp) ÷ [0.3]
+÷ 0023 × 0061 ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0023 × 0041 ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0023 × 00A0 ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 0023 × 0030 ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0023 × 002E ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0023 × 0021 ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0023 × 0022 ÷ # ÷ [0.2] NUMBER SIGN (Other) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0001 × 0023 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 0001 × 0001 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0001 × 0300 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [5.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0001 × 00AD ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [5.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0001 × 000A ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0001 × 000D ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0001 × 0085 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0001 × 0009 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 0001 × 0020 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] SPACE (Sp) ÷ [0.3]
+÷ 0001 × 0061 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0001 × 0041 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0001 × 00A0 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 0001 × 0030 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0001 × 002E ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0001 × 0021 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0001 × 0022 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0300 × 0023 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 0300 × 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [5.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0300 × 00AD ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [5.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0300 × 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0300 × 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0300 × 0085 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0300 × 0009 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 0300 × 0020 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] SPACE (Sp) ÷ [0.3]
+÷ 0300 × 0061 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0300 × 0041 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0300 × 00A0 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 0300 × 0030 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0300 × 002E ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0300 × 0021 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0300 × 0022 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 00AD × 0023 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 00AD × 0001 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 00AD × 0300 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [5.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 00AD × 00AD ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [5.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 00AD × 000A ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 00AD × 000D ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 00AD × 0085 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 00AD × 0009 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 00AD × 0020 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] SPACE (Sp) ÷ [0.3]
+÷ 00AD × 0061 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 00AD × 0041 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 00AD × 00A0 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 00AD × 0030 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 00AD × 002E ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 00AD × 0021 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 00AD × 0022 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 000A ÷ 0023 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 000A ÷ 0001 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 000A ÷ 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 000A ÷ 00AD ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 000A ÷ 000A ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 000A ÷ 000D ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 000A ÷ 0085 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 000A ÷ 0009 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 000A ÷ 0020 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] SPACE (Sp) ÷ [0.3]
+÷ 000A ÷ 0061 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 000A ÷ 0041 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 000A ÷ 00A0 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 000A ÷ 0030 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 000A ÷ 002E ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 000A ÷ 0021 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 000A ÷ 0022 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 000D ÷ 0023 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 000D ÷ 0001 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 000D ÷ 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 000D ÷ 00AD ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 000D × 000A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) × [3.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 000D ÷ 000D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 000D ÷ 0085 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 000D ÷ 0009 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 000D ÷ 0020 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] SPACE (Sp) ÷ [0.3]
+÷ 000D ÷ 0061 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 000D ÷ 0041 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 000D ÷ 00A0 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 000D ÷ 0030 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 000D ÷ 002E ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 000D ÷ 0021 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 000D ÷ 0022 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0085 ÷ 0023 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 0085 ÷ 0001 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0085 ÷ 0300 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0085 ÷ 00AD ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0085 ÷ 000A ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0085 ÷ 000D ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0085 ÷ 0085 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0085 ÷ 0009 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 0085 ÷ 0020 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] SPACE (Sp) ÷ [0.3]
+÷ 0085 ÷ 0061 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0085 ÷ 0041 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0085 ÷ 00A0 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 0085 ÷ 0030 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0085 ÷ 002E ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0085 ÷ 0021 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0085 ÷ 0022 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0009 × 0023 ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 0009 × 0001 ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0009 × 0300 ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [5.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0009 × 00AD ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [5.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0009 × 000A ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0009 × 000D ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0009 × 0085 ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0009 × 0009 ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 0009 × 0020 ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] SPACE (Sp) ÷ [0.3]
+÷ 0009 × 0061 ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0009 × 0041 ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0009 × 00A0 ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 0009 × 0030 ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0009 × 002E ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0009 × 0021 ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0009 × 0022 ÷ # ÷ [0.2] <CHARACTER TABULATION> (GCControl_Sp) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0020 × 0023 ÷ # ÷ [0.2] SPACE (Sp) × [12.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 0020 × 0001 ÷ # ÷ [0.2] SPACE (Sp) × [12.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0020 × 0300 ÷ # ÷ [0.2] SPACE (Sp) × [5.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0020 × 00AD ÷ # ÷ [0.2] SPACE (Sp) × [5.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0020 × 000A ÷ # ÷ [0.2] SPACE (Sp) × [12.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0020 × 000D ÷ # ÷ [0.2] SPACE (Sp) × [12.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0020 × 0085 ÷ # ÷ [0.2] SPACE (Sp) × [12.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0020 × 0009 ÷ # ÷ [0.2] SPACE (Sp) × [12.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 0020 × 0020 ÷ # ÷ [0.2] SPACE (Sp) × [12.0] SPACE (Sp) ÷ [0.3]
+÷ 0020 × 0061 ÷ # ÷ [0.2] SPACE (Sp) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0020 × 0041 ÷ # ÷ [0.2] SPACE (Sp) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0020 × 00A0 ÷ # ÷ [0.2] SPACE (Sp) × [12.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 0020 × 0030 ÷ # ÷ [0.2] SPACE (Sp) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0020 × 002E ÷ # ÷ [0.2] SPACE (Sp) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0020 × 0021 ÷ # ÷ [0.2] SPACE (Sp) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0020 × 0022 ÷ # ÷ [0.2] SPACE (Sp) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0061 × 0023 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 0061 × 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0061 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0061 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0061 × 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0061 × 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0061 × 0085 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0061 × 0009 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 0061 × 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] SPACE (Sp) ÷ [0.3]
+÷ 0061 × 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0061 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0061 × 00A0 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 0061 × 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0061 × 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0061 × 0021 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0061 × 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0041 × 0023 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 0041 × 0001 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0041 × 0300 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0041 × 00AD ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0041 × 000A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0041 × 000D ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0041 × 0085 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0041 × 0009 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 0041 × 0020 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] SPACE (Sp) ÷ [0.3]
+÷ 0041 × 0061 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0041 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0041 × 00A0 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 0041 × 0030 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0041 × 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0041 × 0021 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0041 × 0022 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 00A0 × 0023 ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 00A0 × 0001 ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 00A0 × 0300 ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [5.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 00A0 × 00AD ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [5.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 00A0 × 000A ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 00A0 × 000D ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 00A0 × 0085 ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 00A0 × 0009 ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 00A0 × 0020 ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] SPACE (Sp) ÷ [0.3]
+÷ 00A0 × 0061 ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 00A0 × 0041 ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 00A0 × 00A0 ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 00A0 × 0030 ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 00A0 × 002E ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 00A0 × 0021 ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 00A0 × 0022 ÷ # ÷ [0.2] NO-BREAK SPACE (OLetter) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0030 × 0023 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 0030 × 0001 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0030 × 0300 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0030 × 00AD ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0030 × 000A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0030 × 000D ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0030 × 0085 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0030 × 0009 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 0030 × 0020 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] SPACE (Sp) ÷ [0.3]
+÷ 0030 × 0061 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0030 × 0041 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0030 × 00A0 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 0030 × 0030 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0030 × 002E ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0030 × 0021 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0030 × 0022 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 002E ÷ 0023 ÷ # ÷ [0.2] FULL STOP (ATerm) ÷ [11.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 002E ÷ 0001 ÷ # ÷ [0.2] FULL STOP (ATerm) ÷ [11.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 002E × 0300 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 002E × 00AD ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 002E × 000A ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 002E × 000D ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 002E × 0085 ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 002E × 0009 ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 002E × 0020 ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] SPACE (Sp) ÷ [0.3]
+÷ 002E × 0061 ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 002E ÷ 0041 ÷ # ÷ [0.2] FULL STOP (ATerm) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 002E ÷ 00A0 ÷ # ÷ [0.2] FULL STOP (ATerm) ÷ [11.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 002E × 0030 ÷ # ÷ [0.2] FULL STOP (ATerm) × [6.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 002E × 002E ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.1] FULL STOP (ATerm) ÷ [0.3]
+÷ 002E × 0021 ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 002E × 0022 ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0021 ÷ 0023 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 0021 ÷ 0001 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0021 × 0300 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0021 × 00AD ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0021 × 000A ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0021 × 000D ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0021 × 0085 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0021 × 0009 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 0021 × 0020 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] SPACE (Sp) ÷ [0.3]
+÷ 0021 ÷ 0061 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0021 ÷ 0041 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0021 ÷ 00A0 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 0021 ÷ 0030 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0021 × 002E ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [8.1] FULL STOP (ATerm) ÷ [0.3]
+÷ 0021 × 0021 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0021 × 0022 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0022 × 0023 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] NUMBER SIGN (Other) ÷ [0.3]
+÷ 0022 × 0001 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0022 × 0300 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0022 × 00AD ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0022 × 000A ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0022 × 000D ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0022 × 0085 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0022 × 0009 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] <CHARACTER TABULATION> (GCControl_Sp) ÷ [0.3]
+÷ 0022 × 0020 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] SPACE (Sp) ÷ [0.3]
+÷ 0022 × 0061 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0022 × 0041 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0022 × 00A0 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] NO-BREAK SPACE (OLetter) ÷ [0.3]
+÷ 0022 × 0030 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0022 × 002E ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0022 × 0021 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0022 × 0022 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0028 × 0022 × 0047 × 006F × 002E × 0022 × 0029 × 0020 ÷ 0028 × 0048 × 0065 × 0020 × 0064 × 0069 × 0064 × 002E × 0029 ÷ # ÷ [0.2] LEFT PARENTHESIS (Close) × [12.0] QUOTATION MARK (Close) × [12.0] LATIN CAPITAL LETTER G (Upper) × [12.0] LATIN SMALL LETTER O (Lower) × [12.0] FULL STOP (ATerm) × [9.0] QUOTATION MARK (Close) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] SPACE (Sp) ÷ [11.0] LEFT PARENTHESIS (Close) × [12.0] LATIN CAPITAL LETTER H (Upper) × [12.0] LATIN SMALL LETTER E (Lower) × [12.0] SPACE (Sp) × [12.0] LATIN SMALL LETTER D (Lower) × [12.0] LATIN SMALL LETTER I (Lower) × [12.0] LATIN SMALL LETTER D (Lower) × [12.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) ÷ [0.3]
+÷ 0028 × 201C × 0047 × 006F × 003F × 201D × 0029 × 0020 ÷ 0028 × 0048 × 0065 × 0020 × 0064 × 0069 × 0064 × 002E × 0029 ÷ # ÷ [0.2] LEFT PARENTHESIS (Close) × [12.0] LEFT DOUBLE QUOTATION MARK (Close) × [12.0] LATIN CAPITAL LETTER G (Upper) × [12.0] LATIN SMALL LETTER O (Lower) × [12.0] QUESTION MARK (STerm) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] SPACE (Sp) ÷ [11.0] LEFT PARENTHESIS (Close) × [12.0] LATIN CAPITAL LETTER H (Upper) × [12.0] LATIN SMALL LETTER E (Lower) × [12.0] SPACE (Sp) × [12.0] LATIN SMALL LETTER D (Lower) × [12.0] LATIN SMALL LETTER I (Lower) × [12.0] LATIN SMALL LETTER D (Lower) × [12.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) ÷ [0.3]
+÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 002E × 0020 × 0069 × 0073 ÷ # ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (GCExtend) × [12.0] FULL STOP (ATerm) × [8.0] SPACE (Sp) × [8.0] LATIN SMALL LETTER I (Lower) × [12.0] LATIN SMALL LETTER S (Lower) ÷ [0.3]
+÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 003F × 0020 ÷ 0048 × 0065 ÷ # ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (GCExtend) × [12.0] QUESTION MARK (STerm) × [9.0] SPACE (Sp) ÷ [11.0] LATIN CAPITAL LETTER H (Upper) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (GCExtend) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0033 × 002E × 0034 ÷ # ÷ [0.2] DIGIT THREE (Numeric) × [12.0] FULL STOP (ATerm) × [6.0] DIGIT FOUR (Numeric) ÷ [0.3]
+÷ 0063 × 002E × 0064 ÷ # ÷ [0.2] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER D (Lower) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 ÷ 00A0 × 2018 × 0028 × 0074 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) ÷ [11.0] NO-BREAK SPACE (OLetter) × [12.0] LEFT SINGLE QUOTATION MARK (Close) × [12.0] LEFT PARENTHESIS (Close) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 ÷ 00A0 × 2018 × 0028 × 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) ÷ [11.0] NO-BREAK SPACE (OLetter) × [12.0] LEFT SINGLE QUOTATION MARK (Close) × [12.0] LEFT PARENTHESIS (Close) × [12.0] LATIN CAPITAL LETTER T (Upper) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 0074 × 0068 × 0065 × 0020 × 0072 × 0065 × 0073 × 0070 × 002E × 0020 × 006C × 0065 × 0061 × 0064 × 0065 × 0072 × 0073 × 0020 × 0061 × 0072 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) × [12.0] SPACE (Sp) × [12.0] LATIN SMALL LETTER R (Lower) × [12.0] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER S (Lower) × [12.0] LATIN SMALL LETTER P (Lower) × [12.0] FULL STOP (ATerm) × [8.0] SPACE (Sp) × [8.0] LATIN SMALL LETTER L (Lower) × [12.0] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER A (Lower) × [12.0] LATIN SMALL LETTER D (Lower) × [12.0] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER R (Lower) × [12.0] LATIN SMALL LETTER S (Lower) × [12.0] SPACE (Sp) × [12.0] LATIN SMALL LETTER A (Lower) × [12.0] LATIN SMALL LETTER R (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 5B57 × 002E ÷ 5B57 ÷ # ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [12.0] FULL STOP (ATerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E ÷ 5B83 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E × 3002 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [8.1] IDEOGRAPHIC FULL STOP (STerm) ÷ [0.3]
+÷ 5B57 × 3002 ÷ 5B83 ÷ # ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [12.0] IDEOGRAPHIC FULL STOP (STerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3]
+÷ 2060 × 0028 × 2060 × 0022 × 2060 × 0047 × 2060 × 006F × 2060 × 002E × 2060 × 0022 × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (GCControl_Format) × [12.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [9.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (GCControl_Format) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (GCControl_Format) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (GCControl_Format) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] SPACE (Sp) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 × 0028 × 2060 × 201C × 2060 × 0047 × 2060 × 006F × 2060 × 003F × 2060 × 201D × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LEFT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (GCControl_Format) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (GCControl_Format) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (GCControl_Format) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (GCControl_Format) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] SPACE (Sp) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 0020 × 2060 × 0069 × 2060 × 0073 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (GCControl_Format) × [5.0] COMBINING GRAVE ACCENT (GCExtend) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (GCControl_Format) × [8.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 003F × 2060 × 0020 × 2060 ÷ 0048 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (GCControl_Format) × [5.0] COMBINING GRAVE ACCENT (GCExtend) × [12.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (GCControl_Format) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (GCControl_Format) ÷ [11.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (GCControl_Format) × [5.0] COMBINING GRAVE ACCENT (GCExtend) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 × 0033 × 2060 × 002E × 2060 × 0034 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] DIGIT THREE (Numeric) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [6.0] DIGIT FOUR (Numeric) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 × 0063 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [8.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 ÷ 00A0 × 2060 × 2018 × 2060 × 0028 × 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (GCControl_Format) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (GCControl_Format) ÷ [11.0] NO-BREAK SPACE (OLetter) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LEFT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 ÷ 00A0 × 2060 × 2018 × 2060 × 0028 × 2060 × 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (GCControl_Format) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (GCControl_Format) ÷ [11.0] NO-BREAK SPACE (OLetter) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LEFT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 0020 × 2060 × 0072 × 2060 × 0065 × 2060 × 0073 × 2060 × 0070 × 2060 × 002E × 2060 × 0020 × 2060 × 006C × 2060 × 0065 × 2060 × 0061 × 2060 × 0064 × 2060 × 0065 × 2060 × 0072 × 2060 × 0073 × 2060 × 0020 × 2060 × 0061 × 2060 × 0072 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] SPACE (Sp) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER P (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (GCControl_Format) × [8.0] LATIN SMALL LETTER L (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] SPACE (Sp) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 × 5B57 × 2060 × 002E × 2060 ÷ 5B57 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 ÷ 5B83 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 3002 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (GCControl_Format) × [8.1] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 × 5B57 × 2060 × 3002 × 2060 ÷ 5B83 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) × [12.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (GCControl_Format) × [12.0] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (GCControl_Format) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (GCControl_Format) × [5.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+# Lines: 256
diff --git a/tests/auto/corelib/tools/qtextboundaryfinder/data/WordBreakTest.txt b/tests/auto/corelib/tools/qtextboundaryfinder/data/WordBreakTest.txt
new file mode 100644
index 0000000000..2ece4560d7
--- /dev/null
+++ b/tests/auto/corelib/tools/qtextboundaryfinder/data/WordBreakTest.txt
@@ -0,0 +1,517 @@
+# WordBreakTest-5.0.0.txt
+# Date: 2006-06-11, 20:09:15 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+#
+# Default Word Break Test
+#
+# Format:
+# <string> (# <comment>)?
+# <string> contains hex Unicode code points, with
+# ÷ wherever there is a break opportunity, and
+# × wherever there is not.
+# <comment> the format can change, but currently it shows:
+# - the sample character name
+# - (x) the line_break property* for the sample character
+# - [x] the rule that determines whether there is a break or not
+#
+# These samples may be extended or changed in the future.
+#
+÷ 0020 ÷ 0020 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0020 ÷ 0001 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0020 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0020 ÷ 000A ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0020 ÷ 000D ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0020 ÷ 0085 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0020 × 00AD ÷ # ÷ [0.2] SPACE (Other) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0020 ÷ 3031 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0020 ÷ 0041 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0020 ÷ 0027 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0020 ÷ 002C ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0020 ÷ 0030 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0020 ÷ 005F ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0020 ÷ 0061 × 2060 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0020 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0020 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0020 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0020 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0020 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0020 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0020 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0020 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0001 ÷ 0020 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0001 ÷ 0001 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0001 × 0300 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0001 ÷ 000A ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0001 ÷ 000D ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0001 ÷ 0085 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0001 × 00AD ÷ # ÷ [0.2] <START OF HEADING> (GCControl) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0001 ÷ 3031 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0001 ÷ 0041 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0001 ÷ 0027 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0001 ÷ 002C ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0001 ÷ 0030 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0001 ÷ 005F ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0001 ÷ 0061 × 2060 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0001 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0001 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0001 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0001 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0001 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0001 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0001 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0001 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] <START OF HEADING> (GCControl) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0300 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0300 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0300 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0300 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0300 ÷ 0085 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0300 × 00AD ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0300 ÷ 3031 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0300 ÷ 0041 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0300 ÷ 0027 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0300 ÷ 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0300 ÷ 0030 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0300 ÷ 005F ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0300 ÷ 0061 × 2060 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0300 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0300 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0300 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0300 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0300 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0300 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0300 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0300 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (GCExtend) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 000A ÷ 0020 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 000A ÷ 0001 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 000A ÷ 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 000A ÷ 000A ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 000A ÷ 000D ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 000A ÷ 0085 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 000A ÷ 00AD ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 000A ÷ 3031 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 000A ÷ 0041 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 000A ÷ 0027 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 000A ÷ 002C ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 000A ÷ 0030 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 000A ÷ 005F ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 000A ÷ 0061 × 2060 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 000A ÷ 0061 ÷ 003A ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 000A ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 000A ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 000A ÷ 0061 ÷ 002C ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 000A ÷ 0031 ÷ 003A ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 000A ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 000A ÷ 0031 ÷ 002C ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 000A ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] <LINE FEED (LF)> (GCLF_Sep) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 000D ÷ 0020 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 000D ÷ 0001 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 000D ÷ 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 000D × 000A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) × [3.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 000D ÷ 000D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 000D ÷ 0085 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 000D ÷ 00AD ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 000D ÷ 3031 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 000D ÷ 0041 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 000D ÷ 0027 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 000D ÷ 002C ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 000D ÷ 0030 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 000D ÷ 005F ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 000D ÷ 0061 × 2060 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 000D ÷ 0061 ÷ 003A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 000D ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 000D ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 000D ÷ 0061 ÷ 002C ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 000D ÷ 0031 ÷ 003A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 000D ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 000D ÷ 0031 ÷ 002C ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 000D ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0085 ÷ 0020 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0085 ÷ 0001 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0085 ÷ 0300 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0085 ÷ 000A ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0085 ÷ 000D ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0085 ÷ 0085 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0085 ÷ 00AD ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0085 ÷ 3031 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0085 ÷ 0041 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0085 ÷ 0027 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0085 ÷ 002C ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0085 ÷ 0030 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0085 ÷ 005F ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0085 ÷ 0061 × 2060 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0085 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0085 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0085 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0085 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0085 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0085 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0085 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0085 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 00AD ÷ 0020 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 00AD ÷ 0001 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 00AD × 0300 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 00AD ÷ 000A ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 00AD ÷ 000D ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 00AD ÷ 0085 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 00AD × 00AD ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 00AD ÷ 3031 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 00AD ÷ 0041 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 00AD ÷ 0027 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 00AD ÷ 002C ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 00AD ÷ 0030 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 00AD ÷ 005F ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 00AD ÷ 0061 × 2060 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 00AD ÷ 0061 ÷ 003A ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 00AD ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 00AD ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 00AD ÷ 0061 ÷ 002C ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 00AD ÷ 0031 ÷ 003A ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 00AD ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 00AD ÷ 0031 ÷ 002C ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 00AD ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] SOFT HYPHEN (GCControl_Format) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 3031 ÷ 0020 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 3031 ÷ 0001 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 3031 × 0300 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 3031 ÷ 000A ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 3031 ÷ 000D ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 3031 ÷ 0085 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 3031 × 00AD ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 3031 × 3031 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [13.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 3031 ÷ 0041 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 3031 ÷ 0027 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 3031 ÷ 002C ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 3031 ÷ 0030 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 3031 × 005F ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 3031 ÷ 0061 × 2060 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 3031 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 3031 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 3031 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 3031 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 3031 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 3031 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 3031 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 3031 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0041 ÷ 0020 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0041 ÷ 0001 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0041 × 0300 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0041 ÷ 000A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0041 ÷ 000D ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0041 ÷ 0085 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0041 × 00AD ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0041 ÷ 3031 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0041 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0041 ÷ 0027 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0041 ÷ 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0041 × 0030 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [9.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0041 × 005F ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0041 × 0061 × 2060 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0041 × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0041 × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0041 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0041 × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0041 × 0031 ÷ 003A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0041 × 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0041 × 0031 ÷ 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0041 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0027 ÷ 0020 ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0027 ÷ 0001 ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0027 × 0300 ÷ # ÷ [0.2] APOSTROPHE (MidLetter) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0027 ÷ 000A ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0027 ÷ 000D ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0027 ÷ 0085 ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0027 × 00AD ÷ # ÷ [0.2] APOSTROPHE (MidLetter) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0027 ÷ 3031 ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0027 ÷ 0041 ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0027 ÷ 0027 ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0027 ÷ 002C ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0027 ÷ 0030 ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0027 ÷ 005F ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0027 ÷ 0061 × 2060 ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0027 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0027 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0027 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0027 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0027 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0027 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0027 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0027 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 002C ÷ 0020 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 002C ÷ 0001 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 002C × 0300 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 002C ÷ 000A ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 002C ÷ 000D ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 002C ÷ 0085 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 002C × 00AD ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 002C ÷ 3031 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 002C ÷ 0041 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 002C ÷ 0027 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 002C ÷ 002C ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 002C ÷ 0030 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 002C ÷ 005F ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 002C ÷ 0061 × 2060 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 002C ÷ 0061 ÷ 003A ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 002C ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 002C ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 002C ÷ 0061 ÷ 002C ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 002C ÷ 0031 ÷ 003A ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 002C ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 002C ÷ 0031 ÷ 002C ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 002C ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0030 ÷ 0020 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0030 ÷ 0001 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0030 × 0300 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0030 ÷ 000A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0030 ÷ 000D ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0030 ÷ 0085 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0030 × 00AD ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0030 ÷ 3031 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0030 × 0041 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0030 ÷ 0027 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0030 ÷ 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0030 × 0030 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [8.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0030 × 005F ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0030 × 0061 × 2060 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0030 × 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0030 × 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0030 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0030 × 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0030 × 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [8.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0030 × 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [8.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0030 × 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [8.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0030 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [8.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 005F ÷ 0020 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 005F ÷ 0001 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 005F × 0300 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 005F ÷ 000A ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 005F ÷ 000D ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 005F ÷ 0085 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 005F × 00AD ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 005F × 3031 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 005F × 0041 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 005F ÷ 0027 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 005F ÷ 002C ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 005F × 0030 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 005F × 005F ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 005F × 0061 × 2060 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 005F × 0061 ÷ 003A ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 005F × 0061 ÷ 0027 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 005F × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 005F × 0061 ÷ 002C ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 005F × 0031 ÷ 003A ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 005F × 0031 ÷ 0027 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 005F × 0031 ÷ 002C ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 005F × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 × 2060 ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0061 × 2060 ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0061 × 2060 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0061 × 2060 ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0061 × 2060 ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0061 × 2060 ÷ 0085 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0061 × 2060 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0061 × 2060 ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0061 × 2060 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [5.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0061 × 2060 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 × 2060 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 × 2060 × 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [9.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0061 × 2060 × 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0061 × 2060 × 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 × 2060 × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0061 × 2060 × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 × 2060 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 × 2060 × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 × 2060 × 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0061 × 2060 × 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 × 2060 × 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 × 2060 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [9.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0061 ÷ 003A × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 0085 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0061 ÷ 003A × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0061 × 003A × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0061 × 003A × 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 × 003A × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0061 × 003A × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 × 003A × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 × 003A × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0061 ÷ 0027 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 0085 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0061 ÷ 0027 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0061 × 0027 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (MidLetter) × [7.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0061 × 0027 × 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 × 0027 × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0061 × 0027 × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 × 0027 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 × 0027 × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 0085 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0061 × 0027 × 2060 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) × [7.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0061 × 0027 × 2060 × 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 × 0027 × 2060 × 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0061 × 0027 × 2060 × 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 × 0027 × 2060 × 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 × 0027 × 2060 × 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0061 ÷ 002C × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0085 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0061 ÷ 002C × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 3031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0061 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0061 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0061 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0031 ÷ 003A ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0031 ÷ 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0020 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0001 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0031 ÷ 003A × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 000A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 000D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0085 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0031 ÷ 003A × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 3031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0041 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0061 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0020 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0001 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0031 ÷ 0027 × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 000A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 000D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0085 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0031 ÷ 0027 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 3031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0041 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0061 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 0020 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 0001 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0031 ÷ 002C × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 000A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 000D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 0085 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0031 ÷ 002C × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 3031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 0041 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0031 × 002C × 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 0061 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0031 × 002C × 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0031 × 002C × 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0031 × 002C × 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0031 × 002C × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 0020 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 0001 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] <START OF HEADING> (GCControl) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) × [4.0] COMBINING GRAVE ACCENT (GCExtend) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 000A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] <LINE FEED (LF)> (GCLF_Sep) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 000D ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] <CARRIAGE RETURN (CR)> (GCCR_Sep) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 0085 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] <NEXT LINE (NEL)> (GCControl_Sep) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) × [4.0] SOFT HYPHEN (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 3031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 0041 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0031 × 002E × 2060 × 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 0061 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0031 × 002E × 2060 × 0031 ÷ 003A ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 0031 × 002E × 2060 × 0031 ÷ 0027 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidLetter) ÷ [0.3]
+÷ 0031 × 002E × 2060 × 0031 ÷ 002C ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 0031 × 002E × 2060 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 0063 × 0061 × 006E × 0027 × 0074 ÷ # ÷ [0.2] LATIN SMALL LETTER C (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER N (ALetter) × [6.0] APOSTROPHE (MidLetter) × [7.0] LATIN SMALL LETTER T (ALetter) ÷ [0.3]
+÷ 0063 × 0061 × 006E × 2019 × 0074 ÷ # ÷ [0.2] LATIN SMALL LETTER C (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER N (ALetter) × [6.0] RIGHT SINGLE QUOTATION MARK (MidLetter) × [7.0] LATIN SMALL LETTER T (ALetter) ÷ [0.3]
+÷ 0061 × 0062 × 00AD × 0062 × 0079 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER B (ALetter) × [4.0] SOFT HYPHEN (GCControl_Format) × [5.0] LATIN SMALL LETTER B (ALetter) × [5.0] LATIN SMALL LETTER Y (ALetter) ÷ [0.3]
+÷ 0061 ÷ 0024 ÷ 002D ÷ 0033 × 0034 × 002C × 0035 × 0036 × 0037 × 002E × 0031 × 0034 ÷ 0025 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] DOLLAR SIGN (Other) ÷ [999.0] HYPHEN-MINUS (Other) ÷ [999.0] DIGIT THREE (Numeric) × [8.0] DIGIT FOUR (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT FIVE (Numeric) × [8.0] DIGIT SIX (Numeric) × [8.0] DIGIT SEVEN (Numeric) × [12.0] FULL STOP (MidNum) × [11.0] DIGIT ONE (Numeric) × [8.0] DIGIT FOUR (Numeric) ÷ [999.0] PERCENT SIGN (Other) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3]
+÷ 0033 × 0061 ÷ # ÷ [0.2] DIGIT THREE (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3]
+÷ 2060 ÷ 0063 × 2060 × 0061 × 2060 × 006E × 2060 × 0027 × 2060 × 0074 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER C (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [5.0] LATIN SMALL LETTER N (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [6.0] APOSTROPHE (MidLetter) × [4.0] WORD JOINER (GCControl_Format) × [7.0] LATIN SMALL LETTER T (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 ÷ 0063 × 2060 × 0061 × 2060 × 006E × 2060 × 2019 × 2060 × 0074 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER C (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [5.0] LATIN SMALL LETTER N (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [6.0] RIGHT SINGLE QUOTATION MARK (MidLetter) × [4.0] WORD JOINER (GCControl_Format) × [7.0] LATIN SMALL LETTER T (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 ÷ 0061 × 2060 × 0062 × 2060 × 00AD × 2060 × 0062 × 2060 × 0079 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [5.0] LATIN SMALL LETTER B (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [4.0] SOFT HYPHEN (GCControl_Format) × [4.0] WORD JOINER (GCControl_Format) × [5.0] LATIN SMALL LETTER B (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [5.0] LATIN SMALL LETTER Y (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 ÷ 0061 × 2060 ÷ 0024 × 2060 ÷ 002D × 2060 ÷ 0033 × 2060 × 0034 × 2060 × 002C × 2060 × 0035 × 2060 × 0036 × 2060 × 0037 × 2060 × 002E × 2060 × 0031 × 2060 × 0034 × 2060 ÷ 0025 × 2060 ÷ 0062 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] DOLLAR SIGN (Other) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] HYPHEN-MINUS (Other) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] DIGIT THREE (Numeric) × [4.0] WORD JOINER (GCControl_Format) × [8.0] DIGIT FOUR (Numeric) × [4.0] WORD JOINER (GCControl_Format) × [12.0] COMMA (MidNum) × [4.0] WORD JOINER (GCControl_Format) × [11.0] DIGIT FIVE (Numeric) × [4.0] WORD JOINER (GCControl_Format) × [8.0] DIGIT SIX (Numeric) × [4.0] WORD JOINER (GCControl_Format) × [8.0] DIGIT SEVEN (Numeric) × [4.0] WORD JOINER (GCControl_Format) × [12.0] FULL STOP (MidNum) × [4.0] WORD JOINER (GCControl_Format) × [11.0] DIGIT ONE (Numeric) × [4.0] WORD JOINER (GCControl_Format) × [8.0] DIGIT FOUR (Numeric) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] PERCENT SIGN (Other) × [4.0] WORD JOINER (GCControl_Format) ÷ [999.0] LATIN SMALL LETTER B (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+÷ 2060 ÷ 0033 × 2060 × 0061 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (GCControl_Format) ÷ [999.0] DIGIT THREE (Numeric) × [4.0] WORD JOINER (GCControl_Format) × [10.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (GCControl_Format) × [4.0] WORD JOINER (GCControl_Format) ÷ [0.3]
+# Lines: 484
diff --git a/tests/auto/corelib/tools/qtextboundaryfinder/qtextboundaryfinder.pro b/tests/auto/corelib/tools/qtextboundaryfinder/qtextboundaryfinder.pro
new file mode 100644
index 0000000000..5f3cb119f4
--- /dev/null
+++ b/tests/auto/corelib/tools/qtextboundaryfinder/qtextboundaryfinder.pro
@@ -0,0 +1,12 @@
+load(qttest_p4)
+QT = core
+HEADERS +=
+SOURCES += tst_qtextboundaryfinder.cpp
+!symbian:*:DEFINES += SRCDIR=\\\"$$PWD\\\"
+
+wince*|symbian:{
+ addFiles.files = data
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+}
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qtextboundaryfinder/tst_qtextboundaryfinder.cpp b/tests/auto/corelib/tools/qtextboundaryfinder/tst_qtextboundaryfinder.cpp
new file mode 100644
index 0000000000..3657556189
--- /dev/null
+++ b/tests/auto/corelib/tools/qtextboundaryfinder/tst_qtextboundaryfinder.cpp
@@ -0,0 +1,415 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qtextboundaryfinder.h>
+#include <qfile.h>
+#include <qdebug.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=gui/text/qtextlayout.h corelib/tools/qtextboundaryfinder.cpp
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR "$$PWD"
+#endif
+
+class tst_QTextBoundaryFinder : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QTextBoundaryFinder();
+ virtual ~tst_QTextBoundaryFinder();
+
+
+public slots:
+ void init();
+ void cleanup();
+private slots:
+ void graphemeBoundaries();
+ void wordBoundaries();
+ void sentenceBoundaries();
+ void isAtWordStart();
+ void fastConstructor();
+ void isAtBoundaryLine();
+ void toNextBoundary_data();
+ void toNextBoundary();
+ void toPreviousBoundary_data();
+ void toPreviousBoundary();
+};
+
+tst_QTextBoundaryFinder::tst_QTextBoundaryFinder()
+{
+}
+
+tst_QTextBoundaryFinder::~tst_QTextBoundaryFinder()
+{
+}
+
+void tst_QTextBoundaryFinder::init()
+{
+#ifndef Q_OS_IRIX
+ QDir::setCurrent(SRCDIR);
+#endif
+}
+
+void tst_QTextBoundaryFinder::cleanup()
+{
+}
+
+void tst_QTextBoundaryFinder::graphemeBoundaries()
+{
+ QFile file("data/GraphemeBreakTest.txt");
+ file.open(QFile::ReadOnly);
+
+ int lines = 0;
+ while (!file.atEnd()) {
+ QByteArray line = file.readLine();
+ if (line.startsWith('#'))
+ continue;
+
+ lines++;
+ QString test = QString::fromUtf8(line);
+ int hash = test.indexOf('#');
+ if (hash > 0)
+ test = test.left(hash);
+ test = test.simplified();
+ test = test.replace(QLatin1String(" "), QString());
+
+ QList<int> breakPositions;
+ QString testString;
+ int pos = 0;
+ int strPos = 0;
+ while (pos < test.length()) {
+ if (test.at(pos).unicode() == 0xf7)
+ breakPositions.append(strPos);
+ else
+ QVERIFY(test.at(pos).unicode() == 0xd7);
+ ++pos;
+ if (pos < test.length()) {
+ QVERIFY(pos < test.length() - 4);
+ QString hex = test.mid(pos, 4);
+ bool ok = true;
+ testString.append(QChar(hex.toInt(&ok, 16)));
+ QVERIFY(ok);
+ pos += 4;
+ }
+ ++strPos;
+ }
+
+ QTextBoundaryFinder finder(QTextBoundaryFinder::Grapheme, testString);
+ for (int i = 0; i < breakPositions.size(); ++i) {
+ QCOMPARE(finder.position(), breakPositions.at(i));
+ finder.toNextBoundary();
+ }
+ QCOMPARE(finder.toNextBoundary(), -1);
+
+ for (int i = 0; i < testString.length(); ++i) {
+ finder.setPosition(i);
+ QCOMPARE(finder.isAtBoundary(), breakPositions.contains(i) == true);
+ }
+ }
+ QCOMPARE(lines, 100); // to see it actually found the file and all.
+}
+
+void tst_QTextBoundaryFinder::wordBoundaries()
+{
+ QFile file("data/WordBreakTest.txt");
+ file.open(QFile::ReadOnly);
+
+ while (!file.atEnd()) {
+ QByteArray line = file.readLine();
+ if (line.startsWith('#'))
+ continue;
+
+ QString test = QString::fromUtf8(line);
+ int hash = test.indexOf('#');
+ if (hash > 0)
+ test = test.left(hash);
+ test = test.simplified();
+ test = test.replace(QLatin1String(" "), QString());
+
+ QList<int> breakPositions;
+ QString testString;
+ int pos = 0;
+ int strPos = 0;
+ while (pos < test.length()) {
+ if (test.at(pos).unicode() == 0xf7)
+ breakPositions.append(strPos);
+ else
+ QVERIFY(test.at(pos).unicode() == 0xd7);
+ ++pos;
+ if (pos < test.length()) {
+ QVERIFY(pos < test.length() - 4);
+ QString hex = test.mid(pos, 4);
+ bool ok = true;
+ testString.append(QChar(hex.toInt(&ok, 16)));
+ QVERIFY(ok);
+ pos += 4;
+ }
+ ++strPos;
+ }
+
+ QTextBoundaryFinder finder(QTextBoundaryFinder::Word, testString);
+ for (int i = 0; i < breakPositions.size(); ++i) {
+ QCOMPARE(finder.position(), breakPositions.at(i));
+ finder.toNextBoundary();
+ }
+ QCOMPARE(finder.toNextBoundary(), -1);
+
+ for (int i = 0; i < testString.length(); ++i) {
+ finder.setPosition(i);
+ QCOMPARE(finder.isAtBoundary(), breakPositions.contains(i) == true);
+ }
+ }
+}
+
+void tst_QTextBoundaryFinder::sentenceBoundaries()
+{
+ QFile file("data/SentenceBreakTest.txt");
+ file.open(QFile::ReadOnly);
+
+ while (!file.atEnd()) {
+ QByteArray line = file.readLine();
+ if (line.startsWith('#'))
+ continue;
+
+ QString test = QString::fromUtf8(line);
+ int hash = test.indexOf('#');
+ if (hash > 0)
+ test = test.left(hash);
+ test = test.simplified();
+ test = test.replace(QLatin1String(" "), QString());
+
+ QList<int> breakPositions;
+ QString testString;
+ int pos = 0;
+ int strPos = 0;
+ while (pos < test.length()) {
+ if (test.at(pos).unicode() == 0xf7)
+ breakPositions.append(strPos);
+ else
+ QVERIFY(test.at(pos).unicode() == 0xd7);
+ ++pos;
+ if (pos < test.length()) {
+ QVERIFY(pos < test.length() - 4);
+ QString hex = test.mid(pos, 4);
+ bool ok = true;
+ testString.append(QChar(hex.toInt(&ok, 16)));
+ QVERIFY(ok);
+ pos += 4;
+ }
+ ++strPos;
+ }
+
+ QTextBoundaryFinder finder(QTextBoundaryFinder::Sentence, testString);
+ for (int i = 0; i < breakPositions.size(); ++i) {
+ QCOMPARE(finder.position(), breakPositions.at(i));
+ finder.toNextBoundary();
+ }
+ QCOMPARE(finder.toNextBoundary(), -1);
+
+ for (int i = 0; i < testString.length(); ++i) {
+ finder.setPosition(i);
+ QCOMPARE(finder.isAtBoundary(), breakPositions.contains(i) == true);
+ }
+ }
+}
+
+void tst_QTextBoundaryFinder::isAtWordStart()
+{
+ QString txt("The quick brown fox jumped over $the lazy. dog I win!");
+ QList<int> start, end;
+ start << 0 << 4 << 10 << 16 << 20 << 27 << 32 << 33 << 37 << 41 << 43 << 48 << 50 << 53;
+ end << 3 << 9 << 15 << 19 << 26 << 31 << 33 << 36 << 41 << 42 << 46 << 49 << 53 << 54;
+ QTextBoundaryFinder finder(QTextBoundaryFinder::Word, txt);
+ for(int i=0; i < txt.length(); ++i) {
+ finder.setPosition(i);
+ QTextBoundaryFinder::BoundaryReasons r = finder.boundaryReasons();
+ // qDebug() << i << r;
+ QCOMPARE((r & QTextBoundaryFinder::StartWord) != 0, start.contains(i) == true);
+ QCOMPARE((r & QTextBoundaryFinder::EndWord) != 0, end.contains(i) == true);
+ }
+}
+
+void tst_QTextBoundaryFinder::fastConstructor()
+{
+ QString text("Hello World");
+ QTextBoundaryFinder finder(QTextBoundaryFinder::Word, text.constData(), text.length(), /*buffer*/0, /*buffer size*/0);
+ QVERIFY(finder.boundaryReasons() == QTextBoundaryFinder::StartWord);
+
+ finder.toNextBoundary();
+ QCOMPARE(finder.position(), 5);
+ QVERIFY(finder.boundaryReasons() == QTextBoundaryFinder::EndWord);
+
+ finder.toNextBoundary();
+ QCOMPARE(finder.position(), 6);
+ QVERIFY(finder.boundaryReasons() == QTextBoundaryFinder::StartWord);
+
+ finder.toNextBoundary();
+ QCOMPARE(finder.position(), text.length());
+ QVERIFY(finder.boundaryReasons() == QTextBoundaryFinder::EndWord);
+
+ finder.toNextBoundary();
+ QVERIFY(finder.boundaryReasons() == QTextBoundaryFinder::NotAtBoundary);
+ QCOMPARE(finder.position(), -1);
+}
+
+void tst_QTextBoundaryFinder::isAtBoundaryLine()
+{
+ // idx 0 1 2 3 4 5 6
+ // break? - - - - + - +
+ QChar s[] = { 0x0061, 0x00AD, 0x0062, 0x0009, 0x0063, 0x0064 };
+ QString text(s, sizeof(s)/sizeof(s[0]));
+// qDebug() << "text = " << text << ", length = " << text.length();
+ QTextBoundaryFinder finder(QTextBoundaryFinder::Line, text.constData(), text.length(), /*buffer*/0, /*buffer size*/0);
+ finder.setPosition(0);
+ QVERIFY(finder.isAtBoundary());
+ finder.setPosition(1);
+ QVERIFY(!finder.isAtBoundary());
+ finder.setPosition(2);
+ QVERIFY(!finder.isAtBoundary());
+ finder.setPosition(3);
+ QVERIFY(!finder.isAtBoundary());
+ finder.setPosition(4);
+ QVERIFY(finder.isAtBoundary());
+ finder.setPosition(5);
+ QVERIFY(!finder.isAtBoundary());
+ finder.setPosition(6);
+ QVERIFY(finder.isAtBoundary());
+}
+
+Q_DECLARE_METATYPE(QList<int>)
+
+void tst_QTextBoundaryFinder::toNextBoundary_data()
+{
+ QTest::addColumn<QString>("text");
+ QTest::addColumn<int>("type");
+ QTest::addColumn< QList<int> >("boundaries");
+
+ QList<int> boundaries;
+ boundaries << 0 << 3 << 4 << 7 << 8 << 11 << 12 << 13 << 16 << 17 << 20 << 21 << 24 << 25;
+ QTest::newRow("Line") << QString("Aaa bbb ccc. Ddd eee fff.") << int(QTextBoundaryFinder::Word) \
+ << boundaries;
+
+ boundaries.clear();
+ boundaries << 0 << 13 << 25;
+ QTest::newRow("Line") << QString("Aaa bbb ccc. Ddd eee fff.") << int(QTextBoundaryFinder::Sentence) \
+ << boundaries;
+
+ boundaries.clear();
+ boundaries << 0 << 4 << 8 << 13 << 17 << 21 << 25;
+ QTest::newRow("Line") << QString("Aaa bbb ccc. Ddd eee fff.") << int(QTextBoundaryFinder::Line) \
+ << boundaries;
+
+ boundaries.clear();
+ boundaries << 0 << 5 << 9 << 15 << 17 << 21 << 28;
+ QTest::newRow("Line") << QString::fromUtf8("Diga-nos qualé a sua opinião") << int(QTextBoundaryFinder::Line)
+ << boundaries;
+
+}
+
+void tst_QTextBoundaryFinder::toNextBoundary()
+{
+ QFETCH(QString, text);
+ QFETCH(int, type);
+ QFETCH(QList<int>, boundaries);
+
+ QList<int> foundBoundaries;
+ QTextBoundaryFinder boundaryFinder(QTextBoundaryFinder::BoundaryType(type), text);
+ boundaryFinder.toStart();
+ for(int next = 0; next != -1; next = boundaryFinder.toNextBoundary())
+ foundBoundaries << next;
+ QCOMPARE(boundaries, foundBoundaries);
+}
+
+void tst_QTextBoundaryFinder::toPreviousBoundary_data()
+{
+ QTest::addColumn<QString>("text");
+ QTest::addColumn<int>("type");
+ QTest::addColumn< QList<int> >("boundaries");
+
+ QList<int> boundaries;
+ boundaries << 25 << 24 << 21 << 20 << 17 << 16 << 13 << 12 << 11 << 8 << 7 << 4 << 3 << 0;
+ QTest::newRow("Line") << QString("Aaa bbb ccc. Ddd eee fff.") << int(QTextBoundaryFinder::Word)
+ << boundaries;
+
+ boundaries.clear();
+ boundaries << 25 << 13 << 0;
+ QTest::newRow("Line") << QString("Aaa bbb ccc. Ddd eee fff.") << int(QTextBoundaryFinder::Sentence)
+ << boundaries;
+
+ boundaries.clear();
+ boundaries << 25 << 21 << 17 << 13 << 8 << 4 << 0;
+ QTest::newRow("Line") << QString("Aaa bbb ccc. Ddd eee fff.") << int(QTextBoundaryFinder::Line)
+ << boundaries;
+
+ boundaries.clear();
+ boundaries << 28 << 21 << 17 << 15 << 9 << 5 << 0;
+ QTest::newRow("Line") << QString::fromUtf8("Diga-nos qualé a sua opinião") << int(QTextBoundaryFinder::Line)
+ << boundaries;
+
+}
+
+void tst_QTextBoundaryFinder::toPreviousBoundary()
+{
+ QFETCH(QString, text);
+ QFETCH(int, type);
+ QFETCH(QList<int>, boundaries);
+
+ QList<int> foundBoundaries;
+ QTextBoundaryFinder boundaryFinder(QTextBoundaryFinder::BoundaryType(type), text);
+ boundaryFinder.toEnd();
+ for (int previous = boundaryFinder.position();
+ previous != -1;
+ previous = boundaryFinder.toPreviousBoundary())
+ {
+ foundBoundaries << previous;
+ }
+ QCOMPARE(boundaries, foundBoundaries);
+}
+
+
+
+
+QTEST_MAIN(tst_QTextBoundaryFinder)
+#include "tst_qtextboundaryfinder.moc"
diff --git a/tests/auto/corelib/tools/qtime/.gitignore b/tests/auto/corelib/tools/qtime/.gitignore
new file mode 100644
index 0000000000..26a4c65cc2
--- /dev/null
+++ b/tests/auto/corelib/tools/qtime/.gitignore
@@ -0,0 +1 @@
+tst_qtime
diff --git a/tests/auto/corelib/tools/qtime/qtime.pro b/tests/auto/corelib/tools/qtime/qtime.pro
new file mode 100644
index 0000000000..ce4f7ae91f
--- /dev/null
+++ b/tests/auto/corelib/tools/qtime/qtime.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qtime.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qtime/tst_qtime.cpp b/tests/auto/corelib/tools/qtime/tst_qtime.cpp
new file mode 100644
index 0000000000..746f36d6d9
--- /dev/null
+++ b/tests/auto/corelib/tools/qtime/tst_qtime.cpp
@@ -0,0 +1,689 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include "qdatetime.h"
+
+//TESTED_CLASS=
+//TESTED_FILES=corelib/thread/qthreadstorage.h corelib/thread/qthreadstorage.cpp
+
+class tst_QTime : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QTime();
+ virtual ~tst_QTime();
+
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+private slots:
+ void toStringLocale();
+ void toString();
+ void msecsTo_data();
+ void msecsTo();
+ void secsTo_data();
+ void secsTo();
+ void setHMS_data();
+ void setHMS();
+ void msec();
+ void second();
+ void minute();
+ void hour_data();
+ void hour();
+ void isValid();
+ void isNull();
+ void addMSecs_data();
+ void addMSecs();
+ void addSecs_data();
+ void addSecs();
+ void operator_eq_eq();
+ void operator_not_eq();
+ void operator_lt();
+ void operator_gt();
+ void operator_lt_eq();
+ void operator_gt_eq();
+ void fromString_data();
+ void fromString();
+ void fromStringFormat_data();
+ void fromStringFormat();
+ void toString_data();
+ void toString_format_data();
+ void toString_format();
+};
+
+Q_DECLARE_METATYPE(QTime)
+
+tst_QTime::tst_QTime()
+{
+}
+
+tst_QTime::~tst_QTime()
+{
+
+}
+
+// initTestCase will be executed once before the first testfunction is executed.
+void tst_QTime::initTestCase()
+{
+}
+
+// cleanupTestCase will be executed once after the last testfunction is executed.
+void tst_QTime::cleanupTestCase()
+{
+}
+
+// init() will be executed immediately before each testfunction is run.
+void tst_QTime::init()
+{
+// TODO: Add testfunction specific initialization code here.
+}
+
+// cleanup() will be executed immediately after each testfunction is run.
+void tst_QTime::cleanup()
+{
+// TODO: Add testfunction specific cleanup code here.
+}
+
+void tst_QTime::addSecs_data()
+{
+ QTest::addColumn<QTime>("t1");
+ QTest::addColumn<int>("i");
+ QTest::addColumn<QTime>("exp");
+
+ QTest::newRow("Data0") << QTime(0,0,0) << 200 << QTime(0,3,20);
+ QTest::newRow("Data1") << QTime(0,0,0) << 20 << QTime(0,0,20);
+}
+
+void tst_QTime::addSecs()
+{
+ QFETCH( QTime, t1 );
+ QFETCH( int, i );
+ QTime t2;
+ t2 = t1.addSecs( i );
+ QFETCH( QTime, exp );
+ QCOMPARE( t2, exp );
+}
+
+void tst_QTime::addMSecs_data()
+{
+ QTest::addColumn<QTime>("t1");
+ QTest::addColumn<int>("i");
+ QTest::addColumn<QTime>("exp");
+
+ // start with testing positive values
+ QTest::newRow( "Data1_0") << QTime(0,0,0,0) << 2000 << QTime(0,0,2,0);
+ QTest::newRow( "Data1_1") << QTime(0,0,0,0) << 200 << QTime(0,0,0,200);
+ QTest::newRow( "Data1_2") << QTime(0,0,0,0) << 20 << QTime(0,0,0,20);
+ QTest::newRow( "Data1_3") << QTime(0,0,0,1) << 1 << QTime(0,0,0,2);
+ QTest::newRow( "Data1_4") << QTime(0,0,0,0) << 0 << QTime(0,0,0,0);
+
+ QTest::newRow( "Data2_0") << QTime(0,0,0,98) << 0 << QTime(0,0,0,98);
+ QTest::newRow( "Data2_1") << QTime(0,0,0,98) << 1 << QTime(0,0,0,99);
+ QTest::newRow( "Data2_2") << QTime(0,0,0,98) << 2 << QTime(0,0,0,100);
+ QTest::newRow( "Data2_3") << QTime(0,0,0,98) << 3 << QTime(0,0,0,101);
+
+ QTest::newRow( "Data3_0") << QTime(0,0,0,998) << 0 << QTime(0,0,0,998);
+ QTest::newRow( "Data3_1") << QTime(0,0,0,998) << 1 << QTime(0,0,0,999);
+ QTest::newRow( "Data3_2") << QTime(0,0,0,998) << 2 << QTime(0,0,1,0);
+ QTest::newRow( "Data3_3") << QTime(0,0,0,998) << 3 << QTime(0,0,1,1);
+
+ QTest::newRow( "Data4_0") << QTime(0,0,1,995) << 4 << QTime(0,0,1,999);
+ QTest::newRow( "Data4_1") << QTime(0,0,1,995) << 5 << QTime(0,0,2,0);
+ QTest::newRow( "Data4_2") << QTime(0,0,1,995) << 6 << QTime(0,0,2,1);
+ QTest::newRow( "Data4_3") << QTime(0,0,1,995) << 100 << QTime(0,0,2,95);
+ QTest::newRow( "Data4_4") << QTime(0,0,1,995) << 105 << QTime(0,0,2,100);
+
+ QTest::newRow( "Data5_0") << QTime(0,0,59,995) << 4 << QTime(0,0,59,999);
+ QTest::newRow( "Data5_1") << QTime(0,0,59,995) << 5 << QTime(0,1,0,0);
+ QTest::newRow( "Data5_2") << QTime(0,0,59,995) << 6 << QTime(0,1,0,1);
+ QTest::newRow( "Data5_3") << QTime(0,0,59,995) << 1006 << QTime(0,1,1,1);
+
+ QTest::newRow( "Data6_0") << QTime(0,59,59,995) << 4 << QTime(0,59,59,999);
+ QTest::newRow( "Data6_1") << QTime(0,59,59,995) << 5 << QTime(1,0,0,0);
+ QTest::newRow( "Data6_2") << QTime(0,59,59,995) << 6 << QTime(1,0,0,1);
+ QTest::newRow( "Data6_3") << QTime(0,59,59,995) << 106 << QTime(1,0,0,101);
+ QTest::newRow( "Data6_4") << QTime(0,59,59,995) << 1004 << QTime(1,0,0,999);
+ QTest::newRow( "Data6_5") << QTime(0,59,59,995) << 1005 << QTime(1,0,1,0);
+ QTest::newRow( "Data6_6") << QTime(0,59,59,995) << 61006 << QTime(1,1,1,1);
+
+ QTest::newRow( "Data7_0") << QTime(23,59,59,995) << 0 << QTime(23,59,59,995);
+ QTest::newRow( "Data7_1") << QTime(23,59,59,995) << 4 << QTime(23,59,59,999);
+ QTest::newRow( "Data7_2") << QTime(23,59,59,995) << 5 << QTime(0,0,0,0);
+ QTest::newRow( "Data7_3") << QTime(23,59,59,995) << 6 << QTime(0,0,0,1);
+ QTest::newRow( "Data7_4") << QTime(23,59,59,995) << 7 << QTime(0,0,0,2);
+
+ // must test negative values too...
+ QTest::newRow( "Data11_0") << QTime(0,0,2,0) << -2000 << QTime(0,0,0,0);
+ QTest::newRow( "Data11_1") << QTime(0,0,0,200) << -200 << QTime(0,0,0,0);
+ QTest::newRow( "Data11_2") << QTime(0,0,0,20) << -20 << QTime(0,0,0,0);
+ QTest::newRow( "Data11_3") << QTime(0,0,0,2) << -1 << QTime(0,0,0,1);
+ QTest::newRow( "Data11_4") << QTime(0,0,0,0) << -0 << QTime(0,0,0,0);
+
+ QTest::newRow( "Data12_0") << QTime(0,0,0,98) << -0 << QTime(0,0,0,98);
+ QTest::newRow( "Data12_1") << QTime(0,0,0,99) << -1 << QTime(0,0,0,98);
+ QTest::newRow( "Data12_2") << QTime(0,0,0,100) << -2 << QTime(0,0,0,98);
+ QTest::newRow( "Data12_3") << QTime(0,0,0,101) << -3 << QTime(0,0,0,98);
+
+ QTest::newRow( "Data13_0") << QTime(0,0,0,998) << -0 << QTime(0,0,0,998);
+ QTest::newRow( "Data13_1") << QTime(0,0,0,999) << -1 << QTime(0,0,0,998);
+ QTest::newRow( "Data13_2") << QTime(0,0,1,0) << -2 << QTime(0,0,0,998);
+ QTest::newRow( "Data13_3") << QTime(0,0,1,1) << -3 << QTime(0,0,0,998);
+
+ QTest::newRow( "Data14_0") << QTime(0,0,1,999) << -4 << QTime(0,0,1,995);
+ QTest::newRow( "Data14_1") << QTime(0,0,2,0) << -5 << QTime(0,0,1,995);
+ QTest::newRow( "Data14_2") << QTime(0,0,2,1) << -6 << QTime(0,0,1,995);
+ QTest::newRow( "Data14_3") << QTime(0,0,2,95) << -100 << QTime(0,0,1,995);
+ QTest::newRow( "Data14_4") << QTime(0,0,2,100) << -105 << QTime(0,0,1,995);
+
+ QTest::newRow( "Data15_0") << QTime(0,0,59,999) << -4 << QTime(0,0,59,995);
+ QTest::newRow( "Data15_1") << QTime(0,1,0,0) << -5 << QTime(0,0,59,995);
+ QTest::newRow( "Data15_2") << QTime(0,1,0,1) << -6 << QTime(0,0,59,995);
+ QTest::newRow( "Data15_3") << QTime(0,1,1,1) << -1006 << QTime(0,0,59,995);
+
+ QTest::newRow( "Data16_0") << QTime(0,59,59,999) << -4 << QTime(0,59,59,995);
+ QTest::newRow( "Data16_1") << QTime(1,0,0,0) << -5 << QTime(0,59,59,995);
+ QTest::newRow( "Data16_2") << QTime(1,0,0,1) << -6 << QTime(0,59,59,995);
+ QTest::newRow( "Data16_3") << QTime(1,0,0,101) << -106 << QTime(0,59,59,995);
+ QTest::newRow( "Data16_4") << QTime(1,0,0,999) << -1004 << QTime(0,59,59,995);
+ QTest::newRow( "Data16_5") << QTime(1,0,1,0) << -1005 << QTime(0,59,59,995);
+ QTest::newRow( "Data16_6") << QTime(1,1,1,1) << -61006 << QTime(0,59,59,995);
+
+ QTest::newRow( "Data17_0") << QTime(23,59,59,995) << -0 << QTime(23,59,59,995);
+ QTest::newRow( "Data17_1") << QTime(23,59,59,999) << -4 << QTime(23,59,59,995);
+ QTest::newRow( "Data17_2") << QTime(0,0,0,0) << -5 << QTime(23,59,59,995);
+ QTest::newRow( "Data17_3") << QTime(0,0,0,1) << -6 << QTime(23,59,59,995);
+ QTest::newRow( "Data17_4") << QTime(0,0,0,2) << -7 << QTime(23,59,59,995);
+}
+
+void tst_QTime::addMSecs()
+{
+ QFETCH( QTime, t1 );
+ QFETCH( int, i );
+ QTime t2;
+ t2 = t1.addMSecs( i );
+ QFETCH( QTime, exp );
+ QCOMPARE( t2, exp );
+}
+
+void tst_QTime::isNull()
+{
+ QTime t1;
+ QVERIFY( t1.isNull() );
+ QTime t2(0,0,0);
+ QVERIFY( !t2.isNull() );
+ QTime t3(0,0,1);
+ QVERIFY( !t3.isNull() );
+ QTime t4(0,0,0,1);
+ QVERIFY( !t4.isNull() );
+ QTime t5(23,59,59);
+ QVERIFY( !t5.isNull() );
+}
+
+void tst_QTime::isValid()
+{
+ QTime t1;
+ QVERIFY( !t1.isValid() );
+ QTime t2(24,0,0,0);
+ QVERIFY( !t2.isValid() );
+ QTime t3(23,60,0,0);
+ QVERIFY( !t3.isValid() );
+ QTime t4(23,0,-1,0);
+ QVERIFY( !t4.isValid() );
+ QTime t5(23,0,60,0);
+ QVERIFY( !t5.isValid() );
+ QTime t6(23,0,0,1000);
+ QVERIFY( !t6.isValid() );
+}
+
+void tst_QTime::hour_data()
+{
+ QTest::addColumn<int>("hour");
+ QTest::addColumn<int>("minute");
+ QTest::addColumn<int>("sec");
+ QTest::addColumn<int>("msec");
+
+ QTest::newRow( "data0" ) << 0 << 0 << 0 << 0;
+ QTest::newRow( "data1" ) << 0 << 0 << 0 << 1;
+ QTest::newRow( "data2" ) << 1 << 2 << 3 << 4;
+ QTest::newRow( "data3" ) << 2 << 12 << 13 << 65;
+ QTest::newRow( "data4" ) << 23 << 59 << 59 << 999;
+}
+
+void tst_QTime::hour()
+{
+ QFETCH( int, hour );
+ QFETCH( int, minute );
+ QFETCH( int, sec );
+ QFETCH( int, msec );
+
+ QTime t1( hour, minute, sec, msec );
+ QCOMPARE( t1.hour(), hour );
+ QCOMPARE( t1.minute(), minute );
+ QCOMPARE( t1.second(), sec );
+ QCOMPARE( t1.msec(), msec );
+}
+
+void tst_QTime::minute()
+{
+ DEPENDS_ON( "hour" );
+}
+
+void tst_QTime::second()
+{
+ DEPENDS_ON( "hour" );
+}
+
+void tst_QTime::msec()
+{
+ DEPENDS_ON( "hour" );
+}
+
+void tst_QTime::setHMS_data()
+{
+ QTest::addColumn<int>("hour");
+ QTest::addColumn<int>("minute");
+ QTest::addColumn<int>("sec");
+
+ QTest::newRow( "data0" ) << 0 << 0 << 0;
+ QTest::newRow( "data1" ) << 1 << 2 << 3;
+ QTest::newRow( "data2" ) << 0 << 59 << 0;
+ QTest::newRow( "data3" ) << 0 << 59 << 59;
+ QTest::newRow( "data4" ) << 23 << 0 << 0;
+ QTest::newRow( "data5" ) << 23 << 59 << 0;
+ QTest::newRow( "data6" ) << 23 << 59 << 59;
+}
+
+void tst_QTime::setHMS()
+{
+ QFETCH( int, hour );
+ QFETCH( int, minute );
+ QFETCH( int, sec );
+
+ QTime t(3,4,5);
+ t.setHMS( hour, minute, sec );
+ QCOMPARE( t.hour(), hour );
+ QCOMPARE( t.minute(), minute );
+ QCOMPARE( t.second(), sec );
+}
+
+void tst_QTime::secsTo_data()
+{
+ QTest::addColumn<QTime>("t1");
+ QTest::addColumn<QTime>("t2");
+ QTest::addColumn<int>("delta");
+
+ QTest::newRow( "data0" ) << QTime(0,0,0) << QTime(0,0,59) << 59;
+ QTest::newRow( "data1" ) << QTime(0,0,0) << QTime(0,1,0) << 60;
+ QTest::newRow( "data2" ) << QTime(0,0,0) << QTime(0,10,0) << 600;
+ QTest::newRow( "data3" ) << QTime(0,0,0) << QTime(23,59,59) << 86399;
+}
+
+void tst_QTime::secsTo()
+{
+ QFETCH( QTime, t1 );
+ QFETCH( QTime, t2 );
+ QFETCH( int, delta );
+
+ QCOMPARE( t1.secsTo( t2 ), delta );
+}
+
+void tst_QTime::msecsTo_data()
+{
+ QTest::addColumn<QTime>("t1");
+ QTest::addColumn<QTime>("t2");
+ QTest::addColumn<int>("delta");
+
+ QTest::newRow( "data0" ) << QTime(0,0,0,0) << QTime(0,0,0,0) << 0;
+ QTest::newRow( "data1" ) << QTime(0,0,0,0) << QTime(0,0,1,0) << 1000;
+ QTest::newRow( "data2" ) << QTime(0,0,0,0) << QTime(0,0,10,0) << 10000;
+ QTest::newRow( "data3" ) << QTime(0,0,0,0) << QTime(23,59,59,0) << 86399000;
+}
+
+void tst_QTime::msecsTo()
+{
+ QFETCH( QTime, t1 );
+ QFETCH( QTime, t2 );
+ QFETCH( int, delta );
+
+ QCOMPARE( t1.msecsTo( t2 ), delta );
+}
+
+void tst_QTime::operator_eq_eq()
+{
+ QTime t1(0,0,0,0);
+ QTime t2(0,0,0,0);
+ QVERIFY( t1 == t2 );
+
+ t1 = QTime(12,34,56,20);
+ t2 = QTime(12,34,56,20);
+ QVERIFY( t1 == t2 );
+
+ t1 = QTime(01,34,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( !(t1 == t2) );
+}
+
+void tst_QTime::operator_not_eq()
+{
+ QTime t1(0,0,0,0);
+ QTime t2(0,0,0,0);
+ QVERIFY( !(t1 != t2) );
+
+ t1 = QTime(12,34,56,20);
+ t2 = QTime(12,34,56,20);
+ QVERIFY( !(t1 != t2) );
+
+ t1 = QTime(01,34,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( t1 != t2 );
+}
+
+void tst_QTime::operator_lt()
+{
+ QTime t1(0,0,0,0);
+ QTime t2(0,0,0,0);
+ QVERIFY( !(t1 < t2) );
+
+ t1 = QTime(12,34,56,20);
+ t2 = QTime(12,34,56,30);
+ QVERIFY( t1 < t2 );
+
+ t1 = QTime(13,34,46,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( t1 < t2 );
+
+ t1 = QTime(13,24,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( t1 < t2 );
+
+ t1 = QTime(12,34,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( t1 < t2 );
+
+ t1 = QTime(14,34,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( !(t1 < t2) );
+
+ t1 = QTime(13,44,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( !(t1 < t2) );
+
+ t1 = QTime(13,34,56,20);
+ t2 = QTime(13,34,46,20);
+ QVERIFY( !(t1 < t2) );
+
+ t1 = QTime(13,44,56,30);
+ t2 = QTime(13,44,56,20);
+ QVERIFY( !(t1 < t2) );
+}
+
+void tst_QTime::operator_gt()
+{
+ QTime t1(0,0,0,0);
+ QTime t2(0,0,0,0);
+ QVERIFY( !(t1 > t2) );
+
+ t1 = QTime(12,34,56,20);
+ t2 = QTime(12,34,56,30);
+ QVERIFY( !(t1 > t2) );
+
+ t1 = QTime(13,34,46,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( !(t1 > t2) );
+
+ t1 = QTime(13,24,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( !(t1 > t2) );
+
+ t1 = QTime(12,34,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( !(t1 > t2) );
+
+ t1 = QTime(14,34,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( t1 > t2 );
+
+ t1 = QTime(13,44,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( t1 > t2 );
+
+ t1 = QTime(13,34,56,20);
+ t2 = QTime(13,34,46,20);
+ QVERIFY( t1 > t2 );
+
+ t1 = QTime(13,44,56,30);
+ t2 = QTime(13,44,56,20);
+ QVERIFY( t1 > t2 );
+}
+
+void tst_QTime::operator_lt_eq()
+{
+ QTime t1(0,0,0,0);
+ QTime t2(0,0,0,0);
+ QVERIFY( t1 <= t2 );
+
+ t1 = QTime(12,34,56,20);
+ t2 = QTime(12,34,56,30);
+ QVERIFY( t1 <= t2 );
+
+ t1 = QTime(13,34,46,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( t1 <= t2 );
+
+ t1 = QTime(13,24,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( t1 <= t2 );
+
+ t1 = QTime(12,34,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( t1 <= t2 );
+
+ t1 = QTime(14,34,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( !(t1 <= t2) );
+
+ t1 = QTime(13,44,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( !(t1 <= t2) );
+
+ t1 = QTime(13,34,56,20);
+ t2 = QTime(13,34,46,20);
+ QVERIFY( !(t1 <= t2) );
+
+ t1 = QTime(13,44,56,30);
+ t2 = QTime(13,44,56,20);
+ QVERIFY( !(t1 <= t2) );
+}
+
+void tst_QTime::operator_gt_eq()
+{
+ QTime t1(0,0,0,0);
+ QTime t2(0,0,0,0);
+ QVERIFY( t1 >= t2 );
+
+ t1 = QTime(12,34,56,20);
+ t2 = QTime(12,34,56,30);
+ QVERIFY( !(t1 >= t2) );
+
+ t1 = QTime(13,34,46,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( !(t1 >= t2) );
+
+ t1 = QTime(13,24,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( !(t1 >= t2) );
+
+ t1 = QTime(12,34,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( !(t1 >= t2) );
+
+ t1 = QTime(14,34,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( t1 >= t2 );
+
+ t1 = QTime(13,44,56,20);
+ t2 = QTime(13,34,56,20);
+ QVERIFY( t1 >= t2 );
+
+ t1 = QTime(13,34,56,20);
+ t2 = QTime(13,34,46,20);
+ QVERIFY( t1 >= t2 );
+
+ t1 = QTime(13,44,56,30);
+ t2 = QTime(13,44,56,20);
+ QVERIFY( t1 >= t2 );
+}
+
+void tst_QTime::fromString_data()
+{
+ // Since we can't define an element of Qt::DateFormat, t1 will be the time
+ // expected when we have a TextDate, and t2 will be the time expected when
+ // we have an ISODate.
+
+ QTest::addColumn<QString>("str");
+ QTest::addColumn<QTime>("t1");
+ QTest::addColumn<QTime>("t2");
+
+ QTest::newRow( "data0" ) << QString("00:00:00") << QTime(0,0,0,0) << QTime(0,0,0,0);
+ QTest::newRow( "data1" ) << QString("10:12:34") << QTime(10,12,34,0) << QTime(10,12,34,0);
+ QTest::newRow( "data2" ) << QString("19:03:54.998601") << QTime(19, 3, 54, 999) << QTime(19, 3, 54, 999);
+ QTest::newRow( "data3" ) << QString("19:03:54.999601") << QTime(19, 3, 54, 999) << QTime(19, 3, 54, 999);
+}
+
+void tst_QTime::fromString()
+{
+ QFETCH( QString, str );
+ QFETCH( QTime, t1 );
+ QFETCH( QTime, t2 );
+
+ QCOMPARE( t1, QTime::fromString( str, Qt::TextDate ) );
+ QCOMPARE( t2, QTime::fromString( str, Qt::ISODate ) );
+}
+
+
+void tst_QTime::fromStringFormat_data()
+{
+ QTest::addColumn<QString>("str");
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QTime>("t");
+
+ QTest::newRow( "data0" ) << QString("02:23PM") << QString("hh:mmAP") << QTime(14,23,0,0);
+ QTest::newRow( "data1" ) << QString("02:23pm") << QString("hh:mmap") << QTime(14,23,0,0);
+}
+
+void tst_QTime::fromStringFormat()
+{
+ QFETCH(QString, str);
+ QFETCH(QString, format);
+ QFETCH(QTime, t);
+
+ QCOMPARE(t, QTime::fromString( str, format));
+
+}
+
+void tst_QTime::toString_data()
+{
+ // Since we can't define an element of Qt::DateFormat, str1 will be the string
+ // in TextDate format, and str2 will be the time in ISODate format.
+
+ QTest::addColumn<QTime>("t");
+ QTest::addColumn<QString>("str1");
+ QTest::addColumn<QString>("str2");
+
+ QTest::newRow( "data0" ) << QTime(0,0,0,0) << QString("00:00:00") << QString("00:00:00");
+ QTest::newRow( "data1" ) << QTime(10,12,34,0) << QString("10:12:34") << QString("10:12:34");
+}
+
+void tst_QTime::toString()
+{
+ QFETCH( QTime, t );
+ QFETCH( QString, str1 );
+ QFETCH( QString, str2 );
+
+ QCOMPARE( str1, t.toString( Qt::TextDate ) );
+ QCOMPARE( str2, t.toString( Qt::ISODate ) );
+}
+
+void tst_QTime::toString_format_data()
+{
+ QTest::addColumn<QTime>("t");
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QString>("str");
+
+ QTest::newRow( "data0" ) << QTime(0,0,0,0) << QString("h:m:s:z") << QString("0:0:0:0");
+ QTest::newRow( "data1" ) << QTime(10,12,34,53) << QString("hh:mm:ss:zzz") << QString("10:12:34:053");
+ QTest::newRow( "data2" ) << QTime(10,12,34,45) << QString("hh:m:ss:z") << QString("10:12:34:45");
+ QTest::newRow( "data3" ) << QTime(10,12,34,45) << QString("hh:ss ap") << QString("10:34 am");
+ QTest::newRow( "data4" ) << QTime(22,12,34,45) << QString("hh:zzz AP") << QString("10:045 PM");
+ QTest::newRow( "data5" ) << QTime(230,230,230,230) << QString("hh:mm:ss") << QString();
+}
+
+void tst_QTime::toString_format()
+{
+ QFETCH( QTime, t );
+ QFETCH( QString, format );
+ QFETCH( QString, str );
+
+ QCOMPARE( t.toString( format ), str );
+}
+
+void tst_QTime::toStringLocale()
+{
+ QTime time(18, 30);
+ QCOMPARE(time.toString(Qt::SystemLocaleDate),
+ QLocale::system().toString(time, QLocale::ShortFormat));
+ QCOMPARE(time.toString(Qt::LocaleDate),
+ QLocale().toString(time, QLocale::ShortFormat));
+ QLocale::setDefault(QLocale::German);
+ QCOMPARE(time.toString(Qt::SystemLocaleDate),
+ QLocale::system().toString(time, QLocale::ShortFormat));
+ QCOMPARE(time.toString(Qt::LocaleDate),
+ QLocale().toString(time, QLocale::ShortFormat));
+}
+
+QTEST_APPLESS_MAIN(tst_QTime)
+#include "tst_qtime.moc"
diff --git a/tests/auto/corelib/tools/qtimeline/.gitignore b/tests/auto/corelib/tools/qtimeline/.gitignore
new file mode 100644
index 0000000000..fa0e347d80
--- /dev/null
+++ b/tests/auto/corelib/tools/qtimeline/.gitignore
@@ -0,0 +1 @@
+tst_qtimeline
diff --git a/tests/auto/corelib/tools/qtimeline/qtimeline.pro b/tests/auto/corelib/tools/qtimeline/qtimeline.pro
new file mode 100644
index 0000000000..9be717dba8
--- /dev/null
+++ b/tests/auto/corelib/tools/qtimeline/qtimeline.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT = core
+SOURCES += tst_qtimeline.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp b/tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp
new file mode 100644
index 0000000000..176688b809
--- /dev/null
+++ b/tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp
@@ -0,0 +1,730 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qtimeline.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QTimeLine : public QObject {
+ Q_OBJECT
+
+public:
+ tst_QTimeLine();
+ virtual ~tst_QTimeLine();
+
+public Q_SLOTS:
+ void init();
+ void cleanup();
+
+private slots:
+ void range();
+ void currentTime();
+ void duration();
+ void frameRate();
+ void value();
+ void currentFrame();
+ void loopCount();
+ void interpolation();
+ void reverse_data();
+ void reverse();
+ //void toggle();
+ //void reset(); ### todo
+ void frameChanged();
+ void stopped();
+ void finished();
+ void isRunning();
+ void multipleTimeLines();
+ void sineCurve();
+ void cosineCurve();
+ void outOfRange();
+ void stateInFinishedSignal();
+ void resume();
+ void restart();
+
+protected slots:
+ void finishedSlot();
+
+protected:
+ QTimeLine::State state;
+ QTimeLine * view;
+};
+
+tst_QTimeLine::tst_QTimeLine()
+{
+}
+
+tst_QTimeLine::~tst_QTimeLine()
+{
+}
+
+void tst_QTimeLine::init()
+{
+}
+
+void tst_QTimeLine::cleanup()
+{
+}
+#include <qdebug.h>
+
+void tst_QTimeLine::range()
+{
+#ifdef Q_OS_WINCE //On WinCE timer resolution is bad - using longer times instead
+ QTimeLine timeLine(2000);
+#else
+ QTimeLine timeLine(200);
+#endif
+ QCOMPARE(timeLine.startFrame(), 0);
+ QCOMPARE(timeLine.endFrame(), 0);
+ timeLine.setFrameRange(0, 1);
+ QCOMPARE(timeLine.startFrame(), 0);
+ QCOMPARE(timeLine.endFrame(), 1);
+ timeLine.setFrameRange(10, 20);
+ QCOMPARE(timeLine.startFrame(), 10);
+ QCOMPARE(timeLine.endFrame(), 20);
+
+ timeLine.setStartFrame(6);
+ QCOMPARE(timeLine.startFrame(), 6);
+ timeLine.setEndFrame(16);
+ QCOMPARE(timeLine.endFrame(), 16);
+
+ // Verify that you can change the range in the timeLine
+ timeLine.setFrameRange(10, 20);
+ QSignalSpy spy(&timeLine, SIGNAL(frameChanged(int)));
+ timeLine.start();
+#ifdef Q_OS_WINCE
+ QTest::qWait(1000);
+#else
+ QTest::qWait(100);
+#endif
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ int oldValue = timeLine.currentFrame();
+ timeLine.setFrameRange(0, 5);
+ QVERIFY(timeLine.currentFrame() < oldValue);
+ timeLine.setEndFrame(100);
+ timeLine.setStartFrame(50);
+ QVERIFY(timeLine.currentFrame() > oldValue);
+ timeLine.setFrameRange(0, 5);
+#ifdef Q_OS_WINCE
+ QTest::qWait(500);
+#else
+ QTest::qWait(50);
+#endif
+ QVERIFY(spy.count() > 1);
+ QVERIFY(timeLine.currentFrame() < oldValue);
+}
+
+void tst_QTimeLine::currentTime()
+{
+ QTimeLine timeLine(2000);
+ timeLine.setUpdateInterval((timeLine.duration()/2) / 33);
+ qRegisterMetaType<qreal>("qreal");
+ QSignalSpy spy(&timeLine, SIGNAL(valueChanged(qreal)));
+ timeLine.setFrameRange(10, 20);
+ QCOMPARE(timeLine.currentTime(), 0);
+ timeLine.start();
+ QTest::qWait(timeLine.duration()/2);
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ QVERIFY(timeLine.currentTime() > timeLine.duration()/2 - timeLine.duration()/10);
+ QVERIFY(timeLine.currentTime() < timeLine.duration()/2 + timeLine.duration()/10);
+ QTest::qWait(timeLine.duration()/4 + timeLine.duration());
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ QCOMPARE(timeLine.currentTime(), timeLine.duration());
+
+ spy.clear();
+ timeLine.setCurrentTime(timeLine.duration()/2);
+ timeLine.setCurrentTime(timeLine.duration()/2);
+ QCOMPARE(spy.count(), 1);
+ spy.clear();
+ QCOMPARE(timeLine.currentTime(), timeLine.duration()/2);
+ timeLine.resume();
+ // Let it update on its own
+ QTest::qWait(timeLine.duration()/4);
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ QVERIFY(timeLine.currentTime() > timeLine.duration()/2);
+ QVERIFY(timeLine.currentTime() < timeLine.duration());
+ QTest::qWait(timeLine.duration()/4 + timeLine.duration());
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ QVERIFY(timeLine.currentTime() == timeLine.duration());
+
+ // Reverse should decrease the currentTime
+ timeLine.setCurrentTime(timeLine.duration()/2);
+ timeLine.start();
+ // Let it update on its own
+ QTest::qWait(timeLine.duration()/4);
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ int currentTime = timeLine.currentTime();
+ timeLine.setDirection(QTimeLine::Backward);
+ QTest::qWait(timeLine.duration()/4);
+ QVERIFY(timeLine.currentTime() < currentTime);
+ timeLine.stop();
+}
+
+void tst_QTimeLine::duration()
+{
+ QTimeLine timeLine(200);
+ timeLine.setFrameRange(10, 20);
+ QCOMPARE(timeLine.duration(), 200);
+ timeLine.setDuration(1000);
+ QCOMPARE(timeLine.duration(), 1000);
+
+ timeLine.start();
+ QTest::qWait(999);
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ QVERIFY(timeLine.currentTime() > 0.9);
+ QTest::qWait(50);
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ // The duration shouldn't change
+ QCOMPARE(timeLine.duration(), 1000);
+}
+
+void tst_QTimeLine::frameRate()
+{
+ QTimeLine timeLine;
+ timeLine.setFrameRange(10, 20);
+ QCOMPARE(timeLine.updateInterval(), 1000 / 25);
+ timeLine.setUpdateInterval(1000 / 60);
+ QCOMPARE(timeLine.updateInterval(), 1000 / 60);
+
+ // Default speed
+ timeLine.setUpdateInterval(1000 / 33);
+ QSignalSpy spy(&timeLine, SIGNAL(frameChanged(int)));
+ timeLine.start();
+ QTest::qWait(timeLine.duration()*2);
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ int slowCount = spy.count();
+
+ // Faster!!
+ timeLine.setUpdateInterval(1000 / 100);
+ spy.clear();
+ timeLine.setCurrentTime(0);
+ timeLine.start();
+ QTest::qWait(timeLine.duration()*2);
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ QVERIFY(slowCount < spy.count());
+}
+
+void tst_QTimeLine::value()
+{
+ QTimeLine timeLine(2000);
+ QVERIFY(timeLine.currentValue() == 0.0);
+
+ // Default speed
+ qRegisterMetaType<qreal>("qreal");
+ QSignalSpy spy(&timeLine, SIGNAL(valueChanged(qreal)));
+ timeLine.start();
+ QTest::qWait(timeLine.duration()/3);
+ QVERIFY(timeLine.currentValue() > 0);
+ QTest::qWait(timeLine.duration());
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ qreal currentValue = timeLine.currentValue();
+ QVERIFY(currentValue == 1);
+ QVERIFY(spy.count() > 0);
+
+ // Reverse should decrease the value
+ timeLine.setCurrentTime(100);
+ timeLine.start();
+ // Let it update on its own
+ QTest::qWait(500);
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ qreal value = timeLine.currentValue();
+ timeLine.setDirection(QTimeLine::Backward);
+ QTest::qWait(1000);
+ QVERIFY(timeLine.currentValue() < value);
+ timeLine.stop();
+}
+
+void tst_QTimeLine::currentFrame()
+{
+ QTimeLine timeLine(2000);
+ timeLine.setFrameRange(10, 20);
+ QCOMPARE(timeLine.currentFrame(), 10);
+
+ // Default speed
+ QSignalSpy spy(&timeLine, SIGNAL(frameChanged(int)));
+ timeLine.start();
+ QTest::qWait(timeLine.duration()/3);
+ QVERIFY(timeLine.currentFrame() > 10);
+ QTest::qWait(timeLine.duration());
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ QCOMPARE(timeLine.currentFrame(), 20);
+
+ // Reverse should decrease the value
+ timeLine.setCurrentTime(timeLine.duration()/2);
+ timeLine.start();
+ // Let it update on its own
+ QTest::qWait(timeLine.duration()/4);
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ int value = timeLine.currentFrame();
+ timeLine.setDirection(QTimeLine::Backward);
+ QTest::qWait(timeLine.duration()/2);
+ QVERIFY(timeLine.currentFrame() < value);
+ timeLine.stop();
+}
+
+void tst_QTimeLine::loopCount()
+{
+ QTimeLine timeLine(200);
+ QCOMPARE(timeLine.loopCount(), 1);
+ timeLine.setFrameRange(10, 20);
+ QCOMPARE(timeLine.loopCount(), 1);
+ timeLine.setLoopCount(0);
+ QCOMPARE(timeLine.loopCount(), 0);
+
+ // Default speed infiniti looping
+ QSignalSpy spy(&timeLine, SIGNAL(frameChanged(int)));
+ timeLine.start();
+ QTest::qWait(timeLine.duration());
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ //QCOMPARE(timeLine.currentFrame(), 20);
+ QTest::qWait(timeLine.duration()*6);
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ QVERIFY(timeLine.currentTime() >= 0);
+ QVERIFY(timeLine.currentFrame() >= 10);
+ QVERIFY(timeLine.currentFrame() <= 20);
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ timeLine.stop();
+
+ timeLine.setDuration(2500); // ### some platforms have a very low resolution timer
+ timeLine.setFrameRange(0, 2);
+ timeLine.setLoopCount(4);
+
+ QSignalSpy finishedSpy(&timeLine, SIGNAL(finished()));
+ QSignalSpy frameChangedSpy(&timeLine, SIGNAL(frameChanged(int)));
+ QEventLoop loop;
+ connect(&timeLine, SIGNAL(finished()), &loop, SLOT(quit()));
+
+
+ for(int i=0;i<2;i++) {
+
+ timeLine.start();
+ //we clear te list after the start so we don't catch
+ //a frameChanged signal for the frame 0 at the beginning
+ finishedSpy.clear();
+ frameChangedSpy.clear();
+
+ loop.exec();
+
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(frameChangedSpy.count(), 11);
+ for (int i = 0; i < 11; ++i) {
+ QCOMPARE(frameChangedSpy.at(i).at(0).toInt(), (i+1) % 3);
+ }
+ }
+
+ timeLine.setDirection(QTimeLine::Backward);
+ timeLine.start();
+ loop.exec();
+
+ QCOMPARE(finishedSpy.count(), 2);
+ QCOMPARE(frameChangedSpy.count(), 22);
+ for (int i = 11; i < 22; ++i) {
+ QCOMPARE(frameChangedSpy.at(i).at(0).toInt(), 2 - (i+2) % 3);
+ }
+}
+
+void tst_QTimeLine::interpolation()
+{
+ QTimeLine timeLine(400);
+ QCOMPARE(timeLine.curveShape(), QTimeLine::EaseInOutCurve);
+ timeLine.setFrameRange(100, 200);
+ timeLine.setCurveShape(QTimeLine::LinearCurve);
+ QCOMPARE(timeLine.curveShape(), QTimeLine::LinearCurve);
+
+ // smooth
+ timeLine.setCurveShape(QTimeLine::EaseInOutCurve);
+ timeLine.start();
+ QTest::qWait(100);
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ int firstValue = timeLine.currentFrame();
+ QTest::qWait(200);
+ int endValue = timeLine.currentFrame();
+ timeLine.stop(); // ### todo reset?
+ timeLine.setCurrentTime(0); // ### todo reset?
+
+ // linear
+ timeLine.setCurveShape(QTimeLine::LinearCurve);
+ timeLine.start();
+ QTest::qWait(100);
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+
+ // Smooth accellerates slowly so in the beginning so it is farther behind
+ QVERIFY(firstValue < timeLine.currentFrame());
+ QTest::qWait(200);
+ QVERIFY(endValue > timeLine.currentFrame());
+ timeLine.stop();
+}
+
+void tst_QTimeLine::reverse_data()
+{
+ QTest::addColumn<int>("duration");
+ QTest::addColumn<int>("start");
+ QTest::addColumn<int>("end");
+ QTest::addColumn<int>("direction");
+ QTest::addColumn<int>("direction2");
+ QTest::addColumn<int>("direction3");
+ QTest::addColumn<int>("startTime");
+ QTest::addColumn<int>("currentFrame");
+ QTest::addColumn<qreal>("currentValue");
+ QTest::addColumn<int>("wait");
+ QTest::addColumn<int>("state");
+ QTest::addColumn<int>("wait2");
+
+ QTest::newRow("start at end") << 200 << 1000 << 2000 << (int)QTimeLine::Backward << (int)QTimeLine::Forward << (int)QTimeLine::Backward << 200 << 2000 << qreal(1.0) << 40 << (int)QTimeLine::Running << 140;
+ QTest::newRow("start at half") << 200 << 1000 << 2000 << (int)QTimeLine::Backward << (int)QTimeLine::Forward << (int)QTimeLine::Backward << 100 << 1500 << qreal(0.5) << 40 << (int)QTimeLine::Running << 140;
+ QTest::newRow("start at quarter") << 200 << 1000 << 2000 << (int)QTimeLine::Backward << (int)QTimeLine::Forward << (int)QTimeLine::Backward << 50 << 1250 << qreal(0.25) << 40 << (int)QTimeLine::Running << 140;
+}
+
+void tst_QTimeLine::reverse()
+{
+ QFETCH(int, duration);
+ QFETCH(int, start);
+ QFETCH(int, end);
+ QFETCH(int, direction);
+ QFETCH(int, direction2);
+ QFETCH(int, direction3);
+ QFETCH(int, startTime);
+ QFETCH(int, currentFrame);
+ QFETCH(qreal, currentValue);
+ QFETCH(int, wait);
+ QFETCH(int, state);
+ QFETCH(int, wait2);
+
+ QTimeLine timeLine(duration);
+ timeLine.setCurveShape(QTimeLine::LinearCurve);
+ timeLine.setFrameRange(start, end);
+
+ timeLine.setDirection((QTimeLine::Direction)direction);
+ timeLine.setDirection((QTimeLine::Direction)direction2);
+ timeLine.setDirection((QTimeLine::Direction)direction3);
+ QCOMPARE(timeLine.direction(), ((QTimeLine::Direction)direction));
+
+ timeLine.setCurrentTime(startTime);
+ timeLine.setDirection((QTimeLine::Direction)direction);
+ timeLine.setDirection((QTimeLine::Direction)direction2);
+ timeLine.setDirection((QTimeLine::Direction)direction3);
+
+ QCOMPARE(timeLine.currentFrame(), currentFrame);
+ QCOMPARE(timeLine.currentValue(), currentValue);
+ timeLine.start();
+
+ QTest::qWait(wait);
+ QCOMPARE(timeLine.state(), (QTimeLine::State)state);
+ int firstValue = timeLine.currentFrame();
+ timeLine.setDirection((QTimeLine::Direction)direction2);
+ timeLine.setDirection((QTimeLine::Direction)direction3);
+ timeLine.setDirection((QTimeLine::Direction)direction2);
+ timeLine.setDirection((QTimeLine::Direction)direction3);
+ QTest::qWait(wait2);
+ int endValue = timeLine.currentFrame();
+ QVERIFY(endValue < firstValue);
+
+
+}
+
+/*
+void tst_QTimeLine::toggle()
+{
+ QTimeLine timeLine;
+ QCOMPARE(timeLine.isReverse(), false);
+ timeLine.toggle();
+ QCOMPARE(timeLine.isReverse(), true);
+ timeLine.toggle();
+ QCOMPARE(timeLine.isReverse(), false);
+}
+*/
+/*
+void tst_QTimeLine::reset()
+{
+ QTimeLine timeLine;
+ timeLine.setFrameRange(10,100);
+
+ timeLine.setLoopCount(-1);
+ QSignalSpy spy(&timeLine, SIGNAL(frameChanged(int)));
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ timeLine.start();
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ int wait = timeLine.duration()*5/3;
+ QTest::qWait(wait);
+ QVERIFY(spy.count() >= 1 );
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ timeLine.setDirection(QTimeLine::Backward);
+ QVERIFY(timeLine.currentFrame() != 10);
+ QVERIFY(timeLine.currentTime() != 0);
+ QVERIFY(timeLine.state() != QTimeLine::Forward);
+ QVERIFY(timeLine.loopCount() != 0);
+
+ timeLine.reset();
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ QCOMPARE(timeLine.currentFrame(), timeLine.startFrame());
+ QCOMPARE(timeLine.currentTime(), 0);
+ timeLine.setDirection(QTimeLine::Backward);
+ QCOMPARE(timeLine.loopCount(), 1);
+ QCOMPARE(timeLine.startFrame(), 10);
+ QCOMPARE(timeLine.endFrame(), 100);
+}
+*/
+void tst_QTimeLine::frameChanged()
+{
+ QTimeLine timeLine;
+ timeLine.setFrameRange(0,9);
+ timeLine.setUpdateInterval(1000);
+ QSignalSpy spy(&timeLine, SIGNAL(frameChanged(int)));
+ timeLine.start();
+ QTest::qWait(timeLine.duration()*2);
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ // Probably 10
+ QVERIFY(spy.count() <= 10 && spy.count() > 0);
+
+ //timeLine.reset(); ### todo
+ timeLine.setUpdateInterval(5);
+ spy.clear();
+ timeLine.setCurrentTime(0);
+ timeLine.start();
+ QTest::qWait(timeLine.duration()*2);
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ // Probably 1
+ QVERIFY(spy.count() <= 10 && spy.count() > 0);
+}
+
+void tst_QTimeLine::stopped()
+{
+ QTimeLine timeLine;
+ timeLine.setFrameRange(0, 9);
+ qRegisterMetaType<QTimeLine::State>("QTimeLine::State");
+ QSignalSpy spy(&timeLine, SIGNAL(stateChanged(QTimeLine::State)));
+ timeLine.start();
+ QTest::qWait(timeLine.duration()*2);
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ QCOMPARE(spy.count(), 2);
+ // timeLine.reset(); ### todo
+ spy.clear();
+ //int currentFrame = timeLine.currentFrame();
+ //int currentCurrentTime = timeLine.currentTime();
+ timeLine.start();
+ timeLine.stop();
+ QCOMPARE(spy.count(), 2);
+ //QCOMPARE(timeLine.currentFrame(), currentFrame); ### Behavioral change
+ //QCOMPARE(timeLine.currentTime(), currentCurrentTime);
+ timeLine.setDirection(QTimeLine::Backward);
+ QCOMPARE(timeLine.loopCount(), 1);
+}
+
+void tst_QTimeLine::finished()
+{
+ QTimeLine timeLine;
+ timeLine.setFrameRange(0,9);
+ QSignalSpy spy(&timeLine, SIGNAL(finished()));
+ timeLine.start();
+ QTest::qWait(timeLine.duration()*2);
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ QCOMPARE(spy.count(), 1);
+
+ spy.clear();
+ timeLine.start();
+ timeLine.stop();
+ QCOMPARE(spy.count(), 0);
+}
+
+void tst_QTimeLine::isRunning()
+{
+ QTimeLine timeLine;
+ timeLine.setFrameRange(0,9);
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+ timeLine.start();
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ timeLine.stop();
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+
+ timeLine.start();
+ QTest::qWait(timeLine.duration()*2);
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+}
+
+void tst_QTimeLine::multipleTimeLines()
+{
+ // Stopping a timer shouldn't affect the other timers
+ QTimeLine timeLine(200);
+ timeLine.setFrameRange(0,99);
+ QSignalSpy spy(&timeLine, SIGNAL(finished()));
+
+ QTimeLine timeLineKiller;
+ timeLineKiller.setFrameRange(0,99);
+
+ timeLineKiller.start();
+ timeLine.start();
+ timeLineKiller.stop();
+ QTest::qWait(timeLine.duration()*2);
+ QCOMPARE(spy.count(), 1);
+}
+
+void tst_QTimeLine::sineCurve()
+{
+ QTimeLine timeLine(1000);
+ timeLine.setCurveShape(QTimeLine::SineCurve);
+ QCOMPARE(timeLine.valueForTime(0), qreal(0));
+ QCOMPARE(timeLine.valueForTime(250), qreal(0.5));
+ QCOMPARE(timeLine.valueForTime(500), qreal(1));
+ QCOMPARE(timeLine.valueForTime(750), qreal(0.5));
+ QCOMPARE(timeLine.valueForTime(1000), qreal(0));
+}
+
+void tst_QTimeLine::cosineCurve()
+{
+ QTimeLine timeLine(1000);
+ timeLine.setCurveShape(QTimeLine::CosineCurve);
+ QCOMPARE(timeLine.valueForTime(0), qreal(0.5));
+ QCOMPARE(timeLine.valueForTime(250), qreal(1));
+ QCOMPARE(timeLine.valueForTime(500), qreal(0.5));
+ QCOMPARE(timeLine.valueForTime(750), qreal(0));
+ QCOMPARE(timeLine.valueForTime(1000), qreal(0.5));
+}
+
+void tst_QTimeLine::outOfRange()
+{
+ QTimeLine timeLine(1000);
+ QCOMPARE(timeLine.valueForTime(-100), qreal(0));
+ QCOMPARE(timeLine.valueForTime(2000), qreal(1));
+
+ timeLine.setCurveShape(QTimeLine::SineCurve);
+ QCOMPARE(timeLine.valueForTime(2000), qreal(0));
+}
+
+void tst_QTimeLine::stateInFinishedSignal()
+{
+ QTimeLine timeLine(50);
+
+ connect(&timeLine, SIGNAL(finished()), this, SLOT(finishedSlot()));
+ state = QTimeLine::State(-1);
+
+ timeLine.start();
+ QTest::qWait(250);
+
+ QCOMPARE(state, QTimeLine::NotRunning);
+}
+
+void tst_QTimeLine::finishedSlot()
+{
+ QTimeLine *timeLine = qobject_cast<QTimeLine *>(sender());
+ if (timeLine)
+ state = timeLine->state();
+}
+
+void tst_QTimeLine::resume()
+{
+ QTimeLine timeLine(1000);
+ {
+ QCOMPARE(timeLine.currentTime(), 0);
+ timeLine.start();
+ QTest::qWait(250);
+ timeLine.stop();
+ int oldCurrentTime = timeLine.currentTime();
+ QVERIFY(oldCurrentTime > 0);
+ QVERIFY(oldCurrentTime < 1000);
+ timeLine.resume();
+ QTest::qWait(250);
+ timeLine.stop();
+ int currentTime = timeLine.currentTime();
+ QVERIFY(currentTime > oldCurrentTime);
+ QVERIFY(currentTime < 1000);
+ }
+ timeLine.setDirection(QTimeLine::Backward);
+ {
+ timeLine.setCurrentTime(1000);
+ QCOMPARE(timeLine.currentTime(), 1000);
+ timeLine.start();
+ QTest::qWait(250);
+ timeLine.stop();
+ int oldCurrentTime = timeLine.currentTime();
+ QVERIFY(oldCurrentTime < 1000);
+ QVERIFY(oldCurrentTime > 0);
+ timeLine.resume();
+ QTest::qWait(250);
+ timeLine.stop();
+ int currentTime = timeLine.currentTime();
+ QVERIFY(currentTime < oldCurrentTime);
+ QVERIFY(currentTime > 0);
+ }
+}
+
+void tst_QTimeLine::restart()
+{
+ QTimeLine timeLine(100);
+ timeLine.setFrameRange(0,9);
+
+ timeLine.start();
+ QTest::qWait(timeLine.duration()*2);
+ QCOMPARE(timeLine.currentFrame(), timeLine.endFrame());
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+
+ // A restart with the same duration
+ timeLine.start();
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ QCOMPARE(timeLine.currentFrame(), timeLine.startFrame());
+ QCOMPARE(timeLine.currentTime(), 0);
+ QTest::qWait(250);
+ QCOMPARE(timeLine.currentFrame(), timeLine.endFrame());
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+
+ // Set a smaller duration and restart
+ timeLine.setDuration(50);
+ timeLine.start();
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ QCOMPARE(timeLine.currentFrame(), timeLine.startFrame());
+ QCOMPARE(timeLine.currentTime(), 0);
+ QTest::qWait(250);
+ QCOMPARE(timeLine.currentFrame(), timeLine.endFrame());
+ QCOMPARE(timeLine.state(), QTimeLine::NotRunning);
+
+ // Set a longer duration and restart
+ timeLine.setDuration(150);
+ timeLine.start();
+ QCOMPARE(timeLine.state(), QTimeLine::Running);
+ QCOMPARE(timeLine.currentFrame(), timeLine.startFrame());
+ QCOMPARE(timeLine.currentTime(), 0);
+}
+
+QTEST_MAIN(tst_QTimeLine)
+
+#include "tst_qtimeline.moc"
diff --git a/tests/auto/corelib/tools/qvarlengtharray/.gitignore b/tests/auto/corelib/tools/qvarlengtharray/.gitignore
new file mode 100644
index 0000000000..d085e835c7
--- /dev/null
+++ b/tests/auto/corelib/tools/qvarlengtharray/.gitignore
@@ -0,0 +1 @@
+tst_qvarlengtharray
diff --git a/tests/auto/corelib/tools/qvarlengtharray/qvarlengtharray.pro b/tests/auto/corelib/tools/qvarlengtharray/qvarlengtharray.pro
new file mode 100644
index 0000000000..183da1b938
--- /dev/null
+++ b/tests/auto/corelib/tools/qvarlengtharray/qvarlengtharray.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+QT = core
+SOURCES += tst_qvarlengtharray.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp b/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp
new file mode 100644
index 0000000000..fd67758cb6
--- /dev/null
+++ b/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp
@@ -0,0 +1,606 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qvarlengtharray.h>
+#include <qvariant.h>
+
+const int N = 1;
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QVarLengthArray : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QVarLengthArray() {}
+ virtual ~tst_QVarLengthArray() {}
+
+private slots:
+ void append();
+ void removeLast();
+ void oldTests();
+ void task214223();
+ void QTBUG6718_resize();
+ void QTBUG10978_realloc();
+};
+
+int fooCtor = 0;
+int fooDtor = 0;
+
+struct Foo
+{
+ int *p;
+
+ Foo() { p = new int; ++fooCtor; }
+ Foo(const Foo &/*other*/) { p = new int; ++fooCtor; }
+
+ void operator=(const Foo & /* other */) { }
+
+ ~Foo() { delete p; ++fooDtor; }
+};
+
+void tst_QVarLengthArray::append()
+{
+ QVarLengthArray<QString> v;
+ v.append(QString("hello"));
+
+ QVarLengthArray<int> v2; // rocket!
+ v2.append(5);
+}
+
+void tst_QVarLengthArray::removeLast()
+{
+ {
+ QVarLengthArray<char, 2> v;
+ v.append(0);
+ v.append(1);
+ QCOMPARE(v.size(), 2);
+ v.append(2);
+ v.append(3);
+ QCOMPARE(v.size(), 4);
+ v.removeLast();
+ QCOMPARE(v.size(), 3);
+ v.removeLast();
+ QCOMPARE(v.size(), 2);
+ }
+
+ {
+ QVarLengthArray<QString, 2> v;
+ v.append("0");
+ v.append("1");
+ QCOMPARE(v.size(), 2);
+ v.append("2");
+ v.append("3");
+ QCOMPARE(v.size(), 4);
+ v.removeLast();
+ QCOMPARE(v.size(), 3);
+ v.removeLast();
+ QCOMPARE(v.size(), 2);
+ }
+}
+
+void tst_QVarLengthArray::oldTests()
+{
+ {
+ QVarLengthArray<int, 256> sa(128);
+ QVERIFY(sa.data() == &sa[0]);
+ sa[0] = 0xfee;
+ sa[10] = 0xff;
+ QVERIFY(sa[0] == 0xfee);
+ QVERIFY(sa[10] == 0xff);
+ sa.resize(512);
+ QVERIFY(sa.data() == &sa[0]);
+ QVERIFY(sa[0] == 0xfee);
+ QVERIFY(sa[10] == 0xff);
+ QVERIFY(sa.at(0) == 0xfee);
+ QVERIFY(sa.at(10) == 0xff);
+ QVERIFY(sa.value(0) == 0xfee);
+ QVERIFY(sa.value(10) == 0xff);
+ QVERIFY(sa.value(1000) == 0);
+ QVERIFY(sa.value(1000, 12) == 12);
+ QVERIFY(sa.size() == 512);
+ sa.reserve(1024);
+ QVERIFY(sa.capacity() == 1024);
+ QVERIFY(sa.size() == 512);
+ }
+ {
+ QVarLengthArray<QString> sa(10);
+ sa[0] = "Hello";
+ sa[9] = "World";
+ QVERIFY(*sa.data() == "Hello");
+ QVERIFY(sa[9] == "World");
+ sa.reserve(512);
+ QVERIFY(*sa.data() == "Hello");
+ QVERIFY(sa[9] == "World");
+ sa.resize(512);
+ QVERIFY(*sa.data() == "Hello");
+ QVERIFY(sa[9] == "World");
+ }
+ {
+ int arr[2] = {1, 2};
+ QVarLengthArray<int> sa(10);
+ QCOMPARE(sa.size(), 10);
+ sa.append(arr, 2);
+ QCOMPARE(sa.size(), 12);
+ QCOMPARE(sa[10], 1);
+ QCOMPARE(sa[11], 2);
+ }
+ {
+ QString arr[2] = { QString("hello"), QString("world") };
+ QVarLengthArray<QString> sa(10);
+ QCOMPARE(sa.size(), 10);
+ sa.append(arr, 2);
+ QCOMPARE(sa.size(), 12);
+ QCOMPARE(sa[10], QString("hello"));
+ QCOMPARE(sa[11], QString("world"));
+ QCOMPARE(sa.at(10), QString("hello"));
+ QCOMPARE(sa.at(11), QString("world"));
+ QCOMPARE(sa.value(10), QString("hello"));
+ QCOMPARE(sa.value(11), QString("world"));
+ QCOMPARE(sa.value(10000), QString());
+ QCOMPARE(sa.value(1212112, QString("none")), QString("none"));
+ QCOMPARE(sa.value(-12, QString("neg")), QString("neg"));
+
+ sa.append(arr, 1);
+ QCOMPARE(sa.size(), 13);
+ QCOMPARE(sa[12], QString("hello"));
+
+ sa.append(arr, 0);
+ QCOMPARE(sa.size(), 13);
+ }
+ {
+ // assignment operator and copy constructor
+
+ QVarLengthArray<int> sa(10);
+ sa[5] = 5;
+
+ QVarLengthArray<int> sa2(10);
+ sa2[5] = 6;
+ sa2 = sa;
+ QCOMPARE(sa2[5], 5);
+
+ QVarLengthArray<int> sa3(sa);
+ QCOMPARE(sa3[5], 5);
+ }
+
+ QSKIP("This test causes the machine to crash when allocating too much memory.", SkipSingle);
+ {
+ QVarLengthArray<Foo> a;
+ const int N = 0x7fffffff / sizeof(Foo);
+ const int Prealloc = a.capacity();
+ const Foo *data0 = a.constData();
+
+ a.resize(N);
+ if (a.size() == N) {
+ QVERIFY(a.capacity() >= N);
+ QCOMPARE(fooCtor, N);
+ QCOMPARE(fooDtor, 0);
+
+ for (int i = 0; i < N; i += 35000)
+ a[i] = Foo();
+ } else {
+ // this is the case we're actually testing
+ QCOMPARE(a.size(), 0);
+ QCOMPARE(a.capacity(), Prealloc);
+ QCOMPARE(a.constData(), data0);
+ QCOMPARE(fooCtor, 0);
+ QCOMPARE(fooDtor, 0);
+
+ a.resize(5);
+ QCOMPARE(a.size(), 5);
+ QCOMPARE(a.capacity(), Prealloc);
+ QCOMPARE(a.constData(), data0);
+ QCOMPARE(fooCtor, 5);
+ QCOMPARE(fooDtor, 0);
+
+ a.resize(Prealloc + 1);
+ QCOMPARE(a.size(), Prealloc + 1);
+ QVERIFY(a.capacity() >= Prealloc + 1);
+ QVERIFY(a.constData() != data0);
+ QCOMPARE(fooCtor, Prealloc + 6);
+ QCOMPARE(fooDtor, 5);
+
+ const Foo *data1 = a.constData();
+
+ a.resize(0x10000000);
+ QCOMPARE(a.size(), 0);
+ QVERIFY(a.capacity() >= Prealloc + 1);
+ QVERIFY(a.constData() == data1);
+ QCOMPARE(fooCtor, Prealloc + 6);
+ QCOMPARE(fooDtor, Prealloc + 6);
+ }
+ }
+}
+
+void tst_QVarLengthArray::task214223()
+{
+ //creating a QVarLengthArray of the same size as the prealloc size
+ // will make the next call to append(const T&) corrupt the memory
+ // you should get a segfault pretty soon after that :-)
+ QVarLengthArray<float, 1> d(1);
+ for (int i=0; i<30; i++)
+ d.append(i);
+}
+
+void tst_QVarLengthArray::QTBUG6718_resize()
+{
+ //MOVABLE
+ {
+ QVarLengthArray<QVariant,1> values(1);
+ QCOMPARE(values.size(), 1);
+ values[0] = 1;
+ values.resize(2);
+ QCOMPARE(values[1], QVariant());
+ QCOMPARE(values[0], QVariant(1));
+ values[1] = 2;
+ QCOMPARE(values[1], QVariant(2));
+ QCOMPARE(values.size(), 2);
+ }
+
+ //POD
+ {
+ QVarLengthArray<int,1> values(1);
+ QCOMPARE(values.size(), 1);
+ values[0] = 1;
+ values.resize(2);
+ QCOMPARE(values[0], 1);
+ values[1] = 2;
+ QCOMPARE(values[1], 2);
+ QCOMPARE(values.size(), 2);
+ }
+
+ //COMPLEX
+ {
+ QVarLengthArray<QVarLengthArray<QString, 15>,1> values(1);
+ QCOMPARE(values.size(), 1);
+ values[0].resize(10);
+ values.resize(2);
+ QCOMPARE(values[1].size(), 0);
+ QCOMPARE(values[0].size(), 10);
+ values[1].resize(20);
+ QCOMPARE(values[1].size(), 20);
+ QCOMPARE(values.size(), 2);
+ }
+}
+
+struct MyBase
+{
+ MyBase()
+ : data(this)
+ , isCopy(false)
+ {
+ ++liveCount;
+ }
+
+ MyBase(MyBase const &)
+ : data(this)
+ , isCopy(true)
+ {
+ ++copyCount;
+ ++liveCount;
+ }
+
+ MyBase & operator=(MyBase const &)
+ {
+ if (!isCopy) {
+ isCopy = true;
+ ++copyCount;
+ } else {
+ ++errorCount;
+ }
+
+ return *this;
+ }
+
+ ~MyBase()
+ {
+ if (isCopy) {
+ if (!copyCount)
+ ++errorCount;
+ else
+ --copyCount;
+ }
+
+ if (!liveCount)
+ ++errorCount;
+ else
+ --liveCount;
+ }
+
+ bool hasMoved() const
+ {
+ return this != data;
+ }
+
+protected:
+ MyBase const * const data;
+ bool isCopy;
+
+public:
+ static int errorCount;
+ static int liveCount;
+ static int copyCount;
+};
+
+int MyBase::errorCount = 0;
+int MyBase::liveCount = 0;
+int MyBase::copyCount = 0;
+
+struct MyPrimitive
+ : MyBase
+{
+ MyPrimitive()
+ {
+ ++errorCount;
+ }
+
+ ~MyPrimitive()
+ {
+ ++errorCount;
+ }
+
+ MyPrimitive(MyPrimitive const &other)
+ : MyBase(other)
+ {
+ ++errorCount;
+ }
+};
+
+struct MyMovable
+ : MyBase
+{
+};
+
+struct MyComplex
+ : MyBase
+{
+};
+
+QT_BEGIN_NAMESPACE
+
+Q_DECLARE_TYPEINFO(MyPrimitive, Q_PRIMITIVE_TYPE);
+Q_DECLARE_TYPEINFO(MyMovable, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(MyComplex, Q_COMPLEX_TYPE);
+
+QT_END_NAMESPACE
+
+bool QTBUG10978_proceed = true;
+
+template <class T, int PreAlloc>
+int countMoved(QVarLengthArray<T, PreAlloc> const &c)
+{
+ int result = 0;
+ for (int i = 0; i < c.size(); ++i)
+ if (c[i].hasMoved())
+ ++result;
+
+ return result;
+}
+
+template <class T>
+void QTBUG10978_test()
+{
+ QTBUG10978_proceed = false;
+
+ typedef QVarLengthArray<T, 16> Container;
+ enum {
+ isStatic = QTypeInfo<T>::isStatic,
+ isComplex = QTypeInfo<T>::isComplex,
+
+ isPrimitive = !isComplex && !isStatic,
+ isMovable = !isStatic
+ };
+
+ // Constructors
+ Container a;
+ QCOMPARE( MyBase::liveCount, 0 );
+ QCOMPARE( MyBase::copyCount, 0 );
+
+ QVERIFY( a.capacity() >= 16 );
+ QCOMPARE( a.size(), 0 );
+
+ Container b_real(8);
+ Container const &b = b_real;
+ QCOMPARE( MyBase::liveCount, isPrimitive ? 0 : 8 );
+ QCOMPARE( MyBase::copyCount, 0 );
+
+ QVERIFY( b.capacity() >= 16 );
+ QCOMPARE( b.size(), 8 );
+
+ // Assignment
+ a = b;
+ QCOMPARE( MyBase::liveCount, isPrimitive ? 0 : 16 );
+ QCOMPARE( MyBase::copyCount, isComplex ? 8 : 0 );
+ QVERIFY( a.capacity() >= 16 );
+ QCOMPARE( a.size(), 8 );
+
+ QVERIFY( b.capacity() >= 16 );
+ QCOMPARE( b.size(), 8 );
+
+ // append
+ a.append(b.data(), b.size());
+ QCOMPARE( MyBase::liveCount, isPrimitive ? 0 : 24 );
+ QCOMPARE( MyBase::copyCount, isComplex ? 16 : 0 );
+
+ QVERIFY( a.capacity() >= 16 );
+ QCOMPARE( a.size(), 16 );
+
+ QVERIFY( b.capacity() >= 16 );
+ QCOMPARE( b.size(), 8 );
+
+ // removeLast
+ a.removeLast();
+ QCOMPARE( MyBase::liveCount, isPrimitive ? 0 : 23 );
+ QCOMPARE( MyBase::copyCount, isComplex ? 15 : 0 );
+
+ QVERIFY( a.capacity() >= 16 );
+ QCOMPARE( a.size(), 15 );
+
+ QVERIFY( b.capacity() >= 16 );
+ QCOMPARE( b.size(), 8 );
+
+ // Movable types
+ const int capacity = a.capacity();
+ if (!isPrimitive)
+ QCOMPARE( countMoved(a), 0 );
+
+ // Reserve, no re-allocation
+ a.reserve(capacity);
+ if (!isPrimitive)
+ QCOMPARE( countMoved(a), 0 );
+ QCOMPARE( MyBase::liveCount, isPrimitive ? 0 : 23 );
+ QCOMPARE( MyBase::copyCount, isComplex ? 15 : 0 );
+
+ QCOMPARE( a.capacity(), capacity );
+ QCOMPARE( a.size(), 15 );
+
+ QVERIFY( b.capacity() >= 16 );
+ QCOMPARE( b.size(), 8 );
+
+ // Reserve, force re-allocation
+ a.reserve(capacity * 2);
+ if (!isPrimitive)
+ QCOMPARE( countMoved(a), isMovable ? 15 : 0 );
+ QCOMPARE( MyBase::liveCount, isPrimitive ? 0 : 23 );
+ QCOMPARE( MyBase::copyCount, isComplex ? 15 : 0 );
+
+ QVERIFY( a.capacity() >= capacity * 2 );
+ QCOMPARE( a.size(), 15 );
+
+ QVERIFY( b.capacity() >= 16 );
+ QCOMPARE( b.size(), 8 );
+
+ // resize, grow
+ a.resize(40);
+ if (!isPrimitive)
+ QCOMPARE( countMoved(a), isMovable ? 15 : 0 );
+ QCOMPARE( MyBase::liveCount, isPrimitive ? 0 : 48 );
+ QCOMPARE( MyBase::copyCount, isComplex ? 15 : 0 );
+
+ QVERIFY( a.capacity() >= a.size() );
+ QCOMPARE( a.size(), 40 );
+
+ QVERIFY( b.capacity() >= 16 );
+ QCOMPARE( b.size(), 8 );
+
+ // Copy constructor, allocate
+ {
+ Container c(a);
+ if (!isPrimitive)
+ QCOMPARE( countMoved(c), 0 );
+ QCOMPARE( MyBase::liveCount, isPrimitive ? 0 : 88 );
+ QCOMPARE( MyBase::copyCount, isComplex ? 55 : 0 );
+
+ QVERIFY( a.capacity() >= a.size() );
+ QCOMPARE( a.size(), 40 );
+
+ QVERIFY( b.capacity() >= 16 );
+ QCOMPARE( b.size(), 8 );
+
+ QVERIFY( c.capacity() >= 40 );
+ QCOMPARE( c.size(), 40 );
+ }
+
+ // resize, shrink
+ a.resize(10);
+ if (!isPrimitive)
+ QCOMPARE( countMoved(a), isMovable ? 10 : 0 );
+ QCOMPARE( MyBase::liveCount, isPrimitive ? 0 : 18 );
+ QCOMPARE( MyBase::copyCount, isComplex ? 10 : 0 );
+
+ QVERIFY( a.capacity() >= a.size() );
+ QCOMPARE( a.size(), 10 );
+
+ QVERIFY( b.capacity() >= 16 );
+ QCOMPARE( b.size(), 8 );
+
+ // Copy constructor, don't allocate
+ {
+ Container c(a);
+ if (!isPrimitive)
+ QCOMPARE( countMoved(c), 0 );
+ QCOMPARE( MyBase::liveCount, isPrimitive ? 0 : 28 );
+ QCOMPARE( MyBase::copyCount, isComplex ? 20 : 0 );
+
+ QVERIFY( a.capacity() >= a.size() );
+ QCOMPARE( a.size(), 10 );
+
+ QVERIFY( b.capacity() >= 16 );
+ QCOMPARE( b.size(), 8 );
+
+ QVERIFY( c.capacity() >= 16 );
+ QCOMPARE( c.size(), 10 );
+ }
+
+ a.clear();
+ QCOMPARE( a.size(), 0 );
+
+ b_real.clear();
+ QCOMPARE( b.size(), 0 );
+
+ QCOMPARE(MyBase::errorCount, 0);
+ QCOMPARE(MyBase::liveCount, 0);
+
+ // All done
+ QTBUG10978_proceed = true;
+}
+
+void tst_QVarLengthArray::QTBUG10978_realloc()
+{
+ QTBUG10978_test<MyBase>();
+ QVERIFY(QTBUG10978_proceed);
+
+ QTBUG10978_test<MyPrimitive>();
+ QVERIFY(QTBUG10978_proceed);
+
+ QTBUG10978_test<MyMovable>();
+ QVERIFY(QTBUG10978_proceed);
+
+ QTBUG10978_test<MyComplex>();
+ QVERIFY(QTBUG10978_proceed);
+}
+
+QTEST_APPLESS_MAIN(tst_QVarLengthArray)
+#include "tst_qvarlengtharray.moc"
diff --git a/tests/auto/corelib/tools/qvector/.gitignore b/tests/auto/corelib/tools/qvector/.gitignore
new file mode 100644
index 0000000000..5520039486
--- /dev/null
+++ b/tests/auto/corelib/tools/qvector/.gitignore
@@ -0,0 +1 @@
+tst_qvector
diff --git a/tests/auto/corelib/tools/qvector/qvector.pro b/tests/auto/corelib/tools/qvector/qvector.pro
new file mode 100644
index 0000000000..a7c3957f2c
--- /dev/null
+++ b/tests/auto/corelib/tools/qvector/qvector.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+SOURCES += tst_qvector.cpp
+QT = core
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/tools/qvector/tst_qvector.cpp b/tests/auto/corelib/tools/qvector/tst_qvector.cpp
new file mode 100644
index 0000000000..4cc2bc481a
--- /dev/null
+++ b/tests/auto/corelib/tools/qvector/tst_qvector.cpp
@@ -0,0 +1,944 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+#include <qvector.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=corelib/tools/qregexp.h corelib/tools/qregexp.cpp
+
+class tst_QVector : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QVector() {}
+ virtual ~tst_QVector() {}
+
+private slots:
+ void constructors() const;
+ void append() const;
+ void at() const;
+ void capacity() const;
+ void clear() const;
+ void constData() const;
+ void contains() const;
+ void count() const;
+ void data() const;
+ void empty() const;
+ void endsWith() const;
+ void fill() const;
+ void first() const;
+ void fromList() const;
+ void fromStdVector() const;
+ void indexOf() const;
+ void insert() const;
+ void isEmpty() const;
+ void last() const;
+ void lastIndexOf() const;
+ void mid() const;
+ void prepend() const;
+ void remove() const;
+ void size() const;
+ void startsWith() const;
+ void swap() const;
+ void toList() const;
+ void toStdVector() const;
+ void value() const;
+
+ void testOperators() const;
+
+ void outOfMemory();
+ void QTBUG6416_reserve();
+ void QTBUG11763_data();
+ void QTBUG11763();
+ void initializeList();
+};
+
+void tst_QVector::constructors() const
+{
+ // pre-reserve capacity
+ {
+ QVector<int> myvec(5);
+
+ QVERIFY(myvec.capacity() == 5);
+ }
+
+ // default-initialise items
+ {
+ QVector<int> myvec(5, 42);
+
+ QVERIFY(myvec.capacity() == 5);
+
+ // make sure all items are initialised ok
+ foreach (int meaningoflife, myvec) {
+ QCOMPARE(meaningoflife, 42);
+ }
+ }
+}
+
+void tst_QVector::append() const
+{
+ QVector<int> myvec;
+ myvec.append(42);
+ myvec.append(43);
+ myvec.append(44);
+
+ QVERIFY(myvec.size() == 3);
+ QCOMPARE(myvec, QVector<int>() << 42 << 43 << 44);
+}
+
+void tst_QVector::at() const
+{
+ QVector<QString> myvec;
+ myvec << "foo" << "bar" << "baz";
+
+ QVERIFY(myvec.size() == 3);
+ QCOMPARE(myvec.at(0), QLatin1String("foo"));
+ QCOMPARE(myvec.at(1), QLatin1String("bar"));
+ QCOMPARE(myvec.at(2), QLatin1String("baz"));
+
+ // append an item
+ myvec << "hello";
+ QVERIFY(myvec.size() == 4);
+ QCOMPARE(myvec.at(0), QLatin1String("foo"));
+ QCOMPARE(myvec.at(1), QLatin1String("bar"));
+ QCOMPARE(myvec.at(2), QLatin1String("baz"));
+ QCOMPARE(myvec.at(3), QLatin1String("hello"));
+
+ // remove an item
+ myvec.remove(1);
+ QVERIFY(myvec.size() == 3);
+ QCOMPARE(myvec.at(0), QLatin1String("foo"));
+ QCOMPARE(myvec.at(1), QLatin1String("baz"));
+ QCOMPARE(myvec.at(2), QLatin1String("hello"));
+}
+
+void tst_QVector::capacity() const
+{
+ QVector<QString> myvec;
+
+ // TODO: is this guaranteed? seems a safe assumption, but I suppose preallocation of a
+ // few items isn't an entirely unforseeable possibility.
+ QVERIFY(myvec.capacity() == 0);
+
+ // test it gets a size
+ myvec << "aaa" << "bbb" << "ccc";
+ QVERIFY(myvec.capacity() >= 3);
+
+ // make sure it grows ok
+ myvec << "aaa" << "bbb" << "ccc";
+ QVERIFY(myvec.capacity() >= 6);
+
+ // let's try squeeze a bit
+ myvec.remove(3);
+ myvec.remove(3);
+ myvec.remove(3);
+ // TODO: is this a safe assumption? presumably it won't release memory until shrink(), but can we asser that is true?
+ QVERIFY(myvec.capacity() >= 6);
+ myvec.squeeze();
+ QVERIFY(myvec.capacity() >= 3);
+
+ myvec.remove(0);
+ myvec.remove(0);
+ myvec.remove(0);
+ // TODO: as above note
+ QVERIFY(myvec.capacity() >= 3);
+ myvec.squeeze();
+ QVERIFY(myvec.capacity() == 0);
+}
+
+void tst_QVector::clear() const
+{
+ QVector<QString> myvec;
+ myvec << "aaa" << "bbb" << "ccc";
+
+ QVERIFY(myvec.size() == 3);
+ myvec.clear();
+ QVERIFY(myvec.size() == 0);
+ QVERIFY(myvec.capacity() == 0);
+}
+
+void tst_QVector::constData() const
+{
+ int arr[] = { 42, 43, 44 };
+ QVector<int> myvec;
+ myvec << 42 << 43 << 44;
+
+ QVERIFY(memcmp(myvec.constData(), reinterpret_cast<const int *>(&arr), sizeof(int) * 3) == 0);
+}
+
+void tst_QVector::contains() const
+{
+ QVector<QString> myvec;
+ myvec << "aaa" << "bbb" << "ccc";
+
+ QVERIFY(myvec.contains(QLatin1String("aaa")));
+ QVERIFY(myvec.contains(QLatin1String("bbb")));
+ QVERIFY(myvec.contains(QLatin1String("ccc")));
+ QVERIFY(!myvec.contains(QLatin1String("I don't exist")));
+
+ // add it and make sure it does :)
+ myvec.append(QLatin1String("I don't exist"));
+ QVERIFY(myvec.contains(QLatin1String("I don't exist")));
+}
+
+void tst_QVector::count() const
+{
+ // total size
+ {
+ // zero size
+ QVector<int> myvec;
+ QVERIFY(myvec.count() == 0);
+
+ // grow
+ myvec.append(42);
+ QVERIFY(myvec.count() == 1);
+ myvec.append(42);
+ QVERIFY(myvec.count() == 2);
+
+ // shrink
+ myvec.remove(0);
+ QVERIFY(myvec.count() == 1);
+ myvec.remove(0);
+ QVERIFY(myvec.count() == 0);
+ }
+
+ // count of items
+ {
+ QVector<QString> myvec;
+ myvec << "aaa" << "bbb" << "ccc";
+
+ // initial tests
+ QVERIFY(myvec.count(QLatin1String("aaa")) == 1);
+ QVERIFY(myvec.count(QLatin1String("pirates")) == 0);
+
+ // grow
+ myvec.append(QLatin1String("aaa"));
+ QVERIFY(myvec.count(QLatin1String("aaa")) == 2);
+
+ // shrink
+ myvec.remove(0);
+ QVERIFY(myvec.count(QLatin1String("aaa")) == 1);
+ }
+}
+
+void tst_QVector::data() const
+{
+ QVector<int> myvec;
+ myvec << 42 << 43 << 44;
+
+ // make sure it starts off ok
+ QCOMPARE(*(myvec.data() + 1), 43);
+
+ // alter it
+ *(myvec.data() + 1) = 69;
+
+ // check it altered
+ QCOMPARE(*(myvec.data() + 1), 69);
+
+ int arr[] = { 42, 69, 44 };
+ QVERIFY(memcmp(myvec.data(), reinterpret_cast<int *>(&arr), sizeof(int) * 3) == 0);
+}
+
+void tst_QVector::empty() const
+{
+ QVector<int> myvec;
+
+ // starts empty
+ QVERIFY(myvec.empty());
+
+ // not empty
+ myvec.append(1);
+ QVERIFY(!myvec.empty());
+
+ // empty again
+ myvec.remove(0);
+ QVERIFY(myvec.empty());
+}
+
+void tst_QVector::endsWith() const
+{
+ QVector<int> myvec;
+
+ // empty vector
+ QVERIFY(!myvec.endsWith(1));
+
+ // add the one, should work
+ myvec.append(1);
+ QVERIFY(myvec.endsWith(1));
+
+ // add something else, fails now
+ myvec.append(3);
+ QVERIFY(!myvec.endsWith(1));
+
+ // remove it again :)
+ myvec.remove(1);
+ QVERIFY(myvec.endsWith(1));
+}
+
+void tst_QVector::fill() const
+{
+ QVector<int> myvec;
+
+ // resize
+ myvec.resize(5);
+ myvec.fill(69);
+ QCOMPARE(myvec, QVector<int>() << 69 << 69 << 69 << 69 << 69);
+
+ // make sure it can resize itself too
+ myvec.fill(42, 10);
+ QCOMPARE(myvec, QVector<int>() << 42 << 42 << 42 << 42 << 42 << 42 << 42 << 42 << 42 << 42);
+}
+
+void tst_QVector::first() const
+{
+ QVector<int> myvec;
+ myvec << 69 << 42 << 3;
+
+ // test it starts ok
+ QCOMPARE(myvec.first(), 69);
+
+ // test removal changes
+ myvec.remove(0);
+ QCOMPARE(myvec.first(), 42);
+
+ // test prepend changes
+ myvec.prepend(23);
+ QCOMPARE(myvec.first(), 23);
+}
+
+void tst_QVector::fromList() const
+{
+ QList<QString> list;
+ list << "aaa" << "bbb" << "ninjas" << "pirates";
+
+ QVector<QString> myvec;
+ myvec = QVector<QString>::fromList(list);
+
+ // test it worked ok
+ QCOMPARE(myvec, QVector<QString>() << "aaa" << "bbb" << "ninjas" << "pirates");
+ QCOMPARE(list, QList<QString>() << "aaa" << "bbb" << "ninjas" << "pirates");
+}
+
+void tst_QVector::fromStdVector() const
+{
+ // stl = :(
+ std::vector<QString> svec;
+ svec.push_back(QLatin1String("aaa"));
+ svec.push_back(QLatin1String("bbb"));
+ svec.push_back(QLatin1String("ninjas"));
+ svec.push_back(QLatin1String("pirates"));
+ QVector<QString> myvec = QVector<QString>::fromStdVector(svec);
+
+ // test it converts ok
+ QCOMPARE(myvec, QVector<QString>() << "aaa" << "bbb" << "ninjas" << "pirates");
+}
+
+void tst_QVector::indexOf() const
+{
+ QVector<QString> myvec;
+ myvec << "A" << "B" << "C" << "B" << "A";
+
+ QVERIFY(myvec.indexOf("B") == 1);
+ QVERIFY(myvec.indexOf("B", 1) == 1);
+ QVERIFY(myvec.indexOf("B", 2) == 3);
+ QVERIFY(myvec.indexOf("X") == -1);
+ QVERIFY(myvec.indexOf("X", 2) == -1);
+
+ // add an X
+ myvec << "X";
+ QVERIFY(myvec.indexOf("X") == 5);
+ QVERIFY(myvec.indexOf("X", 5) == 5);
+ QVERIFY(myvec.indexOf("X", 6) == -1);
+
+ // remove first A
+ myvec.remove(0);
+ QVERIFY(myvec.indexOf("A") == 3);
+ QVERIFY(myvec.indexOf("A", 3) == 3);
+ QVERIFY(myvec.indexOf("A", 4) == -1);
+}
+
+void tst_QVector::insert() const
+{
+ QVector<QString> myvec;
+ myvec << "A" << "B" << "C";
+
+ // first position
+ QCOMPARE(myvec.at(0), QLatin1String("A"));
+ myvec.insert(0, QLatin1String("X"));
+ QCOMPARE(myvec.at(0), QLatin1String("X"));
+ QCOMPARE(myvec.at(1), QLatin1String("A"));
+
+ // middle
+ myvec.insert(1, QLatin1String("Z"));
+ QCOMPARE(myvec.at(0), QLatin1String("X"));
+ QCOMPARE(myvec.at(1), QLatin1String("Z"));
+ QCOMPARE(myvec.at(2), QLatin1String("A"));
+
+ // end
+ myvec.insert(5, QLatin1String("T"));
+ QCOMPARE(myvec.at(5), QLatin1String("T"));
+ QCOMPARE(myvec.at(4), QLatin1String("C"));
+
+ // insert a lot of garbage in the middle
+ myvec.insert(2, 2, QLatin1String("infinity"));
+ QCOMPARE(myvec, QVector<QString>() << "X" << "Z" << "infinity" << "infinity"
+ << "A" << "B" << "C" << "T");
+}
+
+void tst_QVector::isEmpty() const
+{
+ QVector<QString> myvec;
+
+ // starts ok
+ QVERIFY(myvec.isEmpty());
+
+ // not empty now
+ myvec.append(QLatin1String("hello there"));
+ QVERIFY(!myvec.isEmpty());
+
+ // empty again
+ myvec.remove(0);
+ QVERIFY(myvec.isEmpty());
+}
+
+void tst_QVector::last() const
+{
+ QVector<QString> myvec;
+ myvec << "A" << "B" << "C";
+
+ // test starts ok
+ QCOMPARE(myvec.last(), QLatin1String("C"));
+
+ // test it changes ok
+ myvec.append(QLatin1String("X"));
+ QCOMPARE(myvec.last(), QLatin1String("X"));
+
+ // and remove again
+ myvec.remove(3);
+ QCOMPARE(myvec.last(), QLatin1String("C"));
+}
+
+void tst_QVector::lastIndexOf() const
+{
+ QVector<QString> myvec;
+ myvec << "A" << "B" << "C" << "B" << "A";
+
+ QVERIFY(myvec.lastIndexOf("B") == 3);
+ QVERIFY(myvec.lastIndexOf("B", 2) == 1);
+ QVERIFY(myvec.lastIndexOf("X") == -1);
+ QVERIFY(myvec.lastIndexOf("X", 2) == -1);
+
+ // add an X
+ myvec << "X";
+ QVERIFY(myvec.lastIndexOf("X") == 5);
+ QVERIFY(myvec.lastIndexOf("X", 5) == 5);
+ QVERIFY(myvec.lastIndexOf("X", 3) == -1);
+
+ // remove first A
+ myvec.remove(0);
+ QVERIFY(myvec.lastIndexOf("A") == 3);
+ QVERIFY(myvec.lastIndexOf("A", 3) == 3);
+ QVERIFY(myvec.lastIndexOf("A", 2) == -1);
+}
+
+void tst_QVector::mid() const
+{
+ QVector<QString> list;
+ list << "foo" << "bar" << "baz" << "bak" << "buck" << "hello" << "kitty";
+
+ QCOMPARE(list.mid(3, 3), QVector<QString>() << "bak" << "buck" << "hello");
+ QCOMPARE(list.mid(4), QVector<QString>() << "buck" << "hello" << "kitty");
+}
+
+void tst_QVector::prepend() const
+{
+ QVector<QString> myvec;
+ myvec << "A" << "B" << "C";
+
+ // starts ok
+ QVERIFY(myvec.size() == 3);
+ QCOMPARE(myvec.at(0), QLatin1String("A"));
+
+ // add something
+ myvec.prepend(QLatin1String("X"));
+ QCOMPARE(myvec.at(0), QLatin1String("X"));
+ QCOMPARE(myvec.at(1), QLatin1String("A"));
+ QVERIFY(myvec.size() == 4);
+
+ // something else
+ myvec.prepend(QLatin1String("Z"));
+ QCOMPARE(myvec.at(0), QLatin1String("Z"));
+ QCOMPARE(myvec.at(1), QLatin1String("X"));
+ QCOMPARE(myvec.at(2), QLatin1String("A"));
+ QVERIFY(myvec.size() == 5);
+
+ // clear and append to an empty vector
+ myvec.clear();
+ QVERIFY(myvec.size() == 0);
+ myvec.prepend(QLatin1String("ninjas"));
+ QVERIFY(myvec.size() == 1);
+ QCOMPARE(myvec.at(0), QLatin1String("ninjas"));
+}
+
+void tst_QVector::remove() const
+{
+ QVector<QString> myvec;
+ myvec << "A" << "B" << "C";
+
+ // remove middle
+ myvec.remove(1);
+ QCOMPARE(myvec, QVector<QString>() << "A" << "C");
+
+ // remove rest
+ myvec.remove(0, 2);
+ QCOMPARE(myvec, QVector<QString>());
+}
+
+// ::reserve() is really hard to think of tests for, so not doing it.
+// ::resize() is tested in ::capacity().
+
+void tst_QVector::size() const
+{
+ // total size
+ {
+ // zero size
+ QVector<int> myvec;
+ QVERIFY(myvec.size() == 0);
+
+ // grow
+ myvec.append(42);
+ QVERIFY(myvec.size() == 1);
+ myvec.append(42);
+ QVERIFY(myvec.size() == 2);
+
+ // shrink
+ myvec.remove(0);
+ QVERIFY(myvec.size() == 1);
+ myvec.remove(0);
+ QVERIFY(myvec.size() == 0);
+ }
+}
+
+// ::squeeze() is tested in ::capacity().
+
+void tst_QVector::startsWith() const
+{
+ QVector<int> myvec;
+
+ // empty vector
+ QVERIFY(!myvec.startsWith(1));
+
+ // add the one, should work
+ myvec.prepend(1);
+ QVERIFY(myvec.startsWith(1));
+
+ // add something else, fails now
+ myvec.prepend(3);
+ QVERIFY(!myvec.startsWith(1));
+
+ // remove it again :)
+ myvec.remove(0);
+ QVERIFY(myvec.startsWith(1));
+}
+
+void tst_QVector::swap() const
+{
+ QVector<int> v1, v2;
+ v1 << 1 << 2 << 3;
+ v2 << 4 << 5 << 6;
+
+ v1.swap(v2);
+ QCOMPARE(v1,QVector<int>() << 4 << 5 << 6);
+ QCOMPARE(v2,QVector<int>() << 1 << 2 << 3);
+}
+
+void tst_QVector::toList() const
+{
+ QVector<QString> myvec;
+ myvec << "A" << "B" << "C";
+
+ // make sure it converts and doesn't modify the original vector
+ QCOMPARE(myvec.toList(), QList<QString>() << "A" << "B" << "C");
+ QCOMPARE(myvec, QVector<QString>() << "A" << "B" << "C");
+}
+
+void tst_QVector::toStdVector() const
+{
+ QVector<QString> myvec;
+ myvec << "A" << "B" << "C";
+
+ std::vector<QString> svec = myvec.toStdVector();
+ QCOMPARE(svec.at(0), QLatin1String("A"));
+ QCOMPARE(svec.at(1), QLatin1String("B"));
+ QCOMPARE(svec.at(2), QLatin1String("C"));
+
+ QCOMPARE(myvec, QVector<QString>() << "A" << "B" << "C");
+}
+
+void tst_QVector::value() const
+{
+ QVector<QString> myvec;
+ myvec << "A" << "B" << "C";
+
+ // valid calls
+ QCOMPARE(myvec.value(0), QLatin1String("A"));
+ QCOMPARE(myvec.value(1), QLatin1String("B"));
+ QCOMPARE(myvec.value(2), QLatin1String("C"));
+
+ // default calls
+ QCOMPARE(myvec.value(-1), QString());
+ QCOMPARE(myvec.value(3), QString());
+
+ // test calls with a provided default, valid calls
+ QCOMPARE(myvec.value(0, QLatin1String("default")), QLatin1String("A"));
+ QCOMPARE(myvec.value(1, QLatin1String("default")), QLatin1String("B"));
+ QCOMPARE(myvec.value(2, QLatin1String("default")), QLatin1String("C"));
+
+ // test calls with a provided default that will return the default
+ QCOMPARE(myvec.value(-1, QLatin1String("default")), QLatin1String("default"));
+ QCOMPARE(myvec.value(3, QLatin1String("default")), QLatin1String("default"));
+}
+
+void tst_QVector::testOperators() const
+{
+ QVector<QString> myvec;
+ myvec << "A" << "B" << "C";
+ QVector<QString> myvectwo;
+ myvectwo << "D" << "E" << "F";
+ QVector<QString> combined;
+ combined << "A" << "B" << "C" << "D" << "E" << "F";
+
+ // !=
+ QVERIFY(myvec != myvectwo);
+
+ // +
+ QCOMPARE(myvec + myvectwo, combined);
+ QCOMPARE(myvec, QVector<QString>() << "A" << "B" << "C");
+ QCOMPARE(myvectwo, QVector<QString>() << "D" << "E" << "F");
+
+ // +=
+ myvec += myvectwo;
+ QCOMPARE(myvec, combined);
+
+ // ==
+ QVERIFY(myvec == combined);
+
+ // []
+ QCOMPARE(myvec[0], QLatin1String("A"));
+ QCOMPARE(myvec[1], QLatin1String("B"));
+ QCOMPARE(myvec[2], QLatin1String("C"));
+ QCOMPARE(myvec[3], QLatin1String("D"));
+ QCOMPARE(myvec[4], QLatin1String("E"));
+ QCOMPARE(myvec[5], QLatin1String("F"));
+}
+
+
+int fooCtor;
+int fooDtor;
+
+struct Foo
+{
+ int *p;
+
+ Foo() { p = new int; ++fooCtor; }
+ Foo(const Foo &other) { Q_UNUSED(other); p = new int; ++fooCtor; }
+
+ void operator=(const Foo & /* other */) { }
+
+ ~Foo() { delete p; ++fooDtor; }
+};
+
+void tst_QVector::outOfMemory()
+{
+ fooCtor = 0;
+ fooDtor = 0;
+
+ const int N = 0x7fffffff / sizeof(Foo);
+
+ {
+ QVector<Foo> a;
+
+ QSKIP("This test crashes on many of our machines.", SkipSingle);
+ a.resize(N);
+ if (a.size() == N) {
+ QVERIFY(a.capacity() >= N);
+ QCOMPARE(fooCtor, N);
+ QCOMPARE(fooDtor, 0);
+
+ for (int i = 0; i < N; i += 35000)
+ a[i] = Foo();
+ } else {
+ // this is the case we're actually testing
+ QCOMPARE(a.size(), 0);
+ QCOMPARE(a.capacity(), 0);
+ QCOMPARE(fooCtor, 0);
+ QCOMPARE(fooDtor, 0);
+
+ a.resize(5);
+ QCOMPARE(a.size(), 5);
+ QVERIFY(a.capacity() >= 5);
+ QCOMPARE(fooCtor, 5);
+ QCOMPARE(fooDtor, 0);
+
+ const int Prealloc = a.capacity();
+ a.resize(Prealloc + 1);
+ QCOMPARE(a.size(), Prealloc + 1);
+ QVERIFY(a.capacity() >= Prealloc + 1);
+ QCOMPARE(fooCtor, Prealloc + 6);
+ QCOMPARE(fooDtor, 5);
+
+ a.resize(0x10000000);
+ QCOMPARE(a.size(), 0);
+ QCOMPARE(a.capacity(), 0);
+ QCOMPARE(fooCtor, Prealloc + 6);
+ QCOMPARE(fooDtor, Prealloc + 6);
+ }
+ }
+
+ fooCtor = 0;
+ fooDtor = 0;
+
+ {
+ QVector<Foo> a(N);
+ if (a.size() == N) {
+ QVERIFY(a.capacity() >= N);
+ QCOMPARE(fooCtor, N);
+ QCOMPARE(fooDtor, 0);
+
+ for (int i = 0; i < N; i += 35000)
+ a[i] = Foo();
+ } else {
+ // this is the case we're actually testing
+ QCOMPARE(a.size(), 0);
+ QCOMPARE(a.capacity(), 0);
+ QCOMPARE(fooCtor, 0);
+ QCOMPARE(fooDtor, 0);
+ }
+ }
+
+ Foo foo;
+
+ fooCtor = 0;
+ fooDtor = 0;
+
+ {
+ QVector<Foo> a(N, foo);
+ if (a.size() == N) {
+ QVERIFY(a.capacity() >= N);
+ QCOMPARE(fooCtor, N);
+ QCOMPARE(fooDtor, 0);
+
+ for (int i = 0; i < N; i += 35000)
+ a[i] = Foo();
+ } else {
+ // this is the case we're actually testing
+ QCOMPARE(a.size(), 0);
+ QCOMPARE(a.capacity(), 0);
+ QCOMPARE(fooCtor, 0);
+ QCOMPARE(fooDtor, 0);
+ }
+ }
+
+ fooCtor = 0;
+ fooDtor = 0;
+
+ {
+ QVector<Foo> a;
+ a.resize(10);
+ QCOMPARE(fooCtor, 10);
+ QCOMPARE(fooDtor, 0);
+
+ QVector<Foo> b(a);
+ QCOMPARE(fooCtor, 10);
+ QCOMPARE(fooDtor, 0);
+
+ a.resize(N);
+ if (a.size() == N) {
+ QCOMPARE(fooCtor, N + 10);
+ } else {
+ QCOMPARE(a.size(), 0);
+ QCOMPARE(a.capacity(), 0);
+ QCOMPARE(fooCtor, 10);
+ QCOMPARE(fooDtor, 0);
+
+ QCOMPARE(b.size(), 10);
+ QVERIFY(b.capacity() >= 10);
+ }
+ }
+
+ {
+ QVector<int> a;
+ a.resize(10);
+
+ QVector<int> b(a);
+
+ a.resize(N);
+ if (a.size() == N) {
+ for (int i = 0; i < N; i += 60000)
+ a[i] = i;
+ } else {
+ QCOMPARE(a.size(), 0);
+ QCOMPARE(a.capacity(), 0);
+
+ QCOMPARE(b.size(), 10);
+ QVERIFY(b.capacity() >= 10);
+ }
+
+ b.resize(N - 1);
+ if (b.size() == N - 1) {
+ for (int i = 0; i < N - 1; i += 60000)
+ b[i] = i;
+ } else {
+ QCOMPARE(b.size(), 0);
+ QCOMPARE(b.capacity(), 0);
+ }
+ }
+}
+
+void tst_QVector::QTBUG6416_reserve()
+{
+ fooCtor = 0;
+ fooDtor = 0;
+ {
+ QVector<Foo> a;
+ a.resize(2);
+ QVector<Foo> b(a);
+ b.reserve(1);
+ }
+ QCOMPARE(fooCtor, fooDtor);
+}
+
+void tst_QVector::QTBUG11763_data()
+{
+ QTest::addColumn<int>("capacity");
+ QTest::addColumn<int>("fill_size");
+ QTest::addColumn<int>("func_id");
+ QTest::addColumn<int>("result1");
+ QTest::addColumn<int>("result2");
+ QTest::addColumn<int>("result3");
+ QTest::addColumn<int>("result4");
+
+ int result1, result2, result3, result4;
+ int fill_size;
+ for (int i = 70; i <= 100; i += 10) {
+ fill_size = i - 20;
+ for (int j = 0; j <= 3; j++) {
+ if (j == 0) { // append
+ result1 = i;
+ result2 = i;
+ result3 = i - 19;
+ result4 = i - 20;
+ } else if (j == 1) { // insert(0)
+ result1 = i;
+ result2 = i;
+ result3 = i - 19;
+ result4 = i - 20;
+ } else if (j == 2) { // insert(20)
+ result1 = i;
+ result2 = i;
+ result3 = i - 19;
+ result4 = i - 20;
+ } else if (j == 3) { // insert(0, 10)
+ result1 = i;
+ result2 = i;
+ result3 = i - 10;
+ result4 = i - 20;
+ }
+ QTest::newRow(qPrintable(QString("QTBUG11763:%1").arg(i))) << i << fill_size << j << result1 << result2 << result3 << result4;
+ }
+ }
+}
+
+void tst_QVector::QTBUG11763()
+{
+ QFETCH(int, capacity);
+ QFETCH(int, fill_size);
+ QFETCH(int, func_id);
+ QFETCH(int, result1);
+ QFETCH(int, result2);
+ QFETCH(int, result3);
+ QFETCH(int, result4);
+
+ QVector<qreal> v1;
+ QVector<qreal> v2;
+
+ v1.reserve(capacity);
+ v1.resize(0);
+ v1.fill(qreal(1.0), fill_size);
+
+ v2 = v1;
+
+ // no need to test begin() and end(), there is a detach() in them
+ if (func_id == 0) {
+ v1.append(qreal(1.0)); //push_back is same as append
+ } else if (func_id == 1) {
+ v1.insert(0, qreal(1.0)); //push_front is same as prepend, insert(0)
+ } else if (func_id == 2) {
+ v1.insert(20, qreal(1.0));
+ } else if (func_id == 3) {
+ v1.insert(0, 10, qreal(1.0));
+ }
+
+ QCOMPARE(v1.capacity(), result1);
+ QCOMPARE(v2.capacity(), result2);
+ QCOMPARE(v1.size(), result3);
+ QCOMPARE(v2.size(), result4);
+}
+
+void tst_QVector::initializeList()
+{
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+ QVector<int> v1{2,3,4};
+ QCOMPARE(v1, QVector<int>() << 2 << 3 << 4);
+ QCOMPARE(v1, (QVector<int>{2,3,4}));
+
+ QVector<QVector<int>> v2{ v1, {1}, QVector<int>(), {2,3,4} };
+ QVector<QVector<int>> v3;
+ v3 << v1 << (QVector<int>() << 1) << QVector<int>() << v1;
+ QCOMPARE(v3, v2);
+#endif
+}
+
+QTEST_APPLESS_MAIN(tst_QVector)
+#include "tst_qvector.moc"
diff --git a/tests/auto/corelib/tools/tools.pro b/tests/auto/corelib/tools/tools.pro
new file mode 100644
index 0000000000..930799e3b3
--- /dev/null
+++ b/tests/auto/corelib/tools/tools.pro
@@ -0,0 +1,44 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qalgorithms \
+ qbitarray \
+ qbytearray \
+ qbytearraymatcher \
+ qcache \
+ qchar \
+ qcontiguouscache \
+ qcryptographichash \
+ qdate \
+ qdatetime \
+ qeasingcurve \
+ qelapsedtimer \
+ qexplicitlyshareddatapointer \
+ qfreelist \
+ qhash \
+ qline \
+ qlist \
+ qlocale \
+ qmap \
+ qmargins \
+ qpoint \
+ qqueue \
+ qrect \
+ qregexp \
+ qringbuffer \
+ qscopedpointer \
+ qscopedvaluerollback \
+ qset \
+ qsharedpointer \
+ qsize \
+ qsizef \
+ qstl \
+ qstring \
+ qstringbuilder \
+ qstringlist \
+ qstringmatcher \
+ qstringref \
+ qtextboundaryfinder \
+ qtime \
+ qtimeline \
+ qvarlengtharray \
+ qvector
diff --git a/tests/auto/corelib/xml/qxmlstream/.gitattributes b/tests/auto/corelib/xml/qxmlstream/.gitattributes
new file mode 100644
index 0000000000..1179160a76
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/.gitattributes
@@ -0,0 +1,10 @@
+data/*.xml -crlf
+data/*.ref -crlf
+XML-Test-Suite/* -crlf
+XML-Test-Suite/*/* -crlf
+XML-Test-Suite/*/*/* -crlf
+XML-Test-Suite/*/*/*/* -crlf
+XML-Test-Suite/*/*/*/*/* -crlf
+XML-Test-Suite/*/*/*/*/*/* -crlf
+XML-Test-Suite/*/*/*/*/*/*/* -crlf
+XML-Test-Suite/*/*/*/*/*/*/*/* -crlf
diff --git a/tests/auto/corelib/xml/qxmlstream/.gitignore b/tests/auto/corelib/xml/qxmlstream/.gitignore
new file mode 100644
index 0000000000..0131c9090c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/.gitignore
@@ -0,0 +1 @@
+tst_qxmlstream
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite-LICENSE.txt b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite-LICENSE.txt
new file mode 100644
index 0000000000..bd84fae346
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite-LICENSE.txt
@@ -0,0 +1,59 @@
+The XML testsuite available here is a copy of the Extensible Markup
+Language (XML) Conformance Test Suites provided by W3C. Please see
+http://www.w3.org/XML/Test/ for updates and other information.
+
+These files are licensed under the W3C Software License (19980720),
+reproduced below:
+
+---
+W3C® SOFTWARE NOTICE AND LICENSE
+
+Copyright © 1994-2002 World Wide Web Consortium, (Massachusetts
+Institute of Technology, Institut National de Recherche en
+Informatique et en Automatique, Keio University). All Rights
+Reserved. http://www.w3.org/Consortium/Legal/
+
+This W3C work (including software, documents, or other related items)
+is being provided by the copyright holders under the following
+license. By obtaining, using and/or copying this work, you (the
+licensee) agree that you have read, understood, and will comply with
+the following terms and conditions:
+
+Permission to use, copy, modify, and distribute this software and its
+documentation, with or without modification, for any purpose and
+without fee or royalty is hereby granted, provided that you include
+the following on ALL copies of the software and documentation or
+portions thereof, including modifications, that you make:
+
+ 1. The full text of this NOTICE in a location viewable to users of
+ the redistributed or derivative work.
+
+ 2. Any pre-existing intellectual property disclaimers, notices, or
+ terms and conditions. If none exist, a short notice of the
+ following form (hypertext is preferred, text is permitted) should
+ be used within the body of any redistributed or derivative code:
+ "Copyright © [$date-of-software] World Wide Web Consortium,
+ (Massachusetts Institute of Technology, Institut National de
+ Recherche en Informatique et en Automatique, Keio University). All
+ Rights Reserved. http://www.w3.org/Consortium/Legal/"
+
+ 3. Notice of any changes or modifications to the W3C files, including
+ the date changes were made. (We recommend you provide URIs to the
+ location from which the code is derived.)
+
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
+HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR
+DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS,
+TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
+OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+DOCUMENTATION.
+
+The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to the software without specific,
+written prior permission. Title to copyright in this software and any
+associated documentation will at all times remain with copyright
+holders.
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Entries
new file mode 100644
index 0000000000..ba3a807265
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Entries
@@ -0,0 +1,2 @@
+/matrix.html/1.1/Thu Feb 7 20:06:35 2002//
+D/xmlconf////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Repository
new file mode 100644
index 0000000000..8b5cf35650
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/matrix.html b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/matrix.html
new file mode 100644
index 0000000000..7cdd2c8051
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/matrix.html
@@ -0,0 +1,4597 @@
+<html>
+<body>
+<center>
+<h1>XML Test Matrix </h1>
+</center>
+<table cellspacing="1" cellpadding="2" border="2" cols="5" width="100%" align="center">
+<colgroup>
+<col width="10%">
+<col width="10%">
+<col width="40%">
+<col width="10%">
+<col width="30%">
+</colgroup>
+<tr>
+<th>Section</th><th>Type</th><th>Purpose</th><th>Level</th><th>XML Test(s)</th>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ A document consisting of prolog followed by element then misc. items is
+ a well-formed document
+ </td><td>one</td><td>
+<br>ibm-valid-P01-ibm01v013 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ A well formed document must have one or more elements
+ </td><td>one</td><td>
+<br>ibm-not-wf-P01-ibm01n01 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ An XML document must contain exactly one top level element
+ </td><td>one</td><td>
+<br>o-p01fail3 </br>
+<br>not-wf-sa-040 </br>
+<br>not-wf-sa-041 </br>
+<br>not-wf-sa-044 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ A document with no prolog is a well-formed document
+ </td><td>one</td><td>
+<br>o-p01pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ A document consisting of an element followed by a prolog is not a well-formed
+ element
+ </td><td>one</td><td>
+<br>ibm-not-wf-P01-ibm01n02 </br>
+<br>not-wf-sa-151 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ In a well-formed document a comment can not occur before the prolog
+ </td><td>one</td><td>
+<br>o-p01fail2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ A document that contains a root element followed by misc. items is
+ a well-formed document
+ </td><td>one</td><td>
+<br>o-p01pass3 </br>
+<br>o-p01pass2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ in a well formed document the root element must not be followed by
+ text or PCDATA
+ </td><td>one</td><td>
+<br>not-wf-sa-036 </br>
+<br>not-wf-sa-043 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ in a well formed document the root element must not be followed by
+ CDATA
+ </td><td>one</td><td>
+<br>not-wf-sa-048 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ in a well formed document the root element must not be followed by
+ character references
+ </td><td>one</td><td>
+<br>not-wf-sa-037 </br>
+<br>not-wf-sa-043 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ A well formed document does not include the top level element as part of
+ the content of another element
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ In a well-formed document, elements that contains data must have both
+ start and end tags.
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ In a well-formed document, empty elements using only a single tag must
+ end with /&gt;
+ </td><td>one</td><td>
+<br>o-p01fail4 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ In a well-formed document the root element must completely
+ contain all other elements
+ </td><td>one</td><td>
+<br>ibm-not-wf-P01-ibm01n03 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ In a well-formed document only one top level element (root element)
+ is allowed
+ </td><td>one</td><td>
+<br>ibm-not-wf-P01-ibm01n03 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ In a well-formed document the XML declaration, if present, must be
+ the first line in the document.
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ In a well-formed document elements containing other elements must not overlap
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ A root element with no data is a well-formed document
+ </td><td>one</td><td>
+<br>ibm-not-wf-P02-ibm02n01.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ In a well-formed document parameter entity reference are not allow inside
+ a markup declaration
+ </td><td>one</td><td>
+<br>not-wf-sa-160 </br>
+<br>not-wf-sa-161 </br>
+<br>not-wf-sa-162 </br>
+<br>valid -sa-094 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ In a well-formed document a CDATA section must occur as part of a element content
+ </td><td>one</td><td>
+<br>not-wf-sa-051 </br>
+<br>not-wf-sa-105 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ In well-formed document an attribute name may not appear more than one in
+ the same element
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Well_Formed</td><td>
+ In a well-formed document attribute values do not contain External Entity
+ References
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Characters</td><td>
+ Non-printing ASCII control characters are illegal XML characters
+ </td><td>one</td><td>
+<br>not-wf-sa-030 </br>
+<br>not-wf-sa-031 </br>
+<br>not-wf-sa-032 </br>
+<br>not-wf-sa-033 </br>
+<br>not-wf-sa-034 </br>
+<br>not-wf-sa-142 </br>
+<br>not-wf-sa-143 </br>
+<br>not-wf-sa-146 </br>
+<br>o-p02fail1 </br>
+<br>o-p02fail10 </br>
+<br>o-p02fail11 </br>
+<br>o-p02fail12 </br>
+<br>o-p02fail13 </br>
+<br>o-p02fail14 </br>
+<br>o-p02fail15 </br>
+<br>o-p02fail16 </br>
+<br>o-p02fail17 </br>
+<br>o-p02fail18 </br>
+<br>o-p02fail19 </br>
+<br>o-p02fail2 </br>
+<br>o-p02fail20 </br>
+<br>o-p02fail21 </br>
+<br>o-p02fail22 </br>
+<br>o-p02fail23 </br>
+<br>o-p02fail24 </br>
+<br>o-p02fail25 </br>
+<br>o-p02fail26 </br>
+<br>o-p02fail27 </br>
+<br>o-p02fail28 </br>
+<br>o-p02fail29 </br>
+<br>o-p02fail3 </br>
+<br>o-p02fail30 </br>
+<br>o-p02fail31 </br>
+<br>o-p02fail4 </br>
+<br>o-p02fail5 </br>
+<br>o-p02fail6 </br>
+<br>o-p02fail7 </br>
+<br>o-p02fail8 </br>
+<br>o-p02fail9 </br>
+<br>ibm-valid-P02-ibm02v02 </br>
+<br>ibm-valid-P02-ibm02v01 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Characters</td><td>
+ Surrogate blocks are illegal XML characters
+ </td><td>one</td><td>
+<br>not-wf-sa-145 </br>
+<br>not-wf-sa-168 </br>
+<br>not-wf-sa-169 </br>
+<br>ibm-valid-P02-ibm02v02 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Characters</td><td>
+ The Characters #x10000-#x10ffff, are outside the normal ascii range,
+ but they are considered legal XML characters
+ </td><td>one</td><td>
+<br>valid-sa-049 </br>
+<br>valid-sa-050 </br>
+<br>ibm-valid-P02-ibm02v02 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Characters</td><td>
+ Characters outside the normal ascii that are not in the range of
+ #x10000-#x10ffff are ilegal XML characters
+ </td><td>one</td><td>
+<br>not-wf-sa-170 </br>
+<br>valid-sa-051 </br>
+<br>ibm-valid-P02-ibm02v02 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Characters</td><td>
+ Non-characters, #xFFFE and #xFFFF, are illegal XML characters
+ </td><td>one</td><td>
+<br>not-wf-sa-144 </br>
+<br>not-wf-sa-166 </br>
+<br>not-wf-sa-167 </br>
+<br>not-wf-sa-171 </br>
+<br>not-wf-sa-172 </br>
+<br>not-wf-sa-173 </br>
+<br>not-wf-sa-174 </br>
+<br>not-wf-sa-175 </br>
+<br>not-wf-sa-177 </br>
+<br>ibm-valid-P02-ibm02v02 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ "#x20", "#x9", "#xA" and "#xD" are legal whitespaces in an XML document
+ </td><td>one</td><td>
+<br>ibm-valid-P03-ibm03v01 </br>
+<br>o-p03pass1 </br>
+<br>o-p03fail1 </br>
+<br>o-p03fail10 </br>
+<br>o-p03fail11 </br>
+<br>o-p03fail12 </br>
+<br>o-p03fail13 </br>
+<br>o-p03fail14 </br>
+<br>o-p03fail15 </br>
+<br>o-p03fail16 </br>
+<br>o-p03fail17 </br>
+<br>o-p03fail8 </br>
+<br>o-p03fail19 </br>
+<br>o-p03fail20 </br>
+<br>o-p03fail21 </br>
+<br>o-p03fail22 </br>
+<br>o-p03fail23 </br>
+<br>o-p03fail24 </br>
+<br>o-p03fail25 </br>
+<br>o-p03fail26 </br>
+<br>o-p03fail27 </br>
+<br>o-p03fail28 </br>
+<br>o-p03fail29 </br>
+<br>o-p03fail3 </br>
+<br>o-p03fail4 </br>
+<br>o-p03fail5 </br>
+<br>o-p03fail7 </br>
+<br>o-p03fail8 </br>
+<br>o-p03fail9 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ Names beginning with the string "xml" are not allowed as an XML name
+ </td><td>one</td><td>
+<br>sandratest03n01 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ Colons ":" are legal XML names that should be used only for namespaces
+ </td><td>one</td><td>
+<br>o-p05pass1 </br>
+<br>valid-sa-012 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ A name consisting of only a letter, "_" or ":" is a legal XML name
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ Names must begin with a letter, "_" or ":" and followed by zero or more
+ nama characters to be consider a legal XML name
+ </td><td>one</td><td>
+<br>ibm-not-wf-P05-ibm05n01 </br>
+<br>ibm-not-wf-P05-ibm05n02 </br>
+<br>ibm-not-wf-P05-ibm05n03 </br>
+<br>not-wf-sa-002 </br>
+<br>not-wf-sa-140 </br>
+<br>not-wf-sa-008 </br>
+<br>not-wf-sa-023 </br>
+<br>not-wf-sa-024 </br>
+<br>o-p05fail1 </br>
+<br>o-p05fail2 </br>
+<br>o-p05fail3 </br>
+<br>o-p05fail4 </br>
+<br>o-p05fail5 </br>
+<br>o-p04pass1 </br>
+<br>not-wf-element02 </br>
+<br>not-wf-element03 </br>
+<br>valid-sa-063 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ Characters that are not letters, periods, hyphen, underscore, colons,
+ combining character and extenders are illegal name characters
+ </td><td>one</td><td>
+<br>ibm-not-wf-P04-ibm04n03 </br>
+<br>ibm-not-wf-P04-ibm04n04 </br>
+<br>ibm-not-wf-P04-ibm04n05 </br>
+<br>ibm-not-wf-P04-ibm04n06 </br>
+<br>ibm-not-wf-P04-ibm04n07 </br>
+<br>ibm-not-wf-P04-ibm04n08 </br>
+<br>ibm-not-wf-P04-ibm04n09 </br>
+<br>o-p04pass1 </br>
+<br>o-p04fail1 </br>
+<br>o-p04fail2 </br>
+<br>o-p04fail3 </br>
+<br>not-wf-sa-141 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ When more than one XML name is used it must be separated only by a space (#x20)
+ </td><td>one-errata</td><td>
+<br>o-p06pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ A name token is any sequence of one or more name characters
+ </td><td>one</td><td>
+<br>o-p07pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ A name token has no restriction on what the first character is as long
+ as it is a valid name character
+ </td><td>one</td><td>
+<br>o-p08pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ A group of name tokens must be one or more XML name tokens separated by
+ a space ("#x20)
+ </td><td>one</td><td>
+<br>o-p08fail1 </br>
+<br>o-p08fail2 </br>
+<br>o-p08pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ An entity value must contain any characters enclosed in
+ double quotes except for %, double quotes and &amp; unless is used as part of
+ a character reference, general reference or parameter entity reference
+ </td><td>one</td><td>
+<br>not-wf-sa-113 </br>
+<br>not-wf-sa-114 </br>
+<br>not-wf-sa-159 </br>
+<br>o-p09fail1 </br>
+<br>o-p09fail2 </br>
+<br>o-p09fail3 </br>
+<br>o-p09pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ An entity value must contain any characters enclosed in
+ single quotes except for %, single quotes and &amp; unless is used as part of
+ a character reference, general reference or parameter entity reference
+ </td><td>one</td><td>
+<br>not-wf-sa-077 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ An entity value must be enclosed in matching quotes, either single quotes or
+ double quotes
+ </td><td>one</td><td>
+<br>o-p09fail5 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ An attribute value must contain any characters enclosed in
+ double quotes except for &lt;, double quotes and &amp; unless is used as part of
+ a character reference or general reference
+ </td><td>one</td><td>
+<br>ibm-valid-p10-ibm10v03 </br>
+<br>ibm-valid-p10-ibm10v05 </br>
+<br>ibm-valid-p10-ibm10v07 </br>
+<br>o-p10pass1 </br>
+<br>not-wf-sa-012 </br>
+<br>not-wf-sa-014 </br>
+<br>not-wf-sa-020 </br>
+<br>not-wf-sa-021 </br>
+<br>not-wf-sa-090 </br>
+<br>o-p10fail1 </br>
+<br>o-p10fail2 </br>
+<br>valid-sa-109 </br>
+<br>valid-sa-013 </br>
+<br>valid-sa-014 </br>
+<br>valid-sa-015 </br>
+<br>valid-not-sa-023 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ An attribute value must be enclosed in matching quotes, either single quotes or
+ double quotes
+ </td><td>one</td><td>
+<br>not-wf-sa-013 </br>
+<br>not-wf-sa-088 </br>
+<br>o-p10fail3 </br>
+<br>not-wf-sa-178 </br>
+<br>o-p41fail1 </br>
+<br>valid-sa-006 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ An attribute value must contain any characters enclosed in
+ single quotes except for &lt;, single quotes and &amp; unless is used as part
+ of a character reference or general reference
+ </td><td>one</td><td>
+<br>ibm-valid-p10-ibm10v04 </br>
+<br>ibm-valid-p10-ibm10v06 </br>
+<br>ibm-valid-p10-ibm10v08 </br>
+<br>o-p10pass1 </br>
+<br>not-wf-sa-012 </br>
+<br>not-wf-sa-014 </br>
+<br>not-wf-sa-020 </br>
+<br>not-wf-sa-021 </br>
+<br>not-wf-sa-090 </br>
+<br>o-p10fail1 </br>
+<br>o-p10fail2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ A system literal must be any string of text that does not contain
+ the double quote mark enclosed in double quotes
+ </td><td>one</td><td>
+<br>ibm-valid-p11-ibm11v01 </br>
+<br>ibm-valid-p11-ibm11v04 </br>
+<br>o-p11fail2 </br>
+<br>o-p11pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ A system literal must be any string of text that does not contain
+ the single quote mark enclosed in single quotes
+ </td><td>one</td><td>
+<br>ibm-valid-p11-ibm11v02 </br>
+<br>ibm-valid-p11-ibm11v03 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ A system literal must be enclosed in matching single or double quotes
+ </td><td>one</td><td>
+<br>o-p11fail1 </br>
+<br>o-p11pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ A public ID literal enclosed in single quotes is a legal if it contains
+ zero or more public Id literal excluding the single quotes
+ </td><td>one</td><td>
+<br>ibm-not-wf-P12-ibm12n02 </br>
+<br>ibm-not-wf-P12-ibm12n03 </br>
+<br>ibm-valid-p12-ibm12v02.xml </br>
+<br>ibm-valid-p12-ibm12v04.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ A public ID literal with zero or more public Id characters enclosed in
+ double quotes is a legal public Id literal
+ </td><td>one</td><td>
+<br>ibm-not-wf-P12-ibm12n01 </br>
+<br>ibm-valid-p12-ibm12v01.xml </br>
+<br>ibm-valid-p12-ibm12v03.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ The ASCII space, carriage return, linefeed, the letter a through z
+ and A through Z, the digits 0 through 9, and the puntuation characters
+ -'(),./:=?;!*#@$_% are permisible piblic ID characters
+ </td><td>one</td><td>
+<br>ibm-not-wf-P13-ibm13n01 </br>
+<br>ibm-not-wf-P13-ibm13n02 </br>
+<br>ibm-valid-p13-ibm13v01.xml </br>
+<br>not-wf-pubid01 </br>
+<br>not-wf-pubid02 </br>
+<br>not-wf-pubid03 </br>
+<br>not-wf-pubid04 </br>
+<br>o-p12pass1 </br>
+<br>o-p12fail7 </br>
+<br>not-wf-sa-085 </br>
+<br>not-wf-sa-086 </br>
+<br>not-wf-sa-087 </br>
+<br>o-p12fail1 </br>
+<br>o-p12fail2 </br>
+<br>o-p12fail3 </br>
+<br>o-p12fail4 </br>
+<br>o-p12fail5 </br>
+<br>o-p12fail6 </br>
+<br>valid-sa-100 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Common Syntactic Constructs</td><td>
+ A public ID literal with no public Id characters enclosed in quotes is
+ a legal public Id literal
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ The CDATA-section-close delimeter is not a permisible character data
+ </td><td>one</td><td>
+<br>not-wf-sa-025 </br>
+<br>not-wf-sa-026 </br>
+<br>not-wf-sa-029 </br>
+<br>o-p14fail3 </br>
+<br>ibm-no-wf-p14-1ib14n01 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ Character data must consits of any number of characters except for &lt;,
+ &amp;, and the CDATA-section-close delimeter
+ </td><td>one</td><td>
+<br>o-p14pass1 </br>
+<br>valid-sa-048 </br>
+<br>ibm-valid-p14-ibm14v03 </br>
+<br>sun-invalid-empty </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ &amp; and &lt; are not legal character data
+ </td><td>one</td><td>
+<br>ibm-no-wf-p14-1ib14n02 </br>
+<br>ibm-no-wf-p14-1ib14n03 </br>
+<br>o-p14fail2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ If &amp; is used as part of character data it must be escaped using &amp;
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ If &lt; is used as part of character data it must be escaped using &lt;
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ The literal form of &lt; is allowed within a comment
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ The literal form of &lt; is allowed within a processing instruction
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ The literal form of &lt; is allowed within a CDATA section
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ The literal form of &lt; is allowed when used as a markup delimenter
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ The literal form of &amp; is allowed within a comment
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ The literal form of &amp; is allowed within a processing instruction
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ The literal form of &amp; is allowed within a CDATA section
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ The literal form of &amp; is allowed when used as a markup delimenter
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Character Data and Markup</td><td>
+ Character data may contain as few as zero characters
+ </td><td>one</td><td>
+<br>ibm-valid-p14-ibm14v01 </br>
+<br>ibm-valid-p14-ibm14v02 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Comments</td><td>
+ A comment must consits of any string of text enclosed between "&lt;--" and
+ and "--&gt;" except a hyphen following the delimiter that marks the
+ begining of a comment or except a hyphen prior the delimiter
+ that marks the end of a comment
+ </td><td>one</td><td>
+<br>0-p43pass1 </br>
+<br>0-p15pass1 </br>
+<br>ibm-not-wf-P15-ibm15n02.xml </br>
+<br>ibm-not-wf-P15-ibm15n03.xml </br>
+<br>ibm-not-wf-P15-ibm15n04.xml </br>
+<br>valid-sa-021 </br>
+<br>valid-sa-022 </br>
+<br>valid-sa-119 </br>
+<br>ibm-not-wf-P15-ibm15n01.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Comments</td><td>
+ Hyphens are not allowed immediately after the delimeter that marks the
+ begining of a comment
+ </td><td>one</td><td>
+<br>ibm-not-wf-P15-ibm15n01.xml </br>
+<br>0-p15fail1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Comments</td><td>
+ For compatibility, the string "--" (double-hyphen) must not occur within comments
+ </td><td>one</td><td>
+<br>0-p15fail2 </br>
+<br>0-p15fail3 </br>
+<br>not-wf-sa-006 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Comments</td><td>
+ Hyphens are not allowed prior to the delimeter that marks the end
+ of a comment
+ </td><td>one</td><td>
+<br>sun-not-wf-sgml03 </br>
+<br>0-p15fail1 </br>
+<br>0-p15fail2 </br>
+<br>not-wf-sa-070 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Comments</td><td>
+ Non-printing ASCII control characters are illegal characters in a comment
+ </td><td>one</td><td>
+<br>ibm-not-wf-P02-ibm02n01.xml </br>
+<br>ibm-not-wf-P02-ibm02n02.xml </br>
+<br>ibm-not-wf-P02-ibm02n03.xml </br>
+<br>ibm-not-wf-P02-ibm02n04.xml </br>
+<br>ibm-not-wf-P02-ibm02n05.xml </br>
+<br>ibm-not-wf-P02-ibm02n06.xml </br>
+<br>ibm-not-wf-P02-ibm02n07.xml </br>
+<br>ibm-not-wf-P02-ibm02n08.xml </br>
+<br>ibm-not-wf-P02-ibm02n09.xml </br>
+<br>ibm-not-wf-P02-ibm02n10.xml </br>
+<br>ibm-not-wf-P02-ibm02n11.xml </br>
+<br>ibm-not-wf-P02-ibm02n12.xml </br>
+<br>ibm-not-wf-P02-ibm02n13.xml </br>
+<br>ibm-not-wf-P02-ibm02n14.xml </br>
+<br>ibm-not-wf-P02-ibm02n15.xml </br>
+<br>ibm-not-wf-P02-ibm02n16.xml </br>
+<br>ibm-not-wf-P02-ibm02n17.xml </br>
+<br>ibm-not-wf-P02-ibm02n18.xml </br>
+<br>ibm-not-wf-P02-ibm02n19.xml </br>
+<br>ibm-not-wf-P02-ibm02n20.xml </br>
+<br>ibm-not-wf-P02-ibm02n21.xml </br>
+<br>ibm-not-wf-P02-ibm02n22.xml </br>
+<br>ibm-not-wf-P02-ibm02n23.xml </br>
+<br>ibm-not-wf-P02-ibm02n24.xml </br>
+<br>ibm-not-wf-P02-ibm02n25.xml </br>
+<br>ibm-not-wf-P02-ibm02n26.xml </br>
+<br>ibm-not-wf-P02-ibm02n27.xml </br>
+<br>ibm-not-wf-P02-ibm02n28.xml </br>
+<br>ibm-not-wf-P02-ibm02n29.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Comments</td><td>
+ Surrogate blocks are illegal characters in a comment
+ </td><td>one</td><td>
+<br>ibm-not-wf-P02-ibm02n30.xml </br>
+<br>ibm-not-wf-P02-ibm02n31.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Comments</td><td>
+ Non-characters, #xFFFE and #xFFFF, are illegal characters in a comment
+ </td><td>one</td><td>
+<br>ibm-not-wf-P02-ibm02n32.xml </br>
+<br>ibm-not-wf-P02-ibm02n33.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Comments</td><td>
+ A comment is allowed anywhere in the document outside the markup
+ </td><td>one</td><td>
+<br>ibm-not-wf-P02-ibm02n30.xml </br>
+<br>valid-sa-038 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Comments</td><td>
+ In a DTD comments must appear outside a declaration
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Comments</td><td>
+ Parameter entity references are not recognized within comments
+ </td><td>one</td><td>
+<br>sun-valid-dtd01 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Processing Instructions</td><td>
+ A processing instruction must consits of the literal "&lt;?" followed by the
+ name of the processing instruction target, optionally followed by whitespace
+ followed by any number of characters using "?&gt;" to close the processing
+ instruction
+ </td><td>one</td><td>
+<br>o-p43pass1 </br>
+<br>ibm-not-wf-P16-ibm16n02.xml </br>
+<br>valid-sa-036 </br>
+<br>valid-sa-039 </br>
+<br>valid-sa-055 </br>
+<br>valid-sa-098 </br>
+<br>valid-sa-016 </br>
+<br>valid-sa-017 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Processing Instructions</td><td>
+ A processing instruction must begin with "&lt;?"
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Processing Instructions</td><td>
+ A processing instruction must end with "?&gt;"
+ </td><td>one</td><td>
+<br>ibm-not-wf-P16-ibm16n03.xml </br>
+<br>ibm-not-wf-P16-ibm16n04.xml </br>
+<br>no-wf-sa-004 </br>
+<br>no-wf-sa-005 </br>
+<br>no-wf-sa-028 </br>
+<br>ibm-valid-p16-ibm16v03 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Processing Instructions</td><td>
+ The "?&gt;" delimeter is not allow within a processing instruction
+ </td><td>one</td><td>
+<br>ibm-not-wf-P16-ibm16n01.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Processing Instructions</td><td>
+ The processing instruction target name must follow the first "?&gt;"
+ </td><td>one</td><td>
+<br>no-wf-sa-003 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Processing Instructions</td><td>
+ In a processing instruction the processing instruction target name must
+ follow the first "?&gt;" and must be followed by a white space
+ </td><td>one</td><td>
+<br>o-p16fail2 </br>
+<br>ibm-not-wf-P16-ibm16n02.xml </br>
+<br>sun-not-wf-pi </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Processing Instructions</td><td>
+ A whitespace is allowed before the end of a processing instruction
+ </td><td>one</td><td>
+<br>o-p16pass1 </br>
+<br>o-p16pass2 </br>
+<br>o-p16pass3 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Processing Instructions</td><td>
+ If a processing instruction includes additional instructions they must follow
+ the target name using a white space as a separator
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Processing Instructions</td><td>
+ A processing instruction with only a processing instruction target name
+ is a valid processing instruction
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Processing Instructions</td><td>
+ In a processing instruction a white space is not allow after the first &lt;?
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Processing Instructions</td><td>
+ The target name in a processing instruction must accept any legal xml name
+ </td><td>one</td><td>
+<br>ibm-not-wf-P16-ibm16n01.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Processing Instructions</td><td>
+ The string xml is not allow, in any combination of case, as a target name
+ in a processing instruction
+ </td><td>one</td><td>
+<br>ibm-not-wf-P17-ibm17n01.xml </br>
+<br>ibm-not-wf-P17-ibm17n02.xml </br>
+<br>ibm-not-wf-P17-ibm17n03.xml </br>
+<br>ibm-not-wf-P17-ibm17n04.xml </br>
+<br>o-p16fail1 </br>
+<br>not-wf-sa-157 </br>
+<br>not-wf-sa-002 </br>
+<br>not-wf-ext-sa-003 </br>
+<br>ibm-valid-p17-ibm17v01 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Processing Instructions</td><td>
+ Paramenter entity references are not recognized within processing instructions
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>CDATA</td><td>
+ A CDATA section (CDSect) must be composed of a CDStart, CData, and CDEnd
+ in that order
+ </td><td>one</td><td>
+<br>o-p43pass1 </br>
+<br>not-wf-sa-128 </br>
+<br>ibm-not-wf-P18-ibm18n01.xml </br>
+<br>ibm-not-wf-P18-ibm18n02.xml </br>
+<br>valid-sa-018 </br>
+<br>ibm-not-wf-P20-ibm20n02.xml </br>
+<br>ibm-not-wf-P20-ibm20n01.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>CDATA</td><td>
+ The start of a CDATA section is always the literal string &lt;![CDATA[ in
+ that specific order
+ </td><td>one</td><td>
+<br>o-p18fail1 </br>
+<br>o-p18fail2 </br>
+<br>not-wf-sa-018 </br>
+<br>not-wf-sa-108 </br>
+<br>not-wf-sa-112 </br>
+<br>ibm-not-wf-P18-ibm18n01.xml </br>
+<br>ibm-not-wf-P19-ibm19n01.xml </br>
+<br>ibm-not-wf-P19-ibm19n02.xml </br>
+<br>ibm-not-wf-P19-ibm19n03.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>CDATA</td><td>
+ A CDATA section always end with the string "]]&gt;"
+ </td><td>one</td><td>
+<br>no-wf-sa-017 </br>
+<br>ibm-not-wf-P18-ibm18n02.xml </br>
+<br>ibm-not-wf-P20-ibm20n01.xml </br>
+<br>ibm-not-wf-P21-ibm21n01.xml </br>
+<br>ibm-not-wf-P21-ibm21n02.xml </br>
+<br>ibm-not-wf-P21-ibm21n03.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>CDATA</td><td>
+ In a CDATA section a left angle brackets "&lt;" can occur in their literal form
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>CDATA</td><td>
+ In a CDATA section ampersands can occur in their literal form
+ </td><td>one</td><td>
+<br>valid-sa-019 </br>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>CDATA</td><td>
+ Nesting in CDATA sections is not allowed
+ </td><td>one</td><td>
+<br>o-p18fail2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>CDATA</td><td>
+ A CDATA section allows any characters except the "]]&gt;"
+ </td><td>one</td><td>
+<br>sun-invalid-empty </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>CDATA</td><td>
+ The character data in the CDATA section is not markup data
+ </td><td>one</td><td>
+<br>valid-sa-020 </br>
+<br>valid-sa-114 </br>
+<br>valid-not-sa-031 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A prolog must consist of an optional XMLDecl followed by zero or more
+ miscellaneous items, followed by an optional document type declaration
+ and zero or more miscellaneous items
+ </td><td>one</td><td>
+<br>o-p22fail2 </br>
+<br>ibm-not-wf-P22-ibm22n01.xml </br>
+<br>ibm-not-wf-P22-ibm23n02.xml </br>
+<br>ibm-not-wf-P22-ibm23n03.xml </br>
+<br>ibm-valid-P22-ibm22n01.xml </br>
+<br>ibm-valid-P22-ibm22n05.xml </br>
+<br>ibm-valid-P22-ibm22n06.xml </br>
+<br>ibm-valid-P22-ibm22n07.xml </br>
+<br>o-p01pass2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ If a prolog contains an XML declaration it must be at the very beginning of the
+ document
+ </td><td>one</td><td>
+<br>sun-not-wf-sgml02 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A prolog can be empty
+ </td><td>one</td><td>
+<br>o-p22pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ An XMLDecl followed by miscellaneous items is considered a legal prolog
+ </td><td>one</td><td>
+<br>o-p22pass1 </br>
+<br>o-p01pass2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A white space must not occur before the XMLDecl in a legal prolog
+ </td><td>one</td><td>
+<br>o-p01fail1 </br>
+<br>not-wf-sa-147 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A comment must not occur before the XMLDecl in a legal prolog
+ </td><td>one</td><td>
+<br>not-wf-sa-148 </br>
+<br>o-p22fail1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A prolog consisting of miscellaneous items followed by a document type
+ declaration is a legal prolog
+ </td><td>one</td><td>
+<br>o-p22pass4 </br>
+<br>o-p22pass5 </br>
+<br>ibm-valid-P22-ibm22n03.xml </br>
+<br>o-p01pass2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A prolog consiting of a document type delaration followed by misc. items
+ is a legal prolog
+ </td><td>one</td><td>
+<br>o-p22pass4 </br>
+<br>o-p22pass5 </br>
+<br>ibm-valid-P22-ibm22n04.xml </br>
+<br>o-p01pass2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A prolog consisting of only an XML declaration is a valid prolog
+ </td><td>one</td><td>
+<br>o-p22pass2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A prolog consisting of only misc. items is a valid prolog
+ </td><td>one</td><td>
+<br>o-p01pass2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A prolog consisting of more than one XML declaration is considered illegal
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A prolog with no XML declaration is considered legal
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A prolog with no misc. items is considered legal
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A prolog consisting of more than one document type declaration is considered
+ illegal
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A prolog consisting of only one document type declaration is considered legal
+ </td><td>one</td><td>
+<br>ibm-valid-P22-ibm22n02.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A legal XML declaration must consists of the literal string "&lt;?xml followed by
+ the mandatory version information string, followed by an optional encoding
+ declaration, followed by an optional standalone document declaration, followed
+ by an optional whitespace and followed by the literal string "?&gt;"
+ </td><td>one</td><td>
+<br>ibm-not-wf-P23-ibm23n02.xml </br>
+<br>ibm-not-wf-P23-ibm23n03.xml </br>
+<br>not-wf-sa-099 </br>
+<br>o-p23pass1 </br>
+<br>o-p23pass2 </br>
+<br>o-p23pass3 </br>
+<br>o-p23pass4 </br>
+<br>o-p23fail5 </br>
+<br>ibm-valid-P23-ibm23n03.xml </br>
+<br>ibm-valid-P23-ibm23n04.xml </br>
+<br>ibm-valid-P23-ibm23n05.xml </br>
+<br>ibm-valid-P23-ibm23n06.xml </br>
+<br>valid-sa-033 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ In an XML declaration the literal string "&lt;?xml must be in lower-case
+ </td><td>one</td><td>
+<br>o-p23fail1 </br>
+<br>not-wf-sa-154 </br>
+<br>not-wf-sa-155 </br>
+<br>not-wf-sa-156 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ In an XML declaration the version information must preceed the encoding
+ declaration
+ </td><td>one</td><td>
+<br>not-wf-sa-095 </br>
+<br>o-p23fail3 </br>
+<br>o-p23pass2 </br>
+<br>ibm-valid-P23-ibm23n02.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ An XML declaration must contain the literal string "&lt;?xml followed
+ by one mandatory version information string
+ </td><td>one</td><td>
+<br>not-wf-sa-152 </br>
+<br>ibm-not-wf-P23-ibm23n01.xml </br>
+<br>not-wf-sa-098 </br>
+<br>o-p23fail2 </br>
+<br>ibm-valid-P23-ibm23n01.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ An XML declaration with only the literal string "&lt;?xml followed by the
+ mandatory version information string is considered legal
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ An XML declaration must begin with the string "&lt;?xml" and end with "?&gt;"
+ </td><td>one</td><td>
+<br>ibm-not-wf-P23-ibm23n04.xml </br>
+<br>ibm-not-wf-P23-ibm23n05.xml </br>
+<br>ibm-not-wf-P23-ibm23n06.xml </br>
+<br>o-p23fail4 </br>
+<br>o-p23fail5 </br>
+<br>o-p23pass3 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A white space is allowed as a separator before the end string "?&gt;"
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ No more than two white spaces are allowed as a separator before the end
+ string "?&gt;"
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ More than one encoding declaration are allowed in an XML declaration
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ In an XML declaration the standalone document declaration must be positioned
+ last
+ </td><td>one</td><td>
+<br>o-p23fail4 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ More than one standalone document declaration is not allowed in an XML
+ declaration
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ An encoding declaration is not mandatory in an XML declaration
+ </td><td>one</td><td>
+<br>o-p23pass3 </br>
+<br>ibm-valid-P23-ibm23n03.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A standalone document declaration is not mandatory in an XML declaration
+ </td><td>one</td><td>
+<br>o-p23pass2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A whitespace "S" is not mandatory after an XML declaration
+ </td><td>one</td><td>
+<br>o-p23pass6 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ The version information must begin with a white space followed by the literal
+ string "version", followed by one equal sign, and followed by a version number
+ enclosed in single or double quotes
+ </td><td>one</td><td>
+<br>ibm-not-wf-P24-ibm24n01.xml </br>
+<br>ibm-not-wf-P24-ibm24n03.xml </br>
+<br>ibm-not-wf-P24-ibm24n04.xml </br>
+<br>ibm-not-wf-P24-ibm24n05.xml </br>
+<br>ibm-not-wf-P24-ibm24n06.xml </br>
+<br>ibm-not-wf-P24-ibm24n07.xml </br>
+<br>ibm-valid-P26-ibm26n01.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A comment is not allowed in the version information
+ </td><td>one</td><td>
+<br>o-p25fail1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ In the version information, the string "version" must be lowercase
+ </td><td>one</td><td>
+<br>not-wf-sa-094 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ The version number in the version information string must be enclosed with matching
+ single or double quotes
+ </td><td>one</td><td>
+<br>ibm-not-wf-P24-ibm24n08.xml </br>
+<br>ibm-not-wf-P24-ibm24n09.xml </br>
+<br>o-p24pass1 </br>
+<br>o-p24pass2 </br>
+<br>not-wf-sa-097 </br>
+<br>o-p24fail1 </br>
+<br>o-p24fail2 </br>
+<br>ibm-valid-P24-ibm24n01.xml </br>
+<br>ibm-valid-P24-ibm24n02.xml </br>
+<br>valid-sa-028 </br>
+<br>valid-sa-029 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ The string "Eq" in the version information must consist of the equal sign "=" with
+ optional whitespaces on either side
+ </td><td>one</td><td>
+<br>ibm-not-wf-P25-ibm25n02.xml </br>
+<br>ibm-not-wf-P25-ibm25n01.xml </br>
+<br>o-p24pass4 </br>
+<br>o-p25pass1 </br>
+<br>o-p25pass2 </br>
+<br>ibm-valid-P25-ibm25n01.xml </br>
+<br>ibm-valid-P25-ibm25n02.xml </br>
+<br>ibm-valid-P25-ibm25n03.xml </br>
+<br>ibm-valid-P25-ibm25n04.xml </br>
+<br>valid-sa-030 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ In the version information string only a white space is allowed before the
+ literal string "version"
+ </td><td>one</td><td>
+<br>ibm-not-wf-P24-ibm24n02.xml </br>
+<br>o-p24pass3 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A version number must consists of one or more letters a through z,
+ A through Z, digits 0-9, underscore, the period, and the hyphen
+ </td><td>one</td><td>
+<br>ibm-not-wf-P26-ibm26n01.xml </br>
+<br>not-wf-sa-102 </br>
+<br>o-p26fail1 </br>
+<br>o-p26fail2 </br>
+<br>o-p26pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ White spaces are not allowed as part of a version number
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A miscelaneus item must consits of comments, processing instructions and whitespace
+ </td><td>one</td><td>
+<br>ibm-not-wf-P27-ibm27n01.xml </br>
+<br>o-p01pass2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A comment is a legal miscellaneous item
+ </td><td>one</td><td>
+<br>o-p27pass1 </br>
+<br>ibm-valid-P27-ibm27n01.xml </br>
+<br>o-p01pass2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A processing instruction is a legal miscellaneous item
+ </td><td>one</td><td>
+<br>o-p27pass2 </br>
+<br>ibm-valid-P27-ibm27n02.xml </br>
+<br>o-p01pass2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A white space is legal miscellaneous item
+ </td><td>one</td><td>
+<br>o-p27pass3 </br>
+<br>ibm-valid-P27-ibm27n03.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ Micellaneous items must consits of comments, whitespaces and processing instructions
+ </td><td>one</td><td>
+<br>o-p27pass4 </br>
+<br>o-p01pass2 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ References are not allowed as part of a miscellaneous item
+ </td><td>one</td><td>
+<br>o-p27fail1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ An XML document is valid if it has an associated document type
+ declaration and if the document complies with the constraints
+ expressed in it
+ </td><td>one</td><td>
+<br>o-p16fail3 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ The document type declaration must appear before the first element in the document
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ Multiple document type declarations are not allowed in an XML document
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ The document type declaration must begin with a literal string "&lt;DOCTYPE"
+ and must end with &gt;
+ </td><td>one</td><td>
+<br>ibm-not-wf-P28-ibm28n05 </br>
+<br>ibm-not-wf-P28-ibm28n08 </br>
+<br>ibm-valid-P28-ibm28n01.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A document type declaration must consits of the string "&lt;DOCTYPE"
+ followed by white space, followed by an XML name, optionally
+ followed by a white space and an external id, optionally followed by
+ more whitespace, optionally followed by an internal subset enclosed in "[]"
+ and followed by optional whitespace, followed by a closing angle bracket
+ </td><td>one-errata</td><td>
+<br>ibm-not-wf-P28-ibm28n01 </br>
+<br>ibm-not-wf-P28-ibm28n02 </br>
+<br>ibm-not-wf-P28-ibm28n03 </br>
+<br>ibm-not-wf-P28-ibm28n06 </br>
+<br>ibm-not-wf-P28-ibm28n07 </br>
+<br>not-wf-sa-055 </br>
+<br>ibm-valid-P28-ibm28n01.xml </br>
+<br>ibm-valid-P28-ibm28n02.xml </br>
+<br>o-p28pass4 </br>
+<br>not-wf-sa-056 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ CDATA are not allowed within document type declaration
+ </td><td>one</td><td>
+<br>not-wf-sa-107 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ Elements are not allowed within document type declaration
+ </td><td>one</td><td>
+<br>o-p28fail1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ An XML declaration is not allowed within document type declaration
+ </td><td>one</td><td>
+<br>not-wf-sa-149 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A general entity reference must not occurred in a document type declaration
+ </td><td>one</td><td>
+<br>ibm-not-wf-P28-ibm28n04.xml </br>
+<br>ibm-not-wf-P31-ibm31n01.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ In a document type declaration, if a white space is used prior to the end
+ "&gt; delimeter, only one is allow
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ The XML name in the document type declaration must match the element type of
+ the root element
+ </td><td>one</td><td>
+<br>ibm-not-wf-P28-ibm28n04.xml </br>
+<br>sun-invalid-root </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ Only one external id is allowed in document type declaration
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ Only one white space must be used to separate the external id from the XML name
+ in a document type declaration
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ In a document type declaration the external subset must consits of an optional
+ text declaration, followed by an external subset declaration
+ </td><td>one</td><td>
+<br>o-p30pass1 </br>
+<br>o-p30pass2 </br>
+<br>ibm-not-wf-P30-ibm30n02.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ An external subset declaration must consits of zero or more markup declaration,
+ conditional section, paramenter entity references, and whitespace in any other
+ </td><td>one</td><td>
+<br>o-p31fail1 </br>
+<br>o-p31pass2 </br>
+<br>ibm-not-wf-P31-ibm31n01.xml </br>
+<br>valid-not-sa-024 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ An external subset can be empty
+ </td><td>one</td><td>
+<br>o-p31pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ Conditional sections are not allowed in an internal DTD subset
+ </td><td>one</td><td>
+<br>not-wf-sa-063 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A document type declaration can consists of an internal subset, an external
+ subset or both
+ </td><td>one-errata</td><td>
+<br>ibm-valid-P28-ibm28n01.xml </br>
+<br>ibm-valid-P30-ibm30n01.xml </br>
+<br>valid-not-sa-007 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A document type declaration can consists of only an internal subset
+ </td><td>one-errata</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ In a markup declaration,parameter-entity replacement text must be
+ properly nested
+ </td><td>one-errata</td><td>
+<br>invalid-001 </br>
+<br>invalid-003 </br>
+<br>invalid-004 </br>
+<br>invalid-005 </br>
+<br>invalid-006 </br>
+<br>ibm-not-wf-P29-ibm29n01.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ Markup declaration can consist of only paramenter entity references
+ </td><td>one-errata</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ A document type declaration does not have to point to an external subset
+ nor an internal subset to be considered well-formed
+ </td><td>one-errata</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ Paramenter entity references are only recognized within DTD's (internal,
+ external and external paramenter entities)
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ Paramenter entity references are not recognized in a comment portion of a DTD
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ Paramenter entity references are not recognized in a literal portion of a DTD
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ Paramenter entity references are not recognized in a processing portion of an
+ external DTD subset
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ Paramenter entity references are not recognized as a content of ignored conditional
+ section of an external subset declaration
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ The internal DTD subset allows any number of markup declarations or
+ parameter entity references outside of markup declarations
+ </td><td>one-errata</td><td>
+<br>ibm-valid-P29-ibm29n02.xml </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ In an internal DTD subset parameter entity references are not permitted
+ within markup declaration
+ </td><td>one-errata</td><td>
+<br>ibm-not-wf-p29-ibm29n02 </br>
+<br>ibm-not-wf-p29-ibm29n03 </br>
+<br>ibm-not-wf-p29-ibm29n04 </br>
+<br>ibm-not-wf-p29-ibm29n05 </br>
+<br>ibm-not-wf-p29-ibm29n06 </br>
+<br>ibm-not-wf-p29-ibm29n07 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ In an external DTD subset and external parameter entity,
+ parameter entity references are allowed within markup declaration
+ </td><td>one</td><td>
+<br>???? </br>
+<br>valid-not-sa-024 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ If both the external and internal subset are used, the internal subset
+ takes precedence
+ </td><td>one</td><td>
+<br>o-p28pass5 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Prolog and Document Type Declaration</td><td>
+ The markup declaration in a document type declaration must consists of
+ either an element declaration an attribute list declaration,
+ an entity declaration, a notation declaration, a process instruction, or
+ a comment in any order
+ </td><td>one</td><td>
+<br>ibm-not-wf-p29-ibm29n01 </br>
+<br>ibm-valid-P29-ibm29n01.xml </br>
+<br>o-p29fail1 </br>
+<br>o-p29pass1 </br>
+<br>sun-invalid-pe01 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Standalone Document Declaration</td><td>
+ The standalone document declaration must consits of a whitespace followed by
+ the literal "standalone" followed by an equals sign, followed by one of
+ the two values "yes" or "no" enclosed in a single or double quotes
+ </td><td>one</td><td>
+<br>o-p32pass1 </br>
+<br>o-p32pass2 </br>
+<br>not-wf-sa-096 </br>
+<br>not-wf-sa-100 </br>
+<br>o-p32fail1 </br>
+<br>o-p32fail2 </br>
+<br>o-p32fail3 </br>
+<br>o-p32fail4 </br>
+<br>ibm-not-wf-p32-ibm32n01 </br>
+<br>ibm-not-wf-p32-ibm32n02 </br>
+<br>ibm-not-wf-p32-ibm32n03 </br>
+<br>ibm-not-wf-p32-ibm32n08 </br>
+<br>valid-sa-032 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Standalone Document Declaration</td><td>
+ In the standalone document declaration the values "yes" or "no" must be
+ lower case
+ </td><td>one</td><td>
+<br>o-p32fail5 </br>
+<br>ibm-not-wf-p32-ibm32n04 </br>
+<br>ibm-not-wf-p32-ibm32n05 </br>
+<br>ibm-not-wf-p32-ibm32n06 </br>
+<br>ibm-not-wf-p32-ibm32n07 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Standalone Document Declaration</td><td>
+ In an XML document if there are no external markup declarations, the standalone
+ document declaration has no meaning
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Standalone Document Declaration</td><td>
+ A standalone document declaration with a value of "no" indicates that
+ there are or may be external markup declarations
+ </td><td>one</td><td>
+<br>ibm-valid-p32-ibm32v02 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Standalone Document Declaration</td><td>
+ If there are external markup declarations but there is no standalone
+ document declaration, the value "no" is assumed.
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Standalone Document Declaration</td><td>
+ The standalone document declaration must have the value "no" if any
+ external declaration contains declarations of attributes with default
+ value that are utilized by elements which these attributes apply
+ </td><td>one</td><td>
+<br>ibm-valid-P32-ibm32v01.xml </br>
+<br>inv-not-sa04 </br>
+<br>valid-not-sa04 </br>
+<br>valid-sa04 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Standalone Document Declaration</td><td>
+ The standalone document declaration must have the value "no" if any
+ external declaration contains declarations of an entity, other than
+ the predefined entity references, and references to this entity appear
+ in the document
+ </td><td>one</td><td>
+<br>ibm-valid-P32-ibm32in02.xml </br>
+<br>inv-not-sa03 </br>
+<br>valid-not-sa03 </br>
+<br>valid-sa03 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Standalone Document Declaration</td><td>
+ The standalone document declaration must have the value "no" if any
+ external declaration contains declarations of attributes with values
+ that will change if normalized
+ </td><td>one</td><td>
+<br>ibm-valid-P32-ibm32in03.xml </br>
+<br>inv-not-sa02 </br>
+<br>valid-not-sa02 </br>
+<br>inv-not-sa05 </br>
+<br>inv-not-sa06 </br>
+<br>inv-not-sa07 </br>
+<br>inv-not-sa08 </br>
+<br>inv-not-sa09 </br>
+<br>inv-not-sa10 </br>
+<br>inv-not-sa11 </br>
+<br>inv-not-sa12 </br>
+<br>inv-not-sa13 </br>
+<br>valid-sa02 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Standalone Document Declaration</td><td>
+ The standalone document declaration must have the value "no" if any
+ external declaration contains element types with element content,
+ and white space occurs directly within any instance of those types
+ </td><td>one</td><td>
+<br>ibm-valid-P32-ibm32in04.xml </br>
+<br>inv-not-sa01 </br>
+<br>valid-not-sa01 </br>
+<br>valid-sa01 </br>
+<br>valid-sa05 </br>
+<br>invalid-not-sa14 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>White Space Handling</td><td>
+ White space can be used to set apart markup for greater readability
+ </td><td>one</td><td>
+<br>valid-sa-084 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>White Space Handling</td><td>
+ Extra white space is not intended for inclusion in the delivered version
+ of an XML document
+ </td><td>one</td><td>
+<br>valid-sa-093 </br>
+<br>valid-sa-092 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>White Space Handling</td><td>
+ The "xml:space" attribute must be declared if used in an XML document
+ </td><td>one</td><td>
+<br>invalid-requiered01 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>White Space Handling</td><td>
+ The "xml:space" attribute applies to the element for which it was declared
+ and all its children until overriden with another instance of the xml:space
+ attribute
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>White Space Handling</td><td>
+ The "xml:space" attribute must be given as an enumerated type whose value
+ are one or both of "default" and "preserve"
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>End of Line Handling</td><td>
+ A carriage return "#xD" not followed by a line feed "#xA"
+ in an external parsed entity (including the document entity)
+ must be normalized to a single newline
+ </td><td>one</td><td>
+<br>valid-ext-sa-002 </br>
+<br>valid-ext-sa-004 </br>
+<br>valid-ext-sa-009 </br>
+<br>valid-ext-sa-011 </br>
+<br>valid-sa-116 </br>
+<br>valid-sa-068 </br>
+<br>valid-sa-054 </br>
+<br>valid-sa-047 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>End of Line Handling</td><td>
+ A combination of carriage return and line feed in an external parsed entity
+ (including the document entity) must be normalized to a single new line
+ </td><td>one</td><td>
+<br>valid-ext-sa-001 </br>
+<br>valid-sa-108 </br>
+<br>valid-ext-sa-006 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Language Identification</td><td>
+ The "xml"lang" attribute must be declared if used in an XML document
+ </td><td>one</td><td>
+<br>ibm-valid-p33-ibm33n01 </br>
+<br>ibm-valid-p34-ibm34n01 </br>
+<br>valid-v-lang01 </br>
+<br>invalid-required02 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Language Identification</td><td>
+ The declared "xml:lang" attribute applies to the element and all its
+ children until one of its childrens declares a different language
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Language Identification</td><td>
+ The "xml:lang" attribute values must be language identifiers as defined
+ by "IETF RFC 1766"
+ </td><td>one</td><td>
+<br>ibm-valid-p35-ibm35n01 </br>
+<br>ibm-valid-p36-ibm36n01 </br>
+<br>ibm-valid-p37-ibm37n01 </br>
+<br>ibm-valid-p38-ibm38n01 </br>
+<br>valid-v-lang01 </br>
+<br>valid-v-lang02 </br>
+<br>valid-v-lang03 </br>
+<br>valid-v-lang04 </br>
+<br>valid-v-lang05 </br>
+<br>valid-v-lang06 </br>
+</td>
+</tr>
+<tr>
+<td>Documents</td><td>Language Identification</td><td>
+ The "xml:lang" attribute must be given as an enumerated list, CDATA or NMTOKEN
+ </td><td>one</td><td>
+<br>ibm-valid-p33-ibm33n01 </br>
+<br>ibm-valid-p34-ibm34n01 </br>
+<br>valid-v-lang01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element</td><td>
+ An element must consist of an empty element or a start tag followed by content,
+ followed by an end tag
+ </td><td>one</td><td>
+<br>ibm-valid-p39-ibm39i01 </br>
+<br>o-p40pass1 </br>
+<br>o-p39pass1 </br>
+<br>sun-not-wf-sgml01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element</td><td>
+ XML documents contain one or more elements
+ </td><td>one</td><td>
+<br>o-p39fail3 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element</td><td>
+ The name in an element's end-tag must match the element type in the start-tag
+ </td><td>one</td><td>
+<br>not-wf-sa-039 </br>
+<br>ibm-not-wf-p39-ibm39i01 </br>
+<br>ibm-not-wf-p39-ibm39i02 </br>
+<br>ibm-not-wf-p39-ibm39i03 </br>
+<br>ibm-not-wf-p39-ibm39i04 </br>
+<br>ibm-not-wf-p39-ibm39i05 </br>
+<br>ibm-not-wf-p39-ibm39i06 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element</td><td>
+ An element is valid if it match the element declaration and the element name in the DTD
+ </td><td>one-errata</td><td>
+<br>ibm-valid-p39-ibm39i01 </br>
+<br>ibm-invalid-p39-ibm39i01 </br>
+<br>ibm-invalid-p39-ibm39i02 </br>
+<br>ibm-invalid-p39-ibm39i03 </br>
+<br>ibm-invalid-p39-ibm39i04 </br>
+<br>optional15 </br>
+<br>optional16 </br>
+<br>optional17 </br>
+<br>optional18 </br>
+<br>optional19 </br>
+<br>optional20 </br>
+<br>optional21 </br>
+<br>optional22 </br>
+<br>optional23 </br>
+<br>optional24 </br>
+<br>optional25 </br>
+<br>element </br>
+<br>invalid-dtd03 </br>
+<br>invalid-el01 </br>
+<br>invalid-el02 </br>
+<br>invalid-el03 </br>
+<br>invalid-optional07 </br>
+<br>invalid-optional08 </br>
+<br>invalid-optional09 </br>
+<br>invalid-optional10 </br>
+<br>invalid-optional11 </br>
+<br>invalid-optional12 </br>
+<br>invalid-optional13 </br>
+<br>invalid-optional14 </br>
+<br>invalid-el06 </br>
+<br>invalid-optional01 </br>
+<br>invalid-optional02 </br>
+<br>invalid-optional03 </br>
+<br>invalid-optional04 </br>
+<br>invalid-optional05 </br>
+<br>invalid-optional06 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ A start tag begins with a "&lt;" followed by and XML name, followed by any number of
+ attributes separated by whitespace, followed by an optional whitespace
+ followed by a closing "&gt;"
+ </td><td>one</td><td>
+<br>o-p40pass2 </br>
+<br>o-p40pass3 </br>
+<br>o-p40pass4 </br>
+<br>not-wf-sa-046 </br>
+<br>not-wf-sa-049 </br>
+<br>attlist10 </br>
+<br>o-p40fail1 </br>
+<br>o-p40fail4 </br>
+<br>ibm-not-wf-p40-ibm40n01 </br>
+<br>ibm-not-wf-p40-ibm40n02 </br>
+<br>ibm-not-wf-p40-ibm40n03 </br>
+<br>ibm-not-wf-p40-ibm40n04 </br>
+<br>valid-sa-005 </br>
+<br>valid-sa-010 </br>
+<br>valid-sa-011 </br>
+<br>o-p41pass1 </br>
+<br>o-p41pass2 </br>
+<br>ibm-valid-p40-ibm40n01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ In the start tag attributes/value pairs must be separated by whitespace
+ </td><td>one</td><td>
+<br>not-wf-sa-186 </br>
+<br>attlist11 </br>
+<br>o-p44fail4 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ Entity references are not allowed as content of the start-tag
+ </td><td>one</td><td>
+<br>not-wf-sa-111 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ White space is allowed after the tag name in a start tag
+ </td><td>one</td><td>
+<br>valid-sa-002 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ A nmtoken is not allowed as part of the start tag
+ </td><td>one</td><td>
+<br>o-p40fail2 </br>
+<br>o-p40fail3 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ An attribute name may not appear more than once in the same element
+ </td><td>one</td><td>
+<br>ibm-not-wf-p40-ibm40n05 </br>
+<br>o-p44fail5 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ An attribute must consist of a name follow by and equal sign followed by and attribute value
+ </td><td>one</td><td>
+<br>ibm-not-wf-p41-ibm41n01 </br>
+<br>ibm-not-wf-p41-ibm41n02 </br>
+<br>ibm-not-wf-p41-ibm41n03 </br>
+<br>ibm-not-wf-p41-ibm41n04 </br>
+<br>ibm-not-wf-p41-ibm41n05 </br>
+<br>ibm-not-wf-p41-ibm41n06 </br>
+<br>ibm-not-wf-p41-ibm41n07 </br>
+<br>ibm-not-wf-p41-ibm41n08 </br>
+<br>ibm-not-wf-p41-ibm41n09 </br>
+<br>valid-sa-015 </br>
+<br>valid-sa-016 </br>
+<br>o-p41fail2 </br>
+<br>o-p41fail3 </br>
+<br>valid-sa-004 </br>
+<br>not-wf-sa-011 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ An attribute name must be a well-formed XML name
+ </td><td>one</td><td>
+<br>not-wf-sa-001 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ An attribute is valid if the attribute name is declared in the attribute declaration and the
+ attribute value match the declared type
+ </td><td>one</td><td>
+<br>ibm-invalid-p41-ibm41i01 </br>
+<br>ibm-invalid-p41-ibm41i02 </br>
+<br>ibm-valid-p41-ibm41n01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ Attribute values are not allow to contain direct or indirect entity references to external
+ entities
+ </td><td>one</td><td>
+<br>ibm-not-wf-p41-ibm41n10 </br>
+<br>ibm-not-wf-p41-ibm41n11 </br>
+<br>ibm-not-wf-p41-ibm41n12 </br>
+<br>not-wf-sa-081 </br>
+<br>not-wf-sa-082 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ The replacement text of any entity referred to directly or indirectly in an attribute
+ value must not contain a "&lt;"
+ </td><td>one</td><td>
+<br>ibm-not-wf-p41-ibm41n13 </br>
+<br>ibm-not-wf-p41-ibm41n14 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ An end tag begins with the literal string "&lt;/" followed by an XML name, optionally
+ followed by whitespace, followed by the "&gt;" character
+ </td><td>one</td><td>
+<br>ibm-not-wf-p42-ibm42n01 </br>
+<br>ibm-not-wf-p42-ibm42n02 </br>
+<br>ibm-not-wf-p42-ibm42n03 </br>
+<br>ibm-not-wf-p42-ibm42n04 </br>
+<br>ibm-not-wf-p42-ibm42n05 </br>
+<br>o-p42pass1 </br>
+<br>o-p42pass2 </br>
+<br>o-p42fail1 </br>
+<br>o-p42fail2 </br>
+<br>o-p42fail3 </br>
+<br>valid-sa-003 </br>
+<br>not-wf-sa-042 </br>
+<br>ibm-valid-p42-ibm42n01 </br>
+<br>element00 </br>
+<br>element01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ An end tag must contain the name of the corresponding start tag
+ </td><td>one</td><td>
+<br>ibm-not-wf-p42-ibm42n01 </br>
+<br>not-wf-sa-019 </br>
+<br>not-wf-sa-053 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ The end of every element that begins with a start-tag must be marked
+ by an end-tag
+ </td><td>one</td><td>
+<br>not-wf-sa-0176 </br>
+<br>o-p39fail1 </br>
+<br>o-p39fail2 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ The content of an element must consists of any number of elements, character data,
+ references, CDATA sections, processing instructions and comments in any order.
+ </td><td>one</td><td>
+<br>valid-sa-009 </br>
+<br>valid-sa-048 </br>
+<br>valid-sa-008 </br>
+<br>valid-sa-021 </br>
+<br>valid-sa-022 </br>
+<br>valid-sa-016 </br>
+<br>valid-sa-017 </br>
+<br>valid-sa-018 </br>
+<br>valid-sa-019 </br>
+<br>valid-sa-020 </br>
+<br>not-wf-sa-035 </br>
+<br>ibm-not-wf-p43-ibm43n01 </br>
+<br>ibm-valid-p43-ibm43n01 </br>
+<br>o-p39pass2 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ General entity references are valid element content
+ </td><td>one</td><td>
+<br>valid-sa-023 </br>
+<br>valid-sa-024 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ Paramenter entity references are not valid element content
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ Character references are valid element content
+ </td><td>one</td><td>
+<br>valid-sa-007 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ DTD declarations are not allowed as part of the element content
+ </td><td>one</td><td>
+<br>ibm-not-wf-p43-ibm43n01 </br>
+<br>ibm-not-wf-p43-ibm43n02 </br>
+<br>ibm-not-wf-p43-ibm43n04 </br>
+<br>ibm-not-wf-p43-ibm43n05 </br>
+<br>o-p43fail1 </br>
+<br>o-p43fail2 </br>
+<br>not-wf-element04 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ Conditional sections are not allowed as part of the element content
+ </td><td>one</td><td>
+<br>o-p43fail3 </br>
+<br>o-p43fail2 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ An XML declaration are not allowed as part of the element content
+ </td><td>one</td><td>
+<br>not-wf-sa-150 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ An element with no content is a permissible element
+ </td><td>one</td><td>
+<br>o-p40pass2 </br>
+<br>valid-ext-sa-003 </br>
+<br>o-p39pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ An empty element tag begins with a "&lt;" followed by and XML name, followed
+ by any number of attributes separated by whitespace, followed by an optional
+ whitespace, followed by the literal "/&gt;"
+ </td><td>one</td><td>
+<br>ibm-not-wf-p44-ibm44n01 </br>
+<br>ibm-not-wf-p44-ibm44n02 </br>
+<br>ibm-not-wf-p44-ibm44n03 </br>
+<br>o-p28pass1 </br>
+<br>o-p44pass1 </br>
+<br>o-p44pass2 </br>
+<br>o-p44pass3 </br>
+<br>o-p44pass4 </br>
+<br>o-p44pass5 </br>
+<br>o-p44fail1 </br>
+<br>o-p44fail2 </br>
+<br>valid-sa-034 </br>
+<br>valid-sa-035 </br>
+<br>ibm-valid-p44-ibm44n01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ Comments are not allowed in an Empty element tag
+ </td><td>one</td><td>
+<br>o-p44fail3 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ In an empty element a white space is not allowed within the literal "/&gt;"
+ </td><td>one</td><td>
+<br>not-wf-sa-047 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ An empty element tag can be used to for any element which has no content
+ </td><td>one</td><td>
+<br>o-p39pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ An empty element tag must be used for elements which are declared empty
+ </td><td>one</td><td>
+<br>valid-sa-044 </br>
+<br>o-p28pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Start-Tags, End-Tags, and Empty-Element Tags</td><td>
+ An attribute name may not appear more than once in the same empty element
+ </td><td>one</td><td>
+<br>ibm-not-wf-p44-ibm44n04 </br>
+<br>not-wf-sa-038 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ An element type declaration must consist of the string "&lt;!ELEMENT" followed by
+ by whitespace, followed by an XML name, followed by a whitespace, followed by a
+ content specification, optionally followed by whitespace, followed by the "&gt;"
+ character
+ </td><td>one</td><td>
+<br>ibm-not-wf-p45-ibm45n05 </br>
+<br>ibm-not-wf-p45-ibm45n06 </br>
+<br>ibm-not-wf-p45-ibm45n07 </br>
+<br>ibm-not-wf-p45-ibm45n08 </br>
+<br>ibm-not-wf-p45-ibm45n09 </br>
+<br>ibm-not-wf-p45-ibm45v01 </br>
+<br>not-wf-sa-129 </br>
+<br>not-wf-sa-130 </br>
+<br>not-wf-sa-131 </br>
+<br>not-wf-sa-136 </br>
+<br>not-wf-sa-137 </br>
+<br>o-p45fail1 </br>
+<br>o-p45pass1 </br>
+<br>o-p47pass1 </br>
+<br>o-p48pass1 </br>
+<br>o-p49pass1 </br>
+<br>o-p50pass1 </br>
+<br>o-p46pass1 </br>
+<br>no-wf-sgml05 </br>
+<br>no-wf-sgml07 </br>
+<br>no-wf-sgml08 </br>
+<br>no-wf-sgml09 </br>
+<br>no-wf-sgml10 </br>
+<br>ibm-not-wf-p45-ibm45n04 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ An element type may not be declared more than once
+ </td><td>one</td><td>
+<br>ibm-not-wf-p45-ibm45n01 </br>
+<br>ibm-not-wf-p45-ibm45n03 </br>
+<br>invalid-el04 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ Comments are not allow in element type declaration
+ </td><td>one</td><td>
+<br>not-wf-sa-057 </br>
+<br>o-p45fail4 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ Only one content specification is allowed in an element type declaration
+ </td><td>one</td><td>
+<br>o-p45fail3 </br>
+<br>not-wf-sa-057 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ An element type declaration with no XML name is an illegal element type declaration
+ </td><td>one</td><td>
+<br>o-p45fail3 </br>
+<br>ibm-not-wf-p45-ibm45n01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ An element type declaration with no content specification is an illegal element type
+ declaration
+ </td><td>one</td><td>
+<br>ibm-not-wf-p45-ibm45n04 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ In an element type declaration the string "&lt;!ELEMENT" and the XML name must be
+ separated by space
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ In an element type declaration the XML name and the content specification must be
+ separated by space
+ </td><td>one</td><td>
+<br>ibm-not-wf-p45-ibm45n02 </br>
+<br>o-p45fail2 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ In an element type declaration a content specification must consist of either the
+ literals EMPTY or ANY, a mix content or a list of children
+ </td><td>one</td><td>
+<br>ibm-not-wf-p46-ibm46n01 </br>
+<br>ibm-not-wf-p46-ibm46n02 </br>
+<br>ibm-not-wf-p46-ibm46n03 </br>
+<br>ibm-not-wf-p46-ibm46n04 </br>
+<br>ibm-not-wf-p46-ibm46n05 </br>
+<br>ibm-valid-p45-ibm45n01 </br>
+<br>sgml11 </br>
+<br>sgml12 </br>
+<br>o-p46fail1 </br>
+<br>o-p46fail6 </br>
+<br>valid-sa-025 </br>
+<br>valid-sa-026 </br>
+<br>valid-sa-027 </br>
+<br>o-p47pass1 </br>
+<br>o-p48pass1 </br>
+<br>o-p49pass1 </br>
+<br>o-p50pass1 </br>
+<br>o-p46pass1 </br>
+<br>valid-sa-059 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ If an element is declared as "EMPTY" in the element type declaration, the element
+ must not have any contents and must always appear as an empty element in the
+ document
+ </td><td>one</td><td>
+<br>not-wf-sa-059 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ The content specification in an element type declaration must not be empty
+ </td><td>one</td><td>
+<br>not-wf-sa-139 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ A mixed content declaration must consists of the literal "#PCDATA" separated
+ by optional whitespaces or the literal "#PCDATA" optionally followed by an element
+ name separated only by the symbol "|" enclosed in parenthesis and ending with a"*"
+ </td><td>one</td><td>
+<br>not-wf-sa-125 </br>
+<br>not-wf-sa-126 </br>
+<br>not-wf-sa-127 </br>
+<br>o-p51fail1 </br>
+<br>o-p51fail2 </br>
+<br>o-p51fail4 </br>
+<br>o-p51fail5 </br>
+<br>o-p51fail6 </br>
+<br>ibm-not-wf-p51-ibm51n01 </br>
+<br>ibm-not-wf-p51-ibm51n02 </br>
+<br>ibm-not-wf-p51-ibm51n03 </br>
+<br>ibm-not-wf-p51-ibm51n04 </br>
+<br>ibm-not-wf-p51-ibm51n05 </br>
+<br>ibm-not-wf-p51-ibm51n06 </br>
+<br>ibm-not-wf-p51-ibm51n07 </br>
+<br>valid-sa-001 </br>
+<br>o-p51pass1 </br>
+<br>ibm-valid-p51-ibm51i01 </br>
+<br>o-p46pass1 </br>
+<br>valid-dtd00 </br>
+<br>o-p46fail2 </br>
+<br>o-p46fail3 </br>
+<br>o-p46fail5 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ The choices and sequences content particles are not allowed in a mixed content declaration
+ </td><td>one</td><td>
+<br>not-wf-sa-183 </br>
+<br>o-p51fail7 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ When paramenter entity reference are part of the mixed content declaration the
+ replacement text must be properly nested with parenthesized groups
+ </td><td>one</td><td>
+<br>ibm-valid-p51-ibm51v02 </br>
+<br>ibm-invalid-p51-ibm51i01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ In a mixed content declaration element names must not be parenthesized
+ </td><td>one</td><td>
+<br>not-wf-sa-124 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ In a mixed content declaration the literal "#PCDATA" must always appear before any other
+ content model
+ </td><td>one</td><td>
+<br>not-wf-sa-184 </br>
+<br>o-p51ail3 </br>
+<br>ibm-not-wf-p51-ibm51n02 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ The same name must not appear more than once in a single mixed-content declaration
+ </td><td>one</td><td>
+<br>invalid-dtd01 </br>
+<br>invalid-el05 </br>
+<br>ibm-invalid-p51-ibm51i03 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ In the content specification portion of an element type declaration, a children must consists of
+ either a choice or a sequence optionally followed by one of the characters ?,*,or +
+ </td><td>one</td><td>
+<br>o-p47fail2 </br>
+<br>o-p47fail3 </br>
+<br>o-p47fail4 </br>
+<br>ibm-not-wf-p47-ibm47n01 </br>
+<br>ibm-not-wf-p47-ibm47n02 </br>
+<br>ibm-not-wf-p47-ibm47n03 </br>
+<br>ibm-not-wf-p47-ibm47n04 </br>
+<br>ibm-not-wf-p47-ibm47n05 </br>
+<br>ibm-not-wf-p47-ibm47n06 </br>
+<br>valid-sa-057 </br>
+<br>valid-sa-081 </br>
+<br>valid-ext-sa-005 </br>
+<br>ibm-valid-p47-ibm47n01 </br>
+<br>o-p46fail4 </br>
+<br>o-p47pass1 </br>
+<br>o-p48pass1 </br>
+<br>o-p49pass1 </br>
+<br>o-p50pass1 </br>
+<br>o-p46pass1 </br>
+<br>not-wf-dtd01 </br>
+<br>sun-valid-optional </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ If the children is composed of choices, then the choices must contain one
+ or more content particles enclosed in matchig parenthesis and separated from
+ each other by vertical bars and optional whitespace
+ </td><td>one</td><td>
+<br>ibm-not-wf-p49-ibm49n01 </br>
+<br>ibm-not-wf-p49-ibm49n02 </br>
+<br>ibm-not-wf-p49-ibm49n03 </br>
+<br>ibm-not-wf-p49-ibm49n04 </br>
+<br>ibm-not-wf-p49-ibm49n05 </br>
+<br>ibm-not-wf-p49-ibm49n06 </br>
+<br>valid-sa-112 </br>
+<br>o-p49fail1 </br>
+<br>ibm-valid-p47-ibm47n01 </br>
+<br>o-p49fail1 </br>
+<br>not-wf-sgml13 </br>
+<br>not-wf-sa-123 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ If the children is composed of a sequence, then the sequence must contain
+ one or more content particles enclosed in matching parenthesis and separated
+ from each other by commas and optional whitespace
+ </td><td>one</td><td>
+<br>not-wf-sa-122 </br>
+<br>not-wf-sa-135 </br>
+<br>o-p47fail1 </br>
+<br>ibm-not-wf-p50-ibm50n01 </br>
+<br>ibm-not-wf-p50-ibm50n02 </br>
+<br>ibm-not-wf-p50-ibm50n03 </br>
+<br>ibm-not-wf-p50-ibm50n04 </br>
+<br>ibm-not-wf-p50-ibm50n05 </br>
+<br>ibm-not-wf-p50-ibm50n06 </br>
+<br>ibm-not-wf-p50-ibm50n07 </br>
+<br>ibm-valid-p47-ibm47n01 </br>
+<br>o-p50fail1 </br>
+<br>not-wf-sgml13 </br>
+<br>not-wf-dtd00 </br>
+<br>not-wf-sa-123 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ The content particles in the content specifications of an element
+ type declaration must consists of and XML name, choice or sequence
+ optionally followed by one of the characteres ?,*, or +
+ </td><td>one</td><td>
+<br>ibm-not-wf-p48-ibm48n01 </br>
+<br>ibm-not-wf-p48-ibm48n02 </br>
+<br>ibm-not-wf-p48-ibm48n03 </br>
+<br>ibm-not-wf-p48-ibm48n04 </br>
+<br>ibm-not-wf-p48-ibm48n05 </br>
+<br>ibm-not-wf-p48-ibm48n06 </br>
+<br>ibm-not-wf-p48-ibm48n07 </br>
+<br>ibm-valid-p47-ibm47n01 </br>
+<br>not-wf-sa-138 </br>
+<br>content01 </br>
+<br>content02 </br>
+<br>content03 </br>
+<br>o-p48fail1 </br>
+<br>o-p48fail2 </br>
+<br>valid-sa-112 </br>
+<br>not-wf-sa-133 </br>
+<br>not-wf-sa-134 </br>
+<br>valid-ext-sa-005 </br>
+<br>o-p46fail1 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ The content particles in the content specifications of an element
+ type declaration can contain a conbination of names, choices and sequences
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ If an element is declared in the element type declaration, it must followed
+ the choices order established in the content particle portion of the declaration
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ If an element is declared in the element type declaration, it must followed
+ the sequence order established in the content particle portion of the declaration
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ If an element is declared in the element type declaration, it must followed
+ the sequence order established in the content particle portion of the declaration
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ If the content particles in the content specifications does not include
+ the optional characters ?,*,+ the content particle or the element must
+ appear exactly once
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Element Type Declaration</td><td>
+ If a content particle in the content specification uses a paramenter
+ entity reference the replacement text must be properly nested with
+ parenthesized groups
+ </td><td>one</td><td>
+<br>invalid-002 </br>
+<br>ibm-invalid-p50-ibm50i01 </br>
+<br>ibm-valid-p49-ibm49n01 </br>
+<br>ibm-invalid-p51-ibm51i01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ An attribute list declaration must consists of the literal "&lt;!ATTLIST" followed by
+ a whitespace, followed by an XML name, followed by zero or more attribute definitions,
+ optionally followed by a whitespace, followed by "&gt;"
+ </td><td>one</td><td>
+<br>ibm-not-wf-p52-ibm52n01 </br>
+<br>ibm-not-wf-p52-ibm52n02 </br>
+<br>ibm-not-wf-p52-ibm52n03 </br>
+<br>ibm-not-wf-p52-ibm52n04 </br>
+<br>ibm-not-wf-p52-ibm52n05 </br>
+<br>ibm-not-wf-p52-ibm52n06 </br>
+<br>o-52fail1 </br>
+<br>o-52fail2 </br>
+<br>o-52oass1 </br>
+<br>valid-sa-040 </br>
+<br>valid-sa-077 </br>
+<br>valid-sa-078 </br>
+<br>valid-sa-071 </br>
+<br>valid-sa-072 </br>
+<br>valid-sa-073 </br>
+<br>valid-sa-074 </br>
+<br>valid-sa-075 </br>
+<br>valid-sa-079 </br>
+<br>valid-sa-080 </br>
+<br>sun-not-wf-sgml04 </br>
+<br>sun-not-wf-sgml06 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Only one literal "&lt;!ATTLIST" is allowed in an attribute list declaration
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Only one XML name is allowed in an attribute list declaration
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ The name in the attribute list declaration must be the type of an element
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Attributes are allowed to be declared for element type not itself
+ declared
+ </td><td>one</td><td>
+<br>valid-sa-113 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ The attribute definition of the attribute list declaration must consist of whitespace
+ followed by an XML name, followed by whitespace, followed by attribute type, followed by
+ whitespace, followed by a default declaration
+ </td><td>one</td><td>
+<br>ibm-not-wf-p53-ibm53n01 </br>
+<br>ibm-not-wf-p53-ibm53n02 </br>
+<br>ibm-not-wf-p53-ibm53n03 </br>
+<br>ibm-not-wf-p53-ibm53n04 </br>
+<br>ibm-not-wf-p53-ibm53n05 </br>
+<br>ibm-not-wf-p53-ibm53n06 </br>
+<br>ibm-not-wf-p53-ibm53n07 </br>
+<br>ibm-not-wf-p53-ibm53n08 </br>
+<br>ibm-valid-p52-ibm52v01 </br>
+<br>not-wf-sa-064 </br>
+<br>not-wf-sa-065 </br>
+<br>not-wf-sa-066 </br>
+<br>not-wf-sa-067 </br>
+<br>o-p53fail1 </br>
+<br>o-p53fail2 </br>
+<br>o-p53fail3 </br>
+<br>o-p53fail4 </br>
+<br>o-p53fail5 </br>
+<br>o-p53pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ In the attribute definition, the XML name must be the name of the attribute been declared
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ No more than one XML name is allowed in the attribute definition
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ No more than one attribute type is allowed in the attribute definition
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ No more than one default declaration is allowed in the attribute definition
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ When more than one attribute definition is provided for the same attribute of a given element
+ type, the first declaration is binding and later declarations are ignored
+ </td><td>one</td><td>
+<br>valid-sa-097????? </br>
+<br>valid-sa-045 </br>
+<br>valid-not-sa-006 </br>
+<br>valid-not-sa-010 </br>
+<br>valid-not-sa-026 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ When more than one attribute declaration is provided for a given element type, the content of
+ those provided are merged
+ </td><td>one</td><td>
+<br>valid-sa-046 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ An attribute type must consits either of a string type, a tokenized type, or an enumerated type
+ </td><td>one</td><td>
+<br>o-p54fail1 </br>
+<br>ibm-invalid-p54-ibm54i01 </br>
+<br>ibm-invalid-p54-ibm54i02 </br>
+<br>o-p54pass1 </br>
+<br>ibm-valid-p54-ibm54i01 </br>
+<br>ibm-valid-p54-ibm54v03 </br>
+<br>valid-sa-040 </br>
+<br>valid-sa-077 </br>
+<br>valid-sa-078 </br>
+<br>valid-sa-079 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ No more than one string type is allowed in the attribute type
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ No more than one tokenized type is allowed in the attribute type
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ No more than one enumerated type is allowed in the attribute type
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ The string type in the attribute type must consist of the literal "CDATA"
+ </td><td>one</td><td>
+<br>ibm-invalid-p55-ibm55i01 </br>
+<br>ibm-invalid-p55-ibm55i02 </br>
+<br>ibm-invalid-p55-ibm55i03 </br>
+<br>o-p55fail1 </br>
+<br>o-p55pass1 </br>
+<br>valid-sa-041 </br>
+<br>valid-sa-042 </br>
+<br>valid-sa-056 </br>
+<br>ibm-valid-p54-ibm54i01 </br>
+<br>ibm-valid-p54-ibm54v02 </br>
+<br>ibm-valid-p55-ibm55v01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ The tokenized type must consists of any one of the following literals; "ID",
+ "IDREF", "IDREFS", "ENTITY", "ENTITIES", "NMTOKEN", and "NMTOKENS"
+ </td><td>one</td><td>
+<br>ibm-invalid-p56-ibm56i01 </br>
+<br>ibm-invalid-p56-ibm56i02 </br>
+<br>ibm-invalid-p56-ibm56i03 </br>
+<br>ibm-invalid-p56-ibm56i04 </br>
+<br>ibm-invalid-p56-ibm56i05 </br>
+<br>ibm-invalid-p56-ibm56i06 </br>
+<br>ibm-invalid-p56-ibm56i07 </br>
+<br>not-wf-sa-060 </br>
+<br>attlist01 </br>
+<br>attlist02 </br>
+<br>attlist03 </br>
+<br>attlist04 </br>
+<br>attlist05 </br>
+<br>attlist06 </br>
+<br>attlist07 </br>
+<br>attlist08 </br>
+<br>attlist09 </br>
+<br>o-p56fail1 </br>
+<br>o-p56fail2 </br>
+<br>o-p56fail3 </br>
+<br>o-p56fail4 </br>
+<br>o-p56fail5 </br>
+<br>o-p56pass1 </br>
+<br>ibm-valid-p54-ibm54i01 </br>
+<br>ibm-valid-p54-ibm54v02 </br>
+<br>ibm-valid-p56-ibm56v01 </br>
+<br>ibm-valid-p56-ibm56v02 </br>
+<br>ibm-valid-p56-ibm56v03 </br>
+<br>valid-sa-071 </br>
+<br>valid-sa-072 </br>
+<br>valid-sa-073 </br>
+<br>valid-sa-074 </br>
+<br>valid-sa-075 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Attribute values of ID type must be valid XML names
+ </td><td>one</td><td>
+<br>ibm-invalid-p56-ibm56i01 </br>
+<br>ibm-valid-p56-ibm56v02 </br>
+<br>ibm-valid-p56-ibm56v03 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ A name used as the value of an ID type attribute cannot be used more than once
+ in the same document
+ </td><td>one</td><td>
+<br>ibm-invalid-p56-ibm56i02 </br>
+<br>ibm-valid-p56-ibm56v04 </br>
+<br>ibm-valid-p56-ibm56v05 </br>
+<br>sun-invalid-id02 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ An element is not allowed to use more than one attribute type ID
+ </td><td>one</td><td>
+<br>ibm-invalid-p56-ibm56i06 </br>
+<br>sun-invalid-id03 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ All attributes of ID type must have a declared default of #IMPLIED or #REQUIRED
+ </td><td>one</td><td>
+<br>ibm-invalid-p56-ibm56i03 </br>
+<br>ibm-invalid-p56-ibm56i05 </br>
+<br>ibm-valid-p56-ibm56v02 </br>
+<br>ibm-valid-p56-ibm56v03 </br>
+<br>attr09 </br>
+<br>attr10 </br>
+<br>attr11 </br>
+<br>attr12 </br>
+<br>attr13 </br>
+<br>attr14 </br>
+<br>attr15 </br>
+<br>attr16 </br>
+<br>sun-invalid-id04 </br>
+<br>sun-invalid-id05 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ A default declaration of #FIXED is not permissible for attributes of ID type
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Attribute values of IDREF type must be valid XML names
+ </td><td>one</td><td>
+<br>ibm-invalid-p56-ibm56i07 </br>
+<br>ibm-invalid-p56-ibm56i09 </br>
+<br>sun-invalid-id06 </br>
+<br>sun-invalid-id07 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Each name in an attribute value declared as IDREF type must match the value
+ of an ID atrribute on some element in the document
+ </td><td>one</td><td>
+<br>ibm-invalid-p56-ibm56i08 </br>
+<br>ibm-valid-p56-ibm56v06 </br>
+<br>ibm-valid-p56-ibm56v07 </br>
+<br>sun-invalid-id08 </br>
+<br>sun-invalid-id09 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Attribute values of type IDREFS must be a whitespace-separated list of ID
+ attribute values from elements in the document
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Attribute values of ENTITY type must be valid XML name
+ </td><td>one</td><td>
+<br>ibm-invalid-p56-ibm56i14 </br>
+<br>sun-invalid-attr01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Attribute values of ENTITIES type must be valid XML names
+ </td><td>one</td><td>
+<br>sun-invalid-attr02 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Attribute values of ENTITIES type must be a whitespace-separated list of
+ ENTITY attribute values
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Attribute values of ENTITIES type must match the name of an unparsed entity
+ declared in the DTD
+ </td><td>one</td><td>
+<br>ibm-invalid-p56-ibm56i11 </br>
+<br>ibm-invalid-p56-ibm56i12 </br>
+<br>ibm-invalid-p56-ibm56i13 </br>
+<br>ibm-invalid-p56-ibm56i14 </br>
+<br>ibm-invalid-p56-ibm56i15 </br>
+<br>ibm-invalid-p56-ibm56i16 </br>
+<br>ibm-valid-p54-ibm54i01 </br>
+<br>ibm-valid-p56-ibm56v08 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Attribute values of NMTOKEN type must match the Nmtoken production
+ </td><td>one</td><td>
+<br>ibm-invalid-p56-ibm56i17 </br>
+<br>ibm-valid-p56-ibm56v09 </br>
+<br>sun-invalid-attr05 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Attribute values of NMTOKENS type must match the Nmtokens production
+ </td><td>one</td><td>
+<br>ibm-valid-p56-ibm56v10 </br>
+<br>sun-invalid-attr06 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Attribute values of NMTOKENS type must be a whitespace-separated list of name
+ tokens
+ </td><td>one</td><td>
+<br>ibm-invalid-p56-ibm56i18 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ The enumarated type must consits of either a notation type or an enumeration
+ </td><td>one</td><td>
+<br>o-p57pass1 </br>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ An attribute type with an enumarated type must consits of either a notation type
+ or an enumeration
+ </td><td>one</td><td>
+<br>ibm-invalid-p57-ibm57i01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ A notation type must consists of the literal "NOTATION" followed by a whitespace,
+ followed by an optional whitespace, followed by one or more XML names, separated
+ by vertical bars and optional whitespaces, and enclosed in parentheses
+ </td><td>one</td><td>
+<br>ibm-invalid-p58-ibm58i01 </br>
+<br>ibm-invalid-p58-ibm58i02 </br>
+<br>ibm-invalid-p58-ibm58i03 </br>
+<br>ibm-invalid-p58-ibm58i04 </br>
+<br>ibm-invalid-p58-ibm58i05 </br>
+<br>ibm-invalid-p58-ibm58i06 </br>
+<br>ibm-invalid-p58-ibm58i07 </br>
+<br>ibm-invalid-p58-ibm58i08 </br>
+<br>not-wf-sa-068 </br>
+<br>not-wf-sa-158 </br>
+<br>o-p58fail1 </br>
+<br>o-p58fail2 </br>
+<br>o-p58fail4 </br>
+<br>o-p58fail5 </br>
+<br>o-p58fail6 </br>
+<br>o-p58fail7 </br>
+<br>o-p58fail8 </br>
+<br>o-p58pass1 </br>
+<br>valid-sa-090 </br>
+<br>ibm-valid-p54-ibm54v01 </br>
+<br>ibm-valid-p58-ibm58v01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Nntokens are not valid in a notation type
+ </td><td>one</td><td>
+<br>o-p58fail3 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ An attribute value of a notation type must match one of the notation names
+ included in the ATTLIST declaration
+ </td><td>one</td><td>
+<br>ibm-invalid-p58-ibm58i01 </br>
+<br>ibm-valid-p58-ibm58v02 </br>
+<br>sun-invalid-attr3 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ All notation names in the notation type must be declared
+ </td><td>one</td><td>
+<br>ibm-invalid-p58-ibm58i02 </br>
+<br>valid-sa-076 </br>
+<br>valid-sa-090 </br>
+<br>valid-sa-091 </br>
+<br>sun-invalid-attr04 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ An element type is not allowed to have more than one NOTATION attribute specified
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ An attribute of type NOTATION must not be declared on an element declared "EMPTY"
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ The notation names in a single Notation Type, as well as the NmTokens in a single
+ Enumeration attribute declaration, must all be distinct
+ </td><td>one-errata</td><td>
+<br>o-e2 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ If the enumerated type is an enumeration, it must constists of one or more XML name
+ tokens separated by vertical bars and optional whitespaces and enclosed in parentheses
+ </td><td>one</td><td>
+<br>not-wf-sa-058 </br>
+<br>ibm-invalid-p59-ibm59i01 </br>
+<br>ibm-invalid-p59-ibm59i02 </br>
+<br>ibm-invalid-p59-ibm59i03 </br>
+<br>ibm-invalid-p59-ibm59i04 </br>
+<br>ibm-invalid-p59-ibm59i05 </br>
+<br>ibm-invalid-p59-ibm59i06 </br>
+<br>o-p57fail1 </br>
+<br>attlist3 </br>
+<br>o-p59fail1 </br>
+<br>o-p59fail2 </br>
+<br>o-p59fail3 </br>
+<br>o-p59pass1 </br>
+<br>ibm-valid-p54-ibm54v01 </br>
+<br>ibm-valid-p57-ibm57v01 </br>
+<br>ibm-valid-p59-ibm59v01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ Attribute values of enumeration type must match one of the "Nmtoken" tokens in the
+ declaration
+ </td><td>one</td><td>
+<br>ibm-invalid-p59-ibm59i01 </br>
+<br>sun-invalid-attr07 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ XML allows Nmtoken reuse in an enumerated attribute type
+ </td><td>one</td><td>
+<br>valid-sgml01 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ The default declaration of an attribute definition must consits of either the literal "#REQUIRED",
+ "#IMPLIED", or optianally "#FIXED" followed by whitespace or an attribute value
+ </td><td>one</td><td>
+<br>ibm-valid-p60-ibm60v01 </br>
+<br>o-p60fail2 </br>
+<br>o-p60fail5 </br>
+<br>ibm-not-wf-p60-ibn60v01 </br>
+<br>ibm-not-wf-p60-ibn60v02 </br>
+<br>ibm-not-wf-p60-ibn60v03 </br>
+<br>ibm-not-wf-p60-ibn60v04 </br>
+<br>ibm-not-wf-p60-ibn60v05 </br>
+<br>ibm-not-wf-p60-ibn60v06 </br>
+<br>ibm-not-wf-p60-ibm60n08 </br>
+<br>o-p60pass1 </br>
+<br>valid-sa-077 </br>
+<br>valid-sa-078 </br>
+<br>valid-sa-071 </br>
+<br>valid-sa-072 </br>
+<br>valid-sa-073 </br>
+<br>valid-sa-074 </br>
+<br>valid-sa-075 </br>
+<br>valid-sa-079 </br>
+<br>valid-sa-080 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ If an attribute of an element is declared with a default of "#REQUIRED", then a validity
+ error will result for any instance the element does not provide a value for that attribute
+ </td><td>one</td><td>
+<br>ibm-invalid-p60-ibm60v01 </br>
+<br>ibm-valid-p60-ibm60v02 </br>
+<br>sun-invalid-required00 </br>
+<br>sun-valid-required00 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ If an attribute has a default value declared with the #FIXED keyword, instances of that attribute
+ must match the default value
+ </td><td>one</td><td>
+<br>ibm-invalid-p60-ibm60i02 </br>
+<br>ibm-valid-p60-ibm60v03 </br>
+<br>valid-sa-079 </br>
+<br>sun-invalid-attr08 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ It is ilegal to omit the attribute value when the default declaration of an attribute
+ was defined as "#FIXED"
+ </td><td>one</td><td>
+<br>o-p60fail4 </br>
+<br>ibm-not-wf-p60-ibn60v04 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ In a default declaration only attributes declared as #FIXED are allowed to include
+ attribute values in the declaration
+ </td><td>one</td><td>
+<br>o-p60fail3 </br>
+<br>valid-sa-079 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ It is legal to omit an attribute that was declared with a default value
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ When a default declaration of an attribute is defined as "#IMPLIED" a
+ default value must not be assumed
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ For an attribute default to be legal it most meet the syntactic constraints of the declared
+ attribute type
+ </td><td>one</td><td>
+<br>ibm-invalid-p60-ibm60v03 </br>
+<br>ibm-invalid-p60-ibm60v04 </br>
+<br>ibm-valid-p60-ibm60v04 </br>
+<br>valid-sa-102 </br>
+<br>valid-sa-103 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ The "&lt;" is not allowed as part of an attribute value in a default declaration
+ of an attribute list declaration
+ </td><td>one</td><td>
+<br>ibm-not-wf-p60-ibm60n07 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ An attribute declaration with no default declaration is an ilegal
+ attribute declaration
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ In attribute declaration if the declaration is neither #REQUIRED nor #IMPLIED, then
+ the AttValue value contains the declared default value
+ </td><td>one</td><td>
+<br>o-p60fail1 </br>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Attribute-list Declarations</td><td>
+ The XML processor must normilize the attribute value by applying the attribute value
+ normalization algorithm, or by using other methods rendering the same results
+ </td><td>one</td><td>
+<br>valid-ext-sa-113 </br>
+<br>valid-sa-111 </br>
+<br>valid-sa-105 </br>
+<br>valid-sa-106 </br>
+<br>valid-sa-107 </br>
+<br>valid-sa-110 </br>
+<br>valid-sa-102 </br>
+<br>valid-sa-103 </br>
+<br>valid-sa-058 </br>
+<br>valid-sa-095 </br>
+<br>valid-sa-096 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Conditional Sections</td><td>
+ A conditional section must consists of either an include section or an
+ ignore section
+ </td><td>one</td><td>
+<br>ibm-not-wf-p61-ibm61n01 </br>
+<br>ibm-valid-p61-ibm61v01 </br>
+<br>ibm-valid-p61-ibm61v02 </br>
+<br>o-61pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Conditional Sections</td><td>
+ Conditional sections are only used in external subset DTD's
+ </td><td>one</td><td>
+<br>valid-not-sa-028 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Conditional Sections</td><td>
+ In a conditional section, an include section must begin with the characters
+ "&lt;![" followed by the literal string "INCLUDE" separated by optional
+ whitespaces, followed by an external subset declaration enclosed in brackets "[]",
+ followed by the characters "]&gt;"
+ </td><td>one</td><td>
+<br>o-61fail1 </br>
+<br>ibm-not-wf-p62-ibm62n02 </br>
+<br>ibm-not-wf-p62-ibm62n03 </br>
+<br>ibm-not-wf-p62-ibm62n04 </br>
+<br>ibm-not-wf-p62-ibm62n05 </br>
+<br>ibm-not-wf-p62-ibm62n06 </br>
+<br>ibm-not-wf-p62-ibm62n07 </br>
+<br>ibm-not-wf-p62-ibm62n08 </br>
+<br>not-wf-not-sa-001 </br>
+<br>not-wf-not-sa-003 </br>
+<br>not-wf-not-sa-004 </br>
+<br>not-wf-not-sa-006 </br>
+<br>o-62fail1 </br>
+<br>o-62fail2 </br>
+<br>valid-not-sa-013 </br>
+<br>valid-not-sa-014 </br>
+<br>valid-not-sa-016 </br>
+<br>ibm-valid-p62-ibm62v01 </br>
+<br>ibm-valid-p62-ibm62v02 </br>
+<br>ibm-valid-p62-ibm62v03 </br>
+<br>ibm-valid-p62-ibm62v04 </br>
+<br>ibm-valid-p62-ibm62v05 </br>
+<br>valid-not-sa-028 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Conditional Sections</td><td>
+ In a conditional section, an ignore section must begin with the characters
+ "&lt;![" followed by the literal string "IGNORE" separated by optional
+ whitespaces, followed by an ignore section contents enclosed in brackets "[]",
+ followed by the characters "]&gt;"
+ </td><td>one</td><td>
+<br>ibm-not-wf-p63-ibm63n01 </br>
+<br>ibm-not-wf-p63-ibm63n02 </br>
+<br>ibm-not-wf-p63-ibm63n03 </br>
+<br>ibm-not-wf-p63-ibm63n04 </br>
+<br>ibm-not-wf-p63-ibm63n05 </br>
+<br>ibm-not-wf-p63-ibm63n06 </br>
+<br>ibm-not-wf-p63-ibm63n07 </br>
+<br>o-63fail1 </br>
+<br>o-63fail2 </br>
+<br>o-63pass1 </br>
+<br>ibm-valid-p63-ibm63v01 </br>
+<br>ibm-valid-p63-ibm63v02 </br>
+<br>ibm-valid-p63-ibm63v03 </br>
+<br>ibm-valid-p63-ibm63v04 </br>
+<br>ibm-valid-p63-ibm63v05 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Conditional Sections</td><td>
+ An ignore section content must consists of an ignore block, optionally
+ followed by an ignore section content enclosed in "!&lt;[" and "]]&gt;"
+ and ignore block
+ </td><td>one</td><td>
+<br>???? </br>
+<br>ibm-not-wf-p64-ibm64n01 </br>
+<br>ibm-not-wf-p64-ibm64n02 </br>
+<br>ibm-not-wf-p64-ibm64n03 </br>
+<br>o-64fail1 </br>
+<br>o-64fail2 </br>
+<br>ibm-valid-p64-ibm64v01 </br>
+<br>ibm-valid-p64-ibm64v02 </br>
+<br>ibm-valid-p64-ibm64v03 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Conditional Sections</td><td>
+ An ignore block must contain any run of text that contains neither the
+ "&lt; or "]]&gt;"
+ </td><td>one</td><td>
+<br>ibm-not-wf-p65-ibm65n01 </br>
+<br>ibm-not-wf-p65-ibm65n02 </br>
+<br>ibm-valid-p65-ibm65v01 </br>
+<br>ibm-valid-p65-ibm65v02 </br>
+<br>sun-not-wf-cond01 </br>
+<br>sun-not-wf-cond02 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Conditional Sections</td><td>
+ If INCLUDE is the keyword used as part of a conditional section then the
+ content of the conditional section are part of the DTD
+ </td><td>one</td><td>
+<br>valid-not-sa-028 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Conditional Sections</td><td>
+ If IGNORE is the keyword used as part of a conditional section then the
+ content of the conditional section are not logically part of the DTD
+ </td><td>one</td><td>
+<br>valid-not-sa-029 </br>
+<br>valid-not-sa-030 </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Conditional Sections</td><td>
+ When an INCLUDE is inside an IGNORE, the include and its declarations are
+ ignored
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Conditional Sections</td><td>
+ When an IGNORE is inside an INCLUDE, the declarations inside the IGNORE
+ are ignored
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Conditional Sections</td><td>
+ In a conditional section the ignore section ignore everything except the
+ section delimiters
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Logical Structures</td><td>Conditional Sections</td><td>
+ In a conditional section, when the keyword is a parameter entity reference,
+ the paramenter entity reference must be replaced by its content before the
+ processor decides whether to include or ignore the conditional section
+ </td><td>one</td><td>
+<br>valid-not-sa-015 </br>
+<br>valid-not-sa-022 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ A paramenter entity and a general entity with the same name are two distint
+ entities
+ </td><td>one</td><td>
+<br>valid-sa-085 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ Entity reference myst be in content of element
+ </td><td>one</td><td>
+<br>not-wf-sa-110 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ A character reference must consits of the literal "&amp;#" followed by one or more
+ of the ASCII digits 0 through 9 or the literal "&amp;#x" followed by one or more
+ of the hexadecimal digits 0 through F and the digits representing 10 through
+ 16 both ending with the character ";"
+ </td><td>one</td><td>
+<br>not-wf-sa-009 </br>
+<br>not-wf-sa-022 </br>
+<br>not-wf-sa-052 </br>
+<br>not-wf-sa-093 </br>
+<br>o-66pass1 </br>
+<br>ibm-not-wf-p66-ibm66n02 </br>
+<br>ibm-not-wf-p66-ibm66n03 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ In a well-formed document the characters refered by a character reference must
+ be legal characters
+ </td><td>one</td><td>
+<br>o-66fail2 </br>
+<br>o-66fail5 </br>
+<br>ibm-not-wf-p66-ibm66n01 </br>
+<br>ibm-not-wf-p66-ibm66n04 </br>
+<br>ibm-not-wf-p66-ibm66n05 </br>
+<br>ibm-not-wf-p66-ibm66n06 </br>
+<br>ibm-not-wf-p66-ibm66n07 </br>
+<br>ibm-not-wf-p66-ibm66n08 </br>
+<br>ibm-not-wf-p66-ibm66n09 </br>
+<br>ibm-not-wf-p66-ibm66n10 </br>
+<br>ibm-not-wf-p66-ibm66n11 </br>
+<br>ibm-not-wf-p66-ibm66n12 </br>
+<br>ibm-not-wf-p66-ibm66n13 </br>
+<br>ibm-not-wf-p66-ibm66n14 </br>
+<br>ibm-not-wf-p66-ibm66n15 </br>
+<br>valid-sa-064 </br>
+<br>valid-sa-066 </br>
+<br>ibm-valid-p66-ibm66v01 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ A character reference using "&amp;#x" provides a hexadecimal representation of
+ the characte's code
+ </td><td>one</td><td>
+<br>o-66fail4 </br>
+<br>valid-sa-062 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ A character reference using "&amp;#" provides a decimal representation of
+ the characte's code
+ </td><td>one</td><td>
+<br>o-66fail3 </br>
+<br>valid-sa-060 </br>
+<br>valid-sa-061 </br>
+<br>valid-sa-067 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ A reference must consists of an Entity Reference or a Character Reference
+ </td><td>one</td><td>
+<br>ibm-valid-p67-ibm67v01 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ A general entity reference must consits of an XML name with "&amp;" and ";" as starting and
+ ending delimiters, repectivately
+ </td><td>one</td><td>
+<br>ibm-not-wf-p68-ibm68n01 </br>
+<br>ibm-not-wf-p68-ibm68n02 </br>
+<br>ibm-not-wf-p68-ibm68n03 </br>
+<br>not-wf-sa-007 </br>
+<br>not-wf-sa-010 </br>
+<br>not-wf-sa-121 </br>
+<br>o-p68fail1 </br>
+<br>o-p68fail2 </br>
+<br>o-p68fail3 </br>
+<br>o-p68pass1 </br>
+<br>valid-ext-sa-014 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ A parameter entity reference must consits of an XML name with "%" and ";" as
+ starting and ending delimiters, repectivately
+ </td><td>one</td><td>
+<br>o-28pass5 </br>
+<br>ibm-not-wf-p69-ibm69n01 </br>
+<br>ibm-not-wf-p69-ibm69n02 </br>
+<br>ibm-not-wf-p69-ibm69n03 </br>
+<br>ibm-not-wf-p69-ibm69n04 </br>
+<br>o-p69pass1 </br>
+<br>o-p69fail1 </br>
+<br>o-p69fail2 </br>
+<br>o-p69fail3 </br>
+<br>sun-not-wf-dtd02 </br>
+<br>sun-not-wf-dtd03 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ In a well-formed standalone document a general entity must be declared before it can be
+ reference
+ </td><td>one</td><td>
+<br>o-28pass3 </br>
+<br>not-wf-not-sa-005 </br>
+<br>inv-dtd06 </br>
+<br>ibm-invalid-p68-ibm68i01 </br>
+<br>ibm-invalid-p68-ibm68i02 </br>
+<br>ibm-invalid-p68-ibm68i03 </br>
+<br>ibm-invalid-p68-ibm68i04 </br>
+<br>ibm-not-wf-p68-ibm68n04 </br>
+<br>ibm-not-wf-p68-ibm68n05 </br>
+<br>ibm-not-wf-p68-ibm68n06 </br>
+<br>ibm-not-wf-p68-ibm68n07 </br>
+<br>valid-sa-072 </br>
+<br>valid-sa-073 </br>
+<br>valid-sa-076 </br>
+<br>valid-sa-078 </br>
+<br>not-wf-sa-180 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ In a well-formed document the predefined entities do not need to be declared
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ Valid documents should declare predefined entities to maintain interoperability
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ In a valid non-standalone document the name of an entity must match the name given
+ in the entity declaration
+ </td><td>one</td><td>
+<br>valid-not-sa-023 </br>
+<br>ibm-invalid-p69-ibm69i03 </br>
+<br>ibm-invalid-p69-ibm69i01 </br>
+<br>ibm-invalid-p69-ibm69i02 </br>
+<br>ibm-invalid-p69-ibm69i04 </br>
+<br>ibm-invalid-p69-ibm69i05 </br>
+<br>valid-not-sa-003 </br>
+<br>valid-not-sa-004 </br>
+<br>valid-not-sa-005 </br>
+<br>ibm-valid-p68-ibm68v01 </br>
+<br>ibm-valid-p68-ibm68v02 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ In a valid XML document the declaration of a parameter entity must precede any
+ reference to it
+ </td><td>one</td><td>
+<br>ibm-invalid-p69-ibm69i01 </br>
+<br>ibm-invalid-p69-ibm69i02 </br>
+<br>ibm-invalid-p69-ibm69i04 </br>
+<br>ibm-invalid-p69-ibm69i05 </br>
+<br>ibm-not-wf-p69-ibm69n05 </br>
+<br>valid-not-sa-003 </br>
+<br>valid-not-sa-004 </br>
+<br>valid-not-sa-005 </br>
+<br>ibm-valid-p69-ibm69v01 </br>
+<br>ibm-valid-p69-ibm69v02 </br>
+<br>valid-not-sa-027 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ In a valid XML document the declaration of a general entity must precede any
+ reference to that general entity
+ </td><td>one</td><td>
+<br>not-wf-sa-185 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ In a well-formed document entity references may only contain the names of parsed
+ entities
+ </td><td>one</td><td>
+<br>ibm-not-wf-p68-ibm68n08 </br>
+<br>not-wf-sa-084 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ In a well-formed document unparsed entities are refered only in attribute values
+ declared to be of type ENTITY or ENTITIES
+ </td><td>one</td><td>
+<br>ibm-not-wf-p68-ibm68n08 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ In a well-formed document a parsed entity cannot refer to itself, either
+ directly or indirectly
+ </td><td>one</td><td>
+<br>ibm-not-wf-p68-ibm68n09 </br>
+<br>ibm-not-wf-p68-ibm68n10 </br>
+<br>ibm-not-wf-p69-ibm69n06 </br>
+<br>ibm-not-wf-p69-ibm69n07 </br>
+<br>not-wf-sa-071 </br>
+<br>not-wf-sa-075 </br>
+<br>not-wf-sa-079 </br>
+<br>not-wf-sa-080 </br>
+<br>not-wf-ext-sa-001 </br>
+<br>not-wf-sa-118 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Character and Entity References</td><td>
+ In a well-formed document parameter-entity reference may only appear in a DTD
+ </td><td>one</td><td>
+<br>not-wf-sa-163 </br>
+<br>not-wf-sa-164 </br>
+<br>valid-not-sa-003 </br>
+<br>valid-not-sa-004 </br>
+<br>valid-not-sa-005 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ An Entity Declaration must consists of a general entity declaration or a paramenter
+ entity declaration
+ </td><td>one</td><td>
+<br>o-p70fail1 </br>
+<br>o-p70pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ A general entity declaration must consists of the literal "&lt;ENTITY followed by a
+ followed by an XML name, separated with whitespaces, followed by an entity type
+ definition, optionally followed by a whitespace and followed by the character "&gt;"
+ </td><td>one</td><td>
+<br>ibm-not-wf-p71-ibm71n01 </br>
+<br>ibm-not-wf-p71-ibm71n02 </br>
+<br>ibm-not-wf-p71-ibm71n03 </br>
+<br>ibm-not-wf-p71-ibm71n04 </br>
+<br>ibm-not-wf-p71-ibm71n05 </br>
+<br>ibm-not-wf-p71-ibm71n06 </br>
+<br>ibm-not-wf-p71-ibm71n07 </br>
+<br>ibm-not-wf-p71-ibm71n08 </br>
+<br>ibm-valid-p70-ibm70v01 </br>
+<br>o-p71fail1 </br>
+<br>o-p71fail2 </br>
+<br>o-p71fail3 </br>
+<br>o-p71fail4 </br>
+<br>o-p71pass1 </br>
+<br>not-wf-sa-062 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ A paramenter entity declaration must consists of the literal "&lt;ENTITY followed by
+ the character "%" and an XML name and a parameter entity definition separated by whitespaces,
+ optionally followed by a whitespace, followed by the character "&gt;"
+ </td><td>one</td><td>
+<br>ibm-not-wf-p72-ibm72n01 </br>
+<br>ibm-not-wf-p72-ibm72n02 </br>
+<br>ibm-not-wf-p72-ibm72n03 </br>
+<br>ibm-not-wf-p72-ibm72n04 </br>
+<br>ibm-not-wf-p72-ibm72n05 </br>
+<br>ibm-not-wf-p72-ibm72n06 </br>
+<br>ibm-not-wf-p72-ibm72n07 </br>
+<br>ibm-not-wf-p72-ibm72n08 </br>
+<br>ibm-not-wf-p72-ibm72n09 </br>
+<br>ibm-valid-p70-ibm70v01 </br>
+<br>not-wf-sa-165 </br>
+<br>o-p72fail1 </br>
+<br>o-p72fail2 </br>
+<br>o-p72fail3 </br>
+<br>o-p72fail4 </br>
+<br>valid-sa-082 </br>
+<br>o-p72pass1 </br>
+<br>valid-not-sa-017 </br>
+<br>valid-not-sa-021 </br>
+<br>valid-not-sa-011 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ An entity definition must consists of an entity value or an external id followed by
+ a optional ndata declaration
+ </td><td>one</td><td>
+<br>ibm-not-wf-p73-ibm73n01 </br>
+<br>ibm-not-wf-p73-ibm73n03 </br>
+<br>ibm-valid-p70-ibm70v01 </br>
+<br>valid-not-sa-018 </br>
+<br>o-p73fail1 </br>
+<br>o-p73fail2 </br>
+<br>o-p73fail3 </br>
+<br>o-p73fail4 </br>
+<br>o-p73fail5 </br>
+<br>o-p73pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ A parameter entity definition must consist of an entity value or an external id
+ </td><td>one</td><td>
+<br>ibm-not-wf-p74-ibm74n01 </br>
+<br>ibm-valid-p70-ibm70v01 </br>
+<br>o-p74pass1 </br>
+<br>o-p74fail2 </br>
+<br>o-p74fail3 </br>
+<br>not-wf-notsa-008 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ In a parameter entity declaration NdataDecl are not allowed
+ </td><td>one</td><td>
+<br>not-wf-sa-089 </br>
+<br>not-wf-sa-091 </br>
+<br>o-p74fail1 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ If an entity is declared more than once, the binding declaration is the
+ first one encountered
+ </td><td>one</td><td>
+<br>valid-sa-086 </br>
+<br>valid-not-sa-025 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ In a parsed entity, the name identifies the entity in the entity reference
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ In an unparsed entity, the value of an ENTITY or ENTITIES attribute identifies
+ the entity
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ An internal entity must be a parsed entity
+ </td><td>one</td><td>
+<br>valid-sa-070 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ An external id must consists of the literal "SYSTEM" followed by a whitespace,
+ followed by a system literal or the listeral "PUBLIC" followed by a public id
+ literal and a system literal separated by whitespaces
+ </td><td>one</td><td>
+<br>ibm-valid-p70-ibm70v01 </br>
+<br>not-wf-sa-054 </br>
+<br>not-wf-sa-061 </br>
+<br>valid-not-sa-008 </br>
+<br>valid-not-sa-009 </br>
+<br>valid-not-sa-001 </br>
+<br>valid-not-sa-002 </br>
+<br>valid-ext-sa-008 </br>
+<br>valid-ext-sa-007 </br>
+<br>dtd04 </br>
+<br>dtd05 </br>
+<br>o-p75fail1 </br>
+<br>o-p75fail2 </br>
+<br>o-p75fail3 </br>
+<br>o-p75fail4 </br>
+<br>o-p75fail5 </br>
+<br>o-p75fail6 </br>
+<br>valid-not-sa-018 </br>
+<br>valid-not-sa-011 </br>
+<br>ibm-not-wf-p75-ibm75n01 </br>
+<br>ibm-not-wf-p75-ibm75n02 </br>
+<br>ibm-not-wf-p75-ibm75n03 </br>
+<br>ibm-not-wf-p75-ibm75n04 </br>
+<br>ibm-not-wf-p75-ibm75n05 </br>
+<br>ibm-not-wf-p75-ibm75n06 </br>
+<br>ibm-not-wf-p75-ibm75n07 </br>
+<br>ibm-not-wf-p75-ibm75n08 </br>
+<br>ibm-not-wf-p75-ibm75n09 </br>
+<br>ibm-not-wf-p75-ibm75n10 </br>
+<br>ibm-not-wf-p75-ibm75n11 </br>
+<br>ibm-not-wf-p75-ibm75n12 </br>
+<br>ibm-not-wf-p75-ibm75n13 </br>
+<br>not-wf-pubid05 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ An ndata declaration must consists of a whitespace followed by the literal "NDATA",
+ followed by an XML name separated by a whitespace
+ </td><td>one</td><td>
+<br>ibm-valid-p70-ibm70v01 </br>
+<br>ibm-not-wf-p76-ibm76n02 </br>
+<br>ibm-not-wf-p76-ibm76n03 </br>
+<br>ibm-not-wf-p76-ibm76n04 </br>
+<br>ibm-not-wf-p76-ibm76n05 </br>
+<br>ibm-not-wf-p76-ibm76n06 </br>
+<br>ibm-not-wf-p76-ibm76n07 </br>
+<br>ibm-not-wf-p76-ibm76n01 </br>
+<br>ibm-not-wf-p76-ibm76n02 </br>
+<br>not-wf-sa-069 </br>
+<br>o-p76fail1 </br>
+<br>o-p76fail2 </br>
+<br>o-p76fail3 </br>
+<br>o-p76fail4 </br>
+<br>o-p76pass1 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ When a Ndata declaration is used in a general entity declaration the entity is an
+ unparsed entity
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ When an entity value is used in a general entity declaration the entity is a
+ parsed entity
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Entity Declarations</td><td>
+ In a valid document the name in a Ndata declaration must match the declared name of
+ a notation
+ </td><td>one</td><td>
+<br>ibm-invalid-p76-ibm76i01 </br>
+<br>not-wf-sa-083 </br>
+<br>sun-invalid-dtd02 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Parsed Entities</td><td>
+ A text declaration must consists of an optional version information, followed by an
+ encoding declaration, optionally followed by a whitespace enclosed in the delimeters
+ "&lt;?xml" and "?gt;"
+ </td><td>one</td><td>
+<br>o-p30fail1 </br>
+<br>encoding07 </br>
+<br>ibm-not-wf-p77-ibm77n01 </br>
+<br>ibm-not-wf-p77-ibm77n02 </br>
+<br>ibm-not-wf-p77-ibm77n03 </br>
+<br>ibm-not-wf-p77-ibm77n04 </br>
+<br>valid-not-sa-012 </br>
+<br>not-wf-ext-sa-002 </br>
+<br>sun-not-wf-dtd07 </br>
+<br>sun-not-wf-decl01 </br>
+<br>sun-valid-ext01 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Parsed Entities</td><td>
+ parsed entities which are stored in an encoding other than UTF-8 or UTF-16 must begin
+ with a text declaration
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Parsed Entities</td><td>
+ A text declaration must appear at the beginnig of an external parsed entity
+ </td><td>one</td><td>
+<br>ibm-not-wf-p30-ibm30n01 </br>
+<br>ibm-not-wf-p78-ibm78n01 </br>
+<br>ibm-not-wf-p78-ibm78n02 </br>
+<br>ibm-not-wf-p79-ibm79n01 </br>
+<br>ibm-not-wf-p79-ibm79n02 </br>
+<br>valid-not-sa-012 </br>
+<br>not-wf-sa-153 </br>
+<br>not-wf-sa-007 </br>
+<br>sun-valid-ext01 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Parsed Entities</td><td>
+ A text declaration must be provided literally, not by reference to a parsed entity
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Parsed Entities</td><td>
+ An internal general parsed entity is well-formed if it replacement text is a legal
+ content
+ </td><td>one</td><td>
+<br>not-wf-sa-074 </br>
+<br>not-wf-sa-103 </br>
+<br>not-wf-sa-104 </br>
+<br>not-wf-sa-116 </br>
+<br>not-wf-sa-117 </br>
+<br>not-wf-sa-119 </br>
+<br>not-wf-sa-181 </br>
+<br>not-wf-sa-182 </br>
+<br>not-wf-sa-153 </br>
+<br>valid-sa-053 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Parsed Entities</td><td>
+ The document entity is well-formed if it matches the production labeled document
+ </td><td>one</td><td>
+<br>not-wf-sa-109 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Parsed Entities</td><td>
+ An external general parsed entity is well-formed if it contains an optional text
+ declaration and a content
+ </td><td>one</td><td>
+<br>ibm-valid-p79-ibm79v01 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Parsed Entities</td><td>
+ An encoding declaration must consists of a whitespace followed by the literal
+ "encoding", followed by equal, followed by an encoding name enclosed in double
+ quotes or enclosed in single quotes
+ </td><td>one</td><td>
+<br>valid-ext-sa-008 </br>
+<br>ibm-valid-p78-ibm78v01 </br>
+<br>ibm-not-wf-p80-ibm80n01 </br>
+<br>ibm-not-wf-p80-ibm80n02 </br>
+<br>ibm-not-wf-p80-ibm80n03 </br>
+<br>ibm-not-wf-p80-ibm80n04 </br>
+<br>ibm-not-wf-p80-ibm80n05 </br>
+<br>ibm-not-wf-p80-ibm80n06 </br>
+<br>valid-sa-031 </br>
+<br>not-wf-sa-101 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Parsed Entities</td><td>
+ An encoding name begins with one of the ASCII letters A through Z or a through
+ z, followed by any number of ASCII letters, digits, period, underscore or a hyphen
+ </td><td>one</td><td>
+<br>ibm-not-wf-p81-ibm81n01 </br>
+<br>ibm-not-wf-p81-ibm81n02 </br>
+<br>ibm-not-wf-p81-ibm81n03 </br>
+<br>ibm-not-wf-p81-ibm81n04 </br>
+<br>ibm-not-wf-p81-ibm81n05 </br>
+<br>ibm-not-wf-p81-ibm81n06 </br>
+<br>ibm-not-wf-p81-ibm81n07 </br>
+<br>ibm-not-wf-p81-ibm81n08 </br>
+<br>ibm-not-wf-p81-ibm81n09 </br>
+<br>encoding01 </br>
+<br>encoding02 </br>
+<br>encoding03 </br>
+<br>encoding04 </br>
+<br>encoding05 </br>
+<br>encoding06 </br>
+<br>valid-sa-099 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Parsed Entities</td><td>
+ All XML processors must be able to read entities in both UTF-8 and UTF-16 encodings
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Parsed Entities</td><td>
+ All XML processors must report a fatal error when it encounters an entity with
+ an encoding that is unable to process
+ </td><td>one</td><td>
+<br>pr-xml-euc-jp </br>
+<br>pr-xml-iso-2022-jp </br>
+<br>pr-xml-shift_jis </br>
+<br>weekly-euc-jp </br>
+<br>weekly-iso-2022-jp </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Notation Declarations</td><td>
+ A notation declaration must consists of the listeral "&lt;NOTATION" followed by an
+ XML name and an external id or public id separated by whitespaces, optionally followed
+ by a whitespace, followed by "&gt;"
+ </td><td>one</td><td>
+<br>ibm-not-wf-p82-ibm82n01 </br>
+<br>ibm-not-wf-p82-ibm82n02 </br>
+<br>ibm-not-wf-p82-ibm82n03 </br>
+<br>ibm-not-wf-p82-ibm82n04 </br>
+<br>ibm-not-wf-p82-ibm82n05 </br>
+<br>ibm-not-wf-p82-ibm82n06 </br>
+<br>ibm-not-wf-p82-ibm82n07 </br>
+<br>ibm-not-wf-p82-ibm20n08 </br>
+<br>valid-sa-069 </br>
+<br>notation01 </br>
+<br>ibm-valid-p82-ibm82v01 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Notation Declarations</td><td>
+ A public id must consists of the literal "PUBLIC", followed by a whitespace, followed by
+ a public literal
+ </td><td>one</td><td>
+<br>ibm-not-wf-p83-ibm83n01 </br>
+<br>ibm-not-wf-p83-ibm83n02 </br>
+<br>ibm-not-wf-p83-ibm83n03 </br>
+<br>ibm-not-wf-p83-ibm83n04 </br>
+<br>ibm-not-wf-p83-ibm83n05 </br>
+<br>ibm-not-wf-p83-ibm83n06 </br>
+<br>ibm-valid-p83-ibm83v01 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Notation Declarations</td><td>
+ In a valid document only one notation declaration can declare a given name
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>XML Processor Treatment of Entities and References</td><td>
+ When an XML processor recognizes a reference to a parsed entity, in order to
+ validate the document, the processor must include its replacement text
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>XML Processor Treatment of Entities and References</td><td>
+ If there is an external entity, and the processor is not attempting to validate
+ the XML document but does not include the entity's replacement text, it must
+ inform the application that it recognized, but did not read, the entity
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>XML Processor Treatment of Entities and References</td><td>
+ When a paramenter entity reference is recognized in the DTD and included, its
+ replacement text is expanded with spaces in either side
+ </td><td>one</td><td>
+<br>valid-not-sa-020 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>XML Processor Treatment of Entities and References</td><td>
+ When an entity reference appears in an attribute value the single or double quotes
+ character in the replacement text is always treated as a normal data character
+ and will not terminate the literal
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>XML Processor Treatment of Entities and References</td><td>
+ When a parameter entity reference appears in a literal entity value the single or double
+ quotes character in the replacement text is always treated as a normal data character
+ and will not terminate the literal
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>XML Processor Treatment of Entities and References</td><td>
+ The appearance of a reference to an unparsed entity is forbidden and constitute fatal errors
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>XML Processor Treatment of Entities and References</td><td>
+ The appearance of any character or general-entity reference in the DTD except within
+ an entity value or attribute value is forbidden and constitute fatal errors
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>XML Processor Treatment of Entities and References</td><td>
+ A reference to an external entity in an attribute value is forbidden, and constitute
+ fatal errors
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Construction of Internal Replacement Text</td><td>
+ In an internal entity declaration the literal entity value may contain character,
+ paramenter entity, and general entity references
+ </td><td>one</td><td>
+<br>valid-sa-101 </br>
+<br>valid-sa-117 </br>
+<br>valid-sa-118 </br>
+<br>sun-valid-pe00 </br>
+<br>sun-valid-pe01 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Construction of Internal Replacement Text</td><td>
+ In an internal entity declaration a parameter entity reference must be expanded
+ </td><td>one</td><td>
+<br>sun-valid-pe00 </br>
+<br>sun-valid-pe01 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Construction of Internal Replacement Text</td><td>
+ In an internal entity declaration, a character reference must be expanded
+ </td><td>one</td><td>
+<br>sun-valid-pe00 </br>
+<br>sun-valid-pe01 </br>
+<br>not-wf-sa-092 </br>
+<br>not-wf-sa-115 </br>
+<br>not-wf-sa-120 </br>
+<br>valid-sa-065 </br>
+<br>valid-sa-087 </br>
+<br>valid-sa-088 </br>
+</td>
+</tr>
+<tr>
+<td>Physical Structures</td><td>Construction of Internal Replacement Text</td><td>
+ In an internal entity declaration a general entity reference must be left unexpanded
+ </td><td>one</td><td>
+<br>sun-valid-pe00 </br>
+<br>sun-valid-pe01 </br>
+</td>
+</tr>
+<tr>
+<td>Character Classes</td><td>Characters</td><td>
+ A letter must consists of a base character or an Ideographic
+ </td><td>one</td><td>
+<br>???? </br>
+</td>
+</tr>
+<tr>
+<td>Character Classes</td><td>Characters</td><td>
+ A base character must consists of the Unicode characters that are alphabetic but
+ not punctuation marks or digits
+ </td><td>one</td><td>
+<br>ibm-not-wf-p85-ibm85n01 </br>
+<br>ibm-not-wf-p85-ibm85n02 </br>
+<br>ibm-not-wf-p85-ibm85n03 </br>
+<br>ibm-not-wf-p85-ibm85n04 </br>
+<br>ibm-not-wf-p85-ibm85n05 </br>
+<br>ibm-not-wf-p85-ibm85n06 </br>
+<br>ibm-not-wf-p85-ibm85n07 </br>
+<br>ibm-not-wf-p85-ibm85n08 </br>
+<br>ibm-not-wf-p85-ibm85n09 </br>
+<br>ibm-not-wf-p85-ibm85n10 </br>
+<br>ibm-not-wf-p85-ibm85n100 </br>
+<br>ibm-not-wf-p85-ibm85n101 </br>
+<br>ibm-not-wf-p85-ibm85n102 </br>
+<br>ibm-not-wf-p85-ibm85n103 </br>
+<br>ibm-not-wf-p85-ibm85n104 </br>
+<br>ibm-not-wf-p85-ibm85n105 </br>
+<br>ibm-not-wf-p85-ibm85n106 </br>
+<br>ibm-not-wf-p85-ibm85n107 </br>
+<br>ibm-not-wf-p85-ibm85n108 </br>
+<br>ibm-not-wf-p85-ibm85n109 </br>
+<br>ibm-not-wf-p85-ibm85n11 </br>
+<br>ibm-not-wf-p85-ibm85n110 </br>
+<br>ibm-not-wf-p85-ibm85n111 </br>
+<br>ibm-not-wf-p85-ibm85n112 </br>
+<br>ibm-not-wf-p85-ibm85n113 </br>
+<br>ibm-not-wf-p85-ibm85n114 </br>
+<br>ibm-not-wf-p85-ibm85n115 </br>
+<br>ibm-not-wf-p85-ibm85n116 </br>
+<br>ibm-not-wf-p85-ibm85n117 </br>
+<br>ibm-not-wf-p85-ibm85n118 </br>
+<br>ibm-not-wf-p85-ibm85n119 </br>
+<br>ibm-not-wf-p85-ibm85n12 </br>
+<br>ibm-not-wf-p85-ibm85n120 </br>
+<br>ibm-not-wf-p85-ibm85n121 </br>
+<br>ibm-not-wf-p85-ibm85n122 </br>
+<br>ibm-not-wf-p85-ibm85n123 </br>
+<br>ibm-not-wf-p85-ibm85n124 </br>
+<br>ibm-not-wf-p85-ibm85n125 </br>
+<br>ibm-not-wf-p85-ibm85n126 </br>
+<br>ibm-not-wf-p85-ibm85n127 </br>
+<br>ibm-not-wf-p85-ibm85n128 </br>
+<br>ibm-not-wf-p85-ibm85n129 </br>
+<br>ibm-not-wf-p85-ibm85n13 </br>
+<br>ibm-not-wf-p85-ibm85n130 </br>
+<br>ibm-not-wf-p85-ibm85n131 </br>
+<br>ibm-not-wf-p85-ibm85n132 </br>
+<br>ibm-not-wf-p85-ibm85n133 </br>
+<br>ibm-not-wf-p85-ibm85n134 </br>
+<br>ibm-not-wf-p85-ibm85n135 </br>
+<br>ibm-not-wf-p85-ibm85n136 </br>
+<br>ibm-not-wf-p85-ibm85n137 </br>
+<br>ibm-not-wf-p85-ibm85n138 </br>
+<br>ibm-not-wf-p85-ibm85n139 </br>
+<br>ibm-not-wf-p85-ibm85n14 </br>
+<br>ibm-not-wf-p85-ibm85n140 </br>
+<br>ibm-not-wf-p85-ibm85n141 </br>
+<br>ibm-not-wf-p85-ibm85n142 </br>
+<br>ibm-not-wf-p85-ibm85n143 </br>
+<br>ibm-not-wf-p85-ibm85n144 </br>
+<br>ibm-not-wf-p85-ibm85n145 </br>
+<br>ibm-not-wf-p85-ibm85n146 </br>
+<br>ibm-not-wf-p85-ibm85n147 </br>
+<br>ibm-not-wf-p85-ibm85n148 </br>
+<br>ibm-not-wf-p85-ibm85n149 </br>
+<br>ibm-not-wf-p85-ibm85n15 </br>
+<br>ibm-not-wf-p85-ibm85n150 </br>
+<br>ibm-not-wf-p85-ibm85n151 </br>
+<br>ibm-not-wf-p85-ibm85n152 </br>
+<br>ibm-not-wf-p85-ibm85n153 </br>
+<br>ibm-not-wf-p85-ibm85n154 </br>
+<br>ibm-not-wf-p85-ibm85n155 </br>
+<br>ibm-not-wf-p85-ibm85n156 </br>
+<br>ibm-not-wf-p85-ibm85n157 </br>
+<br>ibm-not-wf-p85-ibm85n158 </br>
+<br>ibm-not-wf-p85-ibm85n159 </br>
+<br>ibm-not-wf-p85-ibm85n16 </br>
+<br>ibm-not-wf-p85-ibm85n160 </br>
+<br>ibm-not-wf-p85-ibm85n161 </br>
+<br>ibm-not-wf-p85-ibm85n162 </br>
+<br>ibm-not-wf-p85-ibm85n163 </br>
+<br>ibm-not-wf-p85-ibm85n164 </br>
+<br>ibm-not-wf-p85-ibm85n165 </br>
+<br>ibm-not-wf-p85-ibm85n166 </br>
+<br>ibm-not-wf-p85-ibm85n167 </br>
+<br>ibm-not-wf-p85-ibm85n168 </br>
+<br>ibm-not-wf-p85-ibm85n169 </br>
+<br>ibm-not-wf-p85-ibm85n17 </br>
+<br>ibm-not-wf-p85-ibm85n170 </br>
+<br>ibm-not-wf-p85-ibm85n171 </br>
+<br>ibm-not-wf-p85-ibm85n172 </br>
+<br>ibm-not-wf-p85-ibm85n173 </br>
+<br>ibm-not-wf-p85-ibm85n174 </br>
+<br>ibm-not-wf-p85-ibm85n175 </br>
+<br>ibm-not-wf-p85-ibm85n176 </br>
+<br>ibm-not-wf-p85-ibm85n177 </br>
+<br>ibm-not-wf-p85-ibm85n178 </br>
+<br>ibm-not-wf-p85-ibm85n179 </br>
+<br>ibm-not-wf-p85-ibm85n18 </br>
+<br>ibm-not-wf-p85-ibm85n180 </br>
+<br>ibm-not-wf-p85-ibm85n181 </br>
+<br>ibm-not-wf-p85-ibm85n182 </br>
+<br>ibm-not-wf-p85-ibm85n183 </br>
+<br>ibm-not-wf-p85-ibm85n184 </br>
+<br>ibm-not-wf-p85-ibm85n185 </br>
+<br>ibm-not-wf-p85-ibm85n186 </br>
+<br>ibm-not-wf-p85-ibm85n187 </br>
+<br>ibm-not-wf-p85-ibm85n188 </br>
+<br>ibm-not-wf-p85-ibm85n189 </br>
+<br>ibm-not-wf-p85-ibm85n19 </br>
+<br>ibm-not-wf-p85-ibm85n190 </br>
+<br>ibm-not-wf-p85-ibm85n191 </br>
+<br>ibm-not-wf-p85-ibm85n192 </br>
+<br>ibm-not-wf-p85-ibm85n193 </br>
+<br>ibm-not-wf-p85-ibm85n194 </br>
+<br>ibm-not-wf-p85-ibm85n195 </br>
+<br>ibm-not-wf-p85-ibm85n196 </br>
+<br>ibm-not-wf-p85-ibm85n197 </br>
+<br>ibm-not-wf-p85-ibm85n198 </br>
+<br>ibm-not-wf-p85-ibm85n199 </br>
+<br>ibm-not-wf-p85-ibm85n20 </br>
+<br>ibm-not-wf-p85-ibm85n21 </br>
+<br>ibm-not-wf-p85-ibm85n22 </br>
+<br>ibm-not-wf-p85-ibm85n23 </br>
+<br>ibm-not-wf-p85-ibm85n24 </br>
+<br>ibm-not-wf-p85-ibm85n25 </br>
+<br>ibm-not-wf-p85-ibm85n26 </br>
+<br>ibm-not-wf-p85-ibm85n27 </br>
+<br>ibm-not-wf-p85-ibm85n28 </br>
+<br>ibm-not-wf-p85-ibm85n29 </br>
+<br>ibm-not-wf-p85-ibm85n30 </br>
+<br>ibm-not-wf-p85-ibm85n31 </br>
+<br>ibm-not-wf-p85-ibm85n32 </br>
+<br>ibm-not-wf-p85-ibm85n33 </br>
+<br>ibm-not-wf-p85-ibm85n34 </br>
+<br>ibm-not-wf-p85-ibm85n35 </br>
+<br>ibm-not-wf-p85-ibm85n36 </br>
+<br>ibm-not-wf-p85-ibm85n37 </br>
+<br>ibm-not-wf-p85-ibm85n38 </br>
+<br>ibm-not-wf-p85-ibm85n39 </br>
+<br>ibm-not-wf-p85-ibm85n40 </br>
+<br>ibm-not-wf-p85-ibm85n41 </br>
+<br>ibm-not-wf-p85-ibm85n42 </br>
+<br>ibm-not-wf-p85-ibm85n43 </br>
+<br>ibm-not-wf-p85-ibm85n44 </br>
+<br>ibm-not-wf-p85-ibm85n45 </br>
+<br>ibm-not-wf-p85-ibm85n46 </br>
+<br>ibm-not-wf-p85-ibm85n47 </br>
+<br>ibm-not-wf-p85-ibm85n48 </br>
+<br>ibm-not-wf-p85-ibm85n49 </br>
+<br>ibm-not-wf-p85-ibm85n50 </br>
+<br>ibm-not-wf-p85-ibm85n51 </br>
+<br>ibm-not-wf-p85-ibm85n52 </br>
+<br>ibm-not-wf-p85-ibm85n53 </br>
+<br>ibm-not-wf-p85-ibm85n54 </br>
+<br>ibm-not-wf-p85-ibm85n55 </br>
+<br>ibm-not-wf-p85-ibm85n56 </br>
+<br>ibm-not-wf-p85-ibm85n57 </br>
+<br>ibm-not-wf-p85-ibm85n58 </br>
+<br>ibm-not-wf-p85-ibm85n59 </br>
+<br>ibm-not-wf-p85-ibm85n60 </br>
+<br>ibm-not-wf-p85-ibm85n61 </br>
+<br>ibm-not-wf-p85-ibm85n62 </br>
+<br>ibm-not-wf-p85-ibm85n63 </br>
+<br>ibm-not-wf-p85-ibm85n64 </br>
+<br>ibm-not-wf-p85-ibm85n65 </br>
+<br>ibm-not-wf-p85-ibm85n66 </br>
+<br>ibm-not-wf-p85-ibm85n67 </br>
+<br>ibm-not-wf-p85-ibm85n68 </br>
+<br>ibm-not-wf-p85-ibm85n69 </br>
+<br>ibm-not-wf-p85-ibm85n70 </br>
+<br>ibm-not-wf-p85-ibm85n71 </br>
+<br>ibm-not-wf-p85-ibm85n72 </br>
+<br>ibm-not-wf-p85-ibm85n73 </br>
+<br>ibm-not-wf-p85-ibm85n74 </br>
+<br>ibm-not-wf-p85-ibm85n75 </br>
+<br>ibm-not-wf-p85-ibm85n76 </br>
+<br>ibm-not-wf-p85-ibm85n77 </br>
+<br>ibm-not-wf-p85-ibm85n78 </br>
+<br>ibm-not-wf-p85-ibm85n79 </br>
+<br>ibm-not-wf-p85-ibm85n80 </br>
+<br>ibm-not-wf-p85-ibm85n81 </br>
+<br>ibm-not-wf-p85-ibm85n82 </br>
+<br>ibm-not-wf-p85-ibm85n83 </br>
+<br>ibm-not-wf-p85-ibm85n84 </br>
+<br>ibm-not-wf-p85-ibm85n85 </br>
+<br>ibm-not-wf-p85-ibm85n86 </br>
+<br>ibm-not-wf-p85-ibm85n87 </br>
+<br>ibm-not-wf-p85-ibm85n88 </br>
+<br>ibm-not-wf-p85-ibm85n89 </br>
+<br>ibm-not-wf-p85-ibm85n90 </br>
+<br>ibm-not-wf-p85-ibm85n91 </br>
+<br>ibm-not-wf-p85-ibm85n92 </br>
+<br>ibm-not-wf-p85-ibm85n93 </br>
+<br>ibm-not-wf-p85-ibm85n94 </br>
+<br>ibm-not-wf-p85-ibm85n95 </br>
+<br>ibm-not-wf-p85-ibm85n96 </br>
+<br>ibm-not-wf-p85-ibm85n97 </br>
+<br>ibm-not-wf-p85-ibm85n98 </br>
+<br>ibm-not-wf-p85-ibm85n99 </br>
+<br>ibm-valid-p85-ibm85n01 </br>
+</td>
+</tr>
+<tr>
+<td>Character Classes</td><td>Characters</td><td>
+ An ideographic character must consits of Unicode's Chinese-Japanese-Korean unified
+ ideographs "#x4E00-#x9FA5", the ideographic number zero "#3007" or the Hangzhou
+ style numerals "#x3021-#x3029"
+ </td><td>one</td><td>
+<br>ibm-not-wf-p86-ibm86n01 </br>
+<br>ibm-not-wf-p86-ibm86n02 </br>
+<br>ibm-not-wf-p86-ibm86n03 </br>
+<br>ibm-not-wf-p86-ibm86n04 </br>
+<br>ibm-valid-p86-ibm86n01 </br>
+</td>
+</tr>
+<tr>
+<td>Character Classes</td><td>Characters</td><td>
+ Combining characters must consits of characters combined with other characters
+ to form the appearance of a single character
+ </td><td>one</td><td>
+<br>ibm-not-wf-p87-ibm87n01 </br>
+<br>ibm-not-wf-p87-ibm87n02 </br>
+<br>ibm-not-wf-p87-ibm87n03 </br>
+<br>ibm-not-wf-p87-ibm87n04 </br>
+<br>ibm-not-wf-p87-ibm87n05 </br>
+<br>ibm-not-wf-p87-ibm87n06 </br>
+<br>ibm-not-wf-p87-ibm87n07 </br>
+<br>ibm-not-wf-p87-ibm87n08 </br>
+<br>ibm-not-wf-p87-ibm87n09 </br>
+<br>ibm-not-wf-p87-ibm87n10 </br>
+<br>ibm-not-wf-p87-ibm87n11 </br>
+<br>ibm-not-wf-p87-ibm87n12 </br>
+<br>ibm-not-wf-p87-ibm87n13 </br>
+<br>ibm-not-wf-p87-ibm87n14 </br>
+<br>ibm-not-wf-p87-ibm87n15 </br>
+<br>ibm-not-wf-p87-ibm87n16 </br>
+<br>ibm-not-wf-p87-ibm87n17 </br>
+<br>ibm-not-wf-p87-ibm87n18 </br>
+<br>ibm-not-wf-p87-ibm87n19 </br>
+<br>ibm-not-wf-p87-ibm87n20 </br>
+<br>ibm-not-wf-p87-ibm87n21 </br>
+<br>ibm-not-wf-p87-ibm87n22 </br>
+<br>ibm-not-wf-p87-ibm87n23 </br>
+<br>ibm-not-wf-p87-ibm87n24 </br>
+<br>ibm-not-wf-p87-ibm87n25 </br>
+<br>ibm-not-wf-p87-ibm87n26 </br>
+<br>ibm-not-wf-p87-ibm87n27 </br>
+<br>ibm-not-wf-p87-ibm87n28 </br>
+<br>ibm-not-wf-p87-ibm87n29 </br>
+<br>ibm-not-wf-p87-ibm87n30 </br>
+<br>ibm-not-wf-p87-ibm87n31 </br>
+<br>ibm-not-wf-p87-ibm87n32 </br>
+<br>ibm-not-wf-p87-ibm87n33 </br>
+<br>ibm-not-wf-p87-ibm87n34 </br>
+<br>ibm-not-wf-p87-ibm87n35 </br>
+<br>ibm-not-wf-p87-ibm87n36 </br>
+<br>ibm-not-wf-p87-ibm87n37 </br>
+<br>ibm-not-wf-p87-ibm87n38 </br>
+<br>ibm-not-wf-p87-ibm87n39 </br>
+<br>ibm-not-wf-p87-ibm87n40 </br>
+<br>ibm-not-wf-p87-ibm87n41 </br>
+<br>ibm-not-wf-p87-ibm87n42 </br>
+<br>ibm-not-wf-p87-ibm87n43 </br>
+<br>ibm-not-wf-p87-ibm87n44 </br>
+<br>ibm-not-wf-p87-ibm87n45 </br>
+<br>ibm-not-wf-p87-ibm87n46 </br>
+<br>ibm-not-wf-p87-ibm87n47 </br>
+<br>ibm-not-wf-p87-ibm87n48 </br>
+<br>ibm-not-wf-p87-ibm87n49 </br>
+<br>ibm-not-wf-p87-ibm87n50 </br>
+<br>ibm-not-wf-p87-ibm87n51 </br>
+<br>ibm-not-wf-p87-ibm87n52 </br>
+<br>ibm-not-wf-p87-ibm87n53 </br>
+<br>ibm-not-wf-p87-ibm87n54 </br>
+<br>ibm-not-wf-p87-ibm87n55 </br>
+<br>ibm-not-wf-p87-ibm87n56 </br>
+<br>ibm-not-wf-p87-ibm87n57 </br>
+<br>ibm-not-wf-p87-ibm87n58 </br>
+<br>ibm-not-wf-p87-ibm87n59 </br>
+<br>ibm-not-wf-p87-ibm87n60 </br>
+<br>ibm-not-wf-p87-ibm87n61 </br>
+<br>ibm-not-wf-p87-ibm87n62 </br>
+<br>ibm-not-wf-p87-ibm87n63 </br>
+<br>ibm-not-wf-p87-ibm87n64 </br>
+<br>ibm-not-wf-p87-ibm87n65 </br>
+<br>ibm-not-wf-p87-ibm87n66 </br>
+<br>ibm-not-wf-p87-ibm87n67 </br>
+<br>ibm-not-wf-p87-ibm87n68 </br>
+<br>ibm-not-wf-p87-ibm87n69 </br>
+<br>ibm-not-wf-p87-ibm87n70 </br>
+<br>ibm-not-wf-p87-ibm87n71 </br>
+<br>ibm-not-wf-p87-ibm87n72 </br>
+<br>ibm-not-wf-p87-ibm87n73 </br>
+<br>ibm-not-wf-p87-ibm87n74 </br>
+<br>ibm-not-wf-p87-ibm87n75 </br>
+<br>ibm-not-wf-p87-ibm87n76 </br>
+<br>ibm-not-wf-p87-ibm87n77 </br>
+<br>ibm-not-wf-p87-ibm87n78 </br>
+<br>ibm-not-wf-p87-ibm87n79 </br>
+<br>ibm-not-wf-p87-ibm87n80 </br>
+<br>ibm-not-wf-p87-ibm87n81 </br>
+<br>ibm-not-wf-p87-ibm87n82 </br>
+<br>ibm-not-wf-p87-ibm87n83 </br>
+<br>ibm-not-wf-p87-ibm87n84 </br>
+<br>ibm-not-wf-p87-ibm87n85 </br>
+<br>ibm-valid-p87-ibm87n01 </br>
+</td>
+</tr>
+<tr>
+<td>Character Classes</td><td>Characters</td><td>
+ A digit must consits of the European numerals "0,1,2,3,4,5,6,7,8, and 9", the Arabic-indic
+ digits, the Eastern Arabic Indic digits and others
+ </td><td>one</td><td>
+<br>ibm-not-wf-p88-ibm88n01 </br>
+<br>ibm-not-wf-p88-ibm88n02 </br>
+<br>ibm-not-wf-p88-ibm88n03 </br>
+<br>ibm-not-wf-p88-ibm88n04 </br>
+<br>ibm-not-wf-p88-ibm88n05 </br>
+<br>ibm-not-wf-p88-ibm88n06 </br>
+<br>ibm-not-wf-p88-ibm88n08 </br>
+<br>ibm-not-wf-p88-ibm88n09 </br>
+<br>ibm-not-wf-p88-ibm88n10 </br>
+<br>ibm-not-wf-p88-ibm88n11 </br>
+<br>ibm-not-wf-p88-ibm88n12 </br>
+<br>ibm-not-wf-p88-ibm88n13 </br>
+<br>ibm-not-wf-p88-ibm88n14 </br>
+<br>ibm-not-wf-p88-ibm88n15 </br>
+<br>ibm-not-wf-p88-ibm88n16 </br>
+<br>ibm-valid-p88-ibm88n01 </br>
+</td>
+</tr>
+<tr>
+<td>Character Classes</td><td>Characters</td><td>
+ An extender must consits the following characters; the middle dot "#x00B7", the modifier
+ letter triangular colon "#x02D0", the modifier letter half-triangular colon "#x02D1",
+ the Greek middle dot "#x0387", the Arabic tatweel "#x0640", the Thai maiyamok"#x0E46",
+ the Lao ko la "#x0EC6", the ideographic iteration mark, five Japanese Kana repeat marks "#x3005",
+ the Japanese Hiragana iteration mark and voice iteration mark "#x3031-#x3035",
+ and the Japanese Katakana and Hiragana sound mark "#x309D-#x309E" and prolonged sound mark
+ "#x30FC-#x30FE"
+ </td><td>one</td><td>
+<br>ibm-not-wf-p89-ibm89n01 </br>
+<br>ibm-not-wf-p89-ibm89n02 </br>
+<br>ibm-not-wf-p89-ibm89n03 </br>
+<br>ibm-not-wf-p89-ibm89n04 </br>
+<br>ibm-not-wf-p89-ibm89n05 </br>
+<br>ibm-not-wf-p89-ibm89n06 </br>
+<br>ibm-not-wf-p89-ibm89n08 </br>
+<br>ibm-not-wf-p89-ibm89n09 </br>
+<br>ibm-not-wf-p89-ibm89n10 </br>
+<br>ibm-not-wf-p89-ibm89n11 </br>
+<br>ibm-not-wf-p89-ibm89n12 </br>
+<br>ibm-valid-p89-ibm89n01 </br>
+</td>
+</tr>
+</table>
+</body>
+</html>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Entries
new file mode 100644
index 0000000000..fcc3c02242
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Entries
@@ -0,0 +1,17 @@
+/changes.html/1.1/Wed Oct 17 09:38:35 2001//
+/readme.html/1.1/Wed Oct 17 09:38:35 2001//
+/testcases.dtd/1.4/Tue Dec 9 12:52:04 2003//
+/xmlconf-20010315.htm/1.1/Wed Oct 17 09:38:35 2001//
+/xmlconf-20010315.xml/1.1/Wed Oct 17 09:16:24 2001//
+/xmlconf-20020521.htm/1.1/Wed May 22 18:12:23 2002//
+/xmlconf-20031030.htm/1.1/Thu Nov 6 12:43:18 2003//
+/xmlconf.xml/1.8/Thu Jun 1 12:55:35 2006//
+/xmlconformance.msxsl/1.1/Wed Oct 17 09:38:36 2001//
+/xmlconformance.xsl/1.6/Thu Nov 6 12:37:13 2003//
+D/eduni////
+D/files////
+D/ibm////
+D/japanese////
+D/oasis////
+D/sun////
+D/xmltest////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Repository
new file mode 100644
index 0000000000..d1c36626fc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/changes.html b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/changes.html
new file mode 100644
index 0000000000..7ec5b43cef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/changes.html
@@ -0,0 +1,384 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML><HEAD><TITLE>NIST XML Conformance Testing</TITLE>
+<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
+<META content="XML Conformance" name=keyword>
+<META content=NIST,OASIS,XML,Conformance name=keywords><LINK
+href="files/committee.css"
+rel=Stylesheet type=text/css>
+<META content="MSHTML 5.00.2014.210" name=GENERATOR></HEAD>
+<BODY bgColor=#ffffff>
+<p>
+<center>
+<table border="4" width="90%">
+<tr >
+<td>
+<table>
+<tr >
+<td width="40%"><img src="files/a_oasis-logo.gif" width="350" height="125"/></td>
+<td width="30%"/>
+<td width="40%" align="right"><img src="files/top3.jpe" width="400" height="125"/></td>
+</tr>
+</table>
+<center>
+<table>
+<tr>
+<td ><b><font size="+2">A Joint Development Effort</font></b></td>
+</tr>
+</table>
+</center>
+</td>
+</tr>
+</table>
+</center>
+<p/>
+<h4>OASIS XML Conformance Subcommittee<br/>Second Edition (Working Draft)<br/>15 March 2001</h4>
+<table border=2 width=100% cellpadding=5>
+<tr BGCOLOR=#0000FF>
+<th width=20%><font color=yellow size=+1>Filename</font>
+<th width=15%><font color=yellow size=+1>Collection</font>
+<th width=15%><font color=yellow size=+1>Action</font>
+<th width=50%><font color=yellow size=+1>Rationale</font>
+<th width=10%><font color=yellow size=+1>Status</font>
+</tr>
+<tr>
+<td>/ibm directory</td>
+<td>IBM</td>
+<td>add</td>
+<td>Additional 1000 tests contributed by IBM</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>p02pass1.xml</td>
+<td>OASIS</td>
+<td>delete</td>
+<td>Test was in error - was inadvertently included in the test suite</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>o-p12fail7</td>
+<td>OASIS</td>
+<td>modify</td>
+<td>Changed test description to "The public ID has a tab character, which is disallowed"</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>o-p39fail4</td>
+<td>OASIS</td>
+<td>modify</td>
+<td>Changed test description to "The XML declaration is improperly terminated"</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>sa02.xml</td>
+<td>SUN</td>
+<td>modify</td>
+<td>Canonical output file changed -- characters coming from character references are not normalized.</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>not-sa02.xml</td>
+<td>SUN</td>
+<td>modify</td>
+<td>Canonical output file changed -- characters coming from character references are not normalized.</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>valid-sa-111.xml</td>
+<td>James Clark</td>
+<td>no change</td>
+<td>Question regarding canonical output - W3C WG clarification confirms that the canonical output was okay.</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>valid-sa-068.xml</td>
+<td>James Clark</td>
+<td>modify</td>
+<td>Changed canonical output. Line break normalization only happens when parsing
+external parsed entities, including the document entity. See 2.11 XML 1.0 Second Edition. </td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>valid-sa-094</td>
+<td>James Clark</td>
+<td>no change</td>
+<td>Test description indicates that it is not well-formed. W3C WG indicates that PE refs in attribute
+values are simply not recognized. See 4.4.1 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P33-ibm33n01.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P33-ibm33n02.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P34-ibm34n01.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P35-ibm35n01.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P35-ibm35n02.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P35-ibm35n03.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P35-ibm35n04.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P35-ibm35n05.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P36-ibm36n01.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P36-ibm36n02.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P37-ibm37n01.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P37-ibm37n02.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P37-ibm37n03.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P37-ibm37n04.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P37-ibm37n05.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P38-ibm38n01.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P38-ibm38n02.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P38-ibm38n03.xml</td>
+<td>IBM</td>
+<td>remove</td>
+<td>No longer relevant. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P41-ibm41n11.xml</td>
+<td>IBM</td>
+<td>modify</td>
+<td>Typo -- changed almage to aImage</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>ibm-not-wf-P41-ibm41n12.xml</td>
+<td>IBM</td>
+<td>modify</td>
+<td>Typo -- changed aIndrect to aIndirect</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>lang01-lang06</td>
+<td>SUN</td>
+<td>remove</td>
+<td>Constraints tested are no longer valid. See 2.12 XML 1.0 Second Edition</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>valid-sa-012, o-p04pass1, o-p05pass1, p-08pass1</td>
+<td>James Clark, OASIS/NIST</td>
+<td>Modify</td>
+<td>Conform to XML but not to XML Namespaces spec. In testcases.dtd, added a NAMESPACE attribute on
+the TEST element to indicate whether or not the test conforms to the XML Namespaces spec.</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>valid-sa-065, valid-sa-100, o-p73pass1, cond01.xml, cond02.xml, decl01.xml, dtd07.dtd, encoding07.xml</td>
+<td>SUN, OASIS/NIST, James Clark</td>
+<td>no change</td>
+<td>Tests define general entities which are not used, and which are either malformed or missing.
+W3C Core WG confirms that entities only need to be expanded if they are used. If they are not used,
+it doesn't matter whether or not they are well-formed. See Section 2.1.
+</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>empty, <br>inv-not-sa14</td>
+<td>SUN</td>
+<td>reclassify</td>
+<td>CDATA section containing only whitespace does not match the nonterminal S. See Section 3 Logical
+Structure, VC: Element Valid, item 2</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>sa04.xml</td>
+<td>SUN</td>
+<td>Modify</td>
+<td>Literals are quoted with double quotes but appear in the output file with single quotes.
+Modified Second Canonical Form to surround literals with single quotes.</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>pr-xml-*</td>
+<td>Fuji Xerox</td>
+<td>replace</td>
+<td>These files refer to spec.dtd which is missing. Include right version with the test suite.</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>Four of James Clark's tests</td>
+<td>James Clark</td>
+<td>modify</td>
+<td>These tests have NOTATIONS and need a DOCTYPE in canonical form 2. Output files were modified.</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>sa03-sa05</td>
+<td>SUN</td>
+<td>No change</td>
+<td>Tests are standalone, but need to read the external subset to produce the
+right canonical XML. XML processors need not read the external subset if the file is standalone. If
+your processor produces Second Canonical Form, then it must read the external subset to match the
+supplied output file.
+</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>invalid--003 - invalid--006</td>
+<td>James Clark</td>
+<td>modify</td>
+<td>Changed test description from entity declaration to element declaration.</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>inv-not-sa02, inv-not-sa08</td>
+<td>SUN</td>
+<td>no change</td>
+<td>Have character references to whitespace characters in a tokenized attribute. W3C Core WG confirms
+that files are invalid.
+</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>p74pass1.xml</td>
+<td>OASIS</td>
+<td>no change</td>
+<td>Comment indicated that the file was classified as Invalid, but seems to be valid. The root element 'doc'
+is not declared, so the file is invalid.</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>p16fail3.xml</td>
+<td>OASIS</td>
+<td>modify</td>
+<td>Description is erroneous. File is well-formed but not valid. Updated test description to indicate
+that a document must conform to the constraints expressed in a dtd to be valid.</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>001.xml, 001.ent</td>
+<td>James Clark</td>
+<td>no change</td>
+<td>Section 4.3.2 applies, not the validity constraint. Comment indicates that test should change to not-wf
+instead of invalid. W3C Core WG confirms that file is invalid -- spec is confusing and will be clarified.</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>e2.xml</td>
+<td>OASIS</td>
+<td>add</td>
+<td>Errata [E2] imposes a VC on productions [58] and [59]. No duplicate tokens are permitted.
+</td>
+<td>Closed</td>
+</tr>
+<tr>
+<td>attr11.xml, attr12.xml</td>
+<td>SUN</td>
+<td>modify</td>
+<td>Files marked invalid, but are actually valid. The tests refer to "Attribute Default Legal" VC but this VC
+is only about lexical constraints. The two tests pass the lexical test, and since the default attributes in
+error are not effectively used, because the instance documents specify a value for these attributes, the fact
+that they refer to an undeclared entity does not matter. Changed tests to effectively make them invalid with
+respect to the VC that they claim to test.
+</td>
+<td>Closed</td>
+</tr>
+</table>
+</center>
+<p>
+Please forward all comments/suggestions/bugs to <a href="mailto:mbrady@nist.gov">&lt;mbrady@nist.gov&gt;</a>
+<br>
+<hr noShade>
+<div class=bottom><a href="http://www.itl.nist.gov">NIST / Information Technology Lab</a><br>
+<a href="http://www.oasis-open.org/">OASIS Home</a> / <a href="http://www.oasis-open.org/committees/">OASIS Committee Pages</a>
+</div>
+</body>
+</html>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Entries
new file mode 100644
index 0000000000..1ada1803bf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Entries
@@ -0,0 +1,4 @@
+D/errata-2e////
+D/errata-3e////
+D/namespaces////
+D/xml-1.1////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Repository
new file mode 100644
index 0000000000..ac61f21224
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/eduni
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Entries
new file mode 100644
index 0000000000..b14a51b5f5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Entries
@@ -0,0 +1,46 @@
+/E14.dtd/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E14.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E15a.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E15b.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E15c.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E15d.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E15e.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E15f.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E15g.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E15h.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E15i.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E15j.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E15k.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E15l.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E18-ent/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E18.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E19.dtd/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E19.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E20.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E22.xml/1.2/Thu Nov 6 17:19:30 2003//
+/E24.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E27.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E29.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E2a.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E2b.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E34.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E36.dtd/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E36.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E38.ent/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E38.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E41.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E48.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E50.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E55.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E57.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E60.ent/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E60.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E61.xml/1.2/Thu Nov 6 17:20:48 2003//
+/E9a.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E9b.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/errata2e.xml/1.2/Wed May 18 12:52:53 2005//
+/testcases.dtd/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/xmlconf.xml/1.3/Thu Nov 6 17:30:18 2003//
+D/out////
+D/subdir1////
+D/subdir2////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Repository
new file mode 100644
index 0000000000..e138ad2e84
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/eduni/errata-2e
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.dtd
new file mode 100644
index 0000000000..c46237f80c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.dtd
@@ -0,0 +1,3 @@
+<!ELEMENT foo ANY>
+<!ENTITY % e "bar CDATA #IMPLIED>">
+<!ATTLIST foo %e;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.xml
new file mode 100644
index 0000000000..96f0ed7c30
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E14.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE foo SYSTEM "E14.dtd">
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15a.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15a.xml
new file mode 100644
index 0000000000..4c05a33bc3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15a.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE foo [
+<!ELEMENT foo EMPTY>
+<!ENTITY empty "">
+]>
+<foo>&empty;</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15b.xml
new file mode 100644
index 0000000000..03270e5ad5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15b.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE foo [
+<!ELEMENT foo EMPTY>
+]>
+<foo><!-- comment --></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15c.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15c.xml
new file mode 100644
index 0000000000..6cfe53140b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15c.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE foo [
+<!ELEMENT foo EMPTY>
+]>
+<foo><?pi xxx?></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15d.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15d.xml
new file mode 100644
index 0000000000..9074c8d5c7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15d.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE foo [
+<!ELEMENT foo EMPTY>
+]>
+<foo> </foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15e.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15e.xml
new file mode 100644
index 0000000000..2228b35e8e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15e.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+<!ENTITY space " ">
+]>
+<foo><foo/>&space;<foo/></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15f.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15f.xml
new file mode 100644
index 0000000000..b65fe0d1b9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15f.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+<!ENTITY space "&#32;">
+]>
+<foo><foo/>&space;<foo/></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15g.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15g.xml
new file mode 100644
index 0000000000..c806deae54
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15g.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+]>
+<foo><foo/>&#32;<foo/></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15h.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15h.xml
new file mode 100644
index 0000000000..970599ee10
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15h.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+<!ENTITY space "&#38;#32;">
+]>
+<foo><foo/>&space;<foo/></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15i.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15i.xml
new file mode 100644
index 0000000000..25dac7fa73
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15i.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+]>
+<foo><foo/><!-- comment --><foo/></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15j.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15j.xml
new file mode 100644
index 0000000000..c7006d2cf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15j.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+]>
+<foo><foo/><?pi xxx?><foo/></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15k.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15k.xml
new file mode 100644
index 0000000000..06631abb90
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15k.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE foo [
+<!ELEMENT foo (PCDATA|foo)*>
+]>
+<foo><foo/><!-- comment --><foo/></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15l.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15l.xml
new file mode 100644
index 0000000000..986808d7f7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E15l.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE foo [
+<!ELEMENT foo (PCDATA|foo)*>
+]>
+<foo><foo/><?pi xxx?><foo/></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18-ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18-ent
new file mode 100644
index 0000000000..b5508ffbf1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18-ent
@@ -0,0 +1 @@
+entity from main dir, right! \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18.xml
new file mode 100644
index 0000000000..4572e53bea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E18.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ENTITY % pe SYSTEM "subdir1/E18-pe">
+%pe;
+%intpe;
+]>
+<foo>&ent;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.dtd
new file mode 100644
index 0000000000..13ec57a6f1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.dtd
@@ -0,0 +1,6 @@
+<!ELEMENT foo ANY>
+<!ENTITY % pe "hello">
+<!-- If forward were expanded when ent was declared, we were get an error,
+ but it is bypassed and not expanded until ent is used in the instance -->
+<!ENTITY ent "%pe; &#33; &forward;">
+<!ENTITY forward "goodbye">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.xml
new file mode 100644
index 0000000000..56ecaacb28
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E19.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE foo SYSTEM "E19.dtd">
+<foo>&ent;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E20.xml
new file mode 100644
index 0000000000..1a998134b1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E20.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo bar NMTOKENS #IMPLIED>
+]>
+<foo bar="abc&#9;xyz"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E22.xml
new file mode 100644
index 0000000000..6b7d256c76
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E22.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E24.xml
new file mode 100644
index 0000000000..45e3e164b7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E24.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ENTITY gt ">">
+]>
+<foo>You can use ]]&gt; or ]]&#62;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E27.xml
new file mode 100644
index 0000000000..9c10725323
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E27.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>𐀀</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E29.xml
new file mode 100644
index 0000000000..da0493a38d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E29.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xml:lang NMTOKEN #IMPLIED>
+]>
+<foo xml:lang="nds">
+ <foo xml:lang="art-lojban"/>
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2a.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2a.xml
new file mode 100644
index 0000000000..b5e885b088
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2a.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo bar (one|one) #IMPLIED>
+]>
+<foo/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2b.xml
new file mode 100644
index 0000000000..b3aac725e8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E2b.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!NOTATION one SYSTEM "file:///usr/bin/awk">
+<!ATTLIST foo bar NOTATION (one|one) #IMPLIED>
+]>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E34.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E34.xml
new file mode 100644
index 0000000000..c12012bab2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E34.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ELEMENT bar (foo|foo)>
+]>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.dtd
new file mode 100644
index 0000000000..27c627e520
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT foo ANY>
+<!ATTLIST foo bar NMTOKENS #IMPLIED>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.xml
new file mode 100644
index 0000000000..482de15c19
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E36.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE foo SYSTEM "E36.dtd">
+<foo bar="123
+456"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.ent
new file mode 100644
index 0000000000..137ed58831
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.ent
@@ -0,0 +1,2 @@
+<?xml version="1.1" encoding="utf-8"?>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.xml
new file mode 100644
index 0000000000..e61b897e34
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E38.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ENTITY e SYSTEM "E38.ent">
+]>
+<foo>&e;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E41.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E41.xml
new file mode 100644
index 0000000000..42d77e4441
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E41.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xml:lang CDATA #IMPLIED>
+]>
+<foo xml:lang=""/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E48.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E48.xml
new file mode 100644
index 0000000000..5ca162a819
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E48.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>hello</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E50.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E50.xml
new file mode 100644
index 0000000000..760ae17c07
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E50.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo bar CDATA #IMPLIED>
+]>
+<foo…bar="hello"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E55.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E55.xml
new file mode 100644
index 0000000000..abb90efad5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E55.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ENTITY e "an &unparsed; entity">
+<!NOTATION gif SYSTEM "file:///usr/X11R6/bin/xv">
+<!ENTITY unparsed SYSTEM "xyzzy" NDATA gif>
+]>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E57.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E57.xml
new file mode 100644
index 0000000000..9174fa34a8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E57.xml
@@ -0,0 +1 @@
+<foo xml:space="discard-all-but-the-first-three-spaces"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.ent
new file mode 100644
index 0000000000..3b07eb340e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.ent
@@ -0,0 +1,2 @@
+<![INCLUDE[<!ATTLIST foo bar CDATA #IMPLIED>]]>
+<![IGNORE[some junk]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.xml
new file mode 100644
index 0000000000..f98f33f4a2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E60.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ENTITY % e SYSTEM "E60.ent">
+%e;
+]>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E61.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E61.xml
new file mode 100644
index 0000000000..22c342fe28
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E61.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-16"?>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9a.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9a.xml
new file mode 100644
index 0000000000..9104cc4cba
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9a.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!NOTATION gif SYSTEM "file:///usr/X11R6/bin/xv">
+<!ENTITY declared SYSTEM "xyzzy" NDATA gif>
+<!ATTLIST foo bar ENTITY "undeclared">
+]>
+<foo bar="declared"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9b.xml
new file mode 100644
index 0000000000..9a2bbbc030
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/E9b.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!NOTATION gif SYSTEM "file:///usr/X11R6/bin/xv">
+<!ENTITY declared SYSTEM "xyzzy" NDATA gif>
+<!ATTLIST foo bar ENTITY "7">
+]>
+<foo bar="declared"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/errata2e.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/errata2e.xml
new file mode 100644
index 0000000000..51d92fd956
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/errata2e.xml
@@ -0,0 +1,222 @@
+<TESTCASES PROFILE="Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003">
+
+<!-- E1 is an editorial change that does not need a test -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E2" URI="E2a.xml" ID="rmt-e2e-2a" TYPE="invalid">
+Duplicate token in enumerated attribute declaration
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E2" URI="E2b.xml" ID="rmt-e2e-2b" TYPE="invalid">
+Duplicate token in NOTATION attribute declaration
+</TEST>
+
+<!-- E3 concerns URI redirection (eg by catalog or HTTP), and can't be
+ reasonably tested in a standalone test suite such as this -->
+
+<!-- E4 concerns escaping of characters in URIs by the parser, and can't be
+ reasonably tested in a standalone test suite such as this -->
+
+<!-- E5-E8 are editorial changes that do not need tests -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E9" URI="E9a.xml" ID="rmt-e2e-9a" TYPE="valid">
+An unused attribute default need only be syntactically correct
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E9" URI="E9b.xml" ID="rmt-e2e-9b" TYPE="invalid">
+An attribute default must be syntactically correct even if unused
+</TEST>
+
+<!-- E10 is obsoleted by E45 -->
+
+<!-- E11 updates the reference to RFC 1766 (Language Identification Tags)
+ to refer to RFC 3066 instead, and this does not affect the behaviour
+ of XML processors -->
+
+<!-- E12 updates the reference to RFC 2376 (XML Media Types) to refer to
+ RFC 3023 instead; I don't think anything can be tested here -->
+
+<!-- E13 corrects a spelling mistake -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E14" URI="E14.xml" ID="rmt-e2e-14" ENTITIES="parameter" TYPE="invalid">
+Declarations mis-nested wrt parameter entities are just validity
+errors (but note that some parsers treat some such errors as fatal)
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15a.xml" ID="rmt-e2e-15a" TYPE="invalid">
+Empty content can't contain an entity reference
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15b.xml" ID="rmt-e2e-15b" TYPE="invalid">
+Empty content can't contain a comment
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15c.xml" ID="rmt-e2e-15c" TYPE="invalid">
+Empty content can't contain a PI
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15d.xml" ID="rmt-e2e-15d" TYPE="invalid">
+Empty content can't contain whitespace
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15e.xml" ID="rmt-e2e-15e" TYPE="valid">
+Element content can contain entity reference if replacement text is whitespace
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15f.xml" ID="rmt-e2e-15f" TYPE="valid">
+Element content can contain entity reference if replacement text is whitespace,
+even if it came from a character reference in the literal entity value
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15g.xml" ID="rmt-e2e-15g" TYPE="invalid">
+Element content can't contain character reference to whitespace
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15h.xml" ID="rmt-e2e-15h" TYPE="invalid">
+Element content can't contain entity reference if replacement text is
+character reference to whitespace
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15i.xml" ID="rmt-e2e-15i" TYPE="valid">
+Element content can contain a comment
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15j.xml" ID="rmt-e2e-15j" TYPE="valid">
+Element content can contain a PI
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15k.xml" ID="rmt-e2e-15k" TYPE="valid">
+Mixed content can contain a comment
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15l.xml" ID="rmt-e2e-15l" TYPE="valid">
+Mixed content can contain a PI
+</TEST>
+
+<!-- E16 is a change to the references -->
+
+<!-- E17 is a change to the Notation section -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E18" URI="E18.xml" ID="rmt-e2e-18" ENTITIES="both" OUTPUT="out/E18.xml" TYPE="valid">
+External entity containing start of entity declaration is base URI
+for system identifier
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E19" URI="E19.xml" ID="rmt-e2e-19" ENTITIES="parameter" OUTPUT="out/E19.xml" TYPE="valid">
+Parameter entities and character references are included-in-literal, but
+general entities are bypassed.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E20" URI="E20.xml" ID="rmt-e2e-20" TYPE="invalid">
+Tokens, after normalization, must be separated by space, not other
+whitespace characters
+</TEST>
+
+<!-- E21 defines "internal subset" to not include the square brackets,
+ but I don't see any way to test this in a document -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E22" URI="E22.xml" ID="rmt-e2e-22" TYPE="valid">
+UTF-8 entities may start with a BOM
+</TEST>
+
+<!-- E23 cannot be tested in a standalone test suite -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E24" URI="E24.xml" ID="rmt-e2e-24" TYPE="valid">
+Either the built-in entity or a character reference can be used to
+represent greater-than after two close-square-brackets
+</TEST>
+
+<!-- E25 and E26 cannot be tested in a standalone test suite -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E27" URI="E27.xml" ID="rmt-e2e-27" TYPE="not-wf">
+Contains an irregular UTF-8 sequence (i.e. a surrogate pair)
+</TEST>
+
+<!-- E28 is a change to the references -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E29" URI="E29.xml" ID="rmt-e2e-29" TYPE="valid">
+Three-letter language codes are allowed
+</TEST>
+
+<!-- E30-E33 are editorial -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E34" URI="E34.xml" ID="rmt-e2e-34" TYPE="error">
+A non-deterministic content model is an error even if the element type
+is not used.
+</TEST>
+
+<!-- E35 is editorial -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E36" URI="E36.xml" ID="rmt-e2e-36" ENTITIES="parameter" TYPE="valid">
+An external ATTLIST declaration does not make a document non-standalone
+if the normalization would have been the same without the declaration
+</TEST>
+
+<!-- E37 is a clarification that doesn't affect parsing -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E38" URI="E38.xml" ID="rmt-e2e-38" ENTITIES="general" TYPE="not-wf">
+XML 1.0 document refers to 1.1 entity
+</TEST>
+
+<!-- E39 does not affect parsing -->
+
+<!-- E40 is editorial -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E41" URI="E41.xml" ID="rmt-e2e-41" TYPE="valid">
+An xml:lang attribute may be empty
+</TEST>
+
+<!-- E42 cannot be tested without an application -->
+
+<!-- E43 is just a consolidation of other errata -->
+
+<!-- E44 is editorial -->
+
+<!-- E45 can only reasonably be tested by putting the parser into a mode
+ where it doesn't read external entities, and we can't force that -->
+
+<!-- E46 is editorial -->
+
+<!-- E47 has the same problem as E45 -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E48" URI="E48.xml" ID="rmt-e2e-48" TYPE="valid">
+ANY content allows character data
+</TEST>
+
+<!-- E49 is editorial -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E50" URI="E50.xml" ID="rmt-e2e-50" VERSION="1.1" TYPE="valid">
+All line-ends are normalized, even those not passed to the application.
+NB this can only be tested effectively in XML 1.1, since CR is in the
+S production; in 1.1 we can use NEL which isn't.
+</TEST>
+
+<!-- E51-E54 are editorial -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E55" URI="E55.xml" ID="rmt-e2e-55" TYPE="error">
+A reference to an unparsed entity in an entity value is an error rather
+than forbidden (unless the entity is referenced, of course)
+</TEST>
+
+<!-- E56 is editorial -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E57" URI="E57.xml" ID="rmt-e2e-57" TYPE="error">
+A value other than preserve or default for xml:space is an error
+</TEST>
+
+<!-- E58 clarifies that certain things are undefined, so there is
+ nothing that can usefully be tested -->
+
+<!-- E59 is an explanatory note -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E60" URI="E60.xml" ID="rmt-e2e-60" ENTITIES="parameter" TYPE="valid">
+Conditional sections are allowed in external parameter entities referred
+to from the internal subset.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E61" URI="E61.xml" ID="rmt-e2e-61" TYPE="not-wf">
+(From John Cowan) An encoding declaration in ASCII specifying an encoding
+that is not compatible with ASCII (so the document is not in its declared
+encoding). It should generate a fatal error.
+</TEST>
+
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Entries
new file mode 100644
index 0000000000..84bbe99bd6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Entries
@@ -0,0 +1,4 @@
+/E18.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E19.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E24.xml/1.1.1.1/Tue Aug 26 11:52:07 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Repository
new file mode 100644
index 0000000000..94bd81f49f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/eduni/errata-2e/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E18.xml
new file mode 100644
index 0000000000..727de27226
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E18.xml
@@ -0,0 +1 @@
+<foo>entity from main dir, right!</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E19.xml
new file mode 100644
index 0000000000..c1db16e5fa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E19.xml
@@ -0,0 +1 @@
+<foo>hello ! goodbye</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E24.xml
new file mode 100644
index 0000000000..abed8b7372
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/out/E24.xml
@@ -0,0 +1 @@
+<foo>You can use ]]&gt; or ]]&gt;</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Entries
new file mode 100644
index 0000000000..e7f219e7b5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Entries
@@ -0,0 +1,3 @@
+/E18-ent/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E18-pe/1.1.1.1/Tue Aug 26 11:52:07 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Repository
new file mode 100644
index 0000000000..22c019b707
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-ent
new file mode 100644
index 0000000000..09709bdd52
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-ent
@@ -0,0 +1 @@
+entity from subdir1, wrong! \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-pe b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-pe
new file mode 100644
index 0000000000..8a63a9291c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir1/E18-pe
@@ -0,0 +1,2 @@
+<!ENTITY % extpe SYSTEM "../subdir2/E18-extpe">
+<!ENTITY % intpe "%extpe;">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Entries
new file mode 100644
index 0000000000..9b4abb18bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Entries
@@ -0,0 +1,3 @@
+/E18-ent/1.1.1.1/Tue Aug 26 11:52:07 2003//
+/E18-extpe/1.1.1.1/Tue Aug 26 11:52:07 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Repository
new file mode 100644
index 0000000000..9a886b0ccb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-ent
new file mode 100644
index 0000000000..73b4db0700
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-ent
@@ -0,0 +1 @@
+entity from subdir2, wrong! \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-extpe b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-extpe
new file mode 100644
index 0000000000..2ba97bd947
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/subdir2/E18-extpe
@@ -0,0 +1 @@
+<!ENTITY ent SYSTEM 'E18-ent'>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/testcases.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/testcases.dtd
new file mode 100644
index 0000000000..448d362991
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/testcases.dtd
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)testcases.dtd 1.6 99/01/21
+ Original version copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+
+ 1999-06-09 00:20
+
+ DTD describing a database of XML tests.
+
+ NOTE: the OASIS/NIST test effort also has a DTD for its test
+ environment, but that DTD is not yet suited for automated test
+ processing. (Among other issues, it doesn't record information
+ putting any test case into the test matrix.) If that gets fixed,
+ it may be useful to switch over to that DTD.
+-->
+
+<!--
+ The root element of the whole collection is TESTSUITE. While not
+ very different from TESTCASES, it must be distinguished due to
+ improper processing by IE5.
+-->
+<!ELEMENT TESTSUITE ( TESTCASES+ )>
+<!ATTLIST TESTSUITE
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The root element of a collection should be "TESTCASES". It groups
+ a set of tests in a particular "PROFILE", which is descriptive. For
+ example, a "Japanese" profile might group tests with documents
+ in standard Japanese encodings, using Japanese characters used
+ inside names and name tokens as well as inside text. Or the
+ profile might be associated with the test supplier.
+-->
+
+<!ELEMENT TESTCASES (TEST|TESTCASES)*>
+<!ATTLIST TESTCASES
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The body of each TEST element is its description, used
+ to evaluate the diagnostic produced on negative tests.
+ People will generally read this to evaluate whether the
+ test failed for the correct reason.
+
+ The type of (external) ENTITIES required affect the results
+ permitted for certain types of nonvalidating parsers. In
+ some cases, errors (even well-formedness errors) can't be seen
+ without reading external parameter or general entities.
+
+ Each test has a unique ID used in diagnostics.
+
+ Tests with an OUTPUT attribute do dual duty: not only must parsers
+ accept the test, but the data they report must also have "Second
+ Canonical Form" as found in the specified output file. (This is
+ what James Clark titled "Canonical XML", with the addition of the
+ NOTATION declarations that all XML parsers are required to report.)
+
+ The OUTPUT3 attribute is like OUTPUT, but when sent through a
+ validating parser the data reported must have the "Third Canonical
+ Form" as found in the specified output file. (This is Second
+ Canonical form, with declarations of unparsed ENTITY values and
+ with all ignorable whitespace removed.)
+
+ Tests apply to one or more particular SECTIONS.
+
+ Each test has a TYPE:
+ * All parsers must accept "valid" testcases.
+ * Nonvalidating parsers must also accept "invalid" testcases,
+ but validating ones must reject them.
+ * No parser should accept a "not-wf" testcase unless it's a
+ nonvalidating parser and the test contains external entities
+ that the parser doesn't read.
+ * Parsers are not required to report "errors".
+
+ Each test is in a particular XML document, with a URI. If these
+ tests are accessed over a network, the path will be relative to
+ the base URI of the document holding the testcase.
+-->
+
+<!ELEMENT TEST (#PCDATA | EM | B)*>
+<!ATTLIST TEST
+ ENTITIES (both|none|parameter|general) "none"
+ ID ID #REQUIRED
+ OUTPUT CDATA #IMPLIED
+ OUTPUT3 CDATA #IMPLIED
+ SECTIONS CDATA #REQUIRED
+ TYPE (valid|invalid|not-wf|error) #REQUIRED
+ URI CDATA #REQUIRED
+ NAMESPACE (yes|no) "yes"
+ >
+
+<!--
+ Really basic HTML font tweaks, to support highlighting
+ some aspects of test descriptions ...
+ EM == emphasis (e.g. italics, fun colors)
+ B == bold
+-->
+<!ELEMENT EM (#PCDATA | B)*>
+<!ELEMENT B (#PCDATA | EM)*>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/xmlconf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/xmlconf.xml
new file mode 100644
index 0000000000..9c7d92eec6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-2e/xmlconf.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+
+<!-- Richard Tobin's XML 1.0 2nd edition errata test suite.
+ Copyright Richard Tobin, HCRC July 2003.
+ May be freely redistributed provided copyright notice is retained.
+ -->
+
+<?xml-stylesheet href="xmlconformance.xsl" type="text/xsl"?>
+
+<!DOCTYPE TESTSUITE SYSTEM "testcases.dtd" [
+ <!ENTITY eduni-errata2e SYSTEM "errata2e.xml">
+]>
+
+<TESTSUITE PROFILE="Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003">
+ &eduni-errata2e;
+</TESTSUITE>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Entries
new file mode 100644
index 0000000000..75b258e445
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Entries
@@ -0,0 +1,17 @@
+/E05a.xml/1.1/Thu Jun 1 12:24:56 2006//
+/E05b.xml/1.1/Thu Jun 1 12:24:57 2006//
+/E06a.xml/1.1/Thu Jun 1 12:24:57 2006//
+/E06b.xml/1.1/Thu Jun 1 12:24:57 2006//
+/E06c.xml/1.1/Thu Jun 1 12:24:57 2006//
+/E06d.xml/1.1/Thu Jun 1 12:24:57 2006//
+/E06e.xml/1.1/Thu Jun 1 12:24:57 2006//
+/E06f.xml/1.1/Thu Jun 1 12:24:57 2006//
+/E06g.xml/1.1/Thu Jun 1 12:24:57 2006//
+/E06h.xml/1.1/Thu Jun 1 12:24:57 2006//
+/E06i.xml/1.1/Thu Jun 1 12:24:57 2006//
+/E12.xml/1.1/Thu Jun 1 12:24:57 2006//
+/E13.xml/1.1/Thu Jun 1 12:24:57 2006//
+/errata3e.xml/1.3/Thu Jun 1 12:55:35 2006//
+/testcases.dtd/1.1/Thu Jun 1 11:45:56 2006//
+/xmlconf.xml/1.2/Thu Jun 1 12:55:35 2006//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Repository
new file mode 100644
index 0000000000..748d2db480
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/eduni/errata-3e
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05a.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05a.xml
new file mode 100644
index 0000000000..42654d1651
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05a.xml
@@ -0,0 +1,5 @@
+<!-- CDATA sections may occur in Mixed content. -->
+<!DOCTYPE foo [
+<!ELEMENT foo (#PCDATA|foo)*>
+]>
+<foo>a <![CDATA[cdata section]]> in mixed content</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05b.xml
new file mode 100644
index 0000000000..2522b035c4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E05b.xml
@@ -0,0 +1,9 @@
+<!-- CDATA sections, comments and PIs may occur in ANY content. -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>
+a <![CDATA[cdata section]]> in mixed content.
+a <!-- comment --> in mixed content.
+a <?processing instruction?> in mixed content.
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06a.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06a.xml
new file mode 100644
index 0000000000..1174ed52a8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06a.xml
@@ -0,0 +1,7 @@
+<!-- Default values for IDREF attributes must match Name. -->
+<!DOCTYPE foo [
+<!ELEMENT foo EMPTY>
+<!ATTLIST foo id ID #IMPLIED>
+<!ATTLIST foo a IDREF "34">
+]>
+<foo id="g0034" a="g0034"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06b.xml
new file mode 100644
index 0000000000..d11d8cdcab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06b.xml
@@ -0,0 +1,8 @@
+<!-- Default values for ENTITY attributes must match Name. -->
+<!DOCTYPE foo [
+<!ELEMENT foo EMPTY>
+<!ATTLIST foo a ENTITY "34">
+<!ENTITY ent SYSTEM "foo" NDATA not>
+<!NOTATION not SYSTEM "not">
+]>
+<foo a="ent"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06c.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06c.xml
new file mode 100644
index 0000000000..bd0fd5351d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06c.xml
@@ -0,0 +1,7 @@
+<!-- Default values for IDREFS attributes must match Names. -->
+<!DOCTYPE foo [
+<!ELEMENT foo EMPTY>
+<!ATTLIST foo id ID #IMPLIED>
+<!ATTLIST foo a IDREFS "34">
+]>
+<foo id="g0034" a="g0034"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06d.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06d.xml
new file mode 100644
index 0000000000..0671b7466f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06d.xml
@@ -0,0 +1,8 @@
+<!-- Default values for ENTITIES attributes must match Names. -->
+<!DOCTYPE foo [
+<!ELEMENT foo EMPTY>
+<!ATTLIST foo a ENTITIES "34">
+<!ENTITY ent SYSTEM "foo" NDATA not>
+<!NOTATION not SYSTEM "not">
+]>
+<foo a="ent"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06e.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06e.xml
new file mode 100644
index 0000000000..2b737e099b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06e.xml
@@ -0,0 +1,6 @@
+<!-- Default values for NMTOKEN attributes must match Nmtoken. -->
+<!DOCTYPE foo [
+<!ELEMENT foo EMPTY>
+<!ATTLIST foo a NMTOKEN "34+">
+]>
+<foo a="34"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06f.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06f.xml
new file mode 100644
index 0000000000..47e4618632
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06f.xml
@@ -0,0 +1,6 @@
+<!-- Default values for NMTOKENS attributes must match Nmtokens. -->
+<!DOCTYPE foo [
+<!ELEMENT foo EMPTY>
+<!ATTLIST foo a NMTOKENS "34+">
+]>
+<foo a="34"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06g.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06g.xml
new file mode 100644
index 0000000000..37b1ee6ae6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06g.xml
@@ -0,0 +1,8 @@
+<!-- Default values for NOTATION attributes must match one of the enumerated values. -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo a NOTATION (not) "not2">
+<!NOTATION not SYSTEM "not">
+<!NOTATION not2 SYSTEM "not2">
+]>
+<foo a="not">junk</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06h.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06h.xml
new file mode 100644
index 0000000000..1b3f11aeb4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06h.xml
@@ -0,0 +1,6 @@
+<!-- Default values for enumerated attributes must match one of the enumerated values. -->
+<!DOCTYPE foo [
+<!ELEMENT foo EMPTY>
+<!ATTLIST foo a (one|two|three) "four">
+]>
+<foo a="one"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06i.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06i.xml
new file mode 100644
index 0000000000..dd79ee2899
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E06i.xml
@@ -0,0 +1,12 @@
+<!-- Non-syntactic validity errors in default attributes only happen if the attribute is in fact defaulted. -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo id ID #IMPLIED>
+<!ATTLIST foo ref IDREF "undef">
+<!ATTLIST foo ent ENTITY "undef">
+<!-- can't test NOTATION attribute, because if it's undeclared then we'll
+ get an error for one of the enumerated values being undeclared. -->
+<!ENTITY ent SYSTEM "foo" NDATA not>
+<!NOTATION not SYSTEM "not">
+]>
+<foo id="g0034" ref="g0034" ent="ent"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E12.xml
new file mode 100644
index 0000000000..784f3424ee
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E12.xml
@@ -0,0 +1,7 @@
+<!-- Default values for attributes may not contain references to external entities. -->
+<!DOCTYPE foo [
+<!ENTITY ent SYSTEM "ent">
+<!ELEMENT foo ANY>
+<!ATTLIST foo a CDATA "contains &ent; reference">
+]>
+<foo a="not defaulted"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E13.xml
new file mode 100644
index 0000000000..d93ef3ee5d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/E13.xml
@@ -0,0 +1,7 @@
+<!-- Even internal parameter entity references are enough to make undeclared entities into mere validity errors rather than well-formedness errors. -->
+<!DOCTYPE foo [
+<!ENTITY % pe "<!ENTITY ent1 'text'>">
+%pe;
+<!ELEMENT foo ANY>
+]>
+<foo>&ent2;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/errata3e.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/errata3e.xml
new file mode 100644
index 0000000000..3eda8c6fd1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/errata3e.xml
@@ -0,0 +1,67 @@
+<TESTCASES PROFILE="Richard Tobin's XML 1.0 3rd edition errata test suite 1 June 2006">
+
+<!-- These tests are for the errata to XML 1.0 3rd edition
+ (http://www.w3.org/XML/xml-V10-3e-errata).
+ The errata to XML 1.1 (first edition) are a superset of these
+ (http://www.w3.org/XML/xml-V11-1e-errata).
+ The additional XML 1.1 errata are (a) minor fixes to the BNF
+ and (b) a correction concerning 1.0 compatibility; these do
+ not seem to me to merit tests. -->
+
+<!-- E01 concerns xml:lang and is not testable at the XML level -->
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E05" URI="E05a.xml" ID="rmt-e3e-05a" TYPE="valid">
+CDATA sections may occur in Mixed content.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E05" URI="E05b.xml" ID="rmt-e3e-05b" TYPE="valid">
+CDATA sections, comments and PIs may occur in ANY content.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06a.xml" ID="rmt-e3e-06a" TYPE="invalid">
+Default values for IDREF attributes must match Name.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06b.xml" ID="rmt-e3e-06b" TYPE="invalid">
+Default values for ENTITY attributes must match Name.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06c.xml" ID="rmt-e3e-06c" TYPE="invalid">
+Default values for IDREFS attributes must match Names.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06d.xml" ID="rmt-e3e-06d" TYPE="invalid">
+Default values for ENTITIES attributes must match Names.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06e.xml" ID="rmt-e3e-06e" TYPE="invalid">
+Default values for NMTOKEN attributes must match Nmtoken.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06f.xml" ID="rmt-e3e-06f" TYPE="invalid">
+Default values for NMTOKENS attributes must match Nmtokens.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06g.xml" ID="rmt-e3e-06g" TYPE="invalid">
+Default values for NOTATION attributes must match one of the enumerated values.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06h.xml" ID="rmt-e3e-06h" TYPE="invalid">
+Default values for enumerated attributes must match one of the enumerated values.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06i.xml" ID="rmt-e3e-06i" TYPE="valid">
+Non-syntactic validity errors in default attributes only happen if
+the attribute is in fact defaulted.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E12" URI="E12.xml" ID="rmt-e3e-12" TYPE="not-wf">
+Default values for attributes may not contain references to external entities.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E13" URI="E13.xml" ID="rmt-e3e-13" TYPE="invalid">
+Even internal parameter entity references are enough to make undeclared
+entities into mere validity errors rather than well-formedness errors.
+</TEST>
+
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/testcases.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/testcases.dtd
new file mode 100644
index 0000000000..448d362991
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/testcases.dtd
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)testcases.dtd 1.6 99/01/21
+ Original version copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+
+ 1999-06-09 00:20
+
+ DTD describing a database of XML tests.
+
+ NOTE: the OASIS/NIST test effort also has a DTD for its test
+ environment, but that DTD is not yet suited for automated test
+ processing. (Among other issues, it doesn't record information
+ putting any test case into the test matrix.) If that gets fixed,
+ it may be useful to switch over to that DTD.
+-->
+
+<!--
+ The root element of the whole collection is TESTSUITE. While not
+ very different from TESTCASES, it must be distinguished due to
+ improper processing by IE5.
+-->
+<!ELEMENT TESTSUITE ( TESTCASES+ )>
+<!ATTLIST TESTSUITE
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The root element of a collection should be "TESTCASES". It groups
+ a set of tests in a particular "PROFILE", which is descriptive. For
+ example, a "Japanese" profile might group tests with documents
+ in standard Japanese encodings, using Japanese characters used
+ inside names and name tokens as well as inside text. Or the
+ profile might be associated with the test supplier.
+-->
+
+<!ELEMENT TESTCASES (TEST|TESTCASES)*>
+<!ATTLIST TESTCASES
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The body of each TEST element is its description, used
+ to evaluate the diagnostic produced on negative tests.
+ People will generally read this to evaluate whether the
+ test failed for the correct reason.
+
+ The type of (external) ENTITIES required affect the results
+ permitted for certain types of nonvalidating parsers. In
+ some cases, errors (even well-formedness errors) can't be seen
+ without reading external parameter or general entities.
+
+ Each test has a unique ID used in diagnostics.
+
+ Tests with an OUTPUT attribute do dual duty: not only must parsers
+ accept the test, but the data they report must also have "Second
+ Canonical Form" as found in the specified output file. (This is
+ what James Clark titled "Canonical XML", with the addition of the
+ NOTATION declarations that all XML parsers are required to report.)
+
+ The OUTPUT3 attribute is like OUTPUT, but when sent through a
+ validating parser the data reported must have the "Third Canonical
+ Form" as found in the specified output file. (This is Second
+ Canonical form, with declarations of unparsed ENTITY values and
+ with all ignorable whitespace removed.)
+
+ Tests apply to one or more particular SECTIONS.
+
+ Each test has a TYPE:
+ * All parsers must accept "valid" testcases.
+ * Nonvalidating parsers must also accept "invalid" testcases,
+ but validating ones must reject them.
+ * No parser should accept a "not-wf" testcase unless it's a
+ nonvalidating parser and the test contains external entities
+ that the parser doesn't read.
+ * Parsers are not required to report "errors".
+
+ Each test is in a particular XML document, with a URI. If these
+ tests are accessed over a network, the path will be relative to
+ the base URI of the document holding the testcase.
+-->
+
+<!ELEMENT TEST (#PCDATA | EM | B)*>
+<!ATTLIST TEST
+ ENTITIES (both|none|parameter|general) "none"
+ ID ID #REQUIRED
+ OUTPUT CDATA #IMPLIED
+ OUTPUT3 CDATA #IMPLIED
+ SECTIONS CDATA #REQUIRED
+ TYPE (valid|invalid|not-wf|error) #REQUIRED
+ URI CDATA #REQUIRED
+ NAMESPACE (yes|no) "yes"
+ >
+
+<!--
+ Really basic HTML font tweaks, to support highlighting
+ some aspects of test descriptions ...
+ EM == emphasis (e.g. italics, fun colors)
+ B == bold
+-->
+<!ELEMENT EM (#PCDATA | B)*>
+<!ELEMENT B (#PCDATA | EM)*>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/xmlconf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/xmlconf.xml
new file mode 100644
index 0000000000..dcc571a743
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/errata-3e/xmlconf.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+
+<!-- Richard Tobin's XML 1.0 3rd edition errata test suite.
+ Copyright Richard Tobin, HCRC June 2006.
+ May be freely redistributed provided copyright notice is retained.
+ -->
+
+<?xml-stylesheet href="xmlconformance.xsl" type="text/xsl"?>
+
+<!DOCTYPE TESTSUITE SYSTEM "testcases.dtd" [
+ <!ENTITY eduni-errata3e SYSTEM "errata3e.xml">
+]>
+
+<TESTSUITE PROFILE="Richard Tobin's XML 1.0 3rd edition errata test suite 1 June 2006">
+ &eduni-errata3e;
+</TESTSUITE>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/001.xml
new file mode 100644
index 0000000000..dca5e6705f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/001.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Namespace name test: a perfectly good http URI -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>
+<foo xmlns="http://example.org/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/002.xml
new file mode 100644
index 0000000000..3749bcbbb7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/002.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Namespace name test: a syntactically plausible URI with a
+ fictitious scheme -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>
+<foo xmlns="zarquon://example.org/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/003.xml
new file mode 100644
index 0000000000..66c5cb8191
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/003.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Namespace name test: a perfectly good http URI with a fragment -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>
+<foo xmlns="http://example.org/namespace#apples"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/004.xml
new file mode 100644
index 0000000000..e7d91d5d33
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/004.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Namespace name test: a relative URI (deprecated) -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>]
+>
+<foo xmlns="namespaces/zaphod"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/005.xml
new file mode 100644
index 0000000000..dc9c663649
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/005.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Namespace name test: a same-document relative URI (deprecated) -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>
+<foo xmlns="#beeblebrox"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/006.xml
new file mode 100644
index 0000000000..80c8bf75d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/006.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Namespace name test: an http IRI that is not a URI -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>
+<foo xmlns="http://example.org/rosé"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/007.xml
new file mode 100644
index 0000000000..667bd63d1b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/007.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!-- Namespace inequality test: different capitalization -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>
+<foo xmlns:a="http://example.org/wine"
+ xmlns:b="http://Example.org/wine"
+ xmlns:c="http://example.org/Wine">
+
+<bar a:attr="1" b:attr="2" c:attr="3"/>
+
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/008.xml
new file mode 100644
index 0000000000..d63bc3c45e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/008.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!-- Namespace inequality test: different escaping -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/%7ewilbur"
+ xmlns:c="http://example.org/%7Ewilbur">
+
+<bar a:attr="1" b:attr="2" c:attr="3"/>
+
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/009.xml
new file mode 100644
index 0000000000..d67c066ec4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/009.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!-- Namespace equality test: plain repetition -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/~wilbur">
+
+<bar a:attr="1" b:attr="2"/>
+
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/010.xml
new file mode 100644
index 0000000000..2216fd6dce
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/010.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!-- Namespace equality test: use of character reference -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/&#x7E;wilbur">
+
+<bar a:attr="1" b:attr="2"/>
+
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/011.xml
new file mode 100644
index 0000000000..f22269b2df
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/011.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!-- Namespace equality test: use of entity reference -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+<!ENTITY tilde "~">
+]>
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/&tilde;wilbur">
+
+<bar a:attr="1" b:attr="2"/>
+
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/012.xml
new file mode 100644
index 0000000000..26d9b1bebb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/012.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!-- Namespace inequality test: equal after attribute value normalization -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b NMTOKEN #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>
+<foo xmlns:a="urn:xyzzy"
+ xmlns:b=" urn:xyzzy ">
+
+<bar a:attr="1" b:attr="2"/>
+
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/013.xml
new file mode 100644
index 0000000000..e8770ea1cf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/013.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!-- Bad QName syntax: multiple colons -->
+<foo>
+<bar a:b:attr="1"/>
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/014.xml
new file mode 100644
index 0000000000..7c8e9fa2a3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/014.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Bad QName syntax: colon at end -->
+<foo: />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/015.xml
new file mode 100644
index 0000000000..503018e705
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/015.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Bad QName syntax: colon at start -->
+<:foo />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/016.xml
new file mode 100644
index 0000000000..8a3c44e45d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/016.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Bad QName syntax: xmlns: -->
+<foo xmlns:="http://example.org/namespace" />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/017.xml
new file mode 100644
index 0000000000..65e754257d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/017.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: no namespaces -->
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/018.xml
new file mode 100644
index 0000000000..e795466550
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/018.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: default namespace -->
+<foo xmlns="http://example.org/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/019.xml
new file mode 100644
index 0000000000..c4620bd097
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/019.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: prefixed element -->
+<a:foo xmlns:a="http://example.org/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/020.xml
new file mode 100644
index 0000000000..4e5fcad48d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/020.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: prefixed attribute -->
+<foo xmlns:a="http://example.org/namespace" a:attr="1"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/021.xml
new file mode 100644
index 0000000000..e56c240c42
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/021.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: default namespace and unbinding -->
+<foo xmlns="http://example.org/namespace">
+ <foo xmlns=""/>
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/022.xml
new file mode 100644
index 0000000000..31984e79bf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/022.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: default namespace and rebinding -->
+<foo xmlns="http://example.org/namespace">
+ <foo xmlns="http://example.org/other-namespace"/>
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/023.xml
new file mode 100644
index 0000000000..4d695ad38d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/023.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!-- Illegal use of 1.1-style prefix unbinding in 1.0 document -->
+<a:foo xmlns:a="http://example.org/namespace">
+ <a:foo xmlns:a=""/>
+</a:foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/024.xml
new file mode 100644
index 0000000000..b68470afa6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/024.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: prefix rebinding -->
+<a:foo xmlns:a="http://example.org/namespace">
+ <a:foo xmlns:a="http://example.org/other-namespace"/>
+</a:foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/025.xml
new file mode 100644
index 0000000000..1277ab33da
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/025.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Unbound element prefix -->
+<a:foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/026.xml
new file mode 100644
index 0000000000..689c75c666
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/026.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Unbound attribute prefix -->
+<foo a:attr="1"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/027.xml
new file mode 100644
index 0000000000..1bf048e7f9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/027.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: using the xml prefix undeclared -->
+<foo xml:lang="en"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/028.xml
new file mode 100644
index 0000000000..e461235571
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/028.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: declaring the xml prefix correctly -->
+<foo xmlns:xml="http://www.w3.org/XML/1998/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/029.xml
new file mode 100644
index 0000000000..2c05165d9d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/029.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: declaring the xml prefix incorrectly -->
+<foo xmlns:xml="http://example.org/namespace"/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/030.xml
new file mode 100644
index 0000000000..db5ab4dbc2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/030.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: binding another prefix
+ to the xml namespace -->
+<foo xmlns:yml="http://www.w3.org/XML/1998/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/031.xml
new file mode 100644
index 0000000000..2eec6cc6d0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/031.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: declaring the xmlns prefix
+ with its correct URI (illegal) -->
+<foo xmlns:xmlns="http://www.w3.org/2000/xmlns/"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/032.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/032.xml
new file mode 100644
index 0000000000..94433263c5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/032.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: declaring the xmlns prefix
+ with an incorrect URI -->
+<foo xmlns:xmlns="http://example.org/namespace"/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/033.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/033.xml
new file mode 100644
index 0000000000..d9ee72807c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/033.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: binding another prefix
+ to the xmlns namespace -->
+<foo xmlns:ymlns="http://www.w3.org/2000/xmlns/"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/034.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/034.xml
new file mode 100644
index 0000000000..4fa2b8dbb0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/034.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: binding a reserved prefix -->
+<foo xmlns:xml2="http://example.org/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/035.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/035.xml
new file mode 100644
index 0000000000..97b14b3106
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/035.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: repeated identical attribute -->
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/~wilbur">
+
+<bar a:attr="1" a:attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/036.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/036.xml
new file mode 100644
index 0000000000..c37894b5d7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/036.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: repeated attribute with different prefixes -->
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/~wilbur">
+
+<bar a:attr="1" b:attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/037.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/037.xml
new file mode 100644
index 0000000000..30bc24b5b2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/037.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: different attributes with same local name -->
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/~kipper">
+
+<bar a:attr="1" b:attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/038.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/038.xml
new file mode 100644
index 0000000000..2b20a469e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/038.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: prefixed and unprefixed attributes with same
+ local name -->
+<foo xmlns:a="http://example.org/~wilbur">
+
+<bar a:attr="1" attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/039.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/039.xml
new file mode 100644
index 0000000000..af7be31dc7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/039.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: prefixed and unprefixed attributes with same
+ local name, with default namespace -->
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/~kipper"
+ xmlns="http://example.org/~wilbur">
+
+<b:bar a:attr="1" attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/040.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/040.xml
new file mode 100644
index 0000000000..cf02e22bfa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/040.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: prefixed and unprefixed attributes with same
+ local name, with default namespace and element in default namespace -->
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns="http://example.org/~wilbur">
+
+<bar a:attr="1" attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/041.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/041.xml
new file mode 100644
index 0000000000..80781e2e2b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/041.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: prefixed and unprefixed attributes with same
+ local name, element in same namespace as prefixed attribute -->
+<foo xmlns:a="http://example.org/~wilbur">
+
+<a:bar a:attr="1" attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/042.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/042.xml
new file mode 100644
index 0000000000..045dcc23dc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/042.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!-- Colon in PI name -->
+<?a:b bogus?>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/043.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/043.xml
new file mode 100644
index 0000000000..d800e2537b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/043.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Colon in entity name -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ENTITY a:b "bogus">
+]>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/044.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/044.xml
new file mode 100644
index 0000000000..30922c8d2b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/044.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Colon in entity name -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!NOTATION a:b SYSTEM "notation">
+]>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/045.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/045.xml
new file mode 100644
index 0000000000..3235470923
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/045.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Colon in ID attribute name -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo id ID #REQUIRED>
+]>
+<foo id="a:b"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/046.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/046.xml
new file mode 100644
index 0000000000..8432a2faaa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/046.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!-- Colon in ID attribute name -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo id ID #IMPLIED
+ ref IDREF #IMPLIED>
+]>
+<foo ref="a:b">
+ <foo id="a:b"/>
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Entries
new file mode 100644
index 0000000000..9162d1bae5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Entries
@@ -0,0 +1,48 @@
+/001.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/002.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/003.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/004.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/005.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/006.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/007.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/008.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/009.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/010.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/011.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/012.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/013.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/014.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/015.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/016.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/017.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/018.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/019.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/020.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/021.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/022.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/023.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/024.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/025.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/026.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/027.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/028.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/029.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/030.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/031.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/032.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/033.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/034.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/035.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/036.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/037.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/038.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/039.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/040.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/041.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/042.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/043.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/044.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/045.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/046.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/rmt-ns10.xml/1.2/Thu Nov 6 17:30:18 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Repository
new file mode 100644
index 0000000000..771fee0884
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/eduni/namespaces/1.0
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/rmt-ns10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/rmt-ns10.xml
new file mode 100644
index 0000000000..7cc985b5a9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.0/rmt-ns10.xml
@@ -0,0 +1,151 @@
+<TESTCASES PROFILE="Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003">
+
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="001.xml" ID="rmt-ns10-001" TYPE="valid">
+Namespace name test: a perfectly good http URI
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="002.xml" ID="rmt-ns10-002" TYPE="valid">
+Namespace name test: a syntactically plausible URI with a
+fictitious scheme
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="003.xml" ID="rmt-ns10-003" TYPE="valid">
+Namespace name test: a perfectly good http URI with a fragment
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="004.xml" ID="rmt-ns10-004" TYPE="error">
+Namespace name test: a relative URI (deprecated)
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="005.xml" ID="rmt-ns10-005" TYPE="error">
+Namespace name test: a same-document relative URI (deprecated)
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="006.xml" ID="rmt-ns10-006" TYPE="error">
+Namespace name test: an http IRI that is not a URI
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="007.xml" ID="rmt-ns10-007" TYPE="valid">
+Namespace inequality test: different capitalization
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="008.xml" ID="rmt-ns10-008" TYPE="valid">
+Namespace inequality test: different escaping
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="009.xml" ID="rmt-ns10-009" TYPE="not-wf">
+Namespace equality test: plain repetition
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="010.xml" ID="rmt-ns10-010" TYPE="not-wf">
+Namespace equality test: use of character reference
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="011.xml" ID="rmt-ns10-011" TYPE="not-wf">
+Namespace equality test: use of entity reference
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="012.xml" ID="rmt-ns10-012" TYPE="not-wf">
+Namespace inequality test: equal after attribute value normalization
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="3" URI="013.xml" ID="rmt-ns10-013" TYPE="not-wf">
+Bad QName syntax: multiple colons
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="3" URI="014.xml" ID="rmt-ns10-014" TYPE="not-wf">
+Bad QName syntax: colon at end
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="3" URI="015.xml" ID="rmt-ns10-015" TYPE="not-wf">
+Bad QName syntax: colon at start
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="016.xml" ID="rmt-ns10-016" TYPE="not-wf">
+Bad QName syntax: xmlns:
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="-" URI="017.xml" ID="rmt-ns10-017" TYPE="invalid">
+Simple legal case: no namespaces
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.2" URI="018.xml" ID="rmt-ns10-018" TYPE="invalid">
+Simple legal case: default namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="4" URI="019.xml" ID="rmt-ns10-019" TYPE="invalid">
+Simple legal case: prefixed element
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="4" URI="020.xml" ID="rmt-ns10-020" TYPE="invalid">
+Simple legal case: prefixed attribute
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.2" URI="021.xml" ID="rmt-ns10-021" TYPE="invalid">
+Simple legal case: default namespace and unbinding
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.2" URI="022.xml" ID="rmt-ns10-022" TYPE="invalid">
+Simple legal case: default namespace and rebinding
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="023.xml" ID="rmt-ns10-023" TYPE="not-wf">
+Illegal use of 1.1-style prefix unbinding in 1.0 document
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.1" URI="024.xml" ID="rmt-ns10-024" TYPE="invalid">
+Simple legal case: prefix rebinding
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="4" URI="025.xml" ID="rmt-ns10-025" TYPE="not-wf">
+Unbound element prefix
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="4" URI="026.xml" ID="rmt-ns10-026" TYPE="not-wf">
+Unbound attribute prefix
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="027.xml" ID="rmt-ns10-027" TYPE="invalid">
+Reserved prefixes and namespaces: using the xml prefix undeclared
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="028.xml" ID="rmt-ns10-028" TYPE="invalid">
+Reserved prefixes and namespaces: declaring the xml prefix correctly
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="029.xml" ID="rmt-ns10-029" TYPE="not-wf">
+Reserved prefixes and namespaces: declaring the xml prefix incorrectly
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="030.xml" ID="rmt-ns10-030" TYPE="not-wf">
+Reserved prefixes and namespaces: binding another prefix
+to the xml namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="031.xml" ID="rmt-ns10-031" TYPE="not-wf">
+Reserved prefixes and namespaces: declaring the xmlns prefix
+with its correct URI (illegal)
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="032.xml" ID="rmt-ns10-032" TYPE="not-wf">
+Reserved prefixes and namespaces: declaring the xmlns prefix
+with an incorrect URI
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="033.xml" ID="rmt-ns10-033" TYPE="not-wf">
+Reserved prefixes and namespaces: binding another prefix
+to the xmlns namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="034.xml" ID="rmt-ns10-034" TYPE="invalid">
+Reserved prefixes and namespaces: binding a reserved prefix
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="035.xml" ID="rmt-ns10-035" TYPE="not-wf">
+Attribute uniqueness: repeated identical attribute
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="036.xml" ID="rmt-ns10-036" TYPE="not-wf">
+Attribute uniqueness: repeated attribute with different prefixes
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="037.xml" ID="rmt-ns10-037" TYPE="invalid">
+Attribute uniqueness: different attributes with same local name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="038.xml" ID="rmt-ns10-038" TYPE="invalid">
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="039.xml" ID="rmt-ns10-039" TYPE="invalid">
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name, with default namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="040.xml" ID="rmt-ns10-040" TYPE="invalid">
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name, with default namespace and element in default namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="041.xml" ID="rmt-ns10-041" TYPE="invalid">
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name, element in same namespace as prefixed attribute
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="042.xml" ID="rmt-ns10-042" TYPE="not-wf">
+Colon in PI name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="043.xml" ID="rmt-ns10-043" TYPE="not-wf">
+Colon in entity name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="044.xml" ID="rmt-ns10-044" TYPE="not-wf">
+Colon in entity name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="045.xml" ID="rmt-ns10-045" TYPE="invalid">
+Colon in ID attribute name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="046.xml" ID="rmt-ns10-046" TYPE="invalid">
+Colon in ID attribute name
+</TEST>
+
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/001.xml
new file mode 100644
index 0000000000..b4b8b96e68
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/001.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Namespace name test: a perfectly good http IRI that is not a URI -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>
+<foo xmlns="http://example.org/rosé"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/002.xml
new file mode 100644
index 0000000000..722df453c0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/002.xml
@@ -0,0 +1,20 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Namespace inequality test: different escaping of non-ascii letter -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>
+<foo xmlns:a="http://example.org/rosé"
+ xmlns:b="http://example.org/ros%c3%a9"
+ xmlns:c="http://example.org/ros%c3%A9">
+
+<bar a:attr="1" b:attr="2" c:attr="3"/>
+
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/003.xml
new file mode 100644
index 0000000000..71d7343eb0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/003.xml
@@ -0,0 +1,5 @@
+<?xml version="1.1"?>
+<!-- 1.1 style prefix unbinding -->
+<foo xmlns:a="http://example.org/namespace">
+ <bar xmlns:a=""/>
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/004.xml
new file mode 100644
index 0000000000..fe89ec2f86
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/004.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1"?>
+<!-- 1.1 style prefix unbinding and rebinding -->
+<foo xmlns:a="http://example.org/namespace">
+ <bar xmlns:a="">
+ <foo xmlns:a="http://example.org/other-namespace" a:attr="1"/>
+ </bar>
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/005.xml
new file mode 100644
index 0000000000..cf47356b5b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/005.xml
@@ -0,0 +1,5 @@
+<?xml version="1.1"?>
+<!-- Illegal use of prefix that has been unbound -->
+<foo xmlns:a="http://example.org/namespace">
+ <a:bar xmlns:a=""/>
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/006.xml
new file mode 100644
index 0000000000..9235054a2c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/006.xml
@@ -0,0 +1,20 @@
+<?xml version="1.1"?>
+<!-- Test whether non-Latin-1 characters are accepted in IRIs, and whether
+ they are correctly distinguished -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>
+<foo xmlns:a="http://example.org/&#x50;"
+ xmlns:b="http://example.org/&#x150;"
+ xmlns:c="http://example.org/&#x250;">
+
+<bar a:attr="1" b:attr="2" c:attr="3"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Entries
new file mode 100644
index 0000000000..d1bf8d0fc7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Entries
@@ -0,0 +1,8 @@
+/001.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/002.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/003.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/004.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/005.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/006.xml/1.2/Thu Nov 6 17:28:50 2003//
+/rmt-ns11.xml/1.2/Thu Nov 6 17:30:18 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Repository
new file mode 100644
index 0000000000..92664cd3be
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/eduni/namespaces/1.1
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/rmt-ns11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/rmt-ns11.xml
new file mode 100644
index 0000000000..747aa47c58
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/1.1/rmt-ns11.xml
@@ -0,0 +1,23 @@
+<TESTCASES PROFILE="Richard Tobin's XML Namespaces 1.1 test suite 14 Feb 2003">
+
+<TEST VERSION="1.1" RECOMMENDATION="NS1.1" SECTIONS="2.1" URI="001.xml" ID="rmt-ns11-001" TYPE="valid">
+Namespace name test: a perfectly good http IRI that is not a URI
+</TEST>
+<TEST VERSION="1.1" RECOMMENDATION="NS1.1" SECTIONS="2.3" URI="002.xml" ID="rmt-ns11-002" TYPE="valid">
+Namespace inequality test: different escaping of non-ascii letter
+</TEST>
+<TEST VERSION="1.1" RECOMMENDATION="NS1.1" SECTIONS="6.1" URI="003.xml" ID="rmt-ns11-003" TYPE="invalid">
+1.1 style prefix unbinding
+</TEST>
+<TEST VERSION="1.1" RECOMMENDATION="NS1.1" SECTIONS="6.1" URI="004.xml" ID="rmt-ns11-004" TYPE="invalid">
+1.1 style prefix unbinding and rebinding
+</TEST>
+<TEST VERSION="1.1" RECOMMENDATION="NS1.1" SECTIONS="5" URI="005.xml" ID="rmt-ns11-005" TYPE="not-wf">
+Illegal use of prefix that has been unbound
+</TEST>
+<TEST VERSION="1.1" RECOMMENDATION="NS1.1" SECTIONS="2.1" URI="006.xml" ID="rmt-ns11-006" TYPE="valid">
+Test whether non-Latin-1 characters are accepted in IRIs, and whether
+they are correctly distinguished
+</TEST>
+
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries
new file mode 100644
index 0000000000..2229b3fc8d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries
@@ -0,0 +1,3 @@
+/testcases.dtd/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/xmlconf.xml/1.2/Thu Nov 6 17:30:18 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries.Log b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries.Log
new file mode 100644
index 0000000000..1044e1317e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Entries.Log
@@ -0,0 +1,3 @@
+A D/1.0////
+A D/1.1////
+A D/errata-1e////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Repository
new file mode 100644
index 0000000000..d277ba7aa6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/eduni/namespaces
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Entries
new file mode 100644
index 0000000000..3170ace724
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Entries
@@ -0,0 +1,7 @@
+/NE13a.xml/1.1/Thu Jun 1 11:43:24 2006//
+/NE13b.xml/1.2/Thu Jun 1 11:45:28 2006//
+/NE13c.xml/1.2/Thu Jun 1 11:45:28 2006//
+/errata1e.xml/1.1/Thu Jun 1 11:43:24 2006//
+/testcases.dtd/1.1/Thu Jun 1 11:43:24 2006//
+/xmlconf.xml/1.2/Thu Jun 1 12:55:35 2006//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Repository
new file mode 100644
index 0000000000..6ee3edf5a9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13a.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13a.xml
new file mode 100644
index 0000000000..b3a3a6b544
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13a.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- The xml namespace must not be declared as the default namespace. -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>
+<foo xmlns="http://www.w3.org/XML/1998/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13b.xml
new file mode 100644
index 0000000000..b483caf6a6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13b.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- The xmlns namespace must not be declared as the default namespace. -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>
+<foo xmlns="http://www.w3.org/2000/xmlns/"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13c.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13c.xml
new file mode 100644
index 0000000000..fb28af71d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/NE13c.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!-- Elements must not have the prefix xmlns. -->
+<!DOCTYPE foo [
+<!ELEMENT xmlns:foo EMPTY>
+]>
+<xmlns:foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/errata1e.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/errata1e.xml
new file mode 100644
index 0000000000..fd2ebf7a87
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/errata1e.xml
@@ -0,0 +1,18 @@
+<TESTCASES PROFILE="Richard Tobin's XML Namespaces 1.0/1.1 2nd edition test suite 1 June 2006">
+
+<!-- These tests are for the erratum to Namespaces in XML 1.0 and 1.1
+ first edition. The erratum is the same for both 1.0 and 1.1. -->
+
+<TEST RECOMMENDATION="NS1.0-errata1e" SECTIONS="NE13" URI="NE13a.xml" ID="rmt-ns-e1.0-13a" TYPE="not-wf">
+The xml namespace must not be declared as the default namespace.
+</TEST>
+
+<TEST RECOMMENDATION="NS1.0-errata1e" SECTIONS="NE13" URI="NE13b.xml" ID="rmt-ns-e1.0-13b" TYPE="not-wf">
+The xmlns namespace must not be declared as the default namespace.
+</TEST>
+
+<TEST RECOMMENDATION="NS1.0-errata1e" SECTIONS="NE13" URI="NE13c.xml" ID="rmt-ns-e1.0-13c" TYPE="not-wf">
+Elements must not have the prefix xmlns.
+</TEST>
+
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/testcases.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/testcases.dtd
new file mode 100644
index 0000000000..448d362991
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/testcases.dtd
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)testcases.dtd 1.6 99/01/21
+ Original version copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+
+ 1999-06-09 00:20
+
+ DTD describing a database of XML tests.
+
+ NOTE: the OASIS/NIST test effort also has a DTD for its test
+ environment, but that DTD is not yet suited for automated test
+ processing. (Among other issues, it doesn't record information
+ putting any test case into the test matrix.) If that gets fixed,
+ it may be useful to switch over to that DTD.
+-->
+
+<!--
+ The root element of the whole collection is TESTSUITE. While not
+ very different from TESTCASES, it must be distinguished due to
+ improper processing by IE5.
+-->
+<!ELEMENT TESTSUITE ( TESTCASES+ )>
+<!ATTLIST TESTSUITE
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The root element of a collection should be "TESTCASES". It groups
+ a set of tests in a particular "PROFILE", which is descriptive. For
+ example, a "Japanese" profile might group tests with documents
+ in standard Japanese encodings, using Japanese characters used
+ inside names and name tokens as well as inside text. Or the
+ profile might be associated with the test supplier.
+-->
+
+<!ELEMENT TESTCASES (TEST|TESTCASES)*>
+<!ATTLIST TESTCASES
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The body of each TEST element is its description, used
+ to evaluate the diagnostic produced on negative tests.
+ People will generally read this to evaluate whether the
+ test failed for the correct reason.
+
+ The type of (external) ENTITIES required affect the results
+ permitted for certain types of nonvalidating parsers. In
+ some cases, errors (even well-formedness errors) can't be seen
+ without reading external parameter or general entities.
+
+ Each test has a unique ID used in diagnostics.
+
+ Tests with an OUTPUT attribute do dual duty: not only must parsers
+ accept the test, but the data they report must also have "Second
+ Canonical Form" as found in the specified output file. (This is
+ what James Clark titled "Canonical XML", with the addition of the
+ NOTATION declarations that all XML parsers are required to report.)
+
+ The OUTPUT3 attribute is like OUTPUT, but when sent through a
+ validating parser the data reported must have the "Third Canonical
+ Form" as found in the specified output file. (This is Second
+ Canonical form, with declarations of unparsed ENTITY values and
+ with all ignorable whitespace removed.)
+
+ Tests apply to one or more particular SECTIONS.
+
+ Each test has a TYPE:
+ * All parsers must accept "valid" testcases.
+ * Nonvalidating parsers must also accept "invalid" testcases,
+ but validating ones must reject them.
+ * No parser should accept a "not-wf" testcase unless it's a
+ nonvalidating parser and the test contains external entities
+ that the parser doesn't read.
+ * Parsers are not required to report "errors".
+
+ Each test is in a particular XML document, with a URI. If these
+ tests are accessed over a network, the path will be relative to
+ the base URI of the document holding the testcase.
+-->
+
+<!ELEMENT TEST (#PCDATA | EM | B)*>
+<!ATTLIST TEST
+ ENTITIES (both|none|parameter|general) "none"
+ ID ID #REQUIRED
+ OUTPUT CDATA #IMPLIED
+ OUTPUT3 CDATA #IMPLIED
+ SECTIONS CDATA #REQUIRED
+ TYPE (valid|invalid|not-wf|error) #REQUIRED
+ URI CDATA #REQUIRED
+ NAMESPACE (yes|no) "yes"
+ >
+
+<!--
+ Really basic HTML font tweaks, to support highlighting
+ some aspects of test descriptions ...
+ EM == emphasis (e.g. italics, fun colors)
+ B == bold
+-->
+<!ELEMENT EM (#PCDATA | B)*>
+<!ELEMENT B (#PCDATA | EM)*>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/xmlconf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/xmlconf.xml
new file mode 100644
index 0000000000..e8a004303f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/errata-1e/xmlconf.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+
+<!-- Richard Tobin's XML Namespaces 1.0/1.1 2nd edition test suite 1 June 2006
+ Copyright Richard Tobin, HCRC June 2006.
+ May be freely redistributed provided copyright notice is retained.
+ -->
+
+<?xml-stylesheet href="xmlconformance.xsl" type="text/xsl"?>
+
+<!DOCTYPE TESTSUITE SYSTEM "testcases.dtd" [
+ <!ENTITY eduni-nse SYSTEM "errata1e.xml">
+]>
+
+<TESTSUITE PROFILE="Richard Tobin's XML Namespaces 1.0/1.1 2nd edition test suite 1 June 2006">
+ &eduni-nse;
+</TESTSUITE>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/testcases.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/testcases.dtd
new file mode 100644
index 0000000000..448d362991
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/testcases.dtd
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)testcases.dtd 1.6 99/01/21
+ Original version copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+
+ 1999-06-09 00:20
+
+ DTD describing a database of XML tests.
+
+ NOTE: the OASIS/NIST test effort also has a DTD for its test
+ environment, but that DTD is not yet suited for automated test
+ processing. (Among other issues, it doesn't record information
+ putting any test case into the test matrix.) If that gets fixed,
+ it may be useful to switch over to that DTD.
+-->
+
+<!--
+ The root element of the whole collection is TESTSUITE. While not
+ very different from TESTCASES, it must be distinguished due to
+ improper processing by IE5.
+-->
+<!ELEMENT TESTSUITE ( TESTCASES+ )>
+<!ATTLIST TESTSUITE
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The root element of a collection should be "TESTCASES". It groups
+ a set of tests in a particular "PROFILE", which is descriptive. For
+ example, a "Japanese" profile might group tests with documents
+ in standard Japanese encodings, using Japanese characters used
+ inside names and name tokens as well as inside text. Or the
+ profile might be associated with the test supplier.
+-->
+
+<!ELEMENT TESTCASES (TEST|TESTCASES)*>
+<!ATTLIST TESTCASES
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The body of each TEST element is its description, used
+ to evaluate the diagnostic produced on negative tests.
+ People will generally read this to evaluate whether the
+ test failed for the correct reason.
+
+ The type of (external) ENTITIES required affect the results
+ permitted for certain types of nonvalidating parsers. In
+ some cases, errors (even well-formedness errors) can't be seen
+ without reading external parameter or general entities.
+
+ Each test has a unique ID used in diagnostics.
+
+ Tests with an OUTPUT attribute do dual duty: not only must parsers
+ accept the test, but the data they report must also have "Second
+ Canonical Form" as found in the specified output file. (This is
+ what James Clark titled "Canonical XML", with the addition of the
+ NOTATION declarations that all XML parsers are required to report.)
+
+ The OUTPUT3 attribute is like OUTPUT, but when sent through a
+ validating parser the data reported must have the "Third Canonical
+ Form" as found in the specified output file. (This is Second
+ Canonical form, with declarations of unparsed ENTITY values and
+ with all ignorable whitespace removed.)
+
+ Tests apply to one or more particular SECTIONS.
+
+ Each test has a TYPE:
+ * All parsers must accept "valid" testcases.
+ * Nonvalidating parsers must also accept "invalid" testcases,
+ but validating ones must reject them.
+ * No parser should accept a "not-wf" testcase unless it's a
+ nonvalidating parser and the test contains external entities
+ that the parser doesn't read.
+ * Parsers are not required to report "errors".
+
+ Each test is in a particular XML document, with a URI. If these
+ tests are accessed over a network, the path will be relative to
+ the base URI of the document holding the testcase.
+-->
+
+<!ELEMENT TEST (#PCDATA | EM | B)*>
+<!ATTLIST TEST
+ ENTITIES (both|none|parameter|general) "none"
+ ID ID #REQUIRED
+ OUTPUT CDATA #IMPLIED
+ OUTPUT3 CDATA #IMPLIED
+ SECTIONS CDATA #REQUIRED
+ TYPE (valid|invalid|not-wf|error) #REQUIRED
+ URI CDATA #REQUIRED
+ NAMESPACE (yes|no) "yes"
+ >
+
+<!--
+ Really basic HTML font tweaks, to support highlighting
+ some aspects of test descriptions ...
+ EM == emphasis (e.g. italics, fun colors)
+ B == bold
+-->
+<!ELEMENT EM (#PCDATA | B)*>
+<!ELEMENT B (#PCDATA | EM)*>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/xmlconf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/xmlconf.xml
new file mode 100644
index 0000000000..2d0dd86a1d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/namespaces/xmlconf.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+
+<!-- Richard Tobin's XML Namespaces test suite.
+ Copyright Richard Tobin, HCRC February 2003.
+ May be freely redistributed provided copyright notice is retained.
+ -->
+
+<?xml-stylesheet href="xmlconformance.xsl" type="text/xsl"?>
+
+<!DOCTYPE TESTSUITE SYSTEM "testcases.dtd" [
+<!ENTITY rmt-ns10 SYSTEM "1.0/rmt-ns10.xml">
+<!ENTITY rmt-ns11 SYSTEM "1.1/rmt-ns11.xml">
+]>
+
+<TESTSUITE PROFILE="Richard Tobin's XML Namespaces test suite 14 Feb 2003">
+
+&rmt-ns10;
+&rmt-ns11;
+
+</TESTSUITE>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.dtd
new file mode 100644
index 0000000000..61b3bf6eb6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.dtd
@@ -0,0 +1,2 @@
+<?xml version="1.1" encoding="utf-8"?>
+<!ELEMENT foo ANY>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.xml
new file mode 100644
index 0000000000..3750a92147
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/001.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!-- External subset has later version number -->
+<!DOCTYPE foo SYSTEM "001.dtd">
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.pe b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.pe
new file mode 100644
index 0000000000..61b3bf6eb6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.pe
@@ -0,0 +1,2 @@
+<?xml version="1.1" encoding="utf-8"?>
+<!ELEMENT foo ANY>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.xml
new file mode 100644
index 0000000000..e152a71656
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/002.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- External PE has later version number -->
+<!DOCTYPE foo [
+<!ENTITY % pe SYSTEM "002.pe">
+%pe;
+]>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.ent
new file mode 100644
index 0000000000..e513d58a51
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.ent
@@ -0,0 +1,2 @@
+<?xml version="1.1" encoding="utf-8"?>
+some text
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.xml
new file mode 100644
index 0000000000..b0d3ee2b2a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/003.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- External general entity has later version number -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ENTITY ent SYSTEM "003.ent">
+]>
+<foo>&ent;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.ent
new file mode 100644
index 0000000000..e513d58a51
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.ent
@@ -0,0 +1,2 @@
+<?xml version="1.1" encoding="utf-8"?>
+some text
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.xml
new file mode 100644
index 0000000000..cc9dfa2179
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/004.xml
@@ -0,0 +1,6 @@
+<!-- External general entity has later version number (no decl means 1.0) -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ENTITY ent SYSTEM "004.ent">
+]>
+<foo>&ent;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005.xml
new file mode 100644
index 0000000000..e3426a8537
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Indirect external general entity has later version number -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ENTITY ent1 SYSTEM "005_1.ent">
+<!ENTITY ent2 SYSTEM "005_2.ent">
+]>
+<foo>&ent1;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_1.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_1.ent
new file mode 100644
index 0000000000..427bb5081e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_1.ent
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+&ent2;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_2.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_2.ent
new file mode 100644
index 0000000000..e513d58a51
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/005_2.ent
@@ -0,0 +1,2 @@
+<?xml version="1.1" encoding="utf-8"?>
+some text
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006.xml
new file mode 100644
index 0000000000..a27a512b63
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006.xml
@@ -0,0 +1,9 @@
+<?xml version="1.1"?>
+<!-- Second-level external general entity has later version number than
+ first-level, but not later than document, so not an error. -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ENTITY ent1 SYSTEM "006_1.ent">
+<!ENTITY ent2 SYSTEM "006_2.ent">
+]>
+<foo>&ent1;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_1.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_1.ent
new file mode 100644
index 0000000000..427bb5081e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_1.ent
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+&ent2;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_2.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_2.ent
new file mode 100644
index 0000000000..e513d58a51
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/006_2.ent
@@ -0,0 +1,2 @@
+<?xml version="1.1" encoding="utf-8"?>
+some text
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/007.xml
new file mode 100644
index 0000000000..e587762791
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/007.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1"?>
+<!-- A vanilla XML 1.1 document -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/008.xml
new file mode 100644
index 0000000000..98f6c1ba0c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/008.xml
@@ -0,0 +1,6 @@
+<?xml version="42.88"?>
+<!-- an implausibly-versioned document -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.ent
new file mode 100644
index 0000000000..5c7d0dc7c7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.ent
@@ -0,0 +1,2 @@
+<?xml version="42.88" encoding="utf-8"?>
+some text
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.xml
new file mode 100644
index 0000000000..b10354e4e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/009.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- External general entity has implausible version number -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ENTITY ent SYSTEM "009.ent">
+]>
+<foo>&ent;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/010.xml
new file mode 100644
index 0000000000..29b782878c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/010.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Contains a C1 control, legal in XML 1.0, illegal in XML 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>€</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/011.xml
new file mode 100644
index 0000000000..686f9abcc6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/011.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Contains a C1 control, legal in XML 1.0, illegal in XML 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>€</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/012.xml
new file mode 100644
index 0000000000..698db33712
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/012.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Contains a DEL, legal in XML 1.0, illegal in XML 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/013.xml
new file mode 100644
index 0000000000..399255893c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/013.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Contains a DEL, legal in XML 1.0, illegal in XML 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/014.xml
new file mode 100644
index 0000000000..05ac4aba77
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/014.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Has a "long s" in a name, legal in XML 1.1, illegal in XML 1.0 -->
+<eggſ/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/015.xml
new file mode 100644
index 0000000000..a708f720ca
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/015.xml
@@ -0,0 +1,3 @@
+<?xml version="1.1" encoding="utf-8"?>
+<!-- Has a "long s" in a name, legal in XML 1.1, illegal in XML 1.0 -->
+<eggſ/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/016.xml
new file mode 100644
index 0000000000..81c035dcb7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/016.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!-- Has a Byzantine Musical Symbol Kratimata in a name,
+ legal in XML 1.1, illegal in XML 1.0 -->
+<ð€²/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/017.xml
new file mode 100644
index 0000000000..08c03671e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/017.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1"?>
+<!-- Has a Byzantine Musical Symbol Kratimata in a name,
+ legal in XML 1.1, illegal in XML 1.0 -->
+<ð€²/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/018.xml
new file mode 100644
index 0000000000..b88ef98f93
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/018.xml
@@ -0,0 +1,3 @@
+<?xml version="1.1"?>
+<!-- Has the last legal namechar in XML 1.1, illegal in XML 1.0 -->
+<󯿿/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/019.xml
new file mode 100644
index 0000000000..5bcdf49e8d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/019.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Has the last legal namechar in XML 1.1, illegal in XML 1.0 -->
+<󯿿/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/020.xml
new file mode 100644
index 0000000000..3cf6bf2e75
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/020.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!-- Has the first character after the last legal namechar in XML 1.1,
+ illegal in both XML 1.0 and 1.1 -->
+<ó°€€/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/021.xml
new file mode 100644
index 0000000000..6c8ff0fe03
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/021.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1"?>
+<!-- Has the first character after the last legal namechar in XML 1.1,
+ illegal in both XML 1.0 and 1.1 -->
+<ó°€€/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/022.xml
new file mode 100644
index 0000000000..0081cef2a9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/022.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Has a NEL character; legal in both XML 1.0 and 1.1, but different
+ canonical output because of normalization in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>…</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/023.xml
new file mode 100644
index 0000000000..857a251a46
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/023.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Has a NEL character; legal in both XML 1.0 and 1.1, but different
+ canonical output because of normalization in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>…</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/024.xml
new file mode 100644
index 0000000000..ee3cecba7e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/024.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Has an LSEP character; legal in both XML 1.0 and 1.1, but different
+ canonical output because of normalization in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>
</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/025.xml
new file mode 100644
index 0000000000..321601d42c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/025.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1"?>
+<!-- Has an LSEP character; legal in both XML 1.0 and 1.1, but different
+ canonical output because of normalization in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>
</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/026.xml
new file mode 100644
index 0000000000..854e4e7785
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/026.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Has CR-NEL; legal in both XML 1.0 and 1.1, but different
+ canonical output because of normalization in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo> …</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/027.xml
new file mode 100644
index 0000000000..9ba1d7c5fe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/027.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Has CR-NEL; legal in both XML 1.0 and 1.1, but different
+ canonical output because of normalization in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo> …</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/028.xml
new file mode 100644
index 0000000000..8fcfac0ecb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/028.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Has CR-LSEP; legal in both XML 1.0 and 1.1, but different
+ canonical output because of normalization in 1.1.
+ Note that CR and LSEP are not combined into a single LF -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo> 
</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/029.xml
new file mode 100644
index 0000000000..15f8e6d1d2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/029.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1"?>
+<!-- Has CR-LSEP; legal in both XML 1.0 and 1.1, but different
+ canonical output because of normalization in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo> 
</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/030.xml
new file mode 100644
index 0000000000..89ac243fb1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/030.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Has a NEL character in an NMTOKENS attribute; well-formed in both
+ XML 1.0 and 1.1, but valid only in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo bar NMTOKENS #IMPLIED>
+]>
+<foo bar="abc…def"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/031.xml
new file mode 100644
index 0000000000..80510b8dd0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/031.xml
@@ -0,0 +1,8 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Has a NEL character in an NMTOKENS attribute; well-formed in both
+ XML 1.0 and 1.1, but valid only in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo bar NMTOKENS #IMPLIED>
+]>
+<foo bar="abc…def"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/032.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/032.xml
new file mode 100644
index 0000000000..04e807655a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/032.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Has an LSEP character in an NMTOKENS attribute; well-formed in both
+ XML 1.0 and 1.1, but valid only in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo bar NMTOKENS #IMPLIED>
+]>
+<foo bar="abc
def"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/033.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/033.xml
new file mode 100644
index 0000000000..1b86446d13
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/033.xml
@@ -0,0 +1,8 @@
+<?xml version="1.1"?>
+<!-- Has an LSEP character in an NMTOKENS attribute; well-formed in both
+ XML 1.0 and 1.1, but valid only in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo bar NMTOKENS #IMPLIED>
+]>
+<foo bar="abc
def"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/034.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/034.xml
new file mode 100644
index 0000000000..1389e28769
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/034.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Has an NMTOKENS attribute containing a CR character that comes from a
+ character reference in an internal entity. Because CR is in the
+ S production, this is valid in both XML 1.0 and 1.1. -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo bar NMTOKENS #IMPLIED>
+<!ENTITY val "abc&#x0d;def">
+]>
+<foo bar="&val;" />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/035.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/035.xml
new file mode 100644
index 0000000000..28275493a5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/035.xml
@@ -0,0 +1,10 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Has an NMTOKENS attribute containing a CR character that comes from a
+ character reference in an internal entity. Because CR is in the
+ S production, this is valid in both XML 1.0 and 1.1. -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo bar NMTOKENS #IMPLIED>
+<!ENTITY val "abc&#x0d;def">
+]>
+<foo bar="&val;" />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/036.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/036.xml
new file mode 100644
index 0000000000..26e02cdba1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/036.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Has an NMTOKENS attribute containing a NEL character that comes from a
+ character reference in an internal entity. Because NEL is not in the
+ S production (even though real NELs are converted to LF on input),
+ this is invalid in both XML 1.0 and 1.1. -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo bar NMTOKENS #IMPLIED>
+<!ENTITY val "abc&#x85;def">
+]>
+<foo bar="&val;" />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/037.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/037.xml
new file mode 100644
index 0000000000..7e0e9fd1b8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/037.xml
@@ -0,0 +1,11 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Has an NMTOKENS attribute containing a NEL character that comes from a
+ character reference in an internal entity. Because NEL is not in the
+ S production (even though real NELs are converted to LF on input),
+ this is invalid in both XML 1.0 and 1.1. -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo bar NMTOKENS #IMPLIED>
+<!ENTITY val "abc&#x85;def">
+]>
+<foo bar="&val;" />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/038.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/038.xml
new file mode 100644
index 0000000000..c172ca52cf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/038.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Contains a C0 control character (form-feed), illegal in
+ both XML 1.0 and 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo> </foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/039.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/039.xml
new file mode 100644
index 0000000000..d6ce5d05a6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/039.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Contains a C0 control character (form-feed), illegal in
+ both XML 1.0 and 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo> </foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/040.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/040.xml
new file mode 100644
index 0000000000..2717a4f8a4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/040.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Contains a C1 control character (partial line up), legal in
+ XML 1.0 but not 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>Œ</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/041.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/041.xml
new file mode 100644
index 0000000000..e3caa92050
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/041.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Contains a C1 control character (partial line up), legal in
+ XML 1.0 but not 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>Œ</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/042.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/042.xml
new file mode 100644
index 0000000000..d12570ba01
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/042.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Contains a character reference to a C0 control character (form-feed),
+ legal in XML 1.1 but not 1.0 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>&#x0c;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/043.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/043.xml
new file mode 100644
index 0000000000..771e807f94
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/043.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Contains a character reference to a C0 control character (form-feed),
+ legal in XML 1.1 but not 1.0 -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>&#x0c;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/044.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/044.xml
new file mode 100644
index 0000000000..fc47fbf6f2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/044.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Contains a character reference to a C1 control character (partial line
+ up), legal in both XML 1.0 and 1.1 (but for different reasons) -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>&#x8c;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/045.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/045.xml
new file mode 100644
index 0000000000..966f8c7906
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/045.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Contains a character reference to a C1 control character (partial line
+ up), legal in both XML 1.0 and 1.1 (but for different reasons) -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+]>
+<foo>&#x8c;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/046.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/046.xml
new file mode 100644
index 0000000000..8d1f955435
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/046.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Has a NEL character in element content whitespace; well-formed in both
+ XML 1.0 and 1.1, but valid only in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+]>
+<foo>…</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/047.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/047.xml
new file mode 100644
index 0000000000..4231317ebf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/047.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Has a NEL character in element content whitespace; well-formed in both
+ XML 1.0 and 1.1, but valid only in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+]>
+<foo>…</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/048.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/048.xml
new file mode 100644
index 0000000000..b7a995d0be
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/048.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Has an LSEP character in element content whitespace; well-formed in both
+ XML 1.0 and 1.1, but valid only in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+]>
+<foo>
</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/049.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/049.xml
new file mode 100644
index 0000000000..15608635a2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/049.xml
@@ -0,0 +1,8 @@
+<?xml version="1.1"?>
+<!-- has an LSEP character in element content whitespace; well-formed in both
+ XML 1.0 and 1.1, but valid only in 1.1 -->
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+]>
+<foo>
</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/050.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/050.xml
new file mode 100644
index 0000000000..68b17cac37
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/050.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Has element content whitespace containing a CR character that comes from
+ a character reference in an internal entity. Because CR is in the
+ S production, this is valid in both XML 1.0 and 1.1. -->
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+<!ENTITY e "&#x0d;">
+]>
+<foo>&e;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/051.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/051.xml
new file mode 100644
index 0000000000..916be37a09
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/051.xml
@@ -0,0 +1,9 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Has element content whitespace containing a CR character that comes from
+ a character reference in an internal entity. Because CR is in the
+ S production, this is valid in both XML 1.0 and 1.1. -->
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+<!ENTITY e "&#x0d;">
+]>
+<foo>&e;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/052.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/052.xml
new file mode 100644
index 0000000000..1a544dd26d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/052.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Has element content whitespace containing a NEL character that comes from
+ a character reference in an internal entity. Because NEL is not in the
+ S production (even though real NELs are converted to LF on input),
+ this is invalid in both XML 1.0 and 1.1. -->
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+<!ENTITY e "abc&#x85;def">
+]>
+<foo>&e;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/053.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/053.xml
new file mode 100644
index 0000000000..720e4393e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/053.xml
@@ -0,0 +1,10 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Has element content whitespace containing a NEL character that comes from
+ a character reference in an internal entity. Because NEL is not in the
+ S production (even though real NELs are converted to LF on input),
+ this is invalid in both XML 1.0 and 1.1. -->
+<!DOCTYPE foo [
+<!ELEMENT foo (foo*)>
+<!ENTITY e "abc&#x85;def">
+]>
+<foo>&e;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/054.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/054.xml
new file mode 100644
index 0000000000..a60c006bae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/054.xml
@@ -0,0 +1,12 @@
+<?xml version="1.1" encoding="iso-8859-1"?>
+<!-- Contains a character reference to a C0 control character (form-feed)
+ in an entity value. This will be legal (in XML 1.1) when the entity
+ declaration is parsed, but what about when it is used? According to
+ the grammar in the CR spec, it should be illegal (because the
+ replacement text must match "content"), but this is probably not
+ intended. -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ENTITY e "&#x0c;">
+]>
+<foo>&e;</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/055.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/055.xml
new file mode 100644
index 0000000000..fe5a6cc644
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/055.xml
@@ -0,0 +1,3 @@
+<?xml version="1.1"…encoding="iso-8859-1"?>
+<!-- Has a Latin-1 NEL in the XML declaration -->
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/056.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/056.xml
new file mode 100644
index 0000000000..703f25b864
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/056.xml
@@ -0,0 +1,3 @@
+<?xml version="1.1"Â…encoding="utf-8"?>
+<!-- Has a UTF-8 NEL in the XML declaration -->
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/057.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/057.xml
new file mode 100644
index 0000000000..1ee4071470
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/057.xml
@@ -0,0 +1,3 @@
+<?xml version="1.1"
encoding="utf-8"?>
+<!-- Has a UTF-8 LSEP in the XML declaration -->
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Entries
new file mode 100644
index 0000000000..7dc624fe01
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Entries
@@ -0,0 +1,70 @@
+/001.dtd/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/001.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/002.pe/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/002.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/003.ent/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/003.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/004.ent/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/004.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/005.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/005_1.ent/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/005_2.ent/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/006.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/006_1.ent/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/006_2.ent/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/007.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/008.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/009.ent/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/009.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/010.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/011.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/012.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/013.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/014.xml/1.2/Fri Nov 14 15:28:15 2003//
+/015.xml/1.2/Fri Nov 14 15:28:15 2003//
+/016.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/017.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/018.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/019.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/020.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/021.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/022.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/023.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/024.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/025.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/026.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/027.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/028.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/029.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/030.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/031.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/032.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/033.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/034.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/035.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/036.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/037.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/038.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/039.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/040.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/041.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/042.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/043.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/044.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/045.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/046.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/047.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/048.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/049.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/050.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/051.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/052.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/053.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/054.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/055.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/056.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/057.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/testcases.dtd/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/xml11.xml/1.2/Fri Nov 14 15:28:15 2003//
+/xmlconf.xml/1.2/Thu Nov 6 17:30:18 2003//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Repository
new file mode 100644
index 0000000000..b4d2d355ce
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/eduni/xml-1.1
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/006.xml
new file mode 100644
index 0000000000..bb23ff88a9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/006.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo>&#10;&#10;some text&#10;&#10;</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/007.xml
new file mode 100644
index 0000000000..01d6d20520
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/007.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo></foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/010.xml
new file mode 100644
index 0000000000..d24c7744c1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/010.xml
@@ -0,0 +1 @@
+<foo>€</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/012.xml
new file mode 100644
index 0000000000..384344a000
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/012.xml
@@ -0,0 +1 @@
+<foo></foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/015.xml
new file mode 100644
index 0000000000..bbc5c27a14
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/015.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><eggſ></eggſ> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/017.xml
new file mode 100644
index 0000000000..a169654ec8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/017.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><ð€²></ð€²> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/018.xml
new file mode 100644
index 0000000000..e9ed497844
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/018.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><󯿿></󯿿> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/022.xml
new file mode 100644
index 0000000000..dd89bed4e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/022.xml
@@ -0,0 +1 @@
+<foo>Â…</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/023.xml
new file mode 100644
index 0000000000..be866ffc8b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/023.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo>&#10;</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/024.xml
new file mode 100644
index 0000000000..0ae04b6fa6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/024.xml
@@ -0,0 +1 @@
+<foo>
</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/025.xml
new file mode 100644
index 0000000000..be866ffc8b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/025.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo>&#10;</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/026.xml
new file mode 100644
index 0000000000..98aaebd487
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/026.xml
@@ -0,0 +1 @@
+<foo>&#10;Â…</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/027.xml
new file mode 100644
index 0000000000..be866ffc8b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/027.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo>&#10;</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/028.xml
new file mode 100644
index 0000000000..3537e31d0a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/028.xml
@@ -0,0 +1 @@
+<foo>&#10;
</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/029.xml
new file mode 100644
index 0000000000..7f917046df
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/029.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo>&#10;&#10;</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/030.xml
new file mode 100644
index 0000000000..10e9d7d2b5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/030.xml
@@ -0,0 +1 @@
+<foo bar="abcÂ…def"></foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/031.xml
new file mode 100644
index 0000000000..128ee0e125
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/031.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo bar="abc def"></foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/032.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/032.xml
new file mode 100644
index 0000000000..b67e16498d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/032.xml
@@ -0,0 +1 @@
+<foo bar="abc
def"></foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/033.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/033.xml
new file mode 100644
index 0000000000..128ee0e125
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/033.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo bar="abc def"></foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/034.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/034.xml
new file mode 100644
index 0000000000..da523b848e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/034.xml
@@ -0,0 +1 @@
+<foo bar="abc def"></foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/035.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/035.xml
new file mode 100644
index 0000000000..128ee0e125
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/035.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo bar="abc def"></foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/036.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/036.xml
new file mode 100644
index 0000000000..10e9d7d2b5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/036.xml
@@ -0,0 +1 @@
+<foo bar="abcÂ…def"></foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/037.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/037.xml
new file mode 100644
index 0000000000..fbdb0aab0a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/037.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo bar="abc&#133;def"></foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/040.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/040.xml
new file mode 100644
index 0000000000..7bbfacf14b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/040.xml
@@ -0,0 +1 @@
+<foo>Œ</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/043.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/043.xml
new file mode 100644
index 0000000000..c858cf9436
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/043.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo>&#12;</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/044.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/044.xml
new file mode 100644
index 0000000000..7bbfacf14b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/044.xml
@@ -0,0 +1 @@
+<foo>Œ</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/045.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/045.xml
new file mode 100644
index 0000000000..e86a8b6620
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/045.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo>&#140;</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/046.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/046.xml
new file mode 100644
index 0000000000..dd89bed4e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/046.xml
@@ -0,0 +1 @@
+<foo>Â…</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/047.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/047.xml
new file mode 100644
index 0000000000..be866ffc8b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/047.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo>&#10;</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/048.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/048.xml
new file mode 100644
index 0000000000..0ae04b6fa6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/048.xml
@@ -0,0 +1 @@
+<foo>
</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/049.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/049.xml
new file mode 100644
index 0000000000..be866ffc8b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/049.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo>&#10;</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/050.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/050.xml
new file mode 100644
index 0000000000..7f3143d210
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/050.xml
@@ -0,0 +1 @@
+<foo>&#13;</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/051.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/051.xml
new file mode 100644
index 0000000000..d40772ba80
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/051.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo>&#13;</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/052.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/052.xml
new file mode 100644
index 0000000000..efb77f2429
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/052.xml
@@ -0,0 +1 @@
+<foo>abcÂ…def</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/053.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/053.xml
new file mode 100644
index 0000000000..44e7304320
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/053.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo>abc&#133;def</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/054.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/054.xml
new file mode 100644
index 0000000000..c858cf9436
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/054.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><foo>&#12;</foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Entries
new file mode 100644
index 0000000000..f4e8474467
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Entries
@@ -0,0 +1,37 @@
+/006.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/007.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/010.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/012.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/015.xml/1.2/Fri Nov 14 15:28:15 2003//
+/017.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/018.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/022.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/023.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/024.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/025.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/026.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/027.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/028.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/029.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/030.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/031.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/032.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/033.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/034.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/035.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/036.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/037.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/040.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/043.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/044.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/045.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/046.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/047.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/048.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/049.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/050.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/051.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/052.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/053.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+/054.xml/1.1.1.1/Mon Jun 2 17:59:00 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Repository
new file mode 100644
index 0000000000..7cae140bee
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/eduni/xml-1.1/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/testcases.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/testcases.dtd
new file mode 100644
index 0000000000..448d362991
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/testcases.dtd
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)testcases.dtd 1.6 99/01/21
+ Original version copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+
+ 1999-06-09 00:20
+
+ DTD describing a database of XML tests.
+
+ NOTE: the OASIS/NIST test effort also has a DTD for its test
+ environment, but that DTD is not yet suited for automated test
+ processing. (Among other issues, it doesn't record information
+ putting any test case into the test matrix.) If that gets fixed,
+ it may be useful to switch over to that DTD.
+-->
+
+<!--
+ The root element of the whole collection is TESTSUITE. While not
+ very different from TESTCASES, it must be distinguished due to
+ improper processing by IE5.
+-->
+<!ELEMENT TESTSUITE ( TESTCASES+ )>
+<!ATTLIST TESTSUITE
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The root element of a collection should be "TESTCASES". It groups
+ a set of tests in a particular "PROFILE", which is descriptive. For
+ example, a "Japanese" profile might group tests with documents
+ in standard Japanese encodings, using Japanese characters used
+ inside names and name tokens as well as inside text. Or the
+ profile might be associated with the test supplier.
+-->
+
+<!ELEMENT TESTCASES (TEST|TESTCASES)*>
+<!ATTLIST TESTCASES
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The body of each TEST element is its description, used
+ to evaluate the diagnostic produced on negative tests.
+ People will generally read this to evaluate whether the
+ test failed for the correct reason.
+
+ The type of (external) ENTITIES required affect the results
+ permitted for certain types of nonvalidating parsers. In
+ some cases, errors (even well-formedness errors) can't be seen
+ without reading external parameter or general entities.
+
+ Each test has a unique ID used in diagnostics.
+
+ Tests with an OUTPUT attribute do dual duty: not only must parsers
+ accept the test, but the data they report must also have "Second
+ Canonical Form" as found in the specified output file. (This is
+ what James Clark titled "Canonical XML", with the addition of the
+ NOTATION declarations that all XML parsers are required to report.)
+
+ The OUTPUT3 attribute is like OUTPUT, but when sent through a
+ validating parser the data reported must have the "Third Canonical
+ Form" as found in the specified output file. (This is Second
+ Canonical form, with declarations of unparsed ENTITY values and
+ with all ignorable whitespace removed.)
+
+ Tests apply to one or more particular SECTIONS.
+
+ Each test has a TYPE:
+ * All parsers must accept "valid" testcases.
+ * Nonvalidating parsers must also accept "invalid" testcases,
+ but validating ones must reject them.
+ * No parser should accept a "not-wf" testcase unless it's a
+ nonvalidating parser and the test contains external entities
+ that the parser doesn't read.
+ * Parsers are not required to report "errors".
+
+ Each test is in a particular XML document, with a URI. If these
+ tests are accessed over a network, the path will be relative to
+ the base URI of the document holding the testcase.
+-->
+
+<!ELEMENT TEST (#PCDATA | EM | B)*>
+<!ATTLIST TEST
+ ENTITIES (both|none|parameter|general) "none"
+ ID ID #REQUIRED
+ OUTPUT CDATA #IMPLIED
+ OUTPUT3 CDATA #IMPLIED
+ SECTIONS CDATA #REQUIRED
+ TYPE (valid|invalid|not-wf|error) #REQUIRED
+ URI CDATA #REQUIRED
+ NAMESPACE (yes|no) "yes"
+ >
+
+<!--
+ Really basic HTML font tweaks, to support highlighting
+ some aspects of test descriptions ...
+ EM == emphasis (e.g. italics, fun colors)
+ B == bold
+-->
+<!ELEMENT EM (#PCDATA | B)*>
+<!ELEMENT B (#PCDATA | EM)*>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xml11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xml11.xml
new file mode 100644
index 0000000000..6bfe42c661
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xml11.xml
@@ -0,0 +1,286 @@
+<TESTCASES PROFILE="Richard Tobin's XML 1.1 test suite 13 Feb 2003">
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="001.xml" ID="rmt-001" TYPE="not-wf" ENTITIES="parameter">
+External subset has later version number
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="002.xml" ID="rmt-002" TYPE="not-wf" ENTITIES="parameter">
+External PE has later version number
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="003.xml" ID="rmt-003" TYPE="not-wf" ENTITIES="general">
+External general entity has later version number
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="004.xml" ID="rmt-004" TYPE="not-wf" ENTITIES="general">
+External general entity has later version number (no decl means 1.0)
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="005.xml" ID="rmt-005" TYPE="not-wf" ENTITIES="general">
+Indirect external general entity has later version number
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="006.xml" ID="rmt-006" OUTPUT="out/006.xml" TYPE="valid" ENTITIES="general">
+Second-level external general entity has later version number than
+first-level, but not later than document, so not an error.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="007.xml" ID="rmt-007" OUTPUT="out/007.xml" TYPE="valid">
+A vanilla XML 1.1 document
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="008.xml" ID="rmt-008" TYPE="error">
+an implausibly-versioned document
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="009.xml" ID="rmt-009" TYPE="error" ENTITIES="general">
+External general entity has implausible version number
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="010.xml" ID="rmt-010" OUTPUT="out/010.xml" TYPE="valid">
+Contains a C1 control, legal in XML 1.0, illegal in XML 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="011.xml" ID="rmt-011" TYPE="not-wf">
+Contains a C1 control, legal in XML 1.0, illegal in XML 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="012.xml" ID="rmt-012" OUTPUT="out/012.xml" TYPE="valid">
+Contains a DEL, legal in XML 1.0, illegal in XML 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="013.xml" ID="rmt-013" TYPE="not-wf">
+Contains a DEL, legal in XML 1.0, illegal in XML 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="014.xml" ID="rmt-014" TYPE="not-wf">
+Has a "long s" in a name, legal in XML 1.1, illegal in XML 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="015.xml" ID="rmt-015" OUTPUT="out/015.xml" TYPE="invalid">
+Has a "long s" in a name, legal in XML 1.1, illegal in XML 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="016.xml" ID="rmt-016" TYPE="not-wf">
+Has a Byzantine Musical Symbol Kratimata in a name,
+legal in XML 1.1, illegal in XML 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="017.xml" ID="rmt-017" OUTPUT="out/017.xml" TYPE="invalid">
+Has a Byzantine Musical Symbol Kratimata in a name,
+legal in XML 1.1, illegal in XML 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="018.xml" ID="rmt-018" OUTPUT="out/018.xml" TYPE="invalid">
+Has the last legal namechar in XML 1.1, illegal in XML 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="019.xml" ID="rmt-019" TYPE="not-wf">
+Has the last legal namechar in XML 1.1, illegal in XML 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="020.xml" ID="rmt-020" TYPE="not-wf">
+Has the first character after the last legal namechar in XML 1.1,
+illegal in both XML 1.0 and 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="021.xml" ID="rmt-021" TYPE="not-wf">
+Has the first character after the last legal namechar in XML 1.1,
+illegal in both XML 1.0 and 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="022.xml" ID="rmt-022" OUTPUT="out/022.xml" TYPE="valid">
+Has a NEL character; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="023.xml" ID="rmt-023" OUTPUT="out/023.xml" TYPE="valid">
+Has a NEL character; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="024.xml" ID="rmt-024" OUTPUT="out/024.xml" TYPE="valid">
+Has an LSEP character; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="025.xml" ID="rmt-025" OUTPUT="out/025.xml" TYPE="valid">
+Has an LSEP character; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="026.xml" ID="rmt-026" OUTPUT="out/026.xml" TYPE="valid">
+Has CR-NEL; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="027.xml" ID="rmt-027" OUTPUT="out/027.xml" TYPE="valid">
+Has CR-NEL; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="028.xml" ID="rmt-028" OUTPUT="out/028.xml" TYPE="valid">
+Has CR-LSEP; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1.
+Note that CR and LSEP are not combined into a single LF
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="029.xml" ID="rmt-029" OUTPUT="out/029.xml" TYPE="valid">
+Has CR-LSEP; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="030.xml" ID="rmt-030" OUTPUT="out/030.xml" TYPE="invalid">
+Has a NEL character in an NMTOKENS attribute; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="031.xml" ID="rmt-031" OUTPUT="out/031.xml" TYPE="valid">
+Has a NEL character in an NMTOKENS attribute; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="032.xml" ID="rmt-032" OUTPUT="out/032.xml" TYPE="invalid">
+Has an LSEP character in an NMTOKENS attribute; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="033.xml" ID="rmt-033" OUTPUT="out/033.xml" TYPE="valid">
+Has an LSEP character in an NMTOKENS attribute; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="034.xml" ID="rmt-034" OUTPUT="out/034.xml" TYPE="valid">
+Has an NMTOKENS attribute containing a CR character that comes from a
+character reference in an internal entity. Because CR is in the
+S production, this is valid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="035.xml" ID="rmt-035" OUTPUT="out/035.xml" TYPE="valid">
+Has an NMTOKENS attribute containing a CR character that comes from a
+character reference in an internal entity. Because CR is in the
+S production, this is valid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="036.xml" ID="rmt-036" OUTPUT="out/036.xml" TYPE="invalid">
+Has an NMTOKENS attribute containing a NEL character that comes from a
+character reference in an internal entity. Because NEL is not in the
+S production (even though real NELs are converted to LF on input),
+this is invalid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="037.xml" ID="rmt-037" OUTPUT="out/037.xml" TYPE="invalid">
+Has an NMTOKENS attribute containing a NEL character that comes from a
+character reference in an internal entity. Because NEL is not in the
+S production (even though real NELs are converted to LF on input),
+this is invalid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="038.xml" ID="rmt-038" TYPE="not-wf">
+Contains a C0 control character (form-feed), illegal in
+both XML 1.0 and 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="039.xml" ID="rmt-039" TYPE="not-wf">
+Contains a C0 control character (form-feed), illegal in
+both XML 1.0 and 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="040.xml" ID="rmt-040" OUTPUT="out/040.xml" TYPE="valid">
+Contains a C1 control character (partial line up), legal in
+XML 1.0 but not 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="041.xml" ID="rmt-041" TYPE="not-wf">
+Contains a C1 control character (partial line up), legal in
+XML 1.0 but not 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="4.1" URI="042.xml" ID="rmt-042" TYPE="not-wf">
+Contains a character reference to a C0 control character (form-feed),
+legal in XML 1.1 but not 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="4.1" URI="043.xml" ID="rmt-043" OUTPUT="out/043.xml" TYPE="valid">
+Contains a character reference to a C0 control character (form-feed),
+legal in XML 1.1 but not 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="4.1" URI="044.xml" ID="rmt-044" OUTPUT="out/044.xml" TYPE="valid">
+Contains a character reference to a C1 control character (partial line
+up), legal in both XML 1.0 and 1.1 (but for different reasons)
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="4.1" URI="045.xml" ID="rmt-045" OUTPUT="out/045.xml" TYPE="valid">
+Contains a character reference to a C1 control character (partial line
+up), legal in both XML 1.0 and 1.1 (but for different reasons)
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="046.xml" ID="rmt-046" OUTPUT="out/046.xml" TYPE="invalid">
+Has a NEL character in element content whitespace; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="047.xml" ID="rmt-047" OUTPUT="out/047.xml" TYPE="valid">
+Has a NEL character in element content whitespace; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="048.xml" ID="rmt-048" OUTPUT="out/048.xml" TYPE="invalid">
+Has an LSEP character in element content whitespace; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="049.xml" ID="rmt-049" OUTPUT="out/049.xml" TYPE="valid">
+has an LSEP character in element content whitespace; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="050.xml" ID="rmt-050" OUTPUT="out/050.xml" TYPE="valid">
+Has element content whitespace containing a CR character that comes from
+a character reference in an internal entity. Because CR is in the
+S production, this is valid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="051.xml" ID="rmt-051" OUTPUT="out/051.xml" TYPE="valid">
+Has element content whitespace containing a CR character that comes from
+a character reference in an internal entity. Because CR is in the
+S production, this is valid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="052.xml" ID="rmt-052" OUTPUT="out/052.xml" TYPE="invalid">
+Has element content whitespace containing a NEL character that comes from
+a character reference in an internal entity. Because NEL is not in the
+S production (even though real NELs are converted to LF on input),
+this is invalid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="053.xml" ID="rmt-053" OUTPUT="out/053.xml" TYPE="invalid">
+Has element content whitespace containing a NEL character that comes from
+a character reference in an internal entity. Because NEL is not in the
+S production (even though real NELs are converted to LF on input),
+this is invalid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="4.3.2" URI="054.xml" ID="rmt-054" OUTPUT="out/054.xml" TYPE="valid">
+Contains a character reference to a C0 control character (form-feed)
+in an entity value. This will be legal (in XML 1.1) when the entity
+declaration is parsed, but what about when it is used? According to
+the grammar in the CR spec, it should be illegal (because the
+replacement text must match "content"), but this is probably not
+intended. This will be fixed in the PR version.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="055.xml" ID="rmt-055" TYPE="error">
+Has a Latin-1 NEL in the XML declaration (to be made an error in PR)
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="056.xml" ID="rmt-056" TYPE="error">
+Has a UTF-8 NEL in the XML declaration (to be made an error in PR)
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="057.xml" ID="rmt-057" TYPE="error">
+Has a UTF-8 LSEP in the XML declaration (to be made an error in PR)
+</TEST>
+
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xmlconf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xmlconf.xml
new file mode 100644
index 0000000000..af0a3b5fa1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/eduni/xml-1.1/xmlconf.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+
+<!-- Richard Tobin's XML 1.1 test suite.
+ Copyright Richard Tobin, HCRC February 2003.
+ May be freely redistributed provided copyright notice is retained.
+ -->
+
+<?xml-stylesheet href="xmlconformance.xsl" type="text/xsl"?>
+
+<!DOCTYPE TESTSUITE SYSTEM "testcases.dtd" [
+ <!ENTITY eduni-xml11 SYSTEM "xml11.xml">
+]>
+
+<TESTSUITE PROFILE="Richard Tobin's XML 1.1 test suite 13 Feb 2003">
+ &eduni-xml11;
+</TESTSUITE>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Entries
new file mode 100644
index 0000000000..2ca1cb0db5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Entries
@@ -0,0 +1,4 @@
+/a_oasis-logo.gif/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/committee.css/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/top3.jpe/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Repository
new file mode 100644
index 0000000000..88b76010b4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/files
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/a_oasis-logo.gif b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/a_oasis-logo.gif
new file mode 100644
index 0000000000..320150647c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/a_oasis-logo.gif
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/committee.css b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/committee.css
new file mode 100644
index 0000000000..1bf8e066e5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/committee.css
@@ -0,0 +1,63 @@
+P {
+ FONT-FAMILY: Times New Roman, Times, serif; FONT-SIZE: 12pt; MARGIN-LEFT: 1pc; TEXT-ALIGN: justify
+}
+H1 {
+ COLOR: #000066; FONT-FAMILY: "Trebuchet MS", Helvetica, Arial, sans-serif; FONT-SIZE: 24pt; FONT-WEIGHT: bold; TEXT-ALIGN: center; TEXT-TRANSFORM: uppercase
+}
+H2 {
+ COLOR: #000066; FONT-FAMILY: "Trebuchet MS", Helvetica, Arial, sans-serif; TEXT-TRANSFORM: capitalize
+}
+H3 {
+ COLOR: #000066; FONT-FAMILY: "Trebuchet MS", Helvetica, Arial, sans-serif; TEXT-TRANSFORM: capitalize
+}
+A {
+ COLOR: blue; FONT-WEIGHT: bold
+}
+A:visited {
+ COLOR: maroon
+}
+A:active {
+ BACKGROUND-COLOR: blue; COLOR: white
+}
+A:hover {
+ BACKGROUND-COLOR: purple; COLOR: white
+}
+BODY {
+ BACKGROUND-COLOR: white; MARGIN-LEFT: 1pc; MARGIN-RIGHT: 1pc
+}
+.topbox {
+ BACKGROUND-COLOR: #cccccc; BORDER-BOTTOM: black thin; BORDER-LEFT: black thin; BORDER-RIGHT: black thin; BORDER-TOP: #000000 thin; COLOR: #000000; FONT-FAMILY: sans-serif; FONT-SIZE: 10pt; FONT-WEIGHT: bold; MARGIN-LEFT: 2%; MARGIN-RIGHT: 2%; PADDING-BOTTOM: 5px; PADDING-TOP: 5px; TEXT-ALIGN: right
+}
+.bottom {
+ BACKGROUND-COLOR: #eeeeee; BORDER-BOTTOM: thin; BORDER-LEFT: thin; BORDER-RIGHT: thin; BORDER-TOP: thin; FONT-FAMILY: sans-serif; FONT-SIZE: 10pt; MARGIN-LEFT: 0%; MARGIN-RIGHT: 0%; PADDING-LEFT: 3pc
+}
+H4 {
+ COLOR: #0066CC; FONT-FAMILY: "Trebuchet MS", Helvetica, Arial, sans-serif; TEXT-TRANSFORM: capitalize
+}
+OL LI {
+ LIST-STYLE: lower-roman
+}
+UL LI {
+ LIST-STYLE: square
+}
+.main {
+ BACKGROUND-COLOR: #6699ff; BORDER-BOTTOM: black thin dotted; BORDER-LEFT: black thin dotted; BORDER-RIGHT: black thin dotted; BORDER-TOP: #000000 thin dotted; COLOR: #eeeeee; FONT-FAMILY: Verdana, Helvetica, Arial, sans-serif; FONT-SIZE: 24pt; FONT-WEIGHT: bold; MARGIN-LEFT: 4%; MARGIN-RIGHT: 4%
+}
+H5 {
+ COLOR: #000066; FONT-FAMILY: "Trebuchet MS", Helvetica, Arial, sans-serif; TEXT-TRANSFORM: capitalize
+}
+.purple {
+ COLOR: #6633ff
+}
+OL LI LI {
+ LIST-STYLE: lower-alpha
+}
+UL LI LI {
+ LIST-STYLE: circle
+}
+.membersonly {
+ BACKGROUND-COLOR: #ccccff; BORDER-BOTTOM: thin solid; BORDER-LEFT: solid; BORDER-RIGHT: solid; BORDER-TOP: thin solid; COLOR: blue; FONT-FAMILY: sans-serif; FONT-WEIGHT: bold
+}
+.public {
+ COLOR: #aaaaff; FONT-WEIGHT: bold
+}
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/top3.jpe b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/top3.jpe
new file mode 100644
index 0000000000..37185800cb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/files/top3.jpe
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/finalCatalog.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/finalCatalog.xml
new file mode 100644
index 0000000000..adf39bac55
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/finalCatalog.xml
@@ -0,0 +1,8741 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)conformance.xml 1.1 98/12/20
+ Original version copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+ Modifications copyright 2001 by OASIS.
+-->
+<?xml-stylesheet href="xmlconformance.xsl" type="text/xsl"?>
+<!DOCTYPE TESTSUITE SYSTEM "testcases.dtd" [
+<!-- Sun-written testcases --><!ENTITY sun-valid SYSTEM "sun/sun-valid.xml">
+<!ENTITY sun-invalid SYSTEM "sun/sun-invalid.xml">
+<!ENTITY sun-not-wf SYSTEM "sun/sun-not-wf.xml">
+<!ENTITY sun-error SYSTEM "sun/sun-error.xml">
+<!-- James Clark "XMLTEST" --><!ENTITY jclark-xmltest SYSTEM "xmltest/xmltest.xml">
+<!-- Fuji Xerox "Japanese Documents" --><!ENTITY xerox-japanese SYSTEM "japanese/japanese.xml">
+<!-- NIST/OASIS test suite --><!ENTITY nist-oasis SYSTEM "oasis/oasis.xml">
+<!-- IBM tests --><!ENTITY ibm-invalid SYSTEM "ibm/ibm_oasis_invalid.xml">
+<!ENTITY ibm-not-wf SYSTEM "ibm/ibm_oasis_not-wf.xml">
+<!ENTITY ibm-valid SYSTEM "ibm/ibm_oasis_valid.xml">
+<!ENTITY ibm-xml1.1-invalid SYSTEM "ibm/xml-1.1/ibm_invalid.xml">
+<!ENTITY ibm-xml1.1-not-wf SYSTEM "ibm/xml-1.1/ibm_not-wf.xml">
+<!ENTITY ibm-xml1.1-valid SYSTEM "ibm/xml-1.1/ibm_valid.xml">
+<!-- Edinburgh University tests --><!ENTITY eduni-errata2e SYSTEM "eduni/errata-2e/errata2e.xml">
+<!ENTITY eduni-xml11 SYSTEM "eduni/xml-1.1/xml11.xml">
+<!ENTITY eduni-ns10 SYSTEM "eduni/namespaces/1.0/rmt-ns10.xml">
+<!ENTITY eduni-ns11 SYSTEM "eduni/namespaces/1.1/rmt-ns11.xml">
+<!ENTITY eduni-errata3e SYSTEM "eduni/errata-3e/errata3e.xml">
+<!ENTITY eduni-nse SYSTEM "eduni/namespaces/errata-1e/errata1e.xml">
+]>
+<TESTSUITE PROFILE="XML 1.0 (2nd edition) W3C Conformance Test Suite, 6 October 2000">
+<TESTCASES PROFILE="James Clark XML 1.0 Tests" xml:base="xmltest/">
+
+<!--
+ @(#)xmltest.xml 1.12 99/02/12
+ Copyright 1998-1999 by Sun Microsystems, Inc.
+ All Rights Reserved.
+-->
+
+<TESTCASES PROFILE="James Clark XMLTEST cases, 18-Nov-1998">
+
+<!-- Start: not-wf/sa -->
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-001" URI="not-wf/sa/001.xml" SECTIONS="3.1 [41]">
+ Attribute values must start with attribute names, not "?". </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-002" URI="not-wf/sa/002.xml" SECTIONS="2.3 [4]">
+ Names may not start with "."; it's not a Letter. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-003" URI="not-wf/sa/003.xml" SECTIONS="2.6 [16]">
+ Processing Instruction target name is required.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-004" URI="not-wf/sa/004.xml" SECTIONS="2.6 [16]">
+ SGML-ism: processing instructions end in '?&gt;' not '&gt;'. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-005" URI="not-wf/sa/005.xml" SECTIONS="2.6 [16]">
+ Processing instructions end in '?&gt;' not '?'. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-006" URI="not-wf/sa/006.xml" SECTIONS="2.5 [16]">
+ XML comments may not contain "--" </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-007" URI="not-wf/sa/007.xml" SECTIONS="4.1 [68]">
+ General entity references have no whitespace after the
+ entity name and before the semicolon. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-008" URI="not-wf/sa/008.xml" SECTIONS="2.3 [5]">
+ Entity references must include names, which don't begin
+ with '.' (it's not a Letter or other name start character). </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-009" URI="not-wf/sa/009.xml" SECTIONS="4.1 [66]">
+ Character references may have only decimal or numeric strings.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-010" URI="not-wf/sa/010.xml" SECTIONS="4.1 [68]">
+ Ampersand may only appear as part of a general entity reference.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-011" URI="not-wf/sa/011.xml" SECTIONS="3.1 [41]">
+ SGML-ism: attribute values must be explicitly assigned a
+ value, it can't act as a boolean toggle. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-012" URI="not-wf/sa/012.xml" SECTIONS="2.3 [10]">
+ SGML-ism: attribute values must be quoted in all cases. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-013" URI="not-wf/sa/013.xml" SECTIONS="2.3 [10]">
+ The quotes on both ends of an attribute value must match. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-014" URI="not-wf/sa/014.xml" SECTIONS="2.3 [10]">
+ Attribute values may not contain literal '&lt;' characters. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-015" URI="not-wf/sa/015.xml" SECTIONS="3.1 [41]">
+ Attribute values need a value, not just an equals sign. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-016" URI="not-wf/sa/016.xml" SECTIONS="3.1 [41]">
+ Attribute values need an associated name.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-017" URI="not-wf/sa/017.xml" SECTIONS="2.7 [18]">
+ CDATA sections need a terminating ']]&gt;'. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-018" URI="not-wf/sa/018.xml" SECTIONS="2.7 [19]">
+ CDATA sections begin with a literal '&lt;![CDATA[', no space.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-019" URI="not-wf/sa/019.xml" SECTIONS="3.1 [42]">
+ End tags may not be abbreviated as '&lt;/&gt;'.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-020" URI="not-wf/sa/020.xml" SECTIONS="2.3 [10]">
+ Attribute values may not contain literal '&amp;'
+ characters except as part of an entity reference. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-021" URI="not-wf/sa/021.xml" SECTIONS="2.3 [10]">
+ Attribute values may not contain literal '&amp;'
+ characters except as part of an entity reference. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-022" URI="not-wf/sa/022.xml" SECTIONS="4.1 [66]">
+ Character references end with semicolons, always!</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-023" URI="not-wf/sa/023.xml" SECTIONS="2.3 [5]">
+ Digits are not valid name start characters. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-024" URI="not-wf/sa/024.xml" SECTIONS="2.3 [5]">
+ Digits are not valid name start characters. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-025" URI="not-wf/sa/025.xml" SECTIONS="2.4 [14]">
+ Text may not contain a literal ']]&gt;' sequence. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-026" URI="not-wf/sa/026.xml" SECTIONS="2.4 [14]">
+ Text may not contain a literal ']]&gt;' sequence. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-027" URI="not-wf/sa/027.xml" SECTIONS="2.5 [15]">
+ Comments must be terminated with "--&gt;".</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-028" URI="not-wf/sa/028.xml" SECTIONS="2.6 [16]">
+ Processing instructions must end with '?&gt;'. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-029" URI="not-wf/sa/029.xml" SECTIONS="2.4 [14]">
+ Text may not contain a literal ']]&gt;' sequence. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-030" URI="not-wf/sa/030.xml" SECTIONS="2.2 [2]">
+ A form feed is not a legal XML character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-031" URI="not-wf/sa/031.xml" SECTIONS="2.2 [2]">
+ A form feed is not a legal XML character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-032" URI="not-wf/sa/032.xml" SECTIONS="2.2 [2]">
+ A form feed is not a legal XML character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-033" URI="not-wf/sa/033.xml" SECTIONS="2.2 [2]">
+ An ESC (octal 033) is not a legal XML character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-034" URI="not-wf/sa/034.xml" SECTIONS="2.2 [2]">
+ A form feed is not a legal XML character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-035" URI="not-wf/sa/035.xml" SECTIONS="3.1 [43]">
+ The '&lt;' character is a markup delimiter and must
+ start an element, CDATA section, PI, or comment. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-036" URI="not-wf/sa/036.xml" SECTIONS="2.8 [27]">
+ Text may not appear after the root element. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-037" URI="not-wf/sa/037.xml" SECTIONS="2.8 [27]">
+ Character references may not appear after the root element. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-038" URI="not-wf/sa/038.xml" SECTIONS="3.1">
+ Tests the "Unique Att Spec" WF constraint by providing
+ multiple values for an attribute.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-039" URI="not-wf/sa/039.xml" SECTIONS="3">
+ Tests the Element Type Match WFC - end tag name must
+ match start tag name.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-040" URI="not-wf/sa/040.xml" SECTIONS="2.8 [27]">
+ Provides two document elements.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-041" URI="not-wf/sa/041.xml" SECTIONS="2.8 [27]">
+ Provides two document elements.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-042" URI="not-wf/sa/042.xml" SECTIONS="3.1 [42]">
+ Invalid End Tag </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-043" URI="not-wf/sa/043.xml" SECTIONS="2.8 [27]">
+ Provides #PCDATA text after the document element. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-044" URI="not-wf/sa/044.xml" SECTIONS="2.8 [27]">
+ Provides two document elements.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-045" URI="not-wf/sa/045.xml" SECTIONS="3.1 [44]">
+ Invalid Empty Element Tag </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-046" URI="not-wf/sa/046.xml" SECTIONS="3.1 [40]">
+ This start (or empty element) tag was not terminated correctly. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-047" URI="not-wf/sa/047.xml" SECTIONS="3.1 [44]">
+ Invalid empty element tag invalid whitespace </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-048" URI="not-wf/sa/048.xml" SECTIONS="2.8 [27]">
+ Provides a CDATA section after the root element.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-049" URI="not-wf/sa/049.xml" SECTIONS="3.1 [40]">
+ Missing start tag </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-050" URI="not-wf/sa/050.xml" SECTIONS="2.1 [1]">
+ Empty document, with no root element. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-051" URI="not-wf/sa/051.xml" SECTIONS="2.7 [18]">
+ CDATA is invalid at top level of document.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-052" URI="not-wf/sa/052.xml" SECTIONS="4.1 [66]">
+ Invalid character reference. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-053" URI="not-wf/sa/053.xml" SECTIONS="3.1 [42]">
+ End tag does not match start tag. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-054" URI="not-wf/sa/054.xml" SECTIONS="4.2.2 [75]">
+ PUBLIC requires two literals.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-055" URI="not-wf/sa/055.xml" SECTIONS="2.8 [28]">
+ Invalid Document Type Definition format. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-056" URI="not-wf/sa/056.xml" SECTIONS="2.8 [28]">
+ Invalid Document Type Definition format - misplaced comment. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-057" URI="not-wf/sa/057.xml" SECTIONS="3.2 [45]">
+ This isn't SGML; comments can't exist in declarations. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-058" URI="not-wf/sa/058.xml" SECTIONS="3.3.1 [54]">
+ Invalid character , in ATTLIST enumeration </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-059" URI="not-wf/sa/059.xml" SECTIONS="3.3.1 [59]">
+ String literal must be in quotes. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-060" URI="not-wf/sa/060.xml" SECTIONS="3.3.1 [56]">
+ Invalid type NAME defined in ATTLIST.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-061" URI="not-wf/sa/061.xml" SECTIONS="4.2.2 [75]">
+ External entity declarations require whitespace between public
+ and system IDs.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-062" URI="not-wf/sa/062.xml" SECTIONS="4.2 [71]">
+ Entity declarations need space after the entity name. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-063" URI="not-wf/sa/063.xml" SECTIONS="2.8 [29]">
+ Conditional sections may only appear in the external
+ DTD subset. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-064" URI="not-wf/sa/064.xml" SECTIONS="3.3 [53]">
+ Space is required between attribute type and default values
+ in &lt;!ATTLIST...&gt; declarations. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-065" URI="not-wf/sa/065.xml" SECTIONS="3.3 [53]">
+ Space is required between attribute name and type
+ in &lt;!ATTLIST...&gt; declarations. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-066" URI="not-wf/sa/066.xml" SECTIONS="3.3 [52]">
+ Required whitespace is missing. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-067" URI="not-wf/sa/067.xml" SECTIONS="3.3 [53]">
+ Space is required between attribute type and default values
+ in &lt;!ATTLIST...&gt; declarations. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-068" URI="not-wf/sa/068.xml" SECTIONS="3.3.1 [58]">
+ Space is required between NOTATION keyword and list of
+ enumerated choices in &lt;!ATTLIST...&gt; declarations. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-069" URI="not-wf/sa/069.xml" SECTIONS="4.2.2 [76]">
+ Space is required before an NDATA entity annotation.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-070" URI="not-wf/sa/070.xml" SECTIONS="2.5 [16]">
+ XML comments may not contain "--" </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-071" URI="not-wf/sa/071.xml" SECTIONS="4.1 [68]">
+ ENTITY can't reference itself directly or indirectly.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-072" URI="not-wf/sa/072.xml" SECTIONS="4.1 [68]">
+ Undefined ENTITY foo. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-073" URI="not-wf/sa/073.xml" SECTIONS="4.1 [68]">
+ Undefined ENTITY f. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-074" URI="not-wf/sa/074.xml" SECTIONS="4.3.2">
+ Internal general parsed entities are only well formed if
+ they match the "content" production. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-075" URI="not-wf/sa/075.xml" SECTIONS="4.1 [68]">
+ ENTITY can't reference itself directly or indirectly. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-076" URI="not-wf/sa/076.xml" SECTIONS="4.1 [68]">
+ Undefined ENTITY foo. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-077" URI="not-wf/sa/077.xml" SECTIONS="41. [68]">
+ Undefined ENTITY bar. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-078" URI="not-wf/sa/078.xml" SECTIONS="4.1 [68]">
+ Undefined ENTITY foo. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-079" URI="not-wf/sa/079.xml" SECTIONS="4.1 [68]">
+ ENTITY can't reference itself directly or indirectly. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-080" URI="not-wf/sa/080.xml" SECTIONS="4.1 [68]">
+ ENTITY can't reference itself directly or indirectly. </TEST>
+<TEST TYPE="not-wf" ENTITIES="general" ID="not-wf-sa-081" URI="not-wf/sa/081.xml" SECTIONS="3.1">
+ This tests the <EM>No External Entity References</EM> WFC,
+ since the entity is referred to within an attribute. </TEST>
+<TEST TYPE="not-wf" ENTITIES="general" ID="not-wf-sa-082" URI="not-wf/sa/082.xml" SECTIONS="3.1">
+ This tests the <EM>No External Entity References</EM> WFC,
+ since the entity is referred to within an attribute. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-083" URI="not-wf/sa/083.xml" SECTIONS="4.2.2 [76]">
+ Undefined NOTATION n. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-084" URI="not-wf/sa/084.xml" SECTIONS="4.1">
+ Tests the <EM>Parsed Entity</EM> WFC by referring to an
+ unparsed entity. (This precedes the error of not declaring
+ that entity's notation, which may be detected any time before
+ the DTD parsing is completed.) </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-085" URI="not-wf/sa/085.xml" SECTIONS="2.3 [13]">
+ Public IDs may not contain "[". </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-086" URI="not-wf/sa/086.xml" SECTIONS="2.3 [13]">
+ Public IDs may not contain "[". </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-087" URI="not-wf/sa/087.xml" SECTIONS="2.3 [13]">
+ Public IDs may not contain "[". </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-088" URI="not-wf/sa/088.xml" SECTIONS="2.3 [10]">
+ Attribute values are terminated by literal quote characters,
+ and any entity expansion is done afterwards. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-089" URI="not-wf/sa/089.xml" SECTIONS="4.2 [74]">
+ Parameter entities "are" always parsed; NDATA annotations
+ are not permitted.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-090" URI="not-wf/sa/090.xml" SECTIONS="2.3 [10]">
+ Attributes may not contain a literal "&lt;" character;
+ this one has one because of reference expansion. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-091" URI="not-wf/sa/091.xml" SECTIONS="4.2 [74]">
+ Parameter entities "are" always parsed; NDATA annotations
+ are not permitted.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-092" URI="not-wf/sa/092.xml" SECTIONS="4.5">
+ The replacement text of this entity has an illegal reference,
+ because the character reference is expanded immediately. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-093" URI="not-wf/sa/093.xml" SECTIONS="4.1 [66]">
+ Hexadecimal character references may not use the uppercase 'X'.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-094" URI="not-wf/sa/094.xml" SECTIONS="2.8 [24]">
+ Prolog VERSION must be lowercase. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-095" URI="not-wf/sa/095.xml" SECTIONS="2.8 [23]">
+ VersionInfo must come before EncodingDecl. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-096" URI="not-wf/sa/096.xml" SECTIONS="2.9 [32]">
+ Space is required before the standalone declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-097" URI="not-wf/sa/097.xml" SECTIONS="2.8 [24]">
+ Both quotes surrounding VersionNum must be the same. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-098" URI="not-wf/sa/098.xml" SECTIONS="2.8 [23]">
+ Only one "version=..." string may appear in an XML declaration.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-099" URI="not-wf/sa/099.xml" SECTIONS="2.8 [23]">
+ Only three pseudo-attributes are in the XML declaration,
+ and "valid=..." is not one of them. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-100" URI="not-wf/sa/100.xml" SECTIONS="2.9 [32]">
+ Only "yes" and "no" are permitted as values of "standalone". </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-101" URI="not-wf/sa/101.xml" SECTIONS="4.3.3 [81]">
+ Space is not permitted in an encoding name. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-102" URI="not-wf/sa/102.xml" SECTIONS="2.8 [26]">
+ Provides an illegal XML version number; spaces are illegal.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-103" URI="not-wf/sa/103.xml" SECTIONS="4.3.2">
+ End-tag required for element foo. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-104" URI="not-wf/sa/104.xml" SECTIONS="4.3.2">
+ Internal general parsed entities are only well formed if
+ they match the "content" production. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-105" URI="not-wf/sa/105.xml" SECTIONS="2.7 ">
+ Invalid placement of CDATA section. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-106" URI="not-wf/sa/106.xml" SECTIONS="4.2">
+ Invalid placement of entity declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-107" URI="not-wf/sa/107.xml" SECTIONS="2.8 [28]">
+ Invalid document type declaration. CDATA alone is invalid.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-108" URI="not-wf/sa/108.xml" SECTIONS="2.7 [19]">
+ No space in '&lt;![CDATA['.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-109" URI="not-wf/sa/109.xml" SECTIONS="4.2 [70]">
+ Tags invalid within EntityDecl. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-110" URI="not-wf/sa/110.xml" SECTIONS="4.1 [68]">
+ Entity reference must be in content of element. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-111" URI="not-wf/sa/111.xml" SECTIONS="3.1 [43]">
+ Entiry reference must be in content of element not Start-tag. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-112" URI="not-wf/sa/112.xml" SECTIONS="2.7 [19]">
+ CDATA sections start '&lt;![CDATA[', not '&lt;!cdata['.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-113" URI="not-wf/sa/113.xml" SECTIONS="2.3 [9]">
+ Parameter entity values must use valid reference syntax;
+ this reference is malformed.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-114" URI="not-wf/sa/114.xml" SECTIONS="2.3 [9]">
+ General entity values must use valid reference syntax;
+ this reference is malformed.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-115" URI="not-wf/sa/115.xml" SECTIONS="4.5">
+ The replacement text of this entity is an illegal character
+ reference, which must be rejected when it is parsed in the
+ context of an attribute value.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-116" URI="not-wf/sa/116.xml" SECTIONS="4.3.2">
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-117" URI="not-wf/sa/117.xml" SECTIONS="4.3.2">
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-118" URI="not-wf/sa/118.xml" SECTIONS="4.1 [68]">
+ Entity reference expansion is not recursive.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-119" URI="not-wf/sa/119.xml" SECTIONS="4.3.2">
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-120" URI="not-wf/sa/120.xml" SECTIONS="4.5">
+ Character references are expanded in the replacement text of
+ an internal entity, which is then parsed as usual. Accordingly,
+ &amp; must be doubly quoted - encoded either as <EM>&amp;amp;</EM>
+ or as <EM>&amp;#38;#38;</EM>. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-121" URI="not-wf/sa/121.xml" SECTIONS="4.1 [68]">
+ A name of an ENTITY was started with an invalid character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-122" URI="not-wf/sa/122.xml" SECTIONS="3.2.1 [47]">
+ Invalid syntax mixed connectors are used. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-123" URI="not-wf/sa/123.xml" SECTIONS="3.2.1 [48]">
+ Invalid syntax mismatched parenthesis. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-124" URI="not-wf/sa/124.xml" SECTIONS="3.2.2 [51]">
+ Invalid format of Mixed-content declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-125" URI="not-wf/sa/125.xml" SECTIONS="3.2.2 [51]">
+ Invalid syntax extra set of parenthesis not necessary. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-126" URI="not-wf/sa/126.xml" SECTIONS="3.2.2 [51]">
+ Invalid syntax Mixed-content must be defined as zero or more. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-127" URI="not-wf/sa/127.xml" SECTIONS="3.2.2 [51]">
+ Invalid syntax Mixed-content must be defined as zero or more. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-128" URI="not-wf/sa/128.xml" SECTIONS="2.7 [18]">
+ Invalid CDATA syntax. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-129" URI="not-wf/sa/129.xml" SECTIONS="3.2 [45]">
+ Invalid syntax for Element Type Declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-130" URI="not-wf/sa/130.xml" SECTIONS="3.2 [45]">
+ Invalid syntax for Element Type Declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-131" URI="not-wf/sa/131.xml" SECTIONS="3.2 [45]">
+ Invalid syntax for Element Type Declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-132" URI="not-wf/sa/132.xml" SECTIONS="3.2.1 [50]">
+ Invalid syntax mixed connectors used. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-133" URI="not-wf/sa/133.xml" SECTIONS="3.2.1">
+ Illegal whitespace before optional character causes syntax error. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-134" URI="not-wf/sa/134.xml" SECTIONS="3.2.1">
+ Illegal whitespace before optional character causes syntax error. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-135" URI="not-wf/sa/135.xml" SECTIONS="3.2.1 [47]">
+ Invalid character used as connector. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-136" URI="not-wf/sa/136.xml" SECTIONS="3.2 [45]">
+ Tag omission is invalid in XML. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-137" URI="not-wf/sa/137.xml" SECTIONS="3.2 [45]">
+ Space is required before a content model. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-138" URI="not-wf/sa/138.xml" SECTIONS="3.2.1 [48]">
+ Invalid syntax for content particle. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-139" URI="not-wf/sa/139.xml" SECTIONS="3.2.1 [46]">
+ The element-content model should not be empty. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-140" URI="not-wf/sa/140.xml" SECTIONS="2.3 [4]">
+ Character '&amp;#x309a;' is a CombiningChar, not a
+ Letter, and so may not begin a name.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-141" URI="not-wf/sa/141.xml" SECTIONS="2.3 [5]">
+ Character #x0E5C is not legal in XML names. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-142" URI="not-wf/sa/142.xml" SECTIONS="2.2 [2]">
+ Character #x0000 is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-143" URI="not-wf/sa/143.xml" SECTIONS="2.2 [2]">
+ Character #x001F is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-144" URI="not-wf/sa/144.xml" SECTIONS="2.2 [2]">
+ Character #xFFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-145" URI="not-wf/sa/145.xml" SECTIONS="2.2 [2]">
+ Character #xD800 is not legal anywhere in an XML document. (If it
+ appeared in a UTF-16 surrogate pair, it'd represent half of a UCS-4
+ character and so wouldn't really be in the document.) </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-146" URI="not-wf/sa/146.xml" SECTIONS="2.2 [2]">
+ Character references must also refer to legal XML characters;
+ #x00110000 is one more than the largest legal character.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-147" URI="not-wf/sa/147.xml" SECTIONS="2.8 [22]">
+ XML Declaration may not be preceded by whitespace.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-148" URI="not-wf/sa/148.xml" SECTIONS="2.8 [22]">
+ XML Declaration may not be preceded by comments or whitespace.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-149" URI="not-wf/sa/149.xml" SECTIONS="2.8 [28]">
+ XML Declaration may not be within a DTD.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-150" URI="not-wf/sa/150.xml" SECTIONS="3.1 [43]">
+ XML declarations may not be within element content. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-151" URI="not-wf/sa/151.xml" SECTIONS="2.8 [27]">
+ XML declarations may not follow document content.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-152" URI="not-wf/sa/152.xml" SECTIONS="2.8 [22]">
+ XML declarations must include the "version=..." string.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-153" URI="not-wf/sa/153.xml" SECTIONS="4.3.2">
+ Text declarations may not begin internal parsed entities;
+ they may only appear at the beginning of external parsed
+ (parameter or general) entities. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-154" URI="not-wf/sa/154.xml" SECTIONS="2.8 2.6 [23, 17]">
+ '&lt;?XML ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-155" URI="not-wf/sa/155.xml" SECTIONS="2.8 2.6 [23, 17]">
+ '&lt;?xmL ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-156" URI="not-wf/sa/156.xml" SECTIONS="2.8 2.6 [23, 17]">
+ '&lt;?xMl ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-157" URI="not-wf/sa/157.xml" SECTIONS="2.6 [17]">
+ '&lt;?xmL ...?&gt;' is not a legal processing instruction
+ target name. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-158" URI="not-wf/sa/158.xml" SECTIONS="3.3 [52]">
+ SGML-ism: "#NOTATION gif" can't have attributes. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-159" URI="not-wf/sa/159.xml" SECTIONS="2.3 [9]">
+ Uses '&amp;' unquoted in an entity declaration,
+ which is illegal syntax for an entity reference.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-160" URI="not-wf/sa/160.xml" SECTIONS="2.8">
+ Violates the <EM>PEs in Internal Subset</EM> WFC
+ by using a PE reference within a declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-161" URI="not-wf/sa/161.xml" SECTIONS="2.8">
+ Violates the <EM>PEs in Internal Subset</EM> WFC
+ by using a PE reference within a declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-162" URI="not-wf/sa/162.xml" SECTIONS="2.8">
+ Violates the <EM>PEs in Internal Subset</EM> WFC
+ by using a PE reference within a declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-163" URI="not-wf/sa/163.xml" SECTIONS="4.1 [69]">
+ Invalid placement of Parameter entity reference. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-164" URI="not-wf/sa/164.xml" SECTIONS="4.1 [69]">
+ Invalid placement of Parameter entity reference. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-165" URI="not-wf/sa/165.xml" SECTIONS="4.2 [72]">
+ Parameter entity declarations must have a space before
+ the '%'. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-166" URI="not-wf/sa/166.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-167" URI="not-wf/sa/167.xml" SECTIONS="2.2 [2]">
+ Character FFFE is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-168" URI="not-wf/sa/168.xml" SECTIONS="2.2 [2]">
+ An unpaired surrogate (D800) is not legal anywhere
+ in an XML document.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-169" URI="not-wf/sa/169.xml" SECTIONS="2.2 [2]">
+ An unpaired surrogate (DC00) is not legal anywhere
+ in an XML document.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-170" URI="not-wf/sa/170.xml" SECTIONS="2.2 [2]">
+ Four byte UTF-8 encodings can encode UCS-4 characters
+ which are beyond the range of legal XML characters
+ (and can't be expressed in Unicode surrogate pairs).
+ This document holds such a character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-171" URI="not-wf/sa/171.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-172" URI="not-wf/sa/172.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-173" URI="not-wf/sa/173.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-174" URI="not-wf/sa/174.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-175" URI="not-wf/sa/175.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-176" URI="not-wf/sa/176.xml" SECTIONS="3 [39]">
+ Start tags must have matching end tags.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-177" URI="not-wf/sa/177.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-178" URI="not-wf/sa/178.xml" SECTIONS="3.1 [41]">
+ Invalid syntax matching double quote is missing. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-179" URI="not-wf/sa/179.xml" SECTIONS="4.1 [66]">
+ Invalid syntax matching double quote is missing. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-180" URI="not-wf/sa/180.xml" SECTIONS="4.1">
+ The <EM>Entity Declared</EM> WFC requires entities to be declared
+ before they are used in an attribute list declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-181" URI="not-wf/sa/181.xml" SECTIONS="4.3.2">
+ Internal parsed entities must match the <EM>content</EM>
+ production to be well formed. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-182" URI="not-wf/sa/182.xml" SECTIONS="4.3.2">
+ Internal parsed entities must match the <EM>content</EM>
+ production to be well formed. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-183" URI="not-wf/sa/183.xml" SECTIONS="3.2.2 [51]">
+ Mixed content declarations may not include content particles.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-184" URI="not-wf/sa/184.xml" SECTIONS="3.2.2 [51]">
+ In mixed content models, element names must not be
+ parenthesized. </TEST>
+<TEST TYPE="not-wf" ENTITIES="parameter" ID="not-wf-sa-185" URI="not-wf/sa/185.xml" SECTIONS="4.1">
+ Tests the <EM>Entity Declared</EM> WFC.
+ <EM>Note:</EM> a nonvalidating parser is permitted not to report
+ this WFC violation, since it would need to read an external
+ parameter entity to distinguish it from a violation of
+ the <EM>Standalone Declaration</EM> VC.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-186" URI="not-wf/sa/186.xml" SECTIONS="3.1 [44]">
+ Whitespace is required between attribute/value pairs. </TEST>
+
+<!-- Start: not-wf/not-sa -->
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-001" URI="not-wf/not-sa/001.xml" SECTIONS="3.4 [62]">
+ Conditional sections must be properly terminated ("]&gt;" used
+ instead of "]]&gt;"). </TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-002" URI="not-wf/not-sa/002.xml" SECTIONS="2.6 [17]">
+ Processing instruction target names may not be "XML"
+ in any combination of cases. </TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-003" URI="not-wf/not-sa/003.xml" SECTIONS="3.4 [62]">
+ Conditional sections must be properly terminated ("]]&gt;" omitted). </TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-004" URI="not-wf/not-sa/004.xml" SECTIONS="3.4 [62]">
+ Conditional sections must be properly terminated ("]]&gt;" omitted). </TEST>
+<TEST TYPE="error" ENTITIES="both" ID="not-wf-not-sa-005" URI="not-wf/not-sa/005.xml" SECTIONS="4.1">
+ Tests the <EM>Entity Declared</EM> VC by referring to an
+ undefined parameter entity within an external entity.</TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-006" URI="not-wf/not-sa/006.xml" SECTIONS="3.4 [62]">
+ Conditional sections need a '[' after the INCLUDE or IGNORE. </TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-007" URI="not-wf/not-sa/007.xml" SECTIONS="4.3.2 [79]">
+ A &lt;!DOCTYPE ...&gt; declaration may not begin any external
+ entity; it's only found once, in the document entity.</TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-008" URI="not-wf/not-sa/008.xml" SECTIONS="4.1 [69]">
+ In DTDs, the '%' character must be part of a parameter
+ entity reference.</TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-009" URI="not-wf/not-sa/009.xml" SECTIONS="2.8">
+ This test violates WFC:PE Between Declarations in Production 28a.
+ The last character of a markup declaration is not contained in the same
+ parameter-entity text replacement.</TEST>
+<!-- Start: not-wf/ext-sa -->
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-ext-sa-001" URI="not-wf/ext-sa/001.xml" SECTIONS="4.1">
+ Tests the <EM>No Recursion</EM> WFC by having an external general
+ entity be self-recursive.</TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-ext-sa-002" URI="not-wf/ext-sa/002.xml" SECTIONS="4.3.1 4.3.2 [77, 78]">
+ External entities have "text declarations", which do
+ not permit the "standalone=..." attribute that's allowed
+ in XML declarations.</TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-ext-sa-003" URI="not-wf/ext-sa/003.xml" SECTIONS="2.6 [17]">
+ Only one text declaration is permitted; a second one
+ looks like an illegal processing instruction (target names
+ of "xml" in any case are not allowed). </TEST>
+
+
+<!-- Start: invalid/ -->
+
+<TEST TYPE="invalid" ENTITIES="both" ID="invalid--002" URI="invalid/002.xml" SECTIONS="3.2.1">
+ Tests the "Proper Group/PE Nesting" validity constraint by
+ fragmenting a content model between two parameter entities.</TEST>
+<TEST TYPE="invalid" ENTITIES="both" ID="invalid--005" URI="invalid/005.xml" SECTIONS="2.8">
+ Tests the "Proper Declaration/PE Nesting" validity constraint by
+ fragmenting an element declaration between two parameter entities.</TEST>
+<TEST TYPE="invalid" ENTITIES="both" ID="invalid--006" URI="invalid/006.xml" SECTIONS="2.8">
+ Tests the "Proper Declaration/PE Nesting" validity constraint by
+ fragmenting an element declaration between two parameter entities.</TEST>
+<TEST TYPE="invalid" ENTITIES="both" ID="invalid-not-sa-022" URI="invalid/not-sa/022.xml" SECTIONS="3.4 [62]" OUTPUT="invalid/not-sa/out/022.xml">
+ Test the "Proper Conditional Section/ PE Nesting" validity constraint. </TEST>
+
+<!-- Start: valid/sa -->
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-001" URI="valid/sa/001.xml" SECTIONS="3.2.2 [51]" OUTPUT="valid/sa/out/001.xml">
+ Test demonstrates an Element Type Declaration with Mixed Content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-002" URI="valid/sa/002.xml" SECTIONS="3.1 [40]" OUTPUT="valid/sa/out/002.xml">
+ Test demonstrates that whitespace is permitted after the tag name in a Start-tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-003" URI="valid/sa/003.xml" SECTIONS="3.1 [42]" OUTPUT="valid/sa/out/003.xml">
+ Test demonstrates that whitespace is permitted after the tag name in an End-tag.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-004" URI="valid/sa/004.xml" SECTIONS="3.1 [41]" OUTPUT="valid/sa/out/004.xml">
+ Test demonstrates a valid attribute specification within a Start-tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-005" URI="valid/sa/005.xml" SECTIONS="3.1 [40]" OUTPUT="valid/sa/out/005.xml">
+ Test demonstrates a valid attribute specification within a Start-tag that
+contains whitespace on both sides of the equal sign. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-006" URI="valid/sa/006.xml" SECTIONS="3.1 [41]" OUTPUT="valid/sa/out/006.xml">
+ Test demonstrates that the AttValue within a Start-tag can use a single quote as a delimter. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-007" URI="valid/sa/007.xml" SECTIONS="3.1 4.6 [43]" OUTPUT="valid/sa/out/007.xml">
+ Test demonstrates numeric character references can be used for element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-008" URI="valid/sa/008.xml" SECTIONS="2.4 3.1 [43]" OUTPUT="valid/sa/out/008.xml">
+ Test demonstrates character references can be used for element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-009" URI="valid/sa/009.xml" SECTIONS="2.3 3.1 [43]" OUTPUT="valid/sa/out/009.xml">
+ Test demonstrates that PubidChar can be used for element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-010" URI="valid/sa/010.xml" SECTIONS="3.1 [40]" OUTPUT="valid/sa/out/010.xml">
+ Test demonstrates that whitespace is valid after the Attribute in a Start-tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-011" URI="valid/sa/011.xml" SECTIONS="3.1 [40]" OUTPUT="valid/sa/out/011.xml">
+ Test demonstrates mutliple Attibutes within the Start-tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-012" URI="valid/sa/012.xml" SECTIONS="2.3 [4]" OUTPUT="valid/sa/out/012.xml" NAMESPACE="no">
+ Uses a legal XML 1.0 name consisting of a single colon
+ character (disallowed by the latest XML Namespaces draft).</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-013" URI="valid/sa/013.xml" SECTIONS="2.3 3.1 [13] [40]" OUTPUT="valid/sa/out/013.xml">
+ Test demonstrates that the Attribute in a Start-tag can consist of numerals along with special characters. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-014" URI="valid/sa/014.xml" SECTIONS="2.3 3.1 [13] [40]" OUTPUT="valid/sa/out/014.xml">
+ Test demonstrates that all lower case letters are valid for the Attribute in a Start-tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-015" URI="valid/sa/015.xml" SECTIONS="2.3 3.1 [13] [40]" OUTPUT="valid/sa/out/015.xml">
+ Test demonstrates that all upper case letters are valid for the Attribute in a Start-tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-016" URI="valid/sa/016.xml" SECTIONS="2.6 3.1 [16] [43]" OUTPUT="valid/sa/out/016.xml">
+ Test demonstrates that Processing Instructions are valid element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-017" URI="valid/sa/017.xml" SECTIONS="2.6 3.1 [16] [43]" OUTPUT="valid/sa/out/017.xml">
+ Test demonstrates that Processing Instructions are valid element content and there can be more than one. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-018" URI="valid/sa/018.xml" SECTIONS="2.7 3.1 [18] [43]" OUTPUT="valid/sa/out/018.xml">
+ Test demonstrates that CDATA sections are valid element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-019" URI="valid/sa/019.xml" SECTIONS="2.7 3.1 [18] [43]" OUTPUT="valid/sa/out/019.xml">
+ Test demonstrates that CDATA sections are valid element content and that
+ampersands may occur in their literal form. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-020" URI="valid/sa/020.xml" SECTIONS="2.7 3.1 [18] [43]" OUTPUT="valid/sa/out/020.xml">
+ Test demonstractes that CDATA sections are valid element content and that
+everyting between the CDStart and CDEnd is recognized as character data not markup. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-021" URI="valid/sa/021.xml" SECTIONS="2.5 3.1 [15] [43]" OUTPUT="valid/sa/out/021.xml">
+ Test demonstrates that comments are valid element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-022" URI="valid/sa/022.xml" SECTIONS="2.5 3.1 [15] [43]" OUTPUT="valid/sa/out/022.xml">
+ Test demonstrates that comments are valid element content and that all characters before the double-hypen right angle combination are considered part of thecomment. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-023" URI="valid/sa/023.xml" SECTIONS="3.1 [43]" OUTPUT="valid/sa/out/023.xml">
+ Test demonstrates that Entity References are valid element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-024" URI="valid/sa/024.xml" SECTIONS="3.1 4.1 [43] [66]" OUTPUT="valid/sa/out/024.xml">
+ Test demonstrates that Entity References are valid element content and also demonstrates a valid Entity Declaration. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-025" URI="valid/sa/025.xml" SECTIONS="3.2 [46]" OUTPUT="valid/sa/out/025.xml">
+ Test demonstrates an Element Type Declaration and that the contentspec can be of mixed content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-026" URI="valid/sa/026.xml" SECTIONS="3.2 [46]" OUTPUT="valid/sa/out/026.xml">
+ Test demonstrates an Element Type Declaration and that EMPTY is a valid contentspec. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-027" URI="valid/sa/027.xml" SECTIONS="3.2 [46]" OUTPUT="valid/sa/out/027.xml">
+ Test demonstrates an Element Type Declaration and that ANY is a valid contenspec. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-028" URI="valid/sa/028.xml" SECTIONS="2.8 [24]" OUTPUT="valid/sa/out/028.xml">
+ Test demonstrates a valid prolog that uses double quotes as delimeters around the VersionNum. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-029" URI="valid/sa/029.xml" SECTIONS="2.8 [24]" OUTPUT="valid/sa/out/029.xml">
+ Test demonstrates a valid prolog that uses single quotes as delimters around the VersionNum. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-030" URI="valid/sa/030.xml" SECTIONS="2.8 [25]" OUTPUT="valid/sa/out/030.xml">
+ Test demonstrates a valid prolog that contains whitespace on both sides of the equal sign in the VersionInfo. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-031" URI="valid/sa/031.xml" SECTIONS="4.3.3 [80]" OUTPUT="valid/sa/out/031.xml">
+ Test demonstrates a valid EncodingDecl within the prolog. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-032" URI="valid/sa/032.xml" SECTIONS="2.9 [32]" OUTPUT="valid/sa/out/032.xml">
+ Test demonstrates a valid SDDecl within the prolog. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-033" URI="valid/sa/033.xml" SECTIONS="2.8 [23]" OUTPUT="valid/sa/out/033.xml">
+ Test demonstrates that both a EncodingDecl and SDDecl are valid within the prolog. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-034" URI="valid/sa/034.xml" SECTIONS="3.1 [44]" OUTPUT="valid/sa/out/034.xml">
+ Test demonstrates the correct syntax for an Empty element tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-035" URI="valid/sa/035.xml" SECTIONS="3.1 [44]" OUTPUT="valid/sa/out/035.xml">
+ Test demonstrates that whitespace is permissible after the name in an Empty element tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-036" URI="valid/sa/036.xml" SECTIONS="2.6 [16]" OUTPUT="valid/sa/out/036.xml">
+ Test demonstrates a valid processing instruction. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-037" URI="valid/sa/037.xml" SECTIONS="2.6 [15]" OUTPUT="valid/sa/out/037.xml">
+ Test demonstrates a valid comment and that it may appear anywhere in the document including at the end. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-038" URI="valid/sa/038.xml" SECTIONS="2.6 [15]" OUTPUT="valid/sa/out/038.xml">
+ Test demonstrates a valid comment and that it may appear anywhere in the document including the beginning. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-039" URI="valid/sa/039.xml" SECTIONS="2.6 [16]" OUTPUT="valid/sa/out/039.xml">
+ Test demonstrates a valid processing instruction and that it may appear at the beginning of the document. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-040" URI="valid/sa/040.xml" SECTIONS="3.3 3.3.1 [52] [54]" OUTPUT="valid/sa/out/040.xml">
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-041" URI="valid/sa/041.xml" SECTIONS="3.3.1 4.1 [54] [66]" OUTPUT="valid/sa/out/041.xml">
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-042" URI="valid/sa/042.xml" SECTIONS="3.3.1 4.1 [54] [66]" OUTPUT="valid/sa/out/042.xml">
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. The test also shows that the leading zeros in the character reference are ignored. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-043" URI="valid/sa/043.xml" SECTIONS="3.3" OUTPUT="valid/sa/out/043.xml">
+ An element's attributes may be declared before its content
+ model; and attribute values may contain newlines. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-044" URI="valid/sa/044.xml" SECTIONS="3.1 [44]" OUTPUT="valid/sa/out/044.xml">
+ Test demonstrates that the empty-element tag must be use for an elements that are declared EMPTY. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-045" URI="valid/sa/045.xml" SECTIONS="3.3 [52]" OUTPUT="valid/sa/out/045.xml">
+ Tests whether more than one definition can be provided for the same attribute of a given element type with the first declaration being binding. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-046" URI="valid/sa/046.xml" SECTIONS="3.3 [52]" OUTPUT="valid/sa/out/046.xml">
+ Test demonstrates that when more than one AttlistDecl is provided for a given element type, the contents of all those provided are merged. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-047" URI="valid/sa/047.xml" SECTIONS="3.1 [43]" OUTPUT="valid/sa/out/047.xml">
+ Test demonstrates that extra whitespace is normalized into single space character. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-048" URI="valid/sa/048.xml" SECTIONS="2.4 3.1 [14] [43]" OUTPUT="valid/sa/out/048.xml">
+ Test demonstrates that character data is valid element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-049" URI="valid/sa/049.xml" SECTIONS="2.2 [2]" OUTPUT="valid/sa/out/049.xml">
+ Test demonstrates that characters outside of normal ascii range can be used as element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-050" URI="valid/sa/050.xml" SECTIONS="2.2 [2]" OUTPUT="valid/sa/out/050.xml">
+ Test demonstrates that characters outside of normal ascii range can be used as element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-051" URI="valid/sa/051.xml" SECTIONS="2.2 [2]" OUTPUT="valid/sa/out/051.xml">
+ The document is encoded in UTF-16 and uses some name
+ characters well outside of the normal ASCII range.
+ </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-052" URI="valid/sa/052.xml" SECTIONS="2.2 [2]" OUTPUT="valid/sa/out/052.xml">
+ The document is encoded in UTF-8 and the text inside the
+ root element uses two non-ASCII characters, encoded in UTF-8
+ and each of which expands to a Unicode surrogate pair.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-053" URI="valid/sa/053.xml" SECTIONS="4.4.2" OUTPUT="valid/sa/out/053.xml">
+ Tests inclusion of a well-formed internal entity, which
+ holds an element required by the content model.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-054" URI="valid/sa/054.xml" SECTIONS="3.1 [40] [42]" OUTPUT="valid/sa/out/054.xml">
+ Test demonstrates that extra whitespace within Start-tags and End-tags are nomalized into single spaces. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-055" URI="valid/sa/055.xml" SECTIONS="2.6 2.10 [16]" OUTPUT="valid/sa/out/055.xml">
+ Test demonstrates that extra whitespace within a processing instruction willnormalized into s single space character. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-056" URI="valid/sa/056.xml" SECTIONS="3.3.1 4.1 [54] [66]" OUTPUT="valid/sa/out/056.xml">
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. The test also shows that the leading zeros in the character reference are ignored. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-057" URI="valid/sa/057.xml" SECTIONS="3.2.1 [47]" OUTPUT="valid/sa/out/057.xml">
+ Test demonstrates an element content model whose element can occur zero or more times. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-058" URI="valid/sa/058.xml" SECTIONS="3.3.3" OUTPUT="valid/sa/out/058.xml">
+ Test demonstrates that extra whitespace be normalized into a single space character in an attribute of type NMTOKENS. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-059" URI="valid/sa/059.xml" SECTIONS="3.2 3.3 [46] [53]" OUTPUT="valid/sa/out/059.xml">
+ Test demonstrates an Element Type Declaration that uses the contentspec of EMPTY. The element cannot have any contents and must always appear as an empty element in the document. The test also shows an Attribute-list declaration with multiple AttDef's. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-060" URI="valid/sa/060.xml" SECTIONS="4.1 [66]" OUTPUT="valid/sa/out/060.xml">
+ Test demonstrates the use of decimal Character References within element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-061" URI="valid/sa/061.xml" SECTIONS="4.1 [66]" OUTPUT="valid/sa/out/061.xml">
+ Test demonstrates the use of decimal Character References within element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-062" URI="valid/sa/062.xml" SECTIONS="4.1 [66]" OUTPUT="valid/sa/out/062.xml">
+ Test demonstrates the use of hexadecimal Character References within element. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-063" URI="valid/sa/063.xml" SECTIONS="2.3 [5]" OUTPUT="valid/sa/out/063.xml">
+ The document is encoded in UTF-8 and the name of the
+ root element type uses non-ASCII characters. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-064" URI="valid/sa/064.xml" SECTIONS="4.1 [66]" OUTPUT="valid/sa/out/064.xml">
+ Tests in-line handling of two legal character references, which
+ each expand to a Unicode surrogate pair.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-065" URI="valid/sa/065.xml" SECTIONS="4.5" OUTPUT="valid/sa/out/065.xml">
+ Tests ability to define an internal entity which can't
+ legally be expanded (contains an unquoted <B>&lt;</B>).</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-066" URI="valid/sa/066.xml" SECTIONS="4.1 [66]" OUTPUT="valid/sa/out/066.xml">
+ Expands a CDATA attribute with a character reference.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-067" URI="valid/sa/067.xml" SECTIONS="4.1 [66]" OUTPUT="valid/sa/out/067.xml">
+ Test demonstrates the use of decimal character references within element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-068" URI="valid/sa/068.xml" SECTIONS="2.11, 4.5" OUTPUT="valid/sa/out/068.xml">
+ Tests definition of an internal entity holding a carriage return character
+ reference, which must not be normalized before reporting to the application. Line
+ break normalization only occurs when parsing external parsed entities.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-069" URI="valid/sa/069.xml" SECTIONS="4.7" OUTPUT="valid/sa/out/069.xml">
+ Verifies that an XML parser will parse a NOTATION
+ declaration; the output phase of this test ensures that
+ it's reported to the application. </TEST>
+<TEST TYPE="valid" ENTITIES="parameter" ID="valid-sa-070" URI="valid/sa/070.xml" SECTIONS="4.4.8" OUTPUT="valid/sa/out/070.xml">
+ Verifies that internal parameter entities are correctly
+ expanded within the internal subset.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-071" URI="valid/sa/071.xml" SECTIONS="3.3 3.3.1 [52] [56]" OUTPUT="valid/sa/out/071.xml">
+ Test demonstrates that an AttlistDecl can use ID as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-072" URI="valid/sa/072.xml" SECTIONS="3.3 3.3.1 [52] [56]" OUTPUT="valid/sa/out/072.xml">
+ Test demonstrates that an AttlistDecl can use IDREF as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-073" URI="valid/sa/073.xml" SECTIONS="3.3 3.3.1 [52] [56]" OUTPUT="valid/sa/out/073.xml">
+ Test demonstrates that an AttlistDecl can use IDREFS as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-074" URI="valid/sa/074.xml" SECTIONS="3.3 3.3.1 [52] [56]" OUTPUT="valid/sa/out/074.xml">
+ Test demonstrates that an AttlistDecl can use ENTITY as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-075" URI="valid/sa/075.xml" SECTIONS="3.3 3.3.1 [52] [56]" OUTPUT="valid/sa/out/075.xml">
+ Test demonstrates that an AttlistDecl can use ENTITIES as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-076" URI="valid/sa/076.xml" SECTIONS="3.3.1" OUTPUT="valid/sa/out/076.xml">
+ Verifies that an XML parser will parse a NOTATION
+ attribute; the output phase of this test ensures that
+ both notations are reported to the application. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-077" URI="valid/sa/077.xml" SECTIONS="3.3 3.3.1 [52] [54]" OUTPUT="valid/sa/out/077.xml">
+ Test demonstrates that an AttlistDecl can use an EnumeratedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-078" URI="valid/sa/078.xml" SECTIONS="3.3 3.3.1 [52] [54]" OUTPUT="valid/sa/out/078.xml">
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that REQUIRED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-079" URI="valid/sa/079.xml" SECTIONS="3.3 3.3.2 [52] [60]" OUTPUT="valid/sa/out/079.xml">
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that FIXED is a valid DefaultDecl and that a value can be given to the attribute in the Start-tag as well as the AttListDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-080" URI="valid/sa/080.xml" SECTIONS="3.3 3.3.2 [52] [60]" OUTPUT="valid/sa/out/080.xml">
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that FIXED is a valid DefaultDecl and that an value can be given to the attribute. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-081" URI="valid/sa/081.xml" SECTIONS="3.2.1 [50]" OUTPUT="valid/sa/out/081.xml">
+ Test demonstrates the use of the optional character following a name or list to govern the number of times an element or content particles in the list occur. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-082" URI="valid/sa/082.xml" SECTIONS="4.2 [72]" OUTPUT="valid/sa/out/082.xml">
+ Tests that an external PE may be defined (but not referenced).</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-083" URI="valid/sa/083.xml" SECTIONS="4.2 [72]" OUTPUT="valid/sa/out/083.xml">
+ Tests that an external PE may be defined (but not referenced).</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-084" URI="valid/sa/084.xml" SECTIONS="2.10" OUTPUT="valid/sa/out/084.xml">
+ Test demonstrates that although whitespace can be used to set apart markup for greater readability it is not necessary. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-085" URI="valid/sa/085.xml" SECTIONS="4" OUTPUT="valid/sa/out/085.xml">
+ Parameter and General entities use different namespaces,
+ so there can be an entity of each type with a given name.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-086" URI="valid/sa/086.xml" SECTIONS="4.2" OUTPUT="valid/sa/out/086.xml">
+ Tests whether entities may be declared more than once,
+ with the first declaration being the binding one. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-087" URI="valid/sa/087.xml" SECTIONS="4.5" OUTPUT="valid/sa/out/087.xml">
+ Tests whether character references in internal entities are
+ expanded early enough, by relying on correct handling to
+ make the entity be well formed.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-088" URI="valid/sa/088.xml" SECTIONS="4.5" OUTPUT="valid/sa/out/088.xml">
+ Tests whether entity references in internal entities are
+ expanded late enough, by relying on correct handling to
+ make the expanded text be valid. (If it's expanded too
+ early, the entity will parse as an element that's not
+ valid in that context.)</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-089" URI="valid/sa/089.xml" SECTIONS="4.1 [66]" OUTPUT="valid/sa/out/089.xml">
+ Tests entity expansion of three legal character references,
+ which each expand to a Unicode surrogate pair.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-090" URI="valid/sa/090.xml" SECTIONS="3.3.1" OUTPUT="valid/sa/out/090.xml">
+ Verifies that an XML parser will parse a NOTATION
+ attribute; the output phase of this test ensures that
+ the notation is reported to the application. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-091" URI="valid/sa/091.xml" SECTIONS="3.3.1" OUTPUT="valid/sa/out/091.xml">
+ Verifies that an XML parser will parse an ENTITY
+ attribute; the output phase of this test ensures that
+ the notation is reported to the application, and for
+ validating parsers it further tests that the entity
+ is so reported.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-092" URI="valid/sa/092.xml" SECTIONS="2.3 2.10" OUTPUT="valid/sa/out/092.xml">
+ Test demostrates that extra whitespace is normalized into a single space character. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-093" URI="valid/sa/093.xml" SECTIONS="2.10" OUTPUT="valid/sa/out/093.xml">
+ Test demonstrates that extra whitespace is not intended for inclusion in the delivered version of the document. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-094" OUTPUT="valid/sa/out/094.xml" URI="valid/sa/094.xml" SECTIONS="2.8">
+ Attribute defaults with a DTD have special parsing rules, different
+ from other strings. That means that characters found there may look
+ like an undefined parameter entity reference "within a markup
+ declaration", but they aren't ... so they can't be violating
+ the <EM>PEs in Internal Subset</EM> WFC.
+ </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-095" URI="valid/sa/095.xml" SECTIONS="3.3.3" OUTPUT="valid/sa/out/095.xml">
+ Basically an output test, this requires extra whitespace
+ to be normalized into a single space character in an
+ attribute of type NMTOKENS.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-096" URI="valid/sa/096.xml" SECTIONS="3.3.3" OUTPUT="valid/sa/out/096.xml">
+ Test demonstrates that extra whitespace is normalized into a single space character in an attribute of type NMTOKENS. </TEST>
+<TEST TYPE="valid" ENTITIES="parameter" ID="valid-sa-097" URI="valid/sa/097.xml" SECTIONS="3.3" OUTPUT="valid/sa/out/097.xml">
+ Basically an output test, this tests whether an externally
+ defined attribute declaration (with a default) takes proper
+ precedence over a subsequent internal declaration.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-098" URI="valid/sa/098.xml" SECTIONS="2.6 2.10 [16]" OUTPUT="valid/sa/out/098.xml">
+ Test demonstrates that extra whitespace within a processing instruction is converted into a single space character.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-099" URI="valid/sa/099.xml" SECTIONS="4.3.3 [81]" OUTPUT="valid/sa/out/099.xml">
+ Test demonstrates the name of the encoding can be composed of lowercase characters. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-100" URI="valid/sa/100.xml" SECTIONS="2.3 [12]" OUTPUT="valid/sa/out/100.xml">
+ Makes sure that PUBLIC identifiers may have some strange
+ characters. <EM>NOTE: The XML editors have said that the XML
+ specification errata will specify that parameter entity expansion
+ does not occur in PUBLIC identifiers, so that the '%' character
+ will not flag a malformed parameter entity reference.</EM></TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-101" URI="valid/sa/101.xml" SECTIONS="4.5" OUTPUT="valid/sa/out/101.xml">
+ This tests whether entity expansion is (incorrectly) done
+ while processing entity declarations; if it is, the entity
+ value literal will terminate prematurely.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-102" URI="valid/sa/102.xml" SECTIONS="3.3.3" OUTPUT="valid/sa/out/102.xml">
+ Test demonstrates that a CDATA attribute can pass a double quote as its value. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-103" URI="valid/sa/103.xml" SECTIONS="3.3.3" OUTPUT="valid/sa/out/103.xml">
+ Test demonstrates that an attribute can pass a less than sign as its value. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-104" URI="valid/sa/104.xml" SECTIONS="3.1 [40]" OUTPUT="valid/sa/out/104.xml">
+ Test demonstrates that extra whitespace within an Attribute of a Start-tag is normalized to a single space character. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-105" URI="valid/sa/105.xml" SECTIONS="3.3.3" OUTPUT="valid/sa/out/105.xml">
+ Basically an output test, this requires a CDATA attribute
+ with a tab character to be passed through as one space.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-106" URI="valid/sa/106.xml" SECTIONS="3.3.3" OUTPUT="valid/sa/out/106.xml">
+ Basically an output test, this requires a CDATA attribute
+ with a newline character to be passed through as one space.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-107" URI="valid/sa/107.xml" SECTIONS="3.3.3" OUTPUT="valid/sa/out/107.xml">
+ Basically an output test, this requires a CDATA attribute
+ with a return character to be passed through as one space.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-108" URI="valid/sa/108.xml" SECTIONS="2.11, 3.3.3" OUTPUT="valid/sa/out/108.xml">
+ This tests normalization of end-of-line characters (CRLF)
+ within entities to LF, primarily as an output test. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-109" URI="valid/sa/109.xml" SECTIONS="2.3 3.1 [10][40][41]" OUTPUT="valid/sa/out/109.xml">
+ Test demonstrates that an attribute can have a null value. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-110" URI="valid/sa/110.xml" SECTIONS="3.3.3" OUTPUT="valid/sa/out/110.xml">
+ Basically an output test, this requires that a CDATA
+ attribute with a CRLF be normalized to one space.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-111" URI="valid/sa/111.xml" SECTIONS="3.3.3" OUTPUT="valid/sa/out/111.xml">
+ Character references expanding to spaces doesn't affect
+ treatment of attributes. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-112" URI="valid/sa/112.xml" SECTIONS="3.2.1 [48][49]" OUTPUT="valid/sa/out/112.xml">
+ Test demonstrates shows the use of content particles within the element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-113" URI="valid/sa/113.xml" SECTIONS="3.3 [52][53]" OUTPUT="valid/sa/out/113.xml">
+ Test demonstrates that it is not an error to have attributes declared for an element not itself declared.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-114" URI="valid/sa/114.xml" SECTIONS="2.7 [20]" OUTPUT="valid/sa/out/114.xml">
+ Test demonstrates that all text within a valid CDATA section is considered text and not recognized as markup. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-115" URI="valid/sa/115.xml" SECTIONS="3.3.3" OUTPUT="valid/sa/out/115.xml">
+ Test demonstrates that an entity reference is processed by recursively processing the replacement text of the entity. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-116" URI="valid/sa/116.xml" SECTIONS="2.11" OUTPUT="valid/sa/out/116.xml">
+ Test demonstrates that a line break within CDATA will be normalized. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-117" URI="valid/sa/117.xml" SECTIONS="4.5" OUTPUT="valid/sa/out/117.xml">
+ Test demonstrates that entity expansion is done while processing entity declarations. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-118" URI="valid/sa/118.xml" SECTIONS="4.5" OUTPUT="valid/sa/out/118.xml">
+ Test demonstrates that entity expansion is done while processing entity declarations. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-119" URI="valid/sa/119.xml" SECTIONS="2.5" OUTPUT="valid/sa/out/119.xml">
+ Comments may contain any legal XML characters;
+ only the string "--" is disallowed.</TEST>
+
+
+<!-- Start: valid/not-sa -->
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-001" URI="valid/not-sa/001.xml" SECTIONS="4.2.2 [75]" OUTPUT="valid/not-sa/out/001.xml">
+ Test demonstrates the use of an ExternalID within a document type definition. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-002" URI="valid/not-sa/002.xml" SECTIONS="4.2.2 [75]" OUTPUT="valid/not-sa/out/002.xml">
+ Test demonstrates the use of an ExternalID within a document type definition. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-003" URI="valid/not-sa/003.xml" SECTIONS="4.1 [69]" OUTPUT="valid/not-sa/out/003.xml">
+ Test demonstrates the expansion of an external parameter entity that declares an attribute. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-004" URI="valid/not-sa/004.xml" SECTIONS="4.1 [69]" OUTPUT="valid/not-sa/out/004.xml">
+ Expands an external parameter entity in two different ways,
+ with one of them declaring an attribute.</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-005" URI="valid/not-sa/005.xml" SECTIONS="4.1 [69]" OUTPUT="valid/not-sa/out/005.xml">
+ Test demonstrates the expansion of an external parameter entity that declares an attribute. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-006" URI="valid/not-sa/006.xml" SECTIONS="3.3 [52]" OUTPUT="valid/not-sa/out/006.xml">
+ Test demonstrates that when more than one definition is provided for the same attribute of a given element type only the first declaration is binding. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-007" URI="valid/not-sa/007.xml" SECTIONS="3.3 [52]" OUTPUT="valid/not-sa/out/007.xml">
+ Test demonstrates the use of an Attribute list declaration within an external entity. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-008" URI="valid/not-sa/008.xml" SECTIONS="4.2.2 [75]" OUTPUT="valid/not-sa/out/008.xml">
+ Test demonstrates that an external identifier may include a public identifier. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-009" URI="valid/not-sa/009.xml" SECTIONS="4.2.2 [75]" OUTPUT="valid/not-sa/out/009.xml">
+ Test demonstrates that an external identifier may include a public identifier. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-010" URI="valid/not-sa/010.xml" SECTIONS="3.3 [52]" OUTPUT="valid/not-sa/out/010.xml">
+ Test demonstrates that when more that one definition is provided for the same attribute of a given element type only the first declaration is binding. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-011" URI="valid/not-sa/011.xml" SECTIONS="4.2 4.2.1 [72] [75]" OUTPUT="valid/not-sa/out/011.xml">
+ Test demonstrates a parameter entity declaration whose parameter entity definition is an ExternalID. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-012" URI="valid/not-sa/012.xml" SECTIONS="4.3.1 [77]" OUTPUT="valid/not-sa/out/012.xml">
+ Test demonstrates an enternal parsed entity that begins with a text declaration. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-013" URI="valid/not-sa/013.xml" SECTIONS="3.4 [62]" OUTPUT="valid/not-sa/out/013.xml">
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-014" URI="valid/not-sa/014.xml" SECTIONS="3.4 [62]" OUTPUT="valid/not-sa/out/014.xml">
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. The keyword is a parameter-entity reference. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-015" URI="valid/not-sa/015.xml" SECTIONS="3.4 [63]" OUTPUT="valid/not-sa/out/015.xml">
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being part of the DTD. The keyword is a parameter-entity reference. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-016" URI="valid/not-sa/016.xml" SECTIONS="3.4 [62]" OUTPUT="valid/not-sa/out/016.xml">
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. The keyword is a parameter-entity reference.</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-017" URI="valid/not-sa/017.xml" SECTIONS="4.2 [72]" OUTPUT="valid/not-sa/out/017.xml">
+ Test demonstrates a parameter entity declaration that contains an attribute list declaration. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-018" URI="valid/not-sa/018.xml" SECTIONS="4.2.2 [75]" OUTPUT="valid/not-sa/out/018.xml">
+ Test demonstrates an EnternalID whose contents contain an parameter entity declaration and a attribute list definition. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-019" URI="valid/not-sa/019.xml" SECTIONS="4.4.8" OUTPUT="valid/not-sa/out/019.xml">
+ Test demonstrates that a parameter entity will be expanded with spaces on either side. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-020" URI="valid/not-sa/020.xml" SECTIONS="4.4.8" OUTPUT="valid/not-sa/out/020.xml">
+ Parameter entities expand with spaces on either side.</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-021" URI="valid/not-sa/021.xml" SECTIONS="4.2 [72]" OUTPUT="valid/not-sa/out/021.xml">
+ Test demonstrates a parameter entity declaration that contains a partial attribute list declaration. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-023" URI="valid/not-sa/023.xml" SECTIONS="2.3 4.1 [10] [69]" OUTPUT="valid/not-sa/out/023.xml">
+ Test demonstrates the use of a parameter entity reference within an attribute list declaration.
+</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-024" URI="valid/not-sa/024.xml" SECTIONS="2.8, 4.1 [69]" OUTPUT="valid/not-sa/out/024.xml">
+ Constructs an &lt;!ATTLIST...&gt; declaration from several PEs.</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-025" URI="valid/not-sa/025.xml" SECTIONS="4.2" OUTPUT="valid/not-sa/out/025.xml">
+ Test demonstrates that when more that one definition is provided for the same entity only the first declaration is binding. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-026" URI="valid/not-sa/026.xml" SECTIONS="3.3 [52]" OUTPUT="valid/not-sa/out/026.xml">
+ Test demonstrates that when more that one definition is provided for the same attribute of a given element type only the first declaration is binding. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-027" URI="valid/not-sa/027.xml" SECTIONS="4.1 [69]" OUTPUT="valid/not-sa/out/027.xml">
+ Test demonstrates a parameter entity reference whose value is NULL. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-028" URI="valid/not-sa/028.xml" SECTIONS="3.4 [62]" OUTPUT="valid/not-sa/out/028.xml">
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-029" URI="valid/not-sa/029.xml" SECTIONS="3.4 [62]" OUTPUT="valid/not-sa/out/029.xml">
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being used. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-030" URI="valid/not-sa/030.xml" SECTIONS="3.4 [62]" OUTPUT="valid/not-sa/out/030.xml">
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being used. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-031" URI="valid/not-sa/031.xml" SECTIONS="2.7" OUTPUT="valid/not-sa/out/031.xml">
+ Expands a general entity which contains a CDATA section with
+ what looks like a markup declaration (but is just text since
+ it's in a CDATA section).</TEST>
+
+
+<!-- Start: valid/ext-sa -->
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-001" URI="valid/ext-sa/001.xml" SECTIONS="2.11" OUTPUT="valid/ext-sa/out/001.xml">
+ A combination of carriage return line feed in an external entity must
+ be normalized to a single newline. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-002" URI="valid/ext-sa/002.xml" SECTIONS="2.11" OUTPUT="valid/ext-sa/out/002.xml">
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-003" URI="valid/ext-sa/003.xml" SECTIONS="3.1 4.1 [43] [68]" OUTPUT="valid/ext-sa/out/003.xml">
+ Test demonstrates that the content of an element can be empty. In this case the external entity is an empty file. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-004" URI="valid/ext-sa/004.xml" SECTIONS="2.11" OUTPUT="valid/ext-sa/out/004.xml">
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-005" URI="valid/ext-sa/005.xml" SECTIONS="3.2.1 4.2.2 [48] [75]" OUTPUT="valid/ext-sa/out/005.xml">
+ Test demonstrates the use of optional character and content particles within an element content. The test also show the use of external entity. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-006" URI="valid/ext-sa/006.xml" SECTIONS="2.11 3.2.1 3.2.2 4.2.2 [48] [51] [75]" OUTPUT="valid/ext-sa/out/006.xml">
+ Test demonstrates the use of optional character and content particles within mixed element content. The test also shows the use of an external entity and that a carriage control line feed in an external entity must be normalized to a single newline. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-007" URI="valid/ext-sa/007.xml" SECTIONS="4.2.2 4.4.3 [75]" OUTPUT="valid/ext-sa/out/007.xml">
+ Test demonstrates the use of external entity and how replacement
+text is retrieved and processed. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-008" URI="valid/ext-sa/008.xml" SECTIONS="4.2.2 4.3.3. 4.4.3 [75] [80]" OUTPUT="valid/ext-sa/out/008.xml"> Test demonstrates the use of external
+entity and how replacement text is retrieved and processed. Also tests the use of an
+EncodingDecl of UTF-16.</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-009" URI="valid/ext-sa/009.xml" SECTIONS="2.11" OUTPUT="valid/ext-sa/out/009.xml">
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-011" URI="valid/ext-sa/011.xml" SECTIONS="2.11 4.2.2 [75]" OUTPUT="valid/ext-sa/out/011.xml">
+ Test demonstrates the use of a public identifier with and external entity.
+The test also show that a carriage control line feed combination in an external
+entity must be normalized to a single newline. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-012" URI="valid/ext-sa/012.xml" SECTIONS="4.2.1 4.2.2" OUTPUT="valid/ext-sa/out/012.xml">
+ Test demonstrates both internal and external entities and that processing of entity references may be required to produce the correct replacement text.</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-013" URI="valid/ext-sa/013.xml" SECTIONS="3.3.3" OUTPUT="valid/ext-sa/out/013.xml">
+ Test demonstrates that whitespace is handled by adding a single whitespace to the normalized value in the attribute list. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-014" URI="valid/ext-sa/014.xml" SECTIONS="4.1 4.4.3 [68]" OUTPUT="valid/ext-sa/out/014.xml">
+ Test demonstrates use of characters outside of normal ASCII range.</TEST>
+</TESTCASES>
+
+</TESTCASES>
+
+<TESTCASES PROFILE="Fuji Xerox Japanese Text Tests XML 1.0 Tests" xml:base="japanese/">
+
+<!--
+ @(#)japanese.xml 1.4 99/02/03
+ Copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+-->
+
+<TESTCASES PROFILE="Fuji Xerox Japanese Text Tests">
+
+ <TEST TYPE="error" SECTIONS="4.3.3 [4,84]" ID="pr-xml-euc-jp" ENTITIES="parameter" URI="pr-xml-euc-jp.xml">
+ Test support for the EUC-JP encoding, and for text
+ which relies on Japanese characters.
+ <EM>If a processor does not support this encoding, it must
+ report a fatal error.</EM>
+ (Also requires ability to process a moderately complex DTD.)
+ </TEST>
+ <TEST TYPE="error" SECTIONS="4.3.3 [4,84]" ID="pr-xml-iso-2022-jp" ENTITIES="parameter" URI="pr-xml-iso-2022-jp.xml">
+ Test support for the ISO-2022-JP encoding, and for text
+ which relies on Japanese characters.
+ <EM>If a processor does not support this encoding, it must
+ report a fatal error.</EM>
+ (Also requires ability to process a moderately complex DTD.)
+ </TEST>
+ <TEST TYPE="valid" SECTIONS="4.3.3 [4,84]" ID="pr-xml-little" ENTITIES="parameter" URI="pr-xml-little-endian.xml">
+ Test support for little-endian UTF-16 text
+ which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </TEST>
+ <TEST TYPE="error" SECTIONS="4.3.3 [4,84]" ID="pr-xml-shift_jis" ENTITIES="parameter" URI="pr-xml-shift_jis.xml">
+ Test support for the Shift_JIS encoding, and for text
+ which relies on Japanese characters.
+ <EM>If a processor does not support this encoding, it must
+ report a fatal error.</EM>
+ (Also requires ability to process a moderately complex DTD.)
+ </TEST>
+ <TEST TYPE="valid" SECTIONS="4.3.3 [4,84]" ID="pr-xml-utf-16" ENTITIES="parameter" URI="pr-xml-utf-16.xml">
+ Test support UTF-16 text which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </TEST>
+ <TEST TYPE="valid" SECTIONS="4.3.3 [4,84]" ID="pr-xml-utf-8" ENTITIES="parameter" URI="pr-xml-utf-8.xml">
+ Test support for UTF-8 text which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </TEST>
+
+ <TEST TYPE="error" SECTIONS="4.3.3 [4,84]" ID="weekly-euc-jp" ENTITIES="parameter" URI="weekly-euc-jp.xml">
+ Test support for EUC-JP encoding, and
+ XML names which contain Japanese characters.
+ <EM>If a processor does not support this encoding, it must
+ report a fatal error.</EM>
+ </TEST>
+ <TEST TYPE="error" SECTIONS="4.3.3 [4,84]" ID="weekly-iso-2022-jp" ENTITIES="parameter" URI="weekly-iso-2022-jp.xml">
+ Test support for ISO-2022-JP encoding, and
+ XML names which contain Japanese characters.
+ <EM>If a processor does not support this encoding, it must
+ report a fatal error.</EM>
+ </TEST>
+ <TEST TYPE="valid" SECTIONS="4.3.3 [4,84]" ID="weekly-little" ENTITIES="parameter" URI="weekly-little-endian.xml">
+ Test support for little-endian UTF-16 encoding, and
+ XML names which contain Japanese characters.
+ </TEST>
+ <TEST TYPE="error" SECTIONS="4.3.3 [4,84]" ID="weekly-shift_jis" ENTITIES="parameter" URI="weekly-shift_jis.xml">
+ Test support for Shift_JIS encoding, and
+ XML names which contain Japanese characters.
+ <EM>If a processor does not support this encoding, it must
+ report a fatal error.</EM>
+ </TEST>
+ <TEST TYPE="valid" SECTIONS="4.3.3 [4,84]" ID="weekly-utf-16" ENTITIES="parameter" URI="weekly-utf-16.xml">
+ Test support for UTF-16 encoding, and
+ XML names which contain Japanese characters.
+ </TEST>
+ <TEST TYPE="valid" SECTIONS="4.3.3 [4,84]" ID="weekly-utf-8" ENTITIES="parameter" URI="weekly-utf-8.xml">
+ Test support for UTF-8 encoding and
+ XML names which contain Japanese characters.
+ </TEST>
+
+</TESTCASES>
+
+</TESTCASES>
+
+<TESTCASES PROFILE="Sun Microsystems XML Tests" xml:base="sun/">
+
+<!--
+ @(#)valid.xml 1.6 99/01/21
+ Copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+-->
+<TEST URI="valid/pe01.xml" ID="pe01" ENTITIES="parameter" SECTIONS="2.8" TYPE="valid">
+ Parameter entities references are NOT RECOGNIZED in default attribute
+ values.</TEST>
+
+<TEST URI="valid/dtd00.xml" ID="dtd00" SECTIONS="3.2.2 [51]" TYPE="valid" OUTPUT="valid/out/dtd00.xml">
+ Tests parsing of alternative forms of text-only mixed
+ content declaration.</TEST>
+
+<TEST URI="valid/dtd01.xml" ID="dtd01" TYPE="valid" SECTIONS="2.5 [15]" OUTPUT="valid/out/dtd01.xml">
+ Comments don't get parameter entity expansion</TEST>
+
+<TEST URI="valid/element.xml" ID="element" TYPE="valid" SECTIONS="3" OUTPUT="valid/out/element.xml">
+ Tests clauses 1, 3, and 4 of the Element Valid
+ validity constraint.</TEST>
+
+<TEST URI="valid/ext01.xml" ID="ext01" ENTITIES="general" OUTPUT="valid/out/ext01.xml" SECTIONS="4.3.1 4.3.2 [77] [78]" TYPE="valid">
+ Tests use of external parsed entities with and without content.</TEST>
+
+<TEST URI="valid/ext02.xml" ID="ext02" ENTITIES="general" SECTIONS="4.3.2 [78]" TYPE="valid" OUTPUT="valid/out/ext02.xml">
+ Tests use of external parsed entities with different
+ encodings than the base document.</TEST>
+
+<TEST URI="valid/not-sa01.xml" ENTITIES="parameter" ID="not-sa01" TYPE="valid" SECTIONS="2.9" OUTPUT="valid/out/not-sa01.xml">
+ A non-standalone document is valid if declared as such.</TEST>
+
+<TEST URI="valid/not-sa02.xml" ENTITIES="parameter" ID="not-sa02" TYPE="valid" SECTIONS="2.9" OUTPUT="valid/out/not-sa02.xml">
+ A non-standalone document is valid if declared as such.</TEST>
+
+<TEST URI="valid/not-sa03.xml" ENTITIES="parameter" ID="not-sa03" TYPE="valid" SECTIONS="2.9" OUTPUT="valid/out/not-sa03.xml">
+ A non-standalone document is valid if declared as such.</TEST>
+
+<TEST URI="valid/not-sa04.xml" ENTITIES="parameter" ID="not-sa04" TYPE="valid" SECTIONS="2.9" OUTPUT="valid/out/not-sa04.xml">
+ A non-standalone document is valid if declared as such. </TEST>
+
+<TEST URI="valid/notation01.xml" ENTITIES="parameter" ID="notation01" TYPE="valid" OUTPUT="valid/out/notation01.xml" SECTIONS="4.7 [82]">
+ NOTATION declarations don't need SYSTEM IDs; and
+ externally declared notations may be used to declare
+ unparsed entities in the internal DTD subset.
+ The notation must be reported to the application.
+ </TEST>
+
+<TEST URI="valid/optional.xml" ENTITIES="parameter" ID="optional" TYPE="valid" OUTPUT="valid/out/optional.xml" SECTIONS="3 3.2.1 [47]">
+ Tests declarations of "children" content models, and
+ the validity constraints associated with them.</TEST>
+
+<TEST URI="valid/required00.xml" ID="required00" TYPE="valid" OUTPUT="valid/out/required00.xml" SECTIONS="3.3.2 [60]">
+ Tests the #REQUIRED attribute declaration syntax, and
+ the associated validity constraint. </TEST>
+
+<TEST URI="valid/sa01.xml" ID="sa01" TYPE="valid" SECTIONS="2.9 [32]" OUTPUT="valid/out/sa01.xml">
+ A document may be marked 'standalone' if any optional
+ whitespace is defined within the internal DTD subset.</TEST>
+
+<TEST URI="valid/sa02.xml" ID="sa02" TYPE="valid" SECTIONS="2.9 [32]" OUTPUT="valid/out/sa02.xml">
+ A document may be marked 'standalone' if any
+ attributes that need normalization are
+ defined within the internal DTD subset.</TEST>
+
+<TEST URI="valid/sa03.xml" ENTITIES="parameter" ID="sa03" TYPE="valid" SECTIONS="2.9 [32]" OUTPUT="valid/out/sa03.xml">
+ A document may be marked 'standalone' if any
+ the defined entities need expanding are internal,
+ and no attributes need defaulting or normalization.
+ On output, requires notations to be correctly reported.
+ </TEST>
+
+<TEST URI="valid/sa04.xml" ID="sa04" ENTITIES="parameter" TYPE="valid" SECTIONS="2.9 [32]" OUTPUT="valid/out/sa04.xml">
+ Like sa03 but relies on attribute
+ defaulting defined in the internal subset.
+ On output, requires notations to be correctly reported.
+ </TEST>
+
+<TEST URI="valid/sa05.xml" ID="sa05" ENTITIES="parameter" TYPE="valid" SECTIONS="2.9 [32]" OUTPUT="valid/out/sa05.xml">
+ Like sa01 but this document is standalone
+ since it has no optional whitespace.
+ On output, requires notations to be correctly reported.
+ </TEST>
+
+<TEST URI="valid/sgml01.xml" ID="v-sgml01" SECTIONS="3.3.1 [59]" TYPE="valid" OUTPUT="valid/out/sgml01.xml">
+ XML permits token reuse, while SGML does not.</TEST>
+
+<TEST URI="valid/v-lang01.xml" OUTPUT="valid/out/v-lang01.xml" ID="v-lang01" SECTIONS="2.12 [35]" TYPE="valid">
+ Tests a lowercase ISO language code.</TEST>
+
+<TEST URI="valid/v-lang02.xml" ID="v-lang02" SECTIONS="2.12 [35]" TYPE="valid" OUTPUT="valid/out/v-lang02.xml">
+ Tests a ISO language code with a subcode.</TEST>
+
+<TEST URI="valid/v-lang03.xml" ID="v-lang03" SECTIONS="2.12 [36]" TYPE="valid" OUTPUT="valid/out/v-lang03.xml">
+ Tests a IANA language code with a subcode.</TEST>
+
+<TEST URI="valid/v-lang04.xml" ID="v-lang04" SECTIONS="2.12 [37]" TYPE="valid" OUTPUT="valid/out/v-lang04.xml">
+ Tests a user language code with a subcode.</TEST>
+
+<TEST URI="valid/v-lang05.xml" ID="v-lang05" SECTIONS="2.12 [35]" TYPE="valid" OUTPUT="valid/out/v-lang05.xml">
+ Tests an uppercase ISO language code.</TEST>
+
+<TEST URI="valid/v-lang06.xml" ID="v-lang06" SECTIONS="2.12 [37]" TYPE="valid" OUTPUT="valid/out/v-lang06.xml">
+ Tests a user language code.</TEST>
+
+<TEST URI="valid/pe00.xml" ENTITIES="parameter" ID="v-pe00" SECTIONS="4.5" TYPE="valid" OUTPUT="valid/out/pe00.xml">
+ Tests construction of internal entity replacement text, using
+ an example in the XML specification. </TEST>
+
+<TEST URI="valid/pe03.xml" ID="v-pe03" SECTIONS="4.5" TYPE="valid" OUTPUT="valid/out/pe03.xml">
+ Tests construction of internal entity replacement text, using
+ an example in the XML specification. </TEST>
+
+<TEST URI="valid/pe02.xml" ENTITIES="parameter" ID="v-pe02" SECTIONS="4.5" TYPE="valid" OUTPUT="valid/out/pe02.xml">
+ Tests construction of internal entity replacement text, using
+ a complex example in the XML specification. </TEST>
+
+
+<!--
+ @(#)invalid.xml 1.9 99/01/07
+ Copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+-->
+<TEST URI="invalid/dtd01.xml" ID="inv-dtd01" SECTIONS="3.2.2" TYPE="invalid">
+ Tests the No Duplicate Types VC</TEST>
+
+<TEST URI="invalid/dtd02.xml" ID="inv-dtd02" SECTIONS="4.2.2" TYPE="invalid">
+ Tests the "Notation Declared" VC by using an undeclared
+ notation name.</TEST>
+
+<TEST URI="invalid/dtd03.xml" ID="inv-dtd03" SECTIONS="3" TYPE="invalid">
+ Tests the "Element Valid" VC (clause 2)
+ by omitting a required element. </TEST>
+
+<TEST URI="invalid/el01.xml" ID="el01" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 4)
+ by including an undeclared child element. </TEST>
+
+<TEST URI="invalid/el02.xml" ID="el02" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 1)
+ by including elements in an EMPTY content model. </TEST>
+
+<TEST URI="invalid/el03.xml" ID="el03" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 3) by including a child element
+ not permitted by a mixed content model. </TEST>
+
+<TEST URI="invalid/el04.xml" ID="el04" SECTIONS="3.2" TYPE="invalid">
+ Tests the Unique Element Type Declaration VC. </TEST>
+
+<TEST URI="invalid/el05.xml" ID="el05" SECTIONS="3.2.2" TYPE="invalid">
+ Tests the No Duplicate Types VC. </TEST>
+
+<TEST URI="invalid/el06.xml" ID="el06" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 1),
+ using one of the predefined internal entities
+ inside an EMPTY content model.</TEST>
+
+<TEST URI="invalid/id01.xml" ID="id01" ENTITIES="parameter" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the ID (is a Name) VC</TEST>
+
+<TEST URI="invalid/id02.xml" ID="id02" ENTITIES="parameter" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the ID (appears once) VC</TEST>
+
+<TEST URI="invalid/id03.xml" ID="id03" ENTITIES="parameter" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the One ID per Element Type VC</TEST>
+
+<TEST URI="invalid/id04.xml" ID="id04" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the ID Attribute Default VC</TEST>
+
+<TEST URI="invalid/id05.xml" ID="id05" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the ID Attribute Default VC</TEST>
+
+<TEST URI="invalid/id06.xml" ID="id06" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the IDREF (is a Name) VC</TEST>
+
+<TEST URI="invalid/id07.xml" ID="id07" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the IDREFS (is a Names) VC</TEST>
+
+<TEST URI="invalid/id08.xml" ID="id08" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the IDREF (matches an ID) VC</TEST>
+
+<TEST URI="invalid/id09.xml" ID="id09" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the IDREF (IDREFS matches an ID) VC</TEST>
+
+<TEST URI="invalid/not-sa01.xml" ID="inv-not-sa01" ENTITIES="parameter" SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ optional whitespace causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa02.xml" ID="inv-not-sa02" ENTITIES="parameter" SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ attributes needing normalization cause a validity error.</TEST>
+
+<TEST URI="invalid/not-sa04.xml" ID="inv-not-sa04" ENTITIES="parameter" SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ attributes needing defaulting cause a validity error.</TEST>
+
+<TEST URI="invalid/not-sa05.xml" ID="inv-not-sa05" ENTITIES="parameter" SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ a token attribute that needs normalization causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa06.xml" ID="inv-not-sa06" ENTITIES="parameter" SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ a NOTATION attribute that needs normalization
+ causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa07.xml" ID="inv-not-sa07" ENTITIES="parameter" SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an NMTOKEN attribute needing normalization
+ causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa08.xml" ID="inv-not-sa08" ENTITIES="parameter" SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an NMTOKENS attribute needing normalization
+ causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa09.xml" ID="inv-not-sa09" ENTITIES="parameter" SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ID attribute needing normalization causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa10.xml" ID="inv-not-sa10" ENTITIES="parameter" SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an IDREF attribute needing normalization causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa11.xml" ID="inv-not-sa11" ENTITIES="parameter" SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an IDREFS attribute needing normalization causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa12.xml" ID="inv-not-sa12" ENTITIES="parameter" SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ENTITY attribute needing normalization causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa13.xml" ID="inv-not-sa13" ENTITIES="parameter" SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ENTITIES attribute needing normalization causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa14.xml" ID="inv-not-sa14" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ CDATA sections containing only whitespace do not match the nonterminal S, and cannot
+ appear in these positions.</TEST>
+
+<TEST URI="invalid/optional01.xml" ID="optional01" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing no children where
+ one is required.</TEST>
+
+<TEST URI="invalid/optional02.xml" ID="optional02" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ two children where one is required.</TEST>
+
+<TEST URI="invalid/optional03.xml" ID="optional03" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where two are required.</TEST>
+
+<TEST URI="invalid/optional04.xml" ID="optional04" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where two are required.</TEST>
+
+<TEST URI="invalid/optional05.xml" ID="optional05" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (one construction of that model).</TEST>
+
+<TEST URI="invalid/optional06.xml" ID="optional06" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a second construction of that model).</TEST>
+
+<TEST URI="invalid/optional07.xml" ID="optional07" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a third construction of that model).</TEST>
+
+<TEST URI="invalid/optional08.xml" ID="optional08" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a fourth construction of that model).</TEST>
+
+<TEST URI="invalid/optional09.xml" ID="optional09" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a fifth construction of that model).</TEST>
+
+<TEST URI="invalid/optional10.xml" ID="optional10" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a basic construction of that model).</TEST>
+
+<TEST URI="invalid/optional11.xml" ID="optional11" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a second construction of that model).</TEST>
+
+<TEST URI="invalid/optional12.xml" ID="optional12" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a third construction of that model).</TEST>
+
+<TEST URI="invalid/optional13.xml" ID="optional13" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a fourth construction of that model).</TEST>
+
+<TEST URI="invalid/optional14.xml" ID="optional14" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a fifth construction of that model).</TEST>
+
+<TEST URI="invalid/optional20.xml" ID="optional20" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a sixth construction of that model).</TEST>
+
+<TEST URI="invalid/optional21.xml" ID="optional21" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a seventh construction of that model).</TEST>
+
+<TEST URI="invalid/optional22.xml" ID="optional22" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (an eigth construction of that model).</TEST>
+
+<TEST URI="invalid/optional23.xml" ID="optional23" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a ninth construction of that model).</TEST>
+
+<TEST URI="invalid/optional24.xml" ID="optional24" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a tenth construction of that model).</TEST>
+
+<TEST URI="invalid/optional25.xml" ID="optional25" ENTITIES="parameter" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ text content where one or more elements are
+ required.</TEST>
+
+<TEST URI="invalid/required00.xml" ID="inv-required00" SECTIONS="3.3.2" TYPE="invalid">
+ Tests the Required Attribute VC.</TEST>
+
+<TEST URI="invalid/required01.xml" ID="inv-required01" SECTIONS="3.1 2.10" TYPE="invalid">
+ Tests the Attribute Value Type (declared)
+ VC for the xml:space attribute</TEST>
+
+<TEST URI="invalid/required02.xml" ID="inv-required02" SECTIONS="3.1 2.12" TYPE="invalid">
+ Tests the Attribute Value Type (declared)
+ VC for the xml:lang attribute</TEST>
+
+<TEST URI="invalid/root.xml" ID="root" ENTITIES="parameter" SECTIONS="2.8" TYPE="invalid">
+ Tests the Root Element Type VC</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr01.xml" ID="attr01" SECTIONS="3.3.1">
+ Tests the "Entity Name" VC for the ENTITY attribute type.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr02.xml" ID="attr02" SECTIONS="3.3.1">
+ Tests the "Entity Name" VC for the ENTITIES attribute type.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr03.xml" ID="attr03" SECTIONS="3.3.1">
+ Tests the "Notation Attributes" VC for the
+ NOTATION attribute type, first clause: value must be one
+ of the ones that's declared.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr04.xml" ID="attr04" SECTIONS="3.3.1">
+ Tests the "Notation Attributes" VC for the
+ NOTATION attribute type, second clause: the names in the
+ declaration must all be declared.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr05.xml" ID="attr05" SECTIONS="3.3.1">
+ Tests the "Name Token" VC for the NMTOKEN attribute type.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr06.xml" ID="attr06" SECTIONS="3.3.1">
+ Tests the "Name Token" VC for the NMTOKENS attribute type.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr07.xml" ID="attr07" SECTIONS="3.3.1">
+ Tests the "Enumeration" VC by providing
+ a value which wasn't one of the choices.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr08.xml" ID="attr08" SECTIONS="3.3.2">
+ Tests the "Fixed Attribute Default" VC by
+ providing the wrong value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr09.xml" ID="attr09" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal IDREF value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr10.xml" ID="attr10" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal IDREFS value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr11.xml" ID="attr11" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal ENTITY value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr12.xml" ID="attr12" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal ENTITIES value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr13.xml" ID="attr13" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NMTOKEN value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr14.xml" ID="attr14" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NMTOKENS value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr15.xml" ID="attr15" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NOTATIONS value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr16.xml" ID="attr16" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal enumeration value.</TEST>
+
+<TEST URI="invalid/utf16b.xml" ID="utf16b" SECTIONS="4.3.3 2.8" TYPE="invalid">
+ Tests reading an invalid "big endian" UTF-16 document</TEST>
+
+<TEST URI="invalid/utf16l.xml" ID="utf16l" SECTIONS="4.3.3 2.8" TYPE="invalid">
+ Tests reading an invalid "little endian" UTF-16 document</TEST>
+
+<TEST URI="invalid/empty.xml" ID="empty" TYPE="invalid" SECTIONS="2.4 2.7 [18] 3">
+ CDATA section containing only white space does not match the nonterminal S, and cannot
+ appear in these positions. </TEST>
+
+
+<!--
+ @(#)not-wf.xml 1.6 98/12/29
+ Copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+-->
+<TEST URI="not-wf/not-sa03.xml" ID="not-wf-sa03" ENTITIES="parameter" SECTIONS="2.9" TYPE="not-wf">
+ Tests the Entity Declared WFC, ensuring that
+ a reference to externally defined entity causes a well-formedness error.</TEST>
+<TEST ID="attlist01" URI="not-wf/attlist01.xml" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's NUTOKEN is not allowed.</TEST>
+
+<TEST ID="attlist02" URI="not-wf/attlist02.xml" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's NUTOKENS attribute type is not allowed.</TEST>
+
+<TEST ID="attlist03" URI="not-wf/attlist03.xml" TYPE="not-wf" SECTIONS="3.3.1 [59]">
+ Comma doesn't separate enumerations, unlike in SGML.</TEST>
+
+<TEST ID="attlist04" URI="not-wf/attlist04.xml" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's NUMBER attribute type is not allowed.</TEST>
+
+<TEST ID="attlist05" URI="not-wf/attlist05.xml" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's NUMBERS attribute type is not allowed.</TEST>
+
+<TEST ID="attlist06" URI="not-wf/attlist06.xml" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's NAME attribute type is not allowed.</TEST>
+
+<TEST URI="not-wf/attlist07.xml" ID="attlist07" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's NAMES attribute type is not allowed.</TEST>
+
+<TEST URI="not-wf/attlist08.xml" ID="attlist08" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's #CURRENT is not allowed.</TEST>
+
+<TEST URI="not-wf/attlist09.xml" ID="attlist09" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's #CONREF is not allowed.</TEST>
+
+<TEST URI="not-wf/attlist10.xml" ID="attlist10" TYPE="not-wf" SECTIONS="3.1 [40]">
+ Whitespace required between attributes</TEST>
+
+<TEST URI="not-wf/attlist11.xml" ID="attlist11" TYPE="not-wf" SECTIONS="3.1 [44]">
+ Whitespace required between attributes</TEST>
+
+<TEST URI="not-wf/cond01.xml" ID="cond01" TYPE="not-wf" SECTIONS="3.4 [61]" ENTITIES="parameter">
+ Only INCLUDE and IGNORE are conditional section keywords</TEST>
+
+<TEST URI="not-wf/cond02.xml" ID="cond02" TYPE="not-wf" SECTIONS="3.4 [61]" ENTITIES="parameter">
+ Must have keyword in conditional sections</TEST>
+
+<TEST URI="not-wf/content01.xml" ID="content01" TYPE="not-wf" SECTIONS="3.2.1 [48]">
+ No whitespace before "?" in content model</TEST>
+
+<TEST URI="not-wf/content02.xml" ID="content02" TYPE="not-wf" SECTIONS="3.2.1 [48]">
+ No whitespace before "*" in content model</TEST>
+
+<TEST URI="not-wf/content03.xml" ID="content03" TYPE="not-wf" SECTIONS="3.2.1 [48]">
+ No whitespace before "+" in content model</TEST>
+
+<TEST URI="not-wf/decl01.xml" ID="decl01" TYPE="not-wf" SECTIONS="4.3.1 [77]" ENTITIES="parameter">
+ External entities may not have standalone decls. </TEST>
+
+<TEST URI="not-wf/dtd00.xml" ID="nwf-dtd00" TYPE="not-wf" SECTIONS="3.2.1 [55]">
+ Comma mandatory in content model</TEST>
+
+<TEST URI="not-wf/dtd01.xml" ID="nwf-dtd01" TYPE="not-wf" SECTIONS="3.2.1 [55]">
+ Can't mix comma and vertical bar in content models</TEST>
+
+<TEST URI="not-wf/dtd02.xml" ID="dtd02" TYPE="not-wf" SECTIONS="4.1 [69]">
+ PE name immediately after "%"</TEST>
+
+<TEST URI="not-wf/dtd03.xml" ID="dtd03" TYPE="not-wf" SECTIONS="4.1 [69]">
+ PE name immediately followed by ";"</TEST>
+
+<TEST URI="not-wf/dtd04.xml" ID="dtd04" TYPE="not-wf" SECTIONS="4.2.2 [75]">
+ PUBLIC literal must be quoted</TEST>
+
+<TEST URI="not-wf/dtd05.xml" ID="dtd05" TYPE="not-wf" SECTIONS="4.2.2 [75]">
+ SYSTEM identifier must be quoted</TEST>
+
+<TEST URI="not-wf/dtd07.xml" ID="dtd07" TYPE="not-wf" SECTIONS="4.3.1 [77]" ENTITIES="parameter">
+ Text declarations (which optionally begin any external entity)
+ are required to have "encoding=...". </TEST>
+
+
+<TEST URI="not-wf/element00.xml" ID="element00" TYPE="not-wf" SECTIONS="3.1 [42]">
+ EOF in middle of incomplete ETAG</TEST>
+
+<TEST URI="not-wf/element01.xml" ID="element01" TYPE="not-wf" SECTIONS="3.1 [42]">
+ EOF in middle of incomplete ETAG</TEST>
+
+<TEST URI="not-wf/element02.xml" ID="element02" TYPE="not-wf" SECTIONS="3.1 [43]">
+ Illegal markup (&lt;%@ ... %&gt;)</TEST>
+
+<TEST URI="not-wf/element03.xml" ID="element03" TYPE="not-wf" SECTIONS="3.1 [43]">
+ Illegal markup (&lt;% ... %&gt;)</TEST>
+
+<TEST URI="not-wf/element04.xml" ID="element04" TYPE="not-wf" SECTIONS="3.1 [43]">
+ Illegal markup (&lt;!ELEMENT ... &gt;)</TEST>
+
+<TEST URI="not-wf/encoding01.xml" ID="encoding01" TYPE="not-wf" SECTIONS="4.3.3 [81]">
+ Illegal character " " in encoding name</TEST>
+
+<TEST URI="not-wf/encoding02.xml" ID="encoding02" TYPE="not-wf" SECTIONS="4.3.3 [81]">
+ Illegal character "/" in encoding name</TEST>
+
+<TEST URI="not-wf/encoding03.xml" ID="encoding03" TYPE="not-wf" SECTIONS="4.3.3 [81]">
+ Illegal character reference in encoding name</TEST>
+
+<TEST URI="not-wf/encoding04.xml" ID="encoding04" TYPE="not-wf" SECTIONS="4.3.3 [81]">
+ Illegal character ":" in encoding name</TEST>
+
+<TEST URI="not-wf/encoding05.xml" ID="encoding05" TYPE="not-wf" SECTIONS="4.3.3 [81]">
+ Illegal character "@" in encoding name</TEST>
+
+<TEST URI="not-wf/encoding06.xml" ID="encoding06" TYPE="not-wf" SECTIONS="4.3.3 [81]">
+ Illegal character "+" in encoding name</TEST>
+
+<TEST URI="not-wf/encoding07.xml" ID="encoding07" TYPE="not-wf" SECTIONS="4.3.1 [77]" ENTITIES="parameter">
+ Text declarations (which optionally begin any external entity)
+ are required to have "encoding=...". </TEST>
+
+<TEST URI="not-wf/pi.xml" ID="pi" TYPE="not-wf" SECTIONS="2.6 [16]">
+ No space between PI target name and data</TEST>
+
+<TEST URI="not-wf/pubid01.xml" ID="pubid01" TYPE="not-wf" SECTIONS="2.3 [12]">
+ Illegal entity ref in public ID</TEST>
+
+<TEST URI="not-wf/pubid02.xml" ID="pubid02" TYPE="not-wf" SECTIONS="2.3 [12]">
+ Illegal characters in public ID</TEST>
+
+<TEST URI="not-wf/pubid03.xml" ID="pubid03" TYPE="not-wf" SECTIONS="2.3 [12]">
+ Illegal characters in public ID</TEST>
+
+<TEST URI="not-wf/pubid04.xml" ID="pubid04" TYPE="not-wf" SECTIONS="2.3 [12]">
+ Illegal characters in public ID</TEST>
+
+<TEST URI="not-wf/pubid05.xml" ID="pubid05" TYPE="not-wf" SECTIONS="2.3 [12]">
+ SGML-ism: public ID without system ID</TEST>
+
+<TEST URI="not-wf/sgml01.xml" ID="sgml01" TYPE="not-wf" SECTIONS="3 [39]">
+ SGML-ism: omitted end tag for EMPTY content</TEST>
+
+<TEST URI="not-wf/sgml02.xml" ID="sgml02" TYPE="not-wf" SECTIONS="2.8 ">
+ XML declaration must be at the very beginning of a document;
+ it"s not a processing instruction</TEST>
+
+<TEST URI="not-wf/sgml03.xml" ID="sgml03" TYPE="not-wf" SECTIONS="2.5 [15]">
+ Comments may not contain "--"</TEST>
+
+<TEST URI="not-wf/sgml04.xml" ID="sgml04" TYPE="not-wf" SECTIONS="3.3 [52]">
+ ATTLIST declarations apply to only one element, unlike SGML</TEST>
+
+<TEST URI="not-wf/sgml05.xml" ID="sgml05" TYPE="not-wf" SECTIONS="3.2 [45]">
+ ELEMENT declarations apply to only one element, unlike SGML</TEST>
+
+<TEST URI="not-wf/sgml06.xml" ID="sgml06" TYPE="not-wf" SECTIONS="3.3 [52]">
+ ATTLIST declarations are never global, unlike in SGML</TEST>
+
+<TEST URI="not-wf/sgml07.xml" ID="sgml07" TYPE="not-wf" SECTIONS="3.2 [45]">
+ SGML Tag minimization specifications are not allowed</TEST>
+
+<TEST URI="not-wf/sgml08.xml" ID="sgml08" TYPE="not-wf" SECTIONS="3.2 [45]">
+ SGML Tag minimization specifications are not allowed</TEST>
+
+<TEST URI="not-wf/sgml09.xml" ID="sgml09" TYPE="not-wf" SECTIONS="3.2 [45]">
+ SGML Content model exception specifications are not allowed</TEST>
+
+<TEST URI="not-wf/sgml10.xml" ID="sgml10" TYPE="not-wf" SECTIONS="3.2 [45]">
+ SGML Content model exception specifications are not allowed</TEST>
+
+<TEST URI="not-wf/sgml11.xml" ID="sgml11" TYPE="not-wf" SECTIONS="3.2 [46]">
+ CDATA is not a valid content model spec</TEST>
+
+<TEST URI="not-wf/sgml12.xml" ID="sgml12" TYPE="not-wf" SECTIONS="3.2 [46]">
+ RCDATA is not a valid content model spec</TEST>
+
+<TEST URI="not-wf/sgml13.xml" ID="sgml13" TYPE="not-wf" SECTIONS="3.2.1 [47]">
+ SGML Unordered content models not allowed</TEST>
+
+
+<!--
+ @(#)error.xml 1.6 98/12/29
+ Copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+-->
+
+<TEST URI="not-wf/uri01.xml" ID="uri01" TYPE="error" SECTIONS="4.2.2 [75]">
+ SYSTEM ids may not have URI fragments</TEST>
+
+
+</TESTCASES>
+
+<TESTCASES PROFILE="OASIS/NIST XML 1.0 Tests" xml:base="oasis/">
+
+
+<TESTCASES PROFILE="OASIS/NIST TESTS, 1-Nov-1998">
+
+ <TEST TYPE="valid" SECTIONS="2.2 [1]" ID="o-p01pass2" URI="p01pass2.xml">
+ various Misc items where they can occur
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.3 [6]" ID="o-p06pass1" URI="p06pass1.xml">
+ various satisfactions of the Names production in a NAMES
+ attribute
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.3 [7]" ID="o-p07pass1" URI="p07pass1.xml">
+ various valid Nmtoken 's in an attribute list declaration.
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.3 [8]" ID="o-p08pass1" URI="p08pass1.xml" NAMESPACE="no">
+ various satisfaction of an NMTOKENS attribute value.
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.3 [9]" ID="o-p09pass1" ENTITIES="parameter" URI="p09pass1.xml">
+ valid EntityValue's. Except for entity references,
+ markup is not recognized.
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.3 [12]" ID="o-p12pass1" URI="p12pass1.xml">
+ valid public IDs.
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.8 [22]" ID="o-p22pass4" URI="p22pass4.xml">
+ XML decl and doctypedecl
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.8 [22]" ID="o-p22pass5" URI="p22pass5.xml">
+ just doctypedecl
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.8 [22]" ID="o-p22pass6" URI="p22pass6.xml">
+ S between decls is not required
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.1 [43] [44]" ID="o-p28pass1" URI="p28pass1.xml">
+ Empty-element tag must be used for element which are declared EMPTY. </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.8 4.1 [28] [69]" ID="o-p28pass3" ENTITIES="parameter" URI="p28pass3.xml">
+ Valid doctypedecl with Parameter entity reference. The declaration of a parameter entity must precede any reference to it. </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.8 4.2.2 [28] [75]" ID="o-p28pass4" ENTITIES="parameter" URI="p28pass4.xml">
+ Valid doctypedecl with ExternalID as an External Entity declaration. </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.8 4.1 [28] [69]" ID="o-p28pass5" ENTITIES="parameter" URI="p28pass5.xml">
+ Valid doctypedecl with ExternalID as an External Entity. A parameter entity reference is also used. </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.8 [29]" ID="o-p29pass1" URI="p29pass1.xml">
+ Valid types of markupdecl.
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.8 4.2.2 [30] [75]" ID="o-p30pass1" ENTITIES="parameter" URI="p30pass1.xml">
+ Valid doctypedecl with ExternalID as an External Entity. The external entity has an element declaration. </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.8 4.2.2 4.3.1 [30] [75] [77]" ID="o-p30pass2" ENTITIES="parameter" URI="p30pass2.xml">
+ Valid doctypedecl with ExternalID as an Enternal Entity. The external entity begins with a Text Declaration. </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.8 [31]" ID="o-p31pass1" ENTITIES="parameter" URI="p31pass1.xml">
+ external subset can be empty
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.8 3.4 4.2.2 [31] [62] [63] [75]" ID="o-p31pass2" ENTITIES="parameter" URI="p31pass2.xml">
+ Valid doctypedecl with EXternalID as Enternal Entity. The external entity contains a parameter entity reference and condtional sections.</TEST>
+
+ <TEST TYPE="valid" SECTIONS="2.4 2.5 2.6 2.7 [15] [16] [18]" ID="o-p43pass1" URI="p43pass1.xml">
+ Valid use of character data, comments, processing instructions and CDATA sections within the start and end tag. </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.2 [45]" ID="o-p45pass1" URI="p45pass1.xml">
+ valid element declarations
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.2 3.2.1 3.2.2 [45] [46] [47] [51]" ID="o-p46pass1" URI="p46pass1.xml">
+ Valid use of contentspec, element content models, and mixed content within an element type declaration. </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.2 3.2.1 [45] [46] [47] " ID="o-p47pass1" URI="p47pass1.xml">
+ Valid use of contentspec, element content models, choices, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.2 3.2.1 [45] [46] [47]" ID="o-p48pass1" URI="p48pass1.xml">
+ Valid use of contentspec, element content models, choices, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.2 3.2.1 [45] [46] [47]" ID="o-p49pass1" URI="p49pass1.xml">
+ Valid use of contentspec, element content models, choices, and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Whitespace is also valid between choices. </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.2 3.2.1 [45] [46] [47]" ID="o-p50pass1" URI="p50pass1.xml">
+ Valid use of contentspec, element content models, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Whitespace is also valid between sequences. </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.2.2 [51]" ID="o-p51pass1" URI="p51pass1.xml">
+ valid Mixed contentspec's.
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.3 [52]" ID="o-p52pass1" URI="p52pass1.xml">
+ valid AttlistDecls: No AttDef's are required,
+ and the terminating
+ S is optional, multiple ATTLISTS per element are OK, and multiple
+ declarations of the same attribute are OK.
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.3 [53]" ID="o-p53pass1" URI="p53pass1.xml">
+ a valid AttDef
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.3.1 [54]" ID="o-p54pass1" URI="p54pass1.xml">
+ the three kinds of attribute types
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.3.1 [55]" ID="o-p55pass1" URI="p55pass1.xml">
+ StringType = "CDATA"
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.3.1 [56]" ID="o-p56pass1" URI="p56pass1.xml">
+ the 7 tokenized attribute types
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.3.1 [57]" ID="o-p57pass1" URI="p57pass1.xml">
+ enumerated types are NMTOKEN or NOTATION lists
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.3.1 [58]" ID="o-p58pass1" URI="p58pass1.xml">
+ NOTATION enumeration has on or more items
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.3.1 [59]" ID="o-p59pass1" URI="p59pass1.xml">
+ NMTOKEN enumerations haveon or more items
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.3.2 [60]" ID="o-p60pass1" URI="p60pass1.xml">
+ the four types of default values
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.4 [61]" ID="o-p61pass1" ENTITIES="parameter" URI="p61pass1.xml">
+ valid conditional sections are INCLUDE and IGNORE
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.4 [62]" ID="o-p62pass1" ENTITIES="parameter" URI="p62pass1.xml">
+ valid INCLUDE sections -- options S before and
+ after keyword, sections can nest
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.4 [63]" ID="o-p63pass1" ENTITIES="parameter" URI="p63pass1.xml">
+ valid IGNORE sections
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="3.4 [64]" ID="o-p64pass1" ENTITIES="parameter" URI="p64pass1.xml">
+ IGNOREd sections ignore everything except section delimiters
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="4.1 [68]" ID="o-p68pass1" URI="p68pass1.xml">
+ Valid entity references. Also ensures that a charref to
+ '&amp;' isn't interpreted as an entity reference open delimiter
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="4.1 [69]" ID="o-p69pass1" ENTITIES="parameter" URI="p69pass1.xml">
+ Valid PEReferences.
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="4.2 [70]" ID="o-p70pass1" URI="p70pass1.xml">
+ An EntityDecl is either a GEDecl or a PEDecl
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="4.2 [71]" ID="o-p71pass1" URI="p71pass1.xml">
+ Valid GEDecls
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="4.2 [72]" ID="o-p72pass1" URI="p72pass1.xml">
+ Valid PEDecls
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="4.2 [73]" ID="o-p73pass1" URI="p73pass1.xml">
+ EntityDef is either Entity value or an external id,
+ with an optional NDataDecl
+ </TEST>
+
+ <TEST TYPE="valid" SECTIONS="4.2.2 [76]" ID="o-p76pass1" URI="p76pass1.xml">
+ valid NDataDecls
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.1 [1]" ID="o-p01pass1" URI="p01pass1.xml">
+ no prolog
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.1 [1]" ID="o-p01pass3" URI="p01pass3.xml">
+ Misc items after the document
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.3 [3]" ID="o-p03pass1" URI="p03pass1.xml">
+ all valid S characters
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.3 [4]" ID="o-p04pass1" URI="p04pass1.xml" NAMESPACE="no">
+ names with all valid ASCII characters, and one from each
+ other class in NameChar
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.3 [5]" ID="o-p05pass1" URI="p05pass1.xml" NAMESPACE="no">
+ various valid Name constructions
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.3 [6]" ID="o-p06fail1" URI="p06fail1.xml">
+ Requires at least one name.
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.3 [8]" ID="o-p08fail1" URI="p08fail1.xml">
+ at least one Nmtoken is required.
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.3 [8]" ID="o-p08fail2" URI="p08fail2.xml">
+ an invalid Nmtoken character.
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.3 [10]" ID="o-p10pass1" URI="p10pass1.xml">
+ valid attribute values
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.4 [14]" ID="o-p14pass1" URI="p14pass1.xml">
+ valid CharData
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.5 [15]" ID="o-p15pass1" URI="p15pass1.xml">
+ valid comments
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.6 [16] [17]" ID="o-p16pass1" URI="p16pass1.xml">
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.6 [16]" ID="o-p16pass2" URI="p16pass2.xml">
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.6 [16]" ID="o-p16pass3" URI="p16pass3.xml">
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.7 [18]" ID="o-p18pass1" URI="p18pass1.xml">
+ valid CDSect's. Note that a CDStart in a CDSect is not
+ recognized as such
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [22]" ID="o-p22pass1" URI="p22pass1.xml">
+ prolog can be empty
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [22]" ID="o-p22pass2" URI="p22pass2.xml">
+ XML declaration only
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [22]" ID="o-p22pass3" URI="p22pass3.xml">
+ XML decl and Misc
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [23]" ID="o-p23pass1" URI="p23pass1.xml">
+ Test shows a valid XML declaration along with version info. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [23]" ID="o-p23pass2" URI="p23pass2.xml">
+ Test shows a valid XML declaration along with encoding declaration. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [23]" ID="o-p23pass3" URI="p23pass3.xml">
+ Test shows a valid XML declaration along with Standalone Document Declaration. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [23]" ID="o-p23pass4" URI="p23pass4.xml">
+ Test shows a valid XML declaration, encoding declarationand Standalone Document Declaration. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [24]" ID="o-p24pass1" URI="p24pass1.xml">
+ Test shows a prolog that has the VersionInfo delimited by double quotes. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [24]" ID="o-p24pass2" URI="p24pass2.xml">
+ Test shows a prolog that has the VersionInfo delimited by single quotes. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [24]" ID="o-p24pass3" URI="p24pass3.xml">
+ Test shows whitespace is allowed in prolog before version info. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [24]" ID="o-p24pass4" URI="p24pass4.xml">
+ Test shows whitespace is allowed in prolog on both sides of equal sign. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [25]" ID="o-p25pass1" URI="p25pass1.xml">
+ Test shows whitespace is NOT necessary before or after equal sign of versioninfo. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [25]" ID="o-p25pass2" URI="p25pass2.xml">
+ Test shows whitespace can be used on both sides of equal sign of versioninfo. </TEST>
+
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [26]" ID="o-p26pass1" URI="p26pass1.xml">
+ The valid version number. We cannot test others because
+ a 1.0 processor is allowed to fail them.
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [27]" ID="o-p27pass1" URI="p27pass1.xml">
+ Comments are valid as the Misc part of the prolog. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [27]" ID="o-p27pass2" URI="p27pass2.xml">
+ Processing Instructions are valid as the Misc part of the prolog. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [27]" ID="o-p27pass3" URI="p27pass3.xml">
+ Whitespace is valid as the Misc part of the prolog. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.8 [27]" ID="o-p27pass4" URI="p27pass4.xml">
+ A combination of comments, whitespaces and processing instructions are valid as the Misc part of the prolog. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.9 [32]" ID="o-p32pass1" URI="p32pass1.xml">
+ Double quotes can be used as delimeters for the value of a Standalone Document Declaration. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="2.9 [32]" ID="o-p32pass2" URI="p32pass2.xml">
+ Single quotes can be used as delimeters for the value of a Standalone Document Declaration. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3 3.1 [39] [44]" ID="o-p39pass1" URI="p39pass1.xml">
+ Empty element tag may be used for any element which has no content. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3 3.1 [39] [43]" ID="o-p39pass2" URI="p39pass2.xml">
+ Character data is valid element content. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.1 [40]" ID="o-p40pass1" URI="p40pass1.xml">
+ Elements content can be empty. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.1 [40]" ID="o-p40pass2" URI="p40pass2.xml">
+ Whitespace is valid within a Start-tag. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.1 [40] [41]" ID="o-p40pass3" URI="p40pass3.xml">
+ Attributes are valid within a Start-tag. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.1 [40]" ID="o-p40pass4" URI="p40pass4.xml">
+ Whitespace and Multiple Attributes are valid within a Start-tag. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.1 [41]" ID="o-p41pass1" URI="p41pass1.xml">
+ Attributes are valid within a Start-tag. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.1 [41]" ID="o-p41pass2" URI="p41pass2.xml">
+ Whitespace is valid within a Start-tags Attribute. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.1 [42]" ID="o-p42pass1" URI="p42pass1.xml">
+ Test shows proper syntax for an End-tag. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.1 [42]" ID="o-p42pass2" URI="p42pass2.xml">
+ Whitespace is valid after name in End-tag. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.1 [44]" ID="o-p44pass1" URI="p44pass1.xml">
+ Valid display of an Empty Element Tag. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.1 [44]" ID="o-p44pass2" URI="p44pass2.xml">
+ Empty Element Tags can contain an Attribute. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.1 [44]" ID="o-p44pass3" URI="p44pass3.xml">
+ Whitespace is valid in an Empty Element Tag following the end of the attribute value. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.1 [44]" ID="o-p44pass4" URI="p44pass4.xml">
+ Whitespace is valid after the name in an Empty Element Tag. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.1 [44]" ID="o-p44pass5" URI="p44pass5.xml">
+ Whitespace and Multiple Attributes are valid in an Empty Element Tag. </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="4.1 [66]" ID="o-p66pass1" URI="p66pass1.xml">
+ valid character references
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="4.2 [74]" ID="o-p74pass1" URI="p74pass1.xml">
+ PEDef is either an entity value or an external id
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="4.2.2 [75]" ID="o-p75pass1" URI="p75pass1.xml">
+ valid external identifiers
+ </TEST>
+
+ <TEST TYPE="invalid" SECTIONS="3.3.1 [58] [59] Errata [E2]" ID="o-e2" URI="e2.xml">
+ Validity Constraint: No duplicate tokens
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.1 [1]" ID="o-p01fail1" URI="p01fail1.xml">
+ S cannot occur before the prolog
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.1 [1]" ID="o-p01fail2" URI="p01fail2.xml">
+ comments cannot occur before the prolog
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.1 [1]" ID="o-p01fail3" URI="p01fail3.xml">
+ only one document element
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.1 [1]" ID="o-p01fail4" URI="p01fail4.xml">
+ document element must be complete.
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail1" URI="p02fail1.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail10" URI="p02fail10.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail11" URI="p02fail11.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail12" URI="p02fail12.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail13" URI="p02fail13.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail14" URI="p02fail14.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail15" URI="p02fail15.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail16" URI="p02fail16.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail17" URI="p02fail17.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail18" URI="p02fail18.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail19" URI="p02fail19.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail2" URI="p02fail2.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail20" URI="p02fail20.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail21" URI="p02fail21.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail22" URI="p02fail22.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail23" URI="p02fail23.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail24" URI="p02fail24.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail25" URI="p02fail25.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail26" URI="p02fail26.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail27" URI="p02fail27.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail28" URI="p02fail28.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail29" URI="p02fail29.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail3" URI="p02fail3.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail30" URI="p02fail30.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail31" URI="p02fail31.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail4" URI="p02fail4.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail5" URI="p02fail5.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail6" URI="p02fail6.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail7" URI="p02fail7.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail8" URI="p02fail8.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.2 [2]" ID="o-p02fail9" URI="p02fail9.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail1" URI="p03fail1.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail10" URI="p03fail10.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail11" URI="p03fail11.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail12" URI="p03fail12.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail13" URI="p03fail13.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail14" URI="p03fail14.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail15" URI="p03fail15.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail16" URI="p03fail16.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail17" URI="p03fail17.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail18" URI="p03fail18.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail19" URI="p03fail19.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail2" URI="p03fail2.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail20" URI="p03fail20.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail21" URI="p03fail21.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail22" URI="p03fail22.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail23" URI="p03fail23.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail24" URI="p03fail24.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail25" URI="p03fail25.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail26" URI="p03fail26.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail27" URI="p03fail27.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail28" URI="p03fail28.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail29" URI="p03fail29.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail3" URI="p03fail3.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail4" URI="p03fail4.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail5" URI="p03fail5.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail7" URI="p03fail7.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail8" URI="p03fail8.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [3]" ID="o-p03fail9" URI="p03fail9.xml">
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [4]" ID="o-p04fail1" URI="p04fail1.xml">
+ Name contains invalid character. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [4]" ID="o-p04fail2" URI="p04fail2.xml">
+ Name contains invalid character. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [4]" ID="o-p04fail3" URI="p04fail3.xml">
+ Name contains invalid character. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [5]" ID="o-p05fail1" URI="p05fail1.xml">
+ a Name cannot start with a digit
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [5]" ID="o-p05fail2" URI="p05fail2.xml">
+ a Name cannot start with a '.'
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [5]" ID="o-p05fail3" URI="p05fail3.xml">
+ a Name cannot start with a "-"
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [5]" ID="o-p05fail4" URI="p05fail4.xml">
+ a Name cannot start with a CombiningChar
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [5]" ID="o-p05fail5" URI="p05fail5.xml">
+ a Name cannot start with an Extender
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [9]" ID="o-p09fail1" ENTITIES="parameter" URI="p09fail1.xml">
+ EntityValue excludes '%'
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [9]" ID="o-p09fail2" ENTITIES="parameter" URI="p09fail2.xml">
+ EntityValue excludes '&amp;'
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [9]" ID="o-p09fail3" URI="p09fail3.xml">
+ incomplete character reference
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [9]" ID="o-p09fail4" URI="p09fail4.xml">
+ quote types must match
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [9]" ID="o-p09fail5" URI="p09fail5.xml">
+ quote types must match
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [10]" ID="o-p10fail1" URI="p10fail1.xml">
+ attribute values exclude '&lt;'
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [10]" ID="o-p10fail2" URI="p10fail2.xml">
+ attribute values exclude '&amp;'
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [10]" ID="o-p10fail3" URI="p10fail3.xml">
+ quote types must match
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [11]" ID="o-p11fail1" URI="p11fail1.xml">
+ quote types must match
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [11]" ID="o-p11fail2" URI="p11fail2.xml">
+ cannot contain delimiting quotes
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [12]" ID="o-p12fail1" URI="p12fail1.xml">
+ '"' excluded
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [12]" ID="o-p12fail2" URI="p12fail2.xml">
+ '\' excluded
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [12]" ID="o-p12fail3" URI="p12fail3.xml">
+ entity references excluded
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [12]" ID="o-p12fail4" URI="p12fail4.xml">
+ '&gt;' excluded
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [12]" ID="o-p12fail5" URI="p12fail5.xml">
+ '&lt;' excluded
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [12]" ID="o-p12fail6" URI="p12fail6.xml">
+ built-in entity refs excluded
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.3 [13]" ID="o-p12fail7" URI="p12fail7.xml">
+ The public ID has a tab character, which is disallowed
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.4 [14]" ID="o-p14fail1" URI="p14fail1.xml">
+ '&lt;' excluded
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.4 [14]" ID="o-p14fail2" URI="p14fail2.xml">
+ '&amp;' excluded
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.4 [14]" ID="o-p14fail3" URI="p14fail3.xml">
+ "]]&gt;" excluded
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.5 [15]" ID="o-p15fail1" URI="p15fail1.xml">
+ comments can't end in '-'
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.5 [15]" ID="o-p15fail2" URI="p15fail2.xml">
+ one comment per comment (contrasted with SGML)
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.5 [15]" ID="o-p15fail3" URI="p15fail3.xml">
+ can't include 2 or more adjacent '-'s
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.6 [16]" ID="o-p16fail1" URI="p16fail1.xml">
+ "xml" is an invalid PITarget
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.6 [16]" ID="o-p16fail2" URI="p16fail2.xml">
+ a PITarget must be present
+ </TEST>
+
+<TEST TYPE="not-wf" SECTIONS="2.6 [16]" ID="o-p16fail3" URI="p16fail3.xml">
+ S after PITarget is required
+ </TEST>
+
+
+ <TEST TYPE="not-wf" SECTIONS="2.7 [18]" ID="o-p18fail1" URI="p18fail1.xml">
+ no space before "CDATA"
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.7 [18]" ID="o-p18fail2" URI="p18fail2.xml">
+ no space after "CDATA"
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.7 [18]" ID="o-p18fail3" URI="p18fail3.xml">
+ CDSect's can't nest
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [22]" ID="o-p22fail1" URI="p22fail1.xml">
+ prolog must start with XML decl
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [22]" ID="o-p22fail2" URI="p22fail2.xml">
+ prolog must start with XML decl
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [23]" ID="o-p23fail1" URI="p23fail1.xml">
+ "xml" must be lower-case
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [23]" ID="o-p23fail2" URI="p23fail2.xml">
+ VersionInfo must be supplied
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [23]" ID="o-p23fail3" URI="p23fail3.xml">
+ VersionInfo must come first
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [23]" ID="o-p23fail4" URI="p23fail4.xml">
+ SDDecl must come last
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [23]" ID="o-p23fail5" URI="p23fail5.xml">
+ no SGML-type PIs
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [24]" ID="o-p24fail1" URI="p24fail1.xml">
+ quote types must match
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [24]" ID="o-p24fail2" URI="p24fail2.xml">
+ quote types must match
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [25]" ID="o-p25fail1" URI="p25fail1.xml">
+ Comment is illegal in VersionInfo. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [26]" ID="o-p26fail1" URI="p26fail1.xml">
+ Illegal character in VersionNum. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [26]" ID="o-p26fail2" URI="p26fail2.xml">
+ Illegal character in VersionNum. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [27]" ID="o-p27fail1" URI="p27fail1.xml">
+ References aren't allowed in Misc,
+ even if they would resolve to valid Misc.
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [28]" ID="o-p28fail1" URI="p28fail1.xml">
+ only declarations in DTD.
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [29]" ID="o-p29fail1" URI="p29fail1.xml">
+ A processor must not pass unknown declaration types.
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [30]" ID="o-p30fail1" ENTITIES="parameter" URI="p30fail1.xml">
+ An XML declaration is not the same as a TextDecl
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [31]" ID="o-p31fail1" ENTITIES="parameter" URI="p31fail1.xml">
+ external subset excludes doctypedecl
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.9 [32]" ID="o-p32fail1" URI="p32fail1.xml">
+ quote types must match
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.9 [32]" ID="o-p32fail2" URI="p32fail2.xml">
+ quote types must match
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.9 [32]" ID="o-p32fail3" URI="p32fail3.xml">
+ initial S is required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.9 [32]" ID="o-p32fail4" URI="p32fail4.xml">
+ quotes are required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.9 [32]" ID="o-p32fail5" URI="p32fail5.xml">
+ yes or no must be lower case
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3 [39]" ID="o-p39fail1" URI="p39fail1.xml">
+ start-tag requires end-tag
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3 [39]" ID="o-p39fail2" URI="p39fail2.xml">
+ end-tag requires start-tag
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3 [39]" ID="o-p39fail3" URI="p39fail3.xml">
+ XML documents contain one or more elements</TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [23]" ID="o-p39fail4" URI="p39fail4.xml">
+ XML declarations must be correctly terminated </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="2.8 [23]" ID="o-p39fail5" URI="p39fail5.xml">
+ XML declarations must be correctly terminated </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [40]" ID="o-p40fail1" URI="p40fail1.xml">
+ S is required between attributes
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [40]" ID="o-p40fail2" URI="p40fail2.xml">
+ tags start with names, not nmtokens
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [40]" ID="o-p40fail3" URI="p40fail3.xml">
+ tags start with names, not nmtokens
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [40]" ID="o-p40fail4" URI="p40fail4.xml">
+ no space before name
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [41]" ID="o-p41fail1" URI="p41fail1.xml">
+ quotes are required (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [41]" ID="o-p41fail2" URI="p41fail2.xml">
+ attribute name is required (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [41]" ID="o-p41fail3" URI="p41fail3.xml">
+ Eq required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [42]" ID="o-p42fail1" URI="p42fail1.xml">
+ no space before name
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [42]" ID="o-p42fail2" URI="p42fail2.xml">
+ cannot end with "/&gt;"
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [42]" ID="o-p42fail3" URI="p42fail3.xml">
+ no NET (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [43]" ID="o-p43fail1" URI="p43fail1.xml">
+ no non-comment declarations
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [43]" ID="o-p43fail2" URI="p43fail2.xml">
+ no conditional sections
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [43]" ID="o-p43fail3" URI="p43fail3.xml">
+ no conditional sections
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [44]" ID="o-p44fail1" URI="p44fail1.xml">
+ Illegal space before Empty element tag. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [44]" ID="o-p44fail2" URI="p44fail2.xml">
+ Illegal space after Empty element tag. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [44]" ID="o-p44fail3" URI="p44fail3.xml">
+ Illegal comment in Empty element tag. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [44]" ID="o-p44fail4" URI="p44fail4.xml">
+ Whitespace required between attributes. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.1 [44]" ID="o-p44fail5" URI="p44fail5.xml">
+ Duplicate attribute name is illegal. </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2 [45]" ID="o-p45fail1" URI="p45fail1.xml">
+ ELEMENT must be upper case.
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2 [45]" ID="o-p45fail2" URI="p45fail2.xml">
+ S before contentspec is required.
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2 [45]" ID="o-p45fail3" URI="p45fail3.xml">
+ only one content spec
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2 [45]" ID="o-p45fail4" URI="p45fail4.xml">
+ no comments in declarations (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2 [46]" ID="o-p46fail1" URI="p46fail1.xml">
+ no parens on declared content
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2 [46]" ID="o-p46fail2" URI="p46fail2.xml">
+ no inclusions (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2 [46]" ID="o-p46fail3" URI="p46fail3.xml">
+ no exclusions (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2 [46]" ID="o-p46fail4" URI="p46fail4.xml">
+ no space before occurrence
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2 [46]" ID="o-p46fail5" URI="p46fail5.xml">
+ single group
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2 [46]" ID="o-p46fail6" URI="p46fail6.xml">
+ can't be both declared and modeled
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.1 [47]" ID="o-p47fail1" URI="p47fail1.xml">
+ Invalid operator '|' must match previous operator ','</TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.1 [47]" ID="o-p47fail2" URI="p47fail2.xml">
+ Illegal character '-' in Element-content model </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.1 [47]" ID="o-p47fail3" URI="p47fail3.xml">
+ Optional character must follow a name or list </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.1 [47]" ID="o-p47fail4" URI="p47fail4.xml">
+ Illegal space before optional character</TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.1 [48]" ID="o-p48fail1" URI="p48fail1.xml">
+ Illegal space before optional character </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.1 [48]" ID="o-p48fail2" URI="p48fail2.xml">
+ Illegal space before optional character </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.1 [49]" ID="o-p49fail1" URI="p49fail1.xml">
+ connectors must match </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.1 [50]" ID="o-p50fail1" URI="p50fail1.xml">
+ connectors must match </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.2 [51]" ID="o-p51fail1" URI="p51fail1.xml">
+ occurrence on #PCDATA group must be *
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.2 [51]" ID="o-p51fail2" URI="p51fail2.xml">
+ occurrence on #PCDATA group must be *
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.2 [51]" ID="o-p51fail3" URI="p51fail3.xml">
+ #PCDATA must come first
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.2 [51]" ID="o-p51fail4" URI="p51fail4.xml">
+ occurrence on #PCDATA group must be *
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.2 [51]" ID="o-p51fail5" URI="p51fail5.xml">
+ only '|' connectors
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.2 [51]" ID="o-p51fail6" URI="p51fail6.xml">
+ Only '|' connectors and occurrence on #PCDATA group must be * </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.2.2 [51]" ID="o-p51fail7" URI="p51fail7.xml">
+ no nested groups
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3 [52]" ID="o-p52fail1" URI="p52fail1.xml">
+ A name is required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3 [52]" ID="o-p52fail2" URI="p52fail2.xml">
+ A name is required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3 [53]" ID="o-p53fail1" URI="p53fail1.xml">
+ S is required before default
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3 [53]" ID="o-p53fail2" URI="p53fail2.xml">
+ S is required before type
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3 [53]" ID="o-p53fail3" URI="p53fail3.xml">
+ type is required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3 [53]" ID="o-p53fail4" URI="p53fail4.xml">
+ default is required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3 [53]" ID="o-p53fail5" URI="p53fail5.xml">
+ name is requried
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [54]" ID="o-p54fail1" URI="p54fail1.xml">
+ don't pass unknown attribute types
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [55]" ID="o-p55fail1" URI="p55fail1.xml">
+ must be upper case
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [56]" ID="o-p56fail1" URI="p56fail1.xml">
+ no IDS type
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [56]" ID="o-p56fail2" URI="p56fail2.xml">
+ no NUMBER type
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [56]" ID="o-p56fail3" URI="p56fail3.xml">
+ no NAME type
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [56]" ID="o-p56fail4" URI="p56fail4.xml">
+ no ENTITYS type
+- types must be upper case
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [56]" ID="o-p56fail5" URI="p56fail5.xml">
+ types must be upper case </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [57]" ID="o-p57fail1" URI="p57fail1.xml">
+ no keyword for NMTOKEN enumeration
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [58]" ID="o-p58fail1" URI="p58fail1.xml">
+ at least one value required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [58]" ID="o-p58fail2" URI="p58fail2.xml">
+ separator must be '|'
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [58]" ID="o-p58fail3" URI="p58fail3.xml">
+ notations are NAMEs, not NMTOKENs -- note:
+ Leaving the invalid
+ notation undeclared would cause a validating parser to fail without
+ checking the name syntax, so the notation is declared with an
+ invalid name. A parser that reports error positions should report
+ an error at the AttlistDecl on line 6, before reaching the notation
+ declaration.
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [58]" ID="o-p58fail4" URI="p58fail4.xml">
+ NOTATION must be upper case
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [58]" ID="o-p58fail5" URI="p58fail5.xml">
+ S after keyword is required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [58]" ID="o-p58fail6" URI="p58fail6.xml">
+ parentheses are require
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [58]" ID="o-p58fail7" URI="p58fail7.xml">
+ values are unquoted
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [58]" ID="o-p58fail8" URI="p58fail8.xml">
+ values are unquoted
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [59]" ID="o-p59fail1" URI="p59fail1.xml">
+ at least one required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [59]" ID="o-p59fail2" URI="p59fail2.xml">
+ separator must be ","
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.1 [59]" ID="o-p59fail3" URI="p59fail3.xml">
+ values are unquoted
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.2 [60]" ID="o-p60fail1" URI="p60fail1.xml">
+ keywords must be upper case
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.2 [60]" ID="o-p60fail2" URI="p60fail2.xml">
+ S is required after #FIXED
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.2 [60]" ID="o-p60fail3" URI="p60fail3.xml">
+ only #FIXED has both keyword and value
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.2 [60]" ID="o-p60fail4" URI="p60fail4.xml">
+ #FIXED required value
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.3.2 [60]" ID="o-p60fail5" URI="p60fail5.xml">
+ only one default type
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.4 [61]" ID="o-p61fail1" ENTITIES="parameter" URI="p61fail1.xml">
+ no other types, including TEMP, which is valid in SGML
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.4 [62]" ID="o-p62fail1" ENTITIES="parameter" URI="p62fail1.xml">
+ INCLUDE must be upper case
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.4 [62]" ID="o-p62fail2" ENTITIES="parameter" URI="p62fail2.xml">
+ no spaces in terminating delimiter
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.4 [63]" ID="o-p63fail1" ENTITIES="parameter" URI="p63fail1.xml">
+ IGNORE must be upper case
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.4 [63]" ID="o-p63fail2" ENTITIES="parameter" URI="p63fail2.xml">
+ delimiters must be balanced
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.4 [64]" ID="o-p64fail1" ENTITIES="parameter" URI="p64fail1.xml">
+ section delimiters must balance
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="3.4 [64]" ID="o-p64fail2" ENTITIES="parameter" URI="p64fail2.xml">
+ section delimiters must balance
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.1 [66]" ID="o-p66fail1" URI="p66fail1.xml">
+ terminating ';' is required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.1 [66]" ID="o-p66fail2" URI="p66fail2.xml">
+ no S after '&amp;#'
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.1 [66]" ID="o-p66fail3" URI="p66fail3.xml">
+ no hex digits in numeric reference
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.1 [66]" ID="o-p66fail4" URI="p66fail4.xml">
+ only hex digits in hex references
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.1 [66]" ID="o-p66fail5" URI="p66fail5.xml">
+ no references to non-characters
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.1 [66]" ID="o-p66fail6" URI="p66fail6.xml">
+ no references to non-characters
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.1 [68]" ID="o-p68fail1" URI="p68fail1.xml">
+ terminating ';' is required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.1 [68]" ID="o-p68fail2" URI="p68fail2.xml">
+ no S after '&amp;'
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.1 [68]" ID="o-p68fail3" URI="p68fail3.xml">
+ no S before ';'
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.1 [69]" ID="o-p69fail1" URI="p69fail1.xml">
+ terminating ';' is required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.1 [69]" ID="o-p69fail2" URI="p69fail2.xml">
+ no S after '%'
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.1 [69]" ID="o-p69fail3" URI="p69fail3.xml">
+ no S before ';'
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [70]" ID="o-p70fail1" URI="p70fail1.xml">
+ This is neither
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [71]" ID="o-p71fail1" URI="p71fail1.xml">
+ S is required before EntityDef
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [71]" ID="o-p71fail2" URI="p71fail2.xml">
+ Entity name is a Name, not an NMToken
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [71]" ID="o-p71fail3" URI="p71fail3.xml">
+ no S after "&lt;!"
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [71]" ID="o-p71fail4" URI="p71fail4.xml">
+ S is required after "&lt;!ENTITY"
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [72]" ID="o-p72fail1" URI="p72fail1.xml">
+ S is required after "&lt;!ENTITY"
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [72]" ID="o-p72fail2" URI="p72fail2.xml">
+ S is required after '%'
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [72]" ID="o-p72fail3" URI="p72fail3.xml">
+ S is required after name
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [72]" ID="o-p72fail4" URI="p72fail4.xml">
+ Entity name is a name, not an NMToken
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [73]" ID="o-p73fail1" URI="p73fail1.xml">
+ No typed replacement text
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [73]" ID="o-p73fail2" URI="p73fail2.xml">
+ Only one replacement value
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [73]" ID="o-p73fail3" URI="p73fail3.xml">
+ No NDataDecl on replacement text
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [73]" ID="o-p73fail4" URI="p73fail4.xml">
+ Value is required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [73]" ID="o-p73fail5" URI="p73fail5.xml">
+ No NDataDecl without value
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [74]" ID="o-p74fail1" URI="p74fail1.xml">
+ no NDataDecls on parameter entities
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [74]" ID="o-p74fail2" URI="p74fail2.xml">
+ value is required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2 [74]" ID="o-p74fail3" URI="p74fail3.xml">
+ only one value
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2.2 [75]" ID="o-p75fail1" URI="p75fail1.xml">
+ S required after "PUBLIC"
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2.2 [75]" ID="o-p75fail2" URI="p75fail2.xml">
+ S required after "SYSTEM"
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2.2 [75]" ID="o-p75fail3" URI="p75fail3.xml">
+ S required between literals
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2.2 [75]" ID="o-p75fail4" URI="p75fail4.xml">
+ "SYSTEM" implies only one literal
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2.2 [75]" ID="o-p75fail5" URI="p75fail5.xml">
+ only one keyword
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2.2 [75]" ID="o-p75fail6" URI="p75fail6.xml">
+ "PUBLIC" requires two literals (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2.2 [76]" ID="o-p76fail1" URI="p76fail1.xml">
+ S is required before "NDATA"
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2.2 [76]" ID="o-p76fail2" URI="p76fail2.xml">
+ "NDATA" is upper-case
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2.2 [76]" ID="o-p76fail3" URI="p76fail3.xml">
+ notation name is required
+ </TEST>
+
+ <TEST TYPE="not-wf" SECTIONS="4.2.2 [76]" ID="o-p76fail4" URI="p76fail4.xml">
+ notation names are Names
+ </TEST>
+
+ <TEST TYPE="error" SECTIONS="2.3, 4.2.2 [11]" ID="o-p11pass1" URI="p11pass1.xml">
+ system literals may not contain
+ URI fragments
+ </TEST>
+
+</TESTCASES>
+
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML 1.0 Tests" xml:base="ibm/">
+ <!--
+
+ (C) Copyright IBM Corp. 2000 All rights reserved.
+
+ US Government Users Restricted Rights Use, duplication or
+ disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ The program is provided "as is" without any warranty express or
+ implied, including the warranty of non-infringement and the implied
+ warranties of merchantibility and fitness for a particular purpose.
+ IBM will not be liable for any damages suffered by you as a result
+ of using the Program. In no event will IBM be liable for any
+ special, indirect or consequential damages or lost profits even if
+ IBM has been advised of the possibility of their occurrence. IBM
+ will not be liable for any third party claims against you.
+
+-->
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - invalid tests">
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 28">
+ <TEST URI="invalid/P28/ibm28i01.xml" TYPE="invalid" ID="ibm-invalid-P28-ibm28i01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="invalid/P28/out/ibm28i01.xml">
+ The test violates VC:Root Element Type in P28. The Name in the document type
+ declaration does not match the element type of the root element.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 32">
+ <TEST URI="invalid/P32/ibm32i01.xml" TYPE="invalid" ID="ibm-invalid-P32-ibm32i01.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="invalid/P32/out/ibm32i01.xml">
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of attributes with default values, and the
+ associated element appears in the document with specified values for those
+ attributes.
+ </TEST>
+
+ <TEST URI="invalid/P32/ibm32i03.xml" TYPE="invalid" ID="ibm-invalid-P32-ibm32i03.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="invalid/P32/out/ibm32i03.xml">
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of attributes with values that will change
+ if normalized.
+ </TEST>
+ <TEST URI="invalid/P32/ibm32i04.xml" TYPE="invalid" ID="ibm-invalid-P32-ibm32i04.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="invalid/P32/out/ibm32i04.xml">
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of element with element content, and white
+ space occurs directly within the mixed content.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 39">
+ <TEST URI="invalid/P39/ibm39i01.xml" TYPE="invalid" ID="ibm-invalid-P39-ibm39i01.xml" ENTITIES="none" SECTIONS="3" OUTPUT="invalid/P39/out/ibm39i01.xml">
+ This test violates VC: Element Valid in P39. Element a is declared empty
+ in DTD, but has content in the document.
+ </TEST>
+ <TEST URI="invalid/P39/ibm39i02.xml" TYPE="invalid" ID="ibm-invalid-P39-ibm39i02.xml" ENTITIES="none" SECTIONS="3" OUTPUT="invalid/P39/out/ibm39i02.xml">
+ This test violates VC: Element Valid in P39. root is declared only having
+ element children in DTD, but have text content in the document.
+ </TEST>
+ <TEST URI="invalid/P39/ibm39i03.xml" TYPE="invalid" ID="ibm-invalid-P39-ibm39i03.xml" ENTITIES="none" SECTIONS="3" OUTPUT="invalid/P39/out/ibm39i03.xml">
+ This test violates VC: Element Valid in P39. Illegal elements are inserted
+ in b's content of Mixed type.
+ </TEST>
+ <TEST URI="invalid/P39/ibm39i04.xml" TYPE="invalid" ID="ibm-invalid-P39-ibm39i04.xml" ENTITIES="none" SECTIONS="3" OUTPUT="invalid/P39/out/ibm39i04.xml">
+ This test violates VC: Element Valid in P39. Element c has undeclared
+ element as its content of ANY type
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 41">
+ <TEST URI="invalid/P41/ibm41i01.xml" TYPE="invalid" ID="ibm-invalid-P41-ibm41i01.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="invalid/P41/out/ibm41i01.xml">
+ This test violates VC: Attribute Value Type in P41. attr1 for Element b is
+ not declared.
+ </TEST>
+ <TEST URI="invalid/P41/ibm41i02.xml" TYPE="invalid" ID="ibm-invalid-P41-ibm41i02.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="invalid/P41/out/ibm41i02.xml">
+ This test violates VC: Attribute Value Type in P41. attr3 for Element b is
+ given a value that does not match the declaration in the DTD.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 45">
+ <TEST URI="invalid/P45/ibm45i01.xml" TYPE="invalid" ID="ibm-invalid-P45-ibm45i01.xml" ENTITIES="none" SECTIONS="3.2" OUTPUT="invalid/P45/out/ibm45i01.xml">
+ This test violates VC: Unique Element Type Declaration. Element not_unique
+ has been declared 3 time in the DTD.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 49">
+ <TEST URI="invalid/P49/ibm49i01.xml" TYPE="invalid" ID="ibm-invalid-P49-ibm49i01.xml" ENTITIES="parameter" SECTIONS="3.2.1" OUTPUT="invalid/P49/out/ibm49i01.xml">
+ Violates VC:Proper Group/PE Nesting in P49. Open and close parenthesis for a
+ choice content model are in different PE replace Texts.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 50">
+ <TEST URI="invalid/P50/ibm50i01.xml" TYPE="invalid" ID="ibm-invalid-P50-ibm50i01.xml" ENTITIES="parameter" SECTIONS="3.2.1" OUTPUT="invalid/P50/out/ibm50i01.xml">
+ Violates VC:Proper Group/PE Nesting in P50. Open and close parenthesis for a
+ seq content model are in different PE replace Texts.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 51">
+ <TEST URI="invalid/P51/ibm51i01.xml" TYPE="invalid" ID="ibm-invalid-P51-ibm51i01.xml" ENTITIES="parameter" SECTIONS="3.2.2" OUTPUT="invalid/P51/out/ibm51i01.xml">
+ Violates VC:Proper Group/PE Nesting in P51. Open and close parenthesis for a
+ Mixed content model are in different PE replace Texts.
+ </TEST>
+ <TEST URI="invalid/P51/ibm51i03.xml" TYPE="invalid" ID="ibm-invalid-P51-ibm51i03.xml" ENTITIES="none" SECTIONS="3.2.2" OUTPUT="invalid/P51/out/ibm51i03.xml">
+ Violates VC:No Duplicate Types in P51. Element a appears twice in the Mixed
+ content model of Element e.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 56">
+ <TEST URI="invalid/P56/ibm56i01.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i01.xml">
+ Tests invalid TokenizedType which is against P56 VC: ID. The value of the ID
+ attribute "UniqueName" is "@999" which does not meet the Name production.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i02.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i02.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i02.xml">
+ Tests invalid TokenizedType which is against P56 VC: ID. The two ID attributes
+ "attr" and "UniqueName" have the same value "Ac999" for the element "b" and
+ the element "tokenizer".
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i03.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i03.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i03.xml">
+ Tests invalid TokenizedType which is against P56 VC: ID Attribute Default. The
+ "#FIXED" occurs in the DefaultDecl for the ID attribute "UniqueName".
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i05.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i05.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i05.xml">
+ Tests invalid TokenizedType which is against P56 VC: ID Attribute Default. The
+ constant string "BOGUS" occurs in the DefaultDecl for the ID attribute
+ "UniqueName".
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i06.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i06.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i06.xml">
+ Tests invalid TokenizedType which is against P56 VC: One ID per Element Type. The
+ element "a" has two ID attributes "first" and "second".
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i07.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i07.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i07.xml">
+ Tests invalid TokenizedType which is against P56 VC: IDREF. The value of the
+ IDREF attribute "reference" is "@456" which does not meet the Name production.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i08.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i08.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i08.xml">
+ Tests invalid TokenizedType which is against P56 VC: IDREF. The value of the IDREF
+ attribute "reference" is "BC456" which does not match the value assigned to any
+ ID attributes.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i09.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i09.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i09.xml">
+ Tests invalid TokenizedType which is against P56 VC: IDREFS. The value of the
+ IDREFS attribute "reference" is "AC456 #567" which does not meet the Names
+ production.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i10.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i10.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i10.xml">
+ Tests invalid TokenizedType which is against P56 VC: IDREFS. The value of the
+ IDREFS attribute "reference" is "EF456 DE355" which does not match the values
+ assigned to two ID attributes.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i11.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i11.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i11.xml">
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "ima ge" which does not meet the Name production.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i12.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i12.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i12.xml">
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "notimage" which does not match the name of any
+ unparsed entity declared.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i13.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i13.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i13.xml">
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "parsedentity" which matches the name of a parsed
+ entity instead of an unparsed entity declared.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i14.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i14.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i14.xml">
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITIES attribute "sun" is "#image1 @image" which does not meet the Names
+ production.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i15.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i15.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i15.xml">
+ Tests invalid TokenizedType which is against P56 VC: ENTITIES. The value of the
+ ENTITIES attribute "sun" is "image3 image4" which does not match the names of
+ two unparsed entities declared.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i16.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i16.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i16.xml">
+ Tests invalid TokenizedType which is against P56 VC: ENTITIES. The value of the
+ ENTITIES attribute "sun" is "parsedentity1 parsedentity2" which matches the names
+ of two parsed entities instead of two unparsed entities declared.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i17.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i17.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i17.xml">
+ Tests invalid TokenizedType which is against P56 VC: Name Token. The value of the
+ NMTOKEN attribute "thistoken" is "x : image" which does not meet the Nmtoken
+ production.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i18.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i18.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i18.xml">
+ Tests invalid TokenizedType which is against P56 VC: Name Token. The value of the
+ NMTOKENS attribute "thistoken" is "@lang y: #country" which does not meet the
+ Nmtokens production.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 58">
+ <TEST URI="invalid/P58/ibm58i01.xml" TYPE="invalid" ID="ibm-invalid-P58-ibm58i01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P58/out/ibm58i01.xml">
+ Tests invalid NotationType which is against P58 VC: Notation Attributes. The
+ attribute "content-encoding" with value "raw" is not a value from the list
+ "(base64|uuencode)".
+ </TEST>
+ <TEST URI="invalid/P58/ibm58i02.xml" TYPE="invalid" ID="ibm-invalid-P58-ibm58i02.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P58/out/ibm58i02.xml">
+ Tests invalid NotationType which is against P58 VC: Notation Attributes. The
+ attribute "content-encoding" with value "raw" is a value from the list
+ "(base64|uuencode|raw|ascii)", but "raw" is not a declared notation.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 59">
+ <TEST URI="invalid/P59/ibm59i01.xml" TYPE="invalid" ID="ibm-invalid-P59-ibm59i01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P59/out/ibm59i01.xml">
+ Tests invalid Enumeration which is against P59 VC: Enumeration. The value of the
+ attribute is "ONE" which matches neither "one" nor "two" as declared in the
+ Enumeration in the AttDef in the AttlistDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 60">
+ <TEST URI="invalid/P60/ibm60i01.xml" TYPE="invalid" ID="ibm-invalid-P60-ibm60i01.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="invalid/P60/out/ibm60i01.xml">
+ Tests invalid DefaultDecl which is against P60 VC: Required Attribute. The
+ attribute "chapter" for the element "two" is declared as #REQUIRED in the
+ DefaultDecl in the AttlistDecl, but the value of this attribute is not given.
+ </TEST>
+ <TEST URI="invalid/P60/ibm60i02.xml" TYPE="invalid" ID="ibm-invalid-P60-ibm60i02.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="invalid/P60/out/ibm60i02.xml">
+ Tests invalid DefaultDecl which is against P60 VC: Fixed Attribute Default.. The
+ attribute "chapter" for the element "one" is declared as #FIXED with the given
+ value "Introduction" in the DefaultDecl in the AttlistDecl, but the value of a
+ instance of this attribute is assigned to "JavaBeans".
+ </TEST>
+ <TEST URI="invalid/P60/ibm60i03.xml" TYPE="invalid" ID="ibm-invalid-P60-ibm60i03.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="invalid/P60/out/ibm60i03.xml">
+ Tests invalid DefaultDecl which is against P60 VC: Attribute Default Legal. The
+ declared default value "c" is not legal for the type (a|b) in the AttDef in
+ the AttlistDecl.
+ </TEST>
+ <TEST URI="invalid/P60/ibm60i04.xml" TYPE="invalid" ID="ibm-invalid-P60-ibm60i04.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="invalid/P60/out/ibm60i04.xml">
+ Tests invalid DefaultDecl which is against P60 VC: Attribute Default Legal. The
+ declared default value "@#$" is not legal for the type NMTOKEN the AttDef in
+ the AttlistDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 68">
+ <TEST URI="invalid/P68/ibm68i01.xml" TYPE="error" ID="ibm-invalid-P68-ibm68i01.xml" ENTITIES="parameter" SECTIONS="4.1" OUTPUT="invalid/P68/out/ibm68i01.xml">
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge2" is referred in the file ibm68i01.dtd", but not declared.
+ </TEST>
+ <TEST URI="invalid/P68/ibm68i02.xml" TYPE="error" ID="ibm-invalid-P68-ibm68i02.xml" ENTITIES="parameter" SECTIONS="4.1" OUTPUT="invalid/P68/out/ibm68i02.xml">
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge1" is referred before declared in the file ibm68i01.dtd".
+ </TEST>
+ <TEST URI="invalid/P68/ibm68i03.xml" TYPE="error" ID="ibm-invalid-P68-ibm68i03.xml" ENTITIES="both" SECTIONS="4.1" OUTPUT="invalid/P68/out/ibm68i03.xml">
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge2" is referred in the file ibm68i03.ent", but not declared.
+ </TEST>
+ <TEST URI="invalid/P68/ibm68i04.xml" TYPE="error" ID="ibm-invalid-P68-ibm68i04.xml" ENTITIES="both" SECTIONS="4.1" OUTPUT="invalid/P68/out/ibm68i04.xml">
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge1" is referred before declared in the file ibm68i04.ent".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 69">
+ <TEST URI="invalid/P69/ibm69i01.xml" TYPE="error" ID="ibm-invalid-P69-ibm69i01.xml" ENTITIES="parameter" SECTIONS="4.1" OUTPUT="invalid/P69/out/ibm69i01.xml">
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The Name
+ "pe2" in the PEReference in the file ibm69i01.dtd does not match the Name of
+ any declared PE.
+ </TEST>
+ <TEST URI="invalid/P69/ibm69i02.xml" TYPE="error" ID="ibm-invalid-P69-ibm69i02.xml" ENTITIES="parameter" SECTIONS="4.1" OUTPUT="invalid/P69/out/ibm69i02.xml">
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The PE with
+ the name "pe1" is referred before declared in the file ibm69i02.dtd
+ </TEST>
+ <TEST URI="invalid/P69/ibm69i03.xml" TYPE="error" ID="ibm-invalid-P69-ibm69i03.xml" ENTITIES="both" SECTIONS="4.1" OUTPUT="invalid/P69/out/ibm69i03.xml">
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The Name
+ "pe3" in the PEReference in the file ibm69i03.ent does not match the Name of
+ any declared PE.
+ </TEST>
+ <TEST URI="invalid/P69/ibm69i04.xml" TYPE="error" ID="ibm-invalid-P69-ibm69i04.xml" ENTITIES="both" SECTIONS="4.1" OUTPUT="invalid/P69/out/ibm69i04.xml">
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The PE with
+ the name "pe2" is referred before declared in the file ibm69i04.ent.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 76">
+ <TEST URI="invalid/P76/ibm76i01.xml" TYPE="invalid" ID="ibm-invalid-P76-ibm76i01.xml" ENTITIES="none" SECTIONS="4.2.2" OUTPUT="invalid/P76/out/ibm76i01.xml">
+ Tests invalid NDataDecl which is against P76 VC: Notation declared. The Name
+ "JPGformat" in the NDataDecl in the EntityDecl for "ge2" does not match the
+ Name of any declared notation.
+ </TEST>
+</TESTCASES>
+
+</TESTCASES>
+
+ <!--
+
+ (C) Copyright IBM Corp. 2000 All rights reserved.
+
+ US Government Users Restricted Rights Use, duplication or
+ disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ The program is provided "as is" without any warranty express or
+ implied, including the warranty of non-infringement and the implied
+ warranties of merchantibility and fitness for a particular purpose.
+ IBM will not be liable for any damages suffered by you as a result
+ of using the Program. In no event will IBM be liable for any
+ special, indirect or consequential damages or lost profits even if
+ IBM has been advised of the possibility of their occurrence. IBM
+ will not be liable for any third party claims against you.
+
+-->
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - not-wf tests">
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 1">
+ <TEST URI="not-wf/P01/ibm01n01.xml" TYPE="not-wf" ID="ibm-not-wf-P01-ibm01n01.xml" ENTITIES="none" SECTIONS="2.1">
+ Tests a document with no element. A well-formed document should have at lease
+ one elements.
+ </TEST>
+ <TEST URI="not-wf/P01/ibm01n02.xml" TYPE="not-wf" ID="ibm-not-wf-P01-ibm01n02.xml" ENTITIES="none" SECTIONS="2.1">
+ Tests a document with wrong ordering of its prolog and element. The
+ element occurs before the xml declaration and the DTD.
+ </TEST>
+ <TEST URI="not-wf/P01/ibm01n03.xml" TYPE="not-wf" ID="ibm-not-wf-P01-ibm01n03.xml" ENTITIES="none" SECTIONS="2.1">
+ Tests a document with wrong combination of misc and element. One PI occurs
+ between two elements.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 2">
+ <TEST URI="not-wf/P02/ibm02n01.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n01.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x00
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n02.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n02.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x01
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n03.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n03.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x02
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n04.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n04.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x03
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n05.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n05.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x04
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n06.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n06.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x05
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n07.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n07.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x06
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n08.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n08.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x07
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n09.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n09.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x08
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n10.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n10.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x0B
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n11.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n11.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x0C
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n12.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n12.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x0E
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n13.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n13.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x0F
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n14.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n14.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x10
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n15.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n15.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x11
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n16.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n16.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x12
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n17.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n17.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x13
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n18.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n18.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x14
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n19.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n19.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x15
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n20.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n20.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x16
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n21.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n21.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x17
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n22.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n22.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x18
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n23.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n23.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x19
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n24.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n24.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x1A </TEST>
+ <TEST URI="not-wf/P02/ibm02n25.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n25.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x1B
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n26.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n26.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x1C
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n27.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n27.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x1D
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n28.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n28.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x1E
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n29.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n29.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x1F
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n30.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n30.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #xD800
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n31.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n31.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #xDFFF
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n32.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n32.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #xFFFE
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n33.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n33.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #xFFFF
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 3">
+ <TEST URI="not-wf/P03/ibm03n01.xml" TYPE="not-wf" ID="ibm-not-wf-P03-ibm03n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an end tag which contains an illegal space character #x3000 which
+ follows the element name "book".
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 4">
+ <TEST URI="not-wf/P04/ibm04n01.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x21
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n02.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x28
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n03.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x29
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n04.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n04.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2B
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n05.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n05.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2C
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n06.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n06.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2F
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n07.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n07.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3B
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n08.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n08.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3C
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n09.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n09.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3D
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n10.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n10.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3F
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n11.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n11.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5B
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n12.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n12.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5C
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n13.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n13.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5D
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n14.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n14.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5E
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n15.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n15.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x60
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n16.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n16.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7B
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n17.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n17.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7C
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n18.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n18.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7D
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 5">
+ <TEST URI="not-wf/P05/ibm05n01.xml" TYPE="not-wf" ID="ibm-not-wf-P05-ibm05n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which has an illegal first character. An illegal
+ first character "." is followed by "A_name-starts_with.".
+ </TEST>
+ <TEST URI="not-wf/P05/ibm05n02.xml" TYPE="not-wf" ID="ibm-not-wf-P05-ibm05n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which has an illegal first character. An illegal
+ first character "-" is followed by "A_name-starts_with-".
+ </TEST>
+ <TEST URI="not-wf/P05/ibm05n03.xml" TYPE="not-wf" ID="ibm-not-wf-P05-ibm05n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which has an illegal first character. An illegal
+ first character "5" is followed by "A_name-starts_with_digit".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 9">
+ <TEST URI="not-wf/P09/ibm09n01.xml" TYPE="not-wf" ID="ibm-not-wf-P09-ibm09n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains "%".
+ </TEST>
+ <TEST URI="not-wf/P09/ibm09n02.xml" TYPE="not-wf" ID="ibm-not-wf-P09-ibm09n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains the ampersand character.
+ </TEST>
+ <TEST URI="not-wf/P09/ibm09n03.xml" TYPE="not-wf" ID="ibm-not-wf-P09-ibm09n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains the double quote character in the middle.
+ </TEST>
+ <TEST URI="not-wf/P09/ibm09n04.xml" TYPE="not-wf" ID="ibm-not-wf-P09-ibm09n04.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an internal general entity with an invalid value. The closing bracket
+ (double quote) is missing with the value of the entity "FullName".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 10">
+ <TEST URI="not-wf/P10/ibm10n01.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character "less than".
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n02.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character ampersand.
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n03.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the double quote character in the middle.
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n04.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n04.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The closing bracket (double quote) is
+ missing with The value of the attribute "first".
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n05.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n05.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character "less than".
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n06.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n06.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character ampersand.
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n07.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n07.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the double quote character in the middle.
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n08.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n08.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The closing bracket (single quote) is
+ missing with the value of the attribute "first".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 11">
+ <TEST URI="not-wf/P11/ibm11n01.xml" TYPE="not-wf" ID="ibm-not-wf-P11-ibm11n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests SystemLiteral. The systemLiteral for the element "student" has
+ a double quote character in the middle.
+ </TEST>
+ <TEST URI="not-wf/P11/ibm11n02.xml" TYPE="not-wf" ID="ibm-not-wf-P11-ibm11n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests SystemLiteral. The systemLiteral for the element "student" has
+ a single quote character in the middle.
+ </TEST>
+ <TEST URI="not-wf/P11/ibm11n03.xml" TYPE="not-wf" ID="ibm-not-wf-P11-ibm11n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests SystemLiteral. The closing bracket (double quote) is missing with
+ the systemLiteral for the element "student".
+ </TEST>
+ <TEST URI="not-wf/P11/ibm11n04.xml" TYPE="not-wf" ID="ibm-not-wf-P11-ibm11n04.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests SystemLiteral. The closing bracket (single quote) is missing with
+ the systemLiteral for the element "student".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 12">
+ <TEST URI="not-wf/P12/ibm12n01.xml" TYPE="not-wf" ID="ibm-not-wf-P12-ibm12n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests PubidLiteral. The closing bracket (double quote) is missing with
+ the value of the PubidLiteral for the entity "info".
+ </TEST>
+ <TEST URI="not-wf/P12/ibm12n02.xml" TYPE="not-wf" ID="ibm-not-wf-P12-ibm12n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests PubidLiteral. The value of the PubidLiteral for the entity
+ "info" has a single quote character in the middle..
+ </TEST>
+ <TEST URI="not-wf/P12/ibm12n03.xml" TYPE="not-wf" ID="ibm-not-wf-P12-ibm12n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests PubidLiteral. The closing bracket (single quote) is missing with
+ the value of the PubidLiteral for the entity "info".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 13">
+ <TEST URI="not-wf/P13/ibm13n01.xml" TYPE="not-wf" ID="ibm-not-wf-P13-ibm13n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character "{".
+ </TEST>
+ <TEST URI="not-wf/P13/ibm13n02.xml" TYPE="not-wf" ID="ibm-not-wf-P13-ibm13n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character "~".
+ </TEST>
+ <TEST URI="not-wf/P13/ibm13n03.xml" TYPE="not-wf" ID="ibm-not-wf-P13-ibm13n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character double quote in the middle.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 14">
+ <TEST URI="not-wf/P14/ibm14n01.xml" TYPE="not-wf" ID="ibm-not-wf-P14-ibm14n01.xml" ENTITIES="none" SECTIONS="2.4">
+ Tests CharData. The content of the element "student" contains the
+ sequence close-bracket close-bracket greater-than.
+ </TEST>
+ <TEST URI="not-wf/P14/ibm14n02.xml" TYPE="not-wf" ID="ibm-not-wf-P14-ibm14n02.xml" ENTITIES="none" SECTIONS="2.4">
+ Tests CharData. The content of the element "student" contains the
+ character "less than".
+ </TEST>
+ <TEST URI="not-wf/P14/ibm14n03.xml" TYPE="not-wf" ID="ibm-not-wf-P14-ibm14n03.xml" ENTITIES="none" SECTIONS="2.4">
+ Tests CharData. The content of the element "student" contains the
+ character ampersand.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 15">
+ <TEST URI="not-wf/P15/ibm15n01.xml" TYPE="not-wf" ID="ibm-not-wf-P15-ibm15n01.xml" ENTITIES="none" SECTIONS="2.5">
+ Tests comment. The text of the second comment contains the character
+ "-".
+ </TEST>
+ <TEST URI="not-wf/P15/ibm15n02.xml" TYPE="not-wf" ID="ibm-not-wf-P15-ibm15n02.xml" ENTITIES="none" SECTIONS="2.5">
+ Tests comment. The second comment has a wrong closing sequence
+ "-(greater than)".
+ </TEST>
+ <TEST URI="not-wf/P15/ibm15n03.xml" TYPE="not-wf" ID="ibm-not-wf-P15-ibm15n03.xml" ENTITIES="none" SECTIONS="2.5">
+ Tests comment. The second comment has a wrong beginning sequence
+ "(less than)!-".
+ </TEST>
+ <TEST URI="not-wf/P15/ibm15n04.xml" TYPE="not-wf" ID="ibm-not-wf-P15-ibm15n04.xml" ENTITIES="none" SECTIONS="2.5">
+ Tests comment. The closing sequence is missing with the second
+ comment.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 16">
+ <TEST URI="not-wf/P16/ibm16n01.xml" TYPE="not-wf" ID="ibm-not-wf-P16-ibm16n01.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PI. The content of the PI includes the sequence
+ "?(greater than)?".
+ </TEST>
+ <TEST URI="not-wf/P16/ibm16n02.xml" TYPE="not-wf" ID="ibm-not-wf-P16-ibm16n02.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PI. The PITarget is missing in the PI.
+ </TEST>
+ <TEST URI="not-wf/P16/ibm16n03.xml" TYPE="not-wf" ID="ibm-not-wf-P16-ibm16n03.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PI. The PI has a wrong closing sequence "&gt;".
+ </TEST>
+ <TEST URI="not-wf/P16/ibm16n04.xml" TYPE="not-wf" ID="ibm-not-wf-P16-ibm16n04.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PI. The closing sequence is missing in the PI.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 17">
+ <TEST URI="not-wf/P17/ibm17n01.xml" TYPE="not-wf" ID="ibm-not-wf-P17-ibm17n01.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PITarget. The PITarget contains the string "XML".
+ </TEST>
+ <TEST URI="not-wf/P17/ibm17n02.xml" TYPE="not-wf" ID="ibm-not-wf-P17-ibm17n02.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PITarget. The PITarget contains the string "xML".
+ </TEST>
+ <TEST URI="not-wf/P17/ibm17n03.xml" TYPE="not-wf" ID="ibm-not-wf-P17-ibm17n03.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PITarget. The PITarget contains the string "xml".
+ </TEST>
+ <TEST URI="not-wf/P17/ibm17n04.xml" TYPE="not-wf" ID="ibm-not-wf-P17-ibm17n04.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PITarget. The PITarget contains the string "xmL".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 18">
+ <TEST URI="not-wf/P18/ibm18n01.xml" TYPE="not-wf" ID="ibm-not-wf-P18-ibm18n01.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDSect. The CDStart is missing in the CDSect in the content of
+ element "student".
+ </TEST>
+ <TEST URI="not-wf/P18/ibm18n02.xml" TYPE="not-wf" ID="ibm-not-wf-P18-ibm18n02.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDSect. The CDEnd is missing in the CDSect in the content of
+ element "student".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 19">
+ <TEST URI="not-wf/P19/ibm19n01.xml" TYPE="not-wf" ID="ibm-not-wf-P19-ibm19n01.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDStart. The CDStart contains a lower case string "cdata".
+ </TEST>
+ <TEST URI="not-wf/P19/ibm19n02.xml" TYPE="not-wf" ID="ibm-not-wf-P19-ibm19n02.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDStart. The CDStart contains an extra character "[".
+ </TEST>
+ <TEST URI="not-wf/P19/ibm19n03.xml" TYPE="not-wf" ID="ibm-not-wf-P19-ibm19n03.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDStart. The CDStart contains a wrong character "?".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 20">
+ <TEST URI="not-wf/P20/ibm20n01.xml" TYPE="not-wf" ID="ibm-not-wf-P20-ibm20n01.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDATA with an illegal sequence. The CDATA contains the
+ sequence close-bracket close-bracket greater-than.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 21">
+ <TEST URI="not-wf/P21/ibm21n01.xml" TYPE="not-wf" ID="ibm-not-wf-P21-ibm21n01.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDEnd. One "]" is missing in the CDEnd.
+ </TEST>
+ <TEST URI="not-wf/P21/ibm21n02.xml" TYPE="not-wf" ID="ibm-not-wf-P21-ibm21n02.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDEnd. An extra "]" is placed in the CDEnd.
+ </TEST>
+ <TEST URI="not-wf/P21/ibm21n03.xml" TYPE="not-wf" ID="ibm-not-wf-P21-ibm21n03.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDEnd. A wrong character ")" is placed in the CDEnd.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 22">
+ <TEST URI="not-wf/P22/ibm22n01.xml" TYPE="not-wf" ID="ibm-not-wf-P22-ibm22n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests prolog with wrong field ordering. The XMLDecl occurs
+ after the DTD.
+ </TEST>
+ <TEST URI="not-wf/P22/ibm22n02.xml" TYPE="not-wf" ID="ibm-not-wf-P22-ibm22n02.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests prolog with wrong field ordering. The Misc (comment)
+ occurs before the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P22/ibm22n03.xml" TYPE="not-wf" ID="ibm-not-wf-P22-ibm22n03.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests prolog with wrong field ordering. The XMLDecl occurs
+ after the DTD and a comment. The other comment occurs before the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 23">
+ <TEST URI="not-wf/P23/ibm23n01.xml" TYPE="not-wf" ID="ibm-not-wf-P23-ibm23n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests XMLDecl with a required field missing. The Versioninfo is
+ missing in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P23/ibm23n02.xml" TYPE="not-wf" ID="ibm-not-wf-P23-ibm23n02.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests XMLDecl with wrong field ordering. The VersionInfo
+ occurs after the EncodingDecl.
+ </TEST>
+ <TEST URI="not-wf/P23/ibm23n03.xml" TYPE="not-wf" ID="ibm-not-wf-P23-ibm23n03.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests XMLDecl with wrong field ordering. The VersionInfo
+ occurs after the SDDecl and the SDDecl occurs after the VersionInfo.
+ </TEST>
+ <TEST URI="not-wf/P23/ibm23n04.xml" TYPE="not-wf" ID="ibm-not-wf-P23-ibm23n04.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests XMLDecl with wrong key word. An upper case string "XML" is
+ used as the key word in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P23/ibm23n05.xml" TYPE="not-wf" ID="ibm-not-wf-P23-ibm23n05.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests XMLDecl with a wrong closing sequence "&gt;".
+ </TEST>
+ <TEST URI="not-wf/P23/ibm23n06.xml" TYPE="not-wf" ID="ibm-not-wf-P23-ibm23n06.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests XMLDecl with a wrong opening sequence "(less than)!".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 24">
+ <TEST URI="not-wf/P24/ibm24n01.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with a required field missing. The VersionNum is
+ missing in the VersionInfo in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n02.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n02.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with a required field missing. The white space is
+ missing between the key word "xml" and the VersionInfo in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n03.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n03.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with a required field missing. The "="
+ (equal sign) is missing between the key word "version" and the VersionNum.
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n04.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n04.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with wrong field ordering. The VersionNum
+ occurs before "=" and "version".
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n05.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n05.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with wrong field ordering. The "=" occurs
+ after "version" and the VersionNum.
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n06.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n06.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with the wrong key word "Version".
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n07.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n07.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with the wrong key word "versioN".
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n08.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n08.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with mismatched quotes around the VersionNum.
+ version = '1.0" is used as the VersionInfo.
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n09.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n09.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with mismatched quotes around the VersionNum.
+ The closing bracket for the VersionNum is missing.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 25">
+ <TEST URI="not-wf/P25/ibm25n01.xml" TYPE="not-wf" ID="ibm-not-wf-P25-ibm25n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests eq with a wrong key word "==".
+ </TEST>
+ <TEST URI="not-wf/P25/ibm25n02.xml" TYPE="not-wf" ID="ibm-not-wf-P25-ibm25n02.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests eq with a wrong key word "eq".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 26">
+ <TEST URI="not-wf/P26/ibm26n01.xml" TYPE="not-wf" ID="ibm-not-wf-P26-ibm26n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionNum with an illegal character "#".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 27">
+ <TEST URI="not-wf/P27/ibm27n01.xml" TYPE="not-wf" ID="ibm-not-wf-P27-ibm27n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests type of Misc. An element declaration is used as a type of Misc
+ After the element "animal".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 28">
+ <TEST URI="not-wf/P28/ibm28n01.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with a required field missing. The Name "animal"
+ is missing in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n02.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n02.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with wrong field ordering. The Name
+ "animal" occurs after the markup declarations inside the "[]".
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n03.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n03.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with wrong field ordering. The Name
+ "animal" occurs after the markup declarations inside the "[]".
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n04.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n04.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with general entity reference.The
+ "(ampersand)generalE" occurs in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n05.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n05.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with wrong key word. A wrong key word "DOCtYPE"
+ occurs on line 2.
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n06.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n06.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with mismatched brackets. The closing bracket "]"
+ of the DTD is missing.
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n07.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n07.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with wrong bracket. The opening bracket "{" occurs
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n08.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n08.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with wrong opening sequence. The opening sequence
+ "(less than)?DOCTYPE" occurs in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 28a">
+<TEST URI="not-wf/p28a/ibm28an01.xml" TYPE="not-wf" ID="ibm-not-wf-p28a-ibm28an01.xml" ENTITIES="parameter" SECTIONS="2.8">
+ This test violates WFC:PE Between Declarations in Production 28a.
+ The last character of a markup declaration is not contained in the same
+ parameter-entity text replacement.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 29">
+ <TEST URI="not-wf/P29/ibm29n01.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests markupdecl with an illegal markup declaration. A XMLDecl
+ occurs inside the DTD.
+ </TEST>
+ <TEST URI="not-wf/P29/ibm29n02.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n02.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P29/ibm29n03.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n03.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ ATTlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P29/ibm29n04.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n04.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P29/ibm29n05.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n05.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a PI in
+ the DTD.
+ </TEST>
+ <TEST URI="not-wf/P29/ibm29n06.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n06.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a comment
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P29/ibm29n07.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n07.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a
+ NotationDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 30">
+ <TEST URI="not-wf/P30/ibm30n01.xml" TYPE="not-wf" ID="ibm-not-wf-P30-ibm30n01.xml" ENTITIES="parameter" SECTIONS="2.8">
+ Tests extSubset with wrong field ordering. In the file "ibm30n01.dtd",
+ the TextDecl occurs after the extSubsetDecl (the element declaration).
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 31">
+ <TEST URI="not-wf/P31/ibm31n01.xml" TYPE="not-wf" ID="ibm-not-wf-P31-ibm31n01.xml" ENTITIES="parameter" SECTIONS="2.8">
+ Tests extSubsetDecl with an illegal field. A general entity
+ reference occurs in file "ibm31n01.dtd".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 32">
+ <TEST URI="not-wf/P32/ibm32n01.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n01.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with a required field missing. The leading white space
+ is missing with the SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n02.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n02.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with a required field missing. The "=" sign is missing
+ in the SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n03.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n03.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with wrong key word. The word "Standalone" occurs in
+ the SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n04.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n04.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with wrong key word. The word "Yes" occurs in the
+ SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n05.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n05.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with wrong key word. The word "YES" occurs in the
+ SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n06.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n06.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with wrong key word. The word "No" occurs in the
+ SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n07.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n07.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with wrong key word. The word "NO" occurs in the
+ SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n08.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n08.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with wrong field ordering. The "=" sign occurs
+ after the key word "yes" in the SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n09.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n09.xml" ENTITIES="parameter" SECTIONS="2.9">
+ This is test violates WFC: Entity Declared in P68.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of an entity (other than amp, lt, gt, apos,
+ quot), and references to this entity appear in the document.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 39">
+ <TEST URI="not-wf/P39/ibm39n01.xml" TYPE="not-wf" ID="ibm-not-wf-P39-ibm39n01.xml" ENTITIES="none" SECTIONS="3">
+ Tests element with a required field missing. The ETag is missing
+ for the element "root".
+ </TEST>
+ <TEST URI="not-wf/P39/ibm39n02.xml" TYPE="not-wf" ID="ibm-not-wf-P39-ibm39n02.xml" ENTITIES="none" SECTIONS="3">
+ Tests element with a required field missing. The STag is missing
+ for the element "root".
+ </TEST>
+ <TEST URI="not-wf/P39/ibm39n03.xml" TYPE="not-wf" ID="ibm-not-wf-P39-ibm39n03.xml" ENTITIES="none" SECTIONS="3">
+ Tests element with required fields missing. Both the content and
+ the ETag are missing in the element "root".
+ </TEST>
+ <TEST URI="not-wf/P39/ibm39n04.xml" TYPE="not-wf" ID="ibm-not-wf-P39-ibm39n04.xml" ENTITIES="none" SECTIONS="3">
+ Tests element with required fields missing. Both the content and
+ the STag are missing in the element "root".
+ </TEST>
+ <TEST URI="not-wf/P39/ibm39n05.xml" TYPE="not-wf" ID="ibm-not-wf-P39-ibm39n05.xml" ENTITIES="none" SECTIONS="3">
+ Tests element with wrong field ordering. The STag and the ETag are
+ swapped in the element "root".
+ </TEST>
+ <TEST URI="not-wf/P39/ibm39n06.xml" TYPE="not-wf" ID="ibm-not-wf-P39-ibm39n06.xml" ENTITIES="none" SECTIONS="3">
+ Tests element with wrong field ordering. The content occurs after
+ the ETag of the element "root".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 40">
+ <TEST URI="not-wf/P40/ibm40n01.xml" TYPE="not-wf" ID="ibm-not-wf-P40-ibm40n01.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests STag with a required field missing. The Name "root" is
+ in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P40/ibm40n02.xml" TYPE="not-wf" ID="ibm-not-wf-P40-ibm40n02.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests STag with a required field missing. The white space between
+ the Name "root" and the attribute "attr1" is missing in the STag of the
+ element "root".
+ </TEST>
+ <TEST URI="not-wf/P40/ibm40n03.xml" TYPE="not-wf" ID="ibm-not-wf-P40-ibm40n03.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests STag with wrong field ordering. The Name "root" occurs after
+ the attribute "attr1" in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P40/ibm40n04.xml" TYPE="not-wf" ID="ibm-not-wf-P40-ibm40n04.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests STag with a wrong opening sequence. The string "(less than)!" is used
+ as the opening sequence for the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P40/ibm40n05.xml" TYPE="not-wf" ID="ibm-not-wf-P40-ibm40n05.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests STag with duplicate attribute names. The attribute name
+ "attr1" occurs twice in the STag of the element "root".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 41">
+ <TEST URI="not-wf/P41/ibm41n01.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n01.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with a required field missing. The attribute name
+ is missing in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n02.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n02.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with a required field missing. The "=" is missing
+ between the attribute name and the attribute value in the Attribute in the
+ STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n03.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n03.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with a required field missing. The AttValue is
+ missing in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n04.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n04.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with a required field missing. The Name and the
+ "=" are missing in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n05.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n05.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with a required field missing. The "=" and the
+ AttValue are missing in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n06.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n06.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with a required field missing. The Name and the
+ AttValue are missing in the Attribute in the STag of the element "root".
+ </TEST>
+
+ <TEST URI="not-wf/P41/ibm41n07.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n07.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with wrong field ordering. The "=" occurs after the
+ Name and the AttValue in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n08.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n08.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with wrong field ordering. The Name and the AttValue
+ are swapped in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n09.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n09.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with wrong field ordering. The "=" occurs before the
+ Name and the AttValue in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n10.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n10.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute against WFC "no external entity references". A direct
+ reference to the external entity "aExternal" is contained in the value of the
+ attribute "attr1".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n11.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n11.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute against WFC "no external entity references". A indirect
+ reference to the external entity "aExternal" is contained in the value of the
+ attribute "attr1".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n12.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n12.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute against WFC "no external entity references". A direct
+ reference to the external unparsed entity "aImage" is contained in the value
+ of the attribute "attr1".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n13.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n13.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute against WFC "No (less than) character in Attribute
+ Values". The character "less than" is contained in the value of the
+ attribute "attr1".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n14.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n14.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute against WFC "No (less than) in Attribute Values". The character
+ "less than" is contained in the value of the attribute "attr1" through indirect
+ internal entity reference.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 42">
+ <TEST URI="not-wf/P42/ibm42n01.xml" TYPE="not-wf" ID="ibm-not-wf-P42-ibm42n01.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests ETag with a required field missing. The Name is missing in the
+ ETag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P42/ibm42n02.xml" TYPE="not-wf" ID="ibm-not-wf-P42-ibm42n02.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests ETag with a wrong beginning sequence. The string "(less than)\" is used as
+ a beginning sequence of the ETag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P42/ibm42n03.xml" TYPE="not-wf" ID="ibm-not-wf-P42-ibm42n03.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests ETag with a wrong beginning sequence. The string "less than" is used as
+ a beginning sequence of the ETag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P42/ibm42n04.xml" TYPE="not-wf" ID="ibm-not-wf-P42-ibm42n04.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests ETag with a wrong structure. An white space occurs between The
+ beginning sequence and the Name of the ETag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P42/ibm42n05.xml" TYPE="not-wf" ID="ibm-not-wf-P42-ibm42n05.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests ETag with a wrong structure. The ETag of the element "root"
+ contains an Attribute (attr1="any").
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 43">
+ <TEST URI="not-wf/P43/ibm43n01.xml" TYPE="not-wf" ID="ibm-not-wf-P43-ibm43n01.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests element content with a wrong option. A NotationDecl is used as
+ the content of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P43/ibm43n02.xml" TYPE="not-wf" ID="ibm-not-wf-P43-ibm43n02.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests element content with a wrong option. An elementdecl is used as
+ the content of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P43/ibm43n04.xml" TYPE="not-wf" ID="ibm-not-wf-P43-ibm43n04.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests element content with a wrong option. An entitydecl is used as
+ the content of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P43/ibm43n05.xml" TYPE="not-wf" ID="ibm-not-wf-P43-ibm43n05.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests element content with a wrong option. An AttlistDecl is used as
+ the content of the element "root".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 44">
+ <TEST URI="not-wf/P44/ibm44n01.xml" TYPE="not-wf" ID="ibm-not-wf-P44-ibm44n01.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests EmptyElemTag with a required field missing. The Name "root" is
+ missing in the EmptyElemTag.
+ </TEST>
+ <TEST URI="not-wf/P44/ibm44n02.xml" TYPE="not-wf" ID="ibm-not-wf-P44-ibm44n02.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests EmptyElemTag with wrong field ordering. The Attribute (attri1 =
+ "any") occurs before the name of the element "root" in the EmptyElemTag.
+ </TEST>
+ <TEST URI="not-wf/P44/ibm44n03.xml" TYPE="not-wf" ID="ibm-not-wf-P44-ibm44n03.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests EmptyElemTag with wrong closing sequence. The string "\&gt;" is used
+ as the closing sequence in the EmptyElemtag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P44/ibm44n04.xml" TYPE="not-wf" ID="ibm-not-wf-P44-ibm44n04.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests EmptyElemTag which against the WFC "Unique Att Spec". The
+ attribute name "attr1" occurs twice in the EmptyElemTag of the element "root".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 45">
+ <TEST URI="not-wf/P45/ibm45n01.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n01.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with a required field missing. The Name is missing
+ in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n02.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n02.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with a required field missing. The white space is
+ missing between "aEle" and "(#PCDATA)" in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n03.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n03.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with a required field missing. The contentspec is
+ missing in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n04.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n04.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with a required field missing. The contentspec and
+ the white space is missing in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n05.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n05.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with a required field missing. The Name, the white
+ space, and the contentspec are missing in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n06.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n06.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with wrong field ordering. The Name occurs after the
+ contentspec in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n07.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n07.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with wrong beginning sequence. The string
+ "(less than)ELEMENT" is used as the beginning sequence in the second
+ elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n08.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n08.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with wrong key word. The string "Element" is used as
+ the key word in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n09.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n09.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with wrong key word. The string "element" is used as
+ the key word in the second elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 46">
+ <TEST URI="not-wf/P46/ibm46n01.xml" TYPE="not-wf" ID="ibm-not-wf-P46-ibm46n01.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests contentspec with wrong key word. the string "empty" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P46/ibm46n02.xml" TYPE="not-wf" ID="ibm-not-wf-P46-ibm46n02.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests contentspec with wrong key word. the string "Empty" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P46/ibm46n03.xml" TYPE="not-wf" ID="ibm-not-wf-P46-ibm46n03.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests contentspec with wrong key word. the string "Any" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P46/ibm46n04.xml" TYPE="not-wf" ID="ibm-not-wf-P46-ibm46n04.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests contentspec with wrong key word. the string "any" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P46/ibm46n05.xml" TYPE="not-wf" ID="ibm-not-wf-P46-ibm46n05.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests contentspec with a wrong option. The string "#CDATA" is used as
+ the contentspec in the second elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 47">
+ <TEST URI="not-wf/P47/ibm47n01.xml" TYPE="not-wf" ID="ibm-not-wf-P47-ibm47n01.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests children with a required field missing. The "+" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P47/ibm47n02.xml" TYPE="not-wf" ID="ibm-not-wf-P47-ibm47n02.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests children with a required field missing. The "*" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P47/ibm47n03.xml" TYPE="not-wf" ID="ibm-not-wf-P47-ibm47n03.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests children with a required field missing. The "?" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P47/ibm47n04.xml" TYPE="not-wf" ID="ibm-not-wf-P47-ibm47n04.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests children with wrong field ordering. The "*" occurs before the
+ seq field (a,a) in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P47/ibm47n05.xml" TYPE="not-wf" ID="ibm-not-wf-P47-ibm47n05.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests children with wrong field ordering. The "+" occurs before the
+ choice field (a|a) in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P47/ibm47n06.xml" TYPE="not-wf" ID="ibm-not-wf-P47-ibm47n06.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests children with wrong key word. The "^" occurs after the seq field
+ in the second elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 48">
+ <TEST URI="not-wf/P48/ibm48n01.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n01.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the second cp in the choice field in the third elementdecl in the
+ DTD.
+ </TEST>
+ <TEST URI="not-wf/P48/ibm48n02.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n02.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the cp in the third elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P48/ibm48n03.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n03.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the first cp in the choice field in the third elementdecl in the
+ DTD.
+ </TEST>
+ <TEST URI="not-wf/P48/ibm48n04.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n04.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with wrong field ordering. The "+" occurs before the seq (a,a)
+ in the first cp in the choice field in the third elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P48/ibm48n05.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n05.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with wrong field ordering. The "*" occurs before the choice
+ (a|b) in the first cp in the seq field in the third elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P48/ibm48n06.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n06.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with wrong field ordering. The "?" occurs before the Name "a"
+ in the second cp in the seq field in the third elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P48/ibm48n07.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n07.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with wrong key word. The "^" occurs after the Name "a" in the
+ first cp in the choice field in the third elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 49">
+ <TEST URI="not-wf/P49/ibm49n01.xml" TYPE="not-wf" ID="ibm-not-wf-P49-ibm49n01.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests choice with a required field missing. The two cps are missing in
+ the choice field in the third elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P49/ibm49n02.xml" TYPE="not-wf" ID="ibm-not-wf-P49-ibm49n02.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests choice with a required field missing. The third cp is missing in
+ the choice field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P49/ibm49n03.xml" TYPE="not-wf" ID="ibm-not-wf-P49-ibm49n03.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests choice with a wrong separator. The "!" is used as the separator
+ in the choice field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P49/ibm49n04.xml" TYPE="not-wf" ID="ibm-not-wf-P49-ibm49n04.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests choice with a required field missing. The separator "|" is
+ missing in the choice field (a b)+ in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P49/ibm49n05.xml" TYPE="not-wf" ID="ibm-not-wf-P49-ibm49n05.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests choice with an extra separator. An extra "|" occurs between a
+ and b in the choice field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P49/ibm49n06.xml" TYPE="not-wf" ID="ibm-not-wf-P49-ibm49n06.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests choice with a required field missing. The closing bracket ")" is
+ missing in the choice field (a |b * in the fourth elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 50">
+ <TEST URI="not-wf/P50/ibm50n01.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n01.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with a required field missing. The two cps are missing in
+ the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P50/ibm50n02.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n02.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with a required field missing. The third cp is missing in
+ the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P50/ibm50n03.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n03.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with a wrong separator. The "|" is used as the separator
+ between a and b in the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P50/ibm50n04.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n04.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with a wrong separator. The "." is used as the separator
+ between a and b in the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P50/ibm50n05.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n05.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with an extra separator. An extra "," occurs between (a|b)
+ and a in the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P50/ibm50n06.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n06.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with a required field missing. The separator between (a|b)
+ and (b|a) is missing in the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P50/ibm50n07.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n07.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with wrong closing bracket. The "]" is used as the closing
+ bracket in the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 51">
+ <TEST URI="not-wf/P51/ibm51n01.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n01.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with a wrong key word. The string "#pcdata" is used as the
+ key word in the Mixed field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P51/ibm51n02.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n02.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with wrong field ordering. The field #PCDATA does not
+ occur as the first component in the Mixed field in the fourth elementdecl in
+ the DTD.
+ </TEST>
+ <TEST URI="not-wf/P51/ibm51n03.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n03.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with a separator missing. The separator "|" is missing in
+ between #PCDATA and a in the Mixed field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P51/ibm51n04.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n04.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with a wrong key word. The string "#CDATA" is used as the
+ key word in the Mixed field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P51/ibm51n05.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n05.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with a required field missing. The "*" is missing after
+ the ")" in the Mixed field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P51/ibm51n06.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n06.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with wrong closing bracket. The "]" is used as the closing
+ bracket in the Mixed field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P51/ibm51n07.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n07.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with a required field missing. The closing bracket ")" is
+ missing after (#PCDATA in the Mixed field in the fourth elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 52">
+ <TEST URI="not-wf/P52/ibm52n01.xml" TYPE="not-wf" ID="ibm-not-wf-P52-ibm52n01.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttlistDecl with a required field missing. The Name is missing
+ in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P52/ibm52n02.xml" TYPE="not-wf" ID="ibm-not-wf-P52-ibm52n02.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttlistDecl with a required field missing. The white space is
+ missing between the beginning sequence and the name in the AttlistDecl
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P52/ibm52n03.xml" TYPE="not-wf" ID="ibm-not-wf-P52-ibm52n03.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttlistDecl with wrong field ordering. The Name "a" occurs after
+ the first AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P52/ibm52n04.xml" TYPE="not-wf" ID="ibm-not-wf-P52-ibm52n04.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttlistDecl with wrong key word. The string "Attlist" is used as
+ the key word in the beginning sequence in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P52/ibm52n05.xml" TYPE="not-wf" ID="ibm-not-wf-P52-ibm52n05.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttlistDecl with a required field missing. The closing bracket
+ "greater than" is missing in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P52/ibm52n06.xml" TYPE="not-wf" ID="ibm-not-wf-P52-ibm52n06.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttlistDecl with wrong beginning sequence. The string
+ "(less than)ATTLIST" is used as the beginning sequence in the AttlistDecl in
+ the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 53">
+ <TEST URI="not-wf/P53/ibm53n01.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n01.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with a required field missing. The DefaultDecl is missing
+ in the AttDef for the name "attr1" in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n02.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n02.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with a required field missing. The white space is missing
+ between (abc|def) and "def" in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n03.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n03.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with a required field missing. The AttType is missing
+ for "attr1" in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n04.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n04.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with a required field missing. The white space is missing
+ between "attr1" and (abc|def) in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n05.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n05.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with a required field missing. The Name is missing in the
+ AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n06.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n06.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with a required field missing. The white space before the
+ name "attr2" is missing in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n07.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n07.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with wrong field ordering. The Name "attr1" occurs after
+ the AttType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n08.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n08.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with wrong field ordering. The Name "attr1" occurs after
+ the AttType and "default" occurs before the AttType in the AttDef in the
+ AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 54">
+ <TEST URI="not-wf/P54/ibm54n01.xml" TYPE="not-wf" ID="ibm-not-wf-P54-ibm54n01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests AttType with a wrong option. The string "BOGUSATTR" is used as
+ the AttType in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P54/ibm54n02.xml" TYPE="not-wf" ID="ibm-not-wf-P54-ibm54n02.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests AttType with a wrong option. The string "PCDATA" is used as
+ the AttType in the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 55">
+ <TEST URI="not-wf/P55/ibm55n01.xml" TYPE="not-wf" ID="ibm-not-wf-P55-ibm55n01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests StringType with a wrong key word. The lower case string "cdata"
+ is used as the StringType in the AttType in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P55/ibm55n02.xml" TYPE="not-wf" ID="ibm-not-wf-P55-ibm55n02.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests StringType with a wrong key word. The string "#CDATA" is used as
+ the StringType in the AttType in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P55/ibm55n03.xml" TYPE="not-wf" ID="ibm-not-wf-P55-ibm55n03.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests StringType with a wrong key word. The string "CData" is used as
+ the StringType in the AttType in the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 56">
+ <TEST URI="not-wf/P56/ibm56n01.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type "id" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P56/ibm56n02.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n02.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type "Idref" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P56/ibm56n03.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n03.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type"Idrefs" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P56/ibm56n04.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n04.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type "EntitY" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P56/ibm56n05.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n05.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type "nmTOKEN" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P56/ibm56n06.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n06.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type "NMtokens" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P56/ibm56n07.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n07.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type "#ID" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 57">
+ <TEST URI="not-wf/P57/ibm57n01.xml" TYPE="not-wf" ID="ibm-not-wf-P57-ibm57n01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests EnumeratedType with an illegal option. The string "NMTOKEN (a|b)"
+ is used in the EnumeratedType in the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 58">
+ <TEST URI="not-wf/P58/ibm58n01.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with wrong key word. The lower case "notation" is
+ used as the key word in the NotationType in the AttDef in the AttlistDecl in
+ the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n02.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n02.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with a required field missing. The beginning bracket
+ "(" is missing in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n03.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n03.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with a required field missing. The Name is missing
+ in the "()" in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n04.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n04.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with a required field missing. The closing bracket
+ is missing in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n05.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n05.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with wrong field ordering. The key word "NOTATION"
+ occurs after "(this)" in the NotationType in the AttDef in the AttlistDecl in
+ the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n06.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n06.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with wrong separator. The "," is used as a separator
+ between "this" and "that" in the NotationType in the AttDef in the AttlistDecl
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n07.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n07.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with a required field missing. The white space is
+ missing between "NOTATION" and "(this)" in the NotationType in the AttDef in the
+ AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n08.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n08.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with extra wrong characters. The double quote
+ character occurs after "(" and before ")" in the NotationType in the AttDef in
+ the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 59">
+ <TEST URI="not-wf/P59/ibm59n01.xml" TYPE="not-wf" ID="ibm-not-wf-P59-ibm59n01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests Enumeration with required fields missing. The Nmtokens and "|"s are
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P59/ibm59n02.xml" TYPE="not-wf" ID="ibm-not-wf-P59-ibm59n02.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests Enumeration with a required field missing. The closing bracket ")" is
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P59/ibm59n03.xml" TYPE="not-wf" ID="ibm-not-wf-P59-ibm59n03.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests Enumeration with wrong separator. The "," is used as the separator in
+ the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P59/ibm59n04.xml" TYPE="not-wf" ID="ibm-not-wf-P59-ibm59n04.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests Enumeration with illegal presence. The double quotes occur around the
+ Enumeration value in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P59/ibm59n05.xml" TYPE="not-wf" ID="ibm-not-wf-P59-ibm59n05.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests Enumeration with a required field missing. The white space is missing
+ between in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P59/ibm59n06.xml" TYPE="not-wf" ID="ibm-not-wf-P59-ibm59n06.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests Enumeration with a required field missing. The beginning bracket "(" is
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 60">
+ <TEST URI="not-wf/P60/ibm60n01.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n01.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with wrong key word. The string "#required" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n02.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n02.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with wrong key word. The string "Implied" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n03.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n03.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with wrong key word. The string "!IMPLIED" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n04.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n04.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with a required field missing. There is no
+ attribute value specified after the key word "#FIXED" in the DefaultDecl in
+ the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n05.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n05.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with a required field missing. The white space is
+ missing between the key word "#FIXED" and the attribute value in the
+ DefaultDecl in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n06.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n06.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with wrong field ordering. The key word "#FIXED"
+ occurs after the attribute value "introduction" in the DefaultDecl in the
+ AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n07.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n07.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl against WFC of P60. The text replacement of the
+ entity "avalue" contains the "less than" character in the DefaultDecl in the
+ AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n08.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n08.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with more than one key word. The "#REQUIRED" and
+ the "#IMPLIED" are used as the key words in the DefaultDecl in the AttDef
+ in the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 61">
+ <TEST URI="not-wf/P61/ibm61n01.xml" TYPE="not-wf" ID="ibm-not-wf-P61-ibm61n01.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests conditionalSect with a wrong option. The word "NOTINCLUDE" is
+ used as part of an option which is wrong in the coditionalSect.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 62">
+ <TEST URI="not-wf/P62/ibm62n01.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n01.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with wrong key word. The string "include" is used
+ as a key word in the beginning sequence in the includeSect in the file
+ ibm62n01.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n02.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n02.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with wrong beginning sequence. An extra "[" occurs
+ in the beginning sequence in the includeSect in the file ibm62n02.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n03.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n03.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with wrong beginning sequence. A wrong character "?"
+ occurs in the beginning sequence in the includeSect in the file ibm62n03.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n04.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n04.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with a required field missing. The key word
+ "INCLUDE" is missing in the includeSect in the file ibm62n04.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n05.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n05.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with a required field missing. The "[" is missing
+ after the key word "INCLUDE" in the includeSect in the file ibm62n05.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n06.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n06.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with wrong field ordering. The two external subset
+ declarations occur before the key word "INCLUDE" in the includeSect in the
+ file ibm62n06.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n07.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n07.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with a required field missing. The closing sequence
+ "]](greater than)" is missing in the includeSect in the file ibm62n07.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n08.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n08.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with a required field missing. One "]" is missing
+ in the closing sequence in the includeSect in the file ibm62n08.dtd.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 63">
+ <TEST URI="not-wf/P63/ibm63n01.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n01.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSect with wrong key word. The string "ignore" is used
+ as a key word in the beginning sequence in the ignoreSect in the file
+ ibm63n01.dtd.
+ </TEST>
+ <TEST URI="not-wf/P63/ibm63n02.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n02.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSect with wrong beginning sequence. An extra "[" occurs
+ in the beginning sequence in the ignoreSect in the file ibm63n02.dtd.
+ </TEST>
+ <TEST URI="not-wf/P63/ibm63n03.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n03.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSect with wrong beginning sequence. A wrong character "?"
+ occurs in the beginning sequence in the ignoreSect in the file ibm63n03.dtd.
+ </TEST>
+ <TEST URI="not-wf/P63/ibm63n04.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n04.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSect with a required field missing. The key word
+ "IGNORE" is missing in the ignoreSect in the file ibm63n04.dtd.
+ </TEST>
+ <TEST URI="not-wf/P63/ibm63n05.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n05.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSect with a required field missing. The "[" is missing
+ after the key word "IGNORE" in the ignoreSect in the file ibm63n05.dtd.
+ </TEST>
+ <TEST URI="not-wf/P63/ibm63n06.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n06.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with wrong field ordering. The two external subset
+ declarations occur before the key word "IGNORE" in the ignoreSect in the
+ file ibm63n06.dtd.
+ </TEST>
+ <TEST URI="not-wf/P63/ibm63n07.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n07.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSect with a required field missing. The closing sequence
+ "]](greater than)" is missing in the ignoreSect in the file ibm63n07.dtd.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 64">
+ <TEST URI="not-wf/P64/ibm64n01.xml" TYPE="not-wf" ID="ibm-not-wf-P64-ibm64n01.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSectContents with wrong beginning sequence. The "?" occurs
+ in beginning sequence the ignoreSectContents in the file ibm64n01.dtd.
+ </TEST>
+ <TEST URI="not-wf/P64/ibm64n02.xml" TYPE="not-wf" ID="ibm-not-wf-P64-ibm64n02.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSectContents with a required field missing.The closing
+ sequence is missing in the ignoreSectContents in the file ibm64n02.dtd.
+ </TEST>
+ <TEST URI="not-wf/P64/ibm64n03.xml" TYPE="not-wf" ID="ibm-not-wf-P64-ibm64n03.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSectContents with a required field missing.The beginning
+ sequence is missing in the ignoreSectContents in the file ibm64n03.dtd.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 65">
+ <TEST URI="not-wf/P65/ibm65n01.xml" TYPE="not-wf" ID="ibm-not-wf-P65-ibm65n01.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests Ignore with illegal string included. The string
+ "]](greater than)" is contained before "this" in the Ignore in the
+ ignoreSectContents in the file ibm65n01.dtd
+ </TEST>
+ <TEST URI="not-wf/P65/ibm65n02.xml" TYPE="not-wf" ID="ibm-not-wf-P65-ibm65n02.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests Ignore with illegal string included. The string
+ "(less than)![" is contained before "this" in the Ignore in the
+ ignoreSectContents in the file ibm65n02.dtd
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 66">
+ <TEST URI="not-wf/P66/ibm66n01.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n01.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#002f" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n02.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n02.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with the semicolon character missing. The semicolon
+ character is missing at the end of the CharRef in the attribute value in
+ the STag of element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n03.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n03.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "49" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n04.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n04.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#5~0" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n05.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n05.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#x002g" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n06.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n06.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#x006G" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n07.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n07.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#0=2f" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n08.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n08.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#56.0" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n09.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n09.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#x00/2f"
+ is used as the referred character in the CharRef in the EntityDecl in the
+ DTD.
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n10.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n10.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#51)" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n11.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n11.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#00 2f"
+ is used as the referred character in the CharRef in the EntityDecl in the
+ DTD.
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n12.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n12.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#x0000"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n13.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n13.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#x001f"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n14.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n14.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#xfffe"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n15.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n15.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#xffff"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 68">
+ <TEST URI="not-wf/P68/ibm68n01.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n01.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef with a required field missing. The Name is missing
+ in the EntityRef in the content of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n02.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n02.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef with a required field missing. The semicolon is
+ missing in the EntityRef in the attribute value in the element "root".
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n03.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n03.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef with an extra white space. A white space occurs
+ after the ampersand in the EntityRef in the content of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n04.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n04.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: Entity Declared. The name
+ "aAa" in the EntityRef in the AttValue in the STage of the element "root"
+ does not match the Name of any declared entity in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n05.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n05.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is not declared.
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n06.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n06.xml" ENTITIES="parameter" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is externally declared, but standalone is "yes".
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n07.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n07.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is referred before declared.
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n08.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n08.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: Parsed Entity. The
+ EntityRef in the AttValue in the STag of the element "root" contains the
+ name "aImage" of an unparsed entity.
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n09.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n09.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: No Recursion. The
+ recursive entity reference occurs with the entity declarations for "aaa"
+ and "bbb" in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n10.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n10.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: No Recursion. The
+ indirect recursive entity reference occurs with the entity declarations for
+ "aaa", "bbb", "ccc", "ddd", and "eee" in the DTD.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 69">
+ <TEST URI="not-wf/P69/ibm69n01.xml" TYPE="not-wf" ID="ibm-not-wf-P69-ibm69n01.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests PEReference with a required field missing. The Name "paaa" is
+ missing in the PEReference in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P69/ibm69n02.xml" TYPE="not-wf" ID="ibm-not-wf-P69-ibm69n02.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests PEReference with a required field missing. The semicolon is
+ missing in the PEReference "%paaa" in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P69/ibm69n03.xml" TYPE="not-wf" ID="ibm-not-wf-P69-ibm69n03.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests PEReference with an extra white space. There is an extra
+ white space occurs before ";" in the PEReference in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P69/ibm69n04.xml" TYPE="not-wf" ID="ibm-not-wf-P69-ibm69n04.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests PEReference with an extra white space. There is an extra
+ white space occurs after "%" in the PEReference in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P69/ibm69n05.xml" TYPE="error" ID="ibm-not-wf-P69-ibm69n05.xml" ENTITIES="none" SECTIONS="4.1">
+ Based on E29 substantial source: minutes XML-Syntax 1999-02-24 E38 in
+ XML 1.0 Errata, this WFC does not apply to P69, but the VC Entity declared
+ still apply.
+ Tests PEReference which is against P69 WFC: Entity Declared. The PE
+ with the name "paaa" is referred before declared in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P69/ibm69n06.xml" TYPE="not-wf" ID="ibm-not-wf-P69-ibm69n06.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests PEReference which is against P69 WFC: No Recursion. The
+ recursive PE reference occurs with the entity declarations for "paaa" and
+ "bbb" in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P69/ibm69n07.xml" TYPE="not-wf" ID="ibm-not-wf-P69-ibm69n07.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests PEReference which is against P69 WFC: No Recursion. The
+ indirect recursive PE reference occurs with the entity declarations for
+ "paaa", "bbb", "ccc", "ddd", and "eee" in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 71">
+ <TEST URI="not-wf/P71/ibm70n01.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm70n01.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n01.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n01.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with a required field missing. The white space is
+ missing between the beginning sequence and the Name "aaa" in the EntityDecl
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n02.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n02.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with a required field missing. The white space is
+ missing between the Name "aaa" and the EntityDef "aString" in the
+ EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n03.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n03.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with a required field missing. The EntityDef is
+ missing in the EntityDecl with the Name "aaa" in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n04.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n04.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with a required field missing. The Name is missing
+ in the EntityDecl with the EntityDef "aString" in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n05.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n05.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with wrong ordering. The Name "aaa" occurs after
+ the EntityDef in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n06.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n06.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with wrong key word. The string "entity" is used
+ as the key word in the beginning sequence in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n07.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n07.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with a required field missing. The closing bracket
+ (greater than) is missing in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n08.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n08.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with a required field missing. The exclamation mark
+ is missing in the beginning sequence in the EntityDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 72">
+ <TEST URI="not-wf/P72/ibm72n01.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n01.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with a required field missing. The white space is
+ missing between the beginning sequence and the "%" in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n02.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n02.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with a required field missing. The Name is missing
+ in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n03.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n03.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with a required field missing. The white space is
+ missing between the Name and the PEDef in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n04.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n04.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with a required field missing. The PEDef is missing
+ after the Name "paaa" in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n05.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n05.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with wrong field ordering. The Name "paaa" occurs
+ after the PEDef in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n06.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n06.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with wrong field ordering. The "%" and the Name "paaa"
+ occurs after the PEDef in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n07.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n07.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with wrong key word. The string "entity" is used as
+ the key word in the beginning sequence in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n08.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n08.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with a required field missing. The closing bracket
+ (greater than) is missing in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n09.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n09.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with wrong closing sequence. The string
+ "!(greater than)" is used as the closing sequence in the PEDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 73">
+ <TEST URI="not-wf/P73/ibm73n01.xml" TYPE="not-wf" ID="ibm-not-wf-P73-ibm73n01.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDef with wrong field ordering. The NDataDecl "NDATA
+ JPGformat" occurs before the ExternalID in the EntityDef in the EntityDecl.
+ </TEST>
+ <TEST URI="not-wf/P73/ibm73n03.xml" TYPE="not-wf" ID="ibm-not-wf-P73-ibm73n03.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDef with a required field missing. The ExternalID is
+ missing before the NDataDecl in the EntityDef in the EntityDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 74">
+ <TEST URI="not-wf/P74/ibm74n01.xml" TYPE="not-wf" ID="ibm-not-wf-P74-ibm74n01.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEDef with extra fields. The NDataDecl occurs after the
+ ExternalID in the PEDef in the PEDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 75">
+ <TEST URI="not-wf/P75/ibm75n01.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n01.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with wrong key word. The string "system" is used
+ as the key word in the ExternalID in the EntityDef in the EntityDecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n02.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n02.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with wrong key word. The string "public" is used
+ as the key word in the ExternalID in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n03.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n03.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with wrong key word. The string "Public" is used
+ as the key word in the ExternalID in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n04.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n04.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PublicLiteral and the SystemLiteral in the ExternalID in
+ the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n05.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n05.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The white space
+ between "SYSTEM" and the Systemliteral is missing in the ExternalID in the
+ EntityDef in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n06.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n06.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The Systemliteral
+ is missing after "SYSTEM" in the ExternalID in the EntityDef in the
+ EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n07.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n07.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The white space
+ between the PublicLiteral and the Systemliteral is missing in the ExternalID
+ in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n08.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n08.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The key word
+ "PUBLIC" is missing in the ExternalID in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n09.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n09.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The white space
+ between "PUBLIC" and the PublicLiteral is missing in the ExternalID in the
+ doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n10.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n10.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The PublicLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n11.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n11.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The PublicLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n12.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n12.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The SystemLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n13.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n13.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PublicLiteral in the ExternalID in the doctypedecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 76">
+ <TEST URI="not-wf/P76/ibm76n01.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n01.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with wrong key word. The string "ndata" is used as
+ the key word in the NDataDecl in the EntityDef in the GEDecl.
+ </TEST>
+ <TEST URI="not-wf/P76/ibm76n02.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n02.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with wrong key word. The string "NData" is used as
+ the key word in the NDataDecl in the EntityDef in the GEDecl.
+ </TEST>
+ <TEST URI="not-wf/P76/ibm76n03.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n03.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with a required field missing. The leading white
+ space is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </TEST>
+ <TEST URI="not-wf/P76/ibm76n04.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n04.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with a required field missing. The key word "NDATA"
+ is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </TEST>
+ <TEST URI="not-wf/P76/ibm76n05.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n05.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with a required field missing. The Name after the
+ key word "NDATA" is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </TEST>
+ <TEST URI="not-wf/P76/ibm76n06.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n06.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with a required field missing. The white space
+ between "NDATA" and the Name is missing in the NDataDecl in the EntityDef
+ in the GEDecl.
+ </TEST>
+ <TEST URI="not-wf/P76/ibm76n07.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n07.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with wrong field ordering. The key word "NDATA"
+ occurs after the Name in the NDataDecl in the EntityDef in the GEDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 77">
+ <TEST URI="not-wf/P77/ibm77n01.xml" TYPE="not-wf" ID="ibm-not-wf-P77-ibm77n01.xml" ENTITIES="general" SECTIONS="4.3.1">
+ Tests TextDecl with wrong field ordering. The VersionInfo occurs
+ after the EncodingDecl in the TextDecl in the file "ibm77n01.ent".
+ </TEST>
+ <TEST URI="not-wf/P77/ibm77n02.xml" TYPE="not-wf" ID="ibm-not-wf-P77-ibm77n02.xml" ENTITIES="general" SECTIONS="4.3.1">
+ Tests TextDecl with wrong key word. The string "XML" is used in the
+ beginning sequence in the TextDecl in the file "ibm77n02.ent".
+ </TEST>
+ <TEST URI="not-wf/P77/ibm77n03.xml" TYPE="not-wf" ID="ibm-not-wf-P77-ibm77n03.xml" ENTITIES="parameter" SECTIONS="4.3.1">
+ Tests TextDecl with wrong closing sequence. The character "greater
+ than" is used as the closing sequence in the TextDecl in the file
+ "ibm77n03.ent".
+ </TEST>
+ <TEST URI="not-wf/P77/ibm77n04.xml" TYPE="not-wf" ID="ibm-not-wf-P77-ibm77n04.xml" ENTITIES="parameter" SECTIONS="4.3.1">
+ Tests TextDecl with a required field missing. The closing sequence
+ is missing in the TextDecl in the file "ibm77n04.ent".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 78">
+ <TEST URI="not-wf/P78/ibm78n01.xml" TYPE="not-wf" ID="ibm-not-wf-P78-ibm78n01.xml" ENTITIES="general" SECTIONS="4.3.2">
+ Tests extParsedEnt with wrong field ordering. The TextDecl occurs
+ after the content in the file ibm78n01.ent.
+ </TEST>
+ <TEST URI="not-wf/P78/ibm78n02.xml" TYPE="not-wf" ID="ibm-not-wf-P78-ibm78n02.xml" ENTITIES="general" SECTIONS="4.3.2">
+ Tests extParsedEnt with extra field. A blank line occurs before the
+ TextDecl in the file ibm78n02.ent.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 79">
+ <TEST URI="not-wf/P79/ibm79n01.xml" TYPE="not-wf" ID="ibm-not-wf-P79-ibm79n01.xml" ENTITIES="parameter" SECTIONS="4.3.2">
+ Tests extPE with wrong field ordering. The TextDecl occurs after
+ the extSubsetDecl (the white space and the comment) in the file
+ ibm79n01.ent.
+ </TEST>
+ <TEST URI="not-wf/P79/ibm79n02.xml" TYPE="not-wf" ID="ibm-not-wf-P79-ibm79n02.xml" ENTITIES="parameter" SECTIONS="4.3.2">
+ Tests extPE with extra field. A blank line occurs before the
+ TextDecl in the file ibm78n02.ent.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 80">
+ <TEST URI="not-wf/P80/ibm80n01.xml" TYPE="not-wf" ID="ibm-not-wf-P80-ibm80n01.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncodingDecl with a required field missing. The leading white
+ space is missing in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P80/ibm80n02.xml" TYPE="not-wf" ID="ibm-not-wf-P80-ibm80n02.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncodingDecl with a required field missing. The "=" sign is
+ missing in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P80/ibm80n03.xml" TYPE="not-wf" ID="ibm-not-wf-P80-ibm80n03.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncodingDecl with a required field missing. The double quoted
+ EncName are missing in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P80/ibm80n04.xml" TYPE="not-wf" ID="ibm-not-wf-P80-ibm80n04.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncodingDecl with wrong field ordering. The string "encoding=" occurs after the double quoted EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P80/ibm80n05.xml" TYPE="not-wf" ID="ibm-not-wf-P80-ibm80n05.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncodingDecl with wrong field ordering. The "encoding" occurs
+ after the double quoted EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P80/ibm80n06.xml" TYPE="not-wf" ID="ibm-not-wf-P80-ibm80n06.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncodingDecl with wrong key word. The string "Encoding" is
+ used as the key word in the EncodingDecl in the XMLDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 81">
+ <TEST URI="not-wf/P81/ibm81n01.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n01.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The "_" is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n02.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n02.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The "-" is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n03.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n03.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The "." is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n04.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n04.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with illegal characters. The "8-" is used as the
+ initial characters in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n05.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n05.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The "~" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n06.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n06.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The "#" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n07.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n07.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The ":" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n08.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n08.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The "/" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n09.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n09.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The ";" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 82">
+ <TEST URI="not-wf/P82/ibm82n01.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n01.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with a required field missing. The white space
+ after the beginning sequence of the NotationDecl is missing in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n02.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n02.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with a required field missing. The Name in the
+ NotationDecl is missing in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n03.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n03.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with a required field missing. The externalID or
+ the PublicID is missing in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n04.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n04.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with wrong field ordering. The Name occurs after
+ the "SYSTEM" and the externalID in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n05.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n05.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with wrong key word. The string "notation" is
+ used as a key word in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n06.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n06.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with a required field missing. The closing
+ bracket (the greater than character) is missing in the NotationDecl.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n07.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n07.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with wrong beginning sequence. The "!" is missing
+ in the beginning sequence in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n08.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n08.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with wrong closing sequence. The extra "!" occurs
+ in the closing sequence in the NotationDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 83">
+ <TEST URI="not-wf/P83/ibm83n01.xml" TYPE="not-wf" ID="ibm-not-wf-P83-ibm83n01.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests PublicID with wrong key word. The string "public" is used as
+ the key word in the PublicID in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P83/ibm83n02.xml" TYPE="not-wf" ID="ibm-not-wf-P83-ibm83n02.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests PublicID with wrong key word. The string "Public" is used as
+ the key word in the PublicID in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P83/ibm83n03.xml" TYPE="not-wf" ID="ibm-not-wf-P83-ibm83n03.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests PublicID with a required field missing. The key word "PUBLIC"
+ is missing in the PublicID in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P83/ibm83n04.xml" TYPE="not-wf" ID="ibm-not-wf-P83-ibm83n04.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests PublicID with a required field missing. The white space
+ between the "PUBLIC" and the PubidLiteral is missing in the PublicID in
+ the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P83/ibm83n05.xml" TYPE="not-wf" ID="ibm-not-wf-P83-ibm83n05.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests PublicID with a required field missing. The PubidLiteral is
+ missing in the PublicID in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P83/ibm83n06.xml" TYPE="not-wf" ID="ibm-not-wf-P83-ibm83n06.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests PublicID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PubidLiteral in the PublicID in the NotationDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 85">
+ <TEST URI="not-wf/P85/ibm85n01.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n01.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x00D7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n02.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n02.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x00F7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n03.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n03.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0132
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n04.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n04.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0133
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n05.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n05.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x013F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n06.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n06.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0140
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n07.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n07.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0149
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n08.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n08.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x017F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n09.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n09.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01c4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n10.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n10.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01CC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n100.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n100.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0BB6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n101.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n101.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0BBA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n102.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n102.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n103.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n103.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n104.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n104.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n105.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n105.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n106.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n106.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C5F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n107.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n107.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n108.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n108.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C8D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n109.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n109.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C91
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n11.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n11.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01F1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n110.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n110.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0CA9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n111.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n111.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0CB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n112.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n112.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0CBA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n113.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n113.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0CDF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n114.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n114.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0CE2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n115.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n115.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0D0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n116.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n116.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0D11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n117.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n117.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0D29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n118.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n118.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0D3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n119.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n119.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0D62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n12.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n12.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01F3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n120.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n120.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E2F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n121.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n121.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n122.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n122.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n123.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n123.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E46
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n124.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n124.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E83
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n125.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n125.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E85
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n126.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n126.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E89
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n127.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n127.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E8B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n128.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n128.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E8E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n129.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n129.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E98
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n13.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n13.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01F6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n130.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n130.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EA0
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n131.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n131.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EA4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n132.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n132.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EA6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n133.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n133.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EA8
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n134.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n134.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EAC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n135.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n135.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EAF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n136.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n136.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EB1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n137.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n137.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n138.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n138.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EBE
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n139.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n139.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EC5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n14.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n14.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01F9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n140.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n140.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0F48
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n141.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n141.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0F6A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n142.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n142.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x10C6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n143.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n143.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x10F7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n144.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n144.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1011
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n145.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n145.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1104
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n146.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n146.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1108
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n147.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n147.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x110A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n148.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n148.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x110D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n149.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n149.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x113B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n15.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n15.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01F9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n150.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n150.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x113F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n151.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n151.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1141
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n152.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n152.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x114D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n153.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n153.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x114f
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n154.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n154.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1151
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n155.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n155.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1156
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n156.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n156.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x115A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n157.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n157.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1162
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n158.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n158.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1164
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n159.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n159.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1166
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n16.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n16.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0230
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n160.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n160.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x116B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n161.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n161.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x116F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n162.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n162.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1174
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n163.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n163.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x119F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n164.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n164.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11AC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n165.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n165.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11B6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n166.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n166.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11B9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n167.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n167.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11BB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n168.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n168.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11C3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n169.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n169.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11F1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n17.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n17.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x02AF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n170.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n170.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11FA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n171.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n171.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1E9C
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n172.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n172.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1EFA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n173.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n173.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F16
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n174.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n174.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F1E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n175.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n175.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F46
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n176.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n176.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F4F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n177.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n177.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F58
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n178.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n178.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F5A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n179.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n179.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F5C
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n18.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n18.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x02CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n180.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n180.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F5E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n181.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n181.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F7E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n182.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n182.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FB5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n183.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n183.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FBD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n184.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n184.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FBF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n185.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n185.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FC5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n186.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n186.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FCD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n187.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n187.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FD5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n188.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n188.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FDC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n189.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n189.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FED
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n19.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n19.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0387
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n190.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n190.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FF5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n191.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n191.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FFD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n192.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n192.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x2127
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n193.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n193.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x212F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n194.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n194.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x2183
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n195.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n195.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x3095
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n196.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n196.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x30FB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n197.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n197.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x312D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n198.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n198.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #xD7A4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n20.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n20.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x038B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n21.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n21.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x03A2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n22.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n22.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x03CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n23.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n23.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x03D7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n24.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n24.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x03DD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n25.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n25.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x03E1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n26.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n26.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x03F4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n27.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n27.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x040D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n28.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n28.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0450
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n29.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n29.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x045D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n30.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n30.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0482
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n31.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n31.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04C5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n32.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n32.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04C6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n33.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n33.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04C9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n34.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n34.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04EC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n35.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n35.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04ED
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n36.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n36.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04F6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n37.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n37.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04FA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n38.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n38.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0557
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n39.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n39.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0558
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n40.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n40.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0587
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n41.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n41.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x05EB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n42.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n42.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x05F3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n43.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n43.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0620
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n44.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n44.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x063B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n45.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n45.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x064B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n46.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n46.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x06B8
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n47.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n47.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x06BF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n48.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n48.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x06CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n49.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n49.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x06D4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n50.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n50.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x06D6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n51.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n51.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x06E7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n52.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n52.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x093A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n53.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n53.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x093E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n54.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n54.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0962
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n55.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n55.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x098D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n56.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n56.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0991
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n57.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n57.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0992
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n58.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n58.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09A9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n59.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n59.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09B1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n60.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n60.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09B5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n61.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n61.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09BA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n62.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n62.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09DE
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n63.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n63.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09E2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n64.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n64.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09F2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n65.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n65.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A0B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n66.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n66.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n67.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n67.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n68.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n68.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n69.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n69.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n70.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n70.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A37
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n71.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n71.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n72.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n72.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A5D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n73.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n73.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A70
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n74.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n74.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A75
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n75.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n75.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #xA84
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n76.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n76.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0ABC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n77.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n77.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A92
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n78.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n78.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0AA9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n79.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n79.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0AB1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n80.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n80.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0AB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n81.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n81.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0ABA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n82.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n82.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B04
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n83.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n83.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n84.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n84.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n85.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n85.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n86.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n86.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n87.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n87.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n88.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n88.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n89.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n89.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B3E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n90.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n90.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B5E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n91.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n91.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n92.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n92.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B8B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n93.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n93.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B91
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n94.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n94.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B98
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n95.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n95.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B9B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n96.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n96.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B9D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n97.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n97.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0BA0
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n98.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n98.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0BA7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n99.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n99.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0BAB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 86">
+ <TEST URI="not-wf/P86/ibm86n01.xml" TYPE="not-wf" ID="ibm-not-wf-P86-ibm86n01.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Ideographic with an illegal character. The character #x4CFF
+ occurs as the first character in the PITarget in the PI in the DTD.
+</TEST>
+ <TEST URI="not-wf/P86/ibm86n02.xml" TYPE="not-wf" ID="ibm-not-wf-P86-ibm86n02.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Ideographic with an illegal character. The character #x9FA6
+ occurs as the first character in the PITarget in the PI in the DTD.
+</TEST>
+ <TEST URI="not-wf/P86/ibm86n03.xml" TYPE="not-wf" ID="ibm-not-wf-P86-ibm86n03.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Ideographic with an illegal character. The character #x3008
+ occurs as the first character in the PITarget in the PI in the DTD.
+</TEST>
+ <TEST URI="not-wf/P86/ibm86n04.xml" TYPE="not-wf" ID="ibm-not-wf-P86-ibm86n04.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Ideographic with an illegal character. The character #x302A
+ occurs as the first character in the PITarget in the PI in the DTD.
+</TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 87">
+ <TEST URI="not-wf/P87/ibm87n01.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n01.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x02FF
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n02.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n02.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0346
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n03.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n03.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0362
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n04.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n04.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0487
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n05.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n05.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x05A2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n06.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n06.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x05BA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n07.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n07.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x05BE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n08.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n08.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x05C0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n09.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n09.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x05C3
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n10.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n10.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0653
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n11.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n11.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x06B8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n12.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n12.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x06B9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n13.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n13.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x06E9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n14.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n14.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x06EE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n15.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n15.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0904
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n16.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n16.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x093B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n17.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n17.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x094E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n18.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n18.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0955
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n19.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n19.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0964
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n20.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n20.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0984
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n21.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n21.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x09C5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n22.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n22.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x09C9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n23.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n23.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x09CE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n24.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n24.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x09D8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n25.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n25.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x09E4
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n26.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n26.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A03
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n27.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n27.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A3D
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n28.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n28.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A46
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n29.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n29.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n30.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n30.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n31.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n31.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A80
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n32.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n32.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n33.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n33.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0ABB
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n34.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n34.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0AC6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n35.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n35.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0ACA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n36.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n36.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0ACE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n37.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n37.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B04
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n38.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n38.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n39.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n39.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B44
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n40.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n40.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B4A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n41.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n41.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n42.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n42.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B58
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n43.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n43.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n44.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n44.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0BC3
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n45.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n45.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0BC9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n46.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n46.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0BD6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n47.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n47.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0C0D
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n48.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n48.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0C45
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n49.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n49.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0C49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n50.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n50.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0C54
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n51.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n51.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0C81
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n52.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n52.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0C84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n53.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n53.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0CC5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n54.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n54.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0CC9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n55.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n55.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0CD4
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n56.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n56.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0CD7
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n57.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n57.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0D04
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n58.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n58.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0D45
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n59.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n59.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0D49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n60.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n60.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0D4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n61.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n61.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0D58
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n62.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n62.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0E3F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n63.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n63.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0E3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n64.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n64.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0E4F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n66.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n66.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0EBA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n67.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n67.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0EBE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n68.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n68.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0ECE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n69.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n69.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F1A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n70.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n70.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F36
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n71.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n71.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F38
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n72.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n72.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n73.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n73.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F3A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n74.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n74.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n75.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n75.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F85
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n76.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n76.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F8C
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n77.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n77.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F96
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n78.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n78.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F98
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n79.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n79.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0FB0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n80.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n80.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0FB8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n81.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n81.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0FBA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n82.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n82.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x20DD
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n83.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n83.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x20E2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n84.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n84.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x3030
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n85.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n85.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x309B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 88">
+ <TEST URI="not-wf/P88/ibm88n01.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n01.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0029
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n02.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n02.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x003B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n03.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n03.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x066A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n04.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n04.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x06FA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n05.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n05.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0970
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n06.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n06.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x09F2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n08.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n08.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0AF0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n09.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n09.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0B70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n10.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n10.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0C65
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n11.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n11.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0CE5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n12.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n12.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0CF0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n13.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n13.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0D70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n14.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n14.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0E5A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n15.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n15.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0EDA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n16.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n16.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0F2A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 89">
+ <TEST URI="not-wf/P89/ibm89n01.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n01.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x00B6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n02.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n02.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x00B8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n03.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n03.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x02D2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n04.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n04.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x03FE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n05.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n05.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x065F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n06.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n06.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x0EC7
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n07.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n07.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x3006
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n08.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n08.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x3030
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n09.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n09.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x3036
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n10.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n10.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x309C
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n11.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n11.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x309F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n12.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n12.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x30FF
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+</TESTCASES>
+
+</TESTCASES>
+
+
+
+
+ <!--
+
+ (C) Copyright IBM Corp. 2000 All rights reserved.
+
+ US Government Users Restricted Rights Use, duplication or
+ disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ The program is provided "as is" without any warranty express or
+ implied, including the warranty of non-infringement and the implied
+ warranties of merchantibility and fitness for a particular purpose.
+ IBM will not be liable for any damages suffered by you as a result
+ of using the Program. In no event will IBM be liable for any
+ special, indirect or consequential damages or lost profits even if
+ IBM has been advised of the possibility of their occurrence. IBM
+ will not be liable for any third party claims against you.
+
+-->
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - valid tests">
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 1">
+ <TEST URI="valid/P01/ibm01v01.xml" TYPE="valid" ID="ibm-valid-P01-ibm01v01.xml" ENTITIES="none" SECTIONS="2.1" OUTPUT="valid/P01/out/ibm01v01.xml">
+ Tests with a xml document consisting of <EM>prolog</EM> followed by
+ <EM>element</EM> then <EM>Misc</EM>
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 2">
+ <TEST URI="valid/P02/ibm02v01.xml" TYPE="valid" ID="ibm-valid-P02-ibm02v01.xml" ENTITIES="none" SECTIONS="2.2">
+ This test case covers legal character ranges plus discrete legal characters for production 02.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 3">
+ <TEST URI="valid/P03/ibm03v01.xml" TYPE="valid" ID="ibm-valid-P03-ibm03v01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests all 4 legal white space characters - #x20 #x9 #xD #xA
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 9">
+ <TEST URI="valid/P09/ibm09v01.xml" TYPE="valid" ID="ibm-valid-P09-ibm09v01.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P09/out/ibm09v01.xml">
+ Empty EntityValue is legal
+ </TEST>
+ <TEST URI="valid/P09/ibm09v02.xml" TYPE="valid" ID="ibm-valid-P09-ibm09v02.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P09/out/ibm09v02.xml">
+ Tests a normal EnitityValue
+ </TEST>
+ <TEST URI="valid/P09/ibm09v03.xml" TYPE="valid" ID="ibm-valid-P09-ibm09v03.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P09/out/ibm09v03.xml">
+ Tests EnitityValue referencing a Parameter Entity
+ </TEST>
+ <TEST URI="valid/P09/ibm09v04.xml" TYPE="valid" ID="ibm-valid-P09-ibm09v04.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P09/out/ibm09v04.xml">
+ Tests EnitityValue referencing a General Entity
+ </TEST>
+ <TEST URI="valid/P09/ibm09v05.xml" TYPE="valid" ID="ibm-valid-P09-ibm09v05.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P09/out/ibm09v05.xml">
+ Tests EnitityValue with combination of GE, PE and text, the GE used is
+ declared in the student.dtd
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 10">
+ <TEST URI="valid/P10/ibm10v01.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v01.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v01.xml">
+ Tests empty AttValue with double quotes as the delimiters
+</TEST>
+ <TEST URI="valid/P10/ibm10v02.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v02.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v02.xml">
+ Tests empty AttValue with single quotes as the delimiters
+</TEST>
+ <TEST URI="valid/P10/ibm10v03.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v03.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v03.xml">
+ Test AttValue with double quotes as the delimiters and single quote inside
+</TEST>
+ <TEST URI="valid/P10/ibm10v04.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v04.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v04.xml">
+ Test AttValue with single quotes as the delimiters and double quote inside
+</TEST>
+ <TEST URI="valid/P10/ibm10v05.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v05.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v05.xml">
+ Test AttValue with a GE reference and double quotes as the delimiters
+</TEST>
+ <TEST URI="valid/P10/ibm10v06.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v06.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v06.xml">
+ Test AttValue with a GE reference and single quotes as the delimiters
+</TEST>
+ <TEST URI="valid/P10/ibm10v07.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v07.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v07.xml">
+ testing AttValue with mixed references and text content in double quotes
+</TEST>
+ <TEST URI="valid/P10/ibm10v08.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v08.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v08.xml">
+ testing AttValue with mixed references and text content in single quotes
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 11">
+ <TEST URI="valid/P11/ibm11v01.xml" TYPE="valid" ID="ibm-valid-P11-ibm11v01.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P11/out/ibm11v01.xml">
+ Tests empty systemliteral using the double quotes
+</TEST>
+ <TEST URI="valid/P11/ibm11v02.xml" TYPE="valid" ID="ibm-valid-P11-ibm11v02.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P11/out/ibm11v02.xml">
+ Tests empty systemliteral using the single quotes
+</TEST>
+ <TEST URI="valid/P11/ibm11v03.xml" TYPE="valid" ID="ibm-valid-P11-ibm11v03.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P11/out/ibm11v03.xml">
+ Tests regular systemliteral using the single quotes
+</TEST>
+ <TEST URI="valid/P11/ibm11v04.xml" TYPE="valid" ID="ibm-valid-P11-ibm11v04.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P11/out/ibm11v04.xml">
+ Tests regular systemliteral using the double quotes
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 12">
+ <TEST URI="valid/P12/ibm12v01.xml" TYPE="valid" ID="ibm-valid-P12-ibm12v01.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P12/out/ibm12v01.xml">
+ Tests empty systemliteral using the double quotes
+</TEST>
+ <TEST URI="valid/P12/ibm12v02.xml" TYPE="valid" ID="ibm-valid-P12-ibm12v02.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P12/out/ibm12v02.xml">
+ Tests empty systemliteral using the single quotes
+</TEST>
+ <TEST URI="valid/P12/ibm12v03.xml" TYPE="valid" ID="ibm-valid-P12-ibm12v03.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P12/out/ibm12v03.xml">
+ Tests regular systemliteral using the double quotes
+</TEST>
+ <TEST URI="valid/P12/ibm12v04.xml" TYPE="valid" ID="ibm-valid-P12-ibm12v04.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P12/out/ibm12v04.xml">
+ Tests regular systemliteral using the single quotes
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 13">
+ <TEST URI="valid/P13/ibm13v01.xml" TYPE="valid" ID="ibm-valid-P13-ibm13v01.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P13/out/ibm13v01.xml">
+ Testing PubidChar with all legal PubidChar in a PubidLiteral
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 14">
+ <TEST URI="valid/P14/ibm14v01.xml" TYPE="valid" ID="ibm-valid-P14-ibm14v01.xml" ENTITIES="none" SECTIONS="2.4" OUTPUT="valid/P14/out/ibm14v01.xml">
+ Testing CharData with empty string
+</TEST>
+ <TEST URI="valid/P14/ibm14v02.xml" TYPE="valid" ID="ibm-valid-P14-ibm14v02.xml" ENTITIES="none" SECTIONS="2.4" OUTPUT="valid/P14/out/ibm14v02.xml">
+ Testing CharData with white space character
+</TEST>
+ <TEST URI="valid/P14/ibm14v03.xml" TYPE="valid" ID="ibm-valid-P14-ibm14v03.xml" ENTITIES="none" SECTIONS="2.4" OUTPUT="valid/P14/out/ibm14v03.xml">
+ Testing CharData with a general text string
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 15">
+ <TEST URI="valid/P15/ibm15v01.xml" TYPE="valid" ID="ibm-valid-P15-ibm15v01.xml" ENTITIES="none" SECTIONS="2.5" OUTPUT="valid/P15/out/ibm15v01.xml">
+ Tests empty comment
+</TEST>
+ <TEST URI="valid/P15/ibm15v02.xml" TYPE="valid" ID="ibm-valid-P15-ibm15v02.xml" ENTITIES="none" SECTIONS="2.5" OUTPUT="valid/P15/out/ibm15v02.xml">
+ Tests comment with regular text
+</TEST>
+ <TEST URI="valid/P15/ibm15v03.xml" TYPE="valid" ID="ibm-valid-P15-ibm15v03.xml" ENTITIES="none" SECTIONS="2.5" OUTPUT="valid/P15/out/ibm15v03.xml">
+ Tests comment with one dash inside
+</TEST>
+ <TEST URI="valid/P15/ibm15v04.xml" TYPE="valid" ID="ibm-valid-P15-ibm15v04.xml" ENTITIES="none" SECTIONS="2.5" OUTPUT="valid/P15/out/ibm15v04.xml">
+ Tests comment with more comprehensive content
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 16">
+ <TEST URI="valid/P16/ibm16v01.xml" TYPE="valid" ID="ibm-valid-P16-ibm16v01.xml" ENTITIES="none" SECTIONS="2.6" OUTPUT="valid/P16/out/ibm16v01.xml">
+ Tests PI definition with only PItarget name and nothing else
+</TEST>
+ <TEST URI="valid/P16/ibm16v02.xml" TYPE="valid" ID="ibm-valid-P16-ibm16v02.xml" ENTITIES="none" SECTIONS="2.6" OUTPUT="valid/P16/out/ibm16v02.xml">
+ Tests PI definition with only PItarget name and a white space
+</TEST>
+ <TEST URI="valid/P16/ibm16v03.xml" TYPE="valid" ID="ibm-valid-P16-ibm16v03.xml" ENTITIES="none" SECTIONS="2.6" OUTPUT="valid/P16/out/ibm16v03.xml">
+ Tests PI definition with PItarget name and text that contains
+ question mark and right angle
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 17">
+ <TEST URI="valid/P17/ibm17v01.xml" TYPE="valid" ID="ibm-valid-P17-ibm17v01.xml" ENTITIES="none" SECTIONS="2.6" OUTPUT="valid/P17/out/ibm17v01.xml">
+ Tests PITarget name
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 18">
+ <TEST URI="valid/P18/ibm18v01.xml" TYPE="valid" ID="ibm-valid-P18-ibm18v01.xml" ENTITIES="none" SECTIONS="2.7" OUTPUT="valid/P18/out/ibm18v01.xml">
+ Tests CDSect with CDStart CData CDEnd
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 19">
+ <TEST URI="valid/P19/ibm19v01.xml" TYPE="valid" ID="ibm-valid-P19-ibm19v01.xml" ENTITIES="none" SECTIONS="2.7" OUTPUT="valid/P19/out/ibm19v01.xml">
+ Tests CDStart
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 20">
+ <TEST URI="valid/P20/ibm20v01.xml" TYPE="valid" ID="ibm-valid-P20-ibm20v01.xml" ENTITIES="none" SECTIONS="2.7" OUTPUT="valid/P20/out/ibm20v01.xml">
+ Tests CDATA with empty string
+</TEST>
+ <TEST URI="valid/P20/ibm20v02.xml" TYPE="valid" ID="ibm-valid-P20-ibm20v02.xml" ENTITIES="none" SECTIONS="2.7" OUTPUT="valid/P20/out/ibm20v02.xml">
+ Tests CDATA with regular content
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 21">
+ <TEST URI="valid/P21/ibm21v01.xml" TYPE="valid" ID="ibm-valid-P21-ibm21v01.xml" ENTITIES="none" SECTIONS="2.7" OUTPUT="valid/P21/out/ibm21v01.xml">
+ Tests CDEnd
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 22">
+ <TEST URI="valid/P22/ibm22v01.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v01.xml">
+ Tests prolog with XMLDecl and doctypedecl
+</TEST>
+ <TEST URI="valid/P22/ibm22v02.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v02.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v02.xml">
+ Tests prolog with doctypedecl
+</TEST>
+ <TEST URI="valid/P22/ibm22v03.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v03.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v03.xml">
+ Tests prolog with Misc doctypedecl
+</TEST>
+ <TEST URI="valid/P22/ibm22v04.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v04.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v04.xml">
+ Tests prolog with doctypedecl Misc
+</TEST>
+ <TEST URI="valid/P22/ibm22v05.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v05.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v05.xml">
+ Tests prolog with XMLDecl Misc doctypedecl
+</TEST>
+ <TEST URI="valid/P22/ibm22v06.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v06.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v06.xml">
+ Tests prolog with XMLDecl doctypedecl Misc
+</TEST>
+ <TEST URI="valid/P22/ibm22v07.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v07.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v07.xml">
+ Tests prolog with XMLDecl Misc doctypedecl Misc
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 23">
+ <TEST URI="valid/P23/ibm23v01.xml" TYPE="valid" ID="ibm-valid-P23-ibm23v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P23/out/ibm23v01.xml">
+ Tests XMLDecl with VersionInfo only
+</TEST>
+ <TEST URI="valid/P23/ibm23v02.xml" TYPE="valid" ID="ibm-valid-P23-ibm23v02.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P23/out/ibm23v02.xml">
+ Tests XMLDecl with VersionInfo EncodingDecl
+</TEST>
+ <TEST URI="valid/P23/ibm23v03.xml" TYPE="valid" ID="ibm-valid-P23-ibm23v03.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P23/out/ibm23v03.xml">
+ Tests XMLDecl with VersionInfo SDDecl
+</TEST>
+ <TEST URI="valid/P23/ibm23v04.xml" TYPE="valid" ID="ibm-valid-P23-ibm23v04.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P23/out/ibm23v04.xml">
+ Tests XMLDecl with VerstionInfo and a trailing whitespace char
+</TEST>
+ <TEST URI="valid/P23/ibm23v05.xml" TYPE="valid" ID="ibm-valid-P23-ibm23v05.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P23/out/ibm23v05.xml">
+ Tests XMLDecl with VersionInfo EncodingDecl SDDecl
+</TEST>
+ <TEST URI="valid/P23/ibm23v06.xml" TYPE="valid" ID="ibm-valid-P23-ibm23v06.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P23/out/ibm23v06.xml">
+ Tests XMLDecl with VersionInfo EncodingDecl SDDecl and a trailing whitespace
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 24">
+ <TEST URI="valid/P24/ibm24v01.xml" TYPE="valid" ID="ibm-valid-P24-ibm24v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P24/out/ibm24v01.xml">
+ Tests VersionInfo with single quote
+</TEST>
+ <TEST URI="valid/P24/ibm24v02.xml" TYPE="valid" ID="ibm-valid-P24-ibm24v02.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P24/out/ibm24v02.xml">
+ Tests VersionInfo with double quote
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 25">
+ <TEST URI="valid/P25/ibm25v01.xml" TYPE="valid" ID="ibm-valid-P25-ibm25v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P25/out/ibm25v01.xml">
+ Tests EQ with =
+</TEST>
+ <TEST URI="valid/P25/ibm25v02.xml" TYPE="valid" ID="ibm-valid-P25-ibm25v02.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P25/out/ibm25v02.xml">
+ Tests EQ with = and spaces on both sides
+</TEST>
+ <TEST URI="valid/P25/ibm25v03.xml" TYPE="valid" ID="ibm-valid-P25-ibm25v03.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P25/out/ibm25v03.xml">
+ Tests EQ with = and space in front of it
+</TEST>
+ <TEST URI="valid/P25/ibm25v04.xml" TYPE="valid" ID="ibm-valid-P25-ibm25v04.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P25/out/ibm25v04.xml">
+ Tests EQ with = and space after it
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 26">
+ <TEST URI="valid/P26/ibm26v01.xml" TYPE="valid" ID="ibm-valid-P26-ibm26v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P26/out/ibm26v01.xml">
+ Tests VersionNum 1.0
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 27">
+ <TEST URI="valid/P27/ibm27v01.xml" TYPE="valid" ID="ibm-valid-P27-ibm27v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P27/out/ibm27v01.xml">
+ Tests Misc with comment
+</TEST>
+ <TEST URI="valid/P27/ibm27v02.xml" TYPE="valid" ID="ibm-valid-P27-ibm27v02.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P27/out/ibm27v02.xml">
+ Tests Misc with PI
+</TEST>
+ <TEST URI="valid/P27/ibm27v03.xml" TYPE="valid" ID="ibm-valid-P27-ibm27v03.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P27/out/ibm27v03.xml">
+ Tests Misc with white spaces
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 28">
+ <TEST URI="valid/P28/ibm28v01.xml" TYPE="valid" ID="ibm-valid-P28-ibm28v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P28/out/ibm28v01.xml">
+ Tests doctypedecl with internal DTD only
+</TEST>
+ <TEST URI="valid/P28/ibm28v02.xml" TYPE="valid" ID="ibm-valid-P28-ibm28v02.xml" ENTITIES="parameter" SECTIONS="2.8" OUTPUT="valid/P28/out/ibm28v02.xml">
+ Tests doctypedecl with external subset and combinations of different markup
+ declarations and PEReferences
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 29">
+ <TEST URI="valid/P29/ibm29v01.xml" TYPE="valid" ID="ibm-valid-P29-ibm29v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P29/out/ibm29v01.xml">
+ Tests markupdecl with combinations of elementdecl, AttlistDecl,EntityDecl,
+ NotationDecl, PI and comment
+</TEST>
+ <TEST URI="valid/P29/ibm29v02.xml" TYPE="valid" ID="ibm-valid-P29-ibm29v02.xml" ENTITIES="parameter" SECTIONS="2.8" OUTPUT="valid/P29/out/ibm29v02.xml">
+ Tests WFC: PE in internal subset as a positive test
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 30">
+ <TEST URI="valid/P30/ibm30v01.xml" TYPE="valid" ID="ibm-valid-P30-ibm30v01.xml" ENTITIES="parameter" SECTIONS="2.8" OUTPUT="valid/P30/out/ibm30v01.xml">
+ Tests extSubset with extSubsetDecl only in the dtd file
+</TEST>
+ <TEST URI="valid/P30/ibm30v02.xml" TYPE="valid" ID="ibm-valid-P30-ibm30v02.xml" ENTITIES="parameter" SECTIONS="2.8" OUTPUT="valid/P30/out/ibm30v02.xml">
+ Tests extSubset with TextDecl and extSubsetDecl in the dtd file
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 31">
+ <TEST URI="valid/P31/ibm31v01.xml" TYPE="valid" ID="ibm-valid-P31-ibm31v01.xml" ENTITIES="parameter" SECTIONS="2.8" OUTPUT="valid/P31/out/ibm31v01.xml">
+ Tests extSubsetDecl with combinations of markupdecls, conditionalSects,
+ PEReferences and white spaces
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 32">
+ <TEST URI="valid/P32/ibm32v01.xml" TYPE="valid" ID="ibm-valid-P32-ibm32v01.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="valid/P32/out/ibm32v01.xml">
+ Tests VC: Standalone Document Declaration with absent attribute that
+ has default value and standalone is no
+</TEST>
+ <TEST URI="valid/P32/ibm32v02.xml" TYPE="valid" ID="ibm-valid-P32-ibm32v02.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="valid/P32/out/ibm32v02.xml">
+ Tests VC: Standalone Document Declaration with external entity reference
+ and standalone is no
+</TEST>
+ <TEST URI="valid/P32/ibm32v03.xml" TYPE="valid" ID="ibm-valid-P32-ibm32v03.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="valid/P32/out/ibm32v03.xml">
+ Tests VC: Standalone Document Declaration with attribute values that need
+ to be normalized and standalone is no
+</TEST>
+ <TEST URI="valid/P32/ibm32v04.xml" TYPE="valid" ID="ibm-valid-P32-ibm32v04.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="valid/P32/out/ibm32v04.xml">
+ Tests VC: Standalone Document Declaration with whitespace in mixed content
+ and standalone is no
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 33">
+ <TEST URI="valid/P33/ibm33v01.xml" TYPE="valid" ID="ibm-valid-P33-ibm33v01.xml" ENTITIES="none" SECTIONS="2.12" OUTPUT="valid/P33/out/ibm33v01.xml">
+ Tests LanguageID with Langcode - Subcode
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 34">
+ <TEST URI="valid/P34/ibm34v01.xml" TYPE="valid" ID="ibm-valid-P34-ibm34v01.xml" ENTITIES="none" SECTIONS="2.12" OUTPUT="valid/P34/out/ibm34v01.xml">
+ Duplicate Test as ibm33v01.xml
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 35">
+ <TEST URI="valid/P35/ibm35v01.xml" TYPE="valid" ID="ibm-valid-P35-ibm35v01.xml" ENTITIES="none" SECTIONS="2.12" OUTPUT="valid/P35/out/ibm35v01.xml">
+ Tests ISO639Code
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 36">
+ <TEST URI="valid/P36/ibm36v01.xml" TYPE="valid" ID="ibm-valid-P36-ibm36v01.xml" ENTITIES="none" SECTIONS="2.12" OUTPUT="valid/P36/out/ibm36v01.xml">
+ Tests IanaCode
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 37">
+ <TEST URI="valid/P37/ibm37v01.xml" TYPE="valid" ID="ibm-valid-P37-ibm37v01.xml" ENTITIES="none" SECTIONS="2.12" OUTPUT="valid/P37/out/ibm37v01.xml">
+ Tests UserCode
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 38">
+ <TEST URI="valid/P38/ibm38v01.xml" TYPE="valid" ID="ibm-valid-P38-ibm38v01.xml" ENTITIES="none" SECTIONS="2.12" OUTPUT="valid/P38/out/ibm38v01.xml">
+ Tests SubCode
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 39">
+ <TEST URI="valid/P39/ibm39v01.xml" TYPE="valid" ID="ibm-valid-P39-ibm39v01.xml" ENTITIES="none" SECTIONS="3" OUTPUT="valid/P39/out/ibm39v01.xml">
+ Tests element with EmptyElemTag and STag content Etag, also tests the
+ VC: Element Valid with elements that have children, Mixed and ANY
+ contents
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 40">
+ <TEST URI="valid/P40/ibm40v01.xml" TYPE="valid" ID="ibm-valid-P40-ibm40v01.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="valid/P40/out/ibm40v01.xml">
+ Tests STag with possible combinations of its fields, also tests WFC:
+ Unique Att Spec.
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 41">
+ <TEST URI="valid/P41/ibm41v01.xml" TYPE="valid" ID="ibm-valid-P41-ibm41v01.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="valid/P41/out/ibm41v01.xml">
+ Tests Attribute with Name Eq AttValue and VC: Attribute Value Type
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 42">
+ <TEST URI="valid/P42/ibm42v01.xml" TYPE="valid" ID="ibm-valid-P42-ibm42v01.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="valid/P42/out/ibm42v01.xml">
+ Tests ETag with possible combinations of its fields
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 43">
+ <TEST URI="valid/P43/ibm43v01.xml" TYPE="valid" ID="ibm-valid-P43-ibm43v01.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="valid/P43/out/ibm43v01.xml">
+ Tests content with all possible constructs: element, CharData, Reference,
+ CDSect, Comment
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 44">
+ <TEST URI="valid/P44/ibm44v01.xml" TYPE="valid" ID="ibm-valid-P44-ibm44v01.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="valid/P44/out/ibm44v01.xml">
+ Tests EmptyElemTag with possible combinations of its fields
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 45">
+ <TEST URI="valid/P45/ibm45v01.xml" TYPE="valid" ID="ibm-valid-P45-ibm45v01.xml" ENTITIES="none" SECTIONS="3.2" OUTPUT="valid/P45/out/ibm45v01.xml">
+ Tests both P45 elementDecl and P46 contentspec with possible combinations
+ of their constructs
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 47">
+ <TEST URI="valid/P47/ibm47v01.xml" TYPE="valid" ID="ibm-valid-P47-ibm47v01.xml" ENTITIES="none" SECTIONS="3.2.1" OUTPUT="valid/P47/out/ibm47v01.xml">
+ Tests all possible children,cp,choice,seq patterns in P47,P48,P49,P50
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 49">
+ <TEST URI="valid/P49/ibm49v01.xml" TYPE="valid" ID="ibm-valid-P49-ibm49v01.xml" ENTITIES="parameter" SECTIONS="3.2.1" OUTPUT="valid/P49/out/ibm49v01.xml">
+ Tests VC:Proper Group/PE Nesting with PEs of choices that are properly nested
+ with parenthesized groups in external subsets
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 50">
+ <TEST URI="valid/P50/ibm50v01.xml" TYPE="valid" ID="ibm-valid-P50-ibm50v01.xml" ENTITIES="parameter" SECTIONS="3.2.1" OUTPUT="valid/P50/out/ibm50v01.xml">
+ Tests VC:Proper Group/PE Nesting with PEs of seq that are properly nested
+ with parenthesized groups in external subsets
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 51">
+ <TEST URI="valid/P51/ibm51v01.xml" TYPE="valid" ID="ibm-valid-P51-ibm51v01.xml" ENTITIES="none" SECTIONS="3.2.2" OUTPUT="valid/P51/out/ibm51v01.xml">
+ Tests Mixed with possible combinations of its fields amd VC: No
+ Duplicate Types
+</TEST>
+ <TEST URI="valid/P51/ibm51v02.xml" TYPE="valid" ID="ibm-valid-P51-ibm51v02.xml" ENTITIES="parameter" SECTIONS="3.2.2" OUTPUT="valid/P51/out/ibm51v02.xml">
+ Tests VC:Proper Group/PE Nesting with PEs of Mixed that are properly nested
+ with parenthesized groups in external subsets
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 52">
+ <TEST URI="valid/P52/ibm52v01.xml" TYPE="valid" ID="ibm-valid-P52-ibm52v01.xml" ENTITIES="none" SECTIONS="3.3" OUTPUT="valid/P52/out/ibm52v01.xml">
+ Tests all AttlistDecl and AttDef Patterns in P52 and P53
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 54">
+ <TEST URI="valid/P54/ibm54v01.xml" TYPE="valid" ID="ibm-valid-P54-ibm54v01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests all AttTypes : StringType, TokenizedTypes, EnumeratedTypes in
+ P55,P56,P57,P58,P59. Also tests all DefaultDecls in P60.
+ </TEST>
+ <TEST URI="valid/P54/ibm54v02.xml" TYPE="valid" ID="ibm-valid-P54-ibm54v02.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P54/out/ibm54v02.xml">
+ Tests all AttTypes : StringType, TokenizedType, EnumeratedTypes in
+ P55,P56,P57.
+ </TEST>
+ <TEST URI="valid/P54/ibm54v03.xml" TYPE="valid" ID="ibm-valid-P54-ibm54v03.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P54/out/ibm54v03.xml">
+ Tests AttTypes with StringType in P55.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 55">
+ <TEST URI="valid/P55/ibm55v01.xml" TYPE="valid" ID="ibm-valid-P55-ibm55v01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P55/out/ibm55v01.xml">
+ Tests StringType for P55. The "CDATA" occurs in the StringType for the
+ attribute "att" for the element "a".
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 56">
+ <TEST URI="valid/P56/ibm56v01.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v01.xml">
+ Tests TokenizedType for P56. The "ID", "IDREF", "IDREFS", "ENTITY",
+ "ENTITIES", "NMTOKEN", and "NMTOKENS" occur in the TokenizedType for the
+ attribute "attr".
+ </TEST>
+ <TEST URI="valid/P56/ibm56v02.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v02.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v02.xml">
+ Tests TokenizedType for P56 VC: ID Attribute Default. The value "AC1999" is
+ assigned to the ID attribute "attr" with "#REQUIRED" in the DeaultDecl.
+ </TEST>
+ <TEST URI="valid/P56/ibm56v03.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v03.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v03.xml">
+ Tests TokenizedType for P56 VC: ID Attribute Default. The value "AC1999" is
+ assigned to the ID attribute "attr" with "#IMPLIED" in the DeaultDecl.
+ </TEST>
+ <TEST URI="valid/P56/ibm56v04.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v04.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v04.xml">
+ Tests TokenizedType for P56 VC: ID. The ID attribute "UniqueName" appears
+ only once in the document.
+ </TEST>
+ <TEST URI="valid/P56/ibm56v05.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v05.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v05.xml">
+ Tests TokenizedType for P56 VC: One ID per element type. The element "a" or
+ "b" has only one ID attribute.
+ </TEST>
+ <TEST URI="valid/P56/ibm56v06.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v06.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v06.xml">
+ Tests TokenizedType for P56 VC: IDREF. The IDREF value "AC456" matches the
+ value assigned to an ID attribute "UniqueName".
+ </TEST>
+ <TEST URI="valid/P56/ibm56v07.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v07.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v07.xml">
+ Tests TokenizedType for P56 VC: IDREF. The IDREFS value "AC456 Q123" matches
+ the values assigned to the ID attribute "UniqueName" and "Uname".
+ </TEST>
+ <TEST URI="valid/P56/ibm56v08.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v08.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v08.xml">
+ Tests TokenizedType for P56 VC: Entity Name. The value "image" of the ENTITY
+ attribute "sun" matches the name of an unparsed entity declared.
+ </TEST>
+ <TEST URI="valid/P56/ibm56v09.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v09.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v09.xml">
+ Tests TokenizedType for P56 VC: Name Token. The value of the NMTOKEN attribute
+ "thistoken" matches the Nmtoken production.
+ </TEST>
+ <TEST URI="valid/P56/ibm56v10.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v10.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v10.xml">
+ Tests TokenizedType for P56 VC: Name Token. The value of the NMTOKENS
+ attribute "thistoken" matches the Nmtoken production.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 57">
+ <TEST URI="valid/P57/ibm57v01.xml" TYPE="valid" ID="ibm-valid-P57-ibm57v01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P57/out/ibm57v01.xml">
+ Tests EnumeratedType in the AttType. The attribute "att" has a type (a|b)
+ with the element "a".
+ the
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 58">
+ <TEST URI="valid/P58/ibm58v01.xml" TYPE="valid" ID="ibm-valid-P58-ibm58v01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P58/out/ibm58v01.xml">
+ Tests NotationType for P58. It shows different patterns fro the NOTATION
+ attribute "attr".
+ </TEST>
+ <TEST URI="valid/P58/ibm58v02.xml" TYPE="valid" ID="ibm-valid-P58-ibm58v02.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P58/out/ibm58v02.xml">
+ Tests NotationType for P58: Notation Attributes. The value "base64" of the
+ NOTATION attribute "attr" matches one of the notation names declared.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 59">
+ <TEST URI="valid/P59/ibm59v01.xml" TYPE="valid" ID="ibm-valid-P59-ibm59v01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P59/out/ibm59v01.xml">
+ Tests Enumeration in the EnumeratedType for P59. It shows different
+ patterns for the Enumeration attribute "attr".
+ </TEST>
+ <TEST URI="valid/P59/ibm59v02.xml" TYPE="valid" ID="ibm-valid-P59-ibm59v02.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P59/out/ibm59v02.xml">
+ Tests Enumeration for P59 VC: Enumeration. The value "one" of the
+ Enumeration attribute "attr" matches one of the element names declared.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 60">
+ <TEST URI="valid/P60/ibm60v01.xml" TYPE="valid" ID="ibm-valid-P60-ibm60v01.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="valid/P60/out/ibm60v01.xml">
+ Tests DefaultDecl for P60. It shows different options "#REQUIRED", "#FIXED",
+ "#IMPLIED", and default for the attribute "chapter".
+ </TEST>
+ <TEST URI="valid/P60/ibm60v02.xml" TYPE="valid" ID="ibm-valid-P60-ibm60v02.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="valid/P60/out/ibm60v02.xml">
+ Tests DefaultDecl for P60 VC: Required Attribute. In the element "one" and
+ "two" the value of the #REQUIRED attribute "chapter" is given.
+ </TEST>
+ <TEST URI="valid/P60/ibm60v03.xml" TYPE="valid" ID="ibm-valid-P60-ibm60v03.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="valid/P60/out/ibm60v03.xml">
+ Tests DefaultDecl for P60 VC: Fixed Attribute Default. The value of the
+ #FIXED attribute "chapter" is exactly the same as the default value.
+ </TEST>
+ <TEST URI="valid/P60/ibm60v04.xml" TYPE="valid" ID="ibm-valid-P60-ibm60v04.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="valid/P60/out/ibm60v04.xml">
+ Tests DefaultDecl for P60 VC: Attribute Default Legal. The default value
+ specified for the attribute "attr" meets the lexical constraints of the
+ declared attribute type.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 61">
+ <TEST URI="valid/P61/ibm61v01.xml" TYPE="valid" ID="ibm-valid-P61-ibm61v01.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P61/out/ibm61v01.xml">
+ Tests conditionalSect for P61. It takes the option "invludeSect" in the file
+ ibm61v01.dtd.
+ </TEST>
+ <TEST URI="valid/P61/ibm61v02.xml" TYPE="valid" ID="ibm-valid-P61-ibm61v02.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P61/out/ibm61v02.xml">
+ Tests conditionalSect for P61. It takes the option "ignoreSect" in the file
+ ibm61v02.dtd.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 62">
+ <TEST URI="valid/P62/ibm62v01.xml" TYPE="valid" ID="ibm-valid-P62-ibm62v01.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P62/out/ibm62v01.xml">
+ Tests includeSect for P62. The white space is not included before the key
+ word "INCLUDE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P62/ibm62v02.xml" TYPE="valid" ID="ibm-valid-P62-ibm62v02.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P62/out/ibm62v02.xml">
+ Tests includeSect for P62. The white space is not included after the key
+ word "INCLUDE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P62/ibm62v03.xml" TYPE="valid" ID="ibm-valid-P62-ibm62v03.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P62/out/ibm62v03.xml">
+ Tests includeSect for P62. The white space is included after the key
+ word "INCLUDE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P62/ibm62v04.xml" TYPE="valid" ID="ibm-valid-P62-ibm62v04.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P62/out/ibm62v04.xml">
+ Tests includeSect for P62. The white space is included before the key
+ word "INCLUDE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P62/ibm62v05.xml" TYPE="valid" ID="ibm-valid-P62-ibm62v05.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P62/out/ibm62v05.xml">
+ Tests includeSect for P62. The extSubsetDecl is not included.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 63">
+ <TEST URI="valid/P63/ibm63v01.xml" TYPE="valid" ID="ibm-valid-P63-ibm63v01.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P63/out/ibm63v01.xml">
+ Tests ignoreSect for P63. The white space is not included before the key
+ word "IGNORE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P63/ibm63v02.xml" TYPE="valid" ID="ibm-valid-P63-ibm63v02.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P63/out/ibm63v02.xml">
+ Tests ignoreSect for P63. The white space is not included after the key
+ word "IGNORE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P63/ibm63v03.xml" TYPE="valid" ID="ibm-valid-P63-ibm63v03.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P63/out/ibm63v03.xml">
+ Tests ignoreSect for P63. The white space is included after the key
+ word "IGNORE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P63/ibm63v04.xml" TYPE="valid" ID="ibm-valid-P63-ibm63v04.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P63/out/ibm63v04.xml">
+ Tests ignoreSect for P63. The ignireSectContents is included.
+ </TEST>
+ <TEST URI="valid/P63/ibm63v05.xml" TYPE="valid" ID="ibm-valid-P63-ibm63v05.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P63/out/ibm63v05.xml">
+ Tests ignoreSect for P63. The white space is included before and after the
+ key word "IGNORE" in the beginning sequence.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 64">
+ <TEST URI="valid/P64/ibm64v01.xml" TYPE="valid" ID="ibm-valid-P64-ibm64v01.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P64/out/ibm64v01.xml">
+ Tests ignoreSectContents for P64. One "ignore" field is included.
+ </TEST>
+ <TEST URI="valid/P64/ibm64v02.xml" TYPE="valid" ID="ibm-valid-P64-ibm64v02.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P64/out/ibm64v02.xml">
+ Tests ignoreSectContents for P64. Two "ignore" and one "ignoreSectContents"
+ fields are included.
+ </TEST>
+ <TEST URI="valid/P64/ibm64v03.xml" TYPE="valid" ID="ibm-valid-P64-ibm64v03.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P64/out/ibm64v03.xml">
+ Tests ignoreSectContents for P64. Four "ignore" and three
+ "ignoreSectContents" fields are included.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 65">
+ <TEST URI="valid/P65/ibm65v01.xml" TYPE="valid" ID="ibm-valid-P65-ibm65v01.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P65/out/ibm65v01.xml">
+ Tests Ignore for P65. An empty string occurs in the Ignore filed.
+ </TEST>
+ <TEST URI="valid/P65/ibm65v02.xml" TYPE="valid" ID="ibm-valid-P65-ibm65v02.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P65/out/ibm65v02.xml">
+ Tests Ignore for P65. An string not including the brackets occurs in each of
+ the Ignore filed.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 66">
+ <TEST URI="valid/P66/ibm66v01.xml" TYPE="valid" ID="ibm-valid-P66-ibm66v01.xml" ENTITIES="none" SECTIONS="4.1" OUTPUT="valid/P66/out/ibm66v01.xml">
+ Tests all legal CharRef's.
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 67">
+ <TEST URI="valid/P67/ibm67v01.xml" TYPE="valid" ID="ibm-valid-P67-ibm67v01.xml" ENTITIES="none" SECTIONS="4.1" OUTPUT="valid/P67/out/ibm67v01.xml">
+ Tests Reference could be EntityRef or CharRef.
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 68">
+ <TEST URI="valid/P68/ibm68v01.xml" TYPE="valid" ID="ibm-valid-P68-ibm68v01.xml" ENTITIES="parameter" SECTIONS="4.1" OUTPUT="valid/P68/out/ibm68v01.xml">
+ Tests P68 VC:Entity Declared with Entities in External Subset
+ , standalone is no
+</TEST>
+ <TEST URI="valid/P68/ibm68v02.xml" TYPE="valid" ID="ibm-valid-P68-ibm68v02.xml" ENTITIES="both" SECTIONS="4.1" OUTPUT="valid/P68/out/ibm68v02.xml">
+ Tests P68 VC:Entity Declared with Entities in External Parameter Entities
+ , standalone is no
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 69">
+ <TEST URI="valid/P69/ibm69v01.xml" TYPE="valid" ID="ibm-valid-P69-ibm69v01.xml" ENTITIES="parameter" SECTIONS="4.1" OUTPUT="valid/P69/out/ibm69v01.xml">
+ Tests P68 VC:Entity Declared with Parameter Entities in External Subset
+ , standalone is no
+</TEST>
+ <TEST URI="valid/P69/ibm69v02.xml" TYPE="valid" ID="ibm-valid-P69-ibm69v02.xml" ENTITIES="both" SECTIONS="4.1" OUTPUT="valid/P69/out/ibm69v02.xml">
+ Tests P68 VC:Entity Declared with Parameter Entities in External Parameter
+ Entities, standalone is no
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 70">
+ <TEST URI="valid/P70/ibm70v01.xml" TYPE="valid" ID="ibm-valid-P70-ibm70v01.xml" ENTITIES="parameter" SECTIONS="4.2" OUTPUT="valid/P70/out/ibm70v01.xml">
+ Tests all legal GEDecls and PEDecls constructs derived from P70-76
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 78">
+ <TEST URI="valid/P78/ibm78v01.xml" TYPE="valid" ID="ibm-valid-P78-ibm78v01.xml" ENTITIES="general" SECTIONS="4.3.2" OUTPUT="valid/P78/out/ibm78v01.xml">
+ Tests ExtParsedEnt, also TextDecl in P77 and EncodingDecl in P80
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 79">
+ <TEST URI="valid/P79/ibm79v01.xml" TYPE="valid" ID="ibm-valid-P79-ibm79v01.xml" ENTITIES="parameter" SECTIONS="4.3.2">
+ Tests extPE
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 82">
+ <TEST URI="valid/P82/ibm82v01.xml" TYPE="valid" ID="ibm-valid-P82-ibm82v01.xml" ENTITIES="none" SECTIONS="4.7" OUTPUT="valid/P82/out/ibm82v01.xml">
+ Tests NotationDecl in P82 and PublicID in P83
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 85">
+ <TEST URI="valid/P85/ibm85v01.xml" TYPE="valid" ID="ibm-valid-P85-ibm85v01.xml" ENTITIES="none" SECTIONS="B.">
+ This test case covers 149 legal character ranges plus 51 single legal
+ characters for BaseChar in P85 using a PI target Name
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 86">
+ <TEST URI="valid/P86/ibm86v01.xml" TYPE="valid" ID="ibm-valid-P86-ibm86v01.xml" ENTITIES="none" SECTIONS="B.">
+ This test case covers 2 legal character ranges plus 1 single legal
+ characters for IdeoGraphic in P86 using a PI target Name
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 87">
+ <TEST URI="valid/P87/ibm87v01.xml" TYPE="valid" ID="ibm-valid-P87-ibm87v01.xml" ENTITIES="none" SECTIONS="B.">
+ This test case covers 65 legal character ranges plus 30 single legal
+ characters for CombiningChar in P87 using a PI target Name
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 88">
+ <TEST URI="valid/P88/ibm88v01.xml" TYPE="valid" ID="ibm-valid-P88-ibm88v01.xml" ENTITIES="none" SECTIONS="B.">
+ This test case covers 15 legal character ranges for Digit in P88 using a PI
+ target Name
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 89">
+ <TEST URI="valid/P89/ibm89v01.xml" TYPE="valid" ID="ibm-valid-P89-ibm89v01.xml" ENTITIES="none" SECTIONS="B.">
+ This test case covers 3 legal character ranges plus 8 single legal
+ characters for Extender in P89 using a PI target Name
+</TEST>
+</TESTCASES>
+
+</TESTCASES>
+
+</TESTCASES>
+<!-- Wrapping TESTCASES elements below added by Dieter Köhler -->
+<TESTCASES PROFILE="IBM XML 1.1 Tests" xml:base="ibm/xml-1.1/">
+ <!--
+ (C) Copyright IBM Corp. 2003 All rights reserved.
+
+ US Government Users Restricted Rights Use, duplication or
+ disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ The program is provided "as is" without any warranty express or
+ implied, including the warranty of non-infringement and the implied
+ warranties of merchantibility and fitness for a particular purpose.
+ IBM will not be liable for any damages suffered by you as a result
+ of using the Program. In no event will IBM be liable for any
+ special, indirect or consequential damages or lost profits even if
+ IBM has been advised of the possibility of their occurrence. IBM
+ will not be liable for any third party claims against you.
+-->
+<!--
+ Configuration file for invalid XML 1.1 test cases.
+-->
+
+<TESTCASES PROFILE="IBM Invalid Conformance Tests for XML 1.1 CR October 15, 2002">
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="invalid/P46/ibm46i01.xml" TYPE="invalid" ID="ibm-1-1-valid-P46-ibm46i01.xml" ENTITIES="none" SECTIONS="3.2.1, 2.2">
+ An element with Element-Only content contains the character #x85 (NEL not a
+ whitespace character as defined by S).
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="invalid/P46/ibm46i02.xml" TYPE="invalid" ID="ibm-1-1-valid-P46-ibm46i02.xml" ENTITIES="none" SECTIONS="3.2.1, 2.2">
+ An element with Element-Only content contains the character #x2028 (LESP not a
+ whitespace character as defined by S).
+ </TEST>
+</TESTCASES>
+
+</TESTCASES>
+
+ <!--
+ (C) Copyright IBM Corp. 2003 All rights reserved.
+
+ US Government Users Restricted Rights Use, duplication or
+ disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ The program is provided "as is" without any warranty express or
+ implied, including the warranty of non-infringement and the implied
+ warranties of merchantibility and fitness for a particular purpose.
+ IBM will not be liable for any damages suffered by you as a result
+ of using the Program. In no event will IBM be liable for any
+ special, indirect or consequential damages or lost profits even if
+ IBM has been advised of the possibility of their occurrence. IBM
+ will not be liable for any third party claims against you.
+-->
+<!--
+ Configuration file for not-wf XML 1.1 test cases.
+-->
+
+<TESTCASES PROFILE="IBM Not-WF Conformance Tests for XML 1.1 CR October 15, 2002">
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 2">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n01.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n01.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x1.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n02.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n02.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x2.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n03.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n03.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x3.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n04.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n04.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x4.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n05.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n05.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x5.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n06.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n06.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x6.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n07.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n07.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x7.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n08.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n08.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x8.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n09.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n09.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x0.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n10.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n10.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x100.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n11.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n11.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x0B.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n12.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n12.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x0C.
+ </TEST>
+<!--
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n13.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n13.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ Entity Replacement text contains a character reference
+ to x86 and is referenced in element content.
+ </TEST>
+-->
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n14.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n14.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x0E.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n15.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n15.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x0F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n16.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n16.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x10.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n17.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n17.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x11.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n18.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n18.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x12.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n19.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n19.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x13.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n20.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n20.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x14.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n21.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n21.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x15.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n22.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n22.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x16.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n23.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n23.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x17.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n24.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n24.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x18.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n25.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n25.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x19.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n26.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n26.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x1A.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n27.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n27.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x1B.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n28.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n28.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x1C.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n29.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n29.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x1D.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n30.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n30.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x1E.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n31.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n31.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x1F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n32.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n32.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x7F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n33.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n33.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x80.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n34.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n34.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x81.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n35.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n35.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x82.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n36.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n36.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x83.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n37.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n37.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x84.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n38.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n38.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control characters x82, x83 and x84.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n39.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n39.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x86.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n40.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n40.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x87.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n41.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n41.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x88.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n42.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n42.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x89.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n43.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n43.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x8A.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n44.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n44.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x8B.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n45.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n45.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x8C.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n46.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n46.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x8D.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n47.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n47.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x8E.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n48.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n48.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x8F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n49.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n49.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x90.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n50.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n50.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x91.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n51.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n51.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x92.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n52.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n52.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x93.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n53.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n53.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x94.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n54.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n54.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x95.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n55.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n55.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x96.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n56.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n56.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x97.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n57.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n57.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x98.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n58.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n58.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x99.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n59.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n59.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x9A.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n60.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n60.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x9B.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n61.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n61.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x9C.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n62.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n62.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x9D.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n63.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n63.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x9E.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n64.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n64.xml" ENTITIES="general" SECTIONS="2.2,4.1">
+ This test contains embeded control characters present in an external entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n65.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n65.xml" ENTITIES="general" SECTIONS="2.2,4.1">
+ This test contains embeded control characters present in an external entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n66.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n66.xml" ENTITIES="general" SECTIONS="2.2,4.1">
+ This test contains embeded control characters present in an external entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n67.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n67.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded character 0xD800. (Invalid UTF8 sequence)
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n68.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n68.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded character 0xFFFE.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n69.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n69.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded character 0xFFFF.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n70.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n70.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains a reference to character 0xFFFE.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n71.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n71.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains a reference to character 0xFFFF.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 4">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n01.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #x300
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n02.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x333
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n03.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x369
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n04.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n04.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x37E
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n05.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n05.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x2000
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n06.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n06.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x2001
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n07.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n07.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x2002
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n08.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n08.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x2005
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n09.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n09.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x200B
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n10.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n10.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x200E
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n11.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n11.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x200F
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n12.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n12.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x2069
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n13.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n13.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x2190
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n14.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n14.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x23FF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n15.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n15.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x280F
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n16.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n16.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x2A00
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n17.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n17.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x2EDC
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n18.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n18.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x2B00
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n19.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n19.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x2BFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n20.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n20.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0x3000
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n21.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n21.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0xD800
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n22.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n22.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0xD801
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n23.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n23.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0xDAFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n24.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n24.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0xDFFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n25.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n25.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0xEFFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n26.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n26.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0xF1FF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n27.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n27.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0xF8FF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n28.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n28.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameStartChar: #0xFFFFF
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 4a">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an01.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #xB8
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an02.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0xA1
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an03.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0xAF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an04.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an04.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x37E
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an05.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an05.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x2000
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an06.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an06.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x2001
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an07.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an07.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x2002
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an08.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an08.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x2005
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an09.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an09.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x200B
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an10.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an10.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x200E
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an11.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an11.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x2038
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an12.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an12.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x2041
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an13.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an13.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x2190
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an14.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an14.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x23FF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an15.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an15.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x280F
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an16.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an16.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x2A00
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an17.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an17.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0xFDD0
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an18.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an18.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0xFDEF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an19.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an19.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x2FFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an20.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an20.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0x3000
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an21.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an21.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0xD800
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an22.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an22.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0xD801
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an23.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an23.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0xDAFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an24.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an24.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0xDFFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an25.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an25.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0xEFFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an26.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an26.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0xF1FF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an27.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an27.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0xF8FF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an28.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an28.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal NameChar: #0xFFFFF
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 5">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P05/ibm05n01.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P05-ibm05n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal Name containing #0x0B
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P05/ibm05n02.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P05-ibm05n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal Name containing #0x300
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P05/ibm05n03.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P05-ibm05n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal Name containing #0x36F
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P05/ibm05n04.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P05-ibm05n04.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal Name containing #0x203F
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P05/ibm05n05.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P05-ibm05n05.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal Name containing #x2040
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P05/ibm05n06.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P05-ibm05n06.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element with an illegal Name containing #0xB7
+ </TEST>
+</TESTCASES>
+
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 77">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n01.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n01.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and that of the external dtd 1.0.
+ The external dtd contains the invalid XML1.1 but valid XML 1.0 character #x7F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n02.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n02.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and that of the external dtd 1.0.
+ The external dtd contains a comment with the invalid XML1.1 but valid XML 1.0
+ character #x80.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n03.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n03.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and that of the external dtd 1.0.
+ The external dtd contains a PI with the invalid XML1.1 but valid XML 1.0
+ character #x9F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n04.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n04.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and that of the external entity 1.0.
+ The external entity the contains invalid XML1.1 but valid XML 1.0 character #x89.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n05.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n05.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and that of the external entity 1.0.
+ The external entity contains the invalid XML1.1 but valid XML 1.0 character #x94.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n06.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n06.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and that of the external entity 1.0.
+ The external entity contains the invalid XML1.1 but valid XML 1.0 character #x9F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n07.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n07.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a textDecl. The external entity contains the invalid XML1.1 but valid XML 1.0
+ character #x7F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n08.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n08.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a VersionNum in the textDecl. The external entity contains the invalid XML1.1 but
+ valid XML 1.0 character #x9B.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n09.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n09.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a textDecl. The external entity contains the invalid XML1.1 but valid XML 1.0
+ character #x8D.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n10.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n10.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a VersionNum in the textDecl. The external entity contains the invalid XML 1.1 but
+ valid XML 1.0 character #x84.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n11.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n11.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a textDecl. The external entity contains the invalid XML 1.1 but
+ valid XML 1.0 character #x88.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n12.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n12.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a textDecl. The external entity contains the invalid XML 1.1 but
+ valid XML 1.0 character #x8E.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n13.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n13.xml" ENTITIES="none" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is 1.0 and that of the external
+ dtd is 1.0. The external dtd contains an external entity whose VersionNum is 1.1.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n14.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n14.xml" ENTITIES="none" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is 1.1 and that of the external
+ dtd is 1.0. The external dtd contains an element declaration with an invalid
+ XML 1.1 and 1.0 name.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n15.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n15.xml" ENTITIES="none" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is 1.1 and testDecl of the external
+ dtd is absent. The external dtd contains an external entity whose VersionNum is
+ 1.1 containing a valid XML1.0 but an invalid XML 1.1 character #x7F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n16.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n16.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is 1.0 and VersioNum of the external
+ entity is absent. The replacement text of the entity contains an element followed
+ by the valid XML 1.1 of line character NEL #x85 in its empty elem tag.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n17.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n17.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is absent and that of the external
+ entity is 1.0. The textDecl in the external entity contains an invalid XML1.0
+ but valid XML 1.1 enf of line character NEL #x85.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n18.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n18.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is absent and that of the external
+ entity is 1.0. The textDecl in the external entity contains an invalid XML1.0
+ but valid XML 1.1 of line character Unicode line separator #x2028.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n19.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n19.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is 1.1 and that of the external
+ dtd is absent. The external dtd contains an external entity whose VersionNum is
+ absent and it contains a valid XML 1.0 but an invalid XML 1.1 character #x94.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n20.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n20.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is 1.1 and that of the external
+ dtd is 1.1. The external dtd contains an external entity whose VersionNum is
+ absent and it contains a valid XML 1.0 but an invalid XML 1.1 character #x8F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n21.xml" TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n21.xml" ENTITIES="both" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is 1.1 and the texlDecl of the
+ external dtd is absent. The external dtd contains a reference to an external
+ parameter entity whose VersionNum is absent from the textDecl and it contains
+ an invalid XML 1.1 character #x8F.
+ </TEST>
+</TESTCASES>
+
+</TESTCASES>
+
+ <!--
+ (C) Copyright IBM Corp. 2003 All rights reserved.
+
+ US Government Users Restricted Rights Use, duplication or
+ disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ The program is provided "as is" without any warranty express or
+ implied, including the warranty of non-infringement and the implied
+ warranties of merchantibility and fitness for a particular purpose.
+ IBM will not be liable for any damages suffered by you as a result
+ of using the Program. In no event will IBM be liable for any
+ special, indirect or consequential damages or lost profits even if
+ IBM has been advised of the possibility of their occurrence. IBM
+ will not be liable for any third party claims against you.
+-->
+<TESTCASES PROFILE="IBM Valid Conformance Tests for XML 1.1 CR October 15, 2002">
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 2">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P02/ibm02v01.xml" TYPE="valid" ID="ibm-1-1-valid-P02-ibm02v01.xml" ENTITIES="none" SECTIONS="2.2">
+ This test case covers legal character ranges plus discrete legal characters
+ for production 02 of the XML1.1 sepcification.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P02/ibm02v02.xml" TYPE="valid" ID="ibm-1-1-valid-P02-ibm02v02.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test case covers control characters x1 to x1F and x7F to x9F
+ which should only appear as character references.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P02/ibm02v03.xml" TYPE="valid" ID="ibm-1-1-valid-P02-ibm02v03.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test case covers control characters x1 to x1F and x7F to x9F
+ which appear as character references as an entity's replacement text.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P02/ibm02v04.xml" TYPE="valid" ID="ibm-1-1-valid-P02-ibm02v04.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test case contains embeded whitespace characters
+ some form the range 1 - 1F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P02/ibm02v05.xml" TYPE="valid" ID="ibm-1-1-valid-P02-ibm02v05.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test case contains valid char references that match the char production.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P02/ibm02v06.xml" TYPE="valid" ID="ibm-1-1-valid-P02-ibm02v06.xml" ENTITIES="general" SECTIONS="2.2,4.1">
+ This test case contains valid char references in the CDATA section, comment and
+ processing instruction of an external entity that match the char production.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 3">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v01.xml" TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v01.xml" ENTITIES="general" SECTIONS="2.11" OUTPUT="valid/P03/out/ibm03v01.xml">
+ The two character sequence #x0D #x85 in an external entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v02.xml" TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v02.xml" ENTITIES="general" SECTIONS="2.11" OUTPUT="valid/P03/out/ibm03v02.xml">
+ The single character sequence #x85 in an external entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v03.xml" TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v03.xml" ENTITIES="general" SECTIONS="2.11" OUTPUT="valid/P03/out/ibm03v03.xml">
+ The two character sequence #x0D #x85 in an external entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v04.xml" TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v04.xml" ENTITIES="general" SECTIONS="2.11" OUTPUT="valid/P03/out/ibm03v04.xml">
+ The single character sequence #x85 in an external entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v05.xml" TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v05.xml" ENTITIES="none" SECTIONS="2.11" OUTPUT="valid/P03/out/ibm03v05.xml">
+ The two character sequence #x0D #x85 in a document entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v06.xml" TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v06.xml" ENTITIES="none" SECTIONS="2.11" OUTPUT="valid/P03/out/ibm03v06.xml">
+ The single character sequence #x85 in a document entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v07.xml" TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v07.xml" ENTITIES="none" SECTIONS="2.11" OUTPUT="valid/P03/out/ibm03v07.xml">
+ The single character sequence #x2028 in a document entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v08.xml" TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v08.xml" ENTITIES="none" SECTIONS="2.11" OUTPUT="valid/P03/out/ibm03v08.xml">
+ The single character sequence #x85 in the XMLDecl must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v09.xml" TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v09.xml" ENTITIES="general" SECTIONS="2.11" OUTPUT="valid/P03/out/ibm03v09.xml">
+ The single character sequence #x2028 in the XMLDecl must be normalized to a
+ single newline. (This test is questionable)
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 4">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P04/ibm04v01.xml" TYPE="valid" ID="ibm-1-1-valid-P04-ibm04v01.xml" ENTITIES="none" SECTIONS="2.3" NAMESPACE="no">
+ This test case covers legal NameStartChars character ranges plus discrete legal
+ characters for production 04.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 4a">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P04a/ibm04av01.xml" TYPE="valid" ID="ibm-1-1-valid-P04-ibm04av01.xml" ENTITIES="none" SECTIONS="2.3">
+ This test case covers legal NameChars character ranges plus discrete legal
+ characters for production 04a.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 5">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P05/ibm05v01.xml" TYPE="valid" ID="ibm-1-1-valid-P05-ibm05v01.xml" ENTITIES="none" SECTIONS="2.3" NAMESPACE="no">
+ This test case covers legal Element Names as per production 5.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P05/ibm05v02.xml" TYPE="valid" ID="ibm-1-1-valid-P05-ibm05v02.xml" ENTITIES="none" SECTIONS="2.3" NAMESPACE="no">
+ This test case covers legal PITarget (Names) as per production 5.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P05/ibm05v03.xml" TYPE="valid" ID="ibm-1-1-valid-P05-ibm05v03.xml" ENTITIES="none" SECTIONS="2.3" NAMESPACE="no">
+ This test case covers legal Attribute (Names) as per production 5.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P05/ibm05v04.xml" TYPE="valid" ID="ibm-1-1-valid-P05-ibm05v04.xml" ENTITIES="none" SECTIONS="2.3">
+ This test case covers legal ID/IDREF (Names) as per production 5.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P05/ibm05v05.xml" TYPE="valid" ID="ibm-1-1-valid-P05-ibm05v05.xml" ENTITIES="none" SECTIONS="2.3" NAMESPACE="no">
+ This test case covers legal ENTITY (Names) as per production 5.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 7">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P07/ibm07v01.xml" TYPE="valid" ID="ibm-1-1-valid-P047-ibm07v01.xml" ENTITIES="none" SECTIONS="2.3">
+ This test case covers legal NMTOKEN Name character ranges plus discrete legal
+ characters for production 7.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 77">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v01.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v01.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ DTD is 1.0. The character #xC0 which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v02.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v02.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ DTD is 1.0. The character #x1FFF which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v03.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v03.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ DTD is 1.0. The character #xF901 which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v04.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v04.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ entity is 1.0. The character #xD6 which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v05.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v05.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ entity is 1.0. The character #x1FFF which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v06.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v06.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ entity is 1.0. The character #xF901 which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v07.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v07.xml" ENTITIES="none" SECTIONS="4.3.4">
+ The VersionNum of the document and external dtd is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #xD8.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v08.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v08.xml" ENTITIES="none" SECTIONS="4.3.4">
+ The VersionNum of the document and external dtd is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #x1FFF.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v09.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v09.xml" ENTITIES="none" SECTIONS="4.3.4">
+ The VersionNum of the document and external dtd is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #xF901.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v10.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v10.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document and external entity is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #xF6.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v11.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v11.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document and external entity is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #x1FFF.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v12.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v12.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document and external entity is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #xF901.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v13.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v13.xml" ENTITIES="none" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 but the external dtd does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #xF8.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v14.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v14.xml" ENTITIES="none" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 but the external dtd does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #x1FFF.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v15.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v15.xml" ENTITIES="none" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 but the external dtd does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #xF901.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v16.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v16.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 but the external entity does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #x2FF.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v17.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v17.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 but the external entity does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #x1FFF.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v18.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v18.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 but the external entity does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #xF901.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v19.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v19.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document and external dtd is 1.1. The replacement
+ text of an entity declared in the external DTD contains a reference to the
+ character #x7F. This entity is not referenced in the document entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v20.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v20.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document and external dtd is 1.1. The replacement
+ text of an entity declared in the external DTD contains a reference to the
+ character #x80. This entity is not referenced in the document entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v21.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v21.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document and external dtd is 1.1. The replacement
+ text of an entity declared in the external DTD contains a reference to the
+ character #x9F. This entity is not referenced in the document entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v22.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v22.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document and the external entity is 1.1. The entity contains
+ a reference to the character #x7F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v23.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v23.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document and the external entity is 1.1. The entity contains
+ a reference to the character #x80.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v24.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v24.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document and the external entity is 1.1. The entity contains
+ a reference to the character #x9F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v25.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v25.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ DTD. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x7F, #x8F. This entity is not referenced in the
+ document entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v26.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v26.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ DTD. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x80, #x90. This entity is not referenced in the
+ document entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v27.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v27.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ DTD. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x81, #x9F. This entity is not referenced in the
+ document entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v28.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v28.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ entity. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x7F, #x80, #x9F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v29.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v29.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ entity. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x85, #x8F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v30.xml" TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v30.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ entity. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x1, #x7F.
+ </TEST>
+</TESTCASES>
+
+</TESTCASES>
+
+
+</TESTCASES>
+
+<TESTCASES xml:base="eduni/errata-2e/">
+ <TESTCASES PROFILE="Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003">
+
+<!-- E1 is an editorial change that does not need a test -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E2" URI="E2a.xml" ID="rmt-e2e-2a" TYPE="invalid">
+Duplicate token in enumerated attribute declaration
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E2" URI="E2b.xml" ID="rmt-e2e-2b" TYPE="invalid">
+Duplicate token in NOTATION attribute declaration
+</TEST>
+
+<!-- E3 concerns URI redirection (eg by catalog or HTTP), and can't be
+ reasonably tested in a standalone test suite such as this -->
+
+<!-- E4 concerns escaping of characters in URIs by the parser, and can't be
+ reasonably tested in a standalone test suite such as this -->
+
+<!-- E5-E8 are editorial changes that do not need tests -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E9" URI="E9a.xml" ID="rmt-e2e-9a" TYPE="valid">
+An unused attribute default need only be syntactically correct
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E9" URI="E9b.xml" ID="rmt-e2e-9b" TYPE="invalid">
+An attribute default must be syntactically correct even if unused
+</TEST>
+
+<!-- E10 is obsoleted by E45 -->
+
+<!-- E11 updates the reference to RFC 1766 (Language Identification Tags)
+ to refer to RFC 3066 instead, and this does not affect the behaviour
+ of XML processors -->
+
+<!-- E12 updates the reference to RFC 2376 (XML Media Types) to refer to
+ RFC 3023 instead; I don't think anything can be tested here -->
+
+<!-- E13 corrects a spelling mistake -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E14" URI="E14.xml" ID="rmt-e2e-14" ENTITIES="parameter" TYPE="invalid">
+Declarations mis-nested wrt parameter entities are just validity
+errors (but note that some parsers treat some such errors as fatal)
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15a.xml" ID="rmt-e2e-15a" TYPE="invalid">
+Empty content can't contain an entity reference
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15b.xml" ID="rmt-e2e-15b" TYPE="invalid">
+Empty content can't contain a comment
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15c.xml" ID="rmt-e2e-15c" TYPE="invalid">
+Empty content can't contain a PI
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15d.xml" ID="rmt-e2e-15d" TYPE="invalid">
+Empty content can't contain whitespace
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15e.xml" ID="rmt-e2e-15e" TYPE="valid">
+Element content can contain entity reference if replacement text is whitespace
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15f.xml" ID="rmt-e2e-15f" TYPE="valid">
+Element content can contain entity reference if replacement text is whitespace,
+even if it came from a character reference in the literal entity value
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15g.xml" ID="rmt-e2e-15g" TYPE="invalid">
+Element content can't contain character reference to whitespace
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15h.xml" ID="rmt-e2e-15h" TYPE="invalid">
+Element content can't contain entity reference if replacement text is
+character reference to whitespace
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15i.xml" ID="rmt-e2e-15i" TYPE="valid">
+Element content can contain a comment
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15j.xml" ID="rmt-e2e-15j" TYPE="valid">
+Element content can contain a PI
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15k.xml" ID="rmt-e2e-15k" TYPE="valid">
+Mixed content can contain a comment
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E15" URI="E15l.xml" ID="rmt-e2e-15l" TYPE="valid">
+Mixed content can contain a PI
+</TEST>
+
+<!-- E16 is a change to the references -->
+
+<!-- E17 is a change to the Notation section -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E18" URI="E18.xml" ID="rmt-e2e-18" ENTITIES="both" OUTPUT="out/E18.xml" TYPE="valid">
+External entity containing start of entity declaration is base URI
+for system identifier
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E19" URI="E19.xml" ID="rmt-e2e-19" ENTITIES="parameter" OUTPUT="out/E19.xml" TYPE="valid">
+Parameter entities and character references are included-in-literal, but
+general entities are bypassed.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E20" URI="E20.xml" ID="rmt-e2e-20" TYPE="invalid">
+Tokens, after normalization, must be separated by space, not other
+whitespace characters
+</TEST>
+
+<!-- E21 defines "internal subset" to not include the square brackets,
+ but I don't see any way to test this in a document -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E22" URI="E22.xml" ID="rmt-e2e-22" TYPE="valid">
+UTF-8 entities may start with a BOM
+</TEST>
+
+<!-- E23 cannot be tested in a standalone test suite -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E24" URI="E24.xml" ID="rmt-e2e-24" TYPE="valid">
+Either the built-in entity or a character reference can be used to
+represent greater-than after two close-square-brackets
+</TEST>
+
+<!-- E25 and E26 cannot be tested in a standalone test suite -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E27" URI="E27.xml" ID="rmt-e2e-27" TYPE="not-wf">
+Contains an irregular UTF-8 sequence (i.e. a surrogate pair)
+</TEST>
+
+<!-- E28 is a change to the references -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E29" URI="E29.xml" ID="rmt-e2e-29" TYPE="valid">
+Three-letter language codes are allowed
+</TEST>
+
+<!-- E30-E33 are editorial -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E34" URI="E34.xml" ID="rmt-e2e-34" TYPE="error">
+A non-deterministic content model is an error even if the element type
+is not used.
+</TEST>
+
+<!-- E35 is editorial -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E36" URI="E36.xml" ID="rmt-e2e-36" ENTITIES="parameter" TYPE="valid">
+An external ATTLIST declaration does not make a document non-standalone
+if the normalization would have been the same without the declaration
+</TEST>
+
+<!-- E37 is a clarification that doesn't affect parsing -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E38" URI="E38.xml" ID="rmt-e2e-38" ENTITIES="general" TYPE="not-wf">
+XML 1.0 document refers to 1.1 entity
+</TEST>
+
+<!-- E39 does not affect parsing -->
+
+<!-- E40 is editorial -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E41" URI="E41.xml" ID="rmt-e2e-41" TYPE="valid">
+An xml:lang attribute may be empty
+</TEST>
+
+<!-- E42 cannot be tested without an application -->
+
+<!-- E43 is just a consolidation of other errata -->
+
+<!-- E44 is editorial -->
+
+<!-- E45 can only reasonably be tested by putting the parser into a mode
+ where it doesn't read external entities, and we can't force that -->
+
+<!-- E46 is editorial -->
+
+<!-- E47 has the same problem as E45 -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E48" URI="E48.xml" ID="rmt-e2e-48" TYPE="valid">
+ANY content allows character data
+</TEST>
+
+<!-- E49 is editorial -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E50" URI="E50.xml" ID="rmt-e2e-50" VERSION="1.1" TYPE="valid">
+All line-ends are normalized, even those not passed to the application.
+NB this can only be tested effectively in XML 1.1, since CR is in the
+S production; in 1.1 we can use NEL which isn't.
+</TEST>
+
+<!-- E51-E54 are editorial -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E55" URI="E55.xml" ID="rmt-e2e-55" TYPE="error">
+A reference to an unparsed entity in an entity value is an error rather
+than forbidden (unless the entity is referenced, of course)
+</TEST>
+
+<!-- E56 is editorial -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E57" URI="E57.xml" ID="rmt-e2e-57" TYPE="error">
+A value other than preserve or default for xml:space is an error
+</TEST>
+
+<!-- E58 clarifies that certain things are undefined, so there is
+ nothing that can usefully be tested -->
+
+<!-- E59 is an explanatory note -->
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E60" URI="E60.xml" ID="rmt-e2e-60" ENTITIES="parameter" TYPE="valid">
+Conditional sections are allowed in external parameter entities referred
+to from the internal subset.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata2e" SECTIONS="E61" URI="E61.xml" ID="rmt-e2e-61" TYPE="not-wf">
+(From John Cowan) An encoding declaration in ASCII specifying an encoding
+that is not compatible with ASCII (so the document is not in its declared
+encoding). It should generate a fatal error.
+</TEST>
+
+</TESTCASES>
+
+</TESTCASES>
+<TESTCASES xml:base="eduni/xml-1.1/">
+ <TESTCASES PROFILE="Richard Tobin's XML 1.1 test suite 13 Feb 2003">
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="001.xml" ID="rmt-001" TYPE="not-wf" ENTITIES="parameter">
+External subset has later version number
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="002.xml" ID="rmt-002" TYPE="not-wf" ENTITIES="parameter">
+External PE has later version number
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="003.xml" ID="rmt-003" TYPE="not-wf" ENTITIES="general">
+External general entity has later version number
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="004.xml" ID="rmt-004" TYPE="not-wf" ENTITIES="general">
+External general entity has later version number (no decl means 1.0)
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="005.xml" ID="rmt-005" TYPE="not-wf" ENTITIES="general">
+Indirect external general entity has later version number
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="006.xml" ID="rmt-006" OUTPUT="out/006.xml" TYPE="valid" ENTITIES="general">
+Second-level external general entity has later version number than
+first-level, but not later than document, so not an error.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="007.xml" ID="rmt-007" OUTPUT="out/007.xml" TYPE="valid">
+A vanilla XML 1.1 document
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="008.xml" ID="rmt-008" TYPE="error">
+an implausibly-versioned document
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.8 4.3.4" URI="009.xml" ID="rmt-009" TYPE="error" ENTITIES="general">
+External general entity has implausible version number
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="010.xml" ID="rmt-010" OUTPUT="out/010.xml" TYPE="valid">
+Contains a C1 control, legal in XML 1.0, illegal in XML 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="011.xml" ID="rmt-011" TYPE="not-wf">
+Contains a C1 control, legal in XML 1.0, illegal in XML 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="012.xml" ID="rmt-012" OUTPUT="out/012.xml" TYPE="valid">
+Contains a DEL, legal in XML 1.0, illegal in XML 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="013.xml" ID="rmt-013" TYPE="not-wf">
+Contains a DEL, legal in XML 1.0, illegal in XML 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="014.xml" ID="rmt-014" TYPE="not-wf">
+Has a "long s" in a name, legal in XML 1.1, illegal in XML 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="015.xml" ID="rmt-015" OUTPUT="out/015.xml" TYPE="invalid">
+Has a "long s" in a name, legal in XML 1.1, illegal in XML 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="016.xml" ID="rmt-016" TYPE="not-wf">
+Has a Byzantine Musical Symbol Kratimata in a name,
+legal in XML 1.1, illegal in XML 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="017.xml" ID="rmt-017" OUTPUT="out/017.xml" TYPE="invalid">
+Has a Byzantine Musical Symbol Kratimata in a name,
+legal in XML 1.1, illegal in XML 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="018.xml" ID="rmt-018" OUTPUT="out/018.xml" TYPE="invalid">
+Has the last legal namechar in XML 1.1, illegal in XML 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="019.xml" ID="rmt-019" TYPE="not-wf">
+Has the last legal namechar in XML 1.1, illegal in XML 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="020.xml" ID="rmt-020" TYPE="not-wf">
+Has the first character after the last legal namechar in XML 1.1,
+illegal in both XML 1.0 and 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="021.xml" ID="rmt-021" TYPE="not-wf">
+Has the first character after the last legal namechar in XML 1.1,
+illegal in both XML 1.0 and 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="022.xml" ID="rmt-022" OUTPUT="out/022.xml" TYPE="valid">
+Has a NEL character; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="023.xml" ID="rmt-023" OUTPUT="out/023.xml" TYPE="valid">
+Has a NEL character; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="024.xml" ID="rmt-024" OUTPUT="out/024.xml" TYPE="valid">
+Has an LSEP character; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="025.xml" ID="rmt-025" OUTPUT="out/025.xml" TYPE="valid">
+Has an LSEP character; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="026.xml" ID="rmt-026" OUTPUT="out/026.xml" TYPE="valid">
+Has CR-NEL; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="027.xml" ID="rmt-027" OUTPUT="out/027.xml" TYPE="valid">
+Has CR-NEL; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="028.xml" ID="rmt-028" OUTPUT="out/028.xml" TYPE="valid">
+Has CR-LSEP; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1.
+Note that CR and LSEP are not combined into a single LF
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="029.xml" ID="rmt-029" OUTPUT="out/029.xml" TYPE="valid">
+Has CR-LSEP; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="030.xml" ID="rmt-030" OUTPUT="out/030.xml" TYPE="invalid">
+Has a NEL character in an NMTOKENS attribute; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="031.xml" ID="rmt-031" OUTPUT="out/031.xml" TYPE="valid">
+Has a NEL character in an NMTOKENS attribute; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="032.xml" ID="rmt-032" OUTPUT="out/032.xml" TYPE="invalid">
+Has an LSEP character in an NMTOKENS attribute; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="033.xml" ID="rmt-033" OUTPUT="out/033.xml" TYPE="valid">
+Has an LSEP character in an NMTOKENS attribute; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="034.xml" ID="rmt-034" OUTPUT="out/034.xml" TYPE="valid">
+Has an NMTOKENS attribute containing a CR character that comes from a
+character reference in an internal entity. Because CR is in the
+S production, this is valid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="035.xml" ID="rmt-035" OUTPUT="out/035.xml" TYPE="valid">
+Has an NMTOKENS attribute containing a CR character that comes from a
+character reference in an internal entity. Because CR is in the
+S production, this is valid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="036.xml" ID="rmt-036" OUTPUT="out/036.xml" TYPE="invalid">
+Has an NMTOKENS attribute containing a NEL character that comes from a
+character reference in an internal entity. Because NEL is not in the
+S production (even though real NELs are converted to LF on input),
+this is invalid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="037.xml" ID="rmt-037" OUTPUT="out/037.xml" TYPE="invalid">
+Has an NMTOKENS attribute containing a NEL character that comes from a
+character reference in an internal entity. Because NEL is not in the
+S production (even though real NELs are converted to LF on input),
+this is invalid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="038.xml" ID="rmt-038" TYPE="not-wf">
+Contains a C0 control character (form-feed), illegal in
+both XML 1.0 and 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="039.xml" ID="rmt-039" TYPE="not-wf">
+Contains a C0 control character (form-feed), illegal in
+both XML 1.0 and 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="040.xml" ID="rmt-040" OUTPUT="out/040.xml" TYPE="valid">
+Contains a C1 control character (partial line up), legal in
+XML 1.0 but not 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.2" URI="041.xml" ID="rmt-041" TYPE="not-wf">
+Contains a C1 control character (partial line up), legal in
+XML 1.0 but not 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="4.1" URI="042.xml" ID="rmt-042" TYPE="not-wf">
+Contains a character reference to a C0 control character (form-feed),
+legal in XML 1.1 but not 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="4.1" URI="043.xml" ID="rmt-043" OUTPUT="out/043.xml" TYPE="valid">
+Contains a character reference to a C0 control character (form-feed),
+legal in XML 1.1 but not 1.0
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="4.1" URI="044.xml" ID="rmt-044" OUTPUT="out/044.xml" TYPE="valid">
+Contains a character reference to a C1 control character (partial line
+up), legal in both XML 1.0 and 1.1 (but for different reasons)
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="4.1" URI="045.xml" ID="rmt-045" OUTPUT="out/045.xml" TYPE="valid">
+Contains a character reference to a C1 control character (partial line
+up), legal in both XML 1.0 and 1.1 (but for different reasons)
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="046.xml" ID="rmt-046" OUTPUT="out/046.xml" TYPE="invalid">
+Has a NEL character in element content whitespace; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="047.xml" ID="rmt-047" OUTPUT="out/047.xml" TYPE="valid">
+Has a NEL character in element content whitespace; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="048.xml" ID="rmt-048" OUTPUT="out/048.xml" TYPE="invalid">
+Has an LSEP character in element content whitespace; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="049.xml" ID="rmt-049" OUTPUT="out/049.xml" TYPE="valid">
+has an LSEP character in element content whitespace; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="050.xml" ID="rmt-050" OUTPUT="out/050.xml" TYPE="valid">
+Has element content whitespace containing a CR character that comes from
+a character reference in an internal entity. Because CR is in the
+S production, this is valid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="051.xml" ID="rmt-051" OUTPUT="out/051.xml" TYPE="valid">
+Has element content whitespace containing a CR character that comes from
+a character reference in an internal entity. Because CR is in the
+S production, this is valid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="052.xml" ID="rmt-052" OUTPUT="out/052.xml" TYPE="invalid">
+Has element content whitespace containing a NEL character that comes from
+a character reference in an internal entity. Because NEL is not in the
+S production (even though real NELs are converted to LF on input),
+this is invalid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.3" URI="053.xml" ID="rmt-053" OUTPUT="out/053.xml" TYPE="invalid">
+Has element content whitespace containing a NEL character that comes from
+a character reference in an internal entity. Because NEL is not in the
+S production (even though real NELs are converted to LF on input),
+this is invalid in both XML 1.0 and 1.1.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="4.3.2" URI="054.xml" ID="rmt-054" OUTPUT="out/054.xml" TYPE="valid">
+Contains a character reference to a C0 control character (form-feed)
+in an entity value. This will be legal (in XML 1.1) when the entity
+declaration is parsed, but what about when it is used? According to
+the grammar in the CR spec, it should be illegal (because the
+replacement text must match "content"), but this is probably not
+intended. This will be fixed in the PR version.
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="055.xml" ID="rmt-055" TYPE="error">
+Has a Latin-1 NEL in the XML declaration (to be made an error in PR)
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="056.xml" ID="rmt-056" TYPE="error">
+Has a UTF-8 NEL in the XML declaration (to be made an error in PR)
+</TEST>
+
+<TEST VERSION="1.1" RECOMMENDATION="XML1.1" SECTIONS="2.11" URI="057.xml" ID="rmt-057" TYPE="error">
+Has a UTF-8 LSEP in the XML declaration (to be made an error in PR)
+</TEST>
+
+</TESTCASES>
+
+</TESTCASES>
+<TESTCASES xml:base="eduni/namespaces/1.0/">
+ <TESTCASES PROFILE="Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003">
+
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="001.xml" ID="rmt-ns10-001" TYPE="valid">
+Namespace name test: a perfectly good http URI
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="002.xml" ID="rmt-ns10-002" TYPE="valid">
+Namespace name test: a syntactically plausible URI with a
+fictitious scheme
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="003.xml" ID="rmt-ns10-003" TYPE="valid">
+Namespace name test: a perfectly good http URI with a fragment
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="004.xml" ID="rmt-ns10-004" TYPE="error">
+Namespace name test: a relative URI (deprecated)
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="005.xml" ID="rmt-ns10-005" TYPE="error">
+Namespace name test: a same-document relative URI (deprecated)
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="006.xml" ID="rmt-ns10-006" TYPE="error">
+Namespace name test: an http IRI that is not a URI
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="007.xml" ID="rmt-ns10-007" TYPE="valid">
+Namespace inequality test: different capitalization
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="008.xml" ID="rmt-ns10-008" TYPE="valid">
+Namespace inequality test: different escaping
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="009.xml" ID="rmt-ns10-009" TYPE="not-wf">
+Namespace equality test: plain repetition
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="010.xml" ID="rmt-ns10-010" TYPE="not-wf">
+Namespace equality test: use of character reference
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="011.xml" ID="rmt-ns10-011" TYPE="not-wf">
+Namespace equality test: use of entity reference
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="012.xml" ID="rmt-ns10-012" TYPE="not-wf">
+Namespace inequality test: equal after attribute value normalization
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="3" URI="013.xml" ID="rmt-ns10-013" TYPE="not-wf">
+Bad QName syntax: multiple colons
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="3" URI="014.xml" ID="rmt-ns10-014" TYPE="not-wf">
+Bad QName syntax: colon at end
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="3" URI="015.xml" ID="rmt-ns10-015" TYPE="not-wf">
+Bad QName syntax: colon at start
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="016.xml" ID="rmt-ns10-016" TYPE="not-wf">
+Bad QName syntax: xmlns:
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="-" URI="017.xml" ID="rmt-ns10-017" TYPE="invalid">
+Simple legal case: no namespaces
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.2" URI="018.xml" ID="rmt-ns10-018" TYPE="invalid">
+Simple legal case: default namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="4" URI="019.xml" ID="rmt-ns10-019" TYPE="invalid">
+Simple legal case: prefixed element
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="4" URI="020.xml" ID="rmt-ns10-020" TYPE="invalid">
+Simple legal case: prefixed attribute
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.2" URI="021.xml" ID="rmt-ns10-021" TYPE="invalid">
+Simple legal case: default namespace and unbinding
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.2" URI="022.xml" ID="rmt-ns10-022" TYPE="invalid">
+Simple legal case: default namespace and rebinding
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="023.xml" ID="rmt-ns10-023" TYPE="not-wf">
+Illegal use of 1.1-style prefix unbinding in 1.0 document
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.1" URI="024.xml" ID="rmt-ns10-024" TYPE="invalid">
+Simple legal case: prefix rebinding
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="4" URI="025.xml" ID="rmt-ns10-025" TYPE="not-wf">
+Unbound element prefix
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="4" URI="026.xml" ID="rmt-ns10-026" TYPE="not-wf">
+Unbound attribute prefix
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="027.xml" ID="rmt-ns10-027" TYPE="invalid">
+Reserved prefixes and namespaces: using the xml prefix undeclared
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="028.xml" ID="rmt-ns10-028" TYPE="invalid">
+Reserved prefixes and namespaces: declaring the xml prefix correctly
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="029.xml" ID="rmt-ns10-029" TYPE="not-wf">
+Reserved prefixes and namespaces: declaring the xml prefix incorrectly
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="030.xml" ID="rmt-ns10-030" TYPE="not-wf">
+Reserved prefixes and namespaces: binding another prefix
+to the xml namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="031.xml" ID="rmt-ns10-031" TYPE="not-wf">
+Reserved prefixes and namespaces: declaring the xmlns prefix
+with its correct URI (illegal)
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="032.xml" ID="rmt-ns10-032" TYPE="not-wf">
+Reserved prefixes and namespaces: declaring the xmlns prefix
+with an incorrect URI
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="033.xml" ID="rmt-ns10-033" TYPE="not-wf">
+Reserved prefixes and namespaces: binding another prefix
+to the xmlns namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="034.xml" ID="rmt-ns10-034" TYPE="invalid">
+Reserved prefixes and namespaces: binding a reserved prefix
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="035.xml" ID="rmt-ns10-035" TYPE="not-wf">
+Attribute uniqueness: repeated identical attribute
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="036.xml" ID="rmt-ns10-036" TYPE="not-wf">
+Attribute uniqueness: repeated attribute with different prefixes
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="037.xml" ID="rmt-ns10-037" TYPE="invalid">
+Attribute uniqueness: different attributes with same local name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="038.xml" ID="rmt-ns10-038" TYPE="invalid">
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="039.xml" ID="rmt-ns10-039" TYPE="invalid">
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name, with default namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="040.xml" ID="rmt-ns10-040" TYPE="invalid">
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name, with default namespace and element in default namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="041.xml" ID="rmt-ns10-041" TYPE="invalid">
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name, element in same namespace as prefixed attribute
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="042.xml" ID="rmt-ns10-042" TYPE="not-wf">
+Colon in PI name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="043.xml" ID="rmt-ns10-043" TYPE="not-wf">
+Colon in entity name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="044.xml" ID="rmt-ns10-044" TYPE="not-wf">
+Colon in entity name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="045.xml" ID="rmt-ns10-045" TYPE="invalid">
+Colon in ID attribute name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="046.xml" ID="rmt-ns10-046" TYPE="invalid">
+Colon in ID attribute name
+</TEST>
+
+</TESTCASES>
+
+</TESTCASES>
+<TESTCASES xml:base="eduni/namespaces/1.1/">
+ <TESTCASES PROFILE="Richard Tobin's XML Namespaces 1.1 test suite 14 Feb 2003">
+
+<TEST VERSION="1.1" RECOMMENDATION="NS1.1" SECTIONS="2.1" URI="001.xml" ID="rmt-ns11-001" TYPE="valid">
+Namespace name test: a perfectly good http IRI that is not a URI
+</TEST>
+<TEST VERSION="1.1" RECOMMENDATION="NS1.1" SECTIONS="2.3" URI="002.xml" ID="rmt-ns11-002" TYPE="valid">
+Namespace inequality test: different escaping of non-ascii letter
+</TEST>
+<TEST VERSION="1.1" RECOMMENDATION="NS1.1" SECTIONS="6.1" URI="003.xml" ID="rmt-ns11-003" TYPE="invalid">
+1.1 style prefix unbinding
+</TEST>
+<TEST VERSION="1.1" RECOMMENDATION="NS1.1" SECTIONS="6.1" URI="004.xml" ID="rmt-ns11-004" TYPE="invalid">
+1.1 style prefix unbinding and rebinding
+</TEST>
+<TEST VERSION="1.1" RECOMMENDATION="NS1.1" SECTIONS="5" URI="005.xml" ID="rmt-ns11-005" TYPE="not-wf">
+Illegal use of prefix that has been unbound
+</TEST>
+<TEST VERSION="1.1" RECOMMENDATION="NS1.1" SECTIONS="2.1" URI="006.xml" ID="rmt-ns11-006" TYPE="valid">
+Test whether non-Latin-1 characters are accepted in IRIs, and whether
+they are correctly distinguished
+</TEST>
+
+</TESTCASES>
+
+</TESTCASES>
+<TESTCASES xml:base="eduni/errata-3e/">
+ <TESTCASES PROFILE="Richard Tobin's XML 1.0 3rd edition errata test suite 1 June 2006">
+
+<!-- These tests are for the errata to XML 1.0 3rd edition
+ (http://www.w3.org/XML/xml-V10-3e-errata).
+ The errata to XML 1.1 (first edition) are a superset of these
+ (http://www.w3.org/XML/xml-V11-1e-errata).
+ The additional XML 1.1 errata are (a) minor fixes to the BNF
+ and (b) a correction concerning 1.0 compatibility; these do
+ not seem to me to merit tests. -->
+
+<!-- E01 concerns xml:lang and is not testable at the XML level -->
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E05" URI="E05a.xml" ID="rmt-e3e-05a" TYPE="valid">
+CDATA sections may occur in Mixed content.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E05" URI="E05b.xml" ID="rmt-e3e-05b" TYPE="valid">
+CDATA sections, comments and PIs may occur in ANY content.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06a.xml" ID="rmt-e3e-06a" TYPE="invalid">
+Default values for IDREF attributes must match Name.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06b.xml" ID="rmt-e3e-06b" TYPE="invalid">
+Default values for ENTITY attributes must match Name.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06c.xml" ID="rmt-e3e-06c" TYPE="invalid">
+Default values for IDREFS attributes must match Names.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06d.xml" ID="rmt-e3e-06d" TYPE="invalid">
+Default values for ENTITIES attributes must match Names.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06e.xml" ID="rmt-e3e-06e" TYPE="invalid">
+Default values for NMTOKEN attributes must match Nmtoken.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06f.xml" ID="rmt-e3e-06f" TYPE="invalid">
+Default values for NMTOKENS attributes must match Nmtokens.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06g.xml" ID="rmt-e3e-06g" TYPE="invalid">
+Default values for NOTATION attributes must match one of the enumerated values.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06h.xml" ID="rmt-e3e-06h" TYPE="invalid">
+Default values for enumerated attributes must match one of the enumerated values.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E06" URI="E06i.xml" ID="rmt-e3e-06i" TYPE="valid">
+Non-syntactic validity errors in default attributes only happen if
+the attribute is in fact defaulted.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E12" URI="E12.xml" ID="rmt-e3e-12" TYPE="not-wf">
+Default values for attributes may not contain references to external entities.
+</TEST>
+
+<TEST RECOMMENDATION="XML1.0-errata3e" SECTIONS="E13" URI="E13.xml" ID="rmt-e3e-13" TYPE="invalid">
+Even internal parameter entity references are enough to make undeclared
+entities into mere validity errors rather than well-formedness errors.
+</TEST>
+
+</TESTCASES>
+
+</TESTCASES>
+<TESTCASES xml:base="eduni/namespaces/errata-1e/">
+ <TESTCASES PROFILE="Richard Tobin's XML Namespaces 1.0/1.1 2nd edition test suite 1 June 2006">
+
+<!-- These tests are for the erratum to Namespaces in XML 1.0 and 1.1
+ first edition. The erratum is the same for both 1.0 and 1.1. -->
+
+<TEST RECOMMENDATION="NS1.0-errata1e" SECTIONS="NE13" URI="NE13a.xml" ID="rmt-ns-e1.0-13a" TYPE="not-wf">
+The xml namespace must not be declared as the default namespace.
+</TEST>
+
+<TEST RECOMMENDATION="NS1.0-errata1e" SECTIONS="NE13" URI="NE13b.xml" ID="rmt-ns-e1.0-13b" TYPE="not-wf">
+The xmlns namespace must not be declared as the default namespace.
+</TEST>
+
+<TEST RECOMMENDATION="NS1.0-errata1e" SECTIONS="NE13" URI="NE13c.xml" ID="rmt-ns-e1.0-13c" TYPE="not-wf">
+Elements must not have the prefix xmlns.
+</TEST>
+
+</TESTCASES>
+
+</TESTCASES>
+
+</TESTSUITE>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Entries
new file mode 100644
index 0000000000..047d2e3ef0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Entries
@@ -0,0 +1,8 @@
+/ibm_oasis_invalid.xml/1.3/Thu May 16 14:05:06 2002//
+/ibm_oasis_not-wf.xml/1.11/Wed May 18 12:52:35 2005//
+/ibm_oasis_readme.txt/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm_oasis_valid.xml/1.5/Fri May 17 18:16:27 2002//
+D/invalid////
+D/not-wf////
+D/valid////
+D/xml-1.1////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Repository
new file mode 100644
index 0000000000..e49e364c8a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_invalid.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_invalid.xml
new file mode 100644
index 0000000000..5134946591
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_invalid.xml
@@ -0,0 +1,283 @@
+<!--
+
+ (C) Copyright IBM Corp. 2000 All rights reserved.
+
+ US Government Users Restricted Rights Use, duplication or
+ disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ The program is provided "as is" without any warranty express or
+ implied, including the warranty of non-infringement and the implied
+ warranties of merchantibility and fitness for a particular purpose.
+ IBM will not be liable for any damages suffered by you as a result
+ of using the Program. In no event will IBM be liable for any
+ special, indirect or consequential damages or lost profits even if
+ IBM has been advised of the possibility of their occurrence. IBM
+ will not be liable for any third party claims against you.
+
+-->
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - invalid tests">
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 28">
+ <TEST URI="invalid/P28/ibm28i01.xml" TYPE="invalid" ID="ibm-invalid-P28-ibm28i01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="invalid/P28/out/ibm28i01.xml">
+ The test violates VC:Root Element Type in P28. The Name in the document type
+ declaration does not match the element type of the root element.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 32">
+ <TEST URI="invalid/P32/ibm32i01.xml" TYPE="invalid" ID="ibm-invalid-P32-ibm32i01.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="invalid/P32/out/ibm32i01.xml">
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of attributes with default values, and the
+ associated element appears in the document with specified values for those
+ attributes.
+ </TEST>
+
+ <TEST URI="invalid/P32/ibm32i03.xml" TYPE="invalid" ID="ibm-invalid-P32-ibm32i03.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="invalid/P32/out/ibm32i03.xml">
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of attributes with values that will change
+ if normalized.
+ </TEST>
+ <TEST URI="invalid/P32/ibm32i04.xml" TYPE="invalid" ID="ibm-invalid-P32-ibm32i04.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="invalid/P32/out/ibm32i04.xml">
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of element with element content, and white
+ space occurs directly within the mixed content.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 39">
+ <TEST URI="invalid/P39/ibm39i01.xml" TYPE="invalid" ID="ibm-invalid-P39-ibm39i01.xml" ENTITIES="none" SECTIONS="3" OUTPUT="invalid/P39/out/ibm39i01.xml">
+ This test violates VC: Element Valid in P39. Element a is declared empty
+ in DTD, but has content in the document.
+ </TEST>
+ <TEST URI="invalid/P39/ibm39i02.xml" TYPE="invalid" ID="ibm-invalid-P39-ibm39i02.xml" ENTITIES="none" SECTIONS="3" OUTPUT="invalid/P39/out/ibm39i02.xml">
+ This test violates VC: Element Valid in P39. root is declared only having
+ element children in DTD, but have text content in the document.
+ </TEST>
+ <TEST URI="invalid/P39/ibm39i03.xml" TYPE="invalid" ID="ibm-invalid-P39-ibm39i03.xml" ENTITIES="none" SECTIONS="3" OUTPUT="invalid/P39/out/ibm39i03.xml">
+ This test violates VC: Element Valid in P39. Illegal elements are inserted
+ in b's content of Mixed type.
+ </TEST>
+ <TEST URI="invalid/P39/ibm39i04.xml" TYPE="invalid" ID="ibm-invalid-P39-ibm39i04.xml" ENTITIES="none" SECTIONS="3" OUTPUT="invalid/P39/out/ibm39i04.xml">
+ This test violates VC: Element Valid in P39. Element c has undeclared
+ element as its content of ANY type
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 41">
+ <TEST URI="invalid/P41/ibm41i01.xml" TYPE="invalid" ID="ibm-invalid-P41-ibm41i01.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="invalid/P41/out/ibm41i01.xml">
+ This test violates VC: Attribute Value Type in P41. attr1 for Element b is
+ not declared.
+ </TEST>
+ <TEST URI="invalid/P41/ibm41i02.xml" TYPE="invalid" ID="ibm-invalid-P41-ibm41i02.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="invalid/P41/out/ibm41i02.xml">
+ This test violates VC: Attribute Value Type in P41. attr3 for Element b is
+ given a value that does not match the declaration in the DTD.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 45">
+ <TEST URI="invalid/P45/ibm45i01.xml" TYPE="invalid" ID="ibm-invalid-P45-ibm45i01.xml" ENTITIES="none" SECTIONS="3.2" OUTPUT="invalid/P45/out/ibm45i01.xml">
+ This test violates VC: Unique Element Type Declaration. Element not_unique
+ has been declared 3 time in the DTD.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 49">
+ <TEST URI="invalid/P49/ibm49i01.xml" TYPE="invalid" ID="ibm-invalid-P49-ibm49i01.xml" ENTITIES="parameter" SECTIONS="3.2.1" OUTPUT="invalid/P49/out/ibm49i01.xml">
+ Violates VC:Proper Group/PE Nesting in P49. Open and close parenthesis for a
+ choice content model are in different PE replace Texts.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 50">
+ <TEST URI="invalid/P50/ibm50i01.xml" TYPE="invalid" ID="ibm-invalid-P50-ibm50i01.xml" ENTITIES="parameter" SECTIONS="3.2.1" OUTPUT="invalid/P50/out/ibm50i01.xml">
+ Violates VC:Proper Group/PE Nesting in P50. Open and close parenthesis for a
+ seq content model are in different PE replace Texts.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 51">
+ <TEST URI="invalid/P51/ibm51i01.xml" TYPE="invalid" ID="ibm-invalid-P51-ibm51i01.xml" ENTITIES="parameter" SECTIONS="3.2.2" OUTPUT="invalid/P51/out/ibm51i01.xml">
+ Violates VC:Proper Group/PE Nesting in P51. Open and close parenthesis for a
+ Mixed content model are in different PE replace Texts.
+ </TEST>
+ <TEST URI="invalid/P51/ibm51i03.xml" TYPE="invalid" ID="ibm-invalid-P51-ibm51i03.xml" ENTITIES="none" SECTIONS="3.2.2" OUTPUT="invalid/P51/out/ibm51i03.xml">
+ Violates VC:No Duplicate Types in P51. Element a appears twice in the Mixed
+ content model of Element e.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 56">
+ <TEST URI="invalid/P56/ibm56i01.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i01.xml">
+ Tests invalid TokenizedType which is against P56 VC: ID. The value of the ID
+ attribute "UniqueName" is "@999" which does not meet the Name production.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i02.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i02.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i02.xml">
+ Tests invalid TokenizedType which is against P56 VC: ID. The two ID attributes
+ "attr" and "UniqueName" have the same value "Ac999" for the element "b" and
+ the element "tokenizer".
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i03.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i03.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i03.xml">
+ Tests invalid TokenizedType which is against P56 VC: ID Attribute Default. The
+ "#FIXED" occurs in the DefaultDecl for the ID attribute "UniqueName".
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i05.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i05.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i05.xml">
+ Tests invalid TokenizedType which is against P56 VC: ID Attribute Default. The
+ constant string "BOGUS" occurs in the DefaultDecl for the ID attribute
+ "UniqueName".
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i06.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i06.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i06.xml">
+ Tests invalid TokenizedType which is against P56 VC: One ID per Element Type. The
+ element "a" has two ID attributes "first" and "second".
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i07.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i07.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i07.xml">
+ Tests invalid TokenizedType which is against P56 VC: IDREF. The value of the
+ IDREF attribute "reference" is "@456" which does not meet the Name production.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i08.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i08.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i08.xml">
+ Tests invalid TokenizedType which is against P56 VC: IDREF. The value of the IDREF
+ attribute "reference" is "BC456" which does not match the value assigned to any
+ ID attributes.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i09.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i09.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i09.xml">
+ Tests invalid TokenizedType which is against P56 VC: IDREFS. The value of the
+ IDREFS attribute "reference" is "AC456 #567" which does not meet the Names
+ production.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i10.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i10.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i10.xml">
+ Tests invalid TokenizedType which is against P56 VC: IDREFS. The value of the
+ IDREFS attribute "reference" is "EF456 DE355" which does not match the values
+ assigned to two ID attributes.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i11.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i11.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i11.xml">
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "ima ge" which does not meet the Name production.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i12.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i12.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i12.xml">
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "notimage" which does not match the name of any
+ unparsed entity declared.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i13.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i13.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i13.xml">
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "parsedentity" which matches the name of a parsed
+ entity instead of an unparsed entity declared.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i14.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i14.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i14.xml">
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITIES attribute "sun" is "#image1 @image" which does not meet the Names
+ production.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i15.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i15.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i15.xml">
+ Tests invalid TokenizedType which is against P56 VC: ENTITIES. The value of the
+ ENTITIES attribute "sun" is "image3 image4" which does not match the names of
+ two unparsed entities declared.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i16.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i16.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i16.xml">
+ Tests invalid TokenizedType which is against P56 VC: ENTITIES. The value of the
+ ENTITIES attribute "sun" is "parsedentity1 parsedentity2" which matches the names
+ of two parsed entities instead of two unparsed entities declared.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i17.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i17.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i17.xml">
+ Tests invalid TokenizedType which is against P56 VC: Name Token. The value of the
+ NMTOKEN attribute "thistoken" is "x : image" which does not meet the Nmtoken
+ production.
+ </TEST>
+ <TEST URI="invalid/P56/ibm56i18.xml" TYPE="invalid" ID="ibm-invalid-P56-ibm56i18.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P56/out/ibm56i18.xml">
+ Tests invalid TokenizedType which is against P56 VC: Name Token. The value of the
+ NMTOKENS attribute "thistoken" is "@lang y: #country" which does not meet the
+ Nmtokens production.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 58">
+ <TEST URI="invalid/P58/ibm58i01.xml" TYPE="invalid" ID="ibm-invalid-P58-ibm58i01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P58/out/ibm58i01.xml">
+ Tests invalid NotationType which is against P58 VC: Notation Attributes. The
+ attribute "content-encoding" with value "raw" is not a value from the list
+ "(base64|uuencode)".
+ </TEST>
+ <TEST URI="invalid/P58/ibm58i02.xml" TYPE="invalid" ID="ibm-invalid-P58-ibm58i02.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P58/out/ibm58i02.xml">
+ Tests invalid NotationType which is against P58 VC: Notation Attributes. The
+ attribute "content-encoding" with value "raw" is a value from the list
+ "(base64|uuencode|raw|ascii)", but "raw" is not a declared notation.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 59">
+ <TEST URI="invalid/P59/ibm59i01.xml" TYPE="invalid" ID="ibm-invalid-P59-ibm59i01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="invalid/P59/out/ibm59i01.xml">
+ Tests invalid Enumeration which is against P59 VC: Enumeration. The value of the
+ attribute is "ONE" which matches neither "one" nor "two" as declared in the
+ Enumeration in the AttDef in the AttlistDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 60">
+ <TEST URI="invalid/P60/ibm60i01.xml" TYPE="invalid" ID="ibm-invalid-P60-ibm60i01.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="invalid/P60/out/ibm60i01.xml">
+ Tests invalid DefaultDecl which is against P60 VC: Required Attribute. The
+ attribute "chapter" for the element "two" is declared as #REQUIRED in the
+ DefaultDecl in the AttlistDecl, but the value of this attribute is not given.
+ </TEST>
+ <TEST URI="invalid/P60/ibm60i02.xml" TYPE="invalid" ID="ibm-invalid-P60-ibm60i02.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="invalid/P60/out/ibm60i02.xml">
+ Tests invalid DefaultDecl which is against P60 VC: Fixed Attribute Default.. The
+ attribute "chapter" for the element "one" is declared as #FIXED with the given
+ value "Introduction" in the DefaultDecl in the AttlistDecl, but the value of a
+ instance of this attribute is assigned to "JavaBeans".
+ </TEST>
+ <TEST URI="invalid/P60/ibm60i03.xml" TYPE="invalid" ID="ibm-invalid-P60-ibm60i03.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="invalid/P60/out/ibm60i03.xml">
+ Tests invalid DefaultDecl which is against P60 VC: Attribute Default Legal. The
+ declared default value "c" is not legal for the type (a|b) in the AttDef in
+ the AttlistDecl.
+ </TEST>
+ <TEST URI="invalid/P60/ibm60i04.xml" TYPE="invalid" ID="ibm-invalid-P60-ibm60i04.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="invalid/P60/out/ibm60i04.xml">
+ Tests invalid DefaultDecl which is against P60 VC: Attribute Default Legal. The
+ declared default value "@#$" is not legal for the type NMTOKEN the AttDef in
+ the AttlistDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 68">
+ <TEST URI="invalid/P68/ibm68i01.xml" TYPE="error" ID="ibm-invalid-P68-ibm68i01.xml" ENTITIES="parameter" SECTIONS="4.1" OUTPUT="invalid/P68/out/ibm68i01.xml">
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge2" is referred in the file ibm68i01.dtd", but not declared.
+ </TEST>
+ <TEST URI="invalid/P68/ibm68i02.xml" TYPE="error" ID="ibm-invalid-P68-ibm68i02.xml" ENTITIES="parameter" SECTIONS="4.1" OUTPUT="invalid/P68/out/ibm68i02.xml">
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge1" is referred before declared in the file ibm68i01.dtd".
+ </TEST>
+ <TEST URI="invalid/P68/ibm68i03.xml" TYPE="error" ID="ibm-invalid-P68-ibm68i03.xml" ENTITIES="both" SECTIONS="4.1" OUTPUT="invalid/P68/out/ibm68i03.xml">
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge2" is referred in the file ibm68i03.ent", but not declared.
+ </TEST>
+ <TEST URI="invalid/P68/ibm68i04.xml" TYPE="error" ID="ibm-invalid-P68-ibm68i04.xml" ENTITIES="both" SECTIONS="4.1" OUTPUT="invalid/P68/out/ibm68i04.xml">
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge1" is referred before declared in the file ibm68i04.ent".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 69">
+ <TEST URI="invalid/P69/ibm69i01.xml" TYPE="error" ID="ibm-invalid-P69-ibm69i01.xml" ENTITIES="parameter" SECTIONS="4.1" OUTPUT="invalid/P69/out/ibm69i01.xml">
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The Name
+ "pe2" in the PEReference in the file ibm69i01.dtd does not match the Name of
+ any declared PE.
+ </TEST>
+ <TEST URI="invalid/P69/ibm69i02.xml" TYPE="error" ID="ibm-invalid-P69-ibm69i02.xml" ENTITIES="parameter" SECTIONS="4.1" OUTPUT="invalid/P69/out/ibm69i02.xml">
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The PE with
+ the name "pe1" is referred before declared in the file ibm69i02.dtd
+ </TEST>
+ <TEST URI="invalid/P69/ibm69i03.xml" TYPE="error" ID="ibm-invalid-P69-ibm69i03.xml" ENTITIES="both" SECTIONS="4.1" OUTPUT="invalid/P69/out/ibm69i03.xml">
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The Name
+ "pe3" in the PEReference in the file ibm69i03.ent does not match the Name of
+ any declared PE.
+ </TEST>
+ <TEST URI="invalid/P69/ibm69i04.xml" TYPE="error" ID="ibm-invalid-P69-ibm69i04.xml" ENTITIES="both" SECTIONS="4.1" OUTPUT="invalid/P69/out/ibm69i04.xml">
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The PE with
+ the name "pe2" is referred before declared in the file ibm69i04.ent.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 76">
+ <TEST URI="invalid/P76/ibm76i01.xml" TYPE="invalid" ID="ibm-invalid-P76-ibm76i01.xml" ENTITIES="none" SECTIONS="4.2.2" OUTPUT="invalid/P76/out/ibm76i01.xml">
+ Tests invalid NDataDecl which is against P76 VC: Notation declared. The Name
+ "JPGformat" in the NDataDecl in the EntityDecl for "ge2" does not match the
+ Name of any declared notation.
+ </TEST>
+</TESTCASES>
+
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_not-wf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_not-wf.xml
new file mode 100644
index 0000000000..f1e70c26cd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_not-wf.xml
@@ -0,0 +1,3125 @@
+<!--
+
+ (C) Copyright IBM Corp. 2000 All rights reserved.
+
+ US Government Users Restricted Rights Use, duplication or
+ disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ The program is provided "as is" without any warranty express or
+ implied, including the warranty of non-infringement and the implied
+ warranties of merchantibility and fitness for a particular purpose.
+ IBM will not be liable for any damages suffered by you as a result
+ of using the Program. In no event will IBM be liable for any
+ special, indirect or consequential damages or lost profits even if
+ IBM has been advised of the possibility of their occurrence. IBM
+ will not be liable for any third party claims against you.
+
+-->
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - not-wf tests">
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 1">
+ <TEST URI="not-wf/P01/ibm01n01.xml" TYPE="not-wf" ID="ibm-not-wf-P01-ibm01n01.xml" ENTITIES="none" SECTIONS="2.1">
+ Tests a document with no element. A well-formed document should have at lease
+ one elements.
+ </TEST>
+ <TEST URI="not-wf/P01/ibm01n02.xml" TYPE="not-wf" ID="ibm-not-wf-P01-ibm01n02.xml" ENTITIES="none" SECTIONS="2.1">
+ Tests a document with wrong ordering of its prolog and element. The
+ element occurs before the xml declaration and the DTD.
+ </TEST>
+ <TEST URI="not-wf/P01/ibm01n03.xml" TYPE="not-wf" ID="ibm-not-wf-P01-ibm01n03.xml" ENTITIES="none" SECTIONS="2.1">
+ Tests a document with wrong combination of misc and element. One PI occurs
+ between two elements.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 2">
+ <TEST URI="not-wf/P02/ibm02n01.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n01.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x00
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n02.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n02.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x01
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n03.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n03.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x02
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n04.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n04.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x03
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n05.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n05.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x04
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n06.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n06.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x05
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n07.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n07.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x06
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n08.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n08.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x07
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n09.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n09.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x08
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n10.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n10.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x0B
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n11.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n11.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x0C
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n12.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n12.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x0E
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n13.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n13.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x0F
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n14.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n14.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x10
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n15.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n15.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x11
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n16.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n16.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x12
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n17.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n17.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x13
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n18.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n18.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x14
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n19.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n19.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x15
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n20.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n20.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x16
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n21.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n21.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x17
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n22.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n22.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x18
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n23.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n23.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x19
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n24.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n24.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x1A </TEST>
+ <TEST URI="not-wf/P02/ibm02n25.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n25.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x1B
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n26.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n26.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x1C
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n27.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n27.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x1D
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n28.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n28.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x1E
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n29.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n29.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #x1F
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n30.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n30.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #xD800
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n31.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n31.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #xDFFF
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n32.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n32.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #xFFFE
+ </TEST>
+ <TEST URI="not-wf/P02/ibm02n33.xml" TYPE="not-wf" ID="ibm-not-wf-P02-ibm02n33.xml" ENTITIES="none" SECTIONS="2.2">
+ Tests a comment which contains an illegal Char: #xFFFF
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 3">
+ <TEST URI="not-wf/P03/ibm03n01.xml" TYPE="not-wf" ID="ibm-not-wf-P03-ibm03n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an end tag which contains an illegal space character #x3000 which
+ follows the element name "book".
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 4">
+ <TEST URI="not-wf/P04/ibm04n01.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x21
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n02.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x28
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n03.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x29
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n04.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n04.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2B
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n05.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n05.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2C
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n06.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n06.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2F
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n07.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n07.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3B
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n08.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n08.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3C
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n09.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n09.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3D
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n10.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n10.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3F
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n11.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n11.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5B
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n12.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n12.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5C
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n13.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n13.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5D
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n14.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n14.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5E
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n15.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n15.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x60
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n16.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n16.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7B
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n17.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n17.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7C
+ </TEST>
+ <TEST URI="not-wf/P04/ibm04n18.xml" TYPE="not-wf" ID="ibm-not-wf-P04-ibm04n18.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7D
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 5">
+ <TEST URI="not-wf/P05/ibm05n01.xml" TYPE="not-wf" ID="ibm-not-wf-P05-ibm05n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which has an illegal first character. An illegal
+ first character "." is followed by "A_name-starts_with.".
+ </TEST>
+ <TEST URI="not-wf/P05/ibm05n02.xml" TYPE="not-wf" ID="ibm-not-wf-P05-ibm05n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which has an illegal first character. An illegal
+ first character "-" is followed by "A_name-starts_with-".
+ </TEST>
+ <TEST URI="not-wf/P05/ibm05n03.xml" TYPE="not-wf" ID="ibm-not-wf-P05-ibm05n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an element name which has an illegal first character. An illegal
+ first character "5" is followed by "A_name-starts_with_digit".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 9">
+ <TEST URI="not-wf/P09/ibm09n01.xml" TYPE="not-wf" ID="ibm-not-wf-P09-ibm09n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains "%".
+ </TEST>
+ <TEST URI="not-wf/P09/ibm09n02.xml" TYPE="not-wf" ID="ibm-not-wf-P09-ibm09n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains the ampersand character.
+ </TEST>
+ <TEST URI="not-wf/P09/ibm09n03.xml" TYPE="not-wf" ID="ibm-not-wf-P09-ibm09n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains the double quote character in the middle.
+ </TEST>
+ <TEST URI="not-wf/P09/ibm09n04.xml" TYPE="not-wf" ID="ibm-not-wf-P09-ibm09n04.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an internal general entity with an invalid value. The closing bracket
+ (double quote) is missing with the value of the entity "FullName".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 10">
+ <TEST URI="not-wf/P10/ibm10n01.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character "less than".
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n02.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character ampersand.
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n03.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the double quote character in the middle.
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n04.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n04.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The closing bracket (double quote) is
+ missing with The value of the attribute "first".
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n05.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n05.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character "less than".
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n06.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n06.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character ampersand.
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n07.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n07.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the double quote character in the middle.
+ </TEST>
+ <TEST URI="not-wf/P10/ibm10n08.xml" TYPE="not-wf" ID="ibm-not-wf-P10-ibm10n08.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests an attribute with an invalid value. The closing bracket (single quote) is
+ missing with the value of the attribute "first".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 11">
+ <TEST URI="not-wf/P11/ibm11n01.xml" TYPE="not-wf" ID="ibm-not-wf-P11-ibm11n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests SystemLiteral. The systemLiteral for the element "student" has
+ a double quote character in the middle.
+ </TEST>
+ <TEST URI="not-wf/P11/ibm11n02.xml" TYPE="not-wf" ID="ibm-not-wf-P11-ibm11n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests SystemLiteral. The systemLiteral for the element "student" has
+ a single quote character in the middle.
+ </TEST>
+ <TEST URI="not-wf/P11/ibm11n03.xml" TYPE="not-wf" ID="ibm-not-wf-P11-ibm11n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests SystemLiteral. The closing bracket (double quote) is missing with
+ the systemLiteral for the element "student".
+ </TEST>
+ <TEST URI="not-wf/P11/ibm11n04.xml" TYPE="not-wf" ID="ibm-not-wf-P11-ibm11n04.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests SystemLiteral. The closing bracket (single quote) is missing with
+ the systemLiteral for the element "student".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 12">
+ <TEST URI="not-wf/P12/ibm12n01.xml" TYPE="not-wf" ID="ibm-not-wf-P12-ibm12n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests PubidLiteral. The closing bracket (double quote) is missing with
+ the value of the PubidLiteral for the entity "info".
+ </TEST>
+ <TEST URI="not-wf/P12/ibm12n02.xml" TYPE="not-wf" ID="ibm-not-wf-P12-ibm12n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests PubidLiteral. The value of the PubidLiteral for the entity
+ "info" has a single quote character in the middle..
+ </TEST>
+ <TEST URI="not-wf/P12/ibm12n03.xml" TYPE="not-wf" ID="ibm-not-wf-P12-ibm12n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests PubidLiteral. The closing bracket (single quote) is missing with
+ the value of the PubidLiteral for the entity "info".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 13">
+ <TEST URI="not-wf/P13/ibm13n01.xml" TYPE="not-wf" ID="ibm-not-wf-P13-ibm13n01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character "{".
+ </TEST>
+ <TEST URI="not-wf/P13/ibm13n02.xml" TYPE="not-wf" ID="ibm-not-wf-P13-ibm13n02.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character "~".
+ </TEST>
+ <TEST URI="not-wf/P13/ibm13n03.xml" TYPE="not-wf" ID="ibm-not-wf-P13-ibm13n03.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character double quote in the middle.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 14">
+ <TEST URI="not-wf/P14/ibm14n01.xml" TYPE="not-wf" ID="ibm-not-wf-P14-ibm14n01.xml" ENTITIES="none" SECTIONS="2.4">
+ Tests CharData. The content of the element "student" contains the
+ sequence close-bracket close-bracket greater-than.
+ </TEST>
+ <TEST URI="not-wf/P14/ibm14n02.xml" TYPE="not-wf" ID="ibm-not-wf-P14-ibm14n02.xml" ENTITIES="none" SECTIONS="2.4">
+ Tests CharData. The content of the element "student" contains the
+ character "less than".
+ </TEST>
+ <TEST URI="not-wf/P14/ibm14n03.xml" TYPE="not-wf" ID="ibm-not-wf-P14-ibm14n03.xml" ENTITIES="none" SECTIONS="2.4">
+ Tests CharData. The content of the element "student" contains the
+ character ampersand.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 15">
+ <TEST URI="not-wf/P15/ibm15n01.xml" TYPE="not-wf" ID="ibm-not-wf-P15-ibm15n01.xml" ENTITIES="none" SECTIONS="2.5">
+ Tests comment. The text of the second comment contains the character
+ "-".
+ </TEST>
+ <TEST URI="not-wf/P15/ibm15n02.xml" TYPE="not-wf" ID="ibm-not-wf-P15-ibm15n02.xml" ENTITIES="none" SECTIONS="2.5">
+ Tests comment. The second comment has a wrong closing sequence
+ "-(greater than)".
+ </TEST>
+ <TEST URI="not-wf/P15/ibm15n03.xml" TYPE="not-wf" ID="ibm-not-wf-P15-ibm15n03.xml" ENTITIES="none" SECTIONS="2.5">
+ Tests comment. The second comment has a wrong beginning sequence
+ "(less than)!-".
+ </TEST>
+ <TEST URI="not-wf/P15/ibm15n04.xml" TYPE="not-wf" ID="ibm-not-wf-P15-ibm15n04.xml" ENTITIES="none" SECTIONS="2.5">
+ Tests comment. The closing sequence is missing with the second
+ comment.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 16">
+ <TEST URI="not-wf/P16/ibm16n01.xml" TYPE="not-wf" ID="ibm-not-wf-P16-ibm16n01.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PI. The content of the PI includes the sequence
+ "?(greater than)?".
+ </TEST>
+ <TEST URI="not-wf/P16/ibm16n02.xml" TYPE="not-wf" ID="ibm-not-wf-P16-ibm16n02.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PI. The PITarget is missing in the PI.
+ </TEST>
+ <TEST URI="not-wf/P16/ibm16n03.xml" TYPE="not-wf" ID="ibm-not-wf-P16-ibm16n03.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PI. The PI has a wrong closing sequence ">".
+ </TEST>
+ <TEST URI="not-wf/P16/ibm16n04.xml" TYPE="not-wf" ID="ibm-not-wf-P16-ibm16n04.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PI. The closing sequence is missing in the PI.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 17">
+ <TEST URI="not-wf/P17/ibm17n01.xml" TYPE="not-wf" ID="ibm-not-wf-P17-ibm17n01.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PITarget. The PITarget contains the string "XML".
+ </TEST>
+ <TEST URI="not-wf/P17/ibm17n02.xml" TYPE="not-wf" ID="ibm-not-wf-P17-ibm17n02.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PITarget. The PITarget contains the string "xML".
+ </TEST>
+ <TEST URI="not-wf/P17/ibm17n03.xml" TYPE="not-wf" ID="ibm-not-wf-P17-ibm17n03.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PITarget. The PITarget contains the string "xml".
+ </TEST>
+ <TEST URI="not-wf/P17/ibm17n04.xml" TYPE="not-wf" ID="ibm-not-wf-P17-ibm17n04.xml" ENTITIES="none" SECTIONS="2.6">
+ Tests PITarget. The PITarget contains the string "xmL".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 18">
+ <TEST URI="not-wf/P18/ibm18n01.xml" TYPE="not-wf" ID="ibm-not-wf-P18-ibm18n01.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDSect. The CDStart is missing in the CDSect in the content of
+ element "student".
+ </TEST>
+ <TEST URI="not-wf/P18/ibm18n02.xml" TYPE="not-wf" ID="ibm-not-wf-P18-ibm18n02.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDSect. The CDEnd is missing in the CDSect in the content of
+ element "student".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 19">
+ <TEST URI="not-wf/P19/ibm19n01.xml" TYPE="not-wf" ID="ibm-not-wf-P19-ibm19n01.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDStart. The CDStart contains a lower case string "cdata".
+ </TEST>
+ <TEST URI="not-wf/P19/ibm19n02.xml" TYPE="not-wf" ID="ibm-not-wf-P19-ibm19n02.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDStart. The CDStart contains an extra character "[".
+ </TEST>
+ <TEST URI="not-wf/P19/ibm19n03.xml" TYPE="not-wf" ID="ibm-not-wf-P19-ibm19n03.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDStart. The CDStart contains a wrong character "?".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 20">
+ <TEST URI="not-wf/P20/ibm20n01.xml" TYPE="not-wf" ID="ibm-not-wf-P20-ibm20n01.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDATA with an illegal sequence. The CDATA contains the
+ sequence close-bracket close-bracket greater-than.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 21">
+ <TEST URI="not-wf/P21/ibm21n01.xml" TYPE="not-wf" ID="ibm-not-wf-P21-ibm21n01.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDEnd. One "]" is missing in the CDEnd.
+ </TEST>
+ <TEST URI="not-wf/P21/ibm21n02.xml" TYPE="not-wf" ID="ibm-not-wf-P21-ibm21n02.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDEnd. An extra "]" is placed in the CDEnd.
+ </TEST>
+ <TEST URI="not-wf/P21/ibm21n03.xml" TYPE="not-wf" ID="ibm-not-wf-P21-ibm21n03.xml" ENTITIES="none" SECTIONS="2.7">
+ Tests CDEnd. A wrong character ")" is placed in the CDEnd.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 22">
+ <TEST URI="not-wf/P22/ibm22n01.xml" TYPE="not-wf" ID="ibm-not-wf-P22-ibm22n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests prolog with wrong field ordering. The XMLDecl occurs
+ after the DTD.
+ </TEST>
+ <TEST URI="not-wf/P22/ibm22n02.xml" TYPE="not-wf" ID="ibm-not-wf-P22-ibm22n02.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests prolog with wrong field ordering. The Misc (comment)
+ occurs before the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P22/ibm22n03.xml" TYPE="not-wf" ID="ibm-not-wf-P22-ibm22n03.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests prolog with wrong field ordering. The XMLDecl occurs
+ after the DTD and a comment. The other comment occurs before the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 23">
+ <TEST URI="not-wf/P23/ibm23n01.xml" TYPE="not-wf" ID="ibm-not-wf-P23-ibm23n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests XMLDecl with a required field missing. The Versioninfo is
+ missing in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P23/ibm23n02.xml" TYPE="not-wf" ID="ibm-not-wf-P23-ibm23n02.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests XMLDecl with wrong field ordering. The VersionInfo
+ occurs after the EncodingDecl.
+ </TEST>
+ <TEST URI="not-wf/P23/ibm23n03.xml" TYPE="not-wf" ID="ibm-not-wf-P23-ibm23n03.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests XMLDecl with wrong field ordering. The VersionInfo
+ occurs after the SDDecl and the SDDecl occurs after the VersionInfo.
+ </TEST>
+ <TEST URI="not-wf/P23/ibm23n04.xml" TYPE="not-wf" ID="ibm-not-wf-P23-ibm23n04.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests XMLDecl with wrong key word. An upper case string "XML" is
+ used as the key word in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P23/ibm23n05.xml" TYPE="not-wf" ID="ibm-not-wf-P23-ibm23n05.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests XMLDecl with a wrong closing sequence ">".
+ </TEST>
+ <TEST URI="not-wf/P23/ibm23n06.xml" TYPE="not-wf" ID="ibm-not-wf-P23-ibm23n06.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests XMLDecl with a wrong opening sequence "(less than)!".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 24">
+ <TEST URI="not-wf/P24/ibm24n01.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with a required field missing. The VersionNum is
+ missing in the VersionInfo in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n02.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n02.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with a required field missing. The white space is
+ missing between the key word "xml" and the VersionInfo in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n03.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n03.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with a required field missing. The "="
+ (equal sign) is missing between the key word "version" and the VersionNum.
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n04.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n04.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with wrong field ordering. The VersionNum
+ occurs before "=" and "version".
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n05.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n05.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with wrong field ordering. The "=" occurs
+ after "version" and the VersionNum.
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n06.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n06.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with the wrong key word "Version".
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n07.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n07.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with the wrong key word "versioN".
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n08.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n08.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with mismatched quotes around the VersionNum.
+ version = '1.0" is used as the VersionInfo.
+ </TEST>
+ <TEST URI="not-wf/P24/ibm24n09.xml" TYPE="not-wf" ID="ibm-not-wf-P24-ibm24n09.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionInfo with mismatched quotes around the VersionNum.
+ The closing bracket for the VersionNum is missing.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 25">
+ <TEST URI="not-wf/P25/ibm25n01.xml" TYPE="not-wf" ID="ibm-not-wf-P25-ibm25n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests eq with a wrong key word "==".
+ </TEST>
+ <TEST URI="not-wf/P25/ibm25n02.xml" TYPE="not-wf" ID="ibm-not-wf-P25-ibm25n02.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests eq with a wrong key word "eq".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 26">
+ <TEST URI="not-wf/P26/ibm26n01.xml" TYPE="not-wf" ID="ibm-not-wf-P26-ibm26n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests VersionNum with an illegal character "#".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 27">
+ <TEST URI="not-wf/P27/ibm27n01.xml" TYPE="not-wf" ID="ibm-not-wf-P27-ibm27n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests type of Misc. An element declaration is used as a type of Misc
+ After the element "animal".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 28">
+ <TEST URI="not-wf/P28/ibm28n01.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with a required field missing. The Name "animal"
+ is missing in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n02.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n02.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with wrong field ordering. The Name
+ "animal" occurs after the markup declarations inside the "[]".
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n03.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n03.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with wrong field ordering. The Name
+ "animal" occurs after the markup declarations inside the "[]".
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n04.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n04.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with general entity reference.The
+ "(ampersand)generalE" occurs in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n05.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n05.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with wrong key word. A wrong key word "DOCtYPE"
+ occurs on line 2.
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n06.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n06.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with mismatched brackets. The closing bracket "]"
+ of the DTD is missing.
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n07.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n07.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with wrong bracket. The opening bracket "{" occurs
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P28/ibm28n08.xml" TYPE="not-wf" ID="ibm-not-wf-P28-ibm28n08.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests doctypedecl with wrong opening sequence. The opening sequence
+ "(less than)?DOCTYPE" occurs in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 28a">
+<TEST URI="not-wf/p28a/ibm28an01.xml" TYPE="not-wf" ID="ibm-not-wf-p28a-ibm28an01.xml" ENTITIES="parameter" SECTIONS="2.8">
+ This test violates WFC:PE Between Declarations in Production 28a.
+ The last character of a markup declaration is not contained in the same
+ parameter-entity text replacement.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 29">
+ <TEST URI="not-wf/P29/ibm29n01.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n01.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests markupdecl with an illegal markup declaration. A XMLDecl
+ occurs inside the DTD.
+ </TEST>
+ <TEST URI="not-wf/P29/ibm29n02.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n02.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P29/ibm29n03.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n03.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ ATTlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P29/ibm29n04.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n04.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P29/ibm29n05.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n05.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a PI in
+ the DTD.
+ </TEST>
+ <TEST URI="not-wf/P29/ibm29n06.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n06.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a comment
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P29/ibm29n07.xml" TYPE="not-wf" ID="ibm-not-wf-P29-ibm29n07.xml" ENTITIES="none" SECTIONS="2.8">
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a
+ NotationDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 30">
+ <TEST URI="not-wf/P30/ibm30n01.xml" TYPE="not-wf" ID="ibm-not-wf-P30-ibm30n01.xml" ENTITIES="parameter" SECTIONS="2.8">
+ Tests extSubset with wrong field ordering. In the file "ibm30n01.dtd",
+ the TextDecl occurs after the extSubsetDecl (the element declaration).
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 31">
+ <TEST URI="not-wf/P31/ibm31n01.xml" TYPE="not-wf" ID="ibm-not-wf-P31-ibm31n01.xml" ENTITIES="parameter" SECTIONS="2.8">
+ Tests extSubsetDecl with an illegal field. A general entity
+ reference occurs in file "ibm31n01.dtd".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 32">
+ <TEST URI="not-wf/P32/ibm32n01.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n01.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with a required field missing. The leading white space
+ is missing with the SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n02.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n02.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with a required field missing. The "=" sign is missing
+ in the SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n03.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n03.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with wrong key word. The word "Standalone" occurs in
+ the SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n04.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n04.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with wrong key word. The word "Yes" occurs in the
+ SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n05.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n05.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with wrong key word. The word "YES" occurs in the
+ SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n06.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n06.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with wrong key word. The word "No" occurs in the
+ SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n07.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n07.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with wrong key word. The word "NO" occurs in the
+ SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n08.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n08.xml" ENTITIES="none" SECTIONS="2.9">
+ Tests SDDecl with wrong field ordering. The "=" sign occurs
+ after the key word "yes" in the SDDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P32/ibm32n09.xml" TYPE="not-wf" ID="ibm-not-wf-P32-ibm32n09.xml" ENTITIES="parameter" SECTIONS="2.9">
+ This is test violates WFC: Entity Declared in P68.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of an entity (other than amp, lt, gt, apos,
+ quot), and references to this entity appear in the document.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 39">
+ <TEST URI="not-wf/P39/ibm39n01.xml" TYPE="not-wf" ID="ibm-not-wf-P39-ibm39n01.xml" ENTITIES="none" SECTIONS="3">
+ Tests element with a required field missing. The ETag is missing
+ for the element "root".
+ </TEST>
+ <TEST URI="not-wf/P39/ibm39n02.xml" TYPE="not-wf" ID="ibm-not-wf-P39-ibm39n02.xml" ENTITIES="none" SECTIONS="3">
+ Tests element with a required field missing. The STag is missing
+ for the element "root".
+ </TEST>
+ <TEST URI="not-wf/P39/ibm39n03.xml" TYPE="not-wf" ID="ibm-not-wf-P39-ibm39n03.xml" ENTITIES="none" SECTIONS="3">
+ Tests element with required fields missing. Both the content and
+ the ETag are missing in the element "root".
+ </TEST>
+ <TEST URI="not-wf/P39/ibm39n04.xml" TYPE="not-wf" ID="ibm-not-wf-P39-ibm39n04.xml" ENTITIES="none" SECTIONS="3">
+ Tests element with required fields missing. Both the content and
+ the STag are missing in the element "root".
+ </TEST>
+ <TEST URI="not-wf/P39/ibm39n05.xml" TYPE="not-wf" ID="ibm-not-wf-P39-ibm39n05.xml" ENTITIES="none" SECTIONS="3">
+ Tests element with wrong field ordering. The STag and the ETag are
+ swapped in the element "root".
+ </TEST>
+ <TEST URI="not-wf/P39/ibm39n06.xml" TYPE="not-wf" ID="ibm-not-wf-P39-ibm39n06.xml" ENTITIES="none" SECTIONS="3">
+ Tests element with wrong field ordering. The content occurs after
+ the ETag of the element "root".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 40">
+ <TEST URI="not-wf/P40/ibm40n01.xml" TYPE="not-wf" ID="ibm-not-wf-P40-ibm40n01.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests STag with a required field missing. The Name "root" is
+ in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P40/ibm40n02.xml" TYPE="not-wf" ID="ibm-not-wf-P40-ibm40n02.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests STag with a required field missing. The white space between
+ the Name "root" and the attribute "attr1" is missing in the STag of the
+ element "root".
+ </TEST>
+ <TEST URI="not-wf/P40/ibm40n03.xml" TYPE="not-wf" ID="ibm-not-wf-P40-ibm40n03.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests STag with wrong field ordering. The Name "root" occurs after
+ the attribute "attr1" in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P40/ibm40n04.xml" TYPE="not-wf" ID="ibm-not-wf-P40-ibm40n04.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests STag with a wrong opening sequence. The string "(less than)!" is used
+ as the opening sequence for the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P40/ibm40n05.xml" TYPE="not-wf" ID="ibm-not-wf-P40-ibm40n05.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests STag with duplicate attribute names. The attribute name
+ "attr1" occurs twice in the STag of the element "root".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 41">
+ <TEST URI="not-wf/P41/ibm41n01.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n01.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with a required field missing. The attribute name
+ is missing in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n02.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n02.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with a required field missing. The "=" is missing
+ between the attribute name and the attribute value in the Attribute in the
+ STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n03.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n03.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with a required field missing. The AttValue is
+ missing in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n04.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n04.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with a required field missing. The Name and the
+ "=" are missing in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n05.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n05.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with a required field missing. The "=" and the
+ AttValue are missing in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n06.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n06.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with a required field missing. The Name and the
+ AttValue are missing in the Attribute in the STag of the element "root".
+ </TEST>
+
+ <TEST URI="not-wf/P41/ibm41n07.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n07.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with wrong field ordering. The "=" occurs after the
+ Name and the AttValue in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n08.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n08.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with wrong field ordering. The Name and the AttValue
+ are swapped in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n09.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n09.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute with wrong field ordering. The "=" occurs before the
+ Name and the AttValue in the Attribute in the STag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n10.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n10.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute against WFC "no external entity references". A direct
+ reference to the external entity "aExternal" is contained in the value of the
+ attribute "attr1".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n11.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n11.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute against WFC "no external entity references". A indirect
+ reference to the external entity "aExternal" is contained in the value of the
+ attribute "attr1".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n12.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n12.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute against WFC "no external entity references". A direct
+ reference to the external unparsed entity "aImage" is contained in the value
+ of the attribute "attr1".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n13.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n13.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute against WFC "No (less than) character in Attribute
+ Values". The character "less than" is contained in the value of the
+ attribute "attr1".
+ </TEST>
+ <TEST URI="not-wf/P41/ibm41n14.xml" TYPE="not-wf" ID="ibm-not-wf-P41-ibm41n14.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests Attribute against WFC "No (less than) in Attribute Values". The character
+ "less than" is contained in the value of the attribute "attr1" through indirect
+ internal entity reference.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 42">
+ <TEST URI="not-wf/P42/ibm42n01.xml" TYPE="not-wf" ID="ibm-not-wf-P42-ibm42n01.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests ETag with a required field missing. The Name is missing in the
+ ETag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P42/ibm42n02.xml" TYPE="not-wf" ID="ibm-not-wf-P42-ibm42n02.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests ETag with a wrong beginning sequence. The string "(less than)\" is used as
+ a beginning sequence of the ETag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P42/ibm42n03.xml" TYPE="not-wf" ID="ibm-not-wf-P42-ibm42n03.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests ETag with a wrong beginning sequence. The string "less than" is used as
+ a beginning sequence of the ETag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P42/ibm42n04.xml" TYPE="not-wf" ID="ibm-not-wf-P42-ibm42n04.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests ETag with a wrong structure. An white space occurs between The
+ beginning sequence and the Name of the ETag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P42/ibm42n05.xml" TYPE="not-wf" ID="ibm-not-wf-P42-ibm42n05.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests ETag with a wrong structure. The ETag of the element "root"
+ contains an Attribute (attr1="any").
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 43">
+ <TEST URI="not-wf/P43/ibm43n01.xml" TYPE="not-wf" ID="ibm-not-wf-P43-ibm43n01.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests element content with a wrong option. A NotationDecl is used as
+ the content of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P43/ibm43n02.xml" TYPE="not-wf" ID="ibm-not-wf-P43-ibm43n02.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests element content with a wrong option. An elementdecl is used as
+ the content of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P43/ibm43n04.xml" TYPE="not-wf" ID="ibm-not-wf-P43-ibm43n04.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests element content with a wrong option. An entitydecl is used as
+ the content of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P43/ibm43n05.xml" TYPE="not-wf" ID="ibm-not-wf-P43-ibm43n05.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests element content with a wrong option. An AttlistDecl is used as
+ the content of the element "root".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 44">
+ <TEST URI="not-wf/P44/ibm44n01.xml" TYPE="not-wf" ID="ibm-not-wf-P44-ibm44n01.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests EmptyElemTag with a required field missing. The Name "root" is
+ missing in the EmptyElemTag.
+ </TEST>
+ <TEST URI="not-wf/P44/ibm44n02.xml" TYPE="not-wf" ID="ibm-not-wf-P44-ibm44n02.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests EmptyElemTag with wrong field ordering. The Attribute (attri1 =
+ "any") occurs before the name of the element "root" in the EmptyElemTag.
+ </TEST>
+ <TEST URI="not-wf/P44/ibm44n03.xml" TYPE="not-wf" ID="ibm-not-wf-P44-ibm44n03.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests EmptyElemTag with wrong closing sequence. The string "\>" is used
+ as the closing sequence in the EmptyElemtag of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P44/ibm44n04.xml" TYPE="not-wf" ID="ibm-not-wf-P44-ibm44n04.xml" ENTITIES="none" SECTIONS="3.1">
+ Tests EmptyElemTag which against the WFC "Unique Att Spec". The
+ attribute name "attr1" occurs twice in the EmptyElemTag of the element "root".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 45">
+ <TEST URI="not-wf/P45/ibm45n01.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n01.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with a required field missing. The Name is missing
+ in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n02.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n02.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with a required field missing. The white space is
+ missing between "aEle" and "(#PCDATA)" in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n03.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n03.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with a required field missing. The contentspec is
+ missing in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n04.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n04.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with a required field missing. The contentspec and
+ the white space is missing in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n05.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n05.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with a required field missing. The Name, the white
+ space, and the contentspec are missing in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n06.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n06.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with wrong field ordering. The Name occurs after the
+ contentspec in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n07.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n07.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with wrong beginning sequence. The string
+ "(less than)ELEMENT" is used as the beginning sequence in the second
+ elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n08.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n08.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with wrong key word. The string "Element" is used as
+ the key word in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P45/ibm45n09.xml" TYPE="not-wf" ID="ibm-not-wf-P45-ibm45n09.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests elementdecl with wrong key word. The string "element" is used as
+ the key word in the second elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 46">
+ <TEST URI="not-wf/P46/ibm46n01.xml" TYPE="not-wf" ID="ibm-not-wf-P46-ibm46n01.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests contentspec with wrong key word. the string "empty" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P46/ibm46n02.xml" TYPE="not-wf" ID="ibm-not-wf-P46-ibm46n02.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests contentspec with wrong key word. the string "Empty" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P46/ibm46n03.xml" TYPE="not-wf" ID="ibm-not-wf-P46-ibm46n03.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests contentspec with wrong key word. the string "Any" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P46/ibm46n04.xml" TYPE="not-wf" ID="ibm-not-wf-P46-ibm46n04.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests contentspec with wrong key word. the string "any" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P46/ibm46n05.xml" TYPE="not-wf" ID="ibm-not-wf-P46-ibm46n05.xml" ENTITIES="none" SECTIONS="3.2">
+ Tests contentspec with a wrong option. The string "#CDATA" is used as
+ the contentspec in the second elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 47">
+ <TEST URI="not-wf/P47/ibm47n01.xml" TYPE="not-wf" ID="ibm-not-wf-P47-ibm47n01.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests children with a required field missing. The "+" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P47/ibm47n02.xml" TYPE="not-wf" ID="ibm-not-wf-P47-ibm47n02.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests children with a required field missing. The "*" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P47/ibm47n03.xml" TYPE="not-wf" ID="ibm-not-wf-P47-ibm47n03.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests children with a required field missing. The "?" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P47/ibm47n04.xml" TYPE="not-wf" ID="ibm-not-wf-P47-ibm47n04.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests children with wrong field ordering. The "*" occurs before the
+ seq field (a,a) in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P47/ibm47n05.xml" TYPE="not-wf" ID="ibm-not-wf-P47-ibm47n05.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests children with wrong field ordering. The "+" occurs before the
+ choice field (a|a) in the second elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P47/ibm47n06.xml" TYPE="not-wf" ID="ibm-not-wf-P47-ibm47n06.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests children with wrong key word. The "^" occurs after the seq field
+ in the second elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 48">
+ <TEST URI="not-wf/P48/ibm48n01.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n01.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the second cp in the choice field in the third elementdecl in the
+ DTD.
+ </TEST>
+ <TEST URI="not-wf/P48/ibm48n02.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n02.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the cp in the third elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P48/ibm48n03.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n03.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the first cp in the choice field in the third elementdecl in the
+ DTD.
+ </TEST>
+ <TEST URI="not-wf/P48/ibm48n04.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n04.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with wrong field ordering. The "+" occurs before the seq (a,a)
+ in the first cp in the choice field in the third elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P48/ibm48n05.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n05.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with wrong field ordering. The "*" occurs before the choice
+ (a|b) in the first cp in the seq field in the third elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P48/ibm48n06.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n06.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with wrong field ordering. The "?" occurs before the Name "a"
+ in the second cp in the seq field in the third elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P48/ibm48n07.xml" TYPE="not-wf" ID="ibm-not-wf-P48-ibm48n07.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests cp with wrong key word. The "^" occurs after the Name "a" in the
+ first cp in the choice field in the third elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 49">
+ <TEST URI="not-wf/P49/ibm49n01.xml" TYPE="not-wf" ID="ibm-not-wf-P49-ibm49n01.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests choice with a required field missing. The two cps are missing in
+ the choice field in the third elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P49/ibm49n02.xml" TYPE="not-wf" ID="ibm-not-wf-P49-ibm49n02.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests choice with a required field missing. The third cp is missing in
+ the choice field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P49/ibm49n03.xml" TYPE="not-wf" ID="ibm-not-wf-P49-ibm49n03.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests choice with a wrong separator. The "!" is used as the separator
+ in the choice field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P49/ibm49n04.xml" TYPE="not-wf" ID="ibm-not-wf-P49-ibm49n04.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests choice with a required field missing. The separator "|" is
+ missing in the choice field (a b)+ in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P49/ibm49n05.xml" TYPE="not-wf" ID="ibm-not-wf-P49-ibm49n05.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests choice with an extra separator. An extra "|" occurs between a
+ and b in the choice field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P49/ibm49n06.xml" TYPE="not-wf" ID="ibm-not-wf-P49-ibm49n06.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests choice with a required field missing. The closing bracket ")" is
+ missing in the choice field (a |b * in the fourth elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 50">
+ <TEST URI="not-wf/P50/ibm50n01.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n01.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with a required field missing. The two cps are missing in
+ the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P50/ibm50n02.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n02.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with a required field missing. The third cp is missing in
+ the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P50/ibm50n03.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n03.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with a wrong separator. The "|" is used as the separator
+ between a and b in the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P50/ibm50n04.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n04.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with a wrong separator. The "." is used as the separator
+ between a and b in the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P50/ibm50n05.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n05.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with an extra separator. An extra "," occurs between (a|b)
+ and a in the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P50/ibm50n06.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n06.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with a required field missing. The separator between (a|b)
+ and (b|a) is missing in the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P50/ibm50n07.xml" TYPE="not-wf" ID="ibm-not-wf-P50-ibm50n07.xml" ENTITIES="none" SECTIONS="3.2.1">
+ Tests seq with wrong closing bracket. The "]" is used as the closing
+ bracket in the seq field in the fourth elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 51">
+ <TEST URI="not-wf/P51/ibm51n01.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n01.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with a wrong key word. The string "#pcdata" is used as the
+ key word in the Mixed field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P51/ibm51n02.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n02.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with wrong field ordering. The field #PCDATA does not
+ occur as the first component in the Mixed field in the fourth elementdecl in
+ the DTD.
+ </TEST>
+ <TEST URI="not-wf/P51/ibm51n03.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n03.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with a separator missing. The separator "|" is missing in
+ between #PCDATA and a in the Mixed field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P51/ibm51n04.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n04.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with a wrong key word. The string "#CDATA" is used as the
+ key word in the Mixed field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P51/ibm51n05.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n05.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with a required field missing. The "*" is missing after
+ the ")" in the Mixed field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P51/ibm51n06.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n06.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with wrong closing bracket. The "]" is used as the closing
+ bracket in the Mixed field in the fourth elementdecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P51/ibm51n07.xml" TYPE="not-wf" ID="ibm-not-wf-P51-ibm51n07.xml" ENTITIES="none" SECTIONS="3.2.2">
+ Tests Mixed with a required field missing. The closing bracket ")" is
+ missing after (#PCDATA in the Mixed field in the fourth elementdecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 52">
+ <TEST URI="not-wf/P52/ibm52n01.xml" TYPE="not-wf" ID="ibm-not-wf-P52-ibm52n01.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttlistDecl with a required field missing. The Name is missing
+ in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P52/ibm52n02.xml" TYPE="not-wf" ID="ibm-not-wf-P52-ibm52n02.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttlistDecl with a required field missing. The white space is
+ missing between the beginning sequence and the name in the AttlistDecl
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P52/ibm52n03.xml" TYPE="not-wf" ID="ibm-not-wf-P52-ibm52n03.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttlistDecl with wrong field ordering. The Name "a" occurs after
+ the first AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P52/ibm52n04.xml" TYPE="not-wf" ID="ibm-not-wf-P52-ibm52n04.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttlistDecl with wrong key word. The string "Attlist" is used as
+ the key word in the beginning sequence in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P52/ibm52n05.xml" TYPE="not-wf" ID="ibm-not-wf-P52-ibm52n05.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttlistDecl with a required field missing. The closing bracket
+ "greater than" is missing in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P52/ibm52n06.xml" TYPE="not-wf" ID="ibm-not-wf-P52-ibm52n06.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttlistDecl with wrong beginning sequence. The string
+ "(less than)ATTLIST" is used as the beginning sequence in the AttlistDecl in
+ the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 53">
+ <TEST URI="not-wf/P53/ibm53n01.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n01.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with a required field missing. The DefaultDecl is missing
+ in the AttDef for the name "attr1" in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n02.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n02.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with a required field missing. The white space is missing
+ between (abc|def) and "def" in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n03.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n03.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with a required field missing. The AttType is missing
+ for "attr1" in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n04.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n04.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with a required field missing. The white space is missing
+ between "attr1" and (abc|def) in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n05.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n05.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with a required field missing. The Name is missing in the
+ AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n06.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n06.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with a required field missing. The white space before the
+ name "attr2" is missing in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n07.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n07.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with wrong field ordering. The Name "attr1" occurs after
+ the AttType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P53/ibm53n08.xml" TYPE="not-wf" ID="ibm-not-wf-P53-ibm53n08.xml" ENTITIES="none" SECTIONS="3.3">
+ Tests AttDef with wrong field ordering. The Name "attr1" occurs after
+ the AttType and "default" occurs before the AttType in the AttDef in the
+ AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 54">
+ <TEST URI="not-wf/P54/ibm54n01.xml" TYPE="not-wf" ID="ibm-not-wf-P54-ibm54n01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests AttType with a wrong option. The string "BOGUSATTR" is used as
+ the AttType in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P54/ibm54n02.xml" TYPE="not-wf" ID="ibm-not-wf-P54-ibm54n02.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests AttType with a wrong option. The string "PCDATA" is used as
+ the AttType in the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 55">
+ <TEST URI="not-wf/P55/ibm55n01.xml" TYPE="not-wf" ID="ibm-not-wf-P55-ibm55n01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests StringType with a wrong key word. The lower case string "cdata"
+ is used as the StringType in the AttType in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P55/ibm55n02.xml" TYPE="not-wf" ID="ibm-not-wf-P55-ibm55n02.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests StringType with a wrong key word. The string "#CDATA" is used as
+ the StringType in the AttType in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P55/ibm55n03.xml" TYPE="not-wf" ID="ibm-not-wf-P55-ibm55n03.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests StringType with a wrong key word. The string "CData" is used as
+ the StringType in the AttType in the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 56">
+ <TEST URI="not-wf/P56/ibm56n01.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type "id" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P56/ibm56n02.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n02.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type "Idref" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P56/ibm56n03.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n03.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type"Idrefs" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P56/ibm56n04.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n04.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type "EntitY" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P56/ibm56n05.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n05.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type "nmTOKEN" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P56/ibm56n06.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n06.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type "NMtokens" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P56/ibm56n07.xml" TYPE="not-wf" ID="ibm-not-wf-P56-ibm56n07.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests TokenizedType with wrong key word. The type "#ID" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 57">
+ <TEST URI="not-wf/P57/ibm57n01.xml" TYPE="not-wf" ID="ibm-not-wf-P57-ibm57n01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests EnumeratedType with an illegal option. The string "NMTOKEN (a|b)"
+ is used in the EnumeratedType in the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 58">
+ <TEST URI="not-wf/P58/ibm58n01.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with wrong key word. The lower case "notation" is
+ used as the key word in the NotationType in the AttDef in the AttlistDecl in
+ the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n02.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n02.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with a required field missing. The beginning bracket
+ "(" is missing in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n03.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n03.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with a required field missing. The Name is missing
+ in the "()" in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n04.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n04.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with a required field missing. The closing bracket
+ is missing in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n05.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n05.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with wrong field ordering. The key word "NOTATION"
+ occurs after "(this)" in the NotationType in the AttDef in the AttlistDecl in
+ the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n06.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n06.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with wrong separator. The "," is used as a separator
+ between "this" and "that" in the NotationType in the AttDef in the AttlistDecl
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n07.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n07.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with a required field missing. The white space is
+ missing between "NOTATION" and "(this)" in the NotationType in the AttDef in the
+ AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P58/ibm58n08.xml" TYPE="not-wf" ID="ibm-not-wf-P58-ibm58n08.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests NotationType with extra wrong characters. The double quote
+ character occurs after "(" and before ")" in the NotationType in the AttDef in
+ the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 59">
+ <TEST URI="not-wf/P59/ibm59n01.xml" TYPE="not-wf" ID="ibm-not-wf-P59-ibm59n01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests Enumeration with required fields missing. The Nmtokens and "|"s are
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P59/ibm59n02.xml" TYPE="not-wf" ID="ibm-not-wf-P59-ibm59n02.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests Enumeration with a required field missing. The closing bracket ")" is
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P59/ibm59n03.xml" TYPE="not-wf" ID="ibm-not-wf-P59-ibm59n03.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests Enumeration with wrong separator. The "," is used as the separator in
+ the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P59/ibm59n04.xml" TYPE="not-wf" ID="ibm-not-wf-P59-ibm59n04.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests Enumeration with illegal presence. The double quotes occur around the
+ Enumeration value in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P59/ibm59n05.xml" TYPE="not-wf" ID="ibm-not-wf-P59-ibm59n05.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests Enumeration with a required field missing. The white space is missing
+ between in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P59/ibm59n06.xml" TYPE="not-wf" ID="ibm-not-wf-P59-ibm59n06.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests Enumeration with a required field missing. The beginning bracket "(" is
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 60">
+ <TEST URI="not-wf/P60/ibm60n01.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n01.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with wrong key word. The string "#required" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n02.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n02.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with wrong key word. The string "Implied" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n03.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n03.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with wrong key word. The string "!IMPLIED" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n04.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n04.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with a required field missing. There is no
+ attribute value specified after the key word "#FIXED" in the DefaultDecl in
+ the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n05.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n05.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with a required field missing. The white space is
+ missing between the key word "#FIXED" and the attribute value in the
+ DefaultDecl in the AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n06.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n06.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with wrong field ordering. The key word "#FIXED"
+ occurs after the attribute value "introduction" in the DefaultDecl in the
+ AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n07.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n07.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl against WFC of P60. The text replacement of the
+ entity "avalue" contains the "less than" character in the DefaultDecl in the
+ AttDef in the AttlistDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P60/ibm60n08.xml" TYPE="not-wf" ID="ibm-not-wf-P60-ibm60n08.xml" ENTITIES="none" SECTIONS="3.3.2">
+ Tests DefaultDecl with more than one key word. The "#REQUIRED" and
+ the "#IMPLIED" are used as the key words in the DefaultDecl in the AttDef
+ in the AttlistDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 61">
+ <TEST URI="not-wf/P61/ibm61n01.xml" TYPE="not-wf" ID="ibm-not-wf-P61-ibm61n01.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests conditionalSect with a wrong option. The word "NOTINCLUDE" is
+ used as part of an option which is wrong in the coditionalSect.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 62">
+ <TEST URI="not-wf/P62/ibm62n01.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n01.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with wrong key word. The string "include" is used
+ as a key word in the beginning sequence in the includeSect in the file
+ ibm62n01.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n02.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n02.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with wrong beginning sequence. An extra "[" occurs
+ in the beginning sequence in the includeSect in the file ibm62n02.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n03.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n03.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with wrong beginning sequence. A wrong character "?"
+ occurs in the beginning sequence in the includeSect in the file ibm62n03.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n04.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n04.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with a required field missing. The key word
+ "INCLUDE" is missing in the includeSect in the file ibm62n04.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n05.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n05.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with a required field missing. The "[" is missing
+ after the key word "INCLUDE" in the includeSect in the file ibm62n05.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n06.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n06.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with wrong field ordering. The two external subset
+ declarations occur before the key word "INCLUDE" in the includeSect in the
+ file ibm62n06.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n07.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n07.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with a required field missing. The closing sequence
+ "]](greater than)" is missing in the includeSect in the file ibm62n07.dtd.
+ </TEST>
+ <TEST URI="not-wf/P62/ibm62n08.xml" TYPE="not-wf" ID="ibm-not-wf-P62-ibm62n08.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with a required field missing. One "]" is missing
+ in the closing sequence in the includeSect in the file ibm62n08.dtd.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 63">
+ <TEST URI="not-wf/P63/ibm63n01.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n01.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSect with wrong key word. The string "ignore" is used
+ as a key word in the beginning sequence in the ignoreSect in the file
+ ibm63n01.dtd.
+ </TEST>
+ <TEST URI="not-wf/P63/ibm63n02.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n02.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSect with wrong beginning sequence. An extra "[" occurs
+ in the beginning sequence in the ignoreSect in the file ibm63n02.dtd.
+ </TEST>
+ <TEST URI="not-wf/P63/ibm63n03.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n03.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSect with wrong beginning sequence. A wrong character "?"
+ occurs in the beginning sequence in the ignoreSect in the file ibm63n03.dtd.
+ </TEST>
+ <TEST URI="not-wf/P63/ibm63n04.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n04.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSect with a required field missing. The key word
+ "IGNORE" is missing in the ignoreSect in the file ibm63n04.dtd.
+ </TEST>
+ <TEST URI="not-wf/P63/ibm63n05.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n05.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSect with a required field missing. The "[" is missing
+ after the key word "IGNORE" in the ignoreSect in the file ibm63n05.dtd.
+ </TEST>
+ <TEST URI="not-wf/P63/ibm63n06.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n06.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests includeSect with wrong field ordering. The two external subset
+ declarations occur before the key word "IGNORE" in the ignoreSect in the
+ file ibm63n06.dtd.
+ </TEST>
+ <TEST URI="not-wf/P63/ibm63n07.xml" TYPE="not-wf" ID="ibm-not-wf-P63-ibm63n07.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSect with a required field missing. The closing sequence
+ "]](greater than)" is missing in the ignoreSect in the file ibm63n07.dtd.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 64">
+ <TEST URI="not-wf/P64/ibm64n01.xml" TYPE="not-wf" ID="ibm-not-wf-P64-ibm64n01.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSectContents with wrong beginning sequence. The "?" occurs
+ in beginning sequence the ignoreSectContents in the file ibm64n01.dtd.
+ </TEST>
+ <TEST URI="not-wf/P64/ibm64n02.xml" TYPE="not-wf" ID="ibm-not-wf-P64-ibm64n02.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSectContents with a required field missing.The closing
+ sequence is missing in the ignoreSectContents in the file ibm64n02.dtd.
+ </TEST>
+ <TEST URI="not-wf/P64/ibm64n03.xml" TYPE="not-wf" ID="ibm-not-wf-P64-ibm64n03.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests ignoreSectContents with a required field missing.The beginning
+ sequence is missing in the ignoreSectContents in the file ibm64n03.dtd.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 65">
+ <TEST URI="not-wf/P65/ibm65n01.xml" TYPE="not-wf" ID="ibm-not-wf-P65-ibm65n01.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests Ignore with illegal string included. The string
+ "]](greater than)" is contained before "this" in the Ignore in the
+ ignoreSectContents in the file ibm65n01.dtd
+ </TEST>
+ <TEST URI="not-wf/P65/ibm65n02.xml" TYPE="not-wf" ID="ibm-not-wf-P65-ibm65n02.xml" ENTITIES="parameter" SECTIONS="3.4">
+ Tests Ignore with illegal string included. The string
+ "(less than)![" is contained before "this" in the Ignore in the
+ ignoreSectContents in the file ibm65n02.dtd
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 66">
+ <TEST URI="not-wf/P66/ibm66n01.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n01.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#002f" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n02.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n02.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with the semicolon character missing. The semicolon
+ character is missing at the end of the CharRef in the attribute value in
+ the STag of element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n03.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n03.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "49" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n04.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n04.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#5~0" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n05.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n05.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#x002g" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n06.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n06.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#x006G" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n07.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n07.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#0=2f" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n08.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n08.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#56.0" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n09.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n09.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#x00/2f"
+ is used as the referred character in the CharRef in the EntityDecl in the
+ DTD.
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n10.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n10.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#51)" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n11.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n11.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#00 2f"
+ is used as the referred character in the CharRef in the EntityDecl in the
+ DTD.
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n12.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n12.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#x0000"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n13.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n13.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#x001f"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n14.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n14.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#xfffe"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P66/ibm66n15.xml" TYPE="not-wf" ID="ibm-not-wf-P66-ibm66n15.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests CharRef with an illegal character referred to. The "#xffff"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 68">
+ <TEST URI="not-wf/P68/ibm68n01.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n01.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef with a required field missing. The Name is missing
+ in the EntityRef in the content of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n02.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n02.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef with a required field missing. The semicolon is
+ missing in the EntityRef in the attribute value in the element "root".
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n03.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n03.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef with an extra white space. A white space occurs
+ after the ampersand in the EntityRef in the content of the element "root".
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n04.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n04.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: Entity Declared. The name
+ "aAa" in the EntityRef in the AttValue in the STage of the element "root"
+ does not match the Name of any declared entity in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n05.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n05.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is not declared.
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n06.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n06.xml" ENTITIES="parameter" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is externally declared, but standalone is "yes".
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n07.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n07.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is referred before declared.
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n08.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n08.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: Parsed Entity. The
+ EntityRef in the AttValue in the STag of the element "root" contains the
+ name "aImage" of an unparsed entity.
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n09.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n09.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: No Recursion. The
+ recursive entity reference occurs with the entity declarations for "aaa"
+ and "bbb" in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P68/ibm68n10.xml" TYPE="not-wf" ID="ibm-not-wf-P68-ibm68n10.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests EntityRef which is against P68 WFC: No Recursion. The
+ indirect recursive entity reference occurs with the entity declarations for
+ "aaa", "bbb", "ccc", "ddd", and "eee" in the DTD.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 69">
+ <TEST URI="not-wf/P69/ibm69n01.xml" TYPE="not-wf" ID="ibm-not-wf-P69-ibm69n01.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests PEReference with a required field missing. The Name "paaa" is
+ missing in the PEReference in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P69/ibm69n02.xml" TYPE="not-wf" ID="ibm-not-wf-P69-ibm69n02.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests PEReference with a required field missing. The semicolon is
+ missing in the PEReference "%paaa" in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P69/ibm69n03.xml" TYPE="not-wf" ID="ibm-not-wf-P69-ibm69n03.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests PEReference with an extra white space. There is an extra
+ white space occurs before ";" in the PEReference in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P69/ibm69n04.xml" TYPE="not-wf" ID="ibm-not-wf-P69-ibm69n04.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests PEReference with an extra white space. There is an extra
+ white space occurs after "%" in the PEReference in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P69/ibm69n05.xml" TYPE="error" ID="ibm-not-wf-P69-ibm69n05.xml" ENTITIES="none" SECTIONS="4.1">
+ Based on E29 substantial source: minutes XML-Syntax 1999-02-24 E38 in
+ XML 1.0 Errata, this WFC does not apply to P69, but the VC Entity declared
+ still apply.
+ Tests PEReference which is against P69 WFC: Entity Declared. The PE
+ with the name "paaa" is referred before declared in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P69/ibm69n06.xml" TYPE="not-wf" ID="ibm-not-wf-P69-ibm69n06.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests PEReference which is against P69 WFC: No Recursion. The
+ recursive PE reference occurs with the entity declarations for "paaa" and
+ "bbb" in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P69/ibm69n07.xml" TYPE="not-wf" ID="ibm-not-wf-P69-ibm69n07.xml" ENTITIES="none" SECTIONS="4.1">
+ Tests PEReference which is against P69 WFC: No Recursion. The
+ indirect recursive PE reference occurs with the entity declarations for
+ "paaa", "bbb", "ccc", "ddd", and "eee" in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 71">
+ <TEST URI="not-wf/P71/ibm70n01.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm70n01.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n01.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n01.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with a required field missing. The white space is
+ missing between the beginning sequence and the Name "aaa" in the EntityDecl
+ in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n02.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n02.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with a required field missing. The white space is
+ missing between the Name "aaa" and the EntityDef "aString" in the
+ EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n03.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n03.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with a required field missing. The EntityDef is
+ missing in the EntityDecl with the Name "aaa" in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n04.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n04.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with a required field missing. The Name is missing
+ in the EntityDecl with the EntityDef "aString" in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n05.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n05.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with wrong ordering. The Name "aaa" occurs after
+ the EntityDef in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n06.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n06.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with wrong key word. The string "entity" is used
+ as the key word in the beginning sequence in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n07.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n07.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with a required field missing. The closing bracket
+ (greater than) is missing in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P71/ibm71n08.xml" TYPE="not-wf" ID="ibm-not-wf-P71-ibm71n08.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDecl with a required field missing. The exclamation mark
+ is missing in the beginning sequence in the EntityDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 72">
+ <TEST URI="not-wf/P72/ibm72n01.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n01.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with a required field missing. The white space is
+ missing between the beginning sequence and the "%" in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n02.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n02.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with a required field missing. The Name is missing
+ in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n03.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n03.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with a required field missing. The white space is
+ missing between the Name and the PEDef in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n04.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n04.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with a required field missing. The PEDef is missing
+ after the Name "paaa" in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n05.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n05.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with wrong field ordering. The Name "paaa" occurs
+ after the PEDef in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n06.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n06.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with wrong field ordering. The "%" and the Name "paaa"
+ occurs after the PEDef in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n07.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n07.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with wrong key word. The string "entity" is used as
+ the key word in the beginning sequence in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n08.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n08.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with a required field missing. The closing bracket
+ (greater than) is missing in the PEDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P72/ibm72n09.xml" TYPE="not-wf" ID="ibm-not-wf-P72-ibm72n09.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEdecl with wrong closing sequence. The string
+ "!(greater than)" is used as the closing sequence in the PEDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 73">
+ <TEST URI="not-wf/P73/ibm73n01.xml" TYPE="not-wf" ID="ibm-not-wf-P73-ibm73n01.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDef with wrong field ordering. The NDataDecl "NDATA
+ JPGformat" occurs before the ExternalID in the EntityDef in the EntityDecl.
+ </TEST>
+ <TEST URI="not-wf/P73/ibm73n03.xml" TYPE="not-wf" ID="ibm-not-wf-P73-ibm73n03.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests EntityDef with a required field missing. The ExternalID is
+ missing before the NDataDecl in the EntityDef in the EntityDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 74">
+ <TEST URI="not-wf/P74/ibm74n01.xml" TYPE="not-wf" ID="ibm-not-wf-P74-ibm74n01.xml" ENTITIES="none" SECTIONS="4.2">
+ Tests PEDef with extra fields. The NDataDecl occurs after the
+ ExternalID in the PEDef in the PEDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 75">
+ <TEST URI="not-wf/P75/ibm75n01.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n01.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with wrong key word. The string "system" is used
+ as the key word in the ExternalID in the EntityDef in the EntityDecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n02.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n02.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with wrong key word. The string "public" is used
+ as the key word in the ExternalID in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n03.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n03.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with wrong key word. The string "Public" is used
+ as the key word in the ExternalID in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n04.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n04.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PublicLiteral and the SystemLiteral in the ExternalID in
+ the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n05.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n05.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The white space
+ between "SYSTEM" and the Systemliteral is missing in the ExternalID in the
+ EntityDef in the EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n06.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n06.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The Systemliteral
+ is missing after "SYSTEM" in the ExternalID in the EntityDef in the
+ EntityDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n07.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n07.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The white space
+ between the PublicLiteral and the Systemliteral is missing in the ExternalID
+ in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n08.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n08.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The key word
+ "PUBLIC" is missing in the ExternalID in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n09.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n09.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The white space
+ between "PUBLIC" and the PublicLiteral is missing in the ExternalID in the
+ doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n10.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n10.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The PublicLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n11.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n11.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The PublicLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n12.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n12.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with a required field missing. The SystemLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </TEST>
+ <TEST URI="not-wf/P75/ibm75n13.xml" TYPE="not-wf" ID="ibm-not-wf-P75-ibm75n13.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests ExternalID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PublicLiteral in the ExternalID in the doctypedecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 76">
+ <TEST URI="not-wf/P76/ibm76n01.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n01.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with wrong key word. The string "ndata" is used as
+ the key word in the NDataDecl in the EntityDef in the GEDecl.
+ </TEST>
+ <TEST URI="not-wf/P76/ibm76n02.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n02.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with wrong key word. The string "NData" is used as
+ the key word in the NDataDecl in the EntityDef in the GEDecl.
+ </TEST>
+ <TEST URI="not-wf/P76/ibm76n03.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n03.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with a required field missing. The leading white
+ space is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </TEST>
+ <TEST URI="not-wf/P76/ibm76n04.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n04.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with a required field missing. The key word "NDATA"
+ is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </TEST>
+ <TEST URI="not-wf/P76/ibm76n05.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n05.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with a required field missing. The Name after the
+ key word "NDATA" is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </TEST>
+ <TEST URI="not-wf/P76/ibm76n06.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n06.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with a required field missing. The white space
+ between "NDATA" and the Name is missing in the NDataDecl in the EntityDef
+ in the GEDecl.
+ </TEST>
+ <TEST URI="not-wf/P76/ibm76n07.xml" TYPE="not-wf" ID="ibm-not-wf-P76-ibm76n07.xml" ENTITIES="none" SECTIONS="4.2.2">
+ Tests NDataDecl with wrong field ordering. The key word "NDATA"
+ occurs after the Name in the NDataDecl in the EntityDef in the GEDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 77">
+ <TEST URI="not-wf/P77/ibm77n01.xml" TYPE="not-wf" ID="ibm-not-wf-P77-ibm77n01.xml" ENTITIES="general" SECTIONS="4.3.1">
+ Tests TextDecl with wrong field ordering. The VersionInfo occurs
+ after the EncodingDecl in the TextDecl in the file "ibm77n01.ent".
+ </TEST>
+ <TEST URI="not-wf/P77/ibm77n02.xml" TYPE="not-wf" ID="ibm-not-wf-P77-ibm77n02.xml" ENTITIES="general" SECTIONS="4.3.1">
+ Tests TextDecl with wrong key word. The string "XML" is used in the
+ beginning sequence in the TextDecl in the file "ibm77n02.ent".
+ </TEST>
+ <TEST URI="not-wf/P77/ibm77n03.xml" TYPE="not-wf" ID="ibm-not-wf-P77-ibm77n03.xml" ENTITIES="parameter" SECTIONS="4.3.1">
+ Tests TextDecl with wrong closing sequence. The character "greater
+ than" is used as the closing sequence in the TextDecl in the file
+ "ibm77n03.ent".
+ </TEST>
+ <TEST URI="not-wf/P77/ibm77n04.xml" TYPE="not-wf" ID="ibm-not-wf-P77-ibm77n04.xml" ENTITIES="parameter" SECTIONS="4.3.1">
+ Tests TextDecl with a required field missing. The closing sequence
+ is missing in the TextDecl in the file "ibm77n04.ent".
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 78">
+ <TEST URI="not-wf/P78/ibm78n01.xml" TYPE="not-wf" ID="ibm-not-wf-P78-ibm78n01.xml" ENTITIES="general" SECTIONS="4.3.2">
+ Tests extParsedEnt with wrong field ordering. The TextDecl occurs
+ after the content in the file ibm78n01.ent.
+ </TEST>
+ <TEST URI="not-wf/P78/ibm78n02.xml" TYPE="not-wf" ID="ibm-not-wf-P78-ibm78n02.xml" ENTITIES="general" SECTIONS="4.3.2">
+ Tests extParsedEnt with extra field. A blank line occurs before the
+ TextDecl in the file ibm78n02.ent.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 79">
+ <TEST URI="not-wf/P79/ibm79n01.xml" TYPE="not-wf" ID="ibm-not-wf-P79-ibm79n01.xml" ENTITIES="parameter" SECTIONS="4.3.2">
+ Tests extPE with wrong field ordering. The TextDecl occurs after
+ the extSubsetDecl (the white space and the comment) in the file
+ ibm79n01.ent.
+ </TEST>
+ <TEST URI="not-wf/P79/ibm79n02.xml" TYPE="not-wf" ID="ibm-not-wf-P79-ibm79n02.xml" ENTITIES="parameter" SECTIONS="4.3.2">
+ Tests extPE with extra field. A blank line occurs before the
+ TextDecl in the file ibm78n02.ent.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 80">
+ <TEST URI="not-wf/P80/ibm80n01.xml" TYPE="not-wf" ID="ibm-not-wf-P80-ibm80n01.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncodingDecl with a required field missing. The leading white
+ space is missing in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P80/ibm80n02.xml" TYPE="not-wf" ID="ibm-not-wf-P80-ibm80n02.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncodingDecl with a required field missing. The "=" sign is
+ missing in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P80/ibm80n03.xml" TYPE="not-wf" ID="ibm-not-wf-P80-ibm80n03.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncodingDecl with a required field missing. The double quoted
+ EncName are missing in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P80/ibm80n04.xml" TYPE="not-wf" ID="ibm-not-wf-P80-ibm80n04.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncodingDecl with wrong field ordering. The string "encoding=" occurs after the double quoted EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P80/ibm80n05.xml" TYPE="not-wf" ID="ibm-not-wf-P80-ibm80n05.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncodingDecl with wrong field ordering. The "encoding" occurs
+ after the double quoted EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P80/ibm80n06.xml" TYPE="not-wf" ID="ibm-not-wf-P80-ibm80n06.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncodingDecl with wrong key word. The string "Encoding" is
+ used as the key word in the EncodingDecl in the XMLDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 81">
+ <TEST URI="not-wf/P81/ibm81n01.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n01.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The "_" is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n02.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n02.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The "-" is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n03.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n03.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The "." is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n04.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n04.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with illegal characters. The "8-" is used as the
+ initial characters in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n05.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n05.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The "~" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n06.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n06.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The "#" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n07.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n07.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The ":" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n08.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n08.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The "/" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+ <TEST URI="not-wf/P81/ibm81n09.xml" TYPE="not-wf" ID="ibm-not-wf-P81-ibm81n09.xml" ENTITIES="none" SECTIONS="4.3.3">
+ Tests EncName with an illegal character. The ";" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 82">
+ <TEST URI="not-wf/P82/ibm82n01.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n01.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with a required field missing. The white space
+ after the beginning sequence of the NotationDecl is missing in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n02.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n02.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with a required field missing. The Name in the
+ NotationDecl is missing in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n03.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n03.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with a required field missing. The externalID or
+ the PublicID is missing in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n04.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n04.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with wrong field ordering. The Name occurs after
+ the "SYSTEM" and the externalID in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n05.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n05.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with wrong key word. The string "notation" is
+ used as a key word in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n06.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n06.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with a required field missing. The closing
+ bracket (the greater than character) is missing in the NotationDecl.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n07.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n07.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with wrong beginning sequence. The "!" is missing
+ in the beginning sequence in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P82/ibm82n08.xml" TYPE="not-wf" ID="ibm-not-wf-P82-ibm82n08.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests NotationDecl with wrong closing sequence. The extra "!" occurs
+ in the closing sequence in the NotationDecl in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 83">
+ <TEST URI="not-wf/P83/ibm83n01.xml" TYPE="not-wf" ID="ibm-not-wf-P83-ibm83n01.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests PublicID with wrong key word. The string "public" is used as
+ the key word in the PublicID in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P83/ibm83n02.xml" TYPE="not-wf" ID="ibm-not-wf-P83-ibm83n02.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests PublicID with wrong key word. The string "Public" is used as
+ the key word in the PublicID in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P83/ibm83n03.xml" TYPE="not-wf" ID="ibm-not-wf-P83-ibm83n03.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests PublicID with a required field missing. The key word "PUBLIC"
+ is missing in the PublicID in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P83/ibm83n04.xml" TYPE="not-wf" ID="ibm-not-wf-P83-ibm83n04.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests PublicID with a required field missing. The white space
+ between the "PUBLIC" and the PubidLiteral is missing in the PublicID in
+ the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P83/ibm83n05.xml" TYPE="not-wf" ID="ibm-not-wf-P83-ibm83n05.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests PublicID with a required field missing. The PubidLiteral is
+ missing in the PublicID in the NotationDecl in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P83/ibm83n06.xml" TYPE="not-wf" ID="ibm-not-wf-P83-ibm83n06.xml" ENTITIES="none" SECTIONS="4.7">
+ Tests PublicID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PubidLiteral in the PublicID in the NotationDecl.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 85">
+ <TEST URI="not-wf/P85/ibm85n01.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n01.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x00D7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n02.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n02.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x00F7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n03.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n03.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0132
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n04.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n04.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0133
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n05.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n05.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x013F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n06.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n06.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0140
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n07.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n07.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0149
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n08.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n08.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x017F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n09.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n09.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01c4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n10.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n10.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01CC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n100.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n100.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0BB6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n101.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n101.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0BBA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n102.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n102.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n103.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n103.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n104.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n104.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n105.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n105.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n106.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n106.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C5F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n107.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n107.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n108.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n108.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C8D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n109.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n109.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0C91
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n11.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n11.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01F1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n110.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n110.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0CA9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n111.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n111.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0CB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n112.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n112.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0CBA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n113.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n113.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0CDF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n114.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n114.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0CE2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n115.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n115.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0D0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n116.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n116.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0D11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n117.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n117.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0D29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n118.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n118.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0D3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n119.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n119.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0D62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n12.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n12.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01F3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n120.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n120.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E2F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n121.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n121.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n122.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n122.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n123.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n123.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E46
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n124.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n124.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E83
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n125.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n125.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E85
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n126.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n126.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E89
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n127.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n127.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E8B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n128.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n128.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E8E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n129.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n129.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0E98
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n13.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n13.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01F6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n130.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n130.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EA0
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n131.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n131.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EA4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n132.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n132.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EA6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n133.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n133.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EA8
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n134.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n134.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EAC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n135.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n135.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EAF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n136.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n136.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EB1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n137.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n137.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n138.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n138.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EBE
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n139.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n139.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0EC5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n14.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n14.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01F9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n140.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n140.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0F48
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n141.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n141.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0F6A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n142.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n142.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x10C6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n143.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n143.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x10F7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n144.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n144.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1011
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n145.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n145.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1104
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n146.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n146.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1108
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n147.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n147.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x110A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n148.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n148.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x110D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n149.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n149.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x113B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n15.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n15.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x01F9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n150.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n150.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x113F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n151.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n151.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1141
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n152.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n152.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x114D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n153.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n153.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x114f
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n154.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n154.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1151
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n155.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n155.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1156
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n156.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n156.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x115A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n157.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n157.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1162
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n158.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n158.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1164
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n159.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n159.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1166
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n16.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n16.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0230
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n160.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n160.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x116B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n161.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n161.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x116F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n162.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n162.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1174
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n163.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n163.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x119F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n164.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n164.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11AC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n165.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n165.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11B6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n166.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n166.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11B9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n167.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n167.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11BB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n168.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n168.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11C3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n169.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n169.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11F1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n17.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n17.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x02AF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n170.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n170.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x11FA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n171.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n171.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1E9C
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n172.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n172.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1EFA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n173.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n173.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F16
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n174.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n174.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F1E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n175.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n175.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F46
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n176.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n176.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F4F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n177.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n177.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F58
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n178.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n178.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F5A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n179.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n179.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F5C
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n18.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n18.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x02CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n180.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n180.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F5E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n181.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n181.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1F7E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n182.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n182.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FB5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n183.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n183.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FBD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n184.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n184.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FBF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n185.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n185.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FC5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n186.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n186.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FCD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n187.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n187.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FD5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n188.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n188.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FDC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n189.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n189.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FED
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n19.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n19.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0387
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n190.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n190.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FF5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n191.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n191.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x1FFD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n192.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n192.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x2127
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n193.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n193.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x212F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n194.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n194.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x2183
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n195.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n195.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x3095
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n196.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n196.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x30FB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n197.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n197.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x312D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n198.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n198.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #xD7A4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n20.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n20.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x038B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n21.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n21.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x03A2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n22.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n22.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x03CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n23.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n23.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x03D7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n24.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n24.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x03DD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n25.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n25.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x03E1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n26.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n26.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x03F4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n27.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n27.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x040D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n28.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n28.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0450
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n29.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n29.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x045D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n30.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n30.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0482
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n31.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n31.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04C5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n32.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n32.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04C6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n33.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n33.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04C9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n34.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n34.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04EC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n35.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n35.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04ED
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n36.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n36.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04F6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n37.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n37.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x04FA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n38.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n38.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0557
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n39.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n39.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0558
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n40.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n40.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0587
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n41.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n41.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x05EB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n42.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n42.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x05F3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n43.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n43.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0620
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n44.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n44.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x063B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n45.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n45.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x064B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n46.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n46.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x06B8
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n47.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n47.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x06BF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n48.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n48.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x06CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n49.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n49.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x06D4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n50.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n50.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x06D6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n51.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n51.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x06E7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n52.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n52.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x093A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n53.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n53.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x093E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n54.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n54.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0962
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n55.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n55.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x098D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n56.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n56.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0991
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n57.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n57.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0992
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n58.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n58.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09A9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n59.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n59.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09B1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n60.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n60.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09B5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n61.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n61.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09BA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n62.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n62.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09DE
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n63.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n63.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09E2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n64.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n64.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x09F2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n65.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n65.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A0B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n66.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n66.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n67.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n67.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n68.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n68.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n69.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n69.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n70.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n70.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A37
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n71.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n71.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n72.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n72.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A5D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n73.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n73.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A70
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n74.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n74.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A75
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n75.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n75.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #xA84
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n76.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n76.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0ABC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n77.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n77.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0A92
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n78.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n78.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0AA9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n79.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n79.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0AB1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n80.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n80.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0AB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n81.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n81.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0ABA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n82.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n82.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B04
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n83.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n83.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n84.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n84.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n85.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n85.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n86.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n86.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n87.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n87.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n88.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n88.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n89.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n89.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B3E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n90.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n90.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B5E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n91.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n91.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n92.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n92.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B8B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n93.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n93.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B91
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n94.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n94.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B98
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n95.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n95.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B9B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n96.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n96.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0B9D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n97.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n97.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0BA0
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n98.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n98.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0BA7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P85/ibm85n99.xml" TYPE="not-wf" ID="ibm-not-wf-P85-ibm85n99.xml" ENTITIES="none" SECTIONS="B.">
+ Tests BaseChar with an illegal character. The character #x0BAB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 86">
+ <TEST URI="not-wf/P86/ibm86n01.xml" TYPE="not-wf" ID="ibm-not-wf-P86-ibm86n01.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Ideographic with an illegal character. The character #x4CFF
+ occurs as the first character in the PITarget in the PI in the DTD.
+</TEST>
+ <TEST URI="not-wf/P86/ibm86n02.xml" TYPE="not-wf" ID="ibm-not-wf-P86-ibm86n02.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Ideographic with an illegal character. The character #x9FA6
+ occurs as the first character in the PITarget in the PI in the DTD.
+</TEST>
+ <TEST URI="not-wf/P86/ibm86n03.xml" TYPE="not-wf" ID="ibm-not-wf-P86-ibm86n03.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Ideographic with an illegal character. The character #x3008
+ occurs as the first character in the PITarget in the PI in the DTD.
+</TEST>
+ <TEST URI="not-wf/P86/ibm86n04.xml" TYPE="not-wf" ID="ibm-not-wf-P86-ibm86n04.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Ideographic with an illegal character. The character #x302A
+ occurs as the first character in the PITarget in the PI in the DTD.
+</TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 87">
+ <TEST URI="not-wf/P87/ibm87n01.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n01.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x02FF
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n02.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n02.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0346
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n03.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n03.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0362
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n04.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n04.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0487
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n05.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n05.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x05A2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n06.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n06.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x05BA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n07.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n07.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x05BE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n08.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n08.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x05C0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n09.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n09.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x05C3
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n10.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n10.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0653
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n11.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n11.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x06B8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n12.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n12.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x06B9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n13.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n13.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x06E9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n14.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n14.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x06EE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n15.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n15.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0904
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n16.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n16.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x093B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n17.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n17.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x094E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n18.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n18.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0955
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n19.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n19.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0964
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n20.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n20.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0984
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n21.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n21.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x09C5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n22.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n22.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x09C9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n23.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n23.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x09CE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n24.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n24.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x09D8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n25.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n25.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x09E4
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n26.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n26.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A03
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n27.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n27.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A3D
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n28.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n28.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A46
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n29.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n29.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n30.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n30.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n31.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n31.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A80
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n32.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n32.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0A84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n33.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n33.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0ABB
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n34.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n34.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0AC6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n35.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n35.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0ACA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n36.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n36.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0ACE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n37.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n37.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B04
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n38.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n38.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n39.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n39.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B44
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n40.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n40.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B4A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n41.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n41.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n42.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n42.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B58
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n43.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n43.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0B84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n44.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n44.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0BC3
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n45.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n45.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0BC9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n46.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n46.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0BD6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n47.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n47.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0C0D
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n48.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n48.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0C45
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n49.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n49.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0C49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n50.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n50.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0C54
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n51.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n51.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0C81
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n52.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n52.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0C84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n53.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n53.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0CC5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n54.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n54.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0CC9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n55.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n55.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0CD4
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n56.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n56.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0CD7
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n57.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n57.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0D04
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n58.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n58.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0D45
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n59.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n59.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0D49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n60.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n60.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0D4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n61.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n61.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0D58
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n62.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n62.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0E3F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n63.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n63.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0E3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n64.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n64.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0E4F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n66.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n66.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0EBA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n67.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n67.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0EBE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n68.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n68.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0ECE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n69.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n69.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F1A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n70.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n70.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F36
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n71.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n71.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F38
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n72.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n72.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n73.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n73.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F3A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n74.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n74.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n75.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n75.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F85
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n76.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n76.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F8C
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n77.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n77.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F96
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n78.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n78.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0F98
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n79.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n79.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0FB0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n80.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n80.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0FB8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n81.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n81.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x0FBA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n82.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n82.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x20DD
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n83.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n83.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x20E2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n84.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n84.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x3030
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P87/ibm87n85.xml" TYPE="not-wf" ID="ibm-not-wf-P87-ibm87n85.xml" ENTITIES="none" SECTIONS="B.">
+ Tests CombiningChar with an illegal character. The character #x309B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 88">
+ <TEST URI="not-wf/P88/ibm88n01.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n01.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0029
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n02.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n02.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x003B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n03.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n03.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x066A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n04.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n04.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x06FA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n05.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n05.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0970
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n06.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n06.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x09F2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n08.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n08.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0AF0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n09.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n09.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0B70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n10.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n10.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0C65
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n11.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n11.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0CE5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n12.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n12.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0CF0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n13.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n13.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0D70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n14.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n14.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0E5A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n15.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n15.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0EDA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P88/ibm88n16.xml" TYPE="not-wf" ID="ibm-not-wf-P88-ibm88n16.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Digit with an illegal character. The character #x0F2A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 89">
+ <TEST URI="not-wf/P89/ibm89n01.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n01.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x00B6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n02.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n02.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x00B8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n03.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n03.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x02D2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n04.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n04.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x03FE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n05.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n05.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x065F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n06.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n06.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x0EC7
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n07.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n07.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x3006
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n08.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n08.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x3030
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n09.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n09.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x3036
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n10.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n10.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x309C
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n11.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n11.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x309F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+ <TEST URI="not-wf/P89/ibm89n12.xml" TYPE="not-wf" ID="ibm-not-wf-P89-ibm89n12.xml" ENTITIES="none" SECTIONS="B.">
+ Tests Extender with an illegal character. The character #x30FF
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </TEST>
+</TESTCASES>
+
+</TESTCASES>
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_readme.txt b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_readme.txt
new file mode 100644
index 0000000000..6640e3c9f3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_readme.txt
@@ -0,0 +1,43 @@
+1. Introduction
+
+ This test suite is contributed by the testing team in the IBM Java Technology
+ Center and used for the conformance test on the XML parsers based on XML 1.0
+ Specification.
+
+2. Test Suite Structure
+
+ This XML conformance test suite consists of 149 valid tests, 51 invalid tests,
+ and 746 not-well-formed tests. The configure files "ibm_oasis_valid.xml",
+ "ibm_oasis_invalid.xml", and "ibm_oasis_not-wf.xml" are located in a directory
+ called "ibm". All test cases are in the directory tree starting from "ibm"
+ as shown below:
+
+ ibm
+ _______________________|_______________________
+ | | |
+ valid invalid not-wf
+ _______|______ ______|_______ ______|_______
+ | | | | | | | | |
+ P01 P02 ...... P89 P28 P29 ...... P76 P01 P02 ...... P89
+ __|__
+ | |
+ out ibm01v01.xml ......
+ |
+ ibm01v01.xml
+
+3. File Naming Style
+
+ The naming for a XML test cases follows the general form ibmXXYZZ.xml where
+ XX is the number of XML production to be tested, Y is the character which
+ indicates the test type (v: valid, i: invalid, n: not-wf), ZZ is the test
+ case order number for the same XML production. For instance, ibm85n98.xml
+ means that it is an IBM not-well-formed test case number 98 for testing XML
+ production 85.
+
+4. Test Coverage
+
+ The XML test cases are designed based on the test patterns created according
+ to the syntax rules and the WFC/VC constraints specified in each XML 1.0
+ production.
+
+ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_valid.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_valid.xml
new file mode 100644
index 0000000000..7544db3519
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/ibm_oasis_valid.xml
@@ -0,0 +1,743 @@
+<!--
+
+ (C) Copyright IBM Corp. 2000 All rights reserved.
+
+ US Government Users Restricted Rights Use, duplication or
+ disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ The program is provided "as is" without any warranty express or
+ implied, including the warranty of non-infringement and the implied
+ warranties of merchantibility and fitness for a particular purpose.
+ IBM will not be liable for any damages suffered by you as a result
+ of using the Program. In no event will IBM be liable for any
+ special, indirect or consequential damages or lost profits even if
+ IBM has been advised of the possibility of their occurrence. IBM
+ will not be liable for any third party claims against you.
+
+-->
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - valid tests">
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 1">
+ <TEST URI="valid/P01/ibm01v01.xml" TYPE="valid" ID="ibm-valid-P01-ibm01v01.xml" ENTITIES="none" SECTIONS="2.1" OUTPUT="valid/P01/out/ibm01v01.xml">
+ Tests with a xml document consisting of <EM>prolog</EM> followed by
+ <EM>element</EM> then <EM>Misc</EM>
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 2">
+ <TEST URI="valid/P02/ibm02v01.xml" TYPE="valid" ID="ibm-valid-P02-ibm02v01.xml" ENTITIES="none" SECTIONS="2.2">
+ This test case covers legal character ranges plus discrete legal characters for production 02.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 3">
+ <TEST URI="valid/P03/ibm03v01.xml" TYPE="valid" ID="ibm-valid-P03-ibm03v01.xml" ENTITIES="none" SECTIONS="2.3">
+ Tests all 4 legal white space characters - #x20 #x9 #xD #xA
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 9">
+ <TEST URI="valid/P09/ibm09v01.xml" TYPE="valid" ID="ibm-valid-P09-ibm09v01.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P09/out/ibm09v01.xml">
+ Empty EntityValue is legal
+ </TEST>
+ <TEST URI="valid/P09/ibm09v02.xml" TYPE="valid" ID="ibm-valid-P09-ibm09v02.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P09/out/ibm09v02.xml">
+ Tests a normal EnitityValue
+ </TEST>
+ <TEST URI="valid/P09/ibm09v03.xml" TYPE="valid" ID="ibm-valid-P09-ibm09v03.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P09/out/ibm09v03.xml">
+ Tests EnitityValue referencing a Parameter Entity
+ </TEST>
+ <TEST URI="valid/P09/ibm09v04.xml" TYPE="valid" ID="ibm-valid-P09-ibm09v04.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P09/out/ibm09v04.xml">
+ Tests EnitityValue referencing a General Entity
+ </TEST>
+ <TEST URI="valid/P09/ibm09v05.xml" TYPE="valid" ID="ibm-valid-P09-ibm09v05.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P09/out/ibm09v05.xml">
+ Tests EnitityValue with combination of GE, PE and text, the GE used is
+ declared in the student.dtd
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 10">
+ <TEST URI="valid/P10/ibm10v01.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v01.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v01.xml">
+ Tests empty AttValue with double quotes as the delimiters
+</TEST>
+ <TEST URI="valid/P10/ibm10v02.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v02.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v02.xml">
+ Tests empty AttValue with single quotes as the delimiters
+</TEST>
+ <TEST URI="valid/P10/ibm10v03.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v03.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v03.xml">
+ Test AttValue with double quotes as the delimiters and single quote inside
+</TEST>
+ <TEST URI="valid/P10/ibm10v04.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v04.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v04.xml">
+ Test AttValue with single quotes as the delimiters and double quote inside
+</TEST>
+ <TEST URI="valid/P10/ibm10v05.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v05.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v05.xml">
+ Test AttValue with a GE reference and double quotes as the delimiters
+</TEST>
+ <TEST URI="valid/P10/ibm10v06.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v06.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v06.xml">
+ Test AttValue with a GE reference and single quotes as the delimiters
+</TEST>
+ <TEST URI="valid/P10/ibm10v07.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v07.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v07.xml">
+ testing AttValue with mixed references and text content in double quotes
+</TEST>
+ <TEST URI="valid/P10/ibm10v08.xml" TYPE="valid" ID="ibm-valid-P10-ibm10v08.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P10/out/ibm10v08.xml">
+ testing AttValue with mixed references and text content in single quotes
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 11">
+ <TEST URI="valid/P11/ibm11v01.xml" TYPE="valid" ID="ibm-valid-P11-ibm11v01.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P11/out/ibm11v01.xml">
+ Tests empty systemliteral using the double quotes
+</TEST>
+ <TEST URI="valid/P11/ibm11v02.xml" TYPE="valid" ID="ibm-valid-P11-ibm11v02.xml" ENTITIES="none" SECTIONS="2.3" OUTPUT="valid/P11/out/ibm11v02.xml">
+ Tests empty systemliteral using the single quotes
+</TEST>
+ <TEST URI="valid/P11/ibm11v03.xml" TYPE="valid" ID="ibm-valid-P11-ibm11v03.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P11/out/ibm11v03.xml">
+ Tests regular systemliteral using the single quotes
+</TEST>
+ <TEST URI="valid/P11/ibm11v04.xml" TYPE="valid" ID="ibm-valid-P11-ibm11v04.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P11/out/ibm11v04.xml">
+ Tests regular systemliteral using the double quotes
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 12">
+ <TEST URI="valid/P12/ibm12v01.xml" TYPE="valid" ID="ibm-valid-P12-ibm12v01.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P12/out/ibm12v01.xml">
+ Tests empty systemliteral using the double quotes
+</TEST>
+ <TEST URI="valid/P12/ibm12v02.xml" TYPE="valid" ID="ibm-valid-P12-ibm12v02.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P12/out/ibm12v02.xml">
+ Tests empty systemliteral using the single quotes
+</TEST>
+ <TEST URI="valid/P12/ibm12v03.xml" TYPE="valid" ID="ibm-valid-P12-ibm12v03.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P12/out/ibm12v03.xml">
+ Tests regular systemliteral using the double quotes
+</TEST>
+ <TEST URI="valid/P12/ibm12v04.xml" TYPE="valid" ID="ibm-valid-P12-ibm12v04.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P12/out/ibm12v04.xml">
+ Tests regular systemliteral using the single quotes
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 13">
+ <TEST URI="valid/P13/ibm13v01.xml" TYPE="valid" ID="ibm-valid-P13-ibm13v01.xml" ENTITIES="parameter" SECTIONS="2.3" OUTPUT="valid/P13/out/ibm13v01.xml">
+ Testing PubidChar with all legal PubidChar in a PubidLiteral
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 14">
+ <TEST URI="valid/P14/ibm14v01.xml" TYPE="valid" ID="ibm-valid-P14-ibm14v01.xml" ENTITIES="none" SECTIONS="2.4" OUTPUT="valid/P14/out/ibm14v01.xml">
+ Testing CharData with empty string
+</TEST>
+ <TEST URI="valid/P14/ibm14v02.xml" TYPE="valid" ID="ibm-valid-P14-ibm14v02.xml" ENTITIES="none" SECTIONS="2.4" OUTPUT="valid/P14/out/ibm14v02.xml">
+ Testing CharData with white space character
+</TEST>
+ <TEST URI="valid/P14/ibm14v03.xml" TYPE="valid" ID="ibm-valid-P14-ibm14v03.xml" ENTITIES="none" SECTIONS="2.4" OUTPUT="valid/P14/out/ibm14v03.xml">
+ Testing CharData with a general text string
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 15">
+ <TEST URI="valid/P15/ibm15v01.xml" TYPE="valid" ID="ibm-valid-P15-ibm15v01.xml" ENTITIES="none" SECTIONS="2.5" OUTPUT="valid/P15/out/ibm15v01.xml">
+ Tests empty comment
+</TEST>
+ <TEST URI="valid/P15/ibm15v02.xml" TYPE="valid" ID="ibm-valid-P15-ibm15v02.xml" ENTITIES="none" SECTIONS="2.5" OUTPUT="valid/P15/out/ibm15v02.xml">
+ Tests comment with regular text
+</TEST>
+ <TEST URI="valid/P15/ibm15v03.xml" TYPE="valid" ID="ibm-valid-P15-ibm15v03.xml" ENTITIES="none" SECTIONS="2.5" OUTPUT="valid/P15/out/ibm15v03.xml">
+ Tests comment with one dash inside
+</TEST>
+ <TEST URI="valid/P15/ibm15v04.xml" TYPE="valid" ID="ibm-valid-P15-ibm15v04.xml" ENTITIES="none" SECTIONS="2.5" OUTPUT="valid/P15/out/ibm15v04.xml">
+ Tests comment with more comprehensive content
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 16">
+ <TEST URI="valid/P16/ibm16v01.xml" TYPE="valid" ID="ibm-valid-P16-ibm16v01.xml" ENTITIES="none" SECTIONS="2.6" OUTPUT="valid/P16/out/ibm16v01.xml">
+ Tests PI definition with only PItarget name and nothing else
+</TEST>
+ <TEST URI="valid/P16/ibm16v02.xml" TYPE="valid" ID="ibm-valid-P16-ibm16v02.xml" ENTITIES="none" SECTIONS="2.6" OUTPUT="valid/P16/out/ibm16v02.xml">
+ Tests PI definition with only PItarget name and a white space
+</TEST>
+ <TEST URI="valid/P16/ibm16v03.xml" TYPE="valid" ID="ibm-valid-P16-ibm16v03.xml" ENTITIES="none" SECTIONS="2.6" OUTPUT="valid/P16/out/ibm16v03.xml">
+ Tests PI definition with PItarget name and text that contains
+ question mark and right angle
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 17">
+ <TEST URI="valid/P17/ibm17v01.xml" TYPE="valid" ID="ibm-valid-P17-ibm17v01.xml" ENTITIES="none" SECTIONS="2.6" OUTPUT="valid/P17/out/ibm17v01.xml">
+ Tests PITarget name
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 18">
+ <TEST URI="valid/P18/ibm18v01.xml" TYPE="valid" ID="ibm-valid-P18-ibm18v01.xml" ENTITIES="none" SECTIONS="2.7" OUTPUT="valid/P18/out/ibm18v01.xml">
+ Tests CDSect with CDStart CData CDEnd
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 19">
+ <TEST URI="valid/P19/ibm19v01.xml" TYPE="valid" ID="ibm-valid-P19-ibm19v01.xml" ENTITIES="none" SECTIONS="2.7" OUTPUT="valid/P19/out/ibm19v01.xml">
+ Tests CDStart
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 20">
+ <TEST URI="valid/P20/ibm20v01.xml" TYPE="valid" ID="ibm-valid-P20-ibm20v01.xml" ENTITIES="none" SECTIONS="2.7" OUTPUT="valid/P20/out/ibm20v01.xml">
+ Tests CDATA with empty string
+</TEST>
+ <TEST URI="valid/P20/ibm20v02.xml" TYPE="valid" ID="ibm-valid-P20-ibm20v02.xml" ENTITIES="none" SECTIONS="2.7" OUTPUT="valid/P20/out/ibm20v02.xml">
+ Tests CDATA with regular content
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 21">
+ <TEST URI="valid/P21/ibm21v01.xml" TYPE="valid" ID="ibm-valid-P21-ibm21v01.xml" ENTITIES="none" SECTIONS="2.7" OUTPUT="valid/P21/out/ibm21v01.xml">
+ Tests CDEnd
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 22">
+ <TEST URI="valid/P22/ibm22v01.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v01.xml">
+ Tests prolog with XMLDecl and doctypedecl
+</TEST>
+ <TEST URI="valid/P22/ibm22v02.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v02.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v02.xml">
+ Tests prolog with doctypedecl
+</TEST>
+ <TEST URI="valid/P22/ibm22v03.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v03.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v03.xml">
+ Tests prolog with Misc doctypedecl
+</TEST>
+ <TEST URI="valid/P22/ibm22v04.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v04.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v04.xml">
+ Tests prolog with doctypedecl Misc
+</TEST>
+ <TEST URI="valid/P22/ibm22v05.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v05.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v05.xml">
+ Tests prolog with XMLDecl Misc doctypedecl
+</TEST>
+ <TEST URI="valid/P22/ibm22v06.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v06.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v06.xml">
+ Tests prolog with XMLDecl doctypedecl Misc
+</TEST>
+ <TEST URI="valid/P22/ibm22v07.xml" TYPE="valid" ID="ibm-valid-P22-ibm22v07.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P22/out/ibm22v07.xml">
+ Tests prolog with XMLDecl Misc doctypedecl Misc
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 23">
+ <TEST URI="valid/P23/ibm23v01.xml" TYPE="valid" ID="ibm-valid-P23-ibm23v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P23/out/ibm23v01.xml">
+ Tests XMLDecl with VersionInfo only
+</TEST>
+ <TEST URI="valid/P23/ibm23v02.xml" TYPE="valid" ID="ibm-valid-P23-ibm23v02.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P23/out/ibm23v02.xml">
+ Tests XMLDecl with VersionInfo EncodingDecl
+</TEST>
+ <TEST URI="valid/P23/ibm23v03.xml" TYPE="valid" ID="ibm-valid-P23-ibm23v03.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P23/out/ibm23v03.xml">
+ Tests XMLDecl with VersionInfo SDDecl
+</TEST>
+ <TEST URI="valid/P23/ibm23v04.xml" TYPE="valid" ID="ibm-valid-P23-ibm23v04.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P23/out/ibm23v04.xml">
+ Tests XMLDecl with VerstionInfo and a trailing whitespace char
+</TEST>
+ <TEST URI="valid/P23/ibm23v05.xml" TYPE="valid" ID="ibm-valid-P23-ibm23v05.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P23/out/ibm23v05.xml">
+ Tests XMLDecl with VersionInfo EncodingDecl SDDecl
+</TEST>
+ <TEST URI="valid/P23/ibm23v06.xml" TYPE="valid" ID="ibm-valid-P23-ibm23v06.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P23/out/ibm23v06.xml">
+ Tests XMLDecl with VersionInfo EncodingDecl SDDecl and a trailing whitespace
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 24">
+ <TEST URI="valid/P24/ibm24v01.xml" TYPE="valid" ID="ibm-valid-P24-ibm24v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P24/out/ibm24v01.xml">
+ Tests VersionInfo with single quote
+</TEST>
+ <TEST URI="valid/P24/ibm24v02.xml" TYPE="valid" ID="ibm-valid-P24-ibm24v02.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P24/out/ibm24v02.xml">
+ Tests VersionInfo with double quote
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 25">
+ <TEST URI="valid/P25/ibm25v01.xml" TYPE="valid" ID="ibm-valid-P25-ibm25v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P25/out/ibm25v01.xml">
+ Tests EQ with =
+</TEST>
+ <TEST URI="valid/P25/ibm25v02.xml" TYPE="valid" ID="ibm-valid-P25-ibm25v02.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P25/out/ibm25v02.xml">
+ Tests EQ with = and spaces on both sides
+</TEST>
+ <TEST URI="valid/P25/ibm25v03.xml" TYPE="valid" ID="ibm-valid-P25-ibm25v03.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P25/out/ibm25v03.xml">
+ Tests EQ with = and space in front of it
+</TEST>
+ <TEST URI="valid/P25/ibm25v04.xml" TYPE="valid" ID="ibm-valid-P25-ibm25v04.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P25/out/ibm25v04.xml">
+ Tests EQ with = and space after it
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 26">
+ <TEST URI="valid/P26/ibm26v01.xml" TYPE="valid" ID="ibm-valid-P26-ibm26v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P26/out/ibm26v01.xml">
+ Tests VersionNum 1.0
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 27">
+ <TEST URI="valid/P27/ibm27v01.xml" TYPE="valid" ID="ibm-valid-P27-ibm27v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P27/out/ibm27v01.xml">
+ Tests Misc with comment
+</TEST>
+ <TEST URI="valid/P27/ibm27v02.xml" TYPE="valid" ID="ibm-valid-P27-ibm27v02.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P27/out/ibm27v02.xml">
+ Tests Misc with PI
+</TEST>
+ <TEST URI="valid/P27/ibm27v03.xml" TYPE="valid" ID="ibm-valid-P27-ibm27v03.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P27/out/ibm27v03.xml">
+ Tests Misc with white spaces
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 28">
+ <TEST URI="valid/P28/ibm28v01.xml" TYPE="valid" ID="ibm-valid-P28-ibm28v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P28/out/ibm28v01.xml">
+ Tests doctypedecl with internal DTD only
+</TEST>
+ <TEST URI="valid/P28/ibm28v02.xml" TYPE="valid" ID="ibm-valid-P28-ibm28v02.xml" ENTITIES="parameter" SECTIONS="2.8" OUTPUT="valid/P28/out/ibm28v02.xml">
+ Tests doctypedecl with external subset and combinations of different markup
+ declarations and PEReferences
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 29">
+ <TEST URI="valid/P29/ibm29v01.xml" TYPE="valid" ID="ibm-valid-P29-ibm29v01.xml" ENTITIES="none" SECTIONS="2.8" OUTPUT="valid/P29/out/ibm29v01.xml">
+ Tests markupdecl with combinations of elementdecl, AttlistDecl,EntityDecl,
+ NotationDecl, PI and comment
+</TEST>
+ <TEST URI="valid/P29/ibm29v02.xml" TYPE="valid" ID="ibm-valid-P29-ibm29v02.xml" ENTITIES="parameter" SECTIONS="2.8" OUTPUT="valid/P29/out/ibm29v02.xml">
+ Tests WFC: PE in internal subset as a positive test
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 30">
+ <TEST URI="valid/P30/ibm30v01.xml" TYPE="valid" ID="ibm-valid-P30-ibm30v01.xml" ENTITIES="parameter" SECTIONS="2.8" OUTPUT="valid/P30/out/ibm30v01.xml">
+ Tests extSubset with extSubsetDecl only in the dtd file
+</TEST>
+ <TEST URI="valid/P30/ibm30v02.xml" TYPE="valid" ID="ibm-valid-P30-ibm30v02.xml" ENTITIES="parameter" SECTIONS="2.8" OUTPUT="valid/P30/out/ibm30v02.xml">
+ Tests extSubset with TextDecl and extSubsetDecl in the dtd file
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 31">
+ <TEST URI="valid/P31/ibm31v01.xml" TYPE="valid" ID="ibm-valid-P31-ibm31v01.xml" ENTITIES="parameter" SECTIONS="2.8" OUTPUT="valid/P31/out/ibm31v01.xml">
+ Tests extSubsetDecl with combinations of markupdecls, conditionalSects,
+ PEReferences and white spaces
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 32">
+ <TEST URI="valid/P32/ibm32v01.xml" TYPE="valid" ID="ibm-valid-P32-ibm32v01.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="valid/P32/out/ibm32v01.xml">
+ Tests VC: Standalone Document Declaration with absent attribute that
+ has default value and standalone is no
+</TEST>
+ <TEST URI="valid/P32/ibm32v02.xml" TYPE="valid" ID="ibm-valid-P32-ibm32v02.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="valid/P32/out/ibm32v02.xml">
+ Tests VC: Standalone Document Declaration with external entity reference
+ and standalone is no
+</TEST>
+ <TEST URI="valid/P32/ibm32v03.xml" TYPE="valid" ID="ibm-valid-P32-ibm32v03.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="valid/P32/out/ibm32v03.xml">
+ Tests VC: Standalone Document Declaration with attribute values that need
+ to be normalized and standalone is no
+</TEST>
+ <TEST URI="valid/P32/ibm32v04.xml" TYPE="valid" ID="ibm-valid-P32-ibm32v04.xml" ENTITIES="parameter" SECTIONS="2.9" OUTPUT="valid/P32/out/ibm32v04.xml">
+ Tests VC: Standalone Document Declaration with whitespace in mixed content
+ and standalone is no
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 33">
+ <TEST URI="valid/P33/ibm33v01.xml" TYPE="valid" ID="ibm-valid-P33-ibm33v01.xml" ENTITIES="none" SECTIONS="2.12" OUTPUT="valid/P33/out/ibm33v01.xml">
+ Tests LanguageID with Langcode - Subcode
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 34">
+ <TEST URI="valid/P34/ibm34v01.xml" TYPE="valid" ID="ibm-valid-P34-ibm34v01.xml" ENTITIES="none" SECTIONS="2.12" OUTPUT="valid/P34/out/ibm34v01.xml">
+ Duplicate Test as ibm33v01.xml
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 35">
+ <TEST URI="valid/P35/ibm35v01.xml" TYPE="valid" ID="ibm-valid-P35-ibm35v01.xml" ENTITIES="none" SECTIONS="2.12" OUTPUT="valid/P35/out/ibm35v01.xml">
+ Tests ISO639Code
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 36">
+ <TEST URI="valid/P36/ibm36v01.xml" TYPE="valid" ID="ibm-valid-P36-ibm36v01.xml" ENTITIES="none" SECTIONS="2.12" OUTPUT="valid/P36/out/ibm36v01.xml">
+ Tests IanaCode
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 37">
+ <TEST URI="valid/P37/ibm37v01.xml" TYPE="valid" ID="ibm-valid-P37-ibm37v01.xml" ENTITIES="none" SECTIONS="2.12" OUTPUT="valid/P37/out/ibm37v01.xml">
+ Tests UserCode
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 38">
+ <TEST URI="valid/P38/ibm38v01.xml" TYPE="valid" ID="ibm-valid-P38-ibm38v01.xml" ENTITIES="none" SECTIONS="2.12" OUTPUT="valid/P38/out/ibm38v01.xml">
+ Tests SubCode
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 39">
+ <TEST URI="valid/P39/ibm39v01.xml" TYPE="valid" ID="ibm-valid-P39-ibm39v01.xml" ENTITIES="none" SECTIONS="3" OUTPUT="valid/P39/out/ibm39v01.xml">
+ Tests element with EmptyElemTag and STag content Etag, also tests the
+ VC: Element Valid with elements that have children, Mixed and ANY
+ contents
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 40">
+ <TEST URI="valid/P40/ibm40v01.xml" TYPE="valid" ID="ibm-valid-P40-ibm40v01.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="valid/P40/out/ibm40v01.xml">
+ Tests STag with possible combinations of its fields, also tests WFC:
+ Unique Att Spec.
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 41">
+ <TEST URI="valid/P41/ibm41v01.xml" TYPE="valid" ID="ibm-valid-P41-ibm41v01.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="valid/P41/out/ibm41v01.xml">
+ Tests Attribute with Name Eq AttValue and VC: Attribute Value Type
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 42">
+ <TEST URI="valid/P42/ibm42v01.xml" TYPE="valid" ID="ibm-valid-P42-ibm42v01.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="valid/P42/out/ibm42v01.xml">
+ Tests ETag with possible combinations of its fields
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 43">
+ <TEST URI="valid/P43/ibm43v01.xml" TYPE="valid" ID="ibm-valid-P43-ibm43v01.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="valid/P43/out/ibm43v01.xml">
+ Tests content with all possible constructs: element, CharData, Reference,
+ CDSect, Comment
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 44">
+ <TEST URI="valid/P44/ibm44v01.xml" TYPE="valid" ID="ibm-valid-P44-ibm44v01.xml" ENTITIES="none" SECTIONS="3.1" OUTPUT="valid/P44/out/ibm44v01.xml">
+ Tests EmptyElemTag with possible combinations of its fields
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 45">
+ <TEST URI="valid/P45/ibm45v01.xml" TYPE="valid" ID="ibm-valid-P45-ibm45v01.xml" ENTITIES="none" SECTIONS="3.2" OUTPUT="valid/P45/out/ibm45v01.xml">
+ Tests both P45 elementDecl and P46 contentspec with possible combinations
+ of their constructs
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 47">
+ <TEST URI="valid/P47/ibm47v01.xml" TYPE="valid" ID="ibm-valid-P47-ibm47v01.xml" ENTITIES="none" SECTIONS="3.2.1" OUTPUT="valid/P47/out/ibm47v01.xml">
+ Tests all possible children,cp,choice,seq patterns in P47,P48,P49,P50
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 49">
+ <TEST URI="valid/P49/ibm49v01.xml" TYPE="valid" ID="ibm-valid-P49-ibm49v01.xml" ENTITIES="parameter" SECTIONS="3.2.1" OUTPUT="valid/P49/out/ibm49v01.xml">
+ Tests VC:Proper Group/PE Nesting with PEs of choices that are properly nested
+ with parenthesized groups in external subsets
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 50">
+ <TEST URI="valid/P50/ibm50v01.xml" TYPE="valid" ID="ibm-valid-P50-ibm50v01.xml" ENTITIES="parameter" SECTIONS="3.2.1" OUTPUT="valid/P50/out/ibm50v01.xml">
+ Tests VC:Proper Group/PE Nesting with PEs of seq that are properly nested
+ with parenthesized groups in external subsets
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 51">
+ <TEST URI="valid/P51/ibm51v01.xml" TYPE="valid" ID="ibm-valid-P51-ibm51v01.xml" ENTITIES="none" SECTIONS="3.2.2" OUTPUT="valid/P51/out/ibm51v01.xml">
+ Tests Mixed with possible combinations of its fields amd VC: No
+ Duplicate Types
+</TEST>
+ <TEST URI="valid/P51/ibm51v02.xml" TYPE="valid" ID="ibm-valid-P51-ibm51v02.xml" ENTITIES="parameter" SECTIONS="3.2.2" OUTPUT="valid/P51/out/ibm51v02.xml">
+ Tests VC:Proper Group/PE Nesting with PEs of Mixed that are properly nested
+ with parenthesized groups in external subsets
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 52">
+ <TEST URI="valid/P52/ibm52v01.xml" TYPE="valid" ID="ibm-valid-P52-ibm52v01.xml" ENTITIES="none" SECTIONS="3.3" OUTPUT="valid/P52/out/ibm52v01.xml">
+ Tests all AttlistDecl and AttDef Patterns in P52 and P53
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 54">
+ <TEST URI="valid/P54/ibm54v01.xml" TYPE="valid" ID="ibm-valid-P54-ibm54v01.xml" ENTITIES="none" SECTIONS="3.3.1">
+ Tests all AttTypes : StringType, TokenizedTypes, EnumeratedTypes in
+ P55,P56,P57,P58,P59. Also tests all DefaultDecls in P60.
+ </TEST>
+ <TEST URI="valid/P54/ibm54v02.xml" TYPE="valid" ID="ibm-valid-P54-ibm54v02.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P54/out/ibm54v02.xml">
+ Tests all AttTypes : StringType, TokenizedType, EnumeratedTypes in
+ P55,P56,P57.
+ </TEST>
+ <TEST URI="valid/P54/ibm54v03.xml" TYPE="valid" ID="ibm-valid-P54-ibm54v03.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P54/out/ibm54v03.xml">
+ Tests AttTypes with StringType in P55.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 55">
+ <TEST URI="valid/P55/ibm55v01.xml" TYPE="valid" ID="ibm-valid-P55-ibm55v01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P55/out/ibm55v01.xml">
+ Tests StringType for P55. The "CDATA" occurs in the StringType for the
+ attribute "att" for the element "a".
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 56">
+ <TEST URI="valid/P56/ibm56v01.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v01.xml">
+ Tests TokenizedType for P56. The "ID", "IDREF", "IDREFS", "ENTITY",
+ "ENTITIES", "NMTOKEN", and "NMTOKENS" occur in the TokenizedType for the
+ attribute "attr".
+ </TEST>
+ <TEST URI="valid/P56/ibm56v02.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v02.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v02.xml">
+ Tests TokenizedType for P56 VC: ID Attribute Default. The value "AC1999" is
+ assigned to the ID attribute "attr" with "#REQUIRED" in the DeaultDecl.
+ </TEST>
+ <TEST URI="valid/P56/ibm56v03.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v03.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v03.xml">
+ Tests TokenizedType for P56 VC: ID Attribute Default. The value "AC1999" is
+ assigned to the ID attribute "attr" with "#IMPLIED" in the DeaultDecl.
+ </TEST>
+ <TEST URI="valid/P56/ibm56v04.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v04.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v04.xml">
+ Tests TokenizedType for P56 VC: ID. The ID attribute "UniqueName" appears
+ only once in the document.
+ </TEST>
+ <TEST URI="valid/P56/ibm56v05.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v05.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v05.xml">
+ Tests TokenizedType for P56 VC: One ID per element type. The element "a" or
+ "b" has only one ID attribute.
+ </TEST>
+ <TEST URI="valid/P56/ibm56v06.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v06.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v06.xml">
+ Tests TokenizedType for P56 VC: IDREF. The IDREF value "AC456" matches the
+ value assigned to an ID attribute "UniqueName".
+ </TEST>
+ <TEST URI="valid/P56/ibm56v07.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v07.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v07.xml">
+ Tests TokenizedType for P56 VC: IDREF. The IDREFS value "AC456 Q123" matches
+ the values assigned to the ID attribute "UniqueName" and "Uname".
+ </TEST>
+ <TEST URI="valid/P56/ibm56v08.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v08.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v08.xml">
+ Tests TokenizedType for P56 VC: Entity Name. The value "image" of the ENTITY
+ attribute "sun" matches the name of an unparsed entity declared.
+ </TEST>
+ <TEST URI="valid/P56/ibm56v09.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v09.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v09.xml">
+ Tests TokenizedType for P56 VC: Name Token. The value of the NMTOKEN attribute
+ "thistoken" matches the Nmtoken production.
+ </TEST>
+ <TEST URI="valid/P56/ibm56v10.xml" TYPE="valid" ID="ibm-valid-P56-ibm56v10.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P56/out/ibm56v10.xml">
+ Tests TokenizedType for P56 VC: Name Token. The value of the NMTOKENS
+ attribute "thistoken" matches the Nmtoken production.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 57">
+ <TEST URI="valid/P57/ibm57v01.xml" TYPE="valid" ID="ibm-valid-P57-ibm57v01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P57/out/ibm57v01.xml">
+ Tests EnumeratedType in the AttType. The attribute "att" has a type (a|b)
+ with the element "a".
+ the
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 58">
+ <TEST URI="valid/P58/ibm58v01.xml" TYPE="valid" ID="ibm-valid-P58-ibm58v01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P58/out/ibm58v01.xml">
+ Tests NotationType for P58. It shows different patterns fro the NOTATION
+ attribute "attr".
+ </TEST>
+ <TEST URI="valid/P58/ibm58v02.xml" TYPE="valid" ID="ibm-valid-P58-ibm58v02.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P58/out/ibm58v02.xml">
+ Tests NotationType for P58: Notation Attributes. The value "base64" of the
+ NOTATION attribute "attr" matches one of the notation names declared.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 59">
+ <TEST URI="valid/P59/ibm59v01.xml" TYPE="valid" ID="ibm-valid-P59-ibm59v01.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P59/out/ibm59v01.xml">
+ Tests Enumeration in the EnumeratedType for P59. It shows different
+ patterns for the Enumeration attribute "attr".
+ </TEST>
+ <TEST URI="valid/P59/ibm59v02.xml" TYPE="valid" ID="ibm-valid-P59-ibm59v02.xml" ENTITIES="none" SECTIONS="3.3.1" OUTPUT="valid/P59/out/ibm59v02.xml">
+ Tests Enumeration for P59 VC: Enumeration. The value "one" of the
+ Enumeration attribute "attr" matches one of the element names declared.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 60">
+ <TEST URI="valid/P60/ibm60v01.xml" TYPE="valid" ID="ibm-valid-P60-ibm60v01.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="valid/P60/out/ibm60v01.xml">
+ Tests DefaultDecl for P60. It shows different options "#REQUIRED", "#FIXED",
+ "#IMPLIED", and default for the attribute "chapter".
+ </TEST>
+ <TEST URI="valid/P60/ibm60v02.xml" TYPE="valid" ID="ibm-valid-P60-ibm60v02.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="valid/P60/out/ibm60v02.xml">
+ Tests DefaultDecl for P60 VC: Required Attribute. In the element "one" and
+ "two" the value of the #REQUIRED attribute "chapter" is given.
+ </TEST>
+ <TEST URI="valid/P60/ibm60v03.xml" TYPE="valid" ID="ibm-valid-P60-ibm60v03.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="valid/P60/out/ibm60v03.xml">
+ Tests DefaultDecl for P60 VC: Fixed Attribute Default. The value of the
+ #FIXED attribute "chapter" is exactly the same as the default value.
+ </TEST>
+ <TEST URI="valid/P60/ibm60v04.xml" TYPE="valid" ID="ibm-valid-P60-ibm60v04.xml" ENTITIES="none" SECTIONS="3.3.2" OUTPUT="valid/P60/out/ibm60v04.xml">
+ Tests DefaultDecl for P60 VC: Attribute Default Legal. The default value
+ specified for the attribute "attr" meets the lexical constraints of the
+ declared attribute type.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 61">
+ <TEST URI="valid/P61/ibm61v01.xml" TYPE="valid" ID="ibm-valid-P61-ibm61v01.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P61/out/ibm61v01.xml">
+ Tests conditionalSect for P61. It takes the option "invludeSect" in the file
+ ibm61v01.dtd.
+ </TEST>
+ <TEST URI="valid/P61/ibm61v02.xml" TYPE="valid" ID="ibm-valid-P61-ibm61v02.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P61/out/ibm61v02.xml">
+ Tests conditionalSect for P61. It takes the option "ignoreSect" in the file
+ ibm61v02.dtd.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 62">
+ <TEST URI="valid/P62/ibm62v01.xml" TYPE="valid" ID="ibm-valid-P62-ibm62v01.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P62/out/ibm62v01.xml">
+ Tests includeSect for P62. The white space is not included before the key
+ word "INCLUDE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P62/ibm62v02.xml" TYPE="valid" ID="ibm-valid-P62-ibm62v02.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P62/out/ibm62v02.xml">
+ Tests includeSect for P62. The white space is not included after the key
+ word "INCLUDE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P62/ibm62v03.xml" TYPE="valid" ID="ibm-valid-P62-ibm62v03.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P62/out/ibm62v03.xml">
+ Tests includeSect for P62. The white space is included after the key
+ word "INCLUDE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P62/ibm62v04.xml" TYPE="valid" ID="ibm-valid-P62-ibm62v04.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P62/out/ibm62v04.xml">
+ Tests includeSect for P62. The white space is included before the key
+ word "INCLUDE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P62/ibm62v05.xml" TYPE="valid" ID="ibm-valid-P62-ibm62v05.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P62/out/ibm62v05.xml">
+ Tests includeSect for P62. The extSubsetDecl is not included.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 63">
+ <TEST URI="valid/P63/ibm63v01.xml" TYPE="valid" ID="ibm-valid-P63-ibm63v01.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P63/out/ibm63v01.xml">
+ Tests ignoreSect for P63. The white space is not included before the key
+ word "IGNORE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P63/ibm63v02.xml" TYPE="valid" ID="ibm-valid-P63-ibm63v02.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P63/out/ibm63v02.xml">
+ Tests ignoreSect for P63. The white space is not included after the key
+ word "IGNORE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P63/ibm63v03.xml" TYPE="valid" ID="ibm-valid-P63-ibm63v03.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P63/out/ibm63v03.xml">
+ Tests ignoreSect for P63. The white space is included after the key
+ word "IGNORE" in the beginning sequence.
+ </TEST>
+ <TEST URI="valid/P63/ibm63v04.xml" TYPE="valid" ID="ibm-valid-P63-ibm63v04.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P63/out/ibm63v04.xml">
+ Tests ignoreSect for P63. The ignireSectContents is included.
+ </TEST>
+ <TEST URI="valid/P63/ibm63v05.xml" TYPE="valid" ID="ibm-valid-P63-ibm63v05.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P63/out/ibm63v05.xml">
+ Tests ignoreSect for P63. The white space is included before and after the
+ key word "IGNORE" in the beginning sequence.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 64">
+ <TEST URI="valid/P64/ibm64v01.xml" TYPE="valid" ID="ibm-valid-P64-ibm64v01.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P64/out/ibm64v01.xml">
+ Tests ignoreSectContents for P64. One "ignore" field is included.
+ </TEST>
+ <TEST URI="valid/P64/ibm64v02.xml" TYPE="valid" ID="ibm-valid-P64-ibm64v02.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P64/out/ibm64v02.xml">
+ Tests ignoreSectContents for P64. Two "ignore" and one "ignoreSectContents"
+ fields are included.
+ </TEST>
+ <TEST URI="valid/P64/ibm64v03.xml" TYPE="valid" ID="ibm-valid-P64-ibm64v03.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P64/out/ibm64v03.xml">
+ Tests ignoreSectContents for P64. Four "ignore" and three
+ "ignoreSectContents" fields are included.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 65">
+ <TEST URI="valid/P65/ibm65v01.xml" TYPE="valid" ID="ibm-valid-P65-ibm65v01.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P65/out/ibm65v01.xml">
+ Tests Ignore for P65. An empty string occurs in the Ignore filed.
+ </TEST>
+ <TEST URI="valid/P65/ibm65v02.xml" TYPE="valid" ID="ibm-valid-P65-ibm65v02.xml" ENTITIES="parameter" SECTIONS="3.4" OUTPUT="valid/P65/out/ibm65v02.xml">
+ Tests Ignore for P65. An string not including the brackets occurs in each of
+ the Ignore filed.
+ </TEST>
+</TESTCASES>
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 66">
+ <TEST URI="valid/P66/ibm66v01.xml" TYPE="valid" ID="ibm-valid-P66-ibm66v01.xml" ENTITIES="none" SECTIONS="4.1" OUTPUT="valid/P66/out/ibm66v01.xml">
+ Tests all legal CharRef's.
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 67">
+ <TEST URI="valid/P67/ibm67v01.xml" TYPE="valid" ID="ibm-valid-P67-ibm67v01.xml" ENTITIES="none" SECTIONS="4.1" OUTPUT="valid/P67/out/ibm67v01.xml">
+ Tests Reference could be EntityRef or CharRef.
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 68">
+ <TEST URI="valid/P68/ibm68v01.xml" TYPE="valid" ID="ibm-valid-P68-ibm68v01.xml" ENTITIES="parameter" SECTIONS="4.1" OUTPUT="valid/P68/out/ibm68v01.xml">
+ Tests P68 VC:Entity Declared with Entities in External Subset
+ , standalone is no
+</TEST>
+ <TEST URI="valid/P68/ibm68v02.xml" TYPE="valid" ID="ibm-valid-P68-ibm68v02.xml" ENTITIES="both" SECTIONS="4.1" OUTPUT="valid/P68/out/ibm68v02.xml">
+ Tests P68 VC:Entity Declared with Entities in External Parameter Entities
+ , standalone is no
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 69">
+ <TEST URI="valid/P69/ibm69v01.xml" TYPE="valid" ID="ibm-valid-P69-ibm69v01.xml" ENTITIES="parameter" SECTIONS="4.1" OUTPUT="valid/P69/out/ibm69v01.xml">
+ Tests P68 VC:Entity Declared with Parameter Entities in External Subset
+ , standalone is no
+</TEST>
+ <TEST URI="valid/P69/ibm69v02.xml" TYPE="valid" ID="ibm-valid-P69-ibm69v02.xml" ENTITIES="both" SECTIONS="4.1" OUTPUT="valid/P69/out/ibm69v02.xml">
+ Tests P68 VC:Entity Declared with Parameter Entities in External Parameter
+ Entities, standalone is no
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 70">
+ <TEST URI="valid/P70/ibm70v01.xml" TYPE="valid" ID="ibm-valid-P70-ibm70v01.xml" ENTITIES="parameter" SECTIONS="4.2" OUTPUT="valid/P70/out/ibm70v01.xml">
+ Tests all legal GEDecls and PEDecls constructs derived from P70-76
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 78">
+ <TEST URI="valid/P78/ibm78v01.xml" TYPE="valid" ID="ibm-valid-P78-ibm78v01.xml" ENTITIES="general" SECTIONS="4.3.2" OUTPUT="valid/P78/out/ibm78v01.xml">
+ Tests ExtParsedEnt, also TextDecl in P77 and EncodingDecl in P80
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 79">
+ <TEST URI="valid/P79/ibm79v01.xml" TYPE="valid" ID="ibm-valid-P79-ibm79v01.xml" ENTITIES="parameter" SECTIONS="4.3.2">
+ Tests extPE
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 82">
+ <TEST URI="valid/P82/ibm82v01.xml" TYPE="valid" ID="ibm-valid-P82-ibm82v01.xml" ENTITIES="none" SECTIONS="4.7" OUTPUT="valid/P82/out/ibm82v01.xml">
+ Tests NotationDecl in P82 and PublicID in P83
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 85">
+ <TEST URI="valid/P85/ibm85v01.xml" TYPE="valid" ID="ibm-valid-P85-ibm85v01.xml" ENTITIES="none" SECTIONS="B.">
+ This test case covers 149 legal character ranges plus 51 single legal
+ characters for BaseChar in P85 using a PI target Name
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 86">
+ <TEST URI="valid/P86/ibm86v01.xml" TYPE="valid" ID="ibm-valid-P86-ibm86v01.xml" ENTITIES="none" SECTIONS="B.">
+ This test case covers 2 legal character ranges plus 1 single legal
+ characters for IdeoGraphic in P86 using a PI target Name
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 87">
+ <TEST URI="valid/P87/ibm87v01.xml" TYPE="valid" ID="ibm-valid-P87-ibm87v01.xml" ENTITIES="none" SECTIONS="B.">
+ This test case covers 65 legal character ranges plus 30 single legal
+ characters for CombiningChar in P87 using a PI target Name
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 88">
+ <TEST URI="valid/P88/ibm88v01.xml" TYPE="valid" ID="ibm-valid-P88-ibm88v01.xml" ENTITIES="none" SECTIONS="B.">
+ This test case covers 15 legal character ranges for Digit in P88 using a PI
+ target Name
+</TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 89">
+ <TEST URI="valid/P89/ibm89v01.xml" TYPE="valid" ID="ibm-valid-P89-ibm89v01.xml" ENTITIES="none" SECTIONS="B.">
+ This test case covers 3 legal character ranges plus 8 single legal
+ characters for Extender in P89 using a PI target Name
+</TEST>
+</TESTCASES>
+
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Entries
new file mode 100644
index 0000000000..bc0025d2ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Entries
@@ -0,0 +1,15 @@
+D/P28////
+D/P32////
+D/P39////
+D/P41////
+D/P45////
+D/P49////
+D/P50////
+D/P51////
+D/P56////
+D/P58////
+D/P59////
+D/P60////
+D/P68////
+D/P69////
+D/P76////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Repository
new file mode 100644
index 0000000000..27ee1f3e38
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Entries
new file mode 100644
index 0000000000..521a5a105c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm28i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Repository
new file mode 100644
index 0000000000..c0716b8b9b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P28
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/ibm28i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/ibm28i01.xml
new file mode 100644
index 0000000000..f9ea91cfb5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/ibm28i01.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE tiger [
+ <!ELEMENT tiger EMPTY>
+]>
+<!-- This against VC of P28. The Name in the document type declaration
+ does not match the element type of the root element. -->
+<animal/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Entries
new file mode 100644
index 0000000000..df6f903ed9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm28i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Repository
new file mode 100644
index 0000000000..24caa1588b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P28/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/ibm28i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/ibm28i01.xml
new file mode 100644
index 0000000000..c712ea7861
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P28/out/ibm28i01.xml
@@ -0,0 +1 @@
+<animal></animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Entries
new file mode 100644
index 0000000000..cf97c64551
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm32i01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32i03.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32i04.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32i04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Repository
new file mode 100644
index 0000000000..b6ce33a0ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P32
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.dtd
new file mode 100644
index 0000000000..4828791469
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.dtd
@@ -0,0 +1 @@
+<!ATTLIST animal color CDATA #FIXED "yellow"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.xml
new file mode 100644
index 0000000000..68ca044d8e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone="yes" ?>
+<!DOCTYPE animal SYSTEM "ibm32i01.dtd" [
+ <!ELEMENT animal EMPTY>
+]>
+<!-- This is against VC: Standalone Document Declaration in P32
+ The standalone document declaration has the value "yes", there is an external
+ markup declaration of attributes with default values, and the associated
+ element appears in the document with specified values for those attributes.
+-->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.dtd
new file mode 100644
index 0000000000..26743b6836
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.dtd
@@ -0,0 +1 @@
+<!ATTLIST animal class NMTOKEN #IMPLIED> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.xml
new file mode 100644
index 0000000000..dbed9bce8c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i03.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" standalone="yes" ?>
+<!DOCTYPE animal SYSTEM "ibm32i03.dtd" [
+ <!ELEMENT animal EMPTY>
+]>
+<!-- This is against VC: Standalone Document Declaration in P32
+ The standalone document declaration has the value "yes", there is an external
+ markup declaration of attributes with values containing character reference.
+-->
+<animal class=" NMTOKEN_with_leading_and_trailing_space "/>
+
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.dtd
new file mode 100644
index 0000000000..358c3c7455
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.dtd
@@ -0,0 +1,4 @@
+<!ELEMENT animal (a,b,c)>
+<!ELEMENT a ANY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.xml
new file mode 100644
index 0000000000..bc2739078e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/ibm32i04.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' standalone='yes' ?>
+<!DOCTYPE animal SYSTEM "ibm32i04.dtd" [
+ <!ATTLIST animal xml:space (default|preserve) 'preserve'>
+]>
+<!-- This is against VC: Standalone Document Declaration in P32
+ The standalone document declaration has the value "yes", there is an
+ external markup declaration of element with a element only content type, and
+ white space occurs directly within the mixed content.
+-->
+<animal><a>This is a
+
+yellow tiger</a> <b/>
+<c/>
+
+</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Entries
new file mode 100644
index 0000000000..23b45ac62a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm32i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32i04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Repository
new file mode 100644
index 0000000000..cab81954b6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P32/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i01.xml
new file mode 100644
index 0000000000..2ec4ca8d75
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i01.xml
@@ -0,0 +1 @@
+<animal color="yellow"></animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i03.xml
new file mode 100644
index 0000000000..42364d84a7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i03.xml
@@ -0,0 +1 @@
+<animal class="NMTOKEN_with_leading_and_trailing_space"></animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i04.xml
new file mode 100644
index 0000000000..9cc8454634
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P32/out/ibm32i04.xml
@@ -0,0 +1 @@
+<animal xml:space="preserve"><a>This is a &#10;&#10;yellow tiger</a> <b></b>&#10;<c></c>&#10;&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Entries
new file mode 100644
index 0000000000..20c16488be
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm39i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm39i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm39i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm39i04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Repository
new file mode 100644
index 0000000000..15e4f85b56
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P39
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i01.xml
new file mode 100644
index 0000000000..1ffa0bb5d9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i01.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (a,b)>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT b (#PCDATA|c)* >
+ <!ELEMENT c ANY>
+
+]>
+<!--* EMPTY element a has content *-->
+<root><a>should not have content here</a><b>
+ <c></c>
+ content of b element
+</b></root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i02.xml
new file mode 100644
index 0000000000..cbf01fd15b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i02.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (a,b)>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT b (#PCDATA|c)* >
+ <!ELEMENT c ANY>
+
+]>
+<!--* root element have text content *-->
+<root>
+ root can't have text content
+<a></a><b>
+ <c></c>
+ content of b element
+</b></root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i03.xml
new file mode 100644
index 0000000000..f50afab74b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i03.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (a,b)>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT b (#PCDATA|c)* >
+ <!ELEMENT c ANY>
+]>
+<!--* illgal element in b's Mixed content *-->
+<root><a/><b>
+ <c></c>
+ content of b element
+ <a/>
+ could not have 'a' as 'b's content
+</b></root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i04.xml
new file mode 100644
index 0000000000..192447a700
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/ibm39i04.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (a,b)>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT b (#PCDATA|c)* >
+ <!ELEMENT c ANY>
+ <!ELEMENT f EMPTY>
+]>
+<!--* element c has undeclared element as its ANY content *-->
+<root><a/><b>
+ <c><f/></c>
+ content of b element
+ <c>
+ <d>not declared in dtd</d>
+ </c>
+</b></root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Entries
new file mode 100644
index 0000000000..e658de736d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm39i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm39i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm39i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm39i04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Repository
new file mode 100644
index 0000000000..a169f61827
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P39/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i01.xml
new file mode 100644
index 0000000000..35bbc641ac
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i01.xml
@@ -0,0 +1 @@
+<root><a>should not have content here</a><b>&#10; <c></c> &#10; content of b element&#10;</b></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i02.xml
new file mode 100644
index 0000000000..2c21f47f2d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i02.xml
@@ -0,0 +1 @@
+<root>&#10; root can't have text content&#10;<a></a><b>&#10; <c></c> &#10; content of b element&#10;</b></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i03.xml
new file mode 100644
index 0000000000..a5a526c983
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i03.xml
@@ -0,0 +1 @@
+<root><a></a><b>&#10; <c></c> &#10; content of b element&#10; <a></a>&#10; could not have 'a' as 'b's content&#10;</b></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i04.xml
new file mode 100644
index 0000000000..dd152f76b8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P39/out/ibm39i04.xml
@@ -0,0 +1 @@
+<root><a></a><b>&#10; <c><f></f></c> &#10; content of b element&#10; <c>&#10; <d>not declared in dtd</d>&#10; </c>&#10;</b></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Entries
new file mode 100644
index 0000000000..a1ea2b1200
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm41i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Repository
new file mode 100644
index 0000000000..e742ba96c5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P41
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i01.xml
new file mode 100644
index 0000000000..05d67ade19
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA|b)* >
+ <!ELEMENT b (#PCDATA) >
+ <!ATTLIST b attr2 (abc|def) "abc">
+ <!ATTLIST b attr3 CDATA #FIXED "fixed">
+]>
+<root>
+ <b attr1="value1" attr2="def" attr3="fixed">attr1 not declared</b>
+</root>
+<!--* testing VC:Attribute Value Type *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i02.xml
new file mode 100644
index 0000000000..8c3d74e1b7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/ibm41i02.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (PCDATA|b)* >
+ <!ELEMENT b (#PCDATA) >
+ <!ATTLIST b attr1 CDATA #REQUIRED>
+ <!ATTLIST b attr2 (abc|def) "abc">
+ <!ATTLIST b attr3 CDATA #FIXED "fixed">
+]>
+<root>
+ <b attr1="value1" attr2="abc" attr3="shoudbefixed">attr3 value not fixed</b>
+</root>
+<!--* testing P41 VC: AtributeValueType*-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Entries
new file mode 100644
index 0000000000..22fcf94509
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm41i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Repository
new file mode 100644
index 0000000000..1243a92e84
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P41/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i01.xml
new file mode 100644
index 0000000000..8c75abccfa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i01.xml
@@ -0,0 +1 @@
+<root>&#10; <b attr1="value1" attr2="def" attr3="fixed">attr1 not declared</b>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i02.xml
new file mode 100644
index 0000000000..3bdaa30e18
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P41/out/ibm41i02.xml
@@ -0,0 +1 @@
+<root>&#10; <b attr1="value1" attr2="abc" attr3="shoudbefixed">attr3 value not fixed</b>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Entries
new file mode 100644
index 0000000000..c4b20cf588
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm45i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Repository
new file mode 100644
index 0000000000..b784a8ce8d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P45
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/ibm45i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/ibm45i01.xml
new file mode 100644
index 0000000000..6526b4ad5e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/ibm45i01.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA|b)* >
+ <!ELEMENT b EMPTY>
+ <!ELEMENT not_unique ANY>
+ <!ELEMENT not_unique EMPTY>
+ <!ELEMENT not_unique (b,b) >
+ <!ELEMENT unique. ANY>
+ <!ATTLIST b attr1 CDATA #IMPLIED>
+ <!ATTLIST b attr2 CDATA #IMPLIED>
+ <!ATTLIST b attr3 CDATA #IMPLIED>
+]>
+<root>
+ <b/>without white space
+ <b /> with a white space
+ <b attr1="value1" />
+ <b attr1="value1" attr2="value2" attr3 = "value3"/>
+</root>
+<!--* a invalid test: testing P45 VC unique element type decl *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Entries
new file mode 100644
index 0000000000..5aca32db59
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm45i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Repository
new file mode 100644
index 0000000000..cd03a70086
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P45/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/ibm45i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/ibm45i01.xml
new file mode 100644
index 0000000000..a107534606
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P45/out/ibm45i01.xml
@@ -0,0 +1 @@
+<root>&#10; <b></b>without white space&#10; <b></b> with a white space&#10; <b attr1="value1"></b>&#10; <b attr1="value1" attr2="value2" attr3="value3"></b>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Entries
new file mode 100644
index 0000000000..ee5dde8fc0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm49i01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm49i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm49i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Repository
new file mode 100644
index 0000000000..71bda1a417
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P49
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.dtd
new file mode 100644
index 0000000000..9fefbf5253
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.dtd
@@ -0,0 +1,11 @@
+<!ELEMENT a EMPTY>
+<!ELEMENT b (#PCDATA|c)* >
+<!ELEMENT c ANY>
+
+<!--* open and close parenthesis are in different PE replace Texts *-->
+<!ENTITY % choice1 "(a|b">
+<!ENTITY % choice2 "|c)">
+<!ELEMENT child1 %choice1;%choice2; >
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.xml
new file mode 100644
index 0000000000..f84452e18b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "ibm49i01.dtd" [
+ <!ELEMENT root (a,b)>
+]>
+<root><a/><b>
+ <c></c >
+ content of b element
+</b></root>
+<!--* a invalid test: tests VC:Proper Group/PE Nesting in P49 *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i02.xml
new file mode 100644
index 0000000000..260fa82c8d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/ibm49i02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "ibm49i02.dtd" [
+ <!ELEMENT root (a,b)>
+]>
+<root><a/><b>
+ <c></c >
+ content of b element
+</b></root>
+<!--* a invalid test: tests VC:Proper Group/PE Nesting in P49 *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Entries
new file mode 100644
index 0000000000..2b68a7fff1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm49i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm49i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Repository
new file mode 100644
index 0000000000..132c28e67a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P49/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i01.xml
new file mode 100644
index 0000000000..fb492e28e4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i01.xml
@@ -0,0 +1 @@
+<root><a></a><b>&#10; <c></c>&#10; content of b element&#10;</b></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i02.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P49/out/ibm49i02.xml
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Entries
new file mode 100644
index 0000000000..07140599c4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm50i01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm50i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Repository
new file mode 100644
index 0000000000..a50ce9bca9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P50
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.dtd
new file mode 100644
index 0000000000..1439a1738f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.dtd
@@ -0,0 +1,10 @@
+<!ELEMENT a EMPTY>
+<!ELEMENT b (#PCDATA|c)* >
+<!ELEMENT c ANY>
+
+<!--* PE replace Text has no closing parentheses *-->
+<!ENTITY % choice1 "(a,b,c">
+<!ELEMENT child1 (%choice1;)|c) >
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.xml
new file mode 100644
index 0000000000..33def44e03
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/ibm50i01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "ibm50i01.dtd" [
+ <!ELEMENT root (a,b)>
+]>
+<root><a/><b>
+ <c></c >
+ content of b element
+</b></root>
+<!--* a invalid test: tests VC:Proper Group/PE Nesting in P50 *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Entries
new file mode 100644
index 0000000000..f7901d6aeb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm50i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Repository
new file mode 100644
index 0000000000..8829c67195
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P50/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/ibm50i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/ibm50i01.xml
new file mode 100644
index 0000000000..fb492e28e4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P50/out/ibm50i01.xml
@@ -0,0 +1 @@
+<root><a></a><b>&#10; <c></c>&#10; content of b element&#10;</b></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Entries
new file mode 100644
index 0000000000..e90c6600b3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm51i01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51i03.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Repository
new file mode 100644
index 0000000000..ab79e8f8e5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P51
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.dtd
new file mode 100644
index 0000000000..1602ff3afb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.dtd
@@ -0,0 +1,16 @@
+<!ELEMENT a (#PCDATA)* >
+<!ELEMENT b (#PCDATA) >
+<!ELEMENT c ( #PCDATA)*>
+
+<!ELEMENT d (#PCDATA|c)* >
+<!--* PEs are not properly nested *-->
+<!--* this one miss closing parenthesis *-->
+<!ENTITY % mixed1 "(#PCDATA|">
+<!ENTITY % mixed2 "c|b|a)*">
+<!ELEMENT e %mixed1;%mixed2; >
+<!ELEMENT f (#PCDATA| c)* >
+<!ELEMENT g ( #PCDATA) >
+<!ELEMENT h (#PCDATA )>
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.xml
new file mode 100644
index 0000000000..e77859811a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "ibm51i01.dtd" [
+ <!ELEMENT root ANY>
+]>
+<root>
+ <a> Element type a </a>
+ <b> Element type b </b>
+</root>
+<!--* a invalid test: tests P51 VC: Proper Group/PE Nesting *--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.dtd
new file mode 100644
index 0000000000..61f882fb65
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.dtd
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.xml
new file mode 100644
index 0000000000..8c4b88935e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/ibm51i03.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root ANY>
+ <!ELEMENT a (#PCDATA)* >
+ <!ELEMENT b (#PCDATA) >
+ <!ELEMENT c ( #PCDATA)*>
+ <!ELEMENT d (#PCDATA|c)* >
+ <!--* Duplicate element types in Mixed content decl *-->
+ <!ELEMENT e (#PCDATA|a|a|b|c)* >
+]>
+<root>
+ <a> Element type a </a>
+ <b> Element type b </b>
+</root>
+<!--* a invalid test: tests P51 VC: No Duplicate Types *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Entries
new file mode 100644
index 0000000000..78d821818f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm51i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Repository
new file mode 100644
index 0000000000..2251dcd77f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P51/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i01.xml
new file mode 100644
index 0000000000..078934e1d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i01.xml
@@ -0,0 +1 @@
+<root>&#10; <a> Element type a </a>&#10; <b> Element type b </b>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i02.xml
new file mode 100644
index 0000000000..078934e1d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i02.xml
@@ -0,0 +1 @@
+<root>&#10; <a> Element type a </a>&#10; <b> Element type b </b>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i03.xml
new file mode 100644
index 0000000000..078934e1d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P51/out/ibm51i03.xml
@@ -0,0 +1 @@
+<root>&#10; <a> Element type a </a>&#10; <b> Element type b </b>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Entries
new file mode 100644
index 0000000000..0d1af5d13a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Entries
@@ -0,0 +1,18 @@
+/ibm56i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i11.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i12.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i13.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i14.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i15.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i16.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i17.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i18.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Repository
new file mode 100644
index 0000000000..0e6f194bb3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P56
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i01.xml
new file mode 100644
index 0000000000..830599170c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(negative Test)-->
+<!DOCTYPE tokenizer
+ [
+ <!ELEMENT tokenizer ANY>
+ <!ATTLIST tokenizer UniqueName ID #REQUIRED>
+ ]>
+<tokenizer UniqueName = "@c999">
+This is a negative test for validity constraints
+the value of the attribute with a type ID does not match the Name production
+</tokenizer> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i02.xml
new file mode 100644
index 0000000000..b7c5af55d0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i02.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(negative Test)-->
+<!DOCTYPE tokenizer
+ [
+ <!ELEMENT tokenizer ANY>
+ <!ELEMENT b EMPTY>
+ <!ATTLIST b attr ID #REQUIRED>
+ <!ATTLIST tokenizer UniqueName ID #REQUIRED>
+ ]>
+<tokenizer UniqueName = "Ac999">
+<b attr = "Ac999"></b>
+This is a negative test for validity constraints
+the value of the attribute with a type ID appears more than once in the XML document
+</tokenizer>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i03.xml
new file mode 100644
index 0000000000..85a34a2e74
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i03.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative Test)-->
+<!DOCTYPE tokenizer
+ [
+ <!ELEMENT tokenizer ANY>
+ <!ATTLIST tokenizer UniqueName ID #FIXED "AC1999">
+ ]>
+<tokenizer>
+This is a Negative validity test for ID Attribute Default.
+Giving the attribute default as #FIXED
+</tokenizer>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i05.xml
new file mode 100644
index 0000000000..fb555aa080
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i05.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative Test)-->
+<!DOCTYPE tokenizer
+ [
+ <!ELEMENT tokenizer ANY>
+ <!ATTLIST tokenizer UniqueName ID "BOGUS">
+ ]>
+<tokenizer UniqueName = "AC1999">
+This is a Negative validity test for ID Attribute Default.
+Giving the attibute default as a const string
+</tokenizer>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i06.xml
new file mode 100644
index 0000000000..9ef0fa3382
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i06.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative Test)-->
+<!DOCTYPE tokenizer
+ [
+ <!ELEMENT tokenizer ANY>
+ <!ELEMENT a EMPTY>
+ <!ATTLIST a first ID #REQUIRED>
+ <!ATTLIST a second ID #REQUIRED>
+ ]>
+<tokenizer>
+<a first = "AC1999" second="BC1999"></a>
+This is a Negative validity test for ID.
+There is more than attribute of type ID for the element a
+
+</tokenizer>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i07.xml
new file mode 100644
index 0000000000..5724d47156
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i07.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative Test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT id EMPTY>
+ <!ELEMENT idref EMPTY>
+ <!ATTLIST id UniqueName ID #REQUIRED>
+ <!ATTLIST idref reference IDREF #IMPLIED>
+ ]>
+<test>
+<id UniqueName = "AC456"></id>
+<idref reference = "@456"></idref>
+Negative test for validity constraint of IDREF.
+In an attribute decl, values of type IDREF does not match the name production
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i08.xml
new file mode 100644
index 0000000000..2538a2c7be
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i08.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative Test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT id EMPTY>
+ <!ELEMENT idref EMPTY>
+ <!ATTLIST id UniqueName ID #REQUIRED>
+ <!ATTLIST idref reference IDREF #IMPLIED>
+ ]>
+<test>
+<id UniqueName = "AC456"></id>
+<idref reference = "BC456"></idref>
+Negative test for validity constraint of IDREF.
+In an attribute decl, values of type IDREF match the name production and
+IDREF value does not match the value assigned to any ID attribute somewhere
+in the XML document.
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i09.xml
new file mode 100644
index 0000000000..e2ae11a8f2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i09.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative Test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT id1 EMPTY>
+ <!ELEMENT id2 EMPTY>
+ <!ELEMENT idrefs EMPTY>
+ <!ATTLIST id1 UniqueName ID #REQUIRED>
+ <!ATTLIST id2 UName ID #IMPLIED>
+ <!ATTLIST idrefs reference IDREFS #IMPLIED>
+ ]>
+<test>
+<id1 UniqueName = "AC456"></id1>
+<id2 UName = "BC567"></id2>
+<idrefs reference = "AC456 #567"></idrefs>
+Negative test for validity constraint of IDREFS.
+In an attribute decl, values of type IDREFS does not match the name production
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i10.xml
new file mode 100644
index 0000000000..962d4661d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i10.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative Test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT id1 EMPTY>
+ <!ELEMENT id2 EMPTY>
+ <!ELEMENT idrefs EMPTY>
+ <!ATTLIST id1 UniqueName ID #REQUIRED>
+ <!ATTLIST id2 UName ID #IMPLIED>
+ <!ATTLIST idrefs reference IDREFS #IMPLIED>
+ ]>
+<test>
+<id1 UniqueName = "BC456"></id1>
+<id2 UName = "AC567"></id2>
+<idrefs reference = "EF456 DE355"></idrefs>
+Negative test for validity constraint of IDREFS.
+In an attribute decl, values of type IDREFS match the name production
+but IDREFS value do not match the values assigned to one or more ID attributes
+somewhere in the XML document
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i11.xml
new file mode 100644
index 0000000000..f2d88c5542
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i11.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT landscape EMPTY>
+ <!ENTITY image SYSTEM "d:\testspec\images\sunset.gif" NDATA gif>
+ <!ATTLIST landscape sun ENTITY #IMPLIED>
+]>
+<test>
+<landscape sun = "ima ge"></landscape>
+In the attribute decl, values of type ENTITY do not match the Name production
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i12.xml
new file mode 100644
index 0000000000..79cc40a393
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i12.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT landscape EMPTY>
+ <!ENTITY image SYSTEM "d:\testspec\images\sunset.gif" NDATA gif>
+ <!ATTLIST landscape sun ENTITY #IMPLIED>
+]>
+<test>
+<landscape sun = "notimage"></landscape>
+In the attribute decl, values of type ENTITY match the Name production
+but does not match the name of any entity declared in the DTD
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i13.xml
new file mode 100644
index 0000000000..c6818fa4bc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i13.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT landscape EMPTY>
+ <!ENTITY parsedentity SYSTEM "ibm56iv01.xml" >
+ <!ATTLIST landscape sun ENTITY #IMPLIED>
+]>
+<test>
+<landscape sun = "parsedentity"></landscape>
+In an attribute declaration, values of type ENTITY match the Name production and the ENTITY value
+matches the name of a parsed entity declared in the DTD.
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i14.xml
new file mode 100644
index 0000000000..9b4b3434f6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i14.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT landscape EMPTY>
+ <!ENTITY image1 SYSTEM "d:\testspec\images\sunset.gif" NDATA gif>
+ <!ENTITY image2 SYSTEM "d:\testspec\images\frontpage.gif" NDATA gif>
+ <!ATTLIST landscape sun ENTITIES #IMPLIED>
+]>
+<test>
+<landscape sun = "#image1 @image"></landscape>
+In an attribute declaration, values of type ENTITIES do not match the Name production.
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i15.xml
new file mode 100644
index 0000000000..a8ebc8c816
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i15.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT landscape EMPTY>
+ <!ENTITY image1 SYSTEM "d:\testspec\images\sunset.gif" NDATA gif>
+ <!ENTITY image2 SYSTEM "d:\testspec\images\frontpag.gif" NDATA gif>
+ <!ATTLIST landscape sun ENTITIES #IMPLIED>
+]>
+<test>
+<landscape sun = "image3 image4"></landscape>
+In an attribute declaration, values of type ENTITIES match the Name production and the ENTITIES value
+does not match one or more names of entities declared in the DTD.
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i16.xml
new file mode 100644
index 0000000000..3b4579fe42
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i16.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT landscape EMPTY>
+ <!ENTITY parsedentity1 SYSTEM "ibm56iv01.xml">
+ <!ENTITY parsedentity2 SYSTEM "ibm56iv02.xml">
+ <!ATTLIST landscape sun ENTITIES #IMPLIED>
+]>
+<test>
+<landscape sun = "parsedentity1 parsedentity2"></landscape>
+In an attribute declaration, values of type ENTITIES match the Name production and the ENTITIES value
+matches one or more names of parsed entities declared in the DTD. .
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i17.xml
new file mode 100644
index 0000000000..01162dfabd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i17.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative Test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT nametoken EMPTY>
+ <!ATTLIST nametoken thistoken NMTOKEN #IMPLIED>
+]>
+<test>
+<nametoken thistoken = "x : image"></nametoken>
+In an attribute declaration, values of type NMTOKEN does not match the Nmtoken production
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i18.xml
new file mode 100644
index 0000000000..7ee173ba7f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/ibm56i18.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Negative Test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT nametokens EMPTY>
+ <!ATTLIST nametokens thistoken NMTOKENS #IMPLIED>
+]>
+<test>
+<nametokens thistoken = "@lang y: #country"></nametokens>
+In an attribute declaration, values of type NMTOKENS does not match the Nmtokens production
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Entries
new file mode 100644
index 0000000000..8a10963a89
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Entries
@@ -0,0 +1,18 @@
+/ibm56i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i11.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i12.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i13.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i14.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i15.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i16.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i17.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56i18.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Repository
new file mode 100644
index 0000000000..0551a83123
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P56/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i01.xml
new file mode 100644
index 0000000000..b25807811b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i01.xml
@@ -0,0 +1 @@
+<tokenizer UniqueName="@c999">&#10;This is a negative test for validity constraints&#10;the value of the attribute with a type ID does not match the Name production&#10;</tokenizer> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i02.xml
new file mode 100644
index 0000000000..c6fc2937c1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i02.xml
@@ -0,0 +1 @@
+<tokenizer UniqueName="Ac999">&#10;<b attr="Ac999"></b>&#10;This is a negative test for validity constraints&#10;the value of the attribute with a type ID appears more than once in the XML document&#10;</tokenizer> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i03.xml
new file mode 100644
index 0000000000..0fd8f98fc2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i03.xml
@@ -0,0 +1 @@
+<tokenizer UniqueName="AC1999">&#10;This is a Negative validity test for ID Attribute Default.&#10;Giving the attribute default as #FIXED&#10;</tokenizer> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i05.xml
new file mode 100644
index 0000000000..6da02f3935
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i05.xml
@@ -0,0 +1 @@
+<tokenizer UniqueName="AC1999">&#10;This is a Negative validity test for ID Attribute Default.&#10;Giving the attibute default as a const string&#10;</tokenizer> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i06.xml
new file mode 100644
index 0000000000..30e5228f2d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i06.xml
@@ -0,0 +1 @@
+<tokenizer>&#10;<a first="AC1999" second="BC1999"></a>&#10;This is a Negative validity test for ID.&#10;There is more than attribute of type ID for the element a&#10;&#10;</tokenizer> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i07.xml
new file mode 100644
index 0000000000..3903dd4ef3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i07.xml
@@ -0,0 +1 @@
+<test>&#10;<id UniqueName="AC456"></id>&#10;<idref reference="@456"></idref>&#10;Negative test for validity constraint of IDREF.&#10;In an attribute decl, values of type IDREF does not match the name production&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i08.xml
new file mode 100644
index 0000000000..7759a5e47c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i08.xml
@@ -0,0 +1 @@
+<test>&#10;<id UniqueName="AC456"></id>&#10;<idref reference="BC456"></idref>&#10;Negative test for validity constraint of IDREF.&#10;In an attribute decl, values of type IDREF match the name production and&#10;IDREF value does not match the value assigned to any ID attribute somewhere&#10;in the XML document.&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i09.xml
new file mode 100644
index 0000000000..426e94baa5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i09.xml
@@ -0,0 +1 @@
+<test>&#10;<id1 UniqueName="AC456"></id1>&#10;<id2 UName="BC567"></id2>&#10;<idrefs reference="AC456 #567"></idrefs>&#10;Negative test for validity constraint of IDREFS.&#10;In an attribute decl, values of type IDREFS does not match the name production&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i10.xml
new file mode 100644
index 0000000000..59005d4083
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i10.xml
@@ -0,0 +1 @@
+<test>&#10;<id1 UniqueName="BC456"></id1>&#10;<id2 UName="AC567"></id2>&#10;<idrefs reference="EF456 DE355"></idrefs>&#10;Negative test for validity constraint of IDREFS.&#10;In an attribute decl, values of type IDREFS match the name production&#10;but IDREFS value do not match the values assigned to one or more ID attributes&#10;somewhere in the XML document&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i11.xml
new file mode 100644
index 0000000000..0bc9ddda62
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i11.xml
@@ -0,0 +1 @@
+<test>&#10;<landscape sun="ima ge"></landscape>&#10;In the attribute decl, values of type ENTITY do not match the Name production&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i12.xml
new file mode 100644
index 0000000000..e5a0c0eeaf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i12.xml
@@ -0,0 +1 @@
+<test>&#10;<landscape sun="notimage"></landscape>&#10;In the attribute decl, values of type ENTITY match the Name production&#10;but does not match the name of any entity declared in the DTD&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i13.xml
new file mode 100644
index 0000000000..0292fd28cf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i13.xml
@@ -0,0 +1 @@
+<test>&#10;<landscape sun="parsedentity"></landscape>&#10;In an attribute declaration, values of type ENTITY match the Name production and the ENTITY value&#10;matches the name of a parsed entity declared in the DTD. &#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i14.xml
new file mode 100644
index 0000000000..8a6c0a061a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i14.xml
@@ -0,0 +1 @@
+<test>&#10;<landscape sun="#image1 @image"></landscape>&#10;In an attribute declaration, values of type ENTITIES do not match the Name production.&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i15.xml
new file mode 100644
index 0000000000..e86f97b636
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i15.xml
@@ -0,0 +1 @@
+<test>&#10;<landscape sun="image3 image4"></landscape>&#10;In an attribute declaration, values of type ENTITIES match the Name production and the ENTITIES value&#10;does not match one or more names of entities declared in the DTD. &#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i16.xml
new file mode 100644
index 0000000000..dd486c63ed
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i16.xml
@@ -0,0 +1 @@
+<test>&#10;<landscape sun="parsedentity1 parsedentity2"></landscape>&#10;In an attribute declaration, values of type ENTITIES match the Name production and the ENTITIES value&#10;matches one or more names of parsed entities declared in the DTD. .&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i17.xml
new file mode 100644
index 0000000000..0229bacbd1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i17.xml
@@ -0,0 +1 @@
+<test>&#10;<nametoken thistoken="x : image"></nametoken>&#10;In an attribute declaration, values of type NMTOKEN does not match the Nmtoken production&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i18.xml
new file mode 100644
index 0000000000..9119b7324f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P56/out/ibm56i18.xml
@@ -0,0 +1 @@
+<test>&#10;<nametokens thistoken="@lang y: #country"></nametokens>&#10;In an attribute declaration, values of type NMTOKENS does not match the Nmtokens production&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Entries
new file mode 100644
index 0000000000..021d8e65ca
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm58i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm58i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Repository
new file mode 100644
index 0000000000..32f1f9c1f6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P58
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i01.xml
new file mode 100644
index 0000000000..e9e53a01df
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i01.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!-- validity test for Production 58(Negative Test-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT blob (#PCDATA)>
+ <!NOTATION base64 SYSTEM "mimecode">
+ <!NOTATION uuencode SYSTEM "uudecode">
+ <!NOTATION raw SYSTEM "raw">
+ <!ATTLIST blob content-encoding NOTATION (base64|uuencode) #REQUIRED>
+ ]>
+ <test>
+<blob content-encoding = "raw"></blob>
+The attribute values of type NOTATION does not match any of the notation names included in the
+declaration.All notation names in the declaration have been declared.
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i02.xml
new file mode 100644
index 0000000000..68d9cbbf4f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/ibm58i02.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!-- validity test for Production 58(Negative Test-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT blob (#PCDATA)>
+ <!NOTATION base64 SYSTEM "mimecode">
+ <!NOTATION uuencode SYSTEM "uudecode">
+ <!ATTLIST blob content-encoding NOTATION (base64|uuencode|raw|ascii) #REQUIRED>
+ ]>
+ <test>
+<blob content-encoding = "raw"></blob>
+The attribute values of type NOTATION does match any of the notation names included in the
+declaration, but some of notation names in the declaration have not been declared
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Entries
new file mode 100644
index 0000000000..ed5dfef67e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm58i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm58i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Repository
new file mode 100644
index 0000000000..809824e51b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P58/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i01.xml
new file mode 100644
index 0000000000..1ac628be4f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i01.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE test [
+<!NOTATION base64 SYSTEM 'mimecode'>
+<!NOTATION raw SYSTEM 'raw'>
+<!NOTATION uuencode SYSTEM 'uudecode'>
+]>
+<test>&#10;<blob content-encoding="raw"></blob>&#10;The attribute values of type NOTATION does not match any of the notation names included in the&#10;declaration.All notation names in the declaration have been declared.&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i02.xml
new file mode 100644
index 0000000000..1999fc00dd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P58/out/ibm58i02.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE test [
+<!NOTATION base64 SYSTEM 'mimecode'>
+<!NOTATION uuencode SYSTEM 'uudecode'>
+]>
+<test>&#10;<blob content-encoding="raw"></blob>&#10;The attribute values of type NOTATION does match any of the notation names included in the&#10;declaration, but some of notation names in the declaration have not been declared&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Entries
new file mode 100644
index 0000000000..8aa63a4dc8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm59i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Repository
new file mode 100644
index 0000000000..f78e94bd85
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P59
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/ibm59i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/ibm59i01.xml
new file mode 100644
index 0000000000..9b004f2f6b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/ibm59i01.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!-- validity test for Production 59-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT two EMPTY>
+ <!ELEMENT num EMPTY>
+ <!ATTLIST num value (one|two) #IMPLIED>
+ ]>
+ <test>
+<num value = "ONE"></num>
+This is a Negative test
+The attribute values of type Enumeration does not match any of the Nmtoken tokens in the declaration.
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Entries
new file mode 100644
index 0000000000..6aac8a489c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm59i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Repository
new file mode 100644
index 0000000000..bfc8d0ed2d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P59/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/ibm59i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/ibm59i01.xml
new file mode 100644
index 0000000000..7766f1c297
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P59/out/ibm59i01.xml
@@ -0,0 +1 @@
+<test>&#10;<num value="ONE"></num>&#10;This is a Negative test&#10;The attribute values of type Enumeration does not match any of the Nmtoken tokens in the declaration.&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Entries
new file mode 100644
index 0000000000..e3d22a3ddb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm60i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60i04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Repository
new file mode 100644
index 0000000000..369068b0ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P60
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i01.xml
new file mode 100644
index 0000000000..57756a169b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i01.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!-- validity test for Production 60-->
+<!DOCTYPE Java
+ [
+ <!ELEMENT Java ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT two EMPTY>
+ <!ATTLIST one chapter CDATA #REQUIRED>
+ <!ATTLIST two chapter CDATA #REQUIRED>
+ ]>
+<Java>
+<one chapter="Introduction"></one>
+<two></two>
+Negative test for Required Attribute. Some occurrence of an element with
+an attribute of #REQUIRED default declaration does not give the value of
+those attribute
+</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i02.xml
new file mode 100644
index 0000000000..1b891d8a59
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i02.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!-- validity test for Production 60-->
+<!DOCTYPE Java
+ [
+ <!ELEMENT Java ANY>
+ <!ELEMENT one EMPTY>
+ <!ATTLIST one chapter CDATA #FIXED "Introduction">
+ ]>
+<Java>
+<one chapter="JavaBeans"></one>
+Negative Test
+An attribute has a default value declared with the #FIXED keyword,
+and an instances of that attribute is given a value which is not
+the same as the default value in the declaration.
+</Java>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i03.xml
new file mode 100644
index 0000000000..7e35078086
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i03.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!-- validity test for Production 60-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT b EMPTY>
+ <!ELEMENT attr EMPTY>
+ <!ATTLIST attr value (a|b) "c">
+ ]>
+<test>
+The default value specified for an attribute does not meet the
+lexical constraints of the declared attribute type.
+</test>
+
+
+
+
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i04.xml
new file mode 100644
index 0000000000..9ccdc8257f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/ibm60i04.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- validity test for Production 60-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT nametoken EMPTY>
+ <!ATTLIST nametoken namevalue NMTOKEN "@#$">
+ ]>
+<test>
+The default value specified for an attribute does not meet the
+lexical constraints of the declared attribute type.
+</test>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Entries
new file mode 100644
index 0000000000..03208dd2f8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm60i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60i04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Repository
new file mode 100644
index 0000000000..5004676316
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P60/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i01.xml
new file mode 100644
index 0000000000..0546e27412
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i01.xml
@@ -0,0 +1 @@
+<Java>&#10;<one chapter="Introduction"></one>&#10;<two></two>&#10;Negative test for Required Attribute. Some occurrence of an element with &#10;an attribute of #REQUIRED default declaration does not give the value of &#10;those attribute&#10;</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i02.xml
new file mode 100644
index 0000000000..2684857257
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i02.xml
@@ -0,0 +1 @@
+<Java>&#10;<one chapter="JavaBeans"></one>&#10;Negative Test&#10;An attribute has a default value declared with the #FIXED keyword, &#10;and an instances of that attribute is given a value which is not &#10;the same as the default value in the declaration. &#10;</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i03.xml
new file mode 100644
index 0000000000..0334dbf10e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i03.xml
@@ -0,0 +1 @@
+<test>&#10;The default value specified for an attribute does not meet the &#10;lexical constraints of the declared attribute type.&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i04.xml
new file mode 100644
index 0000000000..0334dbf10e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P60/out/ibm60i04.xml
@@ -0,0 +1 @@
+<test>&#10;The default value specified for an attribute does not meet the &#10;lexical constraints of the declared attribute type.&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Entries
new file mode 100644
index 0000000000..65d4c729e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Entries
@@ -0,0 +1,9 @@
+/ibm68i01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68i02.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68i03.ent/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68i04.ent/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68i04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Repository
new file mode 100644
index 0000000000..8bc5e399d0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P68
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.dtd
new file mode 100644
index 0000000000..f3b49c2472
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.dtd
@@ -0,0 +1,4 @@
+<!ENTITY ge1 "abcdef">
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr1 CDATA "&ge2;">
+<!--* GE reference therebefore doesn't match declaration *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.xml
new file mode 100644
index 0000000000..83145aa8c0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "ibm68i01.dtd" [
+ <!ELEMENT root (#PCDATA|a)* >
+]>
+<root>
+ pcdata content
+ <a attr1="xyz"/>
+</root>
+<!--* a invalid test for P68 VC:Entity Declared *-->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.dtd
new file mode 100644
index 0000000000..fcf30871c9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.dtd
@@ -0,0 +1,4 @@
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr1 CDATA "&ge1;">
+<!--* GE reference in attr default before declaration *-->
+<!ENTITY ge1 "abcdef"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.xml
new file mode 100644
index 0000000000..84ff6758d7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i02.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "ibm68i02.dtd" [
+ <!ELEMENT root (#PCDATA|a)* >
+]>
+<root>
+ pcdata content
+ <a attr1="xyz"/>
+</root>
+<!--* a invalid test for P68 VC:Entity Declared *-->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.ent
new file mode 100644
index 0000000000..1ac4fcab5f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.ent
@@ -0,0 +1,4 @@
+<!ENTITY ge1 "abcdef">
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr1 CDATA "&ge2;">
+<!--* GE reference in above doesn't match declaration *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.xml
new file mode 100644
index 0000000000..f857b63390
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i03.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone='no'?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA)* >
+ <!ENTITY % pe1 SYSTEM "ibm68i03.ent">
+ %pe1;
+]>
+<root>
+ pcdata content
+</root>
+<!--* a invalid test for P68 VC:Entity Declared *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.ent
new file mode 100644
index 0000000000..bcc535bb25
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.ent
@@ -0,0 +1,4 @@
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr1 CDATA "&ge1;">
+<!ENTITY ge1 "abcdef">
+<!--* GE reference in attr default before declaration *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.xml
new file mode 100644
index 0000000000..77a69628f6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/ibm68i04.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone='no'?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA)* >
+ <!ENTITY % pe1 SYSTEM "ibm68i04.ent">
+ %pe1;
+]>
+<root>
+ pcdata content
+</root>
+<!--* a invalid test for P68 VC:Entity Declared *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Entries
new file mode 100644
index 0000000000..2b945900ec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm68i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68i04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Repository
new file mode 100644
index 0000000000..73e08e9561
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P68/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i01.xml
new file mode 100644
index 0000000000..2375979678
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i01.xml
@@ -0,0 +1 @@
+<root>&#10; pcdata content&#10; <a attr1="xyz"></a>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i02.xml
new file mode 100644
index 0000000000..2375979678
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i02.xml
@@ -0,0 +1 @@
+<root>&#10; pcdata content&#10; <a attr1="xyz"></a>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i03.xml
new file mode 100644
index 0000000000..c05dd56b0c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i03.xml
@@ -0,0 +1 @@
+<root>&#10; pcdata content&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i04.xml
new file mode 100644
index 0000000000..c05dd56b0c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P68/out/ibm68i04.xml
@@ -0,0 +1 @@
+<root>&#10; pcdata content&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Entries
new file mode 100644
index 0000000000..054650eee2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Entries
@@ -0,0 +1,9 @@
+/ibm69i01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69i02.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69i03.ent/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69i04.ent/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69i04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Repository
new file mode 100644
index 0000000000..504fa99f5e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P69
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.dtd
new file mode 100644
index 0000000000..24f59e83c8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.dtd
@@ -0,0 +1,6 @@
+<!ENTITY ge1 "abcdef">
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr1 CDATA "&ge1;">
+<!ENTITY % pe1 "<!ATTLIST a attr2 CDATA #IMPLIED>">
+%pe2;
+<!--* PE reference therebefore doesn't match declaration *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.xml
new file mode 100644
index 0000000000..1c31ac572c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "ibm69i01.dtd" [
+ <!ELEMENT root (#PCDATA|a)* >
+]>
+<root>
+ pcdata content
+ <a attr1="xyz"/>
+</root>
+<!--* a invalid test for P69 VC:Entity Declared *-->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.dtd
new file mode 100644
index 0000000000..2317c6ffc1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.dtd
@@ -0,0 +1,6 @@
+<!ELEMENT a EMPTY>
+<!ENTITY ge1 "abcdef">
+<!ATTLIST a attr1 CDATA "&ge1;">
+%pe1;
+<!--* PE reference in attr default before declaration *-->
+<!ENTITY % pe1 "<!ATTLIST a attr2 CDATA #IMPLIED>">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.xml
new file mode 100644
index 0000000000..e1f45ae92e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i02.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "ibm69i02.dtd" [
+ <!ELEMENT root (#PCDATA|a)* >
+]>
+<root>
+ pcdata content
+ <a attr1="xyz"/>
+</root>
+<!--* a invalid test for P69 VC:Entity Declared *-->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.ent
new file mode 100644
index 0000000000..94bca39dff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.ent
@@ -0,0 +1,7 @@
+<!ENTITY ge1 "abcdef">
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr1 CDATA "&ge1;">
+<!ENTITY % pe2 "<!ATTLIST a attr2 CDATA #IMPLIED>">
+%pe3;
+<!--* PE reference in above doesn't match declaration *-->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.xml
new file mode 100644
index 0000000000..7ae2f130ce
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i03.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone='no'?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA)* >
+ <!ENTITY % pe1 SYSTEM "ibm69i03.ent">
+ %pe1;
+]>
+<root>
+ pcdata content
+</root>
+<!--* a invalid test for P69 VC:Entity Declared *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.ent
new file mode 100644
index 0000000000..b078fb4276
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.ent
@@ -0,0 +1,8 @@
+<!ELEMENT a EMPTY>
+<!ENTITY ge1 "abcdef">
+<!ATTLIST a attr1 CDATA "&ge1;">
+%pe2;
+<!--* PE reference in attr default before declaration *-->
+<!ENTITY % pe2 "<!ATTLIST a attr2 CDATA #IMPLIED>">
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.xml
new file mode 100644
index 0000000000..62f1125043
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/ibm69i04.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone='no'?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA)* >
+ <!ENTITY % pe1 SYSTEM "ibm69i04.ent">
+ %pe1;
+]>
+<root>
+ pcdata content
+</root>
+<!--* a invalid test for P69 VC:Entity Declared *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Entries
new file mode 100644
index 0000000000..f90c3091d5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm69i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69i02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69i03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69i04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Repository
new file mode 100644
index 0000000000..79786a6aa5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P69/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i01.xml
new file mode 100644
index 0000000000..2375979678
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i01.xml
@@ -0,0 +1 @@
+<root>&#10; pcdata content&#10; <a attr1="xyz"></a>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i02.xml
new file mode 100644
index 0000000000..2375979678
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i02.xml
@@ -0,0 +1 @@
+<root>&#10; pcdata content&#10; <a attr1="xyz"></a>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i03.xml
new file mode 100644
index 0000000000..c05dd56b0c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i03.xml
@@ -0,0 +1 @@
+<root>&#10; pcdata content&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i04.xml
new file mode 100644
index 0000000000..c05dd56b0c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P69/out/ibm69i04.xml
@@ -0,0 +1 @@
+<root>&#10; pcdata content&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Entries
new file mode 100644
index 0000000000..e70dc08a9b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm76i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Repository
new file mode 100644
index 0000000000..6af8648a21
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P76
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/ibm76i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/ibm76i01.xml
new file mode 100644
index 0000000000..a4409c6b68
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/ibm76i01.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+
+<!ENTITY % pe1 '<!ATTLIST root att2 CDATA "&ge1;">'>
+<!ENTITY ge1 "attdefaultvalue" >
+%pe1;
+
+<!--* notation JPGformat not declared *-->
+<!ENTITY ge2 SYSTEM "image.jpg" NDATA JPGformat>
+
+]>
+<root att2="any" />
+<!-- a invalid test case: test P76 VC: Notation Declared --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Entries
new file mode 100644
index 0000000000..6c04f454c8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm76i01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Repository
new file mode 100644
index 0000000000..9e590fdf12
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/invalid/P76/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/ibm76i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/ibm76i01.xml
new file mode 100644
index 0000000000..bcce7a0f7c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/invalid/P76/out/ibm76i01.xml
@@ -0,0 +1 @@
+<root att2="any"></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Entries
new file mode 100644
index 0000000000..0a8a358121
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Entries
@@ -0,0 +1,79 @@
+D/P01////
+D/P02////
+D/P03////
+D/P04////
+D/P05////
+D/P09////
+D/P10////
+D/P11////
+D/P12////
+D/P13////
+D/P14////
+D/P15////
+D/P16////
+D/P17////
+D/P18////
+D/P19////
+D/P20////
+D/P21////
+D/P22////
+D/P23////
+D/P24////
+D/P25////
+D/P26////
+D/P27////
+D/P28////
+D/P29////
+D/P30////
+D/P31////
+D/P32////
+D/P39////
+D/P40////
+D/P41////
+D/P42////
+D/P43////
+D/P44////
+D/P45////
+D/P46////
+D/P47////
+D/P48////
+D/P49////
+D/P50////
+D/P51////
+D/P52////
+D/P53////
+D/P54////
+D/P55////
+D/P56////
+D/P57////
+D/P58////
+D/P59////
+D/P60////
+D/P61////
+D/P62////
+D/P63////
+D/P64////
+D/P65////
+D/P66////
+D/P68////
+D/P69////
+D/P71////
+D/P72////
+D/P73////
+D/P74////
+D/P75////
+D/P76////
+D/P77////
+D/P78////
+D/P79////
+D/P80////
+D/P81////
+D/P82////
+D/P83////
+D/P85////
+D/P86////
+D/P87////
+D/P88////
+D/P89////
+D/misc////
+D/p28a////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Repository
new file mode 100644
index 0000000000..2e4f9283ae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Entries
new file mode 100644
index 0000000000..1a920f206e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm01n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm01n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm01n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Repository
new file mode 100644
index 0000000000..4ef6d7c144
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P01
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n01.xml
new file mode 100644
index 0000000000..8f2a24950c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n01.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE book [
+ <!ELEMENT book ANY>
+]>
+<!-- element is missing --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n02.xml
new file mode 100644
index 0000000000..fba7c8f6fb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n02.xml
@@ -0,0 +1,5 @@
+<doc>Wrong ordering between prolog and element!</doc>
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+ <!ELEMENT doc ANY>
+]> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n03.xml
new file mode 100644
index 0000000000..82fd08c3c6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P01/ibm01n03.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+ <!ELEMENT doc ANY>
+ <!ELEMENT title ANY>
+]>
+<doc>Wrong combination!</doc>
+<?PI after document element?>
+<title>Wrong combination!</title>
+<?PI after title element?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Entries
new file mode 100644
index 0000000000..44562e48ba
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Entries
@@ -0,0 +1,34 @@
+/ibm02n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n11.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n12.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n13.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n14.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n15.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n16.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n17.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n18.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n19.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n20.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n21.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n22.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n23.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n24.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n25.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n26.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n27.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n28.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n29.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n30.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n31.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n32.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm02n33.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Repository
new file mode 100644
index 0000000000..df75b96e6b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P02
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n01.xml
new file mode 100644
index 0000000000..867386a255
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n01.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n02.xml
new file mode 100644
index 0000000000..0984535667
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n02.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x01
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n03.xml
new file mode 100644
index 0000000000..8fb98db76f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n03.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x02
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n04.xml
new file mode 100644
index 0000000000..35ebb81254
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n04.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x03
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n05.xml
new file mode 100644
index 0000000000..4847c52f04
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n05.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x04
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n06.xml
new file mode 100644
index 0000000000..f4b3fea92b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n06.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x05
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n07.xml
new file mode 100644
index 0000000000..70b39a42bf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n07.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x06
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n08.xml
new file mode 100644
index 0000000000..d6a07f9721
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n08.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x07
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n09.xml
new file mode 100644
index 0000000000..14082265f1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n09.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x08
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n10.xml
new file mode 100644
index 0000000000..127b117d9c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n10.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x0b
+ in p02: -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n11.xml
new file mode 100644
index 0000000000..c0f6340498
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n11.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x0c
+ in p02: -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n12.xml
new file mode 100644
index 0000000000..3aa6b22386
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n12.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x0e
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n13.xml
new file mode 100644
index 0000000000..b5da2def7b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n13.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x0f
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n14.xml
new file mode 100644
index 0000000000..fb475617b2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n14.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x10
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n15.xml
new file mode 100644
index 0000000000..90e4ce29db
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n15.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x11
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n16.xml
new file mode 100644
index 0000000000..ef0bd5b521
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n16.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x12
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n17.xml
new file mode 100644
index 0000000000..cb6d61f9e9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n17.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x13
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n18.xml
new file mode 100644
index 0000000000..6d6277d662
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n18.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x14
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n19.xml
new file mode 100644
index 0000000000..965802232e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n19.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x15
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n20.xml
new file mode 100644
index 0000000000..0257c823c6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n20.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x16
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n21.xml
new file mode 100644
index 0000000000..89a0b1ad73
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n21.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x17
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n22.xml
new file mode 100644
index 0000000000..3bf0e2d1ab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n22.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x18
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n23.xml
new file mode 100644
index 0000000000..7ce8a85fd2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n23.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x19
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n24.xml
new file mode 100644
index 0000000000..5a2ea3ecfc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n24.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x1a
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n25.xml
new file mode 100644
index 0000000000..259b054712
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n25.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x1b
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n26.xml
new file mode 100644
index 0000000000..004f5e0466
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n26.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x1c
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n27.xml
new file mode 100644
index 0000000000..0cab04e7af
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n27.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x1d
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n28.xml
new file mode 100644
index 0000000000..34b1e0a2d9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n28.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x1e
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n29.xml
new file mode 100644
index 0000000000..70b9f721c6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n29.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x1f
+ in p02:  -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n30.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n30.xml
new file mode 100644
index 0000000000..a5606b217a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n30.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #xd800
+ in p02: í € -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n31.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n31.xml
new file mode 100644
index 0000000000..e7b65e4894
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n31.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #xdfff
+ in p02: í¿¿ -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n32.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n32.xml
new file mode 100644
index 0000000000..89597112cb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n32.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #xfffe
+ in p02: ￾ -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n33.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n33.xml
new file mode 100644
index 0000000000..44f74da54c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P02/ibm02n33.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #xffff
+ in p02: ï¿¿ -->
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Entries
new file mode 100644
index 0000000000..11df6eb44c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm03n01.xml/1.2/Mon Mar 25 15:47:37 2002//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Repository
new file mode 100644
index 0000000000..4ae749c6b4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P03
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/ibm03n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/ibm03n01.xml
new file mode 100644
index 0000000000..433e6b0374
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P03/ibm03n01.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+]>
+<!-- IllegalChar #x3000
+ in p03:   -->
+<book>Illegal space 3000 in the end tag</book  >
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Entries
new file mode 100644
index 0000000000..7411fcfa1a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Entries
@@ -0,0 +1,19 @@
+/ibm04n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n11.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n12.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n13.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n14.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n15.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n16.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n17.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm04n18.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Repository
new file mode 100644
index 0000000000..8f43addda9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P04
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n01.xml
new file mode 100644
index 0000000000..91c8d59f5e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar! [
+ <!ELEMENT IllegalNameChar! EMPTY>
+]>
+<IllegalNameChar!/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n02.xml
new file mode 100644
index 0000000000..c47224bdfd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n02.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar( [
+ <!ELEMENT IllegalNameChar( EMPTY>
+]>
+<IllegalNameChar(/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n03.xml
new file mode 100644
index 0000000000..1c59d4782c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n03.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar) [
+ <!ELEMENT IllegalNameChar) EMPTY>
+]>
+<IllegalNameChar)/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n04.xml
new file mode 100644
index 0000000000..6f1e33e524
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n04.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar+ [
+ <!ELEMENT IllegalNameChar+ EMPTY>
+]>
+<IllegalNameChar+/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n05.xml
new file mode 100644
index 0000000000..e32e65ea98
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n05.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar, [
+ <!ELEMENT IllegalNameChar, EMPTY>
+]>
+<IllegalNameChar,/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n06.xml
new file mode 100644
index 0000000000..1d531bb5af
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n06.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar/ [
+ <!ELEMENT IllegalNameChar/ EMPTY>
+]>
+<IllegalNameChar//>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n07.xml
new file mode 100644
index 0000000000..2b8efabee1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n07.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar; [
+ <!ELEMENT IllegalNameChar; EMPTY>
+]>
+<IllegalNameChar;/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n08.xml
new file mode 100644
index 0000000000..18a92271fd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n08.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar< [
+ <!ELEMENT IllegalNameChar< EMPTY>
+]>
+<IllegalNameChar</>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n09.xml
new file mode 100644
index 0000000000..8e9a750cf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n09.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar= [
+ <!ELEMENT IllegalNameChar= EMPTY>
+]>
+<IllegalNameChar=/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n10.xml
new file mode 100644
index 0000000000..9938fd25e7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n10.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar? [
+ <!ELEMENT IllegalNameChar? EMPTY>
+]>
+<IllegalNameChar?/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n11.xml
new file mode 100644
index 0000000000..aca0080f7f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n11.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar[ [
+ <!ELEMENT IllegalNameChar[ EMPTY>
+]>
+<IllegalNameChar[/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n12.xml
new file mode 100644
index 0000000000..5472fcad0f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n12.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar\ [
+ <!ELEMENT IllegalNameChar\ EMPTY>
+]>
+<IllegalNameChar\/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n13.xml
new file mode 100644
index 0000000000..64ae797577
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n13.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar] [
+ <!ELEMENT IllegalNameChar] EMPTY>
+]>
+<IllegalNameChar]/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n14.xml
new file mode 100644
index 0000000000..2172736377
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n14.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar^ [
+ <!ELEMENT IllegalNameChar^ EMPTY>
+]>
+<IllegalNameChar^/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n15.xml
new file mode 100644
index 0000000000..64fffaa093
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n15.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar` [
+ <!ELEMENT IllegalNameChar` EMPTY>
+]>
+<IllegalNameChar`/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n16.xml
new file mode 100644
index 0000000000..98242ebe48
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n16.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar{ [
+ <!ELEMENT IllegalNameChar{ EMPTY>
+]>
+<IllegalNameChar{/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n17.xml
new file mode 100644
index 0000000000..f314531b25
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n17.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar| [
+ <!ELEMENT IllegalNameChar| EMPTY>
+]>
+<IllegalNameChar|/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n18.xml
new file mode 100644
index 0000000000..7c073fc240
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P04/ibm04n18.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE IllegalNameChar} [
+ <!ELEMENT IllegalNameChar} EMPTY>
+]>
+<IllegalNameChar}/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Entries
new file mode 100644
index 0000000000..3465967ed3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Entries
@@ -0,0 +1,6 @@
+/ibm05n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm05n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm05n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm05n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm05n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Repository
new file mode 100644
index 0000000000..fb93cd6dae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P05
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n01.xml
new file mode 100644
index 0000000000..1b83228f02
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n01.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE .A_name_starts_with. [
+ <!ELEMENT .A_name_starts_with. EMPTY>
+]>
+<.A_name_starts_with./>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n02.xml
new file mode 100644
index 0000000000..3ee449969d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n02.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE -A_name_starts_With- [
+ <!ELEMENT -A_name_starts_With- EMPTY>
+]>
+<-A_name_starts_With-/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n03.xml
new file mode 100644
index 0000000000..d3adffdb50
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n03.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE 5A_name_starts_with_digit [
+ <!ELEMENT 5A_name_starts_with_digit EMPTY>
+]>
+<5A_name_starts_with_digit/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n04.xml
new file mode 100644
index 0000000000..499a09ca9a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n04.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE illegalChar0f7÷InTheMiddle [
+ <!ELEMENT illegalChar0f7÷InTheMiddle EMPTY>
+]>
+<illegalChar0f7÷InTheMiddle/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n05.xml
new file mode 100644
index 0000000000..98e575018a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P05/ibm05n05.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE illegalNameChar÷ [
+ <!ELEMENT illegalNameChar÷ EMPTY>
+]>
+<illegalNameChar÷/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Entries
new file mode 100644
index 0000000000..aad2c8af44
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm09n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm09n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm09n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm09n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Repository
new file mode 100644
index 0000000000..06a675e440
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P09
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n01.xml
new file mode 100644
index 0000000000..b6c068bb4e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n01.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY FullName "Snow%Man">
+]>
+
+<!-- testing invalid entity value -->
+<student>My Name is &FullName;. </student>
+
+
+
+
+
+
+
+
+
+
+
+
+ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n02.xml
new file mode 100644
index 0000000000..106dbc46b0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY FullName "Snow&Man">
+]>
+
+<!-- testing invalid entity value -->
+<student>My Name is &FullName;. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n03.xml
new file mode 100644
index 0000000000..c7b28b31e9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY FullName "Snow"Man">
+]>
+
+<!-- testing invalid entity value -->
+<student>My Name is &FullName;. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n04.xml
new file mode 100644
index 0000000000..df3399734e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P09/ibm09n04.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY FullName "SnowMan>
+]>
+
+<!-- testing invalid entity value -->
+<student>My Name is &FullName;. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Entries
new file mode 100644
index 0000000000..e12d4f87f3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Entries
@@ -0,0 +1,9 @@
+/ibm10n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Repository
new file mode 100644
index 0000000000..648f96fe92
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P10
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n01.xml
new file mode 100644
index 0000000000..3f9f50e9f4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n01.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #IMPLIED >
+ <!ENTITY myfirst "Snow">
+ <!ENTITY mymiddle "I">
+ <!ENTITY mylast "Man">
+]>
+
+<!-- testing invalid attvalue -->
+<student first="Snow<Man">My Name is SnowMan. </student>
+
+
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n02.xml
new file mode 100644
index 0000000000..cf33029760
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n02.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #IMPLIED >
+ <!ENTITY myfirst "Snow">
+ <!ENTITY mymiddle "I">
+ <!ENTITY mylast "Man">
+]>
+
+<!-- testing invalid attvalue -->
+<student first="Snow&Man">My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n03.xml
new file mode 100644
index 0000000000..f7b6c13a19
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n03.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #IMPLIED >
+ <!ENTITY myfirst "Snow">
+ <!ENTITY mymiddle "I">
+ <!ENTITY mylast "Man">
+]>
+
+<!-- testing invalid attvalue -->
+<student first="Snow"Man">My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n04.xml
new file mode 100644
index 0000000000..039f65ae77
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n04.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #IMPLIED >
+ <!ENTITY myfirst "Snow">
+ <!ENTITY mymiddle "I">
+ <!ENTITY mylast "Man">
+]>
+
+<!-- testing invalid attvalue with no closing bracket -->
+<student first="Snow >My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n05.xml
new file mode 100644
index 0000000000..6b253f66f1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n05.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #IMPLIED >
+ <!ENTITY myfirst "SNow">
+ <!ENTITY mymiddle "I">
+ <!ENTITY mylast "Man">
+]>
+
+<!-- testing invalid attvalue -->
+<student first='Snow<Man'>My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n06.xml
new file mode 100644
index 0000000000..6d89dc50c4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n06.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #IMPLIED >
+ <!ENTITY myfirst "Snow">
+ <!ENTITY mymiddle "I">
+ <!ENTITY mylast "Man">
+]>
+
+<!-- testing invalid attvalue -->
+<student first='Snow&Man'>My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n07.xml
new file mode 100644
index 0000000000..f7b6c13a19
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n07.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #IMPLIED >
+ <!ENTITY myfirst "Snow">
+ <!ENTITY mymiddle "I">
+ <!ENTITY mylast "Man">
+]>
+
+<!-- testing invalid attvalue -->
+<student first="Snow"Man">My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n08.xml
new file mode 100644
index 0000000000..328729d1d5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P10/ibm10n08.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #IMPLIED >
+ <!ENTITY myfirst "Snow">
+ <!ENTITY mymiddle "I">
+ <!ENTITY mylast "Man">
+]>
+
+<!-- testing invalid attvalue with no closing single quote -->
+<student first='Snow >My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Entries
new file mode 100644
index 0000000000..0f719b2afa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm11n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm11n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm11n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm11n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Repository
new file mode 100644
index 0000000000..657e2c09c2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P11
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n01.xml
new file mode 100644
index 0000000000..2195727cc1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n01.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE student SYSTEM "student".dtd"[
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid system literal -->
+<student>My Name is SnowMan. </student>
+
+
+
+
+
+
+
+
+
+
+ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n02.xml
new file mode 100644
index 0000000000..ee6abd4ea2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n02.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE student SYSTEM 'student'.dtd'[
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid system literal -->
+<student>My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n03.xml
new file mode 100644
index 0000000000..3c1901edac
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n03.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE student SYSTEM "student.DTD [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid system literal with no closing bracket -->
+<student>My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n04.xml
new file mode 100644
index 0000000000..0a3017a8cc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P11/ibm11n04.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE student SYSTEM 'student.DTD [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid system literal with no closing bracket -->
+<student>My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Entries
new file mode 100644
index 0000000000..0489d6125c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm12n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm12n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm12n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Repository
new file mode 100644
index 0000000000..4733acee8c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P12
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n01.xml
new file mode 100644
index 0000000000..50a7b63b9a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n01.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY info PUBLIC "..\info.dtd>
+]>
+
+<!-- testing invalid pubid literal with no closing bracket -->
+<student>My Name is &info;. </student>
+
+
+
+
+
+
+
+
+
+ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n02.xml
new file mode 100644
index 0000000000..e7024efded
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY info PUBLIC '..\info'.dtd'>
+]>
+
+<!-- testing invalid pubid literal -->
+<student>My Name is &info;. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n03.xml
new file mode 100644
index 0000000000..4264814c6e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P12/ibm12n03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY info PUBLIC '..\info.dtd>
+]>
+
+<!-- testing invalid pubid literal with no closing bracket -->
+<student>My Name is &info;. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Entries
new file mode 100644
index 0000000000..226177973e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm13n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm13n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm13n03.xml/1.4/Thu Nov 13 14:12:36 2003//
+/student.dtd/1.2/Tue Sep 30 14:45:19 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Repository
new file mode 100644
index 0000000000..41211a39d7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P13
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n01.xml
new file mode 100644
index 0000000000..e0e31d68fe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n01.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ENTITY info PUBLIC "This is a {test} " "student.dtd">
+]>
+
+<!-- testing invalid pubid char with { -->
+<student>My Name is &info;. </student>
+
+
+
+
+ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n02.xml
new file mode 100644
index 0000000000..78439ab5ef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n02.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ENTITY info PUBLIC "This is a test~. " "student.dtd">
+]>
+
+<!-- testing invalid pubid char with ~ -->
+<student>My Name is &info;. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n03.xml
new file mode 100644
index 0000000000..7ff512dc4d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/ibm13n03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE student [
+ <!ENTITY info PUBLIC "This is a test á " "student.dtd">
+]>
+
+<!-- testing invalid pubid char with á -->
+<student>My Name is &info;. </student>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/student.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/student.dtd
new file mode 100644
index 0000000000..7ce18a99a3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P13/student.dtd
@@ -0,0 +1,3 @@
+<?xml encoding="utf-8"?>
+<!-- student.dtd -->
+<!ELEMENT student (#PCDATA)>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Entries
new file mode 100644
index 0000000000..91311bd039
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm14n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm14n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm14n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Repository
new file mode 100644
index 0000000000..10903e1710
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P14
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n01.xml
new file mode 100644
index 0000000000..2aa17b269e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student first CDATA #REQUIRED
+ last CDATA #IMPLIED>
+]>
+
+<!-- testing invalid chardata string -->
+<student first="Snow">My name is Snow ]]> Man</student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n02.xml
new file mode 100644
index 0000000000..4c1f06dd6c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student first CDATA #REQUIRED
+ last CDATA #IMPLIED>
+]>
+
+<!-- testing invalid chardata string -->
+<student first="Snow">My name is Snow <Man </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n03.xml
new file mode 100644
index 0000000000..80dc61695a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P14/ibm14n03.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student first CDATA #REQUIRED
+ last CDATA #IMPLIED>
+]>
+
+<!-- testing invalid chardata string -->
+<student first="Snow">My name is Snow&Man </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Entries
new file mode 100644
index 0000000000..7746229878
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm15n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm15n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm15n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm15n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Repository
new file mode 100644
index 0000000000..ec5e63bf64
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P15
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n01.xml
new file mode 100644
index 0000000000..d11b3ca4f2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n01.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid comment -->
+<!------>
+<student>My Name is SnowMan. </student>
+
+
+
+
+
+
+ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n02.xml
new file mode 100644
index 0000000000..c187070c03
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid comment -->
+<!-- Student's name ->
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n03.xml
new file mode 100644
index 0000000000..2c014864d3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid comment -->
+<!- student file-1 -->
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n04.xml
new file mode 100644
index 0000000000..365b2c4bde
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P15/ibm15n04.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid comment -->
+<!--student phone number 408-777-8888
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Entries
new file mode 100644
index 0000000000..627fc4a721
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm16n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm16n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm16n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm16n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Repository
new file mode 100644
index 0000000000..1a71554838
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P16
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n01.xml
new file mode 100644
index 0000000000..6bafad526f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid PI with illegal sequence -->
+<?MyInstruct This is ?> a test ?>
+<student>My Name is SnowMan. </student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n02.xml
new file mode 100644
index 0000000000..923df6ce66
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+
+<!-- testing invalid PI with missing PITarget -->
+<??>
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n03.xml
new file mode 100644
index 0000000000..9625193ca6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n03.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+
+<!-- testing invalid PI with wrong closing sequence -->
+<?MyInstruct >
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n04.xml
new file mode 100644
index 0000000000..dd0d352d15
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P16/ibm16n04.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+
+<!-- testing invalid PI with missing sequence -->
+<?MyInstruct
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Entries
new file mode 100644
index 0000000000..a098c26450
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm17n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm17n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm17n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm17n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Repository
new file mode 100644
index 0000000000..a9a2232bcd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P17
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n01.xml
new file mode 100644
index 0000000000..3012de0f8f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+
+<!-- testing invalid PITarget -->
+<?XML This is a test ?>
+<student>My Name is SnowMan. </student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n02.xml
new file mode 100644
index 0000000000..f236cdb079
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid PITarget -->
+<?xML This is a test ?>
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n03.xml
new file mode 100644
index 0000000000..4f5dba6d84
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid PITarget -->
+<?xml This is a test ?>
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n04.xml
new file mode 100644
index 0000000000..f097ef3606
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P17/ibm17n04.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid PITarget -->
+<?xmL This is a test ?>
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Entries
new file mode 100644
index 0000000000..841c256158
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm18n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm18n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Repository
new file mode 100644
index 0000000000..1bcd6ef06e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P18
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n01.xml
new file mode 100644
index 0000000000..91f47e9dea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid CDSect with missing CDStart -->
+<student>My Name is SnowMan. This is <normal> text]]></student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n02.xml
new file mode 100644
index 0000000000..b0d07849df
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P18/ibm18n02.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid CDSect with missing CDEnd -->
+<student>My Name is SnowMan. <![CDATA[This is <normal> text </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Entries
new file mode 100644
index 0000000000..3461836b0b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm19n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm19n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm19n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Repository
new file mode 100644
index 0000000000..3a16b94826
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P19
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n01.xml
new file mode 100644
index 0000000000..6dd0b32bce
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid CDStart -->
+<![cdata[This is a test]]>
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n02.xml
new file mode 100644
index 0000000000..0b18c42e71
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n02.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid CDStart -->
+<![[CDATA[This is a test]]>
+<student>My Name is SnowMan. </student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n03.xml
new file mode 100644
index 0000000000..02a84788b1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P19/ibm19n03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid CDStart -->
+<?[CDATA[This is a test]]>
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Entries
new file mode 100644
index 0000000000..4d02ee9c24
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm20n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Repository
new file mode 100644
index 0000000000..cf87b9431a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P20
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/ibm20n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/ibm20n01.xml
new file mode 100644
index 0000000000..cd454a29db
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P20/ibm20n01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid CData with illegal sequence -->
+<![CDATA[<testing>This is ]]> a test</testing>]]>
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Entries
new file mode 100644
index 0000000000..e33c0dad41
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm21n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm21n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm21n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Repository
new file mode 100644
index 0000000000..670d97b391
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P21
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n01.xml
new file mode 100644
index 0000000000..3db95b7b40
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid CDEnd -->
+<![[CDATA[This is a test]>
+<student>My Name is SnowMan. </student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n02.xml
new file mode 100644
index 0000000000..6969b0f35a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid CDEnd -->
+<![cdata[This is a test]]]>
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n03.xml
new file mode 100644
index 0000000000..71a5bcaa0b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P21/ibm21n03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing invalid CDEnd -->
+<![CDATA[This is a test])>
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Entries
new file mode 100644
index 0000000000..67170613c2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm22n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm22n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm22n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Repository
new file mode 100644
index 0000000000..65858ada69
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P22
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n01.xml
new file mode 100644
index 0000000000..01054fc752
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n01.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<?xml version="1.0" encoding="ASCII" ?>
+<doc/>
+<!-- Wrong ordering between DTD and XMLDecl --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n02.xml
new file mode 100644
index 0000000000..4d371ef98a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n02.xml
@@ -0,0 +1,6 @@
+<!-- Wrong ordering Misc, DTD and XMLDecl -->
+<?xml version="1.0" encoding="ASCII" ?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n03.xml
new file mode 100644
index 0000000000..93c259c0c9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P22/ibm22n03.xml
@@ -0,0 +1,7 @@
+<!-- Wrong ordering patter 4 -->
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<!-- Wrong ordering Misc, DTD, Misc, and XMLDecl -->
+<?xml version="1.0" encoding="ASCII" ?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Entries
new file mode 100644
index 0000000000..b6590238a7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm23n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Repository
new file mode 100644
index 0000000000..edac5ca2e5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P23
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n01.xml
new file mode 100644
index 0000000000..7db1daf2e4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n01.xml
@@ -0,0 +1,6 @@
+<?xml encoding="ASCII" ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Missing required field VersionInfo in XMLDecl --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n02.xml
new file mode 100644
index 0000000000..9364b9eb82
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n02.xml
@@ -0,0 +1,6 @@
+<?xml encoding='ASCII' version='1.0'?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong ordering between VersionInfo and EncodingDecl in XMLDecl --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n03.xml
new file mode 100644
index 0000000000..c7c75abd63
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n03.xml
@@ -0,0 +1,6 @@
+<?xml encoding='ASCII' standalone='yes' version='1.0'?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong ordering EncodingDecl, SDDecl, and VersionInfo in XMLDecl --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n04.xml
new file mode 100644
index 0000000000..18d641f90a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n04.xml
@@ -0,0 +1,6 @@
+<?XML version='1.0'?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong keyword in XMLDecl --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n05.xml
new file mode 100644
index 0000000000..2fe93d7044
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n05.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='ASCII' standalone='yes' >
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong closing sequence in XMLDecl --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n06.xml
new file mode 100644
index 0000000000..e5b7058272
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P23/ibm23n06.xml
@@ -0,0 +1,6 @@
+<!xml version='1.0' encoding='ASCII' standalone='yes' ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong opening sequence in XMLDecl --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Entries
new file mode 100644
index 0000000000..33f7f3974f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Entries
@@ -0,0 +1,10 @@
+/ibm24n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm24n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm24n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm24n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm24n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm24n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm24n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm24n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm24n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Repository
new file mode 100644
index 0000000000..94aed5f78a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P24
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n01.xml
new file mode 100644
index 0000000000..06b8699cdc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n01.xml
@@ -0,0 +1,6 @@
+<?xml version= ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- VersioNum is missing in VersionInfo --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n02.xml
new file mode 100644
index 0000000000..ad70e99baf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n02.xml
@@ -0,0 +1,6 @@
+<?xmlversion='1.0' ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- S is missing in VersionInfo --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n03.xml
new file mode 100644
index 0000000000..4f84125f3a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n03.xml
@@ -0,0 +1,6 @@
+<?xml version'1.0' ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Eq is missing in VersionInfo --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n04.xml
new file mode 100644
index 0000000000..553df9707e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n04.xml
@@ -0,0 +1,6 @@
+<?xml '1.0'=version ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong ordering VersionNum Eq 'version' --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n05.xml
new file mode 100644
index 0000000000..3e4510f3a1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n05.xml
@@ -0,0 +1,6 @@
+<?xml version'1.0'= ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong ordering version VersionNum Eq --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n06.xml
new file mode 100644
index 0000000000..459c656b2f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n06.xml
@@ -0,0 +1,6 @@
+<?xml Version='1.0' ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong key word 'Version' --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n07.xml
new file mode 100644
index 0000000000..987d716d70
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n07.xml
@@ -0,0 +1,6 @@
+<?xml versioN='1.0' ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong key word 'versioN' --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n08.xml
new file mode 100644
index 0000000000..b73e565aff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n08.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0" ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Mismatched qotes in VersionInfo --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n09.xml
new file mode 100644
index 0000000000..33c80969ba
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P24/ibm24n09.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0 ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Mismatched qotes in VersionInfo --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Entries
new file mode 100644
index 0000000000..5f26556f04
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm25n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm25n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Repository
new file mode 100644
index 0000000000..e65b32d0e8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P25
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n01.xml
new file mode 100644
index 0000000000..c353336ce3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n01.xml
@@ -0,0 +1,6 @@
+<?xml version=='1.0' ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong key word "==" in Eq --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n02.xml
new file mode 100644
index 0000000000..0c0a0077dd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P25/ibm25n02.xml
@@ -0,0 +1,6 @@
+<?xml version eq '1.0' ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- Wrong key word "eq" in Eq --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Entries
new file mode 100644
index 0000000000..9a026b3518
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm26n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Repository
new file mode 100644
index 0000000000..af666d19ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P26
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/ibm26n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/ibm26n01.xml
new file mode 100644
index 0000000000..7baed5f923
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P26/ibm26n01.xml
@@ -0,0 +1,6 @@
+<?xml version='_#1.0' ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- illegal character '#' in VersionNum --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Entries
new file mode 100644
index 0000000000..26e863a9ce
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm27n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Repository
new file mode 100644
index 0000000000..837ff12bc6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P27
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/ibm27n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/ibm27n01.xml
new file mode 100644
index 0000000000..56f82f9189
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P27/ibm27n01.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" ?>
+<!DOCTYPE animal [
+ <!ELEMENT animal ANY>
+]>
+<animal>Wrong type of Misc following this element!</animal>
+<!ELEMENT cat EMPTY> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Entries
new file mode 100644
index 0000000000..1ec0195803
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Entries
@@ -0,0 +1,10 @@
+/ibm28n01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm28n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm28n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm28n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm28n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm28n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm28n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm28n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm28n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Repository
new file mode 100644
index 0000000000..2b5caf2b49
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P28
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.dtd
new file mode 100644
index 0000000000..b3dde2f97a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.dtd
@@ -0,0 +1 @@
+<!ELEMENT animal EMPTY> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.xml
new file mode 100644
index 0000000000..91a04bc9f0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n01.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE SYSTEM "ibm28n01.dtd">
+<!-- Name is missing in doctypedecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n02.xml
new file mode 100644
index 0000000000..d35360413a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n02.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE [
+<!ELEMENT animal EMPTY>
+] animal>
+<!-- Wrong ordering [ ] Name in doctypedecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n03.xml
new file mode 100644
index 0000000000..565282bb74
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n03.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE SYSTEM "ibm28n01.dtd" animal [
+ <!ATTLIST animal color CDATA #REQUIRED>
+]>
+<!-- Wrong ordering ExternalID Name [ ] in doctypedecl -->
+<animal color="yellow"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n04.xml
new file mode 100644
index 0000000000..b751671196
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n04.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE aniaml [
+ <!ELEMENT animal ANY>
+ <!ENTITY generalE "leopard">
+ &generalE;
+ <!ENTITY % parameterE "<!ELEMENT leopard EMPTY>">
+ %parameterE;
+] animal>
+<!-- Wrong componet general entity reference occurs inside the DTD -->
+<!-- General entity sould be used in the document content -->
+<animal>&generalE</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n05.xml
new file mode 100644
index 0000000000..ebdbe41898
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n05.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCtYPE animal [
+ <!ELEMENT animal EMPTY>
+]>
+<!-- Wrong keyword DOCTYPE in doctypedecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n06.xml
new file mode 100644
index 0000000000..f367e6fc1b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n06.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE animal [
+ <!ELEMENT animal EMPTY>
+>
+<!-- Bracket mismatch in [ ] in doctypedecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n07.xml
new file mode 100644
index 0000000000..98b8f34ef5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n07.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE animal {
+ <!ELEMENT animal EMPTY>
+]>
+<!-- Wrong bracket in [ ] in doctypedecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n08.xml
new file mode 100644
index 0000000000..78426a9514
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P28/ibm28n08.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<?DOCTYPE animal [
+ <!ELEMENT animal EMPTY>
+]>
+<!-- Wrong opening sequence in doctypedecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Entries
new file mode 100644
index 0000000000..d5c36aa261
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Entries
@@ -0,0 +1,9 @@
+/cat.txt/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm29n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm29n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm29n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm29n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm29n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm29n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm29n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Repository
new file mode 100644
index 0000000000..060df8d466
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P29
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/cat.txt b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/cat.txt
new file mode 100644
index 0000000000..033b749de0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/cat.txt
@@ -0,0 +1 @@
+This is a text book about cat. \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n01.xml
new file mode 100644
index 0000000000..6582e926c4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n01.xml
@@ -0,0 +1,20 @@
+<!DOCTYPE animal [
+ <?xml version="1.0" encoding="ASCII" ?>
+ <!-- Illegal markupdecl in DTD -->
+ <!ELEMENT animal (cat|tiger|leopard)+>
+ <!ELEMENT cat EMPTY>
+ <!ELEMENT tiger (#PCDATA)>
+ <!ELEMENT leopard ANY>
+ <!ELEMENT small EMPTY>
+ <!ELEMENT big EMPTY>
+ <!ATTLIST tiger color CDATA #REQUIRED>
+]>
+<animal>
+ <cat/>
+ <tiger color="white">This is a white tiger in Mirage!!</tiger>
+ <cat/>
+ <leopard>
+ <small/>
+ <big/>
+ </leopard>
+</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n02.xml
new file mode 100644
index 0000000000..01656bafea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE animal [
+ <!ELEMENT animal ANY>
+ <!ENTITY % parameterE "leopard EMPTY>">
+ <!ELEMENT %parameterE;
+]>
+<!-- Parameter reference appears inside elementdecl in DTD -->
+<animal>Any content</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n03.xml
new file mode 100644
index 0000000000..72e7398f69
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE animal [
+ <!ELEMENT animal ANY>
+ <!ENTITY % parameterE "color">
+ <!ATTLIST animal %parameterE; CDATA #IMPLIED>
+]>
+<!-- Parameter reference appears inside AttlistDecl in DTD -->
+<animal>Any content</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n04.xml
new file mode 100644
index 0000000000..7fbeb35ad3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n04.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE animal [
+ <!ELEMENT animal ANY>
+ <!ENTITY % parameterE "A leopard">
+ <!ENTITY content "%parameterE;">
+]>
+<!-- Parameter reference appears inside an entity declaration in DTD -->
+<animal>&content;</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n05.xml
new file mode 100644
index 0000000000..b2a3caaab2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n05.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE animal [
+ <!ELEMENT animal ANY>
+ <!ENTITY % parameterE "A music file ?>">
+ <?music %parameterE;
+]>
+<!-- Parameter reference appears inside a PI in DTD -->
+<animal>Any content</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n06.xml
new file mode 100644
index 0000000000..a166f862a0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n06.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE animal [
+ <!ELEMENT animal ANY>
+ <!ENTITY % parameterE "A music file -->">
+<!-- Parameter reference appears inside a comment in DTD -->
+ <!-- This is %parameterE;
+]>
+<animal>Any content</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n07.xml
new file mode 100644
index 0000000000..40b5c90281
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P29/ibm29n07.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE animal [
+ <!ELEMENT animal ANY>
+ <!ENTITY % parameterE "cat SYSTEM">
+ <!NOTATION %parameterE; "cat.txt">
+]>
+<!-- Parameter reference appears inside a NotationDecl in DTD -->
+<animal>Any content</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Entries
new file mode 100644
index 0000000000..04ca77bc64
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm30n01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm30n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Repository
new file mode 100644
index 0000000000..4e447ddb84
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P30
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.dtd
new file mode 100644
index 0000000000..8d88fe5578
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.dtd
@@ -0,0 +1,3 @@
+<!ELEMENT animal EMPTY>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!-- Wrong order extSubsetDecl TextDecl in the external DTD --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.xml
new file mode 100644
index 0000000000..036b4592e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P30/ibm30n01.xml
@@ -0,0 +1,3 @@
+<!DOCTYPE animal SYSTEM "ibm30n01.dtd">
+<animal/>
+<!-- Wrong ordering extSubsetDecl TextDecl in the external DTD --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Entries
new file mode 100644
index 0000000000..ccbdfce575
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm31n01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm31n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Repository
new file mode 100644
index 0000000000..be9e854ecb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P31
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.dtd
new file mode 100644
index 0000000000..f70a194bf9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.dtd
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!ELEMENT animal EMPTY>
+<!ENTITY generalE "A general entity">
+&generalE;
+<!-- Illegal extSubsetDecl in the external DTD --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.xml
new file mode 100644
index 0000000000..14136c596d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P31/ibm31n01.xml
@@ -0,0 +1,3 @@
+<!DOCTYPE animal SYSTEM "ibm31n01.dtd">
+<animal/>
+<!-- Illegal extSubsetDecl in the external DTD --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Entries
new file mode 100644
index 0000000000..1cad781c32
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Entries
@@ -0,0 +1,12 @@
+/ibm32n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32n06.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32n09.dtd/1.1/Thu May 16 13:54:15 2002//
+/ibm32n09.xml/1.3/Thu May 23 17:00:24 2002//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Repository
new file mode 100644
index 0000000000..e953754031
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P32
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n01.xml
new file mode 100644
index 0000000000..d1ead33d36
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n01.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"standalone="yes" ?>
+<!DOCTYPE animal [
+ <!ELEMENT animal EMPTY>
+]>
+<!-- Missing a S in SDDecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n02.xml
new file mode 100644
index 0000000000..2bfdd07105
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n02.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone"yes" ?>
+<!DOCTYPE animal [
+ <!ELEMENT animal EMPTY>
+]>
+<!-- Missing Eq in SDDecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n03.xml
new file mode 100644
index 0000000000..a084036102
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n03.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" Standalone="yes" ?>
+<!DOCTYPE animal [
+ <!ELEMENT animal EMPTY>
+]>
+<!-- Wrong keyword in SDDecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n04.xml
new file mode 100644
index 0000000000..04c8eba891
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n04.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="Yes" ?>
+<!DOCTYPE animal [
+ <!ELEMENT animal EMPTY>
+]>
+<!-- Wrong keyword in SDDecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n05.xml
new file mode 100644
index 0000000000..be004b3179
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n05.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="YES" ?>
+<!DOCTYPE animal [
+ <!ELEMENT animal EMPTY>
+]>
+<!-- Wrong keyword in SDDecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.dtd
new file mode 100644
index 0000000000..b3dde2f97a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.dtd
@@ -0,0 +1 @@
+<!ELEMENT animal EMPTY> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.xml
new file mode 100644
index 0000000000..aecbc0bea3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n06.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="No" ?>
+<!DOCTYPE animal SYSTEM "ibm32n06.dtd">
+<!-- Wrong keyword in SDDecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n07.xml
new file mode 100644
index 0000000000..40e56f10f2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n07.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="NO" ?>
+<!DOCTYPE animal SYSTEM "ibm32n06.dtd">
+<!-- Wrong keyword in SDDecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n08.xml
new file mode 100644
index 0000000000..bd01546929
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n08.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone"Yes"= ?>
+<!DOCTYPE animal [
+ <!ELEMENT animal EMPTY>
+]>
+<!-- Wrong ordering in SDDecl -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.dtd
new file mode 100644
index 0000000000..a68e8974bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.dtd
@@ -0,0 +1 @@
+<!ENTITY animal_content "This is a yellow tiger">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.xml
new file mode 100644
index 0000000000..e7597fa3d3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P32/ibm32n09.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="yes" ?>
+<!DOCTYPE animal SYSTEM "ibm32n09.dtd" [
+ <!ELEMENT animal (#PCDATA)>
+]>
+<!-- This is test violates WFC: Entity Declared in P68
+ The standalone document declaration has the value "yes", there is an
+ external markup declaration of an entity (other than amp, lt, gt, apos, quot), and references to this entity appear in the document.
+-->
+<animal>&animal_content;</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Entries
new file mode 100644
index 0000000000..685dbfcea5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm39n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm39n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm39n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm39n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm39n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm39n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Repository
new file mode 100644
index 0000000000..a21aa8f60d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P39
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n01.xml
new file mode 100644
index 0000000000..bf43c318b4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n01.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+]>
+<root>missing end tag
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n02.xml
new file mode 100644
index 0000000000..26a4ae6876
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n02.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+]>
+missing start tag</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n03.xml
new file mode 100644
index 0000000000..da8548b45c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n03.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+]>
+<root>
+<!--* Missing end tag and no content -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n04.xml
new file mode 100644
index 0000000000..241ee8be5c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n04.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+]>
+</root>
+<!--* Missing start tag and no content -->
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n05.xml
new file mode 100644
index 0000000000..80cbd83aa7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n05.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+]>
+</root>switched start and end tags<root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n06.xml
new file mode 100644
index 0000000000..97f7ff363d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P39/ibm39n06.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+]>
+<root></root>content after end tag
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Entries
new file mode 100644
index 0000000000..044fa9a0e1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Entries
@@ -0,0 +1,6 @@
+/ibm40n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm40n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm40n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm40n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm40n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Repository
new file mode 100644
index 0000000000..b25c651c5b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P40
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n01.xml
new file mode 100644
index 0000000000..512dc62d86
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<attr1="any">missing name in start tag</root>
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n02.xml
new file mode 100644
index 0000000000..f25a5ba915
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n02.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<rootattr1="any">missing white space in start tag</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n03.xml
new file mode 100644
index 0000000000..d5821f217c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n03.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<attr1="any" root>Wrong ordering in start tag</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n04.xml
new file mode 100644
index 0000000000..fad77f7da2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n04.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<!root attr1="any">wrong begining sequence in start tag</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n05.xml
new file mode 100644
index 0000000000..640650846d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P40/ibm40n05.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<root attr1="any1" attr1="any2">duplicate attr names in start tag</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Entries
new file mode 100644
index 0000000000..edb28d4ac7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Entries
@@ -0,0 +1,18 @@
+/ibm41n.ent/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n10.ent/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n11.ent/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n11.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n12.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n13.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm41n14.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Repository
new file mode 100644
index 0000000000..70430c3012
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P41
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n.ent
new file mode 100644
index 0000000000..f1bba14c8e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n.ent
@@ -0,0 +1,2 @@
+<?xml verison="1.0"?>
+any \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n01.xml
new file mode 100644
index 0000000000..58f8d2fd8c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n01.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<root ="any">missing name in Attribute</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n02.xml
new file mode 100644
index 0000000000..a487ebba27
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n02.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<root attr1"any">missing Eq in Attribute</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n03.xml
new file mode 100644
index 0000000000..12cd0fc5f6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n03.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<root attr1= >missing AttValue in Attribute</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n04.xml
new file mode 100644
index 0000000000..cccc60dc27
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n04.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<root "any">missing name and Eq in Attribute</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n05.xml
new file mode 100644
index 0000000000..d31cc7043d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n05.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<root attr1>missing Eq and AttValue in Attribute</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n06.xml
new file mode 100644
index 0000000000..5954990e0b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n06.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<root = >missing Name and AttValue in Attribute</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n07.xml
new file mode 100644
index 0000000000..db578f702d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n07.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<root attr1"any"=>wrong ordering in Attribute</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n08.xml
new file mode 100644
index 0000000000..716df810c1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n08.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<root "any"=attr1>wrong ordering in Attribute</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n09.xml
new file mode 100644
index 0000000000..71722f49d7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n09.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<root =attr1"any">wrong ordering in Attribute</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.ent
new file mode 100644
index 0000000000..f1bba14c8e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.ent
@@ -0,0 +1,2 @@
+<?xml verison="1.0"?>
+any \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.xml
new file mode 100644
index 0000000000..68ad4eb040
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n10.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+<!ENTITY aExternal SYSTEM "ibm41n10.ent">
+]>
+<root attr1="&aExternal;">direct reference to external entinity in Attribute</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.ent
new file mode 100644
index 0000000000..f1bba14c8e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.ent
@@ -0,0 +1,2 @@
+<?xml verison="1.0"?>
+any \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.xml
new file mode 100644
index 0000000000..10652b8307
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n11.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+<!ENTITY aExternal SYSTEM "ibm41n11.ent">
+<!ENTITY aIndirect "&aExternal;">
+]>
+<root attr1="&aIndirect;">indirect reference to external entinity in Attribute</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n12.xml
new file mode 100644
index 0000000000..23f8eb9971
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n12.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+<!NOTATION JPGformat SYSTEM "JPGFormat">
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root attr1="&aImage;">direct reference to external unparsed entinity in Attribute</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n13.xml
new file mode 100644
index 0000000000..d8b0ac1e1f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n13.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+<!ENTITY withlt "have <lessthan> inside">
+]>
+<root attr1="&withlt;">Direct reference to an entity with &lt; as part of its replacement text in Attribute</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n14.xml
new file mode 100644
index 0000000000..20ecb77fe1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P41/ibm41n14.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+<!ENTITY withlt "have <lessthan> inside">
+<!ENTITY aIndirect "&withlt;">
+]>
+<root attr1="&aIndirect;">indirect reference to an entity with &lt; as part of its replacement text in Attribute</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Entries
new file mode 100644
index 0000000000..cc2de15118
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Entries
@@ -0,0 +1,6 @@
+/ibm42n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm42n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm42n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm42n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm42n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Repository
new file mode 100644
index 0000000000..5dcf694209
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P42
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n01.xml
new file mode 100644
index 0000000000..953178c64d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n01.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+]>
+<root attr1="any">missing Name in ETag</>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n02.xml
new file mode 100644
index 0000000000..8e84b69243
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n02.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+]>
+<root attr1="any">Wrong begining sequence in ETag <\root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n03.xml
new file mode 100644
index 0000000000..5de14d16d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n03.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+]>
+<root attr1="any">Wrong begining sequence in ETag <root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n04.xml
new file mode 100644
index 0000000000..97e82e6c54
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n04.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+]>
+<root attr1="any">Extra white space before Name in ETag </ root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n05.xml
new file mode 100644
index 0000000000..47694b6dd1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P42/ibm42n05.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+]>
+<root> Attribute in ETag </root attr1="any">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Entries
new file mode 100644
index 0000000000..553c5e2a08
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm43n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm43n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm43n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm43n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Repository
new file mode 100644
index 0000000000..da059b5dd6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P43
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n01.xml
new file mode 100644
index 0000000000..30e28dd061
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n01.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY % paaa "a string">
+]>
+<root>
+<!NOTATION nota1 SYSTEM "bogus.not">
+</root>
+<!--* NotationDecl in content --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n02.xml
new file mode 100644
index 0000000000..67f7f7e6e3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n02.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY % paaa "a string">
+]>
+<root>
+<!ELEMENT ele1 ANY>
+</root>
+<!--* ElementDecl in content -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n04.xml
new file mode 100644
index 0000000000..98d4bd34a1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n04.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY % paaa "a string">
+]>
+<root>
+<!ENTITY GE1 "This is an entity declaration">
+</root>
+<!--* EntityDecl in content -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n05.xml
new file mode 100644
index 0000000000..c15483be66
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P43/ibm43n05.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY % paaa "a string">
+]>
+<root>
+<!ATTLIST root attr1 ID #IMPLIED>
+</root>
+<!--* AttlistDecl in content -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Entries
new file mode 100644
index 0000000000..4d083bc143
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm44n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm44n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm44n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm44n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Repository
new file mode 100644
index 0000000000..16e3b32ecb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P44
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n01.xml
new file mode 100644
index 0000000000..6c67518040
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+< />
+<!--* Missing Name and Attribute EmptyElemTag *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n02.xml
new file mode 100644
index 0000000000..4af3042e15
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<attr1="any" root/>
+<!--* Swithech positions of Name and Attribute EmptyElemTag *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n03.xml
new file mode 100644
index 0000000000..3213209091
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n03.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<root attr1="any"\>
+<!--* Wrong closing sequence in EmptyElemTag *-->
+
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n04.xml
new file mode 100644
index 0000000000..3372fcaac5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P44/ibm44n04.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root attr1 CDATA #IMPLIED>
+<!ATTLIST root attr2 CDATA #IMPLIED>
+]>
+<root attr1="any1" attr1="any2"/>
+<!--* Duplicate Attribute Name in EmptyElemTag *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Entries
new file mode 100644
index 0000000000..06c3aebd24
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Entries
@@ -0,0 +1,10 @@
+/ibm45n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm45n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm45n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm45n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm45n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm45n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm45n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm45n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm45n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Repository
new file mode 100644
index 0000000000..833bd5d4e2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P45
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n01.xml
new file mode 100644
index 0000000000..b24d7da407
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Mising Name in elementdecl *-->
+<!ELEMENT (#PCDATA)>
+]>
+<root>Any content</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n02.xml
new file mode 100644
index 0000000000..c3921565fb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n02.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Mising white space in elementdecl *-->
+<!ELEMENT aEle(#PCDATA)>
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n03.xml
new file mode 100644
index 0000000000..e9d6df08e8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n03.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Mising contentspec in elementdecl *-->
+<!ELEMENT root >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n04.xml
new file mode 100644
index 0000000000..dd0465d2cd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n04.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Mising contentspec and white space in elementdecl *-->
+<!ELEMENT root>
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n05.xml
new file mode 100644
index 0000000000..9cf73a935d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n05.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Mising Name S contentspec in elementdecl *-->
+<!ELEMENT >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n06.xml
new file mode 100644
index 0000000000..952164e197
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n06.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Wrong ordering in elementdecl *-->
+<!ELEMENT (#PCDATA) aElement >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n07.xml
new file mode 100644
index 0000000000..46438e8916
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n07.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Wrong begining sequence in elementdecl *-->
+<ELEMENT aElement (#PCDATA)>
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n08.xml
new file mode 100644
index 0000000000..928721d881
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n08.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Wrong Keyword: Element in elementdecl *-->
+<!Element aElement (#PCDATA)>
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n09.xml
new file mode 100644
index 0000000000..c0cf19306d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P45/ibm45n09.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Wrong keyword: element in elementdecl *-->
+<!element aElement (#PCDATA)>
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Entries
new file mode 100644
index 0000000000..ae84c66b4f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Entries
@@ -0,0 +1,6 @@
+/ibm46n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm46n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm46n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm46n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm46n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Repository
new file mode 100644
index 0000000000..6d42a89f21
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P46
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n01.xml
new file mode 100644
index 0000000000..a61d556217
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Wrong keyword: empty in contentspec *-->
+<!ELEMENT aElement empty>
+]>
+<root>Any content</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n02.xml
new file mode 100644
index 0000000000..72d3967cac
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n02.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Wrong keyword: Empty in contentspec *-->
+<!ELEMENT aElement Empty >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n03.xml
new file mode 100644
index 0000000000..5961ff402d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n03.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Wrong keyword: Any in contentspec *-->
+<!ELEMENT aElement Any>
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n04.xml
new file mode 100644
index 0000000000..b9ec2d3886
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n04.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Wrong keyword: any in contentspec *-->
+<!ELEMENT aElement any >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n05.xml
new file mode 100644
index 0000000000..27e5034e6d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P46/ibm46n05.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Bogus content type: #CDATA in contentspec *-->
+<!ELEMENT aElement #CDATA>
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Entries
new file mode 100644
index 0000000000..bb4be031d4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm47n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm47n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm47n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm47n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm47n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm47n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Repository
new file mode 100644
index 0000000000..d869c127fc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P47
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n01.xml
new file mode 100644
index 0000000000..69153b321c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n01.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Missing choice|seq in children *-->
+<!ELEMENT aElement + >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n02.xml
new file mode 100644
index 0000000000..989d7c47f8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n02.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Missing choice|seq in children *-->
+<!ELEMENT aElement * >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n03.xml
new file mode 100644
index 0000000000..7408d51ee7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n03.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!--* Missing choice|seq in children *-->
+<!ELEMENT aElement ? >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n04.xml
new file mode 100644
index 0000000000..3f4037ee30
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n04.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Wrong ordering in children *-->
+<!ELEMENT aElement *(a,a) >
+]>
+<root>Any content</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n05.xml
new file mode 100644
index 0000000000..1ad4977fe0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n05.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* Wrong ordering in children *-->
+<!ELEMENT aElement +(a|a) >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n06.xml
new file mode 100644
index 0000000000..afb6c1077f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P47/ibm47n06.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Wrong keyword: ^ in children *-->
+<!ELEMENT aElement (a,a)^ >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Entries
new file mode 100644
index 0000000000..3c2e4f3b27
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Entries
@@ -0,0 +1,8 @@
+/ibm48n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm48n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm48n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm48n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm48n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm48n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm48n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Repository
new file mode 100644
index 0000000000..54cb25f999
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P48
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n01.xml
new file mode 100644
index 0000000000..29294bbd1a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Missing seq|choice|Name in cp *-->
+<!ELEMENT aElement ((a,a)|+) >
+]>
+<root>Any content</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n02.xml
new file mode 100644
index 0000000000..82126a6aec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Missing seq|choice|Name in cp *-->
+<!ELEMENT aElement (*) >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n03.xml
new file mode 100644
index 0000000000..7eca7c9986
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Missing seq|choice|Name in cp *-->
+<!ELEMENT aElement (?|(a,a)|a) >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n04.xml
new file mode 100644
index 0000000000..921e2ffa14
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n04.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* wrong ordering in cp *-->
+<!ELEMENT aElement (+(a,a)|a) >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n05.xml
new file mode 100644
index 0000000000..cef09d6b46
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n05.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* wrong ordering in cp *-->
+<!ELEMENT aElement (*(a|b),a) >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n06.xml
new file mode 100644
index 0000000000..ddfba81c72
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n06.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* wrong ordering in cp *-->
+<!ELEMENT aElement (a, ?a) >
+]>
+<root>Any content</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n07.xml
new file mode 100644
index 0000000000..0a5fbb14e9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P48/ibm48n07.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* wrong keyword: ^ in cp *-->
+<!ELEMENT aElement ( a^ | a ) >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Entries
new file mode 100644
index 0000000000..3b0476058e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm49n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm49n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm49n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm49n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm49n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm49n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Repository
new file mode 100644
index 0000000000..870636c0f7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P49
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n01.xml
new file mode 100644
index 0000000000..b78fdd65e9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* missing cp in choice *-->
+<!ELEMENT aElement (|)* >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n02.xml
new file mode 100644
index 0000000000..9dfb650b23
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* missing cp in choice *-->
+<!ELEMENT aElement (a |b|)* >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n03.xml
new file mode 100644
index 0000000000..0433730aa2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n03.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* wrong separator: ! in choice *-->
+<!ELEMENT aElement (a!b)+ >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n04.xml
new file mode 100644
index 0000000000..cd9ec0d9af
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n04.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* missing separator in choice *-->
+<!ELEMENT aElement (a b) >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n05.xml
new file mode 100644
index 0000000000..51bce21b59
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n05.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* extra separator in choice *-->
+<!ELEMENT aElement (a ||b)* >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n06.xml
new file mode 100644
index 0000000000..498cff3373
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P49/ibm49n06.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* missing closing bracket in choice *-->
+<!ELEMENT aElement (a |b * >
+]>
+<root>Any content</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Entries
new file mode 100644
index 0000000000..1929c46a58
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Entries
@@ -0,0 +1,8 @@
+/ibm50n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm50n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm50n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm50n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm50n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm50n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm50n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Repository
new file mode 100644
index 0000000000..36a187c2ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P50
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n01.xml
new file mode 100644
index 0000000000..ee054dd0cb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* missing cp in seq *-->
+<!ELEMENT aElement (,) >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n02.xml
new file mode 100644
index 0000000000..92a0f7ce7f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* missing cp in seq *-->
+<!ELEMENT aElement (a,a,)+ >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n03.xml
new file mode 100644
index 0000000000..3e2b4cb8dd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n03.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* wrong separators in seq *-->
+<!ELEMENT aElement (a,a|b) >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n04.xml
new file mode 100644
index 0000000000..06d463972f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n04.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* wrong separator in seq *-->
+<!ELEMENT aElement (a . b)* >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n05.xml
new file mode 100644
index 0000000000..aa871ee359
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n05.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* extra separator in seq *-->
+<!ELEMENT aElement ((a|b),,a)? >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n06.xml
new file mode 100644
index 0000000000..ee976d527a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n06.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* missing separator in seq *-->
+<!ELEMENT aElement ((a|b) (b|a)) >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n07.xml
new file mode 100644
index 0000000000..c049b65186
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P50/ibm50n07.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* wrong closing bracket in seq *-->
+<!ELEMENT aElement (a, b]* >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Entries
new file mode 100644
index 0000000000..6b8ebadd12
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Entries
@@ -0,0 +1,8 @@
+/ibm51n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Repository
new file mode 100644
index 0000000000..7adbdb0ebb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P51
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n01.xml
new file mode 100644
index 0000000000..4ee24894e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* wrong keyword : #pcdata in Mixed *-->
+<!ELEMENT aElement (#pcdata)* >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n02.xml
new file mode 100644
index 0000000000..76fbe2cab6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* #PCDATA must be the first in Mixed *-->
+<!ELEMENT aElement ( a | b|#PCDATA)* >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n03.xml
new file mode 100644
index 0000000000..55d6fc00b3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n03.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* Missing '|' in Mixed *-->
+<!ELEMENT aElement ( #PCDATA a )* >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n04.xml
new file mode 100644
index 0000000000..bf2508899c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n04.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* wrong keyword: #CDATA in Mixed *-->
+<!ELEMENT aElement (#CDATA) >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n05.xml
new file mode 100644
index 0000000000..207845c6a2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n05.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* Missing '* after ')' in Mixed *-->
+<!ELEMENT aElement ( #PCDATA | a ) >
+]>
+<root>Any content</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n06.xml
new file mode 100644
index 0000000000..0bfda9cd5f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n06.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* Wrong closing bracket in Mixed *-->
+<!ELEMENT aElement ( #PCDATA | a ]* >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n07.xml
new file mode 100644
index 0000000000..19d17ed8a2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P51/ibm51n07.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!--* Missing closing bracket in Mixed *-->
+<!ELEMENT aElement ( #PCDATA *>
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Entries
new file mode 100644
index 0000000000..1e35137538
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm52n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm52n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm52n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm52n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm52n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm52n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Repository
new file mode 100644
index 0000000000..a8ba6c5f09
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P52
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n01.xml
new file mode 100644
index 0000000000..4415dcbca0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Missing Name in AttlistDecl *-->
+<!ATTLIST attr1 CDATA #IMPLIED>
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n02.xml
new file mode 100644
index 0000000000..bb3beeaff5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Missing white space after 'ATTLIST' *-->
+<!ATTLISTa attr1 ID #REQUIRED >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n03.xml
new file mode 100644
index 0000000000..b59a8abf23
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Wrong ordering in AttlistDecl *-->
+<!ATTLIST attr1 CDATA "defaultAttValue" a attr2 CDATA #IMPLIED>
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n04.xml
new file mode 100644
index 0000000000..13599e8585
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n04.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Wrong keyword: Attlist in AttlistDecl *-->
+<!Attlist a attr1 CDATA #REQUIRED >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n05.xml
new file mode 100644
index 0000000000..5da5020ae3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n05.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Missing closing bracket in AttlistDecl *-->
+<!ATTLIST a
+<!--* random *-->
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n06.xml
new file mode 100644
index 0000000000..ce079358e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P52/ibm52n06.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Wrong begining sequence in AttlistDecl *-->
+<ATTLIST a attr1 CDATA "default">
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Entries
new file mode 100644
index 0000000000..c02920250f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Entries
@@ -0,0 +1,9 @@
+/ibm53n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm53n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm53n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm53n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm53n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm53n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm53n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm53n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Repository
new file mode 100644
index 0000000000..ba4c7623e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P53
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n01.xml
new file mode 100644
index 0000000000..089af460cb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Missing DefaultDecl in AttDef *-->
+<!ATTLIST a attr1 CDATA >
+]>
+<root>Any content</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n02.xml
new file mode 100644
index 0000000000..6a3d53c8ac
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Missing white space between AttType and DefaultDecl in AttDef *-->
+<!ATTLIST a attr1 (abc|def)"def">
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n03.xml
new file mode 100644
index 0000000000..10a95ae899
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Missing AttType in AttDef *-->
+<!ATTLIST a attr1 #IMPLIED>
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n04.xml
new file mode 100644
index 0000000000..125c7b994f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n04.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Missing white space between Name and AttType in AttDef *-->
+<!ATTLIST a attr1(abc|def) "abc" >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n05.xml
new file mode 100644
index 0000000000..ac9312a92b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n05.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Missing Name in AttDef *-->
+<!ATTLIST a (abc|def) "def" >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n06.xml
new file mode 100644
index 0000000000..8a013001b0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n06.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Missing white space before Name in AttDef *-->
+<!ATTLIST a attr1 CDATA "default"attr2 ID #required>
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n07.xml
new file mode 100644
index 0000000000..6638a762cd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n07.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* Wrong ordering in AttDef *-->
+<!ATTLIST a (abc|def) attr1 "abc">
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n08.xml
new file mode 100644
index 0000000000..bbc4f2a6ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P53/ibm53n08.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA)>
+<!ELEMENT a ANY>
+<!--* wrong ordering in AttDef *-->
+<!ATTLIST a "default" CDATA attr1 >
+]>
+<root>Any content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Entries
new file mode 100644
index 0000000000..483b097b69
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm54n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm54n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Repository
new file mode 100644
index 0000000000..d0e67068c8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P54
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n01.xml
new file mode 100644
index 0000000000..e7e120c0ef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- test for Production 54-->
+<!DOCTYPE AttrType
+[
+<!ELEMENT AttrType ANY>
+<!ELEMENT a EMPTY>
+<!ATTLIST a att BOGUSATTR #IMPLIED>
+]>
+<AttrType>
+Giving a Bogus attribute.
+</AttrType> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n02.xml
new file mode 100644
index 0000000000..004d8db582
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P54/ibm54n02.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- test for Production 54-->
+<!DOCTYPE AttrType
+[
+<!ELEMENT AttrType ANY>
+<!ELEMENT a EMPTY>
+<!ATTLIST a att PCDATA #IMPLIED>
+]>
+<AttrType>
+Giving a wrong AttType for the attribute.
+<a att="23" ></a>
+</AttrType> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Entries
new file mode 100644
index 0000000000..e5bbd9a0ff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm55n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm55n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm55n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Repository
new file mode 100644
index 0000000000..44ade23a16
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P55
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n01.xml
new file mode 100644
index 0000000000..56229377ff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- test syntax invalid for Production 55-->
+<!DOCTYPE AttrType
+[
+<!ELEMENT AttrType (#PCDATA)>
+<!ELEMENT a EMPTY>
+<!ATTLIST a att cdata #IMPLIED>
+]>
+<AttrType>
+Giving a lowercase for CDATA attribute.
+</AttrType> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n02.xml
new file mode 100644
index 0000000000..649ed99aca
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n02.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- test invalid syntax for Production 55-->
+<!DOCTYPE AttrType
+[
+<!ELEMENT AttrType (#PCDATA)>
+<!ELEMENT a EMPTY>
+<!ATTLIST a att #CDATA #IMPLIED>
+]>
+<AttrType>
+Giving a wrong character.
+</AttrType> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n03.xml
new file mode 100644
index 0000000000..c935b9be47
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P55/ibm55n03.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- test invalid syntax for Production 55-->
+<!DOCTYPE AttrType
+[
+<!ELEMENT AttrType (#PCDATA)>
+<!ELEMENT a EMPTY>
+<!ATTLIST a att CData #IMPLIED>
+]>
+<AttrType>
+ Giving a wrong key word of the StringType.
+</AttrType> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Entries
new file mode 100644
index 0000000000..243eeabccf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Entries
@@ -0,0 +1,8 @@
+/ibm56n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Repository
new file mode 100644
index 0000000000..023c06715c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P56
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n01.xml
new file mode 100644
index 0000000000..c46357e0d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- test for Production 56-->
+<!DOCTYPE root
+[
+<!ELEMENT root ANY>
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr id #REQUIRED>
+]>
+<root>
+Invalid TokenizedType id(lowercase)
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n02.xml
new file mode 100644
index 0000000000..87fc28dfa0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n02.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- test for Production 56-->
+<!DOCTYPE root
+[
+<!ELEMENT root ANY>
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr Idref #REQUIRED>
+]>
+<root>
+Invalid TokenizedType Idref(case sensitive)
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n03.xml
new file mode 100644
index 0000000000..b37353dd00
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n03.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- test for Production 56-->
+<!DOCTYPE root
+[
+<!ELEMENT root ANY>
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr IdRefs #REQUIRED>
+]>
+<root>
+Invalid TokenizedType IdRefs(case sensitive)
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n04.xml
new file mode 100644
index 0000000000..884a305acc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n04.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- test for Production 56-->
+<!DOCTYPE root
+[
+<!ELEMENT root ANY>
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr EntitY #REQUIRED>
+]>
+<root>
+Invalid TokenizedType EntitY(case sensitive)
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n05.xml
new file mode 100644
index 0000000000..5f77b2636d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n05.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- test for Production 56-->
+<!DOCTYPE root
+[
+<!ELEMENT root ANY>
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr nmTOKEN #REQUIRED>
+]>
+<root>
+Invalid TokenizedType nmTOKEN(case sensitive)
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n06.xml
new file mode 100644
index 0000000000..db614d6929
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n06.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- test for Production 56-->
+<!DOCTYPE root
+[
+<!ELEMENT root ANY>
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr NMtokens #REQUIRED>
+]>
+<root>
+Invalid TokenizedType NMtokens(case sensitive)
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n07.xml
new file mode 100644
index 0000000000..f6a1dd802d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P56/ibm56n07.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- test for Production 56-->
+<!DOCTYPE root
+[
+<!ELEMENT root ANY>
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr #ID #REQUIRED>
+]>
+<root>
+Invalid TokenizedType #ID(Wrong Character)
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Entries
new file mode 100644
index 0000000000..92a05a11f8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm57n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Repository
new file mode 100644
index 0000000000..3e07d7b8bd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P57
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/ibm57n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/ibm57n01.xml
new file mode 100644
index 0000000000..1c6d7593b7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P57/ibm57n01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 57-->
+<!DOCTYPE root
+ [
+ <!ELEMENT root EMPTY>
+ <!ATTLIST root att NMTOKEN (a|b) #IMPLIED>
+ ]>
+ <root>
+This test case tests the illegal enumerated types
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Entries
new file mode 100644
index 0000000000..c004f688bf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Entries
@@ -0,0 +1,9 @@
+/ibm58n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm58n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm58n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm58n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm58n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm58n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm58n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm58n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Repository
new file mode 100644
index 0000000000..8d1d9401ba
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P58
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n01.xml
new file mode 100644
index 0000000000..729aac283b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n01.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 58-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!NOTATION this SYSTEM "alpha">
+ <!ATTLIST one attr notation (this) #IMPLIED>
+ ]>
+ <test>
+This is a Negative test with notation (name)
+It is case sensitive.
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n02.xml
new file mode 100644
index 0000000000..fae10f978e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n02.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 58-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!NOTATION this SYSTEM "alpha">
+ <!ATTLIST one attr NOTATION this) #IMPLIED>
+ ]>
+ <test>
+This is a Negative test with (name)
+Missing the open parenthesis
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n03.xml
new file mode 100644
index 0000000000..77511ff4e7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n03.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 58-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!NOTATION this SYSTEM "alpha">
+ <!ATTLIST one attr NOTATION () #IMPLIED>
+ ]>
+ <test>
+This is a Negative test with NOTATION ()
+Missing the required field
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n04.xml
new file mode 100644
index 0000000000..6f861028cd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n04.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 58-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!NOTATION this SYSTEM "alpha">
+ <!ATTLIST one attr NOTATION (this #IMPLIED>
+ ]>
+ <test>
+This is a Negative test with NOTATION (Name
+Missing the closing brackets
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n05.xml
new file mode 100644
index 0000000000..ed162a2ae8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n05.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 58-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!NOTATION this SYSTEM "alpha">
+ <!ATTLIST one attr (this) NOTATION #IMPLIED>
+ ]>
+ <test>
+This is a Negative test with (Name) NOTATION
+Wrong Ordering
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n06.xml
new file mode 100644
index 0000000000..68148a57ae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n06.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!-- Syntax test for Production 58-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT two EMPTY>
+ <!NOTATION this SYSTEM "alpha">
+ <!NOTATION that SYSTEM "beta">
+ <!ATTLIST three attr NOTATION (this,that) #IMPLIED>
+ ]>
+<test>
+Negative Test.
+This test tests the presence of a correct seperator. There is a wrong seperator(,)
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n07.xml
new file mode 100644
index 0000000000..ab04d335b9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n07.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!-- Syntax test for Production 58-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT two EMPTY>
+ <!NOTATION this SYSTEM "alpha">
+ <!ATTLIST three attr NOTATION(this) #IMPLIED>
+ ]>
+<test>
+Negative Test.
+Missing space after NOTATION
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n08.xml
new file mode 100644
index 0000000000..db72fca99f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P58/ibm58n08.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!-- Syntax test for Production 58-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT two EMPTY>
+ <!NOTATION this SYSTEM "alpha">
+ <!ATTLIST three attr NOTATION ("this") #IMPLIED>
+ ]>
+<test>
+Negative Test.
+Presence of quotes around the value
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Entries
new file mode 100644
index 0000000000..ae11ab71e3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm59n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm59n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm59n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm59n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm59n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm59n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Repository
new file mode 100644
index 0000000000..49253b6f51
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P59
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n01.xml
new file mode 100644
index 0000000000..b5cdd68645
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n01.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 59-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT enum (#PCDATA)>
+ <!ATTLIST one attr () #IMPLIED>
+ ]>
+ <test>
+This is a Negative test
+Missing the required field
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n02.xml
new file mode 100644
index 0000000000..1e3417ff6c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n02.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 59-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT enum (#PCDATA)>
+ <!ATTLIST one attr (enum #IMPLIED>
+ ]>
+ <test>
+This is a Negative test
+Missing the closing brackets
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n03.xml
new file mode 100644
index 0000000000..86b03de53b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n03.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 59-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT two EMPTY>
+ <!ELEMENT enum (#PCDATA)>
+ <!ATTLIST one attr (enum,two) #IMPLIED>
+ ]>
+ <test>
+This is a Negative test
+Wrong Separator(, instead of |)
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n04.xml
new file mode 100644
index 0000000000..03cac38f2d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n04.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 59-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT enum (#PCDATA)>
+ <!ATTLIST one attr ("enum") #IMPLIED>
+ ]>
+ <test>
+This is a Negative test
+Illegal presence of quotes around the value
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n05.xml
new file mode 100644
index 0000000000..71054a8039
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n05.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 59-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT enum (#PCDATA)>
+ <!ATTLIST one attr enum) #IMPLIED>
+ ]>
+ <test>
+This is a Negative test
+Missing the begining bracket
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n06.xml
new file mode 100644
index 0000000000..3879eb1eaf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P59/ibm59n06.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 59-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT enum (#PCDATA)>
+ <!ATTLIST one attr enum) #IMPLIED>
+ ]>
+ <test>
+This is a Negative test
+Missing the Opening brackets
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Entries
new file mode 100644
index 0000000000..676c6696ca
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Entries
@@ -0,0 +1,9 @@
+/ibm60n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Repository
new file mode 100644
index 0000000000..5fd0acaad4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P60
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n01.xml
new file mode 100644
index 0000000000..9b010b9043
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n01.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 60-->
+<!DOCTYPE Java
+ [
+ <!ELEMENT Java ANY>
+ <!ELEMENT one EMPTY>
+ <!ATTLIST one chapter CDATA #required>
+ ]>
+<Java>
+<one chapter="Introduction"></one>
+Negative Test. Case sensitive.
+</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n02.xml
new file mode 100644
index 0000000000..5f5fc0a980
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n02.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 60-->
+<!DOCTYPE Java
+ [
+ <!ELEMENT Java ANY>
+ <!ELEMENT one EMPTY>
+ <!ATTLIST one chapter CDATA #Implied>
+ ]>
+<Java>
+<one chapter="Introduction"></one>
+Negative test. Case Sensitive
+</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n03.xml
new file mode 100644
index 0000000000..83b649ab14
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n03.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 60-->
+<!DOCTYPE Java
+ [
+ <!ELEMENT Java ANY>
+ <!ELEMENT one EMPTY>
+ <!ATTLIST one chapter CDATA !IMPLIED>
+ ]>
+<Java>
+<one chapter="Introduction"></one>
+Negative Test. Wrong Character.
+</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n04.xml
new file mode 100644
index 0000000000..9c93cb65d6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n04.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 60-->
+<!DOCTYPE Java
+ [
+ <!ELEMENT Java ANY>
+ <!ELEMENT one EMPTY>
+ <!ATTLIST one chapter CDATA #FIXED >
+ ]>
+<Java>
+<one chapter="Introduction"></one>
+Negative test. Missing required field(#FIXED should have a value)
+</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n05.xml
new file mode 100644
index 0000000000..efcc47186b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n05.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 60-->
+<!DOCTYPE Java
+ [
+ <!ELEMENT Java ANY>
+ <!ELEMENT one EMPTY>
+ <!ATTLIST one chapter CDATA #FIXED"Introduction">
+ ]>
+<Java>
+<one chapter="Introduction"></one>
+Negative test. Missing required field(#FIXED should have a space before value)
+</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n06.xml
new file mode 100644
index 0000000000..a755908918
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n06.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 60-->
+<!DOCTYPE Java
+ [
+ <!ELEMENT Java ANY>
+ <!ELEMENT one EMPTY>
+ <!ATTLIST one chapter CDATA "Introduction" #FIXED>
+ ]>
+<Java>
+<one chapter="Introduction"></one>
+Negative test. Wrong Ordering
+</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n07.xml
new file mode 100644
index 0000000000..7c3fa16264
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n07.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!-- WFC test for Production 60-->
+<!DOCTYPE Java
+ [
+ <!ELEMENT Java ANY>
+ <!ELEMENT one EMPTY>
+ <!ENTITY avalue "<Introduction">
+ <!ATTLIST one chapter CDATA #REQUIRED>
+ ]>
+<Java>
+<one chapter="&avalue;"></one>
+Negative test.
+The replacement text of any entity referred to directly or indirectly
+in an attribute value contains a less than character
+</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n08.xml
new file mode 100644
index 0000000000..ec49feb9e9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P60/ibm60n08.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 60-->
+<!DOCTYPE Java
+ [
+ <!ELEMENT Java ANY>
+ <!ELEMENT one EMPTY>
+ <!ATTLIST one chapter CDATA #REQUIRED #IMPLIED>
+ ]>
+<Java>
+<one chapter="Introduction"></one>
+Negative Test. More than one Default type declarations.
+</Java>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Entries
new file mode 100644
index 0000000000..c82dbe3970
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm61n01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm61n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Repository
new file mode 100644
index 0000000000..257ec20946
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P61
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.dtd
new file mode 100644
index 0000000000..2e1bdd0002
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.dtd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 61-->
+<![NOTINCLUDE[
+<!ELEMENT tiger EMPTY>
+<!ELEMENT animal ANY>
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.xml
new file mode 100644
index 0000000000..537c8d47d2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P61/ibm61n01.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 61-->
+<!DOCTYPE animal SYSTEM "ibm61n01.dtd">
+<animal>
+ <tiger/>
+</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Entries
new file mode 100644
index 0000000000..17414ee4d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Entries
@@ -0,0 +1,17 @@
+/ibm62n01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n02.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n03.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n04.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n05.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n06.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n07.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n08.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm62n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Repository
new file mode 100644
index 0000000000..2b5cea982d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P62
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.dtd
new file mode 100644
index 0000000000..4cf76db05d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.dtd
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 62-->
+<![ include [
+<!ELEMENT tiger EMPTY>
+<!ELEMENT animal ANY>
+]]>
+
+<!--Negative test with pattern1 of P62-->
+<!--include(Case sensitive)--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.xml
new file mode 100644
index 0000000000..b1a761f409
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n01.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 62-->
+<!DOCTYPE animal SYSTEM "ibm62n01.dtd">
+<animal>
+ <tiger/>
+Negative test. Test includeSect with include(Case sensitive)
+</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.dtd
new file mode 100644
index 0000000000..e6d77f0bd7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.dtd
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 62-->
+<![[INCLUDE[
+<!ELEMENT tiger EMPTY>
+<!ELEMENT animal ANY>
+]]>
+
+<!--Negative test with pattern2 of P62-->
+<!--An extra '[' is added--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.xml
new file mode 100644
index 0000000000..2b1c8f87b6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n02.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 62-->
+<!DOCTYPE animal SYSTEM "ibm62n02.dtd">
+<animal>
+ <tiger/>
+Negative test. An extra '[' is used.
+</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.dtd
new file mode 100644
index 0000000000..afcb5f418b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.dtd
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 62-->
+<?[INCLUDE[
+<!ELEMENT tiger EMPTY>
+<!ELEMENT animal ANY>
+]]>
+
+<!--Negative test with pattern3 of P62-->
+<!--An Wrong character is used to proir to [INCLUDE--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.xml
new file mode 100644
index 0000000000..fac08e98cd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n03.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 62-->
+<!DOCTYPE animal SYSTEM "ibm62n03.dtd">
+<animal>
+ <tiger/>
+Negative test. Wrong character is used is used.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.dtd
new file mode 100644
index 0000000000..61190011c9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.dtd
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 62-->
+<![[
+<!ELEMENT tiger EMPTY>
+<!ELEMENT animal ANY>
+]]>
+
+<!--Negative test with pattern4 of P62-->
+<!--Missing the required field INCLUDE--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.xml
new file mode 100644
index 0000000000..f21e770cdf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n04.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 62-->
+<!DOCTYPE animal SYSTEM "ibm62n04.dtd">
+<animal>
+ <tiger/>
+Negative test. Missing the required field INCLUDE.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.dtd
new file mode 100644
index 0000000000..efec801204
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.dtd
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 62-->
+<![INCLUDE
+<!ELEMENT tiger EMPTY>
+<!ELEMENT animal ANY>
+]]>
+
+<!--Negative test with pattern5 of P62-->
+<!--Missing the required field '[' after INCLUDE--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.xml
new file mode 100644
index 0000000000..8001d2ec11
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n05.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 62-->
+<!DOCTYPE animal SYSTEM "ibm62n05.dtd">
+<animal>
+ <tiger/>
+Negative test. Missing the required field '[' after INCLUDE.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.dtd
new file mode 100644
index 0000000000..a25d523250
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.dtd
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 62-->
+<![
+<!ELEMENT tiger EMPTY>
+<!ELEMENT animal ANY>
+[INCLUDE
+]]>
+<!--Negative test with pattern6 of P62-->
+<!--Wrong Ordering. External subset declaration prior to the keyword INCLUDE-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.xml
new file mode 100644
index 0000000000..3091f239a5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n06.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 62-->
+<!DOCTYPE animal SYSTEM "ibm62n06.dtd">
+<animal>
+ <tiger/>
+Negative test. Wrong Ordering. External subset declaration prior to the keyword INCLUDE
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.dtd
new file mode 100644
index 0000000000..55a6c7619b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.dtd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 62-->
+<![ INCLUDE [
+<!ELEMENT tiger EMPTY>
+<!ELEMENT animal ANY>
+
+<!--Negative test with pattern7 of P62-->
+<!--Missing closing sequence.--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.xml
new file mode 100644
index 0000000000..f1260ea393
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n07.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 62-->
+<!DOCTYPE animal SYSTEM "ibm62n07.dtd">
+<animal>
+ <tiger/>
+Negative test. Missing closing sequence.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.dtd
new file mode 100644
index 0000000000..6c2b3a3299
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.dtd
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!ELEMENT animal ANY>
+<!ELEMENT tiger ANY>
+<!-- DTD for Production 62-->
+<![INCLUDE[
+]>
+
+<!--Negtive test with pattern8 of P62-->
+<!--Missing one "]" in closing sequence.--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.xml
new file mode 100644
index 0000000000..a8b23e052e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P62/ibm62n08.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 62-->
+<!DOCTYPE animal SYSTEM "ibm62n08.dtd">
+<animal>
+ <tiger/>
+Negative test. Missing external subset declaration.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Entries
new file mode 100644
index 0000000000..e8dabab649
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Entries
@@ -0,0 +1,15 @@
+/ibm63n01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm63n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm63n02.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm63n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm63n03.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm63n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm63n04.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm63n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm63n05.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm63n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm63n06.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm63n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm63n07.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm63n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Repository
new file mode 100644
index 0000000000..9ca5790cb6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P63
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.dtd
new file mode 100644
index 0000000000..79158e1bc3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.dtd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 63-->
+<![ignore[
+]]>
+<!--Negative test with pattern1 of P63-->
+<!--Case sensitive. ignore is used instead of IGNORE --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.xml
new file mode 100644
index 0000000000..1312eb6f01
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 63-->
+<!DOCTYPE animal SYSTEM "ibm63n01.dtd"
+[
+<!ELEMENT animal ANY>
+<!ELEMENT tiger (#PCDATA)>
+<!ATTLIST animal a (tiger) #REQUIRED>
+]>
+<animal a = "TIGER1">
+Negative test. Case sensitive(ignore is used instead of IGNORE).
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.dtd
new file mode 100644
index 0000000000..3da7b272ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.dtd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 63-->
+<![[IGNORE[
+<!ELEMENT animal EMPTY>
+<!ELEMENT tiger EMPTY>
+]]>
+<!--Negative test with pattern2 of P63-->
+<!--Extra '[' is used before IGNORE. --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.xml
new file mode 100644
index 0000000000..7b9b9260a0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 63-->
+<!DOCTYPE animal SYSTEM "ibm63n02.dtd"
+[
+<!ATTLIST attr a (tiger) #REQUIRED>
+]>
+<animal a = "TIGER1">
+Negative test. Extra '[' is used before IGNORE.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.dtd
new file mode 100644
index 0000000000..6a74ba5ff9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.dtd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 63-->
+<?[IGNORE[
+]]>
+<!--Negative test with pattern3 of P63-->
+<!--Wrong Character '?' instead of '!' --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.xml
new file mode 100644
index 0000000000..aa2bd69f77
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n03.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 63-->
+<!DOCTYPE animal SYSTEM "ibm63n03.dtd"
+[
+<!ELEMENT animal ANY>
+<!ELEMENT tiger (#PCDATA)>
+<!ATTLIST animal a (tiger) #REQUIRED>
+]>
+<animal a = "TIGER1">
+Negative test. Wrong character.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.dtd
new file mode 100644
index 0000000000..f5ba20c9bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.dtd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 63-->
+<![[
+]]>
+<!--Negative test with pattern4 of P63-->
+<!--Missing required field. THe keyword IGNORE is missing --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.xml
new file mode 100644
index 0000000000..fd54910839
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n04.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 63-->
+<!DOCTYPE animal SYSTEM "ibm63n04.dtd"
+[
+<!ELEMENT animal ANY>
+<!ELEMENT tiger (#PCDATA)>
+<!ATTLIST animal a (tiger) #REQUIRED>
+]>
+<animal a = "TIGER1">
+Negative test. Missing required field(The keyword IGNORE is missing).
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.dtd
new file mode 100644
index 0000000000..4d9d29ae81
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.dtd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 63-->
+<![IGNORE
+]]>
+<!--Negative test with pattern5 of P63-->
+<!--Missing required field( '[' is missing after IGNORE ). --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.xml
new file mode 100644
index 0000000000..1b981ae0b2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n05.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 63-->
+<!DOCTYPE animal SYSTEM "ibm63n05.dtd"
+[
+<!ELEMENT animal ANY>
+<!ELEMENT tiger (#PCDATA)>
+<!ATTLIST animal a (tiger) #REQUIRED>
+]>
+<animal a = "TIGER1">
+Negative test. Missing required field( '[' is missing after IGNORE ).
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.dtd
new file mode 100644
index 0000000000..ce7189b038
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.dtd
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 63-->
+<![
+<!ELEMENT animal EMPTY>
+<!ELEMENT tiger EMPTY>
+[IGNORE
+]]>
+<!--Negative test with pattern6 of P63-->
+<!--Wrong Ordering. Ignore sect contents preceding IGNORE. --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.xml
new file mode 100644
index 0000000000..135bba77a0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n06.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 63-->
+<!DOCTYPE animal SYSTEM "ibm63n06.dtd"
+[
+<!ATTLIST attr a (tiger) #REQUIRED>
+]>
+<animal a = "TIGER1">
+Negative test. Wrong Ordering. Ignore sect contents preceding IGNORE.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.dtd
new file mode 100644
index 0000000000..f258ba4dc5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.dtd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 63-->
+<![IGNORE[
+<!ELEMENT animal EMPTY>
+<!ELEMENT tiger EMPTY>
+
+<!--Negative test with pattern5 of P63-->
+<!--Missing closing sequence --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.xml
new file mode 100644
index 0000000000..36b5897a14
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P63/ibm63n07.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 63-->
+<!DOCTYPE animal SYSTEM "ibm63n07.dtd"
+[
+<!ELEMENT animal ANY>
+<!ELEMENT tiger (#PCDATA)>
+<!ATTLIST animal a (tiger) #REQUIRED>
+]>
+<animal a = "TIGER1">
+Negative test. Missing closing sequence.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Entries
new file mode 100644
index 0000000000..67b60edd93
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm64n01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm64n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm64n02.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm64n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm64n03.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm64n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Repository
new file mode 100644
index 0000000000..034a883d06
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P64
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.dtd
new file mode 100644
index 0000000000..046e93a5c3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.dtd
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!--dtd for production 64-->
+<![IGNORE[
+start
+<?[
+<!ELEMENT animal EMPTY>
+]]>
+end
+]]>
+<!--Negative test. Pattern2(Wrong character '?' instead of '[')--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.xml
new file mode 100644
index 0000000000..8d35f73da9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 64-->
+<!DOCTYPE animal SYSTEM "ibm64n01.dtd"
+[
+<!ELEMENT animal ANY>
+]>
+<animal>
+Negative Test. Pattern2. Wrong character.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.dtd
new file mode 100644
index 0000000000..567e7885d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.dtd
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!--dtd for production 64-->
+<![IGNORE[
+start
+<![
+<!ELEMENT animal EMPTY>
+
+end
+]]>
+<!--Negative test. Missing closing sequence--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.xml
new file mode 100644
index 0000000000..1cb77b232c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 64-->
+<!DOCTYPE animal SYSTEM "ibm64n02.dtd"
+[
+<!ELEMENT animal ANY>
+]>
+<animal>
+Negative Test. Pattern3. Missing closing sequence.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.dtd
new file mode 100644
index 0000000000..4e6327e11a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.dtd
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!--dtd for production 64-->
+<![IGNORE[
+start
+
+<!ELEMENT animal EMPTY>
+]]>
+end
+]]>
+<!--Negative test. Missing opening sequence--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.xml
new file mode 100644
index 0000000000..daf2c2099e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P64/ibm64n03.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 64-->
+<!DOCTYPE animal SYSTEM "ibm64n03.dtd"
+[
+<!ELEMENT animal ANY>
+]>
+<animal>
+Negative Test. Pattern4. Missing opening sequence.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Entries
new file mode 100644
index 0000000000..25de6f1ebe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm65n01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm65n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm65n02.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm65n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Repository
new file mode 100644
index 0000000000..d0e34473ac
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P65
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.dtd
new file mode 100644
index 0000000000..d9b6175722
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.dtd
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!--dtd for production 65-->
+<![IGNORE[
+Everything is ignored within an ignored section, except the
+sub-section delimiters . These must be balanced
+]]> this is illegal
+<![
+<!ELEMENT animal EMPTY>
+]]>
+hello
+]]>
+<!--Negative test. Pattern1. Illegal sequence of ']]>'--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.xml
new file mode 100644
index 0000000000..8a9be2bec9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 65-->
+<!DOCTYPE animal SYSTEM "ibm65n01.dtd"
+[
+<!ELEMENT animal ANY>
+]>
+<animal>
+Negative Test. Pattern1.Illegal sequence of ']]'
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.dtd
new file mode 100644
index 0000000000..14d418915b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.dtd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!--dtd for production 65-->
+<![IGNORE[
+Everything is ignored within an ignored section, except the
+sub-section delimiters . These must be balanced
+<![
+this is again illegal because it is partial markup
+<![
+<!ELEMENT animal EMPTY>
+]]>
+hello
+]]>
+<!--Negative test. Pattern1. Illegal sequence of '<!['--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.xml
new file mode 100644
index 0000000000..ae89a2de45
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P65/ibm65n02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 65-->
+<!DOCTYPE animal SYSTEM "ibm65n02.dtd"
+[
+<!ELEMENT animal ANY>
+]>
+<animal>
+Negative Test. Pattern2.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Entries
new file mode 100644
index 0000000000..85ee69f0d9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Entries
@@ -0,0 +1,16 @@
+/ibm66n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n11.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n12.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n13.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n14.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm66n15.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Repository
new file mode 100644
index 0000000000..1a505f9226
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P66
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n01.xml
new file mode 100644
index 0000000000..ef42d683ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n01.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY aaa "wrong charater reference: &#002f;">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n02.xml
new file mode 100644
index 0000000000..9759178638
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n02.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+
+]>
+<root att="wrong character reference: &#x003a"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n03.xml
new file mode 100644
index 0000000000..345019098c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n03.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY aaa "wrong charater reference: &49;">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n04.xml
new file mode 100644
index 0000000000..0ad5904f85
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n04.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+
+]>
+<root att="wrong charater reference:&#5~0;"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n05.xml
new file mode 100644
index 0000000000..5906a812e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n05.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY aaa "wrong charater reference: &#x002g;">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n06.xml
new file mode 100644
index 0000000000..fcfb28d3f4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n06.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+
+]>
+<root att="wrong charater reference:&#x006G;"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n07.xml
new file mode 100644
index 0000000000..b402f76262
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n07.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY aaa "wrong charater reference: &#x0=2f;">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n08.xml
new file mode 100644
index 0000000000..0195a9bb50
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n08.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+
+]>
+<root att="wrong charater reference:&#56.0;"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n09.xml
new file mode 100644
index 0000000000..53ed2c49d9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n09.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY aaa "wrong charater reference: &#x00/2f;">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n10.xml
new file mode 100644
index 0000000000..f018bcb534
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n10.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+
+]>
+<root att="wrong charater reference: &#51);"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n11.xml
new file mode 100644
index 0000000000..20ec3edeab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n11.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY aaa "wrong charater reference: &#x00 2f;">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n12.xml
new file mode 100644
index 0000000000..27cbc450cd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n12.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+
+]>
+<root att="wrong replacement charater reference: &#x0000;" />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n13.xml
new file mode 100644
index 0000000000..c742d6b746
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n13.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+
+]>
+<root att="wrong replacement charater: &#x001f;" />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n14.xml
new file mode 100644
index 0000000000..86b5aa058f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n14.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+
+]>
+<root att="wrong replacement charater : &#xfffe;" />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n15.xml
new file mode 100644
index 0000000000..f1b7fe136e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P66/ibm66n15.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root EMPTY>
+<!ATTLIST root att CDATA #IMPLIED>
+
+]>
+<root att="wrong replacement charater: &#xffff;" />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Entries
new file mode 100644
index 0000000000..50eaa909e5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Entries
@@ -0,0 +1,12 @@
+/ibm68n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68n06.dtd/1.2/Thu Feb 7 15:05:05 2002//
+/ibm68n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm68n10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Repository
new file mode 100644
index 0000000000..38b4dc23d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P68
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n01.xml
new file mode 100644
index 0000000000..f36baedc62
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n01.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY aaa "aString">
+]>
+<root>missing entity name &;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n02.xml
new file mode 100644
index 0000000000..48516f557c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n02.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY aaa "aString">
+]>
+<root att="&aaa">missing semi-colon</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n03.xml
new file mode 100644
index 0000000000..20780813f6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n03.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY aaa "aString">
+]>
+<root>extra space after ampsand & aaa;</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n04.xml
new file mode 100644
index 0000000000..399bb9ce2b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n04.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY aaa "aString">
+]>
+<root att="&aAa;">reference doesn't match delaration</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n05.xml
new file mode 100644
index 0000000000..0303f34fee
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n05.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root>undefined entitiy &aaa; </root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.dtd
new file mode 100644
index 0000000000..aaeb5b1300
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.dtd
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!ENTITY aaa "aString">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.xml
new file mode 100644
index 0000000000..6c647f5503
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n06.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE root SYSTEM "ibm68n06.dtd"
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+
+]>
+<root att="&aaa;">entity declared externally but standalone is yes</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n07.xml
new file mode 100644
index 0000000000..e5f31f8d1f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n07.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Entity referenced before declared *-->
+<!ATTLIST root att1 CDATA "&aaa;">
+<!ENTITY aaa "aString">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n08.xml
new file mode 100644
index 0000000000..02264a2137
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n08.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY aaa "aString">
+<!NOTATION JPGformat SYSTEM "JPGFormat">
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root>unparsed entity reference in the wrong place &aImage;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n09.xml
new file mode 100644
index 0000000000..e31471dc48
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n09.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* recursive entity reference *-->
+<!ENTITY aaa "&bbb;">
+<!ENTITY bbb "&aaa;">
+]>
+<root>&aaa;</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n10.xml
new file mode 100644
index 0000000000..60a52278de
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P68/ibm68n10.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* indirect recursive entity reference *-->
+<!ENTITY aaa "&bbb;">
+<!ENTITY bbb "&ccc;">
+<!ENTITY ccc "&ddd;">
+<!ENTITY ddd "&eee;">
+<!ENTITY eee "&aaa;">
+]>
+<root>&aaa;</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Entries
new file mode 100644
index 0000000000..87a8eb1868
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Entries
@@ -0,0 +1,8 @@
+/ibm69n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm69n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Repository
new file mode 100644
index 0000000000..2d561c2c69
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P69
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n01.xml
new file mode 100644
index 0000000000..df6302d4eb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n01.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ENTITY % paaa "<!ATTLIST root att CDATA #IMPLIED>">
+<!--* incorrect PE reference *-->
+%;
+<!ENTITY aaa "aString">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n02.xml
new file mode 100644
index 0000000000..a4365caed7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n02.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ENTITY % paaa "<!ATTLIST root att CDATA #IMPLIED>">
+<!--* incorrect PE reference without semicolon *-->
+%paaa
+<!ENTITY aaa "aString">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n03.xml
new file mode 100644
index 0000000000..4e73bc7337
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n03.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ENTITY % paaa "<!ATTLIST root att CDATA #IMPLIED>">
+<!--* incorrect PE reference with a extra white space charater *-->
+%paaa ;
+<!ENTITY aaa "aString">
+]>
+<root/>
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n04.xml
new file mode 100644
index 0000000000..e106eab9ee
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n04.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ENTITY % paaa "<!ATTLIST root att CDATA #IMPLIED>">
+<!--* incorrect PE reference with a extra white space char *-->
+% paaa;
+<!ENTITY aaa "aString">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n05.xml
new file mode 100644
index 0000000000..5c0234cff1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n05.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!--* PE referenced before declared, against WFC: entity declared -->
+%paaa;
+<!ENTITY % paaa "<!ATTLIST root att CDATA #IMPLIED>">
+<!ENTITY aaa "aString">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n06.xml
new file mode 100644
index 0000000000..ccdd534527
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n06.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!--* recursive PE reference -->
+<!ENTITY % paaa "&bbb;">
+<!ENTITY bbb "%paaa;">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n07.xml
new file mode 100644
index 0000000000..324497f357
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P69/ibm69n07.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!--* indirect recursive PE reference -->
+<!ENTITY % paaa "&bbb;">
+<!ENTITY bbb "&ccc;">
+<!ENTITY ccc "&ddd;">
+<!ENTITY ddd "&eee;">
+<!ENTITY eee "%paaa;">
+]>
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Entries
new file mode 100644
index 0000000000..34746aadfe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Entries
@@ -0,0 +1,10 @@
+/ibm70n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm71n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm71n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm71n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm71n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm71n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm71n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm71n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm71n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Repository
new file mode 100644
index 0000000000..4be4b7015d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P71
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm70n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm70n01.xml
new file mode 100644
index 0000000000..7f453b4135
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm70n01.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ENTITY aaa "aString">
+<!--* mess up Entity Declaration *-->
+<root/>
+<!ENTITY % paaa "aString">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n01.xml
new file mode 100644
index 0000000000..bed2832974
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n01.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* missing space *-->
+<!ENTITYaaa "aString">
+
+]>
+<root>&aaa;</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n02.xml
new file mode 100644
index 0000000000..256f1f4407
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n02.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* missing space *-->
+<!ENTITY aaa"aString">
+
+]>
+<root>&aaa;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n03.xml
new file mode 100644
index 0000000000..b8dd782bde
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n03.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* missing EntityDef *-->
+<!ENTITY aaa>
+
+]>
+<root>&aaa;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n04.xml
new file mode 100644
index 0000000000..ee52c8d259
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n04.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* missing name *-->
+<!ENTITY "aString">
+
+]>
+<root>&aaa;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n05.xml
new file mode 100644
index 0000000000..edd93a41eb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n05.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* wrong ordering *-->
+<!ENTITY "aString" aaa>
+]>
+<root>&aaa;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n06.xml
new file mode 100644
index 0000000000..5fb49c52f8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n06.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* ENTITY in lower case *-->
+<!entity aaa "aString">
+]>
+<root>&aaa;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n07.xml
new file mode 100644
index 0000000000..d280dba82f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n07.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* missing closing bracket *-->
+<!ENTITY aaa "aString"
+
+]>
+<root>&aaa;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n08.xml
new file mode 100644
index 0000000000..fefba0e6a0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P71/ibm71n08.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* exclamation mark missing *-->
+<ENTITY aaa "aString">
+
+]>
+<root>&aaa;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Entries
new file mode 100644
index 0000000000..ecdb93da0d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Entries
@@ -0,0 +1,10 @@
+/ibm72n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm72n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm72n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm72n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm72n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm72n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm72n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm72n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm72n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Repository
new file mode 100644
index 0000000000..482a0904d9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P72
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n01.xml
new file mode 100644
index 0000000000..5ceb44a1e5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n01.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* missing space *-->
+<!ENTITY% paaa "<!-- comments -->">
+%paaa;
+]>
+<root/>
+
+
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n02.xml
new file mode 100644
index 0000000000..60ee4cbc3b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n02.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* missing name *-->
+<!ENTITY % "<!-- comments -->">
+%paaa;
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n03.xml
new file mode 100644
index 0000000000..4cc1ee1b70
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n03.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* missing space *-->
+<!ENTITY % paaa"<!-- comments -->">
+%paaa;
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n04.xml
new file mode 100644
index 0000000000..f9ca14481a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n04.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* missing PEDef *-->
+<!ENTITY % paaa>
+%paaa;
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n05.xml
new file mode 100644
index 0000000000..ff17096d83
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n05.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* wrong order *-->
+<!ENTITY % "<!-- comments -->" paaa>
+%paaa;
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n06.xml
new file mode 100644
index 0000000000..e9b22f8913
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n06.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* wrong order *-->
+<!ENTITY "<!-- comments -->" % paaa >
+%paaa;
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n07.xml
new file mode 100644
index 0000000000..ab02e52257
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n07.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* wrong keyword *-->
+<!entity % paaa "<!-- comments -->">
+%paaa;
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n08.xml
new file mode 100644
index 0000000000..b8b13dfc84
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n08.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* missing closing bracket *-->
+<!ENTITY % paaa "<!-- comments -->"
+%paaa;
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n09.xml
new file mode 100644
index 0000000000..045427c846
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P72/ibm72n09.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* wrong closing sequence: extra exclamation mark *-->
+<!ENTITY% paaa "<!-- comments -->" !>
+%paaa;
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Entries
new file mode 100644
index 0000000000..670af38fda
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm73n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm73n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Repository
new file mode 100644
index 0000000000..800547ad79
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P73
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n01.xml
new file mode 100644
index 0000000000..fac788bdb9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n01.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!NOTATION JPGformat SYSTEM "JPGFormat">
+<!--* wrong order: NDataDecl ExternalID *-->
+<!ENTITY aImage NDATA JPGformat SYSTEM "image.jpg" >
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n03.xml
new file mode 100644
index 0000000000..c103d13b8e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P73/ibm73n03.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!NOTATION JPGformat SYSTEM "JPGFormat">
+<!--* missing ExternalID *-->
+<!ENTITY aImage NDATA JPGformat >
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Entries
new file mode 100644
index 0000000000..fb1b2bf7f7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm74n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Repository
new file mode 100644
index 0000000000..eb6285add5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P74
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/ibm74n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/ibm74n01.xml
new file mode 100644
index 0000000000..2a59b59724
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P74/ibm74n01.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!NOTATION JPGformat SYSTEM "JPGFormat">
+<!--* wrong PEDef: NDataDecl ExternalID *-->
+<!ENTITY % pImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Entries
new file mode 100644
index 0000000000..b21ef61bc2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Entries
@@ -0,0 +1,15 @@
+/empty.dtd/1.2/Thu Feb 7 16:29:32 2002//
+/ibm75n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm75n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm75n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm75n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm75n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm75n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm75n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm75n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm75n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm75n10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm75n11.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm75n12.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm75n13.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Repository
new file mode 100644
index 0000000000..14755f3d62
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P75
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/empty.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/empty.dtd
new file mode 100644
index 0000000000..dbc2f78654
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/empty.dtd
@@ -0,0 +1 @@
+<?xml encoding="UTF-8"?> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n01.xml
new file mode 100644
index 0000000000..c8f1c8f289
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n01.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* wrong keyword: system *-->
+<!ENTITY pImage system "image.jpg">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n02.xml
new file mode 100644
index 0000000000..f823311bc1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!--* wrong keyword: public *-->
+<!DOCTYPE root
+ public "-//W3C//DTD//EN" "empty.dtd"
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n03.xml
new file mode 100644
index 0000000000..e02f80850d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n03.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!--* wrong keyword: Public *-->
+<!DOCTYPE root
+ Public "-//W3C//DTD//EN" "empty.dtd"
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n04.xml
new file mode 100644
index 0000000000..a9813642a5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n04.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!--* wrong order *-->
+<!DOCTYPE root
+ "-//W3C//DTD//EN" "empty.dtd" PUBLIC
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n05.xml
new file mode 100644
index 0000000000..389617cbd0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n05.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* missing space *-->
+<!ENTITY pImage SYSTEM"image.jpg">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n06.xml
new file mode 100644
index 0000000000..32c7d949fe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n06.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* missing SystemLiterral *-->
+<!ENTITY pImage SYSTEM >
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n07.xml
new file mode 100644
index 0000000000..c977eb71d4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n07.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!--* missing space *-->
+<!DOCTYPE root
+ PUBLIC "-//W3C//DTD//EN""empty.dtd"
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n08.xml
new file mode 100644
index 0000000000..fd0428c6f5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n08.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!--* missing keyword: PUBLIC *-->
+<!DOCTYPE root
+ "-//W3C//DTD//EN" "empty.dtd"
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n09.xml
new file mode 100644
index 0000000000..5029a50daa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n09.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!--* missing space *-->
+<!DOCTYPE root
+ PUBLIC"-//W3C//DTD//EN" "empty.dtd"
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n10.xml
new file mode 100644
index 0000000000..3cec6ffaea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n10.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!--* missing PubidLiteral *-->
+<!DOCTYPE root
+ PUBLIC ".\empty.dtd"
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n11.xml
new file mode 100644
index 0000000000..95092b692f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n11.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!--* missing System Literal *-->
+<!DOCTYPE root
+ public "-//W3C//DTD//EN"
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n12.xml
new file mode 100644
index 0000000000..8d4dd1857f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n12.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* wrong order *-->
+<!ENTITY pImage "image.jpg" SYSTEM>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n13.xml
new file mode 100644
index 0000000000..3ff70df7d6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P75/ibm75n13.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!--* wrong order *-->
+<!DOCTYPE root
+ "-//W3C//DTD//EN" PUBLIC "empty.dtd"
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Entries
new file mode 100644
index 0000000000..ffa6d486d4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Entries
@@ -0,0 +1,8 @@
+/ibm76n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm76n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm76n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm76n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm76n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm76n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm76n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Repository
new file mode 100644
index 0000000000..f136293df4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P76
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n01.xml
new file mode 100644
index 0000000000..215cc938ca
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!NOTATION JPGformat SYSTEM "JPGFormat">
+<!--* wrong keyword in NdataDecl: ndata *-->
+<!ENTITY aImage SYSTEM "image.jpg" ndata JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n02.xml
new file mode 100644
index 0000000000..2eff802ace
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n02.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!NOTATION JPGformat SYSTEM "JPGFormat">
+<!--* wrong keyword in NdataDecl: NData *-->
+<!ENTITY aImage SYSTEM "image.jpg" NData JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n03.xml
new file mode 100644
index 0000000000..134aed7002
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n03.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!NOTATION JPGformat SYSTEM "JPGFormat">
+<!--* missing space in NdataDecl *-->
+<!ENTITY aImage SYSTEM "image.jpg"NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n04.xml
new file mode 100644
index 0000000000..17f13408a8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n04.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!NOTATION JPGformat SYSTEM "JPGFormat">
+<!--* missing keyword in NdataDecl : NDATA *-->
+<!ENTITY aImage SYSTEM "image.jpg" JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n05.xml
new file mode 100644
index 0000000000..3899463a63
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n05.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!NOTATION JPGformat SYSTEM "JPGFormat">
+<!--* Missing Name field in NdataDecl *-->
+<!ENTITY aImage SYSTEM "image.jpg" NDATA>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n06.xml
new file mode 100644
index 0000000000..2c36e88596
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n06.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!NOTATION JPGformat SYSTEM "JPGFormat">
+<!--* missing space in NdataDecl *-->
+<!ENTITY aImage SYSTEM "image.jpg" NDATAJPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n07.xml
new file mode 100644
index 0000000000..13108c28af
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P76/ibm76n07.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!NOTATION JPGformat SYSTEM "JPGFormat">
+<!--* wrong order in NdataDecl *-->
+<!ENTITY aImage SYSTEM "image.jpg" JPGformat NDATA>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Entries
new file mode 100644
index 0000000000..81f76d363a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Entries
@@ -0,0 +1,9 @@
+/ibm77n01.ent/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm77n01.xml/1.2/Thu Feb 7 16:33:28 2002//
+/ibm77n02.ent/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm77n02.xml/1.2/Tue Feb 19 18:41:05 2002//
+/ibm77n03.ent/1.2/Thu Feb 7 16:34:48 2002//
+/ibm77n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm77n04.ent/1.2/Thu Feb 7 16:35:26 2002//
+/ibm77n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Repository
new file mode 100644
index 0000000000..b18c1b8845
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P77
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.ent
new file mode 100644
index 0000000000..4395cf96ec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.ent
@@ -0,0 +1,3 @@
+<?xml encoding="UTF8" version="1.0" ?>
+<!--* Wrong ordering in above TextDecl *-->
+ANY CONTENT
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.xml
new file mode 100644
index 0000000000..a82e2b653a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n01.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* error in external entity *-->
+<!ENTITY aExternal SYSTEM "ibm77n01.ent">
+]>
+<root>&aExternal;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.ent
new file mode 100644
index 0000000000..8d681ccec6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.ent
@@ -0,0 +1,3 @@
+<?XML encoding="UTF8"?>
+<!--* Wrong Keyword in above TextDecl *-->
+ANY CONTENT
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.xml
new file mode 100644
index 0000000000..49043afd88
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n02.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* error in external entity *-->
+<!ENTITY aExternal SYSTEM "ibm77n02.ent">
+]>
+<root>&aExternal;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.ent
new file mode 100644
index 0000000000..e0acc108d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.ent
@@ -0,0 +1,2 @@
+<?xml encoding="UTF-8">
+<!--* Wrong closing sequence in above TextDecl *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.xml
new file mode 100644
index 0000000000..674c5b0eb1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n03.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* error in external entity *-->
+<!ENTITY % pExternal SYSTEM "ibm77n03.ent">
+%pExternal;
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.ent
new file mode 100644
index 0000000000..f532ae5e3a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.ent
@@ -0,0 +1,3 @@
+<?xml encoding="UTF-8"
+<!--* missing closing sequence in above TextDecl *-->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.xml
new file mode 100644
index 0000000000..38cb784e52
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P77/ibm77n04.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* error in external entity *-->
+<!ENTITY % pExternal SYSTEM "ibm77n04.ent">
+%pExternal;
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Entries
new file mode 100644
index 0000000000..74afddd45a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm78n01.ent/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm78n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm78n02.ent/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm78n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Repository
new file mode 100644
index 0000000000..128897927d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P78
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.ent
new file mode 100644
index 0000000000..7fb6719720
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.ent
@@ -0,0 +1,4 @@
+
+<!--* Wrong ordering in above TextDecl *-->
+ANY CONTENT
+<?xml version="1.0" encoding="UTF8"?> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.xml
new file mode 100644
index 0000000000..0f984208d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n01.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* error in external entity *-->
+<!ENTITY aExternal SYSTEM "ibm78n01.ent">
+]>
+<root>&aExternal;</root>
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.ent
new file mode 100644
index 0000000000..7a2ecc6cd1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.ent
@@ -0,0 +1,4 @@
+
+<?xml version="1.0" encoding="UTF8"?>
+<!--* Extra space before TextDecl *-->
+ANY CONTENT
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.xml
new file mode 100644
index 0000000000..a21c0b6135
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P78/ibm78n02.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* error in external entity *-->
+<!ENTITY aExternal SYSTEM "ibm78n02.ent">
+]>
+<root>&aExternal;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Entries
new file mode 100644
index 0000000000..deedae1e7c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm79n01.ent/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm79n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm79n02.ent/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm79n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Repository
new file mode 100644
index 0000000000..01efa4d6f1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P79
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.ent
new file mode 100644
index 0000000000..b5a43a5caf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.ent
@@ -0,0 +1,3 @@
+
+<!--* TextDecl in wrong position *-->
+<?xml encoding="UTF8"?> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.xml
new file mode 100644
index 0000000000..85d5614fef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n01.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* error in external entity *-->
+<!ENTITY % pExternal SYSTEM "ibm79n01.ent">
+%pExternal;
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.ent
new file mode 100644
index 0000000000..0345008783
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.ent
@@ -0,0 +1,4 @@
+
+<?xml version="1.0" encoding="UTF8"?>
+<!--* Extra white space before TextDecl *-->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.xml
new file mode 100644
index 0000000000..afb3b96fd1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P79/ibm79n02.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* error in external entity *-->
+<!ENTITY % pExternal SYSTEM "ibm79n02.ent">
+%pExternal;
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Entries
new file mode 100644
index 0000000000..2a7ffa2a61
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm80n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm80n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm80n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm80n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm80n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm80n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Repository
new file mode 100644
index 0000000000..7432e85af5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P80
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n01.xml
new file mode 100644
index 0000000000..c44264b22e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"encoding="UTF-8"?>
+<!--* missing white space in above EncodingDecl *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n02.xml
new file mode 100644
index 0000000000..c199a02630
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding "UTF-8"?>
+<!--* missing Eq in above EncodingDecl *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n03.xml
new file mode 100644
index 0000000000..e5ef0d55e1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding= ?>
+<!--* missing EncName in above EncodingDecl *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n04.xml
new file mode 100644
index 0000000000..2f5d2f5eff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n04.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" "UTF-8"encoding=?>
+<!--* wrong ordering in above EncodingDecl *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n05.xml
new file mode 100644
index 0000000000..714f2d42e1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n05.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" "UTF-8"=encoding?>
+<!--* wrong ordering in above EncodingDecl *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n06.xml
new file mode 100644
index 0000000000..b503f9b9bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P80/ibm80n06.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" Encoding="UTF-8"?>
+<!--* Wrong keyword Encoding in above EncodingDecl *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Entries
new file mode 100644
index 0000000000..d1830b360e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Entries
@@ -0,0 +1,10 @@
+/ibm81n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm81n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm81n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm81n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm81n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm81n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm81n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm81n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm81n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Repository
new file mode 100644
index 0000000000..478b66d2fd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P81
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n01.xml
new file mode 100644
index 0000000000..3354f4d3e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="_UTF-8"?>
+<!--* Illegal inital Charater in above EncName *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n02.xml
new file mode 100644
index 0000000000..445f230479
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="-UTF-8"?>
+<!--* Illegal inital Charater in above EncName *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n03.xml
new file mode 100644
index 0000000000..875bc7421d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding=".UTF-8"?>
+<!--* Illegal inital Charater in above EncName *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n04.xml
new file mode 100644
index 0000000000..5b7979b405
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n04.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="8-UTF"?>
+<!--* Illegal initial Charater in above EncName *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n05.xml
new file mode 100644
index 0000000000..009518166d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n05.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF~8"?>
+<!--* Illegal Charater in above EncName *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n06.xml
new file mode 100644
index 0000000000..2de674a84f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n06.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF#8"?>
+<!--* Illegal Charater in above EncName *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n07.xml
new file mode 100644
index 0000000000..a3b3ce81a7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n07.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF:8"?>
+<!--* IllegalCharater in above EncName *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n08.xml
new file mode 100644
index 0000000000..a7814dc51d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n08.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF/8"?>
+<!--* Illegal Charater in above EncName *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n09.xml
new file mode 100644
index 0000000000..bc6c54aee8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P81/ibm81n09.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF;8"?>
+<!--* Illegal Charater in above EncName *-->
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Entries
new file mode 100644
index 0000000000..e41200cd0d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Entries
@@ -0,0 +1,9 @@
+/ibm82n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm82n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm82n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm82n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm82n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm82n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm82n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm82n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Repository
new file mode 100644
index 0000000000..88e1e6b385
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P82
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n01.xml
new file mode 100644
index 0000000000..e66c0a2d54
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Missing whitespace in NotationDecl *-->
+<!NOTATIONJPGformat SYSTEM "JPGFormat">
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n02.xml
new file mode 100644
index 0000000000..22eaa01c2f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n02.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Missing Name in NotationDecl *-->
+<!NOTATION PUBLIC "-//JPG//DTD//JPGFormat">
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n03.xml
new file mode 100644
index 0000000000..7e0dcf17e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n03.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Missing ExternalID or PublicID in NotationDecl *-->
+<!NOTATION JPGformat >
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n04.xml
new file mode 100644
index 0000000000..bde1554010
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n04.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Wrong ordering in NotationDecl *-->
+<!NOTATION SYSTEM "JPGFormat" JPGformat >
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n05.xml
new file mode 100644
index 0000000000..365515b1ca
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n05.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Wrong keyword: notation in NotationDecl *-->
+<!notation JPGformat SYSTEM "JPGFormat">
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n06.xml
new file mode 100644
index 0000000000..f39c92fc3c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n06.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Missing closing bracket in NotationDecl *-->
+<!NOTATION JPGformat PUBLIC "-//JPG//DTD//JPGFormat"
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n07.xml
new file mode 100644
index 0000000000..61b8f8d24d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n07.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Wrong beginning sequence in NotationDecl *-->
+<NOTATION JPGformat PUBLIC "-//JPG//DTD//JPGFormat">
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
+
+
+
+
+
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n08.xml
new file mode 100644
index 0000000000..ff43f8cbf2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P82/ibm82n08.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Wrong Closing sequence in NotationDecl *-->
+<!NOTATION JPGformat SYSTEM "JPGFormat"!>
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Entries
new file mode 100644
index 0000000000..51af0ce086
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm83n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm83n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm83n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm83n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm83n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm83n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Repository
new file mode 100644
index 0000000000..7139f43dc7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P83
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n01.xml
new file mode 100644
index 0000000000..f866602e81
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Wrong keyword in PublicID *-->
+<!NOTATION JPGformat public "-//JPG//DTD//JPGFormat">
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n02.xml
new file mode 100644
index 0000000000..b39683dbf5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n02.xml
@@ -0,0 +1,10 @@
+r<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Wrong keyword : Public in PublicID *-->
+<!NOTATION JPGformat Public "-//JPG//DTD//JPGFormat">
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n03.xml
new file mode 100644
index 0000000000..4bca2b000c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n03.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Missing keyword in PublicID *-->
+<!NOTATION JPGformat "-//JPG//DTD//JPGFormat">
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n04.xml
new file mode 100644
index 0000000000..e409f3d210
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n04.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Missing White space in PublicID *-->
+<!NOTATION JPGformat PUBLIC"-//JPG//DTD//JPGFormat">
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n05.xml
new file mode 100644
index 0000000000..aea6dac44c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n05.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Missing PubidLiteral in PublicID *-->
+<!NOTATION JPGformat PUBLIC >
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n06.xml
new file mode 100644
index 0000000000..eaa3ea65d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P83/ibm83n06.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!--* Wrong ordering in PublicID *-->
+<!NOTATION JPGformat "-//JPG//DTD//JPGFormat" PUBLIC>
+<!ENTITY aImage SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Entries
new file mode 100644
index 0000000000..8cba3c5da6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Entries
@@ -0,0 +1,199 @@
+/ibm85n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n100.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n101.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n102.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n103.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n104.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n105.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n106.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n107.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n108.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n109.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n11.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n110.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n111.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n112.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n113.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n114.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n115.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n116.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n117.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n118.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n119.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n12.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n120.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n121.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n122.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n123.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n124.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n125.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n126.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n127.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n128.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n129.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n13.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n130.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n131.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n132.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n133.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n134.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n135.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n136.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n137.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n138.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n139.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n14.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n140.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n141.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n142.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n143.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n144.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n145.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n146.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n147.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n148.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n149.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n15.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n150.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n151.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n152.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n153.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n154.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n155.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n156.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n157.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n158.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n159.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n16.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n160.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n161.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n162.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n163.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n164.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n165.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n166.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n167.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n168.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n169.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n17.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n170.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n171.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n172.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n173.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n174.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n175.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n176.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n177.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n178.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n179.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n18.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n180.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n181.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n182.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n183.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n184.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n185.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n186.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n187.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n188.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n189.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n19.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n190.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n191.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n192.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n193.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n194.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n195.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n196.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n197.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n198.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n20.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n21.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n22.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n23.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n24.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n25.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n26.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n27.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n28.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n29.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n30.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n31.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n32.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n33.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n34.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n35.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n36.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n37.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n38.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n39.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n40.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n41.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n42.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n43.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n44.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n45.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n46.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n47.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n48.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n49.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n50.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n51.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n52.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n53.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n54.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n55.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n56.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n57.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n58.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n59.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n60.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n61.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n62.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n63.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n64.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n65.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n66.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n67.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n68.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n69.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n70.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n71.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n72.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n73.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n74.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n75.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n76.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n77.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n78.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n79.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n80.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n81.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n82.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n83.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n84.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n85.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n86.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n87.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n88.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n89.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n90.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n91.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n92.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n93.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n94.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n95.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n96.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n97.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n98.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm85n99.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Repository
new file mode 100644
index 0000000000..937063790e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P85
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n01.xml
new file mode 100644
index 0000000000..e18e377e1f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n01.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?× an illegal char #x0d7
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n02.xml
new file mode 100644
index 0000000000..0703d20c38
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n02.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?÷ an illegal char #x0f7
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n03.xml
new file mode 100644
index 0000000000..b08af2945f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n03.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?IJ an illegal char #x132
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n04.xml
new file mode 100644
index 0000000000..f37ca85595
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n04.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ij an illegal char #x133
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n05.xml
new file mode 100644
index 0000000000..616ca91515
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n05.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ä¿ an illegal char #x13f
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n06.xml
new file mode 100644
index 0000000000..4134128af6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n06.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Å€ an illegal char #x140
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n07.xml
new file mode 100644
index 0000000000..67f407e08b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n07.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ʼn an illegal char #x149
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n08.xml
new file mode 100644
index 0000000000..6299540ba5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n08.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Å¿ an illegal char #x17f
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n09.xml
new file mode 100644
index 0000000000..c18d3ffebb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n09.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ç„ an illegal char #x1c4
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n10.xml
new file mode 100644
index 0000000000..aac214495e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n10.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?nj an illegal char #x1cc
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n100.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n100.xml
new file mode 100644
index 0000000000..80ecdbc1ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n100.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ஶ an illegal char #x0bb6
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n101.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n101.xml
new file mode 100644
index 0000000000..e76a06ee2b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n101.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?஺ an illegal char #x0bba
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n102.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n102.xml
new file mode 100644
index 0000000000..e8c31a7ba3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n102.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à° an illegal char #x0c0d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n103.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n103.xml
new file mode 100644
index 0000000000..6da0d486af
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n103.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à°‘ an illegal char #x0c11
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n104.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n104.xml
new file mode 100644
index 0000000000..da308ef661
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n104.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à°© an illegal char #x0c29
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n105.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n105.xml
new file mode 100644
index 0000000000..3bbfb3208a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n105.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à°´ an illegal char #x0c34
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n106.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n106.xml
new file mode 100644
index 0000000000..2103b2070f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n106.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?౟ an illegal char #x0c5f
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n107.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n107.xml
new file mode 100644
index 0000000000..55c35b81e4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n107.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à±¢ an illegal char #x0c62
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n108.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n108.xml
new file mode 100644
index 0000000000..b148a639f5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n108.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ಠan illegal char #x0c8d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n109.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n109.xml
new file mode 100644
index 0000000000..c0b49183d6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n109.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?಑ an illegal char #x0c91
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n11.xml
new file mode 100644
index 0000000000..5d991bfea7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n11.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?DZ an illegal char #x1f1
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n110.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n110.xml
new file mode 100644
index 0000000000..97aeb59071
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n110.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?಩ an illegal char #x0ca9
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n111.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n111.xml
new file mode 100644
index 0000000000..a160f40f13
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n111.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?಴ an illegal char #x0cb4
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n112.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n112.xml
new file mode 100644
index 0000000000..520ea15ef1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n112.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?಺ an illegal char #x0cba
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n113.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n113.xml
new file mode 100644
index 0000000000..b97245efb6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n113.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?೟ an illegal char #x0cdf
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n114.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n114.xml
new file mode 100644
index 0000000000..17d5ca7deb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n114.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à³¢ an illegal char #x0ce2
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n115.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n115.xml
new file mode 100644
index 0000000000..f51535ad68
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n115.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à´ an illegal char #x0d0d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n116.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n116.xml
new file mode 100644
index 0000000000..256984841c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n116.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à´‘ an illegal char #x0d11
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n117.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n117.xml
new file mode 100644
index 0000000000..61b2c5817c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n117.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à´© an illegal char #x0d29
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n118.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n118.xml
new file mode 100644
index 0000000000..519cfe265f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n118.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à´º an illegal char #x0d3a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n119.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n119.xml
new file mode 100644
index 0000000000..c1beaebf8c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n119.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ൢ an illegal char #x0d62
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n12.xml
new file mode 100644
index 0000000000..0352dcd7eb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n12.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?dz an illegal char #x1f3
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n120.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n120.xml
new file mode 100644
index 0000000000..5ce20ec658
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n120.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ฯ an illegal char #x0e2f
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n121.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n121.xml
new file mode 100644
index 0000000000..87212bdb8d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n121.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ั an illegal char #x0e31
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n122.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n122.xml
new file mode 100644
index 0000000000..0979f9fa21
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n122.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ิ an illegal char #x0e34
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n123.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n123.xml
new file mode 100644
index 0000000000..718fa06c40
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n123.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ๆ an illegal char #x0e46
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n124.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n124.xml
new file mode 100644
index 0000000000..5f1a16fc4a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n124.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?຃ an illegal char #x0e83
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n125.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n125.xml
new file mode 100644
index 0000000000..2889bb8419
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n125.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?຅ an illegal char #x0e85
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n126.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n126.xml
new file mode 100644
index 0000000000..b22877f426
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n126.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ຉ an illegal char #x0e89
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n127.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n127.xml
new file mode 100644
index 0000000000..1ea4859818
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n127.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?຋ an illegal char #x0e8b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n128.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n128.xml
new file mode 100644
index 0000000000..e4134bf5fe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n128.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ຎ an illegal char #x0e8e
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n129.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n129.xml
new file mode 100644
index 0000000000..b05e3dfc58
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n129.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ຘ an illegal char #x0e98
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n13.xml
new file mode 100644
index 0000000000..87d15595c7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n13.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ƕ an illegal char #x1f6
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n130.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n130.xml
new file mode 100644
index 0000000000..81cf320709
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n130.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ຠ an illegal char #x0ea0
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n131.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n131.xml
new file mode 100644
index 0000000000..f78253ad2a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n131.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?຤ an illegal char #x0ea4
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n132.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n132.xml
new file mode 100644
index 0000000000..66c74c845d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n132.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?຦ an illegal char #x0ea6
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n133.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n133.xml
new file mode 100644
index 0000000000..e017f8f61b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n133.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ຨ an illegal char #x0ea8
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n134.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n134.xml
new file mode 100644
index 0000000000..2f093a660f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n134.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ຬ an illegal char #x0eac
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n135.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n135.xml
new file mode 100644
index 0000000000..ad9b2cf968
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n135.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ຯ an illegal char #x0eaf
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n136.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n136.xml
new file mode 100644
index 0000000000..b924b61770
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n136.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ັ an illegal char #x0eb1
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n137.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n137.xml
new file mode 100644
index 0000000000..351a4925e4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n137.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ິ an illegal char #x0eb4
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n138.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n138.xml
new file mode 100644
index 0000000000..9719a5f53e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n138.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?຾ an illegal char #x0ebe
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n139.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n139.xml
new file mode 100644
index 0000000000..c4afb4f705
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n139.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à»… an illegal char #x0ec5
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n14.xml
new file mode 100644
index 0000000000..14b71b4dad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n14.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ǹ an illegal char #x1f9
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n140.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n140.xml
new file mode 100644
index 0000000000..7c575b9b95
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n140.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?཈ an illegal char #x0f48
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n141.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n141.xml
new file mode 100644
index 0000000000..f718c80ae9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n141.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ཪ an illegal char #x0f6a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n142.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n142.xml
new file mode 100644
index 0000000000..3af3d8c39c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n142.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?჆ an illegal char #x10c6
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n143.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n143.xml
new file mode 100644
index 0000000000..19dad78122
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n143.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ჷ an illegal char #x10f7
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n144.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n144.xml
new file mode 100644
index 0000000000..756bbe667f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n144.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á„ an illegal char #x1101
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n145.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n145.xml
new file mode 100644
index 0000000000..6bd0a80ef8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n145.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á„„ an illegal char #x1104
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n146.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n146.xml
new file mode 100644
index 0000000000..1b0aba959a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n146.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ᄈ an illegal char #x1108
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n147.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n147.xml
new file mode 100644
index 0000000000..171dfb2188
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n147.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á„Š an illegal char #x110a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n148.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n148.xml
new file mode 100644
index 0000000000..a5e69c4e15
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n148.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á„ an illegal char #x110d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n149.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n149.xml
new file mode 100644
index 0000000000..c368b37c66
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n149.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á„» an illegal char #x113b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n15.xml
new file mode 100644
index 0000000000..14b71b4dad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n15.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ǹ an illegal char #x1f9
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n150.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n150.xml
new file mode 100644
index 0000000000..b0c9075662
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n150.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á„¿ an illegal char #x113f
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n151.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n151.xml
new file mode 100644
index 0000000000..97a169f14d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n151.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á… an illegal char #x1141
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n152.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n152.xml
new file mode 100644
index 0000000000..92bdca5722
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n152.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á… an illegal char #x114d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n153.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n153.xml
new file mode 100644
index 0000000000..ec76dfb05c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n153.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á… an illegal char #x114f
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n154.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n154.xml
new file mode 100644
index 0000000000..f541695a5a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n154.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á…‘ an illegal char #x1151
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n155.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n155.xml
new file mode 100644
index 0000000000..c292ae913a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n155.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á…– an illegal char #x1156
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n156.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n156.xml
new file mode 100644
index 0000000000..5480590c4c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n156.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á…š an illegal char #x115a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n157.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n157.xml
new file mode 100644
index 0000000000..781a62e3ab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n157.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á…¢ an illegal char #x1162
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n158.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n158.xml
new file mode 100644
index 0000000000..b87e0d725d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n158.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á…¤ an illegal char #x1164
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n159.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n159.xml
new file mode 100644
index 0000000000..6cd532b0cd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n159.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á…¦ an illegal char #x1166
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n16.xml
new file mode 100644
index 0000000000..d071417107
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n16.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?È° an illegal char #x230
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n160.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n160.xml
new file mode 100644
index 0000000000..edf63417af
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n160.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á…« an illegal char #x116b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n161.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n161.xml
new file mode 100644
index 0000000000..c5284ac321
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n161.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á…¯ an illegal char #x116f
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n162.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n162.xml
new file mode 100644
index 0000000000..11777deeba
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n162.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á…´ an illegal char #x1174
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n163.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n163.xml
new file mode 100644
index 0000000000..705ce24cbd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n163.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ᆟ an illegal char #x119f
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n164.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n164.xml
new file mode 100644
index 0000000000..acd8649297
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n164.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ᆬ an illegal char #x11ac
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n165.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n165.xml
new file mode 100644
index 0000000000..45feac400d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n165.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ᆶ an illegal char #x11b6
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n166.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n166.xml
new file mode 100644
index 0000000000..3c26ae44e2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n166.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ᆹ an illegal char #x11b9
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n167.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n167.xml
new file mode 100644
index 0000000000..15718afdbf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n167.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ᆻ an illegal char #x11bb
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n168.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n168.xml
new file mode 100644
index 0000000000..31d388f587
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n168.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ᇃ an illegal char #x11c3
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n169.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n169.xml
new file mode 100644
index 0000000000..aeafbafd16
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n169.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ᇱ an illegal char #x11f1
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n17.xml
new file mode 100644
index 0000000000..210363c73b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n17.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ʯ an illegal char #x2af
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n170.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n170.xml
new file mode 100644
index 0000000000..036aabf04d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n170.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ᇺ an illegal char #x11fa
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n171.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n171.xml
new file mode 100644
index 0000000000..f304ca3000
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n171.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ẜ an illegal char #x1e9c
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n172.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n172.xml
new file mode 100644
index 0000000000..2863f5e744
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n172.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ỻ an illegal char #x1efa
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n173.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n173.xml
new file mode 100644
index 0000000000..d6d20bce96
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n173.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á¼– an illegal char #x1f16
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n174.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n174.xml
new file mode 100644
index 0000000000..ea3bc40e7a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n174.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?἞ an illegal char #x1f1e
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n175.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n175.xml
new file mode 100644
index 0000000000..c7a22f2a62
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n175.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?὆ an illegal char #x1f46
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n176.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n176.xml
new file mode 100644
index 0000000000..3d1b0d7742
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n176.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á½ an illegal char #x1f4f
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n177.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n177.xml
new file mode 100644
index 0000000000..4c6d85f335
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n177.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?὘ an illegal char #x1f58
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n178.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n178.xml
new file mode 100644
index 0000000000..d3486d3c63
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n178.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?὚ an illegal char #x1f5a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n179.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n179.xml
new file mode 100644
index 0000000000..59677a2838
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n179.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?὜ an illegal char #x1f5c
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n18.xml
new file mode 100644
index 0000000000..9d68532647
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n18.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ë an illegal char #x2cf
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n180.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n180.xml
new file mode 100644
index 0000000000..aa50a65869
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n180.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?὞ an illegal char #x1f5e
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n181.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n181.xml
new file mode 100644
index 0000000000..8f175186a0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n181.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á½¾ an illegal char #x1f7e
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n182.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n182.xml
new file mode 100644
index 0000000000..880b99e1d0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n182.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á¾µ an illegal char #x1fb5
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n183.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n183.xml
new file mode 100644
index 0000000000..afed23ce8d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n183.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á¾½ an illegal char #x1fbd
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n184.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n184.xml
new file mode 100644
index 0000000000..4b4932d949
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n184.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?᾿ an illegal char #x1fbf
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n185.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n185.xml
new file mode 100644
index 0000000000..70683792ff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n185.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á¿… an illegal char #x1fc5
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n186.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n186.xml
new file mode 100644
index 0000000000..fe30216f31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n186.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á¿ an illegal char #x1fcd
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n187.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n187.xml
new file mode 100644
index 0000000000..4ce877b801
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n187.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á¿• an illegal char #x1fd5
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n188.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n188.xml
new file mode 100644
index 0000000000..3d6fb6cc7d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n188.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?῜ an illegal char #x1fdc
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n189.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n189.xml
new file mode 100644
index 0000000000..7bf497a691
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n189.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?á¿­ an illegal char #x1fed
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n19.xml
new file mode 100644
index 0000000000..77835c46a5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n19.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?· an illegal char #x387
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n190.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n190.xml
new file mode 100644
index 0000000000..59236d0bb4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n190.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?῵ an illegal char #x1ff5
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n191.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n191.xml
new file mode 100644
index 0000000000..7aa78f933e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n191.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?´ an illegal char #x1ffd
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n192.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n192.xml
new file mode 100644
index 0000000000..65590b570d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n192.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?℧ an illegal char #x2127
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n193.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n193.xml
new file mode 100644
index 0000000000..9d91de76cb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n193.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ℯ an illegal char #x212f
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n194.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n194.xml
new file mode 100644
index 0000000000..052f14c877
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n194.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ↄ an illegal char #x2183
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n195.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n195.xml
new file mode 100644
index 0000000000..f2cdfc5ad4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n195.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ã‚• an illegal char #x3095
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n196.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n196.xml
new file mode 100644
index 0000000000..a1cc5c522b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n196.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?・ an illegal char #x30fb
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n197.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n197.xml
new file mode 100644
index 0000000000..d9be689efa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n197.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ã„­ an illegal char #x312d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n198.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n198.xml
new file mode 100644
index 0000000000..709c5ce8d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n198.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?힤 an illegal char #xd7a4
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n20.xml
new file mode 100644
index 0000000000..306eca9183
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n20.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?΋ an illegal char #x38b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n21.xml
new file mode 100644
index 0000000000..ace4e699f8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n21.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?΢ an illegal char #x3a2
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n22.xml
new file mode 100644
index 0000000000..b92b9aed21
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n22.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ï an illegal char #x3cf
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n23.xml
new file mode 100644
index 0000000000..a0ff57fc5a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n23.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ï— an illegal char #x3d7
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n24.xml
new file mode 100644
index 0000000000..045a5b90f8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n24.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ï an illegal char #x3dd
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n25.xml
new file mode 100644
index 0000000000..85b7096c9e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n25.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ï¡ an illegal char #x3e1
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n26.xml
new file mode 100644
index 0000000000..3d46861ff9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n26.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ï´ an illegal char #x3f4
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n27.xml
new file mode 100644
index 0000000000..cc4e79aa92
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n27.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ð an illegal char #x40d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n28.xml
new file mode 100644
index 0000000000..3bdd4dd871
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n28.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ñ an illegal char #x450
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n29.xml
new file mode 100644
index 0000000000..ad79d0be8d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n29.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ñ an illegal char #x45d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n30.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n30.xml
new file mode 100644
index 0000000000..110626a74b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n30.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ò‚ an illegal char #x482
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n31.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n31.xml
new file mode 100644
index 0000000000..8b3e0ea917
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n31.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ó… an illegal char #x4c5
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n32.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n32.xml
new file mode 100644
index 0000000000..ff2cbdcef7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n32.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ó† an illegal char #x4c6
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n33.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n33.xml
new file mode 100644
index 0000000000..125ba74dfa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n33.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ó‰ an illegal char #x4c9
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n34.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n34.xml
new file mode 100644
index 0000000000..3d5f09480b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n34.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ó¬ an illegal char #x4ec
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n35.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n35.xml
new file mode 100644
index 0000000000..8496da4660
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n35.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ó­ an illegal char #x4ed
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n36.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n36.xml
new file mode 100644
index 0000000000..6c8fc9d625
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n36.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ó¶ an illegal char #x4f6
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n37.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n37.xml
new file mode 100644
index 0000000000..a892b9ccec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n37.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Óº an illegal char #x4fa
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n38.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n38.xml
new file mode 100644
index 0000000000..055d4cc822
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n38.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Õ— an illegal char #x557
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n39.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n39.xml
new file mode 100644
index 0000000000..b44d77c951
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n39.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Õ˜ an illegal char #x558
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n40.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n40.xml
new file mode 100644
index 0000000000..f9822a08ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n40.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ö‡ an illegal char #x587
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n41.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n41.xml
new file mode 100644
index 0000000000..b7a5bd4806
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n41.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?׫ an illegal char #x5eb
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n42.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n42.xml
new file mode 100644
index 0000000000..8db7d20631
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n42.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?׳ an illegal char #x5f3
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n43.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n43.xml
new file mode 100644
index 0000000000..a6ed7d9fab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n43.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ø  an illegal char #x620
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n44.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n44.xml
new file mode 100644
index 0000000000..73cd69c154
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n44.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ø» an illegal char #x63b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n45.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n45.xml
new file mode 100644
index 0000000000..1b03ef4f8e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n45.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ù‹ an illegal char #x64b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n46.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n46.xml
new file mode 100644
index 0000000000..c9d8e7dbfe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n46.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ú¸ an illegal char #x6b8
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n47.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n47.xml
new file mode 100644
index 0000000000..ec97b666b6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n47.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Ú¿ an illegal char #x6bf
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n48.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n48.xml
new file mode 100644
index 0000000000..6f44b7a427
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n48.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Û an illegal char #x6cf
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n49.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n49.xml
new file mode 100644
index 0000000000..af47a4d263
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n49.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Û” an illegal char #x6d4
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n50.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n50.xml
new file mode 100644
index 0000000000..0f56ee00dc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n50.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Û– an illegal char #x6d6
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n51.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n51.xml
new file mode 100644
index 0000000000..7b7d3a3b5f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n51.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?Û§ an illegal char #x6e7
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n52.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n52.xml
new file mode 100644
index 0000000000..fa859cd738
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n52.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ऺ an illegal char #x093a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n53.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n53.xml
new file mode 100644
index 0000000000..89e06a6c56
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n53.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ा an illegal char #x093e
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n54.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n54.xml
new file mode 100644
index 0000000000..f78ed8155d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n54.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ॢ an illegal char #x0962
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n55.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n55.xml
new file mode 100644
index 0000000000..19c0b675e7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n55.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ঠan illegal char #x098d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n56.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n56.xml
new file mode 100644
index 0000000000..a4d566d17f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n56.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?঑ an illegal char #x0991
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n57.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n57.xml
new file mode 100644
index 0000000000..abd9a33d08
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n57.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?঒ an illegal char #x0992
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n58.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n58.xml
new file mode 100644
index 0000000000..501a77b028
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n58.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?঩ an illegal char #x09a9
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n59.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n59.xml
new file mode 100644
index 0000000000..a220cec033
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n59.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?঱ an illegal char #x09b1
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n60.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n60.xml
new file mode 100644
index 0000000000..69451a513a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n60.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?঵ an illegal char #x09b5
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n61.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n61.xml
new file mode 100644
index 0000000000..c96791228b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n61.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?঺ an illegal char #x09ba
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n62.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n62.xml
new file mode 100644
index 0000000000..699f5858c2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n62.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?৞ an illegal char #x09de
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n63.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n63.xml
new file mode 100644
index 0000000000..18d9938f33
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n63.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ৢ an illegal char #x09e2
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n64.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n64.xml
new file mode 100644
index 0000000000..09b68ffec8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n64.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?৲ an illegal char #x09f2
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n65.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n65.xml
new file mode 100644
index 0000000000..099c1a747d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n65.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?਋ an illegal char #x0a0b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n66.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n66.xml
new file mode 100644
index 0000000000..9a9f6b4f53
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n66.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?਑ an illegal char #x0a11
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n67.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n67.xml
new file mode 100644
index 0000000000..53cd2163b1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n67.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?਩ an illegal char #x0a29
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n68.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n68.xml
new file mode 100644
index 0000000000..7a7ac59372
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n68.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?਱ an illegal char #x0a31
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n69.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n69.xml
new file mode 100644
index 0000000000..829a3105e7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n69.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?਴ an illegal char #x0a34
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n70.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n70.xml
new file mode 100644
index 0000000000..dfc5981472
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n70.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?਷ an illegal char #x0a37
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n71.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n71.xml
new file mode 100644
index 0000000000..60c6012304
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n71.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?਺ an illegal char #x0a3a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n72.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n72.xml
new file mode 100644
index 0000000000..747f8e16f6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n72.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à© an illegal char #x0a5d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n73.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n73.xml
new file mode 100644
index 0000000000..67b3569cdc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n73.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à©° an illegal char #x0a70
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n74.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n74.xml
new file mode 100644
index 0000000000..4e0f1aec07
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n74.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ੵ an illegal char #x0a75
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n75.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n75.xml
new file mode 100644
index 0000000000..6bc8136e7e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n75.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?઄ an illegal char #x0a84
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n76.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n76.xml
new file mode 100644
index 0000000000..00786d0d6a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n76.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?઼ an illegal char #x0abc
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n77.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n77.xml
new file mode 100644
index 0000000000..271ce04bc9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n77.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?઒ an illegal char #x0a92
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n78.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n78.xml
new file mode 100644
index 0000000000..8c1e53b7e4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n78.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?઩ an illegal char #x0aa9
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n79.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n79.xml
new file mode 100644
index 0000000000..cfb54f167e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n79.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?઱ an illegal char #x0ab1
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n80.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n80.xml
new file mode 100644
index 0000000000..c7a579ec43
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n80.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?઴ an illegal char #x0ab4
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n81.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n81.xml
new file mode 100644
index 0000000000..b6af57188a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n81.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?઺ an illegal char #x0aba
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n82.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n82.xml
new file mode 100644
index 0000000000..dc3bdc94d3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n82.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?଄ an illegal char #x0b04
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n83.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n83.xml
new file mode 100644
index 0000000000..acaaa02b4e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n83.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ଠan illegal char #x0b0d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n84.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n84.xml
new file mode 100644
index 0000000000..ada649f833
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n84.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?଑ an illegal char #x0b11
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n85.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n85.xml
new file mode 100644
index 0000000000..c4d60d1c59
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n85.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?଩ an illegal char #x0b29
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n86.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n86.xml
new file mode 100644
index 0000000000..e97bb89679
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n86.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?଱ an illegal char #x0b31
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n87.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n87.xml
new file mode 100644
index 0000000000..e1df7fb766
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n87.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?଴ an illegal char #x0b34
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n88.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n88.xml
new file mode 100644
index 0000000000..5efe3e46f5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n88.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?଺ an illegal char #x0b3a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n89.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n89.xml
new file mode 100644
index 0000000000..f9d5f8b077
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n89.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?ା an illegal char #x0b3e
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n90.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n90.xml
new file mode 100644
index 0000000000..eb138286ee
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n90.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à­ž an illegal char #x0b5e
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n91.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n91.xml
new file mode 100644
index 0000000000..681a0161e8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n91.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à­¢ an illegal char #x0b62
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n92.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n92.xml
new file mode 100644
index 0000000000..438bed05a9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n92.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?஋ an illegal char #x0b8b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n93.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n93.xml
new file mode 100644
index 0000000000..7ce88e04ef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n93.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?஑ an illegal char #x0b91
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n94.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n94.xml
new file mode 100644
index 0000000000..eca46c86a2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n94.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?஘ an illegal char #x0b98
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n95.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n95.xml
new file mode 100644
index 0000000000..bc2ce61956
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n95.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à®› an illegal char #x0b9b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n96.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n96.xml
new file mode 100644
index 0000000000..2e0ac15856
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n96.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à® an illegal char #x0b9d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n97.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n97.xml
new file mode 100644
index 0000000000..64e954be27
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n97.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?à®  an illegal char #x0ba0
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n98.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n98.xml
new file mode 100644
index 0000000000..227c2fbf90
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n98.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?஧ an illegal char #x0ba7
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n99.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n99.xml
new file mode 100644
index 0000000000..7603a638be
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P85/ibm85n99.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?஫ an illegal char #x0bab
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Entries
new file mode 100644
index 0000000000..5ffda9868a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm86n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm86n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm86n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm86n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Repository
new file mode 100644
index 0000000000..95383be9fa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P86
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n01.xml
new file mode 100644
index 0000000000..944cd9f766
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n01.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?䳿 an illegal char #x4cff
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n02.xml
new file mode 100644
index 0000000000..fdcec7e946
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n02.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?龦 an illegal char #x9fa6
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n03.xml
new file mode 100644
index 0000000000..0ac615b3bd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n03.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?〈 an illegal char #x3008
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n04.xml
new file mode 100644
index 0000000000..0dcea5ee21
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P86/ibm86n04.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?〪 an illegal char #x302a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Entries
new file mode 100644
index 0000000000..66717b2c63
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Entries
@@ -0,0 +1,85 @@
+/ibm87n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n11.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n12.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n13.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n14.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n15.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n16.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n17.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n18.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n19.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n20.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n21.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n22.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n23.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n24.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n25.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n26.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n27.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n28.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n29.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n30.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n31.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n32.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n33.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n34.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n35.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n36.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n37.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n38.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n39.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n40.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n41.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n42.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n43.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n44.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n45.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n46.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n47.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n48.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n49.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n50.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n51.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n52.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n53.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n54.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n55.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n56.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n57.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n58.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n59.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n60.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n61.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n62.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n63.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n64.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n66.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n67.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n68.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n69.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n70.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n71.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n72.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n73.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n74.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n75.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n76.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n77.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n78.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n79.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n80.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n81.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n82.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n83.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n84.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm87n85.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Repository
new file mode 100644
index 0000000000..21932a6e48
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P87
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n01.xml
new file mode 100644
index 0000000000..93e8c6a76b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n01.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Ë¿ an illegal char #x2ff
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n02.xml
new file mode 100644
index 0000000000..e656074b4b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n02.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_͆ an illegal char #x346
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n03.xml
new file mode 100644
index 0000000000..4912cac9e3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n03.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Í¢ an illegal char #x362
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n04.xml
new file mode 100644
index 0000000000..89c94fcf6b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n04.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Ò‡ an illegal char #x487
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n05.xml
new file mode 100644
index 0000000000..2ca7779d71
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n05.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Ö¢ an illegal char #x5a2
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n06.xml
new file mode 100644
index 0000000000..6a1a9f7da2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n06.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Öº an illegal char #x5ba
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n07.xml
new file mode 100644
index 0000000000..1291bed370
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n07.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Ö¾ an illegal char #x5be
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n08.xml
new file mode 100644
index 0000000000..ffc50ae831
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n08.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_×€ an illegal char #x5c0
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n09.xml
new file mode 100644
index 0000000000..b85bcd860c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n09.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_׃ an illegal char #x5c3
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n10.xml
new file mode 100644
index 0000000000..8b4dfc9820
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n10.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Ù“ an illegal char #x653
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n11.xml
new file mode 100644
index 0000000000..e801679d8d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n11.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Ú¸ an illegal char #x6b8
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n12.xml
new file mode 100644
index 0000000000..7886141f45
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n12.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Ú¹ an illegal char #x6b9
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n13.xml
new file mode 100644
index 0000000000..919bc60a09
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n13.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Û© an illegal char #x6e9
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n14.xml
new file mode 100644
index 0000000000..8488244c1f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n14.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Û® an illegal char #x6ee
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n15.xml
new file mode 100644
index 0000000000..4b41eea665
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n15.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ऄ an illegal char #x0904
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n16.xml
new file mode 100644
index 0000000000..1a0cd7a005
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n16.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ऻ an illegal char #x093b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n17.xml
new file mode 100644
index 0000000000..ad5e107762
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n17.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ॎ an illegal char #x094e
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n18.xml
new file mode 100644
index 0000000000..2080d6d6e9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n18.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ॕ an illegal char #x0955
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n19.xml
new file mode 100644
index 0000000000..525cb830b5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n19.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_। an illegal char #x0964
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n20.xml
new file mode 100644
index 0000000000..9b7f8dc3c9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n20.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_঄ an illegal char #x0984
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n21.xml
new file mode 100644
index 0000000000..226c54652e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n21.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_৅ an illegal char #x09c5
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n22.xml
new file mode 100644
index 0000000000..0c9a38c9b2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n22.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_৉ an illegal char #x09c9
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n23.xml
new file mode 100644
index 0000000000..61c108593e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n23.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ৎ an illegal char #x09ce
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n24.xml
new file mode 100644
index 0000000000..fb47e7084e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n24.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_৘ an illegal char #x09d8
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n25.xml
new file mode 100644
index 0000000000..6e8138438c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n25.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_৤ an illegal char #x09e4
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n26.xml
new file mode 100644
index 0000000000..22649c2dcc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n26.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ਃ an illegal char #x0a03
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n27.xml
new file mode 100644
index 0000000000..89cef39443
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n27.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_਽ an illegal char #x0a3d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n28.xml
new file mode 100644
index 0000000000..2f7cf1a426
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n28.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_੆ an illegal char #x0a46
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n29.xml
new file mode 100644
index 0000000000..0d461fc95e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n29.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_੉ an illegal char #x0a49
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n30.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n30.xml
new file mode 100644
index 0000000000..0441ce3e29
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n30.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à©Ž an illegal char #x0a4e
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n31.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n31.xml
new file mode 100644
index 0000000000..31e2dda32b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n31.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_઀ an illegal char #x0a80
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n32.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n32.xml
new file mode 100644
index 0000000000..d3ab27a424
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n32.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_઄ an illegal char #x0a84
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n33.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n33.xml
new file mode 100644
index 0000000000..1e7dfdf670
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n33.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_઻ an illegal char #x0abb
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n34.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n34.xml
new file mode 100644
index 0000000000..f410327cec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n34.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_૆ an illegal char #x0ac6
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n35.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n35.xml
new file mode 100644
index 0000000000..d3857b9d95
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n35.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à«Š an illegal char #x0aca
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n36.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n36.xml
new file mode 100644
index 0000000000..616d4e7f40
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n36.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à«Ž an illegal char #x0ace
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n37.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n37.xml
new file mode 100644
index 0000000000..8695a21644
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n37.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_଄ an illegal char #x0b04
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n38.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n38.xml
new file mode 100644
index 0000000000..a0a8fa39b7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n38.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_଻ an illegal char #x0b3b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n39.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n39.xml
new file mode 100644
index 0000000000..c033ffc330
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n39.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à­„ an illegal char #x0b44
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n40.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n40.xml
new file mode 100644
index 0000000000..7974a453d5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n40.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à­Š an illegal char #x0b4a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n41.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n41.xml
new file mode 100644
index 0000000000..d29c76c951
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n41.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à­Ž an illegal char #x0b4e
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n42.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n42.xml
new file mode 100644
index 0000000000..0f84f57f32
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n42.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à­˜ an illegal char #x0b58
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n43.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n43.xml
new file mode 100644
index 0000000000..647fb53a17
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n43.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_஄ an illegal char #x0b84
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n44.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n44.xml
new file mode 100644
index 0000000000..5d72bc4e45
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n44.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_௃ an illegal char #x0bc3
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n45.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n45.xml
new file mode 100644
index 0000000000..f8d7404ed0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n45.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_௉ an illegal char #x0bc9
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n46.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n46.xml
new file mode 100644
index 0000000000..9e41f32ec4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n46.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_௖ an illegal char #x0bd6
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n47.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n47.xml
new file mode 100644
index 0000000000..e9ad0d673a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n47.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à° an illegal char #x0c0d
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n48.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n48.xml
new file mode 100644
index 0000000000..f8d76939e3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n48.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à±… an illegal char #x0c45
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n49.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n49.xml
new file mode 100644
index 0000000000..a4a976c95d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n49.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_౉ an illegal char #x0c49
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n50.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n50.xml
new file mode 100644
index 0000000000..aafe1462ed
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n50.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à±” an illegal char #x0c54
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n51.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n51.xml
new file mode 100644
index 0000000000..1e2d7a016f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n51.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ಠan illegal char #x0c81
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n52.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n52.xml
new file mode 100644
index 0000000000..c3fa1f1302
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n52.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_಄ an illegal char #x0c84
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n53.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n53.xml
new file mode 100644
index 0000000000..e085f82d17
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n53.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à³… an illegal char #x0cc5
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n54.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n54.xml
new file mode 100644
index 0000000000..bbe5b86041
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n54.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_೉ an illegal char #x0cc9
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n55.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n55.xml
new file mode 100644
index 0000000000..cc8a362bbb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n55.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à³” an illegal char #x0cd4
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n56.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n56.xml
new file mode 100644
index 0000000000..b212b06847
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n56.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à³— an illegal char #x0cd7
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n57.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n57.xml
new file mode 100644
index 0000000000..0b2f283d0f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n57.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à´„ an illegal char #x0d04
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n58.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n58.xml
new file mode 100644
index 0000000000..b6fe5540a8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n58.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_൅ an illegal char #x0d45
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n59.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n59.xml
new file mode 100644
index 0000000000..26fbcfb58b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n59.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_൉ an illegal char #x0d49
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n60.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n60.xml
new file mode 100644
index 0000000000..2a69c9ba12
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n60.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ൎ an illegal char #x0d4e
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n61.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n61.xml
new file mode 100644
index 0000000000..de7d518267
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n61.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_൘ an illegal char #x0d58
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n62.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n62.xml
new file mode 100644
index 0000000000..59e0704d83
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n62.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_฿ an illegal char #x0e3f
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n63.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n63.xml
new file mode 100644
index 0000000000..9c52345412
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n63.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_฻ an illegal char #x0e3b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n64.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n64.xml
new file mode 100644
index 0000000000..cf6f9b73f6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n64.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_๠an illegal char #x0e4f
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n66.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n66.xml
new file mode 100644
index 0000000000..7938cd6f32
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n66.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_຺ an illegal char #x0eba
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n67.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n67.xml
new file mode 100644
index 0000000000..c767067397
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n67.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_຾ an illegal char #x0ebe
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n68.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n68.xml
new file mode 100644
index 0000000000..f691f25400
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n68.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_໎ an illegal char #x0ece
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n69.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n69.xml
new file mode 100644
index 0000000000..12f66777a7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n69.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_༚ an illegal char #x0f1a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n70.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n70.xml
new file mode 100644
index 0000000000..b4b443d9f2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n70.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_༶ an illegal char #x0f36
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n71.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n71.xml
new file mode 100644
index 0000000000..1896885a77
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n71.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_༸ an illegal char #x0f38
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n72.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n72.xml
new file mode 100644
index 0000000000..05d2574ff2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n72.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_༻ an illegal char #x0f3b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n73.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n73.xml
new file mode 100644
index 0000000000..2dec5281be
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n73.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_༺ an illegal char #x0f3a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n74.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n74.xml
new file mode 100644
index 0000000000..e0ec7d7700
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n74.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_཰ an illegal char #x0f70
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n75.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n75.xml
new file mode 100644
index 0000000000..355282c0aa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n75.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_྅ an illegal char #x0f85
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n76.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n76.xml
new file mode 100644
index 0000000000..bd5b80ead5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n76.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ྌ an illegal char #x0f8c
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n77.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n77.xml
new file mode 100644
index 0000000000..f2ed26bb9d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n77.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ྖ an illegal char #x0f96
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n78.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n78.xml
new file mode 100644
index 0000000000..d7ad3001d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n78.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_྘ an illegal char #x0f98
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n79.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n79.xml
new file mode 100644
index 0000000000..7b4764b930
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n79.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ྰ an illegal char #x0fb0
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n80.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n80.xml
new file mode 100644
index 0000000000..a15a6a48c7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n80.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ྸ an illegal char #x0fb8
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n81.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n81.xml
new file mode 100644
index 0000000000..9ff4e284e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n81.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ྺ an illegal char #x0fba
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n82.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n82.xml
new file mode 100644
index 0000000000..a43b1a6c30
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n82.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_⃠an illegal char #x20dd
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n83.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n83.xml
new file mode 100644
index 0000000000..5a6e6c12b8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n83.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_⃢ an illegal char #x20e2
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n84.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n84.xml
new file mode 100644
index 0000000000..627447938c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n84.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_〰 an illegal char #x3030
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n85.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n85.xml
new file mode 100644
index 0000000000..36a4153b7c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P87/ibm87n85.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ã‚› an illegal char #x309b
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Entries
new file mode 100644
index 0000000000..121f8e743b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Entries
@@ -0,0 +1,16 @@
+/ibm88n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n11.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n12.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n13.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n14.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n15.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm88n16.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Repository
new file mode 100644
index 0000000000..3c41a5fd7d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P88
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n01.xml
new file mode 100644
index 0000000000..7f6560c7e3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_) an illegal char #x29 in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n02.xml
new file mode 100644
index 0000000000..32098d638a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n02.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_; an illegal char #x3b in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n03.xml
new file mode 100644
index 0000000000..4df1d6dd90
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n03.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Ùª an illegal char #x66a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n04.xml
new file mode 100644
index 0000000000..ac966c9668
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n04.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Ûº an illegal char #x6fa
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n05.xml
new file mode 100644
index 0000000000..5ab611dbeb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n05.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_॰ an illegal char #x0970
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n06.xml
new file mode 100644
index 0000000000..f726710c79
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n06.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_৲ an illegal char #x09f2
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n08.xml
new file mode 100644
index 0000000000..b34ee8fd3b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n08.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à«° an illegal char #x0af0
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n09.xml
new file mode 100644
index 0000000000..9c5857a77d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n09.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à­° an illegal char #x0b70
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n10.xml
new file mode 100644
index 0000000000..905d767e09
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n10.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à±¥ an illegal char #x0c65
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n11.xml
new file mode 100644
index 0000000000..ad14d219f4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n11.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à³¥ an illegal char #x0ce5
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n12.xml
new file mode 100644
index 0000000000..d45eb84d37
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n12.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_à³° an illegal char #x0cf0
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n13.xml
new file mode 100644
index 0000000000..066de84967
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n13.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_൰ an illegal char #x0d70
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n14.xml
new file mode 100644
index 0000000000..243658df6b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n14.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_๚ an illegal char #x0e5a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n15.xml
new file mode 100644
index 0000000000..d59a76dcc5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n15.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_໚ an illegal char #x0eda
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n16.xml
new file mode 100644
index 0000000000..e6098c8d60
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P88/ibm88n16.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_༪ an illegal char #x0f2a
+ in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Entries
new file mode 100644
index 0000000000..52e81e1caa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Entries
@@ -0,0 +1,13 @@
+/ibm89n01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm89n02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm89n03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm89n04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm89n05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm89n06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm89n07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm89n08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm89n09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm89n10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm89n11.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm89n12.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Repository
new file mode 100644
index 0000000000..31b68d8f24
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/P89
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n01.xml
new file mode 100644
index 0000000000..72f3765c1f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_¶ an illegal extender #x0b6 in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n02.xml
new file mode 100644
index 0000000000..c6c20e7447
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n02.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_¸ an illegal extender #x0b8 in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n03.xml
new file mode 100644
index 0000000000..85e1191c1e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n03.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Ë’ an illegal extender #x2d2 in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n04.xml
new file mode 100644
index 0000000000..82b75d33bf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n04.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_Ͼ an illegal extender #x3fe in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n05.xml
new file mode 100644
index 0000000000..49f7aaa6a5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n05.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ÙŸ an illegal extender #x65f in PITarget ?>
+]>
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n06.xml
new file mode 100644
index 0000000000..9e9313d861
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n06.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_໇ an illegal extender #x0ec7 in PITarget ?>
+]>
+<animal/>
+<IllegalExtender໇/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n07.xml
new file mode 100644
index 0000000000..719d31494e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n07.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_〆 an illegal extender #x3006 in PITarget ?>
+]>
+<animal/>
+<IllegalExtender〆/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n08.xml
new file mode 100644
index 0000000000..ad6b01449e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n08.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_〰 an illegal extender #x3030 in PITarget ?>
+]>
+<animal/>
+<IllegalExtender〰/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n09.xml
new file mode 100644
index 0000000000..78884fcd3a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n09.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_〶 an illegal extender #x3036 in PITarget ?>
+]>
+<animal/>
+<IllegalExtender〶/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n10.xml
new file mode 100644
index 0000000000..152ab1f14a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n10.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_゜ an illegal extender #x309c in PITarget ?>
+]>
+<animal/>
+<IllegalExtender゜/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n11.xml
new file mode 100644
index 0000000000..471c4e3036
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n11.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ã‚Ÿ an illegal extender #x309f in PITarget ?>
+]>
+<animal/>
+<IllegalExtenderã‚Ÿ/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n12.xml
new file mode 100644
index 0000000000..731d505a1f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/P89/ibm89n12.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE animal [
+<!ELEMENT animal ANY>
+<?_ヿ an illegal extender #x30ff in PITarget ?>
+]>
+<animal/>
+<IllegalExtenderヿ/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/432gewf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/432gewf.xml
new file mode 100644
index 0000000000..51515865c0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/432gewf.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY gewithElemnetDecl "<!ELEMENT bogus ANY>">
+ <!ATTLIST student att1 CDATA #REQUIRED>
+]>
+<!--* This test is to test the GE well-formedness
+ constraints in Section 4.3.2:
+ An internal general parsed encith is well-formed if
+ its replacement text matches the production labeled
+ "content" *-->
+<?MyInstruct This is a test ?>
+<student att1="ibm">My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Entries
new file mode 100644
index 0000000000..9ada44c04f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Entries
@@ -0,0 +1,4 @@
+/432gewf.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ltinentval.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/simpleltinentval.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Repository
new file mode 100644
index 0000000000..ceb8cec477
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/misc
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/ltinentval.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/ltinentval.xml
new file mode 100644
index 0000000000..929bd7f9c0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/ltinentval.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY gewithlt "abcd&#x26;&#x23;x3c;">
+ <!ATTLIST student att1 CDATA #REQUIRED>
+]>
+<--* this is to test "<" can not be included in an entity
+ that is referenced in AttValue, even indirectly *-->
+
+
+<?MyInstruct This is a test ?>
+<student att1="&gewithlt;">My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/simpleltinentval.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/simpleltinentval.xml
new file mode 100644
index 0000000000..a668e4c3f5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/misc/simpleltinentval.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY gewithlt "abcd&#x3c;">
+ <!ATTLIST student att1 CDATA #REQUIRED>
+]>
+<--* this is to test "<" can not be included in the
+ replacement text of an entity that is referenced
+ in AttValue. Anyway, this file should be rejected
+ because the internal GE "gewithlt" is not even
+ well-formed by definition. *-->
+
+
+<?MyInstruct This is a test ?>
+<student att1="&gewithlt;">My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Entries
new file mode 100644
index 0000000000..3c2743a21c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm28an01.dtd/1.1/Tue Apr 2 18:01:18 2002//
+/ibm28an01.xml/1.2/Tue Sep 30 14:47:23 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Repository
new file mode 100644
index 0000000000..5250d9403f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/not-wf/p28a
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.dtd
new file mode 100644
index 0000000000..956320f370
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.dtd
@@ -0,0 +1,6 @@
+ <!ENTITY % make_leopard_element "<!ELEMENT leopard ">
+ %make_leopard_element;ANY>
+ <!-- This is against WFC:PE Between Declatations in
+ production [28a]. In this file, Only one of the first character
+ and the last character of a markup declaration is contained
+ in the same parameter-entity text replacement.-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.xml
new file mode 100644
index 0000000000..a293d092d6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/not-wf/p28a/ibm28an01.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE animal SYSTEM "ibm28an01.dtd" [
+ <!ELEMENT animal (cat|tiger|leopard)+>
+ <!NOTATION animal_class SYSTEM "ibm29v01.txt">
+ <!ELEMENT cat ANY>
+ <!ENTITY forcat "This is a small cat">
+ <!ELEMENT tiger (#PCDATA)>
+ <!ELEMENT small EMPTY>
+ <!ELEMENT big EMPTY>
+ <!ATTLIST tiger color CDATA #REQUIRED>
+ <?sound "This is a PI" ?>
+ <!-- This is a comment -->
+]>
+<animal>
+ <cat>&forcat;</cat>
+ <tiger color="white">This is a white tiger in Mirage!!</tiger>
+ <cat/>
+ <leopard>
+ <small/>
+ <big/>
+ </leopard>
+</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Entries
new file mode 100644
index 0000000000..67e5dbe407
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Entries
@@ -0,0 +1,70 @@
+D/P01////
+D/P02////
+D/P03////
+D/P09////
+D/P10////
+D/P11////
+D/P12////
+D/P13////
+D/P14////
+D/P15////
+D/P16////
+D/P17////
+D/P18////
+D/P19////
+D/P20////
+D/P21////
+D/P22////
+D/P23////
+D/P24////
+D/P25////
+D/P26////
+D/P27////
+D/P28////
+D/P29////
+D/P30////
+D/P31////
+D/P32////
+D/P33////
+D/P34////
+D/P35////
+D/P36////
+D/P37////
+D/P38////
+D/P39////
+D/P40////
+D/P41////
+D/P42////
+D/P43////
+D/P44////
+D/P45////
+D/P47////
+D/P49////
+D/P50////
+D/P51////
+D/P52////
+D/P54////
+D/P55////
+D/P56////
+D/P57////
+D/P58////
+D/P59////
+D/P60////
+D/P61////
+D/P62////
+D/P63////
+D/P64////
+D/P65////
+D/P66////
+D/P67////
+D/P68////
+D/P69////
+D/P70////
+D/P78////
+D/P79////
+D/P82////
+D/P85////
+D/P86////
+D/P87////
+D/P88////
+D/P89////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Repository
new file mode 100644
index 0000000000..48acd66c01
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Entries
new file mode 100644
index 0000000000..4ed8ab9a63
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm01v01.xml/1.2/Tue Sep 30 14:48:55 2003//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Repository
new file mode 100644
index 0000000000..7f0d8ed044
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P01
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/ibm01v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/ibm01v01.xml
new file mode 100644
index 0000000000..c6e0cf470a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/ibm01v01.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<!-- Above is XMLDecl -->
+<!DOCTYPE animal [
+<!ELEMENT animal (cat|tiger|leopard)+>
+<!ELEMENT cat EMPTY>
+<!ELEMENT tiger (#PCDATA)>
+<!ELEMENT leopard ANY>
+<!ELEMENT small EMPTY>
+<!ELEMENT big EMPTY>
+<!ATTLIST tiger color CDATA #REQUIRED>
+]>
+<!-- Above is DTD -->
+<?music "Here is a PI" ?>
+<animal>
+ <cat/>
+ <tiger color="white">This is a white tiger in Mirage!!</tiger>
+ <cat/>
+ <leopard>
+ <small/>
+ <big/>
+ </leopard>
+</animal>
+<!-- Above is element animal -->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Entries
new file mode 100644
index 0000000000..81d6e5d3b4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm01v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Repository
new file mode 100644
index 0000000000..7c03a9c171
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P01/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/ibm01v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/ibm01v01.xml
new file mode 100644
index 0000000000..8b93892ae8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P01/out/ibm01v01.xml
@@ -0,0 +1 @@
+<?music "Here is a PI" ?><animal>&#10; <cat></cat>&#10; <tiger color="white">This is a white tiger in Mirage!!</tiger>&#10; <cat></cat>&#10; <leopard>&#10; <small></small>&#10; <big></big>&#10; </leopard>&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Entries
new file mode 100644
index 0000000000..c3228552d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm02v01.xml/1.2/Mon Mar 25 16:06:23 2002//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Repository
new file mode 100644
index 0000000000..3341d0bc84
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P02
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml
new file mode 100644
index 0000000000..2363b97fe7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+<!-- This test case covers legal character ranges plus
+ discrete legal characters for production 02. -->
+<?NAME_09- _0A-
+_0D-
+_20- _D7FF-퟿_6c0f-æ°_E000-_FFFD-�_effd-_010000-ð€€_10FFFD-ô¿½_08fffd-ò¿½ This is a PI target ?>
+]>
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Entries
new file mode 100644
index 0000000000..56cc7b1ae9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm02v01.xml/1.2/Mon Mar 25 16:07:00 2002//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Repository
new file mode 100644
index 0000000000..7f0755c915
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P02/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/ibm02v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/ibm02v01.xml
new file mode 100644
index 0000000000..7e20303e9a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/out/ibm02v01.xml
@@ -0,0 +1,4 @@
+<?NAME_09- _0A-
+
+_0D-
+_20- _D7FF-퟿_6c0f-æ°_E000-_FFFD-�_effe-_010000-ð€€_10FFFF-ô¿¿_08ffff-ò¿¿ This is a PI target ?><book></book>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Entries
new file mode 100644
index 0000000000..6271e781ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm03v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Repository
new file mode 100644
index 0000000000..7591eeb303
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P03
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/ibm03v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/ibm03v01.xml
new file mode 100644
index 0000000000..6ab6ff934f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/ibm03v01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+<!-- This test case covers 0 legal character ranges plus
+ 4 discrete legal characters for production 03. -->
+<?NAME_20- _09- _0D- _0A-
+ This is a PI target ?>
+]>
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Entries
new file mode 100644
index 0000000000..677e962239
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm03v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Repository
new file mode 100644
index 0000000000..7817ffc43d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P03/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/ibm03v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/ibm03v01.xml
new file mode 100644
index 0000000000..b2af47f3d5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P03/out/ibm03v01.xml
@@ -0,0 +1,4 @@
+<?NAME_20- _09- _0D-
+_0A-
+
+ This is a PI target ?><book></book> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Entries
new file mode 100644
index 0000000000..ceb1a02eef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Entries
@@ -0,0 +1,8 @@
+/ibm09v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm09v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm09v03.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm09v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm09v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm09v05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/student.dtd/1.2/Tue Sep 30 14:51:13 2003//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Repository
new file mode 100644
index 0000000000..11294d6f82
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P09
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v01.xml
new file mode 100644
index 0000000000..6972b10932
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v01.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY FullName "">
+]>
+
+<student>My Name is &FullName;. </student>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v02.xml
new file mode 100644
index 0000000000..72bca25508
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v02.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY FullName "SnowMan">
+]>
+
+<student>My Name is &FullName;. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.dtd
new file mode 100644
index 0000000000..c39cb64c56
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.dtd
@@ -0,0 +1,4 @@
+<!ELEMENT student (#PCDATA)>
+<!-- testing entity value with PEReference -->
+ <!ENTITY % FullName "first , last">
+ <!ENTITY Name "%FullName;"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.xml
new file mode 100644
index 0000000000..7ce1eab062
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v03.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!DOCTYPE student SYSTEM "ibm09v03.dtd">
+<student>I am a new student with &Name;</student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v04.xml
new file mode 100644
index 0000000000..7661470018
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v04.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+<!-- testing entity value with Reference -->
+ <!ENTITY RealName "SnowMan">
+ <!ENTITY FullName "&RealName;">
+]>
+
+<student>My Name is &FullName;. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v05.xml
new file mode 100644
index 0000000000..f03eb910b3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/ibm09v05.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!DOCTYPE student SYSTEM "student.dtd"[
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY Age "21">
+ <!ENTITY Status "freshman">
+ <!ENTITY % FullName "first , last , middle">
+]>
+
+<!-- testing entity value with combination reference -->
+<student>This is a test of &combine;</student>
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Entries
new file mode 100644
index 0000000000..2ad162c296
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Entries
@@ -0,0 +1,6 @@
+/ibm09v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm09v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm09v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm09v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm09v05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Repository
new file mode 100644
index 0000000000..de9bac6df0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P09/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v01.xml
new file mode 100644
index 0000000000..f8dc7391f8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v01.xml
@@ -0,0 +1 @@
+<student>My Name is . </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v02.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v02.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v03.xml
new file mode 100644
index 0000000000..3349e7e247
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v03.xml
@@ -0,0 +1 @@
+<student>I am a new student with first , last</student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v04.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v04.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v05.xml
new file mode 100644
index 0000000000..9f86daac0f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/out/ibm09v05.xml
@@ -0,0 +1 @@
+<student>This is a test of My Name is first , last , middle and my age is 21 Again first , last , middle first , last , middle and my status is &#10;&#9;&#9;freshman freshman and first , last , middle 21 first , last , middle freshman That is all.</student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/student.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/student.dtd
new file mode 100644
index 0000000000..abb6c014dc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P09/student.dtd
@@ -0,0 +1,4 @@
+<?xml encoding="utf-8"?>
+<!-- student.dtd -->
+<!ENTITY combine "My Name is %FullName; and my age is &Age; Again %FullName; %FullName; and my status is
+ &Status; &Status; and %FullName; &Age; %FullName; &Status; That is all.">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Entries
new file mode 100644
index 0000000000..c778cbc246
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Entries
@@ -0,0 +1,9 @@
+/ibm10v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Repository
new file mode 100644
index 0000000000..8c90615256
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P10
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v01.xml
new file mode 100644
index 0000000000..51fa1087e7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v01.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #REQUIRED >
+ <!ENTITY myfirst "Snow">
+ <!ENTITY mymiddle "Y">
+ <!ENTITY mylast "">
+]>
+<!-- testing AttValue with empty char inside double quote -->
+<student first="" last="">My Name is Snow &mylast; Man. </student>
+
+
+
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v02.xml
new file mode 100644
index 0000000000..6be402b518
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v02.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #REQUIRED >
+ <!ENTITY myfirst "Snow">
+ <!ENTITY mymiddle "Y">
+ <!ENTITY mylast ''>
+]>
+<!-- testing AttValue with empty char inside single quote -->
+<student first='' last=''>My Name is Snow &mylast; Man. </student>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v03.xml
new file mode 100644
index 0000000000..a025c98312
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v03.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #REQUIRED >
+ <!ENTITY myfirst 'Snow'>
+ <!ENTITY mymiddle 'I'>
+ <!ENTITY mylast "Man'">
+]>
+<!-- testing AttValue string with a single quote inside -->
+<student first="Snow'" last="Man">My Name is &myfirst; &mylast;. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v04.xml
new file mode 100644
index 0000000000..84cda90a88
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v04.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #REQUIRED >
+ <!ENTITY myfirst 'Snow'>
+ <!ENTITY mymiddle 'I'>
+ <!ENTITY mylast 'Man"'>
+]>
+<!-- testing AttValue string with a double quote inside -->
+<student first='Snow"' last='Man'>My Name is &myfirst; &mylast;. </student>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v05.xml
new file mode 100644
index 0000000000..47b32c5d23
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v05.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #REQUIRED >
+ <!ENTITY myfirst "Snow">
+ <!ENTITY mymiddle "Y">
+ <!ENTITY mylast "&myfirst; Man">
+]>
+<!-- testing AttValue with a reference in double quote -->
+<student first="&myfirst;" last="mylast;">My Name is &mylast;. </student>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v06.xml
new file mode 100644
index 0000000000..6b6c45eee0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v06.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #REQUIRED >
+ <!ENTITY myfirst "Snow">
+ <!ENTITY mymiddle "Y">
+ <!ENTITY mylast '&myfirst; Man'>
+]>
+<!-- testing AttValue with a reference in single quote -->
+<student first='&myfirst;' last='&mylast;'>My Name is &mylast;. </student>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v07.xml
new file mode 100644
index 0000000000..7ed6e11ae8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v07.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #REQUIRED >
+ <!ENTITY myfirst "Snow">
+ <!ENTITY mymiddle "Y">
+ <!ENTITY mylast "Man &myfirst; and &myfirst; mymiddle;.">
+]>
+<!-- testing AttValue with references combination in double quotes -->
+<student first="Full Name &myfirst; &#x31; and &mylast; &mylast; &#x63;" last="&mylast;" >My first Name is &myfirst; and my last name is &mylast;. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v08.xml
new file mode 100644
index 0000000000..c7e9e5ecd0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/ibm10v08.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student
+ first CDATA #REQUIRED
+ middle CDATA #IMPLIED
+ last CDATA #REQUIRED >
+ <!ENTITY myfirst "Snow">
+ <!ENTITY mymiddle "I">
+ <!ENTITY mylast 'Man &myfirst; and &myfirst; mymiddle;.'>
+]>
+<!-- testing AttValue with references combination in single quote -->
+<student first='Full Name &myfirst; and &#x22;&mylast;&#x22; &mylast;' last='&mylast;'>My first Name is &myfirst; and my last name is &mylast;. </student>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Entries
new file mode 100644
index 0000000000..5cf4d37b71
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Entries
@@ -0,0 +1,9 @@
+/ibm10v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm10v08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Repository
new file mode 100644
index 0000000000..3e24d562bf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P10/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v01.xml
new file mode 100644
index 0000000000..a0e5f62ea7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v01.xml
@@ -0,0 +1 @@
+<student first="" last="">My Name is Snow Man. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v02.xml
new file mode 100644
index 0000000000..a0e5f62ea7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v02.xml
@@ -0,0 +1 @@
+<student first="" last="">My Name is Snow Man. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v03.xml
new file mode 100644
index 0000000000..7fadc93f4d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v03.xml
@@ -0,0 +1 @@
+<student first="Snow'" last="Man">My Name is Snow Man'. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v04.xml
new file mode 100644
index 0000000000..b3a743f22f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v04.xml
@@ -0,0 +1 @@
+<student first="Snow&quot;" last="Man">My Name is Snow Man&quot;. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v05.xml
new file mode 100644
index 0000000000..f38bac4154
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v05.xml
@@ -0,0 +1 @@
+<student first="Snow" last="mylast;">My Name is Snow Man. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v06.xml
new file mode 100644
index 0000000000..3d59fbf803
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v06.xml
@@ -0,0 +1 @@
+<student first="Snow" last="Snow Man">My Name is Snow Man. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v07.xml
new file mode 100644
index 0000000000..6ae9b6ca2f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v07.xml
@@ -0,0 +1 @@
+<student first="Full Name Snow 1 and Man Snow and Snow mymiddle;. Man Snow and Snow mymiddle;. c" last="Man Snow and Snow mymiddle;.">My first Name is Snow and my last name is Man Snow and Snow mymiddle;.. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v08.xml
new file mode 100644
index 0000000000..0fca8cb600
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P10/out/ibm10v08.xml
@@ -0,0 +1 @@
+<student first="Full Name Snow and &quot;Man Snow and Snow mymiddle;.&quot; Man Snow and Snow mymiddle;." last="Man Snow and Snow mymiddle;.">My first Name is Snow and my last name is Man Snow and Snow mymiddle;.. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Entries
new file mode 100644
index 0000000000..f5ab7bcd1f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Entries
@@ -0,0 +1,6 @@
+/ibm11v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm11v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm11v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm11v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/student.dtd/1.2/Tue Sep 30 14:51:56 2003//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Repository
new file mode 100644
index 0000000000..e770587bd1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P11
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v01.xml
new file mode 100644
index 0000000000..ea7a8948b3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v01.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY unref SYSTEM "">
+]>
+
+<!-- testing systemliteral with nothing between the double quotes -->
+<student>My Name is SnowMan. </student>
+
+
+
+
+
+
+
+
+ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v02.xml
new file mode 100644
index 0000000000..741c133f9d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ENTITY unref SYSTEM ''>
+]>
+
+<!-- testing systemliteral with nothing between the single quotes -->
+<student>My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v03.xml
new file mode 100644
index 0000000000..3f24ed2c34
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v03.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE student SYSTEM 'student.dtd'[
+]>
+<!-- testing systemliteral with a string with "'" -->
+<student>My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v04.xml
new file mode 100644
index 0000000000..c7edb4198c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/ibm11v04.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE student SYSTEM "student.dtd" [
+]>
+
+<!-- testing systemliteral with a string with '"' -->
+<student>My Name is SnowMan. </student>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Entries
new file mode 100644
index 0000000000..cbd797b9ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm11v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm11v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm11v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm11v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Repository
new file mode 100644
index 0000000000..1da6db1a98
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P11/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v01.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v01.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v02.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v02.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v03.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v03.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v04.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/out/ibm11v04.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/student.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/student.dtd
new file mode 100644
index 0000000000..7ce18a99a3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P11/student.dtd
@@ -0,0 +1,3 @@
+<?xml encoding="utf-8"?>
+<!-- student.dtd -->
+<!ELEMENT student (#PCDATA)>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Entries
new file mode 100644
index 0000000000..24330c6e6d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Entries
@@ -0,0 +1,6 @@
+/ibm12v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm12v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm12v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm12v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/student.dtd/1.2/Tue Sep 30 14:52:19 2003//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Repository
new file mode 100644
index 0000000000..e424f2df84
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P12
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v01.xml
new file mode 100644
index 0000000000..c4ae3b21fb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v01.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE student PUBLIC "" "student.dtd"[
+]>
+
+<!-- testing Pubid Literal with nothing between the double quote -->
+<student>My Name is SnowMan. </student>
+
+
+
+
+
+
+
+ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v02.xml
new file mode 100644
index 0000000000..5c64b3182c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v02.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE student PUBLIC '' 'student.dtd'[
+]>
+
+<!-- testing Pubid Literal with nothing between the single quotes -->
+<student>My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v03.xml
new file mode 100644
index 0000000000..fc8a8be052
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v03.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE student PUBLIC "The big ' in it" "student.dtd"[
+]>
+
+<!-- testing Pubid Literal with a string with "'" inside -->
+<student>My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v04.xml
new file mode 100644
index 0000000000..0e56d70d61
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/ibm12v04.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE student PUBLIC 'The latest version' 'student.dtd'[
+]>
+
+<!-- testing Pubid Literal with a string without "'" inside -->
+<student>My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Entries
new file mode 100644
index 0000000000..d8b21942f9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm12v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm12v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm12v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm12v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Repository
new file mode 100644
index 0000000000..e664a4d720
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P12/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v01.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v01.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v02.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v02.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v03.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v03.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v04.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/out/ibm12v04.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/student.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/student.dtd
new file mode 100644
index 0000000000..7ce18a99a3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P12/student.dtd
@@ -0,0 +1,3 @@
+<?xml encoding="utf-8"?>
+<!-- student.dtd -->
+<!ELEMENT student (#PCDATA)>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Entries
new file mode 100644
index 0000000000..2259f8c8da
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm13v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/student.dtd/1.2/Tue Sep 30 14:53:00 2003//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Repository
new file mode 100644
index 0000000000..5649ac4748
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P13
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/ibm13v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/ibm13v01.xml
new file mode 100644
index 0000000000..0cffd8ac00
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/ibm13v01.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE student PUBLIC "#x20 #xD #xA abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ -'()+,./:=?;!*#@$_% " "student.dtd"[
+]>
+
+<!-- testing Pubid char with all legal pubidchar in a string -->
+<student>My Name is SnowMan. </student>
+
+
+
+
+
+
+
+
+ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Entries
new file mode 100644
index 0000000000..f538fd9432
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm13v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Repository
new file mode 100644
index 0000000000..2eb3061684
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P13/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/ibm13v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/ibm13v01.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/out/ibm13v01.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/student.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/student.dtd
new file mode 100644
index 0000000000..7ce18a99a3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P13/student.dtd
@@ -0,0 +1,3 @@
+<?xml encoding="utf-8"?>
+<!-- student.dtd -->
+<!ELEMENT student (#PCDATA)>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Entries
new file mode 100644
index 0000000000..a0deacc423
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm14v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm14v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm14v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Repository
new file mode 100644
index 0000000000..486d08b615
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P14
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v01.xml
new file mode 100644
index 0000000000..6856c02d12
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student first CDATA #REQUIRED
+ last CDATA #IMPLIED>
+]>
+
+<!-- testing chardata with empty string -->
+<student first="Snow"></student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v02.xml
new file mode 100644
index 0000000000..dc868cada8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v02.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student first CDATA #REQUIRED
+ last CDATA #IMPLIED>
+]>
+
+<!-- testing chardata with white space -->
+<student first="Eric"> &#x0A; &#x09; &#x0D;&#x20;</student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v03.xml
new file mode 100644
index 0000000000..e4a72645a1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/ibm14v03.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+ <!ATTLIST student first CDATA #REQUIRED
+ last CDATA #IMPLIED>
+]>
+
+<!-- testing chardata with a string of sample legal char except '<' and '&' nor does it contain sequence "]]>" -->
+<student first="Snow" last="Man">This is a test</student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Entries
new file mode 100644
index 0000000000..a1bb03f508
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm14v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm14v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm14v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Repository
new file mode 100644
index 0000000000..2b75758e8a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P14/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v01.xml
new file mode 100644
index 0000000000..768784919e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v01.xml
@@ -0,0 +1 @@
+<student first="Snow"></student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v02.xml
new file mode 100644
index 0000000000..e5df213173
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v02.xml
@@ -0,0 +1 @@
+<student first="Eric"> &#10; &#9; &#13; </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v03.xml
new file mode 100644
index 0000000000..e61667b08c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P14/out/ibm14v03.xml
@@ -0,0 +1 @@
+<student first="Snow" last="Man">This is a test</student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Entries
new file mode 100644
index 0000000000..04c7981799
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm15v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm15v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm15v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm15v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Repository
new file mode 100644
index 0000000000..37bc03d0a4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P15
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v01.xml
new file mode 100644
index 0000000000..0ae0217060
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+<!--* Tests empty comment *-->
+<!---->
+<student>My Name is SnowMan. </student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v02.xml
new file mode 100644
index 0000000000..6a5f12a2ca
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v02.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- Student's name -->
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v03.xml
new file mode 100644
index 0000000000..fdccbc05f1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v03.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- student file-1 -->
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v04.xml
new file mode 100644
index 0000000000..06419e86fd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/ibm15v04.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!--student phone number 408-398 (387)-4758 -->
+<student>My Name is SnowMan. </student>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Entries
new file mode 100644
index 0000000000..7365602124
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm15v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm15v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm15v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm15v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Repository
new file mode 100644
index 0000000000..84e15c395c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P15/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v01.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v01.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v02.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v02.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v03.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v03.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v04.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P15/out/ibm15v04.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Entries
new file mode 100644
index 0000000000..15f24626b4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm16v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm16v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm16v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Repository
new file mode 100644
index 0000000000..21b5dbc7b8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P16
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v01.xml
new file mode 100644
index 0000000000..9e39638c06
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<?MyInstruct?>
+<student>My Name is SnowMan. </student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v02.xml
new file mode 100644
index 0000000000..9afced545d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v02.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<?MyInstruct ?>
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v03.xml
new file mode 100644
index 0000000000..61d7d28ffc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/ibm16v03.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<?MyInstruct AVOID ? BEFORE > IN PI ?>
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Entries
new file mode 100644
index 0000000000..5b68155073
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm16v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm16v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm16v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Repository
new file mode 100644
index 0000000000..9328178c7e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P16/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v01.xml
new file mode 100644
index 0000000000..32de558de8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v01.xml
@@ -0,0 +1 @@
+<?MyInstruct ?><student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v02.xml
new file mode 100644
index 0000000000..32de558de8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v02.xml
@@ -0,0 +1 @@
+<?MyInstruct ?><student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v03.xml
new file mode 100644
index 0000000000..4ea41b794d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P16/out/ibm16v03.xml
@@ -0,0 +1 @@
+<?MyInstruct AVOID ? BEFORE > IN PI ?><student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Entries
new file mode 100644
index 0000000000..9c40725b79
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm17v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Repository
new file mode 100644
index 0000000000..c5d781f18d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P17
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/ibm17v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/ibm17v01.xml
new file mode 100644
index 0000000000..9a88d47329
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/ibm17v01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<?MyInstruct This is a test ?>
+<student>My Name is SnowMan. </student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Entries
new file mode 100644
index 0000000000..a1da9c5089
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm17v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Repository
new file mode 100644
index 0000000000..e9ecb2f372
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P17/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/ibm17v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/ibm17v01.xml
new file mode 100644
index 0000000000..78232f4949
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P17/out/ibm17v01.xml
@@ -0,0 +1 @@
+<?MyInstruct This is a test ?><student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Entries
new file mode 100644
index 0000000000..b3281c603a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm18v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Repository
new file mode 100644
index 0000000000..4bfd44e42a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P18
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/ibm18v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/ibm18v01.xml
new file mode 100644
index 0000000000..484508e18f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/ibm18v01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing CDSect with CDStart CData CDEnd -->
+
+<student>My Name is SnowMan. <![CDATA[This is <normal> text]]> </student>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Entries
new file mode 100644
index 0000000000..c46c2381a4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm18v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Repository
new file mode 100644
index 0000000000..b89c62083c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P18/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/ibm18v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/ibm18v01.xml
new file mode 100644
index 0000000000..26c81568dc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P18/out/ibm18v01.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. This is &lt;normal&gt; text </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Entries
new file mode 100644
index 0000000000..719df701a1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm19v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Repository
new file mode 100644
index 0000000000..64a6e78981
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P19
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/ibm19v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/ibm19v01.xml
new file mode 100644
index 0000000000..8144948908
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/ibm19v01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing CDStart -->
+<student>My Name is SnowMan. <![CDATA[This is a test]]> </student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Entries
new file mode 100644
index 0000000000..fa38b54ca3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm19v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Repository
new file mode 100644
index 0000000000..994d223bd8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P19/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/ibm19v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/ibm19v01.xml
new file mode 100644
index 0000000000..71d189035c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P19/out/ibm19v01.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. This is a test </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Entries
new file mode 100644
index 0000000000..3165a90d42
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm20v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm20v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Repository
new file mode 100644
index 0000000000..c64ebc0145
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P20
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v01.xml
new file mode 100644
index 0000000000..222ae023b3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing CData with empty string -->
+
+<student>My Name is SnowMan. <![CDATA[]]></student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v02.xml
new file mode 100644
index 0000000000..6896e72670
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/ibm20v02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing CData with legal chars -->
+
+<student>My Name is SnowMan. <![CDATA[<testing>This is a test</testing>]]></student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Entries
new file mode 100644
index 0000000000..231b676983
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm20v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm20v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Repository
new file mode 100644
index 0000000000..0fe9d8dbe9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P20/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v01.xml
new file mode 100644
index 0000000000..c73764ecf7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v01.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v02.xml
new file mode 100644
index 0000000000..9c4db221cd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P20/out/ibm20v02.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. &lt;testing&gt;This is a test&lt;/testing&gt;</student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Entries
new file mode 100644
index 0000000000..6e98955619
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm21v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Repository
new file mode 100644
index 0000000000..ee165355e8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P21
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/ibm21v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/ibm21v01.xml
new file mode 100644
index 0000000000..533f052ce0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/ibm21v01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE student [
+ <!ELEMENT student (#PCDATA)>
+]>
+
+<!-- testing CDEnd -->
+
+<student>My Name is SnowMan. <![CDATA[This is a test]]> </student>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Entries
new file mode 100644
index 0000000000..bd55cefce3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm21v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Repository
new file mode 100644
index 0000000000..8b9fb7ad09
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P21/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/ibm21v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/ibm21v01.xml
new file mode 100644
index 0000000000..71d189035c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P21/out/ibm21v01.xml
@@ -0,0 +1 @@
+<student>My Name is SnowMan. This is a test </student> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Entries
new file mode 100644
index 0000000000..fa4a82e1e2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Entries
@@ -0,0 +1,8 @@
+/ibm22v01.xml/1.2/Tue Sep 30 14:57:31 2003//
+/ibm22v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm22v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm22v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm22v05.xml/1.2/Tue Sep 30 14:57:31 2003//
+/ibm22v06.xml/1.2/Tue Sep 30 14:57:31 2003//
+/ibm22v07.xml/1.2/Tue Sep 30 14:57:31 2003//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Repository
new file mode 100644
index 0000000000..5f5a697bf0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P22
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v01.xml
new file mode 100644
index 0000000000..7984200fff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v01.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v02.xml
new file mode 100644
index 0000000000..d8b0858eb3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v02.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v03.xml
new file mode 100644
index 0000000000..9a95702f3c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v03.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<!-- This is a Misc -->
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v04.xml
new file mode 100644
index 0000000000..30d27eb37f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v04.xml
@@ -0,0 +1,5 @@
+<!-- This is a Misc -->
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v05.xml
new file mode 100644
index 0000000000..84f5e9d42e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v05.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- This is a Misc -->
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v06.xml
new file mode 100644
index 0000000000..22034726a3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v06.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<!-- This is a Misc -->
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v07.xml
new file mode 100644
index 0000000000..a31f560e93
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/ibm22v07.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- This is a Misc -->
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<!-- This is a Misc -->
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Entries
new file mode 100644
index 0000000000..e51d819ebf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Entries
@@ -0,0 +1,8 @@
+/ibm22v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm22v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm22v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm22v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm22v05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm22v06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm22v07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Repository
new file mode 100644
index 0000000000..a0723d23dd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P22/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v01.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v01.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v02.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v02.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v03.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v03.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v04.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v04.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v05.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v05.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v06.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v06.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v07.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P22/out/ibm22v07.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Entries
new file mode 100644
index 0000000000..fa4440747a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm23v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23v05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23v06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Repository
new file mode 100644
index 0000000000..45b17fbf0f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P23
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v01.xml
new file mode 100644
index 0000000000..8e70c84e1c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v01.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0'?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v02.xml
new file mode 100644
index 0000000000..4d336102c6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v02.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v03.xml
new file mode 100644
index 0000000000..1f9672f7b1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v03.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' standalone='yes' ?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v04.xml
new file mode 100644
index 0000000000..02b3df2473
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v04.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' ?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v05.xml
new file mode 100644
index 0000000000..e221630a85
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v05.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v06.xml
new file mode 100644
index 0000000000..b329d228a8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/ibm23v06.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Entries
new file mode 100644
index 0000000000..502b60df8a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm23v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23v05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm23v06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Repository
new file mode 100644
index 0000000000..7a831b4265
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P23/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v01.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v01.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v02.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v02.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v03.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v03.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v04.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v04.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v05.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v05.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v06.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P23/out/ibm23v06.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Entries
new file mode 100644
index 0000000000..d865949755
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm24v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm24v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Repository
new file mode 100644
index 0000000000..e6d7680fe1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P24
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v01.xml
new file mode 100644
index 0000000000..8e70c84e1c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v01.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0'?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v02.xml
new file mode 100644
index 0000000000..07a3d5d46f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/ibm24v02.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Entries
new file mode 100644
index 0000000000..22b0201813
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm24v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm24v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Repository
new file mode 100644
index 0000000000..60b8804381
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P24/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v01.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v01.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v02.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P24/out/ibm24v02.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Entries
new file mode 100644
index 0000000000..c26b7d7d27
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm25v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm25v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm25v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm25v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Repository
new file mode 100644
index 0000000000..c2e3446ae1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P25
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v01.xml
new file mode 100644
index 0000000000..8e70c84e1c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v01.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0'?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v02.xml
new file mode 100644
index 0000000000..23c98b5f9d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v02.xml
@@ -0,0 +1,5 @@
+<?xml version ='1.0'?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v03.xml
new file mode 100644
index 0000000000..5890536e93
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v03.xml
@@ -0,0 +1,5 @@
+<?xml version= '1.0'?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v04.xml
new file mode 100644
index 0000000000..b9b686343c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/ibm25v04.xml
@@ -0,0 +1,5 @@
+<?xml version = '1.0'?>
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Entries
new file mode 100644
index 0000000000..0fb2f26a26
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm25v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm25v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm25v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm25v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Repository
new file mode 100644
index 0000000000..a125e558b5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P25/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v01.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v01.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v02.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v02.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v03.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v03.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v04.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P25/out/ibm25v04.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Entries
new file mode 100644
index 0000000000..a0eb985af5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm26v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Repository
new file mode 100644
index 0000000000..60a4a297b2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P26
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/ibm26v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/ibm26v01.xml
new file mode 100644
index 0000000000..f61cfbb955
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/ibm26v01.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Entries
new file mode 100644
index 0000000000..f7cce23189
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm26v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Repository
new file mode 100644
index 0000000000..281977e9f2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P26/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/ibm26v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/ibm26v01.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P26/out/ibm26v01.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Entries
new file mode 100644
index 0000000000..b76578aa79
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm27v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm27v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm27v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Repository
new file mode 100644
index 0000000000..15b01139aa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P27
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v01.xml
new file mode 100644
index 0000000000..97db90a6d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v01.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<!-- This is a comment in Misc --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v02.xml
new file mode 100644
index 0000000000..abf0bbe27d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v02.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc EMPTY>
+]>
+<doc/>
+<?sound "This is a PI in Misc ?> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v03.xml
new file mode 100644
index 0000000000..2f11ac9519
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/ibm27v03.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' ?>
+<!DOCTYPE doc [
+ <!ELEMENT doc ANY>
+]>
+<doc>S is in the following Misc</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Entries
new file mode 100644
index 0000000000..b4bde9843d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm27v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm27v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm27v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Repository
new file mode 100644
index 0000000000..cadb6bda66
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P27/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v01.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v01.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v02.xml
new file mode 100644
index 0000000000..c038a64209
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v02.xml
@@ -0,0 +1 @@
+<doc></doc><?sound "This is a PI in Misc ?> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v03.xml
new file mode 100644
index 0000000000..957c86425b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P27/out/ibm27v03.xml
@@ -0,0 +1 @@
+<doc>S is in the following Misc</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Entries
new file mode 100644
index 0000000000..5fecb9050c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm28v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm28v02.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm28v02.txt/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm28v02.xml/1.2/Tue Sep 30 15:04:28 2003//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Repository
new file mode 100644
index 0000000000..cdcaf14233
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P28
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v01.xml
new file mode 100644
index 0000000000..d313845ba4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v01.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE animal [
+ <!ELEMENT animal EMPTY>
+]>
+<!-- This a valid test file for production [28] -->
+<animal/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.dtd
new file mode 100644
index 0000000000..e441aa2b7d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.dtd
@@ -0,0 +1 @@
+<!ELEMENT animal (cat|tiger|leopard)+>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.txt b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.txt
new file mode 100644
index 0000000000..ac04999353
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.txt
@@ -0,0 +1 @@
+This is an animal! \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.xml
new file mode 100644
index 0000000000..f68fd69572
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/ibm28v02.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE animal SYSTEM "ibm28v02.dtd" [
+ <!NOTATION animal_class SYSTEM "ibm28v02.txt">
+ <!ENTITY forcat "This is a small cat">
+ <!ELEMENT tiger (#PCDATA)>
+ <!ENTITY % make_small "<!ELEMENT small EMPTY>">
+ <!ENTITY % make_leopard_element "<!ELEMENT leopard ANY>">
+ <!ENTITY % make_attlist "<!ATTLIST tiger color CDATA #REQUIRED>">
+ %make_leopard_element;
+ <!ELEMENT cat ANY>
+ %make_small;
+ <!ENTITY % make_big "<!ELEMENT big EMPTY>">
+ %make_big;
+ %make_attlist;
+ <?sound "This is a PI" ?>
+ <!-- This is a valid test file for p28 -->
+]>
+<animal>
+ <cat>&forcat;</cat>
+ <tiger color="white">This is a white tiger in Mirage!!</tiger>
+ <cat/>
+ <leopard>
+ <small/>
+ <big/>
+ </leopard>
+</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Entries
new file mode 100644
index 0000000000..7e4a593059
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm28v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm28v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Repository
new file mode 100644
index 0000000000..3e7d440c13
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P28/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v01.xml
new file mode 100644
index 0000000000..c712ea7861
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v01.xml
@@ -0,0 +1 @@
+<animal></animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v02.xml
new file mode 100644
index 0000000000..40b51ef247
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P28/out/ibm28v02.xml
@@ -0,0 +1,4 @@
+<?sound "This is a PI" ?><!DOCTYPE animal [
+<!NOTATION animal_class SYSTEM 'ibm28v02.txt'>
+]>
+<animal>&#10; <cat>This is a small cat</cat>&#10; <tiger color="white">This is a white tiger in Mirage!!</tiger>&#10; <cat></cat>&#10; <leopard>&#10; <small></small>&#10; <big></big>&#10; </leopard>&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Entries
new file mode 100644
index 0000000000..8a98f4bd98
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm29v01.txt/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm29v01.xml/1.2/Tue Sep 30 15:05:53 2003//
+/ibm29v02.xml/1.2/Tue Sep 30 15:05:53 2003//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Repository
new file mode 100644
index 0000000000..a146fb7177
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P29
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.txt b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.txt
new file mode 100644
index 0000000000..f02afb2593
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.txt
@@ -0,0 +1 @@
+This animal calss includes tiger, leopard, and cat. \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.xml
new file mode 100644
index 0000000000..de85558e2a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v01.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE animal [
+ <!ELEMENT animal (cat|tiger|leopard)+>
+ <!NOTATION animal_class SYSTEM "ibm29v01.txt">
+ <!ELEMENT cat ANY>
+ <!ENTITY forcat "This is a small cat">
+ <!ELEMENT tiger (#PCDATA)>
+ <!ELEMENT leopard ANY>
+ <!ELEMENT small EMPTY>
+ <!ELEMENT big EMPTY>
+ <!ATTLIST tiger color CDATA #REQUIRED>
+ <?sound "This is a PI" ?>
+ <!-- This is a comment -->
+
+]>
+<animal>
+ <cat>&forcat;</cat>
+ <tiger color="white">This is a white tiger in Mirage!!</tiger>
+ <cat/>
+ <leopard>
+ <small/>
+ <big/>
+ </leopard>
+</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v02.xml
new file mode 100644
index 0000000000..8a2081acc9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/ibm29v02.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE animal [
+ <!ELEMENT animal (cat|tiger|leopard)+>
+ <!NOTATION animal_class SYSTEM "ibm29v01.txt">
+ <!ELEMENT cat ANY>
+ <!ENTITY forcat "This is a small cat">
+ <!ELEMENT tiger (#PCDATA)>
+ <!ENTITY % make_leopard_element "<!ELEMENT leopard ANY>">
+ %make_leopard_element;
+ <!ELEMENT small EMPTY>
+ <!ELEMENT big EMPTY>
+ <!ATTLIST tiger color CDATA #REQUIRED>
+ <?sound "This is a PI" ?>
+ <!-- This is a comment -->
+
+]>
+<animal>
+ <cat>&forcat;</cat>
+ <tiger color="white">This is a white tiger in Mirage!!</tiger>
+ <cat/>
+ <leopard>
+ <small/>
+ <big/>
+ </leopard>
+</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Entries
new file mode 100644
index 0000000000..e64620d6ae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm29v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm29v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Repository
new file mode 100644
index 0000000000..0618dd7052
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P29/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v01.xml
new file mode 100644
index 0000000000..46c4f36ba0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v01.xml
@@ -0,0 +1,4 @@
+<?sound "This is a PI" ?><!DOCTYPE animal [
+<!NOTATION animal_class SYSTEM 'ibm29v01.txt'>
+]>
+<animal>&#10; <cat>This is a small cat</cat>&#10; <tiger color="white">This is a white tiger in Mirage!!</tiger>&#10; <cat></cat>&#10; <leopard>&#10; <small></small>&#10; <big></big>&#10; </leopard>&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v02.xml
new file mode 100644
index 0000000000..46c4f36ba0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P29/out/ibm29v02.xml
@@ -0,0 +1,4 @@
+<?sound "This is a PI" ?><!DOCTYPE animal [
+<!NOTATION animal_class SYSTEM 'ibm29v01.txt'>
+]>
+<animal>&#10; <cat>This is a small cat</cat>&#10; <tiger color="white">This is a white tiger in Mirage!!</tiger>&#10; <cat></cat>&#10; <leopard>&#10; <small></small>&#10; <big></big>&#10; </leopard>&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Entries
new file mode 100644
index 0000000000..b77f36a4d3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm30v01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm30v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm30v02.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm30v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Repository
new file mode 100644
index 0000000000..82bebf52cd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P30
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.dtd
new file mode 100644
index 0000000000..62ada785ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.dtd
@@ -0,0 +1 @@
+<!ELEMENT animal EMPTY>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.xml
new file mode 100644
index 0000000000..71d05cbad0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v01.xml
@@ -0,0 +1,3 @@
+<!DOCTYPE animal SYSTEM "ibm30v01.dtd">
+<animal/>
+<!-- tests extSubset with extSubsetDecl only in the dtd file -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.dtd
new file mode 100644
index 0000000000..254d7b2727
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.dtd
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!ELEMENT animal EMPTY>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.xml
new file mode 100644
index 0000000000..9ee450aeeb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/ibm30v02.xml
@@ -0,0 +1,3 @@
+<!DOCTYPE animal SYSTEM "ibm30v02.dtd">
+<animal/>
+<!-- tests extSubset with TextDecl and extSubsetDecl in the dtd file -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Entries
new file mode 100644
index 0000000000..350b2ca202
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm30v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm30v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Repository
new file mode 100644
index 0000000000..c37699b70b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P30/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v01.xml
new file mode 100644
index 0000000000..c712ea7861
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v01.xml
@@ -0,0 +1 @@
+<animal></animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v02.xml
new file mode 100644
index 0000000000..c712ea7861
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P30/out/ibm30v02.xml
@@ -0,0 +1 @@
+<animal></animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Entries
new file mode 100644
index 0000000000..da1db4ad77
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm31v01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm31v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Repository
new file mode 100644
index 0000000000..5468f82899
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P31
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.dtd
new file mode 100644
index 0000000000..185b7c8a5d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.dtd
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<![INCLUDE[
+<!ENTITY % rootElement "<!ELEMENT animal ANY>">
+]]>
+%rootElement;
+
+<!-- Following is a makupdecl -->
+<!ENTITY % make_tiger_element "<!ELEMENT tiger EMPTY>">
+%make_tiger_element;
+
+<![IGNORE[
+<!ELEMENT animal EMPTY>
+]]>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.xml
new file mode 100644
index 0000000000..c8a5d834ae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/ibm31v01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE animal SYSTEM "ibm31v01.dtd">
+<animal>
+ <tiger/>
+</animal>
+<!-- tests extSubsetDecl with combinations of markupdecls, conditionalSects, PEReferences and white spaces -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Entries
new file mode 100644
index 0000000000..e8dd232d4b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm31v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Repository
new file mode 100644
index 0000000000..8a3b3ca348
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P31/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/ibm31v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/ibm31v01.xml
new file mode 100644
index 0000000000..1b6971c727
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P31/out/ibm31v01.xml
@@ -0,0 +1 @@
+<animal>&#10; <tiger></tiger>&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Entries
new file mode 100644
index 0000000000..eaa4992792
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Entries
@@ -0,0 +1,9 @@
+/ibm32v01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32v02.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32v03.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32v04.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Repository
new file mode 100644
index 0000000000..57ab3d356d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P32
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.dtd
new file mode 100644
index 0000000000..46dc2a5691
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT animal EMPTY>
+<!ATTLIST animal color CDATA #FIXED "yellow"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.xml
new file mode 100644
index 0000000000..38bf10ead8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v01.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="no" ?>
+<!DOCTYPE animal SYSTEM "ibm32v01.dtd">
+<animal/>
+<!-- Tests VC: Standalone Document Declaration with absent attribute that has default value and standalone is no -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.dtd
new file mode 100644
index 0000000000..3b537f2c93
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT animal (#PCDATA)>
+<!ENTITY animal_content "This is a yellow tiger"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.xml
new file mode 100644
index 0000000000..ff6e0ec9ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v02.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="no" ?>
+<!DOCTYPE animal SYSTEM "ibm32v02.dtd">
+<animal>&animal_content;</animal>
+<!-- Tests VC: Standalone Document Declaration with external enitity reference and standalone is no -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.dtd
new file mode 100644
index 0000000000..b7649a210a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT animal EMPTY>
+<!ATTLIST animal class CDATA #FIXED "&#41;"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.xml
new file mode 100644
index 0000000000..c9defb0463
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v03.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="no" ?>
+<!DOCTYPE animal SYSTEM "ibm32v03.dtd">
+<animal/>
+<!-- Tests VC: Standalone Document Declaration with attribute values that need to be normalized and standalone is no -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.dtd
new file mode 100644
index 0000000000..64c4f03ee7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.dtd
@@ -0,0 +1,3 @@
+<!ELEMENT animal (#PCDATA|a)* >
+<!ELEMENT a EMPTY>
+<!ATTLIST animal xml:space (default|preserve) 'preserve'> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.xml
new file mode 100644
index 0000000000..03d054f263
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/ibm32v04.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" standalone="no" ?>
+<!DOCTYPE animal SYSTEM "ibm32v04.dtd">
+<animal>This is a
+ <a/>
+
+yellow tiger</animal>
+<!-- Tests VC: Standalone Document Declaration with whitespace in mixed content -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Entries
new file mode 100644
index 0000000000..ad911de9d2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm32v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm32v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Repository
new file mode 100644
index 0000000000..499d2cd1d6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P32/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v01.xml
new file mode 100644
index 0000000000..2ec4ca8d75
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v01.xml
@@ -0,0 +1 @@
+<animal color="yellow"></animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v02.xml
new file mode 100644
index 0000000000..d7ab7cb44b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v02.xml
@@ -0,0 +1 @@
+<animal>This is a yellow tiger</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v03.xml
new file mode 100644
index 0000000000..0f50002df9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v03.xml
@@ -0,0 +1 @@
+<animal class=")"></animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v04.xml
new file mode 100644
index 0000000000..da11a67094
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P32/out/ibm32v04.xml
@@ -0,0 +1 @@
+<animal xml:space="preserve">This is a &#10; <a></a> &#10;&#10;yellow tiger</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Entries
new file mode 100644
index 0000000000..c796575931
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm33v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Repository
new file mode 100644
index 0000000000..881b3413dd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P33
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/ibm33v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/ibm33v01.xml
new file mode 100644
index 0000000000..c85d67ac3e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/ibm33v01.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE book [
+ <!ELEMENT book ANY>
+ <!ATTLIST book xml:lang CDATA #REQUIRED>
+]>
+<book xml:lang="en-US">It is written in English</book>
+<!-- Tests LanguageID with Langcode - Subcode --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Entries
new file mode 100644
index 0000000000..0bff6e9efb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm33v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Repository
new file mode 100644
index 0000000000..f2067b9e46
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P33/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/ibm33v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/ibm33v01.xml
new file mode 100644
index 0000000000..7366c087a3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P33/out/ibm33v01.xml
@@ -0,0 +1 @@
+<book xml:lang="en-US">It is written in English</book> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Entries
new file mode 100644
index 0000000000..572fabd435
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm34v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Repository
new file mode 100644
index 0000000000..cb8138e28a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P34
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/ibm34v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/ibm34v01.xml
new file mode 100644
index 0000000000..e95ba4166e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/ibm34v01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE book [
+ <!ELEMENT book ANY>
+ <!ATTLIST book xml:lang CDATA #REQUIRED>
+]>
+<book xml:lang="en-US">It is written in English</book>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Entries
new file mode 100644
index 0000000000..c838cf9804
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm34v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Repository
new file mode 100644
index 0000000000..350afd8817
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P34/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/ibm34v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/ibm34v01.xml
new file mode 100644
index 0000000000..7366c087a3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P34/out/ibm34v01.xml
@@ -0,0 +1 @@
+<book xml:lang="en-US">It is written in English</book> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Entries
new file mode 100644
index 0000000000..874daca05a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm35v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Repository
new file mode 100644
index 0000000000..5b6e2599f4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P35
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/ibm35v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/ibm35v01.xml
new file mode 100644
index 0000000000..6c060e5182
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/ibm35v01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE book [
+ <!ELEMENT book ANY>
+ <!ATTLIST book xml:lang CDATA #REQUIRED>
+]>
+<book xml:lang="en">It is written in English</book>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Entries
new file mode 100644
index 0000000000..3f0f33ce13
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm35v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Repository
new file mode 100644
index 0000000000..e841e00e3e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P35/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/ibm35v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/ibm35v01.xml
new file mode 100644
index 0000000000..2011da7711
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P35/out/ibm35v01.xml
@@ -0,0 +1 @@
+<book xml:lang="en">It is written in English</book> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Entries
new file mode 100644
index 0000000000..52f3d6958b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm36v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Repository
new file mode 100644
index 0000000000..445e36276b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P36
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/ibm36v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/ibm36v01.xml
new file mode 100644
index 0000000000..54ddaadef7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/ibm36v01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE book [
+ <!ELEMENT book ANY>
+ <!ATTLIST book xml:lang CDATA #REQUIRED>
+]>
+<book xml:lang="i-BS-ABCD">It is written in English</book>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Entries
new file mode 100644
index 0000000000..82957b404b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm36v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Repository
new file mode 100644
index 0000000000..2805614bb4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P36/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/ibm36v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/ibm36v01.xml
new file mode 100644
index 0000000000..886ae81320
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P36/out/ibm36v01.xml
@@ -0,0 +1 @@
+<book xml:lang="i-BS-ABCD">It is written in English</book> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Entries
new file mode 100644
index 0000000000..2143fd9312
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm37v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Repository
new file mode 100644
index 0000000000..6d1ebb3842
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P37
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/ibm37v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/ibm37v01.xml
new file mode 100644
index 0000000000..8bdfd73b6d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/ibm37v01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE book [
+ <!ELEMENT book ANY>
+ <!ATTLIST book xml:lang CDATA #REQUIRED>
+]>
+<book xml:lang="x-uk-eng">It is written in English</book>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Entries
new file mode 100644
index 0000000000..02e49b6c09
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm37v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Repository
new file mode 100644
index 0000000000..1aabd494a8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P37/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/ibm37v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/ibm37v01.xml
new file mode 100644
index 0000000000..2dc6b15b68
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P37/out/ibm37v01.xml
@@ -0,0 +1 @@
+<book xml:lang="x-uk-eng">It is written in English</book> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Entries
new file mode 100644
index 0000000000..8d0ebe2382
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm38v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Repository
new file mode 100644
index 0000000000..5ef2834685
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P38
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/ibm38v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/ibm38v01.xml
new file mode 100644
index 0000000000..b1ac99473c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/ibm38v01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE book [
+ <!ELEMENT book ANY>
+ <!ATTLIST book xml:lang CDATA #REQUIRED>
+]>
+<book xml:lang="en-USa">It is written in English</book>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Entries
new file mode 100644
index 0000000000..64fc46fe75
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm38v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Repository
new file mode 100644
index 0000000000..2e706b49e4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P38/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/ibm38v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/ibm38v01.xml
new file mode 100644
index 0000000000..a747ce6262
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P38/out/ibm38v01.xml
@@ -0,0 +1 @@
+<book xml:lang="en-USa">It is written in English</book> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Entries
new file mode 100644
index 0000000000..501dbfbac3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm39v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Repository
new file mode 100644
index 0000000000..9b4d948464
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P39
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/ibm39v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/ibm39v01.xml
new file mode 100644
index 0000000000..b4cffd8e5d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/ibm39v01.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (a,b)>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT b (#PCDATA|c)* >
+ <!ELEMENT c ANY>
+ <!ELEMENT d ((e,e)|f)+ >
+ <!ELEMENT e ANY>
+ <!ELEMENT f EMPTY>
+]>
+<root><a/><b>
+ <c></c>
+ content of b element
+ <c>
+ <d><e>no more children</e><e><f/></e><f/></d>
+ </c>
+</b></root>
+<!--* test P39's syntax and Element Valid VC *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Entries
new file mode 100644
index 0000000000..06a4fc004c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm39v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Repository
new file mode 100644
index 0000000000..4692fd5b4d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P39/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/ibm39v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/ibm39v01.xml
new file mode 100644
index 0000000000..f3aa393a40
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P39/out/ibm39v01.xml
@@ -0,0 +1 @@
+<root><a></a><b>&#10; <c></c> &#10; content of b element&#10; <c>&#10; <d><e>no more children</e><e><f></f></e><f></f></d>&#10; </c>&#10;</b></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Entries
new file mode 100644
index 0000000000..657858e1f3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm40v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Repository
new file mode 100644
index 0000000000..1cbafc5374
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P40
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/ibm40v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/ibm40v01.xml
new file mode 100644
index 0000000000..087b64a666
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/ibm40v01.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA|b)* >
+ <!ELEMENT b (#PCDATA) >
+ <!ATTLIST b attr1 CDATA #IMPLIED>
+ <!ATTLIST b attr2 CDATA #IMPLIED>
+ <!ATTLIST b attr3 CDATA #IMPLIED>
+]>
+<root>
+ <b>without white space</b>
+ <b > with a white space</b>
+ <b attr1="value1">one attribute</b>
+ <b attr1="value1" attr2="value2" attr3 = "value3">one attribute</b>
+</root>
+<!--* testing P40 *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Entries
new file mode 100644
index 0000000000..ceaf89b0ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm40v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Repository
new file mode 100644
index 0000000000..930a13ddf9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P40/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/ibm40v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/ibm40v01.xml
new file mode 100644
index 0000000000..3b2b470bad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P40/out/ibm40v01.xml
@@ -0,0 +1 @@
+<root>&#10; <b>without white space</b>&#10; <b> with a white space</b>&#10; <b attr1="value1">one attribute</b>&#10; <b attr1="value1" attr2="value2" attr3="value3">one attribute</b>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Entries
new file mode 100644
index 0000000000..63b80c456f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm41v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Repository
new file mode 100644
index 0000000000..0eb6eb6a86
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P41
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/ibm41v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/ibm41v01.xml
new file mode 100644
index 0000000000..47e838ce42
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/ibm41v01.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA|b)* >
+ <!ELEMENT b (#PCDATA) >
+ <!ATTLIST b attr1 CDATA #REQUIRED>
+ <!ATTLIST b attr2 (abc|def) "abc">
+ <!ATTLIST b attr3 CDATA #FIXED "fixed">
+]>
+<root>
+ <b attr1="value1" attr2="def" attr3="fixed">Name eq AttValue</b>
+</root>
+<!--* testing P41 *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Entries
new file mode 100644
index 0000000000..91d9b1fe84
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm41v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Repository
new file mode 100644
index 0000000000..c9a032af10
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P41/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/ibm41v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/ibm41v01.xml
new file mode 100644
index 0000000000..7c28d2c783
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P41/out/ibm41v01.xml
@@ -0,0 +1 @@
+<root>&#10; <b attr1="value1" attr2="def" attr3="fixed">Name eq AttValue</b>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Entries
new file mode 100644
index 0000000000..d5ad1ff6ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm42v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Repository
new file mode 100644
index 0000000000..67a4830b53
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P42
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/ibm42v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/ibm42v01.xml
new file mode 100644
index 0000000000..f151704b94
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/ibm42v01.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (a,b)>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT b (#PCDATA|c)* >
+ <!ELEMENT c ANY>
+]>
+<root><a/><b>
+ <c></c > : End tag with a space inside
+ content of b element
+</b></root>
+<!--* test P42 *-->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Entries
new file mode 100644
index 0000000000..43a01e19dd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm42v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Repository
new file mode 100644
index 0000000000..d61cecc4d4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P42/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/ibm42v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/ibm42v01.xml
new file mode 100644
index 0000000000..e171475b80
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P42/out/ibm42v01.xml
@@ -0,0 +1 @@
+<root><a></a><b>&#10; <c></c> : End tag with a space inside&#10; content of b element&#10;</b></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Entries
new file mode 100644
index 0000000000..657d939e7a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm43v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Repository
new file mode 100644
index 0000000000..64c985842e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P43
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/ibm43v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/ibm43v01.xml
new file mode 100644
index 0000000000..78a6f0aaf2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/ibm43v01.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (a,b)>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT b (#PCDATA|c)* >
+ <!ELEMENT c ANY>
+ <!ENTITY inContent "<b>General entity reference in element content</b>">
+]>
+<!--* content: element|CharData|Reference|CDSect|PI|CDSect|PI|Comment *-->
+<root><a/><b>
+<!-- there is an empty element in the above line -->
+ <c></c>
+ CharData: content of b element
+ %paaa; : PE reference should not be recognized in element content
+ <c>
+<?PIcontent anyProcessingInstruction?>
+<!-- Comment content -->
+ &inContent;
+ Charater reference: &#x41;
+ CDSect in content: <![CDATA[ <html>markups<head>HEAD</head><body>nothing</body></html> ]]>
+ </c>
+</b>
+</root>
+<!--* test P43 *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Entries
new file mode 100644
index 0000000000..dc162205da
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm43v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Repository
new file mode 100644
index 0000000000..1ec9702753
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P43/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/ibm43v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/ibm43v01.xml
new file mode 100644
index 0000000000..4925b60469
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P43/out/ibm43v01.xml
@@ -0,0 +1 @@
+<root><a></a><b>&#10;&#10; <c></c> &#10; CharData: content of b element&#10; %paaa; : PE reference should not be recognized in element content &#10; <c>&#10;<?PIcontent anyProcessingInstruction?>&#10;&#10; <b>General entity reference in element content</b>&#10; Charater reference: A&#10; CDSect in content: &lt;html&gt;markups&lt;head&gt;HEAD&lt;/head&gt;&lt;body&gt;nothing&lt;/body&gt;&lt;/html&gt; &#10; </c>&#10;</b>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Entries
new file mode 100644
index 0000000000..3fc0528974
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm44v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Repository
new file mode 100644
index 0000000000..39518a0edc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P44
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/ibm44v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/ibm44v01.xml
new file mode 100644
index 0000000000..f3ab2c1715
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/ibm44v01.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA|b)* >
+ <!ELEMENT b EMPTY >
+ <!ATTLIST b attr1 CDATA #IMPLIED>
+ <!ATTLIST b attr2 CDATA #IMPLIED>
+ <!ATTLIST b attr3 CDATA #IMPLIED>
+]>
+<root>
+ <b/>without white space
+ <b /> with a white space
+ <b attr1="value1" />
+ <b attr1="value1" attr2="value2" attr3 = "value3"/>
+</root>
+<!--* testing P44 *-->
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Entries
new file mode 100644
index 0000000000..b72d92f035
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm44v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Repository
new file mode 100644
index 0000000000..8992aaf288
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P44/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/ibm44v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/ibm44v01.xml
new file mode 100644
index 0000000000..a107534606
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P44/out/ibm44v01.xml
@@ -0,0 +1 @@
+<root>&#10; <b></b>without white space&#10; <b></b> with a white space&#10; <b attr1="value1"></b>&#10; <b attr1="value1" attr2="value2" attr3="value3"></b>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Entries
new file mode 100644
index 0000000000..6c79b6be78
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm45v01.xml/1.2/Wed May 1 19:27:59 2002//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Repository
new file mode 100644
index 0000000000..ef2b978d7c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P45
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/ibm45v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/ibm45v01.xml
new file mode 100644
index 0000000000..0c16231ab9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/ibm45v01.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA|b)* >
+ <!--* P45 no space before the end bracket *-->
+ <!ELEMENT b EMPTY>
+ <!ELEMENT unique ANY>
+ <!ELEMENT unique- ANY>
+ <!ELEMENT unique_ ANY>
+ <!ELEMENT unique. ANY>
+ <!ATTLIST b attr1 CDATA #IMPLIED>
+ <!ATTLIST b attr2 CDATA #IMPLIED>
+ <!ATTLIST b attr3 CDATA #IMPLIED>
+]>
+<root>
+ <b/>without white space
+ <b /> with a white space
+ <b attr1="value1" />
+ <b attr1="value1" attr2="value2" attr3 = "value3"/>
+</root>
+<!--* !!! testing both P45 and p46 *-->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Entries
new file mode 100644
index 0000000000..0c22eaf26c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm45v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Repository
new file mode 100644
index 0000000000..fa615ebe9d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P45/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/ibm45v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/ibm45v01.xml
new file mode 100644
index 0000000000..a107534606
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P45/out/ibm45v01.xml
@@ -0,0 +1 @@
+<root>&#10; <b></b>without white space&#10; <b></b> with a white space&#10; <b attr1="value1"></b>&#10; <b attr1="value1" attr2="value2" attr3="value3"></b>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Entries
new file mode 100644
index 0000000000..48a24b954a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm47v01.xml/1.2/Wed May 1 19:29:50 2002//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Repository
new file mode 100644
index 0000000000..80ca5bb360
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P47
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/ibm47v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/ibm47v01.xml
new file mode 100644
index 0000000000..e43203e332
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/ibm47v01.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (a,b)>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT b (#PCDATA|c)* >
+ <!ELEMENT c ANY>
+ <!ELEMENT d ANY>
+ <!ELEMENT e ANY>
+ <!ELEMENT f ANY>
+ <!--* test all possible children,cp,choice,seq patterns in P47,P48,P49,P50 *-->
+ <!ELEMENT child0 (a)>
+ <!ELEMENT child1 (a|b|c)>
+ <!ELEMENT child2 (a ,b,b?,a*,c,c,a,a,b+,c ) >
+ <!ELEMENT child3 (a+|b)? >
+ <!ELEMENT child4 (a, (b|c)+, (a|d)?, (e|f)* )?>
+ <!ELEMENT child5 ( (a,b) | c? | ((d|e),b,c) )* >
+ <!ELEMENT child5_1 ( (a,b)* | (c,b)? | (d,a)+ | ((e|f),b,c) )* >
+ <!ELEMENT child6 (a,b,c)*>
+ <!ELEMENT child7 ((a,b)|c*|((d|e),b,c) )+ >
+ <!ELEMENT child8 ( a, (b|c), (a|b), b)+>
+]>
+<root><a/><b>
+ <c></c >
+ content of b element
+</b></root>
+<!--* a valid test: tests P47,P48,P49,P50*-->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Entries
new file mode 100644
index 0000000000..72d896d9dc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm47v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Repository
new file mode 100644
index 0000000000..0e174cf027
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P47/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/ibm47v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/ibm47v01.xml
new file mode 100644
index 0000000000..fb492e28e4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P47/out/ibm47v01.xml
@@ -0,0 +1 @@
+<root><a></a><b>&#10; <c></c>&#10; content of b element&#10;</b></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Entries
new file mode 100644
index 0000000000..c2beb38dba
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm49v01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm49v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Repository
new file mode 100644
index 0000000000..c39e0b8946
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P49
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.dtd
new file mode 100644
index 0000000000..fe00d6ae3a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.dtd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!ELEMENT a EMPTY>
+<!ELEMENT b (#PCDATA|c)* >
+<!ELEMENT c ANY>
+
+<!--* PE replace Text have both parentheses *-->
+<!ENTITY % choice1 "(a|b|c)">
+<!ELEMENT child1 (a ,%choice1;,c )>
+<!--* Another legal PE replace Text *-->
+<!ENTITY % choice2 "a|b">
+<!ELEMENT child2 (%choice2;|c) >
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.xml
new file mode 100644
index 0000000000..5952647933
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/ibm49v01.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "ibm49v01.dtd"[
+ <!ELEMENT root (a,b)>
+]>
+<root><a/><b>
+ <c></c>
+ content of b element
+</b></root>
+<!--* a valid test: tests VC:Proper Group/PE Nesting in P49 *-->
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Entries
new file mode 100644
index 0000000000..a2ebdf256d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm49v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Repository
new file mode 100644
index 0000000000..a653708399
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P49/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/ibm49v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/ibm49v01.xml
new file mode 100644
index 0000000000..fb492e28e4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P49/out/ibm49v01.xml
@@ -0,0 +1 @@
+<root><a></a><b>&#10; <c></c>&#10; content of b element&#10;</b></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Entries
new file mode 100644
index 0000000000..ba4082d889
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm50v01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm50v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Repository
new file mode 100644
index 0000000000..f75bf04483
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P50
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.dtd
new file mode 100644
index 0000000000..04685de4e7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.dtd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!ELEMENT a EMPTY>
+<!ELEMENT b (#PCDATA|c)* >
+<!ELEMENT c ANY>
+
+<!--* PE replace Text have both parentheses *-->
+<!ENTITY % seq1 "(a,b,c)">
+<!ELEMENT child1 %seq1; >
+<!--* Another legal PE replace Text *-->
+<!ENTITY % seq2 "a,b">
+<!ELEMENT child2 (%seq2;,c) >
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.xml
new file mode 100644
index 0000000000..69848f1dac
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/ibm50v01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "ibm50v01.dtd" [
+ <!ELEMENT root (a,b)>
+]>
+<root><a/><b>
+ <c><child1><a/><b></b><c></c></child1></c >
+ <c><child2><a/><b></b><c></c></child2></c >
+ content of b element
+</b></root>
+<!--* a valid test: tests VC:Proper Group/PE Nesting in P50 *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Entries
new file mode 100644
index 0000000000..fd8d7c19f8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm50v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Repository
new file mode 100644
index 0000000000..58fb9f9ec8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P50/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/ibm50v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/ibm50v01.xml
new file mode 100644
index 0000000000..713ca91f78
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P50/out/ibm50v01.xml
@@ -0,0 +1 @@
+<root><a></a><b>&#10; <c><child1><a></a><b></b><c></c></child1></c>&#10; <c><child2><a></a><b></b><c></c></child2></c>&#10; content of b element&#10;</b></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Entries
new file mode 100644
index 0000000000..e7b8ffac66
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm51v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51v02.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Repository
new file mode 100644
index 0000000000..6c06e5ca8e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P51
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v01.xml
new file mode 100644
index 0000000000..ea18f9060c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v01.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root ANY>
+ <!--* test all possible Mixed content type decl *-->
+ <!ELEMENT a (#PCDATA)* >
+ <!ELEMENT b (#PCDATA) >
+ <!ELEMENT c ( #PCDATA)*>
+ <!ELEMENT d (#PCDATA|c)*>
+ <!ELEMENT e (#PCDATA|c| b|a)* >
+ <!ELEMENT f (#PCDATA| c)* >
+ <!ELEMENT g ( #PCDATA) >
+ <!ELEMENT h (#PCDATA )>
+ <!ELEMENT i ( #PCDATA ) >
+]>
+<root>
+ <a> Element type a </a>
+ <b> Element type b </b>
+ <c> Element type c </c>
+ <d> Element type d <c></c> </d>
+ <e> Element type e <a></a> <b></b> <c></c> </e>
+</root>
+<!--* a valid test: tests P51 *--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.dtd
new file mode 100644
index 0000000000..035bd38816
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.dtd
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" ?>
+ <!--* PEs are properly nested *-->
+ <!ELEMENT a (#PCDATA)* >
+ <!ELEMENT b (#PCDATA) >
+ <!ELEMENT c ( #PCDATA)*>
+
+ <!ENTITY % mixed0 "(#PCDATA|c)*" >
+ <!ENTITY % mixed1 "%mixed0;">
+ <!ELEMENT d %mixed1; >
+
+ <!ENTITY % mixed1.5 "c| b" >
+ <!ELEMENT e (#PCDATA| %mixed1.5; |a)* >
+
+ <!ELEMENT f (#PCDATA| c)* >
+ <!ELEMENT g ( #PCDATA) >
+ <!ELEMENT h (#PCDATA )>
+
+ <!ENTITY % mixed2 "( #PCDATA )">
+ <!ELEMENT i %mixed2; >
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.xml
new file mode 100644
index 0000000000..c424f8e5d7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/ibm51v02.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "ibm51v02.dtd" [
+ <!ELEMENT root ANY>
+]>
+<root>
+ <a> Element type a </a>
+ <b> Element type b </b>
+ <c> Element type c </c>
+ <d> Element type d <c></c> </d>
+ <e> Element type e <a></a> <b></b> <c></c> </e>
+</root>
+<!--* a valid test: tests P51 VC: Proper Group/PE Nesting *--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Entries
new file mode 100644
index 0000000000..72cb19aead
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm51v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm51v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Repository
new file mode 100644
index 0000000000..78285c212f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P51/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v01.xml
new file mode 100644
index 0000000000..0c17c3f833
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v01.xml
@@ -0,0 +1 @@
+<root>&#10; <a> Element type a </a>&#10; <b> Element type b </b>&#10; <c> Element type c </c>&#10; <d> Element type d <c></c> </d>&#10; <e> Element type e <a></a> <b></b> <c></c> </e>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v02.xml
new file mode 100644
index 0000000000..0c17c3f833
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P51/out/ibm51v02.xml
@@ -0,0 +1 @@
+<root>&#10; <a> Element type a </a>&#10; <b> Element type b </b>&#10; <c> Element type c </c>&#10; <d> Element type d <c></c> </d>&#10; <e> Element type e <a></a> <b></b> <c></c> </e>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Entries
new file mode 100644
index 0000000000..71f965d985
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm52v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Repository
new file mode 100644
index 0000000000..00070be10d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P52
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/ibm52v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/ibm52v01.xml
new file mode 100644
index 0000000000..778511eeae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/ibm52v01.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root ANY>
+ <!ELEMENT a (#PCDATA)* >
+ <!ELEMENT b (#PCDATA) >
+ <!--* All AttlistDecl Patterns in P52 and P53 *-->
+ <!ATTLIST a>
+ <!ATTLIST a >
+ <!ATTLIST b battr1 CDATA #REQUIRED >
+ <!ATTLIST b battr2 CDATA #IMPLIED
+ battr3 CDATA #FIXED "fixedvalue" battr4 (abc|def) "abc" >
+]>
+<root>
+ <a> Element type a </a>
+ <b battr1 = "anyvalue" battr3="fixedvalue" battr4 ="def"> test P52 and P53 </b>
+</root>
+<!--* a valid test: tests P52 and P53 *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Entries
new file mode 100644
index 0000000000..b48d8483a2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm52v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Repository
new file mode 100644
index 0000000000..ef79331efd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P52/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/ibm52v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/ibm52v01.xml
new file mode 100644
index 0000000000..47077a6b0d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P52/out/ibm52v01.xml
@@ -0,0 +1 @@
+<root>&#10; <a> Element type a </a>&#10; <b battr1="anyvalue" battr3="fixedvalue" battr4="def"> test P52 and P53 </b>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Entries
new file mode 100644
index 0000000000..71f40e131c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Entries
@@ -0,0 +1,6 @@
+/ibm54v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm54v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm54v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibmlogo.gif/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/xmltech.gif/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Repository
new file mode 100644
index 0000000000..7325264860
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P54
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v01.xml
new file mode 100644
index 0000000000..2317e38fac
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v01.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root ANY>
+ <!ELEMENT a (#PCDATA) >
+ <!ELEMENT b (#PCDATA) >
+ <!ELEMENT c (#PCDATA) >
+ <!ELEMENT d (#PCDATA) >
+ <!ELEMENT e (#PCDATA) >
+ <!ELEMENT f (#PCDATA) >
+ <!ELEMENT g (#PCDATA) >
+ <!ELEMENT h (#PCDATA) >
+ <!ELEMENT i (#PCDATA) >
+ <!ELEMENT j (#PCDATA) >
+ <!ELEMENT k (#PCDATA) >
+ <!--* Tests all Attbuite types in P55,P56,P57,P58,P59 *-->
+ <!ATTLIST a aattr1 ID #REQUIRED>
+ <!ATTLIST b battr1 CDATA #REQUIRED
+ battr2 (good|bad) #REQUIRED
+ battr3 ID #REQUIRED>
+ <!ATTLIST c c_reference IDREF #REQUIRED>
+ <!ATTLIST d d_reference IDREFS #REQUIRED>
+ <!ENTITY xmltech SYSTEM "xmltech.gif" NDATA gif>
+ <!NOTATION gif SYSTEM "gif">
+ <!ATTLIST e eattr1 ENTITY #REQUIRED>
+ <!ENTITY IBMlogo SYSTEM "IBMlogo.gif" NDATA gif>
+ <!ATTLIST f fattr1 ENTITIES #REQUIRED>
+ <!ATTLIST g gattr1 NMTOKEN #REQUIRED>
+ <!ATTLIST h hattr1 NMTOKENS #REQUIRED>
+ <!NOTATION UTF-8 SYSTEM "UTF-8">
+ <!ATTLIST i iattr1 NOTATION (UTF-8) #REQUIRED>
+ <!--* Tests all DefaultDecl in P60 -->
+ <!ATTLIST j jattr1 CDATA #REQUIRED
+ jattr2 CDATA "good"
+ jattr3 CDATA #FIXED "fixed"
+ jattr4 CDATA #IMPLIED >
+
+]>
+<root>
+ <a aattr1 = "a1"> Element type a </a>
+ <b battr1 = "anyvalue" battr2="good" battr3 ="b1"> Element type b </b>
+ <c c_reference = "b1"> Element type c </c>
+ <d d_reference = "a1 b1"> Element type d </d>
+ <e eattr1 = "xmltech"> Element type e </e>
+ <f fattr1 = "xmltech IBMlogo"> Element type f </f>
+ <g gattr1 = "xml4j3_0_0_EA3"> Element type g </g>
+ <h hattr1 = "xml4j3_0_0_EA3 Xerces-J_1_0_1"> Element type h </h>
+ <i iattr1 = "UTF-8"> Element type i </i>
+ <j jattr1 = "anyvalue" jattr2="good" jattr3 ="fixed"> Element type j </j>
+</root>
+<!--* a valid test: tests P54 *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v02.xml
new file mode 100644
index 0000000000..9bfd55fd01
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v02.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!-- test for Production 54-->
+<!DOCTYPE root
+ [
+ <!ELEMENT root (x|y|z)*>
+ <!ELEMENT x (#PCDATA)>
+ <!ELEMENT y ANY>
+ <!ELEMENT z EMPTY>
+ <!ATTLIST x attr CDATA #IMPLIED>
+ <!ATTLIST y attr NMTOKENS #IMPLIED>
+ <!ATTLIST z attr (x|y) #IMPLIED>
+ ]>
+<root>
+<x attr= 'Madhu'></x>
+<y attr= '1.a.name.token.but.not.a.name'></y>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v03.xml
new file mode 100644
index 0000000000..4215498125
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibm54v03.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- test for Production 54-->
+<!DOCTYPE AttrType
+[
+<!ELEMENT AttrType ANY>
+<!ELEMENT a (#PCDATA)>
+<!ATTLIST a att CDATA #IMPLIED>
+]>
+<AttrType>
+<a att= 'hello world'>
+</a>
+</AttrType>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibmlogo.gif b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibmlogo.gif
new file mode 100644
index 0000000000..034ddc162b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/ibmlogo.gif
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Entries
new file mode 100644
index 0000000000..8174bd1ea2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm54v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm54v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm54v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Repository
new file mode 100644
index 0000000000..b02a88598f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P54/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v01.xml
new file mode 100644
index 0000000000..abb4b443e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root [
+<!NOTATION UTF-8 SYSTEM 'UTF-8'>
+<!NOTATION gif SYSTEM 'gif'>
+]>
+<root>&#10; <a aattr1="a1"> Element type a </a>&#10; <b battr1="anyvalue" battr2="good" battr3="b1"> Element type b </b>&#10; <c c_reference="b1"> Element type c </c>&#10; <d d_reference="a1 b1"> Element type d </d>&#10; <e eattr1="xmltech"> Element type e </e>&#10; <f fattr1="xmltech IBMlogo"> Element type f </f>&#10; <g gattr1="xml4j3_0_0_EA3"> Element type g </g>&#10; <h hattr1="xml4j3_0_0_EA3 Xerces-J_1_0_1"> Element type h </h>&#10; <i iattr1="UTF-8"> Element type i </i>&#10; <j jattr1="anyvalue" jattr2="good" jattr3="fixed"> Element type j </j>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v02.xml
new file mode 100644
index 0000000000..3b744eefe7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v02.xml
@@ -0,0 +1 @@
+<root>&#10;<x attr="Madhu"></x>&#10;<y attr="1.a.name.token.but.not.a.name"></y>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v03.xml
new file mode 100644
index 0000000000..f98ff12935
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/out/ibm54v03.xml
@@ -0,0 +1 @@
+<AttrType>&#10;<a att="hello world">&#10;</a>&#10;</AttrType> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/xmltech.gif b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/xmltech.gif
new file mode 100644
index 0000000000..8f88a54f17
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P54/xmltech.gif
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Entries
new file mode 100644
index 0000000000..be48853f59
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm55v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Repository
new file mode 100644
index 0000000000..cf26a18411
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P55
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/ibm55v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/ibm55v01.xml
new file mode 100644
index 0000000000..1664311dc7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/ibm55v01.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- test valid syntax for Production 55-->
+<!DOCTYPE StType
+[
+<!ELEMENT StType ANY>
+<!ELEMENT a EMPTY>
+<!ATTLIST a att CDATA #IMPLIED>
+]>
+<StType>
+<a att='Hello'/>
+Testing with a valid stringType attribute
+</StType>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Entries
new file mode 100644
index 0000000000..c468e1b1a9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm55v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Repository
new file mode 100644
index 0000000000..c2642e408e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P55/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/ibm55v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/ibm55v01.xml
new file mode 100644
index 0000000000..05540bc826
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P55/out/ibm55v01.xml
@@ -0,0 +1 @@
+<StType>&#10;<a att="Hello"></a>&#10;Testing with a valid stringType attribute &#10;</StType> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Entries
new file mode 100644
index 0000000000..02553a9c25
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Entries
@@ -0,0 +1,11 @@
+/ibm56v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v08.xml/1.2/Mon Mar 25 16:11:14 2002//
+/ibm56v09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Repository
new file mode 100644
index 0000000000..9c04dcc542
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P56
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v01.xml
new file mode 100644
index 0000000000..2e462b7cca
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v01.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!-- valid test for Production 56-->
+<!DOCTYPE root
+ [
+ <!ELEMENT root (a|b|c|d|e|f|g)*>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT b EMPTY>
+ <!ELEMENT c EMPTY>
+ <!ELEMENT d EMPTY>
+ <!ELEMENT e EMPTY>
+ <!ELEMENT f EMPTY>
+ <!ELEMENT g EMPTY>
+ <!ATTLIST a attr ID #IMPLIED>
+ <!ATTLIST b attr IDREF #IMPLIED>
+ <!ATTLIST c attr IDREFS #IMPLIED>
+ <!ATTLIST d attr ENTITY #IMPLIED>
+ <!ATTLIST e attr ENTITIES #IMPLIED>
+ <!ATTLIST f attr NMTOKEN #IMPLIED>
+ <!ATTLIST g attr NMTOKENS #IMPLIED>
+ ]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v02.xml
new file mode 100644
index 0000000000..6007abcee4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v02.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Positive Test)-->
+<!DOCTYPE tokenizer
+ [
+ <!ELEMENT tokenizer ANY>
+ <!ATTLIST tokenizer UniqueName ID #REQUIRED>
+ ]>
+<tokenizer UniqueName = "AC1999">
+This is a positive test for validity constraints
+Giving a unique name to the attribute ID an ID Attribute default as #required
+</tokenizer>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v03.xml
new file mode 100644
index 0000000000..bb8dfb12e7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v03.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Positive Test)-->
+<!DOCTYPE tokenizer
+ [
+ <!ELEMENT tokenizer ANY>
+ <!ATTLIST tokenizer UniqueName ID #IMPLIED>
+ ]>
+<tokenizer UniqueName = "AC1999">
+This is a positive test for validity constraints
+Giving ID attribute default as #IMPLIED
+</tokenizer> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v04.xml
new file mode 100644
index 0000000000..ed8e74d1a0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v04.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(positive Test)-->
+<!DOCTYPE tokenizer
+ [
+ <!ELEMENT tokenizer ANY>
+ <!ELEMENT b EMPTY>
+ <!ATTLIST b attr ID #REQUIRED>
+ <!ATTLIST tokenizer UniqueName ID #REQUIRED>
+ ]>
+<tokenizer UniqueName = "Ac999">
+<b attr = "BC999"></b>
+This is a positive test for validity constraints
+the value of the attribute with a type ID does not appear more than once in the XML document
+</tokenizer>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v05.xml
new file mode 100644
index 0000000000..69b064a6ef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v05.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(positive Test)-->
+<!DOCTYPE tokenizer
+ [
+ <!ELEMENT tokenizer ANY>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT b EMPTY>
+ <!ATTLIST a first ID #REQUIRED>
+ <!ATTLIST b second ID #REQUIRED>
+ ]>
+<tokenizer>
+<a first = "AC1999"></a>
+<b second = "CD345"></b>
+This is a positive validity test for ID.
+any element type has no more than one attribute of type ID specified
+</tokenizer> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v06.xml
new file mode 100644
index 0000000000..161965d790
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v06.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Positive Test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT id EMPTY>
+ <!ELEMENT idref EMPTY>
+ <!ATTLIST id UniqueName ID #REQUIRED>
+ <!ATTLIST idref reference IDREF #IMPLIED>
+ ]>
+<test>
+<id UniqueName = "AC456"></id>
+<idref reference = "AC456"></idref>
+Positive test for validity constraint of IDREF.
+In an attribute decl, values of type IDREF match tha name production
+and the IDREF value matches the value assigned to an ID attribute somewhere
+in the XML document.
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v07.xml
new file mode 100644
index 0000000000..d238abc2fe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v07.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Positive Test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT id1 EMPTY>
+ <!ELEMENT id2 EMPTY>
+ <!ELEMENT idref EMPTY>
+ <!ATTLIST id1 UniqueName ID #REQUIRED>
+ <!ATTLIST id2 UName ID #IMPLIED>
+ <!ATTLIST idref reference IDREFS #IMPLIED>
+ ]>
+<test>
+<id1 UniqueName = "AC456"></id1>
+<id2 UName = "Q123"></id2>
+<idref reference = "AC456 Q123"></idref>
+Positive test for validity constraint of IDREFS.
+In an attribute decl, values of type IDREFS match tha name production
+and the IDREFS value matches the values assigned to an ID attributes somewhere
+in the XML document.
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v08.xml
new file mode 100644
index 0000000000..865723c71c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v08.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Positive Test)it is a DTD-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT landscape EMPTY>
+ <!NOTATION gif PUBLIC "gif">
+ <!ENTITY image SYSTEM "testspec/images/sunset.gif" NDATA gif>
+ <!ATTLIST landscape sun ENTITY #IMPLIED>
+]>
+<test>
+<landscape sun = "image"></landscape>
+values of type ENTITY match the Name production and the ENTITY value
+matches the name of an unparsed entity declared in the DTD.
+</test>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v09.xml
new file mode 100644
index 0000000000..aa62050e66
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v09.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Positive Test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT nametoken EMPTY>
+ <!ATTLIST nametoken thistoken NMTOKEN #IMPLIED>
+]>
+<test>
+<nametoken thistoken = "x:image"></nametoken>
+In an attribute declaration, values of type NMTOKEN match the Nmtoken production
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v10.xml
new file mode 100644
index 0000000000..116fa3bc96
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/ibm56v10.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- validity constraint check for Production 56(Positive Test)-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT nametokens EMPTY>
+ <!ATTLIST nametokens thistoken NMTOKENS #IMPLIED>
+]>
+<test>
+<nametokens thistoken = "x:lang y:country"></nametokens>
+In an attribute declaration, values of type NMTOKENS match the Nmtokens production
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Entries
new file mode 100644
index 0000000000..f5f1df8dc7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Entries
@@ -0,0 +1,11 @@
+/ibm56v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v05.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v06.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v07.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v08.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v09.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm56v10.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Repository
new file mode 100644
index 0000000000..92176f76d7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P56/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v01.xml
new file mode 100644
index 0000000000..ef2fc53c2f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v01.xml
@@ -0,0 +1 @@
+<root></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v02.xml
new file mode 100644
index 0000000000..2be8a006a6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v02.xml
@@ -0,0 +1 @@
+<tokenizer UniqueName="AC1999">&#10;This is a positive test for validity constraints&#10;Giving a unique name to the attribute ID an ID Attribute default as #required&#10;</tokenizer> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v03.xml
new file mode 100644
index 0000000000..6e8f3e88be
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v03.xml
@@ -0,0 +1 @@
+<tokenizer UniqueName="AC1999">&#10;This is a positive test for validity constraints&#10;Giving ID attribute default as #IMPLIED&#10;</tokenizer> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v04.xml
new file mode 100644
index 0000000000..90cb82cd27
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v04.xml
@@ -0,0 +1 @@
+<tokenizer UniqueName="Ac999">&#10;<b attr="BC999"></b>&#10;This is a positive test for validity constraints&#10;the value of the attribute with a type ID does not appear more than once in the XML document&#10;</tokenizer> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v05.xml
new file mode 100644
index 0000000000..b737215b79
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v05.xml
@@ -0,0 +1 @@
+<tokenizer>&#10;<a first="AC1999"></a>&#10;<b second="CD345"></b>&#10;This is a positive validity test for ID.&#10;any element type has no more than one attribute of type ID specified&#10;</tokenizer> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v06.xml
new file mode 100644
index 0000000000..1ffda9358d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v06.xml
@@ -0,0 +1 @@
+<test>&#10;<id UniqueName="AC456"></id>&#10;<idref reference="AC456"></idref>&#10;Positive test for validity constraint of IDREF.&#10;In an attribute decl, values of type IDREF match tha name production&#10;and the IDREF value matches the value assigned to an ID attribute somewhere&#10;in the XML document.&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v07.xml
new file mode 100644
index 0000000000..f42ed2ce33
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v07.xml
@@ -0,0 +1 @@
+<test>&#10;<id1 UniqueName="AC456"></id1>&#10;<id2 UName="Q123"></id2>&#10;<idref reference="AC456 Q123"></idref>&#10;Positive test for validity constraint of IDREFS.&#10;In an attribute decl, values of type IDREFS match tha name production&#10;and the IDREFS value matches the values assigned to an ID attributes somewhere&#10;in the XML document.&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v08.xml
new file mode 100644
index 0000000000..8736918882
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v08.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE test [
+<!NOTATION gif PUBLIC 'gif'>
+]>
+<test>&#10;<landscape sun="image"></landscape>&#10;values of type ENTITY match the Name production and the ENTITY value&#10;matches the name of an unparsed entity declared in the DTD.&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v09.xml
new file mode 100644
index 0000000000..59630c40d9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v09.xml
@@ -0,0 +1 @@
+<test>&#10;<nametoken thistoken="x:image"></nametoken>&#10;In an attribute declaration, values of type NMTOKEN match the Nmtoken production&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v10.xml
new file mode 100644
index 0000000000..1baf6fbb8e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P56/out/ibm56v10.xml
@@ -0,0 +1 @@
+<test>&#10;<nametokens thistoken="x:lang y:country"></nametokens>&#10;In an attribute declaration, values of type NMTOKENS match the Nmtokens production&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Entries
new file mode 100644
index 0000000000..0e7fc516b6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm57v01.xml/1.2/Thu Feb 7 16:44:00 2002//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Repository
new file mode 100644
index 0000000000..0d383ffae6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P57
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/ibm57v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/ibm57v01.xml
new file mode 100644
index 0000000000..026dcdc5b7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/ibm57v01.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!-- valid test for Production 57-->
+<!DOCTYPE root
+ [
+ <!ELEMENT root (#PCDATA|a|b)*>
+ <!ELEMENT a ANY>
+ <!ELEMENT b ANY>
+ <!NOTATION a SYSTEM "a">
+ <!NOTATION b SYSTEM "b">
+ <!ATTLIST a att (a|b) #IMPLIED>
+ <!ATTLIST b att NOTATION (a|b) #IMPLIED>
+ ]>
+ <root>
+This test case tests the kinds of enumerated types
+<a/><b/>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Entries
new file mode 100644
index 0000000000..c40a806f5f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm57v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Repository
new file mode 100644
index 0000000000..27214d760f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P57/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/ibm57v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/ibm57v01.xml
new file mode 100644
index 0000000000..a02aa56e55
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P57/out/ibm57v01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root [
+<!NOTATION a SYSTEM 'a'>
+<!NOTATION b SYSTEM 'b'>
+]>
+<root>&#10;This test case tests the kinds of enumerated types&#10;<a></a><b></b>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Entries
new file mode 100644
index 0000000000..bd747fde59
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm58v01.xml/1.2/Thu Feb 7 16:39:21 2002//
+/ibm58v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Repository
new file mode 100644
index 0000000000..0c10e14924
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P58
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v01.xml
new file mode 100644
index 0000000000..dafe2fd64b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v01.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!-- valid test for Production 58-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one ANY>
+ <!ELEMENT two ANY>
+ <!ELEMENT three ANY>
+ <!ELEMENT four ANY>
+ <!ELEMENT five ANY>
+ <!NOTATION this SYSTEM "alpha">
+ <!NOTATION that SYSTEM "beta">
+ <!ATTLIST one attr NOTATION (this) #IMPLIED>
+ <!ATTLIST two attr NOTATION ( this) #IMPLIED>
+ <!ATTLIST three attr NOTATION (this|that) #IMPLIED>
+ <!ATTLIST four attr NOTATION (that |this) #IMPLIED>
+ <!ATTLIST five attr NOTATION ( that ) #IMPLIED>
+ ]>
+ <test>
+This is a positive test with different patterns for NOTATION
+</test>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v02.xml
new file mode 100644
index 0000000000..dc466440c3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/ibm58v02.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!-- validity test for Production 58-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT blob (#PCDATA)>
+ <!NOTATION base64 SYSTEM "mimecode">
+ <!NOTATION uuencode SYSTEM "uudecode">
+ <!NOTATION raw SYSTEM "bin/cat">
+ <!ATTLIST blob content-encoding NOTATION (base64|uuencode|raw) #REQUIRED>
+ ]>
+ <test>
+<blob content-encoding="base64"></blob>
+The attribute values of type NOTATION matches one of the notation names included in the declaration;
+all notation names in the declaration have been declared
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Entries
new file mode 100644
index 0000000000..542b32a489
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm58v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm58v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Repository
new file mode 100644
index 0000000000..9d25a282d4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P58/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v01.xml
new file mode 100644
index 0000000000..d80e4e7a4a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE test [
+<!NOTATION that SYSTEM 'beta'>
+<!NOTATION this SYSTEM 'alpha'>
+]>
+<test>&#10;This is a positive test with different patterns for NOTATION&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v02.xml
new file mode 100644
index 0000000000..a28dab91cf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P58/out/ibm58v02.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE test [
+<!NOTATION base64 SYSTEM 'mimecode'>
+<!NOTATION raw SYSTEM 'bin/cat'>
+<!NOTATION uuencode SYSTEM 'uudecode'>
+]>
+<test>&#10;<blob content-encoding="base64"></blob>&#10;The attribute values of type NOTATION matches one of the notation names included in the declaration;&#10;all notation names in the declaration have been declared&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Entries
new file mode 100644
index 0000000000..a38cce98e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm59v01.xml/1.2/Thu Feb 7 16:41:27 2002//
+/ibm59v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Repository
new file mode 100644
index 0000000000..a9ef56c648
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P59
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v01.xml
new file mode 100644
index 0000000000..de89d08d2c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v01.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 59-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT two EMPTY>
+ <!ELEMENT enum (#PCDATA)>
+ <!ATTLIST one attr (one) #IMPLIED>
+ <!ATTLIST two attr ( enum) #IMPLIED>
+ <!ATTLIST two attr (one|two) #IMPLIED>
+ <!ATTLIST two attr (one| two) #IMPLIED>
+ <!ATTLIST two attr (enum ) #IMPLIED>
+ <!ATTLIST two attr ( one | two | enum) #IMPLIED>
+ ]>
+ <test>
+This is a Positive test
+</test>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v02.xml
new file mode 100644
index 0000000000..2620bc4b2c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/ibm59v02.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!-- validity test for Production 59-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT two EMPTY>
+ <!ELEMENT num EMPTY>
+ <!ATTLIST num value (one|two) #IMPLIED>
+ ]>
+ <test>
+<num value = "one"></num>
+This is a Positive test
+The attribute values of type Enumeration match one of the Nmtoken tokens in the declaration.
+</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Entries
new file mode 100644
index 0000000000..caf2ca4acf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm59v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm59v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Repository
new file mode 100644
index 0000000000..8c73880dc9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P59/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v01.xml
new file mode 100644
index 0000000000..91021d524f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v01.xml
@@ -0,0 +1 @@
+<test>&#10;This is a Positive test&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v02.xml
new file mode 100644
index 0000000000..041085b4ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P59/out/ibm59v02.xml
@@ -0,0 +1 @@
+<test>&#10;<num value="one"></num>&#10;This is a Positive test&#10;The attribute values of type Enumeration match one of the Nmtoken tokens in the declaration.&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Entries
new file mode 100644
index 0000000000..a00cd3dbf8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm60v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Repository
new file mode 100644
index 0000000000..a58808e8b7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P60
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml
new file mode 100644
index 0000000000..050a340016
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v01.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 60-->
+<!DOCTYPE Java
+ [
+ <!ELEMENT Java (#PCDATA|one|two|three|four)*>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT two EMPTY>
+ <!ELEMENT three EMPTY>
+ <!ELEMENT four EMPTY>
+ <!ATTLIST one chapter CDATA #IMPLIED>
+ <!ATTLIST two chapter CDATA #REQUIRED>
+ <!ATTLIST three chapter CDATA #FIXED "JavaBeans">
+ <!ATTLIST four chapter CDATA 'default'>
+ ]>
+<Java><one chapter="Introduction"/>
+ <three chapter="JavaBeans"/>
+ Positive test
+ DefaultDecl attributes values IMPLIED, REQUIRED, FIXED and default
+</Java>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v02.xml
new file mode 100644
index 0000000000..d2d9091649
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v02.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!-- validity test for Production 60-->
+<!DOCTYPE Java
+ [
+ <!ELEMENT Java ANY>
+ <!ELEMENT one EMPTY>
+ <!ELEMENT two EMPTY>
+ <!ATTLIST one chapter CDATA #REQUIRED>
+ <!ATTLIST two chapter CDATA #REQUIRED>
+ ]>
+<Java>
+<one chapter="Introduction"></one>
+<two chapter="JavaApplets"></two>
+Positive test. Required attribute. Every occurrence of an element with a
+#REQUIRED attribute default declaration gives the value of that attribute
+</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v03.xml
new file mode 100644
index 0000000000..f5d1449f9c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v03.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!-- validity test for Production 60-->
+<!DOCTYPE Java
+ [
+ <!ELEMENT Java ANY>
+ <!ELEMENT one EMPTY>
+ <!ATTLIST one chapter CDATA #FIXED "Introduction">
+ ]>
+<Java>
+<one chapter="Introduction"></one>
+An attribute has a default value declared with the #FIXED keyword,
+and an instances of that attribute is given a value which is exactly
+the same as the default value in the declaration.
+</Java>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v04.xml
new file mode 100644
index 0000000000..b0684edc91
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/ibm60v04.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!-- validity test for Production 60-->
+<!DOCTYPE test
+ [
+ <!ELEMENT test ANY>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT b EMPTY>
+ <!ELEMENT attr EMPTY>
+ <!ELEMENT nametoken EMPTY>
+ <!ATTLIST attr value (a|b) "a">
+ <!ATTLIST nametoken namevalue NMTOKEN "hello">
+ ]>
+<test>
+The default value specified for an attribute meets the
+lexical constraints of the declared attribute type.
+</test>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Entries
new file mode 100644
index 0000000000..3eef66cd95
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm60v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60v02.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60v03.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm60v04.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Repository
new file mode 100644
index 0000000000..890c77d282
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P60/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v01.xml
new file mode 100644
index 0000000000..ff619d06eb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v01.xml
@@ -0,0 +1 @@
+<Java><one chapter="Introduction"></one>&#10; <three chapter="JavaBeans"></three>&#10; Positive test&#10; DefaultDecl attributes values IMPLIED, REQUIRED, FIXED and default&#10;</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v02.xml
new file mode 100644
index 0000000000..25c23d7b58
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v02.xml
@@ -0,0 +1 @@
+<Java>&#10;<one chapter="Introduction"></one>&#10;<two chapter="JavaApplets"></two>&#10;Positive test. Required attribute. Every occurrence of an element with a &#10;#REQUIRED attribute default declaration gives the value of that attribute&#10;</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v03.xml
new file mode 100644
index 0000000000..84cdd236f1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v03.xml
@@ -0,0 +1 @@
+<Java>&#10;<one chapter="Introduction"></one>&#10;An attribute has a default value declared with the #FIXED keyword, &#10;and an instances of that attribute is given a value which is exactly &#10;the same as the default value in the declaration. &#10;</Java> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v04.xml
new file mode 100644
index 0000000000..272589e0ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P60/out/ibm60v04.xml
@@ -0,0 +1 @@
+<test>&#10;The default value specified for an attribute meets the &#10;lexical constraints of the declared attribute type.&#10;</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Entries
new file mode 100644
index 0000000000..5d767d52e9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm61v01.dtd/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm61v01.xml/1.1.1.1/Wed Oct 17 09:52:57 2001//
+/ibm61v02.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm61v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Repository
new file mode 100644
index 0000000000..7fda684f52
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P61
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.dtd
new file mode 100644
index 0000000000..f38d86c239
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.dtd
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 61-->
+<![INCLUDE[
+<!ELEMENT tiger EMPTY>
+<!ELEMENT animal ANY>
+]]>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.xml
new file mode 100644
index 0000000000..9653dbbd4b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v01.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 61-->
+<!DOCTYPE animal SYSTEM "ibm61v01.dtd">
+<animal>
+ <tiger/>
+</animal>
+ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.dtd
new file mode 100644
index 0000000000..8552560d23
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.dtd
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 61-->
+<![IGNORE[
+<!ELEMENT animal ANY>
+]]> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.xml
new file mode 100644
index 0000000000..16d65f680b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/ibm61v02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 61-->
+<!DOCTYPE animal SYSTEM "ibm61v02.dtd"
+[
+<!ELEMENT animal EMPTY>
+]>
+<animal/>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Entries
new file mode 100644
index 0000000000..ba2cf45c26
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm61v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm61v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Repository
new file mode 100644
index 0000000000..570f4d7e27
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P61/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v01.xml
new file mode 100644
index 0000000000..58faad1c69
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v01.xml
@@ -0,0 +1 @@
+<animal>&#10; <tiger></tiger>&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v02.xml
new file mode 100644
index 0000000000..c712ea7861
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P61/out/ibm61v02.xml
@@ -0,0 +1 @@
+<animal></animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Entries
new file mode 100644
index 0000000000..84c408581f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Entries
@@ -0,0 +1,11 @@
+/ibm62v01.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm62v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm62v02.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm62v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm62v03.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm62v03.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm62v04.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm62v04.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm62v05.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm62v05.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Repository
new file mode 100644
index 0000000000..e53b034fbc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P62
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.dtd
new file mode 100644
index 0000000000..fa1658b817
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.dtd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 62-->
+<![INCLUDE[
+<!ELEMENT tiger EMPTY>
+<!ELEMENT animal ANY>
+]]>
+
+<!--positive test with pattern1 for P62--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.xml
new file mode 100644
index 0000000000..6aef865eef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 62-->
+<!DOCTYPE animal SYSTEM "ibm62v01.dtd">
+<animal>
+ <tiger/>
+Positive test. Test includeSect with pattern1 of p62.
+Normal Pattern
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.dtd
new file mode 100644
index 0000000000..0d8f9dbde9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.dtd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 62-->
+<![ INCLUDE[
+<!ELEMENT tiger EMPTY>
+<!ELEMENT animal ANY>
+]]>
+
+<!--positive test with pattern2 (space included prior to INCLUDE) for P62--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.xml
new file mode 100644
index 0000000000..68d64af76f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v02.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 62-->
+<!DOCTYPE animal SYSTEM "ibm62v02.dtd">
+<animal>
+ <tiger/>
+Positive test. Test includeSect with pattern2 of p62.
+space included before INCLUDE
+</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.dtd
new file mode 100644
index 0000000000..e0935506cd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.dtd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 62-->
+<![INCLUDE [
+<!ELEMENT tiger EMPTY>
+<!ELEMENT animal ANY>
+]]>
+
+<!--positive test with pattern3 (space included after INCLUDE) for P62--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.xml
new file mode 100644
index 0000000000..5706549dbb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v03.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 62-->
+<!DOCTYPE animal SYSTEM "ibm62v03.dtd">
+<animal>
+ <tiger/>
+Positive test. Test includeSect with pattern3 of p62.
+space included after INCLUDE
+</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.dtd
new file mode 100644
index 0000000000..9dc897a247
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.dtd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 62-->
+<![ INCLUDE [
+<!ELEMENT tiger EMPTY>
+<!ELEMENT animal ANY>
+]]>
+
+<!--positive test with pattern4 (space included before and after INCLUDE) for P62--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.xml
new file mode 100644
index 0000000000..8a2e0cbf40
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v04.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 62-->
+<!DOCTYPE animal SYSTEM "ibm62v04.dtd">
+<animal>
+ <tiger/>
+Positive test. Test includeSect with pattern4 of p62.
+space included before and after INCLUDE
+</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.dtd
new file mode 100644
index 0000000000..2070b07f01
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.dtd
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 62-->
+<![INCLUDE[
+]]>
+
+<!--Positive test with pattern5 of P62-->
+<!--Missing external subset declaration which is o.k.--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.xml
new file mode 100644
index 0000000000..ec8583d3c0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/ibm62v05.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 62-->
+<!DOCTYPE animal SYSTEM "ibm62v05.dtd"
+[
+<!ELEMENT animal ANY>
+<!ELEMENT tiger EMPTY>
+]>
+
+<animal>
+ <tiger/>
+Positive test. Missing external subset declaration.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Entries
new file mode 100644
index 0000000000..3fdbdc4cc0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Entries
@@ -0,0 +1,6 @@
+/ibm62v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm62v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm62v03.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm62v04.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm62v05.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Repository
new file mode 100644
index 0000000000..19f90bd98c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P62/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v01.xml
new file mode 100644
index 0000000000..33a55b20cf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v01.xml
@@ -0,0 +1 @@
+<animal>&#10; <tiger></tiger>&#10;Positive test. Test includeSect with pattern1 of p62.&#10;Normal Pattern&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v02.xml
new file mode 100644
index 0000000000..2e13e8b57d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v02.xml
@@ -0,0 +1 @@
+<animal>&#10; <tiger></tiger>&#10;Positive test. Test includeSect with pattern2 of p62.&#10;space included before INCLUDE&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v03.xml
new file mode 100644
index 0000000000..b49da7bad7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v03.xml
@@ -0,0 +1 @@
+<animal>&#10; <tiger></tiger>&#10;Positive test. Test includeSect with pattern3 of p62.&#10;space included after INCLUDE&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v04.xml
new file mode 100644
index 0000000000..d9ae6c6bda
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v04.xml
@@ -0,0 +1 @@
+<animal>&#10; <tiger></tiger>&#10;Positive test. Test includeSect with pattern4 of p62.&#10;space included before and after INCLUDE&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v05.xml
new file mode 100644
index 0000000000..83c66400e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P62/out/ibm62v05.xml
@@ -0,0 +1 @@
+<animal>&#10; <tiger></tiger>&#10;Positive test. Missing external subset declaration.&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Entries
new file mode 100644
index 0000000000..23bf0623ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Entries
@@ -0,0 +1,11 @@
+/ibm63v01.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm63v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm63v02.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm63v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm63v03.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm63v03.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm63v04.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm63v04.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm63v05.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm63v05.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Repository
new file mode 100644
index 0000000000..ef8ef57a96
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P63
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.dtd
new file mode 100644
index 0000000000..b78d230497
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.dtd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 63-->
+<![IGNORE[
+]]>
+<!--Positive test with pattern1 of P63-->
+<!-- Positive test. Test for IGNORE with pattern 1. --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.xml
new file mode 100644
index 0000000000..af00015067
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 63-->
+<!DOCTYPE animal SYSTEM "ibm63v01.dtd"
+[
+<!ELEMENT animal ANY>
+<!ELEMENT tiger (#PCDATA)>
+<!ATTLIST animal a (tiger) #REQUIRED>
+]>
+<animal a = "tiger">
+Positive test. Test for IGNORE with pattern 1.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.dtd
new file mode 100644
index 0000000000..dc9c3da317
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.dtd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 63-->
+<![ IGNORE[
+]]>
+<!--Positive test with pattern2 of P63-->
+<!-- Positive test. Test for IGNORE with pattern 2. --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.xml
new file mode 100644
index 0000000000..e3a81fa0a6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v02.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 63-->
+<!DOCTYPE animal SYSTEM "ibm63v02.dtd"
+[
+<!ELEMENT animal ANY>
+<!ELEMENT tiger (#PCDATA)>
+<!ATTLIST animal a (tiger) #REQUIRED>
+]>
+<animal a = "tiger">
+Positive test. Test for IGNORE with pattern 2.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.dtd
new file mode 100644
index 0000000000..3280ee4b31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.dtd
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 63-->
+<![IGNORE [
+]]>
+<!--Positive test with pattern3 of P63-->
+<!-- Positive test. Test for IGNORE with pattern 3. --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.xml
new file mode 100644
index 0000000000..7767d6af4e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v03.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 63-->
+<!DOCTYPE animal SYSTEM "ibm63v03.dtd"
+[
+<!ELEMENT animal ANY>
+<!ELEMENT tiger (#PCDATA)>
+<!ATTLIST animal a (tiger) #REQUIRED>
+]>
+<animal a = "tiger">
+Positive test. Test for IGNORE with pattern 3.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.dtd
new file mode 100644
index 0000000000..7e89f7de85
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.dtd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 63-->
+<![IGNORE[
+<!ELEMENT animal EMPTY>
+<!ELEMENT tiger EMPTY>
+]]>
+<!--Positive test with pattern4 of P63-->
+<!-- Positive test. Test for IGNORE with pattern 4. --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.xml
new file mode 100644
index 0000000000..823c32fd9b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v04.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 63-->
+<!DOCTYPE animal SYSTEM "ibm63v04.dtd"
+[
+<!ELEMENT animal ANY>
+<!ELEMENT tiger (#PCDATA)>
+<!ATTLIST animal a (tiger) #REQUIRED>
+]>
+<animal a = "tiger">
+Positive test. Test for IGNORE with pattern 4.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.dtd
new file mode 100644
index 0000000000..2cc362a193
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.dtd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!-- DTD for Production 63-->
+<![ IGNORE [
+<!ELEMENT animal EMPTY>
+<!ELEMENT tiger EMPTY>
+]]>
+<!--Positive test with pattern5 of P63-->
+<!-- Positive test. Test for IGNORE with pattern 5(spaces extra) --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.xml
new file mode 100644
index 0000000000..680ab1a2d0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/ibm63v05.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 63-->
+<!DOCTYPE animal SYSTEM "ibm63v05.dtd"
+[
+<!ELEMENT animal ANY>
+<!ELEMENT tiger (#PCDATA)>
+<!ATTLIST animal a (tiger) #REQUIRED>
+]>
+<animal a = "tiger">
+Positive test. Test for IGNORE with pattern 5.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Entries
new file mode 100644
index 0000000000..074fab8a19
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Entries
@@ -0,0 +1,6 @@
+/ibm63v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm63v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm63v03.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm63v04.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm63v05.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Repository
new file mode 100644
index 0000000000..b76794d4e5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P63/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v01.xml
new file mode 100644
index 0000000000..12cfde5853
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v01.xml
@@ -0,0 +1 @@
+<animal a="tiger">&#10;Positive test. Test for IGNORE with pattern 1.&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v02.xml
new file mode 100644
index 0000000000..d193162e1c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v02.xml
@@ -0,0 +1 @@
+<animal a="tiger">&#10;Positive test. Test for IGNORE with pattern 2.&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v03.xml
new file mode 100644
index 0000000000..aa18165649
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v03.xml
@@ -0,0 +1 @@
+<animal a="tiger">&#10;Positive test. Test for IGNORE with pattern 3.&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v04.xml
new file mode 100644
index 0000000000..2aaa7f9998
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v04.xml
@@ -0,0 +1 @@
+<animal a="tiger">&#10;Positive test. Test for IGNORE with pattern 4.&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v05.xml
new file mode 100644
index 0000000000..216eddf208
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P63/out/ibm63v05.xml
@@ -0,0 +1 @@
+<animal a="tiger">&#10;Positive test. Test for IGNORE with pattern 5.&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Entries
new file mode 100644
index 0000000000..a6cb6c857a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm64v01.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm64v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm64v02.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm64v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm64v03.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm64v03.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Repository
new file mode 100644
index 0000000000..e3aaf92f61
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P64
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.dtd
new file mode 100644
index 0000000000..b0618c9d33
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.dtd
@@ -0,0 +1,8 @@
+<!--dtd for production 64-->
+<!ELEMENT doc EMPTY>
+<![IGNORE[
+Everything is ignored within an ignored section, except the
+sub-section delimiters '<![' and ']]>'. These must be balanced
+<!ok
+]]>
+<!--positive test. Pattern 1-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.xml
new file mode 100644
index 0000000000..6e6bde5203
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 64-->
+<!DOCTYPE animal SYSTEM "ibm64v01.dtd"
+[
+<!ELEMENT animal ANY>
+]>
+<animal>
+Positive Test. Pattern1
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.dtd
new file mode 100644
index 0000000000..e290206735
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.dtd
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!--dtd for production 64-->
+<![IGNORE[
+Everything is ignored within an ignored section, except the
+sub-section delimiters '<![' and ']]>'. These must be balanced
+<![
+<!ELEMENT animal EMPTY>
+]]>
+]]>
+<!--Positive test. Pattern2.-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.xml
new file mode 100644
index 0000000000..45c0ba47da
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 64-->
+<!DOCTYPE animal SYSTEM "ibm64v02.dtd"
+[
+<!ELEMENT animal ANY>
+]>
+<animal>
+Positive Test. Pattern2
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.dtd
new file mode 100644
index 0000000000..4780e175c5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.dtd
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!--dtd for production 64-->
+<![IGNORE[
+begin
+Everything is ignored within an ignored section, except the
+sub-section delimiters '<![' and ']]>'. These must be balanced
+<![
+<!ELEMENT animal EMPTY>
+]]>
+nesting
+<![
+<!ELEMENT tiger (#PCDATA)>
+]]>
+nesting again
+<![
+<!ELEMENT abc ANY>
+]]>
+end
+]]>
+<!--Positive test. Pattern3.-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.xml
new file mode 100644
index 0000000000..63221dab27
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/ibm64v03.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 64-->
+<!DOCTYPE animal SYSTEM "ibm64v03.dtd"
+[
+<!ELEMENT animal ANY>
+]>
+<animal>
+Positive Test. Pattern3
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Entries
new file mode 100644
index 0000000000..0aad867492
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Entries
@@ -0,0 +1,4 @@
+/ibm64v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm64v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm64v03.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Repository
new file mode 100644
index 0000000000..1ebd510f1a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P64/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v01.xml
new file mode 100644
index 0000000000..dbabf5a283
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v01.xml
@@ -0,0 +1 @@
+<animal>&#10;Positive Test. Pattern1&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v02.xml
new file mode 100644
index 0000000000..a2ce286987
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v02.xml
@@ -0,0 +1 @@
+<animal>&#10;Positive Test. Pattern2&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v03.xml
new file mode 100644
index 0000000000..b9eba2c844
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P64/out/ibm64v03.xml
@@ -0,0 +1 @@
+<animal>&#10;Positive Test. Pattern3&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Entries
new file mode 100644
index 0000000000..8276775870
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm65v01.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm65v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm65v02.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm65v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Repository
new file mode 100644
index 0000000000..4a2fb91cba
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P65
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.dtd
new file mode 100644
index 0000000000..de6a97372b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.dtd
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!--dtd for production 65-->
+<![IGNORE[
+
+<![
+<!ELEMENT animal EMPTY>
+]]>
+
+]]>
+<!--Positive test. Pattern1(Empty string)--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.xml
new file mode 100644
index 0000000000..18b4ca75e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 65-->
+<!DOCTYPE animal SYSTEM "ibm65v01.dtd"
+[
+<!ELEMENT animal ANY>
+]>
+<animal>
+Positive Test. Pattern1. Empty string.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.dtd
new file mode 100644
index 0000000000..524c37884c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.dtd
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!--dtd for production 65-->
+<![IGNORE[
+this is some stringwithout brackets
+<![
+<!ELEMENT animal EMPTY>
+]]>
+this is another string without brackets
+]]>
+<!--Positive test. Pattern2--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.xml
new file mode 100644
index 0000000000..f7f99e9d4a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/ibm65v02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- syntax test for Production 65-->
+<!DOCTYPE animal SYSTEM "ibm65v02.dtd"
+[
+<!ELEMENT animal ANY>
+]>
+<animal>
+Positive Test. Pattern2.
+</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Entries
new file mode 100644
index 0000000000..e7ad4080e8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm65v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm65v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Repository
new file mode 100644
index 0000000000..d05fb1c4af
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P65/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v01.xml
new file mode 100644
index 0000000000..de36831bbc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v01.xml
@@ -0,0 +1 @@
+<animal>&#10;Positive Test. Pattern1. Empty string.&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v02.xml
new file mode 100644
index 0000000000..c5f6a5fb80
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P65/out/ibm65v02.xml
@@ -0,0 +1 @@
+<animal>&#10;Positive Test. Pattern2.&#10;</animal> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Entries
new file mode 100644
index 0000000000..3a6104bbbf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm66v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Repository
new file mode 100644
index 0000000000..d34ce12cc7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P66
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml
new file mode 100644
index 0000000000..d7f7722da3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA)>
+]>
+<root>
+Test all valid Charater references for P66:
+&#9;&#09;&#0000000009;
+&#xA;&#xa;&#x0A;&#x00000000A;
+&#x0d;
+&#xAB; &#xab; &#xCD; &#xcD; &#xEf; &#xef;
+&#67; &#x43; &#x5f;
+&#x20; &#xD7A3; &#xAC00;
+&#xF900; &#xFFFD;
+&#x10000; &#x10FFFD;
+</root>
+<!--* a valid test for P66 *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Entries
new file mode 100644
index 0000000000..dbeed2d2a7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm66v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Repository
new file mode 100644
index 0000000000..2a7cbc27e5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P66/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml
new file mode 100644
index 0000000000..ed05e61ad6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml
@@ -0,0 +1 @@
+<root>&#10;Test all valid Charater references for P66:&#10;&#9;&#9;&#9;&#10;&#10;&#10;&#10;&#10;&#10;&#13;&#10;« « à à ï ï&#10;C C _&#10; 힣 ê°€&#10;豈 �&#10;ð€€ ô¿½&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Entries
new file mode 100644
index 0000000000..c0a216c5a4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm67v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Repository
new file mode 100644
index 0000000000..5f01c1553e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P67
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/ibm67v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/ibm67v01.xml
new file mode 100644
index 0000000000..5ada5f8d24
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/ibm67v01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA)>
+ <!ATTLIST root attr CDATA #REQUIRED>
+ <!ENTITY ge1 "xyz">
+]>
+<root attr="&ge1;&#65;">
+&ge1; &#66;
+</root>
+<!--* a valid test for P67 *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Entries
new file mode 100644
index 0000000000..72f7e48197
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm67v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Repository
new file mode 100644
index 0000000000..bf1d961dd8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P67/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/ibm67v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/ibm67v01.xml
new file mode 100644
index 0000000000..ba06d941c6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P67/out/ibm67v01.xml
@@ -0,0 +1 @@
+<root attr="xyzA">&#10;xyz B&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Entries
new file mode 100644
index 0000000000..4b0108a1be
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm68v01.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm68v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm68v02.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm68v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Repository
new file mode 100644
index 0000000000..16fccf770c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P68
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.dtd
new file mode 100644
index 0000000000..57249bd6ab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.dtd
@@ -0,0 +1,4 @@
+<!ENTITY ge1 "abcdef">
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr1 CDATA "&ge1;">
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.xml
new file mode 100644
index 0000000000..33a8156651
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE root SYSTEM "ibm68v01.dtd" [
+ <!ELEMENT root (#PCDATA|a)* >
+]>
+<root>
+ pcdata content
+ <a attr1="xyz"/>
+</root>
+<!--* a valid test for P68 VC:Entity Declared *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.ent
new file mode 100644
index 0000000000..299a1121fb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.ent
@@ -0,0 +1,3 @@
+<!ENTITY ge1 "abcdef">
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr1 CDATA "&ge1;">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.xml
new file mode 100644
index 0000000000..963415eaa6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/ibm68v02.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone='no'?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA)* >
+ <!ENTITY % pe1 SYSTEM "ibm68v02.ent">
+ %pe1;
+]>
+<root>
+ pcdata content
+</root>
+<!--* a valid test for P68 VC:Entity Declared *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Entries
new file mode 100644
index 0000000000..eb373b6218
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm68v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm68v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Repository
new file mode 100644
index 0000000000..f760536304
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P68/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v01.xml
new file mode 100644
index 0000000000..2375979678
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v01.xml
@@ -0,0 +1 @@
+<root>&#10; pcdata content&#10; <a attr1="xyz"></a>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v02.xml
new file mode 100644
index 0000000000..c05dd56b0c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P68/out/ibm68v02.xml
@@ -0,0 +1 @@
+<root>&#10; pcdata content&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Entries
new file mode 100644
index 0000000000..3e26ec4cc0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm69v01.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm69v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm69v02.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm69v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Repository
new file mode 100644
index 0000000000..42be2f9772
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P69
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.dtd
new file mode 100644
index 0000000000..374f61f567
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.dtd
@@ -0,0 +1,4 @@
+<!ENTITY ge1 "abcdef">
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr1 CDATA "&ge1;">
+%pe1;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.xml
new file mode 100644
index 0000000000..9d3523f891
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no" ?>
+<!DOCTYPE root SYSTEM "ibm69v01.dtd" [
+ <!ELEMENT root (#PCDATA|a)* >
+ <!ENTITY % pe1 "<!-- comment in PE -->">
+ %pe1;
+]>
+<root>
+ pcdata content
+ <a attr1="xyz"/>
+</root>
+<!--* a valid test for P69 VC:Entity Declared *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.ent
new file mode 100644
index 0000000000..416c1cc81c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.ent
@@ -0,0 +1,6 @@
+<!ENTITY ge1 "abcdef">
+<!ELEMENT a EMPTY>
+<!ATTLIST a attr1 CDATA "&ge1;">
+<!ENTITY % epe1 "<!-- comment in PE -->">
+%epe1;
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.xml
new file mode 100644
index 0000000000..98b945933b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/ibm69v02.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" standalone='no'?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA)* >
+ <!ENTITY % pe1 SYSTEM "ibm69v02.ent">
+ %pe1;
+]>
+<root>
+ pcdata content
+</root>
+<!--* a valid test for P69 VC:Entity Declared *-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Entries
new file mode 100644
index 0000000000..7591e389f9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm69v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm69v02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Repository
new file mode 100644
index 0000000000..e3de03e3c8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P69/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v01.xml
new file mode 100644
index 0000000000..2375979678
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v01.xml
@@ -0,0 +1 @@
+<root>&#10; pcdata content&#10; <a attr1="xyz"></a>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v02.xml
new file mode 100644
index 0000000000..c05dd56b0c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P69/out/ibm69v02.xml
@@ -0,0 +1 @@
+<root>&#10; pcdata content&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Entries
new file mode 100644
index 0000000000..14f4ae97a7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm70v01.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm70v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Repository
new file mode 100644
index 0000000000..f580a7db85
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P70
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.ent
new file mode 100644
index 0000000000..0119d7c770
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.ent
@@ -0,0 +1 @@
+<!-- comment !--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.xml
new file mode 100644
index 0000000000..e363e3dfc7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/ibm70v01.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+
+<!--* Test all legal patterns derived from P70-76 *-->
+<!ENTITY % pe1 '<!ATTLIST root att2 CDATA "&ge1;">'>
+<!ENTITY ge1 "attdefaultvalue" >
+%pe1;
+<!NOTATION JPGformat SYSTEM "JPGFormat">
+<!ENTITY ge2 SYSTEM "image.jpg" NDATA JPGformat>
+<!ENTITY % pe2 PUBLIC "-//w3c//any" "ibm70v01.ent" >
+%pe2;
+]>
+<root att2="any" />
+<!-- a valid test case: test P70-P76 --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Entries
new file mode 100644
index 0000000000..c970aff44b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm70v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Repository
new file mode 100644
index 0000000000..e717a0d032
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P70/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/ibm70v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/ibm70v01.xml
new file mode 100644
index 0000000000..34634fac09
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P70/out/ibm70v01.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE root [
+<!NOTATION JPGformat SYSTEM 'JPGFormat'>
+]>
+<root att2="any"></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Entries
new file mode 100644
index 0000000000..cd7fd509e8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Entries
@@ -0,0 +1,5 @@
+/ibm78v01.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm78v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm78v02.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm78v03.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Repository
new file mode 100644
index 0000000000..9adb715738
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P78
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.ent
new file mode 100644
index 0000000000..15e54d92cc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.ent
@@ -0,0 +1,3 @@
+<?xml encoding='utf-8'?>
+anything legal as PCDATA....
+N.B. also tested P77 and P80 \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.xml
new file mode 100644
index 0000000000..3fb4b9af07
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v01.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+
+<!--* Test all legal patterns derived from P78 *-->
+<!ENTITY epe1 SYSTEM "ibm78v01.ent" >
+<!ENTITY epe2 SYSTEM "ibm78v02.ent" >
+<!ENTITY epe3 SYSTEM "ibm78v03.ent" >
+
+]>
+<root>&epe1;&epe2;&epe3;</root>
+<!-- a valid test case: test P78, P77, P80 -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v02.ent
new file mode 100644
index 0000000000..477f60b33a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v02.ent
@@ -0,0 +1,3 @@
+<?xml encoding="utf-8"?>
+anything legal as PCDATA....
+N.B. also tested P77 \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v03.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v03.ent
new file mode 100644
index 0000000000..f46452e775
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/ibm78v03.ent
@@ -0,0 +1,2 @@
+anything legal as PCDATA....
+e.g. 12345678E-33, "hello" \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Entries
new file mode 100644
index 0000000000..7536d883ab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm78v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Repository
new file mode 100644
index 0000000000..59e86a95f6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P78/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/ibm78v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/ibm78v01.xml
new file mode 100644
index 0000000000..52794f4dbd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P78/out/ibm78v01.xml
@@ -0,0 +1 @@
+<root>&#10;anything legal as PCDATA....&#10;N.B. also tested P77 and P80&#10;anything legal as PCDATA....&#10;N.B. also tested P77anything legal as PCDATA....&#10;e.g. 12345678E-33, &quot;hello&quot;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Entries
new file mode 100644
index 0000000000..bd57c12125
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm79v01.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ibm79v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Repository
new file mode 100644
index 0000000000..c36df15974
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P79
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.ent
new file mode 100644
index 0000000000..f54ba01b08
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.ent
@@ -0,0 +1,2 @@
+<!ELEMENT name (#PCDATA)>
+<!ELEMENT notebook (#PCDATA)> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.xml
new file mode 100644
index 0000000000..1d1befaf03
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/ibm79v01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE book
+[
+<!ELEMENT book ANY>
+<!ATTLIST notebook att CDATA #IMPLIED>
+<!ENTITY % epe SYSTEM "ibm79v01.ent" >
+%epe;
+]>
+<book><name>XML Handbook</name> This is a book</book>
+
+<!-- a valid test case: test P79 -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Entries
new file mode 100644
index 0000000000..58b04c89ec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm79v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Repository
new file mode 100644
index 0000000000..01cd93f790
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P79/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/ibm79v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/ibm79v01.xml
new file mode 100644
index 0000000000..e898e58937
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P79/out/ibm79v01.xml
@@ -0,0 +1 @@
+<book><name>XML Handbook</name> This is a book</book> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Entries
new file mode 100644
index 0000000000..ba1712f619
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm82v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Repository
new file mode 100644
index 0000000000..a2e8fdac1f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P82
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/ibm82v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/ibm82v01.xml
new file mode 100644
index 0000000000..3c08581666
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/ibm82v01.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!DOCTYPE root
+[
+<!ELEMENT root (#PCDATA)>
+<!ATTLIST root att CDATA #IMPLIED>
+<!ATTLIST root entatt1 ENTITY #REQUIRED >
+
+<!--* Test PublicID in P82 *-->
+<!NOTATION JPGformat PUBLIC "-//image//notreal" >
+<!ENTITY unparsed1 SYSTEM "image.jpg" NDATA JPGformat>
+]>
+<root entatt1="unparsed1">test PublicID in P82</root>
+<!-- a valid test case: test P82 and P83 -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Entries
new file mode 100644
index 0000000000..be03a47ea0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm82v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Repository
new file mode 100644
index 0000000000..da71ac9d80
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P82/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/ibm82v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/ibm82v01.xml
new file mode 100644
index 0000000000..6200e1a16c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P82/out/ibm82v01.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE root [
+<!NOTATION JPGformat PUBLIC '-//image//notreal'>
+]>
+<root entatt1="unparsed1">test PublicID in P82</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Entries
new file mode 100644
index 0000000000..1174cccf0f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm85v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Repository
new file mode 100644
index 0000000000..c3f0a3cbb4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P85
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/ibm85v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/ibm85v01.xml
new file mode 100644
index 0000000000..045246e150
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/ibm85v01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+<!-- This test case covers 149 legal character ranges plus
+ 51 discrete legal characters for production 85. -->
+<?NAME_41-A_5A-Z_4d-M_61-a_7A-z_6d-m_0C0-À_0D6-Ö_0cb-Ë_0D8-Ø_0F6-ö_0e7-ç_0F8-ø_0FF-ÿ_0fb-û_100-Ä€_131-ı_118-Ę_134-Ä´_13E-ľ_139-Ĺ_141-Å_148-ň_144-Å„_14A-ÅŠ_17E-ž_164-Ť_180-Æ€_1C3-ǃ_1a1-Æ¡_1CD-Ç_1F0-Ç°_1de-Çž_1F4-Ç´_1F5-ǵ_1f4-Ç´_1FA-Ǻ_217-È—_208-Ȉ_250-É_2A8-ʨ_27c-ɼ_2BB-Ê»_2C1-Ë_2be-ʾ_386-Ά_388-Έ_38A-Ί_389-Ή_38C-ÎŒ_38E-ÎŽ_3A1-Ρ_397-Η_3A3-Σ_3CE-ÏŽ_3b8-θ_3D0-Ï_3D6-Ï–_3d3-Ï“_3DA-Ïš_3DC-Ïœ_3DE-Ïž_3E0-Ï _3E2-Ï¢_3F3-ϳ_3ea-Ϫ_401-Ð_40C-ÐŒ_406-І_40E-ÐŽ_44F-Ñ_42e-Ю_451-Ñ‘_45C-Ñœ_456-Ñ–_45E-Ñž_481-Ò_46f-ѯ_490-Ò_4C4-Ó„_4aa-Òª_4C7-Ó‡_4C8-Óˆ_4c7-Ó‡_4CB-Ó‹_4CC-ÓŒ_4cb-Ó‹_4D0-Ó_4EB-Ó«_4dd-Ó_4EE-Ó®_4F5-Óµ_4f1-Ó±_4F8-Ó¸_4F9-Ó¹_4f8-Ó¸_531-Ô±_556-Õ–_543-Õƒ_559-Õ™_561-Õ¡_586-Ö†_573-Õ³_5D0-×_5EA-ת_5dd-×_5F0-×°_5F2-ײ_5f1-×±_621-Ø¡_63A-غ_62d-Ø­_641-Ù_64A-ÙŠ_645-Ù…_671-Ù±_6B7-Ú·_694-Ú”_6BA-Úº_6BE-Ú¾_6bc-Ú¼_6C0-Û€_6CE-ÛŽ_6c7-Û‡_6D0-Û_6D3-Û“_6d1-Û‘_6D5-Û•_6E5-Û¥_6E6-Û¦_6e5-Û¥_0905-अ_0939-ह_091f-ट_093D-ऽ_0958-क़_0961-ॡ_095c-ड़_0985-অ_098C-ঌ_0988-ঈ_098F-à¦_0990-à¦_098f-à¦_0993-ও_09A8-ন_099d-à¦_09AA-প_09B0-র_09ad-ভ_09B2-ল_09B6-শ_09B9-হ_09b7-ষ_09DC-ড়_09DD-à§_09dc-ড়_09DF-য়_09E1-ৡ_09e0-ৠ_09F0-ৰ_09F1-ৱ_09f0-ৰ_0A05-ਅ_0A0A-ਊ_0a07-ਇ_0A0F-à¨_0A10-à¨_0a0f-à¨_0A13-ਓ_0A28-ਨ_0a1d-à¨_0A2A-ਪ_0A30-ਰ_0a2d-ਭ_0A32-ਲ_0A33-ਲ਼_0a32-ਲ_0A35-ਵ_0A36-ਸ਼_0a35-ਵ_0A38-ਸ_0A39-ਹ_0a38-ਸ_0A59-à©™_0A5C-à©œ_0a5a-à©š_0A5E-à©ž_0A72-ੲ_0A74-à©´_0a73-ੳ_0A85-અ_0A8B-ઋ_0a88-ઈ_0A8D-àª_0A8F-àª_0A91-ઑ_0a90-àª_0A93-ઓ_0AA8-ન_0a9d-àª_0AAA-પ_0AB0-ર_0aad-ભ_0AB2-લ_0AB3-ળ_0ab2-લ_0AB5-વ_0AB9-હ_0ab7-ષ_0ABD-ઽ_0AE0-à« _0B05-ଅ_0B0C-ଌ_0b08-ଈ_0B0F-à¬_0B10-à¬_0b0f-à¬_0B13-ଓ_0B28-ନ_0b1d-à¬_0B2A-ପ_0B30-ର_0b2d-ଭ_0B32-ଲ_0B33-ଳ_0b32-ଲ_0B36-ଶ_0B39-ହ_0b37-ଷ_0B3D-ଽ_0B5C-à­œ_0B5D-à­_0b5c-à­œ_0B5F-à­Ÿ_0B61-à­¡_0b60-à­ _0B85-à®…_0B8A-ஊ_0b87-இ_0B8E-எ_0B90-à®_0b8f-à®_0B92-à®’_0B95-க_0b93-ஓ_0B99-à®™_0B9A-ச_0b99-à®™_0B9C-ஜ_0B9E-ஞ_0B9F-ட_0b9e-ஞ_0BA3-ண_0BA4-த_0ba3-ண_0BA8-ந_0BAA-ப_0ba9-ன_0BAE-à®®_0BB5-வ_0bb1-à®±_0BB7-à®·_0BB9-ஹ_0bb8-ஸ_0C05-à°…_0C0C-à°Œ_0c08-à°ˆ_0C0E-à°Ž_0C10-à°_0c0f-à°_0C12-à°’_0C28-à°¨_0c1d-à°_0C2A-à°ª_0C33-à°³_0c2e-à°®_0C35-à°µ_0C39-à°¹_0c37-à°·_0C60-à± _0C61-ౡ_0c60-à± _0C85-ಅ_0C8C-ಌ_0c88-ಈ_0C8E-ಎ_0C90-à²_0c8f-à²_0C92-ಒ_0CA8-ನ_0c9d-à²_0CAA-ಪ_0CB3-ಳ_0cae-ಮ_0CB5-ವ_0CB9-ಹ_0cb7-ಷ_0CDE-ೞ_0CE0-à³ _0CE1-ೡ_0ce0-à³ _0D05-à´…_0D0C-à´Œ_0d08-à´ˆ_0D0E-à´Ž_0D10-à´_0d0f-à´_0D12-à´’_0D28-à´¨_0d1d-à´_0D2A-à´ª_0D39-à´¹_0d31-à´±_0D60-ൠ_0D61-ൡ_0d60-ൠ_0E01-à¸_0E2E-ฮ_0e17-ท_0E30-ะ_0E32-า_0E33-ำ_0e32-า_0E40-เ_0E45-ๅ_0e42-โ_0E81-àº_0E82-ຂ_0e81-àº_0E84-ຄ_0E87-ງ_0E88-ຈ_0e87-ງ_0E8A-ຊ_0E8D-àº_0E94-ດ_0E97-ທ_0e95-ຕ_0E99-ນ_0E9F-ຟ_0e9c-ຜ_0EA1-ມ_0EA3-ຣ_0ea2-ຢ_0EA5-ລ_0EA7-ວ_0EAA-ສ_0EAB-ຫ_0eaa-ສ_0EAD-ອ_0EAE-ຮ_0ead-ອ_0EB0-ະ_0EB2-າ_0EB3-ຳ_0eb2-າ_0EBD-ຽ_0EC0-ເ_0EC4-ໄ_0ec2-ໂ_0F40-ཀ_0F47-ཇ_0f43-གྷ_0F49-ཉ_0F69-ཀྵ_0f59-ཙ_10A0-á‚ _10C5-Ⴥ_10b2-Ⴒ_10D0-áƒ_10F6-ჶ_10e3-უ_1100-á„€_1102-á„‚_1103-ᄃ_1102-á„‚_1105-á„…_1107-ᄇ_1106-ᄆ_1109-ᄉ_110B-á„‹_110C-á„Œ_110b-á„‹_110E-á„Ž_1112-á„’_1110-á„_113C-ᄼ_113E-ᄾ_1140-á…€_114C-á…Œ_114E-á…Ž_1150-á…_1154-á…”_1155-á…•_1154-á…”_1159-á…™_115F-á…Ÿ_1161-á…¡_1160-á… _1163-á…£_1165-á…¥_1167-á…§_1169-á…©_116D-á…­_116E-á…®_116d-á…­_1172-á…²_1173-á…³_1172-á…²_1175-á…µ_119E-ᆞ_11A8-ᆨ_11AB-ᆫ_11AE-ᆮ_11AF-ᆯ_11ae-ᆮ_11B7-ᆷ_11B8-ᆸ_11b7-ᆷ_11BA-ᆺ_11BC-ᆼ_11C2-ᇂ_11bf-ᆿ_11EB-ᇫ_11F0-ᇰ_11F9-ᇹ_1E00-Ḁ_1E9B-ẛ_1e4d-á¹_1EA0-Ạ_1EF9-ỹ_1ecc-Ọ_1F00-á¼€_1F15-ἕ_1f0a-Ἂ_1F18-Ἐ_1F1D-á¼_1f1a-Ἒ_1F20-á¼ _1F45-á½…_1f32-á¼²_1F48-Ὀ_1F4D-á½_1f4a-Ὂ_1F50-á½_1F57-á½—_1f53-ὓ_1F59-á½™_1F5B-á½›_1F5D-á½_1F5F-Ὗ_1F7D-á½½_1f6e-á½®_1F80-á¾€_1FB4-á¾´_1f9a-ᾚ_1FB6-ᾶ_1FBC-á¾¼_1fb9-á¾¹_1FBE-á¾¾_1FC2-á¿‚_1FC4-á¿„_1fc3-ῃ_1FC6-ῆ_1FCC-á¿Œ_1fc9-Έ_1FD0-á¿_1FD3-á¿“_1fd1-á¿‘_1FD6-á¿–_1FDB-á¿›_1fd8-Ῐ_1FE0-á¿ _1FEC-Ῥ_1fe6-ῦ_1FF2-ῲ_1FF4-á¿´_1ff3-ῳ_1FF6-ῶ_1FFC-ῼ_1ff9-Ό_2126-Ω_212A-K_212B-â„«_212a-K_212E-â„®_2180-ↀ_2182-ↂ_2181-â†_3041-ã_3094-ã‚”_306a-ãª_30A1-ã‚¡_30FA-ヺ_30cd-ãƒ_3105-ã„…_312C-ㄬ_3118-ㄘ_AC00-ê°€_D7A3-힣_c1d1-쇑 This is a PI target ?>
+]>
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Entries
new file mode 100644
index 0000000000..040b21147b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm85v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Repository
new file mode 100644
index 0000000000..3c6ca0b25f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P85/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/ibm85v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/ibm85v01.xml
new file mode 100644
index 0000000000..b0aa21f3b1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P85/out/ibm85v01.xml
@@ -0,0 +1 @@
+<?NAME_41-A_5A-Z_4d-M_61-a_7A-z_6d-m_0C0-À_0D6-Ö_0cb-Ë_0D8-Ø_0F6-ö_0e7-ç_0F8-ø_0FF-ÿ_0fb-û_100-Ä€_131-ı_118-Ę_134-Ä´_13E-ľ_139-Ĺ_141-Å_148-ň_144-Å„_14A-ÅŠ_17E-ž_164-Ť_180-Æ€_1C3-ǃ_1a1-Æ¡_1CD-Ç_1F0-Ç°_1de-Çž_1F4-Ç´_1F5-ǵ_1f4-Ç´_1FA-Ǻ_217-È—_208-Ȉ_250-É_2A8-ʨ_27c-ɼ_2BB-Ê»_2C1-Ë_2be-ʾ_386-Ά_388-Έ_38A-Ί_389-Ή_38C-ÎŒ_38E-ÎŽ_3A1-Ρ_397-Η_3A3-Σ_3CE-ÏŽ_3b8-θ_3D0-Ï_3D6-Ï–_3d3-Ï“_3DA-Ïš_3DC-Ïœ_3DE-Ïž_3E0-Ï _3E2-Ï¢_3F3-ϳ_3ea-Ϫ_401-Ð_40C-ÐŒ_406-І_40E-ÐŽ_44F-Ñ_42e-Ю_451-Ñ‘_45C-Ñœ_456-Ñ–_45E-Ñž_481-Ò_46f-ѯ_490-Ò_4C4-Ó„_4aa-Òª_4C7-Ó‡_4C8-Óˆ_4c7-Ó‡_4CB-Ó‹_4CC-ÓŒ_4cb-Ó‹_4D0-Ó_4EB-Ó«_4dd-Ó_4EE-Ó®_4F5-Óµ_4f1-Ó±_4F8-Ó¸_4F9-Ó¹_4f8-Ó¸_531-Ô±_556-Õ–_543-Õƒ_559-Õ™_561-Õ¡_586-Ö†_573-Õ³_5D0-×_5EA-ת_5dd-×_5F0-×°_5F2-ײ_5f1-×±_621-Ø¡_63A-غ_62d-Ø­_641-Ù_64A-ÙŠ_645-Ù…_671-Ù±_6B7-Ú·_694-Ú”_6BA-Úº_6BE-Ú¾_6bc-Ú¼_6C0-Û€_6CE-ÛŽ_6c7-Û‡_6D0-Û_6D3-Û“_6d1-Û‘_6D5-Û•_6E5-Û¥_6E6-Û¦_6e5-Û¥_0905-अ_0939-ह_091f-ट_093D-ऽ_0958-क़_0961-ॡ_095c-ड़_0985-অ_098C-ঌ_0988-ঈ_098F-à¦_0990-à¦_098f-à¦_0993-ও_09A8-ন_099d-à¦_09AA-প_09B0-র_09ad-ভ_09B2-ল_09B6-শ_09B9-হ_09b7-ষ_09DC-ড়_09DD-à§_09dc-ড়_09DF-য়_09E1-ৡ_09e0-ৠ_09F0-ৰ_09F1-ৱ_09f0-ৰ_0A05-ਅ_0A0A-ਊ_0a07-ਇ_0A0F-à¨_0A10-à¨_0a0f-à¨_0A13-ਓ_0A28-ਨ_0a1d-à¨_0A2A-ਪ_0A30-ਰ_0a2d-ਭ_0A32-ਲ_0A33-ਲ਼_0a32-ਲ_0A35-ਵ_0A36-ਸ਼_0a35-ਵ_0A38-ਸ_0A39-ਹ_0a38-ਸ_0A59-à©™_0A5C-à©œ_0a5a-à©š_0A5E-à©ž_0A72-ੲ_0A74-à©´_0a73-ੳ_0A85-અ_0A8B-ઋ_0a88-ઈ_0A8D-àª_0A8F-àª_0A91-ઑ_0a90-àª_0A93-ઓ_0AA8-ન_0a9d-àª_0AAA-પ_0AB0-ર_0aad-ભ_0AB2-લ_0AB3-ળ_0ab2-લ_0AB5-વ_0AB9-હ_0ab7-ષ_0ABD-ઽ_0AE0-à« _0B05-ଅ_0B0C-ଌ_0b08-ଈ_0B0F-à¬_0B10-à¬_0b0f-à¬_0B13-ଓ_0B28-ନ_0b1d-à¬_0B2A-ପ_0B30-ର_0b2d-ଭ_0B32-ଲ_0B33-ଳ_0b32-ଲ_0B36-ଶ_0B39-ହ_0b37-ଷ_0B3D-ଽ_0B5C-à­œ_0B5D-à­_0b5c-à­œ_0B5F-à­Ÿ_0B61-à­¡_0b60-à­ _0B85-à®…_0B8A-ஊ_0b87-இ_0B8E-எ_0B90-à®_0b8f-à®_0B92-à®’_0B95-க_0b93-ஓ_0B99-à®™_0B9A-ச_0b99-à®™_0B9C-ஜ_0B9E-ஞ_0B9F-ட_0b9e-ஞ_0BA3-ண_0BA4-த_0ba3-ண_0BA8-ந_0BAA-ப_0ba9-ன_0BAE-à®®_0BB5-வ_0bb1-à®±_0BB7-à®·_0BB9-ஹ_0bb8-ஸ_0C05-à°…_0C0C-à°Œ_0c08-à°ˆ_0C0E-à°Ž_0C10-à°_0c0f-à°_0C12-à°’_0C28-à°¨_0c1d-à°_0C2A-à°ª_0C33-à°³_0c2e-à°®_0C35-à°µ_0C39-à°¹_0c37-à°·_0C60-à± _0C61-ౡ_0c60-à± _0C85-ಅ_0C8C-ಌ_0c88-ಈ_0C8E-ಎ_0C90-à²_0c8f-à²_0C92-ಒ_0CA8-ನ_0c9d-à²_0CAA-ಪ_0CB3-ಳ_0cae-ಮ_0CB5-ವ_0CB9-ಹ_0cb7-ಷ_0CDE-ೞ_0CE0-à³ _0CE1-ೡ_0ce0-à³ _0D05-à´…_0D0C-à´Œ_0d08-à´ˆ_0D0E-à´Ž_0D10-à´_0d0f-à´_0D12-à´’_0D28-à´¨_0d1d-à´_0D2A-à´ª_0D39-à´¹_0d31-à´±_0D60-ൠ_0D61-ൡ_0d60-ൠ_0E01-à¸_0E2E-ฮ_0e17-ท_0E30-ะ_0E32-า_0E33-ำ_0e32-า_0E40-เ_0E45-ๅ_0e42-โ_0E81-àº_0E82-ຂ_0e81-àº_0E84-ຄ_0E87-ງ_0E88-ຈ_0e87-ງ_0E8A-ຊ_0E8D-àº_0E94-ດ_0E97-ທ_0e95-ຕ_0E99-ນ_0E9F-ຟ_0e9c-ຜ_0EA1-ມ_0EA3-ຣ_0ea2-ຢ_0EA5-ລ_0EA7-ວ_0EAA-ສ_0EAB-ຫ_0eaa-ສ_0EAD-ອ_0EAE-ຮ_0ead-ອ_0EB0-ະ_0EB2-າ_0EB3-ຳ_0eb2-າ_0EBD-ຽ_0EC0-ເ_0EC4-ໄ_0ec2-ໂ_0F40-ཀ_0F47-ཇ_0f43-གྷ_0F49-ཉ_0F69-ཀྵ_0f59-ཙ_10A0-á‚ _10C5-Ⴥ_10b2-Ⴒ_10D0-áƒ_10F6-ჶ_10e3-უ_1100-á„€_1102-á„‚_1103-ᄃ_1102-á„‚_1105-á„…_1107-ᄇ_1106-ᄆ_1109-ᄉ_110B-á„‹_110C-á„Œ_110b-á„‹_110E-á„Ž_1112-á„’_1110-á„_113C-ᄼ_113E-ᄾ_1140-á…€_114C-á…Œ_114E-á…Ž_1150-á…_1154-á…”_1155-á…•_1154-á…”_1159-á…™_115F-á…Ÿ_1161-á…¡_1160-á… _1163-á…£_1165-á…¥_1167-á…§_1169-á…©_116D-á…­_116E-á…®_116d-á…­_1172-á…²_1173-á…³_1172-á…²_1175-á…µ_119E-ᆞ_11A8-ᆨ_11AB-ᆫ_11AE-ᆮ_11AF-ᆯ_11ae-ᆮ_11B7-ᆷ_11B8-ᆸ_11b7-ᆷ_11BA-ᆺ_11BC-ᆼ_11C2-ᇂ_11bf-ᆿ_11EB-ᇫ_11F0-ᇰ_11F9-ᇹ_1E00-Ḁ_1E9B-ẛ_1e4d-á¹_1EA0-Ạ_1EF9-ỹ_1ecc-Ọ_1F00-á¼€_1F15-ἕ_1f0a-Ἂ_1F18-Ἐ_1F1D-á¼_1f1a-Ἒ_1F20-á¼ _1F45-á½…_1f32-á¼²_1F48-Ὀ_1F4D-á½_1f4a-Ὂ_1F50-á½_1F57-á½—_1f53-ὓ_1F59-á½™_1F5B-á½›_1F5D-á½_1F5F-Ὗ_1F7D-á½½_1f6e-á½®_1F80-á¾€_1FB4-á¾´_1f9a-ᾚ_1FB6-ᾶ_1FBC-á¾¼_1fb9-á¾¹_1FBE-á¾¾_1FC2-á¿‚_1FC4-á¿„_1fc3-ῃ_1FC6-ῆ_1FCC-á¿Œ_1fc9-Έ_1FD0-á¿_1FD3-á¿“_1fd1-á¿‘_1FD6-á¿–_1FDB-á¿›_1fd8-Ῐ_1FE0-á¿ _1FEC-Ῥ_1fe6-ῦ_1FF2-ῲ_1FF4-á¿´_1ff3-ῳ_1FF6-ῶ_1FFC-ῼ_1ff9-Ό_2126-Ω_212A-K_212B-â„«_212a-K_212E-â„®_2180-ↀ_2182-ↂ_2181-â†_3041-ã_3094-ã‚”_306a-ãª_30A1-ã‚¡_30FA-ヺ_30cd-ãƒ_3105-ã„…_312C-ㄬ_3118-ㄘ_AC00-ê°€_D7A3-힣_c1d1-쇑 This is a PI target ?><book></book> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Entries
new file mode 100644
index 0000000000..75a1a248eb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm86v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Repository
new file mode 100644
index 0000000000..77f2b4b3d0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P86
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/ibm86v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/ibm86v01.xml
new file mode 100644
index 0000000000..150f10d977
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/ibm86v01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+<!-- This test case covers 2 legal character ranges plus
+ 1 discrete legal characters for production 86. -->
+<?NAME_4E00-一_9FA5-龥_76d2-盒_3007-〇_3021-〡_3029-〩_3025-〥 This is a PI target ?>
+]>
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Entries
new file mode 100644
index 0000000000..d83c87b60f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm86v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Repository
new file mode 100644
index 0000000000..187b88c955
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P86/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/ibm86v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/ibm86v01.xml
new file mode 100644
index 0000000000..f032d0c9b3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P86/out/ibm86v01.xml
@@ -0,0 +1 @@
+<?NAME_4E00-一_9FA5-龥_76d2-盒_3007-〇_3021-〡_3029-〩_3025-〥 This is a PI target ?><book></book> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Entries
new file mode 100644
index 0000000000..d822f21d5c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm87v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Repository
new file mode 100644
index 0000000000..7b61a71f18
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P87
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/ibm87v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/ibm87v01.xml
new file mode 100644
index 0000000000..a59d63b8a7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/ibm87v01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+<!-- This test case covers 65 legal character ranges plus
+ 30 discrete legal characters for production 87. -->
+<?NAME_300-Ì€_345-Í…_322-Ì¢_360-Í _361-Í¡_360-Í _483-Òƒ_486-Ò†_484-Ò„_591-Ö‘_5A1-Ö¡_599-Ö™_5A3-Ö£_5B9-Ö¹_5ae-Ö®_5BB-Ö»_5BD-Ö½_5bc-Ö¼_5BF-Ö¿_5C1-×_5C2-ׂ_5c1-×_5C4-ׄ_64B-Ù‹_652-Ù’_64e-ÙŽ_670-Ù°_6D6-Û–_6DC-Ûœ_6d9-Û™_6DD-Û_6DF-ÛŸ_6de-Ûž_6E0-Û _6E4-Û¤_6e2-Û¢_6E7-Û§_6E8-Û¨_6e7-Û§_6EA-Ûª_6ED-Û­_6eb-Û«_0901-à¤_0903-ः_0902-ं_093C-़_093E-ा_094C-ौ_0945-ॅ_094D-à¥_0951-॑_0954-॔_0952-॒_0962-ॢ_0963-ॣ_0962-ॢ_0981-à¦_0983-ঃ_0982-ং_09BC-়_09BE-া_09BF-ি_09C0-ী_09C4-ৄ_09c2-ূ_09C7-ে_09C8-ৈ_09c7-ে_09CB-ো_09CD-à§_09cc-ৌ_09D7-ৗ_09E2-ৢ_09E3-ৣ_09e2-ৢ_0A02-ਂ_0A3C-਼_0A3E-ਾ_0A3F-ਿ_0A40-à©€_0A42-à©‚_0a41-à©_0A47-ੇ_0A48-ੈ_0a47-ੇ_0A4B-à©‹_0A4D-à©_0a4c-à©Œ_0A70-à©°_0A71-ੱ_0a70-à©°_0A81-àª_0A83-ઃ_0a82-ં_0ABC-઼_0ABE-ા_0AC5-à«…_0ac1-à«_0AC7-ે_0AC9-ૉ_0ac8-ૈ_0ACB-à«‹_0ACD-à«_0acc-à«Œ_0B01-à¬_0B03-ଃ_0b02-ଂ_0B3C-଼_0B3E-ା_0B43-à­ƒ_0b40-à­€_0B47-à­‡_0B48-à­ˆ_0b47-à­‡_0B4B-à­‹_0B4D-à­_0b4c-à­Œ_0B56-à­–_0B57-à­—_0b56-à­–_0B82-ஂ_0B83-ஃ_0b82-ஂ_0BBE-ா_0BC2-ூ_0bc0-ீ_0BC6-ெ_0BC8-ை_0bc7-ே_0BCA-ொ_0BCD-à¯_0bcb-ோ_0BD7-ௗ_0C01-à°_0C03-à°ƒ_0c02-à°‚_0C3E-à°¾_0C44-ౄ_0c41-à±_0C46-ె_0C48-ై_0c47-ే_0C4A-ొ_0C4D-à±_0c4b-ో_0C55-ౕ_0C56-à±–_0c55-ౕ_0C82-ಂ_0C83-ಃ_0c82-ಂ_0CBE-ಾ_0CC4-ೄ_0cc1-à³_0CC6-ೆ_0CC8-ೈ_0cc7-ೇ_0CCA-ೊ_0CCD-à³_0ccb-ೋ_0CD5-ೕ_0CD6-à³–_0cd5-ೕ_0D02-à´‚_0D03-à´ƒ_0d02-à´‚_0D3E-à´¾_0D43-ൃ_0d40-ീ_0D46-െ_0D48-ൈ_0d47-േ_0D4A-ൊ_0D4D-àµ_0d4b-ോ_0D57-ൗ_0E31-ั_0E34-ิ_0E3A-ฺ_0e37-ื_0E47-็_0E4E-๎_0e4a-๊_0EB1-ັ_0EB4-ິ_0EB9-ູ_0eb6-ຶ_0EBB-ົ_0EBC-ຼ_0ebb-ົ_0EC8-່_0ECD-à»_0eca-໊_0F18-༘_0F19-༙_0f18-༘_0F35-༵_0F37-༷_0F39-༹_0F3E-༾_0F3F-༿_0F71-ཱ_0F84-྄_0f7a-ེ_0F86-྆_0F8B-ྋ_0f88-ྈ_0F90-à¾_0F95-ྕ_0f92-ྒ_0F97-ྗ_0F99-ྙ_0FAD-ྭ_0fa3-ྣ_0FB1-ྱ_0FB7-ྷ_0fb4-ྴ_0FB9-ྐྵ_20D0-âƒ_20DC-⃜_20d6-⃖_20E1-⃡_302A-〪_302F-〯_302c-〬_3099-ã‚™_309A-ã‚š This is a PI target ?>
+]>
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Entries
new file mode 100644
index 0000000000..d1cdff3eb4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm87v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Repository
new file mode 100644
index 0000000000..7a9ac6729e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P87/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/ibm87v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/ibm87v01.xml
new file mode 100644
index 0000000000..b9d16878dc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P87/out/ibm87v01.xml
@@ -0,0 +1 @@
+<?NAME_300-Ì€_345-Í…_322-Ì¢_360-Í _361-Í¡_360-Í _483-Òƒ_486-Ò†_484-Ò„_591-Ö‘_5A1-Ö¡_599-Ö™_5A3-Ö£_5B9-Ö¹_5ae-Ö®_5BB-Ö»_5BD-Ö½_5bc-Ö¼_5BF-Ö¿_5C1-×_5C2-ׂ_5c1-×_5C4-ׄ_64B-Ù‹_652-Ù’_64e-ÙŽ_670-Ù°_6D6-Û–_6DC-Ûœ_6d9-Û™_6DD-Û_6DF-ÛŸ_6de-Ûž_6E0-Û _6E4-Û¤_6e2-Û¢_6E7-Û§_6E8-Û¨_6e7-Û§_6EA-Ûª_6ED-Û­_6eb-Û«_0901-à¤_0903-ः_0902-ं_093C-़_093E-ा_094C-ौ_0945-ॅ_094D-à¥_0951-॑_0954-॔_0952-॒_0962-ॢ_0963-ॣ_0962-ॢ_0981-à¦_0983-ঃ_0982-ং_09BC-়_09BE-া_09BF-ি_09C0-ী_09C4-ৄ_09c2-ূ_09C7-ে_09C8-ৈ_09c7-ে_09CB-ো_09CD-à§_09cc-ৌ_09D7-ৗ_09E2-ৢ_09E3-ৣ_09e2-ৢ_0A02-ਂ_0A3C-਼_0A3E-ਾ_0A3F-ਿ_0A40-à©€_0A42-à©‚_0a41-à©_0A47-ੇ_0A48-ੈ_0a47-ੇ_0A4B-à©‹_0A4D-à©_0a4c-à©Œ_0A70-à©°_0A71-ੱ_0a70-à©°_0A81-àª_0A83-ઃ_0a82-ં_0ABC-઼_0ABE-ા_0AC5-à«…_0ac1-à«_0AC7-ે_0AC9-ૉ_0ac8-ૈ_0ACB-à«‹_0ACD-à«_0acc-à«Œ_0B01-à¬_0B03-ଃ_0b02-ଂ_0B3C-଼_0B3E-ା_0B43-à­ƒ_0b40-à­€_0B47-à­‡_0B48-à­ˆ_0b47-à­‡_0B4B-à­‹_0B4D-à­_0b4c-à­Œ_0B56-à­–_0B57-à­—_0b56-à­–_0B82-ஂ_0B83-ஃ_0b82-ஂ_0BBE-ா_0BC2-ூ_0bc0-ீ_0BC6-ெ_0BC8-ை_0bc7-ே_0BCA-ொ_0BCD-à¯_0bcb-ோ_0BD7-ௗ_0C01-à°_0C03-à°ƒ_0c02-à°‚_0C3E-à°¾_0C44-ౄ_0c41-à±_0C46-ె_0C48-ై_0c47-ే_0C4A-ొ_0C4D-à±_0c4b-ో_0C55-ౕ_0C56-à±–_0c55-ౕ_0C82-ಂ_0C83-ಃ_0c82-ಂ_0CBE-ಾ_0CC4-ೄ_0cc1-à³_0CC6-ೆ_0CC8-ೈ_0cc7-ೇ_0CCA-ೊ_0CCD-à³_0ccb-ೋ_0CD5-ೕ_0CD6-à³–_0cd5-ೕ_0D02-à´‚_0D03-à´ƒ_0d02-à´‚_0D3E-à´¾_0D43-ൃ_0d40-ീ_0D46-െ_0D48-ൈ_0d47-േ_0D4A-ൊ_0D4D-àµ_0d4b-ോ_0D57-ൗ_0E31-ั_0E34-ิ_0E3A-ฺ_0e37-ื_0E47-็_0E4E-๎_0e4a-๊_0EB1-ັ_0EB4-ິ_0EB9-ູ_0eb6-ຶ_0EBB-ົ_0EBC-ຼ_0ebb-ົ_0EC8-່_0ECD-à»_0eca-໊_0F18-༘_0F19-༙_0f18-༘_0F35-༵_0F37-༷_0F39-༹_0F3E-༾_0F3F-༿_0F71-ཱ_0F84-྄_0f7a-ེ_0F86-྆_0F8B-ྋ_0f88-ྈ_0F90-à¾_0F95-ྕ_0f92-ྒ_0F97-ྗ_0F99-ྙ_0FAD-ྭ_0fa3-ྣ_0FB1-ྱ_0FB7-ྷ_0fb4-ྴ_0FB9-ྐྵ_20D0-âƒ_20DC-⃜_20d6-⃖_20E1-⃡_302A-〪_302F-〯_302c-〬_3099-ã‚™_309A-ã‚š This is a PI target ?><book></book> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Entries
new file mode 100644
index 0000000000..869d075ad4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm88v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Repository
new file mode 100644
index 0000000000..129ff7e8d7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P88
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/ibm88v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/ibm88v01.xml
new file mode 100644
index 0000000000..61d5db305d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/ibm88v01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+<!-- This test case covers 15 legal character ranges plus
+ 0 discrete legal characters for production 88. -->
+<?NAME_30-0_39-9_34-4_660-Ù _669-Ù©_664-Ù¤_6F0-Û°_6F9-Û¹_6f4-Û´_0966-०_096F-९_096a-४_09E6-০_09EF-৯_09ea-৪_0A66-੦_0A6F-੯_0a6a-੪_0AE6-૦_0AEF-૯_0aea-૪_0B66-à­¦_0B6F-à­¯_0b6a-à­ª_0BE7-௧_0BEF-௯_0beb-௫_0C66-౦_0C6F-౯_0c6a-౪_0CE6-೦_0CEF-೯_0cea-೪_0D66-൦_0D6F-൯_0d6a-൪_0E50-à¹_0E59-๙_0e54-๔_0ED0-à»_0ED9-à»™_0ed4-à»”_0F20-༠_0F29-༩_0f24-༤ This is a PI target ?>
+]>
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Entries
new file mode 100644
index 0000000000..649aef6d96
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm88v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Repository
new file mode 100644
index 0000000000..3f82052164
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P88/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/ibm88v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/ibm88v01.xml
new file mode 100644
index 0000000000..ccdbdca30b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P88/out/ibm88v01.xml
@@ -0,0 +1 @@
+<?NAME_30-0_39-9_34-4_660-Ù _669-Ù©_664-Ù¤_6F0-Û°_6F9-Û¹_6f4-Û´_0966-०_096F-९_096a-४_09E6-০_09EF-৯_09ea-৪_0A66-੦_0A6F-੯_0a6a-੪_0AE6-૦_0AEF-૯_0aea-૪_0B66-à­¦_0B6F-à­¯_0b6a-à­ª_0BE7-௧_0BEF-௯_0beb-௫_0C66-౦_0C6F-౯_0c6a-౪_0CE6-೦_0CEF-೯_0cea-೪_0D66-൦_0D6F-൯_0d6a-൪_0E50-à¹_0E59-๙_0e54-๔_0ED0-à»_0ED9-à»™_0ed4-à»”_0F20-༠_0F29-༩_0f24-༤ This is a PI target ?><book></book> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Entries
new file mode 100644
index 0000000000..ad680e976d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm89v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Repository
new file mode 100644
index 0000000000..b5f1d31b28
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P89
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/ibm89v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/ibm89v01.xml
new file mode 100644
index 0000000000..4d71cb9b9e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/ibm89v01.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book [
+<!ELEMENT book ANY>
+<!-- This test case covers 3 legal character ranges plus
+ 8 discrete legal characters for production 89. -->
+<?NAME_0B7-·_2D0-Ë_2D1-Ë‘_387-·_640-Ù€_0E46-ๆ_0EC6-ໆ_3005-々_3031-〱_3035-〵_3033-〳_309D-ã‚_309E-ã‚ž_309d-ã‚_30FC-ー_30FE-ヾ_30fd-ヽ This is a PI target ?>
+]>
+<book/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Entries
new file mode 100644
index 0000000000..0665342204
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm89v01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Repository
new file mode 100644
index 0000000000..ec8baeb75e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/valid/P89/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/ibm89v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/ibm89v01.xml
new file mode 100644
index 0000000000..2e4c23ca21
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P89/out/ibm89v01.xml
@@ -0,0 +1 @@
+<?NAME_0B7-·_2D0-Ë_2D1-Ë‘_387-·_640-Ù€_0E46-ๆ_0EC6-ໆ_3005-々_3031-〱_3035-〵_3033-〳_309D-ã‚_309E-ã‚ž_309d-ã‚_30FC-ー_30FE-ヾ_30fd-ヽ This is a PI target ?><book></book> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Entries
new file mode 100644
index 0000000000..05e6543f13
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Entries
@@ -0,0 +1,6 @@
+/ibm_invalid.xml/1.4/Tue Dec 9 12:52:04 2003//
+/ibm_not-wf.xml/1.6/Tue Dec 9 12:52:04 2003//
+/ibm_valid.xml/1.5/Tue Dec 9 12:52:04 2003//
+D/invalid////
+D/not-wf////
+D/valid////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Repository
new file mode 100644
index 0000000000..0497ff4c6e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_invalid.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_invalid.xml
new file mode 100644
index 0000000000..eb35efc4fe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_invalid.xml
@@ -0,0 +1,35 @@
+<!--
+ (C) Copyright IBM Corp. 2003 All rights reserved.
+
+ US Government Users Restricted Rights Use, duplication or
+ disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ The program is provided "as is" without any warranty express or
+ implied, including the warranty of non-infringement and the implied
+ warranties of merchantibility and fitness for a particular purpose.
+ IBM will not be liable for any damages suffered by you as a result
+ of using the Program. In no event will IBM be liable for any
+ special, indirect or consequential damages or lost profits even if
+ IBM has been advised of the possibility of their occurrence. IBM
+ will not be liable for any third party claims against you.
+-->
+<!--
+ Configuration file for invalid XML 1.1 test cases.
+-->
+
+<TESTCASES PROFILE="IBM Invalid Conformance Tests for XML 1.1 CR October 15, 2002">
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="invalid/P46/ibm46i01.xml"
+ TYPE="invalid" ID="ibm-1-1-valid-P46-ibm46i01.xml" ENTITIES="none" SECTIONS="3.2.1, 2.2" >
+ An element with Element-Only content contains the character #x85 (NEL not a
+ whitespace character as defined by S).
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="invalid/P46/ibm46i02.xml"
+ TYPE="invalid" ID="ibm-1-1-valid-P46-ibm46i02.xml" ENTITIES="none" SECTIONS="3.2.1, 2.2" >
+ An element with Element-Only content contains the character #x2028 (LESP not a
+ whitespace character as defined by S).
+ </TEST>
+</TESTCASES>
+
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_not-wf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_not-wf.xml
new file mode 100644
index 0000000000..baa357145f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_not-wf.xml
@@ -0,0 +1,700 @@
+<!--
+ (C) Copyright IBM Corp. 2003 All rights reserved.
+
+ US Government Users Restricted Rights Use, duplication or
+ disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ The program is provided "as is" without any warranty express or
+ implied, including the warranty of non-infringement and the implied
+ warranties of merchantibility and fitness for a particular purpose.
+ IBM will not be liable for any damages suffered by you as a result
+ of using the Program. In no event will IBM be liable for any
+ special, indirect or consequential damages or lost profits even if
+ IBM has been advised of the possibility of their occurrence. IBM
+ will not be liable for any third party claims against you.
+-->
+<!--
+ Configuration file for not-wf XML 1.1 test cases.
+-->
+
+<TESTCASES PROFILE="IBM Not-WF Conformance Tests for XML 1.1 CR October 15, 2002">
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 2">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n01.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n01.xml" ENTITIES="none" SECTIONS="2.2,4.1" >
+ This test contains embeded control character 0x1.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n02.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n02.xml" ENTITIES="none" SECTIONS="2.2,4.1" >
+ This test contains embeded control character 0x2.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n03.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n03.xml" ENTITIES="none" SECTIONS="2.2,4.1" >
+ This test contains embeded control character 0x3.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n04.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n04.xml" ENTITIES="none" SECTIONS="2.2,4.1" >
+ This test contains embeded control character 0x4.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n05.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n05.xml" ENTITIES="none" SECTIONS="2.2,4.1" >
+ This test contains embeded control character 0x5.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n06.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n06.xml" ENTITIES="none" SECTIONS="2.2,4.1" >
+ This test contains embeded control character 0x6.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n07.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n07.xml" ENTITIES="none" SECTIONS="2.2,4.1" >
+ This test contains embeded control character 0x7.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n08.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n08.xml" ENTITIES="none" SECTIONS="2.2,4.1" >
+ This test contains embeded control character 0x8.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n09.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n09.xml" ENTITIES="none" SECTIONS="2.2,4.1" >
+ This test contains embeded control character 0x0.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n10.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n10.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x100.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n11.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n11.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x0B.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n12.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n12.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x0C.
+ </TEST>
+<!--
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n13.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n13.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ Entity Replacement text contains a character reference
+ to x86 and is referenced in element content.
+ </TEST>
+-->
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n14.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n14.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x0E.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n15.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n15.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x0F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n16.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n16.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x10.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n17.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n17.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x11.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n18.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n18.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x12.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n19.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n19.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x13.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n20.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n20.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x14.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n21.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n21.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x15.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n22.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n22.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x16.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n23.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n23.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x17.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n24.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n24.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x18.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n25.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n25.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x19.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n26.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n26.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x1A.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n27.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n27.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x1B.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n28.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n28.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x1C.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n29.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n29.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x1D.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n30.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n30.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x1E.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n31.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n31.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x1F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n32.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n32.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x7F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n33.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n33.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x80.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n34.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n34.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x81.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n35.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n35.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x82.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n36.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n36.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x83.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n37.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n37.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x84.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n38.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n38.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control characters x82, x83 and x84.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n39.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n39.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x86.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n40.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n40.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x87.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n41.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n41.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x88.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n42.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n42.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x89.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n43.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n43.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x8A.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n44.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n44.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x8B.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n45.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n45.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x8C.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n46.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n46.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x8D.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n47.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n47.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x8E.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n48.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n48.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x8F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n49.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n49.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x90.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n50.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n50.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x91.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n51.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n51.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x92.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n52.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n52.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x93.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n53.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n53.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x94.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n54.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n54.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x95.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n55.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n55.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x96.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n56.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n56.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x97.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n57.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n57.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x98.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n58.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n58.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x99.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n59.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n59.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x9A.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n60.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n60.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x9B.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n61.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n61.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x9C.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n62.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n62.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x9D.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n63.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n63.xml" ENTITIES="none" SECTIONS="2.2,4.1">
+ This test contains embeded control character 0x9E.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n64.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n64.xml" ENTITIES="general" SECTIONS="2.2,4.1" >
+ This test contains embeded control characters present in an external entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n65.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n65.xml" ENTITIES="general" SECTIONS="2.2,4.1" >
+ This test contains embeded control characters present in an external entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n66.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n66.xml" ENTITIES="general" SECTIONS="2.2,4.1" >
+ This test contains embeded control characters present in an external entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n67.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n67.xml" ENTITIES="none"
+ SECTIONS="2.2,4.1" >
+ This test contains embeded character 0xD800. (Invalid UTF8 sequence)
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n68.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n68.xml" ENTITIES="none"
+ SECTIONS="2.2,4.1" >
+ This test contains embeded character 0xFFFE.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n69.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n69.xml" ENTITIES="none"
+ SECTIONS="2.2,4.1" >
+ This test contains embeded character 0xFFFF.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n70.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n70.xml" ENTITIES="none"
+ SECTIONS="2.2,4.1" >
+ This test contains a reference to character 0xFFFE.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P02/ibm02n71.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P02-ibm02n71.xml" ENTITIES="none"
+ SECTIONS="2.2,4.1" >
+ This test contains a reference to character 0xFFFF.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 4">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n01.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n01.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #x300
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n02.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n02.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x333
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n03.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n03.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x369
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n04.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n04.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x37E
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n05.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n05.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x2000
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n06.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n06.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x2001
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n07.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n07.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x2002
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n08.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n08.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x2005
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n09.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n09.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x200B
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n10.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n10.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x200E
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n11.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n11.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x200F
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n12.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n12.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x2069
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n13.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n13.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x2190
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n14.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n14.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x23FF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n15.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n15.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x280F
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n16.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n16.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x2A00
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n17.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n17.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x2EDC
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n18.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n18.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x2B00
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n19.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n19.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x2BFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n20.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n20.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0x3000
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n21.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n21.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0xD800
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n22.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n22.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0xD801
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n23.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n23.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0xDAFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n24.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n24.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0xDFFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n25.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n25.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0xEFFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n26.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n26.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0xF1FF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n27.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n27.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0xF8FF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04/ibm04n28.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04-ibm04n28.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameStartChar: #0xFFFFF
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 4a">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an01.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an01.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #xB8
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an02.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an02.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0xA1
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an03.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an03.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0xAF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an04.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an04.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x37E
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an05.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an05.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x2000
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an06.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an06.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x2001
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an07.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an07.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x2002
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an08.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an08.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x2005
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an09.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an09.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x200B
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an10.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an10.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x200E
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an11.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an11.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x2038
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an12.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an12.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x2041
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an13.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an13.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x2190
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an14.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an14.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x23FF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an15.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an15.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x280F
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an16.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an16.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x2A00
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an17.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an17.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0xFDD0
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an18.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an18.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0xFDEF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an19.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an19.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x2FFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an20.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an20.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0x3000
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an21.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an21.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0xD800
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an22.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an22.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0xD801
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an23.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an23.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0xDAFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an24.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an24.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0xDFFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an25.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an25.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0xEFFF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an26.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an26.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0xF1FF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an27.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an27.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0xF8FF
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P04a/ibm04an28.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P04a-ibm04an28.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal NameChar: #0xFFFFF
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 5">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P05/ibm05n01.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P05-ibm05n01.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal Name containing #0x0B
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P05/ibm05n02.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P05-ibm05n02.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal Name containing #0x300
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P05/ibm05n03.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P05-ibm05n03.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal Name containing #0x36F
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P05/ibm05n04.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P05-ibm05n04.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal Name containing #0x203F
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P05/ibm05n05.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P05-ibm05n05.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal Name containing #x2040
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P05/ibm05n06.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P05-ibm05n06.xml" ENTITIES="none" SECTIONS="2.3" >
+ Tests an element with an illegal Name containing #0xB7
+ </TEST>
+</TESTCASES>
+
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 77">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n01.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n01.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and that of the external dtd 1.0.
+ The external dtd contains the invalid XML1.1 but valid XML 1.0 character #x7F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n02.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n02.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and that of the external dtd 1.0.
+ The external dtd contains a comment with the invalid XML1.1 but valid XML 1.0
+ character #x80.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n03.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n03.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and that of the external dtd 1.0.
+ The external dtd contains a PI with the invalid XML1.1 but valid XML 1.0
+ character #x9F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n04.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n04.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and that of the external entity 1.0.
+ The external entity the contains invalid XML1.1 but valid XML 1.0 character #x89.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n05.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n05.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and that of the external entity 1.0.
+ The external entity contains the invalid XML1.1 but valid XML 1.0 character #x94.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n06.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n06.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and that of the external entity 1.0.
+ The external entity contains the invalid XML1.1 but valid XML 1.0 character #x9F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n07.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n07.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a textDecl. The external entity contains the invalid XML1.1 but valid XML 1.0
+ character #x7F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n08.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n08.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a VersionNum in the textDecl. The external entity contains the invalid XML1.1 but
+ valid XML 1.0 character #x9B.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n09.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n09.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a textDecl. The external entity contains the invalid XML1.1 but valid XML 1.0
+ character #x8D.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n10.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n10.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a VersionNum in the textDecl. The external entity contains the invalid XML 1.1 but
+ valid XML 1.0 character #x84.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n11.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n11.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a textDecl. The external entity contains the invalid XML 1.1 but
+ valid XML 1.0 character #x88.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n12.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n12.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a textDecl. The external entity contains the invalid XML 1.1 but
+ valid XML 1.0 character #x8E.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n13.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n13.xml" ENTITIES="none" SECTIONS="4.3.4" >
+ The VersionNum of the primary document entity is 1.0 and that of the external
+ dtd is 1.0. The external dtd contains an external entity whose VersionNum is 1.1.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n14.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n14.xml" ENTITIES="none" SECTIONS="4.3.4" >
+ The VersionNum of the primary document entity is 1.1 and that of the external
+ dtd is 1.0. The external dtd contains an element declaration with an invalid
+ XML 1.1 and 1.0 name.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n15.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n15.xml" ENTITIES="none" SECTIONS="4.3.4" >
+ The VersionNum of the primary document entity is 1.1 and testDecl of the external
+ dtd is absent. The external dtd contains an external entity whose VersionNum is
+ 1.1 containing a valid XML1.0 but an invalid XML 1.1 character #x7F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n16.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n16.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is 1.0 and VersioNum of the external
+ entity is absent. The replacement text of the entity contains an element followed
+ by the valid XML 1.1 of line character NEL #x85 in its empty elem tag.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n17.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n17.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is absent and that of the external
+ entity is 1.0. The textDecl in the external entity contains an invalid XML1.0
+ but valid XML 1.1 enf of line character NEL #x85.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n18.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n18.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is absent and that of the external
+ entity is 1.0. The textDecl in the external entity contains an invalid XML1.0
+ but valid XML 1.1 of line character Unicode line separator #x2028.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n19.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n19.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is 1.1 and that of the external
+ dtd is absent. The external dtd contains an external entity whose VersionNum is
+ absent and it contains a valid XML 1.0 but an invalid XML 1.1 character #x94.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n20.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n20.xml" ENTITIES="general" SECTIONS="4.3.4">
+ The VersionNum of the primary document entity is 1.1 and that of the external
+ dtd is 1.1. The external dtd contains an external entity whose VersionNum is
+ absent and it contains a valid XML 1.0 but an invalid XML 1.1 character #x8F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="not-wf/P77/ibm77n21.xml"
+ TYPE="not-wf" ID="ibm-1-1-not-wf-P77-ibm77n21.xml" ENTITIES="both" SECTIONS="4.3.4" >
+ The VersionNum of the primary document entity is 1.1 and the texlDecl of the
+ external dtd is absent. The external dtd contains a reference to an external
+ parameter entity whose VersionNum is absent from the textDecl and it contains
+ an invalid XML 1.1 character #x8F.
+ </TEST>
+</TESTCASES>
+
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_valid.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_valid.xml
new file mode 100644
index 0000000000..bc0baf7262
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/ibm_valid.xml
@@ -0,0 +1,332 @@
+<!--
+ (C) Copyright IBM Corp. 2003 All rights reserved.
+
+ US Government Users Restricted Rights Use, duplication or
+ disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ The program is provided "as is" without any warranty express or
+ implied, including the warranty of non-infringement and the implied
+ warranties of merchantibility and fitness for a particular purpose.
+ IBM will not be liable for any damages suffered by you as a result
+ of using the Program. In no event will IBM be liable for any
+ special, indirect or consequential damages or lost profits even if
+ IBM has been advised of the possibility of their occurrence. IBM
+ will not be liable for any third party claims against you.
+-->
+<TESTCASES PROFILE="IBM Valid Conformance Tests for XML 1.1 CR October 15, 2002">
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 2">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P02/ibm02v01.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P02-ibm02v01.xml" ENTITIES="none" SECTIONS="2.2" >
+ This test case covers legal character ranges plus discrete legal characters
+ for production 02 of the XML1.1 sepcification.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P02/ibm02v02.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P02-ibm02v02.xml" ENTITIES="none" SECTIONS="2.2,4.1" >
+ This test case covers control characters x1 to x1F and x7F to x9F
+ which should only appear as character references.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P02/ibm02v03.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P02-ibm02v03.xml" ENTITIES="none" SECTIONS="2.2,4.1" >
+ This test case covers control characters x1 to x1F and x7F to x9F
+ which appear as character references as an entity's replacement text.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P02/ibm02v04.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P02-ibm02v04.xml" ENTITIES="none" SECTIONS="2.2,4.1" >
+ This test case contains embeded whitespace characters
+ some form the range 1 - 1F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P02/ibm02v05.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P02-ibm02v05.xml" ENTITIES="none" SECTIONS="2.2,4.1" >
+ This test case contains valid char references that match the char production.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P02/ibm02v06.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P02-ibm02v06.xml" ENTITIES="general" SECTIONS="2.2,4.1" >
+ This test case contains valid char references in the CDATA section, comment and
+ processing instruction of an external entity that match the char production.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 3">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v01.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v01.xml" ENTITIES="general" SECTIONS="2.11"
+ OUTPUT="valid/P03/out/ibm03v01.xml" >
+ The two character sequence #x0D #x85 in an external entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v02.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v02.xml" ENTITIES="general" SECTIONS="2.11"
+ OUTPUT="valid/P03/out/ibm03v02.xml" >
+ The single character sequence #x85 in an external entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v03.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v03.xml" ENTITIES="general" SECTIONS="2.11"
+ OUTPUT="valid/P03/out/ibm03v03.xml" >
+ The two character sequence #x0D #x85 in an external entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v04.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v04.xml" ENTITIES="general" SECTIONS="2.11"
+ OUTPUT="valid/P03/out/ibm03v04.xml" >
+ The single character sequence #x85 in an external entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v05.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v05.xml" ENTITIES="none" SECTIONS="2.11"
+ OUTPUT="valid/P03/out/ibm03v05.xml" >
+ The two character sequence #x0D #x85 in a document entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v06.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v06.xml" ENTITIES="none" SECTIONS="2.11"
+ OUTPUT="valid/P03/out/ibm03v06.xml" >
+ The single character sequence #x85 in a document entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v07.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v07.xml" ENTITIES="none" SECTIONS="2.11"
+ OUTPUT="valid/P03/out/ibm03v07.xml" >
+ The single character sequence #x2028 in a document entity must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v08.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v08.xml" ENTITIES="none" SECTIONS="2.11"
+ OUTPUT="valid/P03/out/ibm03v08.xml" >
+ The single character sequence #x85 in the XMLDecl must be normalized to a
+ single newline.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P03/ibm03v09.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P03-ibm03v09.xml" ENTITIES="general" SECTIONS="2.11"
+ OUTPUT="valid/P03/out/ibm03v09.xml" >
+ The single character sequence #x2028 in the XMLDecl must be normalized to a
+ single newline. (This test is questionable)
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 4">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P04/ibm04v01.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P04-ibm04v01.xml" ENTITIES="none" SECTIONS="2.3" NAMESPACE="no">
+ This test case covers legal NameStartChars character ranges plus discrete legal
+ characters for production 04.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 4a">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P04a/ibm04av01.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P04-ibm04av01.xml" ENTITIES="none" SECTIONS="2.3" >
+ This test case covers legal NameChars character ranges plus discrete legal
+ characters for production 04a.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 5">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P05/ibm05v01.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P05-ibm05v01.xml" ENTITIES="none" SECTIONS="2.3" NAMESPACE="no">
+ This test case covers legal Element Names as per production 5.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P05/ibm05v02.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P05-ibm05v02.xml" ENTITIES="none" SECTIONS="2.3" NAMESPACE="no">
+ This test case covers legal PITarget (Names) as per production 5.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P05/ibm05v03.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P05-ibm05v03.xml" ENTITIES="none" SECTIONS="2.3" NAMESPACE="no">
+ This test case covers legal Attribute (Names) as per production 5.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P05/ibm05v04.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P05-ibm05v04.xml" ENTITIES="none" SECTIONS="2.3" >
+ This test case covers legal ID/IDREF (Names) as per production 5.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P05/ibm05v05.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P05-ibm05v05.xml" ENTITIES="none" SECTIONS="2.3" NAMESPACE="no">
+ This test case covers legal ENTITY (Names) as per production 5.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 7">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P07/ibm07v01.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P047-ibm07v01.xml" ENTITIES="none" SECTIONS="2.3" >
+ This test case covers legal NMTOKEN Name character ranges plus discrete legal
+ characters for production 7.
+ </TEST>
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML Conformance Test Suite - Production 77">
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v01.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v01.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ DTD is 1.0. The character #xC0 which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v02.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v02.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ DTD is 1.0. The character #x1FFF which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v03.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v03.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ DTD is 1.0. The character #xF901 which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v04.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v04.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ entity is 1.0. The character #xD6 which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v05.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v05.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ entity is 1.0. The character #x1FFF which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v06.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v06.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ entity is 1.0. The character #xF901 which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v07.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v07.xml" ENTITIES="none" SECTIONS="4.3.4" >
+ The VersionNum of the document and external dtd is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #xD8.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v08.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v08.xml" ENTITIES="none" SECTIONS="4.3.4" >
+ The VersionNum of the document and external dtd is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #x1FFF.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v09.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v09.xml" ENTITIES="none" SECTIONS="4.3.4" >
+ The VersionNum of the document and external dtd is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #xF901.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v10.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v10.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document and external entity is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #xF6.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v11.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v11.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document and external entity is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #x1FFF.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v12.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v12.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document and external entity is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #xF901.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v13.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v13.xml" ENTITIES="none" SECTIONS="4.3.4" >
+ The VersionNum of the document entity is 1.1 but the external dtd does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #xF8.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v14.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v14.xml" ENTITIES="none" SECTIONS="4.3.4" >
+ The VersionNum of the document entity is 1.1 but the external dtd does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #x1FFF.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v15.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v15.xml" ENTITIES="none" SECTIONS="4.3.4" >
+ The VersionNum of the document entity is 1.1 but the external dtd does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #xF901.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v16.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v16.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document entity is 1.1 but the external entity does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #x2FF.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v17.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v17.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document entity is 1.1 but the external entity does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #x1FFF.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v18.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v18.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document entity is 1.1 but the external entity does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #xF901.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v19.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v19.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document and external dtd is 1.1. The replacement
+ text of an entity declared in the external DTD contains a reference to the
+ character #x7F. This entity is not referenced in the document entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v20.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v20.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document and external dtd is 1.1. The replacement
+ text of an entity declared in the external DTD contains a reference to the
+ character #x80. This entity is not referenced in the document entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v21.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v21.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document and external dtd is 1.1. The replacement
+ text of an entity declared in the external DTD contains a reference to the
+ character #x9F. This entity is not referenced in the document entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v22.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v22.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document and the external entity is 1.1. The entity contains
+ a reference to the character #x7F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v23.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v23.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document and the external entity is 1.1. The entity contains
+ a reference to the character #x80.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v24.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v24.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document and the external entity is 1.1. The entity contains
+ a reference to the character #x9F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v25.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v25.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ DTD. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x7F, #x8F. This entity is not referenced in the
+ document entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v26.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v26.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ DTD. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x80, #x90. This entity is not referenced in the
+ document entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v27.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v27.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ DTD. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x81, #x9F. This entity is not referenced in the
+ document entity.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v28.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v28.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ entity. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x7F, #x80, #x9F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v29.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v29.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ entity. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x85, #x8F.
+ </TEST>
+ <TEST VERSION="1.1" RECOMMENDATION="XML1.1" URI="valid/P77/ibm77v30.xml"
+ TYPE="valid" ID="ibm-1-1-valid-P77-ibm77v30.xml" ENTITIES="general" SECTIONS="4.3.4" >
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ entity. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x1, #x7F.
+ </TEST>
+</TESTCASES>
+
+</TESTCASES>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Entries
new file mode 100644
index 0000000000..b5b4053997
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Entries
@@ -0,0 +1 @@
+D/P46////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Repository
new file mode 100644
index 0000000000..07e8a5f76b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Entries
new file mode 100644
index 0000000000..036518e0f5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Entries
@@ -0,0 +1,3 @@
+/ibm46i01.xml/1.2/Mon Nov 10 14:36:00 2003//
+/ibm46i02.xml/1.2/Mon Nov 10 14:36:00 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Repository
new file mode 100644
index 0000000000..f9a1cacca8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i01.xml
new file mode 100644
index 0000000000..4acbdc8c2b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i01.xml
@@ -0,0 +1,11 @@
+<?xml version="1.1"?>
+<!DOCTYPE root [
+<!ENTITY int "&#x85;">
+<!ELEMENT root (a)>
+<!ELEMENT a EMPTY>
+]>
+<!-- Invalid because NEL and LSEP are not allowed as whitespace. -->
+<root>&int;
+ <a/>
+</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i02.xml
new file mode 100644
index 0000000000..81f503cc66
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/invalid/P46/ibm46i02.xml
@@ -0,0 +1,11 @@
+<?xml version="1.1"?>
+<!DOCTYPE root [
+<!ENTITY int "&#x2028;">
+<!ELEMENT root (a)>
+<!ELEMENT a EMPTY>
+]>
+<!-- Invalid because NEL and LSEP are not allowed as whitespace. -->
+<root>&int;
+ <a/>
+</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Entries
new file mode 100644
index 0000000000..c21e7230fa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Entries
@@ -0,0 +1,5 @@
+D/P02////
+D/P04////
+D/P04a////
+D/P05////
+D/P77////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Repository
new file mode 100644
index 0000000000..98b18ce822
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Entries
new file mode 100644
index 0000000000..463f1c427e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Entries
@@ -0,0 +1,75 @@
+/ibm02n01.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n02.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n03.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n04.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n05.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n06.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n07.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n08.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n09.xml/1.2/Mon Nov 10 14:40:08 2003//
+/ibm02n10.xml/1.2/Mon Nov 10 14:41:53 2003//
+/ibm02n11.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n12.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n13.xml/1.2/Mon Nov 10 14:42:47 2003//
+/ibm02n14.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n15.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n16.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n17.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n18.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n19.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n20.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n21.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n22.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n23.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n24.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n25.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n26.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n27.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n28.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n29.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n30.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n31.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n32.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n33.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n34.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n35.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n36.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n37.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n38.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n39.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n40.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n41.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n42.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n43.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n44.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n45.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n46.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n47.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n48.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n49.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n50.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n51.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n52.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n53.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n54.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n55.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n56.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n57.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n58.xml/1.2/Mon Nov 10 14:44:10 2003//
+/ibm02n59.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n60.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n61.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n62.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n63.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n64.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n64.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n65.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n65.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n66.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n66.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n67.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n68.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n69.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n70.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02n71.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Repository
new file mode 100644
index 0000000000..3190d3423b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n01.xml
new file mode 100644
index 0000000000..bcdc4c23a5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n01.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x1  -->
+<?Bad PI 0x1  ?>
+<root><![CDATA[ 0x1 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n02.xml
new file mode 100644
index 0000000000..7720373ad9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n02.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x2  -->
+<?Bad PI 0x2  ?>
+<root><![CDATA[ 0x2 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n03.xml
new file mode 100644
index 0000000000..fc9a469fe3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n03.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x3  -->
+<?Bad PI 0x3  ?>
+<root><![CDATA[ 0x3 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n04.xml
new file mode 100644
index 0000000000..f18bcb3e50
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n04.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x4  -->
+<?Bad PI 0x4  ?>
+<root><![CDATA[ 0x4 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n05.xml
new file mode 100644
index 0000000000..f8e7e35e6f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n05.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x5  -->
+<?Bad PI 0x5  ?>
+<root><![CDATA[ 0x5 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n06.xml
new file mode 100644
index 0000000000..c83d4f3039
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n06.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x6  -->
+<?Bad PI 0x6  ?>
+<root><![CDATA[ 0x6 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n07.xml
new file mode 100644
index 0000000000..fae131ea7d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n07.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x7  -->
+<?Bad PI 0x7  ?>
+<root><![CDATA[ 0x7 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n08.xml
new file mode 100644
index 0000000000..7a687964cb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n08.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x8  -->
+<?Bad PI 0x8  ?>
+<root><![CDATA[ 0x8 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n09.xml
new file mode 100644
index 0000000000..f023fe7eea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n09.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n10.xml
new file mode 100644
index 0000000000..cc010bafab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n10.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE root [
+ <!ELEMENT root ANY>
+ <!ENTITY ent "BAD">
+]>
+<root></root>
+<!-- Entity Replacement text contains an embeded control character x12 -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n11.xml
new file mode 100644
index 0000000000..b1dac95bfa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n11.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0xb -->
+<?Bad PI 0xb ?>
+<root><![CDATA[ 0xb ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n12.xml
new file mode 100644
index 0000000000..4a1e578930
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n12.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0xc -->
+<?Bad PI 0xc ?>
+<root><![CDATA[ 0xc ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n13.xml
new file mode 100644
index 0000000000..5d818d13ec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n13.xml
@@ -0,0 +1,8 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE root [
+ <!ELEMENT root ANY>
+ <!ENTITY ent "BAD&#x86;">
+]>
+<root>&ent;</root>
+<!-- Entity Replacement text contains a character reference
+to x86 and is referenced in element content -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n14.xml
new file mode 100644
index 0000000000..b5fe5b26c4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n14.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0xe  -->
+<?Bad PI 0xe  ?>
+<root><![CDATA[ 0xe ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n15.xml
new file mode 100644
index 0000000000..758f373298
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n15.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0xf  -->
+<?Bad PI 0xf  ?>
+<root><![CDATA[ 0xf ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n16.xml
new file mode 100644
index 0000000000..aa3b522c00
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n16.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x10  -->
+<?Bad PI 0x10  ?>
+<root><![CDATA[ 0x10 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n17.xml
new file mode 100644
index 0000000000..75eb88798c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n17.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x11  -->
+<?Bad PI 0x11  ?>
+<root><![CDATA[ 0x11 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n18.xml
new file mode 100644
index 0000000000..8efbc86433
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n18.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x12  -->
+<?Bad PI 0x12  ?>
+<root><![CDATA[ 0x12 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n19.xml
new file mode 100644
index 0000000000..b5536e084a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n19.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x13  -->
+<?Bad PI 0x13  ?>
+<root><![CDATA[ 0x13 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n20.xml
new file mode 100644
index 0000000000..7ca323bad5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n20.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x14  -->
+<?Bad PI 0x14  ?>
+<root><![CDATA[ 0x14 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n21.xml
new file mode 100644
index 0000000000..95a8c9be26
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n21.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x15  -->
+<?Bad PI 0x15  ?>
+<root><![CDATA[ 0x15 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n22.xml
new file mode 100644
index 0000000000..3df6b01f38
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n22.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x16  -->
+<?Bad PI 0x16  ?>
+<root><![CDATA[ 0x16 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n23.xml
new file mode 100644
index 0000000000..53fc635301
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n23.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x17  -->
+<?Bad PI 0x17  ?>
+<root><![CDATA[ 0x17 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n24.xml
new file mode 100644
index 0000000000..c120acc370
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n24.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x18  -->
+<?Bad PI 0x18  ?>
+<root><![CDATA[ 0x18 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n25.xml
new file mode 100644
index 0000000000..a52e8bee77
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n25.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x19  -->
+<?Bad PI 0x19  ?>
+<root><![CDATA[ 0x19 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n26.xml
new file mode 100644
index 0000000000..ad1c0ebb99
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n26.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x1a  -->
+<?Bad PI 0x1a  ?>
+<root><![CDATA[ 0x1a ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n27.xml
new file mode 100644
index 0000000000..a3dbf378da
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n27.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x1b  -->
+<?Bad PI 0x1b  ?>
+<root><![CDATA[ 0x1b ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n28.xml
new file mode 100644
index 0000000000..cdf1c82955
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n28.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x1c  -->
+<?Bad PI 0x1c  ?>
+<root><![CDATA[ 0x1c ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n29.xml
new file mode 100644
index 0000000000..0e077c8fd4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n29.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x1d  -->
+<?Bad PI 0x1d  ?>
+<root><![CDATA[ 0x1d ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n30.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n30.xml
new file mode 100644
index 0000000000..3b736dac0c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n30.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x1e  -->
+<?Bad PI 0x1e  ?>
+<root><![CDATA[ 0x1e ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n31.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n31.xml
new file mode 100644
index 0000000000..51bc907702
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n31.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x1f  -->
+<?Bad PI 0x1f  ?>
+<root><![CDATA[ 0x1f ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n32.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n32.xml
new file mode 100644
index 0000000000..fc98d2df57
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n32.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x7f  -->
+<?Bad PI 0x7f  ?>
+<root><![CDATA[ 0x7f ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n33.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n33.xml
new file mode 100644
index 0000000000..062a5ff101
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n33.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x80 € -->
+<?Bad PI 0x80 € ?>
+<root>€<![CDATA[ 0x80 €]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n34.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n34.xml
new file mode 100644
index 0000000000..fb7e5a9f0f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n34.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x81 Â -->
+<?Bad PI 0x81 Â ?>
+<root>Â<![CDATA[ 0x81 Â]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n35.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n35.xml
new file mode 100644
index 0000000000..e97969161e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n35.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x82 ‚ -->
+<?Bad PI 0x82 ‚ ?>
+<root>‚<![CDATA[ 0x82 ‚]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n36.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n36.xml
new file mode 100644
index 0000000000..e7677574c2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n36.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x83 ƒ -->
+<?Bad PI 0x83 ƒ ?>
+<root><![CDATA[ 0x83 ƒ]]>ƒ</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n37.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n37.xml
new file mode 100644
index 0000000000..fbdb74a289
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n37.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x84 „ -->
+<?Bad PI 0x84 „ ?>
+<root>„<![CDATA[ 0x84 „]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n38.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n38.xml
new file mode 100644
index 0000000000..536103e3f1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n38.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x82 ‚ -->
+<?Bad PI 0x83 ƒ ?>
+<root><![CDATA[ 0x84 „]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n39.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n39.xml
new file mode 100644
index 0000000000..f7bdd57908
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n39.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x86 † -->
+<?Bad PI 0x86 † ?>
+<root><![CDATA[ 0x86 †]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n40.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n40.xml
new file mode 100644
index 0000000000..7c9ac88aa8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n40.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x87 ‡ -->
+<?Bad PI 0x87 ‡ ?>
+<root>‡<![CDATA[ 0x87 ‡]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n41.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n41.xml
new file mode 100644
index 0000000000..ab1e1f6031
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n41.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x88 ˆ -->
+<?Bad PI 0x88 ˆ ?>
+<root><![CDATA[ 0x88 ˆ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n42.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n42.xml
new file mode 100644
index 0000000000..a1833a0900
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n42.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x89 ‰ -->
+<?Bad PI 0x89 ‰ ?>
+<root>‰<![CDATA[ 0x89 ‰]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n43.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n43.xml
new file mode 100644
index 0000000000..e166e5b5e8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n43.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x8a Š -->
+<?Bad PI 0x8a Š ?>
+<root>Š<![CDATA[ 0x8a Š]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n44.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n44.xml
new file mode 100644
index 0000000000..e66f0c7747
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n44.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x8b ‹ -->
+<?Bad PI 0x8b ‹ ?>
+<root>‹<![CDATA[ 0x8b ‹]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n45.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n45.xml
new file mode 100644
index 0000000000..5bd0b88709
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n45.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x8c Π-->
+<?Bad PI 0x8c Π?>
+<root>Œ<![CDATA[ 0x8c Œ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n46.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n46.xml
new file mode 100644
index 0000000000..2fb7f40cba
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n46.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x8d  -->
+<?Bad PI 0x8d  ?>
+<root>Â<![CDATA[ 0x8d Â]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n47.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n47.xml
new file mode 100644
index 0000000000..153cf1627a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n47.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x8e ÂŽ -->
+<?Bad PI 0x8e ÂŽ ?>
+<root>ÂŽ<![CDATA[ 0x8e ÂŽ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n48.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n48.xml
new file mode 100644
index 0000000000..37b08487ec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n48.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x8f  -->
+<?Bad PI 0x8f  ?>
+<root>Â<![CDATA[ 0x8f Â]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n49.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n49.xml
new file mode 100644
index 0000000000..6c7abff6b8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n49.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x90 Â -->
+<?Bad PI 0x90 Â ?>
+<root>Â<![CDATA[ 0x90 Â]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n50.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n50.xml
new file mode 100644
index 0000000000..bb1408e389
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n50.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x91 ‘ -->
+<?Bad PI 0x91 ‘ ?>
+<root>‘<![CDATA[ 0x91 ‘]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n51.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n51.xml
new file mode 100644
index 0000000000..b02eb5a73a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n51.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x92 Â’ -->
+<?Bad PI 0x92 Â’ ?>
+<root>Â’<![CDATA[ 0x92 Â’]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n52.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n52.xml
new file mode 100644
index 0000000000..ef4445db4f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n52.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x93 “ -->
+<?Bad PI 0x93 “ ?>
+<root>“<![CDATA[ 0x93 “]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n53.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n53.xml
new file mode 100644
index 0000000000..d4f0fba63d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n53.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x94 ” -->
+<?Bad PI 0x94 ” ?>
+<root>”<![CDATA[ 0x94 ”]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n54.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n54.xml
new file mode 100644
index 0000000000..9b2958575d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n54.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x95 • -->
+<?Bad PI 0x95 • ?>
+<root>•<![CDATA[ 0x95 •]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n55.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n55.xml
new file mode 100644
index 0000000000..c155253b78
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n55.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x96 – -->
+<?Bad PI 0x96 – ?>
+<root>–<![CDATA[ 0x96 –]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n56.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n56.xml
new file mode 100644
index 0000000000..aa38ecd70c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n56.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x97 — -->
+<?Bad PI 0x97 — ?>
+<root>—<![CDATA[ 0x97 —]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n57.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n57.xml
new file mode 100644
index 0000000000..27131260ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n57.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x98 ˜ -->
+<?Bad PI 0x98 ˜ ?>
+<root>˜<![CDATA[ 0x98 ˜]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n58.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n58.xml
new file mode 100644
index 0000000000..509ee430a1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n58.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x99 ™ -->
+<?Bad PI 0x99 ™ ?>
+<root>Á£<![CDATA[ 0x99 ™ ]]></root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n59.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n59.xml
new file mode 100644
index 0000000000..2af97c9518
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n59.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x9a š -->
+<?Bad PI 0x9a š ?>
+<root>š<![CDATA[ 0x9a š]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n60.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n60.xml
new file mode 100644
index 0000000000..1e7058a93a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n60.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x9b › -->
+<?Bad PI 0x9b › ?>
+<root>›<![CDATA[ 0x9b ›]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n61.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n61.xml
new file mode 100644
index 0000000000..91fed24453
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n61.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x9c œ -->
+<?Bad PI 0x9c œ ?>
+<root>œ<![CDATA[ 0x9c œ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n62.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n62.xml
new file mode 100644
index 0000000000..507a7049b7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n62.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x9d  -->
+<?Bad PI 0x9d  ?>
+<root>Â<![CDATA[ 0x9d Â]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n63.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n63.xml
new file mode 100644
index 0000000000..75df2bd7ed
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n63.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0x9e ž -->
+<?Bad PI 0x9e ž ?>
+<root>ž<![CDATA[ 0x9e ž]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.ent
new file mode 100644
index 0000000000..e204c6b434
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.ent
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Bad Comment 0x0x1: , 0x2: , 0x3: , 0x4: , 0x5: , 0x6: , 0x7: , 0x8: , 0x9: , 0xa:
+, 0xb: , 0xc: , 0xd: , 0xe: , 0xf: , 0x10: , 0x11: , 0x12: , 0x13: , 0x14: , 0x15: , 0x16: , 0x17: , 0x18: , 0x19: , 0x1a: , 0x1b: , 0x1c: , 0x1d: , 0x1e: , 0x1f: , 0x7f: , 0x80: €, 0x81: Â, 0x82: ‚, 0x83: ƒ, 0x84: „, 0x85: Â…, 0x86: †, 0x87: ‡, 0x88: ˆ, 0x89: ‰, 0x8a: Š, 0x8b: ‹, 0x8c: ÂŒ, 0x8d: Â, 0x8e: ÂŽ, 0x8f: Â, 0x90: Â, 0x91: ‘, 0x92: Â’, 0x93: “, 0x94: ”, 0x95: •, 0x96: –, 0x97: —, 0x98: ˜, 0x0: , 0x9a: š, 0x9b: ›, 0x9c: Âœ, 0x9d: Â, 0x9e: ž, 0x9f: Ÿ, -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.xml
new file mode 100644
index 0000000000..b03071ef30
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n64.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ENTITY e SYSTEM "ibm02n64.ent">
+]>
+ <root>&e;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.ent
new file mode 100644
index 0000000000..5bd1390a80
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.ent
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?BADPI 0x0x1: , 0x2: , 0x3: , 0x4: , 0x5: , 0x6: , 0x7: , 0x8: , 0x9: , 0xa:
+, 0xb: , 0xc: , 0xd: , 0xe: , 0xf: , 0x10: , 0x11: , 0x12: , 0x13: , 0x14: , 0x15: , 0x16: , 0x17: , 0x18: , 0x19: , 0x1a: , 0x1b: , 0x1c: , 0x1d: , 0x1e: , 0x1f: , 0x7f: , 0x80: €, 0x81: Â, 0x82: ‚, 0x83: ƒ, 0x84: „, 0x85: Â…, 0x86: †, 0x87: ‡, 0x88: ˆ, 0x89: ‰, 0x8a: Š, 0x8b: ‹, 0x8c: ÂŒ, 0x8d: Â, 0x8e: ÂŽ, 0x8f: Â, 0x90: Â, 0x91: ‘, 0x92: Â’, 0x93: “, 0x94: ”, 0x95: •, 0x96: –, 0x97: —, 0x98: ˜, 0x0: , 0x9a: š, 0x9b: ›, 0x9c: Âœ, 0x9d: Â, 0x9e: ž, 0x9f: Ÿ, ?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.xml
new file mode 100644
index 0000000000..56c25eb864
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n65.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ENTITY e SYSTEM "ibm02n65.ent">
+]>
+ <root>&e;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.ent
new file mode 100644
index 0000000000..eced60a5a0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.ent
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+![CDATA[ 0x0x1: , 0x2: , 0x3: , 0x4: , 0x5: , 0x6: , 0x7: , 0x8: , 0x9: , 0xa:
+, 0xb: , 0xc: , 0xd: , 0xe: , 0xf: , 0x10: , 0x11: , 0x12: , 0x13: , 0x14: , 0x15: , 0x16: , 0x17: , 0x18: , 0x19: , 0x1a: , 0x1b: , 0x1c: , 0x1d: , 0x1e: , 0x1f: , 0x7f: , 0x80: €, 0x81: Â, 0x82: ‚, 0x83: ƒ, 0x84: „, 0x85: Â…, 0x86: †, 0x87: ‡, 0x88: ˆ, 0x89: ‰, 0x8a: Š, 0x8b: ‹, 0x8c: ÂŒ, 0x8d: Â, 0x8e: ÂŽ, 0x8f: Â, 0x90: Â, 0x91: ‘, 0x92: Â’, 0x93: “, 0x94: ”, 0x95: •, 0x96: –, 0x97: —, 0x98: ˜, 0x0: , 0x9a: š, 0x9b: ›, 0x9c: Âœ, 0x9d: Â, 0x9e: ž, 0x9f: Ÿ, ]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.xml
new file mode 100644
index 0000000000..43cfa46291
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n66.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ENTITY e SYSTEM "ibm02n66.ent">
+]>
+ <root>&e;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n67.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n67.xml
new file mode 100644
index 0000000000..3f235d8ab7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n67.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0xD800 í €-->
+<?Bad PI 0xD800 í € ?>
+<root>í €<![CDATA[ 0xD800 ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n68.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n68.xml
new file mode 100644
index 0000000000..5b0b460a39
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n68.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0xFFFE ￾-->
+<?Bad PI 0xFFFE ￾ ?>
+<root>￾<![CDATA[ 0xFFFE ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n69.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n69.xml
new file mode 100644
index 0000000000..07a1840298
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n69.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0xFFFF ï¿¿-->
+<?Bad PI 0xFFFF ï¿¿ ?>
+<root>ï¿¿<![CDATA[ 0xFFFF ï¿¿ ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n70.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n70.xml
new file mode 100644
index 0000000000..1863add553
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n70.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0xFFFE &#xFFFE;-->
+<?Bad PI 0xFFFE &#xFFFE; ?>
+<root>&#xFFFE;<![CDATA[ 0xFFFE &#xFFFE; ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n71.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n71.xml
new file mode 100644
index 0000000000..c5c8997938
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P02/ibm02n71.xml
@@ -0,0 +1,4 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!-- Bad Comment 0xFFFF &#xFFFF;-->
+<?Bad PI 0xFFFF &#xFFFF; ?>
+<root>&#xFFFF;<![CDATA[ 0xFFFF &#xFFFF; ]]></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Entries
new file mode 100644
index 0000000000..43a8342165
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Entries
@@ -0,0 +1,29 @@
+/ibm04n01.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n02.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n03.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n04.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n05.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n06.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n07.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n08.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n09.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n10.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n11.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n12.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n13.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n14.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n15.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n16.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n17.xml/1.2/Thu Nov 13 13:03:24 2003//
+/ibm04n18.xml/1.2/Thu Nov 13 13:03:24 2003//
+/ibm04n19.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n20.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n21.xml/1.2/Mon Nov 10 14:49:23 2003//
+/ibm04n22.xml/1.2/Mon Nov 10 14:49:23 2003//
+/ibm04n23.xml/1.2/Mon Nov 10 14:49:24 2003//
+/ibm04n24.xml/1.2/Mon Nov 10 14:49:24 2003//
+/ibm04n25.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n26.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n27.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04n28.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Repository
new file mode 100644
index 0000000000..77ef3f2e7b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n01.xml
new file mode 100644
index 0000000000..4c44ab644d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n01.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE ̀IllegalNameStartChar [
+<!ELEMENT ̀IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #x300 -->
+<Ì€IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n02.xml
new file mode 100644
index 0000000000..0b3c346476
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n02.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE ̳IllegalNameStartChar [
+<!ELEMENT ̳IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar P4: #0x333 -->
+<̳IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n03.xml
new file mode 100644
index 0000000000..bda1b60fd0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n03.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE Í©IllegalNameStartChar [
+<!ELEMENT Í©IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0x369 -->
+<Í©IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n04.xml
new file mode 100644
index 0000000000..f562a9bebf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n04.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE ;IllegalNameStartChar [
+<!ELEMENT ;IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0x37E -->
+<;IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n05.xml
new file mode 100644
index 0000000000..5d6508e352
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n05.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE  IllegalNameStartChar [
+<!ELEMENT  IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #x2000 -->
+< IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n06.xml
new file mode 100644
index 0000000000..40c935a9fe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n06.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE â€IllegalNameStartChar [
+<!ELEMENT â€IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #x2001 -->
+<â€IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n07.xml
new file mode 100644
index 0000000000..3039964101
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n07.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE  IllegalNameStartChar [
+<!ELEMENT  IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #x2002 -->
+< IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n08.xml
new file mode 100644
index 0000000000..5806f2e81a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n08.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE  IllegalNameStartChar [
+<!ELEMENT  IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #x2005 -->
+< IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n09.xml
new file mode 100644
index 0000000000..831891b545
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n09.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE ​IllegalNameStartChar [
+<!ELEMENT ​IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0x200B -->
+<​IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n10.xml
new file mode 100644
index 0000000000..e31b5a9097
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n10.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE ‎IllegalNameStartChar [
+<!ELEMENT ‎IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0x200E -->
+<‎IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n11.xml
new file mode 100644
index 0000000000..6789aa35aa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n11.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE â€IllegalNameStartChar [
+<!ELEMENT â€IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0x200F -->
+<â€IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n12.xml
new file mode 100644
index 0000000000..5580423b21
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n12.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE â©IllegalNameStartChar [
+<!ELEMENT â©IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0x2069 -->
+<â©IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n13.xml
new file mode 100644
index 0000000000..e56d749cfc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n13.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE â†IllegalNameStartChar [
+<!ELEMENT â†IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0x2190 -->
+<â†IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n14.xml
new file mode 100644
index 0000000000..8138a38d78
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n14.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE â¿IllegalNameStartChar [
+<!ELEMENT â¿IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #x23FF -->
+<â¿IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n15.xml
new file mode 100644
index 0000000000..0a6a2b2b6e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n15.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE â IllegalNameStartChar [
+<!ELEMENT â IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0x280F -->
+<â IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n16.xml
new file mode 100644
index 0000000000..b050ffb741
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n16.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE ⨀IllegalNameStartChar [
+<!ELEMENT ⨀IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0x2A00 -->
+<⨀IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n17.xml
new file mode 100644
index 0000000000..6f0d2d8327
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n17.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE ⬀IllegalNameStartChar [
+<!ELEMENT ⬀IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0x2B00 -->
+<⬀IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n18.xml
new file mode 100644
index 0000000000..85f194fb0f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n18.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE ⯿IllegalNameStartChar [
+<!ELEMENT ⯿IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar x2BFF
+in p02: -->
+<⯿IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n19.xml
new file mode 100644
index 0000000000..e66a949372
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n19.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE â¿¿IllegalNameStartChar [
+<!ELEMENT â¿¿IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0x2FFF -->
+<â¿¿IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n20.xml
new file mode 100644
index 0000000000..8dda9e7be2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n20.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE  IllegalNameStartChar [
+<!ELEMENT  IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0x3000 -->
+< IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n21.xml
new file mode 100644
index 0000000000..c6ff85d559
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n21.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE í €IllegalNameStartChar [
+<!ELEMENT í €IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0xD800 -->
+<í €IllegalNameStartChar/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n22.xml
new file mode 100644
index 0000000000..a5ef26afc1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n22.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE í IllegalNameStartChar [
+<!ELEMENT í IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0xD801 -->
+<í IllegalNameStartChar/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n23.xml
new file mode 100644
index 0000000000..b96f0c2b91
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n23.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE í«¿IllegalNameStartChar [
+<!ELEMENT í«¿IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0xDAFF -->
+<í«¿IllegalNameStartChar/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n24.xml
new file mode 100644
index 0000000000..3b5d5d9691
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n24.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE í¿¿IllegalNameStartChar [
+<!ELEMENT í¿¿IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0xDFFF -->
+<í¿¿IllegalNameStartChar/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n25.xml
new file mode 100644
index 0000000000..21814b10d2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n25.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE î¿¿IllegalNameStartChar [
+<!ELEMENT î¿¿IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0xEFFF -->
+<î¿¿IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n26.xml
new file mode 100644
index 0000000000..72303c440e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n26.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameStartChar [
+<!ELEMENT IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0xF1FF -->
+<IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n27.xml
new file mode 100644
index 0000000000..d70058412c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n27.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameStartChar [
+<!ELEMENT IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0xF8FF -->
+<IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n28.xml
new file mode 100644
index 0000000000..330d295a48
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04/ibm04n28.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE ï¿¿IllegalNameStartChar [
+<!ELEMENT ï¿¿IllegalNameStartChar ANY>
+]>
+<!-- IllegalNameStartChar #0xFFFFF -->
+<ï¿¿IllegalNameStartChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Entries
new file mode 100644
index 0000000000..b6cd89f9fd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Entries
@@ -0,0 +1,29 @@
+/ibm04an01.xml/1.2/Mon Nov 10 15:37:42 2003//
+/ibm04an02.xml/1.2/Mon Nov 10 15:37:42 2003//
+/ibm04an03.xml/1.2/Mon Nov 10 15:37:42 2003//
+/ibm04an04.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an05.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an06.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an07.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an08.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an09.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an10.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an11.xml/1.3/Thu Nov 13 13:31:44 2003//
+/ibm04an12.xml/1.3/Thu Nov 13 13:31:44 2003//
+/ibm04an13.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an14.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an15.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an16.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an17.xml/1.3/Thu Nov 13 13:42:57 2003//
+/ibm04an18.xml/1.3/Thu Nov 13 13:42:57 2003//
+/ibm04an19.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an20.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an21.xml/1.2/Mon Nov 10 14:54:16 2003//
+/ibm04an22.xml/1.2/Mon Nov 10 14:54:16 2003//
+/ibm04an23.xml/1.2/Mon Nov 10 14:54:16 2003//
+/ibm04an24.xml/1.2/Mon Nov 10 14:54:16 2003//
+/ibm04an25.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an26.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an27.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm04an28.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Repository
new file mode 100644
index 0000000000..79a34aa60a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an01.xml
new file mode 100644
index 0000000000..4b3180ab22
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an01.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar¸ [
+<!ELEMENT IllegalNameChar¸ ANY>
+]>
+<!-- IllegalNameChar #xB8 -->
+<IllegalNameChar¸/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an02.xml
new file mode 100644
index 0000000000..e94acbbe45
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an02.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar¡ [
+<!ELEMENT IllegalNameChar¡ ANY>
+]>
+<!-- IllegalNameChar #0xA1 -->
+<IllegalNameChar¡/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an03.xml
new file mode 100644
index 0000000000..4617b5645c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an03.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar¯ [
+<!ELEMENT IllegalNameChar¯ ANY>
+]>
+<!-- IllegalNameChar #0xAF -->
+<IllegalNameChar¯/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an04.xml
new file mode 100644
index 0000000000..d334a16a07
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an04.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar; [
+<!ELEMENT IllegalNameChar; ANY>
+]>
+<!-- IllegalNameChar #0x37E -->
+<IllegalNameChar;/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an05.xml
new file mode 100644
index 0000000000..229d20756d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an05.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar  [
+<!ELEMENT IllegalNameChar  ANY>
+]>
+<!-- IllegalNameChar #0x2000 -->
+<IllegalNameChar /> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an06.xml
new file mode 100644
index 0000000000..5b0b33783a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an06.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar†[
+<!ELEMENT IllegalNameChar†ANY>
+]>
+<!-- IllegalNameChar #0x2001 -->
+<IllegalNameCharâ€/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an07.xml
new file mode 100644
index 0000000000..db80e5dbfe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an07.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar  [
+<!ELEMENT IllegalNameChar  ANY>
+]>
+<!-- IllegalNameChar #0x2002 -->
+<IllegalNameChar /> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an08.xml
new file mode 100644
index 0000000000..5955614e99
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an08.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar  [
+<!ELEMENT IllegalNameChar  ANY>
+]>
+<!-- IllegalNameChar #0x2005 -->
+<IllegalNameChar /> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an09.xml
new file mode 100644
index 0000000000..40e327e536
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an09.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar​ [
+<!ELEMENT IllegalNameChar​ ANY>
+]>
+<!-- IllegalNameChar #0x200B -->
+<IllegalNameChar​/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an10.xml
new file mode 100644
index 0000000000..3d23068c8a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an10.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar‎ [
+<!ELEMENT IllegalNameChar‎ ANY>
+]>
+<!-- IllegalNameChar #0x200E -->
+<IllegalNameChar‎/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an11.xml
new file mode 100644
index 0000000000..b6ea599dc7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an11.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar‽ [
+<!ELEMENT IllegalNameChar‽ ANY>
+]>
+<!-- IllegalNameChar #0x2038 -->
+<IllegalNameChar‽/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an12.xml
new file mode 100644
index 0000000000..489ec9453c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an12.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameCharâ [
+<!ELEMENT IllegalNameCharâ ANY>
+]>
+<!-- IllegalNameChar #0x2041 -->
+<IllegalNameCharâ/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an13.xml
new file mode 100644
index 0000000000..4d47af69f1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an13.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar↠[
+<!ELEMENT IllegalNameChar↠ANY>
+]>
+<!-- IllegalNameChar #0x2190 -->
+<IllegalNameCharâ†/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an14.xml
new file mode 100644
index 0000000000..c9a2c644dd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an14.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameCharâ¿ [
+<!ELEMENT IllegalNameCharâ¿ ANY>
+]>
+<!-- IllegalNameChar #0x23FF -->
+<IllegalNameCharâ¿/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an15.xml
new file mode 100644
index 0000000000..4300c287c2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an15.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameCharâ  [
+<!ELEMENT IllegalNameCharâ  ANY>
+]>
+<!-- IllegalNameChar #0x280F -->
+<IllegalNameCharâ /> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an16.xml
new file mode 100644
index 0000000000..f9e0949570
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an16.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar⨀ [
+<!ELEMENT IllegalNameChar⨀ ANY>
+]>
+<!-- IllegalNameChar #0x2A00 -->
+<IllegalNameChar⨀/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an17.xml
new file mode 100644
index 0000000000..6cb589b0b6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an17.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameCharï· [
+<!ELEMENT IllegalNameCharï· ANY>
+]>
+<!-- IllegalNameChar #0xFDD0 -->
+<IllegalNameCharï·/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an18.xml
new file mode 100644
index 0000000000..0fe52c9770
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an18.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameCharï·¯ [
+<!ELEMENT IllegalNameCharï·¯ ANY>
+]>
+<!-- IllegalNameChar #0xFDEF -->
+<IllegalNameCharï·¯/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an19.xml
new file mode 100644
index 0000000000..cfdaa64f56
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an19.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameCharâ¿¿ [
+<!ELEMENT IllegalNameCharâ¿¿ ANY>
+]>
+<!-- IllegalNameChar #0x2FFF -->
+<IllegalNameCharâ¿¿/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an20.xml
new file mode 100644
index 0000000000..a4155b517e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an20.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar  [
+<!ELEMENT IllegalNameChar  ANY>
+]>
+<!-- IllegalNameChar #0x3000 -->
+<IllegalNameChar /> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an21.xml
new file mode 100644
index 0000000000..620e15c41b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an21.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameCharí € [
+<!ELEMENT IllegalNameCharí € ANY>
+]>
+<!-- IllegalNameChar #0xD800 -->
+<IllegalNameCharí €/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an22.xml
new file mode 100644
index 0000000000..7ffd2ab810
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an22.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameCharí  [
+<!ELEMENT IllegalNameCharí  ANY>
+]>
+<!-- IllegalNameChar #0xD801 -->
+<IllegalNameCharí />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an23.xml
new file mode 100644
index 0000000000..145642dac3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an23.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameCharí«¿ [
+<!ELEMENT IllegalNameCharí«¿ ANY>
+]>
+<!-- IllegalNameChar #0xDAFF -->
+<IllegalNameCharí«¿/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an24.xml
new file mode 100644
index 0000000000..2b78981a45
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an24.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameCharí¿¿ [
+<!ELEMENT IllegalNameCharí¿¿ ANY>
+]>
+<!-- IllegalNameChar #0xDFFF -->
+<IllegalNameCharí¿¿/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an25.xml
new file mode 100644
index 0000000000..5fdb671e60
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an25.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameCharî¿¿ [
+<!ELEMENT IllegalNameCharî¿¿ ANY>
+]>
+<!-- IllegalNameChar #0xEFFF -->
+<IllegalNameCharî¿¿/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an26.xml
new file mode 100644
index 0000000000..a0e3eb568f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an26.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar [
+<!ELEMENT IllegalNameChar ANY>
+]>
+<!-- IllegalNameChar #0xF1FF -->
+<IllegalNameChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an27.xml
new file mode 100644
index 0000000000..a751974244
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an27.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameChar [
+<!ELEMENT IllegalNameChar ANY>
+]>
+<!-- IllegalNameChar #0xF8FF -->
+<IllegalNameChar/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an28.xml
new file mode 100644
index 0000000000..9b98706d2e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P04a/ibm04an28.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE IllegalNameCharï¿¿ [
+<!ELEMENT IllegalNameCharï¿¿ ANY>
+]>
+<!-- IllegalNameChar #0xFFFFF -->
+<IllegalNameCharï¿¿/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Entries
new file mode 100644
index 0000000000..78716f52d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Entries
@@ -0,0 +1,7 @@
+/ibm05n01.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm05n02.xml/1.2/Mon Nov 10 15:51:04 2003//
+/ibm05n03.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm05n04.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm05n05.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm05n06.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Repository
new file mode 100644
index 0000000000..fa2f35e8fa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n01.xml
new file mode 100644
index 0000000000..a3edcf06b2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n01.xml
@@ -0,0 +1,9 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ELEMENT BadName EMPTY>
+]>
+<!-- BadName containing char 0x0B; -->
+<root>
+ <BadName />
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n02.xml
new file mode 100644
index 0000000000..fce14de084
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n02.xml
@@ -0,0 +1,9 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ELEMENT ̀BadName EMPTY>
+]>
+<!-- BadName containing char 0x300; -->
+<root>
+ <Ì€BadName/>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n03.xml
new file mode 100644
index 0000000000..4aa5a4b364
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n03.xml
@@ -0,0 +1,9 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ELEMENT ͯBadName EMPTY>
+]>
+<!-- BadName containing char 0x36F; -->
+<root>
+ <ͯBadName/>
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n04.xml
new file mode 100644
index 0000000000..1bbffdf534
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n04.xml
@@ -0,0 +1,9 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ELEMENT ‿BadName EMPTY>
+]>
+<!-- BadName containing char 0x203F; -->
+<root>
+ <‿BadName/>
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n05.xml
new file mode 100644
index 0000000000..0ff04f2d86
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n05.xml
@@ -0,0 +1,9 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ELEMENT â€BadName EMPTY>
+]>
+<!-- BadName containing char #x2040; -->
+<root>
+ <â€BadName/>
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n06.xml
new file mode 100644
index 0000000000..e95a058370
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P05/ibm05n06.xml
@@ -0,0 +1,9 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ELEMENT ·BadName EMPTY>
+]>
+<!-- BadName containing char 0xB7; -->
+<root>
+ <·BadName/>
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Entries
new file mode 100644
index 0000000000..7d820498ac
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Entries
@@ -0,0 +1,48 @@
+/ibm77n01.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n01.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n02.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n02.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n03.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n03.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n04.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n04.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n05.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n05.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n06.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n06.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n07.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n07.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n08.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n08.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n09.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n09.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n10.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n10.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n11.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n11.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n12.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n12.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n13.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n13.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n13.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n14.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n14.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n15.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n15.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n15.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n16.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n16.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n17.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n17.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n18.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n18.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n19.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n19.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n19.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n20.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n20.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n20.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n21.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n21.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77n21.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Repository
new file mode 100644
index 0000000000..58229dc5c5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.dtd
new file mode 100644
index 0000000000..9f4e46d786
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.dtd
@@ -0,0 +1,3 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!ELEMENT root (#PCDATA)>
+<!ENTITY root_content "Test content test"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.xml
new file mode 100644
index 0000000000..8d443429cb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n01.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77n01.dtd">
+<root>&root_content;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.dtd
new file mode 100644
index 0000000000..0589dad520
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.dtd
@@ -0,0 +1,3 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!ELEMENT root (#PCDATA)>
+<!-- Bad character #x80 € in this comment --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.xml
new file mode 100644
index 0000000000..7b12ef2547
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n02.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77n02.dtd">
+<root>Content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.dtd
new file mode 100644
index 0000000000..5c0f91d829
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.dtd
@@ -0,0 +1,3 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?PITarget Ÿ PIData?>
+<!ELEMENT root (#PCDATA)>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.xml
new file mode 100644
index 0000000000..446b8600eb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n03.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77n03.dtd">
+<root>Content</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.ent
new file mode 100644
index 0000000000..2928170a35
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.ent
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+‰ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.xml
new file mode 100644
index 0000000000..6989693604
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n04.xml
@@ -0,0 +1,6 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm77n04.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.ent
new file mode 100644
index 0000000000..eba7e8e490
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.ent
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+” \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.xml
new file mode 100644
index 0000000000..ad88167589
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n05.xml
@@ -0,0 +1,6 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm77n05.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.ent
new file mode 100644
index 0000000000..fd7a76646c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.ent
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+Ÿ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.xml
new file mode 100644
index 0000000000..4dafc6d5c2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n06.xml
@@ -0,0 +1,6 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm77n06.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.dtd
new file mode 100644
index 0000000000..ba49e131b1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT root (#PCDATA)>
+<!ENTITY root_content "Test content test"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.xml
new file mode 100644
index 0000000000..9358976808
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n07.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77n07.dtd">
+<root>&root_content;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.dtd
new file mode 100644
index 0000000000..21e3d6ae63
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.dtd
@@ -0,0 +1,3 @@
+<?xml encoding="UTF-8"?>
+<!ELEMENT root (#PCDATA)>
+<!ENTITY root_content "Test content ›test"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.xml
new file mode 100644
index 0000000000..a2c6d3f800
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n08.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77n08.dtd">
+<animal>&root_content;</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.dtd
new file mode 100644
index 0000000000..a34ab702a0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT root (#PCDATA)>
+<!-- Â bad comment --> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.xml
new file mode 100644
index 0000000000..d81f9690d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n09.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77n09.dtd">
+<animal>&root_content;</animal>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.ent
new file mode 100644
index 0000000000..2bd3d295e5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.ent
@@ -0,0 +1,2 @@
+<?xml encoding="UTF-8"?>
+„ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.xml
new file mode 100644
index 0000000000..7ecef85385
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n10.xml
@@ -0,0 +1,6 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm77n10.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.ent
new file mode 100644
index 0000000000..54dd853901
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.ent
@@ -0,0 +1 @@
+ˆ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.xml
new file mode 100644
index 0000000000..44a51a53cf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n11.xml
@@ -0,0 +1,6 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm77n11.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.ent
new file mode 100644
index 0000000000..761f7904e3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.ent
@@ -0,0 +1 @@
+ÂŽ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.xml
new file mode 100644
index 0000000000..6d99f811fd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n12.xml
@@ -0,0 +1,6 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm77n12.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.dtd
new file mode 100644
index 0000000000..808bcc52c4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.dtd
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<![INCLUDE [
+<!ELEMENT root ANY>
+<!ENTITY e SYSTEM "ibm77n13.ent">
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.ent
new file mode 100644
index 0000000000..87c52c7416
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.ent
@@ -0,0 +1,2 @@
+<?xml version="1.1" encoding='UTF-8'?>
+<!-- ELEMENT ×node EMPTY -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.xml
new file mode 100644
index 0000000000..b80583c963
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n13.xml
@@ -0,0 +1,3 @@
+<?xml version='1.0'?>
+<!DOCTYPE root SYSTEM "ibm77n13.dtd">
+<root>&e;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.dtd
new file mode 100644
index 0000000000..f23c4c4f0d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.dtd
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<![INCLUDE [
+<!ELEMENT root ANY>
+<!ELEMENT 0node EMPTY>
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.xml
new file mode 100644
index 0000000000..efad31468c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n14.xml
@@ -0,0 +1,4 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77n14.dtd">
+<root>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.dtd
new file mode 100644
index 0000000000..3bc9c3001a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.dtd
@@ -0,0 +1,5 @@
+<?xml encoding='UTF-8'?>
+<![INCLUDE [
+<!ELEMENT root ANY>
+<!ENTITY e SYSTEM "ibm77n15.ent">
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.ent
new file mode 100644
index 0000000000..32e0bd8af0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.ent
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<?PITarget  ?>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.xml
new file mode 100644
index 0000000000..2d6bb7a114
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n15.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77n15.dtd">
+<root>&e;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.ent
new file mode 100644
index 0000000000..4cb0f1eb4e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.ent
@@ -0,0 +1,2 @@
+<?xml encoding='UTF-8'?>
+<root/><root/><rootÂ…/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.xml
new file mode 100644
index 0000000000..e6d0eea805
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n16.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (root*)>
+<!ELEMENT root EMPTY>
+<!ENTITY e SYSTEM "ibm77n16.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.ent
new file mode 100644
index 0000000000..e5d6d8f599
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.ent
@@ -0,0 +1 @@
+<?xml version="1.0" Â… encoding='UTF-8'?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.xml
new file mode 100644
index 0000000000..d470e8bf7a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n17.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (root*)>
+<!ELEMENT root EMPTY>
+<!ENTITY e SYSTEM "ibm77n17.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.ent
new file mode 100644
index 0000000000..939d9bdc6e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.ent
@@ -0,0 +1,2 @@
+<?xml version='1.0' 
 encoding='UTF-8'?>
+<root/><root/><root/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.xml
new file mode 100644
index 0000000000..e9e31e7b7e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n18.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (root*)>
+<!ELEMENT root EMPTY>
+<!ENTITY e SYSTEM "ibm77n18.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.dtd
new file mode 100644
index 0000000000..42c3c44151
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.dtd
@@ -0,0 +1,5 @@
+<![INCLUDE [
+<!ELEMENT node EMPTY>
+<!ELEMENT root ANY>
+<!ENTITY e SYSTEM "ibm77n19.ent">
+]]> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.ent
new file mode 100644
index 0000000000..819e3bede4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.ent
@@ -0,0 +1 @@
+<!-- ” -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.xml
new file mode 100644
index 0000000000..6559711cee
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n19.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1' encoding='UTF-8'?>
+<!DOCTYPE root SYSTEM "ibm77n19.dtd">
+<root>&e;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.dtd
new file mode 100644
index 0000000000..71aa0e7cbc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.dtd
@@ -0,0 +1,6 @@
+<?xml version='1.1' encoding='UTF-8'?>
+<![INCLUDE [
+<!ELEMENT node EMPTY>
+<!ELEMENT root ANY>
+<!ENTITY e SYSTEM "ibm77n20.ent">
+]]> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.ent
new file mode 100644
index 0000000000..4517dfcfaf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.ent
@@ -0,0 +1,2 @@
+<?xml encoding='UTF-8'?>
+<!-- ELEMENT Â EMPTY -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.xml
new file mode 100644
index 0000000000..730e3a97b5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n20.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1' encoding='UTF-8'?>
+<!DOCTYPE root SYSTEM "ibm77n20.dtd">
+<root>&e;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.dtd
new file mode 100644
index 0000000000..138fd50952
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.dtd
@@ -0,0 +1,5 @@
+<![INCLUDE [
+<!ENTITY % e SYSTEM "ibm77n21.ent">
+<!ELEMENT root ANY>
+%e;
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.ent
new file mode 100644
index 0000000000..4517dfcfaf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.ent
@@ -0,0 +1,2 @@
+<?xml encoding='UTF-8'?>
+<!-- ELEMENT Â EMPTY -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.xml
new file mode 100644
index 0000000000..8347923881
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/not-wf/P77/ibm77n21.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1' encoding='UTF-8'?>
+<!DOCTYPE root SYSTEM "ibm77n21.dtd">
+<root></root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Entries
new file mode 100644
index 0000000000..ed3017bb3e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Entries
@@ -0,0 +1,7 @@
+D/P02////
+D/P03////
+D/P04////
+D/P04a////
+D/P05////
+D/P07////
+D/P77////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Repository
new file mode 100644
index 0000000000..bb294bfda3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Entries
new file mode 100644
index 0000000000..d1cab55a76
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Entries
@@ -0,0 +1,8 @@
+/ibm02v01.xml/1.2/Thu Nov 13 19:02:34 2003//
+/ibm02v02.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02v03.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02v04.xml/1.2/Mon Nov 10 14:26:56 2003//
+/ibm02v05.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02v06.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm02v06.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Repository
new file mode 100644
index 0000000000..214b610f92
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v01.xml
new file mode 100644
index 0000000000..f55970e447
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v01.xml
@@ -0,0 +1,22 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!-- This test case covers legal character ranges plus
+ discrete legal characters for production 02 of the
+ XML1.1 specification. -->
+<?NAME_09- _0A-
+_0D-
+_20- _D7FF-퟿_6c0f-æ°_E000-_FFFD-�_effe-_010000-ð€€_10FFFF-ô¿¿_08ffff-ò¿¿ This is a PI target ?>
+]>
+<root>
+x9 :
+xA :
+
+xD :
+x20 to x7E : ! " # $ % ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~
+x85 : Â…
+x2028 : 

+xA0-xD7FF :   ŀ ʀ Ԁ ਀ ဠ⠀ 倀 ꀀ
+xE000-xFFFD : î€î€î€­îƒ°î„‘ïŠï¾ï¿¼ï¿½
+x10000-x10FFFF : က0က1á€1ကFဂ7á€1á‚1á‚«1á¼€1á“°5á«°5ᬀ0᳿7á·²9ỿ1á€A0á€08á€ABဟ08ီCDáŠAAá–78á‚«CDჿ05ჿFAჿFF
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v02.xml
new file mode 100644
index 0000000000..128c4a5214
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v02.xml
@@ -0,0 +1,17 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+]>
+<!-- This test case covers control characters x1 to x1F and x7F to x9F
+ which should only appear as character references. -->
+<root>
+&#x01;&#x02;&#x03;&#x04;&#x05;&#x06;&#x07;&#x08;&#x09;&#x0A;&#x0B;&#x0C;&#x0D;&#x0E;&#x0F;
+&#x10;&#x11;&#x12;&#x13;&#x14;&#x15;&#x16;&#x17;&#x18;&#x19;
+&#x1A;&#x1B;&#x1C;&#x1D;&#x1E;&#x1F;
+&#x70;&#x77;&#x72;&#x73;&#x74;&#x75;&#x76;&#x77;&#x78;&#x79;
+&#x7F;
+&#x80;&#x88;&#x82;&#x83;&#x84;&#x85;&#x86;&#x87;&#x88;&#x89;
+&#x8A;&#x8B;&#x8C;&#x8D;&#x8E;&#x8F;
+&#x90;&#x99;&#x92;&#x93;&#x94;&#x95;&#x96;&#x97;&#x98;&#x99;
+&#x9A;&#x9B;&#x9C;&#x9D;&#x9E;&#x9F;
+</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v03.xml
new file mode 100644
index 0000000000..4f7aabc0f4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v03.xml
@@ -0,0 +1,11 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ENTITY data "range1 : &#x01;&#x02;&#x03;&#x04;&#x05;&#x06;&#x07;&#x08;&#x09;&#x0A;&#x0B;&#x0C;&#x0D;&#x0E;&#x0F;
+ &#x10;&#x11;&#x12;&#x13;&#x14;&#x15;&#x16;&#x17;&#x18;&#x19;&#x1A;&#x1B;&#x1C;&#x1D;&#x1E;&#x1F;
+ range2 : &#x7F;&#x80;&#x81;&#x82;&#x83;&#x84;&#x85;&#x86;&#x87;&#x88;&#x89;
+ &#x90;&#x91;&#x92;&#x93;&#x94;&#x95;&#x96;&#x97;&#x98;&#x99;&#x9A;&#x9B;&#x9C;&#x9D;&#x9E;&#x9F;">
+<!-- This test case covers control characters x1 to x1F and x7F to x9F
+ which appear as character references as an entity's replacement text. -->
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v04.xml
new file mode 100644
index 0000000000..348004f132
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v04.xml
@@ -0,0 +1,12 @@
+<?xml version="1.1" encoding="UTF-8" ?>
+<!DOCTYPE root [
+<!ENTITY dataBad "&#x9;&#x0A;&#x0D;&#x85;&#x2028;">
+<!ENTITY data "&#x9;&#x0A;&#x0D;">
+<!ELEMENT root (child)>
+<!ELEMENT child EMPTY>
+<!-- This test case contains embeded whitespace characters
+ some form the range 1 - 1F. -->
+]>
+<root>&data;
+ <child/>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v05.xml
new file mode 100644
index 0000000000..bb8ce67e7c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v05.xml
@@ -0,0 +1,31 @@
+<?xml version="1.1"?>
+<!DOCTYPE root [
+ <!ELEMENT root (#PCDATA)>
+]>
+<!-- This test case contains valid char references that match the char production. -->
+<root>
+Test all valid new Charater references for P66:
+&#x1;&#x1F;&#x0000000001;&#xF; &#x10; &#x1F;
+&#x7F; &#x80; &#x8F; &#x90; &#x9F;
+&#x9;
+&#xA;
+&#xD;
+&#x20;&#x7E;
+&#x85;
+&#xA0;&#x1234;&#xD7FF;
+&#xE000;&#xFEF0;&#xFFFD;
+&#x10000;&#x5FEDC;&#x10FFFF;
+</root>
+<!--
+Test all valid new Charater references for P66:
+&#x1;&#x1F;&#x0000000001;&#xF; &#x10; &#x1F;
+&#x7F; &#x80; &#x8F; &#x90; &#x9F;
+&#x9;
+&#xA;
+&#xD;
+&#x20;&#x7E;
+&#x85;
+&#xA0;&#x1234;&#xD7FF;
+&#xE000;&#xFEF0;&#xFFFD;
+&#x10000;&#x5FEDC;&#x10FFFF;
+--> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.ent
new file mode 100644
index 0000000000..5edde50c09
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.ent
@@ -0,0 +1,17 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<![CDATA[ 0x1: &#x1;, 0x2: &#x2;, 0x3: &#x3;, 0x4: &#x4;, 0x5: &#x5;, 0x6: &#x6;, 0x7: &#x7;, 0x8: &#x8;, 0x9: &#x9;, 0xa: &#xa;, 0xb: &#xb;, 0xc: &#xc;, 0xd: &#xd;, 0xe: &#xe;, 0xf: &#xf;, 0x10: &#x10;, 0x11: &#x11;, 0x12: &#x12;, 0x13: &#x13;, 0x14: &#x14;, 0x15: &#x15;, 0x16: &#x16;, 0x17: &#x17;, 0x18: &#x18;, 0x19: &#x19;, 0x1a: &#x1a;, 0x1b: &#x1b;, 0x1c: &#x1c;, 0x1d: &#x1d;, 0x1e: &#x1e;, 0x1f: &#x1f;, 0x7f: &#x7f;, 0x80: &#x80;, 0x81: &#x81;, 0x82: &#x82;, 0x83: &#x83;, 0x84: &#x84;, 0x85: &#x85;, 0x86: &#x86;, 0x87: &#x87;, 0x88: &#x88;, 0x89: &#x89;, 0x8a: &#x8a;, 0x8b: &#x8b;, 0x8c: &#x8c;, 0x8d: &#x8d;, 0x8e: &#x8e;, 0x8f: &#x8f;, 0x90: &#x90;, 0x91: &#x91;, 0x92: &#x92;, 0x93: &#x93;, 0x94: &#x94;, 0x95: &#x95;, 0x96: &#x96;, 0x97: &#x97;, 0x98: &#x98;, 0x0: &#x0;, 0x9a: &#x9a;, 0x9b: &#x9b;, 0x9c: &#x9c;, 0x9d: &#x9d;, 0x9e: &#x9e;, 0x9f: &#x9f;,
+&#x85;
+&#xA0;&#x1234;&#xD7FF;
+&#xE000;&#xFEF0;&#xFFFD;
+&#x10000;&#x5FEDC;&#x10FFFF; ]]>
+<?PI 0x1: &#x1;, 0x2: &#x2;, 0x3: &#x3;, 0x4: &#x4;, 0x5: &#x5;, 0x6: &#x6;, 0x7: &#x7;, 0x8: &#x8;, 0x9: &#x9;, 0xa: &#xa;, 0xb: &#xb;, 0xc: &#xc;, 0xd: &#xd;, 0xe: &#xe;, 0xf: &#xf;, 0x10: &#x10;, 0x11: &#x11;, 0x12: &#x12;, 0x13: &#x13;, 0x14: &#x14;, 0x15: &#x15;, 0x16: &#x16;, 0x17: &#x17;, 0x18: &#x18;, 0x19: &#x19;, 0x1a: &#x1a;, 0x1b: &#x1b;, 0x1c: &#x1c;, 0x1d: &#x1d;, 0x1e: &#x1e;, 0x1f: &#x1f;, 0x7f: &#x7f;, 0x80: &#x80;, 0x81: &#x81;, 0x82: &#x82;, 0x83: &#x83;, 0x84: &#x84;, 0x85: &#x85;, 0x86: &#x86;, 0x87: &#x87;, 0x88: &#x88;, 0x89: &#x89;, 0x8a: &#x8a;, 0x8b: &#x8b;, 0x8c: &#x8c;, 0x8d: &#x8d;, 0x8e: &#x8e;, 0x8f: &#x8f;, 0x90: &#x90;, 0x91: &#x91;, 0x92: &#x92;, 0x93: &#x93;, 0x94: &#x94;, 0x95: &#x95;, 0x96: &#x96;, 0x97: &#x97;, 0x98: &#x98;, 0x0: &#x0;, 0x9a: &#x9a;, 0x9b: &#x9b;, 0x9c: &#x9c;, 0x9d: &#x9d;, 0x9e: &#x9e;, 0x9f: &#x9f;,
+&#x85;
+&#xA0;&#x1234;&#xD7FF;
+&#xE000;&#xFEF0;&#xFFFD;
+&#x10000;&#x5FEDC;&#x10FFFF; ?>
+<!-- Comment 0x1: &#x1;, 0x2: &#x2;, 0x3: &#x3;, 0x4: &#x4;, 0x5: &#x5;, 0x6: &#x6;, 0x7: &#x7;, 0x8: &#x8;, 0x9: &#x9;, 0xa: &#xa;, 0xb: &#xb;, 0xc: &#xc;, 0xd: &#xd;, 0xe: &#xe;, 0xf: &#xf;, 0x10: &#x10;, 0x11: &#x11;, 0x12: &#x12;, 0x13: &#x13;, 0x14: &#x14;, 0x15: &#x15;, 0x16: &#x16;, 0x17: &#x17;, 0x18: &#x18;, 0x19: &#x19;, 0x1a: &#x1a;, 0x1b: &#x1b;, 0x1c: &#x1c;, 0x1d: &#x1d;, 0x1e: &#x1e;, 0x1f: &#x1f;, 0x7f: &#x7f;, 0x80: &#x80;, 0x81: &#x81;, 0x82: &#x82;, 0x83: &#x83;, 0x84: &#x84;, 0x85: &#x85;, 0x86: &#x86;, 0x87: &#x87;, 0x88: &#x88;, 0x89: &#x89;, 0x8a: &#x8a;, 0x8b: &#x8b;, 0x8c: &#x8c;, 0x8d: &#x8d;, 0x8e: &#x8e;, 0x8f: &#x8f;, 0x90: &#x90;, 0x91: &#x91;, 0x92: &#x92;, 0x93: &#x93;, 0x94: &#x94;, 0x95: &#x95;, 0x96: &#x96;, 0x97: &#x97;, 0x98: &#x98;, 0x0: &#x0;, 0x9a: &#x9a;, 0x9b: &#x9b;, 0x9c: &#x9c;, 0x9d: &#x9d;, 0x9e: &#x9e;, 0x9f: &#x9f;,
+&#x85;
+&#xA0;&#x1234;&#xD7FF;
+&#xE000;&#xFEF0;&#xFFFD;
+&#x10000;&#x5FEDC;&#x10FFFF; -->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.xml
new file mode 100644
index 0000000000..e21b65a2ff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P02/ibm02v06.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ENTITY e SYSTEM "ibm02v06.ent">
+]>
+<root></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Entries
new file mode 100644
index 0000000000..7799e50679
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Entries
@@ -0,0 +1,15 @@
+/ibm03v01.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm03v01.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm03v02.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm03v02.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm03v03.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm03v03.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm03v04.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm03v04.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm03v05.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm03v06.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm03v07.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm03v08.xml/1.2/Mon Nov 10 14:27:44 2003//
+/ibm03v09.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm03v09.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Repository
new file mode 100644
index 0000000000..aa8eec08af
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.ent
new file mode 100644
index 0000000000..9e7d302db7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.ent
@@ -0,0 +1 @@
+Data Â… \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.xml
new file mode 100644
index 0000000000..bb199c6315
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v01.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm03v01.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.ent
new file mode 100644
index 0000000000..49fa978a95
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.ent
@@ -0,0 +1 @@
+DataÂ… \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.xml
new file mode 100644
index 0000000000..1e4016ea84
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v02.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm03v02.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.ent
new file mode 100644
index 0000000000..3f9891b370
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.ent
@@ -0,0 +1 @@
+ Â… \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.xml
new file mode 100644
index 0000000000..838469cf36
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v03.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm03v03.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.ent
new file mode 100644
index 0000000000..943348b728
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.ent
@@ -0,0 +1 @@
+Â… \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.xml
new file mode 100644
index 0000000000..c91f7ba292
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v04.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm03v04.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v05.xml
new file mode 100644
index 0000000000..147ad514e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v05.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e " Â…">
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc>x&e;y</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v06.xml
new file mode 100644
index 0000000000..926f087d87
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v06.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e "Â…">
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc>x&e;y</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v07.xml
new file mode 100644
index 0000000000..58d4d57815
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v07.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e "
">
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc>x&e;y</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v08.xml
new file mode 100644
index 0000000000..98d5f4a098
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v08.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1"
+ ?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc>Test</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.ent
new file mode 100644
index 0000000000..5f97ad4b82
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.ent
@@ -0,0 +1 @@
+<?xml version="1.1" 
?> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.xml
new file mode 100644
index 0000000000..6588aa88fe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/ibm03v09.xml
@@ -0,0 +1,7 @@
+<?xml version="1.1"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm03v09.ent">
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc>Test</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Entries
new file mode 100644
index 0000000000..a68bdbd784
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Entries
@@ -0,0 +1,10 @@
+/ibm03v01.xml/1.4/Wed Nov 26 15:37:41 2003//
+/ibm03v02.xml/1.4/Wed Nov 26 15:37:41 2003//
+/ibm03v03.xml/1.4/Wed Nov 26 15:37:41 2003//
+/ibm03v04.xml/1.4/Wed Nov 26 15:37:41 2003//
+/ibm03v05.xml/1.4/Wed Nov 26 15:37:41 2003//
+/ibm03v06.xml/1.4/Wed Nov 26 15:37:41 2003//
+/ibm03v07.xml/1.4/Wed Nov 26 15:37:41 2003//
+/ibm03v08.xml/1.4/Wed Nov 26 15:37:41 2003//
+/ibm03v09.xml/1.4/Wed Nov 26 15:37:41 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Repository
new file mode 100644
index 0000000000..461fb90957
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v01.xml
new file mode 100644
index 0000000000..3fed632c66
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v01.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><doc>Data&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v02.xml
new file mode 100644
index 0000000000..3fed632c66
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v02.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><doc>Data&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v03.xml
new file mode 100644
index 0000000000..d52534db03
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v03.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><doc>&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v04.xml
new file mode 100644
index 0000000000..d52534db03
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v04.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><doc>&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v05.xml
new file mode 100644
index 0000000000..976f241144
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v05.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><doc>x&#10;y</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v06.xml
new file mode 100644
index 0000000000..976f241144
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v06.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><doc>x&#10;y</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v07.xml
new file mode 100644
index 0000000000..976f241144
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v07.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><doc>x&#10;y</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v08.xml
new file mode 100644
index 0000000000..e163aade1f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v08.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><doc>Test</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v09.xml
new file mode 100644
index 0000000000..e163aade1f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P03/out/ibm03v09.xml
@@ -0,0 +1 @@
+<?xml version="1.1"?><doc>Test</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Entries
new file mode 100644
index 0000000000..1265ae5a82
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm04v01.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Repository
new file mode 100644
index 0000000000..5dc25dcd73
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/ibm04v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/ibm04v01.xml
new file mode 100644
index 0000000000..bde882fb1c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04/ibm04v01.xml
@@ -0,0 +1,66 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE LegalNameStartChar [
+<!ELEMENT LegalNameStartChar ANY>
+<!ELEMENT :LegalNameStartChar ANY>
+<!ELEMENT ÀLegalNameStartChar ANY>
+<!ELEMENT ÃLegalNameStartChar ANY>
+<!ELEMENT ˾LegalNameStartChar ANY>
+<!ELEMENT Ë¿LegalNameStartChar ANY>
+<!ELEMENT Í°LegalNameStartChar ANY>
+<!ELEMENT ͱLegalNameStartChar ANY>
+<!ELEMENT ͼLegalNameStartChar ANY>
+<!ELEMENT ͽLegalNameStartChar ANY>
+<!ELEMENT Í¿LegalNameStartChar ANY>
+<!ELEMENT ΀LegalNameStartChar ANY>
+<!ELEMENT ῾LegalNameStartChar ANY>
+<!ELEMENT á¿¿LegalNameStartChar ANY>
+<!ELEMENT ‌LegalNameStartChar ANY>
+<!ELEMENT â€LegalNameStartChar ANY>
+<!ELEMENT â°LegalNameStartChar ANY>
+<!ELEMENT â±LegalNameStartChar ANY>
+<!ELEMENT ↎LegalNameStartChar ANY>
+<!ELEMENT â†LegalNameStartChar ANY>
+<!ELEMENT â°€LegalNameStartChar ANY>
+<!ELEMENT â°LegalNameStartChar ANY>
+<!ELEMENT â¿®LegalNameStartChar ANY>
+<!ELEMENT ⿯LegalNameStartChar ANY>
+<!ELEMENT ã€LegalNameStartChar ANY>
+<!ELEMENT 。LegalNameStartChar ANY>
+<!ELEMENT ퟾LegalNameStartChar ANY>
+<!ELEMENT ퟿LegalNameStartChar ANY>
+<!ELEMENT 豈LegalNameStartChar ANY>
+<!ELEMENT ï¤LegalNameStartChar ANY>
+]>
+<!-- LegalNameChar 0x3A,0xC0,,0xC1,0x2FE,0xC0,,0xC1,0x2FE,0x2FF,0x370,0x371,0x37C,0x37D,0x37F,0x380,0x1FFE,0x1FFF,0x200C,0x200D,0x2070,0x2071,0x218E,0x218F,0x2C00,0x2C01,0x2FEE,0x2FEF,0x3001,0x3002,0xD7FE,0xD7FF,0xF900,0xF901,0xEFFFF,0xFFFFF
+in p02: -->
+<LegalNameStartChar> <:LegalNameStartChar/>
+ <ÀLegalNameStartChar/>
+ <ÃLegalNameStartChar/>
+ <˾LegalNameStartChar/>
+ <Ë¿LegalNameStartChar/>
+ <Í°LegalNameStartChar/>
+ <ͱLegalNameStartChar/>
+ <ͼLegalNameStartChar/>
+ <ͽLegalNameStartChar/>
+ <Í¿LegalNameStartChar/>
+ <΀LegalNameStartChar/>
+ <῾LegalNameStartChar/>
+ <á¿¿LegalNameStartChar/>
+ <‌LegalNameStartChar/>
+ <â€LegalNameStartChar/>
+ <â°LegalNameStartChar/>
+ <â±LegalNameStartChar/>
+ <↎LegalNameStartChar/>
+ <â†LegalNameStartChar/>
+ <â°€LegalNameStartChar/>
+ <â°LegalNameStartChar/>
+ <â¿®LegalNameStartChar/>
+ <⿯LegalNameStartChar/>
+ <ã€LegalNameStartChar/>
+ <。LegalNameStartChar/>
+ <퟾LegalNameStartChar/>
+ <퟿LegalNameStartChar/>
+ <豈LegalNameStartChar/>
+ <ï¤LegalNameStartChar/>
+
+</LegalNameStartChar> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Entries
new file mode 100644
index 0000000000..326056b090
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm04av01.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Repository
new file mode 100644
index 0000000000..d5df5dd2ed
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/ibm04av01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/ibm04av01.xml
new file mode 100644
index 0000000000..5bde28ec53
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P04a/ibm04av01.xml
@@ -0,0 +1,97 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE LegalNameChar [
+<!ELEMENT LegalNameChar ANY>
+<!ELEMENT LegalNameCharÀ ANY>
+<!ELEMENT LegalNameCharà ANY>
+<!ELEMENT LegalNameChar˾ ANY>
+<!ELEMENT LegalNameChar ANY>
+<!ELEMENT LegalNameCharà ANY>
+<!ELEMENT LegalNameChar˽ ANY>
+<!ELEMENT LegalNameChar˿ ANY>
+<!ELEMENT LegalNameCharÍ° ANY>
+<!ELEMENT LegalNameCharͱ ANY>
+<!ELEMENT LegalNameCharͼ ANY>
+<!ELEMENT LegalNameCharͽ ANY>
+<!ELEMENT LegalNameCharͿ ANY>
+<!ELEMENT LegalNameChar΀ ANY>
+<!ELEMENT LegalNameChar῾ ANY>
+<!ELEMENT LegalNameChará¿¿ ANY>
+<!ELEMENT LegalNameChar‌ ANY>
+<!ELEMENT LegalNameChar†ANY>
+<!ELEMENT LegalNameCharâ° ANY>
+<!ELEMENT LegalNameCharâ± ANY>
+<!ELEMENT LegalNameChar↎ ANY>
+<!ELEMENT LegalNameChar↠ANY>
+<!ELEMENT LegalNameCharâ°€ ANY>
+<!ELEMENT LegalNameCharâ° ANY>
+<!ELEMENT LegalNameCharâ¿® ANY>
+<!ELEMENT LegalNameChar⿯ ANY>
+<!ELEMENT LegalNameChar〠ANY>
+<!ELEMENT LegalNameChar。 ANY>
+<!ELEMENT LegalNameChar퟾ ANY>
+<!ELEMENT LegalNameChar퟿ ANY>
+<!ELEMENT LegalNameChar豈 ANY>
+<!ELEMENT LegalNameCharï¤ ANY>
+<!ELEMENT LegalNameChar� ANY>
+<!ELEMENT LegalNameChar- ANY>
+<!ELEMENT LegalNameChar. ANY>
+<!ELEMENT LegalNameCharA ANY>
+<!ELEMENT LegalNameCharz ANY>
+<!ELEMENT LegalNameChar0 ANY>
+<!ELEMENT LegalNameChar· ANY>
+<!ELEMENT LegalNameChar̀ ANY>
+<!ELEMENT LegalNameCharÌ ANY>
+<!ELEMENT LegalNameCharÍ® ANY>
+<!ELEMENT LegalNameCharͯ ANY>
+<!ELEMENT LegalNameChar‿ ANY>
+<!ELEMENT LegalNameChar†ANY>
+]>
+<!-- LegalNameChars ending with
+0x003A, 0x00C0, 0x00C1, 0x02FE, 0x00C2, 0x00C3, 0x02FD, 0x02FF, 0x0370, 0x0371, 0x037C, 0x037D, 0x037F, 0x0380, 0x1FFE, 0x1FFF, 0x200C, 0x200D, 0x2070, 0x2071, 0x218E, 0x218F, 0x2C00, 0x2C01, 0x2FEE, 0x2FEF, 0x3001, 0x3002, 0xD7FE, 0xD7FF, 0xF900, 0xF901, 0xFFFD, 0x002D, 0x002E, 0x0041, 0x007A, 0x0030, 0x00B7, 0x0300, 0x0301, 0x036E, 0x036F, 0x203F, 0x2040
+-->
+<LegalNameChar>
+ <LegalNameCharÀ/>
+ <LegalNameCharÃ/>
+ <LegalNameChar˾/>
+ <LegalNameCharÂ/>
+ <LegalNameCharÃ/>
+ <LegalNameChar˽/>
+ <LegalNameChar˿/>
+ <LegalNameCharÍ°/>
+ <LegalNameCharͱ/>
+ <LegalNameCharͼ/>
+ <LegalNameCharͽ/>
+ <LegalNameCharͿ/>
+ <LegalNameChar΀/>
+ <LegalNameChar῾/>
+ <LegalNameChará¿¿/>
+ <LegalNameChar‌/>
+ <LegalNameCharâ€/>
+ <LegalNameCharâ°/>
+ <LegalNameCharâ±/>
+ <LegalNameChar↎/>
+ <LegalNameCharâ†/>
+ <LegalNameCharâ°€/>
+ <LegalNameCharâ°/>
+ <LegalNameCharâ¿®/>
+ <LegalNameChar⿯/>
+ <LegalNameCharã€/>
+ <LegalNameChar。/>
+ <LegalNameChar퟾/>
+ <LegalNameChar퟿/>
+ <LegalNameChar豈/>
+ <LegalNameCharï¤/>
+ <LegalNameChar�/>
+ <LegalNameChar-/>
+ <LegalNameChar./>
+ <LegalNameCharA/>
+ <LegalNameCharz/>
+ <LegalNameChar0/>
+ <LegalNameChar·/>
+ <LegalNameChar̀/>
+ <LegalNameCharÌ/>
+ <LegalNameCharÍ®/>
+ <LegalNameCharͯ/>
+ <LegalNameChar‿/>
+ <LegalNameCharâ€/>
+</LegalNameChar> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Entries
new file mode 100644
index 0000000000..41ef6c1681
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Entries
@@ -0,0 +1,6 @@
+/ibm05v01.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm05v02.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm05v03.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm05v04.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm05v05.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Repository
new file mode 100644
index 0000000000..d8fe4e1504
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v01.xml
new file mode 100644
index 0000000000..2a38052bd8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v01.xml
@@ -0,0 +1,103 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE LegalName [
+<!ELEMENT LegalName ANY>
+<!ELEMENT LegalName: ANY>
+<!ELEMENT LegalNameÀ ANY>
+<!ELEMENT LegalNameà ANY>
+<!ELEMENT LegalName˾ ANY>
+<!ELEMENT LegalName ANY>
+<!ELEMENT LegalNameà ANY>
+<!ELEMENT LegalName˽ ANY>
+<!ELEMENT LegalName˿ ANY>
+<!ELEMENT LegalNameÍ° ANY>
+<!ELEMENT LegalNameͱ ANY>
+<!ELEMENT LegalNameͼͽ ANY>
+<!ELEMENT LegalNameͽͿ ANY>
+<!ELEMENT LegalNameͿ΀ ANY>
+<!ELEMENT LegalName΀῾ ANY>
+<!ELEMENT LegalName῾῿ ANY>
+<!ELEMENT LegalName῿‌ ANY>
+<!ELEMENT LegalName‌†ANY>
+<!ELEMENT LegalNameâ€â° ANY>
+<!ELEMENT LegalNameâ°â± ANY>
+<!ELEMENT LegalNameâ±â†Ž ANY>
+<!ELEMENT LegalName↎â†â°€ ANY>
+<!ELEMENT LegalNameâ†â°€â° ANY>
+<!ELEMENT LegalNameâ°€â°â¿® ANY>
+<!ELEMENT LegalNameâ°â¿®â¿¯ ANY>
+<!ELEMENT LegalName⿮⿯〠ANY>
+<!ELEMENT LegalName⿯ã€ã€‚ ANY>
+<!ELEMENT LegalNameã€ã€‚퟾ ANY>
+<!ELEMENT LegalName。퟾퟿ ANY>
+<!ELEMENT LegalName퟾퟿豈 ANY>
+<!ELEMENT LegalNameíŸ¿ï¤€ï¤ ANY>
+<!ELEMENT LegalName豈퟿퟾。 ANY>
+<!ELEMENT LegalNameï¤ï¤€íŸ¿íŸ¾ ANY>
+<!ELEMENT LegalName�ï¤ï¤€íŸ¿ ANY>
+<!ELEMENT LegalName-�ï¤ï¤€ ANY>
+<!ELEMENT LegalName.-ï¿½ï¤ ANY>
+<!ELEMENT LegalNameA.-� ANY>
+<!ELEMENT LegalNamezA.- ANY>
+<!ELEMENT LegalName0zA. ANY>
+<!ELEMENT LegalName·0zA ANY>
+<!ELEMENT LegalNamè·0z ANY>
+<!ELEMENT LegalNameÌ̀·0 ANY>
+<!ELEMENT LegalNameÍ®Ì̀· ANY>
+<!ELEMENT LegalNameͯͮÌÌ€ ANY>
+<!ELEMENT LegalNameâ€¿Í¯Í®Ì ANY>
+<!ELEMENT LegalNameâ€â€¿Í¯Í® ANY>
+<!ELEMENT LegalNamenullâ€â€¿Í¯ ANY>
+<!ELEMENT LegalNamenullnullâ€â€¿ ANY>
+<!ELEMENT LegalNamenullnullnull†ANY>
+]>
+<!-- LegalName 0x300,0x333,0x369,0x37E,0x2000,0x2001,0x2002,0x2005,0x200B,0x200E,x200F,0x2069,0x2190,0x23FF,0x280F,0x2A00,0x2EDC,0x2FED,0x2FFF,0x3000,0xD800,0xD801,0xDAFF,0xDFFF,0xEFFF,0xF1FF,0xF8FF,0xFFFFF,0x2D,0x2E, 0x41,0x7A ,0x30, 0xB7, 0x0300, 0x0301, 0xx036E, 0x036F, 0x203F, 0x203E, 0x2039, 0x2040;
+in p02: -->
+<LegalName> <LegalName:/>
+ <LegalNameÀ/>
+ <LegalNameÃ/>
+ <LegalName˾/>
+ <LegalNameÂ/>
+ <LegalNameÃ/>
+ <LegalName˽/>
+ <LegalName˿/>
+ <LegalNameÍ°/>
+ <LegalNameͱ/>
+ <LegalNameͼͽ/>
+ <LegalNameͽͿ/>
+ <LegalNameͿ΀/>
+ <LegalName΀῾/>
+ <LegalName῾῿/>
+ <LegalName῿‌/>
+ <LegalName‌â€/>
+ <LegalNameâ€â°/>
+ <LegalNameâ°â±/>
+ <LegalNameâ±â†Ž/>
+ <LegalName↎â†â°€/>
+ <LegalNameâ†â°€â°/>
+ <LegalNameâ°€â°â¿®/>
+ <LegalNameâ°â¿®â¿¯/>
+ <LegalName⿮⿯ã€/>
+ <LegalName⿯ã€ã€‚/>
+ <LegalNameã€ã€‚퟾/>
+ <LegalName。퟾퟿/>
+ <LegalName퟾퟿豈/>
+ <LegalName퟿豈ï¤/>
+ <LegalName豈퟿퟾。/>
+ <LegalNameï¤ï¤€íŸ¿íŸ¾/>
+ <LegalName�ï¤ï¤€íŸ¿/>
+ <LegalName-�ï¤ï¤€/>
+ <LegalName.-�ï¤/>
+ <LegalNameA.-�/>
+ <LegalNamezA.-/>
+ <LegalName0zA./>
+ <LegalName·0zA/>
+ <LegalNamè·0z/>
+ <LegalNameÌ̀·0/>
+ <LegalNameÍ®Ì̀·/>
+ <LegalNameͯͮÌÌ€/>
+ <LegalName‿ͯͮÌ/>
+ <LegalNameâ€â€¿Í¯Í®/>
+ <LegalNamenullâ€â€¿Í¯/>
+ <LegalNamenullnullâ€â€¿/>
+ <LegalNamenullnullnullâ€/>
+</LegalName> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v02.xml
new file mode 100644
index 0000000000..e788d4670d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v02.xml
@@ -0,0 +1,55 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE LegalName [
+<!ELEMENT LegalName ANY>
+]>
+<!-- Legal Names containing one to four characters in order from the list below used in PI Target Names. x003A, 0x00C0, 0x00C1, 0x02FE, 0x00C2, 0x00C3, 0x02FD, 0x02FF, 0x0370, 0x0371, 0x037C, 0x037D, 0x037F, 0x0380, 0x1FFE, 0x1FFF, 0x200C, 0x200D, 0x2070, 0x2071, 0x218E, 0x218F, 0x2C00, 0x2C01, 0x2FEE, 0x2FEF, 0x3001, 0x3002, 0xD7FE, 0xD7FF, 0xF900, 0xF901, 0xFFFD, 0x002D, 0x002E, 0x0041, 0x007A, 0x0030, 0x00B7, 0x0300, 0x0301, 0x036E, 0x036F, 0x203F, 0x2040 -->
+<LegalName>
+ <?PITarget: Test PIData?>
+ <?PITargetÀ Test PIData?>
+ <?PITargetà Test PIData?>
+ <?PITarget˾ Test PIData?>
+ <?PITarget Test PIData?>
+ <?PITargetà Test PIData?>
+ <?PITarget˽ Test PIData?>
+ <?PITarget˿ Test PIData?>
+ <?PITargetÍ° Test PIData?>
+ <?PITargetͱ Test PIData?>
+ <?PITargetͼͽ Test PIData?>
+ <?PITargetͽͿ Test PIData?>
+ <?PITargetͿ΀ Test PIData?>
+ <?PITarget΀῾ Test PIData?>
+ <?PITarget῾῿ Test PIData?>
+ <?PITarget῿‌ Test PIData?>
+ <?PITarget‌†Test PIData?>
+ <?PITargetâ€â° Test PIData?>
+ <?PITargetâ°â± Test PIData?>
+ <?PITargetâ±â†Ž Test PIData?>
+ <?PITarget↎â†â°€ Test PIData?>
+ <?PITargetâ†â°€â° Test PIData?>
+ <?PITargetâ°€â°â¿® Test PIData?>
+ <?PITargetâ°â¿®â¿¯ Test PIData?>
+ <?PITarget⿮⿯〠Test PIData?>
+ <?PITarget⿯ã€ã€‚ Test PIData?>
+ <?PITargetã€ã€‚퟾ Test PIData?>
+ <?PITarget。퟾퟿ Test PIData?>
+ <?PITarget퟾퟿豈 Test PIData?>
+ <?PITargetíŸ¿ï¤€ï¤ Test PIData?>
+ <?PITarget豈퟿퟾。 Test PIData?>
+ <?PITargetï¤ï¤€íŸ¿íŸ¾ Test PIData?>
+ <?PITarget�ï¤ï¤€íŸ¿ Test PIData?>
+ <?PITarget-�ï¤ï¤€ Test PIData?>
+ <?PITarget.-ï¿½ï¤ Test PIData?>
+ <?PITargetA.-� Test PIData?>
+ <?PITargetzA.- Test PIData?>
+ <?PITarget0zA. Test PIData?>
+ <?PITarget·0zA Test PIData?>
+ <?PITarget̀·0z Test PIData?>
+ <?PITargetÌ̀·0 Test PIData?>
+ <?PITargetÍ®Ì̀· Test PIData?>
+ <?PITargetͯͮÌÌ€ Test PIData?>
+ <?PITargetâ€¿Í¯Í®Ì Test PIData?>
+ <?PITargetâ€â€¿Í¯Í® Test PIData?>
+ <?PITargetnullâ€â€¿Í¯ Test PIData?>
+ <?PITargetnullnullâ€â€¿ Test PIData?>
+ <?PITargetnullnullnull†Test PIData?>
+</LegalName> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v03.xml
new file mode 100644
index 0000000000..729d2141d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v03.xml
@@ -0,0 +1,103 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE LegalName [
+<!ELEMENT LegalName ANY>
+<!ATTLIST LegalName :attr CDATA #IMPLIED>
+<!ATTLIST LegalName Àattr CDATA #IMPLIED>
+<!ATTLIST LegalName Ãattr CDATA #IMPLIED>
+<!ATTLIST LegalName ˾attr CDATA #IMPLIED>
+<!ATTLIST LegalName Âattr CDATA #IMPLIED>
+<!ATTLIST LegalName Ãattr CDATA #IMPLIED>
+<!ATTLIST LegalName ˽attr CDATA #IMPLIED>
+<!ATTLIST LegalName Ë¿attr CDATA #IMPLIED>
+<!ATTLIST LegalName Í°attr CDATA #IMPLIED>
+<!ATTLIST LegalName ͱattr CDATA #IMPLIED>
+<!ATTLIST LegalName ͼͽattr CDATA #IMPLIED>
+<!ATTLIST LegalName ͽͿattr CDATA #IMPLIED>
+<!ATTLIST LegalName Ϳ΀attr CDATA #IMPLIED>
+<!ATTLIST LegalName ΀῾attr CDATA #IMPLIED>
+<!ATTLIST LegalName ῾῿attr CDATA #IMPLIED>
+<!ATTLIST LegalName ῿‌attr CDATA #IMPLIED>
+<!ATTLIST LegalName ‌â€attr CDATA #IMPLIED>
+<!ATTLIST LegalName â€â°attr CDATA #IMPLIED>
+<!ATTLIST LegalName â°â±attr CDATA #IMPLIED>
+<!ATTLIST LegalName â±â†Žattr CDATA #IMPLIED>
+<!ATTLIST LegalName ↎â†â°€attr CDATA #IMPLIED>
+<!ATTLIST LegalName â†â°€â°attr CDATA #IMPLIED>
+<!ATTLIST LegalName â°€â°â¿®attr CDATA #IMPLIED>
+<!ATTLIST LegalName â°â¿®â¿¯attr CDATA #IMPLIED>
+<!ATTLIST LegalName ⿮⿯ã€attr CDATA #IMPLIED>
+<!ATTLIST LegalName ⿯ã€ã€‚attr CDATA #IMPLIED>
+<!ATTLIST LegalName ã€ã€‚퟾attr CDATA #IMPLIED>
+<!ATTLIST LegalName 。퟾퟿attr CDATA #IMPLIED>
+<!ATTLIST LegalName ퟾퟿豈attr CDATA #IMPLIED>
+<!ATTLIST LegalName ퟿豈ï¤attr CDATA #IMPLIED>
+<!ATTLIST LegalName 豈퟿퟾。attr CDATA #IMPLIED>
+<!ATTLIST LegalName ï¤ï¤€íŸ¿íŸ¾attr CDATA #IMPLIED>
+<!ATTLIST LegalName �ï¤ï¤€íŸ¿attr CDATA #IMPLIED>
+<!ATTLIST LegalName attr-�ï¤ï¤€ CDATA #IMPLIED>
+<!ATTLIST LegalName attr.-ï¿½ï¤ CDATA #IMPLIED>
+<!ATTLIST LegalName A.-�attr CDATA #IMPLIED>
+<!ATTLIST LegalName zA.-attr CDATA #IMPLIED>
+<!ATTLIST LegalName attr0zA. CDATA #IMPLIED>
+<!ATTLIST LegalName attr·0zA CDATA #IMPLIED>
+<!ATTLIST LegalName attr̀·0z CDATA #IMPLIED>
+<!ATTLIST LegalName attrÌ̀·0 CDATA #IMPLIED>
+<!ATTLIST LegalName attrÍ®Ì̀· CDATA #IMPLIED>
+<!ATTLIST LegalName attrͯͮÌÌ€ CDATA #IMPLIED>
+<!ATTLIST LegalName attrâ€¿Í¯Í®Ì CDATA #IMPLIED>
+<!ATTLIST LegalName attrâ€â€¿Í¯Í® CDATA #IMPLIED>
+<!ATTLIST LegalName nullâ€â€¿Í¯attr CDATA #IMPLIED>
+<!ATTLIST LegalName nullnullâ€â€¿attr CDATA #IMPLIED>
+<!ATTLIST LegalName nullnullnullâ€attr CDATA #IMPLIED>
+]>
+<!-- Legal Names containing one to four characters in order from the list below used in Attr delcs and attributes. x003A, 0x00C0, 0x00C1, 0x02FE, 0x00C2, 0x00C3, 0x02FD, 0x02FF, 0x0370, 0x0371, 0x037C, 0x037D, 0x037F, 0x0380, 0x1FFE, 0x1FFF, 0x200C, 0x200D, 0x2070, 0x2071, 0x218E, 0x218F, 0x2C00, 0x2C01, 0x2FEE, 0x2FEF, 0x3001, 0x3002, 0xD7FE, 0xD7FF, 0xF900, 0xF901, 0xFFFD, 0x002D, 0x002E, 0x0041, 0x007A, 0x0030, 0x00B7, 0x0300, 0x0301, 0x036E, 0x036F, 0x203F, 0x2040 -->
+<LegalName
+ :attr="attrValue"
+ Àattr="attrValue"
+ Ãattr="attrValue"
+ ˾attr="attrValue"
+ Âattr="attrValue"
+ Ãattr="attrValue"
+ ˽attr="attrValue"
+ Ë¿attr="attrValue"
+ Í°attr="attrValue"
+ ͱattr="attrValue"
+ ͼͽattr="attrValue"
+ ͽͿattr="attrValue"
+ Ϳ΀attr="attrValue"
+ ΀῾attr="attrValue"
+ ῾῿attr="attrValue"
+ ῿‌attr="attrValue"
+ ‌â€attr="attrValue"
+ â€â°attr="attrValue"
+ â°â±attr="attrValue"
+ â±â†Žattr="attrValue"
+ ↎â†â°€attr="attrValue"
+ â†â°€â°attr="attrValue"
+ â°€â°â¿®attr="attrValue"
+ â°â¿®â¿¯attr="attrValue"
+ ⿮⿯ã€attr="attrValue"
+ ⿯ã€ã€‚attr="attrValue"
+ ã€ã€‚퟾attr="attrValue"
+ 。퟾퟿attr="attrValue"
+ ퟾퟿豈attr="attrValue"
+ ퟿豈ï¤attr="attrValue"
+ 豈퟿퟾。attr="attrValue"
+ ï¤ï¤€íŸ¿íŸ¾attr="attrValue"
+ �ï¤ï¤€íŸ¿attr="attrValue"
+ attr-�ï¤ï¤€="attrValue"
+ attr.-�ï¤="attrValue"
+ A.-�attr="attrValue"
+ zA.-attr="attrValue"
+ attr0zA.="attrValue"
+ attr·0zA="attrValue"
+ attr̀·0z="attrValue"
+ attrÌ̀·0="attrValue"
+ attrÍ®Ì̀·="attrValue"
+ attrͯͮÌÌ€="attrValue"
+ attr‿ͯͮÌ="attrValue"
+ attrâ€â€¿Í¯Í®="attrValue"
+ nullâ€â€¿Í¯attr="attrValue"
+ nullnullâ€â€¿attr="attrValue"
+ nullnullnullâ€attr="attrValue"
+ /> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v04.xml
new file mode 100644
index 0000000000..5833679d6a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v04.xml
@@ -0,0 +1,199 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE LegalName [
+<!ELEMENT LegalName ANY>
+<!ELEMENT LegalName0 ANY>
+<!ATTLIST LegalName0 attr0 ID #IMPLIED>
+<!ATTLIST LegalName0 attr00 IDREF #IMPLIED>
+<!ELEMENT LegalName1 ANY>
+<!ATTLIST LegalName1 attr1 ID #IMPLIED>
+<!ATTLIST LegalName1 attr10 IDREF #IMPLIED>
+<!ELEMENT LegalName2 ANY>
+<!ATTLIST LegalName2 attr2 ID #IMPLIED>
+<!ATTLIST LegalName2 attr20 IDREF #IMPLIED>
+<!ELEMENT LegalName3 ANY>
+<!ATTLIST LegalName3 attr3 ID #IMPLIED>
+<!ATTLIST LegalName3 attr30 IDREF #IMPLIED>
+<!ELEMENT LegalName4 ANY>
+<!ATTLIST LegalName4 attr4 ID #IMPLIED>
+<!ATTLIST LegalName4 attr40 IDREF #IMPLIED>
+<!ELEMENT LegalName5 ANY>
+<!ATTLIST LegalName5 attr5 ID #IMPLIED>
+<!ATTLIST LegalName5 attr50 IDREF #IMPLIED>
+<!ELEMENT LegalName6 ANY>
+<!ATTLIST LegalName6 attr6 ID #IMPLIED>
+<!ATTLIST LegalName6 attr60 IDREF #IMPLIED>
+<!ELEMENT LegalName7 ANY>
+<!ATTLIST LegalName7 attr7 ID #IMPLIED>
+<!ATTLIST LegalName7 attr70 IDREF #IMPLIED>
+<!ELEMENT LegalName8 ANY>
+<!ATTLIST LegalName8 attr8 ID #IMPLIED>
+<!ATTLIST LegalName8 attr80 IDREF #IMPLIED>
+<!ELEMENT LegalName9 ANY>
+<!ATTLIST LegalName9 attr9 ID #IMPLIED>
+<!ATTLIST LegalName9 attr90 IDREF #IMPLIED>
+<!ELEMENT LegalName10 ANY>
+<!ATTLIST LegalName10 attr10 ID #IMPLIED>
+<!ATTLIST LegalName10 attr100 IDREF #IMPLIED>
+<!ELEMENT LegalName11 ANY>
+<!ATTLIST LegalName11 attr11 ID #IMPLIED>
+<!ATTLIST LegalName11 attr110 IDREF #IMPLIED>
+<!ELEMENT LegalName12 ANY>
+<!ATTLIST LegalName12 attr12 ID #IMPLIED>
+<!ATTLIST LegalName12 attr120 IDREF #IMPLIED>
+<!ELEMENT LegalName13 ANY>
+<!ATTLIST LegalName13 attr13 ID #IMPLIED>
+<!ATTLIST LegalName13 attr130 IDREF #IMPLIED>
+<!ELEMENT LegalName14 ANY>
+<!ATTLIST LegalName14 attr14 ID #IMPLIED>
+<!ATTLIST LegalName14 attr140 IDREF #IMPLIED>
+<!ELEMENT LegalName15 ANY>
+<!ATTLIST LegalName15 attr15 ID #IMPLIED>
+<!ATTLIST LegalName15 attr150 IDREF #IMPLIED>
+<!ELEMENT LegalName16 ANY>
+<!ATTLIST LegalName16 attr16 ID #IMPLIED>
+<!ATTLIST LegalName16 attr160 IDREF #IMPLIED>
+<!ELEMENT LegalName17 ANY>
+<!ATTLIST LegalName17 attr17 ID #IMPLIED>
+<!ATTLIST LegalName17 attr170 IDREF #IMPLIED>
+<!ELEMENT LegalName18 ANY>
+<!ATTLIST LegalName18 attr18 ID #IMPLIED>
+<!ATTLIST LegalName18 attr180 IDREF #IMPLIED>
+<!ELEMENT LegalName19 ANY>
+<!ATTLIST LegalName19 attr19 ID #IMPLIED>
+<!ATTLIST LegalName19 attr190 IDREF #IMPLIED>
+<!ELEMENT LegalName20 ANY>
+<!ATTLIST LegalName20 attr20 ID #IMPLIED>
+<!ATTLIST LegalName20 attr200 IDREF #IMPLIED>
+<!ELEMENT LegalName21 ANY>
+<!ATTLIST LegalName21 attr21 ID #IMPLIED>
+<!ATTLIST LegalName21 attr210 IDREF #IMPLIED>
+<!ELEMENT LegalName22 ANY>
+<!ATTLIST LegalName22 attr22 ID #IMPLIED>
+<!ATTLIST LegalName22 attr220 IDREF #IMPLIED>
+<!ELEMENT LegalName23 ANY>
+<!ATTLIST LegalName23 attr23 ID #IMPLIED>
+<!ATTLIST LegalName23 attr230 IDREF #IMPLIED>
+<!ELEMENT LegalName24 ANY>
+<!ATTLIST LegalName24 attr24 ID #IMPLIED>
+<!ATTLIST LegalName24 attr240 IDREF #IMPLIED>
+<!ELEMENT LegalName25 ANY>
+<!ATTLIST LegalName25 attr25 ID #IMPLIED>
+<!ATTLIST LegalName25 attr250 IDREF #IMPLIED>
+<!ELEMENT LegalName26 ANY>
+<!ATTLIST LegalName26 attr26 ID #IMPLIED>
+<!ATTLIST LegalName26 attr260 IDREF #IMPLIED>
+<!ELEMENT LegalName27 ANY>
+<!ATTLIST LegalName27 attr27 ID #IMPLIED>
+<!ATTLIST LegalName27 attr270 IDREF #IMPLIED>
+<!ELEMENT LegalName28 ANY>
+<!ATTLIST LegalName28 attr28 ID #IMPLIED>
+<!ATTLIST LegalName28 attr280 IDREF #IMPLIED>
+<!ELEMENT LegalName29 ANY>
+<!ATTLIST LegalName29 attr29 ID #IMPLIED>
+<!ATTLIST LegalName29 attr290 IDREF #IMPLIED>
+<!ELEMENT LegalName30 ANY>
+<!ATTLIST LegalName30 attr30 ID #IMPLIED>
+<!ATTLIST LegalName30 attr300 IDREF #IMPLIED>
+<!ELEMENT LegalName31 ANY>
+<!ATTLIST LegalName31 attr31 ID #IMPLIED>
+<!ATTLIST LegalName31 attr310 IDREF #IMPLIED>
+<!ELEMENT LegalName32 ANY>
+<!ATTLIST LegalName32 attr32 ID #IMPLIED>
+<!ATTLIST LegalName32 attr320 IDREF #IMPLIED>
+<!ELEMENT LegalName33 ANY>
+<!ATTLIST LegalName33 attr33 ID #IMPLIED>
+<!ATTLIST LegalName33 attr330 IDREF #IMPLIED>
+<!ELEMENT LegalName34 ANY>
+<!ATTLIST LegalName34 attr34 ID #IMPLIED>
+<!ATTLIST LegalName34 attr340 IDREF #IMPLIED>
+<!ELEMENT LegalName35 ANY>
+<!ATTLIST LegalName35 attr35 ID #IMPLIED>
+<!ATTLIST LegalName35 attr350 IDREF #IMPLIED>
+<!ELEMENT LegalName36 ANY>
+<!ATTLIST LegalName36 attr36 ID #IMPLIED>
+<!ATTLIST LegalName36 attr360 IDREF #IMPLIED>
+<!ELEMENT LegalName37 ANY>
+<!ATTLIST LegalName37 attr37 ID #IMPLIED>
+<!ATTLIST LegalName37 attr370 IDREF #IMPLIED>
+<!ELEMENT LegalName38 ANY>
+<!ATTLIST LegalName38 attr38 ID #IMPLIED>
+<!ATTLIST LegalName38 attr380 IDREF #IMPLIED>
+<!ELEMENT LegalName39 ANY>
+<!ATTLIST LegalName39 attr39 ID #IMPLIED>
+<!ATTLIST LegalName39 attr390 IDREF #IMPLIED>
+<!ELEMENT LegalName40 ANY>
+<!ATTLIST LegalName40 attr40 ID #IMPLIED>
+<!ATTLIST LegalName40 attr400 IDREF #IMPLIED>
+<!ELEMENT LegalName41 ANY>
+<!ATTLIST LegalName41 attr41 ID #IMPLIED>
+<!ATTLIST LegalName41 attr410 IDREF #IMPLIED>
+<!ELEMENT LegalName42 ANY>
+<!ATTLIST LegalName42 attr42 ID #IMPLIED>
+<!ATTLIST LegalName42 attr420 IDREF #IMPLIED>
+<!ELEMENT LegalName43 ANY>
+<!ATTLIST LegalName43 attr43 ID #IMPLIED>
+<!ATTLIST LegalName43 attr430 IDREF #IMPLIED>
+<!ELEMENT LegalName44 ANY>
+<!ATTLIST LegalName44 attr44 ID #IMPLIED>
+<!ATTLIST LegalName44 attr440 IDREF #IMPLIED>
+<!ELEMENT LegalName45 ANY>
+<!ATTLIST LegalName45 attr45 ID #IMPLIED>
+<!ATTLIST LegalName45 attr450 IDREF #IMPLIED>
+<!ELEMENT LegalName46 ANY>
+<!ATTLIST LegalName46 attr46 ID #IMPLIED>
+<!ATTLIST LegalName46 attr460 IDREF #IMPLIED>
+<!ELEMENT LegalName47 ANY>
+<!ATTLIST LegalName47 attr47 ID #IMPLIED>
+<!ATTLIST LegalName47 attr470 IDREF #IMPLIED>
+]>
+<!-- Legal Names containing one to four characters in order from the list below used in Attr delcs and attributes. x003A, 0x00C0, 0x00C1, 0x02FE, 0x00C2, 0x00C3, 0x02FD, 0x02FF, 0x0370, 0x0371, 0x037C, 0x037D, 0x037F, 0x0380, 0x1FFE, 0x1FFF, 0x200C, 0x200D, 0x2070, 0x2071, 0x218E, 0x218F, 0x2C00, 0x2C01, 0x2FEE, 0x2FEF, 0x3001, 0x3002, 0xD7FE, 0xD7FF, 0xF900, 0xF901, 0xFFFD, 0x002D, 0x002E, 0x0041, 0x007A, 0x0030, 0x00B7, 0x0300, 0x0301, 0x036E, 0x036F, 0x203F, 0x2040 -->
+<LegalName>
+ attr0=":" attr00=":"
+ attr1="À" attr10="À"
+ attr2="Ã" attr20="Ã"
+ attr3="˾" attr30="˾"
+ attr4="Â" attr40="Â"
+ attr5="Ã" attr50="Ã"
+ attr6="˽" attr60="˽"
+ attr7="Ë¿" attr70="Ë¿"
+ attr8="Í°" attr80="Í°"
+ attr9="ͱ" attr90="ͱ"
+ attr10="ͼͽ" attr100="ͼͽ"
+ attr11="ͽͿ" attr110="ͽͿ"
+ attr12="Ϳ΀" attr120="Ϳ΀"
+ attr13="΀῾" attr130="΀῾"
+ attr14="῾῿" attr140="῾῿"
+ attr15="῿‌" attr150="῿‌"
+ attr16="‌â€" attr160="‌â€"
+ attr17="â€â°" attr170="â€â°"
+ attr18="â°â±" attr180="â°â±"
+ attr19="â±â†Ž" attr190="â±â†Ž"
+ attr20="↎â†â°€" attr200="↎â†â°€"
+ attr21="â†â°€â°" attr210="â†â°€â°"
+ attr22="â°€â°â¿®" attr220="â°€â°â¿®"
+ attr23="â°â¿®â¿¯" attr230="â°â¿®â¿¯"
+ attr24="⿮⿯ã€" attr240="⿮⿯ã€"
+ attr25="⿯ã€ã€‚" attr250="⿯ã€ã€‚"
+ attr26="ã€ã€‚퟾" attr260="ã€ã€‚퟾"
+ attr27="。퟾퟿" attr270="。퟾퟿"
+ attr28="퟾퟿豈" attr280="퟾퟿豈"
+ attr29="퟿豈ï¤" attr290="퟿豈ï¤"
+ attr30="豈퟿퟾。" attr300="豈퟿퟾。"
+ attr31="ï¤ï¤€íŸ¿íŸ¾" attr310="ï¤ï¤€íŸ¿íŸ¾"
+ attr32="�ï¤ï¤€íŸ¿" attr320="�ï¤ï¤€íŸ¿"
+ attr33="-�ï¤ï¤€" attr330="-�ï¤ï¤€"
+ attr34=".-�ï¤" attr340=".-�ï¤"
+ attr35="A.-�" attr350="A.-�"
+ attr36="zA.-" attr360="zA.-"
+ attr37="0zA." attr370="0zA."
+ attr38="·0zA" attr380="·0zA"
+ attr39="̀·0z" attr390="̀·0z"
+ attr40="Ì̀·0" attr400="Ì̀·0"
+ attr41="Í®Ì̀·" attr410="Í®Ì̀·"
+ attr42="ͯͮÌÌ€" attr420="ͯͮÌÌ€"
+ attr43="‿ͯͮÌ" attr430="‿ͯͮÌ"
+ attr44="â€â€¿Í¯Í®" attr440="â€â€¿Í¯Í®"
+ attr45="nullâ€â€¿Í¯" attr450="nullâ€â€¿Í¯"
+ attr46="nullnullâ€â€¿" attr460="nullnullâ€â€¿"
+ attr47="nullnullnullâ€" attr470="nullnullnullâ€"
+</LegalName> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v05.xml
new file mode 100644
index 0000000000..c1b2f1372d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P05/ibm05v05.xml
@@ -0,0 +1,183 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE LegalName [
+<!ELEMENT LegalName ANY>
+<!ELEMENT LegalName0 ANY>
+<!ATTLIST LegalName0 attr0 CDATA #IMPLIED>
+<!ELEMENT LegalName1 ANY>
+<!ATTLIST LegalName1 attr1 CDATA #IMPLIED>
+<!ELEMENT LegalName2 ANY>
+<!ATTLIST LegalName2 attr2 CDATA #IMPLIED>
+<!ELEMENT LegalName3 ANY>
+<!ATTLIST LegalName3 attr3 CDATA #IMPLIED>
+<!ELEMENT LegalName4 ANY>
+<!ATTLIST LegalName4 attr4 CDATA #IMPLIED>
+<!ELEMENT LegalName5 ANY>
+<!ATTLIST LegalName5 attr5 CDATA #IMPLIED>
+<!ELEMENT LegalName6 ANY>
+<!ATTLIST LegalName6 attr6 CDATA #IMPLIED>
+<!ELEMENT LegalName7 ANY>
+<!ATTLIST LegalName7 attr7 CDATA #IMPLIED>
+<!ELEMENT LegalName8 ANY>
+<!ATTLIST LegalName8 attr8 CDATA #IMPLIED>
+<!ELEMENT LegalName9 ANY>
+<!ATTLIST LegalName9 attr9 CDATA #IMPLIED>
+<!ELEMENT LegalName10 ANY>
+<!ATTLIST LegalName10 attr10 CDATA #IMPLIED>
+<!ELEMENT LegalName11 ANY>
+<!ATTLIST LegalName11 attr11 CDATA #IMPLIED>
+<!ELEMENT LegalName12 ANY>
+<!ATTLIST LegalName12 attr12 CDATA #IMPLIED>
+<!ELEMENT LegalName13 ANY>
+<!ATTLIST LegalName13 attr13 CDATA #IMPLIED>
+<!ELEMENT LegalName14 ANY>
+<!ATTLIST LegalName14 attr14 CDATA #IMPLIED>
+<!ELEMENT LegalName15 ANY>
+<!ATTLIST LegalName15 attr15 CDATA #IMPLIED>
+<!ELEMENT LegalName16 ANY>
+<!ATTLIST LegalName16 attr16 CDATA #IMPLIED>
+<!ELEMENT LegalName17 ANY>
+<!ATTLIST LegalName17 attr17 CDATA #IMPLIED>
+<!ELEMENT LegalName18 ANY>
+<!ATTLIST LegalName18 attr18 CDATA #IMPLIED>
+<!ELEMENT LegalName19 ANY>
+<!ATTLIST LegalName19 attr19 CDATA #IMPLIED>
+<!ELEMENT LegalName20 ANY>
+<!ATTLIST LegalName20 attr20 CDATA #IMPLIED>
+<!ELEMENT LegalName21 ANY>
+<!ATTLIST LegalName21 attr21 CDATA #IMPLIED>
+<!ELEMENT LegalName22 ANY>
+<!ATTLIST LegalName22 attr22 CDATA #IMPLIED>
+<!ELEMENT LegalName23 ANY>
+<!ATTLIST LegalName23 attr23 CDATA #IMPLIED>
+<!ELEMENT LegalName24 ANY>
+<!ATTLIST LegalName24 attr24 CDATA #IMPLIED>
+<!ELEMENT LegalName25 ANY>
+<!ATTLIST LegalName25 attr25 CDATA #IMPLIED>
+<!ELEMENT LegalName26 ANY>
+<!ATTLIST LegalName26 attr26 CDATA #IMPLIED>
+<!ELEMENT LegalName27 ANY>
+<!ATTLIST LegalName27 attr27 CDATA #IMPLIED>
+<!ELEMENT LegalName28 ANY>
+<!ATTLIST LegalName28 attr28 CDATA #IMPLIED>
+<!ELEMENT LegalName29 ANY>
+<!ATTLIST LegalName29 attr29 CDATA #IMPLIED>
+<!ELEMENT LegalName30 ANY>
+<!ATTLIST LegalName30 attr30 CDATA #IMPLIED>
+<!ELEMENT LegalName31 ANY>
+<!ATTLIST LegalName31 attr31 CDATA #IMPLIED>
+<!ELEMENT LegalName32 ANY>
+<!ATTLIST LegalName32 attr32 CDATA #IMPLIED>
+<!ELEMENT LegalName33 ANY>
+<!ATTLIST LegalName33 attr33 CDATA #IMPLIED>
+<!ELEMENT LegalName34 ANY>
+<!ATTLIST LegalName34 attr34 CDATA #IMPLIED>
+<!ELEMENT LegalName35 ANY>
+<!ATTLIST LegalName35 attr35 CDATA #IMPLIED>
+<!ELEMENT LegalName36 ANY>
+<!ATTLIST LegalName36 attr36 CDATA #IMPLIED>
+<!ELEMENT LegalName37 ANY>
+<!ATTLIST LegalName37 attr37 CDATA #IMPLIED>
+<!ELEMENT LegalName38 ANY>
+<!ATTLIST LegalName38 attr38 CDATA #IMPLIED>
+<!ELEMENT LegalName39 ANY>
+<!ATTLIST LegalName39 attr39 CDATA #IMPLIED>
+<!ELEMENT LegalName40 ANY>
+<!ATTLIST LegalName40 attr40 CDATA #IMPLIED>
+<!ELEMENT LegalName41 ANY>
+<!ATTLIST LegalName41 attr41 CDATA #IMPLIED>
+<!ELEMENT LegalName42 ANY>
+<!ATTLIST LegalName42 attr42 CDATA #IMPLIED>
+<!ELEMENT LegalName43 ANY>
+<!ATTLIST LegalName43 attr43 CDATA #IMPLIED>
+<!ENTITY Name: "Test">
+<!ENTITY NameÀ "Test">
+<!ENTITY Nameà "Test">
+<!ENTITY Name˾ "Test">
+<!ENTITY Name "Test">
+<!ENTITY Nameà "Test">
+<!ENTITY Name˽ "Test">
+<!ENTITY Name˿ "Test">
+<!ENTITY NameÍ° "Test">
+<!ENTITY Nameͱ "Test">
+<!ENTITY Nameͼ "Test">
+<!ENTITY Nameͽ "Test">
+<!ENTITY NameͿ "Test">
+<!ENTITY Name΀ "Test">
+<!ENTITY Name῾ "Test">
+<!ENTITY Nameá¿¿ "Test">
+<!ENTITY Name‌ "Test">
+<!ENTITY Name†"Test">
+<!ENTITY Nameâ° "Test">
+<!ENTITY Nameâ± "Test">
+<!ENTITY Name↎ "Test">
+<!ENTITY Name↠"Test">
+<!ENTITY Nameâ°€ "Test">
+<!ENTITY Nameâ° "Test">
+<!ENTITY Nameâ¿® "Test">
+<!ENTITY Name⿯ "Test">
+<!ENTITY Name〠"Test">
+<!ENTITY Name。 "Test">
+<!ENTITY Name퟾ "Test">
+<!ENTITY Name퟿ "Test">
+<!ENTITY Name豈 "Test">
+<!ENTITY Nameï¤ "Test">
+<!ENTITY Name� "Test">
+<!ENTITY Name- "Test">
+<!ENTITY Name. "Test">
+<!ENTITY NameA "Test">
+<!ENTITY Namez "Test">
+<!ENTITY Name0 "Test">
+<!ENTITY Name· "Test">
+<!ENTITY Namè "Test">
+<!ENTITY NameÌ "Test">
+<!ENTITY NameÍ® "Test">
+<!ENTITY Nameͯ "Test">
+<!ENTITY Name‿ "Test">
+]>
+<!-- Legal Names containing one to four characters in order from the list below used in Attr delcs and attributes. x003A, 0x00C0, 0x00C1, 0x02FE, 0x00C2, 0x00C3, 0x02FD, 0x02FF, 0x0370, 0x0371, 0x037C, 0x037D, 0x037F, 0x0380, 0x1FFE, 0x1FFF, 0x200C, 0x200D, 0x2070, 0x2071, 0x218E, 0x218F, 0x2C00, 0x2C01, 0x2FEE, 0x2FEF, 0x3001, 0x3002, 0xD7FE, 0xD7FF, 0xF900, 0xF901, 0xFFFD, 0x002D, 0x002E, 0x0041, 0x007A, 0x0030, 0x00B7, 0x0300, 0x0301, 0x036E, 0x036F, 0x203F, 0x2040 -->
+<LegalName>
+<LegalName0 attr0="Name:" />
+<LegalName1 attr1="NameÀ" />
+<LegalName2 attr2="NameÃ" />
+<LegalName3 attr3="Name˾" />
+<LegalName4 attr4="NameÂ" />
+<LegalName5 attr5="NameÃ" />
+<LegalName6 attr6="Name˽" />
+<LegalName7 attr7="Name˿" />
+<LegalName8 attr8="NameÍ°" />
+<LegalName9 attr9="Nameͱ" />
+<LegalName10 attr10="Nameͼ" />
+<LegalName11 attr11="Nameͽ" />
+<LegalName12 attr12="NameͿ" />
+<LegalName13 attr13="Name΀" />
+<LegalName14 attr14="Name῾" />
+<LegalName15 attr15="Nameá¿¿" />
+<LegalName16 attr16="Name‌" />
+<LegalName17 attr17="Nameâ€" />
+<LegalName18 attr18="Nameâ°" />
+<LegalName19 attr19="Nameâ±" />
+<LegalName20 attr20="Name↎" />
+<LegalName21 attr21="Nameâ†" />
+<LegalName22 attr22="Nameâ°€" />
+<LegalName23 attr23="Nameâ°" />
+<LegalName24 attr24="Nameâ¿®" />
+<LegalName25 attr25="Name⿯" />
+<LegalName26 attr26="Nameã€" />
+<LegalName27 attr27="Name。" />
+<LegalName28 attr28="Name퟾" />
+<LegalName29 attr29="Name퟿" />
+<LegalName30 attr30="Name豈" />
+<LegalName31 attr31="Nameï¤" />
+<LegalName32 attr32="Name�" />
+<LegalName33 attr33="Name-" />
+<LegalName34 attr34="Name." />
+<LegalName35 attr35="NameA" />
+<LegalName36 attr36="Namez" />
+<LegalName37 attr37="Name0" />
+<LegalName38 attr38="Name·" />
+<LegalName39 attr39="Namè" />
+<LegalName40 attr40="NameÌ" />
+<LegalName41 attr41="NameÍ®" />
+<LegalName42 attr42="Nameͯ" />
+<LegalName43 attr43="Name‿" />
+</LegalName> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Entries
new file mode 100644
index 0000000000..ac114c7460
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Entries
@@ -0,0 +1,2 @@
+/ibm07v01.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Repository
new file mode 100644
index 0000000000..ce08b017d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/ibm07v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/ibm07v01.xml
new file mode 100644
index 0000000000..f9085fe9f5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P07/ibm07v01.xml
@@ -0,0 +1,82 @@
+<?xml version="1.1" encoding="UTF-8"?>
+<!DOCTYPE NMtokenName [
+<!ELEMENT NMtokenName ANY>
+<!ATTLIST NMtokenName thistoken0 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken1 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken2 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken3 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken4 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken5 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken6 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken7 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken8 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken9 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken10 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken11 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken12 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken13 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken14 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken15 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken16 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken17 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken18 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken19 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken20 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken21 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken22 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken23 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken24 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken25 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken26 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken27 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken28 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken29 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken30 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken31 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken32 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken33 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken34 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken35 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken36 NMTOKEN #IMPLIED>
+<!ATTLIST NMtokenName thistoken37 NMTOKEN #IMPLIED>
+]>
+<!-- LegalNameChar 0x300,0x333,0x369,0x37E,0x2000,0x2001,0x2002,0x2005,0x200B,0x200E,x200F,0x2069,0x2190,0x23FF,0x280F,0x2A00,0x2EDC,0x2FED,0x2FFF,0x3000,0xD800,0xD801,0xDAFF,0xDFFF,0xEFFF,0xF1FF,0xF8FF,0xFFFFF; _, ., 0, B7, C0, 2FFF in P07 -->
+<NMtokenName thistoken0=":"
+ thistoken1="À"
+ thistoken2="Ã"
+ thistoken3="˾"
+ thistoken4="À"
+ thistoken5="Ã"
+ thistoken6="˾"
+ thistoken7="Ë¿"
+ thistoken8="Í°"
+ thistoken9="ͱ"
+ thistoken10="ͼ"
+ thistoken11="ͽ"
+ thistoken12="Í¿"
+ thistoken13="΀"
+ thistoken14="῾"
+ thistoken15="á¿¿"
+ thistoken16="‌"
+ thistoken17="â€"
+ thistoken18="â°"
+ thistoken19="â±"
+ thistoken20="↎"
+ thistoken21="â†"
+ thistoken22="â°€"
+ thistoken23="â°"
+ thistoken24="â¿®"
+ thistoken25="⿯"
+ thistoken26="ã€"
+ thistoken27="。"
+ thistoken28="퟾"
+ thistoken29="퟿"
+ thistoken30="豈"
+ thistoken31="ï¤"
+ thistoken32="_"
+ thistoken33="."
+ thistoken34="0"
+ thistoken35="·"
+ thistoken36="À"
+ thistoken37="ͼ"
+ /> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Entries
new file mode 100644
index 0000000000..4d25ccca6a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Entries
@@ -0,0 +1,61 @@
+/ibm77v01.dtd/1.2/Fri Nov 14 15:36:17 2003//
+/ibm77v01.xml/1.2/Fri Nov 14 15:36:18 2003//
+/ibm77v02.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v02.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v03.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v03.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v04.ent/1.2/Fri Nov 14 15:36:18 2003//
+/ibm77v04.xml/1.2/Fri Nov 14 15:36:18 2003//
+/ibm77v05.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v05.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v06.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v06.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v07.dtd/1.2/Fri Nov 14 15:36:18 2003//
+/ibm77v07.xml/1.2/Fri Nov 14 15:36:18 2003//
+/ibm77v08.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v08.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v09.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v09.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v10.ent/1.2/Fri Nov 14 15:36:18 2003//
+/ibm77v10.xml/1.2/Fri Nov 14 15:36:18 2003//
+/ibm77v11.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v11.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v12.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v12.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v13.dtd/1.2/Fri Nov 14 15:36:18 2003//
+/ibm77v13.xml/1.2/Fri Nov 14 15:36:18 2003//
+/ibm77v14.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v14.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v15.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v15.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v16.ent/1.2/Fri Nov 14 15:36:18 2003//
+/ibm77v16.xml/1.2/Fri Nov 14 15:36:18 2003//
+/ibm77v17.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v17.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v18.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v18.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v19.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v19.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v20.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v20.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v21.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v21.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v22.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v22.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v23.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v23.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v24.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v24.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v25.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v25.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v26.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v26.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v27.dtd/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v27.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v28.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v28.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v29.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v29.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v30.ent/1.1.1.1/Wed Jul 2 17:27:03 2003//
+/ibm77v30.xml/1.1.1.1/Wed Jul 2 17:27:03 2003//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Repository
new file mode 100644
index 0000000000..cd4e508ce4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.dtd
new file mode 100644
index 0000000000..9ae6169f3d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.dtd
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<![INCLUDE [
+<!ELEMENT Ànode EMPTY>
+<!ELEMENT root ANY>
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.xml
new file mode 100644
index 0000000000..2f03d44e7b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v01.xml
@@ -0,0 +1,5 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v01.dtd">
+<root>
+ <Ànode/>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.dtd
new file mode 100644
index 0000000000..dc36b6b636
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.dtd
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<![INCLUDE [
+<!ELEMENT á¿¿node EMPTY>
+<!ELEMENT root ANY>
+]]> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.xml
new file mode 100644
index 0000000000..d303f398b5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v02.xml
@@ -0,0 +1,5 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v02.dtd">
+<root>
+ <á¿¿node/>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.dtd
new file mode 100644
index 0000000000..05a67aea57
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.dtd
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<![INCLUDE [
+<!ELEMENT ï¤node EMPTY>
+<!ELEMENT root ANY>
+]]> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.xml
new file mode 100644
index 0000000000..2b2cc810ae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v03.xml
@@ -0,0 +1,5 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v03.dtd">
+<root>
+ <ï¤node/>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.ent
new file mode 100644
index 0000000000..8d86d6a26e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.ent
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<Önode/><Önode/><Önode/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.xml
new file mode 100644
index 0000000000..0d2a4cd04a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v04.xml
@@ -0,0 +1,7 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (Önode*)>
+<!ELEMENT Önode EMPTY>
+<!ENTITY e SYSTEM "ibm77v04.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.ent
new file mode 100644
index 0000000000..4391744380
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.ent
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<á¿¿node/><á¿¿node/><á¿¿node/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.xml
new file mode 100644
index 0000000000..75dfe9b86a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v05.xml
@@ -0,0 +1,7 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (á¿¿node*)>
+<!ELEMENT á¿¿node EMPTY>
+<!ENTITY e SYSTEM "ibm77v05.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.ent
new file mode 100644
index 0000000000..cf3f2d547d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.ent
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<ï¤root/><ï¤root/><ï¤root/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.xml
new file mode 100644
index 0000000000..d0d499daf9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v06.xml
@@ -0,0 +1,7 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (ï¤root*)>
+<!ELEMENT ï¤root EMPTY>
+<!ENTITY e SYSTEM "ibm77v06.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.dtd
new file mode 100644
index 0000000000..df6388e385
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.dtd
@@ -0,0 +1,5 @@
+<?xml version='1.1' encoding='UTF-8'?>
+<![INCLUDE [
+<!ELEMENT Ønode EMPTY>
+<!ELEMENT root ANY>
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.xml
new file mode 100644
index 0000000000..a3667b9edc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v07.xml
@@ -0,0 +1,5 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v07.dtd">
+<root>
+ <Ønode/>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.dtd
new file mode 100644
index 0000000000..a610166780
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.dtd
@@ -0,0 +1,5 @@
+<?xml version='1.1' encoding='UTF-8'?>
+<![INCLUDE [
+<!ELEMENT á¿¿node EMPTY>
+<!ELEMENT root ANY>
+]]> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.xml
new file mode 100644
index 0000000000..0ffa57ab27
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v08.xml
@@ -0,0 +1,5 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v08.dtd">
+<root>
+ <á¿¿node/>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.dtd
new file mode 100644
index 0000000000..44c2564a6c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.dtd
@@ -0,0 +1,5 @@
+<?xml version='1.1' encoding='UTF-8'?>
+<![INCLUDE [
+<!ELEMENT ï¤node EMPTY>
+<!ELEMENT root ANY>
+]]> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.xml
new file mode 100644
index 0000000000..d955fe34cb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v09.xml
@@ -0,0 +1,5 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v09.dtd">
+<root>
+ <ï¤node/>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.ent
new file mode 100644
index 0000000000..4b2573ba5a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.ent
@@ -0,0 +1,2 @@
+<?xml version='1.1' encoding='UTF-8'?>
+<öroot/><öroot/><öroot/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.xml
new file mode 100644
index 0000000000..2a19ceba0a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v10.xml
@@ -0,0 +1,7 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (öroot*)>
+<!ELEMENT öroot EMPTY>
+<!ENTITY e SYSTEM "ibm77v10.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.ent
new file mode 100644
index 0000000000..8b9b9d9349
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.ent
@@ -0,0 +1,2 @@
+<?xml version='1.1' encoding='UTF-8'?>
+<á¿¿root/><á¿¿root/><á¿¿root/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.xml
new file mode 100644
index 0000000000..9819fc6d30
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v11.xml
@@ -0,0 +1,7 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (á¿¿root*)>
+<!ELEMENT á¿¿root EMPTY>
+<!ENTITY e SYSTEM "ibm77v11.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.ent
new file mode 100644
index 0000000000..3f4cc25e67
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.ent
@@ -0,0 +1,2 @@
+<?xml version='1.1' encoding='UTF-8'?>
+<ï¤root/><ï¤root/><ï¤root/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.xml
new file mode 100644
index 0000000000..d9d639e336
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v12.xml
@@ -0,0 +1,7 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (ï¤root*)>
+<!ELEMENT ï¤root EMPTY>
+<!ENTITY e SYSTEM "ibm77v12.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.dtd
new file mode 100644
index 0000000000..e40682d095
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.dtd
@@ -0,0 +1,4 @@
+<![INCLUDE [
+<!ELEMENT ønode EMPTY>
+<!ELEMENT root ANY>
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.xml
new file mode 100644
index 0000000000..3b79a6a083
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v13.xml
@@ -0,0 +1,5 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v13.dtd">
+<root>
+ <ønode/>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.dtd
new file mode 100644
index 0000000000..6cc72c254f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.dtd
@@ -0,0 +1,4 @@
+<![INCLUDE [
+<!ELEMENT á¿¿node EMPTY>
+<!ELEMENT root ANY>
+]]> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.xml
new file mode 100644
index 0000000000..23fdd40346
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v14.xml
@@ -0,0 +1,5 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v14.dtd">
+<root>
+ <á¿¿node/>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.dtd
new file mode 100644
index 0000000000..8a1db69f4c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.dtd
@@ -0,0 +1,4 @@
+<![INCLUDE [
+<!ELEMENT ï¤node EMPTY>
+<!ELEMENT root ANY>
+]]> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.xml
new file mode 100644
index 0000000000..12f6ee9275
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v15.xml
@@ -0,0 +1,5 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v15.dtd">
+<root>
+ <ï¤node/>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.ent
new file mode 100644
index 0000000000..88d27c7455
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.ent
@@ -0,0 +1 @@
+<Ë¿root/><Ë¿root/><Ë¿root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.xml
new file mode 100644
index 0000000000..a1099c212a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v16.xml
@@ -0,0 +1,7 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (Ë¿root*)>
+<!ELEMENT Ë¿root EMPTY>
+<!ENTITY e SYSTEM "ibm77v16.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.ent
new file mode 100644
index 0000000000..6733c33def
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.ent
@@ -0,0 +1 @@
+<á¿¿root/><á¿¿root/><á¿¿root/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.xml
new file mode 100644
index 0000000000..87b3a34d56
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v17.xml
@@ -0,0 +1,7 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (á¿¿root*)>
+<!ELEMENT á¿¿root EMPTY>
+<!ENTITY e SYSTEM "ibm77v17.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.ent
new file mode 100644
index 0000000000..2cfc23280c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.ent
@@ -0,0 +1 @@
+<ï¤root/><ï¤root/><ï¤root/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.xml
new file mode 100644
index 0000000000..9841115d91
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v18.xml
@@ -0,0 +1,7 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (ï¤root*)>
+<!ELEMENT ï¤root EMPTY>
+<!ENTITY e SYSTEM "ibm77v18.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.dtd
new file mode 100644
index 0000000000..8dfe8e4056
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.dtd
@@ -0,0 +1,3 @@
+<?xml version='1.1' encoding='UTF-8'?>
+<!ELEMENT root (#PCDATA)>
+<!ENTITY root_content "This is a test &#x7F;char"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.xml
new file mode 100644
index 0000000000..2ffe4f5b07
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v19.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v19.dtd">
+<root>Test</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.dtd
new file mode 100644
index 0000000000..fe003dffd5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.dtd
@@ -0,0 +1,3 @@
+<?xml version='1.1' encoding='UTF-8'?>
+<!ELEMENT root (#PCDATA)>
+<!ENTITY root_content "This is a test &#x0080;char"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.xml
new file mode 100644
index 0000000000..875443b086
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v20.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v20.dtd">
+<root>Test</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.dtd
new file mode 100644
index 0000000000..0f94c7c779
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.dtd
@@ -0,0 +1,3 @@
+<?xml version='1.1' encoding='UTF-8'?>
+<!ELEMENT root (#PCDATA)>
+<!ENTITY root_content "This is a test &#x009E;char"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.xml
new file mode 100644
index 0000000000..9df7ca0bcc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v21.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v21.dtd">
+<root>Test</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.ent
new file mode 100644
index 0000000000..4d91f6ba0a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.ent
@@ -0,0 +1,2 @@
+<?xml version='1.1' encoding='UTF-8'?>
+&#x007F; \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.xml
new file mode 100644
index 0000000000..f9865b08dd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v22.xml
@@ -0,0 +1,6 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm77v22.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.ent
new file mode 100644
index 0000000000..1588316354
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.ent
@@ -0,0 +1,2 @@
+<?xml version='1.1' encoding='UTF-8'?>
+&#x0080; \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.xml
new file mode 100644
index 0000000000..218cff6621
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v23.xml
@@ -0,0 +1,6 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm77v23.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.ent
new file mode 100644
index 0000000000..830bb2afc8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.ent
@@ -0,0 +1,2 @@
+<?xml version='1.1' encoding='UTF-8'?>
+&#x009F; \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.xml
new file mode 100644
index 0000000000..2191ab17e5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v24.xml
@@ -0,0 +1,6 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm77v24.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.dtd
new file mode 100644
index 0000000000..eabbbc96c2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT root (#PCDATA)>
+<!ENTITY root_content "<!-- &#x007F;&#x008F;-->"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.xml
new file mode 100644
index 0000000000..cfa805ff12
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v25.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v25.dtd">
+<root>Test</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.dtd
new file mode 100644
index 0000000000..ca0ef5fe82
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT root (#PCDATA)>
+<!ENTITY root_content "<?PITarget &#x0080;&#x0090; PIData?>"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.xml
new file mode 100644
index 0000000000..242ec38a24
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v26.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v26.dtd">
+<root>Test</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.dtd
new file mode 100644
index 0000000000..698fca1134
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.dtd
@@ -0,0 +1,3 @@
+<?xml encoding='UTF-8'?>
+<!ELEMENT root (#PCDATA)>
+<!ENTITY root_content "&#x009F;&#x0081;"> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.xml
new file mode 100644
index 0000000000..9ccfe5f90a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v27.xml
@@ -0,0 +1,3 @@
+<?xml version='1.1'?>
+<!DOCTYPE root SYSTEM "ibm77v27.dtd">
+<root>Test</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.ent
new file mode 100644
index 0000000000..5396b2f249
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.ent
@@ -0,0 +1 @@
+&#x007F;&#x009F;&#x0080; \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.xml
new file mode 100644
index 0000000000..a8fb35b6ed
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v28.xml
@@ -0,0 +1,6 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm77v28.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.ent
new file mode 100644
index 0000000000..9554e5711f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.ent
@@ -0,0 +1 @@
+&#x0085;&#x008F; \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.xml
new file mode 100644
index 0000000000..4b673abf56
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v29.xml
@@ -0,0 +1,6 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm77v29.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.ent
new file mode 100644
index 0000000000..97822f7d7a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.ent
@@ -0,0 +1,2 @@
+<?xml encoding='UTF-8'?>
+&#x0001;&#x007F; \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.xml
new file mode 100644
index 0000000000..37c9bdb222
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/ibm/xml-1.1/valid/P77/ibm77v30.xml
@@ -0,0 +1,6 @@
+<?xml version='1.1'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "ibm77v30.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Entries
new file mode 100644
index 0000000000..ba86ca54fd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Entries
@@ -0,0 +1,20 @@
+/japanese.xml/1.5/Thu Mar 4 18:18:39 2004//
+/pr-xml-euc-jp.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/pr-xml-iso-2022-jp.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/pr-xml-little-endian.xml/1.3/Thu Jun 6 14:31:46 2002//
+/pr-xml-shift_jis.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/pr-xml-utf-16.xml/1.2/Tue Mar 19 14:10:29 2002//
+/pr-xml-utf-8.xml/1.2/Tue Mar 19 14:09:57 2002//
+/spec.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/weekly-euc-jp.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/weekly-euc-jp.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/weekly-iso-2022-jp.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/weekly-iso-2022-jp.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/weekly-little-endian.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/weekly-shift_jis.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/weekly-shift_jis.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/weekly-utf-16.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/weekly-utf-16.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/weekly-utf-8.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/weekly-utf-8.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Repository
new file mode 100644
index 0000000000..86eb60e7df
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/japanese
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/japanese.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/japanese.xml
new file mode 100644
index 0000000000..0fe6e589dc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/japanese.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)japanese.xml 1.4 99/02/03
+ Copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+-->
+
+<TESTCASES PROFILE="Fuji Xerox Japanese Text Tests">
+
+ <TEST TYPE="error" SECTIONS="4.3.3 [4,84]"
+ ID="pr-xml-euc-jp" ENTITIES="parameter" URI="pr-xml-euc-jp.xml">
+ Test support for the EUC-JP encoding, and for text
+ which relies on Japanese characters.
+ <EM>If a processor does not support this encoding, it must
+ report a fatal error.</EM>
+ (Also requires ability to process a moderately complex DTD.)
+ </TEST>
+ <TEST TYPE="error" SECTIONS="4.3.3 [4,84]"
+ ID="pr-xml-iso-2022-jp" ENTITIES="parameter" URI="pr-xml-iso-2022-jp.xml">
+ Test support for the ISO-2022-JP encoding, and for text
+ which relies on Japanese characters.
+ <EM>If a processor does not support this encoding, it must
+ report a fatal error.</EM>
+ (Also requires ability to process a moderately complex DTD.)
+ </TEST>
+ <TEST TYPE="valid" SECTIONS="4.3.3 [4,84]"
+ ID="pr-xml-little" ENTITIES="parameter" URI="pr-xml-little-endian.xml">
+ Test support for little-endian UTF-16 text
+ which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </TEST>
+ <TEST TYPE="error" SECTIONS="4.3.3 [4,84]"
+ ID="pr-xml-shift_jis" ENTITIES="parameter" URI="pr-xml-shift_jis.xml">
+ Test support for the Shift_JIS encoding, and for text
+ which relies on Japanese characters.
+ <EM>If a processor does not support this encoding, it must
+ report a fatal error.</EM>
+ (Also requires ability to process a moderately complex DTD.)
+ </TEST>
+ <TEST TYPE="valid" SECTIONS="4.3.3 [4,84]"
+ ID="pr-xml-utf-16" ENTITIES="parameter" URI="pr-xml-utf-16.xml">
+ Test support UTF-16 text which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </TEST>
+ <TEST TYPE="valid" SECTIONS="4.3.3 [4,84]"
+ ID="pr-xml-utf-8" ENTITIES="parameter" URI="pr-xml-utf-8.xml">
+ Test support for UTF-8 text which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </TEST>
+
+ <TEST TYPE="error" SECTIONS="4.3.3 [4,84]"
+ ID="weekly-euc-jp" ENTITIES="parameter" URI="weekly-euc-jp.xml">
+ Test support for EUC-JP encoding, and
+ XML names which contain Japanese characters.
+ <EM>If a processor does not support this encoding, it must
+ report a fatal error.</EM>
+ </TEST>
+ <TEST TYPE="error" SECTIONS="4.3.3 [4,84]"
+ ID="weekly-iso-2022-jp" ENTITIES="parameter" URI="weekly-iso-2022-jp.xml">
+ Test support for ISO-2022-JP encoding, and
+ XML names which contain Japanese characters.
+ <EM>If a processor does not support this encoding, it must
+ report a fatal error.</EM>
+ </TEST>
+ <TEST TYPE="valid" SECTIONS="4.3.3 [4,84]"
+ ID="weekly-little" ENTITIES="parameter" URI="weekly-little-endian.xml">
+ Test support for little-endian UTF-16 encoding, and
+ XML names which contain Japanese characters.
+ </TEST>
+ <TEST TYPE="error" SECTIONS="4.3.3 [4,84]"
+ ID="weekly-shift_jis" ENTITIES="parameter" URI="weekly-shift_jis.xml">
+ Test support for Shift_JIS encoding, and
+ XML names which contain Japanese characters.
+ <EM>If a processor does not support this encoding, it must
+ report a fatal error.</EM>
+ </TEST>
+ <TEST TYPE="valid" SECTIONS="4.3.3 [4,84]"
+ ID="weekly-utf-16" ENTITIES="parameter" URI="weekly-utf-16.xml">
+ Test support for UTF-16 encoding, and
+ XML names which contain Japanese characters.
+ </TEST>
+ <TEST TYPE="valid" SECTIONS="4.3.3 [4,84]"
+ ID="weekly-utf-8" ENTITIES="parameter" URI="weekly-utf-8.xml">
+ Test support for UTF-8 encoding and
+ XML names which contain Japanese characters.
+ </TEST>
+
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-euc-jp.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-euc-jp.xml
new file mode 100644
index 0000000000..d7ee020a9f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-euc-jp.xml
@@ -0,0 +1,3549 @@
+<?xml version="1.0" encoding="euc-jp"?>
+<!DOCTYPE spec SYSTEM "spec.dtd" [
+
+<!-- ÆüËܸìÌõ¤Î¤¿¤á¤Î²òÀÏÂоݼÂÂΡʤ³¤³¤«¤é¡Ë -->
+
+<!ENTITY TR-or-Rec "»ÅÍͽñ">
+<!-- <!ENTITY TR-or-Rec "ɸ½à¾ðÊó(TR)"> -->
+<!ENTITY eTR-or-Rec "specification">
+<!-- <!ENTITY eTR-or-Rec "technical report(TR)"> -->
+<!ENTITY application "¥¢¥×¥ê¥±¡¼¥·¥ç¥ó">
+<!ENTITY error "¥¨¥é¡¼">
+<!ENTITY fatal-error "Ã×̿Ū¥¨¥é¡¼">
+<!ENTITY parsed-data "²òÀϤµ¤ì¤ë¥Ç¡¼¥¿">
+<!ENTITY unparsed-data "²òÀϤµ¤ì¤Ê¤¤¥Ç¡¼¥¿">
+<!ENTITY parsed-entity "²òÀÏÂоݼÂÂÎ">
+<!ENTITY parser "¥Ñ¡¼¥µ">
+<!ENTITY unparsed-entity "²òÀÏÂоݳ°¼ÂÂÎ">
+<!ENTITY well-formed "À°·Á¼°">
+<!ENTITY valid "ÂÅÅö">
+<!ENTITY validity "ÂÅÅöÀ­">
+<!ENTITY escape "ÊÌ°·¤¤">
+<!ENTITY prolog "½ñ¤­">
+<!ENTITY surrogate-blocks "¥µ¥í¥²¡¼¥È¥Ö¥í¥Ã¥¯">
+<!ENTITY letter "»ú">
+<!ENTITY ideographic "Åý¹ç´Á»ú">
+<!ENTITY markup "¥Þ¡¼¥¯ÉÕ¤±">
+<!ENTITY left-angle-bracket "ÉÔÅù¹æ(¾®¤Ê¤ê)">
+<!ENTITY right-angle-bracket "ÉÔÅù¹æ(Âç¤Ê¤ê)">
+<!ENTITY string "ʸ»úÎó">
+<!ENTITY char-string "ʸ»úÎó"><!-- string of chararacters,
+ character strings, strings,
+ characters ¤Ï¤¹¤Ù¤Æʸ»úÎó¤È¤¹¤ë -->
+<!ENTITY replacement-text "ÃÖ´¹¥Æ¥­¥¹¥È">
+<!ENTITY single-quote "°ì½Å°úÍÑÉä">
+<!ENTITY double-quote "Æó½Å°úÍÑÉä">
+<!ENTITY adaptations-annex "ŬÍÑÉí°½ñ">
+<!ENTITY root "¥ë¡¼¥È">
+<!ENTITY base-character "´ðÄìʸ»ú">
+<!ENTITY diacritical-mark "ȯ²»Éä"><!--(¥À¥¤¥¢¥¯¥ê¥Æ¥£¥«¥ë¥Þ¡¼¥¯)¤ò½é½Ð¤Î¤È¤­Ê䤦-->
+<!ENTITY composed-form "¹çÀ®·Á¼°">
+<!ENTITY standalone "¥¹¥¿¥ó¥É¥¢¥í¥ó">
+<!ENTITY double-hyphen "ÆóÏ¢¥Ï¥¤¥Õ¥ó">
+<!--<!ENTITY case-fold "Âçʸ»ú¤«¾®Ê¸»ú¤Ø¤ÎÅý°ì">-->
+<!-- <!ENTITY case-fold "Èæ³Ó¤Î¤È¤­¡¤Âçʸ»ú¤È¾®Ê¸»ú¤ÎƱ°ì»ë">-->
+<!ENTITY parameter "¥Ñ¥é¥á¥¿">
+<!ENTITY stream "¥¹¥È¥ê¡¼¥à">
+<!ENTITY validating "ÂÅÅöÀ­¤ò¸¡¾Ú¤¹¤ë">
+<!ENTITY non-validating "ÂÅÅöÀ­¤ò¸¡¾Ú¤·¤Ê¤¤">
+<!ENTITY user "¥æ¡¼¥¶">
+<!--<!ENTITY at-user-option "¥æ¡¼¥¶¤¬¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­">-->
+<!ENTITY at-user-option "¥æ¡¼¥¶¤Î¥ª¥×¥·¥ç¥ó»ØÄê¤Ë¤è¤Ã¤Æ¤Ï">
+<!ENTITY content-particle "ÆâÍÆÁÇ»Ò">
+<!ENTITY processor "¥×¥í¥»¥µ">
+<!ENTITY default "¥Ç¥Õ¥©¥ë¥È">
+<!ENTITY default-value "¥Ç¥Õ¥©¥ë¥ÈÃÍ">
+<!ENTITY header "¥Ø¥Ã¥À">
+<!ENTITY target "¥¿¡¼¥²¥Ã¥È">
+<!ENTITY mixed-content "º®¹çÆâÍÆ">
+<!ENTITY country-code "¹ñ¥³¡¼¥É">
+<!ENTITY language-code "¸À¸ì¥³¡¼¥É">
+<!ENTITY version "ÈÇ"> <!-- version 1.0¤ÏÂè1.0ÈÇ -->
+<!ENTITY match "¥Þ¥Ã¥Á">
+<!ENTITY character-value "ʸ»úÈÖ¹æ">
+<!ENTITY byte-order-mark "¥Ð¥¤¥È½ç¥Þ¡¼¥¯">
+<!ENTITY bypass "½èÍý¤·¤Ê¤¤">
+<!ENTITY identifier "¼±ÊÌ»Ò">
+<!-- <!ENTITY identify "¼±Ê̤¹¤ë"> -->
+<!ENTITY identify "ÆÃÄꤹ¤ë">
+<!-- <!ENTITY identified "¼±Ê̤µ¤ì¤ë"> -->
+<!ENTITY identified "ÆÃÄꤵ¤ì¤ë">
+<!ENTITY combining-character "·ë¹çʸ»ú">
+<!ENTITY subset "¥µ¥Ö¥»¥Ã¥È">
+<!ENTITY token "¥È¡¼¥¯¥ó">
+<!ENTITY literal "¥ê¥Æ¥é¥ë">
+
+<!ENTITY parenthesis "¤«¤Ã¤³">
+<!ENTITY left-parenthesis "³«¤­¤«¤Ã¤³">
+<!ENTITY right-parenthesis "ÊĤ¸¤«¤Ã¤³">
+
+<!-- ¤¢¤È¤Çµ¤¤¬¤Ä¤¤¤¿¤â¤Î JIS X0221¤ò¸«¤ëɬÍפ¢¤ê -->
+
+<!ENTITY extender "¥¨¥¯¥¹¥Æ¥ó¥À">
+<!ENTITY property "¥×¥í¥Ñ¥Æ¥£">
+<!ENTITY property-list "¥×¥í¥Ñ¥Æ¥£¥ê¥¹¥È">
+<!ENTITY property-file "¥×¥í¥Ñ¥Æ¥£¥Õ¥¡¥¤¥ë">
+<!ENTITY font-decomposition "¥Õ¥©¥ó¥Èʬ²ò">
+<!ENTITY compatibility-decomposition "¸ß´¹À­Ê¬²ò">
+<!ENTITY compatibility-area "¸ß´¹À­Îΰè">
+
+<!ENTITY language-identification "¸À¸ì¼±ÊÌ">
+
+<!ENTITY space-character "¥¹¥Ú¡¼¥¹Ê¸»ú">
+<!ENTITY space "¥¹¥Ú¡¼¥¹">
+<!ENTITY code-value "¥³¡¼¥ÉÃÍ">
+<!ENTITY normative "µ¬Äê¤Î">
+<!ENTITY hueristics "¥Ò¥å¡¼¥ê¥¹¥Æ¥£¥Ã¥¯">
+<!ENTITY informative "">
+
+<!ENTITY WebSGML 'ISO 8879¤Ø¤ÎWebSGML&adaptations-annex;'>
+<!ENTITY XML.version "1.0">
+<!ENTITY doc.date "1997ǯ12·î8Æü">
+<!ENTITY iso6.doc.date "971208">
+<!ENTITY w3c.doc.date "97ǯ12·î3Æü">
+<!ENTITY draft.day '8Æü'>
+<!ENTITY draft.month '12·î'>
+<!ENTITY draft.year '1997ǯ'>
+
+<!-- ÆüËܸìÌõ¤Î¤¿¤á¤Î²òÀÏÂоݼÂÂΡʤ³¤³¤Þ¤Ç¡Ë -->
+
+<!-- LAST TOUCHED BY: Tim Bray, 3 Dec 1997 -->
+
+<!-- The words 'FINAL EDIT' in comments mark places where changes
+need to be made after approval of the document by the ERB, before
+publication. -->
+
+<!ENTITY XML.version "1.0">
+<!ENTITY doc.date "8 December 1997">
+<!ENTITY iso6.doc.date "971208">
+<!ENTITY w3c.doc.date "03-Dec-97">
+<!ENTITY draft.day '8'>
+<!ENTITY draft.month 'December'>
+<!ENTITY draft.year '1997'>
+
+<!ENTITY WebSGML
+ 'WebSGML Adaptations Annex to ISO 8879'>
+
+<!ENTITY newline " ">
+<!-- old: <!ENTITY newline "&#8232;"> -->
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!--<!ENTITY amp "&"> -->
+<!ENTITY xmlpio "'&lt;?xml'">
+<!ENTITY pic "'?>'">
+<!ENTITY br "\n">
+<!ENTITY cellback '#c0d9c0'>
+<!ENTITY mdash "--"> <!-- was: <!ENTITY mdash "&#38;#151;"> -->
+<!ENTITY com "--">
+<!ENTITY como "--">
+<!ENTITY comc "--">
+<!ENTITY hcro "&amp;#x">
+<!-- <!ENTITY nbsp ""> -->
+<!ENTITY nbsp "&#160;">
+<!ENTITY magicents "<code>amp</code>,
+<code>lt</code>,
+<code>gt</code>,
+<code>apos</code>,
+<code>quot</code>">
+
+<!--ÆüËܸìÌõ¤Ë¤Ä¤¤¤Æ: ¥³¥á¥ó¥È¤ÏËÝÌõÂоݤ«¤é³°¤·¤Þ¤·¤¿¡£ÎëÌÚÏÂÉ× -->
+<!-- audience and distribution status: for use at publication time -->
+<!-- -->
+<!ENTITY doc.audience "¸ø³«¥ì¥Ó¥å¡¼µÚ¤ÓµÄÏÀ">
+<!ENTITY doc.distribution "¥Æ¥­¥¹¥ÈµÚ¤ÓˡΧ¾å¤ÎÃí°Õ¤ò²þÊѤ·¤Ê¤¤¸Â¤ê¡¤
+¼«Í³¤ËÇÛÉÛ¤·¤Æ¤â¤è¤¤">
+
+]>
+
+<!-- for Panorama *-->
+<?VERBATIM "eg" ?>
+
+<spec>
+<header>
+<title>³ÈÄ¥²Äǽ¤Ê&markup;¸À¸ì (XML)</title>
+<version>Âè1.0&version;</version>
+<w3c-designation>PR-xml-&iso6.doc.date;</w3c-designation>
+<w3c-doctype>World Wide Web Consortium</w3c-doctype>
+<pubdate><day>&draft.day;</day><month>&draft.month;</month><year>&draft.year;</year></pubdate>
+<notice><p>¤³¤ÎÁð°Æ¤Ï¡¤XML WGµÚ¤Ó¾¤Î´Ø·¸¼Ô¤Ë¤è¤ë¥ì¥Ó¥å¡¼¤Î¤¿¤á¤Î¤â¤Î¤Ç¤¢¤Ã¤Æ¡¤¸ø³«¤ÎµÄÏÀ¤Î¤¿¤á¤Î¤â¤Î¤Ç¤Ï¤Ê¤¤¡£
+<!-- FINAL EDIT: FIX --></p></notice>
+<publoc>
+<loc href="http://www.w3.org/TR/PR-xml-&iso6.doc.date;">
+http://www.w3.org/TR/PR-xml-&iso6.doc.date;</loc></publoc>
+<prevlocs>
+<loc href='http://www.w3.org/TR/WD-xml-961114'>
+http://www.w3.org/TR/WD-xml-961114</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970331'>
+http://www.w3.org/TR/WD-xml-lang-970331</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970630'>
+http://www.w3.org/TR/WD-xml-lang-970630</loc>
+<loc href='http://www.w3.org/TR/WD-xml-970807'>
+http://www.w3.org/TR/WD-xml-970807</loc>
+<loc href='http://www.w3.org/TR/WD-xml-971117'>
+http://www.w3.org/TR/WD-xml-971117</loc>
+</prevlocs>
+<authlist>
+<author><name>Tim Bray</name>
+<affiliation>Textuality and Netscape</affiliation>
+<email
+href="mailto:tbray@textuality.com">tbray@textuality.com</email></author>
+<author><name>Jean Paoli</name>
+<affiliation>Microsoft</affiliation>
+<email href="mailto:jeanpa@microsoft.com">jeanpa@microsoft.com</email></author>
+<author><name>C. M. Sperberg-McQueen</name>
+<affiliation>University of Illinois at Chicago</affiliation>
+<email href="mailto:cmsmcq@uic.edu">cmsmcq@uic.edu</email></author>
+</authlist>
+<status>
+ <p>¤³¤Î&TR-or-Rec;¤Ï, 1997ǯ12·î¤ËWorld Wide Web Consortium¤«¤é
+¸øɽ¤µ¤ì¤¿´«¹ð°ÆExtensible Markup Language versionÂè1.0ÈǤòËÝÌõ¤·, µ»
+½ÑŪÆâÍƤòÊѹ¹¤¹¤ë¤³¤È¤Ê¤¯ºîÀ®¤·¤¿&TR-or-Rec;¤Ç¤¢¤ë¡£This &eTR-or-Rec;
+is a translation of the XML proposed recommendation 1.0
+published by the World Wide Web Consortium in December 1997. It is
+intended that &eTR-or-Rec; is technically identical to the original.</p>
+
+<p>¸¶Ê¸¤Ë¤¢¤ë¡¢Ãøºî¸¢¤Ë´Ø¤·¤Æ¤Îµ­½Ò¤ò¼¡¤Ë¼¨¤¹¡£The
+original copyright notice is shown below:</p>
+
+<p>¤³¤ÎÈǤÎXML¤Îµ¬Äê¤Ï¡¤¸ø³«¥ì¥Ó¥å¡¼µÚ¤ÓµÄÏÀ¤ò
+ÌÜŪ¤È¤¹¤ë¡£¥Æ¥­¥¹¥ÈµÚ¤ÓˡΧ¾å¤ÎÃí°Õ¤ò²þÊѤ·¤Ê¤¤¸Â¤ê¡¤¼«Í³¤Ë
+ÇÛÉÛ¤·¤Æ¤â¤è¤¤¡£This version of the XML specification is for
+public review and discussion. It may be distributed freely,
+as long as all text and legal notices remain intact.</p>
+
+<p>¤³¤Î&TR-or-Rec;¤Î¸µ¤È¤Ê¤Ã¤¿XML´«¹ð°Æ¤Ï¡¤1998ǯ2·î¤ËWorld
+Wide Web Consortium¤«¤é¸øɽ¤µ¤ì¤¿XML´«¹ð¤Ë¤è¤Ã¤Æ¤¹¤Ç¤ËÃÖ¤­´¹
+¤¨¤é¤ì¤Æ¤¤¤ë¡£¤³¤Îɸ½à¾ðÊó¤Ï¡¤XML´«¹ð¤Ë½¾¤Ã¤ÆÄûÀµ¤¹¤ë¤³¤È¤ò
+ͽÄꤷ¤Æ¤¤¤ë¡£The XML Proposed Recommendation is superseded
+by the XML Recommendation which was published by the World
+Wide Web Consortium in February 1998. It is intended that
+this &eTR-or-Rec; be revised accordingly in the near future.</p>
+
+<p>¤³¤Î&TR-or-Rec;¤Ï¡¤°ÂÄꤷ¤¿¤â¤Î¤Ç¤¢¤Ã¤Æ¡¤ºòǯÍè¤Î<loc
+href='http://www.w3.org/XML'>XML³èÆ°</loc>¤òÄ̤¸¤ÆºîÀ®¤µ¤ì¤¿¡¤°ìÏ¢¤Îºî
+¶ÈÁð°Æ¤ò¸µ¤È¤¹¤ë¡£¸½ºß¡¤¹­ÈϰϤ˻ÈÍѤµ¤ì¤Æ¤¤¤ë¹ñºÝŪ¤Ê¥Æ¥­¥¹¥È½èÍý¤Îɸ
+½à(ɸ½à°ìÈ̲½&markup;¸À¸ì¡¤Standard Generalized Markup Language, ISO
+8879:1986¤ËÄɲõڤÓÄûÀµ¤ò²Ã¤¨¤¿¤â¤Î)¤Î¡¤WWW¾å¤Ç¤Î»ÈÍѤΤ¿¤á¤Ë&subset;
+²½¤·¤¿¸À¸ì¤ò¡¤¤³¤Î&TR-or-Rec;¤Ï¡¤µ¬Äꤹ¤ë¡£ISO 8879¤Î¤É¤Îµ¡Ç½¤ò¤³¤Î
+&subset;¤Ë»Ä¤¹¤«¡¤¤È¤¤¤¦·èÄê¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¤<loc
+href='http://www.w3.org/XML/#WG-decisions'>ÊÌÅÓÍÑ°Õ¤¹¤ë</loc>¡£XML¤Ï¡¤
+´û¤Ë¤¤¤¯¤Ä¤«¤Î¾¦Éʤǥµ¥Ý¡¼¥È¤µ¤ì¡¤XML¤ò¥µ¥Ý¡¼¥È¤¹¤ë<loc
+href='http://www.w3.org/XML/#software'>¥Õ¥ê¡¼¥¦¥§¥¢</loc>¤Î¿ô¤âÁý¤¨¤Æ
+¤¤¤ë¡£XML¤Ë´Ø¤¹¤ë¸ø³«¤ÎÏÀµÄ¤â¡¤¥ª¥ó¥é¥¤¥ó¤Ç<loc
+href='http://www.w3.org/XML/#discussion'>Æþ¼ê¤Ç¤­¤ë</loc>¡£It is a
+stable document derived from a series of working drafts produced over
+the last year as deliverables of the <loc
+href='http://www.w3.org/XML'>XML activity</loc>. It specifies a
+language created by subsetting an existing, widely used international
+text processing standard (Standard Generalized Markup Language, ISO
+8879:1986 as amended and corrected) for use on the World Wide Web.
+Details of the decisions regarding which features of ISO 8879 to
+retain in the subset <loc
+href='http://www.w3.org/XML/#WG-decisions'>are available
+separately</loc>. XML is already supported by some commercial
+products, and there are a growing number of <loc
+href='http://www.w3.org/XML/#software'>free implementations</loc>.
+Public discussions of XML <loc
+href='http://www.w3.org/XML/#discussion'>are accessible
+online</loc>.</p>
+
+<p>¤³¤Î&TR-or-Rec;¤Ç¤Ï¡¤<bibref ref="Berners-Lee"/>¤ËÄêµÁ¤¹¤ë
+URI(Uniform Resource Identifier)¤ò»ÈÍѤ¹¤ë¡£URI¤ÎÀ©Äêºî¶È¤Ï¿Ê¹ÔÃæ¤Ç¤¢¤Ã
+¤Æ¡¤<bibref ref="RFC1738"/>µÚ¤Ó<bibref ref="RFC1808"/>¤ò¹¹¿·¤¹¤ëͽÄê¤È
+¤Ê¤Ã¤Æ¤¤¤ë¡£¤³¤Îºî¶È¤¬RFC¤È¤·¤Æ¼õ¤±Æþ¤ì¤é¤ì¤Ê¤¤¾ì¹ç¤Ï¡¤¤³¤Îµ¬ÄøÆâ¤ÎURI
+¤Ø¤Î»²¾È¤Ï¡¤URL(Uniform Resource Locator)¤Ø¤Î»²¾È¤ËÂå¤ï¤ë¡£This
+specification uses the term URI, which is defined by <bibref
+ref="Berners-Lee"/>, a work in progress expected to update <bibref
+ref="RFC1738"/> and <bibref ref="RFC1808"/>. Should the work not be
+accepted as an RFC, the references to uniform resource identifiers
+(URIs) in this specification will become references to uniform
+resource locators (URLs).</p>
+
+ <p>XML¤Î»ÅÍͤ˽àµò¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤Î´ð½à¤È¤Ê¤ë¤ÏW3C¤Î¥µ¥¤¥È¤Ë¤¢
+¤ë¸¶Ê¸¤Ç¤¢¤ë¡£The normative version of the specification is
+the English version found at the W3C site.</p>
+
+ <p>¤³¤Îɸ½à¾ðÊó¤Ï¸¶»ÅÍͤȵ»½ÑŪ¤ËƱ°ì¤Ç¤¢¤ë¤³¤È¤ò°Õ¿Þ¤·¤Æ¤¤¤ë¤¬¡¢
+ËÝÌõ¾å¤Î¸í¤ê¤Ï¤¢¤êÆÀ¤ë¡£Although this technical report is
+intended to be technically identical to the original, it may
+contain errors from the translation.</p>
+
+ <p>È÷¹Í: ¸¶µ¬Äê¤È¤Îµ¬Äê²Õ½ê¤ÎÂбþ´Ø·¸¤òÌÀ¤é¤«¤Ë¤¹¤ë¤¿¤á¡¢¤³¤Î
+&TR-or-Rec;¤ÎÀá¹½À®µÚ¤ÓÀáÈÖ¹æ¤Ï¡¢¸¶µ¬Äê¤Î¤½¤ì¤é¤ò¤Ç¤­¤ë¤À¤±Êݸ¤·¤Æ¤¤
+¤ë¡£¤³¤Î&TR-or-Rec;¤ÎWebÈǤϡ¢¸¶µ¬Äê¤ÎHTML¥¿¥°¤ò¤½¤Î¤Þ¤ÞÊݸ¤·¤Æ¤¤¤ë¡£
+</p>
+</status>
+<!-- out of date
+<statusp>This is a W3C Working Draft for review by W3C members and other
+interested parties. It is a draft document and may be updated,
+replaced, or obsoleted by other documents at any time. It is
+inappropriate to use W3C Working Drafts as reference material or to
+cite them as other than "work in progress". A list of current W3C
+working drafts can be found at
+<loc href="http://www.w3.org/TR">http://www.w3.org/TR</loc>.</statusp>
+<statusp><emph>Note:</emph> Since working drafts are subject to frequent
+change, you are advised to reference the above URL, rather than the
+URLs for working drafts themselves.</statusp>
+<statusp>This work is part of the W3C SGML Activity (for current
+status, see <loc href="http://www.w3.org/MarkUp/SGML/Activity"
+>http://www.w3.org/MarkUp/SGML/Activity</loc>).</statusp>
+<p>The current
+draft of this specification
+presupposes the successful completion of the current
+work on the &WebSGML;, being prepared by ISO/IEC JTC1
+at the time this draft specification was drafted.
+If it is not
+adopted in the expected form, some clauses of this specification
+may change, and some
+recommendations now labeled "<termref def="dt-interop">for
+interoperability</termref>" will become requirements labeled
+"<termref def="dt-compat">for compatibility</termref>".
+</p>
+<p>The current draft of this specification uses the term
+URI, which is defined by
+<bibref ref="Berners-Lee"/>,
+which is work in progress expected to update
+<bibref ref="RFC1738"/> and <bibref ref="RFC1808"/>.
+Should the work in this draft not be accepted as an RFC, the
+references to uniform resource identifiers (URIs) in this
+specification will become references to uniform resource
+locators (URLs).</p>
+</status> -->
+<abstract>
+<p>³ÈÄ¥²Äǽ¤Ê&markup;¸À¸ì(XML)¤ÏSGML¤Î´Êñ¤ÊÊý¸À¤Ç¤¢¤Ã¤Æ¡¤¤³¤Î&TR-or-Rec;¤Ç¡¤¤½¤Î¤¹¤Ù¤Æ¤òµ¬Äꤹ¤ë¡£XML¤ÎÌÜɸ¤Ï¡¤¸½ºß¤ÎHTML¤ÈƱÍͤˡ¤°ìÈÌÀ­¤Î¤¢¤ëSGML¤ò¥¦¥§¥Ö¾å¤ÇÇÛÉÛ¡¤¼õ¿®µÚ¤Ó½èÍý¤Ç¤­¤ë¤³¤È¤È¤¹¤ë¡£XML¤Ï¼ÂÁõ¤¬ÍưפǤ¢¤Ã¤Æ¡¤SGMLµÚ¤ÓHTML¤Î¤É¤Á¤é¤ËÂФ·¤Æ¤âÁê¸ß±¿ÍÑÀ­¤òÊݤÄÀ߷פ¬¤Ê¤µ¤ì¤Æ¤¤¤ë¡£</p>
+</abstract>
+<pubstmt>
+<p>Chicago, Vancouver, Mountain View, et al.:
+World-Wide Web Consortium, XMLºî¶È¥°¥ë¡¼¥×, 1996, 1997.</p>
+</pubstmt>
+<sourcedesc>
+<p>Created in electronic form.</p>
+</sourcedesc>
+<langusage>
+<language id='EN'>English</language>
+<language id='ebnf'>Extended Backus-Naur Form (formal grammar)</language>
+</langusage>
+<revisiondesc>
+<slist>
+<sitem>1997-12-03 : CMSMcQ : yet further changes</sitem>
+<sitem>1997-12-02 : TB : further changes (see TB to XML WG,
+2 December 1997)</sitem>
+<sitem>1997-12-02 : CMSMcQ : deal with as many corrections and
+comments from the proofreaders as possible:
+entify hard-coded document date in pubdate element,
+change expansion of entity WebSGML,
+update status description as per Dan Connolly (am not sure
+about refernece to Berners-Lee et al.),
+add 'The' to abstract as per WG decision,
+move Relationship to Existing Standards to back matter and
+combine with References,
+re-order back matter so normative appendices come first,
+re-tag back matter so informative appendices are tagged informdiv1,
+remove XXX XXX from list of 'normative' specs in prose,
+move some references from Other References to Normative References,
+add RFC 1738, 1808, and 2141 to Other References (they are not
+normative since we do not require the processor to enforce any
+rules based on them),
+add reference to 'Fielding draft' (Berners-Lee et al.),
+move notation section to end of body,
+drop URIchar non-terminal and use SkipLit instead,
+lose stray reference to defunct nonterminal 'markupdecls',
+move reference to Aho et al. into appendix (Tim's right),
+add prose note saying that hash marks and fragment identifiers are
+NOT part of the URI formally speaking, and are NOT legal in
+system identifiers (processor 'may' signal an error).
+Work through:
+Tim Bray reacting to James Clark,
+Tim Bray on his own,
+Eve Maler,
+
+NOT DONE YET:
+change binary / text to unparsed / parsed.
+handle James's suggestion about &lt; in attriubte values
+uppercase hex characters,
+namechar list,
+</sitem>
+<sitem>1997-12-01 : JB : add some column-width parameters</sitem>
+<sitem>1997-12-01 : CMSMcQ : begin round of changes to incorporate
+recent WG decisions and other corrections:
+binding sources of character encoding info (27 Aug / 3 Sept),
+correct wording of Faust quotation (restore dropped line),
+drop SDD from EncodingDecl,
+change text at version number 1.0,
+drop misleading (wrong!) sentence about ignorables and extenders,
+modify definition of PCData to make bar on msc grammatical,
+change grammar's handling of internal subset (drop non-terminal markupdecls),
+change definition of includeSect to allow conditional sections,
+add integral-declaration constraint on internal subset,
+drop misleading / dangerous sentence about relationship of
+entities with system storage objects,
+change table body tag to htbody as per EM change to DTD,
+add rule about space normalization in public identifiers,
+add description of how to generate our name-space rules from
+Unicode character database (needs further work!).
+</sitem>
+<sitem>1997-10-08 : TB : Removed %-constructs again, new rules
+for PE appearance.</sitem>
+<sitem>1997-10-01 : TB : Case-sensitive markup; cleaned up
+element-type defs, lotsa little edits for style</sitem>
+<sitem>1997-09-25 : TB : Change to elm's new DTD, with
+substantial detail cleanup as a side-effect</sitem>
+<sitem>1997-07-24 : CMSMcQ : correct error (lost *) in definition
+of ignoreSectContents (thanks to Makoto Murata)</sitem>
+<sitem>Allow all empty elements to have end-tags, consistent with
+SGML TC (as per JJC).</sitem>
+<sitem>1997-07-23 : CMSMcQ : pre-emptive strike on pending corrections:
+introduce the term 'empty-element tag', note that all empty elements
+may use it, and elements declared EMPTY must use it.
+Add WFC requiring encoding decl to come first in an entity.
+Redefine notations to point to PIs as well as binary entities.
+Change autodetection table by removing bytes 3 and 4 from
+examples with Byte Order Mark.
+Add content model as a term and clarify that it applies to both
+mixed and element content.
+</sitem>
+<sitem>1997-06-30 : CMSMcQ : change date, some cosmetic changes,
+changes to productions for choice, seq, Mixed, NotationType,
+Enumeration. Follow James Clark's suggestion and prohibit
+conditional sections in internal subset. TO DO: simplify
+production for ignored sections as a result, since we don't
+need to worry about parsers which don't expand PErefs finding
+a conditional section.</sitem>
+<sitem>1997-06-29 : TB : various edits</sitem>
+<sitem>1997-06-29 : CMSMcQ : further changes:
+Suppress old FINAL EDIT comments and some dead material.
+Revise occurrences of % in grammar to exploit Henry Thompson's pun,
+especially markupdecl and attdef.
+Remove RMD requirement relating to element content (?).
+</sitem>
+<sitem>1997-06-28 : CMSMcQ : Various changes for 1 July draft:
+Add text for draconian error handling (introduce
+the term Fatal Error).
+RE deleta est (changing wording from
+original announcement to restrict the requirement to validating
+parsers).
+Tag definition of validating processor and link to it.
+Add colon as name character.
+Change def of %operator.
+Change standard definitions of lt, gt, amp.
+Strip leading zeros from #x00nn forms.</sitem>
+<sitem>1997-04-02 : CMSMcQ : final corrections of editorial errors
+found in last night's proofreading. Reverse course once more on
+well-formed: Webster's Second hyphenates it, and that's enough
+for me.</sitem>
+<sitem>1997-04-01 : CMSMcQ : corrections from JJC, EM, HT, and self</sitem>
+<sitem>1997-03-31 : Tim Bray : many changes</sitem>
+<sitem>1997-03-29 : CMSMcQ : some Henry Thompson (on entity handling),
+some Charles Goldfarb, some ERB decisions (PE handling in miscellaneous
+declarations. Changed Ident element to accept def attribute.
+Allow normalization of Unicode characters. move def of systemliteral
+into section on literals.</sitem>
+<sitem>1997-03-28 : CMSMcQ : make as many corrections as possible, from
+Terry Allen, Norbert Mikula, James Clark, Jon Bosak, Henry Thompson,
+Paul Grosso, and self. Among other things: give in on "well formed"
+(Terry is right), tentatively rename QuotedCData as AttValue
+and Literal as EntityValue to be more informative, since attribute
+values are the <emph>only</emph> place QuotedCData was used, and
+vice versa for entity text and Literal. (I'd call it Entity Text,
+but 8879 uses that name for both internal and external entities.)</sitem>
+<sitem>1997-03-26 : CMSMcQ : resynch the two forks of this draft, reapply
+my changes dated 03-20 and 03-21. Normalize old 'may not' to 'must not'
+except in the one case where it meant 'may or may not'.</sitem>
+<sitem>1997-03-21 : TB : massive changes on plane flight from Chicago
+to Vancouver</sitem>
+<sitem>1997-03-21 : CMSMcQ : correct as many reported errors as possible.
+</sitem>
+<sitem>1997-03-20 : CMSMcQ : correct typos listed in CMSMcQ hand copy of spec.</sitem>
+<sitem>1997-03-20 : CMSMcQ : cosmetic changes preparatory to revision for
+WWW conference April 1997: restore some of the internal entity
+references (e.g. to docdate, etc.), change character xA0 to &amp;nbsp;
+and define nbsp as &amp;#160;, and refill a lot of paragraphs for
+legibility.</sitem>
+<sitem>1996-11-12 : CMSMcQ : revise using Tim's edits:
+Add list type of NUMBERED and change most lists either to
+BULLETS or to NUMBERED.
+Suppress QuotedNames, Names (not used).
+Correct trivial-grammar doc type decl.
+Rename 'marked section' as 'CDATA section' passim.
+Also edits from James Clark:
+Define the set of characters from which [^abc] subtracts.
+Charref should use just [0-9] not Digit.
+Location info needs cleaner treatment: remove? (ERB
+question).
+One example of a PI has wrong pic.
+Clarify discussion of encoding names.
+Encoding failure should lead to unspecified results; don't
+prescribe error recovery.
+Don't require exposure of entity boundaries.
+Ignore white space in element content.
+Reserve entity names of the form u-NNNN.
+Clarify relative URLs.
+And some of my own:
+Correct productions for content model: model cannot
+consist of a name, so "elements ::= cp" is no good.
+</sitem>
+<sitem>1996-11-11 : CMSMcQ : revise for style.
+Add new rhs to entity declaration, for parameter entities.</sitem>
+<sitem>1996-11-10 : CMSMcQ : revise for style.
+Fix / complete section on names, characters.
+Add sections on parameter entities, conditional sections.
+Still to do: Add compatibility note on deterministic content models.
+Finish stylistic revision.</sitem>
+<sitem>1996-10-31 : TB : Add Entity Handling section</sitem>
+<sitem>1996-10-30 : TB : Clean up term &amp; termdef. Slip in
+ERB decision re EMPTY.</sitem>
+<sitem>1996-10-28 : TB : Change DTD. Implement some of Michael's
+suggestions. Change comments back to //. Introduce language for
+XML namespace reservation. Add section on white-space handling.
+Lots more cleanup.</sitem>
+<sitem>1996-10-24 : CMSMcQ : quick tweaks, implement some ERB
+decisions. Characters are not integers. Comments are /* */ not //.
+Add bibliographic refs to 10646, HyTime, Unicode.
+Rename old Cdata as MsData since it's <emph>only</emph> seen
+in marked sections. Call them attribute-value pairs not
+name-value pairs, except once. Internal subset is optional, needs
+'?'. Implied attributes should be signaled to the app, not
+have values supplied by processor.</sitem>
+<sitem>1996-10-16 : TB : track down &amp; excise all DSD references;
+introduce some EBNF for entity declarations.</sitem>
+<sitem>1996-10-?? : TB : consistency check, fix up scraps so
+they all parse, get formatter working, correct a few productions.</sitem>
+<sitem>1996-10-10/11 : CMSMcQ : various maintenance, stylistic, and
+organizational changes:
+Replace a few literals with xmlpio and
+pic entities, to make them consistent and ensure we can change pic
+reliably when the ERB votes.
+Drop paragraph on recognizers from notation section.
+Add match, exact match to terminology.
+Move old 2.2 XML Processors and Apps into intro.
+Mention comments, PIs, and marked sections in discussion of
+delimiter escaping.
+Streamline discussion of doctype decl syntax.
+Drop old section of 'PI syntax' for doctype decl, and add
+section on partial-DTD summary PIs to end of Logical Structures
+section.
+Revise DSD syntax section to use Tim's subset-in-a-PI
+mechanism.</sitem>
+<sitem>1996-10-10 : TB : eliminate name recognizers (and more?)</sitem>
+<sitem>1996-10-09 : CMSMcQ : revise for style, consistency through 2.3
+(Characters)</sitem>
+<sitem>1996-10-09 : CMSMcQ : re-unite everything for convenience,
+at least temporarily, and revise quickly</sitem>
+<sitem>1996-10-08 : TB : first major homogenization pass</sitem>
+<sitem>1996-10-08 : TB : turn "current" attribute on div type into
+CDATA</sitem>
+<sitem>1996-10-02 : TB : remould into skeleton + entities</sitem>
+<sitem>1996-09-30 : CMSMcQ : add a few more sections prior to exchange
+ with Tim.</sitem>
+<sitem>1996-09-20 : CMSMcQ : finish transcribing notes.</sitem>
+<sitem>1996-09-19 : CMSMcQ : begin transcribing notes for draft.</sitem>
+<sitem>1996-09-13 : CMSMcQ : made outline from notes of 09-06,
+do some housekeeping</sitem>
+</slist>
+</revisiondesc>
+</header>
+<body>
+<div1 id='sec-intro'>
+<head>°ìÈÌ»ö¹à</head>
+<!-- <div2 id='sec-scope'>
+ <head>ŬÍÑÈÏ°Ï</head> -->
+<p>³ÈÄ¥²Äǽ¤Ê&markup;¸À¸ìXML(eXtensible Markup Language)¤Ï¡¤<termref def="dt-xml-doc">XMLʸ½ñ</termref>¤È¤¤¤¦¥Ç¡¼¥¿¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¯¥é¥¹¤òµ¬Äꤷ¡¤XMLʸ½ñ¤ò½èÍý¤¹¤ë¥×¥í¥°¥é¥à¤ÎÆ°ºî¤Î°ìÉô¤òµ¬Äꤹ¤ë¡£XML¤Ï¡¤SGML(ɸ½à°ìÈ̲½&markup;¸À¸ì¡¤Standard Generalized Markup Language)<bibref ref='ISO8879'/>¤ÎÀ©¸Â¤·¤¿&subset;¤È¤¹¤ë¡£¹½Â¤¾å¡¤XMLʸ½ñ¤Ï¡¤¤«¤Ê¤é¤ºSGMLµ¬³Ê¤ËŬ¹ç¤¹¤ë¡£</p>
+<p>XMLʸ½ñ¤Ï¡¤<termref def="dt-entity">¼ÂÂÎ</termref>¤È¤¤¤¦µ­²±Ã±°Ì¤«¤é¤Ê¤ê¡¤¼ÂÂΤϡ¤&parsed-data;Ëô¤Ï&unparsed-data;¤«¤é¤Ê¤ë¡£&parsed-data;¤Ï¡¤<termref def="dt-character">ʸ»ú</termref>¤«¤é¤Ê¤ê¡¤¤½¤Î°ìÉô¤Ï¡¤Ê¸½ñ¤Î<termref def="dt-chardata">ʸ»ú¥Ç¡¼¥¿</termref>¤ò¹½À®¤·¡¤°ìÉô¤Ï¡¤<termref def="dt-markup">&markup;</termref>¤ò¹½À®¤¹¤ë¡£&markup;¤Ï¡¤Ê¸½ñ¤Îµ­²±¥ì¥¤¥¢¥¦¥ÈµÚ¤ÓÏÀÍý¹½Â¤¤Ë¤Ä¤¤¤Æ¤Îµ­½Ò¤òɽ¤¹Éä¹æ¤È¤¹¤ë¡£XML¤Ï¡¤µ­²±¥ì¥¤¥¢¥¦¥ÈµÚ¤ÓÏÀÍý¹½Â¤¤Ë¤Ä¤¤¤Æ¤ÎÀ©Ìó¾ò·ï¤òµ­½Ò¤¹¤ëµ¡¹½¤òÄ󶡤¹¤ë¡£</p>
+<p><termdef id="dt-xml-proc" term="XML&processor;"><term>XML&processor;</term>¤È¤¤¤¦¥½¥Õ¥È¥¦¥§¥¢¥â¥¸¥å¡¼¥ë¤Ï¡¤XMLʸ½ñ¤òÆɤ߹þ¤ß¡¤¤½¤ÎÆâÍƵڤӹ½Â¤¤Ø¤Î¥¢¥¯¥»¥¹¤òÄ󶡤¹¤ë¤¿¤á¤ËÍѤ¤¤ë¡£ </termdef> <termdef id="dt-app" term="&application;">XML&processor;¤Ï¡¤Â¾¤Î¥â¥¸¥å¡¼¥ë¤Î¤¿¤á¤ËÆ°ºî¤¹¤ë¤³¤È¤òÁ°Äó¤È¤·¡¤¤½¤Î¥â¥¸¥å¡¼¥ë¤ò<term>&application;</term>¤È¤¤¤¦¡£</termdef>¤³¤Î&TR-or-Rec;¤Ï¡¤XML&processor;¤¬¹Ô¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¿¶Éñ¤¤¤òµ¬Äꤹ¤ë¡£¤Ä¤Þ¤ê¡¤XML¥Ç¡¼¥¿¤ÎÆɹþ¤ßÊýË¡¤òµ¬Äꤷ¡¤&application;¤ËÄ󶡤¹¤ë¾ðÊó¤òµ¬Äꤹ¤ë¡£</p>
+<!-- </div2> -->
+<div2 id='sec-origin-goals'>
+<head>·Ð°ÞµÚ¤ÓÌÜɸ</head>
+<p>1996ǯ¤ËWorld Wide Web Consortium(W3C)¤ÎÃæ¤ËÀßΩ¤·¤¿XMLºî¶È¥°¥ë¡¼¥×(°ÊÁ°¤Ï¡¤ SGMLÊÔ½¸¥ì¥Ó¥å¡¼°Ñ°÷²ñ¤È¸Æ¤Ð¤ì¤¿)¤¬¡¤XML¤ò³«È¯¤·¤¿¡£¤³¤Îºî¶È¥°¥ë¡¼¥×¤ÎµÄŤò¡¤Sun Microsystems¤ÎJon Bosak¤¬¶Ð¤á¤ë¡£W3C¤¬ÁÈ¿¥¤·¡¤°ÊÁ°¤ÏSGMLºî¶È¥°¥ë¡¼¥×¤È¸Æ¤Ð¤ì¤¿XML SIG(Special Interest Group)¤â¡¤XML¤ÎÀ©Äê¤ËÈó¾ï¤Ë³èȯ¤Ë»²²è¤·¤¿¡£
+<!--JIS¤Ç¤Ï? XMLºî¶È¥°¥ë¡¼¥×¤Î¥á¥ó¥Ð¤òÉÕÏ¿¤Ë¼¨¤¹¡£-->Dan Connolly¤Ï¡¤ºî¶È¥°¥ë¡¼¥×¤ÎW3C¤Ë¤ª¤±¤ëÏ¢Íí·¸¤ò̳¤á¤¿¡£</p>
+<p>XML¤ÎÀß·×ÌÜɸ¤ò¡¤¼¡¤Ë¼¨¤¹¡£<ulist>
+<item><p>a) XML¤Ï¡¤Internet¾å¤Ç¤½¤Î¤Þ¤Þ»ÈÍѤǤ­¤ë¡£</p></item>
+<item><p>b) XML¤Ï¡¤¹­ÈϰϤÎ&application;¤ò»Ù±ç¤¹¤ë¡£</p></item>
+<item><p>c) XML¤Ï¡¤SGML¤È¸ß´¹À­¤ò¤â¤Ä¡£</p></item>
+<item><p>d) XMLʸ½ñ¤ò½èÍý¤¹¤ë¥×¥í¥°¥é¥à¤ò½ñ¤¯¤³¤È¤Ï¡¤ÍưפǤʤ±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p></item>
+<item><p>e) XML¤Ç¤Ï¡¤¥ª¥×¥·¥ç¥ó¤Îµ¡Ç½¤Ï¤Ç¤­¤ë¤À¤±¾¯¤Ê¤¯¤·¡¤°ì¤Ä¤â¸ºß¤·¤Ê¤¤¤³¤È¤òÌܻؤ¹¡£</p></item>
+<item><p>f) XMLʸ½ñ¤Ï¡¤¿Í´Ö¤Ë¤È¤Ã¤ÆÆɤߤ䤹¤¯¡¤½½Ê¬¤ËÍý²ò¤·¤ä¤¹¤¤¡£</p></item>
+<item><p>g) XML¤ÎÀ߷פϡ¤¤¹¤ß¤ä¤«¤Ë¹Ô¤¨¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p></item>
+<item><p>h) XML¤ÎÀ߷פϡ¤¸·Ì©µÚ¤Ó´Ê·é¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p></item>
+<item><p>i) XMLʸ½ñ¤Ï¡¤Íưפ˺îÀ®¤Ç¤­¤ë¡£</p></item>
+<item><p>j) XML¤Ç¤Ï¡¤&markup;¤Î¿ô¤ò¸º¤é¤¹¤³¤È¤Ï¡¤½ÅÍפǤϤʤ¤¡£</p></item></ulist>
+</p>
+<p>XMLÂè&XML.version;&version;¤òÍý²ò¤·¡¤¤½¤ì¤ò½èÍý¤¹¤ë·×»»µ¡¥×¥í¥°¥é¥à¤ò½ñ¤¯¤¿¤á¤Ë½½Ê¬¤Ê¾ðÊó¤Ï¡¤¤³¤Î&TR-or-Rec;µÚ¤Ó´ØÏ¢¤¹¤ëµ¬³Ê(ʸ»úÍѤȤ·¤Æ¡¤UnicodeµÚ¤ÓISO/IEC 10646¡¤<!--* XXX for Uniform Resource Identifiers, *-->&language-identification;¥¿¥°ÍѤȤ·¤Æ¡¤¥¤¥ó¥¿¥Í¥Ã¥È RFC 1766¡¤&language-code;ÍѤȤ·¤Æ¡¤ISO 639¡¤Ê¤ӤË&country-code;ÍѤȤ·¤Æ¡¤ISO 3166)¤Ç¡¤¤¹¤Ù¤Æ¼¨¤¹¡£</p>
+<p>¤³¤Î&version;¤ÎXML¤Îµ¬Äê<!-- (&doc.date;) -->¤Ï¡¤¸ø³«¥ì¥Ó¥å¡¼µÚ¤ÓµÄÏÀ¤òÌÜŪ¤È¤¹¤ë¡£¥Æ¥­¥¹¥ÈµÚ¤ÓˡΧ¾å¤ÎÃí°Õ¤ò²þÊѤ·¤Ê¤¤¸Â¤ê¡¤¼«Í³¤ËÇÛÉÛ¤·¤Æ¤â¤è¤¤¡£</p>
+</div2>
+<div2 id='sec-terminology'>
+<head>ÄêµÁ</head>
+<p>XMLʸ½ñ¤Îµ¬Äê¤Î¤¿¤á¤Ë»ÈÍѤ¹¤ëÍѸì¤Ï¡¤¤³¤Î&TR-or-Rec;Æâ¤ÇÄêµÁ¤¹¤ë¡£¼¡¤Ë¼¨¤¹¸ì¶ç¤Ï¡¤¤½¤ì¤é¤ÎÍѸì¤òÄêµÁ¤¹¤ë¤¿¤á¡¤µÚ¤ÓXML&processor;¤ÎÆ°¤­¤òµ¬Äꤹ¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¡£
+<glist>
+<gitem>
+<label>1.2.1 ¤·¤Æ¤â¤è¤¤(may)</label>
+<def><p><termdef id="dt-may" term="¤·¤Æ¤â¤è¤¤">Ŭ¹ç¤¹¤ëʸ½ñËô¤ÏXML&processor;¤Ï¡¤µ­½Ò¤µ¤ì¤¿¤È¤ª¤ê¤ËÆ°ºî¤·¤Æ¤â¤è¤¤¤¬¡¤¤½¤Î¤È¤ª¤ê¤Ë¤¹¤ëɬÍפϤʤ¤¡£</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.2 ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤(must)</label>
+<def><p>Ŭ¹ç¤¹¤ëʸ½ñËô¤ÏXML&processor;¤Ï¡¤µ­½Ò¤µ¤ì¤¿¤È¤ª¤ê¤ËÆ°ºî¤¹¤ë¤³¤È¤¬Í׵ᤵ¤ì¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¤&error;¤È¤¹¤ë¡£<!-- do NOT change this! this is what defines a violation ofa 'must' clause as 'an error'. -MSM -->
+</p></def>
+</gitem>
+<gitem>
+<label>1.2.3 &error;(error)</label>
+<def><p><termdef id="dt-error" term="&error;">¤³¤Î&TR-or-Rec;¤¬Äê¤á¤ëµ¬Â§¤ËÂФ¹¤ë°ãÈ¿¡£·ë²Ì¤ÏÄêµÁ¤·¤Ê¤¤¡£Å¬¹ç¤¹¤ë¥½¥Õ¥È¥¦¥§¥¢¤Ï¡¤&error;¤ò¸¡½Ð¤·¤ÆÊó¹ð¤·¤Æ¤â¤è¤¯¡¤&error;¤«¤é²óÉü¤·¤Æ¤â¤è¤¤¡£</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.4 &fatal-error;(fatal error)</label>
+<def><p><termdef id="dt-fatal" term="&fatal-error;">Ŭ¹ç¤¹¤ë<termref def="dt-xml-proc">XML&processor;</termref>¤¬¸¡½Ð¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¤&application;¤ËÊó¹ð¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤&error;¡£&fatal-error;¤òȯ¸«¤·¤¿¤¢¤È¡¤&processor;¤Ï¡¤¤½¤ì°Ê¹ß¤Î&error;¤òõ¤¹¤¿¤á¤Ë¥Ç¡¼¥¿½èÍý¤ò³¹Ô¤·¤Æ¤â¤è¤¯¡¤&error;¤òȯ¸«¤·¤¿¾ì¹ç¤Ï¡¤¤½¤Î&error;¤ò&application;¤ËÊó¹ð¤·¤Æ¤â¤è¤¤¡£&error;ÄûÀµ¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Ë¡¤&processor;¤Ï¡¤Ì¤½èÍý¥Ç¡¼¥¿(ʸ»ú¥Ç¡¼¥¿µÚ¤Ó&markup;¤Îº®ºß¤·¤¿¤â¤Î)¤òʸ½ñ¤«¤é¼è¤ê½Ð¤·¡¤&application;¤ËÅϤ·¤Æ¤â¤è¤¤¡£¤·¤«¤·¡¤°ìÅÙ¡¤&fatal-error;¤ò¸¡½Ð¤·¤¿¤é¡¤&processor;¤Ï¡¤Ä̾ï¤Î½èÍý¤ò³¹Ô¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤Ä¤Þ¤ê¡¤&processor;¤Ï¡¤Ê¸»ú¥Ç¡¼¥¿µÚ¤Óʸ½ñ¤ÎÏÀÍý¹½Â¤¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤ò¡¤Ä̾ï¤ÎÊýË¡¤Ç&application;¤ËÅϤ·Â³¤±¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.5 &at-user-option;(at user option)</label>
+<def><p>Ŭ¹ç¤¹¤ë¥½¥Õ¥È¥¦¥¨¥¢¤Ï¡¤µ­½Ò¤µ¤ì¤¿¤È¤ª¤ê¤Ë¿¶¤ëÉñ¤Ã¤Æ¤â¤è¤¤(may)¡¤Ëô¤Ï¿¶¤ëÉñ¤ï¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤(must)(ʸ¾ÏÃæ¤Î½õÆ°»ì¤Ë¤è¤ë¡£)¡£¤½¤Î¤È¤ª¤ê¤Ë¿¶¤ëÉñ¤¦¾ì¹ç¤Ï¡¤µ­½Ò¤µ¤ì¤¿¿¶Éñ¤¤¤òÁªÂòËô¤ÏµñÈݤ¹¤ë¼êÃʤò&user;¤ËÄ󶡤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p></def>
+</gitem>
+<gitem>
+<label>1.2.6 &validity;À©Ìó(validity constraint)</label>
+<def><p>¤¹¤Ù¤Æ¤Î<termref def="dt-valid">&valid;¤Ê</termref>XMLʸ½ñ¤ËŬÍѤ¹¤ëµ¬Â§¡£&validity;À©Ìó¤Î°ãÈ¿¤Ï¡¤&error;¤È¤¹¤ë¡£&at-user-option;¡¤<termref def="dt-validating">¸¡¾Ú¤ò¹Ô¤¦XML&processor;</termref>¤Ï¡¤¤³¤Î&error;¤òÊó¹ð¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p></def>
+</gitem>
+<gitem>
+<label>1.2.7 &well-formed;À©Ìó(well-formedness constraint)</label>
+<def><p>¤¹¤Ù¤Æ¤Î<termref def="dt-wellformed">&well-formed;</termref>¤ÎXMLʸ½ñ¤ËŬÍѤ¹¤ëµ¬Â§¡£&well-formed;À©Ìó¤Î°ãÈ¿¤Ï¡¤<termref def="dt-fatal">&fatal-error;</termref>¤È¤¹¤ë¡£</p></def>
+</gitem>
+<gitem>
+<label>1.2.8 &match;(match)</label>
+<def><p>a) <termdef id="dt-match" term="&match;">&string;Ëô¤Ï̾Á°¤Î&match;¡¡Èæ³Ó¤¹¤ëÆó¤Ä¤Î&string;Ëô¤Ï̾Á°¤Ï¡¤Æ±°ì¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ISO/IEC 10646¤Ë¤ª¤¤¤Æ¡¤Ê£¿ô¤Îɽ¸½¤¬²Äǽ¤Êʸ»ú¡ÎÎ㤨¤Ð¡¤&composed-form;µÚ¤Ó´ðÄì+&diacritical-mark;(¥À¥¤¥¢¥¯¥ê¥Æ¥£¥«¥ë¥Þ¡¼¥¯)·Á¼°¡Ï¤Ï¡¤¤É¤Á¤é¤Î&string;¤âƱ¤¸É½¸½¤Î¤È¤­¤Ë¸Â¤ê¡¤&match;¤¹¤ë¡£&at-user-option;¡¤&processor;¤Ï¡¤¤½¤Îʸ»ú¤òɸ½à·Á¤ËÀµµ¬²½¤·¤Æ¤â¤è¤¤¡£Èæ³Ó¤Î¤È¤­¡¢Âçʸ»ú¤È¾®Ê¸»ú¤È¤Î¶èÊ̤ò¤¹¤ë¡£<!-- Note that no processing of characters with respect to case is part of the matching process. -->&lt;BR>b) &string;¤ÈʸˡÃæ¤Îµ¬Â§¤È¤Î&match;¡¡¤¢¤ëÀ¸À®µ¬Â§¤«¤éÀ¸À®¤¹¤ë¸À¸ì¤Ë¡¤¤¢¤ë&string;¤¬Â°¤¹¤ë¤È¤­¡¤¤³¤Î&string;¤Ï¡¤¤³¤ÎÀ¸À®µ¬Â§¤Ë&match;¤¹¤ë¤È¤¤¤¦¡£&lt;BR>c) ÆâÍƤÈÆâÍÆ¥â¥Ç¥ë¤È¤Î&match;¡¡¤¢¤ëÍ×ÁǤ¬¡¤<titleref href='elementvalid'>Í×ÁǤÎ&validity;</titleref>¤ÎÀ©Ìó¤Ë¼¨¤¹°ÕÌ£¤ÇŬ¹ç¤¹¤ë¤È¤­¡¤¤³¤ÎÍ×ÁǤϡ¤¤½¤ÎÀë¸À¤Ë&match;¤¹¤ë¤È¤¤¤¦¡£</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.9 ¸ß´¹À­¤Î¤¿¤á(for compatibility)</label>
+<def><p><termdef id="dt-compat" term="¸ß´¹À­¤Î¤¿¤á">XML¤Îµ¡Ç½¤Ç¤¢¤Ã¤Æ¡¤XML¤¬SGML¤È¸ß´¹¤Ç¤¢¤ë¤³¤È¤òÊݾڤ¹¤ë¤¿¤á¤À¤±¤ËƳÆþ¤µ¤ì¤ë¤â¤Î¡£</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.10 Áê¸ß±¿ÍÑÀ­¤Î¤¿¤á(for interoperability)</label>
+<def><p><termdef id="dt-interop" term="Áê¸ß±¿ÍÑÀ­¤Î¤¿¤á">¹´Â«ÎϤϤ⤿¤Ê¤¤¿ä¾©»ö¹à¡£&WebSGML;°ÊÁ°¤«¤é¸ºß¤¹¤ëSGML&processor;¤¬¡¤XMLʸ½ñ¤ò½èÍý¤Ç¤­¤ë²ÄǽÀ­¤ò¹â¤á¤ë¤¿¤á¤Ë¼è¤êÆþ¤ì¤ë¤â¤Î¡£</termdef></p></def>
+</gitem>
+</glist>
+</p>
+</div2>
+</div1>
+<!-- &Docs; -->
+<div1 id='sec-documents'>
+<head>ʸ½ñ</head>
+<p><termdef id="dt-xml-doc" term="XMLʸ½ñ">
+<!-- A textual object -->
+¤³¤Î&TR-or-Rec;¤ÇÄêµÁ¤¹¤ë°ÕÌ£¤Ç¡¤<termref def="dt-wellformed">&well-formed;</termref>¤È¤¹¤ë¥Ç¡¼¥¿¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¤<term>XMLʸ½ñ</term>¤È¤¤¤¦¡£&well-formed;¤ÎXMLʸ½ñ¤¬¡¤¤µ¤é¤Ë¡¤¤¢¤ëÀ©Ìó¾ò·ï¤òËþ­¤¹¤ì¤Ð¡¤<termref def="dt-valid">&valid;</termref>¤ÊXMLʸ½ñ¤È¤¹¤ë¡£
+</termdef></p>
+
+<!-- why this div? -TB
+<div2 id='sec-log-phys'>
+<head>Logical and Physical Structure</head> -->
+
+<p>¤¤¤º¤ì¤ÎXMLʸ½ñ¤â¡¤ÏÀÍý¹½Â¤µÚ¤ÓʪÍý¹½Â¤¤ò¤â¤Ä¡£ÊªÍýŪ¤Ë¤Ï¡¤Ê¸½ñ¤Ï¡¤<termref def="dt-entity">¼ÂÂÎ</termref>¤È¸Æ¤Öñ°Ì¤«¤é¤Ê¤ë¡£¤¢¤ë¼ÂÂΤϡ¤Ê¸½ñÆâ¤Ë¾¤Î¼ÂÂΤò´Þ¤à¤¿¤á¤Ë¡¤¤½¤Î¾¤Î¼ÂÂΤò<termref def="dt-entref">»²¾È</termref>¤·¤Æ¤â¤è¤¤¡£Ê¸½ñ¤Ï¡¤¡È¥ë¡¼¥È¡É¤¹¤Ê¤ï¤Á<termref def="dt-docent">ʸ½ñ¼ÂÂÎ</termref>¤«¤é»Ï¤Þ¤ë¡£ÏÀÍýŪ¤Ë¤Ï¡¤Ê¸½ñ¤Ï¡¤Àë¸À¡¤Í×ÁÇ¡¤¥³¥á¥ó¥È¡¤Ê¸»ú»²¾ÈµÚ¤Ó½èÍýÌ¿Îá¤ò´Þ¤ß¡¤¤³¤ì¤é¤¹¤Ù¤Æ¤Ï¡¤Ê¸½ñÆâ¤ÇÌÀ¼¨Åª¤Ê&markup;¤Ë¤è¤Ã¤Æ¼¨¤¹¡£ÏÀÍý¹½Â¤µÚ¤ÓʪÍý¹½Â¤¤Ï¡¤<titleref href="wf-entities">°Ê¹ß</titleref>¤Ë¼¨¤¹¤È¤ª¤ê¤Ë¡¤¸·Ì©¤ËÆþ¤ì»Ò¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+
+<!--
+</div2> -->
+
+<div2 id='sec-well-formed'>
+<head>&well-formed;¤ÎXMLʸ½ñ</head>
+<p><termdef id="dt-wellformed" term="&well-formed;">¤¢¤ë¥Æ¥­¥¹¥È¥ª¥Ö¥¸¥§¥¯¥È¤¬¡¤¼¡¤Î¤¤¤º¤ì¤«¤Î¤È¤­¡¤¤½¤Î¥Æ¥­¥¹¥È¥ª¥Ö¥¸¥§¥¯¥È¤ò&well-formed;¤ÎXMLʸ½ñ¤È¸Æ¤Ö¡£</termdef>
+<ulist>
+<item><p>a) Á´ÂΤȤ·¤Æ¡¤<nt def='NT-document'>document</nt>¤È¤¤¤¦¥é¥Ù¥ë¤ò¤â¤ÄÀ¸À®µ¬Â§¤Ë&match;¤¹¤ë¡£</p></item>
+<item><p>b) ¤³¤Î&TR-or-Rec;¤ÇÄêµÁ¤¹¤ë¡¤¤¹¤Ù¤Æ¤Î&well-formed;À©Ìó¤Ë½¾¤¦¡£</p>
+</item>
+<item><p>c) ¤½¤ì¤¾¤ì¤Î<termref def='dt-parsedent'>&parsed-entity;</termref>¤¬¡¤<titleref href='wf-entities'>&well-formed;</titleref>¤È¤Ê¤ë¡£</p></item>
+</ulist></p>
+<p>
+<scrap lang='ebnf' id='document'>
+<head>ʸ½ñ</head>
+<prod id='NT-document'><lhs>document</lhs>
+<rhs><nt def='NT-prolog'>prolog</nt>
+<nt def='NT-element'>element</nt>
+<nt def='NT-Misc'>Misc</nt>*</rhs></prod>
+</scrap>
+</p>
+<p><nt def="NT-document">document</nt>À¸À®µ¬Â§¤Ë&match;¤¹¤ë¤È¤Ï¡¤¼¡¤ò°ÕÌ£¤¹¤ë¡£
+<ulist>
+<item><p>a) °ì¤Ä°Ê¾å¤Î<termref def="dt-element">Í×ÁÇ</termref>¤ò´Þ¤à¡£</p>
+</item>
+
+<!--* N.B. some readers (notably JC) find the following
+paragraph awkward and redundant. I agree it's logically redundant:
+it *says* it is summarizing the logical implications of
+matching the grammar, and that means by definition it's
+logically redundant. I don't think it's rhetorically
+redundant or unnecessary, though, so I'm keeping it. It
+could however use some recasting when the editors are feeling
+stronger. -MSM *-->
+
+<item><p>b) <termdef id="dt-root" term="¥ë¡¼¥ÈÍ×ÁÇ"><term>¥ë¡¼¥È</term>Ëô¤Ïʸ½ñÍ×ÁǤȤ¤¤¦Í×ÁǤ¬°ì¤Ä¤À¤±Â¸ºß¤·¡¤¤³¤ì¤Ï¡¤Â¾¤ÎÍ×ÁǤÎ<termref def="dt-content">ÆâÍÆ</termref>¤Ë´Þ¤Þ¤ì¤Ê¤¤¡£</termdef>¤³¤ì°Ê³°¤Î¤¹¤Ù¤Æ¤ÎÍ×ÁǤϡ¤¤½¤Î³«»Ï¥¿¥°¤¬Â¾¤ÎÍ×ÁǤÎÆâÍƤ˴ޤޤì¤ì¤Ð¡¤Âбþ¤¹¤ë½ªÎ»¥¿¥°¤âƱ¤¸Í×ÁǤÎÆâÍƤ˴ޤޤì¤ë¡£¤Ä¤Þ¤ê¡¤Í×ÁǤϡ¤³«»Ï¥¿¥°µÚ¤Ó½ªÎ»¥¿¥°¤Ë¤è¤Ã¤Æ¶èÀÚ¤é¤ì¡¤Æþ¤ì»Ò¹½Â¤¤ò¤Ê¤¹¡£
+</p></item>
+</ulist>
+</p>
+<p><termdef id="dt-parentchild" term="¿ÆÍ×ÁÇ/»ÒÍ×ÁÇ">¤³¤ì¤é¤Î·ë²Ì¤È¤·¤Æ¡¤Ê¸½ñÆâ¤Î¤É¤ÎÈó¥ë¡¼¥ÈÍ×ÁÇ<code>C</code>¤ËÂФ·¤Æ¤â¡¤¤¢¤ë¾¤ÎÍ×ÁÇ<code>P</code>¤¬Â¸ºß¤·¡¤<code>C</code>¤Ï¡¤<code>P</code>¤ÎÆâÍƤ˴ޤޤì¤ë¤¬¡¤<code>P</code>¤ÎÆâÍƤ˴ޤޤì¤ë¾¤ÎÍ×ÁǤ˴ޤޤì¤ë¤³¤È¤Ï¤Ê¤¤¡£¤³¤Î¤È¤­¡¤<code>P</code>¤ò<code>C</code>¤Î<code>¿Æ</code>¤È¤¤¤¤¡¤<code>C</code>¤ò<code>P</code>¤Î<code>»Ò</code>¤È¤¤¤¦¡£</termdef></p>
+</div2>
+<div2 id="charsets">
+<head>ʸ»ú</head>
+<p>
+
+<!--The data stored in an XML <termref def="dt-entity">entity</termref> is
+either <termref def="dt-text">parsed</termref> or <termref
+def="dt-unparsed">unparsed</termref>. -->
+
+<termdef id="dt-text" term="¥Æ¥­¥¹¥È">&parsed-entity;¤Ï¡¤<term>¥Æ¥­¥¹¥È</term>(<termref def="dt-character">ʸ»ú</termref>¤ÎʤӤǤ¢¤Ã¤Æ¡¤&markup;Ëô¤Ïʸ»ú¥Ç¡¼¥¿¤òɽ¤·¤Æ¤â¤è¤¤¡£)¤ò´Þ¤à¡£</termdef><termdef id="dt-character" term="ʸ»ú"><term>ʸ»ú</term>¤Ï¡¤¥Æ¥­¥¹¥È¤ÎºÇ¾®Ã±°Ì¤Ç¤¢¤Ã¤Æ¡¤ISO/IEC 10646<bibref ref="ISO10646"/>¤Ëµ¬Äꤵ¤ì¤ë¡£<!--Users may extend the ISO/IEC 10646 character repertoire by exploiting the private use areas. -->µöÍƤ¹¤ëʸ»ú¤Ï¡¤¥¿¥Ö¡¤²þ¹Ô¡¤Éüµ¢Ê¤ӤËUnicodeµÚ¤ÓISO/IEC 10646¤¬µöÍƤ¹¤ë¿Þ·Áʸ»ú¤È¤¹¤ë¡£</termdef>
+<scrap lang="ebnf" id="char32">
+<head>ʸ»ú¤ÎÈÏ°Ï</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id="NT-Char"><lhs>Char</lhs>
+<rhs>#x9 | #xA | #xD | [#x20-#D7FF] | [#xE000-#xFFFD]
+| [#x10000-#x10FFFF]</rhs>
+<com>Ǥ°Õ¤ÎUnicodeʸ»ú¡£¤¿¤À¤·¡¤&surrogate-blocks;¡¤FFFEµÚ¤ÓFFFF¤Ï½ü¤¯¡£</com>
+</prod>
+</prodgroup>
+</scrap>
+</p>
+<p>&character-value;¤ò¥Ó¥Ã¥È¥Ñ¥¿¥ó¤ËÉä¹æ²½¤¹¤ëµ¡¹½¤Ï¡¤¼ÂÂΤ´¤È¤Ë°ã¤Ã¤Æ¤â¤è¤¤¡£¤¹¤Ù¤Æ¤ÎXML&processor;¤Ï¡¤ISO/IEC 10646¤ÎUTF-8Éä¹æ²½µÚ¤ÓUTF-16Éä¹æ²½¤ò¼õ¤±ÉÕ¤±¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£Æó¤Ä¤Î¤É¤Á¤é¤¬ÍѤ¤¤é¤ì¤Æ¤¤¤ë¤«¤òÌÀ¼¨¤¹¤ë¤¿¤á¤Îµ¡¹½¡¤µÚ¤Ó¾¤ÎÉä¹æ²½ÊýË¡¤òÍøÍѤ¹¤ë¤¿¤á¤Îµ¡¹½¤Ï¡¤<titleref href='charencoding'>ʸ»ú¤ÎÉä¹æ²½</titleref>¤Ëµ­½Ò¤¹¤ë¡£</p>
+<p>¤É¤ÎÉä¹æ²½ÊýË¡¤òÍѤ¤¤ë¤«¤Ë´Ø·¸¤Ê¤¯¡¤ISO/IEC 10646¤Îʸ»ú½¸¹ç¤Ë¤¢¤ë¤¹¤Ù¤Æ¤Îʸ»ú¤Ï¡¤¤½¤ÎUCS-4&code-value;<!-- bit string. -->¤ÈÅù²Á¤Ê10¿Ê¿ôËô¤Ï16¿Ê¿ô¤Ë¤è¤Ã¤Æ¡¤»²¾È¤Ç¤­¤ë¡£</p>
+</div2>
+
+<div2 id='sec-common-syn'>
+<head>¶¦Ä̤ι½Ê¸¹½À®»Ò</head>
+
+<p>2.3¤Ç¤Ï¡¤Ê¸Ë¡Æâ¤Ç¹­¤¯»ÈÍѤ¹¤ë¤¤¤¯¤Ä¤«¤Îµ­¹æ¤òÄêµÁ¤¹¤ë¡£</p>
+<p><nt def="NT-S">S</nt> (¶õÇò)¤Ï¡¤°ì¤Ä¼ã¤·¤¯¤ÏÊ£¿ô¤Î&space-character;(#x20)¡¤Éüµ¢¡¤²þ¹ÔËô¤Ï¥¿¥Ö¤«¤éÀ®¤ë¡£
+
+<scrap lang="ebnf" id='white'>
+<head>¶õÇò</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id='NT-S'><lhs>S</lhs>
+<rhs>(#x20 | #x9 | #xD | #xA)+</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>Êص¹¾å¡¤Ê¸»ú¤ò¡¤&letter;¡¤¿ô»úËô¤Ï¾¤Îʸ»ú¤ËʬÎह¤ë¡£&letter;¤Ï¡¤¥¢¥ë¥Õ¥¡¥Ù¥Ã¥ÈŪËô¤Ïɽ²»Åª¤Ç¤¢¤ë´ðËÜʸ»ú(°ì¤ÄËô¤ÏÊ£¿ô¤Î&combining-character;¤¬¡¤¸å¤Ë³¤¯¤³¤È¤â¤¢¤ë¡£)¡¤&ideographic;¤«¤éÀ®¤ë¡£
+<!--
+Certain layout and format-control characters defined by ISO/IEC 10646
+should be ignored when recognizing identifiers; these are defined by the
+classes <nt def='NT-Ignorable'>Ignorable</nt> and <nt def='NT-
+Extender'>Extender</nt>.
+-->
+³Æ¥¯¥é¥¹¤Ë¤ª¤±¤ë¼ÂºÝ¤Îʸ»ú¤Ë¤Ä¤¤¤Æ¤Î´°Á´¤ÊÄêµÁ¤Ï¡¤<titleref href='CharClasses'>ʸ»ú¥¯¥é¥¹</titleref>¤Ë´Ø¤¹¤ëÉÕÏ¿¤Ëµ¬Äꤹ¤ë¡£</p>
+<p><termdef id="dt-name" term="Name"><term>Name</term>¤Ï¡¤&letter;Ëô¤Ï¤¤¤¯¤Ä¤«¤Î¶èÀÚ¤êʸ»ú¤Î°ì¤Ä¤Ç»Ï¤Þ¤ê¡¤¤½¤Î¸å¤Ë&letter;¡¤¿ô»ú¡¤¥Ï¥¤¥Õ¥ó¡¤²¼Àþ¡¤¥³¥í¥óËô¤Ï¥Ô¥ê¥ª¥É¤¬Â³¤¯(¤³¤ì¤é¤ò̾Á°Ê¸»ú¤È¤¤¤¦¡£)¡£</termdef>&string;"<code>xml</code>"Ëô¤Ï<code>(('X'|'x') ('M'|'m') ('L'|'l'))</code>¤Ë&match;¤¹¤ëǤ°Õ¤Î&string;¤Ç»Ï¤Þ¤ë̾Á°¤Ï¡¤¤³¤Î&TR-or-Rec;¤Î¸½ºß¤ÎÈÇËô¤Ï¾­Íè¤ÎÈǤǤÎɸ½à²½¤Î¤¿¤á¤ËͽÌ󤹤롣
+</p>
+<note>
+<p>XML¤Î̾Á°¤ÎÃæ¤Î¥³¥í¥ó¤Ï¡¤Ì¾Á°¶õ´Ö¤Ç¤Î¼Â¸³¤Î¤¿¤á¤ËͽÌ󤹤롣¥³¥í¥ó¤Î°ÕÌ£¤Ï¡¤¾­Íè¤Î¤¢¤ë»þÅÀ¤Çɸ½à²½¤¹¤ë¤â¤Î¤È¤·¡¤¤½¤Î¤È¤­¤Ë¤Ï¡¤¼Â¸³Åª¤ÊÌÜŪ¤Ç¥³¥í¥ó¤ò»ÈÍѤ¹¤ëʸ½ñ¤ò¹¹¿·¤¹¤ëɬÍפ¬À¸¤¸¤ë²ÄǽÀ­¤¬¤¢¤ë¡£XML¤ÇºÎÍѤ¹¤ë̾Á°¶õ´Ö¤Îµ¡¹½¤¬¡¤¶èÀÚ¤ê»Ò¤È¤·¤Æ¼ÂºÝ¤Ë¥³¥í¥ó¤ò»ÈÍѤ¹¤ë¤È¤¤¤¦ÊݾڤϤʤ¤¡£»ö¼Â¾å¡¤¤³¤ì¤Ï¡¤Ì¾Á°¶õ´Ö¤Î¼Â¸³¤Î°ì¤Ä¤È¤·¤Æ°Ê³°¤Ë¤Ï¡¤XML¤Î̾Á°¤ÎÃæ¤Ç¥³¥í¥ó¤ò»ÈÍѤ·¤Ê¤¤¤Û¤¦¤¬¤è¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£¤·¤«¤·¡¤XML&processor;¤Ï¡¤Ì¾Á°Ê¸»ú¤È¤·¤Æ¥³¥í¥ó¤ò¼õ¤±ÉÕ¤±¤ë¤³¤È¤¬Ë¾¤Þ¤·¤¤¡£
+</p>
+</note>
+<p>
+<nt def='NT-Nmtoken'>Nmtoken</nt> (̾Á°&token;)¤Ï¡¤Ì¾Á°Ê¸»ú¤Ç¹½À®¤¹¤ëÎó¤È¤¹¤ë¡£
+<scrap lang='ebnf'>
+<head>̾Á°µÚ¤Ó&token;</head>
+<!--
+<prod id='NT-MiscName'><lhs>MiscName</lhs>
+<rhs></rhs>
+</prod>-->
+<prod id='NT-NameChar'><lhs>NameChar</lhs>
+<rhs><nt def="NT-Letter">Letter</nt>
+| <nt def='NT-Digit'>Digit</nt>
+<!--| <nt def='NT-MiscName'>MiscName</nt>-->
+| '.' | '-' | '_' | ':'
+| <nt def='NT-CombiningChar'>CombiningChar</nt>
+<!-- | <nt def='NT-Ignorable'>Ignorable</nt> -->
+| <nt def='NT-Extender'>Extender</nt></rhs>
+</prod>
+<prod id='NT-Name'><lhs>Name</lhs>
+<rhs>(<nt def='NT-Letter'>Letter</nt> | '_' | ':')
+(<nt def='NT-NameChar'>NameChar</nt>)*</rhs></prod>
+<prod id='NT-Names'><lhs>Names</lhs>
+<rhs><nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>)*</rhs></prod>
+<prod id='NT-Nmtoken'><lhs>Nmtoken</lhs>
+<rhs>(<nt def='NT-NameChar'>NameChar</nt>)+</rhs></prod>
+<prod id='NT-Nmtokens'><lhs>Nmtokens</lhs>
+<rhs><nt def='NT-Nmtoken'>Nmtoken</nt> (<nt def='NT-S'>S</nt> <nt
+def='NT-Nmtoken'>Nmtoken</nt>)*</rhs></prod>
+</scrap>
+</p>
+<p>&literal;¥Ç¡¼¥¿¤Ï¡¤°úÍÑÉä¤Ç°Ï¤Þ¤ì¤¿&string;¤È¤·¡¤¤½¤ÎÎó¤Î¶èÀÚ¤ê»Ò¤È¤·¤Æ»ÈÍѤ¹¤ë°úÍÑÉä¤Ï´Þ¤Þ¤Ê¤¤¡£&literal;¤Ï¡¤ÆâÉô¼ÂÂÎ(<nt def='NT-EntityValue'>EntityValue</nt>)¡¤Â°À­ÃÍ(<nt def='NT-AttValue'>AttValue</nt>)¡¤³°Éô&identifier;(<nt def="NT-SystemLiteral">SystemLiteral</nt>)¤ÎÆâÍƤλØÄê¤Ë»ÈÍѤ¹¤ë¡£ÌÜŪ¤Ë¤è¤Ã¤Æ¤Ï¡¤&literal;Á´ÂΤò¡¤¤½¤ÎÃæ¤Î&markup;¤ÎÁöºº¤ò¹Ô¤Ê¤ï¤º¤Ë¡¤¥¹¥­¥Ã¥×¤¹¤ë¤³¤È¤¬¤¢¤ë(<nt def='NT-SkipLit'>SkipLit</nt>¡£)¡£
+<scrap lang='ebnf'>
+<head>&literal;</head>
+<!-- is marked section end legal in entity values etc.?
+James says yes. Handbook page 392, sec. 10.4 seems to me to say no.
+If James is right, leave as is. Otherwise, uncomment
+the next comment and ...
+-->
+<!--
+<prod id='NT-EntityValue'><lhs>EntityValue</lhs>
+<rhs>' " '
+(([^%&amp;"]
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+(([^%&amp;']
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+" ' "</rhs>
+</prod>
+<prod id='NT-AttValue'><lhs>AttValue</lhs>
+<rhs>'"'
+(([^&lt;&amp;"]
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+(([^&lt;&amp;']
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+" ' "</rhs>
+<wfc def="CleanAttrVals"/>
+</prod>
+-->
+<!-- ... and comment out the following, down to ... -->
+<prod id='NT-EntityValue'><lhs>EntityValue</lhs>
+<rhs>' " '
+([^%&amp;"]
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+([^%&amp;']
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+" ' "</rhs>
+</prod>
+<prod id='NT-AttValue'><lhs>AttValue</lhs>
+<rhs>' " '
+([^&lt;&amp;"]
+| <nt def='NT-Reference'>Reference</nt>)*
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+([^&lt;&amp;']
+| <nt def='NT-Reference'>Reference</nt>)*
+" ' "</rhs>
+<!--<wfc def="WF-Attvaldelim"/>-->
+</prod>
+<!-- ... down to here. -->
+<prod id="NT-SystemLiteral"><lhs>SystemLiteral</lhs>
+<rhs><nt def='NT-SkipLit'>SkipLit</nt></rhs>
+</prod>
+<!-- <prod id="NT-URIchar"><lhs>URIchar</lhs>
+<rhs><com>See <loc href="http://www.w3.org/XXX">XXX</loc></com>
+</rhs></prod>
+-->
+<prod id="NT-PubidLiteral"><lhs>PubidLiteral</lhs>
+<rhs>' " ' <nt def='NT-PubidChar'>PubidChar</nt>*
+' " '
+| " ' " (<nt def='NT-PubidChar'>PubidChar</nt> - " ' ")* " ' "</rhs>
+</prod>
+<prod id="NT-PubidChar"><lhs>PubidChar</lhs>
+<rhs>#x20 | #xD | #xA
+|&nbsp;[a-zA-Z0-9]
+|&nbsp;[-'()+,./:=?]</rhs>
+</prod>
+<prod id="NT-SkipLit"><lhs>SkipLit</lhs>
+<rhs>(' " ' [^"]* ' " ')
+|&nbsp;(" ' " [^']* " ' ")</rhs>
+</prod>
+<!-- alternate form, making ms end illegal: -->
+<!--
+<prod id="NT-SkipLit"><lhs>SkipLit</lhs>
+<rhs>(' " ' ([^"]* - ([^"]* ']]&gt;' [^"]*)) ' " ')
+|&nbsp;(" ' " ([^']* - ([^']* ']]&gt;' [^']*)) " ' ")</rhs>
+</prod>
+-->
+</scrap>
+</p>
+<!--
+<wfcnote id="WF-Attvaldelim">
+<head>Delimiters in Attribute Values</head>
+<p>After the expansion of character and entity references,
+an attribute value must not contain a "<code>&lt;</code>"
+or "<code>&amp;</code>" character unless that character was
+introduced by the expansion of a character reference
+or one of the entities &magicents;.</p>
+</wfcnote>-->
+<!--
+This is not quite right: &lt; should be legal, should it not?
+Suppress this WFC until we get it right.
+-->
+<!-- Henry Thompson suggests (in substance, not form: the wording needs
+to be clarified):
+"Cooked Attribute values must not contain &lt; &amp; or the
+quote which closed their uncooked literal,
+unless arising from the expansion of a character reference or
+magic reference
+directly contained in their uncooked literal."
+I'm not sure I agree with this rule, but it's at least coherent,
+which is more than I can say for my attempt.
+-->
+</div2>
+
+<div2 id='syntax'>
+<head>ʸ»ú¥Ç¡¼¥¿µÚ¤Ó&markup;</head>
+<p><termref def='dt-text'>¥Æ¥­¥¹¥È</termref>¤Ï¡¤<termref def="dt-chardata">ʸ»ú¥Ç¡¼¥¿</termref>µÚ¤Ó&markup;¤¬º®ºß¤¹¤ë¤â¤Î¤È¤·¤Æ¹½À®¤¹¤ë¡£<termdef id="dt-markup" term="Markup"><term>&markup;</term>¤Ï¡¤<termref def="dt-stag">³«»Ï¥¿¥°</termref>¡¤<termref def="dt-etag">½ªÎ»¥¿¥°</termref>¡¤<termref def="dt-empty">¶õÍ×ÁÇ</termref>¡¤<termref def="dt-entref">¼ÂÂλ²¾È</termref>¡¤<termref def="dt-charref">ʸ»ú»²¾È</termref>¡¤<termref def="dt-comment">¥³¥á¥ó¥È</termref>¡¤<termref def="dt-cdsection">CDATA¥»¥¯¥·¥ç¥ó</termref> ¤Î¶èÀÚ¤ê»Ò¡¤<termref def="dt-doctype">ʸ½ñ·¿Àë¸À</termref>µÚ¤Ó<termref def="dt-pi">½èÍýÌ¿Îá</termref>¤Î·Á¤ò¼è¤ë¡£
+</termdef>
+</p>
+<p><termdef id="dt-chardata" term="Character Data">&markup;¤Ç¤Ï¤Ê¤¤¤¹¤Ù¤Æ¤Î¥Æ¥­¥¹¥È¤Ï¡¤Ê¸½ñ¤Î<term>ʸ»ú¥Ç¡¼¥¿</term>¤ò¹½À®¤¹¤ë¡£</termdef></p>
+<p>¥¢¥ó¥Ñ¥µ¥ó¥Éʸ»ú (&amp;)µÚ¤Ó&left-angle-bracket; (&lt;)¤Ï¡¤&markup;¤Î¶èÀÚ¤ê»Ò¤È¤·¤Æ¡¤Ëô¤Ï<termref def="dt-comment">¥³¥á¥ó¥È</termref>¡¤<termref def="dt-pi">½èÍýÌ¿Îá</termref>¼ã¤·¤¯¤Ï<termref def="dt-cdsection">CDATA¥»¥¯¥·¥ç¥ó</termref>Æâ¤Ç»ÈÍѤ¹¤ë¾ì¹ç¤Ë<emph>¤À¤±</emph>¡¤¤½¤Î¤Þ¤Þ¤Î·Á¤Ç½Ð¸½¤·¤Æ¤è¤¤¡£¤³¤ì¤é¤Îʸ»ú¤Ï¡¤ÆâÉô¼ÂÂÎÀë¸À¤Î<termref def='dt-litentval'>&literal;¼ÂÂÎÃÍ</termref>Æâ¤Ëµ­½Ò¤·¤Æ¤â¤è¤¤¡£ ¾Ü¤·¤¯¤Ï¡¤<titleref href='wf-entities'>&well-formed;¤Î¼ÂÂÎ</titleref>¤Ë´Ø¤¹¤ëµ¬Äê¤ò»²¾È¡£<!-- FINAL EDIT: restore internal entity decl or leave it out. -->¤³¤ì¤é¤Îʸ»ú¤¬Â¾¤ÎÉôʬ¤ÇɬÍפʾì¹ç¡¤¿ôÃͤˤè¤ëʸ»ú»²¾ÈËô¤Ï&string;"<code>&amp;amp;</code>"µÚ¤Ó&string;"<code>&amp;lt;</code>"¤ò»ÈÍѤ·¡¤<termref def="dt-escape">&escape;</termref>¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£&right-angle-bracket; (>) ¤Ï¡¤&string;"<code>&amp;gt;</code>"¤ò»ÈÍѤ·¤Æɽ¸½¤·¤Æ¤â¤è¤¤¡£ÆâÍƤÎÃæ¤ÇÎó"<code>]]&gt;</code>"¤ò»ÈÍѤ¹¤ë¤È¤­¤Ï¡¤¤½¤ì¤¬¡¤<termref def="dt-cdsection">CDATA¥»¥¯¥·¥ç¥ó</termref>¤Î½ªÎ»¤ò&markup;¤·¤Ê¤¤¸Â¤ê¡¤<termref def='dt-compat'>¸ß´¹À­¤Î¤¿¤á</termref>¡¤"<code>&amp;gt;</code>"Ëô¤Ïʸ»ú»²¾È¤ò»ÈÍѤ·¡¤&escape;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+
+<p>Í×ÁǤÎÆâÍƤǤϡ¤Ê¸»ú¥Ç¡¼¥¿¤Ï¡¤¤¤¤«¤Ê¤ë&markup;¤Î³«»Ï¶èÀÚ¤ê»Ò¤ò´Þ¤Þ¤Ê¤¤Ç¤°Õ¤Î&char-string;¤È¤¹¤ë¡£CDATA¥»¥¯¥·¥ç¥ó¤Ç¤Ï¡¤Ê¸»ú¥Ç¡¼¥¿¤È¤Ï¡¤CDATA¥»¥¯¥·¥ç¥ó¤Î½ªÎ»¶èÀÚ¤ê»Ò"<code>]]&gt;</code>"¤ò´Þ¤Þ¤Ê¤¤Ç¤°Õ¤Î&char-string;¤È¤¹¤ë¡£
+</p>
+<p>
+°À­ÃͤË&single-quote;µÚ¤Ó&double-quote;¤ò´Þ¤à¤¿¤á¤Ë¤Ï¡¤¥¢¥Ý¥¹¥È¥í¥Õ¥£Ëô¤Ï&single-quote;(') ¤Ï¡¤"<code>&amp;apos;</code>"¤È¤·¤Æɽ¸½¤·¡¤&double-quote;(")¤Ï¡¤"<code>&amp;quot;</code>"¤È¤·¤Æɽ¸½¤¹¤ë¡£
+<scrap lang="ebnf">
+<head>ʸ»ú¥Ç¡¼¥¿</head>
+<prod id='NT-CharData'>
+<lhs>CharData</lhs>
+<rhs>[^&lt;&amp;]* - ([^&lt;&amp;]* ']]&gt;' [^&lt;&amp;]*)</rhs>
+</prod>
+</scrap>
+</p>
+</div2>
+
+<div2 id='sec-comments'>
+<head>¥³¥á¥ó¥È</head>
+
+<p><termdef id="dt-comment" term="Comment"><term>¥³¥á¥ó¥È</term>¤Ï¡¤Â¾¤Î<termref def='dt-markup'>&markup;</termref>¤Î³°¤Ê¤é¤Ð¡¤Ê¸½ñ¤Î¤É¤³¤Ë¸½¤ì¤Æ¤â¤è¤¤¡£¤µ¤é¤Ë¡¤Ê¸½ñ·¿Àë¸ÀÆâ¤Ç¡¤Ê¸Ë¡¤¬µö¤¹¾ì½ê¤Ë¸½¤ì¤Æ¤â¤è¤¤¡£
+<!-- TB
+except in a <termref def="dt-cdsection">CDATA section</termref>, i.e. within
+<termref def="dt-elemcontent">element content</termref>, in
+<termref def="dt-mixed">mixed content</termref>, or in the prolog. They must
+not occur within declarations or tags. -->
+¥³¥á¥ó¥È¤Ï¡¤Ê¸½ñ¤Î<termref def="dt-chardata">ʸ»ú¥Ç¡¼¥¿</termref>¤Î°ìÉô¤Ç¤Ï¤Ê¤¤¡£XML&processor;¤Ï¡¤&application;¤¬¥³¥á¥ó¥È¤Î¥Æ¥­¥¹¥È¤ò¼è¤ê½Ð¤¹¤³¤È¤ò²Äǽ¤È¤·¤Æ¤â¤è¤¤¤¬¡¤¤½¤¦¤·¤Ê¤¯¤È¤â¤è¤¤¡£
+<termref def="dt-compat">¸ß´¹À­¤Î¤¿¤á</termref>¡¤&string;"<code>--</code>" ¡Ê&double-hyphen;¡Ë¤Ï¡¤¥³¥á¥ó¥ÈÆâ¤Ç¸½¤ì¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
+<scrap lang="ebnf">
+<head>¥³¥á¥ó¥È</head>
+<prod id='NT-Comment'><lhs>Comment</lhs>
+<rhs>'&lt;!--'
+((<nt def='NT-Char'>Char</nt> - '-')
+| ('-' (<nt def='NT-Char'>Char</nt> - '-')))*
+'-->'</rhs>
+<!--
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs> -->
+</prod>
+</scrap>
+</termdef></p>
+<p>¥³¥á¥ó¥È¤ÎÎã¤ò¼¡¤Ë¼¨¤¹¡£
+<eg>&lt;!&como; declarations for &lt;head> &amp; &lt;body> &comc;&gt;</eg>
+</p>
+</div2>
+
+<div2 id='sec-pi'>
+<head>½èÍýÌ¿Îá</head>
+
+<p><termdef id="dt-pi" term="Processing instruction"><term>½èÍýÌ¿Îá</term>(PI)¤Ë¤è¤Ã¤Æ¡¤&application;¤Î¤¿¤á¤ÎÌ¿Îá¤òʸ½ñ¤ËÆþ¤ì¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
+
+<scrap lang="ebnf">
+<head>½èÍýÌ¿Îá</head>
+<prod id='NT-PI'><lhs>PI</lhs>
+<rhs>'&lt;?' <nt def='NT-PITarget'>PITarget</nt>
+(<nt def='NT-S'>S</nt>
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*)))?
+&pic;</rhs></prod>
+<prod id='NT-PITarget'><lhs>PITarget</lhs>
+<rhs><nt def='NT-Name'>Name</nt> -
+(('X' | 'x') ('M' | 'm') ('L' | 'l'))</rhs>
+</prod>
+</scrap></termdef>
+PI¤Ï¡¤Ê¸½ñ¤Î<termref def="dt-chardata">ʸ»ú¥Ç¡¼¥¿</termref>¤Î°ìÉô¤Ç¤Ï¤Ê¤¤¤¬¡¤&application;¤ËÅϤµ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£PI¤Ï¡¤Ì¿Î᤬ÅϤµ¤ì¤ë&application;¤ò&identify;¤¿¤á¤Ë»ÈÍѤ¹¤ë&target; (<nt def='NT-PITarget'>PITarget</nt>) ¤Ç»Ï¤Þ¤ë¡£&target;̾ "<code>XML</code>"¡¤"<code>xml</code>"¤Ê¤É¤Ï¡¤¤³¤Î&TR-or-Rec;¤Î¸½ºß¤ÎÈÇËô¤Ï¾­Íè¤ÎÈǤε¬³Ê²½ÍѤËͽÌ󤹤롣XML¤Î<termref def='dt-notation'>µ­Ë¡</termref>µ¡¹½¤ò¡¤PI¤Î&target;¤òÀë¸À¤¹¤ë¤¿¤á¤Ë»ÈÍѤ·¤Æ¤â¤è¤¤¡£
+</p>
+</div2>
+
+<div2 id='sec-cdata-sect'>
+<head>CDATA¥»¥¯¥·¥ç¥ó</head>
+
+<p><termdef id="dt-cdsection" term="CDATA Section"><term>CDATA¥»¥¯¥·¥ç¥ó</term>¤Ï¡¤Ê¸»ú¥Ç¡¼¥¿¤¬½Ð¸½¤¹¤ë¤È¤³¤í¤Ç¤¢¤ì¤Ð¡¤¤É¤³¤Ë½Ð¸½¤·¤Æ¤â¤è¤¤¡£¤³¤ì¤Ï¡¤¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¤&markup;¤È¤·¤Æǧ¼±¤¹¤ëʸ»ú¤ò´Þ¤à¡¤¥Æ¥­¥¹¥È¤Î¶è²è¤ò&escape;¤¹¤ë¤Î¤Ë»ÈÍѤ¹¤ë¡£CDATA¥»¥¯¥·¥ç¥ó¤Ï¡¤&string;"<code>&lt;![CDATA[</code>"¤Ç»Ï¤Þ¤ê¡¤&string;
+"<code>]]&gt;</code>"¤Ç½ª¤ï¤ë¡£
+<scrap lang="ebnf">
+<head>CDATA¥»¥¯¥·¥ç¥ó</head>
+<prod id='NT-CDSect'><lhs>CDSect</lhs>
+<rhs><nt def='NT-CDStart'>CDStart</nt>
+<nt def='NT-CData'>CData</nt>
+<nt def='NT-CDEnd'>CDEnd</nt></rhs></prod>
+<prod id='NT-CDStart'><lhs>CDStart</lhs>
+<rhs>'&lt;![CDATA['</rhs>
+</prod>
+<prod id='NT-CData'><lhs>CData</lhs>
+
+<rhs>(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+</rhs>
+</prod>
+<prod id='NT-CDEnd'><lhs>CDEnd</lhs>
+<rhs>']]&gt;'</rhs>
+</prod>
+</scrap>
+
+CDATA¥»¥¯¥·¥ç¥óÆâ¤Ç¤Ï¡¤Îó<nt def='NT-CDEnd'>CDEnd</nt>¤À¤±¤ò&markup;¤È¤·¤Æǧ¼±¤¹¤ë¤Î¤Ç¡¤&left-angle-bracket;µÚ¤Ó¥¢¥ó¥Ñ¥µ¥ó¥É¤Ï¡¤¤½¤Î&literal;·Á¼°¤Ç½Ð¸½¤·¤Æ¤è¤¤¡£¤½¤ì¤é¤Ï¡¤"<code>&amp;lt;</code>"µÚ¤Ó"<code>&amp;amp;</code>"¤ò»ÈÍѤ·¤Æ&escape;¤¹¤ëɬÍפϤʤ¤¡£CDATA¥»¥¯¥·¥ç¥ó¤Ï¡¤Æþ¤ì»Ò¤Ë¤Ï¤Ç¤­¤Ê¤¤¡£
+</termdef>
+</p>
+
+<p>"<code>&lt;greeting></code>"µÚ¤Ó"<code>&lt;/greeting></code>"¤ò¡¤<termref def='dt-markup'>&markup;</termref>¤Ç¤Ï¤Ê¤¯¡¤<termref def='dt-chardata'>ʸ»ú¥Ç¡¼¥¿</termref>¤È¤·¤Æǧ¼±¤¹¤ëCDATA¥»¥¯¥·¥ç¥ó¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg>&lt;![CDATA[&lt;greeting>Hello, world!&lt;/greeting>]]&gt;</eg>
+</p>
+</div2>
+
+<div2 id='sec-prolog-dtd'>
+<head>&prolog;µÚ¤Óʸ½ñ·¿Àë¸À</head>
+
+<p><termdef id='dt-xmldecl' term='XML Declaration'>XMLʸ½ñ¤Ï¡¤»ÈÍѤ¹¤ëXML¤Î&version;¤ò»ØÄꤹ¤ë<term>XMLÀë¸À</term>¤Ç»Ï¤á¤Æ¤â¤è¤¯¡¤Ëô¤½¤¦¤¹¤ë¤Î¤¬Ë¾¤Þ¤·¤¤¡£
+</termdef>
+</p>
+<p>¤³¤Î&TR-or-Rec;¤Î¤³¤Î&version;¤ËŬ¹ç¤¹¤ë¤³¤È¤ò¼¨¤¹¤¿¤á¤Ë¤Ï¡¤&version;ÈÖ¹æ "<code>1.0</code>" ¤ò»ÈÍѤ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤¢¤ëʸ½ñ¤¬¡¤¤³¤Î&TR-or-Rec;¤Î¤³¤Î&version;¤ËŬ¹ç¤·¤Ê¤¤¤È¤­¡¤ÃÍ"<code>1.0</code>"¤ò»ÈÍѤ¹¤ë¤Î¤Ï¡¤&error;¤È¤¹¤ë¡£¤³¤Î&TR-or-Rec;¤Îº£¸å¤Î&version;¤Ë"<code>1.0</code>"°Ê³°¤ÎÃͤòÉÕÍ¿¤¹¤ë¤³¤È¤¬¡¤XMLºî¶È¥°¥ë¡¼¥×¤Î°Õ¿Þ¤À¤¬¡¤XML¤Î¾­Íè¤Î&version;¤òºîÀ®¤¹¤ë¤³¤È¤Î³ÎÌó¤ò¼¨¤¹¤ï¤±¤Ç¤Ï¤Ê¤¯¡¤ºîÀ®¤·¤¿¤È¤·¤Æ¤â¡¤ÈÖ¹æÉÕ¤±¤Ë¤Ä¤¤¤Æ¡¤ÆÃÄê¤ÎÊýË¡¤ò»ÈÍѤ¹¤ë¤³¤È¤Î³ÎÌó¤ò¼¨¤¹¤ï¤±¤Ç¤â¤Ê¤¤¡£¾­Íè¤Î&version;¤Î²ÄǽÀ­¤ò½ü³°¤·¤Ê¤¤¤Î¤Ç¡¤É¬Íפʾì¹ç¡¤¼«Æ°Åª¤Ê&version;¤Îǧ¼±¤ò²Äǽ¤È¤¹¤ë¼êÃʤȤ·¤Æ¡¤¤³¤Î¹½À®»Ò¤òÄ󶡤¹¤ë¡£&processor;¤Ï¡¤¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤&version;¤Ç¥é¥Ù¥ëÉÕ¤±¤·¤¿Ê¸½ñ¤ò¼õ¤±¼è¤Ã¤¿¤È¤­¡¤&error;¤òÄÌÃΤ·¤Æ¤â¤è¤¤¡£
+</p>
+<p>XMLʸ½ñÆâ¤Î&markup;¤Îµ¡Ç½¤Ï¡¤µ­²±¹½Â¤µÚ¤ÓÏÀÍý¹½Â¤¤òµ­½Ò¤¹¤ë¤³¤È¡¤Ê¤ӤË°À­µÚ¤Ó°À­ÃͤÎÂФòÏÀÍý¹½Â¤¤Ë´ØÏ¢¤Å¤±¤ë¤³¤È¤Ë¤¢¤ë¡£XML¤Ï¡¤ÏÀÍý¹½Â¤¤Ë¤Ä¤¤¤Æ¤ÎÀ©Ìó¾ò·ï¤òÄêµÁ¤¹¤ë¤¿¤á¡¤µÚ¤Ó¤¢¤é¤«¤¸¤áÄêµÁ¤µ¤ì¤¿µ­²±Ã±°Ì¤ò»ÈÍѤǤ­¤ë¤¿¤á¤Îµ¡¹½¤È¤·¤Æ¡¤<termref def="dt-doctype">ʸ½ñ·¿Àë¸À</termref>¤òÄ󶡤¹¤ë¡£<!-- old
+The function of the markup in an XML document is to describe its
+storage and logical structures, and associate attribute-value pairs with the
+logical structure.
+XML provides a
+mechanism, the <termref def="dt-doctype">document type declaration</termref>,
+to
+define constraints on that logical structure and to support the use of
+predefined storage units. --><termdef id="dt-valid" term="Validity">XMLʸ½ñ¤¬<term>&valid;</term>¤È¤Ï¡¤Ê¸½ñ·¿Àë¸À¤ò¤â¤Á¡¤¤½¤Îʸ½ñ·¿Àë¸À¤Ë¼¨¤¹À©Ìó¾ò·ï¤òËþ¤¿¤¹¤³¤È¤È¤¹¤ë¡£
+</termdef></p>
+<p>ʸ½ñ·¿Àë¸À¤Ï¡¤Ê¸½ñ¤ÎºÇ½é¤Î<termref def="dt-element">Í×ÁÇ</termref>¤ÎÁ°¤Ë¸½¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+<scrap lang="ebnf" id='xmldoc'>
+<head>&prolog;</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-prolog'><lhs>prolog</lhs>
+<rhs><nt def='NT-XMLDecl'>XMLDecl</nt>?
+<nt def='NT-Misc'>Misc</nt>*
+(<nt def='NT-doctypedecl'>doctypedecl</nt>
+<nt def='NT-Misc'>Misc</nt>*)?</rhs></prod>
+<prod id='NT-XMLDecl'><lhs>XMLDecl</lhs>
+<rhs>&xmlpio;
+<nt def='NT-VersionInfo'>VersionInfo</nt>
+<nt def='NT-EncodingDecl'>EncodingDecl</nt>?
+<nt def='NT-SDDecl'>SDDecl</nt>?
+<nt def="NT-S">S</nt>?
+&pic;</rhs>
+</prod>
+<prod id='NT-VersionInfo'><lhs>VersionInfo</lhs>
+<rhs><nt def="NT-S">S</nt> 'version' <nt def='NT-Eq'>Eq</nt>
+('"<nt def="NT-VersionNum">VersionNum</nt>"'
+| "'<nt def="NT-VersionNum">VersionNum</nt>'")</rhs>
+</prod>
+<prod id='NT-Eq'><lhs>Eq</lhs>
+<rhs><nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?</rhs></prod>
+<prod id="NT-VersionNum">
+<lhs>VersionNum</lhs>
+<rhs>([a-zA-Z0-9_.:] | '-')+</rhs>
+</prod>
+<prod id='NT-Misc'><lhs>Misc</lhs>
+<rhs><nt def='NT-Comment'>Comment</nt> | <nt def='NT-PI'>PI</nt> |
+<nt def='NT-S'>S</nt></rhs></prod>
+</prodgroup>
+</scrap></p>
+
+<p>
+Î㤨¤Ð¡¤¼¡¤Ë¼¨¤¹´°Á´¤ÊXMLʸ½ñ¤Ï¡¤<termref def="dt-wellformed">&well-formed;</termref>¤Ç¤¢¤ë¤¬<termref def="dt-valid">&valid;</termref>¤Ç¤Ï¤Ê¤¤¡£
+<eg><![CDATA[<?xml version="1.0"?>
+<greeting>Hello, world!</greeting>
+]]></eg>
+¼¡¤Îʸ½ñ¤âƱÍͤȤ¹¤ë¡£
+<eg><![CDATA[<greeting>Hello, world!</greeting>
+]]></eg>
+</p>
+<p><termdef id="dt-doctype" term="Document Type Declaration">
+XML¤Î<term>ʸ½ñ·¿Àë¸À</term>¤Ï¡¤¤¢¤ëʸ½ñ¥¯¥é¥¹¤Î¤¿¤á¤Îʸˡ¤òÄ󶡤¹¤ë<termref def='dt-markupdecl'>&markup;Àë¸À</termref>¤ò´Þ¤à¤«¡¤Ëô¤Ï»²¾È¤¹¤ë¡£¤³¤Îʸˡ¤ò¡¤Ê¸½ñ·¿ÄêµÁËô¤Ï<term>DTD</term>¤È¤¤¤¦¡£Ê¸½ñ·¿Àë¸À¤Ï¡¤&markup;Àë¸À¤ò´Þ¤ó¤À³°Éô&subset;(ÆÃÊ̤ʼïÎà¤Î<termref def='dt-extent'>³°Éô¼ÂÂÎ</termref>)¤ò»²¾È¤Ç¤­¡¤Ëô¤ÏÆâÉô&subset;¤ËľÀÜ&markup;Àë¸À¤ò´Þ¤à¤³¤È¤â¤Ç¤­¤ë¡£¤µ¤é¤Ë¡¤¤½¤ÎξÊý¤â²Äǽ¤È¤¹¤ë¡£¤¢¤ëʸ½ñ¤ÎDTD¤Ï¡¤Î¾Êý¤Î&subset;¤ò¤Þ¤È¤á¤¿¤â¤Î¤È¤·¤Æ¹½À®¤¹¤ë¡£</termdef>
+</p>
+<p><termdef id="dt-markupdecl" term="markup declaration">
+<term>&markup;Àë¸À</term>¤Ï¡¤<termref def="dt-eldecl">Í×ÁÇ·¿Àë¸À</termref>¡¤ <termref def="dt-attdecl">°À­¥ê¥¹¥ÈÀë¸À</termref>¡¤<termref def="dt-entdecl">¼ÂÂÎÀë¸À</termref>Ëô¤Ï<termref def="dt-notdecl">µ­Ë¡Àë¸À</termref>¤È¤¹¤ë¡£</termdef>¼¡¤Ë¼¨¤¹&well-formed;À©ÌóµÚ¤Ó&validity;À©Ìó¤Ëµ¬Äꤹ¤ë¤¬¡¤¤³¤ì¤é¤ÎÀë¸À¤Ï¡¤<termref def='dt-PE'>&parameter;¼ÂÂÎ</termref>Æâ¤ËÁ´ÂÎËô¤Ï°ìÉô¤¬´Þ¤Þ¤ì¤Æ¤â¤è¤¤¡£¾Ü¤·¤¤µ¬Äê¤Ï¡¤<titleref xml-link="simple" href="sec-physical-struct">ʪÍý¹½Â¤</titleref>¤Ë´Ø¤¹¤ëµ¬Äê¤ò»²¾È¤Î¤³¤È¡£</p>
+<scrap lang="ebnf" id='dtd'>
+<head>ʸ½ñ·¿ÄêµÁ</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-doctypedecl'><lhs>doctypedecl</lhs>
+<rhs>'&lt;!DOCTYPE' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt>
+<nt def='NT-ExternalID'>ExternalID</nt>)?
+<nt def='NT-S'>S</nt>? ('['
+(<nt def='NT-markupdecl'>markupdecl</nt>
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-S'>S</nt>)*
+']'
+<nt def='NT-S'>S</nt>?)? '>'</rhs>
+<vc def="vc-roottype"/>
+<!--<vc def="vc-nonnullDTD"/>-->
+</prod>
+<!--
+<prod id='NT-markupdecls'><lhs>markupdecls</lhs>
+<rhs>
+(<nt def='NT-S'>S</nt>?
+<nt def='NT-markupdecl'>markupdecl</nt>
+<nt def='NT-S'>S</nt>?)*
+</rhs></prod>
+-->
+<prod id='NT-markupdecl'><lhs>markupdecl</lhs>
+<rhs><nt def='NT-elementdecl'>elementdecl</nt>
+| <nt def='NT-AttlistDecl'>AttlistDecl</nt>
+| <nt def='NT-EntityDecl'>EntityDecl</nt>
+| <nt def='NT-NotationDecl'>NotationDecl</nt>
+| <nt def='NT-PI'>PI</nt>
+| <nt def='NT-Comment'>Comment</nt>
+<!--| <nt def='NT-InternalPERef'>InternalPERef</nt> --></rhs>
+<vc def='vc-PEinMarkupDecl'/>
+<wfc def="wfc-PEinInternalSubset"/>
+</prod>
+<!--
+<prod id="NT-InternalPERef"><lhs>InternalPERef</lhs>
+<rhs><nt def="NT-PEReference">PEReference</nt></rhs>
+<wfc def="wfc-integraldec"/>
+</prod>
+-->
+</prodgroup>
+</scrap>
+<vcnote id="vc-roottype">
+<head>&root;Í×ÁÇ·¿</head>
+<p>
+ʸ½ñ·¿Àë¸À¤Ë¤ª¤±¤ë<nt def='NT-Name'>Name</nt>¤Ï¡¤&root;Í×ÁǤη¿¤È&match;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+</vcnote>
+<!--
+<vcnote id="vc-nonnullDTD">
+<head>Non-null DTD</head>
+<p>
+The internal and external subsets of the DTD must not both
+be empty.
+</p>
+</vcnote>
+-->
+<vcnote id='vc-PEinMarkupDecl'>
+<head>Àë¸ÀµÚ¤Ó&parameter;¼ÂÂΤ¬¸·Ì©¤ËÆþ¤ì»Ò¤ò¤Ê¤¹¤³¤È</head>
+<p>&parameter;¼ÂÂÎ<termref def='dt-repltext'>¤Î&replacement-text;</termref>¤Ï¡¤&markup;Àë¸ÀÆâ¤Ë¤ª¤¤¤Æ¡¤¸·Ì©¤ËÆþ¤ì»Ò¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤Ä¤Þ¤ê¡¤&markup;Àë¸À(<nt def='NT-markupdecl'>markupdecl</nt>)¤ÎºÇ½éËô¤ÏºÇ¸å¤Îʸ»ú¤¬¡¤<termref def='dt-PERef'>&parameter;¼ÂÂλ²¾È</termref>¤ÎÂоݤȤʤë&replacement-text;¤Ë´Þ¤Þ¤ì¤ì¤Ð¡¤Î¾Êý¤È¤âƱ¤¸&replacement-text;¤Ë´Þ¤Þ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+</vcnote>
+<wfcnote id="wfc-PEinInternalSubset">
+<head>ÆâÉô&subset;Æâ¤Î&parameter;¼ÂÂÎ</head>
+<p>DTD¤ÎÆâÉô&subset;¤Ç¤Ï¡¤<termref def='dt-PERef'>&parameter;¼ÂÂλ²¾È</termref>¤Ï¡¤&markup;Àë¸À¤¬½Ð¸½²Äǽ¤Ê¾ì½ê¤À¤±¤Ë½Ð¸½¤Ç¤­¤ë¡£&markup;Àë¸ÀÆâ¤Ë¤Ï½Ð¸½¤Ç¤­¤Ê¤¤(¤³¤ÎÀ©Ìó¤Ï¡¤³°Éô&parameter;¼ÂÂÎËô¤Ï³°Éô&subset;¤Ç¤Î»²¾È¤Ë¤ÏŬÍѤ·¤Ê¤¤¡£)¡£
+</p>
+</wfcnote>
+<p>
+ÆâÉô&subset;¤Î¤È¤­¤ÈƱÍͤˡ¤³°Éô&subset;µÚ¤ÓDTD¤Ë¤ª¤¤¤Æ»²¾È¤¹¤ëǤ°Õ¤Î³°Éô&parameter;¼ÂÂΤϡ¤Èó½ªÃ¼µ­¹æ<nt def="NT-markupdecl">markupdecl</nt>¤Ë¤è¤Ã¤Æµö¤µ¤ì¤ë·¿¤Î¡¤°ìÏ¢¤Î´°Á´¤Ê&markup;Àë¸À¤Ç¹½À®¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£&markup;Àë¸À¤Î´Ö¤Ë¤Ï¡¤¶õÇòËô¤Ï<termref def="dt-PERef">&parameter;¼ÂÂλ²¾È</termref>¤òÃÖ¤¤¤Æ¤â¤è¤¤¡£¤·¤«¤·¡¤³°Éô&subset;Ëô¤Ï³°Éô&parameter;¼ÂÂΤÎÆâÍƤΰìÉô¤Ï¡¤<termref def="dt-cond-section">¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó</termref>¤ò»ÈÍѤ·¤Æ̵»ë¤·¤Æ¤â¤è¤¤¡£ÆâÉô¥µ¥Ö¥»¥Ã¥È¤Ç¤Ï¡¤¤³¤ì¤Ïµö¤µ¤ì¤Ê¤¤¡£
+<!--In the external subset, however, parameter-entity references can
+be used to replace constructs prefixed by "<code>%</code>" in a production of
+the grammar, and <termref def="dt-cond-section">conditional sections</termref>
+may occur.
+In the internal subset, by contrast, conditional sections may not
+occur and the only parameter-entity references
+allowed are those which match the non-terminal
+<nt def="NT-InternalPERef">InternalPERef</nt>
+within the rule for <nt def="NT-doctypedecl">markupdecl</nt>.
+-->
+<scrap id="ext-Subset">
+<head>³°Éô&subset;</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-extSubset'><lhs>extSubset</lhs>
+<rhs>(
+<nt def='NT-markupdecl'>markupdecl</nt>
+| <nt def='NT-conditionalSect'>conditionalSect</nt>
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-S'>S</nt>
+)*</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>³°Éô&subset;µÚ¤Ó³°Éô&parameter;¼ÂÂΤϡ¤¤½¤ÎÆâ¤Ç¤Ï¡¤&parameter;¼ÂÂΤ¬&markup;Àë¸À¤Î<emph>´Ö</emph>¤À¤±¤Ç¤Ê¤¯¡¤&markup;Àë¸À¤Î<emph>Æâ</emph>¤Ç¤âǧ¼±¤µ¤ì¤ë¡¤¤È¤¤¤¦ÅÀ¤Ç¤âÆâÉô&subset;¤È¤Ï°Û¤Ê¤ë¡£
+</p>
+<p>ʸ½ñ·¿Àë¸ÀÉÕ¤­¤ÎXMLʸ½ñ¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE greeting SYSTEM "hello.dtd">
+<greeting>Hello, world!</greeting>
+]]></eg>
+<termref def="dt-sysid">¥·¥¹¥Æ¥à&identifier;</termref> "<code>hello.dtd</code>"¤¬¡¤Ê¸½ñ¤ÎDTD¤ÎURI¤È¤Ê¤ë¡£</p>
+<p>¼¡¤ÎÎã¤Î¤È¤ª¤ê¡¤Àë¸À¤ò¶É½êŪ¤ËÍ¿¤¨¤ë¤³¤È¤â¤Ç¤­¤ë¡£
+<eg><![CDATA[<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE greeting [
+ <!ELEMENT greeting (#PCDATA)>
+]>
+<greeting>Hello, world!</greeting>
+]]></eg>
+³°Éô&subset;µÚ¤ÓÆâÉô&subset;¤ÎξÊý¤ò»ÈÍѤ¹¤ë¤È¤­¤Ï¡¤ÆâÉô&subset;¤¬³°Éô&subset;¤è¤êÀè¤Ë½Ð¸½¤·¤¿¤È¸«¤Ê¤¹¡£<!--* 'is considered to'? boo. whazzat mean? -->¤³¤ì¤Ï¡¤ÆâÉô&subset;¤Î¼ÂÂεڤÓ°À­¥ê¥¹¥ÈÀë¸À¤¬¡¤³°Éô&subset;¤Î¼ÂÂεڤÓ°À­¥ê¥¹¥ÈÀë¸À¤è¤êÍ¥À褹¤ë¤È¤¤¤¦¸ú²Ì¤ò¤â¤¿¤é¤¹¡£
+</p>
+</div2>
+
+<div2 id='sec-rmd'>
+<head>&standalone;ʸ½ñÀë¸À</head>
+<p><termref def="dt-xml-proc">XML&processor;</termref>¤Ï¡¤&application;¤Ëʸ½ñ¤ÎÆâÍƤòÅϤ¹¤¬¡¤&markup;Àë¸À¤Ï¡¤¤³¤ÎÆâÍƤ˱ƶÁ¤òÍ¿¤¨¤ë¤³¤È¤¬¤¢¤ë¡£Â°À­¤Î&default-value;µÚ¤Ó¼ÂÂÎÀë¸À¤ò¤½¤ÎÎã¤È¤¹¤ë¡£XMLÀë¸À¤Î°ìÉôʬ¤È¤·¤Æ½Ð¸½¤Ç¤­¤ë&standalone;ʸ½ñÀë¸À¤Ï¡¤Ê¸½ñ¤¬¡¤¤½¤Î&markup;Àë¸À¤Î¸ºß¤Ë¤è¤Ã¤Æ±Æ¶Á¤µ¤ì¤Ê¤¤¤³¤È¤ò»Ø¤·¼¨¤¹¡ÊÉáÄÌ¡¤¤½¤Î&markup;Àë¸À¤¬Â¸ºß¤·¤Ê¤¤¤¿¤á¤Ë¡¤¤³¤ì¤¬¤¤¤¨¤ë¡£¡Ë¡£
+<scrap lang="ebnf" id='fulldtd'>
+<head>&standalone;ʸ½ñÀë¸À</head>
+<prodgroup pcw2="4" pcw4="19.5" pcw5="9">
+<prod id='NT-SDDecl'><lhs>SDDecl</lhs>
+<rhs>
+<nt def="NT-S">S</nt>
+'standalone' <nt def='NT-Eq'>Eq</nt> "'" ('yes' | 'no') "'"
+</rhs>
+<rhs>
+| <nt def="NT-S">S</nt>
+'standalone' <nt def='NT-Eq'>Eq</nt> '"' ('yes' | 'no') '"'
+</rhs><vc def='vc-check-rmd'/></prod>
+</prodgroup>
+</scrap></p>
+<p>&standalone;ʸ½ñÀë¸À¤Ë¤ª¤¤¤Æ¤Ï, "<code>yes</code>"¤ÎÃͤϡ¤<termref def='dt-docent'>ʸ½ñ¼ÂÂÎ</termref>¤Î³°Éô¤Ë¡ÊDTD¤Î³°Éô&subset;Æâ¤Ë¡¤Ëô¤ÏÆâÉô&subset;¤«¤é»²¾È¤µ¤ì¤ë³°Éô¥Ñ¥é¥á¥¿¼ÂÂÎÆâ¤Ë¡Ë¡¤XML&processor;¤«¤é&application;¤Ø¤ÈÅϤµ¤ì¤ë¾ðÊó¤Ë±Æ¶Á¤¹¤ë&markup;Àë¸À¤¬Â¸ºß¤·¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£"<code>no</code>"¤ÎÃͤϡ¤¤½¤Î³°Éô&markup;Àë¸À¤¬Â¸ºß¤¹¤ë¤«¡¤Ëô¤Ï¸ºß¤¹¤ë²ÄǽÀ­¤¬¤¢¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£&standalone;ʸ½ñÀë¸À¤Ï¡¤¤½¤Î<emph>Àë¸À</emph>¤¬Ê¸½ñ³°Éô¤Ë¸ºß¤¹¤ë¤«¤É¤¦¤«¤ò¼¨¤¹¤À¤±¤ËÃí°Õ¤¹¤ë¤³¤È¡£³°Éô¼ÂÂΤؤλ²¾È¤¬Ê¸½ñÆâ¤Ë¸ºß¤·¤Æ¤¤¤Æ¤â¡¤¤½¤Î¼ÂÂΤ¬ÆâÉôŪ¤ËÀë¸À¤µ¤ì¤Æ¤¤¤ë¤È¤­¤Ï¡¤Ê¸½ñ¤Î&standalone;¤Î¾õÂ֤ˤϱƶÁ¤òÍ¿¤¨¤Ê¤¤¡£</p>
+
+<p>³°Éô¤Ë&markup;Àë¸À¤¬Â¸ºß¤·¤Ê¤±¤ì¤Ð¡¤&standalone;ʸ½ñÀë¸À¤Ï°ÕÌ£¤ò¤â¤¿¤Ê¤¤¡£³°Éô¤Ë&markup;Àë¸À¤¬Â¸ºß¤·¡¤&standalone;ʸ½ñÀë¸À¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¤Ï¡¤<code>"no"</code> ¤ÎÃͤÎÀßÄê¤ò²¾Äꤹ¤ë¡£</p>
+<p>XMLʸ½ñ¤Ç <code>standalone="no"</code> ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤â¤Î¤Ï¡¤¤¢¤ë¥¢¥ë¥´¥ê¥º¥à¤Ç&standalone;ʸ½ñ¤ËÊÑ´¹¤Ç¤­¡¤¤³¤Îʸ½ñ¤Ï¡¤¥Í¥Ã¥È¥ï¡¼¥¯ÇÛ¿®&application;¤Ë¤È¤Ã¤Æ˾¤Þ¤·¤¤¤«¤â¤·¤ì¤Ê¤¤¡£</p>
+<vcnote id='vc-check-rmd'>
+<head>&standalone;ʸ½ñÀë¸À</head>
+<p>&standalone;ʸ½ñÀë¸À¤Ï¡¤²¿¤é¤«¤Î³°Éô&markup;Àë¸À¤¬¼¡¤Î¤¤¤º¤ì¤«¤òÀë¸À¤·¤Æ¤¤¤ë¤È¤­¤Ï¡¤ÃÍ "<code>no</code>" ¤ò¼è¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+<ulist>
+<item><p>a) <termref def="dt-default">&default;</termref>ÃÍÉÕ¤­¤Î°À­¤Ç¤¢¤Ã¤Æ¡¤¤³¤Î°À­¤¬Å¬ÍѤµ¤ì¤ëÍ×ÁǤ¬¡¤Â°À­Ãͤò»ØÄꤻ¤º¤Ëʸ½ñÆâ¤Ë¸½¤ì¤ë¤â¤Î¡£</p></item>
+<item><p>b) &magicents;°Ê³°¤Î¼ÂÂΤǤ¢¤Ã¤Æ¡¤¤½¤Î¼ÂÂΤËÂФ¹¤ë<termref def="dt-entref">»²¾È</termref>¤¬Ê¸½ñÆâ¤Ë½Ð¸½¤¹¤ë¤â¤Î¡£</p>
+</item>
+<item><p>c) Ãͤ¬<titleref href='AVNormalize'>Àµµ¬²½</titleref>¤ÎÂоݤȤʤë°À­¤Ç¤¢¤Ã¤Æ¡¤Àµµ¬²½¤Î·ë²Ì¤È¤·¤ÆÊѲ½¤¹¤ëÃͤ¬Ê¸½ñÆâ¤Ç°À­¤Ë»ØÄꤵ¤ì¤ë¤â¤Î¡£</p></item>
+<item>
+<p>d) <termref def="dt-elemcontent">Í×ÁÇÆâÍÆ</termref>¤ò¤â¤ÄÍ×ÁÇ·¿¤Ç¤¢¤Ã¤Æ¡¤¶õÇò¤¬¤½¤ÎÍ×ÁÇ·¿¤Î¤¤¤º¤ì¤«¤Î¥¤¥ó¥¹¥¿¥ó¥¹Æâ¤ËľÀܸ½¤ì¤ë¤â¤Î¡£
+</p></item>
+</ulist>
+</p>
+</vcnote>
+<p>&standalone;ʸ½ñÀë¸ÀÉÕ¤­¤ÎXMLÀë¸À¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg>&lt;?xml version="&XML.version;" standalone='yes'?></eg></p>
+</div2>
+<div2 id='sec-white-space'>
+<head>¶õÇò¤Î¼è°·¤¤</head>
+<p>XMLʸ½ñ¤òÊÔ½¸¤¹¤ë¤È¤­¤Ï¡¤&markup;¤òÌÜΩ¤¿¤»Æɤߤ䤹¤¯¤¹¤ë¤¿¤á¤Ë¡¤¡È¶õÇò¡É(&space;¡¤¥¿¥ÖµÚ¤Ó¶õÇò¹Ô¡£¤³¤Î&TR-or-Rec;¤Ç¤Ï¡¤Èó½ªÃ¼µ­¹æ¤Î<nt def='NT-S'>S</nt>¤Çɽ¤¹)¤ò»È¤¦¤ÈÊØÍø¤Ê¤³¤È¤¬Â¿¤¤¡£¤½¤Î¶õÇò¤Ï¡¤ÇÛÉÛ¤¹¤ë&version;¤Îʸ½ñ¤Î°ìÉô¤È¤·¤Æ´Þ¤á¤ë¤³¤È¤ò°Õ¿Þ¤·¤Ê¤¤¤Î¤òÉáÄ̤Ȥ¹¤ë¡£¤·¤«¤·¡¤¡È°ÕÌ£¤Î¤¢¤ë¡É¶õÇò¤Ç¤¢¤Ã¤Æ¡¤ÇÛÉÛ¤¹¤ë&version;¤Ë»Ä¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤â¤Î¤â¿¤¤¡£Î㤨¤Ð¡¤»íµÚ¤Ó¥½¡¼¥¹¥³¡¼¥É¤Ë¤ª¤±¤ë¶õÇò¤¬¤¢¤ë¡£</p>
+<p><termref def='dt-xml-proc'>XML&processor;</termref>¤Ï¡¤Ê¸½ñÆâ¤Î&markup;°Ê³°¤Î¤¹¤Ù¤Æ¤Îʸ»ú¤ò¡¤¤½¤Î¤Þ¤ÞÊѹ¹¤»¤º¤Ë&application;¤ËÅϤµ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£<termref def='dt-validating'>&validating;XML&processor;</termref>¤Ï¡¤<termref def="dt-elemcontent">Í×ÁÇÆâÍÆ</termref>¤ÎÃæ¤Î¶õÇò¤ò¾¤ÎÈó&markup;ʸ»ú¤«¤é¶èÊ̤·¡¤&application;¦¤ËÍ×ÁÇÆâÍƤÎÃæ¤Î¶õÇò¤¬½ÅÍפǤʤ¤¤È¤¤¤¦¤³¤È¤òÅÁ¤¨¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+<p>
+"<code>xml:space</code>"¤È¤¤¤¦ÆÃÊ̤Ê<termref def='dt-attr'>°À­</termref>¤òʸ½ñ¤ËÁÞÆþ¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¤¶õÇò¤ò½ÅÍפȤ¹¤ë°Õ¿Þ¤ò¼¨¤·¤Æ¤â¤è¤¤¡£¤³¤Î°À­¤òŬÍѤ¹¤ëÍ×ÁǤ˸½¤ì¤ë¶õÇò¤ò¡¤¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬½ÅÍפʤâ¤Î¤È¤·¤Æ°·¤¦¤³¤È¤òÍ׵᤹¤ë¡¤¤È¤¤¤¦°Õ¿Þ¤ò¼¨¤¹¡£</p>
+<p>&valid;¤Êʸ½ñ¤Ç¤Ï¡¤¤³¤Î°À­¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¤Â¾¤Î°À­¤ÈƱ¤¸¤è¤¦¤Ë<termref def="dt-attdecl">Àë¸À</termref>¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£Àë¸À¤¹¤ë¤È¤­¤Ï¡¤¼è¤êÆÀ¤ëÃͤò"<code>default</code>"µÚ¤Ó "<code>preserve</code>"¤À¤±¤È¤¹¤ë<termref def='dt-enumerated'>Îóµó·¿</termref>¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+<p>ÃÍ"<code>default</code>"¤Ï¡¤&application;¤Î&default;¤Î¶õÇò½èÍý¥â¡¼¥É¤ò¡¤¤½¤ÎÍ×ÁǤËŬÍѲÄǽ¤È¤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ÃÍ"<code>preserve</code>"¤Ï¡¤&application;¤¬¤¹¤Ù¤Æ¤Î¶õÇò¤òÊݸ¤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£¤³¤ÎÀë¸À¤Î°Õ¿Þ¤Ï¡¤"<code>xml:space</code>" °À­¤ÎÊ̤λØÄê¤Ç¾å½ñ¤­¤·¤Ê¤¤¸Â¤ê¡¤Í×ÁǤÎÆâÍƤ˸½¤ì¤ë¤¹¤Ù¤Æ¤ÎÍ×ÁǤËŬÍѤ¹¤ë¤È²ò¼á¤¹¤ë¡£</p>
+<p>ʸ½ñ¤Î<termref def='dt-root'>&root;Í×ÁÇ</termref>¤Ë¤Ä¤¤¤Æ¤Ï¡¤¤³¤Î°À­¤ÎÃͤò»ØÄꤹ¤ë¤«¡¤Ëô¤Ï¤³¤Î°À­¤Î&default-value;¤¬¤¢¤ë¾ì¹ç¤ò½ü¤¤¤Æ¤Ï¡¤&application;¤Ë¤è¤ë¶õÇò¤Î¼è°·¤¤¤Ë¤Ä¤¤¤Æ¡¤¤¤¤«¤Ê¤ë°Õ¿Þ¤â¼¨¤µ¤Ê¤¤¤È²ò¼á¤¹¤ë¡£</p>
+<p>Îã¤ò¼¡¤Ë¼¨¤¹¡£
+<eg><![CDATA[ <!ATTLIST poem xml:space (default|preserve) 'preserve'>]]></eg>
+</p>
+</div2>
+<div2 id='sec-line-ends'>
+<head>¹ÔËö¤Î¼è°·¤¤</head>
+<p>XML¤Î<termref def='dt-parsedent'>¹½Ê¸&parsed-entity;</termref>¤Ï¡¤Ä̾拾¥ó¥Ô¥å¡¼¥¿¤Î¥Õ¥¡¥¤¥ëÆâ¤ËÊݸ¤µ¤ì¡¤ÊÔ½¸¤ÎÊص¹¤Î¤¿¤á¤ËÊ£¿ô¤Î¹Ô¤Ëʬ¤±¤ë¤³¤È¤¬Â¿¤¤¡£¤³¤ì¤é¤Î¹Ô¤Ï¡¤ÉáÄ̤ϡ¤<code>CR</code> (#xD)¥³¡¼¥ÉµÚ¤Ó <code>LF</code> (#xA)¥³¡¼¥É¤Î²¿¤é¤«¤ÎÁȹ礻¤Ë¤è¤Ã¤Æʬ¤±¤é¤ì¤ë¡£</p>
+<p><termref def='dt-app'>&application;</termref>¤Î½èÍý¤ò´Êñ¤Ë¤¹¤ë¤¿¤á¡¤³°Éô&parsed-entity;Ëô¤ÏÆâÉô&parsed-entity;¤Î&literal;¼ÂÂÎÃͤ¬¡¤"<code>#xD#xA</code>" ¤Î£²Ê¸»ú¤ÎϢ³¤È¤¹¤ë&literal;Ëô¤Ï<code>#xD</code>¤ÎñÆȤÎ&literal;¤ò´Þ¤à¾ì¹ç¤Ë¡¤<termref def='dt-xml-proc'>XML&processor;</termref>¤Ï¡¤&application;¤Ëñ°ì¤Îʸ»ú<code>#xA</code>¤À¤±¤òÅϤµ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤(¤³¤Î½èÍý¤Ï¡¤ÆþÎÏÆâ¤Ë¸ºß¤¹¤ë²þ¹Ô¥³¡¼¥É¤ò¹½Ê¸²òÀϤÎÁ°¤ËÀµµ¬²½¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¤Íưפ˼¸½¤Ç¤­¤ë¡£)¡£</p>
+</div2>
+<div2 id='sec-lang-tag'>
+<head>&language-identification;</head>
+<p>ʸ½ñ½èÍý¤Ë¤ª¤¤¤Æ¤Ï¡¤¤½¤Îʸ½ñ¤ÎÃæ¿È¤¬¤É¤ó¤Ê¼«Á³¸À¸ìËô¤Ï·Á¼°¸À¸ì¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¤«ÌÀ¼¨¤¹¤ë¤³¤È¤¬¡¤Ìò¤ËΩ¤Ä¤³¤È¤¬Â¿¤¤¡£<!--¤³¤³¤Ç»ÈÍѤ¹¤ë¡È¸À¸ì¡É¤È¤¤¤¦¸ÀÍդΰÕÌ£¤Ï¡¤"Espa&#x00F1;ol" µÚ¤Ó"EBNF"¤ÎÁÐÊý¤ÇÎ㼨¤µ¤ì¤ë°ÕÌ£¤È¤¹¤ë¡£--><!-- x00F1: spanish's small ntilde--></p>
+<!--; ¤³¤Î¾ðÊó¤Ï¡ÊÎã¤ò¤¢¤²¤ì¤Ð¡Ëʸ½ñ¤Îʸ»ú¤Îɽ¼¨¡¤Ê¤Ӥ˾ðÊóÃê½Ð¤Î¤¿¤á¤Î¸ì´´¡¦·ÁÂÖÁDzòÀϵڤӥƥ­¥¹¥È¥Ö¥í¥Ã¥¯¤ÎÀ°·Á¤Ë±Æ¶Á¤òµÚ¤Ü¤¹²ÄǽÀ­¤¬¤¢¤ë¡£-->
+<p>XMLʸ½ñÆâ¤ÎÍ×ÁǤΤâ¤ÄÆâÍÆËô¤Ï°À­Ãͤˤª¤¤¤Æ»ÈÍѤ¹¤ë<!--¼«Á³Ëô¤Ï·Á¼°-->¸À¸ì¤ò»ØÄꤹ¤ë¤¿¤á¤Ë¡¤"<code>xml:lang</code>" ¤È¤¤¤¦Ì¾Á°¤ÎÆÃÊ̤Ê<termref def="dt-attr">°À­</termref>¤ò¡¤Ê¸½ñÆâ¤ËÁÞÆþ¤·¤Æ¤â¤è¤¤¡£
+<!--; ¤³¤Î°À­¤ÏXMLµ¬Äê¤Î°ìÉô¤È¤·¤Æ¡¤Ê£¿ô¤ÎXML&application;¤ÎÁê¸ß±¿ÍÑÀ­¤ò¹â¤á¤ë¤¿¤á¤ËÄêµÁ¤¹¤ë¡£-->
+°À­¤ÎÃͤϡ¤<bibref ref="RFC1766"/>¡ÈRFC1766¡§&language-identification;¤Î¤¿¤á¤Î¥¿¥°¡É¤Ë¤è¤Ã¤Æµ¬Äꤵ¤ì¤ë&language-identification;¥³¡¼¥É¤Ë½¾¤¦¡£
+<scrap lang='ebnf'>
+<head>&language-identification;</head>
+<prod id='NT-LanguageID'><lhs>LanguageID</lhs>
+<rhs><nt def='NT-Langcode'>Langcode</nt>
+('-' <nt def='NT-Subcode'>Subcode</nt>)*</rhs></prod>
+<prod id='NT-Langcode'><lhs>Langcode</lhs>
+<rhs><nt def='NT-ISO639Code'>ISO639Code</nt> |
+<nt def='NT-IanaCode'>IanaCode</nt> |
+<nt def='NT-UserCode'>UserCode</nt></rhs>
+</prod>
+<prod id='NT-ISO639Code'><lhs>ISO639Code</lhs>
+<rhs>([a-z] | [A-Z]) ([a-z] | [A-Z])</rhs></prod>
+<prod id='NT-IanaCode'><lhs>IanaCode</lhs>
+<rhs>('i' | 'I') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id='NT-UserCode'><lhs>UserCode</lhs>
+<rhs>('x' | 'X') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id='NT-Subcode'><lhs>Subcode</lhs>
+<rhs>([a-z] | [A-Z])+</rhs></prod>
+</scrap>
+<nt def='NT-Langcode'>Langcode</nt>¤Ï¡¤¼¡¤Î¤É¤ì¤Ç¤â¤è¤¤¡£
+<ulist>
+<item><p>a) <bibref ref="ISO639"/>¡È¸À¸ì¤Î̾Á°É½¸½¤Î¤¿¤á¤Î¥³¡¼¥É¡É¤Çµ¬Äꤵ¤ì¤ë2ʸ»ú¤Î&language-code;</p></item>
+<item><p>b) Internet Assigned Numbers Authority (IANA)¤ÇÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë&language-code;¡£¤³¤ì¤Ï¡¤ÀèƬ¤¬ "<code>i-</code>" (Ëô¤Ï"<code>I-</code>")¤Ç»Ï¤Þ¤ë¡£</p></item>
+<item><p>c) &user;¤Ë¤è¤Ã¤ÆÄê¤á¤é¤ì¤¿&language-code;¡¤Ëô¤Ï»äŪ¤Ê»ÈÍѤΤ¿¤á¤ËÊ£¿ô¤ÎÃÄÂδ֤¬¼è¤ê·è¤á¤¿¥³¡¼¥É¡£¤³¤ì¤é¤Ï¡¤º£¸åIANA¤Ë¤ª¤¤¤Æɸ½à²½Ëô¤ÏÅÐÏ¿¤µ¤ì¤ë¥³¡¼¥É¤È¤Î¶¥¹ç¤òÈò¤±¤ë¤¿¤á¤Ë¡¤ÀèƬ¤ò"<code>x-</code>" Ëô¤Ï "<code>X-</code>" ¤Ç»Ï¤á¤ë¡£</p></item>
+</ulist></p>
+<p><nt def='NT-Subcode'>Subcode</nt>¤Ï¡¤Ê£¿ô²ó»È¤Ã¤Æ¤â¤è¤¤¡£ºÇ½é¤Î¥µ¥Ö¥³¡¼¥É¤¬Â¸ºß¤·¡¤¤½¤ÎÆâÍƤ¬Æó¤Ä¤Îʸ»ú¤«¤éÀ®¤ë¤È¤­¤Ï¡¤<bibref ref="ISO3166"/>ISO3166¤Î¡È¹ñ̾¤òɽ¤¹¥³¡¼¥É(¹ñ¥³¡¼¥É)¡É¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ºÇ½é¤Î¥µ¥Ö¥³¡¼¥É¤¬3ʸ»ú°Ê¾å¤«¤éÀ®¤ë¤È¤­¤Ï¡¤<nt def='NT-Langcode'>Langcode</nt>¤ÎÀèƬ¤¬¡¤"<code>x-</code>" Ëô¤Ï "<code>X-</code>"¤Ç»Ï¤Þ¤é¤Ê¤¤¸Â¤ê¡¤»ØÄꤷ¤¿¸À¸ì¤ËÂФ¹¤ë¥µ¥Ö¥³¡¼¥É¤È¤·¡¤IANA¤ËÅÐÏ¿¤µ¤ì¤¿¤â¤Î¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+<p>&language-code;¤Ï¡¤¾®Ê¸»ú¤Ç¤Îɽµ­¤ò¡¤&country-code;¤Ï¡¤(¸ºß¤¹¤ë¤Ê¤é¤Ð)Âçʸ»ú¤Ç¤Îɽµ­¤ò´·¹Ô¤È¤¹¤ë¡£¤·¤«¤·¡¤XMLʸ½ñÆâ¤Ë¤ª¤±¤ë¾¤Î̾Á°¤È¤Ï°Û¤Ê¤ê¡¤¤³¤ì¤é¤ÎÃͤˤĤ¤¤Æ¤Ï¡¤Âçʸ»úµÚ¤Ó¾®Ê¸»ú¤Î¶èÊ̤ò¤·¤Ê¤¤¤³¤È¤ËÃí°Õ¤¹¤ë¤³¤È¡£</p>
+<p>Îã¤ò¼¡¤Ë¼¨¤¹¡£
+<eg><![CDATA[<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
+<p xml:lang="en-GB">What colour is it?</p>
+<p xml:lang="en-US">What color is it?</p>
+<sp who="Faust" desc='leise' xml:lang="de">
+ <l>Habe nun, ach! Philosophie,</l>
+ <l>Juristerei, und Medizin</l>
+ <l>und leider auch Theologie</l>
+ <l>]]><!-- x00DF german's es-zet; x00FC german's u-umlaut -->durchaus studiert mit hei&#223;em Bem&#252;h'n.<![CDATA[</l>
+ </sp>]]></eg></p>
+<!--<p>xml:lang ¤ÎÃͤϡ¤Í×ÁǤÎÆâÍƵڤÓ(°À­¤Î&default-value;¤ÇÄê¤á¤Ê¤¤¸Â¤ê)¥Õ¥ê¡¼¥Æ¥­¥¹¥È(CDATA)¤ÎÃͤò¤â¤Ä¤½¤ÎÍ×ÁǤؤΤ¹¤Ù¤Æ¤Î°À­¤ÎÃͤˤĤ¤¤Æ¡¤¤½¤ÎξÊý¤ËŬÍѤ¹¤ë¡£-->
+<p><code>xml:lang</code>¤ÇÀë¸À¤¹¤ë°Õ¿Þ¤Ï¡¤<code>xml:lang</code>¤ÎÊ̤λØÄê¤Ç¾å½ñ¤·¤Ê¤¤¸Â¤ê¡¤»ØÄꤷ¤¿Í×ÁǤÎÆâÍƤ˴ޤह¤Ù¤Æ¤ÎÍ×ÁǤËŬÍѤ¹¤ë¡£</p>
+<!--¤¢¤ëÍ×ÁǤˤª¤±¤ë xml:lang °À­¤ÎÃͤ¬Äê¤á¤é¤ì¤Æ¤ª¤é¤º¡¤DTD¤Ë¤ª¤¤¤Æ¤½¤Î&default-value;¤¬Äê¤á¤é¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤¤½¤ÎÍ×ÁǤÎxml:lang °À­¤ÎÃͤϡ¤¿ÆÍ×ÁǤǤÎÃͤ¬Â¸ºß¤¹¤ë¾ì¹ç¤Ï¡¤¤½¤ì¤ò°ú¤­·Ñ¤°¡£ ¼¡¤ÎÎã¤Ë¤ª¤±¤ëÆó¤Ä¤Î<term>¤È¤¤¤¦Ì¾Á°¤ÎÀìÌçÍѸì¤òɽ¤¹Í×ÁǤϡ¤xml:lang¤ÎÃͤ˴ؤ·¤Æ¤Ï¡¤¼ÂºÝ¾å¡¤Æ±¤¸Ãͤò¤â¤Ä¡£
+
+ <p xml:lang="en">Here the keywords are
+ <term xml:lang="en">shift</term> and
+ <term>reduce</term>. ...</p>
+
+XML&processor;¤Ç¤Ï¤Ê¤¯&application;¤¬¡¤¤³¤Î°À­ÃͤηѾµ¤Ë¤Ä¤¤¤ÆÀÕǤ¤ò¤â¤Ä¡£
+-->
+<p>
+&valid;¤Êʸ½ñ¤Ë¤ª¤¤¤Æ¤Ï¡¤¤³¤Î&TR-or-Rec;¤Î¾¤Î¾ì½ê¤Çµ¬Äꤹ¤ë¤È¤ª¤ê¡¤¤³¤Î°À­¤òɬ¤ºÀë¸À¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£Ä̾Àë¸À¤Ï¡¤¼¡¤Î·Á¤È¤¹¤ë¡£
+<eg>xml:lang NMTOKEN #IMPLIED</eg>
+ɬÍפʤé¤Ð¡¤ÆÃÄê¤Î&default-value;¤òÍ¿¤¨¤Æ¤â¤è¤¤¡£±Ñ¸ì¤òÊì¸ì¤È¤¹¤ë³ØÀ¸ÍѤΥեé¥ó¥¹¸ì¤Î»í½¸¤Ç¤Ï¡¤ÀâÌÀµÚ¤ÓÃí¤ò±Ñ¸ì¤Çµ­½Ò¤¹¤ì¤Ð¡¤xml:lang °À­¤ò¼¡¤Î¤È¤ª¤ê¤ËÀë¸À¤¹¤ë¤³¤È¤È¤Ê¤ë¡£
+<eg><![CDATA[ <!ATTLIST poem xml:lang NMTOKEN 'fr'>
+ <!ATTLIST gloss xml:lang NMTOKEN 'en'>
+ <!ATTLIST note xml:lang NMTOKEN 'en'>]]></eg>
+</p>
+<!--
+DTD¤ÎÀ߷׼Ԥϡ¤¥¹¥¯¥ê¥×¥È¤ò¸À¸ì(µÚ¤Ó¤½¤ÎÇÉÀ¸ÂÎ)¤ËÊñÀݤ·¤Æ°·¤¦¤Î¤Ç¤Ï¤Ê¤¯¡¤¥¹¥¯¥ê¥×¥ÈµÚ¤Ó¸À¸ì¤òƱ¼¡¸µ¤Ç°·¤¦¤Î¤¬Å¬Åö¤Ê¾ì¹ç¡¤¸À¸ì°À­¤ÈƱÍͤ˥¹¥¯¥ê¥×¥È°À­¤¬Â¸ºß¤¹¤ì¤ÐÍ­ÍѤÀ¤È»×¤¦¤«¤â¤·¤ì¤Ê¤¤¡£¥ê¥ó¥¯Í×ÁǤˤª¤¤¤Æ¡¤»²¾È¤µ¤ì¤¿Ëô¤Ï¥ê¥ó¥¯¤µ¤ì¤¿¥ê¥½¡¼¥¹¤Ë¤ª¤±¤ë(¼çÍפÊ)¸À¸ì(¾ì¹ç¤Ë¤è¤Ã¤Æ¤ÏÊ£¿ô)¤òɽ¤¹Í×ÁǤòÄêµÁ¤¹¤ë¤Î¤â˾¤Þ¤·¤¤¡£¤·¤«¤·¡¤¤³¤ì¤é¤Î&application;¤Ï¡¤¤³¤Î&TR-or-Rec;¤¬µ¬Äꤹ¤ëÈϰϳ°¤È¤¹¤ë¡£-->
+</div2>
+</div1>
+<!-- &Elements; -->
+
+<div1 id='sec-logical-struct'>
+<head>ÏÀÍý¹½Â¤</head>
+
+<p><termdef id="dt-element" term="Element">¤¤¤«¤Ê¤ë<termref def="dt-xml-doc">XMLʸ½ñ</termref>¤â¡¤°ì¤Ä°Ê¾å¤Î<term>Í×ÁÇ</term>¤ò´Þ¤à¡£Í×ÁǤζ­³¦¤Ï, <termref def="dt-stag">³«»Ï¥¿¥°</termref>µÚ¤Ó<termref def="dt-etag">½ªÎ»¥¿¥°</termref>¤Ë¤è¤Ã¤Æ¶èÀڤ롣Í×ÁǤ¬<termref def="dt-empty">¶õ</termref>Í×ÁǤΤȤ­¤Ï¡¤<termref def="dt-eetag">¶õÍ×ÁÇ¥¿¥°</termref>¤Ç¼¨¤¹¡£³Æ¡¹¤ÎÍ×ÁǤϡ¤·¿¤ò¤â¤Ä¡£Í×ÁÇ·¿¤Ï̾Á°(¶¦ÄÌ&identifier;(generic identifier)Ëô¤ÏGI¤È¸Æ¤Ö¤³¤È¤¬¤¢¤ë¡£)¤Ë¤è¤Ã¤Æ&identified;¡£Í×ÁǤϡ¤¤¤¤¯¤Ä¤«¤Î°À­¤ò¤â¤Ä¤³¤È¤¬¤Ç¤­¤ë¡£</termdef>°À­¤Ï¡¤<termref def="dt-attrname">̾Á°</termref>µÚ¤Ó<termref def="dt-attrval">ÃÍ</termref>¤ò¤â¤Ä¡£</p>
+
+<scrap lang='ebnf'><head>Í×ÁÇ</head>
+<prod id='NT-element'><lhs>element</lhs>
+<rhs><nt def='NT-EmptyElemTag'>EmptyElemTag</nt></rhs>
+<rhs>| <nt def='NT-STag'>STag</nt> <nt def='NT-content'>content</nt>
+<nt def='NT-ETag'>ETag</nt></rhs><wfc def='GIMatch'/></prod>
+</scrap>
+<p>¤³¤Î&TR-or-Rec;¤Ï¡¤Í×ÁÇ·¿µÚ¤Ó°À­¤Î°ÕÌ£¡¤»ÈÍÑÊýË¡¡¤Ëô¤Ï(¹½Ê¸¤Ë´Ø¤¹¤ë¤³¤È¤ò½ü¤­)̾Á°¤ËÀ©Ìó¤òÍ¿¤¨¤Ê¤¤¡£¤¿¤À¤·¡¤ÀèƬ¤¬<code>(('X'|'x')('M'|'m')('L'|'l'))</code>¤Ë&match;¤¹¤ë̾Á°¤Ï¡¤¤³¤ÎÈÇËô¤Ïº£¸å¤ÎÈǤΤ³¤Î&TR-or-Rec;¤Ç¤Îɸ½à²½¤Î¤¿¤á¤ËͽÌ󤹤롣</p>
+
+<wfcnote id='GIMatch'><head>Í×ÁÇ·¿¤Î&match;</head>
+<p>Í×ÁǤνªÎ»¥¿¥°¤Î<nt def='NT-Name'>̾Á°</nt>¤Ï¡¤¤½¤ÎÍ×ÁǤγ«»Ï¥¿¥°¤Ë¤ª¤±¤ë·¿¤È&match;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+</wfcnote>
+
+<div2 id='sec-starttags'>
+<head>³«»Ï¥¿¥°¡¤½ªÎ»¥¿¥°µÚ¤Ó¶õÍ×ÁÇ¥¿¥°</head>
+<p><termdef id="dt-stag" term="Start-Tag">¶õ¤Ç¤Ê¤¤Ç¤°Õ¤ÎXMLÍ×ÁǤλϤޤê¤Ï¡¤<term>³«»Ï¥¿¥°</term>¤Ë¤è¤Ã¤Æ&markup;¤¹¤ë¡£
+<scrap lang='ebnf'><head>³«»Ï¥¿¥°</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id='NT-STag'><lhs>STag</lhs><rhs>'&lt;' <nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt> <nt def='NT-Attribute'>Attribute</nt>)* <nt def='NT-S'>S</nt>? '>'</rhs><wfc def="uniqattspec"/></prod>
+<prod id='NT-Attribute'><lhs>Attribute</lhs><rhs><nt def='NT-Name'>Name</nt> <nt def='NT-Eq'>Eq</nt> <nt def='NT-AttValue'>AttValue</nt></rhs><vc def='ValueType'/><wfc def='NoExternalRefs'/><wfc def='CleanAttrVals'/></prod>
+</prodgroup>
+</scrap>
+³«»Ï¥¿¥°µÚ¤Ó½ªÎ»¥¿¥°Æâ¤Î<nt def='NT-Name'>Name</nt>¤Ï¡¤Í×ÁǤÎ<term>·¿</term>¤òɽ¤ï¤¹¡£</termdef><termdef id="dt-attr" term="Attribute"><nt def='NT-Name'>Name</nt>µÚ¤Ó<nt def='NT-AttValue'>AttValue</nt>¤ÎÂФòÍ×ÁǤÎ<term>°À­»ØÄê</term>¤È¤¤¤¤</termdef>¡¤<termdef id="dt-attrname" term="Attribute Name">¸Ä¡¹¤ÎÂФˤª¤±¤ë<nt def='NT-Name'>Name</nt>¤Ï¡¤<term>°À­Ì¾</term></termdef>µÚ¤Ó<termdef id="dt-attrval" term="Attribute Value"><nt def='NT-AttValue'>AttValue</nt>¤ÎÆâÍÆ(¶èÀÚ¤ê»Ò<code>'</code>Ëô¤Ï<code>"</code>¤Î´Ö¤Î&string;)¤ò<term>°À­ÃÍ</term>¤È¤¤¤¦¡£</termdef></p>
+
+<wfcnote id='uniqattspec'><head>°À­»ØÄê¤Î°ì°ÕÀ­</head>
+<p>³«»Ï¥¿¥°Ëô¤Ï¶õÍ×ÁÇ¥¿¥°¤Ç¤Ï¡¤Æ±°ì¤Î°À­Ì¾¤¬£²Åٰʾå½Ð¸½¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£</p></wfcnote>
+<vcnote id='ValueType'><head>°À­Ãͤη¿</head>
+<p>°À­¤ÏÀë¸À¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£Â°À­Ãͤη¿¤Ï¡¤¤½¤Î°À­¤ËÂФ·¤ÆÀë¸À¤·¤¿·¿¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤(°À­¤Î·¿¤Ë¤Ä¤¤¤Æ¤Ï¡¤<titleref href='AttDecls'>°À­¥ê¥¹¥ÈÀë¸À</titleref>¤Ë¤Ä¤¤¤Æ¤Îµ¬Äê¤ò»²¾È¡£)¡£</p></vcnote>
+<wfcnote id='NoExternalRefs'><head>³°Éô¼ÂÂΤؤλ²¾È¤¬¤Ê¤¤¤³¤È</head>
+<p>°À­Ãͤˤϡ¤³°Éô¼ÂÂΤؤÎľÀÜŪËô¤Ï´ÖÀÜŪ¤Ê»²¾È¤ò´Þ¤à¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£</p></wfcnote>
+<wfcnote id='CleanAttrVals'><head>°À­ÃͤË<code>&lt;</code>¤ò´Þ¤Þ¤Ê¤¤¤³¤È</head>
+<p>°À­ÃÍÆâ¤ÇľÀÜŪËô¤Ï´ÖÀÜŪ¤Ë»²¾È¤¹¤ë¼ÂÂÎ(<code>&amp;lt;</code>¤ò½ü¤¯¡£)¤Î<termref def='dt-repltext'>&replacement-text;</termref>¤Ë¤Ï¡¤<code>&lt;</code>¤ò´Þ¤ó¤Ç¤Ï¤Ê¤é¤Ê¤¤¡£</p></wfcnote>
+
+<p>³«»Ï¥¿¥°¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg>&lt;termdef id="dt-dog" term="dog"></eg></p>
+<p><termdef id="dt-etag" term="End Tag">³«»Ï¥¿¥°¤Ç»Ï¤Þ¤ëÍ×ÁǤνª¤ï¤ê¤Ï¡¤<term>½ªÎ»¥¿¥°</term>¤Ç&markup;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤Î½ªÎ»¥¿¥°¤Ï¡¤Âбþ¤¹¤ë³«»Ï¥¿¥°¤ÎÍ×ÁÇ·¿¤ÈƱ¤¸Ì¾Á°¤ò¤â¤Ä¡£
+<scrap lang='ebnf'><head>½ªÎ»¥¿¥°</head><prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-ETag'><lhs>ETag</lhs><rhs>'&lt;/' <nt def='NT-Name'>Name</nt> <nt def='NT-S'>S</nt>? '>'</rhs></prod></prodgroup></scrap></termdef></p>
+<p>½ªÎ»¥¿¥°¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg>&lt;/termdef></eg></p>
+
+<p><termdef id="dt-content" term="Content">Í×ÁǤγ«»Ï¥¿¥°¤È½ªÎ»¥¿¥°¤È¤Î´Ö¤Î<termref def='dt-text'>¥Æ¥­¥¹¥È</termref>¤ò¡¤¤½¤ÎÍ×ÁǤÎ<term>ÆâÍÆ</term>¤È¤¤¤¦¡£
+<scrap lang='ebnf'><head>Í×ÁǤÎÆâÍÆ</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-content'><lhs>content</lhs><rhs>(<nt def='NT-element'>element</nt> | <nt def='NT-CharData'>CharData</nt> | <nt def='NT-Reference'>Reference</nt> | <nt def='NT-CDSect'>CDSect</nt> | <nt def='NT-PI'>PI</nt> | <nt def='NT-Comment'>Comment</nt>)*</rhs></prod></prodgroup></scrap></termdef></p>
+
+<p><termdef id="dt-empty" term="Empty">Í×ÁǤ¬<term>¶õ</term>¤Î¤È¤­¡¤¤½¤ÎÍ×ÁǤϡ¤Ä¾¸å¤Ë½ªÎ»¥¿¥°¤ò¤â¤Ä³«»Ï¥¿¥°Ëô¤Ï¶õÍ×ÁÇ¥¿¥°¤Çɽ¸½¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</termdef><termdef id="dt-eetag" term="empty-element tag"><term>¶õÍ×ÁÇ¥¿¥°</term>¤Ï¡¤¼¡¤ÎÆÃÊ̤ʷÁ¼°¤ò¤È¤ë¡£
+<scrap lang='ebnf'><head>¶õÍ×ÁǤΤ¿¤á¤Î¥¿¥°</head><prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-EmptyElemTag'><lhs>EmptyElemTag</lhs><rhs>'&lt;' <nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt> <nt def='NT-Attribute'>Attribute</nt>)* <nt def='NT-S'>S</nt>? '/&gt;'</rhs><wfc def="uniqattspec"/></prod></prodgroup></scrap></termdef></p>
+
+<!-- ÌçÇÏ¡§¾å¤Î¡È¶õÍ×ÁǤΤ¿¤á¤Î¥¿¥°(tags for empty elements)¡É¤Ï¡È¶õÍ×ÁÇ¥¿¥°(empty-element tag)¡É¤È¤¹¤Ù¤­¤À¤È»×¤¤¤Þ¤¹¤¬¡¤¤¤¤«¤¬¤Ç¤·¤ç¤¦¤« -->
+
+<p>¶õÍ×ÁÇ¥¿¥°¤Ï¡¤ÆâÍƤò¤â¤¿¤Ê¤¤Ç¤°Õ¤ÎÍ×ÁǤÎɽ¸½¤ËÍøÍѤǤ­¤ë¡£¶õÍ×ÁÇ¥¿¥°¤Çɽ¸½¤¹¤ëÍ×ÁǤò¡¤¥­¡¼¥ï¡¼¥É<kw>EMPTY</kw>¤òÍѤ¤¤ÆÀë¸À¤·¤Ê¤¯¤È¤â¤è¤¤¡£</p>
+<p>¶õÍ×ÁǤÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg>&lt;IMG align="left" src="http://www.w3.org/Icons/WWW/w3c_home" />&lt;br>&lt;/br>&lt;br/></eg></p>
+</div2>
+
+<div2 id='elemdecls'><head>Í×ÁÇÀë¸À</head>
+<p><termref def="dt-valid">&validity;</termref>¤òÊݾڤ¹¤ë¤¿¤á¡¤Í×ÁÇÀë¸ÀµÚ¤Ó°À­¥ê¥¹¥ÈÀë¸À¤òÍѤ¤¤Æ<termref def="dt-xml-doc">XMLʸ½ñ</termref>¤Î<termref def="dt-element">Í×ÁÇ</termref>¤Î¹½Â¤¤Ë¡¤À©Ìó¤ò²Ã¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£</p>
+<p>Í×ÁÇÀë¸À¤Ï¡¤Í×ÁǤÎ<termref def="dt-content">ÆâÍÆ</termref>¤Ë¤Ä¤¤¤Æ¤ÎÀ©Ìó¤È¤¹¤ë¡£</p>
+<p>Í×ÁÇÀë¸À¤Ï¡¤Í×ÁǤÎ<termref def="dt-parentchild">»Ò</termref>¤È¤·¤Æ½Ð¸½²Äǽ¤ÊÍ×ÁÇ·¿¤Ë¤Ä¤¤¤Æ¡¤À©Ìó¤ò²Ã¤¨¤ë¤³¤È¤¬Â¿¤¤¡£&at-user-option;¡¤Í×ÁÇÀë¸À¤ò¤â¤¿¤Ê¤¤Í×ÁÇ·¿¤¬Â¾¤ÎÍ×ÁÇÀë¸À¤Ë¤è¤Ã¤Æ»²¾È¤µ¤ì¤ì¤Ð¡¤XML&processor;¤Ï¡¤·Ù¹ð¤ò½Ð¤·¤Æ¤â¤è¤¤¡£¤·¤«¤·¡¤¤³¤ì¤Ï&error;¤È¤Ï¤·¤Ê¤¤¡£</p>
+
+<p><termdef id="dt-eldecl" term="Element Type declaration"><term>Í×ÁÇ·¿Àë¸À</term>¤Ï¡¤¼¡¤Î·Á¼°¤ò¤È¤ë¡£
+<scrap lang='ebnf'><head>Í×ÁÇ·¿Àë¸À</head><prodgroup pcw2="5.5" pcw4="18" pcw5="9">
+<prod id='NT-elementdecl'><lhs>elementdecl</lhs>
+<rhs>'&lt;!ELEMENT' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>
+<nt def='NT-contentspec'>contentspec</nt>
+<nt def='NT-S'>S</nt>? '>'</rhs>
+<vc def='EDUnique'/></prod>
+<prod id='NT-contentspec'><lhs>contentspec</lhs>
+<rhs>'EMPTY'
+| 'ANY'
+| <nt def='NT-Mixed'>Mixed</nt>
+| <nt def='NT-children'>children</nt>
+</rhs>
+<vc def='elementvalid'/>
+</prod>
+</prodgroup>
+</scrap>
+¤³¤³¤Ç¡¤<nt def='NT-Name'>Name</nt>¤Ï¡¤Àë¸À¤µ¤ì¤Æ¤¤¤ëÍ×ÁǤη¿¤È¤¹¤ë¡£</termdef></p>
+
+<vcnote id='EDUnique'><head>Í×ÁÇÀë¸À¤Î°ì°ÕÀ­</head>
+<p>Í×ÁÇ·¿¤ò£²ÅٰʾåÀë¸À¤Ç¤­¤Ê¤¤¡£</p></vcnote>
+
+<vcnote id='elementvalid'><head>Í×ÁǤÎ&validity;</head>
+<p>Í×ÁǤ¬<!-- said to be -->&valid;¤È¤Ï¡¤<nt def='NT-elementdecl'>elementdecl</nt>¤Ë&match;¤¹¤ëÀë¸À¤Ç¤¢¤Ã¤Æ¡¤¤½¤Î<nt def='NT-Name'>Name</nt>¤¬¤½¤ÎÍ×ÁÇ·¿¤È&match;¤·¡¤¼¡¤Î¤¤¤º¤ì¤«¤Î¾ò·ï¤òËþ¤¿¤¹¾ì¹ç¤È¤¹¤ë¡£<ulist>
+<item><p>a) Àë¸À¤¬<kw>EMPTY</kw>¤Ë&match;¤·¡¤Í×ÁǤ¬<termref def='dt-content'>ÆâÍÆ</termref>¤ò¤â¤¿¤Ê¤¤¡£</p></item>
+<item><p>b) Àë¸À¤¬<nt def='NT-children'>children</nt>¤Ë&match;¤·¡¤Í×ÁǤÎ<termref def="dt-parentchild">»ÒÍ×ÁÇ</termref>¤ÎʤӤ¬¡¤ÆâÍÆ¥â¥Ç¥ë¤ÎÀµµ¬É½¸½¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤ë¸À¸ì¤Ë°¤¹¤ë¡£</p></item>
+<item><p>c) Àë¸À¤¬<nt def='NT-Mixed'>mixed</nt>¤Ë&match;¤·¡¤Í×ÁǤÎÆâÍƤ¬<termref def='dt-chardata'>ʸ»ú¥Ç¡¼¥¿</termref>µÚ¤Ó<termref def='dt-parentchild'>»ÒÍ×ÁÇ</termref>¤«¤é¤Ê¤ë¡£»ÒÍ×ÁǤÎÍ×ÁÇ·¿¤Ï¡¤Í×ÁǤÎÆâÍÆ¥â¥Ç¥ë¤Ë½Ð¸½¤¹¤ë̾Á°¤Ë&match;¤¹¤ë¡£</p></item>
+<item><p>d) Àë¸À¤¬<kw>ANY</kw>¤Ë&match;¤·¡¤¤É¤Î<termref def='dt-parentchild'>»ÒÍ×ÁÇ</termref>¤ÎÍ×ÁÇ·¿¤âÀë¸À¤µ¤ì¤Æ¤¤¤ë¡£</p></item></ulist>
+
+</p></vcnote>
+<!-- with the new VC, I don't think the next few paras add anything -TWB
+<p><termdef id="dt-model" term="content model">An element can declared using a <term>content model</term>, in which case its content can be categorized as <termref def="dt-elemcontent">element content</termref> or <termref def='dt-mixed'>mixed content</termref>, as explained below.</termdef></p>
+<p>An element whose type declared using the keyword <kw>EMPTY</kw> must be <termref def="dt-empty">empty</termref> and may be tagged using an <termref def="dt-eetag">empty-element tag</termref> when it appears in the document.</p>
+<p>If an element type is declared using the keyword <kw>ANY</kw>, then there are no validity constraints on its content: it may contain <termref def='dt-parentchild'>child elements</termref> of any type and number, interspersed with character data.</p> -->
+
+<p>Í×ÁÇÀë¸À¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg>
+&lt;!ELEMENT br EMPTY>
+&lt;!ELEMENT p (#PCDATA|emph)* >
+&lt;!ELEMENT %name.para; %content.para; >
+&lt;!ELEMENT container ANY>
+</eg></p>
+
+<div3 id='sec-element-content'><head>Í×ÁÇÆâÍÆ</head>
+
+<p><termdef id='dt-elemcontent' term='Element content'>¤¢¤ë·¿¤ÎÍ×ÁǤ¬<termref def='dt-parentchild'>»Ò</termref>Í×ÁǤÀ¤±¤ò´Þ¤à(ʸ»ú¥Ç¡¼¥¿¤ò´Þ¤Þ¤Ê¤¤¡£)¤È¤­¡¤¤½¤ÎÍ×ÁÇ<termref def="dt-stag">·¿</termref>¤Ï¡¤<term>Í×ÁÇÆâÍÆ</term>¤ò¤â¤Ä¡¤¤È¤¤¤¦¡£</termdef>¤³¤Î¾ì¹ç¡¤À©Ìó¤Ï¡¤ÆâÍÆ¥â¥Ç¥ë¤ò´Þ¤à¡£ÆâÍÆ¥â¥Ç¥ë¤Ï¡¤»ÒÍ×ÁǤη¿µÚ¤Ó»ÒÍ×ÁǤνи½½ç½ø¤òÀ©¸æ¤¹¤ë´Êñ¤Êʸˡ¤È¤¹¤ë¡£¤³¤Îʸˡ¤Ï¡¤&content-particle;(<nt def='NT-cp'>cp</nt>s)¤«¤é¤Ê¤ë¡£&content-particle;¤Ï¡¤Ì¾Á°¡¤&content-particle;¤ÎÁªÂò¥ê¥¹¥ÈËô¤Ï&content-particle;¤ÎÎó¥ê¥¹¥È¤«¤é¹½À®¤µ¤ì¤ë¡£
+<scrap lang='ebnf'><head>Í×ÁÇÆâÍÆ¥â¥Ç¥ë</head><prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id='NT-children'><lhs>children</lhs><rhs>(<nt def='NT-choice'>choice</nt> | <nt def='NT-seq'>seq</nt>) ('?' | '*' | '+')?</rhs></prod><prod id='NT-cp'><lhs>cp</lhs><rhs>(<nt def='NT-Name'>Name</nt> | <nt def='NT-choice'>choice</nt> | <nt def='NT-seq'>seq</nt>) ('?' | '*' | '+')?</rhs></prod>
+<prod id='NT-choice'><lhs>choice</lhs><rhs>'(' <nt def='NT-S'>S</nt>? cp ( <nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*<nt def='NT-S'>S</nt>? ')'</rhs><vc def='vc-PEinGroup'/></prod>
+<prod id='NT-seq'><lhs>seq</lhs><rhs>'(' <nt def='NT-S'>S</nt>? cp ( <nt def='NT-S'>S</nt>? ',' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*<nt def='NT-S'>S</nt>? ')'</rhs><vc def='vc-PEinGroup'/></prod>
+<!-- <prod id='NT-cps'><lhs>cps</lhs><rhs><nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> <nt def='NT-S'>S</nt>?</rhs></prod>
+<prod id='NT-choice'><lhs>choice</lhs><rhs>'(' <nt def='NT-S'>S</nt>? <nt def='NT-ctokplus'>ctokplus</nt> (<nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>? <nt def='NT-ctoks'>ctoks</nt>)* <nt def='NT-S'>S</nt>? ')'</rhs></prod>
+<prod id="NT-ctokplus"><lhs>ctokplus</lhs><rhs><nt def="NT-cps">cps</nt>('|' <nt def="NT-cps">cps</nt>)+</rhs></prod>
+<prod id="NT-ctoks"><lhs>ctoks</lhs><rhs><nt def="NT-cps">cps</nt>('|' <nt def="NT-cps">cps</nt>)*</rhs></prod>
+<prod id='NT-seq'><lhs>seq</lhs><rhs>'(' <nt def='NT-S'>S</nt>?<nt def='NT-stoks'>stoks</nt> (<nt def='NT-S'>S</nt>? ',' <nt def='NT-S'>S</nt>? <nt def='NT-stoks'>stoks</nt>)*<nt def='NT-S'>S</nt>? ')'</rhs></prod>
+<prod id="NT-stoks"><lhs>stoks</lhs><rhs><nt def="NT-cps">cps</nt>(',' <nt def="NT-cps">cps</nt>)*</rhs></prod>
+-->
+</prodgroup></scrap>
+¤³¤³¤Ç¡¤<nt def='NT-Name'>Name</nt>¤Ï¡¤<termref def="dt-parentchild">»Ò</termref>¤È¤·¤Æ½Ð¸½¤·¤Æ¤è¤¤Í×ÁǤη¿¤ò¼¨¤¹¡£¤³¤Îʸˡ¤ÇÁªÂò¥ê¥¹¥È¤¬¸½¤ì¤ë°ÌÃ֤Ǥϡ¤ÁªÂò¥ê¥¹¥ÈÆâ¤Î¤¤¤º¤ì¤Î&content-particle;¤â<termref def="dt-elemcontent">Í×ÁÇÆâÍÆ</termref>¤ÎÃæ¤Ë¸½¤ì¤Æ¤è¤¤¡£Îó¥ê¥¹¥È¤Ë¸½¤ì¤ë&content-particle;¤Ï¡¤¥ê¥¹¥È¤Ç»ØÄꤹ¤ë½çÈ֤ΤȤª¤ê¤Ë¡¤<termref def="dt-elemcontent">Í×ÁÇÆâÍÆ</termref>¤Ë¸½¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£Ì¾Á°Ëô¤Ï¥ê¥¹¥È¤Î¸å¤Ë½Ð¸½¤¹¤ë¥ª¥×¥·¥ç¥ó¤Îʸ»ú<!-- ÌçÇÏ¡§character¤òʸ»ú¤ÈÌõ¤·¤Þ¤·¤¿ -->¤Ï¡¤¥ê¥¹¥ÈÆâ¤ÎÍ×ÁÇËô¤Ï&content-particle;¤¬¡¤1²ó°Ê¾åǤ°Õ¤Î²ó¿ô(<code>+</code>)¡¤0²ó°Ê¾åǤ°Õ¤Î²ó¿ô(<code>*</code>)Ëô¤Ï0²ó¼ã¤·¤¯¤Ï1²ó(<code>?</code>)½Ð¸½²Äǽ¤Ê¤³¤È¤òµ¬Äꤹ¤ë¡£¤³¤³¤Ç¼¨¤¹¹½Ê¸µÚ¤Ó°ÕÌ£¤Ï¡¤¤³¤Î&TR-or-Rec;¤Ë¤ª¤±¤ëÀ¸À®µ¬Â§¤ÇÍѤ¤¤ë¤â¤Î¤ÈƱ°ì¤È¤¹¤ë¡£</p>
+
+<!-- ÌçÇÏ¡§¾å¤Îʸ¤Ç¤Ï¡¤¡ÈnameËô¤Ïlist¤Î¸å¤Ë³¤¯Ê¸»ú¡É¤¬¡Èlist¤Î½Ð¸½¤òµ¬Äꤹ¤ë¡É¤È¤¢¤Ã¤Æ¡¤name¤Î½Ð¸½¤òµ¬Äꤹ¤ë¤È¤Ï½ñ¤¤¤Æ¤¢¤ê¤Þ¤»¤ó¡£½¤Àµ¤¬É¬Íפȹͤ¨¤Þ¤¹¡£ -->
+
+<p>Í×ÁǤÎÆâÍƤ¬ÆâÍÆ¥â¥Ç¥ë¤Ë&match;¤¹¤ë¤Î¤Ï¡¤Îó¡¤ÁªÂòµÚ¤Ó·«ÊÖ¤·±é»»»Ò¤Ë¤·¤¿¤¬¤Ã¤Æ¡¤ÆâÍƤÎÃæ¤ÎÍ×ÁǤÈÆâÍÆ¥â¥Ç¥ëÆâ¤ÎÍ×ÁÇ·¿¤È¤ò&match;¤µ¤»¤Ê¤¬¤é¡¤ÆâÍÆ¥â¥Ç¥ëÆâ¤Î°ì¤Ä¤Î¥Ñ¥¹¤ò¤¿¤É¤ì¤ë¤È¤­¤Ë¸Â¤ë¡£<termref def='dt-compat'>¸ß´¹À­¤Î¤¿¤á</termref>¡¤Ê¸½ñÆâ¤ÎÍ×ÁǤ¬¡¤ÆâÍÆ¥â¥Ç¥ë¤Ë¤ª¤±¤ëÍ×ÁÇ·¿¤ÎÊ£¿ô¤Î½Ð¸½°ÌÃÖ¤È&match;¤¹¤ë¤³¤È¤Ï¡¤&error;¤È¤¹¤ë¡£¾ÜºÙ¤Êµ¬Äê¤Ë¤Ä¤¤¤Æ¤Ï¡¤Éí°½ñ¤Î<titleref xml-link="simple" href="determinism">·èÄêŪÆâÍÆ¥â¥Ç¥ë</titleref>¤Î¹à¤ò»²¾È¡£
+<!-- appendix <specref ref="determinism"/>. -->
+<!-- appendix on deterministic content models. -->
+</p>
+
+<vcnote id='vc-PEinGroup'>
+<head>¥°¥ë¡¼¥×µÚ¤Ó¥Ñ¥é¥á¥¿¼ÂÂΤ¬¸·Ì©¤ÊÆþ¤ì»Ò¤ò¤Ê¤·¤Æ¤¤¤ë¤³¤È</head>
+<p>¥Ñ¥é¥á¥¿¼ÂÂΤÎ<termref def='dt-repltext'>&replacement-text;</termref>¤Ï¡¤&parenthesis;¤Ç°Ï¤Þ¤ì¤¿¥°¥ë¡¼¥×¤Ë¤è¤Ã¤Æ¡¤¸·Ì©¤ÊÆþ¤ì»Ò¤ò¹½À®¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤Ä¤Þ¤ê¡¤<nt def='NT-choice'>ÁªÂò</nt>¡¤<nt def='NT-seq'>Îó</nt>Ëô¤Ï<nt def='NT-Mixed'>º®ºß</nt>ÉôÉʤˡ¤&left-parenthesis;Ëô¤Ï&right-parenthesis;¤Î¤¤¤º¤ì¤«°ìÊý¤¬<termref def='dt-PERef'>¥Ñ¥é¥á¥¿¼ÂÂÎ</termref>¤Î&replacement-text;¤Ë´Þ¤ì¤ì¤Ð¡¤Â¾Êý¤âƱ¤¸&replacement-text;¤Ë´Þ¤Þ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+<p><termref def='dt-interop'>Áê¸ß±¿ÍÑÀ­¤Î¤¿¤á</termref>¡¤¥Ñ¥é¥á¥¿¼ÂÂλ²¾È¤¬<nt def='NT-choice'>ÁªÂò</nt>¡¤<nt def='NT-seq'>Îó</nt>Ëô¤Ï<nt def='NT-Mixed'>º®ºß</nt>ÆâÍƤ˴ޤޤì¤ì¤Ð¡¤¤½¤Î&replacement-text;¤Ï¶õ¤Ç¤Ê¤¤¤³¤È¤¬Ë¾¤Þ¤·¤¯¡¤&replacement-text;¤ÎÀèƬµÚ¤ÓËöÈø¤Î¶õÇò¤Ç¤Ê¤¤Ê¸»ú¤Ï¡¤¥³¥Í¥¯¥¿(<code>|</code>Ëô¤Ï<code>,</code>)¤Ç¤Ê¤¤Êý¤¬¤è¤¤¡£
+</p>
+</vcnote>
+<p>Í×ÁÇÆâÍÆ¥â¥Ç¥ë¤Î¤¤¤¯¤Ä¤«¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg>&lt;!ELEMENT spec (front, body, back?)>
+&lt;!ELEMENT div1 (head, (p | list | note)*, div2*)>
+&lt;!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*></eg></p>
+</div3>
+
+<div3 id='sec-mixed-content'>
+<head>&mixed-content;</head>
+
+<p><termdef id='dt-mixed' term='Mixed Content'>¤¢¤ëÍ×ÁÇ·¿¤ÎÍ×ÁÇÆâ¤Ë¡¤<termref def="dt-parentchild">»Ò</termref>Í×ÁǤ˺®ºß¤·¤Æʸ»ú¥Ç¡¼¥¿¤¬´Þ¤Þ¤ì¤ë²ÄǽÀ­¤¬¤¢¤ë¤È¤­¡¤¤½¤ÎÍ×ÁÇ<termref def='dt-stag'>·¿</termref>¤Ï¡¤<term>&mixed-content;</term>¤ò¤â¤Ä¤È¤¤¤¦¡£</termdef>¤³¤Î¾ì¹ç¡¤»ÒÍ×ÁǤη¿¤Ë¤Ä¤¤¤Æ¤ÎÀ©Ìó¤¬Â¸ºß¤·¤Æ¤â¤è¤¤<!-- ÌçÇÏ¡§¡Èmay be constrained¡É¤òñ¤Ë¡ÖÀ©Ì󤵤ì¤ë¡×¤ÈÌõ¤·¤Þ¤·¤¿¡£ -->¤¬¡¤»ÒÍ×ÁǤνç½øËô¤Ï½Ð¸½²ó¿ô¤Ë¤Ä¤¤¤Æ¤ÎÀ©Ìó¤Ï¤Ê¤¤¤È¤¹¤ë¡£
+<scrap lang='ebnf'>
+<head>&mixed-content;Àë¸À</head>
+<prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id='NT-Mixed'><lhs>Mixed</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>?
+'#PCDATA'
+(<nt def='NT-S'>S</nt>?
+'|'
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>)*
+<nt def='NT-S'>S</nt>?
+')*' </rhs>
+<rhs>| '(' <nt def='NT-S'>S</nt>? '#PCDATA' <nt def='NT-S'>S</nt>? ')'
+</rhs><vc def='vc-PEinGroup'/>
+<vc def='vc-MixedChildrenUnique'/>
+</prod>
+<!--
+<prod id="NT-Mtoks"><lhs>Mtoks</lhs>
+<rhs><nt def="NT-Name">Name</nt>
+(<nt def='NT-S'>S</nt>?
+'|'
+<nt def='NT-S'>S</nt>?
+<nt def="NT-Name">Name</nt>)*
+</rhs>
+</prod>
+-->
+</prodgroup>
+</scrap>
+¤³¤³¤Ç¡¤<nt def='NT-Name'>Name</nt>¤Ï¡¤»Ò¤È¤·¤Æ½Ð¸½¤·¤Æ¤â¤è¤¤Í×ÁǤη¿¤ò¼¨¤¹¡£
+</p>
+
+<vcnote id='vc-MixedChildrenUnique'>
+<head>Í×ÁÇ·¿¤Î½ÅÊ£¤Î¶Ø»ß</head>
+<p>°ì¤Ä¤Î&mixed-content;Àë¸ÀÆâ¤Ë¡¤Æ±¤¸Ì¾Á°¤¬Ê£¿ô²ó½Ð¸½¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
+</p></vcnote>
+<p>&mixed-content;Àë¸À¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg>&lt;!ELEMENT p (#PCDATA|a|ul|b|i|em)*>
+&lt;!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >
+&lt;!ELEMENT b (#PCDATA)></eg></p>
+</div3>
+</div2>
+
+
+<div2 id='attdecls'>
+<head>°À­¥ê¥¹¥ÈÀë¸À</head>
+<p>
+<termref def="dt-attr">°À­</termref>¤Ï¡¤Ì¾Á°µÚ¤ÓÃͤÎÂФò<termref def="dt-element">Í×ÁÇ</termref>¤Ë´ØÏ¢ÉÕ¤±¤ë¤¿¤á¤ËÍѤ¤¤ë¡£Â°À­»ØÄê¤Ï¡¤<termref def="dt-stag">³«»Ï¥¿¥°</termref>Ëô¤Ï<termref def="dt-eetag">¶õÍ×ÁÇ</termref>¥¿¥°Æâ¤Ç¤À¤±²Äǽ¤È¤¹¤ë¡£¤·¤¿¤¬¤Ã¤Æ¡¤Â°À­¤òǧ¼±¤¹¤ë¤¿¤á¤ÎÀ¸À®µ¬Â§¤Ï¡¤<titleref href='sec-starttags'>³«»Ï¥¿¥°</titleref>¤Ë¤Ä¤¤¤Æ¤Îµ¬Äê¤Ç¼¨¤¹¡£Â°À­¥ê¥¹¥ÈÀë¸À¤Ï¡¤¼¡¤ÎÌÜŪ¤ÇÍѤ¤¤ë¡£
+<ulist>
+<item><p>a) ¤¢¤ëÍ×ÁÇ·¿¤ËŬÍѤ¹¤ë°À­¤Î½¸¹ç¤òµ¬Äꤹ¤ë¡£</p></item>
+<item><p>b) °À­¤Ø¤Î·¿À©Ìó¤òÀßÄꤹ¤ë¡£</p></item>
+<item><p>c) °À­¤Î<termref def="dt-default">&default-value;</termref>¤òµ¬Äꤹ¤ë¡£</p></item>
+</ulist>
+</p>
+<p>
+<termdef id="dt-attdecl" term="Attribute-List Declaration">
+<term>°À­¥ê¥¹¥ÈÀë¸À</term>¤Ï¡¤¤¢¤ëÍ×ÁÇ·¿¤È´ØÏ¢ÉÕ¤±¤é¤ì¤¿³Æ°À­¤ËÂФ·¡¤Ì¾Á°¡¤¥Ç¡¼¥¿·¿µÚ¤Ó(¸ºß¤¹¤ì¤Ð)&default-value;¤òµ¬Äꤹ¤ë¡£
+<scrap lang='ebnf'>
+<head>°À­¥ê¥¹¥ÈÀë¸À</head>
+<prod id='NT-AttlistDecl'><lhs>AttlistDecl</lhs>
+<rhs>'&lt;!ATTLIST' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-AttDef'>AttDef</nt>*
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+</prod>
+<prod id='NT-AttDef'><lhs>AttDef</lhs>
+<rhs><nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-AttType'>AttType</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-Default'>Default</nt></rhs>
+</prod>
+</scrap>
+
+<nt def='NT-AttlistDecl'>AttlistDecl</nt>µ¬Â§¤Ë¸ºß¤¹¤ë<nt def="NT-Name">Name</nt>¤Ï¡¤Í×ÁÇ·¿¤Î̾Á°¤È¤¹¤ë¡£&at-user-option;¡¤Àë¸À¤·¤Æ¤¤¤Ê¤¤Í×ÁÇ·¿¤ËÂФ·Â°À­¤òÀë¸À¤·¤¿¤Ê¤é¤Ð¡¤XML&processor;¤Ï¡¤·Ù¹ð¤ò½Ð¤·¤Æ¤â¤è¤¤¡£¤·¤«¤·¡¤¤³¤ì¤Ï&error;¤È¤Ï¤·¤Ê¤¤¡£
+<nt def='NT-AttDef'>AttDef</nt>µ¬Â§¤Ë¤ª¤±¤ë<nt def='NT-Name'>Name</nt>¤Ï¡¤Â°À­¤Î̾Á°¤È¤¹¤ë¡£
+</termdef>
+</p>
+<p>
+¤¢¤ëÍ×ÁǤËÂФ·¤Æ¡¤Ê£¿ô¤Î<nt def='NT-AttlistDecl'>AttlistDecl</nt>¤òÍ¿¤¨¤ë¾ì¹ç¡¤¤³¤ì¤é¤¹¤Ù¤Æ¤ÎÆâÍƤϥޡ¼¥¸¤¹¤ë¡£¤¢¤ëÍ×ÁÇ·¿¤ÎƱ¤¸Â°À­¤Ë¡¤Ê£¿ô¤ÎÄêµÁ¤òÍ¿¤¨¤ë¾ì¹ç¤Ë¤Ï¡¤ºÇ½é¤ÎÀë¸À¤òÍ­¸ú¤È¤·¡¤Â¾¤ÎÀë¸À¤Ï̵»ë¤¹¤ë¡£<termref def='dt-interop'>Áê¸ß±¿ÍÑÀ­¤Î¤¿¤á¤Ë</termref>¡¤DTD¤ÎºîÀ®¼Ô¤Ï¡¤¤¢¤ëÍ×ÁÇ·¿¤Ë¤Ï¹â¡¹°ì¤Ä¤Î°À­¥ê¥¹¥ÈÀë¸À¤·¤«Í¿¤¨¤Ê¤¤¡¤¤¢¤ë°À­Ì¾¤Ë¤Ï¹â¡¹°ì¤Ä¤Î°À­ÄêµÁ¤·¤«Í¿¤¨¤Ê¤¤¡¤µÚ¤Ó¤¹¤Ù¤Æ¤Î°À­¥ê¥¹¥ÈÀë¸À¤Ë¤Ï¾¯¤Ê¤¯¤È¤â°ì¤Ä¤Î°À­ÄêµÁ¤òÍ¿¤¨¤ë¡¤¤È¤¤¤¦ÁªÂò¤ò¤·¤Æ¤â¤è¤¤¡£Áê¸ß±¿ÍÑÀ­¤Î¤¿¤á¤Ë¡¤XML&processor;¤Ï¡¤&at-user-option;¡¤¤¢¤ëÍ×ÁÇ·¿¤ËÊ£¿ô¤Î°À­¥ê¥¹¥ÈÀë¸À¤òÍ¿¤¨¤¿¤ê¡¤¤¢¤ë°À­¤ËÊ£¿ô¤Î°À­ÄêµÁ¤òÍ¿¤¨¤¿¤ê¤·¤¿¤È¤­¤Ë¡¤·Ù¹ð¤ò½Ð¤·¤Æ¤â¤è¤¤¡£¤·¤«¤·¡¤¤³¤ì¤Ï¡¤&error;¤È¤Ï¤·¤Ê¤¤¡£
+</p>
+
+<div3 id='sec-attribute-types'>
+<head>°À­¤Î·¿</head>
+<p>
+XML¤Î°À­¤Î·¿¤Ï¡¤£³¼ïÎà¤È¤¹¤ë¡£¤³¤ì¤é¤Ï¡¤&string;·¿¡¤&token;²½·¿µÚ¤ÓÎóµó·¿¤È¤¹¤ë¡£&string;·¿¤Ï¡¤ÃͤȤ·¤ÆǤ°Õ¤Î&string;¤ò¤È¤ë¡£&token;²½·¿¤Ï¡¤¼¡¤Ë¼¨¤¹»ú¶çµÚ¤Ó°ÕÌ£¤Ë´Ø¤¹¤ëÍÍ¡¹¤ÊÀ©Ìó¤ò¤â¤Ä¡£
+
+<scrap lang='ebnf'>
+<head>Attribute Types</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id='NT-AttType'><lhs>AttType</lhs>
+<rhs><nt def='NT-StringType'>StringType</nt>
+| <nt def='NT-TokenizedType'>TokenizedType</nt>
+| <nt def='NT-EnumeratedType'>EnumeratedType</nt>
+</rhs>
+</prod>
+<prod id='NT-StringType'><lhs>StringType</lhs>
+<rhs>'CDATA'</rhs>
+</prod>
+<prod id='NT-TokenizedType'><lhs>TokenizedType</lhs>
+<rhs>'ID'</rhs>
+<vc def='id'/>
+<vc def='one-id-per-el'/>
+<vc def='id-default'/>
+<rhs>| 'IDREF'</rhs>
+<vc def='idref'/>
+<rhs>| 'IDREFS'</rhs>
+<vc def='idref'/>
+<rhs>| 'ENTITY'</rhs>
+<vc def='entname'/>
+<rhs>| 'ENTITIES'</rhs>
+<vc def='entname'/>
+<rhs>| 'NMTOKEN'</rhs>
+<vc def='nmtok'/>
+<rhs>| 'NMTOKENS'</rhs>
+<vc def='nmtok'/></prod>
+</prodgroup>
+</scrap>
+</p>
+
+<vcnote id='id' >
+<head>ID</head>
+<p>
+¤³¤Î·¿¤ÎÃͤϡ¤À¸À®µ¬Â§<code>Name</code>¤Ë&match;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£°ì¤Ä¤ÎXMLʸ½ñÆâ¤Ç¤Ï¡¤°ì¤Ä¤Î̾Á°¤¬¡¤¤³¤Î·¿¤ÎÃͤȤ·¤ÆÊ£¿ô²ó¸½¤ì¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤Ä¤Þ¤ê¡¤ID¤ÎÃͤϡ¤Í×ÁǤò°ì°Õ¤Ë&identify;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+</vcnote>
+<vcnote id='one-id-per-el'>
+<head>1Í×ÁǤ´¤È¤Ë1ID</head>
+<p>
+Í×ÁÇ·¿¤Ï¡¤Ê£¿ô¤ÎID°À­Ãͤò¤â¤Ã¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
+</p>
+</vcnote>
+<vcnote id='id-default'>
+<head>ID°À­¤Î&default;</head>
+<p>
+ID°À­¤Ï¡¤&default;¤È¤·¤Æ¡¤<code>#IMPLIED</code>Ëô¤Ï<code>#REQUIRED</code>¤òÀë¸À¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+</vcnote>
+<vcnote id='idref'>
+<head>IDREF</head>
+<p>
+<kw>IDREF</kw>·¿¤ÎÃͤϡ¤À¸À®µ¬Â§<nt def="NT-Name">Name</nt>¤Ë&match;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£<kw>IDREFS</kw>·¿¤ÎÃͤϡ¤À¸À®µ¬Â§<nt def="NT-Names">Names</nt>¤Ë&match;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£³Æ¡¹¤Î<nt def='NT-Name'>Name</nt>¤Ï¡¤XMLʸ½ñÆâ¤Ë¸ºß¤¹¤ëÍ×ÁǤÎID°À­¤ÎÃͤÈ&match;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤Ä¤Þ¤ê¡¤<kw>IDREF</kw>¤ÎÃͤϡ¤¤¢¤ëID°À­¤ÎÃͤÈ&match;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+</vcnote>
+<vcnote id='entname'>
+<head>¼ÂÂÎ̾</head>
+<p>
+<kw>ENTITY</kw>·¿¤ÎÃͤϡ¤À¸À®µ¬Â§<nt def="NT-Name">Name</nt>¤Ë&match;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£<kw>ENTITIES</kw>·¿¤ÎÃͤϡ¤À¸À®µ¬Â§<nt def="NT-Names">Names</nt>¤Ë&match;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£³Æ¡¹¤Î<nt def="NT-Name">Name</nt>¤Ï¡¤<termref def="dt-doctype">DTD</termref>¤ÇÀë¸À¤¹¤ë<termref def="dt-unparsed">&unparsed-entity;</termref>¤È&match;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+</vcnote>
+<vcnote id='nmtok'>
+<head>̾Á°&token;</head>
+<p>
+<kw>NMTOKEN</kw>·¿¤ÎÃͤϡ¤Èó½ªÃ¼µ­¹æ<termref def="NT-Nmtoken">Nmtoken</termref>¤È&match;¤¹¤ë&string;¤«¤é¹½À®¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£<kw>NMTOKENS</kw>·¿¤ÎÃͤϡ¤Èó½ªÃ¼µ­¹æ<termref def="NT-Nmtokens">Nmtokens</termref>¤È&match;¤¹¤ë&string;¤«¤é¹½À®¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+</vcnote>
+<p>
+XML&processor;¤Ï¡¤&application;¤Ë°À­ÃͤòÅϤ¹Á°¤Ë¡¤<titleref href="AVNormalize">°À­ÃͤÎÀµµ¬²½</titleref>¤Çµ¬Äꤹ¤ë¤È¤ª¤ê¤Ë¡¤Â°À­ÃͤòÀµµ¬²½¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+<p>
+<termdef id='dt-enumerated' term='Enumerated Attribute Values'><term>Îóµó·¿¤Î°À­</term>¤Ï¡¤Àë¸À¤·¤¿Ãͤΰì¤Ä¤ò¼è¤ë¤³¤È¤¬¤Ç¤­¤ë¡£</termdef>Îóµó·¿¤Ë¤Ï¡¤2¼ïÎढ¤ë¡£
+
+<scrap lang='ebnf'>
+<head>Îóµó°À­¤Î·¿</head>
+<prod id='NT-EnumeratedType'><lhs>EnumeratedType</lhs>
+<rhs><nt def='NT-NotationType'>NotationType</nt>
+| <nt def='NT-Enumeration'>Enumeration</nt>
+</rhs></prod>
+<prod id='NT-NotationType'><lhs>NotationType</lhs>
+<rhs>'NOTATION'
+<nt def='NT-S'>S</nt>
+'('
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>? '|' <nt def='NT-Name'>Name</nt>)*
+<nt def='NT-S'>S</nt>? ')'
+</rhs>
+<vc def='notatn' /></prod>
+<prod id='NT-Enumeration'><lhs>Enumeration</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>?
+<nt def='NT-Nmtoken'>Nmtoken</nt>
+(<nt def='NT-S'>S</nt>? '|'
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Nmtoken'>Nmtoken</nt>)*
+<nt def='NT-S'>S</nt>?
+')'</rhs>
+<vc def='enum'/></prod>
+</scrap>
+</p>
+
+<vcnote id='notatn'>
+<head>µ­Ë¡Â°À­</head>
+<p>¤³¤Î·¿¤ÎÃͤϡ¤Àë¸À¤·¤Æ¤¤¤ë<titleref href='Notations'>µ­Ë¡</titleref>¤Î̾Á°¤Î°ì¤Ä¤È&match;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤Ä¤Þ¤ê¡¤Àë¸À¤Ë¸ºß¤¹¤ëµ­Ë¡Ì¾¤Ï¡¤¤¹¤Ù¤ÆÀë¸À¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+</vcnote>
+<vcnote id='enum'>
+<head>Îóµó</head>
+<p>
+¤³¤Î·¿¤ÎÃͤϡ¤Àë¸À¤Ë¸ºß¤¹¤ë<nt def='NT-Nmtoken'>Nmtoken</nt>&token;¤Î°ì¤Ä¤È&match;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+</vcnote>
+<p>
+<termref def='dt-interop'>Áê¸ß±¿ÍÑÀ­¤Î¤¿¤á</termref>¡¤Æ±¤¸<nt def='NT-Nmtoken'>Nmtoken</nt>¤Ï¡¤Ã±°ìÍ×ÁÇ·¿¤ÎÎóµó·¿¤Î°À­¤È¤·¤Æ¡¤Ê£¿ô²ó¸½¤ì¤Ê¤¤Êý¤¬¤è¤¤¡£
+</p>
+</div3>
+
+<div3 id='sec-attr-defaults'>
+<head>°À­¤Î&default;</head>
+
+<p>
+<termref def="dt-attdecl">°À­Àë¸À</termref>¤Ï¡¤Â°À­¤Î»ØÄ꤬ɬ¿Ü¤«¤É¤¦¤«¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òÍ¿¤¨¤ë¡£É¬¿Ü¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¤Ê¸½ñÆâ¤Ç°À­¤ò»ØÄꤷ¤Ê¤¤¤È¤­¡¤XML&processor;¤Î½èÍýÊýË¡¤Î¾ðÊó¤âÍ¿¤¨¤ë¡£
+
+<scrap lang='ebnf'>
+<head>°À­¤Î&default;</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id='NT-Default'><lhs>Default</lhs>
+<rhs>'#REQUIRED'
+|&nbsp;'#IMPLIED' </rhs>
+<rhs>| (('#FIXED' S)? <nt def='NT-AttValue'>AttValue</nt>)</rhs>
+<vc def='defattrvalid'/>
+<wfc def="CleanAttrVals"/>
+</prod>
+</prodgroup>
+</scrap>
+<!-- improved by bosak
+<scrap lang='ebnf'>
+<head>Attribute Defaults</head>
+<prod id='NT-Default'><lhs>Default</lhs>
+<rhs>'#REQUIRED'
+|&nbsp;'#IMPLIED' </rhs>
+<vc def='defattrvalid'/>
+<wfc def="CleanAttrVals"/>
+<rhs>| (('#FIXED' S)? <nt def='NT-AttValue'>AttValue</nt>)</rhs>
+</prod>
+</scrap>-->
+</p>
+
+<vcnote id='defattrvalid'>
+<head>°À­&default;¤ÎÀµ¤·¤µ</head>
+<p>
+Àë¸À¤·¤¿&default-value;¤Ï¡¤Àë¸À¤·¤¿Â°À­·¿¤Î»ú¶çÀ©Ìó¤òËþ¤¿¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+</vcnote>
+<p>
+<kw>#REQUIRED</kw>¤ò»ØÄꤷ¤¿¤È¤­¡¤¤³¤ÎÍ×ÁÇ·¿¤Î<termref def="dt-stag">³«»Ï¥¿¥°</termref>¤Ç¤¢¤Ã¤Æ¡¤¤³¤Î°À­¤ËÃͤòÍ¿¤¨¤Ê¤¤¤â¤Î¤òXML&processor;¤¬¸«¤Ä¤±¤¿¤Ê¤é¤Ð¡¤¤½¤Îʸ½ñ¤Ï<termref def="dt-valid">&valid;</termref>¤È¤Ï¤·¤Ê¤¤¡£<kw>#IMPLIED</kw>¤ò»ØÄꤷ¤¿¤È¤­¡¤¤³¤Î°À­¤ò¾Êά¤·¤¿¤é¡¤XML&processor;¤Ï¡¤Â°À­Ãͤò»ØÄꤷ¤Ê¤¤¤³¤È¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËÅÁ¤¨¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤Î¤È¤­¡¤&application;¤Î¿¶Éñ¤¤¤Ë¤Ä¤¤¤Æ¤ÎÀ©Ìó¤Ï¤Ê¤¤¡£
+</p>
+<p>
+<termdef id="dt-default" term="Attribute Default">
+°À­¤¬<kw>#REQUIRED</kw>¤Ç¤â<kw>#IMPLIED</kw>¤Ç¤â¤Ê¤¤¤È¤­¤Ë¤Ï¡¤<nt def='NT-AttValue'>AttValue</nt>¤ÎÃͤ¬¡¤<term>&default-value;</term>¤È¤Ê¤ë¡£<kw>#FIXED</kw>¤Î¾ì¹ç¡¤&default-value;¤È°Û¤Ê¤ëÃͤ¬»ØÄꤵ¤ì¤ì¤Ð¡¤¤½¤Îʸ½ñ¤Ï¡¤<termref def="dt-valid">&valid;</termref>¤È¤·¤Ê¤¤¡£&default-value;¤òÀë¸À¤·¤Æ¤¤¤ë¾ì¹ç¡¤¤³¤Î°À­¤Î¾Êά¤ò¸«¤Ä¤±¤¿¤é¡¤Àë¸À¤·¤¿&default-value;¤ò°À­Ãͤ˻ØÄꤷ¤Æ¤¤¤ë¤È¤·¤Æ¡¤XML&processor;¤Ï¿¶¤ëÉñ¤¦¤³¤È¤¬Ë¾¤Þ¤·¤¤¡£
+</termdef></p>
+
+<p>°À­¥ê¥¹¥ÈÀë¸À¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+
+<eg>&lt;!ATTLIST termdef
+ id ID #REQUIRED
+ name CDATA #IMPLIED>
+&lt;!ATTLIST list
+ type (bullets|ordered|glossary) "ordered">
+&lt;!ATTLIST form
+ method CDATA #FIXED "POST"></eg></p>
+</div3>
+
+<div3 id='AVNormalize'>
+<head>°À­ÃͤÎÀµµ¬²½</head>
+<p>
+XML&processor;¤Ï¡¤Â°À­Ãͤò&application;¤ËÅϤ¹Á°¤Ë¡¤¼¡¤Î¤È¤ª¤ê¤ËÀµµ¬²½¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+
+<ulist>
+<item>
+<p>a) ¤Þ¤º¡¤Â°À­Ã͵ڤӤ½¤ÎÃæ¤Î¼ÂÂÎÆâ¤Ç¡¤¹ÔËöËô¤Ï¹Ô¶­³¦(Ëô¤Ï¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ¤Ï¥ì¥³¡¼¥É¶­³¦)¤È¤·¤Æ»È¤ï¤ì¤ë&string;¤ò¡¤&space-character;(#x20)°ì¤Ä¤ËÃÖ¤­´¹¤¨¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤(¡Ö<titleref xml-link="simple" href="sec-line-ends">¹ÔËö¤Î°·¤¤</titleref>¡×¤â»²¾È¤Î¤³¤È¡£)¡£
+</p></item>
+<item>
+<p>b) ¼¡¤Ë¡¤Ê¸»ú»²¾ÈµÚ¤ÓÆâÉô&parsed-entity;¤Ø¤Î»²¾È¤Ï¡¤Å¸³«¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£³°Éô¼ÂÂΤؤλ²¾È¤Ï¡¤&error;¤È¤¹¤ë¡£
+</p></item>
+<item>
+<p>c) ºÇ¸å¤Ë¡¤Â°À­¤Î·¿¤¬<kw>CDATA</kw>¤Ç¤Ê¤±¤ì¤Ð¡¤¶õÇò&string;¤Ï¡¤¤¹¤Ù¤Æ&space-character;(#x20)°ì¤Ä¤ËÀµµ¬²½¤·¡¤»Ä¤ê¤Î¶õÇòʸ»ú¤Ï¡¤ºï½ü¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p></item>
+</ulist>
+
+&non-validating;&parser;¤Ï¡¤Àë¸À¤¬¸«¤Ä¤«¤é¤Ê¤¤Â°À­¤Ï¡¤¤¹¤Ù¤Æ¡¤<kw>CDATA</kw>¤òÀë¸À¤·¤Æ¤¤¤ë¤È¤·¤Æ°·¤¦¤³¤È¤¬Ë¾¤Þ¤·¤¤¡£</p>
+</div3>
+</div2>
+
+<div2 id='sec-condition-sect'>
+<head>¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó</head>
+<p>
+<termdef id='dt-cond-section' term='conditional section'>
+<term>¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó</term>¤È¤Ï¡¤<termref def='dt-doctype'>ʸ½ñ·¿Àë¸À¤Î³°Éô&subset;</termref>¤Î°ìÉô¤È¤·¡¤À©¸æ¥­¡¼¥ï¡¼¥É¤Î»ØÄê¤Ë¤è¤Ã¤Æ¡¤DTD¤ÎÏÀÍý¹½Â¤¤Ë´Þ¤á¤¿¤ê¡¤½ü¤¤¤¿¤ê¤¹¤ëÉôʬ¤È¤¹¤ë¡£
+</termdef>
+
+<scrap lang='ebnf'>
+<head>¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó</head>
+<prodgroup pcw2="9" pcw4="14.5">
+<prod id='NT-conditionalSect'><lhs>conditionalSect</lhs>
+<rhs><nt def='NT-includeSect'>includeSect</nt>
+| <nt def='NT-ignoreSect'>ignoreSect</nt>
+</rhs>
+</prod>
+<prod id='NT-includeSect'><lhs>includeSect</lhs>
+<rhs>'&lt;![' S? 'INCLUDE' S? '['
+<!-- (<nt def='NT-markupdecl'>markupdecl</nt>
+ | <nt def="NT-conditionalSect">conditionalSect</nt>
+ | <nt def="NT-S">S</nt>)*
+-->
+<nt def="NT-extSubset">extSubset</nt>
+']]&gt;'
+</rhs>
+</prod>
+<prod id='NT-ignoreSect'><lhs>ignoreSect</lhs>
+<rhs>'&lt;![' S? 'IGNORE' S? '['
+<nt def="NT-ignoreSectContents">ignoreSectContents</nt>*
+']]&gt;'</rhs>
+</prod>
+<prod id='NT-ignoreSectContents'><lhs>ignoreSectContents</lhs>
+<rhs><nt def='NT-Ignore'>Ignore</nt>
+('&lt;![' <nt def='NT-ignoreSectContents'>ignoreSectContents</nt>
+']]&gt;'
+<nt def='NT-Ignore'>Ignore</nt>)*</rhs></prod>
+<prod id='NT-Ignore'><lhs>Ignore</lhs>
+<rhs><nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ('&lt;![' | ']]&gt;')
+<nt def='NT-Char'>Char</nt>*)
+</rhs></prod>
+<!--<rhs>
+((<nt def='NT-SkipLit'>SkipLit</nt>
+| <nt def='NT-Comment'>Comment</nt>
+| <nt def='NT-PI'>PI</nt>) -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+| ('&lt;![' <nt def='NT-ignoreSectContents'>ignoreSectContents</nt>*
+']]&gt;')
+</rhs>
+<rhs>
+| (<nt def='NT-Char'>Char</nt> - (']' | [&lt;'"]))
+</rhs>
+<rhs>
+| ('&lt;!' (<nt def='NT-Char'>Char</nt> - ('-' | '[')))
+</rhs>-->
+</prodgroup>
+</scrap>
+</p>
+
+<p>¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó¤Ï¡¤DTD¤ÎÆâÉô&subset;µÚ¤Ó³°Éô&subset;¤ÈƱÍͤˡ¤´°Á´¤ÊÀë¸À¡¤¥³¥á¥ó¥ÈËô¤ÏÆþ¤ì»Ò¤Ë¤Ê¤Ã¤¿¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó¤ò¡¤¤¤¤¯¤Ä¤«´Þ¤ó¤Ç¤è¤¤¡£¤³¤ì¤é¤Î´Ö¤Ë¡¤¶õÇò¤¬¸½¤ì¤Æ¤â¤è¤¤¡£
+</p>
+<p>
+¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó¤Î¥­¡¼¥ï¡¼¥É¤¬<code>INCLUDE</code>¤Ê¤é¤Ð¡¤XML&processor;¤Ï¡¤¤³¤Î¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤò¡¤Ê¸½ñ¤Î°ìÉô¤È¤·¤Æ°·¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó¤Î¥­¡¼¥ï¡¼¥É¤¬<code>IGNORE</code>¤Ê¤é¤Ð¡¤¤½¤Î¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤϡ¤Ê¸½ñ¤Î°ìÉô¤È¤·¤Æ°·¤ï¤Ê¤¤¡£¹½Ê¸²òÀϤòÀµ¤·¤¯¹Ô¤¦¤¿¤á¤Ë¤Ï¡¤Ìµ»ë¤¹¤ë¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó(IGNORE)¤Ë´Ø¤·¤Æ¤â¡¤ÆâÍƤòÆɤޤʤ±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤ËÃí°Õ¤¹¤ë¤³¤È¡£¤³¤ì¤Ï¡¤Æþ¤ì»Ò¤Ë¤Ê¤Ã¤¿¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¡¤(̵»ë¤¹¤ë)ºÇ¤â³°Â¦¤Î¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó¤òÀµ¤·¤¯¸¡½Ð¤¹¤ë¤¿¤á¤È¤¹¤ë¡£¥­¡¼¥ï¡¼¥É¤ò<code>INCLUDE</code>¤È¤¹¤ë¾®¤µ¤Ê¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó¤¬¡¤¥­¡¼¥ï¡¼¥É¤ò<code>IGNORE</code>¤È¤¹¤ë¤è¤êÂ礭¤Ê¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó¤Ë´Þ¤Þ¤ì¤ë¤Ê¤é¤Ð¡¤³°Â¦µÚ¤ÓÆ⦤ξò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó¤ÎξÊý¤È¤â̵»ë¤¹¤ë¡£
+</p>
+<p>
+¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó¤Î¥­¡¼¥ï¡¼¥É¤¬¥Ñ¥é¥á¥¿¼ÂÂλ²¾È¤Ê¤é¤Ð¡¤XML&processor;¤Ï¾ò·ïÉÕ¤­¥»¥¯¥·¥ç¥ó¤Î°·¤¤¤òȽÃǤ¹¤ëÁ°¤Ë¡¤¤³¤Î¥Ñ¥é¥á¥¿¼ÂÂΤòŸ³«¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+
+<p>Îã¤ò¼¡¤Ë¼¨¤¹¡£
+
+<eg>&lt;!ENTITY % draft 'INCLUDE' >
+&lt;!ENTITY % final 'IGNORE' >
+
+&lt;![%draft;[
+&lt;!ELEMENT book (comments*, title, body, supplements?)>
+]]&gt;
+&lt;![%final;[
+&lt;!ELEMENT book (title, body, supplements?)>
+]]&gt;
+</eg>
+</p>
+</div2>
+<!--
+<div2 id='sec-pass-to-app'>
+<head>XML Processor Treatment of Logical Structure</head>
+<p>When an XML processor encounters a start-tag, it must make
+at least the following information available to the application:
+<ulist>
+<item>
+<p>the element type's generic identifier</p>
+</item>
+<item>
+<p>the names of attributes known to apply to this element type
+(validating processors must make available names of all attributes
+declared for the element type; non-validating processors must
+make available at least the names of the attributes for which
+values are specified.
+</p>
+</item>
+</ulist>
+</p>
+</div2>
+-->
+
+</div1>
+<!-- &Entities; -->
+
+<div1 id='sec-physical-struct'>
+<head>ʪÍý¹½Â¤</head>
+
+<p>
+<termdef id="dt-entity" term="Entity">
+XMLʸ½ñ¤Ï¡¤°ì¤Ä°Ê¾å¤Îµ­²±Ã±°Ì¤«¤é¹½À®¤¹¤ë¡£¤³¤Îµ­²±Ã±°Ì¤ò¡¤<term>¼ÂÂÎ</term>¤È¤¤¤¦¡£¼ÂÂΤϡ¤<term>ÆâÍÆ</term>¤ò¤â¤Á¡¤Ê¸½ñ¼ÂÂÎ(°Ê¹ß»²¾È)µÚ¤Ó<termref def='dt-doctype'>³°ÉôDTD&subset;</termref>¤ò½ü¤¤¤Æ¡¤<term>̾Á°</term>¤Ç&identified;¡£
+</termdef>
+
+<!-- Added for CFG -->
+<!-- obscurity amputated by TWB -->
+<!-- entire sentence amputated by CMSMcQ: no one but NO ONE is
+ready for entities declared as
+<!ENTITY foo "http://www.foo.com/bar.xml#id">
+and it's pointless to suggest that it's possible
+under current circumstances. -->
+<!-- An entity may be stored in, -->
+<!--but need not be coterminous with, -->
+<!-- but need not comprise the whole of, -->
+<!-- a single physical storage object such as a file or -->
+<!-- database field. -->
+<!-- End sentence added for CFG -->³ÆXMLʸ½ñ¤Ï¡¤<termref def="dt-docent">ʸ½ñ¼ÂÂÎ</termref>¤È¸Æ¤Ö¼ÂÂΤò°ì¤Ä¤â¤Ä¡£<termref def="dt-xml-proc">XML&processor;</termref>¤Ï¡¤¤³¤Îʸ½ñ¼ÂÂΤ«¤é½èÍý¤ò³«»Ï¤¹¤ë¡£Ê¸½ñ¼ÂÂΤ¬¡¤Ê¸½ñ¤Î¤¹¤Ù¤Æ¤ò´Þ¤ó¤Ç¤â¤è¤¤¡£</p>
+
+<p>¼ÂÂΤϡ¤&parsed-entity;Ëô¤Ï&unparsed-entity;¤È¤¹¤ë¡£<termdef id="dt-parsedent" term="Text Entity"><term>&parsed-entity;</term>¤ÎÆâÍƤϡ¤&parsed-entity;¤Î<termref def='dt-repltext'>&replacement-text;</termref>¤È¸Æ¤Ö¡£¤³¤Î<termref def="dt-text">¥Æ¥­¥¹¥È</termref>¤Ï¡¤Ê¸½ñ¤ÎËÜÂΤΰìÉô¤È¤·¤Æ²ò¼á¤¹¤ë¡£
+</termdef>
+</p>
+
+<p>
+<termdef id="dt-unparsed" term="Unparsed Entity">
+<term>&unparsed-entity;</term>¤Ï¡¤ÆâÍƤ¬<termref def='dt-text'>¥Æ¥­¥¹¥È</termref>¤Ç¤â¤½¤¦¤Ç¤Ê¤¯¤È¤â¤è¤¤¥ê¥½¡¼¥¹¤È¤¹¤ë¡£¥Æ¥­¥¹¥È¤Î¾ì¹ç¡¤XML¤Ç¤Ê¤¯¤È¤â¤è¤¤¡£³Æ&unparsed-entity;¤Ë¤Ï¡¤<termref def="dt-notation">µ­Ë¡</termref>¤¬´ØÏ¢ÉÕ¤±¤é¤ì¡¤¤³¤Îµ­Ë¡¤Ï¡¤Ì¾Á°¤Ç&identified;¡£µ­Ë¡¤Î̾Á°µÚ¤Ó´ØÏ¢ÉÕ¤±¤é¤ì¤¿&identifier;¤ò¡¤XML&processor;¤¬&application;¤ËÅϤ¹¤È¤¤¤¦Í×·ï°Ê³°¤Ï¡¤XML¤Ï¡¤&unparsed-entity;¤ÎÆâÍƤòÀ©¸Â¤·¤Ê¤¤¡£
+</termdef>
+</p>
+
+<p>&parsed-entity;¤Ï¡¤¼ÂÂλ²¾È¤Ë¤è¤Ã¤Æ̾Á°¤Ç¸Æ¤Ó½Ð¤¹¡£&unparsed-entity;¤Ï¡¤<kw>ENTITY</kw>·¿Ëô¤Ï<kw>ENTITIES</kw>·¿¤Î°À­¤ÎÃͤȤ·¤Æ¡¤Ì¾Á°¤Ç»²¾È¤¹¤ë¡£</p>
+
+<p>
+<termdef id='gen-entity' term='general entity'><term>°ìÈ̼ÂÂÎ</term>¤Ï¡¤Ê¸½ñÆâÍƤÎÃæ¤Ç»ÈÍѤ¹¤ë&parsed-entity;¤È¤¹¤ë¡£¤¢¤¤¤Þ¤¤¤Ë¤Ê¤é¤Ê¤¤¸Â¤ê¡¤¤³¤Î&TR-or-Rec;¤Ç¤Ï¡¤°ìÈ̼ÂÂΤòñ¤Ë<emph>¼ÂÂÎ</emph>¤È¸Æ¤Ö¡£</termdef><termdef id='dt-PE' term='Parameter entity'>¥Ñ¥é¥á¥¿¼ÂÂΤϡ¤DTDÆâ¤Ç»ÈÍѤ¹¤ë&parsed-entity;¤È¤¹¤ë¡£</termdef>¤³¤ì¤é¤Î£²¼ïÎà¤Î¼ÂÂΤϡ¤°Û¤Ê¤ë½ñ¼°¤Ç»²¾È¤·¡¤°Û¤Ê¤ëʸ̮¤Çǧ¼±¤¹¤ë¡£</p>
+
+<!--
+<div2 id='sec-synchro'>
+<head>Logical and Physical Structures</head>
+<p>The logical and physical structures (elements and entities)
+in an XML document must
+be properly nested.
+<termref def='dt-stag'>Tags</termref> and <termref def='dt-element'>elements</termref> must
+each begin and end in the same <termref def='dt-entity'>entity</termref>, but may
+refer to other
+entities internally; <termref def='dt-comment'>comments</termref>,
+<termref def='dt-pi'>processing instructions</termref>,
+<termref def='dt-charref'>character
+references</termref>, and
+<termref def='dt-entref'>entity references</termref> must each be contained entirely
+within a single entity. Entities must each contain an integral number
+of elements, comments, processing instructions, and references,
+possibly together with character data not contained within any element
+in the entity, or else they must contain non-textual data, which by
+definition contains no elements.</p></div2>
+-->
+
+<div2 id='sec-references'>
+<head>ʸ»ú»²¾ÈµÚ¤Ó¼ÂÂλ²¾È</head>
+<p>
+<termdef id="dt-charref" term="Character Reference">
+<term>ʸ»ú»²¾È</term>¤Ï¡¤ISO/IEC 10646ʸ»ú½¸¹ç¤ÎÆÃÄê¤Îʸ»ú¡¤Î㤨¤Ð¡¤ÆþÎϵ¡´ï¤«¤éľÀÜÆþÎÏÉÔ²Äǽ¤Êʸ»ú¤ò»²¾È¤¹¤ë¡£
+
+<scrap lang='ebnf'>
+<head>ʸ»ú»²¾È</head>
+<prod id='NT-CharRef'><lhs>CharRef</lhs>
+<rhs>'&amp;#' [0-9]+ ';' </rhs>
+<rhs>| '&hcro;' [0-9a-fA-F]+ ';'</rhs>
+<wfc def="wf-Legalchar"/>
+</prod>
+</scrap>
+<wfcnote id="wf-Legalchar">
+<head>ÀµÅö¤Êʸ»ú</head>
+<p>ʸ»ú»²¾È¤Ç»²¾È¤¹¤ëʸ»ú¤Ï¡¤Èó½ªÃ¼µ­¹æ<termref def="NT-Char">Char</termref>¤Ë½¾¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+</wfcnote>
+ʸ»ú¤¬ "<code>&amp;#x</code>" ¤Ç»Ï¤Þ¤ì¤Ð¡¤½ªÃ¼¤Î "<code>;</code>" ¤Þ¤Ç¤Î¿ô»úµÚ¤Ó¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤Ï¡¤ISO/IEC 10646 ¤Îʸ»ú¥³¡¼¥É¤Î16¿Ê¿ôɽ¸½¤È¤¹¤ë¡£
+<!--ÆüËܸìÌõ¤Ë¤Ä¤¤¤Æ: letter¤Ï¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤ÈÌõ¤·¤¿¡£ »°¹¥ -->
+ʸ»ú¤¬ "<code>&amp;#</code>" ¤Ç»Ï¤Þ¤ì¤Ð¡¤½ªÃ¼¤Î "<code>;</code>" ¤Þ¤Ç¤Î¿ô»ú¤Ï¡¤Ê¸»ú¥³¡¼¥É¤Î10¿Ê¿ôɽ¸½¤È¤¹¤ë¡£
+</termdef>
+</p>
+
+<p>
+<termdef id="dt-entref" term="Entity Reference">
+<term>¼ÂÂλ²¾È</term>¤Ï¡¤Ì¾Á°¤ÎÉÕ¤¤¤¿¼ÂÂΤÎÆâÍƤò»²¾È¤¹¤ë¡£</termdef><termdef id='dt-GERef' term='General Entity Reference'>°ìÈ̼ÂÂΤؤλ²¾È¤Ï¡¤¥¢¥ó¥Ñ¥µ¥ó¥É(<code>&amp;</code>)µÚ¤Ó¥»¥ß¥³¥í¥ó(<code>;</code>)¤ò¶èÀÚ¤ê»Ò¤È¤·¤ÆÍѤ¤¤ë¡£</termdef><termdef id='dt-PERef' term='Parameter-entity reference'><term>¥Ñ¥é¥á¥¿¼ÂÂÎ</term>¤Ø¤Î»²¾È¤Ï¡¤¥Ñ¡¼¥»¥ó¥Èµ­¹æ(<code>%</code>)µÚ¤Ó¥»¥ß¥³¥í¥ó(<code>;</code>)¤ò¶èÀÚ¤ê»Ò¤È¤·¤ÆÍѤ¤¤ë¡£
+</termdef>
+</p>
+
+<scrap lang="ebnf">
+<head>¼ÂÂλ²¾È</head>
+<prod id='NT-Reference'><lhs>Reference</lhs>
+<rhs><nt def='NT-EntityRef'>EntityRef</nt>
+| <nt def='NT-CharRef'>CharRef</nt></rhs></prod>
+<prod id='NT-EntityRef'><lhs>EntityRef</lhs>
+<rhs>'&amp;' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<wfc def='wf-entdeclared'/>
+<vc def='vc-entdeclared'/>
+<wfc def='textent'/>
+<wfc def='norecursion'/>
+</prod>
+<prod id='NT-PEReference'><lhs>PEReference</lhs>
+<rhs>'%' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<wfc def='wf-entdeclared'/>
+<vc def='vc-entdeclared'/>
+<wfc def='textent'/>
+<wfc def='norecursion'/>
+<wfc def='indtd'/>
+</prod>
+</scrap>
+
+<wfcnote id='wf-entdeclared'>
+<head>¼ÂÂΤ¬Àë¸À¤µ¤ì¤Æ¤¤¤ë¤³¤È</head>
+<p>DTD¤ò¤â¤¿¤Ê¤¤Ê¸½ñ¡¤¥Ñ¥é¥á¥¿¼ÂÂλ²¾È¤ò´Þ¤Þ¤Ê¤¤ÆâÉôDTD&subset;¤À¤±¤ò¤â¤Äʸ½ñ¡¤Ëô¤Ï "<code>standalone='yes'</code>" ¤ò¤â¤Äʸ½ñ¤Ë¤ª¤¤¤Æ¡¤¼ÂÂλ²¾È¤ÇÍѤ¤¤ë <nt def='NT-Name'>Name</nt> ¤Ï¡¤¤½¤Î¼ÂÂΤÎÀë¸À¤ÇÍ¿¤¨¤ë̾Á°¤È¡¤<termref def="dt-match">&match;</termref>¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤¿¤À¤·¡¤&well-formed;¤Îʸ½ñ¤Ï¡¤¼ÂÂÎ&magicents; ¤òÀë¸À¤¹¤ëɬÍפϤʤ¤¡£¥Ñ¥é¥á¥¿¼ÂÂΤξì¹ç¤Ï¡¤Àë¸À¤Ï¡¤»²¾È¤ËÀè¹Ô¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£Æ±Íͤˡ¤°ìÈ̼ÂÂΤξì¹ç¤Ï¡¤Â°À­¥ê¥¹¥ÈÀë¸À¤Î&default-value;Æâ¤Ç¤Î»²¾È¤è¤êÀè¤Ë¡¤Àë¸À¤¬¸½¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+
+<p>³°Éô&subset;Ëô¤Ï³°Éô¥Ñ¥é¥á¥¿¼ÂÂΤǼÂÂΤòÀë¸À¤¹¤ë¤È¤­¡¤&non-validating;&processor;¤¬¡¤Àë¸À¤òÆɤߡ¤½èÍý¤¹¤ë¤³¤È¤ò<titleref href='include-if-valid'>µÁ̳¤Å¤±¤Ê¤¤</titleref>¡£¤½¤ì¤é¤Îʸ½ñ¤Ç¤Ï¡¤¼ÂÂΤÏÀë¸À¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤È¤¤¤¦µ¬Â§¤Ï¡¤&well-formed;À©Ìó¤Ç¤Ï¤Ê¤¤¡£
+</p>
+</wfcnote>
+
+<vcnote id="vc-entdeclared">
+<head>¼ÂÂΤ¬Àë¸À¤µ¤ì¤Æ¤¤¤ë¤³¤È</head>
+<p>
+³°Éô&subset;Ëô¤Ï³°Éô¥Ñ¥é¥á¥¿¼ÂÂΤò¤â¤Ã¤Æ¤¤¤Æ¡¤"<code>standalone='no'</code>"¤ò¤â¤Äʸ½ñ¤Ë¤ª¤¤¤Æ¡¤¼ÂÂλ²¾È¤ÇÍѤ¤¤ë <nt def='NT-Name'>Name</nt> ¤Ï¡¤¤½¤Î¼ÂÂΤÎÀë¸À¤ÇÍ¿¤¨¤ë̾Á°¤È<termref def="dt-match">&match;</termref>¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£Áê¸ß±¿ÍÑÀ­¤Î¤¿¤á¡¤&valid;¤Êʸ½ñ¤Ï<titleref href="sec-escapes">¤¢¤é¤«¤¸¤áÄêµÁ¤·¤¿¼ÂÂΤε¬Äê</titleref>¤Ç»ØÄꤷ¤¿½ñ¼°¤Ë¤è¤Ã¤Æ¡¤¼ÂÂÎ &magicents;¤òÀë¸À¤¹¤ë¤³¤È¤¬Ë¾¤Þ¤·¤¤¡£¥Ñ¥é¥á¥¿¼ÂÂΤξì¹ç¤Ï¡¤Àë¸À¤Ï¡¤»²¾È¤ËÀè¹Ô¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£Æ±Íͤˡ¤°ìÈ̼ÂÂΤξì¹ç¤Ï¡¤Â°À­¥ê¥¹¥ÈÀë¸À¤Î&default-value;Æâ¤Ç¤Î»²¾È¤è¤ê¤âÀè¤Ë¡¤Àë¸À¤¬¸½¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+</vcnote>
+
+<!-- FINAL EDIT: is this duplication too clumsy? -->
+
+<wfcnote id='textent'>
+<head>&parsed-entity;</head>
+<p>
+¼ÂÂλ²¾È¤Ï¡¤<termref def="dt-unparsed">&unparsed-entity;</termref>¤Î̾Á°¤ò´Þ¤ó¤Ç¤¤¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£&unparsed-entity;¤Ï¡¤<kw>ENTITY</kw>·¿Ëô¤Ï<kw>ENTITIES</kw> ·¿¤È¤·¤ÆÀë¸À¤·¤¿<termref def="dt-attrval">°À­ÃÍ</termref>¤È¤·¤Æ¤À¤±»²¾È¤Ç¤­¤ë¡£
+</p>
+</wfcnote>
+
+<wfcnote id='norecursion'>
+<head>ºÆµ¢¤Ê¤·</head>
+<p>&parsed-entity;¤Ï¡¤¤½¤ì¼«ÂΤؤλ²¾È¤ò¡¤Ä¾Àܤˤâ´ÖÀܤˤâ´Þ¤ó¤Ç¤Ï¤Ê¤é¤Ê¤¤¡£</p>
+</wfcnote>
+
+<wfcnote id='indtd'>
+<head>DTD¤ÎÃæ</head>
+<p>
+¥Ñ¥é¥á¥¿¼ÂÂλ²¾È¤Ï¡¤<termref def='dt-doctype'>DTD</termref>Æâ¤Ë¤À¤±¡¤½Ð¸½¤·¤Æ¤è¤¤¡£
+<!--
+In the external DTD subset, a parameter-entity reference is
+recognized only at the locations where
+the nonterminal <nt def="NT-PEReference">PEReference</nt> or the
+special operator <code>%</code> appears in a production of the
+grammar. In the internal subset, parameter-entity references
+are recognized only when they match
+the <nt def="NT-InternalPERef">InternalPERef</nt> non-terminal
+in the production for <nt def="NT-markupdecl">markupdecl</nt>.
+-->
+</p>
+</wfcnote>
+
+<p>
+ʸ»ú»²¾ÈµÚ¤Ó¼ÂÂλ²¾È¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg>Type &lt;key>less-than&lt;/key> (&hcro;3C;) to save options.
+This document was prepared on &amp;docdate; and
+is classified &amp;security-level;.</eg>
+</p>
+
+<p>
+¥Ñ¥é¥á¥¿¼ÂÂλ²¾È¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg>&lt;!ENTITY % ISOLat2
+ SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" >
+%ISOLat2;
+</eg>
+</p>
+</div2>
+
+<div2 id='sec-entity-decl'>
+<head>¼ÂÂÎÀë¸À</head>
+
+<p>
+<termdef id="dt-entdecl" term="entity declaration">
+¼ÂÂΤϡ¤¼¡¤Î¤È¤ª¤ê¤ËÀë¸À¤¹¤ë¡£
+<scrap lang='ebnf'>
+<head>¼ÂÂÎÀë¸À</head>
+<prodgroup pcw2="5" pcw4="18.5">
+<prod id='NT-EntityDecl'><lhs>EntityDecl</lhs>
+<rhs><nt def="NT-GEDecl">GEDecl</nt></rhs><com>°ìÈ̼ÂÂÎ</com>
+<rhs>| <nt def="NT-PEDecl">PEDecl</nt></rhs><com>¥Ñ¥é¥á¥¿¼ÂÂÎ</com>
+</prod>
+<prod id='NT-GEDecl'><lhs>GEDecl</lhs>
+<rhs>'&lt;!ENTITY' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-EntityDef'>EntityDef</nt>
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+</prod>
+<prod id='NT-PEDecl'><lhs>PEDecl</lhs>
+<rhs>| '&lt;!ENTITY' <nt def='NT-S'>S</nt> '%' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt> <nt def='NT-S'>S</nt>
+<nt def='NT-PEDef'>PEDef</nt> <nt def='NT-S'>S</nt>? '&gt;'</rhs>
+<com>¥Ñ¥é¥á¥¿¼ÂÂÎ</com>
+</prod>
+<prod id='NT-EntityDef'><lhs>EntityDef</lhs>
+<rhs><nt def='NT-EntityValue'>EntityValue</nt>
+</rhs>
+<!--<wfc def="WF-EntityValue"/>-->
+<rhs>| <nt def='NT-ExternalDef'>ExternalDef</nt></rhs>
+<!--<wfc def="WF-External"/>-->
+</prod>
+<!-- FINAL EDIT: what happened to WFs here? -->
+<prod id='NT-PEDef'><lhs>PEDef</lhs>
+<rhs><nt def='NT-EntityValue'>EntityValue</nt>
+| <nt def='NT-ExternalID'>ExternalID</nt></rhs></prod>
+</prodgroup>
+</scrap>
+
+<nt def='NT-Name'>Name</nt> ¤Ï¡¤<termref def="dt-entref">¼ÂÂλ²¾È</termref>¤Ë¤ª¤¤¤Æ¼ÂÂΤò&identify;¡£&unparsed-entity;¤Ê¤é¤Ð¡¤<kw>ENTITY</kw> ·¿Ëô¤Ï<kw>ENTITIES</kw>·¿¤Î°À­ÃÍÆâ¤Ç¡¤¼ÂÂΤò&identify;¡£Æ±°ì¤Î¼ÂÂΤ¬°ì²ó°Ê¾åÀë¸À¤µ¤ì¤ì¤Ð¡¤ºÇ½é¤ÎÀë¸À¤òÍѤ¤¤ë¡£&at-user-option;¡¤Ê£¿ô²óÀë¸À¤µ¤ì¤ë¼ÂÂΤ˴ؤ·¡¤XML&processor;¤Ï¡¤·Ù¹ð¤ò½Ð¤·¤Æ¤â¤è¤¤¡£
+</termdef>
+</p>
+
+<!--
+<wfcnote id="WF-Entityvalue">
+<head>Well-Formed Internal Entity</head>
+<p>General entities defined by an <nt
+def="NT-EntityValue">EntityValue</nt> must be well-formed, as defined
+in section <specref ref="wf-entities"/>.
+</p>
+</wfcnote>
+<wfcnote id="WF-External">
+<head>Well-Formed External Entity</head>
+<p>General text entities defined by an <nt
+def="NT-ExternalDef">ExternalDef</nt>, must be well-formed, as defined
+in the section on <titleref xml-link="simple"
+href="wf-entities">well-formed entities.</titleref>.</p>
+</wfcnote>
+-->
+
+<div3 id='sec-internal-ent'>
+<head>ÆâÉô¼ÂÂÎ</head>
+<p>
+<termdef id='dt-internent' term="Internal Entity Replacement Text">
+¼ÂÂΤÎÄêµÁ¤¬ <nt def='NT-EntityValue'>EntityValue</nt>¤Î¤È¤­¡¤¤³¤ì¤ò<term>ÆâÉô¼ÂÂÎ</term>¤È¤¤¤¦¡£¤³¤ì¤Ï¡¤Ê̸ĤÎʪÍýŪµ­²±Ã±°Ì¤ò¤â¤¿¤º¡¤¼ÂÂΤÎÆâÍƤϡ¤Àë¸ÀÆâ¤ÇÍ¿¤¨¤ë¡£</termdef>Àµ¤·¤¯<termref def='dt-repltext'>&replacement-text;</termref>¤òÀ¸À®¤¹¤ë¤Ë¤Ï¡¤<termref def='dt-litentval'>&literal;¼ÂÂÎÃÍ</termref>Æâ¤Ç¤Î¼ÂÂλ²¾ÈµÚ¤Óʸ»ú»²¾È¤Î½èÍý¤¬¡¤É¬ÍפȤʤ뤫¤â¤·¤ì¤Ê¤¤¤³¤È¤ËÃí°Õ¤¹¤ë¡£¾ÜºÙ¤Ï¡¤<titleref href='intern-replacement'>ÆâÉô¼ÂÂΤÎ&replacement-text;¤Î¹½ÃÛ</titleref>¤ò»²¾È¡£
+
+<!-- redundant -TWB
+Within the <nt def="NT-EntityValue">EntityValue</nt>,
+parameter-entity references and character references are recognized
+and expanded immediately.
+General-entity references within the
+replacement text are not recognized
+at the time the entity declaration is parsed, though they may be
+recognized when the entity itself is referred to.
+-->
+
+</p>
+
+<p>
+ÆâÉô¼ÂÂΤϡ¤<termref def="dt-parsedent">&parsed-entity;</termref>¤È¤¹¤ë¡£
+</p>
+
+<p>ÆâÉô¼ÂÂÎÀë¸À¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg>&lt;!ENTITY Pub-Status "This is a pre-release of the specification."></eg></p>
+</div3>
+
+<div3 id='sec-external-ent'>
+<head>³°Éô¼ÂÂÎ</head>
+<p>
+<termdef id="dt-extent" term="External Entity">
+¼ÂÂΤ¬ÆâÉô¼ÂÂΤǤʤ±¤ì¤Ð¡¤<term>³°Éô¼ÂÂÎ</term>¤È¤·¡¤¼¡¤Î¤È¤ª¤ê¤ËÀë¸À¤¹¤ë¡£
+
+<scrap lang='ebnf'>
+<head>³°Éô¼ÂÂÎÀë¸À</head>
+<prod id='NT-ExternalDef'><lhs>ExternalDef</lhs>
+<rhs><nt def='NT-ExternalID'>ExternalID</nt>
+<nt def='NT-NDataDecl'>NDataDecl</nt>?</rhs></prod>
+<prod id='NT-ExternalID'><lhs>ExternalID</lhs>
+<rhs>'SYSTEM' <nt def='NT-S'>S</nt>
+<nt def='NT-SystemLiteral'>SystemLiteral</nt></rhs>
+<rhs>| 'PUBLIC' <nt def='NT-S'>S</nt>
+<nt def='NT-PubidLiteral'>PubidLiteral</nt>
+<nt def='NT-S'>S</nt>
+<nt def='NT-SystemLiteral'>SystemLiteral</nt>
+</rhs>
+</prod>
+<prod id='NT-NDataDecl'><lhs>NDataDecl</lhs>
+<rhs><nt def='NT-S'>S</nt> 'NDATA' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt></rhs>
+<vc def='not-declared'/></prod>
+</scrap>
+
+<nt def='NT-NDataDecl'>NDataDecl</nt> ¤¬Â¸ºß¤¹¤ì¤Ð¡¤¤³¤Î¼ÂÂΤϡ¤<termref def="dt-unparsed">&unparsed-entity;</termref>¤È¤·¡¤¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¤&parsed-entity;¤È¤¹¤ë¡£</termdef>
+</p>
+
+<vcnote id='not-declared'>
+<head>µ­Ë¡¤¬Àë¸À¤µ¤ì¤Æ¤¤¤ë¤³¤È</head>
+<p>
+<nt def='NT-Name'>Name</nt> ¤Ï¡¤Àë¸À¤·¤¿<termref def="dt-notation">µ­Ë¡</termref>¤Î̾Á°¤È&match;¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+</vcnote>
+
+<p>
+<termdef id="dt-sysid" term="System Identifier">
+¥­¡¼¥ï¡¼¥É <kw>SYSTEM</kw> ¤Î¸å¤Î <nt def='NT-SystemLiteral'>SystemLiteral</nt> ¤ò¡¤¼ÂÂΤÎ<term>¥·¥¹¥Æ¥à&identifier;</term>¤È¸Æ¤Ö¡£¤³¤ì¤ÏURI¤È¤·¡¤¤½¤Î¼ÂÂΤÎÆâÍƤò¼è¤ê½Ð¤¹¤Î¤ËÍѤ¤¤Æ¤â¤è¤¤¡£</termdef>URI¤È¶¦¤Ë»È¤¦¤³¤È¤Î¿¤¤¥Ï¥Ã¥·¥å("<code>#</code>")µÚ¤Ó¥Õ¥é¥°¥á¥ó¥È&identifier;¤Ï¡¤Àµ¼°¤Ë¤Ï¡¤URI¼«ÂΤΰìÉô¤È¤Ï¤·¤Ê¤¤¡£¥Õ¥é¥°¥á¥ó¥È&identifier;¤¬¡¤¥·¥¹¥Æ¥à&identifier;¤ÎÉôʬ¤È¤·¤ÆÍ¿¤¨¤é¤ì¤Æ¤¤¤ë¾ì¹ç¡¤XML&processor;¤Ï¡¤&error;¤ò½Ð¤·¤Æ¤â¤è¤¤¡£¤³¤Î&TR-or-Rec;¤ÎÈϰϳ°¤Î¾ðÊó(Î㤨¤Ð¡¤¤¢¤ëÆÃÄê¤ÎDTD¤ÎÆÃÊ̤ÊXMLÍ×ÁÇËô¤ÏÆÃÄê¤Î&application;¤Î»ÅÍͤˤè¤Ã¤ÆÄêµÁ¤µ¤ì¤¿½èÍýÌ¿Îá)¤Ë¤è¤Ã¤Æ¾å½ñ¤­¤µ¤ì¤Ê¤¤¸Â¤ê¡¤ÁêÂÐŪ¤ÊURI¤Ï¡¤¤½¤Î¼ÂÂΤΰÌÃÖ¡¤¤¹¤Ê¤ï¤Á¡¤¤½¤Î¼ÂÂΤÎÀë¸À¤¬¤¢¤ë¥Õ¥¡¥¤¥ë¤ËÁêÂÐŪ¤È¤¹¤ë¡£¤·¤¿¤¬¤Ã¤Æ¡¤DTD¤ÎÆâÉô&subset;¤Ë¤¢¤ë¼ÂÂÎÀë¸À¤Ç¤ÎÁêÂÐŪ¤ÊURI¤Ï¡¤Ê¸½ñ¤Î°ÌÃ֤ˤĤ¤¤ÆÁêÂÐŪ¤È¤¹¤ë¡£³°Éô&subset;¤Ë¤¢¤ë¼ÂÂÎÀë¸À¤Ç¤ÎÁêÂÐŪ¤ÊURI¤Ï¡¤¤½¤Î³°Éô&subset;¤ò´Þ¤à¥Õ¥¡¥¤¥ë¤Î°ÌÃÖ¤ËÁêÂÐŪ¤È¤¹¤ë¡£
+</p>
+
+<p>
+<termdef id="dt-pubid" term="Public identifier">
+¥·¥¹¥Æ¥à&identifier;°Ê³°¤Ë¡¤³°Éô¼ÂÂΤϡ¤<term>¸ø³«&identifier;</term>¤ò´Þ¤ó¤Ç¤â¤è¤¤¡£
+</termdef>
+¼ÂÂΤÎÆâÍƤò¼è¤ê½Ð¤¹XML&processor;¤Ï¡¤¤³¤Î¸ø³«&identifier;¤òÍѤ¤¤Æ¡¤Âå¤ï¤ê¤ÎURI¤ÎÀ¸À®¤ò»î¤ß¤Æ¤â¤è¤¤¡£XML&processor;¤¬¤³¤ì¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¤Ï¡¤¥·¥¹¥Æ¥à&literal;¤È¤·¤Æ»ØÄꤷ¤¿URI¤òÍѤ¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£&match;¤¹¤ëÁ°¤Ë¡¤¸ø³«&identifier;Æâ¤Ë¤¢¤ë¶õÇòʸ»ú¤«¤é¤Ê¤ë&string;¤Ï¡¤¤¹¤Ù¤Æñ°ì¤Î&space-character;(#x20)¤ËÀµµ¬²½¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¤Á°¸å¤Î¶õÇòʸ»ú¤Ïºï½ü¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</p>
+
+<p>³°Éô¼ÂÂÎÀë¸À¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg>&lt;!ENTITY open-hatch
+ SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">
+&lt;!ENTITY open-hatch
+ PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
+ "http://www.textuality.com/boilerplate/OpenHatch.xml">
+&lt;!ENTITY hatch-pic
+ SYSTEM "../grafix/OpenHatch.gif"
+ NDATA gif ></eg></p>
+</div3>
+
+</div2>
+
+<div2 id='TextEntities'>
+<head>&parsed-entity;</head>
+<div3 id='sec-TextDecl'>
+<head>¥Æ¥­¥¹¥ÈÀë¸À</head>
+<p>³°Éô&parsed-entity;¤Ï¡¤<term>¥Æ¥­¥¹¥ÈÀë¸À</term>¤Ç»Ï¤Þ¤Ã¤Æ¤â¤è¤¤¡£
+<scrap lang='ebnf'>
+<head>¥Æ¥­¥¹¥ÈÀë¸À</head>
+<prodgroup pcw4="12.5" pcw5="13">
+<prod id='NT-TextDecl'><lhs>TextDecl</lhs>
+<rhs>&xmlpio;
+<nt def='NT-VersionInfo'>VersionInfo</nt>?
+<nt def='NT-EncodingDecl'>EncodingDecl</nt>
+<nt def='NT-S'>S</nt>? &pic;</rhs>
+<!-- <wfc def='wfc-xmldecliteral'/> -->
+<!-- <wfc def='wfc-no-nonleading-encdec'/> -->
+</prod>
+</prodgroup>
+</scrap>
+</p>
+<p>¥Æ¥­¥¹¥ÈÀë¸À¤Ï¡¤¤½¤Î¤Þ¤Þ¤Î·Á¤Ç¸½¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¤&parsed-entity;¤Ø¤Î»²¾È¤ò·Ðͳ¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¤³¤È¤ËÃí°Õ¤¹¤ë¡£</p>
+<p>³°Éô&parsed-entity;¤Ë¤ª¤¤¤Æ¡¤¥Æ¥­¥¹¥ÈÀë¸À¤Ï¡¤ÀèƬ°Ê³°¤Î¤¤¤«¤Ê¤ë°ÌÃ֤ˤâ½Ð¸½¤·¤Ê¤¤¡£</p>
+</div3>
+<div3 id='wf-entities'>
+<head>&well-formed;¤Î&parsed-entity;</head>
+<p>¥é¥Ù¥ë<nt def='NT-document'>document</nt>¤ò¤â¤ÄÀ¸À®µ¬Â§¤Ë&match;¤¹¤ì¤Ð¡¤Ê¸½ñ¼ÂÂΤϡ¤&well-formed;¤È¤¹¤ë¡£¥é¥Ù¥ë<nt def='NT-ExtParsedEnt'>ExtParsedEnt</nt>¤ò¤â¤ÄÀ¸À®µ¬Â§¤Ë&match;¤¹¤ì¤Ð¡¤³°Éô¤Î°ìÈÌ&parsed-entity;¤Ï¡¤&well-formed;¤È¤¹¤ë¡£¥é¥Ù¥ë<nt def='NT-ExtPE'>ExtPE</nt>¤ò¤â¤ÄÀ¸À®µ¬Â§¤Ë&match;¤¹¤ì¤Ð¡¤³°Éô¥Ñ¥é¥á¥¿¼ÂÂΤϡ¤&well-formed;¤È¤¹¤ë¡£
+
+<scrap lang='ebnf'>
+<head>&well-formed;¤Î&parsed-entity;</head>
+<prod id='NT-ExtParsedEnt'><lhs>ExtParsedEnt</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-content'>content</nt></rhs>
+</prod>
+<prod id='NT-ExtPE'><lhs>ExtPE</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-extSubset'>extSubset</nt></rhs>
+</prod>
+</scrap>
+&replacement-text;¤¬¡¤¥é¥Ù¥ë<nt def='NT-content'>content</nt>¤ò¤â¤ÄÀ¸À®µ¬Â§¤Ë&match;¤¹¤ì¤Ð¡¤ÆâÉô¤Î°ìÈÌ&parsed-entity;¤Ï¡¤&well-formed;¤È¤¹¤ë¡£DTD¤òºÇ¸å¤Þ¤ÇÆɤ߹þ¤Þ¤Ê¤¤¤È¡¤³Î¼Â¤Ë¤³¤ì¤òȽÄê¤Ç¤­¤Ê¤¤¤³¤È¤ËÃí°Õ¡£¤¹¤Ù¤Æ¤ÎÆâÉô¤Î¥Ñ¥é¥á¥¿¼ÂÂΤϡ¤ÄêµÁ¤Ë¤è¤Ã¤Æ&well-formed;¤È¤¹¤ë¡£
+</p>
+<p>¼ÂÂΤ¬&well-formed;¤Ê·ë²Ì¤È¤·¤Æ¡¤XMLʸ½ñ¤ÎÏÀÍýŪµÚ¤ÓʪÍýŪ¹½Â¤¤Ï¡¤Àµ¤·¤¯Æþ¤ì»Ò¤È¤Ê¤ë¡£<termref def='dt-stag'>³«»Ï¥¿¥°</termref>¡¤<termref def='dt-etag'>½ªÎ»¥¿¥°</termref>¡¤<termref def="dt-empty">¶õÍ×ÁÇ¥¿¥°</termref>¡¤<termref def='dt-element'>Í×ÁÇ</termref>¡¤<termref def='dt-comment'>¥³¥á¥ó¥È</termref>¡¤<termref def='dt-pi'>½èÍýÌ¿Îá</termref>¡¤<termref def='dt-charref'>ʸ»ú»²¾È</termref>µÚ¤Ó<termref def='dt-entref'>¼ÂÂλ²¾È</termref>¤¬¡¤°ì¤Ä¤Î¼ÂÂΤdz«»Ï¤·¡¤Ê̤μÂÂΤǽªÎ»¤¹¤ë¤³¤È¤Ï¤Ê¤¤¡£</p>
+</div3>
+<div3 id='charencoding'>
+<head>¼ÂÂΤˤª¤±¤ëʸ»úÉä¹æ²½</head>
+
+<p>XMLʸ½ñÆâ¤Î³°Éô&parsed-entity;¤Ï¡¤³Æ¡¹¡¤Ê̤Îʸ»úÉä¹æ²½Êý¼°¤òÍѤ¤¤Æ¤â¤è¤¤¡£¤¹¤Ù¤Æ¤ÎXML&processor;¤Ï¡¤UTF-8¤ÇÉä¹æ²½¤·¤¿¼ÂÂΡ¤UTF-16¤ÇÉä¹æ²½¤·¤¿¼ÂÂΤò½èÍý¤Ç¤­¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+<!--
+It is recognized that for some purposes, the use of additional
+ISO/IEC 10646 planes other than the Basic Multilingual Plane
+may be required.
+A facility for handling characters in these planes is therefore a
+desirable characteristic in XML processors and applications.
+-->
+</p>
+<p>UTF-16¤ÇÉä¹æ²½¤·¤¿¼ÂÂΤϡ¤ISO/IEC 10646¤ÎÉÕÏ¿EµÚ¤ÓUnicode¤ÎÉÕÏ¿B¤Çµ¬Äꤹ¤ë&byte-order-mark;(ZERO WIDTH NO-BREAK SPACEʸ»ú¡¤#xFEFF)¤Ç»Ï¤Þ¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤ì¤Ï¡¤Éä¹æ²½¤Îɸ¼±¤Ç¤¢¤Ã¤Æ¡¤XMLʸ½ñ¤Î&markup;¤Î°ìÉô¤Ç¤â¡¤Ê¸»ú¥Ç¡¼¥¿¤Î°ìÉô¤Ç¤â¤Ê¤¤¡£XML&processor;¤Ï¡¤UTF-8¤ÇÉä¹æ²½¤·¤¿Ê¸½ñ¤ÈUTF-16¤ÇÉä¹æ²½¤·¤¿Ê¸½ñ¤È¤Î¶èÊ̤ò¹Ô¤¦¤¿¤á¤Ë¡¤¤³¤Îʸ»ú¤ò»ÈÍѲÄǽ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+<p>XML&processor;¤Ï¡¤UTF-8µÚ¤ÓUTF-16¤ÇÉä¹æ²½¤·¤¿¼ÂÂΤÀ¤±¤òÆɤळ¤È¤òɬ¿Ü¤È¤¹¤ë¤¬¡¤Â¾¤ÎÉä¹æ²½¤òÀ¤³¦¤Ç¤ÏÍѤ¤¤Æ¤ª¤ê¡¤¤½¤ì¤é¤ÎÉä¹æ²½¤òÍѤ¤¤ë¼ÂÂΤòXML&processor;¤¬½èÍý¤Ç¤­¤ë¤³¤È¤¬Ë¾¤Þ¤·¤¤¡£UTF-8Ëô¤ÏUTF-16°Ê³°¤ÎÉä¹æ²½Êý¼°¤òÍѤ¤¤Æ³ÊǼ¤¹¤ë&parsed-entity;¤Ï¡¤Éä¹æ²½Àë¸À¤ò´Þ¤à<titleref href='TextDecl'>¥Æ¥­¥¹¥ÈÀë¸À</titleref>¤Ç»Ï¤á¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+<scrap lang='ebnf'>
+<head>Éä¹æ²½Àë¸À</head>
+<prod id='NT-EncodingDecl'><lhs>EncodingDecl</lhs>
+<rhs><nt def="NT-S">S</nt>
+'encoding' <nt def='NT-Eq'>Eq</nt>
+'"' <nt def='NT-EncName'>EncName</nt> '"' | "'"
+<nt def='NT-EncName'>EncName</nt> "'"
+</rhs>
+</prod>
+<prod id='NT-EncName'><lhs>EncName</lhs>
+<rhs>[A-Za-z] ([A-Za-z0-9._] | '-')*</rhs>
+<com>¥é¥Æ¥óʸ»ú¤À¤±¤ò´Þ¤àÉä¹æ²½Ì¾</com>
+</prod>
+</scrap>
+<termref def='dt-docent'>ʸ½ñ¼ÂÂÎ</termref>¤Ç¤Ï¡¤Éä¹æ²½Àë¸À¤Ï¡¤<termref def="dt-xmldecl">XMLÀë¸À</termref>¤Î°ìÉô¤È¤¹¤ë¡£<nt def="NT-EncName">EncName</nt>¤Ï¡¤»ÈÍѤ¹¤ëÉä¹æ²½Êý¼°¤Î̾Á°¤È¤¹¤ë¡£
+</p>
+<!-- FINAL EDIT: check name of IANA and charset names -->
+<p>Éä¹æ²½Àë¸À¤Ç¤Ï¡¤ÃÍ<code>UTF-8</code>¡¤<code>UTF-16</code>¡¤<code>ISO-10646-UCS-2</code>µÚ¤Ó<code>ISO-10646-UCS-4</code>¤Ï¡¤UnicodeµÚ¤ÓISO/IEC 10646¤Î³Æ¼ïÉä¹æ²½¤Î¤¿¤á¤ËÍѤ¤¤ë¡£ÃÍ<code>ISO-8859-1</code>¤«¤é<code>ISO-8859-9</code>¤Þ¤Ç¤Ï¡¤ISO 8859¤ÎÂбþ¤¹¤ë¥Ñ¡¼¥È¤Î¤¿¤á¤ËÍѤ¤¤ë¡£ÃÍ<code>ISO-2022-JP</code>¡¤<code>Shift_JIS</code>µÚ¤Ó<code>EUC-JP</code>¤Ï¡¤JIS X-0208-1997¤Î³Æ¼ïÉä¹æ²½¤Î¤¿¤á¤ËÍѤ¤¤ë¡£XML&processor;¤Ï¡¤¤½¤ì°Ê³°¤ÎÉä¹æ²½Êý¼°¤òǧ¼±¤·¤Æ¤â¤è¤¤¡£Internet Assigned Numbers Authority (IANA)¤Ë¡¤(<emph>charset</emph>s¤È¤·¤Æ)ÅÐÏ¿¤µ¤ì¤¿Ê¸»úÉä¹æ²½Êý¼°¤Ë¤Ä¤¤¤Æ¤Ï¡¤¤³¤ì¤é°Ê³°¤Ë¤Ä¤¤¤Æ¤â¡¤ÅÐÏ¿¤µ¤ì¤¿Ì¾Á°¤Ç»²¾È¤¹¤ë¤³¤È¤¬Ë¾¤Þ¤·¤¤¡£¤³¤ì¤é¤ÎÅÐÏ¿¤µ¤ì¤¿Ì¾Á°¤Ï¡¤Âçʸ»ú¡¦¾®Ê¸»ú¤Î¶èÊ̤ò¤»¤º¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¤¤³¤ì¤é¤ËÂФ¹¤ëÈæ³Ó¤ò»î¤ß¤ë&processor;¤Ï¡¤Âçʸ»ú¡¦¾®Ê¸»ú¤Î¶èÊ̤ò¤·¤Ê¤¤ÊýË¡¤ò¤È¤ë¤Î¤¬Ë¾¤Þ¤·¤¤¤³¤È¤ËÃí°Õ¤¹¤ë¡£</p>
+<p>XML½èÍý·Ï¤ËÅϤµ¤ì¤¿¼ÂÂΤ¬¡¤Éä¹æ²½Àë¸À¤ò´Þ¤à¤Ë¤â¤«¤«¤ï¤é¤º¡¤Àë¸À¤Ç¼¨¤·¤¿¤â¤Î°Ê³°¤ÎÊý¼°¤ÇÉä¹æ²½¤µ¤ì¤Æ¤¤¤¿¤ê¡¤Éä¹æ²½Àë¸À¤¬¡¤³°Éô¼ÂÂΤκǽé°Ê³°¤Î°ÌÃ֤˽и½¤¹¤ì¤Ð¡¤<termref def="dt-error">&error;</termref>¤È¤¹¤ë¡£
+</p>
+<p>&byte-order-mark;¤Ç¤âÉä¹æ²½Àë¸À¤Ç¤â»Ï¤Þ¤é¤Ê¤¤¼ÂÂΤϡ¤UTF-8Éä¹æ²½¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+
+<p><!-- XML processors should make an effort to use all available
+information, internal and external, to aid in detecting an entity's correct
+encoding. Such information may include, but is not limited to:
+<ulist><item><p>An HTTP header</p></item>
+<item><p>A MIME header obtained other than through HTTP</p></item>
+<item><p>Metadata provided by the native OS file system or by document
+management software</p></item>
+<item><p>The bit patterns at the front of an entity, which may
+be analyzed to determine if
+the application of any known encoding yields a valid encoding
+declaration. See <titleref href='sec-guessing'>the appendix on
+autodetection of character sets</titleref>
+for a fuller description.</p></item></ulist> -->
+½èÍý¤Ç¤­¤Ê¤¤Éä¹æ²½¤ò¤â¤Ã¤¿¼ÂÂΤòXML&processor;¤¬È¯¸«¤·¤¿¤È¤­¤Ï¡¤&application;¤Ë¤½¤Î»ö¼Â¤òÄÌÃΤ·¡¤<termref def='dt-fatal'>&fatal-error;</termref>¤È¤·¤Æ¡¤½èÍý¤ò½ªÎ»¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+<!--
+inform the application of this fact and
+may
+allow the application to
+request either that the entity should be treated as an <termref
+def="dt-unparsed">unparsed entity</termref>, or that processing should
+cease.-->
+</p>
+<p>Éä¹æ²½Àë¸À¤ÎÎã¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<eg>&lt;?xml encoding='UTF-8'?>
+&lt;?xml encoding='EUC-JP'?></eg></p>
+</div3>
+</div2>
+<div2 id='entproc'>
+<head>XML&processor;¤Ë¤è¤ë¼ÂÂεڤӻ²¾È¤Î°·¤¤</head>
+<p>¼¡¤Îɽ¤Ï¡¤Ê¸»ú»²¾È¡¤¼ÂÂλ²¾ÈµÚ¤Ó&unparsed-entity;¤Î¸Æ½Ð¤·¤¬¸½¤ì¤ëʸ̮µÚ¤Ó³Æ¡¹¤Î¾ì¹ç¤Ë¤ª¤±¤ë<termref def='dt-xml-proc'>XML&processor;</termref>¤ËÍ׵᤹¤ë¿¶Éñ¤¤¤òÍ×Ì󤹤롣°ìÈÖº¸¤ÎÎó¤Î¥é¥Ù¥ë¤Ï¡¤Ç§¼±¤Îʸ̮¤ò¼¨¤¹¡£
+<glist>
+<gitem><label>ÆâÍƤˤª¤±¤ë»²¾È</label>
+<def><p>Í×ÁǤÎ<termref def='dt-stag'>³«»Ï¥¿¥°</termref>µÚ¤Ó<termref def='dt-etag'>½ªÎ»¥¿¥°</termref>¤Î´Ö¤ÎǤ°Õ¤Î¾ì½ê¤Ç¤Î»²¾È¡£Èó½ªÃ¼µ­¹æ<nt def='NT-content'>content</nt>¤ËÂбþ¤¹¤ë¡£</p></def>
+</gitem>
+<gitem>
+<label>°À­Ãͤˤª¤±¤ë»²¾È</label>
+<def><p><termref def='dt-stag'>³«»Ï¥¿¥°</termref>¤Î°À­¤ÎÃÍ¡¤Ëô¤Ï<termref def='dt-attdecl'>°À­Àë¸À</termref>¤Ë¤ª¤±¤ë&default-value;¤Î¤¤¤º¤ì¤«¤Ç¤Î»²¾È¡£Èó½ªÃ¼µ­¹æ<nt def='NT-AttValue'>AttValue</nt>¤ËÂбþ¤¹¤ë¡£</p></def></gitem>
+<gitem>
+<label>°À­ÃͤȤ·¤Æ½Ð¸½</label>
+<def><p>»²¾È¤Ç¤Ï¤Ê¤¯¡¤<nt def='NT-Name'>Name</nt>¤È¤·¤Æ½Ð¸½¡£<code>ENTITY</code>·¿¤È¤·¤ÆÀë¸À¤·¤¿Â°À­¤ÎÃÍ¡¤Ëô¤Ï<code>ENTITIES</code>·¿¤È¤·¤ÆÀë¸À¤·¤¿Â°À­¤ÎÃͤˤª¤±¤ë&space;¤Ç¶èÀÚ¤ë&token;¤Î°ì¤Ä¤È¤·¤Æ½Ð¸½¤¹¤ë¡£</p>
+</def></gitem>
+<gitem><label>¼ÂÂÎÃͤˤª¤±¤ë»²¾È</label>
+<def><p>¼ÂÂΤÎÀë¸À¤Ë¤ª¤±¤ë¡¤¥Ñ¥é¥á¥¿Ëô¤ÏÆâÉô¼ÂÂΤÎ<termref def='dt-litentval'>&literal;¼ÂÂÎÃÍ</termref>Æâ¤Î»²¾È¡£Èó½ªÃ¼µ­¹æ<nt def='NT-EntityValue'>EntityValue</nt>¤ËÂбþ¤¹¤ë¡£</p></def></gitem>
+<gitem><label>DTD¤Ë¤ª¤±¤ë»²¾È</label>
+<def><p><termref def='dt-doctype'>DTD</termref>¤ÎÆâÉô&subset;Ëô¤Ï³°Éô&subset;¤Ç¤Î»²¾È¡£¤¿¤À¤·¡¤<nt def='NT-EntityValue'>EntityValue</nt>Ëô¤Ï<nt def="NT-AttValue">AttValue</nt>¤Î³°Â¦¤È¤¹¤ë¡£</p></def>
+</gitem>
+</glist></p>
+<!-- border value changed by bosak -->
+<htable border='1' cellpadding='7' align='center'>
+<!-- tbody wrapper added by bosak -->
+<htbody>
+<tr><td bgcolor='&cellback;' rowspan='2' colspan='1'></td>
+<td bgcolor='&cellback;' align='center' valign='bottom' colspan='4'>¼ÂÂΤη¿</td>
+<td bgcolor='&cellback;' rowspan='2' align='center'>ʸ»ú</td>
+</tr>
+<tr align='center' valign='bottom'>
+<td bgcolor='&cellback;'>¥Ñ¥é¥á¥¿</td>
+<td bgcolor='&cellback;'>ÆâÉô&newline;°ìÈÌ</td>
+<td bgcolor='&cellback;'>³°Éô&newline;&parsed-entity;&newline;°ìÈÌ</td>
+<td bgcolor='&cellback;'>&unparsed-entity;</td>
+</tr>
+<tr align='center' valign='middle'>
+<!--<td bgcolor='&cellback;' rowspan='4'>Recognition
+Context</td>-->
+<td bgcolor='&cellback;' align='right'>ÆâÍƤǤÎ&newline;»²¾È</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>ǧ¼±&newline;¤·¤Ê¤¤</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>¼è¹þ¤ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='include-if-valid'>¸¡¾Ú¤Î¤¿¤á¤Ë¼è¹þ¤ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>¶Ø»ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>¼è¹þ¤ß</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>°À­ÃͤǤÎ&newline;»²¾È</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>ǧ¼±&newline;¤·¤Ê¤¤</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>¼è¹þ¤ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>¶Ø»ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>¶Ø»ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>¼è¹þ¤ß</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>°À­ÃͤȤ·¤Æ&newline;½Ð¸½</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>ǧ¼±&newline;¤·¤Ê¤¤</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>¶Ø»ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>¶Ø»ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='notify'>ÄÌÃÎ</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not recognized'>ǧ¼±&newline;¤·¤Ê¤¤</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>¼ÂÂÎÃͤǤÎ&newline;»²¾È</td>
+<td bgcolor='&cellback;'><titleref href='included'>¼è¹þ¤ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='bypass'>&bypass;</titleref></td>
+<td bgcolor='&cellback;'><titleref href='bypass'>&bypass;</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>¶Ø»ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>¼è¹þ¤ß</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>DTD¤Ç¤Î&newline;»²¾È</td>
+<td bgcolor='&cellback;'><titleref href='as-PE'>PE¤È¤·¤Æ&newline;¼è¹þ¤ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>¶Ø»ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>¶Ø»ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>¶Ø»ß</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>¶Ø»ß</titleref></td>
+</tr>
+</htbody>
+</htable>
+<div3 id='not-recognized'>
+<head>¡Èǧ¼±¤·¤Ê¤¤¡É</head>
+<p>DTD¤Î³°¤Ç¤Ï¡¤<code>%</code>ʸ»ú¤Ï¡¤¤¤¤«¤Ê¤ëÆÃÄê¤Î°ÕÌ£¤â¡¤¤â¤¿¤Ê¤¤¡£¤·¤¿¤¬¤Ã¤Æ¡¤DTD¤Ç¤Ï¥Ñ¥é¥á¥¿¼ÂÂλ²¾È¤È¤·¤Æǧ¼±¤¹¤ë¤â¤Î¤Ç¤¢¤Ã¤Æ¤â¡¤<nt def='NT-content'>content</nt>Æâ¤Ç¤Ï&markup;¤È¤·¤Æ¤Ïǧ¼±¤·¤Ê¤¤¡£Æ±Íͤˡ¤Å¬ÀÚ¤ËÀë¸À¤·¤¿Â°À­¤ÎÃͤÎÃæ¤Ë¸½¤ì¤ë¾ì¹ç¤ò½ü¤­¡¤&unparsed-entity;¤Î̾Á°¤Ï¡¤Ç§¼±¤·¤Ê¤¤¡£
+</p>
+</div3>
+<div3 id='included'>
+<head>¡È¼è¹þ¤ß¡É</head>
+<p><termdef id="dt-include" term="Include">¼ÂÂΤϡ¤¤½¤Î<termref def='dt-repltext'>&replacement-text;</termref>¤ò¼è¤ê½Ð¤·¡¤½èÍý¤¹¤ë¤È¡¤»²¾È¼«ÂΤÎÂå¤ï¤ê¤Ë¡¤»²¾È¤¬¤¢¤Ã¤¿°ÌÃ֤ǡ¤Ê¸½ñ¤Î°ìÉô¤È¤·¤Æ´Þ¤Þ¤ì¤ë¤«¤Î¤è¤¦¤Ë<term>¼è¤ê¹þ¤Þ¤ì¤ë</term>¡£&replacement-text;¤Ï¡¤<termref def='dt-chardata'>ʸ»ú¥Ç¡¼¥¿</termref>µÚ¤Ó(¥Ñ¥é¥á¥¿¼ÂÂΤò½ü¤¯¡£)<termref def="dt-markup">&markup;</termref>¤Î¤¤¤º¤ì¤ò´Þ¤ó¤Ç¤â¤è¤¯¡¤¤³¤ì¤é¤Ï¡¤Ä̾ï¤ÎÊýË¡¤Çǧ¼±¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤¿¤À¤·¡¤&markup;¤Î¶èÀÚ¤ê»Ò¤ò&escape;¤¹¤ë¤¿¤á¤ËÍѤ¤¤ë¼ÂÂÎ(&magicents;)¤Î&replacement-text;¤Ï¡¤¾ï¤Ë¥Ç¡¼¥¿¤È¤·¤Æ°·¤¦(&string;"<code>AT&amp;amp;T;</code>"¤Ï¡¤"<code>AT&amp;T;</code>"¤ËŸ³«¤µ¤ì¡¤»Ä¤µ¤ì¤¿¥¢¥ó¥Ñ¥µ¥ó¥É¤Ï¡¤¼ÂÂλ²¾È¤Î¶èÀÚ¤ê»Ò¤È¤·¤Æ¤Ïǧ¼±¤·¤Ê¤¤¡£)¡£Ê¸»ú»²¾È¤Ï¡¤¼¨¤·¤¿Ê¸»ú¤ò»²¾È¼«ÂΤÎÂå¤ï¤ê¤Ë½èÍý¤¹¤ë¤È¤­¡¤<term>¼è¤ê¹þ¤Þ¤ì¤ë</term>¡£
+</termdef></p>
+</div3>
+<div3 id='include-if-valid'>
+<head>¡È¸¡¾Ú¤Î¤¿¤á¤Ë¼è¹þ¤ß¡É</head>
+<p>ʸ½ñ¤Î&validity;¤ò<termref def="dt-valid">¸¡¾Ú</termref>¤¹¤ë¤Ë¤Ï¡¤XML&processor;¤¬&parsed-entity;¤Ø¤Î»²¾È¤òǧ¼±¤·¤¿¤È¤­¡¤¤½¤Î&replacement-text;¤ò<termref def="dt-include">¼è¤ê¹þ¤Þ</termref>¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¼ÂÂΤ¬³°Éô¼ÂÂΤǤ¢¤Ã¤Æ¡¤XMLʸ½ñ¤Î&validity;¤ò¸¡¾Ú¤·¤Ê¤±¤ì¤Ð¡¤¼ÂÂΤÎ&replacement-text;¤ò¼è¤ê¹þ¤ó¤Ç¤â<termref def="dt-may">¤è¤¤</termref>¤¬¡¤¤½¤¦¤·¤Ê¤¯¤È¤â¤è¤¤¡£</p>
+<p>¤³¤Î¼è·è¤á¤Ï¡¤SGMLµÚ¤ÓXML¤Î¼ÂÂΤε¡¹½¤¬Ä󶡤¹¤ë¼«Æ°¼è¹þ¤ßµ¡Ç½¤¬¡¤Ê¸½ñºîÀ®»þ¤Î¥â¥¸¥å¡¼¥ë²½¤ò¼ç¤ÊÌÜŪ¤È¤·¤ÆÀ߷פµ¤ì¤Æ¤ª¤ê¡¤¤½¤Î¾¤Î&application;(Æäˡ¤Ê¸½ñ¤Î¥Ö¥é¥¦¥º)¤Ë¤Ï¡¤É¬¤º¤·¤âŬÀڤǤϤʤ¤¡¤¤È¤¤¤¦Ç§¼±¤Ë¤è¤ë¡£Î㤨¤Ð¡¤¥Ö¥é¥¦¥¶¤Ï³°Éô&parsed-entity;¤Ø¤Î»²¾È¤ò¸«¤Ä¤±¤ë¤È¡¤¤½¤Î¼ÂÂΤ¬Â¸ºß¤¹¤ë¤È¤¤¤¦É½¼¨¤À¤±¤ò¹Ô¤¤¡¤É½¼¨¤òÍ׵ᤵ¤ì¤¿¤È¤­¤Ë¤À¤±¡¤ÆâÍƤò¼è¤ê½Ð¤¹¤«¤â¤·¤ì¤Ê¤¤¡£
+</p>
+</div3>
+<div3 id='forbidden'>
+<head>¡È¶Ø»ß¡É</head>
+<p>¼¡¤Ï¶Ø»ß¤µ¤ì¤Æ¤ª¤ê¡¤<termref def='dt-fatal'>&fatal-error;</termref>¤È¤¹¤ë¡£
+<ulist>
+<item><p>a) <termref def='dt-unparsed'>&unparsed-entity;</termref>¤Ø¤Î»²¾È¤Î½Ð¸½¡£
+</p></item>
+<item><p>b) DTD¤Î<nt def='NT-EntityValue'>EntityValue</nt>Ëô¤Ï<nt def="NT-AttValue">AttValue</nt>°Ê³°¤ÎÉôʬ¤Ë¤ª¤±¤ë¡¤Ê¸»ú»²¾ÈËô¤Ï°ìÈ̼ÂÂΤؤλ²¾È¤Î½Ð¸½¡£</p></item>
+<item><p>c) °À­ÃÍÆâ¤Î³°Éô¼ÂÂΤؤλ²¾È¡£</p>
+</item>
+</ulist>
+</p>
+</div3>
+<div3 id='notify'>
+<head>¡ÈÄÌÃΡÉ</head>
+<p><termref def='dt-unparsed'>&unparsed-entity;</termref>¤Î̾Á°¤¬¡¤<kw>ENTITY</kw>Ëô¤Ï<kw>ENTITIES</kw>¤Î°À­¤ÎÃͤˤª¤¤¤Æ&token;¤È¤·¤Æ¸½¤ì¤¿¤È¤­¡¤&processor;¤Ï¡¤&application;¤ËÂФ·¤Æ¡¤´ØÏ¢ÉÕ¤±¤é¤ì¤¿<termref def="dt-notation">µ­Ë¡</termref>̾¡¤µ­Ë¡¤ËÂФ¹¤ë<termref def='dt-sysid'>¥·¥¹¥Æ¥à</termref>&identifier;µÚ¤Ó(¸ºß¤¹¤ì¤Ð)<termref def='dt-pubid'>¸ø³«</termref>&identifier;¤òÄÌÃΤ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+</div3>
+<div3 id='bypass'>
+<head>¡È&bypass;¡É</head>
+<p>°ìÈ̼ÂÂλ²¾È¤¬¡¤¼ÂÂÎÀë¸À¤Ë¤ª¤±¤ë<nt def='NT-EntityValue'>EntityValue</nt>Æâ¤Ë¸½¤ì¤ë¤È¤­¡¤¤½¤ì¤Ï̵»ë¤µ¤ì¡¤¤½¤Î¤Þ¤Þ»Ä¤ë¡£</p>
+</div3>
+<div3 id='as-PE'>
+<head>¡ÈPE¤È¤·¤Æ¼è¹þ¤ß¡É</head>
+<p>³°Éô&parsed-entity;¤Î¾ì¹ç¤ÈƱÍͤˡ¤¥Ñ¥é¥á¥¿¼ÂÂΤϡ¤&validity;¤ò<titleref href='include-if-valid'>¸¡¾Ú¤¹¤ë¤È¤­¤À¤±¼è¤ê¹þ¤Þ¤ì¤ë</titleref>ɬÍפ¬¤¢¤ë¡£¥Ñ¥é¥á¥¿¼ÂÂλ²¾È¤òDTDÆâ¤Ëǧ¼±¤·¤Æ¼è¤ê¹þ¤à¤È¤­¡¤¤½¤Î<termref def='dt-repltext'>&replacement-text;</termref>¤Ï¡¤¤½¤ÎÁ°¸å¤Ë°ì¤Ä¤Î&space-character;(#x20)¤ÎÉղäˤè¤Ã¤Æ°ú¤­¿­¤Ð¤µ¤ì¤ë¡£¤³¤Î°Õ¿Þ¤Ï¡¤¥Ñ¥é¥á¥¿¼ÂÂΤÎ&replacement-text;¤¬¡¤DTDÆâ¤Î¤¤¤¯¤Ä¤«¤ÎʸˡŪ&token;¤ò´°Á´¤Ë´Þ¤à¤È¡¤À©Ì󤹤뤳¤È¤Ë¤¢¤ë¡£
+</p>
+</div3>
+<!--
+<div3 id='gen-char-entproc'>
+<head>General and Character Entity Processing</head>
+<p>General-entity and character references are recognized in three
+contexts: wherever the nonterminal <nt def='NT-content'>content</nt> may
+appear, at any point within the nonterminal
+<nt def='NT-AttValue'>AttValue</nt>,
+and within the
+<termref def='dt-litentval'>literal entity value</termref>
+(<nt def='NT-EntityValue'>EntityValue</nt>)
+of an internal entity declaration.
+This section discusses the first two cases; the third
+is discussed <titleref href='intern-replacement'>below</titleref>.
+When an <termref def="dt-xml-proc">XML processor</termref> encounters
+such a reference, or the name of an unparsed entity as the value
+of an <kw>ENTITY</kw> or <kw>ENTITIES</kw> attribute, then:
+<olist>
+
+<item><p>In all cases, the XML processor may
+inform the application of the reference's occurrence and its identifier
+(for an entity reference, the name; for a character
+reference,
+the character number in decimal, hexadecimal, or binary form).</p></item>
+
+<item><p>For both character and entity references, the processor must
+remove the reference itself from the <termref def="dt-text">text</termref> data
+before passing the data to the application.
+</p></item>
+
+<item><p>For character references, the processor must
+pass the character indicated
+to the application in
+place of the reference.
+</p></item>
+
+<item><p>For an external entity, the processor must inform the
+application of the entity's <termref def="dt-sysid">system
+identifier</termref>, and <termref def="dt-pubid">public identifier</termref>
+if any.
+All strings
+of white space in the public identifier must be normalized to single space characters (#x20),
+and leading and trailing white space must be removed.</p></item>
+
+<item><p>If the external entity is binary, the processor must inform the
+application of the associated <termref def="dt-notation">notation</termref>
+name, and the notation's associated <termref def='dt-sysid'>system</termref>
+and <termref def='dt-pubid'>public</termref> (if any)
+identifiers.</p></item>
+
+<item><p><termdef id="dt-include" term="Include">For an internal
+(parsed) entity, the processor must <term>include</term> the
+entity; that is, retrieve its replacement text
+and process it as a part of the document
+(i.e. as <nt def="NT-content">content</nt> or <nt
+def="NT-AttValue">AttValue</nt>, whichever was being processed when
+the reference was recognized), passing the result to the application
+in place of the reference. The replacement text may contain both
+<termref def='dt-chardata'>character data</termref>
+and <termref def="dt-markup">markup</termref>, which must be recognized in
+the usual way, except that the replacement text of entities used to escape
+markup delimiters (the entities &magicents;) is always treated as
+data. (The string "<code>AT&amp;amp;T;</code>" expands to
+"<code>AT&amp;T;</code>" since the ampersand replacing "<code>&amp;amp;</code>"
+is not recognized
+as an entity-reference delimiter.) </termdef></p>
+<p>Since the entity may contain other entity references,
+an XML processor may have to repeat the inclusion process recursively.</p>
+</item>
+<item><p>If the entity is an external parsed entity, then in order to
+<termref def="dt-valid">validate</termref> the XML document, the processor must
+<termref def="dt-include">include</termref> the content of the
+entity.</p></item>
+
+<item><p>If the entity is an external parsed entity, and the processor is not
+attempting to <termref def="dt-valid">validate</termref> the XML document, the
+processor <termref def="dt-may">may</termref>, but need not, <termref
+def="dt-include">include</termref> the entity's content.</p>
+<p>This rule is based on the recognition that the automatic inclusion
+provided by the SGML and XML entity mechanism, primarily designed
+to support modularity in authoring, is not necessarily
+appropriate for other applications, in particular document browsing.
+Browsers, for example, when encountering an external parsed entity reference,
+might choose to provide a visual indication of the entity's
+presence and retrieve it for display only on demand.
+</p></item>
+</olist>
+</p>
+<p><termdef id="dt-escape" term="escape">Entity and character
+references can both be used to <term>escape</term> the left angle bracket,
+ampersand, and other delimiters. A set of general entities
+(&magicents;) is specified for this purpose.
+Numeric character references may also be used; they are
+expanded immediately when recognized, and must be treated as
+character data, so the numeric character references
+"<code>&amp;#60;</code>" and "<code>&amp;#38;</code>" may be used to
+escape <code>&lt;</code> and <code>&amp;</code> when they occur
+in character data.</termdef></p>
+</div3>
+<div3 id='PE-proc'>
+<head>Parameter Entity Processing</head>
+<p>Parameter-entity references are only recognized in the
+<termref def='dt-doctype'>DTD</termref>.
+Their processing, when they appear
+within the
+<termref def='dt-litentval'>literal entity value</termref>
+(<nt def='NT-EntityValue'>EntityValue</nt>)
+of an internal entity declaration,
+is discussed <titleref href='intern-replacement'>below</titleref>.
+They have these intended uses:
+<olist>
+<item><p>as a replacement for one or more complete markup declarations</p></item>
+<item><p>as a replacement for one or more complete "groups" in
+element declarations</p></item>
+<item><p>as a replacement for one or more complete "tokens" in
+markup declarations</p></item>
+</olist>
+</p>
+<p>The constraints requiring that PE replacement texts be properly nested
+with <titleref href='vc-PEinMarkupDecl'>markup declarations</titleref>
+and <titleref href='vc-PEinGroup'>content groups</titleref>
+govern the first two usages.</p>
+<p>To support the third intended usage,
+when an XML processor encounters a parameter-entity reference
+(outside of the
+<termref def='dt-litentval'>literal entity value</termref> in an entity
+declaration),
+it must <termref def="dt-include">include</termref>
+the named entity, but first expand its
+<termref def='dt-repltext'>replacement text</termref> by attaching
+space (#x20) characters to its beginning and the end, before
+processing it.</p>
+<p>The DTD text must match the relevant
+rules of this specification's grammar after all parameter-entity
+references have been expanded.
+<!-In addition, parameter entities referred to in specific
+contexts are required to satisfy certain constraints in their
+replacement text; for example, a parameter entity referred to within
+the internal DTD subset must match the rule for <nt
+def="NT-markupdecl">markupdecl</nt>. ->
+</p>
+</div3>
+-->
+</div2>
+<div2 id='intern-replacement'>
+<head>ÆâÉô¼ÂÂÎ&replacement-text;¤Î¹½ÃÛ</head>
+<p>ÆâÉô¼ÂÂΤμ谷¤¤¤Îµ¬Äê¤Ç¡¤¼ÂÂÎÃͤòÆó¤Ä¤Î·Á¼°¤Ë¶èÊ̤¹¤ë¤³¤È¤ÏÌò¤ËΩ¤Ä¡£<termdef id="dt-litentval" term='Literal Entity Value'><term>&literal;¼ÂÂÎÃÍ</term>¤Ï¡¤¼ÂÂÎÀë¸ÀÆâ¤Ë¼ÂºÝ¤Ë¸ºß¤¹¤ë¡¤°úÍÑÉä¤Ç°Ï¤à&string;¤È¤¹¤ë¡£¤³¤ì¤Ï¡¤Èó½ªÃ¼µ­¹æ<nt def='NT-EntityValue'>EntityValue</nt>¤Ë&match;¤¹¤ë¡£</termdef><termdef id='dt-repltext' term='Replacement Text'><term>&replacement-text;</term>¤Ï¡¤Ê¸»ú»²¾ÈµÚ¤Ó&parameter;¼ÂÂλ²¾È¤ÎÃÖ´¹¤¨¸å¤Ë¤ª¤±¤ë¡¤¼ÂÂΤÎÆâÍƤȤ¹¤ë¡£</termdef></p>
+
+<p>ÆâÉô¼ÂÂÎÀë¸ÀÆâ¤ÇÍ¿¤¨¤ë&literal;¼ÂÂÎÃÍ<!-- replacement text -->(<nt def='NT-EntityValue'>EntityValue</nt>)¤Ï¡¤Ê¸»ú»²¾È¡¤&parameter;¼ÂÂλ²¾ÈµÚ¤Ó°ìÈ̼ÂÂλ²¾È¤ò´Þ¤ó¤Ç¤è¤¤¡£¤³¤ì¤é¤Î»²¾È¤Ï¡¤<!-- replacement text. -->&literal;¼ÂÂÎÃÍÆâ¤Ë´°Á´¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£<termref def='dt-include'>Ÿ³«¤¹¤ë</termref>¼ÂºÝ¤Î&replacement-text;(Àè¤Ë¼¨¤·¤¿¤â¤Î)¤Ï¡¤»²¾È¤¹¤ë&parameter;¼ÂÂΤÎ<emph>&replacement-text;</emph>¤ò´Þ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¤&literal;¼ÂÂÎÃÍÆâ¤Ç¤Îʸ»ú»²¾È¤ÎÂå¤ï¤ê¤Ë»²¾È¤·¤¿Ê¸»ú¤ò´Þ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤·¤«¤·¡¤°ìÈ̼ÂÂλ²¾È¤Ï¡¤¤½¤Î¤Þ¤Þ»Ä¤·, Ÿ³«¤·¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
+<!-- in the replacement text that is to be included. -->
+Î㤨¤Ð¡¤¼¡¤ÎÀë¸À¤òÍ¿¤¨¤¿¤È¤¹¤ë¡£
+
+<eg><![CDATA[<!ENTITY % pub "&#xc9;ditions Gallimard" >
+<!ENTITY rights "All rights reserved" >
+<!ENTITY book "La Peste: Albert Camus,
+&#xA9; 1947 %pub;. &rights;" >]]></eg>
+¼ÂÂΤÎ&replacement-text;"<code>book</code>"¤Ï¡¤¼¡¤Î¤È¤ª¤ê¤È¤Ê¤ë¡£
+<eg>La Peste: Albert Camus,
+&#169; 1947 &#201;ditions Gallimard. &amp;rights;</eg>
+»²¾È"<code>&amp;book;</code>"¤¬¡¤Ê¸½ñ¤ÎÆâÍÆËô¤Ï°À­ÃÍÆâ¤Ë½Ð¸½¤·¤Æ¤¤¤ì¤Ð¡¤°ìÈ̼ÂÂλ²¾È"<code>&amp;rights;</code>"¤Ï¡¤Å¸³«¤µ¤ì¤Æ¤¤¤ë¡£</p>
+<p>¤³¤ì¤é¤Îñ½ã¤Êµ¬Â§¤Ï¡¤Ê£¹çÁê¸ßºîÍѤò¤â¤Ä¡£
+<!-- ÆüËܸìÌõ¤Ë¤Ä¤¤¤Æ¡§ interaction = Áê¸ßºîÍѡʶâËÜ¡Ë-->
+Æñ¤·¤¤Îã¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¤<titleref href='sec-entexpand'>¼ÂÂλ²¾È¤ÎŸ³«¤ÎÉÕÏ¿</titleref>¤ò»²¾È¤Î¤³¤È¡£
+</p>
+<!-- Replaced by the above -TB
+<p>Implementors of XML processors need to know the rules for
+expansion of references in more detail. These rules only come into
+play when the replacement text for an internal entity itself contains
+other references.
+<olist>
+<item><p>In the replacement text of an internal entity, parameter-entity
+references and character references in the replacement text
+are recognized and resolved
+when the entity declaration is parsed,
+before the replacement text is stored in
+the processor's symbol table.
+General-entity references in the replacement text are not
+resolved when the entity declaration is parsed.</p></item>
+<item><p>In the document, when a general-entity reference is
+resolved, its replacement text is parsed. Character references
+encountered in the replacement text are
+resolved immediately; general-entity references encountered in the
+replacement text may be resolved or left unresolved, as described
+<titleref href="entproc">above</titleref>.
+Character and general-entity references must be
+contained entirely within the entity's replacement text.
+</p></item>
+</olist>
+</p>
+
+<p>Simple character references do not suffice to escape delimiters
+within the replacement text of an internal entity: they will be
+expanded when the entity declaration is parsed, before the replacement
+text is stored in the symbol table. When the entity itself is
+referred to, the replacement text will be parsed again, and the
+delimiters (no longer character references)
+will be recognized as delimiters. To escape the
+characters &magicents; in an entity replacement text, use
+a general-entity reference or a doubly-escaped character reference.
+See <titleref href='sec-entexpand'>the appendix on expansion
+of entity references</titleref>
+for detailed examples.</p>
+-->
+
+
+</div2>
+<div2 id='sec-predefined-ent'>
+<head>ÄêµÁºÑ¤ß¼ÂÂÎ</head>
+<p><termdef id="dt-escape" term="escape">
+¼ÂÂλ²¾ÈµÚ¤Óʸ»ú»²¾È¤Î¤¤¤º¤ì¤â¡¤&left-angle-bracket;¡¤¥¢¥ó¥Ð¥µ¥ó¥ÉµÚ¤Ó¾¤Î¶èÀÚ¤ê»Ò¤ò<term>&escape;</term>¤¹¤ë¤¿¤á¤Ë»ÈÍѤǤ­¤ë¡£¤¤¤¯¤Ä¤«¤Î°ìÈ̼ÂÂΡÊ&magicents;¡Ë¤ò¡¤¤³¤ÎÌÜŪ¤Î¤¿¤á¤Ë»ØÄꤹ¤ë¡£¿ôÃͤˤè¤ëʸ»ú»²¾È¤â¡¤Æ±ÍͤÎÌÜŪ¤Î¤¿¤á¤Ë»ÈÍѤǤ­¤ë¡£Ê¸»ú»²¾È¤Ï¡¤Ç§¼±¤µ¤ì¤ë¤Èľ¤Á¤ËŸ³«¤µ¤ì¡¤Ê¸»ú¥Ç¡¼¥¿¤È¤·¤Æ°·¤ï¤ì¤ë¤Î¤Ç¡¤¿ôÃͤˤè¤ëʸ»ú»²¾È"<code>&amp;#60;</code>"µÚ¤Ó"<code>&amp;#38;</code>"¤Ï¡¤Ê¸»ú¥Ç¡¼¥¿Æâ¤Ë½Ð¸½¤¹¤ë<code>&lt;</code>µÚ¤Ó<code>&amp;</code>¤ò&escape;¤¹¤ë¤¿¤á¤Ë»ÈÍѤǤ­¤ë¡£</termdef></p>
+<p>¤¹¤Ù¤Æ¤ÎXML&processor;¤Ï¡¤Àë¸À¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ë´Ø·¸¤Ê¤¯¡¤¤³¤ì¤é¤Î¼ÂÂΤòǧ¼±¤·¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£<termref def='dt-interop'>Áê¸ß±¿ÍÑÀ­¤Î¤¿¤á</termref>¡¤&valid;¤ÊXMLʸ½ñ¤Ï¡¤¤³¤ì¤é¤Î¼ÂÂΤò»ÈÍѤ¹¤ëÁ°¤Ë¡¤Â¾¤Î¼ÂÂΤÈƱÍͤˡ¤Àë¸À¤¹¤ë¤³¤È¤¬Ë¾¤Þ¤·¤¤¡£¼ÂÂΤòÀë¸À¤¹¤ë¾ì¹ç¤Ï¡¤&replacement-text;¤ò&escape;¤¹¤ë°ìʸ»ú¤È¤¹¤ëÆâÉô¼ÂÂΤȤ·¤Æ¡¤¼¡¤Î¤È¤ª¤ê¤ËÀë¸À¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+<eg><![CDATA[<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+]]></eg>
+"<code>lt</code>"µÚ¤Ó"<code>amp</code>"Àë¸ÀÆâ¤Î"<code>&lt;</code>"µÚ¤Ó"<code>&amp;</code>"ʸ»ú¤Ï¡¤¼ÂÂΤÎÃÖ´¹¥Æ¥­¥¹¥È¤¬¡¤&well-formed;¤È¤Ê¤ë¤è¤¦¤ËÆó½Å¤Ë&escape;¤µ¤ì¤ë¤³¤È¤ËÃí°Õ¡£
+</p>
+</div2>
+
+
+<div2 id='Notations'>
+<head>µ­Ë¡Àë¸À</head>
+
+
+<p>
+<termdef id="dt-notation" term="Notation">
+<term>µ­Ë¡</term>¤Ï¡¤<termref def="dt-extent">&unparsed-entity;</termref>¤Î·Á¼°¤ò&identify;̾Á°¤«¡¤Ëô¤Ï<termref def="dt-pi">½èÍýÌ¿Îá</termref>¤ÎÂоݤȤ¹¤ë&application;¤ò&identify;̾Á°¤È¤¹¤ë¡£</termdef></p>
+<p><termdef id="dt-notdecl" term="Notation Declaration">
+<term>µ­Ë¡Àë¸À</term>¤Ï¡¤µ­Ë¡¤Î̾Á°µÚ¤Ó³°Éô&identifier;¤òÄ󶡤¹¤ë¡£¤³¤Î̾Á°¤Ï¡¤¼ÂÂεڤÓ°À­¥ê¥¹¥ÈÀë¸ÀʤӤË°À­»ØÄê¤ËÍѤ¤¤ë¡£³°Éô&identifier;¤Ï¡¤Í¿¤¨¤é¤ì¤¿µ­Ë¡¤Î¥Ç¡¼¥¿¤ò½èÍý¤Ç¤­¤ë¥Ø¥ë¥Ñ&application;¤ò¡¤XML&processor;Ëô¤Ï¥¯¥é¥¤¥¢¥ó¥È¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬Ãµ¤¹¤¿¤á¤Ë¡¤ÍøÍѤǤ­¤ë¡£
+<scrap lang='ebnf'>
+<head>µ­Ë¡Àë¸À</head>
+<prod id='NT-NotationDecl'><lhs>NotationDecl</lhs>
+<rhs>'&lt;!NOTATION' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>
+(<nt def='NT-ExternalID'>ExternalID</nt> |
+<nt def='NT-PublicID'>PublicID</nt>)
+<nt def='NT-S'>S</nt>? '>'</rhs></prod>
+<prod id='NT-PublicID'><lhs>PublicID</lhs>
+<rhs>'PUBLIC' <nt def='NT-S'>S</nt>
+<nt def='NT-PubidLiteral'>PubidLiteral</nt>
+</rhs></prod>
+</scrap>
+</termdef></p>
+<p>Àë¸À¤·¡¤Â°À­ÃÍ¡¤Â°À­ÄêµÁËô¤Ï¼ÂÂÎÀë¸À¤Ç»²¾È¤¹¤ë¤¹¤Ù¤Æ¤Îµ­Ë¡¤Ë¤Ä¤¤¤Æ¡¤XML&processor;¤Ï¡¤µ­Ë¡¤Î̾Á°µÚ¤Ó³°Éô&identifier;¤ò&application;¤ËÄ󶡤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤µ¤é¤Ë¡¤³°Éô&identifier;¤ò¡¤<termref def="dt-sysid">¥·¥¹¥Æ¥à&identifier;</termref>¡¤¥Õ¥¡¥¤¥ë̾Ëô¤Ï¤½¤Î¾¤Î¾ðÊó¤ËŸ³«¤·¤Æ¤â¤è¤¯¡¤¤³¤ì¤é¤òÍѤ¤¤Æ¡¤&application;¤Ï¡¤¤½¤Îµ­Ë¡¤Î¥Ç¡¼¥¿¤ò½èÍý¤¹¤ë&processor;¤òµ¯Æ°¤¹¤ë¡£(¤·¤«¤·¡¤XML&processor;Ëô¤Ï&application;¤¬Æ°ºî¤¹¤ë¥·¥¹¥Æ¥à¤Ç¤ÏÍøÍѤǤ­¤Ê¤¤µ­Ë¡¤ò¡¤XMLʸ½ñ¤¬Àë¸À¤·»²¾È¤·¤Æ¤â¡¤¤³¤ì¤Ï¡¤&error;¤È¤Ï¤·¤Ê¤¤¡£¡Ë</p>
+</div2>
+
+
+<div2 id='sec-doc-entity'>
+<head>ʸ½ñ¼ÂÂÎ</head>
+
+<p><termdef id="dt-docent" term="Document Entity"><term>ʸ½ñ¼ÂÂÎ</term>¤Ï¡¤¼ÂÂΤηÁÀ®¤¹¤ëÌÚ¹½Â¤¤Î&root;¤Ç¤¢¤Ã¤Æ¡¤<termref def="dt-xml-proc">XML&processor;</termref>¤¬¡¤½èÍý¤ò³«»Ï¤¹¤ëÃÏÅÀ¤È¤¹¤ë¡£</termdef>¤³¤Î&TR-or-Rec;¤Ï¡¤XML&processor;¤¬¡¤Ê¸½ñ¼ÂÂΤθºß¤¹¤ë¾ì½ê¤ò¤É¤Î¤è¤¦¤Ë¸«¤Ä¤±¤ë¤«¤Ï¡¤µ¬Äꤷ¤Ê¤¤¡£Â¾¤Î¼ÂÂΤȰۤʤꡤʸ½ñ¼ÂÂΤÏ̾Á°¤ò¤â¤¿¤º¡¤¤¤¤«¤Ê¤ë¼±Ê̤â¤Ê¤·¤Ë&processor;¤Ø¤ÎÆþÎÏ&stream;¤Ë½Ð¸½¤·¤Æ¤â¤è¤¤¡£</p>
+</div2>
+
+
+</div1>
+<!-- &Conformance; -->
+<div1 id='sec-conformance'>
+<head>Ŭ¹çÀ­</head>
+
+<p>Ŭ¹ç¤¹¤ë<termref def="dt-xml-proc">XML&processor;</termref>¤Ï¡¤&validating;¤â¤ÎµÚ¤Ó&non-validating;¤â¤Î¤Î¡¤Æó¤Ä¤ËʬÎव¤ì¤ë¡£</p>
+<p>&validating;¥·¥¹¥Æ¥àµÚ¤Ó&non-validating;¥·¥¹¥Æ¥à¤Ï¡¤¤³¤Î&TR-or-Rec;¤¬µ¬Äꤹ¤ë&well-formed;À©Ìó¤Ø¤Î°ãÈ¿¤òÊó¹ð¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+<p><termdef id="dt-validating" term="Validating Processor"><term>&validating;&processor;</term>¤Ï¡¤<termref def="dt-doctype">DTD</termref>Æâ¤ÎÀë¸À¤Ë¤è¤Ã¤Æ¼¨¤µ¤ì¤¿¡¤À©Ìó¤Ø¤Î°ãÈ¿¤òÊó¹ð¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤µ¤é¤Ë¡¤¤³¤Î&TR-or-Rec;¤¬µ¬Äꤹ¤ë&validity;À©Ìó¤Ø¤Î°ãÈ¿¤ò¡¤¤¹¤Ù¤ÆÊó¹ð¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+</termdef>
+</p>
+</div1>
+
+<div1 id='sec-notation'>
+<head>µ­Ë¡</head>
+
+<p>XML¤Î·Á¼°Åª¤Êʸˡ¤Ï¡¤´Êñ¤Ê³ÈÄ¥Backus-Naur Form(EBNF)µ­Ë¡¤Ë¤è¤Ã¤ÆÍ¿¤¨¤ë¡£Ê¸Ë¡¤Î³Æµ¬Â§¤Ï¡¤¼¡¤Î·Á¼°¤Ç¡¤µ­¹æ¤ò°ì¤ÄÄêµÁ¤¹¤ë¡£
+<eg>symbol ::= expression</eg></p>
+<p>µ­¹æ¤Ï¡¤Àµµ¬É½¸½¤ÇÄêµÁ¤¹¤ë¤È¤­¤ÏÂçʸ»ú¤Ç»Ï¤á¡¤¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¤¾®Ê¸»ú¤Ç»Ï¤á¤ë¡£&string;&literal;¤Ï¡¤°úÍÑÉä¤Ç°Ï¤à¡£
+<!--* The distinction between symbols which can and cannot be
+recognized using simple regular expressions may be used to set the
+boundary between an implementation's lexical scanner and its parser,
+but this specification neither constrains the placement of that
+boundary nor presupposes that all implementations will have one. *-->
+</p>
+
+<p>µ¬Â§¤Î±¦Â¦¤Î¼°Æâ¤Ç¤Ï¡¤°ì¤ÄËô¤ÏÊ£¿ô¤Îʸ»ú¤«¤é¤Ê¤ë&string;¤È&match;¤¹¤ë¤¿¤á¤Ë¡¤¼¡¤Î¼°¤ò»ÈÍѤ¹¤ë¡£
+<glist>
+<gitem>
+<label><code>#xN</code></label>
+<def><p>¤³¤³¤Ç¡¤<code>N</code>¤Ï16¿Ê¤ÎÀ°¿ô¤È¤¹¤ë¡£ISO/IEC 10646¤Îʸ»ú¤Ç¤¢¤Ã¤Æ¡¤Àµµ¬·Á(UCS-4)¤Î&code-value;¤òÉä¹æ¤Ê¤·2¿Ê¿ô¤È¤·¤Æ²ò¼á¤·¤¿¤È¤­¡¤»ØÄꤷ¤¿ÃͤÈÅù¤·¤¤¤â¤Î¤È&match;¤¹¤ë¡£<code>#xN</code>·Á¼°¤ÎÀèƬ¤Ë¥¼¥í¤¬¤¤¤¯¤Ä¤«¸½¤ì¤ë¤«¤Ï¡¤°ÕÌ£¤ò¤â¤¿¤Ê¤¤¡£&code-value;<!-- bit string -->¤Ë¤ª¤±¤ëÀèƬ¤Î¥¼¥í¤Î¿ô¤Ï¡¤Ê¸»ú¤ÎÉä¹æ²½¤Ë¤è¤Ã¤Æ·èÄꤵ¤ì¤ë¤Î¤Ç¡¤XML¤Ë¤È¤Ã¤Æ¤Ï°ÕÌ£¤¬¤Ê¤¤¡£
+</p></def>
+</gitem>
+<gitem>
+<label><code>[a-zA-Z]</code>, <code>[#xN-#xN]</code></label>
+<def><p>»ØÄꤷ¤¿ÈϰϤÎÃÍ(ξü¤ÎÃͤò´Þ¤à¡£¡Ë¤ò¤â¤ÄǤ°Õ¤Î<termref def='dt-character'>ʸ»ú</termref>¤È&match;¤¹¤ë¡£</p></def>
+</gitem>
+<gitem>
+<label><code>[^a-z]</code>, <code>[^#xN-#xN]</code></label>
+<def><p>»ØÄꤷ¤¿ÈÏ°Ï<emph>³°</emph>¤ÎÃͤò¤â¤ÄǤ°Õ¤Î<termref def='dt-character'>ʸ»ú</termref>¤È&match;¤¹¤ë¡£</p></def>
+</gitem>
+<gitem>
+<label><code>[^abc]</code>, <code>[^#xN#xN#xN]</code></label>
+<def><p>»ØÄꤷ¤¿Ê¸»ú°Ê³°¤ÎÃͤò¤â¤ÄǤ°Õ¤Î<termref def='dt-character'>ʸ»ú</termref>¤È&match;¤¹¤ë¡£</p></def>
+</gitem>
+<gitem>
+<label><code>"string"</code></label>
+<def><p>&double-quote;¤Ç°Ï¤à&string;&literal;¤È<termref def="dt-match">&match;¤·¤Æ¤¤¤ë</termref>&string;&literal;¤È&match;¤¹¤ë¡£</p></def>
+</gitem>
+<gitem>
+<label><code>'string'</code></label>
+<def><p>&single-quote;¤Ç°Ï¤à&string;&literal;¤È<termref def="dt-match">&match;¤·¤Æ¤¤¤ë</termref>&string;&literal;¤È&match;¤¹¤ë¡£</p></def>
+</gitem>
+</glist>
+¤³¤ì¤é¤Îµ­¹æ¤Ï¡¤¼¡¤Î·Á¼°¤ÎÁȹ礻¤Ç»ÈÍѤ¹¤ë¡£¤³¤³¤Ç¡¤<code>A</code>µÚ¤Ó<code>B</code>¤Ï¡¤Ã±½ã¤Ê¼°¤È¤¹¤ë¡£
+<glist>
+<gitem>
+<label>(<code>expression</code>)</label>
+<def><p><code>expression</code>¤Ï¡¤°ì¤Ä¤Î¤Þ¤È¤Þ¤ê¤È¤·¤Æ°·¤¤¡¤¤³¤³¤Ë¼¨¤¹Áȹ礻¤Ç»È¤Ã¤Æ¤â¤è¤¤¡£</p></def>
+</gitem>
+<gitem>
+<label><code>A?</code></label>
+<def><p><code>A</code>Ëô¤Ï²¿¤â¤Ê¤·¤È&match;¤¹¤ë(¥ª¥×¥·¥ç¥ó¤Î<code>A</code>)¡£</p></def>
+</gitem>
+<gitem>
+<label><code>A B</code></label>
+<def><p><code>A</code>¤Î¼¡¤Ë<code>B</code>¤¬½Ð¸½¤¹¤ë¤â¤Î¤È&match;¤¹¤ë¡£
+</p></def>
+</gitem>
+<gitem>
+<label><code>A | B</code></label>
+<def><p><code>A</code>Ëô¤Ï<code>B</code>¡¤¤¿¤À¤·¡¤Î¾Êý¤Ç¤Ï¤Ê¤¤¡¤¤È&match;¤¹¤ë¡£
+</p></def>
+</gitem>
+<gitem>
+<label><code>A - B</code></label>
+<def><p><code>A</code>¤È&match;¤¹¤ë¤¬¡¤<code>B</code>¤È¤Ï&match;¤·¤Ê¤¤¡¤Ç¤°Õ¤Î&string;¤È&match;¤¹¤ë¡£</p></def>
+</gitem>
+<gitem>
+<label><code>A+</code></label>
+<def><p><code>A</code>¤Î1²ó°Ê¾å¤Î·«ÊÖ¤·¤È&match;¤¹¤ë¡£</p></def>
+</gitem>
+<gitem>
+<label><code>A*</code></label>
+<def><p><code>A</code>¤Î0²ó°Ê¾å¤Î·«ÊÖ¤·¤È&match;¤¹¤ë¡£</p></def>
+</gitem>
+<!-- DEATH TO %'s
+<gitem>
+<label><code>%a</code></label>
+<def><p>specifies that <emph>in the external DTD subset</emph> a
+<termref def='dt-param-entity'>parameter entity</termref> may occur in the
+text at the position where <code>a</code> may occur; if so, its
+replacement text must match <code>S? a S?</code>. If
+the expression <code>a</code> is governed by a suffix operator, then
+the suffix operator determines both the maximum number of parameter-entity
+references allowed and the number of occurrences of <code>a</code>
+in the replacement text of the parameter entities: <code>%a*</code>
+means that <code>a</code> must occur zero or more times, and
+that some of its occurrences may be replaced by references to
+parameter entities whose replacement text must contain zero or
+more occurrences of <code>a</code>; it is thus a more compact way
+of writing <code>%(a*)*</code>.
+Similarly, <code>%a+</code> means that <code>a</code>
+must occur one or more times, and may be replaced by
+parameter entities with replacement text matching
+<code>S? (a S?)+</code>.
+The recognition of parameter entities in the internal subset is much more
+highly constrained.
+</p></def>
+</gitem>
+-->
+</glist>
+À¸À®µ¬Â§Æâ¤Ç»ÈÍѤ¹¤ë¾¤Îµ­Ë¡¤ò¡¤¼¡¤Ë¼¨¤¹¡£
+<glist>
+<gitem>
+<label><code>/* ... */</code></label>
+<def><p>¥³¥á¥ó¥È¡£</p></def>
+</gitem>
+<gitem>
+<label><code>[ wfc: ... ]</code></label>
+<def><p>&well-formed;À©Ìó¡£À¸À®µ¬Â§¤ËÉÕÍ¿¤·¤¿¡¤<termref def="dt-wellformed">&well-formed;</termref>¤Îʸ½ñ¤Ë´Ø¤¹¤ëÀ©Ìó¤ò¡¤Ì¾Á°¤Ë¤è¤Ã¤Æ&identify;¡£</p></def>
+</gitem>
+<gitem>
+<label><code>[ vc: ... ]</code></label>
+<def><p>&validity;À©Ìó¡£À¸À®µ¬Â§¤ËÉÕÍ¿¤·¤¿¡¤<termref def="dt-valid">&valid;</termref>¤Êʸ½ñ¤Ë´Ø¤¹¤ëÀ©Ìó¤ò¡¤Ì¾Á°¤Ë¤è¤Ã¤Æ&identify;¡£
+</p></def>
+</gitem>
+</glist>
+</p></div1>
+
+</body>
+<back>
+<!-- &SGML; -->
+
+<!-- &Biblio; -->
+<div1 id='sec-bibliography'>
+
+<head>»²¹Íʸ¸¥</head>
+<div2 id='sec-existing-stds'>
+<head>&normative;»²¹Íʸ¸¥</head>
+<!--* <ulist><item>
+<p>Unicode and ISO/IEC 10646. This specification depends on the
+international standard ISO/IEC 10646 (with amendments AM 1 through AM 7)
+and the Unicode Standard, Version 2.0 <bibref ref='Unicode'/>,
+which define the encodings and meanings of
+the <termref def="dt-character">characters</termref> which
+make up XML <termref def="dt-text">text</termref>.
+All the characters in ISO/IEC 10646 are present, at the same code points,
+in Unicode.</p></item>
+<item><p>XXX XXX defines the syntax and semantics of
+Uniform Resource Identifiers, or URIs.</p></item>
+<item><p>IETF RFC 1766, with ISO 639 and 3166,
+describe the codes that may be used in the
+special <titleref href='sec-lang-tag'>xml:lang</titleref> attribute.</p>
+</item></ulist>
+*-->
+
+<blist>
+
+<bibl id='RFC1766' key='IETF RFC 1766'>
+IETF (Internet Engineering Task Force).
+<emph>RFC 1766: Tags for the Identification of Languages</emph>,
+ed. H. Alvestrand.
+1995.
+</bibl>
+
+<bibl id='ISO639' key='ISO 639'>
+(International Organization for Standardization).
+<emph>ISO 8879:1988 (E).
+Code for the representation of names of languages.</emph>
+[Geneva]: International Organization for
+Standardization, 1988.</bibl>
+
+<bibl id='ISO3166' key='ISO 3166'>
+(International Organization for Standardization).
+<emph>ISO 3166-1:1997 (E).
+Codes for the representation of names of countries and their subdivisions
+&mdash; Part 1: Country codes</emph>
+[Geneva]: International Organization for
+Standardization, 1997.</bibl>
+
+<bibl id='ISO10646' key='ISO/IEC 10646'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10646-1993 (E). Information technology &mdash; Universal
+Multiple-Octet Coded Character Set (UCS) &mdash; Part 1:
+Architecture and Basic Multilingual Plane.</emph>
+[Geneva]: International Organization for
+Standardization, 1993 (plus amendments AM 1 through AM 7).
+</bibl>
+
+<bibl id='Unicode' key='Unicode'>The Unicode Consortium.
+<emph>The Unicode Standard, Version 2.0.</emph>
+Reading, Mass.: Addison-Wesley Developers Press, 1996.</bibl>
+
+</blist>
+
+</div2>
+
+<div2><head>¾¤Î»²¹Íʸ¸¥</head>
+
+<blist>
+
+<bibl id='Aho' key='Aho/Ullman'>Aho, Alfred V.,
+Ravi Sethi, and Jeffrey D. Ullman.
+<emph>Compilers: Principles, Techniques, and Tools</emph>.
+Reading: Addison-Wesley, 1986, rpt. corr. 1988.</bibl>
+
+<bibl id="Berners-Lee" xml-link="simple" key="Berners-Lee et al.">
+Berners-Lee, T., R. Fielding, and L. Masinter.
+<emph>Uniform Resource Identifiers (URI): Generic Syntax and
+Semantics</emph>.
+1997.
+(Work in progress; see updates to RFC1738.)</bibl>
+
+<bibl id='ABK' key='Br&#252;ggemann-Klein'>Br&#252;ggemann-Klein, Anne.
+<emph>Regular Expressions into Finite Automata</emph>.
+Extended abstract in I. Simon, Hrsg., LATIN 1992,
+S. 97-98. Springer-Verlag, Berlin 1992.
+Full Version in Theoretical Computer Science 120: 197-213, 1993.
+<!--
+Universitat Freiburg, Institut fur Informatik,
+Bericht 33, Juli 1991.-->
+</bibl>
+
+<bibl id='ABKDW' key='Br&#252;ggemann-Klein and Wood'>Br&#252;ggemann-Klein, Anne,
+and Derick Wood.
+<emph>Deterministic Regular Languages</emph>.
+Universit&#228;t Freiburg, Institut f&#252;r Informatik,
+Bericht 38, Oktober 1991.
+</bibl>
+
+<bibl id="RFC1738" xml-link="simple" key="IETF RFC1738">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1738: Uniform Resource Locators (URL)</emph>,
+ed. T. Berners-Lee, L. Masinter, M. McCahill.
+1994.
+</bibl>
+
+<bibl id="RFC1808" xml-link="simple" key="IETF RFC1808">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1808: Relative Uniform Resource Locators</emph>,
+ed. R. Fielding.
+1995.
+</bibl>
+
+<bibl id="RFC2141" xml-link="simple" key="IETF RFC2141">
+IETF (Internet Engineering Task Force).
+<emph>RFC 2141: URN Syntax</emph>,
+ed. R. Moats.
+1997.
+</bibl>
+
+<bibl id='ISO8879' key='ISO/IEC 8879'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 8879-1986 (E). Information processing &mdash; Text and Office
+Systems &mdash; Standard Generalized Markup Language (SGML).</emph> First
+edition &mdash; 1986-10-15. [Geneva]: International Organization for
+Standardization, 1986.
+</bibl>
+
+
+<bibl id='ISO10744' key='ISO/IEC 10744'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10744-1992 (E). Information technology &mdash;
+Hypermedia/Time-based Structuring Language (HyTime).
+</emph>
+[Geneva]: International Organization for
+Standardization, 1992.
+<emph>Extended Facilities Annexe.</emph>
+[Geneva]: International Organization for
+Standardization, 1996.
+</bibl>
+
+
+
+</blist>
+</div2>
+</div1>
+<div1 id='CharClasses'>
+<head>ʸ»ú¥¯¥é¥¹</head>
+
+<p>Unicodeɸ½à¤ËÄêµÁ¤¹¤ë&property;¤Ë¤·¤¿¤¬¤Ã¤Æ¡¤Ê¸»ú¤Ï¡¤&base-character;(BaseChar)(¤³¤ì¤é¤Ï¡¤&diacritical-mark;¤ò½ü¤¯¥é¥Æ¥ó¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤Î¥¢¥ë¥Õ¥¡¥Ù¥Ã¥Èʸ»ú¤ò´Þ¤à)¡¤&ideographic;(ideographic)µÚ¤Ó&combining-character;(CombiningChar)(¤³¤Î¥¯¥é¥¹¤Ï¡¤¤Û¤È¤ó¤É¤Î&diacritical-mark;¤ò´Þ¤à)¤Ë¥¯¥é¥¹Ê¬¤±¤¹¤ë¡£¤³¤ì¤é¤Î¥¯¥é¥¹¤Ï¡¤·ë¹ç¤·¡¤&letter;(Letter)¤Î¥¯¥é¥¹¤È¤Ê¤ë¡£10¿Ê¿ôÃÍ(Digit)µÚ¤Ó&extender;(Extender)¤â¶èÊ̤¹¤ë¡£
+<scrap lang="ebnf" id="CHARACTERS">
+<head>ʸ»ú</head>
+<prodgroup pcw3="3" pcw4="15">
+<prod id="NT-Letter"><lhs>Letter</lhs>
+<rhs><nt def="NT-BaseChar">BaseChar</nt>
+| <nt def="NT-Ideographic">Ideographic</nt></rhs> </prod>
+<prod id='NT-BaseChar'><lhs>BaseChar</lhs>
+<rhs>[#x0041-#x005A]
+|&nbsp;[#x0061-#x007A]
+|&nbsp;[#x00C0-#x00D6]
+|&nbsp;[#x00D8-#x00F6]
+|&nbsp;[#x00F8-#x00FF]
+|&nbsp;[#x0100-#x0131]
+|&nbsp;[#x0134-#x013E]
+|&nbsp;[#x0141-#x0148]
+|&nbsp;[#x014A-#x017E]
+|&nbsp;[#x0180-#x01C3]
+|&nbsp;[#x01CD-#x01F0]
+|&nbsp;[#x01F4-#x01F5]
+|&nbsp;[#x01FA-#x0217]
+|&nbsp;[#x0250-#x02A8]
+|&nbsp;[#x02BB-#x02C1]
+|&nbsp;#x0386
+|&nbsp;[#x0388-#x038A]
+|&nbsp;#x038C
+|&nbsp;[#x038E-#x03A1]
+|&nbsp;[#x03A3-#x03CE]
+|&nbsp;[#x03D0-#x03D6]
+|&nbsp;#x03DA
+|&nbsp;#x03DC
+|&nbsp;#x03DE
+|&nbsp;#x03E0
+|&nbsp;[#x03E2-#x03F3]
+|&nbsp;[#x0401-#x040C]
+|&nbsp;[#x040E-#x044F]
+|&nbsp;[#x0451-#x045C]
+|&nbsp;[#x045E-#x0481]
+|&nbsp;[#x0490-#x04C4]
+|&nbsp;[#x04C7-#x04C8]
+|&nbsp;[#x04CB-#x04CC]
+|&nbsp;[#x04D0-#x04EB]
+|&nbsp;[#x04EE-#x04F5]
+|&nbsp;[#x04F8-#x04F9]
+|&nbsp;[#x0531-#x0556]
+|&nbsp;#x0559
+|&nbsp;[#x0561-#x0586]
+|&nbsp;[#x05D0-#x05EA]
+|&nbsp;[#x05F0-#x05F2]
+|&nbsp;[#x0621-#x063A]
+|&nbsp;[#x0641-#x064A]
+|&nbsp;[#x0671-#x06B7]
+|&nbsp;[#x06BA-#x06BE]
+|&nbsp;[#x06C0-#x06CE]
+|&nbsp;[#x06D0-#x06D3]
+|&nbsp;#x06D5
+|&nbsp;[#x06E5-#x06E6]
+|&nbsp;[#x0905-#x0939]
+|&nbsp;#x093D
+|&nbsp;[#x0958-#x0961]
+|&nbsp;[#x0985-#x098C]
+|&nbsp;[#x098F-#x0990]
+|&nbsp;[#x0993-#x09A8]
+|&nbsp;[#x09AA-#x09B0]
+|&nbsp;#x09B2
+|&nbsp;[#x09B6-#x09B9]
+|&nbsp;[#x09DC-#x09DD]
+|&nbsp;[#x09DF-#x09E1]
+|&nbsp;[#x09F0-#x09F1]
+|&nbsp;[#x0A05-#x0A0A]
+|&nbsp;[#x0A0F-#x0A10]
+|&nbsp;[#x0A13-#x0A28]
+|&nbsp;[#x0A2A-#x0A30]
+|&nbsp;[#x0A32-#x0A33]
+|&nbsp;[#x0A35-#x0A36]
+|&nbsp;[#x0A38-#x0A39]
+|&nbsp;[#x0A59-#x0A5C]
+|&nbsp;#x0A5E
+|&nbsp;[#x0A72-#x0A74]
+|&nbsp;[#x0A85-#x0A8B]
+|&nbsp;#x0A8D
+|&nbsp;[#x0A8F-#x0A91]
+|&nbsp;[#x0A93-#x0AA8]
+|&nbsp;[#x0AAA-#x0AB0]
+|&nbsp;[#x0AB2-#x0AB3]
+|&nbsp;[#x0AB5-#x0AB9]
+|&nbsp;#x0ABD
+|&nbsp;#x0AE0
+|&nbsp;[#x0B05-#x0B0C]
+|&nbsp;[#x0B0F-#x0B10]
+|&nbsp;[#x0B13-#x0B28]
+|&nbsp;[#x0B2A-#x0B30]
+|&nbsp;[#x0B32-#x0B33]
+|&nbsp;[#x0B36-#x0B39]
+|&nbsp;#x0B3D
+|&nbsp;[#x0B5C-#x0B5D]
+|&nbsp;[#x0B5F-#x0B61]
+|&nbsp;[#x0B85-#x0B8A]
+|&nbsp;[#x0B8E-#x0B90]
+|&nbsp;[#x0B92-#x0B95]
+|&nbsp;[#x0B99-#x0B9A]
+|&nbsp;#x0B9C
+|&nbsp;[#x0B9E-#x0B9F]
+|&nbsp;[#x0BA3-#x0BA4]
+|&nbsp;[#x0BA8-#x0BAA]
+|&nbsp;[#x0BAE-#x0BB5]
+|&nbsp;[#x0BB7-#x0BB9]
+|&nbsp;[#x0C05-#x0C0C]
+|&nbsp;[#x0C0E-#x0C10]
+|&nbsp;[#x0C12-#x0C28]
+|&nbsp;[#x0C2A-#x0C33]
+|&nbsp;[#x0C35-#x0C39]
+|&nbsp;[#x0C60-#x0C61]
+|&nbsp;[#x0C85-#x0C8C]
+|&nbsp;[#x0C8E-#x0C90]
+|&nbsp;[#x0C92-#x0CA8]
+|&nbsp;[#x0CAA-#x0CB3]
+|&nbsp;[#x0CB5-#x0CB9]
+|&nbsp;#x0CDE
+|&nbsp;[#x0CE0-#x0CE1]
+|&nbsp;[#x0D05-#x0D0C]
+|&nbsp;[#x0D0E-#x0D10]
+|&nbsp;[#x0D12-#x0D28]
+|&nbsp;[#x0D2A-#x0D39]
+|&nbsp;[#x0D60-#x0D61]
+|&nbsp;[#x0E01-#x0E2E]
+|&nbsp;#x0E30
+|&nbsp;[#x0E32-#x0E33]
+|&nbsp;[#x0E40-#x0E45]
+|&nbsp;[#x0E81-#x0E82]
+|&nbsp;#x0E84
+|&nbsp;[#x0E87-#x0E88]
+|&nbsp;#x0E8A
+|&nbsp;#x0E8D
+|&nbsp;[#x0E94-#x0E97]
+|&nbsp;[#x0E99-#x0E9F]
+|&nbsp;[#x0EA1-#x0EA3]
+|&nbsp;#x0EA5
+|&nbsp;#x0EA7
+|&nbsp;[#x0EAA-#x0EAB]
+|&nbsp;[#x0EAD-#x0EAE]
+|&nbsp;#x0EB0
+|&nbsp;[#x0EB2-#x0EB3]
+|&nbsp;#x0EBD
+|&nbsp;[#x0EC0-#x0EC4]
+|&nbsp;[#x0F40-#x0F47]
+|&nbsp;[#x0F49-#x0F69]
+|&nbsp;[#x10A0-#x10C5]
+|&nbsp;[#x10D0-#x10F6]
+|&nbsp;#x1100
+|&nbsp;[#x1102-#x1103]
+|&nbsp;[#x1105-#x1107]
+|&nbsp;#x1109
+|&nbsp;[#x110B-#x110C]
+|&nbsp;[#x110E-#x1112]
+|&nbsp;#x113C
+|&nbsp;#x113E
+|&nbsp;#x1140
+|&nbsp;#x114C
+|&nbsp;#x114E
+|&nbsp;#x1150
+|&nbsp;[#x1154-#x1155]
+|&nbsp;#x1159
+|&nbsp;[#x115F-#x1161]
+|&nbsp;#x1163
+|&nbsp;#x1165
+|&nbsp;#x1167
+|&nbsp;#x1169
+|&nbsp;[#x116D-#x116E]
+|&nbsp;[#x1172-#x1173]
+|&nbsp;#x1175
+|&nbsp;#x119E
+|&nbsp;#x11A8
+|&nbsp;#x11AB
+|&nbsp;[#x11AE-#x11AF]
+|&nbsp;[#x11B7-#x11B8]
+|&nbsp;#x11BA
+|&nbsp;[#x11BC-#x11C2]
+|&nbsp;#x11EB
+|&nbsp;#x11F0
+|&nbsp;#x11F9
+|&nbsp;[#x1E00-#x1E9B]
+|&nbsp;[#x1EA0-#x1EF9]
+|&nbsp;[#x1F00-#x1F15]
+|&nbsp;[#x1F18-#x1F1D]
+|&nbsp;[#x1F20-#x1F45]
+|&nbsp;[#x1F48-#x1F4D]
+|&nbsp;[#x1F50-#x1F57]
+|&nbsp;#x1F59
+|&nbsp;#x1F5B
+|&nbsp;#x1F5D
+|&nbsp;[#x1F5F-#x1F7D]
+|&nbsp;[#x1F80-#x1FB4]
+|&nbsp;[#x1FB6-#x1FBC]
+|&nbsp;#x1FBE
+|&nbsp;[#x1FC2-#x1FC4]
+|&nbsp;[#x1FC6-#x1FCC]
+|&nbsp;[#x1FD0-#x1FD3]
+|&nbsp;[#x1FD6-#x1FDB]
+|&nbsp;[#x1FE0-#x1FEC]
+|&nbsp;[#x1FF2-#x1FF4]
+|&nbsp;[#x1FF6-#x1FFC]
+|&nbsp;#x2126
+|&nbsp;[#x212A-#x212B]
+|&nbsp;#x212E
+|&nbsp;[#x2180-#x2182]
+|&nbsp;[#x3041-#x3094]
+|&nbsp;[#x30A1-#x30FA]
+|&nbsp;[#x3105-#x312C]
+|&nbsp;[#xAC00-#xD7A3]
+</rhs></prod>
+<prod id='NT-Ideographic'><lhs>Ideographic</lhs>
+<rhs>[#x4E00-#x9FA5]
+|&nbsp;#x3007
+|&nbsp;[#x3021-#x3029]
+</rhs></prod>
+<prod id='NT-CombiningChar'><lhs>CombiningChar</lhs>
+<rhs>[#x0300-#x0345]
+|&nbsp;[#x0360-#x0361]
+|&nbsp;[#x0483-#x0486]
+|&nbsp;[#x0591-#x05A1]
+|&nbsp;[#x05A3-#x05B9]
+|&nbsp;#x05BB#x05BD
+|&nbsp;#x05BF
+|&nbsp;[#x05C1-#x05C2]
+|&nbsp;#x05C4
+|&nbsp;#x064B#x0652
+|&nbsp;#x0670
+|&nbsp;[#x06D6-#x06DC]
+|&nbsp;#x06DD#x06DF
+|&nbsp;[#x06E0-#x06E4]
+|&nbsp;[#x06E7-#x06E8]
+|&nbsp;[#x06EA-#x06ED]
+|&nbsp;[#x0901-#x0903]
+|&nbsp;#x093C
+|&nbsp;[#x093E-#x094C]
+|&nbsp;#x094D
+|&nbsp;[#x0951-#x0954]
+|&nbsp;[#x0962-#x0963]
+|&nbsp;[#x0981-#x0983]
+|&nbsp;#x09BC
+|&nbsp;#x09BE
+|&nbsp;#x09BF
+|&nbsp;[#x09C0-#x09C4]
+|&nbsp;[#x09C7-#x09C8]
+|&nbsp;[#x09CB-#x09CD]
+|&nbsp;#x09D7
+|&nbsp;[#x09E2-#x09E3]
+|&nbsp;#x0A02
+|&nbsp;#x0A3C
+|&nbsp;#x0A3E
+|&nbsp;#x0A3F
+|&nbsp;[#x0A40-#x0A42]
+|&nbsp;[#x0A47-#x0A48]
+|&nbsp;[#x0A4B-#x0A4D]
+|&nbsp;[#x0A70-#x0A71]
+|&nbsp;[#x0A81-#x0A83]
+|&nbsp;#x0ABC
+|&nbsp;[#x0ABE-#x0AC5]
+|&nbsp;[#x0AC7-#x0AC9]
+|&nbsp;[#x0ACB-#x0ACD]
+|&nbsp;[#x0B01-#x0B03]
+|&nbsp;#x0B3C
+|&nbsp;[#x0B3E-#x0B43]
+|&nbsp;[#x0B47-#x0B48]
+|&nbsp;[#x0B4B-#x0B4D]
+|&nbsp;[#x0B56-#x0B57]
+|&nbsp;[#x0B82-#x0B83]
+|&nbsp;[#x0BBE-#x0BC2]
+|&nbsp;[#x0BC6-#x0BC8]
+|&nbsp;[#x0BCA-#x0BCD]
+|&nbsp;#x0BD7
+|&nbsp;[#x0C01-#x0C03]
+|&nbsp;[#x0C3E-#x0C44]
+|&nbsp;[#x0C46-#x0C48]
+|&nbsp;[#x0C4A-#x0C4D]
+|&nbsp;[#x0C55-#x0C56]
+|&nbsp;[#x0C82-#x0C83]
+|&nbsp;[#x0CBE-#x0CC4]
+|&nbsp;[#x0CC6-#x0CC8]
+|&nbsp;[#x0CCA-#x0CCD]
+|&nbsp;[#x0CD5-#x0CD6]
+|&nbsp;[#x0D02-#x0D03]
+|&nbsp;[#x0D3E-#x0D43]
+|&nbsp;[#x0D46-#x0D48]
+|&nbsp;[#x0D4A-#x0D4D]
+|&nbsp;#x0D57
+|&nbsp;#x0E31
+|&nbsp;[#x0E34-#x0E3A]
+|&nbsp;[#x0E47-#x0E4E]
+|&nbsp;#x0EB1
+|&nbsp;[#x0EB4-#x0EB9]
+|&nbsp;[#x0EBB-#x0EBC]
+|&nbsp;[#x0EC8-#x0ECD]
+|&nbsp;[#x0F18-#x0F19]
+|&nbsp;#x0F35
+|&nbsp;#x0F37
+|&nbsp;#x0F39
+|&nbsp;#x0F3E
+|&nbsp;#x0F3F
+|&nbsp;[#x0F71-#x0F84]
+|&nbsp;[#x0F86-#x0F8B]
+|&nbsp;[#x0F90-#x0F95]
+|&nbsp;#x0F97
+|&nbsp;[#x0F99-#x0FAD]
+|&nbsp;[#x0FB1-#x0FB7]
+|&nbsp;#x0FB9
+|&nbsp;[#x20D0-#x20DC]
+|&nbsp;#x20E1
+|&nbsp;[#x302A-#x302F]
+|&nbsp;#x3099
+|&nbsp;#x309A
+</rhs></prod>
+<prod id='NT-Digit'><lhs>Digit</lhs>
+<rhs>[#x0030-#x0039]
+|&nbsp;[#x0660-#x0669]
+|&nbsp;[#x06F0-#x06F9]
+|&nbsp;[#x0966-#x096F]
+|&nbsp;[#x09E6-#x09EF]
+|&nbsp;[#x0A66-#x0A6F]
+|&nbsp;[#x0AE6-#x0AEF]
+|&nbsp;[#x0B66-#x0B6F]
+|&nbsp;[#x0BE7-#x0BEF]
+|&nbsp;[#x0C66-#x0C6F]
+|&nbsp;[#x0CE6-#x0CEF]
+|&nbsp;[#x0D66-#x0D6F]
+|&nbsp;[#x0E50-#x0E59]
+|&nbsp;[#x0ED0-#x0ED9]
+|&nbsp;[#x0F20-#x0F29]
+</rhs></prod>
+<prod id='NT-Extender'><lhs>Extender</lhs>
+<rhs>#x00B7
+|&nbsp;#x02D0
+|&nbsp;#x02D1
+|&nbsp;#x0387
+|&nbsp;#x0640
+|&nbsp;#x0E46
+|&nbsp;#x0EC6
+|&nbsp;#x3005
+|&nbsp;[#x3031-#x3035]
+|&nbsp;[#x309D-#x309E]
+|&nbsp;[#x30FC-#x30FE]
+</rhs></prod>
+
+</prodgroup>
+</scrap>
+</p>
+<p>¤³¤³¤ÇÄêµÁ¤¹¤ëʸ»ú¥¯¥é¥¹¤Ï¡¤Unicodeʸ»ú¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤é¡¤¼¡¤Î¤È¤ª¤ê¤ËÆÀ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
+<ulist>
+<item>
+<p>a) ̾Á°³«»Ïʸ»ú¤Ï¡¤Ll, Lu, Lo, Lt, Nl¥«¥Æ¥´¥êÆâ¤Î°ì¤Ä¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+</item>
+<item>
+<p>b) ̾Á°³«»Ïʸ»ú°Ê³°¤Î̾Á°Ê¸»ú¤Ï¡¤Mc, Me, Mn, Lm, Nd¥«¥Æ¥´¥êÆâ¤Î°ì¤Ä¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£</p>
+</item>
+<item>
+<p>c) &compatibility-area;¤Ë¤¢¤ëʸ»ú(ʸ»úÉä¹æ¤Ç#xF900¤è¤êÂ礭¤¯#xFFFE¤è¤ê¾®¤µ¤¤Ê¸»ú)¤Ï¡¤XML¤Ë¤ª¤±¤ë̾Á°¤È¤·¤Æ¤Ï¡¤µö¤µ¤ì¤Ê¤¤¡£</p>
+</item>
+<item>
+<p>d) &font-decomposition;¤«&compatibility-decomposition;¤ò¤â¤Äʸ»ú(¤Ä¤Þ¤ê¡¤¥Ç¡¼¥¿¥Ù¡¼¥¹Æâ¤Î£µÈÖÌܤΥե£¡¼¥ë¥É¤Ë"compatibility formatting tag"¤¬¤¢¤ë¤â¤Î¡£¤³¤ì¤Ï¡¤£µÈÖÌܤΥե£¡¼¥ë¥É¤¬¡¤"&lt;"¤Ç»Ï¤Þ¤ë¤³¤È¤Ë¤è¤Ã¤Æ¥Þ¡¼¥¯ÉÕ¤±¤µ¤ì¤ë¡£)¤Ï¡¤µö¤µ¤ì¤Ê¤¤¡£</p>
+</item>
+<item>
+<p>e) ¼¡¤Îʸ»ú¤Ï¡¤Ì¾Á°³«»Ïʸ»ú¤È¤·¤Æ°·¤¦¡£¤³¤ì¤Ï¡¤&property-file;¤¬¡¤¤³¤ì¤é¤Îʸ»ú¤ò¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤ËÎà»÷¤¹¤ë¤È¸«¤Ê¤¹¤³¤È¤Ë¤è¤ë¡£¤½¤ì¤é¤Ï
+[#x02BB-#x02C1], #x0559, #x06E5, #x06E6¤È¤¹¤ë¡£</p>
+</item>
+<item>
+<p>f) ʸ»úÉä¹æ¤¬#x20DD-#x20E0¤Îʸ»ú¤Ï¡¤(Unicode ¤Î5.14¤Ë¤·¤¿¤¬¤Ã¤Æ)½ü³°¤¹¤ë¡£</p>
+</item>
+<item>
+<p>g) ʸ»úÉä¹æ¤¬#x00B7¤Îʸ»ú¤Ï¡¤&property-list;¤Ë¤·¤¿¤¬¤Ã¤Æ¡¤&extender;(extender)¤ËʬÎह¤ë¡£</p>
+</item>
+<item>
+<p>h) ʸ»ú#x0387¤Ï¡¤¤³¤ì¤ËÁêÅö¤¹¤ëÀµµ¬·Á¤¬#x00B7¤Ê¤Î¤Ç¡¤Ì¾Á°Ê¸»ú¤ËÄɲ乤롣</p>
+</item>
+<item>
+<p>i) ʸ»ú':'µÚ¤Ó'_'¤Ï¡¤Ì¾Á°³«»Ïʸ»ú¤È¤·¤Æµö¤¹¡£</p>
+</item>
+<item>
+<p>j) ʸ»ú'-'µÚ¤Ó'.'¤Ï¡¤Ì¾Á°Ê¸»ú¤È¤·¤Æµö¤¹¡£</p>
+</item>
+</ulist>
+</p>
+</div1>
+<inform-div1 id="sec-xml-and-sgml">
+<head>XMLµÚ¤ÓSGML</head>
+
+<p>XML¤Ï¡¤SGML¤Î&subset;¤È¤·¤ÆÀ߷פµ¤ì¤Æ¤¤¤ë¡£¤¹¤Ê¤ï¤Á¡¤¤¹¤Ù¤Æ¤Î<termref def="dt-valid">&valid;</termref>¤ÊXMLʸ½ñ¤Ï¡¤µ¬³Ê¤ËŬ¹ç¤¹¤ëSGMLʸ½ñ¤Ë¤â¤Ê¤ë¡£SGML¤¬Ê¸½ñ¤Ë²Ý¤¹À©¸Â°Ê³°¤Ë¡¤XML¤¬¤¤¤«¤Ê¤ëÀ©¸Â¤ò²Ý¤¹¤«¤Ë´Ø¤¹¤ë¾ÜºÙ¤Ï¡¤Ê̤Î<loc href='http://www.w3.org/TR/NOTE-sgml-xml'>µ¬Äø</loc>¤ò»²¾È¤Î¤³¤È¡£¤³¤Îµ¬Äø¤Ï¡¤XML¤ÎÀ©Ìó¾ò·ï¤ò¼¨¤¹SGMLÀë¸À¤ò´Þ¤ß¡¤¤³¤ì¤Ï¡¤SGML&parser;¤Ë»ÈÍѤǤ­¤ë¡£
+</p>
+</inform-div1>
+<inform-div1 id="sec-entexpand">
+<head>¼ÂÂλ²¾ÈµÚ¤Óʸ»ú»²¾È¤ÎŸ³«</head>
+<p>¤³¤ÎÉÕÏ¿¤Ï¡¤¼ÂÂλ²¾ÈµÚ¤Óʸ»ú»²¾È¤òǧ¼±¤·¡¤Å¸³«¤¹¤ë¡¤°ìÏ¢¤Îή¤ì¤ò¡¤Îã¤Ë»È¤Ã¤Æ¼¨¤¹¡£</p>
+<p>
+DTD¤¬¡¤¼¡¤ÎÀë¸À¤ò´Þ¤à¾ì¹ç¤ò¹Í¤¨¤ë¡£
+<eg><![CDATA[<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
+numerically (&#38;#38;#38;) or with a general entity
+(&amp;amp;).</p>" >
+]]></eg>
+XML&processor;¤Ï¡¤¼ÂÂΤÎÀë¸À¤ò¹½Ê¸²òÀϤ·¤¿»þÅÀ¤Çʸ»ú»²¾È¤òǧ¼±¤·¡¤¤³¤ì¤ò²ò·è¤¹¤ë¡£¼ÂÂÎ"<code>example</code>"¤ÎÃͤȤ·¤Æ¡¤¼¡¤Î&string;¤òÊݸ¤¹¤ë¡£
+<eg><![CDATA[<p>An ampersand (&#38;) may be escaped
+numerically (&#38;#38;) or with a general entity
+(&amp;amp;).</p>
+]]></eg>
+ʸ½ñÆâ¤Ç"<code>&amp;example;</code>"¤ò»²¾È¤¹¤ë¤È¡¤¤³¤Î¥Æ¥­¥¹¥È¤Ï¡¤ºÆ¤Ó¹½Ê¸²òÀϤµ¤ì¤ë¡£¤³¤Î¤È¤­¡¤Í×ÁÇ"<code>p</code>"¤Î³«»Ï¥¿¥°µÚ¤Ó½ªÎ»¥¿¥°¤òǧ¼±¤·¡¤»°¤Ä¤Î»²¾È¤òǧ¼±¤·Å¸³«¤¹¤ë¡£¤½¤Î·ë²Ì¡¤Í×ÁÇ"<code>p</code>"¤Ï¡¤¼¡¤ÎÆâÍƤò¤â¤Ä(¤¹¤Ù¤Æ¥Ç¡¼¥¿¤È¤·¡¤¶èÀÚ¤ê»ÒËô¤Ï&markup;¤Ï¸ºß¤·¤Ê¤¤¡£)¡£
+<eg><![CDATA[An ampersand (&) may be escaped
+numerically (&#38;) or with a general entity
+(&amp;).
+]]></eg>
+</p>
+<p>µ¬Â§µÚ¤Ó¤½¤Î¸ú²Ì¤ò¤è¤ê¾ÜºÙ¤Ë¼¨¤¹¤¿¤á¡¤¤µ¤é¤ËÊ£»¨¤ÊÎã¤ò¼¨¤¹¡£¼¡¤ÎÎã¤Ç¡¤¹ÔÈÖ¹æ¤Ï¡¤»²¾È¤ÎÊص¹¤Î¤¿¤á¤À¤±¤ËÉÕ¤±¤ë¡£
+<eg><![CDATA[1 <?xml version='1.0'?>
+2 <!DOCTYPE test [
+3 <!ELEMENT test (#PCDATA) >
+4 <!ENTITY % xx '&#37;zz;'>
+5 <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
+6 %xx;
+7 ]>
+8 <test>This sample shows a &tricky; method.</test>
+]]></eg>
+¤³¤ì¤ò½èÍý¤¹¤ë¤È¡¤¼¡¤Î¤È¤ª¤ê¤È¤Ê¤ë¡£
+<ulist spacing="compact">
+<item><p>a) 4¹ÔÌܤǡ¤37ÈÖÌܤÎʸ»ú¤Ø¤Î»²¾È¤òľ¤Á¤ËŸ³«¤·¡¤¥Ñ¥é¥á¥¿¼ÂÂÎ"<code>xx</code>"¤ò¡¤¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë¤Ë"<code>%zz;</code>"¤È¤¤¤¦ÃͤȤȤâ¤ËÊݸ¤¹¤ë¡£&replacement-text;¤òºÆ¤ÓÁöºº¤¹¤ë¤³¤È¤Ï¤Ê¤¤¤Î¤Ç¡¤¥Ñ¥é¥á¥¿¼ÂÂÎ"<code>zz</code>"¤Ø¤Î»²¾È¤Ïǧ¼±¤·¤Ê¤¤("<code>zz</code>"¤Ï¡¤¤Þ¤ÀÀë¸À¤µ¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¤Áöºº¤µ¤ì¤ì¤Ð¡¤&error;¤È¤Ê¤ë¡£)¡£</p></item>
+<item><p>b) 5¹ÔÌܤǡ¤Ê¸»ú»²¾È"<code>&amp;#60;</code>"¤òľ¤Á¤ËŸ³«¤·¡¤¥Ñ¥é¥á¥¿¼ÂÂÎ"<code>zz</code>"¤ò"<code>&lt;!ENTITY tricky "error-prone" ></code>"¤È¤¤¤¦&replacement-text;¤È¤È¤â¤ËÊݸ¤¹¤ë¡£¤³¤ì¤Ï¡¤&well-formed;¤Î¼ÂÂÎÀë¸À¤È¤¹¤ë¡£</p></item>
+<item><p>c) 6¹ÔÌܤǡ¤"<code>xx</code>"¤Ø¤Î»²¾È¤òǧ¼±¤·¡¤"<code>xx</code>"¤Î&replacement-text;(¤¹¤Ê¤ï¤Á¡¤"<code>%zz;</code>")¤ò¹½Ê¸²òÀϤ¹¤ë¡£"<code>zz</code>"¤Ø¤Î»²¾È¤ò³¤¤¤Æǧ¼±¤·¡¤&replacement-text;("<code>&lt;!ENTITY tricky "error-prone" ></code>")¤ò¹½Ê¸²òÀϤ¹¤ë¡£°ìÈ̼ÂÂÎ"<code>tricky</code>"¤Ï¡¤¤³¤Î»þÅÀ¤Ç¤Ï¡¤Àë¸À¤µ¤ì¤Æ¤ª¤ê¡¤¤½¤Î&replacement-text;¤Ï¡¤"<code>error-prone</code>"¤È¤¹¤ë¡£ </p></item>
+<item><p>d) 8¹ÔÌܤǡ¤°ìÈ̼ÂÂÎ"<code>tricky</code>"¤Ø¤Î»²¾È¤òǧ¼±¤·¡¤Å¸³«¤¹¤ë¡£Í×ÁÇ"<code>test</code>"¤Î´°Á´¤ÊÆâÍƤϡ¤¼¡¤Î(ÆâÍƤò¤½¤ì¼«ÂÎɽ¸½¤¹¤ë¡£)&string;¤È¤Ê¤ë¡£¤Ä¤Þ¤ê¡¤<emph>This sample shows a error-prone method.</emph>
+</p></item>
+</ulist>
+</p>
+</inform-div1>
+<inform-div1 id="determinism">
+<head>·èÄêŪÆâÍÆ¥â¥Ç¥ë</head>
+<p><termref def='dt-compat'>¸ß´¹À­¤Î¤¿¤á</termref>¡¤Í×ÁÇÀë¸À¤Ë¤ª¤±¤ëÆâÍÆ¥â¥Ç¥ë¤Ï¡¤·èÄêŪ¤È¤¹¤ëɬÍפ¬¤¢¤ë¡£
+</p>
+<!-- FINAL EDIT: WebSGML allows ambiguity? -->
+<p>SGML¤Ï¡¤·èÄêŪÆâÍÆ¥â¥Ç¥ë(SGML¤Ç¤Ï¡¤È󤢤¤¤Þ¤¤¤È¸Æ¤Ö¡£)¤òÍ׵᤹¤ë¡£SGML¥·¥¹¥Æ¥à¤òÍѤ¤¤ÆºîÀ®¤·¤¿XML&processor;¤Ï¡¤Èó·èÄêŪÆâÍÆ¥â¥Ç¥ë¤ò&error;¤È¤·¤Æ¤â¤è¤¤¡£</p>
+<p>Î㤨¤Ð¡¤ÆâÍÆ¥â¥Ç¥ë<code>((b, c) | (b, d))</code>¤ÏÈó·èÄêŪ¤È¤Ê¤ë¡£¤³¤ì¤Ï¡¤ºÇ½é¤Ë<code>b</code>¤òÍ¿¤¨¤¿¤È¤­¡¤¥â¥Ç¥ëÆâ¤Î¤¤¤º¤ì¤Î<code>b</code>¤È&match;¤¹¤ë¤Î¤¬Ë¾¤Þ¤·¤¤¤«¡¤¤½¤Î¼¡¤ÎÍ×ÁǤòÀèÆɤߤ¹¤ë¤³¤È¤Ê¤·¤Ë¤Ï¡¤&parser;¤ÏÃΤ뤳¤È¤¬¤Ç¤­¤Ê¤¤¤³¤È¤Ë¤è¤ë¡£¤³¤Î¾ì¹ç¤Ï¡¤<code>b</code>¤Ø¤ÎÆó¤Ä¤Î»²¾È¤Ï¡¤°ì¤Ä¤Î»²¾È¤Ë¤Þ¤È¤á¤ë¤³¤È¤¬¤Ç¤­¡¤¥â¥Ç¥ë¤Ï¡¤<code>(b, (c | d))</code>¤È¤Ê¤ë¡£¤³¤ì¤Ç¡¤ºÇ½é¤Î<code>b</code>¤¬¡¤ÆâÍÆ¥â¥Ç¥ëÆâ¤Î°ì¤Ä¤Î̾Á°¤È¤À¤±&match;¤¹¤ë¤³¤È¤ÏÌÀ¤é¤«¤È¤Ê¤ë¡£&parser;¤Ï¡¤ÀèÆɤߤ·¤Æ¡¤¼¡¤ËÍè¤ë¤â¤Î¤òÃΤëɬÍפ¬¤Ê¤¤¡£<code>c</code>¤â<code>d</code>¤â¡¤¼õÍý¤µ¤ì¤ë¡£</p>
+<p>·Á¼°Åª¤Ë¼¨¤¹¡£Aho, Sethi, and Ullman <bibref ref='Aho'/>¤Î3.9¤Î¥¢¥ë¥´¥ê¥º¥à3.5¤Îɸ½àŪ¤Ê¥¢¥ë¥´¥ê¥º¥à¤òÍѤ¤¤Æ¡¤ÆâÍÆ¥â¥Ç¥ë¤«¤éÍ­¸Â¥ª¡¼¥È¥Þ¥È¥ó¤ò¹½À®¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£¤³¤Î¼ï¤Î¿¤¯¤Î¥¢¥ë¥´¥ê¥º¥à¤Ç¤Ï¡¤Àµµ¬É½¸½¤Ë¤ª¤±¤ë³Æ¡¹¤Î°ÌÃÖ(¤Ä¤Þ¤ê¡¤Àµµ¬É½¸½¤Î¹½Ê¸Ìڤˤª¤±¤ë³Æ¡¹¤ÎËöü¥Î¡¼¥É)¤ËÂФ·¤Æ¡¤follow set(¼¡¤Ë¤É¤Î°ÌÃ֤˰ÜÆ°²Äǽ¤«¤òɽ¤¹¤â¤Î)¤ò¹½À®¤¹¤ë¡£¤¢¤ë°ÌÃÖ¤ËÂФ¹¤ëfollow set¤Ë¤ª¤¤¤Æ¡¤Ê£¿ô¤Î°ÌÃÖ¤¬Æ±¤¸Í×ÁÇ·¿Ì¾¤Ç¥é¥Ù¥ëÉÕ¤±¤µ¤ì¤Æ¤¤¤ì¤Ð¡¤¤½¤ÎÆâÍÆ¥â¥Ç¥ë¤Ï&error;¤È¤Ê¤ê¡¤&error;¤òÊÖ¤¹¾ì¹ç¤â¤¢¤ë¡£
+</p>
+<p>¤¹¤Ù¤Æ¤ÎÈó·èÄêŪÆâÍÆ¥â¥Ç¥ë¤òÅù²Á¤Ê·èÄêŪÆâÍÆ¥â¥Ç¥ë¤ËÊÑ´¹¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¤¬¡¤Â¿¤¯¤ÎÈó·èÄêŪÆâÍÆ¥â¥Ç¥ë¤òÊÑ´¹¤¹¤ë¥¢¥ë¥´¥ê¥º¥à¤¬Â¸ºß¤¹¤ë¡£Br&#252;ggemann-Klein 1991 <bibref ref='ABK'/>¤ò»²¾È¤Î¤³¤È¡£</p>
+</inform-div1>
+<inform-div1 id="sec-guessing">
+<head>ʸ»úÉä¹æ²½¤Î¼«Æ°¸¡½Ð</head>
+<p>
+XML¤ÎÉä¹æ²½Àë¸À¤Ï¡¤³Æ¼ÂÂΤÎÆâÉô¥é¥Ù¥ë¤È¤·¤Æµ¡Ç½¤·¡¤¤É¤Îʸ»úÉä¹æ²½¤ò»ÈÍѤ¹¤ë¤«¤ò¼¨¤¹¡£¤·¤«¤·¡¤XML&processor;¤Ï¡¤ÆâÉô¥é¥Ù¥ë¤òÆɤàÁ°¤Ë¡¤¤É¤Îʸ»úÉä¹æ²½¤ò»ÈÍѤ¹¤ë¤«¤òÃΤëɬÍפ¬¤¢¤ê¡¤¤³¤ì¤¬¡¤ÆâÉô¥é¥Ù¥ë¤¬¼¨¤½¤¦¤È¤¹¤ë¤³¤È¤Ë¤Ê¤ë¡£°ìÈÌŪ¤Ë¤Ï¡¤¤³¤ì¤Ï¡¤Àä˾Ū¤Ê¾õÂ֤Ȥʤ롣¤·¤«¤·¡¤XML¤Ë¤ª¤¤¤Æ¤Ï¡¤´°Á´¤Ë¤ÏÀä˾Ū¤Ç¤Ï¤Ê¤¤¡£¤³¤ì¤Ï¡¤XML¤¬¡¤¼¡¤ÎÆó¤Ä¤ÎÅÀ¤Ç°ìÈÌŪ¤Ê¾ì¹ç¤ËÂФ¹¤ëÀ©¸Â¤ò²Ã¤¨¤ë¤³¤È¤Ë¤è¤ë¡£°ì¤Ä¤ÎÀ©¸Â¤Ï¡¤¤É¤Î¼ÂÁõ¤âÍ­¸Â¸Ä¤Îʸ»úÉä¹æ²½¤À¤±¤Î¥µ¥Ý¡¼¥È¤òÁÛÄꤹ¤ë¤³¤È¤È¤¹¤ë¡£Â¾¤Î°ì¤Ä¤ÎÀ©¸Â¤Ï¡¤³Æ¼ÂÂΤǻÈÍѤ¹¤ëʸ»úÉä¹æ²½¤ò¼«Æ°¸¡½Ð²Äǽ¤È¤¹¤ë¡¤XML¤ÎÉä¹æ²½Àë¸À¤Î°ÌÃÖµÚ¤ÓÆâÍƤ˴ؤ¹¤ëÀ©¸Â¤È¤¹¤ë¡£Â¿¤¯¤Î¾ì¹ç¤Ë¡¤XML¤Î¥Ç¡¼¥¿¥¹¥È¥ê¡¼¥à¤Ë²Ã¤¨¡¤Â¾¤Î¾ðÊó¤¬ÍøÍѤǤ­¤ë¡£¤³¤³¤Ç¤Ï¡¤XML¤Î¼ÂÂΤ¬&processor;¤ËÅϤµ¤ì¤ë¤È¤­¡¤(³°Éô)¾ðÊó¤òȼ¤¦¤«¤É¤¦¤«¤Ë¤è¤Ã¤Æ¡¤Æó¤Ä¤Î¾ì¹ç¤Ëʬ¤±¤ë¡£¤Þ¤ººÇ½é¤Î¾ì¹ç¤ò¼¨¤¹¡£</p>
+<p>
+UTF-8·Á¼°Ëô¤ÏUTF-16·Á¼°¤Ç¤Ï¤Ê¤¤XML¼ÂÂΤϡ¤ºÇ½é¤Îʸ»ú¤ò¡Æ<code>&lt;?xml</code>'¤È¤¹¤ëXMLÉä¹æ²½Àë¸À¤Ç»Ï¤Þ¤é<emph>¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤</emph>¤Î¤Ç¡¤¤É¤ÎŬ¹ç¤·¤¿&processor;¤â¡¤ÆþÎϤˤ¢¤ë2¥ª¥¯¥Æ¥Ã¥ÈËô¤Ï4¥ª¥¯¥Æ¥Ã¥È¤òÄ´¤Ù¤ì¤Ð¡¤¼¡¤Î¤É¤Î¾ì¹ç¤¬¤¢¤Æ¤Ï¤Þ¤ë¤«¤ò¸¡½Ð¤Ç¤­¤ë¡£¤³¤Î¥ê¥¹¥È¤òÆɤàºÝ¤Ë¤Ï¡¤UCS-4¤Î'&lt;'¤¬"<code>#x0000003C</code>"¡¤'?'¤¬"<code>#x0000003F</code>"¡¤µÚ¤ÓUTF-16¤Î¥Ç¡¼¥¿&stream;¤ÎɬÍפȤ¹¤ë&byte-order-mark;¤¬"<code>#xFEFF</code>"¤È¤¤¤¦¤³¤È¤òÃΤäƤª¤¯¤ÈÌòΩ¤Ä¤«¤â¤·¤ì¤Ê¤¤¡£</p>
+<p>
+<ulist>
+<item>
+<p>a) <code>00 00 00 3C</code>: UCS-4, big-endian ¥Þ¥·¥ó (1234½ç)</p>
+</item>
+<item>
+<p>b) <code>3C 00 00 00</code>: UCS-4, little-endian ¥Þ¥·¥ó (4321½ç)</p>
+</item>
+<item>
+<p>c) <code>00 00 3C 00</code>: UCS-4, ÉáÄ̤ǤϤʤ¤¥ª¥¯¥Æ¥Ã¥È½ç (2143)</p>
+</item>
+<item>
+<p>d) <code>00 3C 00 00</code>: UCS-4, ÉáÄ̤ǤϤʤ¤¥ª¥¯¥Æ¥Ã¥È½ç (3412)</p>
+</item>
+<item>
+<p>e) <code>FE FF</code>: UTF-16, big-endian</p>
+</item>
+<item>
+<p>f) <code>FF FE</code>: UTF-16, little-endian</p>
+</item>
+<item>
+<p>g) <code>00 3C 00 3F</code>: UTF-16, big-endian, &byte-order-mark;¤Ê¤·(¤·¤¿¤¬¤Ã¤Æ¡¤¸·Ì©¤Ë¤¤¤¨¤Ð¡¤&error;¤È¤¹¤ë¡£)¡£</p>
+</item>
+<item>
+<p>h) <code>3C 00 3F 00</code>: UTF-16, little-endian, &byte-order-mark;¤Ê¤·(¤·¤¿¤¬¤Ã¤Æ¡¤¸·Ì©¤Ë¤¤¤¨¤Ð¡¤&error;¤È¤¹¤ë¡£)¡£</p>
+</item>
+<item>
+<p>i) <code>3C 3F 78 6D</code>: UTF-8, ISO 646, ASCII, ISO 8859¤Î³Æ¥Ñ¡¼¥È¡¤Shift-JIS¡¤EUC¡¤Ê¤ӤËǤ°Õ¤Î¾¤Î7¥Ó¥Ã¥È¡¤8¥Ó¥Ã¥ÈËô¤Ïº®ºßÉý¤ÎÉä¹æ²½¤Ç¤¢¤Ã¤Æ¡¤ASCIIʸ»ú¤òÄ̾ï¤Î°ÌÃÖ¡¤ÉýµÚ¤ÓÃͤȤ¹¤ë¤³¤È¤òÊݾڤ¹¤ë¤â¤Î¡£¤³¤ì¤é¤Î¤É¤ì¤ËÂбþ¤¹¤ë¤«¤ò¸¡½Ð¤¹¤ë¤¿¤á¤Ë¤Ï¡¤¼ÂºÝ¤ÎÉä¹æ²½Àë¸À¤òÆɤ߹þ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤·¤«¤·¡¤¤³¤ì¤é¤¹¤Ù¤Æ¤ÎÉä¹æ²½¤Ï¡¤ASCIIʸ»ú¤ËÂФ·¤ÆƱ¤¸¥Ó¥Ã¥È¥Ñ¥¿¡¼¥ó¤ò»ÈÍѤ¹¤ë¤Î¤Ç¡¤Éä¹æ²½Àë¸À¼«ÂΤϡ¤Àµ³Î¤ËÆɹþ¤ß²Äǽ¤È¤¹¤ë¡£
+</p>
+</item>
+<item>
+<p>j) <code>4C 6F A7 94</code>: EBCDIC (Ëô¤Ï¤½¤ÎÊѼ¤É¤Î¥³¡¼¥É¥Ú¡¼¥¸¤ò»ÈÍѤ¹¤ë¤«¤òÃΤ뤿¤á¤Ë¤Ï¡¤Éä¹æ²½Àë¸ÀÁ´ÂΤòÆɤ߹þ¤Þ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£)</p>
+</item>
+<item>
+<p>k) ¤½¤Î¾: Éä¹æ²½Àë¸À¤Ê¤·¤ÎUTF-8¡£¤½¤¦¤Ç¤Ê¤¤¤È¤­¤Ë¤Ï¡¤¥Ç¡¼¥¿&stream;¤¬²õ¤ì¤Æ¤¤¤ë¤«¡¤ÃÇÊÒŪ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¡¤²¿¤é¤«¤Î·Á¼°¤Ë¤·¤¿¤¬¤Ã¤ÆËä¤á¹þ¤Þ¤ì¤Æ¤¤¤ë¡£</p>
+</item>
+</ulist>
+</p>
+<p>
+¤³¤ÎÄøÅ٤μ«Æ°È½Ê̤Ǥ⡤XML¤ÎÉä¹æ²½Àë¸À¤òÆɤ߹þ¤ß¡¤Ê¸»úÉä¹æ²½¤Î&identifier;¤ò²òÀϤ¹¤ë¤Ë¤Ï½½Ê¬¤È¤¹¤ë¡£&identifier;¤Î²òÀϤϡ¤Îà»÷¤¹¤ë³Æ¡¹¤ÎÉä¹æ²½¤Î°ì¤Ä°ì¤Ä¤ò¶èÊ̤¹¤ë¤¿¤á¤ËɬÍפȤ¹¤ë(Î㤨¤Ð¡¤UTF-8µÚ¤Ó8859¤ò¶èÊ̤¹¤ë¤¿¤á¡¤8859¤Î³Æ¥Ñ¡¼¥È¤ò¶èÊ̤¹¤ë¤¿¤á¡¤»ÈÍѤ·¤Æ¤¤¤ëÆÃÄê¤ÎEBCDIC¥³¡¼¥É¥Ú¡¼¥¸¤ò¶èÊ̤¹¤ë¤¿¤á¡¤¤Ê¤É¡£)¡£
+</p>
+<p>
+Éä¹æ²½Àë¸À¤ÎÆâÍƤòASCIIʸ»ú¤Ë¸ÂÄꤷ¤Æ¤¤¤ë¤Î¤Ç¡¤¤É¤ÎʬÎà¤ÎÉä¹æ²½¤ò»ÈÍѤ¹¤ë¤«¤ò¸¡½Ð¤¹¤ì¤Ð¡¤&processor;¤Ï¡¤Éä¹æ²½Àë¸ÀÁ´ÂΤòÀµ³Î¤ËÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤ë¡£¸½¼ÂÌäÂê¤È¤·¤Æ¡¤¹­¤¯»ÈÍѤµ¤ì¤Æ¤¤¤ëʸ»úÉä¹æ²½¤Ï¡¤¾å¤ÎʬÎà¤Î¤¤¤º¤ì¤«¤Ë¤¢¤Æ¤Ï¤Þ¤ë¤Î¤Ç¡¤¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥àËô¤ÏÅÁÁ÷¥×¥í¥È¥³¥ë¤¬Í¿¤¨¤ë³°Éô¾ðÊó¤ò¿®ÍêÉÔ²Äǽ¤Ê¤È¤­¤Ç¤µ¤¨¤â¡¤ÆâÉô¥é¥Ù¥ë¤Çʸ»úÉä¹æ²½¤ò¤«¤Ê¤êÀµ³Î¤Ë¼¨¤¹¤³¤È¤¬¡¤XMLÉä¹æ²½Àë¸À¤Ë¤è¤Ã¤Æ²Äǽ¤È¤Ê¤ë¡£
+</p>
+<p>
+&processor;¤¬»ÈÍѤ¹¤ëʸ»úÉä¹æ²½¤ò¸¡½Ð¤·¤µ¤¨¤¹¤ì¤Ð¡¤¤½¤ì¤¾¤ì¤Î¾ì¹ç¤ËÂФ·¤ÆÊ̸ĤÎÆþÎϥ롼¥Á¥ó¤ò¸Æ¤Ó½Ð¤¹¡¤Ëô¤ÏÆþÎϤ¹¤ë³Æʸ»ú¤ËÂФ·Å¬ÀÚ¤ÊÊÑ´¹´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤Ã¤Æ¡¤Å¬ÀÚ¤ÊÆ°ºî¤¬²Äǽ¤È¤Ê¤ë¡£</p>
+<p>
+¼«Ê¬¼«ÂΤ˥é¥Ù¥ëÉÕ¤±¤ò¤¹¤ë¤¤¤«¤Ê¤ë¥·¥¹¥Æ¥à¤Ç¤âƱÍͤÀ¤¬¡¤¥½¥Õ¥È¥¦¥§¥¢¤¬¡¤Éä¹æ²½Àë¸À¤ò¹¹¿·¤»¤º¤Ë¼ÂÂΤÎʸ»ú½¸¹çËô¤ÏÉä¹æ²½¤òÊѤ¨¤¿¤Ê¤é¤Ð¡¤XML¤ÎÉä¹æ²½Àë¸À¤Ï¡¤µ¡Ç½¤·¤Ê¤¤¡£Ê¸»úÉä¹æ²½¥ë¡¼¥Á¥ó¤Î¼ÂÁõ¼Ô¤Ï¡¤¼ÂÂΤΥé¥Ù¥ëÉÕ¤±¤Ë»ÈÍѤ¹¤ëÆâÉôµÚ¤Ó³°Éô¤Î¾ðÊó¤ÎÀµ³Î¤µ¤ÎÊݾڤËÃí°Õ¤¹¤ë¤Î¤¬Ë¾¤Þ¤·¤¤¡£
+</p>
+<p>£²ÈÖÌܤξì¹ç¤Ï¡¤XML¤Î¼ÂÂΤξ¤Ë¡¤Éä¹æ²½¾ðÊó¤¬Â¸ºß¤¹¤ë¤È¤­¤Ç¤¢¤Ã¤Æ¡¤¤¤¤¯¤Ä¤«¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥àµÚ¤Ó¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥È¥³¥ë¤Ç¤Ï¡¤¤½¤ÎÉä¹æ²½¾ðÊó¤¬Â¸ºß¤¹¤ë¡£Ê£¿ô¤Î¾ðÊó¤¬ÍøÍѤǤ­¤ë¤È¤­¡¤<!-- (e.g. both the
+internal encoding declaration and an external label), -->¤½¤ì¤é¤ÎÁêÂÐŪ¤ÊÍ¥ÀèÅÙµÚ¤Ó¤½¤ì¤é¤¬Ì·½â¤·¤¿¤È¤­¤Î˾¤Þ¤·¤¤½èÍýÊýË¡¤Ï¡¤XML¤ÎÇÛÁ÷¤Ë»ÈÍѤ¹¤ë¡¤¤è¤ê¹â¿å½à¤Î¥×¥í¥È¥³¥ë¤Î°ìÉô¤È¤·¤Æµ¬Äø¤¹¤ë¤Î¤¬¤è¤¤¡£Î㤨¤Ð¡¤ÆâÉô¥é¥Ù¥ëµÚ¤Ó³°Éô&header;¤Ë¸ºß¤¹¤ëMIME·Á¼°¤Î¥é¥Ù¥ë¤ÎÁêÂÐŪ¤ÊÍ¥ÀèÅÙ¤ËÂФ¹¤ëµ¬Â§¤Ï¡¤text/xmlµÚ¤Óapplication/xml¤ÎMIME·¿¤òÄêµÁ¤¹¤ëRFCʸ½ñ¤Î°ìÉô¤È¤Ê¤ëÊý¤¬¤è¤¤¡£¤·¤«¤·¡¤Áê¸ß±¿ÍÑÀ­¤Î¤¿¤á¤Ë¡¤¼¡¤Îµ¬Â§¤Ë½¾¤¦¤³¤È¤¬Ë¾¤Þ¤·¤¤¡£
+<ulist>
+<item><p>a) XML¤Î¼ÂÂΤ¬¥Õ¥¡¥¤¥ë¤Ë¸ºß¤¹¤ì¤Ð¡¤&byte-order-mark;µÚ¤ÓÉä¹æ²½Àë¸ÀPI¤Ï¡¤(¸ºß¤¹¤ì¤Ð)ʸ»úÉä¹æ²½¤ò·èÄꤹ¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¡£Â¾¤Î¤¹¤Ù¤Æ¤Î&hueristics;µÚ¤Ó¾ðÊó¤Ï¡¤&error;²óÉü¤Î¤¿¤á¤À¤±¤ËÍѤ¤¤ë¡£
+</p></item>
+<item><p>b) XML¤Î¼ÂÂΤòMIME·¿text/xml¤ÇÇÛÁ÷¤¹¤ë¤È¤­¤Ï¡¤¤³¤ÎMIME·¿¤Î¤â¤Ächarset¥Ñ¥é¥á¥¿¤¬Ê¸»úÉä¹æ²½ÊýË¡¤ò·èÄꤹ¤ë¡£Â¾¤Î¤¹¤Ù¤Æ¤Î&hueristics;µÚ¤Ó¾ðÊó¤Ï¡¤&error;²óÉü¤Î¤¿¤á¤À¤±¤ËÍѤ¤¤ë¡£
+</p></item>
+<item><p>c) XML¤Î¼ÂÂΤò <!-- via the HTTP protocol -->MIME·¿application/xml¤ÇÇÛÁ÷¤¹¤ë¤È¤­¤Ï¡¤&byte-order-mark;µÚ¤ÓÉä¹æ²½Àë¸ÀPI¤ò(¸ºß¤¹¤ì¤Ð)ʸ»úÉä¹æ²½¤Î·èÄê¤Î¤¿¤á¤Ë»ÈÍѤ¹¤ë¡£Â¾¤Î¤¹¤Ù¤Æ¤Î&hueristics;µÚ¤Ó¾ðÊó¤Ï&error;²óÉü¤Î¤¿¤á¤À¤±¤ËÍѤ¤¤ë¡£
+</p></item>
+</ulist>
+¤³¤ì¤é¤Îµ¬Â§¤Ï¡¤¥×¥í¥È¥³¥ë¤Ë¤Ä¤¤¤Æ¤Î»ñÎÁ¤¬¤Ê¤¤¤È¤­¤Ë¤À¤±ÍѤ¤¤ë¡£Æäˡ¤MIME·¿text/xmlµÚ¤Óapplication/xml¤òÄêµÁ¤·¤¿¤é¡¤¤³¤ì¤é¤òµ¬Äꤹ¤ëRFC¤Ë¸ºß¤¹¤ëµ¬Ä꤬¡¤¤³¤ì¤é¤Îµ¬Â§¤Ë¼è¤Ã¤ÆÂå¤ï¤ë¡£
+</p>
+</inform-div1>
+<!--
+<div1 id='sec-trival-grammar'>
+<head>A Trivial Grammar for XML Documents</head>
+<p>The grammar given in the body of this specification is relatively
+simple, but for some purposes it is convenient to have an even simpler
+one.
+A very simple, though non-conforming, <termref def="dt-xml-proc">XML
+processor</termref> could parse a <termref
+def="dt-wellformed">well-formed</termref> XML document using the
+following simplified grammar, recognizing all element boundaries
+correctly, though not expanding entity references and not detecting
+all errors:
+
+<scrap lang="ebnf">
+<head>Trivial text grammar</head>
+<prodgroup pcw2="5.5" pcw4="17" pcw5="10">
+<prod id='NT-simpleDoc'><lhs>simpleDoc</lhs>
+<rhs>(<nt def='NT-SimpleData'>SimpleData</nt>
+| <nt def='NT-Markup'>Markup</nt>)*</rhs></prod>
+<prod id="NT-SimpleData"><lhs>SimpleData</lhs>
+<rhs>[^&lt;&amp;]*</rhs>
+<com>cf. PCData</com>
+</prod>
+<prod id="NT-SimpleLit"><lhs>SimpleLit</lhs>
+<rhs>('"' [^"]* '"')</rhs>
+<rhs>|&nbsp;("'" [^']* "'")</rhs>
+<com>cf. SkipLit</com>
+</prod>
+<prod id='NT-Markup'><lhs>Markup</lhs>
+<rhs>'&lt;' <nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?
+<nt def='NT-SimpleLit'>SimpleLit</nt>)*
+<nt def='NT-S'>S</nt>? '&gt;'</rhs><com>start-tags </com>
+<rhs>| '&lt;' <nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?
+<nt def='NT-SimpleLit'>SimpleLit</nt>)*
+<nt def='NT-S'>S</nt>? '/&gt;'</rhs><com>empty elements</com>
+<rhs>| '&lt;/'
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+<com>end-tags </com>
+<rhs>| '&amp;' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<com>entity references </com>
+<rhs>| '&amp;#' [0-9]+ ';'</rhs>
+<com>decimal character references </com>
+<rhs>| '&hcro;' [0-9a-fA-F]+ ';'</rhs>
+<com>hexadecimal character references </com>
+<rhs>| '&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>
+<com>comments </com>
+<rhs>| '&lt;?'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*))
+'&pic;'</rhs>
+<com>processing instructions </com>
+<rhs>| '&lt;![CDATA['
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+']]&gt;'</rhs>
+<com>CDATA sections</com>
+<rhs>| '&lt;!DOCTYPE'
+(<nt def="NT-Char">Char</nt> - ('[' | ']'))+
+('['
+<nt def="NT-simpleDTD">simpleDTD</nt>*
+']')? '&gt;'</rhs>
+<com>doc type declaration</com>
+</prod>
+<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs>
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>
+<com>comment </com>
+<rhs>| '&lt;?'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*))
+'&pic;'</rhs>
+<com>processing instruction </com>
+<rhs><nt def="NT-SimpleLit">SimpleLit</nt></rhs>
+<rhs>(<nt def="NT-Char">Char</nt> - (']' | '&lt;' | '"' | "'"))+
+</rhs>
+
+<rhs>'&lt;!' (<nt def="NT-Char">Char</nt> - ('-'))+</rhs>
+<com>declarations other than comment</com>
+</prod>
+</prodgroup>
+</scrap>
+Most processors will require the more complex
+grammar given in the body of this specification.
+
+</p>
+</div1>
+-->
+
+<inform-div1 id="sec-xml-wg">
+<head>&informative;W3C XML ¥ï¡¼¥­¥ó¥°¥°¥ë¡¼¥×</head>
+
+<p>¤³¤Î&TR-or-Rec;¤Ï¡¤W3C XML ¥ï¡¼¥­¥ó¥°¥°¥ë¡¼¥×(WG)¤¬½àÈ÷¤·¡¤¸ø³«¤ò¾µÇ§¤·¤¿¡£WG¤¬¤³¤Î&TR-or-Rec;¤ò¾µÇ§¤¹¤ë¤È¤¤¤¦¤³¤È¤Ï¡¤WG¤Î¤¹¤Ù¤Æ¤Î°Ñ°÷¤¬¾µÇ§Åêɼ¤ò¹Ô¤Ã¤¿¤È¤¤¤¦¤³¤È¤òɬ¤º¤·¤â°ÕÌ£¤·¤Ê¤¤¡£XML WG¤Î¸½ºß¤Î°Ñ°÷µÚ¤Ó°ÊÁ°¤Î°Ñ°÷¤ò¼¡¤Ë¼¨¤¹¡£</p>
+
+<!-- parens and spaces removed from role elements by bosak 1997.11.07 -->
+<orglist>
+<member><name>Jon Bosak, Sun</name><role>Chair</role></member>
+<member><name>James Clark</name><role>Technical Lead</role></member>
+<member><name>Tim Bray, Textuality and Netscape</name><role>XML Co-editor</role></member>
+<member><name>Jean Paoli, Microsoft</name><role>XML Co-editor</role></member>
+<member><name>C. M. Sperberg-McQueen, U. of Ill.</name><role>XML Co-editor</role></member>
+<member><name>Dan Connolly, W3C</name></member>
+<member><name>Steve DeRose, INSO</name></member>
+<member><name>Dave Hollander, HP</name></member>
+<member><name>Eliot Kimber, Highland</name></member>
+<member><name>Eve Maler, ArborText</name></member>
+<member><name>Tom Magliery, NCSA</name></member>
+<member><name>Murray Maloney, Muzmo and Grif</name></member>
+<member><name>¼ÅÄ¡¡¿¿¡¤ÉٻΥ¼¥í¥Ã¥¯¥¹¾ðÊó¥·¥¹¥Æ¥à(³ô)</name></member>
+<member><name>Joel Nava, Adobe</name></member>
+<member><name>Peter Sharpe, SoftQuad</name></member>
+<member><name>John Tigue, DataChannel</name></member>
+</orglist>
+
+</inform-div1>
+</back>
+</spec>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+End:
+-->
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-iso-2022-jp.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-iso-2022-jp.xml
new file mode 100644
index 0000000000..0a44566619
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-iso-2022-jp.xml
@@ -0,0 +1,3549 @@
+<?xml version="1.0" encoding="iso-2022-jp"?>
+<!DOCTYPE spec SYSTEM "spec.dtd" [
+
+<!-- $BF|K\8lLu$N$?$a$N2r@OBP>]<BBN!J$3$3$+$i!K(B -->
+
+<!ENTITY TR-or-Rec "$B;EMM=q(B">
+<!-- <!ENTITY TR-or-Rec "$BI8=`>pJs(B(TR)"> -->
+<!ENTITY eTR-or-Rec "specification">
+<!-- <!ENTITY eTR-or-Rec "technical report(TR)"> -->
+<!ENTITY application "$B%"%W%j%1!<%7%g%s(B">
+<!ENTITY error "$B%(%i!<(B">
+<!ENTITY fatal-error "$BCWL?E*%(%i!<(B">
+<!ENTITY parsed-data "$B2r@O$5$l$k%G!<%?(B">
+<!ENTITY unparsed-data "$B2r@O$5$l$J$$%G!<%?(B">
+<!ENTITY parsed-entity "$B2r@OBP>]<BBN(B">
+<!ENTITY parser "$B%Q!<%5(B">
+<!ENTITY unparsed-entity "$B2r@OBP>]30<BBN(B">
+<!ENTITY well-formed "$B@07A<0(B">
+<!ENTITY valid "$BBEEv(B">
+<!ENTITY validity "$BBEEv@-(B">
+<!ENTITY escape "$BJL07$$(B">
+<!ENTITY prolog "$B=q$-(B">
+<!ENTITY surrogate-blocks "$B%5%m%2!<%H%V%m%C%/(B">
+<!ENTITY letter "$B;z(B">
+<!ENTITY ideographic "$BE}9g4A;z(B">
+<!ENTITY markup "$B%^!<%/IU$1(B">
+<!ENTITY left-angle-bracket "$BITEy9f(B($B>.$J$j(B)">
+<!ENTITY right-angle-bracket "$BITEy9f(B($BBg$J$j(B)">
+<!ENTITY string "$BJ8;zNs(B">
+<!ENTITY char-string "$BJ8;zNs(B"><!-- string of chararacters,
+ character strings, strings,
+ characters $B$O$9$Y$FJ8;zNs$H$9$k(B -->
+<!ENTITY replacement-text "$BCV49%F%-%9%H(B">
+<!ENTITY single-quote "$B0l=E0zMQId(B">
+<!ENTITY double-quote "$BFs=E0zMQId(B">
+<!ENTITY adaptations-annex "$BE,MQImB0=q(B">
+<!ENTITY root "$B%k!<%H(B">
+<!ENTITY base-character "$B4pDlJ8;z(B">
+<!ENTITY diacritical-mark "$BH/2;Id(B"><!--($B%@%$%"%/%j%F%#%+%k%^!<%/(B)$B$r=i=P$N$H$-Jd$&(B-->
+<!ENTITY composed-form "$B9g@.7A<0(B">
+<!ENTITY standalone "$B%9%?%s%I%"%m%s(B">
+<!ENTITY double-hyphen "$BFsO"%O%$%U%s(B">
+<!--<!ENTITY case-fold "$BBgJ8;z$+>.J8;z$X$NE}0l(B">-->
+<!-- <!ENTITY case-fold "$BHf3S$N$H$-!$BgJ8;z$H>.J8;z$NF10l;k(B">-->
+<!ENTITY parameter "$B%Q%i%a%?(B">
+<!ENTITY stream "$B%9%H%j!<%`(B">
+<!ENTITY validating "$BBEEv@-$r8!>Z$9$k(B">
+<!ENTITY non-validating "$BBEEv@-$r8!>Z$7$J$$(B">
+<!ENTITY user "$B%f!<%6(B">
+<!--<!ENTITY at-user-option "$B%f!<%6$,%*%W%7%g%s$r;XDj$7$?$H$-(B">-->
+<!ENTITY at-user-option "$B%f!<%6$N%*%W%7%g%s;XDj$K$h$C$F$O(B">
+<!ENTITY content-particle "$BFbMFAG;R(B">
+<!ENTITY processor "$B%W%m%;%5(B">
+<!ENTITY default "$B%G%U%)%k%H(B">
+<!ENTITY default-value "$B%G%U%)%k%HCM(B">
+<!ENTITY header "$B%X%C%@(B">
+<!ENTITY target "$B%?!<%2%C%H(B">
+<!ENTITY mixed-content "$B:.9gFbMF(B">
+<!ENTITY country-code "$B9q%3!<%I(B">
+<!ENTITY language-code "$B8@8l%3!<%I(B">
+<!ENTITY version "$BHG(B"> <!-- version 1.0$B$OBh(B1.0$BHG(B -->
+<!ENTITY match "$B%^%C%A(B">
+<!ENTITY character-value "$BJ8;zHV9f(B">
+<!ENTITY byte-order-mark "$B%P%$%H=g%^!<%/(B">
+<!ENTITY bypass "$B=hM}$7$J$$(B">
+<!ENTITY identifier "$B<1JL;R(B">
+<!-- <!ENTITY identify "$B<1JL$9$k(B"> -->
+<!ENTITY identify "$BFCDj$9$k(B">
+<!-- <!ENTITY identified "$B<1JL$5$l$k(B"> -->
+<!ENTITY identified "$BFCDj$5$l$k(B">
+<!ENTITY combining-character "$B7k9gJ8;z(B">
+<!ENTITY subset "$B%5%V%;%C%H(B">
+<!ENTITY token "$B%H!<%/%s(B">
+<!ENTITY literal "$B%j%F%i%k(B">
+
+<!ENTITY parenthesis "$B$+$C$3(B">
+<!ENTITY left-parenthesis "$B3+$-$+$C$3(B">
+<!ENTITY right-parenthesis "$BJD$8$+$C$3(B">
+
+<!-- $B$"$H$G5$$,$D$$$?$b$N(B JIS X0221$B$r8+$kI,MW$"$j(B -->
+
+<!ENTITY extender "$B%(%/%9%F%s%@(B">
+<!ENTITY property "$B%W%m%Q%F%#(B">
+<!ENTITY property-list "$B%W%m%Q%F%#%j%9%H(B">
+<!ENTITY property-file "$B%W%m%Q%F%#%U%!%$%k(B">
+<!ENTITY font-decomposition "$B%U%)%s%HJ,2r(B">
+<!ENTITY compatibility-decomposition "$B8_49@-J,2r(B">
+<!ENTITY compatibility-area "$B8_49@-NN0h(B">
+
+<!ENTITY language-identification "$B8@8l<1JL(B">
+
+<!ENTITY space-character "$B%9%Z!<%9J8;z(B">
+<!ENTITY space "$B%9%Z!<%9(B">
+<!ENTITY code-value "$B%3!<%ICM(B">
+<!ENTITY normative "$B5,Dj$N(B">
+<!ENTITY hueristics "$B%R%e!<%j%9%F%#%C%/(B">
+<!ENTITY informative "">
+
+<!ENTITY WebSGML 'ISO 8879$B$X$N(BWebSGML&adaptations-annex;'>
+<!ENTITY XML.version "1.0">
+<!ENTITY doc.date "1997$BG/(B12$B7n(B8$BF|(B">
+<!ENTITY iso6.doc.date "971208">
+<!ENTITY w3c.doc.date "97$BG/(B12$B7n(B3$BF|(B">
+<!ENTITY draft.day '8$BF|(B'>
+<!ENTITY draft.month '12$B7n(B'>
+<!ENTITY draft.year '1997$BG/(B'>
+
+<!-- $BF|K\8lLu$N$?$a$N2r@OBP>]<BBN!J$3$3$^$G!K(B -->
+
+<!-- LAST TOUCHED BY: Tim Bray, 3 Dec 1997 -->
+
+<!-- The words 'FINAL EDIT' in comments mark places where changes
+need to be made after approval of the document by the ERB, before
+publication. -->
+
+<!ENTITY XML.version "1.0">
+<!ENTITY doc.date "8 December 1997">
+<!ENTITY iso6.doc.date "971208">
+<!ENTITY w3c.doc.date "03-Dec-97">
+<!ENTITY draft.day '8'>
+<!ENTITY draft.month 'December'>
+<!ENTITY draft.year '1997'>
+
+<!ENTITY WebSGML
+ 'WebSGML Adaptations Annex to ISO 8879'>
+
+<!ENTITY newline " ">
+<!-- old: <!ENTITY newline "&#8232;"> -->
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!--<!ENTITY amp "&"> -->
+<!ENTITY xmlpio "'&lt;?xml'">
+<!ENTITY pic "'?>'">
+<!ENTITY br "\n">
+<!ENTITY cellback '#c0d9c0'>
+<!ENTITY mdash "--"> <!-- was: <!ENTITY mdash "&#38;#151;"> -->
+<!ENTITY com "--">
+<!ENTITY como "--">
+<!ENTITY comc "--">
+<!ENTITY hcro "&amp;#x">
+<!-- <!ENTITY nbsp ""> -->
+<!ENTITY nbsp "&#160;">
+<!ENTITY magicents "<code>amp</code>,
+<code>lt</code>,
+<code>gt</code>,
+<code>apos</code>,
+<code>quot</code>">
+
+<!--$BF|K\8lLu$K$D$$$F(B: $B%3%a%s%H$OK]LuBP>]$+$i30$7$^$7$?!#NkLZOBIW(B -->
+<!-- audience and distribution status: for use at publication time -->
+<!-- -->
+<!ENTITY doc.audience "$B8x3+%l%S%e!<5Z$S5DO@(B">
+<!ENTITY doc.distribution "$B%F%-%9%H5Z$SK!N'>e$NCm0U$r2~JQ$7$J$$8B$j!$(B
+$B<+M3$KG[I[$7$F$b$h$$(B">
+
+]>
+
+<!-- for Panorama *-->
+<?VERBATIM "eg" ?>
+
+<spec>
+<header>
+<title>$B3HD%2DG=$J(B&markup;$B8@8l(B (XML)</title>
+<version>$BBh(B1.0&version;</version>
+<w3c-designation>PR-xml-&iso6.doc.date;</w3c-designation>
+<w3c-doctype>World Wide Web Consortium</w3c-doctype>
+<pubdate><day>&draft.day;</day><month>&draft.month;</month><year>&draft.year;</year></pubdate>
+<notice><p>$B$3$NAp0F$O!$(BXML WG$B5Z$SB>$N4X78<T$K$h$k%l%S%e!<$N$?$a$N$b$N$G$"$C$F!$8x3+$N5DO@$N$?$a$N$b$N$G$O$J$$!#(B
+<!-- FINAL EDIT: FIX --></p></notice>
+<publoc>
+<loc href="http://www.w3.org/TR/PR-xml-&iso6.doc.date;">
+http://www.w3.org/TR/PR-xml-&iso6.doc.date;</loc></publoc>
+<prevlocs>
+<loc href='http://www.w3.org/TR/WD-xml-961114'>
+http://www.w3.org/TR/WD-xml-961114</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970331'>
+http://www.w3.org/TR/WD-xml-lang-970331</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970630'>
+http://www.w3.org/TR/WD-xml-lang-970630</loc>
+<loc href='http://www.w3.org/TR/WD-xml-970807'>
+http://www.w3.org/TR/WD-xml-970807</loc>
+<loc href='http://www.w3.org/TR/WD-xml-971117'>
+http://www.w3.org/TR/WD-xml-971117</loc>
+</prevlocs>
+<authlist>
+<author><name>Tim Bray</name>
+<affiliation>Textuality and Netscape</affiliation>
+<email
+href="mailto:tbray@textuality.com">tbray@textuality.com</email></author>
+<author><name>Jean Paoli</name>
+<affiliation>Microsoft</affiliation>
+<email href="mailto:jeanpa@microsoft.com">jeanpa@microsoft.com</email></author>
+<author><name>C. M. Sperberg-McQueen</name>
+<affiliation>University of Illinois at Chicago</affiliation>
+<email href="mailto:cmsmcq@uic.edu">cmsmcq@uic.edu</email></author>
+</authlist>
+<status>
+ <p>$B$3$N(B&TR-or-Rec;$B$O(B, 1997$BG/(B12$B7n$K(BWorld Wide Web Consortium$B$+$i(B
+$B8xI=$5$l$?4+9p0F(BExtensible Markup Language version$BBh(B1.0$BHG$rK]Lu$7(B, $B5;(B
+$B=QE*FbMF$rJQ99$9$k$3$H$J$/:n@.$7$?(B&TR-or-Rec;$B$G$"$k!#(BThis &eTR-or-Rec;
+is a translation of the XML proposed recommendation 1.0
+published by the World Wide Web Consortium in December 1997. It is
+intended that &eTR-or-Rec; is technically identical to the original.</p>
+
+<p>$B86J8$K$"$k!"Cx:n8"$K4X$7$F$N5-=R$r<!$K<($9!#(BThe
+original copyright notice is shown below:</p>
+
+<p>$B$3$NHG$N(BXML$B$N5,Dj$O!$8x3+%l%S%e!<5Z$S5DO@$r(B
+$BL\E*$H$9$k!#%F%-%9%H5Z$SK!N'>e$NCm0U$r2~JQ$7$J$$8B$j!$<+M3$K(B
+$BG[I[$7$F$b$h$$!#(BThis version of the XML specification is for
+public review and discussion. It may be distributed freely,
+as long as all text and legal notices remain intact.</p>
+
+<p>$B$3$N(B&TR-or-Rec;$B$N85$H$J$C$?(BXML$B4+9p0F$O!$(B1998$BG/(B2$B7n$K(BWorld
+Wide Web Consortium$B$+$i8xI=$5$l$?(BXML$B4+9p$K$h$C$F$9$G$KCV$-49(B
+$B$($i$l$F$$$k!#$3$NI8=`>pJs$O!$(BXML$B4+9p$K=>$C$FD{@5$9$k$3$H$r(B
+$BM=Dj$7$F$$$k!#(BThe XML Proposed Recommendation is superseded
+by the XML Recommendation which was published by the World
+Wide Web Consortium in February 1998. It is intended that
+this &eTR-or-Rec; be revised accordingly in the near future.</p>
+
+<p>$B$3$N(B&TR-or-Rec;$B$O!$0BDj$7$?$b$N$G$"$C$F!$:rG/Mh$N(B<loc
+href='http://www.w3.org/XML'>XML$B3hF0(B</loc>$B$rDL$8$F:n@.$5$l$?!$0lO"$N:n(B
+$B6HAp0F$r85$H$9$k!#8=:_!$9-HO0O$K;HMQ$5$l$F$$$k9q:]E*$J%F%-%9%H=hM}$NI8(B
+$B=`(B($BI8=`0lHL2=(B&markup;$B8@8l!$(BStandard Generalized Markup Language, ISO
+8879:1986$B$KDI2C5Z$SD{@5$r2C$($?$b$N(B)$B$N!$(BWWW$B>e$G$N;HMQ$N$?$a$K(B&subset;
+$B2=$7$?8@8l$r!$$3$N(B&TR-or-Rec;$B$O!$5,Dj$9$k!#(BISO 8879$B$N$I$N5!G=$r$3$N(B
+&subset;$B$K;D$9$+!$$H$$$&7hDj$K$D$$$F$N>\:Y$O!$(B<loc
+href='http://www.w3.org/XML/#WG-decisions'>$BJLESMQ0U$9$k(B</loc>$B!#(BXML$B$O!$(B
+$B4{$K$$$/$D$+$N>&IJ$G%5%]!<%H$5$l!$(BXML$B$r%5%]!<%H$9$k(B<loc
+href='http://www.w3.org/XML/#software'>$B%U%j!<%&%'%"(B</loc>$B$N?t$bA}$($F(B
+$B$$$k!#(BXML$B$K4X$9$k8x3+$NO@5D$b!$%*%s%i%$%s$G(B<loc
+href='http://www.w3.org/XML/#discussion'>$BF~<j$G$-$k(B</loc>$B!#(BIt is a
+stable document derived from a series of working drafts produced over
+the last year as deliverables of the <loc
+href='http://www.w3.org/XML'>XML activity</loc>. It specifies a
+language created by subsetting an existing, widely used international
+text processing standard (Standard Generalized Markup Language, ISO
+8879:1986 as amended and corrected) for use on the World Wide Web.
+Details of the decisions regarding which features of ISO 8879 to
+retain in the subset <loc
+href='http://www.w3.org/XML/#WG-decisions'>are available
+separately</loc>. XML is already supported by some commercial
+products, and there are a growing number of <loc
+href='http://www.w3.org/XML/#software'>free implementations</loc>.
+Public discussions of XML <loc
+href='http://www.w3.org/XML/#discussion'>are accessible
+online</loc>.</p>
+
+<p>$B$3$N(B&TR-or-Rec;$B$G$O!$(B<bibref ref="Berners-Lee"/>$B$KDj5A$9$k(B
+URI(Uniform Resource Identifier)$B$r;HMQ$9$k!#(BURI$B$N@)Dj:n6H$O?J9TCf$G$"$C(B
+$B$F!$(B<bibref ref="RFC1738"/>$B5Z$S(B<bibref ref="RFC1808"/>$B$r99?7$9$kM=Dj$H(B
+$B$J$C$F$$$k!#$3$N:n6H$,(BRFC$B$H$7$F<u$1F~$l$i$l$J$$>l9g$O!$$3$N5,DxFb$N(BURI
+$B$X$N;2>H$O!$(BURL(Uniform Resource Locator)$B$X$N;2>H$KBe$o$k!#(BThis
+specification uses the term URI, which is defined by <bibref
+ref="Berners-Lee"/>, a work in progress expected to update <bibref
+ref="RFC1738"/> and <bibref ref="RFC1808"/>. Should the work not be
+accepted as an RFC, the references to uniform resource identifiers
+(URIs) in this specification will become references to uniform
+resource locators (URLs).</p>
+
+ <p>XML$B$N;EMM$K=`5r$7$F$$$k$+$I$&$+$N4p=`$H$J$k$O(BW3C$B$N%5%$%H$K$"(B
+$B$k86J8$G$"$k!#(BThe normative version of the specification is
+the English version found at the W3C site.</p>
+
+ <p>$B$3$NI8=`>pJs$O86;EMM$H5;=QE*$KF10l$G$"$k$3$H$r0U?^$7$F$$$k$,!"(B
+$BK]Lu>e$N8m$j$O$"$jF@$k!#(BAlthough this technical report is
+intended to be technically identical to the original, it may
+contain errors from the translation.</p>
+
+ <p>$BHw9M(B: $B865,Dj$H$N5,Dj2U=j$NBP1~4X78$rL@$i$+$K$9$k$?$a!"$3$N(B
+&TR-or-Rec;$B$N@a9=@.5Z$S@aHV9f$O!"865,Dj$N$=$l$i$r$G$-$k$@$1J]B8$7$F$$(B
+$B$k!#$3$N(B&TR-or-Rec;$B$N(BWeb$BHG$O!"865,Dj$N(BHTML$B%?%0$r$=$N$^$^J]B8$7$F$$$k!#(B
+</p>
+</status>
+<!-- out of date
+<statusp>This is a W3C Working Draft for review by W3C members and other
+interested parties. It is a draft document and may be updated,
+replaced, or obsoleted by other documents at any time. It is
+inappropriate to use W3C Working Drafts as reference material or to
+cite them as other than "work in progress". A list of current W3C
+working drafts can be found at
+<loc href="http://www.w3.org/TR">http://www.w3.org/TR</loc>.</statusp>
+<statusp><emph>Note:</emph> Since working drafts are subject to frequent
+change, you are advised to reference the above URL, rather than the
+URLs for working drafts themselves.</statusp>
+<statusp>This work is part of the W3C SGML Activity (for current
+status, see <loc href="http://www.w3.org/MarkUp/SGML/Activity"
+>http://www.w3.org/MarkUp/SGML/Activity</loc>).</statusp>
+<p>The current
+draft of this specification
+presupposes the successful completion of the current
+work on the &WebSGML;, being prepared by ISO/IEC JTC1
+at the time this draft specification was drafted.
+If it is not
+adopted in the expected form, some clauses of this specification
+may change, and some
+recommendations now labeled "<termref def="dt-interop">for
+interoperability</termref>" will become requirements labeled
+"<termref def="dt-compat">for compatibility</termref>".
+</p>
+<p>The current draft of this specification uses the term
+URI, which is defined by
+<bibref ref="Berners-Lee"/>,
+which is work in progress expected to update
+<bibref ref="RFC1738"/> and <bibref ref="RFC1808"/>.
+Should the work in this draft not be accepted as an RFC, the
+references to uniform resource identifiers (URIs) in this
+specification will become references to uniform resource
+locators (URLs).</p>
+</status> -->
+<abstract>
+<p>$B3HD%2DG=$J(B&markup;$B8@8l(B(XML)$B$O(BSGML$B$N4JC1$JJ}8@$G$"$C$F!$$3$N(B&TR-or-Rec;$B$G!$$=$N$9$Y$F$r5,Dj$9$k!#(BXML$B$NL\I8$O!$8=:_$N(BHTML$B$HF1MM$K!$0lHL@-$N$"$k(BSGML$B$r%&%'%V>e$GG[I[!$<u?.5Z$S=hM}$G$-$k$3$H$H$9$k!#(BXML$B$O<BAu$,MF0W$G$"$C$F!$(BSGML$B5Z$S(BHTML$B$N$I$A$i$KBP$7$F$bAj8_1?MQ@-$rJ]$D@_7W$,$J$5$l$F$$$k!#(B</p>
+</abstract>
+<pubstmt>
+<p>Chicago, Vancouver, Mountain View, et al.:
+World-Wide Web Consortium, XML$B:n6H%0%k!<%W(B, 1996, 1997.</p>
+</pubstmt>
+<sourcedesc>
+<p>Created in electronic form.</p>
+</sourcedesc>
+<langusage>
+<language id='EN'>English</language>
+<language id='ebnf'>Extended Backus-Naur Form (formal grammar)</language>
+</langusage>
+<revisiondesc>
+<slist>
+<sitem>1997-12-03 : CMSMcQ : yet further changes</sitem>
+<sitem>1997-12-02 : TB : further changes (see TB to XML WG,
+2 December 1997)</sitem>
+<sitem>1997-12-02 : CMSMcQ : deal with as many corrections and
+comments from the proofreaders as possible:
+entify hard-coded document date in pubdate element,
+change expansion of entity WebSGML,
+update status description as per Dan Connolly (am not sure
+about refernece to Berners-Lee et al.),
+add 'The' to abstract as per WG decision,
+move Relationship to Existing Standards to back matter and
+combine with References,
+re-order back matter so normative appendices come first,
+re-tag back matter so informative appendices are tagged informdiv1,
+remove XXX XXX from list of 'normative' specs in prose,
+move some references from Other References to Normative References,
+add RFC 1738, 1808, and 2141 to Other References (they are not
+normative since we do not require the processor to enforce any
+rules based on them),
+add reference to 'Fielding draft' (Berners-Lee et al.),
+move notation section to end of body,
+drop URIchar non-terminal and use SkipLit instead,
+lose stray reference to defunct nonterminal 'markupdecls',
+move reference to Aho et al. into appendix (Tim's right),
+add prose note saying that hash marks and fragment identifiers are
+NOT part of the URI formally speaking, and are NOT legal in
+system identifiers (processor 'may' signal an error).
+Work through:
+Tim Bray reacting to James Clark,
+Tim Bray on his own,
+Eve Maler,
+
+NOT DONE YET:
+change binary / text to unparsed / parsed.
+handle James's suggestion about &lt; in attriubte values
+uppercase hex characters,
+namechar list,
+</sitem>
+<sitem>1997-12-01 : JB : add some column-width parameters</sitem>
+<sitem>1997-12-01 : CMSMcQ : begin round of changes to incorporate
+recent WG decisions and other corrections:
+binding sources of character encoding info (27 Aug / 3 Sept),
+correct wording of Faust quotation (restore dropped line),
+drop SDD from EncodingDecl,
+change text at version number 1.0,
+drop misleading (wrong!) sentence about ignorables and extenders,
+modify definition of PCData to make bar on msc grammatical,
+change grammar's handling of internal subset (drop non-terminal markupdecls),
+change definition of includeSect to allow conditional sections,
+add integral-declaration constraint on internal subset,
+drop misleading / dangerous sentence about relationship of
+entities with system storage objects,
+change table body tag to htbody as per EM change to DTD,
+add rule about space normalization in public identifiers,
+add description of how to generate our name-space rules from
+Unicode character database (needs further work!).
+</sitem>
+<sitem>1997-10-08 : TB : Removed %-constructs again, new rules
+for PE appearance.</sitem>
+<sitem>1997-10-01 : TB : Case-sensitive markup; cleaned up
+element-type defs, lotsa little edits for style</sitem>
+<sitem>1997-09-25 : TB : Change to elm's new DTD, with
+substantial detail cleanup as a side-effect</sitem>
+<sitem>1997-07-24 : CMSMcQ : correct error (lost *) in definition
+of ignoreSectContents (thanks to Makoto Murata)</sitem>
+<sitem>Allow all empty elements to have end-tags, consistent with
+SGML TC (as per JJC).</sitem>
+<sitem>1997-07-23 : CMSMcQ : pre-emptive strike on pending corrections:
+introduce the term 'empty-element tag', note that all empty elements
+may use it, and elements declared EMPTY must use it.
+Add WFC requiring encoding decl to come first in an entity.
+Redefine notations to point to PIs as well as binary entities.
+Change autodetection table by removing bytes 3 and 4 from
+examples with Byte Order Mark.
+Add content model as a term and clarify that it applies to both
+mixed and element content.
+</sitem>
+<sitem>1997-06-30 : CMSMcQ : change date, some cosmetic changes,
+changes to productions for choice, seq, Mixed, NotationType,
+Enumeration. Follow James Clark's suggestion and prohibit
+conditional sections in internal subset. TO DO: simplify
+production for ignored sections as a result, since we don't
+need to worry about parsers which don't expand PErefs finding
+a conditional section.</sitem>
+<sitem>1997-06-29 : TB : various edits</sitem>
+<sitem>1997-06-29 : CMSMcQ : further changes:
+Suppress old FINAL EDIT comments and some dead material.
+Revise occurrences of % in grammar to exploit Henry Thompson's pun,
+especially markupdecl and attdef.
+Remove RMD requirement relating to element content (?).
+</sitem>
+<sitem>1997-06-28 : CMSMcQ : Various changes for 1 July draft:
+Add text for draconian error handling (introduce
+the term Fatal Error).
+RE deleta est (changing wording from
+original announcement to restrict the requirement to validating
+parsers).
+Tag definition of validating processor and link to it.
+Add colon as name character.
+Change def of %operator.
+Change standard definitions of lt, gt, amp.
+Strip leading zeros from #x00nn forms.</sitem>
+<sitem>1997-04-02 : CMSMcQ : final corrections of editorial errors
+found in last night's proofreading. Reverse course once more on
+well-formed: Webster's Second hyphenates it, and that's enough
+for me.</sitem>
+<sitem>1997-04-01 : CMSMcQ : corrections from JJC, EM, HT, and self</sitem>
+<sitem>1997-03-31 : Tim Bray : many changes</sitem>
+<sitem>1997-03-29 : CMSMcQ : some Henry Thompson (on entity handling),
+some Charles Goldfarb, some ERB decisions (PE handling in miscellaneous
+declarations. Changed Ident element to accept def attribute.
+Allow normalization of Unicode characters. move def of systemliteral
+into section on literals.</sitem>
+<sitem>1997-03-28 : CMSMcQ : make as many corrections as possible, from
+Terry Allen, Norbert Mikula, James Clark, Jon Bosak, Henry Thompson,
+Paul Grosso, and self. Among other things: give in on "well formed"
+(Terry is right), tentatively rename QuotedCData as AttValue
+and Literal as EntityValue to be more informative, since attribute
+values are the <emph>only</emph> place QuotedCData was used, and
+vice versa for entity text and Literal. (I'd call it Entity Text,
+but 8879 uses that name for both internal and external entities.)</sitem>
+<sitem>1997-03-26 : CMSMcQ : resynch the two forks of this draft, reapply
+my changes dated 03-20 and 03-21. Normalize old 'may not' to 'must not'
+except in the one case where it meant 'may or may not'.</sitem>
+<sitem>1997-03-21 : TB : massive changes on plane flight from Chicago
+to Vancouver</sitem>
+<sitem>1997-03-21 : CMSMcQ : correct as many reported errors as possible.
+</sitem>
+<sitem>1997-03-20 : CMSMcQ : correct typos listed in CMSMcQ hand copy of spec.</sitem>
+<sitem>1997-03-20 : CMSMcQ : cosmetic changes preparatory to revision for
+WWW conference April 1997: restore some of the internal entity
+references (e.g. to docdate, etc.), change character xA0 to &amp;nbsp;
+and define nbsp as &amp;#160;, and refill a lot of paragraphs for
+legibility.</sitem>
+<sitem>1996-11-12 : CMSMcQ : revise using Tim's edits:
+Add list type of NUMBERED and change most lists either to
+BULLETS or to NUMBERED.
+Suppress QuotedNames, Names (not used).
+Correct trivial-grammar doc type decl.
+Rename 'marked section' as 'CDATA section' passim.
+Also edits from James Clark:
+Define the set of characters from which [^abc] subtracts.
+Charref should use just [0-9] not Digit.
+Location info needs cleaner treatment: remove? (ERB
+question).
+One example of a PI has wrong pic.
+Clarify discussion of encoding names.
+Encoding failure should lead to unspecified results; don't
+prescribe error recovery.
+Don't require exposure of entity boundaries.
+Ignore white space in element content.
+Reserve entity names of the form u-NNNN.
+Clarify relative URLs.
+And some of my own:
+Correct productions for content model: model cannot
+consist of a name, so "elements ::= cp" is no good.
+</sitem>
+<sitem>1996-11-11 : CMSMcQ : revise for style.
+Add new rhs to entity declaration, for parameter entities.</sitem>
+<sitem>1996-11-10 : CMSMcQ : revise for style.
+Fix / complete section on names, characters.
+Add sections on parameter entities, conditional sections.
+Still to do: Add compatibility note on deterministic content models.
+Finish stylistic revision.</sitem>
+<sitem>1996-10-31 : TB : Add Entity Handling section</sitem>
+<sitem>1996-10-30 : TB : Clean up term &amp; termdef. Slip in
+ERB decision re EMPTY.</sitem>
+<sitem>1996-10-28 : TB : Change DTD. Implement some of Michael's
+suggestions. Change comments back to //. Introduce language for
+XML namespace reservation. Add section on white-space handling.
+Lots more cleanup.</sitem>
+<sitem>1996-10-24 : CMSMcQ : quick tweaks, implement some ERB
+decisions. Characters are not integers. Comments are /* */ not //.
+Add bibliographic refs to 10646, HyTime, Unicode.
+Rename old Cdata as MsData since it's <emph>only</emph> seen
+in marked sections. Call them attribute-value pairs not
+name-value pairs, except once. Internal subset is optional, needs
+'?'. Implied attributes should be signaled to the app, not
+have values supplied by processor.</sitem>
+<sitem>1996-10-16 : TB : track down &amp; excise all DSD references;
+introduce some EBNF for entity declarations.</sitem>
+<sitem>1996-10-?? : TB : consistency check, fix up scraps so
+they all parse, get formatter working, correct a few productions.</sitem>
+<sitem>1996-10-10/11 : CMSMcQ : various maintenance, stylistic, and
+organizational changes:
+Replace a few literals with xmlpio and
+pic entities, to make them consistent and ensure we can change pic
+reliably when the ERB votes.
+Drop paragraph on recognizers from notation section.
+Add match, exact match to terminology.
+Move old 2.2 XML Processors and Apps into intro.
+Mention comments, PIs, and marked sections in discussion of
+delimiter escaping.
+Streamline discussion of doctype decl syntax.
+Drop old section of 'PI syntax' for doctype decl, and add
+section on partial-DTD summary PIs to end of Logical Structures
+section.
+Revise DSD syntax section to use Tim's subset-in-a-PI
+mechanism.</sitem>
+<sitem>1996-10-10 : TB : eliminate name recognizers (and more?)</sitem>
+<sitem>1996-10-09 : CMSMcQ : revise for style, consistency through 2.3
+(Characters)</sitem>
+<sitem>1996-10-09 : CMSMcQ : re-unite everything for convenience,
+at least temporarily, and revise quickly</sitem>
+<sitem>1996-10-08 : TB : first major homogenization pass</sitem>
+<sitem>1996-10-08 : TB : turn "current" attribute on div type into
+CDATA</sitem>
+<sitem>1996-10-02 : TB : remould into skeleton + entities</sitem>
+<sitem>1996-09-30 : CMSMcQ : add a few more sections prior to exchange
+ with Tim.</sitem>
+<sitem>1996-09-20 : CMSMcQ : finish transcribing notes.</sitem>
+<sitem>1996-09-19 : CMSMcQ : begin transcribing notes for draft.</sitem>
+<sitem>1996-09-13 : CMSMcQ : made outline from notes of 09-06,
+do some housekeeping</sitem>
+</slist>
+</revisiondesc>
+</header>
+<body>
+<div1 id='sec-intro'>
+<head>$B0lHL;v9`(B</head>
+<!-- <div2 id='sec-scope'>
+ <head>$BE,MQHO0O(B</head> -->
+<p>$B3HD%2DG=$J(B&markup;$B8@8l(BXML(eXtensible Markup Language)$B$O!$(B<termref def="dt-xml-doc">XML$BJ8=q(B</termref>$B$H$$$&%G!<%?%*%V%8%'%/%H$N%/%i%9$r5,Dj$7!$(BXML$BJ8=q$r=hM}$9$k%W%m%0%i%`$NF0:n$N0lIt$r5,Dj$9$k!#(BXML$B$O!$(BSGML($BI8=`0lHL2=(B&markup;$B8@8l!$(BStandard Generalized Markup Language)<bibref ref='ISO8879'/>$B$N@)8B$7$?(B&subset;$B$H$9$k!#9=B$>e!$(BXML$BJ8=q$O!$$+$J$i$:(BSGML$B5,3J$KE,9g$9$k!#(B</p>
+<p>XML$BJ8=q$O!$(B<termref def="dt-entity">$B<BBN(B</termref>$B$H$$$&5-21C10L$+$i$J$j!$<BBN$O!$(B&parsed-data;$BKt$O(B&unparsed-data;$B$+$i$J$k!#(B&parsed-data;$B$O!$(B<termref def="dt-character">$BJ8;z(B</termref>$B$+$i$J$j!$$=$N0lIt$O!$J8=q$N(B<termref def="dt-chardata">$BJ8;z%G!<%?(B</termref>$B$r9=@.$7!$0lIt$O!$(B<termref def="dt-markup">&markup;</termref>$B$r9=@.$9$k!#(B&markup;$B$O!$J8=q$N5-21%l%$%"%&%H5Z$SO@M}9=B$$K$D$$$F$N5-=R$rI=$9Id9f$H$9$k!#(BXML$B$O!$5-21%l%$%"%&%H5Z$SO@M}9=B$$K$D$$$F$N@)Ls>r7o$r5-=R$9$k5!9=$rDs6!$9$k!#(B</p>
+<p><termdef id="dt-xml-proc" term="XML&processor;"><term>XML&processor;</term>$B$H$$$&%=%U%H%&%'%"%b%8%e!<%k$O!$(BXML$BJ8=q$rFI$_9~$_!$$=$NFbMF5Z$S9=B$$X$N%"%/%;%9$rDs6!$9$k$?$a$KMQ$$$k!#(B </termdef> <termdef id="dt-app" term="&application;">XML&processor;$B$O!$B>$N%b%8%e!<%k$N$?$a$KF0:n$9$k$3$H$rA0Ds$H$7!$$=$N%b%8%e!<%k$r(B<term>&application;</term>$B$H$$$&!#(B</termdef>$B$3$N(B&TR-or-Rec;$B$O!$(BXML&processor;$B$,9T$o$J$1$l$P$J$i$J$$?6Iq$$$r5,Dj$9$k!#$D$^$j!$(BXML$B%G!<%?$NFI9~$_J}K!$r5,Dj$7!$(B&application;$B$KDs6!$9$k>pJs$r5,Dj$9$k!#(B</p>
+<!-- </div2> -->
+<div2 id='sec-origin-goals'>
+<head>$B7P0^5Z$SL\I8(B</head>
+<p>1996$BG/$K(BWorld Wide Web Consortium(W3C)$B$NCf$K@_N)$7$?(BXML$B:n6H%0%k!<%W(B($B0JA0$O!$(B SGML$BJT=8%l%S%e!<0Q0w2q$H8F$P$l$?(B)$B$,!$(BXML$B$r3+H/$7$?!#$3$N:n6H%0%k!<%W$N5DD9$r!$(BSun Microsystems$B$N(BJon Bosak$B$,6P$a$k!#(BW3C$B$,AH?%$7!$0JA0$O(BSGML$B:n6H%0%k!<%W$H8F$P$l$?(BXML SIG(Special Interest Group)$B$b!$(BXML$B$N@)Dj$KHs>o$K3hH/$K;22h$7$?!#(B
+<!--JIS$B$G$O(B? XML$B:n6H%0%k!<%W$N%a%s%P$rIUO?$K<($9!#(B-->Dan Connolly$B$O!$:n6H%0%k!<%W$N(BW3C$B$K$*$1$kO"Mm78$rL3$a$?!#(B</p>
+<p>XML$B$N@_7WL\I8$r!$<!$K<($9!#(B<ulist>
+<item><p>a) XML$B$O!$(BInternet$B>e$G$=$N$^$^;HMQ$G$-$k!#(B</p></item>
+<item><p>b) XML$B$O!$9-HO0O$N(B&application;$B$r;Y1g$9$k!#(B</p></item>
+<item><p>c) XML$B$O!$(BSGML$B$H8_49@-$r$b$D!#(B</p></item>
+<item><p>d) XML$BJ8=q$r=hM}$9$k%W%m%0%i%`$r=q$/$3$H$O!$MF0W$G$J$1$l$P$J$i$J$$!#(B</p></item>
+<item><p>e) XML$B$G$O!$%*%W%7%g%s$N5!G=$O$G$-$k$@$1>/$J$/$7!$0l$D$bB8:_$7$J$$$3$H$rL\;X$9!#(B</p></item>
+<item><p>f) XML$BJ8=q$O!$?M4V$K$H$C$FFI$_$d$9$/!$==J,$KM}2r$7$d$9$$!#(B</p></item>
+<item><p>g) XML$B$N@_7W$O!$$9$_$d$+$K9T$($J$1$l$P$J$i$J$$!#(B</p></item>
+<item><p>h) XML$B$N@_7W$O!$87L)5Z$S4J7i$G$J$1$l$P$J$i$J$$!#(B</p></item>
+<item><p>i) XML$BJ8=q$O!$MF0W$K:n@.$G$-$k!#(B</p></item>
+<item><p>j) XML$B$G$O!$(B&markup;$B$N?t$r8:$i$9$3$H$O!$=EMW$G$O$J$$!#(B</p></item></ulist>
+</p>
+<p>XML$BBh(B&XML.version;&version;$B$rM}2r$7!$$=$l$r=hM}$9$k7W;;5!%W%m%0%i%`$r=q$/$?$a$K==J,$J>pJs$O!$$3$N(B&TR-or-Rec;$B5Z$S4XO"$9$k5,3J(B($BJ8;zMQ$H$7$F!$(BUnicode$B5Z$S(BISO/IEC 10646$B!$(B<!--* XXX for Uniform Resource Identifiers, *-->&language-identification;$B%?%0MQ$H$7$F!$%$%s%?%M%C%H(B RFC 1766$B!$(B&language-code;$BMQ$H$7$F!$(BISO 639$B!$JB$S$K(B&country-code;$BMQ$H$7$F!$(BISO 3166)$B$G!$$9$Y$F<($9!#(B</p>
+<p>$B$3$N(B&version;$B$N(BXML$B$N5,Dj(B<!-- (&doc.date;) -->$B$O!$8x3+%l%S%e!<5Z$S5DO@$rL\E*$H$9$k!#%F%-%9%H5Z$SK!N'>e$NCm0U$r2~JQ$7$J$$8B$j!$<+M3$KG[I[$7$F$b$h$$!#(B</p>
+</div2>
+<div2 id='sec-terminology'>
+<head>$BDj5A(B</head>
+<p>XML$BJ8=q$N5,Dj$N$?$a$K;HMQ$9$kMQ8l$O!$$3$N(B&TR-or-Rec;$BFb$GDj5A$9$k!#<!$K<($98l6g$O!$$=$l$i$NMQ8l$rDj5A$9$k$?$a!$5Z$S(BXML&processor;$B$NF0$-$r5,Dj$9$k$?$a$K;HMQ$9$k!#(B
+<glist>
+<gitem>
+<label>1.2.1 $B$7$F$b$h$$(B(may)</label>
+<def><p><termdef id="dt-may" term="$B$7$F$b$h$$(B">$BE,9g$9$kJ8=qKt$O(BXML&processor;$B$O!$5-=R$5$l$?$H$*$j$KF0:n$7$F$b$h$$$,!$$=$N$H$*$j$K$9$kI,MW$O$J$$!#(B</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.2 $B$7$J$1$l$P$J$i$J$$(B(must)</label>
+<def><p>$BE,9g$9$kJ8=qKt$O(BXML&processor;$B$O!$5-=R$5$l$?$H$*$j$KF0:n$9$k$3$H$,MW5a$5$l$k!#$=$&$G$J$1$l$P!$(B&error;$B$H$9$k!#(B<!-- do NOT change this! this is what defines a violation ofa 'must' clause as 'an error'. -MSM -->
+</p></def>
+</gitem>
+<gitem>
+<label>1.2.3 &error;(error)</label>
+<def><p><termdef id="dt-error" term="&error;">$B$3$N(B&TR-or-Rec;$B$,Dj$a$k5,B'$KBP$9$k0cH?!#7k2L$ODj5A$7$J$$!#E,9g$9$k%=%U%H%&%'%"$O!$(B&error;$B$r8!=P$7$FJs9p$7$F$b$h$/!$(B&error;$B$+$i2sI|$7$F$b$h$$!#(B</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.4 &fatal-error;(fatal error)</label>
+<def><p><termdef id="dt-fatal" term="&fatal-error;">$BE,9g$9$k(B<termref def="dt-xml-proc">XML&processor;</termref>$B$,8!=P$7$J$1$l$P$J$i$:!$(B&application;$B$KJs9p$7$J$1$l$P$J$i$J$$(B&error;$B!#(B&fatal-error;$B$rH/8+$7$?$"$H!$(B&processor;$B$O!$$=$l0J9_$N(B&error;$B$rC5$9$?$a$K%G!<%?=hM}$rB39T$7$F$b$h$/!$(B&error;$B$rH/8+$7$?>l9g$O!$$=$N(B&error;$B$r(B&application;$B$KJs9p$7$F$b$h$$!#(B&error;$BD{@5$r%5%]!<%H$9$k$?$a$K!$(B&processor;$B$O!$L$=hM}%G!<%?(B($BJ8;z%G!<%?5Z$S(B&markup;$B$N:.:_$7$?$b$N(B)$B$rJ8=q$+$i<h$j=P$7!$(B&application;$B$KEO$7$F$b$h$$!#$7$+$7!$0lEY!$(B&fatal-error;$B$r8!=P$7$?$i!$(B&processor;$B$O!$DL>o$N=hM}$rB39T$7$F$O$J$i$J$$!#$D$^$j!$(B&processor;$B$O!$J8;z%G!<%?5Z$SJ8=q$NO@M}9=B$$K$D$$$F$N>pJs$r!$DL>o$NJ}K!$G(B&application;$B$KEO$7B3$1$F$O$J$i$J$$!#(B</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.5 &at-user-option;(at user option)</label>
+<def><p>$BE,9g$9$k%=%U%H%&%(%"$O!$5-=R$5$l$?$H$*$j$K?6$kIq$C$F$b$h$$(B(may)$B!$Kt$O?6$kIq$o$J$/$F$O$J$i$J$$(B(must)($BJ8>OCf$N=uF0;l$K$h$k!#(B)$B!#$=$N$H$*$j$K?6$kIq$&>l9g$O!$5-=R$5$l$??6Iq$$$rA*BrKt$O5qH]$9$k<jCJ$r(B&user;$B$KDs6!$7$J$1$l$P$J$i$J$$!#(B</p></def>
+</gitem>
+<gitem>
+<label>1.2.6 &validity;$B@)Ls(B(validity constraint)</label>
+<def><p>$B$9$Y$F$N(B<termref def="dt-valid">&valid;$B$J(B</termref>XML$BJ8=q$KE,MQ$9$k5,B'!#(B&validity;$B@)Ls$N0cH?$O!$(B&error;$B$H$9$k!#(B&at-user-option;$B!$(B<termref def="dt-validating">$B8!>Z$r9T$&(BXML&processor;</termref>$B$O!$$3$N(B&error;$B$rJs9p$7$J$1$l$P$J$i$J$$!#(B</p></def>
+</gitem>
+<gitem>
+<label>1.2.7 &well-formed;$B@)Ls(B(well-formedness constraint)</label>
+<def><p>$B$9$Y$F$N(B<termref def="dt-wellformed">&well-formed;</termref>$B$N(BXML$BJ8=q$KE,MQ$9$k5,B'!#(B&well-formed;$B@)Ls$N0cH?$O!$(B<termref def="dt-fatal">&fatal-error;</termref>$B$H$9$k!#(B</p></def>
+</gitem>
+<gitem>
+<label>1.2.8 &match;(match)</label>
+<def><p>a) <termdef id="dt-match" term="&match;">&string;$BKt$OL>A0$N(B&match;$B!!Hf3S$9$kFs$D$N(B&string;$BKt$OL>A0$O!$F10l$G$J$1$l$P$J$i$J$$!#(BISO/IEC 10646$B$K$*$$$F!$J#?t$NI=8=$,2DG=$JJ8;z!NNc$($P!$(B&composed-form;$B5Z$S4pDl(B+&diacritical-mark;($B%@%$%"%/%j%F%#%+%k%^!<%/(B)$B7A<0!O$O!$$I$A$i$N(B&string;$B$bF1$8I=8=$N$H$-$K8B$j!$(B&match;$B$9$k!#(B&at-user-option;$B!$(B&processor;$B$O!$$=$NJ8;z$rI8=`7A$K@55,2=$7$F$b$h$$!#Hf3S$N$H$-!"BgJ8;z$H>.J8;z$H$N6hJL$r$9$k!#(B<!-- Note that no processing of characters with respect to case is part of the matching process. -->&lt;BR>b) &string;$B$HJ8K!Cf$N5,B'$H$N(B&match;$B!!$"$k@8@.5,B'$+$i@8@.$9$k8@8l$K!$$"$k(B&string;$B$,B0$9$k$H$-!$$3$N(B&string;$B$O!$$3$N@8@.5,B'$K(B&match;$B$9$k$H$$$&!#(B&lt;BR>c) $BFbMF$HFbMF%b%G%k$H$N(B&match;$B!!$"$kMWAG$,!$(B<titleref href='elementvalid'>$BMWAG$N(B&validity;</titleref>$B$N@)Ls$K<($90UL#$GE,9g$9$k$H$-!$$3$NMWAG$O!$$=$N@k8@$K(B&match;$B$9$k$H$$$&!#(B</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.9 $B8_49@-$N$?$a(B(for compatibility)</label>
+<def><p><termdef id="dt-compat" term="$B8_49@-$N$?$a(B">XML$B$N5!G=$G$"$C$F!$(BXML$B$,(BSGML$B$H8_49$G$"$k$3$H$rJ]>Z$9$k$?$a$@$1$KF3F~$5$l$k$b$N!#(B</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.10 $BAj8_1?MQ@-$N$?$a(B(for interoperability)</label>
+<def><p><termdef id="dt-interop" term="$BAj8_1?MQ@-$N$?$a(B">$B94B+NO$O$b$?$J$$?d>);v9`!#(B&WebSGML;$B0JA0$+$iB8:_$9$k(BSGML&processor;$B$,!$(BXML$BJ8=q$r=hM}$G$-$k2DG=@-$r9b$a$k$?$a$K<h$jF~$l$k$b$N!#(B</termdef></p></def>
+</gitem>
+</glist>
+</p>
+</div2>
+</div1>
+<!-- &Docs; -->
+<div1 id='sec-documents'>
+<head>$BJ8=q(B</head>
+<p><termdef id="dt-xml-doc" term="XML$BJ8=q(B">
+<!-- A textual object -->
+$B$3$N(B&TR-or-Rec;$B$GDj5A$9$k0UL#$G!$(B<termref def="dt-wellformed">&well-formed;</termref>$B$H$9$k%G!<%?%*%V%8%'%/%H$r!$(B<term>XML$BJ8=q(B</term>$B$H$$$&!#(B&well-formed;$B$N(BXML$BJ8=q$,!$$5$i$K!$$"$k@)Ls>r7o$rK~B-$9$l$P!$(B<termref def="dt-valid">&valid;</termref>$B$J(BXML$BJ8=q$H$9$k!#(B
+</termdef></p>
+
+<!-- why this div? -TB
+<div2 id='sec-log-phys'>
+<head>Logical and Physical Structure</head> -->
+
+<p>$B$$$:$l$N(BXML$BJ8=q$b!$O@M}9=B$5Z$SJ*M}9=B$$r$b$D!#J*M}E*$K$O!$J8=q$O!$(B<termref def="dt-entity">$B<BBN(B</termref>$B$H8F$VC10L$+$i$J$k!#$"$k<BBN$O!$J8=qFb$KB>$N<BBN$r4^$`$?$a$K!$$=$NB>$N<BBN$r(B<termref def="dt-entref">$B;2>H(B</termref>$B$7$F$b$h$$!#J8=q$O!$!H%k!<%H!I$9$J$o$A(B<termref def="dt-docent">$BJ8=q<BBN(B</termref>$B$+$i;O$^$k!#O@M}E*$K$O!$J8=q$O!$@k8@!$MWAG!$%3%a%s%H!$J8;z;2>H5Z$S=hM}L?Na$r4^$_!$$3$l$i$9$Y$F$O!$J8=qFb$GL@<(E*$J(B&markup;$B$K$h$C$F<($9!#O@M}9=B$5Z$SJ*M}9=B$$O!$(B<titleref href="wf-entities">$B0J9_(B</titleref>$B$K<($9$H$*$j$K!$87L)$KF~$l;R$K$J$C$F$$$J$1$l$P$J$i$J$$!#(B</p>
+
+<!--
+</div2> -->
+
+<div2 id='sec-well-formed'>
+<head>&well-formed;$B$N(BXML$BJ8=q(B</head>
+<p><termdef id="dt-wellformed" term="&well-formed;">$B$"$k%F%-%9%H%*%V%8%'%/%H$,!$<!$N$$$:$l$+$N$H$-!$$=$N%F%-%9%H%*%V%8%'%/%H$r(B&well-formed;$B$N(BXML$BJ8=q$H8F$V!#(B</termdef>
+<ulist>
+<item><p>a) $BA4BN$H$7$F!$(B<nt def='NT-document'>document</nt>$B$H$$$&%i%Y%k$r$b$D@8@.5,B'$K(B&match;$B$9$k!#(B</p></item>
+<item><p>b) $B$3$N(B&TR-or-Rec;$B$GDj5A$9$k!$$9$Y$F$N(B&well-formed;$B@)Ls$K=>$&!#(B</p>
+</item>
+<item><p>c) $B$=$l$>$l$N(B<termref def='dt-parsedent'>&parsed-entity;</termref>$B$,!$(B<titleref href='wf-entities'>&well-formed;</titleref>$B$H$J$k!#(B</p></item>
+</ulist></p>
+<p>
+<scrap lang='ebnf' id='document'>
+<head>$BJ8=q(B</head>
+<prod id='NT-document'><lhs>document</lhs>
+<rhs><nt def='NT-prolog'>prolog</nt>
+<nt def='NT-element'>element</nt>
+<nt def='NT-Misc'>Misc</nt>*</rhs></prod>
+</scrap>
+</p>
+<p><nt def="NT-document">document</nt>$B@8@.5,B'$K(B&match;$B$9$k$H$O!$<!$r0UL#$9$k!#(B
+<ulist>
+<item><p>a) $B0l$D0J>e$N(B<termref def="dt-element">$BMWAG(B</termref>$B$r4^$`!#(B</p>
+</item>
+
+<!--* N.B. some readers (notably JC) find the following
+paragraph awkward and redundant. I agree it's logically redundant:
+it *says* it is summarizing the logical implications of
+matching the grammar, and that means by definition it's
+logically redundant. I don't think it's rhetorically
+redundant or unnecessary, though, so I'm keeping it. It
+could however use some recasting when the editors are feeling
+stronger. -MSM *-->
+
+<item><p>b) <termdef id="dt-root" term="$B%k!<%HMWAG(B"><term>$B%k!<%H(B</term>$BKt$OJ8=qMWAG$H$$$&MWAG$,0l$D$@$1B8:_$7!$$3$l$O!$B>$NMWAG$N(B<termref def="dt-content">$BFbMF(B</termref>$B$K4^$^$l$J$$!#(B</termdef>$B$3$l0J30$N$9$Y$F$NMWAG$O!$$=$N3+;O%?%0$,B>$NMWAG$NFbMF$K4^$^$l$l$P!$BP1~$9$k=*N;%?%0$bF1$8MWAG$NFbMF$K4^$^$l$k!#$D$^$j!$MWAG$O!$3+;O%?%05Z$S=*N;%?%0$K$h$C$F6h@Z$i$l!$F~$l;R9=B$$r$J$9!#(B
+</p></item>
+</ulist>
+</p>
+<p><termdef id="dt-parentchild" term="$B?FMWAG(B/$B;RMWAG(B">$B$3$l$i$N7k2L$H$7$F!$J8=qFb$N$I$NHs%k!<%HMWAG(B<code>C</code>$B$KBP$7$F$b!$$"$kB>$NMWAG(B<code>P</code>$B$,B8:_$7!$(B<code>C</code>$B$O!$(B<code>P</code>$B$NFbMF$K4^$^$l$k$,!$(B<code>P</code>$B$NFbMF$K4^$^$l$kB>$NMWAG$K4^$^$l$k$3$H$O$J$$!#$3$N$H$-!$(B<code>P</code>$B$r(B<code>C</code>$B$N(B<code>$B?F(B</code>$B$H$$$$!$(B<code>C</code>$B$r(B<code>P</code>$B$N(B<code>$B;R(B</code>$B$H$$$&!#(B</termdef></p>
+</div2>
+<div2 id="charsets">
+<head>$BJ8;z(B</head>
+<p>
+
+<!--The data stored in an XML <termref def="dt-entity">entity</termref> is
+either <termref def="dt-text">parsed</termref> or <termref
+def="dt-unparsed">unparsed</termref>. -->
+
+<termdef id="dt-text" term="$B%F%-%9%H(B">&parsed-entity;$B$O!$(B<term>$B%F%-%9%H(B</term>(<termref def="dt-character">$BJ8;z(B</termref>$B$NJB$S$G$"$C$F!$(B&markup;$BKt$OJ8;z%G!<%?$rI=$7$F$b$h$$!#(B)$B$r4^$`!#(B</termdef><termdef id="dt-character" term="$BJ8;z(B"><term>$BJ8;z(B</term>$B$O!$%F%-%9%H$N:G>.C10L$G$"$C$F!$(BISO/IEC 10646<bibref ref="ISO10646"/>$B$K5,Dj$5$l$k!#(B<!--Users may extend the ISO/IEC 10646 character repertoire by exploiting the private use areas. -->$B5vMF$9$kJ8;z$O!$%?%V!$2~9T!$I|5"JB$S$K(BUnicode$B5Z$S(BISO/IEC 10646$B$,5vMF$9$k?^7AJ8;z$H$9$k!#(B</termdef>
+<scrap lang="ebnf" id="char32">
+<head>$BJ8;z$NHO0O(B</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id="NT-Char"><lhs>Char</lhs>
+<rhs>#x9 | #xA | #xD | [#x20-#D7FF] | [#xE000-#xFFFD]
+| [#x10000-#x10FFFF]</rhs>
+<com>$BG$0U$N(BUnicode$BJ8;z!#$?$@$7!$(B&surrogate-blocks;$B!$(BFFFE$B5Z$S(BFFFF$B$O=|$/!#(B</com>
+</prod>
+</prodgroup>
+</scrap>
+</p>
+<p>&character-value;$B$r%S%C%H%Q%?%s$KId9f2=$9$k5!9=$O!$<BBN$4$H$K0c$C$F$b$h$$!#$9$Y$F$N(BXML&processor;$B$O!$(BISO/IEC 10646$B$N(BUTF-8$BId9f2=5Z$S(BUTF-16$BId9f2=$r<u$1IU$1$J$1$l$P$J$i$J$$!#Fs$D$N$I$A$i$,MQ$$$i$l$F$$$k$+$rL@<($9$k$?$a$N5!9=!$5Z$SB>$NId9f2=J}K!$rMxMQ$9$k$?$a$N5!9=$O!$(B<titleref href='charencoding'>$BJ8;z$NId9f2=(B</titleref>$B$K5-=R$9$k!#(B</p>
+<p>$B$I$NId9f2=J}K!$rMQ$$$k$+$K4X78$J$/!$(BISO/IEC 10646$B$NJ8;z=89g$K$"$k$9$Y$F$NJ8;z$O!$$=$N(BUCS-4&code-value;<!-- bit string. -->$B$HEy2A$J(B10$B?J?tKt$O(B16$B?J?t$K$h$C$F!$;2>H$G$-$k!#(B</p>
+</div2>
+
+<div2 id='sec-common-syn'>
+<head>$B6&DL$N9=J89=@.;R(B</head>
+
+<p>2.3$B$G$O!$J8K!Fb$G9-$/;HMQ$9$k$$$/$D$+$N5-9f$rDj5A$9$k!#(B</p>
+<p><nt def="NT-S">S</nt> ($B6uGr(B)$B$O!$0l$D<c$7$/$OJ#?t$N(B&space-character;(#x20)$B!$I|5"!$2~9TKt$O%?%V$+$i@.$k!#(B
+
+<scrap lang="ebnf" id='white'>
+<head>$B6uGr(B</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id='NT-S'><lhs>S</lhs>
+<rhs>(#x20 | #x9 | #xD | #xA)+</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>$BJX59>e!$J8;z$r!$(B&letter;$B!$?t;zKt$OB>$NJ8;z$KJ,N`$9$k!#(B&letter;$B$O!$%"%k%U%!%Y%C%HE*Kt$OI=2;E*$G$"$k4pK\J8;z(B($B0l$DKt$OJ#?t$N(B&combining-character;$B$,!$8e$KB3$/$3$H$b$"$k!#(B)$B!$(B&ideographic;$B$+$i@.$k!#(B
+<!--
+Certain layout and format-control characters defined by ISO/IEC 10646
+should be ignored when recognizing identifiers; these are defined by the
+classes <nt def='NT-Ignorable'>Ignorable</nt> and <nt def='NT-
+Extender'>Extender</nt>.
+-->
+$B3F%/%i%9$K$*$1$k<B:]$NJ8;z$K$D$$$F$N40A4$JDj5A$O!$(B<titleref href='CharClasses'>$BJ8;z%/%i%9(B</titleref>$B$K4X$9$kIUO?$K5,Dj$9$k!#(B</p>
+<p><termdef id="dt-name" term="Name"><term>Name</term>$B$O!$(B&letter;$BKt$O$$$/$D$+$N6h@Z$jJ8;z$N0l$D$G;O$^$j!$$=$N8e$K(B&letter;$B!$?t;z!$%O%$%U%s!$2<@~!$%3%m%sKt$O%T%j%*%I$,B3$/(B($B$3$l$i$rL>A0J8;z$H$$$&!#(B)$B!#(B</termdef>&string;"<code>xml</code>"$BKt$O(B<code>(('X'|'x') ('M'|'m') ('L'|'l'))</code>$B$K(B&match;$B$9$kG$0U$N(B&string;$B$G;O$^$kL>A0$O!$$3$N(B&TR-or-Rec;$B$N8=:_$NHGKt$O>-Mh$NHG$G$NI8=`2=$N$?$a$KM=Ls$9$k!#(B
+</p>
+<note>
+<p>XML$B$NL>A0$NCf$N%3%m%s$O!$L>A06u4V$G$N<B83$N$?$a$KM=Ls$9$k!#%3%m%s$N0UL#$O!$>-Mh$N$"$k;~E@$GI8=`2=$9$k$b$N$H$7!$$=$N$H$-$K$O!$<B83E*$JL\E*$G%3%m%s$r;HMQ$9$kJ8=q$r99?7$9$kI,MW$,@8$8$k2DG=@-$,$"$k!#(BXML$B$G:NMQ$9$kL>A06u4V$N5!9=$,!$6h@Z$j;R$H$7$F<B:]$K%3%m%s$r;HMQ$9$k$H$$$&J]>Z$O$J$$!#;v<B>e!$$3$l$O!$L>A06u4V$N<B83$N0l$D$H$7$F0J30$K$O!$(BXML$B$NL>A0$NCf$G%3%m%s$r;HMQ$7$J$$$[$&$,$h$$$3$H$r0UL#$9$k!#$7$+$7!$(BXML&processor;$B$O!$L>A0J8;z$H$7$F%3%m%s$r<u$1IU$1$k$3$H$,K>$^$7$$!#(B
+</p>
+</note>
+<p>
+<nt def='NT-Nmtoken'>Nmtoken</nt> ($BL>A0(B&token;)$B$O!$L>A0J8;z$G9=@.$9$kNs$H$9$k!#(B
+<scrap lang='ebnf'>
+<head>$BL>A05Z$S(B&token;</head>
+<!--
+<prod id='NT-MiscName'><lhs>MiscName</lhs>
+<rhs></rhs>
+</prod>-->
+<prod id='NT-NameChar'><lhs>NameChar</lhs>
+<rhs><nt def="NT-Letter">Letter</nt>
+| <nt def='NT-Digit'>Digit</nt>
+<!--| <nt def='NT-MiscName'>MiscName</nt>-->
+| '.' | '-' | '_' | ':'
+| <nt def='NT-CombiningChar'>CombiningChar</nt>
+<!-- | <nt def='NT-Ignorable'>Ignorable</nt> -->
+| <nt def='NT-Extender'>Extender</nt></rhs>
+</prod>
+<prod id='NT-Name'><lhs>Name</lhs>
+<rhs>(<nt def='NT-Letter'>Letter</nt> | '_' | ':')
+(<nt def='NT-NameChar'>NameChar</nt>)*</rhs></prod>
+<prod id='NT-Names'><lhs>Names</lhs>
+<rhs><nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>)*</rhs></prod>
+<prod id='NT-Nmtoken'><lhs>Nmtoken</lhs>
+<rhs>(<nt def='NT-NameChar'>NameChar</nt>)+</rhs></prod>
+<prod id='NT-Nmtokens'><lhs>Nmtokens</lhs>
+<rhs><nt def='NT-Nmtoken'>Nmtoken</nt> (<nt def='NT-S'>S</nt> <nt
+def='NT-Nmtoken'>Nmtoken</nt>)*</rhs></prod>
+</scrap>
+</p>
+<p>&literal;$B%G!<%?$O!$0zMQId$G0O$^$l$?(B&string;$B$H$7!$$=$NNs$N6h@Z$j;R$H$7$F;HMQ$9$k0zMQId$O4^$^$J$$!#(B&literal;$B$O!$FbIt<BBN(B(<nt def='NT-EntityValue'>EntityValue</nt>)$B!$B0@-CM(B(<nt def='NT-AttValue'>AttValue</nt>)$B!$30It(B&identifier;(<nt def="NT-SystemLiteral">SystemLiteral</nt>)$B$NFbMF$N;XDj$K;HMQ$9$k!#L\E*$K$h$C$F$O!$(B&literal;$BA4BN$r!$$=$NCf$N(B&markup;$B$NAv::$r9T$J$o$:$K!$%9%-%C%W$9$k$3$H$,$"$k(B(<nt def='NT-SkipLit'>SkipLit</nt>$B!#(B)$B!#(B
+<scrap lang='ebnf'>
+<head>&literal;</head>
+<!-- is marked section end legal in entity values etc.?
+James says yes. Handbook page 392, sec. 10.4 seems to me to say no.
+If James is right, leave as is. Otherwise, uncomment
+the next comment and ...
+-->
+<!--
+<prod id='NT-EntityValue'><lhs>EntityValue</lhs>
+<rhs>' " '
+(([^%&amp;"]
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+(([^%&amp;']
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+" ' "</rhs>
+</prod>
+<prod id='NT-AttValue'><lhs>AttValue</lhs>
+<rhs>'"'
+(([^&lt;&amp;"]
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+(([^&lt;&amp;']
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+" ' "</rhs>
+<wfc def="CleanAttrVals"/>
+</prod>
+-->
+<!-- ... and comment out the following, down to ... -->
+<prod id='NT-EntityValue'><lhs>EntityValue</lhs>
+<rhs>' " '
+([^%&amp;"]
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+([^%&amp;']
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+" ' "</rhs>
+</prod>
+<prod id='NT-AttValue'><lhs>AttValue</lhs>
+<rhs>' " '
+([^&lt;&amp;"]
+| <nt def='NT-Reference'>Reference</nt>)*
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+([^&lt;&amp;']
+| <nt def='NT-Reference'>Reference</nt>)*
+" ' "</rhs>
+<!--<wfc def="WF-Attvaldelim"/>-->
+</prod>
+<!-- ... down to here. -->
+<prod id="NT-SystemLiteral"><lhs>SystemLiteral</lhs>
+<rhs><nt def='NT-SkipLit'>SkipLit</nt></rhs>
+</prod>
+<!-- <prod id="NT-URIchar"><lhs>URIchar</lhs>
+<rhs><com>See <loc href="http://www.w3.org/XXX">XXX</loc></com>
+</rhs></prod>
+-->
+<prod id="NT-PubidLiteral"><lhs>PubidLiteral</lhs>
+<rhs>' " ' <nt def='NT-PubidChar'>PubidChar</nt>*
+' " '
+| " ' " (<nt def='NT-PubidChar'>PubidChar</nt> - " ' ")* " ' "</rhs>
+</prod>
+<prod id="NT-PubidChar"><lhs>PubidChar</lhs>
+<rhs>#x20 | #xD | #xA
+|&nbsp;[a-zA-Z0-9]
+|&nbsp;[-'()+,./:=?]</rhs>
+</prod>
+<prod id="NT-SkipLit"><lhs>SkipLit</lhs>
+<rhs>(' " ' [^"]* ' " ')
+|&nbsp;(" ' " [^']* " ' ")</rhs>
+</prod>
+<!-- alternate form, making ms end illegal: -->
+<!--
+<prod id="NT-SkipLit"><lhs>SkipLit</lhs>
+<rhs>(' " ' ([^"]* - ([^"]* ']]&gt;' [^"]*)) ' " ')
+|&nbsp;(" ' " ([^']* - ([^']* ']]&gt;' [^']*)) " ' ")</rhs>
+</prod>
+-->
+</scrap>
+</p>
+<!--
+<wfcnote id="WF-Attvaldelim">
+<head>Delimiters in Attribute Values</head>
+<p>After the expansion of character and entity references,
+an attribute value must not contain a "<code>&lt;</code>"
+or "<code>&amp;</code>" character unless that character was
+introduced by the expansion of a character reference
+or one of the entities &magicents;.</p>
+</wfcnote>-->
+<!--
+This is not quite right: &lt; should be legal, should it not?
+Suppress this WFC until we get it right.
+-->
+<!-- Henry Thompson suggests (in substance, not form: the wording needs
+to be clarified):
+"Cooked Attribute values must not contain &lt; &amp; or the
+quote which closed their uncooked literal,
+unless arising from the expansion of a character reference or
+magic reference
+directly contained in their uncooked literal."
+I'm not sure I agree with this rule, but it's at least coherent,
+which is more than I can say for my attempt.
+-->
+</div2>
+
+<div2 id='syntax'>
+<head>$BJ8;z%G!<%?5Z$S(B&markup;</head>
+<p><termref def='dt-text'>$B%F%-%9%H(B</termref>$B$O!$(B<termref def="dt-chardata">$BJ8;z%G!<%?(B</termref>$B5Z$S(B&markup;$B$,:.:_$9$k$b$N$H$7$F9=@.$9$k!#(B<termdef id="dt-markup" term="Markup"><term>&markup;</term>$B$O!$(B<termref def="dt-stag">$B3+;O%?%0(B</termref>$B!$(B<termref def="dt-etag">$B=*N;%?%0(B</termref>$B!$(B<termref def="dt-empty">$B6uMWAG(B</termref>$B!$(B<termref def="dt-entref">$B<BBN;2>H(B</termref>$B!$(B<termref def="dt-charref">$BJ8;z;2>H(B</termref>$B!$(B<termref def="dt-comment">$B%3%a%s%H(B</termref>$B!$(B<termref def="dt-cdsection">CDATA$B%;%/%7%g%s(B</termref> $B$N6h@Z$j;R!$(B<termref def="dt-doctype">$BJ8=q7?@k8@(B</termref>$B5Z$S(B<termref def="dt-pi">$B=hM}L?Na(B</termref>$B$N7A$r<h$k!#(B
+</termdef>
+</p>
+<p><termdef id="dt-chardata" term="Character Data">&markup;$B$G$O$J$$$9$Y$F$N%F%-%9%H$O!$J8=q$N(B<term>$BJ8;z%G!<%?(B</term>$B$r9=@.$9$k!#(B</termdef></p>
+<p>$B%"%s%Q%5%s%IJ8;z(B (&amp;)$B5Z$S(B&left-angle-bracket; (&lt;)$B$O!$(B&markup;$B$N6h@Z$j;R$H$7$F!$Kt$O(B<termref def="dt-comment">$B%3%a%s%H(B</termref>$B!$(B<termref def="dt-pi">$B=hM}L?Na(B</termref>$B<c$7$/$O(B<termref def="dt-cdsection">CDATA$B%;%/%7%g%s(B</termref>$BFb$G;HMQ$9$k>l9g$K(B<emph>$B$@$1(B</emph>$B!$$=$N$^$^$N7A$G=P8=$7$F$h$$!#$3$l$i$NJ8;z$O!$FbIt<BBN@k8@$N(B<termref def='dt-litentval'>&literal;$B<BBNCM(B</termref>$BFb$K5-=R$7$F$b$h$$!#(B $B>\$7$/$O!$(B<titleref href='wf-entities'>&well-formed;$B$N<BBN(B</titleref>$B$K4X$9$k5,Dj$r;2>H!#(B<!-- FINAL EDIT: restore internal entity decl or leave it out. -->$B$3$l$i$NJ8;z$,B>$NItJ,$GI,MW$J>l9g!$?tCM$K$h$kJ8;z;2>HKt$O(B&string;"<code>&amp;amp;</code>"$B5Z$S(B&string;"<code>&amp;lt;</code>"$B$r;HMQ$7!$(B<termref def="dt-escape">&escape;</termref>$B$7$J$1$l$P$J$i$J$$!#(B&right-angle-bracket; (>) $B$O!$(B&string;"<code>&amp;gt;</code>"$B$r;HMQ$7$FI=8=$7$F$b$h$$!#FbMF$NCf$GNs(B"<code>]]&gt;</code>"$B$r;HMQ$9$k$H$-$O!$$=$l$,!$(B<termref def="dt-cdsection">CDATA$B%;%/%7%g%s(B</termref>$B$N=*N;$r(B&markup;$B$7$J$$8B$j!$(B<termref def='dt-compat'>$B8_49@-$N$?$a(B</termref>$B!$(B"<code>&amp;gt;</code>"$BKt$OJ8;z;2>H$r;HMQ$7!$(B&escape;$B$7$J$1$l$P$J$i$J$$!#(B</p>
+
+<p>$BMWAG$NFbMF$G$O!$J8;z%G!<%?$O!$$$$+$J$k(B&markup;$B$N3+;O6h@Z$j;R$r4^$^$J$$G$0U$N(B&char-string;$B$H$9$k!#(BCDATA$B%;%/%7%g%s$G$O!$J8;z%G!<%?$H$O!$(BCDATA$B%;%/%7%g%s$N=*N;6h@Z$j;R(B"<code>]]&gt;</code>"$B$r4^$^$J$$G$0U$N(B&char-string;$B$H$9$k!#(B
+</p>
+<p>
+$BB0@-CM$K(B&single-quote;$B5Z$S(B&double-quote;$B$r4^$`$?$a$K$O!$%"%]%9%H%m%U%#Kt$O(B&single-quote;(') $B$O!$(B"<code>&amp;apos;</code>"$B$H$7$FI=8=$7!$(B&double-quote;(")$B$O!$(B"<code>&amp;quot;</code>"$B$H$7$FI=8=$9$k!#(B
+<scrap lang="ebnf">
+<head>$BJ8;z%G!<%?(B</head>
+<prod id='NT-CharData'>
+<lhs>CharData</lhs>
+<rhs>[^&lt;&amp;]* - ([^&lt;&amp;]* ']]&gt;' [^&lt;&amp;]*)</rhs>
+</prod>
+</scrap>
+</p>
+</div2>
+
+<div2 id='sec-comments'>
+<head>$B%3%a%s%H(B</head>
+
+<p><termdef id="dt-comment" term="Comment"><term>$B%3%a%s%H(B</term>$B$O!$B>$N(B<termref def='dt-markup'>&markup;</termref>$B$N30$J$i$P!$J8=q$N$I$3$K8=$l$F$b$h$$!#$5$i$K!$J8=q7?@k8@Fb$G!$J8K!$,5v$9>l=j$K8=$l$F$b$h$$!#(B
+<!-- TB
+except in a <termref def="dt-cdsection">CDATA section</termref>, i.e. within
+<termref def="dt-elemcontent">element content</termref>, in
+<termref def="dt-mixed">mixed content</termref>, or in the prolog. They must
+not occur within declarations or tags. -->
+$B%3%a%s%H$O!$J8=q$N(B<termref def="dt-chardata">$BJ8;z%G!<%?(B</termref>$B$N0lIt$G$O$J$$!#(BXML&processor;$B$O!$(B&application;$B$,%3%a%s%H$N%F%-%9%H$r<h$j=P$9$3$H$r2DG=$H$7$F$b$h$$$,!$$=$&$7$J$/$H$b$h$$!#(B
+<termref def="dt-compat">$B8_49@-$N$?$a(B</termref>$B!$(B&string;"<code>--</code>" $B!J(B&double-hyphen;$B!K$O!$%3%a%s%HFb$G8=$l$F$O$J$i$J$$!#(B
+<scrap lang="ebnf">
+<head>$B%3%a%s%H(B</head>
+<prod id='NT-Comment'><lhs>Comment</lhs>
+<rhs>'&lt;!--'
+((<nt def='NT-Char'>Char</nt> - '-')
+| ('-' (<nt def='NT-Char'>Char</nt> - '-')))*
+'-->'</rhs>
+<!--
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs> -->
+</prod>
+</scrap>
+</termdef></p>
+<p>$B%3%a%s%H$NNc$r<!$K<($9!#(B
+<eg>&lt;!&como; declarations for &lt;head> &amp; &lt;body> &comc;&gt;</eg>
+</p>
+</div2>
+
+<div2 id='sec-pi'>
+<head>$B=hM}L?Na(B</head>
+
+<p><termdef id="dt-pi" term="Processing instruction"><term>$B=hM}L?Na(B</term>(PI)$B$K$h$C$F!$(B&application;$B$N$?$a$NL?Na$rJ8=q$KF~$l$k$3$H$,$G$-$k!#(B
+
+<scrap lang="ebnf">
+<head>$B=hM}L?Na(B</head>
+<prod id='NT-PI'><lhs>PI</lhs>
+<rhs>'&lt;?' <nt def='NT-PITarget'>PITarget</nt>
+(<nt def='NT-S'>S</nt>
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*)))?
+&pic;</rhs></prod>
+<prod id='NT-PITarget'><lhs>PITarget</lhs>
+<rhs><nt def='NT-Name'>Name</nt> -
+(('X' | 'x') ('M' | 'm') ('L' | 'l'))</rhs>
+</prod>
+</scrap></termdef>
+PI$B$O!$J8=q$N(B<termref def="dt-chardata">$BJ8;z%G!<%?(B</termref>$B$N0lIt$G$O$J$$$,!$(B&application;$B$KEO$5$l$J$1$l$P$J$i$J$$!#(BPI$B$O!$L?Na$,EO$5$l$k(B&application;$B$r(B&identify;$B$?$a$K;HMQ$9$k(B&target; (<nt def='NT-PITarget'>PITarget</nt>) $B$G;O$^$k!#(B&target;$BL>(B "<code>XML</code>"$B!$(B"<code>xml</code>"$B$J$I$O!$$3$N(B&TR-or-Rec;$B$N8=:_$NHGKt$O>-Mh$NHG$N5,3J2=MQ$KM=Ls$9$k!#(BXML$B$N(B<termref def='dt-notation'>$B5-K!(B</termref>$B5!9=$r!$(BPI$B$N(B&target;$B$r@k8@$9$k$?$a$K;HMQ$7$F$b$h$$!#(B
+</p>
+</div2>
+
+<div2 id='sec-cdata-sect'>
+<head>CDATA$B%;%/%7%g%s(B</head>
+
+<p><termdef id="dt-cdsection" term="CDATA Section"><term>CDATA$B%;%/%7%g%s(B</term>$B$O!$J8;z%G!<%?$,=P8=$9$k$H$3$m$G$"$l$P!$$I$3$K=P8=$7$F$b$h$$!#$3$l$O!$$=$&$G$J$1$l$P!$(B&markup;$B$H$7$FG'<1$9$kJ8;z$r4^$`!$%F%-%9%H$N6h2h$r(B&escape;$B$9$k$N$K;HMQ$9$k!#(BCDATA$B%;%/%7%g%s$O!$(B&string;"<code>&lt;![CDATA[</code>"$B$G;O$^$j!$(B&string;
+"<code>]]&gt;</code>"$B$G=*$o$k!#(B
+<scrap lang="ebnf">
+<head>CDATA$B%;%/%7%g%s(B</head>
+<prod id='NT-CDSect'><lhs>CDSect</lhs>
+<rhs><nt def='NT-CDStart'>CDStart</nt>
+<nt def='NT-CData'>CData</nt>
+<nt def='NT-CDEnd'>CDEnd</nt></rhs></prod>
+<prod id='NT-CDStart'><lhs>CDStart</lhs>
+<rhs>'&lt;![CDATA['</rhs>
+</prod>
+<prod id='NT-CData'><lhs>CData</lhs>
+
+<rhs>(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+</rhs>
+</prod>
+<prod id='NT-CDEnd'><lhs>CDEnd</lhs>
+<rhs>']]&gt;'</rhs>
+</prod>
+</scrap>
+
+CDATA$B%;%/%7%g%sFb$G$O!$Ns(B<nt def='NT-CDEnd'>CDEnd</nt>$B$@$1$r(B&markup;$B$H$7$FG'<1$9$k$N$G!$(B&left-angle-bracket;$B5Z$S%"%s%Q%5%s%I$O!$$=$N(B&literal;$B7A<0$G=P8=$7$F$h$$!#$=$l$i$O!$(B"<code>&amp;lt;</code>"$B5Z$S(B"<code>&amp;amp;</code>"$B$r;HMQ$7$F(B&escape;$B$9$kI,MW$O$J$$!#(BCDATA$B%;%/%7%g%s$O!$F~$l;R$K$O$G$-$J$$!#(B
+</termdef>
+</p>
+
+<p>"<code>&lt;greeting></code>"$B5Z$S(B"<code>&lt;/greeting></code>"$B$r!$(B<termref def='dt-markup'>&markup;</termref>$B$G$O$J$/!$(B<termref def='dt-chardata'>$BJ8;z%G!<%?(B</termref>$B$H$7$FG'<1$9$k(BCDATA$B%;%/%7%g%s$NNc$r!$<!$K<($9!#(B
+<eg>&lt;![CDATA[&lt;greeting>Hello, world!&lt;/greeting>]]&gt;</eg>
+</p>
+</div2>
+
+<div2 id='sec-prolog-dtd'>
+<head>&prolog;$B5Z$SJ8=q7?@k8@(B</head>
+
+<p><termdef id='dt-xmldecl' term='XML Declaration'>XML$BJ8=q$O!$;HMQ$9$k(BXML$B$N(B&version;$B$r;XDj$9$k(B<term>XML$B@k8@(B</term>$B$G;O$a$F$b$h$/!$Kt$=$&$9$k$N$,K>$^$7$$!#(B
+</termdef>
+</p>
+<p>$B$3$N(B&TR-or-Rec;$B$N$3$N(B&version;$B$KE,9g$9$k$3$H$r<($9$?$a$K$O!$(B&version;$BHV9f(B "<code>1.0</code>" $B$r;HMQ$7$J$1$l$P$J$i$J$$!#$"$kJ8=q$,!$$3$N(B&TR-or-Rec;$B$N$3$N(B&version;$B$KE,9g$7$J$$$H$-!$CM(B"<code>1.0</code>"$B$r;HMQ$9$k$N$O!$(B&error;$B$H$9$k!#$3$N(B&TR-or-Rec;$B$N:#8e$N(B&version;$B$K(B"<code>1.0</code>"$B0J30$NCM$rIUM?$9$k$3$H$,!$(BXML$B:n6H%0%k!<%W$N0U?^$@$,!$(BXML$B$N>-Mh$N(B&version;$B$r:n@.$9$k$3$H$N3NLs$r<($9$o$1$G$O$J$/!$:n@.$7$?$H$7$F$b!$HV9fIU$1$K$D$$$F!$FCDj$NJ}K!$r;HMQ$9$k$3$H$N3NLs$r<($9$o$1$G$b$J$$!#>-Mh$N(B&version;$B$N2DG=@-$r=|30$7$J$$$N$G!$I,MW$J>l9g!$<+F0E*$J(B&version;$B$NG'<1$r2DG=$H$9$k<jCJ$H$7$F!$$3$N9=@.;R$rDs6!$9$k!#(B&processor;$B$O!$%5%]!<%H$7$F$$$J$$(B&version;$B$G%i%Y%kIU$1$7$?J8=q$r<u$1<h$C$?$H$-!$(B&error;$B$rDLCN$7$F$b$h$$!#(B
+</p>
+<p>XML$BJ8=qFb$N(B&markup;$B$N5!G=$O!$5-219=B$5Z$SO@M}9=B$$r5-=R$9$k$3$H!$JB$S$KB0@-5Z$SB0@-CM$NBP$rO@M}9=B$$K4XO"$E$1$k$3$H$K$"$k!#(BXML$B$O!$O@M}9=B$$K$D$$$F$N@)Ls>r7o$rDj5A$9$k$?$a!$5Z$S$"$i$+$8$aDj5A$5$l$?5-21C10L$r;HMQ$G$-$k$?$a$N5!9=$H$7$F!$(B<termref def="dt-doctype">$BJ8=q7?@k8@(B</termref>$B$rDs6!$9$k!#(B<!-- old
+The function of the markup in an XML document is to describe its
+storage and logical structures, and associate attribute-value pairs with the
+logical structure.
+XML provides a
+mechanism, the <termref def="dt-doctype">document type declaration</termref>,
+to
+define constraints on that logical structure and to support the use of
+predefined storage units. --><termdef id="dt-valid" term="Validity">XML$BJ8=q$,(B<term>&valid;</term>$B$H$O!$J8=q7?@k8@$r$b$A!$$=$NJ8=q7?@k8@$K<($9@)Ls>r7o$rK~$?$9$3$H$H$9$k!#(B
+</termdef></p>
+<p>$BJ8=q7?@k8@$O!$J8=q$N:G=i$N(B<termref def="dt-element">$BMWAG(B</termref>$B$NA0$K8=$l$J$1$l$P$J$i$J$$!#(B
+<scrap lang="ebnf" id='xmldoc'>
+<head>&prolog;</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-prolog'><lhs>prolog</lhs>
+<rhs><nt def='NT-XMLDecl'>XMLDecl</nt>?
+<nt def='NT-Misc'>Misc</nt>*
+(<nt def='NT-doctypedecl'>doctypedecl</nt>
+<nt def='NT-Misc'>Misc</nt>*)?</rhs></prod>
+<prod id='NT-XMLDecl'><lhs>XMLDecl</lhs>
+<rhs>&xmlpio;
+<nt def='NT-VersionInfo'>VersionInfo</nt>
+<nt def='NT-EncodingDecl'>EncodingDecl</nt>?
+<nt def='NT-SDDecl'>SDDecl</nt>?
+<nt def="NT-S">S</nt>?
+&pic;</rhs>
+</prod>
+<prod id='NT-VersionInfo'><lhs>VersionInfo</lhs>
+<rhs><nt def="NT-S">S</nt> 'version' <nt def='NT-Eq'>Eq</nt>
+('"<nt def="NT-VersionNum">VersionNum</nt>"'
+| "'<nt def="NT-VersionNum">VersionNum</nt>'")</rhs>
+</prod>
+<prod id='NT-Eq'><lhs>Eq</lhs>
+<rhs><nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?</rhs></prod>
+<prod id="NT-VersionNum">
+<lhs>VersionNum</lhs>
+<rhs>([a-zA-Z0-9_.:] | '-')+</rhs>
+</prod>
+<prod id='NT-Misc'><lhs>Misc</lhs>
+<rhs><nt def='NT-Comment'>Comment</nt> | <nt def='NT-PI'>PI</nt> |
+<nt def='NT-S'>S</nt></rhs></prod>
+</prodgroup>
+</scrap></p>
+
+<p>
+$BNc$($P!$<!$K<($940A4$J(BXML$BJ8=q$O!$(B<termref def="dt-wellformed">&well-formed;</termref>$B$G$"$k$,(B<termref def="dt-valid">&valid;</termref>$B$G$O$J$$!#(B
+<eg><![CDATA[<?xml version="1.0"?>
+<greeting>Hello, world!</greeting>
+]]></eg>
+$B<!$NJ8=q$bF1MM$H$9$k!#(B
+<eg><![CDATA[<greeting>Hello, world!</greeting>
+]]></eg>
+</p>
+<p><termdef id="dt-doctype" term="Document Type Declaration">
+XML$B$N(B<term>$BJ8=q7?@k8@(B</term>$B$O!$$"$kJ8=q%/%i%9$N$?$a$NJ8K!$rDs6!$9$k(B<termref def='dt-markupdecl'>&markup;$B@k8@(B</termref>$B$r4^$`$+!$Kt$O;2>H$9$k!#$3$NJ8K!$r!$J8=q7?Dj5AKt$O(B<term>DTD</term>$B$H$$$&!#J8=q7?@k8@$O!$(B&markup;$B@k8@$r4^$s$@30It(B&subset;($BFCJL$J<oN`$N(B<termref def='dt-extent'>$B30It<BBN(B</termref>)$B$r;2>H$G$-!$Kt$OFbIt(B&subset;$B$KD>@\(B&markup;$B@k8@$r4^$`$3$H$b$G$-$k!#$5$i$K!$$=$NN>J}$b2DG=$H$9$k!#$"$kJ8=q$N(BDTD$B$O!$N>J}$N(B&subset;$B$r$^$H$a$?$b$N$H$7$F9=@.$9$k!#(B</termdef>
+</p>
+<p><termdef id="dt-markupdecl" term="markup declaration">
+<term>&markup;$B@k8@(B</term>$B$O!$(B<termref def="dt-eldecl">$BMWAG7?@k8@(B</termref>$B!$(B <termref def="dt-attdecl">$BB0@-%j%9%H@k8@(B</termref>$B!$(B<termref def="dt-entdecl">$B<BBN@k8@(B</termref>$BKt$O(B<termref def="dt-notdecl">$B5-K!@k8@(B</termref>$B$H$9$k!#(B</termdef>$B<!$K<($9(B&well-formed;$B@)Ls5Z$S(B&validity;$B@)Ls$K5,Dj$9$k$,!$$3$l$i$N@k8@$O!$(B<termref def='dt-PE'>&parameter;$B<BBN(B</termref>$BFb$KA4BNKt$O0lIt$,4^$^$l$F$b$h$$!#>\$7$$5,Dj$O!$(B<titleref xml-link="simple" href="sec-physical-struct">$BJ*M}9=B$(B</titleref>$B$K4X$9$k5,Dj$r;2>H$N$3$H!#(B</p>
+<scrap lang="ebnf" id='dtd'>
+<head>$BJ8=q7?Dj5A(B</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-doctypedecl'><lhs>doctypedecl</lhs>
+<rhs>'&lt;!DOCTYPE' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt>
+<nt def='NT-ExternalID'>ExternalID</nt>)?
+<nt def='NT-S'>S</nt>? ('['
+(<nt def='NT-markupdecl'>markupdecl</nt>
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-S'>S</nt>)*
+']'
+<nt def='NT-S'>S</nt>?)? '>'</rhs>
+<vc def="vc-roottype"/>
+<!--<vc def="vc-nonnullDTD"/>-->
+</prod>
+<!--
+<prod id='NT-markupdecls'><lhs>markupdecls</lhs>
+<rhs>
+(<nt def='NT-S'>S</nt>?
+<nt def='NT-markupdecl'>markupdecl</nt>
+<nt def='NT-S'>S</nt>?)*
+</rhs></prod>
+-->
+<prod id='NT-markupdecl'><lhs>markupdecl</lhs>
+<rhs><nt def='NT-elementdecl'>elementdecl</nt>
+| <nt def='NT-AttlistDecl'>AttlistDecl</nt>
+| <nt def='NT-EntityDecl'>EntityDecl</nt>
+| <nt def='NT-NotationDecl'>NotationDecl</nt>
+| <nt def='NT-PI'>PI</nt>
+| <nt def='NT-Comment'>Comment</nt>
+<!--| <nt def='NT-InternalPERef'>InternalPERef</nt> --></rhs>
+<vc def='vc-PEinMarkupDecl'/>
+<wfc def="wfc-PEinInternalSubset"/>
+</prod>
+<!--
+<prod id="NT-InternalPERef"><lhs>InternalPERef</lhs>
+<rhs><nt def="NT-PEReference">PEReference</nt></rhs>
+<wfc def="wfc-integraldec"/>
+</prod>
+-->
+</prodgroup>
+</scrap>
+<vcnote id="vc-roottype">
+<head>&root;$BMWAG7?(B</head>
+<p>
+$BJ8=q7?@k8@$K$*$1$k(B<nt def='NT-Name'>Name</nt>$B$O!$(B&root;$BMWAG$N7?$H(B&match;$B$7$J$1$l$P$J$i$J$$!#(B
+</p>
+</vcnote>
+<!--
+<vcnote id="vc-nonnullDTD">
+<head>Non-null DTD</head>
+<p>
+The internal and external subsets of the DTD must not both
+be empty.
+</p>
+</vcnote>
+-->
+<vcnote id='vc-PEinMarkupDecl'>
+<head>$B@k8@5Z$S(B&parameter;$B<BBN$,87L)$KF~$l;R$r$J$9$3$H(B</head>
+<p>&parameter;$B<BBN(B<termref def='dt-repltext'>$B$N(B&replacement-text;</termref>$B$O!$(B&markup;$B@k8@Fb$K$*$$$F!$87L)$KF~$l;R$K$J$C$F$$$J$1$l$P$J$i$J$$!#$D$^$j!$(B&markup;$B@k8@(B(<nt def='NT-markupdecl'>markupdecl</nt>)$B$N:G=iKt$O:G8e$NJ8;z$,!$(B<termref def='dt-PERef'>&parameter;$B<BBN;2>H(B</termref>$B$NBP>]$H$J$k(B&replacement-text;$B$K4^$^$l$l$P!$N>J}$H$bF1$8(B&replacement-text;$B$K4^$^$l$J$1$l$P$J$i$J$$!#(B</p>
+</vcnote>
+<wfcnote id="wfc-PEinInternalSubset">
+<head>$BFbIt(B&subset;$BFb$N(B&parameter;$B<BBN(B</head>
+<p>DTD$B$NFbIt(B&subset;$B$G$O!$(B<termref def='dt-PERef'>&parameter;$B<BBN;2>H(B</termref>$B$O!$(B&markup;$B@k8@$,=P8=2DG=$J>l=j$@$1$K=P8=$G$-$k!#(B&markup;$B@k8@Fb$K$O=P8=$G$-$J$$(B($B$3$N@)Ls$O!$30It(B&parameter;$B<BBNKt$O30It(B&subset;$B$G$N;2>H$K$OE,MQ$7$J$$!#(B)$B!#(B
+</p>
+</wfcnote>
+<p>
+$BFbIt(B&subset;$B$N$H$-$HF1MM$K!$30It(B&subset;$B5Z$S(BDTD$B$K$*$$$F;2>H$9$kG$0U$N30It(B&parameter;$B<BBN$O!$Hs=*C<5-9f(B<nt def="NT-markupdecl">markupdecl</nt>$B$K$h$C$F5v$5$l$k7?$N!$0lO"$N40A4$J(B&markup;$B@k8@$G9=@.$5$l$J$1$l$P$J$i$J$$!#(B&markup;$B@k8@$N4V$K$O!$6uGrKt$O(B<termref def="dt-PERef">&parameter;$B<BBN;2>H(B</termref>$B$rCV$$$F$b$h$$!#$7$+$7!$30It(B&subset;$BKt$O30It(B&parameter;$B<BBN$NFbMF$N0lIt$O!$(B<termref def="dt-cond-section">$B>r7oIU$-%;%/%7%g%s(B</termref>$B$r;HMQ$7$FL5;k$7$F$b$h$$!#FbIt%5%V%;%C%H$G$O!$$3$l$O5v$5$l$J$$!#(B
+<!--In the external subset, however, parameter-entity references can
+be used to replace constructs prefixed by "<code>%</code>" in a production of
+the grammar, and <termref def="dt-cond-section">conditional sections</termref>
+may occur.
+In the internal subset, by contrast, conditional sections may not
+occur and the only parameter-entity references
+allowed are those which match the non-terminal
+<nt def="NT-InternalPERef">InternalPERef</nt>
+within the rule for <nt def="NT-doctypedecl">markupdecl</nt>.
+-->
+<scrap id="ext-Subset">
+<head>$B30It(B&subset;</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-extSubset'><lhs>extSubset</lhs>
+<rhs>(
+<nt def='NT-markupdecl'>markupdecl</nt>
+| <nt def='NT-conditionalSect'>conditionalSect</nt>
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-S'>S</nt>
+)*</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>$B30It(B&subset;$B5Z$S30It(B&parameter;$B<BBN$O!$$=$NFb$G$O!$(B&parameter;$B<BBN$,(B&markup;$B@k8@$N(B<emph>$B4V(B</emph>$B$@$1$G$J$/!$(B&markup;$B@k8@$N(B<emph>$BFb(B</emph>$B$G$bG'<1$5$l$k!$$H$$$&E@$G$bFbIt(B&subset;$B$H$O0[$J$k!#(B
+</p>
+<p>$BJ8=q7?@k8@IU$-$N(BXML$BJ8=q$NNc$r!$<!$K<($9!#(B
+<eg><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE greeting SYSTEM "hello.dtd">
+<greeting>Hello, world!</greeting>
+]]></eg>
+<termref def="dt-sysid">$B%7%9%F%`(B&identifier;</termref> "<code>hello.dtd</code>"$B$,!$J8=q$N(BDTD$B$N(BURI$B$H$J$k!#(B</p>
+<p>$B<!$NNc$N$H$*$j!$@k8@$r6I=jE*$KM?$($k$3$H$b$G$-$k!#(B
+<eg><![CDATA[<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE greeting [
+ <!ELEMENT greeting (#PCDATA)>
+]>
+<greeting>Hello, world!</greeting>
+]]></eg>
+$B30It(B&subset;$B5Z$SFbIt(B&subset;$B$NN>J}$r;HMQ$9$k$H$-$O!$FbIt(B&subset;$B$,30It(B&subset;$B$h$j@h$K=P8=$7$?$H8+$J$9!#(B<!--* 'is considered to'? boo. whazzat mean? -->$B$3$l$O!$FbIt(B&subset;$B$N<BBN5Z$SB0@-%j%9%H@k8@$,!$30It(B&subset;$B$N<BBN5Z$SB0@-%j%9%H@k8@$h$jM%@h$9$k$H$$$&8z2L$r$b$?$i$9!#(B
+</p>
+</div2>
+
+<div2 id='sec-rmd'>
+<head>&standalone;$BJ8=q@k8@(B</head>
+<p><termref def="dt-xml-proc">XML&processor;</termref>$B$O!$(B&application;$B$KJ8=q$NFbMF$rEO$9$,!$(B&markup;$B@k8@$O!$$3$NFbMF$K1F6A$rM?$($k$3$H$,$"$k!#B0@-$N(B&default-value;$B5Z$S<BBN@k8@$r$=$NNc$H$9$k!#(BXML$B@k8@$N0lItJ,$H$7$F=P8=$G$-$k(B&standalone;$BJ8=q@k8@$O!$J8=q$,!$$=$N(B&markup;$B@k8@$NB8:_$K$h$C$F1F6A$5$l$J$$$3$H$r;X$7<($9!JIaDL!$$=$N(B&markup;$B@k8@$,B8:_$7$J$$$?$a$K!$$3$l$,$$$($k!#!K!#(B
+<scrap lang="ebnf" id='fulldtd'>
+<head>&standalone;$BJ8=q@k8@(B</head>
+<prodgroup pcw2="4" pcw4="19.5" pcw5="9">
+<prod id='NT-SDDecl'><lhs>SDDecl</lhs>
+<rhs>
+<nt def="NT-S">S</nt>
+'standalone' <nt def='NT-Eq'>Eq</nt> "'" ('yes' | 'no') "'"
+</rhs>
+<rhs>
+| <nt def="NT-S">S</nt>
+'standalone' <nt def='NT-Eq'>Eq</nt> '"' ('yes' | 'no') '"'
+</rhs><vc def='vc-check-rmd'/></prod>
+</prodgroup>
+</scrap></p>
+<p>&standalone;$BJ8=q@k8@$K$*$$$F$O(B, "<code>yes</code>"$B$NCM$O!$(B<termref def='dt-docent'>$BJ8=q<BBN(B</termref>$B$N30It$K!J(BDTD$B$N30It(B&subset;$BFb$K!$Kt$OFbIt(B&subset;$B$+$i;2>H$5$l$k30It%Q%i%a%?<BBNFb$K!K!$(BXML&processor;$B$+$i(B&application;$B$X$HEO$5$l$k>pJs$K1F6A$9$k(B&markup;$B@k8@$,B8:_$7$J$$$3$H$r0UL#$9$k!#(B"<code>no</code>"$B$NCM$O!$$=$N30It(B&markup;$B@k8@$,B8:_$9$k$+!$Kt$OB8:_$9$k2DG=@-$,$"$k$3$H$r0UL#$9$k!#(B&standalone;$BJ8=q@k8@$O!$$=$N(B<emph>$B@k8@(B</emph>$B$,J8=q30It$KB8:_$9$k$+$I$&$+$r<($9$@$1$KCm0U$9$k$3$H!#30It<BBN$X$N;2>H$,J8=qFb$KB8:_$7$F$$$F$b!$$=$N<BBN$,FbItE*$K@k8@$5$l$F$$$k$H$-$O!$J8=q$N(B&standalone;$B$N>uBV$K$O1F6A$rM?$($J$$!#(B</p>
+
+<p>$B30It$K(B&markup;$B@k8@$,B8:_$7$J$1$l$P!$(B&standalone;$BJ8=q@k8@$O0UL#$r$b$?$J$$!#30It$K(B&markup;$B@k8@$,B8:_$7!$(B&standalone;$BJ8=q@k8@$,B8:_$7$J$$>l9g$O!$(B<code>"no"</code> $B$NCM$N@_Dj$r2>Dj$9$k!#(B</p>
+<p>XML$BJ8=q$G(B <code>standalone="no"</code> $B$,@_Dj$5$l$F$$$k$b$N$O!$$"$k%"%k%4%j%:%`$G(B&standalone;$BJ8=q$KJQ49$G$-!$$3$NJ8=q$O!$%M%C%H%o!<%/G[?.(B&application;$B$K$H$C$FK>$^$7$$$+$b$7$l$J$$!#(B</p>
+<vcnote id='vc-check-rmd'>
+<head>&standalone;$BJ8=q@k8@(B</head>
+<p>&standalone;$BJ8=q@k8@$O!$2?$i$+$N30It(B&markup;$B@k8@$,<!$N$$$:$l$+$r@k8@$7$F$$$k$H$-$O!$CM(B "<code>no</code>" $B$r<h$i$J$1$l$P$J$i$J$$!#(B
+<ulist>
+<item><p>a) <termref def="dt-default">&default;</termref>$BCMIU$-$NB0@-$G$"$C$F!$$3$NB0@-$,E,MQ$5$l$kMWAG$,!$B0@-CM$r;XDj$;$:$KJ8=qFb$K8=$l$k$b$N!#(B</p></item>
+<item><p>b) &magicents;$B0J30$N<BBN$G$"$C$F!$$=$N<BBN$KBP$9$k(B<termref def="dt-entref">$B;2>H(B</termref>$B$,J8=qFb$K=P8=$9$k$b$N!#(B</p>
+</item>
+<item><p>c) $BCM$,(B<titleref href='AVNormalize'>$B@55,2=(B</titleref>$B$NBP>]$H$J$kB0@-$G$"$C$F!$@55,2=$N7k2L$H$7$FJQ2=$9$kCM$,J8=qFb$GB0@-$K;XDj$5$l$k$b$N!#(B</p></item>
+<item>
+<p>d) <termref def="dt-elemcontent">$BMWAGFbMF(B</termref>$B$r$b$DMWAG7?$G$"$C$F!$6uGr$,$=$NMWAG7?$N$$$:$l$+$N%$%s%9%?%s%9Fb$KD>@\8=$l$k$b$N!#(B
+</p></item>
+</ulist>
+</p>
+</vcnote>
+<p>&standalone;$BJ8=q@k8@IU$-$N(BXML$B@k8@$NNc$r!$<!$K<($9!#(B
+<eg>&lt;?xml version="&XML.version;" standalone='yes'?></eg></p>
+</div2>
+<div2 id='sec-white-space'>
+<head>$B6uGr$N<h07$$(B</head>
+<p>XML$BJ8=q$rJT=8$9$k$H$-$O!$(B&markup;$B$rL\N)$?$;FI$_$d$9$/$9$k$?$a$K!$!H6uGr!I(B(&space;$B!$%?%V5Z$S6uGr9T!#$3$N(B&TR-or-Rec;$B$G$O!$Hs=*C<5-9f$N(B<nt def='NT-S'>S</nt>$B$GI=$9(B)$B$r;H$&$HJXMx$J$3$H$,B?$$!#$=$N6uGr$O!$G[I[$9$k(B&version;$B$NJ8=q$N0lIt$H$7$F4^$a$k$3$H$r0U?^$7$J$$$N$rIaDL$H$9$k!#$7$+$7!$!H0UL#$N$"$k!I6uGr$G$"$C$F!$G[I[$9$k(B&version;$B$K;D$5$J$1$l$P$J$i$J$$$b$N$bB?$$!#Nc$($P!$;m5Z$S%=!<%9%3!<%I$K$*$1$k6uGr$,$"$k!#(B</p>
+<p><termref def='dt-xml-proc'>XML&processor;</termref>$B$O!$J8=qFb$N(B&markup;$B0J30$N$9$Y$F$NJ8;z$r!$$=$N$^$^JQ99$;$:$K(B&application;$B$KEO$5$J$1$l$P$J$i$J$$!#(B<termref def='dt-validating'>&validating;XML&processor;</termref>$B$O!$(B<termref def="dt-elemcontent">$BMWAGFbMF(B</termref>$B$NCf$N6uGr$rB>$NHs(B&markup;$BJ8;z$+$i6hJL$7!$(B&application;$BB&$KMWAGFbMF$NCf$N6uGr$,=EMW$G$J$$$H$$$&$3$H$rEA$($J$1$l$P$J$i$J$$!#(B</p>
+<p>
+"<code>xml:space</code>"$B$H$$$&FCJL$J(B<termref def='dt-attr'>$BB0@-(B</termref>$B$rJ8=q$KA^F~$9$k$3$H$K$h$C$F!$6uGr$r=EMW$H$9$k0U?^$r<($7$F$b$h$$!#$3$NB0@-$rE,MQ$9$kMWAG$K8=$l$k6uGr$r!$%"%W%j%1!<%7%g%s$,=EMW$J$b$N$H$7$F07$&$3$H$rMW5a$9$k!$$H$$$&0U?^$r<($9!#(B</p>
+<p>&valid;$B$JJ8=q$G$O!$$3$NB0@-$r;HMQ$9$k>l9g$O!$B>$NB0@-$HF1$8$h$&$K(B<termref def="dt-attdecl">$B@k8@(B</termref>$B$7$J$1$l$P$J$i$J$$!#@k8@$9$k$H$-$O!$<h$jF@$kCM$r(B"<code>default</code>"$B5Z$S(B "<code>preserve</code>"$B$@$1$H$9$k(B<termref def='dt-enumerated'>$BNs5s7?(B</termref>$B$G$J$1$l$P$J$i$J$$!#(B
+</p>
+<p>$BCM(B"<code>default</code>"$B$O!$(B&application;$B$N(B&default;$B$N6uGr=hM}%b!<%I$r!$$=$NMWAG$KE,MQ2DG=$H$9$k$3$H$r0UL#$9$k!#CM(B"<code>preserve</code>"$B$O!$(B&application;$B$,$9$Y$F$N6uGr$rJ]B8$9$k$3$H$r0UL#$9$k!#$3$N@k8@$N0U?^$O!$(B"<code>xml:space</code>" $BB0@-$NJL$N;XDj$G>e=q$-$7$J$$8B$j!$MWAG$NFbMF$K8=$l$k$9$Y$F$NMWAG$KE,MQ$9$k$H2r<a$9$k!#(B</p>
+<p>$BJ8=q$N(B<termref def='dt-root'>&root;$BMWAG(B</termref>$B$K$D$$$F$O!$$3$NB0@-$NCM$r;XDj$9$k$+!$Kt$O$3$NB0@-$N(B&default-value;$B$,$"$k>l9g$r=|$$$F$O!$(B&application;$B$K$h$k6uGr$N<h07$$$K$D$$$F!$$$$+$J$k0U?^$b<($5$J$$$H2r<a$9$k!#(B</p>
+<p>$BNc$r<!$K<($9!#(B
+<eg><![CDATA[ <!ATTLIST poem xml:space (default|preserve) 'preserve'>]]></eg>
+</p>
+</div2>
+<div2 id='sec-line-ends'>
+<head>$B9TKv$N<h07$$(B</head>
+<p>XML$B$N(B<termref def='dt-parsedent'>$B9=J8(B&parsed-entity;</termref>$B$O!$DL>o%3%s%T%e!<%?$N%U%!%$%kFb$KJ]B8$5$l!$JT=8$NJX59$N$?$a$KJ#?t$N9T$KJ,$1$k$3$H$,B?$$!#$3$l$i$N9T$O!$IaDL$O!$(B<code>CR</code> (#xD)$B%3!<%I5Z$S(B <code>LF</code> (#xA)$B%3!<%I$N2?$i$+$NAH9g$;$K$h$C$FJ,$1$i$l$k!#(B</p>
+<p><termref def='dt-app'>&application;</termref>$B$N=hM}$r4JC1$K$9$k$?$a!$30It(B&parsed-entity;$BKt$OFbIt(B&parsed-entity;$B$N(B&literal;$B<BBNCM$,!$(B"<code>#xD#xA</code>" $B$N#2J8;z$NO"B3$H$9$k(B&literal;$BKt$O(B<code>#xD</code>$B$NC1FH$N(B&literal;$B$r4^$`>l9g$K!$(B<termref def='dt-xml-proc'>XML&processor;</termref>$B$O!$(B&application;$B$KC10l$NJ8;z(B<code>#xA</code>$B$@$1$rEO$5$J$1$l$P$J$i$J$$(B($B$3$N=hM}$O!$F~NOFb$KB8:_$9$k2~9T%3!<%I$r9=J82r@O$NA0$K@55,2=$9$k$3$H$K$h$C$F!$MF0W$K<B8=$G$-$k!#(B)$B!#(B</p>
+</div2>
+<div2 id='sec-lang-tag'>
+<head>&language-identification;</head>
+<p>$BJ8=q=hM}$K$*$$$F$O!$$=$NJ8=q$NCf?H$,$I$s$J<+A38@8lKt$O7A<08@8l$G=q$+$l$F$$$k$+L@<($9$k$3$H$,!$Lr$KN)$D$3$H$,B?$$!#(B<!--$B$3$3$G;HMQ$9$k!H8@8l!I$H$$$&8@MU$N0UL#$O!$(B"Espa&#x00F1;ol" $B5Z$S(B"EBNF"$B$NAPJ}$GNc<($5$l$k0UL#$H$9$k!#(B--><!-- x00F1: spanish's small ntilde--></p>
+<!--; $B$3$N>pJs$O!JNc$r$"$2$l$P!KJ8=q$NJ8;z$NI=<(!$JB$S$K>pJsCj=P$N$?$a$N8l44!&7ABVAG2r@O5Z$S%F%-%9%H%V%m%C%/$N@07A$K1F6A$r5Z$\$92DG=@-$,$"$k!#(B-->
+<p>XML$BJ8=qFb$NMWAG$N$b$DFbMFKt$OB0@-CM$K$*$$$F;HMQ$9$k(B<!--$B<+A3Kt$O7A<0(B-->$B8@8l$r;XDj$9$k$?$a$K!$(B"<code>xml:lang</code>" $B$H$$$&L>A0$NFCJL$J(B<termref def="dt-attr">$BB0@-(B</termref>$B$r!$J8=qFb$KA^F~$7$F$b$h$$!#(B
+<!--; $B$3$NB0@-$O(BXML$B5,Dj$N0lIt$H$7$F!$J#?t$N(BXML&application;$B$NAj8_1?MQ@-$r9b$a$k$?$a$KDj5A$9$k!#(B-->
+$BB0@-$NCM$O!$(B<bibref ref="RFC1766"/>$B!H(BRFC1766$B!'(B&language-identification;$B$N$?$a$N%?%0!I$K$h$C$F5,Dj$5$l$k(B&language-identification;$B%3!<%I$K=>$&!#(B
+<scrap lang='ebnf'>
+<head>&language-identification;</head>
+<prod id='NT-LanguageID'><lhs>LanguageID</lhs>
+<rhs><nt def='NT-Langcode'>Langcode</nt>
+('-' <nt def='NT-Subcode'>Subcode</nt>)*</rhs></prod>
+<prod id='NT-Langcode'><lhs>Langcode</lhs>
+<rhs><nt def='NT-ISO639Code'>ISO639Code</nt> |
+<nt def='NT-IanaCode'>IanaCode</nt> |
+<nt def='NT-UserCode'>UserCode</nt></rhs>
+</prod>
+<prod id='NT-ISO639Code'><lhs>ISO639Code</lhs>
+<rhs>([a-z] | [A-Z]) ([a-z] | [A-Z])</rhs></prod>
+<prod id='NT-IanaCode'><lhs>IanaCode</lhs>
+<rhs>('i' | 'I') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id='NT-UserCode'><lhs>UserCode</lhs>
+<rhs>('x' | 'X') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id='NT-Subcode'><lhs>Subcode</lhs>
+<rhs>([a-z] | [A-Z])+</rhs></prod>
+</scrap>
+<nt def='NT-Langcode'>Langcode</nt>$B$O!$<!$N$I$l$G$b$h$$!#(B
+<ulist>
+<item><p>a) <bibref ref="ISO639"/>$B!H8@8l$NL>A0I=8=$N$?$a$N%3!<%I!I$G5,Dj$5$l$k(B2$BJ8;z$N(B&language-code;</p></item>
+<item><p>b) Internet Assigned Numbers Authority (IANA)$B$GEPO?$5$l$F$$$k(B&language-code;$B!#$3$l$O!$@hF,$,(B "<code>i-</code>" ($BKt$O(B"<code>I-</code>")$B$G;O$^$k!#(B</p></item>
+<item><p>c) &user;$B$K$h$C$FDj$a$i$l$?(B&language-code;$B!$Kt$O;dE*$J;HMQ$N$?$a$KJ#?t$NCDBN4V$,<h$j7h$a$?%3!<%I!#$3$l$i$O!$:#8e(BIANA$B$K$*$$$FI8=`2=Kt$OEPO?$5$l$k%3!<%I$H$N6%9g$rHr$1$k$?$a$K!$@hF,$r(B"<code>x-</code>" $BKt$O(B "<code>X-</code>" $B$G;O$a$k!#(B</p></item>
+</ulist></p>
+<p><nt def='NT-Subcode'>Subcode</nt>$B$O!$J#?t2s;H$C$F$b$h$$!#:G=i$N%5%V%3!<%I$,B8:_$7!$$=$NFbMF$,Fs$D$NJ8;z$+$i@.$k$H$-$O!$(B<bibref ref="ISO3166"/>ISO3166$B$N!H9qL>$rI=$9%3!<%I(B($B9q%3!<%I(B)$B!I$G$J$1$l$P$J$i$J$$!#:G=i$N%5%V%3!<%I$,(B3$BJ8;z0J>e$+$i@.$k$H$-$O!$(B<nt def='NT-Langcode'>Langcode</nt>$B$N@hF,$,!$(B"<code>x-</code>" $BKt$O(B "<code>X-</code>"$B$G;O$^$i$J$$8B$j!$;XDj$7$?8@8l$KBP$9$k%5%V%3!<%I$H$7!$(BIANA$B$KEPO?$5$l$?$b$N$G$J$1$l$P$J$i$J$$!#(B</p>
+<p>&language-code;$B$O!$>.J8;z$G$NI=5-$r!$(B&country-code;$B$O!$(B($BB8:_$9$k$J$i$P(B)$BBgJ8;z$G$NI=5-$r479T$H$9$k!#$7$+$7!$(BXML$BJ8=qFb$K$*$1$kB>$NL>A0$H$O0[$J$j!$$3$l$i$NCM$K$D$$$F$O!$BgJ8;z5Z$S>.J8;z$N6hJL$r$7$J$$$3$H$KCm0U$9$k$3$H!#(B</p>
+<p>$BNc$r<!$K<($9!#(B
+<eg><![CDATA[<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
+<p xml:lang="en-GB">What colour is it?</p>
+<p xml:lang="en-US">What color is it?</p>
+<sp who="Faust" desc='leise' xml:lang="de">
+ <l>Habe nun, ach! Philosophie,</l>
+ <l>Juristerei, und Medizin</l>
+ <l>und leider auch Theologie</l>
+ <l>]]><!-- x00DF german's es-zet; x00FC german's u-umlaut -->durchaus studiert mit hei&#223;em Bem&#252;h'n.<![CDATA[</l>
+ </sp>]]></eg></p>
+<!--<p>xml:lang $B$NCM$O!$MWAG$NFbMF5Z$S(B($BB0@-$N(B&default-value;$B$GDj$a$J$$8B$j(B)$B%U%j!<%F%-%9%H(B(CDATA)$B$NCM$r$b$D$=$NMWAG$X$N$9$Y$F$NB0@-$NCM$K$D$$$F!$$=$NN>J}$KE,MQ$9$k!#(B-->
+<p><code>xml:lang</code>$B$G@k8@$9$k0U?^$O!$(B<code>xml:lang</code>$B$NJL$N;XDj$G>e=q$7$J$$8B$j!$;XDj$7$?MWAG$NFbMF$K4^$`$9$Y$F$NMWAG$KE,MQ$9$k!#(B</p>
+<!--$B$"$kMWAG$K$*$1$k(B xml:lang $BB0@-$NCM$,Dj$a$i$l$F$*$i$:!$(BDTD$B$K$*$$$F$=$N(B&default-value;$B$,Dj$a$i$l$F$$$J$$>l9g!$$=$NMWAG$N(Bxml:lang $BB0@-$NCM$O!$?FMWAG$G$NCM$,B8:_$9$k>l9g$O!$$=$l$r0z$-7Q$0!#(B $B<!$NNc$K$*$1$kFs$D$N(B<term>$B$H$$$&L>A0$N@lLgMQ8l$rI=$9MWAG$O!$(Bxml:lang$B$NCM$K4X$7$F$O!$<B:]>e!$F1$8CM$r$b$D!#(B
+
+ <p xml:lang="en">Here the keywords are
+ <term xml:lang="en">shift</term> and
+ <term>reduce</term>. ...</p>
+
+XML&processor;$B$G$O$J$/(B&application;$B$,!$$3$NB0@-CM$N7Q>5$K$D$$$F@UG$$r$b$D!#(B
+-->
+<p>
+&valid;$B$JJ8=q$K$*$$$F$O!$$3$N(B&TR-or-Rec;$B$NB>$N>l=j$G5,Dj$9$k$H$*$j!$$3$NB0@-$rI,$:@k8@$7$J$1$l$P$J$i$J$$!#DL>o!$@k8@$O!$<!$N7A$H$9$k!#(B
+<eg>xml:lang NMTOKEN #IMPLIED</eg>
+$BI,MW$J$i$P!$FCDj$N(B&default-value;$B$rM?$($F$b$h$$!#1Q8l$rJl8l$H$9$k3X@8MQ$N%U%i%s%98l$N;m=8$G$O!$@bL@5Z$SCm$r1Q8l$G5-=R$9$l$P!$(Bxml:lang $BB0@-$r<!$N$H$*$j$K@k8@$9$k$3$H$H$J$k!#(B
+<eg><![CDATA[ <!ATTLIST poem xml:lang NMTOKEN 'fr'>
+ <!ATTLIST gloss xml:lang NMTOKEN 'en'>
+ <!ATTLIST note xml:lang NMTOKEN 'en'>]]></eg>
+</p>
+<!--
+DTD$B$N@_7W<T$O!$%9%/%j%W%H$r8@8l(B($B5Z$S$=$NGI@8BN(B)$B$KJq@]$7$F07$&$N$G$O$J$/!$%9%/%j%W%H5Z$S8@8l$rF1<!85$G07$&$N$,E,Ev$J>l9g!$8@8lB0@-$HF1MM$K%9%/%j%W%HB0@-$,B8:_$9$l$PM-MQ$@$H;W$&$+$b$7$l$J$$!#%j%s%/MWAG$K$*$$$F!$;2>H$5$l$?Kt$O%j%s%/$5$l$?%j%=!<%9$K$*$1$k(B($B<gMW$J(B)$B8@8l(B($B>l9g$K$h$C$F$OJ#?t(B)$B$rI=$9MWAG$rDj5A$9$k$N$bK>$^$7$$!#$7$+$7!$$3$l$i$N(B&application;$B$O!$$3$N(B&TR-or-Rec;$B$,5,Dj$9$kHO0O30$H$9$k!#(B-->
+</div2>
+</div1>
+<!-- &Elements; -->
+
+<div1 id='sec-logical-struct'>
+<head>$BO@M}9=B$(B</head>
+
+<p><termdef id="dt-element" term="Element">$B$$$+$J$k(B<termref def="dt-xml-doc">XML$BJ8=q(B</termref>$B$b!$0l$D0J>e$N(B<term>$BMWAG(B</term>$B$r4^$`!#MWAG$N6-3&$O(B, <termref def="dt-stag">$B3+;O%?%0(B</termref>$B5Z$S(B<termref def="dt-etag">$B=*N;%?%0(B</termref>$B$K$h$C$F6h@Z$k!#MWAG$,(B<termref def="dt-empty">$B6u(B</termref>$BMWAG$N$H$-$O!$(B<termref def="dt-eetag">$B6uMWAG%?%0(B</termref>$B$G<($9!#3F!9$NMWAG$O!$7?$r$b$D!#MWAG7?$OL>A0(B($B6&DL(B&identifier;(generic identifier)$BKt$O(BGI$B$H8F$V$3$H$,$"$k!#(B)$B$K$h$C$F(B&identified;$B!#MWAG$O!$$$$/$D$+$NB0@-$r$b$D$3$H$,$G$-$k!#(B</termdef>$BB0@-$O!$(B<termref def="dt-attrname">$BL>A0(B</termref>$B5Z$S(B<termref def="dt-attrval">$BCM(B</termref>$B$r$b$D!#(B</p>
+
+<scrap lang='ebnf'><head>$BMWAG(B</head>
+<prod id='NT-element'><lhs>element</lhs>
+<rhs><nt def='NT-EmptyElemTag'>EmptyElemTag</nt></rhs>
+<rhs>| <nt def='NT-STag'>STag</nt> <nt def='NT-content'>content</nt>
+<nt def='NT-ETag'>ETag</nt></rhs><wfc def='GIMatch'/></prod>
+</scrap>
+<p>$B$3$N(B&TR-or-Rec;$B$O!$MWAG7?5Z$SB0@-$N0UL#!$;HMQJ}K!!$Kt$O(B($B9=J8$K4X$9$k$3$H$r=|$-(B)$BL>A0$K@)Ls$rM?$($J$$!#$?$@$7!$@hF,$,(B<code>(('X'|'x')('M'|'m')('L'|'l'))</code>$B$K(B&match;$B$9$kL>A0$O!$$3$NHGKt$O:#8e$NHG$N$3$N(B&TR-or-Rec;$B$G$NI8=`2=$N$?$a$KM=Ls$9$k!#(B</p>
+
+<wfcnote id='GIMatch'><head>$BMWAG7?$N(B&match;</head>
+<p>$BMWAG$N=*N;%?%0$N(B<nt def='NT-Name'>$BL>A0(B</nt>$B$O!$$=$NMWAG$N3+;O%?%0$K$*$1$k7?$H(B&match;$B$7$J$1$l$P$J$i$J$$!#(B</p>
+</wfcnote>
+
+<div2 id='sec-starttags'>
+<head>$B3+;O%?%0!$=*N;%?%05Z$S6uMWAG%?%0(B</head>
+<p><termdef id="dt-stag" term="Start-Tag">$B6u$G$J$$G$0U$N(BXML$BMWAG$N;O$^$j$O!$(B<term>$B3+;O%?%0(B</term>$B$K$h$C$F(B&markup;$B$9$k!#(B
+<scrap lang='ebnf'><head>$B3+;O%?%0(B</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id='NT-STag'><lhs>STag</lhs><rhs>'&lt;' <nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt> <nt def='NT-Attribute'>Attribute</nt>)* <nt def='NT-S'>S</nt>? '>'</rhs><wfc def="uniqattspec"/></prod>
+<prod id='NT-Attribute'><lhs>Attribute</lhs><rhs><nt def='NT-Name'>Name</nt> <nt def='NT-Eq'>Eq</nt> <nt def='NT-AttValue'>AttValue</nt></rhs><vc def='ValueType'/><wfc def='NoExternalRefs'/><wfc def='CleanAttrVals'/></prod>
+</prodgroup>
+</scrap>
+$B3+;O%?%05Z$S=*N;%?%0Fb$N(B<nt def='NT-Name'>Name</nt>$B$O!$MWAG$N(B<term>$B7?(B</term>$B$rI=$o$9!#(B</termdef><termdef id="dt-attr" term="Attribute"><nt def='NT-Name'>Name</nt>$B5Z$S(B<nt def='NT-AttValue'>AttValue</nt>$B$NBP$rMWAG$N(B<term>$BB0@-;XDj(B</term>$B$H$$$$(B</termdef>$B!$(B<termdef id="dt-attrname" term="Attribute Name">$B8D!9$NBP$K$*$1$k(B<nt def='NT-Name'>Name</nt>$B$O!$(B<term>$BB0@-L>(B</term></termdef>$B5Z$S(B<termdef id="dt-attrval" term="Attribute Value"><nt def='NT-AttValue'>AttValue</nt>$B$NFbMF(B($B6h@Z$j;R(B<code>'</code>$BKt$O(B<code>"</code>$B$N4V$N(B&string;)$B$r(B<term>$BB0@-CM(B</term>$B$H$$$&!#(B</termdef></p>
+
+<wfcnote id='uniqattspec'><head>$BB0@-;XDj$N0l0U@-(B</head>
+<p>$B3+;O%?%0Kt$O6uMWAG%?%0$G$O!$F10l$NB0@-L>$,#2EY0J>e=P8=$7$F$O$J$i$J$$!#(B</p></wfcnote>
+<vcnote id='ValueType'><head>$BB0@-CM$N7?(B</head>
+<p>$BB0@-$O@k8@$5$l$F$$$J$1$l$P$J$i$J$$!#B0@-CM$N7?$O!$$=$NB0@-$KBP$7$F@k8@$7$?7?$G$J$1$l$P$J$i$J$$(B($BB0@-$N7?$K$D$$$F$O!$(B<titleref href='AttDecls'>$BB0@-%j%9%H@k8@(B</titleref>$B$K$D$$$F$N5,Dj$r;2>H!#(B)$B!#(B</p></vcnote>
+<wfcnote id='NoExternalRefs'><head>$B30It<BBN$X$N;2>H$,$J$$$3$H(B</head>
+<p>$BB0@-CM$K$O!$30It<BBN$X$ND>@\E*Kt$O4V@\E*$J;2>H$r4^$`$3$H$O$G$-$J$$!#(B</p></wfcnote>
+<wfcnote id='CleanAttrVals'><head>$BB0@-CM$K(B<code>&lt;</code>$B$r4^$^$J$$$3$H(B</head>
+<p>$BB0@-CMFb$GD>@\E*Kt$O4V@\E*$K;2>H$9$k<BBN(B(<code>&amp;lt;</code>$B$r=|$/!#(B)$B$N(B<termref def='dt-repltext'>&replacement-text;</termref>$B$K$O!$(B<code>&lt;</code>$B$r4^$s$G$O$J$i$J$$!#(B</p></wfcnote>
+
+<p>$B3+;O%?%0$NNc$r!$<!$K<($9!#(B
+<eg>&lt;termdef id="dt-dog" term="dog"></eg></p>
+<p><termdef id="dt-etag" term="End Tag">$B3+;O%?%0$G;O$^$kMWAG$N=*$o$j$O!$(B<term>$B=*N;%?%0(B</term>$B$G(B&markup;$B$7$J$1$l$P$J$i$J$$!#$3$N=*N;%?%0$O!$BP1~$9$k3+;O%?%0$NMWAG7?$HF1$8L>A0$r$b$D!#(B
+<scrap lang='ebnf'><head>$B=*N;%?%0(B</head><prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-ETag'><lhs>ETag</lhs><rhs>'&lt;/' <nt def='NT-Name'>Name</nt> <nt def='NT-S'>S</nt>? '>'</rhs></prod></prodgroup></scrap></termdef></p>
+<p>$B=*N;%?%0$NNc$r!$<!$K<($9!#(B
+<eg>&lt;/termdef></eg></p>
+
+<p><termdef id="dt-content" term="Content">$BMWAG$N3+;O%?%0$H=*N;%?%0$H$N4V$N(B<termref def='dt-text'>$B%F%-%9%H(B</termref>$B$r!$$=$NMWAG$N(B<term>$BFbMF(B</term>$B$H$$$&!#(B
+<scrap lang='ebnf'><head>$BMWAG$NFbMF(B</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-content'><lhs>content</lhs><rhs>(<nt def='NT-element'>element</nt> | <nt def='NT-CharData'>CharData</nt> | <nt def='NT-Reference'>Reference</nt> | <nt def='NT-CDSect'>CDSect</nt> | <nt def='NT-PI'>PI</nt> | <nt def='NT-Comment'>Comment</nt>)*</rhs></prod></prodgroup></scrap></termdef></p>
+
+<p><termdef id="dt-empty" term="Empty">$BMWAG$,(B<term>$B6u(B</term>$B$N$H$-!$$=$NMWAG$O!$D>8e$K=*N;%?%0$r$b$D3+;O%?%0Kt$O6uMWAG%?%0$GI=8=$7$J$1$l$P$J$i$J$$!#(B</termdef><termdef id="dt-eetag" term="empty-element tag"><term>$B6uMWAG%?%0(B</term>$B$O!$<!$NFCJL$J7A<0$r$H$k!#(B
+<scrap lang='ebnf'><head>$B6uMWAG$N$?$a$N%?%0(B</head><prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-EmptyElemTag'><lhs>EmptyElemTag</lhs><rhs>'&lt;' <nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt> <nt def='NT-Attribute'>Attribute</nt>)* <nt def='NT-S'>S</nt>? '/&gt;'</rhs><wfc def="uniqattspec"/></prod></prodgroup></scrap></termdef></p>
+
+<!-- $BLgGO!'>e$N!H6uMWAG$N$?$a$N%?%0(B(tags for empty elements)$B!I$O!H6uMWAG%?%0(B(empty-element tag)$B!I$H$9$Y$-$@$H;W$$$^$9$,!$$$$+$,$G$7$g$&$+(B -->
+
+<p>$B6uMWAG%?%0$O!$FbMF$r$b$?$J$$G$0U$NMWAG$NI=8=$KMxMQ$G$-$k!#6uMWAG%?%0$GI=8=$9$kMWAG$r!$%-!<%o!<%I(B<kw>EMPTY</kw>$B$rMQ$$$F@k8@$7$J$/$H$b$h$$!#(B</p>
+<p>$B6uMWAG$NNc$r!$<!$K<($9!#(B
+<eg>&lt;IMG align="left" src="http://www.w3.org/Icons/WWW/w3c_home" />&lt;br>&lt;/br>&lt;br/></eg></p>
+</div2>
+
+<div2 id='elemdecls'><head>$BMWAG@k8@(B</head>
+<p><termref def="dt-valid">&validity;</termref>$B$rJ]>Z$9$k$?$a!$MWAG@k8@5Z$SB0@-%j%9%H@k8@$rMQ$$$F(B<termref def="dt-xml-doc">XML$BJ8=q(B</termref>$B$N(B<termref def="dt-element">$BMWAG(B</termref>$B$N9=B$$K!$@)Ls$r2C$($k$3$H$,$G$-$k!#(B</p>
+<p>$BMWAG@k8@$O!$MWAG$N(B<termref def="dt-content">$BFbMF(B</termref>$B$K$D$$$F$N@)Ls$H$9$k!#(B</p>
+<p>$BMWAG@k8@$O!$MWAG$N(B<termref def="dt-parentchild">$B;R(B</termref>$B$H$7$F=P8=2DG=$JMWAG7?$K$D$$$F!$@)Ls$r2C$($k$3$H$,B?$$!#(B&at-user-option;$B!$MWAG@k8@$r$b$?$J$$MWAG7?$,B>$NMWAG@k8@$K$h$C$F;2>H$5$l$l$P!$(BXML&processor;$B$O!$7Y9p$r=P$7$F$b$h$$!#$7$+$7!$$3$l$O(B&error;$B$H$O$7$J$$!#(B</p>
+
+<p><termdef id="dt-eldecl" term="Element Type declaration"><term>$BMWAG7?@k8@(B</term>$B$O!$<!$N7A<0$r$H$k!#(B
+<scrap lang='ebnf'><head>$BMWAG7?@k8@(B</head><prodgroup pcw2="5.5" pcw4="18" pcw5="9">
+<prod id='NT-elementdecl'><lhs>elementdecl</lhs>
+<rhs>'&lt;!ELEMENT' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>
+<nt def='NT-contentspec'>contentspec</nt>
+<nt def='NT-S'>S</nt>? '>'</rhs>
+<vc def='EDUnique'/></prod>
+<prod id='NT-contentspec'><lhs>contentspec</lhs>
+<rhs>'EMPTY'
+| 'ANY'
+| <nt def='NT-Mixed'>Mixed</nt>
+| <nt def='NT-children'>children</nt>
+</rhs>
+<vc def='elementvalid'/>
+</prod>
+</prodgroup>
+</scrap>
+$B$3$3$G!$(B<nt def='NT-Name'>Name</nt>$B$O!$@k8@$5$l$F$$$kMWAG$N7?$H$9$k!#(B</termdef></p>
+
+<vcnote id='EDUnique'><head>$BMWAG@k8@$N0l0U@-(B</head>
+<p>$BMWAG7?$r#2EY0J>e@k8@$G$-$J$$!#(B</p></vcnote>
+
+<vcnote id='elementvalid'><head>$BMWAG$N(B&validity;</head>
+<p>$BMWAG$,(B<!-- said to be -->&valid;$B$H$O!$(B<nt def='NT-elementdecl'>elementdecl</nt>$B$K(B&match;$B$9$k@k8@$G$"$C$F!$$=$N(B<nt def='NT-Name'>Name</nt>$B$,$=$NMWAG7?$H(B&match;$B$7!$<!$N$$$:$l$+$N>r7o$rK~$?$9>l9g$H$9$k!#(B<ulist>
+<item><p>a) $B@k8@$,(B<kw>EMPTY</kw>$B$K(B&match;$B$7!$MWAG$,(B<termref def='dt-content'>$BFbMF(B</termref>$B$r$b$?$J$$!#(B</p></item>
+<item><p>b) $B@k8@$,(B<nt def='NT-children'>children</nt>$B$K(B&match;$B$7!$MWAG$N(B<termref def="dt-parentchild">$B;RMWAG(B</termref>$B$NJB$S$,!$FbMF%b%G%k$N@55,I=8=$K$h$C$F@8@.$5$l$k8@8l$KB0$9$k!#(B</p></item>
+<item><p>c) $B@k8@$,(B<nt def='NT-Mixed'>mixed</nt>$B$K(B&match;$B$7!$MWAG$NFbMF$,(B<termref def='dt-chardata'>$BJ8;z%G!<%?(B</termref>$B5Z$S(B<termref def='dt-parentchild'>$B;RMWAG(B</termref>$B$+$i$J$k!#;RMWAG$NMWAG7?$O!$MWAG$NFbMF%b%G%k$K=P8=$9$kL>A0$K(B&match;$B$9$k!#(B</p></item>
+<item><p>d) $B@k8@$,(B<kw>ANY</kw>$B$K(B&match;$B$7!$$I$N(B<termref def='dt-parentchild'>$B;RMWAG(B</termref>$B$NMWAG7?$b@k8@$5$l$F$$$k!#(B</p></item></ulist>
+
+</p></vcnote>
+<!-- with the new VC, I don't think the next few paras add anything -TWB
+<p><termdef id="dt-model" term="content model">An element can declared using a <term>content model</term>, in which case its content can be categorized as <termref def="dt-elemcontent">element content</termref> or <termref def='dt-mixed'>mixed content</termref>, as explained below.</termdef></p>
+<p>An element whose type declared using the keyword <kw>EMPTY</kw> must be <termref def="dt-empty">empty</termref> and may be tagged using an <termref def="dt-eetag">empty-element tag</termref> when it appears in the document.</p>
+<p>If an element type is declared using the keyword <kw>ANY</kw>, then there are no validity constraints on its content: it may contain <termref def='dt-parentchild'>child elements</termref> of any type and number, interspersed with character data.</p> -->
+
+<p>$BMWAG@k8@$NNc$r!$<!$K<($9!#(B
+<eg>
+&lt;!ELEMENT br EMPTY>
+&lt;!ELEMENT p (#PCDATA|emph)* >
+&lt;!ELEMENT %name.para; %content.para; >
+&lt;!ELEMENT container ANY>
+</eg></p>
+
+<div3 id='sec-element-content'><head>$BMWAGFbMF(B</head>
+
+<p><termdef id='dt-elemcontent' term='Element content'>$B$"$k7?$NMWAG$,(B<termref def='dt-parentchild'>$B;R(B</termref>$BMWAG$@$1$r4^$`(B($BJ8;z%G!<%?$r4^$^$J$$!#(B)$B$H$-!$$=$NMWAG(B<termref def="dt-stag">$B7?(B</termref>$B$O!$(B<term>$BMWAGFbMF(B</term>$B$r$b$D!$$H$$$&!#(B</termdef>$B$3$N>l9g!$@)Ls$O!$FbMF%b%G%k$r4^$`!#FbMF%b%G%k$O!$;RMWAG$N7?5Z$S;RMWAG$N=P8==g=x$r@)8f$9$k4JC1$JJ8K!$H$9$k!#$3$NJ8K!$O!$(B&content-particle;(<nt def='NT-cp'>cp</nt>s)$B$+$i$J$k!#(B&content-particle;$B$O!$L>A0!$(B&content-particle;$B$NA*Br%j%9%HKt$O(B&content-particle;$B$NNs%j%9%H$+$i9=@.$5$l$k!#(B
+<scrap lang='ebnf'><head>$BMWAGFbMF%b%G%k(B</head><prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id='NT-children'><lhs>children</lhs><rhs>(<nt def='NT-choice'>choice</nt> | <nt def='NT-seq'>seq</nt>) ('?' | '*' | '+')?</rhs></prod><prod id='NT-cp'><lhs>cp</lhs><rhs>(<nt def='NT-Name'>Name</nt> | <nt def='NT-choice'>choice</nt> | <nt def='NT-seq'>seq</nt>) ('?' | '*' | '+')?</rhs></prod>
+<prod id='NT-choice'><lhs>choice</lhs><rhs>'(' <nt def='NT-S'>S</nt>? cp ( <nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*<nt def='NT-S'>S</nt>? ')'</rhs><vc def='vc-PEinGroup'/></prod>
+<prod id='NT-seq'><lhs>seq</lhs><rhs>'(' <nt def='NT-S'>S</nt>? cp ( <nt def='NT-S'>S</nt>? ',' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*<nt def='NT-S'>S</nt>? ')'</rhs><vc def='vc-PEinGroup'/></prod>
+<!-- <prod id='NT-cps'><lhs>cps</lhs><rhs><nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> <nt def='NT-S'>S</nt>?</rhs></prod>
+<prod id='NT-choice'><lhs>choice</lhs><rhs>'(' <nt def='NT-S'>S</nt>? <nt def='NT-ctokplus'>ctokplus</nt> (<nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>? <nt def='NT-ctoks'>ctoks</nt>)* <nt def='NT-S'>S</nt>? ')'</rhs></prod>
+<prod id="NT-ctokplus"><lhs>ctokplus</lhs><rhs><nt def="NT-cps">cps</nt>('|' <nt def="NT-cps">cps</nt>)+</rhs></prod>
+<prod id="NT-ctoks"><lhs>ctoks</lhs><rhs><nt def="NT-cps">cps</nt>('|' <nt def="NT-cps">cps</nt>)*</rhs></prod>
+<prod id='NT-seq'><lhs>seq</lhs><rhs>'(' <nt def='NT-S'>S</nt>?<nt def='NT-stoks'>stoks</nt> (<nt def='NT-S'>S</nt>? ',' <nt def='NT-S'>S</nt>? <nt def='NT-stoks'>stoks</nt>)*<nt def='NT-S'>S</nt>? ')'</rhs></prod>
+<prod id="NT-stoks"><lhs>stoks</lhs><rhs><nt def="NT-cps">cps</nt>(',' <nt def="NT-cps">cps</nt>)*</rhs></prod>
+-->
+</prodgroup></scrap>
+$B$3$3$G!$(B<nt def='NT-Name'>Name</nt>$B$O!$(B<termref def="dt-parentchild">$B;R(B</termref>$B$H$7$F=P8=$7$F$h$$MWAG$N7?$r<($9!#$3$NJ8K!$GA*Br%j%9%H$,8=$l$k0LCV$G$O!$A*Br%j%9%HFb$N$$$:$l$N(B&content-particle;$B$b(B<termref def="dt-elemcontent">$BMWAGFbMF(B</termref>$B$NCf$K8=$l$F$h$$!#Ns%j%9%H$K8=$l$k(B&content-particle;$B$O!$%j%9%H$G;XDj$9$k=gHV$N$H$*$j$K!$(B<termref def="dt-elemcontent">$BMWAGFbMF(B</termref>$B$K8=$l$J$1$l$P$J$i$J$$!#L>A0Kt$O%j%9%H$N8e$K=P8=$9$k%*%W%7%g%s$NJ8;z(B<!-- $BLgGO!'(Bcharacter$B$rJ8;z$HLu$7$^$7$?(B -->$B$O!$%j%9%HFb$NMWAGKt$O(B&content-particle;$B$,!$(B1$B2s0J>eG$0U$N2s?t(B(<code>+</code>)$B!$(B0$B2s0J>eG$0U$N2s?t(B(<code>*</code>)$BKt$O(B0$B2s<c$7$/$O(B1$B2s(B(<code>?</code>)$B=P8=2DG=$J$3$H$r5,Dj$9$k!#$3$3$G<($99=J85Z$S0UL#$O!$$3$N(B&TR-or-Rec;$B$K$*$1$k@8@.5,B'$GMQ$$$k$b$N$HF10l$H$9$k!#(B</p>
+
+<!-- $BLgGO!'>e$NJ8$G$O!$!H(Bname$BKt$O(Blist$B$N8e$KB3$/J8;z!I$,!H(Blist$B$N=P8=$r5,Dj$9$k!I$H$"$C$F!$(Bname$B$N=P8=$r5,Dj$9$k$H$O=q$$$F$"$j$^$;$s!#=$@5$,I,MW$H9M$($^$9!#(B -->
+
+<p>$BMWAG$NFbMF$,FbMF%b%G%k$K(B&match;$B$9$k$N$O!$Ns!$A*Br5Z$S7+JV$71i;;;R$K$7$?$,$C$F!$FbMF$NCf$NMWAG$HFbMF%b%G%kFb$NMWAG7?$H$r(B&match;$B$5$;$J$,$i!$FbMF%b%G%kFb$N0l$D$N%Q%9$r$?$I$l$k$H$-$K8B$k!#(B<termref def='dt-compat'>$B8_49@-$N$?$a(B</termref>$B!$J8=qFb$NMWAG$,!$FbMF%b%G%k$K$*$1$kMWAG7?$NJ#?t$N=P8=0LCV$H(B&match;$B$9$k$3$H$O!$(B&error;$B$H$9$k!#>\:Y$J5,Dj$K$D$$$F$O!$ImB0=q$N(B<titleref xml-link="simple" href="determinism">$B7hDjE*FbMF%b%G%k(B</titleref>$B$N9`$r;2>H!#(B
+<!-- appendix <specref ref="determinism"/>. -->
+<!-- appendix on deterministic content models. -->
+</p>
+
+<vcnote id='vc-PEinGroup'>
+<head>$B%0%k!<%W5Z$S%Q%i%a%?<BBN$,87L)$JF~$l;R$r$J$7$F$$$k$3$H(B</head>
+<p>$B%Q%i%a%?<BBN$N(B<termref def='dt-repltext'>&replacement-text;</termref>$B$O!$(B&parenthesis;$B$G0O$^$l$?%0%k!<%W$K$h$C$F!$87L)$JF~$l;R$r9=@.$7$J$1$l$P$J$i$J$$!#$D$^$j!$(B<nt def='NT-choice'>$BA*Br(B</nt>$B!$(B<nt def='NT-seq'>$BNs(B</nt>$BKt$O(B<nt def='NT-Mixed'>$B:.:_(B</nt>$BItIJ$K!$(B&left-parenthesis;$BKt$O(B&right-parenthesis;$B$N$$$:$l$+0lJ}$,(B<termref def='dt-PERef'>$B%Q%i%a%?<BBN(B</termref>$B$N(B&replacement-text;$B$K4^$l$l$P!$B>J}$bF1$8(B&replacement-text;$B$K4^$^$l$J$1$l$P$J$i$J$$!#(B</p>
+<p><termref def='dt-interop'>$BAj8_1?MQ@-$N$?$a(B</termref>$B!$%Q%i%a%?<BBN;2>H$,(B<nt def='NT-choice'>$BA*Br(B</nt>$B!$(B<nt def='NT-seq'>$BNs(B</nt>$BKt$O(B<nt def='NT-Mixed'>$B:.:_(B</nt>$BFbMF$K4^$^$l$l$P!$$=$N(B&replacement-text;$B$O6u$G$J$$$3$H$,K>$^$7$/!$(B&replacement-text;$B$N@hF,5Z$SKvHx$N6uGr$G$J$$J8;z$O!$%3%M%/%?(B(<code>|</code>$BKt$O(B<code>,</code>)$B$G$J$$J}$,$h$$!#(B
+</p>
+</vcnote>
+<p>$BMWAGFbMF%b%G%k$N$$$/$D$+$NNc$r!$<!$K<($9!#(B
+<eg>&lt;!ELEMENT spec (front, body, back?)>
+&lt;!ELEMENT div1 (head, (p | list | note)*, div2*)>
+&lt;!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*></eg></p>
+</div3>
+
+<div3 id='sec-mixed-content'>
+<head>&mixed-content;</head>
+
+<p><termdef id='dt-mixed' term='Mixed Content'>$B$"$kMWAG7?$NMWAGFb$K!$(B<termref def="dt-parentchild">$B;R(B</termref>$BMWAG$K:.:_$7$FJ8;z%G!<%?$,4^$^$l$k2DG=@-$,$"$k$H$-!$$=$NMWAG(B<termref def='dt-stag'>$B7?(B</termref>$B$O!$(B<term>&mixed-content;</term>$B$r$b$D$H$$$&!#(B</termdef>$B$3$N>l9g!$;RMWAG$N7?$K$D$$$F$N@)Ls$,B8:_$7$F$b$h$$(B<!-- $BLgGO!'!H(Bmay be constrained$B!I$rC1$K!V@)Ls$5$l$k!W$HLu$7$^$7$?!#(B -->$B$,!$;RMWAG$N=g=xKt$O=P8=2s?t$K$D$$$F$N@)Ls$O$J$$$H$9$k!#(B
+<scrap lang='ebnf'>
+<head>&mixed-content;$B@k8@(B</head>
+<prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id='NT-Mixed'><lhs>Mixed</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>?
+'#PCDATA'
+(<nt def='NT-S'>S</nt>?
+'|'
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>)*
+<nt def='NT-S'>S</nt>?
+')*' </rhs>
+<rhs>| '(' <nt def='NT-S'>S</nt>? '#PCDATA' <nt def='NT-S'>S</nt>? ')'
+</rhs><vc def='vc-PEinGroup'/>
+<vc def='vc-MixedChildrenUnique'/>
+</prod>
+<!--
+<prod id="NT-Mtoks"><lhs>Mtoks</lhs>
+<rhs><nt def="NT-Name">Name</nt>
+(<nt def='NT-S'>S</nt>?
+'|'
+<nt def='NT-S'>S</nt>?
+<nt def="NT-Name">Name</nt>)*
+</rhs>
+</prod>
+-->
+</prodgroup>
+</scrap>
+$B$3$3$G!$(B<nt def='NT-Name'>Name</nt>$B$O!$;R$H$7$F=P8=$7$F$b$h$$MWAG$N7?$r<($9!#(B
+</p>
+
+<vcnote id='vc-MixedChildrenUnique'>
+<head>$BMWAG7?$N=EJ#$N6X;_(B</head>
+<p>$B0l$D$N(B&mixed-content;$B@k8@Fb$K!$F1$8L>A0$,J#?t2s=P8=$7$F$O$J$i$J$$!#(B
+</p></vcnote>
+<p>&mixed-content;$B@k8@$NNc$r!$<!$K<($9!#(B
+<eg>&lt;!ELEMENT p (#PCDATA|a|ul|b|i|em)*>
+&lt;!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >
+&lt;!ELEMENT b (#PCDATA)></eg></p>
+</div3>
+</div2>
+
+
+<div2 id='attdecls'>
+<head>$BB0@-%j%9%H@k8@(B</head>
+<p>
+<termref def="dt-attr">$BB0@-(B</termref>$B$O!$L>A05Z$SCM$NBP$r(B<termref def="dt-element">$BMWAG(B</termref>$B$K4XO"IU$1$k$?$a$KMQ$$$k!#B0@-;XDj$O!$(B<termref def="dt-stag">$B3+;O%?%0(B</termref>$BKt$O(B<termref def="dt-eetag">$B6uMWAG(B</termref>$B%?%0Fb$G$@$12DG=$H$9$k!#$7$?$,$C$F!$B0@-$rG'<1$9$k$?$a$N@8@.5,B'$O!$(B<titleref href='sec-starttags'>$B3+;O%?%0(B</titleref>$B$K$D$$$F$N5,Dj$G<($9!#B0@-%j%9%H@k8@$O!$<!$NL\E*$GMQ$$$k!#(B
+<ulist>
+<item><p>a) $B$"$kMWAG7?$KE,MQ$9$kB0@-$N=89g$r5,Dj$9$k!#(B</p></item>
+<item><p>b) $BB0@-$X$N7?@)Ls$r@_Dj$9$k!#(B</p></item>
+<item><p>c) $BB0@-$N(B<termref def="dt-default">&default-value;</termref>$B$r5,Dj$9$k!#(B</p></item>
+</ulist>
+</p>
+<p>
+<termdef id="dt-attdecl" term="Attribute-List Declaration">
+<term>$BB0@-%j%9%H@k8@(B</term>$B$O!$$"$kMWAG7?$H4XO"IU$1$i$l$?3FB0@-$KBP$7!$L>A0!$%G!<%?7?5Z$S(B($BB8:_$9$l$P(B)&default-value;$B$r5,Dj$9$k!#(B
+<scrap lang='ebnf'>
+<head>$BB0@-%j%9%H@k8@(B</head>
+<prod id='NT-AttlistDecl'><lhs>AttlistDecl</lhs>
+<rhs>'&lt;!ATTLIST' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-AttDef'>AttDef</nt>*
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+</prod>
+<prod id='NT-AttDef'><lhs>AttDef</lhs>
+<rhs><nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-AttType'>AttType</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-Default'>Default</nt></rhs>
+</prod>
+</scrap>
+
+<nt def='NT-AttlistDecl'>AttlistDecl</nt>$B5,B'$KB8:_$9$k(B<nt def="NT-Name">Name</nt>$B$O!$MWAG7?$NL>A0$H$9$k!#(B&at-user-option;$B!$@k8@$7$F$$$J$$MWAG7?$KBP$7B0@-$r@k8@$7$?$J$i$P!$(BXML&processor;$B$O!$7Y9p$r=P$7$F$b$h$$!#$7$+$7!$$3$l$O(B&error;$B$H$O$7$J$$!#(B
+<nt def='NT-AttDef'>AttDef</nt>$B5,B'$K$*$1$k(B<nt def='NT-Name'>Name</nt>$B$O!$B0@-$NL>A0$H$9$k!#(B
+</termdef>
+</p>
+<p>
+$B$"$kMWAG$KBP$7$F!$J#?t$N(B<nt def='NT-AttlistDecl'>AttlistDecl</nt>$B$rM?$($k>l9g!$$3$l$i$9$Y$F$NFbMF$O%^!<%8$9$k!#$"$kMWAG7?$NF1$8B0@-$K!$J#?t$NDj5A$rM?$($k>l9g$K$O!$:G=i$N@k8@$rM-8z$H$7!$B>$N@k8@$OL5;k$9$k!#(B<termref def='dt-interop'>$BAj8_1?MQ@-$N$?$a$K(B</termref>$B!$(BDTD$B$N:n@.<T$O!$$"$kMWAG7?$K$O9b!90l$D$NB0@-%j%9%H@k8@$7$+M?$($J$$!$$"$kB0@-L>$K$O9b!90l$D$NB0@-Dj5A$7$+M?$($J$$!$5Z$S$9$Y$F$NB0@-%j%9%H@k8@$K$O>/$J$/$H$b0l$D$NB0@-Dj5A$rM?$($k!$$H$$$&A*Br$r$7$F$b$h$$!#Aj8_1?MQ@-$N$?$a$K!$(BXML&processor;$B$O!$(B&at-user-option;$B!$$"$kMWAG7?$KJ#?t$NB0@-%j%9%H@k8@$rM?$($?$j!$$"$kB0@-$KJ#?t$NB0@-Dj5A$rM?$($?$j$7$?$H$-$K!$7Y9p$r=P$7$F$b$h$$!#$7$+$7!$$3$l$O!$(B&error;$B$H$O$7$J$$!#(B
+</p>
+
+<div3 id='sec-attribute-types'>
+<head>$BB0@-$N7?(B</head>
+<p>
+XML$B$NB0@-$N7?$O!$#3<oN`$H$9$k!#$3$l$i$O!$(B&string;$B7?!$(B&token;$B2=7?5Z$SNs5s7?$H$9$k!#(B&string;$B7?$O!$CM$H$7$FG$0U$N(B&string;$B$r$H$k!#(B&token;$B2=7?$O!$<!$K<($9;z6g5Z$S0UL#$K4X$9$kMM!9$J@)Ls$r$b$D!#(B
+
+<scrap lang='ebnf'>
+<head>Attribute Types</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id='NT-AttType'><lhs>AttType</lhs>
+<rhs><nt def='NT-StringType'>StringType</nt>
+| <nt def='NT-TokenizedType'>TokenizedType</nt>
+| <nt def='NT-EnumeratedType'>EnumeratedType</nt>
+</rhs>
+</prod>
+<prod id='NT-StringType'><lhs>StringType</lhs>
+<rhs>'CDATA'</rhs>
+</prod>
+<prod id='NT-TokenizedType'><lhs>TokenizedType</lhs>
+<rhs>'ID'</rhs>
+<vc def='id'/>
+<vc def='one-id-per-el'/>
+<vc def='id-default'/>
+<rhs>| 'IDREF'</rhs>
+<vc def='idref'/>
+<rhs>| 'IDREFS'</rhs>
+<vc def='idref'/>
+<rhs>| 'ENTITY'</rhs>
+<vc def='entname'/>
+<rhs>| 'ENTITIES'</rhs>
+<vc def='entname'/>
+<rhs>| 'NMTOKEN'</rhs>
+<vc def='nmtok'/>
+<rhs>| 'NMTOKENS'</rhs>
+<vc def='nmtok'/></prod>
+</prodgroup>
+</scrap>
+</p>
+
+<vcnote id='id' >
+<head>ID</head>
+<p>
+$B$3$N7?$NCM$O!$@8@.5,B'(B<code>Name</code>$B$K(B&match;$B$7$J$1$l$P$J$i$J$$!#0l$D$N(BXML$BJ8=qFb$G$O!$0l$D$NL>A0$,!$$3$N7?$NCM$H$7$FJ#?t2s8=$l$F$O$J$i$J$$!#$D$^$j!$(BID$B$NCM$O!$MWAG$r0l0U$K(B&identify;$B$7$J$1$l$P$J$i$J$$!#(B
+</p>
+</vcnote>
+<vcnote id='one-id-per-el'>
+<head>1$BMWAG$4$H$K(B1ID</head>
+<p>
+$BMWAG7?$O!$J#?t$N(BID$BB0@-CM$r$b$C$F$O$J$i$J$$!#(B
+</p>
+</vcnote>
+<vcnote id='id-default'>
+<head>ID$BB0@-$N(B&default;</head>
+<p>
+ID$BB0@-$O!$(B&default;$B$H$7$F!$(B<code>#IMPLIED</code>$BKt$O(B<code>#REQUIRED</code>$B$r@k8@$7$J$1$l$P$J$i$J$$!#(B
+</p>
+</vcnote>
+<vcnote id='idref'>
+<head>IDREF</head>
+<p>
+<kw>IDREF</kw>$B7?$NCM$O!$@8@.5,B'(B<nt def="NT-Name">Name</nt>$B$K(B&match;$B$7$J$1$l$P$J$i$J$$!#(B<kw>IDREFS</kw>$B7?$NCM$O!$@8@.5,B'(B<nt def="NT-Names">Names</nt>$B$K(B&match;$B$7$J$1$l$P$J$i$J$$!#3F!9$N(B<nt def='NT-Name'>Name</nt>$B$O!$(BXML$BJ8=qFb$KB8:_$9$kMWAG$N(BID$BB0@-$NCM$H(B&match;$B$7$J$1$l$P$J$i$J$$!#$D$^$j!$(B<kw>IDREF</kw>$B$NCM$O!$$"$k(BID$BB0@-$NCM$H(B&match;$B$7$J$1$l$P$J$i$J$$!#(B
+</p>
+</vcnote>
+<vcnote id='entname'>
+<head>$B<BBNL>(B</head>
+<p>
+<kw>ENTITY</kw>$B7?$NCM$O!$@8@.5,B'(B<nt def="NT-Name">Name</nt>$B$K(B&match;$B$7$J$1$l$P$J$i$J$$!#(B<kw>ENTITIES</kw>$B7?$NCM$O!$@8@.5,B'(B<nt def="NT-Names">Names</nt>$B$K(B&match;$B$7$J$1$l$P$J$i$J$$!#3F!9$N(B<nt def="NT-Name">Name</nt>$B$O!$(B<termref def="dt-doctype">DTD</termref>$B$G@k8@$9$k(B<termref def="dt-unparsed">&unparsed-entity;</termref>$B$H(B&match;$B$7$J$1$l$P$J$i$J$$!#(B
+</p>
+</vcnote>
+<vcnote id='nmtok'>
+<head>$BL>A0(B&token;</head>
+<p>
+<kw>NMTOKEN</kw>$B7?$NCM$O!$Hs=*C<5-9f(B<termref def="NT-Nmtoken">Nmtoken</termref>$B$H(B&match;$B$9$k(B&string;$B$+$i9=@.$5$l$J$1$l$P$J$i$J$$!#(B<kw>NMTOKENS</kw>$B7?$NCM$O!$Hs=*C<5-9f(B<termref def="NT-Nmtokens">Nmtokens</termref>$B$H(B&match;$B$9$k(B&string;$B$+$i9=@.$5$l$J$1$l$P$J$i$J$$!#(B
+</p>
+</vcnote>
+<p>
+XML&processor;$B$O!$(B&application;$B$KB0@-CM$rEO$9A0$K!$(B<titleref href="AVNormalize">$BB0@-CM$N@55,2=(B</titleref>$B$G5,Dj$9$k$H$*$j$K!$B0@-CM$r@55,2=$7$J$1$l$P$J$i$J$$!#(B
+</p>
+<p>
+<termdef id='dt-enumerated' term='Enumerated Attribute Values'><term>$BNs5s7?$NB0@-(B</term>$B$O!$@k8@$7$?CM$N0l$D$r<h$k$3$H$,$G$-$k!#(B</termdef>$BNs5s7?$K$O!$(B2$B<oN`$"$k!#(B
+
+<scrap lang='ebnf'>
+<head>$BNs5sB0@-$N7?(B</head>
+<prod id='NT-EnumeratedType'><lhs>EnumeratedType</lhs>
+<rhs><nt def='NT-NotationType'>NotationType</nt>
+| <nt def='NT-Enumeration'>Enumeration</nt>
+</rhs></prod>
+<prod id='NT-NotationType'><lhs>NotationType</lhs>
+<rhs>'NOTATION'
+<nt def='NT-S'>S</nt>
+'('
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>? '|' <nt def='NT-Name'>Name</nt>)*
+<nt def='NT-S'>S</nt>? ')'
+</rhs>
+<vc def='notatn' /></prod>
+<prod id='NT-Enumeration'><lhs>Enumeration</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>?
+<nt def='NT-Nmtoken'>Nmtoken</nt>
+(<nt def='NT-S'>S</nt>? '|'
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Nmtoken'>Nmtoken</nt>)*
+<nt def='NT-S'>S</nt>?
+')'</rhs>
+<vc def='enum'/></prod>
+</scrap>
+</p>
+
+<vcnote id='notatn'>
+<head>$B5-K!B0@-(B</head>
+<p>$B$3$N7?$NCM$O!$@k8@$7$F$$$k(B<titleref href='Notations'>$B5-K!(B</titleref>$B$NL>A0$N0l$D$H(B&match;$B$7$J$1$l$P$J$i$J$$!#$D$^$j!$@k8@$KB8:_$9$k5-K!L>$O!$$9$Y$F@k8@$5$l$F$$$J$1$l$P$J$i$J$$!#(B
+</p>
+</vcnote>
+<vcnote id='enum'>
+<head>$BNs5s(B</head>
+<p>
+$B$3$N7?$NCM$O!$@k8@$KB8:_$9$k(B<nt def='NT-Nmtoken'>Nmtoken</nt>&token;$B$N0l$D$H(B&match;$B$7$J$1$l$P$J$i$J$$!#(B
+</p>
+</vcnote>
+<p>
+<termref def='dt-interop'>$BAj8_1?MQ@-$N$?$a(B</termref>$B!$F1$8(B<nt def='NT-Nmtoken'>Nmtoken</nt>$B$O!$C10lMWAG7?$NNs5s7?$NB0@-$H$7$F!$J#?t2s8=$l$J$$J}$,$h$$!#(B
+</p>
+</div3>
+
+<div3 id='sec-attr-defaults'>
+<head>$BB0@-$N(B&default;</head>
+
+<p>
+<termref def="dt-attdecl">$BB0@-@k8@(B</termref>$B$O!$B0@-$N;XDj$,I,?\$+$I$&$+$K$D$$$F$N>pJs$rM?$($k!#I,?\$G$J$$>l9g$K$O!$J8=qFb$GB0@-$r;XDj$7$J$$$H$-!$(BXML&processor;$B$N=hM}J}K!$N>pJs$bM?$($k!#(B
+
+<scrap lang='ebnf'>
+<head>$BB0@-$N(B&default;</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id='NT-Default'><lhs>Default</lhs>
+<rhs>'#REQUIRED'
+|&nbsp;'#IMPLIED' </rhs>
+<rhs>| (('#FIXED' S)? <nt def='NT-AttValue'>AttValue</nt>)</rhs>
+<vc def='defattrvalid'/>
+<wfc def="CleanAttrVals"/>
+</prod>
+</prodgroup>
+</scrap>
+<!-- improved by bosak
+<scrap lang='ebnf'>
+<head>Attribute Defaults</head>
+<prod id='NT-Default'><lhs>Default</lhs>
+<rhs>'#REQUIRED'
+|&nbsp;'#IMPLIED' </rhs>
+<vc def='defattrvalid'/>
+<wfc def="CleanAttrVals"/>
+<rhs>| (('#FIXED' S)? <nt def='NT-AttValue'>AttValue</nt>)</rhs>
+</prod>
+</scrap>-->
+</p>
+
+<vcnote id='defattrvalid'>
+<head>$BB0@-(B&default;$B$N@5$7$5(B</head>
+<p>
+$B@k8@$7$?(B&default-value;$B$O!$@k8@$7$?B0@-7?$N;z6g@)Ls$rK~$?$5$J$1$l$P$J$i$J$$!#(B
+</p>
+</vcnote>
+<p>
+<kw>#REQUIRED</kw>$B$r;XDj$7$?$H$-!$$3$NMWAG7?$N(B<termref def="dt-stag">$B3+;O%?%0(B</termref>$B$G$"$C$F!$$3$NB0@-$KCM$rM?$($J$$$b$N$r(BXML&processor;$B$,8+$D$1$?$J$i$P!$$=$NJ8=q$O(B<termref def="dt-valid">&valid;</termref>$B$H$O$7$J$$!#(B<kw>#IMPLIED</kw>$B$r;XDj$7$?$H$-!$$3$NB0@-$r>JN,$7$?$i!$(BXML&processor;$B$O!$B0@-CM$r;XDj$7$J$$$3$H$r%"%W%j%1!<%7%g%s$KEA$($J$1$l$P$J$i$J$$!#$3$N$H$-!$(B&application;$B$N?6Iq$$$K$D$$$F$N@)Ls$O$J$$!#(B
+</p>
+<p>
+<termdef id="dt-default" term="Attribute Default">
+$BB0@-$,(B<kw>#REQUIRED</kw>$B$G$b(B<kw>#IMPLIED</kw>$B$G$b$J$$$H$-$K$O!$(B<nt def='NT-AttValue'>AttValue</nt>$B$NCM$,!$(B<term>&default-value;</term>$B$H$J$k!#(B<kw>#FIXED</kw>$B$N>l9g!$(B&default-value;$B$H0[$J$kCM$,;XDj$5$l$l$P!$$=$NJ8=q$O!$(B<termref def="dt-valid">&valid;</termref>$B$H$7$J$$!#(B&default-value;$B$r@k8@$7$F$$$k>l9g!$$3$NB0@-$N>JN,$r8+$D$1$?$i!$@k8@$7$?(B&default-value;$B$rB0@-CM$K;XDj$7$F$$$k$H$7$F!$(BXML&processor;$B$O?6$kIq$&$3$H$,K>$^$7$$!#(B
+</termdef></p>
+
+<p>$BB0@-%j%9%H@k8@$NNc$r!$<!$K<($9!#(B
+
+<eg>&lt;!ATTLIST termdef
+ id ID #REQUIRED
+ name CDATA #IMPLIED>
+&lt;!ATTLIST list
+ type (bullets|ordered|glossary) "ordered">
+&lt;!ATTLIST form
+ method CDATA #FIXED "POST"></eg></p>
+</div3>
+
+<div3 id='AVNormalize'>
+<head>$BB0@-CM$N@55,2=(B</head>
+<p>
+XML&processor;$B$O!$B0@-CM$r(B&application;$B$KEO$9A0$K!$<!$N$H$*$j$K@55,2=$7$J$1$l$P$J$i$J$$!#(B
+
+<ulist>
+<item>
+<p>a) $B$^$:!$B0@-CM5Z$S$=$NCf$N<BBNFb$G!$9TKvKt$O9T6-3&(B($BKt$O%7%9%F%`$K$h$C$F$O%l%3!<%I6-3&(B)$B$H$7$F;H$o$l$k(B&string;$B$r!$(B&space-character;(#x20)$B0l$D$KCV$-49$($J$1$l$P$J$i$J$$(B($B!V(B<titleref xml-link="simple" href="sec-line-ends">$B9TKv$N07$$(B</titleref>$B!W$b;2>H$N$3$H!#(B)$B!#(B
+</p></item>
+<item>
+<p>b) $B<!$K!$J8;z;2>H5Z$SFbIt(B&parsed-entity;$B$X$N;2>H$O!$E83+$7$J$1$l$P$J$i$J$$!#30It<BBN$X$N;2>H$O!$(B&error;$B$H$9$k!#(B
+</p></item>
+<item>
+<p>c) $B:G8e$K!$B0@-$N7?$,(B<kw>CDATA</kw>$B$G$J$1$l$P!$6uGr(B&string;$B$O!$$9$Y$F(B&space-character;(#x20)$B0l$D$K@55,2=$7!$;D$j$N6uGrJ8;z$O!$:o=|$7$J$1$l$P$J$i$J$$!#(B
+</p></item>
+</ulist>
+
+&non-validating;&parser;$B$O!$@k8@$,8+$D$+$i$J$$B0@-$O!$$9$Y$F!$(B<kw>CDATA</kw>$B$r@k8@$7$F$$$k$H$7$F07$&$3$H$,K>$^$7$$!#(B</p>
+</div3>
+</div2>
+
+<div2 id='sec-condition-sect'>
+<head>$B>r7oIU$-%;%/%7%g%s(B</head>
+<p>
+<termdef id='dt-cond-section' term='conditional section'>
+<term>$B>r7oIU$-%;%/%7%g%s(B</term>$B$H$O!$(B<termref def='dt-doctype'>$BJ8=q7?@k8@$N30It(B&subset;</termref>$B$N0lIt$H$7!$@)8f%-!<%o!<%I$N;XDj$K$h$C$F!$(BDTD$B$NO@M}9=B$$K4^$a$?$j!$=|$$$?$j$9$kItJ,$H$9$k!#(B
+</termdef>
+
+<scrap lang='ebnf'>
+<head>$B>r7oIU$-%;%/%7%g%s(B</head>
+<prodgroup pcw2="9" pcw4="14.5">
+<prod id='NT-conditionalSect'><lhs>conditionalSect</lhs>
+<rhs><nt def='NT-includeSect'>includeSect</nt>
+| <nt def='NT-ignoreSect'>ignoreSect</nt>
+</rhs>
+</prod>
+<prod id='NT-includeSect'><lhs>includeSect</lhs>
+<rhs>'&lt;![' S? 'INCLUDE' S? '['
+<!-- (<nt def='NT-markupdecl'>markupdecl</nt>
+ | <nt def="NT-conditionalSect">conditionalSect</nt>
+ | <nt def="NT-S">S</nt>)*
+-->
+<nt def="NT-extSubset">extSubset</nt>
+']]&gt;'
+</rhs>
+</prod>
+<prod id='NT-ignoreSect'><lhs>ignoreSect</lhs>
+<rhs>'&lt;![' S? 'IGNORE' S? '['
+<nt def="NT-ignoreSectContents">ignoreSectContents</nt>*
+']]&gt;'</rhs>
+</prod>
+<prod id='NT-ignoreSectContents'><lhs>ignoreSectContents</lhs>
+<rhs><nt def='NT-Ignore'>Ignore</nt>
+('&lt;![' <nt def='NT-ignoreSectContents'>ignoreSectContents</nt>
+']]&gt;'
+<nt def='NT-Ignore'>Ignore</nt>)*</rhs></prod>
+<prod id='NT-Ignore'><lhs>Ignore</lhs>
+<rhs><nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ('&lt;![' | ']]&gt;')
+<nt def='NT-Char'>Char</nt>*)
+</rhs></prod>
+<!--<rhs>
+((<nt def='NT-SkipLit'>SkipLit</nt>
+| <nt def='NT-Comment'>Comment</nt>
+| <nt def='NT-PI'>PI</nt>) -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+| ('&lt;![' <nt def='NT-ignoreSectContents'>ignoreSectContents</nt>*
+']]&gt;')
+</rhs>
+<rhs>
+| (<nt def='NT-Char'>Char</nt> - (']' | [&lt;'"]))
+</rhs>
+<rhs>
+| ('&lt;!' (<nt def='NT-Char'>Char</nt> - ('-' | '[')))
+</rhs>-->
+</prodgroup>
+</scrap>
+</p>
+
+<p>$B>r7oIU$-%;%/%7%g%s$O!$(BDTD$B$NFbIt(B&subset;$B5Z$S30It(B&subset;$B$HF1MM$K!$40A4$J@k8@!$%3%a%s%HKt$OF~$l;R$K$J$C$?>r7oIU$-%;%/%7%g%s$r!$$$$/$D$+4^$s$G$h$$!#$3$l$i$N4V$K!$6uGr$,8=$l$F$b$h$$!#(B
+</p>
+<p>
+$B>r7oIU$-%;%/%7%g%s$N%-!<%o!<%I$,(B<code>INCLUDE</code>$B$J$i$P!$(BXML&processor;$B$O!$$3$N>r7oIU$-%;%/%7%g%s$NFbMF$r!$J8=q$N0lIt$H$7$F07$o$J$1$l$P$J$i$J$$!#>r7oIU$-%;%/%7%g%s$N%-!<%o!<%I$,(B<code>IGNORE</code>$B$J$i$P!$$=$N>r7oIU$-%;%/%7%g%s$NFbMF$O!$J8=q$N0lIt$H$7$F07$o$J$$!#9=J82r@O$r@5$7$/9T$&$?$a$K$O!$L5;k$9$k>r7oIU$-%;%/%7%g%s(B(IGNORE)$B$K4X$7$F$b!$FbMF$rFI$^$J$1$l$P$J$i$J$$$3$H$KCm0U$9$k$3$H!#$3$l$O!$F~$l;R$K$J$C$?>r7oIU$-%;%/%7%g%s$r8+$D$1!$(B($BL5;k$9$k(B)$B:G$b30B&$N>r7oIU$-%;%/%7%g%s$r@5$7$/8!=P$9$k$?$a$H$9$k!#%-!<%o!<%I$r(B<code>INCLUDE</code>$B$H$9$k>.$5$J>r7oIU$-%;%/%7%g%s$,!$%-!<%o!<%I$r(B<code>IGNORE</code>$B$H$9$k$h$jBg$-$J>r7oIU$-%;%/%7%g%s$K4^$^$l$k$J$i$P!$30B&5Z$SFbB&$N>r7oIU$-%;%/%7%g%s$NN>J}$H$bL5;k$9$k!#(B
+</p>
+<p>
+$B>r7oIU$-%;%/%7%g%s$N%-!<%o!<%I$,%Q%i%a%?<BBN;2>H$J$i$P!$(BXML&processor;$B$O>r7oIU$-%;%/%7%g%s$N07$$$rH=CG$9$kA0$K!$$3$N%Q%i%a%?<BBN$rE83+$7$J$1$l$P$J$i$J$$!#(B
+</p>
+
+<p>$BNc$r<!$K<($9!#(B
+
+<eg>&lt;!ENTITY % draft 'INCLUDE' >
+&lt;!ENTITY % final 'IGNORE' >
+
+&lt;![%draft;[
+&lt;!ELEMENT book (comments*, title, body, supplements?)>
+]]&gt;
+&lt;![%final;[
+&lt;!ELEMENT book (title, body, supplements?)>
+]]&gt;
+</eg>
+</p>
+</div2>
+<!--
+<div2 id='sec-pass-to-app'>
+<head>XML Processor Treatment of Logical Structure</head>
+<p>When an XML processor encounters a start-tag, it must make
+at least the following information available to the application:
+<ulist>
+<item>
+<p>the element type's generic identifier</p>
+</item>
+<item>
+<p>the names of attributes known to apply to this element type
+(validating processors must make available names of all attributes
+declared for the element type; non-validating processors must
+make available at least the names of the attributes for which
+values are specified.
+</p>
+</item>
+</ulist>
+</p>
+</div2>
+-->
+
+</div1>
+<!-- &Entities; -->
+
+<div1 id='sec-physical-struct'>
+<head>$BJ*M}9=B$(B</head>
+
+<p>
+<termdef id="dt-entity" term="Entity">
+XML$BJ8=q$O!$0l$D0J>e$N5-21C10L$+$i9=@.$9$k!#$3$N5-21C10L$r!$(B<term>$B<BBN(B</term>$B$H$$$&!#<BBN$O!$(B<term>$BFbMF(B</term>$B$r$b$A!$J8=q<BBN(B($B0J9_;2>H(B)$B5Z$S(B<termref def='dt-doctype'>$B30It(BDTD&subset;</termref>$B$r=|$$$F!$(B<term>$BL>A0(B</term>$B$G(B&identified;$B!#(B
+</termdef>
+
+<!-- Added for CFG -->
+<!-- obscurity amputated by TWB -->
+<!-- entire sentence amputated by CMSMcQ: no one but NO ONE is
+ready for entities declared as
+<!ENTITY foo "http://www.foo.com/bar.xml#id">
+and it's pointless to suggest that it's possible
+under current circumstances. -->
+<!-- An entity may be stored in, -->
+<!--but need not be coterminous with, -->
+<!-- but need not comprise the whole of, -->
+<!-- a single physical storage object such as a file or -->
+<!-- database field. -->
+<!-- End sentence added for CFG -->$B3F(BXML$BJ8=q$O!$(B<termref def="dt-docent">$BJ8=q<BBN(B</termref>$B$H8F$V<BBN$r0l$D$b$D!#(B<termref def="dt-xml-proc">XML&processor;</termref>$B$O!$$3$NJ8=q<BBN$+$i=hM}$r3+;O$9$k!#J8=q<BBN$,!$J8=q$N$9$Y$F$r4^$s$G$b$h$$!#(B</p>
+
+<p>$B<BBN$O!$(B&parsed-entity;$BKt$O(B&unparsed-entity;$B$H$9$k!#(B<termdef id="dt-parsedent" term="Text Entity"><term>&parsed-entity;</term>$B$NFbMF$O!$(B&parsed-entity;$B$N(B<termref def='dt-repltext'>&replacement-text;</termref>$B$H8F$V!#$3$N(B<termref def="dt-text">$B%F%-%9%H(B</termref>$B$O!$J8=q$NK\BN$N0lIt$H$7$F2r<a$9$k!#(B
+</termdef>
+</p>
+
+<p>
+<termdef id="dt-unparsed" term="Unparsed Entity">
+<term>&unparsed-entity;</term>$B$O!$FbMF$,(B<termref def='dt-text'>$B%F%-%9%H(B</termref>$B$G$b$=$&$G$J$/$H$b$h$$%j%=!<%9$H$9$k!#%F%-%9%H$N>l9g!$(BXML$B$G$J$/$H$b$h$$!#3F(B&unparsed-entity;$B$K$O!$(B<termref def="dt-notation">$B5-K!(B</termref>$B$,4XO"IU$1$i$l!$$3$N5-K!$O!$L>A0$G(B&identified;$B!#5-K!$NL>A05Z$S4XO"IU$1$i$l$?(B&identifier;$B$r!$(BXML&processor;$B$,(B&application;$B$KEO$9$H$$$&MW7o0J30$O!$(BXML$B$O!$(B&unparsed-entity;$B$NFbMF$r@)8B$7$J$$!#(B
+</termdef>
+</p>
+
+<p>&parsed-entity;$B$O!$<BBN;2>H$K$h$C$FL>A0$G8F$S=P$9!#(B&unparsed-entity;$B$O!$(B<kw>ENTITY</kw>$B7?Kt$O(B<kw>ENTITIES</kw>$B7?$NB0@-$NCM$H$7$F!$L>A0$G;2>H$9$k!#(B</p>
+
+<p>
+<termdef id='gen-entity' term='general entity'><term>$B0lHL<BBN(B</term>$B$O!$J8=qFbMF$NCf$G;HMQ$9$k(B&parsed-entity;$B$H$9$k!#$"$$$^$$$K$J$i$J$$8B$j!$$3$N(B&TR-or-Rec;$B$G$O!$0lHL<BBN$rC1$K(B<emph>$B<BBN(B</emph>$B$H8F$V!#(B</termdef><termdef id='dt-PE' term='Parameter entity'>$B%Q%i%a%?<BBN$O!$(BDTD$BFb$G;HMQ$9$k(B&parsed-entity;$B$H$9$k!#(B</termdef>$B$3$l$i$N#2<oN`$N<BBN$O!$0[$J$k=q<0$G;2>H$7!$0[$J$kJ8L.$GG'<1$9$k!#(B</p>
+
+<!--
+<div2 id='sec-synchro'>
+<head>Logical and Physical Structures</head>
+<p>The logical and physical structures (elements and entities)
+in an XML document must
+be properly nested.
+<termref def='dt-stag'>Tags</termref> and <termref def='dt-element'>elements</termref> must
+each begin and end in the same <termref def='dt-entity'>entity</termref>, but may
+refer to other
+entities internally; <termref def='dt-comment'>comments</termref>,
+<termref def='dt-pi'>processing instructions</termref>,
+<termref def='dt-charref'>character
+references</termref>, and
+<termref def='dt-entref'>entity references</termref> must each be contained entirely
+within a single entity. Entities must each contain an integral number
+of elements, comments, processing instructions, and references,
+possibly together with character data not contained within any element
+in the entity, or else they must contain non-textual data, which by
+definition contains no elements.</p></div2>
+-->
+
+<div2 id='sec-references'>
+<head>$BJ8;z;2>H5Z$S<BBN;2>H(B</head>
+<p>
+<termdef id="dt-charref" term="Character Reference">
+<term>$BJ8;z;2>H(B</term>$B$O!$(BISO/IEC 10646$BJ8;z=89g$NFCDj$NJ8;z!$Nc$($P!$F~NO5!4o$+$iD>@\F~NOIT2DG=$JJ8;z$r;2>H$9$k!#(B
+
+<scrap lang='ebnf'>
+<head>$BJ8;z;2>H(B</head>
+<prod id='NT-CharRef'><lhs>CharRef</lhs>
+<rhs>'&amp;#' [0-9]+ ';' </rhs>
+<rhs>| '&hcro;' [0-9a-fA-F]+ ';'</rhs>
+<wfc def="wf-Legalchar"/>
+</prod>
+</scrap>
+<wfcnote id="wf-Legalchar">
+<head>$B@5Ev$JJ8;z(B</head>
+<p>$BJ8;z;2>H$G;2>H$9$kJ8;z$O!$Hs=*C<5-9f(B<termref def="NT-Char">Char</termref>$B$K=>$o$J$1$l$P$J$i$J$$!#(B</p>
+</wfcnote>
+$BJ8;z$,(B "<code>&amp;#x</code>" $B$G;O$^$l$P!$=*C<$N(B "<code>;</code>" $B$^$G$N?t;z5Z$S%"%k%U%!%Y%C%H$O!$(BISO/IEC 10646 $B$NJ8;z%3!<%I$N(B16$B?J?tI=8=$H$9$k!#(B
+<!--$BF|K\8lLu$K$D$$$F(B: letter$B$O%"%k%U%!%Y%C%H$HLu$7$?!#(B $B;09%(B -->
+$BJ8;z$,(B "<code>&amp;#</code>" $B$G;O$^$l$P!$=*C<$N(B "<code>;</code>" $B$^$G$N?t;z$O!$J8;z%3!<%I$N(B10$B?J?tI=8=$H$9$k!#(B
+</termdef>
+</p>
+
+<p>
+<termdef id="dt-entref" term="Entity Reference">
+<term>$B<BBN;2>H(B</term>$B$O!$L>A0$NIU$$$?<BBN$NFbMF$r;2>H$9$k!#(B</termdef><termdef id='dt-GERef' term='General Entity Reference'>$B0lHL<BBN$X$N;2>H$O!$%"%s%Q%5%s%I(B(<code>&amp;</code>)$B5Z$S%;%_%3%m%s(B(<code>;</code>)$B$r6h@Z$j;R$H$7$FMQ$$$k!#(B</termdef><termdef id='dt-PERef' term='Parameter-entity reference'><term>$B%Q%i%a%?<BBN(B</term>$B$X$N;2>H$O!$%Q!<%;%s%H5-9f(B(<code>%</code>)$B5Z$S%;%_%3%m%s(B(<code>;</code>)$B$r6h@Z$j;R$H$7$FMQ$$$k!#(B
+</termdef>
+</p>
+
+<scrap lang="ebnf">
+<head>$B<BBN;2>H(B</head>
+<prod id='NT-Reference'><lhs>Reference</lhs>
+<rhs><nt def='NT-EntityRef'>EntityRef</nt>
+| <nt def='NT-CharRef'>CharRef</nt></rhs></prod>
+<prod id='NT-EntityRef'><lhs>EntityRef</lhs>
+<rhs>'&amp;' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<wfc def='wf-entdeclared'/>
+<vc def='vc-entdeclared'/>
+<wfc def='textent'/>
+<wfc def='norecursion'/>
+</prod>
+<prod id='NT-PEReference'><lhs>PEReference</lhs>
+<rhs>'%' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<wfc def='wf-entdeclared'/>
+<vc def='vc-entdeclared'/>
+<wfc def='textent'/>
+<wfc def='norecursion'/>
+<wfc def='indtd'/>
+</prod>
+</scrap>
+
+<wfcnote id='wf-entdeclared'>
+<head>$B<BBN$,@k8@$5$l$F$$$k$3$H(B</head>
+<p>DTD$B$r$b$?$J$$J8=q!$%Q%i%a%?<BBN;2>H$r4^$^$J$$FbIt(BDTD&subset;$B$@$1$r$b$DJ8=q!$Kt$O(B "<code>standalone='yes'</code>" $B$r$b$DJ8=q$K$*$$$F!$<BBN;2>H$GMQ$$$k(B <nt def='NT-Name'>Name</nt> $B$O!$$=$N<BBN$N@k8@$GM?$($kL>A0$H!$(B<termref def="dt-match">&match;</termref>$B$7$J$1$l$P$J$i$J$$!#$?$@$7!$(B&well-formed;$B$NJ8=q$O!$<BBN(B&magicents; $B$r@k8@$9$kI,MW$O$J$$!#%Q%i%a%?<BBN$N>l9g$O!$@k8@$O!$;2>H$K@h9T$7$J$1$l$P$J$i$J$$!#F1MM$K!$0lHL<BBN$N>l9g$O!$B0@-%j%9%H@k8@$N(B&default-value;$BFb$G$N;2>H$h$j@h$K!$@k8@$,8=$l$J$1$l$P$J$i$J$$!#(B</p>
+
+<p>$B30It(B&subset;$BKt$O30It%Q%i%a%?<BBN$G<BBN$r@k8@$9$k$H$-!$(B&non-validating;&processor;$B$,!$@k8@$rFI$_!$=hM}$9$k$3$H$r(B<titleref href='include-if-valid'>$B5AL3$E$1$J$$(B</titleref>$B!#$=$l$i$NJ8=q$G$O!$<BBN$O@k8@$5$l$J$1$l$P$J$i$J$$$H$$$&5,B'$O!$(B&well-formed;$B@)Ls$G$O$J$$!#(B
+</p>
+</wfcnote>
+
+<vcnote id="vc-entdeclared">
+<head>$B<BBN$,@k8@$5$l$F$$$k$3$H(B</head>
+<p>
+$B30It(B&subset;$BKt$O30It%Q%i%a%?<BBN$r$b$C$F$$$F!$(B"<code>standalone='no'</code>"$B$r$b$DJ8=q$K$*$$$F!$<BBN;2>H$GMQ$$$k(B <nt def='NT-Name'>Name</nt> $B$O!$$=$N<BBN$N@k8@$GM?$($kL>A0$H(B<termref def="dt-match">&match;</termref>$B$7$J$1$l$P$J$i$J$$!#Aj8_1?MQ@-$N$?$a!$(B&valid;$B$JJ8=q$O(B<titleref href="sec-escapes">$B$"$i$+$8$aDj5A$7$?<BBN$N5,Dj(B</titleref>$B$G;XDj$7$?=q<0$K$h$C$F!$<BBN(B &magicents;$B$r@k8@$9$k$3$H$,K>$^$7$$!#%Q%i%a%?<BBN$N>l9g$O!$@k8@$O!$;2>H$K@h9T$7$J$1$l$P$J$i$J$$!#F1MM$K!$0lHL<BBN$N>l9g$O!$B0@-%j%9%H@k8@$N(B&default-value;$BFb$G$N;2>H$h$j$b@h$K!$@k8@$,8=$l$J$1$l$P$J$i$J$$!#(B
+</p>
+</vcnote>
+
+<!-- FINAL EDIT: is this duplication too clumsy? -->
+
+<wfcnote id='textent'>
+<head>&parsed-entity;</head>
+<p>
+$B<BBN;2>H$O!$(B<termref def="dt-unparsed">&unparsed-entity;</termref>$B$NL>A0$r4^$s$G$$$F$O$J$i$J$$!#(B&unparsed-entity;$B$O!$(B<kw>ENTITY</kw>$B7?Kt$O(B<kw>ENTITIES</kw> $B7?$H$7$F@k8@$7$?(B<termref def="dt-attrval">$BB0@-CM(B</termref>$B$H$7$F$@$1;2>H$G$-$k!#(B
+</p>
+</wfcnote>
+
+<wfcnote id='norecursion'>
+<head>$B:F5"$J$7(B</head>
+<p>&parsed-entity;$B$O!$$=$l<+BN$X$N;2>H$r!$D>@\$K$b4V@\$K$b4^$s$G$O$J$i$J$$!#(B</p>
+</wfcnote>
+
+<wfcnote id='indtd'>
+<head>DTD$B$NCf(B</head>
+<p>
+$B%Q%i%a%?<BBN;2>H$O!$(B<termref def='dt-doctype'>DTD</termref>$BFb$K$@$1!$=P8=$7$F$h$$!#(B
+<!--
+In the external DTD subset, a parameter-entity reference is
+recognized only at the locations where
+the nonterminal <nt def="NT-PEReference">PEReference</nt> or the
+special operator <code>%</code> appears in a production of the
+grammar. In the internal subset, parameter-entity references
+are recognized only when they match
+the <nt def="NT-InternalPERef">InternalPERef</nt> non-terminal
+in the production for <nt def="NT-markupdecl">markupdecl</nt>.
+-->
+</p>
+</wfcnote>
+
+<p>
+$BJ8;z;2>H5Z$S<BBN;2>H$NNc$r!$<!$K<($9!#(B
+<eg>Type &lt;key>less-than&lt;/key> (&hcro;3C;) to save options.
+This document was prepared on &amp;docdate; and
+is classified &amp;security-level;.</eg>
+</p>
+
+<p>
+$B%Q%i%a%?<BBN;2>H$NNc$r!$<!$K<($9!#(B
+<eg>&lt;!ENTITY % ISOLat2
+ SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" >
+%ISOLat2;
+</eg>
+</p>
+</div2>
+
+<div2 id='sec-entity-decl'>
+<head>$B<BBN@k8@(B</head>
+
+<p>
+<termdef id="dt-entdecl" term="entity declaration">
+$B<BBN$O!$<!$N$H$*$j$K@k8@$9$k!#(B
+<scrap lang='ebnf'>
+<head>$B<BBN@k8@(B</head>
+<prodgroup pcw2="5" pcw4="18.5">
+<prod id='NT-EntityDecl'><lhs>EntityDecl</lhs>
+<rhs><nt def="NT-GEDecl">GEDecl</nt></rhs><com>$B0lHL<BBN(B</com>
+<rhs>| <nt def="NT-PEDecl">PEDecl</nt></rhs><com>$B%Q%i%a%?<BBN(B</com>
+</prod>
+<prod id='NT-GEDecl'><lhs>GEDecl</lhs>
+<rhs>'&lt;!ENTITY' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-EntityDef'>EntityDef</nt>
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+</prod>
+<prod id='NT-PEDecl'><lhs>PEDecl</lhs>
+<rhs>| '&lt;!ENTITY' <nt def='NT-S'>S</nt> '%' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt> <nt def='NT-S'>S</nt>
+<nt def='NT-PEDef'>PEDef</nt> <nt def='NT-S'>S</nt>? '&gt;'</rhs>
+<com>$B%Q%i%a%?<BBN(B</com>
+</prod>
+<prod id='NT-EntityDef'><lhs>EntityDef</lhs>
+<rhs><nt def='NT-EntityValue'>EntityValue</nt>
+</rhs>
+<!--<wfc def="WF-EntityValue"/>-->
+<rhs>| <nt def='NT-ExternalDef'>ExternalDef</nt></rhs>
+<!--<wfc def="WF-External"/>-->
+</prod>
+<!-- FINAL EDIT: what happened to WFs here? -->
+<prod id='NT-PEDef'><lhs>PEDef</lhs>
+<rhs><nt def='NT-EntityValue'>EntityValue</nt>
+| <nt def='NT-ExternalID'>ExternalID</nt></rhs></prod>
+</prodgroup>
+</scrap>
+
+<nt def='NT-Name'>Name</nt> $B$O!$(B<termref def="dt-entref">$B<BBN;2>H(B</termref>$B$K$*$$$F<BBN$r(B&identify;$B!#(B&unparsed-entity;$B$J$i$P!$(B<kw>ENTITY</kw> $B7?Kt$O(B<kw>ENTITIES</kw>$B7?$NB0@-CMFb$G!$<BBN$r(B&identify;$B!#F10l$N<BBN$,0l2s0J>e@k8@$5$l$l$P!$:G=i$N@k8@$rMQ$$$k!#(B&at-user-option;$B!$J#?t2s@k8@$5$l$k<BBN$K4X$7!$(BXML&processor;$B$O!$7Y9p$r=P$7$F$b$h$$!#(B
+</termdef>
+</p>
+
+<!--
+<wfcnote id="WF-Entityvalue">
+<head>Well-Formed Internal Entity</head>
+<p>General entities defined by an <nt
+def="NT-EntityValue">EntityValue</nt> must be well-formed, as defined
+in section <specref ref="wf-entities"/>.
+</p>
+</wfcnote>
+<wfcnote id="WF-External">
+<head>Well-Formed External Entity</head>
+<p>General text entities defined by an <nt
+def="NT-ExternalDef">ExternalDef</nt>, must be well-formed, as defined
+in the section on <titleref xml-link="simple"
+href="wf-entities">well-formed entities.</titleref>.</p>
+</wfcnote>
+-->
+
+<div3 id='sec-internal-ent'>
+<head>$BFbIt<BBN(B</head>
+<p>
+<termdef id='dt-internent' term="Internal Entity Replacement Text">
+$B<BBN$NDj5A$,(B <nt def='NT-EntityValue'>EntityValue</nt>$B$N$H$-!$$3$l$r(B<term>$BFbIt<BBN(B</term>$B$H$$$&!#$3$l$O!$JL8D$NJ*M}E*5-21C10L$r$b$?$:!$<BBN$NFbMF$O!$@k8@Fb$GM?$($k!#(B</termdef>$B@5$7$/(B<termref def='dt-repltext'>&replacement-text;</termref>$B$r@8@.$9$k$K$O!$(B<termref def='dt-litentval'>&literal;$B<BBNCM(B</termref>$BFb$G$N<BBN;2>H5Z$SJ8;z;2>H$N=hM}$,!$I,MW$H$J$k$+$b$7$l$J$$$3$H$KCm0U$9$k!#>\:Y$O!$(B<titleref href='intern-replacement'>$BFbIt<BBN$N(B&replacement-text;$B$N9=C[(B</titleref>$B$r;2>H!#(B
+
+<!-- redundant -TWB
+Within the <nt def="NT-EntityValue">EntityValue</nt>,
+parameter-entity references and character references are recognized
+and expanded immediately.
+General-entity references within the
+replacement text are not recognized
+at the time the entity declaration is parsed, though they may be
+recognized when the entity itself is referred to.
+-->
+
+</p>
+
+<p>
+$BFbIt<BBN$O!$(B<termref def="dt-parsedent">&parsed-entity;</termref>$B$H$9$k!#(B
+</p>
+
+<p>$BFbIt<BBN@k8@$NNc$r!$<!$K<($9!#(B
+<eg>&lt;!ENTITY Pub-Status "This is a pre-release of the specification."></eg></p>
+</div3>
+
+<div3 id='sec-external-ent'>
+<head>$B30It<BBN(B</head>
+<p>
+<termdef id="dt-extent" term="External Entity">
+$B<BBN$,FbIt<BBN$G$J$1$l$P!$(B<term>$B30It<BBN(B</term>$B$H$7!$<!$N$H$*$j$K@k8@$9$k!#(B
+
+<scrap lang='ebnf'>
+<head>$B30It<BBN@k8@(B</head>
+<prod id='NT-ExternalDef'><lhs>ExternalDef</lhs>
+<rhs><nt def='NT-ExternalID'>ExternalID</nt>
+<nt def='NT-NDataDecl'>NDataDecl</nt>?</rhs></prod>
+<prod id='NT-ExternalID'><lhs>ExternalID</lhs>
+<rhs>'SYSTEM' <nt def='NT-S'>S</nt>
+<nt def='NT-SystemLiteral'>SystemLiteral</nt></rhs>
+<rhs>| 'PUBLIC' <nt def='NT-S'>S</nt>
+<nt def='NT-PubidLiteral'>PubidLiteral</nt>
+<nt def='NT-S'>S</nt>
+<nt def='NT-SystemLiteral'>SystemLiteral</nt>
+</rhs>
+</prod>
+<prod id='NT-NDataDecl'><lhs>NDataDecl</lhs>
+<rhs><nt def='NT-S'>S</nt> 'NDATA' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt></rhs>
+<vc def='not-declared'/></prod>
+</scrap>
+
+<nt def='NT-NDataDecl'>NDataDecl</nt> $B$,B8:_$9$l$P!$$3$N<BBN$O!$(B<termref def="dt-unparsed">&unparsed-entity;</termref>$B$H$7!$$=$&$G$J$1$l$P!$(B&parsed-entity;$B$H$9$k!#(B</termdef>
+</p>
+
+<vcnote id='not-declared'>
+<head>$B5-K!$,@k8@$5$l$F$$$k$3$H(B</head>
+<p>
+<nt def='NT-Name'>Name</nt> $B$O!$@k8@$7$?(B<termref def="dt-notation">$B5-K!(B</termref>$B$NL>A0$H(B&match;$B$7$J$1$l$P$J$i$J$$!#(B
+</p>
+</vcnote>
+
+<p>
+<termdef id="dt-sysid" term="System Identifier">
+$B%-!<%o!<%I(B <kw>SYSTEM</kw> $B$N8e$N(B <nt def='NT-SystemLiteral'>SystemLiteral</nt> $B$r!$<BBN$N(B<term>$B%7%9%F%`(B&identifier;</term>$B$H8F$V!#$3$l$O(BURI$B$H$7!$$=$N<BBN$NFbMF$r<h$j=P$9$N$KMQ$$$F$b$h$$!#(B</termdef>URI$B$H6&$K;H$&$3$H$NB?$$%O%C%7%e(B("<code>#</code>")$B5Z$S%U%i%0%a%s%H(B&identifier;$B$O!$@5<0$K$O!$(BURI$B<+BN$N0lIt$H$O$7$J$$!#%U%i%0%a%s%H(B&identifier;$B$,!$%7%9%F%`(B&identifier;$B$NItJ,$H$7$FM?$($i$l$F$$$k>l9g!$(BXML&processor;$B$O!$(B&error;$B$r=P$7$F$b$h$$!#$3$N(B&TR-or-Rec;$B$NHO0O30$N>pJs(B($BNc$($P!$$"$kFCDj$N(BDTD$B$NFCJL$J(BXML$BMWAGKt$OFCDj$N(B&application;$B$N;EMM$K$h$C$FDj5A$5$l$?=hM}L?Na(B)$B$K$h$C$F>e=q$-$5$l$J$$8B$j!$AjBPE*$J(BURI$B$O!$$=$N<BBN$N0LCV!$$9$J$o$A!$$=$N<BBN$N@k8@$,$"$k%U%!%$%k$KAjBPE*$H$9$k!#$7$?$,$C$F!$(BDTD$B$NFbIt(B&subset;$B$K$"$k<BBN@k8@$G$NAjBPE*$J(BURI$B$O!$J8=q$N0LCV$K$D$$$FAjBPE*$H$9$k!#30It(B&subset;$B$K$"$k<BBN@k8@$G$NAjBPE*$J(BURI$B$O!$$=$N30It(B&subset;$B$r4^$`%U%!%$%k$N0LCV$KAjBPE*$H$9$k!#(B
+</p>
+
+<p>
+<termdef id="dt-pubid" term="Public identifier">
+$B%7%9%F%`(B&identifier;$B0J30$K!$30It<BBN$O!$(B<term>$B8x3+(B&identifier;</term>$B$r4^$s$G$b$h$$!#(B
+</termdef>
+$B<BBN$NFbMF$r<h$j=P$9(BXML&processor;$B$O!$$3$N8x3+(B&identifier;$B$rMQ$$$F!$Be$o$j$N(BURI$B$N@8@.$r;n$_$F$b$h$$!#(BXML&processor;$B$,$3$l$K<:GT$7$?>l9g$O!$%7%9%F%`(B&literal;$B$H$7$F;XDj$7$?(BURI$B$rMQ$$$J$1$l$P$J$i$J$$!#(B&match;$B$9$kA0$K!$8x3+(B&identifier;$BFb$K$"$k6uGrJ8;z$+$i$J$k(B&string;$B$O!$$9$Y$FC10l$N(B&space-character;(#x20)$B$K@55,2=$7$J$1$l$P$J$i$:!$A08e$N6uGrJ8;z$O:o=|$7$J$1$l$P$J$i$J$$!#(B
+</p>
+
+<p>$B30It<BBN@k8@$NNc$r!$<!$K<($9!#(B
+<eg>&lt;!ENTITY open-hatch
+ SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">
+&lt;!ENTITY open-hatch
+ PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
+ "http://www.textuality.com/boilerplate/OpenHatch.xml">
+&lt;!ENTITY hatch-pic
+ SYSTEM "../grafix/OpenHatch.gif"
+ NDATA gif ></eg></p>
+</div3>
+
+</div2>
+
+<div2 id='TextEntities'>
+<head>&parsed-entity;</head>
+<div3 id='sec-TextDecl'>
+<head>$B%F%-%9%H@k8@(B</head>
+<p>$B30It(B&parsed-entity;$B$O!$(B<term>$B%F%-%9%H@k8@(B</term>$B$G;O$^$C$F$b$h$$!#(B
+<scrap lang='ebnf'>
+<head>$B%F%-%9%H@k8@(B</head>
+<prodgroup pcw4="12.5" pcw5="13">
+<prod id='NT-TextDecl'><lhs>TextDecl</lhs>
+<rhs>&xmlpio;
+<nt def='NT-VersionInfo'>VersionInfo</nt>?
+<nt def='NT-EncodingDecl'>EncodingDecl</nt>
+<nt def='NT-S'>S</nt>? &pic;</rhs>
+<!-- <wfc def='wfc-xmldecliteral'/> -->
+<!-- <wfc def='wfc-no-nonleading-encdec'/> -->
+</prod>
+</prodgroup>
+</scrap>
+</p>
+<p>$B%F%-%9%H@k8@$O!$$=$N$^$^$N7A$G8=$l$J$1$l$P$J$i$:!$(B&parsed-entity;$B$X$N;2>H$r7PM3$7$F$O$J$i$J$$$3$H$KCm0U$9$k!#(B</p>
+<p>$B30It(B&parsed-entity;$B$K$*$$$F!$%F%-%9%H@k8@$O!$@hF,0J30$N$$$+$J$k0LCV$K$b=P8=$7$J$$!#(B</p>
+</div3>
+<div3 id='wf-entities'>
+<head>&well-formed;$B$N(B&parsed-entity;</head>
+<p>$B%i%Y%k(B<nt def='NT-document'>document</nt>$B$r$b$D@8@.5,B'$K(B&match;$B$9$l$P!$J8=q<BBN$O!$(B&well-formed;$B$H$9$k!#%i%Y%k(B<nt def='NT-ExtParsedEnt'>ExtParsedEnt</nt>$B$r$b$D@8@.5,B'$K(B&match;$B$9$l$P!$30It$N0lHL(B&parsed-entity;$B$O!$(B&well-formed;$B$H$9$k!#%i%Y%k(B<nt def='NT-ExtPE'>ExtPE</nt>$B$r$b$D@8@.5,B'$K(B&match;$B$9$l$P!$30It%Q%i%a%?<BBN$O!$(B&well-formed;$B$H$9$k!#(B
+
+<scrap lang='ebnf'>
+<head>&well-formed;$B$N(B&parsed-entity;</head>
+<prod id='NT-ExtParsedEnt'><lhs>ExtParsedEnt</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-content'>content</nt></rhs>
+</prod>
+<prod id='NT-ExtPE'><lhs>ExtPE</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-extSubset'>extSubset</nt></rhs>
+</prod>
+</scrap>
+&replacement-text;$B$,!$%i%Y%k(B<nt def='NT-content'>content</nt>$B$r$b$D@8@.5,B'$K(B&match;$B$9$l$P!$FbIt$N0lHL(B&parsed-entity;$B$O!$(B&well-formed;$B$H$9$k!#(BDTD$B$r:G8e$^$GFI$_9~$^$J$$$H!$3N<B$K$3$l$rH=Dj$G$-$J$$$3$H$KCm0U!#$9$Y$F$NFbIt$N%Q%i%a%?<BBN$O!$Dj5A$K$h$C$F(B&well-formed;$B$H$9$k!#(B
+</p>
+<p>$B<BBN$,(B&well-formed;$B$J7k2L$H$7$F!$(BXML$BJ8=q$NO@M}E*5Z$SJ*M}E*9=B$$O!$@5$7$/F~$l;R$H$J$k!#(B<termref def='dt-stag'>$B3+;O%?%0(B</termref>$B!$(B<termref def='dt-etag'>$B=*N;%?%0(B</termref>$B!$(B<termref def="dt-empty">$B6uMWAG%?%0(B</termref>$B!$(B<termref def='dt-element'>$BMWAG(B</termref>$B!$(B<termref def='dt-comment'>$B%3%a%s%H(B</termref>$B!$(B<termref def='dt-pi'>$B=hM}L?Na(B</termref>$B!$(B<termref def='dt-charref'>$BJ8;z;2>H(B</termref>$B5Z$S(B<termref def='dt-entref'>$B<BBN;2>H(B</termref>$B$,!$0l$D$N<BBN$G3+;O$7!$JL$N<BBN$G=*N;$9$k$3$H$O$J$$!#(B</p>
+</div3>
+<div3 id='charencoding'>
+<head>$B<BBN$K$*$1$kJ8;zId9f2=(B</head>
+
+<p>XML$BJ8=qFb$N30It(B&parsed-entity;$B$O!$3F!9!$JL$NJ8;zId9f2=J}<0$rMQ$$$F$b$h$$!#$9$Y$F$N(BXML&processor;$B$O!$(BUTF-8$B$GId9f2=$7$?<BBN!$(BUTF-16$B$GId9f2=$7$?<BBN$r=hM}$G$-$J$1$l$P$J$i$J$$!#(B
+<!--
+It is recognized that for some purposes, the use of additional
+ISO/IEC 10646 planes other than the Basic Multilingual Plane
+may be required.
+A facility for handling characters in these planes is therefore a
+desirable characteristic in XML processors and applications.
+-->
+</p>
+<p>UTF-16$B$GId9f2=$7$?<BBN$O!$(BISO/IEC 10646$B$NIUO?(BE$B5Z$S(BUnicode$B$NIUO?(BB$B$G5,Dj$9$k(B&byte-order-mark;(ZERO WIDTH NO-BREAK SPACE$BJ8;z!$(B#xFEFF)$B$G;O$^$i$J$1$l$P$J$i$J$$!#$3$l$O!$Id9f2=$NI8<1$G$"$C$F!$(BXML$BJ8=q$N(B&markup;$B$N0lIt$G$b!$J8;z%G!<%?$N0lIt$G$b$J$$!#(BXML&processor;$B$O!$(BUTF-8$B$GId9f2=$7$?J8=q$H(BUTF-16$B$GId9f2=$7$?J8=q$H$N6hJL$r9T$&$?$a$K!$$3$NJ8;z$r;HMQ2DG=$G$J$1$l$P$J$i$J$$!#(B</p>
+<p>XML&processor;$B$O!$(BUTF-8$B5Z$S(BUTF-16$B$GId9f2=$7$?<BBN$@$1$rFI$`$3$H$rI,?\$H$9$k$,!$B>$NId9f2=$r@$3&$G$OMQ$$$F$*$j!$$=$l$i$NId9f2=$rMQ$$$k<BBN$r(BXML&processor;$B$,=hM}$G$-$k$3$H$,K>$^$7$$!#(BUTF-8$BKt$O(BUTF-16$B0J30$NId9f2=J}<0$rMQ$$$F3JG<$9$k(B&parsed-entity;$B$O!$Id9f2=@k8@$r4^$`(B<titleref href='TextDecl'>$B%F%-%9%H@k8@(B</titleref>$B$G;O$a$J$1$l$P$J$i$J$$!#(B
+<scrap lang='ebnf'>
+<head>$BId9f2=@k8@(B</head>
+<prod id='NT-EncodingDecl'><lhs>EncodingDecl</lhs>
+<rhs><nt def="NT-S">S</nt>
+'encoding' <nt def='NT-Eq'>Eq</nt>
+'"' <nt def='NT-EncName'>EncName</nt> '"' | "'"
+<nt def='NT-EncName'>EncName</nt> "'"
+</rhs>
+</prod>
+<prod id='NT-EncName'><lhs>EncName</lhs>
+<rhs>[A-Za-z] ([A-Za-z0-9._] | '-')*</rhs>
+<com>$B%i%F%sJ8;z$@$1$r4^$`Id9f2=L>(B</com>
+</prod>
+</scrap>
+<termref def='dt-docent'>$BJ8=q<BBN(B</termref>$B$G$O!$Id9f2=@k8@$O!$(B<termref def="dt-xmldecl">XML$B@k8@(B</termref>$B$N0lIt$H$9$k!#(B<nt def="NT-EncName">EncName</nt>$B$O!$;HMQ$9$kId9f2=J}<0$NL>A0$H$9$k!#(B
+</p>
+<!-- FINAL EDIT: check name of IANA and charset names -->
+<p>$BId9f2=@k8@$G$O!$CM(B<code>UTF-8</code>$B!$(B<code>UTF-16</code>$B!$(B<code>ISO-10646-UCS-2</code>$B5Z$S(B<code>ISO-10646-UCS-4</code>$B$O!$(BUnicode$B5Z$S(BISO/IEC 10646$B$N3F<oId9f2=$N$?$a$KMQ$$$k!#CM(B<code>ISO-8859-1</code>$B$+$i(B<code>ISO-8859-9</code>$B$^$G$O!$(BISO 8859$B$NBP1~$9$k%Q!<%H$N$?$a$KMQ$$$k!#CM(B<code>ISO-2022-JP</code>$B!$(B<code>Shift_JIS</code>$B5Z$S(B<code>EUC-JP</code>$B$O!$(BJIS X-0208-1997$B$N3F<oId9f2=$N$?$a$KMQ$$$k!#(BXML&processor;$B$O!$$=$l0J30$NId9f2=J}<0$rG'<1$7$F$b$h$$!#(BInternet Assigned Numbers Authority (IANA)$B$K!$(B(<emph>charset</emph>s$B$H$7$F(B)$BEPO?$5$l$?J8;zId9f2=J}<0$K$D$$$F$O!$$3$l$i0J30$K$D$$$F$b!$EPO?$5$l$?L>A0$G;2>H$9$k$3$H$,K>$^$7$$!#$3$l$i$NEPO?$5$l$?L>A0$O!$BgJ8;z!&>.J8;z$N6hJL$r$;$:$KDj5A$5$l$F$$$k$N$G!$$3$l$i$KBP$9$kHf3S$r;n$_$k(B&processor;$B$O!$BgJ8;z!&>.J8;z$N6hJL$r$7$J$$J}K!$r$H$k$N$,K>$^$7$$$3$H$KCm0U$9$k!#(B</p>
+<p>XML$B=hM}7O$KEO$5$l$?<BBN$,!$Id9f2=@k8@$r4^$`$K$b$+$+$o$i$:!$@k8@$G<($7$?$b$N0J30$NJ}<0$GId9f2=$5$l$F$$$?$j!$Id9f2=@k8@$,!$30It<BBN$N:G=i0J30$N0LCV$K=P8=$9$l$P!$(B<termref def="dt-error">&error;</termref>$B$H$9$k!#(B
+</p>
+<p>&byte-order-mark;$B$G$bId9f2=@k8@$G$b;O$^$i$J$$<BBN$O!$(BUTF-8$BId9f2=$G$J$1$l$P$J$i$J$$!#(B</p>
+
+<p><!-- XML processors should make an effort to use all available
+information, internal and external, to aid in detecting an entity's correct
+encoding. Such information may include, but is not limited to:
+<ulist><item><p>An HTTP header</p></item>
+<item><p>A MIME header obtained other than through HTTP</p></item>
+<item><p>Metadata provided by the native OS file system or by document
+management software</p></item>
+<item><p>The bit patterns at the front of an entity, which may
+be analyzed to determine if
+the application of any known encoding yields a valid encoding
+declaration. See <titleref href='sec-guessing'>the appendix on
+autodetection of character sets</titleref>
+for a fuller description.</p></item></ulist> -->
+$B=hM}$G$-$J$$Id9f2=$r$b$C$?<BBN$r(BXML&processor;$B$,H/8+$7$?$H$-$O!$(B&application;$B$K$=$N;v<B$rDLCN$7!$(B<termref def='dt-fatal'>&fatal-error;</termref>$B$H$7$F!$=hM}$r=*N;$7$J$1$l$P$J$i$J$$!#(B
+<!--
+inform the application of this fact and
+may
+allow the application to
+request either that the entity should be treated as an <termref
+def="dt-unparsed">unparsed entity</termref>, or that processing should
+cease.-->
+</p>
+<p>$BId9f2=@k8@$NNc$r!$<!$K<($9!#(B
+<eg>&lt;?xml encoding='UTF-8'?>
+&lt;?xml encoding='EUC-JP'?></eg></p>
+</div3>
+</div2>
+<div2 id='entproc'>
+<head>XML&processor;$B$K$h$k<BBN5Z$S;2>H$N07$$(B</head>
+<p>$B<!$NI=$O!$J8;z;2>H!$<BBN;2>H5Z$S(B&unparsed-entity;$B$N8F=P$7$,8=$l$kJ8L.5Z$S3F!9$N>l9g$K$*$1$k(B<termref def='dt-xml-proc'>XML&processor;</termref>$B$KMW5a$9$k?6Iq$$$rMWLs$9$k!#0lHV:8$NNs$N%i%Y%k$O!$G'<1$NJ8L.$r<($9!#(B
+<glist>
+<gitem><label>$BFbMF$K$*$1$k;2>H(B</label>
+<def><p>$BMWAG$N(B<termref def='dt-stag'>$B3+;O%?%0(B</termref>$B5Z$S(B<termref def='dt-etag'>$B=*N;%?%0(B</termref>$B$N4V$NG$0U$N>l=j$G$N;2>H!#Hs=*C<5-9f(B<nt def='NT-content'>content</nt>$B$KBP1~$9$k!#(B</p></def>
+</gitem>
+<gitem>
+<label>$BB0@-CM$K$*$1$k;2>H(B</label>
+<def><p><termref def='dt-stag'>$B3+;O%?%0(B</termref>$B$NB0@-$NCM!$Kt$O(B<termref def='dt-attdecl'>$BB0@-@k8@(B</termref>$B$K$*$1$k(B&default-value;$B$N$$$:$l$+$G$N;2>H!#Hs=*C<5-9f(B<nt def='NT-AttValue'>AttValue</nt>$B$KBP1~$9$k!#(B</p></def></gitem>
+<gitem>
+<label>$BB0@-CM$H$7$F=P8=(B</label>
+<def><p>$B;2>H$G$O$J$/!$(B<nt def='NT-Name'>Name</nt>$B$H$7$F=P8=!#(B<code>ENTITY</code>$B7?$H$7$F@k8@$7$?B0@-$NCM!$Kt$O(B<code>ENTITIES</code>$B7?$H$7$F@k8@$7$?B0@-$NCM$K$*$1$k(B&space;$B$G6h@Z$k(B&token;$B$N0l$D$H$7$F=P8=$9$k!#(B</p>
+</def></gitem>
+<gitem><label>$B<BBNCM$K$*$1$k;2>H(B</label>
+<def><p>$B<BBN$N@k8@$K$*$1$k!$%Q%i%a%?Kt$OFbIt<BBN$N(B<termref def='dt-litentval'>&literal;$B<BBNCM(B</termref>$BFb$N;2>H!#Hs=*C<5-9f(B<nt def='NT-EntityValue'>EntityValue</nt>$B$KBP1~$9$k!#(B</p></def></gitem>
+<gitem><label>DTD$B$K$*$1$k;2>H(B</label>
+<def><p><termref def='dt-doctype'>DTD</termref>$B$NFbIt(B&subset;$BKt$O30It(B&subset;$B$G$N;2>H!#$?$@$7!$(B<nt def='NT-EntityValue'>EntityValue</nt>$BKt$O(B<nt def="NT-AttValue">AttValue</nt>$B$N30B&$H$9$k!#(B</p></def>
+</gitem>
+</glist></p>
+<!-- border value changed by bosak -->
+<htable border='1' cellpadding='7' align='center'>
+<!-- tbody wrapper added by bosak -->
+<htbody>
+<tr><td bgcolor='&cellback;' rowspan='2' colspan='1'></td>
+<td bgcolor='&cellback;' align='center' valign='bottom' colspan='4'>$B<BBN$N7?(B</td>
+<td bgcolor='&cellback;' rowspan='2' align='center'>$BJ8;z(B</td>
+</tr>
+<tr align='center' valign='bottom'>
+<td bgcolor='&cellback;'>$B%Q%i%a%?(B</td>
+<td bgcolor='&cellback;'>$BFbIt(B&newline;$B0lHL(B</td>
+<td bgcolor='&cellback;'>$B30It(B&newline;&parsed-entity;&newline;$B0lHL(B</td>
+<td bgcolor='&cellback;'>&unparsed-entity;</td>
+</tr>
+<tr align='center' valign='middle'>
+<!--<td bgcolor='&cellback;' rowspan='4'>Recognition
+Context</td>-->
+<td bgcolor='&cellback;' align='right'>$BFbMF$G$N(B&newline;$B;2>H(B</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>$BG'<1(B&newline;$B$7$J$$(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>$B<h9~$_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='include-if-valid'>$B8!>Z$N$?$a$K<h9~$_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>$B6X;_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>$B<h9~$_(B</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>$BB0@-CM$G$N(B&newline;$B;2>H(B</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>$BG'<1(B&newline;$B$7$J$$(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>$B<h9~$_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>$B6X;_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>$B6X;_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>$B<h9~$_(B</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>$BB0@-CM$H$7$F(B&newline;$B=P8=(B</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>$BG'<1(B&newline;$B$7$J$$(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>$B6X;_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>$B6X;_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='notify'>$BDLCN(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not recognized'>$BG'<1(B&newline;$B$7$J$$(B</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>$B<BBNCM$G$N(B&newline;$B;2>H(B</td>
+<td bgcolor='&cellback;'><titleref href='included'>$B<h9~$_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='bypass'>&bypass;</titleref></td>
+<td bgcolor='&cellback;'><titleref href='bypass'>&bypass;</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>$B6X;_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>$B<h9~$_(B</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>DTD$B$G$N(B&newline;$B;2>H(B</td>
+<td bgcolor='&cellback;'><titleref href='as-PE'>PE$B$H$7$F(B&newline;$B<h9~$_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>$B6X;_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>$B6X;_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>$B6X;_(B</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>$B6X;_(B</titleref></td>
+</tr>
+</htbody>
+</htable>
+<div3 id='not-recognized'>
+<head>$B!HG'<1$7$J$$!I(B</head>
+<p>DTD$B$N30$G$O!$(B<code>%</code>$BJ8;z$O!$$$$+$J$kFCDj$N0UL#$b!$$b$?$J$$!#$7$?$,$C$F!$(BDTD$B$G$O%Q%i%a%?<BBN;2>H$H$7$FG'<1$9$k$b$N$G$"$C$F$b!$(B<nt def='NT-content'>content</nt>$BFb$G$O(B&markup;$B$H$7$F$OG'<1$7$J$$!#F1MM$K!$E,@Z$K@k8@$7$?B0@-$NCM$NCf$K8=$l$k>l9g$r=|$-!$(B&unparsed-entity;$B$NL>A0$O!$G'<1$7$J$$!#(B
+</p>
+</div3>
+<div3 id='included'>
+<head>$B!H<h9~$_!I(B</head>
+<p><termdef id="dt-include" term="Include">$B<BBN$O!$$=$N(B<termref def='dt-repltext'>&replacement-text;</termref>$B$r<h$j=P$7!$=hM}$9$k$H!$;2>H<+BN$NBe$o$j$K!$;2>H$,$"$C$?0LCV$G!$J8=q$N0lIt$H$7$F4^$^$l$k$+$N$h$&$K(B<term>$B<h$j9~$^$l$k(B</term>$B!#(B&replacement-text;$B$O!$(B<termref def='dt-chardata'>$BJ8;z%G!<%?(B</termref>$B5Z$S(B($B%Q%i%a%?<BBN$r=|$/!#(B)<termref def="dt-markup">&markup;</termref>$B$N$$$:$l$r4^$s$G$b$h$/!$$3$l$i$O!$DL>o$NJ}K!$GG'<1$5$l$J$1$l$P$J$i$J$$!#$?$@$7!$(B&markup;$B$N6h@Z$j;R$r(B&escape;$B$9$k$?$a$KMQ$$$k<BBN(B(&magicents;)$B$N(B&replacement-text;$B$O!$>o$K%G!<%?$H$7$F07$&(B(&string;"<code>AT&amp;amp;T;</code>"$B$O!$(B"<code>AT&amp;T;</code>"$B$KE83+$5$l!$;D$5$l$?%"%s%Q%5%s%I$O!$<BBN;2>H$N6h@Z$j;R$H$7$F$OG'<1$7$J$$!#(B)$B!#J8;z;2>H$O!$<($7$?J8;z$r;2>H<+BN$NBe$o$j$K=hM}$9$k$H$-!$(B<term>$B<h$j9~$^$l$k(B</term>$B!#(B
+</termdef></p>
+</div3>
+<div3 id='include-if-valid'>
+<head>$B!H8!>Z$N$?$a$K<h9~$_!I(B</head>
+<p>$BJ8=q$N(B&validity;$B$r(B<termref def="dt-valid">$B8!>Z(B</termref>$B$9$k$K$O!$(BXML&processor;$B$,(B&parsed-entity;$B$X$N;2>H$rG'<1$7$?$H$-!$$=$N(B&replacement-text;$B$r(B<termref def="dt-include">$B<h$j9~$^(B</termref>$B$J$1$l$P$J$i$J$$!#<BBN$,30It<BBN$G$"$C$F!$(BXML$BJ8=q$N(B&validity;$B$r8!>Z$7$J$1$l$P!$<BBN$N(B&replacement-text;$B$r<h$j9~$s$G$b(B<termref def="dt-may">$B$h$$(B</termref>$B$,!$$=$&$7$J$/$H$b$h$$!#(B</p>
+<p>$B$3$N<h7h$a$O!$(BSGML$B5Z$S(BXML$B$N<BBN$N5!9=$,Ds6!$9$k<+F0<h9~$_5!G=$,!$J8=q:n@.;~$N%b%8%e!<%k2=$r<g$JL\E*$H$7$F@_7W$5$l$F$*$j!$$=$NB>$N(B&application;($BFC$K!$J8=q$N%V%i%&%:(B)$B$K$O!$I,$:$7$bE,@Z$G$O$J$$!$$H$$$&G'<1$K$h$k!#Nc$($P!$%V%i%&%6$O30It(B&parsed-entity;$B$X$N;2>H$r8+$D$1$k$H!$$=$N<BBN$,B8:_$9$k$H$$$&I=<($@$1$r9T$$!$I=<($rMW5a$5$l$?$H$-$K$@$1!$FbMF$r<h$j=P$9$+$b$7$l$J$$!#(B
+</p>
+</div3>
+<div3 id='forbidden'>
+<head>$B!H6X;_!I(B</head>
+<p>$B<!$O6X;_$5$l$F$*$j!$(B<termref def='dt-fatal'>&fatal-error;</termref>$B$H$9$k!#(B
+<ulist>
+<item><p>a) <termref def='dt-unparsed'>&unparsed-entity;</termref>$B$X$N;2>H$N=P8=!#(B
+</p></item>
+<item><p>b) DTD$B$N(B<nt def='NT-EntityValue'>EntityValue</nt>$BKt$O(B<nt def="NT-AttValue">AttValue</nt>$B0J30$NItJ,$K$*$1$k!$J8;z;2>HKt$O0lHL<BBN$X$N;2>H$N=P8=!#(B</p></item>
+<item><p>c) $BB0@-CMFb$N30It<BBN$X$N;2>H!#(B</p>
+</item>
+</ulist>
+</p>
+</div3>
+<div3 id='notify'>
+<head>$B!HDLCN!I(B</head>
+<p><termref def='dt-unparsed'>&unparsed-entity;</termref>$B$NL>A0$,!$(B<kw>ENTITY</kw>$BKt$O(B<kw>ENTITIES</kw>$B$NB0@-$NCM$K$*$$$F(B&token;$B$H$7$F8=$l$?$H$-!$(B&processor;$B$O!$(B&application;$B$KBP$7$F!$4XO"IU$1$i$l$?(B<termref def="dt-notation">$B5-K!(B</termref>$BL>!$5-K!$KBP$9$k(B<termref def='dt-sysid'>$B%7%9%F%`(B</termref>&identifier;$B5Z$S(B($BB8:_$9$l$P(B)<termref def='dt-pubid'>$B8x3+(B</termref>&identifier;$B$rDLCN$7$J$1$l$P$J$i$J$$!#(B</p>
+</div3>
+<div3 id='bypass'>
+<head>$B!H(B&bypass;$B!I(B</head>
+<p>$B0lHL<BBN;2>H$,!$<BBN@k8@$K$*$1$k(B<nt def='NT-EntityValue'>EntityValue</nt>$BFb$K8=$l$k$H$-!$$=$l$OL5;k$5$l!$$=$N$^$^;D$k!#(B</p>
+</div3>
+<div3 id='as-PE'>
+<head>$B!H(BPE$B$H$7$F<h9~$_!I(B</head>
+<p>$B30It(B&parsed-entity;$B$N>l9g$HF1MM$K!$%Q%i%a%?<BBN$O!$(B&validity;$B$r(B<titleref href='include-if-valid'>$B8!>Z$9$k$H$-$@$1<h$j9~$^$l$k(B</titleref>$BI,MW$,$"$k!#%Q%i%a%?<BBN;2>H$r(BDTD$BFb$KG'<1$7$F<h$j9~$`$H$-!$$=$N(B<termref def='dt-repltext'>&replacement-text;</termref>$B$O!$$=$NA08e$K0l$D$N(B&space-character;(#x20)$B$NIU2C$K$h$C$F0z$-?-$P$5$l$k!#$3$N0U?^$O!$%Q%i%a%?<BBN$N(B&replacement-text;$B$,!$(BDTD$BFb$N$$$/$D$+$NJ8K!E*(B&token;$B$r40A4$K4^$`$H!$@)Ls$9$k$3$H$K$"$k!#(B
+</p>
+</div3>
+<!--
+<div3 id='gen-char-entproc'>
+<head>General and Character Entity Processing</head>
+<p>General-entity and character references are recognized in three
+contexts: wherever the nonterminal <nt def='NT-content'>content</nt> may
+appear, at any point within the nonterminal
+<nt def='NT-AttValue'>AttValue</nt>,
+and within the
+<termref def='dt-litentval'>literal entity value</termref>
+(<nt def='NT-EntityValue'>EntityValue</nt>)
+of an internal entity declaration.
+This section discusses the first two cases; the third
+is discussed <titleref href='intern-replacement'>below</titleref>.
+When an <termref def="dt-xml-proc">XML processor</termref> encounters
+such a reference, or the name of an unparsed entity as the value
+of an <kw>ENTITY</kw> or <kw>ENTITIES</kw> attribute, then:
+<olist>
+
+<item><p>In all cases, the XML processor may
+inform the application of the reference's occurrence and its identifier
+(for an entity reference, the name; for a character
+reference,
+the character number in decimal, hexadecimal, or binary form).</p></item>
+
+<item><p>For both character and entity references, the processor must
+remove the reference itself from the <termref def="dt-text">text</termref> data
+before passing the data to the application.
+</p></item>
+
+<item><p>For character references, the processor must
+pass the character indicated
+to the application in
+place of the reference.
+</p></item>
+
+<item><p>For an external entity, the processor must inform the
+application of the entity's <termref def="dt-sysid">system
+identifier</termref>, and <termref def="dt-pubid">public identifier</termref>
+if any.
+All strings
+of white space in the public identifier must be normalized to single space characters (#x20),
+and leading and trailing white space must be removed.</p></item>
+
+<item><p>If the external entity is binary, the processor must inform the
+application of the associated <termref def="dt-notation">notation</termref>
+name, and the notation's associated <termref def='dt-sysid'>system</termref>
+and <termref def='dt-pubid'>public</termref> (if any)
+identifiers.</p></item>
+
+<item><p><termdef id="dt-include" term="Include">For an internal
+(parsed) entity, the processor must <term>include</term> the
+entity; that is, retrieve its replacement text
+and process it as a part of the document
+(i.e. as <nt def="NT-content">content</nt> or <nt
+def="NT-AttValue">AttValue</nt>, whichever was being processed when
+the reference was recognized), passing the result to the application
+in place of the reference. The replacement text may contain both
+<termref def='dt-chardata'>character data</termref>
+and <termref def="dt-markup">markup</termref>, which must be recognized in
+the usual way, except that the replacement text of entities used to escape
+markup delimiters (the entities &magicents;) is always treated as
+data. (The string "<code>AT&amp;amp;T;</code>" expands to
+"<code>AT&amp;T;</code>" since the ampersand replacing "<code>&amp;amp;</code>"
+is not recognized
+as an entity-reference delimiter.) </termdef></p>
+<p>Since the entity may contain other entity references,
+an XML processor may have to repeat the inclusion process recursively.</p>
+</item>
+<item><p>If the entity is an external parsed entity, then in order to
+<termref def="dt-valid">validate</termref> the XML document, the processor must
+<termref def="dt-include">include</termref> the content of the
+entity.</p></item>
+
+<item><p>If the entity is an external parsed entity, and the processor is not
+attempting to <termref def="dt-valid">validate</termref> the XML document, the
+processor <termref def="dt-may">may</termref>, but need not, <termref
+def="dt-include">include</termref> the entity's content.</p>
+<p>This rule is based on the recognition that the automatic inclusion
+provided by the SGML and XML entity mechanism, primarily designed
+to support modularity in authoring, is not necessarily
+appropriate for other applications, in particular document browsing.
+Browsers, for example, when encountering an external parsed entity reference,
+might choose to provide a visual indication of the entity's
+presence and retrieve it for display only on demand.
+</p></item>
+</olist>
+</p>
+<p><termdef id="dt-escape" term="escape">Entity and character
+references can both be used to <term>escape</term> the left angle bracket,
+ampersand, and other delimiters. A set of general entities
+(&magicents;) is specified for this purpose.
+Numeric character references may also be used; they are
+expanded immediately when recognized, and must be treated as
+character data, so the numeric character references
+"<code>&amp;#60;</code>" and "<code>&amp;#38;</code>" may be used to
+escape <code>&lt;</code> and <code>&amp;</code> when they occur
+in character data.</termdef></p>
+</div3>
+<div3 id='PE-proc'>
+<head>Parameter Entity Processing</head>
+<p>Parameter-entity references are only recognized in the
+<termref def='dt-doctype'>DTD</termref>.
+Their processing, when they appear
+within the
+<termref def='dt-litentval'>literal entity value</termref>
+(<nt def='NT-EntityValue'>EntityValue</nt>)
+of an internal entity declaration,
+is discussed <titleref href='intern-replacement'>below</titleref>.
+They have these intended uses:
+<olist>
+<item><p>as a replacement for one or more complete markup declarations</p></item>
+<item><p>as a replacement for one or more complete "groups" in
+element declarations</p></item>
+<item><p>as a replacement for one or more complete "tokens" in
+markup declarations</p></item>
+</olist>
+</p>
+<p>The constraints requiring that PE replacement texts be properly nested
+with <titleref href='vc-PEinMarkupDecl'>markup declarations</titleref>
+and <titleref href='vc-PEinGroup'>content groups</titleref>
+govern the first two usages.</p>
+<p>To support the third intended usage,
+when an XML processor encounters a parameter-entity reference
+(outside of the
+<termref def='dt-litentval'>literal entity value</termref> in an entity
+declaration),
+it must <termref def="dt-include">include</termref>
+the named entity, but first expand its
+<termref def='dt-repltext'>replacement text</termref> by attaching
+space (#x20) characters to its beginning and the end, before
+processing it.</p>
+<p>The DTD text must match the relevant
+rules of this specification's grammar after all parameter-entity
+references have been expanded.
+<!-In addition, parameter entities referred to in specific
+contexts are required to satisfy certain constraints in their
+replacement text; for example, a parameter entity referred to within
+the internal DTD subset must match the rule for <nt
+def="NT-markupdecl">markupdecl</nt>. ->
+</p>
+</div3>
+-->
+</div2>
+<div2 id='intern-replacement'>
+<head>$BFbIt<BBN(B&replacement-text;$B$N9=C[(B</head>
+<p>$BFbIt<BBN$N<h07$$$N5,Dj$G!$<BBNCM$rFs$D$N7A<0$K6hJL$9$k$3$H$OLr$KN)$D!#(B<termdef id="dt-litentval" term='Literal Entity Value'><term>&literal;$B<BBNCM(B</term>$B$O!$<BBN@k8@Fb$K<B:]$KB8:_$9$k!$0zMQId$G0O$`(B&string;$B$H$9$k!#$3$l$O!$Hs=*C<5-9f(B<nt def='NT-EntityValue'>EntityValue</nt>$B$K(B&match;$B$9$k!#(B</termdef><termdef id='dt-repltext' term='Replacement Text'><term>&replacement-text;</term>$B$O!$J8;z;2>H5Z$S(B&parameter;$B<BBN;2>H$NCV49$(8e$K$*$1$k!$<BBN$NFbMF$H$9$k!#(B</termdef></p>
+
+<p>$BFbIt<BBN@k8@Fb$GM?$($k(B&literal;$B<BBNCM(B<!-- replacement text -->(<nt def='NT-EntityValue'>EntityValue</nt>)$B$O!$J8;z;2>H!$(B&parameter;$B<BBN;2>H5Z$S0lHL<BBN;2>H$r4^$s$G$h$$!#$3$l$i$N;2>H$O!$(B<!-- replacement text. -->&literal;$B<BBNCMFb$K40A4$K4^$^$l$F$$$J$1$l$P$J$i$J$$!#(B<termref def='dt-include'>$BE83+$9$k(B</termref>$B<B:]$N(B&replacement-text;($B@h$K<($7$?$b$N(B)$B$O!$;2>H$9$k(B&parameter;$B<BBN$N(B<emph>&replacement-text;</emph>$B$r4^$^$J$1$l$P$J$i$:!$(B&literal;$B<BBNCMFb$G$NJ8;z;2>H$NBe$o$j$K;2>H$7$?J8;z$r4^$^$J$1$l$P$J$i$J$$!#$7$+$7!$0lHL<BBN;2>H$O!$$=$N$^$^;D$7(B, $BE83+$7$F$O$J$i$J$$!#(B
+<!-- in the replacement text that is to be included. -->
+$BNc$($P!$<!$N@k8@$rM?$($?$H$9$k!#(B
+
+<eg><![CDATA[<!ENTITY % pub "&#xc9;ditions Gallimard" >
+<!ENTITY rights "All rights reserved" >
+<!ENTITY book "La Peste: Albert Camus,
+&#xA9; 1947 %pub;. &rights;" >]]></eg>
+$B<BBN$N(B&replacement-text;"<code>book</code>"$B$O!$<!$N$H$*$j$H$J$k!#(B
+<eg>La Peste: Albert Camus,
+&#169; 1947 &#201;ditions Gallimard. &amp;rights;</eg>
+$B;2>H(B"<code>&amp;book;</code>"$B$,!$J8=q$NFbMFKt$OB0@-CMFb$K=P8=$7$F$$$l$P!$0lHL<BBN;2>H(B"<code>&amp;rights;</code>"$B$O!$E83+$5$l$F$$$k!#(B</p>
+<p>$B$3$l$i$NC1=c$J5,B'$O!$J#9gAj8_:nMQ$r$b$D!#(B
+<!-- $BF|K\8lLu$K$D$$$F!'(B interaction = $BAj8_:nMQ!J6bK\!K(B-->
+$BFq$7$$Nc$K$D$$$F$N>\:Y$O!$(B<titleref href='sec-entexpand'>$B<BBN;2>H$NE83+$NIUO?(B</titleref>$B$r;2>H$N$3$H!#(B
+</p>
+<!-- Replaced by the above -TB
+<p>Implementors of XML processors need to know the rules for
+expansion of references in more detail. These rules only come into
+play when the replacement text for an internal entity itself contains
+other references.
+<olist>
+<item><p>In the replacement text of an internal entity, parameter-entity
+references and character references in the replacement text
+are recognized and resolved
+when the entity declaration is parsed,
+before the replacement text is stored in
+the processor's symbol table.
+General-entity references in the replacement text are not
+resolved when the entity declaration is parsed.</p></item>
+<item><p>In the document, when a general-entity reference is
+resolved, its replacement text is parsed. Character references
+encountered in the replacement text are
+resolved immediately; general-entity references encountered in the
+replacement text may be resolved or left unresolved, as described
+<titleref href="entproc">above</titleref>.
+Character and general-entity references must be
+contained entirely within the entity's replacement text.
+</p></item>
+</olist>
+</p>
+
+<p>Simple character references do not suffice to escape delimiters
+within the replacement text of an internal entity: they will be
+expanded when the entity declaration is parsed, before the replacement
+text is stored in the symbol table. When the entity itself is
+referred to, the replacement text will be parsed again, and the
+delimiters (no longer character references)
+will be recognized as delimiters. To escape the
+characters &magicents; in an entity replacement text, use
+a general-entity reference or a doubly-escaped character reference.
+See <titleref href='sec-entexpand'>the appendix on expansion
+of entity references</titleref>
+for detailed examples.</p>
+-->
+
+
+</div2>
+<div2 id='sec-predefined-ent'>
+<head>$BDj5A:Q$_<BBN(B</head>
+<p><termdef id="dt-escape" term="escape">
+$B<BBN;2>H5Z$SJ8;z;2>H$N$$$:$l$b!$(B&left-angle-bracket;$B!$%"%s%P%5%s%I5Z$SB>$N6h@Z$j;R$r(B<term>&escape;</term>$B$9$k$?$a$K;HMQ$G$-$k!#$$$/$D$+$N0lHL<BBN!J(B&magicents;$B!K$r!$$3$NL\E*$N$?$a$K;XDj$9$k!#?tCM$K$h$kJ8;z;2>H$b!$F1MM$NL\E*$N$?$a$K;HMQ$G$-$k!#J8;z;2>H$O!$G'<1$5$l$k$HD>$A$KE83+$5$l!$J8;z%G!<%?$H$7$F07$o$l$k$N$G!$?tCM$K$h$kJ8;z;2>H(B"<code>&amp;#60;</code>"$B5Z$S(B"<code>&amp;#38;</code>"$B$O!$J8;z%G!<%?Fb$K=P8=$9$k(B<code>&lt;</code>$B5Z$S(B<code>&amp;</code>$B$r(B&escape;$B$9$k$?$a$K;HMQ$G$-$k!#(B</termdef></p>
+<p>$B$9$Y$F$N(BXML&processor;$B$O!$@k8@$5$l$F$$$k$+$I$&$+$K4X78$J$/!$$3$l$i$N<BBN$rG'<1$7$J$/$F$O$J$i$J$$!#(B<termref def='dt-interop'>$BAj8_1?MQ@-$N$?$a(B</termref>$B!$(B&valid;$B$J(BXML$BJ8=q$O!$$3$l$i$N<BBN$r;HMQ$9$kA0$K!$B>$N<BBN$HF1MM$K!$@k8@$9$k$3$H$,K>$^$7$$!#<BBN$r@k8@$9$k>l9g$O!$(B&replacement-text;$B$r(B&escape;$B$9$k0lJ8;z$H$9$kFbIt<BBN$H$7$F!$<!$N$H$*$j$K@k8@$7$J$1$l$P$J$i$J$$!#(B
+<eg><![CDATA[<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+]]></eg>
+"<code>lt</code>"$B5Z$S(B"<code>amp</code>"$B@k8@Fb$N(B"<code>&lt;</code>"$B5Z$S(B"<code>&amp;</code>"$BJ8;z$O!$<BBN$NCV49%F%-%9%H$,!$(B&well-formed;$B$H$J$k$h$&$KFs=E$K(B&escape;$B$5$l$k$3$H$KCm0U!#(B
+</p>
+</div2>
+
+
+<div2 id='Notations'>
+<head>$B5-K!@k8@(B</head>
+
+
+<p>
+<termdef id="dt-notation" term="Notation">
+<term>$B5-K!(B</term>$B$O!$(B<termref def="dt-extent">&unparsed-entity;</termref>$B$N7A<0$r(B&identify;$BL>A0$+!$Kt$O(B<termref def="dt-pi">$B=hM}L?Na(B</termref>$B$NBP>]$H$9$k(B&application;$B$r(B&identify;$BL>A0$H$9$k!#(B</termdef></p>
+<p><termdef id="dt-notdecl" term="Notation Declaration">
+<term>$B5-K!@k8@(B</term>$B$O!$5-K!$NL>A05Z$S30It(B&identifier;$B$rDs6!$9$k!#$3$NL>A0$O!$<BBN5Z$SB0@-%j%9%H@k8@JB$S$KB0@-;XDj$KMQ$$$k!#30It(B&identifier;$B$O!$M?$($i$l$?5-K!$N%G!<%?$r=hM}$G$-$k%X%k%Q(B&application;$B$r!$(BXML&processor;$BKt$O%/%i%$%"%s%H%"%W%j%1!<%7%g%s$,C5$9$?$a$K!$MxMQ$G$-$k!#(B
+<scrap lang='ebnf'>
+<head>$B5-K!@k8@(B</head>
+<prod id='NT-NotationDecl'><lhs>NotationDecl</lhs>
+<rhs>'&lt;!NOTATION' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>
+(<nt def='NT-ExternalID'>ExternalID</nt> |
+<nt def='NT-PublicID'>PublicID</nt>)
+<nt def='NT-S'>S</nt>? '>'</rhs></prod>
+<prod id='NT-PublicID'><lhs>PublicID</lhs>
+<rhs>'PUBLIC' <nt def='NT-S'>S</nt>
+<nt def='NT-PubidLiteral'>PubidLiteral</nt>
+</rhs></prod>
+</scrap>
+</termdef></p>
+<p>$B@k8@$7!$B0@-CM!$B0@-Dj5AKt$O<BBN@k8@$G;2>H$9$k$9$Y$F$N5-K!$K$D$$$F!$(BXML&processor;$B$O!$5-K!$NL>A05Z$S30It(B&identifier;$B$r(B&application;$B$KDs6!$7$J$1$l$P$J$i$J$$!#$5$i$K!$30It(B&identifier;$B$r!$(B<termref def="dt-sysid">$B%7%9%F%`(B&identifier;</termref>$B!$%U%!%$%kL>Kt$O$=$NB>$N>pJs$KE83+$7$F$b$h$/!$$3$l$i$rMQ$$$F!$(B&application;$B$O!$$=$N5-K!$N%G!<%?$r=hM}$9$k(B&processor;$B$r5/F0$9$k!#(B($B$7$+$7!$(BXML&processor;$BKt$O(B&application;$B$,F0:n$9$k%7%9%F%`$G$OMxMQ$G$-$J$$5-K!$r!$(BXML$BJ8=q$,@k8@$7;2>H$7$F$b!$$3$l$O!$(B&error;$B$H$O$7$J$$!#!K(B</p>
+</div2>
+
+
+<div2 id='sec-doc-entity'>
+<head>$BJ8=q<BBN(B</head>
+
+<p><termdef id="dt-docent" term="Document Entity"><term>$BJ8=q<BBN(B</term>$B$O!$<BBN$N7A@.$9$kLZ9=B$$N(B&root;$B$G$"$C$F!$(B<termref def="dt-xml-proc">XML&processor;</termref>$B$,!$=hM}$r3+;O$9$kCOE@$H$9$k!#(B</termdef>$B$3$N(B&TR-or-Rec;$B$O!$(BXML&processor;$B$,!$J8=q<BBN$NB8:_$9$k>l=j$r$I$N$h$&$K8+$D$1$k$+$O!$5,Dj$7$J$$!#B>$N<BBN$H0[$J$j!$J8=q<BBN$OL>A0$r$b$?$:!$$$$+$J$k<1JL$b$J$7$K(B&processor;$B$X$NF~NO(B&stream;$B$K=P8=$7$F$b$h$$!#(B</p>
+</div2>
+
+
+</div1>
+<!-- &Conformance; -->
+<div1 id='sec-conformance'>
+<head>$BE,9g@-(B</head>
+
+<p>$BE,9g$9$k(B<termref def="dt-xml-proc">XML&processor;</termref>$B$O!$(B&validating;$B$b$N5Z$S(B&non-validating;$B$b$N$N!$Fs$D$KJ,N`$5$l$k!#(B</p>
+<p>&validating;$B%7%9%F%`5Z$S(B&non-validating;$B%7%9%F%`$O!$$3$N(B&TR-or-Rec;$B$,5,Dj$9$k(B&well-formed;$B@)Ls$X$N0cH?$rJs9p$7$J$1$l$P$J$i$J$$!#(B</p>
+<p><termdef id="dt-validating" term="Validating Processor"><term>&validating;&processor;</term>$B$O!$(B<termref def="dt-doctype">DTD</termref>$BFb$N@k8@$K$h$C$F<($5$l$?!$@)Ls$X$N0cH?$rJs9p$7$J$1$l$P$J$i$J$$!#$5$i$K!$$3$N(B&TR-or-Rec;$B$,5,Dj$9$k(B&validity;$B@)Ls$X$N0cH?$r!$$9$Y$FJs9p$7$J$1$l$P$J$i$J$$!#(B
+</termdef>
+</p>
+</div1>
+
+<div1 id='sec-notation'>
+<head>$B5-K!(B</head>
+
+<p>XML$B$N7A<0E*$JJ8K!$O!$4JC1$J3HD%(BBackus-Naur Form(EBNF)$B5-K!$K$h$C$FM?$($k!#J8K!$N3F5,B'$O!$<!$N7A<0$G!$5-9f$r0l$DDj5A$9$k!#(B
+<eg>symbol ::= expression</eg></p>
+<p>$B5-9f$O!$@55,I=8=$GDj5A$9$k$H$-$OBgJ8;z$G;O$a!$$=$&$G$J$1$l$P!$>.J8;z$G;O$a$k!#(B&string;&literal;$B$O!$0zMQId$G0O$`!#(B
+<!--* The distinction between symbols which can and cannot be
+recognized using simple regular expressions may be used to set the
+boundary between an implementation's lexical scanner and its parser,
+but this specification neither constrains the placement of that
+boundary nor presupposes that all implementations will have one. *-->
+</p>
+
+<p>$B5,B'$N1&B&$N<0Fb$G$O!$0l$DKt$OJ#?t$NJ8;z$+$i$J$k(B&string;$B$H(B&match;$B$9$k$?$a$K!$<!$N<0$r;HMQ$9$k!#(B
+<glist>
+<gitem>
+<label><code>#xN</code></label>
+<def><p>$B$3$3$G!$(B<code>N</code>$B$O(B16$B?J$N@0?t$H$9$k!#(BISO/IEC 10646$B$NJ8;z$G$"$C$F!$@55,7A(B(UCS-4)$B$N(B&code-value;$B$rId9f$J$7(B2$B?J?t$H$7$F2r<a$7$?$H$-!$;XDj$7$?CM$HEy$7$$$b$N$H(B&match;$B$9$k!#(B<code>#xN</code>$B7A<0$N@hF,$K%<%m$,$$$/$D$+8=$l$k$+$O!$0UL#$r$b$?$J$$!#(B&code-value;<!-- bit string -->$B$K$*$1$k@hF,$N%<%m$N?t$O!$J8;z$NId9f2=$K$h$C$F7hDj$5$l$k$N$G!$(BXML$B$K$H$C$F$O0UL#$,$J$$!#(B
+</p></def>
+</gitem>
+<gitem>
+<label><code>[a-zA-Z]</code>, <code>[#xN-#xN]</code></label>
+<def><p>$B;XDj$7$?HO0O$NCM(B($BN>C<$NCM$r4^$`!#!K$r$b$DG$0U$N(B<termref def='dt-character'>$BJ8;z(B</termref>$B$H(B&match;$B$9$k!#(B</p></def>
+</gitem>
+<gitem>
+<label><code>[^a-z]</code>, <code>[^#xN-#xN]</code></label>
+<def><p>$B;XDj$7$?HO0O(B<emph>$B30(B</emph>$B$NCM$r$b$DG$0U$N(B<termref def='dt-character'>$BJ8;z(B</termref>$B$H(B&match;$B$9$k!#(B</p></def>
+</gitem>
+<gitem>
+<label><code>[^abc]</code>, <code>[^#xN#xN#xN]</code></label>
+<def><p>$B;XDj$7$?J8;z0J30$NCM$r$b$DG$0U$N(B<termref def='dt-character'>$BJ8;z(B</termref>$B$H(B&match;$B$9$k!#(B</p></def>
+</gitem>
+<gitem>
+<label><code>"string"</code></label>
+<def><p>&double-quote;$B$G0O$`(B&string;&literal;$B$H(B<termref def="dt-match">&match;$B$7$F$$$k(B</termref>&string;&literal;$B$H(B&match;$B$9$k!#(B</p></def>
+</gitem>
+<gitem>
+<label><code>'string'</code></label>
+<def><p>&single-quote;$B$G0O$`(B&string;&literal;$B$H(B<termref def="dt-match">&match;$B$7$F$$$k(B</termref>&string;&literal;$B$H(B&match;$B$9$k!#(B</p></def>
+</gitem>
+</glist>
+$B$3$l$i$N5-9f$O!$<!$N7A<0$NAH9g$;$G;HMQ$9$k!#$3$3$G!$(B<code>A</code>$B5Z$S(B<code>B</code>$B$O!$C1=c$J<0$H$9$k!#(B
+<glist>
+<gitem>
+<label>(<code>expression</code>)</label>
+<def><p><code>expression</code>$B$O!$0l$D$N$^$H$^$j$H$7$F07$$!$$3$3$K<($9AH9g$;$G;H$C$F$b$h$$!#(B</p></def>
+</gitem>
+<gitem>
+<label><code>A?</code></label>
+<def><p><code>A</code>$BKt$O2?$b$J$7$H(B&match;$B$9$k(B($B%*%W%7%g%s$N(B<code>A</code>)$B!#(B</p></def>
+</gitem>
+<gitem>
+<label><code>A B</code></label>
+<def><p><code>A</code>$B$N<!$K(B<code>B</code>$B$,=P8=$9$k$b$N$H(B&match;$B$9$k!#(B
+</p></def>
+</gitem>
+<gitem>
+<label><code>A | B</code></label>
+<def><p><code>A</code>$BKt$O(B<code>B</code>$B!$$?$@$7!$N>J}$G$O$J$$!$$H(B&match;$B$9$k!#(B
+</p></def>
+</gitem>
+<gitem>
+<label><code>A - B</code></label>
+<def><p><code>A</code>$B$H(B&match;$B$9$k$,!$(B<code>B</code>$B$H$O(B&match;$B$7$J$$!$G$0U$N(B&string;$B$H(B&match;$B$9$k!#(B</p></def>
+</gitem>
+<gitem>
+<label><code>A+</code></label>
+<def><p><code>A</code>$B$N(B1$B2s0J>e$N7+JV$7$H(B&match;$B$9$k!#(B</p></def>
+</gitem>
+<gitem>
+<label><code>A*</code></label>
+<def><p><code>A</code>$B$N(B0$B2s0J>e$N7+JV$7$H(B&match;$B$9$k!#(B</p></def>
+</gitem>
+<!-- DEATH TO %'s
+<gitem>
+<label><code>%a</code></label>
+<def><p>specifies that <emph>in the external DTD subset</emph> a
+<termref def='dt-param-entity'>parameter entity</termref> may occur in the
+text at the position where <code>a</code> may occur; if so, its
+replacement text must match <code>S? a S?</code>. If
+the expression <code>a</code> is governed by a suffix operator, then
+the suffix operator determines both the maximum number of parameter-entity
+references allowed and the number of occurrences of <code>a</code>
+in the replacement text of the parameter entities: <code>%a*</code>
+means that <code>a</code> must occur zero or more times, and
+that some of its occurrences may be replaced by references to
+parameter entities whose replacement text must contain zero or
+more occurrences of <code>a</code>; it is thus a more compact way
+of writing <code>%(a*)*</code>.
+Similarly, <code>%a+</code> means that <code>a</code>
+must occur one or more times, and may be replaced by
+parameter entities with replacement text matching
+<code>S? (a S?)+</code>.
+The recognition of parameter entities in the internal subset is much more
+highly constrained.
+</p></def>
+</gitem>
+-->
+</glist>
+$B@8@.5,B'Fb$G;HMQ$9$kB>$N5-K!$r!$<!$K<($9!#(B
+<glist>
+<gitem>
+<label><code>/* ... */</code></label>
+<def><p>$B%3%a%s%H!#(B</p></def>
+</gitem>
+<gitem>
+<label><code>[ wfc: ... ]</code></label>
+<def><p>&well-formed;$B@)Ls!#@8@.5,B'$KIUM?$7$?!$(B<termref def="dt-wellformed">&well-formed;</termref>$B$NJ8=q$K4X$9$k@)Ls$r!$L>A0$K$h$C$F(B&identify;$B!#(B</p></def>
+</gitem>
+<gitem>
+<label><code>[ vc: ... ]</code></label>
+<def><p>&validity;$B@)Ls!#@8@.5,B'$KIUM?$7$?!$(B<termref def="dt-valid">&valid;</termref>$B$JJ8=q$K4X$9$k@)Ls$r!$L>A0$K$h$C$F(B&identify;$B!#(B
+</p></def>
+</gitem>
+</glist>
+</p></div1>
+
+</body>
+<back>
+<!-- &SGML; -->
+
+<!-- &Biblio; -->
+<div1 id='sec-bibliography'>
+
+<head>$B;29MJ88%(B</head>
+<div2 id='sec-existing-stds'>
+<head>&normative;$B;29MJ88%(B</head>
+<!--* <ulist><item>
+<p>Unicode and ISO/IEC 10646. This specification depends on the
+international standard ISO/IEC 10646 (with amendments AM 1 through AM 7)
+and the Unicode Standard, Version 2.0 <bibref ref='Unicode'/>,
+which define the encodings and meanings of
+the <termref def="dt-character">characters</termref> which
+make up XML <termref def="dt-text">text</termref>.
+All the characters in ISO/IEC 10646 are present, at the same code points,
+in Unicode.</p></item>
+<item><p>XXX XXX defines the syntax and semantics of
+Uniform Resource Identifiers, or URIs.</p></item>
+<item><p>IETF RFC 1766, with ISO 639 and 3166,
+describe the codes that may be used in the
+special <titleref href='sec-lang-tag'>xml:lang</titleref> attribute.</p>
+</item></ulist>
+*-->
+
+<blist>
+
+<bibl id='RFC1766' key='IETF RFC 1766'>
+IETF (Internet Engineering Task Force).
+<emph>RFC 1766: Tags for the Identification of Languages</emph>,
+ed. H. Alvestrand.
+1995.
+</bibl>
+
+<bibl id='ISO639' key='ISO 639'>
+(International Organization for Standardization).
+<emph>ISO 8879:1988 (E).
+Code for the representation of names of languages.</emph>
+[Geneva]: International Organization for
+Standardization, 1988.</bibl>
+
+<bibl id='ISO3166' key='ISO 3166'>
+(International Organization for Standardization).
+<emph>ISO 3166-1:1997 (E).
+Codes for the representation of names of countries and their subdivisions
+&mdash; Part 1: Country codes</emph>
+[Geneva]: International Organization for
+Standardization, 1997.</bibl>
+
+<bibl id='ISO10646' key='ISO/IEC 10646'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10646-1993 (E). Information technology &mdash; Universal
+Multiple-Octet Coded Character Set (UCS) &mdash; Part 1:
+Architecture and Basic Multilingual Plane.</emph>
+[Geneva]: International Organization for
+Standardization, 1993 (plus amendments AM 1 through AM 7).
+</bibl>
+
+<bibl id='Unicode' key='Unicode'>The Unicode Consortium.
+<emph>The Unicode Standard, Version 2.0.</emph>
+Reading, Mass.: Addison-Wesley Developers Press, 1996.</bibl>
+
+</blist>
+
+</div2>
+
+<div2><head>$BB>$N;29MJ88%(B</head>
+
+<blist>
+
+<bibl id='Aho' key='Aho/Ullman'>Aho, Alfred V.,
+Ravi Sethi, and Jeffrey D. Ullman.
+<emph>Compilers: Principles, Techniques, and Tools</emph>.
+Reading: Addison-Wesley, 1986, rpt. corr. 1988.</bibl>
+
+<bibl id="Berners-Lee" xml-link="simple" key="Berners-Lee et al.">
+Berners-Lee, T., R. Fielding, and L. Masinter.
+<emph>Uniform Resource Identifiers (URI): Generic Syntax and
+Semantics</emph>.
+1997.
+(Work in progress; see updates to RFC1738.)</bibl>
+
+<bibl id='ABK' key='Br&#252;ggemann-Klein'>Br&#252;ggemann-Klein, Anne.
+<emph>Regular Expressions into Finite Automata</emph>.
+Extended abstract in I. Simon, Hrsg., LATIN 1992,
+S. 97-98. Springer-Verlag, Berlin 1992.
+Full Version in Theoretical Computer Science 120: 197-213, 1993.
+<!--
+Universitat Freiburg, Institut fur Informatik,
+Bericht 33, Juli 1991.-->
+</bibl>
+
+<bibl id='ABKDW' key='Br&#252;ggemann-Klein and Wood'>Br&#252;ggemann-Klein, Anne,
+and Derick Wood.
+<emph>Deterministic Regular Languages</emph>.
+Universit&#228;t Freiburg, Institut f&#252;r Informatik,
+Bericht 38, Oktober 1991.
+</bibl>
+
+<bibl id="RFC1738" xml-link="simple" key="IETF RFC1738">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1738: Uniform Resource Locators (URL)</emph>,
+ed. T. Berners-Lee, L. Masinter, M. McCahill.
+1994.
+</bibl>
+
+<bibl id="RFC1808" xml-link="simple" key="IETF RFC1808">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1808: Relative Uniform Resource Locators</emph>,
+ed. R. Fielding.
+1995.
+</bibl>
+
+<bibl id="RFC2141" xml-link="simple" key="IETF RFC2141">
+IETF (Internet Engineering Task Force).
+<emph>RFC 2141: URN Syntax</emph>,
+ed. R. Moats.
+1997.
+</bibl>
+
+<bibl id='ISO8879' key='ISO/IEC 8879'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 8879-1986 (E). Information processing &mdash; Text and Office
+Systems &mdash; Standard Generalized Markup Language (SGML).</emph> First
+edition &mdash; 1986-10-15. [Geneva]: International Organization for
+Standardization, 1986.
+</bibl>
+
+
+<bibl id='ISO10744' key='ISO/IEC 10744'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10744-1992 (E). Information technology &mdash;
+Hypermedia/Time-based Structuring Language (HyTime).
+</emph>
+[Geneva]: International Organization for
+Standardization, 1992.
+<emph>Extended Facilities Annexe.</emph>
+[Geneva]: International Organization for
+Standardization, 1996.
+</bibl>
+
+
+
+</blist>
+</div2>
+</div1>
+<div1 id='CharClasses'>
+<head>$BJ8;z%/%i%9(B</head>
+
+<p>Unicode$BI8=`$KDj5A$9$k(B&property;$B$K$7$?$,$C$F!$J8;z$O!$(B&base-character;(BaseChar)($B$3$l$i$O!$(B&diacritical-mark;$B$r=|$/%i%F%s%"%k%U%!%Y%C%H$N%"%k%U%!%Y%C%HJ8;z$r4^$`(B)$B!$(B&ideographic;(ideographic)$B5Z$S(B&combining-character;(CombiningChar)($B$3$N%/%i%9$O!$$[$H$s$I$N(B&diacritical-mark;$B$r4^$`(B)$B$K%/%i%9J,$1$9$k!#$3$l$i$N%/%i%9$O!$7k9g$7!$(B&letter;(Letter)$B$N%/%i%9$H$J$k!#(B10$B?J?tCM(B(Digit)$B5Z$S(B&extender;(Extender)$B$b6hJL$9$k!#(B
+<scrap lang="ebnf" id="CHARACTERS">
+<head>$BJ8;z(B</head>
+<prodgroup pcw3="3" pcw4="15">
+<prod id="NT-Letter"><lhs>Letter</lhs>
+<rhs><nt def="NT-BaseChar">BaseChar</nt>
+| <nt def="NT-Ideographic">Ideographic</nt></rhs> </prod>
+<prod id='NT-BaseChar'><lhs>BaseChar</lhs>
+<rhs>[#x0041-#x005A]
+|&nbsp;[#x0061-#x007A]
+|&nbsp;[#x00C0-#x00D6]
+|&nbsp;[#x00D8-#x00F6]
+|&nbsp;[#x00F8-#x00FF]
+|&nbsp;[#x0100-#x0131]
+|&nbsp;[#x0134-#x013E]
+|&nbsp;[#x0141-#x0148]
+|&nbsp;[#x014A-#x017E]
+|&nbsp;[#x0180-#x01C3]
+|&nbsp;[#x01CD-#x01F0]
+|&nbsp;[#x01F4-#x01F5]
+|&nbsp;[#x01FA-#x0217]
+|&nbsp;[#x0250-#x02A8]
+|&nbsp;[#x02BB-#x02C1]
+|&nbsp;#x0386
+|&nbsp;[#x0388-#x038A]
+|&nbsp;#x038C
+|&nbsp;[#x038E-#x03A1]
+|&nbsp;[#x03A3-#x03CE]
+|&nbsp;[#x03D0-#x03D6]
+|&nbsp;#x03DA
+|&nbsp;#x03DC
+|&nbsp;#x03DE
+|&nbsp;#x03E0
+|&nbsp;[#x03E2-#x03F3]
+|&nbsp;[#x0401-#x040C]
+|&nbsp;[#x040E-#x044F]
+|&nbsp;[#x0451-#x045C]
+|&nbsp;[#x045E-#x0481]
+|&nbsp;[#x0490-#x04C4]
+|&nbsp;[#x04C7-#x04C8]
+|&nbsp;[#x04CB-#x04CC]
+|&nbsp;[#x04D0-#x04EB]
+|&nbsp;[#x04EE-#x04F5]
+|&nbsp;[#x04F8-#x04F9]
+|&nbsp;[#x0531-#x0556]
+|&nbsp;#x0559
+|&nbsp;[#x0561-#x0586]
+|&nbsp;[#x05D0-#x05EA]
+|&nbsp;[#x05F0-#x05F2]
+|&nbsp;[#x0621-#x063A]
+|&nbsp;[#x0641-#x064A]
+|&nbsp;[#x0671-#x06B7]
+|&nbsp;[#x06BA-#x06BE]
+|&nbsp;[#x06C0-#x06CE]
+|&nbsp;[#x06D0-#x06D3]
+|&nbsp;#x06D5
+|&nbsp;[#x06E5-#x06E6]
+|&nbsp;[#x0905-#x0939]
+|&nbsp;#x093D
+|&nbsp;[#x0958-#x0961]
+|&nbsp;[#x0985-#x098C]
+|&nbsp;[#x098F-#x0990]
+|&nbsp;[#x0993-#x09A8]
+|&nbsp;[#x09AA-#x09B0]
+|&nbsp;#x09B2
+|&nbsp;[#x09B6-#x09B9]
+|&nbsp;[#x09DC-#x09DD]
+|&nbsp;[#x09DF-#x09E1]
+|&nbsp;[#x09F0-#x09F1]
+|&nbsp;[#x0A05-#x0A0A]
+|&nbsp;[#x0A0F-#x0A10]
+|&nbsp;[#x0A13-#x0A28]
+|&nbsp;[#x0A2A-#x0A30]
+|&nbsp;[#x0A32-#x0A33]
+|&nbsp;[#x0A35-#x0A36]
+|&nbsp;[#x0A38-#x0A39]
+|&nbsp;[#x0A59-#x0A5C]
+|&nbsp;#x0A5E
+|&nbsp;[#x0A72-#x0A74]
+|&nbsp;[#x0A85-#x0A8B]
+|&nbsp;#x0A8D
+|&nbsp;[#x0A8F-#x0A91]
+|&nbsp;[#x0A93-#x0AA8]
+|&nbsp;[#x0AAA-#x0AB0]
+|&nbsp;[#x0AB2-#x0AB3]
+|&nbsp;[#x0AB5-#x0AB9]
+|&nbsp;#x0ABD
+|&nbsp;#x0AE0
+|&nbsp;[#x0B05-#x0B0C]
+|&nbsp;[#x0B0F-#x0B10]
+|&nbsp;[#x0B13-#x0B28]
+|&nbsp;[#x0B2A-#x0B30]
+|&nbsp;[#x0B32-#x0B33]
+|&nbsp;[#x0B36-#x0B39]
+|&nbsp;#x0B3D
+|&nbsp;[#x0B5C-#x0B5D]
+|&nbsp;[#x0B5F-#x0B61]
+|&nbsp;[#x0B85-#x0B8A]
+|&nbsp;[#x0B8E-#x0B90]
+|&nbsp;[#x0B92-#x0B95]
+|&nbsp;[#x0B99-#x0B9A]
+|&nbsp;#x0B9C
+|&nbsp;[#x0B9E-#x0B9F]
+|&nbsp;[#x0BA3-#x0BA4]
+|&nbsp;[#x0BA8-#x0BAA]
+|&nbsp;[#x0BAE-#x0BB5]
+|&nbsp;[#x0BB7-#x0BB9]
+|&nbsp;[#x0C05-#x0C0C]
+|&nbsp;[#x0C0E-#x0C10]
+|&nbsp;[#x0C12-#x0C28]
+|&nbsp;[#x0C2A-#x0C33]
+|&nbsp;[#x0C35-#x0C39]
+|&nbsp;[#x0C60-#x0C61]
+|&nbsp;[#x0C85-#x0C8C]
+|&nbsp;[#x0C8E-#x0C90]
+|&nbsp;[#x0C92-#x0CA8]
+|&nbsp;[#x0CAA-#x0CB3]
+|&nbsp;[#x0CB5-#x0CB9]
+|&nbsp;#x0CDE
+|&nbsp;[#x0CE0-#x0CE1]
+|&nbsp;[#x0D05-#x0D0C]
+|&nbsp;[#x0D0E-#x0D10]
+|&nbsp;[#x0D12-#x0D28]
+|&nbsp;[#x0D2A-#x0D39]
+|&nbsp;[#x0D60-#x0D61]
+|&nbsp;[#x0E01-#x0E2E]
+|&nbsp;#x0E30
+|&nbsp;[#x0E32-#x0E33]
+|&nbsp;[#x0E40-#x0E45]
+|&nbsp;[#x0E81-#x0E82]
+|&nbsp;#x0E84
+|&nbsp;[#x0E87-#x0E88]
+|&nbsp;#x0E8A
+|&nbsp;#x0E8D
+|&nbsp;[#x0E94-#x0E97]
+|&nbsp;[#x0E99-#x0E9F]
+|&nbsp;[#x0EA1-#x0EA3]
+|&nbsp;#x0EA5
+|&nbsp;#x0EA7
+|&nbsp;[#x0EAA-#x0EAB]
+|&nbsp;[#x0EAD-#x0EAE]
+|&nbsp;#x0EB0
+|&nbsp;[#x0EB2-#x0EB3]
+|&nbsp;#x0EBD
+|&nbsp;[#x0EC0-#x0EC4]
+|&nbsp;[#x0F40-#x0F47]
+|&nbsp;[#x0F49-#x0F69]
+|&nbsp;[#x10A0-#x10C5]
+|&nbsp;[#x10D0-#x10F6]
+|&nbsp;#x1100
+|&nbsp;[#x1102-#x1103]
+|&nbsp;[#x1105-#x1107]
+|&nbsp;#x1109
+|&nbsp;[#x110B-#x110C]
+|&nbsp;[#x110E-#x1112]
+|&nbsp;#x113C
+|&nbsp;#x113E
+|&nbsp;#x1140
+|&nbsp;#x114C
+|&nbsp;#x114E
+|&nbsp;#x1150
+|&nbsp;[#x1154-#x1155]
+|&nbsp;#x1159
+|&nbsp;[#x115F-#x1161]
+|&nbsp;#x1163
+|&nbsp;#x1165
+|&nbsp;#x1167
+|&nbsp;#x1169
+|&nbsp;[#x116D-#x116E]
+|&nbsp;[#x1172-#x1173]
+|&nbsp;#x1175
+|&nbsp;#x119E
+|&nbsp;#x11A8
+|&nbsp;#x11AB
+|&nbsp;[#x11AE-#x11AF]
+|&nbsp;[#x11B7-#x11B8]
+|&nbsp;#x11BA
+|&nbsp;[#x11BC-#x11C2]
+|&nbsp;#x11EB
+|&nbsp;#x11F0
+|&nbsp;#x11F9
+|&nbsp;[#x1E00-#x1E9B]
+|&nbsp;[#x1EA0-#x1EF9]
+|&nbsp;[#x1F00-#x1F15]
+|&nbsp;[#x1F18-#x1F1D]
+|&nbsp;[#x1F20-#x1F45]
+|&nbsp;[#x1F48-#x1F4D]
+|&nbsp;[#x1F50-#x1F57]
+|&nbsp;#x1F59
+|&nbsp;#x1F5B
+|&nbsp;#x1F5D
+|&nbsp;[#x1F5F-#x1F7D]
+|&nbsp;[#x1F80-#x1FB4]
+|&nbsp;[#x1FB6-#x1FBC]
+|&nbsp;#x1FBE
+|&nbsp;[#x1FC2-#x1FC4]
+|&nbsp;[#x1FC6-#x1FCC]
+|&nbsp;[#x1FD0-#x1FD3]
+|&nbsp;[#x1FD6-#x1FDB]
+|&nbsp;[#x1FE0-#x1FEC]
+|&nbsp;[#x1FF2-#x1FF4]
+|&nbsp;[#x1FF6-#x1FFC]
+|&nbsp;#x2126
+|&nbsp;[#x212A-#x212B]
+|&nbsp;#x212E
+|&nbsp;[#x2180-#x2182]
+|&nbsp;[#x3041-#x3094]
+|&nbsp;[#x30A1-#x30FA]
+|&nbsp;[#x3105-#x312C]
+|&nbsp;[#xAC00-#xD7A3]
+</rhs></prod>
+<prod id='NT-Ideographic'><lhs>Ideographic</lhs>
+<rhs>[#x4E00-#x9FA5]
+|&nbsp;#x3007
+|&nbsp;[#x3021-#x3029]
+</rhs></prod>
+<prod id='NT-CombiningChar'><lhs>CombiningChar</lhs>
+<rhs>[#x0300-#x0345]
+|&nbsp;[#x0360-#x0361]
+|&nbsp;[#x0483-#x0486]
+|&nbsp;[#x0591-#x05A1]
+|&nbsp;[#x05A3-#x05B9]
+|&nbsp;#x05BB#x05BD
+|&nbsp;#x05BF
+|&nbsp;[#x05C1-#x05C2]
+|&nbsp;#x05C4
+|&nbsp;#x064B#x0652
+|&nbsp;#x0670
+|&nbsp;[#x06D6-#x06DC]
+|&nbsp;#x06DD#x06DF
+|&nbsp;[#x06E0-#x06E4]
+|&nbsp;[#x06E7-#x06E8]
+|&nbsp;[#x06EA-#x06ED]
+|&nbsp;[#x0901-#x0903]
+|&nbsp;#x093C
+|&nbsp;[#x093E-#x094C]
+|&nbsp;#x094D
+|&nbsp;[#x0951-#x0954]
+|&nbsp;[#x0962-#x0963]
+|&nbsp;[#x0981-#x0983]
+|&nbsp;#x09BC
+|&nbsp;#x09BE
+|&nbsp;#x09BF
+|&nbsp;[#x09C0-#x09C4]
+|&nbsp;[#x09C7-#x09C8]
+|&nbsp;[#x09CB-#x09CD]
+|&nbsp;#x09D7
+|&nbsp;[#x09E2-#x09E3]
+|&nbsp;#x0A02
+|&nbsp;#x0A3C
+|&nbsp;#x0A3E
+|&nbsp;#x0A3F
+|&nbsp;[#x0A40-#x0A42]
+|&nbsp;[#x0A47-#x0A48]
+|&nbsp;[#x0A4B-#x0A4D]
+|&nbsp;[#x0A70-#x0A71]
+|&nbsp;[#x0A81-#x0A83]
+|&nbsp;#x0ABC
+|&nbsp;[#x0ABE-#x0AC5]
+|&nbsp;[#x0AC7-#x0AC9]
+|&nbsp;[#x0ACB-#x0ACD]
+|&nbsp;[#x0B01-#x0B03]
+|&nbsp;#x0B3C
+|&nbsp;[#x0B3E-#x0B43]
+|&nbsp;[#x0B47-#x0B48]
+|&nbsp;[#x0B4B-#x0B4D]
+|&nbsp;[#x0B56-#x0B57]
+|&nbsp;[#x0B82-#x0B83]
+|&nbsp;[#x0BBE-#x0BC2]
+|&nbsp;[#x0BC6-#x0BC8]
+|&nbsp;[#x0BCA-#x0BCD]
+|&nbsp;#x0BD7
+|&nbsp;[#x0C01-#x0C03]
+|&nbsp;[#x0C3E-#x0C44]
+|&nbsp;[#x0C46-#x0C48]
+|&nbsp;[#x0C4A-#x0C4D]
+|&nbsp;[#x0C55-#x0C56]
+|&nbsp;[#x0C82-#x0C83]
+|&nbsp;[#x0CBE-#x0CC4]
+|&nbsp;[#x0CC6-#x0CC8]
+|&nbsp;[#x0CCA-#x0CCD]
+|&nbsp;[#x0CD5-#x0CD6]
+|&nbsp;[#x0D02-#x0D03]
+|&nbsp;[#x0D3E-#x0D43]
+|&nbsp;[#x0D46-#x0D48]
+|&nbsp;[#x0D4A-#x0D4D]
+|&nbsp;#x0D57
+|&nbsp;#x0E31
+|&nbsp;[#x0E34-#x0E3A]
+|&nbsp;[#x0E47-#x0E4E]
+|&nbsp;#x0EB1
+|&nbsp;[#x0EB4-#x0EB9]
+|&nbsp;[#x0EBB-#x0EBC]
+|&nbsp;[#x0EC8-#x0ECD]
+|&nbsp;[#x0F18-#x0F19]
+|&nbsp;#x0F35
+|&nbsp;#x0F37
+|&nbsp;#x0F39
+|&nbsp;#x0F3E
+|&nbsp;#x0F3F
+|&nbsp;[#x0F71-#x0F84]
+|&nbsp;[#x0F86-#x0F8B]
+|&nbsp;[#x0F90-#x0F95]
+|&nbsp;#x0F97
+|&nbsp;[#x0F99-#x0FAD]
+|&nbsp;[#x0FB1-#x0FB7]
+|&nbsp;#x0FB9
+|&nbsp;[#x20D0-#x20DC]
+|&nbsp;#x20E1
+|&nbsp;[#x302A-#x302F]
+|&nbsp;#x3099
+|&nbsp;#x309A
+</rhs></prod>
+<prod id='NT-Digit'><lhs>Digit</lhs>
+<rhs>[#x0030-#x0039]
+|&nbsp;[#x0660-#x0669]
+|&nbsp;[#x06F0-#x06F9]
+|&nbsp;[#x0966-#x096F]
+|&nbsp;[#x09E6-#x09EF]
+|&nbsp;[#x0A66-#x0A6F]
+|&nbsp;[#x0AE6-#x0AEF]
+|&nbsp;[#x0B66-#x0B6F]
+|&nbsp;[#x0BE7-#x0BEF]
+|&nbsp;[#x0C66-#x0C6F]
+|&nbsp;[#x0CE6-#x0CEF]
+|&nbsp;[#x0D66-#x0D6F]
+|&nbsp;[#x0E50-#x0E59]
+|&nbsp;[#x0ED0-#x0ED9]
+|&nbsp;[#x0F20-#x0F29]
+</rhs></prod>
+<prod id='NT-Extender'><lhs>Extender</lhs>
+<rhs>#x00B7
+|&nbsp;#x02D0
+|&nbsp;#x02D1
+|&nbsp;#x0387
+|&nbsp;#x0640
+|&nbsp;#x0E46
+|&nbsp;#x0EC6
+|&nbsp;#x3005
+|&nbsp;[#x3031-#x3035]
+|&nbsp;[#x309D-#x309E]
+|&nbsp;[#x30FC-#x30FE]
+</rhs></prod>
+
+</prodgroup>
+</scrap>
+</p>
+<p>$B$3$3$GDj5A$9$kJ8;z%/%i%9$O!$(BUnicode$BJ8;z%G!<%?%Y!<%9$+$i!$<!$N$H$*$j$KF@$k$3$H$,$G$-$k!#(B
+<ulist>
+<item>
+<p>a) $BL>A03+;OJ8;z$O!$(BLl, Lu, Lo, Lt, Nl$B%+%F%4%jFb$N0l$D$G$J$1$l$P$J$i$J$$!#(B</p>
+</item>
+<item>
+<p>b) $BL>A03+;OJ8;z0J30$NL>A0J8;z$O!$(BMc, Me, Mn, Lm, Nd$B%+%F%4%jFb$N0l$D$G$J$1$l$P$J$i$J$$!#(B</p>
+</item>
+<item>
+<p>c) &compatibility-area;$B$K$"$kJ8;z(B($BJ8;zId9f$G(B#xF900$B$h$jBg$-$/(B#xFFFE$B$h$j>.$5$$J8;z(B)$B$O!$(BXML$B$K$*$1$kL>A0$H$7$F$O!$5v$5$l$J$$!#(B</p>
+</item>
+<item>
+<p>d) &font-decomposition;$B$+(B&compatibility-decomposition;$B$r$b$DJ8;z(B($B$D$^$j!$%G!<%?%Y!<%9Fb$N#5HVL\$N%U%#!<%k%I$K(B"compatibility formatting tag"$B$,$"$k$b$N!#$3$l$O!$#5HVL\$N%U%#!<%k%I$,!$(B"&lt;"$B$G;O$^$k$3$H$K$h$C$F%^!<%/IU$1$5$l$k!#(B)$B$O!$5v$5$l$J$$!#(B</p>
+</item>
+<item>
+<p>e) $B<!$NJ8;z$O!$L>A03+;OJ8;z$H$7$F07$&!#$3$l$O!$(B&property-file;$B$,!$$3$l$i$NJ8;z$r%"%k%U%!%Y%C%H$KN`;w$9$k$H8+$J$9$3$H$K$h$k!#$=$l$i$O(B
+[#x02BB-#x02C1], #x0559, #x06E5, #x06E6$B$H$9$k!#(B</p>
+</item>
+<item>
+<p>f) $BJ8;zId9f$,(B#x20DD-#x20E0$B$NJ8;z$O!$(B(Unicode $B$N(B5.14$B$K$7$?$,$C$F(B)$B=|30$9$k!#(B</p>
+</item>
+<item>
+<p>g) $BJ8;zId9f$,(B#x00B7$B$NJ8;z$O!$(B&property-list;$B$K$7$?$,$C$F!$(B&extender;(extender)$B$KJ,N`$9$k!#(B</p>
+</item>
+<item>
+<p>h) $BJ8;z(B#x0387$B$O!$$3$l$KAjEv$9$k@55,7A$,(B#x00B7$B$J$N$G!$L>A0J8;z$KDI2C$9$k!#(B</p>
+</item>
+<item>
+<p>i) $BJ8;z(B':'$B5Z$S(B'_'$B$O!$L>A03+;OJ8;z$H$7$F5v$9!#(B</p>
+</item>
+<item>
+<p>j) $BJ8;z(B'-'$B5Z$S(B'.'$B$O!$L>A0J8;z$H$7$F5v$9!#(B</p>
+</item>
+</ulist>
+</p>
+</div1>
+<inform-div1 id="sec-xml-and-sgml">
+<head>XML$B5Z$S(BSGML</head>
+
+<p>XML$B$O!$(BSGML$B$N(B&subset;$B$H$7$F@_7W$5$l$F$$$k!#$9$J$o$A!$$9$Y$F$N(B<termref def="dt-valid">&valid;</termref>$B$J(BXML$BJ8=q$O!$5,3J$KE,9g$9$k(BSGML$BJ8=q$K$b$J$k!#(BSGML$B$,J8=q$K2]$9@)8B0J30$K!$(BXML$B$,$$$+$J$k@)8B$r2]$9$+$K4X$9$k>\:Y$O!$JL$N(B<loc href='http://www.w3.org/TR/NOTE-sgml-xml'>$B5,Dx(B</loc>$B$r;2>H$N$3$H!#$3$N5,Dx$O!$(BXML$B$N@)Ls>r7o$r<($9(BSGML$B@k8@$r4^$_!$$3$l$O!$(BSGML&parser;$B$K;HMQ$G$-$k!#(B
+</p>
+</inform-div1>
+<inform-div1 id="sec-entexpand">
+<head>$B<BBN;2>H5Z$SJ8;z;2>H$NE83+(B</head>
+<p>$B$3$NIUO?$O!$<BBN;2>H5Z$SJ8;z;2>H$rG'<1$7!$E83+$9$k!$0lO"$NN.$l$r!$Nc$K;H$C$F<($9!#(B</p>
+<p>
+DTD$B$,!$<!$N@k8@$r4^$`>l9g$r9M$($k!#(B
+<eg><![CDATA[<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
+numerically (&#38;#38;#38;) or with a general entity
+(&amp;amp;).</p>" >
+]]></eg>
+XML&processor;$B$O!$<BBN$N@k8@$r9=J82r@O$7$?;~E@$GJ8;z;2>H$rG'<1$7!$$3$l$r2r7h$9$k!#<BBN(B"<code>example</code>"$B$NCM$H$7$F!$<!$N(B&string;$B$rJ]B8$9$k!#(B
+<eg><![CDATA[<p>An ampersand (&#38;) may be escaped
+numerically (&#38;#38;) or with a general entity
+(&amp;amp;).</p>
+]]></eg>
+$BJ8=qFb$G(B"<code>&amp;example;</code>"$B$r;2>H$9$k$H!$$3$N%F%-%9%H$O!$:F$S9=J82r@O$5$l$k!#$3$N$H$-!$MWAG(B"<code>p</code>"$B$N3+;O%?%05Z$S=*N;%?%0$rG'<1$7!$;0$D$N;2>H$rG'<1$7E83+$9$k!#$=$N7k2L!$MWAG(B"<code>p</code>"$B$O!$<!$NFbMF$r$b$D(B($B$9$Y$F%G!<%?$H$7!$6h@Z$j;RKt$O(B&markup;$B$OB8:_$7$J$$!#(B)$B!#(B
+<eg><![CDATA[An ampersand (&) may be escaped
+numerically (&#38;) or with a general entity
+(&amp;).
+]]></eg>
+</p>
+<p>$B5,B'5Z$S$=$N8z2L$r$h$j>\:Y$K<($9$?$a!$$5$i$KJ#;($JNc$r<($9!#<!$NNc$G!$9THV9f$O!$;2>H$NJX59$N$?$a$@$1$KIU$1$k!#(B
+<eg><![CDATA[1 <?xml version='1.0'?>
+2 <!DOCTYPE test [
+3 <!ELEMENT test (#PCDATA) >
+4 <!ENTITY % xx '&#37;zz;'>
+5 <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
+6 %xx;
+7 ]>
+8 <test>This sample shows a &tricky; method.</test>
+]]></eg>
+$B$3$l$r=hM}$9$k$H!$<!$N$H$*$j$H$J$k!#(B
+<ulist spacing="compact">
+<item><p>a) 4$B9TL\$G!$(B37$BHVL\$NJ8;z$X$N;2>H$rD>$A$KE83+$7!$%Q%i%a%?<BBN(B"<code>xx</code>"$B$r!$%7%s%\%k%F!<%V%k$K(B"<code>%zz;</code>"$B$H$$$&CM$H$H$b$KJ]B8$9$k!#(B&replacement-text;$B$r:F$SAv::$9$k$3$H$O$J$$$N$G!$%Q%i%a%?<BBN(B"<code>zz</code>"$B$X$N;2>H$OG'<1$7$J$$(B("<code>zz</code>"$B$O!$$^$@@k8@$5$l$F$$$J$$$N$G!$Av::$5$l$l$P!$(B&error;$B$H$J$k!#(B)$B!#(B</p></item>
+<item><p>b) 5$B9TL\$G!$J8;z;2>H(B"<code>&amp;#60;</code>"$B$rD>$A$KE83+$7!$%Q%i%a%?<BBN(B"<code>zz</code>"$B$r(B"<code>&lt;!ENTITY tricky "error-prone" ></code>"$B$H$$$&(B&replacement-text;$B$H$H$b$KJ]B8$9$k!#$3$l$O!$(B&well-formed;$B$N<BBN@k8@$H$9$k!#(B</p></item>
+<item><p>c) 6$B9TL\$G!$(B"<code>xx</code>"$B$X$N;2>H$rG'<1$7!$(B"<code>xx</code>"$B$N(B&replacement-text;($B$9$J$o$A!$(B"<code>%zz;</code>")$B$r9=J82r@O$9$k!#(B"<code>zz</code>"$B$X$N;2>H$rB3$$$FG'<1$7!$(B&replacement-text;("<code>&lt;!ENTITY tricky "error-prone" ></code>")$B$r9=J82r@O$9$k!#0lHL<BBN(B"<code>tricky</code>"$B$O!$$3$N;~E@$G$O!$@k8@$5$l$F$*$j!$$=$N(B&replacement-text;$B$O!$(B"<code>error-prone</code>"$B$H$9$k!#(B </p></item>
+<item><p>d) 8$B9TL\$G!$0lHL<BBN(B"<code>tricky</code>"$B$X$N;2>H$rG'<1$7!$E83+$9$k!#MWAG(B"<code>test</code>"$B$N40A4$JFbMF$O!$<!$N(B($BFbMF$r$=$l<+BNI=8=$9$k!#(B)&string;$B$H$J$k!#$D$^$j!$(B<emph>This sample shows a error-prone method.</emph>
+</p></item>
+</ulist>
+</p>
+</inform-div1>
+<inform-div1 id="determinism">
+<head>$B7hDjE*FbMF%b%G%k(B</head>
+<p><termref def='dt-compat'>$B8_49@-$N$?$a(B</termref>$B!$MWAG@k8@$K$*$1$kFbMF%b%G%k$O!$7hDjE*$H$9$kI,MW$,$"$k!#(B
+</p>
+<!-- FINAL EDIT: WebSGML allows ambiguity? -->
+<p>SGML$B$O!$7hDjE*FbMF%b%G%k(B(SGML$B$G$O!$Hs$"$$$^$$$H8F$V!#(B)$B$rMW5a$9$k!#(BSGML$B%7%9%F%`$rMQ$$$F:n@.$7$?(BXML&processor;$B$O!$Hs7hDjE*FbMF%b%G%k$r(B&error;$B$H$7$F$b$h$$!#(B</p>
+<p>$BNc$($P!$FbMF%b%G%k(B<code>((b, c) | (b, d))</code>$B$OHs7hDjE*$H$J$k!#$3$l$O!$:G=i$K(B<code>b</code>$B$rM?$($?$H$-!$%b%G%kFb$N$$$:$l$N(B<code>b</code>$B$H(B&match;$B$9$k$N$,K>$^$7$$$+!$$=$N<!$NMWAG$r@hFI$_$9$k$3$H$J$7$K$O!$(B&parser;$B$OCN$k$3$H$,$G$-$J$$$3$H$K$h$k!#$3$N>l9g$O!$(B<code>b</code>$B$X$NFs$D$N;2>H$O!$0l$D$N;2>H$K$^$H$a$k$3$H$,$G$-!$%b%G%k$O!$(B<code>(b, (c | d))</code>$B$H$J$k!#$3$l$G!$:G=i$N(B<code>b</code>$B$,!$FbMF%b%G%kFb$N0l$D$NL>A0$H$@$1(B&match;$B$9$k$3$H$OL@$i$+$H$J$k!#(B&parser;$B$O!$@hFI$_$7$F!$<!$KMh$k$b$N$rCN$kI,MW$,$J$$!#(B<code>c</code>$B$b(B<code>d</code>$B$b!$<uM}$5$l$k!#(B</p>
+<p>$B7A<0E*$K<($9!#(BAho, Sethi, and Ullman <bibref ref='Aho'/>$B$N(B3.9$B$N%"%k%4%j%:%`(B3.5$B$NI8=`E*$J%"%k%4%j%:%`$rMQ$$$F!$FbMF%b%G%k$+$iM-8B%*!<%H%^%H%s$r9=@.$9$k$3$H$,$G$-$k!#$3$N<o$NB?$/$N%"%k%4%j%:%`$G$O!$@55,I=8=$K$*$1$k3F!9$N0LCV(B($B$D$^$j!$@55,I=8=$N9=J8LZ$K$*$1$k3F!9$NKvC<%N!<%I(B)$B$KBP$7$F!$(Bfollow set($B<!$K$I$N0LCV$K0\F02DG=$+$rI=$9$b$N(B)$B$r9=@.$9$k!#$"$k0LCV$KBP$9$k(Bfollow set$B$K$*$$$F!$J#?t$N0LCV$,F1$8MWAG7?L>$G%i%Y%kIU$1$5$l$F$$$l$P!$$=$NFbMF%b%G%k$O(B&error;$B$H$J$j!$(B&error;$B$rJV$9>l9g$b$"$k!#(B
+</p>
+<p>$B$9$Y$F$NHs7hDjE*FbMF%b%G%k$rEy2A$J7hDjE*FbMF%b%G%k$KJQ49$9$k$3$H$O$G$-$J$$$,!$B?$/$NHs7hDjE*FbMF%b%G%k$rJQ49$9$k%"%k%4%j%:%`$,B8:_$9$k!#(BBr&#252;ggemann-Klein 1991 <bibref ref='ABK'/>$B$r;2>H$N$3$H!#(B</p>
+</inform-div1>
+<inform-div1 id="sec-guessing">
+<head>$BJ8;zId9f2=$N<+F08!=P(B</head>
+<p>
+XML$B$NId9f2=@k8@$O!$3F<BBN$NFbIt%i%Y%k$H$7$F5!G=$7!$$I$NJ8;zId9f2=$r;HMQ$9$k$+$r<($9!#$7$+$7!$(BXML&processor;$B$O!$FbIt%i%Y%k$rFI$`A0$K!$$I$NJ8;zId9f2=$r;HMQ$9$k$+$rCN$kI,MW$,$"$j!$$3$l$,!$FbIt%i%Y%k$,<($=$&$H$9$k$3$H$K$J$k!#0lHLE*$K$O!$$3$l$O!$@dK>E*$J>uBV$H$J$k!#$7$+$7!$(BXML$B$K$*$$$F$O!$40A4$K$O@dK>E*$G$O$J$$!#$3$l$O!$(BXML$B$,!$<!$NFs$D$NE@$G0lHLE*$J>l9g$KBP$9$k@)8B$r2C$($k$3$H$K$h$k!#0l$D$N@)8B$O!$$I$N<BAu$bM-8B8D$NJ8;zId9f2=$@$1$N%5%]!<%H$rA[Dj$9$k$3$H$H$9$k!#B>$N0l$D$N@)8B$O!$3F<BBN$G;HMQ$9$kJ8;zId9f2=$r<+F08!=P2DG=$H$9$k!$(BXML$B$NId9f2=@k8@$N0LCV5Z$SFbMF$K4X$9$k@)8B$H$9$k!#B?$/$N>l9g$K!$(BXML$B$N%G!<%?%9%H%j!<%`$K2C$(!$B>$N>pJs$,MxMQ$G$-$k!#$3$3$G$O!$(BXML$B$N<BBN$,(B&processor;$B$KEO$5$l$k$H$-!$(B($B30It(B)$B>pJs$rH<$&$+$I$&$+$K$h$C$F!$Fs$D$N>l9g$KJ,$1$k!#$^$::G=i$N>l9g$r<($9!#(B</p>
+<p>
+UTF-8$B7A<0Kt$O(BUTF-16$B7A<0$G$O$J$$(BXML$B<BBN$O!$:G=i$NJ8;z$r!F(B<code>&lt;?xml</code>'$B$H$9$k(BXML$BId9f2=@k8@$G;O$^$i(B<emph>$B$J$1$l$P$J$i$J$$(B</emph>$B$N$G!$$I$NE,9g$7$?(B&processor;$B$b!$F~NO$K$"$k(B2$B%*%/%F%C%HKt$O(B4$B%*%/%F%C%H$rD4$Y$l$P!$<!$N$I$N>l9g$,$"$F$O$^$k$+$r8!=P$G$-$k!#$3$N%j%9%H$rFI$`:]$K$O!$(BUCS-4$B$N(B'&lt;'$B$,(B"<code>#x0000003C</code>"$B!$(B'?'$B$,(B"<code>#x0000003F</code>"$B!$5Z$S(BUTF-16$B$N%G!<%?(B&stream;$B$NI,MW$H$9$k(B&byte-order-mark;$B$,(B"<code>#xFEFF</code>"$B$H$$$&$3$H$rCN$C$F$*$/$HLrN)$D$+$b$7$l$J$$!#(B</p>
+<p>
+<ulist>
+<item>
+<p>a) <code>00 00 00 3C</code>: UCS-4, big-endian $B%^%7%s(B (1234$B=g(B)</p>
+</item>
+<item>
+<p>b) <code>3C 00 00 00</code>: UCS-4, little-endian $B%^%7%s(B (4321$B=g(B)</p>
+</item>
+<item>
+<p>c) <code>00 00 3C 00</code>: UCS-4, $BIaDL$G$O$J$$%*%/%F%C%H=g(B (2143)</p>
+</item>
+<item>
+<p>d) <code>00 3C 00 00</code>: UCS-4, $BIaDL$G$O$J$$%*%/%F%C%H=g(B (3412)</p>
+</item>
+<item>
+<p>e) <code>FE FF</code>: UTF-16, big-endian</p>
+</item>
+<item>
+<p>f) <code>FF FE</code>: UTF-16, little-endian</p>
+</item>
+<item>
+<p>g) <code>00 3C 00 3F</code>: UTF-16, big-endian, &byte-order-mark;$B$J$7(B($B$7$?$,$C$F!$87L)$K$$$($P!$(B&error;$B$H$9$k!#(B)$B!#(B</p>
+</item>
+<item>
+<p>h) <code>3C 00 3F 00</code>: UTF-16, little-endian, &byte-order-mark;$B$J$7(B($B$7$?$,$C$F!$87L)$K$$$($P!$(B&error;$B$H$9$k!#(B)$B!#(B</p>
+</item>
+<item>
+<p>i) <code>3C 3F 78 6D</code>: UTF-8, ISO 646, ASCII, ISO 8859$B$N3F%Q!<%H!$(BShift-JIS$B!$(BEUC$B!$JB$S$KG$0U$NB>$N(B7$B%S%C%H!$(B8$B%S%C%HKt$O:.:_I}$NId9f2=$G$"$C$F!$(BASCII$BJ8;z$rDL>o$N0LCV!$I}5Z$SCM$H$9$k$3$H$rJ]>Z$9$k$b$N!#$3$l$i$N$I$l$KBP1~$9$k$+$r8!=P$9$k$?$a$K$O!$<B:]$NId9f2=@k8@$rFI$_9~$^$J$1$l$P$J$i$J$$!#$7$+$7!$$3$l$i$9$Y$F$NId9f2=$O!$(BASCII$BJ8;z$KBP$7$FF1$8%S%C%H%Q%?!<%s$r;HMQ$9$k$N$G!$Id9f2=@k8@<+BN$O!$@53N$KFI9~$_2DG=$H$9$k!#(B
+</p>
+</item>
+<item>
+<p>j) <code>4C 6F A7 94</code>: EBCDIC ($BKt$O$=$NJQ<o!#$I$N%3!<%I%Z!<%8$r;HMQ$9$k$+$rCN$k$?$a$K$O!$Id9f2=@k8@A4BN$rFI$_9~$^$l$J$1$l$P$J$i$J$$!#(B)</p>
+</item>
+<item>
+<p>k) $B$=$NB>(B: $BId9f2=@k8@$J$7$N(BUTF-8$B!#$=$&$G$J$$$H$-$K$O!$%G!<%?(B&stream;$B$,2u$l$F$$$k$+!$CGJRE*$K$J$C$F$$$k$+!$2?$i$+$N7A<0$K$7$?$,$C$FKd$a9~$^$l$F$$$k!#(B</p>
+</item>
+</ulist>
+</p>
+<p>
+$B$3$NDxEY$N<+F0H=JL$G$b!$(BXML$B$NId9f2=@k8@$rFI$_9~$_!$J8;zId9f2=$N(B&identifier;$B$r2r@O$9$k$K$O==J,$H$9$k!#(B&identifier;$B$N2r@O$O!$N`;w$9$k3F!9$NId9f2=$N0l$D0l$D$r6hJL$9$k$?$a$KI,MW$H$9$k(B($BNc$($P!$(BUTF-8$B5Z$S(B8859$B$r6hJL$9$k$?$a!$(B8859$B$N3F%Q!<%H$r6hJL$9$k$?$a!$;HMQ$7$F$$$kFCDj$N(BEBCDIC$B%3!<%I%Z!<%8$r6hJL$9$k$?$a!$$J$I!#(B)$B!#(B
+</p>
+<p>
+$BId9f2=@k8@$NFbMF$r(BASCII$BJ8;z$K8BDj$7$F$$$k$N$G!$$I$NJ,N`$NId9f2=$r;HMQ$9$k$+$r8!=P$9$l$P!$(B&processor;$B$O!$Id9f2=@k8@A4BN$r@53N$KFI$_9~$`$3$H$,$G$-$k!#8=<BLdBj$H$7$F!$9-$/;HMQ$5$l$F$$$kJ8;zId9f2=$O!$>e$NJ,N`$N$$$:$l$+$K$"$F$O$^$k$N$G!$%*%Z%l!<%F%#%s%0%7%9%F%`Kt$OEAAw%W%m%H%3%k$,M?$($k30It>pJs$r?.MjIT2DG=$J$H$-$G$5$($b!$FbIt%i%Y%k$GJ8;zId9f2=$r$+$J$j@53N$K<($9$3$H$,!$(BXML$BId9f2=@k8@$K$h$C$F2DG=$H$J$k!#(B
+</p>
+<p>
+&processor;$B$,;HMQ$9$kJ8;zId9f2=$r8!=P$7$5$($9$l$P!$$=$l$>$l$N>l9g$KBP$7$FJL8D$NF~NO%k!<%A%s$r8F$S=P$9!$Kt$OF~NO$9$k3FJ8;z$KBP$7E,@Z$JJQ494X?t$r8F$S=P$9$3$H$K$h$C$F!$E,@Z$JF0:n$,2DG=$H$J$k!#(B</p>
+<p>
+$B<+J,<+BN$K%i%Y%kIU$1$r$9$k$$$+$J$k%7%9%F%`$G$bF1MM$@$,!$%=%U%H%&%'%"$,!$Id9f2=@k8@$r99?7$;$:$K<BBN$NJ8;z=89gKt$OId9f2=$rJQ$($?$J$i$P!$(BXML$B$NId9f2=@k8@$O!$5!G=$7$J$$!#J8;zId9f2=%k!<%A%s$N<BAu<T$O!$<BBN$N%i%Y%kIU$1$K;HMQ$9$kFbIt5Z$S30It$N>pJs$N@53N$5$NJ]>Z$KCm0U$9$k$N$,K>$^$7$$!#(B
+</p>
+<p>$B#2HVL\$N>l9g$O!$(BXML$B$N<BBN$NB>$K!$Id9f2=>pJs$,B8:_$9$k$H$-$G$"$C$F!$$$$/$D$+$N%U%!%$%k%7%9%F%`5Z$S%M%C%H%o!<%/%W%m%H%3%k$G$O!$$=$NId9f2=>pJs$,B8:_$9$k!#J#?t$N>pJs$,MxMQ$G$-$k$H$-!$(B<!-- (e.g. both the
+internal encoding declaration and an external label), -->$B$=$l$i$NAjBPE*$JM%@hEY5Z$S$=$l$i$,L7=b$7$?$H$-$NK>$^$7$$=hM}J}K!$O!$(BXML$B$NG[Aw$K;HMQ$9$k!$$h$j9b?e=`$N%W%m%H%3%k$N0lIt$H$7$F5,Dx$9$k$N$,$h$$!#Nc$($P!$FbIt%i%Y%k5Z$S30It(B&header;$B$KB8:_$9$k(BMIME$B7A<0$N%i%Y%k$NAjBPE*$JM%@hEY$KBP$9$k5,B'$O!$(Btext/xml$B5Z$S(Bapplication/xml$B$N(BMIME$B7?$rDj5A$9$k(BRFC$BJ8=q$N0lIt$H$J$kJ}$,$h$$!#$7$+$7!$Aj8_1?MQ@-$N$?$a$K!$<!$N5,B'$K=>$&$3$H$,K>$^$7$$!#(B
+<ulist>
+<item><p>a) XML$B$N<BBN$,%U%!%$%k$KB8:_$9$l$P!$(B&byte-order-mark;$B5Z$SId9f2=@k8@(BPI$B$O!$(B($BB8:_$9$l$P(B)$BJ8;zId9f2=$r7hDj$9$k$?$a$K;HMQ$9$k!#B>$N$9$Y$F$N(B&hueristics;$B5Z$S>pJs$O!$(B&error;$B2sI|$N$?$a$@$1$KMQ$$$k!#(B
+</p></item>
+<item><p>b) XML$B$N<BBN$r(BMIME$B7?(Btext/xml$B$GG[Aw$9$k$H$-$O!$$3$N(BMIME$B7?$N$b$D(Bcharset$B%Q%i%a%?$,J8;zId9f2=J}K!$r7hDj$9$k!#B>$N$9$Y$F$N(B&hueristics;$B5Z$S>pJs$O!$(B&error;$B2sI|$N$?$a$@$1$KMQ$$$k!#(B
+</p></item>
+<item><p>c) XML$B$N<BBN$r(B <!-- via the HTTP protocol -->MIME$B7?(Bapplication/xml$B$GG[Aw$9$k$H$-$O!$(B&byte-order-mark;$B5Z$SId9f2=@k8@(BPI$B$r(B($BB8:_$9$l$P(B)$BJ8;zId9f2=$N7hDj$N$?$a$K;HMQ$9$k!#B>$N$9$Y$F$N(B&hueristics;$B5Z$S>pJs$O(B&error;$B2sI|$N$?$a$@$1$KMQ$$$k!#(B
+</p></item>
+</ulist>
+$B$3$l$i$N5,B'$O!$%W%m%H%3%k$K$D$$$F$N;qNA$,$J$$$H$-$K$@$1MQ$$$k!#FC$K!$(BMIME$B7?(Btext/xml$B5Z$S(Bapplication/xml$B$rDj5A$7$?$i!$$3$l$i$r5,Dj$9$k(BRFC$B$KB8:_$9$k5,Dj$,!$$3$l$i$N5,B'$K<h$C$FBe$o$k!#(B
+</p>
+</inform-div1>
+<!--
+<div1 id='sec-trival-grammar'>
+<head>A Trivial Grammar for XML Documents</head>
+<p>The grammar given in the body of this specification is relatively
+simple, but for some purposes it is convenient to have an even simpler
+one.
+A very simple, though non-conforming, <termref def="dt-xml-proc">XML
+processor</termref> could parse a <termref
+def="dt-wellformed">well-formed</termref> XML document using the
+following simplified grammar, recognizing all element boundaries
+correctly, though not expanding entity references and not detecting
+all errors:
+
+<scrap lang="ebnf">
+<head>Trivial text grammar</head>
+<prodgroup pcw2="5.5" pcw4="17" pcw5="10">
+<prod id='NT-simpleDoc'><lhs>simpleDoc</lhs>
+<rhs>(<nt def='NT-SimpleData'>SimpleData</nt>
+| <nt def='NT-Markup'>Markup</nt>)*</rhs></prod>
+<prod id="NT-SimpleData"><lhs>SimpleData</lhs>
+<rhs>[^&lt;&amp;]*</rhs>
+<com>cf. PCData</com>
+</prod>
+<prod id="NT-SimpleLit"><lhs>SimpleLit</lhs>
+<rhs>('"' [^"]* '"')</rhs>
+<rhs>|&nbsp;("'" [^']* "'")</rhs>
+<com>cf. SkipLit</com>
+</prod>
+<prod id='NT-Markup'><lhs>Markup</lhs>
+<rhs>'&lt;' <nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?
+<nt def='NT-SimpleLit'>SimpleLit</nt>)*
+<nt def='NT-S'>S</nt>? '&gt;'</rhs><com>start-tags </com>
+<rhs>| '&lt;' <nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?
+<nt def='NT-SimpleLit'>SimpleLit</nt>)*
+<nt def='NT-S'>S</nt>? '/&gt;'</rhs><com>empty elements</com>
+<rhs>| '&lt;/'
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+<com>end-tags </com>
+<rhs>| '&amp;' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<com>entity references </com>
+<rhs>| '&amp;#' [0-9]+ ';'</rhs>
+<com>decimal character references </com>
+<rhs>| '&hcro;' [0-9a-fA-F]+ ';'</rhs>
+<com>hexadecimal character references </com>
+<rhs>| '&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>
+<com>comments </com>
+<rhs>| '&lt;?'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*))
+'&pic;'</rhs>
+<com>processing instructions </com>
+<rhs>| '&lt;![CDATA['
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+']]&gt;'</rhs>
+<com>CDATA sections</com>
+<rhs>| '&lt;!DOCTYPE'
+(<nt def="NT-Char">Char</nt> - ('[' | ']'))+
+('['
+<nt def="NT-simpleDTD">simpleDTD</nt>*
+']')? '&gt;'</rhs>
+<com>doc type declaration</com>
+</prod>
+<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs>
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>
+<com>comment </com>
+<rhs>| '&lt;?'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*))
+'&pic;'</rhs>
+<com>processing instruction </com>
+<rhs><nt def="NT-SimpleLit">SimpleLit</nt></rhs>
+<rhs>(<nt def="NT-Char">Char</nt> - (']' | '&lt;' | '"' | "'"))+
+</rhs>
+
+<rhs>'&lt;!' (<nt def="NT-Char">Char</nt> - ('-'))+</rhs>
+<com>declarations other than comment</com>
+</prod>
+</prodgroup>
+</scrap>
+Most processors will require the more complex
+grammar given in the body of this specification.
+
+</p>
+</div1>
+-->
+
+<inform-div1 id="sec-xml-wg">
+<head>&informative;W3C XML $B%o!<%-%s%0%0%k!<%W(B</head>
+
+<p>$B$3$N(B&TR-or-Rec;$B$O!$(BW3C XML $B%o!<%-%s%0%0%k!<%W(B(WG)$B$,=`Hw$7!$8x3+$r>5G'$7$?!#(BWG$B$,$3$N(B&TR-or-Rec;$B$r>5G'$9$k$H$$$&$3$H$O!$(BWG$B$N$9$Y$F$N0Q0w$,>5G'EjI<$r9T$C$?$H$$$&$3$H$rI,$:$7$b0UL#$7$J$$!#(BXML WG$B$N8=:_$N0Q0w5Z$S0JA0$N0Q0w$r<!$K<($9!#(B</p>
+
+<!-- parens and spaces removed from role elements by bosak 1997.11.07 -->
+<orglist>
+<member><name>Jon Bosak, Sun</name><role>Chair</role></member>
+<member><name>James Clark</name><role>Technical Lead</role></member>
+<member><name>Tim Bray, Textuality and Netscape</name><role>XML Co-editor</role></member>
+<member><name>Jean Paoli, Microsoft</name><role>XML Co-editor</role></member>
+<member><name>C. M. Sperberg-McQueen, U. of Ill.</name><role>XML Co-editor</role></member>
+<member><name>Dan Connolly, W3C</name></member>
+<member><name>Steve DeRose, INSO</name></member>
+<member><name>Dave Hollander, HP</name></member>
+<member><name>Eliot Kimber, Highland</name></member>
+<member><name>Eve Maler, ArborText</name></member>
+<member><name>Tom Magliery, NCSA</name></member>
+<member><name>Murray Maloney, Muzmo and Grif</name></member>
+<member><name>$BB<ED!!??!$IY;N%<%m%C%/%9>pJs%7%9%F%`(B($B3t(B)</name></member>
+<member><name>Joel Nava, Adobe</name></member>
+<member><name>Peter Sharpe, SoftQuad</name></member>
+<member><name>John Tigue, DataChannel</name></member>
+</orglist>
+
+</inform-div1>
+</back>
+</spec>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+End:
+-->
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-little-endian.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-little-endian.xml
new file mode 100644
index 0000000000..c12e1a1217
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-little-endian.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-shift_jis.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-shift_jis.xml
new file mode 100644
index 0000000000..2d167b6475
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-shift_jis.xml
@@ -0,0 +1,3549 @@
+<?xml version="1.0" encoding="shift_jis"?>
+<!DOCTYPE spec SYSTEM "spec.dtd" [
+
+<!-- “ú–{Œê–ó‚Ì‚½‚߂̉ðÍ‘ÎÛŽÀ‘Ìi‚±‚±‚©‚çj -->
+
+<!ENTITY TR-or-Rec "Žd—l‘">
+<!-- <!ENTITY TR-or-Rec "•W€î•ñ(TR)"> -->
+<!ENTITY eTR-or-Rec "specification">
+<!-- <!ENTITY eTR-or-Rec "technical report(TR)"> -->
+<!ENTITY application "ƒAƒvƒŠƒP[ƒVƒ‡ƒ“">
+<!ENTITY error "ƒGƒ‰[">
+<!ENTITY fatal-error "’v–½“IƒGƒ‰[">
+<!ENTITY parsed-data "‰ðÍ‚³‚ê‚éƒf[ƒ^">
+<!ENTITY unparsed-data "‰ðÍ‚³‚ê‚È‚¢ƒf[ƒ^">
+<!ENTITY parsed-entity "‰ðÍ‘ÎÛŽÀ‘Ì">
+<!ENTITY parser "ƒp[ƒT">
+<!ENTITY unparsed-entity "‰ðÍ‘ÎÛŠOŽÀ‘Ì">
+<!ENTITY well-formed "®Œ`Ž®">
+<!ENTITY valid "‘Ó–">
+<!ENTITY validity "‘Ó–«">
+<!ENTITY escape "•Êˆµ‚¢">
+<!ENTITY prolog "‘‚«">
+<!ENTITY surrogate-blocks "ƒTƒƒQ[ƒgƒuƒƒbƒN">
+<!ENTITY letter "Žš">
+<!ENTITY ideographic "“‡Š¿Žš">
+<!ENTITY markup "ƒ}[ƒN•t‚¯">
+<!ENTITY left-angle-bracket "•s“™†(¬‚È‚è)">
+<!ENTITY right-angle-bracket "•s“™†(‘å‚È‚è)">
+<!ENTITY string "•¶Žš—ñ">
+<!ENTITY char-string "•¶Žš—ñ"><!-- string of chararacters,
+ character strings, strings,
+ characters ‚Í‚·‚ׂĕ¶Žš—ñ‚Æ‚·‚é -->
+<!ENTITY replacement-text "’uŠ·ƒeƒLƒXƒg">
+<!ENTITY single-quote "ˆêdˆø—p•„">
+<!ENTITY double-quote "“ñdˆø—p•„">
+<!ENTITY adaptations-annex "“K—p•‘®‘">
+<!ENTITY root "ƒ‹[ƒg">
+<!ENTITY base-character "Šî’ꕶŽš">
+<!ENTITY diacritical-mark "”­‰¹•„"><!--(ƒ_ƒCƒAƒNƒŠƒeƒBƒJƒ‹ƒ}[ƒN)‚ð‰o‚Ì‚Æ‚«•â‚¤-->
+<!ENTITY composed-form "‡¬Œ`Ž®">
+<!ENTITY standalone "ƒXƒ^ƒ“ƒhƒAƒƒ“">
+<!ENTITY double-hyphen "“ñ˜AƒnƒCƒtƒ“">
+<!--<!ENTITY case-fold "‘啶Žš‚©¬•¶Žš‚Ö‚Ì“ˆê">-->
+<!-- <!ENTITY case-fold "”äŠr‚Ì‚Æ‚«C‘啶Žš‚Ƭ•¶Žš‚Ì“¯ˆêŽ‹">-->
+<!ENTITY parameter "ƒpƒ‰ƒƒ^">
+<!ENTITY stream "ƒXƒgƒŠ[ƒ€">
+<!ENTITY validating "‘Ó–«‚ðŒŸØ‚·‚é">
+<!ENTITY non-validating "‘Ó–«‚ðŒŸØ‚µ‚È‚¢">
+<!ENTITY user "ƒ†[ƒU">
+<!--<!ENTITY at-user-option "ƒ†[ƒU‚ªƒIƒvƒVƒ‡ƒ“‚ðŽw’肵‚½‚Æ‚«">-->
+<!ENTITY at-user-option "ƒ†[ƒU‚̃IƒvƒVƒ‡ƒ“Žw’è‚É‚æ‚Á‚Ä‚Í">
+<!ENTITY content-particle "“à—e‘fŽq">
+<!ENTITY processor "ƒvƒƒZƒT">
+<!ENTITY default "ƒfƒtƒHƒ‹ƒg">
+<!ENTITY default-value "ƒfƒtƒHƒ‹ƒg’l">
+<!ENTITY header "ƒwƒbƒ_">
+<!ENTITY target "ƒ^[ƒQƒbƒg">
+<!ENTITY mixed-content "¬‡“à—e">
+<!ENTITY country-code "‘ƒR[ƒh">
+<!ENTITY language-code "Œ¾ŒêƒR[ƒh">
+<!ENTITY version "”Å"> <!-- version 1.0‚Í‘æ1.0”Å -->
+<!ENTITY match "ƒ}ƒbƒ`">
+<!ENTITY character-value "•¶Žš”Ô†">
+<!ENTITY byte-order-mark "ƒoƒCƒg‡ƒ}[ƒN">
+<!ENTITY bypass "ˆ—‚µ‚È‚¢">
+<!ENTITY identifier "Ž¯•ÊŽq">
+<!-- <!ENTITY identify "Ž¯•Ê‚·‚é"> -->
+<!ENTITY identify "“Á’è‚·‚é">
+<!-- <!ENTITY identified "Ž¯•Ê‚³‚ê‚é"> -->
+<!ENTITY identified "“Á’肳‚ê‚é">
+<!ENTITY combining-character "Œ‹‡•¶Žš">
+<!ENTITY subset "ƒTƒuƒZƒbƒg">
+<!ENTITY token "ƒg[ƒNƒ“">
+<!ENTITY literal "ƒŠƒeƒ‰ƒ‹">
+
+<!ENTITY parenthesis "‚©‚Á‚±">
+<!ENTITY left-parenthesis "ŠJ‚«‚©‚Á‚±">
+<!ENTITY right-parenthesis "•Â‚¶‚©‚Á‚±">
+
+<!-- ‚ ‚Æ‚Å‹C‚ª‚‚¢‚½‚à‚Ì JIS X0221‚ðŒ©‚é•K—v‚ ‚è -->
+
+<!ENTITY extender "ƒGƒNƒXƒeƒ“ƒ_">
+<!ENTITY property "ƒvƒƒpƒeƒB">
+<!ENTITY property-list "ƒvƒƒpƒeƒBƒŠƒXƒg">
+<!ENTITY property-file "ƒvƒƒpƒeƒBƒtƒ@ƒCƒ‹">
+<!ENTITY font-decomposition "ƒtƒHƒ“ƒg•ª‰ð">
+<!ENTITY compatibility-decomposition "ŒÝŠ·«•ª‰ð">
+<!ENTITY compatibility-area "ŒÝŠ·«—̈æ">
+
+<!ENTITY language-identification "Œ¾ŒêŽ¯•Ê">
+
+<!ENTITY space-character "ƒXƒy[ƒX•¶Žš">
+<!ENTITY space "ƒXƒy[ƒX">
+<!ENTITY code-value "ƒR[ƒh’l">
+<!ENTITY normative "‹K’è‚Ì">
+<!ENTITY hueristics "ƒqƒ…[ƒŠƒXƒeƒBƒbƒN">
+<!ENTITY informative "">
+
+<!ENTITY WebSGML 'ISO 8879‚Ö‚ÌWebSGML&adaptations-annex;'>
+<!ENTITY XML.version "1.0">
+<!ENTITY doc.date "1997”N12ŒŽ8“ú">
+<!ENTITY iso6.doc.date "971208">
+<!ENTITY w3c.doc.date "97”N12ŒŽ3“ú">
+<!ENTITY draft.day '8“ú'>
+<!ENTITY draft.month '12ŒŽ'>
+<!ENTITY draft.year '1997”N'>
+
+<!-- “ú–{Œê–ó‚Ì‚½‚߂̉ðÍ‘ÎÛŽÀ‘Ìi‚±‚±‚Ü‚Åj -->
+
+<!-- LAST TOUCHED BY: Tim Bray, 3 Dec 1997 -->
+
+<!-- The words 'FINAL EDIT' in comments mark places where changes
+need to be made after approval of the document by the ERB, before
+publication. -->
+
+<!ENTITY XML.version "1.0">
+<!ENTITY doc.date "8 December 1997">
+<!ENTITY iso6.doc.date "971208">
+<!ENTITY w3c.doc.date "03-Dec-97">
+<!ENTITY draft.day '8'>
+<!ENTITY draft.month 'December'>
+<!ENTITY draft.year '1997'>
+
+<!ENTITY WebSGML
+ 'WebSGML Adaptations Annex to ISO 8879'>
+
+<!ENTITY newline " ">
+<!-- old: <!ENTITY newline "&#8232;"> -->
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+<!--<!ENTITY amp "&"> -->
+<!ENTITY xmlpio "'&lt;?xml'">
+<!ENTITY pic "'?>'">
+<!ENTITY br "\n">
+<!ENTITY cellback '#c0d9c0'>
+<!ENTITY mdash "--"> <!-- was: <!ENTITY mdash "&#38;#151;"> -->
+<!ENTITY com "--">
+<!ENTITY como "--">
+<!ENTITY comc "--">
+<!ENTITY hcro "&amp;#x">
+<!-- <!ENTITY nbsp ""> -->
+<!ENTITY nbsp "&#160;">
+<!ENTITY magicents "<code>amp</code>,
+<code>lt</code>,
+<code>gt</code>,
+<code>apos</code>,
+<code>quot</code>">
+
+<!--“ú–{Œê–ó‚ɂ‚¢‚Ä: ƒRƒƒ“ƒg‚Í–|–ó‘ÎÛ‚©‚çŠO‚µ‚Ü‚µ‚½B—é–ؘa•v -->
+<!-- audience and distribution status: for use at publication time -->
+<!-- -->
+<!ENTITY doc.audience "ŒöŠJƒŒƒrƒ…[‹y‚Ñ‹c˜_">
+<!ENTITY doc.distribution "ƒeƒLƒXƒg‹y‚Ñ–@—¥ã‚Ì’ˆÓ‚ð‰ü•Ï‚µ‚È‚¢ŒÀ‚èC
+Ž©—R‚É”z•z‚µ‚Ä‚à‚æ‚¢">
+
+]>
+
+<!-- for Panorama *-->
+<?VERBATIM "eg" ?>
+
+<spec>
+<header>
+<title>Šg’£‰Â”\‚È&markup;Œ¾Œê (XML)</title>
+<version>‘æ1.0&version;</version>
+<w3c-designation>PR-xml-&iso6.doc.date;</w3c-designation>
+<w3c-doctype>World Wide Web Consortium</w3c-doctype>
+<pubdate><day>&draft.day;</day><month>&draft.month;</month><year>&draft.year;</year></pubdate>
+<notice><p>‚±‚Ì‘ˆÄ‚ÍCXML WG‹y‚Ñ‘¼‚ÌŠÖŒWŽÒ‚É‚æ‚郌ƒrƒ…[‚Ì‚½‚ß‚Ì‚à‚Ì‚Å‚ ‚Á‚ÄCŒöŠJ‚Ì‹c˜_‚Ì‚½‚ß‚Ì‚à‚Ì‚Å‚Í‚È‚¢B
+<!-- FINAL EDIT: FIX --></p></notice>
+<publoc>
+<loc href="http://www.w3.org/TR/PR-xml-&iso6.doc.date;">
+http://www.w3.org/TR/PR-xml-&iso6.doc.date;</loc></publoc>
+<prevlocs>
+<loc href='http://www.w3.org/TR/WD-xml-961114'>
+http://www.w3.org/TR/WD-xml-961114</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970331'>
+http://www.w3.org/TR/WD-xml-lang-970331</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970630'>
+http://www.w3.org/TR/WD-xml-lang-970630</loc>
+<loc href='http://www.w3.org/TR/WD-xml-970807'>
+http://www.w3.org/TR/WD-xml-970807</loc>
+<loc href='http://www.w3.org/TR/WD-xml-971117'>
+http://www.w3.org/TR/WD-xml-971117</loc>
+</prevlocs>
+<authlist>
+<author><name>Tim Bray</name>
+<affiliation>Textuality and Netscape</affiliation>
+<email
+href="mailto:tbray@textuality.com">tbray@textuality.com</email></author>
+<author><name>Jean Paoli</name>
+<affiliation>Microsoft</affiliation>
+<email href="mailto:jeanpa@microsoft.com">jeanpa@microsoft.com</email></author>
+<author><name>C. M. Sperberg-McQueen</name>
+<affiliation>University of Illinois at Chicago</affiliation>
+<email href="mailto:cmsmcq@uic.edu">cmsmcq@uic.edu</email></author>
+</authlist>
+<status>
+ <p>‚±‚Ì&TR-or-Rec;‚Í, 1997”N12ŒŽ‚ÉWorld Wide Web Consortium‚©‚ç
+Œö•\‚³‚ꂽŠ©ˆÄExtensible Markup Language version‘æ1.0”Å‚ð–|–ó‚µ, ‹Z
+p“I“à—e‚ð•ÏX‚·‚邱‚Æ‚È‚­ì¬‚µ‚½&TR-or-Rec;‚Å‚ ‚éBThis &eTR-or-Rec;
+is a translation of the XML proposed recommendation 1.0
+published by the World Wide Web Consortium in December 1997. It is
+intended that &eTR-or-Rec; is technically identical to the original.</p>
+
+<p>Œ´•¶‚É‚ ‚éA’˜ìŒ ‚ÉŠÖ‚µ‚Ä‚Ì‹Lq‚ðŽŸ‚ÉŽ¦‚·BThe
+original copyright notice is shown below:</p>
+
+<p>‚±‚̔łÌXML‚Ì‹K’è‚ÍCŒöŠJƒŒƒrƒ…[‹y‚Ñ‹c˜_‚ð
+–Ú“I‚Æ‚·‚éBƒeƒLƒXƒg‹y‚Ñ–@—¥ã‚Ì’ˆÓ‚ð‰ü•Ï‚µ‚È‚¢ŒÀ‚èCŽ©—R‚É
+”z•z‚µ‚Ä‚à‚æ‚¢BThis version of the XML specification is for
+public review and discussion. It may be distributed freely,
+as long as all text and legal notices remain intact.</p>
+
+<p>‚±‚Ì&TR-or-Rec;‚ÌŒ³‚Æ‚È‚Á‚½XMLŠ©ˆÄ‚ÍC1998”N2ŒŽ‚ÉWorld
+Wide Web Consortium‚©‚çŒö•\‚³‚ꂽXMLŠ©‚É‚æ‚Á‚Ä‚·‚Å‚É’u‚«Š·
+‚¦‚ç‚ê‚Ä‚¢‚éB‚±‚Ì•W€î•ñ‚ÍCXMLŠ©‚É]‚Á‚Ä’ù³‚·‚邱‚Æ‚ð
+—\’肵‚Ä‚¢‚éBThe XML Proposed Recommendation is superseded
+by the XML Recommendation which was published by the World
+Wide Web Consortium in February 1998. It is intended that
+this &eTR-or-Rec; be revised accordingly in the near future.</p>
+
+<p>‚±‚Ì&TR-or-Rec;‚ÍCˆÀ’肵‚½‚à‚Ì‚Å‚ ‚Á‚ÄCð”N—ˆ‚Ì<loc
+href='http://www.w3.org/XML'>XMLŠˆ“®</loc>‚ð’Ê‚¶‚Ä쬂³‚ꂽCˆê˜A‚Ìì
+‹Æ‘ˆÄ‚ðŒ³‚Æ‚·‚éBŒ»ÝCL”͈͂Ɏg—p‚³‚ê‚Ä‚¢‚é‘Û“I‚ȃeƒLƒXƒgˆ—‚Ì•W
+€(•W€ˆê”ʉ»&markup;Œ¾ŒêCStandard Generalized Markup Language, ISO
+8879:1986‚ɒljÁ‹y‚Ñ’ù³‚ð‰Á‚¦‚½‚à‚Ì)‚ÌCWWWã‚Å‚ÌŽg—p‚Ì‚½‚ß‚É&subset;
+‰»‚µ‚½Œ¾Œê‚ðC‚±‚Ì&TR-or-Rec;‚ÍC‹K’è‚·‚éBISO 8879‚Ì‚Ç‚Ì‹@”\‚ð‚±‚Ì
+&subset;‚ÉŽc‚·‚©C‚Æ‚¢‚¤Œˆ’è‚ɂ‚¢‚Ä‚ÌÚׂÍC<loc
+href='http://www.w3.org/XML/#WG-decisions'>•Ê“r—pˆÓ‚·‚é</loc>BXML‚ÍC
+Šù‚É‚¢‚­‚‚©‚̤•i‚ŃTƒ|[ƒg‚³‚êCXML‚ðƒTƒ|[ƒg‚·‚é<loc
+href='http://www.w3.org/XML/#software'>ƒtƒŠ[ƒEƒFƒA</loc>‚Ì”‚à‘‚¦‚Ä
+‚¢‚éBXML‚ÉŠÖ‚·‚éŒöŠJ‚̘_‹c‚àCƒIƒ“ƒ‰ƒCƒ“‚Å<loc
+href='http://www.w3.org/XML/#discussion'>“üŽè‚Å‚«‚é</loc>BIt is a
+stable document derived from a series of working drafts produced over
+the last year as deliverables of the <loc
+href='http://www.w3.org/XML'>XML activity</loc>. It specifies a
+language created by subsetting an existing, widely used international
+text processing standard (Standard Generalized Markup Language, ISO
+8879:1986 as amended and corrected) for use on the World Wide Web.
+Details of the decisions regarding which features of ISO 8879 to
+retain in the subset <loc
+href='http://www.w3.org/XML/#WG-decisions'>are available
+separately</loc>. XML is already supported by some commercial
+products, and there are a growing number of <loc
+href='http://www.w3.org/XML/#software'>free implementations</loc>.
+Public discussions of XML <loc
+href='http://www.w3.org/XML/#discussion'>are accessible
+online</loc>.</p>
+
+<p>‚±‚Ì&TR-or-Rec;‚Å‚ÍC<bibref ref="Berners-Lee"/>‚É’è‹`‚·‚é
+URI(Uniform Resource Identifier)‚ðŽg—p‚·‚éBURI‚̧’èì‹Æ‚Íis’†‚Å‚ ‚Á
+‚ÄC<bibref ref="RFC1738"/>‹y‚Ñ<bibref ref="RFC1808"/>‚ðXV‚·‚é—\’è‚Æ
+‚È‚Á‚Ä‚¢‚éB‚±‚Ìì‹Æ‚ªRFC‚Æ‚µ‚Ď󂯓ü‚ê‚ç‚ê‚È‚¢ê‡‚ÍC‚±‚Ì‹K’ö“à‚ÌURI
+‚Ö‚ÌŽQÆ‚ÍCURL(Uniform Resource Locator)‚Ö‚ÌŽQÆ‚É‘ã‚í‚éBThis
+specification uses the term URI, which is defined by <bibref
+ref="Berners-Lee"/>, a work in progress expected to update <bibref
+ref="RFC1738"/> and <bibref ref="RFC1808"/>. Should the work not be
+accepted as an RFC, the references to uniform resource identifiers
+(URIs) in this specification will become references to uniform
+resource locators (URLs).</p>
+
+ <p>XML‚ÌŽd—l‚É€‹’‚µ‚Ä‚¢‚é‚©‚Ç‚¤‚©‚̊ƂȂé‚ÍW3C‚̃TƒCƒg‚É‚ 
+‚錴•¶‚Å‚ ‚éBThe normative version of the specification is
+the English version found at the W3C site.</p>
+
+ <p>‚±‚Ì•W€î•ñ‚ÍŒ´Žd—l‚Æ‹Zp“I‚É“¯ˆê‚Å‚ ‚邱‚Æ‚ðˆÓ}‚µ‚Ä‚¢‚邪A
+–|–óã‚ÌŒë‚è‚Í‚ ‚蓾‚éBAlthough this technical report is
+intended to be technically identical to the original, it may
+contain errors from the translation.</p>
+
+ <p>”õl: Œ´‹K’è‚Æ‚Ì‹K’è‰ÓŠ‚̑ΉžŠÖŒW‚𖾂炩‚É‚·‚邽‚ßA‚±‚Ì
+&TR-or-Rec;‚Ìß\¬‹y‚ÑߔԆ‚ÍAŒ´‹K’è‚Ì‚»‚ê‚ç‚ð‚Å‚«‚邾‚¯•Û‘¶‚µ‚Ä‚¢
+‚éB‚±‚Ì&TR-or-Rec;‚ÌWeb”Å‚ÍAŒ´‹K’è‚ÌHTMLƒ^ƒO‚ð‚»‚Ì‚Ü‚Ü•Û‘¶‚µ‚Ä‚¢‚éB
+</p>
+</status>
+<!-- out of date
+<statusp>This is a W3C Working Draft for review by W3C members and other
+interested parties. It is a draft document and may be updated,
+replaced, or obsoleted by other documents at any time. It is
+inappropriate to use W3C Working Drafts as reference material or to
+cite them as other than "work in progress". A list of current W3C
+working drafts can be found at
+<loc href="http://www.w3.org/TR">http://www.w3.org/TR</loc>.</statusp>
+<statusp><emph>Note:</emph> Since working drafts are subject to frequent
+change, you are advised to reference the above URL, rather than the
+URLs for working drafts themselves.</statusp>
+<statusp>This work is part of the W3C SGML Activity (for current
+status, see <loc href="http://www.w3.org/MarkUp/SGML/Activity"
+>http://www.w3.org/MarkUp/SGML/Activity</loc>).</statusp>
+<p>The current
+draft of this specification
+presupposes the successful completion of the current
+work on the &WebSGML;, being prepared by ISO/IEC JTC1
+at the time this draft specification was drafted.
+If it is not
+adopted in the expected form, some clauses of this specification
+may change, and some
+recommendations now labeled "<termref def="dt-interop">for
+interoperability</termref>" will become requirements labeled
+"<termref def="dt-compat">for compatibility</termref>".
+</p>
+<p>The current draft of this specification uses the term
+URI, which is defined by
+<bibref ref="Berners-Lee"/>,
+which is work in progress expected to update
+<bibref ref="RFC1738"/> and <bibref ref="RFC1808"/>.
+Should the work in this draft not be accepted as an RFC, the
+references to uniform resource identifiers (URIs) in this
+specification will become references to uniform resource
+locators (URLs).</p>
+</status> -->
+<abstract>
+<p>Šg’£‰Â”\‚È&markup;Œ¾Œê(XML)‚ÍSGML‚ÌŠÈ’P‚È•ûŒ¾‚Å‚ ‚Á‚ÄC‚±‚Ì&TR-or-Rec;‚ÅC‚»‚Ì‚·‚ׂĂð‹K’è‚·‚éBXML‚Ì–Ú•W‚ÍCŒ»Ý‚ÌHTML‚Æ“¯—l‚ÉCˆê”Ê«‚Ì‚ ‚éSGML‚ðƒEƒFƒuã‚Å”z•zCŽóM‹y‚ш—‚Å‚«‚邱‚Æ‚Æ‚·‚éBXML‚ÍŽÀ‘•‚ª—eˆÕ‚Å‚ ‚Á‚ÄCSGML‹y‚ÑHTML‚Ì‚Ç‚¿‚ç‚ɑ΂µ‚Ä‚à‘ŠŒÝ‰^—p«‚ð•Û‚ÂÝŒv‚ª‚È‚³‚ê‚Ä‚¢‚éB</p>
+</abstract>
+<pubstmt>
+<p>Chicago, Vancouver, Mountain View, et al.:
+World-Wide Web Consortium, XMLì‹ÆƒOƒ‹[ƒv, 1996, 1997.</p>
+</pubstmt>
+<sourcedesc>
+<p>Created in electronic form.</p>
+</sourcedesc>
+<langusage>
+<language id='EN'>English</language>
+<language id='ebnf'>Extended Backus-Naur Form (formal grammar)</language>
+</langusage>
+<revisiondesc>
+<slist>
+<sitem>1997-12-03 : CMSMcQ : yet further changes</sitem>
+<sitem>1997-12-02 : TB : further changes (see TB to XML WG,
+2 December 1997)</sitem>
+<sitem>1997-12-02 : CMSMcQ : deal with as many corrections and
+comments from the proofreaders as possible:
+entify hard-coded document date in pubdate element,
+change expansion of entity WebSGML,
+update status description as per Dan Connolly (am not sure
+about refernece to Berners-Lee et al.),
+add 'The' to abstract as per WG decision,
+move Relationship to Existing Standards to back matter and
+combine with References,
+re-order back matter so normative appendices come first,
+re-tag back matter so informative appendices are tagged informdiv1,
+remove XXX XXX from list of 'normative' specs in prose,
+move some references from Other References to Normative References,
+add RFC 1738, 1808, and 2141 to Other References (they are not
+normative since we do not require the processor to enforce any
+rules based on them),
+add reference to 'Fielding draft' (Berners-Lee et al.),
+move notation section to end of body,
+drop URIchar non-terminal and use SkipLit instead,
+lose stray reference to defunct nonterminal 'markupdecls',
+move reference to Aho et al. into appendix (Tim's right),
+add prose note saying that hash marks and fragment identifiers are
+NOT part of the URI formally speaking, and are NOT legal in
+system identifiers (processor 'may' signal an error).
+Work through:
+Tim Bray reacting to James Clark,
+Tim Bray on his own,
+Eve Maler,
+
+NOT DONE YET:
+change binary / text to unparsed / parsed.
+handle James's suggestion about &lt; in attriubte values
+uppercase hex characters,
+namechar list,
+</sitem>
+<sitem>1997-12-01 : JB : add some column-width parameters</sitem>
+<sitem>1997-12-01 : CMSMcQ : begin round of changes to incorporate
+recent WG decisions and other corrections:
+binding sources of character encoding info (27 Aug / 3 Sept),
+correct wording of Faust quotation (restore dropped line),
+drop SDD from EncodingDecl,
+change text at version number 1.0,
+drop misleading (wrong!) sentence about ignorables and extenders,
+modify definition of PCData to make bar on msc grammatical,
+change grammar's handling of internal subset (drop non-terminal markupdecls),
+change definition of includeSect to allow conditional sections,
+add integral-declaration constraint on internal subset,
+drop misleading / dangerous sentence about relationship of
+entities with system storage objects,
+change table body tag to htbody as per EM change to DTD,
+add rule about space normalization in public identifiers,
+add description of how to generate our name-space rules from
+Unicode character database (needs further work!).
+</sitem>
+<sitem>1997-10-08 : TB : Removed %-constructs again, new rules
+for PE appearance.</sitem>
+<sitem>1997-10-01 : TB : Case-sensitive markup; cleaned up
+element-type defs, lotsa little edits for style</sitem>
+<sitem>1997-09-25 : TB : Change to elm's new DTD, with
+substantial detail cleanup as a side-effect</sitem>
+<sitem>1997-07-24 : CMSMcQ : correct error (lost *) in definition
+of ignoreSectContents (thanks to Makoto Murata)</sitem>
+<sitem>Allow all empty elements to have end-tags, consistent with
+SGML TC (as per JJC).</sitem>
+<sitem>1997-07-23 : CMSMcQ : pre-emptive strike on pending corrections:
+introduce the term 'empty-element tag', note that all empty elements
+may use it, and elements declared EMPTY must use it.
+Add WFC requiring encoding decl to come first in an entity.
+Redefine notations to point to PIs as well as binary entities.
+Change autodetection table by removing bytes 3 and 4 from
+examples with Byte Order Mark.
+Add content model as a term and clarify that it applies to both
+mixed and element content.
+</sitem>
+<sitem>1997-06-30 : CMSMcQ : change date, some cosmetic changes,
+changes to productions for choice, seq, Mixed, NotationType,
+Enumeration. Follow James Clark's suggestion and prohibit
+conditional sections in internal subset. TO DO: simplify
+production for ignored sections as a result, since we don't
+need to worry about parsers which don't expand PErefs finding
+a conditional section.</sitem>
+<sitem>1997-06-29 : TB : various edits</sitem>
+<sitem>1997-06-29 : CMSMcQ : further changes:
+Suppress old FINAL EDIT comments and some dead material.
+Revise occurrences of % in grammar to exploit Henry Thompson's pun,
+especially markupdecl and attdef.
+Remove RMD requirement relating to element content (?).
+</sitem>
+<sitem>1997-06-28 : CMSMcQ : Various changes for 1 July draft:
+Add text for draconian error handling (introduce
+the term Fatal Error).
+RE deleta est (changing wording from
+original announcement to restrict the requirement to validating
+parsers).
+Tag definition of validating processor and link to it.
+Add colon as name character.
+Change def of %operator.
+Change standard definitions of lt, gt, amp.
+Strip leading zeros from #x00nn forms.</sitem>
+<sitem>1997-04-02 : CMSMcQ : final corrections of editorial errors
+found in last night's proofreading. Reverse course once more on
+well-formed: Webster's Second hyphenates it, and that's enough
+for me.</sitem>
+<sitem>1997-04-01 : CMSMcQ : corrections from JJC, EM, HT, and self</sitem>
+<sitem>1997-03-31 : Tim Bray : many changes</sitem>
+<sitem>1997-03-29 : CMSMcQ : some Henry Thompson (on entity handling),
+some Charles Goldfarb, some ERB decisions (PE handling in miscellaneous
+declarations. Changed Ident element to accept def attribute.
+Allow normalization of Unicode characters. move def of systemliteral
+into section on literals.</sitem>
+<sitem>1997-03-28 : CMSMcQ : make as many corrections as possible, from
+Terry Allen, Norbert Mikula, James Clark, Jon Bosak, Henry Thompson,
+Paul Grosso, and self. Among other things: give in on "well formed"
+(Terry is right), tentatively rename QuotedCData as AttValue
+and Literal as EntityValue to be more informative, since attribute
+values are the <emph>only</emph> place QuotedCData was used, and
+vice versa for entity text and Literal. (I'd call it Entity Text,
+but 8879 uses that name for both internal and external entities.)</sitem>
+<sitem>1997-03-26 : CMSMcQ : resynch the two forks of this draft, reapply
+my changes dated 03-20 and 03-21. Normalize old 'may not' to 'must not'
+except in the one case where it meant 'may or may not'.</sitem>
+<sitem>1997-03-21 : TB : massive changes on plane flight from Chicago
+to Vancouver</sitem>
+<sitem>1997-03-21 : CMSMcQ : correct as many reported errors as possible.
+</sitem>
+<sitem>1997-03-20 : CMSMcQ : correct typos listed in CMSMcQ hand copy of spec.</sitem>
+<sitem>1997-03-20 : CMSMcQ : cosmetic changes preparatory to revision for
+WWW conference April 1997: restore some of the internal entity
+references (e.g. to docdate, etc.), change character xA0 to &amp;nbsp;
+and define nbsp as &amp;#160;, and refill a lot of paragraphs for
+legibility.</sitem>
+<sitem>1996-11-12 : CMSMcQ : revise using Tim's edits:
+Add list type of NUMBERED and change most lists either to
+BULLETS or to NUMBERED.
+Suppress QuotedNames, Names (not used).
+Correct trivial-grammar doc type decl.
+Rename 'marked section' as 'CDATA section' passim.
+Also edits from James Clark:
+Define the set of characters from which [^abc] subtracts.
+Charref should use just [0-9] not Digit.
+Location info needs cleaner treatment: remove? (ERB
+question).
+One example of a PI has wrong pic.
+Clarify discussion of encoding names.
+Encoding failure should lead to unspecified results; don't
+prescribe error recovery.
+Don't require exposure of entity boundaries.
+Ignore white space in element content.
+Reserve entity names of the form u-NNNN.
+Clarify relative URLs.
+And some of my own:
+Correct productions for content model: model cannot
+consist of a name, so "elements ::= cp" is no good.
+</sitem>
+<sitem>1996-11-11 : CMSMcQ : revise for style.
+Add new rhs to entity declaration, for parameter entities.</sitem>
+<sitem>1996-11-10 : CMSMcQ : revise for style.
+Fix / complete section on names, characters.
+Add sections on parameter entities, conditional sections.
+Still to do: Add compatibility note on deterministic content models.
+Finish stylistic revision.</sitem>
+<sitem>1996-10-31 : TB : Add Entity Handling section</sitem>
+<sitem>1996-10-30 : TB : Clean up term &amp; termdef. Slip in
+ERB decision re EMPTY.</sitem>
+<sitem>1996-10-28 : TB : Change DTD. Implement some of Michael's
+suggestions. Change comments back to //. Introduce language for
+XML namespace reservation. Add section on white-space handling.
+Lots more cleanup.</sitem>
+<sitem>1996-10-24 : CMSMcQ : quick tweaks, implement some ERB
+decisions. Characters are not integers. Comments are /* */ not //.
+Add bibliographic refs to 10646, HyTime, Unicode.
+Rename old Cdata as MsData since it's <emph>only</emph> seen
+in marked sections. Call them attribute-value pairs not
+name-value pairs, except once. Internal subset is optional, needs
+'?'. Implied attributes should be signaled to the app, not
+have values supplied by processor.</sitem>
+<sitem>1996-10-16 : TB : track down &amp; excise all DSD references;
+introduce some EBNF for entity declarations.</sitem>
+<sitem>1996-10-?? : TB : consistency check, fix up scraps so
+they all parse, get formatter working, correct a few productions.</sitem>
+<sitem>1996-10-10/11 : CMSMcQ : various maintenance, stylistic, and
+organizational changes:
+Replace a few literals with xmlpio and
+pic entities, to make them consistent and ensure we can change pic
+reliably when the ERB votes.
+Drop paragraph on recognizers from notation section.
+Add match, exact match to terminology.
+Move old 2.2 XML Processors and Apps into intro.
+Mention comments, PIs, and marked sections in discussion of
+delimiter escaping.
+Streamline discussion of doctype decl syntax.
+Drop old section of 'PI syntax' for doctype decl, and add
+section on partial-DTD summary PIs to end of Logical Structures
+section.
+Revise DSD syntax section to use Tim's subset-in-a-PI
+mechanism.</sitem>
+<sitem>1996-10-10 : TB : eliminate name recognizers (and more?)</sitem>
+<sitem>1996-10-09 : CMSMcQ : revise for style, consistency through 2.3
+(Characters)</sitem>
+<sitem>1996-10-09 : CMSMcQ : re-unite everything for convenience,
+at least temporarily, and revise quickly</sitem>
+<sitem>1996-10-08 : TB : first major homogenization pass</sitem>
+<sitem>1996-10-08 : TB : turn "current" attribute on div type into
+CDATA</sitem>
+<sitem>1996-10-02 : TB : remould into skeleton + entities</sitem>
+<sitem>1996-09-30 : CMSMcQ : add a few more sections prior to exchange
+ with Tim.</sitem>
+<sitem>1996-09-20 : CMSMcQ : finish transcribing notes.</sitem>
+<sitem>1996-09-19 : CMSMcQ : begin transcribing notes for draft.</sitem>
+<sitem>1996-09-13 : CMSMcQ : made outline from notes of 09-06,
+do some housekeeping</sitem>
+</slist>
+</revisiondesc>
+</header>
+<body>
+<div1 id='sec-intro'>
+<head>ˆê”ÊŽ–€</head>
+<!-- <div2 id='sec-scope'>
+ <head>“K—p”͈Í</head> -->
+<p>Šg’£‰Â”\‚È&markup;Œ¾ŒêXML(eXtensible Markup Language)‚ÍC<termref def="dt-xml-doc">XML•¶‘</termref>‚Æ‚¢‚¤ƒf[ƒ^ƒIƒuƒWƒFƒNƒg‚̃Nƒ‰ƒX‚ð‹K’肵CXML•¶‘‚ðˆ—‚·‚éƒvƒƒOƒ‰ƒ€‚Ì“®ì‚̈ꕔ‚ð‹K’è‚·‚éBXML‚ÍCSGML(•W€ˆê”ʉ»&markup;Œ¾ŒêCStandard Generalized Markup Language)<bibref ref='ISO8879'/>‚̧ŒÀ‚µ‚½&subset;‚Æ‚·‚éB\‘¢ãCXML•¶‘‚ÍC‚©‚Ȃ炸SGML‹KŠi‚É“K‡‚·‚éB</p>
+<p>XML•¶‘‚ÍC<termref def="dt-entity">ŽÀ‘Ì</termref>‚Æ‚¢‚¤‹L‰¯’PˆÊ‚©‚ç‚È‚èCŽÀ‘Ì‚ÍC&parsed-data;–”‚Í&unparsed-data;‚©‚ç‚È‚éB&parsed-data;‚ÍC<termref def="dt-character">•¶Žš</termref>‚©‚ç‚È‚èC‚»‚̈ꕔ‚ÍC•¶‘‚Ì<termref def="dt-chardata">•¶Žšƒf[ƒ^</termref>‚ð\¬‚µCˆê•”‚ÍC<termref def="dt-markup">&markup;</termref>‚ð\¬‚·‚éB&markup;‚ÍC•¶‘‚Ì‹L‰¯ƒŒƒCƒAƒEƒg‹y‚ј_—\‘¢‚ɂ‚¢‚Ä‚Ì‹Lq‚ð•\‚·•„†‚Æ‚·‚éBXML‚ÍC‹L‰¯ƒŒƒCƒAƒEƒg‹y‚ј_—\‘¢‚ɂ‚¢‚Ă̧–ñðŒ‚ð‹Lq‚·‚é‹@\‚ð’ñ‹Ÿ‚·‚éB</p>
+<p><termdef id="dt-xml-proc" term="XML&processor;"><term>XML&processor;</term>‚Æ‚¢‚¤ƒ\ƒtƒgƒEƒFƒAƒ‚ƒWƒ…[ƒ‹‚ÍCXML•¶‘‚ð“Ç‚Ýž‚ÝC‚»‚Ì“à—e‹y‚Ñ\‘¢‚ւ̃AƒNƒZƒX‚ð’ñ‹Ÿ‚·‚邽‚ß‚É—p‚¢‚éB </termdef> <termdef id="dt-app" term="&application;">XML&processor;‚ÍC‘¼‚̃‚ƒWƒ…[ƒ‹‚Ì‚½‚ß‚É“®ì‚·‚邱‚Æ‚ð‘O’ñ‚Æ‚µC‚»‚̃‚ƒWƒ…[ƒ‹‚ð<term>&application;</term>‚Æ‚¢‚¤B</termdef>‚±‚Ì&TR-or-Rec;‚ÍCXML&processor;‚ªs‚í‚È‚¯‚ê‚΂Ȃç‚È‚¢U•‘‚¢‚ð‹K’è‚·‚éB‚‚܂èCXMLƒf[ƒ^‚Ì“Çž‚Ý•û–@‚ð‹K’肵C&application;‚É’ñ‹Ÿ‚·‚éî•ñ‚ð‹K’è‚·‚éB</p>
+<!-- </div2> -->
+<div2 id='sec-origin-goals'>
+<head>ŒoˆÜ‹y‚Ñ–Ú•W</head>
+<p>1996”N‚ÉWorld Wide Web Consortium(W3C)‚Ì’†‚ÉÝ—§‚µ‚½XMLì‹ÆƒOƒ‹[ƒv(ˆÈ‘O‚ÍC SGML•ÒWƒŒƒrƒ…[ˆÏˆõ‰ï‚ƌĂ΂ꂽ)‚ªCXML‚ðŠJ”­‚µ‚½B‚±‚Ìì‹ÆƒOƒ‹[ƒv‚Ì‹c’·‚ðCSun Microsystems‚ÌJon Bosak‚ª‹Î‚ß‚éBW3C‚ª‘gD‚µCˆÈ‘O‚ÍSGMLì‹ÆƒOƒ‹[ƒv‚ƌĂ΂ꂽXML SIG(Special Interest Group)‚àCXML‚̧’è‚É”ñí‚ÉŠˆ”­‚ÉŽQ‰æ‚µ‚½B
+<!--JIS‚Å‚Í? XMLì‹ÆƒOƒ‹[ƒv‚̃ƒ“ƒo‚ð•t˜^‚ÉŽ¦‚·B-->Dan Connolly‚ÍCì‹ÆƒOƒ‹[ƒv‚ÌW3C‚É‚¨‚¯‚é˜A—ŒW‚𖱂߂½B</p>
+<p>XML‚ÌÝŒv–Ú•W‚ðCŽŸ‚ÉŽ¦‚·B<ulist>
+<item><p>a) XML‚ÍCInternetã‚Å‚»‚Ì‚Ü‚ÜŽg—p‚Å‚«‚éB</p></item>
+<item><p>b) XML‚ÍCL”͈͂Ì&application;‚ðŽx‰‡‚·‚éB</p></item>
+<item><p>c) XML‚ÍCSGML‚ƌ݊·«‚ð‚à‚ÂB</p></item>
+<item><p>d) XML•¶‘‚ðˆ—‚·‚éƒvƒƒOƒ‰ƒ€‚ð‘‚­‚±‚Æ‚ÍC—eˆÕ‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p></item>
+<item><p>e) XML‚Å‚ÍCƒIƒvƒVƒ‡ƒ“‚Ì‹@”\‚Í‚Å‚«‚邾‚¯­‚È‚­‚µCˆê‚Â‚à‘¶Ý‚µ‚È‚¢‚±‚Æ‚ð–ÚŽw‚·B</p></item>
+<item><p>f) XML•¶‘‚ÍClŠÔ‚É‚Æ‚Á‚Ä“Ç‚Ý‚â‚·‚­C\•ª‚É—‰ð‚µ‚â‚·‚¢B</p></item>
+<item><p>g) XML‚ÌÝŒv‚ÍC‚·‚Ý‚â‚©‚És‚¦‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p></item>
+<item><p>h) XML‚ÌÝŒv‚ÍCŒµ–§‹y‚ÑŠÈŒ‰‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p></item>
+<item><p>i) XML•¶‘‚ÍC—eˆÕ‚É쬂ł«‚éB</p></item>
+<item><p>j) XML‚Å‚ÍC&markup;‚Ì”‚ðŒ¸‚ç‚·‚±‚Æ‚ÍCd—v‚Å‚Í‚È‚¢B</p></item></ulist>
+</p>
+<p>XML‘æ&XML.version;&version;‚ð—‰ð‚µC‚»‚ê‚ðˆ—‚·‚éŒvŽZ‹@ƒvƒƒOƒ‰ƒ€‚ð‘‚­‚½‚ß‚É\•ª‚Èî•ñ‚ÍC‚±‚Ì&TR-or-Rec;‹y‚ÑŠÖ˜A‚·‚é‹KŠi(•¶Žš—p‚Æ‚µ‚ÄCUnicode‹y‚ÑISO/IEC 10646C<!--* XXX for Uniform Resource Identifiers, *-->&language-identification;ƒ^ƒO—p‚Æ‚µ‚ÄCƒCƒ“ƒ^ƒlƒbƒg RFC 1766C&language-code;—p‚Æ‚µ‚ÄCISO 639C•À‚Ñ‚É&country-code;—p‚Æ‚µ‚ÄCISO 3166)‚ÅC‚·‚ׂϦ‚·B</p>
+<p>‚±‚Ì&version;‚ÌXML‚Ì‹K’è<!-- (&doc.date;) -->‚ÍCŒöŠJƒŒƒrƒ…[‹y‚Ñ‹c˜_‚ð–Ú“I‚Æ‚·‚éBƒeƒLƒXƒg‹y‚Ñ–@—¥ã‚Ì’ˆÓ‚ð‰ü•Ï‚µ‚È‚¢ŒÀ‚èCŽ©—R‚É”z•z‚µ‚Ä‚à‚æ‚¢B</p>
+</div2>
+<div2 id='sec-terminology'>
+<head>’è‹`</head>
+<p>XML•¶‘‚Ì‹K’è‚Ì‚½‚ß‚ÉŽg—p‚·‚é—pŒê‚ÍC‚±‚Ì&TR-or-Rec;“à‚Å’è‹`‚·‚éBŽŸ‚ÉŽ¦‚·Œê‹å‚ÍC‚»‚ê‚ç‚Ì—pŒê‚ð’è‹`‚·‚邽‚ßC‹y‚ÑXML&processor;‚Ì“®‚«‚ð‹K’è‚·‚邽‚ß‚ÉŽg—p‚·‚éB
+<glist>
+<gitem>
+<label>1.2.1 ‚µ‚Ä‚à‚æ‚¢(may)</label>
+<def><p><termdef id="dt-may" term="‚µ‚Ä‚à‚æ‚¢">“K‡‚·‚镶‘–”‚ÍXML&processor;‚ÍC‹Lq‚³‚ꂽ‚Æ‚¨‚è‚É“®ì‚µ‚Ä‚à‚æ‚¢‚ªC‚»‚Ì‚Æ‚¨‚è‚É‚·‚é•K—v‚Í‚È‚¢B</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.2 ‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢(must)</label>
+<def><p>“K‡‚·‚镶‘–”‚ÍXML&processor;‚ÍC‹Lq‚³‚ꂽ‚Æ‚¨‚è‚É“®ì‚·‚邱‚Æ‚ª—v‹‚³‚ê‚éB‚»‚¤‚Å‚È‚¯‚ê‚ÎC&error;‚Æ‚·‚éB<!-- do NOT change this! this is what defines a violation ofa 'must' clause as 'an error'. -MSM -->
+</p></def>
+</gitem>
+<gitem>
+<label>1.2.3 &error;(error)</label>
+<def><p><termdef id="dt-error" term="&error;">‚±‚Ì&TR-or-Rec;‚ª’è‚ß‚é‹K‘¥‚ɑ΂·‚éˆá”½BŒ‹‰Ê‚Í’è‹`‚µ‚È‚¢B“K‡‚·‚éƒ\ƒtƒgƒEƒFƒA‚ÍC&error;‚ðŒŸo‚µ‚Ä•ñ‚µ‚Ä‚à‚æ‚­C&error;‚©‚ç‰ñ•œ‚µ‚Ä‚à‚æ‚¢B</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.4 &fatal-error;(fatal error)</label>
+<def><p><termdef id="dt-fatal" term="&fatal-error;">“K‡‚·‚é<termref def="dt-xml-proc">XML&processor;</termref>‚ªŒŸo‚µ‚È‚¯‚ê‚΂Ȃ炸C&application;‚É•ñ‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢&error;B&fatal-error;‚ð”­Œ©‚µ‚½‚ ‚ÆC&processor;‚ÍC‚»‚êˆÈ~‚Ì&error;‚ð’T‚·‚½‚߂Ƀf[ƒ^ˆ—‚ð‘±s‚µ‚Ä‚à‚æ‚­C&error;‚ð”­Œ©‚µ‚½ê‡‚ÍC‚»‚Ì&error;‚ð&application;‚É•ñ‚µ‚Ä‚à‚æ‚¢B&error;’ù³‚ðƒTƒ|[ƒg‚·‚邽‚ß‚ÉC&processor;‚ÍC–¢ˆ—ƒf[ƒ^(•¶Žšƒf[ƒ^‹y‚Ñ&markup;‚̬݂µ‚½‚à‚Ì)‚𕶑‚©‚çŽæ‚èo‚µC&application;‚É“n‚µ‚Ä‚à‚æ‚¢B‚µ‚©‚µCˆê“xC&fatal-error;‚ðŒŸo‚µ‚½‚çC&processor;‚ÍC’Êí‚̈—‚ð‘±s‚µ‚Ä‚Í‚È‚ç‚È‚¢B‚‚܂èC&processor;‚ÍC•¶Žšƒf[ƒ^‹y‚Ñ•¶‘‚̘_—\‘¢‚ɂ‚¢‚Ä‚Ìî•ñ‚ðC’Êí‚Ì•û–@‚Å&application;‚É“n‚µ‘±‚¯‚Ä‚Í‚È‚ç‚È‚¢B</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.5 &at-user-option;(at user option)</label>
+<def><p>“K‡‚·‚éƒ\ƒtƒgƒEƒGƒA‚ÍC‹Lq‚³‚ꂽ‚Æ‚¨‚è‚ÉU‚é•‘‚Á‚Ä‚à‚æ‚¢(may)C–”‚ÍU‚é•‘‚í‚È‚­‚Ä‚Í‚È‚ç‚È‚¢(must)(•¶Í’†‚Ì•“®ŽŒ‚É‚æ‚éB)B‚»‚Ì‚Æ‚¨‚è‚ÉU‚é•‘‚¤ê‡‚ÍC‹Lq‚³‚ꂽU•‘‚¢‚ð‘I‘ð–”‚Í‹‘”Û‚·‚éŽè’i‚ð&user;‚É’ñ‹Ÿ‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p></def>
+</gitem>
+<gitem>
+<label>1.2.6 &validity;§–ñ(validity constraint)</label>
+<def><p>‚·‚ׂĂÌ<termref def="dt-valid">&valid;‚È</termref>XML•¶‘‚É“K—p‚·‚é‹K‘¥B&validity;§–ñ‚̈ᔽ‚ÍC&error;‚Æ‚·‚éB&at-user-option;C<termref def="dt-validating">ŒŸØ‚ðs‚¤XML&processor;</termref>‚ÍC‚±‚Ì&error;‚ð•ñ‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p></def>
+</gitem>
+<gitem>
+<label>1.2.7 &well-formed;§–ñ(well-formedness constraint)</label>
+<def><p>‚·‚ׂĂÌ<termref def="dt-wellformed">&well-formed;</termref>‚ÌXML•¶‘‚É“K—p‚·‚é‹K‘¥B&well-formed;§–ñ‚̈ᔽ‚ÍC<termref def="dt-fatal">&fatal-error;</termref>‚Æ‚·‚éB</p></def>
+</gitem>
+<gitem>
+<label>1.2.8 &match;(match)</label>
+<def><p>a) <termdef id="dt-match" term="&match;">&string;–”‚Í–¼‘O‚Ì&match;@”äŠr‚·‚é“ñ‚‚Ì&string;–”‚Í–¼‘O‚ÍC“¯ˆê‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢BISO/IEC 10646‚É‚¨‚¢‚ÄC•¡”‚Ì•\Œ»‚ª‰Â”\‚È•¶Žšm—Ⴆ‚ÎC&composed-form;‹y‚ÑŠî’ê+&diacritical-mark;(ƒ_ƒCƒAƒNƒŠƒeƒBƒJƒ‹ƒ}[ƒN)Œ`Ž®n‚ÍC‚Ç‚¿‚ç‚Ì&string;‚à“¯‚¶•\Œ»‚Ì‚Æ‚«‚ÉŒÀ‚èC&match;‚·‚éB&at-user-option;C&processor;‚ÍC‚»‚Ì•¶Žš‚ð•W€Œ`‚ɳ‹K‰»‚µ‚Ä‚à‚æ‚¢B”äŠr‚Ì‚Æ‚«A‘啶Žš‚Ƭ•¶Žš‚Æ‚Ì‹æ•Ê‚ð‚·‚éB<!-- Note that no processing of characters with respect to case is part of the matching process. -->&lt;BR>b) &string;‚Æ•¶–@’†‚Ì‹K‘¥‚Æ‚Ì&match;@‚ ‚鶬‹K‘¥‚©‚綬‚·‚錾Œê‚ÉC‚ ‚é&string;‚ª‘®‚·‚é‚Æ‚«C‚±‚Ì&string;‚ÍC‚±‚̶¬‹K‘¥‚É&match;‚·‚é‚Æ‚¢‚¤B&lt;BR>c) “à—e‚Æ“à—eƒ‚ƒfƒ‹‚Æ‚Ì&match;@‚ ‚é—v‘f‚ªC<titleref href='elementvalid'>—v‘f‚Ì&validity;</titleref>‚̧–ñ‚ÉŽ¦‚·ˆÓ–¡‚Å“K‡‚·‚é‚Æ‚«C‚±‚Ì—v‘f‚ÍC‚»‚Ì錾‚É&match;‚·‚é‚Æ‚¢‚¤B</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.9 ŒÝŠ·«‚Ì‚½‚ß(for compatibility)</label>
+<def><p><termdef id="dt-compat" term="ŒÝŠ·«‚Ì‚½‚ß">XML‚Ì‹@”\‚Å‚ ‚Á‚ÄCXML‚ªSGML‚ƌ݊·‚Å‚ ‚邱‚Æ‚ð•ÛØ‚·‚邽‚ß‚¾‚¯‚É“±“ü‚³‚ê‚é‚à‚ÌB</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.10 ‘ŠŒÝ‰^—p«‚Ì‚½‚ß(for interoperability)</label>
+<def><p><termdef id="dt-interop" term="‘ŠŒÝ‰^—p«‚Ì‚½‚ß">S‘©—Í‚Í‚à‚½‚È‚¢„§Ž–€B&WebSGML;ˆÈ‘O‚©‚瑶݂·‚éSGML&processor;‚ªCXML•¶‘‚ðˆ—‚Å‚«‚é‰Â”\«‚ð‚‚߂邽‚ß‚ÉŽæ‚è“ü‚ê‚é‚à‚ÌB</termdef></p></def>
+</gitem>
+</glist>
+</p>
+</div2>
+</div1>
+<!-- &Docs; -->
+<div1 id='sec-documents'>
+<head>•¶‘</head>
+<p><termdef id="dt-xml-doc" term="XML•¶‘">
+<!-- A textual object -->
+‚±‚Ì&TR-or-Rec;‚Å’è‹`‚·‚éˆÓ–¡‚ÅC<termref def="dt-wellformed">&well-formed;</termref>‚Æ‚·‚éƒf[ƒ^ƒIƒuƒWƒFƒNƒg‚ðC<term>XML•¶‘</term>‚Æ‚¢‚¤B&well-formed;‚ÌXML•¶‘‚ªC‚³‚ç‚ÉC‚ ‚駖ñðŒ‚ð–ž‘«‚·‚ê‚ÎC<termref def="dt-valid">&valid;</termref>‚ÈXML•¶‘‚Æ‚·‚éB
+</termdef></p>
+
+<!-- why this div? -TB
+<div2 id='sec-log-phys'>
+<head>Logical and Physical Structure</head> -->
+
+<p>‚¢‚¸‚ê‚ÌXML•¶‘‚àC˜_—\‘¢‹y‚Ñ•¨—\‘¢‚ð‚à‚ÂB•¨—“I‚É‚ÍC•¶‘‚ÍC<termref def="dt-entity">ŽÀ‘Ì</termref>‚ƌĂԒPˆÊ‚©‚ç‚È‚éB‚ ‚éŽÀ‘Ì‚ÍC•¶‘“à‚É‘¼‚ÌŽÀ‘Ì‚ðŠÜ‚Þ‚½‚ß‚ÉC‚»‚Ì‘¼‚ÌŽÀ‘Ì‚ð<termref def="dt-entref">ŽQÆ</termref>‚µ‚Ä‚à‚æ‚¢B•¶‘‚ÍCgƒ‹[ƒgh‚·‚È‚í‚¿<termref def="dt-docent">•¶‘ŽÀ‘Ì</termref>‚©‚çŽn‚Ü‚éB˜_—“I‚É‚ÍC•¶‘‚ÍC錾C—v‘fCƒRƒƒ“ƒgC•¶ŽšŽQÆ‹y‚ш—–½—ß‚ðŠÜ‚ÝC‚±‚ê‚ç‚·‚ׂĂÍC•¶‘“à‚Å–¾Ž¦“I‚È&markup;‚É‚æ‚Á‚ÄŽ¦‚·B˜_—\‘¢‹y‚Ñ•¨—\‘¢‚ÍC<titleref href="wf-entities">ˆÈ~</titleref>‚ÉŽ¦‚·‚Æ‚¨‚è‚ÉCŒµ–§‚É“ü‚êŽq‚É‚È‚Á‚Ä‚¢‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p>
+
+<!--
+</div2> -->
+
+<div2 id='sec-well-formed'>
+<head>&well-formed;‚ÌXML•¶‘</head>
+<p><termdef id="dt-wellformed" term="&well-formed;">‚ ‚éƒeƒLƒXƒgƒIƒuƒWƒFƒNƒg‚ªCŽŸ‚Ì‚¢‚¸‚ê‚©‚Ì‚Æ‚«C‚»‚̃eƒLƒXƒgƒIƒuƒWƒFƒNƒg‚ð&well-formed;‚ÌXML•¶‘‚ƌĂÔB</termdef>
+<ulist>
+<item><p>a) ‘S‘Ì‚Æ‚µ‚ÄC<nt def='NT-document'>document</nt>‚Æ‚¢‚¤ƒ‰ƒxƒ‹‚ð‚à‚¶¬‹K‘¥‚É&match;‚·‚éB</p></item>
+<item><p>b) ‚±‚Ì&TR-or-Rec;‚Å’è‹`‚·‚éC‚·‚ׂĂÌ&well-formed;§–ñ‚É]‚¤B</p>
+</item>
+<item><p>c) ‚»‚ꂼ‚ê‚Ì<termref def='dt-parsedent'>&parsed-entity;</termref>‚ªC<titleref href='wf-entities'>&well-formed;</titleref>‚Æ‚È‚éB</p></item>
+</ulist></p>
+<p>
+<scrap lang='ebnf' id='document'>
+<head>•¶‘</head>
+<prod id='NT-document'><lhs>document</lhs>
+<rhs><nt def='NT-prolog'>prolog</nt>
+<nt def='NT-element'>element</nt>
+<nt def='NT-Misc'>Misc</nt>*</rhs></prod>
+</scrap>
+</p>
+<p><nt def="NT-document">document</nt>¶¬‹K‘¥‚É&match;‚·‚é‚Æ‚ÍCŽŸ‚ðˆÓ–¡‚·‚éB
+<ulist>
+<item><p>a) ˆê‚ˆÈã‚Ì<termref def="dt-element">—v‘f</termref>‚ðŠÜ‚ÞB</p>
+</item>
+
+<!--* N.B. some readers (notably JC) find the following
+paragraph awkward and redundant. I agree it's logically redundant:
+it *says* it is summarizing the logical implications of
+matching the grammar, and that means by definition it's
+logically redundant. I don't think it's rhetorically
+redundant or unnecessary, though, so I'm keeping it. It
+could however use some recasting when the editors are feeling
+stronger. -MSM *-->
+
+<item><p>b) <termdef id="dt-root" term="ƒ‹[ƒg—v‘f"><term>ƒ‹[ƒg</term>–”‚Í•¶‘—v‘f‚Æ‚¢‚¤—v‘f‚ªˆê‚‚¾‚¯‘¶Ý‚µC‚±‚ê‚ÍC‘¼‚Ì—v‘f‚Ì<termref def="dt-content">“à—e</termref>‚ÉŠÜ‚Ü‚ê‚È‚¢B</termdef>‚±‚êˆÈŠO‚Ì‚·‚ׂĂ̗v‘f‚ÍC‚»‚ÌŠJŽnƒ^ƒO‚ª‘¼‚Ì—v‘f‚Ì“à—e‚ÉŠÜ‚Ü‚ê‚ê‚ÎC‘Ήž‚·‚éI—¹ƒ^ƒO‚à“¯‚¶—v‘f‚Ì“à—e‚ÉŠÜ‚Ü‚ê‚éB‚‚܂èC—v‘f‚ÍCŠJŽnƒ^ƒO‹y‚ÑI—¹ƒ^ƒO‚É‚æ‚Á‚Ä‹æØ‚ç‚êC“ü‚êŽq\‘¢‚ð‚È‚·B
+</p></item>
+</ulist>
+</p>
+<p><termdef id="dt-parentchild" term="e—v‘f/Žq—v‘f">‚±‚ê‚ç‚ÌŒ‹‰Ê‚Æ‚µ‚ÄC•¶‘“à‚Ì‚Ç‚Ì”ñƒ‹[ƒg—v‘f<code>C</code>‚ɑ΂µ‚Ä‚àC‚ ‚鑼‚Ì—v‘f<code>P</code>‚ª‘¶Ý‚µC<code>C</code>‚ÍC<code>P</code>‚Ì“à—e‚ÉŠÜ‚Ü‚ê‚邪C<code>P</code>‚Ì“à—e‚ÉŠÜ‚Ü‚ê‚鑼‚Ì—v‘f‚ÉŠÜ‚Ü‚ê‚邱‚Æ‚Í‚È‚¢B‚±‚Ì‚Æ‚«C<code>P</code>‚ð<code>C</code>‚Ì<code>e</code>‚Æ‚¢‚¢C<code>C</code>‚ð<code>P</code>‚Ì<code>Žq</code>‚Æ‚¢‚¤B</termdef></p>
+</div2>
+<div2 id="charsets">
+<head>•¶Žš</head>
+<p>
+
+<!--The data stored in an XML <termref def="dt-entity">entity</termref> is
+either <termref def="dt-text">parsed</termref> or <termref
+def="dt-unparsed">unparsed</termref>. -->
+
+<termdef id="dt-text" term="ƒeƒLƒXƒg">&parsed-entity;‚ÍC<term>ƒeƒLƒXƒg</term>(<termref def="dt-character">•¶Žš</termref>‚Ì•À‚Ñ‚Å‚ ‚Á‚ÄC&markup;–”‚Í•¶Žšƒf[ƒ^‚ð•\‚µ‚Ä‚à‚æ‚¢B)‚ðŠÜ‚ÞB</termdef><termdef id="dt-character" term="•¶Žš"><term>•¶Žš</term>‚ÍCƒeƒLƒXƒg‚ÌŬ’PˆÊ‚Å‚ ‚Á‚ÄCISO/IEC 10646<bibref ref="ISO10646"/>‚É‹K’肳‚ê‚éB<!--Users may extend the ISO/IEC 10646 character repertoire by exploiting the private use areas. -->‹–—e‚·‚镶Žš‚ÍCƒ^ƒuC‰üsC•œ‹A•À‚Ñ‚ÉUnicode‹y‚ÑISO/IEC 10646‚ª‹–—e‚·‚é}Œ`•¶Žš‚Æ‚·‚éB</termdef>
+<scrap lang="ebnf" id="char32">
+<head>•¶Žš‚͈̔Í</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id="NT-Char"><lhs>Char</lhs>
+<rhs>#x9 | #xA | #xD | [#x20-#D7FF] | [#xE000-#xFFFD]
+| [#x10000-#x10FFFF]</rhs>
+<com>”CˆÓ‚ÌUnicode•¶ŽšB‚½‚¾‚µC&surrogate-blocks;CFFFE‹y‚ÑFFFF‚Íœ‚­B</com>
+</prod>
+</prodgroup>
+</scrap>
+</p>
+<p>&character-value;‚ðƒrƒbƒgƒpƒ^ƒ“‚É•„†‰»‚·‚é‹@\‚ÍCŽÀ‘Ì‚²‚ƂɈá‚Á‚Ä‚à‚æ‚¢B‚·‚ׂĂÌXML&processor;‚ÍCISO/IEC 10646‚ÌUTF-8•„†‰»‹y‚ÑUTF-16•„†‰»‚ðŽó‚¯•t‚¯‚È‚¯‚ê‚΂Ȃç‚È‚¢B“ñ‚‚̂ǂ¿‚炪—p‚¢‚ç‚ê‚Ä‚¢‚é‚©‚𖾎¦‚·‚邽‚ß‚Ì‹@\C‹y‚Ñ‘¼‚Ì•„†‰»•û–@‚ð—˜—p‚·‚邽‚ß‚Ì‹@\‚ÍC<titleref href='charencoding'>•¶Žš‚Ì•„†‰»</titleref>‚É‹Lq‚·‚éB</p>
+<p>‚Ç‚Ì•„†‰»•û–@‚ð—p‚¢‚é‚©‚ÉŠÖŒW‚È‚­CISO/IEC 10646‚Ì•¶ŽšW‡‚É‚ ‚é‚·‚ׂĂ̕¶Žš‚ÍC‚»‚ÌUCS-4&code-value;<!-- bit string. -->‚Æ“™‰¿‚È10i”–”‚Í16i”‚É‚æ‚Á‚ÄCŽQÆ‚Å‚«‚éB</p>
+</div2>
+
+<div2 id='sec-common-syn'>
+<head>‹¤’Ê‚Ì\•¶\¬Žq</head>
+
+<p>2.3‚Å‚ÍC•¶–@“à‚ÅL‚­Žg—p‚·‚é‚¢‚­‚‚©‚Ì‹L†‚ð’è‹`‚·‚éB</p>
+<p><nt def="NT-S">S</nt> (‹ó”’)‚ÍCˆê‚ŽႵ‚­‚Í•¡”‚Ì&space-character;(#x20)C•œ‹AC‰üs–”‚̓^ƒu‚©‚笂éB
+
+<scrap lang="ebnf" id='white'>
+<head>‹ó”’</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id='NT-S'><lhs>S</lhs>
+<rhs>(#x20 | #x9 | #xD | #xA)+</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>•Ö‹XãC•¶Žš‚ðC&letter;C”Žš–”‚Í‘¼‚Ì•¶Žš‚É•ª—Þ‚·‚éB&letter;‚ÍCƒAƒ‹ƒtƒ@ƒxƒbƒg“I–”‚Í•\‰¹“I‚Å‚ ‚éŠî–{•¶Žš(ˆê‚–”‚Í•¡”‚Ì&combining-character;‚ªCŒã‚É‘±‚­‚±‚Æ‚à‚ ‚éB)C&ideographic;‚©‚笂éB
+<!--
+Certain layout and format-control characters defined by ISO/IEC 10646
+should be ignored when recognizing identifiers; these are defined by the
+classes <nt def='NT-Ignorable'>Ignorable</nt> and <nt def='NT-
+Extender'>Extender</nt>.
+-->
+ŠeƒNƒ‰ƒX‚É‚¨‚¯‚éŽÀÛ‚Ì•¶Žš‚ɂ‚¢‚Ä‚ÌŠ®‘S‚È’è‹`‚ÍC<titleref href='CharClasses'>•¶ŽšƒNƒ‰ƒX</titleref>‚ÉŠÖ‚·‚é•t˜^‚É‹K’è‚·‚éB</p>
+<p><termdef id="dt-name" term="Name"><term>Name</term>‚ÍC&letter;–”‚Í‚¢‚­‚‚©‚Ì‹æ؂蕶Žš‚̈ê‚‚Ŏn‚Ü‚èC‚»‚ÌŒã‚É&letter;C”ŽšCƒnƒCƒtƒ“C‰ºüCƒRƒƒ“–”‚̓sƒŠƒIƒh‚ª‘±‚­(‚±‚ê‚ç‚𖼑O•¶Žš‚Æ‚¢‚¤B)B</termdef>&string;"<code>xml</code>"–”‚Í<code>(('X'|'x') ('M'|'m') ('L'|'l'))</code>‚É&match;‚·‚é”CˆÓ‚Ì&string;‚ÅŽn‚Ü‚é–¼‘O‚ÍC‚±‚Ì&TR-or-Rec;‚ÌŒ»Ý‚̔Ŗ”‚Í«—ˆ‚̔łł̕W€‰»‚Ì‚½‚ß‚É—\–ñ‚·‚éB
+</p>
+<note>
+<p>XML‚Ì–¼‘O‚Ì’†‚̃Rƒƒ“‚ÍC–¼‘O‹óŠÔ‚Å‚ÌŽÀŒ±‚Ì‚½‚ß‚É—\–ñ‚·‚éBƒRƒƒ“‚̈Ӗ¡‚ÍC«—ˆ‚Ì‚ ‚鎞“_‚Å•W€‰»‚·‚é‚à‚Ì‚Æ‚µC‚»‚Ì‚Æ‚«‚É‚ÍCŽÀŒ±“I‚È–Ú“I‚ŃRƒƒ“‚ðŽg—p‚·‚镶‘‚ðXV‚·‚é•K—v‚ª¶‚¶‚é‰Â”\«‚ª‚ ‚éBXML‚ÅÌ—p‚·‚é–¼‘O‹óŠÔ‚Ì‹@\‚ªC‹æØ‚èŽq‚Æ‚µ‚ÄŽÀۂɃRƒƒ“‚ðŽg—p‚·‚é‚Æ‚¢‚¤•ÛØ‚Í‚È‚¢BŽ–ŽÀãC‚±‚ê‚ÍC–¼‘O‹óŠÔ‚ÌŽÀŒ±‚̈ê‚‚Ƃµ‚ĈȊO‚É‚ÍCXML‚Ì–¼‘O‚Ì’†‚ŃRƒƒ“‚ðŽg—p‚µ‚È‚¢‚Ù‚¤‚ª‚æ‚¢‚±‚Æ‚ðˆÓ–¡‚·‚éB‚µ‚©‚µCXML&processor;‚ÍC–¼‘O•¶Žš‚Æ‚µ‚ăRƒƒ“‚ðŽó‚¯•t‚¯‚邱‚Æ‚ª–]‚Ü‚µ‚¢B
+</p>
+</note>
+<p>
+<nt def='NT-Nmtoken'>Nmtoken</nt> (–¼‘O&token;)‚ÍC–¼‘O•¶Žš‚Å\¬‚·‚é—ñ‚Æ‚·‚éB
+<scrap lang='ebnf'>
+<head>–¼‘O‹y‚Ñ&token;</head>
+<!--
+<prod id='NT-MiscName'><lhs>MiscName</lhs>
+<rhs></rhs>
+</prod>-->
+<prod id='NT-NameChar'><lhs>NameChar</lhs>
+<rhs><nt def="NT-Letter">Letter</nt>
+| <nt def='NT-Digit'>Digit</nt>
+<!--| <nt def='NT-MiscName'>MiscName</nt>-->
+| '.' | '-' | '_' | ':'
+| <nt def='NT-CombiningChar'>CombiningChar</nt>
+<!-- | <nt def='NT-Ignorable'>Ignorable</nt> -->
+| <nt def='NT-Extender'>Extender</nt></rhs>
+</prod>
+<prod id='NT-Name'><lhs>Name</lhs>
+<rhs>(<nt def='NT-Letter'>Letter</nt> | '_' | ':')
+(<nt def='NT-NameChar'>NameChar</nt>)*</rhs></prod>
+<prod id='NT-Names'><lhs>Names</lhs>
+<rhs><nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>)*</rhs></prod>
+<prod id='NT-Nmtoken'><lhs>Nmtoken</lhs>
+<rhs>(<nt def='NT-NameChar'>NameChar</nt>)+</rhs></prod>
+<prod id='NT-Nmtokens'><lhs>Nmtokens</lhs>
+<rhs><nt def='NT-Nmtoken'>Nmtoken</nt> (<nt def='NT-S'>S</nt> <nt
+def='NT-Nmtoken'>Nmtoken</nt>)*</rhs></prod>
+</scrap>
+</p>
+<p>&literal;ƒf[ƒ^‚ÍCˆø—p•„‚ň͂܂ꂽ&string;‚Æ‚µC‚»‚Ì—ñ‚Ì‹æØ‚èŽq‚Æ‚µ‚ÄŽg—p‚·‚éˆø—p•„‚ÍŠÜ‚Ü‚È‚¢B&literal;‚ÍC“à•”ŽÀ‘Ì(<nt def='NT-EntityValue'>EntityValue</nt>)C‘®«’l(<nt def='NT-AttValue'>AttValue</nt>)CŠO•”&identifier;(<nt def="NT-SystemLiteral">SystemLiteral</nt>)‚Ì“à—e‚ÌŽw’è‚ÉŽg—p‚·‚éB–Ú“I‚É‚æ‚Á‚Ä‚ÍC&literal;‘S‘Ì‚ðC‚»‚Ì’†‚Ì&markup;‚Ì‘–¸‚ðs‚Ȃ킸‚ÉCƒXƒLƒbƒv‚·‚邱‚Æ‚ª‚ ‚é(<nt def='NT-SkipLit'>SkipLit</nt>B)B
+<scrap lang='ebnf'>
+<head>&literal;</head>
+<!-- is marked section end legal in entity values etc.?
+James says yes. Handbook page 392, sec. 10.4 seems to me to say no.
+If James is right, leave as is. Otherwise, uncomment
+the next comment and ...
+-->
+<!--
+<prod id='NT-EntityValue'><lhs>EntityValue</lhs>
+<rhs>' " '
+(([^%&amp;"]
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+(([^%&amp;']
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+" ' "</rhs>
+</prod>
+<prod id='NT-AttValue'><lhs>AttValue</lhs>
+<rhs>'"'
+(([^&lt;&amp;"]
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+(([^&lt;&amp;']
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+" ' "</rhs>
+<wfc def="CleanAttrVals"/>
+</prod>
+-->
+<!-- ... and comment out the following, down to ... -->
+<prod id='NT-EntityValue'><lhs>EntityValue</lhs>
+<rhs>' " '
+([^%&amp;"]
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+([^%&amp;']
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+" ' "</rhs>
+</prod>
+<prod id='NT-AttValue'><lhs>AttValue</lhs>
+<rhs>' " '
+([^&lt;&amp;"]
+| <nt def='NT-Reference'>Reference</nt>)*
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+([^&lt;&amp;']
+| <nt def='NT-Reference'>Reference</nt>)*
+" ' "</rhs>
+<!--<wfc def="WF-Attvaldelim"/>-->
+</prod>
+<!-- ... down to here. -->
+<prod id="NT-SystemLiteral"><lhs>SystemLiteral</lhs>
+<rhs><nt def='NT-SkipLit'>SkipLit</nt></rhs>
+</prod>
+<!-- <prod id="NT-URIchar"><lhs>URIchar</lhs>
+<rhs><com>See <loc href="http://www.w3.org/XXX">XXX</loc></com>
+</rhs></prod>
+-->
+<prod id="NT-PubidLiteral"><lhs>PubidLiteral</lhs>
+<rhs>' " ' <nt def='NT-PubidChar'>PubidChar</nt>*
+' " '
+| " ' " (<nt def='NT-PubidChar'>PubidChar</nt> - " ' ")* " ' "</rhs>
+</prod>
+<prod id="NT-PubidChar"><lhs>PubidChar</lhs>
+<rhs>#x20 | #xD | #xA
+|&nbsp;[a-zA-Z0-9]
+|&nbsp;[-'()+,./:=?]</rhs>
+</prod>
+<prod id="NT-SkipLit"><lhs>SkipLit</lhs>
+<rhs>(' " ' [^"]* ' " ')
+|&nbsp;(" ' " [^']* " ' ")</rhs>
+</prod>
+<!-- alternate form, making ms end illegal: -->
+<!--
+<prod id="NT-SkipLit"><lhs>SkipLit</lhs>
+<rhs>(' " ' ([^"]* - ([^"]* ']]&gt;' [^"]*)) ' " ')
+|&nbsp;(" ' " ([^']* - ([^']* ']]&gt;' [^']*)) " ' ")</rhs>
+</prod>
+-->
+</scrap>
+</p>
+<!--
+<wfcnote id="WF-Attvaldelim">
+<head>Delimiters in Attribute Values</head>
+<p>After the expansion of character and entity references,
+an attribute value must not contain a "<code>&lt;</code>"
+or "<code>&amp;</code>" character unless that character was
+introduced by the expansion of a character reference
+or one of the entities &magicents;.</p>
+</wfcnote>-->
+<!--
+This is not quite right: &lt; should be legal, should it not?
+Suppress this WFC until we get it right.
+-->
+<!-- Henry Thompson suggests (in substance, not form: the wording needs
+to be clarified):
+"Cooked Attribute values must not contain &lt; &amp; or the
+quote which closed their uncooked literal,
+unless arising from the expansion of a character reference or
+magic reference
+directly contained in their uncooked literal."
+I'm not sure I agree with this rule, but it's at least coherent,
+which is more than I can say for my attempt.
+-->
+</div2>
+
+<div2 id='syntax'>
+<head>•¶Žšƒf[ƒ^‹y‚Ñ&markup;</head>
+<p><termref def='dt-text'>ƒeƒLƒXƒg</termref>‚ÍC<termref def="dt-chardata">•¶Žšƒf[ƒ^</termref>‹y‚Ñ&markup;‚ª¬Ý‚·‚é‚à‚Ì‚Æ‚µ‚Ä\¬‚·‚éB<termdef id="dt-markup" term="Markup"><term>&markup;</term>‚ÍC<termref def="dt-stag">ŠJŽnƒ^ƒO</termref>C<termref def="dt-etag">I—¹ƒ^ƒO</termref>C<termref def="dt-empty">‹ó—v‘f</termref>C<termref def="dt-entref">ŽÀ‘ÌŽQÆ</termref>C<termref def="dt-charref">•¶ŽšŽQÆ</termref>C<termref def="dt-comment">ƒRƒƒ“ƒg</termref>C<termref def="dt-cdsection">CDATAƒZƒNƒVƒ‡ƒ“</termref> ‚Ì‹æØ‚èŽqC<termref def="dt-doctype">•¶‘Œ^錾</termref>‹y‚Ñ<termref def="dt-pi">ˆ—–½—ß</termref>‚ÌŒ`‚ðŽæ‚éB
+</termdef>
+</p>
+<p><termdef id="dt-chardata" term="Character Data">&markup;‚Å‚Í‚È‚¢‚·‚ׂẴeƒLƒXƒg‚ÍC•¶‘‚Ì<term>•¶Žšƒf[ƒ^</term>‚ð\¬‚·‚éB</termdef></p>
+<p>ƒAƒ“ƒpƒTƒ“ƒh•¶Žš (&amp;)‹y‚Ñ&left-angle-bracket; (&lt;)‚ÍC&markup;‚Ì‹æØ‚èŽq‚Æ‚µ‚ÄC–”‚Í<termref def="dt-comment">ƒRƒƒ“ƒg</termref>C<termref def="dt-pi">ˆ—–½—ß</termref>Žá‚µ‚­‚Í<termref def="dt-cdsection">CDATAƒZƒNƒVƒ‡ƒ“</termref>“à‚ÅŽg—p‚·‚éꇂÉ<emph>‚¾‚¯</emph>C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚ÅoŒ»‚µ‚Ä‚æ‚¢B‚±‚ê‚ç‚Ì•¶Žš‚ÍC“à•”ŽÀ‘Ì錾‚Ì<termref def='dt-litentval'>&literal;ŽÀ‘Ì’l</termref>“à‚É‹Lq‚µ‚Ä‚à‚æ‚¢B Ú‚µ‚­‚ÍC<titleref href='wf-entities'>&well-formed;‚ÌŽÀ‘Ì</titleref>‚ÉŠÖ‚·‚é‹K’è‚ðŽQÆB<!-- FINAL EDIT: restore internal entity decl or leave it out. -->‚±‚ê‚ç‚Ì•¶Žš‚ª‘¼‚Ì•”•ª‚Å•K—v‚Èê‡C”’l‚É‚æ‚镶ŽšŽQÆ–”‚Í&string;"<code>&amp;amp;</code>"‹y‚Ñ&string;"<code>&amp;lt;</code>"‚ðŽg—p‚µC<termref def="dt-escape">&escape;</termref>‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B&right-angle-bracket; (>) ‚ÍC&string;"<code>&amp;gt;</code>"‚ðŽg—p‚µ‚Ä•\Œ»‚µ‚Ä‚à‚æ‚¢B“à—e‚Ì’†‚Å—ñ"<code>]]&gt;</code>"‚ðŽg—p‚·‚é‚Æ‚«‚ÍC‚»‚ꂪC<termref def="dt-cdsection">CDATAƒZƒNƒVƒ‡ƒ“</termref>‚ÌI—¹‚ð&markup;‚µ‚È‚¢ŒÀ‚èC<termref def='dt-compat'>ŒÝŠ·«‚Ì‚½‚ß</termref>C"<code>&amp;gt;</code>"–”‚Í•¶ŽšŽQÆ‚ðŽg—p‚µC&escape;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p>
+
+<p>—v‘f‚Ì“à—e‚Å‚ÍC•¶Žšƒf[ƒ^‚ÍC‚¢‚©‚È‚é&markup;‚ÌŠJŽn‹æØ‚èŽq‚ðŠÜ‚Ü‚È‚¢”CˆÓ‚Ì&char-string;‚Æ‚·‚éBCDATAƒZƒNƒVƒ‡ƒ“‚Å‚ÍC•¶Žšƒf[ƒ^‚Æ‚ÍCCDATAƒZƒNƒVƒ‡ƒ“‚ÌI—¹‹æØ‚èŽq"<code>]]&gt;</code>"‚ðŠÜ‚Ü‚È‚¢”CˆÓ‚Ì&char-string;‚Æ‚·‚éB
+</p>
+<p>
+‘®«’l‚É&single-quote;‹y‚Ñ&double-quote;‚ðŠÜ‚Þ‚½‚ß‚É‚ÍCƒAƒ|ƒXƒgƒƒtƒB–”‚Í&single-quote;(') ‚ÍC"<code>&amp;apos;</code>"‚Æ‚µ‚Ä•\Œ»‚µC&double-quote;(")‚ÍC"<code>&amp;quot;</code>"‚Æ‚µ‚Ä•\Œ»‚·‚éB
+<scrap lang="ebnf">
+<head>•¶Žšƒf[ƒ^</head>
+<prod id='NT-CharData'>
+<lhs>CharData</lhs>
+<rhs>[^&lt;&amp;]* - ([^&lt;&amp;]* ']]&gt;' [^&lt;&amp;]*)</rhs>
+</prod>
+</scrap>
+</p>
+</div2>
+
+<div2 id='sec-comments'>
+<head>ƒRƒƒ“ƒg</head>
+
+<p><termdef id="dt-comment" term="Comment"><term>ƒRƒƒ“ƒg</term>‚ÍC‘¼‚Ì<termref def='dt-markup'>&markup;</termref>‚ÌŠO‚È‚ç‚ÎC•¶‘‚Ì‚Ç‚±‚ÉŒ»‚ê‚Ä‚à‚æ‚¢B‚³‚ç‚ÉC•¶‘Œ^錾“à‚ÅC•¶–@‚ª‹–‚·êŠ‚ÉŒ»‚ê‚Ä‚à‚æ‚¢B
+<!-- TB
+except in a <termref def="dt-cdsection">CDATA section</termref>, i.e. within
+<termref def="dt-elemcontent">element content</termref>, in
+<termref def="dt-mixed">mixed content</termref>, or in the prolog. They must
+not occur within declarations or tags. -->
+ƒRƒƒ“ƒg‚ÍC•¶‘‚Ì<termref def="dt-chardata">•¶Žšƒf[ƒ^</termref>‚̈ꕔ‚Å‚Í‚È‚¢BXML&processor;‚ÍC&application;‚ªƒRƒƒ“ƒg‚̃eƒLƒXƒg‚ðŽæ‚èo‚·‚±‚Æ‚ð‰Â”\‚Æ‚µ‚Ä‚à‚æ‚¢‚ªC‚»‚¤‚µ‚È‚­‚Æ‚à‚æ‚¢B
+<termref def="dt-compat">ŒÝŠ·«‚Ì‚½‚ß</termref>C&string;"<code>--</code>" i&double-hyphen;j‚ÍCƒRƒƒ“ƒg“à‚ÅŒ»‚ê‚Ä‚Í‚È‚ç‚È‚¢B
+<scrap lang="ebnf">
+<head>ƒRƒƒ“ƒg</head>
+<prod id='NT-Comment'><lhs>Comment</lhs>
+<rhs>'&lt;!--'
+((<nt def='NT-Char'>Char</nt> - '-')
+| ('-' (<nt def='NT-Char'>Char</nt> - '-')))*
+'-->'</rhs>
+<!--
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs> -->
+</prod>
+</scrap>
+</termdef></p>
+<p>ƒRƒƒ“ƒg‚Ì—á‚ðŽŸ‚ÉŽ¦‚·B
+<eg>&lt;!&como; declarations for &lt;head> &amp; &lt;body> &comc;&gt;</eg>
+</p>
+</div2>
+
+<div2 id='sec-pi'>
+<head>ˆ—–½—ß</head>
+
+<p><termdef id="dt-pi" term="Processing instruction"><term>ˆ—–½—ß</term>(PI)‚É‚æ‚Á‚ÄC&application;‚Ì‚½‚ß‚Ì–½—߂𕶑‚É“ü‚ê‚邱‚Æ‚ª‚Å‚«‚éB
+
+<scrap lang="ebnf">
+<head>ˆ—–½—ß</head>
+<prod id='NT-PI'><lhs>PI</lhs>
+<rhs>'&lt;?' <nt def='NT-PITarget'>PITarget</nt>
+(<nt def='NT-S'>S</nt>
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*)))?
+&pic;</rhs></prod>
+<prod id='NT-PITarget'><lhs>PITarget</lhs>
+<rhs><nt def='NT-Name'>Name</nt> -
+(('X' | 'x') ('M' | 'm') ('L' | 'l'))</rhs>
+</prod>
+</scrap></termdef>
+PI‚ÍC•¶‘‚Ì<termref def="dt-chardata">•¶Žšƒf[ƒ^</termref>‚̈ꕔ‚Å‚Í‚È‚¢‚ªC&application;‚É“n‚³‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢BPI‚ÍC–½—ß‚ª“n‚³‚ê‚é&application;‚ð&identify;‚½‚ß‚ÉŽg—p‚·‚é&target; (<nt def='NT-PITarget'>PITarget</nt>) ‚ÅŽn‚Ü‚éB&target;–¼ "<code>XML</code>"C"<code>xml</code>"‚È‚Ç‚ÍC‚±‚Ì&TR-or-Rec;‚ÌŒ»Ý‚̔Ŗ”‚Í«—ˆ‚̔ł̋KŠi‰»—p‚É—\–ñ‚·‚éBXML‚Ì<termref def='dt-notation'>‹L–@</termref>‹@\‚ðCPI‚Ì&target;‚ð錾‚·‚邽‚ß‚ÉŽg—p‚µ‚Ä‚à‚æ‚¢B
+</p>
+</div2>
+
+<div2 id='sec-cdata-sect'>
+<head>CDATAƒZƒNƒVƒ‡ƒ“</head>
+
+<p><termdef id="dt-cdsection" term="CDATA Section"><term>CDATAƒZƒNƒVƒ‡ƒ“</term>‚ÍC•¶Žšƒf[ƒ^‚ªoŒ»‚·‚é‚Æ‚±‚ë‚Å‚ ‚ê‚ÎC‚Ç‚±‚ÉoŒ»‚µ‚Ä‚à‚æ‚¢B‚±‚ê‚ÍC‚»‚¤‚Å‚È‚¯‚ê‚ÎC&markup;‚Æ‚µ‚Ä”FŽ¯‚·‚镶Žš‚ðŠÜ‚ÞCƒeƒLƒXƒg‚Ì‹æ‰æ‚ð&escape;‚·‚é‚Ì‚ÉŽg—p‚·‚éBCDATAƒZƒNƒVƒ‡ƒ“‚ÍC&string;"<code>&lt;![CDATA[</code>"‚ÅŽn‚Ü‚èC&string;
+"<code>]]&gt;</code>"‚ÅI‚í‚éB
+<scrap lang="ebnf">
+<head>CDATAƒZƒNƒVƒ‡ƒ“</head>
+<prod id='NT-CDSect'><lhs>CDSect</lhs>
+<rhs><nt def='NT-CDStart'>CDStart</nt>
+<nt def='NT-CData'>CData</nt>
+<nt def='NT-CDEnd'>CDEnd</nt></rhs></prod>
+<prod id='NT-CDStart'><lhs>CDStart</lhs>
+<rhs>'&lt;![CDATA['</rhs>
+</prod>
+<prod id='NT-CData'><lhs>CData</lhs>
+
+<rhs>(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+</rhs>
+</prod>
+<prod id='NT-CDEnd'><lhs>CDEnd</lhs>
+<rhs>']]&gt;'</rhs>
+</prod>
+</scrap>
+
+CDATAƒZƒNƒVƒ‡ƒ““à‚Å‚ÍC—ñ<nt def='NT-CDEnd'>CDEnd</nt>‚¾‚¯‚ð&markup;‚Æ‚µ‚Ä”FŽ¯‚·‚é‚Ì‚ÅC&left-angle-bracket;‹y‚уAƒ“ƒpƒTƒ“ƒh‚ÍC‚»‚Ì&literal;Œ`Ž®‚ÅoŒ»‚µ‚Ä‚æ‚¢B‚»‚ê‚ç‚ÍC"<code>&amp;lt;</code>"‹y‚Ñ"<code>&amp;amp;</code>"‚ðŽg—p‚µ‚Ä&escape;‚·‚é•K—v‚Í‚È‚¢BCDATAƒZƒNƒVƒ‡ƒ“‚ÍC“ü‚êŽq‚É‚Í‚Å‚«‚È‚¢B
+</termdef>
+</p>
+
+<p>"<code>&lt;greeting></code>"‹y‚Ñ"<code>&lt;/greeting></code>"‚ðC<termref def='dt-markup'>&markup;</termref>‚Å‚Í‚È‚­C<termref def='dt-chardata'>•¶Žšƒf[ƒ^</termref>‚Æ‚µ‚Ä”FŽ¯‚·‚éCDATAƒZƒNƒVƒ‡ƒ“‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg>&lt;![CDATA[&lt;greeting>Hello, world!&lt;/greeting>]]&gt;</eg>
+</p>
+</div2>
+
+<div2 id='sec-prolog-dtd'>
+<head>&prolog;‹y‚Ñ•¶‘Œ^錾</head>
+
+<p><termdef id='dt-xmldecl' term='XML Declaration'>XML•¶‘‚ÍCŽg—p‚·‚éXML‚Ì&version;‚ðŽw’è‚·‚é<term>XML錾</term>‚ÅŽn‚ß‚Ä‚à‚æ‚­C–”‚»‚¤‚·‚é‚Ì‚ª–]‚Ü‚µ‚¢B
+</termdef>
+</p>
+<p>‚±‚Ì&TR-or-Rec;‚Ì‚±‚Ì&version;‚É“K‡‚·‚邱‚Æ‚ðŽ¦‚·‚½‚ß‚É‚ÍC&version;”Ô† "<code>1.0</code>" ‚ðŽg—p‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚ ‚镶‘‚ªC‚±‚Ì&TR-or-Rec;‚Ì‚±‚Ì&version;‚É“K‡‚µ‚È‚¢‚Æ‚«C’l"<code>1.0</code>"‚ðŽg—p‚·‚é‚Ì‚ÍC&error;‚Æ‚·‚éB‚±‚Ì&TR-or-Rec;‚Ì¡Œã‚Ì&version;‚É"<code>1.0</code>"ˆÈŠO‚Ì’l‚ð•t—^‚·‚邱‚Æ‚ªCXMLì‹ÆƒOƒ‹[ƒv‚̈Ó}‚¾‚ªCXML‚Ì«—ˆ‚Ì&version;‚ð쬂·‚邱‚Æ‚ÌŠm–ñ‚ðŽ¦‚·‚킯‚Å‚Í‚È‚­C쬂µ‚½‚Æ‚µ‚Ä‚àC”Ô†•t‚¯‚ɂ‚¢‚ÄC“Á’è‚Ì•û–@‚ðŽg—p‚·‚邱‚Æ‚ÌŠm–ñ‚ðŽ¦‚·‚킯‚Å‚à‚È‚¢B«—ˆ‚Ì&version;‚̉”\«‚ðœŠO‚µ‚È‚¢‚Ì‚ÅC•K—v‚Èê‡CŽ©“®“I‚È&version;‚Ì”FŽ¯‚ð‰Â”\‚Æ‚·‚éŽè’i‚Æ‚µ‚ÄC‚±‚Ì\¬Žq‚ð’ñ‹Ÿ‚·‚éB&processor;‚ÍCƒTƒ|[ƒg‚µ‚Ä‚¢‚È‚¢&version;‚щƒxƒ‹•t‚¯‚µ‚½•¶‘‚ðŽó‚¯Žæ‚Á‚½‚Æ‚«C&error;‚ð’Ê’m‚µ‚Ä‚à‚æ‚¢B
+</p>
+<p>XML•¶‘“à‚Ì&markup;‚Ì‹@”\‚ÍC‹L‰¯\‘¢‹y‚ј_—\‘¢‚ð‹Lq‚·‚邱‚ÆC•À‚Ñ‚É‘®«‹y‚Ñ‘®«’l‚̑΂ð˜_—\‘¢‚ÉŠÖ˜A‚¯‚邱‚Æ‚É‚ ‚éBXML‚ÍC˜_—\‘¢‚ɂ‚¢‚Ă̧–ñðŒ‚ð’è‹`‚·‚邽‚ßC‹y‚Ñ‚ ‚ç‚©‚¶‚ß’è‹`‚³‚ꂽ‹L‰¯’PˆÊ‚ðŽg—p‚Å‚«‚邽‚ß‚Ì‹@\‚Æ‚µ‚ÄC<termref def="dt-doctype">•¶‘Œ^錾</termref>‚ð’ñ‹Ÿ‚·‚éB<!-- old
+The function of the markup in an XML document is to describe its
+storage and logical structures, and associate attribute-value pairs with the
+logical structure.
+XML provides a
+mechanism, the <termref def="dt-doctype">document type declaration</termref>,
+to
+define constraints on that logical structure and to support the use of
+predefined storage units. --><termdef id="dt-valid" term="Validity">XML•¶‘‚ª<term>&valid;</term>‚Æ‚ÍC•¶‘Œ^錾‚ð‚à‚¿C‚»‚Ì•¶‘Œ^錾‚ÉŽ¦‚·§–ñðŒ‚ð–ž‚½‚·‚±‚Æ‚Æ‚·‚éB
+</termdef></p>
+<p>•¶‘Œ^錾‚ÍC•¶‘‚Ìʼn‚Ì<termref def="dt-element">—v‘f</termref>‚Ì‘O‚ÉŒ»‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+<scrap lang="ebnf" id='xmldoc'>
+<head>&prolog;</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-prolog'><lhs>prolog</lhs>
+<rhs><nt def='NT-XMLDecl'>XMLDecl</nt>?
+<nt def='NT-Misc'>Misc</nt>*
+(<nt def='NT-doctypedecl'>doctypedecl</nt>
+<nt def='NT-Misc'>Misc</nt>*)?</rhs></prod>
+<prod id='NT-XMLDecl'><lhs>XMLDecl</lhs>
+<rhs>&xmlpio;
+<nt def='NT-VersionInfo'>VersionInfo</nt>
+<nt def='NT-EncodingDecl'>EncodingDecl</nt>?
+<nt def='NT-SDDecl'>SDDecl</nt>?
+<nt def="NT-S">S</nt>?
+&pic;</rhs>
+</prod>
+<prod id='NT-VersionInfo'><lhs>VersionInfo</lhs>
+<rhs><nt def="NT-S">S</nt> 'version' <nt def='NT-Eq'>Eq</nt>
+('"<nt def="NT-VersionNum">VersionNum</nt>"'
+| "'<nt def="NT-VersionNum">VersionNum</nt>'")</rhs>
+</prod>
+<prod id='NT-Eq'><lhs>Eq</lhs>
+<rhs><nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?</rhs></prod>
+<prod id="NT-VersionNum">
+<lhs>VersionNum</lhs>
+<rhs>([a-zA-Z0-9_.:] | '-')+</rhs>
+</prod>
+<prod id='NT-Misc'><lhs>Misc</lhs>
+<rhs><nt def='NT-Comment'>Comment</nt> | <nt def='NT-PI'>PI</nt> |
+<nt def='NT-S'>S</nt></rhs></prod>
+</prodgroup>
+</scrap></p>
+
+<p>
+—Ⴆ‚ÎCŽŸ‚ÉŽ¦‚·Š®‘S‚ÈXML•¶‘‚ÍC<termref def="dt-wellformed">&well-formed;</termref>‚Å‚ ‚邪<termref def="dt-valid">&valid;</termref>‚Å‚Í‚È‚¢B
+<eg><![CDATA[<?xml version="1.0"?>
+<greeting>Hello, world!</greeting>
+]]></eg>
+ŽŸ‚Ì•¶‘‚à“¯—l‚Æ‚·‚éB
+<eg><![CDATA[<greeting>Hello, world!</greeting>
+]]></eg>
+</p>
+<p><termdef id="dt-doctype" term="Document Type Declaration">
+XML‚Ì<term>•¶‘Œ^錾</term>‚ÍC‚ ‚镶‘ƒNƒ‰ƒX‚Ì‚½‚ß‚Ì•¶–@‚ð’ñ‹Ÿ‚·‚é<termref def='dt-markupdecl'>&markup;錾</termref>‚ðŠÜ‚Þ‚©C–”‚ÍŽQÆ‚·‚éB‚±‚Ì•¶–@‚ðC•¶‘Œ^’è‹`–”‚Í<term>DTD</term>‚Æ‚¢‚¤B•¶‘Œ^錾‚ÍC&markup;錾‚ðŠÜ‚ñ‚¾ŠO•”&subset;(“Á•Ê‚ÈŽí—Þ‚Ì<termref def='dt-extent'>ŠO•”ŽÀ‘Ì</termref>)‚ðŽQÆ‚Å‚«C–”‚Í“à•”&subset;‚É’¼Ú&markup;錾‚ðŠÜ‚Þ‚±‚Æ‚à‚Å‚«‚éB‚³‚ç‚ÉC‚»‚Ì—¼•û‚à‰Â”\‚Æ‚·‚éB‚ ‚镶‘‚ÌDTD‚ÍC—¼•û‚Ì&subset;‚ð‚Ü‚Æ‚ß‚½‚à‚Ì‚Æ‚µ‚Ä\¬‚·‚éB</termdef>
+</p>
+<p><termdef id="dt-markupdecl" term="markup declaration">
+<term>&markup;錾</term>‚ÍC<termref def="dt-eldecl">—v‘fŒ^錾</termref>C <termref def="dt-attdecl">‘®«ƒŠƒXƒg錾</termref>C<termref def="dt-entdecl">ŽÀ‘Ì錾</termref>–”‚Í<termref def="dt-notdecl">‹L–@錾</termref>‚Æ‚·‚éB</termdef>ŽŸ‚ÉŽ¦‚·&well-formed;§–ñ‹y‚Ñ&validity;§–ñ‚É‹K’è‚·‚邪C‚±‚ê‚ç‚Ì錾‚ÍC<termref def='dt-PE'>&parameter;ŽÀ‘Ì</termref>“à‚É‘S‘Ì–”‚͈ꕔ‚ªŠÜ‚Ü‚ê‚Ä‚à‚æ‚¢BÚ‚µ‚¢‹K’è‚ÍC<titleref xml-link="simple" href="sec-physical-struct">•¨—\‘¢</titleref>‚ÉŠÖ‚·‚é‹K’è‚ðŽQÆ‚Ì‚±‚ÆB</p>
+<scrap lang="ebnf" id='dtd'>
+<head>•¶‘Œ^’è‹`</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-doctypedecl'><lhs>doctypedecl</lhs>
+<rhs>'&lt;!DOCTYPE' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt>
+<nt def='NT-ExternalID'>ExternalID</nt>)?
+<nt def='NT-S'>S</nt>? ('['
+(<nt def='NT-markupdecl'>markupdecl</nt>
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-S'>S</nt>)*
+']'
+<nt def='NT-S'>S</nt>?)? '>'</rhs>
+<vc def="vc-roottype"/>
+<!--<vc def="vc-nonnullDTD"/>-->
+</prod>
+<!--
+<prod id='NT-markupdecls'><lhs>markupdecls</lhs>
+<rhs>
+(<nt def='NT-S'>S</nt>?
+<nt def='NT-markupdecl'>markupdecl</nt>
+<nt def='NT-S'>S</nt>?)*
+</rhs></prod>
+-->
+<prod id='NT-markupdecl'><lhs>markupdecl</lhs>
+<rhs><nt def='NT-elementdecl'>elementdecl</nt>
+| <nt def='NT-AttlistDecl'>AttlistDecl</nt>
+| <nt def='NT-EntityDecl'>EntityDecl</nt>
+| <nt def='NT-NotationDecl'>NotationDecl</nt>
+| <nt def='NT-PI'>PI</nt>
+| <nt def='NT-Comment'>Comment</nt>
+<!--| <nt def='NT-InternalPERef'>InternalPERef</nt> --></rhs>
+<vc def='vc-PEinMarkupDecl'/>
+<wfc def="wfc-PEinInternalSubset"/>
+</prod>
+<!--
+<prod id="NT-InternalPERef"><lhs>InternalPERef</lhs>
+<rhs><nt def="NT-PEReference">PEReference</nt></rhs>
+<wfc def="wfc-integraldec"/>
+</prod>
+-->
+</prodgroup>
+</scrap>
+<vcnote id="vc-roottype">
+<head>&root;—v‘fŒ^</head>
+<p>
+•¶‘Œ^錾‚É‚¨‚¯‚é<nt def='NT-Name'>Name</nt>‚ÍC&root;—v‘f‚ÌŒ^‚Æ&match;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+</vcnote>
+<!--
+<vcnote id="vc-nonnullDTD">
+<head>Non-null DTD</head>
+<p>
+The internal and external subsets of the DTD must not both
+be empty.
+</p>
+</vcnote>
+-->
+<vcnote id='vc-PEinMarkupDecl'>
+<head>錾‹y‚Ñ&parameter;ŽÀ‘Ì‚ªŒµ–§‚É“ü‚êŽq‚ð‚È‚·‚±‚Æ</head>
+<p>&parameter;ŽÀ‘Ì<termref def='dt-repltext'>‚Ì&replacement-text;</termref>‚ÍC&markup;錾“à‚É‚¨‚¢‚ÄCŒµ–§‚É“ü‚êŽq‚É‚È‚Á‚Ä‚¢‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚‚܂èC&markup;錾(<nt def='NT-markupdecl'>markupdecl</nt>)‚Ìʼn–”‚ÍÅŒã‚Ì•¶Žš‚ªC<termref def='dt-PERef'>&parameter;ŽÀ‘ÌŽQÆ</termref>‚Ì‘ÎÛ‚Æ‚È‚é&replacement-text;‚ÉŠÜ‚Ü‚ê‚ê‚ÎC—¼•û‚Æ‚à“¯‚¶&replacement-text;‚ÉŠÜ‚Ü‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p>
+</vcnote>
+<wfcnote id="wfc-PEinInternalSubset">
+<head>“à•”&subset;“à‚Ì&parameter;ŽÀ‘Ì</head>
+<p>DTD‚Ì“à•”&subset;‚Å‚ÍC<termref def='dt-PERef'>&parameter;ŽÀ‘ÌŽQÆ</termref>‚ÍC&markup;錾‚ªoŒ»‰Â”\‚Èꊂ¾‚¯‚ÉoŒ»‚Å‚«‚éB&markup;錾“à‚É‚ÍoŒ»‚Å‚«‚È‚¢(‚±‚̧–ñ‚ÍCŠO•”&parameter;ŽÀ‘Ì–”‚ÍŠO•”&subset;‚Å‚ÌŽQÆ‚É‚Í“K—p‚µ‚È‚¢B)B
+</p>
+</wfcnote>
+<p>
+“à•”&subset;‚Ì‚Æ‚«‚Æ“¯—l‚ÉCŠO•”&subset;‹y‚ÑDTD‚É‚¨‚¢‚ÄŽQÆ‚·‚é”CˆÓ‚ÌŠO•”&parameter;ŽÀ‘Ì‚ÍC”ñI’[‹L†<nt def="NT-markupdecl">markupdecl</nt>‚É‚æ‚Á‚Ä‹–‚³‚ê‚éŒ^‚ÌCˆê˜A‚ÌŠ®‘S‚È&markup;錾‚Å\¬‚³‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢B&markup;錾‚ÌŠÔ‚É‚ÍC‹ó”’–”‚Í<termref def="dt-PERef">&parameter;ŽÀ‘ÌŽQÆ</termref>‚ð’u‚¢‚Ä‚à‚æ‚¢B‚µ‚©‚µCŠO•”&subset;–”‚ÍŠO•”&parameter;ŽÀ‘Ì‚Ì“à—e‚̈ꕔ‚ÍC<termref def="dt-cond-section">ðŒ•t‚«ƒZƒNƒVƒ‡ƒ“</termref>‚ðŽg—p‚µ‚Ä–³Ž‹‚µ‚Ä‚à‚æ‚¢B“à•”ƒTƒuƒZƒbƒg‚Å‚ÍC‚±‚ê‚Í‹–‚³‚ê‚È‚¢B
+<!--In the external subset, however, parameter-entity references can
+be used to replace constructs prefixed by "<code>%</code>" in a production of
+the grammar, and <termref def="dt-cond-section">conditional sections</termref>
+may occur.
+In the internal subset, by contrast, conditional sections may not
+occur and the only parameter-entity references
+allowed are those which match the non-terminal
+<nt def="NT-InternalPERef">InternalPERef</nt>
+within the rule for <nt def="NT-doctypedecl">markupdecl</nt>.
+-->
+<scrap id="ext-Subset">
+<head>ŠO•”&subset;</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-extSubset'><lhs>extSubset</lhs>
+<rhs>(
+<nt def='NT-markupdecl'>markupdecl</nt>
+| <nt def='NT-conditionalSect'>conditionalSect</nt>
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-S'>S</nt>
+)*</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>ŠO•”&subset;‹y‚ÑŠO•”&parameter;ŽÀ‘Ì‚ÍC‚»‚Ì“à‚Å‚ÍC&parameter;ŽÀ‘Ì‚ª&markup;錾‚Ì<emph>ŠÔ</emph>‚¾‚¯‚Å‚È‚­C&markup;錾‚Ì<emph>“à</emph>‚Å‚à”FŽ¯‚³‚ê‚éC‚Æ‚¢‚¤“_‚Å‚à“à•”&subset;‚Ƃ͈قȂéB
+</p>
+<p>•¶‘Œ^錾•t‚«‚ÌXML•¶‘‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE greeting SYSTEM "hello.dtd">
+<greeting>Hello, world!</greeting>
+]]></eg>
+<termref def="dt-sysid">ƒVƒXƒeƒ€&identifier;</termref> "<code>hello.dtd</code>"‚ªC•¶‘‚ÌDTD‚ÌURI‚Æ‚È‚éB</p>
+<p>ŽŸ‚Ì—á‚Ì‚Æ‚¨‚èC錾‚ð‹ÇŠ“I‚É—^‚¦‚邱‚Æ‚à‚Å‚«‚éB
+<eg><![CDATA[<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE greeting [
+ <!ELEMENT greeting (#PCDATA)>
+]>
+<greeting>Hello, world!</greeting>
+]]></eg>
+ŠO•”&subset;‹y‚Ñ“à•”&subset;‚Ì—¼•û‚ðŽg—p‚·‚é‚Æ‚«‚ÍC“à•”&subset;‚ªŠO•”&subset;‚æ‚èæ‚ÉoŒ»‚µ‚½‚ÆŒ©‚È‚·B<!--* 'is considered to'? boo. whazzat mean? -->‚±‚ê‚ÍC“à•”&subset;‚ÌŽÀ‘Ì‹y‚Ñ‘®«ƒŠƒXƒg錾‚ªCŠO•”&subset;‚ÌŽÀ‘Ì‹y‚Ñ‘®«ƒŠƒXƒg錾‚æ‚è—Dæ‚·‚é‚Æ‚¢‚¤Œø‰Ê‚ð‚à‚½‚ç‚·B
+</p>
+</div2>
+
+<div2 id='sec-rmd'>
+<head>&standalone;•¶‘錾</head>
+<p><termref def="dt-xml-proc">XML&processor;</termref>‚ÍC&application;‚É•¶‘‚Ì“à—e‚ð“n‚·‚ªC&markup;錾‚ÍC‚±‚Ì“à—e‚ɉe‹¿‚ð—^‚¦‚邱‚Æ‚ª‚ ‚éB‘®«‚Ì&default-value;‹y‚ÑŽÀ‘Ì錾‚ð‚»‚Ì—á‚Æ‚·‚éBXML錾‚̈ꕔ•ª‚Æ‚µ‚ÄoŒ»‚Å‚«‚é&standalone;•¶‘錾‚ÍC•¶‘‚ªC‚»‚Ì&markup;錾‚Ì‘¶Ý‚É‚æ‚Á‚ĉe‹¿‚³‚ê‚È‚¢‚±‚Æ‚ðŽw‚µŽ¦‚·i•’ÊC‚»‚Ì&markup;錾‚ª‘¶Ý‚µ‚È‚¢‚½‚ß‚ÉC‚±‚ꂪ‚¢‚¦‚éBjB
+<scrap lang="ebnf" id='fulldtd'>
+<head>&standalone;•¶‘錾</head>
+<prodgroup pcw2="4" pcw4="19.5" pcw5="9">
+<prod id='NT-SDDecl'><lhs>SDDecl</lhs>
+<rhs>
+<nt def="NT-S">S</nt>
+'standalone' <nt def='NT-Eq'>Eq</nt> "'" ('yes' | 'no') "'"
+</rhs>
+<rhs>
+| <nt def="NT-S">S</nt>
+'standalone' <nt def='NT-Eq'>Eq</nt> '"' ('yes' | 'no') '"'
+</rhs><vc def='vc-check-rmd'/></prod>
+</prodgroup>
+</scrap></p>
+<p>&standalone;•¶‘錾‚É‚¨‚¢‚Ä‚Í, "<code>yes</code>"‚Ì’l‚ÍC<termref def='dt-docent'>•¶‘ŽÀ‘Ì</termref>‚ÌŠO•”‚ÉiDTD‚ÌŠO•”&subset;“à‚ÉC–”‚Í“à•”&subset;‚©‚çŽQÆ‚³‚ê‚éŠO•”ƒpƒ‰ƒƒ^ŽÀ‘Ì“à‚ÉjCXML&processor;‚©‚ç&application;‚Ö‚Æ“n‚³‚ê‚éî•ñ‚ɉe‹¿‚·‚é&markup;錾‚ª‘¶Ý‚µ‚È‚¢‚±‚Æ‚ðˆÓ–¡‚·‚éB"<code>no</code>"‚Ì’l‚ÍC‚»‚ÌŠO•”&markup;錾‚ª‘¶Ý‚·‚é‚©C–”‚Í‘¶Ý‚·‚é‰Â”\«‚ª‚ ‚邱‚Æ‚ðˆÓ–¡‚·‚éB&standalone;•¶‘錾‚ÍC‚»‚Ì<emph>錾</emph>‚ª•¶‘ŠO•”‚É‘¶Ý‚·‚é‚©‚Ç‚¤‚©‚ðŽ¦‚·‚¾‚¯‚É’ˆÓ‚·‚邱‚ÆBŠO•”ŽÀ‘Ì‚Ö‚ÌŽQÆ‚ª•¶‘“à‚É‘¶Ý‚µ‚Ä‚¢‚Ä‚àC‚»‚ÌŽÀ‘Ì‚ª“à•”“I‚É錾‚³‚ê‚Ä‚¢‚é‚Æ‚«‚ÍC•¶‘‚Ì&standalone;‚Ìó‘Ԃɂ͉e‹¿‚ð—^‚¦‚È‚¢B</p>
+
+<p>ŠO•”‚É&markup;錾‚ª‘¶Ý‚µ‚È‚¯‚ê‚ÎC&standalone;•¶‘錾‚͈Ӗ¡‚ð‚à‚½‚È‚¢BŠO•”‚É&markup;錾‚ª‘¶Ý‚µC&standalone;•¶‘錾‚ª‘¶Ý‚µ‚È‚¢ê‡‚ÍC<code>"no"</code> ‚Ì’l‚ÌÝ’è‚ð‰¼’è‚·‚éB</p>
+<p>XML•¶‘‚Å <code>standalone="no"</code> ‚ªÝ’肳‚ê‚Ä‚¢‚é‚à‚Ì‚ÍC‚ ‚éƒAƒ‹ƒSƒŠƒYƒ€‚Å&standalone;•¶‘‚É•ÏŠ·‚Å‚«C‚±‚Ì•¶‘‚ÍCƒlƒbƒgƒ[ƒN”zM&application;‚É‚Æ‚Á‚Ä–]‚Ü‚µ‚¢‚©‚à‚µ‚ê‚È‚¢B</p>
+<vcnote id='vc-check-rmd'>
+<head>&standalone;•¶‘錾</head>
+<p>&standalone;•¶‘錾‚ÍC‰½‚ç‚©‚ÌŠO•”&markup;錾‚ªŽŸ‚Ì‚¢‚¸‚ê‚©‚ð錾‚µ‚Ä‚¢‚é‚Æ‚«‚ÍC’l "<code>no</code>" ‚ðŽæ‚ç‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+<ulist>
+<item><p>a) <termref def="dt-default">&default;</termref>’l•t‚«‚Ì‘®«‚Å‚ ‚Á‚ÄC‚±‚Ì‘®«‚ª“K—p‚³‚ê‚é—v‘f‚ªC‘®«’l‚ðŽw’肹‚¸‚É•¶‘“à‚ÉŒ»‚ê‚é‚à‚ÌB</p></item>
+<item><p>b) &magicents;ˆÈŠO‚ÌŽÀ‘Ì‚Å‚ ‚Á‚ÄC‚»‚ÌŽÀ‘̂ɑ΂·‚é<termref def="dt-entref">ŽQÆ</termref>‚ª•¶‘“à‚ÉoŒ»‚·‚é‚à‚ÌB</p>
+</item>
+<item><p>c) ’l‚ª<titleref href='AVNormalize'>³‹K‰»</titleref>‚Ì‘ÎÛ‚Æ‚È‚é‘®«‚Å‚ ‚Á‚ÄC³‹K‰»‚ÌŒ‹‰Ê‚Æ‚µ‚ĕω»‚·‚é’l‚ª•¶‘“à‚Å‘®«‚ÉŽw’肳‚ê‚é‚à‚ÌB</p></item>
+<item>
+<p>d) <termref def="dt-elemcontent">—v‘f“à—e</termref>‚ð‚à‚—v‘fŒ^‚Å‚ ‚Á‚ÄC‹ó”’‚ª‚»‚Ì—v‘fŒ^‚Ì‚¢‚¸‚ê‚©‚̃Cƒ“ƒXƒ^ƒ“ƒX“à‚É’¼ÚŒ»‚ê‚é‚à‚ÌB
+</p></item>
+</ulist>
+</p>
+</vcnote>
+<p>&standalone;•¶‘錾•t‚«‚ÌXML錾‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg>&lt;?xml version="&XML.version;" standalone='yes'?></eg></p>
+</div2>
+<div2 id='sec-white-space'>
+<head>‹ó”’‚̎戵‚¢</head>
+<p>XML•¶‘‚ð•ÒW‚·‚é‚Æ‚«‚ÍC&markup;‚ð–Ú—§‚½‚¹“Ç‚Ý‚â‚·‚­‚·‚邽‚ß‚ÉCg‹ó”’h(&space;Cƒ^ƒu‹y‚Ñ‹ó”’sB‚±‚Ì&TR-or-Rec;‚Å‚ÍC”ñI’[‹L†‚Ì<nt def='NT-S'>S</nt>‚Å•\‚·)‚ðŽg‚¤‚Æ•Ö—˜‚È‚±‚Æ‚ª‘½‚¢B‚»‚Ì‹ó”’‚ÍC”z•z‚·‚é&version;‚Ì•¶‘‚̈ꕔ‚Æ‚µ‚Ċ܂߂邱‚Æ‚ðˆÓ}‚µ‚È‚¢‚Ì‚ð•’Ê‚Æ‚·‚éB‚µ‚©‚µCgˆÓ–¡‚Ì‚ ‚éh‹ó”’‚Å‚ ‚Á‚ÄC”z•z‚·‚é&version;‚ÉŽc‚³‚È‚¯‚ê‚΂Ȃç‚È‚¢‚à‚Ì‚à‘½‚¢B—Ⴆ‚ÎCŽ‹y‚у\[ƒXƒR[ƒh‚É‚¨‚¯‚é‹ó”’‚ª‚ ‚éB</p>
+<p><termref def='dt-xml-proc'>XML&processor;</termref>‚ÍC•¶‘“à‚Ì&markup;ˆÈŠO‚Ì‚·‚ׂĂ̕¶Žš‚ðC‚»‚Ì‚Ü‚Ü•ÏX‚¹‚¸‚É&application;‚É“n‚³‚È‚¯‚ê‚΂Ȃç‚È‚¢B<termref def='dt-validating'>&validating;XML&processor;</termref>‚ÍC<termref def="dt-elemcontent">—v‘f“à—e</termref>‚Ì’†‚̋󔒂𑼂̔ñ&markup;•¶Žš‚©‚ç‹æ•Ê‚µC&application;‘¤‚É—v‘f“à—e‚Ì’†‚Ì‹ó”’‚ªd—v‚Å‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚ð“`‚¦‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p>
+<p>
+"<code>xml:space</code>"‚Æ‚¢‚¤“Á•Ê‚È<termref def='dt-attr'>‘®«</termref>‚𕶑‚É‘}“ü‚·‚邱‚Æ‚É‚æ‚Á‚ÄC‹ó”’‚ðd—v‚Æ‚·‚éˆÓ}‚ðŽ¦‚µ‚Ä‚à‚æ‚¢B‚±‚Ì‘®«‚ð“K—p‚·‚é—v‘f‚ÉŒ»‚ê‚é‹ó”’‚ðCƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªd—v‚È‚à‚Ì‚Æ‚µ‚Ĉµ‚¤‚±‚Æ‚ð—v‹‚·‚éC‚Æ‚¢‚¤ˆÓ}‚ðŽ¦‚·B</p>
+<p>&valid;‚È•¶‘‚Å‚ÍC‚±‚Ì‘®«‚ðŽg—p‚·‚éꇂÍC‘¼‚Ì‘®«‚Æ“¯‚¶‚悤‚É<termref def="dt-attdecl">錾</termref>‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B錾‚·‚é‚Æ‚«‚ÍCŽæ‚蓾‚é’l‚ð"<code>default</code>"‹y‚Ñ "<code>preserve</code>"‚¾‚¯‚Æ‚·‚é<termref def='dt-enumerated'>—ñ‹“Œ^</termref>‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+<p>’l"<code>default</code>"‚ÍC&application;‚Ì&default;‚Ì‹ó”’ˆ—ƒ‚[ƒh‚ðC‚»‚Ì—v‘f‚É“K—p‰Â”\‚Æ‚·‚邱‚Æ‚ðˆÓ–¡‚·‚éB’l"<code>preserve</code>"‚ÍC&application;‚ª‚·‚ׂĂ̋󔒂ð•Û‘¶‚·‚邱‚Æ‚ðˆÓ–¡‚·‚éB‚±‚Ì錾‚̈Ó}‚ÍC"<code>xml:space</code>" ‘®«‚Ì•Ê‚ÌŽw’è‚Åã‘‚«‚µ‚È‚¢ŒÀ‚èC—v‘f‚Ì“à—e‚ÉŒ»‚ê‚é‚·‚ׂĂ̗v‘f‚É“K—p‚·‚é‚ƉðŽß‚·‚éB</p>
+<p>•¶‘‚Ì<termref def='dt-root'>&root;—v‘f</termref>‚ɂ‚¢‚Ä‚ÍC‚±‚Ì‘®«‚Ì’l‚ðŽw’è‚·‚é‚©C–”‚Í‚±‚Ì‘®«‚Ì&default-value;‚ª‚ ‚éꇂ𜂢‚Ä‚ÍC&application;‚É‚æ‚é‹ó”’‚̎戵‚¢‚ɂ‚¢‚ÄC‚¢‚©‚È‚éˆÓ}‚àŽ¦‚³‚È‚¢‚ƉðŽß‚·‚éB</p>
+<p>—á‚ðŽŸ‚ÉŽ¦‚·B
+<eg><![CDATA[ <!ATTLIST poem xml:space (default|preserve) 'preserve'>]]></eg>
+</p>
+</div2>
+<div2 id='sec-line-ends'>
+<head>s––‚̎戵‚¢</head>
+<p>XML‚Ì<termref def='dt-parsedent'>\•¶&parsed-entity;</termref>‚ÍC’ÊíƒRƒ“ƒsƒ…[ƒ^‚̃tƒ@ƒCƒ‹“à‚É•Û‘¶‚³‚êC•ÒW‚Ì•Ö‹X‚Ì‚½‚ß‚É•¡”‚Ìs‚É•ª‚¯‚邱‚Æ‚ª‘½‚¢B‚±‚ê‚ç‚Ìs‚ÍC•’Ê‚ÍC<code>CR</code> (#xD)ƒR[ƒh‹y‚Ñ <code>LF</code> (#xA)ƒR[ƒh‚̉½‚ç‚©‚Ì‘g‡‚¹‚É‚æ‚Á‚Ä•ª‚¯‚ç‚ê‚éB</p>
+<p><termref def='dt-app'>&application;</termref>‚̈—‚ðŠÈ’P‚É‚·‚邽‚ßCŠO•”&parsed-entity;–”‚Í“à•”&parsed-entity;‚Ì&literal;ŽÀ‘Ì’l‚ªC"<code>#xD#xA</code>" ‚Ì‚Q•¶Žš‚̘A‘±‚Æ‚·‚é&literal;–”‚Í<code>#xD</code>‚Ì’P“Æ‚Ì&literal;‚ðŠÜ‚ÞꇂÉC<termref def='dt-xml-proc'>XML&processor;</termref>‚ÍC&application;‚É’Pˆê‚Ì•¶Žš<code>#xA</code>‚¾‚¯‚ð“n‚³‚È‚¯‚ê‚΂Ȃç‚È‚¢(‚±‚̈—‚ÍC“ü—Í“à‚É‘¶Ý‚·‚é‰üsƒR[ƒh‚ð\•¶‰ðÍ‚Ì‘O‚ɳ‹K‰»‚·‚邱‚Æ‚É‚æ‚Á‚ÄC—eˆÕ‚ÉŽÀŒ»‚Å‚«‚éB)B</p>
+</div2>
+<div2 id='sec-lang-tag'>
+<head>&language-identification;</head>
+<p>•¶‘ˆ—‚É‚¨‚¢‚Ä‚ÍC‚»‚Ì•¶‘‚Ì’†g‚ª‚Ç‚ñ‚ÈŽ©‘RŒ¾Œê–”‚ÍŒ`Ž®Œ¾Œê‚Å‘‚©‚ê‚Ä‚¢‚é‚©–¾Ž¦‚·‚邱‚Æ‚ªC–ð‚É—§‚‚±‚Æ‚ª‘½‚¢B<!--‚±‚±‚ÅŽg—p‚·‚égŒ¾Œêh‚Æ‚¢‚¤Œ¾—t‚̈Ӗ¡‚ÍC"Espa&#x00F1;ol" ‹y‚Ñ"EBNF"‚Ì‘o•û‚ŗᎦ‚³‚ê‚éˆÓ–¡‚Æ‚·‚éB--><!-- x00F1: spanish's small ntilde--></p>
+<!--; ‚±‚Ìî•ñ‚Íi—á‚ð‚ ‚°‚ê‚Îj•¶‘‚Ì•¶Žš‚Ì•\Ž¦C•À‚Ñ‚Éî•ñ’Šo‚Ì‚½‚߂̌ꊲEŒ`‘Ô‘f‰ðÍ‹y‚уeƒLƒXƒgƒuƒƒbƒN‚Ì®Œ`‚ɉe‹¿‚ð‹y‚Ú‚·‰Â”\«‚ª‚ ‚éB-->
+<p>XML•¶‘“à‚Ì—v‘f‚Ì‚à‚“à—e–”‚Í‘®«’l‚É‚¨‚¢‚ÄŽg—p‚·‚é<!--Ž©‘R–”‚ÍŒ`Ž®-->Œ¾Œê‚ðŽw’è‚·‚邽‚ß‚ÉC"<code>xml:lang</code>" ‚Æ‚¢‚¤–¼‘O‚Ì“Á•Ê‚È<termref def="dt-attr">‘®«</termref>‚ðC•¶‘“à‚É‘}“ü‚µ‚Ä‚à‚æ‚¢B
+<!--; ‚±‚Ì‘®«‚ÍXML‹K’è‚̈ꕔ‚Æ‚µ‚ÄC•¡”‚ÌXML&application;‚Ì‘ŠŒÝ‰^—p«‚ð‚‚߂邽‚ß‚É’è‹`‚·‚éB-->
+‘®«‚Ì’l‚ÍC<bibref ref="RFC1766"/>gRFC1766F&language-identification;‚Ì‚½‚߂̃^ƒOh‚É‚æ‚Á‚Ä‹K’肳‚ê‚é&language-identification;ƒR[ƒh‚É]‚¤B
+<scrap lang='ebnf'>
+<head>&language-identification;</head>
+<prod id='NT-LanguageID'><lhs>LanguageID</lhs>
+<rhs><nt def='NT-Langcode'>Langcode</nt>
+('-' <nt def='NT-Subcode'>Subcode</nt>)*</rhs></prod>
+<prod id='NT-Langcode'><lhs>Langcode</lhs>
+<rhs><nt def='NT-ISO639Code'>ISO639Code</nt> |
+<nt def='NT-IanaCode'>IanaCode</nt> |
+<nt def='NT-UserCode'>UserCode</nt></rhs>
+</prod>
+<prod id='NT-ISO639Code'><lhs>ISO639Code</lhs>
+<rhs>([a-z] | [A-Z]) ([a-z] | [A-Z])</rhs></prod>
+<prod id='NT-IanaCode'><lhs>IanaCode</lhs>
+<rhs>('i' | 'I') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id='NT-UserCode'><lhs>UserCode</lhs>
+<rhs>('x' | 'X') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id='NT-Subcode'><lhs>Subcode</lhs>
+<rhs>([a-z] | [A-Z])+</rhs></prod>
+</scrap>
+<nt def='NT-Langcode'>Langcode</nt>‚ÍCŽŸ‚Ì‚Ç‚ê‚Å‚à‚æ‚¢B
+<ulist>
+<item><p>a) <bibref ref="ISO639"/>gŒ¾Œê‚Ì–¼‘O•\Œ»‚Ì‚½‚߂̃R[ƒhh‚Å‹K’肳‚ê‚é2•¶Žš‚Ì&language-code;</p></item>
+<item><p>b) Internet Assigned Numbers Authority (IANA)‚Å“o˜^‚³‚ê‚Ä‚¢‚é&language-code;B‚±‚ê‚ÍC擪‚ª "<code>i-</code>" (–”‚Í"<code>I-</code>")‚ÅŽn‚Ü‚éB</p></item>
+<item><p>c) &user;‚É‚æ‚Á‚Ä’è‚ß‚ç‚ꂽ&language-code;C–”‚ÍŽ„“I‚ÈŽg—p‚Ì‚½‚ß‚É•¡”‚Ì’c‘ÌŠÔ‚ªŽæ‚茈‚ß‚½ƒR[ƒhB‚±‚ê‚ç‚ÍC¡ŒãIANA‚É‚¨‚¢‚Ä•W€‰»–”‚Í“o˜^‚³‚ê‚éƒR[ƒh‚Æ‚Ì‹£‡‚ð”ð‚¯‚é‚½‚ß‚ÉC擪‚ð"<code>x-</code>" –”‚Í "<code>X-</code>" ‚ÅŽn‚ß‚éB</p></item>
+</ulist></p>
+<p><nt def='NT-Subcode'>Subcode</nt>‚ÍC•¡”‰ñŽg‚Á‚Ä‚à‚æ‚¢Bʼn‚̃TƒuƒR[ƒh‚ª‘¶Ý‚µC‚»‚Ì“à—e‚ª“ñ‚‚̕¶Žš‚©‚笂é‚Æ‚«‚ÍC<bibref ref="ISO3166"/>ISO3166‚Ìg‘–¼‚ð•\‚·ƒR[ƒh(‘ƒR[ƒh)h‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢Bʼn‚̃TƒuƒR[ƒh‚ª3•¶ŽšˆÈã‚©‚笂é‚Æ‚«‚ÍC<nt def='NT-Langcode'>Langcode</nt>‚Ì擪‚ªC"<code>x-</code>" –”‚Í "<code>X-</code>"‚ÅŽn‚Ü‚ç‚È‚¢ŒÀ‚èCŽw’肵‚½Œ¾Œê‚ɑ΂·‚éƒTƒuƒR[ƒh‚Æ‚µCIANA‚É“o˜^‚³‚ꂽ‚à‚Ì‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p>
+<p>&language-code;‚ÍC¬•¶Žš‚Å‚Ì•\‹L‚ðC&country-code;‚ÍC(‘¶Ý‚·‚é‚È‚ç‚Î)‘啶Žš‚Å‚Ì•\‹L‚ðŠµs‚Æ‚·‚éB‚µ‚©‚µCXML•¶‘“à‚É‚¨‚¯‚鑼‚Ì–¼‘O‚Ƃ͈قȂèC‚±‚ê‚ç‚Ì’l‚ɂ‚¢‚Ä‚ÍC‘啶Žš‹y‚Ѭ•¶Žš‚Ì‹æ•Ê‚ð‚µ‚È‚¢‚±‚Æ‚É’ˆÓ‚·‚邱‚ÆB</p>
+<p>—á‚ðŽŸ‚ÉŽ¦‚·B
+<eg><![CDATA[<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
+<p xml:lang="en-GB">What colour is it?</p>
+<p xml:lang="en-US">What color is it?</p>
+<sp who="Faust" desc='leise' xml:lang="de">
+ <l>Habe nun, ach! Philosophie,</l>
+ <l>Juristerei, und Medizin</l>
+ <l>und leider auch Theologie</l>
+ <l>]]><!-- x00DF german's es-zet; x00FC german's u-umlaut -->durchaus studiert mit hei&#223;em Bem&#252;h'n.<![CDATA[</l>
+ </sp>]]></eg></p>
+<!--<p>xml:lang ‚Ì’l‚ÍC—v‘f‚Ì“à—e‹y‚Ñ(‘®«‚Ì&default-value;‚Å’è‚ß‚È‚¢ŒÀ‚è)ƒtƒŠ[ƒeƒLƒXƒg(CDATA)‚Ì’l‚ð‚à‚‚»‚Ì—v‘f‚Ö‚Ì‚·‚ׂĂ̑®«‚Ì’l‚ɂ‚¢‚ÄC‚»‚Ì—¼•û‚É“K—p‚·‚éB-->
+<p><code>xml:lang</code>‚Å錾‚·‚éˆÓ}‚ÍC<code>xml:lang</code>‚Ì•Ê‚ÌŽw’è‚Åã‘‚µ‚È‚¢ŒÀ‚èCŽw’肵‚½—v‘f‚Ì“à—e‚ÉŠÜ‚Þ‚·‚ׂĂ̗v‘f‚É“K—p‚·‚éB</p>
+<!--‚ ‚é—v‘f‚É‚¨‚¯‚é xml:lang ‘®«‚Ì’l‚ª’è‚ß‚ç‚ê‚Ä‚¨‚炸CDTD‚É‚¨‚¢‚Ä‚»‚Ì&default-value;‚ª’è‚ß‚ç‚ê‚Ä‚¢‚È‚¢ê‡C‚»‚Ì—v‘f‚Ìxml:lang ‘®«‚Ì’l‚ÍCe—v‘f‚Å‚Ì’l‚ª‘¶Ý‚·‚éꇂÍC‚»‚ê‚ðˆø‚«Œp‚®B ŽŸ‚Ì—á‚É‚¨‚¯‚é“ñ‚‚Ì<term>‚Æ‚¢‚¤–¼‘O‚Ìê–å—pŒê‚ð•\‚·—v‘f‚ÍCxml:lang‚Ì’l‚ÉŠÖ‚µ‚Ä‚ÍCŽÀÛãC“¯‚¶’l‚ð‚à‚ÂB
+
+ <p xml:lang="en">Here the keywords are
+ <term xml:lang="en">shift</term> and
+ <term>reduce</term>. ...</p>
+
+XML&processor;‚Å‚Í‚È‚­&application;‚ªC‚±‚Ì‘®«’l‚ÌŒp³‚ɂ‚¢‚ÄÓ”C‚ð‚à‚ÂB
+-->
+<p>
+&valid;‚È•¶‘‚É‚¨‚¢‚Ä‚ÍC‚±‚Ì&TR-or-Rec;‚Ì‘¼‚ÌꊂŋK’è‚·‚é‚Æ‚¨‚èC‚±‚Ì‘®«‚ð•K‚¸éŒ¾‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B’ÊíC錾‚ÍCŽŸ‚ÌŒ`‚Æ‚·‚éB
+<eg>xml:lang NMTOKEN #IMPLIED</eg>
+•K—v‚È‚ç‚ÎC“Á’è‚Ì&default-value;‚ð—^‚¦‚Ä‚à‚æ‚¢B‰pŒê‚ð•êŒê‚Æ‚·‚éŠw¶—p‚̃tƒ‰ƒ“ƒXŒê‚ÌŽW‚Å‚ÍCà–¾‹y‚Ñ’‚ð‰pŒê‚Å‹Lq‚·‚ê‚ÎCxml:lang ‘®«‚ðŽŸ‚Ì‚Æ‚¨‚è‚É錾‚·‚邱‚Æ‚Æ‚È‚éB
+<eg><![CDATA[ <!ATTLIST poem xml:lang NMTOKEN 'fr'>
+ <!ATTLIST gloss xml:lang NMTOKEN 'en'>
+ <!ATTLIST note xml:lang NMTOKEN 'en'>]]></eg>
+</p>
+<!--
+DTD‚ÌÝŒvŽÒ‚ÍCƒXƒNƒŠƒvƒg‚ðŒ¾Œê(‹y‚Ñ‚»‚Ì”h¶‘Ì)‚É•ïÛ‚µ‚Ĉµ‚¤‚Ì‚Å‚Í‚È‚­CƒXƒNƒŠƒvƒg‹y‚ÑŒ¾Œê‚𓯎ŸŒ³‚ňµ‚¤‚Ì‚ª“K“–‚Èê‡CŒ¾Œê‘®«‚Æ“¯—l‚ɃXƒNƒŠƒvƒg‘®«‚ª‘¶Ý‚·‚ê‚ΗL—p‚¾‚ÆŽv‚¤‚©‚à‚µ‚ê‚È‚¢BƒŠƒ“ƒN—v‘f‚É‚¨‚¢‚ÄCŽQÆ‚³‚ꂽ–”‚̓Šƒ“ƒN‚³‚ꂽƒŠƒ\[ƒX‚É‚¨‚¯‚é(Žå—v‚È)Œ¾Œê(ꇂɂæ‚Á‚Ä‚Í•¡”)‚ð•\‚·—v‘f‚ð’è‹`‚·‚é‚Ì‚à–]‚Ü‚µ‚¢B‚µ‚©‚µC‚±‚ê‚ç‚Ì&application;‚ÍC‚±‚Ì&TR-or-Rec;‚ª‹K’è‚·‚é”͈͊O‚Æ‚·‚éB-->
+</div2>
+</div1>
+<!-- &Elements; -->
+
+<div1 id='sec-logical-struct'>
+<head>˜_—\‘¢</head>
+
+<p><termdef id="dt-element" term="Element">‚¢‚©‚È‚é<termref def="dt-xml-doc">XML•¶‘</termref>‚àCˆê‚ˆÈã‚Ì<term>—v‘f</term>‚ðŠÜ‚ÞB—v‘f‚Ì‹«ŠE‚Í, <termref def="dt-stag">ŠJŽnƒ^ƒO</termref>‹y‚Ñ<termref def="dt-etag">I—¹ƒ^ƒO</termref>‚É‚æ‚Á‚Ä‹æØ‚éB—v‘f‚ª<termref def="dt-empty">‹ó</termref>—v‘f‚Ì‚Æ‚«‚ÍC<termref def="dt-eetag">‹ó—v‘fƒ^ƒO</termref>‚ÅŽ¦‚·BŠeX‚Ì—v‘f‚ÍCŒ^‚ð‚à‚ÂB—v‘fŒ^‚Í–¼‘O(‹¤’Ê&identifier;(generic identifier)–”‚ÍGI‚ƌĂԂ±‚Æ‚ª‚ ‚éB)‚É‚æ‚Á‚Ä&identified;B—v‘f‚ÍC‚¢‚­‚‚©‚Ì‘®«‚ð‚à‚‚±‚Æ‚ª‚Å‚«‚éB</termdef>‘®«‚ÍC<termref def="dt-attrname">–¼‘O</termref>‹y‚Ñ<termref def="dt-attrval">’l</termref>‚ð‚à‚ÂB</p>
+
+<scrap lang='ebnf'><head>—v‘f</head>
+<prod id='NT-element'><lhs>element</lhs>
+<rhs><nt def='NT-EmptyElemTag'>EmptyElemTag</nt></rhs>
+<rhs>| <nt def='NT-STag'>STag</nt> <nt def='NT-content'>content</nt>
+<nt def='NT-ETag'>ETag</nt></rhs><wfc def='GIMatch'/></prod>
+</scrap>
+<p>‚±‚Ì&TR-or-Rec;‚ÍC—v‘fŒ^‹y‚Ñ‘®«‚̈Ӗ¡CŽg—p•û–@C–”‚Í(\•¶‚ÉŠÖ‚·‚邱‚Ƃ𜂫)–¼‘O‚ɧ–ñ‚ð—^‚¦‚È‚¢B‚½‚¾‚µC擪‚ª<code>(('X'|'x')('M'|'m')('L'|'l'))</code>‚É&match;‚·‚é–¼‘O‚ÍC‚±‚̔Ŗ”‚Í¡Œã‚̔ł̂±‚Ì&TR-or-Rec;‚Å‚Ì•W€‰»‚Ì‚½‚ß‚É—\–ñ‚·‚éB</p>
+
+<wfcnote id='GIMatch'><head>—v‘fŒ^‚Ì&match;</head>
+<p>—v‘f‚ÌI—¹ƒ^ƒO‚Ì<nt def='NT-Name'>–¼‘O</nt>‚ÍC‚»‚Ì—v‘f‚ÌŠJŽnƒ^ƒO‚É‚¨‚¯‚éŒ^‚Æ&match;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p>
+</wfcnote>
+
+<div2 id='sec-starttags'>
+<head>ŠJŽnƒ^ƒOCI—¹ƒ^ƒO‹y‚Ñ‹ó—v‘fƒ^ƒO</head>
+<p><termdef id="dt-stag" term="Start-Tag">‹ó‚Å‚È‚¢”CˆÓ‚ÌXML—v‘f‚ÌŽn‚Ü‚è‚ÍC<term>ŠJŽnƒ^ƒO</term>‚É‚æ‚Á‚Ä&markup;‚·‚éB
+<scrap lang='ebnf'><head>ŠJŽnƒ^ƒO</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id='NT-STag'><lhs>STag</lhs><rhs>'&lt;' <nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt> <nt def='NT-Attribute'>Attribute</nt>)* <nt def='NT-S'>S</nt>? '>'</rhs><wfc def="uniqattspec"/></prod>
+<prod id='NT-Attribute'><lhs>Attribute</lhs><rhs><nt def='NT-Name'>Name</nt> <nt def='NT-Eq'>Eq</nt> <nt def='NT-AttValue'>AttValue</nt></rhs><vc def='ValueType'/><wfc def='NoExternalRefs'/><wfc def='CleanAttrVals'/></prod>
+</prodgroup>
+</scrap>
+ŠJŽnƒ^ƒO‹y‚ÑI—¹ƒ^ƒO“à‚Ì<nt def='NT-Name'>Name</nt>‚ÍC—v‘f‚Ì<term>Œ^</term>‚ð•\‚í‚·B</termdef><termdef id="dt-attr" term="Attribute"><nt def='NT-Name'>Name</nt>‹y‚Ñ<nt def='NT-AttValue'>AttValue</nt>‚̑΂ð—v‘f‚Ì<term>‘®«Žw’è</term>‚Æ‚¢‚¢</termdef>C<termdef id="dt-attrname" term="Attribute Name">ŒÂX‚̑΂ɂ¨‚¯‚é<nt def='NT-Name'>Name</nt>‚ÍC<term>‘®«–¼</term></termdef>‹y‚Ñ<termdef id="dt-attrval" term="Attribute Value"><nt def='NT-AttValue'>AttValue</nt>‚Ì“à—e(‹æØ‚èŽq<code>'</code>–”‚Í<code>"</code>‚ÌŠÔ‚Ì&string;)‚ð<term>‘®«’l</term>‚Æ‚¢‚¤B</termdef></p>
+
+<wfcnote id='uniqattspec'><head>‘®«Žw’è‚̈êˆÓ«</head>
+<p>ŠJŽnƒ^ƒO–”‚Í‹ó—v‘fƒ^ƒO‚Å‚ÍC“¯ˆê‚Ì‘®«–¼‚ª‚Q“xˆÈãoŒ»‚µ‚Ä‚Í‚È‚ç‚È‚¢B</p></wfcnote>
+<vcnote id='ValueType'><head>‘®«’l‚ÌŒ^</head>
+<p>‘®«‚Í錾‚³‚ê‚Ä‚¢‚È‚¯‚ê‚΂Ȃç‚È‚¢B‘®«’l‚ÌŒ^‚ÍC‚»‚Ì‘®«‚ɑ΂µ‚Ä錾‚µ‚½Œ^‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢(‘®«‚ÌŒ^‚ɂ‚¢‚Ä‚ÍC<titleref href='AttDecls'>‘®«ƒŠƒXƒg錾</titleref>‚ɂ‚¢‚Ä‚Ì‹K’è‚ðŽQÆB)B</p></vcnote>
+<wfcnote id='NoExternalRefs'><head>ŠO•”ŽÀ‘Ì‚Ö‚ÌŽQÆ‚ª‚È‚¢‚±‚Æ</head>
+<p>‘®«’l‚É‚ÍCŠO•”ŽÀ‘Ì‚Ö‚Ì’¼Ú“I–”‚ÍŠÔÚ“I‚ÈŽQÆ‚ðŠÜ‚Þ‚±‚Æ‚Í‚Å‚«‚È‚¢B</p></wfcnote>
+<wfcnote id='CleanAttrVals'><head>‘®«’l‚É<code>&lt;</code>‚ðŠÜ‚Ü‚È‚¢‚±‚Æ</head>
+<p>‘®«’l“à‚Å’¼Ú“I–”‚ÍŠÔÚ“I‚ÉŽQÆ‚·‚éŽÀ‘Ì(<code>&amp;lt;</code>‚𜂭B)‚Ì<termref def='dt-repltext'>&replacement-text;</termref>‚É‚ÍC<code>&lt;</code>‚ðŠÜ‚ñ‚Å‚Í‚È‚ç‚È‚¢B</p></wfcnote>
+
+<p>ŠJŽnƒ^ƒO‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg>&lt;termdef id="dt-dog" term="dog"></eg></p>
+<p><termdef id="dt-etag" term="End Tag">ŠJŽnƒ^ƒO‚ÅŽn‚Ü‚é—v‘f‚ÌI‚í‚è‚ÍC<term>I—¹ƒ^ƒO</term>‚Å&markup;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚±‚ÌI—¹ƒ^ƒO‚ÍC‘Ήž‚·‚éŠJŽnƒ^ƒO‚Ì—v‘fŒ^‚Æ“¯‚¶–¼‘O‚ð‚à‚ÂB
+<scrap lang='ebnf'><head>I—¹ƒ^ƒO</head><prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-ETag'><lhs>ETag</lhs><rhs>'&lt;/' <nt def='NT-Name'>Name</nt> <nt def='NT-S'>S</nt>? '>'</rhs></prod></prodgroup></scrap></termdef></p>
+<p>I—¹ƒ^ƒO‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg>&lt;/termdef></eg></p>
+
+<p><termdef id="dt-content" term="Content">—v‘f‚ÌŠJŽnƒ^ƒO‚ÆI—¹ƒ^ƒO‚Æ‚ÌŠÔ‚Ì<termref def='dt-text'>ƒeƒLƒXƒg</termref>‚ðC‚»‚Ì—v‘f‚Ì<term>“à—e</term>‚Æ‚¢‚¤B
+<scrap lang='ebnf'><head>—v‘f‚Ì“à—e</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-content'><lhs>content</lhs><rhs>(<nt def='NT-element'>element</nt> | <nt def='NT-CharData'>CharData</nt> | <nt def='NT-Reference'>Reference</nt> | <nt def='NT-CDSect'>CDSect</nt> | <nt def='NT-PI'>PI</nt> | <nt def='NT-Comment'>Comment</nt>)*</rhs></prod></prodgroup></scrap></termdef></p>
+
+<p><termdef id="dt-empty" term="Empty">—v‘f‚ª<term>‹ó</term>‚Ì‚Æ‚«C‚»‚Ì—v‘f‚ÍC’¼Œã‚ÉI—¹ƒ^ƒO‚ð‚à‚ŠJŽnƒ^ƒO–”‚Í‹ó—v‘fƒ^ƒO‚Å•\Œ»‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B</termdef><termdef id="dt-eetag" term="empty-element tag"><term>‹ó—v‘fƒ^ƒO</term>‚ÍCŽŸ‚Ì“Á•Ê‚ÈŒ`Ž®‚ð‚Æ‚éB
+<scrap lang='ebnf'><head>‹ó—v‘f‚Ì‚½‚߂̃^ƒO</head><prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-EmptyElemTag'><lhs>EmptyElemTag</lhs><rhs>'&lt;' <nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt> <nt def='NT-Attribute'>Attribute</nt>)* <nt def='NT-S'>S</nt>? '/&gt;'</rhs><wfc def="uniqattspec"/></prod></prodgroup></scrap></termdef></p>
+
+<!-- –å”nFã‚Ìg‹ó—v‘f‚Ì‚½‚߂̃^ƒO(tags for empty elements)h‚Íg‹ó—v‘fƒ^ƒO(empty-element tag)h‚Æ‚·‚ׂ«‚¾‚ÆŽv‚¢‚Ü‚·‚ªC‚¢‚©‚ª‚Å‚µ‚傤‚© -->
+
+<p>‹ó—v‘fƒ^ƒO‚ÍC“à—e‚ð‚à‚½‚È‚¢”CˆÓ‚Ì—v‘f‚Ì•\Œ»‚É—˜—p‚Å‚«‚éB‹ó—v‘fƒ^ƒO‚Å•\Œ»‚·‚é—v‘f‚ðCƒL[ƒ[ƒh<kw>EMPTY</kw>‚ð—p‚¢‚Ä錾‚µ‚È‚­‚Æ‚à‚æ‚¢B</p>
+<p>‹ó—v‘f‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg>&lt;IMG align="left" src="http://www.w3.org/Icons/WWW/w3c_home" />&lt;br>&lt;/br>&lt;br/></eg></p>
+</div2>
+
+<div2 id='elemdecls'><head>—v‘f錾</head>
+<p><termref def="dt-valid">&validity;</termref>‚ð•ÛØ‚·‚邽‚ßC—v‘f錾‹y‚Ñ‘®«ƒŠƒXƒg錾‚ð—p‚¢‚Ä<termref def="dt-xml-doc">XML•¶‘</termref>‚Ì<termref def="dt-element">—v‘f</termref>‚Ì\‘¢‚ÉC§–ñ‚ð‰Á‚¦‚邱‚Æ‚ª‚Å‚«‚éB</p>
+<p>—v‘f錾‚ÍC—v‘f‚Ì<termref def="dt-content">“à—e</termref>‚ɂ‚¢‚Ă̧–ñ‚Æ‚·‚éB</p>
+<p>—v‘f錾‚ÍC—v‘f‚Ì<termref def="dt-parentchild">Žq</termref>‚Æ‚µ‚ÄoŒ»‰Â”\‚È—v‘fŒ^‚ɂ‚¢‚ÄC§–ñ‚ð‰Á‚¦‚邱‚Æ‚ª‘½‚¢B&at-user-option;C—v‘f錾‚ð‚à‚½‚È‚¢—v‘fŒ^‚ª‘¼‚Ì—v‘f錾‚É‚æ‚Á‚ÄŽQÆ‚³‚ê‚ê‚ÎCXML&processor;‚ÍCŒx‚ðo‚µ‚Ä‚à‚æ‚¢B‚µ‚©‚µC‚±‚ê‚Í&error;‚Æ‚Í‚µ‚È‚¢B</p>
+
+<p><termdef id="dt-eldecl" term="Element Type declaration"><term>—v‘fŒ^錾</term>‚ÍCŽŸ‚ÌŒ`Ž®‚ð‚Æ‚éB
+<scrap lang='ebnf'><head>—v‘fŒ^錾</head><prodgroup pcw2="5.5" pcw4="18" pcw5="9">
+<prod id='NT-elementdecl'><lhs>elementdecl</lhs>
+<rhs>'&lt;!ELEMENT' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>
+<nt def='NT-contentspec'>contentspec</nt>
+<nt def='NT-S'>S</nt>? '>'</rhs>
+<vc def='EDUnique'/></prod>
+<prod id='NT-contentspec'><lhs>contentspec</lhs>
+<rhs>'EMPTY'
+| 'ANY'
+| <nt def='NT-Mixed'>Mixed</nt>
+| <nt def='NT-children'>children</nt>
+</rhs>
+<vc def='elementvalid'/>
+</prod>
+</prodgroup>
+</scrap>
+‚±‚±‚ÅC<nt def='NT-Name'>Name</nt>‚ÍC錾‚³‚ê‚Ä‚¢‚é—v‘f‚ÌŒ^‚Æ‚·‚éB</termdef></p>
+
+<vcnote id='EDUnique'><head>—v‘f錾‚̈êˆÓ«</head>
+<p>—v‘fŒ^‚ð‚Q“xˆÈã錾‚Å‚«‚È‚¢B</p></vcnote>
+
+<vcnote id='elementvalid'><head>—v‘f‚Ì&validity;</head>
+<p>—v‘f‚ª<!-- said to be -->&valid;‚Æ‚ÍC<nt def='NT-elementdecl'>elementdecl</nt>‚É&match;‚·‚é錾‚Å‚ ‚Á‚ÄC‚»‚Ì<nt def='NT-Name'>Name</nt>‚ª‚»‚Ì—v‘fŒ^‚Æ&match;‚µCŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·ê‡‚Æ‚·‚éB<ulist>
+<item><p>a) 錾‚ª<kw>EMPTY</kw>‚É&match;‚µC—v‘f‚ª<termref def='dt-content'>“à—e</termref>‚ð‚à‚½‚È‚¢B</p></item>
+<item><p>b) 錾‚ª<nt def='NT-children'>children</nt>‚É&match;‚µC—v‘f‚Ì<termref def="dt-parentchild">Žq—v‘f</termref>‚Ì•À‚Ñ‚ªC“à—eƒ‚ƒfƒ‹‚̳‹K•\Œ»‚É‚æ‚Á‚Ķ¬‚³‚ê‚錾Œê‚É‘®‚·‚éB</p></item>
+<item><p>c) 錾‚ª<nt def='NT-Mixed'>mixed</nt>‚É&match;‚µC—v‘f‚Ì“à—e‚ª<termref def='dt-chardata'>•¶Žšƒf[ƒ^</termref>‹y‚Ñ<termref def='dt-parentchild'>Žq—v‘f</termref>‚©‚ç‚È‚éBŽq—v‘f‚Ì—v‘fŒ^‚ÍC—v‘f‚Ì“à—eƒ‚ƒfƒ‹‚ÉoŒ»‚·‚é–¼‘O‚É&match;‚·‚éB</p></item>
+<item><p>d) 錾‚ª<kw>ANY</kw>‚É&match;‚µC‚Ç‚Ì<termref def='dt-parentchild'>Žq—v‘f</termref>‚Ì—v‘fŒ^‚à錾‚³‚ê‚Ä‚¢‚éB</p></item></ulist>
+
+</p></vcnote>
+<!-- with the new VC, I don't think the next few paras add anything -TWB
+<p><termdef id="dt-model" term="content model">An element can declared using a <term>content model</term>, in which case its content can be categorized as <termref def="dt-elemcontent">element content</termref> or <termref def='dt-mixed'>mixed content</termref>, as explained below.</termdef></p>
+<p>An element whose type declared using the keyword <kw>EMPTY</kw> must be <termref def="dt-empty">empty</termref> and may be tagged using an <termref def="dt-eetag">empty-element tag</termref> when it appears in the document.</p>
+<p>If an element type is declared using the keyword <kw>ANY</kw>, then there are no validity constraints on its content: it may contain <termref def='dt-parentchild'>child elements</termref> of any type and number, interspersed with character data.</p> -->
+
+<p>—v‘f錾‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg>
+&lt;!ELEMENT br EMPTY>
+&lt;!ELEMENT p (#PCDATA|emph)* >
+&lt;!ELEMENT %name.para; %content.para; >
+&lt;!ELEMENT container ANY>
+</eg></p>
+
+<div3 id='sec-element-content'><head>—v‘f“à—e</head>
+
+<p><termdef id='dt-elemcontent' term='Element content'>‚ ‚éŒ^‚Ì—v‘f‚ª<termref def='dt-parentchild'>Žq</termref>—v‘f‚¾‚¯‚ðŠÜ‚Þ(•¶Žšƒf[ƒ^‚ðŠÜ‚Ü‚È‚¢B)‚Æ‚«C‚»‚Ì—v‘f<termref def="dt-stag">Œ^</termref>‚ÍC<term>—v‘f“à—e</term>‚ð‚à‚ÂC‚Æ‚¢‚¤B</termdef>‚±‚Ìê‡C§–ñ‚ÍC“à—eƒ‚ƒfƒ‹‚ðŠÜ‚ÞB“à—eƒ‚ƒfƒ‹‚ÍCŽq—v‘f‚ÌŒ^‹y‚ÑŽq—v‘f‚ÌoŒ»‡˜‚ð§Œä‚·‚éŠÈ’P‚È•¶–@‚Æ‚·‚éB‚±‚Ì•¶–@‚ÍC&content-particle;(<nt def='NT-cp'>cp</nt>s)‚©‚ç‚È‚éB&content-particle;‚ÍC–¼‘OC&content-particle;‚Ì‘I‘ðƒŠƒXƒg–”‚Í&content-particle;‚Ì—ñƒŠƒXƒg‚©‚ç\¬‚³‚ê‚éB
+<scrap lang='ebnf'><head>—v‘f“à—eƒ‚ƒfƒ‹</head><prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id='NT-children'><lhs>children</lhs><rhs>(<nt def='NT-choice'>choice</nt> | <nt def='NT-seq'>seq</nt>) ('?' | '*' | '+')?</rhs></prod><prod id='NT-cp'><lhs>cp</lhs><rhs>(<nt def='NT-Name'>Name</nt> | <nt def='NT-choice'>choice</nt> | <nt def='NT-seq'>seq</nt>) ('?' | '*' | '+')?</rhs></prod>
+<prod id='NT-choice'><lhs>choice</lhs><rhs>'(' <nt def='NT-S'>S</nt>? cp ( <nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*<nt def='NT-S'>S</nt>? ')'</rhs><vc def='vc-PEinGroup'/></prod>
+<prod id='NT-seq'><lhs>seq</lhs><rhs>'(' <nt def='NT-S'>S</nt>? cp ( <nt def='NT-S'>S</nt>? ',' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*<nt def='NT-S'>S</nt>? ')'</rhs><vc def='vc-PEinGroup'/></prod>
+<!-- <prod id='NT-cps'><lhs>cps</lhs><rhs><nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> <nt def='NT-S'>S</nt>?</rhs></prod>
+<prod id='NT-choice'><lhs>choice</lhs><rhs>'(' <nt def='NT-S'>S</nt>? <nt def='NT-ctokplus'>ctokplus</nt> (<nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>? <nt def='NT-ctoks'>ctoks</nt>)* <nt def='NT-S'>S</nt>? ')'</rhs></prod>
+<prod id="NT-ctokplus"><lhs>ctokplus</lhs><rhs><nt def="NT-cps">cps</nt>('|' <nt def="NT-cps">cps</nt>)+</rhs></prod>
+<prod id="NT-ctoks"><lhs>ctoks</lhs><rhs><nt def="NT-cps">cps</nt>('|' <nt def="NT-cps">cps</nt>)*</rhs></prod>
+<prod id='NT-seq'><lhs>seq</lhs><rhs>'(' <nt def='NT-S'>S</nt>?<nt def='NT-stoks'>stoks</nt> (<nt def='NT-S'>S</nt>? ',' <nt def='NT-S'>S</nt>? <nt def='NT-stoks'>stoks</nt>)*<nt def='NT-S'>S</nt>? ')'</rhs></prod>
+<prod id="NT-stoks"><lhs>stoks</lhs><rhs><nt def="NT-cps">cps</nt>(',' <nt def="NT-cps">cps</nt>)*</rhs></prod>
+-->
+</prodgroup></scrap>
+‚±‚±‚ÅC<nt def='NT-Name'>Name</nt>‚ÍC<termref def="dt-parentchild">Žq</termref>‚Æ‚µ‚ÄoŒ»‚µ‚Ä‚æ‚¢—v‘f‚ÌŒ^‚ðŽ¦‚·B‚±‚Ì•¶–@‚Å‘I‘ðƒŠƒXƒg‚ªŒ»‚ê‚éˆÊ’u‚Å‚ÍC‘I‘ðƒŠƒXƒg“à‚Ì‚¢‚¸‚ê‚Ì&content-particle;‚à<termref def="dt-elemcontent">—v‘f“à—e</termref>‚Ì’†‚ÉŒ»‚ê‚Ä‚æ‚¢B—ñƒŠƒXƒg‚ÉŒ»‚ê‚é&content-particle;‚ÍCƒŠƒXƒg‚ÅŽw’è‚·‚釔Ԃ̂Ƃ¨‚è‚ÉC<termref def="dt-elemcontent">—v‘f“à—e</termref>‚ÉŒ»‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢B–¼‘O–”‚̓ŠƒXƒg‚ÌŒã‚ÉoŒ»‚·‚éƒIƒvƒVƒ‡ƒ“‚Ì•¶Žš<!-- –å”nFcharacter‚𕶎š‚Ɩ󂵂܂µ‚½ -->‚ÍCƒŠƒXƒg“à‚Ì—v‘f–”‚Í&content-particle;‚ªC1‰ñˆÈã”CˆÓ‚̉ñ”(<code>+</code>)C0‰ñˆÈã”CˆÓ‚̉ñ”(<code>*</code>)–”‚Í0‰ñŽá‚µ‚­‚Í1‰ñ(<code>?</code>)oŒ»‰Â”\‚È‚±‚Æ‚ð‹K’è‚·‚éB‚±‚±‚ÅŽ¦‚·\•¶‹y‚шӖ¡‚ÍC‚±‚Ì&TR-or-Rec;‚É‚¨‚¯‚鶬‹K‘¥‚Å—p‚¢‚é‚à‚Ì‚Æ“¯ˆê‚Æ‚·‚éB</p>
+
+<!-- –å”nFã‚Ì•¶‚Å‚ÍCgname–”‚Ílist‚ÌŒã‚É‘±‚­•¶Žšh‚ªglist‚ÌoŒ»‚ð‹K’è‚·‚éh‚Æ‚ ‚Á‚ÄCname‚ÌoŒ»‚ð‹K’è‚·‚é‚Æ‚Í‘‚¢‚Ä‚ ‚è‚Ü‚¹‚ñBC³‚ª•K—v‚Æl‚¦‚Ü‚·B -->
+
+<p>—v‘f‚Ì“à—e‚ª“à—eƒ‚ƒfƒ‹‚É&match;‚·‚é‚Ì‚ÍC—ñC‘I‘ð‹y‚ÑŒJ•Ô‚µ‰‰ŽZŽq‚É‚µ‚½‚ª‚Á‚ÄC“à—e‚Ì’†‚Ì—v‘f‚Æ“à—eƒ‚ƒfƒ‹“à‚Ì—v‘fŒ^‚Æ‚ð&match;‚³‚¹‚È‚ª‚çC“à—eƒ‚ƒfƒ‹“à‚̈ê‚‚̃pƒX‚ð‚½‚Ç‚ê‚é‚Æ‚«‚ÉŒÀ‚éB<termref def='dt-compat'>ŒÝŠ·«‚Ì‚½‚ß</termref>C•¶‘“à‚Ì—v‘f‚ªC“à—eƒ‚ƒfƒ‹‚É‚¨‚¯‚é—v‘fŒ^‚Ì•¡”‚ÌoŒ»ˆÊ’u‚Æ&match;‚·‚邱‚Æ‚ÍC&error;‚Æ‚·‚éBÚׂȋK’è‚ɂ‚¢‚Ä‚ÍC•‘®‘‚Ì<titleref xml-link="simple" href="determinism">Œˆ’è“I“à—eƒ‚ƒfƒ‹</titleref>‚Ì€‚ðŽQÆB
+<!-- appendix <specref ref="determinism"/>. -->
+<!-- appendix on deterministic content models. -->
+</p>
+
+<vcnote id='vc-PEinGroup'>
+<head>ƒOƒ‹[ƒv‹y‚уpƒ‰ƒƒ^ŽÀ‘Ì‚ªŒµ–§‚È“ü‚êŽq‚ð‚È‚µ‚Ä‚¢‚邱‚Æ</head>
+<p>ƒpƒ‰ƒƒ^ŽÀ‘Ì‚Ì<termref def='dt-repltext'>&replacement-text;</termref>‚ÍC&parenthesis;‚ň͂܂ꂽƒOƒ‹[ƒv‚É‚æ‚Á‚ÄCŒµ–§‚È“ü‚êŽq‚ð\¬‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚‚܂èC<nt def='NT-choice'>‘I‘ð</nt>C<nt def='NT-seq'>—ñ</nt>–”‚Í<nt def='NT-Mixed'>¬Ý</nt>•”•i‚ÉC&left-parenthesis;–”‚Í&right-parenthesis;‚Ì‚¢‚¸‚ê‚©ˆê•û‚ª<termref def='dt-PERef'>ƒpƒ‰ƒƒ^ŽÀ‘Ì</termref>‚Ì&replacement-text;‚ÉŠÜ‚ê‚ê‚ÎC‘¼•û‚à“¯‚¶&replacement-text;‚ÉŠÜ‚Ü‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p>
+<p><termref def='dt-interop'>‘ŠŒÝ‰^—p«‚Ì‚½‚ß</termref>Cƒpƒ‰ƒƒ^ŽÀ‘ÌŽQÆ‚ª<nt def='NT-choice'>‘I‘ð</nt>C<nt def='NT-seq'>—ñ</nt>–”‚Í<nt def='NT-Mixed'>¬Ý</nt>“à—e‚ÉŠÜ‚Ü‚ê‚ê‚ÎC‚»‚Ì&replacement-text;‚Í‹ó‚Å‚È‚¢‚±‚Æ‚ª–]‚Ü‚µ‚­C&replacement-text;‚Ì擪‹y‚Ñ––”ö‚Ì‹ó”’‚Å‚È‚¢•¶Žš‚ÍCƒRƒlƒNƒ^(<code>|</code>–”‚Í<code>,</code>)‚Å‚È‚¢•û‚ª‚æ‚¢B
+</p>
+</vcnote>
+<p>—v‘f“à—eƒ‚ƒfƒ‹‚Ì‚¢‚­‚‚©‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg>&lt;!ELEMENT spec (front, body, back?)>
+&lt;!ELEMENT div1 (head, (p | list | note)*, div2*)>
+&lt;!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*></eg></p>
+</div3>
+
+<div3 id='sec-mixed-content'>
+<head>&mixed-content;</head>
+
+<p><termdef id='dt-mixed' term='Mixed Content'>‚ ‚é—v‘fŒ^‚Ì—v‘f“à‚ÉC<termref def="dt-parentchild">Žq</termref>—v‘f‚ɬ݂µ‚Ä•¶Žšƒf[ƒ^‚ªŠÜ‚Ü‚ê‚é‰Â”\«‚ª‚ ‚é‚Æ‚«C‚»‚Ì—v‘f<termref def='dt-stag'>Œ^</termref>‚ÍC<term>&mixed-content;</term>‚ð‚à‚‚Ƃ¢‚¤B</termdef>‚±‚Ìê‡CŽq—v‘f‚ÌŒ^‚ɂ‚¢‚Ă̧–ñ‚ª‘¶Ý‚µ‚Ä‚à‚æ‚¢<!-- –å”nFgmay be constrainedh‚ð’P‚Éu§–ñ‚³‚ê‚év‚Ɩ󂵂܂µ‚½B -->‚ªCŽq—v‘f‚̇˜–”‚ÍoŒ»‰ñ”‚ɂ‚¢‚Ă̧–ñ‚Í‚È‚¢‚Æ‚·‚éB
+<scrap lang='ebnf'>
+<head>&mixed-content;錾</head>
+<prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id='NT-Mixed'><lhs>Mixed</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>?
+'#PCDATA'
+(<nt def='NT-S'>S</nt>?
+'|'
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>)*
+<nt def='NT-S'>S</nt>?
+')*' </rhs>
+<rhs>| '(' <nt def='NT-S'>S</nt>? '#PCDATA' <nt def='NT-S'>S</nt>? ')'
+</rhs><vc def='vc-PEinGroup'/>
+<vc def='vc-MixedChildrenUnique'/>
+</prod>
+<!--
+<prod id="NT-Mtoks"><lhs>Mtoks</lhs>
+<rhs><nt def="NT-Name">Name</nt>
+(<nt def='NT-S'>S</nt>?
+'|'
+<nt def='NT-S'>S</nt>?
+<nt def="NT-Name">Name</nt>)*
+</rhs>
+</prod>
+-->
+</prodgroup>
+</scrap>
+‚±‚±‚ÅC<nt def='NT-Name'>Name</nt>‚ÍCŽq‚Æ‚µ‚ÄoŒ»‚µ‚Ä‚à‚æ‚¢—v‘f‚ÌŒ^‚ðŽ¦‚·B
+</p>
+
+<vcnote id='vc-MixedChildrenUnique'>
+<head>—v‘fŒ^‚Ìd•¡‚Ì‹ÖŽ~</head>
+<p>ˆê‚‚Ì&mixed-content;錾“à‚ÉC“¯‚¶–¼‘O‚ª•¡”‰ñoŒ»‚µ‚Ä‚Í‚È‚ç‚È‚¢B
+</p></vcnote>
+<p>&mixed-content;錾‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg>&lt;!ELEMENT p (#PCDATA|a|ul|b|i|em)*>
+&lt;!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >
+&lt;!ELEMENT b (#PCDATA)></eg></p>
+</div3>
+</div2>
+
+
+<div2 id='attdecls'>
+<head>‘®«ƒŠƒXƒg錾</head>
+<p>
+<termref def="dt-attr">‘®«</termref>‚ÍC–¼‘O‹y‚Ñ’l‚̑΂ð<termref def="dt-element">—v‘f</termref>‚ÉŠÖ˜A•t‚¯‚邽‚ß‚É—p‚¢‚éB‘®«Žw’è‚ÍC<termref def="dt-stag">ŠJŽnƒ^ƒO</termref>–”‚Í<termref def="dt-eetag">‹ó—v‘f</termref>ƒ^ƒO“à‚Å‚¾‚¯‰Â”\‚Æ‚·‚éB‚µ‚½‚ª‚Á‚ÄC‘®«‚ð”FŽ¯‚·‚邽‚߂̶¬‹K‘¥‚ÍC<titleref href='sec-starttags'>ŠJŽnƒ^ƒO</titleref>‚ɂ‚¢‚Ä‚Ì‹K’è‚ÅŽ¦‚·B‘®«ƒŠƒXƒg錾‚ÍCŽŸ‚Ì–Ú“I‚Å—p‚¢‚éB
+<ulist>
+<item><p>a) ‚ ‚é—v‘fŒ^‚É“K—p‚·‚é‘®«‚ÌW‡‚ð‹K’è‚·‚éB</p></item>
+<item><p>b) ‘®«‚Ö‚ÌŒ^§–ñ‚ðÝ’è‚·‚éB</p></item>
+<item><p>c) ‘®«‚Ì<termref def="dt-default">&default-value;</termref>‚ð‹K’è‚·‚éB</p></item>
+</ulist>
+</p>
+<p>
+<termdef id="dt-attdecl" term="Attribute-List Declaration">
+<term>‘®«ƒŠƒXƒg錾</term>‚ÍC‚ ‚é—v‘fŒ^‚ÆŠÖ˜A•t‚¯‚ç‚ꂽŠe‘®«‚ɑ΂µC–¼‘OCƒf[ƒ^Œ^‹y‚Ñ(‘¶Ý‚·‚ê‚Î)&default-value;‚ð‹K’è‚·‚éB
+<scrap lang='ebnf'>
+<head>‘®«ƒŠƒXƒg錾</head>
+<prod id='NT-AttlistDecl'><lhs>AttlistDecl</lhs>
+<rhs>'&lt;!ATTLIST' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-AttDef'>AttDef</nt>*
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+</prod>
+<prod id='NT-AttDef'><lhs>AttDef</lhs>
+<rhs><nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-AttType'>AttType</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-Default'>Default</nt></rhs>
+</prod>
+</scrap>
+
+<nt def='NT-AttlistDecl'>AttlistDecl</nt>‹K‘¥‚É‘¶Ý‚·‚é<nt def="NT-Name">Name</nt>‚ÍC—v‘fŒ^‚Ì–¼‘O‚Æ‚·‚éB&at-user-option;C錾‚µ‚Ä‚¢‚È‚¢—v‘fŒ^‚ɑ΂µ‘®«‚ð錾‚µ‚½‚È‚ç‚ÎCXML&processor;‚ÍCŒx‚ðo‚µ‚Ä‚à‚æ‚¢B‚µ‚©‚µC‚±‚ê‚Í&error;‚Æ‚Í‚µ‚È‚¢B
+<nt def='NT-AttDef'>AttDef</nt>‹K‘¥‚É‚¨‚¯‚é<nt def='NT-Name'>Name</nt>‚ÍC‘®«‚Ì–¼‘O‚Æ‚·‚éB
+</termdef>
+</p>
+<p>
+‚ ‚é—v‘f‚ɑ΂µ‚ÄC•¡”‚Ì<nt def='NT-AttlistDecl'>AttlistDecl</nt>‚ð—^‚¦‚éê‡C‚±‚ê‚ç‚·‚ׂĂ̓à—e‚̓}[ƒW‚·‚éB‚ ‚é—v‘fŒ^‚Ì“¯‚¶‘®«‚ÉC•¡”‚Ì’è‹`‚ð—^‚¦‚éꇂɂÍCʼn‚Ì錾‚ð—LŒø‚Æ‚µC‘¼‚Ì錾‚Í–³Ž‹‚·‚éB<termref def='dt-interop'>‘ŠŒÝ‰^—p«‚Ì‚½‚ß‚É</termref>CDTD‚Ì쬎҂ÍC‚ ‚é—v‘fŒ^‚É‚Í‚Xˆê‚‚̑®«ƒŠƒXƒg錾‚µ‚©—^‚¦‚È‚¢C‚ ‚é‘®«–¼‚É‚Í‚Xˆê‚‚̑®«’è‹`‚µ‚©—^‚¦‚È‚¢C‹y‚Ñ‚·‚ׂĂ̑®«ƒŠƒXƒg錾‚É‚Í­‚È‚­‚Æ‚àˆê‚‚̑®«’è‹`‚ð—^‚¦‚éC‚Æ‚¢‚¤‘I‘ð‚ð‚µ‚Ä‚à‚æ‚¢B‘ŠŒÝ‰^—p«‚Ì‚½‚ß‚ÉCXML&processor;‚ÍC&at-user-option;C‚ ‚é—v‘fŒ^‚É•¡”‚Ì‘®«ƒŠƒXƒg錾‚ð—^‚¦‚½‚èC‚ ‚é‘®«‚É•¡”‚Ì‘®«’è‹`‚ð—^‚¦‚½‚肵‚½‚Æ‚«‚ÉCŒx‚ðo‚µ‚Ä‚à‚æ‚¢B‚µ‚©‚µC‚±‚ê‚ÍC&error;‚Æ‚Í‚µ‚È‚¢B
+</p>
+
+<div3 id='sec-attribute-types'>
+<head>‘®«‚ÌŒ^</head>
+<p>
+XML‚Ì‘®«‚ÌŒ^‚ÍC‚RŽí—Þ‚Æ‚·‚éB‚±‚ê‚ç‚ÍC&string;Œ^C&token;‰»Œ^‹y‚Ñ—ñ‹“Œ^‚Æ‚·‚éB&string;Œ^‚ÍC’l‚Æ‚µ‚Ä”CˆÓ‚Ì&string;‚ð‚Æ‚éB&token;‰»Œ^‚ÍCŽŸ‚ÉŽ¦‚·Žš‹å‹y‚шӖ¡‚ÉŠÖ‚·‚é—lX‚ȧ–ñ‚ð‚à‚ÂB
+
+<scrap lang='ebnf'>
+<head>Attribute Types</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id='NT-AttType'><lhs>AttType</lhs>
+<rhs><nt def='NT-StringType'>StringType</nt>
+| <nt def='NT-TokenizedType'>TokenizedType</nt>
+| <nt def='NT-EnumeratedType'>EnumeratedType</nt>
+</rhs>
+</prod>
+<prod id='NT-StringType'><lhs>StringType</lhs>
+<rhs>'CDATA'</rhs>
+</prod>
+<prod id='NT-TokenizedType'><lhs>TokenizedType</lhs>
+<rhs>'ID'</rhs>
+<vc def='id'/>
+<vc def='one-id-per-el'/>
+<vc def='id-default'/>
+<rhs>| 'IDREF'</rhs>
+<vc def='idref'/>
+<rhs>| 'IDREFS'</rhs>
+<vc def='idref'/>
+<rhs>| 'ENTITY'</rhs>
+<vc def='entname'/>
+<rhs>| 'ENTITIES'</rhs>
+<vc def='entname'/>
+<rhs>| 'NMTOKEN'</rhs>
+<vc def='nmtok'/>
+<rhs>| 'NMTOKENS'</rhs>
+<vc def='nmtok'/></prod>
+</prodgroup>
+</scrap>
+</p>
+
+<vcnote id='id' >
+<head>ID</head>
+<p>
+‚±‚ÌŒ^‚Ì’l‚ÍC¶¬‹K‘¥<code>Name</code>‚É&match;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢Bˆê‚‚ÌXML•¶‘“à‚Å‚ÍCˆê‚‚̖¼‘O‚ªC‚±‚ÌŒ^‚Ì’l‚Æ‚µ‚Ä•¡”‰ñŒ»‚ê‚Ä‚Í‚È‚ç‚È‚¢B‚‚܂èCID‚Ì’l‚ÍC—v‘f‚ðˆêˆÓ‚É&identify;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+</vcnote>
+<vcnote id='one-id-per-el'>
+<head>1—v‘f‚²‚Æ‚É1ID</head>
+<p>
+—v‘fŒ^‚ÍC•¡”‚ÌID‘®«’l‚ð‚à‚Á‚Ä‚Í‚È‚ç‚È‚¢B
+</p>
+</vcnote>
+<vcnote id='id-default'>
+<head>ID‘®«‚Ì&default;</head>
+<p>
+ID‘®«‚ÍC&default;‚Æ‚µ‚ÄC<code>#IMPLIED</code>–”‚Í<code>#REQUIRED</code>‚ð錾‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+</vcnote>
+<vcnote id='idref'>
+<head>IDREF</head>
+<p>
+<kw>IDREF</kw>Œ^‚Ì’l‚ÍC¶¬‹K‘¥<nt def="NT-Name">Name</nt>‚É&match;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B<kw>IDREFS</kw>Œ^‚Ì’l‚ÍC¶¬‹K‘¥<nt def="NT-Names">Names</nt>‚É&match;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢BŠeX‚Ì<nt def='NT-Name'>Name</nt>‚ÍCXML•¶‘“à‚É‘¶Ý‚·‚é—v‘f‚ÌID‘®«‚Ì’l‚Æ&match;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚‚܂èC<kw>IDREF</kw>‚Ì’l‚ÍC‚ ‚éID‘®«‚Ì’l‚Æ&match;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+</vcnote>
+<vcnote id='entname'>
+<head>ŽÀ‘Ì–¼</head>
+<p>
+<kw>ENTITY</kw>Œ^‚Ì’l‚ÍC¶¬‹K‘¥<nt def="NT-Name">Name</nt>‚É&match;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B<kw>ENTITIES</kw>Œ^‚Ì’l‚ÍC¶¬‹K‘¥<nt def="NT-Names">Names</nt>‚É&match;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢BŠeX‚Ì<nt def="NT-Name">Name</nt>‚ÍC<termref def="dt-doctype">DTD</termref>‚Å錾‚·‚é<termref def="dt-unparsed">&unparsed-entity;</termref>‚Æ&match;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+</vcnote>
+<vcnote id='nmtok'>
+<head>–¼‘O&token;</head>
+<p>
+<kw>NMTOKEN</kw>Œ^‚Ì’l‚ÍC”ñI’[‹L†<termref def="NT-Nmtoken">Nmtoken</termref>‚Æ&match;‚·‚é&string;‚©‚ç\¬‚³‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢B<kw>NMTOKENS</kw>Œ^‚Ì’l‚ÍC”ñI’[‹L†<termref def="NT-Nmtokens">Nmtokens</termref>‚Æ&match;‚·‚é&string;‚©‚ç\¬‚³‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+</vcnote>
+<p>
+XML&processor;‚ÍC&application;‚É‘®«’l‚ð“n‚·‘O‚ÉC<titleref href="AVNormalize">‘®«’l‚̳‹K‰»</titleref>‚Å‹K’è‚·‚é‚Æ‚¨‚è‚ÉC‘®«’l‚ð³‹K‰»‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+<p>
+<termdef id='dt-enumerated' term='Enumerated Attribute Values'><term>—ñ‹“Œ^‚Ì‘®«</term>‚ÍC錾‚µ‚½’l‚̈ê‚‚ðŽæ‚邱‚Æ‚ª‚Å‚«‚éB</termdef>—ñ‹“Œ^‚É‚ÍC2Ží—Þ‚ ‚éB
+
+<scrap lang='ebnf'>
+<head>—ñ‹“‘®«‚ÌŒ^</head>
+<prod id='NT-EnumeratedType'><lhs>EnumeratedType</lhs>
+<rhs><nt def='NT-NotationType'>NotationType</nt>
+| <nt def='NT-Enumeration'>Enumeration</nt>
+</rhs></prod>
+<prod id='NT-NotationType'><lhs>NotationType</lhs>
+<rhs>'NOTATION'
+<nt def='NT-S'>S</nt>
+'('
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>? '|' <nt def='NT-Name'>Name</nt>)*
+<nt def='NT-S'>S</nt>? ')'
+</rhs>
+<vc def='notatn' /></prod>
+<prod id='NT-Enumeration'><lhs>Enumeration</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>?
+<nt def='NT-Nmtoken'>Nmtoken</nt>
+(<nt def='NT-S'>S</nt>? '|'
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Nmtoken'>Nmtoken</nt>)*
+<nt def='NT-S'>S</nt>?
+')'</rhs>
+<vc def='enum'/></prod>
+</scrap>
+</p>
+
+<vcnote id='notatn'>
+<head>‹L–@‘®«</head>
+<p>‚±‚ÌŒ^‚Ì’l‚ÍC錾‚µ‚Ä‚¢‚é<titleref href='Notations'>‹L–@</titleref>‚Ì–¼‘O‚̈ê‚‚Æ&match;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚‚܂èC錾‚É‘¶Ý‚·‚é‹L–@–¼‚ÍC‚·‚ׂÄ錾‚³‚ê‚Ä‚¢‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+</vcnote>
+<vcnote id='enum'>
+<head>—ñ‹“</head>
+<p>
+‚±‚ÌŒ^‚Ì’l‚ÍC錾‚É‘¶Ý‚·‚é<nt def='NT-Nmtoken'>Nmtoken</nt>&token;‚̈ê‚‚Æ&match;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+</vcnote>
+<p>
+<termref def='dt-interop'>‘ŠŒÝ‰^—p«‚Ì‚½‚ß</termref>C“¯‚¶<nt def='NT-Nmtoken'>Nmtoken</nt>‚ÍC’Pˆê—v‘fŒ^‚Ì—ñ‹“Œ^‚Ì‘®«‚Æ‚µ‚ÄC•¡”‰ñŒ»‚ê‚È‚¢•û‚ª‚æ‚¢B
+</p>
+</div3>
+
+<div3 id='sec-attr-defaults'>
+<head>‘®«‚Ì&default;</head>
+
+<p>
+<termref def="dt-attdecl">‘®«éŒ¾</termref>‚ÍC‘®«‚ÌŽw’肪•K{‚©‚Ç‚¤‚©‚ɂ‚¢‚Ä‚Ìî•ñ‚ð—^‚¦‚éB•K{‚Å‚È‚¢ê‡‚É‚ÍC•¶‘“à‚Å‘®«‚ðŽw’肵‚È‚¢‚Æ‚«CXML&processor;‚̈—•û–@‚Ìî•ñ‚à—^‚¦‚éB
+
+<scrap lang='ebnf'>
+<head>‘®«‚Ì&default;</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id='NT-Default'><lhs>Default</lhs>
+<rhs>'#REQUIRED'
+|&nbsp;'#IMPLIED' </rhs>
+<rhs>| (('#FIXED' S)? <nt def='NT-AttValue'>AttValue</nt>)</rhs>
+<vc def='defattrvalid'/>
+<wfc def="CleanAttrVals"/>
+</prod>
+</prodgroup>
+</scrap>
+<!-- improved by bosak
+<scrap lang='ebnf'>
+<head>Attribute Defaults</head>
+<prod id='NT-Default'><lhs>Default</lhs>
+<rhs>'#REQUIRED'
+|&nbsp;'#IMPLIED' </rhs>
+<vc def='defattrvalid'/>
+<wfc def="CleanAttrVals"/>
+<rhs>| (('#FIXED' S)? <nt def='NT-AttValue'>AttValue</nt>)</rhs>
+</prod>
+</scrap>-->
+</p>
+
+<vcnote id='defattrvalid'>
+<head>‘®«&default;‚̳‚µ‚³</head>
+<p>
+錾‚µ‚½&default-value;‚ÍC錾‚µ‚½‘®«Œ^‚ÌŽš‹å§–ñ‚ð–ž‚½‚³‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+</vcnote>
+<p>
+<kw>#REQUIRED</kw>‚ðŽw’肵‚½‚Æ‚«C‚±‚Ì—v‘fŒ^‚Ì<termref def="dt-stag">ŠJŽnƒ^ƒO</termref>‚Å‚ ‚Á‚ÄC‚±‚Ì‘®«‚É’l‚ð—^‚¦‚È‚¢‚à‚Ì‚ðXML&processor;‚ªŒ©‚‚¯‚½‚È‚ç‚ÎC‚»‚Ì•¶‘‚Í<termref def="dt-valid">&valid;</termref>‚Æ‚Í‚µ‚È‚¢B<kw>#IMPLIED</kw>‚ðŽw’肵‚½‚Æ‚«C‚±‚Ì‘®«‚ðÈ—ª‚µ‚½‚çCXML&processor;‚ÍC‘®«’l‚ðŽw’肵‚È‚¢‚±‚Æ‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É“`‚¦‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚±‚Ì‚Æ‚«C&application;‚ÌU•‘‚¢‚ɂ‚¢‚Ă̧–ñ‚Í‚È‚¢B
+</p>
+<p>
+<termdef id="dt-default" term="Attribute Default">
+‘®«‚ª<kw>#REQUIRED</kw>‚Å‚à<kw>#IMPLIED</kw>‚Å‚à‚È‚¢‚Æ‚«‚É‚ÍC<nt def='NT-AttValue'>AttValue</nt>‚Ì’l‚ªC<term>&default-value;</term>‚Æ‚È‚éB<kw>#FIXED</kw>‚Ìê‡C&default-value;‚ƈقȂé’l‚ªŽw’肳‚ê‚ê‚ÎC‚»‚Ì•¶‘‚ÍC<termref def="dt-valid">&valid;</termref>‚Æ‚µ‚È‚¢B&default-value;‚ð錾‚µ‚Ä‚¢‚éê‡C‚±‚Ì‘®«‚ÌÈ—ª‚ðŒ©‚Â‚¯‚½‚çC錾‚µ‚½&default-value;‚ð‘®«’l‚ÉŽw’肵‚Ä‚¢‚é‚Æ‚µ‚ÄCXML&processor;‚ÍU‚é•‘‚¤‚±‚Æ‚ª–]‚Ü‚µ‚¢B
+</termdef></p>
+
+<p>‘®«ƒŠƒXƒg錾‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+
+<eg>&lt;!ATTLIST termdef
+ id ID #REQUIRED
+ name CDATA #IMPLIED>
+&lt;!ATTLIST list
+ type (bullets|ordered|glossary) "ordered">
+&lt;!ATTLIST form
+ method CDATA #FIXED "POST"></eg></p>
+</div3>
+
+<div3 id='AVNormalize'>
+<head>‘®«’l‚̳‹K‰»</head>
+<p>
+XML&processor;‚ÍC‘®«’l‚ð&application;‚É“n‚·‘O‚ÉCŽŸ‚Ì‚Æ‚¨‚è‚ɳ‹K‰»‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+
+<ulist>
+<item>
+<p>a) ‚Ü‚¸C‘®«’l‹y‚Ñ‚»‚Ì’†‚ÌŽÀ‘Ì“à‚ÅCs–––”‚Ís‹«ŠE(–”‚̓VƒXƒeƒ€‚É‚æ‚Á‚Ă̓ŒƒR[ƒh‹«ŠE)‚Æ‚µ‚ÄŽg‚í‚ê‚é&string;‚ðC&space-character;(#x20)ˆê‚‚ɒu‚«Š·‚¦‚È‚¯‚ê‚΂Ȃç‚È‚¢(u<titleref xml-link="simple" href="sec-line-ends">s––‚̈µ‚¢</titleref>v‚àŽQÆ‚Ì‚±‚ÆB)B
+</p></item>
+<item>
+<p>b) ŽŸ‚ÉC•¶ŽšŽQÆ‹y‚Ñ“à•”&parsed-entity;‚Ö‚ÌŽQÆ‚ÍC“WŠJ‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢BŠO•”ŽÀ‘Ì‚Ö‚ÌŽQÆ‚ÍC&error;‚Æ‚·‚éB
+</p></item>
+<item>
+<p>c) ÅŒã‚ÉC‘®«‚ÌŒ^‚ª<kw>CDATA</kw>‚Å‚È‚¯‚ê‚ÎC‹ó”’&string;‚ÍC‚·‚ׂÄ&space-character;(#x20)ˆê‚‚ɳ‹K‰»‚µCŽc‚è‚Ì‹ó”’•¶Žš‚ÍC휂µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p></item>
+</ulist>
+
+&non-validating;&parser;‚ÍC錾‚ªŒ©‚‚©‚ç‚È‚¢‘®«‚ÍC‚·‚ׂÄC<kw>CDATA</kw>‚ð錾‚µ‚Ä‚¢‚é‚Æ‚µ‚Ĉµ‚¤‚±‚Æ‚ª–]‚Ü‚µ‚¢B</p>
+</div3>
+</div2>
+
+<div2 id='sec-condition-sect'>
+<head>ðŒ•t‚«ƒZƒNƒVƒ‡ƒ“</head>
+<p>
+<termdef id='dt-cond-section' term='conditional section'>
+<term>ðŒ•t‚«ƒZƒNƒVƒ‡ƒ“</term>‚Æ‚ÍC<termref def='dt-doctype'>•¶‘Œ^錾‚ÌŠO•”&subset;</termref>‚̈ꕔ‚Æ‚µC§ŒäƒL[ƒ[ƒh‚ÌŽw’è‚É‚æ‚Á‚ÄCDTD‚̘_—\‘¢‚ÉŠÜ‚ß‚½‚èCœ‚¢‚½‚è‚·‚é•”•ª‚Æ‚·‚éB
+</termdef>
+
+<scrap lang='ebnf'>
+<head>ðŒ•t‚«ƒZƒNƒVƒ‡ƒ“</head>
+<prodgroup pcw2="9" pcw4="14.5">
+<prod id='NT-conditionalSect'><lhs>conditionalSect</lhs>
+<rhs><nt def='NT-includeSect'>includeSect</nt>
+| <nt def='NT-ignoreSect'>ignoreSect</nt>
+</rhs>
+</prod>
+<prod id='NT-includeSect'><lhs>includeSect</lhs>
+<rhs>'&lt;![' S? 'INCLUDE' S? '['
+<!-- (<nt def='NT-markupdecl'>markupdecl</nt>
+ | <nt def="NT-conditionalSect">conditionalSect</nt>
+ | <nt def="NT-S">S</nt>)*
+-->
+<nt def="NT-extSubset">extSubset</nt>
+']]&gt;'
+</rhs>
+</prod>
+<prod id='NT-ignoreSect'><lhs>ignoreSect</lhs>
+<rhs>'&lt;![' S? 'IGNORE' S? '['
+<nt def="NT-ignoreSectContents">ignoreSectContents</nt>*
+']]&gt;'</rhs>
+</prod>
+<prod id='NT-ignoreSectContents'><lhs>ignoreSectContents</lhs>
+<rhs><nt def='NT-Ignore'>Ignore</nt>
+('&lt;![' <nt def='NT-ignoreSectContents'>ignoreSectContents</nt>
+']]&gt;'
+<nt def='NT-Ignore'>Ignore</nt>)*</rhs></prod>
+<prod id='NT-Ignore'><lhs>Ignore</lhs>
+<rhs><nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ('&lt;![' | ']]&gt;')
+<nt def='NT-Char'>Char</nt>*)
+</rhs></prod>
+<!--<rhs>
+((<nt def='NT-SkipLit'>SkipLit</nt>
+| <nt def='NT-Comment'>Comment</nt>
+| <nt def='NT-PI'>PI</nt>) -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+| ('&lt;![' <nt def='NT-ignoreSectContents'>ignoreSectContents</nt>*
+']]&gt;')
+</rhs>
+<rhs>
+| (<nt def='NT-Char'>Char</nt> - (']' | [&lt;'"]))
+</rhs>
+<rhs>
+| ('&lt;!' (<nt def='NT-Char'>Char</nt> - ('-' | '[')))
+</rhs>-->
+</prodgroup>
+</scrap>
+</p>
+
+<p>ðŒ•t‚«ƒZƒNƒVƒ‡ƒ“‚ÍCDTD‚Ì“à•”&subset;‹y‚ÑŠO•”&subset;‚Æ“¯—l‚ÉCŠ®‘S‚È錾CƒRƒƒ“ƒg–”‚Í“ü‚êŽq‚É‚È‚Á‚½ðŒ•t‚«ƒZƒNƒVƒ‡ƒ“‚ðC‚¢‚­‚‚©ŠÜ‚ñ‚Å‚æ‚¢B‚±‚ê‚ç‚ÌŠÔ‚ÉC‹ó”’‚ªŒ»‚ê‚Ä‚à‚æ‚¢B
+</p>
+<p>
+ðŒ•t‚«ƒZƒNƒVƒ‡ƒ“‚̃L[ƒ[ƒh‚ª<code>INCLUDE</code>‚È‚ç‚ÎCXML&processor;‚ÍC‚±‚ÌðŒ•t‚«ƒZƒNƒVƒ‡ƒ“‚Ì“à—e‚ðC•¶‘‚̈ꕔ‚Æ‚µ‚Ĉµ‚í‚È‚¯‚ê‚΂Ȃç‚È‚¢BðŒ•t‚«ƒZƒNƒVƒ‡ƒ“‚̃L[ƒ[ƒh‚ª<code>IGNORE</code>‚È‚ç‚ÎC‚»‚ÌðŒ•t‚«ƒZƒNƒVƒ‡ƒ“‚Ì“à—e‚ÍC•¶‘‚̈ꕔ‚Æ‚µ‚Ĉµ‚í‚È‚¢B\•¶‰ð͂𳂵‚­s‚¤‚½‚ß‚É‚ÍC–³Ž‹‚·‚éðŒ•t‚«ƒZƒNƒVƒ‡ƒ“(IGNORE)‚ÉŠÖ‚µ‚Ä‚àC“à—e‚ð“Ç‚Ü‚È‚¯‚ê‚΂Ȃç‚È‚¢‚±‚Æ‚É’ˆÓ‚·‚邱‚ÆB‚±‚ê‚ÍC“ü‚êŽq‚É‚È‚Á‚½ðŒ•t‚«ƒZƒNƒVƒ‡ƒ“‚ðŒ©‚Â‚¯C(–³Ž‹‚·‚é)Å‚àŠO‘¤‚ÌðŒ•t‚«ƒZƒNƒVƒ‡ƒ“‚𳂵‚­ŒŸo‚·‚邽‚ß‚Æ‚·‚éBƒL[ƒ[ƒh‚ð<code>INCLUDE</code>‚Æ‚·‚鬂³‚ÈðŒ•t‚«ƒZƒNƒVƒ‡ƒ“‚ªCƒL[ƒ[ƒh‚ð<code>IGNORE</code>‚Æ‚·‚é‚æ‚è‘å‚«‚ÈðŒ•t‚«ƒZƒNƒVƒ‡ƒ“‚ÉŠÜ‚Ü‚ê‚é‚È‚ç‚ÎCŠO‘¤‹y‚Ñ“à‘¤‚ÌðŒ•t‚«ƒZƒNƒVƒ‡ƒ“‚Ì—¼•û‚Æ‚à–³Ž‹‚·‚éB
+</p>
+<p>
+ðŒ•t‚«ƒZƒNƒVƒ‡ƒ“‚̃L[ƒ[ƒh‚ªƒpƒ‰ƒƒ^ŽÀ‘ÌŽQÆ‚È‚ç‚ÎCXML&processor;‚ÍðŒ•t‚«ƒZƒNƒVƒ‡ƒ“‚̈µ‚¢‚ð”»’f‚·‚é‘O‚ÉC‚±‚̃pƒ‰ƒƒ^ŽÀ‘Ì‚ð“WŠJ‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+
+<p>—á‚ðŽŸ‚ÉŽ¦‚·B
+
+<eg>&lt;!ENTITY % draft 'INCLUDE' >
+&lt;!ENTITY % final 'IGNORE' >
+
+&lt;![%draft;[
+&lt;!ELEMENT book (comments*, title, body, supplements?)>
+]]&gt;
+&lt;![%final;[
+&lt;!ELEMENT book (title, body, supplements?)>
+]]&gt;
+</eg>
+</p>
+</div2>
+<!--
+<div2 id='sec-pass-to-app'>
+<head>XML Processor Treatment of Logical Structure</head>
+<p>When an XML processor encounters a start-tag, it must make
+at least the following information available to the application:
+<ulist>
+<item>
+<p>the element type's generic identifier</p>
+</item>
+<item>
+<p>the names of attributes known to apply to this element type
+(validating processors must make available names of all attributes
+declared for the element type; non-validating processors must
+make available at least the names of the attributes for which
+values are specified.
+</p>
+</item>
+</ulist>
+</p>
+</div2>
+-->
+
+</div1>
+<!-- &Entities; -->
+
+<div1 id='sec-physical-struct'>
+<head>•¨—\‘¢</head>
+
+<p>
+<termdef id="dt-entity" term="Entity">
+XML•¶‘‚ÍCˆê‚ˆÈã‚Ì‹L‰¯’PˆÊ‚©‚ç\¬‚·‚éB‚±‚Ì‹L‰¯’PˆÊ‚ðC<term>ŽÀ‘Ì</term>‚Æ‚¢‚¤BŽÀ‘Ì‚ÍC<term>“à—e</term>‚ð‚à‚¿C•¶‘ŽÀ‘Ì(ˆÈ~ŽQÆ)‹y‚Ñ<termref def='dt-doctype'>ŠO•”DTD&subset;</termref>‚𜂢‚ÄC<term>–¼‘O</term>‚Å&identified;B
+</termdef>
+
+<!-- Added for CFG -->
+<!-- obscurity amputated by TWB -->
+<!-- entire sentence amputated by CMSMcQ: no one but NO ONE is
+ready for entities declared as
+<!ENTITY foo "http://www.foo.com/bar.xml#id">
+and it's pointless to suggest that it's possible
+under current circumstances. -->
+<!-- An entity may be stored in, -->
+<!--but need not be coterminous with, -->
+<!-- but need not comprise the whole of, -->
+<!-- a single physical storage object such as a file or -->
+<!-- database field. -->
+<!-- End sentence added for CFG -->ŠeXML•¶‘‚ÍC<termref def="dt-docent">•¶‘ŽÀ‘Ì</termref>‚ƌĂԎÀ‘Ì‚ðˆê‚‚à‚ÂB<termref def="dt-xml-proc">XML&processor;</termref>‚ÍC‚±‚Ì•¶‘ŽÀ‘Ì‚©‚爗‚ðŠJŽn‚·‚éB•¶‘ŽÀ‘Ì‚ªC•¶‘‚Ì‚·‚ׂĂðŠÜ‚ñ‚Å‚à‚æ‚¢B</p>
+
+<p>ŽÀ‘Ì‚ÍC&parsed-entity;–”‚Í&unparsed-entity;‚Æ‚·‚éB<termdef id="dt-parsedent" term="Text Entity"><term>&parsed-entity;</term>‚Ì“à—e‚ÍC&parsed-entity;‚Ì<termref def='dt-repltext'>&replacement-text;</termref>‚ƌĂÔB‚±‚Ì<termref def="dt-text">ƒeƒLƒXƒg</termref>‚ÍC•¶‘‚Ì–{‘̂̈ꕔ‚Æ‚µ‚ĉðŽß‚·‚éB
+</termdef>
+</p>
+
+<p>
+<termdef id="dt-unparsed" term="Unparsed Entity">
+<term>&unparsed-entity;</term>‚ÍC“à—e‚ª<termref def='dt-text'>ƒeƒLƒXƒg</termref>‚Å‚à‚»‚¤‚Å‚È‚­‚Æ‚à‚æ‚¢ƒŠƒ\[ƒX‚Æ‚·‚éBƒeƒLƒXƒg‚Ìê‡CXML‚Å‚È‚­‚Æ‚à‚æ‚¢BŠe&unparsed-entity;‚É‚ÍC<termref def="dt-notation">‹L–@</termref>‚ªŠÖ˜A•t‚¯‚ç‚êC‚±‚Ì‹L–@‚ÍC–¼‘O‚Å&identified;B‹L–@‚Ì–¼‘O‹y‚ÑŠÖ˜A•t‚¯‚ç‚ꂽ&identifier;‚ðCXML&processor;‚ª&application;‚É“n‚·‚Æ‚¢‚¤—vŒˆÈŠO‚ÍCXML‚ÍC&unparsed-entity;‚Ì“à—e‚ð§ŒÀ‚µ‚È‚¢B
+</termdef>
+</p>
+
+<p>&parsed-entity;‚ÍCŽÀ‘ÌŽQÆ‚É‚æ‚Á‚Ä–¼‘O‚ŌĂÑo‚·B&unparsed-entity;‚ÍC<kw>ENTITY</kw>Œ^–”‚Í<kw>ENTITIES</kw>Œ^‚Ì‘®«‚Ì’l‚Æ‚µ‚ÄC–¼‘O‚ÅŽQÆ‚·‚éB</p>
+
+<p>
+<termdef id='gen-entity' term='general entity'><term>ˆê”ÊŽÀ‘Ì</term>‚ÍC•¶‘“à—e‚Ì’†‚ÅŽg—p‚·‚é&parsed-entity;‚Æ‚·‚éB‚ ‚¢‚Ü‚¢‚É‚È‚ç‚È‚¢ŒÀ‚èC‚±‚Ì&TR-or-Rec;‚Å‚ÍCˆê”ÊŽÀ‘Ì‚ð’P‚É<emph>ŽÀ‘Ì</emph>‚ƌĂÔB</termdef><termdef id='dt-PE' term='Parameter entity'>ƒpƒ‰ƒƒ^ŽÀ‘Ì‚ÍCDTD“à‚ÅŽg—p‚·‚é&parsed-entity;‚Æ‚·‚éB</termdef>‚±‚ê‚ç‚Ì‚QŽí—Þ‚ÌŽÀ‘Ì‚ÍCˆÙ‚È‚é‘Ž®‚ÅŽQÆ‚µCˆÙ‚Ȃ镶–¬‚Å”FŽ¯‚·‚éB</p>
+
+<!--
+<div2 id='sec-synchro'>
+<head>Logical and Physical Structures</head>
+<p>The logical and physical structures (elements and entities)
+in an XML document must
+be properly nested.
+<termref def='dt-stag'>Tags</termref> and <termref def='dt-element'>elements</termref> must
+each begin and end in the same <termref def='dt-entity'>entity</termref>, but may
+refer to other
+entities internally; <termref def='dt-comment'>comments</termref>,
+<termref def='dt-pi'>processing instructions</termref>,
+<termref def='dt-charref'>character
+references</termref>, and
+<termref def='dt-entref'>entity references</termref> must each be contained entirely
+within a single entity. Entities must each contain an integral number
+of elements, comments, processing instructions, and references,
+possibly together with character data not contained within any element
+in the entity, or else they must contain non-textual data, which by
+definition contains no elements.</p></div2>
+-->
+
+<div2 id='sec-references'>
+<head>•¶ŽšŽQÆ‹y‚ÑŽÀ‘ÌŽQÆ</head>
+<p>
+<termdef id="dt-charref" term="Character Reference">
+<term>•¶ŽšŽQÆ</term>‚ÍCISO/IEC 10646•¶ŽšW‡‚Ì“Á’è‚Ì•¶ŽšC—Ⴆ‚ÎC“ü—Í‹@Ší‚©‚ç’¼Ú“ü—Í•s‰Â”\‚È•¶Žš‚ðŽQÆ‚·‚éB
+
+<scrap lang='ebnf'>
+<head>•¶ŽšŽQÆ</head>
+<prod id='NT-CharRef'><lhs>CharRef</lhs>
+<rhs>'&amp;#' [0-9]+ ';' </rhs>
+<rhs>| '&hcro;' [0-9a-fA-F]+ ';'</rhs>
+<wfc def="wf-Legalchar"/>
+</prod>
+</scrap>
+<wfcnote id="wf-Legalchar">
+<head>³“–‚È•¶Žš</head>
+<p>•¶ŽšŽQÆ‚ÅŽQÆ‚·‚镶Žš‚ÍC”ñI’[‹L†<termref def="NT-Char">Char</termref>‚É]‚í‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p>
+</wfcnote>
+•¶Žš‚ª "<code>&amp;#x</code>" ‚ÅŽn‚Ü‚ê‚ÎCI’[‚Ì "<code>;</code>" ‚Ü‚Å‚Ì”Žš‹y‚уAƒ‹ƒtƒ@ƒxƒbƒg‚ÍCISO/IEC 10646 ‚Ì•¶ŽšƒR[ƒh‚Ì16i”•\Œ»‚Æ‚·‚éB
+<!--“ú–{Œê–ó‚ɂ‚¢‚Ä: letter‚̓Aƒ‹ƒtƒ@ƒxƒbƒg‚Ɩ󂵂½B ŽOD -->
+•¶Žš‚ª "<code>&amp;#</code>" ‚ÅŽn‚Ü‚ê‚ÎCI’[‚Ì "<code>;</code>" ‚Ü‚Å‚Ì”Žš‚ÍC•¶ŽšƒR[ƒh‚Ì10i”•\Œ»‚Æ‚·‚éB
+</termdef>
+</p>
+
+<p>
+<termdef id="dt-entref" term="Entity Reference">
+<term>ŽÀ‘ÌŽQÆ</term>‚ÍC–¼‘O‚Ì•t‚¢‚½ŽÀ‘Ì‚Ì“à—e‚ðŽQÆ‚·‚éB</termdef><termdef id='dt-GERef' term='General Entity Reference'>ˆê”ÊŽÀ‘Ì‚Ö‚ÌŽQÆ‚ÍCƒAƒ“ƒpƒTƒ“ƒh(<code>&amp;</code>)‹y‚уZƒ~ƒRƒƒ“(<code>;</code>)‚ð‹æØ‚èŽq‚Æ‚µ‚Ä—p‚¢‚éB</termdef><termdef id='dt-PERef' term='Parameter-entity reference'><term>ƒpƒ‰ƒƒ^ŽÀ‘Ì</term>‚Ö‚ÌŽQÆ‚ÍCƒp[ƒZƒ“ƒg‹L†(<code>%</code>)‹y‚уZƒ~ƒRƒƒ“(<code>;</code>)‚ð‹æØ‚èŽq‚Æ‚µ‚Ä—p‚¢‚éB
+</termdef>
+</p>
+
+<scrap lang="ebnf">
+<head>ŽÀ‘ÌŽQÆ</head>
+<prod id='NT-Reference'><lhs>Reference</lhs>
+<rhs><nt def='NT-EntityRef'>EntityRef</nt>
+| <nt def='NT-CharRef'>CharRef</nt></rhs></prod>
+<prod id='NT-EntityRef'><lhs>EntityRef</lhs>
+<rhs>'&amp;' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<wfc def='wf-entdeclared'/>
+<vc def='vc-entdeclared'/>
+<wfc def='textent'/>
+<wfc def='norecursion'/>
+</prod>
+<prod id='NT-PEReference'><lhs>PEReference</lhs>
+<rhs>'%' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<wfc def='wf-entdeclared'/>
+<vc def='vc-entdeclared'/>
+<wfc def='textent'/>
+<wfc def='norecursion'/>
+<wfc def='indtd'/>
+</prod>
+</scrap>
+
+<wfcnote id='wf-entdeclared'>
+<head>ŽÀ‘Ì‚ªéŒ¾‚³‚ê‚Ä‚¢‚邱‚Æ</head>
+<p>DTD‚ð‚à‚½‚È‚¢•¶‘Cƒpƒ‰ƒƒ^ŽÀ‘ÌŽQÆ‚ðŠÜ‚Ü‚È‚¢“à•”DTD&subset;‚¾‚¯‚ð‚à‚•¶‘C–”‚Í "<code>standalone='yes'</code>" ‚ð‚à‚•¶‘‚É‚¨‚¢‚ÄCŽÀ‘ÌŽQÆ‚Å—p‚¢‚é <nt def='NT-Name'>Name</nt> ‚ÍC‚»‚ÌŽÀ‘Ì‚Ì錾‚Å—^‚¦‚é–¼‘O‚ÆC<termref def="dt-match">&match;</termref>‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚½‚¾‚µC&well-formed;‚Ì•¶‘‚ÍCŽÀ‘Ì&magicents; ‚ð錾‚·‚é•K—v‚Í‚È‚¢Bƒpƒ‰ƒƒ^ŽÀ‘Ì‚ÌꇂÍC錾‚ÍCŽQÆ‚Éæs‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B“¯—l‚ÉCˆê”ÊŽÀ‘Ì‚ÌꇂÍC‘®«ƒŠƒXƒg錾‚Ì&default-value;“à‚Å‚ÌŽQÆ‚æ‚èæ‚ÉC錾‚ªŒ»‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p>
+
+<p>ŠO•”&subset;–”‚ÍŠO•”ƒpƒ‰ƒƒ^ŽÀ‘Ì‚ÅŽÀ‘Ì‚ð錾‚·‚é‚Æ‚«C&non-validating;&processor;‚ªC錾‚ð“Ç‚ÝCˆ—‚·‚邱‚Æ‚ð<titleref href='include-if-valid'>‹`–±‚¯‚È‚¢</titleref>B‚»‚ê‚ç‚Ì•¶‘‚Å‚ÍCŽÀ‘Ì‚Í錾‚³‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢‚Æ‚¢‚¤‹K‘¥‚ÍC&well-formed;§–ñ‚Å‚Í‚È‚¢B
+</p>
+</wfcnote>
+
+<vcnote id="vc-entdeclared">
+<head>ŽÀ‘Ì‚ªéŒ¾‚³‚ê‚Ä‚¢‚邱‚Æ</head>
+<p>
+ŠO•”&subset;–”‚ÍŠO•”ƒpƒ‰ƒƒ^ŽÀ‘Ì‚ð‚à‚Á‚Ä‚¢‚ÄC"<code>standalone='no'</code>"‚ð‚à‚•¶‘‚É‚¨‚¢‚ÄCŽÀ‘ÌŽQÆ‚Å—p‚¢‚é <nt def='NT-Name'>Name</nt> ‚ÍC‚»‚ÌŽÀ‘Ì‚Ì錾‚Å—^‚¦‚é–¼‘O‚Æ<termref def="dt-match">&match;</termref>‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B‘ŠŒÝ‰^—p«‚Ì‚½‚ßC&valid;‚È•¶‘‚Í<titleref href="sec-escapes">‚ ‚ç‚©‚¶‚ß’è‹`‚µ‚½ŽÀ‘Ì‚Ì‹K’è</titleref>‚ÅŽw’肵‚½‘Ž®‚É‚æ‚Á‚ÄCŽÀ‘Ì &magicents;‚ð錾‚·‚邱‚Æ‚ª–]‚Ü‚µ‚¢Bƒpƒ‰ƒƒ^ŽÀ‘Ì‚ÌꇂÍC錾‚ÍCŽQÆ‚Éæs‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B“¯—l‚ÉCˆê”ÊŽÀ‘Ì‚ÌꇂÍC‘®«ƒŠƒXƒg錾‚Ì&default-value;“à‚Å‚ÌŽQÆ‚æ‚è‚àæ‚ÉC錾‚ªŒ»‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+</vcnote>
+
+<!-- FINAL EDIT: is this duplication too clumsy? -->
+
+<wfcnote id='textent'>
+<head>&parsed-entity;</head>
+<p>
+ŽÀ‘ÌŽQÆ‚ÍC<termref def="dt-unparsed">&unparsed-entity;</termref>‚Ì–¼‘O‚ðŠÜ‚ñ‚Å‚¢‚Ä‚Í‚È‚ç‚È‚¢B&unparsed-entity;‚ÍC<kw>ENTITY</kw>Œ^–”‚Í<kw>ENTITIES</kw> Œ^‚Æ‚µ‚Ä錾‚µ‚½<termref def="dt-attrval">‘®«’l</termref>‚Æ‚µ‚Ä‚¾‚¯ŽQÆ‚Å‚«‚éB
+</p>
+</wfcnote>
+
+<wfcnote id='norecursion'>
+<head>Ä‹A‚È‚µ</head>
+<p>&parsed-entity;‚ÍC‚»‚ꎩ‘Ì‚Ö‚ÌŽQÆ‚ðC’¼Ú‚É‚àŠÔÚ‚É‚àŠÜ‚ñ‚Å‚Í‚È‚ç‚È‚¢B</p>
+</wfcnote>
+
+<wfcnote id='indtd'>
+<head>DTD‚Ì’†</head>
+<p>
+ƒpƒ‰ƒƒ^ŽÀ‘ÌŽQÆ‚ÍC<termref def='dt-doctype'>DTD</termref>“à‚É‚¾‚¯CoŒ»‚µ‚Ä‚æ‚¢B
+<!--
+In the external DTD subset, a parameter-entity reference is
+recognized only at the locations where
+the nonterminal <nt def="NT-PEReference">PEReference</nt> or the
+special operator <code>%</code> appears in a production of the
+grammar. In the internal subset, parameter-entity references
+are recognized only when they match
+the <nt def="NT-InternalPERef">InternalPERef</nt> non-terminal
+in the production for <nt def="NT-markupdecl">markupdecl</nt>.
+-->
+</p>
+</wfcnote>
+
+<p>
+•¶ŽšŽQÆ‹y‚ÑŽÀ‘ÌŽQÆ‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg>Type &lt;key>less-than&lt;/key> (&hcro;3C;) to save options.
+This document was prepared on &amp;docdate; and
+is classified &amp;security-level;.</eg>
+</p>
+
+<p>
+ƒpƒ‰ƒƒ^ŽÀ‘ÌŽQÆ‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg>&lt;!ENTITY % ISOLat2
+ SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" >
+%ISOLat2;
+</eg>
+</p>
+</div2>
+
+<div2 id='sec-entity-decl'>
+<head>ŽÀ‘Ì錾</head>
+
+<p>
+<termdef id="dt-entdecl" term="entity declaration">
+ŽÀ‘Ì‚ÍCŽŸ‚Ì‚Æ‚¨‚è‚É錾‚·‚éB
+<scrap lang='ebnf'>
+<head>ŽÀ‘Ì錾</head>
+<prodgroup pcw2="5" pcw4="18.5">
+<prod id='NT-EntityDecl'><lhs>EntityDecl</lhs>
+<rhs><nt def="NT-GEDecl">GEDecl</nt></rhs><com>ˆê”ÊŽÀ‘Ì</com>
+<rhs>| <nt def="NT-PEDecl">PEDecl</nt></rhs><com>ƒpƒ‰ƒƒ^ŽÀ‘Ì</com>
+</prod>
+<prod id='NT-GEDecl'><lhs>GEDecl</lhs>
+<rhs>'&lt;!ENTITY' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-EntityDef'>EntityDef</nt>
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+</prod>
+<prod id='NT-PEDecl'><lhs>PEDecl</lhs>
+<rhs>| '&lt;!ENTITY' <nt def='NT-S'>S</nt> '%' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt> <nt def='NT-S'>S</nt>
+<nt def='NT-PEDef'>PEDef</nt> <nt def='NT-S'>S</nt>? '&gt;'</rhs>
+<com>ƒpƒ‰ƒƒ^ŽÀ‘Ì</com>
+</prod>
+<prod id='NT-EntityDef'><lhs>EntityDef</lhs>
+<rhs><nt def='NT-EntityValue'>EntityValue</nt>
+</rhs>
+<!--<wfc def="WF-EntityValue"/>-->
+<rhs>| <nt def='NT-ExternalDef'>ExternalDef</nt></rhs>
+<!--<wfc def="WF-External"/>-->
+</prod>
+<!-- FINAL EDIT: what happened to WFs here? -->
+<prod id='NT-PEDef'><lhs>PEDef</lhs>
+<rhs><nt def='NT-EntityValue'>EntityValue</nt>
+| <nt def='NT-ExternalID'>ExternalID</nt></rhs></prod>
+</prodgroup>
+</scrap>
+
+<nt def='NT-Name'>Name</nt> ‚ÍC<termref def="dt-entref">ŽÀ‘ÌŽQÆ</termref>‚É‚¨‚¢‚ÄŽÀ‘Ì‚ð&identify;B&unparsed-entity;‚È‚ç‚ÎC<kw>ENTITY</kw> Œ^–”‚Í<kw>ENTITIES</kw>Œ^‚Ì‘®«’l“à‚ÅCŽÀ‘Ì‚ð&identify;B“¯ˆê‚ÌŽÀ‘Ì‚ªˆê‰ñˆÈã錾‚³‚ê‚ê‚ÎCʼn‚Ì錾‚ð—p‚¢‚éB&at-user-option;C•¡”‰ñ錾‚³‚ê‚éŽÀ‘Ì‚ÉŠÖ‚µCXML&processor;‚ÍCŒx‚ðo‚µ‚Ä‚à‚æ‚¢B
+</termdef>
+</p>
+
+<!--
+<wfcnote id="WF-Entityvalue">
+<head>Well-Formed Internal Entity</head>
+<p>General entities defined by an <nt
+def="NT-EntityValue">EntityValue</nt> must be well-formed, as defined
+in section <specref ref="wf-entities"/>.
+</p>
+</wfcnote>
+<wfcnote id="WF-External">
+<head>Well-Formed External Entity</head>
+<p>General text entities defined by an <nt
+def="NT-ExternalDef">ExternalDef</nt>, must be well-formed, as defined
+in the section on <titleref xml-link="simple"
+href="wf-entities">well-formed entities.</titleref>.</p>
+</wfcnote>
+-->
+
+<div3 id='sec-internal-ent'>
+<head>“à•”ŽÀ‘Ì</head>
+<p>
+<termdef id='dt-internent' term="Internal Entity Replacement Text">
+ŽÀ‘Ì‚Ì’è‹`‚ª <nt def='NT-EntityValue'>EntityValue</nt>‚Ì‚Æ‚«C‚±‚ê‚ð<term>“à•”ŽÀ‘Ì</term>‚Æ‚¢‚¤B‚±‚ê‚ÍC•ÊŒÂ‚Ì•¨—“I‹L‰¯’PˆÊ‚ð‚à‚½‚¸CŽÀ‘Ì‚Ì“à—e‚ÍC錾“à‚Å—^‚¦‚éB</termdef>³‚µ‚­<termref def='dt-repltext'>&replacement-text;</termref>‚𶬂·‚é‚É‚ÍC<termref def='dt-litentval'>&literal;ŽÀ‘Ì’l</termref>“à‚Å‚ÌŽÀ‘ÌŽQÆ‹y‚Ñ•¶ŽšŽQƂ̈—‚ªC•K—v‚Æ‚È‚é‚©‚à‚µ‚ê‚È‚¢‚±‚Æ‚É’ˆÓ‚·‚éBÚׂÍC<titleref href='intern-replacement'>“à•”ŽÀ‘Ì‚Ì&replacement-text;‚Ì\’z</titleref>‚ðŽQÆB
+
+<!-- redundant -TWB
+Within the <nt def="NT-EntityValue">EntityValue</nt>,
+parameter-entity references and character references are recognized
+and expanded immediately.
+General-entity references within the
+replacement text are not recognized
+at the time the entity declaration is parsed, though they may be
+recognized when the entity itself is referred to.
+-->
+
+</p>
+
+<p>
+“à•”ŽÀ‘Ì‚ÍC<termref def="dt-parsedent">&parsed-entity;</termref>‚Æ‚·‚éB
+</p>
+
+<p>“à•”ŽÀ‘Ì錾‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg>&lt;!ENTITY Pub-Status "This is a pre-release of the specification."></eg></p>
+</div3>
+
+<div3 id='sec-external-ent'>
+<head>ŠO•”ŽÀ‘Ì</head>
+<p>
+<termdef id="dt-extent" term="External Entity">
+ŽÀ‘Ì‚ª“à•”ŽÀ‘Ì‚Å‚È‚¯‚ê‚ÎC<term>ŠO•”ŽÀ‘Ì</term>‚Æ‚µCŽŸ‚Ì‚Æ‚¨‚è‚É錾‚·‚éB
+
+<scrap lang='ebnf'>
+<head>ŠO•”ŽÀ‘Ì錾</head>
+<prod id='NT-ExternalDef'><lhs>ExternalDef</lhs>
+<rhs><nt def='NT-ExternalID'>ExternalID</nt>
+<nt def='NT-NDataDecl'>NDataDecl</nt>?</rhs></prod>
+<prod id='NT-ExternalID'><lhs>ExternalID</lhs>
+<rhs>'SYSTEM' <nt def='NT-S'>S</nt>
+<nt def='NT-SystemLiteral'>SystemLiteral</nt></rhs>
+<rhs>| 'PUBLIC' <nt def='NT-S'>S</nt>
+<nt def='NT-PubidLiteral'>PubidLiteral</nt>
+<nt def='NT-S'>S</nt>
+<nt def='NT-SystemLiteral'>SystemLiteral</nt>
+</rhs>
+</prod>
+<prod id='NT-NDataDecl'><lhs>NDataDecl</lhs>
+<rhs><nt def='NT-S'>S</nt> 'NDATA' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt></rhs>
+<vc def='not-declared'/></prod>
+</scrap>
+
+<nt def='NT-NDataDecl'>NDataDecl</nt> ‚ª‘¶Ý‚·‚ê‚ÎC‚±‚ÌŽÀ‘Ì‚ÍC<termref def="dt-unparsed">&unparsed-entity;</termref>‚Æ‚µC‚»‚¤‚Å‚È‚¯‚ê‚ÎC&parsed-entity;‚Æ‚·‚éB</termdef>
+</p>
+
+<vcnote id='not-declared'>
+<head>‹L–@‚ªéŒ¾‚³‚ê‚Ä‚¢‚邱‚Æ</head>
+<p>
+<nt def='NT-Name'>Name</nt> ‚ÍC錾‚µ‚½<termref def="dt-notation">‹L–@</termref>‚Ì–¼‘O‚Æ&match;‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+</vcnote>
+
+<p>
+<termdef id="dt-sysid" term="System Identifier">
+ƒL[ƒ[ƒh <kw>SYSTEM</kw> ‚ÌŒã‚Ì <nt def='NT-SystemLiteral'>SystemLiteral</nt> ‚ðCŽÀ‘Ì‚Ì<term>ƒVƒXƒeƒ€&identifier;</term>‚ƌĂÔB‚±‚ê‚ÍURI‚Æ‚µC‚»‚ÌŽÀ‘Ì‚Ì“à—e‚ðŽæ‚èo‚·‚Ì‚É—p‚¢‚Ä‚à‚æ‚¢B</termdef>URI‚Æ‹¤‚ÉŽg‚¤‚±‚Æ‚Ì‘½‚¢ƒnƒbƒVƒ…("<code>#</code>")‹y‚уtƒ‰ƒOƒƒ“ƒg&identifier;‚ÍC³Ž®‚É‚ÍCURIŽ©‘̂̈ꕔ‚Æ‚Í‚µ‚È‚¢Bƒtƒ‰ƒOƒƒ“ƒg&identifier;‚ªCƒVƒXƒeƒ€&identifier;‚Ì•”•ª‚Æ‚µ‚Ä—^‚¦‚ç‚ê‚Ä‚¢‚éê‡CXML&processor;‚ÍC&error;‚ðo‚µ‚Ä‚à‚æ‚¢B‚±‚Ì&TR-or-Rec;‚͈̔͊O‚Ìî•ñ(—Ⴆ‚ÎC‚ ‚é“Á’è‚ÌDTD‚Ì“Á•Ê‚ÈXML—v‘f–”‚Í“Á’è‚Ì&application;‚ÌŽd—l‚É‚æ‚Á‚Ä’è‹`‚³‚ꂽˆ—–½—ß)‚É‚æ‚Á‚Äã‘‚«‚³‚ê‚È‚¢ŒÀ‚èC‘Š‘ΓI‚ÈURI‚ÍC‚»‚ÌŽÀ‘̂̈ʒuC‚·‚È‚í‚¿C‚»‚ÌŽÀ‘Ì‚Ì錾‚ª‚ ‚éƒtƒ@ƒCƒ‹‚É‘Š‘ΓI‚Æ‚·‚éB‚µ‚½‚ª‚Á‚ÄCDTD‚Ì“à•”&subset;‚É‚ ‚éŽÀ‘Ì錾‚Å‚Ì‘Š‘ΓI‚ÈURI‚ÍC•¶‘‚̈ʒu‚ɂ‚¢‚Ä‘Š‘ΓI‚Æ‚·‚éBŠO•”&subset;‚É‚ ‚éŽÀ‘Ì錾‚Å‚Ì‘Š‘ΓI‚ÈURI‚ÍC‚»‚ÌŠO•”&subset;‚ðŠÜ‚Þƒtƒ@ƒCƒ‹‚̈ʒu‚É‘Š‘ΓI‚Æ‚·‚éB
+</p>
+
+<p>
+<termdef id="dt-pubid" term="Public identifier">
+ƒVƒXƒeƒ€&identifier;ˆÈŠO‚ÉCŠO•”ŽÀ‘Ì‚ÍC<term>ŒöŠJ&identifier;</term>‚ðŠÜ‚ñ‚Å‚à‚æ‚¢B
+</termdef>
+ŽÀ‘Ì‚Ì“à—e‚ðŽæ‚èo‚·XML&processor;‚ÍC‚±‚ÌŒöŠJ&identifier;‚ð—p‚¢‚ÄC‘ã‚í‚è‚ÌURI‚̶¬‚ðŽŽ‚Ý‚Ä‚à‚æ‚¢BXML&processor;‚ª‚±‚ê‚ÉŽ¸”s‚µ‚½ê‡‚ÍCƒVƒXƒeƒ€&literal;‚Æ‚µ‚ÄŽw’肵‚½URI‚ð—p‚¢‚È‚¯‚ê‚΂Ȃç‚È‚¢B&match;‚·‚é‘O‚ÉCŒöŠJ&identifier;“à‚É‚ ‚é‹ó”’•¶Žš‚©‚ç‚È‚é&string;‚ÍC‚·‚ׂĒPˆê‚Ì&space-character;(#x20)‚ɳ‹K‰»‚µ‚È‚¯‚ê‚΂Ȃ炸C‘OŒã‚Ì‹ó”’•¶Žš‚Í휂µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</p>
+
+<p>ŠO•”ŽÀ‘Ì錾‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg>&lt;!ENTITY open-hatch
+ SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">
+&lt;!ENTITY open-hatch
+ PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
+ "http://www.textuality.com/boilerplate/OpenHatch.xml">
+&lt;!ENTITY hatch-pic
+ SYSTEM "../grafix/OpenHatch.gif"
+ NDATA gif ></eg></p>
+</div3>
+
+</div2>
+
+<div2 id='TextEntities'>
+<head>&parsed-entity;</head>
+<div3 id='sec-TextDecl'>
+<head>ƒeƒLƒXƒg錾</head>
+<p>ŠO•”&parsed-entity;‚ÍC<term>ƒeƒLƒXƒg錾</term>‚ÅŽn‚Ü‚Á‚Ä‚à‚æ‚¢B
+<scrap lang='ebnf'>
+<head>ƒeƒLƒXƒg錾</head>
+<prodgroup pcw4="12.5" pcw5="13">
+<prod id='NT-TextDecl'><lhs>TextDecl</lhs>
+<rhs>&xmlpio;
+<nt def='NT-VersionInfo'>VersionInfo</nt>?
+<nt def='NT-EncodingDecl'>EncodingDecl</nt>
+<nt def='NT-S'>S</nt>? &pic;</rhs>
+<!-- <wfc def='wfc-xmldecliteral'/> -->
+<!-- <wfc def='wfc-no-nonleading-encdec'/> -->
+</prod>
+</prodgroup>
+</scrap>
+</p>
+<p>ƒeƒLƒXƒg錾‚ÍC‚»‚Ì‚Ü‚Ü‚ÌŒ`‚ÅŒ»‚ê‚È‚¯‚ê‚΂Ȃ炸C&parsed-entity;‚Ö‚ÌŽQÆ‚ðŒo—R‚µ‚Ä‚Í‚È‚ç‚È‚¢‚±‚Æ‚É’ˆÓ‚·‚éB</p>
+<p>ŠO•”&parsed-entity;‚É‚¨‚¢‚ÄCƒeƒLƒXƒg錾‚ÍC擪ˆÈŠO‚Ì‚¢‚©‚È‚éˆÊ’u‚É‚àoŒ»‚µ‚È‚¢B</p>
+</div3>
+<div3 id='wf-entities'>
+<head>&well-formed;‚Ì&parsed-entity;</head>
+<p>ƒ‰ƒxƒ‹<nt def='NT-document'>document</nt>‚ð‚à‚¶¬‹K‘¥‚É&match;‚·‚ê‚ÎC•¶‘ŽÀ‘Ì‚ÍC&well-formed;‚Æ‚·‚éBƒ‰ƒxƒ‹<nt def='NT-ExtParsedEnt'>ExtParsedEnt</nt>‚ð‚à‚¶¬‹K‘¥‚É&match;‚·‚ê‚ÎCŠO•”‚̈ê”Ê&parsed-entity;‚ÍC&well-formed;‚Æ‚·‚éBƒ‰ƒxƒ‹<nt def='NT-ExtPE'>ExtPE</nt>‚ð‚à‚¶¬‹K‘¥‚É&match;‚·‚ê‚ÎCŠO•”ƒpƒ‰ƒƒ^ŽÀ‘Ì‚ÍC&well-formed;‚Æ‚·‚éB
+
+<scrap lang='ebnf'>
+<head>&well-formed;‚Ì&parsed-entity;</head>
+<prod id='NT-ExtParsedEnt'><lhs>ExtParsedEnt</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-content'>content</nt></rhs>
+</prod>
+<prod id='NT-ExtPE'><lhs>ExtPE</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-extSubset'>extSubset</nt></rhs>
+</prod>
+</scrap>
+&replacement-text;‚ªCƒ‰ƒxƒ‹<nt def='NT-content'>content</nt>‚ð‚à‚¶¬‹K‘¥‚É&match;‚·‚ê‚ÎC“à•”‚̈ê”Ê&parsed-entity;‚ÍC&well-formed;‚Æ‚·‚éBDTD‚ðÅŒã‚Ü‚Å“Ç‚Ýž‚Ü‚È‚¢‚ÆCŠmŽÀ‚É‚±‚ê‚ð”»’è‚Å‚«‚È‚¢‚±‚Æ‚É’ˆÓB‚·‚×‚Ä‚Ì“à•”‚̃pƒ‰ƒƒ^ŽÀ‘Ì‚ÍC’è‹`‚É‚æ‚Á‚Ä&well-formed;‚Æ‚·‚éB
+</p>
+<p>ŽÀ‘Ì‚ª&well-formed;‚ÈŒ‹‰Ê‚Æ‚µ‚ÄCXML•¶‘‚̘_—“I‹y‚Ñ•¨—“I\‘¢‚ÍC³‚µ‚­“ü‚êŽq‚Æ‚È‚éB<termref def='dt-stag'>ŠJŽnƒ^ƒO</termref>C<termref def='dt-etag'>I—¹ƒ^ƒO</termref>C<termref def="dt-empty">‹ó—v‘fƒ^ƒO</termref>C<termref def='dt-element'>—v‘f</termref>C<termref def='dt-comment'>ƒRƒƒ“ƒg</termref>C<termref def='dt-pi'>ˆ—–½—ß</termref>C<termref def='dt-charref'>•¶ŽšŽQÆ</termref>‹y‚Ñ<termref def='dt-entref'>ŽÀ‘ÌŽQÆ</termref>‚ªCˆê‚‚̎À‘Ì‚ÅŠJŽn‚µC•Ê‚ÌŽÀ‘Ì‚ÅI—¹‚·‚邱‚Æ‚Í‚È‚¢B</p>
+</div3>
+<div3 id='charencoding'>
+<head>ŽÀ‘Ì‚É‚¨‚¯‚镶Žš•„†‰»</head>
+
+<p>XML•¶‘“à‚ÌŠO•”&parsed-entity;‚ÍCŠeXC•Ê‚Ì•¶Žš•„†‰»•ûŽ®‚ð—p‚¢‚Ä‚à‚æ‚¢B‚·‚ׂĂÌXML&processor;‚ÍCUTF-8‚Å•„†‰»‚µ‚½ŽÀ‘ÌCUTF-16‚Å•„†‰»‚µ‚½ŽÀ‘Ì‚ðˆ—‚Å‚«‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+<!--
+It is recognized that for some purposes, the use of additional
+ISO/IEC 10646 planes other than the Basic Multilingual Plane
+may be required.
+A facility for handling characters in these planes is therefore a
+desirable characteristic in XML processors and applications.
+-->
+</p>
+<p>UTF-16‚Å•„†‰»‚µ‚½ŽÀ‘Ì‚ÍCISO/IEC 10646‚Ì•t˜^E‹y‚ÑUnicode‚Ì•t˜^B‚Å‹K’è‚·‚é&byte-order-mark;(ZERO WIDTH NO-BREAK SPACE•¶ŽšC#xFEFF)‚ÅŽn‚Ü‚ç‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚±‚ê‚ÍC•„†‰»‚Ì•WŽ¯‚Å‚ ‚Á‚ÄCXML•¶‘‚Ì&markup;‚̈ꕔ‚Å‚àC•¶Žšƒf[ƒ^‚̈ꕔ‚Å‚à‚È‚¢BXML&processor;‚ÍCUTF-8‚Å•„†‰»‚µ‚½•¶‘‚ÆUTF-16‚Å•„†‰»‚µ‚½•¶‘‚Æ‚Ì‹æ•Ê‚ðs‚¤‚½‚ß‚ÉC‚±‚Ì•¶Žš‚ðŽg—p‰Â”\‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p>
+<p>XML&processor;‚ÍCUTF-8‹y‚ÑUTF-16‚Å•„†‰»‚µ‚½ŽÀ‘Ì‚¾‚¯‚ð“Ç‚Þ‚±‚Æ‚ð•K{‚Æ‚·‚邪C‘¼‚Ì•„†‰»‚ð¢ŠE‚Å‚Í—p‚¢‚Ä‚¨‚èC‚»‚ê‚ç‚Ì•„†‰»‚ð—p‚¢‚éŽÀ‘Ì‚ðXML&processor;‚ªˆ—‚Å‚«‚邱‚Æ‚ª–]‚Ü‚µ‚¢BUTF-8–”‚ÍUTF-16ˆÈŠO‚Ì•„†‰»•ûŽ®‚ð—p‚¢‚ÄŠi”[‚·‚é&parsed-entity;‚ÍC•„†‰»éŒ¾‚ðŠÜ‚Þ<titleref href='TextDecl'>ƒeƒLƒXƒg錾</titleref>‚ÅŽn‚ß‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+<scrap lang='ebnf'>
+<head>•„†‰»éŒ¾</head>
+<prod id='NT-EncodingDecl'><lhs>EncodingDecl</lhs>
+<rhs><nt def="NT-S">S</nt>
+'encoding' <nt def='NT-Eq'>Eq</nt>
+'"' <nt def='NT-EncName'>EncName</nt> '"' | "'"
+<nt def='NT-EncName'>EncName</nt> "'"
+</rhs>
+</prod>
+<prod id='NT-EncName'><lhs>EncName</lhs>
+<rhs>[A-Za-z] ([A-Za-z0-9._] | '-')*</rhs>
+<com>ƒ‰ƒeƒ“•¶Žš‚¾‚¯‚ðŠÜ‚Þ•„†‰»–¼</com>
+</prod>
+</scrap>
+<termref def='dt-docent'>•¶‘ŽÀ‘Ì</termref>‚Å‚ÍC•„†‰»éŒ¾‚ÍC<termref def="dt-xmldecl">XML錾</termref>‚̈ꕔ‚Æ‚·‚éB<nt def="NT-EncName">EncName</nt>‚ÍCŽg—p‚·‚é•„†‰»•ûŽ®‚Ì–¼‘O‚Æ‚·‚éB
+</p>
+<!-- FINAL EDIT: check name of IANA and charset names -->
+<p>•„†‰»éŒ¾‚Å‚ÍC’l<code>UTF-8</code>C<code>UTF-16</code>C<code>ISO-10646-UCS-2</code>‹y‚Ñ<code>ISO-10646-UCS-4</code>‚ÍCUnicode‹y‚ÑISO/IEC 10646‚ÌŠeŽí•„†‰»‚Ì‚½‚ß‚É—p‚¢‚éB’l<code>ISO-8859-1</code>‚©‚ç<code>ISO-8859-9</code>‚Ü‚Å‚ÍCISO 8859‚̑Ήž‚·‚éƒp[ƒg‚Ì‚½‚ß‚É—p‚¢‚éB’l<code>ISO-2022-JP</code>C<code>Shift_JIS</code>‹y‚Ñ<code>EUC-JP</code>‚ÍCJIS X-0208-1997‚ÌŠeŽí•„†‰»‚Ì‚½‚ß‚É—p‚¢‚éBXML&processor;‚ÍC‚»‚êˆÈŠO‚Ì•„†‰»•ûŽ®‚ð”FŽ¯‚µ‚Ä‚à‚æ‚¢BInternet Assigned Numbers Authority (IANA)‚ÉC(<emph>charset</emph>s‚Æ‚µ‚Ä)“o˜^‚³‚ꂽ•¶Žš•„†‰»•ûŽ®‚ɂ‚¢‚Ä‚ÍC‚±‚ê‚çˆÈŠO‚ɂ‚¢‚Ä‚àC“o˜^‚³‚ꂽ–¼‘O‚ÅŽQÆ‚·‚邱‚Æ‚ª–]‚Ü‚µ‚¢B‚±‚ê‚ç‚Ì“o˜^‚³‚ꂽ–¼‘O‚ÍC‘啶ŽšE¬•¶Žš‚Ì‹æ•Ê‚ð‚¹‚¸‚É’è‹`‚³‚ê‚Ä‚¢‚é‚Ì‚ÅC‚±‚ê‚ç‚ɑ΂·‚é”äŠr‚ðŽŽ‚Ý‚é&processor;‚ÍC‘啶ŽšE¬•¶Žš‚Ì‹æ•Ê‚ð‚µ‚È‚¢•û–@‚ð‚Æ‚é‚Ì‚ª–]‚Ü‚µ‚¢‚±‚Æ‚É’ˆÓ‚·‚éB</p>
+<p>XMLˆ—Œn‚É“n‚³‚ꂽŽÀ‘Ì‚ªC•„†‰»éŒ¾‚ðŠÜ‚Þ‚É‚à‚©‚©‚í‚炸C錾‚ÅŽ¦‚µ‚½‚à‚̈ȊO‚Ì•ûŽ®‚Å•„†‰»‚³‚ê‚Ä‚¢‚½‚èC•„†‰»éŒ¾‚ªCŠO•”ŽÀ‘Ì‚ÌʼnˆÈŠO‚̈ʒu‚ÉoŒ»‚·‚ê‚ÎC<termref def="dt-error">&error;</termref>‚Æ‚·‚éB
+</p>
+<p>&byte-order-mark;‚Å‚à•„†‰»éŒ¾‚Å‚àŽn‚Ü‚ç‚È‚¢ŽÀ‘Ì‚ÍCUTF-8•„†‰»‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p>
+
+<p><!-- XML processors should make an effort to use all available
+information, internal and external, to aid in detecting an entity's correct
+encoding. Such information may include, but is not limited to:
+<ulist><item><p>An HTTP header</p></item>
+<item><p>A MIME header obtained other than through HTTP</p></item>
+<item><p>Metadata provided by the native OS file system or by document
+management software</p></item>
+<item><p>The bit patterns at the front of an entity, which may
+be analyzed to determine if
+the application of any known encoding yields a valid encoding
+declaration. See <titleref href='sec-guessing'>the appendix on
+autodetection of character sets</titleref>
+for a fuller description.</p></item></ulist> -->
+ˆ—‚Å‚«‚È‚¢•„†‰»‚ð‚à‚Á‚½ŽÀ‘Ì‚ðXML&processor;‚ª”­Œ©‚µ‚½‚Æ‚«‚ÍC&application;‚É‚»‚ÌŽ–ŽÀ‚ð’Ê’m‚µC<termref def='dt-fatal'>&fatal-error;</termref>‚Æ‚µ‚ÄCˆ—‚ðI—¹‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+<!--
+inform the application of this fact and
+may
+allow the application to
+request either that the entity should be treated as an <termref
+def="dt-unparsed">unparsed entity</termref>, or that processing should
+cease.-->
+</p>
+<p>•„†‰»éŒ¾‚Ì—á‚ðCŽŸ‚ÉŽ¦‚·B
+<eg>&lt;?xml encoding='UTF-8'?>
+&lt;?xml encoding='EUC-JP'?></eg></p>
+</div3>
+</div2>
+<div2 id='entproc'>
+<head>XML&processor;‚É‚æ‚éŽÀ‘Ì‹y‚ÑŽQƂ̈µ‚¢</head>
+<p>ŽŸ‚Ì•\‚ÍC•¶ŽšŽQÆCŽÀ‘ÌŽQÆ‹y‚Ñ&unparsed-entity;‚ÌŒÄo‚µ‚ªŒ»‚ê‚镶–¬‹y‚ÑŠeX‚Ìꇂɂ¨‚¯‚é<termref def='dt-xml-proc'>XML&processor;</termref>‚É—v‹‚·‚éU•‘‚¢‚ð—v–ñ‚·‚éBˆê”Ô¶‚Ì—ñ‚̃‰ƒxƒ‹‚ÍC”FŽ¯‚Ì•¶–¬‚ðŽ¦‚·B
+<glist>
+<gitem><label>“à—e‚É‚¨‚¯‚éŽQÆ</label>
+<def><p>—v‘f‚Ì<termref def='dt-stag'>ŠJŽnƒ^ƒO</termref>‹y‚Ñ<termref def='dt-etag'>I—¹ƒ^ƒO</termref>‚ÌŠÔ‚Ì”CˆÓ‚Ìꊂł̎QÆB”ñI’[‹L†<nt def='NT-content'>content</nt>‚ɑΉž‚·‚éB</p></def>
+</gitem>
+<gitem>
+<label>‘®«’l‚É‚¨‚¯‚éŽQÆ</label>
+<def><p><termref def='dt-stag'>ŠJŽnƒ^ƒO</termref>‚Ì‘®«‚Ì’lC–”‚Í<termref def='dt-attdecl'>‘®«éŒ¾</termref>‚É‚¨‚¯‚é&default-value;‚Ì‚¢‚¸‚ê‚©‚Å‚ÌŽQÆB”ñI’[‹L†<nt def='NT-AttValue'>AttValue</nt>‚ɑΉž‚·‚éB</p></def></gitem>
+<gitem>
+<label>‘®«’l‚Æ‚µ‚ÄoŒ»</label>
+<def><p>ŽQÆ‚Å‚Í‚È‚­C<nt def='NT-Name'>Name</nt>‚Æ‚µ‚ÄoŒ»B<code>ENTITY</code>Œ^‚Æ‚µ‚Ä錾‚µ‚½‘®«‚Ì’lC–”‚Í<code>ENTITIES</code>Œ^‚Æ‚µ‚Ä錾‚µ‚½‘®«‚Ì’l‚É‚¨‚¯‚é&space;‚Å‹æØ‚é&token;‚̈ê‚‚Ƃµ‚ÄoŒ»‚·‚éB</p>
+</def></gitem>
+<gitem><label>ŽÀ‘Ì’l‚É‚¨‚¯‚éŽQÆ</label>
+<def><p>ŽÀ‘Ì‚Ì錾‚É‚¨‚¯‚éCƒpƒ‰ƒƒ^–”‚Í“à•”ŽÀ‘Ì‚Ì<termref def='dt-litentval'>&literal;ŽÀ‘Ì’l</termref>“à‚ÌŽQÆB”ñI’[‹L†<nt def='NT-EntityValue'>EntityValue</nt>‚ɑΉž‚·‚éB</p></def></gitem>
+<gitem><label>DTD‚É‚¨‚¯‚éŽQÆ</label>
+<def><p><termref def='dt-doctype'>DTD</termref>‚Ì“à•”&subset;–”‚ÍŠO•”&subset;‚Å‚ÌŽQÆB‚½‚¾‚µC<nt def='NT-EntityValue'>EntityValue</nt>–”‚Í<nt def="NT-AttValue">AttValue</nt>‚ÌŠO‘¤‚Æ‚·‚éB</p></def>
+</gitem>
+</glist></p>
+<!-- border value changed by bosak -->
+<htable border='1' cellpadding='7' align='center'>
+<!-- tbody wrapper added by bosak -->
+<htbody>
+<tr><td bgcolor='&cellback;' rowspan='2' colspan='1'></td>
+<td bgcolor='&cellback;' align='center' valign='bottom' colspan='4'>ŽÀ‘Ì‚ÌŒ^</td>
+<td bgcolor='&cellback;' rowspan='2' align='center'>•¶Žš</td>
+</tr>
+<tr align='center' valign='bottom'>
+<td bgcolor='&cellback;'>ƒpƒ‰ƒƒ^</td>
+<td bgcolor='&cellback;'>“à•”&newline;ˆê”Ê</td>
+<td bgcolor='&cellback;'>ŠO•”&newline;&parsed-entity;&newline;ˆê”Ê</td>
+<td bgcolor='&cellback;'>&unparsed-entity;</td>
+</tr>
+<tr align='center' valign='middle'>
+<!--<td bgcolor='&cellback;' rowspan='4'>Recognition
+Context</td>-->
+<td bgcolor='&cellback;' align='right'>“à—e‚Å‚Ì&newline;ŽQÆ</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>”FŽ¯&newline;‚µ‚È‚¢</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>Žæž‚Ý</titleref></td>
+<td bgcolor='&cellback;'><titleref href='include-if-valid'>ŒŸØ‚Ì‚½‚ß‚ÉŽæž‚Ý</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>‹ÖŽ~</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>Žæž‚Ý</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>‘®«’l‚Å‚Ì&newline;ŽQÆ</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>”FŽ¯&newline;‚µ‚È‚¢</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>Žæž‚Ý</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>‹ÖŽ~</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>‹ÖŽ~</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>Žæž‚Ý</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>‘®«’l‚Æ‚µ‚Ä&newline;oŒ»</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>”FŽ¯&newline;‚µ‚È‚¢</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>‹ÖŽ~</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>‹ÖŽ~</titleref></td>
+<td bgcolor='&cellback;'><titleref href='notify'>’Ê’m</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not recognized'>”FŽ¯&newline;‚µ‚È‚¢</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>ŽÀ‘Ì’l‚Å‚Ì&newline;ŽQÆ</td>
+<td bgcolor='&cellback;'><titleref href='included'>Žæž‚Ý</titleref></td>
+<td bgcolor='&cellback;'><titleref href='bypass'>&bypass;</titleref></td>
+<td bgcolor='&cellback;'><titleref href='bypass'>&bypass;</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>‹ÖŽ~</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>Žæž‚Ý</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>DTD‚Å‚Ì&newline;ŽQÆ</td>
+<td bgcolor='&cellback;'><titleref href='as-PE'>PE‚Æ‚µ‚Ä&newline;Žæž‚Ý</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>‹ÖŽ~</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>‹ÖŽ~</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>‹ÖŽ~</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>‹ÖŽ~</titleref></td>
+</tr>
+</htbody>
+</htable>
+<div3 id='not-recognized'>
+<head>g”FŽ¯‚µ‚È‚¢h</head>
+<p>DTD‚ÌŠO‚Å‚ÍC<code>%</code>•¶Žš‚ÍC‚¢‚©‚È‚é“Á’è‚̈Ӗ¡‚àC‚à‚½‚È‚¢B‚µ‚½‚ª‚Á‚ÄCDTD‚ł̓pƒ‰ƒƒ^ŽÀ‘ÌŽQÆ‚Æ‚µ‚Ä”FŽ¯‚·‚é‚à‚Ì‚Å‚ ‚Á‚Ä‚àC<nt def='NT-content'>content</nt>“à‚Å‚Í&markup;‚Æ‚µ‚Ä‚Í”FŽ¯‚µ‚È‚¢B“¯—l‚ÉC“KØ‚É錾‚µ‚½‘®«‚Ì’l‚Ì’†‚ÉŒ»‚ê‚éꇂ𜂫C&unparsed-entity;‚Ì–¼‘O‚ÍC”FŽ¯‚µ‚È‚¢B
+</p>
+</div3>
+<div3 id='included'>
+<head>gŽæž‚Ýh</head>
+<p><termdef id="dt-include" term="Include">ŽÀ‘Ì‚ÍC‚»‚Ì<termref def='dt-repltext'>&replacement-text;</termref>‚ðŽæ‚èo‚µCˆ—‚·‚é‚ÆCŽQÆŽ©‘Ì‚Ì‘ã‚í‚è‚ÉCŽQÆ‚ª‚ ‚Á‚½ˆÊ’u‚ÅC•¶‘‚̈ꕔ‚Æ‚µ‚ÄŠÜ‚Ü‚ê‚é‚©‚̂悤‚É<term>Žæ‚èž‚Ü‚ê‚é</term>B&replacement-text;‚ÍC<termref def='dt-chardata'>•¶Žšƒf[ƒ^</termref>‹y‚Ñ(ƒpƒ‰ƒƒ^ŽÀ‘̂𜂭B)<termref def="dt-markup">&markup;</termref>‚Ì‚¢‚¸‚ê‚ðŠÜ‚ñ‚Å‚à‚æ‚­C‚±‚ê‚ç‚ÍC’Êí‚Ì•û–@‚Å”FŽ¯‚³‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚½‚¾‚µC&markup;‚Ì‹æØ‚èŽq‚ð&escape;‚·‚邽‚ß‚É—p‚¢‚éŽÀ‘Ì(&magicents;)‚Ì&replacement-text;‚ÍCí‚Ƀf[ƒ^‚Æ‚µ‚Ĉµ‚¤(&string;"<code>AT&amp;amp;T;</code>"‚ÍC"<code>AT&amp;T;</code>"‚É“WŠJ‚³‚êCŽc‚³‚ꂽƒAƒ“ƒpƒTƒ“ƒh‚ÍCŽÀ‘ÌŽQÆ‚Ì‹æØ‚èŽq‚Æ‚µ‚Ä‚Í”FŽ¯‚µ‚È‚¢B)B•¶ŽšŽQÆ‚ÍCŽ¦‚µ‚½•¶Žš‚ðŽQÆŽ©‘Ì‚Ì‘ã‚í‚è‚Ɉ—‚·‚é‚Æ‚«C<term>Žæ‚èž‚Ü‚ê‚é</term>B
+</termdef></p>
+</div3>
+<div3 id='include-if-valid'>
+<head>gŒŸØ‚Ì‚½‚ß‚ÉŽæž‚Ýh</head>
+<p>•¶‘‚Ì&validity;‚ð<termref def="dt-valid">ŒŸØ</termref>‚·‚é‚É‚ÍCXML&processor;‚ª&parsed-entity;‚Ö‚ÌŽQÆ‚ð”FŽ¯‚µ‚½‚Æ‚«C‚»‚Ì&replacement-text;‚ð<termref def="dt-include">Žæ‚èž‚Ü</termref>‚È‚¯‚ê‚΂Ȃç‚È‚¢BŽÀ‘Ì‚ªŠO•”ŽÀ‘Ì‚Å‚ ‚Á‚ÄCXML•¶‘‚Ì&validity;‚ðŒŸØ‚µ‚È‚¯‚ê‚ÎCŽÀ‘Ì‚Ì&replacement-text;‚ðŽæ‚èž‚ñ‚Å‚à<termref def="dt-may">‚æ‚¢</termref>‚ªC‚»‚¤‚µ‚È‚­‚Æ‚à‚æ‚¢B</p>
+<p>‚±‚̎挈‚ß‚ÍCSGML‹y‚ÑXML‚ÌŽÀ‘Ì‚Ì‹@\‚ª’ñ‹Ÿ‚·‚鎩“®Žæž‚Ý‹@”\‚ªC•¶‘쬎ž‚̃‚ƒWƒ…[ƒ‹‰»‚ðŽå‚È–Ú“I‚Æ‚µ‚ÄÝŒv‚³‚ê‚Ä‚¨‚èC‚»‚Ì‘¼‚Ì&application;(“Á‚ÉC•¶‘‚̃uƒ‰ƒEƒY)‚É‚ÍC•K‚¸‚µ‚à“KØ‚Å‚Í‚È‚¢C‚Æ‚¢‚¤”FŽ¯‚É‚æ‚éB—Ⴆ‚ÎCƒuƒ‰ƒEƒU‚ÍŠO•”&parsed-entity;‚Ö‚ÌŽQÆ‚ðŒ©‚Â‚¯‚é‚ÆC‚»‚ÌŽÀ‘Ì‚ª‘¶Ý‚·‚é‚Æ‚¢‚¤•\Ž¦‚¾‚¯‚ðs‚¢C•\Ž¦‚ð—v‹‚³‚ꂽ‚Æ‚«‚É‚¾‚¯C“à—e‚ðŽæ‚èo‚·‚©‚à‚µ‚ê‚È‚¢B
+</p>
+</div3>
+<div3 id='forbidden'>
+<head>g‹ÖŽ~h</head>
+<p>ŽŸ‚Í‹ÖŽ~‚³‚ê‚Ä‚¨‚èC<termref def='dt-fatal'>&fatal-error;</termref>‚Æ‚·‚éB
+<ulist>
+<item><p>a) <termref def='dt-unparsed'>&unparsed-entity;</termref>‚Ö‚ÌŽQÆ‚ÌoŒ»B
+</p></item>
+<item><p>b) DTD‚Ì<nt def='NT-EntityValue'>EntityValue</nt>–”‚Í<nt def="NT-AttValue">AttValue</nt>ˆÈŠO‚Ì•”•ª‚É‚¨‚¯‚éC•¶ŽšŽQÆ–”‚͈ê”ÊŽÀ‘Ì‚Ö‚ÌŽQÆ‚ÌoŒ»B</p></item>
+<item><p>c) ‘®«’l“à‚ÌŠO•”ŽÀ‘Ì‚Ö‚ÌŽQÆB</p>
+</item>
+</ulist>
+</p>
+</div3>
+<div3 id='notify'>
+<head>g’Ê’mh</head>
+<p><termref def='dt-unparsed'>&unparsed-entity;</termref>‚Ì–¼‘O‚ªC<kw>ENTITY</kw>–”‚Í<kw>ENTITIES</kw>‚Ì‘®«‚Ì’l‚É‚¨‚¢‚Ä&token;‚Æ‚µ‚ÄŒ»‚ꂽ‚Æ‚«C&processor;‚ÍC&application;‚ɑ΂µ‚ÄCŠÖ˜A•t‚¯‚ç‚ꂽ<termref def="dt-notation">‹L–@</termref>–¼C‹L–@‚ɑ΂·‚é<termref def='dt-sysid'>ƒVƒXƒeƒ€</termref>&identifier;‹y‚Ñ(‘¶Ý‚·‚ê‚Î)<termref def='dt-pubid'>ŒöŠJ</termref>&identifier;‚ð’Ê’m‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p>
+</div3>
+<div3 id='bypass'>
+<head>g&bypass;h</head>
+<p>ˆê”ÊŽÀ‘ÌŽQÆ‚ªCŽÀ‘Ì錾‚É‚¨‚¯‚é<nt def='NT-EntityValue'>EntityValue</nt>“à‚ÉŒ»‚ê‚é‚Æ‚«C‚»‚ê‚Í–³Ž‹‚³‚êC‚»‚Ì‚Ü‚ÜŽc‚éB</p>
+</div3>
+<div3 id='as-PE'>
+<head>gPE‚Æ‚µ‚ÄŽæž‚Ýh</head>
+<p>ŠO•”&parsed-entity;‚ÌꇂƓ¯—l‚ÉCƒpƒ‰ƒƒ^ŽÀ‘Ì‚ÍC&validity;‚ð<titleref href='include-if-valid'>ŒŸØ‚·‚é‚Æ‚«‚¾‚¯Žæ‚èž‚Ü‚ê‚é</titleref>•K—v‚ª‚ ‚éBƒpƒ‰ƒƒ^ŽÀ‘ÌŽQÆ‚ðDTD“à‚É”FŽ¯‚µ‚ÄŽæ‚èž‚Þ‚Æ‚«C‚»‚Ì<termref def='dt-repltext'>&replacement-text;</termref>‚ÍC‚»‚Ì‘OŒã‚Ɉê‚‚Ì&space-character;(#x20)‚Ì•t‰Á‚É‚æ‚Á‚Ĉø‚«L‚΂³‚ê‚éB‚±‚̈Ó}‚ÍCƒpƒ‰ƒƒ^ŽÀ‘Ì‚Ì&replacement-text;‚ªCDTD“à‚Ì‚¢‚­‚‚©‚Ì•¶–@“I&token;‚ðŠ®‘S‚ÉŠÜ‚Þ‚ÆC§–ñ‚·‚邱‚Æ‚É‚ ‚éB
+</p>
+</div3>
+<!--
+<div3 id='gen-char-entproc'>
+<head>General and Character Entity Processing</head>
+<p>General-entity and character references are recognized in three
+contexts: wherever the nonterminal <nt def='NT-content'>content</nt> may
+appear, at any point within the nonterminal
+<nt def='NT-AttValue'>AttValue</nt>,
+and within the
+<termref def='dt-litentval'>literal entity value</termref>
+(<nt def='NT-EntityValue'>EntityValue</nt>)
+of an internal entity declaration.
+This section discusses the first two cases; the third
+is discussed <titleref href='intern-replacement'>below</titleref>.
+When an <termref def="dt-xml-proc">XML processor</termref> encounters
+such a reference, or the name of an unparsed entity as the value
+of an <kw>ENTITY</kw> or <kw>ENTITIES</kw> attribute, then:
+<olist>
+
+<item><p>In all cases, the XML processor may
+inform the application of the reference's occurrence and its identifier
+(for an entity reference, the name; for a character
+reference,
+the character number in decimal, hexadecimal, or binary form).</p></item>
+
+<item><p>For both character and entity references, the processor must
+remove the reference itself from the <termref def="dt-text">text</termref> data
+before passing the data to the application.
+</p></item>
+
+<item><p>For character references, the processor must
+pass the character indicated
+to the application in
+place of the reference.
+</p></item>
+
+<item><p>For an external entity, the processor must inform the
+application of the entity's <termref def="dt-sysid">system
+identifier</termref>, and <termref def="dt-pubid">public identifier</termref>
+if any.
+All strings
+of white space in the public identifier must be normalized to single space characters (#x20),
+and leading and trailing white space must be removed.</p></item>
+
+<item><p>If the external entity is binary, the processor must inform the
+application of the associated <termref def="dt-notation">notation</termref>
+name, and the notation's associated <termref def='dt-sysid'>system</termref>
+and <termref def='dt-pubid'>public</termref> (if any)
+identifiers.</p></item>
+
+<item><p><termdef id="dt-include" term="Include">For an internal
+(parsed) entity, the processor must <term>include</term> the
+entity; that is, retrieve its replacement text
+and process it as a part of the document
+(i.e. as <nt def="NT-content">content</nt> or <nt
+def="NT-AttValue">AttValue</nt>, whichever was being processed when
+the reference was recognized), passing the result to the application
+in place of the reference. The replacement text may contain both
+<termref def='dt-chardata'>character data</termref>
+and <termref def="dt-markup">markup</termref>, which must be recognized in
+the usual way, except that the replacement text of entities used to escape
+markup delimiters (the entities &magicents;) is always treated as
+data. (The string "<code>AT&amp;amp;T;</code>" expands to
+"<code>AT&amp;T;</code>" since the ampersand replacing "<code>&amp;amp;</code>"
+is not recognized
+as an entity-reference delimiter.) </termdef></p>
+<p>Since the entity may contain other entity references,
+an XML processor may have to repeat the inclusion process recursively.</p>
+</item>
+<item><p>If the entity is an external parsed entity, then in order to
+<termref def="dt-valid">validate</termref> the XML document, the processor must
+<termref def="dt-include">include</termref> the content of the
+entity.</p></item>
+
+<item><p>If the entity is an external parsed entity, and the processor is not
+attempting to <termref def="dt-valid">validate</termref> the XML document, the
+processor <termref def="dt-may">may</termref>, but need not, <termref
+def="dt-include">include</termref> the entity's content.</p>
+<p>This rule is based on the recognition that the automatic inclusion
+provided by the SGML and XML entity mechanism, primarily designed
+to support modularity in authoring, is not necessarily
+appropriate for other applications, in particular document browsing.
+Browsers, for example, when encountering an external parsed entity reference,
+might choose to provide a visual indication of the entity's
+presence and retrieve it for display only on demand.
+</p></item>
+</olist>
+</p>
+<p><termdef id="dt-escape" term="escape">Entity and character
+references can both be used to <term>escape</term> the left angle bracket,
+ampersand, and other delimiters. A set of general entities
+(&magicents;) is specified for this purpose.
+Numeric character references may also be used; they are
+expanded immediately when recognized, and must be treated as
+character data, so the numeric character references
+"<code>&amp;#60;</code>" and "<code>&amp;#38;</code>" may be used to
+escape <code>&lt;</code> and <code>&amp;</code> when they occur
+in character data.</termdef></p>
+</div3>
+<div3 id='PE-proc'>
+<head>Parameter Entity Processing</head>
+<p>Parameter-entity references are only recognized in the
+<termref def='dt-doctype'>DTD</termref>.
+Their processing, when they appear
+within the
+<termref def='dt-litentval'>literal entity value</termref>
+(<nt def='NT-EntityValue'>EntityValue</nt>)
+of an internal entity declaration,
+is discussed <titleref href='intern-replacement'>below</titleref>.
+They have these intended uses:
+<olist>
+<item><p>as a replacement for one or more complete markup declarations</p></item>
+<item><p>as a replacement for one or more complete "groups" in
+element declarations</p></item>
+<item><p>as a replacement for one or more complete "tokens" in
+markup declarations</p></item>
+</olist>
+</p>
+<p>The constraints requiring that PE replacement texts be properly nested
+with <titleref href='vc-PEinMarkupDecl'>markup declarations</titleref>
+and <titleref href='vc-PEinGroup'>content groups</titleref>
+govern the first two usages.</p>
+<p>To support the third intended usage,
+when an XML processor encounters a parameter-entity reference
+(outside of the
+<termref def='dt-litentval'>literal entity value</termref> in an entity
+declaration),
+it must <termref def="dt-include">include</termref>
+the named entity, but first expand its
+<termref def='dt-repltext'>replacement text</termref> by attaching
+space (#x20) characters to its beginning and the end, before
+processing it.</p>
+<p>The DTD text must match the relevant
+rules of this specification's grammar after all parameter-entity
+references have been expanded.
+<!-In addition, parameter entities referred to in specific
+contexts are required to satisfy certain constraints in their
+replacement text; for example, a parameter entity referred to within
+the internal DTD subset must match the rule for <nt
+def="NT-markupdecl">markupdecl</nt>. ->
+</p>
+</div3>
+-->
+</div2>
+<div2 id='intern-replacement'>
+<head>“à•”ŽÀ‘Ì&replacement-text;‚Ì\’z</head>
+<p>“à•”ŽÀ‘̂̎戵‚¢‚Ì‹K’è‚ÅCŽÀ‘Ì’l‚ð“ñ‚‚̌`Ž®‚É‹æ•Ê‚·‚邱‚Æ‚Í–ð‚É—§‚ÂB<termdef id="dt-litentval" term='Literal Entity Value'><term>&literal;ŽÀ‘Ì’l</term>‚ÍCŽÀ‘Ì錾“à‚ÉŽÀÛ‚É‘¶Ý‚·‚éCˆø—p•„‚ň͂Þ&string;‚Æ‚·‚éB‚±‚ê‚ÍC”ñI’[‹L†<nt def='NT-EntityValue'>EntityValue</nt>‚É&match;‚·‚éB</termdef><termdef id='dt-repltext' term='Replacement Text'><term>&replacement-text;</term>‚ÍC•¶ŽšŽQÆ‹y‚Ñ&parameter;ŽÀ‘ÌŽQÆ‚Ì’uŠ·‚¦Œã‚É‚¨‚¯‚éCŽÀ‘Ì‚Ì“à—e‚Æ‚·‚éB</termdef></p>
+
+<p>“à•”ŽÀ‘Ì錾“à‚Å—^‚¦‚é&literal;ŽÀ‘Ì’l<!-- replacement text -->(<nt def='NT-EntityValue'>EntityValue</nt>)‚ÍC•¶ŽšŽQÆC&parameter;ŽÀ‘ÌŽQÆ‹y‚шê”ÊŽÀ‘ÌŽQÆ‚ðŠÜ‚ñ‚Å‚æ‚¢B‚±‚ê‚ç‚ÌŽQÆ‚ÍC<!-- replacement text. -->&literal;ŽÀ‘Ì’l“à‚ÉŠ®‘S‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚È‚¯‚ê‚΂Ȃç‚È‚¢B<termref def='dt-include'>“WŠJ‚·‚é</termref>ŽÀÛ‚Ì&replacement-text;(æ‚ÉŽ¦‚µ‚½‚à‚Ì)‚ÍCŽQÆ‚·‚é&parameter;ŽÀ‘Ì‚Ì<emph>&replacement-text;</emph>‚ðŠÜ‚Ü‚È‚¯‚ê‚΂Ȃ炸C&literal;ŽÀ‘Ì’l“à‚Å‚Ì•¶ŽšŽQÆ‚Ì‘ã‚í‚è‚ÉŽQÆ‚µ‚½•¶Žš‚ðŠÜ‚Ü‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚µ‚©‚µCˆê”ÊŽÀ‘ÌŽQÆ‚ÍC‚»‚Ì‚Ü‚ÜŽc‚µ, “WŠJ‚µ‚Ä‚Í‚È‚ç‚È‚¢B
+<!-- in the replacement text that is to be included. -->
+—Ⴆ‚ÎCŽŸ‚Ì錾‚ð—^‚¦‚½‚Æ‚·‚éB
+
+<eg><![CDATA[<!ENTITY % pub "&#xc9;ditions Gallimard" >
+<!ENTITY rights "All rights reserved" >
+<!ENTITY book "La Peste: Albert Camus,
+&#xA9; 1947 %pub;. &rights;" >]]></eg>
+ŽÀ‘Ì‚Ì&replacement-text;"<code>book</code>"‚ÍCŽŸ‚Ì‚Æ‚¨‚è‚Æ‚È‚éB
+<eg>La Peste: Albert Camus,
+&#169; 1947 &#201;ditions Gallimard. &amp;rights;</eg>
+ŽQÆ"<code>&amp;book;</code>"‚ªC•¶‘‚Ì“à—e–”‚Í‘®«’l“à‚ÉoŒ»‚µ‚Ä‚¢‚ê‚ÎCˆê”ÊŽÀ‘ÌŽQÆ"<code>&amp;rights;</code>"‚ÍC“WŠJ‚³‚ê‚Ä‚¢‚éB</p>
+<p>‚±‚ê‚ç‚Ì’Pƒ‚È‹K‘¥‚ÍC•¡‡‘ŠŒÝì—p‚ð‚à‚ÂB
+<!-- “ú–{Œê–ó‚ɂ‚¢‚ÄF interaction = ‘ŠŒÝì—pi‹à–{j-->
+“‚¢—á‚ɂ‚¢‚Ä‚ÌÚׂÍC<titleref href='sec-entexpand'>ŽÀ‘ÌŽQÆ‚Ì“WŠJ‚Ì•t˜^</titleref>‚ðŽQÆ‚Ì‚±‚ÆB
+</p>
+<!-- Replaced by the above -TB
+<p>Implementors of XML processors need to know the rules for
+expansion of references in more detail. These rules only come into
+play when the replacement text for an internal entity itself contains
+other references.
+<olist>
+<item><p>In the replacement text of an internal entity, parameter-entity
+references and character references in the replacement text
+are recognized and resolved
+when the entity declaration is parsed,
+before the replacement text is stored in
+the processor's symbol table.
+General-entity references in the replacement text are not
+resolved when the entity declaration is parsed.</p></item>
+<item><p>In the document, when a general-entity reference is
+resolved, its replacement text is parsed. Character references
+encountered in the replacement text are
+resolved immediately; general-entity references encountered in the
+replacement text may be resolved or left unresolved, as described
+<titleref href="entproc">above</titleref>.
+Character and general-entity references must be
+contained entirely within the entity's replacement text.
+</p></item>
+</olist>
+</p>
+
+<p>Simple character references do not suffice to escape delimiters
+within the replacement text of an internal entity: they will be
+expanded when the entity declaration is parsed, before the replacement
+text is stored in the symbol table. When the entity itself is
+referred to, the replacement text will be parsed again, and the
+delimiters (no longer character references)
+will be recognized as delimiters. To escape the
+characters &magicents; in an entity replacement text, use
+a general-entity reference or a doubly-escaped character reference.
+See <titleref href='sec-entexpand'>the appendix on expansion
+of entity references</titleref>
+for detailed examples.</p>
+-->
+
+
+</div2>
+<div2 id='sec-predefined-ent'>
+<head>’è‹`Ï‚ÝŽÀ‘Ì</head>
+<p><termdef id="dt-escape" term="escape">
+ŽÀ‘ÌŽQÆ‹y‚Ñ•¶ŽšŽQÆ‚Ì‚¢‚¸‚ê‚àC&left-angle-bracket;CƒAƒ“ƒoƒTƒ“ƒh‹y‚Ñ‘¼‚Ì‹æØ‚èŽq‚ð<term>&escape;</term>‚·‚邽‚ß‚ÉŽg—p‚Å‚«‚éB‚¢‚­‚‚©‚̈ê”ÊŽÀ‘Ìi&magicents;j‚ðC‚±‚Ì–Ú“I‚Ì‚½‚ß‚ÉŽw’è‚·‚éB”’l‚É‚æ‚镶ŽšŽQÆ‚àC“¯—l‚Ì–Ú“I‚Ì‚½‚ß‚ÉŽg—p‚Å‚«‚éB•¶ŽšŽQÆ‚ÍC”FŽ¯‚³‚ê‚é‚Æ’¼‚¿‚É“WŠJ‚³‚êC•¶Žšƒf[ƒ^‚Æ‚µ‚Ĉµ‚í‚ê‚é‚Ì‚ÅC”’l‚É‚æ‚镶ŽšŽQÆ"<code>&amp;#60;</code>"‹y‚Ñ"<code>&amp;#38;</code>"‚ÍC•¶Žšƒf[ƒ^“à‚ÉoŒ»‚·‚é<code>&lt;</code>‹y‚Ñ<code>&amp;</code>‚ð&escape;‚·‚邽‚ß‚ÉŽg—p‚Å‚«‚éB</termdef></p>
+<p>‚·‚ׂĂÌXML&processor;‚ÍC錾‚³‚ê‚Ä‚¢‚é‚©‚Ç‚¤‚©‚ÉŠÖŒW‚È‚­C‚±‚ê‚ç‚ÌŽÀ‘Ì‚ð”FŽ¯‚µ‚È‚­‚Ä‚Í‚È‚ç‚È‚¢B<termref def='dt-interop'>‘ŠŒÝ‰^—p«‚Ì‚½‚ß</termref>C&valid;‚ÈXML•¶‘‚ÍC‚±‚ê‚ç‚ÌŽÀ‘Ì‚ðŽg—p‚·‚é‘O‚ÉC‘¼‚ÌŽÀ‘Ì‚Æ“¯—l‚ÉC錾‚·‚邱‚Æ‚ª–]‚Ü‚µ‚¢BŽÀ‘Ì‚ð錾‚·‚éꇂÍC&replacement-text;‚ð&escape;‚·‚éˆê•¶Žš‚Æ‚·‚é“à•”ŽÀ‘Ì‚Æ‚µ‚ÄCŽŸ‚Ì‚Æ‚¨‚è‚É錾‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+<eg><![CDATA[<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+]]></eg>
+"<code>lt</code>"‹y‚Ñ"<code>amp</code>"錾“à‚Ì"<code>&lt;</code>"‹y‚Ñ"<code>&amp;</code>"•¶Žš‚ÍCŽÀ‘Ì‚Ì’uŠ·ƒeƒLƒXƒg‚ªC&well-formed;‚Æ‚È‚é‚悤‚É“ñd‚É&escape;‚³‚ê‚邱‚Æ‚É’ˆÓB
+</p>
+</div2>
+
+
+<div2 id='Notations'>
+<head>‹L–@錾</head>
+
+
+<p>
+<termdef id="dt-notation" term="Notation">
+<term>‹L–@</term>‚ÍC<termref def="dt-extent">&unparsed-entity;</termref>‚ÌŒ`Ž®‚ð&identify;–¼‘O‚©C–”‚Í<termref def="dt-pi">ˆ—–½—ß</termref>‚Ì‘ÎÛ‚Æ‚·‚é&application;‚ð&identify;–¼‘O‚Æ‚·‚éB</termdef></p>
+<p><termdef id="dt-notdecl" term="Notation Declaration">
+<term>‹L–@錾</term>‚ÍC‹L–@‚Ì–¼‘O‹y‚ÑŠO•”&identifier;‚ð’ñ‹Ÿ‚·‚éB‚±‚Ì–¼‘O‚ÍCŽÀ‘Ì‹y‚Ñ‘®«ƒŠƒXƒg錾•À‚Ñ‚É‘®«Žw’è‚É—p‚¢‚éBŠO•”&identifier;‚ÍC—^‚¦‚ç‚ꂽ‹L–@‚̃f[ƒ^‚ðˆ—‚Å‚«‚éƒwƒ‹ƒp&application;‚ðCXML&processor;–”‚̓Nƒ‰ƒCƒAƒ“ƒgƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª’T‚·‚½‚ß‚ÉC—˜—p‚Å‚«‚éB
+<scrap lang='ebnf'>
+<head>‹L–@錾</head>
+<prod id='NT-NotationDecl'><lhs>NotationDecl</lhs>
+<rhs>'&lt;!NOTATION' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>
+(<nt def='NT-ExternalID'>ExternalID</nt> |
+<nt def='NT-PublicID'>PublicID</nt>)
+<nt def='NT-S'>S</nt>? '>'</rhs></prod>
+<prod id='NT-PublicID'><lhs>PublicID</lhs>
+<rhs>'PUBLIC' <nt def='NT-S'>S</nt>
+<nt def='NT-PubidLiteral'>PubidLiteral</nt>
+</rhs></prod>
+</scrap>
+</termdef></p>
+<p>錾‚µC‘®«’lC‘®«’è‹`–”‚ÍŽÀ‘Ì錾‚ÅŽQÆ‚·‚é‚·‚ׂĂ̋L–@‚ɂ‚¢‚ÄCXML&processor;‚ÍC‹L–@‚Ì–¼‘O‹y‚ÑŠO•”&identifier;‚ð&application;‚É’ñ‹Ÿ‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚³‚ç‚ÉCŠO•”&identifier;‚ðC<termref def="dt-sysid">ƒVƒXƒeƒ€&identifier;</termref>Cƒtƒ@ƒCƒ‹–¼–”‚Í‚»‚Ì‘¼‚Ìî•ñ‚É“WŠJ‚µ‚Ä‚à‚æ‚­C‚±‚ê‚ç‚ð—p‚¢‚ÄC&application;‚ÍC‚»‚Ì‹L–@‚̃f[ƒ^‚ðˆ—‚·‚é&processor;‚ð‹N“®‚·‚éB(‚µ‚©‚µCXML&processor;–”‚Í&application;‚ª“®ì‚·‚éƒVƒXƒeƒ€‚Å‚Í—˜—p‚Å‚«‚È‚¢‹L–@‚ðCXML•¶‘‚ªéŒ¾‚µŽQÆ‚µ‚Ä‚àC‚±‚ê‚ÍC&error;‚Æ‚Í‚µ‚È‚¢Bj</p>
+</div2>
+
+
+<div2 id='sec-doc-entity'>
+<head>•¶‘ŽÀ‘Ì</head>
+
+<p><termdef id="dt-docent" term="Document Entity"><term>•¶‘ŽÀ‘Ì</term>‚ÍCŽÀ‘Ì‚ÌŒ`¬‚·‚é–Ø\‘¢‚Ì&root;‚Å‚ ‚Á‚ÄC<termref def="dt-xml-proc">XML&processor;</termref>‚ªCˆ—‚ðŠJŽn‚·‚é’n“_‚Æ‚·‚éB</termdef>‚±‚Ì&TR-or-Rec;‚ÍCXML&processor;‚ªC•¶‘ŽÀ‘Ì‚Ì‘¶Ý‚·‚éꊂð‚ǂ̂悤‚ÉŒ©‚‚¯‚é‚©‚ÍC‹K’肵‚È‚¢B‘¼‚ÌŽÀ‘̂ƈقȂèC•¶‘ŽÀ‘Ì‚Í–¼‘O‚ð‚à‚½‚¸C‚¢‚©‚Ȃ鎯•Ê‚à‚È‚µ‚É&processor;‚Ö‚Ì“ü—Í&stream;‚ÉoŒ»‚µ‚Ä‚à‚æ‚¢B</p>
+</div2>
+
+
+</div1>
+<!-- &Conformance; -->
+<div1 id='sec-conformance'>
+<head>“K‡«</head>
+
+<p>“K‡‚·‚é<termref def="dt-xml-proc">XML&processor;</termref>‚ÍC&validating;‚à‚Ì‹y‚Ñ&non-validating;‚à‚Ì‚ÌC“ñ‚‚ɕª—Þ‚³‚ê‚éB</p>
+<p>&validating;ƒVƒXƒeƒ€‹y‚Ñ&non-validating;ƒVƒXƒeƒ€‚ÍC‚±‚Ì&TR-or-Rec;‚ª‹K’è‚·‚é&well-formed;§–ñ‚ւ̈ᔽ‚ð•ñ‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B</p>
+<p><termdef id="dt-validating" term="Validating Processor"><term>&validating;&processor;</term>‚ÍC<termref def="dt-doctype">DTD</termref>“à‚Ì錾‚É‚æ‚Á‚ÄŽ¦‚³‚ꂽC§–ñ‚ւ̈ᔽ‚ð•ñ‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚³‚ç‚ÉC‚±‚Ì&TR-or-Rec;‚ª‹K’è‚·‚é&validity;§–ñ‚ւ̈ᔽ‚ðC‚·‚ׂĕñ‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
+</termdef>
+</p>
+</div1>
+
+<div1 id='sec-notation'>
+<head>‹L–@</head>
+
+<p>XML‚ÌŒ`Ž®“I‚È•¶–@‚ÍCŠÈ’P‚ÈŠg’£Backus-Naur Form(EBNF)‹L–@‚É‚æ‚Á‚Ä—^‚¦‚éB•¶–@‚ÌŠe‹K‘¥‚ÍCŽŸ‚ÌŒ`Ž®‚ÅC‹L†‚ðˆê‚Â’è‹`‚·‚éB
+<eg>symbol ::= expression</eg></p>
+<p>‹L†‚ÍC³‹K•\Œ»‚Å’è‹`‚·‚é‚Æ‚«‚͑啶Žš‚ÅŽn‚ßC‚»‚¤‚Å‚È‚¯‚ê‚ÎC¬•¶Žš‚ÅŽn‚ß‚éB&string;&literal;‚ÍCˆø—p•„‚ň͂ÞB
+<!--* The distinction between symbols which can and cannot be
+recognized using simple regular expressions may be used to set the
+boundary between an implementation's lexical scanner and its parser,
+but this specification neither constrains the placement of that
+boundary nor presupposes that all implementations will have one. *-->
+</p>
+
+<p>‹K‘¥‚̉E‘¤‚ÌŽ®“à‚Å‚ÍCˆê‚–”‚Í•¡”‚Ì•¶Žš‚©‚ç‚È‚é&string;‚Æ&match;‚·‚邽‚ß‚ÉCŽŸ‚ÌŽ®‚ðŽg—p‚·‚éB
+<glist>
+<gitem>
+<label><code>#xN</code></label>
+<def><p>‚±‚±‚ÅC<code>N</code>‚Í16i‚Ì®”‚Æ‚·‚éBISO/IEC 10646‚Ì•¶Žš‚Å‚ ‚Á‚ÄC³‹KŒ`(UCS-4)‚Ì&code-value;‚𕄆‚È‚µ2i”‚Æ‚µ‚ĉðŽß‚µ‚½‚Æ‚«CŽw’肵‚½’l‚Æ“™‚µ‚¢‚à‚Ì‚Æ&match;‚·‚éB<code>#xN</code>Œ`Ž®‚Ì擪‚Ƀ[ƒ‚ª‚¢‚­‚‚©Œ»‚ê‚é‚©‚ÍCˆÓ–¡‚ð‚à‚½‚È‚¢B&code-value;<!-- bit string -->‚É‚¨‚¯‚é擪‚̃[ƒ‚Ì”‚ÍC•¶Žš‚Ì•„†‰»‚É‚æ‚Á‚ÄŒˆ’肳‚ê‚é‚Ì‚ÅCXML‚É‚Æ‚Á‚Ă͈Ӗ¡‚ª‚È‚¢B
+</p></def>
+</gitem>
+<gitem>
+<label><code>[a-zA-Z]</code>, <code>[#xN-#xN]</code></label>
+<def><p>Žw’肵‚½”͈͂̒l(—¼’[‚Ì’l‚ðŠÜ‚ÞBj‚ð‚à‚”CˆÓ‚Ì<termref def='dt-character'>•¶Žš</termref>‚Æ&match;‚·‚éB</p></def>
+</gitem>
+<gitem>
+<label><code>[^a-z]</code>, <code>[^#xN-#xN]</code></label>
+<def><p>Žw’肵‚½”͈Í<emph>ŠO</emph>‚Ì’l‚ð‚à‚”CˆÓ‚Ì<termref def='dt-character'>•¶Žš</termref>‚Æ&match;‚·‚éB</p></def>
+</gitem>
+<gitem>
+<label><code>[^abc]</code>, <code>[^#xN#xN#xN]</code></label>
+<def><p>Žw’肵‚½•¶ŽšˆÈŠO‚Ì’l‚ð‚à‚”CˆÓ‚Ì<termref def='dt-character'>•¶Žš</termref>‚Æ&match;‚·‚éB</p></def>
+</gitem>
+<gitem>
+<label><code>"string"</code></label>
+<def><p>&double-quote;‚ň͂Þ&string;&literal;‚Æ<termref def="dt-match">&match;‚µ‚Ä‚¢‚é</termref>&string;&literal;‚Æ&match;‚·‚éB</p></def>
+</gitem>
+<gitem>
+<label><code>'string'</code></label>
+<def><p>&single-quote;‚ň͂Þ&string;&literal;‚Æ<termref def="dt-match">&match;‚µ‚Ä‚¢‚é</termref>&string;&literal;‚Æ&match;‚·‚éB</p></def>
+</gitem>
+</glist>
+‚±‚ê‚ç‚Ì‹L†‚ÍCŽŸ‚ÌŒ`Ž®‚Ì‘g‡‚¹‚ÅŽg—p‚·‚éB‚±‚±‚ÅC<code>A</code>‹y‚Ñ<code>B</code>‚ÍC’Pƒ‚ÈŽ®‚Æ‚·‚éB
+<glist>
+<gitem>
+<label>(<code>expression</code>)</label>
+<def><p><code>expression</code>‚ÍCˆê‚‚̂܂Ƃ܂è‚Æ‚µ‚Ĉµ‚¢C‚±‚±‚ÉŽ¦‚·‘g‡‚¹‚ÅŽg‚Á‚Ä‚à‚æ‚¢B</p></def>
+</gitem>
+<gitem>
+<label><code>A?</code></label>
+<def><p><code>A</code>–”‚͉½‚à‚È‚µ‚Æ&match;‚·‚é(ƒIƒvƒVƒ‡ƒ“‚Ì<code>A</code>)B</p></def>
+</gitem>
+<gitem>
+<label><code>A B</code></label>
+<def><p><code>A</code>‚ÌŽŸ‚É<code>B</code>‚ªoŒ»‚·‚é‚à‚Ì‚Æ&match;‚·‚éB
+</p></def>
+</gitem>
+<gitem>
+<label><code>A | B</code></label>
+<def><p><code>A</code>–”‚Í<code>B</code>C‚½‚¾‚µC—¼•û‚Å‚Í‚È‚¢C‚Æ&match;‚·‚éB
+</p></def>
+</gitem>
+<gitem>
+<label><code>A - B</code></label>
+<def><p><code>A</code>‚Æ&match;‚·‚邪C<code>B</code>‚Æ‚Í&match;‚µ‚È‚¢C”CˆÓ‚Ì&string;‚Æ&match;‚·‚éB</p></def>
+</gitem>
+<gitem>
+<label><code>A+</code></label>
+<def><p><code>A</code>‚Ì1‰ñˆÈã‚ÌŒJ•Ô‚µ‚Æ&match;‚·‚éB</p></def>
+</gitem>
+<gitem>
+<label><code>A*</code></label>
+<def><p><code>A</code>‚Ì0‰ñˆÈã‚ÌŒJ•Ô‚µ‚Æ&match;‚·‚éB</p></def>
+</gitem>
+<!-- DEATH TO %'s
+<gitem>
+<label><code>%a</code></label>
+<def><p>specifies that <emph>in the external DTD subset</emph> a
+<termref def='dt-param-entity'>parameter entity</termref> may occur in the
+text at the position where <code>a</code> may occur; if so, its
+replacement text must match <code>S? a S?</code>. If
+the expression <code>a</code> is governed by a suffix operator, then
+the suffix operator determines both the maximum number of parameter-entity
+references allowed and the number of occurrences of <code>a</code>
+in the replacement text of the parameter entities: <code>%a*</code>
+means that <code>a</code> must occur zero or more times, and
+that some of its occurrences may be replaced by references to
+parameter entities whose replacement text must contain zero or
+more occurrences of <code>a</code>; it is thus a more compact way
+of writing <code>%(a*)*</code>.
+Similarly, <code>%a+</code> means that <code>a</code>
+must occur one or more times, and may be replaced by
+parameter entities with replacement text matching
+<code>S? (a S?)+</code>.
+The recognition of parameter entities in the internal subset is much more
+highly constrained.
+</p></def>
+</gitem>
+-->
+</glist>
+¶¬‹K‘¥“à‚ÅŽg—p‚·‚鑼‚Ì‹L–@‚ðCŽŸ‚ÉŽ¦‚·B
+<glist>
+<gitem>
+<label><code>/* ... */</code></label>
+<def><p>ƒRƒƒ“ƒgB</p></def>
+</gitem>
+<gitem>
+<label><code>[ wfc: ... ]</code></label>
+<def><p>&well-formed;§–ñB¶¬‹K‘¥‚É•t—^‚µ‚½C<termref def="dt-wellformed">&well-formed;</termref>‚Ì•¶‘‚ÉŠÖ‚·‚駖ñ‚ðC–¼‘O‚É‚æ‚Á‚Ä&identify;B</p></def>
+</gitem>
+<gitem>
+<label><code>[ vc: ... ]</code></label>
+<def><p>&validity;§–ñB¶¬‹K‘¥‚É•t—^‚µ‚½C<termref def="dt-valid">&valid;</termref>‚È•¶‘‚ÉŠÖ‚·‚駖ñ‚ðC–¼‘O‚É‚æ‚Á‚Ä&identify;B
+</p></def>
+</gitem>
+</glist>
+</p></div1>
+
+</body>
+<back>
+<!-- &SGML; -->
+
+<!-- &Biblio; -->
+<div1 id='sec-bibliography'>
+
+<head>ŽQl•¶Œ£</head>
+<div2 id='sec-existing-stds'>
+<head>&normative;ŽQl•¶Œ£</head>
+<!--* <ulist><item>
+<p>Unicode and ISO/IEC 10646. This specification depends on the
+international standard ISO/IEC 10646 (with amendments AM 1 through AM 7)
+and the Unicode Standard, Version 2.0 <bibref ref='Unicode'/>,
+which define the encodings and meanings of
+the <termref def="dt-character">characters</termref> which
+make up XML <termref def="dt-text">text</termref>.
+All the characters in ISO/IEC 10646 are present, at the same code points,
+in Unicode.</p></item>
+<item><p>XXX XXX defines the syntax and semantics of
+Uniform Resource Identifiers, or URIs.</p></item>
+<item><p>IETF RFC 1766, with ISO 639 and 3166,
+describe the codes that may be used in the
+special <titleref href='sec-lang-tag'>xml:lang</titleref> attribute.</p>
+</item></ulist>
+*-->
+
+<blist>
+
+<bibl id='RFC1766' key='IETF RFC 1766'>
+IETF (Internet Engineering Task Force).
+<emph>RFC 1766: Tags for the Identification of Languages</emph>,
+ed. H. Alvestrand.
+1995.
+</bibl>
+
+<bibl id='ISO639' key='ISO 639'>
+(International Organization for Standardization).
+<emph>ISO 8879:1988 (E).
+Code for the representation of names of languages.</emph>
+[Geneva]: International Organization for
+Standardization, 1988.</bibl>
+
+<bibl id='ISO3166' key='ISO 3166'>
+(International Organization for Standardization).
+<emph>ISO 3166-1:1997 (E).
+Codes for the representation of names of countries and their subdivisions
+&mdash; Part 1: Country codes</emph>
+[Geneva]: International Organization for
+Standardization, 1997.</bibl>
+
+<bibl id='ISO10646' key='ISO/IEC 10646'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10646-1993 (E). Information technology &mdash; Universal
+Multiple-Octet Coded Character Set (UCS) &mdash; Part 1:
+Architecture and Basic Multilingual Plane.</emph>
+[Geneva]: International Organization for
+Standardization, 1993 (plus amendments AM 1 through AM 7).
+</bibl>
+
+<bibl id='Unicode' key='Unicode'>The Unicode Consortium.
+<emph>The Unicode Standard, Version 2.0.</emph>
+Reading, Mass.: Addison-Wesley Developers Press, 1996.</bibl>
+
+</blist>
+
+</div2>
+
+<div2><head>‘¼‚ÌŽQl•¶Œ£</head>
+
+<blist>
+
+<bibl id='Aho' key='Aho/Ullman'>Aho, Alfred V.,
+Ravi Sethi, and Jeffrey D. Ullman.
+<emph>Compilers: Principles, Techniques, and Tools</emph>.
+Reading: Addison-Wesley, 1986, rpt. corr. 1988.</bibl>
+
+<bibl id="Berners-Lee" xml-link="simple" key="Berners-Lee et al.">
+Berners-Lee, T., R. Fielding, and L. Masinter.
+<emph>Uniform Resource Identifiers (URI): Generic Syntax and
+Semantics</emph>.
+1997.
+(Work in progress; see updates to RFC1738.)</bibl>
+
+<bibl id='ABK' key='Br&#252;ggemann-Klein'>Br&#252;ggemann-Klein, Anne.
+<emph>Regular Expressions into Finite Automata</emph>.
+Extended abstract in I. Simon, Hrsg., LATIN 1992,
+S. 97-98. Springer-Verlag, Berlin 1992.
+Full Version in Theoretical Computer Science 120: 197-213, 1993.
+<!--
+Universitat Freiburg, Institut fur Informatik,
+Bericht 33, Juli 1991.-->
+</bibl>
+
+<bibl id='ABKDW' key='Br&#252;ggemann-Klein and Wood'>Br&#252;ggemann-Klein, Anne,
+and Derick Wood.
+<emph>Deterministic Regular Languages</emph>.
+Universit&#228;t Freiburg, Institut f&#252;r Informatik,
+Bericht 38, Oktober 1991.
+</bibl>
+
+<bibl id="RFC1738" xml-link="simple" key="IETF RFC1738">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1738: Uniform Resource Locators (URL)</emph>,
+ed. T. Berners-Lee, L. Masinter, M. McCahill.
+1994.
+</bibl>
+
+<bibl id="RFC1808" xml-link="simple" key="IETF RFC1808">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1808: Relative Uniform Resource Locators</emph>,
+ed. R. Fielding.
+1995.
+</bibl>
+
+<bibl id="RFC2141" xml-link="simple" key="IETF RFC2141">
+IETF (Internet Engineering Task Force).
+<emph>RFC 2141: URN Syntax</emph>,
+ed. R. Moats.
+1997.
+</bibl>
+
+<bibl id='ISO8879' key='ISO/IEC 8879'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 8879-1986 (E). Information processing &mdash; Text and Office
+Systems &mdash; Standard Generalized Markup Language (SGML).</emph> First
+edition &mdash; 1986-10-15. [Geneva]: International Organization for
+Standardization, 1986.
+</bibl>
+
+
+<bibl id='ISO10744' key='ISO/IEC 10744'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10744-1992 (E). Information technology &mdash;
+Hypermedia/Time-based Structuring Language (HyTime).
+</emph>
+[Geneva]: International Organization for
+Standardization, 1992.
+<emph>Extended Facilities Annexe.</emph>
+[Geneva]: International Organization for
+Standardization, 1996.
+</bibl>
+
+
+
+</blist>
+</div2>
+</div1>
+<div1 id='CharClasses'>
+<head>•¶ŽšƒNƒ‰ƒX</head>
+
+<p>Unicode•W€‚É’è‹`‚·‚é&property;‚É‚µ‚½‚ª‚Á‚ÄC•¶Žš‚ÍC&base-character;(BaseChar)(‚±‚ê‚ç‚ÍC&diacritical-mark;‚𜂭ƒ‰ƒeƒ“ƒAƒ‹ƒtƒ@ƒxƒbƒg‚̃Aƒ‹ƒtƒ@ƒxƒbƒg•¶Žš‚ðŠÜ‚Þ)C&ideographic;(ideographic)‹y‚Ñ&combining-character;(CombiningChar)(‚±‚̃Nƒ‰ƒX‚ÍC‚Ù‚Æ‚ñ‚Ç‚Ì&diacritical-mark;‚ðŠÜ‚Þ)‚ɃNƒ‰ƒX•ª‚¯‚·‚éB‚±‚ê‚ç‚̃Nƒ‰ƒX‚ÍCŒ‹‡‚µC&letter;(Letter)‚̃Nƒ‰ƒX‚Æ‚È‚éB10i”’l(Digit)‹y‚Ñ&extender;(Extender)‚à‹æ•Ê‚·‚éB
+<scrap lang="ebnf" id="CHARACTERS">
+<head>•¶Žš</head>
+<prodgroup pcw3="3" pcw4="15">
+<prod id="NT-Letter"><lhs>Letter</lhs>
+<rhs><nt def="NT-BaseChar">BaseChar</nt>
+| <nt def="NT-Ideographic">Ideographic</nt></rhs> </prod>
+<prod id='NT-BaseChar'><lhs>BaseChar</lhs>
+<rhs>[#x0041-#x005A]
+|&nbsp;[#x0061-#x007A]
+|&nbsp;[#x00C0-#x00D6]
+|&nbsp;[#x00D8-#x00F6]
+|&nbsp;[#x00F8-#x00FF]
+|&nbsp;[#x0100-#x0131]
+|&nbsp;[#x0134-#x013E]
+|&nbsp;[#x0141-#x0148]
+|&nbsp;[#x014A-#x017E]
+|&nbsp;[#x0180-#x01C3]
+|&nbsp;[#x01CD-#x01F0]
+|&nbsp;[#x01F4-#x01F5]
+|&nbsp;[#x01FA-#x0217]
+|&nbsp;[#x0250-#x02A8]
+|&nbsp;[#x02BB-#x02C1]
+|&nbsp;#x0386
+|&nbsp;[#x0388-#x038A]
+|&nbsp;#x038C
+|&nbsp;[#x038E-#x03A1]
+|&nbsp;[#x03A3-#x03CE]
+|&nbsp;[#x03D0-#x03D6]
+|&nbsp;#x03DA
+|&nbsp;#x03DC
+|&nbsp;#x03DE
+|&nbsp;#x03E0
+|&nbsp;[#x03E2-#x03F3]
+|&nbsp;[#x0401-#x040C]
+|&nbsp;[#x040E-#x044F]
+|&nbsp;[#x0451-#x045C]
+|&nbsp;[#x045E-#x0481]
+|&nbsp;[#x0490-#x04C4]
+|&nbsp;[#x04C7-#x04C8]
+|&nbsp;[#x04CB-#x04CC]
+|&nbsp;[#x04D0-#x04EB]
+|&nbsp;[#x04EE-#x04F5]
+|&nbsp;[#x04F8-#x04F9]
+|&nbsp;[#x0531-#x0556]
+|&nbsp;#x0559
+|&nbsp;[#x0561-#x0586]
+|&nbsp;[#x05D0-#x05EA]
+|&nbsp;[#x05F0-#x05F2]
+|&nbsp;[#x0621-#x063A]
+|&nbsp;[#x0641-#x064A]
+|&nbsp;[#x0671-#x06B7]
+|&nbsp;[#x06BA-#x06BE]
+|&nbsp;[#x06C0-#x06CE]
+|&nbsp;[#x06D0-#x06D3]
+|&nbsp;#x06D5
+|&nbsp;[#x06E5-#x06E6]
+|&nbsp;[#x0905-#x0939]
+|&nbsp;#x093D
+|&nbsp;[#x0958-#x0961]
+|&nbsp;[#x0985-#x098C]
+|&nbsp;[#x098F-#x0990]
+|&nbsp;[#x0993-#x09A8]
+|&nbsp;[#x09AA-#x09B0]
+|&nbsp;#x09B2
+|&nbsp;[#x09B6-#x09B9]
+|&nbsp;[#x09DC-#x09DD]
+|&nbsp;[#x09DF-#x09E1]
+|&nbsp;[#x09F0-#x09F1]
+|&nbsp;[#x0A05-#x0A0A]
+|&nbsp;[#x0A0F-#x0A10]
+|&nbsp;[#x0A13-#x0A28]
+|&nbsp;[#x0A2A-#x0A30]
+|&nbsp;[#x0A32-#x0A33]
+|&nbsp;[#x0A35-#x0A36]
+|&nbsp;[#x0A38-#x0A39]
+|&nbsp;[#x0A59-#x0A5C]
+|&nbsp;#x0A5E
+|&nbsp;[#x0A72-#x0A74]
+|&nbsp;[#x0A85-#x0A8B]
+|&nbsp;#x0A8D
+|&nbsp;[#x0A8F-#x0A91]
+|&nbsp;[#x0A93-#x0AA8]
+|&nbsp;[#x0AAA-#x0AB0]
+|&nbsp;[#x0AB2-#x0AB3]
+|&nbsp;[#x0AB5-#x0AB9]
+|&nbsp;#x0ABD
+|&nbsp;#x0AE0
+|&nbsp;[#x0B05-#x0B0C]
+|&nbsp;[#x0B0F-#x0B10]
+|&nbsp;[#x0B13-#x0B28]
+|&nbsp;[#x0B2A-#x0B30]
+|&nbsp;[#x0B32-#x0B33]
+|&nbsp;[#x0B36-#x0B39]
+|&nbsp;#x0B3D
+|&nbsp;[#x0B5C-#x0B5D]
+|&nbsp;[#x0B5F-#x0B61]
+|&nbsp;[#x0B85-#x0B8A]
+|&nbsp;[#x0B8E-#x0B90]
+|&nbsp;[#x0B92-#x0B95]
+|&nbsp;[#x0B99-#x0B9A]
+|&nbsp;#x0B9C
+|&nbsp;[#x0B9E-#x0B9F]
+|&nbsp;[#x0BA3-#x0BA4]
+|&nbsp;[#x0BA8-#x0BAA]
+|&nbsp;[#x0BAE-#x0BB5]
+|&nbsp;[#x0BB7-#x0BB9]
+|&nbsp;[#x0C05-#x0C0C]
+|&nbsp;[#x0C0E-#x0C10]
+|&nbsp;[#x0C12-#x0C28]
+|&nbsp;[#x0C2A-#x0C33]
+|&nbsp;[#x0C35-#x0C39]
+|&nbsp;[#x0C60-#x0C61]
+|&nbsp;[#x0C85-#x0C8C]
+|&nbsp;[#x0C8E-#x0C90]
+|&nbsp;[#x0C92-#x0CA8]
+|&nbsp;[#x0CAA-#x0CB3]
+|&nbsp;[#x0CB5-#x0CB9]
+|&nbsp;#x0CDE
+|&nbsp;[#x0CE0-#x0CE1]
+|&nbsp;[#x0D05-#x0D0C]
+|&nbsp;[#x0D0E-#x0D10]
+|&nbsp;[#x0D12-#x0D28]
+|&nbsp;[#x0D2A-#x0D39]
+|&nbsp;[#x0D60-#x0D61]
+|&nbsp;[#x0E01-#x0E2E]
+|&nbsp;#x0E30
+|&nbsp;[#x0E32-#x0E33]
+|&nbsp;[#x0E40-#x0E45]
+|&nbsp;[#x0E81-#x0E82]
+|&nbsp;#x0E84
+|&nbsp;[#x0E87-#x0E88]
+|&nbsp;#x0E8A
+|&nbsp;#x0E8D
+|&nbsp;[#x0E94-#x0E97]
+|&nbsp;[#x0E99-#x0E9F]
+|&nbsp;[#x0EA1-#x0EA3]
+|&nbsp;#x0EA5
+|&nbsp;#x0EA7
+|&nbsp;[#x0EAA-#x0EAB]
+|&nbsp;[#x0EAD-#x0EAE]
+|&nbsp;#x0EB0
+|&nbsp;[#x0EB2-#x0EB3]
+|&nbsp;#x0EBD
+|&nbsp;[#x0EC0-#x0EC4]
+|&nbsp;[#x0F40-#x0F47]
+|&nbsp;[#x0F49-#x0F69]
+|&nbsp;[#x10A0-#x10C5]
+|&nbsp;[#x10D0-#x10F6]
+|&nbsp;#x1100
+|&nbsp;[#x1102-#x1103]
+|&nbsp;[#x1105-#x1107]
+|&nbsp;#x1109
+|&nbsp;[#x110B-#x110C]
+|&nbsp;[#x110E-#x1112]
+|&nbsp;#x113C
+|&nbsp;#x113E
+|&nbsp;#x1140
+|&nbsp;#x114C
+|&nbsp;#x114E
+|&nbsp;#x1150
+|&nbsp;[#x1154-#x1155]
+|&nbsp;#x1159
+|&nbsp;[#x115F-#x1161]
+|&nbsp;#x1163
+|&nbsp;#x1165
+|&nbsp;#x1167
+|&nbsp;#x1169
+|&nbsp;[#x116D-#x116E]
+|&nbsp;[#x1172-#x1173]
+|&nbsp;#x1175
+|&nbsp;#x119E
+|&nbsp;#x11A8
+|&nbsp;#x11AB
+|&nbsp;[#x11AE-#x11AF]
+|&nbsp;[#x11B7-#x11B8]
+|&nbsp;#x11BA
+|&nbsp;[#x11BC-#x11C2]
+|&nbsp;#x11EB
+|&nbsp;#x11F0
+|&nbsp;#x11F9
+|&nbsp;[#x1E00-#x1E9B]
+|&nbsp;[#x1EA0-#x1EF9]
+|&nbsp;[#x1F00-#x1F15]
+|&nbsp;[#x1F18-#x1F1D]
+|&nbsp;[#x1F20-#x1F45]
+|&nbsp;[#x1F48-#x1F4D]
+|&nbsp;[#x1F50-#x1F57]
+|&nbsp;#x1F59
+|&nbsp;#x1F5B
+|&nbsp;#x1F5D
+|&nbsp;[#x1F5F-#x1F7D]
+|&nbsp;[#x1F80-#x1FB4]
+|&nbsp;[#x1FB6-#x1FBC]
+|&nbsp;#x1FBE
+|&nbsp;[#x1FC2-#x1FC4]
+|&nbsp;[#x1FC6-#x1FCC]
+|&nbsp;[#x1FD0-#x1FD3]
+|&nbsp;[#x1FD6-#x1FDB]
+|&nbsp;[#x1FE0-#x1FEC]
+|&nbsp;[#x1FF2-#x1FF4]
+|&nbsp;[#x1FF6-#x1FFC]
+|&nbsp;#x2126
+|&nbsp;[#x212A-#x212B]
+|&nbsp;#x212E
+|&nbsp;[#x2180-#x2182]
+|&nbsp;[#x3041-#x3094]
+|&nbsp;[#x30A1-#x30FA]
+|&nbsp;[#x3105-#x312C]
+|&nbsp;[#xAC00-#xD7A3]
+</rhs></prod>
+<prod id='NT-Ideographic'><lhs>Ideographic</lhs>
+<rhs>[#x4E00-#x9FA5]
+|&nbsp;#x3007
+|&nbsp;[#x3021-#x3029]
+</rhs></prod>
+<prod id='NT-CombiningChar'><lhs>CombiningChar</lhs>
+<rhs>[#x0300-#x0345]
+|&nbsp;[#x0360-#x0361]
+|&nbsp;[#x0483-#x0486]
+|&nbsp;[#x0591-#x05A1]
+|&nbsp;[#x05A3-#x05B9]
+|&nbsp;#x05BB#x05BD
+|&nbsp;#x05BF
+|&nbsp;[#x05C1-#x05C2]
+|&nbsp;#x05C4
+|&nbsp;#x064B#x0652
+|&nbsp;#x0670
+|&nbsp;[#x06D6-#x06DC]
+|&nbsp;#x06DD#x06DF
+|&nbsp;[#x06E0-#x06E4]
+|&nbsp;[#x06E7-#x06E8]
+|&nbsp;[#x06EA-#x06ED]
+|&nbsp;[#x0901-#x0903]
+|&nbsp;#x093C
+|&nbsp;[#x093E-#x094C]
+|&nbsp;#x094D
+|&nbsp;[#x0951-#x0954]
+|&nbsp;[#x0962-#x0963]
+|&nbsp;[#x0981-#x0983]
+|&nbsp;#x09BC
+|&nbsp;#x09BE
+|&nbsp;#x09BF
+|&nbsp;[#x09C0-#x09C4]
+|&nbsp;[#x09C7-#x09C8]
+|&nbsp;[#x09CB-#x09CD]
+|&nbsp;#x09D7
+|&nbsp;[#x09E2-#x09E3]
+|&nbsp;#x0A02
+|&nbsp;#x0A3C
+|&nbsp;#x0A3E
+|&nbsp;#x0A3F
+|&nbsp;[#x0A40-#x0A42]
+|&nbsp;[#x0A47-#x0A48]
+|&nbsp;[#x0A4B-#x0A4D]
+|&nbsp;[#x0A70-#x0A71]
+|&nbsp;[#x0A81-#x0A83]
+|&nbsp;#x0ABC
+|&nbsp;[#x0ABE-#x0AC5]
+|&nbsp;[#x0AC7-#x0AC9]
+|&nbsp;[#x0ACB-#x0ACD]
+|&nbsp;[#x0B01-#x0B03]
+|&nbsp;#x0B3C
+|&nbsp;[#x0B3E-#x0B43]
+|&nbsp;[#x0B47-#x0B48]
+|&nbsp;[#x0B4B-#x0B4D]
+|&nbsp;[#x0B56-#x0B57]
+|&nbsp;[#x0B82-#x0B83]
+|&nbsp;[#x0BBE-#x0BC2]
+|&nbsp;[#x0BC6-#x0BC8]
+|&nbsp;[#x0BCA-#x0BCD]
+|&nbsp;#x0BD7
+|&nbsp;[#x0C01-#x0C03]
+|&nbsp;[#x0C3E-#x0C44]
+|&nbsp;[#x0C46-#x0C48]
+|&nbsp;[#x0C4A-#x0C4D]
+|&nbsp;[#x0C55-#x0C56]
+|&nbsp;[#x0C82-#x0C83]
+|&nbsp;[#x0CBE-#x0CC4]
+|&nbsp;[#x0CC6-#x0CC8]
+|&nbsp;[#x0CCA-#x0CCD]
+|&nbsp;[#x0CD5-#x0CD6]
+|&nbsp;[#x0D02-#x0D03]
+|&nbsp;[#x0D3E-#x0D43]
+|&nbsp;[#x0D46-#x0D48]
+|&nbsp;[#x0D4A-#x0D4D]
+|&nbsp;#x0D57
+|&nbsp;#x0E31
+|&nbsp;[#x0E34-#x0E3A]
+|&nbsp;[#x0E47-#x0E4E]
+|&nbsp;#x0EB1
+|&nbsp;[#x0EB4-#x0EB9]
+|&nbsp;[#x0EBB-#x0EBC]
+|&nbsp;[#x0EC8-#x0ECD]
+|&nbsp;[#x0F18-#x0F19]
+|&nbsp;#x0F35
+|&nbsp;#x0F37
+|&nbsp;#x0F39
+|&nbsp;#x0F3E
+|&nbsp;#x0F3F
+|&nbsp;[#x0F71-#x0F84]
+|&nbsp;[#x0F86-#x0F8B]
+|&nbsp;[#x0F90-#x0F95]
+|&nbsp;#x0F97
+|&nbsp;[#x0F99-#x0FAD]
+|&nbsp;[#x0FB1-#x0FB7]
+|&nbsp;#x0FB9
+|&nbsp;[#x20D0-#x20DC]
+|&nbsp;#x20E1
+|&nbsp;[#x302A-#x302F]
+|&nbsp;#x3099
+|&nbsp;#x309A
+</rhs></prod>
+<prod id='NT-Digit'><lhs>Digit</lhs>
+<rhs>[#x0030-#x0039]
+|&nbsp;[#x0660-#x0669]
+|&nbsp;[#x06F0-#x06F9]
+|&nbsp;[#x0966-#x096F]
+|&nbsp;[#x09E6-#x09EF]
+|&nbsp;[#x0A66-#x0A6F]
+|&nbsp;[#x0AE6-#x0AEF]
+|&nbsp;[#x0B66-#x0B6F]
+|&nbsp;[#x0BE7-#x0BEF]
+|&nbsp;[#x0C66-#x0C6F]
+|&nbsp;[#x0CE6-#x0CEF]
+|&nbsp;[#x0D66-#x0D6F]
+|&nbsp;[#x0E50-#x0E59]
+|&nbsp;[#x0ED0-#x0ED9]
+|&nbsp;[#x0F20-#x0F29]
+</rhs></prod>
+<prod id='NT-Extender'><lhs>Extender</lhs>
+<rhs>#x00B7
+|&nbsp;#x02D0
+|&nbsp;#x02D1
+|&nbsp;#x0387
+|&nbsp;#x0640
+|&nbsp;#x0E46
+|&nbsp;#x0EC6
+|&nbsp;#x3005
+|&nbsp;[#x3031-#x3035]
+|&nbsp;[#x309D-#x309E]
+|&nbsp;[#x30FC-#x30FE]
+</rhs></prod>
+
+</prodgroup>
+</scrap>
+</p>
+<p>‚±‚±‚Å’è‹`‚·‚镶ŽšƒNƒ‰ƒX‚ÍCUnicode•¶Žšƒf[ƒ^ƒx[ƒX‚©‚çCŽŸ‚Ì‚Æ‚¨‚è‚É“¾‚邱‚Æ‚ª‚Å‚«‚éB
+<ulist>
+<item>
+<p>a) –¼‘OŠJŽn•¶Žš‚ÍCLl, Lu, Lo, Lt, NlƒJƒeƒSƒŠ“à‚̈ê‚‚łȂ¯‚ê‚΂Ȃç‚È‚¢B</p>
+</item>
+<item>
+<p>b) –¼‘OŠJŽn•¶ŽšˆÈŠO‚Ì–¼‘O•¶Žš‚ÍCMc, Me, Mn, Lm, NdƒJƒeƒSƒŠ“à‚̈ê‚‚łȂ¯‚ê‚΂Ȃç‚È‚¢B</p>
+</item>
+<item>
+<p>c) &compatibility-area;‚É‚ ‚镶Žš(•¶Žš•„†‚Å#xF900‚æ‚è‘å‚«‚­#xFFFE‚æ‚謂³‚¢•¶Žš)‚ÍCXML‚É‚¨‚¯‚é–¼‘O‚Æ‚µ‚Ä‚ÍC‹–‚³‚ê‚È‚¢B</p>
+</item>
+<item>
+<p>d) &font-decomposition;‚©&compatibility-decomposition;‚ð‚à‚•¶Žš(‚‚܂èCƒf[ƒ^ƒx[ƒX“à‚Ì‚T”Ԗڂ̃tƒB[ƒ‹ƒh‚É"compatibility formatting tag"‚ª‚ ‚é‚à‚ÌB‚±‚ê‚ÍC‚T”Ԗڂ̃tƒB[ƒ‹ƒh‚ªC"&lt;"‚ÅŽn‚܂邱‚Æ‚É‚æ‚Á‚ă}[ƒN•t‚¯‚³‚ê‚éB)‚ÍC‹–‚³‚ê‚È‚¢B</p>
+</item>
+<item>
+<p>e) ŽŸ‚Ì•¶Žš‚ÍC–¼‘OŠJŽn•¶Žš‚Æ‚µ‚Ĉµ‚¤B‚±‚ê‚ÍC&property-file;‚ªC‚±‚ê‚ç‚Ì•¶Žš‚ðƒAƒ‹ƒtƒ@ƒxƒbƒg‚É—ÞŽ—‚·‚é‚ÆŒ©‚È‚·‚±‚Æ‚É‚æ‚éB‚»‚ê‚ç‚Í
+[#x02BB-#x02C1], #x0559, #x06E5, #x06E6‚Æ‚·‚éB</p>
+</item>
+<item>
+<p>f) •¶Žš•„†‚ª#x20DD-#x20E0‚Ì•¶Žš‚ÍC(Unicode ‚Ì5.14‚É‚µ‚½‚ª‚Á‚Ä)œŠO‚·‚éB</p>
+</item>
+<item>
+<p>g) •¶Žš•„†‚ª#x00B7‚Ì•¶Žš‚ÍC&property-list;‚É‚µ‚½‚ª‚Á‚ÄC&extender;(extender)‚É•ª—Þ‚·‚éB</p>
+</item>
+<item>
+<p>h) •¶Žš#x0387‚ÍC‚±‚ê‚É‘Š“–‚·‚鳋KŒ`‚ª#x00B7‚È‚Ì‚ÅC–¼‘O•¶Žš‚ɒljÁ‚·‚éB</p>
+</item>
+<item>
+<p>i) •¶Žš':'‹y‚Ñ'_'‚ÍC–¼‘OŠJŽn•¶Žš‚Æ‚µ‚Ä‹–‚·B</p>
+</item>
+<item>
+<p>j) •¶Žš'-'‹y‚Ñ'.'‚ÍC–¼‘O•¶Žš‚Æ‚µ‚Ä‹–‚·B</p>
+</item>
+</ulist>
+</p>
+</div1>
+<inform-div1 id="sec-xml-and-sgml">
+<head>XML‹y‚ÑSGML</head>
+
+<p>XML‚ÍCSGML‚Ì&subset;‚Æ‚µ‚ÄÝŒv‚³‚ê‚Ä‚¢‚éB‚·‚È‚í‚¿C‚·‚ׂĂÌ<termref def="dt-valid">&valid;</termref>‚ÈXML•¶‘‚ÍC‹KŠi‚É“K‡‚·‚éSGML•¶‘‚É‚à‚È‚éBSGML‚ª•¶‘‚ɉۂ·§ŒÀˆÈŠO‚ÉCXML‚ª‚¢‚©‚Ȃ駌À‚ð‰Û‚·‚©‚ÉŠÖ‚·‚éÚׂÍC•Ê‚Ì<loc href='http://www.w3.org/TR/NOTE-sgml-xml'>‹K’ö</loc>‚ðŽQÆ‚Ì‚±‚ÆB‚±‚Ì‹K’ö‚ÍCXML‚̧–ñðŒ‚ðŽ¦‚·SGML錾‚ðŠÜ‚ÝC‚±‚ê‚ÍCSGML&parser;‚ÉŽg—p‚Å‚«‚éB
+</p>
+</inform-div1>
+<inform-div1 id="sec-entexpand">
+<head>ŽÀ‘ÌŽQÆ‹y‚Ñ•¶ŽšŽQÆ‚Ì“WŠJ</head>
+<p>‚±‚Ì•t˜^‚ÍCŽÀ‘ÌŽQÆ‹y‚Ñ•¶ŽšŽQÆ‚ð”FŽ¯‚µC“WŠJ‚·‚éCˆê˜A‚Ì—¬‚ê‚ðC—á‚ÉŽg‚Á‚ÄŽ¦‚·B</p>
+<p>
+DTD‚ªCŽŸ‚Ì錾‚ðŠÜ‚Þꇂðl‚¦‚éB
+<eg><![CDATA[<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
+numerically (&#38;#38;#38;) or with a general entity
+(&amp;amp;).</p>" >
+]]></eg>
+XML&processor;‚ÍCŽÀ‘Ì‚Ì錾‚ð\•¶‰ðÍ‚µ‚½Žž“_‚Å•¶ŽšŽQÆ‚ð”FŽ¯‚µC‚±‚ê‚ð‰ðŒˆ‚·‚éBŽÀ‘Ì"<code>example</code>"‚Ì’l‚Æ‚µ‚ÄCŽŸ‚Ì&string;‚ð•Û‘¶‚·‚éB
+<eg><![CDATA[<p>An ampersand (&#38;) may be escaped
+numerically (&#38;#38;) or with a general entity
+(&amp;amp;).</p>
+]]></eg>
+•¶‘“à‚Å"<code>&amp;example;</code>"‚ðŽQÆ‚·‚é‚ÆC‚±‚̃eƒLƒXƒg‚ÍCÄ‚Ñ\•¶‰ðÍ‚³‚ê‚éB‚±‚Ì‚Æ‚«C—v‘f"<code>p</code>"‚ÌŠJŽnƒ^ƒO‹y‚ÑI—¹ƒ^ƒO‚ð”FŽ¯‚µCŽO‚‚̎QÆ‚ð”FŽ¯‚µ“WŠJ‚·‚éB‚»‚ÌŒ‹‰ÊC—v‘f"<code>p</code>"‚ÍCŽŸ‚Ì“à—e‚ð‚à‚Â(‚·‚ׂăf[ƒ^‚Æ‚µC‹æØ‚èŽq–”‚Í&markup;‚Í‘¶Ý‚µ‚È‚¢B)B
+<eg><![CDATA[An ampersand (&) may be escaped
+numerically (&#38;) or with a general entity
+(&amp;).
+]]></eg>
+</p>
+<p>‹K‘¥‹y‚Ñ‚»‚ÌŒø‰Ê‚ð‚æ‚èÚׂɎ¦‚·‚½‚ßC‚³‚ç‚É•¡ŽG‚È—á‚ðŽ¦‚·BŽŸ‚Ì—á‚ÅCs”Ô†‚ÍCŽQÆ‚Ì•Ö‹X‚Ì‚½‚ß‚¾‚¯‚É•t‚¯‚éB
+<eg><![CDATA[1 <?xml version='1.0'?>
+2 <!DOCTYPE test [
+3 <!ELEMENT test (#PCDATA) >
+4 <!ENTITY % xx '&#37;zz;'>
+5 <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
+6 %xx;
+7 ]>
+8 <test>This sample shows a &tricky; method.</test>
+]]></eg>
+‚±‚ê‚ðˆ—‚·‚é‚ÆCŽŸ‚Ì‚Æ‚¨‚è‚Æ‚È‚éB
+<ulist spacing="compact">
+<item><p>a) 4s–Ú‚ÅC37”Ô–Ú‚Ì•¶Žš‚Ö‚ÌŽQƂ𒼂¿‚É“WŠJ‚µCƒpƒ‰ƒƒ^ŽÀ‘Ì"<code>xx</code>"‚ðCƒVƒ“ƒ{ƒ‹ƒe[ƒuƒ‹‚É"<code>%zz;</code>"‚Æ‚¢‚¤’l‚Æ‚Æ‚à‚É•Û‘¶‚·‚éB&replacement-text;‚ðÄ‚Ñ‘–¸‚·‚邱‚Æ‚Í‚È‚¢‚Ì‚ÅCƒpƒ‰ƒƒ^ŽÀ‘Ì"<code>zz</code>"‚Ö‚ÌŽQÆ‚Í”FŽ¯‚µ‚È‚¢("<code>zz</code>"‚ÍC‚Ü‚¾éŒ¾‚³‚ê‚Ä‚¢‚È‚¢‚Ì‚ÅC‘–¸‚³‚ê‚ê‚ÎC&error;‚Æ‚È‚éB)B</p></item>
+<item><p>b) 5s–Ú‚ÅC•¶ŽšŽQÆ"<code>&amp;#60;</code>"‚𒼂¿‚É“WŠJ‚µCƒpƒ‰ƒƒ^ŽÀ‘Ì"<code>zz</code>"‚ð"<code>&lt;!ENTITY tricky "error-prone" ></code>"‚Æ‚¢‚¤&replacement-text;‚Æ‚Æ‚à‚É•Û‘¶‚·‚éB‚±‚ê‚ÍC&well-formed;‚ÌŽÀ‘Ì錾‚Æ‚·‚éB</p></item>
+<item><p>c) 6s–Ú‚ÅC"<code>xx</code>"‚Ö‚ÌŽQÆ‚ð”FŽ¯‚µC"<code>xx</code>"‚Ì&replacement-text;(‚·‚È‚í‚¿C"<code>%zz;</code>")‚ð\•¶‰ðÍ‚·‚éB"<code>zz</code>"‚Ö‚ÌŽQƂ𑱂¢‚Ä”FŽ¯‚µC&replacement-text;("<code>&lt;!ENTITY tricky "error-prone" ></code>")‚ð\•¶‰ðÍ‚·‚éBˆê”ÊŽÀ‘Ì"<code>tricky</code>"‚ÍC‚±‚ÌŽž“_‚Å‚ÍC錾‚³‚ê‚Ä‚¨‚èC‚»‚Ì&replacement-text;‚ÍC"<code>error-prone</code>"‚Æ‚·‚éB </p></item>
+<item><p>d) 8s–Ú‚ÅCˆê”ÊŽÀ‘Ì"<code>tricky</code>"‚Ö‚ÌŽQÆ‚ð”FŽ¯‚µC“WŠJ‚·‚éB—v‘f"<code>test</code>"‚ÌŠ®‘S‚È“à—e‚ÍCŽŸ‚Ì(“à—e‚ð‚»‚êŽ©‘Ì•\Œ»‚·‚éB)&string;‚Æ‚È‚éB‚‚܂èC<emph>This sample shows a error-prone method.</emph>
+</p></item>
+</ulist>
+</p>
+</inform-div1>
+<inform-div1 id="determinism">
+<head>Œˆ’è“I“à—eƒ‚ƒfƒ‹</head>
+<p><termref def='dt-compat'>ŒÝŠ·«‚Ì‚½‚ß</termref>C—v‘f錾‚É‚¨‚¯‚é“à—eƒ‚ƒfƒ‹‚ÍCŒˆ’è“I‚Æ‚·‚é•K—v‚ª‚ ‚éB
+</p>
+<!-- FINAL EDIT: WebSGML allows ambiguity? -->
+<p>SGML‚ÍCŒˆ’è“I“à—eƒ‚ƒfƒ‹(SGML‚Å‚ÍC”ñ‚ ‚¢‚Ü‚¢‚ƌĂÔB)‚ð—v‹‚·‚éBSGMLƒVƒXƒeƒ€‚ð—p‚¢‚Ä쬂µ‚½XML&processor;‚ÍC”ñŒˆ’è“I“à—eƒ‚ƒfƒ‹‚ð&error;‚Æ‚µ‚Ä‚à‚æ‚¢B</p>
+<p>—Ⴆ‚ÎC“à—eƒ‚ƒfƒ‹<code>((b, c) | (b, d))</code>‚Í”ñŒˆ’è“I‚Æ‚È‚éB‚±‚ê‚ÍCʼn‚É<code>b</code>‚ð—^‚¦‚½‚Æ‚«Cƒ‚ƒfƒ‹“à‚Ì‚¢‚¸‚ê‚Ì<code>b</code>‚Æ&match;‚·‚é‚Ì‚ª–]‚Ü‚µ‚¢‚©C‚»‚ÌŽŸ‚Ì—v‘f‚ðæ“Ç‚Ý‚·‚邱‚Æ‚È‚µ‚É‚ÍC&parser;‚Í’m‚邱‚Æ‚ª‚Å‚«‚È‚¢‚±‚Æ‚É‚æ‚éB‚±‚ÌꇂÍC<code>b</code>‚Ö‚Ì“ñ‚‚̎QÆ‚ÍCˆê‚‚̎QƂɂ܂Ƃ߂邱‚Æ‚ª‚Å‚«Cƒ‚ƒfƒ‹‚ÍC<code>(b, (c | d))</code>‚Æ‚È‚éB‚±‚ê‚ÅCʼn‚Ì<code>b</code>‚ªC“à—eƒ‚ƒfƒ‹“à‚̈ê‚‚̖¼‘O‚Æ‚¾‚¯&match;‚·‚邱‚Æ‚Í–¾‚ç‚©‚Æ‚È‚éB&parser;‚ÍCæ“Ç‚Ý‚µ‚ÄCŽŸ‚É—ˆ‚é‚à‚Ì‚ð’m‚é•K—v‚ª‚È‚¢B<code>c</code>‚à<code>d</code>‚àCŽó—‚³‚ê‚éB</p>
+<p>Œ`Ž®“I‚ÉŽ¦‚·BAho, Sethi, and Ullman <bibref ref='Aho'/>‚Ì3.9‚̃Aƒ‹ƒSƒŠƒYƒ€3.5‚Ì•W€“I‚ȃAƒ‹ƒSƒŠƒYƒ€‚ð—p‚¢‚ÄC“à—eƒ‚ƒfƒ‹‚©‚ç—LŒÀƒI[ƒgƒ}ƒgƒ“‚ð\¬‚·‚邱‚Æ‚ª‚Å‚«‚éB‚±‚ÌŽí‚Ì‘½‚­‚̃Aƒ‹ƒSƒŠƒYƒ€‚Å‚ÍC³‹K•\Œ»‚É‚¨‚¯‚éŠeX‚̈ʒu(‚‚܂èC³‹K•\Œ»‚Ì\•¶–Ø‚É‚¨‚¯‚éŠeX‚Ì––’[ƒm[ƒh)‚ɑ΂µ‚ÄCfollow set(ŽŸ‚ɂǂ̈ʒu‚Ɉړ®‰Â”\‚©‚ð•\‚·‚à‚Ì)‚ð\¬‚·‚éB‚ ‚éˆÊ’u‚ɑ΂·‚éfollow set‚É‚¨‚¢‚ÄC•¡”‚̈ʒu‚ª“¯‚¶—v‘fŒ^–¼‚щƒxƒ‹•t‚¯‚³‚ê‚Ä‚¢‚ê‚ÎC‚»‚Ì“à—eƒ‚ƒfƒ‹‚Í&error;‚Æ‚È‚èC&error;‚ð•Ô‚·ê‡‚à‚ ‚éB
+</p>
+<p>‚·‚ׂĂ̔ñŒˆ’è“I“à—eƒ‚ƒfƒ‹‚𓙉¿‚ÈŒˆ’è“I“à—eƒ‚ƒfƒ‹‚É•ÏŠ·‚·‚邱‚Æ‚Í‚Å‚«‚È‚¢‚ªC‘½‚­‚Ì”ñŒˆ’è“I“à—eƒ‚ƒfƒ‹‚ð•ÏŠ·‚·‚éƒAƒ‹ƒSƒŠƒYƒ€‚ª‘¶Ý‚·‚éBBr&#252;ggemann-Klein 1991 <bibref ref='ABK'/>‚ðŽQÆ‚Ì‚±‚ÆB</p>
+</inform-div1>
+<inform-div1 id="sec-guessing">
+<head>•¶Žš•„†‰»‚ÌŽ©“®ŒŸo</head>
+<p>
+XML‚Ì•„†‰»éŒ¾‚ÍCŠeŽÀ‘Ì‚Ì“à•”ƒ‰ƒxƒ‹‚Æ‚µ‚Ä‹@”\‚µC‚Ç‚Ì•¶Žš•„†‰»‚ðŽg—p‚·‚é‚©‚ðŽ¦‚·B‚µ‚©‚µCXML&processor;‚ÍC“à•”ƒ‰ƒxƒ‹‚ð“Ç‚Þ‘O‚ÉC‚Ç‚Ì•¶Žš•„†‰»‚ðŽg—p‚·‚é‚©‚ð’m‚é•K—v‚ª‚ ‚èC‚±‚ꂪC“à•”ƒ‰ƒxƒ‹‚ªŽ¦‚»‚¤‚Æ‚·‚邱‚Æ‚É‚È‚éBˆê”Ê“I‚É‚ÍC‚±‚ê‚ÍCâ–]“I‚Èó‘Ô‚Æ‚È‚éB‚µ‚©‚µCXML‚É‚¨‚¢‚Ä‚ÍCŠ®‘S‚É‚Íâ–]“I‚Å‚Í‚È‚¢B‚±‚ê‚ÍCXML‚ªCŽŸ‚Ì“ñ‚‚̓_‚ňê”Ê“I‚Èꇂɑ΂·‚駌À‚ð‰Á‚¦‚邱‚Æ‚É‚æ‚éBˆê‚‚̧ŒÀ‚ÍC‚Ç‚ÌŽÀ‘•‚à—LŒÀŒÂ‚Ì•¶Žš•„†‰»‚¾‚¯‚̃Tƒ|[ƒg‚ð‘z’è‚·‚邱‚Æ‚Æ‚·‚éB‘¼‚̈ê‚‚̧ŒÀ‚ÍCŠeŽÀ‘Ì‚ÅŽg—p‚·‚镶Žš•„†‰»‚ðŽ©“®ŒŸo‰Â”\‚Æ‚·‚éCXML‚Ì•„†‰»éŒ¾‚̈ʒu‹y‚Ñ“à—e‚ÉŠÖ‚·‚駌À‚Æ‚·‚éB‘½‚­‚ÌꇂÉCXML‚̃f[ƒ^ƒXƒgƒŠ[ƒ€‚ɉÁ‚¦C‘¼‚Ìî•ñ‚ª—˜—p‚Å‚«‚éB‚±‚±‚Å‚ÍCXML‚ÌŽÀ‘Ì‚ª&processor;‚É“n‚³‚ê‚é‚Æ‚«C(ŠO•”)î•ñ‚𔺂¤‚©‚Ç‚¤‚©‚É‚æ‚Á‚ÄC“ñ‚‚Ìꇂɕª‚¯‚éB‚Ü‚¸Å‰‚Ìê‡‚ðŽ¦‚·B</p>
+<p>
+UTF-8Œ`Ž®–”‚ÍUTF-16Œ`Ž®‚Å‚Í‚È‚¢XMLŽÀ‘Ì‚ÍCʼn‚Ì•¶Žš‚ðe<code>&lt;?xml</code>'‚Æ‚·‚éXML•„†‰»éŒ¾‚ÅŽn‚Ü‚ç<emph>‚È‚¯‚ê‚΂Ȃç‚È‚¢</emph>‚Ì‚ÅC‚Ç‚Ì“K‡‚µ‚½&processor;‚àC“ü—Í‚É‚ ‚é2ƒIƒNƒeƒbƒg–”‚Í4ƒIƒNƒeƒbƒg‚𒲂ׂê‚ÎCŽŸ‚Ì‚Ç‚Ìꇂª‚ ‚Ä‚Í‚Ü‚é‚©‚ðŒŸo‚Å‚«‚éB‚±‚̃ŠƒXƒg‚ð“Ç‚ÞÛ‚É‚ÍCUCS-4‚Ì'&lt;'‚ª"<code>#x0000003C</code>"C'?'‚ª"<code>#x0000003F</code>"C‹y‚ÑUTF-16‚̃f[ƒ^&stream;‚Ì•K—v‚Æ‚·‚é&byte-order-mark;‚ª"<code>#xFEFF</code>"‚Æ‚¢‚¤‚±‚Æ‚ð’m‚Á‚Ä‚¨‚­‚Ɩ𗧂‚©‚à‚µ‚ê‚È‚¢B</p>
+<p>
+<ulist>
+<item>
+<p>a) <code>00 00 00 3C</code>: UCS-4, big-endian ƒ}ƒVƒ“ (1234‡)</p>
+</item>
+<item>
+<p>b) <code>3C 00 00 00</code>: UCS-4, little-endian ƒ}ƒVƒ“ (4321‡)</p>
+</item>
+<item>
+<p>c) <code>00 00 3C 00</code>: UCS-4, •’Ê‚Å‚Í‚È‚¢ƒIƒNƒeƒbƒg‡ (2143)</p>
+</item>
+<item>
+<p>d) <code>00 3C 00 00</code>: UCS-4, •’Ê‚Å‚Í‚È‚¢ƒIƒNƒeƒbƒg‡ (3412)</p>
+</item>
+<item>
+<p>e) <code>FE FF</code>: UTF-16, big-endian</p>
+</item>
+<item>
+<p>f) <code>FF FE</code>: UTF-16, little-endian</p>
+</item>
+<item>
+<p>g) <code>00 3C 00 3F</code>: UTF-16, big-endian, &byte-order-mark;‚È‚µ(‚µ‚½‚ª‚Á‚ÄCŒµ–§‚É‚¢‚¦‚ÎC&error;‚Æ‚·‚éB)B</p>
+</item>
+<item>
+<p>h) <code>3C 00 3F 00</code>: UTF-16, little-endian, &byte-order-mark;‚È‚µ(‚µ‚½‚ª‚Á‚ÄCŒµ–§‚É‚¢‚¦‚ÎC&error;‚Æ‚·‚éB)B</p>
+</item>
+<item>
+<p>i) <code>3C 3F 78 6D</code>: UTF-8, ISO 646, ASCII, ISO 8859‚ÌŠeƒp[ƒgCShift-JISCEUCC•À‚Ñ‚É”CˆÓ‚Ì‘¼‚Ì7ƒrƒbƒgC8ƒrƒbƒg–”‚ͬݕ‚Ì•„†‰»‚Å‚ ‚Á‚ÄCASCII•¶Žš‚ð’Êí‚̈ʒuC•‹y‚Ñ’l‚Æ‚·‚邱‚Æ‚ð•ÛØ‚·‚é‚à‚ÌB‚±‚ê‚ç‚Ì‚Ç‚ê‚ɑΉž‚·‚é‚©‚ðŒŸo‚·‚邽‚ß‚É‚ÍCŽÀÛ‚Ì•„†‰»éŒ¾‚ð“Ç‚Ýž‚Ü‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚µ‚©‚µC‚±‚ê‚ç‚·‚ׂĂ̕„†‰»‚ÍCASCII•¶Žš‚ɑ΂µ‚Ä“¯‚¶ƒrƒbƒgƒpƒ^[ƒ“‚ðŽg—p‚·‚é‚Ì‚ÅC•„†‰»éŒ¾Ž©‘Ì‚ÍC³Šm‚É“Çž‚݉”\‚Æ‚·‚éB
+</p>
+</item>
+<item>
+<p>j) <code>4C 6F A7 94</code>: EBCDIC (–”‚Í‚»‚Ì•ÏŽíB‚ǂ̃R[ƒhƒy[ƒW‚ðŽg—p‚·‚é‚©‚ð’m‚邽‚ß‚É‚ÍC•„†‰»éŒ¾‘S‘Ì‚ð“Ç‚Ýž‚Ü‚ê‚È‚¯‚ê‚΂Ȃç‚È‚¢B)</p>
+</item>
+<item>
+<p>k) ‚»‚Ì‘¼: •„†‰»éŒ¾‚È‚µ‚ÌUTF-8B‚»‚¤‚Å‚È‚¢‚Æ‚«‚É‚ÍCƒf[ƒ^&stream;‚ª‰ó‚ê‚Ä‚¢‚é‚©C’f•Ð“I‚É‚È‚Á‚Ä‚¢‚é‚©C‰½‚ç‚©‚ÌŒ`Ž®‚É‚µ‚½‚ª‚Á‚Ä–„‚ßž‚Ü‚ê‚Ä‚¢‚éB</p>
+</item>
+</ulist>
+</p>
+<p>
+‚±‚Ì’ö“x‚ÌŽ©“®”»•Ê‚Å‚àCXML‚Ì•„†‰»éŒ¾‚ð“Ç‚Ýž‚ÝC•¶Žš•„†‰»‚Ì&identifier;‚ð‰ðÍ‚·‚é‚É‚Í\•ª‚Æ‚·‚éB&identifier;‚̉ðÍ‚ÍC—ÞŽ—‚·‚éŠeX‚Ì•„†‰»‚̈ꂈꂂð‹æ•Ê‚·‚邽‚ß‚É•K—v‚Æ‚·‚é(—Ⴆ‚ÎCUTF-8‹y‚Ñ8859‚ð‹æ•Ê‚·‚邽‚ßC8859‚ÌŠeƒp[ƒg‚ð‹æ•Ê‚·‚邽‚ßCŽg—p‚µ‚Ä‚¢‚é“Á’è‚ÌEBCDICƒR[ƒhƒy[ƒW‚ð‹æ•Ê‚·‚邽‚ßC‚È‚ÇB)B
+</p>
+<p>
+•„†‰»éŒ¾‚Ì“à—e‚ðASCII•¶Žš‚ÉŒÀ’肵‚Ä‚¢‚é‚Ì‚ÅC‚Ç‚Ì•ª—Þ‚Ì•„†‰»‚ðŽg—p‚·‚é‚©‚ðŒŸo‚·‚ê‚ÎC&processor;‚ÍC•„†‰»éŒ¾‘S‘Ì‚ð³Šm‚É“Ç‚Ýž‚Þ‚±‚Æ‚ª‚Å‚«‚éBŒ»ŽÀ–â‘è‚Æ‚µ‚ÄCL‚­Žg—p‚³‚ê‚Ä‚¢‚镶Žš•„†‰»‚ÍCã‚Ì•ª—Þ‚Ì‚¢‚¸‚ê‚©‚É‚ ‚Ä‚Í‚Ü‚é‚Ì‚ÅCƒIƒyƒŒ[ƒeƒBƒ“ƒOƒVƒXƒeƒ€–”‚Í“`‘—ƒvƒƒgƒRƒ‹‚ª—^‚¦‚éŠO•”î•ñ‚ðM—Š•s‰Â”\‚È‚Æ‚«‚Å‚³‚¦‚àC“à•”ƒ‰ƒxƒ‹‚Å•¶Žš•„†‰»‚ð‚©‚È‚è³Šm‚ÉŽ¦‚·‚±‚Æ‚ªCXML•„†‰»éŒ¾‚É‚æ‚Á‚ĉ”\‚Æ‚È‚éB
+</p>
+<p>
+&processor;‚ªŽg—p‚·‚镶Žš•„†‰»‚ðŒŸo‚µ‚³‚¦‚·‚ê‚ÎC‚»‚ꂼ‚ê‚Ìꇂɑ΂µ‚ĕʌ‚̓ü—̓‹[ƒ`ƒ“‚ðŒÄ‚Ño‚·C–”‚Í“ü—Í‚·‚éŠe•¶Žš‚ɑ΂µ“KØ‚È•ÏŠ·ŠÖ”‚ðŒÄ‚Ño‚·‚±‚Æ‚É‚æ‚Á‚ÄC“KØ‚È“®ì‚ª‰Â”\‚Æ‚È‚éB</p>
+<p>
+Ž©•ªŽ©‘̂Ƀ‰ƒxƒ‹•t‚¯‚ð‚·‚é‚¢‚©‚È‚éƒVƒXƒeƒ€‚Å‚à“¯—l‚¾‚ªCƒ\ƒtƒgƒEƒFƒA‚ªC•„†‰»éŒ¾‚ðXV‚¹‚¸‚ÉŽÀ‘Ì‚Ì•¶ŽšW‡–”‚Í•„†‰»‚ð•Ï‚¦‚½‚È‚ç‚ÎCXML‚Ì•„†‰»éŒ¾‚ÍC‹@”\‚µ‚È‚¢B•¶Žš•„†‰»ƒ‹[ƒ`ƒ“‚ÌŽÀ‘•ŽÒ‚ÍCŽÀ‘̂̃‰ƒxƒ‹•t‚¯‚ÉŽg—p‚·‚é“à•”‹y‚ÑŠO•”‚Ìî•ñ‚̳Šm‚³‚Ì•ÛØ‚É’ˆÓ‚·‚é‚Ì‚ª–]‚Ü‚µ‚¢B
+</p>
+<p>‚Q”Ô–Ú‚ÌꇂÍCXML‚ÌŽÀ‘Ì‚Ì‘¼‚ÉC•„†‰»î•ñ‚ª‘¶Ý‚·‚é‚Æ‚«‚Å‚ ‚Á‚ÄC‚¢‚­‚‚©‚̃tƒ@ƒCƒ‹ƒVƒXƒeƒ€‹y‚уlƒbƒgƒ[ƒNƒvƒƒgƒRƒ‹‚Å‚ÍC‚»‚Ì•„†‰»î•ñ‚ª‘¶Ý‚·‚éB•¡”‚Ìî•ñ‚ª—˜—p‚Å‚«‚é‚Æ‚«C<!-- (e.g. both the
+internal encoding declaration and an external label), -->‚»‚ê‚ç‚Ì‘Š‘ΓI‚È—Dæ“x‹y‚Ñ‚»‚ê‚炪–µ‚‚µ‚½‚Æ‚«‚Ì–]‚Ü‚µ‚¢ˆ—•û–@‚ÍCXML‚Ì”z‘—‚ÉŽg—p‚·‚éC‚æ‚è‚…€‚̃vƒƒgƒRƒ‹‚̈ꕔ‚Æ‚µ‚Ä‹K’ö‚·‚é‚Ì‚ª‚æ‚¢B—Ⴆ‚ÎC“à•”ƒ‰ƒxƒ‹‹y‚ÑŠO•”&header;‚É‘¶Ý‚·‚éMIMEŒ`Ž®‚̃‰ƒxƒ‹‚Ì‘Š‘ΓI‚È—Dæ“x‚ɑ΂·‚é‹K‘¥‚ÍCtext/xml‹y‚Ñapplication/xml‚ÌMIMEŒ^‚ð’è‹`‚·‚éRFC•¶‘‚̈ꕔ‚Æ‚È‚é•û‚ª‚æ‚¢B‚µ‚©‚µC‘ŠŒÝ‰^—p«‚Ì‚½‚ß‚ÉCŽŸ‚Ì‹K‘¥‚É]‚¤‚±‚Æ‚ª–]‚Ü‚µ‚¢B
+<ulist>
+<item><p>a) XML‚ÌŽÀ‘Ì‚ªƒtƒ@ƒCƒ‹‚É‘¶Ý‚·‚ê‚ÎC&byte-order-mark;‹y‚Ñ•„†‰»éŒ¾PI‚ÍC(‘¶Ý‚·‚ê‚Î)•¶Žš•„†‰»‚ðŒˆ’è‚·‚邽‚ß‚ÉŽg—p‚·‚éB‘¼‚Ì‚·‚ׂĂÌ&hueristics;‹y‚Ñî•ñ‚ÍC&error;‰ñ•œ‚Ì‚½‚ß‚¾‚¯‚É—p‚¢‚éB
+</p></item>
+<item><p>b) XML‚ÌŽÀ‘Ì‚ðMIMEŒ^text/xml‚Å”z‘—‚·‚é‚Æ‚«‚ÍC‚±‚ÌMIMEŒ^‚Ì‚à‚Âcharsetƒpƒ‰ƒƒ^‚ª•¶Žš•„†‰»•û–@‚ðŒˆ’è‚·‚éB‘¼‚Ì‚·‚ׂĂÌ&hueristics;‹y‚Ñî•ñ‚ÍC&error;‰ñ•œ‚Ì‚½‚ß‚¾‚¯‚É—p‚¢‚éB
+</p></item>
+<item><p>c) XML‚ÌŽÀ‘Ì‚ð <!-- via the HTTP protocol -->MIMEŒ^application/xml‚Å”z‘—‚·‚é‚Æ‚«‚ÍC&byte-order-mark;‹y‚Ñ•„†‰»éŒ¾PI‚ð(‘¶Ý‚·‚ê‚Î)•¶Žš•„†‰»‚ÌŒˆ’è‚Ì‚½‚ß‚ÉŽg—p‚·‚éB‘¼‚Ì‚·‚ׂĂÌ&hueristics;‹y‚Ñî•ñ‚Í&error;‰ñ•œ‚Ì‚½‚ß‚¾‚¯‚É—p‚¢‚éB
+</p></item>
+</ulist>
+‚±‚ê‚ç‚Ì‹K‘¥‚ÍCƒvƒƒgƒRƒ‹‚ɂ‚¢‚Ä‚ÌŽ‘—¿‚ª‚È‚¢‚Æ‚«‚É‚¾‚¯—p‚¢‚éB“Á‚ÉCMIMEŒ^text/xml‹y‚Ñapplication/xml‚ð’è‹`‚µ‚½‚çC‚±‚ê‚ç‚ð‹K’è‚·‚éRFC‚É‘¶Ý‚·‚é‹K’肪C‚±‚ê‚ç‚Ì‹K‘¥‚ÉŽæ‚Á‚Ä‘ã‚í‚éB
+</p>
+</inform-div1>
+<!--
+<div1 id='sec-trival-grammar'>
+<head>A Trivial Grammar for XML Documents</head>
+<p>The grammar given in the body of this specification is relatively
+simple, but for some purposes it is convenient to have an even simpler
+one.
+A very simple, though non-conforming, <termref def="dt-xml-proc">XML
+processor</termref> could parse a <termref
+def="dt-wellformed">well-formed</termref> XML document using the
+following simplified grammar, recognizing all element boundaries
+correctly, though not expanding entity references and not detecting
+all errors:
+
+<scrap lang="ebnf">
+<head>Trivial text grammar</head>
+<prodgroup pcw2="5.5" pcw4="17" pcw5="10">
+<prod id='NT-simpleDoc'><lhs>simpleDoc</lhs>
+<rhs>(<nt def='NT-SimpleData'>SimpleData</nt>
+| <nt def='NT-Markup'>Markup</nt>)*</rhs></prod>
+<prod id="NT-SimpleData"><lhs>SimpleData</lhs>
+<rhs>[^&lt;&amp;]*</rhs>
+<com>cf. PCData</com>
+</prod>
+<prod id="NT-SimpleLit"><lhs>SimpleLit</lhs>
+<rhs>('"' [^"]* '"')</rhs>
+<rhs>|&nbsp;("'" [^']* "'")</rhs>
+<com>cf. SkipLit</com>
+</prod>
+<prod id='NT-Markup'><lhs>Markup</lhs>
+<rhs>'&lt;' <nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?
+<nt def='NT-SimpleLit'>SimpleLit</nt>)*
+<nt def='NT-S'>S</nt>? '&gt;'</rhs><com>start-tags </com>
+<rhs>| '&lt;' <nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?
+<nt def='NT-SimpleLit'>SimpleLit</nt>)*
+<nt def='NT-S'>S</nt>? '/&gt;'</rhs><com>empty elements</com>
+<rhs>| '&lt;/'
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+<com>end-tags </com>
+<rhs>| '&amp;' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<com>entity references </com>
+<rhs>| '&amp;#' [0-9]+ ';'</rhs>
+<com>decimal character references </com>
+<rhs>| '&hcro;' [0-9a-fA-F]+ ';'</rhs>
+<com>hexadecimal character references </com>
+<rhs>| '&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>
+<com>comments </com>
+<rhs>| '&lt;?'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*))
+'&pic;'</rhs>
+<com>processing instructions </com>
+<rhs>| '&lt;![CDATA['
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+']]&gt;'</rhs>
+<com>CDATA sections</com>
+<rhs>| '&lt;!DOCTYPE'
+(<nt def="NT-Char">Char</nt> - ('[' | ']'))+
+('['
+<nt def="NT-simpleDTD">simpleDTD</nt>*
+']')? '&gt;'</rhs>
+<com>doc type declaration</com>
+</prod>
+<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs>
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>
+<com>comment </com>
+<rhs>| '&lt;?'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*))
+'&pic;'</rhs>
+<com>processing instruction </com>
+<rhs><nt def="NT-SimpleLit">SimpleLit</nt></rhs>
+<rhs>(<nt def="NT-Char">Char</nt> - (']' | '&lt;' | '"' | "'"))+
+</rhs>
+
+<rhs>'&lt;!' (<nt def="NT-Char">Char</nt> - ('-'))+</rhs>
+<com>declarations other than comment</com>
+</prod>
+</prodgroup>
+</scrap>
+Most processors will require the more complex
+grammar given in the body of this specification.
+
+</p>
+</div1>
+-->
+
+<inform-div1 id="sec-xml-wg">
+<head>&informative;W3C XML ƒ[ƒLƒ“ƒOƒOƒ‹[ƒv</head>
+
+<p>‚±‚Ì&TR-or-Rec;‚ÍCW3C XML ƒ[ƒLƒ“ƒOƒOƒ‹[ƒv(WG)‚ª€”õ‚µCŒöŠJ‚ð³”F‚µ‚½BWG‚ª‚±‚Ì&TR-or-Rec;‚ð³”F‚·‚é‚Æ‚¢‚¤‚±‚Æ‚ÍCWG‚Ì‚·‚ׂĂ̈ψõ‚ª³”F“Š•[‚ðs‚Á‚½‚Æ‚¢‚¤‚±‚Æ‚ð•K‚¸‚µ‚àˆÓ–¡‚µ‚È‚¢BXML WG‚ÌŒ»Ý‚̈ψõ‹y‚шȑO‚̈ψõ‚ðŽŸ‚ÉŽ¦‚·B</p>
+
+<!-- parens and spaces removed from role elements by bosak 1997.11.07 -->
+<orglist>
+<member><name>Jon Bosak, Sun</name><role>Chair</role></member>
+<member><name>James Clark</name><role>Technical Lead</role></member>
+<member><name>Tim Bray, Textuality and Netscape</name><role>XML Co-editor</role></member>
+<member><name>Jean Paoli, Microsoft</name><role>XML Co-editor</role></member>
+<member><name>C. M. Sperberg-McQueen, U. of Ill.</name><role>XML Co-editor</role></member>
+<member><name>Dan Connolly, W3C</name></member>
+<member><name>Steve DeRose, INSO</name></member>
+<member><name>Dave Hollander, HP</name></member>
+<member><name>Eliot Kimber, Highland</name></member>
+<member><name>Eve Maler, ArborText</name></member>
+<member><name>Tom Magliery, NCSA</name></member>
+<member><name>Murray Maloney, Muzmo and Grif</name></member>
+<member><name>‘º“c@^C•xŽmƒ[ƒƒbƒNƒXî•ñƒVƒXƒeƒ€(Š”)</name></member>
+<member><name>Joel Nava, Adobe</name></member>
+<member><name>Peter Sharpe, SoftQuad</name></member>
+<member><name>John Tigue, DataChannel</name></member>
+</orglist>
+
+</inform-div1>
+</back>
+</spec>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+End:
+-->
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-16.xml
new file mode 100644
index 0000000000..e45d113fd6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-16.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-8.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-8.xml
new file mode 100644
index 0000000000..d7f4415e72
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/pr-xml-utf-8.xml
@@ -0,0 +1,3548 @@
+<?xml version="1.0"?>
+<!DOCTYPE spec SYSTEM "spec.dtd" [
+
+<!-- 日本語訳ã®ãŸã‚ã®è§£æžå¯¾è±¡å®Ÿä½“(ã“ã“ã‹ã‚‰ï¼‰ -->
+
+<!ENTITY TR-or-Rec "仕様書">
+<!-- <!ENTITY TR-or-Rec "標準情報(TR)"> -->
+<!ENTITY eTR-or-Rec "specification">
+<!-- <!ENTITY eTR-or-Rec "technical report(TR)"> -->
+<!ENTITY application "アプリケーション">
+<!ENTITY error "エラー">
+<!ENTITY fatal-error "致命的エラー">
+<!ENTITY parsed-data "解æžã•ã‚Œã‚‹ãƒ‡ãƒ¼ã‚¿">
+<!ENTITY unparsed-data "解æžã•ã‚Œãªã„データ">
+<!ENTITY parsed-entity "解æžå¯¾è±¡å®Ÿä½“">
+<!ENTITY parser "パーサ">
+<!ENTITY unparsed-entity "解æžå¯¾è±¡å¤–実体">
+<!ENTITY well-formed "æ•´å½¢å¼">
+<!ENTITY valid "妥当">
+<!ENTITY validity "妥当性">
+<!ENTITY escape "別扱ã„">
+<!ENTITY prolog "書ã">
+<!ENTITY surrogate-blocks "サロゲートブロック">
+<!ENTITY letter "å­—">
+<!ENTITY ideographic "çµ±åˆæ¼¢å­—">
+<!ENTITY markup "マーク付ã‘">
+<!ENTITY left-angle-bracket "ä¸ç­‰å·(å°ãªã‚Š)">
+<!ENTITY right-angle-bracket "ä¸ç­‰å·(大ãªã‚Š)">
+<!ENTITY string "文字列">
+<!ENTITY char-string "文字列"><!-- string of chararacters,
+ character strings, strings,
+ characters ã¯ã™ã¹ã¦æ–‡å­—列ã¨ã™ã‚‹ -->
+<!ENTITY replacement-text "ç½®æ›ãƒ†ã‚­ã‚¹ãƒˆ">
+<!ENTITY single-quote "一é‡å¼•ç”¨ç¬¦">
+<!ENTITY double-quote "二é‡å¼•ç”¨ç¬¦">
+<!ENTITY adaptations-annex "é©ç”¨é™„属書">
+<!ENTITY root "ルート">
+<!ENTITY base-character "基底文字">
+<!ENTITY diacritical-mark "発音符"><!--(ダイアクリティカルマーク)ã‚’åˆå‡ºã®ã¨ã補ã†-->
+<!ENTITY composed-form "åˆæˆå½¢å¼">
+<!ENTITY standalone "スタンドアロン">
+<!ENTITY double-hyphen "二連ãƒã‚¤ãƒ•ãƒ³">
+<!--<!ENTITY case-fold "大文字ã‹å°æ–‡å­—ã¸ã®çµ±ä¸€">-->
+<!-- <!ENTITY case-fold "比較ã®ã¨ã,大文字ã¨å°æ–‡å­—ã®åŒä¸€è¦–">-->
+<!ENTITY parameter "パラメタ">
+<!ENTITY stream "ストリーム">
+<!ENTITY validating "妥当性を検証ã™ã‚‹">
+<!ENTITY non-validating "妥当性を検証ã—ãªã„">
+<!ENTITY user "ユーザ">
+<!--<!ENTITY at-user-option "ユーザãŒã‚ªãƒ—ションを指定ã—ãŸã¨ã">-->
+<!ENTITY at-user-option "ユーザã®ã‚ªãƒ—ション指定ã«ã‚ˆã£ã¦ã¯">
+<!ENTITY content-particle "内容素å­">
+<!ENTITY processor "プロセサ">
+<!ENTITY default "デフォルト">
+<!ENTITY default-value "デフォルト値">
+<!ENTITY header "ヘッダ">
+<!ENTITY target "ターゲット">
+<!ENTITY mixed-content "æ··åˆå†…容">
+<!ENTITY country-code "国コード">
+<!ENTITY language-code "言語コード">
+<!ENTITY version "版"> <!-- version 1.0ã¯ç¬¬1.0版 -->
+<!ENTITY match "マッãƒ">
+<!ENTITY character-value "文字番å·">
+<!ENTITY byte-order-mark "ãƒã‚¤ãƒˆé †ãƒžãƒ¼ã‚¯">
+<!ENTITY bypass "処ç†ã—ãªã„">
+<!ENTITY identifier "識別å­">
+<!-- <!ENTITY identify "識別ã™ã‚‹"> -->
+<!ENTITY identify "特定ã™ã‚‹">
+<!-- <!ENTITY identified "識別ã•ã‚Œã‚‹"> -->
+<!ENTITY identified "特定ã•ã‚Œã‚‹">
+<!ENTITY combining-character "çµåˆæ–‡å­—">
+<!ENTITY subset "サブセット">
+<!ENTITY token "トークン">
+<!ENTITY literal "リテラル">
+
+<!ENTITY parenthesis "ã‹ã£ã“">
+<!ENTITY left-parenthesis "é–‹ãã‹ã£ã“">
+<!ENTITY right-parenthesis "é–‰ã˜ã‹ã£ã“">
+
+<!-- ã‚ã¨ã§æ°—ãŒã¤ã„ãŸã‚‚ã® JIS X0221を見る必è¦ã‚ã‚Š -->
+
+<!ENTITY extender "エクステンダ">
+<!ENTITY property "プロパティ">
+<!ENTITY property-list "プロパティリスト">
+<!ENTITY property-file "プロパティファイル">
+<!ENTITY font-decomposition "フォント分解">
+<!ENTITY compatibility-decomposition "互æ›æ€§åˆ†è§£">
+<!ENTITY compatibility-area "互æ›æ€§é ˜åŸŸ">
+
+<!ENTITY language-identification "言語識別">
+
+<!ENTITY space-character "スペース文字">
+<!ENTITY space "スペース">
+<!ENTITY code-value "コード値">
+<!ENTITY normative "è¦å®šã®">
+<!ENTITY hueristics "ヒューリスティック">
+<!ENTITY informative "">
+
+<!ENTITY WebSGML 'ISO 8879ã¸ã®WebSGML&adaptations-annex;'>
+<!ENTITY XML.version "1.0">
+<!ENTITY doc.date "1997年12月8日">
+<!ENTITY iso6.doc.date "971208">
+<!ENTITY w3c.doc.date "97年12月3日">
+<!ENTITY draft.day '8æ—¥'>
+<!ENTITY draft.month '12月'>
+<!ENTITY draft.year '1997å¹´'>
+
+<!-- 日本語訳ã®ãŸã‚ã®è§£æžå¯¾è±¡å®Ÿä½“(ã“ã“ã¾ã§ï¼‰ -->
+
+<!-- LAST TOUCHED BY: Tim Bray, 3 Dec 1997 -->
+
+<!-- The words 'FINAL EDIT' in comments mark places where changes
+need to be made after approval of the document by the ERB, before
+publication. -->
+
+<!ENTITY XML.version "1.0">
+<!ENTITY doc.date "8 December 1997">
+<!ENTITY iso6.doc.date "971208">
+<!ENTITY w3c.doc.date "03-Dec-97">
+<!ENTITY draft.day '8'>
+<!ENTITY draft.month 'December'>
+<!ENTITY draft.year '1997'>
+
+<!ENTITY WebSGML
+ 'WebSGML Adaptations Annex to ISO 8879'>
+
+<!ENTITY newline " ">
+<!-- old: <!ENTITY newline "&#8232;"> -->
+<!ENTITY gt ">">
+<!--<!ENTITY amp "&"> -->
+<!ENTITY xmlpio "'&lt;?xml'">
+<!ENTITY pic "'?>'">
+<!ENTITY br "\n">
+<!ENTITY cellback '#c0d9c0'>
+<!ENTITY mdash "--"> <!-- was: <!ENTITY mdash "&#38;#151;"> -->
+<!ENTITY com "--">
+<!ENTITY como "--">
+<!ENTITY comc "--">
+<!ENTITY hcro "&amp;#x">
+<!-- <!ENTITY nbsp ""> -->
+<!ENTITY nbsp "&#160;">
+<!ENTITY magicents "<code>amp</code>,
+<code>lt</code>,
+<code>gt</code>,
+<code>apos</code>,
+<code>quot</code>">
+
+<!--日本語訳ã«ã¤ã„ã¦: コメントã¯ç¿»è¨³å¯¾è±¡ã‹ã‚‰å¤–ã—ã¾ã—ãŸã€‚鈴木和夫 -->
+<!-- audience and distribution status: for use at publication time -->
+<!-- -->
+<!ENTITY doc.audience "公開レビューåŠã³è­°è«–">
+<!ENTITY doc.distribution "テキストåŠã³æ³•å¾‹ä¸Šã®æ³¨æ„を改変ã—ãªã„é™ã‚Šï¼Œ
+自由ã«é…布ã—ã¦ã‚‚よã„">
+
+]>
+
+<!-- for Panorama *-->
+<?VERBATIM "eg" ?>
+
+<spec>
+<header>
+<title>æ‹¡å¼µå¯èƒ½ãª&markup;言語 (XML)</title>
+<version>第1.0&version;</version>
+<w3c-designation>PR-xml-&iso6.doc.date;</w3c-designation>
+<w3c-doctype>World Wide Web Consortium</w3c-doctype>
+<pubdate><day>&draft.day;</day><month>&draft.month;</month><year>&draft.year;</year></pubdate>
+<notice><p>ã“ã®è‰æ¡ˆã¯ï¼ŒXML WGåŠã³ä»–ã®é–¢ä¿‚者ã«ã‚ˆã‚‹ãƒ¬ãƒ“ューã®ãŸã‚ã®ã‚‚ã®ã§ã‚ã£ã¦ï¼Œå…¬é–‹ã®è­°è«–ã®ãŸã‚ã®ã‚‚ã®ã§ã¯ãªã„。
+<!-- FINAL EDIT: FIX --></p></notice>
+<publoc>
+<loc href="http://www.w3.org/TR/PR-xml-&iso6.doc.date;">
+http://www.w3.org/TR/PR-xml-&iso6.doc.date;</loc></publoc>
+<prevlocs>
+<loc href='http://www.w3.org/TR/WD-xml-961114'>
+http://www.w3.org/TR/WD-xml-961114</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970331'>
+http://www.w3.org/TR/WD-xml-lang-970331</loc>
+<loc href='http://www.w3.org/TR/WD-xml-lang-970630'>
+http://www.w3.org/TR/WD-xml-lang-970630</loc>
+<loc href='http://www.w3.org/TR/WD-xml-970807'>
+http://www.w3.org/TR/WD-xml-970807</loc>
+<loc href='http://www.w3.org/TR/WD-xml-971117'>
+http://www.w3.org/TR/WD-xml-971117</loc>
+</prevlocs>
+<authlist>
+<author><name>Tim Bray</name>
+<affiliation>Textuality and Netscape</affiliation>
+<email
+href="mailto:tbray@textuality.com">tbray@textuality.com</email></author>
+<author><name>Jean Paoli</name>
+<affiliation>Microsoft</affiliation>
+<email href="mailto:jeanpa@microsoft.com">jeanpa@microsoft.com</email></author>
+<author><name>C. M. Sperberg-McQueen</name>
+<affiliation>University of Illinois at Chicago</affiliation>
+<email href="mailto:cmsmcq@uic.edu">cmsmcq@uic.edu</email></author>
+</authlist>
+<status>
+ <p>ã“ã®&TR-or-Rec;ã¯, 1997å¹´12月ã«World Wide Web Consortiumã‹ã‚‰
+公表ã•ã‚ŒãŸå‹§å‘Šæ¡ˆExtensible Markup Language version第1.0版を翻訳ã—, 技
+術的内容を変更ã™ã‚‹ã“ã¨ãªã作æˆã—ãŸ&TR-or-Rec;ã§ã‚る。This &eTR-or-Rec;
+is a translation of the XML proposed recommendation 1.0
+published by the World Wide Web Consortium in December 1997. It is
+intended that &eTR-or-Rec; is technically identical to the original.</p>
+
+<p>原文ã«ã‚ã‚‹ã€è‘—作権ã«é–¢ã—ã¦ã®è¨˜è¿°ã‚’次ã«ç¤ºã™ã€‚The
+original copyright notice is shown below:</p>
+
+<p>ã“ã®ç‰ˆã®XMLã®è¦å®šã¯ï¼Œå…¬é–‹ãƒ¬ãƒ“ューåŠã³è­°è«–ã‚’
+目的ã¨ã™ã‚‹ã€‚テキストåŠã³æ³•å¾‹ä¸Šã®æ³¨æ„を改変ã—ãªã„é™ã‚Šï¼Œè‡ªç”±ã«
+é…布ã—ã¦ã‚‚よã„。This version of the XML specification is for
+public review and discussion. It may be distributed freely,
+as long as all text and legal notices remain intact.</p>
+
+<p>ã“ã®&TR-or-Rec;ã®å…ƒã¨ãªã£ãŸXML勧告案ã¯ï¼Œ1998å¹´2月ã«World
+Wide Web Consortiumã‹ã‚‰å…¬è¡¨ã•ã‚ŒãŸXML勧告ã«ã‚ˆã£ã¦ã™ã§ã«ç½®ãæ›
+ãˆã‚‰ã‚Œã¦ã„る。ã“ã®æ¨™æº–情報ã¯ï¼ŒXML勧告ã«å¾“ã£ã¦è¨‚æ­£ã™ã‚‹ã“ã¨ã‚’
+予定ã—ã¦ã„る。The XML Proposed Recommendation is superseded
+by the XML Recommendation which was published by the World
+Wide Web Consortium in February 1998. It is intended that
+this &eTR-or-Rec; be revised accordingly in the near future.</p>
+
+<p>ã“ã®&TR-or-Rec;ã¯ï¼Œå®‰å®šã—ãŸã‚‚ã®ã§ã‚ã£ã¦ï¼Œæ˜¨å¹´æ¥ã®<loc
+href='http://www.w3.org/XML'>XML活動</loc>を通ã˜ã¦ä½œæˆã•ã‚ŒãŸï¼Œä¸€é€£ã®ä½œ
+業è‰æ¡ˆã‚’å…ƒã¨ã™ã‚‹ã€‚ç¾åœ¨ï¼Œåºƒç¯„囲ã«ä½¿ç”¨ã•ã‚Œã¦ã„る国際的ãªãƒ†ã‚­ã‚¹ãƒˆå‡¦ç†ã®æ¨™
+準(標準一般化&markup;言語,Standard Generalized Markup Language, ISO
+8879:1986ã«è¿½åŠ åŠã³è¨‚正を加ãˆãŸã‚‚ã®)ã®ï¼ŒWWW上ã§ã®ä½¿ç”¨ã®ãŸã‚ã«&subset;
+化ã—ãŸè¨€èªžã‚’,ã“ã®&TR-or-Rec;ã¯ï¼Œè¦å®šã™ã‚‹ã€‚ISO 8879ã®ã©ã®æ©Ÿèƒ½ã‚’ã“ã®
+&subset;ã«æ®‹ã™ã‹ï¼Œã¨ã„ã†æ±ºå®šã«ã¤ã„ã¦ã®è©³ç´°ã¯ï¼Œ<loc
+href='http://www.w3.org/XML/#WG-decisions'>別途用æ„ã™ã‚‹</loc>。XMLã¯ï¼Œ
+æ—¢ã«ã„ãã¤ã‹ã®å•†å“ã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œï¼ŒXMLをサãƒãƒ¼ãƒˆã™ã‚‹<loc
+href='http://www.w3.org/XML/#software'>フリーウェア</loc>ã®æ•°ã‚‚増ãˆã¦
+ã„る。XMLã«é–¢ã™ã‚‹å…¬é–‹ã®è«–議も,オンラインã§<loc
+href='http://www.w3.org/XML/#discussion'>入手ã§ãã‚‹</loc>。It is a
+stable document derived from a series of working drafts produced over
+the last year as deliverables of the <loc
+href='http://www.w3.org/XML'>XML activity</loc>. It specifies a
+language created by subsetting an existing, widely used international
+text processing standard (Standard Generalized Markup Language, ISO
+8879:1986 as amended and corrected) for use on the World Wide Web.
+Details of the decisions regarding which features of ISO 8879 to
+retain in the subset <loc
+href='http://www.w3.org/XML/#WG-decisions'>are available
+separately</loc>. XML is already supported by some commercial
+products, and there are a growing number of <loc
+href='http://www.w3.org/XML/#software'>free implementations</loc>.
+Public discussions of XML <loc
+href='http://www.w3.org/XML/#discussion'>are accessible
+online</loc>.</p>
+
+<p>ã“ã®&TR-or-Rec;ã§ã¯ï¼Œ<bibref ref="Berners-Lee"/>ã«å®šç¾©ã™ã‚‹
+URI(Uniform Resource Identifier)を使用ã™ã‚‹ã€‚URIã®åˆ¶å®šä½œæ¥­ã¯é€²è¡Œä¸­ã§ã‚ã£
+ã¦ï¼Œ<bibref ref="RFC1738"/>åŠã³<bibref ref="RFC1808"/>ã‚’æ›´æ–°ã™ã‚‹äºˆå®šã¨
+ãªã£ã¦ã„る。ã“ã®ä½œæ¥­ãŒRFCã¨ã—ã¦å—ã‘入れられãªã„å ´åˆã¯ï¼Œã“ã®è¦ç¨‹å†…ã®URI
+ã¸ã®å‚ç…§ã¯ï¼ŒURL(Uniform Resource Locator)ã¸ã®å‚ç…§ã«ä»£ã‚る。This
+specification uses the term URI, which is defined by <bibref
+ref="Berners-Lee"/>, a work in progress expected to update <bibref
+ref="RFC1738"/> and <bibref ref="RFC1808"/>. Should the work not be
+accepted as an RFC, the references to uniform resource identifiers
+(URIs) in this specification will become references to uniform
+resource locators (URLs).</p>
+
+ <p>XMLã®ä»•æ§˜ã«æº–æ‹ ã—ã¦ã„ã‚‹ã‹ã©ã†ã‹ã®åŸºæº–ã¨ãªã‚‹ã¯W3Cã®ã‚µã‚¤ãƒˆã«ã‚
+る原文ã§ã‚る。The normative version of the specification is
+the English version found at the W3C site.</p>
+
+ <p>ã“ã®æ¨™æº–情報ã¯åŽŸä»•æ§˜ã¨æŠ€è¡“çš„ã«åŒä¸€ã§ã‚ã‚‹ã“ã¨ã‚’æ„図ã—ã¦ã„ã‚‹ãŒã€
+翻訳上ã®èª¤ã‚Šã¯ã‚り得る。Although this technical report is
+intended to be technically identical to the original, it may
+contain errors from the translation.</p>
+
+ <p>備考: 原è¦å®šã¨ã®è¦å®šç®‡æ‰€ã®å¯¾å¿œé–¢ä¿‚を明らã‹ã«ã™ã‚‹ãŸã‚ã€ã“ã®
+&TR-or-Rec;ã®ç¯€æ§‹æˆåŠã³ç¯€ç•ªå·ã¯ã€åŽŸè¦å®šã®ãれらをã§ãã‚‹ã ã‘ä¿å­˜ã—ã¦ã„
+る。ã“ã®&TR-or-Rec;ã®Web版ã¯ã€åŽŸè¦å®šã®HTMLã‚¿ã‚°ã‚’ãã®ã¾ã¾ä¿å­˜ã—ã¦ã„る。
+</p>
+</status>
+<!-- out of date
+<statusp>This is a W3C Working Draft for review by W3C members and other
+interested parties. It is a draft document and may be updated,
+replaced, or obsoleted by other documents at any time. It is
+inappropriate to use W3C Working Drafts as reference material or to
+cite them as other than "work in progress". A list of current W3C
+working drafts can be found at
+<loc href="http://www.w3.org/TR">http://www.w3.org/TR</loc>.</statusp>
+<statusp><emph>Note:</emph> Since working drafts are subject to frequent
+change, you are advised to reference the above URL, rather than the
+URLs for working drafts themselves.</statusp>
+<statusp>This work is part of the W3C SGML Activity (for current
+status, see <loc href="http://www.w3.org/MarkUp/SGML/Activity"
+>http://www.w3.org/MarkUp/SGML/Activity</loc>).</statusp>
+<p>The current
+draft of this specification
+presupposes the successful completion of the current
+work on the &WebSGML;, being prepared by ISO/IEC JTC1
+at the time this draft specification was drafted.
+If it is not
+adopted in the expected form, some clauses of this specification
+may change, and some
+recommendations now labeled "<termref def="dt-interop">for
+interoperability</termref>" will become requirements labeled
+"<termref def="dt-compat">for compatibility</termref>".
+</p>
+<p>The current draft of this specification uses the term
+URI, which is defined by
+<bibref ref="Berners-Lee"/>,
+which is work in progress expected to update
+<bibref ref="RFC1738"/> and <bibref ref="RFC1808"/>.
+Should the work in this draft not be accepted as an RFC, the
+references to uniform resource identifiers (URIs) in this
+specification will become references to uniform resource
+locators (URLs).</p>
+</status> -->
+<abstract>
+<p>æ‹¡å¼µå¯èƒ½ãª&markup;言語(XML)ã¯SGMLã®ç°¡å˜ãªæ–¹è¨€ã§ã‚ã£ã¦ï¼Œã“ã®&TR-or-Rec;ã§ï¼Œãã®ã™ã¹ã¦ã‚’è¦å®šã™ã‚‹ã€‚XMLã®ç›®æ¨™ã¯ï¼Œç¾åœ¨ã®HTMLã¨åŒæ§˜ã«ï¼Œä¸€èˆ¬æ€§ã®ã‚ã‚‹SGMLをウェブ上ã§é…布,å—ä¿¡åŠã³å‡¦ç†ã§ãã‚‹ã“ã¨ã¨ã™ã‚‹ã€‚XMLã¯å®Ÿè£…ãŒå®¹æ˜“ã§ã‚ã£ã¦ï¼ŒSGMLåŠã³HTMLã®ã©ã¡ã‚‰ã«å¯¾ã—ã¦ã‚‚相互é‹ç”¨æ€§ã‚’ä¿ã¤è¨­è¨ˆãŒãªã•ã‚Œã¦ã„る。</p>
+</abstract>
+<pubstmt>
+<p>Chicago, Vancouver, Mountain View, et al.:
+World-Wide Web Consortium, XML作業グループ, 1996, 1997.</p>
+</pubstmt>
+<sourcedesc>
+<p>Created in electronic form.</p>
+</sourcedesc>
+<langusage>
+<language id='EN'>English</language>
+<language id='ebnf'>Extended Backus-Naur Form (formal grammar)</language>
+</langusage>
+<revisiondesc>
+<slist>
+<sitem>1997-12-03 : CMSMcQ : yet further changes</sitem>
+<sitem>1997-12-02 : TB : further changes (see TB to XML WG,
+2 December 1997)</sitem>
+<sitem>1997-12-02 : CMSMcQ : deal with as many corrections and
+comments from the proofreaders as possible:
+entify hard-coded document date in pubdate element,
+change expansion of entity WebSGML,
+update status description as per Dan Connolly (am not sure
+about refernece to Berners-Lee et al.),
+add 'The' to abstract as per WG decision,
+move Relationship to Existing Standards to back matter and
+combine with References,
+re-order back matter so normative appendices come first,
+re-tag back matter so informative appendices are tagged informdiv1,
+remove XXX XXX from list of 'normative' specs in prose,
+move some references from Other References to Normative References,
+add RFC 1738, 1808, and 2141 to Other References (they are not
+normative since we do not require the processor to enforce any
+rules based on them),
+add reference to 'Fielding draft' (Berners-Lee et al.),
+move notation section to end of body,
+drop URIchar non-terminal and use SkipLit instead,
+lose stray reference to defunct nonterminal 'markupdecls',
+move reference to Aho et al. into appendix (Tim's right),
+add prose note saying that hash marks and fragment identifiers are
+NOT part of the URI formally speaking, and are NOT legal in
+system identifiers (processor 'may' signal an error).
+Work through:
+Tim Bray reacting to James Clark,
+Tim Bray on his own,
+Eve Maler,
+
+NOT DONE YET:
+change binary / text to unparsed / parsed.
+handle James's suggestion about &lt; in attriubte values
+uppercase hex characters,
+namechar list,
+</sitem>
+<sitem>1997-12-01 : JB : add some column-width parameters</sitem>
+<sitem>1997-12-01 : CMSMcQ : begin round of changes to incorporate
+recent WG decisions and other corrections:
+binding sources of character encoding info (27 Aug / 3 Sept),
+correct wording of Faust quotation (restore dropped line),
+drop SDD from EncodingDecl,
+change text at version number 1.0,
+drop misleading (wrong!) sentence about ignorables and extenders,
+modify definition of PCData to make bar on msc grammatical,
+change grammar's handling of internal subset (drop non-terminal markupdecls),
+change definition of includeSect to allow conditional sections,
+add integral-declaration constraint on internal subset,
+drop misleading / dangerous sentence about relationship of
+entities with system storage objects,
+change table body tag to htbody as per EM change to DTD,
+add rule about space normalization in public identifiers,
+add description of how to generate our name-space rules from
+Unicode character database (needs further work!).
+</sitem>
+<sitem>1997-10-08 : TB : Removed %-constructs again, new rules
+for PE appearance.</sitem>
+<sitem>1997-10-01 : TB : Case-sensitive markup; cleaned up
+element-type defs, lotsa little edits for style</sitem>
+<sitem>1997-09-25 : TB : Change to elm's new DTD, with
+substantial detail cleanup as a side-effect</sitem>
+<sitem>1997-07-24 : CMSMcQ : correct error (lost *) in definition
+of ignoreSectContents (thanks to Makoto Murata)</sitem>
+<sitem>Allow all empty elements to have end-tags, consistent with
+SGML TC (as per JJC).</sitem>
+<sitem>1997-07-23 : CMSMcQ : pre-emptive strike on pending corrections:
+introduce the term 'empty-element tag', note that all empty elements
+may use it, and elements declared EMPTY must use it.
+Add WFC requiring encoding decl to come first in an entity.
+Redefine notations to point to PIs as well as binary entities.
+Change autodetection table by removing bytes 3 and 4 from
+examples with Byte Order Mark.
+Add content model as a term and clarify that it applies to both
+mixed and element content.
+</sitem>
+<sitem>1997-06-30 : CMSMcQ : change date, some cosmetic changes,
+changes to productions for choice, seq, Mixed, NotationType,
+Enumeration. Follow James Clark's suggestion and prohibit
+conditional sections in internal subset. TO DO: simplify
+production for ignored sections as a result, since we don't
+need to worry about parsers which don't expand PErefs finding
+a conditional section.</sitem>
+<sitem>1997-06-29 : TB : various edits</sitem>
+<sitem>1997-06-29 : CMSMcQ : further changes:
+Suppress old FINAL EDIT comments and some dead material.
+Revise occurrences of % in grammar to exploit Henry Thompson's pun,
+especially markupdecl and attdef.
+Remove RMD requirement relating to element content (?).
+</sitem>
+<sitem>1997-06-28 : CMSMcQ : Various changes for 1 July draft:
+Add text for draconian error handling (introduce
+the term Fatal Error).
+RE deleta est (changing wording from
+original announcement to restrict the requirement to validating
+parsers).
+Tag definition of validating processor and link to it.
+Add colon as name character.
+Change def of %operator.
+Change standard definitions of lt, gt, amp.
+Strip leading zeros from #x00nn forms.</sitem>
+<sitem>1997-04-02 : CMSMcQ : final corrections of editorial errors
+found in last night's proofreading. Reverse course once more on
+well-formed: Webster's Second hyphenates it, and that's enough
+for me.</sitem>
+<sitem>1997-04-01 : CMSMcQ : corrections from JJC, EM, HT, and self</sitem>
+<sitem>1997-03-31 : Tim Bray : many changes</sitem>
+<sitem>1997-03-29 : CMSMcQ : some Henry Thompson (on entity handling),
+some Charles Goldfarb, some ERB decisions (PE handling in miscellaneous
+declarations. Changed Ident element to accept def attribute.
+Allow normalization of Unicode characters. move def of systemliteral
+into section on literals.</sitem>
+<sitem>1997-03-28 : CMSMcQ : make as many corrections as possible, from
+Terry Allen, Norbert Mikula, James Clark, Jon Bosak, Henry Thompson,
+Paul Grosso, and self. Among other things: give in on "well formed"
+(Terry is right), tentatively rename QuotedCData as AttValue
+and Literal as EntityValue to be more informative, since attribute
+values are the <emph>only</emph> place QuotedCData was used, and
+vice versa for entity text and Literal. (I'd call it Entity Text,
+but 8879 uses that name for both internal and external entities.)</sitem>
+<sitem>1997-03-26 : CMSMcQ : resynch the two forks of this draft, reapply
+my changes dated 03-20 and 03-21. Normalize old 'may not' to 'must not'
+except in the one case where it meant 'may or may not'.</sitem>
+<sitem>1997-03-21 : TB : massive changes on plane flight from Chicago
+to Vancouver</sitem>
+<sitem>1997-03-21 : CMSMcQ : correct as many reported errors as possible.
+</sitem>
+<sitem>1997-03-20 : CMSMcQ : correct typos listed in CMSMcQ hand copy of spec.</sitem>
+<sitem>1997-03-20 : CMSMcQ : cosmetic changes preparatory to revision for
+WWW conference April 1997: restore some of the internal entity
+references (e.g. to docdate, etc.), change character xA0 to &amp;nbsp;
+and define nbsp as &amp;#160;, and refill a lot of paragraphs for
+legibility.</sitem>
+<sitem>1996-11-12 : CMSMcQ : revise using Tim's edits:
+Add list type of NUMBERED and change most lists either to
+BULLETS or to NUMBERED.
+Suppress QuotedNames, Names (not used).
+Correct trivial-grammar doc type decl.
+Rename 'marked section' as 'CDATA section' passim.
+Also edits from James Clark:
+Define the set of characters from which [^abc] subtracts.
+Charref should use just [0-9] not Digit.
+Location info needs cleaner treatment: remove? (ERB
+question).
+One example of a PI has wrong pic.
+Clarify discussion of encoding names.
+Encoding failure should lead to unspecified results; don't
+prescribe error recovery.
+Don't require exposure of entity boundaries.
+Ignore white space in element content.
+Reserve entity names of the form u-NNNN.
+Clarify relative URLs.
+And some of my own:
+Correct productions for content model: model cannot
+consist of a name, so "elements ::= cp" is no good.
+</sitem>
+<sitem>1996-11-11 : CMSMcQ : revise for style.
+Add new rhs to entity declaration, for parameter entities.</sitem>
+<sitem>1996-11-10 : CMSMcQ : revise for style.
+Fix / complete section on names, characters.
+Add sections on parameter entities, conditional sections.
+Still to do: Add compatibility note on deterministic content models.
+Finish stylistic revision.</sitem>
+<sitem>1996-10-31 : TB : Add Entity Handling section</sitem>
+<sitem>1996-10-30 : TB : Clean up term &amp; termdef. Slip in
+ERB decision re EMPTY.</sitem>
+<sitem>1996-10-28 : TB : Change DTD. Implement some of Michael's
+suggestions. Change comments back to //. Introduce language for
+XML namespace reservation. Add section on white-space handling.
+Lots more cleanup.</sitem>
+<sitem>1996-10-24 : CMSMcQ : quick tweaks, implement some ERB
+decisions. Characters are not integers. Comments are /* */ not //.
+Add bibliographic refs to 10646, HyTime, Unicode.
+Rename old Cdata as MsData since it's <emph>only</emph> seen
+in marked sections. Call them attribute-value pairs not
+name-value pairs, except once. Internal subset is optional, needs
+'?'. Implied attributes should be signaled to the app, not
+have values supplied by processor.</sitem>
+<sitem>1996-10-16 : TB : track down &amp; excise all DSD references;
+introduce some EBNF for entity declarations.</sitem>
+<sitem>1996-10-?? : TB : consistency check, fix up scraps so
+they all parse, get formatter working, correct a few productions.</sitem>
+<sitem>1996-10-10/11 : CMSMcQ : various maintenance, stylistic, and
+organizational changes:
+Replace a few literals with xmlpio and
+pic entities, to make them consistent and ensure we can change pic
+reliably when the ERB votes.
+Drop paragraph on recognizers from notation section.
+Add match, exact match to terminology.
+Move old 2.2 XML Processors and Apps into intro.
+Mention comments, PIs, and marked sections in discussion of
+delimiter escaping.
+Streamline discussion of doctype decl syntax.
+Drop old section of 'PI syntax' for doctype decl, and add
+section on partial-DTD summary PIs to end of Logical Structures
+section.
+Revise DSD syntax section to use Tim's subset-in-a-PI
+mechanism.</sitem>
+<sitem>1996-10-10 : TB : eliminate name recognizers (and more?)</sitem>
+<sitem>1996-10-09 : CMSMcQ : revise for style, consistency through 2.3
+(Characters)</sitem>
+<sitem>1996-10-09 : CMSMcQ : re-unite everything for convenience,
+at least temporarily, and revise quickly</sitem>
+<sitem>1996-10-08 : TB : first major homogenization pass</sitem>
+<sitem>1996-10-08 : TB : turn "current" attribute on div type into
+CDATA</sitem>
+<sitem>1996-10-02 : TB : remould into skeleton + entities</sitem>
+<sitem>1996-09-30 : CMSMcQ : add a few more sections prior to exchange
+ with Tim.</sitem>
+<sitem>1996-09-20 : CMSMcQ : finish transcribing notes.</sitem>
+<sitem>1996-09-19 : CMSMcQ : begin transcribing notes for draft.</sitem>
+<sitem>1996-09-13 : CMSMcQ : made outline from notes of 09-06,
+do some housekeeping</sitem>
+</slist>
+</revisiondesc>
+</header>
+<body>
+<div1 id='sec-intro'>
+<head>一般事項</head>
+<!-- <div2 id='sec-scope'>
+ <head>é©ç”¨ç¯„囲</head> -->
+<p>æ‹¡å¼µå¯èƒ½ãª&markup;言語XML(eXtensible Markup Language)ã¯ï¼Œ<termref def="dt-xml-doc">XML文書</termref>ã¨ã„ã†ãƒ‡ãƒ¼ã‚¿ã‚ªãƒ–ジェクトã®ã‚¯ãƒ©ã‚¹ã‚’è¦å®šã—,XML文書を処ç†ã™ã‚‹ãƒ—ログラムã®å‹•ä½œã®ä¸€éƒ¨ã‚’è¦å®šã™ã‚‹ã€‚XMLã¯ï¼ŒSGML(標準一般化&markup;言語,Standard Generalized Markup Language)<bibref ref='ISO8879'/>ã®åˆ¶é™ã—ãŸ&subset;ã¨ã™ã‚‹ã€‚構造上,XML文書ã¯ï¼Œã‹ãªã‚‰ãšSGMLè¦æ ¼ã«é©åˆã™ã‚‹ã€‚</p>
+<p>XML文書ã¯ï¼Œ<termref def="dt-entity">実体</termref>ã¨ã„ã†è¨˜æ†¶å˜ä½ã‹ã‚‰ãªã‚Šï¼Œå®Ÿä½“ã¯ï¼Œ&parsed-data;åˆã¯&unparsed-data;ã‹ã‚‰ãªã‚‹ã€‚&parsed-data;ã¯ï¼Œ<termref def="dt-character">文字</termref>ã‹ã‚‰ãªã‚Šï¼Œãã®ä¸€éƒ¨ã¯ï¼Œæ–‡æ›¸ã®<termref def="dt-chardata">文字データ</termref>を構æˆã—,一部ã¯ï¼Œ<termref def="dt-markup">&markup;</termref>を構æˆã™ã‚‹ã€‚&markup;ã¯ï¼Œæ–‡æ›¸ã®è¨˜æ†¶ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆåŠã³è«–ç†æ§‹é€ ã«ã¤ã„ã¦ã®è¨˜è¿°ã‚’表ã™ç¬¦å·ã¨ã™ã‚‹ã€‚XMLã¯ï¼Œè¨˜æ†¶ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆåŠã³è«–ç†æ§‹é€ ã«ã¤ã„ã¦ã®åˆ¶ç´„æ¡ä»¶ã‚’記述ã™ã‚‹æ©Ÿæ§‹ã‚’æä¾›ã™ã‚‹ã€‚</p>
+<p><termdef id="dt-xml-proc" term="XML&processor;"><term>XML&processor;</term>ã¨ã„ã†ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯ï¼ŒXML文書を読ã¿è¾¼ã¿ï¼Œãã®å†…容åŠã³æ§‹é€ ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’æä¾›ã™ã‚‹ãŸã‚ã«ç”¨ã„る。 </termdef> <termdef id="dt-app" term="&application;">XML&processor;ã¯ï¼Œä»–ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ãŸã‚ã«å‹•ä½œã™ã‚‹ã“ã¨ã‚’å‰æã¨ã—,ãã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’<term>&application;</term>ã¨ã„ã†ã€‚</termdef>ã“ã®&TR-or-Rec;ã¯ï¼ŒXML&processor;ãŒè¡Œã‚ãªã‘ã‚Œã°ãªã‚‰ãªã„振舞ã„ã‚’è¦å®šã™ã‚‹ã€‚ã¤ã¾ã‚Šï¼ŒXMLデータã®èª­è¾¼ã¿æ–¹æ³•ã‚’è¦å®šã—,&application;ã«æä¾›ã™ã‚‹æƒ…報をè¦å®šã™ã‚‹ã€‚</p>
+<!-- </div2> -->
+<div2 id='sec-origin-goals'>
+<head>経緯åŠã³ç›®æ¨™</head>
+<p>1996å¹´ã«World Wide Web Consortium(W3C)ã®ä¸­ã«è¨­ç«‹ã—ãŸXML作業グループ(以å‰ã¯ï¼Œ SGML編集レビュー委員会ã¨å‘¼ã°ã‚ŒãŸ)ãŒï¼ŒXMLを開発ã—ãŸã€‚ã“ã®ä½œæ¥­ã‚°ãƒ«ãƒ¼ãƒ—ã®è­°é•·ã‚’,Sun Microsystemsã®Jon BosakãŒå‹¤ã‚る。W3CãŒçµ„ç¹”ã—,以å‰ã¯SGML作業グループã¨å‘¼ã°ã‚ŒãŸXML SIG(Special Interest Group)も,XMLã®åˆ¶å®šã«éžå¸¸ã«æ´»ç™ºã«å‚ç”»ã—ãŸã€‚
+<!--JISã§ã¯? XML作業グループã®ãƒ¡ãƒ³ãƒã‚’付録ã«ç¤ºã™ã€‚-->Dan Connollyã¯ï¼Œä½œæ¥­ã‚°ãƒ«ãƒ¼ãƒ—ã®W3Cã«ãŠã‘る連絡係を務ã‚ãŸã€‚</p>
+<p>XMLã®è¨­è¨ˆç›®æ¨™ã‚’,次ã«ç¤ºã™ã€‚<ulist>
+<item><p>a) XMLã¯ï¼ŒInternet上ã§ãã®ã¾ã¾ä½¿ç”¨ã§ãる。</p></item>
+<item><p>b) XMLã¯ï¼Œåºƒç¯„囲ã®&application;を支æ´ã™ã‚‹ã€‚</p></item>
+<item><p>c) XMLã¯ï¼ŒSGMLã¨äº’æ›æ€§ã‚’ã‚‚ã¤ã€‚</p></item>
+<item><p>d) XML文書を処ç†ã™ã‚‹ãƒ—ログラムを書ãã“ã¨ã¯ï¼Œå®¹æ˜“ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p></item>
+<item><p>e) XMLã§ã¯ï¼Œã‚ªãƒ—ションã®æ©Ÿèƒ½ã¯ã§ãã‚‹ã ã‘å°‘ãªãã—,一ã¤ã‚‚存在ã—ãªã„ã“ã¨ã‚’目指ã™ã€‚</p></item>
+<item><p>f) XML文書ã¯ï¼Œäººé–“ã«ã¨ã£ã¦èª­ã¿ã‚„ã™ã,å分ã«ç†è§£ã—ã‚„ã™ã„。</p></item>
+<item><p>g) XMLã®è¨­è¨ˆã¯ï¼Œã™ã¿ã‚„ã‹ã«è¡Œãˆãªã‘ã‚Œã°ãªã‚‰ãªã„。</p></item>
+<item><p>h) XMLã®è¨­è¨ˆã¯ï¼ŒåŽ³å¯†åŠã³ç°¡æ½”ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p></item>
+<item><p>i) XML文書ã¯ï¼Œå®¹æ˜“ã«ä½œæˆã§ãる。</p></item>
+<item><p>j) XMLã§ã¯ï¼Œ&markup;ã®æ•°ã‚’減らã™ã“ã¨ã¯ï¼Œé‡è¦ã§ã¯ãªã„。</p></item></ulist>
+</p>
+<p>XML第&XML.version;&version;ã‚’ç†è§£ã—,ãれを処ç†ã™ã‚‹è¨ˆç®—機プログラムを書ããŸã‚ã«å分ãªæƒ…å ±ã¯ï¼Œã“ã®&TR-or-Rec;åŠã³é–¢é€£ã™ã‚‹è¦æ ¼(文字用ã¨ã—ã¦ï¼ŒUnicodeåŠã³ISO/IEC 10646,<!--* XXX for Uniform Resource Identifiers, *-->&language-identification;タグ用ã¨ã—ã¦ï¼Œã‚¤ãƒ³ã‚¿ãƒãƒƒãƒˆ RFC 1766,&language-code;用ã¨ã—ã¦ï¼ŒISO 639,並ã³ã«&country-code;用ã¨ã—ã¦ï¼ŒISO 3166)ã§ï¼Œã™ã¹ã¦ç¤ºã™ã€‚</p>
+<p>ã“ã®&version;ã®XMLã®è¦å®š<!-- (&doc.date;) -->ã¯ï¼Œå…¬é–‹ãƒ¬ãƒ“ューåŠã³è­°è«–を目的ã¨ã™ã‚‹ã€‚テキストåŠã³æ³•å¾‹ä¸Šã®æ³¨æ„を改変ã—ãªã„é™ã‚Šï¼Œè‡ªç”±ã«é…布ã—ã¦ã‚‚よã„。</p>
+</div2>
+<div2 id='sec-terminology'>
+<head>定義</head>
+<p>XML文書ã®è¦å®šã®ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ç”¨èªžã¯ï¼Œã“ã®&TR-or-Rec;内ã§å®šç¾©ã™ã‚‹ã€‚次ã«ç¤ºã™èªžå¥ã¯ï¼Œãれらã®ç”¨èªžã‚’定義ã™ã‚‹ãŸã‚,åŠã³XML&processor;ã®å‹•ãã‚’è¦å®šã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã€‚
+<glist>
+<gitem>
+<label>1.2.1 ã—ã¦ã‚‚よã„(may)</label>
+<def><p><termdef id="dt-may" term="ã—ã¦ã‚‚よã„">é©åˆã™ã‚‹æ–‡æ›¸åˆã¯XML&processor;ã¯ï¼Œè¨˜è¿°ã•ã‚ŒãŸã¨ãŠã‚Šã«å‹•ä½œã—ã¦ã‚‚よã„ãŒï¼Œãã®ã¨ãŠã‚Šã«ã™ã‚‹å¿…è¦ã¯ãªã„。</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.2 ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„(must)</label>
+<def><p>é©åˆã™ã‚‹æ–‡æ›¸åˆã¯XML&processor;ã¯ï¼Œè¨˜è¿°ã•ã‚ŒãŸã¨ãŠã‚Šã«å‹•ä½œã™ã‚‹ã“ã¨ãŒè¦æ±‚ã•ã‚Œã‚‹ã€‚ãã†ã§ãªã‘ã‚Œã°ï¼Œ&error;ã¨ã™ã‚‹ã€‚<!-- do NOT change this! this is what defines a violation ofa 'must' clause as 'an error'. -MSM -->
+</p></def>
+</gitem>
+<gitem>
+<label>1.2.3 &error;(error)</label>
+<def><p><termdef id="dt-error" term="&error;">ã“ã®&TR-or-Rec;ãŒå®šã‚ã‚‹è¦å‰‡ã«å¯¾ã™ã‚‹é•å。çµæžœã¯å®šç¾©ã—ãªã„。é©åˆã™ã‚‹ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œ&error;を検出ã—ã¦å ±å‘Šã—ã¦ã‚‚よã,&error;ã‹ã‚‰å›žå¾©ã—ã¦ã‚‚よã„。</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.4 &fatal-error;(fatal error)</label>
+<def><p><termdef id="dt-fatal" term="&fatal-error;">é©åˆã™ã‚‹<termref def="dt-xml-proc">XML&processor;</termref>ãŒæ¤œå‡ºã—ãªã‘ã‚Œã°ãªã‚‰ãšï¼Œ&application;ã«å ±å‘Šã—ãªã‘ã‚Œã°ãªã‚‰ãªã„&error;。&fatal-error;を発見ã—ãŸã‚ã¨ï¼Œ&processor;ã¯ï¼Œãれ以é™ã®&error;を探ã™ãŸã‚ã«ãƒ‡ãƒ¼ã‚¿å‡¦ç†ã‚’続行ã—ã¦ã‚‚よã,&error;を発見ã—ãŸå ´åˆã¯ï¼Œãã®&error;ã‚’&application;ã«å ±å‘Šã—ã¦ã‚‚よã„。&error;訂正をサãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã«ï¼Œ&processor;ã¯ï¼Œæœªå‡¦ç†ãƒ‡ãƒ¼ã‚¿(文字データåŠã³&markup;ã®æ··åœ¨ã—ãŸã‚‚ã®)を文書ã‹ã‚‰å–り出ã—,&application;ã«æ¸¡ã—ã¦ã‚‚よã„。ã—ã‹ã—,一度,&fatal-error;を検出ã—ãŸã‚‰ï¼Œ&processor;ã¯ï¼Œé€šå¸¸ã®å‡¦ç†ã‚’続行ã—ã¦ã¯ãªã‚‰ãªã„。ã¤ã¾ã‚Šï¼Œ&processor;ã¯ï¼Œæ–‡å­—データåŠã³æ–‡æ›¸ã®è«–ç†æ§‹é€ ã«ã¤ã„ã¦ã®æƒ…報を,通常ã®æ–¹æ³•ã§&application;ã«æ¸¡ã—続ã‘ã¦ã¯ãªã‚‰ãªã„。</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.5 &at-user-option;(at user option)</label>
+<def><p>é©åˆã™ã‚‹ã‚½ãƒ•ãƒˆã‚¦ã‚¨ã‚¢ã¯ï¼Œè¨˜è¿°ã•ã‚ŒãŸã¨ãŠã‚Šã«æŒ¯ã‚‹èˆžã£ã¦ã‚‚よã„(may),åˆã¯æŒ¯ã‚‹èˆžã‚ãªãã¦ã¯ãªã‚‰ãªã„(must)(文章中ã®åŠ©å‹•è©žã«ã‚ˆã‚‹ã€‚)。ãã®ã¨ãŠã‚Šã«æŒ¯ã‚‹èˆžã†å ´åˆã¯ï¼Œè¨˜è¿°ã•ã‚ŒãŸæŒ¯èˆžã„ã‚’é¸æŠžåˆã¯æ‹’å¦ã™ã‚‹æ‰‹æ®µã‚’&user;ã«æä¾›ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p></def>
+</gitem>
+<gitem>
+<label>1.2.6 &validity;制約(validity constraint)</label>
+<def><p>ã™ã¹ã¦ã®<termref def="dt-valid">&valid;ãª</termref>XML文書ã«é©ç”¨ã™ã‚‹è¦å‰‡ã€‚&validity;制約ã®é•åã¯ï¼Œ&error;ã¨ã™ã‚‹ã€‚&at-user-option;,<termref def="dt-validating">検証を行ã†XML&processor;</termref>ã¯ï¼Œã“ã®&error;を報告ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p></def>
+</gitem>
+<gitem>
+<label>1.2.7 &well-formed;制約(well-formedness constraint)</label>
+<def><p>ã™ã¹ã¦ã®<termref def="dt-wellformed">&well-formed;</termref>ã®XML文書ã«é©ç”¨ã™ã‚‹è¦å‰‡ã€‚&well-formed;制約ã®é•åã¯ï¼Œ<termref def="dt-fatal">&fatal-error;</termref>ã¨ã™ã‚‹ã€‚</p></def>
+</gitem>
+<gitem>
+<label>1.2.8 &match;(match)</label>
+<def><p>a) <termdef id="dt-match" term="&match;">&string;åˆã¯åå‰ã®&match; 比較ã™ã‚‹äºŒã¤ã®&string;åˆã¯åå‰ã¯ï¼ŒåŒä¸€ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„。ISO/IEC 10646ã«ãŠã„ã¦ï¼Œè¤‡æ•°ã®è¡¨ç¾ãŒå¯èƒ½ãªæ–‡å­—[例ãˆã°ï¼Œ&composed-form;åŠã³åŸºåº•+&diacritical-mark;(ダイアクリティカルマーク)å½¢å¼ï¼½ã¯ï¼Œã©ã¡ã‚‰ã®&string;ã‚‚åŒã˜è¡¨ç¾ã®ã¨ãã«é™ã‚Šï¼Œ&match;ã™ã‚‹ã€‚&at-user-option;,&processor;ã¯ï¼Œãã®æ–‡å­—を標準形ã«æ­£è¦åŒ–ã—ã¦ã‚‚よã„。比較ã®ã¨ãã€å¤§æ–‡å­—ã¨å°æ–‡å­—ã¨ã®åŒºåˆ¥ã‚’ã™ã‚‹ã€‚<!-- Note that no processing of characters with respect to case is part of the matching process. -->&lt;BR>b) &string;ã¨æ–‡æ³•ä¸­ã®è¦å‰‡ã¨ã®&match; ã‚る生æˆè¦å‰‡ã‹ã‚‰ç”Ÿæˆã™ã‚‹è¨€èªžã«ï¼Œã‚ã‚‹&string;ãŒå±žã™ã‚‹ã¨ã,ã“ã®&string;ã¯ï¼Œã“ã®ç”Ÿæˆè¦å‰‡ã«&match;ã™ã‚‹ã¨ã„ã†ã€‚&lt;BR>c) 内容ã¨å†…容モデルã¨ã®&match; ã‚ã‚‹è¦ç´ ãŒï¼Œ<titleref href='elementvalid'>è¦ç´ ã®&validity;</titleref>ã®åˆ¶ç´„ã«ç¤ºã™æ„味ã§é©åˆã™ã‚‹ã¨ã,ã“ã®è¦ç´ ã¯ï¼Œãã®å®£è¨€ã«&match;ã™ã‚‹ã¨ã„ã†ã€‚</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.9 互æ›æ€§ã®ãŸã‚(for compatibility)</label>
+<def><p><termdef id="dt-compat" term="互æ›æ€§ã®ãŸã‚">XMLã®æ©Ÿèƒ½ã§ã‚ã£ã¦ï¼ŒXMLãŒSGMLã¨äº’æ›ã§ã‚ã‚‹ã“ã¨ã‚’ä¿è¨¼ã™ã‚‹ãŸã‚ã ã‘ã«å°Žå…¥ã•ã‚Œã‚‹ã‚‚ã®ã€‚</termdef></p></def>
+</gitem>
+<gitem>
+<label>1.2.10 相互é‹ç”¨æ€§ã®ãŸã‚(for interoperability)</label>
+<def><p><termdef id="dt-interop" term="相互é‹ç”¨æ€§ã®ãŸã‚">拘æŸåŠ›ã¯ã‚‚ãŸãªã„推奨事項。&WebSGML;以å‰ã‹ã‚‰å­˜åœ¨ã™ã‚‹SGML&processor;ãŒï¼ŒXML文書を処ç†ã§ãã‚‹å¯èƒ½æ€§ã‚’高ã‚ã‚‹ãŸã‚ã«å–り入れるもã®ã€‚</termdef></p></def>
+</gitem>
+</glist>
+</p>
+</div2>
+</div1>
+<!-- &Docs; -->
+<div1 id='sec-documents'>
+<head>文書</head>
+<p><termdef id="dt-xml-doc" term="XML文書">
+<!-- A textual object -->
+ã“ã®&TR-or-Rec;ã§å®šç¾©ã™ã‚‹æ„味ã§ï¼Œ<termref def="dt-wellformed">&well-formed;</termref>ã¨ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã‚ªãƒ–ジェクトを,<term>XML文書</term>ã¨ã„ã†ã€‚&well-formed;ã®XML文書ãŒï¼Œã•ã‚‰ã«ï¼Œã‚る制約æ¡ä»¶ã‚’満足ã™ã‚Œã°ï¼Œ<termref def="dt-valid">&valid;</termref>ãªXML文書ã¨ã™ã‚‹ã€‚
+</termdef></p>
+
+<!-- why this div? -TB
+<div2 id='sec-log-phys'>
+<head>Logical and Physical Structure</head> -->
+
+<p>ã„ãšã‚Œã®XML文書も,論ç†æ§‹é€ åŠã³ç‰©ç†æ§‹é€ ã‚’ã‚‚ã¤ã€‚物ç†çš„ã«ã¯ï¼Œæ–‡æ›¸ã¯ï¼Œ<termref def="dt-entity">実体</termref>ã¨å‘¼ã¶å˜ä½ã‹ã‚‰ãªã‚‹ã€‚ã‚る実体ã¯ï¼Œæ–‡æ›¸å†…ã«ä»–ã®å®Ÿä½“ã‚’å«ã‚€ãŸã‚ã«ï¼Œãã®ä»–ã®å®Ÿä½“ã‚’<termref def="dt-entref">å‚ç…§</termref>ã—ã¦ã‚‚よã„。文書ã¯ï¼Œâ€œãƒ«ãƒ¼ãƒˆâ€ã™ãªã‚ã¡<termref def="dt-docent">文書実体</termref>ã‹ã‚‰å§‹ã¾ã‚‹ã€‚è«–ç†çš„ã«ã¯ï¼Œæ–‡æ›¸ã¯ï¼Œå®£è¨€ï¼Œè¦ç´ ï¼Œã‚³ãƒ¡ãƒ³ãƒˆï¼Œæ–‡å­—å‚ç…§åŠã³å‡¦ç†å‘½ä»¤ã‚’å«ã¿ï¼Œã“れらã™ã¹ã¦ã¯ï¼Œæ–‡æ›¸å†…ã§æ˜Žç¤ºçš„ãª&markup;ã«ã‚ˆã£ã¦ç¤ºã™ã€‚è«–ç†æ§‹é€ åŠã³ç‰©ç†æ§‹é€ ã¯ï¼Œ<titleref href="wf-entities">以é™</titleref>ã«ç¤ºã™ã¨ãŠã‚Šã«ï¼ŒåŽ³å¯†ã«å…¥ã‚Œå­ã«ãªã£ã¦ã„ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+
+<!--
+</div2> -->
+
+<div2 id='sec-well-formed'>
+<head>&well-formed;ã®XML文書</head>
+<p><termdef id="dt-wellformed" term="&well-formed;">ã‚るテキストオブジェクトãŒï¼Œæ¬¡ã®ã„ãšã‚Œã‹ã®ã¨ã,ãã®ãƒ†ã‚­ã‚¹ãƒˆã‚ªãƒ–ジェクトを&well-formed;ã®XML文書ã¨å‘¼ã¶ã€‚</termdef>
+<ulist>
+<item><p>a) 全体ã¨ã—ã¦ï¼Œ<nt def='NT-document'>document</nt>ã¨ã„ã†ãƒ©ãƒ™ãƒ«ã‚’ã‚‚ã¤ç”Ÿæˆè¦å‰‡ã«&match;ã™ã‚‹ã€‚</p></item>
+<item><p>b) ã“ã®&TR-or-Rec;ã§å®šç¾©ã™ã‚‹ï¼Œã™ã¹ã¦ã®&well-formed;制約ã«å¾“ã†ã€‚</p>
+</item>
+<item><p>c) ãã‚Œãžã‚Œã®<termref def='dt-parsedent'>&parsed-entity;</termref>ãŒï¼Œ<titleref href='wf-entities'>&well-formed;</titleref>ã¨ãªã‚‹ã€‚</p></item>
+</ulist></p>
+<p>
+<scrap lang='ebnf' id='document'>
+<head>文書</head>
+<prod id='NT-document'><lhs>document</lhs>
+<rhs><nt def='NT-prolog'>prolog</nt>
+<nt def='NT-element'>element</nt>
+<nt def='NT-Misc'>Misc</nt>*</rhs></prod>
+</scrap>
+</p>
+<p><nt def="NT-document">document</nt>生æˆè¦å‰‡ã«&match;ã™ã‚‹ã¨ã¯ï¼Œæ¬¡ã‚’æ„味ã™ã‚‹ã€‚
+<ulist>
+<item><p>a) 一ã¤ä»¥ä¸Šã®<termref def="dt-element">è¦ç´ </termref>ã‚’å«ã‚€ã€‚</p>
+</item>
+
+<!--* N.B. some readers (notably JC) find the following
+paragraph awkward and redundant. I agree it's logically redundant:
+it *says* it is summarizing the logical implications of
+matching the grammar, and that means by definition it's
+logically redundant. I don't think it's rhetorically
+redundant or unnecessary, though, so I'm keeping it. It
+could however use some recasting when the editors are feeling
+stronger. -MSM *-->
+
+<item><p>b) <termdef id="dt-root" term="ルートè¦ç´ "><term>ルート</term>åˆã¯æ–‡æ›¸è¦ç´ ã¨ã„ã†è¦ç´ ãŒä¸€ã¤ã ã‘存在ã—,ã“ã‚Œã¯ï¼Œä»–ã®è¦ç´ ã®<termref def="dt-content">内容</termref>ã«å«ã¾ã‚Œãªã„。</termdef>ã“れ以外ã®ã™ã¹ã¦ã®è¦ç´ ã¯ï¼Œãã®é–‹å§‹ã‚¿ã‚°ãŒä»–ã®è¦ç´ ã®å†…容ã«å«ã¾ã‚Œã‚Œã°ï¼Œå¯¾å¿œã™ã‚‹çµ‚了タグもåŒã˜è¦ç´ ã®å†…容ã«å«ã¾ã‚Œã‚‹ã€‚ã¤ã¾ã‚Šï¼Œè¦ç´ ã¯ï¼Œé–‹å§‹ã‚¿ã‚°åŠã³çµ‚了タグã«ã‚ˆã£ã¦åŒºåˆ‡ã‚‰ã‚Œï¼Œå…¥ã‚Œå­æ§‹é€ ã‚’ãªã™ã€‚
+</p></item>
+</ulist>
+</p>
+<p><termdef id="dt-parentchild" term="親è¦ç´ /å­è¦ç´ ">ã“れらã®çµæžœã¨ã—ã¦ï¼Œæ–‡æ›¸å†…ã®ã©ã®éžãƒ«ãƒ¼ãƒˆè¦ç´ <code>C</code>ã«å¯¾ã—ã¦ã‚‚,ã‚ã‚‹ä»–ã®è¦ç´ <code>P</code>ãŒå­˜åœ¨ã—,<code>C</code>ã¯ï¼Œ<code>P</code>ã®å†…容ã«å«ã¾ã‚Œã‚‹ãŒï¼Œ<code>P</code>ã®å†…容ã«å«ã¾ã‚Œã‚‹ä»–ã®è¦ç´ ã«å«ã¾ã‚Œã‚‹ã“ã¨ã¯ãªã„。ã“ã®ã¨ã,<code>P</code>ã‚’<code>C</code>ã®<code>親</code>ã¨ã„ã„,<code>C</code>ã‚’<code>P</code>ã®<code>å­</code>ã¨ã„ã†ã€‚</termdef></p>
+</div2>
+<div2 id="charsets">
+<head>文字</head>
+<p>
+
+<!--The data stored in an XML <termref def="dt-entity">entity</termref> is
+either <termref def="dt-text">parsed</termref> or <termref
+def="dt-unparsed">unparsed</termref>. -->
+
+<termdef id="dt-text" term="テキスト">&parsed-entity;ã¯ï¼Œ<term>テキスト</term>(<termref def="dt-character">文字</termref>ã®ä¸¦ã³ã§ã‚ã£ã¦ï¼Œ&markup;åˆã¯æ–‡å­—データを表ã—ã¦ã‚‚よã„。)ã‚’å«ã‚€ã€‚</termdef><termdef id="dt-character" term="文字"><term>文字</term>ã¯ï¼Œãƒ†ã‚­ã‚¹ãƒˆã®æœ€å°å˜ä½ã§ã‚ã£ã¦ï¼ŒISO/IEC 10646<bibref ref="ISO10646"/>ã«è¦å®šã•ã‚Œã‚‹ã€‚<!--Users may extend the ISO/IEC 10646 character repertoire by exploiting the private use areas. -->許容ã™ã‚‹æ–‡å­—ã¯ï¼Œã‚¿ãƒ–,改行,復帰並ã³ã«UnicodeåŠã³ISO/IEC 10646ãŒè¨±å®¹ã™ã‚‹å›³å½¢æ–‡å­—ã¨ã™ã‚‹ã€‚</termdef>
+<scrap lang="ebnf" id="char32">
+<head>文字ã®ç¯„囲</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id="NT-Char"><lhs>Char</lhs>
+<rhs>#x9 | #xA | #xD | [#x20-#D7FF] | [#xE000-#xFFFD]
+| [#x10000-#x10FFFF]</rhs>
+<com>ä»»æ„ã®Unicode文字。ãŸã ã—,&surrogate-blocks;,FFFEåŠã³FFFFã¯é™¤ã。</com>
+</prod>
+</prodgroup>
+</scrap>
+</p>
+<p>&character-value;をビットパタンã«ç¬¦å·åŒ–ã™ã‚‹æ©Ÿæ§‹ã¯ï¼Œå®Ÿä½“ã”ã¨ã«é•ã£ã¦ã‚‚よã„。ã™ã¹ã¦ã®XML&processor;ã¯ï¼ŒISO/IEC 10646ã®UTF-8符å·åŒ–åŠã³UTF-16符å·åŒ–ã‚’å—ã‘付ã‘ãªã‘ã‚Œã°ãªã‚‰ãªã„。二ã¤ã®ã©ã¡ã‚‰ãŒç”¨ã„られã¦ã„ã‚‹ã‹ã‚’明示ã™ã‚‹ãŸã‚ã®æ©Ÿæ§‹ï¼ŒåŠã³ä»–ã®ç¬¦å·åŒ–方法を利用ã™ã‚‹ãŸã‚ã®æ©Ÿæ§‹ã¯ï¼Œ<titleref href='charencoding'>文字ã®ç¬¦å·åŒ–</titleref>ã«è¨˜è¿°ã™ã‚‹ã€‚</p>
+<p>ã©ã®ç¬¦å·åŒ–方法を用ã„ã‚‹ã‹ã«é–¢ä¿‚ãªã,ISO/IEC 10646ã®æ–‡å­—集åˆã«ã‚ã‚‹ã™ã¹ã¦ã®æ–‡å­—ã¯ï¼Œãã®UCS-4&code-value;<!-- bit string. -->ã¨ç­‰ä¾¡ãª10進数åˆã¯16進数ã«ã‚ˆã£ã¦ï¼Œå‚ç…§ã§ãる。</p>
+</div2>
+
+<div2 id='sec-common-syn'>
+<head>共通ã®æ§‹æ–‡æ§‹æˆå­</head>
+
+<p>2.3ã§ã¯ï¼Œæ–‡æ³•å†…ã§åºƒã使用ã™ã‚‹ã„ãã¤ã‹ã®è¨˜å·ã‚’定義ã™ã‚‹ã€‚</p>
+<p><nt def="NT-S">S</nt> (空白)ã¯ï¼Œä¸€ã¤è‹¥ã—ãã¯è¤‡æ•°ã®&space-character;(#x20),復帰,改行åˆã¯ã‚¿ãƒ–ã‹ã‚‰æˆã‚‹ã€‚
+
+<scrap lang="ebnf" id='white'>
+<head>空白</head>
+<prodgroup pcw2="4" pcw4="17.5" pcw5="11">
+<prod id='NT-S'><lhs>S</lhs>
+<rhs>(#x20 | #x9 | #xD | #xA)+</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>便宜上,文字を,&letter;,数字åˆã¯ä»–ã®æ–‡å­—ã«åˆ†é¡žã™ã‚‹ã€‚&letter;ã¯ï¼Œã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆçš„åˆã¯è¡¨éŸ³çš„ã§ã‚る基本文字(一ã¤åˆã¯è¤‡æ•°ã®&combining-character;ãŒï¼Œå¾Œã«ç¶šãã“ã¨ã‚‚ã‚る。),&ideographic;ã‹ã‚‰æˆã‚‹ã€‚
+<!--
+Certain layout and format-control characters defined by ISO/IEC 10646
+should be ignored when recognizing identifiers; these are defined by the
+classes <nt def='NT-Ignorable'>Ignorable</nt> and <nt def='NT-
+Extender'>Extender</nt>.
+-->
+å„クラスã«ãŠã‘る実際ã®æ–‡å­—ã«ã¤ã„ã¦ã®å®Œå…¨ãªå®šç¾©ã¯ï¼Œ<titleref href='CharClasses'>文字クラス</titleref>ã«é–¢ã™ã‚‹ä»˜éŒ²ã«è¦å®šã™ã‚‹ã€‚</p>
+<p><termdef id="dt-name" term="Name"><term>Name</term>ã¯ï¼Œ&letter;åˆã¯ã„ãã¤ã‹ã®åŒºåˆ‡ã‚Šæ–‡å­—ã®ä¸€ã¤ã§å§‹ã¾ã‚Šï¼Œãã®å¾Œã«&letter;,数字,ãƒã‚¤ãƒ•ãƒ³ï¼Œä¸‹ç·šï¼Œã‚³ãƒ­ãƒ³åˆã¯ãƒ”リオドãŒç¶šã(ã“れらをåå‰æ–‡å­—ã¨ã„ã†ã€‚)。</termdef>&string;"<code>xml</code>"åˆã¯<code>(('X'|'x') ('M'|'m') ('L'|'l'))</code>ã«&match;ã™ã‚‹ä»»æ„ã®&string;ã§å§‹ã¾ã‚‹åå‰ã¯ï¼Œã“ã®&TR-or-Rec;ã®ç¾åœ¨ã®ç‰ˆåˆã¯å°†æ¥ã®ç‰ˆã§ã®æ¨™æº–化ã®ãŸã‚ã«äºˆç´„ã™ã‚‹ã€‚
+</p>
+<note>
+<p>XMLã®åå‰ã®ä¸­ã®ã‚³ãƒ­ãƒ³ã¯ï¼Œåå‰ç©ºé–“ã§ã®å®Ÿé¨“ã®ãŸã‚ã«äºˆç´„ã™ã‚‹ã€‚コロンã®æ„味ã¯ï¼Œå°†æ¥ã®ã‚る時点ã§æ¨™æº–化ã™ã‚‹ã‚‚ã®ã¨ã—,ãã®ã¨ãã«ã¯ï¼Œå®Ÿé¨“çš„ãªç›®çš„ã§ã‚³ãƒ­ãƒ³ã‚’使用ã™ã‚‹æ–‡æ›¸ã‚’æ›´æ–°ã™ã‚‹å¿…è¦ãŒç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚る。XMLã§æŽ¡ç”¨ã™ã‚‹åå‰ç©ºé–“ã®æ©Ÿæ§‹ãŒï¼ŒåŒºåˆ‡ã‚Šå­ã¨ã—ã¦å®Ÿéš›ã«ã‚³ãƒ­ãƒ³ã‚’使用ã™ã‚‹ã¨ã„ã†ä¿è¨¼ã¯ãªã„。事実上,ã“ã‚Œã¯ï¼Œåå‰ç©ºé–“ã®å®Ÿé¨“ã®ä¸€ã¤ã¨ã—ã¦ä»¥å¤–ã«ã¯ï¼ŒXMLã®åå‰ã®ä¸­ã§ã‚³ãƒ­ãƒ³ã‚’使用ã—ãªã„ã»ã†ãŒã‚ˆã„ã“ã¨ã‚’æ„味ã™ã‚‹ã€‚ã—ã‹ã—,XML&processor;ã¯ï¼Œåå‰æ–‡å­—ã¨ã—ã¦ã‚³ãƒ­ãƒ³ã‚’å—ã‘付ã‘ã‚‹ã“ã¨ãŒæœ›ã¾ã—ã„。
+</p>
+</note>
+<p>
+<nt def='NT-Nmtoken'>Nmtoken</nt> (åå‰&token;)ã¯ï¼Œåå‰æ–‡å­—ã§æ§‹æˆã™ã‚‹åˆ—ã¨ã™ã‚‹ã€‚
+<scrap lang='ebnf'>
+<head>åå‰åŠã³&token;</head>
+<!--
+<prod id='NT-MiscName'><lhs>MiscName</lhs>
+<rhs></rhs>
+</prod>-->
+<prod id='NT-NameChar'><lhs>NameChar</lhs>
+<rhs><nt def="NT-Letter">Letter</nt>
+| <nt def='NT-Digit'>Digit</nt>
+<!--| <nt def='NT-MiscName'>MiscName</nt>-->
+| '.' | '-' | '_' | ':'
+| <nt def='NT-CombiningChar'>CombiningChar</nt>
+<!-- | <nt def='NT-Ignorable'>Ignorable</nt> -->
+| <nt def='NT-Extender'>Extender</nt></rhs>
+</prod>
+<prod id='NT-Name'><lhs>Name</lhs>
+<rhs>(<nt def='NT-Letter'>Letter</nt> | '_' | ':')
+(<nt def='NT-NameChar'>NameChar</nt>)*</rhs></prod>
+<prod id='NT-Names'><lhs>Names</lhs>
+<rhs><nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>)*</rhs></prod>
+<prod id='NT-Nmtoken'><lhs>Nmtoken</lhs>
+<rhs>(<nt def='NT-NameChar'>NameChar</nt>)+</rhs></prod>
+<prod id='NT-Nmtokens'><lhs>Nmtokens</lhs>
+<rhs><nt def='NT-Nmtoken'>Nmtoken</nt> (<nt def='NT-S'>S</nt> <nt
+def='NT-Nmtoken'>Nmtoken</nt>)*</rhs></prod>
+</scrap>
+</p>
+<p>&literal;データã¯ï¼Œå¼•ç”¨ç¬¦ã§å›²ã¾ã‚ŒãŸ&string;ã¨ã—,ãã®åˆ—ã®åŒºåˆ‡ã‚Šå­ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹å¼•ç”¨ç¬¦ã¯å«ã¾ãªã„。&literal;ã¯ï¼Œå†…部実体(<nt def='NT-EntityValue'>EntityValue</nt>),属性値(<nt def='NT-AttValue'>AttValue</nt>),外部&identifier;(<nt def="NT-SystemLiteral">SystemLiteral</nt>)ã®å†…容ã®æŒ‡å®šã«ä½¿ç”¨ã™ã‚‹ã€‚目的ã«ã‚ˆã£ã¦ã¯ï¼Œ&literal;全体を,ãã®ä¸­ã®&markup;ã®èµ°æŸ»ã‚’è¡Œãªã‚ãšã«ï¼Œã‚¹ã‚­ãƒƒãƒ—ã™ã‚‹ã“ã¨ãŒã‚ã‚‹(<nt def='NT-SkipLit'>SkipLit</nt>。)。
+<scrap lang='ebnf'>
+<head>&literal;</head>
+<!-- is marked section end legal in entity values etc.?
+James says yes. Handbook page 392, sec. 10.4 seems to me to say no.
+If James is right, leave as is. Otherwise, uncomment
+the next comment and ...
+-->
+<!--
+<prod id='NT-EntityValue'><lhs>EntityValue</lhs>
+<rhs>' " '
+(([^%&amp;"]
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+(([^%&amp;']
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+" ' "</rhs>
+</prod>
+<prod id='NT-AttValue'><lhs>AttValue</lhs>
+<rhs>'"'
+(([^&lt;&amp;"]
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+(([^&lt;&amp;']
+| <nt def='NT-Reference'>Reference</nt>)*
+- (<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-char'>Char</nt>*))
+" ' "</rhs>
+<wfc def="CleanAttrVals"/>
+</prod>
+-->
+<!-- ... and comment out the following, down to ... -->
+<prod id='NT-EntityValue'><lhs>EntityValue</lhs>
+<rhs>' " '
+([^%&amp;"]
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+([^%&amp;']
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-Reference'>Reference</nt>)*
+" ' "</rhs>
+</prod>
+<prod id='NT-AttValue'><lhs>AttValue</lhs>
+<rhs>' " '
+([^&lt;&amp;"]
+| <nt def='NT-Reference'>Reference</nt>)*
+' " '
+</rhs>
+<rhs>|&nbsp;
+" ' "
+([^&lt;&amp;']
+| <nt def='NT-Reference'>Reference</nt>)*
+" ' "</rhs>
+<!--<wfc def="WF-Attvaldelim"/>-->
+</prod>
+<!-- ... down to here. -->
+<prod id="NT-SystemLiteral"><lhs>SystemLiteral</lhs>
+<rhs><nt def='NT-SkipLit'>SkipLit</nt></rhs>
+</prod>
+<!-- <prod id="NT-URIchar"><lhs>URIchar</lhs>
+<rhs><com>See <loc href="http://www.w3.org/XXX">XXX</loc></com>
+</rhs></prod>
+-->
+<prod id="NT-PubidLiteral"><lhs>PubidLiteral</lhs>
+<rhs>' " ' <nt def='NT-PubidChar'>PubidChar</nt>*
+' " '
+| " ' " (<nt def='NT-PubidChar'>PubidChar</nt> - " ' ")* " ' "</rhs>
+</prod>
+<prod id="NT-PubidChar"><lhs>PubidChar</lhs>
+<rhs>#x20 | #xD | #xA
+|&nbsp;[a-zA-Z0-9]
+|&nbsp;[-'()+,./:=?]</rhs>
+</prod>
+<prod id="NT-SkipLit"><lhs>SkipLit</lhs>
+<rhs>(' " ' [^"]* ' " ')
+|&nbsp;(" ' " [^']* " ' ")</rhs>
+</prod>
+<!-- alternate form, making ms end illegal: -->
+<!--
+<prod id="NT-SkipLit"><lhs>SkipLit</lhs>
+<rhs>(' " ' ([^"]* - ([^"]* ']]&gt;' [^"]*)) ' " ')
+|&nbsp;(" ' " ([^']* - ([^']* ']]&gt;' [^']*)) " ' ")</rhs>
+</prod>
+-->
+</scrap>
+</p>
+<!--
+<wfcnote id="WF-Attvaldelim">
+<head>Delimiters in Attribute Values</head>
+<p>After the expansion of character and entity references,
+an attribute value must not contain a "<code>&lt;</code>"
+or "<code>&amp;</code>" character unless that character was
+introduced by the expansion of a character reference
+or one of the entities &magicents;.</p>
+</wfcnote>-->
+<!--
+This is not quite right: &lt; should be legal, should it not?
+Suppress this WFC until we get it right.
+-->
+<!-- Henry Thompson suggests (in substance, not form: the wording needs
+to be clarified):
+"Cooked Attribute values must not contain &lt; &amp; or the
+quote which closed their uncooked literal,
+unless arising from the expansion of a character reference or
+magic reference
+directly contained in their uncooked literal."
+I'm not sure I agree with this rule, but it's at least coherent,
+which is more than I can say for my attempt.
+-->
+</div2>
+
+<div2 id='syntax'>
+<head>文字データåŠã³&markup;</head>
+<p><termref def='dt-text'>テキスト</termref>ã¯ï¼Œ<termref def="dt-chardata">文字データ</termref>åŠã³&markup;ãŒæ··åœ¨ã™ã‚‹ã‚‚ã®ã¨ã—ã¦æ§‹æˆã™ã‚‹ã€‚<termdef id="dt-markup" term="Markup"><term>&markup;</term>ã¯ï¼Œ<termref def="dt-stag">開始タグ</termref>,<termref def="dt-etag">終了タグ</termref>,<termref def="dt-empty">空è¦ç´ </termref>,<termref def="dt-entref">実体å‚ç…§</termref>,<termref def="dt-charref">文字å‚ç…§</termref>,<termref def="dt-comment">コメント</termref>,<termref def="dt-cdsection">CDATAセクション</termref> ã®åŒºåˆ‡ã‚Šå­ï¼Œ<termref def="dt-doctype">文書型宣言</termref>åŠã³<termref def="dt-pi">処ç†å‘½ä»¤</termref>ã®å½¢ã‚’å–る。
+</termdef>
+</p>
+<p><termdef id="dt-chardata" term="Character Data">&markup;ã§ã¯ãªã„ã™ã¹ã¦ã®ãƒ†ã‚­ã‚¹ãƒˆã¯ï¼Œæ–‡æ›¸ã®<term>文字データ</term>を構æˆã™ã‚‹ã€‚</termdef></p>
+<p>アンパサンド文字 (&amp;)åŠã³&left-angle-bracket; (&lt;)ã¯ï¼Œ&markup;ã®åŒºåˆ‡ã‚Šå­ã¨ã—ã¦ï¼Œåˆã¯<termref def="dt-comment">コメント</termref>,<termref def="dt-pi">処ç†å‘½ä»¤</termref>è‹¥ã—ãã¯<termref def="dt-cdsection">CDATAセクション</termref>内ã§ä½¿ç”¨ã™ã‚‹å ´åˆã«<emph>ã ã‘</emph>,ãã®ã¾ã¾ã®å½¢ã§å‡ºç¾ã—ã¦ã‚ˆã„。ã“れらã®æ–‡å­—ã¯ï¼Œå†…部実体宣言ã®<termref def='dt-litentval'>&literal;実体値</termref>内ã«è¨˜è¿°ã—ã¦ã‚‚よã„。 詳ã—ãã¯ï¼Œ<titleref href='wf-entities'>&well-formed;ã®å®Ÿä½“</titleref>ã«é–¢ã™ã‚‹è¦å®šã‚’å‚照。<!-- FINAL EDIT: restore internal entity decl or leave it out. -->ã“れらã®æ–‡å­—ãŒä»–ã®éƒ¨åˆ†ã§å¿…è¦ãªå ´åˆï¼Œæ•°å€¤ã«ã‚ˆã‚‹æ–‡å­—å‚ç…§åˆã¯&string;"<code>&amp;amp;</code>"åŠã³&string;"<code>&amp;lt;</code>"を使用ã—,<termref def="dt-escape">&escape;</termref>ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。&right-angle-bracket; (>) ã¯ï¼Œ&string;"<code>&amp;gt;</code>"を使用ã—ã¦è¡¨ç¾ã—ã¦ã‚‚よã„。内容ã®ä¸­ã§åˆ—"<code>]]&gt;</code>"を使用ã™ã‚‹ã¨ãã¯ï¼Œãã‚ŒãŒï¼Œ<termref def="dt-cdsection">CDATAセクション</termref>ã®çµ‚了を&markup;ã—ãªã„é™ã‚Šï¼Œ<termref def='dt-compat'>互æ›æ€§ã®ãŸã‚</termref>,"<code>&amp;gt;</code>"åˆã¯æ–‡å­—å‚照を使用ã—,&escape;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+
+<p>è¦ç´ ã®å†…容ã§ã¯ï¼Œæ–‡å­—データã¯ï¼Œã„ã‹ãªã‚‹&markup;ã®é–‹å§‹åŒºåˆ‡ã‚Šå­ã‚’å«ã¾ãªã„ä»»æ„ã®&char-string;ã¨ã™ã‚‹ã€‚CDATAセクションã§ã¯ï¼Œæ–‡å­—データã¨ã¯ï¼ŒCDATAセクションã®çµ‚了区切りå­"<code>]]&gt;</code>"ã‚’å«ã¾ãªã„ä»»æ„ã®&char-string;ã¨ã™ã‚‹ã€‚
+</p>
+<p>
+属性値ã«&single-quote;åŠã³&double-quote;ã‚’å«ã‚€ãŸã‚ã«ã¯ï¼Œã‚¢ãƒã‚¹ãƒˆãƒ­ãƒ•ã‚£åˆã¯&single-quote;(') ã¯ï¼Œ"<code>&amp;apos;</code>"ã¨ã—ã¦è¡¨ç¾ã—,&double-quote;(")ã¯ï¼Œ"<code>&amp;quot;</code>"ã¨ã—ã¦è¡¨ç¾ã™ã‚‹ã€‚
+<scrap lang="ebnf">
+<head>文字データ</head>
+<prod id='NT-CharData'>
+<lhs>CharData</lhs>
+<rhs>[^&lt;&amp;]* - ([^&lt;&amp;]* ']]&gt;' [^&lt;&amp;]*)</rhs>
+</prod>
+</scrap>
+</p>
+</div2>
+
+<div2 id='sec-comments'>
+<head>コメント</head>
+
+<p><termdef id="dt-comment" term="Comment"><term>コメント</term>ã¯ï¼Œä»–ã®<termref def='dt-markup'>&markup;</termref>ã®å¤–ãªã‚‰ã°ï¼Œæ–‡æ›¸ã®ã©ã“ã«ç¾ã‚Œã¦ã‚‚よã„。ã•ã‚‰ã«ï¼Œæ–‡æ›¸åž‹å®£è¨€å†…ã§ï¼Œæ–‡æ³•ãŒè¨±ã™å ´æ‰€ã«ç¾ã‚Œã¦ã‚‚よã„。
+<!-- TB
+except in a <termref def="dt-cdsection">CDATA section</termref>, i.e. within
+<termref def="dt-elemcontent">element content</termref>, in
+<termref def="dt-mixed">mixed content</termref>, or in the prolog. They must
+not occur within declarations or tags. -->
+コメントã¯ï¼Œæ–‡æ›¸ã®<termref def="dt-chardata">文字データ</termref>ã®ä¸€éƒ¨ã§ã¯ãªã„。XML&processor;ã¯ï¼Œ&application;ãŒã‚³ãƒ¡ãƒ³ãƒˆã®ãƒ†ã‚­ã‚¹ãƒˆã‚’å–り出ã™ã“ã¨ã‚’å¯èƒ½ã¨ã—ã¦ã‚‚よã„ãŒï¼Œãã†ã—ãªãã¨ã‚‚よã„。
+<termref def="dt-compat">互æ›æ€§ã®ãŸã‚</termref>,&string;"<code>--</code>" (&double-hyphen;)ã¯ï¼Œã‚³ãƒ¡ãƒ³ãƒˆå†…ã§ç¾ã‚Œã¦ã¯ãªã‚‰ãªã„。
+<scrap lang="ebnf">
+<head>コメント</head>
+<prod id='NT-Comment'><lhs>Comment</lhs>
+<rhs>'&lt;!--'
+((<nt def='NT-Char'>Char</nt> - '-')
+| ('-' (<nt def='NT-Char'>Char</nt> - '-')))*
+'-->'</rhs>
+<!--
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs> -->
+</prod>
+</scrap>
+</termdef></p>
+<p>コメントã®ä¾‹ã‚’次ã«ç¤ºã™ã€‚
+<eg>&lt;!&como; declarations for &lt;head> &amp; &lt;body> &comc;&gt;</eg>
+</p>
+</div2>
+
+<div2 id='sec-pi'>
+<head>処ç†å‘½ä»¤</head>
+
+<p><termdef id="dt-pi" term="Processing instruction"><term>処ç†å‘½ä»¤</term>(PI)ã«ã‚ˆã£ã¦ï¼Œ&application;ã®ãŸã‚ã®å‘½ä»¤ã‚’文書ã«å…¥ã‚Œã‚‹ã“ã¨ãŒã§ãる。
+
+<scrap lang="ebnf">
+<head>処ç†å‘½ä»¤</head>
+<prod id='NT-PI'><lhs>PI</lhs>
+<rhs>'&lt;?' <nt def='NT-PITarget'>PITarget</nt>
+(<nt def='NT-S'>S</nt>
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*)))?
+&pic;</rhs></prod>
+<prod id='NT-PITarget'><lhs>PITarget</lhs>
+<rhs><nt def='NT-Name'>Name</nt> -
+(('X' | 'x') ('M' | 'm') ('L' | 'l'))</rhs>
+</prod>
+</scrap></termdef>
+PIã¯ï¼Œæ–‡æ›¸ã®<termref def="dt-chardata">文字データ</termref>ã®ä¸€éƒ¨ã§ã¯ãªã„ãŒï¼Œ&application;ã«æ¸¡ã•ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„。PIã¯ï¼Œå‘½ä»¤ãŒæ¸¡ã•ã‚Œã‚‹&application;ã‚’&identify;ãŸã‚ã«ä½¿ç”¨ã™ã‚‹&target; (<nt def='NT-PITarget'>PITarget</nt>) ã§å§‹ã¾ã‚‹ã€‚&target;å "<code>XML</code>","<code>xml</code>"ãªã©ã¯ï¼Œã“ã®&TR-or-Rec;ã®ç¾åœ¨ã®ç‰ˆåˆã¯å°†æ¥ã®ç‰ˆã®è¦æ ¼åŒ–用ã«äºˆç´„ã™ã‚‹ã€‚XMLã®<termref def='dt-notation'>記法</termref>機構を,PIã®&target;を宣言ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã—ã¦ã‚‚よã„。
+</p>
+</div2>
+
+<div2 id='sec-cdata-sect'>
+<head>CDATAセクション</head>
+
+<p><termdef id="dt-cdsection" term="CDATA Section"><term>CDATAセクション</term>ã¯ï¼Œæ–‡å­—データãŒå‡ºç¾ã™ã‚‹ã¨ã“ã‚ã§ã‚ã‚Œã°ï¼Œã©ã“ã«å‡ºç¾ã—ã¦ã‚‚よã„。ã“ã‚Œã¯ï¼Œãã†ã§ãªã‘ã‚Œã°ï¼Œ&markup;ã¨ã—ã¦èªè­˜ã™ã‚‹æ–‡å­—ã‚’å«ã‚€ï¼Œãƒ†ã‚­ã‚¹ãƒˆã®åŒºç”»ã‚’&escape;ã™ã‚‹ã®ã«ä½¿ç”¨ã™ã‚‹ã€‚CDATAセクションã¯ï¼Œ&string;"<code>&lt;![CDATA[</code>"ã§å§‹ã¾ã‚Šï¼Œ&string;
+"<code>]]&gt;</code>"ã§çµ‚ã‚る。
+<scrap lang="ebnf">
+<head>CDATAセクション</head>
+<prod id='NT-CDSect'><lhs>CDSect</lhs>
+<rhs><nt def='NT-CDStart'>CDStart</nt>
+<nt def='NT-CData'>CData</nt>
+<nt def='NT-CDEnd'>CDEnd</nt></rhs></prod>
+<prod id='NT-CDStart'><lhs>CDStart</lhs>
+<rhs>'&lt;![CDATA['</rhs>
+</prod>
+<prod id='NT-CData'><lhs>CData</lhs>
+
+<rhs>(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+</rhs>
+</prod>
+<prod id='NT-CDEnd'><lhs>CDEnd</lhs>
+<rhs>']]&gt;'</rhs>
+</prod>
+</scrap>
+
+CDATAセクション内ã§ã¯ï¼Œåˆ—<nt def='NT-CDEnd'>CDEnd</nt>ã ã‘ã‚’&markup;ã¨ã—ã¦èªè­˜ã™ã‚‹ã®ã§ï¼Œ&left-angle-bracket;åŠã³ã‚¢ãƒ³ãƒ‘サンドã¯ï¼Œãã®&literal;å½¢å¼ã§å‡ºç¾ã—ã¦ã‚ˆã„。ãれらã¯ï¼Œ"<code>&amp;lt;</code>"åŠã³"<code>&amp;amp;</code>"を使用ã—ã¦&escape;ã™ã‚‹å¿…è¦ã¯ãªã„。CDATAセクションã¯ï¼Œå…¥ã‚Œå­ã«ã¯ã§ããªã„。
+</termdef>
+</p>
+
+<p>"<code>&lt;greeting></code>"åŠã³"<code>&lt;/greeting></code>"を,<termref def='dt-markup'>&markup;</termref>ã§ã¯ãªã,<termref def='dt-chardata'>文字データ</termref>ã¨ã—ã¦èªè­˜ã™ã‚‹CDATAセクションã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg>&lt;![CDATA[&lt;greeting>Hello, world!&lt;/greeting>]]&gt;</eg>
+</p>
+</div2>
+
+<div2 id='sec-prolog-dtd'>
+<head>&prolog;åŠã³æ–‡æ›¸åž‹å®£è¨€</head>
+
+<p><termdef id='dt-xmldecl' term='XML Declaration'>XML文書ã¯ï¼Œä½¿ç”¨ã™ã‚‹XMLã®&version;を指定ã™ã‚‹<term>XML宣言</term>ã§å§‹ã‚ã¦ã‚‚よã,åˆãã†ã™ã‚‹ã®ãŒæœ›ã¾ã—ã„。
+</termdef>
+</p>
+<p>ã“ã®&TR-or-Rec;ã®ã“ã®&version;ã«é©åˆã™ã‚‹ã“ã¨ã‚’示ã™ãŸã‚ã«ã¯ï¼Œ&version;ç•ªå· "<code>1.0</code>" を使用ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。ã‚る文書ãŒï¼Œã“ã®&TR-or-Rec;ã®ã“ã®&version;ã«é©åˆã—ãªã„ã¨ã,値"<code>1.0</code>"を使用ã™ã‚‹ã®ã¯ï¼Œ&error;ã¨ã™ã‚‹ã€‚ã“ã®&TR-or-Rec;ã®ä»Šå¾Œã®&version;ã«"<code>1.0</code>"以外ã®å€¤ã‚’付与ã™ã‚‹ã“ã¨ãŒï¼ŒXML作業グループã®æ„図ã ãŒï¼ŒXMLã®å°†æ¥ã®&version;を作æˆã™ã‚‹ã“ã¨ã®ç¢ºç´„を示ã™ã‚ã‘ã§ã¯ãªã,作æˆã—ãŸã¨ã—ã¦ã‚‚,番å·ä»˜ã‘ã«ã¤ã„ã¦ï¼Œç‰¹å®šã®æ–¹æ³•ã‚’使用ã™ã‚‹ã“ã¨ã®ç¢ºç´„を示ã™ã‚ã‘ã§ã‚‚ãªã„。将æ¥ã®&version;ã®å¯èƒ½æ€§ã‚’除外ã—ãªã„ã®ã§ï¼Œå¿…è¦ãªå ´åˆï¼Œè‡ªå‹•çš„ãª&version;ã®èªè­˜ã‚’å¯èƒ½ã¨ã™ã‚‹æ‰‹æ®µã¨ã—ã¦ï¼Œã“ã®æ§‹æˆå­ã‚’æä¾›ã™ã‚‹ã€‚&processor;ã¯ï¼Œã‚µãƒãƒ¼ãƒˆã—ã¦ã„ãªã„&version;ã§ãƒ©ãƒ™ãƒ«ä»˜ã‘ã—ãŸæ–‡æ›¸ã‚’å—ã‘å–ã£ãŸã¨ã,&error;を通知ã—ã¦ã‚‚よã„。
+</p>
+<p>XML文書内ã®&markup;ã®æ©Ÿèƒ½ã¯ï¼Œè¨˜æ†¶æ§‹é€ åŠã³è«–ç†æ§‹é€ ã‚’記述ã™ã‚‹ã“ã¨ï¼Œä¸¦ã³ã«å±žæ€§åŠã³å±žæ€§å€¤ã®å¯¾ã‚’è«–ç†æ§‹é€ ã«é–¢é€£ã¥ã‘ã‚‹ã“ã¨ã«ã‚る。XMLã¯ï¼Œè«–ç†æ§‹é€ ã«ã¤ã„ã¦ã®åˆ¶ç´„æ¡ä»¶ã‚’定義ã™ã‚‹ãŸã‚,åŠã³ã‚らã‹ã˜ã‚定義ã•ã‚ŒãŸè¨˜æ†¶å˜ä½ã‚’使用ã§ãã‚‹ãŸã‚ã®æ©Ÿæ§‹ã¨ã—ã¦ï¼Œ<termref def="dt-doctype">文書型宣言</termref>ã‚’æä¾›ã™ã‚‹ã€‚<!-- old
+The function of the markup in an XML document is to describe its
+storage and logical structures, and associate attribute-value pairs with the
+logical structure.
+XML provides a
+mechanism, the <termref def="dt-doctype">document type declaration</termref>,
+to
+define constraints on that logical structure and to support the use of
+predefined storage units. --><termdef id="dt-valid" term="Validity">XML文書ãŒ<term>&valid;</term>ã¨ã¯ï¼Œæ–‡æ›¸åž‹å®£è¨€ã‚’ã‚‚ã¡ï¼Œãã®æ–‡æ›¸åž‹å®£è¨€ã«ç¤ºã™åˆ¶ç´„æ¡ä»¶ã‚’満ãŸã™ã“ã¨ã¨ã™ã‚‹ã€‚
+</termdef></p>
+<p>文書型宣言ã¯ï¼Œæ–‡æ›¸ã®æœ€åˆã®<termref def="dt-element">è¦ç´ </termref>ã®å‰ã«ç¾ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„。
+<scrap lang="ebnf" id='xmldoc'>
+<head>&prolog;</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-prolog'><lhs>prolog</lhs>
+<rhs><nt def='NT-XMLDecl'>XMLDecl</nt>?
+<nt def='NT-Misc'>Misc</nt>*
+(<nt def='NT-doctypedecl'>doctypedecl</nt>
+<nt def='NT-Misc'>Misc</nt>*)?</rhs></prod>
+<prod id='NT-XMLDecl'><lhs>XMLDecl</lhs>
+<rhs>&xmlpio;
+<nt def='NT-VersionInfo'>VersionInfo</nt>
+<nt def='NT-EncodingDecl'>EncodingDecl</nt>?
+<nt def='NT-SDDecl'>SDDecl</nt>?
+<nt def="NT-S">S</nt>?
+&pic;</rhs>
+</prod>
+<prod id='NT-VersionInfo'><lhs>VersionInfo</lhs>
+<rhs><nt def="NT-S">S</nt> 'version' <nt def='NT-Eq'>Eq</nt>
+('"<nt def="NT-VersionNum">VersionNum</nt>"'
+| "'<nt def="NT-VersionNum">VersionNum</nt>'")</rhs>
+</prod>
+<prod id='NT-Eq'><lhs>Eq</lhs>
+<rhs><nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?</rhs></prod>
+<prod id="NT-VersionNum">
+<lhs>VersionNum</lhs>
+<rhs>([a-zA-Z0-9_.:] | '-')+</rhs>
+</prod>
+<prod id='NT-Misc'><lhs>Misc</lhs>
+<rhs><nt def='NT-Comment'>Comment</nt> | <nt def='NT-PI'>PI</nt> |
+<nt def='NT-S'>S</nt></rhs></prod>
+</prodgroup>
+</scrap></p>
+
+<p>
+例ãˆã°ï¼Œæ¬¡ã«ç¤ºã™å®Œå…¨ãªXML文書ã¯ï¼Œ<termref def="dt-wellformed">&well-formed;</termref>ã§ã‚ã‚‹ãŒ<termref def="dt-valid">&valid;</termref>ã§ã¯ãªã„。
+<eg><![CDATA[<?xml version="1.0"?>
+<greeting>Hello, world!</greeting>
+]]></eg>
+次ã®æ–‡æ›¸ã‚‚åŒæ§˜ã¨ã™ã‚‹ã€‚
+<eg><![CDATA[<greeting>Hello, world!</greeting>
+]]></eg>
+</p>
+<p><termdef id="dt-doctype" term="Document Type Declaration">
+XMLã®<term>文書型宣言</term>ã¯ï¼Œã‚る文書クラスã®ãŸã‚ã®æ–‡æ³•ã‚’æä¾›ã™ã‚‹<termref def='dt-markupdecl'>&markup;宣言</termref>ã‚’å«ã‚€ã‹ï¼Œåˆã¯å‚ç…§ã™ã‚‹ã€‚ã“ã®æ–‡æ³•ã‚’,文書型定義åˆã¯<term>DTD</term>ã¨ã„ã†ã€‚文書型宣言ã¯ï¼Œ&markup;宣言をå«ã‚“ã å¤–部&subset;(特別ãªç¨®é¡žã®<termref def='dt-extent'>外部実体</termref>)ã‚’å‚ç…§ã§ã,åˆã¯å†…部&subset;ã«ç›´æŽ¥&markup;宣言をå«ã‚€ã“ã¨ã‚‚ã§ãる。ã•ã‚‰ã«ï¼Œãã®ä¸¡æ–¹ã‚‚å¯èƒ½ã¨ã™ã‚‹ã€‚ã‚る文書ã®DTDã¯ï¼Œä¸¡æ–¹ã®&subset;ã‚’ã¾ã¨ã‚ãŸã‚‚ã®ã¨ã—ã¦æ§‹æˆã™ã‚‹ã€‚</termdef>
+</p>
+<p><termdef id="dt-markupdecl" term="markup declaration">
+<term>&markup;宣言</term>ã¯ï¼Œ<termref def="dt-eldecl">è¦ç´ åž‹å®£è¨€</termref>, <termref def="dt-attdecl">属性リスト宣言</termref>,<termref def="dt-entdecl">実体宣言</termref>åˆã¯<termref def="dt-notdecl">記法宣言</termref>ã¨ã™ã‚‹ã€‚</termdef>次ã«ç¤ºã™&well-formed;制約åŠã³&validity;制約ã«è¦å®šã™ã‚‹ãŒï¼Œã“れらã®å®£è¨€ã¯ï¼Œ<termref def='dt-PE'>&parameter;実体</termref>内ã«å…¨ä½“åˆã¯ä¸€éƒ¨ãŒå«ã¾ã‚Œã¦ã‚‚よã„。詳ã—ã„è¦å®šã¯ï¼Œ<titleref xml-link="simple" href="sec-physical-struct">物ç†æ§‹é€ </titleref>ã«é–¢ã™ã‚‹è¦å®šã‚’å‚ç…§ã®ã“ã¨ã€‚</p>
+<scrap lang="ebnf" id='dtd'>
+<head>文書型定義</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-doctypedecl'><lhs>doctypedecl</lhs>
+<rhs>'&lt;!DOCTYPE' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt>
+<nt def='NT-ExternalID'>ExternalID</nt>)?
+<nt def='NT-S'>S</nt>? ('['
+(<nt def='NT-markupdecl'>markupdecl</nt>
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-S'>S</nt>)*
+']'
+<nt def='NT-S'>S</nt>?)? '>'</rhs>
+<vc def="vc-roottype"/>
+<!--<vc def="vc-nonnullDTD"/>-->
+</prod>
+<!--
+<prod id='NT-markupdecls'><lhs>markupdecls</lhs>
+<rhs>
+(<nt def='NT-S'>S</nt>?
+<nt def='NT-markupdecl'>markupdecl</nt>
+<nt def='NT-S'>S</nt>?)*
+</rhs></prod>
+-->
+<prod id='NT-markupdecl'><lhs>markupdecl</lhs>
+<rhs><nt def='NT-elementdecl'>elementdecl</nt>
+| <nt def='NT-AttlistDecl'>AttlistDecl</nt>
+| <nt def='NT-EntityDecl'>EntityDecl</nt>
+| <nt def='NT-NotationDecl'>NotationDecl</nt>
+| <nt def='NT-PI'>PI</nt>
+| <nt def='NT-Comment'>Comment</nt>
+<!--| <nt def='NT-InternalPERef'>InternalPERef</nt> --></rhs>
+<vc def='vc-PEinMarkupDecl'/>
+<wfc def="wfc-PEinInternalSubset"/>
+</prod>
+<!--
+<prod id="NT-InternalPERef"><lhs>InternalPERef</lhs>
+<rhs><nt def="NT-PEReference">PEReference</nt></rhs>
+<wfc def="wfc-integraldec"/>
+</prod>
+-->
+</prodgroup>
+</scrap>
+<vcnote id="vc-roottype">
+<head>&root;è¦ç´ åž‹</head>
+<p>
+文書型宣言ã«ãŠã‘ã‚‹<nt def='NT-Name'>Name</nt>ã¯ï¼Œ&root;è¦ç´ ã®åž‹ã¨&match;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+</vcnote>
+<!--
+<vcnote id="vc-nonnullDTD">
+<head>Non-null DTD</head>
+<p>
+The internal and external subsets of the DTD must not both
+be empty.
+</p>
+</vcnote>
+-->
+<vcnote id='vc-PEinMarkupDecl'>
+<head>宣言åŠã³&parameter;実体ãŒåŽ³å¯†ã«å…¥ã‚Œå­ã‚’ãªã™ã“ã¨</head>
+<p>&parameter;実体<termref def='dt-repltext'>ã®&replacement-text;</termref>ã¯ï¼Œ&markup;宣言内ã«ãŠã„ã¦ï¼ŒåŽ³å¯†ã«å…¥ã‚Œå­ã«ãªã£ã¦ã„ãªã‘ã‚Œã°ãªã‚‰ãªã„。ã¤ã¾ã‚Šï¼Œ&markup;宣言(<nt def='NT-markupdecl'>markupdecl</nt>)ã®æœ€åˆåˆã¯æœ€å¾Œã®æ–‡å­—ãŒï¼Œ<termref def='dt-PERef'>&parameter;実体å‚ç…§</termref>ã®å¯¾è±¡ã¨ãªã‚‹&replacement-text;ã«å«ã¾ã‚Œã‚Œã°ï¼Œä¸¡æ–¹ã¨ã‚‚åŒã˜&replacement-text;ã«å«ã¾ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+</vcnote>
+<wfcnote id="wfc-PEinInternalSubset">
+<head>内部&subset;内ã®&parameter;実体</head>
+<p>DTDã®å†…部&subset;ã§ã¯ï¼Œ<termref def='dt-PERef'>&parameter;実体å‚ç…§</termref>ã¯ï¼Œ&markup;宣言ãŒå‡ºç¾å¯èƒ½ãªå ´æ‰€ã ã‘ã«å‡ºç¾ã§ãる。&markup;宣言内ã«ã¯å‡ºç¾ã§ããªã„(ã“ã®åˆ¶ç´„ã¯ï¼Œå¤–部&parameter;実体åˆã¯å¤–部&subset;ã§ã®å‚ç…§ã«ã¯é©ç”¨ã—ãªã„。)。
+</p>
+</wfcnote>
+<p>
+内部&subset;ã®ã¨ãã¨åŒæ§˜ã«ï¼Œå¤–部&subset;åŠã³DTDã«ãŠã„ã¦å‚ç…§ã™ã‚‹ä»»æ„ã®å¤–部&parameter;実体ã¯ï¼Œéžçµ‚端記å·<nt def="NT-markupdecl">markupdecl</nt>ã«ã‚ˆã£ã¦è¨±ã•ã‚Œã‚‹åž‹ã®ï¼Œä¸€é€£ã®å®Œå…¨ãª&markup;宣言ã§æ§‹æˆã•ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„。&markup;宣言ã®é–“ã«ã¯ï¼Œç©ºç™½åˆã¯<termref def="dt-PERef">&parameter;実体å‚ç…§</termref>ã‚’ç½®ã„ã¦ã‚‚よã„。ã—ã‹ã—,外部&subset;åˆã¯å¤–部&parameter;実体ã®å†…容ã®ä¸€éƒ¨ã¯ï¼Œ<termref def="dt-cond-section">æ¡ä»¶ä»˜ãセクション</termref>を使用ã—ã¦ç„¡è¦–ã—ã¦ã‚‚よã„。内部サブセットã§ã¯ï¼Œã“ã‚Œã¯è¨±ã•ã‚Œãªã„。
+<!--In the external subset, however, parameter-entity references can
+be used to replace constructs prefixed by "<code>%</code>" in a production of
+the grammar, and <termref def="dt-cond-section">conditional sections</termref>
+may occur.
+In the internal subset, by contrast, conditional sections may not
+occur and the only parameter-entity references
+allowed are those which match the non-terminal
+<nt def="NT-InternalPERef">InternalPERef</nt>
+within the rule for <nt def="NT-doctypedecl">markupdecl</nt>.
+-->
+<scrap id="ext-Subset">
+<head>外部&subset;</head>
+<prodgroup pcw2="6" pcw4="17.5" pcw5="9">
+<prod id='NT-extSubset'><lhs>extSubset</lhs>
+<rhs>(
+<nt def='NT-markupdecl'>markupdecl</nt>
+| <nt def='NT-conditionalSect'>conditionalSect</nt>
+| <nt def='NT-PEReference'>PEReference</nt>
+| <nt def='NT-S'>S</nt>
+)*</rhs>
+</prod>
+</prodgroup>
+</scrap></p>
+<p>外部&subset;åŠã³å¤–部&parameter;実体ã¯ï¼Œãã®å†…ã§ã¯ï¼Œ&parameter;実体ãŒ&markup;宣言ã®<emph>é–“</emph>ã ã‘ã§ãªã,&markup;宣言ã®<emph>内</emph>ã§ã‚‚èªè­˜ã•ã‚Œã‚‹ï¼Œã¨ã„ã†ç‚¹ã§ã‚‚内部&subset;ã¨ã¯ç•°ãªã‚‹ã€‚
+</p>
+<p>文書型宣言付ãã®XML文書ã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE greeting SYSTEM "hello.dtd">
+<greeting>Hello, world!</greeting>
+]]></eg>
+<termref def="dt-sysid">システム&identifier;</termref> "<code>hello.dtd</code>"ãŒï¼Œæ–‡æ›¸ã®DTDã®URIã¨ãªã‚‹ã€‚</p>
+<p>次ã®ä¾‹ã®ã¨ãŠã‚Šï¼Œå®£è¨€ã‚’局所的ã«ä¸Žãˆã‚‹ã“ã¨ã‚‚ã§ãる。
+<eg><![CDATA[<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE greeting [
+ <!ELEMENT greeting (#PCDATA)>
+]>
+<greeting>Hello, world!</greeting>
+]]></eg>
+外部&subset;åŠã³å†…部&subset;ã®ä¸¡æ–¹ã‚’使用ã™ã‚‹ã¨ãã¯ï¼Œå†…部&subset;ãŒå¤–部&subset;より先ã«å‡ºç¾ã—ãŸã¨è¦‹ãªã™ã€‚<!--* 'is considered to'? boo. whazzat mean? -->ã“ã‚Œã¯ï¼Œå†…部&subset;ã®å®Ÿä½“åŠã³å±žæ€§ãƒªã‚¹ãƒˆå®£è¨€ãŒï¼Œå¤–部&subset;ã®å®Ÿä½“åŠã³å±žæ€§ãƒªã‚¹ãƒˆå®£è¨€ã‚ˆã‚Šå„ªå…ˆã™ã‚‹ã¨ã„ã†åŠ¹æžœã‚’ã‚‚ãŸã‚‰ã™ã€‚
+</p>
+</div2>
+
+<div2 id='sec-rmd'>
+<head>&standalone;文書宣言</head>
+<p><termref def="dt-xml-proc">XML&processor;</termref>ã¯ï¼Œ&application;ã«æ–‡æ›¸ã®å†…容を渡ã™ãŒï¼Œ&markup;宣言ã¯ï¼Œã“ã®å†…容ã«å½±éŸ¿ã‚’与ãˆã‚‹ã“ã¨ãŒã‚る。属性ã®&default-value;åŠã³å®Ÿä½“宣言をãã®ä¾‹ã¨ã™ã‚‹ã€‚XML宣言ã®ä¸€éƒ¨åˆ†ã¨ã—ã¦å‡ºç¾ã§ãã‚‹&standalone;文書宣言ã¯ï¼Œæ–‡æ›¸ãŒï¼Œãã®&markup;宣言ã®å­˜åœ¨ã«ã‚ˆã£ã¦å½±éŸ¿ã•ã‚Œãªã„ã“ã¨ã‚’指ã—示ã™ï¼ˆæ™®é€šï¼Œãã®&markup;宣言ãŒå­˜åœ¨ã—ãªã„ãŸã‚ã«ï¼Œã“ã‚ŒãŒã„ãˆã‚‹ã€‚)。
+<scrap lang="ebnf" id='fulldtd'>
+<head>&standalone;文書宣言</head>
+<prodgroup pcw2="4" pcw4="19.5" pcw5="9">
+<prod id='NT-SDDecl'><lhs>SDDecl</lhs>
+<rhs>
+<nt def="NT-S">S</nt>
+'standalone' <nt def='NT-Eq'>Eq</nt> "'" ('yes' | 'no') "'"
+</rhs>
+<rhs>
+| <nt def="NT-S">S</nt>
+'standalone' <nt def='NT-Eq'>Eq</nt> '"' ('yes' | 'no') '"'
+</rhs><vc def='vc-check-rmd'/></prod>
+</prodgroup>
+</scrap></p>
+<p>&standalone;文書宣言ã«ãŠã„ã¦ã¯, "<code>yes</code>"ã®å€¤ã¯ï¼Œ<termref def='dt-docent'>文書実体</termref>ã®å¤–部ã«ï¼ˆDTDã®å¤–部&subset;内ã«ï¼Œåˆã¯å†…部&subset;ã‹ã‚‰å‚ç…§ã•ã‚Œã‚‹å¤–部パラメタ実体内ã«ï¼‰ï¼ŒXML&processor;ã‹ã‚‰&application;ã¸ã¨æ¸¡ã•ã‚Œã‚‹æƒ…å ±ã«å½±éŸ¿ã™ã‚‹&markup;宣言ãŒå­˜åœ¨ã—ãªã„ã“ã¨ã‚’æ„味ã™ã‚‹ã€‚"<code>no</code>"ã®å€¤ã¯ï¼Œãã®å¤–部&markup;宣言ãŒå­˜åœ¨ã™ã‚‹ã‹ï¼Œåˆã¯å­˜åœ¨ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ã“ã¨ã‚’æ„味ã™ã‚‹ã€‚&standalone;文書宣言ã¯ï¼Œãã®<emph>宣言</emph>ãŒæ–‡æ›¸å¤–部ã«å­˜åœ¨ã™ã‚‹ã‹ã©ã†ã‹ã‚’示ã™ã ã‘ã«æ³¨æ„ã™ã‚‹ã“ã¨ã€‚外部実体ã¸ã®å‚ç…§ãŒæ–‡æ›¸å†…ã«å­˜åœ¨ã—ã¦ã„ã¦ã‚‚,ãã®å®Ÿä½“ãŒå†…部的ã«å®£è¨€ã•ã‚Œã¦ã„ã‚‹ã¨ãã¯ï¼Œæ–‡æ›¸ã®&standalone;ã®çŠ¶æ…‹ã«ã¯å½±éŸ¿ã‚’与ãˆãªã„。</p>
+
+<p>外部ã«&markup;宣言ãŒå­˜åœ¨ã—ãªã‘ã‚Œã°ï¼Œ&standalone;文書宣言ã¯æ„味をもãŸãªã„。外部ã«&markup;宣言ãŒå­˜åœ¨ã—,&standalone;文書宣言ãŒå­˜åœ¨ã—ãªã„å ´åˆã¯ï¼Œ<code>"no"</code> ã®å€¤ã®è¨­å®šã‚’仮定ã™ã‚‹ã€‚</p>
+<p>XML文書㧠<code>standalone="no"</code> ãŒè¨­å®šã•ã‚Œã¦ã„ã‚‹ã‚‚ã®ã¯ï¼Œã‚るアルゴリズムã§&standalone;文書ã«å¤‰æ›ã§ã,ã“ã®æ–‡æ›¸ã¯ï¼Œãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯é…ä¿¡&application;ã«ã¨ã£ã¦æœ›ã¾ã—ã„ã‹ã‚‚ã—ã‚Œãªã„。</p>
+<vcnote id='vc-check-rmd'>
+<head>&standalone;文書宣言</head>
+<p>&standalone;文書宣言ã¯ï¼Œä½•ã‚‰ã‹ã®å¤–部&markup;宣言ãŒæ¬¡ã®ã„ãšã‚Œã‹ã‚’宣言ã—ã¦ã„ã‚‹ã¨ãã¯ï¼Œå€¤ "<code>no</code>" ã‚’å–らãªã‘ã‚Œã°ãªã‚‰ãªã„。
+<ulist>
+<item><p>a) <termref def="dt-default">&default;</termref>値付ãã®å±žæ€§ã§ã‚ã£ã¦ï¼Œã“ã®å±žæ€§ãŒé©ç”¨ã•ã‚Œã‚‹è¦ç´ ãŒï¼Œå±žæ€§å€¤ã‚’指定ã›ãšã«æ–‡æ›¸å†…ã«ç¾ã‚Œã‚‹ã‚‚ã®ã€‚</p></item>
+<item><p>b) &magicents;以外ã®å®Ÿä½“ã§ã‚ã£ã¦ï¼Œãã®å®Ÿä½“ã«å¯¾ã™ã‚‹<termref def="dt-entref">å‚ç…§</termref>ãŒæ–‡æ›¸å†…ã«å‡ºç¾ã™ã‚‹ã‚‚ã®ã€‚</p>
+</item>
+<item><p>c) 値ãŒ<titleref href='AVNormalize'>æ­£è¦åŒ–</titleref>ã®å¯¾è±¡ã¨ãªã‚‹å±žæ€§ã§ã‚ã£ã¦ï¼Œæ­£è¦åŒ–ã®çµæžœã¨ã—ã¦å¤‰åŒ–ã™ã‚‹å€¤ãŒæ–‡æ›¸å†…ã§å±žæ€§ã«æŒ‡å®šã•ã‚Œã‚‹ã‚‚ã®ã€‚</p></item>
+<item>
+<p>d) <termref def="dt-elemcontent">è¦ç´ å†…容</termref>ã‚’ã‚‚ã¤è¦ç´ åž‹ã§ã‚ã£ã¦ï¼Œç©ºç™½ãŒãã®è¦ç´ åž‹ã®ã„ãšã‚Œã‹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å†…ã«ç›´æŽ¥ç¾ã‚Œã‚‹ã‚‚ã®ã€‚
+</p></item>
+</ulist>
+</p>
+</vcnote>
+<p>&standalone;文書宣言付ãã®XML宣言ã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg>&lt;?xml version="&XML.version;" standalone='yes'?></eg></p>
+</div2>
+<div2 id='sec-white-space'>
+<head>空白ã®å–扱ã„</head>
+<p>XML文書を編集ã™ã‚‹ã¨ãã¯ï¼Œ&markup;を目立ãŸã›èª­ã¿ã‚„ã™ãã™ã‚‹ãŸã‚ã«ï¼Œâ€œç©ºç™½â€(&space;,タブåŠã³ç©ºç™½è¡Œã€‚ã“ã®&TR-or-Rec;ã§ã¯ï¼Œéžçµ‚端記å·ã®<nt def='NT-S'>S</nt>ã§è¡¨ã™)を使ã†ã¨ä¾¿åˆ©ãªã“ã¨ãŒå¤šã„。ãã®ç©ºç™½ã¯ï¼Œé…布ã™ã‚‹&version;ã®æ–‡æ›¸ã®ä¸€éƒ¨ã¨ã—ã¦å«ã‚ã‚‹ã“ã¨ã‚’æ„図ã—ãªã„ã®ã‚’普通ã¨ã™ã‚‹ã€‚ã—ã‹ã—,“æ„味ã®ã‚ã‚‹â€ç©ºç™½ã§ã‚ã£ã¦ï¼Œé…布ã™ã‚‹&version;ã«æ®‹ã•ãªã‘ã‚Œã°ãªã‚‰ãªã„ã‚‚ã®ã‚‚多ã„。例ãˆã°ï¼Œè©©åŠã³ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã«ãŠã‘る空白ãŒã‚る。</p>
+<p><termref def='dt-xml-proc'>XML&processor;</termref>ã¯ï¼Œæ–‡æ›¸å†…ã®&markup;以外ã®ã™ã¹ã¦ã®æ–‡å­—を,ãã®ã¾ã¾å¤‰æ›´ã›ãšã«&application;ã«æ¸¡ã•ãªã‘ã‚Œã°ãªã‚‰ãªã„。<termref def='dt-validating'>&validating;XML&processor;</termref>ã¯ï¼Œ<termref def="dt-elemcontent">è¦ç´ å†…容</termref>ã®ä¸­ã®ç©ºç™½ã‚’ä»–ã®éž&markup;文字ã‹ã‚‰åŒºåˆ¥ã—,&application;å´ã«è¦ç´ å†…容ã®ä¸­ã®ç©ºç™½ãŒé‡è¦ã§ãªã„ã¨ã„ã†ã“ã¨ã‚’ä¼ãˆãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+<p>
+"<code>xml:space</code>"ã¨ã„ã†ç‰¹åˆ¥ãª<termref def='dt-attr'>属性</termref>を文書ã«æŒ¿å…¥ã™ã‚‹ã“ã¨ã«ã‚ˆã£ã¦ï¼Œç©ºç™½ã‚’é‡è¦ã¨ã™ã‚‹æ„図を示ã—ã¦ã‚‚よã„。ã“ã®å±žæ€§ã‚’é©ç”¨ã™ã‚‹è¦ç´ ã«ç¾ã‚Œã‚‹ç©ºç™½ã‚’,アプリケーションãŒé‡è¦ãªã‚‚ã®ã¨ã—ã¦æ‰±ã†ã“ã¨ã‚’è¦æ±‚ã™ã‚‹ï¼Œã¨ã„ã†æ„図を示ã™ã€‚</p>
+<p>&valid;ãªæ–‡æ›¸ã§ã¯ï¼Œã“ã®å±žæ€§ã‚’使用ã™ã‚‹å ´åˆã¯ï¼Œä»–ã®å±žæ€§ã¨åŒã˜ã‚ˆã†ã«<termref def="dt-attdecl">宣言</termref>ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。宣言ã™ã‚‹ã¨ãã¯ï¼Œå–り得る値を"<code>default</code>"åŠã³ "<code>preserve</code>"ã ã‘ã¨ã™ã‚‹<termref def='dt-enumerated'>列挙型</termref>ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+<p>値"<code>default</code>"ã¯ï¼Œ&application;ã®&default;ã®ç©ºç™½å‡¦ç†ãƒ¢ãƒ¼ãƒ‰ã‚’,ãã®è¦ç´ ã«é©ç”¨å¯èƒ½ã¨ã™ã‚‹ã“ã¨ã‚’æ„味ã™ã‚‹ã€‚値"<code>preserve</code>"ã¯ï¼Œ&application;ãŒã™ã¹ã¦ã®ç©ºç™½ã‚’ä¿å­˜ã™ã‚‹ã“ã¨ã‚’æ„味ã™ã‚‹ã€‚ã“ã®å®£è¨€ã®æ„図ã¯ï¼Œ"<code>xml:space</code>" 属性ã®åˆ¥ã®æŒ‡å®šã§ä¸Šæ›¸ãã—ãªã„é™ã‚Šï¼Œè¦ç´ ã®å†…容ã«ç¾ã‚Œã‚‹ã™ã¹ã¦ã®è¦ç´ ã«é©ç”¨ã™ã‚‹ã¨è§£é‡ˆã™ã‚‹ã€‚</p>
+<p>文書ã®<termref def='dt-root'>&root;è¦ç´ </termref>ã«ã¤ã„ã¦ã¯ï¼Œã“ã®å±žæ€§ã®å€¤ã‚’指定ã™ã‚‹ã‹ï¼Œåˆã¯ã“ã®å±žæ€§ã®&default-value;ãŒã‚ã‚‹å ´åˆã‚’除ã„ã¦ã¯ï¼Œ&application;ã«ã‚ˆã‚‹ç©ºç™½ã®å–扱ã„ã«ã¤ã„ã¦ï¼Œã„ã‹ãªã‚‹æ„図も示ã•ãªã„ã¨è§£é‡ˆã™ã‚‹ã€‚</p>
+<p>例を次ã«ç¤ºã™ã€‚
+<eg><![CDATA[ <!ATTLIST poem xml:space (default|preserve) 'preserve'>]]></eg>
+</p>
+</div2>
+<div2 id='sec-line-ends'>
+<head>行末ã®å–扱ã„</head>
+<p>XMLã®<termref def='dt-parsedent'>構文&parsed-entity;</termref>ã¯ï¼Œé€šå¸¸ã‚³ãƒ³ãƒ”ュータã®ãƒ•ã‚¡ã‚¤ãƒ«å†…ã«ä¿å­˜ã•ã‚Œï¼Œç·¨é›†ã®ä¾¿å®œã®ãŸã‚ã«è¤‡æ•°ã®è¡Œã«åˆ†ã‘ã‚‹ã“ã¨ãŒå¤šã„。ã“れらã®è¡Œã¯ï¼Œæ™®é€šã¯ï¼Œ<code>CR</code> (#xD)コードåŠã³ <code>LF</code> (#xA)コードã®ä½•ã‚‰ã‹ã®çµ„åˆã›ã«ã‚ˆã£ã¦åˆ†ã‘られる。</p>
+<p><termref def='dt-app'>&application;</termref>ã®å‡¦ç†ã‚’ç°¡å˜ã«ã™ã‚‹ãŸã‚,外部&parsed-entity;åˆã¯å†…部&parsed-entity;ã®&literal;実体値ãŒï¼Œ"<code>#xD#xA</code>" ã®ï¼’文字ã®é€£ç¶šã¨ã™ã‚‹&literal;åˆã¯<code>#xD</code>ã®å˜ç‹¬ã®&literal;ã‚’å«ã‚€å ´åˆã«ï¼Œ<termref def='dt-xml-proc'>XML&processor;</termref>ã¯ï¼Œ&application;ã«å˜ä¸€ã®æ–‡å­—<code>#xA</code>ã ã‘を渡ã•ãªã‘ã‚Œã°ãªã‚‰ãªã„(ã“ã®å‡¦ç†ã¯ï¼Œå…¥åŠ›å†…ã«å­˜åœ¨ã™ã‚‹æ”¹è¡Œã‚³ãƒ¼ãƒ‰ã‚’構文解æžã®å‰ã«æ­£è¦åŒ–ã™ã‚‹ã“ã¨ã«ã‚ˆã£ã¦ï¼Œå®¹æ˜“ã«å®Ÿç¾ã§ãる。)。</p>
+</div2>
+<div2 id='sec-lang-tag'>
+<head>&language-identification;</head>
+<p>文書処ç†ã«ãŠã„ã¦ã¯ï¼Œãã®æ–‡æ›¸ã®ä¸­èº«ãŒã©ã‚“ãªè‡ªç„¶è¨€èªžåˆã¯å½¢å¼è¨€èªžã§æ›¸ã‹ã‚Œã¦ã„ã‚‹ã‹æ˜Žç¤ºã™ã‚‹ã“ã¨ãŒï¼Œå½¹ã«ç«‹ã¤ã“ã¨ãŒå¤šã„。<!--ã“ã“ã§ä½¿ç”¨ã™ã‚‹â€œè¨€èªžâ€ã¨ã„ã†è¨€è‘‰ã®æ„味ã¯ï¼Œ"Espa&#x00F1;ol" åŠã³"EBNF"ã®åŒæ–¹ã§ä¾‹ç¤ºã•ã‚Œã‚‹æ„味ã¨ã™ã‚‹ã€‚--><!-- x00F1: spanish's small ntilde--></p>
+<!--; ã“ã®æƒ…å ±ã¯ï¼ˆä¾‹ã‚’ã‚ã’ã‚Œã°ï¼‰æ–‡æ›¸ã®æ–‡å­—ã®è¡¨ç¤ºï¼Œä¸¦ã³ã«æƒ…報抽出ã®ãŸã‚ã®èªžå¹¹ãƒ»å½¢æ…‹ç´ è§£æžåŠã³ãƒ†ã‚­ã‚¹ãƒˆãƒ–ロックã®æ•´å½¢ã«å½±éŸ¿ã‚’åŠã¼ã™å¯èƒ½æ€§ãŒã‚る。-->
+<p>XML文書内ã®è¦ç´ ã®ã‚‚ã¤å†…容åˆã¯å±žæ€§å€¤ã«ãŠã„ã¦ä½¿ç”¨ã™ã‚‹<!--自然åˆã¯å½¢å¼-->言語を指定ã™ã‚‹ãŸã‚ã«ï¼Œ"<code>xml:lang</code>" ã¨ã„ã†åå‰ã®ç‰¹åˆ¥ãª<termref def="dt-attr">属性</termref>を,文書内ã«æŒ¿å…¥ã—ã¦ã‚‚よã„。
+<!--; ã“ã®å±žæ€§ã¯XMLè¦å®šã®ä¸€éƒ¨ã¨ã—ã¦ï¼Œè¤‡æ•°ã®XML&application;ã®ç›¸äº’é‹ç”¨æ€§ã‚’高ã‚ã‚‹ãŸã‚ã«å®šç¾©ã™ã‚‹ã€‚-->
+属性ã®å€¤ã¯ï¼Œ<bibref ref="RFC1766"/>“RFC1766:&language-identification;ã®ãŸã‚ã®ã‚¿ã‚°â€ã«ã‚ˆã£ã¦è¦å®šã•ã‚Œã‚‹&language-identification;コードã«å¾“ã†ã€‚
+<scrap lang='ebnf'>
+<head>&language-identification;</head>
+<prod id='NT-LanguageID'><lhs>LanguageID</lhs>
+<rhs><nt def='NT-Langcode'>Langcode</nt>
+('-' <nt def='NT-Subcode'>Subcode</nt>)*</rhs></prod>
+<prod id='NT-Langcode'><lhs>Langcode</lhs>
+<rhs><nt def='NT-ISO639Code'>ISO639Code</nt> |
+<nt def='NT-IanaCode'>IanaCode</nt> |
+<nt def='NT-UserCode'>UserCode</nt></rhs>
+</prod>
+<prod id='NT-ISO639Code'><lhs>ISO639Code</lhs>
+<rhs>([a-z] | [A-Z]) ([a-z] | [A-Z])</rhs></prod>
+<prod id='NT-IanaCode'><lhs>IanaCode</lhs>
+<rhs>('i' | 'I') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id='NT-UserCode'><lhs>UserCode</lhs>
+<rhs>('x' | 'X') '-' ([a-z] | [A-Z])+</rhs></prod>
+<prod id='NT-Subcode'><lhs>Subcode</lhs>
+<rhs>([a-z] | [A-Z])+</rhs></prod>
+</scrap>
+<nt def='NT-Langcode'>Langcode</nt>ã¯ï¼Œæ¬¡ã®ã©ã‚Œã§ã‚‚よã„。
+<ulist>
+<item><p>a) <bibref ref="ISO639"/>“言語ã®åå‰è¡¨ç¾ã®ãŸã‚ã®ã‚³ãƒ¼ãƒ‰â€ã§è¦å®šã•ã‚Œã‚‹2文字ã®&language-code;</p></item>
+<item><p>b) Internet Assigned Numbers Authority (IANA)ã§ç™»éŒ²ã•ã‚Œã¦ã„ã‚‹&language-code;。ã“ã‚Œã¯ï¼Œå…ˆé ­ãŒ "<code>i-</code>" (åˆã¯"<code>I-</code>")ã§å§‹ã¾ã‚‹ã€‚</p></item>
+<item><p>c) &user;ã«ã‚ˆã£ã¦å®šã‚られãŸ&language-code;,åˆã¯ç§çš„ãªä½¿ç”¨ã®ãŸã‚ã«è¤‡æ•°ã®å›£ä½“é–“ãŒå–り決ã‚ãŸã‚³ãƒ¼ãƒ‰ã€‚ã“れらã¯ï¼Œä»Šå¾ŒIANAã«ãŠã„ã¦æ¨™æº–化åˆã¯ç™»éŒ²ã•ã‚Œã‚‹ã‚³ãƒ¼ãƒ‰ã¨ã®ç«¶åˆã‚’é¿ã‘ã‚‹ãŸã‚ã«ï¼Œå…ˆé ­ã‚’"<code>x-</code>" åˆã¯ "<code>X-</code>" ã§å§‹ã‚る。</p></item>
+</ulist></p>
+<p><nt def='NT-Subcode'>Subcode</nt>ã¯ï¼Œè¤‡æ•°å›žä½¿ã£ã¦ã‚‚よã„。最åˆã®ã‚µãƒ–コードãŒå­˜åœ¨ã—,ãã®å†…容ãŒäºŒã¤ã®æ–‡å­—ã‹ã‚‰æˆã‚‹ã¨ãã¯ï¼Œ<bibref ref="ISO3166"/>ISO3166ã®â€œå›½åを表ã™ã‚³ãƒ¼ãƒ‰(国コード)â€ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„。最åˆã®ã‚µãƒ–コードãŒ3文字以上ã‹ã‚‰æˆã‚‹ã¨ãã¯ï¼Œ<nt def='NT-Langcode'>Langcode</nt>ã®å…ˆé ­ãŒï¼Œ"<code>x-</code>" åˆã¯ "<code>X-</code>"ã§å§‹ã¾ã‚‰ãªã„é™ã‚Šï¼ŒæŒ‡å®šã—ãŸè¨€èªžã«å¯¾ã™ã‚‹ã‚µãƒ–コードã¨ã—,IANAã«ç™»éŒ²ã•ã‚ŒãŸã‚‚ã®ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+<p>&language-code;ã¯ï¼Œå°æ–‡å­—ã§ã®è¡¨è¨˜ã‚’,&country-code;ã¯ï¼Œ(存在ã™ã‚‹ãªã‚‰ã°)大文字ã§ã®è¡¨è¨˜ã‚’慣行ã¨ã™ã‚‹ã€‚ã—ã‹ã—,XML文書内ã«ãŠã‘ã‚‹ä»–ã®åå‰ã¨ã¯ç•°ãªã‚Šï¼Œã“れらã®å€¤ã«ã¤ã„ã¦ã¯ï¼Œå¤§æ–‡å­—åŠã³å°æ–‡å­—ã®åŒºåˆ¥ã‚’ã—ãªã„ã“ã¨ã«æ³¨æ„ã™ã‚‹ã“ã¨ã€‚</p>
+<p>例を次ã«ç¤ºã™ã€‚
+<eg><![CDATA[<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
+<p xml:lang="en-GB">What colour is it?</p>
+<p xml:lang="en-US">What color is it?</p>
+<sp who="Faust" desc='leise' xml:lang="de">
+ <l>Habe nun, ach! Philosophie,</l>
+ <l>Juristerei, und Medizin</l>
+ <l>und leider auch Theologie</l>
+ <l>]]><!-- x00DF german's es-zet; x00FC german's u-umlaut -->durchaus studiert mit hei&#223;em Bem&#252;h'n.<![CDATA[</l>
+ </sp>]]></eg></p>
+<!--<p>xml:lang ã®å€¤ã¯ï¼Œè¦ç´ ã®å†…容åŠã³(属性ã®&default-value;ã§å®šã‚ãªã„é™ã‚Š)フリーテキスト(CDATA)ã®å€¤ã‚’ã‚‚ã¤ãã®è¦ç´ ã¸ã®ã™ã¹ã¦ã®å±žæ€§ã®å€¤ã«ã¤ã„ã¦ï¼Œãã®ä¸¡æ–¹ã«é©ç”¨ã™ã‚‹ã€‚-->
+<p><code>xml:lang</code>ã§å®£è¨€ã™ã‚‹æ„図ã¯ï¼Œ<code>xml:lang</code>ã®åˆ¥ã®æŒ‡å®šã§ä¸Šæ›¸ã—ãªã„é™ã‚Šï¼ŒæŒ‡å®šã—ãŸè¦ç´ ã®å†…容ã«å«ã‚€ã™ã¹ã¦ã®è¦ç´ ã«é©ç”¨ã™ã‚‹ã€‚</p>
+<!--ã‚ã‚‹è¦ç´ ã«ãŠã‘ã‚‹ xml:lang 属性ã®å€¤ãŒå®šã‚られã¦ãŠã‚‰ãšï¼ŒDTDã«ãŠã„ã¦ãã®&default-value;ãŒå®šã‚られã¦ã„ãªã„å ´åˆï¼Œãã®è¦ç´ ã®xml:lang 属性ã®å€¤ã¯ï¼Œè¦ªè¦ç´ ã§ã®å€¤ãŒå­˜åœ¨ã™ã‚‹å ´åˆã¯ï¼Œãれを引ã継ã。 次ã®ä¾‹ã«ãŠã‘る二ã¤ã®<term>ã¨ã„ã†åå‰ã®å°‚門用語を表ã™è¦ç´ ã¯ï¼Œxml:langã®å€¤ã«é–¢ã—ã¦ã¯ï¼Œå®Ÿéš›ä¸Šï¼ŒåŒã˜å€¤ã‚’ã‚‚ã¤ã€‚
+
+ <p xml:lang="en">Here the keywords are
+ <term xml:lang="en">shift</term> and
+ <term>reduce</term>. ...</p>
+
+XML&processor;ã§ã¯ãªã&application;ãŒï¼Œã“ã®å±žæ€§å€¤ã®ç¶™æ‰¿ã«ã¤ã„ã¦è²¬ä»»ã‚’ã‚‚ã¤ã€‚
+-->
+<p>
+&valid;ãªæ–‡æ›¸ã«ãŠã„ã¦ã¯ï¼Œã“ã®&TR-or-Rec;ã®ä»–ã®å ´æ‰€ã§è¦å®šã™ã‚‹ã¨ãŠã‚Šï¼Œã“ã®å±žæ€§ã‚’å¿…ãšå®£è¨€ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。通常,宣言ã¯ï¼Œæ¬¡ã®å½¢ã¨ã™ã‚‹ã€‚
+<eg>xml:lang NMTOKEN #IMPLIED</eg>
+å¿…è¦ãªã‚‰ã°ï¼Œç‰¹å®šã®&default-value;を与ãˆã¦ã‚‚よã„。英語をæ¯èªžã¨ã™ã‚‹å­¦ç”Ÿç”¨ã®ãƒ•ãƒ©ãƒ³ã‚¹èªžã®è©©é›†ã§ã¯ï¼Œèª¬æ˜ŽåŠã³æ³¨ã‚’英語ã§è¨˜è¿°ã™ã‚Œã°ï¼Œxml:lang 属性を次ã®ã¨ãŠã‚Šã«å®£è¨€ã™ã‚‹ã“ã¨ã¨ãªã‚‹ã€‚
+<eg><![CDATA[ <!ATTLIST poem xml:lang NMTOKEN 'fr'>
+ <!ATTLIST gloss xml:lang NMTOKEN 'en'>
+ <!ATTLIST note xml:lang NMTOKEN 'en'>]]></eg>
+</p>
+<!--
+DTDã®è¨­è¨ˆè€…ã¯ï¼Œã‚¹ã‚¯ãƒªãƒ—トを言語(åŠã³ãã®æ´¾ç”Ÿä½“)ã«åŒ…æ‘‚ã—ã¦æ‰±ã†ã®ã§ã¯ãªã,スクリプトåŠã³è¨€èªžã‚’åŒæ¬¡å…ƒã§æ‰±ã†ã®ãŒé©å½“ãªå ´åˆï¼Œè¨€èªžå±žæ€§ã¨åŒæ§˜ã«ã‚¹ã‚¯ãƒªãƒ—ト属性ãŒå­˜åœ¨ã™ã‚Œã°æœ‰ç”¨ã ã¨æ€ã†ã‹ã‚‚ã—ã‚Œãªã„。リンクè¦ç´ ã«ãŠã„ã¦ï¼Œå‚ç…§ã•ã‚ŒãŸåˆã¯ãƒªãƒ³ã‚¯ã•ã‚ŒãŸãƒªã‚½ãƒ¼ã‚¹ã«ãŠã‘ã‚‹(主è¦ãª)言語(å ´åˆã«ã‚ˆã£ã¦ã¯è¤‡æ•°)を表ã™è¦ç´ ã‚’定義ã™ã‚‹ã®ã‚‚望ã¾ã—ã„。ã—ã‹ã—,ã“れらã®&application;ã¯ï¼Œã“ã®&TR-or-Rec;ãŒè¦å®šã™ã‚‹ç¯„囲外ã¨ã™ã‚‹ã€‚-->
+</div2>
+</div1>
+<!-- &Elements; -->
+
+<div1 id='sec-logical-struct'>
+<head>è«–ç†æ§‹é€ </head>
+
+<p><termdef id="dt-element" term="Element">ã„ã‹ãªã‚‹<termref def="dt-xml-doc">XML文書</termref>も,一ã¤ä»¥ä¸Šã®<term>è¦ç´ </term>ã‚’å«ã‚€ã€‚è¦ç´ ã®å¢ƒç•Œã¯, <termref def="dt-stag">開始タグ</termref>åŠã³<termref def="dt-etag">終了タグ</termref>ã«ã‚ˆã£ã¦åŒºåˆ‡ã‚‹ã€‚è¦ç´ ãŒ<termref def="dt-empty">空</termref>è¦ç´ ã®ã¨ãã¯ï¼Œ<termref def="dt-eetag">空è¦ç´ ã‚¿ã‚°</termref>ã§ç¤ºã™ã€‚å„々ã®è¦ç´ ã¯ï¼Œåž‹ã‚’ã‚‚ã¤ã€‚è¦ç´ åž‹ã¯åå‰(共通&identifier;(generic identifier)åˆã¯GIã¨å‘¼ã¶ã“ã¨ãŒã‚る。)ã«ã‚ˆã£ã¦&identified;。è¦ç´ ã¯ï¼Œã„ãã¤ã‹ã®å±žæ€§ã‚’ã‚‚ã¤ã“ã¨ãŒã§ãる。</termdef>属性ã¯ï¼Œ<termref def="dt-attrname">åå‰</termref>åŠã³<termref def="dt-attrval">値</termref>ã‚’ã‚‚ã¤ã€‚</p>
+
+<scrap lang='ebnf'><head>è¦ç´ </head>
+<prod id='NT-element'><lhs>element</lhs>
+<rhs><nt def='NT-EmptyElemTag'>EmptyElemTag</nt></rhs>
+<rhs>| <nt def='NT-STag'>STag</nt> <nt def='NT-content'>content</nt>
+<nt def='NT-ETag'>ETag</nt></rhs><wfc def='GIMatch'/></prod>
+</scrap>
+<p>ã“ã®&TR-or-Rec;ã¯ï¼Œè¦ç´ åž‹åŠã³å±žæ€§ã®æ„味,使用方法,åˆã¯(構文ã«é–¢ã™ã‚‹ã“ã¨ã‚’除ã)åå‰ã«åˆ¶ç´„を与ãˆãªã„。ãŸã ã—,先頭ãŒ<code>(('X'|'x')('M'|'m')('L'|'l'))</code>ã«&match;ã™ã‚‹åå‰ã¯ï¼Œã“ã®ç‰ˆåˆã¯ä»Šå¾Œã®ç‰ˆã®ã“ã®&TR-or-Rec;ã§ã®æ¨™æº–化ã®ãŸã‚ã«äºˆç´„ã™ã‚‹ã€‚</p>
+
+<wfcnote id='GIMatch'><head>è¦ç´ åž‹ã®&match;</head>
+<p>è¦ç´ ã®çµ‚了タグã®<nt def='NT-Name'>åå‰</nt>ã¯ï¼Œãã®è¦ç´ ã®é–‹å§‹ã‚¿ã‚°ã«ãŠã‘ã‚‹åž‹ã¨&match;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+</wfcnote>
+
+<div2 id='sec-starttags'>
+<head>開始タグ,終了タグåŠã³ç©ºè¦ç´ ã‚¿ã‚°</head>
+<p><termdef id="dt-stag" term="Start-Tag">空ã§ãªã„ä»»æ„ã®XMLè¦ç´ ã®å§‹ã¾ã‚Šã¯ï¼Œ<term>開始タグ</term>ã«ã‚ˆã£ã¦&markup;ã™ã‚‹ã€‚
+<scrap lang='ebnf'><head>開始タグ</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5">
+<prod id='NT-STag'><lhs>STag</lhs><rhs>'&lt;' <nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt> <nt def='NT-Attribute'>Attribute</nt>)* <nt def='NT-S'>S</nt>? '>'</rhs><wfc def="uniqattspec"/></prod>
+<prod id='NT-Attribute'><lhs>Attribute</lhs><rhs><nt def='NT-Name'>Name</nt> <nt def='NT-Eq'>Eq</nt> <nt def='NT-AttValue'>AttValue</nt></rhs><vc def='ValueType'/><wfc def='NoExternalRefs'/><wfc def='CleanAttrVals'/></prod>
+</prodgroup>
+</scrap>
+開始タグåŠã³çµ‚了タグ内ã®<nt def='NT-Name'>Name</nt>ã¯ï¼Œè¦ç´ ã®<term>åž‹</term>を表ã‚ã™ã€‚</termdef><termdef id="dt-attr" term="Attribute"><nt def='NT-Name'>Name</nt>åŠã³<nt def='NT-AttValue'>AttValue</nt>ã®å¯¾ã‚’è¦ç´ ã®<term>属性指定</term>ã¨ã„ã„</termdef>,<termdef id="dt-attrname" term="Attribute Name">個々ã®å¯¾ã«ãŠã‘ã‚‹<nt def='NT-Name'>Name</nt>ã¯ï¼Œ<term>属性å</term></termdef>åŠã³<termdef id="dt-attrval" term="Attribute Value"><nt def='NT-AttValue'>AttValue</nt>ã®å†…容(区切りå­<code>'</code>åˆã¯<code>"</code>ã®é–“ã®&string;)ã‚’<term>属性値</term>ã¨ã„ã†ã€‚</termdef></p>
+
+<wfcnote id='uniqattspec'><head>属性指定ã®ä¸€æ„性</head>
+<p>開始タグåˆã¯ç©ºè¦ç´ ã‚¿ã‚°ã§ã¯ï¼ŒåŒä¸€ã®å±žæ€§åãŒï¼’度以上出ç¾ã—ã¦ã¯ãªã‚‰ãªã„。</p></wfcnote>
+<vcnote id='ValueType'><head>属性値ã®åž‹</head>
+<p>属性ã¯å®£è¨€ã•ã‚Œã¦ã„ãªã‘ã‚Œã°ãªã‚‰ãªã„。属性値ã®åž‹ã¯ï¼Œãã®å±žæ€§ã«å¯¾ã—ã¦å®£è¨€ã—ãŸåž‹ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„(属性ã®åž‹ã«ã¤ã„ã¦ã¯ï¼Œ<titleref href='AttDecls'>属性リスト宣言</titleref>ã«ã¤ã„ã¦ã®è¦å®šã‚’å‚照。)。</p></vcnote>
+<wfcnote id='NoExternalRefs'><head>外部実体ã¸ã®å‚ç…§ãŒãªã„ã“ã¨</head>
+<p>属性値ã«ã¯ï¼Œå¤–部実体ã¸ã®ç›´æŽ¥çš„åˆã¯é–“接的ãªå‚照をå«ã‚€ã“ã¨ã¯ã§ããªã„。</p></wfcnote>
+<wfcnote id='CleanAttrVals'><head>属性値ã«<code>&lt;</code>ã‚’å«ã¾ãªã„ã“ã¨</head>
+<p>属性値内ã§ç›´æŽ¥çš„åˆã¯é–“接的ã«å‚ç…§ã™ã‚‹å®Ÿä½“(<code>&amp;lt;</code>を除ã。)ã®<termref def='dt-repltext'>&replacement-text;</termref>ã«ã¯ï¼Œ<code>&lt;</code>ã‚’å«ã‚“ã§ã¯ãªã‚‰ãªã„。</p></wfcnote>
+
+<p>開始タグã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg>&lt;termdef id="dt-dog" term="dog"></eg></p>
+<p><termdef id="dt-etag" term="End Tag">開始タグã§å§‹ã¾ã‚‹è¦ç´ ã®çµ‚ã‚ã‚Šã¯ï¼Œ<term>終了タグ</term>ã§&markup;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。ã“ã®çµ‚了タグã¯ï¼Œå¯¾å¿œã™ã‚‹é–‹å§‹ã‚¿ã‚°ã®è¦ç´ åž‹ã¨åŒã˜åå‰ã‚’ã‚‚ã¤ã€‚
+<scrap lang='ebnf'><head>終了タグ</head><prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-ETag'><lhs>ETag</lhs><rhs>'&lt;/' <nt def='NT-Name'>Name</nt> <nt def='NT-S'>S</nt>? '>'</rhs></prod></prodgroup></scrap></termdef></p>
+<p>終了タグã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg>&lt;/termdef></eg></p>
+
+<p><termdef id="dt-content" term="Content">è¦ç´ ã®é–‹å§‹ã‚¿ã‚°ã¨çµ‚了タグã¨ã®é–“ã®<termref def='dt-text'>テキスト</termref>を,ãã®è¦ç´ ã®<term>内容</term>ã¨ã„ã†ã€‚
+<scrap lang='ebnf'><head>è¦ç´ ã®å†…容</head>
+<prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-content'><lhs>content</lhs><rhs>(<nt def='NT-element'>element</nt> | <nt def='NT-CharData'>CharData</nt> | <nt def='NT-Reference'>Reference</nt> | <nt def='NT-CDSect'>CDSect</nt> | <nt def='NT-PI'>PI</nt> | <nt def='NT-Comment'>Comment</nt>)*</rhs></prod></prodgroup></scrap></termdef></p>
+
+<p><termdef id="dt-empty" term="Empty">è¦ç´ ãŒ<term>空</term>ã®ã¨ã,ãã®è¦ç´ ã¯ï¼Œç›´å¾Œã«çµ‚了タグをもã¤é–‹å§‹ã‚¿ã‚°åˆã¯ç©ºè¦ç´ ã‚¿ã‚°ã§è¡¨ç¾ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。</termdef><termdef id="dt-eetag" term="empty-element tag"><term>空è¦ç´ ã‚¿ã‚°</term>ã¯ï¼Œæ¬¡ã®ç‰¹åˆ¥ãªå½¢å¼ã‚’ã¨ã‚‹ã€‚
+<scrap lang='ebnf'><head>空è¦ç´ ã®ãŸã‚ã®ã‚¿ã‚°</head><prodgroup pcw2="6" pcw4="15" pcw5="11.5"><prod id='NT-EmptyElemTag'><lhs>EmptyElemTag</lhs><rhs>'&lt;' <nt def='NT-Name'>Name</nt> (<nt def='NT-S'>S</nt> <nt def='NT-Attribute'>Attribute</nt>)* <nt def='NT-S'>S</nt>? '/&gt;'</rhs><wfc def="uniqattspec"/></prod></prodgroup></scrap></termdef></p>
+
+<!-- 門馬:上ã®â€œç©ºè¦ç´ ã®ãŸã‚ã®ã‚¿ã‚°(tags for empty elements)â€ã¯â€œç©ºè¦ç´ ã‚¿ã‚°(empty-element tag)â€ã¨ã™ã¹ãã ã¨æ€ã„ã¾ã™ãŒï¼Œã„ã‹ãŒã§ã—ょã†ã‹ -->
+
+<p>空è¦ç´ ã‚¿ã‚°ã¯ï¼Œå†…容をもãŸãªã„ä»»æ„ã®è¦ç´ ã®è¡¨ç¾ã«åˆ©ç”¨ã§ãる。空è¦ç´ ã‚¿ã‚°ã§è¡¨ç¾ã™ã‚‹è¦ç´ ã‚’,キーワード<kw>EMPTY</kw>を用ã„ã¦å®£è¨€ã—ãªãã¨ã‚‚よã„。</p>
+<p>空è¦ç´ ã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg>&lt;IMG align="left" src="http://www.w3.org/Icons/WWW/w3c_home" />&lt;br>&lt;/br>&lt;br/></eg></p>
+</div2>
+
+<div2 id='elemdecls'><head>è¦ç´ å®£è¨€</head>
+<p><termref def="dt-valid">&validity;</termref>ã‚’ä¿è¨¼ã™ã‚‹ãŸã‚,è¦ç´ å®£è¨€åŠã³å±žæ€§ãƒªã‚¹ãƒˆå®£è¨€ã‚’用ã„ã¦<termref def="dt-xml-doc">XML文書</termref>ã®<termref def="dt-element">è¦ç´ </termref>ã®æ§‹é€ ã«ï¼Œåˆ¶ç´„を加ãˆã‚‹ã“ã¨ãŒã§ãる。</p>
+<p>è¦ç´ å®£è¨€ã¯ï¼Œè¦ç´ ã®<termref def="dt-content">内容</termref>ã«ã¤ã„ã¦ã®åˆ¶ç´„ã¨ã™ã‚‹ã€‚</p>
+<p>è¦ç´ å®£è¨€ã¯ï¼Œè¦ç´ ã®<termref def="dt-parentchild">å­</termref>ã¨ã—ã¦å‡ºç¾å¯èƒ½ãªè¦ç´ åž‹ã«ã¤ã„ã¦ï¼Œåˆ¶ç´„を加ãˆã‚‹ã“ã¨ãŒå¤šã„。&at-user-option;,è¦ç´ å®£è¨€ã‚’ã‚‚ãŸãªã„è¦ç´ åž‹ãŒä»–ã®è¦ç´ å®£è¨€ã«ã‚ˆã£ã¦å‚ç…§ã•ã‚Œã‚Œã°ï¼ŒXML&processor;ã¯ï¼Œè­¦å‘Šã‚’出ã—ã¦ã‚‚よã„。ã—ã‹ã—,ã“ã‚Œã¯&error;ã¨ã¯ã—ãªã„。</p>
+
+<p><termdef id="dt-eldecl" term="Element Type declaration"><term>è¦ç´ åž‹å®£è¨€</term>ã¯ï¼Œæ¬¡ã®å½¢å¼ã‚’ã¨ã‚‹ã€‚
+<scrap lang='ebnf'><head>è¦ç´ åž‹å®£è¨€</head><prodgroup pcw2="5.5" pcw4="18" pcw5="9">
+<prod id='NT-elementdecl'><lhs>elementdecl</lhs>
+<rhs>'&lt;!ELEMENT' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>
+<nt def='NT-contentspec'>contentspec</nt>
+<nt def='NT-S'>S</nt>? '>'</rhs>
+<vc def='EDUnique'/></prod>
+<prod id='NT-contentspec'><lhs>contentspec</lhs>
+<rhs>'EMPTY'
+| 'ANY'
+| <nt def='NT-Mixed'>Mixed</nt>
+| <nt def='NT-children'>children</nt>
+</rhs>
+<vc def='elementvalid'/>
+</prod>
+</prodgroup>
+</scrap>
+ã“ã“ã§ï¼Œ<nt def='NT-Name'>Name</nt>ã¯ï¼Œå®£è¨€ã•ã‚Œã¦ã„ã‚‹è¦ç´ ã®åž‹ã¨ã™ã‚‹ã€‚</termdef></p>
+
+<vcnote id='EDUnique'><head>è¦ç´ å®£è¨€ã®ä¸€æ„性</head>
+<p>è¦ç´ åž‹ã‚’2度以上宣言ã§ããªã„。</p></vcnote>
+
+<vcnote id='elementvalid'><head>è¦ç´ ã®&validity;</head>
+<p>è¦ç´ ãŒ<!-- said to be -->&valid;ã¨ã¯ï¼Œ<nt def='NT-elementdecl'>elementdecl</nt>ã«&match;ã™ã‚‹å®£è¨€ã§ã‚ã£ã¦ï¼Œãã®<nt def='NT-Name'>Name</nt>ãŒãã®è¦ç´ åž‹ã¨&match;ã—,次ã®ã„ãšã‚Œã‹ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã¨ã™ã‚‹ã€‚<ulist>
+<item><p>a) 宣言ãŒ<kw>EMPTY</kw>ã«&match;ã—,è¦ç´ ãŒ<termref def='dt-content'>内容</termref>ã‚’ã‚‚ãŸãªã„。</p></item>
+<item><p>b) 宣言ãŒ<nt def='NT-children'>children</nt>ã«&match;ã—,è¦ç´ ã®<termref def="dt-parentchild">å­è¦ç´ </termref>ã®ä¸¦ã³ãŒï¼Œå†…容モデルã®æ­£è¦è¡¨ç¾ã«ã‚ˆã£ã¦ç”Ÿæˆã•ã‚Œã‚‹è¨€èªžã«å±žã™ã‚‹ã€‚</p></item>
+<item><p>c) 宣言ãŒ<nt def='NT-Mixed'>mixed</nt>ã«&match;ã—,è¦ç´ ã®å†…容ãŒ<termref def='dt-chardata'>文字データ</termref>åŠã³<termref def='dt-parentchild'>å­è¦ç´ </termref>ã‹ã‚‰ãªã‚‹ã€‚å­è¦ç´ ã®è¦ç´ åž‹ã¯ï¼Œè¦ç´ ã®å†…容モデルã«å‡ºç¾ã™ã‚‹åå‰ã«&match;ã™ã‚‹ã€‚</p></item>
+<item><p>d) 宣言ãŒ<kw>ANY</kw>ã«&match;ã—,ã©ã®<termref def='dt-parentchild'>å­è¦ç´ </termref>ã®è¦ç´ åž‹ã‚‚宣言ã•ã‚Œã¦ã„る。</p></item></ulist>
+
+</p></vcnote>
+<!-- with the new VC, I don't think the next few paras add anything -TWB
+<p><termdef id="dt-model" term="content model">An element can declared using a <term>content model</term>, in which case its content can be categorized as <termref def="dt-elemcontent">element content</termref> or <termref def='dt-mixed'>mixed content</termref>, as explained below.</termdef></p>
+<p>An element whose type declared using the keyword <kw>EMPTY</kw> must be <termref def="dt-empty">empty</termref> and may be tagged using an <termref def="dt-eetag">empty-element tag</termref> when it appears in the document.</p>
+<p>If an element type is declared using the keyword <kw>ANY</kw>, then there are no validity constraints on its content: it may contain <termref def='dt-parentchild'>child elements</termref> of any type and number, interspersed with character data.</p> -->
+
+<p>è¦ç´ å®£è¨€ã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg>
+&lt;!ELEMENT br EMPTY>
+&lt;!ELEMENT p (#PCDATA|emph)* >
+&lt;!ELEMENT %name.para; %content.para; >
+&lt;!ELEMENT container ANY>
+</eg></p>
+
+<div3 id='sec-element-content'><head>è¦ç´ å†…容</head>
+
+<p><termdef id='dt-elemcontent' term='Element content'>ã‚ã‚‹åž‹ã®è¦ç´ ãŒ<termref def='dt-parentchild'>å­</termref>è¦ç´ ã ã‘ã‚’å«ã‚€(文字データをå«ã¾ãªã„。)ã¨ã,ãã®è¦ç´ <termref def="dt-stag">åž‹</termref>ã¯ï¼Œ<term>è¦ç´ å†…容</term>ã‚’ã‚‚ã¤ï¼Œã¨ã„ã†ã€‚</termdef>ã“ã®å ´åˆï¼Œåˆ¶ç´„ã¯ï¼Œå†…容モデルをå«ã‚€ã€‚内容モデルã¯ï¼Œå­è¦ç´ ã®åž‹åŠã³å­è¦ç´ ã®å‡ºç¾é †åºã‚’制御ã™ã‚‹ç°¡å˜ãªæ–‡æ³•ã¨ã™ã‚‹ã€‚ã“ã®æ–‡æ³•ã¯ï¼Œ&content-particle;(<nt def='NT-cp'>cp</nt>s)ã‹ã‚‰ãªã‚‹ã€‚&content-particle;ã¯ï¼Œåå‰ï¼Œ&content-particle;ã®é¸æŠžãƒªã‚¹ãƒˆåˆã¯&content-particle;ã®åˆ—リストã‹ã‚‰æ§‹æˆã•ã‚Œã‚‹ã€‚
+<scrap lang='ebnf'><head>è¦ç´ å†…容モデル</head><prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id='NT-children'><lhs>children</lhs><rhs>(<nt def='NT-choice'>choice</nt> | <nt def='NT-seq'>seq</nt>) ('?' | '*' | '+')?</rhs></prod><prod id='NT-cp'><lhs>cp</lhs><rhs>(<nt def='NT-Name'>Name</nt> | <nt def='NT-choice'>choice</nt> | <nt def='NT-seq'>seq</nt>) ('?' | '*' | '+')?</rhs></prod>
+<prod id='NT-choice'><lhs>choice</lhs><rhs>'(' <nt def='NT-S'>S</nt>? cp ( <nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*<nt def='NT-S'>S</nt>? ')'</rhs><vc def='vc-PEinGroup'/></prod>
+<prod id='NT-seq'><lhs>seq</lhs><rhs>'(' <nt def='NT-S'>S</nt>? cp ( <nt def='NT-S'>S</nt>? ',' <nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> )*<nt def='NT-S'>S</nt>? ')'</rhs><vc def='vc-PEinGroup'/></prod>
+<!-- <prod id='NT-cps'><lhs>cps</lhs><rhs><nt def='NT-S'>S</nt>? <nt def='NT-cp'>cp</nt> <nt def='NT-S'>S</nt>?</rhs></prod>
+<prod id='NT-choice'><lhs>choice</lhs><rhs>'(' <nt def='NT-S'>S</nt>? <nt def='NT-ctokplus'>ctokplus</nt> (<nt def='NT-S'>S</nt>? '|' <nt def='NT-S'>S</nt>? <nt def='NT-ctoks'>ctoks</nt>)* <nt def='NT-S'>S</nt>? ')'</rhs></prod>
+<prod id="NT-ctokplus"><lhs>ctokplus</lhs><rhs><nt def="NT-cps">cps</nt>('|' <nt def="NT-cps">cps</nt>)+</rhs></prod>
+<prod id="NT-ctoks"><lhs>ctoks</lhs><rhs><nt def="NT-cps">cps</nt>('|' <nt def="NT-cps">cps</nt>)*</rhs></prod>
+<prod id='NT-seq'><lhs>seq</lhs><rhs>'(' <nt def='NT-S'>S</nt>?<nt def='NT-stoks'>stoks</nt> (<nt def='NT-S'>S</nt>? ',' <nt def='NT-S'>S</nt>? <nt def='NT-stoks'>stoks</nt>)*<nt def='NT-S'>S</nt>? ')'</rhs></prod>
+<prod id="NT-stoks"><lhs>stoks</lhs><rhs><nt def="NT-cps">cps</nt>(',' <nt def="NT-cps">cps</nt>)*</rhs></prod>
+-->
+</prodgroup></scrap>
+ã“ã“ã§ï¼Œ<nt def='NT-Name'>Name</nt>ã¯ï¼Œ<termref def="dt-parentchild">å­</termref>ã¨ã—ã¦å‡ºç¾ã—ã¦ã‚ˆã„è¦ç´ ã®åž‹ã‚’示ã™ã€‚ã“ã®æ–‡æ³•ã§é¸æŠžãƒªã‚¹ãƒˆãŒç¾ã‚Œã‚‹ä½ç½®ã§ã¯ï¼Œé¸æŠžãƒªã‚¹ãƒˆå†…ã®ã„ãšã‚Œã®&content-particle;ã‚‚<termref def="dt-elemcontent">è¦ç´ å†…容</termref>ã®ä¸­ã«ç¾ã‚Œã¦ã‚ˆã„。列リストã«ç¾ã‚Œã‚‹&content-particle;ã¯ï¼Œãƒªã‚¹ãƒˆã§æŒ‡å®šã™ã‚‹é †ç•ªã®ã¨ãŠã‚Šã«ï¼Œ<termref def="dt-elemcontent">è¦ç´ å†…容</termref>ã«ç¾ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„。åå‰åˆã¯ãƒªã‚¹ãƒˆã®å¾Œã«å‡ºç¾ã™ã‚‹ã‚ªãƒ—ションã®æ–‡å­—<!-- 門馬:characterを文字ã¨è¨³ã—ã¾ã—㟠-->ã¯ï¼Œãƒªã‚¹ãƒˆå†…ã®è¦ç´ åˆã¯&content-particle;ãŒï¼Œ1回以上任æ„ã®å›žæ•°(<code>+</code>),0回以上任æ„ã®å›žæ•°(<code>*</code>)åˆã¯0回若ã—ãã¯1回(<code>?</code>)出ç¾å¯èƒ½ãªã“ã¨ã‚’è¦å®šã™ã‚‹ã€‚ã“ã“ã§ç¤ºã™æ§‹æ–‡åŠã³æ„味ã¯ï¼Œã“ã®&TR-or-Rec;ã«ãŠã‘る生æˆè¦å‰‡ã§ç”¨ã„ã‚‹ã‚‚ã®ã¨åŒä¸€ã¨ã™ã‚‹ã€‚</p>
+
+<!-- 門馬:上ã®æ–‡ã§ã¯ï¼Œâ€œnameåˆã¯listã®å¾Œã«ç¶šã文字â€ãŒâ€œlistã®å‡ºç¾ã‚’è¦å®šã™ã‚‹â€ã¨ã‚ã£ã¦ï¼Œnameã®å‡ºç¾ã‚’è¦å®šã™ã‚‹ã¨ã¯æ›¸ã„ã¦ã‚ã‚Šã¾ã›ã‚“。修正ãŒå¿…è¦ã¨è€ƒãˆã¾ã™ã€‚ -->
+
+<p>è¦ç´ ã®å†…容ãŒå†…容モデルã«&match;ã™ã‚‹ã®ã¯ï¼Œåˆ—,é¸æŠžåŠã³ç¹°è¿”ã—演算å­ã«ã—ãŸãŒã£ã¦ï¼Œå†…容ã®ä¸­ã®è¦ç´ ã¨å†…容モデル内ã®è¦ç´ åž‹ã¨ã‚’&match;ã•ã›ãªãŒã‚‰ï¼Œå†…容モデル内ã®ä¸€ã¤ã®ãƒ‘スをãŸã©ã‚Œã‚‹ã¨ãã«é™ã‚‹ã€‚<termref def='dt-compat'>互æ›æ€§ã®ãŸã‚</termref>,文書内ã®è¦ç´ ãŒï¼Œå†…容モデルã«ãŠã‘ã‚‹è¦ç´ åž‹ã®è¤‡æ•°ã®å‡ºç¾ä½ç½®ã¨&match;ã™ã‚‹ã“ã¨ã¯ï¼Œ&error;ã¨ã™ã‚‹ã€‚詳細ãªè¦å®šã«ã¤ã„ã¦ã¯ï¼Œé™„属書ã®<titleref xml-link="simple" href="determinism">決定的内容モデル</titleref>ã®é …ã‚’å‚照。
+<!-- appendix <specref ref="determinism"/>. -->
+<!-- appendix on deterministic content models. -->
+</p>
+
+<vcnote id='vc-PEinGroup'>
+<head>グループåŠã³ãƒ‘ラメタ実体ãŒåŽ³å¯†ãªå…¥ã‚Œå­ã‚’ãªã—ã¦ã„ã‚‹ã“ã¨</head>
+<p>パラメタ実体ã®<termref def='dt-repltext'>&replacement-text;</termref>ã¯ï¼Œ&parenthesis;ã§å›²ã¾ã‚ŒãŸã‚°ãƒ«ãƒ¼ãƒ—ã«ã‚ˆã£ã¦ï¼ŒåŽ³å¯†ãªå…¥ã‚Œå­ã‚’構æˆã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。ã¤ã¾ã‚Šï¼Œ<nt def='NT-choice'>é¸æŠž</nt>,<nt def='NT-seq'>列</nt>åˆã¯<nt def='NT-Mixed'>混在</nt>部å“ã«ï¼Œ&left-parenthesis;åˆã¯&right-parenthesis;ã®ã„ãšã‚Œã‹ä¸€æ–¹ãŒ<termref def='dt-PERef'>パラメタ実体</termref>ã®&replacement-text;ã«å«ã‚Œã‚Œã°ï¼Œä»–方もåŒã˜&replacement-text;ã«å«ã¾ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+<p><termref def='dt-interop'>相互é‹ç”¨æ€§ã®ãŸã‚</termref>,パラメタ実体å‚ç…§ãŒ<nt def='NT-choice'>é¸æŠž</nt>,<nt def='NT-seq'>列</nt>åˆã¯<nt def='NT-Mixed'>混在</nt>内容ã«å«ã¾ã‚Œã‚Œã°ï¼Œãã®&replacement-text;ã¯ç©ºã§ãªã„ã“ã¨ãŒæœ›ã¾ã—ã,&replacement-text;ã®å…ˆé ­åŠã³æœ«å°¾ã®ç©ºç™½ã§ãªã„文字ã¯ï¼Œã‚³ãƒã‚¯ã‚¿(<code>|</code>åˆã¯<code>,</code>)ã§ãªã„æ–¹ãŒã‚ˆã„。
+</p>
+</vcnote>
+<p>è¦ç´ å†…容モデルã®ã„ãã¤ã‹ã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg>&lt;!ELEMENT spec (front, body, back?)>
+&lt;!ELEMENT div1 (head, (p | list | note)*, div2*)>
+&lt;!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*></eg></p>
+</div3>
+
+<div3 id='sec-mixed-content'>
+<head>&mixed-content;</head>
+
+<p><termdef id='dt-mixed' term='Mixed Content'>ã‚ã‚‹è¦ç´ åž‹ã®è¦ç´ å†…ã«ï¼Œ<termref def="dt-parentchild">å­</termref>è¦ç´ ã«æ··åœ¨ã—ã¦æ–‡å­—データãŒå«ã¾ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ã¨ã,ãã®è¦ç´ <termref def='dt-stag'>åž‹</termref>ã¯ï¼Œ<term>&mixed-content;</term>ã‚’ã‚‚ã¤ã¨ã„ã†ã€‚</termdef>ã“ã®å ´åˆï¼Œå­è¦ç´ ã®åž‹ã«ã¤ã„ã¦ã®åˆ¶ç´„ãŒå­˜åœ¨ã—ã¦ã‚‚よã„<!-- 門馬:“may be constrainedâ€ã‚’å˜ã«ã€Œåˆ¶ç´„ã•ã‚Œã‚‹ã€ã¨è¨³ã—ã¾ã—ãŸã€‚ -->ãŒï¼Œå­è¦ç´ ã®é †åºåˆã¯å‡ºç¾å›žæ•°ã«ã¤ã„ã¦ã®åˆ¶ç´„ã¯ãªã„ã¨ã™ã‚‹ã€‚
+<scrap lang='ebnf'>
+<head>&mixed-content;宣言</head>
+<prodgroup pcw2="5.5" pcw4="16" pcw5="11">
+<prod id='NT-Mixed'><lhs>Mixed</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>?
+'#PCDATA'
+(<nt def='NT-S'>S</nt>?
+'|'
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>)*
+<nt def='NT-S'>S</nt>?
+')*' </rhs>
+<rhs>| '(' <nt def='NT-S'>S</nt>? '#PCDATA' <nt def='NT-S'>S</nt>? ')'
+</rhs><vc def='vc-PEinGroup'/>
+<vc def='vc-MixedChildrenUnique'/>
+</prod>
+<!--
+<prod id="NT-Mtoks"><lhs>Mtoks</lhs>
+<rhs><nt def="NT-Name">Name</nt>
+(<nt def='NT-S'>S</nt>?
+'|'
+<nt def='NT-S'>S</nt>?
+<nt def="NT-Name">Name</nt>)*
+</rhs>
+</prod>
+-->
+</prodgroup>
+</scrap>
+ã“ã“ã§ï¼Œ<nt def='NT-Name'>Name</nt>ã¯ï¼Œå­ã¨ã—ã¦å‡ºç¾ã—ã¦ã‚‚よã„è¦ç´ ã®åž‹ã‚’示ã™ã€‚
+</p>
+
+<vcnote id='vc-MixedChildrenUnique'>
+<head>è¦ç´ åž‹ã®é‡è¤‡ã®ç¦æ­¢</head>
+<p>一ã¤ã®&mixed-content;宣言内ã«ï¼ŒåŒã˜åå‰ãŒè¤‡æ•°å›žå‡ºç¾ã—ã¦ã¯ãªã‚‰ãªã„。
+</p></vcnote>
+<p>&mixed-content;宣言ã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg>&lt;!ELEMENT p (#PCDATA|a|ul|b|i|em)*>
+&lt;!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >
+&lt;!ELEMENT b (#PCDATA)></eg></p>
+</div3>
+</div2>
+
+
+<div2 id='attdecls'>
+<head>属性リスト宣言</head>
+<p>
+<termref def="dt-attr">属性</termref>ã¯ï¼Œåå‰åŠã³å€¤ã®å¯¾ã‚’<termref def="dt-element">è¦ç´ </termref>ã«é–¢é€£ä»˜ã‘ã‚‹ãŸã‚ã«ç”¨ã„る。属性指定ã¯ï¼Œ<termref def="dt-stag">開始タグ</termref>åˆã¯<termref def="dt-eetag">空è¦ç´ </termref>タグ内ã§ã ã‘å¯èƒ½ã¨ã™ã‚‹ã€‚ã—ãŸãŒã£ã¦ï¼Œå±žæ€§ã‚’èªè­˜ã™ã‚‹ãŸã‚ã®ç”Ÿæˆè¦å‰‡ã¯ï¼Œ<titleref href='sec-starttags'>開始タグ</titleref>ã«ã¤ã„ã¦ã®è¦å®šã§ç¤ºã™ã€‚属性リスト宣言ã¯ï¼Œæ¬¡ã®ç›®çš„ã§ç”¨ã„る。
+<ulist>
+<item><p>a) ã‚ã‚‹è¦ç´ åž‹ã«é©ç”¨ã™ã‚‹å±žæ€§ã®é›†åˆã‚’è¦å®šã™ã‚‹ã€‚</p></item>
+<item><p>b) 属性ã¸ã®åž‹åˆ¶ç´„を設定ã™ã‚‹ã€‚</p></item>
+<item><p>c) 属性ã®<termref def="dt-default">&default-value;</termref>ã‚’è¦å®šã™ã‚‹ã€‚</p></item>
+</ulist>
+</p>
+<p>
+<termdef id="dt-attdecl" term="Attribute-List Declaration">
+<term>属性リスト宣言</term>ã¯ï¼Œã‚ã‚‹è¦ç´ åž‹ã¨é–¢é€£ä»˜ã‘られãŸå„属性ã«å¯¾ã—,åå‰ï¼Œãƒ‡ãƒ¼ã‚¿åž‹åŠã³(存在ã™ã‚Œã°)&default-value;ã‚’è¦å®šã™ã‚‹ã€‚
+<scrap lang='ebnf'>
+<head>属性リスト宣言</head>
+<prod id='NT-AttlistDecl'><lhs>AttlistDecl</lhs>
+<rhs>'&lt;!ATTLIST' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-AttDef'>AttDef</nt>*
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+</prod>
+<prod id='NT-AttDef'><lhs>AttDef</lhs>
+<rhs><nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-AttType'>AttType</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-Default'>Default</nt></rhs>
+</prod>
+</scrap>
+
+<nt def='NT-AttlistDecl'>AttlistDecl</nt>è¦å‰‡ã«å­˜åœ¨ã™ã‚‹<nt def="NT-Name">Name</nt>ã¯ï¼Œè¦ç´ åž‹ã®åå‰ã¨ã™ã‚‹ã€‚&at-user-option;,宣言ã—ã¦ã„ãªã„è¦ç´ åž‹ã«å¯¾ã—属性を宣言ã—ãŸãªã‚‰ã°ï¼ŒXML&processor;ã¯ï¼Œè­¦å‘Šã‚’出ã—ã¦ã‚‚よã„。ã—ã‹ã—,ã“ã‚Œã¯&error;ã¨ã¯ã—ãªã„。
+<nt def='NT-AttDef'>AttDef</nt>è¦å‰‡ã«ãŠã‘ã‚‹<nt def='NT-Name'>Name</nt>ã¯ï¼Œå±žæ€§ã®åå‰ã¨ã™ã‚‹ã€‚
+</termdef>
+</p>
+<p>
+ã‚ã‚‹è¦ç´ ã«å¯¾ã—ã¦ï¼Œè¤‡æ•°ã®<nt def='NT-AttlistDecl'>AttlistDecl</nt>を与ãˆã‚‹å ´åˆï¼Œã“れらã™ã¹ã¦ã®å†…容ã¯ãƒžãƒ¼ã‚¸ã™ã‚‹ã€‚ã‚ã‚‹è¦ç´ åž‹ã®åŒã˜å±žæ€§ã«ï¼Œè¤‡æ•°ã®å®šç¾©ã‚’与ãˆã‚‹å ´åˆã«ã¯ï¼Œæœ€åˆã®å®£è¨€ã‚’有効ã¨ã—,他ã®å®£è¨€ã¯ç„¡è¦–ã™ã‚‹ã€‚<termref def='dt-interop'>相互é‹ç”¨æ€§ã®ãŸã‚ã«</termref>,DTDã®ä½œæˆè€…ã¯ï¼Œã‚ã‚‹è¦ç´ åž‹ã«ã¯é«˜ã€…一ã¤ã®å±žæ€§ãƒªã‚¹ãƒˆå®£è¨€ã—ã‹ä¸Žãˆãªã„,ã‚る属性åã«ã¯é«˜ã€…一ã¤ã®å±žæ€§å®šç¾©ã—ã‹ä¸Žãˆãªã„,åŠã³ã™ã¹ã¦ã®å±žæ€§ãƒªã‚¹ãƒˆå®£è¨€ã«ã¯å°‘ãªãã¨ã‚‚一ã¤ã®å±žæ€§å®šç¾©ã‚’与ãˆã‚‹ï¼Œã¨ã„ã†é¸æŠžã‚’ã—ã¦ã‚‚よã„。相互é‹ç”¨æ€§ã®ãŸã‚ã«ï¼ŒXML&processor;ã¯ï¼Œ&at-user-option;,ã‚ã‚‹è¦ç´ åž‹ã«è¤‡æ•°ã®å±žæ€§ãƒªã‚¹ãƒˆå®£è¨€ã‚’与ãˆãŸã‚Šï¼Œã‚る属性ã«è¤‡æ•°ã®å±žæ€§å®šç¾©ã‚’与ãˆãŸã‚Šã—ãŸã¨ãã«ï¼Œè­¦å‘Šã‚’出ã—ã¦ã‚‚よã„。ã—ã‹ã—,ã“ã‚Œã¯ï¼Œ&error;ã¨ã¯ã—ãªã„。
+</p>
+
+<div3 id='sec-attribute-types'>
+<head>属性ã®åž‹</head>
+<p>
+XMLã®å±žæ€§ã®åž‹ã¯ï¼Œï¼“種類ã¨ã™ã‚‹ã€‚ã“れらã¯ï¼Œ&string;型,&token;化型åŠã³åˆ—挙型ã¨ã™ã‚‹ã€‚&string;åž‹ã¯ï¼Œå€¤ã¨ã—ã¦ä»»æ„ã®&string;ã‚’ã¨ã‚‹ã€‚&token;化型ã¯ï¼Œæ¬¡ã«ç¤ºã™å­—å¥åŠã³æ„味ã«é–¢ã™ã‚‹æ§˜ã€…ãªåˆ¶ç´„ã‚’ã‚‚ã¤ã€‚
+
+<scrap lang='ebnf'>
+<head>Attribute Types</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id='NT-AttType'><lhs>AttType</lhs>
+<rhs><nt def='NT-StringType'>StringType</nt>
+| <nt def='NT-TokenizedType'>TokenizedType</nt>
+| <nt def='NT-EnumeratedType'>EnumeratedType</nt>
+</rhs>
+</prod>
+<prod id='NT-StringType'><lhs>StringType</lhs>
+<rhs>'CDATA'</rhs>
+</prod>
+<prod id='NT-TokenizedType'><lhs>TokenizedType</lhs>
+<rhs>'ID'</rhs>
+<vc def='id'/>
+<vc def='one-id-per-el'/>
+<vc def='id-default'/>
+<rhs>| 'IDREF'</rhs>
+<vc def='idref'/>
+<rhs>| 'IDREFS'</rhs>
+<vc def='idref'/>
+<rhs>| 'ENTITY'</rhs>
+<vc def='entname'/>
+<rhs>| 'ENTITIES'</rhs>
+<vc def='entname'/>
+<rhs>| 'NMTOKEN'</rhs>
+<vc def='nmtok'/>
+<rhs>| 'NMTOKENS'</rhs>
+<vc def='nmtok'/></prod>
+</prodgroup>
+</scrap>
+</p>
+
+<vcnote id='id' >
+<head>ID</head>
+<p>
+ã“ã®åž‹ã®å€¤ã¯ï¼Œç”Ÿæˆè¦å‰‡<code>Name</code>ã«&match;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。一ã¤ã®XML文書内ã§ã¯ï¼Œä¸€ã¤ã®åå‰ãŒï¼Œã“ã®åž‹ã®å€¤ã¨ã—ã¦è¤‡æ•°å›žç¾ã‚Œã¦ã¯ãªã‚‰ãªã„。ã¤ã¾ã‚Šï¼ŒIDã®å€¤ã¯ï¼Œè¦ç´ ã‚’一æ„ã«&identify;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+</vcnote>
+<vcnote id='one-id-per-el'>
+<head>1è¦ç´ ã”ã¨ã«1ID</head>
+<p>
+è¦ç´ åž‹ã¯ï¼Œè¤‡æ•°ã®ID属性値をもã£ã¦ã¯ãªã‚‰ãªã„。
+</p>
+</vcnote>
+<vcnote id='id-default'>
+<head>ID属性ã®&default;</head>
+<p>
+ID属性ã¯ï¼Œ&default;ã¨ã—ã¦ï¼Œ<code>#IMPLIED</code>åˆã¯<code>#REQUIRED</code>を宣言ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+</vcnote>
+<vcnote id='idref'>
+<head>IDREF</head>
+<p>
+<kw>IDREF</kw>åž‹ã®å€¤ã¯ï¼Œç”Ÿæˆè¦å‰‡<nt def="NT-Name">Name</nt>ã«&match;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。<kw>IDREFS</kw>åž‹ã®å€¤ã¯ï¼Œç”Ÿæˆè¦å‰‡<nt def="NT-Names">Names</nt>ã«&match;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。å„々ã®<nt def='NT-Name'>Name</nt>ã¯ï¼ŒXML文書内ã«å­˜åœ¨ã™ã‚‹è¦ç´ ã®ID属性ã®å€¤ã¨&match;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。ã¤ã¾ã‚Šï¼Œ<kw>IDREF</kw>ã®å€¤ã¯ï¼Œã‚ã‚‹ID属性ã®å€¤ã¨&match;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+</vcnote>
+<vcnote id='entname'>
+<head>実体å</head>
+<p>
+<kw>ENTITY</kw>åž‹ã®å€¤ã¯ï¼Œç”Ÿæˆè¦å‰‡<nt def="NT-Name">Name</nt>ã«&match;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。<kw>ENTITIES</kw>åž‹ã®å€¤ã¯ï¼Œç”Ÿæˆè¦å‰‡<nt def="NT-Names">Names</nt>ã«&match;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。å„々ã®<nt def="NT-Name">Name</nt>ã¯ï¼Œ<termref def="dt-doctype">DTD</termref>ã§å®£è¨€ã™ã‚‹<termref def="dt-unparsed">&unparsed-entity;</termref>ã¨&match;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+</vcnote>
+<vcnote id='nmtok'>
+<head>åå‰&token;</head>
+<p>
+<kw>NMTOKEN</kw>åž‹ã®å€¤ã¯ï¼Œéžçµ‚端記å·<termref def="NT-Nmtoken">Nmtoken</termref>ã¨&match;ã™ã‚‹&string;ã‹ã‚‰æ§‹æˆã•ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„。<kw>NMTOKENS</kw>åž‹ã®å€¤ã¯ï¼Œéžçµ‚端記å·<termref def="NT-Nmtokens">Nmtokens</termref>ã¨&match;ã™ã‚‹&string;ã‹ã‚‰æ§‹æˆã•ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+</vcnote>
+<p>
+XML&processor;ã¯ï¼Œ&application;ã«å±žæ€§å€¤ã‚’渡ã™å‰ã«ï¼Œ<titleref href="AVNormalize">属性値ã®æ­£è¦åŒ–</titleref>ã§è¦å®šã™ã‚‹ã¨ãŠã‚Šã«ï¼Œå±žæ€§å€¤ã‚’æ­£è¦åŒ–ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+<p>
+<termdef id='dt-enumerated' term='Enumerated Attribute Values'><term>列挙型ã®å±žæ€§</term>ã¯ï¼Œå®£è¨€ã—ãŸå€¤ã®ä¸€ã¤ã‚’å–ã‚‹ã“ã¨ãŒã§ãる。</termdef>列挙型ã«ã¯ï¼Œ2種類ã‚る。
+
+<scrap lang='ebnf'>
+<head>列挙属性ã®åž‹</head>
+<prod id='NT-EnumeratedType'><lhs>EnumeratedType</lhs>
+<rhs><nt def='NT-NotationType'>NotationType</nt>
+| <nt def='NT-Enumeration'>Enumeration</nt>
+</rhs></prod>
+<prod id='NT-NotationType'><lhs>NotationType</lhs>
+<rhs>'NOTATION'
+<nt def='NT-S'>S</nt>
+'('
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>? '|' <nt def='NT-Name'>Name</nt>)*
+<nt def='NT-S'>S</nt>? ')'
+</rhs>
+<vc def='notatn' /></prod>
+<prod id='NT-Enumeration'><lhs>Enumeration</lhs>
+<rhs>'(' <nt def='NT-S'>S</nt>?
+<nt def='NT-Nmtoken'>Nmtoken</nt>
+(<nt def='NT-S'>S</nt>? '|'
+<nt def='NT-S'>S</nt>?
+<nt def='NT-Nmtoken'>Nmtoken</nt>)*
+<nt def='NT-S'>S</nt>?
+')'</rhs>
+<vc def='enum'/></prod>
+</scrap>
+</p>
+
+<vcnote id='notatn'>
+<head>記法属性</head>
+<p>ã“ã®åž‹ã®å€¤ã¯ï¼Œå®£è¨€ã—ã¦ã„ã‚‹<titleref href='Notations'>記法</titleref>ã®åå‰ã®ä¸€ã¤ã¨&match;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。ã¤ã¾ã‚Šï¼Œå®£è¨€ã«å­˜åœ¨ã™ã‚‹è¨˜æ³•åã¯ï¼Œã™ã¹ã¦å®£è¨€ã•ã‚Œã¦ã„ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+</vcnote>
+<vcnote id='enum'>
+<head>列挙</head>
+<p>
+ã“ã®åž‹ã®å€¤ã¯ï¼Œå®£è¨€ã«å­˜åœ¨ã™ã‚‹<nt def='NT-Nmtoken'>Nmtoken</nt>&token;ã®ä¸€ã¤ã¨&match;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+</vcnote>
+<p>
+<termref def='dt-interop'>相互é‹ç”¨æ€§ã®ãŸã‚</termref>,åŒã˜<nt def='NT-Nmtoken'>Nmtoken</nt>ã¯ï¼Œå˜ä¸€è¦ç´ åž‹ã®åˆ—挙型ã®å±žæ€§ã¨ã—ã¦ï¼Œè¤‡æ•°å›žç¾ã‚Œãªã„æ–¹ãŒã‚ˆã„。
+</p>
+</div3>
+
+<div3 id='sec-attr-defaults'>
+<head>属性ã®&default;</head>
+
+<p>
+<termref def="dt-attdecl">属性宣言</termref>ã¯ï¼Œå±žæ€§ã®æŒ‡å®šãŒå¿…é ˆã‹ã©ã†ã‹ã«ã¤ã„ã¦ã®æƒ…報を与ãˆã‚‹ã€‚å¿…é ˆã§ãªã„å ´åˆã«ã¯ï¼Œæ–‡æ›¸å†…ã§å±žæ€§ã‚’指定ã—ãªã„ã¨ã,XML&processor;ã®å‡¦ç†æ–¹æ³•ã®æƒ…報も与ãˆã‚‹ã€‚
+
+<scrap lang='ebnf'>
+<head>属性ã®&default;</head>
+<prodgroup pcw4="14" pcw5="11.5">
+<prod id='NT-Default'><lhs>Default</lhs>
+<rhs>'#REQUIRED'
+|&nbsp;'#IMPLIED' </rhs>
+<rhs>| (('#FIXED' S)? <nt def='NT-AttValue'>AttValue</nt>)</rhs>
+<vc def='defattrvalid'/>
+<wfc def="CleanAttrVals"/>
+</prod>
+</prodgroup>
+</scrap>
+<!-- improved by bosak
+<scrap lang='ebnf'>
+<head>Attribute Defaults</head>
+<prod id='NT-Default'><lhs>Default</lhs>
+<rhs>'#REQUIRED'
+|&nbsp;'#IMPLIED' </rhs>
+<vc def='defattrvalid'/>
+<wfc def="CleanAttrVals"/>
+<rhs>| (('#FIXED' S)? <nt def='NT-AttValue'>AttValue</nt>)</rhs>
+</prod>
+</scrap>-->
+</p>
+
+<vcnote id='defattrvalid'>
+<head>属性&default;ã®æ­£ã—ã•</head>
+<p>
+宣言ã—ãŸ&default-value;ã¯ï¼Œå®£è¨€ã—ãŸå±žæ€§åž‹ã®å­—å¥åˆ¶ç´„を満ãŸã•ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+</vcnote>
+<p>
+<kw>#REQUIRED</kw>を指定ã—ãŸã¨ã,ã“ã®è¦ç´ åž‹ã®<termref def="dt-stag">開始タグ</termref>ã§ã‚ã£ã¦ï¼Œã“ã®å±žæ€§ã«å€¤ã‚’与ãˆãªã„ã‚‚ã®ã‚’XML&processor;ãŒè¦‹ã¤ã‘ãŸãªã‚‰ã°ï¼Œãã®æ–‡æ›¸ã¯<termref def="dt-valid">&valid;</termref>ã¨ã¯ã—ãªã„。<kw>#IMPLIED</kw>を指定ã—ãŸã¨ã,ã“ã®å±žæ€§ã‚’çœç•¥ã—ãŸã‚‰ï¼ŒXML&processor;ã¯ï¼Œå±žæ€§å€¤ã‚’指定ã—ãªã„ã“ã¨ã‚’アプリケーションã«ä¼ãˆãªã‘ã‚Œã°ãªã‚‰ãªã„。ã“ã®ã¨ã,&application;ã®æŒ¯èˆžã„ã«ã¤ã„ã¦ã®åˆ¶ç´„ã¯ãªã„。
+</p>
+<p>
+<termdef id="dt-default" term="Attribute Default">
+属性ãŒ<kw>#REQUIRED</kw>ã§ã‚‚<kw>#IMPLIED</kw>ã§ã‚‚ãªã„ã¨ãã«ã¯ï¼Œ<nt def='NT-AttValue'>AttValue</nt>ã®å€¤ãŒï¼Œ<term>&default-value;</term>ã¨ãªã‚‹ã€‚<kw>#FIXED</kw>ã®å ´åˆï¼Œ&default-value;ã¨ç•°ãªã‚‹å€¤ãŒæŒ‡å®šã•ã‚Œã‚Œã°ï¼Œãã®æ–‡æ›¸ã¯ï¼Œ<termref def="dt-valid">&valid;</termref>ã¨ã—ãªã„。&default-value;を宣言ã—ã¦ã„ã‚‹å ´åˆï¼Œã“ã®å±žæ€§ã®çœç•¥ã‚’見ã¤ã‘ãŸã‚‰ï¼Œå®£è¨€ã—ãŸ&default-value;を属性値ã«æŒ‡å®šã—ã¦ã„ã‚‹ã¨ã—ã¦ï¼ŒXML&processor;ã¯æŒ¯ã‚‹èˆžã†ã“ã¨ãŒæœ›ã¾ã—ã„。
+</termdef></p>
+
+<p>属性リスト宣言ã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+
+<eg>&lt;!ATTLIST termdef
+ id ID #REQUIRED
+ name CDATA #IMPLIED>
+&lt;!ATTLIST list
+ type (bullets|ordered|glossary) "ordered">
+&lt;!ATTLIST form
+ method CDATA #FIXED "POST"></eg></p>
+</div3>
+
+<div3 id='AVNormalize'>
+<head>属性値ã®æ­£è¦åŒ–</head>
+<p>
+XML&processor;ã¯ï¼Œå±žæ€§å€¤ã‚’&application;ã«æ¸¡ã™å‰ã«ï¼Œæ¬¡ã®ã¨ãŠã‚Šã«æ­£è¦åŒ–ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+
+<ulist>
+<item>
+<p>a) ã¾ãšï¼Œå±žæ€§å€¤åŠã³ãã®ä¸­ã®å®Ÿä½“内ã§ï¼Œè¡Œæœ«åˆã¯è¡Œå¢ƒç•Œ(åˆã¯ã‚·ã‚¹ãƒ†ãƒ ã«ã‚ˆã£ã¦ã¯ãƒ¬ã‚³ãƒ¼ãƒ‰å¢ƒç•Œ)ã¨ã—ã¦ä½¿ã‚れる&string;を,&space-character;(#x20)一ã¤ã«ç½®ãæ›ãˆãªã‘ã‚Œã°ãªã‚‰ãªã„(「<titleref xml-link="simple" href="sec-line-ends">行末ã®æ‰±ã„</titleref>ã€ã‚‚å‚ç…§ã®ã“ã¨ã€‚)。
+</p></item>
+<item>
+<p>b) 次ã«ï¼Œæ–‡å­—å‚ç…§åŠã³å†…部&parsed-entity;ã¸ã®å‚ç…§ã¯ï¼Œå±•é–‹ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。外部実体ã¸ã®å‚ç…§ã¯ï¼Œ&error;ã¨ã™ã‚‹ã€‚
+</p></item>
+<item>
+<p>c) 最後ã«ï¼Œå±žæ€§ã®åž‹ãŒ<kw>CDATA</kw>ã§ãªã‘ã‚Œã°ï¼Œç©ºç™½&string;ã¯ï¼Œã™ã¹ã¦&space-character;(#x20)一ã¤ã«æ­£è¦åŒ–ã—,残りã®ç©ºç™½æ–‡å­—ã¯ï¼Œå‰Šé™¤ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p></item>
+</ulist>
+
+&non-validating;&parser;ã¯ï¼Œå®£è¨€ãŒè¦‹ã¤ã‹ã‚‰ãªã„属性ã¯ï¼Œã™ã¹ã¦ï¼Œ<kw>CDATA</kw>を宣言ã—ã¦ã„ã‚‹ã¨ã—ã¦æ‰±ã†ã“ã¨ãŒæœ›ã¾ã—ã„。</p>
+</div3>
+</div2>
+
+<div2 id='sec-condition-sect'>
+<head>æ¡ä»¶ä»˜ãセクション</head>
+<p>
+<termdef id='dt-cond-section' term='conditional section'>
+<term>æ¡ä»¶ä»˜ãセクション</term>ã¨ã¯ï¼Œ<termref def='dt-doctype'>文書型宣言ã®å¤–部&subset;</termref>ã®ä¸€éƒ¨ã¨ã—,制御キーワードã®æŒ‡å®šã«ã‚ˆã£ã¦ï¼ŒDTDã®è«–ç†æ§‹é€ ã«å«ã‚ãŸã‚Šï¼Œé™¤ã„ãŸã‚Šã™ã‚‹éƒ¨åˆ†ã¨ã™ã‚‹ã€‚
+</termdef>
+
+<scrap lang='ebnf'>
+<head>æ¡ä»¶ä»˜ãセクション</head>
+<prodgroup pcw2="9" pcw4="14.5">
+<prod id='NT-conditionalSect'><lhs>conditionalSect</lhs>
+<rhs><nt def='NT-includeSect'>includeSect</nt>
+| <nt def='NT-ignoreSect'>ignoreSect</nt>
+</rhs>
+</prod>
+<prod id='NT-includeSect'><lhs>includeSect</lhs>
+<rhs>'&lt;![' S? 'INCLUDE' S? '['
+<!-- (<nt def='NT-markupdecl'>markupdecl</nt>
+ | <nt def="NT-conditionalSect">conditionalSect</nt>
+ | <nt def="NT-S">S</nt>)*
+-->
+<nt def="NT-extSubset">extSubset</nt>
+']]&gt;'
+</rhs>
+</prod>
+<prod id='NT-ignoreSect'><lhs>ignoreSect</lhs>
+<rhs>'&lt;![' S? 'IGNORE' S? '['
+<nt def="NT-ignoreSectContents">ignoreSectContents</nt>*
+']]&gt;'</rhs>
+</prod>
+<prod id='NT-ignoreSectContents'><lhs>ignoreSectContents</lhs>
+<rhs><nt def='NT-Ignore'>Ignore</nt>
+('&lt;![' <nt def='NT-ignoreSectContents'>ignoreSectContents</nt>
+']]&gt;'
+<nt def='NT-Ignore'>Ignore</nt>)*</rhs></prod>
+<prod id='NT-Ignore'><lhs>Ignore</lhs>
+<rhs><nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ('&lt;![' | ']]&gt;')
+<nt def='NT-Char'>Char</nt>*)
+</rhs></prod>
+<!--<rhs>
+((<nt def='NT-SkipLit'>SkipLit</nt>
+| <nt def='NT-Comment'>Comment</nt>
+| <nt def='NT-PI'>PI</nt>) -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+| ('&lt;![' <nt def='NT-ignoreSectContents'>ignoreSectContents</nt>*
+']]&gt;')
+</rhs>
+<rhs>
+| (<nt def='NT-Char'>Char</nt> - (']' | [&lt;'"]))
+</rhs>
+<rhs>
+| ('&lt;!' (<nt def='NT-Char'>Char</nt> - ('-' | '[')))
+</rhs>-->
+</prodgroup>
+</scrap>
+</p>
+
+<p>æ¡ä»¶ä»˜ãセクションã¯ï¼ŒDTDã®å†…部&subset;åŠã³å¤–部&subset;ã¨åŒæ§˜ã«ï¼Œå®Œå…¨ãªå®£è¨€ï¼Œã‚³ãƒ¡ãƒ³ãƒˆåˆã¯å…¥ã‚Œå­ã«ãªã£ãŸæ¡ä»¶ä»˜ãセクションを,ã„ãã¤ã‹å«ã‚“ã§ã‚ˆã„。ã“れらã®é–“ã«ï¼Œç©ºç™½ãŒç¾ã‚Œã¦ã‚‚よã„。
+</p>
+<p>
+æ¡ä»¶ä»˜ãセクションã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ãŒ<code>INCLUDE</code>ãªã‚‰ã°ï¼ŒXML&processor;ã¯ï¼Œã“ã®æ¡ä»¶ä»˜ãセクションã®å†…容を,文書ã®ä¸€éƒ¨ã¨ã—ã¦æ‰±ã‚ãªã‘ã‚Œã°ãªã‚‰ãªã„。æ¡ä»¶ä»˜ãセクションã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ãŒ<code>IGNORE</code>ãªã‚‰ã°ï¼Œãã®æ¡ä»¶ä»˜ãセクションã®å†…容ã¯ï¼Œæ–‡æ›¸ã®ä¸€éƒ¨ã¨ã—ã¦æ‰±ã‚ãªã„。構文解æžã‚’æ­£ã—ãè¡Œã†ãŸã‚ã«ã¯ï¼Œç„¡è¦–ã™ã‚‹æ¡ä»¶ä»˜ãセクション(IGNORE)ã«é–¢ã—ã¦ã‚‚,内容を読ã¾ãªã‘ã‚Œã°ãªã‚‰ãªã„ã“ã¨ã«æ³¨æ„ã™ã‚‹ã“ã¨ã€‚ã“ã‚Œã¯ï¼Œå…¥ã‚Œå­ã«ãªã£ãŸæ¡ä»¶ä»˜ãセクションを見ã¤ã‘,(無視ã™ã‚‹)最も外å´ã®æ¡ä»¶ä»˜ãセクションを正ã—ã検出ã™ã‚‹ãŸã‚ã¨ã™ã‚‹ã€‚キーワードを<code>INCLUDE</code>ã¨ã™ã‚‹å°ã•ãªæ¡ä»¶ä»˜ãセクションãŒï¼Œã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã‚’<code>IGNORE</code>ã¨ã™ã‚‹ã‚ˆã‚Šå¤§ããªæ¡ä»¶ä»˜ãセクションã«å«ã¾ã‚Œã‚‹ãªã‚‰ã°ï¼Œå¤–å´åŠã³å†…å´ã®æ¡ä»¶ä»˜ãセクションã®ä¸¡æ–¹ã¨ã‚‚無視ã™ã‚‹ã€‚
+</p>
+<p>
+æ¡ä»¶ä»˜ãセクションã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ãŒãƒ‘ラメタ実体å‚ç…§ãªã‚‰ã°ï¼ŒXML&processor;ã¯æ¡ä»¶ä»˜ãセクションã®æ‰±ã„を判断ã™ã‚‹å‰ã«ï¼Œã“ã®ãƒ‘ラメタ実体を展開ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+
+<p>例を次ã«ç¤ºã™ã€‚
+
+<eg>&lt;!ENTITY % draft 'INCLUDE' >
+&lt;!ENTITY % final 'IGNORE' >
+
+&lt;![%draft;[
+&lt;!ELEMENT book (comments*, title, body, supplements?)>
+]]&gt;
+&lt;![%final;[
+&lt;!ELEMENT book (title, body, supplements?)>
+]]&gt;
+</eg>
+</p>
+</div2>
+<!--
+<div2 id='sec-pass-to-app'>
+<head>XML Processor Treatment of Logical Structure</head>
+<p>When an XML processor encounters a start-tag, it must make
+at least the following information available to the application:
+<ulist>
+<item>
+<p>the element type's generic identifier</p>
+</item>
+<item>
+<p>the names of attributes known to apply to this element type
+(validating processors must make available names of all attributes
+declared for the element type; non-validating processors must
+make available at least the names of the attributes for which
+values are specified.
+</p>
+</item>
+</ulist>
+</p>
+</div2>
+-->
+
+</div1>
+<!-- &Entities; -->
+
+<div1 id='sec-physical-struct'>
+<head>物ç†æ§‹é€ </head>
+
+<p>
+<termdef id="dt-entity" term="Entity">
+XML文書ã¯ï¼Œä¸€ã¤ä»¥ä¸Šã®è¨˜æ†¶å˜ä½ã‹ã‚‰æ§‹æˆã™ã‚‹ã€‚ã“ã®è¨˜æ†¶å˜ä½ã‚’,<term>実体</term>ã¨ã„ã†ã€‚実体ã¯ï¼Œ<term>内容</term>ã‚’ã‚‚ã¡ï¼Œæ–‡æ›¸å®Ÿä½“(以é™å‚ç…§)åŠã³<termref def='dt-doctype'>外部DTD&subset;</termref>を除ã„ã¦ï¼Œ<term>åå‰</term>ã§&identified;。
+</termdef>
+
+<!-- Added for CFG -->
+<!-- obscurity amputated by TWB -->
+<!-- entire sentence amputated by CMSMcQ: no one but NO ONE is
+ready for entities declared as
+<!ENTITY foo "http://www.foo.com/bar.xml#id">
+and it's pointless to suggest that it's possible
+under current circumstances. -->
+<!-- An entity may be stored in, -->
+<!--but need not be coterminous with, -->
+<!-- but need not comprise the whole of, -->
+<!-- a single physical storage object such as a file or -->
+<!-- database field. -->
+<!-- End sentence added for CFG -->å„XML文書ã¯ï¼Œ<termref def="dt-docent">文書実体</termref>ã¨å‘¼ã¶å®Ÿä½“を一ã¤ã‚‚ã¤ã€‚<termref def="dt-xml-proc">XML&processor;</termref>ã¯ï¼Œã“ã®æ–‡æ›¸å®Ÿä½“ã‹ã‚‰å‡¦ç†ã‚’開始ã™ã‚‹ã€‚文書実体ãŒï¼Œæ–‡æ›¸ã®ã™ã¹ã¦ã‚’å«ã‚“ã§ã‚‚よã„。</p>
+
+<p>実体ã¯ï¼Œ&parsed-entity;åˆã¯&unparsed-entity;ã¨ã™ã‚‹ã€‚<termdef id="dt-parsedent" term="Text Entity"><term>&parsed-entity;</term>ã®å†…容ã¯ï¼Œ&parsed-entity;ã®<termref def='dt-repltext'>&replacement-text;</termref>ã¨å‘¼ã¶ã€‚ã“ã®<termref def="dt-text">テキスト</termref>ã¯ï¼Œæ–‡æ›¸ã®æœ¬ä½“ã®ä¸€éƒ¨ã¨ã—ã¦è§£é‡ˆã™ã‚‹ã€‚
+</termdef>
+</p>
+
+<p>
+<termdef id="dt-unparsed" term="Unparsed Entity">
+<term>&unparsed-entity;</term>ã¯ï¼Œå†…容ãŒ<termref def='dt-text'>テキスト</termref>ã§ã‚‚ãã†ã§ãªãã¨ã‚‚よã„リソースã¨ã™ã‚‹ã€‚テキストã®å ´åˆï¼ŒXMLã§ãªãã¨ã‚‚よã„。å„&unparsed-entity;ã«ã¯ï¼Œ<termref def="dt-notation">記法</termref>ãŒé–¢é€£ä»˜ã‘られ,ã“ã®è¨˜æ³•ã¯ï¼Œåå‰ã§&identified;。記法ã®åå‰åŠã³é–¢é€£ä»˜ã‘られãŸ&identifier;を,XML&processor;ãŒ&application;ã«æ¸¡ã™ã¨ã„ã†è¦ä»¶ä»¥å¤–ã¯ï¼ŒXMLã¯ï¼Œ&unparsed-entity;ã®å†…容を制é™ã—ãªã„。
+</termdef>
+</p>
+
+<p>&parsed-entity;ã¯ï¼Œå®Ÿä½“å‚ç…§ã«ã‚ˆã£ã¦åå‰ã§å‘¼ã³å‡ºã™ã€‚&unparsed-entity;ã¯ï¼Œ<kw>ENTITY</kw>åž‹åˆã¯<kw>ENTITIES</kw>åž‹ã®å±žæ€§ã®å€¤ã¨ã—ã¦ï¼Œåå‰ã§å‚ç…§ã™ã‚‹ã€‚</p>
+
+<p>
+<termdef id='gen-entity' term='general entity'><term>一般実体</term>ã¯ï¼Œæ–‡æ›¸å†…容ã®ä¸­ã§ä½¿ç”¨ã™ã‚‹&parsed-entity;ã¨ã™ã‚‹ã€‚ã‚ã„ã¾ã„ã«ãªã‚‰ãªã„é™ã‚Šï¼Œã“ã®&TR-or-Rec;ã§ã¯ï¼Œä¸€èˆ¬å®Ÿä½“ã‚’å˜ã«<emph>実体</emph>ã¨å‘¼ã¶ã€‚</termdef><termdef id='dt-PE' term='Parameter entity'>パラメタ実体ã¯ï¼ŒDTD内ã§ä½¿ç”¨ã™ã‚‹&parsed-entity;ã¨ã™ã‚‹ã€‚</termdef>ã“れらã®ï¼’種類ã®å®Ÿä½“ã¯ï¼Œç•°ãªã‚‹æ›¸å¼ã§å‚ç…§ã—,異ãªã‚‹æ–‡è„ˆã§èªè­˜ã™ã‚‹ã€‚</p>
+
+<!--
+<div2 id='sec-synchro'>
+<head>Logical and Physical Structures</head>
+<p>The logical and physical structures (elements and entities)
+in an XML document must
+be properly nested.
+<termref def='dt-stag'>Tags</termref> and <termref def='dt-element'>elements</termref> must
+each begin and end in the same <termref def='dt-entity'>entity</termref>, but may
+refer to other
+entities internally; <termref def='dt-comment'>comments</termref>,
+<termref def='dt-pi'>processing instructions</termref>,
+<termref def='dt-charref'>character
+references</termref>, and
+<termref def='dt-entref'>entity references</termref> must each be contained entirely
+within a single entity. Entities must each contain an integral number
+of elements, comments, processing instructions, and references,
+possibly together with character data not contained within any element
+in the entity, or else they must contain non-textual data, which by
+definition contains no elements.</p></div2>
+-->
+
+<div2 id='sec-references'>
+<head>文字å‚ç…§åŠã³å®Ÿä½“å‚ç…§</head>
+<p>
+<termdef id="dt-charref" term="Character Reference">
+<term>文字å‚ç…§</term>ã¯ï¼ŒISO/IEC 10646文字集åˆã®ç‰¹å®šã®æ–‡å­—,例ãˆã°ï¼Œå…¥åŠ›æ©Ÿå™¨ã‹ã‚‰ç›´æŽ¥å…¥åŠ›ä¸å¯èƒ½ãªæ–‡å­—ã‚’å‚ç…§ã™ã‚‹ã€‚
+
+<scrap lang='ebnf'>
+<head>文字å‚ç…§</head>
+<prod id='NT-CharRef'><lhs>CharRef</lhs>
+<rhs>'&amp;#' [0-9]+ ';' </rhs>
+<rhs>| '&hcro;' [0-9a-fA-F]+ ';'</rhs>
+<wfc def="wf-Legalchar"/>
+</prod>
+</scrap>
+<wfcnote id="wf-Legalchar">
+<head>正当ãªæ–‡å­—</head>
+<p>文字å‚ç…§ã§å‚ç…§ã™ã‚‹æ–‡å­—ã¯ï¼Œéžçµ‚端記å·<termref def="NT-Char">Char</termref>ã«å¾“ã‚ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+</wfcnote>
+文字㌠"<code>&amp;#x</code>" ã§å§‹ã¾ã‚Œã°ï¼Œçµ‚端㮠"<code>;</code>" ã¾ã§ã®æ•°å­—åŠã³ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆã¯ï¼ŒISO/IEC 10646 ã®æ–‡å­—コードã®16進数表ç¾ã¨ã™ã‚‹ã€‚
+<!--日本語訳ã«ã¤ã„ã¦: letterã¯ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆã¨è¨³ã—ãŸã€‚ 三好 -->
+文字㌠"<code>&amp;#</code>" ã§å§‹ã¾ã‚Œã°ï¼Œçµ‚端㮠"<code>;</code>" ã¾ã§ã®æ•°å­—ã¯ï¼Œæ–‡å­—コードã®10進数表ç¾ã¨ã™ã‚‹ã€‚
+</termdef>
+</p>
+
+<p>
+<termdef id="dt-entref" term="Entity Reference">
+<term>実体å‚ç…§</term>ã¯ï¼Œåå‰ã®ä»˜ã„ãŸå®Ÿä½“ã®å†…容をå‚ç…§ã™ã‚‹ã€‚</termdef><termdef id='dt-GERef' term='General Entity Reference'>一般実体ã¸ã®å‚ç…§ã¯ï¼Œã‚¢ãƒ³ãƒ‘サンド(<code>&amp;</code>)åŠã³ã‚»ãƒŸã‚³ãƒ­ãƒ³(<code>;</code>)を区切りå­ã¨ã—ã¦ç”¨ã„る。</termdef><termdef id='dt-PERef' term='Parameter-entity reference'><term>パラメタ実体</term>ã¸ã®å‚ç…§ã¯ï¼Œãƒ‘ーセント記å·(<code>%</code>)åŠã³ã‚»ãƒŸã‚³ãƒ­ãƒ³(<code>;</code>)を区切りå­ã¨ã—ã¦ç”¨ã„る。
+</termdef>
+</p>
+
+<scrap lang="ebnf">
+<head>実体å‚ç…§</head>
+<prod id='NT-Reference'><lhs>Reference</lhs>
+<rhs><nt def='NT-EntityRef'>EntityRef</nt>
+| <nt def='NT-CharRef'>CharRef</nt></rhs></prod>
+<prod id='NT-EntityRef'><lhs>EntityRef</lhs>
+<rhs>'&amp;' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<wfc def='wf-entdeclared'/>
+<vc def='vc-entdeclared'/>
+<wfc def='textent'/>
+<wfc def='norecursion'/>
+</prod>
+<prod id='NT-PEReference'><lhs>PEReference</lhs>
+<rhs>'%' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<wfc def='wf-entdeclared'/>
+<vc def='vc-entdeclared'/>
+<wfc def='textent'/>
+<wfc def='norecursion'/>
+<wfc def='indtd'/>
+</prod>
+</scrap>
+
+<wfcnote id='wf-entdeclared'>
+<head>実体ãŒå®£è¨€ã•ã‚Œã¦ã„ã‚‹ã“ã¨</head>
+<p>DTDã‚’ã‚‚ãŸãªã„文書,パラメタ実体å‚照をå«ã¾ãªã„内部DTD&subset;ã ã‘ã‚’ã‚‚ã¤æ–‡æ›¸ï¼Œåˆã¯ "<code>standalone='yes'</code>" ã‚’ã‚‚ã¤æ–‡æ›¸ã«ãŠã„ã¦ï¼Œå®Ÿä½“å‚ç…§ã§ç”¨ã„ã‚‹ <nt def='NT-Name'>Name</nt> ã¯ï¼Œãã®å®Ÿä½“ã®å®£è¨€ã§ä¸Žãˆã‚‹åå‰ã¨ï¼Œ<termref def="dt-match">&match;</termref>ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。ãŸã ã—,&well-formed;ã®æ–‡æ›¸ã¯ï¼Œå®Ÿä½“&magicents; を宣言ã™ã‚‹å¿…è¦ã¯ãªã„。パラメタ実体ã®å ´åˆã¯ï¼Œå®£è¨€ã¯ï¼Œå‚ç…§ã«å…ˆè¡Œã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。åŒæ§˜ã«ï¼Œä¸€èˆ¬å®Ÿä½“ã®å ´åˆã¯ï¼Œå±žæ€§ãƒªã‚¹ãƒˆå®£è¨€ã®&default-value;内ã§ã®å‚照より先ã«ï¼Œå®£è¨€ãŒç¾ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+
+<p>外部&subset;åˆã¯å¤–部パラメタ実体ã§å®Ÿä½“を宣言ã™ã‚‹ã¨ã,&non-validating;&processor;ãŒï¼Œå®£è¨€ã‚’読ã¿ï¼Œå‡¦ç†ã™ã‚‹ã“ã¨ã‚’<titleref href='include-if-valid'>義務ã¥ã‘ãªã„</titleref>。ãれらã®æ–‡æ›¸ã§ã¯ï¼Œå®Ÿä½“ã¯å®£è¨€ã•ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„ã¨ã„ã†è¦å‰‡ã¯ï¼Œ&well-formed;制約ã§ã¯ãªã„。
+</p>
+</wfcnote>
+
+<vcnote id="vc-entdeclared">
+<head>実体ãŒå®£è¨€ã•ã‚Œã¦ã„ã‚‹ã“ã¨</head>
+<p>
+外部&subset;åˆã¯å¤–部パラメタ実体をもã£ã¦ã„ã¦ï¼Œ"<code>standalone='no'</code>"ã‚’ã‚‚ã¤æ–‡æ›¸ã«ãŠã„ã¦ï¼Œå®Ÿä½“å‚ç…§ã§ç”¨ã„ã‚‹ <nt def='NT-Name'>Name</nt> ã¯ï¼Œãã®å®Ÿä½“ã®å®£è¨€ã§ä¸Žãˆã‚‹åå‰ã¨<termref def="dt-match">&match;</termref>ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。相互é‹ç”¨æ€§ã®ãŸã‚,&valid;ãªæ–‡æ›¸ã¯<titleref href="sec-escapes">ã‚らã‹ã˜ã‚定義ã—ãŸå®Ÿä½“ã®è¦å®š</titleref>ã§æŒ‡å®šã—ãŸæ›¸å¼ã«ã‚ˆã£ã¦ï¼Œå®Ÿä½“ &magicents;を宣言ã™ã‚‹ã“ã¨ãŒæœ›ã¾ã—ã„。パラメタ実体ã®å ´åˆã¯ï¼Œå®£è¨€ã¯ï¼Œå‚ç…§ã«å…ˆè¡Œã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。åŒæ§˜ã«ï¼Œä¸€èˆ¬å®Ÿä½“ã®å ´åˆã¯ï¼Œå±žæ€§ãƒªã‚¹ãƒˆå®£è¨€ã®&default-value;内ã§ã®å‚照よりも先ã«ï¼Œå®£è¨€ãŒç¾ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+</vcnote>
+
+<!-- FINAL EDIT: is this duplication too clumsy? -->
+
+<wfcnote id='textent'>
+<head>&parsed-entity;</head>
+<p>
+実体å‚ç…§ã¯ï¼Œ<termref def="dt-unparsed">&unparsed-entity;</termref>ã®åå‰ã‚’å«ã‚“ã§ã„ã¦ã¯ãªã‚‰ãªã„。&unparsed-entity;ã¯ï¼Œ<kw>ENTITY</kw>åž‹åˆã¯<kw>ENTITIES</kw> åž‹ã¨ã—ã¦å®£è¨€ã—ãŸ<termref def="dt-attrval">属性値</termref>ã¨ã—ã¦ã ã‘å‚ç…§ã§ãる。
+</p>
+</wfcnote>
+
+<wfcnote id='norecursion'>
+<head>å†å¸°ãªã—</head>
+<p>&parsed-entity;ã¯ï¼Œãれ自体ã¸ã®å‚照を,直接ã«ã‚‚間接ã«ã‚‚å«ã‚“ã§ã¯ãªã‚‰ãªã„。</p>
+</wfcnote>
+
+<wfcnote id='indtd'>
+<head>DTDã®ä¸­</head>
+<p>
+パラメタ実体å‚ç…§ã¯ï¼Œ<termref def='dt-doctype'>DTD</termref>内ã«ã ã‘,出ç¾ã—ã¦ã‚ˆã„。
+<!--
+In the external DTD subset, a parameter-entity reference is
+recognized only at the locations where
+the nonterminal <nt def="NT-PEReference">PEReference</nt> or the
+special operator <code>%</code> appears in a production of the
+grammar. In the internal subset, parameter-entity references
+are recognized only when they match
+the <nt def="NT-InternalPERef">InternalPERef</nt> non-terminal
+in the production for <nt def="NT-markupdecl">markupdecl</nt>.
+-->
+</p>
+</wfcnote>
+
+<p>
+文字å‚ç…§åŠã³å®Ÿä½“å‚ç…§ã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg>Type &lt;key>less-than&lt;/key> (&hcro;3C;) to save options.
+This document was prepared on &amp;docdate; and
+is classified &amp;security-level;.</eg>
+</p>
+
+<p>
+パラメタ実体å‚ç…§ã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg>&lt;!ENTITY % ISOLat2
+ SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" >
+%ISOLat2;
+</eg>
+</p>
+</div2>
+
+<div2 id='sec-entity-decl'>
+<head>実体宣言</head>
+
+<p>
+<termdef id="dt-entdecl" term="entity declaration">
+実体ã¯ï¼Œæ¬¡ã®ã¨ãŠã‚Šã«å®£è¨€ã™ã‚‹ã€‚
+<scrap lang='ebnf'>
+<head>実体宣言</head>
+<prodgroup pcw2="5" pcw4="18.5">
+<prod id='NT-EntityDecl'><lhs>EntityDecl</lhs>
+<rhs><nt def="NT-GEDecl">GEDecl</nt></rhs><com>一般実体</com>
+<rhs>| <nt def="NT-PEDecl">PEDecl</nt></rhs><com>パラメタ実体</com>
+</prod>
+<prod id='NT-GEDecl'><lhs>GEDecl</lhs>
+<rhs>'&lt;!ENTITY' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt> <nt def='NT-EntityDef'>EntityDef</nt>
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+</prod>
+<prod id='NT-PEDecl'><lhs>PEDecl</lhs>
+<rhs>| '&lt;!ENTITY' <nt def='NT-S'>S</nt> '%' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt> <nt def='NT-S'>S</nt>
+<nt def='NT-PEDef'>PEDef</nt> <nt def='NT-S'>S</nt>? '&gt;'</rhs>
+<com>パラメタ実体</com>
+</prod>
+<prod id='NT-EntityDef'><lhs>EntityDef</lhs>
+<rhs><nt def='NT-EntityValue'>EntityValue</nt>
+</rhs>
+<!--<wfc def="WF-EntityValue"/>-->
+<rhs>| <nt def='NT-ExternalDef'>ExternalDef</nt></rhs>
+<!--<wfc def="WF-External"/>-->
+</prod>
+<!-- FINAL EDIT: what happened to WFs here? -->
+<prod id='NT-PEDef'><lhs>PEDef</lhs>
+<rhs><nt def='NT-EntityValue'>EntityValue</nt>
+| <nt def='NT-ExternalID'>ExternalID</nt></rhs></prod>
+</prodgroup>
+</scrap>
+
+<nt def='NT-Name'>Name</nt> ã¯ï¼Œ<termref def="dt-entref">実体å‚ç…§</termref>ã«ãŠã„ã¦å®Ÿä½“ã‚’&identify;。&unparsed-entity;ãªã‚‰ã°ï¼Œ<kw>ENTITY</kw> åž‹åˆã¯<kw>ENTITIES</kw>åž‹ã®å±žæ€§å€¤å†…ã§ï¼Œå®Ÿä½“ã‚’&identify;。åŒä¸€ã®å®Ÿä½“ãŒä¸€å›žä»¥ä¸Šå®£è¨€ã•ã‚Œã‚Œã°ï¼Œæœ€åˆã®å®£è¨€ã‚’用ã„る。&at-user-option;,複数回宣言ã•ã‚Œã‚‹å®Ÿä½“ã«é–¢ã—,XML&processor;ã¯ï¼Œè­¦å‘Šã‚’出ã—ã¦ã‚‚よã„。
+</termdef>
+</p>
+
+<!--
+<wfcnote id="WF-Entityvalue">
+<head>Well-Formed Internal Entity</head>
+<p>General entities defined by an <nt
+def="NT-EntityValue">EntityValue</nt> must be well-formed, as defined
+in section <specref ref="wf-entities"/>.
+</p>
+</wfcnote>
+<wfcnote id="WF-External">
+<head>Well-Formed External Entity</head>
+<p>General text entities defined by an <nt
+def="NT-ExternalDef">ExternalDef</nt>, must be well-formed, as defined
+in the section on <titleref xml-link="simple"
+href="wf-entities">well-formed entities.</titleref>.</p>
+</wfcnote>
+-->
+
+<div3 id='sec-internal-ent'>
+<head>内部実体</head>
+<p>
+<termdef id='dt-internent' term="Internal Entity Replacement Text">
+実体ã®å®šç¾©ãŒ <nt def='NT-EntityValue'>EntityValue</nt>ã®ã¨ã,ã“れを<term>内部実体</term>ã¨ã„ã†ã€‚ã“ã‚Œã¯ï¼Œåˆ¥å€‹ã®ç‰©ç†çš„記憶å˜ä½ã‚’ã‚‚ãŸãšï¼Œå®Ÿä½“ã®å†…容ã¯ï¼Œå®£è¨€å†…ã§ä¸Žãˆã‚‹ã€‚</termdef>æ­£ã—ã<termref def='dt-repltext'>&replacement-text;</termref>を生æˆã™ã‚‹ã«ã¯ï¼Œ<termref def='dt-litentval'>&literal;実体値</termref>内ã§ã®å®Ÿä½“å‚ç…§åŠã³æ–‡å­—å‚ç…§ã®å‡¦ç†ãŒï¼Œå¿…è¦ã¨ãªã‚‹ã‹ã‚‚ã—ã‚Œãªã„ã“ã¨ã«æ³¨æ„ã™ã‚‹ã€‚詳細ã¯ï¼Œ<titleref href='intern-replacement'>内部実体ã®&replacement-text;ã®æ§‹ç¯‰</titleref>ã‚’å‚照。
+
+<!-- redundant -TWB
+Within the <nt def="NT-EntityValue">EntityValue</nt>,
+parameter-entity references and character references are recognized
+and expanded immediately.
+General-entity references within the
+replacement text are not recognized
+at the time the entity declaration is parsed, though they may be
+recognized when the entity itself is referred to.
+-->
+
+</p>
+
+<p>
+内部実体ã¯ï¼Œ<termref def="dt-parsedent">&parsed-entity;</termref>ã¨ã™ã‚‹ã€‚
+</p>
+
+<p>内部実体宣言ã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg>&lt;!ENTITY Pub-Status "This is a pre-release of the specification."></eg></p>
+</div3>
+
+<div3 id='sec-external-ent'>
+<head>外部実体</head>
+<p>
+<termdef id="dt-extent" term="External Entity">
+実体ãŒå†…部実体ã§ãªã‘ã‚Œã°ï¼Œ<term>外部実体</term>ã¨ã—,次ã®ã¨ãŠã‚Šã«å®£è¨€ã™ã‚‹ã€‚
+
+<scrap lang='ebnf'>
+<head>外部実体宣言</head>
+<prod id='NT-ExternalDef'><lhs>ExternalDef</lhs>
+<rhs><nt def='NT-ExternalID'>ExternalID</nt>
+<nt def='NT-NDataDecl'>NDataDecl</nt>?</rhs></prod>
+<prod id='NT-ExternalID'><lhs>ExternalID</lhs>
+<rhs>'SYSTEM' <nt def='NT-S'>S</nt>
+<nt def='NT-SystemLiteral'>SystemLiteral</nt></rhs>
+<rhs>| 'PUBLIC' <nt def='NT-S'>S</nt>
+<nt def='NT-PubidLiteral'>PubidLiteral</nt>
+<nt def='NT-S'>S</nt>
+<nt def='NT-SystemLiteral'>SystemLiteral</nt>
+</rhs>
+</prod>
+<prod id='NT-NDataDecl'><lhs>NDataDecl</lhs>
+<rhs><nt def='NT-S'>S</nt> 'NDATA' <nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt></rhs>
+<vc def='not-declared'/></prod>
+</scrap>
+
+<nt def='NT-NDataDecl'>NDataDecl</nt> ãŒå­˜åœ¨ã™ã‚Œã°ï¼Œã“ã®å®Ÿä½“ã¯ï¼Œ<termref def="dt-unparsed">&unparsed-entity;</termref>ã¨ã—,ãã†ã§ãªã‘ã‚Œã°ï¼Œ&parsed-entity;ã¨ã™ã‚‹ã€‚</termdef>
+</p>
+
+<vcnote id='not-declared'>
+<head>記法ãŒå®£è¨€ã•ã‚Œã¦ã„ã‚‹ã“ã¨</head>
+<p>
+<nt def='NT-Name'>Name</nt> ã¯ï¼Œå®£è¨€ã—ãŸ<termref def="dt-notation">記法</termref>ã®åå‰ã¨&match;ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+</vcnote>
+
+<p>
+<termdef id="dt-sysid" term="System Identifier">
+キーワード <kw>SYSTEM</kw> ã®å¾Œã® <nt def='NT-SystemLiteral'>SystemLiteral</nt> を,実体ã®<term>システム&identifier;</term>ã¨å‘¼ã¶ã€‚ã“ã‚Œã¯URIã¨ã—,ãã®å®Ÿä½“ã®å†…容をå–り出ã™ã®ã«ç”¨ã„ã¦ã‚‚よã„。</termdef>URIã¨å…±ã«ä½¿ã†ã“ã¨ã®å¤šã„ãƒãƒƒã‚·ãƒ¥("<code>#</code>")åŠã³ãƒ•ãƒ©ã‚°ãƒ¡ãƒ³ãƒˆ&identifier;ã¯ï¼Œæ­£å¼ã«ã¯ï¼ŒURI自体ã®ä¸€éƒ¨ã¨ã¯ã—ãªã„。フラグメント&identifier;ãŒï¼Œã‚·ã‚¹ãƒ†ãƒ &identifier;ã®éƒ¨åˆ†ã¨ã—ã¦ä¸Žãˆã‚‰ã‚Œã¦ã„ã‚‹å ´åˆï¼ŒXML&processor;ã¯ï¼Œ&error;を出ã—ã¦ã‚‚よã„。ã“ã®&TR-or-Rec;ã®ç¯„囲外ã®æƒ…å ±(例ãˆã°ï¼Œã‚る特定ã®DTDã®ç‰¹åˆ¥ãªXMLè¦ç´ åˆã¯ç‰¹å®šã®&application;ã®ä»•æ§˜ã«ã‚ˆã£ã¦å®šç¾©ã•ã‚ŒãŸå‡¦ç†å‘½ä»¤)ã«ã‚ˆã£ã¦ä¸Šæ›¸ãã•ã‚Œãªã„é™ã‚Šï¼Œç›¸å¯¾çš„ãªURIã¯ï¼Œãã®å®Ÿä½“ã®ä½ç½®ï¼Œã™ãªã‚ã¡ï¼Œãã®å®Ÿä½“ã®å®£è¨€ãŒã‚るファイルã«ç›¸å¯¾çš„ã¨ã™ã‚‹ã€‚ã—ãŸãŒã£ã¦ï¼ŒDTDã®å†…部&subset;ã«ã‚る実体宣言ã§ã®ç›¸å¯¾çš„ãªURIã¯ï¼Œæ–‡æ›¸ã®ä½ç½®ã«ã¤ã„ã¦ç›¸å¯¾çš„ã¨ã™ã‚‹ã€‚外部&subset;ã«ã‚る実体宣言ã§ã®ç›¸å¯¾çš„ãªURIã¯ï¼Œãã®å¤–部&subset;ã‚’å«ã‚€ãƒ•ã‚¡ã‚¤ãƒ«ã®ä½ç½®ã«ç›¸å¯¾çš„ã¨ã™ã‚‹ã€‚
+</p>
+
+<p>
+<termdef id="dt-pubid" term="Public identifier">
+システム&identifier;以外ã«ï¼Œå¤–部実体ã¯ï¼Œ<term>公開&identifier;</term>ã‚’å«ã‚“ã§ã‚‚よã„。
+</termdef>
+実体ã®å†…容をå–り出ã™XML&processor;ã¯ï¼Œã“ã®å…¬é–‹&identifier;を用ã„ã¦ï¼Œä»£ã‚ã‚Šã®URIã®ç”Ÿæˆã‚’試ã¿ã¦ã‚‚よã„。XML&processor;ãŒã“ã‚Œã«å¤±æ•—ã—ãŸå ´åˆã¯ï¼Œã‚·ã‚¹ãƒ†ãƒ &literal;ã¨ã—ã¦æŒ‡å®šã—ãŸURIを用ã„ãªã‘ã‚Œã°ãªã‚‰ãªã„。&match;ã™ã‚‹å‰ã«ï¼Œå…¬é–‹&identifier;内ã«ã‚る空白文字ã‹ã‚‰ãªã‚‹&string;ã¯ï¼Œã™ã¹ã¦å˜ä¸€ã®&space-character;(#x20)ã«æ­£è¦åŒ–ã—ãªã‘ã‚Œã°ãªã‚‰ãšï¼Œå‰å¾Œã®ç©ºç™½æ–‡å­—ã¯å‰Šé™¤ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</p>
+
+<p>外部実体宣言ã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg>&lt;!ENTITY open-hatch
+ SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml">
+&lt;!ENTITY open-hatch
+ PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
+ "http://www.textuality.com/boilerplate/OpenHatch.xml">
+&lt;!ENTITY hatch-pic
+ SYSTEM "../grafix/OpenHatch.gif"
+ NDATA gif ></eg></p>
+</div3>
+
+</div2>
+
+<div2 id='TextEntities'>
+<head>&parsed-entity;</head>
+<div3 id='sec-TextDecl'>
+<head>テキスト宣言</head>
+<p>外部&parsed-entity;ã¯ï¼Œ<term>テキスト宣言</term>ã§å§‹ã¾ã£ã¦ã‚‚よã„。
+<scrap lang='ebnf'>
+<head>テキスト宣言</head>
+<prodgroup pcw4="12.5" pcw5="13">
+<prod id='NT-TextDecl'><lhs>TextDecl</lhs>
+<rhs>&xmlpio;
+<nt def='NT-VersionInfo'>VersionInfo</nt>?
+<nt def='NT-EncodingDecl'>EncodingDecl</nt>
+<nt def='NT-S'>S</nt>? &pic;</rhs>
+<!-- <wfc def='wfc-xmldecliteral'/> -->
+<!-- <wfc def='wfc-no-nonleading-encdec'/> -->
+</prod>
+</prodgroup>
+</scrap>
+</p>
+<p>テキスト宣言ã¯ï¼Œãã®ã¾ã¾ã®å½¢ã§ç¾ã‚Œãªã‘ã‚Œã°ãªã‚‰ãšï¼Œ&parsed-entity;ã¸ã®å‚照を経由ã—ã¦ã¯ãªã‚‰ãªã„ã“ã¨ã«æ³¨æ„ã™ã‚‹ã€‚</p>
+<p>外部&parsed-entity;ã«ãŠã„ã¦ï¼Œãƒ†ã‚­ã‚¹ãƒˆå®£è¨€ã¯ï¼Œå…ˆé ­ä»¥å¤–ã®ã„ã‹ãªã‚‹ä½ç½®ã«ã‚‚出ç¾ã—ãªã„。</p>
+</div3>
+<div3 id='wf-entities'>
+<head>&well-formed;ã®&parsed-entity;</head>
+<p>ラベル<nt def='NT-document'>document</nt>ã‚’ã‚‚ã¤ç”Ÿæˆè¦å‰‡ã«&match;ã™ã‚Œã°ï¼Œæ–‡æ›¸å®Ÿä½“ã¯ï¼Œ&well-formed;ã¨ã™ã‚‹ã€‚ラベル<nt def='NT-ExtParsedEnt'>ExtParsedEnt</nt>ã‚’ã‚‚ã¤ç”Ÿæˆè¦å‰‡ã«&match;ã™ã‚Œã°ï¼Œå¤–部ã®ä¸€èˆ¬&parsed-entity;ã¯ï¼Œ&well-formed;ã¨ã™ã‚‹ã€‚ラベル<nt def='NT-ExtPE'>ExtPE</nt>ã‚’ã‚‚ã¤ç”Ÿæˆè¦å‰‡ã«&match;ã™ã‚Œã°ï¼Œå¤–部パラメタ実体ã¯ï¼Œ&well-formed;ã¨ã™ã‚‹ã€‚
+
+<scrap lang='ebnf'>
+<head>&well-formed;ã®&parsed-entity;</head>
+<prod id='NT-ExtParsedEnt'><lhs>ExtParsedEnt</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-content'>content</nt></rhs>
+</prod>
+<prod id='NT-ExtPE'><lhs>ExtPE</lhs>
+<rhs><nt def='NT-TextDecl'>TextDecl</nt>?
+<nt def='NT-extSubset'>extSubset</nt></rhs>
+</prod>
+</scrap>
+&replacement-text;ãŒï¼Œãƒ©ãƒ™ãƒ«<nt def='NT-content'>content</nt>ã‚’ã‚‚ã¤ç”Ÿæˆè¦å‰‡ã«&match;ã™ã‚Œã°ï¼Œå†…部ã®ä¸€èˆ¬&parsed-entity;ã¯ï¼Œ&well-formed;ã¨ã™ã‚‹ã€‚DTDを最後ã¾ã§èª­ã¿è¾¼ã¾ãªã„ã¨ï¼Œç¢ºå®Ÿã«ã“れを判定ã§ããªã„ã“ã¨ã«æ³¨æ„。ã™ã¹ã¦ã®å†…部ã®ãƒ‘ラメタ実体ã¯ï¼Œå®šç¾©ã«ã‚ˆã£ã¦&well-formed;ã¨ã™ã‚‹ã€‚
+</p>
+<p>実体ãŒ&well-formed;ãªçµæžœã¨ã—ã¦ï¼ŒXML文書ã®è«–ç†çš„åŠã³ç‰©ç†çš„構造ã¯ï¼Œæ­£ã—ã入れå­ã¨ãªã‚‹ã€‚<termref def='dt-stag'>開始タグ</termref>,<termref def='dt-etag'>終了タグ</termref>,<termref def="dt-empty">空è¦ç´ ã‚¿ã‚°</termref>,<termref def='dt-element'>è¦ç´ </termref>,<termref def='dt-comment'>コメント</termref>,<termref def='dt-pi'>処ç†å‘½ä»¤</termref>,<termref def='dt-charref'>文字å‚ç…§</termref>åŠã³<termref def='dt-entref'>実体å‚ç…§</termref>ãŒï¼Œä¸€ã¤ã®å®Ÿä½“ã§é–‹å§‹ã—,別ã®å®Ÿä½“ã§çµ‚了ã™ã‚‹ã“ã¨ã¯ãªã„。</p>
+</div3>
+<div3 id='charencoding'>
+<head>実体ã«ãŠã‘る文字符å·åŒ–</head>
+
+<p>XML文書内ã®å¤–部&parsed-entity;ã¯ï¼Œå„々,別ã®æ–‡å­—符å·åŒ–æ–¹å¼ã‚’用ã„ã¦ã‚‚よã„。ã™ã¹ã¦ã®XML&processor;ã¯ï¼ŒUTF-8ã§ç¬¦å·åŒ–ã—ãŸå®Ÿä½“,UTF-16ã§ç¬¦å·åŒ–ã—ãŸå®Ÿä½“を処ç†ã§ããªã‘ã‚Œã°ãªã‚‰ãªã„。
+<!--
+It is recognized that for some purposes, the use of additional
+ISO/IEC 10646 planes other than the Basic Multilingual Plane
+may be required.
+A facility for handling characters in these planes is therefore a
+desirable characteristic in XML processors and applications.
+-->
+</p>
+<p>UTF-16ã§ç¬¦å·åŒ–ã—ãŸå®Ÿä½“ã¯ï¼ŒISO/IEC 10646ã®ä»˜éŒ²EåŠã³Unicodeã®ä»˜éŒ²Bã§è¦å®šã™ã‚‹&byte-order-mark;(ZERO WIDTH NO-BREAK SPACE文字,#xFEFF)ã§å§‹ã¾ã‚‰ãªã‘ã‚Œã°ãªã‚‰ãªã„。ã“ã‚Œã¯ï¼Œç¬¦å·åŒ–ã®æ¨™è­˜ã§ã‚ã£ã¦ï¼ŒXML文書ã®&markup;ã®ä¸€éƒ¨ã§ã‚‚,文字データã®ä¸€éƒ¨ã§ã‚‚ãªã„。XML&processor;ã¯ï¼ŒUTF-8ã§ç¬¦å·åŒ–ã—ãŸæ–‡æ›¸ã¨UTF-16ã§ç¬¦å·åŒ–ã—ãŸæ–‡æ›¸ã¨ã®åŒºåˆ¥ã‚’è¡Œã†ãŸã‚ã«ï¼Œã“ã®æ–‡å­—を使用å¯èƒ½ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+<p>XML&processor;ã¯ï¼ŒUTF-8åŠã³UTF-16ã§ç¬¦å·åŒ–ã—ãŸå®Ÿä½“ã ã‘を読むã“ã¨ã‚’å¿…é ˆã¨ã™ã‚‹ãŒï¼Œä»–ã®ç¬¦å·åŒ–を世界ã§ã¯ç”¨ã„ã¦ãŠã‚Šï¼Œãれらã®ç¬¦å·åŒ–を用ã„る実体をXML&processor;ãŒå‡¦ç†ã§ãã‚‹ã“ã¨ãŒæœ›ã¾ã—ã„。UTF-8åˆã¯UTF-16以外ã®ç¬¦å·åŒ–æ–¹å¼ã‚’用ã„ã¦æ ¼ç´ã™ã‚‹&parsed-entity;ã¯ï¼Œç¬¦å·åŒ–宣言をå«ã‚€<titleref href='TextDecl'>テキスト宣言</titleref>ã§å§‹ã‚ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+<scrap lang='ebnf'>
+<head>符å·åŒ–宣言</head>
+<prod id='NT-EncodingDecl'><lhs>EncodingDecl</lhs>
+<rhs><nt def="NT-S">S</nt>
+'encoding' <nt def='NT-Eq'>Eq</nt>
+'"' <nt def='NT-EncName'>EncName</nt> '"' | "'"
+<nt def='NT-EncName'>EncName</nt> "'"
+</rhs>
+</prod>
+<prod id='NT-EncName'><lhs>EncName</lhs>
+<rhs>[A-Za-z] ([A-Za-z0-9._] | '-')*</rhs>
+<com>ラテン文字ã ã‘ã‚’å«ã‚€ç¬¦å·åŒ–å</com>
+</prod>
+</scrap>
+<termref def='dt-docent'>文書実体</termref>ã§ã¯ï¼Œç¬¦å·åŒ–宣言ã¯ï¼Œ<termref def="dt-xmldecl">XML宣言</termref>ã®ä¸€éƒ¨ã¨ã™ã‚‹ã€‚<nt def="NT-EncName">EncName</nt>ã¯ï¼Œä½¿ç”¨ã™ã‚‹ç¬¦å·åŒ–æ–¹å¼ã®åå‰ã¨ã™ã‚‹ã€‚
+</p>
+<!-- FINAL EDIT: check name of IANA and charset names -->
+<p>符å·åŒ–宣言ã§ã¯ï¼Œå€¤<code>UTF-8</code>,<code>UTF-16</code>,<code>ISO-10646-UCS-2</code>åŠã³<code>ISO-10646-UCS-4</code>ã¯ï¼ŒUnicodeåŠã³ISO/IEC 10646ã®å„種符å·åŒ–ã®ãŸã‚ã«ç”¨ã„る。値<code>ISO-8859-1</code>ã‹ã‚‰<code>ISO-8859-9</code>ã¾ã§ã¯ï¼ŒISO 8859ã®å¯¾å¿œã™ã‚‹ãƒ‘ートã®ãŸã‚ã«ç”¨ã„る。値<code>ISO-2022-JP</code>,<code>Shift_JIS</code>åŠã³<code>EUC-JP</code>ã¯ï¼ŒJIS X-0208-1997ã®å„種符å·åŒ–ã®ãŸã‚ã«ç”¨ã„る。XML&processor;ã¯ï¼Œãれ以外ã®ç¬¦å·åŒ–æ–¹å¼ã‚’èªè­˜ã—ã¦ã‚‚よã„。Internet Assigned Numbers Authority (IANA)ã«ï¼Œ(<emph>charset</emph>sã¨ã—ã¦)登録ã•ã‚ŒãŸæ–‡å­—符å·åŒ–æ–¹å¼ã«ã¤ã„ã¦ã¯ï¼Œã“れら以外ã«ã¤ã„ã¦ã‚‚,登録ã•ã‚ŒãŸåå‰ã§å‚ç…§ã™ã‚‹ã“ã¨ãŒæœ›ã¾ã—ã„。ã“れらã®ç™»éŒ²ã•ã‚ŒãŸåå‰ã¯ï¼Œå¤§æ–‡å­—・å°æ–‡å­—ã®åŒºåˆ¥ã‚’ã›ãšã«å®šç¾©ã•ã‚Œã¦ã„ã‚‹ã®ã§ï¼Œã“れらã«å¯¾ã™ã‚‹æ¯”較を試ã¿ã‚‹&processor;ã¯ï¼Œå¤§æ–‡å­—・å°æ–‡å­—ã®åŒºåˆ¥ã‚’ã—ãªã„方法をã¨ã‚‹ã®ãŒæœ›ã¾ã—ã„ã“ã¨ã«æ³¨æ„ã™ã‚‹ã€‚</p>
+<p>XML処ç†ç³»ã«æ¸¡ã•ã‚ŒãŸå®Ÿä½“ãŒï¼Œç¬¦å·åŒ–宣言をå«ã‚€ã«ã‚‚ã‹ã‹ã‚らãšï¼Œå®£è¨€ã§ç¤ºã—ãŸã‚‚ã®ä»¥å¤–ã®æ–¹å¼ã§ç¬¦å·åŒ–ã•ã‚Œã¦ã„ãŸã‚Šï¼Œç¬¦å·åŒ–宣言ãŒï¼Œå¤–部実体ã®æœ€åˆä»¥å¤–ã®ä½ç½®ã«å‡ºç¾ã™ã‚Œã°ï¼Œ<termref def="dt-error">&error;</termref>ã¨ã™ã‚‹ã€‚
+</p>
+<p>&byte-order-mark;ã§ã‚‚符å·åŒ–宣言ã§ã‚‚始ã¾ã‚‰ãªã„実体ã¯ï¼ŒUTF-8符å·åŒ–ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+
+<p><!-- XML processors should make an effort to use all available
+information, internal and external, to aid in detecting an entity's correct
+encoding. Such information may include, but is not limited to:
+<ulist><item><p>An HTTP header</p></item>
+<item><p>A MIME header obtained other than through HTTP</p></item>
+<item><p>Metadata provided by the native OS file system or by document
+management software</p></item>
+<item><p>The bit patterns at the front of an entity, which may
+be analyzed to determine if
+the application of any known encoding yields a valid encoding
+declaration. See <titleref href='sec-guessing'>the appendix on
+autodetection of character sets</titleref>
+for a fuller description.</p></item></ulist> -->
+処ç†ã§ããªã„符å·åŒ–ã‚’ã‚‚ã£ãŸå®Ÿä½“ã‚’XML&processor;ãŒç™ºè¦‹ã—ãŸã¨ãã¯ï¼Œ&application;ã«ãã®äº‹å®Ÿã‚’通知ã—,<termref def='dt-fatal'>&fatal-error;</termref>ã¨ã—ã¦ï¼Œå‡¦ç†ã‚’終了ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+<!--
+inform the application of this fact and
+may
+allow the application to
+request either that the entity should be treated as an <termref
+def="dt-unparsed">unparsed entity</termref>, or that processing should
+cease.-->
+</p>
+<p>符å·åŒ–宣言ã®ä¾‹ã‚’,次ã«ç¤ºã™ã€‚
+<eg>&lt;?xml encoding='UTF-8'?>
+&lt;?xml encoding='EUC-JP'?></eg></p>
+</div3>
+</div2>
+<div2 id='entproc'>
+<head>XML&processor;ã«ã‚ˆã‚‹å®Ÿä½“åŠã³å‚ç…§ã®æ‰±ã„</head>
+<p>次ã®è¡¨ã¯ï¼Œæ–‡å­—å‚照,実体å‚ç…§åŠã³&unparsed-entity;ã®å‘¼å‡ºã—ãŒç¾ã‚Œã‚‹æ–‡è„ˆåŠã³å„々ã®å ´åˆã«ãŠã‘ã‚‹<termref def='dt-xml-proc'>XML&processor;</termref>ã«è¦æ±‚ã™ã‚‹æŒ¯èˆžã„ã‚’è¦ç´„ã™ã‚‹ã€‚一番左ã®åˆ—ã®ãƒ©ãƒ™ãƒ«ã¯ï¼Œèªè­˜ã®æ–‡è„ˆã‚’示ã™ã€‚
+<glist>
+<gitem><label>内容ã«ãŠã‘ã‚‹å‚ç…§</label>
+<def><p>è¦ç´ ã®<termref def='dt-stag'>開始タグ</termref>åŠã³<termref def='dt-etag'>終了タグ</termref>ã®é–“ã®ä»»æ„ã®å ´æ‰€ã§ã®å‚照。éžçµ‚端記å·<nt def='NT-content'>content</nt>ã«å¯¾å¿œã™ã‚‹ã€‚</p></def>
+</gitem>
+<gitem>
+<label>属性値ã«ãŠã‘ã‚‹å‚ç…§</label>
+<def><p><termref def='dt-stag'>開始タグ</termref>ã®å±žæ€§ã®å€¤ï¼Œåˆã¯<termref def='dt-attdecl'>属性宣言</termref>ã«ãŠã‘ã‚‹&default-value;ã®ã„ãšã‚Œã‹ã§ã®å‚照。éžçµ‚端記å·<nt def='NT-AttValue'>AttValue</nt>ã«å¯¾å¿œã™ã‚‹ã€‚</p></def></gitem>
+<gitem>
+<label>属性値ã¨ã—ã¦å‡ºç¾</label>
+<def><p>å‚ç…§ã§ã¯ãªã,<nt def='NT-Name'>Name</nt>ã¨ã—ã¦å‡ºç¾ã€‚<code>ENTITY</code>åž‹ã¨ã—ã¦å®£è¨€ã—ãŸå±žæ€§ã®å€¤ï¼Œåˆã¯<code>ENTITIES</code>åž‹ã¨ã—ã¦å®£è¨€ã—ãŸå±žæ€§ã®å€¤ã«ãŠã‘ã‚‹&space;ã§åŒºåˆ‡ã‚‹&token;ã®ä¸€ã¤ã¨ã—ã¦å‡ºç¾ã™ã‚‹ã€‚</p>
+</def></gitem>
+<gitem><label>実体値ã«ãŠã‘ã‚‹å‚ç…§</label>
+<def><p>実体ã®å®£è¨€ã«ãŠã‘る,パラメタåˆã¯å†…部実体ã®<termref def='dt-litentval'>&literal;実体値</termref>内ã®å‚照。éžçµ‚端記å·<nt def='NT-EntityValue'>EntityValue</nt>ã«å¯¾å¿œã™ã‚‹ã€‚</p></def></gitem>
+<gitem><label>DTDã«ãŠã‘ã‚‹å‚ç…§</label>
+<def><p><termref def='dt-doctype'>DTD</termref>ã®å†…部&subset;åˆã¯å¤–部&subset;ã§ã®å‚照。ãŸã ã—,<nt def='NT-EntityValue'>EntityValue</nt>åˆã¯<nt def="NT-AttValue">AttValue</nt>ã®å¤–å´ã¨ã™ã‚‹ã€‚</p></def>
+</gitem>
+</glist></p>
+<!-- border value changed by bosak -->
+<htable border='1' cellpadding='7' align='center'>
+<!-- tbody wrapper added by bosak -->
+<htbody>
+<tr><td bgcolor='&cellback;' rowspan='2' colspan='1'></td>
+<td bgcolor='&cellback;' align='center' valign='bottom' colspan='4'>実体ã®åž‹</td>
+<td bgcolor='&cellback;' rowspan='2' align='center'>文字</td>
+</tr>
+<tr align='center' valign='bottom'>
+<td bgcolor='&cellback;'>パラメタ</td>
+<td bgcolor='&cellback;'>内部&newline;一般</td>
+<td bgcolor='&cellback;'>外部&newline;&parsed-entity;&newline;一般</td>
+<td bgcolor='&cellback;'>&unparsed-entity;</td>
+</tr>
+<tr align='center' valign='middle'>
+<!--<td bgcolor='&cellback;' rowspan='4'>Recognition
+Context</td>-->
+<td bgcolor='&cellback;' align='right'>内容ã§ã®&newline;å‚ç…§</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>èªè­˜&newline;ã—ãªã„</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>å–è¾¼ã¿</titleref></td>
+<td bgcolor='&cellback;'><titleref href='include-if-valid'>検証ã®ãŸã‚ã«å–è¾¼ã¿</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>ç¦æ­¢</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>å–è¾¼ã¿</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>属性値ã§ã®&newline;å‚ç…§</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>èªè­˜&newline;ã—ãªã„</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>å–è¾¼ã¿</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>ç¦æ­¢</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>ç¦æ­¢</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>å–è¾¼ã¿</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>属性値ã¨ã—ã¦&newline;出ç¾</td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>èªè­˜&newline;ã—ãªã„</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>ç¦æ­¢</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not-recognized'>ç¦æ­¢</titleref></td>
+<td bgcolor='&cellback;'><titleref href='notify'>通知</titleref></td>
+<td bgcolor='&cellback;'><titleref href='not recognized'>èªè­˜&newline;ã—ãªã„</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>実体値ã§ã®&newline;å‚ç…§</td>
+<td bgcolor='&cellback;'><titleref href='included'>å–è¾¼ã¿</titleref></td>
+<td bgcolor='&cellback;'><titleref href='bypass'>&bypass;</titleref></td>
+<td bgcolor='&cellback;'><titleref href='bypass'>&bypass;</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>ç¦æ­¢</titleref></td>
+<td bgcolor='&cellback;'><titleref href='included'>å–è¾¼ã¿</titleref></td>
+</tr>
+<tr align='center' valign='middle'>
+<td bgcolor='&cellback;' align='right'>DTDã§ã®&newline;å‚ç…§</td>
+<td bgcolor='&cellback;'><titleref href='as-PE'>PEã¨ã—ã¦&newline;å–è¾¼ã¿</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>ç¦æ­¢</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>ç¦æ­¢</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>ç¦æ­¢</titleref></td>
+<td bgcolor='&cellback;'><titleref href='forbidden'>ç¦æ­¢</titleref></td>
+</tr>
+</htbody>
+</htable>
+<div3 id='not-recognized'>
+<head>“èªè­˜ã—ãªã„â€</head>
+<p>DTDã®å¤–ã§ã¯ï¼Œ<code>%</code>文字ã¯ï¼Œã„ã‹ãªã‚‹ç‰¹å®šã®æ„味も,もãŸãªã„。ã—ãŸãŒã£ã¦ï¼ŒDTDã§ã¯ãƒ‘ラメタ実体å‚ç…§ã¨ã—ã¦èªè­˜ã™ã‚‹ã‚‚ã®ã§ã‚ã£ã¦ã‚‚,<nt def='NT-content'>content</nt>内ã§ã¯&markup;ã¨ã—ã¦ã¯èªè­˜ã—ãªã„。åŒæ§˜ã«ï¼Œé©åˆ‡ã«å®£è¨€ã—ãŸå±žæ€§ã®å€¤ã®ä¸­ã«ç¾ã‚Œã‚‹å ´åˆã‚’除ã,&unparsed-entity;ã®åå‰ã¯ï¼Œèªè­˜ã—ãªã„。
+</p>
+</div3>
+<div3 id='included'>
+<head>“å–è¾¼ã¿â€</head>
+<p><termdef id="dt-include" term="Include">実体ã¯ï¼Œãã®<termref def='dt-repltext'>&replacement-text;</termref>ã‚’å–り出ã—,処ç†ã™ã‚‹ã¨ï¼Œå‚照自体ã®ä»£ã‚ã‚Šã«ï¼Œå‚ç…§ãŒã‚ã£ãŸä½ç½®ã§ï¼Œæ–‡æ›¸ã®ä¸€éƒ¨ã¨ã—ã¦å«ã¾ã‚Œã‚‹ã‹ã®ã‚ˆã†ã«<term>å–ã‚Šè¾¼ã¾ã‚Œã‚‹</term>。&replacement-text;ã¯ï¼Œ<termref def='dt-chardata'>文字データ</termref>åŠã³(パラメタ実体を除ã。)<termref def="dt-markup">&markup;</termref>ã®ã„ãšã‚Œã‚’å«ã‚“ã§ã‚‚よã,ã“れらã¯ï¼Œé€šå¸¸ã®æ–¹æ³•ã§èªè­˜ã•ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„。ãŸã ã—,&markup;ã®åŒºåˆ‡ã‚Šå­ã‚’&escape;ã™ã‚‹ãŸã‚ã«ç”¨ã„る実体(&magicents;)ã®&replacement-text;ã¯ï¼Œå¸¸ã«ãƒ‡ãƒ¼ã‚¿ã¨ã—ã¦æ‰±ã†(&string;"<code>AT&amp;amp;T;</code>"ã¯ï¼Œ"<code>AT&amp;T;</code>"ã«å±•é–‹ã•ã‚Œï¼Œæ®‹ã•ã‚ŒãŸã‚¢ãƒ³ãƒ‘サンドã¯ï¼Œå®Ÿä½“å‚ç…§ã®åŒºåˆ‡ã‚Šå­ã¨ã—ã¦ã¯èªè­˜ã—ãªã„。)。文字å‚ç…§ã¯ï¼Œç¤ºã—ãŸæ–‡å­—ã‚’å‚照自体ã®ä»£ã‚ã‚Šã«å‡¦ç†ã™ã‚‹ã¨ã,<term>å–ã‚Šè¾¼ã¾ã‚Œã‚‹</term>。
+</termdef></p>
+</div3>
+<div3 id='include-if-valid'>
+<head>“検証ã®ãŸã‚ã«å–è¾¼ã¿â€</head>
+<p>文書ã®&validity;ã‚’<termref def="dt-valid">検証</termref>ã™ã‚‹ã«ã¯ï¼ŒXML&processor;ãŒ&parsed-entity;ã¸ã®å‚照をèªè­˜ã—ãŸã¨ã,ãã®&replacement-text;ã‚’<termref def="dt-include">å–ã‚Šè¾¼ã¾</termref>ãªã‘ã‚Œã°ãªã‚‰ãªã„。実体ãŒå¤–部実体ã§ã‚ã£ã¦ï¼ŒXML文書ã®&validity;を検証ã—ãªã‘ã‚Œã°ï¼Œå®Ÿä½“ã®&replacement-text;ã‚’å–り込んã§ã‚‚<termref def="dt-may">よã„</termref>ãŒï¼Œãã†ã—ãªãã¨ã‚‚よã„。</p>
+<p>ã“ã®å–決ã‚ã¯ï¼ŒSGMLåŠã³XMLã®å®Ÿä½“ã®æ©Ÿæ§‹ãŒæä¾›ã™ã‚‹è‡ªå‹•å–è¾¼ã¿æ©Ÿèƒ½ãŒï¼Œæ–‡æ›¸ä½œæˆæ™‚ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«åŒ–を主ãªç›®çš„ã¨ã—ã¦è¨­è¨ˆã•ã‚Œã¦ãŠã‚Šï¼Œãã®ä»–ã®&application;(特ã«ï¼Œæ–‡æ›¸ã®ãƒ–ラウズ)ã«ã¯ï¼Œå¿…ãšã—ã‚‚é©åˆ‡ã§ã¯ãªã„,ã¨ã„ã†èªè­˜ã«ã‚ˆã‚‹ã€‚例ãˆã°ï¼Œãƒ–ラウザã¯å¤–部&parsed-entity;ã¸ã®å‚照を見ã¤ã‘ã‚‹ã¨ï¼Œãã®å®Ÿä½“ãŒå­˜åœ¨ã™ã‚‹ã¨ã„ã†è¡¨ç¤ºã ã‘ã‚’è¡Œã„,表示をè¦æ±‚ã•ã‚ŒãŸã¨ãã«ã ã‘,内容をå–り出ã™ã‹ã‚‚ã—ã‚Œãªã„。
+</p>
+</div3>
+<div3 id='forbidden'>
+<head>“ç¦æ­¢â€</head>
+<p>次ã¯ç¦æ­¢ã•ã‚Œã¦ãŠã‚Šï¼Œ<termref def='dt-fatal'>&fatal-error;</termref>ã¨ã™ã‚‹ã€‚
+<ulist>
+<item><p>a) <termref def='dt-unparsed'>&unparsed-entity;</termref>ã¸ã®å‚ç…§ã®å‡ºç¾ã€‚
+</p></item>
+<item><p>b) DTDã®<nt def='NT-EntityValue'>EntityValue</nt>åˆã¯<nt def="NT-AttValue">AttValue</nt>以外ã®éƒ¨åˆ†ã«ãŠã‘る,文字å‚ç…§åˆã¯ä¸€èˆ¬å®Ÿä½“ã¸ã®å‚ç…§ã®å‡ºç¾ã€‚</p></item>
+<item><p>c) 属性値内ã®å¤–部実体ã¸ã®å‚照。</p>
+</item>
+</ulist>
+</p>
+</div3>
+<div3 id='notify'>
+<head>“通知â€</head>
+<p><termref def='dt-unparsed'>&unparsed-entity;</termref>ã®åå‰ãŒï¼Œ<kw>ENTITY</kw>åˆã¯<kw>ENTITIES</kw>ã®å±žæ€§ã®å€¤ã«ãŠã„ã¦&token;ã¨ã—ã¦ç¾ã‚ŒãŸã¨ã,&processor;ã¯ï¼Œ&application;ã«å¯¾ã—ã¦ï¼Œé–¢é€£ä»˜ã‘られãŸ<termref def="dt-notation">記法</termref>å,記法ã«å¯¾ã™ã‚‹<termref def='dt-sysid'>システム</termref>&identifier;åŠã³(存在ã™ã‚Œã°)<termref def='dt-pubid'>公開</termref>&identifier;を通知ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+</div3>
+<div3 id='bypass'>
+<head>“&bypass;â€</head>
+<p>一般実体å‚ç…§ãŒï¼Œå®Ÿä½“宣言ã«ãŠã‘ã‚‹<nt def='NT-EntityValue'>EntityValue</nt>内ã«ç¾ã‚Œã‚‹ã¨ã,ãã‚Œã¯ç„¡è¦–ã•ã‚Œï¼Œãã®ã¾ã¾æ®‹ã‚‹ã€‚</p>
+</div3>
+<div3 id='as-PE'>
+<head>“PEã¨ã—ã¦å–è¾¼ã¿â€</head>
+<p>外部&parsed-entity;ã®å ´åˆã¨åŒæ§˜ã«ï¼Œãƒ‘ラメタ実体ã¯ï¼Œ&validity;ã‚’<titleref href='include-if-valid'>検証ã™ã‚‹ã¨ãã ã‘å–ã‚Šè¾¼ã¾ã‚Œã‚‹</titleref>å¿…è¦ãŒã‚る。パラメタ実体å‚照をDTD内ã«èªè­˜ã—ã¦å–り込むã¨ã,ãã®<termref def='dt-repltext'>&replacement-text;</termref>ã¯ï¼Œãã®å‰å¾Œã«ä¸€ã¤ã®&space-character;(#x20)ã®ä»˜åŠ ã«ã‚ˆã£ã¦å¼•ã伸ã°ã•ã‚Œã‚‹ã€‚ã“ã®æ„図ã¯ï¼Œãƒ‘ラメタ実体ã®&replacement-text;ãŒï¼ŒDTD内ã®ã„ãã¤ã‹ã®æ–‡æ³•çš„&token;を完全ã«å«ã‚€ã¨ï¼Œåˆ¶ç´„ã™ã‚‹ã“ã¨ã«ã‚る。
+</p>
+</div3>
+<!--
+<div3 id='gen-char-entproc'>
+<head>General and Character Entity Processing</head>
+<p>General-entity and character references are recognized in three
+contexts: wherever the nonterminal <nt def='NT-content'>content</nt> may
+appear, at any point within the nonterminal
+<nt def='NT-AttValue'>AttValue</nt>,
+and within the
+<termref def='dt-litentval'>literal entity value</termref>
+(<nt def='NT-EntityValue'>EntityValue</nt>)
+of an internal entity declaration.
+This section discusses the first two cases; the third
+is discussed <titleref href='intern-replacement'>below</titleref>.
+When an <termref def="dt-xml-proc">XML processor</termref> encounters
+such a reference, or the name of an unparsed entity as the value
+of an <kw>ENTITY</kw> or <kw>ENTITIES</kw> attribute, then:
+<olist>
+
+<item><p>In all cases, the XML processor may
+inform the application of the reference's occurrence and its identifier
+(for an entity reference, the name; for a character
+reference,
+the character number in decimal, hexadecimal, or binary form).</p></item>
+
+<item><p>For both character and entity references, the processor must
+remove the reference itself from the <termref def="dt-text">text</termref> data
+before passing the data to the application.
+</p></item>
+
+<item><p>For character references, the processor must
+pass the character indicated
+to the application in
+place of the reference.
+</p></item>
+
+<item><p>For an external entity, the processor must inform the
+application of the entity's <termref def="dt-sysid">system
+identifier</termref>, and <termref def="dt-pubid">public identifier</termref>
+if any.
+All strings
+of white space in the public identifier must be normalized to single space characters (#x20),
+and leading and trailing white space must be removed.</p></item>
+
+<item><p>If the external entity is binary, the processor must inform the
+application of the associated <termref def="dt-notation">notation</termref>
+name, and the notation's associated <termref def='dt-sysid'>system</termref>
+and <termref def='dt-pubid'>public</termref> (if any)
+identifiers.</p></item>
+
+<item><p><termdef id="dt-include" term="Include">For an internal
+(parsed) entity, the processor must <term>include</term> the
+entity; that is, retrieve its replacement text
+and process it as a part of the document
+(i.e. as <nt def="NT-content">content</nt> or <nt
+def="NT-AttValue">AttValue</nt>, whichever was being processed when
+the reference was recognized), passing the result to the application
+in place of the reference. The replacement text may contain both
+<termref def='dt-chardata'>character data</termref>
+and <termref def="dt-markup">markup</termref>, which must be recognized in
+the usual way, except that the replacement text of entities used to escape
+markup delimiters (the entities &magicents;) is always treated as
+data. (The string "<code>AT&amp;amp;T;</code>" expands to
+"<code>AT&amp;T;</code>" since the ampersand replacing "<code>&amp;amp;</code>"
+is not recognized
+as an entity-reference delimiter.) </termdef></p>
+<p>Since the entity may contain other entity references,
+an XML processor may have to repeat the inclusion process recursively.</p>
+</item>
+<item><p>If the entity is an external parsed entity, then in order to
+<termref def="dt-valid">validate</termref> the XML document, the processor must
+<termref def="dt-include">include</termref> the content of the
+entity.</p></item>
+
+<item><p>If the entity is an external parsed entity, and the processor is not
+attempting to <termref def="dt-valid">validate</termref> the XML document, the
+processor <termref def="dt-may">may</termref>, but need not, <termref
+def="dt-include">include</termref> the entity's content.</p>
+<p>This rule is based on the recognition that the automatic inclusion
+provided by the SGML and XML entity mechanism, primarily designed
+to support modularity in authoring, is not necessarily
+appropriate for other applications, in particular document browsing.
+Browsers, for example, when encountering an external parsed entity reference,
+might choose to provide a visual indication of the entity's
+presence and retrieve it for display only on demand.
+</p></item>
+</olist>
+</p>
+<p><termdef id="dt-escape" term="escape">Entity and character
+references can both be used to <term>escape</term> the left angle bracket,
+ampersand, and other delimiters. A set of general entities
+(&magicents;) is specified for this purpose.
+Numeric character references may also be used; they are
+expanded immediately when recognized, and must be treated as
+character data, so the numeric character references
+"<code>&amp;#60;</code>" and "<code>&amp;#38;</code>" may be used to
+escape <code>&lt;</code> and <code>&amp;</code> when they occur
+in character data.</termdef></p>
+</div3>
+<div3 id='PE-proc'>
+<head>Parameter Entity Processing</head>
+<p>Parameter-entity references are only recognized in the
+<termref def='dt-doctype'>DTD</termref>.
+Their processing, when they appear
+within the
+<termref def='dt-litentval'>literal entity value</termref>
+(<nt def='NT-EntityValue'>EntityValue</nt>)
+of an internal entity declaration,
+is discussed <titleref href='intern-replacement'>below</titleref>.
+They have these intended uses:
+<olist>
+<item><p>as a replacement for one or more complete markup declarations</p></item>
+<item><p>as a replacement for one or more complete "groups" in
+element declarations</p></item>
+<item><p>as a replacement for one or more complete "tokens" in
+markup declarations</p></item>
+</olist>
+</p>
+<p>The constraints requiring that PE replacement texts be properly nested
+with <titleref href='vc-PEinMarkupDecl'>markup declarations</titleref>
+and <titleref href='vc-PEinGroup'>content groups</titleref>
+govern the first two usages.</p>
+<p>To support the third intended usage,
+when an XML processor encounters a parameter-entity reference
+(outside of the
+<termref def='dt-litentval'>literal entity value</termref> in an entity
+declaration),
+it must <termref def="dt-include">include</termref>
+the named entity, but first expand its
+<termref def='dt-repltext'>replacement text</termref> by attaching
+space (#x20) characters to its beginning and the end, before
+processing it.</p>
+<p>The DTD text must match the relevant
+rules of this specification's grammar after all parameter-entity
+references have been expanded.
+<!-In addition, parameter entities referred to in specific
+contexts are required to satisfy certain constraints in their
+replacement text; for example, a parameter entity referred to within
+the internal DTD subset must match the rule for <nt
+def="NT-markupdecl">markupdecl</nt>. ->
+</p>
+</div3>
+-->
+</div2>
+<div2 id='intern-replacement'>
+<head>内部実体&replacement-text;ã®æ§‹ç¯‰</head>
+<p>内部実体ã®å–扱ã„ã®è¦å®šã§ï¼Œå®Ÿä½“値を二ã¤ã®å½¢å¼ã«åŒºåˆ¥ã™ã‚‹ã“ã¨ã¯å½¹ã«ç«‹ã¤ã€‚<termdef id="dt-litentval" term='Literal Entity Value'><term>&literal;実体値</term>ã¯ï¼Œå®Ÿä½“宣言内ã«å®Ÿéš›ã«å­˜åœ¨ã™ã‚‹ï¼Œå¼•ç”¨ç¬¦ã§å›²ã‚€&string;ã¨ã™ã‚‹ã€‚ã“ã‚Œã¯ï¼Œéžçµ‚端記å·<nt def='NT-EntityValue'>EntityValue</nt>ã«&match;ã™ã‚‹ã€‚</termdef><termdef id='dt-repltext' term='Replacement Text'><term>&replacement-text;</term>ã¯ï¼Œæ–‡å­—å‚ç…§åŠã³&parameter;実体å‚ç…§ã®ç½®æ›ãˆå¾Œã«ãŠã‘る,実体ã®å†…容ã¨ã™ã‚‹ã€‚</termdef></p>
+
+<p>内部実体宣言内ã§ä¸Žãˆã‚‹&literal;実体値<!-- replacement text -->(<nt def='NT-EntityValue'>EntityValue</nt>)ã¯ï¼Œæ–‡å­—å‚照,&parameter;実体å‚ç…§åŠã³ä¸€èˆ¬å®Ÿä½“å‚照をå«ã‚“ã§ã‚ˆã„。ã“れらã®å‚ç…§ã¯ï¼Œ<!-- replacement text. -->&literal;実体値内ã«å®Œå…¨ã«å«ã¾ã‚Œã¦ã„ãªã‘ã‚Œã°ãªã‚‰ãªã„。<termref def='dt-include'>展開ã™ã‚‹</termref>実際ã®&replacement-text;(å…ˆã«ç¤ºã—ãŸã‚‚ã®)ã¯ï¼Œå‚ç…§ã™ã‚‹&parameter;実体ã®<emph>&replacement-text;</emph>ã‚’å«ã¾ãªã‘ã‚Œã°ãªã‚‰ãšï¼Œ&literal;実体値内ã§ã®æ–‡å­—å‚ç…§ã®ä»£ã‚ã‚Šã«å‚ç…§ã—ãŸæ–‡å­—ã‚’å«ã¾ãªã‘ã‚Œã°ãªã‚‰ãªã„。ã—ã‹ã—,一般実体å‚ç…§ã¯ï¼Œãã®ã¾ã¾æ®‹ã—, 展開ã—ã¦ã¯ãªã‚‰ãªã„。
+<!-- in the replacement text that is to be included. -->
+例ãˆã°ï¼Œæ¬¡ã®å®£è¨€ã‚’与ãˆãŸã¨ã™ã‚‹ã€‚
+
+<eg><![CDATA[<!ENTITY % pub "&#xc9;ditions Gallimard" >
+<!ENTITY rights "All rights reserved" >
+<!ENTITY book "La Peste: Albert Camus,
+&#xA9; 1947 %pub;. &rights;" >]]></eg>
+実体ã®&replacement-text;"<code>book</code>"ã¯ï¼Œæ¬¡ã®ã¨ãŠã‚Šã¨ãªã‚‹ã€‚
+<eg>La Peste: Albert Camus,
+&#169; 1947 &#201;ditions Gallimard. &amp;rights;</eg>
+å‚ç…§"<code>&amp;book;</code>"ãŒï¼Œæ–‡æ›¸ã®å†…容åˆã¯å±žæ€§å€¤å†…ã«å‡ºç¾ã—ã¦ã„ã‚Œã°ï¼Œä¸€èˆ¬å®Ÿä½“å‚ç…§"<code>&amp;rights;</code>"ã¯ï¼Œå±•é–‹ã•ã‚Œã¦ã„る。</p>
+<p>ã“れらã®å˜ç´”ãªè¦å‰‡ã¯ï¼Œè¤‡åˆç›¸äº’作用をもã¤ã€‚
+<!-- 日本語訳ã«ã¤ã„ã¦ï¼š interaction = 相互作用(金本)-->
+難ã—ã„例ã«ã¤ã„ã¦ã®è©³ç´°ã¯ï¼Œ<titleref href='sec-entexpand'>実体å‚ç…§ã®å±•é–‹ã®ä»˜éŒ²</titleref>ã‚’å‚ç…§ã®ã“ã¨ã€‚
+</p>
+<!-- Replaced by the above -TB
+<p>Implementors of XML processors need to know the rules for
+expansion of references in more detail. These rules only come into
+play when the replacement text for an internal entity itself contains
+other references.
+<olist>
+<item><p>In the replacement text of an internal entity, parameter-entity
+references and character references in the replacement text
+are recognized and resolved
+when the entity declaration is parsed,
+before the replacement text is stored in
+the processor's symbol table.
+General-entity references in the replacement text are not
+resolved when the entity declaration is parsed.</p></item>
+<item><p>In the document, when a general-entity reference is
+resolved, its replacement text is parsed. Character references
+encountered in the replacement text are
+resolved immediately; general-entity references encountered in the
+replacement text may be resolved or left unresolved, as described
+<titleref href="entproc">above</titleref>.
+Character and general-entity references must be
+contained entirely within the entity's replacement text.
+</p></item>
+</olist>
+</p>
+
+<p>Simple character references do not suffice to escape delimiters
+within the replacement text of an internal entity: they will be
+expanded when the entity declaration is parsed, before the replacement
+text is stored in the symbol table. When the entity itself is
+referred to, the replacement text will be parsed again, and the
+delimiters (no longer character references)
+will be recognized as delimiters. To escape the
+characters &magicents; in an entity replacement text, use
+a general-entity reference or a doubly-escaped character reference.
+See <titleref href='sec-entexpand'>the appendix on expansion
+of entity references</titleref>
+for detailed examples.</p>
+-->
+
+
+</div2>
+<div2 id='sec-predefined-ent'>
+<head>定義済ã¿å®Ÿä½“</head>
+<p><termdef id="dt-escape" term="escape">
+実体å‚ç…§åŠã³æ–‡å­—å‚ç…§ã®ã„ãšã‚Œã‚‚,&left-angle-bracket;,アンãƒã‚µãƒ³ãƒ‰åŠã³ä»–ã®åŒºåˆ‡ã‚Šå­ã‚’<term>&escape;</term>ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã§ãる。ã„ãã¤ã‹ã®ä¸€èˆ¬å®Ÿä½“(&magicents;)を,ã“ã®ç›®çš„ã®ãŸã‚ã«æŒ‡å®šã™ã‚‹ã€‚数値ã«ã‚ˆã‚‹æ–‡å­—å‚照も,åŒæ§˜ã®ç›®çš„ã®ãŸã‚ã«ä½¿ç”¨ã§ãる。文字å‚ç…§ã¯ï¼Œèªè­˜ã•ã‚Œã‚‹ã¨ç›´ã¡ã«å±•é–‹ã•ã‚Œï¼Œæ–‡å­—データã¨ã—ã¦æ‰±ã‚れるã®ã§ï¼Œæ•°å€¤ã«ã‚ˆã‚‹æ–‡å­—å‚ç…§"<code>&amp;#60;</code>"åŠã³"<code>&amp;#38;</code>"ã¯ï¼Œæ–‡å­—データ内ã«å‡ºç¾ã™ã‚‹<code>&lt;</code>åŠã³<code>&amp;</code>ã‚’&escape;ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã§ãる。</termdef></p>
+<p>ã™ã¹ã¦ã®XML&processor;ã¯ï¼Œå®£è¨€ã•ã‚Œã¦ã„ã‚‹ã‹ã©ã†ã‹ã«é–¢ä¿‚ãªã,ã“れらã®å®Ÿä½“ã‚’èªè­˜ã—ãªãã¦ã¯ãªã‚‰ãªã„。<termref def='dt-interop'>相互é‹ç”¨æ€§ã®ãŸã‚</termref>,&valid;ãªXML文書ã¯ï¼Œã“れらã®å®Ÿä½“を使用ã™ã‚‹å‰ã«ï¼Œä»–ã®å®Ÿä½“ã¨åŒæ§˜ã«ï¼Œå®£è¨€ã™ã‚‹ã“ã¨ãŒæœ›ã¾ã—ã„。実体を宣言ã™ã‚‹å ´åˆã¯ï¼Œ&replacement-text;ã‚’&escape;ã™ã‚‹ä¸€æ–‡å­—ã¨ã™ã‚‹å†…部実体ã¨ã—ã¦ï¼Œæ¬¡ã®ã¨ãŠã‚Šã«å®£è¨€ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+<eg><![CDATA[<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+]]></eg>
+"<code>lt</code>"åŠã³"<code>amp</code>"宣言内ã®"<code>&lt;</code>"åŠã³"<code>&amp;</code>"文字ã¯ï¼Œå®Ÿä½“ã®ç½®æ›ãƒ†ã‚­ã‚¹ãƒˆãŒï¼Œ&well-formed;ã¨ãªã‚‹ã‚ˆã†ã«äºŒé‡ã«&escape;ã•ã‚Œã‚‹ã“ã¨ã«æ³¨æ„。
+</p>
+</div2>
+
+
+<div2 id='Notations'>
+<head>記法宣言</head>
+
+
+<p>
+<termdef id="dt-notation" term="Notation">
+<term>記法</term>ã¯ï¼Œ<termref def="dt-extent">&unparsed-entity;</termref>ã®å½¢å¼ã‚’&identify;åå‰ã‹ï¼Œåˆã¯<termref def="dt-pi">処ç†å‘½ä»¤</termref>ã®å¯¾è±¡ã¨ã™ã‚‹&application;ã‚’&identify;åå‰ã¨ã™ã‚‹ã€‚</termdef></p>
+<p><termdef id="dt-notdecl" term="Notation Declaration">
+<term>記法宣言</term>ã¯ï¼Œè¨˜æ³•ã®åå‰åŠã³å¤–部&identifier;ã‚’æä¾›ã™ã‚‹ã€‚ã“ã®åå‰ã¯ï¼Œå®Ÿä½“åŠã³å±žæ€§ãƒªã‚¹ãƒˆå®£è¨€ä¸¦ã³ã«å±žæ€§æŒ‡å®šã«ç”¨ã„る。外部&identifier;ã¯ï¼Œä¸Žãˆã‚‰ã‚ŒãŸè¨˜æ³•ã®ãƒ‡ãƒ¼ã‚¿ã‚’処ç†ã§ãるヘルパ&application;を,XML&processor;åˆã¯ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚¢ãƒ—リケーションãŒæŽ¢ã™ãŸã‚ã«ï¼Œåˆ©ç”¨ã§ãる。
+<scrap lang='ebnf'>
+<head>記法宣言</head>
+<prod id='NT-NotationDecl'><lhs>NotationDecl</lhs>
+<rhs>'&lt;!NOTATION' <nt def='NT-S'>S</nt> <nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>
+(<nt def='NT-ExternalID'>ExternalID</nt> |
+<nt def='NT-PublicID'>PublicID</nt>)
+<nt def='NT-S'>S</nt>? '>'</rhs></prod>
+<prod id='NT-PublicID'><lhs>PublicID</lhs>
+<rhs>'PUBLIC' <nt def='NT-S'>S</nt>
+<nt def='NT-PubidLiteral'>PubidLiteral</nt>
+</rhs></prod>
+</scrap>
+</termdef></p>
+<p>宣言ã—,属性値,属性定義åˆã¯å®Ÿä½“宣言ã§å‚ç…§ã™ã‚‹ã™ã¹ã¦ã®è¨˜æ³•ã«ã¤ã„ã¦ï¼ŒXML&processor;ã¯ï¼Œè¨˜æ³•ã®åå‰åŠã³å¤–部&identifier;ã‚’&application;ã«æä¾›ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。ã•ã‚‰ã«ï¼Œå¤–部&identifier;を,<termref def="dt-sysid">システム&identifier;</termref>,ファイルååˆã¯ãã®ä»–ã®æƒ…å ±ã«å±•é–‹ã—ã¦ã‚‚よã,ã“れらを用ã„ã¦ï¼Œ&application;ã¯ï¼Œãã®è¨˜æ³•ã®ãƒ‡ãƒ¼ã‚¿ã‚’処ç†ã™ã‚‹&processor;ã‚’èµ·å‹•ã™ã‚‹ã€‚(ã—ã‹ã—,XML&processor;åˆã¯&application;ãŒå‹•ä½œã™ã‚‹ã‚·ã‚¹ãƒ†ãƒ ã§ã¯åˆ©ç”¨ã§ããªã„記法を,XML文書ãŒå®£è¨€ã—å‚ç…§ã—ã¦ã‚‚,ã“ã‚Œã¯ï¼Œ&error;ã¨ã¯ã—ãªã„。)</p>
+</div2>
+
+
+<div2 id='sec-doc-entity'>
+<head>文書実体</head>
+
+<p><termdef id="dt-docent" term="Document Entity"><term>文書実体</term>ã¯ï¼Œå®Ÿä½“ã®å½¢æˆã™ã‚‹æœ¨æ§‹é€ ã®&root;ã§ã‚ã£ã¦ï¼Œ<termref def="dt-xml-proc">XML&processor;</termref>ãŒï¼Œå‡¦ç†ã‚’開始ã™ã‚‹åœ°ç‚¹ã¨ã™ã‚‹ã€‚</termdef>ã“ã®&TR-or-Rec;ã¯ï¼ŒXML&processor;ãŒï¼Œæ–‡æ›¸å®Ÿä½“ã®å­˜åœ¨ã™ã‚‹å ´æ‰€ã‚’ã©ã®ã‚ˆã†ã«è¦‹ã¤ã‘ã‚‹ã‹ã¯ï¼Œè¦å®šã—ãªã„。他ã®å®Ÿä½“ã¨ç•°ãªã‚Šï¼Œæ–‡æ›¸å®Ÿä½“ã¯åå‰ã‚’ã‚‚ãŸãšï¼Œã„ã‹ãªã‚‹è­˜åˆ¥ã‚‚ãªã—ã«&processor;ã¸ã®å…¥åŠ›&stream;ã«å‡ºç¾ã—ã¦ã‚‚よã„。</p>
+</div2>
+
+
+</div1>
+<!-- &Conformance; -->
+<div1 id='sec-conformance'>
+<head>é©åˆæ€§</head>
+
+<p>é©åˆã™ã‚‹<termref def="dt-xml-proc">XML&processor;</termref>ã¯ï¼Œ&validating;ã‚‚ã®åŠã³&non-validating;ã‚‚ã®ã®ï¼ŒäºŒã¤ã«åˆ†é¡žã•ã‚Œã‚‹ã€‚</p>
+<p>&validating;システムåŠã³&non-validating;システムã¯ï¼Œã“ã®&TR-or-Rec;ãŒè¦å®šã™ã‚‹&well-formed;制約ã¸ã®é•åを報告ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+<p><termdef id="dt-validating" term="Validating Processor"><term>&validating;&processor;</term>ã¯ï¼Œ<termref def="dt-doctype">DTD</termref>内ã®å®£è¨€ã«ã‚ˆã£ã¦ç¤ºã•ã‚ŒãŸï¼Œåˆ¶ç´„ã¸ã®é•åを報告ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。ã•ã‚‰ã«ï¼Œã“ã®&TR-or-Rec;ãŒè¦å®šã™ã‚‹&validity;制約ã¸ã®é•åを,ã™ã¹ã¦å ±å‘Šã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+</termdef>
+</p>
+</div1>
+
+<div1 id='sec-notation'>
+<head>記法</head>
+
+<p>XMLã®å½¢å¼çš„ãªæ–‡æ³•ã¯ï¼Œç°¡å˜ãªæ‹¡å¼µBackus-Naur Form(EBNF)記法ã«ã‚ˆã£ã¦ä¸Žãˆã‚‹ã€‚文法ã®å„è¦å‰‡ã¯ï¼Œæ¬¡ã®å½¢å¼ã§ï¼Œè¨˜å·ã‚’一ã¤å®šç¾©ã™ã‚‹ã€‚
+<eg>symbol ::= expression</eg></p>
+<p>記å·ã¯ï¼Œæ­£è¦è¡¨ç¾ã§å®šç¾©ã™ã‚‹ã¨ãã¯å¤§æ–‡å­—ã§å§‹ã‚,ãã†ã§ãªã‘ã‚Œã°ï¼Œå°æ–‡å­—ã§å§‹ã‚る。&string;&literal;ã¯ï¼Œå¼•ç”¨ç¬¦ã§å›²ã‚€ã€‚
+<!--* The distinction between symbols which can and cannot be
+recognized using simple regular expressions may be used to set the
+boundary between an implementation's lexical scanner and its parser,
+but this specification neither constrains the placement of that
+boundary nor presupposes that all implementations will have one. *-->
+</p>
+
+<p>è¦å‰‡ã®å³å´ã®å¼å†…ã§ã¯ï¼Œä¸€ã¤åˆã¯è¤‡æ•°ã®æ–‡å­—ã‹ã‚‰ãªã‚‹&string;ã¨&match;ã™ã‚‹ãŸã‚ã«ï¼Œæ¬¡ã®å¼ã‚’使用ã™ã‚‹ã€‚
+<glist>
+<gitem>
+<label><code>#xN</code></label>
+<def><p>ã“ã“ã§ï¼Œ<code>N</code>ã¯16進ã®æ•´æ•°ã¨ã™ã‚‹ã€‚ISO/IEC 10646ã®æ–‡å­—ã§ã‚ã£ã¦ï¼Œæ­£è¦å½¢(UCS-4)ã®&code-value;を符å·ãªã—2進数ã¨ã—ã¦è§£é‡ˆã—ãŸã¨ã,指定ã—ãŸå€¤ã¨ç­‰ã—ã„ã‚‚ã®ã¨&match;ã™ã‚‹ã€‚<code>#xN</code>å½¢å¼ã®å…ˆé ­ã«ã‚¼ãƒ­ãŒã„ãã¤ã‹ç¾ã‚Œã‚‹ã‹ã¯ï¼Œæ„味をもãŸãªã„。&code-value;<!-- bit string -->ã«ãŠã‘る先頭ã®ã‚¼ãƒ­ã®æ•°ã¯ï¼Œæ–‡å­—ã®ç¬¦å·åŒ–ã«ã‚ˆã£ã¦æ±ºå®šã•ã‚Œã‚‹ã®ã§ï¼ŒXMLã«ã¨ã£ã¦ã¯æ„味ãŒãªã„。
+</p></def>
+</gitem>
+<gitem>
+<label><code>[a-zA-Z]</code>, <code>[#xN-#xN]</code></label>
+<def><p>指定ã—ãŸç¯„囲ã®å€¤(両端ã®å€¤ã‚’å«ã‚€ã€‚)をもã¤ä»»æ„ã®<termref def='dt-character'>文字</termref>ã¨&match;ã™ã‚‹ã€‚</p></def>
+</gitem>
+<gitem>
+<label><code>[^a-z]</code>, <code>[^#xN-#xN]</code></label>
+<def><p>指定ã—ãŸç¯„囲<emph>外</emph>ã®å€¤ã‚’ã‚‚ã¤ä»»æ„ã®<termref def='dt-character'>文字</termref>ã¨&match;ã™ã‚‹ã€‚</p></def>
+</gitem>
+<gitem>
+<label><code>[^abc]</code>, <code>[^#xN#xN#xN]</code></label>
+<def><p>指定ã—ãŸæ–‡å­—以外ã®å€¤ã‚’ã‚‚ã¤ä»»æ„ã®<termref def='dt-character'>文字</termref>ã¨&match;ã™ã‚‹ã€‚</p></def>
+</gitem>
+<gitem>
+<label><code>"string"</code></label>
+<def><p>&double-quote;ã§å›²ã‚€&string;&literal;ã¨<termref def="dt-match">&match;ã—ã¦ã„ã‚‹</termref>&string;&literal;ã¨&match;ã™ã‚‹ã€‚</p></def>
+</gitem>
+<gitem>
+<label><code>'string'</code></label>
+<def><p>&single-quote;ã§å›²ã‚€&string;&literal;ã¨<termref def="dt-match">&match;ã—ã¦ã„ã‚‹</termref>&string;&literal;ã¨&match;ã™ã‚‹ã€‚</p></def>
+</gitem>
+</glist>
+ã“れらã®è¨˜å·ã¯ï¼Œæ¬¡ã®å½¢å¼ã®çµ„åˆã›ã§ä½¿ç”¨ã™ã‚‹ã€‚ã“ã“ã§ï¼Œ<code>A</code>åŠã³<code>B</code>ã¯ï¼Œå˜ç´”ãªå¼ã¨ã™ã‚‹ã€‚
+<glist>
+<gitem>
+<label>(<code>expression</code>)</label>
+<def><p><code>expression</code>ã¯ï¼Œä¸€ã¤ã®ã¾ã¨ã¾ã‚Šã¨ã—ã¦æ‰±ã„,ã“ã“ã«ç¤ºã™çµ„åˆã›ã§ä½¿ã£ã¦ã‚‚よã„。</p></def>
+</gitem>
+<gitem>
+<label><code>A?</code></label>
+<def><p><code>A</code>åˆã¯ä½•ã‚‚ãªã—ã¨&match;ã™ã‚‹(オプションã®<code>A</code>)。</p></def>
+</gitem>
+<gitem>
+<label><code>A B</code></label>
+<def><p><code>A</code>ã®æ¬¡ã«<code>B</code>ãŒå‡ºç¾ã™ã‚‹ã‚‚ã®ã¨&match;ã™ã‚‹ã€‚
+</p></def>
+</gitem>
+<gitem>
+<label><code>A | B</code></label>
+<def><p><code>A</code>åˆã¯<code>B</code>,ãŸã ã—,両方ã§ã¯ãªã„,ã¨&match;ã™ã‚‹ã€‚
+</p></def>
+</gitem>
+<gitem>
+<label><code>A - B</code></label>
+<def><p><code>A</code>ã¨&match;ã™ã‚‹ãŒï¼Œ<code>B</code>ã¨ã¯&match;ã—ãªã„,任æ„ã®&string;ã¨&match;ã™ã‚‹ã€‚</p></def>
+</gitem>
+<gitem>
+<label><code>A+</code></label>
+<def><p><code>A</code>ã®1回以上ã®ç¹°è¿”ã—ã¨&match;ã™ã‚‹ã€‚</p></def>
+</gitem>
+<gitem>
+<label><code>A*</code></label>
+<def><p><code>A</code>ã®0回以上ã®ç¹°è¿”ã—ã¨&match;ã™ã‚‹ã€‚</p></def>
+</gitem>
+<!-- DEATH TO %'s
+<gitem>
+<label><code>%a</code></label>
+<def><p>specifies that <emph>in the external DTD subset</emph> a
+<termref def='dt-param-entity'>parameter entity</termref> may occur in the
+text at the position where <code>a</code> may occur; if so, its
+replacement text must match <code>S? a S?</code>. If
+the expression <code>a</code> is governed by a suffix operator, then
+the suffix operator determines both the maximum number of parameter-entity
+references allowed and the number of occurrences of <code>a</code>
+in the replacement text of the parameter entities: <code>%a*</code>
+means that <code>a</code> must occur zero or more times, and
+that some of its occurrences may be replaced by references to
+parameter entities whose replacement text must contain zero or
+more occurrences of <code>a</code>; it is thus a more compact way
+of writing <code>%(a*)*</code>.
+Similarly, <code>%a+</code> means that <code>a</code>
+must occur one or more times, and may be replaced by
+parameter entities with replacement text matching
+<code>S? (a S?)+</code>.
+The recognition of parameter entities in the internal subset is much more
+highly constrained.
+</p></def>
+</gitem>
+-->
+</glist>
+生æˆè¦å‰‡å†…ã§ä½¿ç”¨ã™ã‚‹ä»–ã®è¨˜æ³•ã‚’,次ã«ç¤ºã™ã€‚
+<glist>
+<gitem>
+<label><code>/* ... */</code></label>
+<def><p>コメント。</p></def>
+</gitem>
+<gitem>
+<label><code>[ wfc: ... ]</code></label>
+<def><p>&well-formed;制約。生æˆè¦å‰‡ã«ä»˜ä¸Žã—ãŸï¼Œ<termref def="dt-wellformed">&well-formed;</termref>ã®æ–‡æ›¸ã«é–¢ã™ã‚‹åˆ¶ç´„を,åå‰ã«ã‚ˆã£ã¦&identify;。</p></def>
+</gitem>
+<gitem>
+<label><code>[ vc: ... ]</code></label>
+<def><p>&validity;制約。生æˆè¦å‰‡ã«ä»˜ä¸Žã—ãŸï¼Œ<termref def="dt-valid">&valid;</termref>ãªæ–‡æ›¸ã«é–¢ã™ã‚‹åˆ¶ç´„を,åå‰ã«ã‚ˆã£ã¦&identify;。
+</p></def>
+</gitem>
+</glist>
+</p></div1>
+
+</body>
+<back>
+<!-- &SGML; -->
+
+<!-- &Biblio; -->
+<div1 id='sec-bibliography'>
+
+<head>å‚考文献</head>
+<div2 id='sec-existing-stds'>
+<head>&normative;å‚考文献</head>
+<!--* <ulist><item>
+<p>Unicode and ISO/IEC 10646. This specification depends on the
+international standard ISO/IEC 10646 (with amendments AM 1 through AM 7)
+and the Unicode Standard, Version 2.0 <bibref ref='Unicode'/>,
+which define the encodings and meanings of
+the <termref def="dt-character">characters</termref> which
+make up XML <termref def="dt-text">text</termref>.
+All the characters in ISO/IEC 10646 are present, at the same code points,
+in Unicode.</p></item>
+<item><p>XXX XXX defines the syntax and semantics of
+Uniform Resource Identifiers, or URIs.</p></item>
+<item><p>IETF RFC 1766, with ISO 639 and 3166,
+describe the codes that may be used in the
+special <titleref href='sec-lang-tag'>xml:lang</titleref> attribute.</p>
+</item></ulist>
+*-->
+
+<blist>
+
+<bibl id='RFC1766' key='IETF RFC 1766'>
+IETF (Internet Engineering Task Force).
+<emph>RFC 1766: Tags for the Identification of Languages</emph>,
+ed. H. Alvestrand.
+1995.
+</bibl>
+
+<bibl id='ISO639' key='ISO 639'>
+(International Organization for Standardization).
+<emph>ISO 8879:1988 (E).
+Code for the representation of names of languages.</emph>
+[Geneva]: International Organization for
+Standardization, 1988.</bibl>
+
+<bibl id='ISO3166' key='ISO 3166'>
+(International Organization for Standardization).
+<emph>ISO 3166-1:1997 (E).
+Codes for the representation of names of countries and their subdivisions
+&mdash; Part 1: Country codes</emph>
+[Geneva]: International Organization for
+Standardization, 1997.</bibl>
+
+<bibl id='ISO10646' key='ISO/IEC 10646'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10646-1993 (E). Information technology &mdash; Universal
+Multiple-Octet Coded Character Set (UCS) &mdash; Part 1:
+Architecture and Basic Multilingual Plane.</emph>
+[Geneva]: International Organization for
+Standardization, 1993 (plus amendments AM 1 through AM 7).
+</bibl>
+
+<bibl id='Unicode' key='Unicode'>The Unicode Consortium.
+<emph>The Unicode Standard, Version 2.0.</emph>
+Reading, Mass.: Addison-Wesley Developers Press, 1996.</bibl>
+
+</blist>
+
+</div2>
+
+<div2><head>ä»–ã®å‚考文献</head>
+
+<blist>
+
+<bibl id='Aho' key='Aho/Ullman'>Aho, Alfred V.,
+Ravi Sethi, and Jeffrey D. Ullman.
+<emph>Compilers: Principles, Techniques, and Tools</emph>.
+Reading: Addison-Wesley, 1986, rpt. corr. 1988.</bibl>
+
+<bibl id="Berners-Lee" xml-link="simple" key="Berners-Lee et al.">
+Berners-Lee, T., R. Fielding, and L. Masinter.
+<emph>Uniform Resource Identifiers (URI): Generic Syntax and
+Semantics</emph>.
+1997.
+(Work in progress; see updates to RFC1738.)</bibl>
+
+<bibl id='ABK' key='Br&#252;ggemann-Klein'>Br&#252;ggemann-Klein, Anne.
+<emph>Regular Expressions into Finite Automata</emph>.
+Extended abstract in I. Simon, Hrsg., LATIN 1992,
+S. 97-98. Springer-Verlag, Berlin 1992.
+Full Version in Theoretical Computer Science 120: 197-213, 1993.
+<!--
+Universitat Freiburg, Institut fur Informatik,
+Bericht 33, Juli 1991.-->
+</bibl>
+
+<bibl id='ABKDW' key='Br&#252;ggemann-Klein and Wood'>Br&#252;ggemann-Klein, Anne,
+and Derick Wood.
+<emph>Deterministic Regular Languages</emph>.
+Universit&#228;t Freiburg, Institut f&#252;r Informatik,
+Bericht 38, Oktober 1991.
+</bibl>
+
+<bibl id="RFC1738" xml-link="simple" key="IETF RFC1738">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1738: Uniform Resource Locators (URL)</emph>,
+ed. T. Berners-Lee, L. Masinter, M. McCahill.
+1994.
+</bibl>
+
+<bibl id="RFC1808" xml-link="simple" key="IETF RFC1808">
+IETF (Internet Engineering Task Force).
+<emph>RFC 1808: Relative Uniform Resource Locators</emph>,
+ed. R. Fielding.
+1995.
+</bibl>
+
+<bibl id="RFC2141" xml-link="simple" key="IETF RFC2141">
+IETF (Internet Engineering Task Force).
+<emph>RFC 2141: URN Syntax</emph>,
+ed. R. Moats.
+1997.
+</bibl>
+
+<bibl id='ISO8879' key='ISO/IEC 8879'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 8879-1986 (E). Information processing &mdash; Text and Office
+Systems &mdash; Standard Generalized Markup Language (SGML).</emph> First
+edition &mdash; 1986-10-15. [Geneva]: International Organization for
+Standardization, 1986.
+</bibl>
+
+
+<bibl id='ISO10744' key='ISO/IEC 10744'>ISO
+(International Organization for Standardization).
+<emph>ISO/IEC 10744-1992 (E). Information technology &mdash;
+Hypermedia/Time-based Structuring Language (HyTime).
+</emph>
+[Geneva]: International Organization for
+Standardization, 1992.
+<emph>Extended Facilities Annexe.</emph>
+[Geneva]: International Organization for
+Standardization, 1996.
+</bibl>
+
+
+
+</blist>
+</div2>
+</div1>
+<div1 id='CharClasses'>
+<head>文字クラス</head>
+
+<p>Unicode標準ã«å®šç¾©ã™ã‚‹&property;ã«ã—ãŸãŒã£ã¦ï¼Œæ–‡å­—ã¯ï¼Œ&base-character;(BaseChar)(ã“れらã¯ï¼Œ&diacritical-mark;を除ãラテンアルファベットã®ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆæ–‡å­—ã‚’å«ã‚€),&ideographic;(ideographic)åŠã³&combining-character;(CombiningChar)(ã“ã®ã‚¯ãƒ©ã‚¹ã¯ï¼Œã»ã¨ã‚“ã©ã®&diacritical-mark;ã‚’å«ã‚€)ã«ã‚¯ãƒ©ã‚¹åˆ†ã‘ã™ã‚‹ã€‚ã“れらã®ã‚¯ãƒ©ã‚¹ã¯ï¼Œçµåˆã—,&letter;(Letter)ã®ã‚¯ãƒ©ã‚¹ã¨ãªã‚‹ã€‚10進数値(Digit)åŠã³&extender;(Extender)も区別ã™ã‚‹ã€‚
+<scrap lang="ebnf" id="CHARACTERS">
+<head>文字</head>
+<prodgroup pcw3="3" pcw4="15">
+<prod id="NT-Letter"><lhs>Letter</lhs>
+<rhs><nt def="NT-BaseChar">BaseChar</nt>
+| <nt def="NT-Ideographic">Ideographic</nt></rhs> </prod>
+<prod id='NT-BaseChar'><lhs>BaseChar</lhs>
+<rhs>[#x0041-#x005A]
+|&nbsp;[#x0061-#x007A]
+|&nbsp;[#x00C0-#x00D6]
+|&nbsp;[#x00D8-#x00F6]
+|&nbsp;[#x00F8-#x00FF]
+|&nbsp;[#x0100-#x0131]
+|&nbsp;[#x0134-#x013E]
+|&nbsp;[#x0141-#x0148]
+|&nbsp;[#x014A-#x017E]
+|&nbsp;[#x0180-#x01C3]
+|&nbsp;[#x01CD-#x01F0]
+|&nbsp;[#x01F4-#x01F5]
+|&nbsp;[#x01FA-#x0217]
+|&nbsp;[#x0250-#x02A8]
+|&nbsp;[#x02BB-#x02C1]
+|&nbsp;#x0386
+|&nbsp;[#x0388-#x038A]
+|&nbsp;#x038C
+|&nbsp;[#x038E-#x03A1]
+|&nbsp;[#x03A3-#x03CE]
+|&nbsp;[#x03D0-#x03D6]
+|&nbsp;#x03DA
+|&nbsp;#x03DC
+|&nbsp;#x03DE
+|&nbsp;#x03E0
+|&nbsp;[#x03E2-#x03F3]
+|&nbsp;[#x0401-#x040C]
+|&nbsp;[#x040E-#x044F]
+|&nbsp;[#x0451-#x045C]
+|&nbsp;[#x045E-#x0481]
+|&nbsp;[#x0490-#x04C4]
+|&nbsp;[#x04C7-#x04C8]
+|&nbsp;[#x04CB-#x04CC]
+|&nbsp;[#x04D0-#x04EB]
+|&nbsp;[#x04EE-#x04F5]
+|&nbsp;[#x04F8-#x04F9]
+|&nbsp;[#x0531-#x0556]
+|&nbsp;#x0559
+|&nbsp;[#x0561-#x0586]
+|&nbsp;[#x05D0-#x05EA]
+|&nbsp;[#x05F0-#x05F2]
+|&nbsp;[#x0621-#x063A]
+|&nbsp;[#x0641-#x064A]
+|&nbsp;[#x0671-#x06B7]
+|&nbsp;[#x06BA-#x06BE]
+|&nbsp;[#x06C0-#x06CE]
+|&nbsp;[#x06D0-#x06D3]
+|&nbsp;#x06D5
+|&nbsp;[#x06E5-#x06E6]
+|&nbsp;[#x0905-#x0939]
+|&nbsp;#x093D
+|&nbsp;[#x0958-#x0961]
+|&nbsp;[#x0985-#x098C]
+|&nbsp;[#x098F-#x0990]
+|&nbsp;[#x0993-#x09A8]
+|&nbsp;[#x09AA-#x09B0]
+|&nbsp;#x09B2
+|&nbsp;[#x09B6-#x09B9]
+|&nbsp;[#x09DC-#x09DD]
+|&nbsp;[#x09DF-#x09E1]
+|&nbsp;[#x09F0-#x09F1]
+|&nbsp;[#x0A05-#x0A0A]
+|&nbsp;[#x0A0F-#x0A10]
+|&nbsp;[#x0A13-#x0A28]
+|&nbsp;[#x0A2A-#x0A30]
+|&nbsp;[#x0A32-#x0A33]
+|&nbsp;[#x0A35-#x0A36]
+|&nbsp;[#x0A38-#x0A39]
+|&nbsp;[#x0A59-#x0A5C]
+|&nbsp;#x0A5E
+|&nbsp;[#x0A72-#x0A74]
+|&nbsp;[#x0A85-#x0A8B]
+|&nbsp;#x0A8D
+|&nbsp;[#x0A8F-#x0A91]
+|&nbsp;[#x0A93-#x0AA8]
+|&nbsp;[#x0AAA-#x0AB0]
+|&nbsp;[#x0AB2-#x0AB3]
+|&nbsp;[#x0AB5-#x0AB9]
+|&nbsp;#x0ABD
+|&nbsp;#x0AE0
+|&nbsp;[#x0B05-#x0B0C]
+|&nbsp;[#x0B0F-#x0B10]
+|&nbsp;[#x0B13-#x0B28]
+|&nbsp;[#x0B2A-#x0B30]
+|&nbsp;[#x0B32-#x0B33]
+|&nbsp;[#x0B36-#x0B39]
+|&nbsp;#x0B3D
+|&nbsp;[#x0B5C-#x0B5D]
+|&nbsp;[#x0B5F-#x0B61]
+|&nbsp;[#x0B85-#x0B8A]
+|&nbsp;[#x0B8E-#x0B90]
+|&nbsp;[#x0B92-#x0B95]
+|&nbsp;[#x0B99-#x0B9A]
+|&nbsp;#x0B9C
+|&nbsp;[#x0B9E-#x0B9F]
+|&nbsp;[#x0BA3-#x0BA4]
+|&nbsp;[#x0BA8-#x0BAA]
+|&nbsp;[#x0BAE-#x0BB5]
+|&nbsp;[#x0BB7-#x0BB9]
+|&nbsp;[#x0C05-#x0C0C]
+|&nbsp;[#x0C0E-#x0C10]
+|&nbsp;[#x0C12-#x0C28]
+|&nbsp;[#x0C2A-#x0C33]
+|&nbsp;[#x0C35-#x0C39]
+|&nbsp;[#x0C60-#x0C61]
+|&nbsp;[#x0C85-#x0C8C]
+|&nbsp;[#x0C8E-#x0C90]
+|&nbsp;[#x0C92-#x0CA8]
+|&nbsp;[#x0CAA-#x0CB3]
+|&nbsp;[#x0CB5-#x0CB9]
+|&nbsp;#x0CDE
+|&nbsp;[#x0CE0-#x0CE1]
+|&nbsp;[#x0D05-#x0D0C]
+|&nbsp;[#x0D0E-#x0D10]
+|&nbsp;[#x0D12-#x0D28]
+|&nbsp;[#x0D2A-#x0D39]
+|&nbsp;[#x0D60-#x0D61]
+|&nbsp;[#x0E01-#x0E2E]
+|&nbsp;#x0E30
+|&nbsp;[#x0E32-#x0E33]
+|&nbsp;[#x0E40-#x0E45]
+|&nbsp;[#x0E81-#x0E82]
+|&nbsp;#x0E84
+|&nbsp;[#x0E87-#x0E88]
+|&nbsp;#x0E8A
+|&nbsp;#x0E8D
+|&nbsp;[#x0E94-#x0E97]
+|&nbsp;[#x0E99-#x0E9F]
+|&nbsp;[#x0EA1-#x0EA3]
+|&nbsp;#x0EA5
+|&nbsp;#x0EA7
+|&nbsp;[#x0EAA-#x0EAB]
+|&nbsp;[#x0EAD-#x0EAE]
+|&nbsp;#x0EB0
+|&nbsp;[#x0EB2-#x0EB3]
+|&nbsp;#x0EBD
+|&nbsp;[#x0EC0-#x0EC4]
+|&nbsp;[#x0F40-#x0F47]
+|&nbsp;[#x0F49-#x0F69]
+|&nbsp;[#x10A0-#x10C5]
+|&nbsp;[#x10D0-#x10F6]
+|&nbsp;#x1100
+|&nbsp;[#x1102-#x1103]
+|&nbsp;[#x1105-#x1107]
+|&nbsp;#x1109
+|&nbsp;[#x110B-#x110C]
+|&nbsp;[#x110E-#x1112]
+|&nbsp;#x113C
+|&nbsp;#x113E
+|&nbsp;#x1140
+|&nbsp;#x114C
+|&nbsp;#x114E
+|&nbsp;#x1150
+|&nbsp;[#x1154-#x1155]
+|&nbsp;#x1159
+|&nbsp;[#x115F-#x1161]
+|&nbsp;#x1163
+|&nbsp;#x1165
+|&nbsp;#x1167
+|&nbsp;#x1169
+|&nbsp;[#x116D-#x116E]
+|&nbsp;[#x1172-#x1173]
+|&nbsp;#x1175
+|&nbsp;#x119E
+|&nbsp;#x11A8
+|&nbsp;#x11AB
+|&nbsp;[#x11AE-#x11AF]
+|&nbsp;[#x11B7-#x11B8]
+|&nbsp;#x11BA
+|&nbsp;[#x11BC-#x11C2]
+|&nbsp;#x11EB
+|&nbsp;#x11F0
+|&nbsp;#x11F9
+|&nbsp;[#x1E00-#x1E9B]
+|&nbsp;[#x1EA0-#x1EF9]
+|&nbsp;[#x1F00-#x1F15]
+|&nbsp;[#x1F18-#x1F1D]
+|&nbsp;[#x1F20-#x1F45]
+|&nbsp;[#x1F48-#x1F4D]
+|&nbsp;[#x1F50-#x1F57]
+|&nbsp;#x1F59
+|&nbsp;#x1F5B
+|&nbsp;#x1F5D
+|&nbsp;[#x1F5F-#x1F7D]
+|&nbsp;[#x1F80-#x1FB4]
+|&nbsp;[#x1FB6-#x1FBC]
+|&nbsp;#x1FBE
+|&nbsp;[#x1FC2-#x1FC4]
+|&nbsp;[#x1FC6-#x1FCC]
+|&nbsp;[#x1FD0-#x1FD3]
+|&nbsp;[#x1FD6-#x1FDB]
+|&nbsp;[#x1FE0-#x1FEC]
+|&nbsp;[#x1FF2-#x1FF4]
+|&nbsp;[#x1FF6-#x1FFC]
+|&nbsp;#x2126
+|&nbsp;[#x212A-#x212B]
+|&nbsp;#x212E
+|&nbsp;[#x2180-#x2182]
+|&nbsp;[#x3041-#x3094]
+|&nbsp;[#x30A1-#x30FA]
+|&nbsp;[#x3105-#x312C]
+|&nbsp;[#xAC00-#xD7A3]
+</rhs></prod>
+<prod id='NT-Ideographic'><lhs>Ideographic</lhs>
+<rhs>[#x4E00-#x9FA5]
+|&nbsp;#x3007
+|&nbsp;[#x3021-#x3029]
+</rhs></prod>
+<prod id='NT-CombiningChar'><lhs>CombiningChar</lhs>
+<rhs>[#x0300-#x0345]
+|&nbsp;[#x0360-#x0361]
+|&nbsp;[#x0483-#x0486]
+|&nbsp;[#x0591-#x05A1]
+|&nbsp;[#x05A3-#x05B9]
+|&nbsp;#x05BB#x05BD
+|&nbsp;#x05BF
+|&nbsp;[#x05C1-#x05C2]
+|&nbsp;#x05C4
+|&nbsp;#x064B#x0652
+|&nbsp;#x0670
+|&nbsp;[#x06D6-#x06DC]
+|&nbsp;#x06DD#x06DF
+|&nbsp;[#x06E0-#x06E4]
+|&nbsp;[#x06E7-#x06E8]
+|&nbsp;[#x06EA-#x06ED]
+|&nbsp;[#x0901-#x0903]
+|&nbsp;#x093C
+|&nbsp;[#x093E-#x094C]
+|&nbsp;#x094D
+|&nbsp;[#x0951-#x0954]
+|&nbsp;[#x0962-#x0963]
+|&nbsp;[#x0981-#x0983]
+|&nbsp;#x09BC
+|&nbsp;#x09BE
+|&nbsp;#x09BF
+|&nbsp;[#x09C0-#x09C4]
+|&nbsp;[#x09C7-#x09C8]
+|&nbsp;[#x09CB-#x09CD]
+|&nbsp;#x09D7
+|&nbsp;[#x09E2-#x09E3]
+|&nbsp;#x0A02
+|&nbsp;#x0A3C
+|&nbsp;#x0A3E
+|&nbsp;#x0A3F
+|&nbsp;[#x0A40-#x0A42]
+|&nbsp;[#x0A47-#x0A48]
+|&nbsp;[#x0A4B-#x0A4D]
+|&nbsp;[#x0A70-#x0A71]
+|&nbsp;[#x0A81-#x0A83]
+|&nbsp;#x0ABC
+|&nbsp;[#x0ABE-#x0AC5]
+|&nbsp;[#x0AC7-#x0AC9]
+|&nbsp;[#x0ACB-#x0ACD]
+|&nbsp;[#x0B01-#x0B03]
+|&nbsp;#x0B3C
+|&nbsp;[#x0B3E-#x0B43]
+|&nbsp;[#x0B47-#x0B48]
+|&nbsp;[#x0B4B-#x0B4D]
+|&nbsp;[#x0B56-#x0B57]
+|&nbsp;[#x0B82-#x0B83]
+|&nbsp;[#x0BBE-#x0BC2]
+|&nbsp;[#x0BC6-#x0BC8]
+|&nbsp;[#x0BCA-#x0BCD]
+|&nbsp;#x0BD7
+|&nbsp;[#x0C01-#x0C03]
+|&nbsp;[#x0C3E-#x0C44]
+|&nbsp;[#x0C46-#x0C48]
+|&nbsp;[#x0C4A-#x0C4D]
+|&nbsp;[#x0C55-#x0C56]
+|&nbsp;[#x0C82-#x0C83]
+|&nbsp;[#x0CBE-#x0CC4]
+|&nbsp;[#x0CC6-#x0CC8]
+|&nbsp;[#x0CCA-#x0CCD]
+|&nbsp;[#x0CD5-#x0CD6]
+|&nbsp;[#x0D02-#x0D03]
+|&nbsp;[#x0D3E-#x0D43]
+|&nbsp;[#x0D46-#x0D48]
+|&nbsp;[#x0D4A-#x0D4D]
+|&nbsp;#x0D57
+|&nbsp;#x0E31
+|&nbsp;[#x0E34-#x0E3A]
+|&nbsp;[#x0E47-#x0E4E]
+|&nbsp;#x0EB1
+|&nbsp;[#x0EB4-#x0EB9]
+|&nbsp;[#x0EBB-#x0EBC]
+|&nbsp;[#x0EC8-#x0ECD]
+|&nbsp;[#x0F18-#x0F19]
+|&nbsp;#x0F35
+|&nbsp;#x0F37
+|&nbsp;#x0F39
+|&nbsp;#x0F3E
+|&nbsp;#x0F3F
+|&nbsp;[#x0F71-#x0F84]
+|&nbsp;[#x0F86-#x0F8B]
+|&nbsp;[#x0F90-#x0F95]
+|&nbsp;#x0F97
+|&nbsp;[#x0F99-#x0FAD]
+|&nbsp;[#x0FB1-#x0FB7]
+|&nbsp;#x0FB9
+|&nbsp;[#x20D0-#x20DC]
+|&nbsp;#x20E1
+|&nbsp;[#x302A-#x302F]
+|&nbsp;#x3099
+|&nbsp;#x309A
+</rhs></prod>
+<prod id='NT-Digit'><lhs>Digit</lhs>
+<rhs>[#x0030-#x0039]
+|&nbsp;[#x0660-#x0669]
+|&nbsp;[#x06F0-#x06F9]
+|&nbsp;[#x0966-#x096F]
+|&nbsp;[#x09E6-#x09EF]
+|&nbsp;[#x0A66-#x0A6F]
+|&nbsp;[#x0AE6-#x0AEF]
+|&nbsp;[#x0B66-#x0B6F]
+|&nbsp;[#x0BE7-#x0BEF]
+|&nbsp;[#x0C66-#x0C6F]
+|&nbsp;[#x0CE6-#x0CEF]
+|&nbsp;[#x0D66-#x0D6F]
+|&nbsp;[#x0E50-#x0E59]
+|&nbsp;[#x0ED0-#x0ED9]
+|&nbsp;[#x0F20-#x0F29]
+</rhs></prod>
+<prod id='NT-Extender'><lhs>Extender</lhs>
+<rhs>#x00B7
+|&nbsp;#x02D0
+|&nbsp;#x02D1
+|&nbsp;#x0387
+|&nbsp;#x0640
+|&nbsp;#x0E46
+|&nbsp;#x0EC6
+|&nbsp;#x3005
+|&nbsp;[#x3031-#x3035]
+|&nbsp;[#x309D-#x309E]
+|&nbsp;[#x30FC-#x30FE]
+</rhs></prod>
+
+</prodgroup>
+</scrap>
+</p>
+<p>ã“ã“ã§å®šç¾©ã™ã‚‹æ–‡å­—クラスã¯ï¼ŒUnicode文字データベースã‹ã‚‰ï¼Œæ¬¡ã®ã¨ãŠã‚Šã«å¾—ã‚‹ã“ã¨ãŒã§ãる。
+<ulist>
+<item>
+<p>a) åå‰é–‹å§‹æ–‡å­—ã¯ï¼ŒLl, Lu, Lo, Lt, Nlカテゴリ内ã®ä¸€ã¤ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+</item>
+<item>
+<p>b) åå‰é–‹å§‹æ–‡å­—以外ã®åå‰æ–‡å­—ã¯ï¼ŒMc, Me, Mn, Lm, Ndカテゴリ内ã®ä¸€ã¤ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„。</p>
+</item>
+<item>
+<p>c) &compatibility-area;ã«ã‚る文字(文字符å·ã§#xF900より大ãã#xFFFEよりå°ã•ã„文字)ã¯ï¼ŒXMLã«ãŠã‘ã‚‹åå‰ã¨ã—ã¦ã¯ï¼Œè¨±ã•ã‚Œãªã„。</p>
+</item>
+<item>
+<p>d) &font-decomposition;ã‹&compatibility-decomposition;ã‚’ã‚‚ã¤æ–‡å­—(ã¤ã¾ã‚Šï¼Œãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã®ï¼•ç•ªç›®ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«"compatibility formatting tag"ãŒã‚ã‚‹ã‚‚ã®ã€‚ã“ã‚Œã¯ï¼Œï¼•ç•ªç›®ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒï¼Œ"&lt;"ã§å§‹ã¾ã‚‹ã“ã¨ã«ã‚ˆã£ã¦ãƒžãƒ¼ã‚¯ä»˜ã‘ã•ã‚Œã‚‹ã€‚)ã¯ï¼Œè¨±ã•ã‚Œãªã„。</p>
+</item>
+<item>
+<p>e) 次ã®æ–‡å­—ã¯ï¼Œåå‰é–‹å§‹æ–‡å­—ã¨ã—ã¦æ‰±ã†ã€‚ã“ã‚Œã¯ï¼Œ&property-file;ãŒï¼Œã“れらã®æ–‡å­—をアルファベットã«é¡žä¼¼ã™ã‚‹ã¨è¦‹ãªã™ã“ã¨ã«ã‚ˆã‚‹ã€‚ãれらã¯
+[#x02BB-#x02C1], #x0559, #x06E5, #x06E6ã¨ã™ã‚‹ã€‚</p>
+</item>
+<item>
+<p>f) 文字符å·ãŒ#x20DD-#x20E0ã®æ–‡å­—ã¯ï¼Œ(Unicode ã®5.14ã«ã—ãŸãŒã£ã¦)除外ã™ã‚‹ã€‚</p>
+</item>
+<item>
+<p>g) 文字符å·ãŒ#x00B7ã®æ–‡å­—ã¯ï¼Œ&property-list;ã«ã—ãŸãŒã£ã¦ï¼Œ&extender;(extender)ã«åˆ†é¡žã™ã‚‹ã€‚</p>
+</item>
+<item>
+<p>h) 文字#x0387ã¯ï¼Œã“ã‚Œã«ç›¸å½“ã™ã‚‹æ­£è¦å½¢ãŒ#x00B7ãªã®ã§ï¼Œåå‰æ–‡å­—ã«è¿½åŠ ã™ã‚‹ã€‚</p>
+</item>
+<item>
+<p>i) 文字':'åŠã³'_'ã¯ï¼Œåå‰é–‹å§‹æ–‡å­—ã¨ã—ã¦è¨±ã™ã€‚</p>
+</item>
+<item>
+<p>j) 文字'-'åŠã³'.'ã¯ï¼Œåå‰æ–‡å­—ã¨ã—ã¦è¨±ã™ã€‚</p>
+</item>
+</ulist>
+</p>
+</div1>
+<inform-div1 id="sec-xml-and-sgml">
+<head>XMLåŠã³SGML</head>
+
+<p>XMLã¯ï¼ŒSGMLã®&subset;ã¨ã—ã¦è¨­è¨ˆã•ã‚Œã¦ã„る。ã™ãªã‚ã¡ï¼Œã™ã¹ã¦ã®<termref def="dt-valid">&valid;</termref>ãªXML文書ã¯ï¼Œè¦æ ¼ã«é©åˆã™ã‚‹SGML文書ã«ã‚‚ãªã‚‹ã€‚SGMLãŒæ–‡æ›¸ã«èª²ã™åˆ¶é™ä»¥å¤–ã«ï¼ŒXMLãŒã„ã‹ãªã‚‹åˆ¶é™ã‚’課ã™ã‹ã«é–¢ã™ã‚‹è©³ç´°ã¯ï¼Œåˆ¥ã®<loc href='http://www.w3.org/TR/NOTE-sgml-xml'>è¦ç¨‹</loc>ã‚’å‚ç…§ã®ã“ã¨ã€‚ã“ã®è¦ç¨‹ã¯ï¼ŒXMLã®åˆ¶ç´„æ¡ä»¶ã‚’示ã™SGML宣言をå«ã¿ï¼Œã“ã‚Œã¯ï¼ŒSGML&parser;ã«ä½¿ç”¨ã§ãる。
+</p>
+</inform-div1>
+<inform-div1 id="sec-entexpand">
+<head>実体å‚ç…§åŠã³æ–‡å­—å‚ç…§ã®å±•é–‹</head>
+<p>ã“ã®ä»˜éŒ²ã¯ï¼Œå®Ÿä½“å‚ç…§åŠã³æ–‡å­—å‚照をèªè­˜ã—,展開ã™ã‚‹ï¼Œä¸€é€£ã®æµã‚Œã‚’,例ã«ä½¿ã£ã¦ç¤ºã™ã€‚</p>
+<p>
+DTDãŒï¼Œæ¬¡ã®å®£è¨€ã‚’å«ã‚€å ´åˆã‚’考ãˆã‚‹ã€‚
+<eg><![CDATA[<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
+numerically (&#38;#38;#38;) or with a general entity
+(&amp;amp;).</p>" >
+]]></eg>
+XML&processor;ã¯ï¼Œå®Ÿä½“ã®å®£è¨€ã‚’構文解æžã—ãŸæ™‚点ã§æ–‡å­—å‚照をèªè­˜ã—,ã“れを解決ã™ã‚‹ã€‚実体"<code>example</code>"ã®å€¤ã¨ã—ã¦ï¼Œæ¬¡ã®&string;ã‚’ä¿å­˜ã™ã‚‹ã€‚
+<eg><![CDATA[<p>An ampersand (&#38;) may be escaped
+numerically (&#38;#38;) or with a general entity
+(&amp;amp;).</p>
+]]></eg>
+文書内ã§"<code>&amp;example;</code>"ã‚’å‚ç…§ã™ã‚‹ã¨ï¼Œã“ã®ãƒ†ã‚­ã‚¹ãƒˆã¯ï¼Œå†ã³æ§‹æ–‡è§£æžã•ã‚Œã‚‹ã€‚ã“ã®ã¨ã,è¦ç´ "<code>p</code>"ã®é–‹å§‹ã‚¿ã‚°åŠã³çµ‚了タグをèªè­˜ã—,三ã¤ã®å‚照をèªè­˜ã—展開ã™ã‚‹ã€‚ãã®çµæžœï¼Œè¦ç´ "<code>p</code>"ã¯ï¼Œæ¬¡ã®å†…容をもã¤(ã™ã¹ã¦ãƒ‡ãƒ¼ã‚¿ã¨ã—,区切りå­åˆã¯&markup;ã¯å­˜åœ¨ã—ãªã„。)。
+<eg><![CDATA[An ampersand (&) may be escaped
+numerically (&#38;) or with a general entity
+(&amp;).
+]]></eg>
+</p>
+<p>è¦å‰‡åŠã³ãã®åŠ¹æžœã‚’より詳細ã«ç¤ºã™ãŸã‚,ã•ã‚‰ã«è¤‡é›‘ãªä¾‹ã‚’示ã™ã€‚次ã®ä¾‹ã§ï¼Œè¡Œç•ªå·ã¯ï¼Œå‚ç…§ã®ä¾¿å®œã®ãŸã‚ã ã‘ã«ä»˜ã‘る。
+<eg><![CDATA[1 <?xml version='1.0'?>
+2 <!DOCTYPE test [
+3 <!ELEMENT test (#PCDATA) >
+4 <!ENTITY % xx '&#37;zz;'>
+5 <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
+6 %xx;
+7 ]>
+8 <test>This sample shows a &tricky; method.</test>
+]]></eg>
+ã“れを処ç†ã™ã‚‹ã¨ï¼Œæ¬¡ã®ã¨ãŠã‚Šã¨ãªã‚‹ã€‚
+<ulist spacing="compact">
+<item><p>a) 4行目ã§ï¼Œ37番目ã®æ–‡å­—ã¸ã®å‚照を直ã¡ã«å±•é–‹ã—,パラメタ実体"<code>xx</code>"を,シンボルテーブルã«"<code>%zz;</code>"ã¨ã„ã†å€¤ã¨ã¨ã‚‚ã«ä¿å­˜ã™ã‚‹ã€‚&replacement-text;ã‚’å†ã³èµ°æŸ»ã™ã‚‹ã“ã¨ã¯ãªã„ã®ã§ï¼Œãƒ‘ラメタ実体"<code>zz</code>"ã¸ã®å‚ç…§ã¯èªè­˜ã—ãªã„("<code>zz</code>"ã¯ï¼Œã¾ã å®£è¨€ã•ã‚Œã¦ã„ãªã„ã®ã§ï¼Œèµ°æŸ»ã•ã‚Œã‚Œã°ï¼Œ&error;ã¨ãªã‚‹ã€‚)。</p></item>
+<item><p>b) 5行目ã§ï¼Œæ–‡å­—å‚ç…§"<code>&amp;#60;</code>"ã‚’ç›´ã¡ã«å±•é–‹ã—,パラメタ実体"<code>zz</code>"ã‚’"<code>&lt;!ENTITY tricky "error-prone" ></code>"ã¨ã„ã†&replacement-text;ã¨ã¨ã‚‚ã«ä¿å­˜ã™ã‚‹ã€‚ã“ã‚Œã¯ï¼Œ&well-formed;ã®å®Ÿä½“宣言ã¨ã™ã‚‹ã€‚</p></item>
+<item><p>c) 6行目ã§ï¼Œ"<code>xx</code>"ã¸ã®å‚照をèªè­˜ã—,"<code>xx</code>"ã®&replacement-text;(ã™ãªã‚ã¡ï¼Œ"<code>%zz;</code>")を構文解æžã™ã‚‹ã€‚"<code>zz</code>"ã¸ã®å‚照を続ã„ã¦èªè­˜ã—,&replacement-text;("<code>&lt;!ENTITY tricky "error-prone" ></code>")を構文解æžã™ã‚‹ã€‚一般実体"<code>tricky</code>"ã¯ï¼Œã“ã®æ™‚点ã§ã¯ï¼Œå®£è¨€ã•ã‚Œã¦ãŠã‚Šï¼Œãã®&replacement-text;ã¯ï¼Œ"<code>error-prone</code>"ã¨ã™ã‚‹ã€‚ </p></item>
+<item><p>d) 8行目ã§ï¼Œä¸€èˆ¬å®Ÿä½“"<code>tricky</code>"ã¸ã®å‚照をèªè­˜ã—,展開ã™ã‚‹ã€‚è¦ç´ "<code>test</code>"ã®å®Œå…¨ãªå†…容ã¯ï¼Œæ¬¡ã®(内容をãれ自体表ç¾ã™ã‚‹ã€‚)&string;ã¨ãªã‚‹ã€‚ã¤ã¾ã‚Šï¼Œ<emph>This sample shows a error-prone method.</emph>
+</p></item>
+</ulist>
+</p>
+</inform-div1>
+<inform-div1 id="determinism">
+<head>決定的内容モデル</head>
+<p><termref def='dt-compat'>互æ›æ€§ã®ãŸã‚</termref>,è¦ç´ å®£è¨€ã«ãŠã‘る内容モデルã¯ï¼Œæ±ºå®šçš„ã¨ã™ã‚‹å¿…è¦ãŒã‚る。
+</p>
+<!-- FINAL EDIT: WebSGML allows ambiguity? -->
+<p>SGMLã¯ï¼Œæ±ºå®šçš„内容モデル(SGMLã§ã¯ï¼Œéžã‚ã„ã¾ã„ã¨å‘¼ã¶ã€‚)ã‚’è¦æ±‚ã™ã‚‹ã€‚SGMLシステムを用ã„ã¦ä½œæˆã—ãŸXML&processor;ã¯ï¼Œéžæ±ºå®šçš„内容モデルを&error;ã¨ã—ã¦ã‚‚よã„。</p>
+<p>例ãˆã°ï¼Œå†…容モデル<code>((b, c) | (b, d))</code>ã¯éžæ±ºå®šçš„ã¨ãªã‚‹ã€‚ã“ã‚Œã¯ï¼Œæœ€åˆã«<code>b</code>を与ãˆãŸã¨ã,モデル内ã®ã„ãšã‚Œã®<code>b</code>ã¨&match;ã™ã‚‹ã®ãŒæœ›ã¾ã—ã„ã‹ï¼Œãã®æ¬¡ã®è¦ç´ ã‚’先読ã¿ã™ã‚‹ã“ã¨ãªã—ã«ã¯ï¼Œ&parser;ã¯çŸ¥ã‚‹ã“ã¨ãŒã§ããªã„ã“ã¨ã«ã‚ˆã‚‹ã€‚ã“ã®å ´åˆã¯ï¼Œ<code>b</code>ã¸ã®äºŒã¤ã®å‚ç…§ã¯ï¼Œä¸€ã¤ã®å‚ç…§ã«ã¾ã¨ã‚ã‚‹ã“ã¨ãŒã§ã,モデルã¯ï¼Œ<code>(b, (c | d))</code>ã¨ãªã‚‹ã€‚ã“ã‚Œã§ï¼Œæœ€åˆã®<code>b</code>ãŒï¼Œå†…容モデル内ã®ä¸€ã¤ã®åå‰ã¨ã ã‘&match;ã™ã‚‹ã“ã¨ã¯æ˜Žã‚‰ã‹ã¨ãªã‚‹ã€‚&parser;ã¯ï¼Œå…ˆèª­ã¿ã—ã¦ï¼Œæ¬¡ã«æ¥ã‚‹ã‚‚ã®ã‚’知る必è¦ãŒãªã„。<code>c</code>ã‚‚<code>d</code>も,å—ç†ã•ã‚Œã‚‹ã€‚</p>
+<p>å½¢å¼çš„ã«ç¤ºã™ã€‚Aho, Sethi, and Ullman <bibref ref='Aho'/>ã®3.9ã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ 3.5ã®æ¨™æº–çš„ãªã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã‚’用ã„ã¦ï¼Œå†…容モデルã‹ã‚‰æœ‰é™ã‚ªãƒ¼ãƒˆãƒžãƒˆãƒ³ã‚’構æˆã™ã‚‹ã“ã¨ãŒã§ãる。ã“ã®ç¨®ã®å¤šãã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã§ã¯ï¼Œæ­£è¦è¡¨ç¾ã«ãŠã‘ã‚‹å„々ã®ä½ç½®(ã¤ã¾ã‚Šï¼Œæ­£è¦è¡¨ç¾ã®æ§‹æ–‡æœ¨ã«ãŠã‘ã‚‹å„々ã®æœ«ç«¯ãƒŽãƒ¼ãƒ‰)ã«å¯¾ã—ã¦ï¼Œfollow set(次ã«ã©ã®ä½ç½®ã«ç§»å‹•å¯èƒ½ã‹ã‚’表ã™ã‚‚ã®)を構æˆã™ã‚‹ã€‚ã‚ã‚‹ä½ç½®ã«å¯¾ã™ã‚‹follow setã«ãŠã„ã¦ï¼Œè¤‡æ•°ã®ä½ç½®ãŒåŒã˜è¦ç´ åž‹åã§ãƒ©ãƒ™ãƒ«ä»˜ã‘ã•ã‚Œã¦ã„ã‚Œã°ï¼Œãã®å†…容モデルã¯&error;ã¨ãªã‚Šï¼Œ&error;ã‚’è¿”ã™å ´åˆã‚‚ã‚る。
+</p>
+<p>ã™ã¹ã¦ã®éžæ±ºå®šçš„内容モデルを等価ãªæ±ºå®šçš„内容モデルã«å¤‰æ›ã™ã‚‹ã“ã¨ã¯ã§ããªã„ãŒï¼Œå¤šãã®éžæ±ºå®šçš„内容モデルを変æ›ã™ã‚‹ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ãŒå­˜åœ¨ã™ã‚‹ã€‚Br&#252;ggemann-Klein 1991 <bibref ref='ABK'/>ã‚’å‚ç…§ã®ã“ã¨ã€‚</p>
+</inform-div1>
+<inform-div1 id="sec-guessing">
+<head>文字符å·åŒ–ã®è‡ªå‹•æ¤œå‡º</head>
+<p>
+XMLã®ç¬¦å·åŒ–宣言ã¯ï¼Œå„実体ã®å†…部ラベルã¨ã—ã¦æ©Ÿèƒ½ã—,ã©ã®æ–‡å­—符å·åŒ–を使用ã™ã‚‹ã‹ã‚’示ã™ã€‚ã—ã‹ã—,XML&processor;ã¯ï¼Œå†…部ラベルを読むå‰ã«ï¼Œã©ã®æ–‡å­—符å·åŒ–を使用ã™ã‚‹ã‹ã‚’知る必è¦ãŒã‚り,ã“ã‚ŒãŒï¼Œå†…部ラベルãŒç¤ºãã†ã¨ã™ã‚‹ã“ã¨ã«ãªã‚‹ã€‚一般的ã«ã¯ï¼Œã“ã‚Œã¯ï¼Œçµ¶æœ›çš„ãªçŠ¶æ…‹ã¨ãªã‚‹ã€‚ã—ã‹ã—,XMLã«ãŠã„ã¦ã¯ï¼Œå®Œå…¨ã«ã¯çµ¶æœ›çš„ã§ã¯ãªã„。ã“ã‚Œã¯ï¼ŒXMLãŒï¼Œæ¬¡ã®äºŒã¤ã®ç‚¹ã§ä¸€èˆ¬çš„ãªå ´åˆã«å¯¾ã™ã‚‹åˆ¶é™ã‚’加ãˆã‚‹ã“ã¨ã«ã‚ˆã‚‹ã€‚一ã¤ã®åˆ¶é™ã¯ï¼Œã©ã®å®Ÿè£…も有é™å€‹ã®æ–‡å­—符å·åŒ–ã ã‘ã®ã‚µãƒãƒ¼ãƒˆã‚’想定ã™ã‚‹ã“ã¨ã¨ã™ã‚‹ã€‚ä»–ã®ä¸€ã¤ã®åˆ¶é™ã¯ï¼Œå„実体ã§ä½¿ç”¨ã™ã‚‹æ–‡å­—符å·åŒ–を自動検出å¯èƒ½ã¨ã™ã‚‹ï¼ŒXMLã®ç¬¦å·åŒ–宣言ã®ä½ç½®åŠã³å†…容ã«é–¢ã™ã‚‹åˆ¶é™ã¨ã™ã‚‹ã€‚多ãã®å ´åˆã«ï¼ŒXMLã®ãƒ‡ãƒ¼ã‚¿ã‚¹ãƒˆãƒªãƒ¼ãƒ ã«åŠ ãˆï¼Œä»–ã®æƒ…å ±ãŒåˆ©ç”¨ã§ãる。ã“ã“ã§ã¯ï¼ŒXMLã®å®Ÿä½“ãŒ&processor;ã«æ¸¡ã•ã‚Œã‚‹ã¨ã,(外部)情報を伴ã†ã‹ã©ã†ã‹ã«ã‚ˆã£ã¦ï¼ŒäºŒã¤ã®å ´åˆã«åˆ†ã‘る。ã¾ãšæœ€åˆã®å ´åˆã‚’示ã™ã€‚</p>
+<p>
+UTF-8å½¢å¼åˆã¯UTF-16å½¢å¼ã§ã¯ãªã„XML実体ã¯ï¼Œæœ€åˆã®æ–‡å­—を‘<code>&lt;?xml</code>'ã¨ã™ã‚‹XML符å·åŒ–宣言ã§å§‹ã¾ã‚‰<emph>ãªã‘ã‚Œã°ãªã‚‰ãªã„</emph>ã®ã§ï¼Œã©ã®é©åˆã—ãŸ&processor;も,入力ã«ã‚ã‚‹2オクテットåˆã¯4オクテットを調ã¹ã‚Œã°ï¼Œæ¬¡ã®ã©ã®å ´åˆãŒã‚ã¦ã¯ã¾ã‚‹ã‹ã‚’検出ã§ãる。ã“ã®ãƒªã‚¹ãƒˆã‚’読む際ã«ã¯ï¼ŒUCS-4ã®'&lt;'ãŒ"<code>#x0000003C</code>",'?'ãŒ"<code>#x0000003F</code>",åŠã³UTF-16ã®ãƒ‡ãƒ¼ã‚¿&stream;ã®å¿…è¦ã¨ã™ã‚‹&byte-order-mark;ãŒ"<code>#xFEFF</code>"ã¨ã„ã†ã“ã¨ã‚’知ã£ã¦ãŠãã¨å½¹ç«‹ã¤ã‹ã‚‚ã—ã‚Œãªã„。</p>
+<p>
+<ulist>
+<item>
+<p>a) <code>00 00 00 3C</code>: UCS-4, big-endian マシン (1234順)</p>
+</item>
+<item>
+<p>b) <code>3C 00 00 00</code>: UCS-4, little-endian マシン (4321順)</p>
+</item>
+<item>
+<p>c) <code>00 00 3C 00</code>: UCS-4, 普通ã§ã¯ãªã„オクテット順 (2143)</p>
+</item>
+<item>
+<p>d) <code>00 3C 00 00</code>: UCS-4, 普通ã§ã¯ãªã„オクテット順 (3412)</p>
+</item>
+<item>
+<p>e) <code>FE FF</code>: UTF-16, big-endian</p>
+</item>
+<item>
+<p>f) <code>FF FE</code>: UTF-16, little-endian</p>
+</item>
+<item>
+<p>g) <code>00 3C 00 3F</code>: UTF-16, big-endian, &byte-order-mark;ãªã—(ã—ãŸãŒã£ã¦ï¼ŒåŽ³å¯†ã«ã„ãˆã°ï¼Œ&error;ã¨ã™ã‚‹ã€‚)。</p>
+</item>
+<item>
+<p>h) <code>3C 00 3F 00</code>: UTF-16, little-endian, &byte-order-mark;ãªã—(ã—ãŸãŒã£ã¦ï¼ŒåŽ³å¯†ã«ã„ãˆã°ï¼Œ&error;ã¨ã™ã‚‹ã€‚)。</p>
+</item>
+<item>
+<p>i) <code>3C 3F 78 6D</code>: UTF-8, ISO 646, ASCII, ISO 8859ã®å„パート,Shift-JIS,EUC,並ã³ã«ä»»æ„ã®ä»–ã®7ビット,8ビットåˆã¯æ··åœ¨å¹…ã®ç¬¦å·åŒ–ã§ã‚ã£ã¦ï¼ŒASCII文字を通常ã®ä½ç½®ï¼Œå¹…åŠã³å€¤ã¨ã™ã‚‹ã“ã¨ã‚’ä¿è¨¼ã™ã‚‹ã‚‚ã®ã€‚ã“れらã®ã©ã‚Œã«å¯¾å¿œã™ã‚‹ã‹ã‚’検出ã™ã‚‹ãŸã‚ã«ã¯ï¼Œå®Ÿéš›ã®ç¬¦å·åŒ–宣言を読ã¿è¾¼ã¾ãªã‘ã‚Œã°ãªã‚‰ãªã„。ã—ã‹ã—,ã“れらã™ã¹ã¦ã®ç¬¦å·åŒ–ã¯ï¼ŒASCII文字ã«å¯¾ã—ã¦åŒã˜ãƒ“ットパターンを使用ã™ã‚‹ã®ã§ï¼Œç¬¦å·åŒ–宣言自体ã¯ï¼Œæ­£ç¢ºã«èª­è¾¼ã¿å¯èƒ½ã¨ã™ã‚‹ã€‚
+</p>
+</item>
+<item>
+<p>j) <code>4C 6F A7 94</code>: EBCDIC (åˆã¯ãã®å¤‰ç¨®ã€‚ã©ã®ã‚³ãƒ¼ãƒ‰ãƒšãƒ¼ã‚¸ã‚’使用ã™ã‚‹ã‹ã‚’知るãŸã‚ã«ã¯ï¼Œç¬¦å·åŒ–宣言全体を読ã¿è¾¼ã¾ã‚Œãªã‘ã‚Œã°ãªã‚‰ãªã„。)</p>
+</item>
+<item>
+<p>k) ãã®ä»–: 符å·åŒ–宣言ãªã—ã®UTF-8。ãã†ã§ãªã„ã¨ãã«ã¯ï¼Œãƒ‡ãƒ¼ã‚¿&stream;ãŒå£Šã‚Œã¦ã„ã‚‹ã‹ï¼Œæ–­ç‰‡çš„ã«ãªã£ã¦ã„ã‚‹ã‹ï¼Œä½•ã‚‰ã‹ã®å½¢å¼ã«ã—ãŸãŒã£ã¦åŸ‹ã‚è¾¼ã¾ã‚Œã¦ã„る。</p>
+</item>
+</ulist>
+</p>
+<p>
+ã“ã®ç¨‹åº¦ã®è‡ªå‹•åˆ¤åˆ¥ã§ã‚‚,XMLã®ç¬¦å·åŒ–宣言を読ã¿è¾¼ã¿ï¼Œæ–‡å­—符å·åŒ–ã®&identifier;を解æžã™ã‚‹ã«ã¯å分ã¨ã™ã‚‹ã€‚&identifier;ã®è§£æžã¯ï¼Œé¡žä¼¼ã™ã‚‹å„々ã®ç¬¦å·åŒ–ã®ä¸€ã¤ä¸€ã¤ã‚’区別ã™ã‚‹ãŸã‚ã«å¿…è¦ã¨ã™ã‚‹(例ãˆã°ï¼ŒUTF-8åŠã³8859を区別ã™ã‚‹ãŸã‚,8859ã®å„パートを区別ã™ã‚‹ãŸã‚,使用ã—ã¦ã„る特定ã®EBCDICコードページを区別ã™ã‚‹ãŸã‚,ãªã©ã€‚)。
+</p>
+<p>
+符å·åŒ–宣言ã®å†…容をASCII文字ã«é™å®šã—ã¦ã„ã‚‹ã®ã§ï¼Œã©ã®åˆ†é¡žã®ç¬¦å·åŒ–を使用ã™ã‚‹ã‹ã‚’検出ã™ã‚Œã°ï¼Œ&processor;ã¯ï¼Œç¬¦å·åŒ–宣言全体を正確ã«èª­ã¿è¾¼ã‚€ã“ã¨ãŒã§ãる。ç¾å®Ÿå•é¡Œã¨ã—ã¦ï¼Œåºƒã使用ã•ã‚Œã¦ã„る文字符å·åŒ–ã¯ï¼Œä¸Šã®åˆ†é¡žã®ã„ãšã‚Œã‹ã«ã‚ã¦ã¯ã¾ã‚‹ã®ã§ï¼Œã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ åˆã¯ä¼é€ãƒ—ロトコルãŒä¸Žãˆã‚‹å¤–部情報を信頼ä¸å¯èƒ½ãªã¨ãã§ã•ãˆã‚‚,内部ラベルã§æ–‡å­—符å·åŒ–ã‚’ã‹ãªã‚Šæ­£ç¢ºã«ç¤ºã™ã“ã¨ãŒï¼ŒXML符å·åŒ–宣言ã«ã‚ˆã£ã¦å¯èƒ½ã¨ãªã‚‹ã€‚
+</p>
+<p>
+&processor;ãŒä½¿ç”¨ã™ã‚‹æ–‡å­—符å·åŒ–を検出ã—ã•ãˆã™ã‚Œã°ï¼Œãã‚Œãžã‚Œã®å ´åˆã«å¯¾ã—ã¦åˆ¥å€‹ã®å…¥åŠ›ãƒ«ãƒ¼ãƒãƒ³ã‚’呼ã³å‡ºã™ï¼Œåˆã¯å…¥åŠ›ã™ã‚‹å„文字ã«å¯¾ã—é©åˆ‡ãªå¤‰æ›é–¢æ•°ã‚’呼ã³å‡ºã™ã“ã¨ã«ã‚ˆã£ã¦ï¼Œé©åˆ‡ãªå‹•ä½œãŒå¯èƒ½ã¨ãªã‚‹ã€‚</p>
+<p>
+自分自体ã«ãƒ©ãƒ™ãƒ«ä»˜ã‘ã‚’ã™ã‚‹ã„ã‹ãªã‚‹ã‚·ã‚¹ãƒ†ãƒ ã§ã‚‚åŒæ§˜ã ãŒï¼Œã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ãŒï¼Œç¬¦å·åŒ–宣言を更新ã›ãšã«å®Ÿä½“ã®æ–‡å­—集åˆåˆã¯ç¬¦å·åŒ–を変ãˆãŸãªã‚‰ã°ï¼ŒXMLã®ç¬¦å·åŒ–宣言ã¯ï¼Œæ©Ÿèƒ½ã—ãªã„。文字符å·åŒ–ルーãƒãƒ³ã®å®Ÿè£…者ã¯ï¼Œå®Ÿä½“ã®ãƒ©ãƒ™ãƒ«ä»˜ã‘ã«ä½¿ç”¨ã™ã‚‹å†…部åŠã³å¤–部ã®æƒ…å ±ã®æ­£ç¢ºã•ã®ä¿è¨¼ã«æ³¨æ„ã™ã‚‹ã®ãŒæœ›ã¾ã—ã„。
+</p>
+<p>2番目ã®å ´åˆã¯ï¼ŒXMLã®å®Ÿä½“ã®ä»–ã«ï¼Œç¬¦å·åŒ–情報ãŒå­˜åœ¨ã™ã‚‹ã¨ãã§ã‚ã£ã¦ï¼Œã„ãã¤ã‹ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚·ã‚¹ãƒ†ãƒ åŠã³ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ—ロトコルã§ã¯ï¼Œãã®ç¬¦å·åŒ–情報ãŒå­˜åœ¨ã™ã‚‹ã€‚複数ã®æƒ…å ±ãŒåˆ©ç”¨ã§ãã‚‹ã¨ã,<!-- (e.g. both the
+internal encoding declaration and an external label), -->ãれらã®ç›¸å¯¾çš„ãªå„ªå…ˆåº¦åŠã³ãれらãŒçŸ›ç›¾ã—ãŸã¨ãã®æœ›ã¾ã—ã„処ç†æ–¹æ³•ã¯ï¼ŒXMLã®é…é€ã«ä½¿ç”¨ã™ã‚‹ï¼Œã‚ˆã‚Šé«˜æ°´æº–ã®ãƒ—ロトコルã®ä¸€éƒ¨ã¨ã—ã¦è¦ç¨‹ã™ã‚‹ã®ãŒã‚ˆã„。例ãˆã°ï¼Œå†…部ラベルåŠã³å¤–部&header;ã«å­˜åœ¨ã™ã‚‹MIMEå½¢å¼ã®ãƒ©ãƒ™ãƒ«ã®ç›¸å¯¾çš„ãªå„ªå…ˆåº¦ã«å¯¾ã™ã‚‹è¦å‰‡ã¯ï¼Œtext/xmlåŠã³application/xmlã®MIME型を定義ã™ã‚‹RFC文書ã®ä¸€éƒ¨ã¨ãªã‚‹æ–¹ãŒã‚ˆã„。ã—ã‹ã—,相互é‹ç”¨æ€§ã®ãŸã‚ã«ï¼Œæ¬¡ã®è¦å‰‡ã«å¾“ã†ã“ã¨ãŒæœ›ã¾ã—ã„。
+<ulist>
+<item><p>a) XMLã®å®Ÿä½“ãŒãƒ•ã‚¡ã‚¤ãƒ«ã«å­˜åœ¨ã™ã‚Œã°ï¼Œ&byte-order-mark;åŠã³ç¬¦å·åŒ–宣言PIã¯ï¼Œ(存在ã™ã‚Œã°)文字符å·åŒ–を決定ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã€‚ä»–ã®ã™ã¹ã¦ã®&hueristics;åŠã³æƒ…å ±ã¯ï¼Œ&error;回復ã®ãŸã‚ã ã‘ã«ç”¨ã„る。
+</p></item>
+<item><p>b) XMLã®å®Ÿä½“ã‚’MIMEåž‹text/xmlã§é…é€ã™ã‚‹ã¨ãã¯ï¼Œã“ã®MIMEåž‹ã®ã‚‚ã¤charsetパラメタãŒæ–‡å­—符å·åŒ–方法を決定ã™ã‚‹ã€‚ä»–ã®ã™ã¹ã¦ã®&hueristics;åŠã³æƒ…å ±ã¯ï¼Œ&error;回復ã®ãŸã‚ã ã‘ã«ç”¨ã„る。
+</p></item>
+<item><p>c) XMLã®å®Ÿä½“ã‚’ <!-- via the HTTP protocol -->MIMEåž‹application/xmlã§é…é€ã™ã‚‹ã¨ãã¯ï¼Œ&byte-order-mark;åŠã³ç¬¦å·åŒ–宣言PIã‚’(存在ã™ã‚Œã°)文字符å·åŒ–ã®æ±ºå®šã®ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã€‚ä»–ã®ã™ã¹ã¦ã®&hueristics;åŠã³æƒ…å ±ã¯&error;回復ã®ãŸã‚ã ã‘ã«ç”¨ã„る。
+</p></item>
+</ulist>
+ã“れらã®è¦å‰‡ã¯ï¼Œãƒ—ロトコルã«ã¤ã„ã¦ã®è³‡æ–™ãŒãªã„ã¨ãã«ã ã‘用ã„る。特ã«ï¼ŒMIMEåž‹text/xmlåŠã³application/xmlを定義ã—ãŸã‚‰ï¼Œã“れらをè¦å®šã™ã‚‹RFCã«å­˜åœ¨ã™ã‚‹è¦å®šãŒï¼Œã“れらã®è¦å‰‡ã«å–ã£ã¦ä»£ã‚る。
+</p>
+</inform-div1>
+<!--
+<div1 id='sec-trival-grammar'>
+<head>A Trivial Grammar for XML Documents</head>
+<p>The grammar given in the body of this specification is relatively
+simple, but for some purposes it is convenient to have an even simpler
+one.
+A very simple, though non-conforming, <termref def="dt-xml-proc">XML
+processor</termref> could parse a <termref
+def="dt-wellformed">well-formed</termref> XML document using the
+following simplified grammar, recognizing all element boundaries
+correctly, though not expanding entity references and not detecting
+all errors:
+
+<scrap lang="ebnf">
+<head>Trivial text grammar</head>
+<prodgroup pcw2="5.5" pcw4="17" pcw5="10">
+<prod id='NT-simpleDoc'><lhs>simpleDoc</lhs>
+<rhs>(<nt def='NT-SimpleData'>SimpleData</nt>
+| <nt def='NT-Markup'>Markup</nt>)*</rhs></prod>
+<prod id="NT-SimpleData"><lhs>SimpleData</lhs>
+<rhs>[^&lt;&amp;]*</rhs>
+<com>cf. PCData</com>
+</prod>
+<prod id="NT-SimpleLit"><lhs>SimpleLit</lhs>
+<rhs>('"' [^"]* '"')</rhs>
+<rhs>|&nbsp;("'" [^']* "'")</rhs>
+<com>cf. SkipLit</com>
+</prod>
+<prod id='NT-Markup'><lhs>Markup</lhs>
+<rhs>'&lt;' <nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?
+<nt def='NT-SimpleLit'>SimpleLit</nt>)*
+<nt def='NT-S'>S</nt>? '&gt;'</rhs><com>start-tags </com>
+<rhs>| '&lt;' <nt def='NT-Name'>Name</nt>
+(<nt def='NT-S'>S</nt>
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '=' <nt def='NT-S'>S</nt>?
+<nt def='NT-SimpleLit'>SimpleLit</nt>)*
+<nt def='NT-S'>S</nt>? '/&gt;'</rhs><com>empty elements</com>
+<rhs>| '&lt;/'
+<nt def='NT-Name'>Name</nt>
+<nt def='NT-S'>S</nt>? '&gt;'</rhs>
+<com>end-tags </com>
+<rhs>| '&amp;' <nt def='NT-Name'>Name</nt> ';'</rhs>
+<com>entity references </com>
+<rhs>| '&amp;#' [0-9]+ ';'</rhs>
+<com>decimal character references </com>
+<rhs>| '&hcro;' [0-9a-fA-F]+ ';'</rhs>
+<com>hexadecimal character references </com>
+<rhs>| '&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>
+<com>comments </com>
+<rhs>| '&lt;?'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*))
+'&pic;'</rhs>
+<com>processing instructions </com>
+<rhs>| '&lt;![CDATA['
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* ']]&gt;' <nt def='NT-Char'>Char</nt>*))
+']]&gt;'</rhs>
+<com>CDATA sections</com>
+<rhs>| '&lt;!DOCTYPE'
+(<nt def="NT-Char">Char</nt> - ('[' | ']'))+
+('['
+<nt def="NT-simpleDTD">simpleDTD</nt>*
+']')? '&gt;'</rhs>
+<com>doc type declaration</com>
+</prod>
+<prod id="NT-simpleDTD"><lhs>simpleDTD</lhs>
+<rhs>'&lt;!&como;'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* '&comc;' <nt def='NT-Char'>Char</nt>*))
+'&comc;&gt;'</rhs>
+<com>comment </com>
+<rhs>| '&lt;?'
+(<nt def='NT-Char'>Char</nt>* -
+(<nt def='NT-Char'>Char</nt>* &pic; <nt def='NT-Char'>Char</nt>*))
+'&pic;'</rhs>
+<com>processing instruction </com>
+<rhs><nt def="NT-SimpleLit">SimpleLit</nt></rhs>
+<rhs>(<nt def="NT-Char">Char</nt> - (']' | '&lt;' | '"' | "'"))+
+</rhs>
+
+<rhs>'&lt;!' (<nt def="NT-Char">Char</nt> - ('-'))+</rhs>
+<com>declarations other than comment</com>
+</prod>
+</prodgroup>
+</scrap>
+Most processors will require the more complex
+grammar given in the body of this specification.
+
+</p>
+</div1>
+-->
+
+<inform-div1 id="sec-xml-wg">
+<head>&informative;W3C XML ワーキンググループ</head>
+
+<p>ã“ã®&TR-or-Rec;ã¯ï¼ŒW3C XML ワーキンググループ(WG)ãŒæº–å‚™ã—,公開を承èªã—ãŸã€‚WGãŒã“ã®&TR-or-Rec;を承èªã™ã‚‹ã¨ã„ã†ã“ã¨ã¯ï¼ŒWGã®ã™ã¹ã¦ã®å§”å“¡ãŒæ‰¿èªæŠ•ç¥¨ã‚’è¡Œã£ãŸã¨ã„ã†ã“ã¨ã‚’å¿…ãšã—ã‚‚æ„味ã—ãªã„。XML WGã®ç¾åœ¨ã®å§”å“¡åŠã³ä»¥å‰ã®å§”員を次ã«ç¤ºã™ã€‚</p>
+
+<!-- parens and spaces removed from role elements by bosak 1997.11.07 -->
+<orglist>
+<member><name>Jon Bosak, Sun</name><role>Chair</role></member>
+<member><name>James Clark</name><role>Technical Lead</role></member>
+<member><name>Tim Bray, Textuality and Netscape</name><role>XML Co-editor</role></member>
+<member><name>Jean Paoli, Microsoft</name><role>XML Co-editor</role></member>
+<member><name>C. M. Sperberg-McQueen, U. of Ill.</name><role>XML Co-editor</role></member>
+<member><name>Dan Connolly, W3C</name></member>
+<member><name>Steve DeRose, INSO</name></member>
+<member><name>Dave Hollander, HP</name></member>
+<member><name>Eliot Kimber, Highland</name></member>
+<member><name>Eve Maler, ArborText</name></member>
+<member><name>Tom Magliery, NCSA</name></member>
+<member><name>Murray Maloney, Muzmo and Grif</name></member>
+<member><name>æ‘田 真,富士ゼロックス情報システム(æ ª)</name></member>
+<member><name>Joel Nava, Adobe</name></member>
+<member><name>Peter Sharpe, SoftQuad</name></member>
+<member><name>John Tigue, DataChannel</name></member>
+</orglist>
+
+</inform-div1>
+</back>
+</spec>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+End:
+-->
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/spec.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/spec.dtd
new file mode 100644
index 0000000000..dbe4840654
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/spec.dtd
@@ -0,0 +1,975 @@
+<!-- ............................................................... -->
+<!-- XML specification DTD ......................................... -->
+<!-- ............................................................... -->
+
+<!--
+TYPICAL INVOCATION:
+# <!DOCTYPE spec PUBLIC
+# "-//W3C//DTD Specification::19980323//EN"
+# "http://www.w3.org/XML/Group/DTD/xmlspec.dtd">
+
+PURPOSE:
+ This DTD was developed for use with the XML family of W3C
+ specifications. It is an XML-compliant DTD based in part on
+ the TEI Lite and Sweb DTDs.
+
+DEPENDENCIES:
+ None.
+
+CHANGE HISTORY:
+ The list of changes is at the end of the DTD.
+
+ For all details, see the design report at:
+
+ <http://www.w3.org/XML/Group/DTD/xmlspec-report.htm>
+
+ The "typical invocation" FPI always gets updated to reflect the
+ date of the most recent changes.
+
+ Search this file for "#" in the first column to see change history
+ comments.
+
+MAINTAINER:
+ Eve Maler
+ ArborText Inc.
+ elm@arbortext.com
+ voice: +1 781 270 5750
+ fax: +1 781 273 3760
+-->
+
+<!-- ............................................................... -->
+<!-- Entities for characters and symbols ........................... -->
+
+<!--
+#1998-03-10: maler: Added &ldquo; and &rdquo;.
+# Used 8879:1986-compatible decimal character
+# references.
+# Merged charent.mod file back into main file.
+-->
+
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+<!ENTITY mdash "--">
+<!ENTITY nbsp "&#160;">
+<!ENTITY ldquo "#x201C;">
+<!ENTITY rdquo "#x201D;">
+
+<!-- ............................................................... -->
+<!-- Entities for classes of standalone elements ................... -->
+
+<!--
+#1997-10-16: maler: Added table to %illus.class;.
+#1997-11-28: maler: Added htable to %illus.class;.
+#1997-12-29: maler: IGNOREd table.
+#1998-03-10: maler: Removed SGML Open-specific %illus.class;.
+# Added "local" entities for customization.
+-->
+
+<!ENTITY % local.p.class "">
+<!ENTITY % p.class "p
+ %local.p.class;">
+
+<!ENTITY % local.statusp.class "">
+<!ENTITY % statusp.class "statusp
+ %local.statusp.class;">
+
+<!ENTITY % local.list.class "">
+<!ENTITY % list.class "ulist|olist|slist|glist
+ %local.list.class;">
+
+<!ENTITY % local.speclist.class "">
+<!ENTITY % speclist.class "orglist|blist
+ %local.speclist.class;">
+
+<!ENTITY % local.note.class "">
+<!ENTITY % note.class "note|wfcnote|vcnote
+ %local.note.class;">
+
+<!ENTITY % local.illus.class "">
+<!ENTITY % illus.class "eg|graphic|scrap|htable
+ %local.illus.class;">
+
+<!-- ............................................................... -->
+<!-- Entities for classes of phrase-level elements ................. -->
+
+<!--
+#1997-12-29: maler: Added xspecref to %ref.class;.
+#1998-03-10: maler: Added %ednote.class;.
+# Added "local" entities for customization.
+-->
+
+<!ENTITY % local.annot.class "">
+<!ENTITY % annot.class "footnote
+ %local.annot.class;">
+
+<!ENTITY % local.termdef.class "">
+<!ENTITY % termdef.class "termdef|term
+ %local.termdef.class;">
+
+<!ENTITY % local.emph.class "">
+<!ENTITY % emph.class "emph|quote
+ %local.emph.class;">
+
+<!ENTITY % local.ref.class "">
+<!ENTITY % ref.class "bibref|specref|termref|titleref
+ |xspecref|xtermref
+ %local.ref.class;">
+
+<!ENTITY % local.loc.class "">
+<!ENTITY % loc.class "loc
+ %local.loc.class;">
+
+<!ENTITY % local.tech.class "">
+<!ENTITY % tech.class "kw|nt|xnt|code
+ %local.tech.class;">
+
+<!ENTITY % local.ednote.class "">
+<!ENTITY % ednote.class "ednote
+ %local.ednote.class;">
+
+<!-- ............................................................... -->
+<!-- Entities for mixtures of standalone elements .................. -->
+
+<!--
+#1997-09-30: maler: Created %p.mix; to eliminate p from self.
+#1997-09-30: maler: Added %speclist.class; to %obj.mix; and %p.mix;.
+#1997-09-30: maler: Added %note.class; to %obj.mix; and %p.mix;.
+#1997-10-16: maler: Created %entry.mix;. Note that some elements
+# left out here are still allowed in termdef,
+# which entry can contain through %p.pcd.mix;.
+#1997-11-28: maler: Added %p.class; to %statusobj.mix;.
+#1998-03-10: maler: Added %ednote.class; to all mixtures, except
+# %p.mix; and %statusobj.mix;, because paragraphs
+# and status paragraphs will contain ednote
+# through %p.pcd.mix;.
+#1998-03-123: maler: Added %termdef.mix; (broken out from
+# %termdef.pcd.mix;).
+-->
+
+<!ENTITY % div.mix
+ "%p.class;|%list.class;|%speclist.class;|%note.class;
+ |%illus.class;|%ednote.class;">
+<!ENTITY % obj.mix
+ "%p.class;|%list.class;|%speclist.class;|%note.class;
+ |%illus.class;|%ednote.class;">
+<!ENTITY % p.mix
+ "%list.class;|%speclist.class;|%note.class;|%illus.class;">
+<!ENTITY % entry.mix
+ "%list.class;|note|eg|graphic|%ednote.class;">
+<!ENTITY % statusobj.mix
+ "%p.class;|%statusp.class;|%list.class;">
+<!ENTITY % hdr.mix
+ "%p.class;|%list.class;|%ednote.class;">
+<!ENTITY % termdef.mix
+ "%note.class;|%illus.class;">
+
+<!-- ............................................................... -->
+<!-- Entities for mixtures of #PCDATA and phrase-level elements .... -->
+
+<!-- Note that %termdef.pcd.mix contains %note.class;
+ and %illus.class;, considered standalone elements. -->
+
+<!--
+#1997-09-30: maler: Added scrap and %note.class; to %termdef.pcd.mix;.
+#1997-11-28: maler: Added %loc.class; to %p.pcd.mix;.
+#1998-03-10: maler: Added %ednote.class; to all mixtures.
+#1998-03-23: maler: Moved some %termdef.pcd.mix; stuff out to
+# %termdef.mix;.
+-->
+
+<!ENTITY % p.pcd.mix
+ "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
+ |%ref.class;|%tech.class;|%loc.class;|%ednote.class;">
+<!ENTITY % statusp.pcd.mix
+ "#PCDATA|%annot.class;|%termdef.class;|%emph.class;
+ |%ref.class;|%tech.class;|%loc.class;|%ednote.class;">
+<!ENTITY % head.pcd.mix
+ "#PCDATA|%annot.class;|%emph.class;|%tech.class;|%ednote.class;">
+<!ENTITY % label.pcd.mix
+ "#PCDATA|%annot.class;|%termdef.class;|%emph.class;|%tech.class;
+ |%ednote.class;">
+<!ENTITY % eg.pcd.mix
+ "#PCDATA|%annot.class;|%emph.class;|%ednote.class;">
+<!ENTITY % termdef.pcd.mix
+ "#PCDATA|term|%emph.class;|%ref.class;|%tech.class;
+ |%ednote.class;">
+<!ENTITY % bibl.pcd.mix
+ "#PCDATA|%emph.class;|%ref.class;|%loc.class;|%ednote.class;">
+<!ENTITY % tech.pcd.mix
+ "#PCDATA|%ednote.class;">
+<!ENTITY % loc.pcd.mix
+ "#PCDATA|%loc.class;|%ednote.class;">
+
+<!-- ............................................................... -->
+<!-- Entities for customizable content models ...................... -->
+
+<!--
+#1998-03-10: maler: Added customization entities.
+-->
+
+<!ENTITY % spec.mdl
+ "header, front?, body, back?">
+
+<!ENTITY % header.mdl
+ "title, subtitle?, version, w3c-designation, w3c-doctype,
+ pubdate, notice*, publoc, prevlocs?, latestloc?, authlist,
+ status, abstract, pubstmt?, sourcedesc?, langusage,
+ revisiondesc">
+
+<!ENTITY % pubdate.mdl
+ "day?, month, year">
+
+<!-- ............................................................... -->
+<!-- Entities for common attributes ................................ -->
+
+<!-- key attribute:
+ Optionally provides a sorting or indexing key, for cases when
+ the element content is inappropriate for this purpose. -->
+<!ENTITY % key.att
+ 'key CDATA #IMPLIED'>
+
+<!-- def attribute:
+ Points to the element where the relevant definition can be
+ found, using the IDREF mechanism. %def.att; is for optional
+ def attributes, and %def-req.att; is for required def
+ attributes. -->
+<!ENTITY % def.att
+ 'def IDREF #IMPLIED'>
+<!ENTITY % def-req.att
+ 'def IDREF #REQUIRED'>
+
+<!-- ref attribute:
+ Points to the element where more information can be found,
+ using the IDREF mechanism. %ref.att; is for optional
+ ref attributes, and %ref-req.att; is for required ref
+ attributes. -->
+<!ENTITY % ref.att
+ 'ref IDREF #IMPLIED'>
+<!ENTITY % ref-req.att
+ 'ref IDREF #REQUIRED'>
+
+<!--
+#1998-03-23: maler: Added show and actuate attributes to href.
+# Added semi-common xml:space attribute.
+-->
+
+<!-- HREF and source attributes:
+ Points to the element where more information or source data
+ can be found, using the URL (XLL simple link) mechanism.
+ For some purposes, is associated with additional XLL
+ attributes. %href.att; is for optional HREF attributes,
+ and %href-req.att; is for required HREF attributes.
+ %source-req.att; is for the source attribute, which
+ is always required. -->
+<!--
+#1998-5-23: brownell: Turned "xml:link" into "xml-link" to
+# match usage in the XML spec, so that
+# validation errors aren't reported.
+-->
+<!ENTITY % href.att
+ 'xml-link CDATA #FIXED "simple"
+ href CDATA #IMPLIED
+ show CDATA #FIXED "embed"
+ actuate CDATA #FIXED "auto"'>
+
+<!ENTITY % href-req.att
+ 'xml-link CDATA #FIXED "simple"
+ href CDATA #REQUIRED
+ show CDATA #FIXED "embed"
+ actuate CDATA #FIXED "auto"'>
+
+<!ENTITY % source-req.att
+ 'xml-link CDATA #FIXED "simple"
+ xml:attributes NMTOKENS #FIXED "href source"
+ source CDATA #REQUIRED
+ show CDATA #FIXED "embed"
+ actuate CDATA #FIXED "auto"'>
+
+<!-- xml:space attribute:
+ Indicates that the element contains white space
+ that the formatter or other application should retain,
+ as appropriate to its function. -->
+<!ENTITY % xmlspace.att
+ 'xml:space (default
+ |preserve) #FIXED "preserve"'>
+
+<!-- Common attributes:
+ Every element has an ID attribute (sometimes required,
+ but usually optional) for links, and a Role attribute
+ for extending the useful life of the DTD by allowing
+ authors to make subclasses for any element. %common.att;
+ is for common attributes where the ID is optional, and
+ %common-idreq.att; is for common attributes where the
+ ID is required. -->
+<!ENTITY % common.att
+ 'id ID #IMPLIED
+ role NMTOKEN #IMPLIED'>
+<!ENTITY % common-idreq.att
+ 'id ID #REQUIRED
+ role NMTOKEN #IMPLIED'>
+
+<!-- ............................................................... -->
+<!-- Common elements ............................................... -->
+
+<!-- head: Title on divisions, productions, and the like -->
+<!ELEMENT head (%head.pcd.mix;)*>
+<!ATTLIST head %common.att;>
+
+<!-- ............................................................... -->
+<!-- Major specification structure ................................. -->
+
+<!--
+#1998-03-10: maler: Made spec content model easily customizable.
+-->
+
+<!ELEMENT spec (%spec.mdl;)>
+<!ATTLIST spec %common.att;>
+
+<!ELEMENT front (div1+)>
+<!ATTLIST front %common.att;>
+
+<!ELEMENT body (div1+)>
+<!ATTLIST body %common.att;>
+
+<!--
+#1997-09-30: maler: Added inform-div1 to back content.
+-->
+
+<!ELEMENT back ((div1+, inform-div1*) | inform-div1+)>
+<!ATTLIST back %common.att;>
+
+<!ELEMENT div1 (head, (%div.mix;)*, div2*)>
+<!ATTLIST div1 %common.att;>
+
+<!--
+#1997-09-30: maler: Added inform-div1 declarations.
+-->
+
+<!-- inform-div1: Non-normative division in back matter -->
+<!ELEMENT inform-div1 (head, (%div.mix;)*, div2*)>
+<!ATTLIST inform-div1 %common.att;>
+
+<!ELEMENT div2 (head, (%div.mix;)*, div3*)>
+<!ATTLIST div2 %common.att;>
+
+<!ELEMENT div3 (head, (%div.mix;)*, div4*)>
+<!ATTLIST div3 %common.att;>
+
+<!ELEMENT div4 (head, (%div.mix;)*)>
+<!ATTLIST div4 %common.att;>
+
+<!-- Specification header .......... -->
+
+<!--
+#1998-03-10: maler: Made header content model easily customizable.
+-->
+
+<!ELEMENT header (%header.mdl;)>
+<!ATTLIST header %common.att;>
+
+<!-- Example of title: "Extensible Cheese Language (XCL)" -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title %common.att;>
+
+<!-- Example of subtitle: "A Cheesy Specification" -->
+<!ELEMENT subtitle (#PCDATA)>
+<!ATTLIST subtitle %common.att;>
+
+<!-- Example of version: "Version 666.0" -->
+<!ELEMENT version (#PCDATA)>
+<!ATTLIST version %common.att;>
+
+<!-- Example of w3c-designation: "WD-xcl-19991231" -->
+<!ELEMENT w3c-designation (#PCDATA)>
+<!ATTLIST w3c-designation %common.att;>
+
+<!-- Example of w3c-doctype: "World Wide Web Consortium Working
+ Draft" -->
+<!ELEMENT w3c-doctype (#PCDATA)>
+<!ATTLIST w3c-doctype %common.att;>
+
+<!--
+#1998-03-10: maler: Made pubdate content model easily customizable.
+-->
+
+<!ELEMENT pubdate (%pubdate.mdl;)>
+<!ATTLIST pubdate %common.att;>
+
+<!ELEMENT day (#PCDATA)>
+<!ATTLIST day %common.att;>
+
+<!ELEMENT month (#PCDATA)>
+<!ATTLIST month %common.att;>
+
+<!ELEMENT year (#PCDATA)>
+<!ATTLIST year %common.att;>
+
+<!-- Example of notice: "This draft is for public comment..." -->
+<!ELEMENT notice (%hdr.mix;)+>
+<!ATTLIST notice %common.att;>
+
+<!ELEMENT publoc (loc+)>
+<!ATTLIST publoc %common.att;>
+
+<!ELEMENT prevlocs (loc+)>
+<!ATTLIST prevlocs %common.att;>
+
+<!ELEMENT latestloc (loc+)>
+<!ATTLIST latestloc %common.att;>
+
+<!-- loc (defined in "Phrase-level elements" below) -->
+
+<!ELEMENT authlist (author+)>
+<!ATTLIST authlist %common.att;>
+
+<!--
+#1997-09-30: maler: Made affiliation optional.
+#1998-03-10: maler: Made email optional.
+-->
+
+<!ELEMENT author (name, affiliation?, email?)>
+<!ATTLIST author %common.att;>
+
+<!ELEMENT name (#PCDATA)>
+<!ATTLIST name
+ %common.att;
+ %key.att;>
+
+<!ELEMENT affiliation (#PCDATA)>
+<!ATTLIST affiliation %common.att;>
+
+<!ELEMENT email (#PCDATA)>
+<!-- HREF attribute:
+ email functions as a hypertext reference through this
+ required attribute. Typically the reference would use
+ the mailto: scheme. -->
+<!ATTLIST email
+ %common.att;
+ %href-req.att;>
+
+<!-- The status element now contains both statusp and p, and
+ the latter now allows loc. Use p; statusp will be removed
+ eventually. -->
+<!ELEMENT status (%statusobj.mix;)+>
+<!ATTLIST status %common.att;>
+
+<!ELEMENT abstract (%hdr.mix;)*>
+<!ATTLIST abstract %common.att;>
+
+<!ELEMENT pubstmt (%hdr.mix;)+>
+<!ATTLIST pubstmt %common.att;>
+
+<!ELEMENT sourcedesc (%hdr.mix;)+>
+<!ATTLIST sourcedesc %common.att;>
+
+<!ELEMENT langusage (language+)>
+<!ATTLIST langusage %common.att;>
+
+<!ELEMENT language (#PCDATA)>
+<!ATTLIST language %common.att;>
+
+<!ELEMENT revisiondesc (%hdr.mix;)+>
+<!ATTLIST revisiondesc %common.att;>
+
+<!-- ............................................................... -->
+<!-- Standalone elements ........................................... -->
+
+<!-- Paragraphs .................... -->
+
+<!--
+#1997-09-30: maler: Changed from %obj.mix; to %p.mix;.
+#1997-12-29: maler: Changed order of %p.mix; and %p.pcd.mix; references.
+#1997-12-29: maler: Changed order of %statusobj.mix; and %statusp.pcd.mix;
+# references.
+-->
+
+<!ELEMENT p (%p.pcd.mix;|%p.mix;)*>
+<!ATTLIST p %common.att;>
+
+<!-- statusp: Special paragraph that allows loc inside it (note that
+ p now also allows loc) -->
+<!ELEMENT statusp (%statusp.pcd.mix;|%statusobj.mix;)*>
+<!ATTLIST statusp %common.att;>
+
+<!-- Lists ......................... -->
+
+<!ELEMENT ulist (item+)>
+<!-- spacing attribute:
+ Use "normal" to get normal vertical spacing for items;
+ use "compact" to get less spacing. The default is dependent
+ on the stylesheet. -->
+<!ATTLIST ulist
+ %common.att;
+ spacing (normal|compact) #IMPLIED>
+
+<!ELEMENT olist (item+)>
+<!-- spacing attribute:
+ Use "normal" to get normal vertical spacing for items;
+ use "compact" to get less spacing. The default is dependent
+ on the stylesheet. -->
+<!ATTLIST olist
+ %common.att;
+ spacing (normal|compact) #IMPLIED>
+
+<!ELEMENT item (%obj.mix;)+>
+<!ATTLIST item %common.att;>
+
+<!ELEMENT slist (sitem+)>
+<!ATTLIST slist %common.att;>
+
+<!ELEMENT sitem (%p.pcd.mix;)*>
+<!ATTLIST sitem %common.att;>
+
+<!ELEMENT glist (gitem+)>
+<!ATTLIST glist %common.att;>
+
+<!ELEMENT gitem (label, def)>
+<!ATTLIST gitem %common.att;>
+
+<!ELEMENT label (%label.pcd.mix;)*>
+<!ATTLIST label %common.att;>
+
+<!ELEMENT def (%obj.mix;)*>
+<!ATTLIST def %common.att;>
+
+<!-- Special lists ................. -->
+
+<!ELEMENT blist (bibl+)>
+<!ATTLIST blist %common.att;>
+
+<!ELEMENT bibl (%bibl.pcd.mix;)*>
+<!-- HREF attribute:
+ bibl optionally functions as a hypertext reference to the
+ referred-to resource through this attribute. -->
+<!ATTLIST bibl
+ %common.att;
+ %href.att;
+ %key.att;>
+
+<!ELEMENT orglist (member+)>
+<!ATTLIST orglist %common.att;>
+
+<!--
+#1997-09-30: maler: Added optional affiliation.
+-->
+
+<!ELEMENT member (name, affiliation?, role?)>
+<!ATTLIST member %common.att;>
+
+<!-- name (defined in "Specification header" above) -->
+<!-- affiliation (defined in "Specification header" above) -->
+
+<!ELEMENT role (#PCDATA)>
+<!ATTLIST role %common.att;>
+
+<!-- Notes ......................... -->
+
+<!ELEMENT note (%obj.mix;)+>
+<!ATTLIST note %common.att;>
+
+<!ELEMENT wfcnote (head, (%obj.mix;)+)>
+<!-- ID attribute:
+ wfcnote must have an ID so that it can be pointed to
+ from a wfc element in a production. -->
+<!ATTLIST wfcnote
+ %common-idreq.att;>
+
+<!ELEMENT vcnote (head, (%obj.mix;)+)>
+<!-- ID attribute:
+ vcnote must have an ID so that it can be pointed to
+ from a vc element in a production. -->
+<!ATTLIST vcnote
+ %common-idreq.att;>
+
+<!-- Illustrations ................. -->
+
+<!--
+#1998-03-23: maler: Added xml:space attribute.
+-->
+
+<!ELEMENT eg (%eg.pcd.mix;)*>
+<!ATTLIST eg
+ %common.att;
+ %xmlspace.att;>
+
+<!ELEMENT graphic EMPTY>
+<!-- source attribute:
+ The graphic data must reside at the location pointed to.
+ This is a hypertext reference, but for practical purposes,
+ for now it should just be a pathname. -->
+<!ATTLIST graphic
+ %common.att;
+ %source-req.att;
+ alt CDATA #IMPLIED>
+
+<!--
+#1997-11-28: maler: Added prodgroup to scrap and defined it.
+-->
+
+<!ELEMENT scrap (head, (prodgroup+ | prod+ | bnf))>
+<!-- lang attribute:
+ The scrap can link to a description of the language used,
+ found in a language element in the header. -->
+<!ATTLIST scrap
+ %common.att;
+ lang IDREF #IMPLIED>
+
+<!ELEMENT prodgroup (prod+)>
+<!-- pcw<n> attributes:
+ Presentational attributes to control the width
+ of the "pseudo-table" columns used to output
+ groups of productions. -->
+<!ATTLIST prodgroup
+ %common.att;
+ pcw1 CDATA #IMPLIED
+ pcw2 CDATA #IMPLIED
+ pcw3 CDATA #IMPLIED
+ pcw4 CDATA #IMPLIED
+ pcw5 CDATA #IMPLIED
+>
+
+<!ELEMENT prod (lhs, (rhs, (com|wfc|vc)*)+)>
+<!-- ID attribute:
+ The production must have an ID so that cross-references
+ (specref) and mentions of nonterminals (nt) can link to
+ it. -->
+<!ATTLIST prod
+ %common-idreq.att;>
+
+<!ELEMENT lhs (#PCDATA)>
+<!ATTLIST lhs %common.att;>
+
+<!ELEMENT rhs (#PCDATA|nt|xnt|com)*>
+<!ATTLIST rhs %common.att;>
+
+<!-- nt and xnt (defined in "Phrase-level elements" below) -->
+
+<!--
+#1997-11-28: maler: Added loc and bibref to com content.
+-->
+
+<!ELEMENT com (#PCDATA|loc|bibref)*>
+<!ATTLIST com %common.att;>
+
+<!-- wfc: Should generate the head of the wfcnote pointed to -->
+<!ELEMENT wfc EMPTY>
+<!-- def attribute:
+ Each well formedness tagline in a production must link to the
+ wfcnote that defines it. -->
+<!ATTLIST wfc
+ %def-req.att;
+ %common.att;>
+
+<!-- vc: Should generate the head of the vcnote pointed to -->
+<!ELEMENT vc EMPTY>
+<!-- def attribute:
+ Each validity tagline in a production must link to the vcnote
+ that defines it. -->
+<!ATTLIST vc
+ %def-req.att;
+ %common.att;>
+
+<!--
+#1998-03-23: maler: Added xml:space attribute.
+-->
+
+<!-- bnf: Un-marked-up production -->
+<!ELEMENT bnf (%eg.pcd.mix;)*>
+<!ATTLIST bnf
+ %common.att;
+ %xmlspace.att;>
+
+<!--
+#1997-10-16: maler: Added table mechanism.
+#1997-11-28: maler: Added non-null system ID to entity declaration.
+# Added HTML table module.
+#1997-12-29: maler: IGNOREd SGML Open table model.
+#1998-03-10: maler: Removed SGML Open table model.
+# Merged html-tbl.mod file into main file.
+# Added %common.att; to all HTML table elements.
+-->
+
+<!-- TR and TD attributes:
+ Alignment attributes. No default. -->
+<!ENTITY % trtd.att
+ "align (left
+ |center
+ |right) #IMPLIED
+ valign (top
+ |middle
+ |bottom) #IMPLIED">
+
+<!ELEMENT htable (htbody+)>
+<!ATTLIST htable
+ border CDATA "0"
+ cellpadding CDATA "0"
+ align (left
+ |center
+ |right) "left">
+
+<!ELEMENT htbody (tr+)>
+<!ATTLIST htbody %common.att;>
+
+<!ELEMENT tr (td+)>
+<!ATTLIST tr
+ %common.att;
+ %trtd.att;>
+
+<!ELEMENT td (%p.pcd.mix;)*>
+<!ATTLIST td
+ %common.att;
+ %trtd.att;
+ bgcolor CDATA #IMPLIED
+ rowspan CDATA "1"
+ colspan CDATA "1">
+
+<!-- ............................................................... -->
+<!-- Phrase-level elements ......................................... -->
+
+<!-- bibref: Should generate, in square brackets, "key" on bibl -->
+<!ELEMENT bibref EMPTY>
+<!-- ref attribute:
+ A bibliography reference must link to the bibl element that
+ describes the resource. -->
+<!ATTLIST bibref
+ %common.att;
+ %ref-req.att;>
+
+<!ELEMENT code (%tech.pcd.mix;)*>
+<!ATTLIST code %common.att;>
+
+<!--
+#1998-03-10: maler: Declared ednote and related elements.
+-->
+
+<!ELEMENT ednote (name?, date?, edtext)>
+<!ATTLIST ednote %common.att;>
+
+<!ELEMENT date (#PCDATA)>
+<!ATTLIST date %common.att;>
+
+<!ELEMENT edtext (#PCDATA)>
+<!ATTLIST edtext %common.att;>
+
+<!ELEMENT emph (#PCDATA)>
+<!ATTLIST emph %common.att;>
+
+<!-- footnote: Both footnote content and call to footnote -->
+<!ELEMENT footnote (%obj.mix;)+>
+<!ATTLIST footnote %common.att;>
+
+<!ELEMENT kw (%tech.pcd.mix;)*>
+<!ATTLIST kw %common.att;>
+
+<!ELEMENT loc (#PCDATA)>
+<!-- HREF attribute:
+ The purpose of a loc element is to function as a hypertext
+ link to a resource. (Ideally, the content of loc will also
+ mention the URI of the resource, so that readers of the
+ printed version will be able to locate the resource.) -->
+<!ATTLIST loc
+ %common.att;
+ %href-req.att;>
+
+<!ELEMENT nt (#PCDATA)>
+<!-- def attribute:
+ The nonterminal must link to the production that defines
+ it. -->
+<!ATTLIST nt
+ %common.att;
+ %def-req.att;>
+
+<!--
+#1998-03-10: maler: Declared quote.
+-->
+
+<!-- quote: Scare quotes and other purely presentational quotes -->
+<!ELEMENT quote (%p.pcd.mix;)*>
+<!ATTLIST quote %common.att;>
+
+<!-- specref: Should generate italic "[n.n], Section Title" for
+ div, "n" for numbered item, or "[n]" for production -->
+<!ELEMENT specref EMPTY>
+<!-- ref attribute:
+ The purpose of a specref element is to link to a div, item
+ in an olist, or production in the current spec. -->
+<!ATTLIST specref
+ %common.att;
+ %ref-req.att;>
+
+<!ELEMENT term (#PCDATA)>
+<!ATTLIST term %common.att;>
+
+<!ELEMENT termdef (%termdef.pcd.mix;|%termdef.mix;)*>
+<!-- ID attribute:
+ A term definition must have an ID so that it can be linked
+ to from termref elements. -->
+<!-- term attribute:
+ The canonical form of the term or phrase being defined must
+ appear in this attribute, even if the term or phrase also
+ appears in the element content in identical form (e.g., in
+ the term element). -->
+<!ATTLIST termdef
+ %common-idreq.att;
+ term CDATA #REQUIRED>
+
+<!ELEMENT termref (#PCDATA)>
+<!-- ref attribute:
+ A term reference must link to the termdef element that
+ defines the term. -->
+<!ATTLIST termref
+ %common.att;
+ %def-req.att;>
+
+<!ELEMENT titleref (#PCDATA)>
+<!-- HREF attribute:
+ A title reference can optionally function as a hypertext
+ link to the resource with this title. -->
+<!ATTLIST titleref
+ %common.att;
+ %href.att;>
+
+<!ELEMENT xnt (#PCDATA)>
+<!-- HREF attribute:
+ The nonterminal must hyperlink to a resource that serves
+ to define it (e.g., a production in a related XML
+ specification). -->
+<!ATTLIST xnt
+ %common.att;
+ %href-req.att;>
+
+<!--
+#1997-12-29: maler: Declared xspecref.
+-->
+
+<!ELEMENT xspecref (#PCDATA)>
+<!-- HREF attribute:
+ The spec reference must hyperlink to the resource to
+ cross-refer to (e.g., a section in a related XML
+ specification). -->
+<!ATTLIST xspecref
+ %common.att;
+ %href-req.att;>
+
+<!ELEMENT xtermref (#PCDATA)>
+<!-- HREF attribute:
+ The term reference must hyperlink to the resource that
+ serves to define the term (e.g., a term definition in
+ a related XML specification). -->
+<!ATTLIST xtermref
+ %common.att;
+ %href-req.att;>
+
+<!-- ............................................................... -->
+<!-- Unused elements for ADEPT ..................................... -->
+
+<!--
+#1997-09-30: maler: Added unusued elements.
+#1997-10-14: maler: Fixed div to move nested div to the mixture.
+-->
+
+<!-- The following elements are purposely declared but never
+ referenced. Declaring them allows them to be pasted from
+ an HTML document into a document using this DTD in ADEPT.
+ The ATD Context Transformation mechanism will try to convert
+ them to the appropriate element for this DTD. While this
+ conversion will not work for all fragments, it does allow
+ many cases to work reasonably well. -->
+
+<!ELEMENT div
+ (head?, (%div.mix;|ul|ol|h1|h2|h3|h4|h5|h6|div)*)>
+<!ELEMENT h1 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h2 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h3 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h4 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h5 (%head.pcd.mix;|em|a)*>
+<!ELEMENT h6 (%head.pcd.mix;|em|a)*>
+<!ELEMENT pre (%eg.pcd.mix;|em)*>
+<!ELEMENT ul (item|li)*>
+<!ELEMENT ol (item|li)*>
+<!ELEMENT li (#PCDATA|%obj.mix;)*>
+<!ELEMENT em (#PCDATA)>
+<!ELEMENT a (#PCDATA)>
+
+<!-- ............................................................... -->
+<!-- Change history ................................................ -->
+
+<!--
+#1997-08-18: maler
+#- Did a major revision.
+#1997-09-10: maler
+#- Updated FPI.
+#- Removed namekey element and put key attribute on name element.
+#- Made statusp element and supporting entities.
+#- Added slist element with sitem+ content.
+#- Required head on scrap and added new bnf subelement.
+#- Added an xnt element and allowed it and nt in regular text and rhs.
+#- Removed the ntref element.
+#- Added back the com element to the content of rhs.
+#- Added a key attribute to bibl.
+#- Removed the ident element.
+#- Added a term element to be used inside termdef.
+#- Added an xtermref element parallel to termref.
+#- Beefed up DTD comments.
+#1997-09-12: maler
+#- Allowed term element in general text.
+#- Changed bibref to EMPTY.
+#- Added ref.class to termdef.pcd.mix.
+#1997-09-14: maler
+#- Changed main attribute of xtermref from def to href.
+#- Added termdef.class to label contents.
+#1997-09-30: maler
+#- Added character entity module and added new entities.
+#- Removed p from appearing directly in self; created %p.mix;.
+#- Added inform-div (non-normative division) element.
+#- Fixed xtermref comment to mention HREF, not ref.
+#- Extended orglist model to allow optional affiliation.
+#- Modified author to make affiliation optional.
+#- Added %speclist.class; and %note.class; to %obj.mix; and %p.mix;.
+#- Added %note.class; and %illus.class; to %termdef.pcd.mix;.
+#- Added unused HTML elements.
+#- Put empty system ID next to public ID in entity declarations.
+#1997-10-14: maler
+#- Fixed "unused" div content model to move nested div to mixture.
+#1997-10-16: maler
+#- Added SGML Open Exchange tables.
+#1997-11-28: maler
+#- Added support for prodgroup and its attributes.
+#- Added support for HTML tables.
+#- Added loc and bibref to content of com.
+#- Added loc to general p content models.
+#- Allowed p as alternative to statusp in status.
+#- Added non-null system IDs to external parameter entity declarations.
+#- (Modified the SGML Open table module to make it XML-compliant.)
+#- (Modified the character entity module.)
+#1997-12-29: maler
+#- Moved #PCDATA occurrences to come before GIs in content models.
+#- Removed use of the SGML Open table module.
+#- Added xspecref element.
+#- Ensured that all FPIs contain 4-digit year.
+#- (Modified the character entity module.)
+#1997-03-10: maler
+#- Merged the character entity and table modules into the main file.
+#- Added ldquo and rdquo entities.
+#- Added common attributes to prodgroup.
+#- Made the email element in header optional.
+#- Removed reference to the SGML Open table model.
+#- Added ednote element.
+#- Added quote element.
+#- Updated XLink usage to reflect 3 March 1998 WD.
+#- Added "local" entities to the class entities for customization.
+#- Parameterized several content models to allow for customization.
+#1997-03-23: maler
+#- Cleaned up some comments and removed some others.
+#- Added xml:space semi-common attribute to eg and bnf elements.
+#- Added show and embed attributes on all the uses of href.
+#- Added %common.att; to all HTML table elements.
+#- Added a real URI to the "typical invocation" comment.
+-->
+
+<!-- ............................................................... -->
+<!-- End of XML specification DTD .................................. -->
+<!-- ............................................................... -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.dtd
new file mode 100644
index 0000000000..19aadcd4e7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.dtd
@@ -0,0 +1,72 @@
+<?xml encoding="euc-jp"?>
+<!--
+*************************************************************************
+* *
+* DPSD PDG½µÊóÍÑDTD weekly.dtd *
+* *
+* Copyright 1997 Fuji Xerox Information Systems Co.,Ltd. *
+* *
+*************************************************************************
+-->
+
+
+<!-- Êѹ¹ÍúÎò
+ Version 1.0 1997/10/29 ºîÀ® ¼ÅÄ¿¿
+-->
+
+<!ELEMENT ½µÊó (ǯ·î½µ, »á̾, ¶È̳Êó¹ð¥ê¥¹¥È)>
+
+<!ELEMENT ǯ·î½µ (ǯÅÙ, ·îÅÙ, ½µ)>
+<!ELEMENT ǯÅÙ (#PCDATA)> <!-- ǯÅÙ¤òɽ¤¹¿ô»ú -->
+<!ELEMENT ·îÅÙ (#PCDATA)> <!-- ·îÅÙ¤òɽ¤¹¿ô»ú -->
+<!ELEMENT ½µ (#PCDATA)> <!-- ²¿½µÌܤ«¤òɽ¤¹¿ô»ú -->
+
+<!ELEMENT »á̾ (»á, ̾)>
+<!ELEMENT ȇ (#PCDATA)>
+<!ELEMENT ̾ (#PCDATA)>
+
+<!ELEMENT ¶È̳Êó¹ð¥ê¥¹¥È (¶È̳Êó¹ð+)>
+<!ELEMENT ¶È̳Êó¹ð (¶È̳̾, ¶È̳¥³¡¼¥É, ¹©¿ô´ÉÍý,
+ ͽÄê¹àÌܥꥹ¥È,
+ ¼Â»Ü»ö¹à¥ê¥¹¥È,
+ ¾åĹ¤Ø¤ÎÍ×ÀÁ»ö¹à¥ê¥¹¥È,
+ ÌäÂêÅÀÂкö?)>
+<!ELEMENT ¶È̳̾ (#PCDATA)> <!-- ¶È̳¥³¡¼¥É°ìÍ÷¤ò»²¾È -->
+<!ELEMENT ¶È̳¥³¡¼¥É (#PCDATA)> <!-- ¶È̳¥³¡¼¥É°ìÍ÷¤ò»²¾È -->
+
+<!ELEMENT ¹©¿ô´ÉÍý (¸«ÀѤâ¤ê¹©¿ô, ¼ÂÀÓ¹©¿ô,
+ Åö·î¸«ÀѤâ¤ê¹©¿ô, Åö·î¼ÂÀÓ¹©¿ô)>
+<!ELEMENT ¸«ÀѤâ¤ê¹©¿ô (#PCDATA)> <!-- ñ°Ì¤Ï»þ´Ö -->
+<!ELEMENT ¼ÂÀÓ¹©¿ô (#PCDATA)> <!-- ñ°Ì¤Ï»þ´Ö -->
+<!ELEMENT Åö·î¸«ÀѤâ¤ê¹©¿ô (#PCDATA)> <!-- ñ°Ì¤Ï»þ´Ö -->
+<!ELEMENT Åö·î¼ÂÀÓ¹©¿ô (#PCDATA)> <!-- ñ°Ì¤Ï»þ´Ö -->
+
+<!ELEMENT ͽÄê¹àÌܥꥹ¥È (ͽÄê¹àÌÜ*)>
+<!ELEMENT ͽÄê¹àÌÜ ((P | OL | UL)+)>
+<!ELEMENT ¼Â»Ü»ö¹à¥ê¥¹¥È (¼Â»Ü»ö¹à*)>
+<!ELEMENT ¼Â»Ü»ö¹à ((P | OL | UL)+)>
+<!ELEMENT ÌäÂêÅÀÂкö ((P | OL | UL)+)>
+
+<!ELEMENT ¾åĹ¤Ø¤ÎÍ×ÀÁ»ö¹à¥ê¥¹¥È (¾åĹ¤Ø¤ÎÍ×ÀÁ»ö¹à*)>
+<!ELEMENT ¾åĹ¤Ø¤ÎÍ×ÀÁ»ö¹à ((P | OL | UL)+)>
+
+
+<!-- XML¤Ç¤¢¤é¤«¤¸¤áÄêµÁ¤µ¤ì¤¿¼ÂÂÎ -->
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+
+<!-- HTML¤ÎÈÆÍÑŪ¤Ê¥¿¥° -->
+<!ELEMENT P (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT OL (LI)*>
+<!ELEMENT UL (LI)*>
+<!ELEMENT LI (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT EM (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT STRONG (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT A (#PCDATA | EM | STRONG)*>
+<!ATTLIST A
+ name CDATA #IMPLIED
+ href CDATA #IMPLIED
+ >
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.xml
new file mode 100644
index 0000000000..887ab5ec30
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-euc-jp.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="euc-jp"?>
+<!DOCTYPE ½µÊó SYSTEM "weekly-euc-jp.dtd">
+<!-- ½µÊó¥µ¥ó¥×¥ë -->
+<½µÊó>
+ <ǯ·î½µ>
+ <ǯÅÙ>1997</ǯÅÙ>
+ <·îÅÙ>1</·îÅÙ>
+ <½µ>1</½µ>
+ </ǯ·î½µ>
+
+ <»á̾>
+ <»á>»³ÅÄ</»á>
+ <̾>ÂÀϺ</̾>
+ </»á̾>
+
+ <¶È̳Êó¹ð¥ê¥¹¥È>
+ <¶È̳Êó¹ð>
+ <¶È̳̾>XML¥¨¥Ç¥£¥¿¡¼¤ÎºîÀ®</¶È̳̾>
+ <¶È̳¥³¡¼¥É>X3355-23</¶È̳¥³¡¼¥É>
+ <¹©¿ô´ÉÍý>
+ <¸«ÀѤâ¤ê¹©¿ô>1600</¸«ÀѤâ¤ê¹©¿ô>
+ <¼ÂÀÓ¹©¿ô>320</¼ÂÀÓ¹©¿ô>
+ <Åö·î¸«ÀѤâ¤ê¹©¿ô>160</Åö·î¸«ÀѤâ¤ê¹©¿ô>
+ <Åö·î¼ÂÀÓ¹©¿ô>24</Åö·î¼ÂÀÓ¹©¿ô>
+ </¹©¿ô´ÉÍý>
+ <ͽÄê¹àÌܥꥹ¥È>
+ <ͽÄê¹àÌÜ>
+ <P>XML¥¨¥Ç¥£¥¿¡¼¤Î´ðËÜ»ÅÍͤκîÀ®</P>
+ </ͽÄê¹àÌÜ>
+ </ͽÄê¹àÌܥꥹ¥È>
+ <¼Â»Ü»ö¹à¥ê¥¹¥È>
+ <¼Â»Ü»ö¹à>
+ <P>XML¥¨¥Ç¥£¥¿¡¼¤Î´ðËÜ»ÅÍͤκîÀ®</P>
+ </¼Â»Ü»ö¹à>
+ <¼Â»Ü»ö¹à>
+ <P>¶¥¹ç¾¼ÒÀ½Éʤε¡Ç½Ä´ºº</P>
+ </¼Â»Ü»ö¹à>
+ </¼Â»Ü»ö¹à¥ê¥¹¥È>
+ <¾åĹ¤Ø¤ÎÍ×ÀÁ»ö¹à¥ê¥¹¥È>
+ <¾åĹ¤Ø¤ÎÍ×ÀÁ»ö¹à>
+ <P>Æäˤʤ·</P>
+ </¾åĹ¤Ø¤ÎÍ×ÀÁ»ö¹à>
+ </¾åĹ¤Ø¤ÎÍ×ÀÁ»ö¹à¥ê¥¹¥È>
+ <ÌäÂêÅÀÂкö>
+ <P>XML¤È¤Ï²¿¤«¤ï¤«¤é¤Ê¤¤¡£</P>
+ </ÌäÂêÅÀÂкö>
+ </¶È̳Êó¹ð>
+
+ <¶È̳Êó¹ð>
+ <¶È̳̾>¸¡º÷¥¨¥ó¥¸¥ó¤Î³«È¯</¶È̳̾>
+ <¶È̳¥³¡¼¥É>S8821-76</¶È̳¥³¡¼¥É>
+ <¹©¿ô´ÉÍý>
+ <¸«ÀѤâ¤ê¹©¿ô>120</¸«ÀѤâ¤ê¹©¿ô>
+ <¼ÂÀÓ¹©¿ô>6</¼ÂÀÓ¹©¿ô>
+ <Åö·î¸«ÀѤâ¤ê¹©¿ô>32</Åö·î¸«ÀѤâ¤ê¹©¿ô>
+ <Åö·î¼ÂÀÓ¹©¿ô>2</Åö·î¼ÂÀÓ¹©¿ô>
+ </¹©¿ô´ÉÍý>
+ <ͽÄê¹àÌܥꥹ¥È>
+ <ͽÄê¹àÌÜ>
+ <P><A href="http://www.goo.ne.jp">goo</A>¤Îµ¡Ç½¤òÄ´¤Ù¤Æ¤ß¤ë</P>
+ </ͽÄê¹àÌÜ>
+ </ͽÄê¹àÌܥꥹ¥È>
+ <¼Â»Ü»ö¹à¥ê¥¹¥È>
+ <¼Â»Ü»ö¹à>
+ <P>¹¹¤Ë¡¢¤É¤¦¤¤¤¦¸¡º÷¥¨¥ó¥¸¥ó¤¬¤¢¤ë¤«Ä´ºº¤¹¤ë</P>
+ </¼Â»Ü»ö¹à>
+ </¼Â»Ü»ö¹à¥ê¥¹¥È>
+ <¾åĹ¤Ø¤ÎÍ×ÀÁ»ö¹à¥ê¥¹¥È>
+ <¾åĹ¤Ø¤ÎÍ×ÀÁ»ö¹à>
+ <P>³«È¯¤ò¤¹¤ë¤Î¤Ï¤á¤ó¤É¤¦¤Ê¤Î¤Ç¡¢Yahoo!¤òÇã¼ý¤·¤Æ²¼¤µ¤¤¡£</P>
+ </¾åĹ¤Ø¤ÎÍ×ÀÁ»ö¹à>
+ </¾åĹ¤Ø¤ÎÍ×ÀÁ»ö¹à¥ê¥¹¥È>
+ <ÌäÂêÅÀÂкö>
+ <P>¸¡º÷¥¨¥ó¥¸¥ó¤Ç¼Ö¤òÁö¤é¤»¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¡£¡ÊÍ×Ä´ºº¡Ë</P>
+ </ÌäÂêÅÀÂкö>
+ </¶È̳Êó¹ð>
+ </¶È̳Êó¹ð¥ê¥¹¥È>
+</½µÊó>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.dtd
new file mode 100644
index 0000000000..d69eea54b0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.dtd
@@ -0,0 +1,72 @@
+<?xml encoding="iso-2022-JP"?>
+<!--
+*************************************************************************
+* *
+* DPSD PDG$B=5JsMQ(BDTD weekly.dtd *
+* *
+* Copyright 1997 Fuji Xerox Information Systems Co.,Ltd. *
+* *
+*************************************************************************
+-->
+
+
+<!-- $BJQ99MzNr(B
+ Version 1.0 1997/10/29 $B:n@.(B $BB<ED??(B
+-->
+
+<!ELEMENT $B=5Js(B ($BG/7n=5(B, $B;aL>(B, $B6HL3Js9p%j%9%H(B)>
+
+<!ELEMENT $BG/7n=5(B ($BG/EY(B, $B7nEY(B, $B=5(B)>
+<!ELEMENT $BG/EY(B (#PCDATA)> <!-- $BG/EY$rI=$9?t;z(B -->
+<!ELEMENT $B7nEY(B (#PCDATA)> <!-- $B7nEY$rI=$9?t;z(B -->
+<!ELEMENT $B=5(B (#PCDATA)> <!-- $B2?=5L\$+$rI=$9?t;z(B -->
+
+<!ELEMENT $B;aL>(B ($B;a(B, $BL>(B)>
+<!ELEMENT $B;a(B (#PCDATA)>
+<!ELEMENT $BL>(B (#PCDATA)>
+
+<!ELEMENT $B6HL3Js9p%j%9%H(B ($B6HL3Js9p(B+)>
+<!ELEMENT $B6HL3Js9p(B ($B6HL3L>(B, $B6HL3%3!<%I(B, $B9)?t4IM}(B,
+ $BM=Dj9`L\%j%9%H(B,
+ $B<B;\;v9`%j%9%H(B,
+ $B>eD9$X$NMW@A;v9`%j%9%H(B,
+ $BLdBjE@BP:v(B?)>
+<!ELEMENT $B6HL3L>(B (#PCDATA)> <!-- $B6HL3%3!<%I0lMw$r;2>H(B -->
+<!ELEMENT $B6HL3%3!<%I(B (#PCDATA)> <!-- $B6HL3%3!<%I0lMw$r;2>H(B -->
+
+<!ELEMENT $B9)?t4IM}(B ($B8+@Q$b$j9)?t(B, $B<B@S9)?t(B,
+ $BEv7n8+@Q$b$j9)?t(B, $BEv7n<B@S9)?t(B)>
+<!ELEMENT $B8+@Q$b$j9)?t(B (#PCDATA)> <!-- $BC10L$O;~4V(B -->
+<!ELEMENT $B<B@S9)?t(B (#PCDATA)> <!-- $BC10L$O;~4V(B -->
+<!ELEMENT $BEv7n8+@Q$b$j9)?t(B (#PCDATA)> <!-- $BC10L$O;~4V(B -->
+<!ELEMENT $BEv7n<B@S9)?t(B (#PCDATA)> <!-- $BC10L$O;~4V(B -->
+
+<!ELEMENT $BM=Dj9`L\%j%9%H(B ($BM=Dj9`L\(B*)>
+<!ELEMENT $BM=Dj9`L\(B ((P | OL | UL)+)>
+<!ELEMENT $B<B;\;v9`%j%9%H(B ($B<B;\;v9`(B*)>
+<!ELEMENT $B<B;\;v9`(B ((P | OL | UL)+)>
+<!ELEMENT $BLdBjE@BP:v(B ((P | OL | UL)+)>
+
+<!ELEMENT $B>eD9$X$NMW@A;v9`%j%9%H(B ($B>eD9$X$NMW@A;v9`(B*)>
+<!ELEMENT $B>eD9$X$NMW@A;v9`(B ((P | OL | UL)+)>
+
+
+<!-- XML$B$G$"$i$+$8$aDj5A$5$l$?<BBN(B -->
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+
+<!-- HTML$B$NHFMQE*$J%?%0(B -->
+<!ELEMENT P (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT OL (LI)*>
+<!ELEMENT UL (LI)*>
+<!ELEMENT LI (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT EM (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT STRONG (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT A (#PCDATA | EM | STRONG)*>
+<!ATTLIST A
+ name CDATA #IMPLIED
+ href CDATA #IMPLIED
+ >
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.xml
new file mode 100644
index 0000000000..9a8e8545ac
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-iso-2022-jp.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="iso-2022-jp"?>
+<!DOCTYPE $B=5Js(B SYSTEM "weekly-iso-2022-jp.dtd">
+<!-- $B=5Js%5%s%W%k(B -->
+<$B=5Js(B>
+ <$BG/7n=5(B>
+ <$BG/EY(B>1997</$BG/EY(B>
+ <$B7nEY(B>1</$B7nEY(B>
+ <$B=5(B>1</$B=5(B>
+ </$BG/7n=5(B>
+
+ <$B;aL>(B>
+ <$B;a(B>$B;3ED(B</$B;a(B>
+ <$BL>(B>$BB@O:(B</$BL>(B>
+ </$B;aL>(B>
+
+ <$B6HL3Js9p%j%9%H(B>
+ <$B6HL3Js9p(B>
+ <$B6HL3L>(B>XML$B%(%G%#%?!<$N:n@.(B</$B6HL3L>(B>
+ <$B6HL3%3!<%I(B>X3355-23</$B6HL3%3!<%I(B>
+ <$B9)?t4IM}(B>
+ <$B8+@Q$b$j9)?t(B>1600</$B8+@Q$b$j9)?t(B>
+ <$B<B@S9)?t(B>320</$B<B@S9)?t(B>
+ <$BEv7n8+@Q$b$j9)?t(B>160</$BEv7n8+@Q$b$j9)?t(B>
+ <$BEv7n<B@S9)?t(B>24</$BEv7n<B@S9)?t(B>
+ </$B9)?t4IM}(B>
+ <$BM=Dj9`L\%j%9%H(B>
+ <$BM=Dj9`L\(B>
+ <P>XML$B%(%G%#%?!<$N4pK\;EMM$N:n@.(B</P>
+ </$BM=Dj9`L\(B>
+ </$BM=Dj9`L\%j%9%H(B>
+ <$B<B;\;v9`%j%9%H(B>
+ <$B<B;\;v9`(B>
+ <P>XML$B%(%G%#%?!<$N4pK\;EMM$N:n@.(B</P>
+ </$B<B;\;v9`(B>
+ <$B<B;\;v9`(B>
+ <P>$B6%9gB><R@=IJ$N5!G=D4::(B</P>
+ </$B<B;\;v9`(B>
+ </$B<B;\;v9`%j%9%H(B>
+ <$B>eD9$X$NMW@A;v9`%j%9%H(B>
+ <$B>eD9$X$NMW@A;v9`(B>
+ <P>$BFC$K$J$7(B</P>
+ </$B>eD9$X$NMW@A;v9`(B>
+ </$B>eD9$X$NMW@A;v9`%j%9%H(B>
+ <$BLdBjE@BP:v(B>
+ <P>XML$B$H$O2?$+$o$+$i$J$$!#(B</P>
+ </$BLdBjE@BP:v(B>
+ </$B6HL3Js9p(B>
+
+ <$B6HL3Js9p(B>
+ <$B6HL3L>(B>$B8!:w%(%s%8%s$N3+H/(B</$B6HL3L>(B>
+ <$B6HL3%3!<%I(B>S8821-76</$B6HL3%3!<%I(B>
+ <$B9)?t4IM}(B>
+ <$B8+@Q$b$j9)?t(B>120</$B8+@Q$b$j9)?t(B>
+ <$B<B@S9)?t(B>6</$B<B@S9)?t(B>
+ <$BEv7n8+@Q$b$j9)?t(B>32</$BEv7n8+@Q$b$j9)?t(B>
+ <$BEv7n<B@S9)?t(B>2</$BEv7n<B@S9)?t(B>
+ </$B9)?t4IM}(B>
+ <$BM=Dj9`L\%j%9%H(B>
+ <$BM=Dj9`L\(B>
+ <P><A href="http://www.goo.ne.jp">goo</A>$B$N5!G=$rD4$Y$F$_$k(B</P>
+ </$BM=Dj9`L\(B>
+ </$BM=Dj9`L\%j%9%H(B>
+ <$B<B;\;v9`%j%9%H(B>
+ <$B<B;\;v9`(B>
+ <P>$B99$K!"$I$&$$$&8!:w%(%s%8%s$,$"$k$+D4::$9$k(B</P>
+ </$B<B;\;v9`(B>
+ </$B<B;\;v9`%j%9%H(B>
+ <$B>eD9$X$NMW@A;v9`%j%9%H(B>
+ <$B>eD9$X$NMW@A;v9`(B>
+ <P>$B3+H/$r$9$k$N$O$a$s$I$&$J$N$G!"(BYahoo!$B$rGc<}$7$F2<$5$$!#(B</P>
+ </$B>eD9$X$NMW@A;v9`(B>
+ </$B>eD9$X$NMW@A;v9`%j%9%H(B>
+ <$BLdBjE@BP:v(B>
+ <P>$B8!:w%(%s%8%s$G<V$rAv$i$;$k$3$H$,$G$-$J$$!#!JMWD4::!K(B</P>
+ </$BLdBjE@BP:v(B>
+ </$B6HL3Js9p(B>
+ </$B6HL3Js9p%j%9%H(B>
+</$B=5Js(B>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-little-endian.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-little-endian.xml
new file mode 100644
index 0000000000..81f72e59e8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-little-endian.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.dtd
new file mode 100644
index 0000000000..684c848e2f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.dtd
@@ -0,0 +1,72 @@
+<?xml encoding="Shift_JIS"?>
+<!--
+*************************************************************************
+* *
+* DPSD PDGT•ñ—pDTD weekly.dtd *
+* *
+* Copyright 1997 Fuji Xerox Information Systems Co.,Ltd. *
+* *
+*************************************************************************
+-->
+
+
+<!-- •ÏX—š—ð
+ Version 1.0 1997/10/29 ì¬ ‘º“c^
+-->
+
+<!ELEMENT T•ñ (”NŒŽT, Ž–¼, ‹Æ–±•ñƒŠƒXƒg)>
+
+<!ELEMENT ”NŒŽT (”N“x, ŒŽ“x, T)>
+<!ELEMENT ”N“x (#PCDATA)> <!-- ”N“x‚ð•\‚·”Žš -->
+<!ELEMENT ŒŽ“x (#PCDATA)> <!-- ŒŽ“x‚ð•\‚·”Žš -->
+<!ELEMENT T (#PCDATA)> <!-- ‰½T–Ú‚©‚ð•\‚·”Žš -->
+
+<!ELEMENT Ž–¼ (Ž, –¼)>
+<!ELEMENT Ž (#PCDATA)>
+<!ELEMENT –¼ (#PCDATA)>
+
+<!ELEMENT ‹Æ–±•ñƒŠƒXƒg (‹Æ–±•ñ+)>
+<!ELEMENT ‹Æ–±•ñ (‹Æ–±–¼, ‹Æ–±ƒR[ƒh, H”ŠÇ—,
+ —\’耖ڃŠƒXƒg,
+ ŽÀŽ{Ž–€ƒŠƒXƒg,
+ ã’·‚Ö‚Ì—v¿Ž–€ƒŠƒXƒg,
+ –â‘è“_‘Îô?)>
+<!ELEMENT ‹Æ–±–¼ (#PCDATA)> <!-- ‹Æ–±ƒR[ƒhˆê——‚ðŽQÆ -->
+<!ELEMENT ‹Æ–±ƒR[ƒh (#PCDATA)> <!-- ‹Æ–±ƒR[ƒhˆê——‚ðŽQÆ -->
+
+<!ELEMENT H”ŠÇ— (Œ©Ï‚à‚èH”, ŽÀÑH”,
+ “–ŒŽŒ©Ï‚à‚èH”, “–ŒŽŽÀÑH”)>
+<!ELEMENT Œ©Ï‚à‚èH” (#PCDATA)> <!-- ’PˆÊ‚ÍŽžŠÔ -->
+<!ELEMENT ŽÀÑH” (#PCDATA)> <!-- ’PˆÊ‚ÍŽžŠÔ -->
+<!ELEMENT “–ŒŽŒ©Ï‚à‚èH” (#PCDATA)> <!-- ’PˆÊ‚ÍŽžŠÔ -->
+<!ELEMENT “–ŒŽŽÀÑH” (#PCDATA)> <!-- ’PˆÊ‚ÍŽžŠÔ -->
+
+<!ELEMENT —\’耖ڃŠƒXƒg (—\’耖Ú*)>
+<!ELEMENT —\’è€–Ú ((P | OL | UL)+)>
+<!ELEMENT ŽÀŽ{Ž–€ƒŠƒXƒg (ŽÀŽ{Ž–€*)>
+<!ELEMENT ŽÀŽ{Ž–€ ((P | OL | UL)+)>
+<!ELEMENT –â‘è“_‘Îô ((P | OL | UL)+)>
+
+<!ELEMENT ã’·‚Ö‚Ì—v¿Ž–€ƒŠƒXƒg (ã’·‚Ö‚Ì—v¿Ž–€*)>
+<!ELEMENT ã’·‚Ö‚Ì—v¿Ž–€ ((P | OL | UL)+)>
+
+
+<!-- XML‚Å‚ ‚ç‚©‚¶‚ß’è‹`‚³‚ꂽŽÀ‘Ì -->
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+
+<!-- HTML‚̔ėp“I‚ȃ^ƒO -->
+<!ELEMENT P (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT OL (LI)*>
+<!ELEMENT UL (LI)*>
+<!ELEMENT LI (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT EM (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT STRONG (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT A (#PCDATA | EM | STRONG)*>
+<!ATTLIST A
+ name CDATA #IMPLIED
+ href CDATA #IMPLIED
+ >
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.xml
new file mode 100644
index 0000000000..742145560d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-shift_jis.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<!DOCTYPE T•ñ SYSTEM "weekly-shift_jis.dtd">
+<!-- T•ñƒTƒ“ƒvƒ‹ -->
+<T•ñ>
+ <”NŒŽT>
+ <”N“x>1997</”N“x>
+ <ŒŽ“x>1</ŒŽ“x>
+ <T>1</T>
+ </”NŒŽT>
+
+ <Ž–¼>
+ <Ž>ŽR“c</Ž>
+ <–¼>‘¾˜Y</–¼>
+ </Ž–¼>
+
+ <‹Æ–±•ñƒŠƒXƒg>
+ <‹Æ–±•ñ>
+ <‹Æ–±–¼>XMLƒGƒfƒBƒ^[‚Ìì¬</‹Æ–±–¼>
+ <‹Æ–±ƒR[ƒh>X3355-23</‹Æ–±ƒR[ƒh>
+ <H”ŠÇ—>
+ <Œ©Ï‚à‚èH”>1600</Œ©Ï‚à‚èH”>
+ <ŽÀÑH”>320</ŽÀÑH”>
+ <“–ŒŽŒ©Ï‚à‚èH”>160</“–ŒŽŒ©Ï‚à‚èH”>
+ <“–ŒŽŽÀÑH”>24</“–ŒŽŽÀÑH”>
+ </H”ŠÇ—>
+ <—\’耖ڃŠƒXƒg>
+ <—\’耖Ú>
+ <P>XMLƒGƒfƒBƒ^[‚ÌŠî–{Žd—l‚Ìì¬</P>
+ </—\’耖Ú>
+ </—\’耖ڃŠƒXƒg>
+ <ŽÀŽ{Ž–€ƒŠƒXƒg>
+ <ŽÀŽ{Ž–€>
+ <P>XMLƒGƒfƒBƒ^[‚ÌŠî–{Žd—l‚Ìì¬</P>
+ </ŽÀŽ{Ž–€>
+ <ŽÀŽ{Ž–€>
+ <P>‹£‡‘¼ŽÐ»•i‚Ì‹@”\’²¸</P>
+ </ŽÀŽ{Ž–€>
+ </ŽÀŽ{Ž–€ƒŠƒXƒg>
+ <ã’·‚Ö‚Ì—v¿Ž–€ƒŠƒXƒg>
+ <ã’·‚Ö‚Ì—v¿Ž–€>
+ <P>“Á‚É‚È‚µ</P>
+ </ã’·‚Ö‚Ì—v¿Ž–€>
+ </ã’·‚Ö‚Ì—v¿Ž–€ƒŠƒXƒg>
+ <–â‘è“_‘Îô>
+ <P>XML‚Ƃ͉½‚©‚í‚©‚ç‚È‚¢B</P>
+ </–â‘è“_‘Îô>
+ </‹Æ–±•ñ>
+
+ <‹Æ–±•ñ>
+ <‹Æ–±–¼>ŒŸõƒGƒ“ƒWƒ“‚ÌŠJ”­</‹Æ–±–¼>
+ <‹Æ–±ƒR[ƒh>S8821-76</‹Æ–±ƒR[ƒh>
+ <H”ŠÇ—>
+ <Œ©Ï‚à‚èH”>120</Œ©Ï‚à‚èH”>
+ <ŽÀÑH”>6</ŽÀÑH”>
+ <“–ŒŽŒ©Ï‚à‚èH”>32</“–ŒŽŒ©Ï‚à‚èH”>
+ <“–ŒŽŽÀÑH”>2</“–ŒŽŽÀÑH”>
+ </H”ŠÇ—>
+ <—\’耖ڃŠƒXƒg>
+ <—\’耖Ú>
+ <P><A href="http://www.goo.ne.jp">goo</A>‚Ì‹@”\‚𒲂ׂĂ݂é</P>
+ </—\’耖Ú>
+ </—\’耖ڃŠƒXƒg>
+ <ŽÀŽ{Ž–€ƒŠƒXƒg>
+ <ŽÀŽ{Ž–€>
+ <P>X‚ÉA‚Ç‚¤‚¢‚¤ŒŸõƒGƒ“ƒWƒ“‚ª‚ ‚é‚©’²¸‚·‚é</P>
+ </ŽÀŽ{Ž–€>
+ </ŽÀŽ{Ž–€ƒŠƒXƒg>
+ <ã’·‚Ö‚Ì—v¿Ž–€ƒŠƒXƒg>
+ <ã’·‚Ö‚Ì—v¿Ž–€>
+ <P>ŠJ”­‚ð‚·‚é‚Ì‚Í‚ß‚ñ‚Ç‚¤‚È‚Ì‚ÅAYahoo!‚𔃎û‚µ‚ĉº‚³‚¢B</P>
+ </ã’·‚Ö‚Ì—v¿Ž–€>
+ </ã’·‚Ö‚Ì—v¿Ž–€ƒŠƒXƒg>
+ <–â‘è“_‘Îô>
+ <P>ŒŸõƒGƒ“ƒWƒ“‚ŎԂ𑖂点‚邱‚Æ‚ª‚Å‚«‚È‚¢Bi—v’²¸j</P>
+ </–â‘è“_‘Îô>
+ </‹Æ–±•ñ>
+ </‹Æ–±•ñƒŠƒXƒg>
+</T•ñ>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.dtd
new file mode 100644
index 0000000000..8259bc2566
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.dtd
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.xml
new file mode 100644
index 0000000000..6c8622aa43
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-16.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.dtd
new file mode 100644
index 0000000000..8fa4368fd8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.dtd
@@ -0,0 +1,71 @@
+<!--
+*************************************************************************
+* *
+* DPSD PDG週報用DTD weekly.dtd *
+* *
+* Copyright 1997 Fuji Xerox Information Systems Co.,Ltd. *
+* *
+*************************************************************************
+-->
+
+
+<!-- 変更履歴
+ Version 1.0 1997/10/29 ä½œæˆ æ‘田真
+-->
+
+<!ELEMENT 週報 (年月週, æ°å, 業務報告リスト)>
+
+<!ELEMENT 年月週 (年度, 月度, 週)>
+<!ELEMENT 年度 (#PCDATA)> <!-- 年度を表ã™æ•°å­— -->
+<!ELEMENT 月度 (#PCDATA)> <!-- 月度を表ã™æ•°å­— -->
+<!ELEMENT 週 (#PCDATA)> <!-- 何週目ã‹ã‚’表ã™æ•°å­— -->
+
+<!ELEMENT æ°å (æ°, å)>
+<!ELEMENT æ° (#PCDATA)>
+<!ELEMENT å (#PCDATA)>
+
+<!ELEMENT 業務報告リスト (業務報告+)>
+<!ELEMENT 業務報告 (業務å, 業務コード, 工数管ç†,
+ 予定項目リスト,
+ 実施事項リスト,
+ 上長ã¸ã®è¦è«‹äº‹é …リスト,
+ å•é¡Œç‚¹å¯¾ç­–?)>
+<!ELEMENT 業務å (#PCDATA)> <!-- 業務コード一覧をå‚ç…§ -->
+<!ELEMENT 業務コード (#PCDATA)> <!-- 業務コード一覧をå‚ç…§ -->
+
+<!ELEMENT å·¥æ•°ç®¡ç† (見ç©ã‚‚り工数, 実績工数,
+ 当月見ç©ã‚‚り工数, 当月実績工数)>
+<!ELEMENT 見ç©ã‚‚り工数 (#PCDATA)> <!-- å˜ä½ã¯æ™‚é–“ -->
+<!ELEMENT 実績工数 (#PCDATA)> <!-- å˜ä½ã¯æ™‚é–“ -->
+<!ELEMENT 当月見ç©ã‚‚り工数 (#PCDATA)> <!-- å˜ä½ã¯æ™‚é–“ -->
+<!ELEMENT 当月実績工数 (#PCDATA)> <!-- å˜ä½ã¯æ™‚é–“ -->
+
+<!ELEMENT 予定項目リスト (予定項目*)>
+<!ELEMENT 予定項目 ((P | OL | UL)+)>
+<!ELEMENT 実施事項リスト (実施事項*)>
+<!ELEMENT 実施事項 ((P | OL | UL)+)>
+<!ELEMENT å•é¡Œç‚¹å¯¾ç­– ((P | OL | UL)+)>
+
+<!ELEMENT 上長ã¸ã®è¦è«‹äº‹é …リスト (上長ã¸ã®è¦è«‹äº‹é …*)>
+<!ELEMENT 上長ã¸ã®è¦è«‹äº‹é … ((P | OL | UL)+)>
+
+
+<!-- XMLã§ã‚らã‹ã˜ã‚定義ã•ã‚ŒãŸå®Ÿä½“ -->
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+
+<!-- HTMLã®æ±Žç”¨çš„ãªã‚¿ã‚° -->
+<!ELEMENT P (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT OL (LI)*>
+<!ELEMENT UL (LI)*>
+<!ELEMENT LI (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT EM (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT STRONG (#PCDATA | EM | STRONG | A)*>
+<!ELEMENT A (#PCDATA | EM | STRONG)*>
+<!ATTLIST A
+ name CDATA #IMPLIED
+ href CDATA #IMPLIED
+ >
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.xml
new file mode 100644
index 0000000000..497f572c0a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/japanese/weekly-utf-8.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<!DOCTYPE 週報 SYSTEM "weekly-utf-8.dtd">
+<!-- 週報サンプル -->
+<週報>
+ <年月週>
+ <年度>1997</年度>
+ <月度>1</月度>
+ <週>1</週>
+ </年月週>
+
+ <æ°å>
+ <æ°>山田</æ°>
+ <å>太郎</å>
+ </æ°å>
+
+ <業務報告リスト>
+ <業務報告>
+ <業務å>XMLエディターã®ä½œæˆ</業務å>
+ <業務コード>X3355-23</業務コード>
+ <工数管ç†>
+ <見ç©ã‚‚り工数>1600</見ç©ã‚‚り工数>
+ <実績工数>320</実績工数>
+ <当月見ç©ã‚‚り工数>160</当月見ç©ã‚‚り工数>
+ <当月実績工数>24</当月実績工数>
+ </工数管ç†>
+ <予定項目リスト>
+ <予定項目>
+ <P>XMLエディターã®åŸºæœ¬ä»•æ§˜ã®ä½œæˆ</P>
+ </予定項目>
+ </予定項目リスト>
+ <実施事項リスト>
+ <実施事項>
+ <P>XMLエディターã®åŸºæœ¬ä»•æ§˜ã®ä½œæˆ</P>
+ </実施事項>
+ <実施事項>
+ <P>競åˆä»–社製å“ã®æ©Ÿèƒ½èª¿æŸ»</P>
+ </実施事項>
+ </実施事項リスト>
+ <上長ã¸ã®è¦è«‹äº‹é …リスト>
+ <上長ã¸ã®è¦è«‹äº‹é …>
+ <P>特ã«ãªã—</P>
+ </上長ã¸ã®è¦è«‹äº‹é …>
+ </上長ã¸ã®è¦è«‹äº‹é …リスト>
+ <å•é¡Œç‚¹å¯¾ç­–>
+ <P>XMLã¨ã¯ä½•ã‹ã‚ã‹ã‚‰ãªã„。</P>
+ </å•é¡Œç‚¹å¯¾ç­–>
+ </業務報告>
+
+ <業務報告>
+ <業務å>検索エンジンã®é–‹ç™º</業務å>
+ <業務コード>S8821-76</業務コード>
+ <工数管ç†>
+ <見ç©ã‚‚り工数>120</見ç©ã‚‚り工数>
+ <実績工数>6</実績工数>
+ <当月見ç©ã‚‚り工数>32</当月見ç©ã‚‚り工数>
+ <当月実績工数>2</当月実績工数>
+ </工数管ç†>
+ <予定項目リスト>
+ <予定項目>
+ <P><A href="http://www.goo.ne.jp">goo</A>ã®æ©Ÿèƒ½ã‚’調ã¹ã¦ã¿ã‚‹</P>
+ </予定項目>
+ </予定項目リスト>
+ <実施事項リスト>
+ <実施事項>
+ <P>æ›´ã«ã€ã©ã†ã„ã†æ¤œç´¢ã‚¨ãƒ³ã‚¸ãƒ³ãŒã‚ã‚‹ã‹èª¿æŸ»ã™ã‚‹</P>
+ </実施事項>
+ </実施事項リスト>
+ <上長ã¸ã®è¦è«‹äº‹é …リスト>
+ <上長ã¸ã®è¦è«‹äº‹é …>
+ <P>開発をã™ã‚‹ã®ã¯ã‚ã‚“ã©ã†ãªã®ã§ã€Yahoo!ã‚’è²·åŽã—ã¦ä¸‹ã•ã„。</P>
+ </上長ã¸ã®è¦è«‹äº‹é …>
+ </上長ã¸ã®è¦è«‹äº‹é …リスト>
+ <å•é¡Œç‚¹å¯¾ç­–>
+ <P>検索エンジンã§è»Šã‚’走らã›ã‚‹ã“ã¨ãŒã§ããªã„。(è¦èª¿æŸ»ï¼‰</P>
+ </å•é¡Œç‚¹å¯¾ç­–>
+ </業務報告>
+ </業務報告リスト>
+</週報>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Entries
new file mode 100644
index 0000000000..4bb12807a9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Entries
@@ -0,0 +1,373 @@
+/e2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/oasis.xml/1.6/Thu Mar 4 18:23:37 2004//
+/p01fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p01fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p01fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p01fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p01pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p01pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p01pass3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail10.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail11.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail12.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail13.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail14.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail15.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail16.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail17.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail18.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail19.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail20.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail21.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail22.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail23.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail24.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail25.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail26.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail27.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail28.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail29.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail30.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail31.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail6.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail7.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail8.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p02fail9.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail10.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail11.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail12.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail13.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail14.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail15.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail16.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail17.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail18.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail19.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail20.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail21.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail22.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail23.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail24.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail25.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail26.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail27.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail28.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail29.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail7.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail8.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03fail9.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p03pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p04fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p04fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p04fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p04pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p05fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p05fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p05fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p05fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p05fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p05pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p06fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p06pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p07pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p08fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p08fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p08pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p09fail1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p09fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p09fail2.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p09fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p09fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p09fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p09fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p09pass1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p09pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p10fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p10fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p10fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p10pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p11fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p11fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p11pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p12fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p12fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p12fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p12fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p12fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p12fail6.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p12fail7.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p12pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p14fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p14fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p14fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p14pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p15fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p15fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p15fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p15pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p16fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p16fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p16fail3.xml/1.2/Wed Feb 20 19:30:52 2002//
+/p16pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p16pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p16pass3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p18fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p18fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p18fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p18pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p22fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p22fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p22pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p22pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p22pass3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p22pass4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p22pass5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p22pass6.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p23fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p23fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p23fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p23fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p23fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p23pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p23pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p23pass3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p23pass4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p24fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p24fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p24pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p24pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p24pass3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p24pass4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p25fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p25pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p25pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p26fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p26fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p26pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p27fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p27pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p27pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p27pass3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p27pass4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p28fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p28pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p28pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p28pass3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p28pass4.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p28pass4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p28pass5.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p28pass5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p29fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p29pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p30fail1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p30fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p30pass1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p30pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p30pass2.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p30pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p31fail1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p31fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p31pass1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p31pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p31pass2.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p31pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p32fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p32fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p32fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p32fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p32fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p32pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p32pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p39fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p39fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p39fail3.xml/1.1/Mon Feb 11 18:34:29 2002//
+/p39fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p39fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p39pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p39pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p40fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p40fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p40fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p40fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p40pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p40pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p40pass3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p40pass4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p41fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p41fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p41fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p41pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p41pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p42fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p42fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p42fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p42pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p42pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p43fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p43fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p43fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p43pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p44fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p44fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p44fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p44fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p44fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p44pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p44pass2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p44pass3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p44pass4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p44pass5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p45fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p45fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p45fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p45fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p45pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p46fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p46fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p46fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p46fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p46fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p46fail6.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p46pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p47fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p47fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p47fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p47fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p47pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p48fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p48fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p48pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p49fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p49pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p50fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p50pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p51fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p51fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p51fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p51fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p51fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p51fail6.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p51fail7.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p51pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p52fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p52fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p52pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p53fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p53fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p53fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p53fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p53fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p53pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p54fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p54pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p55fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p55pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p56fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p56fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p56fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p56fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p56fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p56pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p57fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p57pass1.xml/1.2/Mon Mar 25 15:05:28 2002//
+/p58fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p58fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p58fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p58fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p58fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p58fail6.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p58fail7.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p58fail8.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p58pass1.xml/1.2/Mon Mar 25 15:05:49 2002//
+/p59fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p59fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p59fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p59pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p60fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p60fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p60fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p60fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p60fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p60pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p61fail1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p61fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p61pass1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p61pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p62fail1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p62fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p62fail2.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p62fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p62pass1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p62pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p63fail1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p63fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p63fail2.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p63fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p63pass1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p63pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p64fail1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p64fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p64fail2.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p64fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p64pass1.dtd/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p64pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p66fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p66fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p66fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p66fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p66fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p66fail6.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p66pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p68fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p68fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p68fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p68pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p69fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p69fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p69fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p69pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p70fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p70pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p71fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p71fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p71fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p71fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p71pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p72fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p72fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p72fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p72fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p72pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p73fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p73fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p73fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p73fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p73fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p73pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p74fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p74fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p74fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p74pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p75fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p75fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p75fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p75fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p75fail5.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p75fail6.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p75pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p76fail1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p76fail2.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p76fail3.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p76fail4.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/p76pass1.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Repository
new file mode 100644
index 0000000000..f5f017b129
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/oasis
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/e2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/e2.xml
new file mode 100644
index 0000000000..42a1842a53
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/e2.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE el [
+<!ELEMENT el EMPTY>
+<!ATTLIST el at (one|two|two) #IMPLIED>
+]>
+<e1 at="two"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/oasis.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/oasis.xml
new file mode 100644
index 0000000000..63eb09d13e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/oasis.xml
@@ -0,0 +1,1637 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<TESTCASES PROFILE='OASIS/NIST TESTS, 1-Nov-1998'>
+
+ <TEST TYPE='valid' SECTIONS='2.2 [1]'
+ ID='o-p01pass2' URI='p01pass2.xml'>
+ various Misc items where they can occur
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.3 [6]'
+ ID='o-p06pass1' URI='p06pass1.xml'>
+ various satisfactions of the Names production in a NAMES
+ attribute
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.3 [7]'
+ ID='o-p07pass1' URI='p07pass1.xml'>
+ various valid Nmtoken 's in an attribute list declaration.
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.3 [8]'
+ ID='o-p08pass1' URI='p08pass1.xml' NAMESPACE='no'>
+ various satisfaction of an NMTOKENS attribute value.
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.3 [9]'
+ ID='o-p09pass1' ENTITIES="parameter" URI='p09pass1.xml'>
+ valid EntityValue's. Except for entity references,
+ markup is not recognized.
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.3 [12]'
+ ID='o-p12pass1' URI='p12pass1.xml'>
+ valid public IDs.
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.8 [22]'
+ ID='o-p22pass4' URI='p22pass4.xml'>
+ XML decl and doctypedecl
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.8 [22]'
+ ID='o-p22pass5' URI='p22pass5.xml'>
+ just doctypedecl
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.8 [22]'
+ ID='o-p22pass6' URI='p22pass6.xml'>
+ S between decls is not required
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.1 [43] [44]'
+ ID='o-p28pass1' URI='p28pass1.xml'>
+ Empty-element tag must be used for element which are declared EMPTY. </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.8 4.1 [28] [69]'
+ ID='o-p28pass3' ENTITIES="parameter" URI='p28pass3.xml'>
+ Valid doctypedecl with Parameter entity reference. The declaration of a parameter entity must precede any reference to it. </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.8 4.2.2 [28] [75]'
+ ID='o-p28pass4' ENTITIES="parameter" URI='p28pass4.xml'>
+ Valid doctypedecl with ExternalID as an External Entity declaration. </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.8 4.1 [28] [69]'
+ ID='o-p28pass5' ENTITIES="parameter" URI='p28pass5.xml'>
+ Valid doctypedecl with ExternalID as an External Entity. A parameter entity reference is also used. </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.8 [29]'
+ ID='o-p29pass1' URI='p29pass1.xml'>
+ Valid types of markupdecl.
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.8 4.2.2 [30] [75]'
+ ID='o-p30pass1' ENTITIES="parameter" URI='p30pass1.xml'>
+ Valid doctypedecl with ExternalID as an External Entity. The external entity has an element declaration. </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.8 4.2.2 4.3.1 [30] [75] [77]'
+ ID='o-p30pass2' ENTITIES="parameter" URI='p30pass2.xml'>
+ Valid doctypedecl with ExternalID as an Enternal Entity. The external entity begins with a Text Declaration. </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.8 [31]'
+ ID='o-p31pass1' ENTITIES="parameter" URI='p31pass1.xml'>
+ external subset can be empty
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.8 3.4 4.2.2 [31] [62] [63] [75]'
+ ID='o-p31pass2' ENTITIES="parameter" URI='p31pass2.xml'>
+ Valid doctypedecl with EXternalID as Enternal Entity. The external entity contains a parameter entity reference and condtional sections.</TEST>
+
+ <TEST TYPE='valid' SECTIONS='2.4 2.5 2.6 2.7 [15] [16] [18]'
+ ID='o-p43pass1' URI='p43pass1.xml'>
+ Valid use of character data, comments, processing instructions and CDATA sections within the start and end tag. </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.2 [45]'
+ ID='o-p45pass1' URI='p45pass1.xml'>
+ valid element declarations
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.2 3.2.1 3.2.2 [45] [46] [47] [51]'
+ ID='o-p46pass1' URI='p46pass1.xml'>
+ Valid use of contentspec, element content models, and mixed content within an element type declaration. </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.2 3.2.1 [45] [46] [47] '
+ ID='o-p47pass1' URI='p47pass1.xml'>
+ Valid use of contentspec, element content models, choices, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.2 3.2.1 [45] [46] [47]'
+ ID='o-p48pass1' URI='p48pass1.xml'>
+ Valid use of contentspec, element content models, choices, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.2 3.2.1 [45] [46] [47]'
+ ID='o-p49pass1' URI='p49pass1.xml'>
+ Valid use of contentspec, element content models, choices, and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Whitespace is also valid between choices. </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.2 3.2.1 [45] [46] [47]'
+ ID='o-p50pass1' URI='p50pass1.xml'>
+ Valid use of contentspec, element content models, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Whitespace is also valid between sequences. </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.2.2 [51]'
+ ID='o-p51pass1' URI='p51pass1.xml'>
+ valid Mixed contentspec's.
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.3 [52]'
+ ID='o-p52pass1' URI='p52pass1.xml'>
+ valid AttlistDecls: No AttDef's are required,
+ and the terminating
+ S is optional, multiple ATTLISTS per element are OK, and multiple
+ declarations of the same attribute are OK.
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.3 [53]'
+ ID='o-p53pass1' URI='p53pass1.xml'>
+ a valid AttDef
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.3.1 [54]'
+ ID='o-p54pass1' URI='p54pass1.xml'>
+ the three kinds of attribute types
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.3.1 [55]'
+ ID='o-p55pass1' URI='p55pass1.xml'>
+ StringType = "CDATA"
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.3.1 [56]'
+ ID='o-p56pass1' URI='p56pass1.xml'>
+ the 7 tokenized attribute types
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.3.1 [57]'
+ ID='o-p57pass1' URI='p57pass1.xml'>
+ enumerated types are NMTOKEN or NOTATION lists
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.3.1 [58]'
+ ID='o-p58pass1' URI='p58pass1.xml'>
+ NOTATION enumeration has on or more items
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.3.1 [59]'
+ ID='o-p59pass1' URI='p59pass1.xml'>
+ NMTOKEN enumerations haveon or more items
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.3.2 [60]'
+ ID='o-p60pass1' URI='p60pass1.xml'>
+ the four types of default values
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.4 [61]'
+ ID='o-p61pass1' ENTITIES="parameter" URI='p61pass1.xml'>
+ valid conditional sections are INCLUDE and IGNORE
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.4 [62]'
+ ID='o-p62pass1' ENTITIES="parameter" URI='p62pass1.xml'>
+ valid INCLUDE sections -- options S before and
+ after keyword, sections can nest
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.4 [63]'
+ ID='o-p63pass1' ENTITIES="parameter" URI='p63pass1.xml'>
+ valid IGNORE sections
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='3.4 [64]'
+ ID='o-p64pass1' ENTITIES="parameter" URI='p64pass1.xml'>
+ IGNOREd sections ignore everything except section delimiters
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='4.1 [68]'
+ ID='o-p68pass1' URI='p68pass1.xml'>
+ Valid entity references. Also ensures that a charref to
+ '&amp;' isn't interpreted as an entity reference open delimiter
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='4.1 [69]'
+ ID='o-p69pass1' ENTITIES="parameter" URI='p69pass1.xml'>
+ Valid PEReferences.
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='4.2 [70]'
+ ID='o-p70pass1' URI='p70pass1.xml'>
+ An EntityDecl is either a GEDecl or a PEDecl
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='4.2 [71]'
+ ID='o-p71pass1' URI='p71pass1.xml'>
+ Valid GEDecls
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='4.2 [72]'
+ ID='o-p72pass1' URI='p72pass1.xml'>
+ Valid PEDecls
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='4.2 [73]'
+ ID='o-p73pass1' URI='p73pass1.xml'>
+ EntityDef is either Entity value or an external id,
+ with an optional NDataDecl
+ </TEST>
+
+ <TEST TYPE='valid' SECTIONS='4.2.2 [76]'
+ ID='o-p76pass1' URI='p76pass1.xml'>
+ valid NDataDecls
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.1 [1]'
+ ID='o-p01pass1' URI='p01pass1.xml'>
+ no prolog
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.1 [1]'
+ ID='o-p01pass3' URI='p01pass3.xml'>
+ Misc items after the document
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.3 [3]'
+ ID='o-p03pass1' URI='p03pass1.xml'>
+ all valid S characters
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.3 [4]'
+ ID='o-p04pass1' URI='p04pass1.xml' NAMESPACE='no'>
+ names with all valid ASCII characters, and one from each
+ other class in NameChar
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.3 [5]'
+ ID='o-p05pass1' URI='p05pass1.xml' NAMESPACE='no'>
+ various valid Name constructions
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.3 [6]'
+ ID='o-p06fail1' URI='p06fail1.xml'>
+ Requires at least one name.
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.3 [8]'
+ ID='o-p08fail1' URI='p08fail1.xml'>
+ at least one Nmtoken is required.
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.3 [8]'
+ ID='o-p08fail2' URI='p08fail2.xml'>
+ an invalid Nmtoken character.
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.3 [10]'
+ ID='o-p10pass1' URI='p10pass1.xml'>
+ valid attribute values
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.4 [14]'
+ ID='o-p14pass1' URI='p14pass1.xml'>
+ valid CharData
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.5 [15]'
+ ID='o-p15pass1' URI='p15pass1.xml'>
+ valid comments
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.6 [16] [17]'
+ ID='o-p16pass1' URI='p16pass1.xml'>
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.6 [16]'
+ ID='o-p16pass2' URI='p16pass2.xml'>
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.6 [16]'
+ ID='o-p16pass3' URI='p16pass3.xml'>
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.7 [18]'
+ ID='o-p18pass1' URI='p18pass1.xml'>
+ valid CDSect's. Note that a CDStart in a CDSect is not
+ recognized as such
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [22]'
+ ID='o-p22pass1' URI='p22pass1.xml'>
+ prolog can be empty
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [22]'
+ ID='o-p22pass2' URI='p22pass2.xml'>
+ XML declaration only
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [22]'
+ ID='o-p22pass3' URI='p22pass3.xml'>
+ XML decl and Misc
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [23]'
+ ID='o-p23pass1' URI='p23pass1.xml'>
+ Test shows a valid XML declaration along with version info. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [23]'
+ ID='o-p23pass2' URI='p23pass2.xml'>
+ Test shows a valid XML declaration along with encoding declaration. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [23]'
+ ID='o-p23pass3' URI='p23pass3.xml'>
+ Test shows a valid XML declaration along with Standalone Document Declaration. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [23]'
+ ID='o-p23pass4' URI='p23pass4.xml'>
+ Test shows a valid XML declaration, encoding declarationand Standalone Document Declaration. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [24]'
+ ID='o-p24pass1' URI='p24pass1.xml'>
+ Test shows a prolog that has the VersionInfo delimited by double quotes. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [24]'
+ ID='o-p24pass2' URI='p24pass2.xml'>
+ Test shows a prolog that has the VersionInfo delimited by single quotes. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [24]'
+ ID='o-p24pass3' URI='p24pass3.xml'>
+ Test shows whitespace is allowed in prolog before version info. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [24]'
+ ID='o-p24pass4' URI='p24pass4.xml'>
+ Test shows whitespace is allowed in prolog on both sides of equal sign. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [25]'
+ ID='o-p25pass1' URI='p25pass1.xml'>
+ Test shows whitespace is NOT necessary before or after equal sign of versioninfo. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [25]'
+ ID='o-p25pass2' URI='p25pass2.xml'>
+ Test shows whitespace can be used on both sides of equal sign of versioninfo. </TEST>
+
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [26]'
+ ID='o-p26pass1' URI='p26pass1.xml'>
+ The valid version number. We cannot test others because
+ a 1.0 processor is allowed to fail them.
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [27]'
+ ID='o-p27pass1' URI='p27pass1.xml'>
+ Comments are valid as the Misc part of the prolog. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [27]'
+ ID='o-p27pass2' URI='p27pass2.xml'>
+ Processing Instructions are valid as the Misc part of the prolog. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [27]'
+ ID='o-p27pass3' URI='p27pass3.xml'>
+ Whitespace is valid as the Misc part of the prolog. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.8 [27]'
+ ID='o-p27pass4' URI='p27pass4.xml'>
+ A combination of comments, whitespaces and processing instructions are valid as the Misc part of the prolog. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.9 [32]'
+ ID='o-p32pass1' URI='p32pass1.xml'>
+ Double quotes can be used as delimeters for the value of a Standalone Document Declaration. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='2.9 [32]'
+ ID='o-p32pass2' URI='p32pass2.xml'>
+ Single quotes can be used as delimeters for the value of a Standalone Document Declaration. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3 3.1 [39] [44]'
+ ID='o-p39pass1' URI='p39pass1.xml'>
+ Empty element tag may be used for any element which has no content. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3 3.1 [39] [43]'
+ ID='o-p39pass2' URI='p39pass2.xml'>
+ Character data is valid element content. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.1 [40]'
+ ID='o-p40pass1' URI='p40pass1.xml'>
+ Elements content can be empty. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.1 [40]'
+ ID='o-p40pass2' URI='p40pass2.xml'>
+ Whitespace is valid within a Start-tag. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.1 [40] [41]'
+ ID='o-p40pass3' URI='p40pass3.xml'>
+ Attributes are valid within a Start-tag. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.1 [40]'
+ ID='o-p40pass4' URI='p40pass4.xml'>
+ Whitespace and Multiple Attributes are valid within a Start-tag. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.1 [41]'
+ ID='o-p41pass1' URI='p41pass1.xml'>
+ Attributes are valid within a Start-tag. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.1 [41]'
+ ID='o-p41pass2' URI='p41pass2.xml'>
+ Whitespace is valid within a Start-tags Attribute. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.1 [42]'
+ ID='o-p42pass1' URI='p42pass1.xml'>
+ Test shows proper syntax for an End-tag. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.1 [42]'
+ ID='o-p42pass2' URI='p42pass2.xml'>
+ Whitespace is valid after name in End-tag. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.1 [44]'
+ ID='o-p44pass1' URI='p44pass1.xml'>
+ Valid display of an Empty Element Tag. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.1 [44]'
+ ID='o-p44pass2' URI='p44pass2.xml'>
+ Empty Element Tags can contain an Attribute. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.1 [44]'
+ ID='o-p44pass3' URI='p44pass3.xml'>
+ Whitespace is valid in an Empty Element Tag following the end of the attribute value. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.1 [44]'
+ ID='o-p44pass4' URI='p44pass4.xml'>
+ Whitespace is valid after the name in an Empty Element Tag. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.1 [44]'
+ ID='o-p44pass5' URI='p44pass5.xml'>
+ Whitespace and Multiple Attributes are valid in an Empty Element Tag. </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='4.1 [66]'
+ ID='o-p66pass1' URI='p66pass1.xml'>
+ valid character references
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='4.2 [74]'
+ ID='o-p74pass1' URI='p74pass1.xml'>
+ PEDef is either an entity value or an external id
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='4.2.2 [75]'
+ ID='o-p75pass1' URI='p75pass1.xml'>
+ valid external identifiers
+ </TEST>
+
+ <TEST TYPE='invalid' SECTIONS='3.3.1 [58] [59] Errata [E2]'
+ ID='o-e2' URI='e2.xml'>
+ Validity Constraint: No duplicate tokens
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.1 [1]'
+ ID='o-p01fail1' URI='p01fail1.xml'>
+ S cannot occur before the prolog
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.1 [1]'
+ ID='o-p01fail2' URI='p01fail2.xml'>
+ comments cannot occur before the prolog
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.1 [1]'
+ ID='o-p01fail3' URI='p01fail3.xml'>
+ only one document element
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.1 [1]'
+ ID='o-p01fail4' URI='p01fail4.xml'>
+ document element must be complete.
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail1' URI='p02fail1.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail10' URI='p02fail10.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail11' URI='p02fail11.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail12' URI='p02fail12.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail13' URI='p02fail13.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail14' URI='p02fail14.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail15' URI='p02fail15.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail16' URI='p02fail16.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail17' URI='p02fail17.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail18' URI='p02fail18.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail19' URI='p02fail19.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail2' URI='p02fail2.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail20' URI='p02fail20.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail21' URI='p02fail21.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail22' URI='p02fail22.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail23' URI='p02fail23.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail24' URI='p02fail24.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail25' URI='p02fail25.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail26' URI='p02fail26.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail27' URI='p02fail27.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail28' URI='p02fail28.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail29' URI='p02fail29.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail3' URI='p02fail3.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail30' URI='p02fail30.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail31' URI='p02fail31.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail4' URI='p02fail4.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail5' URI='p02fail5.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail6' URI='p02fail6.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail7' URI='p02fail7.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail8' URI='p02fail8.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.2 [2]'
+ ID='o-p02fail9' URI='p02fail9.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail1' URI='p03fail1.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail10' URI='p03fail10.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail11' URI='p03fail11.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail12' URI='p03fail12.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail13' URI='p03fail13.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail14' URI='p03fail14.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail15' URI='p03fail15.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail16' URI='p03fail16.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail17' URI='p03fail17.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail18' URI='p03fail18.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail19' URI='p03fail19.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail2' URI='p03fail2.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail20' URI='p03fail20.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail21' URI='p03fail21.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail22' URI='p03fail22.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail23' URI='p03fail23.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail24' URI='p03fail24.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail25' URI='p03fail25.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail26' URI='p03fail26.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail27' URI='p03fail27.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail28' URI='p03fail28.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail29' URI='p03fail29.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail3' URI='p03fail3.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail4' URI='p03fail4.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail5' URI='p03fail5.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail7' URI='p03fail7.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail8' URI='p03fail8.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [3]'
+ ID='o-p03fail9' URI='p03fail9.xml'>
+ Use of illegal character within XML document. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [4]'
+ ID='o-p04fail1' URI='p04fail1.xml'>
+ Name contains invalid character. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [4]'
+ ID='o-p04fail2' URI='p04fail2.xml'>
+ Name contains invalid character. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [4]'
+ ID='o-p04fail3' URI='p04fail3.xml'>
+ Name contains invalid character. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [5]'
+ ID='o-p05fail1' URI='p05fail1.xml'>
+ a Name cannot start with a digit
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [5]'
+ ID='o-p05fail2' URI='p05fail2.xml'>
+ a Name cannot start with a '.'
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [5]'
+ ID='o-p05fail3' URI='p05fail3.xml'>
+ a Name cannot start with a "-"
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [5]'
+ ID='o-p05fail4' URI='p05fail4.xml'>
+ a Name cannot start with a CombiningChar
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [5]'
+ ID='o-p05fail5' URI='p05fail5.xml'>
+ a Name cannot start with an Extender
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [9]'
+ ID='o-p09fail1' ENTITIES="parameter" URI='p09fail1.xml'>
+ EntityValue excludes '%'
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [9]'
+ ID='o-p09fail2' ENTITIES="parameter" URI='p09fail2.xml'>
+ EntityValue excludes '&amp;'
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [9]'
+ ID='o-p09fail3' URI='p09fail3.xml'>
+ incomplete character reference
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [9]'
+ ID='o-p09fail4' URI='p09fail4.xml'>
+ quote types must match
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [9]'
+ ID='o-p09fail5' URI='p09fail5.xml'>
+ quote types must match
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [10]'
+ ID='o-p10fail1' URI='p10fail1.xml'>
+ attribute values exclude '&lt;'
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [10]'
+ ID='o-p10fail2' URI='p10fail2.xml'>
+ attribute values exclude '&amp;'
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [10]'
+ ID='o-p10fail3' URI='p10fail3.xml'>
+ quote types must match
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [11]'
+ ID='o-p11fail1' URI='p11fail1.xml'>
+ quote types must match
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [11]'
+ ID='o-p11fail2' URI='p11fail2.xml'>
+ cannot contain delimiting quotes
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [12]'
+ ID='o-p12fail1' URI='p12fail1.xml'>
+ '"' excluded
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [12]'
+ ID='o-p12fail2' URI='p12fail2.xml'>
+ '\' excluded
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [12]'
+ ID='o-p12fail3' URI='p12fail3.xml'>
+ entity references excluded
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [12]'
+ ID='o-p12fail4' URI='p12fail4.xml'>
+ '>' excluded
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [12]'
+ ID='o-p12fail5' URI='p12fail5.xml'>
+ '&lt;' excluded
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [12]'
+ ID='o-p12fail6' URI='p12fail6.xml'>
+ built-in entity refs excluded
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.3 [13]'
+ ID='o-p12fail7' URI='p12fail7.xml'>
+ The public ID has a tab character, which is disallowed
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.4 [14]'
+ ID='o-p14fail1' URI='p14fail1.xml'>
+ '&lt;' excluded
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.4 [14]'
+ ID='o-p14fail2' URI='p14fail2.xml'>
+ '&amp;' excluded
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.4 [14]'
+ ID='o-p14fail3' URI='p14fail3.xml'>
+ "]]&gt;" excluded
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.5 [15]'
+ ID='o-p15fail1' URI='p15fail1.xml'>
+ comments can't end in '-'
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.5 [15]'
+ ID='o-p15fail2' URI='p15fail2.xml'>
+ one comment per comment (contrasted with SGML)
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.5 [15]'
+ ID='o-p15fail3' URI='p15fail3.xml'>
+ can't include 2 or more adjacent '-'s
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.6 [16]'
+ ID='o-p16fail1' URI='p16fail1.xml'>
+ "xml" is an invalid PITarget
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.6 [16]'
+ ID='o-p16fail2' URI='p16fail2.xml'>
+ a PITarget must be present
+ </TEST>
+
+<TEST TYPE='not-wf' SECTIONS='2.6 [16]'
+ ID='o-p16fail3' URI='p16fail3.xml'>
+ S after PITarget is required
+ </TEST>
+
+
+ <TEST TYPE='not-wf' SECTIONS='2.7 [18]'
+ ID='o-p18fail1' URI='p18fail1.xml'>
+ no space before "CDATA"
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.7 [18]'
+ ID='o-p18fail2' URI='p18fail2.xml'>
+ no space after "CDATA"
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.7 [18]'
+ ID='o-p18fail3' URI='p18fail3.xml'>
+ CDSect's can't nest
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [22]'
+ ID='o-p22fail1' URI='p22fail1.xml'>
+ prolog must start with XML decl
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [22]'
+ ID='o-p22fail2' URI='p22fail2.xml'>
+ prolog must start with XML decl
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [23]'
+ ID='o-p23fail1' URI='p23fail1.xml'>
+ "xml" must be lower-case
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [23]'
+ ID='o-p23fail2' URI='p23fail2.xml'>
+ VersionInfo must be supplied
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [23]'
+ ID='o-p23fail3' URI='p23fail3.xml'>
+ VersionInfo must come first
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [23]'
+ ID='o-p23fail4' URI='p23fail4.xml'>
+ SDDecl must come last
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [23]'
+ ID='o-p23fail5' URI='p23fail5.xml'>
+ no SGML-type PIs
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [24]'
+ ID='o-p24fail1' URI='p24fail1.xml'>
+ quote types must match
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [24]'
+ ID='o-p24fail2' URI='p24fail2.xml'>
+ quote types must match
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [25]'
+ ID='o-p25fail1' URI='p25fail1.xml'>
+ Comment is illegal in VersionInfo. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [26]'
+ ID='o-p26fail1' URI='p26fail1.xml'>
+ Illegal character in VersionNum. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [26]'
+ ID='o-p26fail2' URI='p26fail2.xml'>
+ Illegal character in VersionNum. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [27]'
+ ID='o-p27fail1' URI='p27fail1.xml'>
+ References aren't allowed in Misc,
+ even if they would resolve to valid Misc.
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [28]'
+ ID='o-p28fail1' URI='p28fail1.xml'>
+ only declarations in DTD.
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [29]'
+ ID='o-p29fail1' URI='p29fail1.xml'>
+ A processor must not pass unknown declaration types.
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [30]'
+ ID='o-p30fail1' ENTITIES="parameter" URI='p30fail1.xml'>
+ An XML declaration is not the same as a TextDecl
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [31]'
+ ID='o-p31fail1' ENTITIES="parameter" URI='p31fail1.xml'>
+ external subset excludes doctypedecl
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.9 [32]'
+ ID='o-p32fail1' URI='p32fail1.xml'>
+ quote types must match
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.9 [32]'
+ ID='o-p32fail2' URI='p32fail2.xml'>
+ quote types must match
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.9 [32]'
+ ID='o-p32fail3' URI='p32fail3.xml'>
+ initial S is required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.9 [32]'
+ ID='o-p32fail4' URI='p32fail4.xml'>
+ quotes are required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.9 [32]'
+ ID='o-p32fail5' URI='p32fail5.xml'>
+ yes or no must be lower case
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3 [39]'
+ ID='o-p39fail1' URI='p39fail1.xml'>
+ start-tag requires end-tag
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3 [39]'
+ ID='o-p39fail2' URI='p39fail2.xml'>
+ end-tag requires start-tag
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3 [39]'
+ ID='o-p39fail3' URI='p39fail3.xml'>
+ XML documents contain one or more elements</TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [23]'
+ ID='o-p39fail4' URI='p39fail4.xml'>
+ XML declarations must be correctly terminated </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='2.8 [23]'
+ ID='o-p39fail5' URI='p39fail5.xml'>
+ XML declarations must be correctly terminated </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [40]'
+ ID='o-p40fail1' URI='p40fail1.xml'>
+ S is required between attributes
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [40]'
+ ID='o-p40fail2' URI='p40fail2.xml'>
+ tags start with names, not nmtokens
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [40]'
+ ID='o-p40fail3' URI='p40fail3.xml'>
+ tags start with names, not nmtokens
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [40]'
+ ID='o-p40fail4' URI='p40fail4.xml'>
+ no space before name
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [41]'
+ ID='o-p41fail1' URI='p41fail1.xml'>
+ quotes are required (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [41]'
+ ID='o-p41fail2' URI='p41fail2.xml'>
+ attribute name is required (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [41]'
+ ID='o-p41fail3' URI='p41fail3.xml'>
+ Eq required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [42]'
+ ID='o-p42fail1' URI='p42fail1.xml'>
+ no space before name
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [42]'
+ ID='o-p42fail2' URI='p42fail2.xml'>
+ cannot end with "/>"
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [42]'
+ ID='o-p42fail3' URI='p42fail3.xml'>
+ no NET (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [43]'
+ ID='o-p43fail1' URI='p43fail1.xml'>
+ no non-comment declarations
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [43]'
+ ID='o-p43fail2' URI='p43fail2.xml'>
+ no conditional sections
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [43]'
+ ID='o-p43fail3' URI='p43fail3.xml'>
+ no conditional sections
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [44]'
+ ID='o-p44fail1' URI='p44fail1.xml'>
+ Illegal space before Empty element tag. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [44]'
+ ID='o-p44fail2' URI='p44fail2.xml'>
+ Illegal space after Empty element tag. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [44]'
+ ID='o-p44fail3' URI='p44fail3.xml'>
+ Illegal comment in Empty element tag. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [44]'
+ ID='o-p44fail4' URI='p44fail4.xml'>
+ Whitespace required between attributes. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.1 [44]'
+ ID='o-p44fail5' URI='p44fail5.xml'>
+ Duplicate attribute name is illegal. </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2 [45]'
+ ID='o-p45fail1' URI='p45fail1.xml'>
+ ELEMENT must be upper case.
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2 [45]'
+ ID='o-p45fail2' URI='p45fail2.xml'>
+ S before contentspec is required.
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2 [45]'
+ ID='o-p45fail3' URI='p45fail3.xml'>
+ only one content spec
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2 [45]'
+ ID='o-p45fail4' URI='p45fail4.xml'>
+ no comments in declarations (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2 [46]'
+ ID='o-p46fail1' URI='p46fail1.xml'>
+ no parens on declared content
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2 [46]'
+ ID='o-p46fail2' URI='p46fail2.xml'>
+ no inclusions (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2 [46]'
+ ID='o-p46fail3' URI='p46fail3.xml'>
+ no exclusions (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2 [46]'
+ ID='o-p46fail4' URI='p46fail4.xml'>
+ no space before occurrence
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2 [46]'
+ ID='o-p46fail5' URI='p46fail5.xml'>
+ single group
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2 [46]'
+ ID='o-p46fail6' URI='p46fail6.xml'>
+ can't be both declared and modeled
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.1 [47]'
+ ID='o-p47fail1' URI='p47fail1.xml'>
+ Invalid operator '|' must match previous operator ','</TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.1 [47]'
+ ID='o-p47fail2' URI='p47fail2.xml'>
+ Illegal character '-' in Element-content model </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.1 [47]'
+ ID='o-p47fail3' URI='p47fail3.xml'>
+ Optional character must follow a name or list </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.1 [47]'
+ ID='o-p47fail4' URI='p47fail4.xml'>
+ Illegal space before optional character</TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.1 [48]'
+ ID='o-p48fail1' URI='p48fail1.xml'>
+ Illegal space before optional character </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.1 [48]'
+ ID='o-p48fail2' URI='p48fail2.xml'>
+ Illegal space before optional character </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.1 [49]'
+ ID='o-p49fail1' URI='p49fail1.xml'>
+ connectors must match </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.1 [50]'
+ ID='o-p50fail1' URI='p50fail1.xml'>
+ connectors must match </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.2 [51]'
+ ID='o-p51fail1' URI='p51fail1.xml'>
+ occurrence on #PCDATA group must be *
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.2 [51]'
+ ID='o-p51fail2' URI='p51fail2.xml'>
+ occurrence on #PCDATA group must be *
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.2 [51]'
+ ID='o-p51fail3' URI='p51fail3.xml'>
+ #PCDATA must come first
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.2 [51]'
+ ID='o-p51fail4' URI='p51fail4.xml'>
+ occurrence on #PCDATA group must be *
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.2 [51]'
+ ID='o-p51fail5' URI='p51fail5.xml'>
+ only '|' connectors
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.2 [51]'
+ ID='o-p51fail6' URI='p51fail6.xml'>
+ Only '|' connectors and occurrence on #PCDATA group must be * </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.2.2 [51]'
+ ID='o-p51fail7' URI='p51fail7.xml'>
+ no nested groups
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3 [52]'
+ ID='o-p52fail1' URI='p52fail1.xml'>
+ A name is required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3 [52]'
+ ID='o-p52fail2' URI='p52fail2.xml'>
+ A name is required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3 [53]'
+ ID='o-p53fail1' URI='p53fail1.xml'>
+ S is required before default
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3 [53]'
+ ID='o-p53fail2' URI='p53fail2.xml'>
+ S is required before type
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3 [53]'
+ ID='o-p53fail3' URI='p53fail3.xml'>
+ type is required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3 [53]'
+ ID='o-p53fail4' URI='p53fail4.xml'>
+ default is required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3 [53]'
+ ID='o-p53fail5' URI='p53fail5.xml'>
+ name is requried
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [54]'
+ ID='o-p54fail1' URI='p54fail1.xml'>
+ don't pass unknown attribute types
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [55]'
+ ID='o-p55fail1' URI='p55fail1.xml'>
+ must be upper case
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [56]'
+ ID='o-p56fail1' URI='p56fail1.xml'>
+ no IDS type
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [56]'
+ ID='o-p56fail2' URI='p56fail2.xml'>
+ no NUMBER type
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [56]'
+ ID='o-p56fail3' URI='p56fail3.xml'>
+ no NAME type
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [56]'
+ ID='o-p56fail4' URI='p56fail4.xml'>
+ no ENTITYS type
+- types must be upper case
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [56]'
+ ID='o-p56fail5' URI='p56fail5.xml'>
+ types must be upper case </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [57]'
+ ID='o-p57fail1' URI='p57fail1.xml'>
+ no keyword for NMTOKEN enumeration
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [58]'
+ ID='o-p58fail1' URI='p58fail1.xml'>
+ at least one value required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [58]'
+ ID='o-p58fail2' URI='p58fail2.xml'>
+ separator must be '|'
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [58]'
+ ID='o-p58fail3' URI='p58fail3.xml'>
+ notations are NAMEs, not NMTOKENs -- note:
+ Leaving the invalid
+ notation undeclared would cause a validating parser to fail without
+ checking the name syntax, so the notation is declared with an
+ invalid name. A parser that reports error positions should report
+ an error at the AttlistDecl on line 6, before reaching the notation
+ declaration.
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [58]'
+ ID='o-p58fail4' URI='p58fail4.xml'>
+ NOTATION must be upper case
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [58]'
+ ID='o-p58fail5' URI='p58fail5.xml'>
+ S after keyword is required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [58]'
+ ID='o-p58fail6' URI='p58fail6.xml'>
+ parentheses are require
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [58]'
+ ID='o-p58fail7' URI='p58fail7.xml'>
+ values are unquoted
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [58]'
+ ID='o-p58fail8' URI='p58fail8.xml'>
+ values are unquoted
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [59]'
+ ID='o-p59fail1' URI='p59fail1.xml'>
+ at least one required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [59]'
+ ID='o-p59fail2' URI='p59fail2.xml'>
+ separator must be ","
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.1 [59]'
+ ID='o-p59fail3' URI='p59fail3.xml'>
+ values are unquoted
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.2 [60]'
+ ID='o-p60fail1' URI='p60fail1.xml'>
+ keywords must be upper case
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.2 [60]'
+ ID='o-p60fail2' URI='p60fail2.xml'>
+ S is required after #FIXED
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.2 [60]'
+ ID='o-p60fail3' URI='p60fail3.xml'>
+ only #FIXED has both keyword and value
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.2 [60]'
+ ID='o-p60fail4' URI='p60fail4.xml'>
+ #FIXED required value
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.3.2 [60]'
+ ID='o-p60fail5' URI='p60fail5.xml'>
+ only one default type
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.4 [61]'
+ ID='o-p61fail1' ENTITIES="parameter" URI='p61fail1.xml'>
+ no other types, including TEMP, which is valid in SGML
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.4 [62]'
+ ID='o-p62fail1' ENTITIES="parameter" URI='p62fail1.xml'>
+ INCLUDE must be upper case
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.4 [62]'
+ ID='o-p62fail2' ENTITIES="parameter" URI='p62fail2.xml'>
+ no spaces in terminating delimiter
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.4 [63]'
+ ID='o-p63fail1' ENTITIES="parameter" URI='p63fail1.xml'>
+ IGNORE must be upper case
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.4 [63]'
+ ID='o-p63fail2' ENTITIES="parameter" URI='p63fail2.xml'>
+ delimiters must be balanced
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.4 [64]'
+ ID='o-p64fail1' ENTITIES="parameter" URI='p64fail1.xml'>
+ section delimiters must balance
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='3.4 [64]'
+ ID='o-p64fail2' ENTITIES="parameter" URI='p64fail2.xml'>
+ section delimiters must balance
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.1 [66]'
+ ID='o-p66fail1' URI='p66fail1.xml'>
+ terminating ';' is required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.1 [66]'
+ ID='o-p66fail2' URI='p66fail2.xml'>
+ no S after '&amp;#'
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.1 [66]'
+ ID='o-p66fail3' URI='p66fail3.xml'>
+ no hex digits in numeric reference
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.1 [66]'
+ ID='o-p66fail4' URI='p66fail4.xml'>
+ only hex digits in hex references
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.1 [66]'
+ ID='o-p66fail5' URI='p66fail5.xml'>
+ no references to non-characters
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.1 [66]'
+ ID='o-p66fail6' URI='p66fail6.xml'>
+ no references to non-characters
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.1 [68]'
+ ID='o-p68fail1' URI='p68fail1.xml'>
+ terminating ';' is required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.1 [68]'
+ ID='o-p68fail2' URI='p68fail2.xml'>
+ no S after '&amp;'
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.1 [68]'
+ ID='o-p68fail3' URI='p68fail3.xml'>
+ no S before ';'
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.1 [69]'
+ ID='o-p69fail1' URI='p69fail1.xml'>
+ terminating ';' is required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.1 [69]'
+ ID='o-p69fail2' URI='p69fail2.xml'>
+ no S after '%'
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.1 [69]'
+ ID='o-p69fail3' URI='p69fail3.xml'>
+ no S before ';'
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [70]'
+ ID='o-p70fail1' URI='p70fail1.xml'>
+ This is neither
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [71]'
+ ID='o-p71fail1' URI='p71fail1.xml'>
+ S is required before EntityDef
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [71]'
+ ID='o-p71fail2' URI='p71fail2.xml'>
+ Entity name is a Name, not an NMToken
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [71]'
+ ID='o-p71fail3' URI='p71fail3.xml'>
+ no S after "&lt;!"
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [71]'
+ ID='o-p71fail4' URI='p71fail4.xml'>
+ S is required after "&lt;!ENTITY"
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [72]'
+ ID='o-p72fail1' URI='p72fail1.xml'>
+ S is required after "&lt;!ENTITY"
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [72]'
+ ID='o-p72fail2' URI='p72fail2.xml'>
+ S is required after '%'
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [72]'
+ ID='o-p72fail3' URI='p72fail3.xml'>
+ S is required after name
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [72]'
+ ID='o-p72fail4' URI='p72fail4.xml'>
+ Entity name is a name, not an NMToken
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [73]'
+ ID='o-p73fail1' URI='p73fail1.xml'>
+ No typed replacement text
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [73]'
+ ID='o-p73fail2' URI='p73fail2.xml'>
+ Only one replacement value
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [73]'
+ ID='o-p73fail3' URI='p73fail3.xml'>
+ No NDataDecl on replacement text
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [73]'
+ ID='o-p73fail4' URI='p73fail4.xml'>
+ Value is required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [73]'
+ ID='o-p73fail5' URI='p73fail5.xml'>
+ No NDataDecl without value
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [74]'
+ ID='o-p74fail1' URI='p74fail1.xml'>
+ no NDataDecls on parameter entities
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [74]'
+ ID='o-p74fail2' URI='p74fail2.xml'>
+ value is required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2 [74]'
+ ID='o-p74fail3' URI='p74fail3.xml'>
+ only one value
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2.2 [75]'
+ ID='o-p75fail1' URI='p75fail1.xml'>
+ S required after "PUBLIC"
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2.2 [75]'
+ ID='o-p75fail2' URI='p75fail2.xml'>
+ S required after "SYSTEM"
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2.2 [75]'
+ ID='o-p75fail3' URI='p75fail3.xml'>
+ S required between literals
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2.2 [75]'
+ ID='o-p75fail4' URI='p75fail4.xml'>
+ "SYSTEM" implies only one literal
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2.2 [75]'
+ ID='o-p75fail5' URI='p75fail5.xml'>
+ only one keyword
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2.2 [75]'
+ ID='o-p75fail6' URI='p75fail6.xml'>
+ "PUBLIC" requires two literals (contrast with SGML)
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2.2 [76]'
+ ID='o-p76fail1' URI='p76fail1.xml'>
+ S is required before "NDATA"
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2.2 [76]'
+ ID='o-p76fail2' URI='p76fail2.xml'>
+ "NDATA" is upper-case
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2.2 [76]'
+ ID='o-p76fail3' URI='p76fail3.xml'>
+ notation name is required
+ </TEST>
+
+ <TEST TYPE='not-wf' SECTIONS='4.2.2 [76]'
+ ID='o-p76fail4' URI='p76fail4.xml'>
+ notation names are Names
+ </TEST>
+
+ <TEST TYPE='error' SECTIONS='2.3, 4.2.2 [11]'
+ ID='o-p11pass1' URI='p11pass1.xml'>
+ system literals may not contain
+ URI fragments
+ </TEST>
+
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail1.xml
new file mode 100644
index 0000000000..ac7935c852
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail1.xml
@@ -0,0 +1,11 @@
+
+<?xml version="1.0"?>
+<doc>
+<a><b><c/></b></a>
+</doc>
+<!-- comment after document element-->
+<?PI after document element?>
+<!-- comment after document element-->
+<?PI after document element?>
+<!-- comment after document element-->
+<?PI after document element?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail2.xml
new file mode 100644
index 0000000000..74a0b57201
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail2.xml
@@ -0,0 +1,10 @@
+<!--bad comment--><?xml version="1.0"?>
+<doc>
+<a><b><c/></b></a>
+</doc>
+<!-- comment after document element-->
+<?PI after document element?>
+<!-- comment after document element-->
+<?PI after document element?>
+<!-- comment after document element-->
+<?PI after document element?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail3.xml
new file mode 100644
index 0000000000..c256e7b7c8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail3.xml
@@ -0,0 +1,7 @@
+<doc/><bad/>
+<!-- comment after document element-->
+<?PI after document element?>
+<!-- comment after document element-->
+<?PI after document element?>
+<!-- comment after document element-->
+<?PI after document element?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail4.xml
new file mode 100644
index 0000000000..b42e00dff1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01fail4.xml
@@ -0,0 +1 @@
+<doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass1.xml
new file mode 100644
index 0000000000..961dfb3de0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass1.xml
@@ -0,0 +1,3 @@
+<doc>
+<a><b><c/></b></a>
+</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass2.xml
new file mode 100644
index 0000000000..4198326a3f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass2.xml
@@ -0,0 +1,23 @@
+<?PI before document element?>
+<!-- comment after document element-->
+<?PI before document element?>
+<!-- comment after document element-->
+<?PI before document element?>
+<!-- comment after document element-->
+<?PI before document element?>
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!ELEMENT c ANY>
+]>
+<doc>
+<a><b><c/></b></a>
+</doc>
+<!-- comment after document element-->
+<?PI after document element?>
+<!-- comment after document element-->
+<?PI after document element?>
+<!-- comment after document element-->
+<?PI after document element?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass3.xml
new file mode 100644
index 0000000000..5ae90852fa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p01pass3.xml
@@ -0,0 +1,9 @@
+<doc>
+<a><b><c/></b></a>
+</doc>
+<!-- comment after document element-->
+<?PI after document element?>
+<!-- comment after document element-->
+<?PI after document element?>
+<!-- comment after document element-->
+<?PI after document element?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail1.xml
new file mode 100644
index 0000000000..cf8f3c2f1a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail1.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail10.xml
new file mode 100644
index 0000000000..c61b59a1e8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail10.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail11.xml
new file mode 100644
index 0000000000..7d3e88a5a8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail11.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail12.xml
new file mode 100644
index 0000000000..3c44f45320
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail12.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail13.xml
new file mode 100644
index 0000000000..e915948396
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail13.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail14.xml
new file mode 100644
index 0000000000..5033bbb5f2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail14.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail15.xml
new file mode 100644
index 0000000000..59055bc246
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail15.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail16.xml
new file mode 100644
index 0000000000..794e6084a8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail16.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail17.xml
new file mode 100644
index 0000000000..d8a1cbae60
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail17.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail18.xml
new file mode 100644
index 0000000000..74794cd64a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail18.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail19.xml
new file mode 100644
index 0000000000..410f1de8a5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail19.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail2.xml
new file mode 100644
index 0000000000..036e54577e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail2.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail20.xml
new file mode 100644
index 0000000000..4d7b8fce62
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail20.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail21.xml
new file mode 100644
index 0000000000..5a57e743d6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail21.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail22.xml
new file mode 100644
index 0000000000..c7c5445991
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail22.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail23.xml
new file mode 100644
index 0000000000..ccc3c240e1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail23.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail24.xml
new file mode 100644
index 0000000000..686a249db8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail24.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail25.xml
new file mode 100644
index 0000000000..8797df6ced
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail25.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail26.xml
new file mode 100644
index 0000000000..eea3791f4f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail26.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail27.xml
new file mode 100644
index 0000000000..0fca1b8f5f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail27.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail28.xml
new file mode 100644
index 0000000000..c5f005d9e2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail28.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail29.xml
new file mode 100644
index 0000000000..5fe733ec97
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail29.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail3.xml
new file mode 100644
index 0000000000..932aabcea2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail3.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail30.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail30.xml
new file mode 100644
index 0000000000..e64f3cbae2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail30.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail31.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail31.xml
new file mode 100644
index 0000000000..4ab577be0e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail31.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail4.xml
new file mode 100644
index 0000000000..59d6113ea8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail4.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail5.xml
new file mode 100644
index 0000000000..6d803b91f9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail5.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail6.xml
new file mode 100644
index 0000000000..766582990a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail6.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail7.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail7.xml
new file mode 100644
index 0000000000..3d56c297b8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail7.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail8.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail8.xml
new file mode 100644
index 0000000000..e9d6fdf062
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail8.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail9.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail9.xml
new file mode 100644
index 0000000000..2bcea07d09
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p02fail9.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail1.xml
new file mode 100644
index 0000000000..7efa07a02b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail1.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail10.xml
new file mode 100644
index 0000000000..13ec67bb36
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail10.xml
@@ -0,0 +1 @@
+ <doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail11.xml
new file mode 100644
index 0000000000..3675a2db37
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail11.xml
@@ -0,0 +1 @@
+ <doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail12.xml
new file mode 100644
index 0000000000..14ad50f205
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail12.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail13.xml
new file mode 100644
index 0000000000..ab56f252a8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail13.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail14.xml
new file mode 100644
index 0000000000..7b6d4abf89
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail14.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail15.xml
new file mode 100644
index 0000000000..36f03c88d0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail15.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail16.xml
new file mode 100644
index 0000000000..083312da41
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail16.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail17.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail17.xml
new file mode 100644
index 0000000000..a9f6b3818f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail17.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail18.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail18.xml
new file mode 100644
index 0000000000..2a6848ac08
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail18.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail19.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail19.xml
new file mode 100644
index 0000000000..7c45027aca
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail19.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail2.xml
new file mode 100644
index 0000000000..7725d65941
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail2.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail20.xml
new file mode 100644
index 0000000000..d0d3283f9c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail20.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail21.xml
new file mode 100644
index 0000000000..a22c457683
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail21.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail22.xml
new file mode 100644
index 0000000000..64020a41e8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail22.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail23.xml
new file mode 100644
index 0000000000..972073ada7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail23.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail24.xml
new file mode 100644
index 0000000000..256cb77fea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail24.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail25.xml
new file mode 100644
index 0000000000..3b1d4dfc48
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail25.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail26.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail26.xml
new file mode 100644
index 0000000000..5e106e781e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail26.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail27.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail27.xml
new file mode 100644
index 0000000000..c0fac5227a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail27.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail28.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail28.xml
new file mode 100644
index 0000000000..6260c8892d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail28.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail29.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail29.xml
new file mode 100644
index 0000000000..81c4d185ec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail29.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail3.xml
new file mode 100644
index 0000000000..3661497004
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail3.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail4.xml
new file mode 100644
index 0000000000..ab56c5bd68
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail4.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail5.xml
new file mode 100644
index 0000000000..4699320d18
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail5.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail7.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail7.xml
new file mode 100644
index 0000000000..8dd1cee186
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail7.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail8.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail8.xml
new file mode 100644
index 0000000000..749a09ccd1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail8.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail9.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail9.xml
new file mode 100644
index 0000000000..88c1d39d08
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03fail9.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03pass1.xml
new file mode 100644
index 0000000000..291f23735d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p03pass1.xml
@@ -0,0 +1,2 @@
+
+ <doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail1.xml
new file mode 100644
index 0000000000..ef0cd005dd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail1.xml
@@ -0,0 +1 @@
+<A@/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail2.xml
new file mode 100644
index 0000000000..2b0623c00e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail2.xml
@@ -0,0 +1 @@
+<A#/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail3.xml
new file mode 100644
index 0000000000..fdb8de602c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04fail3.xml
@@ -0,0 +1 @@
+<A$/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04pass1.xml
new file mode 100644
index 0000000000..9601869d54
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p04pass1.xml
@@ -0,0 +1,6 @@
+<doc>
+<abcdefghijklmnopqrstuvwxyz/>
+<ABCDEFGHIJKLMNOPQRSTUVWXYZ/>
+<A01234567890/>
+<A.-:̀·/>
+</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail1.xml
new file mode 100644
index 0000000000..8e1e68b976
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail1.xml
@@ -0,0 +1 @@
+<0A/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail2.xml
new file mode 100644
index 0000000000..03424ba57a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail2.xml
@@ -0,0 +1 @@
+<.A/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail3.xml
new file mode 100644
index 0000000000..b42dca0bfe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail3.xml
@@ -0,0 +1 @@
+<-A/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail4.xml
new file mode 100644
index 0000000000..2a0c6c1626
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail4.xml
@@ -0,0 +1 @@
+<Ì€A/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail5.xml
new file mode 100644
index 0000000000..888fd18e13
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05fail5.xml
@@ -0,0 +1 @@
+<·A/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05pass1.xml
new file mode 100644
index 0000000000..bba8b489d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p05pass1.xml
@@ -0,0 +1,8 @@
+<doc>
+<A:._-0/>
+<::._-0/>
+<_:._-0/>
+<A/>
+<_/>
+<:/>
+</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06fail1.xml
new file mode 100644
index 0000000000..8e01f85595
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06fail1.xml
@@ -0,0 +1,13 @@
+<!--non-validating processors may pass this instance because they don't check the IDREFS attribute type-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc (a|refs)*>
+<!ELEMENT a EMPTY>
+<!ELEMENT refs EMPTY>
+<!ATTLIST refs refs IDREFS #REQUIRED>
+<!ATTLIST a id ID #REQUIRED>
+]>
+<doc>
+<a id="A1"/><a id="A2"/><a id="A3"/>
+<refs refs=""/>
+</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06pass1.xml
new file mode 100644
index 0000000000..e86b06ba6d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p06pass1.xml
@@ -0,0 +1,15 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (a|refs)*>
+<!ELEMENT a EMPTY>
+<!ELEMENT refs EMPTY>
+<!ATTLIST refs refs IDREFS #REQUIRED>
+<!ATTLIST a id ID #REQUIRED>
+]>
+<doc>
+<a id="A1"/><a id="A2"/><a id="A3"/>
+<refs refs="A1 A2 A3"/>
+<refs refs="A1
+A2 A3"/>
+<refs refs="A1"/>
+</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p07pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p07pass1.xml
new file mode 100644
index 0000000000..5ebf6fa91c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p07pass1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att (0|35a|A|-a|:a|a:|.|_a) #IMPLIED>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail1.xml
new file mode 100644
index 0000000000..8931688d0d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail1.xml
@@ -0,0 +1,10 @@
+<!--note: non-validating parsers may accept this document-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc (A*)>
+<!ELEMENT A EMPTY>
+<!ATTLIST A att NMTOKENS #IMPLIED>
+]>
+<doc>
+<A att=""/>
+</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail2.xml
new file mode 100644
index 0000000000..c0621d71d2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08fail2.xml
@@ -0,0 +1,10 @@
+<!--note: non-validating parsers may accept this document-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc (A*)>
+<!ELEMENT A EMPTY>
+<!ATTLIST A att NMTOKENS #IMPLIED>
+]>
+<doc>
+<A att="abc / def"/>
+</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08pass1.xml
new file mode 100644
index 0000000000..a218d1e959
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p08pass1.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (A*)>
+<!ELEMENT A EMPTY>
+<!ATTLIST A att NMTOKENS #IMPLIED>
+]>
+<doc>
+<A att="abc"/><A att="abc def . :"/><A att="
+abc
+def
+"/>
+</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.dtd
new file mode 100644
index 0000000000..f1121119bd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT doc EMPTY>
+<!ENTITY % ent1 "asdf%">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.xml
new file mode 100644
index 0000000000..7bdda60f82
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p09fail1.dtd">
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.dtd
new file mode 100644
index 0000000000..f0aa958566
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT doc EMPTY>
+<!ENTITY % ent1 "asdf&">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.xml
new file mode 100644
index 0000000000..f8b1d14222
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail2.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p09fail2.dtd">
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail3.xml
new file mode 100644
index 0000000000..f6fbe63ce6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail3.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ENTITY % ent1 "asdf&#65">
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail4.xml
new file mode 100644
index 0000000000..3ad9a69b93
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail4.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ENTITY % ent1 'a">
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail5.xml
new file mode 100644
index 0000000000..efb5be2c8a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09fail5.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ENTITY % ent1 "a'>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.dtd
new file mode 100644
index 0000000000..3834889b35
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.dtd
@@ -0,0 +1,5 @@
+<!ELEMENT doc EMPTY>
+<!ENTITY % ent1 "">
+<!ENTITY ent2 "text2">
+<!ENTITY % ent3 "<!-- <!DOCTYPE <!ELEMENT <? '''&#34;&ent2; %ent1;">
+<!ENTITY % ent4 '""&#x27;&#39;"'>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.xml
new file mode 100644
index 0000000000..b10c9ed9be
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p09pass1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p09pass1.dtd">
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail1.xml
new file mode 100644
index 0000000000..877b04083e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail1.xml
@@ -0,0 +1 @@
+<doc a="1 < 2"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail2.xml
new file mode 100644
index 0000000000..191b8eb78b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail2.xml
@@ -0,0 +1 @@
+<doc a="1 &"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail3.xml
new file mode 100644
index 0000000000..2f84129f28
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10fail3.xml
@@ -0,0 +1 @@
+<doc a='asd"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10pass1.xml
new file mode 100644
index 0000000000..101d89156e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p10pass1.xml
@@ -0,0 +1,6 @@
+<doc>
+<A a="asdf>'&#34;>
+asdf
+ ?>%"/>
+<A a='"">&#39;&#34;'/>
+</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail1.xml
new file mode 100644
index 0000000000..50ff72fd62
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail1.xml
@@ -0,0 +1,7 @@
+<!--Inability to resolve a notation should not be reported as an error-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION not1 SYSTEM 'a">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail2.xml
new file mode 100644
index 0000000000..d17912b411
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11fail2.xml
@@ -0,0 +1,7 @@
+<!--Inability to resolve a notation should not be reported as an error-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION not1 SYSTEM """>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11pass1.xml
new file mode 100644
index 0000000000..f00024879d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p11pass1.xml
@@ -0,0 +1,11 @@
+<!--Inability to resolve a notation should not be reported as an error-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION not1 SYSTEM "a%a&b&#0<!ELEMENT<!--<?</>?>/\''">
+<!NOTATION not2 SYSTEM 'a
+ b"""'>
+<!NOTATION not3 SYSTEM "">
+<!NOTATION not4 SYSTEM ''>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail1.xml
new file mode 100644
index 0000000000..5b6b2d6150
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail1.xml
@@ -0,0 +1,7 @@
+<!--Inability to resolve a notation should not be reported as an error-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION not1 PUBLIC '"'>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail2.xml
new file mode 100644
index 0000000000..ed0e3fb128
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail2.xml
@@ -0,0 +1,7 @@
+<!--Inability to resolve a notation should not be reported as an error-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION not1 PUBLIC "\\">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail3.xml
new file mode 100644
index 0000000000..a24fe8bc45
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail3.xml
@@ -0,0 +1,8 @@
+<!--Inability to resolve a notation should not be reported as an error-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ENTITY x "x">
+<!NOTATION not1 PUBLIC "&x;">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail4.xml
new file mode 100644
index 0000000000..9062d6cdc5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail4.xml
@@ -0,0 +1,7 @@
+<!--Inability to resolve a notation should not be reported as an error-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION not1 PUBLIC ">">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail5.xml
new file mode 100644
index 0000000000..3f3169c7e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail5.xml
@@ -0,0 +1,7 @@
+<!--Inability to resolve a notation should not be reported as an error-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION not1 PUBLIC "<">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail6.xml
new file mode 100644
index 0000000000..d1825c3803
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail6.xml
@@ -0,0 +1,7 @@
+<!--Inability to resolve a notation should not be reported as an error-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION not1 PUBLIC "&amp;">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail7.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail7.xml
new file mode 100644
index 0000000000..cd2b67dda9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12fail7.xml
@@ -0,0 +1,7 @@
+<!--Inability to resolve a notation should not be reported as an error-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION not1 PUBLIC " ">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12pass1.xml
new file mode 100644
index 0000000000..a31053e1e9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p12pass1.xml
@@ -0,0 +1,10 @@
+<!--Inability to resolve a notation should not be reported as an error-->
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION not1 PUBLIC "a b
+cdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ">
+<!NOTATION not2 PUBLIC '0123456789-()+,./:=?;!*#@$_%'>
+<!NOTATION not3 PUBLIC "0123456789-()+,.'/:=?;!*#@$_%">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail1.xml
new file mode 100644
index 0000000000..359a8d6505
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail1.xml
@@ -0,0 +1 @@
+<doc>< </doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail2.xml
new file mode 100644
index 0000000000..e6f4d52d78
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail2.xml
@@ -0,0 +1 @@
+<doc>& </doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail3.xml
new file mode 100644
index 0000000000..3fa6bc5791
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14fail3.xml
@@ -0,0 +1 @@
+<doc>a]]>b</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14pass1.xml
new file mode 100644
index 0000000000..7312edd99d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p14pass1.xml
@@ -0,0 +1 @@
+<doc>a%b%&lt;/doc>&#60;/doc>]]&lt;&amp;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail1.xml
new file mode 100644
index 0000000000..d3e444551b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail1.xml
@@ -0,0 +1,2 @@
+<!--a--->
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail2.xml
new file mode 100644
index 0000000000..ccb5560db2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail2.xml
@@ -0,0 +1,2 @@
+<!-- -- -- -->
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail3.xml
new file mode 100644
index 0000000000..d4cb48f6b3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15fail3.xml
@@ -0,0 +1,2 @@
+<!-- --- -->
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15pass1.xml
new file mode 100644
index 0000000000..e61a0dd56d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p15pass1.xml
@@ -0,0 +1,8 @@
+<!--a
+<!DOCTYPE
+<?-
+]]>-<[ CDATA [
+"- -'-
+-<doc>-->
+<!---->
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail1.xml
new file mode 100644
index 0000000000..9e75452eec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail1.xml
@@ -0,0 +1,3 @@
+<?pitarget?>
+<?xml?>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail2.xml
new file mode 100644
index 0000000000..c5fda86589
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail2.xml
@@ -0,0 +1,2 @@
+<??>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail3.xml
new file mode 100644
index 0000000000..87dc351d0c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16fail3.xml
@@ -0,0 +1,2 @@
+<?pitarget+++?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass1.xml
new file mode 100644
index 0000000000..45adbc081a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass1.xml
@@ -0,0 +1,7 @@
+<?pitarget?>
+<?xmla <!DOCTYPE <[ CDATA [</doc> &a%b&#c?>
+<?pitarget ...?>
+<?pitarget
+ ?>
+<?pitarget > ?>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass2.xml
new file mode 100644
index 0000000000..e3fc5235da
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass2.xml
@@ -0,0 +1,2 @@
+<?pitarget '?>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass3.xml
new file mode 100644
index 0000000000..b7b41ab975
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p16pass3.xml
@@ -0,0 +1,2 @@
+<?pitarget "?>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail1.xml
new file mode 100644
index 0000000000..823e31adae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail1.xml
@@ -0,0 +1 @@
+<doc><![ CDATA[a]]></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail2.xml
new file mode 100644
index 0000000000..7909df9248
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail2.xml
@@ -0,0 +1 @@
+<doc><![CDATA [a]]></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail3.xml
new file mode 100644
index 0000000000..b79e04585b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18fail3.xml
@@ -0,0 +1,5 @@
+<doc>
+<![CDATA[
+<![CDATA[XML doesn't allow CDATA sections to nest]]>
+]]>
+</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18pass1.xml
new file mode 100644
index 0000000000..131914569b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p18pass1.xml
@@ -0,0 +1,5 @@
+<doc><![CDATA[<doc<!DOCTYPE&a%b&#c]] >] ]> ]]]><![CDATA[]]>
+<![CDATA[
+<![CDATA[
+]]>
+</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail1.xml
new file mode 100644
index 0000000000..b3908a64f9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail1.xml
@@ -0,0 +1,3 @@
+
+<?xml version="1.0"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail2.xml
new file mode 100644
index 0000000000..81a24fb2f2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22fail2.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+]>
+<?xml version="1.0"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass1.xml
new file mode 100644
index 0000000000..e79b34a129
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass1.xml
@@ -0,0 +1 @@
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass2.xml
new file mode 100644
index 0000000000..97e725f5ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass2.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass3.xml
new file mode 100644
index 0000000000..f6da3d1b5c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass3.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!--comment--> <?pi?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass4.xml
new file mode 100644
index 0000000000..2b3d9241f9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass4.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!--comment--> <?pi?>
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+]>
+
+<!--comment--> <?pi?>
+
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass5.xml
new file mode 100644
index 0000000000..a5dddbb996
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass5.xml
@@ -0,0 +1,9 @@
+<!--comment--> <?pi?>
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+]>
+
+<!--comment--> <?pi?>
+
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass6.xml
new file mode 100644
index 0000000000..ecb9de953a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p22pass6.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?><!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+]><doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail1.xml
new file mode 100644
index 0000000000..41d8cbaa27
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail1.xml
@@ -0,0 +1,2 @@
+<?XML version="1.0"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail2.xml
new file mode 100644
index 0000000000..7ce91fecbe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail2.xml
@@ -0,0 +1,2 @@
+<?xml encoding="UTF-8"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail3.xml
new file mode 100644
index 0000000000..470fc91e93
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail3.xml
@@ -0,0 +1,2 @@
+<?xml encoding="UTF-8" version="1.0"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail4.xml
new file mode 100644
index 0000000000..7a403017af
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail4.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" standalone="yes" encoding="UTF-8"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail5.xml
new file mode 100644
index 0000000000..c532727c49
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23fail5.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0">
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass1.xml
new file mode 100644
index 0000000000..97e725f5ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass1.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass2.xml
new file mode 100644
index 0000000000..22545bc26e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass2.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass3.xml
new file mode 100644
index 0000000000..a55ef5dacf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass3.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" standalone="yes"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass4.xml
new file mode 100644
index 0000000000..220506d16e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p23pass4.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail1.xml
new file mode 100644
index 0000000000..381e7ef6c6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail1.xml
@@ -0,0 +1,2 @@
+<?xml version = '1.0"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail2.xml
new file mode 100644
index 0000000000..5b87b6cb1d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24fail2.xml
@@ -0,0 +1,2 @@
+<?xml version = "1.0'?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass1.xml
new file mode 100644
index 0000000000..97e725f5ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass1.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass2.xml
new file mode 100644
index 0000000000..b8b485f091
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass2.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0'?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass3.xml
new file mode 100644
index 0000000000..da4603bfce
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass3.xml
@@ -0,0 +1,8 @@
+<?xml
+
+
+version
+=
+'1.0'
+?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass4.xml
new file mode 100644
index 0000000000..68eed03929
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p24pass4.xml
@@ -0,0 +1,2 @@
+<?xml version = '1.0'?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25fail1.xml
new file mode 100644
index 0000000000..c39c0afaf3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25fail1.xml
@@ -0,0 +1,2 @@
+<?xml version <!--bad comment--> ="1.0"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass1.xml
new file mode 100644
index 0000000000..97e725f5ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass1.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass2.xml
new file mode 100644
index 0000000000..2bc303bda4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p25pass2.xml
@@ -0,0 +1,8 @@
+<?xml version
+
+
+=
+
+
+"1.0"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail1.xml
new file mode 100644
index 0000000000..d96ad45b98
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail1.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0?"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail2.xml
new file mode 100644
index 0000000000..6fcc7f4581
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26fail2.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0^"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26pass1.xml
new file mode 100644
index 0000000000..19cc9341e1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p26pass1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!--because we are testing conformace to XML 1.0, there can be no
+ exhaustive tests of the VersionNum production. The only
+ VersionNum a 1.0-compliant processor is required to pass
+ is "1.0" -->
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27fail1.xml
new file mode 100644
index 0000000000..01ee913a66
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27fail1.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+&#32;
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass1.xml
new file mode 100644
index 0000000000..ce440fd1e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!--Non-terminal Misc only appears as Misc*, so we cannot test the fact
+ that Misc must match exactly one comment, PI, or S-->
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass2.xml
new file mode 100644
index 0000000000..fd422a6561
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass2.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<?pi?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass3.xml
new file mode 100644
index 0000000000..9df310f2f1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass3.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+
+
+
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass4.xml
new file mode 100644
index 0000000000..39438727ab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p27pass4.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?><?pi?>
+
+
+
+<!--comment-->
+<?pi?>
+
+
+
+<!--comment-->
+<?pi?><doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28fail1.xml
new file mode 100644
index 0000000000..bac9e37870
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28fail1.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+<doc/>
+]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass1.xml
new file mode 100644
index 0000000000..8e3cba39ab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass1.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE
+
+doc
+
+[
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass2.xml
new file mode 100644
index 0000000000..8e3cba39ab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass2.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE
+
+doc
+
+[
+<!ELEMENT doc EMPTY>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass3.xml
new file mode 100644
index 0000000000..a51e7c4ccf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass3.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY % eldecl "<!ELEMENT doc EMPTY>">
+%eldecl;
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.dtd
new file mode 100644
index 0000000000..370bb88a5b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.dtd
@@ -0,0 +1 @@
+<!ELEMENT doc EMPTY>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.xml
new file mode 100644
index 0000000000..c464d87319
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass4.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p28pass4.dtd">
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.dtd
new file mode 100644
index 0000000000..90980dde31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.dtd
@@ -0,0 +1,2 @@
+%rootdecl;
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.xml
new file mode 100644
index 0000000000..ac100a4cb3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p28pass5.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc SYSTEM "p28pass5.dtd"[
+<!--comment-->
+<!ENTITY % rootdecl "<!ELEMENT doc (a)>">
+<!ELEMENT a EMPTY>
+]>
+<doc><a/></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29fail1.xml
new file mode 100644
index 0000000000..75c549f218
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29fail1.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc EMPTY>
+<!DUNNO should not pass unknown declaration types>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29pass1.xml
new file mode 100644
index 0000000000..ce8cc4bca3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p29pass1.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE doc [
+<?Pi?><!--comment-->
+<!ELEMENT doc EMPTY>
+<?Pi?><!--comment-->
+<!ATTLIST doc att CDATA #IMPLIED>
+<?Pi?><!--comment-->
+<!ENTITY % ent "">
+<?Pi?><!--comment-->
+<!NOTATION not PUBLIC "some notation">
+<?Pi?><!--comment-->
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.dtd
new file mode 100644
index 0000000000..fa4dcd7297
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.dtd
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!ELEMENT doc EMPTY>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.xml
new file mode 100644
index 0000000000..0e7cf9e245
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30fail1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p30fail1.dtd">
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.dtd
new file mode 100644
index 0000000000..8c07c46d95
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.dtd
@@ -0,0 +1,3 @@
+<!ELEMENT doc EMPTY>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.xml
new file mode 100644
index 0000000000..f3abf3a936
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p30pass1.dtd">
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.dtd
new file mode 100644
index 0000000000..65ebd8e46b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.dtd
@@ -0,0 +1,2 @@
+<?xml encoding="UTF-8"?>
+<!ELEMENT doc EMPTY>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.xml
new file mode 100644
index 0000000000..abfd4f6fc7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p30pass2.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p30pass2.dtd">
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.dtd
new file mode 100644
index 0000000000..fe121d1f94
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.dtd
@@ -0,0 +1,4 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.xml
new file mode 100644
index 0000000000..471df835ba
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31fail1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p31fail1.dtd">
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.dtd
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.dtd
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.xml
new file mode 100644
index 0000000000..0dd81ce683
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p31pass1.dtd" [<!ELEMENT doc EMPTY>]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.dtd
new file mode 100644
index 0000000000..3d619ab4f2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.dtd
@@ -0,0 +1,11 @@
+<![INCLUDE[
+<!ENTITY % rootel "<!ELEMENT doc EMPTY>">
+]]>
+
+%rootel;
+
+<!ATTLIST doc att CDATA #IMPLIED>
+
+<![IGNORE[
+<!ELEMENT doc (a)>
+]]> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.xml
new file mode 100644
index 0000000000..d61300915f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p31pass2.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p31pass2.dtd">
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail1.xml
new file mode 100644
index 0000000000..bdc7992d94
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail1.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" standalone='yes"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail2.xml
new file mode 100644
index 0000000000..1c1c23d915
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail2.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" standalone="yes'?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail3.xml
new file mode 100644
index 0000000000..7c3415bf03
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail3.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"standalone="yes"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail4.xml
new file mode 100644
index 0000000000..15ab0fdbf5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail4.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" standalone=yes?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail5.xml
new file mode 100644
index 0000000000..be0f8e581f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32fail5.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" standalone="YES"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass1.xml
new file mode 100644
index 0000000000..a55ef5dacf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass1.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" standalone="yes"?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass2.xml
new file mode 100644
index 0000000000..173a58144c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p32pass2.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" standalone='no'?>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail1.xml
new file mode 100644
index 0000000000..e06f60eaeb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail1.xml
@@ -0,0 +1 @@
+<doc>content \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail2.xml
new file mode 100644
index 0000000000..44f3153796
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail2.xml
@@ -0,0 +1 @@
+<doc>content</a></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail3.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail3.xml
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail4.xml
new file mode 100644
index 0000000000..d0bf424922
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail4.xml
@@ -0,0 +1 @@
+<?xml version="1.0">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail5.xml
new file mode 100644
index 0000000000..f5bb421de6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39fail5.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0">
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+]>
+
+<!--comment-->
+<?pi?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass1.xml
new file mode 100644
index 0000000000..ff29a91370
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass1.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass2.xml
new file mode 100644
index 0000000000..5b47e63d1a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p39pass2.xml
@@ -0,0 +1 @@
+<doc>content</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail1.xml
new file mode 100644
index 0000000000..56b5da2084
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail1.xml
@@ -0,0 +1 @@
+<doc att="val"att2="val2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail2.xml
new file mode 100644
index 0000000000..8af5b22c71
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail2.xml
@@ -0,0 +1 @@
+<3notname></3notname> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail3.xml
new file mode 100644
index 0000000000..7da893b762
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail3.xml
@@ -0,0 +1 @@
+<3notname></notname> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail4.xml
new file mode 100644
index 0000000000..47e3460674
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40fail4.xml
@@ -0,0 +1 @@
+< doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass1.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass1.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass2.xml
new file mode 100644
index 0000000000..eb9f65aff5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass2.xml
@@ -0,0 +1,3 @@
+<doc
+
+></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass3.xml
new file mode 100644
index 0000000000..a26c13ee85
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass3.xml
@@ -0,0 +1 @@
+<doc att="val"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass4.xml
new file mode 100644
index 0000000000..c5670e0aaa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p40pass4.xml
@@ -0,0 +1,3 @@
+<doc att="val" att2="val2"
+att3="val3"
+></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail1.xml
new file mode 100644
index 0000000000..15a5085546
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail1.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc att (val|val2)>
+]>
+<doc att=val></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail2.xml
new file mode 100644
index 0000000000..758ec17a4d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail2.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc att (val|val2)>
+]>
+<doc val></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail3.xml
new file mode 100644
index 0000000000..d480150cf4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41fail3.xml
@@ -0,0 +1 @@
+<doc att "val"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass1.xml
new file mode 100644
index 0000000000..a26c13ee85
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass1.xml
@@ -0,0 +1 @@
+<doc att="val"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass2.xml
new file mode 100644
index 0000000000..762a0a1005
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p41pass2.xml
@@ -0,0 +1,3 @@
+<doc att
+ =
+ "val"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail1.xml
new file mode 100644
index 0000000000..2747d6bf47
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail1.xml
@@ -0,0 +1 @@
+<doc></ doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail2.xml
new file mode 100644
index 0000000000..5afea96d50
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail2.xml
@@ -0,0 +1 @@
+<doc></doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail3.xml
new file mode 100644
index 0000000000..18304688e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42fail3.xml
@@ -0,0 +1 @@
+<doc/doc/ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass1.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass1.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass2.xml
new file mode 100644
index 0000000000..e8153c5aae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p42pass2.xml
@@ -0,0 +1,2 @@
+<doc></doc
+> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail1.xml
new file mode 100644
index 0000000000..1098246ce5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail1.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE elem
+[
+<!ELEMENT elem (#PCDATA|elem)*>
+<!ENTITY ent "<elem>CharData</elem>">
+]>
+<elem>
+<!ENTITY badent "bad">
+</elem>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail2.xml
new file mode 100644
index 0000000000..82dd031d99
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail2.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE elem
+[
+<!ELEMENT elem (#PCDATA|elem)*>
+<!ENTITY ent "<elem>CharData</elem>">
+]>
+<elem>
+<![IGNORE[This was valid in SGML, but not XML]]>
+</elem>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail3.xml
new file mode 100644
index 0000000000..20ff835f5e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43fail3.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE elem
+[
+<!ELEMENT elem (#PCDATA|elem)*>
+<!ENTITY ent "<elem>CharData</elem>">
+]>
+<elem>
+<![INCLUDE[This was valid in SGML, but not XML]]>
+</elem>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43pass1.xml
new file mode 100644
index 0000000000..b3991f1b11
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p43pass1.xml
@@ -0,0 +1,27 @@
+<!DOCTYPE elem
+[
+<!ELEMENT elem (#PCDATA|elem)*>
+<!ENTITY ent "<elem>CharData</elem>">
+]>
+<elem>
+CharData&#32;
+<!--comment-->
+<![CDATA[
+<elem>
+CharData&#32;
+<!--comment-->
+<?pi?>&ent;&quot;
+CharData
+</elem>
+]]>
+<![CDATA[
+<elem>
+CharData&#32;
+<!--comment-->
+<?pi?>&ent;&quot;
+CharData
+</elem>
+]]>
+<?pi?>&ent;&quot;
+CharData
+</elem>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail1.xml
new file mode 100644
index 0000000000..a8c16c0d82
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail1.xml
@@ -0,0 +1 @@
+< doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail2.xml
new file mode 100644
index 0000000000..d433758dae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail2.xml
@@ -0,0 +1 @@
+<doc/ > \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail3.xml
new file mode 100644
index 0000000000..825345e13a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail3.xml
@@ -0,0 +1 @@
+<doc --bad comment--/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail4.xml
new file mode 100644
index 0000000000..78d699ee1a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail4.xml
@@ -0,0 +1 @@
+<doc att="val"att2="val2"/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail5.xml
new file mode 100644
index 0000000000..1384b130f9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44fail5.xml
@@ -0,0 +1 @@
+<doc att="val" att="val"/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass1.xml
new file mode 100644
index 0000000000..ff29a91370
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass1.xml
@@ -0,0 +1 @@
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass2.xml
new file mode 100644
index 0000000000..1ea50d325c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass2.xml
@@ -0,0 +1 @@
+<doc att="val"/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass3.xml
new file mode 100644
index 0000000000..3852c72fd7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass3.xml
@@ -0,0 +1,4 @@
+<doc att="val"
+
+
+/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass4.xml
new file mode 100644
index 0000000000..86095d112a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass4.xml
@@ -0,0 +1,3 @@
+<doc
+
+/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass5.xml
new file mode 100644
index 0000000000..0dd0659988
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p44pass5.xml
@@ -0,0 +1,2 @@
+<doc att="val"
+att2="val2" att3="val3"/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail1.xml
new file mode 100644
index 0000000000..4f92984250
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail1.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!element doc EMPTY>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail2.xml
new file mode 100644
index 0000000000..f61104fb50
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail2.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc(#PCDATA)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail3.xml
new file mode 100644
index 0000000000..c8b30ef4b3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail3.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ELEMENT (doc|a) (#PCDATA)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail4.xml
new file mode 100644
index 0000000000..c988b2eedf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45fail4.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA) --bad comment-->
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45pass1.xml
new file mode 100644
index 0000000000..1589e836ee
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p45pass1.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT
+a ANY
+>
+<!ELEMENT c (#PCDATA)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail1.xml
new file mode 100644
index 0000000000..b39d663ab7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a (#EMPTY)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail2.xml
new file mode 100644
index 0000000000..9ad7be759a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail2.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a (#PCDATA) +(doc)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail3.xml
new file mode 100644
index 0000000000..a64a2ae0a5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail3.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a (#PCDATA) -(doc)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail4.xml
new file mode 100644
index 0000000000..32bc248dc6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail4.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a (doc) +>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail5.xml
new file mode 100644
index 0000000000..f423e4b855
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail5.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a (#PCDATA)(doc)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail6.xml
new file mode 100644
index 0000000000..2d1705fb23
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46fail6.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a EMPTY (doc)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46pass1.xml
new file mode 100644
index 0000000000..3578370fa9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p46pass1.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a EMPTY>
+<!ELEMENT b (#PCDATA)*>
+<!ELEMENT c (a,b)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail1.xml
new file mode 100644
index 0000000000..fd803ec7d6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a (doc,a?|a?)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail2.xml
new file mode 100644
index 0000000000..d9765c4880
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail2.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a (doc)->
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail3.xml
new file mode 100644
index 0000000000..96cf0d7fdd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail3.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a *(doc)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail4.xml
new file mode 100644
index 0000000000..c44c1423dd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47fail4.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a (doc) ?>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47pass1.xml
new file mode 100644
index 0000000000..fe21251e89
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p47pass1.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a (doc,a?)>
+<!ELEMENT b (doc|a)>
+<!ELEMENT c (a,b)?>
+<!ELEMENT d (a|b)? >
+<!ELEMENT e (a,b)* >
+<!ELEMENT f (a,b)+ >
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail1.xml
new file mode 100644
index 0000000000..cf4bf9c2af
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a (doc *)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail2.xml
new file mode 100644
index 0000000000..8d3bdfd779
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48fail2.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a ((doc|a?) +)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48pass1.xml
new file mode 100644
index 0000000000..0345d436e2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p48pass1.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a (doc)>
+<!ELEMENT b ((doc|a?))>
+<!ELEMENT c ((a,b))>
+<!ELEMENT d (doc*)>
+<!ELEMENT e (doc+)>
+<!ELEMENT f (doc?)>
+<!ELEMENT g ((a,b)*)>
+<!ELEMENT h ((a,b)?)>
+<!ELEMENT i ((a,b)+)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49fail1.xml
new file mode 100644
index 0000000000..53ac58dfcc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49fail1.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a (doc|a?,a?)>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49pass1.xml
new file mode 100644
index 0000000000..eea612e0b2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p49pass1.xml
@@ -0,0 +1,15 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!--NOTE: XML doesn't specify whether this is a choice or a seq-->
+<!ELEMENT a (doc?)>
+<!ELEMENT b (doc|a)>
+<!ELEMENT c (
+doc
+|
+a
+|
+c?
+)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50fail1.xml
new file mode 100644
index 0000000000..62ad5453d2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50fail1.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!ELEMENT a (doc,a?|a?)>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50pass1.xml
new file mode 100644
index 0000000000..3873b2d671
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p50pass1.xml
@@ -0,0 +1,15 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc ANY>
+<!--NOTE: XML doesn't specify whether this is a choice or a seq-->
+<!ELEMENT a (doc?)>
+<!ELEMENT b (doc,a)>
+<!ELEMENT c (
+doc
+,
+a
+,
+c?
+)>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail1.xml
new file mode 100644
index 0000000000..f73af29fd7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail1.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)?>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail2.xml
new file mode 100644
index 0000000000..3cb6f3f615
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail2.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)+>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail3.xml
new file mode 100644
index 0000000000..a7f27079b7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail3.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ELEMENT a (doc|#PCDATA)*>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail4.xml
new file mode 100644
index 0000000000..22cc3e0897
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail4.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ELEMENT a (#PCDATA|doc)?>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail5.xml
new file mode 100644
index 0000000000..ed00d622a8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail5.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ELEMENT a (#PCDATA|doc,a?)*>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail6.xml
new file mode 100644
index 0000000000..78bc1f5c4b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail6.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ELEMENT a (#PCDATA,doc,a?)*>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail7.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail7.xml
new file mode 100644
index 0000000000..8e68029652
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51fail7.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ELEMENT a (#PCDATA|(doc|a))*>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51pass1.xml
new file mode 100644
index 0000000000..4f4e64f45c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p51pass1.xml
@@ -0,0 +1,16 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ELEMENT a (#PCDATA|doc)*>
+<!ELEMENT b (
+#PCDATA
+|
+doc
+|
+a
+|
+b
+)*>
+<!ELEMENT c (#PCDATA)*>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail1.xml
new file mode 100644
index 0000000000..335920f4e1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST >
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail2.xml
new file mode 100644
index 0000000000..61d08b0498
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52fail2.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST>
+]>
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52pass1.xml
new file mode 100644
index 0000000000..9ee428409f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p52pass1.xml
@@ -0,0 +1,23 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA|a|b|c|d)*>
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+<!ELEMENT d EMPTY>
+<!ATTLIST a>
+<!ATTLIST b >
+<!ATTLIST c att CDATA #IMPLIED>
+<!ATTLIST d att CDATA #IMPLIED>
+<!ATTLIST
+c att CDATA
+ #IMPLIED
+att2
+ CDATA
+ "second declaration is OK"
+att2 CDATA
+ #REQUIRED
+ >
+<!ATTLIST d>
+]>
+<doc><c/><c att2="test"/></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail1.xml
new file mode 100644
index 0000000000..d4db095928
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att CDATA#IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail2.xml
new file mode 100644
index 0000000000..59af7c76ed
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail2.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att(a|b) #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail3.xml
new file mode 100644
index 0000000000..6d1a84621e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail3.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail4.xml
new file mode 100644
index 0000000000..87fa394a65
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail4.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att CDATA>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail5.xml
new file mode 100644
index 0000000000..b58ace2a0c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53fail5.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc (a|b) #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53pass1.xml
new file mode 100644
index 0000000000..362cf62c48
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p53pass1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att CDATA #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54fail1.xml
new file mode 100644
index 0000000000..add01fed22
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att DUNNO #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54pass1.xml
new file mode 100644
index 0000000000..23878614f8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p54pass1.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (a|b|c)*>
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+<!ATTLIST a att CDATA #IMPLIED>
+<!ATTLIST b att NMTOKENS #IMPLIED>
+<!ATTLIST c att (a|b) #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55fail1.xml
new file mode 100644
index 0000000000..e9dbed1b06
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att cdata #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55pass1.xml
new file mode 100644
index 0000000000..362cf62c48
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p55pass1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att CDATA #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail1.xml
new file mode 100644
index 0000000000..c4ea6972f7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att IDS #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail2.xml
new file mode 100644
index 0000000000..98409e1377
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail2.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att NUMBER #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail3.xml
new file mode 100644
index 0000000000..612800eeb7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail3.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att NAME #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail4.xml
new file mode 100644
index 0000000000..e195dc6d25
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail4.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att ENTITYS #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail5.xml
new file mode 100644
index 0000000000..6430c5687a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56fail5.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att id #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56pass1.xml
new file mode 100644
index 0000000000..b7bbad4171
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p56pass1.xml
@@ -0,0 +1,19 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (a|b|c|d|e|f|g)*>
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+<!ELEMENT d EMPTY>
+<!ELEMENT e EMPTY>
+<!ELEMENT f EMPTY>
+<!ELEMENT g EMPTY>
+<!ATTLIST a att ID #IMPLIED>
+<!ATTLIST b att IDREF #IMPLIED>
+<!ATTLIST c att IDREFS #IMPLIED>
+<!ATTLIST d att ENTITY #IMPLIED>
+<!ATTLIST e att ENTITIES #IMPLIED>
+<!ATTLIST f att NMTOKEN #IMPLIED>
+<!ATTLIST g att NMTOKENS #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57fail1.xml
new file mode 100644
index 0000000000..139c7e84b1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att NMTOKEN (a|b) #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57pass1.xml
new file mode 100644
index 0000000000..89e12faeda
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p57pass1.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (a|b)*>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!NOTATION a SYSTEM "a">
+<!ATTLIST a att (a|b) #IMPLIED>
+<!ATTLIST b att NOTATION (a|b) #IMPLIED>
+<!NOTATION b SYSTEM "b">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail1.xml
new file mode 100644
index 0000000000..aa3f5a2f11
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail1.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION a SYSTEM "a">
+<!NOTATION b SYSTEM "b">
+<!ATTLIST doc att NOTATION () #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail2.xml
new file mode 100644
index 0000000000..ef548cd83a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail2.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION a SYSTEM "a">
+<!NOTATION b SYSTEM "b">
+<!ATTLIST doc att NOTATION (a,b) #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail3.xml
new file mode 100644
index 0000000000..1156eadacc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail3.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION a SYSTEM "a">
+<!--should fail at this AttlistDecl, before NOTATION decl-->
+<!ATTLIST doc att NOTATION (a|0b) #IMPLIED>
+
+
+
+<!NOTATION 0b SYSTEM "0b">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail4.xml
new file mode 100644
index 0000000000..d876dc9d16
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail4.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION a SYSTEM "a">
+<!NOTATION b SYSTEM "b">
+<!ATTLIST doc att notation (a|b) #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail5.xml
new file mode 100644
index 0000000000..cd7b3525d2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail5.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION a SYSTEM "a">
+<!NOTATION b SYSTEM "b">
+<!ATTLIST doc att NOTATION(a|b) #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail6.xml
new file mode 100644
index 0000000000..b4675843b2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail6.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION a SYSTEM "a">
+<!ATTLIST doc att NOTATION a #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail7.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail7.xml
new file mode 100644
index 0000000000..99455f8f72
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail7.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION a SYSTEM "a">
+<!ATTLIST doc att NOTATION "a" #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail8.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail8.xml
new file mode 100644
index 0000000000..2bff43b238
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58fail8.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!NOTATION a SYSTEM "a">
+<!ATTLIST doc att NOTATION ("a") #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58pass1.xml
new file mode 100644
index 0000000000..8a62fb0c47
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p58pass1.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (a|b)*>
+<!ELEMENT a ANY>
+<!ELEMENT b ANY>
+<!NOTATION a SYSTEM "a">
+<!NOTATION b SYSTEM "b">
+<!ATTLIST a att NOTATION (a) #IMPLIED>
+<!ATTLIST b att NOTATION ( a | b ) #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail1.xml
new file mode 100644
index 0000000000..b14517863b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att () #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail2.xml
new file mode 100644
index 0000000000..f347d9f117
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail2.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att (a,b) #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail3.xml
new file mode 100644
index 0000000000..2bf04d10e3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59fail3.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att ("a") #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59pass1.xml
new file mode 100644
index 0000000000..d04d43b4e5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p59pass1.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (a|b)*>
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ATTLIST a att (a) #IMPLIED>
+<!ATTLIST b att ( a | b ) #IMPLIED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail1.xml
new file mode 100644
index 0000000000..05c3811bb8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att CDATA #implied>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail2.xml
new file mode 100644
index 0000000000..e99ab7d6ff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail2.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att CDATA #FIXED"value">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail3.xml
new file mode 100644
index 0000000000..a1a445a53d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail3.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att CDATA #REQUIRED "value">
+]>
+<doc att="value"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail4.xml
new file mode 100644
index 0000000000..9ebe2d6c8b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail4.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att CDATA #FIXED>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail5.xml
new file mode 100644
index 0000000000..38df257dcd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60fail5.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc att CDATA #IMPLIED #REQUIRED>
+]>
+<doc att="value"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60pass1.xml
new file mode 100644
index 0000000000..27939f2be8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p60pass1.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (a|b|c|d)*>
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+<!ELEMENT c EMPTY>
+<!ELEMENT d EMPTY>
+<!ATTLIST a att CDATA #REQUIRED>
+<!ATTLIST b att CDATA #IMPLIED>
+<!ATTLIST c att CDATA #FIXED "value">
+<!ATTLIST d att CDATA 'default'>
+]>
+<doc><c/><c att="value"/></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.dtd
new file mode 100644
index 0000000000..5010f84733
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.dtd
@@ -0,0 +1,4 @@
+<!ELEMENT doc EMPTY>
+<![TEMP[
+<!ATTLIST doc att CDATA #IMPLIED>
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.xml
new file mode 100644
index 0000000000..b54a0c85a8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61fail1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p61fail1.dtd">
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.dtd
new file mode 100644
index 0000000000..5fdbf81178
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.dtd
@@ -0,0 +1,6 @@
+<![INCLUDE[<![INCLUDE[
+<![IGNORE[ ignored ]]>
+<!ELEMENT doc EMPTY>
+]]>]]>
+<![IGNORE[ ignored ]]>
+<![IGNORE[ <!ELEMENT doc ignored ]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.xml
new file mode 100644
index 0000000000..3405a1cf5f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p61pass1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p61pass1.dtd">
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.dtd
new file mode 100644
index 0000000000..d3886bf6cb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.dtd
@@ -0,0 +1,3 @@
+<![include[
+<!ELEMENT doc EMPTY>
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.xml
new file mode 100644
index 0000000000..65c9619054
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p62fail1.dtd">
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.dtd
new file mode 100644
index 0000000000..50055d0aa3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.dtd
@@ -0,0 +1,3 @@
+<![INCLUDE[
+<!ELEMENT doc EMPTY>
+] ]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.xml
new file mode 100644
index 0000000000..ce663557f2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62fail2.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p62fail2.dtd">
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.dtd
new file mode 100644
index 0000000000..a3c09fe100
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.dtd
@@ -0,0 +1,12 @@
+<![INCLUDE[
+<![
+INCLUDE
+[
+<!ELEMENT doc EMPTY>
+<![IGNORE[asdfasdf]]>
+]]>]]>
+<![INCLUDE[]]>
+<![INCLUDE[
+]]>
+<![INCLUDE[ ]]>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.xml
new file mode 100644
index 0000000000..568a5fb5aa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p62pass1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p62pass1.dtd">
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.dtd
new file mode 100644
index 0000000000..b36c8b8e36
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT doc EMPTY>
+<![ignore[]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.xml
new file mode 100644
index 0000000000..405db6825b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p63fail1.dtd">
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.dtd
new file mode 100644
index 0000000000..3b52491127
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT doc EMPTY>
+<![IGNORE[<![]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.xml
new file mode 100644
index 0000000000..dd86f4cd9b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63fail2.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p63fail2.dtd">
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.dtd
new file mode 100644
index 0000000000..f3bf927d7e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.dtd
@@ -0,0 +1,13 @@
+<!ELEMENT doc EMPTY>
+<![IGNORE[
+<![INCLUDE[
+<!ELEMENT doc
+]]>]]>
+<![
+IGNORE
+[
+]]>
+<![IGNORE[]]>
+<![IGNORE[ ]]>
+<![IGNORE[
+]]> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.xml
new file mode 100644
index 0000000000..1f1e752f03
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p63pass1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p63pass1.dtd">
+<doc/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.dtd
new file mode 100644
index 0000000000..7c779dfd9b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT doc EMPTY>
+<![IGNORE[ ends must balance ]]>]]> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.xml
new file mode 100644
index 0000000000..cd617c7b63
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p64fail1.dtd">
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.dtd
new file mode 100644
index 0000000000..ef5196b9be
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.dtd
@@ -0,0 +1,2 @@
+<!ELEMENT doc EMPTY>
+<![IGNORE[ <![ starts must balance ]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.xml
new file mode 100644
index 0000000000..1903de4b96
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64fail2.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p64fail2.dtd">
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.dtd
new file mode 100644
index 0000000000..63c2c586fe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.dtd
@@ -0,0 +1,13 @@
+<!ELEMENT doc EMPTY>
+<![IGNORE[
+Everything is ignored within an ignored section, except the
+sub-section delimiters '<![' and ']]>'. These must be balanced,
+but it is no section keyword is required:
+<![]]>
+<![DUNNO[ ]]>
+<![INCLUDE[
+asdfasdfasdf
+<!OK
+]]>
+] ]> ]] > ]]>
+<![IGNORE[ < ![ <! [ <![]]>]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.xml
new file mode 100644
index 0000000000..37d89932aa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p64pass1.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "p64pass1.dtd">
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail1.xml
new file mode 100644
index 0000000000..6c527254f0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail1.xml
@@ -0,0 +1 @@
+<doc>&#65</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail2.xml
new file mode 100644
index 0000000000..f3f95cd4d2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail2.xml
@@ -0,0 +1 @@
+<doc>&# 65;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail3.xml
new file mode 100644
index 0000000000..f6a5d583fe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail3.xml
@@ -0,0 +1 @@
+<doc>&#A;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail4.xml
new file mode 100644
index 0000000000..bfd802d949
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail4.xml
@@ -0,0 +1 @@
+<doc>&#x4G;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail5.xml
new file mode 100644
index 0000000000..71e8df0f1e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail5.xml
@@ -0,0 +1 @@
+<doc>&#5;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail6.xml
new file mode 100644
index 0000000000..05441677bd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66fail6.xml
@@ -0,0 +1 @@
+<doc>&#xd802;&#xdc02;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66pass1.xml
new file mode 100644
index 0000000000..4ccf4e7f51
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p66pass1.xml
@@ -0,0 +1,4 @@
+<doc>
+&#65;&#9;&#x41;&#x4f;&#x4F;&#0000000000000000009;
+&#x10F2ec;&#xa;
+</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail1.xml
new file mode 100644
index 0000000000..f6b6e75465
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail1.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY ent "replacement text">
+]>
+<doc>
+&ent
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail2.xml
new file mode 100644
index 0000000000..8734fdc6d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail2.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY ent "replacement text">
+]>
+<doc>
+& ent;
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail3.xml
new file mode 100644
index 0000000000..1f088ef5f4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68fail3.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY ent "replacement text">
+]>
+<doc>
+&ent ;
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68pass1.xml
new file mode 100644
index 0000000000..0e70ff643e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p68pass1.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY ent "replacement text">
+]>
+<doc>
+&ent;aaa&ent;
+<!--Not a reference:-->
+<!--Charref to & doesn't make a delimiter-->
+&#38;en
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail1.xml
new file mode 100644
index 0000000000..b6dba82097
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail1.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % pe "<!---->">
+%pe<!---->
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail2.xml
new file mode 100644
index 0000000000..f390e05ac6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail2.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % pe "<!---->">
+% pe;
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail3.xml
new file mode 100644
index 0000000000..5e6deb198e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69fail3.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % pe "<!---->">
+%pe ;
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69pass1.xml
new file mode 100644
index 0000000000..34b3efcba4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p69pass1.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % pe "<!---->">
+%pe;<!---->%pe;
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70fail1.xml
new file mode 100644
index 0000000000..36b447aff4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY & bad "replacement text">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70pass1.xml
new file mode 100644
index 0000000000..7525e0a188
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p70pass1.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY ge "replacement text">
+<!ENTITY % pe "<!-- replacement decl -->">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail1.xml
new file mode 100644
index 0000000000..e0a10f1d18
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY ge"replacement text">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail2.xml
new file mode 100644
index 0000000000..4812ef09c1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail2.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY -ge "replacement text">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail3.xml
new file mode 100644
index 0000000000..06e40f26ed
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail3.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<! ENTITY ge "replacement text">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail4.xml
new file mode 100644
index 0000000000..b9ff089230
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71fail4.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITYge "replacement text">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71pass1.xml
new file mode 100644
index 0000000000..3b5f8b9553
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p71pass1.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY ge "replacement text">
+<!ENTITY
+ ge2
+ "replacement text"
+ >
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail1.xml
new file mode 100644
index 0000000000..f54729831f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY% pe "<!--replacement decl-->">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail2.xml
new file mode 100644
index 0000000000..c68589c9a4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail2.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY %pe "<!--replacement decl-->">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail3.xml
new file mode 100644
index 0000000000..6207cfa738
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail3.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % pe"<!--replacement decl-->">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail4.xml
new file mode 100644
index 0000000000..9b8bc50327
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72fail4.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % .pe "<!--replacement decl-->">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72pass1.xml
new file mode 100644
index 0000000000..d402513ec1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p72pass1.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % pe "<!--replacement decl-->">
+<!ENTITY
+ %
+ pe2
+ "<!--replacement decl-->"
+ >
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail1.xml
new file mode 100644
index 0000000000..f6de0a9812
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail1.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!NOTATION unknot PUBLIC "Unknown">
+<!ENTITY ge CDATA "replacement text">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail2.xml
new file mode 100644
index 0000000000..c3abb158b0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail2.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!NOTATION unknot PUBLIC "Unknown">
+<!ENTITY ge "replacement text" "more text">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail3.xml
new file mode 100644
index 0000000000..6e7a01ea87
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail3.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!NOTATION unknot PUBLIC "Unknown">
+<!ENTITY ge "replacement text" NDATA unknot>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail4.xml
new file mode 100644
index 0000000000..c349c76148
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail4.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!NOTATION unknot PUBLIC "Unknown">
+<!ENTITY ge >
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail5.xml
new file mode 100644
index 0000000000..58410f706c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73fail5.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!NOTATION unknot PUBLIC "Unknown">
+<!ENTITY ge NDATA unknot>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73pass1.xml
new file mode 100644
index 0000000000..36ba975f59
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p73pass1.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!NOTATION unknot PUBLIC "Unknown">
+<!ENTITY ge "replacement text">
+<!ENTITY ge2 SYSTEM "nop.ent">
+<!ENTITY ge3 SYSTEM "nop.ent" NDATA unknot>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail1.xml
new file mode 100644
index 0000000000..241aa23a54
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!NOTATION unknot PUBLIC "Unknown">
+<!ENTITY % pe SYSTEM "nop.ent" NDATA unknot>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail2.xml
new file mode 100644
index 0000000000..3958162719
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail2.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!NOTATION unknot PUBLIC "Unknown">
+<!ENTITY % pe>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail3.xml
new file mode 100644
index 0000000000..3a5cd4a261
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74fail3.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ENTITY % pe "<!--decl1-->" SYSTEM "nop.ent">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74pass1.xml
new file mode 100644
index 0000000000..f27f3f2d45
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p74pass1.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc
+[
+<!ENTITY % pe "<!--replacement decl-->">
+<!ENTITY % pe2 SYSTEM "nop.ent">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail1.xml
new file mode 100644
index 0000000000..b415bd73fd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail1.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ENTITY ent PUBLIC"PublicID" "nop.ent">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail2.xml
new file mode 100644
index 0000000000..bafb7d6a0b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail2.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ENTITY ent SYSTEM"nop.ent">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail3.xml
new file mode 100644
index 0000000000..b10d40e165
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail3.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ENTITY ent PUBLIC "PublicID""nop.ent">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail4.xml
new file mode 100644
index 0000000000..228d2d9dd8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail4.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ENTITY ent SYSTEM "PublicID" "nop.ent">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail5.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail5.xml
new file mode 100644
index 0000000000..51470434ed
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail5.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ENTITY ent PUBLIC "PublicID" SYSTEM "nop.ent">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail6.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail6.xml
new file mode 100644
index 0000000000..da20c1b5cb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75fail6.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc
+[
+<!ENTITY ent PUBLIC "PublicID">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75pass1.xml
new file mode 100644
index 0000000000..9eecdd8324
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p75pass1.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE doc
+[
+<!ENTITY ent SYSTEM "nop.ent">
+<!ENTITY ent2 PUBLIC "PublicID" "nop.ent">
+<!ENTITY ent3 PUBLIC
+ "PublicID"
+ "nop.ent"
+ >
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail1.xml
new file mode 100644
index 0000000000..cce3080be7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail1.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!NOTATION unknot PUBLIC "Unknown">
+<!ENTITY ge SYSTEM "nop.ent"NDATA unknot>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail2.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail2.xml
new file mode 100644
index 0000000000..b00ad764cb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail2.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!NOTATION unknot PUBLIC "Unknown">
+<!ENTITY ge SYSTEM "nop.ent" ndata unknot>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail3.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail3.xml
new file mode 100644
index 0000000000..45e95920d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail3.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!NOTATION unknot PUBLIC "Unknown">
+<!ENTITY ge SYSTEM "nop.ent" NDATA>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail4.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail4.xml
new file mode 100644
index 0000000000..02c5b12424
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76fail4.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!NOTATION unknot PUBLIC "Unknown">
+<!--error should be reported here, not at <!Notation-->
+<!ENTITY ge SYSTEM "nop.ent" NDATA -unknot>
+<!NOTATION -unknot PUBLIC "Unknown">
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76pass1.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76pass1.xml
new file mode 100644
index 0000000000..7eea6b1eab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/oasis/p76pass1.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE doc
+[
+<!ELEMENT doc (#PCDATA)>
+<!NOTATION unknot PUBLIC "Unknown">
+<!ENTITY ge SYSTEM "nop.ent" NDATA unknot>
+<!ENTITY ge2 SYSTEM "nop.ent"
+ NDATA
+ unknot
+ >
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/readme.html b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/readme.html
new file mode 100644
index 0000000000..52fc123f20
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/readme.html
@@ -0,0 +1,201 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML><HEAD><TITLE>NIST XML Conformance Testing</TITLE>
+<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
+<META content="XML Conformance" name=keyword>
+<META content=NIST,OASIS,XML,Conformance name=keywords><LINK
+href="files/committee.css"
+rel=Stylesheet type=text/css>
+<META content="MSHTML 5.00.2014.210" name=GENERATOR></HEAD>
+<BODY bgColor=#ffffff>
+<p>
+<center>
+<table border="4" width="90%">
+<tr >
+<td>
+<table>
+<tr >
+<td width="40%"><img src="files/a_oasis-logo.gif" width="350" height="125"/></td>
+<td width="30%"/>
+<td width="40%" align="right"><img src="files/top3.jpe" width="400" height="125"/></td>
+</tr>
+</table>
+<center>
+<table>
+<tr>
+<td ><b><font size="+2">A Joint Development Effort</font></b></td>
+</tr>
+</table>
+</center>
+</td>
+</tr>
+</table>
+</center>
+<p/>
+<h4>OASIS XML Conformance Subcommittee<br/>XML 1.0 Test Suite, Second Edition<br/>Working Draft<br/>15 March 2001</h4>
+<dl>
+<dt><b>This version:</b></dt>
+<dd><ul>
+<li><a href="xmlconf-20010315.htm">
+xmlconf-20010315.htm</a>
+(<a href="xmlconf-20010315.xml">XML</a>)
+</li>
+</ul>
+</dd>
+<p/>
+<dt><b>Current Version:</b></dt>
+<dd>
+<ul>
+<li><a href="xmlconf.xml">
+xmlconf.xml</a></li>
+</ul>
+</dd>
+<p/>
+<dt><b>Previous Version:</b></dt>
+<dd>
+<ul>
+<li><a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1/xmlconf-19990712.xml">
+http://www.oasis-open.org/committees/xml-conformance/suite-v1/xmlconf-19990712.xml</a></li>
+</ul>
+</dd>
+<p/>
+<dt><b>OASIS XML Conformance Technical Committee:</b></dt>
+<dd><ul><li><a href="http://www.oasis-open.org/committees/xml-conformance/">http://www.oasis-open.org/committees/xml-conformance/</a>
+</li></ul></dd>
+<p></p>
+<dt><b>Comments:</b></dt>
+<dd><ul><li>Mary Brady, NIST <a href="mailto:mbrady@nist.gov">&lt;mbrady@nist.gov&gt;</a>
+</li></ul></dd>
+<p/>
+</dl>
+<hr>
+<p>
+The XML Conformance Test Suite, v1.0, Second Edition contains over 2000 test
+files and an associated test report. The test report
+contains background information on conformance testing
+for XML as well as test descriptions for each of the
+test files included in this release. This test suite
+provides a set of metrics for determining
+conformance to the <a href="http://www.w3.org/TR/REC-xml">W3C XML
+1.0 (Second Edition) Recommendation</a>.
+The XML Conformance Test Suite is intended to complement
+the W3C XML 1.0 (Second Edition) Recommendation. All interpretations of this
+Recommendation are subject to confirmation by the
+<a href="http://www.w3.org/XML/Activity.html">W3C XML
+Coordination Group</a>.
+<p>
+This second edition includes 1000 additional tests contributed by IBM. In
+addition, several tests have been either updated or further documented to
+be in accordance with the XML 1.0 (Second Edition) Recommendation. Many
+thanks to Arnaud Le Hors and Richard Tobin, of the W3C XML Core WG, for their insightful
+comments regarding interpretations of the specification. See
+<a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/changes.html">
+http://www.oasis-open.org/committees/xml-conformance/suite-v1se/changes.html</a> for additional details.
+<p>
+This release contains the following files/directories:
+<p>
+<center>
+<table border=2 width=80% cellpadding=5>
+<tr BGCOLOR=#0000FF>
+<th width=30%><font color=yellow size=+1>Filename</font>
+<th width=70%><font color=yellow size=+1>Description</font>
+</tr>
+<tr>
+<td>xmlconf.xml</td>
+<td>Primary xml file - includes xml description files
+from contributors.
+</tr>
+<tr>
+<td>xmlconformance.msxsl
+<td>Microsoft XSL stylesheet to dynamically render XML Conformance
+report within IE5 5.00.2014.2016 or later.
+</tr>
+<tr>
+<td>xmlconf.htm
+<td>HTML version of the XML Conformance report. Generated using
+LOTUS Xalan and applying conformance.xsl.
+</tr>
+<tr>
+<td>xmlconformance.xsl
+<td>W3C XSL (19990421) stylesheet to produce the HTML rendition of the
+XML Conformance report.
+</tr>
+<tr>
+<td>testcases.dtd
+<td>DTD used by all test description files.
+</tr>
+<tr>
+<td>changes.html
+<td>Details regarding changes in this release.
+</tr>
+<tr>
+<td>japanese/japanese.xml
+<td>Fuji Xerox, contributed by Makota Murata, xml test description file.
+</tr>
+<tr>
+<td>japanese/*
+<td>Fuji Xerox character set tests.
+</tr>
+<tr>
+<td>oasis/oasis.xml
+<td>OASIS xml test description file. These tests were supplied primarily
+by Matt Timmermans and modified/documented by NIST.
+</tr>
+<tr>
+<td>oasis/*
+<td>OASIS xml test files - binary tests for productions 1-76.
+</tr>
+<tr>
+<td>xmltest/xmltest.xml
+<td>James Clark's xml test description file. These tests were supplied by
+James Clark and documented by Dave Brownell, SUN, and NIST.
+</tr>
+<tr>
+<td>xmltest/*
+<td>James Clark's test files - strong where parsers are likely to fail.
+</tr>
+<tr>
+<td>sun/valid/sun-valid.xml
+<br>sun/invalid/sun-invalid.xml
+<br>sun/not-wf/sun-not-wf.xml
+<br>sun/error/sun-error.xml
+</td>
+<td>SUN Microsystems xml test description files. Contributions include
+valid, invalid, not-wf, and error tests.
+</tr>
+<tr>
+<td>
+sun/valid/*
+<br>sun/invalid/*
+<br>sun/not-wf/*
+<br>sun/error/*
+</td>
+<td>SUN Microsystems xml test files. Developed to complement James
+Clark's tests.</td>
+</tr>
+<tr>
+<td>ibm/ibm_oasis_valid.xml
+<br>ibm/ibm_oasis_not-wf.xml
+<br>ibm/ibm_oasis_invalid.xml
+</td>
+<td>IBM xml test description files. Contributions include
+valid, invalid, and not-wf tests.
+</tr>
+<tr>
+<td>
+ibm/valid/*
+<br>ibm/invalid/*
+<br>ibm/not-wf/*
+</td>
+<td>IBM xml test files. Developed to complement v1.0 tests.</td>
+</tr>
+</table>
+</center>
+<p>
+Please forward all comments/suggestions/bugs to <a href="mailto:mbrady@nist.gov">&lt;mbrady@nist.gov&gt;</a>
+<br>
+<hr noShade>
+<div class=bottom><a href="http://www.itl.nist.gov">NIST / Information Technology Lab</a><br>
+<a href="http://www.oasis-open.org/">OASIS Home</a> / <a href="http://www.oasis-open.org/committees/">OASIS Committee Pages</a>
+</div>
+</body>
+</html>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Entries
new file mode 100644
index 0000000000..aef96e912f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Entries
@@ -0,0 +1,8 @@
+/cxml.html/1.3/Mon Mar 25 15:18:13 2002//
+/sun-error.xml/1.3/Thu May 16 14:50:02 2002//
+/sun-invalid.xml/1.5/Thu May 16 14:34:12 2002//
+/sun-not-wf.xml/1.5/Tue Sep 30 15:11:13 2003//
+/sun-valid.xml/1.4/Thu May 16 14:53:10 2002//
+D/invalid////
+D/not-wf////
+D/valid////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Repository
new file mode 100644
index 0000000000..9b23a843fb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/sun
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/cxml.html b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/cxml.html
new file mode 100644
index 0000000000..56dd479ed8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/cxml.html
@@ -0,0 +1,155 @@
+<HTML>
+<TITLE>XML Canonical Forms</TITLE>
+<BODY>
+<H1>XML Canonical Forms</H1>
+<P><FONT COLOR=RED><b><em>DRAFT 1</em></b></FONT>
+<P> As with many sorts of structured information, there are many
+categories of information that may be deemed "important" for
+some task. Canonical forms are standard ways to represent
+such classes of information. For testing XML, and potentially
+for other purposes, three <em>XML Canonical Forms</em> have
+been defined as of this writing: <UL>
+
+ <LI> <a href=#cxml1>First XML Canonical Form</a>, defined by
+ James Clark, is also called <em>Canonical XML</em>.
+
+ <LI> <a href=#cxml2>Second XML Canonical Form</a>, defined
+ by Sun, supports testing a larger subset of the XML 1.0
+ processor requirements by exposing notation declarations.
+
+ <LI> <a href=#cxml3>Third XML Canonical Form</a>, defined
+ by Sun, extends the second form to reflect information
+ which validating XML 1.0 processors are required to report.
+
+ </UL>
+
+<P> For a document already in a given canonical form, recanonicalizing
+to that same form will change nothing. Canonicalizing second or
+third forms to the first canonical form discards all declarations.
+Canonicalizing second or third forms to the other form has no effect.
+
+<P> <em>The author is pleased to acknowledge help from
+James Clark in defining the additional canonical forms.</em>
+
+
+<A NAME=cxml1>
+<H2>First XML Canonical Form</H2>
+</A>
+
+<P> <em>This description has been extracted from the version at
+<a href=http://www.jclark.com/xml/canonxml.html>
+http://www.jclark.com/xml/canonxml.html</a>.</em>
+
+<P>
+Every well-formed XML document has a unique structurally equivalent
+canonical XML document. Two structurally equivalent XML
+documents have a byte-for-byte identical canonical XML document.
+Canonicalizing an XML document requires only information that an XML
+processor is required to make available to an application.
+<P>
+A canonical XML document conforms to the following grammar:
+<PRE>
+CanonXML ::= Pi* element Pi*
+element ::= Stag (Datachar | Pi | element)* Etag
+Stag ::= '&lt;' Name Atts '&gt;'
+Etag ::= '&lt;/' Name '&gt;'
+Pi ::= '&lt;?' Name ' ' (((Char - S) Char*)? - (Char* '?&gt;' Char*)) '?&gt;'
+Atts ::= (' ' Name '=' '"' Datachar* '"')*
+Datachar ::= '&amp;amp;' | '&amp;lt;' | '&amp;gt;' | '&amp;quot;'
+ | '&amp;#9;'| '&amp;#10;'| '&amp;#13;'
+ | (Char - ('&amp;' | '&lt;' | '&gt;' | '"' | #x9 | #xA | #xD))
+Name ::= (see XML spec)
+Char ::= (see XML spec)
+S ::= (see XML spec)
+</PRE>
+<P>
+Attributes are in lexicographical order (in Unicode bit order).
+<P>
+A canonical XML document is encoded in UTF-8.
+<P>
+Ignorable white space is considered significant and is treated equivalently
+to data.
+
+
+<A NAME=cxml2>
+<H2>Second XML Canonical Form</H2>
+</A>
+<P><FONT COLOR=RED><b><em>Modified to ensure that literals are surrounded by single quotes.</em></b></FONT>
+<P> This canonical form is identical to the first form, with
+one significant addition. All XML processors are required to
+report the name and external identifiers of notations that
+are declared and referred to in an XML document (section 4.7);
+those reports are reflected in declarations in this form,
+presented in lexicographic order.
+
+<P> Note that all public identifiers must be normalized before being
+presented to applications (section 4.2.2).
+
+<P> System identifiers are normalized on output to be relative
+to the input document, if that is possible, with the shortest
+such relative URI. All other URIs must be absolute. Any
+hash mark and fragment ID, if erroneously present on input, are
+removed. Any non-ASCII characters in the URI must be escaped
+as specified in the XML specification (section 4.2.2).
+
+<PRE>
+CanonXML2 ::= DTD2? CanonXML
+DTD2 ::= '&lt;!DOCTYPE ' name ' [' #xA Notations? ']>' #xA
+Notations ::= ( '&lt;!NOTATION ' Name '
+ (('PUBLIC ' PubidLiteral ' ' SystemLiteral)
+ |('PUBLIC ' PubidLiteral)
+ |('SYSTEM ' SystemLiteral))
+ '>' #xA )*
+PubidLiteral ::= "'" PubidChar* "'"
+SystemLiteral ::= "'" [^']* "'"
+
+</PRE>
+
+<P> The requirement of this canonical form differs slightly from that
+of the XML specification itself in that all declared notations
+must be listed, not just those which were referred to.
+<em>Should that change? SAX supports it easily.</em>
+
+
+<A NAME=cxml3>
+<H2>Third XML Canonical Form</H2>
+</A>
+<P> This canonical form is identical to the second form, with
+two significant exceptions reflecting requirements placed on
+validating XML processors:<UL>
+
+ <LI> They are required to report "white space appearing in
+ element content" (section 2.10). Ignorable whitespace is
+ not represented in this canonical form.
+
+ <LI> They must report the external identifiers and notation name
+ for unparsed entities appearing as attribute values (section 4.4.6).
+ Such entities are declared in this canonical form, in lexicographic
+ order.
+
+ </UL>
+
+<P> This builds on the grammar productions included above.
+
+<PRE>
+CanonXML3 ::= DTD3? CanonXML
+DTD3 ::= '&lt;!DOCTYPE ' name ' [' #xA Notations? Unparsed? ']>' #xA
+Unparsed ::= ( '&lt;!ENTITY ' Name '
+ (('PUBLIC ' PubidLiteral ' ' SystemLiteral)
+ |('SYSTEM ' SystemLiteral))
+ 'NDATA ' Name
+ '>' #xA )*
+</PRE>
+
+<P> The requirement of this canonical form differs slightly from that
+of the XML specification itself in that all declared unparsed entities
+must be listed, not just those which were referred to.
+<em>Should that change? SAX supports it easily.</em>
+
+<P>
+<ADDRESS>
+<A HREF="mailto:xml-feedback@java.sun.com">xml-feedback@java.sun.com</A>
+</ADDRESS>
+
+</BODY>
+</HTML>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Entries
new file mode 100644
index 0000000000..081cd425f2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Entries
@@ -0,0 +1,76 @@
+/attr01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attr02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attr03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attr04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attr05.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attr06.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attr07.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attr08.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attr09.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attr10.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attr11.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/attr12.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/attr13.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attr14.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attr15.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attr16.xml/1.2/Thu Feb 7 19:44:41 2002//
+/dtd01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/dtd02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/dtd03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/dtd06.xml/1.2/Thu Feb 7 19:44:41 2002//
+/el01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/el02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/el03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/el04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/el05.xml/1.2/Thu Feb 7 19:44:41 2002//
+/el06.xml/1.2/Thu Feb 7 19:44:41 2002//
+/empty.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/id01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/id02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/id03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/id04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/id05.xml/1.2/Thu Feb 7 19:44:41 2002//
+/id06.xml/1.2/Thu Feb 7 19:44:41 2002//
+/id07.xml/1.2/Thu Feb 7 19:44:41 2002//
+/id08.xml/1.2/Thu Feb 7 19:44:41 2002//
+/id09.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa05.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa06.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa07.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa08.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa09.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa10.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa11.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa12.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa13.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa14.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional05.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional06.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional07.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional08.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional09.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional10.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional11.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional12.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional13.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional14.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional20.xml/1.3/Wed May 1 18:03:37 2002//
+/optional21.xml/1.3/Wed May 1 18:03:37 2002//
+/optional22.xml/1.3/Wed May 1 18:03:37 2002//
+/optional23.xml/1.3/Wed May 1 18:03:37 2002//
+/optional24.xml/1.3/Wed May 1 18:03:37 2002//
+/optional25.xml/1.3/Wed May 1 18:03:37 2002//
+/required00.xml/1.2/Thu Feb 7 19:44:41 2002//
+/required01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/required02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/root.xml/1.2/Thu Feb 7 19:44:41 2002//
+/utf16b.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/utf16l.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Repository
new file mode 100644
index 0000000000..f180fae23c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/sun/invalid
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr01.xml
new file mode 100644
index 0000000000..cb2b4e675f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr01.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root
+ affiliated ENTITY #REQUIRED
+ >
+ <!-- tests the "entity name" VC ... the "entity declared" clause,
+ as applied to attributes of type ENTITY -->
+]>
+<root affiliated="food"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr02.xml
new file mode 100644
index 0000000000..b9f2461ea5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr02.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root
+ affiliated ENTITIES #REQUIRED
+ >
+ <!-- tests the "entity name" VC ... the "entity declared" clause,
+ as applied to attributes of type ENTITIES -->
+<!NOTATION fruit
+ PUBLIC "-//International Grocery Consortium//Edible//Healthy//EN">
+<!ENTITY apple SYSTEM "http://www.apple.com" NDATA fruit>
+]>
+<root affiliated="apple apple food"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr03.xml
new file mode 100644
index 0000000000..b84d1f1fcb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr03.xml
@@ -0,0 +1,17 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root
+ type NOTATION (fruit | vegetable) #REQUIRED
+ >
+<!NOTATION fruit
+ PUBLIC "-//International Grocery Consortium//Edible//Healthy//EN">
+<!NOTATION vegetable
+ PUBLIC "-//International Grocery Consortium//Edible//Yucky//EN">
+<!NOTATION candy
+ PUBLIC "-//International Grocery Consortium//Edible//Yummy//EN">
+
+ <!-- tests the 'must match one of the names included in the
+ declaration' part of the "Notation Attributes" VC -->
+]>
+<root type="candy"/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr04.xml
new file mode 100644
index 0000000000..cbe62af83a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr04.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root
+ type NOTATION (fruit | vegetable) #REQUIRED
+ >
+<!NOTATION fruit
+ PUBLIC "-//International Grocery Consortium//Edible//Healthy//EN">
+
+ <!-- tests the 'all notation names in the declaration must
+ be declared' part of the "Notation Attributes" VC -->
+]>
+<root type="fruit"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr05.xml
new file mode 100644
index 0000000000..d459fd924e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr05.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root
+ token NMTOKEN #REQUIRED
+ >
+
+ <!-- tests the "name token' VC for an NMTOKEN value -->
+]>
+<root token="dev@null"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr06.xml
new file mode 100644
index 0000000000..f652f335fb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr06.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root
+ token NMTOKEN #REQUIRED
+ >
+
+ <!-- tests the "name token' VC for an NMTOKENS value -->
+]>
+<root token="now is the time!?"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr07.xml
new file mode 100644
index 0000000000..57489b3cc0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr07.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE arbor [
+<!ELEMENT arbor EMPTY>
+<!ATTLIST arbor
+ type (fruit | vegetable) "fruit"
+ >
+ <!-- tests the 'must match one of the nmtokens included in the
+ declaration' part of the "Enumeration" VC -->
+]>
+<arbor type="money"/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr08.xml
new file mode 100644
index 0000000000..3c59fc5416
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr08.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE palimpest [
+<!ELEMENT palimpest EMPTY>
+<!ATTLIST palimpest
+ xmlns CDATA #FIXED "http://java.sun.com/historical"
+ >
+ <!-- tests the "fixed attribute default" vc -->
+]>
+
+<palimpest xmlns="http://over.the.rainbow.com/somewhere"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr09.xml
new file mode 100644
index 0000000000..f65f5820aa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr09.xml
@@ -0,0 +1,20 @@
+<!DOCTYPE collection [
+
+<!ELEMENT collection ANY>
+
+<!ELEMENT identifier EMPTY>
+<!ATTLIST identifier
+ value IDREF "42"
+ >
+ <!-- tests the "attribute default legal" vc -->
+
+<!ELEMENT identified EMPTY>
+<!ATTLIST identified
+ id ID #REQUIRED
+ >
+]>
+
+<collection>
+ <identifier name="i-am-not-a-number"/>
+ <identified id="i-am-not-a-number"/>
+</collection>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr10.xml
new file mode 100644
index 0000000000..04ba586f1c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr10.xml
@@ -0,0 +1,20 @@
+<!DOCTYPE collection [
+
+<!ELEMENT collection ANY>
+
+<!ELEMENT identifier EMPTY>
+<!ATTLIST identifier
+ value IDREFS "i-am-not-a-number 42"
+ >
+ <!-- tests the "attribute default legal" vc -->
+
+<!ELEMENT identified EMPTY>
+<!ATTLIST identified
+ id ID #REQUIRED
+ >
+]>
+
+<collection>
+ <identifier name="i-am-not-a-number"/>
+ <identified id="i-am-not-a-number"/>
+</collection>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr11.xml
new file mode 100644
index 0000000000..dcefb0596e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr11.xml
@@ -0,0 +1,15 @@
+<!DOCTYPE reference [
+
+<!ELEMENT reference EMPTY>
+<!ATTLIST reference
+ value ENTITY "2orldbook"
+ >
+ <!-- tests the "attribute default legal" vc -->
+
+<!NOTATION encyclopaedia PUBLIC "-//fooCorp Inc//NOTATION something//EN">
+<!ENTITY brittannica SYSTEM "http://www.eb.com/" NDATA encyclopaedia>
+<!ENTITY worldbook SYSTEM "http://www.worldbook.com">
+
+]>
+
+<reference value="brittannica"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr12.xml
new file mode 100644
index 0000000000..67b83f9ef8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr12.xml
@@ -0,0 +1,15 @@
+<!DOCTYPE references [
+
+<!ELEMENT references EMPTY>
+<!ATTLIST references
+ value ENTITIES "brittannica 2orldbook"
+ >
+ <!-- tests the "attribute default legal" vc -->
+
+<!NOTATION encyclopaedia PUBLIC "-//fooCorp Inc//NOTATION something//EN">
+<!ENTITY brittannica SYSTEM "http://www.eb.com/" NDATA encyclopaedia>
+<!ENTITY worldbook SYSTEM "http://www.worldbook.com">
+
+]>
+
+<references value="brittannica"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr13.xml
new file mode 100644
index 0000000000..a2c81f9e18
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr13.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE root [
+
+<!ELEMENT root EMPTY>
+<!ATTLIST root
+ value NMTOKEN "alpha/beta"
+ >
+ <!-- tests the "attribute default legal" vc -->
+]>
+
+<root value="brittannica"/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr14.xml
new file mode 100644
index 0000000000..0205a0265f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr14.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE root [
+
+<!ELEMENT root EMPTY>
+<!ATTLIST root
+ value NMTOKENS "alpha beta $gamma"
+ >
+ <!-- tests the "attribute default legal" vc -->
+]>
+
+<root value="zeta eta iota"/>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr15.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr15.xml
new file mode 100644
index 0000000000..6ce369f35a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr15.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE reference [
+
+<!ELEMENT reference EMPTY>
+<!ATTLIST reference
+ source NOTATION (brittannica | worldbook) "encarta"
+ >
+ <!-- tests the "attribute default legal" vc -->
+
+<!NOTATION brittannica SYSTEM "http://www.eb.com/">
+<!NOTATION worldbook SYSTEM "http://www.worldbook.com">
+
+]>
+
+<reference source="brittannica"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr16.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr16.xml
new file mode 100644
index 0000000000..7b777802d6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/attr16.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root [
+
+<!ELEMENT root EMPTY>
+<!ATTLIST root
+ value (brittannica | worldbook) "encarta"
+ >
+ <!-- tests the "attribute default legal" vc -->
+]>
+
+<root value="brittannica"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd01.xml
new file mode 100644
index 0000000000..f348c16721
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd01.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root [
+ <!ELEMENT y (#PCDATA|x|x)*>
+ <!-- element types can't repeat in mixed content -->
+ <!ELEMENT root ANY>
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd02.xml
new file mode 100644
index 0000000000..c4868f9ced
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd02.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE paper [
+<!ELEMENT paper EMPTY>
+<!ENTITY Brittannica SYSTEM "http://www.eb.com" NDATA Encyclopaedia>
+]>
+<paper/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd03.xml
new file mode 100644
index 0000000000..db87f99a3d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd03.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE violation [
+<!ELEMENT violation (a,a,a,b)>
+<!ELEMENT a EMPTY>
+<!ELEMENT b EMPTY>
+ <!-- tests the "element valid" constraint for content
+ which doesn't match the declared content model.
+ (there can be an infinite number of such tests...)
+ -->
+]>
+<violation>
+ <a/>
+ <a/>
+ <b/>
+</violation>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd06.xml
new file mode 100644
index 0000000000..29de14cd7a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/dtd06.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+ <!-- reference to undefined PE -->
+ %undefined;
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el01.xml
new file mode 100644
index 0000000000..7adb884f3b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+]>
+<root> <undeclared/> </root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el02.xml
new file mode 100644
index 0000000000..46453f218f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el02.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+]>
+<root><root/></root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el03.xml
new file mode 100644
index 0000000000..ec4fe96f40
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el03.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA|root)*>
+<!ELEMENT exception (#PCDATA)>
+]>
+<root>this is ok <exception>this isn't</exception> </root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el04.xml
new file mode 100644
index 0000000000..58a857998e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el04.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ELEMENT exception (#PCDATA)>
+<!ELEMENT exception (#PCDATA)>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el05.xml
new file mode 100644
index 0000000000..03355e2913
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el05.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root [
+<!ELEMENT root (#PCDATA|repeat-till-done|repeat-till-done)*>
+<!ELEMENT repeat-till-done (#PCDATA)>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el06.xml
new file mode 100644
index 0000000000..8473a08a9c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/el06.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+ <!-- in case parsers special-case builtin entities incorrectly -->
+]>
+<root>&amp;</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/empty.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/empty.xml
new file mode 100644
index 0000000000..2fc2410ab4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/empty.xml
@@ -0,0 +1,22 @@
+<!--
+ From: "Henry S. Thompson" <ht@cogsci.ed.ac.uk>
+
+ I'd be interested in reports from validating parsers wrt the
+ following:
+-->
+
+<!DOCTYPE foo [
+<!ELEMENT foo (a+)>
+<!ENTITY empty ''>
+<!ENTITY space ' '>
+<!ELEMENT a EMPTY>]>
+<foo>
+&empty;
+<a/>
+&space;
+<a/>
+<![CDATA[]]>
+<a/>
+<![CDATA[ ]]>
+<a/>
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id01.xml
new file mode 100644
index 0000000000..b5dc3245bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id01.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root SYSTEM "../valid/sa.dtd">
+
+<!-- values of type ID must match "name" -->
+
+<root>
+ <attributes id="42a"/>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id02.xml
new file mode 100644
index 0000000000..e0e3576cef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id02.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root SYSTEM "../valid/sa.dtd">
+
+<!-- a name must not appear more than once as a value of type id -->
+
+<root>
+ <attributes id="a42"/>
+ <attributes id="a42"/>
+</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id03.xml
new file mode 100644
index 0000000000..7234bd6376
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id03.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root SYSTEM "../valid/sa.dtd" [
+ <!ATTLIST attributes
+ id2 ID #IMPLIED
+ >
+]>
+
+<!-- no element type may have more than one ID attribute specified -->
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id04.xml
new file mode 100644
index 0000000000..101f898600
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id04.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE root [
+ <!ATTLIST root
+ id2 ID "x23"
+ >
+]>
+
+<!-- an ID attribute must have a declared default
+ of #IMPLIED or #REQUIRED
+-->
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id05.xml
new file mode 100644
index 0000000000..d7c6b7b173
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id05.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE root [
+ <!ELEMENT root ANY>
+ <!ATTLIST root
+ id2 ID #FIXED "x23"
+ >
+]>
+
+<!-- an ID attribute must have a declared default
+ of #IMPLIED or #REQUIRED
+-->
+
+<root/>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id06.xml
new file mode 100644
index 0000000000..b260121831
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id06.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE root [
+ <!ELEMENT root ANY>
+ <!ATTLIST root
+ id ID #IMPLIED
+ idref IDREF #IMPLIED
+ >
+]>
+
+<!-- Values of type IDREF must match the name production -->
+
+<root idref="36d">
+</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id07.xml
new file mode 100644
index 0000000000..959cec64d9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id07.xml
@@ -0,0 +1,16 @@
+<!DOCTYPE root [
+ <!ELEMENT root ANY>
+ <!ATTLIST root
+ id ID #IMPLIED
+ idref IDREF #IMPLIED
+ idrefs IDREFS #IMPLIED
+ >
+]>
+
+<!-- Values of type IDREFS must match the names production -->
+
+<root idrefs="d36 36d">
+</root>
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id08.xml
new file mode 100644
index 0000000000..fddeb7e881
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id08.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE root [
+ <!ELEMENT root ANY>
+ <!ATTLIST root
+ id ID #IMPLIED
+ idref IDREF #IMPLIED
+ >
+]>
+
+<!-- each name must match the value of an id attribute on some element -->
+
+<root idref="d36d">
+</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id09.xml
new file mode 100644
index 0000000000..3f096b4835
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/id09.xml
@@ -0,0 +1,17 @@
+<!DOCTYPE root [
+ <!ELEMENT root ANY>
+ <!ATTLIST root
+ id ID #IMPLIED
+ idref IDREF #IMPLIED
+ idrefs IDREFS #IMPLIED
+ >
+]>
+
+<!-- each name must match the value of an id attribute on some element -->
+
+<root idrefs="d36 ee38">
+ <root id="d36"/>
+</root>
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa01.xml
new file mode 100644
index 0000000000..714e544102
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa01.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE root SYSTEM "../valid/sa.dtd">
+
+<root>
+ <child>
+ The whitespace before and after this element keeps
+ this from being standalone.
+ </child>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa02.xml
new file mode 100644
index 0000000000..c8f551cf39
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa02.xml
@@ -0,0 +1,31 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd" [
+ <!ENTITY internal " number99">
+]>
+
+ <!-- sync with ../valid/not-sa02.xml -->
+
+ <!--
+ LOTS of normalized/defaulted attributes
+ keep this from being standalone
+
+ XXX not the best of tests!!
+ ... each type of normalization/defaulting
+ needs separate testing
+ -->
+
+<attributes
+ notation = " nonce "
+ nmtoken = " this-gets-normalized "
+ nmtokens = " this&#x0d;&#x0a; also gets&#x20; normalized "
+ id = " &internal; "
+ idref = " &internal;
+ "
+ idrefs = " &internal; &internal; &internal;"
+ entity = " unparsed-1 "
+ entities = "unparsed-1
+ unparsed-2
+"
+ cdata = "nothing happens to this one!"
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa04.xml
new file mode 100644
index 0000000000..947de49123
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa04.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd" [
+ <!--
+ attribute needs defaulting
+ -->
+]>
+
+<attributes/>
+
+<?pi equals three?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa05.xml
new file mode 100644
index 0000000000..c0bcd0e2e2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa05.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd" [
+ <!--
+ TOKEN needs normalization
+ -->
+]>
+
+<attributes
+ token = " c "
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa06.xml
new file mode 100644
index 0000000000..75e6b47cea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa06.xml
@@ -0,0 +1,13 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd" [
+ <!--
+ NOTATION needs normalization
+ -->
+]>
+
+<attributes
+ token = "b"
+ notation = " nonce "
+ />
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa07.xml
new file mode 100644
index 0000000000..df197543e3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa07.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd" [
+ <!--
+ NMTOKEN needs normalization
+ -->
+]>
+
+<attributes
+ token = "b"
+ nmtoken = " this-gets-normalized "
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa08.xml
new file mode 100644
index 0000000000..e07ac5958a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa08.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd" [
+ <!--
+ NMTOKENS needs normalization
+ -->
+]>
+
+<attributes
+ token = "b"
+ nmtokens = " this&#x0d;&#x0a; also gets&#x20; normalized "
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa09.xml
new file mode 100644
index 0000000000..3fec08820c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa09.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd" [
+ <!--
+ ID needs normalization
+ -->
+]>
+
+<attributes
+ token = "b"
+ id = " cindy "
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa10.xml
new file mode 100644
index 0000000000..467e6b8d57
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa10.xml
@@ -0,0 +1,14 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd" [
+ <!--
+ IDREF needs normalization
+ -->
+]>
+
+<attributes
+ token = "b"
+ id = "id43"
+ idref = " id43
+ "
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa11.xml
new file mode 100644
index 0000000000..ad259c4c94
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa11.xml
@@ -0,0 +1,14 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd" [
+ <!--
+ IDREFS needs normalization
+ -->
+]>
+
+<attributes
+ token = "b"
+ id = "date28"
+ idrefs = " date28 date28
+ date28 "
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa12.xml
new file mode 100644
index 0000000000..9cd4b879ac
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa12.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd" [
+ <!--
+ ENTITY needs normalization
+ -->
+]>
+
+<attributes
+ token = "b"
+ entity = " unparsed-1 "
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa13.xml
new file mode 100644
index 0000000000..5a3a8cfcc5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa13.xml
@@ -0,0 +1,16 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd" [
+ <!--
+ ENTITIES needs normalization
+ -->
+]>
+
+<attributes
+ token = "b"
+ entities = "
+ unparsed-1
+
+ unparsed-2
+ "
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa14.xml
new file mode 100644
index 0000000000..f3b3ee2092
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/not-sa14.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE root SYSTEM "../valid/sa.dtd">
+
+<root><![CDATA[
+ ]]><child>
+ The whitespace before and after this element keeps
+ this from being standalone. (CDATA is just another
+ way to represent text...)
+ </child><![CDATA[
+]]></root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional01.xml
new file mode 100644
index 0000000000..0d03c0f1cd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional01.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once></once>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional02.xml
new file mode 100644
index 0000000000..5f66c66d27
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional02.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once><e/><e/></once>
+</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional03.xml
new file mode 100644
index 0000000000..35c7ad9e4a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional03.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <twice></twice>
+</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional04.xml
new file mode 100644
index 0000000000..8614e248e7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional04.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <twice><e/><e/><e/></twice>
+</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional05.xml
new file mode 100644
index 0000000000..5b6669afce
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional05.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-a></once-or-twice-a>
+</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional06.xml
new file mode 100644
index 0000000000..44d815108a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional06.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-b></once-or-twice-b>
+</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional07.xml
new file mode 100644
index 0000000000..8745675957
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional07.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-c></once-or-twice-c>
+</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional08.xml
new file mode 100644
index 0000000000..fb6c545e17
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional08.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-d></once-or-twice-d>
+</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional09.xml
new file mode 100644
index 0000000000..91bb7f0fde
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional09.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-e></once-or-twice-e>
+</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional10.xml
new file mode 100644
index 0000000000..3a9703dd3d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional10.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-a><e/><e/><e/></once-or-twice-a>
+</root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional11.xml
new file mode 100644
index 0000000000..7aa6a089e1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional11.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-b><e/><e/><e/></once-or-twice-b>
+</root>
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional12.xml
new file mode 100644
index 0000000000..779c5e2623
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional12.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-c><e/><e/><e/></once-or-twice-c>
+</root>
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional13.xml
new file mode 100644
index 0000000000..5354404604
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional13.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-d><e/><e/><e/></once-or-twice-d>
+</root>
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional14.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional14.xml
new file mode 100644
index 0000000000..b6588dfe8c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional14.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-e><e/><e/><e/></once-or-twice-e>
+</root>
+
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional20.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional20.xml
new file mode 100644
index 0000000000..24f454ed4c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional20.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-a></once-or-twice-a>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional21.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional21.xml
new file mode 100644
index 0000000000..af57ff3d47
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional21.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-b></once-or-twice-b>
+</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional22.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional22.xml
new file mode 100644
index 0000000000..ae9a33c572
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional22.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-c></once-or-twice-c>
+</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional23.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional23.xml
new file mode 100644
index 0000000000..75edc24665
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional23.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-d></once-or-twice-d>
+</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional24.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional24.xml
new file mode 100644
index 0000000000..c3233098ef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional24.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-e></once-or-twice-e>
+</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional25.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional25.xml
new file mode 100644
index 0000000000..1b0eeb84a1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/optional25.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root SYSTEM "../valid/dtdtest.dtd">
+<root>
+ <once-or-twice-e>No text allowed!</once-or-twice-e>
+</root>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required00.xml
new file mode 100644
index 0000000000..e673fdc68b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required00.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+ <!ATTLIST root
+ req CDATA #REQUIRED
+ >
+]>
+
+<root/>
+
+<!-- doesn't include required 'req' attribute -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required01.xml
new file mode 100644
index 0000000000..290d369c01
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required01.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+]>
+
+<root xml:space='preserve'/>
+
+ <!-- all attributes must be declared -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required02.xml
new file mode 100644
index 0000000000..480f62af13
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/required02.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+]>
+
+<root xml:lang='en'/>
+
+ <!-- all attributes must be declared -->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/root.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/root.xml
new file mode 100644
index 0000000000..60896573a9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/root.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd">
+
+<!-- the name in the dtd must match the element type of the root element -->
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16b.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16b.xml
new file mode 100644
index 0000000000..52c7e2d18c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16b.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16l.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16l.xml
new file mode 100644
index 0000000000..2cad40a3c7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/invalid/utf16l.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Entries
new file mode 100644
index 0000000000..174092983f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Entries
@@ -0,0 +1,61 @@
+/attlist01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attlist02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attlist03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attlist04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attlist05.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attlist06.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attlist07.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attlist08.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attlist09.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attlist10.xml/1.2/Thu Feb 7 19:44:41 2002//
+/attlist11.xml/1.2/Thu Feb 7 19:44:41 2002//
+/cond.dtd/1.2/Thu Feb 7 19:44:41 2002//
+/cond01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/cond02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/content01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/content02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/content03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/decl01.ent/1.3/Tue Sep 30 15:08:39 2003//
+/decl01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/dtd00.xml/1.2/Thu Feb 7 19:44:41 2002//
+/dtd01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/dtd02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/dtd03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/dtd04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/dtd05.xml/1.2/Thu Feb 7 19:44:41 2002//
+/dtd07.dtd/1.2/Thu Feb 7 19:44:41 2002//
+/dtd07.xml/1.2/Thu Feb 7 19:44:41 2002//
+/element00.xml/1.2/Thu Feb 7 19:44:41 2002//
+/element01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/element02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/element03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/element04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/encoding01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/encoding02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/encoding03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/encoding04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/encoding05.xml/1.2/Thu Feb 7 19:44:41 2002//
+/encoding06.xml/1.2/Thu Feb 7 19:44:41 2002//
+/encoding07.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa03.xml/1.1/Thu May 16 14:30:27 2002//
+/pi.xml/1.2/Thu Feb 7 19:44:41 2002//
+/pubid01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/pubid02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/pubid03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/pubid04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/pubid05.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml05.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml06.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml07.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml08.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml09.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml10.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml11.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml12.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml13.xml/1.2/Thu Feb 7 19:44:41 2002//
+/uri01.xml/1.2/Thu Feb 7 19:44:41 2002//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Repository
new file mode 100644
index 0000000000..95984c5f42
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/sun/not-wf
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist01.xml
new file mode 100644
index 0000000000..9b25d73aa1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist01.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!-- SGML-ism: illegal attribute types -->
+
+ <!ATTLIST root
+ number NUTOKEN "1"
+ >
+
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist02.xml
new file mode 100644
index 0000000000..65405ca701
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist02.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!-- SGML-ism: illegal attribute types -->
+
+ <!ATTLIST root
+ number NUTOKENS "1 2 3"
+ >
+
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist03.xml
new file mode 100644
index 0000000000..a7174c9146
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist03.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!-- SGML-ism: illegal attribute types -->
+
+ <!ATTLIST root
+ choice (a,b,c) "a"
+ >
+
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist04.xml
new file mode 100644
index 0000000000..f45d656f63
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist04.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!-- SGML-ism: illegal attribute types -->
+
+ <!ATTLIST root
+ number NUMBER "1"
+ >
+
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist05.xml
new file mode 100644
index 0000000000..1705e80db2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist05.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!-- SGML-ism: illegal attribute types -->
+
+ <!ATTLIST root
+ numbers NUMBERS "1 2 3 4"
+ >
+
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist06.xml
new file mode 100644
index 0000000000..84444b4c9f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist06.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!-- SGML-ism: illegal attribute types -->
+
+ <!ATTLIST root
+ number NAME "Elvis"
+ >
+
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist07.xml
new file mode 100644
index 0000000000..3dd94e5926
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist07.xml
@@ -0,0 +1,13 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!-- SGML-ism: illegal attribute types -->
+
+ <!ATTLIST root
+ number NAMES "The King"
+ >
+
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist08.xml
new file mode 100644
index 0000000000..c9e54c6a53
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist08.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!-- SGML-ism: illegal attribute default -->
+
+ <!ATTLIST root
+ language CDATA #CURRENT
+ >
+
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist09.xml
new file mode 100644
index 0000000000..a1faf84494
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist09.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE root [
+ <!-- SGML-ism: illegal attribute default -->
+
+ <!ATTLIST root
+ language CDATA #CONREF
+ >
+
+]>
+
+<root language="Dutch"/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist10.xml
new file mode 100644
index 0000000000..d690200c65
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist10.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root att1 CDATA #IMPLIED>
+<!ATTLIST root att2 CDATA #IMPLIED>
+]>
+<root att1="value1"att2="value2">
+ <!-- whitespace required between attributes -->
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist11.xml
new file mode 100644
index 0000000000..67de117714
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/attlist11.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ATTLIST root att1 CDATA #IMPLIED>
+<!ATTLIST root att2 CDATA #IMPLIED>
+]>
+<root att1="value1"att2="value2"/>
+ <!-- whitespace required between attributes -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond.dtd
new file mode 100644
index 0000000000..4b43ef7a05
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond.dtd
@@ -0,0 +1,3 @@
+<!-- test conditional sections -->
+<!ENTITY % MAYBE "IGNORE">
+<![%MAYBE;[ <!ENTITY root EMTPY> ]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond01.xml
new file mode 100644
index 0000000000..5028d46e99
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root SYSTEM "cond.dtd" [
+ <!ENTITY % MAYBE "CDATA">
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond02.xml
new file mode 100644
index 0000000000..ce4e191c32
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/cond02.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root SYSTEM "cond.dtd" [
+ <!ENTITY % MAYBE "">
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content01.xml
new file mode 100644
index 0000000000..85c27dc874
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root [
+ <!-- no whitespace before '?', '*', '+' -->
+ <!ELEMENT root ((root) ?)>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content02.xml
new file mode 100644
index 0000000000..1086148a87
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content02.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+ <!-- no whitespace before '?', '*', '+' -->
+ <!ELEMENT root ((root) *)>
+]>
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content03.xml
new file mode 100644
index 0000000000..c4fdff1f81
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/content03.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+ <!-- no whitespace before '?', '*', '+' -->
+ <!ELEMENT root (root +)>
+]>
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.ent
new file mode 100644
index 0000000000..65059fdc85
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.ent
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- only documents may have standalone decls -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.xml
new file mode 100644
index 0000000000..ee57cb4d80
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/decl01.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+ <!ENTITY % ent01 SYSTEM "decl01.ent">
+
+ <!-- the entity is an illegal PE -->
+ %ent01;
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd00.xml
new file mode 100644
index 0000000000..5c3e9aa236
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd00.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root [
+ <!ELEMENT root (foo, bar? foo)>
+ <!-- comma omitted -->
+ <!ELEMENT foo EMPTY>
+ <!ELEMENT bar EMPTY>
+]>
+
+<root> <foo/> <foo/> </root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd01.xml
new file mode 100644
index 0000000000..3af805c7b1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd01.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root [
+ <!ELEMENT root (foo, bar? | foo)>
+ <!-- comma swapped for vertical bar -->
+ <!ELEMENT foo EMPTY>
+ <!ELEMENT bar EMPTY>
+]>
+
+<root> <foo/> <foo/> </root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd02.xml
new file mode 100644
index 0000000000..da2c6394fc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd02.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+ <!-- correct PE ref syntax -->
+ <!ENTITY % foo "<!ATTLIST root>">
+ % foo;
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd03.xml
new file mode 100644
index 0000000000..6f5234a955
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd03.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+ <!-- correct PE ref syntax -->
+ <!ENTITY % foo "<!ATTLIST root>">
+ %foo
+ ;
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd04.xml
new file mode 100644
index 0000000000..4acb0c2fee
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd04.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+ <!-- PUBLIC id must be quoted -->
+ <!ENTITY foo PUBLIC -//BadCorp//DTD-foo-1.0//EN "elvis.ent">
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd05.xml
new file mode 100644
index 0000000000..2d4c8cf889
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd05.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+ <!-- SYSTEM id must be quoted -->
+ <!ENTITY foo SYSTEM elvis.ent>
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.dtd
new file mode 100644
index 0000000000..7acb91f11f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.dtd
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!--
+ "encoding=..." is mandatory in text declarations.
+
+ All external entities (parameter, general) have optional text
+ declarations; only the document entity may omit this declaration.
+-->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.xml
new file mode 100644
index 0000000000..921ed63a4e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/dtd07.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE root SYSTEM "dtd07.dtd" [
+ <!ELEMENT root EMPTY>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element00.xml
new file mode 100644
index 0000000000..4d7a0110ff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element00.xml
@@ -0,0 +1,3 @@
+<root>
+ Incomplete end tag.
+</ro \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element01.xml
new file mode 100644
index 0000000000..c1796ccbdc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element01.xml
@@ -0,0 +1,3 @@
+<root>
+ Incomplete end tag.
+</root \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element02.xml
new file mode 100644
index 0000000000..da038ddae6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element02.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE html [ <!ELEMENT html ANY> ]>
+<html>
+ <% @ LANGUAGE="VBSCRIPT" %>
+</html>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element03.xml
new file mode 100644
index 0000000000..eb0c93ad49
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element03.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE html [ <!ELEMENT html ANY> ]>
+<html>
+ <% document.println ("hello, world"); %>
+</html>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element04.xml
new file mode 100644
index 0000000000..7f639c22fb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/element04.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE root [ <!ELEMENT root ANY> ]>
+<root>
+ <!ELEMENT foo EMPTY>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding01.xml
new file mode 100644
index 0000000000..5ef3915a0c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding01.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding=" utf-8"?>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding02.xml
new file mode 100644
index 0000000000..b6ebbb4a8e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding02.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="a/b"?>
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding03.xml
new file mode 100644
index 0000000000..be6cc1a511
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding03.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="just&#41;word"?>
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding04.xml
new file mode 100644
index 0000000000..dbecbcdd11
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding04.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf:8"?>
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding05.xml
new file mode 100644
index 0000000000..94edbfbc27
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding05.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="@import(sys-encoding)"?>
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding06.xml
new file mode 100644
index 0000000000..ee1a699e34
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding06.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="XYZ+999"?>
+
+<!-- WF ... but illegal encoding name, also a fatal error -->
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding07.xml
new file mode 100644
index 0000000000..cd225c577e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/encoding07.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!--
+ reusing this entity; it's got no markup decls,
+ so it's legal except for a missing "encoding=...".
+ -->
+ <!ENTITY empty SYSTEM "dtd07.dtd">
+]>
+<root>&empty;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/not-sa03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/not-sa03.xml
new file mode 100644
index 0000000000..6f1fb4ba92
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/not-sa03.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd" [
+ <!--
+ External entity ref
+ -->
+]>
+
+<attributes
+ token = "b"
+ id = "external-&number;"
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pi.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pi.xml
new file mode 100644
index 0000000000..c50a0f088c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pi.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!-- space before PI data and ?> -->
+<?bad-pi+?>
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid01.xml
new file mode 100644
index 0000000000..4df57fd534
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid01.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!-- illegal public ID characters -->
+
+ <!ENTITY e PUBLIC "this isn&apos;t allowed" "ignored">
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid02.xml
new file mode 100644
index 0000000000..c1a0da162c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid02.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!-- illegal public ID characters -->
+
+ <!ENTITY e PUBLIC "<illegal>" "ignored">
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid03.xml
new file mode 100644
index 0000000000..55b074c9af
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid03.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!-- illegal public ID characters -->
+
+ <!ENTITY e PUBLIC "[illegal]" "ignored">
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid04.xml
new file mode 100644
index 0000000000..fd268aa07a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid04.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!-- illegal public ID characters -->
+
+ <!ENTITY e PUBLIC "{ illegal }" "ignored">
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid05.xml
new file mode 100644
index 0000000000..a0e8bdd94a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/pubid05.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root [
+
+ <!-- SGML-ism: publid ID without system ID -->
+
+ <!ENTITY e PUBLIC "this is not allowed">
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml01.xml
new file mode 100644
index 0000000000..83fa98ccf1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml01.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+
+ <!-- SGML-ism: omitted end tag -->
+]>
+
+<root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml02.xml
new file mode 100644
index 0000000000..a22d74086a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml02.xml
@@ -0,0 +1,4 @@
+ <?xml version="1.0"?>
+ <!-- SGML-ism: XML PI not at beginning -->
+<!DOCTYPE root [ <!ELEMENT root EMPTY> ]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml03.xml
new file mode 100644
index 0000000000..78b4aa8e9c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml03.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE root [ <!ELEMENT root EMPTY> ]>
+
+ <!-- SGML-ism: -- inside comment -->
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml04.xml
new file mode 100644
index 0000000000..36f863c917
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml04.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE root [
+ <!-- SGML-ism: multiple attlist types -->
+
+ <!ELEMENT root EMPTY>
+ <!ELEMENT branch EMPTY>
+
+ <!ATTLIST (root|branch)
+ TreeType CDATA #REQUIRED
+ >
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml05.xml
new file mode 100644
index 0000000000..90217955e7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml05.xml
@@ -0,0 +1,12 @@
+<!DOCTYPE root [
+ <!-- SGML-ism: multiple element types -->
+
+ <!ELEMENT root EMPTY>
+ <!ELEMENT leaves EMPTY>
+ <!ELEMENT branch EMPTY>
+
+ <!ELEMENT (bush|tree) (root,leaves,branch)>
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml06.xml
new file mode 100644
index 0000000000..8ce6b55680
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml06.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE root [
+ <!-- Web-SGML-ism: global attlist types -->
+
+ <!ELEMENT root EMPTY>
+
+ <!ATTLIST #ALL
+ TreeType CDATA #REQUIRED
+ >
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml07.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml07.xml
new file mode 100644
index 0000000000..4622b83ba5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml07.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+ <!-- SGML-ism: omitted tag minimzation spec -->
+ <!ELEMENT root - o EMPTY>
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml08.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml08.xml
new file mode 100644
index 0000000000..5cf457c078
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml08.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root [
+ <!-- SGML-ism: omitted tag minimzation spec -->
+ <!ELEMENT root - - EMPTY>
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml09.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml09.xml
new file mode 100644
index 0000000000..d943ce9a9f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml09.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root [
+ <!-- SGML-ism: exception spec -->
+
+ <!ELEMENT footnote (para*) -footnote>
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml10.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml10.xml
new file mode 100644
index 0000000000..ba03a03915
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml10.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root [
+ <!-- SGML-ism: exception spec -->
+ <!ELEMENT section (header,(para|section))* +(annotation|todo)>
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml11.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml11.xml
new file mode 100644
index 0000000000..6d8e4a2794
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml11.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root [
+ <!-- SGML-ism: CDATA content type -->
+ <!ELEMENT ROOT CDATA>
+]>
+
+<root/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml12.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml12.xml
new file mode 100644
index 0000000000..e2f0b2e57c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml12.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root [
+ <!-- SGML-ism: RCDATA content type -->
+ <!ELEMENT ROOT RCDATA>
+]>
+
+<root/>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml13.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml13.xml
new file mode 100644
index 0000000000..97e9702eda
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/sgml13.xml
@@ -0,0 +1,11 @@
+<!DOCTYPE root [
+ <!-- SGML-ism: unordered content type -->
+ <!ELEMENT ROOT (a & b & c)>
+ <!ELEMENT a EMPTY>
+ <!ELEMENT b EMPTY>
+ <!ELEMENT c EMPTY>
+]>
+
+<root><b/><c/><a/></root>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/uri01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/uri01.xml
new file mode 100644
index 0000000000..c15ceb4960
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/not-wf/uri01.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!-- URI fragments disallowed -->
+<!ENTITY foo SYSTEM "foo#bar">
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-error.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-error.xml
new file mode 100644
index 0000000000..31656dc1b8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-error.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)error.xml 1.6 98/12/29
+ Copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+-->
+
+<TEST URI="not-wf/uri01.xml" ID="uri01" TYPE="error" SECTIONS="4.2.2 [75]">
+ SYSTEM ids may not have URI fragments</TEST>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-invalid.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-invalid.xml
new file mode 100644
index 0000000000..25464058df
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-invalid.xml
@@ -0,0 +1,359 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)invalid.xml 1.9 99/01/07
+ Copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+-->
+<TEST URI="invalid/dtd01.xml" ID="inv-dtd01" SECTIONS="3.2.2" TYPE="invalid">
+ Tests the No Duplicate Types VC</TEST>
+
+<TEST URI="invalid/dtd02.xml" ID="inv-dtd02" SECTIONS="4.2.2" TYPE="invalid">
+ Tests the "Notation Declared" VC by using an undeclared
+ notation name.</TEST>
+
+<TEST URI="invalid/dtd03.xml" ID="inv-dtd03" SECTIONS="3" TYPE="invalid">
+ Tests the "Element Valid" VC (clause 2)
+ by omitting a required element. </TEST>
+
+<TEST URI="invalid/el01.xml" ID="el01" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 4)
+ by including an undeclared child element. </TEST>
+
+<TEST URI="invalid/el02.xml" ID="el02" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 1)
+ by including elements in an EMPTY content model. </TEST>
+
+<TEST URI="invalid/el03.xml" ID="el03" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 3) by including a child element
+ not permitted by a mixed content model. </TEST>
+
+<TEST URI="invalid/el04.xml" ID="el04" SECTIONS="3.2" TYPE="invalid">
+ Tests the Unique Element Type Declaration VC. </TEST>
+
+<TEST URI="invalid/el05.xml" ID="el05" SECTIONS="3.2.2" TYPE="invalid">
+ Tests the No Duplicate Types VC. </TEST>
+
+<TEST URI="invalid/el06.xml" ID="el06" SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 1),
+ using one of the predefined internal entities
+ inside an EMPTY content model.</TEST>
+
+<TEST URI="invalid/id01.xml" ID="id01" ENTITIES="parameter" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the ID (is a Name) VC</TEST>
+
+<TEST URI="invalid/id02.xml" ID="id02" ENTITIES="parameter" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the ID (appears once) VC</TEST>
+
+<TEST URI="invalid/id03.xml" ID="id03" ENTITIES="parameter" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the One ID per Element Type VC</TEST>
+
+<TEST URI="invalid/id04.xml" ID="id04" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the ID Attribute Default VC</TEST>
+
+<TEST URI="invalid/id05.xml" ID="id05" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the ID Attribute Default VC</TEST>
+
+<TEST URI="invalid/id06.xml" ID="id06" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the IDREF (is a Name) VC</TEST>
+
+<TEST URI="invalid/id07.xml" ID="id07" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the IDREFS (is a Names) VC</TEST>
+
+<TEST URI="invalid/id08.xml" ID="id08" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the IDREF (matches an ID) VC</TEST>
+
+<TEST URI="invalid/id09.xml" ID="id09" SECTIONS="3.3.1" TYPE="invalid">
+ Tests the IDREF (IDREFS matches an ID) VC</TEST>
+
+<TEST URI="invalid/not-sa01.xml" ID="inv-not-sa01" ENTITIES="parameter"
+ SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ optional whitespace causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa02.xml" ID="inv-not-sa02" ENTITIES="parameter"
+ SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ attributes needing normalization cause a validity error.</TEST>
+
+<TEST URI="invalid/not-sa04.xml" ID="inv-not-sa04" ENTITIES="parameter"
+ SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ attributes needing defaulting cause a validity error.</TEST>
+
+<TEST URI="invalid/not-sa05.xml" ID="inv-not-sa05" ENTITIES="parameter"
+ SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ a token attribute that needs normalization causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa06.xml" ID="inv-not-sa06" ENTITIES="parameter"
+ SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ a NOTATION attribute that needs normalization
+ causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa07.xml" ID="inv-not-sa07" ENTITIES="parameter"
+ SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an NMTOKEN attribute needing normalization
+ causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa08.xml" ID="inv-not-sa08" ENTITIES="parameter"
+ SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an NMTOKENS attribute needing normalization
+ causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa09.xml" ID="inv-not-sa09" ENTITIES="parameter"
+ SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ID attribute needing normalization causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa10.xml" ID="inv-not-sa10" ENTITIES="parameter"
+ SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an IDREF attribute needing normalization causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa11.xml" ID="inv-not-sa11" ENTITIES="parameter"
+ SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an IDREFS attribute needing normalization causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa12.xml" ID="inv-not-sa12" ENTITIES="parameter"
+ SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ENTITY attribute needing normalization causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa13.xml" ID="inv-not-sa13" ENTITIES="parameter"
+ SECTIONS="2.9" TYPE="invalid">
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ENTITIES attribute needing normalization causes a validity error.</TEST>
+
+<TEST URI="invalid/not-sa14.xml" ID="inv-not-sa14" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ CDATA sections containing only whitespace do not match the nonterminal S, and cannot
+ appear in these positions.</TEST>
+
+<TEST URI="invalid/optional01.xml" ID="optional01" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing no children where
+ one is required.</TEST>
+
+<TEST URI="invalid/optional02.xml" ID="optional02" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ two children where one is required.</TEST>
+
+<TEST URI="invalid/optional03.xml" ID="optional03" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where two are required.</TEST>
+
+<TEST URI="invalid/optional04.xml" ID="optional04" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where two are required.</TEST>
+
+<TEST URI="invalid/optional05.xml" ID="optional05" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (one construction of that model).</TEST>
+
+<TEST URI="invalid/optional06.xml" ID="optional06" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a second construction of that model).</TEST>
+
+<TEST URI="invalid/optional07.xml" ID="optional07" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a third construction of that model).</TEST>
+
+<TEST URI="invalid/optional08.xml" ID="optional08" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a fourth construction of that model).</TEST>
+
+<TEST URI="invalid/optional09.xml" ID="optional09" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a fifth construction of that model).</TEST>
+
+<TEST URI="invalid/optional10.xml" ID="optional10" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a basic construction of that model).</TEST>
+
+<TEST URI="invalid/optional11.xml" ID="optional11" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a second construction of that model).</TEST>
+
+<TEST URI="invalid/optional12.xml" ID="optional12" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a third construction of that model).</TEST>
+
+<TEST URI="invalid/optional13.xml" ID="optional13" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a fourth construction of that model).</TEST>
+
+<TEST URI="invalid/optional14.xml" ID="optional14" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a fifth construction of that model).</TEST>
+
+<TEST URI="invalid/optional20.xml" ID="optional20" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a sixth construction of that model).</TEST>
+
+<TEST URI="invalid/optional21.xml" ID="optional21" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a seventh construction of that model).</TEST>
+
+<TEST URI="invalid/optional22.xml" ID="optional22" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (an eigth construction of that model).</TEST>
+
+<TEST URI="invalid/optional23.xml" ID="optional23" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a ninth construction of that model).</TEST>
+
+<TEST URI="invalid/optional24.xml" ID="optional24" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a tenth construction of that model).</TEST>
+
+<TEST URI="invalid/optional25.xml" ID="optional25" ENTITIES="parameter"
+ SECTIONS="3" TYPE="invalid">
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ text content where one or more elements are
+ required.</TEST>
+
+<TEST URI="invalid/required00.xml" ID="inv-required00"
+ SECTIONS="3.3.2" TYPE="invalid">
+ Tests the Required Attribute VC.</TEST>
+
+<TEST URI="invalid/required01.xml" ID="inv-required01"
+ SECTIONS="3.1 2.10" TYPE="invalid">
+ Tests the Attribute Value Type (declared)
+ VC for the xml:space attribute</TEST>
+
+<TEST URI="invalid/required02.xml" ID="inv-required02"
+ SECTIONS="3.1 2.12" TYPE="invalid">
+ Tests the Attribute Value Type (declared)
+ VC for the xml:lang attribute</TEST>
+
+<TEST URI="invalid/root.xml" ID="root" ENTITIES="parameter" SECTIONS="2.8" TYPE="invalid">
+ Tests the Root Element Type VC</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr01.xml" ID="attr01" SECTIONS="3.3.1">
+ Tests the "Entity Name" VC for the ENTITY attribute type.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr02.xml" ID="attr02" SECTIONS="3.3.1">
+ Tests the "Entity Name" VC for the ENTITIES attribute type.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr03.xml" ID="attr03" SECTIONS="3.3.1">
+ Tests the "Notation Attributes" VC for the
+ NOTATION attribute type, first clause: value must be one
+ of the ones that's declared.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr04.xml" ID="attr04" SECTIONS="3.3.1">
+ Tests the "Notation Attributes" VC for the
+ NOTATION attribute type, second clause: the names in the
+ declaration must all be declared.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr05.xml" ID="attr05" SECTIONS="3.3.1">
+ Tests the "Name Token" VC for the NMTOKEN attribute type.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr06.xml" ID="attr06" SECTIONS="3.3.1">
+ Tests the "Name Token" VC for the NMTOKENS attribute type.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr07.xml" ID="attr07" SECTIONS="3.3.1">
+ Tests the "Enumeration" VC by providing
+ a value which wasn't one of the choices.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr08.xml" ID="attr08" SECTIONS="3.3.2">
+ Tests the "Fixed Attribute Default" VC by
+ providing the wrong value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr09.xml" ID="attr09" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal IDREF value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr10.xml" ID="attr10" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal IDREFS value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr11.xml" ID="attr11" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal ENTITY value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr12.xml" ID="attr12" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal ENTITIES value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr13.xml" ID="attr13" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NMTOKEN value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr14.xml" ID="attr14" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NMTOKENS value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr15.xml" ID="attr15" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NOTATIONS value.</TEST>
+
+<TEST TYPE="invalid" URI="invalid/attr16.xml" ID="attr16" SECTIONS="3.3.2">
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal enumeration value.</TEST>
+
+<TEST URI="invalid/utf16b.xml" ID="utf16b" SECTIONS="4.3.3 2.8" TYPE="invalid">
+ Tests reading an invalid "big endian" UTF-16 document</TEST>
+
+<TEST URI="invalid/utf16l.xml" ID="utf16l" SECTIONS="4.3.3 2.8" TYPE="invalid">
+ Tests reading an invalid "little endian" UTF-16 document</TEST>
+
+<TEST URI="invalid/empty.xml" ID="empty" TYPE="invalid" SECTIONS="2.4 2.7 [18] 3">
+ CDATA section containing only white space does not match the nonterminal S, and cannot
+ appear in these positions. </TEST>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-not-wf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-not-wf.xml
new file mode 100644
index 0000000000..1203bc024f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-not-wf.xml
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)not-wf.xml 1.6 98/12/29
+ Copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+-->
+<TEST URI="not-wf/not-sa03.xml" ID="not-wf-sa03" ENTITIES="parameter"
+ SECTIONS="2.9" TYPE="not-wf">
+ Tests the Entity Declared WFC, ensuring that
+ a reference to externally defined entity causes a well-formedness error.</TEST>
+<TEST ID="attlist01" URI="not-wf/attlist01.xml" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's NUTOKEN is not allowed.</TEST>
+
+<TEST ID="attlist02" URI="not-wf/attlist02.xml" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's NUTOKENS attribute type is not allowed.</TEST>
+
+<TEST ID="attlist03" URI="not-wf/attlist03.xml" TYPE="not-wf" SECTIONS="3.3.1 [59]">
+ Comma doesn't separate enumerations, unlike in SGML.</TEST>
+
+<TEST ID="attlist04" URI="not-wf/attlist04.xml" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's NUMBER attribute type is not allowed.</TEST>
+
+<TEST ID="attlist05" URI="not-wf/attlist05.xml" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's NUMBERS attribute type is not allowed.</TEST>
+
+<TEST ID="attlist06" URI="not-wf/attlist06.xml" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's NAME attribute type is not allowed.</TEST>
+
+<TEST URI="not-wf/attlist07.xml" ID="attlist07" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's NAMES attribute type is not allowed.</TEST>
+
+<TEST URI="not-wf/attlist08.xml" ID="attlist08" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's #CURRENT is not allowed.</TEST>
+
+<TEST URI="not-wf/attlist09.xml" ID="attlist09" TYPE="not-wf" SECTIONS="3.3.1 [56]">
+ SGML's #CONREF is not allowed.</TEST>
+
+<TEST URI="not-wf/attlist10.xml" ID="attlist10" TYPE="not-wf" SECTIONS="3.1 [40]">
+ Whitespace required between attributes</TEST>
+
+<TEST URI="not-wf/attlist11.xml" ID="attlist11" TYPE="not-wf" SECTIONS="3.1 [44]">
+ Whitespace required between attributes</TEST>
+
+<TEST URI="not-wf/cond01.xml" ID="cond01" TYPE="not-wf" SECTIONS="3.4 [61]" ENTITIES="parameter">
+ Only INCLUDE and IGNORE are conditional section keywords</TEST>
+
+<TEST URI="not-wf/cond02.xml" ID="cond02" TYPE="not-wf" SECTIONS="3.4 [61]" ENTITIES="parameter">
+ Must have keyword in conditional sections</TEST>
+
+<TEST URI="not-wf/content01.xml" ID="content01" TYPE="not-wf" SECTIONS="3.2.1 [48]">
+ No whitespace before "?" in content model</TEST>
+
+<TEST URI="not-wf/content02.xml" ID="content02" TYPE="not-wf" SECTIONS="3.2.1 [48]">
+ No whitespace before "*" in content model</TEST>
+
+<TEST URI="not-wf/content03.xml" ID="content03" TYPE="not-wf" SECTIONS="3.2.1 [48]">
+ No whitespace before "+" in content model</TEST>
+
+<TEST URI="not-wf/decl01.xml" ID="decl01" TYPE="not-wf" SECTIONS="4.3.1 [77]"
+ ENTITIES="parameter">
+ External entities may not have standalone decls. </TEST>
+
+<TEST URI="not-wf/dtd00.xml" ID="nwf-dtd00" TYPE="not-wf" SECTIONS="3.2.1 [55]">
+ Comma mandatory in content model</TEST>
+
+<TEST URI="not-wf/dtd01.xml" ID="nwf-dtd01" TYPE="not-wf" SECTIONS="3.2.1 [55]">
+ Can't mix comma and vertical bar in content models</TEST>
+
+<TEST URI="not-wf/dtd02.xml" ID="dtd02" TYPE="not-wf" SECTIONS="4.1 [69]">
+ PE name immediately after "%"</TEST>
+
+<TEST URI="not-wf/dtd03.xml" ID="dtd03" TYPE="not-wf" SECTIONS="4.1 [69]">
+ PE name immediately followed by ";"</TEST>
+
+<TEST URI="not-wf/dtd04.xml" ID="dtd04" TYPE="not-wf" SECTIONS="4.2.2 [75]">
+ PUBLIC literal must be quoted</TEST>
+
+<TEST URI="not-wf/dtd05.xml" ID="dtd05" TYPE="not-wf" SECTIONS="4.2.2 [75]">
+ SYSTEM identifier must be quoted</TEST>
+
+<TEST URI="not-wf/dtd07.xml" ID="dtd07" TYPE="not-wf" SECTIONS="4.3.1 [77]" ENTITIES="parameter">
+ Text declarations (which optionally begin any external entity)
+ are required to have "encoding=...". </TEST>
+
+
+<TEST URI="not-wf/element00.xml" ID="element00" TYPE="not-wf" SECTIONS="3.1 [42]">
+ EOF in middle of incomplete ETAG</TEST>
+
+<TEST URI="not-wf/element01.xml" ID="element01" TYPE="not-wf" SECTIONS="3.1 [42]">
+ EOF in middle of incomplete ETAG</TEST>
+
+<TEST URI="not-wf/element02.xml" ID="element02" TYPE="not-wf" SECTIONS="3.1 [43]">
+ Illegal markup (&lt;%@ ... %&gt;)</TEST>
+
+<TEST URI="not-wf/element03.xml" ID="element03" TYPE="not-wf" SECTIONS="3.1 [43]">
+ Illegal markup (&lt;% ... %&gt;)</TEST>
+
+<TEST URI="not-wf/element04.xml" ID="element04" TYPE="not-wf" SECTIONS="3.1 [43]">
+ Illegal markup (&lt;!ELEMENT ... &gt;)</TEST>
+
+<TEST URI="not-wf/encoding01.xml" ID="encoding01" TYPE="not-wf" SECTIONS="4.3.3 [81]">
+ Illegal character " " in encoding name</TEST>
+
+<TEST URI="not-wf/encoding02.xml" ID="encoding02" TYPE="not-wf" SECTIONS="4.3.3 [81]">
+ Illegal character "/" in encoding name</TEST>
+
+<TEST URI="not-wf/encoding03.xml" ID="encoding03" TYPE="not-wf" SECTIONS="4.3.3 [81]">
+ Illegal character reference in encoding name</TEST>
+
+<TEST URI="not-wf/encoding04.xml" ID="encoding04" TYPE="not-wf" SECTIONS="4.3.3 [81]">
+ Illegal character ":" in encoding name</TEST>
+
+<TEST URI="not-wf/encoding05.xml" ID="encoding05" TYPE="not-wf" SECTIONS="4.3.3 [81]">
+ Illegal character "@" in encoding name</TEST>
+
+<TEST URI="not-wf/encoding06.xml" ID="encoding06" TYPE="not-wf" SECTIONS="4.3.3 [81]">
+ Illegal character "+" in encoding name</TEST>
+
+<TEST URI="not-wf/encoding07.xml" ID="encoding07" TYPE="not-wf" SECTIONS="4.3.1 [77]" ENTITIES="parameter">
+ Text declarations (which optionally begin any external entity)
+ are required to have "encoding=...". </TEST>
+
+<TEST URI="not-wf/pi.xml" ID="pi" TYPE="not-wf" SECTIONS="2.6 [16]">
+ No space between PI target name and data</TEST>
+
+<TEST URI="not-wf/pubid01.xml" ID="pubid01" TYPE="not-wf" SECTIONS="2.3 [12]">
+ Illegal entity ref in public ID</TEST>
+
+<TEST URI="not-wf/pubid02.xml" ID="pubid02" TYPE="not-wf" SECTIONS="2.3 [12]">
+ Illegal characters in public ID</TEST>
+
+<TEST URI="not-wf/pubid03.xml" ID="pubid03" TYPE="not-wf" SECTIONS="2.3 [12]">
+ Illegal characters in public ID</TEST>
+
+<TEST URI="not-wf/pubid04.xml" ID="pubid04" TYPE="not-wf" SECTIONS="2.3 [12]">
+ Illegal characters in public ID</TEST>
+
+<TEST URI="not-wf/pubid05.xml" ID="pubid05" TYPE="not-wf" SECTIONS="2.3 [12]">
+ SGML-ism: public ID without system ID</TEST>
+
+<TEST URI="not-wf/sgml01.xml" ID="sgml01" TYPE="not-wf" SECTIONS="3 [39]">
+ SGML-ism: omitted end tag for EMPTY content</TEST>
+
+<TEST URI="not-wf/sgml02.xml" ID="sgml02" TYPE="not-wf" SECTIONS="2.8 ">
+ XML declaration must be at the very beginning of a document;
+ it"s not a processing instruction</TEST>
+
+<TEST URI="not-wf/sgml03.xml" ID="sgml03" TYPE="not-wf" SECTIONS="2.5 [15]">
+ Comments may not contain "--"</TEST>
+
+<TEST URI="not-wf/sgml04.xml" ID="sgml04" TYPE="not-wf" SECTIONS="3.3 [52]">
+ ATTLIST declarations apply to only one element, unlike SGML</TEST>
+
+<TEST URI="not-wf/sgml05.xml" ID="sgml05" TYPE="not-wf" SECTIONS="3.2 [45]">
+ ELEMENT declarations apply to only one element, unlike SGML</TEST>
+
+<TEST URI="not-wf/sgml06.xml" ID="sgml06" TYPE="not-wf" SECTIONS="3.3 [52]">
+ ATTLIST declarations are never global, unlike in SGML</TEST>
+
+<TEST URI="not-wf/sgml07.xml" ID="sgml07" TYPE="not-wf" SECTIONS="3.2 [45]">
+ SGML Tag minimization specifications are not allowed</TEST>
+
+<TEST URI="not-wf/sgml08.xml" ID="sgml08" TYPE="not-wf" SECTIONS="3.2 [45]">
+ SGML Tag minimization specifications are not allowed</TEST>
+
+<TEST URI="not-wf/sgml09.xml" ID="sgml09" TYPE="not-wf" SECTIONS="3.2 [45]">
+ SGML Content model exception specifications are not allowed</TEST>
+
+<TEST URI="not-wf/sgml10.xml" ID="sgml10" TYPE="not-wf" SECTIONS="3.2 [45]">
+ SGML Content model exception specifications are not allowed</TEST>
+
+<TEST URI="not-wf/sgml11.xml" ID="sgml11" TYPE="not-wf" SECTIONS="3.2 [46]">
+ CDATA is not a valid content model spec</TEST>
+
+<TEST URI="not-wf/sgml12.xml" ID="sgml12" TYPE="not-wf" SECTIONS="3.2 [46]">
+ RCDATA is not a valid content model spec</TEST>
+
+<TEST URI="not-wf/sgml13.xml" ID="sgml13" TYPE="not-wf" SECTIONS="3.2.1 [47]">
+ SGML Unordered content models not allowed</TEST>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-valid.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-valid.xml
new file mode 100644
index 0000000000..dceefe110d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/sun-valid.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)valid.xml 1.6 99/01/21
+ Copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+-->
+<TEST URI="valid/pe01.xml" ID="pe01" ENTITIES="parameter" SECTIONS="2.8" TYPE="valid">
+ Parameter entities references are NOT RECOGNIZED in default attribute
+ values.</TEST>
+
+<TEST URI="valid/dtd00.xml" ID="dtd00" SECTIONS="3.2.2 [51]" TYPE="valid"
+ OUTPUT="valid/out/dtd00.xml">
+ Tests parsing of alternative forms of text-only mixed
+ content declaration.</TEST>
+
+<TEST URI="valid/dtd01.xml" ID="dtd01" TYPE="valid" SECTIONS="2.5 [15]"
+ OUTPUT="valid/out/dtd01.xml">
+ Comments don't get parameter entity expansion</TEST>
+
+<TEST URI="valid/element.xml" ID="element" TYPE="valid" SECTIONS="3"
+ OUTPUT="valid/out/element.xml">
+ Tests clauses 1, 3, and 4 of the Element Valid
+ validity constraint.</TEST>
+
+<TEST URI="valid/ext01.xml" ID="ext01" ENTITIES="general"
+ OUTPUT="valid/out/ext01.xml"
+ SECTIONS="4.3.1 4.3.2 [77] [78]" TYPE="valid">
+ Tests use of external parsed entities with and without content.</TEST>
+
+<TEST URI="valid/ext02.xml" ID="ext02" ENTITIES="general" SECTIONS="4.3.2 [78]" TYPE="valid"
+ OUTPUT="valid/out/ext02.xml">
+ Tests use of external parsed entities with different
+ encodings than the base document.</TEST>
+
+<TEST URI="valid/not-sa01.xml" ENTITIES="parameter" ID="not-sa01" TYPE="valid" SECTIONS="2.9"
+ OUTPUT="valid/out/not-sa01.xml">
+ A non-standalone document is valid if declared as such.</TEST>
+
+<TEST URI="valid/not-sa02.xml" ENTITIES="parameter" ID="not-sa02" TYPE="valid" SECTIONS="2.9"
+ OUTPUT="valid/out/not-sa02.xml">
+ A non-standalone document is valid if declared as such.</TEST>
+
+<TEST URI="valid/not-sa03.xml" ENTITIES="parameter" ID="not-sa03" TYPE="valid" SECTIONS="2.9"
+ OUTPUT="valid/out/not-sa03.xml">
+ A non-standalone document is valid if declared as such.</TEST>
+
+<TEST URI="valid/not-sa04.xml" ENTITIES="parameter" ID="not-sa04" TYPE="valid" SECTIONS="2.9"
+ OUTPUT="valid/out/not-sa04.xml">
+ A non-standalone document is valid if declared as such. </TEST>
+
+<TEST URI="valid/notation01.xml" ENTITIES="parameter" ID="notation01" TYPE="valid"
+ OUTPUT="valid/out/notation01.xml"
+ SECTIONS="4.7 [82]">
+ NOTATION declarations don't need SYSTEM IDs; and
+ externally declared notations may be used to declare
+ unparsed entities in the internal DTD subset.
+ The notation must be reported to the application.
+ </TEST>
+
+<TEST URI="valid/optional.xml" ENTITIES="parameter" ID="optional" TYPE="valid"
+ OUTPUT="valid/out/optional.xml"
+ SECTIONS="3 3.2.1 [47]">
+ Tests declarations of "children" content models, and
+ the validity constraints associated with them.</TEST>
+
+<TEST URI="valid/required00.xml" ID="required00" TYPE="valid"
+ OUTPUT="valid/out/required00.xml"
+ SECTIONS="3.3.2 [60]">
+ Tests the #REQUIRED attribute declaration syntax, and
+ the associated validity constraint. </TEST>
+
+<TEST URI="valid/sa01.xml" ID="sa01" TYPE="valid" SECTIONS="2.9 [32]"
+ OUTPUT="valid/out/sa01.xml">
+ A document may be marked 'standalone' if any optional
+ whitespace is defined within the internal DTD subset.</TEST>
+
+<TEST URI="valid/sa02.xml" ID="sa02" TYPE="valid" SECTIONS="2.9 [32]"
+ OUTPUT="valid/out/sa02.xml">
+ A document may be marked 'standalone' if any
+ attributes that need normalization are
+ defined within the internal DTD subset.</TEST>
+
+<TEST URI="valid/sa03.xml" ENTITIES="parameter" ID="sa03" TYPE="valid" SECTIONS="2.9 [32]"
+ OUTPUT="valid/out/sa03.xml">
+ A document may be marked 'standalone' if any
+ the defined entities need expanding are internal,
+ and no attributes need defaulting or normalization.
+ On output, requires notations to be correctly reported.
+ </TEST>
+
+<TEST URI="valid/sa04.xml" ID="sa04" ENTITIES="parameter" TYPE="valid" SECTIONS="2.9 [32]"
+ OUTPUT="valid/out/sa04.xml">
+ Like sa03 but relies on attribute
+ defaulting defined in the internal subset.
+ On output, requires notations to be correctly reported.
+ </TEST>
+
+<TEST URI="valid/sa05.xml" ID="sa05" ENTITIES="parameter" TYPE="valid" SECTIONS="2.9 [32]"
+ OUTPUT="valid/out/sa05.xml">
+ Like sa01 but this document is standalone
+ since it has no optional whitespace.
+ On output, requires notations to be correctly reported.
+ </TEST>
+
+<TEST URI="valid/sgml01.xml" ID="v-sgml01" SECTIONS="3.3.1 [59]" TYPE="valid"
+ OUTPUT="valid/out/sgml01.xml">
+ XML permits token reuse, while SGML does not.</TEST>
+
+<TEST URI="valid/v-lang01.xml"
+ OUTPUT="valid/out/v-lang01.xml"
+ ID="v-lang01" SECTIONS="2.12 [35]" TYPE="valid">
+ Tests a lowercase ISO language code.</TEST>
+
+<TEST URI="valid/v-lang02.xml" ID="v-lang02" SECTIONS="2.12 [35]" TYPE="valid"
+ OUTPUT="valid/out/v-lang02.xml">
+ Tests a ISO language code with a subcode.</TEST>
+
+<TEST URI="valid/v-lang03.xml" ID="v-lang03" SECTIONS="2.12 [36]" TYPE="valid"
+ OUTPUT="valid/out/v-lang03.xml">
+ Tests a IANA language code with a subcode.</TEST>
+
+<TEST URI="valid/v-lang04.xml" ID="v-lang04" SECTIONS="2.12 [37]" TYPE="valid"
+ OUTPUT="valid/out/v-lang04.xml">
+ Tests a user language code with a subcode.</TEST>
+
+<TEST URI="valid/v-lang05.xml" ID="v-lang05" SECTIONS="2.12 [35]" TYPE="valid"
+ OUTPUT="valid/out/v-lang05.xml">
+ Tests an uppercase ISO language code.</TEST>
+
+<TEST URI="valid/v-lang06.xml" ID="v-lang06" SECTIONS="2.12 [37]" TYPE="valid"
+ OUTPUT="valid/out/v-lang06.xml">
+ Tests a user language code.</TEST>
+
+<TEST URI="valid/pe00.xml" ENTITIES="parameter" ID="v-pe00" SECTIONS="4.5" TYPE="valid"
+ OUTPUT="valid/out/pe00.xml">
+ Tests construction of internal entity replacement text, using
+ an example in the XML specification. </TEST>
+
+<TEST URI="valid/pe03.xml" ID="v-pe03" SECTIONS="4.5" TYPE="valid"
+ OUTPUT="valid/out/pe03.xml">
+ Tests construction of internal entity replacement text, using
+ an example in the XML specification. </TEST>
+
+<TEST URI="valid/pe02.xml" ENTITIES="parameter" ID="v-pe02" SECTIONS="4.5" TYPE="valid"
+ OUTPUT="valid/out/pe02.xml">
+ Tests construction of internal entity replacement text, using
+ a complex example in the XML specification. </TEST>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Entries
new file mode 100644
index 0000000000..cecb2c4024
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Entries
@@ -0,0 +1,37 @@
+/dtd00.xml/1.2/Thu Feb 7 19:44:41 2002//
+/dtd01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/dtdtest.dtd/1.3/Wed May 1 17:59:08 2002//
+/element.xml/1.2/Thu Feb 7 19:44:41 2002//
+/ext01.ent/1.2/Thu Feb 7 19:44:41 2002//
+/ext01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/ext02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa02.xml/1.3/Mon Apr 22 13:16:53 2002//
+/not-sa03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/notation01.dtd/1.2/Thu Feb 7 19:44:41 2002//
+/notation01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/null.ent/1.1/Mon Feb 11 18:38:34 2002//
+/optional.xml/1.3/Wed May 1 18:06:13 2002//
+/pe00.dtd/1.2/Thu Feb 7 19:44:41 2002//
+/pe00.xml/1.2/Thu Feb 7 19:44:41 2002//
+/pe01.dtd/1.1/Fri Feb 22 16:47:37 2002//
+/pe01.ent/1.1/Fri Feb 22 16:47:37 2002//
+/pe01.xml/1.4/Fri Feb 22 16:47:37 2002//
+/pe02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/pe03.xml/1.1/Thu Feb 21 18:51:30 2002//
+/required00.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sa.dtd/1.2/Thu Feb 7 19:44:41 2002//
+/sa01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sa02.xml/1.3/Mon Apr 22 13:12:39 2002//
+/sa03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sa04.xml/1.3/Thu Apr 3 14:58:00 2003//
+/sa05.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/v-lang01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/v-lang02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/v-lang03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/v-lang04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/v-lang05.xml/1.2/Thu Feb 7 19:44:41 2002//
+/v-lang06.xml/1.2/Thu Feb 7 19:44:41 2002//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Repository
new file mode 100644
index 0000000000..c0debafe50
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/sun/valid
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd00.xml
new file mode 100644
index 0000000000..d92c44bda4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd00.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+ <!ELEMENT x (#PCDATA)>
+ <!ELEMENT y (#PCDATA)*>
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd01.xml
new file mode 100644
index 0000000000..b0d6ae4ebd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtd01.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+ <!ENTITY % PE "this is a PE">
+ <!-- %these; %are; %not; %PEs; -->
+]>
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtdtest.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtdtest.dtd
new file mode 100644
index 0000000000..56539d0da4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/dtdtest.dtd
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!ELEMENT root ANY>
+
+<!ELEMENT e EMPTY>
+
+<!ELEMENT once (e)>
+<!ELEMENT twice (e,e)>
+
+<!ENTITY % once-or-twice-a "(e,(e)?)">
+<!ENTITY % once-or-twice-b "((e),e?)">
+<!ENTITY % once-or-twice-c "((e),(e)?)">
+<!ENTITY % once-or-twice-d "(((e)),e?)">
+<!ENTITY % once-or-twice-e "(e,(((e)))?)">
+
+<!-- disallowed by spec; a document error, parser needn't report -->
+<!-- (e?,e) -->
+
+<!ELEMENT once-or-twice-a %once-or-twice-a;>
+<!ELEMENT once-or-twice-b %once-or-twice-b;>
+<!ELEMENT once-or-twice-c %once-or-twice-c;>
+<!ELEMENT once-or-twice-d %once-or-twice-d;>
+<!ELEMENT once-or-twice-e %once-or-twice-e;>
+
+<!-- disallowed by spec; a document error, parser needn't report -->
+<!--
+ <!ELEMENT once-or-twice-X (Xonce;|Xtwice)>
+ ... above, 'X' should be a percent sign but this comment
+ is being nice to those parsers that try to parse comments
+ (they shouldn't)
+-->
+
+<!ENTITY % once-or-more-a "(e+)">
+<!ENTITY % once-or-more-b "(e,e*)">
+<!ENTITY % once-or-more-c "((e)+)">
+<!ENTITY % once-or-more-d "((e),e*)">
+<!ENTITY % once-or-more-e "(e,(e)*)">
+
+<!ELEMENT once-or-more-a %once-or-more-a;>
+<!ELEMENT once-or-more-b %once-or-more-b;>
+<!ELEMENT once-or-more-c %once-or-more-c;>
+<!ELEMENT once-or-more-d %once-or-more-d;>
+<!ELEMENT once-or-more-e %once-or-more-e;>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/element.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/element.xml
new file mode 100644
index 0000000000..9f02030aea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/element.xml
@@ -0,0 +1,38 @@
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ELEMENT empty EMPTY>
+<!ELEMENT mixed1 (#PCDATA)>
+<!ELEMENT mixed2 (#PCDATA)*>
+<!ELEMENT mixed3 (#PCDATA|empty)*>
+]>
+
+<root>
+ <empty/>
+
+ <mixed1/>
+ <mixed1></mixed1>
+
+ <mixed2/>
+ <mixed2></mixed2>
+
+ <mixed3/>
+ <mixed3></mixed3>
+
+ <mixed1>allowed</mixed1>
+ <mixed1><![CDATA[<allowed>]]></mixed1>
+
+ <mixed2>also</mixed2>
+ <mixed2><![CDATA[<% illegal otherwise %>]]></mixed2>
+
+ <mixed3>moreover</mixed3>
+
+ <mixed1>allowed &amp; stuff</mixed1>
+
+ <mixed2>also</mixed2>
+
+ <mixed3>moreover <empty></empty> </mixed3>
+ <mixed3>moreover <empty/> </mixed3>
+ <mixed3><empty/> </mixed3>
+ <mixed3><empty/> too</mixed3>
+
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.ent
new file mode 100644
index 0000000000..c75c62943c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.ent
@@ -0,0 +1,7 @@
+<?xml encoding="UTF-8"?>
+<!-- this is really ascii ... ;- -->
+<foo/>
+
+<bar/>
+
+<is> "dumber than a bag full of hammers" </is>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.xml
new file mode 100644
index 0000000000..d826da98a5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext01.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE root [
+<!ELEMENT root ANY>
+<!ELEMENT foo ANY>
+<!ELEMENT bar ANY>
+<!ELEMENT is ANY>
+<!ENTITY root SYSTEM "ext01.ent">
+<!ENTITY null SYSTEM "null.ent">
+]>
+<root> &root; &root; &null; &null; </root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext02.xml
new file mode 100644
index 0000000000..af5440b7fd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/ext02.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE foo [
+<!ELEMENT foo (root*)>
+<!ELEMENT root EMPTY>
+<!ENTITY utf16b SYSTEM "../invalid/utf16b.xml">
+<!ENTITY utf16l SYSTEM "../invalid/utf16l.xml">
+]>
+
+<foo> &utf16b; &utf16l; </foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa01.xml
new file mode 100644
index 0000000000..536cb4b06e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa01.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' standalone='no'?>
+
+<!DOCTYPE root SYSTEM "sa.dtd">
+
+<root>
+ <child>
+ The whitespace before and after this element keeps
+ this from being standalone.
+ </child>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa02.xml
new file mode 100644
index 0000000000..bd938b034e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa02.xml
@@ -0,0 +1,30 @@
+<?xml version='1.0' standalone='no'?>
+
+<!DOCTYPE attributes SYSTEM "../valid/sa.dtd" [
+ <!ENTITY internal " number99">
+]>
+
+ <!-- sync with ../invalid/not-sa02.xml -->
+
+ <!--
+ lots of normalized/defaulted attributes
+ keep this from being standalone
+
+ XXX not the best basis for negative tests!!
+ -->
+
+<attributes
+ notation = " nonce "
+ nmtoken = " this-gets-normalized "
+ nmtokens = " this
+ also gets normalized "
+ id = " &internal; "
+ idref = " &internal;
+ "
+ idrefs = " &internal; &internal; &internal;"
+ entity = " unparsed-1 "
+ entities = "unparsed-1
+ unparsed-2
+"
+ cdata = "nothing happens to this one!"
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa03.xml
new file mode 100644
index 0000000000..2a13a005ed
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa03.xml
@@ -0,0 +1,25 @@
+<?xml version='1.0' standalone='no'?>
+
+<!DOCTYPE attributes SYSTEM "sa.dtd" [
+ <!--
+ This one is almost standalone since the values
+ are pre-normalized in this document, and the
+ defaulted attribute is explicit.
+
+ BUT the entity refs are both external and need
+ normalization.
+ -->
+]>
+
+<attributes
+ token = "b"
+ notation = "foo"
+ nmtoken = "this-gets-normalized"
+ nmtokens = "this also gets normalized"
+ id = "&internal;"
+ idref = "&internal;"
+ idrefs = "&internal; &internal; &internal;"
+ entity = "unparsed-1"
+ entities = "unparsed-1 unparsed-2"
+ cdata = "nothing happens to this one!"
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa04.xml
new file mode 100644
index 0000000000..d4e12aa6e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/not-sa04.xml
@@ -0,0 +1,30 @@
+<?xml version='1.0' standalone='no'?>
+
+<!DOCTYPE attributes SYSTEM "sa.dtd" [
+ <!--
+ This one isn't standalone since it's got a defaulted
+ attribute (token) and one needing normalization
+ (notation).
+ -->
+
+ <!ATTLIST attributes
+ token (a|b|c) "a"
+ notation (nonce|foo|bar) #IMPLIED
+ >
+ <!ENTITY internal "internal&number;">
+ <!ENTITY number "42">
+]>
+
+<attributes
+ notation = " nonce "
+ nmtoken = "this-gets-normalized"
+ nmtokens = "this also gets normalized"
+ id = "&internal;"
+ idref = "&internal;"
+ idrefs = "&internal; &internal; &internal;"
+ entity = "unparsed-1"
+ entities = "unparsed-1 unparsed-2"
+ cdata = "nothing happens to this one!"
+ />
+
+<?pi equals three?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.dtd
new file mode 100644
index 0000000000..23726851aa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.dtd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!NOTATION GIF PUBLIC
+ "+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION
+ CompuServe Graphic Interchange Format//EN">
+
+<!ELEMENT test (#PCDATA) >
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.xml
new file mode 100644
index 0000000000..4b8bc10e31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/notation01.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE test SYSTEM "notation01.dtd" [
+ <!ENTITY applydsssl SYSTEM "applydsssl.gif" NDATA GIF>
+]>
+<test>test</test>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/null.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/null.ent
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/null.ent
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/optional.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/optional.xml
new file mode 100644
index 0000000000..fe8d482510
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/optional.xml
@@ -0,0 +1,50 @@
+<!DOCTYPE root SYSTEM "dtdtest.dtd">
+<root>
+ <!--
+ This primarily bangs on different ways of expressing
+ optionality in content models.
+ -->
+ <once><e/></once>
+
+ <twice><e/><e/></twice>
+
+
+ <once-or-twice-a><e/></once-or-twice-a>
+ <once-or-twice-b><e/></once-or-twice-b>
+ <once-or-twice-c><e/></once-or-twice-c>
+ <once-or-twice-d><e/></once-or-twice-d>
+ <once-or-twice-e><e/></once-or-twice-e>
+
+ <once-or-twice-a><e/><e/></once-or-twice-a>
+ <once-or-twice-b><e/><e/></once-or-twice-b>
+ <once-or-twice-c><e/><e/></once-or-twice-c>
+ <once-or-twice-d><e/><e/></once-or-twice-d>
+ <once-or-twice-e><e/><e/></once-or-twice-e>
+
+
+ <once-or-more-a><e/></once-or-more-a>
+ <once-or-more-b><e/></once-or-more-b>
+ <once-or-more-c><e/></once-or-more-c>
+ <once-or-more-d><e/></once-or-more-d>
+ <once-or-more-e><e/></once-or-more-e>
+
+ <once-or-more-a><e/><e/></once-or-more-a>
+ <once-or-more-b><e/><e/></once-or-more-b>
+ <once-or-more-c><e/><e/></once-or-more-c>
+ <once-or-more-d><e/><e/></once-or-more-d>
+ <once-or-more-e><e/><e/></once-or-more-e>
+
+ <once-or-more-a><e/><e/><e/></once-or-more-a>
+ <once-or-more-b><e/><e/><e/></once-or-more-b>
+ <once-or-more-c><e/><e/><e/></once-or-more-c>
+ <once-or-more-d><e/><e/><e/></once-or-more-d>
+ <once-or-more-e><e/><e/><e/></once-or-more-e>
+
+ <once-or-more-a><e/><e/><e/><e/></once-or-more-a>
+ <once-or-more-b><e/><e/><e/><e/></once-or-more-b>
+ <once-or-more-c><e/><e/><e/><e/></once-or-more-c>
+ <once-or-more-d><e/><e/><e/><e/></once-or-more-d>
+ <once-or-more-e><e/><e/><e/><e/></once-or-more-e>
+
+
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Entries
new file mode 100644
index 0000000000..469e0ed46a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Entries
@@ -0,0 +1,28 @@
+/dtd00.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/dtd01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/element.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ext01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/ext02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/not-sa01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/not-sa04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/notation01.xml/1.2/Thu Feb 7 19:44:41 2002//
+/optional.xml/1.4/Mon May 20 15:33:35 2002//
+/pe00.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/pe02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/pe03.xml/1.1/Thu Feb 21 18:47:07 2002//
+/required00.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/sa01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/sa02.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sa03.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sa04.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sa05.xml/1.2/Thu Feb 7 19:44:41 2002//
+/sgml01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/v-lang01.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/v-lang02.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/v-lang03.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/v-lang04.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/v-lang05.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/v-lang06.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Repository
new file mode 100644
index 0000000000..b244dd58f6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/sun/valid/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd00.xml
new file mode 100644
index 0000000000..ef2fc53c2f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd00.xml
@@ -0,0 +1 @@
+<root></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd01.xml
new file mode 100644
index 0000000000..ef2fc53c2f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/dtd01.xml
@@ -0,0 +1 @@
+<root></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/element.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/element.xml
new file mode 100644
index 0000000000..f1aa64dbab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/element.xml
@@ -0,0 +1 @@
+<root>&#10; <empty></empty>&#10;&#10; <mixed1></mixed1>&#10; <mixed1></mixed1>&#10;&#10; <mixed2></mixed2>&#10; <mixed2></mixed2>&#10;&#10; <mixed3></mixed3>&#10; <mixed3></mixed3>&#10;&#10; <mixed1>allowed</mixed1>&#10; <mixed1>&lt;allowed&gt;</mixed1>&#10;&#10; <mixed2>also</mixed2>&#10; <mixed2>&lt;% illegal otherwise %&gt;</mixed2>&#10;&#10; <mixed3>moreover</mixed3>&#10;&#10; <mixed1>allowed &amp; stuff</mixed1>&#10;&#10; <mixed2>also</mixed2>&#10;&#10; <mixed3>moreover <empty></empty> </mixed3>&#10; <mixed3>moreover <empty></empty> </mixed3>&#10; <mixed3><empty></empty> </mixed3>&#10; <mixed3><empty></empty> too</mixed3>&#10;&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext01.xml
new file mode 100644
index 0000000000..a8d213463d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext01.xml
@@ -0,0 +1 @@
+<root> &#10;&#10;<foo></foo>&#10;&#10;<bar></bar>&#10;&#10;<is> &quot;dumber than a bag full of hammers&quot; </is>&#10; &#10;&#10;<foo></foo>&#10;&#10;<bar></bar>&#10;&#10;<is> &quot;dumber than a bag full of hammers&quot; </is>&#10; </root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext02.xml
new file mode 100644
index 0000000000..90718f8e55
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/ext02.xml
@@ -0,0 +1 @@
+<foo> &#10;<root></root>&#10; &#10;<root></root>&#10; </foo> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa01.xml
new file mode 100644
index 0000000000..12ce349ae2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa01.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+<!NOTATION bar SYSTEM 'file:/dev/tty'>
+<!NOTATION foo PUBLIC '-//public id//foo' 'file:/dev/null'>
+<!NOTATION nonce SYSTEM 'file:/dev/null'>
+]>
+<root>&#10; <child>&#10; The whitespace before and after this element keeps&#10; this from being standalone.&#10; </child>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa02.xml
new file mode 100644
index 0000000000..0f31afb891
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa02.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE attributes [
+<!NOTATION bar SYSTEM 'file:/dev/tty'>
+<!NOTATION foo PUBLIC '-//public id//foo' 'file:/dev/null'>
+<!NOTATION nonce SYSTEM 'file:/dev/null'>
+]>
+<attributes cdata="nothing happens to this one!" entities="unparsed-1 unparsed-2" entity="unparsed-1" id="number99" idref="number99" idrefs="number99 number99 number99" nmtoken="this-gets-normalized" nmtokens="this also gets normalized" notation="nonce" token="a"></attributes> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa03.xml
new file mode 100644
index 0000000000..4eba2aa55e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa03.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE attributes [
+<!NOTATION bar SYSTEM 'file:/dev/tty'>
+<!NOTATION foo PUBLIC '-//public id//foo' 'file:/dev/null'>
+<!NOTATION nonce SYSTEM 'file:/dev/null'>
+]>
+<attributes cdata="nothing happens to this one!" entities="unparsed-1 unparsed-2" entity="unparsed-1" id="internal42" idref="internal42" idrefs="internal42 internal42 internal42" nmtoken="this-gets-normalized" nmtokens="this also gets normalized" notation="foo" token="b"></attributes> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa04.xml
new file mode 100644
index 0000000000..70e09f6f20
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/not-sa04.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE attributes [
+<!NOTATION bar SYSTEM 'file:/dev/tty'>
+<!NOTATION foo PUBLIC '-//public id//foo' 'file:/dev/null'>
+<!NOTATION nonce SYSTEM 'file:/dev/null'>
+]>
+<attributes cdata="nothing happens to this one!" entities="unparsed-1 unparsed-2" entity="unparsed-1" id="internal42" idref="internal42" idrefs="internal42 internal42 internal42" nmtoken="this-gets-normalized" nmtokens="this also gets normalized" notation="nonce" token="a"></attributes><?pi equals three?> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/notation01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/notation01.xml
new file mode 100644
index 0000000000..cbb7634d9a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/notation01.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE test [
+<!NOTATION GIF PUBLIC '+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION CompuServe Graphic Interchange Format//EN'>
+]>
+<test>test</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/optional.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/optional.xml
new file mode 100644
index 0000000000..d131489085
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/optional.xml
@@ -0,0 +1 @@
+<root>&#10; &#10; <once><e></e></once>&#10;&#10; <twice><e></e><e></e></twice>&#10;&#10;&#10; <once-or-twice-a><e></e></once-or-twice-a>&#10; <once-or-twice-b><e></e></once-or-twice-b>&#10; <once-or-twice-c><e></e></once-or-twice-c>&#10; <once-or-twice-d><e></e></once-or-twice-d>&#10; <once-or-twice-e><e></e></once-or-twice-e>&#10;&#10; <once-or-twice-a><e></e><e></e></once-or-twice-a>&#10; <once-or-twice-b><e></e><e></e></once-or-twice-b>&#10; <once-or-twice-c><e></e><e></e></once-or-twice-c>&#10; <once-or-twice-d><e></e><e></e></once-or-twice-d>&#10; <once-or-twice-e><e></e><e></e></once-or-twice-e>&#10;&#10;&#10; <once-or-more-a><e></e></once-or-more-a>&#10; <once-or-more-b><e></e></once-or-more-b>&#10; <once-or-more-c><e></e></once-or-more-c>&#10; <once-or-more-d><e></e></once-or-more-d>&#10; <once-or-more-e><e></e></once-or-more-e>&#10;&#10; <once-or-more-a><e></e><e></e></once-or-more-a>&#10; <once-or-more-b><e></e><e></e></once-or-more-b>&#10; <once-or-more-c><e></e><e></e></once-or-more-c>&#10; <once-or-more-d><e></e><e></e></once-or-more-d>&#10; <once-or-more-e><e></e><e></e></once-or-more-e>&#10;&#10; <once-or-more-a><e></e><e></e><e></e></once-or-more-a>&#10; <once-or-more-b><e></e><e></e><e></e></once-or-more-b>&#10; <once-or-more-c><e></e><e></e><e></e></once-or-more-c>&#10; <once-or-more-d><e></e><e></e><e></e></once-or-more-d>&#10; <once-or-more-e><e></e><e></e><e></e></once-or-more-e>&#10;&#10; <once-or-more-a><e></e><e></e><e></e><e></e></once-or-more-a>&#10; <once-or-more-b><e></e><e></e><e></e><e></e></once-or-more-b>&#10; <once-or-more-c><e></e><e></e><e></e><e></e></once-or-more-c>&#10; <once-or-more-d><e></e><e></e><e></e><e></e></once-or-more-d>&#10; <once-or-more-e><e></e><e></e><e></e><e></e></once-or-more-e>&#10;&#10;&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe00.xml
new file mode 100644
index 0000000000..7d48bbe463
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe00.xml
@@ -0,0 +1 @@
+<root>La Peste: Albert Camus,&#10;© 1947 Éditions Gallimard. All rights reserved</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe02.xml
new file mode 100644
index 0000000000..6bc066028e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe02.xml
@@ -0,0 +1 @@
+<test>This sample shows a error-prone method.</test> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe03.xml
new file mode 100644
index 0000000000..eed428aa66
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/pe03.xml
@@ -0,0 +1 @@
+<root><p>An ampersand (&amp;) may be escaped&#10;numerically (&amp;#38) or with a general entity (&amp;amp;).</p></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/required00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/required00.xml
new file mode 100644
index 0000000000..f06dcb9f2c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/required00.xml
@@ -0,0 +1 @@
+<root req="foo"></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa01.xml
new file mode 100644
index 0000000000..188f8ef629
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa01.xml
@@ -0,0 +1 @@
+<root>&#10; <child>&#10; The whitespace around this element would be&#10; invalid as standalone were the DTD external.&#10; </child>&#10;</root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa02.xml
new file mode 100644
index 0000000000..10e4c648d5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa02.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE attributes [
+<!NOTATION bar SYSTEM 'file:/dev/tty'>
+<!NOTATION foo PUBLIC '-//public id//foo' 'file:/dev/null'>
+<!NOTATION nonce SYSTEM 'file:/dev/null'>
+]>
+<attributes cdata="nothing happens to this one!" entities="unparsed-1 unparsed-2" entity="unparsed-1" id="internal42" idref="internal42" idrefs="internal42 internal42 internal42" nmtoken="this-gets-normalized" nmtokens="this also gets normalized" notation="nonce" token="a"></attributes> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa03.xml
new file mode 100644
index 0000000000..4eba2aa55e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa03.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE attributes [
+<!NOTATION bar SYSTEM 'file:/dev/tty'>
+<!NOTATION foo PUBLIC '-//public id//foo' 'file:/dev/null'>
+<!NOTATION nonce SYSTEM 'file:/dev/null'>
+]>
+<attributes cdata="nothing happens to this one!" entities="unparsed-1 unparsed-2" entity="unparsed-1" id="internal42" idref="internal42" idrefs="internal42 internal42 internal42" nmtoken="this-gets-normalized" nmtokens="this also gets normalized" notation="foo" token="b"></attributes> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa04.xml
new file mode 100644
index 0000000000..70e09f6f20
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa04.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE attributes [
+<!NOTATION bar SYSTEM 'file:/dev/tty'>
+<!NOTATION foo PUBLIC '-//public id//foo' 'file:/dev/null'>
+<!NOTATION nonce SYSTEM 'file:/dev/null'>
+]>
+<attributes cdata="nothing happens to this one!" entities="unparsed-1 unparsed-2" entity="unparsed-1" id="internal42" idref="internal42" idrefs="internal42 internal42 internal42" nmtoken="this-gets-normalized" nmtokens="this also gets normalized" notation="nonce" token="a"></attributes><?pi equals three?> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa05.xml
new file mode 100644
index 0000000000..931120d7fe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sa05.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+<!NOTATION bar SYSTEM 'file:/dev/tty'>
+<!NOTATION foo PUBLIC '-//public id//foo' 'file:/dev/null'>
+<!NOTATION nonce SYSTEM 'file:/dev/null'>
+]>
+<root><child>&#10; No whitespace before or after this standalone element.&#10;</child></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sgml01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sgml01.xml
new file mode 100644
index 0000000000..8c31029f02
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/sgml01.xml
@@ -0,0 +1 @@
+<root position="first" status="initial-draft"></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang01.xml
new file mode 100644
index 0000000000..9752885abe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang01.xml
@@ -0,0 +1 @@
+<root xml:lang="en"></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang02.xml
new file mode 100644
index 0000000000..cdf492e87c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang02.xml
@@ -0,0 +1 @@
+<root xml:lang="en-IN"></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang03.xml
new file mode 100644
index 0000000000..d9d68a44ce
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang03.xml
@@ -0,0 +1 @@
+<root xml:lang="i-klingon-whorf"></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang04.xml
new file mode 100644
index 0000000000..cda324b178
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang04.xml
@@ -0,0 +1 @@
+<root xml:lang="x-dialect-valleygirl"></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang05.xml
new file mode 100644
index 0000000000..fa3d57a4db
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang05.xml
@@ -0,0 +1 @@
+<root xml:lang="DE"></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang06.xml
new file mode 100644
index 0000000000..451e36b0a1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/out/v-lang06.xml
@@ -0,0 +1 @@
+<root xml:lang="X-Java"></root> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.dtd
new file mode 100644
index 0000000000..547457cc4b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.dtd
@@ -0,0 +1,6 @@
+<!ELEMENT root (#PCDATA)>
+<!-- Example from XML spec 1.0 section 4.5 -->
+<!ENTITY % pub "&#xc9;ditions Gallimard">
+<!ENTITY rights "All rights reserved">
+<!ENTITY book "La Peste: Albert Camus,
+&#xa9; 1947 %pub;. &rights;">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.xml
new file mode 100644
index 0000000000..af706647c8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe00.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE root SYSTEM "pe00.dtd">
+<root>&book;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.dtd
new file mode 100644
index 0000000000..59997b71eb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.dtd
@@ -0,0 +1,6 @@
+<!ENTITY % bad-pe SYSTEM "pe01.ent">
+<!ELEMENT root EMPTY>
+<!ATTLIST root
+ something CDATA "%not-pe;"
+ evil (doctor | scott) "doctor"
+ >
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.ent
new file mode 100644
index 0000000000..3f30827c7e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.ent
@@ -0,0 +1,2 @@
+This is not a legal parameter entity, because
+it does not match the "markupdecl" production.
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.xml
new file mode 100644
index 0000000000..8003bbfa99
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe01.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE root SYSTEM "pe01.dtd">
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe02.xml
new file mode 100644
index 0000000000..44edb62dd6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe02.xml
@@ -0,0 +1,9 @@
+<?xml version='1.0'?>
+<!DOCTYPE test [
+<!ELEMENT test (#PCDATA) >
+<!ENTITY % xx '&#37;zz;'>
+<!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
+%xx;
+]>
+<test>This sample shows a &tricky; method.</test>
+<!-- Example 2 from XML spec 1.0 Appendix D -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe03.xml
new file mode 100644
index 0000000000..407bd1c5fe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/pe03.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root [
+<!ELEMENT root (p)>
+<!ELEMENT p (#PCDATA)>
+<!-- Example 1 from XML spec 1.0 Appendix D -->
+<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
+numerically (&#38;#38;#38) or with a general entity (&amp;amp;).</p>" >
+]>
+<root>&example;</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/required00.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/required00.xml
new file mode 100644
index 0000000000..4c63d36042
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/required00.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+ <!ATTLIST root
+ req CDATA #REQUIRED
+ >
+]>
+
+<root req="foo"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa.dtd
new file mode 100644
index 0000000000..a0733eb88c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa.dtd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+ <!ELEMENT root (child|attributes)*>
+ <!ELEMENT child (#PCDATA)>
+ <!ELEMENT attributes EMPTY>
+
+ <!--
+ 2.9 gives validity constraints applying to attributes
+ in standalone docs: no external defaults or decls
+ causing normalization.
+
+ 3.3.3 describes the normalization rules
+ -->
+
+ <!ATTLIST attributes
+ token (a|b|c) "a"
+ notation (nonce|foo|bar) #IMPLIED
+ nmtoken NMTOKEN #IMPLIED
+ nmtokens NMTOKENS #IMPLIED
+ id ID #IMPLIED
+ idref IDREF #IMPLIED
+ idrefs IDREFS #IMPLIED
+ entity ENTITY #IMPLIED
+ entities ENTITIES #IMPLIED
+ cdata CDATA #IMPLIED
+ >
+
+ <!-- this needs normalization when used as an ID -->
+ <!ENTITY internal " internal&number; ">
+ <!ENTITY number "42">
+
+ <!NOTATION nonce SYSTEM "file:/dev/null">
+ <!NOTATION foo PUBLIC "-//public id//foo" "file:/dev/null">
+ <!NOTATION bar SYSTEM "file:/dev/tty">
+
+ <!ENTITY unparsed-1 PUBLIC "-//some public//ID" "file:/dev/console"
+ NDATA nonce>
+ <!ENTITY unparsed-2 SYSTEM "scheme://host/data"
+ NDATA foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa01.xml
new file mode 100644
index 0000000000..15ed49579f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa01.xml
@@ -0,0 +1,13 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE root [
+ <!ELEMENT root (child)*>
+ <!ELEMENT child (#PCDATA)>
+]>
+
+<root>
+ <child>
+ The whitespace around this element would be
+ invalid as standalone were the DTD external.
+ </child>
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa02.xml
new file mode 100644
index 0000000000..7a416601fa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa02.xml
@@ -0,0 +1,52 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes [
+ <!ELEMENT attributes EMPTY>
+
+ <!--
+ 2.9 gives validity constraints applying to attributes
+ in standalone docs: no external defaults or decls
+ causing normalization.
+
+ 3.3.3 describes the normalization rules
+ -->
+
+ <!ATTLIST attributes
+ token (a|b|c) "a"
+ notation (nonce|foo|bar) #IMPLIED
+ nmtoken NMTOKEN #IMPLIED
+ nmtokens NMTOKENS #IMPLIED
+ id ID #IMPLIED
+ idref IDREF #IMPLIED
+ idrefs IDREFS #IMPLIED
+ entity ENTITY #IMPLIED
+ entities ENTITIES #IMPLIED
+ cdata CDATA #IMPLIED
+ >
+
+ <!ENTITY internal " internal&number; ">
+ <!ENTITY number "42">
+
+ <!NOTATION nonce SYSTEM "file:/dev/null">
+ <!NOTATION foo PUBLIC "-//public id//foo" "file:/dev/null">
+ <!NOTATION bar SYSTEM "file:/dev/tty">
+
+ <!ENTITY unparsed-1 PUBLIC "-//some public//ID" "file:/dev/console"
+ NDATA nonce>
+ <!ENTITY unparsed-2 SYSTEM "scheme://host/data"
+ NDATA foo>
+]>
+
+<attributes
+ notation = " nonce "
+ nmtoken = " this-gets-normalized "
+ nmtokens = " this
+ also gets normalized "
+ id = " &internal; "
+ idref = " &internal;
+ "
+ idrefs = " &internal; &internal; &internal;"
+ entity = " unparsed-1 "
+ entities = "unparsed-1 unparsed-2"
+ cdata = "nothing happens to this one!"
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa03.xml
new file mode 100644
index 0000000000..194cb82457
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa03.xml
@@ -0,0 +1,28 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "sa.dtd" [
+ <!--
+ This one is standalone since the values are
+ pre-normalized in this document, and the
+ defaulted attribute is explicit.
+
+ Similarly the entity refs are internal and
+ don't need normalization ... the unparsed
+ entities (and entities) aren't "references"
+ -->
+ <!ENTITY internal "internal&number;">
+ <!ENTITY number "42">
+]>
+
+<attributes
+ token = "b"
+ notation = "foo"
+ nmtoken = "this-gets-normalized"
+ nmtokens = "this also gets normalized"
+ id = "&internal;"
+ idref = "&internal;"
+ idrefs = "&internal; &internal; &internal;"
+ entity = "unparsed-1"
+ entities = "unparsed-1 unparsed-2"
+ cdata = "nothing happens to this one!"
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa04.xml
new file mode 100644
index 0000000000..79df352fa8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa04.xml
@@ -0,0 +1,38 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE attributes SYSTEM "sa.dtd" [
+ <!--
+ This one is standalone since the values are
+ pre-normalized in this document, except that
+ one defaulted attribute is (re)defined internally
+ and so is one normalized one.
+
+ Similarly the entity refs are internal. Unparsed
+ entities and notations are not listed among the
+ items that must not be externally declared in
+ standalone documents, even though processors must
+ in theory report their identifiers.
+
+ -->
+
+ <!ATTLIST attributes
+ token (a|b|c) "a"
+ notation (nonce|foo|bar) #IMPLIED
+ >
+ <!ENTITY internal "internal&number;">
+ <!ENTITY number "42">
+]>
+
+<attributes
+ notation = " nonce "
+ nmtoken = "this-gets-normalized"
+ nmtokens = "this also gets normalized"
+ id = "&internal;"
+ idref = "&internal;"
+ idrefs = "&internal; &internal; &internal;"
+ entity = "unparsed-1"
+ entities = "unparsed-1 unparsed-2"
+ cdata = "nothing happens to this one!"
+ />
+
+<?pi equals three?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa05.xml
new file mode 100644
index 0000000000..45180bca63
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sa05.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!DOCTYPE root SYSTEM "sa.dtd">
+
+<root><child>
+ No whitespace before or after this standalone element.
+</child></root>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sgml01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sgml01.xml
new file mode 100644
index 0000000000..6cfdfee07d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/sgml01.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE root [
+ <!ELEMENT root EMPTY>
+ <!--
+ SGML dislikes token reuse. It's legal XML, so any
+ XML parser must accept it, though it's discouraged
+ in documents "for interoperability"
+ -->
+ <!ATTLIST root
+ status (initial-draft|revision|final) "initial-draft"
+ position (first|intermediate|final) "first"
+ >
+]>
+
+<root/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang01.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang01.xml
new file mode 100644
index 0000000000..4490f77530
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang01.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root xml:lang CDATA #IMPLIED>
+]>
+<root xml:lang="en"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang02.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang02.xml
new file mode 100644
index 0000000000..7d2b538921
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang02.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root xml:lang CDATA #IMPLIED>
+]>
+<root xml:lang="en-IN"/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang03.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang03.xml
new file mode 100644
index 0000000000..678f3cc687
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang03.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root xml:lang CDATA #IMPLIED>
+]>
+<root xml:lang="i-klingon-whorf"/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang04.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang04.xml
new file mode 100644
index 0000000000..6f7cb4a8da
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang04.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root xml:lang CDATA #IMPLIED>
+]>
+<root xml:lang="x-dialect-valleygirl"/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang05.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang05.xml
new file mode 100644
index 0000000000..135b9c887a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang05.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root xml:lang CDATA #IMPLIED>
+]>
+<root xml:lang="DE"/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang06.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang06.xml
new file mode 100644
index 0000000000..dc64fae993
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/sun/valid/v-lang06.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE root [
+<!ELEMENT root EMPTY>
+<!ATTLIST root xml:lang CDATA #IMPLIED>
+]>
+<root xml:lang="X-Java"/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/testcases.dtd b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/testcases.dtd
new file mode 100644
index 0000000000..ae352379a7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/testcases.dtd
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)testcases.dtd 1.6 99/01/21
+ Original version copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+
+ 1999-06-09 00:20
+
+ DTD describing a database of XML tests.
+
+ NOTE: the OASIS/NIST test effort also has a DTD for its test
+ environment, but that DTD is not yet suited for automated test
+ processing. (Among other issues, it doesn't record information
+ putting any test case into the test matrix.) If that gets fixed,
+ it may be useful to switch over to that DTD.
+-->
+
+<!--
+ The root element of the whole collection is TESTSUITE. While not
+ very different from TESTCASES, it must be distinguished due to
+ improper processing by IE5.
+-->
+<!ELEMENT TESTSUITE ( TESTCASES+ )>
+<!ATTLIST TESTSUITE
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The root element of a collection should be "TESTCASES". It groups
+ a set of tests in a particular "PROFILE", which is descriptive. For
+ example, a "Japanese" profile might group tests with documents
+ in standard Japanese encodings, using Japanese characters used
+ inside names and name tokens as well as inside text. Or the
+ profile might be associated with the test supplier.
+-->
+
+<!ELEMENT TESTCASES (TEST|TESTCASES)*>
+<!ATTLIST TESTCASES
+ xml:base CDATA #IMPLIED
+ PROFILE CDATA #IMPLIED
+ >
+
+<!--
+ The body of each TEST element is its description, used
+ to evaluate the diagnostic produced on negative tests.
+ People will generally read this to evaluate whether the
+ test failed for the correct reason.
+
+ The type of (external) ENTITIES required affect the results
+ permitted for certain types of nonvalidating parsers. In
+ some cases, errors (even well-formedness errors) can't be seen
+ without reading external parameter or general entities.
+
+ Each test has a unique ID used in diagnostics.
+
+ Tests with an OUTPUT attribute do dual duty: not only must parsers
+ accept the test, but the data they report must also have "Second
+ Canonical Form" as found in the specified output file. (This is
+ what James Clark titled "Canonical XML", with the addition of the
+ NOTATION declarations that all XML parsers are required to report.)
+
+ The OUTPUT3 attribute is like OUTPUT, but when sent through a
+ validating parser the data reported must have the "Third Canonical
+ Form" as found in the specified output file. (This is Second
+ Canonical form, with declarations of unparsed ENTITY values and
+ with all ignorable whitespace removed.)
+
+ The canonical forms are changed slightly for output files corresponding
+ to XML 1.1 input files. They start with an XML declaration specifying the
+ version number, and use character references for all C0 and C1 controls.
+ The grammars are changed as follows:
+
+
+ CanonXML ::= '<?xml version="1.1">' Pi* element Pi*
+ CanonXML2 ::= '<?xml version="1.1">' DTD2? Pi* element Pi*
+ CanonXML3 ::= '<?xml version="1.1">' DTD3? Pi* element Pi*
+ C0 ::= (Unicode characters #x1-#x1F)
+ C1 ::= (Unicode characters #x7F-#x9F)
+ EscapedC0 ::= (Decimal references to C0 characters, &#1; - &#31;)
+ EscapedC1 ::= (Decimal references to C1 characters, &#127; - &#159;)
+ Datachar ::= '&amp;' | '&lt;' | '&gt;' | '&quot;'
+ | EscapedC0 | EscapedC1
+ | (Char - ('&' | '<' | '>' | '"' | C0 | C1))
+
+
+ where Char is the XML 1.1 rather than 1.0 production of that name.
+
+
+ Tests apply to one or more particular SECTIONS.
+
+ Each test has a TYPE:
+ * All parsers must accept "valid" testcases.
+ * Nonvalidating parsers must also accept "invalid" testcases,
+ but validating ones must reject them.
+ * No parser should accept a "not-wf" testcase unless it's a
+ nonvalidating parser and the test contains external entities
+ that the parser doesn't read.
+ * Parsers are not required to report "errors".
+
+ Each test is in a particular XML document, with a URI. If these
+ tests are accessed over a network, the path will be relative to
+ the base URI of the document holding the testcase.
+
+ Tests which apply only to certain versions of XML list those versions
+ in the VERSION attribute. An absent VERSION implies that the test
+ applies to all versions. Parsers should not run tests for versions
+ they do not support.
+
+ Parsers should enable namespace processing except for tests marked
+ with NAMESPACES="no". These are tests that use colons in ways
+ inconsistent with the Namespaces spec.
+-->
+
+<!ELEMENT TEST (#PCDATA | EM | B)*>
+
+
+<!ATTLIST TEST
+ ENTITIES (both|none|parameter|general) "none"
+ ID ID #REQUIRED
+ OUTPUT CDATA #IMPLIED
+ OUTPUT3 CDATA #IMPLIED
+ SECTIONS CDATA #REQUIRED
+ RECOMMENDATION (XML1.0|XML1.1|NS1.0|NS1.1|
+ XML1.0-errata2e|XML1.0-errata3e|
+ NS1.0-errata1e) "XML1.0"
+ TYPE (valid|invalid|not-wf|error) #REQUIRED
+ VERSION NMTOKENS #IMPLIED
+ URI CDATA #REQUIRED
+ NAMESPACE (yes|no) "yes"
+ >
+
+<!--
+ Really basic HTML font tweaks, to support highlighting
+ some aspects of test descriptions ...
+ EM == emphasis (e.g. italics, fun colors)
+ B == bold
+-->
+<!ELEMENT EM (#PCDATA | B)*>
+<!ELEMENT B (#PCDATA | EM)*>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.htm b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.htm
new file mode 100644
index 0000000000..c85c3d24c3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.htm
@@ -0,0 +1,39994 @@
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title> XML Conformance Tests </title>
+<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+<style>
+<!--
+ BODY {
+ font-family: Lucida, Helvetica, Univers, sans-serif;
+ }
+ H1, H2, H3, H4 {
+ text-align: left;
+ color: #0066CC;
+ }
+ -->
+</style>
+<style>
+<!--
+ a:hover {
+ color: white;
+ background-color: blue;
+ }
+ -->
+</style>
+</head>
+<body bgcolor="#ffffff">
+<p></p>
+<center>
+<table width="90%" border="4">
+<tr>
+<td>
+<table>
+<tr>
+<td width="40%"><img height="125" width="350" src="files/a_oasis-logo.gif"></td><td width="30%"></td><td align="right" width="40%"><img height="125" width="400" src="files/top3.jpe"></td>
+</tr>
+</table>
+<center>
+<table>
+<tr>
+<td><b><font size="+2">A Joint Development Effort</font></b></td>
+</tr>
+</table>
+</center>
+</td>
+</tr>
+</table>
+</center>
+<p></p>
+<h4>OASIS XML Conformance Subcommittee<br>XML 1.0 Test Suite, Second Edition<br>Working Draft<br>15 March 2001</h4>
+<dl>
+<dt>
+<b>This version:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.htm">
+ http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.htm</a>
+ (<a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.xml">XML</a>)
+ </li>
+</ul>
+</dd>
+<p></p>
+<dt>
+<b>Current Version:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf.xml">
+ http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf.xml</a>
+</li>
+</ul>
+</dd>
+<p></p>
+<dt>
+<b>Previous Version:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1/xmlconf-19990712.xml">
+ http://www.oasis-open.org/committees/xml-conformance/suite-v1/xmlconf-19990712.xml</a>
+</li>
+</ul>
+</dd>
+<p></p>
+<dt>
+<b>Test Archive:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.tar.gz">http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.tar.gz</a>
+</li>
+</ul>
+</dd>
+<p></p>
+<dt>
+<b>OASIS XML Conformance Technical Committee:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<a href="http://www.oasis-open.org/committees/xml-conformance/">http://www.oasis-open.org/committees/xml-conformance/</a>
+</li>
+</ul>
+</dd>
+<p></p>
+<dt>
+<b>Comments:</b>
+</dt>
+<dd>
+<ul>
+<li>Mary Brady, NIST <a href="mailto:mbrady@nist.gov">&lt;mbrady@nist.gov&gt;</a>
+</li>
+</ul>
+</dd>
+<p></p>
+</dl>
+<a name="contents"></a>
+<h2>Table of Contents</h2>
+<ol>
+<li>
+<a href="#intro">Introduction</a>
+</li>
+<li>
+<a href="#matrix">Test Matrix</a>
+</li>
+<ol>
+<li>
+<a href="#binary">Binary Tests</a>
+</li>
+<li>
+<a href="#output">Output Tests</a>
+</li>
+</ol>
+<li>
+<a href="#listings">Test Case Descriptions</a>
+</li>
+<ol>
+<li>
+<a href="#valid">Valid Documents</a>
+</li>
+<li>
+<a href="#invalid">Invalid Documents</a>
+</li>
+<li>
+<a href="#not-wf">Not-WF Documents</a>
+</li>
+<li>
+<a href="#error">Optional Errors</a>
+</li>
+</ol>
+<li>
+<a href="#contrib">Contributors</a>
+</li>
+</ol>
+<a name="intro"></a>
+<h2>1. Introduction </h2>
+<p> The <i>OASIS</i> XML Conformance Subcommittee is concerned with
+ improving the quality of XML processors. The tests described in this
+ document provide an initial set of metrics to determine how well a
+ particular implementation conforms to the
+ <a href="http://www.w3.org/TR/REC-xml">W3C XML 1.0 (Second Edition) Recommendation</a>.
+ The XML Conformance Test Suite is intended
+ to complement the W3C XML 1.0 (Second Edition) Recommendation. All interpretations
+ of this Recommendation are subject to confirmation by the
+ <a href="http://www.w3.org/XML/Activity.html">W3C XML Coordination
+ Group</a>.
+ </p>
+<p>
+ Conformance tests can be used by developers, content creators, and
+ users alike to increase their level of confidence in product quality. In
+ circumstances where interoperability is necessary, these tests can also
+ be used to determine that differing implementations support the same set
+ of features. </p>
+<p>This report provides supporting documentation for all of the tests
+ contributed by members of the <i>OASIS</i> XML Conformance Subcommittee.
+ Sources from which these tests have been collected
+ include: <em>James Clark XMLTEST cases, 18-Nov-1998; Fuji Xerox Japanese Text Tests; Sun Microsystems XML Tests; OASIS/NIST TESTS, 1-Nov-1998; IBM XML Tests; </em>. Although the tests came from a variety of sources, the actual test
+ descriptions and references back to the specification were in many instances
+ added by members of this subcommittee. It is anticipated that this report
+ will supplement the actual tests, which are available from
+ <a href="http://www.oasis-open.org/committees/xml-conformance/xml-test-suite.html">
+ http://www.oasis-open.org/committees/xml-conformance/xml-test-suite.html</a>.</p>
+<p>Comments/suggestions should be
+ forwarded to the XML Conformance Subcommittee Chair, Mary Brady
+ <a href="mailto:mbrady@nist.gov">&lt;mbrady@nist.gov&gt;</a>.</p>
+<a name="matrix"></a>
+<h2>2. Test Matrix </h2>
+<p> Two basic types of test are presented here. These are
+ respectively <em><a href="#binary">Binary Tests</a></em>
+ and <em><a href="#output">Output Tests</a></em>. </p>
+<a name="binary"></a>
+<h3>2.1 Binary Tests </h3>
+<p>
+<em>Binary</em> conformance tests are documents which
+ are grouped into one of four categories. Given a document
+ in a given category, each kind of XML parser must treat it
+ consistently and either accept it (a <em>positive test</em>)
+ or reject it (a <em>negative test</em>). It is in that sense
+ that the tests are termed "binary". The XML 1.0 (Second Edition) Recommendation
+ talks in terms of two types of XML processor:
+ <em>validating</em> ones, and <em>nonvalidating</em> ones.
+ There are two differences between these types of processors: </p>
+<ol>
+<li> Validating processors check special productions that
+ nonvalidating parsers don't, called <em>validity
+ constraints</em>. (Both must check a basic set of productions,
+ requiring XML documents to be <em>well formed</em>.) </li>
+<li> Nonvalidating processors are permitted to not
+ include <em>external entities</em>, such as files with
+ text. Accordingly, they may not report errors which
+ would have been detected had those entities been read.</li>
+</ol>
+<p> There are two types of such entity, <em>parameter
+ entities</em> holding definitions which affect validation
+ and other processing; and <em>general entities</em> which
+ hold marked up text. It will be appreciated that there are
+ then five kinds of XML processor: validating processors,
+ and four kinds of nonvalidating processor based on the
+ combinations of external entity which they include.</p>
+<center>
+<table cellpadding="4" bgcolor="#ffffff" border="1">
+<caption>
+<b>Basic XML Parsing Test Matrix</b>
+<br>
+ Test Document Type v. Parser Type
+ </caption>
+<tr bgcolor="#ffffcc">
+<th rowspan="2" widthH="5%">&nbsp;</th><th colspan="2" widthH="20%">Nonvalidating</th><th rowspan="2" widthH="5%">Validating</th>
+</tr>
+<tr bgcolor="#ffffcc">
+<th>External Entities<br>Ignored (3 cases)</th><th>External Entities<br>Read</th>
+</tr>
+<tr>
+<th bgcolor="#ffffcc">Valid Documents</th><td align="center"><b>accept</b></td><td align="center"><b>accept</b></td><td align="center"><b>accept</b></td>
+</tr>
+<tr>
+<th bgcolor="#ffffcc">Invalid Documents</th><td align="center"><b>accept</b></td><td align="center"><b>accept</b></td><td align="center">reject</td>
+</tr>
+<tr>
+<th bgcolor="#ffffcc">Non-WF Documents</th><td align="center">reject</td><td align="center">reject</td><td align="center">reject</td>
+</tr>
+<tr>
+<th bgcolor="#ffffcc">WF Errors tied<br>
+ to External Entity</th><td align="center"><b>accept</b>
+<br>(varies)</td><td align="center">reject</td><td align="center">reject</td>
+</tr>
+<tr>
+<th bgcolor="#ffffcc">Documents with<br> Optional Errors</th><td align="center">(not specified)</td><td align="center">(not specified)</td><td align="center">(not specified)</td>
+</tr>
+</table>
+</center>
+<p> At this time, the XML community primarily uses parsers
+ which are in the rightmost two columns of this table, calling
+ them <em>Well Formed XML Parsers</em> (or "WF Parsers") and
+ <em>Validating XML Parsers</em>. A second test matrix
+ could be defined to address the variations in the types of
+ of XML processor which do not read all external entities.
+ That additional matrix is not provided here at this time. </p>
+<a name="output"></a>
+<h3>2.2 Output Tests</h3>
+<p> The XML 1.0 (Second Edition) Recommendation places a number of requirements
+ on XML processors, to ensure that they report information to
+ applications as needed. Such requirements are testable.
+ Validating processors are required to report slightly more
+ information than nonvalidating ones, so some tests will
+ require separate output files. Some of the information that
+ must be reported will not be reportable without reading all
+ the external entities in a particular test. Many of the tests for
+ valid documents are paired with an output file to ensure that the XML
+ processor provides the correct information. </p>
+<p>The output of these tests is provided in one of two forms, as
+ described in <a href="sun/cxml.html">SUN Microsystems XML
+ Canonical Forms</a>. At present, the <em>James Clark</em>
+ collection provides corresponding output in <em>First XML
+ Canonical Form</em>, and the <em>SUN Microsystems</em>
+ collection provides corresponding output in <em>Second XML
+ Canonical Form</em>. When the <a href="http://www.w3.org/XML/">
+ W3C XML Group </a> finalizes its work on Canonical XML, these
+ output files will be updated.
+ </p>
+<a name="listings"></a>
+<h2>3. Test Case Descriptions</h2>
+<p> This section of this report contains descriptions of test
+ cases, each of which fits into the categories noted above.
+ Each test case includes a document of one of the types in the
+ binary test matrix above (e.g. valid or invalid documents).
+ </p>
+<p> In some cases, an <a href="#output">output file </a>, as
+ described in Section 2.2, will also be associated with
+ a valid document, which is used for output testing. If such
+ a file exists, it will be noted at the end of the description
+ of the input document. </p>
+<p> The description for each test case is presented as a two
+ part table. The right part describes what the test does.
+ This description is intended to have enough detail to evaluate
+ diagnostic messages. The left part includes: <ul>
+<li> An entry describing the <em>Sections and/or Rules</em>
+ from the <a href="http://www.w3.org/TR/2000/REC-xml-20001006">
+ XML 1.0 (Second Edition) Recommendation</a> which this case excercises.</li>
+<li> The unique <em>Test ID</em> within a given <em>Collection</em>
+ for this test. </li>
+<li> The <em>Collection</em> from which this test originated.
+ Given the <em>Test ID</em> and the <em>Collection</em>, each
+ test can be uniquely identified.</li>
+<li> Some tests may have a field identifying the kinds of
+ external <em>Entities</em> a nonvalidating processor must
+ include (parameter, general, or both) to be able to
+ detect any errors in that test case. </li>
+</ul>
+</p>
+<p>
+<em>Note that the output format of this report is subject
+ to change. Also, since XSL does not currently support the
+ type of sorting rule necessary to make section numbers like
+ 2.12 appear after 2.2, the ordering is not quite what is
+ desired.</em>
+</p>
+<a name="valid"></a>
+<h3>3.1 Valid XML Documents</h3>
+<p> All conforming <em> XML 1.0 Processors </em> are
+ <b>required</b> to accept valid documents, reporting no
+ errors. In this section of this test report are found
+ descriptions of test cases which fit into this category. </p>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P01-ibm01v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 1</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests with a xml document consisting of <em>prolog</em> followed by
+ <em>element</em> then <em>Misc</em>
+
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.10</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-084</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that although whitespace can be used to set apart markup for greater readability it is not necessary. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.10</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-093</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace is not intended for inclusion in the delivered version of the document. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-116</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that a line break within CDATA will be normalized. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-ext-sa-001</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A combination of carriage return line feed in an external entity must
+ be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-ext-sa-002</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-ext-sa-004</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-ext-sa-009</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.11, 3.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-108</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This tests normalization of end-of-line characters (CRLF)
+ within entities to LF, primarily as an output test. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.11, 4.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-068</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests definition of an internal entity holding a carriage return character
+ reference, which must not be normalized before reporting to the application. Line
+ break normalization only occurs when parsing external parsed entities.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.11 3.2.1 3.2.2 4.2.2 [48] [51] [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-ext-sa-006</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of optional character and content particles within mixed element content. The test also shows the use of an external entity and that a carriage control line feed in an external entity must be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.11 4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-ext-sa-011</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of a public identifier with and external entity.
+The test also show that a carriage control line feed combination in an external
+entity must be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P33-ibm33v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 33</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests LanguageID with Langcode - Subcode
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P34-ibm34v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 34</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Duplicate Test as ibm33v01.xml
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P35-ibm35v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 35</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ISO639Code
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P36-ibm36v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 36</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests IanaCode
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P37-ibm37v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 37</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests UserCode
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P38-ibm38v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 38</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests SubCode
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.12 [35]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">v-lang01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a lowercase ISO language code.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.12 [35]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">v-lang02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a ISO language code with a subcode.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.12 [35]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">v-lang05</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an uppercase ISO language code.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.12 [36]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">v-lang03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a IANA language code with a subcode.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.12 [37]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">v-lang04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a user language code with a subcode.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.12 [37]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">v-lang06</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a user language code.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P02-ibm02v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests <b>Char</b> with 3 characters - 2 boundaries plus 1 in the middle - for
+ each range plus #x20 #x9 #xD #xA
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [1]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p01pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ various Misc items where they can occur
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-049</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that characters outside of normal ascii range can be used as element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-050</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that characters outside of normal ascii range can be used as element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-051</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ The document is encoded in UTF-16 and uses some name
+ characters well outside of the normal ASCII range.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-052</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ The document is encoded in UTF-8 and the text inside the
+ root element uses two non-ASCII characters, encoded in UTF-8
+ and each of which expands to a Unicode surrogate pair.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P03-ibm03v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests all 4 legal white space characters - #x20 #x9 #xD #xA
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P09-ibm09v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Empty EntityValue is legal
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P09-ibm09v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a normal EnitityValue
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P09-ibm09v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EnitityValue referencing a Parameter Entity
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P09-ibm09v04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EnitityValue referencing a General Entity
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P09-ibm09v05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EnitityValue with combination of GE, PE and text, the GE used is
+ declared in the student.dtd
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P10-ibm10v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests empty AttValue with double quotes as the delimiters
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P10-ibm10v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests empty AttValue with single quotes as the delimiters
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P10-ibm10v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test AttValue with double quotes as the delimiters and single quote inside
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P10-ibm10v04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test AttValue with single quotes as the delimiters and double quote inside
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P10-ibm10v05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test AttValue with a GE reference and double quotes as the delimiters
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P10-ibm10v06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test AttValue with a GE reference and single quotes as the delimiters
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P10-ibm10v07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ testing AttValue with mixed references and text content in double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P10-ibm10v08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ testing AttValue with mixed references and text content in single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P11-ibm11v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests empty systemliteral using the double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P11-ibm11v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests empty systemliteral using the single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P11-ibm11v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests regular systemliteral using the single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P11-ibm11v04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests regular systemliteral using the double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P12-ibm12v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests empty systemliteral using the double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P12-ibm12v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests empty systemliteral using the single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P12-ibm12v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests regular systemliteral using the double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P12-ibm12v04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests regular systemliteral using the single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P13-ibm13v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 13</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Testing PubidChar with all legal PubidChar in a PubidLiteral
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-100</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Makes sure that PUBLIC identifiers may have some strange
+ characters. <em>NOTE: The XML editors have said that the XML
+ specification errata will specify that parameter entity expansion
+ does not occur in PUBLIC identifiers, so that the '%' character
+ will not flag a malformed parameter entity reference.</em>
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p12pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid public IDs.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-012</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Uses a legal XML 1.0 name consisting of a single colon
+ character (disallowed by the latest XML Namespaces draft).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-063</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ The document is encoded in UTF-8 and the name of the
+ root element type uses non-ASCII characters. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [6]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p06pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ various satisfactions of the Names production in a NAMES
+ attribute
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [7]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p07pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ various valid Nmtoken 's in an attribute list declaration.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [8]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p08pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ various satisfaction of an NMTOKENS attribute value.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p09pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid EntityValue's. Except for entity references,
+ markup is not recognized.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 2.10</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-092</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demostrates that extra whitespace is normalized into a single space character. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 3.1 [10][40][41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-109</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an attribute can have a null value. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 3.1 [13] [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-013</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that the Attribute in a Start-tag can consist of numerals along with special characters. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 3.1 [13] [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-014</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that all lower case letters are valid for the Attribute in a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 3.1 [13] [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-015</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that all upper case letters are valid for the Attribute in a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-009</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that PubidChar can be used for element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 4.1 [10] [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-023</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of a parameter entity reference within an attribute list declaration.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P14-ibm14v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Testing CharData with empty string
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P14-ibm14v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Testing CharData with white space character
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P14-ibm14v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Testing CharData with a general text string
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4 2.5 2.6 2.7 [15] [16] [18]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p43pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid use of character data, comments, processing instructions and CDATA sections within the start and end tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4 3.1 [14] [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-048</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that character data is valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4 3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-008</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates character references can be used for element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-119</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Comments may contain any legal XML characters;
+ only the string "--" is disallowed.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P15-ibm15v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests empty comment
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P15-ibm15v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests comment with regular text
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P15-ibm15v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests comment with one dash inside
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P15-ibm15v04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests comment with more comprehensive content
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">dtd01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Comments don't get parameter entity expansion</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5 3.1 [15] [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-021</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that comments are valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5 3.1 [15] [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-022</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that comments are valid element content and that all characters before the double-hypen right angle combination are considered part of thecomment. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P16-ibm16v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PI definition with only PItarget name and nothing else
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P16-ibm16v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PI definition with only PItarget name and a white space
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P16-ibm16v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PI definition with PItarget name and text that contains
+ question mark and right angle
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P17-ibm17v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PITarget name
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [15]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-037</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid comment and that it may appear anywhere in the document including at the end. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [15]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-038</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid comment and that it may appear anywhere in the document including the beginning. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-036</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid processing instruction. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-039</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid processing instruction and that it may appear at the beginning of the document. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 2.10 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-055</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace within a processing instruction willnormalized into s single space character. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 2.10 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-098</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace within a processing instruction is converted into a single space character.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 3.1 [16] [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-016</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that Processing Instructions are valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 3.1 [16] [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-017</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that Processing Instructions are valid element content and there can be more than one. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-031</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Expands a general entity which contains a CDATA section with
+ what looks like a markup declaration (but is just text since
+ it's in a CDATA section).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P18-ibm18v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 18</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDSect with CDStart CData CDEnd
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P19-ibm19v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 19</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDStart
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P20-ibm20v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 20</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDATA with empty string
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P20-ibm20v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 20</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDATA with regular content
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P21-ibm21v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 21</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDEnd
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 [20]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-114</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that all text within a valid CDATA section is considered text and not recognized as markup. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 3.1 [18] [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-018</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that CDATA sections are valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 3.1 [18] [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-019</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that CDATA sections are valid element content and that
+ampersands may occur in their literal form. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 3.1 [18] [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-020</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstractes that CDATA sections are valid element content and that
+everyting between the CDStart and CDEnd is recognized as character data not markup. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P22-ibm22v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests prolog with XMLDecl and doctypedecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P22-ibm22v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests prolog with doctypedecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P22-ibm22v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests prolog with Misc doctypedecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P22-ibm22v04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests prolog with doctypedecl Misc
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P22-ibm22v05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests prolog with XMLDecl Misc doctypedecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P22-ibm22v06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests prolog with XMLDecl doctypedecl Misc
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P22-ibm22v07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests prolog with XMLDecl Misc doctypedecl Misc
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P23-ibm23v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo only
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P23-ibm23v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo EncodingDecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P23-ibm23v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo SDDecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P23-ibm23v04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VerstionInfo and a trailing whitespace char
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P23-ibm23v05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo EncodingDecl SDDecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P23-ibm23v06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo EncodingDecl SDDecl and a trailing whitespace
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P24-ibm24v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with single quote
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P24-ibm24v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with double quote
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P25-ibm25v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EQ with =
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P25-ibm25v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EQ with = and spaces on both sides
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P25-ibm25v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EQ with = and space in front of it
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P25-ibm25v04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EQ with = and space after it
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P26-ibm26v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 26</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VersionNum 1.0
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P27-ibm27v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 27</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Misc with comment
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P27-ibm27v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 27</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Misc with PI
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P27-ibm27v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 27</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Misc with white spaces
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P28-ibm28v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with internal DTD only
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P28-ibm28v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with external subset and combinations of different markup
+ declarations and PEReferences
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P29-ibm29v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests markupdecl with combinations of elementdecl, AttlistDecl,EntityDecl,
+ NotationDecl, PI and comment
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P29-ibm29v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests WFC: PE in internal subset as a positive test
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P30-ibm30v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 30</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests extSubset with extSubsetDecl only in the dtd file
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P30-ibm30v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 30</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests extSubset with TextDecl and extSubsetDecl in the dtd file
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P31-ibm31v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 31</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests extSubsetDecl with combinations of markupdecls, conditionalSects,
+ PEReferences and white spaces
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8, 4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-024</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Constructs an &lt;!ATTLIST...&gt; declaration from several PEs.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p22pass4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML decl and doctypedecl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p22pass5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ just doctypedecl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p22pass6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S between decls is not required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-033</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that both a EncodingDecl and SDDecl are valid within the prolog. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-028</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid prolog that uses double quotes as delimeters around the VersionNum. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-029</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid prolog that uses single quotes as delimters around the VersionNum. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [25]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-030</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid prolog that contains whitespace on both sides of the equal sign in the VersionInfo. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [29]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p29pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid types of markupdecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [31]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p31pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ external subset can be empty
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 3.4 4.2.2 [31] [62] [63] [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p31pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with EXternalID as Enternal Entity. The external entity contains a parameter entity reference and condtional sections.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 4.1 [28] [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p28pass3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with Parameter entity reference. The declaration of a parameter entity must precede any reference to it. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 4.1 [28] [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p28pass5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with ExternalID as an External Entity. A parameter entity reference is also used. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 4.2.2 [28] [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p28pass4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with ExternalID as an External Entity declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 4.2.2 [30] [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p30pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with ExternalID as an External Entity. The external entity has an element declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 4.2.2 4.3.1 [30] [75] [77]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p30pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with ExternalID as an Enternal Entity. The external entity begins with a Text Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-sa01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A non-standalone document is valid if declared as such.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-sa02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A non-standalone document is valid if declared as such.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-sa03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A non-standalone document is valid if declared as such.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-sa04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A non-standalone document is valid if declared as such. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P32-ibm32v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VC: Standalone Document Declaration with absent attribute that
+ has default value and standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P32-ibm32v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VC: Standalone Document Declaration with external entity reference
+ and standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P32-ibm32v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VC: Standalone Document Declaration with attribute values that need
+ to be normalized and standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P32-ibm32v04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VC: Standalone Document Declaration with whitespace in mixed content
+ and standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-032</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid SDDecl within the prolog. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sa01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A document may be marked 'standalone' if any optional
+ whitespace is defined within the internal DTD subset.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sa02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A document may be marked 'standalone' if any
+ attributes that need normalization are
+ defined within the internal DTD subset.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sa03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A document may be marked 'standalone' if any
+ the defined entities need expanding are internal,
+ and no attributes need defaulting or normalization.
+ On output, requires notations to be correctly reported.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sa04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Like sa03 but relies on attribute
+ defaulting defined in the internal subset.
+ On output, requires notations to be correctly reported.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sa05</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Like sa01 but this document is standalone
+ since it has no optional whitespace.
+ On output, requires notations to be correctly reported.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">element</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests clauses 1, 3, and 4 of the Element Valid
+ validity constraint.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P39-ibm39v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests element with EmptyElemTag and STag content Etag, also tests the
+ VC: Element Valid with elements that have children, Mixed and ANY
+ contents
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P40-ibm40v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests STag with possible combinations of its fields, also tests WFC:
+ Unique Att Spec.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P41-ibm41v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute with Name Eq AttValue and VC: Attribute Value Type
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P42-ibm42v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ETag with possible combinations of its fields
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P43-ibm43v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests content with all possible constructs: element, CharData, Reference,
+ CDSect, Comment
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P44-ibm44v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag with possible combinations of its fields
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-002</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is permitted after the tag name in a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-005</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid attribute specification within a Start-tag that
+contains whitespace on both sides of the equal sign. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-010</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is valid after the Attribute in a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-011</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates mutliple Attibutes within the Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-104</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace within an Attribute of a Start-tag is normalized to a single space character. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40] [42]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-054</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace within Start-tags and End-tags are nomalized into single spaces. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-004</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid attribute specification within a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-006</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that the AttValue within a Start-tag can use a single quote as a delimter. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-003</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is permitted after the tag name in an End-tag.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-023</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that Entity References are valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-047</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace is normalized into single space character. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [43] [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p28pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Empty-element tag must be used for element which are declared EMPTY. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-034</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the correct syntax for an Empty element tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-035</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is permissible after the name in an Empty element tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-044</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that the empty-element tag must be use for an elements that are declared EMPTY. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 4.1 [43] [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-024</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that Entity References are valid element content and also demonstrates a valid Entity Declaration. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 4.1 [43] [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-ext-sa-003</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that the content of an element can be empty. In this case the external entity is an empty file. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 4.6 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-007</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates numeric character references can be used for element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P45-ibm45v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests both P45 elementDecl and P46 contentspec with possible combinations
+ of their constructs
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P47-ibm47v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests all possible children,cp,choice,seq patterns in P47,P48,P49,P50
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P49-ibm49v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VC:Proper Group/PE Nesting with PEs of choices that are properly nested
+ with parenthesized groups in external subsets
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P50-ibm50v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VC:Proper Group/PE Nesting with PEs of seq that are properly nested
+ with parenthesized groups in external subsets
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-057</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates an element content model whose element can occur zero or more times. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [48][49]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-112</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates shows the use of content particles within the element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [50]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-081</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the optional character following a name or list to govern the number of times an element or content particles in the list occur. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 4.2.2 [48] [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-ext-sa-005</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of optional character and content particles within an element content. The test also show the use of external entity. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P51-ibm51v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Mixed with possible combinations of its fields amd VC: No
+ Duplicate Types
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P51-ibm51v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VC:Proper Group/PE Nesting with PEs of Mixed that are properly nested
+ with parenthesized groups in external subsets
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-001</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration with Mixed Content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">dtd00</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests parsing of alternative forms of text-only mixed
+ content declaration.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p51pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid Mixed contentspec's.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p45pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid element declarations
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-025</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration and that the contentspec can be of mixed content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-026</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration and that EMPTY is a valid contentspec. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-027</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration and that ANY is a valid contenspec. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 3.2.1 [45] [46] [47]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p48pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, choices, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 3.2.1 [45] [46] [47]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p49pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, choices, and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Whitespace is also valid between choices. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 3.2.1 [45] [46] [47]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p50pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Whitespace is also valid between sequences. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 3.2.1 [45] [46] [47] </td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p47pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, choices, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 3.2.1 3.2.2 [45] [46] [47] [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p46pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, and mixed content within an element type declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 3.3 [46] [53]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-059</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration that uses the contentspec of EMPTY. The element cannot have any contents and must always appear as an empty element in the document. The test also shows an Attribute-list declaration with multiple AttDef's. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-043</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ An element's attributes may be declared before its content
+ model; and attribute values may contain newlines. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-097</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Basically an output test, this tests whether an externally
+ defined attribute declaration (with a default) takes proper
+ precedence over a subsequent internal declaration.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P52-ibm52v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests all AttlistDecl and AttDef Patterns in P52 and P53
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-076</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Verifies that an XML parser will parse a NOTATION
+ attribute; the output phase of this test ensures that
+ both notations are reported to the application. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-090</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Verifies that an XML parser will parse a NOTATION
+ attribute; the output phase of this test ensures that
+ the notation is reported to the application. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-091</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Verifies that an XML parser will parse an ENTITY
+ attribute; the output phase of this test ensures that
+ the notation is reported to the application, and for
+ validating parsers it further tests that the entity
+ is so reported.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P54-ibm54v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests all AttTypes : StringType, TokenizedTypes, EnumeratedTypes in
+ P55,P56,P57,P58,P59. Also tests all DefaultDecls in P60.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P54-ibm54v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests all AttTypes : StringType, TokenizedType, EnumeratedTypes in
+ P55,P56,P57.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P54-ibm54v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttTypes with StringType in P55.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P55-ibm55v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 55</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests StringType for P55. The "CDATA" occurs in the StringType for the
+ attribute "att" for the element "a".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P56-ibm56v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56. The "ID", "IDREF", "IDREFS", "ENTITY",
+ "ENTITIES", "NMTOKEN", and "NMTOKENS" occur in the TokenizedType for the
+ attribute "attr".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P56-ibm56v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: ID Attribute Default. The value "AC1999" is
+ assigned to the ID attribute "attr" with "#REQUIRED" in the DeaultDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P56-ibm56v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: ID Attribute Default. The value "AC1999" is
+ assigned to the ID attribute "attr" with "#IMPLIED" in the DeaultDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P56-ibm56v04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: ID. The ID attribute "UniqueName" appears
+ only once in the document.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P56-ibm56v05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: One ID per element type. The element "a" or
+ "b" has only one ID attribute.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P56-ibm56v06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: IDREF. The IDREF value "AC456" matches the
+ value assigned to an ID attribute "UniqueName".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P56-ibm56v07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: IDREF. The IDREFS value "AC456 Q123" matches
+ the values assigned to the ID attribute "UniqueName" and "Uname".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P56-ibm56v08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: Entity Name. The value "image" of the ENTITY
+ attribute "sun" matches the name of an unparsed entity declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P56-ibm56v09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: Name Token. The value of the NMTOKEN attribute
+ "thistoken" matches the Nmtoken production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P56-ibm56v10.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: Name Token. The value of the NMTOKENS
+ attribute "thistoken" matches the Nmtoken production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P57-ibm57v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 57</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EnumeratedType in the AttType. The attribute "att" has a type (a|b)
+ with the element "a".
+ the
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P58-ibm58v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationType for P58. It shows different patterns fro the NOTATION
+ attribute "attr".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P58-ibm58v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationType for P58: Notation Attributes. The value "base64" of the
+ NOTATION attribute "attr" matches one of the notation names declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P59-ibm59v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Enumeration in the EnumeratedType for P59. It shows different
+ patterns for the Enumeration attribute "attr".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P59-ibm59v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Enumeration for P59 VC: Enumeration. The value "one" of the
+ Enumeration attribute "attr" matches one of the element names declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [54]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p54pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ the three kinds of attribute types
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [55]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p55pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ StringType = "CDATA"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p56pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ the 7 tokenized attribute types
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [57]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p57pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ enumerated types are NMTOKEN or NOTATION lists
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p58pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ NOTATION enumeration has on or more items
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">v-sgml01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML permits token reuse, while SGML does not.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p59pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ NMTOKEN enumerations haveon or more items
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 4.1 [54] [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-041</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 4.1 [54] [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-042</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. The test also shows that the leading zeros in the character reference are ignored. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 4.1 [54] [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-056</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. The test also shows that the leading zeros in the character reference are ignored. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P60-ibm60v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl for P60. It shows different options "#REQUIRED", "#FIXED",
+ "#IMPLIED", and default for the attribute "chapter".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P60-ibm60v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl for P60 VC: Required Attribute. In the element "one" and
+ "two" the value of the #REQUIRED attribute "chapter" is given.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P60-ibm60v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl for P60 VC: Fixed Attribute Default. The value of the
+ #FIXED attribute "chapter" is exactly the same as the default value.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P60-ibm60v04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl for P60 VC: Attribute Default Legal. The default value
+ specified for the attribute "attr" meets the lexical constraints of the
+ declared attribute type.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">required00</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the #REQUIRED attribute declaration syntax, and
+ the associated validity constraint. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p60pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ the four types of default values
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-058</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace be normalized into a single space character in an attribute of type NMTOKENS. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-095</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires extra whitespace
+ to be normalized into a single space character in an
+ attribute of type NMTOKENS.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-096</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace is normalized into a single space character in an attribute of type NMTOKENS. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-102</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that a CDATA attribute can pass a double quote as its value. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-103</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an attribute can pass a less than sign as its value. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-105</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires a CDATA attribute
+ with a tab character to be passed through as one space.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-106</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires a CDATA attribute
+ with a newline character to be passed through as one space.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-107</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires a CDATA attribute
+ with a return character to be passed through as one space.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-110</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires that a CDATA
+ attribute with a CRLF be normalized to one space.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-111</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character references expanding to spaces doesn't affect
+ treatment of attributes. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-115</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an entity reference is processed by recursively processing the replacement text of the entity. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-ext-sa-013</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is handled by adding a single whitespace to the normalized value in the attribute list. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-045</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests whether more than one definition can be provided for the same attribute of a given element type with the first declaration being binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-046</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more than one AttlistDecl is provided for a given element type, the contents of all those provided are merged. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-006</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more than one definition is provided for the same attribute of a given element type only the first declaration is binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-007</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of an Attribute list declaration within an external entity. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-010</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more that one definition is provided for the same attribute of a given element type only the first declaration is binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-026</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more that one definition is provided for the same attribute of a given element type only the first declaration is binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p52pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid AttlistDecls: No AttDef's are required,
+ and the terminating
+ S is optional, multiple ATTLISTS per element are OK, and multiple
+ declarations of the same attribute are OK.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52][53]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-113</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that it is not an error to have attributes declared for an element not itself declared.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p53pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ a valid AttDef
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 3.3.1 [52] [54]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-040</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 3.3.1 [52] [54]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-077</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use an EnumeratedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 3.3.1 [52] [54]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-078</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that REQUIRED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-071</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use ID as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-072</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use IDREF as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-073</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use IDREFS as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-074</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use ENTITY as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-075</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use ENTITIES as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 3.3.2 [52] [60]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-079</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that FIXED is a valid DefaultDecl and that a value can be given to the attribute in the Start-tag as well as the AttListDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 3.3.2 [52] [60]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-080</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that FIXED is a valid DefaultDecl and that an value can be given to the attribute. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P61-ibm61v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 61</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests conditionalSect for P61. It takes the option "invludeSect" in the file
+ ibm61v01.dtd.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P61-ibm61v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 61</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests conditionalSect for P61. It takes the option "ignoreSect" in the file
+ ibm61v02.dtd.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P62-ibm62v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The white space is not included before the key
+ word "INCLUDE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P62-ibm62v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The white space is not included after the key
+ word "INCLUDE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P62-ibm62v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The white space is included after the key
+ word "INCLUDE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P62-ibm62v04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The white space is included before the key
+ word "INCLUDE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P62-ibm62v05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The extSubsetDecl is not included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P63-ibm63v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The white space is not included before the key
+ word "IGNORE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P63-ibm63v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The white space is not included after the key
+ word "IGNORE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P63-ibm63v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The white space is included after the key
+ word "IGNORE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P63-ibm63v04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The ignireSectContents is included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P63-ibm63v05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The white space is included before and after the
+ key word "IGNORE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P64-ibm64v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents for P64. One "ignore" field is included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P64-ibm64v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents for P64. Two "ignore" and one "ignoreSectContents"
+ fields are included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P64-ibm64v03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents for P64. Four "ignore" and three
+ "ignoreSectContents" fields are included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P65-ibm65v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 65</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Ignore for P65. An empty string occurs in the Ignore filed.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P65-ibm65v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 65</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Ignore for P65. An string not including the brackets occurs in each of
+ the Ignore filed.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [61]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p61pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid conditional sections are INCLUDE and IGNORE
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-013</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-014</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. The keyword is a parameter-entity reference. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-016</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. The keyword is a parameter-entity reference.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-022</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of a parameter-entity reference as a keyword of a conditional section. The parameter entity must be replaced by its content before the processor decides whether to include the conditional section. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-028</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-029</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being used. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-030</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being used. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p62pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid INCLUDE sections -- options S before and
+ after keyword, sections can nest
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [63]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-015</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being part of the DTD. The keyword is a parameter-entity reference. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [63]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p63pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid IGNORE sections
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [64]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p64pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ IGNOREd sections ignore everything except section delimiters
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3 3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests declarations of "children" content models, and
+ the validity constraints associated with them.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-085</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Parameter and General entities use different namespaces,
+ so there can be an entity of each type with a given name.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P66-ibm66v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests all legal CharRef's.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P67-ibm67v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 67</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Reference could be EntityRef or CharRef.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P68-ibm68v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests P68 VC:Entity Declared with Entities in External Subset
+ , standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P68-ibm68v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests P68 VC:Entity Declared with Entities in External Parameter Entities
+ , standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P69-ibm69v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests P68 VC:Entity Declared with Parameter Entities in External Subset
+ , standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P69-ibm69v02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests P68 VC:Entity Declared with Parameter Entities in External Parameter
+ Entities, standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-060</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of decimal Character References within element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-061</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of decimal Character References within element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-062</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of hexadecimal Character References within element. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-064</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests in-line handling of two legal character references, which
+ each expand to a Unicode surrogate pair.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-066</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Expands a CDATA attribute with a character reference.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-067</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of decimal character references within element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-089</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests entity expansion of three legal character references,
+ which each expand to a Unicode surrogate pair.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p68pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid entity references. Also ensures that a charref to
+ '&amp;' isn't interpreted as an entity reference open delimiter
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-003</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the expansion of an external parameter entity that declares an attribute. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-004</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Expands an external parameter entity in two different ways,
+ with one of them declaring an attribute.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-005</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the expansion of an external parameter entity that declares an attribute. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-027</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a parameter entity reference whose value is NULL. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p69pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid PEReferences.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 4.4.3 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-ext-sa-014</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates use of characters outside of normal ASCII range.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-086</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests whether entities may be declared more than once,
+ with the first declaration being the binding one. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-025</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more that one definition is provided for the same entity only the first declaration is binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P70-ibm70v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 70</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests all legal GEDecls and PEDecls constructs derived from P70-76
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.1 4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-ext-sa-012</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates both internal and external entities and that processing of entity references may be required to produce the correct replacement text.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-001</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of an ExternalID within a document type definition. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-002</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of an ExternalID within a document type definition. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-008</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an external identifier may include a public identifier. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-009</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that an external identifier may include a public identifier. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-018</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates an EnternalID whose contents contain an parameter entity declaration and a attribute list definition. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p76pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid NDataDecls
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 4.3.3. 4.4.3 [75] [80]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-ext-sa-008</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p> Test demonstrates the use of external
+entity and how replacement text is retrieved and processed. Also tests the use of an
+EncodingDecl of UTF-16.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 4.4.3 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-ext-sa-007</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of external entity and how replacement
+text is retrieved and processed. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [70]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p70pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ An EntityDecl is either a GEDecl or a PEDecl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p71pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid GEDecls
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-082</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests that an external PE may be defined (but not referenced).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-083</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests that an external PE may be defined (but not referenced).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-017</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a parameter entity declaration that contains an attribute list declaration. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-021</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a parameter entity declaration that contains a partial attribute list declaration. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p72pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid PEDecls
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p73pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ EntityDef is either Entity value or an external id,
+ with an optional NDataDecl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 4.2.1 [72] [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-011</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a parameter entity declaration whose parameter entity definition is an ExternalID. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.1 [77]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-012</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates an enternal parsed entity that begins with a text declaration. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.1 4.3.2 [77] [78]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ext01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests use of external parsed entities with and without content.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P78-ibm78v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 78</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExtParsedEnt, also TextDecl in P77 and EncodingDecl in P80
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P79-ibm79v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 79</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests extPE
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2 [78]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ext02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests use of external parsed entities with different
+ encodings than the base document.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">pr-xml-little</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test support for little-endian UTF-16 text
+ which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">pr-xml-utf-16</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test support UTF-16 text which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">pr-xml-utf-8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test support for UTF-8 text which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">weekly-little</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test support for little-endian UTF-16 encoding, and
+ XML names which contain Japanese characters.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">weekly-utf-16</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test support for UTF-16 encoding, and
+ XML names which contain Japanese characters.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">weekly-utf-8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test support for UTF-8 encoding and
+ XML names which contain Japanese characters.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [80]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-031</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid EncodingDecl within the prolog. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-099</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates the name of the encoding can be composed of lowercase characters. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-053</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests inclusion of a well-formed internal entity, which
+ holds an element required by the content model.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.4.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-070</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Verifies that internal parameter entities are correctly
+ expanded within the internal subset.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.4.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-019</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that a parameter entity will be expanded with spaces on either side. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.4.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-not-sa-020</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Parameter entities expand with spaces on either side.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-065</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ability to define an internal entity which can't
+ legally be expanded (contains an unquoted <b>&lt;</b>).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-087</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests whether character references in internal entities are
+ expanded early enough, by relying on correct handling to
+ make the entity be well formed.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-088</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests whether entity references in internal entities are
+ expanded late enough, by relying on correct handling to
+ make the expanded text be valid. (If it's expanded too
+ early, the entity will parse as an element that's not
+ valid in that context.)</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-101</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This tests whether entity expansion is (incorrectly) done
+ while processing entity declarations; if it is, the entity
+ value literal will terminate prematurely.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-117</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that entity expansion is done while processing entity declarations. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-118</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test demonstrates that entity expansion is done while processing entity declarations. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">v-pe00</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests construction of internal entity replacement text, using
+ an example in the XML specification. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">v-pe01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests construction of internal entity replacement text, using
+ an example in the XML specification. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">v-pe02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests construction of internal entity replacement text, using
+ a complex example in the XML specification. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-069</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Verifies that an XML parser will parse a NOTATION
+ declaration; the output phase of this test ensures that
+ it's reported to the application. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P82-ibm82v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationDecl in P82 and PublicID in P83
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7 [82]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">notation01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ NOTATION declarations don't need SYSTEM IDs; and
+ externally declared notations may be used to declare
+ unparsed entities in the internal DTD subset.
+ The notation must be reported to the application.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P85-ibm85v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test case covers 149 legal character ranges plus 51 single legal
+ characters for BaseChar in P85 using a PI target Name
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P86-ibm86v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test case covers 2 legal character ranges plus 1 single legal
+ characters for IdeoGraphic in P86 using a PI target Name
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P87-ibm87v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test case covers 65 legal character ranges plus 30 single legal
+ characters for CombiningChar in P87 using a PI target Name
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P88-ibm88v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test case covers 15 legal character ranges for Digit in P88 using a PI
+ target Name
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-valid-P89-ibm89v01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test case covers 3 legal character ranges plus 8 single legal
+ characters for Extender in P89 using a PI target Name
+</p>
+</td>
+</tr>
+</table>
+<a name="invalid"></a>
+<h3>3.2 Invalid XML Documents</h3>
+<p> All conforming XML 1.0 <em> Validating Processors </em>
+ are <b>required</b> to report recoverable errors in the case
+ of documents which are <em>Invalid</em>. Such errors are
+ violations of some <em>validity constraint (VC)</em>. </p>
+<p> If a validating processor does not report an error when
+ given one of these test cases, or if the error reported is
+ a fatal error, it is not conformant. If the error reported
+ does not correspond to the problem listed in this test
+ description, that could also be a conformance problem; it
+ might instead be a faulty diagnostic. </p>
+<p> All conforming XML 1.0 <em> Nonvalidating Processors </em>
+ should accept these documents, reporting no errors. </p>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p01pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no prolog
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p01pass3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Misc items after the document
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p10pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid attribute values
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ all valid S characters
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p04pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ names with all valid ASCII characters, and one from each
+ other class in NameChar
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p05pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ various valid Name constructions
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [6]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p06fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Requires at least one name.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [8]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p08fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ at least one Nmtoken is required.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [8]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p08fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ an invalid Nmtoken character.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p14pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid CharData
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4 2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">empty</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Whitespace found in CDATA sections (and entity references?)
+ is unlike other whitespace</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4 2.7 [18] 3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">empty</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ CDATA section containing only white space does not match the nonterminal S, and cannot
+ appear in these positions. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p15pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid comments
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p16pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p16pass3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [16] [17]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p16pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p18pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid CDSect's. Note that a CDStart in a CDSect is not
+ recognized as such
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">invalid--001</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Proper Declaration/PE Nesting" validity constraint by
+ fragmenting a comment between two parameter entities.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">invalid--003</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Proper Declaration/PE Nesting" validity constraint by
+ fragmenting an element declaration between two parameter entities.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">invalid--004</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Proper Declaration/PE Nesting" validity constraint by
+ fragmenting an element declaration between three parameter entities.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">invalid--005</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Proper Declaration/PE Nesting" validity constraint by
+ fragmenting an element declaration between two parameter entities.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">invalid--006</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Proper Declaration/PE Nesting" validity constraint by
+ fragmenting an element declaration between two parameter entities.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">root</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Root Element Type VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p16fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ File is well-formed, but not valid. An XML document is valid if it has an associated document type declaration and
+ if the document complies with the constraints expressed in it.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P28-ibm28i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ The test violates VC:Root Element Type in P28. The Name in the document type
+ declaration does not match the element type of the root element.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P29-ibm29i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test violates VC: Proper Declaration/PE Nesting in P29.
+ The last character of a markup declaration is not contained in the same
+ parameter-entity text replacement.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p22pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ prolog can be empty
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p22pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML declaration only
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p22pass3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML decl and Misc
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p23pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test shows a valid XML declaration along with version info. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p23pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test shows a valid XML declaration along with encoding declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p23pass3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test shows a valid XML declaration along with Standalone Document Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p23pass4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test shows a valid XML declaration, encoding declarationand Standalone Document Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p24pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test shows a prolog that has the VersionInfo delimited by double quotes. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p24pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test shows a prolog that has the VersionInfo delimited by single quotes. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p24pass3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test shows whitespace is allowed in prolog before version info. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p24pass4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test shows whitespace is allowed in prolog on both sides of equal sign. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [25]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p25pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test shows whitespace is NOT necessary before or after equal sign of versioninfo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [25]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p25pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test shows whitespace can be used on both sides of equal sign of versioninfo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [26]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p26pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ The valid version number. We cannot test others because
+ a 1.0 processor is allowed to fail them.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p27pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Comments are valid as the Misc part of the prolog. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p27pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Processing Instructions are valid as the Misc part of the prolog. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p27pass3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Whitespace is valid as the Misc part of the prolog. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p27pass4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A combination of comments, whitespaces and processing instructions are valid as the Misc part of the prolog. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ optional whitespace causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ attributes needing normalization cause a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ a reference to externally defined entity causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ attributes needing defaulting cause a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa05</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ a token attribute that needs normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa06</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ a NOTATION attribute that needs normalization
+ causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa07</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an NMTOKEN attribute needing normalization
+ causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa08</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an NMTOKENS attribute needing normalization
+ causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa09</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ID attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa10</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an IDREF attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa11</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an IDREFS attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa12</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ENTITY attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa13</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ENTITIES attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P32-ibm32i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of attributes with default values, and the
+ associated element appears in the document with specified values for those
+ attributes.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P32-ibm32i02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of an entity (other than amp, lt, gt, apos,
+ quot), and references to this entity appear in the document.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P32-ibm32i03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of attributes with values that will change
+ if normalized.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P32-ibm32i04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of element with element content, and white
+ space occurs directly within the mixed content.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p32pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Double quotes can be used as delimeters for the value of a Standalone Document Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p32pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Single quotes can be used as delimeters for the value of a Standalone Document Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-dtd03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Element Valid" VC (clause 2)
+ by omitting a required element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">el01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 4)
+ by including an undeclared child element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">el02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 1)
+ by including elements in an EMPTY content model. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">el03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 3) by including a child element
+ not permitted by a mixed content model. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">el06</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 1),
+ using one of the predefined internal entities
+ inside an EMPTY content model.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-not-sa14</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ CDATA sections containing only whitespace do not match the nonterminal S, and cannot
+ appear in these positions.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing no children where
+ one is required.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ two children where one is required.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where two are required.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where two are required.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional05</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (one construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional06</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a second construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional07</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a third construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional08</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a fourth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional09</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a fifth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional10</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a basic construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional11</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a second construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional12</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a third construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional13</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a fourth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional14</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a fifth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional15</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a basic construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional16</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a second construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional17</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a third construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional18</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a fourth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional19</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a fifth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional20</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a sixth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional21</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a seventh construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional22</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (an eigth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional23</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a ninth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional24</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a tenth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">optional25</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ text content where one or more elements are
+ required.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P39-ibm39i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test violates VC: Element Valid in P39. Element a is declared empty
+ in DTD, but has content in the document.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P39-ibm39i02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test violates VC: Element Valid in P39. root is declared only having
+ element children in DTD, but have text content in the document.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P39-ibm39i03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test violates VC: Element Valid in P39. Illegal elements are inserted
+ in b's content of Mixed type.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P39-ibm39i04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test violates VC: Element Valid in P39. Element c has undeclared
+ element as its content of ANY type
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P41-ibm41i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test violates VC: Attribute Value Type in P41. attr1 for Element b is
+ not declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P41-ibm41i02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test violates VC: Attribute Value Type in P41. attr3 for Element b is
+ given a value that does not match the declaration in the DTD.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p40pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Elements content can be empty. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p40pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Whitespace is valid within a Start-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p40pass4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Whitespace and Multiple Attributes are valid within a Start-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40] [41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p40pass3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Attributes are valid within a Start-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p41pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Attributes are valid within a Start-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p41pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Whitespace is valid within a Start-tags Attribute. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p42pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test shows proper syntax for an End-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p42pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Whitespace is valid after name in End-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p44pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Valid display of an Empty Element Tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p44pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Empty Element Tags can contain an Attribute. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p44pass3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Whitespace is valid in an Empty Element Tag following the end of the attribute value. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p44pass4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Whitespace is valid after the name in an Empty Element Tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p44pass5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Whitespace and Multiple Attributes are valid in an Empty Element Tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 2.10</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-required01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Attribute Value Type (declared)
+ VC for the xml:space attribute</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 2.12</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-required02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Attribute Value Type (declared)
+ VC for the xml:lang attribute</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">el04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Unique Element Type Declaration VC. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P45-ibm45i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This test violates VC: Unique Element Type Declaration. Element not_unique
+ has been declared 3 time in the DTD.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">invalid--002</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Proper Group/PE Nesting" validity constraint by
+ fragmenting a content model between two parameter entities.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P49-ibm49i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Violates VC:Proper Group/PE Nesting in P49. Open and close parenthesis for a
+ choice content model are in different PE replace Texts.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P50-ibm50i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Violates VC:Proper Group/PE Nesting in P50. Open and close parenthesis for a
+ seq content model are in different PE replace Texts.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-dtd01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the No Duplicate Types VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">el05</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the No Duplicate Types VC. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P51-ibm51i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Violates VC:Proper Group/PE Nesting in P51. Open and close parenthesis for a
+ Mixed content model are in different PE replace Texts.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P51-ibm51i03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Violates VC:No Duplicate Types in P51. Element a appears twice in the Mixed
+ content model of Element e.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">id01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the ID (is a Name) VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">id02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the ID (appears once) VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">id03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the One ID per Element Type VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">id04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the ID Attribute Default VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">id05</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the ID Attribute Default VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">id06</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the IDREF (is a Name) VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">id07</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the IDREFS (is a Names) VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">id08</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the IDREF (matches an ID) VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">id09</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the IDREF (IDREFS matches an ID) VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Entity Name" VC for the ENTITY attribute type.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Entity Name" VC for the ENTITIES attribute type.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Notation Attributes" VC for the
+ NOTATION attribute type, first clause: value must be one
+ of the ones that's declared.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Notation Attributes" VC for the
+ NOTATION attribute type, second clause: the names in the
+ declaration must all be declared.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr05</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Name Token" VC for the NMTOKEN attribute type.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr06</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Name Token" VC for the NMTOKENS attribute type.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr07</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Enumeration" VC by providing
+ a value which wasn't one of the choices.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ID. The value of the ID
+ attribute "UniqueName" is "@999" which does not meet the Name production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ID. The two ID attributes
+ "attr" and "UniqueName" have the same value "Ac999" for the element "b" and
+ the element "tokenizer".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ID Attribute Default. The
+ "#FIXED" occurs in the DefaultDecl for the ID attribute "UniqueName".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ID Attribute Default. The
+ constant string "BOGUS" occurs in the DefaultDecl for the ID attribute
+ "UniqueName".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: One ID per Element Type. The
+ element "a" has two ID attributes "first" and "second".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: IDREF. The value of the
+ IDREF attribute "reference" is "@456" which does not meet the Name production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: IDREF. The value of the IDREF
+ attribute "reference" is "BC456" which does not match the value assigned to any
+ ID attributes.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: IDREFS. The value of the
+ IDREFS attribute "reference" is "AC456 #567" which does not meet the Names
+ production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i10.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: IDREFS. The value of the
+ IDREFS attribute "reference" is "EF456 DE355" which does not match the values
+ assigned to two ID attributes.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i11.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "ima ge" which does not meet the Name production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i12.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "notimage" which does not match the name of any
+ unparsed entity declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i13.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "parsedentity" which matches the name of a parsed
+ entity instead of an unparsed entity declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i14.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITIES attribute "sun" is "#image1 @image" which does not meet the Names
+ production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i15.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ENTITIES. The value of the
+ ENTITIES attribute "sun" is "image3 image4" which does not match the names of
+ two unparsed entities declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i16.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ENTITIES. The value of the
+ ENTITIES attribute "sun" is "parsedentity1 parsedentity2" which matches the names
+ of two parsed entities instead of two unparsed entities declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i17.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Name Token. The value of the
+ NMTOKEN attribute "thistoken" is "x : image" which does not meet the Nmtoken
+ production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P56-ibm56i18.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Name Token. The value of the
+ NMTOKENS attribute "thistoken" is "@lang y: #country" which does not meet the
+ Nmtokens production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P58-ibm58i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid NotationType which is against P58 VC: Notation Attributes. The
+ attribute "content-encoding" with value "raw" is not a value from the list
+ "(base64|uuencode)".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P58-ibm58i02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid NotationType which is against P58 VC: Notation Attributes. The
+ attribute "content-encoding" with value "raw" is a value from the list
+ "(base64|uuencode|raw|ascii)", but "raw" is not a declared notation.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P59-ibm59i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid Enumeration which is against P59 VC: Enumeration. The value of the
+ attribute is "ONE" which matches neither "one" nor "two" as declared in the
+ Enumeration in the AttDef in the AttlistDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [58] [59] Errata [E2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-e2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Validity Constraint: No duplicate tokens
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-required00</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Required Attribute VC.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr08</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Fixed Attribute Default" VC by
+ providing the wrong value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr09</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal IDREF value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr10</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal IDREFS value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr11</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal ENTITY value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr12</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal ENTITIES value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr13</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NMTOKEN value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr14</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NMTOKENS value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr15</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NOTATIONS value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attr16</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal enumeration value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P60-ibm60i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid DefaultDecl which is against P60 VC: Required Attribute. The
+ attribute "chapter" for the element "two" is declared as #REQUIRED in the
+ DefaultDecl in the AttlistDecl, but the value of this attribute is not given.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P60-ibm60i02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid DefaultDecl which is against P60 VC: Fixed Attribute Default.. The
+ attribute "chapter" for the element "one" is declared as #FIXED with the given
+ value "Introduction" in the DefaultDecl in the AttlistDecl, but the value of a
+ instance of this attribute is assigned to "JavaBeans".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P60-ibm60i03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid DefaultDecl which is against P60 VC: Attribute Default Legal. The
+ declared default value "c" is not legal for the type (a|b) in the AttDef in
+ the AttlistDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P60-ibm60i04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid DefaultDecl which is against P60 VC: Attribute Default Legal. The
+ declared default value "@#$" is not legal for the type NMTOKEN the AttDef in
+ the AttlistDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3 3.1 [39] [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p39pass2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character data is valid element content. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3 3.1 [39] [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p39pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Empty element tag may be used for any element which has no content. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-not-sa-005</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the <em>Entity Declared</em> VC by referring to an
+ undefined parameter entity within an external entity.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-dtd06</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests "Entity Declared" VC for a parameter entity. <em>NOTE: there
+ are both VCs and WFCs with this name, which is a specification issue
+ in that it is both confusing and in some ways self-contradictory.
+ The WFC does not apply to PEs, and even the clause which might
+ seem to suggest it could is ruled out in this test.</em>
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P68-ibm68i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge2" is referred in the file ibm68i01.dtd", but not declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P68-ibm68i02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge1" is referred before declared in the file ibm68i01.dtd".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P68-ibm68i03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge2" is referred in the file ibm68i03.ent", but not declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P68-ibm68i04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge1" is referred before declared in the file ibm68i04.ent".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P69-ibm69i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The Name
+ "pe2" in the PEReference in the file ibm69i01.dtd does not match the Name of
+ any declared PE.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P69-ibm69i02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The PE with
+ the name "pe1" is referred before declared in the file ibm69i02.dtd
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P69-ibm69i03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The Name
+ "pe3" in the PEReference in the file ibm69i03.ent does not match the Name of
+ any declared PE.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P69-ibm69i04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The PE with
+ the name "pe2" is referred before declared in the file ibm69i04.ent.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Based on E29 substantial source: minutes XML-Syntax 1999-02-24 E38 in
+ XML 1.0 Errata, this WFC does not apply to P69, but the VC Entity declared
+ still apply.
+ Tests PEReference which is against P69 WFC: Entity Declared. The PE
+ with the name "paaa" is referred before declared in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p66pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid character references
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">inv-dtd02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Notation Declared" VC by using an undeclared
+ notation name.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-invalid-P76-ibm76i01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests invalid NDataDecl which is against P76 VC: Notation declared. The Name
+ "JPGformat" in the NDataDecl in the EntityDecl for "ge2" does not match the
+ Name of any declared notation.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p75pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ valid external identifiers
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p74pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ PEDef is either an entity value or an external id
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">utf16b</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests reading an invalid "big endian" UTF-16 document</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">utf16l</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests reading an invalid "little endian" UTF-16 document</p>
+</td>
+</tr>
+</table>
+<a name="not-wf"></a>
+<h3>3.3 Documents that are Not Well Formed</h3>
+<p> All conforming XML 1.0 Processors are <b>required</b> to
+ report fatal errors in the case of documents which are not
+ <em>Well Formed</em>. Such errors are basically of two types:
+ <em>(a)</em> the document violates the XML grammar; or else
+ <em>(b)</em> it violates a <em>well formedness constraint
+ (WFC)</em>. There is a single <em>exception to that
+ requirement</em>: nonvalidating processors which do not read
+ certain types of external entities are not required to detect
+ (and hence report) these errors. </p>
+<p> If a processor does not report a fatal error when given
+ one of these test cases, it is not conformant. If the error
+ reported does not correspond to the problem listed in this
+ test description, that could also be a conformance problem;
+ it might instead be a faulty diagnostic. </p>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P01-ibm01n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 1</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a document with no element. A well-formed document should have at lease
+ one elements.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P01-ibm01n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 1</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a document with wrong ordering of its prolog and element. The
+ element occurs before the xml declaration and the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P01-ibm01n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 1</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a document with wrong combination of misc and element. One PI occurs
+ between two elements.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-050</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Empty document, with no root element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p01fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S cannot occur before the prolog
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p01fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ comments cannot occur before the prolog
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p01fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ only one document element
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p01fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ document element must be complete.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x00
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x01
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x02
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x03
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x04
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x05
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x06
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x07
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x08
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n10.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x0B
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n11.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x0C
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n12.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x0E
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n13.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x0F
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n14.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x10
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n15.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x11
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n16.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x12
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n17.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x13
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n18.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x14
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n19.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x15
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n20.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x16
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n21.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x17
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n22.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x18
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n23.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x19
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n24.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1A </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n25.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1B
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n26.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1C
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n27.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1D
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n28.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1E
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n29.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1F
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n30.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #xD800
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n31.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #xDFFF
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n32.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #xFFFE
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n33.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #xFFFF
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-030</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A form feed is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-031</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A form feed is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-032</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A form feed is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-033</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ An ESC (octal 033) is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-034</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A form feed is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-142</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character #x0000 is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-143</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character #x001F is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-144</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character #xFFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-145</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character #xD800 is not legal anywhere in an XML document. (If it
+ appeared in a UTF-16 surrogate pair, it'd represent half of a UCS-4
+ character and so wouldn't really be in the document.) </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-146</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character references must also refer to legal XML characters;
+ #x00110000 is one more than the largest legal character.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-166</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-167</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character FFFE is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-168</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ An unpaired surrogate (D800) is not legal anywhere
+ in an XML document.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-169</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ An unpaired surrogate (DC00) is not legal anywhere
+ in an XML document.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-170</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Four byte UTF-8 encodings can encode UCS-4 characters
+ which are beyond the range of legal XML characters
+ (and can't be expressed in Unicode surrogate pairs).
+ This document holds such a character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-171</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-172</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-173</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-174</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-175</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-177</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail10</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail11</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail12</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail13</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail14</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail15</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail16</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail17</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail18</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail19</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail20</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail21</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail22</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail23</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail24</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail25</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail26</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail27</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail28</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail29</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail30</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail31</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p02fail9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P03-ibm03n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an end tag which contains an illegal space character #x3000 which
+ follows the element name "book".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x21
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x28
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x29
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2B
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2C
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2F
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3B
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3C
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3D
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n10.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3F
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n11.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5B
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n12.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5C
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n13.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5D
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n14.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5E
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n15.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x60
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n16.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7B
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n17.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7C
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n18.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7D
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which has an illegal first character. An illegal
+ first character "." is followed by "A_name-starts_with.".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which has an illegal first character. An illegal
+ first character "-" is followed by "A_name-starts_with-".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an element name which has an illegal first character. An illegal
+ first character "5" is followed by "A_name-starts_with_digit".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P09-ibm09n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains "%".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P09-ibm09n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains the ampersand character.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P09-ibm09n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains the double quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P09-ibm09n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an internal general entity with an invalid value. The closing bracket
+ (double quote) is missing with the value of the entity "FullName".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character "less than".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character ampersand.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the double quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The closing bracket (double quote) is
+ missing with The value of the attribute "first".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character "less than".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character ampersand.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the double quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The closing bracket (single quote) is
+ missing with the value of the attribute "first".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P11-ibm11n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests SystemLiteral. The systemLiteral for the element "student" has
+ a double quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P11-ibm11n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests SystemLiteral. The systemLiteral for the element "student" has
+ a single quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P11-ibm11n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests SystemLiteral. The closing bracket (double quote) is missing with
+ the systemLiteral for the element "student".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P11-ibm11n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests SystemLiteral. The closing bracket (single quote) is missing with
+ the systemLiteral for the element "student".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P12-ibm12n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PubidLiteral. The closing bracket (double quote) is missing with
+ the value of the PubidLiteral for the entity "info".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P12-ibm12n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PubidLiteral. The value of the PubidLiteral for the entity
+ "info" has a single quote character in the middle..
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P12-ibm12n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PubidLiteral. The closing bracket (single quote) is missing with
+ the value of the PubidLiteral for the entity "info".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P13-ibm13n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 13</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character "{".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P13-ibm13n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 13</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character "~".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P13-ibm13n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 13</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character double quote in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-012</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML-ism: attribute values must be quoted in all cases. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-013</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ The quotes on both ends of an attribute value must match. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-014</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Attribute values may not contain literal '&lt;' characters. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-020</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Attribute values may not contain literal '&amp;'
+ characters except as part of an entity reference. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-021</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Attribute values may not contain literal '&amp;'
+ characters except as part of an entity reference. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-088</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Attribute values are terminated by literal quote characters,
+ and any entity expansion is done afterwards. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-090</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Attributes may not contain a literal "&lt;" character;
+ this one has one because of reference expansion. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p10fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ attribute values exclude '&lt;'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p10fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ attribute values exclude '&amp;'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p10fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [11]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p11fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [11]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p11fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ cannot contain delimiting quotes
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">pubid01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal entity ref in public ID</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">pubid02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal characters in public ID</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">pubid03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal characters in public ID</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">pubid04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal characters in public ID</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">pubid05</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML-ism: public ID without system ID</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p12fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ '"' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p12fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ '\' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p12fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ entity references excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p12fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ '&gt;' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p12fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ '&lt;' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p12fail6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ built-in entity refs excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [13]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-085</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Public IDs may not contain "[". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [13]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-086</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Public IDs may not contain "[". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [13]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-087</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Public IDs may not contain "[". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [13]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p12fail7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ The public ID has a tab character, which is disallowed
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail10</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail11</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail12</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail13</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail14</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail15</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail16</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail17</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail18</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail19</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail20</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail21</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail22</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail23</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail24</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail25</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail26</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail27</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail28</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail29</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p03fail9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-002</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Names may not start with "."; it's not a Letter. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-140</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character '&amp;#x309a;' is a CombiningChar, not a
+ Letter, and so may not begin a name.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p04fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Name contains invalid character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p04fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Name contains invalid character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p04fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Name contains invalid character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-008</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Entity references must include names, which don't begin
+ with '.' (it's not a Letter or other name start character). </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-023</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Digits are not valid name start characters. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-024</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Digits are not valid name start characters. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-141</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character #x0E5C is not legal in XML names. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p05fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ a Name cannot start with a digit
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p05fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ a Name cannot start with a '.'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p05fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ a Name cannot start with a "-"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p05fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ a Name cannot start with a CombiningChar
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p05fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ a Name cannot start with an Extender
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-113</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Parameter entity values must use valid reference syntax;
+ this reference is malformed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-114</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ General entity values must use valid reference syntax;
+ this reference is malformed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-159</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Uses '&amp;' unquoted in an entity declaration,
+ which is illegal syntax for an entity reference.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p09fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ EntityValue excludes '%'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p09fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ EntityValue excludes '&amp;'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p09fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ incomplete character reference
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p09fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p09fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P14-ibm14n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharData. The content of the element "student" contains the
+ character "[[&gt;".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P14-ibm14n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharData. The content of the element "student" contains the
+ character "less than".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P14-ibm14n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharData. The content of the element "student" contains the
+ character ampersand.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-025</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Text may not contain a literal ']]&gt;' sequence. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-026</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Text may not contain a literal ']]&gt;' sequence. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-029</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Text may not contain a literal ']]&gt;' sequence. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p14fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ '&lt;' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p14fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ '&amp;' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p14fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ "]]&gt;" excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P15-ibm15n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests comment. The text of the second comment contains the character
+ "-".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P15-ibm15n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests comment. The second comment has a wrong closing sequence
+ "-(greater than)".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P15-ibm15n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests comment. The second comment has a wrong beginning sequence
+ "(less than)!-".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P15-ibm15n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests comment. The closing sequence is missing with the second
+ comment.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-027</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Comments must be terminated with "--&gt;".</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sgml03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Comments may not contain "--"</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p15fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ comments can't end in '-'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p15fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ one comment per comment (contrasted with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p15fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ can't include 2 or more adjacent '-'s
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-006</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML comments may not contain "--" </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.5 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-070</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML comments may not contain "--" </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P16-ibm16n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PI. The content of the PI includes the sequence
+ "(less than)?".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P16-ibm16n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PI. The PITarget is missing in the PI.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P16-ibm16n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PI. The PI has a wrong closing sequence "&gt;".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P16-ibm16n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PI. The closing sequence is missing in the PI.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P17-ibm17n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PITarget. The PITarget contains the string "XML".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P17-ibm17n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PITarget. The PITarget contains the string "xML".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P17-ibm17n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PITarget. The PITarget contains the string "xml".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P17-ibm17n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PITarget. The PITarget contains the string "xmL".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-003</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Processing Instruction target name is required.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-004</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML-ism: processing instructions end in '?&gt;' not '&gt;'. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-005</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Processing instructions end in '?&gt;' not '?'. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-028</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Processing instructions must end with '?&gt;'. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">pi</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ No space between PI target name and data</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p16fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ "xml" is an invalid PITarget
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p16fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ a PITarget must be present
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [17]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-157</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ '&lt;?xmL ...?&gt;' is not a legal processing instruction
+ target name. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [17]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-not-sa-002</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Processing instruction target names may not be "XML"
+ in any combination of cases. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.6 [17]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-ext-sa-003</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Only one text declaration is permitted; a second one
+ looks like an illegal processing instruction (target names
+ of "xml" in any case are not allowed). </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P18-ibm18n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 18</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDSect. The CDStart is missing in the CDSect in the content of
+ element "student".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P18-ibm18n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 18</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDSect. The CDEnd is missing in the CDSect in the content of
+ element "student".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P19-ibm19n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 19</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDStart. The CDStart contains a lower case string "cdata".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P19-ibm19n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 19</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDStart. The CDStart contains an extra character "[".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P19-ibm19n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 19</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDStart. The CDStart contains a wrong character "?".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P20-ibm20n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 20</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDATA with an illegal sequence. The CDATA contains the string
+ "[[&gt;".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P21-ibm21n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 21</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDEnd. One "]" is missing in the CDEnd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P21-ibm21n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 21</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDEnd. An extra "]" is placed in the CDEnd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P21-ibm21n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 21</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CDEnd. A wrong character ")" is placed in the CDEnd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 </td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-105</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid placement of CDATA section. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-017</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ CDATA sections need a terminating ']]&gt;'. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-051</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ CDATA is invalid at top level of document.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-128</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid CDATA syntax. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p18fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no space before "CDATA"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p18fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no space after "CDATA"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p18fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ CDSect's can't nest
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 [19]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-018</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ CDATA sections begin with a literal '&lt;![CDATA[', no space.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 [19]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-108</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ No space in '&lt;![CDATA['.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.7 [19]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-112</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ CDATA sections start '&lt;![CDATA[', not '&lt;!cdata['.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-160</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Violates the <em>PEs in Internal Subset</em> WFC
+ by using a PE reference within a declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-161</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Violates the <em>PEs in Internal Subset</em> WFC
+ by using a PE reference within a declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-162</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Violates the <em>PEs in Internal Subset</em> WFC
+ by using a PE reference within a declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">valid-sa-094</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+
+ This refers to an undefined parameter entity reference within
+ a markup declaration in the internal DTD subset, violating
+ the <em>PEs in Internal Subset</em> WFC.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P22-ibm22n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests prolog with wrong field ordering. The XMLDecl occurs
+ after the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P22-ibm22n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests prolog with wrong field ordering. The Misc (comment)
+ occurs before the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P22-ibm22n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests prolog with wrong field ordering. The XMLDecl occurs
+ after the DTD and a comment. The other comment occurs before the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with a required field missing. The Versioninfo is
+ missing in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with wrong field ordering. The VersionInfo
+ occurs after the EncodingDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with wrong field ordering. The VersionInfo
+ occurs after the SDDecl and the SDDecl occurs after the VersionInfo.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with wrong key word. An upper case string "XML" is
+ used as the key word in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with a wrong closing sequence "&gt;".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with a wrong opening sequence "(less than)!".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with a required field missing. The VersionNum is
+ missing in the VersionInfo in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with a required field missing. The white space is
+ missing between the key word "xml" and the VersionInfo in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with a required field missing. The "="
+ (equal sign) is missing between the key word "version" and the VersionNum.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with wrong field ordering. The VersionNum
+ occurs before "=" and "version".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with wrong field ordering. The "=" occurs
+ after "version" and the VersionNum.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with the wrong key word "Version".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with the wrong key word "versioN".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with mismatched quotes around the VersionNum.
+ version = '1.0" is used as the VersionInfo.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with mismatched quotes around the VersionNum.
+ The closing bracket for the VersionNum is missing.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P25-ibm25n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests eq with a wrong key word "==".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P25-ibm25n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests eq with a wrong key word "eq".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P26-ibm26n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 26</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests VersionNum with an illegal character "#".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P27-ibm27n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 27</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests type of Misc. An element declaration is used as a type of Misc
+ After the element "animal".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with a required field missing. The Name "animal"
+ is missing in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong field ordering. The Name
+ "animal" occurs after the markup declarations inside the "[]".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong field ordering. The Name
+ "animal" occurs after the markup declarations inside the "[]".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with general entity reference.The
+ "(ampersand)generalE" occurs in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong key word. A wrong key word "DOCtYPE"
+ occurs on line 2.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with mismatched brackets. The closing bracket "]"
+ of the DTD is missing.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong bracket. The opening bracket "}" occurs
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong opening sequence. The opening sequence
+ "(less than)?DOCTYPE" occurs in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests markupdecl with an illegal markup declaration. A XMLDecl
+ occurs inside the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ ATTlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a PI in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a comment
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a
+ NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P30-ibm30n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 30</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests extSubset with wrong field ordering. In the file "ibm30n01.dtd",
+ the TextDecl occurs after the extSubsetDecl (the element declaration).
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P31-ibm31n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 31</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests extSubsetDecl with an illegal field. A general entity
+ reference occurs in file "ibm31n01.dtd".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 </td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sgml02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML declaration must be at the very beginning of a document;
+ it"s not a processing instruction</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-147</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML Declaration may not be preceded by whitespace.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-148</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML Declaration may not be preceded by comments or whitespace.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-152</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML declarations must include the "version=..." string.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p22fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ prolog must start with XML decl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p22fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ prolog must start with XML decl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-095</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ VersionInfo must come before EncodingDecl. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-098</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Only one "version=..." string may appear in an XML declaration.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-099</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Only three pseudo-attributes are in the XML declaration,
+ and "valid=..." is not one of them. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p23fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ "xml" must be lower-case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p23fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ VersionInfo must be supplied
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p23fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ VersionInfo must come first
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p23fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SDDecl must come last
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p23fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no SGML-type PIs
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p39fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML declarations must be correctly terminated </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p39fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML declarations must be correctly terminated </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-094</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Prolog VERSION must be lowercase. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-097</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Both quotes surrounding VersionNum must be the same. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p24fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p24fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [25]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p25fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Comment is illegal in VersionInfo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [26]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-102</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Provides an illegal XML version number; spaces are illegal.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [26]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p26fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal character in VersionNum. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [26]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p26fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal character in VersionNum. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-036</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Text may not appear after the root element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-037</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character references may not appear after the root element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-040</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Provides two document elements.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-041</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Provides two document elements.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-043</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Provides #PCDATA text after the document element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-044</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Provides two document elements.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-048</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Provides a CDATA section after the roor element.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-151</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML declarations may not follow document content.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p27fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ References aren't allowed in Misc,
+ even if they would resolve to valid Misc.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-055</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid Document Type Definition format. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-056</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid Document Type Definition format - misplaced comment. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-107</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid document type declaration. CDATA alone is invalid.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-149</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML Declaration may not be within a DTD.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p28fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ only declarations in DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [29]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-063</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Conditional sections may only appear in the external
+ DTD subset. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [29]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p29fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A processor must not pass unknown declaration types.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [30]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p30fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ An XML declaration is not the same as a TextDecl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 [31]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p31fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ external subset excludes doctypedecl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 2.6 [23, 17]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-154</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ '&lt;?XML ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 2.6 [23, 17]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-155</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ '&lt;?xmL ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8 2.6 [23, 17]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-156</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ '&lt;?xMl ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests SDDecl with a required field missing. The leading white space
+ is missing with the SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests SDDecl with a required field missing. The "=" sign is missing
+ in the SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "Standalone" occurs in
+ the SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "Yes" occurs in the
+ SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "YES" occurs in the
+ SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "No" occurs in the
+ SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "NO" occurs in the
+ SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong field ordering. The "=" sign occurs
+ after the key word "yes" in the SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-096</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Space is required before the standalone declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-100</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Only "yes" and "no" are permitted as values of "standalone". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p32fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p32fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p32fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ initial S is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p32fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ quotes are required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p32fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ yes or no must be lower case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-039</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the Element Type Match WFC - end tag name must
+ match start tag name.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests element with a required field missing. The ETag is missing
+ for the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests element with a required field missing. The STag is missing
+ for the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests element with required fields missing. Both the content and
+ the ETag are missing in the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests element with required fields missing. Both the content and
+ the STag are missing in the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests element with wrong field ordering. The STag and the ETag are
+ swapped in the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests element with wrong field ordering. The content occurs after
+ the ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-038</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the "Unique Att Spec" WF constraint by providing
+ multiple values for an attribute.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-081</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This tests the <em>No External Entity References</em> WFC,
+ since the entity is referred to within an attribute. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-082</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This tests the <em>No External Entity References</em> WFC,
+ since the entity is referred to within an attribute. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests STag with a required field missing. The Name "root" is
+ in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests STag with a required field missing. The white space between
+ the Name "root" and the attribute "attr1" is missing in the STag of the
+ element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests STag with wrong field ordering. The Name "root" occurs after
+ the attribute "attr1" in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests STag with a wrong opening sequence. The string "(less than)!" is used
+ as the opening sequence for the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests STag with duplicate attribute names. The attribute name
+ "attr1" occurs twice in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The attribute name
+ is missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The "=" is missing
+ between the attribute name and the attribute value in the Attribute in the
+ STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The AttValue is
+ missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The Name and the
+ "=" are missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The "=" and the
+ AttValue are missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The Name and the
+ AttValue are missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute with wrong field ordering. The "=" occurs after the
+ Name and the AttValue in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute with wrong field ordering. The Name and the AttValue
+ are swapped in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute with wrong field ordering. The "=" occurs before the
+ Name and the AttValue in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n10.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "no external entity references". A direct
+ references to the external entity "aExternal" is contained in the value of the
+ attribute "attr1".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n11.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "no external entity references". A indirect
+ references to the external entity "aExternal" is contained in the value of the
+ attribute "attr1".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n12.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "no external entity references". A direct
+ references to the external unparsed entity "aImage" is contained in the value
+ of the attribute "attr1".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n13.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "No (less that) character in Attribute
+ Values". The character "less than" is contained in the value of the
+ attribute "attr1".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n14.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "No (less than) in Attribute Values". The character
+ "less than" is contained in the value of the attribute "attr1" through indirect
+ internal entity reference.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ETag with a required field missing. The Name is missing in the
+ ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ETag with a wrong beginning sequence. The string "(less than)\" is used as
+ a beginning sequence of the ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ETag with a wrong beginning sequence. The string "less than" is used as
+ a beginning sequence of the ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ETag with a wrong structure. An white space occurs between The
+ beginning sequence and the Name of the ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ETag with a wrong structure. The ETag of the element "root"
+ contains an Attribute (attr1="any").
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P43-ibm43n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests element content with a wrong option. A NotationDecl is used as
+ the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P43-ibm43n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests element content with a wrong option. A elementdecl is used as
+ the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P43-ibm43n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests element content with a wrong option. An elementdecl is used as
+ the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P43-ibm43n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests element content with a wrong option. An AttlistDecl is used as
+ the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P44-ibm44n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag with a required field missing. The Name "root" is
+ missing in the EmptyElemTag.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P44-ibm44n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag with wrong field ordering. The Attribute (attri1 =
+ "any") occurs before the name of the element "root" in the EmptyElemTag.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P44-ibm44n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag with wrong closing sequence. The string "\&gt;" is used
+ as the closing sequence in the EmptyElemtag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P44-ibm44n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag which against the WFC "Unique Att Spec". The
+ attribute name "attr1" occurs twice in the EmptyElemTag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-046</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This start (or empty element) tag was not terminated correctly. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-049</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Missing start tag </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attlist10</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Whitespace required between attributes</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p40fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S is required between attributes
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p40fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ tags start with names, not nmtokens
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p40fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ tags start with names, not nmtokens
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p40fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no space before name
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-001</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Attribute values must start with attribute names, not "?". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-011</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML-ism: attribute values must be explicitly assigned a
+ value, it can't act as a boolean toggle. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-015</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Attribute values need a value, not just an equals sign. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-016</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Attribute values need an associated name.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-178</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid syntax matching double quote is missing. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p41fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ quotes are required (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p41fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ attribute name is required (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p41fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Eq required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-019</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ End tags may not be abbreviated as '&lt;/&gt;'.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-042</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid End Tag </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-053</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ End tag does not match start tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">element00</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ EOF in middle of incomplete ETAG</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">element01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ EOF in middle of incomplete ETAG</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p42fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no space before name
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p42fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ cannot end with "/&gt;"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p42fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no NET (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-035</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ The '&lt;' character is a markup delimiter and must
+ start an element, CDATA section, PI, or comment. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-111</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Entiry reference must be in content of element not Start-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-150</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML declarations may not be within element content. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">element02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal markup (&lt;%@ ... %&gt;)</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">element03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal markup (&lt;% ... %&gt;)</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">element04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal markup (&lt;!ELEMENT ... &gt;)</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p43fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no non-comment declarations
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p43fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no conditional sections
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p43fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no conditional sections
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-045</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid Empty Element Tag </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-047</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid empty element tag invalid whitespace </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-186</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Whitespace is required between attribute/value pairs. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attlist11</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Whitespace required between attributes</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p44fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal space before Empty element tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p44fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal space after Empty element tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p44fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal comment in Empty element tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p44fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Whitespace required between attributes. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p44fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Duplicate attribute name is illegal. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The Name is missing
+ in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The white space is
+ missing between "aEle" and "(#PCDATA)" in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The contentspec is
+ missing in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The contentspec and
+ the white space is missing in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The Name, the white
+ space, and the contentspec are missing in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests elementdecl with wrong field ordering. The Name occurs after the
+ contentspec in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests elementdecl with wrong beginning sequence. The string
+ "(less than)ELEMENT" is used as the beginning sequence in the second
+ elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests elementdecl with wrong key word. The string "Element" is used as
+ the key word in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests elementdecl with wrong key word. The string "element" is used as
+ the key word in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests contentspec with wrong key word. the string "empty" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests contentspec with wrong key word. the string "Empty" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests contentspec with wrong key word. the string "Any" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests contentspec with wrong key word. the string "any" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests contentspec with a wrong option. The string "#CDATA" is used as
+ the contentspec in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-133</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal whitespace before optional character causes syntax error. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-134</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal whitespace before optional character causes syntax error. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests children with a required field missing. The "+" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests children with a required field missing. The "*" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests children with a required field missing. The "?" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests children with wrong field ordering. The "*" occurs before the
+ seq field (a,a) in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests children with wrong field ordering. The "+" occurs before the
+ choice field (a|a) in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests children with wrong key word. The "^" occurs after the seq field
+ in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the second cp in the choice field in the third elementdecl in the
+ DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the cp in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the first cp in the choice field in the third elementdecl in the
+ DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests cp with wrong field ordering. The "+" occurs before the seq (a,a)
+ in the first cp in the choice field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests cp with wrong field ordering. The "*" occurs before the choice
+ (a|b) in the first cp in the seq field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests cp with wrong field ordering. The "?" occurs before the Name "a"
+ in the second cp in the seq field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests cp with wrong key word. The "^" occurs after the Name "a" in the
+ first cp in the choice field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests choice with a required field missing. The two cps are missing in
+ the choice field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests choice with a required field missing. The third cp is missing in
+ the choice field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests choice with a wrong separator. The "!" is used as the separator
+ in the choice field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests choice with a required field missing. The separator "|" is
+ missing in the choice field (a b)+ in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests choice with an extra separator. An extra "|" occurs between a
+ and b in the choice field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests choice with a required field missing. The closing bracket ")" is
+ missing in the choice field (a |b * in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests seq with a required field missing. The two cps are missing in
+ the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests seq with a required field missing. The third cp is missing in
+ the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests seq with a wrong separator. The "|" is used as the separator
+ between a and b in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests seq with a wrong separator. The "." is used as the separator
+ between a and b in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests seq with an extra separator. An extra "," occurs between (a|b)
+ and a in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests seq with a required field missing. The separator between (a|b)
+ and (b|a) is missing in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests seq with wrong closing bracket. The "]" is used as the closing
+ bracket in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [46]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-139</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ The element-content model should not be empty. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-122</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid syntax mixed connectors are used. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-135</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid character used as connector. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sgml13</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML Unordered content models not allowed</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p47fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid operator '|' must match previous operator ','</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p47fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal character '-' in Element-content model </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p47fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Optional character must follow a name or list </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p47fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal space before optional character</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-123</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid syntax mismatched parenthesis. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-138</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid syntax for content particle. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">content01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ No whitespace before "?" in content model</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">content02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ No whitespace before "*" in content model</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">content03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ No whitespace before "+" in content model</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p48fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal space before optional character </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p48fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal space before optional character </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [49]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p49fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ connectors must match </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [50]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-132</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid syntax mixed connectors used. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [50]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p50fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ connectors must match </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [55]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">nwf-dtd00</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Comma mandatory in content model</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.1 [55]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">nwf-dtd01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Can't mix comma and vertical bar in content models</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Mixed with a wrong key word. The string "#pcdata" is used as the
+ key word in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Mixed with wrong field ordering. The field #PCDATA does not
+ occur as the first component in the Mixed field in the fourth elementdecl in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Mixed with a separator missing. The separator "|" is missing in
+ between #PCDATA and a in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Mixed with a wrong key word. The string "#CDATA" is used as the
+ key word in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Mixed with a required field missing. The "*" is missing after
+ the ")" in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Mixed with wrong closing bracket. The "]" is used as the closing
+ bracket in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Mixed with a required field missing. The closing bracket ")" is
+ missing after (#PCDATA in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-124</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid format of Mixed-content declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-125</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid syntax extra set of parenthesis not necessary. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-126</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid syntax Mixed-content must be defined as zero or more. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-127</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid syntax Mixed-content must be defined as zero or more. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-183</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Mixed content declarations may not include content particles.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-184</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ In mixed content models, element names must not be
+ parenthesized. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p51fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ occurrence on #PCDATA group must be *
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p51fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ occurrence on #PCDATA group must be *
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p51fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ #PCDATA must come first
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p51fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ occurrence on #PCDATA group must be *
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p51fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ only '|' connectors
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p51fail6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Only '|' connectors and occurrence on #PCDATA group must be * </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p51fail7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no nested groups
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-057</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This isn't SGML; comments can't exist in declarations. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-129</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid syntax for Element Type Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-130</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid syntax for Element Type Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-131</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid syntax for Element Type Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-136</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tag omission is invalid in XML. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-137</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Space is required before a content model. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sgml05</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ ELEMENT declarations apply to only one element, unlike SGML</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sgml07</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML Tag minimization specifications are not allowed</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sgml08</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML Tag minimization specifications are not allowed</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sgml09</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML Content model exception specifications are not allowed</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sgml10</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML Content model exception specifications are not allowed</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p45fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ ELEMENT must be upper case.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p45fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S before contentspec is required.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p45fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ only one content spec
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p45fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no comments in declarations (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sgml11</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ CDATA is not a valid content model spec</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sgml12</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ RCDATA is not a valid content model spec</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p46fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no parens on declared content
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p46fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no inclusions (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p46fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no exclusions (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p46fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no space before occurrence
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p46fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ single group
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p46fail6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ can't be both declared and modeled
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with a required field missing. The Name is missing
+ in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with a required field missing. The white space is
+ missing between the beginning sequence and the name in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with wrong field ordering. The Name "a" occurs after
+ the first AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with wrong key word. The string "Attlist" is used as
+ the key word in the beginning sequence in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with a required field missing. The closing bracket
+ "greater than" is missing in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with wrong beginning sequence. The string
+ "(less than)ATTLIST" is used as the beginning sequence in the AttlistDecl in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The DefaultDecl is missing
+ in the AttDef for the name "attr1" in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The white space is missing
+ between (abc|def) and "def" in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The AttType is missing
+ for "attr1" in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The white space is missing
+ between "attr1" and (abc|def) in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The Name is missing in the
+ AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The white space before the
+ name "attr2" is missing in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttDef with wrong field ordering. The Name "attr1" occurs after
+ the AttType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttDef with wrong field ordering. The Name "attr1" occurs after
+ the AttType and "default" occurs before the AttType in the AttDef in the
+ AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P54-ibm54n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttType with a wrong option. The string "BOGUSATTR" is used as
+ the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P54-ibm54n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests AttType with a wrong option. The string "PCDATA" is used as
+ the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P55-ibm55n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 55</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests StringType with a wrong key word. The lower case string "cdata"
+ is used as the StringType in the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P55-ibm55n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 55</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests StringType with a wrong key word. The string "#CDATA" is used as
+ the StringType in the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P55-ibm55n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 55</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests StringType with a wrong key word. The string "CData" is used as
+ the StringType in the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "id" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "Idref" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "Idrefs" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "EntitY" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "nmTOKEN" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "NMtokens" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "#ID" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P57-ibm57n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 57</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EnumeratedType with an illegal option. The "NMTOKEN (a|b)"
+ is used in the EnumeratedType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationType with wrong key word. The lower case "notation" is
+ used as the key word in the NotationType in the AttDef in the AttlistDecl in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationType with a required field missing. The beginning bracket
+ "(" is missing in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationType with a required field missing. The Name is missing
+ in the "()" in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationType with a required field missing. The closing bracket
+ is missing in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationType with wrong field ordering. The key word "NOTATION"
+ occurs after "(this)" in the NotationType in the AttDef in the AttlistDecl in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationType with wrong separator. The "," is used as a separator
+ between "this" and "that" in the NotationType in the AttDef in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationType with a required field missing. The white space is
+ missing between "NOTATION" and "(this)" in the NotationType in the AttDef in the
+ AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationType with extra wrong characters. The double quote
+ character occurs after "(" and before ")" in the NotationType in the AttDef in
+ the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Enumeration with required fields missing. The Nmtokens and "|"s are
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Enumeration with a required field missing. The closing bracket ")" is
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Enumeration with wrong separator. The "," is used as the separator in
+ the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Enumeration with illegal presence. The double quotes occur around the
+ Enumeration value in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Enumeration with a required field missing. The white space is missing
+ between in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Enumeration with a required field missing. The beginning bracket "(" is
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [54]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-058</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid character , in ATTLIST enumeration </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [54]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p54fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ don't pass unknown attribute types
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [55]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p55fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-060</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid type NAME defined in ATTLIST.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attlist01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML's NUTOKEN is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attlist02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML's NUTOKENS attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attlist04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML's NUMBER attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attlist05</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML's NUMBERS attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attlist06</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML's NAME attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attlist07</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML's NAMES attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attlist08</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML's #CURRENT is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attlist09</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML's #CONREF is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p56fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no IDS type
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p56fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no NUMBER type
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p56fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no NAME type
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p56fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no ENTITYS type
+- types must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p56fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ types must be upper case </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [57]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p57fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no keyword for NMTOKEN enumeration
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-068</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Space is required between NOTATION keyword and list of
+ enumerated choices in &lt;!ATTLIST...&gt; declarations. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p58fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ at least one value required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p58fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ separator must be '|'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p58fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ notations are NAMEs, not NMTOKENs -- note:
+ Leaving the invalid
+ notation undeclared would cause a validating parser to fail without
+ checking the name syntax, so the notation is declared with an
+ invalid name. A parser that reports error positions should report
+ an error at the AttlistDecl on line 6, before reaching the notation
+ declaration.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p58fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ NOTATION must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p58fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S after keyword is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p58fail6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ parentheses are require
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p58fail7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ values are unquoted
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p58fail8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ values are unquoted
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-059</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ String literal must be in quotes. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">attlist03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Comma doesn't separate enumerations, unlike in SGML.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p59fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ at least one required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p59fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ separator must be ","
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p59fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ values are unquoted
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with wrong key word. The string "#required" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with wrong key word. The string "Implied" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with wrong key word. The string "!IMPLIED" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with a required field missing. There is no
+ attribute value specified after the key word "#FIXED" in the DefaultDecl in
+ the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with a required field missing. The white space is
+ missing between the key word "#FIXED" and the attribute value in the
+ DefaultDecl in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with wrong field ordering. The key word "#FIXED"
+ occurs after the attribute value "introduction" in the DefaultDecl in the
+ AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl against WFC of P60. The text replacement of the
+ entity "avalue" contains the "less than" character in the DefaultDecl in the
+ AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with more than one key word. The "#REQUIRED" and
+ the "#IMPLIED" are used as the key words in the DefaultDecl in the AttDef
+ in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p60fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ keywords must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p60fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S is required after #FIXED
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p60fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ only #FIXED has both keyword and value
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p60fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ #FIXED required value
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p60fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ only one default type
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-066</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Required whitespace is missing. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-158</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML-ism: "#NOTATION gif" can't have attributes. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sgml04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ ATTLIST declarations apply to only one element, unlike SGML</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sgml06</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ ATTLIST declarations are never global, unlike in SGML</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p52fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A name is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p52fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A name is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-064</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Space is required between attribute type and default values
+ in &lt;!ATTLIST...&gt; declarations. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-065</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Space is required between attribute name and type
+ in &lt;!ATTLIST...&gt; declarations. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-067</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Space is required between attribute type and default values
+ in &lt;!ATTLIST...&gt; declarations. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p53fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S is required before default
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p53fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S is required before type
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p53fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ type is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p53fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ default is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p53fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ name is requried
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P61-ibm61n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 61</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests conditionalSect with a wrong option. The word "NOTINCLUDE" is
+ used as part of an option which is wrong in the coditionalSect.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong key word. The string "include" is used
+ as a key word in the beginning sequence in the includeSect in the file
+ ibm62n01.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong beginning sequence. An extra "[" occurs
+ in the beginning sequence in the includeSect in the file ibm62n02.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong beginning sequence. A wrong character "?"
+ occurs in the beginning sequence in the includeSect in the file ibm62n03.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect with a required field missing. The key word
+ "INCLUDE" is missing in the includeSect in the file ibm62n04.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect with a required field missing. The "]" is missing
+ after the key word "INCLUDE" in the includeSect in the file ibm62n05.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong field ordering. The two external subset
+ declarations occur before the key word "INCLUDE" in the includeSect in the
+ file ibm62n06.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect with a required field missing. The closing sequence
+ "]](greater than)" is missing in the includeSect in the file ibm62n07.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect with a required field missing. One "]" is missing
+ in the closing sequence in the includeSect in the file ibm62n08.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with wrong key word. The string "ignore" is used
+ as a key word in the beginning sequence in the ignoreSect in the file
+ ibm63n01.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with wrong beginning sequence. An extra "[" occurs
+ in the beginning sequence in the ignoreSect in the file ibm63n02.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with wrong beginning sequence. A wrong character "?"
+ occurs in the beginning sequence in the ignoreSect in the file ibm63n03.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with a required field missing. The key word
+ "IGNORE" is missing in the ignoreSect in the file ibm63n04.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with a required field missing. The "]" is missing
+ after the key word "IGNORE" in the ignoreSect in the file ibm63n05.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong field ordering. The two external subset
+ declarations occur before the key word "IGNORE" in the ignoreSect in the
+ file ibm63n06.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with a required field missing. The closing sequence
+ "]](greater than)" is missing in the ignoreSect in the file ibm63n07.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P64-ibm64n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents with wrong beginning sequence. The "?" occurs
+ in beginning sequence the ignoreSectContents in the file ibm64n01.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P64-ibm64n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents with a required field missing.The closing
+ sequence is missing in the ignoreSectContents in the file ibm64n02.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P64-ibm64n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents with a required field missing.The beginning
+ sequence is missing in the ignoreSectContents in the file ibm64n03.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P65-ibm65n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 65</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Ignore with illegal string included. The string
+ "]](greater than)" is contained before "this" in the Ignore in the
+ ignoreSectContents in the file ibm65n01.dtd
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P65-ibm65n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 65</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Ignore with illegal string included. The string
+ "(less than)![" is contained before "this" in the Ignore in the
+ ignoreSectContents in the file ibm65n02.dtd
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [61]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">cond01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Only INCLUDE and IGNORE are conditional section keywords</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [61]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">cond02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Must have keyword in conditional sections</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [61]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p61fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no other types, including TEMP, which is valid in SGML
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-not-sa-001</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Conditional sections must be properly terminated ("]&gt;" used
+ instead of "]]&gt;"). </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-not-sa-003</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Conditional sections must be properly terminated ("]]&gt;" omitted). </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-not-sa-004</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Conditional sections must be properly terminated ("]]&gt;" omitted). </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-not-sa-006</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Conditional sections need a '[' after the INCLUDE or IGNORE. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p62fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ INCLUDE must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p62fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no spaces in terminating delimiter
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [63]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p63fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ IGNORE must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [63]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p63fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ delimiters must be balanced
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [64]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p64fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ section delimiters must balance
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3.4 [64]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p64fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ section delimiters must balance
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-176</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Start tags must have matching end tags.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">sgml01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SGML-ism: omitted end tag for EMPTY content</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p39fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ start-tag requires end-tag
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p39fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ end-tag requires start-tag
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p39fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ XML documents contain one or more elements</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-084</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the <em>Parsed Entity</em> WFC by referring to an
+ unparsed entity. (This precedes the error of not declaring
+ that entity's notation, which may be detected any time before
+ the DTD parsing is completed.) </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-180</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ The <em>Entity Declared</em> WFC requires entities to be declared
+ before they are used in an attribute list declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-185</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the <em>Entity Declared</em> WFC.
+ <em>Note:</em> a nonvalidating parser is permitted not to report
+ this WFC violation, since it would need to read an external
+ parameter entity to distinguish it from a violation of
+ the <em>Standalone Declaration</em> VC.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-ext-sa-001</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests the <em>No Recursion</em> WFC by having an external general
+ entity be self-recursive.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#002f" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with the semicolon character missing. The semicolon
+ character is missing at the end of the CharRef in the attribute value in
+ the STag of element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "49" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#5~0" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x002g" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x006G" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#0=2f" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#56.0" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x00/2f"
+ is used as the referred character in the CharRef in the EntityDecl in the
+ DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n10.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#51)" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n11.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#00 2f"
+ is used as the referred character in the CharRef in the EntityDecl in the
+ DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n12.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x0000"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n13.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x001f"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n14.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#xfffe"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n15.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#xffff"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityRef with a required field missing. The Name is missing
+ in the EntityRef in the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityRef with a required field missing. The semicolon is
+ missing in the EntityRef in the attribute value in the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityRef with an extra white space. A white space occurs
+ after the ampersand in the EntityRef in the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Entity Declared. The name
+ "aAa" in the EntityRef in the AttValue in the STage of the element "root"
+ does not match the Name of any declared entity in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is not declared.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is externally declared, but standalone is "yes".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is referred before declared.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Parsed Entity. The
+ EntityRef in the AttValue in the STag of the element "root" contains the
+ name "aImage" of an unparsed entity.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: No Recursion. The
+ recursive entity reference occurs with the entity declarations for "aaa"
+ and "bbb" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n10.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: No Recursion. The
+ indirect recursive entity reference occurs with the entity declarations for
+ "aaa", "bbb", "ccc", "ddd", and "eee" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEReference with a required field missing. The Name "paaa" is
+ missing in the PEReference in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEReference with a required field missing. The semicolon is
+ missing in the PEReference "%paaa" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEReference with an extra white space. There is an extra
+ white space occurs before ";" in the PEReference in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEReference with an extra white space. There is an extra
+ white space occurs after "%" in the PEReference in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEReference which is against P69 WFC: No Recursion. The
+ recursive PE reference occurs with the entity declarations for "paaa" and
+ "bbb" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEReference which is against P69 WFC: No Recursion. The
+ indirect recursive PE reference occurs with the entity declarations for
+ "paaa", "bbb", "ccc", "ddd", and "eee" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-009</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character references may have only decimal or numeric strings.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-022</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character references end with semicolons, always!</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-052</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid character reference. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-093</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Hexadecimal character references may not use the uppercase 'X'.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-179</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid syntax matching double quote is missing. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p66fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ terminating ';' is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p66fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no S after '&amp;#'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p66fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no hex digits in numeric reference
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p66fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ only hex digits in hex references
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p66fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no references to non-characters
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p66fail6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no references to non-characters
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-007</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ General entity references have no whitespace after the
+ entity name and before the semicolon. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-010</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Ampersand may only appear as part of a general entity reference.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-071</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ ENTITY can't reference itself directly or indirectly.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-072</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Undefined ENTITY foo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-073</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Undefined ENTITY f. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-075</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ ENTITY can't reference itself directly or indirectly. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-076</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Undefined ENTITY foo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-078</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Undefined ENTITY foo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-079</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ ENTITY can't reference itself directly or indirectly. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-080</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ ENTITY can't reference itself directly or indirectly. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-110</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Entity reference must be in content of element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-118</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Entity reference expansion is not recursive.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-121</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A name of an ENTITY was started with an invalid character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p68fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ terminating ';' is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p68fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no S after '&amp;'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p68fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no S before ';'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-163</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid placement of Parameter entity reference. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-164</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid placement of Parameter entity reference. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-not-sa-008</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ In DTDs, the '%' character must be part of a parameter
+ entity reference.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">dtd02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ PE name immediately after "%"</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">dtd03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ PE name immediately followed by ";"</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p69fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ terminating ';' is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p69fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no S after '%'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p69fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no S before ';'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-106</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Invalid placement of entity declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P71-ibm70n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The white space is
+ missing between the beginning sequence and the Name "aaa" in the EntityDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The white space is
+ missing between the Name "aaa" and the EntityDef "aString" in the
+ EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The EntityDef is
+ missing in the EntityDecl with the Name "aaa" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The Name is missing
+ in the EntityDecl with the EntityDef "aString" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with wrong ordering. The Name "aaa" occurs after
+ the EntityDef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with wrong key word. The string "entity" is used
+ as the key word in the beginning sequence in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The closing bracket
+ (greater than) is missing in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The exclamation mark
+ is missing in the beginning sequence in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The white space is
+ missing between the beginning sequence and the "%" in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The Name is missing
+ in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The white space is
+ missing between the Name and the PEDef in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The PEDef is missing
+ after the Name "paaa" in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEdecl with wrong field ordering. The Name "paaa" occurs
+ after the PEDef in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEdecl with wrong field ordering. The "%" and the Name "paaa"
+ occurs after the PEDef in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEdecl with wrong key word. The string "entity" is used as
+ the key word in the beginning sequence in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The closing bracket
+ (greater than) is missing in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEdecl with wrong closing sequence. The string
+ "!(greater than)" is used as the closing sequence in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P73-ibm73n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 73</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityDef with wrong field ordering. The NDataDecl "NDATA
+ JPGformat" occurs before the ExternalID in the EntityDef in the EntityDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P73-ibm73n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 73</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EntityDef with a required field missing. The ExternalID is
+ missing before the NDataDecl in the EntityDef in the EntityDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P74-ibm74n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 74</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PEDef with extra fields. The NDataDecl occurs after the
+ ExternalID in the PEDef in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong key word. The string "system" is used
+ as the key word in the ExternalID in the EntityDef in the EntityDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong key word. The string "public" is used
+ as the key word in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong key word. The string "Public" is used
+ as the key word in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PublicLiteral and the SystemLiteral in the ExternalID in
+ the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The white space
+ between "SYSTEM" and the Systemliteral is missing in the ExternalID in the
+ EntityDef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The Systemliteral
+ is missing after "SYSTEM" in the ExternalID in the EntityDef in the
+ EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The white space
+ between the PublicLiteral and the Systemliteral is missing in the ExternalID
+ in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The key word
+ "PUBLIC" is missing in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The white space
+ between "PUBLIC" and the PublicLiteral is missing in the ExternalID in the
+ doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n10.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The PublicLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n11.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The PublicLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n12.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The SystemLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n13.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PublicLiteral in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with wrong key word. The string "ndata" is used as
+ the key word in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with wrong key word. The string "NData" is used as
+ the key word in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with a required field missing. The leading white
+ space is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with a required field missing. The key word "NDATA"
+ is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with a required field missing. The Name after the
+ key word "NDATA" is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with a required field missing. The white space
+ between "NDATA" and the Name is missing in the NDataDecl in the EntityDef
+ in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with wrong field ordering. The key word "NDATA"
+ occurs after the Name in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-054</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ PUBLIC requires two literals.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-061</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ External entity declarations require whitespace between public
+ and system IDs.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">dtd04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ PUBLIC literal must be quoted</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">dtd05</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SYSTEM identifier must be quoted</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p75fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S required after "PUBLIC"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p75fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S required after "SYSTEM"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p75fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S required between literals
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p75fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ "SYSTEM" implies only one literal
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p75fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ only one keyword
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p75fail6</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ "PUBLIC" requires two literals (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-069</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Space is required before an NDATA entity annotation.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-083</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Undefined NOTATION n. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p76fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S is required before "NDATA"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p76fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ "NDATA" is upper-case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p76fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ notation name is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p76fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ notation names are Names
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [70]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-109</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tags invalid within EntityDecl. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [70]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p70fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ This is neither
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-062</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Entity declarations need space after the entity name. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p71fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S is required before EntityDef
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p71fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Entity name is a Name, not an NMToken
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p71fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no S after "&lt;!"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p71fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S is required after "&lt;!ENTITY"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-165</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Parameter entity declarations must have a space before
+ the '%'. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p72fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S is required after "&lt;!ENTITY"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p72fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S is required after '%'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p72fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ S is required after name
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p72fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Entity name is a name, not an NMToken
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p73fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ No typed replacement text
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p73fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Only one replacement value
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p73fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ No NDataDecl on replacement text
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p73fail4</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Value is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p73fail5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ No NDataDecl without value
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-089</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Parameter entities "are" always parsed; NDATA annotations
+ are not permitted.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-091</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Parameter entities "are" always parsed; NDATA annotations
+ are not permitted.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p74fail1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ no NDataDecls on parameter entities
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p74fail2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ value is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p74fail3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ only one value
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TextDecl with wrong field ordering. The VersionInfo occurs
+ after the EncodingDecl in the TextDecl in the file "ibm77n01.ent".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TextDecl with wrong key word. The string "XML" is used in the
+ beginning sequence in the TextDecl in the file "ibm77n02.ent".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TextDecl with wrong closing sequence. The character "greater
+ than" is used as the closing sequence in the TextDecl in the file
+ "ibm77n03.ent".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests TextDecl with a required field missing. The closing sequence
+ is missing in the TextDecl in the file "ibm77n04.ent".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.1 [77]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">decl01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ External entities may not have standalone decls. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.1 [77]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">dtd07</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Text declarations (which optionally begin any external entity)
+ are required to have "encoding=...". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.1 [77]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">encoding07</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Text declarations (which optionally begin any external entity)
+ are required to have "encoding=...". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.1 4.3.2 [77, 78]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-ext-sa-002</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ External entities have "text declarations", which do
+ not permit the "standalone=..." attribute that's allowed
+ in XML declarations.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-074</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-103</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ End-tag required for element foo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-104</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-116</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-117</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-119</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-153</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Text declarations may not begin internal parsed entities;
+ they may only appear at the beginning of external parsed
+ (parameter or general) entities. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-181</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Internal parsed entities must match the <em>content</em>
+ production to be well formed. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-182</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Internal parsed entities must match the <em>content</em>
+ production to be well formed. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P78-ibm78n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 78</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests extParsedEnt with wrong field ordering. The TextDecl occurs
+ after the content in the file ibm78n01.ent.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P78-ibm78n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 78</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests extParsedEnt with extra field. A blank line occurs before the
+ TextDecl in the file ibm78n02.ent.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P79-ibm79n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 79</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests extPE with wrong field ordering. The TextDecl occurs after
+ the extSubsetDecl (the white space and the comment) in the file
+ ibm79n01.ent.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P79-ibm79n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 79</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests extPE with extra field. A blank line occurs before the
+ TextDecl in the file ibm78n02.ent.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.2 [79]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-not-sa-007</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Entities:</b></td><td bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ A &lt;!DOCTYPE ...&gt; declaration may not begin any external
+ entity; it's only found once, in the document entity.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with a required field missing. The leading white
+ space is missing in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with a required field missing. The "=" sign is
+ missing in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with a required field missing. The double quoted
+ EncName are missing in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with wrong field ordering. The string "encoding=" occurs after the double quoted EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with wrong field ordering. The "encoding" occurs
+ after the double quoted EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with wrong key word. The string "Encoding" is
+ used as the key word in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "_" is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "-" is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "." is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncName with illegal characters. The "8-" is used as the
+ initial characters in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "~" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "#" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The ":" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "/" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The ";" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-101</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Space is not permitted in an encoding name. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">encoding01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal character " " in encoding name</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">encoding02</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal character "/" in encoding name</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">encoding03</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal character reference in encoding name</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">encoding04</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal character ":" in encoding name</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">encoding05</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal character "@" in encoding name</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">encoding06</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Illegal character "+" in encoding name</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-092</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ The replacement text of this entity has an illegal reference,
+ because the character reference is expanded immediately. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-115</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ The replacement text of this entity is an illegal character
+ reference, which must be rejected when it is parsed in the
+ context of an attribute value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-120</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Character references are expanded in the replacement text of
+ an internal entity, which is then parsed as usual. Accordingly,
+ &amp; must be doubly quoted - encoded either as <em>&amp;amp;</em>
+ or as <em>&amp;#38;#38;</em>. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with a required field missing. The white space
+ after the beginning sequence of the NotationDecl is missing in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with a required field missing. The Name in the
+ NotationDecl is missing in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with a required field missing. The externalID or
+ the PublicID is missing in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with wrong field ordering. The Name occurs after
+ the "SYSTEM" and the externalID in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with wrong key word. The string "notation" is
+ used as a key word in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with a required field missing. The closing
+ bracket (the greater than character) is missing in the NotationDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with wrong beginning sequence. The "!" is missing
+ in the beginning sequence in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with wrong closing sequence. The extra "!" occurs
+ in the closing sequence in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PublicID with wrong key word. The string "public" is used as
+ the key word in the PublicID in the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PublicID with wrong key word. The string "Public" is used as
+ the key word in the PublicID in the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PublicID with a required field missing. The key word "PUBLIC"
+ is missing in the PublicID in the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PublicID with a required field missing. The white space
+ between the "PUBLIC" and the PubidLiteral is missing in the PublicID in
+ the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PublicID with a required field missing. The PubidLiteral is
+ missing in the PublicID in the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests PublicID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PubidLiteral in the PublicID in the NotationDcl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">41. [68]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">not-wf-sa-077</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Undefined ENTITY bar. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x00D7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x00F7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0132
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0133
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x013F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0140
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0149
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x017F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01c4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n10.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01CC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n100.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BB6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n101.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BBA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n102.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n103.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n104.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n105.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n106.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C5F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n107.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n108.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C8D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n109.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C91
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n11.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n110.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CA9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n111.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n112.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CBA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n113.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CDF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n114.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CE2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n115.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n116.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n117.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n118.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n119.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n12.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n120.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E2F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n121.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n122.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n123.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E46
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n124.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E83
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n125.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E85
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n126.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E89
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n127.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E8B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n128.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E8E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n129.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E98
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n13.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n130.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EA0
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n131.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EA4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n132.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EA6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n133.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EA8
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n134.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EAC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n135.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EAF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n136.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EB1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n137.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n138.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EBE
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n139.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EC5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n14.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n140.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0F48
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n141.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0F6A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n142.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x10C6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n143.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x10F7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n144.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1011
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n145.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1104
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n146.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1108
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n147.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x110A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n148.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x110D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n149.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x113B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n15.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n150.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x113F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n151.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1141
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n152.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x114D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n153.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x114f
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n154.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1151
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n155.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1156
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n156.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x115A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n157.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1162
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n158.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1164
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n159.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1166
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n16.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0230
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n160.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x116B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n161.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x116F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n162.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1174
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n163.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x119F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n164.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11AC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n165.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11B6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n166.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11B9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n167.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11BB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n168.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11C3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n169.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11F1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n17.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x02AF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n170.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11FA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n171.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1E9C
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n172.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1EFA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n173.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F16
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n174.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F1E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n175.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F46
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n176.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F4F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n177.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F58
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n178.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F5A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n179.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F5C
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n18.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x02CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n180.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F5E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n181.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #xF17E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n182.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FB5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n183.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FBD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n184.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FBF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n185.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FC5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n186.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FCD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n187.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FD5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n188.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FDC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n189.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FED
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n19.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0387
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n190.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FF5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n191.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FFD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n192.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x2127
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n193.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x212F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n194.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x2183
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n195.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x3095
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n196.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x30FB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n197.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x312D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n198.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #xD7A4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n20.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x038B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n21.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03A2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n22.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n23.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03D7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n24.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03DD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n25.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03E1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n26.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03F4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n27.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x040D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n28.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0450
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n29.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x045D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n30.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0482
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n31.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04C5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n32.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04C6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n33.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04C9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n34.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04EC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n35.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04ED
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n36.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04F6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n37.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04FA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n38.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0557
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n39.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0558
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n40.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0587
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n41.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x05EB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n42.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x05F3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n43.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0620
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n44.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x063B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n45.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x064B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n46.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06B8
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n47.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06BF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n48.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n49.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06D4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n50.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06D6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n51.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06E7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n52.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x093A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n53.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x093E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n54.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0962
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n55.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x098D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n56.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0991
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n57.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0992
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n58.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09A9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n59.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09B1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n60.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09B5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n61.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09BA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n62.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09DE
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n63.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09E2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n64.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09F2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n65.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A0B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n66.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n67.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n68.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n69.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n70.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A37
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n71.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n72.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A5B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n73.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A70
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n74.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A75
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n75.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n76.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0ABC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n77.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A92
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n78.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0AA9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n79.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0AB1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n80.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0AB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n81.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0ABA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n82.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B04
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n83.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n84.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n85.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n86.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n87.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n88.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n89.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B3E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n90.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B5E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n91.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n92.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B8B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n93.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B91
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n94.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B98
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n95.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B9B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n96.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B9D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n97.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BA0
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n98.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BA7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n99.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BAB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P86-ibm86n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Ideographic with an illegal character. The character #x4CFF
+ occurs as the first character in the PITarget in the PI in the DTD.
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P86-ibm86n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Ideographic with an illegal character. The character #x9FA6
+ occurs as the first character in the PITarget in the PI in the DTD.
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P86-ibm86n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Ideographic with an illegal character. The character #x3008
+ occurs as the first character in the PITarget in the PI in the DTD.
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P86-ibm86n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Ideographic with an illegal character. The character #x302A
+ occurs as the first character in the PITarget in the PI in the DTD.
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x02FF
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0346
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0362
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0487
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05A2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05BA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05BE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05C0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05C3
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n10.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0653
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n11.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x06B8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n12.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x06B9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n13.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x06E9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n14.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x06EE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n15.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0904
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n16.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x093B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n17.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x094E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n18.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0955
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n19.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0964
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n20.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0984
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n21.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09C5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n22.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09C9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n23.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09CE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n24.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09D8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n25.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09E4
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n26.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A03
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n27.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A3D
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n28.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A46
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n29.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n30.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n31.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A80
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n32.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n33.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0ABB
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n34.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0AC6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n35.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0ACA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n36.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0ACE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n37.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B04
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n38.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n39.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B44
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n40.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B4A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n41.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n42.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B58
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n43.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n44.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0BC3
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n45.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0BC9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n46.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0BD6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n47.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C0D
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n48.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C45
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n49.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n50.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C54
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n51.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C81
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n52.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n53.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0CC5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n54.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0CC9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n55.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0CD4
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n56.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0CD7
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n57.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D04
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n58.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D45
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n59.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n60.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n61.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D58
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n62.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0E3F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n63.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0E3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n64.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0E4F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n66.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0EBA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n67.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0EBE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n68.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0ECE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n69.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F1A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n70.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F36
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n71.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F38
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n72.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n73.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F3A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n74.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n75.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F85
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n76.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F8C
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n77.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F96
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n78.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F98
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n79.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0FB0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n80.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0FB8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n81.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0FBA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n82.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x20DD
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n83.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x20E2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n84.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x3030
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n85.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x309B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0029
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x003B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x066A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x06FA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0970
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x09F2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0AF0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0B70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n10.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0C65
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n11.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0CE5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n12.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0CF0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n13.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0D70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n14.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0E5A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n15.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0EDA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n16.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0F2A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n01.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x00B6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n02.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x00B8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n03.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x02D2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n04.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x03FE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n05.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x065F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n06.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x0EC7
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n07.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x3006
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n08.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x3030
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n09.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x3036
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n10.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x309C
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n11.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x309F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n12.xml</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x30FF
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<a name="error"></a>
+<h3>3.4 XML Documents with Optional Errors</h3>
+<p> Conforming XML 1.0 Processors are permitted to ignore
+ certain errors, or to report them at user option. In this
+ section of this test report are found descriptions of
+ test cases which fit into this category. </p>
+<p> Processor behavior on such test cases does not affect
+ conformance to the XML 1.0 (Second Edition) Recommendation, except as noted. </p>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.3, 4.2.2 [11]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">o-p11pass1</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ system literals may not contain
+ URI fragments
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">pe01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Parameter entities must consist of a series of complete markup
+ declarations of the types allowed by the nonterminal
+ <em>markupdecl</em>, interespersed with whitespace or PERefs.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">uri01</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ SYSTEM ids may not have URI fragments</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">pr-xml-euc-jp</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test support for the EUC-JP encoding, and for text
+ which relies on Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">pr-xml-iso-2022-jp</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test support for the ISO-2022-JP encoding, and for text
+ which relies on Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">pr-xml-shift_jis</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test support for the Shift_JIS encoding, and for text
+ which relies on Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">weekly-euc-jp</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test support for EUC-JP encoding, and
+ XML names which contain Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">weekly-iso-2022-jp</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test support for ISO-2022-JP encoding, and
+ XML names which contain Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td width="50%"><b>Sections [Rules]:</b></td><td bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Test ID:</b></td><td bgcolor="#ffffcc">weekly-shift_jis</td>
+</tr>
+<tr valign="top">
+<td width="50%"><b>Collection:</b></td><td bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td bgcolor="#ccffff">
+<p>
+ Test support for Shift_JIS encoding, and
+ XML names which contain Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+
+</p>
+</td>
+</tr>
+</table>
+<a name="contrib"></a>
+<h3>4. Contributors (Non-normative)</h3>
+<p> A team of volunteer members have participated in the
+ development of this work. Contributions have come from:
+ </p>
+<ul>
+<li>Murry Altheim, Sun Microsystems</li>
+<li>Mary Brady, NIST</li>
+<li>Tim Boland, NIST</li>
+<li>David Brownell, Sun Microsystems</li>
+<li>James Clark</li>
+<li>Karin Donker, IBM</li>
+<li>Irina Golfman, Inera Incorporated</li>
+<li>Tony Graham, Mulberry Technologies</li>
+<li>G. Ken Holman, Crane Softwrights Ltd</li>
+<li>Alex Milowski, Veo Systems, Inc</li>
+<li>Makota Murata, Fuji Xerox</li>
+<li>Miles O'Reilly, Microstar Software, Ltd</li>
+<li>Matt Timmermans, Microstar Software, Ltd</li>
+<li>Richard Rivello, NIST</li>
+<li>Lynne Rosenthal, NIST</li>
+<li>Brian Schellar, Chrystal Software</li>
+<li>Bill Smith, Sun Microsystems</li>
+<li>Trevor Veary, Software AG</li>
+</ul>
+<p>End</p>
+</body>
+</html>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.xml
new file mode 100644
index 0000000000..0b4986936e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20010315.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<!--
+ @(#)conformance.xml 1.1 98/12/20
+ Original version copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+ Modifications copyright 2001 by OASIS.
+-->
+
+<?xml-stylesheet href="xmlconformance.msxsl" type="text/xsl"?>
+
+<!DOCTYPE TESTSUITE SYSTEM "testcases.dtd" [
+
+ <!-- Sun-written testcases -->
+ <!ENTITY sun-valid SYSTEM "sun/sun-valid.xml">
+ <!ENTITY sun-invalid SYSTEM "sun/sun-invalid.xml">
+ <!ENTITY sun-not-wf SYSTEM "sun/sun-not-wf.xml">
+ <!ENTITY sun-error SYSTEM "sun/sun-error.xml">
+
+ <!-- James Clark "XMLTEST" -->
+ <!ENTITY jclark-xmltest SYSTEM "xmltest/xmltest.xml">
+
+ <!-- Fuji Xerox "Japanese Documents" -->
+ <!ENTITY xerox-japanese SYSTEM "japanese/japanese.xml">
+
+ <!-- NIST/OASIS test suite -->
+ <!ENTITY nist-oasis SYSTEM "oasis/oasis.xml">
+
+ <!-- IBM tests -->
+ <!ENTITY ibm-invalid SYSTEM "ibm/ibm_oasis_invalid.xml">
+ <!ENTITY ibm-not-wf SYSTEM "ibm/ibm_oasis_not-wf.xml">
+ <!ENTITY ibm-valid SYSTEM "ibm/ibm_oasis_valid.xml">
+]>
+
+<TESTSUITE PROFILE="OASIS draft v1.0 Second Edition;
+with 15 March updates by Mary Brady)">
+
+ &jclark-xmltest;
+ &xerox-japanese;
+
+<TESTCASES PROFILE="Sun Microsystems XML Tests" xml:base="sun">
+ &sun-valid;
+ &sun-invalid;
+ &sun-not-wf;
+ &sun-error;
+</TESTCASES>
+
+ &nist-oasis;
+<TESTCASES PROFILE="IBM XML Tests" xml:base="ibm">
+ &ibm-invalid;
+ &ibm-not-wf;
+ &ibm-valid;
+</TESTCASES>
+</TESTSUITE>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20020521.htm b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20020521.htm
new file mode 100644
index 0000000000..44d28564e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20020521.htm
@@ -0,0 +1,39943 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title> XML Conformance Tests </title>
+<meta content="text/html;charset=utf-8" http-equiv="Content-Type"/>
+<style xml:space="preserve" type="text/css">
+
+ tr.premiere { background-color: #BEDCE6; }
+
+ th { text-align: left; vertical-align: top }
+
+ .editor { color: red; }
+
+ .countdown { color: white; background-color: red; }
+
+ blockquote, q { font-family: Arial, Helvetica, sans-serif; }
+
+ .quote { font-family: Arial, Helvetica, sans-serif; }
+
+ pre.quote { margin-left: 2.5em; }
+
+ ol.quote { font-family: Arial, Helvetica, sans-serif; margin-left: 3em; }
+
+ .diff-add { background-color: yellow; }
+
+ .diff-chg { background-color: lime; }
+
+ .diff-del { text-decoration: line-through; }
+
+ </style>
+</head>
+<body bgcolor="#ffffff">
+<p>
+<a shape="rect" href="http://www.w3.org/">
+<img border="0" width="72" height="48" alt="W3C" src="http://xw2k.sdct.itl.nist.gov/martinez/xmlts/2001/XML-Test-Suite/xmlconf/files/w3c_home.gif"/>
+</a>
+<a shape="rect" rel="in-domain" href="http://www.w3.org/Architecture/">
+<img border="0" alt="Architecture Domain" src="http://xw2k.sdct.itl.nist.gov/martinez/xmlts/2001/XML-Test-Suite/xmlconf/files/arquitecture.bmp"/>
+</a>
+<a shape="rect" rel="in-area" href="../"> XML</a> | <a shape="rect" href="/Member/#confidential">Member-Confidential!</a>
+</p>
+<h1 align="center">XML 1.0 (2nd edition) W3C Conformance Test Suite</h1>
+<h1 align="center">6 October 2000</h1>
+<dl>
+<dt>
+<b>This version:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<p>
+<a shape="rect" href="http://xw2k.sdct.itl.nist.gov/martinez/xmlts/2001/XML-Test-Suite/xmlconf/xmlconf-20020521.htm">
+ http://xw2k.sdct.itl.nist.gov/martinez/xmlts/2001/XML-Test-Suite/xmlconf/xmlconf-20020521.htm</a>
+ (<a shape="rect" href="http://xw2k.sdct.itl.nist.gov/martinez/xmlts/2001/XML-Test-Suite/xmlconf/xmlconf-20020521.xml">XML</a>)</p>
+</li>
+</ul>
+</dd>
+<dt>
+<b>Current Version:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<p>
+<a shape="rect" href="http://xw2k.sdct.itl.nist.gov/martinez/xmlts/2001/XML-Test-Suite/xmlconf/xmlconf-20020521.xml">
+ http://xw2k.sdct.itl.nist.gov/martinez/xmlts/2001/XML-Test-Suite/xmlconf/xmlconf-20020521.xml</a>
+</p>
+</li>
+</ul>
+</dd>
+<dt>
+<b>Previous Version:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<p>
+<a shape="rect" href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.htm">
+ http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.htm</a>
+ (<a shape="rect" href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.xml">XML</a>)</p>
+</li>
+</ul>
+</dd>
+<dt>
+<b>Test Archive:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<p>
+<a shape="rect" href="http://xw2k.sdct.itl.nist.gov/martinez/xmlts/2001/XML-Test-Suite/xmlconf/xmlts052102.zip">http://xw2k.sdct.itl.nist.gov/martinez/2001/XML-Test-Suite/xmlconf/xmlts052102.zip</a>
+</p>
+</li>
+<li>
+<p>
+<a shape="rect" href="http://xw2k.sdct.itl.nist.gov/martinez/xmlts/2001/XML-Test-Suite/xmlconf/xmlts052102.zip">http://xw2k.sdct.itl.nist.gov/martinez/2001/XML-Test-Suite/xmlconf/xmlts052102.tar</a>
+</p>
+</li>
+</ul>
+</dd>
+<dt>
+<b>W3C XML Core Working Group:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<p>
+<a shape="rect" href="http://www.w3.org/XML/Group/Core">http://www.w3.org/XML/Group/Core</a>
+</p>
+</li>
+</ul>
+</dd>
+<dt>
+<b>Comments:</b>
+</dt>
+<dd>
+<ul>
+<li>Sandra I. Martinez, NIST <a shape="rect" href="mailto:public-xml-testsuite@w3.org"> public-xml-testsuite@w3.org</a>
+</li>
+</ul>
+</dd>
+</dl>
+<a shape="rect" name="contents"/>
+<h2>Table of Contents</h2>
+<ol>
+<li>
+<a shape="rect" href="#intro">Introduction</a>
+</li>
+<li>
+<a shape="rect" href="#matrix">Test Matrix</a>
+</li>
+<ol>
+<li>
+<a shape="rect" href="#binary">Binary Tests</a>
+</li>
+<li>
+<a shape="rect" href="#output">Output Tests</a>
+</li>
+</ol>
+<li>
+<a shape="rect" href="#listings">Test Case Descriptions</a>
+</li>
+<ol>
+<li>
+<a shape="rect" href="#valid">Valid Documents</a>
+</li>
+<li>
+<a shape="rect" href="#invalid">Invalid Documents</a>
+</li>
+<li>
+<a shape="rect" href="#not-wf">Not-WF Documents</a>
+</li>
+<li>
+<a shape="rect" href="#error">Optional Errors</a>
+</li>
+</ol>
+<li>
+<a shape="rect" href="#contrib">Contributors</a>
+</li>
+</ol>
+<a shape="rect" name="intro"/>
+<h2>1. Introduction </h2>
+<p>
+ The tests described in this document provide an initial set of metrics to determine how well a
+ particular implementation conforms to the
+ <a shape="rect" href="http://www.w3.org/TR/REC-xml">W3C XML 1.0 (Second Edition) Recommendation</a>.
+ The XML Conformance Test Suite is intended
+ to complement the W3C XML 1.0 (Second Edition) Recommendation. All interpretations
+ of this Recommendation are subject to confirmation by the
+ <a shape="rect" href="http://www.w3.org/XML/">
+ W3C XML Group </a>.
+ </p>
+<p>
+ Conformance tests can be used by developers, content creators, and
+ users alike to increase their level of confidence in product quality. In
+ circumstances where interoperability is necessary, these tests can also
+ be used to determine that differing implementations support the same set
+ of features. </p>
+<p>The XML Test Suite was transferred from OASIS to W3C and is being augmented to reflect the
+ current work of the W3C XML Core Working Group, including
+ <a shape="rect" href="http://www.w3.org/XML/Group/2002/02/xml10-test-suite-issues">resolved issues</a> related to the
+ Recommendation and published Errata. This report provides supporting documentation for all the tests included in
+ the test suite. Sources from which these tests have been collected
+ include: <em>James Clark XMLTEST cases, 18-Nov-1998; Fuji Xerox Japanese Text Tests; Sun Microsystems XML Tests; OASIS/NIST TESTS, 1-Nov-1998; IBM XML Tests; </em>. </p>
+<a shape="rect" name="matrix"/>
+<h2>2. Test Matrix </h2>
+<p> Two basic types of test are presented here. These are
+ respectively <em>
+<a shape="rect" href="#binary">Binary Tests</a>
+</em>
+ and <em>
+<a shape="rect" href="#output">Output Tests</a>
+</em>. </p>
+<a shape="rect" name="binary"/>
+<h3>2.1 Binary Tests </h3>
+<p>
+<em>Binary</em> conformance tests are documents which
+ are grouped into one of four categories. Given a document
+ in a given category, each kind of XML parser must treat it
+ consistently and either accept it (a <em>positive test</em>)
+ or reject it (a <em>negative test</em>). It is in that sense
+ that the tests are termed "binary". The XML 1.0 (Second Edition) Recommendation
+ talks in terms of two types of XML processor:
+ <em>validating</em> ones, and <em>nonvalidating</em> ones.
+ There are two differences between these types of processors: </p>
+<ol>
+<li> Validating processors check special productions that
+ nonvalidating parsers don't, called <em>validity
+ constraints</em>. (Both must check a basic set of productions,
+ requiring XML documents to be <em>well formed</em>.) </li>
+<li> Nonvalidating processors are permitted to not
+ include <em>external entities</em>, such as files with
+ text. Accordingly, they may not report errors which
+ would have been detected had those entities been read.</li>
+</ol>
+<p> There are two types of such entity, <em>parameter
+ entities</em> holding definitions which affect validation
+ and other processing; and <em>general entities</em> which
+ hold marked up text. It will be appreciated that there are
+ then five kinds of XML processor: validating processors,
+ and four kinds of nonvalidating processor based on the
+ combinations of external entity which they include.</p>
+<center>
+<table cellpadding="4" bgcolor="#ffffff" border="1">
+<caption>
+<b>Basic XML Parsing Test Matrix</b>
+<br clear="none"/>
+ Test Document Type v. Parser Type
+ </caption>
+<tr bgcolor="#ffffcc">
+<th colspan="1" rowspan="2" widthH="5%"> </th>
+<th rowspan="1" colspan="2" widthH="20%">Nonvalidating</th>
+<th colspan="1" rowspan="2" widthH="5%">Validating</th>
+</tr>
+<tr bgcolor="#ffffcc">
+<th colspan="1" rowspan="1">External Entities<br clear="none"/>Ignored (3 cases)</th>
+<th colspan="1" rowspan="1">External Entities<br clear="none"/>Read</th>
+</tr>
+<tr>
+<th colspan="1" rowspan="1" bgcolor="#ffffcc">Valid Documents</th>
+<td colspan="1" rowspan="1" align="center">
+<b>accept</b>
+</td>
+<td colspan="1" rowspan="1" align="center">
+<b>accept</b>
+</td>
+<td colspan="1" rowspan="1" align="center">
+<b>accept</b>
+</td>
+</tr>
+<tr>
+<th colspan="1" rowspan="1" bgcolor="#ffffcc">Invalid Documents</th>
+<td colspan="1" rowspan="1" align="center">
+<b>accept</b>
+</td>
+<td colspan="1" rowspan="1" align="center">
+<b>accept</b>
+</td>
+<td colspan="1" rowspan="1" align="center">reject</td>
+</tr>
+<tr>
+<th colspan="1" rowspan="1" bgcolor="#ffffcc">Non-WF Documents</th>
+<td colspan="1" rowspan="1" align="center">reject</td>
+<td colspan="1" rowspan="1" align="center">reject</td>
+<td colspan="1" rowspan="1" align="center">reject</td>
+</tr>
+<tr>
+<th colspan="1" rowspan="1" bgcolor="#ffffcc">WF Errors tied<br clear="none"/>
+ to External Entity</th>
+<td colspan="1" rowspan="1" align="center">
+<b>accept</b>
+<br clear="none"/>(varies)</td>
+<td colspan="1" rowspan="1" align="center">reject</td>
+<td colspan="1" rowspan="1" align="center">reject</td>
+</tr>
+<tr>
+<th colspan="1" rowspan="1" bgcolor="#ffffcc">Documents with<br clear="none"/> Optional Errors</th>
+<td colspan="1" rowspan="1" align="center">(not specified)</td>
+<td colspan="1" rowspan="1" align="center">(not specified)</td>
+<td colspan="1" rowspan="1" align="center">(not specified)</td>
+</tr>
+</table>
+</center>
+<p> At this time, the XML community primarily uses parsers
+ which are in the rightmost two columns of this table, calling
+ them <em>Well Formed XML Parsers</em> (or "WF Parsers") and
+ <em>Validating XML Parsers</em>. A second test matrix
+ could be defined to address the variations in the types of
+ of XML processor which do not read all external entities.
+ That additional matrix is not provided here at this time. </p>
+<a shape="rect" name="output"/>
+<h3>2.2 Output Tests</h3>
+<p> The XML 1.0 (Second Edition) Recommendation places a number of requirements
+ on XML processors, to ensure that they report information to
+ applications as needed. Such requirements are testable.
+ Validating processors are required to report slightly more
+ information than nonvalidating ones, so some tests will
+ require separate output files. Some of the information that
+ must be reported will not be reportable without reading all
+ the external entities in a particular test. Many of the tests for
+ valid documents are paired with an output file as the canonical
+ representation of the input file, to ensure that the XML
+ processor provides the correct information. </p>
+<a shape="rect" name="listings"/>
+<h2>3. Test Case Descriptions</h2>
+<p> This section of this report contains descriptions of test
+ cases, each of which fits into the categories noted above.
+ Each test case includes a document of one of the types in the
+ binary test matrix above (e.g. valid or invalid documents).
+ </p>
+<p> In some cases, an <a shape="rect" href="#output">output file </a>, as
+ described in Section 2.2, will also be associated with
+ a valid document, which is used for output testing. If such
+ a file exists, it will be noted at the end of the description
+ of the input document. </p>
+<p> The description for each test case is presented as a two
+ part table. The right part describes what the test does.
+ This description is intended to have enough detail to evaluate
+ diagnostic messages. The left part includes: <ul>
+<li> An entry describing the <em>Sections and/or Rules</em>
+ from the <a shape="rect" href="http://www.w3.org/TR/2000/REC-xml-20001006">
+ XML 1.0 (Second Edition) Recommendation</a> which this case excercises.</li>
+<li> The unique <em>Test ID</em> within a given <em>Collection</em>
+ for this test. </li>
+<li> The <em>Collection</em> from which this test originated.
+ Given the <em>Test ID</em> and the <em>Collection</em>, each
+ test can be uniquely identified.</li>
+<li> Some tests may have a field identifying the kinds of
+ external <em>Entities</em> a nonvalidating processor must
+ include (parameter, general, or both) to be able to
+ detect any errors in that test case. </li>
+</ul>
+</p>
+<a shape="rect" name="valid"/>
+<h3>3.1 Valid XML Documents</h3>
+<p> All conforming <em> XML 1.0 Processors </em> are
+ <b>required</b> to accept valid documents, reporting no
+ errors. In this section of this test report are found
+ descriptions of test cases which fit into this category. </p><table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P01-ibm01v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 1</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests with a xml document consisting of <em>prolog</em> followed by
+ <em>element</em> then <em>Misc</em>
+
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-084</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that although whitespace can be used to set apart markup for greater readability it is not necessary. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-093</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace is not intended for inclusion in the delivered version of the document. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-116</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that a line break within CDATA will be normalized. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A combination of carriage return line feed in an external entity must
+ be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-004</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-009</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11, 3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-108</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This tests normalization of end-of-line characters (CRLF)
+ within entities to LF, primarily as an output test. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11, 4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-068</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests definition of an internal entity holding a carriage return character
+ reference, which must not be normalized before reporting to the application. Line
+ break normalization only occurs when parsing external parsed entities.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11 3.2.1 3.2.2 4.2.2 [48] [51] [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of optional character and content particles within mixed element content. The test also shows the use of an external entity and that a carriage control line feed in an external entity must be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11 4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-011</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of a public identifier with and external entity.
+The test also show that a carriage control line feed combination in an external
+entity must be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P33-ibm33v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 33</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests LanguageID with Langcode - Subcode
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P34-ibm34v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 34</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Duplicate Test as ibm33v01.xml
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P35-ibm35v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 35</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ISO639Code
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P36-ibm36v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 36</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests IanaCode
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P37-ibm37v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 37</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests UserCode
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P38-ibm38v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 38</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SubCode
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12 [35]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-lang01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a lowercase ISO language code.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12 [35]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-lang02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a ISO language code with a subcode.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12 [35]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-lang05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an uppercase ISO language code.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12 [36]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-lang03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a IANA language code with a subcode.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12 [37]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-lang04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a user language code with a subcode.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12 [37]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-lang06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a user language code.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P02-ibm02v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers legal character ranges plus discrete legal characters for production 02.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ various Misc items where they can occur
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-049</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that characters outside of normal ascii range can be used as element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-050</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that characters outside of normal ascii range can be used as element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-051</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The document is encoded in UTF-16 and uses some name
+ characters well outside of the normal ASCII range.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-052</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The document is encoded in UTF-8 and the text inside the
+ root element uses two non-ASCII characters, encoded in UTF-8
+ and each of which expands to a Unicode surrogate pair.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P03-ibm03v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all 4 legal white space characters - #x20 #x9 #xD #xA
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P09-ibm09v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Empty EntityValue is legal
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P09-ibm09v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a normal EnitityValue
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P09-ibm09v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EnitityValue referencing a Parameter Entity
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P09-ibm09v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EnitityValue referencing a General Entity
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P09-ibm09v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EnitityValue with combination of GE, PE and text, the GE used is
+ declared in the student.dtd
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty AttValue with double quotes as the delimiters
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty AttValue with single quotes as the delimiters
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test AttValue with double quotes as the delimiters and single quote inside
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test AttValue with single quotes as the delimiters and double quote inside
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test AttValue with a GE reference and double quotes as the delimiters
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test AttValue with a GE reference and single quotes as the delimiters
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ testing AttValue with mixed references and text content in double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ testing AttValue with mixed references and text content in single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P11-ibm11v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty systemliteral using the double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P11-ibm11v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty systemliteral using the single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P11-ibm11v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests regular systemliteral using the single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P11-ibm11v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests regular systemliteral using the double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P12-ibm12v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty systemliteral using the double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P12-ibm12v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty systemliteral using the single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P12-ibm12v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests regular systemliteral using the double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P12-ibm12v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests regular systemliteral using the single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P13-ibm13v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 13</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Testing PubidChar with all legal PubidChar in a PubidLiteral
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-100</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Makes sure that PUBLIC identifiers may have some strange
+ characters. <em>NOTE: The XML editors have said that the XML
+ specification errata will specify that parameter entity expansion
+ does not occur in PUBLIC identifiers, so that the '%' character
+ will not flag a malformed parameter entity reference.</em>
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid public IDs.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-012</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Uses a legal XML 1.0 name consisting of a single colon
+ character (disallowed by the latest XML Namespaces draft).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-063</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The document is encoded in UTF-8 and the name of the
+ root element type uses non-ASCII characters. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [6]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p06pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ various satisfactions of the Names production in a NAMES
+ attribute
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [7]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p07pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ various valid Nmtoken 's in an attribute list declaration.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [8]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p08pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ various satisfaction of an NMTOKENS attribute value.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p09pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid EntityValue's. Except for entity references,
+ markup is not recognized.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 2.10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-092</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demostrates that extra whitespace is normalized into a single space character. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 3.1 [10][40][41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-109</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an attribute can have a null value. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 3.1 [13] [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-013</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that the Attribute in a Start-tag can consist of numerals along with special characters. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 3.1 [13] [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-014</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that all lower case letters are valid for the Attribute in a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 3.1 [13] [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-015</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that all upper case letters are valid for the Attribute in a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-009</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that PubidChar can be used for element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 4.1 [10] [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-023</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of a parameter entity reference within an attribute list declaration.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P14-ibm14v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Testing CharData with empty string
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P14-ibm14v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Testing CharData with white space character
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P14-ibm14v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Testing CharData with a general text string
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 2.5 2.6 2.7 [15] [16] [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p43pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid use of character data, comments, processing instructions and CDATA sections within the start and end tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 3.1 [14] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-048</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that character data is valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-008</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates character references can be used for element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-119</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comments may contain any legal XML characters;
+ only the string "--" is disallowed.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P15-ibm15v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty comment
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P15-ibm15v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment with regular text
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P15-ibm15v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment with one dash inside
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P15-ibm15v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment with more comprehensive content
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comments don't get parameter entity expansion</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 3.1 [15] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-021</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that comments are valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 3.1 [15] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-022</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that comments are valid element content and that all characters before the double-hypen right angle combination are considered part of thecomment. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P16-ibm16v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI definition with only PItarget name and nothing else
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P16-ibm16v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI definition with only PItarget name and a white space
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P16-ibm16v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI definition with PItarget name and text that contains
+ question mark and right angle
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P17-ibm17v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PITarget name
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-037</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid comment and that it may appear anywhere in the document including at the end. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-038</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid comment and that it may appear anywhere in the document including the beginning. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-036</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid processing instruction. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-039</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid processing instruction and that it may appear at the beginning of the document. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 2.10 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-055</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace within a processing instruction willnormalized into s single space character. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 2.10 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-098</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace within a processing instruction is converted into a single space character.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 3.1 [16] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-016</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that Processing Instructions are valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 3.1 [16] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-017</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that Processing Instructions are valid element content and there can be more than one. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-031</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Expands a general entity which contains a CDATA section with
+ what looks like a markup declaration (but is just text since
+ it's in a CDATA section).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P18-ibm18v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 18</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDSect with CDStart CData CDEnd
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P19-ibm19v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 19</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDStart
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P20-ibm20v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 20</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDATA with empty string
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P20-ibm20v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 20</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDATA with regular content
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P21-ibm21v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 21</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDEnd
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [20]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-114</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that all text within a valid CDATA section is considered text and not recognized as markup. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 3.1 [18] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-018</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that CDATA sections are valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 3.1 [18] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-019</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that CDATA sections are valid element content and that
+ampersands may occur in their literal form. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 3.1 [18] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-020</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstractes that CDATA sections are valid element content and that
+everyting between the CDStart and CDEnd is recognized as character data not markup. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-094</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute defaults with a DTD have special parsing rules, different
+ from other strings. That means that characters found there may look
+ like an undefined parameter entity reference "within a markup
+ declaration", but they aren't ... so they can't be violating
+ the <em>PEs in Internal Subset</em> WFC.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pe01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter entities references are NOT RECOGNIZED in default attribute
+ values.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with XMLDecl and doctypedecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with doctypedecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with Misc doctypedecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with doctypedecl Misc
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with XMLDecl Misc doctypedecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with XMLDecl doctypedecl Misc
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with XMLDecl Misc doctypedecl Misc
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P23-ibm23v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo only
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P23-ibm23v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo EncodingDecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P23-ibm23v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo SDDecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P23-ibm23v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VerstionInfo and a trailing whitespace char
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P23-ibm23v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo EncodingDecl SDDecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P23-ibm23v06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo EncodingDecl SDDecl and a trailing whitespace
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P24-ibm24v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with single quote
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P24-ibm24v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with double quote
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P25-ibm25v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EQ with =
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P25-ibm25v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EQ with = and spaces on both sides
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P25-ibm25v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EQ with = and space in front of it
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P25-ibm25v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EQ with = and space after it
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P26-ibm26v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 26</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionNum 1.0
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P27-ibm27v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 27</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Misc with comment
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P27-ibm27v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 27</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Misc with PI
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P27-ibm27v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 27</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Misc with white spaces
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P28-ibm28v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with internal DTD only
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P28-ibm28v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with external subset and combinations of different markup
+ declarations and PEReferences
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P29-ibm29v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests markupdecl with combinations of elementdecl, AttlistDecl,EntityDecl,
+ NotationDecl, PI and comment
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P29-ibm29v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC: PE in internal subset as a positive test
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P30-ibm30v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 30</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extSubset with extSubsetDecl only in the dtd file
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P30-ibm30v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 30</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extSubset with TextDecl and extSubsetDecl in the dtd file
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P31-ibm31v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 31</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extSubsetDecl with combinations of markupdecls, conditionalSects,
+ PEReferences and white spaces
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8, 4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-024</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Constructs an &lt;!ATTLIST...&gt; declaration from several PEs.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML decl and doctypedecl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22pass5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ just doctypedecl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22pass6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S between decls is not required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-033</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that both a EncodingDecl and SDDecl are valid within the prolog. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-028</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid prolog that uses double quotes as delimeters around the VersionNum. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-029</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid prolog that uses single quotes as delimters around the VersionNum. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [25]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-030</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid prolog that contains whitespace on both sides of the equal sign in the VersionInfo. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [29]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p29pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid types of markupdecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [31]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p31pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ external subset can be empty
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 3.4 4.2.2 [31] [62] [63] [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p31pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with EXternalID as Enternal Entity. The external entity contains a parameter entity reference and condtional sections.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.1 [28] [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p28pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with Parameter entity reference. The declaration of a parameter entity must precede any reference to it. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.1 [28] [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p28pass5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with ExternalID as an External Entity. A parameter entity reference is also used. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.2.2 [28] [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p28pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with ExternalID as an External Entity declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.2.2 [30] [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p30pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with ExternalID as an External Entity. The external entity has an element declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.2.2 4.3.1 [30] [75] [77]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p30pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with ExternalID as an Enternal Entity. The external entity begins with a Text Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-sa01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A non-standalone document is valid if declared as such.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-sa02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A non-standalone document is valid if declared as such.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-sa03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A non-standalone document is valid if declared as such.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-sa04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A non-standalone document is valid if declared as such. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P32-ibm32v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC: Standalone Document Declaration with absent attribute that
+ has default value and standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P32-ibm32v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC: Standalone Document Declaration with external entity reference
+ and standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P32-ibm32v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC: Standalone Document Declaration with attribute values that need
+ to be normalized and standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P32-ibm32v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC: Standalone Document Declaration with whitespace in mixed content
+ and standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-032</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid SDDecl within the prolog. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sa01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A document may be marked 'standalone' if any optional
+ whitespace is defined within the internal DTD subset.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sa02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A document may be marked 'standalone' if any
+ attributes that need normalization are
+ defined within the internal DTD subset.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sa03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A document may be marked 'standalone' if any
+ the defined entities need expanding are internal,
+ and no attributes need defaulting or normalization.
+ On output, requires notations to be correctly reported.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sa04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Like sa03 but relies on attribute
+ defaulting defined in the internal subset.
+ On output, requires notations to be correctly reported.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sa05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Like sa01 but this document is standalone
+ since it has no optional whitespace.
+ On output, requires notations to be correctly reported.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">element</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests clauses 1, 3, and 4 of the Element Valid
+ validity constraint.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P39-ibm39v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with EmptyElemTag and STag content Etag, also tests the
+ VC: Element Valid with elements that have children, Mixed and ANY
+ contents
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P40-ibm40v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests STag with possible combinations of its fields, also tests WFC:
+ Unique Att Spec.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P41-ibm41v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with Name Eq AttValue and VC: Attribute Value Type
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P42-ibm42v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ETag with possible combinations of its fields
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P43-ibm43v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests content with all possible constructs: element, CharData, Reference,
+ CDSect, Comment
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P44-ibm44v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag with possible combinations of its fields
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is permitted after the tag name in a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid attribute specification within a Start-tag that
+contains whitespace on both sides of the equal sign. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-010</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is valid after the Attribute in a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-011</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates mutliple Attibutes within the Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-104</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace within an Attribute of a Start-tag is normalized to a single space character. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40] [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-054</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace within Start-tags and End-tags are nomalized into single spaces. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-004</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid attribute specification within a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that the AttValue within a Start-tag can use a single quote as a delimter. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is permitted after the tag name in an End-tag.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-023</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that Entity References are valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-047</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace is normalized into single space character. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43] [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p28pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Empty-element tag must be used for element which are declared EMPTY. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-034</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the correct syntax for an Empty element tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-035</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is permissible after the name in an Empty element tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-044</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that the empty-element tag must be use for an elements that are declared EMPTY. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 4.1 [43] [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-024</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that Entity References are valid element content and also demonstrates a valid Entity Declaration. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 4.1 [43] [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that the content of an element can be empty. In this case the external entity is an empty file. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 4.6 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-007</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates numeric character references can be used for element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P45-ibm45v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests both P45 elementDecl and P46 contentspec with possible combinations
+ of their constructs
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P47-ibm47v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all possible children,cp,choice,seq patterns in P47,P48,P49,P50
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P49-ibm49v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC:Proper Group/PE Nesting with PEs of choices that are properly nested
+ with parenthesized groups in external subsets
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P50-ibm50v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC:Proper Group/PE Nesting with PEs of seq that are properly nested
+ with parenthesized groups in external subsets
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-057</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an element content model whose element can occur zero or more times. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48][49]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-112</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates shows the use of content particles within the element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [50]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-081</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the optional character following a name or list to govern the number of times an element or content particles in the list occur. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 4.2.2 [48] [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of optional character and content particles within an element content. The test also show the use of external entity. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P51-ibm51v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with possible combinations of its fields amd VC: No
+ Duplicate Types
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P51-ibm51v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC:Proper Group/PE Nesting with PEs of Mixed that are properly nested
+ with parenthesized groups in external subsets
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration with Mixed Content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd00</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests parsing of alternative forms of text-only mixed
+ content declaration.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid Mixed contentspec's.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p45pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid element declarations
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-025</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration and that the contentspec can be of mixed content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-026</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration and that EMPTY is a valid contentspec. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-027</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration and that ANY is a valid contenspec. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 3.2.1 [45] [46] [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p48pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, choices, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 3.2.1 [45] [46] [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p49pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, choices, and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Whitespace is also valid between choices. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 3.2.1 [45] [46] [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p50pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Whitespace is also valid between sequences. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 3.2.1 [45] [46] [47] </td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p47pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, choices, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 3.2.1 3.2.2 [45] [46] [47] [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, and mixed content within an element type declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 3.3 [46] [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-059</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration that uses the contentspec of EMPTY. The element cannot have any contents and must always appear as an empty element in the document. The test also shows an Attribute-list declaration with multiple AttDef's. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-043</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An element's attributes may be declared before its content
+ model; and attribute values may contain newlines. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-097</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Basically an output test, this tests whether an externally
+ defined attribute declaration (with a default) takes proper
+ precedence over a subsequent internal declaration.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P52-ibm52v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all AttlistDecl and AttDef Patterns in P52 and P53
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-076</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Verifies that an XML parser will parse a NOTATION
+ attribute; the output phase of this test ensures that
+ both notations are reported to the application. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-090</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Verifies that an XML parser will parse a NOTATION
+ attribute; the output phase of this test ensures that
+ the notation is reported to the application. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-091</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Verifies that an XML parser will parse an ENTITY
+ attribute; the output phase of this test ensures that
+ the notation is reported to the application, and for
+ validating parsers it further tests that the entity
+ is so reported.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P54-ibm54v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all AttTypes : StringType, TokenizedTypes, EnumeratedTypes in
+ P55,P56,P57,P58,P59. Also tests all DefaultDecls in P60.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P54-ibm54v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all AttTypes : StringType, TokenizedType, EnumeratedTypes in
+ P55,P56,P57.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P54-ibm54v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttTypes with StringType in P55.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P55-ibm55v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 55</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests StringType for P55. The "CDATA" occurs in the StringType for the
+ attribute "att" for the element "a".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56. The "ID", "IDREF", "IDREFS", "ENTITY",
+ "ENTITIES", "NMTOKEN", and "NMTOKENS" occur in the TokenizedType for the
+ attribute "attr".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: ID Attribute Default. The value "AC1999" is
+ assigned to the ID attribute "attr" with "#REQUIRED" in the DeaultDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: ID Attribute Default. The value "AC1999" is
+ assigned to the ID attribute "attr" with "#IMPLIED" in the DeaultDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: ID. The ID attribute "UniqueName" appears
+ only once in the document.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: One ID per element type. The element "a" or
+ "b" has only one ID attribute.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: IDREF. The IDREF value "AC456" matches the
+ value assigned to an ID attribute "UniqueName".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: IDREF. The IDREFS value "AC456 Q123" matches
+ the values assigned to the ID attribute "UniqueName" and "Uname".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: Entity Name. The value "image" of the ENTITY
+ attribute "sun" matches the name of an unparsed entity declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: Name Token. The value of the NMTOKEN attribute
+ "thistoken" matches the Nmtoken production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: Name Token. The value of the NMTOKENS
+ attribute "thistoken" matches the Nmtoken production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P57-ibm57v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 57</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EnumeratedType in the AttType. The attribute "att" has a type (a|b)
+ with the element "a".
+ the
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P58-ibm58v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType for P58. It shows different patterns fro the NOTATION
+ attribute "attr".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P58-ibm58v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType for P58: Notation Attributes. The value "base64" of the
+ NOTATION attribute "attr" matches one of the notation names declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P59-ibm59v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration in the EnumeratedType for P59. It shows different
+ patterns for the Enumeration attribute "attr".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P59-ibm59v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration for P59 VC: Enumeration. The value "one" of the
+ Enumeration attribute "attr" matches one of the element names declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [54]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p54pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ the three kinds of attribute types
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [55]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p55pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ StringType = "CDATA"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p56pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ the 7 tokenized attribute types
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [57]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p57pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ enumerated types are NMTOKEN or NOTATION lists
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ NOTATION enumeration has on or more items
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-sgml01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML permits token reuse, while SGML does not.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p59pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ NMTOKEN enumerations haveon or more items
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 4.1 [54] [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-041</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 4.1 [54] [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-042</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. The test also shows that the leading zeros in the character reference are ignored. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 4.1 [54] [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-056</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. The test also shows that the leading zeros in the character reference are ignored. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P60-ibm60v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl for P60. It shows different options "#REQUIRED", "#FIXED",
+ "#IMPLIED", and default for the attribute "chapter".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P60-ibm60v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl for P60 VC: Required Attribute. In the element "one" and
+ "two" the value of the #REQUIRED attribute "chapter" is given.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P60-ibm60v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl for P60 VC: Fixed Attribute Default. The value of the
+ #FIXED attribute "chapter" is exactly the same as the default value.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P60-ibm60v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl for P60 VC: Attribute Default Legal. The default value
+ specified for the attribute "attr" meets the lexical constraints of the
+ declared attribute type.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">required00</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the #REQUIRED attribute declaration syntax, and
+ the associated validity constraint. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p60pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ the four types of default values
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-058</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace be normalized into a single space character in an attribute of type NMTOKENS. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-095</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires extra whitespace
+ to be normalized into a single space character in an
+ attribute of type NMTOKENS.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-096</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace is normalized into a single space character in an attribute of type NMTOKENS. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-102</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that a CDATA attribute can pass a double quote as its value. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-103</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an attribute can pass a less than sign as its value. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-105</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires a CDATA attribute
+ with a tab character to be passed through as one space.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-106</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires a CDATA attribute
+ with a newline character to be passed through as one space.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-107</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires a CDATA attribute
+ with a return character to be passed through as one space.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-110</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires that a CDATA
+ attribute with a CRLF be normalized to one space.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-111</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character references expanding to spaces doesn't affect
+ treatment of attributes. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-115</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an entity reference is processed by recursively processing the replacement text of the entity. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-013</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is handled by adding a single whitespace to the normalized value in the attribute list. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-045</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests whether more than one definition can be provided for the same attribute of a given element type with the first declaration being binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-046</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more than one AttlistDecl is provided for a given element type, the contents of all those provided are merged. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more than one definition is provided for the same attribute of a given element type only the first declaration is binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-007</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of an Attribute list declaration within an external entity. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-010</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more that one definition is provided for the same attribute of a given element type only the first declaration is binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-026</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more that one definition is provided for the same attribute of a given element type only the first declaration is binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p52pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid AttlistDecls: No AttDef's are required,
+ and the terminating
+ S is optional, multiple ATTLISTS per element are OK, and multiple
+ declarations of the same attribute are OK.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52][53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-113</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that it is not an error to have attributes declared for an element not itself declared.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p53pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a valid AttDef
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [54]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-040</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [54]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-077</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use an EnumeratedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [54]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-078</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that REQUIRED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-071</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use ID as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-072</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use IDREF as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-073</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use IDREFS as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-074</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use ENTITY as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-075</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use ENTITIES as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.2 [52] [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-079</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that FIXED is a valid DefaultDecl and that a value can be given to the attribute in the Start-tag as well as the AttListDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.2 [52] [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-080</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that FIXED is a valid DefaultDecl and that an value can be given to the attribute. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P61-ibm61v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 61</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests conditionalSect for P61. It takes the option "invludeSect" in the file
+ ibm61v01.dtd.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P61-ibm61v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 61</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests conditionalSect for P61. It takes the option "ignoreSect" in the file
+ ibm61v02.dtd.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P62-ibm62v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The white space is not included before the key
+ word "INCLUDE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P62-ibm62v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The white space is not included after the key
+ word "INCLUDE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P62-ibm62v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The white space is included after the key
+ word "INCLUDE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P62-ibm62v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The white space is included before the key
+ word "INCLUDE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P62-ibm62v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The extSubsetDecl is not included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P63-ibm63v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The white space is not included before the key
+ word "IGNORE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P63-ibm63v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The white space is not included after the key
+ word "IGNORE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P63-ibm63v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The white space is included after the key
+ word "IGNORE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P63-ibm63v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The ignireSectContents is included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P63-ibm63v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The white space is included before and after the
+ key word "IGNORE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P64-ibm64v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents for P64. One "ignore" field is included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P64-ibm64v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents for P64. Two "ignore" and one "ignoreSectContents"
+ fields are included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P64-ibm64v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents for P64. Four "ignore" and three
+ "ignoreSectContents" fields are included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P65-ibm65v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 65</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ignore for P65. An empty string occurs in the Ignore filed.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P65-ibm65v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 65</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ignore for P65. An string not including the brackets occurs in each of
+ the Ignore filed.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [61]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p61pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid conditional sections are INCLUDE and IGNORE
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-013</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-014</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. The keyword is a parameter-entity reference. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-016</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. The keyword is a parameter-entity reference.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-028</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-029</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being used. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-030</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being used. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p62pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid INCLUDE sections -- options S before and
+ after keyword, sections can nest
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [63]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-015</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being part of the DTD. The keyword is a parameter-entity reference. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [63]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p63pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid IGNORE sections
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [64]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p64pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ IGNOREd sections ignore everything except section delimiters
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests declarations of "children" content models, and
+ the validity constraints associated with them.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-085</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter and General entities use different namespaces,
+ so there can be an entity of each type with a given name.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P66-ibm66v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all legal CharRef's.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P67-ibm67v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 67</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Reference could be EntityRef or CharRef.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P68-ibm68v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests P68 VC:Entity Declared with Entities in External Subset
+ , standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P68-ibm68v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests P68 VC:Entity Declared with Entities in External Parameter Entities
+ , standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P69-ibm69v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests P68 VC:Entity Declared with Parameter Entities in External Subset
+ , standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P69-ibm69v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests P68 VC:Entity Declared with Parameter Entities in External Parameter
+ Entities, standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-060</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of decimal Character References within element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-061</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of decimal Character References within element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-062</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of hexadecimal Character References within element. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-064</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests in-line handling of two legal character references, which
+ each expand to a Unicode surrogate pair.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-066</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Expands a CDATA attribute with a character reference.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-067</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of decimal character references within element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-089</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests entity expansion of three legal character references,
+ which each expand to a Unicode surrogate pair.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p68pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid entity references. Also ensures that a charref to
+ '&amp;' isn't interpreted as an entity reference open delimiter
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the expansion of an external parameter entity that declares an attribute. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-004</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Expands an external parameter entity in two different ways,
+ with one of them declaring an attribute.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the expansion of an external parameter entity that declares an attribute. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-027</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a parameter entity reference whose value is NULL. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p69pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid PEReferences.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 4.4.3 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-014</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates use of characters outside of normal ASCII range.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-086</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests whether entities may be declared more than once,
+ with the first declaration being the binding one. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-025</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more that one definition is provided for the same entity only the first declaration is binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P70-ibm70v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 70</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all legal GEDecls and PEDecls constructs derived from P70-76
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.1 4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-012</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates both internal and external entities and that processing of entity references may be required to produce the correct replacement text.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of an ExternalID within a document type definition. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of an ExternalID within a document type definition. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-008</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an external identifier may include a public identifier. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-009</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an external identifier may include a public identifier. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-018</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an EnternalID whose contents contain an parameter entity declaration and a attribute list definition. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p76pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid NDataDecls
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 4.3.3. 4.4.3 [75] [80]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-008</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p> Test demonstrates the use of external
+entity and how replacement text is retrieved and processed. Also tests the use of an
+EncodingDecl of UTF-16.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 4.4.3 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-007</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of external entity and how replacement
+text is retrieved and processed. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [70]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p70pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An EntityDecl is either a GEDecl or a PEDecl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p71pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid GEDecls
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-082</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests that an external PE may be defined (but not referenced).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-083</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests that an external PE may be defined (but not referenced).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-017</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a parameter entity declaration that contains an attribute list declaration. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-021</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a parameter entity declaration that contains a partial attribute list declaration. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p72pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid PEDecls
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p73pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ EntityDef is either Entity value or an external id,
+ with an optional NDataDecl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 4.2.1 [72] [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-011</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a parameter entity declaration whose parameter entity definition is an ExternalID. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1 [77]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-012</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an enternal parsed entity that begins with a text declaration. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1 4.3.2 [77] [78]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ext01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests use of external parsed entities with and without content.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P78-ibm78v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 78</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExtParsedEnt, also TextDecl in P77 and EncodingDecl in P80
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P79-ibm79v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 79</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extPE
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2 [78]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ext02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests use of external parsed entities with different
+ encodings than the base document.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pr-xml-little</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for little-endian UTF-16 text
+ which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pr-xml-utf-16</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support UTF-16 text which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pr-xml-utf-8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for UTF-8 text which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">weekly-little</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for little-endian UTF-16 encoding, and
+ XML names which contain Japanese characters.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">weekly-utf-16</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for UTF-16 encoding, and
+ XML names which contain Japanese characters.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">weekly-utf-8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for UTF-8 encoding and
+ XML names which contain Japanese characters.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [80]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-031</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid EncodingDecl within the prolog. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-099</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the name of the encoding can be composed of lowercase characters. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-053</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests inclusion of a well-formed internal entity, which
+ holds an element required by the content model.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.4.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-070</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Verifies that internal parameter entities are correctly
+ expanded within the internal subset.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.4.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-019</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that a parameter entity will be expanded with spaces on either side. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.4.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-020</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter entities expand with spaces on either side.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-065</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ability to define an internal entity which can't
+ legally be expanded (contains an unquoted <b>&lt;</b>).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-087</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests whether character references in internal entities are
+ expanded early enough, by relying on correct handling to
+ make the entity be well formed.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-088</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests whether entity references in internal entities are
+ expanded late enough, by relying on correct handling to
+ make the expanded text be valid. (If it's expanded too
+ early, the entity will parse as an element that's not
+ valid in that context.)</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-101</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This tests whether entity expansion is (incorrectly) done
+ while processing entity declarations; if it is, the entity
+ value literal will terminate prematurely.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-117</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that entity expansion is done while processing entity declarations. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-118</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that entity expansion is done while processing entity declarations. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-pe00</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests construction of internal entity replacement text, using
+ an example in the XML specification. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-pe03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests construction of internal entity replacement text, using
+ an example in the XML specification. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-pe02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests construction of internal entity replacement text, using
+ a complex example in the XML specification. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-069</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Verifies that an XML parser will parse a NOTATION
+ declaration; the output phase of this test ensures that
+ it's reported to the application. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P82-ibm82v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl in P82 and PublicID in P83
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7 [82]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">notation01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ NOTATION declarations don't need SYSTEM IDs; and
+ externally declared notations may be used to declare
+ unparsed entities in the internal DTD subset.
+ The notation must be reported to the application.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P85-ibm85v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers 149 legal character ranges plus 51 single legal
+ characters for BaseChar in P85 using a PI target Name
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P86-ibm86v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers 2 legal character ranges plus 1 single legal
+ characters for IdeoGraphic in P86 using a PI target Name
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P87-ibm87v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers 65 legal character ranges plus 30 single legal
+ characters for CombiningChar in P87 using a PI target Name
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P88-ibm88v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers 15 legal character ranges for Digit in P88 using a PI
+ target Name
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P89-ibm89v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers 3 legal character ranges plus 8 single legal
+ characters for Extender in P89 using a PI target Name
+</p>
+</td>
+</tr>
+</table>
+<a shape="rect" name="invalid"/>
+<h3>3.2 Invalid XML Documents</h3>
+<p> All conforming XML 1.0 <em> Validating Processors </em>
+ are <b>required</b> to report recoverable errors in the case
+ of documents which are <em>Invalid</em>. Such errors are
+ violations of some <em>validity constraint (VC)</em>. </p>
+<p> If a validating processor does not report an error when
+ given one of these test cases, or if the error reported is
+ a fatal error, it is not conformant. If the error reported
+ does not correspond to the problem listed in this test
+ description, that could also be a conformance problem; it
+ might instead be a faulty diagnostic. </p>
+<p> All conforming XML 1.0 <em> Nonvalidating Processors </em>
+ should accept these documents, reporting no errors. </p>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no prolog
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Misc items after the document
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p10pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid attribute values
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ all valid S characters
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p04pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ names with all valid ASCII characters, and one from each
+ other class in NameChar
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p05pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ various valid Name constructions
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [6]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p06fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Requires at least one name.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [8]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p08fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ at least one Nmtoken is required.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [8]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p08fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ an invalid Nmtoken character.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p14pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid CharData
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 2.7 [18] 3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">empty</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA section containing only white space does not match the nonterminal S, and cannot
+ appear in these positions. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p15pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid comments
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p16pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p16pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16] [17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p16pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p18pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid CDSect's. Note that a CDStart in a CDSect is not
+ recognized as such
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">invalid--005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Proper Declaration/PE Nesting" validity constraint by
+ fragmenting an element declaration between two parameter entities.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">invalid--006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Proper Declaration/PE Nesting" validity constraint by
+ fragmenting an element declaration between two parameter entities.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">root</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Root Element Type VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P28-ibm28i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The test violates VC:Root Element Type in P28. The Name in the document type
+ declaration does not match the element type of the root element.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ prolog can be empty
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declaration only
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML decl and Misc
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows a valid XML declaration along with version info. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows a valid XML declaration along with encoding declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows a valid XML declaration along with Standalone Document Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows a valid XML declaration, encoding declarationand Standalone Document Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p24pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows a prolog that has the VersionInfo delimited by double quotes. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p24pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows a prolog that has the VersionInfo delimited by single quotes. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p24pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows whitespace is allowed in prolog before version info. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p24pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows whitespace is allowed in prolog on both sides of equal sign. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [25]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p25pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows whitespace is NOT necessary before or after equal sign of versioninfo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [25]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p25pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows whitespace can be used on both sides of equal sign of versioninfo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [26]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p26pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The valid version number. We cannot test others because
+ a 1.0 processor is allowed to fail them.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p27pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comments are valid as the Misc part of the prolog. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p27pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Processing Instructions are valid as the Misc part of the prolog. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p27pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is valid as the Misc part of the prolog. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p27pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A combination of comments, whitespaces and processing instructions are valid as the Misc part of the prolog. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ optional whitespace causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ attributes needing normalization cause a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ attributes needing defaulting cause a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ a token attribute that needs normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ a NOTATION attribute that needs normalization
+ causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an NMTOKEN attribute needing normalization
+ causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an NMTOKENS attribute needing normalization
+ causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa09</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ID attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an IDREF attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an IDREFS attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ENTITY attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa13</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ENTITIES attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P32-ibm32i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of attributes with default values, and the
+ associated element appears in the document with specified values for those
+ attributes.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P32-ibm32i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of attributes with values that will change
+ if normalized.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P32-ibm32i04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of element with element content, and white
+ space occurs directly within the mixed content.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Double quotes can be used as delimeters for the value of a Standalone Document Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Single quotes can be used as delimeters for the value of a Standalone Document Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-dtd03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Element Valid" VC (clause 2)
+ by omitting a required element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">el01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 4)
+ by including an undeclared child element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">el02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 1)
+ by including elements in an EMPTY content model. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">el03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 3) by including a child element
+ not permitted by a mixed content model. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">el06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 1),
+ using one of the predefined internal entities
+ inside an EMPTY content model.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa14</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA sections containing only whitespace do not match the nonterminal S, and cannot
+ appear in these positions.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing no children where
+ one is required.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ two children where one is required.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where two are required.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where two are required.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (one construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a second construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a third construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a fourth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional09</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a fifth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a basic construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a second construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a third construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional13</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a fourth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional14</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a fifth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional20</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a sixth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional21</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a seventh construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional22</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (an eigth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional23</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a ninth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional24</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a tenth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional25</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ text content where one or more elements are
+ required.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P39-ibm39i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Element Valid in P39. Element a is declared empty
+ in DTD, but has content in the document.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P39-ibm39i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Element Valid in P39. root is declared only having
+ element children in DTD, but have text content in the document.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P39-ibm39i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Element Valid in P39. Illegal elements are inserted
+ in b's content of Mixed type.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P39-ibm39i04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Element Valid in P39. Element c has undeclared
+ element as its content of ANY type
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P41-ibm41i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Attribute Value Type in P41. attr1 for Element b is
+ not declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P41-ibm41i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Attribute Value Type in P41. attr3 for Element b is
+ given a value that does not match the declaration in the DTD.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Elements content can be empty. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is valid within a Start-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace and Multiple Attributes are valid within a Start-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40] [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attributes are valid within a Start-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p41pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attributes are valid within a Start-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p41pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is valid within a Start-tags Attribute. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p42pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows proper syntax for an End-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p42pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is valid after name in End-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid display of an Empty Element Tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Empty Element Tags can contain an Attribute. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is valid in an Empty Element Tag following the end of the attribute value. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is valid after the name in an Empty Element Tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44pass5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace and Multiple Attributes are valid in an Empty Element Tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 2.10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-required01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Attribute Value Type (declared)
+ VC for the xml:space attribute</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-required02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Attribute Value Type (declared)
+ VC for the xml:lang attribute</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">el04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Unique Element Type Declaration VC. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P45-ibm45i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Unique Element Type Declaration. Element not_unique
+ has been declared 3 time in the DTD.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">invalid--002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Proper Group/PE Nesting" validity constraint by
+ fragmenting a content model between two parameter entities.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P49-ibm49i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates VC:Proper Group/PE Nesting in P49. Open and close parenthesis for a
+ choice content model are in different PE replace Texts.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P50-ibm50i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates VC:Proper Group/PE Nesting in P50. Open and close parenthesis for a
+ seq content model are in different PE replace Texts.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-dtd01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the No Duplicate Types VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">el05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the No Duplicate Types VC. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P51-ibm51i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates VC:Proper Group/PE Nesting in P51. Open and close parenthesis for a
+ Mixed content model are in different PE replace Texts.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P51-ibm51i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates VC:No Duplicate Types in P51. Element a appears twice in the Mixed
+ content model of Element e.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the ID (is a Name) VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the ID (appears once) VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the One ID per Element Type VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the ID Attribute Default VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the ID Attribute Default VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the IDREF (is a Name) VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the IDREFS (is a Names) VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the IDREF (matches an ID) VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id09</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the IDREF (IDREFS matches an ID) VC</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Entity Name" VC for the ENTITY attribute type.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Entity Name" VC for the ENTITIES attribute type.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Notation Attributes" VC for the
+ NOTATION attribute type, first clause: value must be one
+ of the ones that's declared.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Notation Attributes" VC for the
+ NOTATION attribute type, second clause: the names in the
+ declaration must all be declared.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Name Token" VC for the NMTOKEN attribute type.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Name Token" VC for the NMTOKENS attribute type.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Enumeration" VC by providing
+ a value which wasn't one of the choices.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ID. The value of the ID
+ attribute "UniqueName" is "@999" which does not meet the Name production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ID. The two ID attributes
+ "attr" and "UniqueName" have the same value "Ac999" for the element "b" and
+ the element "tokenizer".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ID Attribute Default. The
+ "#FIXED" occurs in the DefaultDecl for the ID attribute "UniqueName".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ID Attribute Default. The
+ constant string "BOGUS" occurs in the DefaultDecl for the ID attribute
+ "UniqueName".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: One ID per Element Type. The
+ element "a" has two ID attributes "first" and "second".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: IDREF. The value of the
+ IDREF attribute "reference" is "@456" which does not meet the Name production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: IDREF. The value of the IDREF
+ attribute "reference" is "BC456" which does not match the value assigned to any
+ ID attributes.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: IDREFS. The value of the
+ IDREFS attribute "reference" is "AC456 #567" which does not meet the Names
+ production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: IDREFS. The value of the
+ IDREFS attribute "reference" is "EF456 DE355" which does not match the values
+ assigned to two ID attributes.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "ima ge" which does not meet the Name production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "notimage" which does not match the name of any
+ unparsed entity declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "parsedentity" which matches the name of a parsed
+ entity instead of an unparsed entity declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITIES attribute "sun" is "#image1 @image" which does not meet the Names
+ production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ENTITIES. The value of the
+ ENTITIES attribute "sun" is "image3 image4" which does not match the names of
+ two unparsed entities declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ENTITIES. The value of the
+ ENTITIES attribute "sun" is "parsedentity1 parsedentity2" which matches the names
+ of two parsed entities instead of two unparsed entities declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Name Token. The value of the
+ NMTOKEN attribute "thistoken" is "x : image" which does not meet the Nmtoken
+ production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Name Token. The value of the
+ NMTOKENS attribute "thistoken" is "@lang y: #country" which does not meet the
+ Nmtokens production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P58-ibm58i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid NotationType which is against P58 VC: Notation Attributes. The
+ attribute "content-encoding" with value "raw" is not a value from the list
+ "(base64|uuencode)".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P58-ibm58i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid NotationType which is against P58 VC: Notation Attributes. The
+ attribute "content-encoding" with value "raw" is a value from the list
+ "(base64|uuencode|raw|ascii)", but "raw" is not a declared notation.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P59-ibm59i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid Enumeration which is against P59 VC: Enumeration. The value of the
+ attribute is "ONE" which matches neither "one" nor "two" as declared in the
+ Enumeration in the AttDef in the AttlistDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58] [59] Errata [E2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-e2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Validity Constraint: No duplicate tokens
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-required00</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Required Attribute VC.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Fixed Attribute Default" VC by
+ providing the wrong value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr09</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal IDREF value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal IDREFS value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal ENTITY value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal ENTITIES value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr13</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NMTOKEN value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr14</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NMTOKENS value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NOTATIONS value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr16</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal enumeration value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P60-ibm60i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid DefaultDecl which is against P60 VC: Required Attribute. The
+ attribute "chapter" for the element "two" is declared as #REQUIRED in the
+ DefaultDecl in the AttlistDecl, but the value of this attribute is not given.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P60-ibm60i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid DefaultDecl which is against P60 VC: Fixed Attribute Default.. The
+ attribute "chapter" for the element "one" is declared as #FIXED with the given
+ value "Introduction" in the DefaultDecl in the AttlistDecl, but the value of a
+ instance of this attribute is assigned to "JavaBeans".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P60-ibm60i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid DefaultDecl which is against P60 VC: Attribute Default Legal. The
+ declared default value "c" is not legal for the type (a|b) in the AttDef in
+ the AttlistDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P60-ibm60i04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid DefaultDecl which is against P60 VC: Attribute Default Legal. The
+ declared default value "@#$" is not legal for the type NMTOKEN the AttDef in
+ the AttlistDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">invalid-not-sa-022</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test the "Proper Conditional Section/ PE Nesting" validity constraint. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 3.1 [39] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character data is valid element content. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 3.1 [39] [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Empty element tag may be used for any element which has no content. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid character references
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-dtd02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Notation Declared" VC by using an undeclared
+ notation name.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P76-ibm76i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid NDataDecl which is against P76 VC: Notation declared. The Name
+ "JPGformat" in the NDataDecl in the EntityDecl for "ge2" does not match the
+ Name of any declared notation.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid external identifiers
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p74pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ PEDef is either an entity value or an external id
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">utf16b</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests reading an invalid "big endian" UTF-16 document</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">utf16l</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests reading an invalid "little endian" UTF-16 document</p>
+</td>
+</tr>
+</table>
+<a shape="rect" name="not-wf"/>
+<h3>3.3 Documents that are Not Well Formed</h3>
+<p> All conforming XML 1.0 Processors are <b>required</b> to
+ report fatal errors in the case of documents which are not
+ <em>Well Formed</em>. Such errors are basically of two types:
+ <em>(a)</em> the document violates the XML grammar; or else
+ <em>(b)</em> it violates a <em>well formedness constraint
+ (WFC)</em>. There is a single <em>exception to that
+ requirement</em>: nonvalidating processors which do not read
+ certain types of external entities are not required to detect
+ (and hence report) these errors. </p>
+<p> If a processor does not report a fatal error when given
+ one of these test cases, it is not conformant. If the error
+ reported does not correspond to the problem listed in this
+ test description, that could also be a conformance problem;
+ it might instead be a faulty diagnostic. </p>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P01-ibm01n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 1</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a document with no element. A well-formed document should have at lease
+ one elements.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P01-ibm01n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 1</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a document with wrong ordering of its prolog and element. The
+ element occurs before the xml declaration and the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P01-ibm01n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 1</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a document with wrong combination of misc and element. One PI occurs
+ between two elements.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-050</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Empty document, with no root element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S cannot occur before the prolog
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ comments cannot occur before the prolog
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only one document element
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ document element must be complete.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x00
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x01
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x02
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x03
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x04
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x05
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x06
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x07
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x08
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x0B
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x0C
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x0E
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x0F
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x10
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x11
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x12
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x13
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x14
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n19.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x15
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n20.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x16
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n21.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x17
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n22.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x18
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n23.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x19
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n24.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1A </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n25.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1B
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n26.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1C
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n27.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1D
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n28.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1E
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n29.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1F
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n30.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #xD800
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n31.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #xDFFF
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n32.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #xFFFE
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n33.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #xFFFF
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-030</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A form feed is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-031</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A form feed is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-032</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A form feed is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-033</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An ESC (octal 033) is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-034</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A form feed is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-142</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character #x0000 is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-143</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character #x001F is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-144</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character #xFFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-145</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character #xD800 is not legal anywhere in an XML document. (If it
+ appeared in a UTF-16 surrogate pair, it'd represent half of a UCS-4
+ character and so wouldn't really be in the document.) </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-146</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character references must also refer to legal XML characters;
+ #x00110000 is one more than the largest legal character.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-166</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-167</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFE is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-168</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An unpaired surrogate (D800) is not legal anywhere
+ in an XML document.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-169</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An unpaired surrogate (DC00) is not legal anywhere
+ in an XML document.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-170</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Four byte UTF-8 encodings can encode UCS-4 characters
+ which are beyond the range of legal XML characters
+ (and can't be expressed in Unicode surrogate pairs).
+ This document holds such a character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-171</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-172</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-173</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-174</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-175</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-177</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail13</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail14</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail16</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail17</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail18</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail19</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail20</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail21</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail22</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail23</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail24</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail25</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail26</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail27</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail28</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail29</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail30</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail31</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P03-ibm03n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an end tag which contains an illegal space character #x3000 which
+ follows the element name "book".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x21
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x28
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x29
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2B
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2C
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2F
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3B
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3C
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3D
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3F
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5B
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5C
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5D
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5E
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x60
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7B
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7C
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7D
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which has an illegal first character. An illegal
+ first character "." is followed by "A_name-starts_with.".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which has an illegal first character. An illegal
+ first character "-" is followed by "A_name-starts_with-".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which has an illegal first character. An illegal
+ first character "5" is followed by "A_name-starts_with_digit".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P09-ibm09n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains "%".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P09-ibm09n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains the ampersand character.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P09-ibm09n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains the double quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P09-ibm09n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an internal general entity with an invalid value. The closing bracket
+ (double quote) is missing with the value of the entity "FullName".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character "less than".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character ampersand.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the double quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The closing bracket (double quote) is
+ missing with The value of the attribute "first".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character "less than".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character ampersand.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the double quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The closing bracket (single quote) is
+ missing with the value of the attribute "first".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P11-ibm11n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SystemLiteral. The systemLiteral for the element "student" has
+ a double quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P11-ibm11n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SystemLiteral. The systemLiteral for the element "student" has
+ a single quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P11-ibm11n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SystemLiteral. The closing bracket (double quote) is missing with
+ the systemLiteral for the element "student".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P11-ibm11n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SystemLiteral. The closing bracket (single quote) is missing with
+ the systemLiteral for the element "student".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P12-ibm12n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PubidLiteral. The closing bracket (double quote) is missing with
+ the value of the PubidLiteral for the entity "info".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P12-ibm12n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PubidLiteral. The value of the PubidLiteral for the entity
+ "info" has a single quote character in the middle..
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P12-ibm12n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PubidLiteral. The closing bracket (single quote) is missing with
+ the value of the PubidLiteral for the entity "info".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P13-ibm13n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 13</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character "{".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P13-ibm13n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 13</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character "~".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P13-ibm13n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 13</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character double quote in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-012</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML-ism: attribute values must be quoted in all cases. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-013</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The quotes on both ends of an attribute value must match. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-014</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values may not contain literal '&lt;' characters. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-020</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values may not contain literal '&amp;'
+ characters except as part of an entity reference. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-021</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values may not contain literal '&amp;'
+ characters except as part of an entity reference. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-088</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values are terminated by literal quote characters,
+ and any entity expansion is done afterwards. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-090</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attributes may not contain a literal "&lt;" character;
+ this one has one because of reference expansion. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p10fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ attribute values exclude '&lt;'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p10fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ attribute values exclude '&amp;'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p10fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [11]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p11fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [11]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p11fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ cannot contain delimiting quotes
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pubid01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal entity ref in public ID</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pubid02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal characters in public ID</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pubid03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal characters in public ID</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pubid04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal characters in public ID</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pubid05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML-ism: public ID without system ID</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '"' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '\' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ entity references excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&gt;' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&lt;' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ built-in entity refs excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [13]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-085</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Public IDs may not contain "[". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [13]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-086</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Public IDs may not contain "[". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [13]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-087</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Public IDs may not contain "[". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [13]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The public ID has a tab character, which is disallowed
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail13</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail14</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail16</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail17</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail18</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail19</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail20</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail21</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail22</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail23</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail24</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail25</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail26</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail27</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail28</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail29</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Names may not start with "."; it's not a Letter. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-140</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character '&amp;#x309a;' is a CombiningChar, not a
+ Letter, and so may not begin a name.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p04fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Name contains invalid character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p04fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Name contains invalid character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p04fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Name contains invalid character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-008</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entity references must include names, which don't begin
+ with '.' (it's not a Letter or other name start character). </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-023</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Digits are not valid name start characters. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-024</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Digits are not valid name start characters. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-141</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character #x0E5C is not legal in XML names. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p05fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a Name cannot start with a digit
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p05fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a Name cannot start with a '.'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p05fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a Name cannot start with a "-"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p05fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a Name cannot start with a CombiningChar
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p05fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a Name cannot start with an Extender
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-113</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter entity values must use valid reference syntax;
+ this reference is malformed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-114</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ General entity values must use valid reference syntax;
+ this reference is malformed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-159</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Uses '&amp;' unquoted in an entity declaration,
+ which is illegal syntax for an entity reference.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p09fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ EntityValue excludes '%'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p09fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ EntityValue excludes '&amp;'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p09fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ incomplete character reference
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p09fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p09fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P14-ibm14n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharData. The content of the element "student" contains the
+ character "[[&gt;".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P14-ibm14n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharData. The content of the element "student" contains the
+ character "less than".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P14-ibm14n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharData. The content of the element "student" contains the
+ character ampersand.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-025</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text may not contain a literal ']]&gt;' sequence. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-026</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text may not contain a literal ']]&gt;' sequence. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-029</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text may not contain a literal ']]&gt;' sequence. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p14fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&lt;' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p14fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&amp;' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p14fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ "]]&gt;" excluded
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P15-ibm15n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment. The text of the second comment contains the character
+ "-".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P15-ibm15n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment. The second comment has a wrong closing sequence
+ "-(greater than)".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P15-ibm15n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment. The second comment has a wrong beginning sequence
+ "(less than)!-".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P15-ibm15n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment. The closing sequence is missing with the second
+ comment.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-027</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comments must be terminated with "--&gt;".</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comments may not contain "--"</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p15fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ comments can't end in '-'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p15fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ one comment per comment (contrasted with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p15fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ can't include 2 or more adjacent '-'s
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML comments may not contain "--" </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-070</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML comments may not contain "--" </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P16-ibm16n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI. The content of the PI includes the sequence
+ "(less than)?".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P16-ibm16n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI. The PITarget is missing in the PI.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P16-ibm16n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI. The PI has a wrong closing sequence "&gt;".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P16-ibm16n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI. The closing sequence is missing in the PI.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P17-ibm17n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PITarget. The PITarget contains the string "XML".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P17-ibm17n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PITarget. The PITarget contains the string "xML".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P17-ibm17n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PITarget. The PITarget contains the string "xml".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P17-ibm17n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PITarget. The PITarget contains the string "xmL".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Processing Instruction target name is required.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-004</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML-ism: processing instructions end in '?&gt;' not '&gt;'. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Processing instructions end in '?&gt;' not '?'. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-028</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Processing instructions must end with '?&gt;'. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pi</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No space between PI target name and data</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p16fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ "xml" is an invalid PITarget
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p16fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a PITarget must be present
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p16fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S after PITarget is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-157</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&lt;?xmL ...?&gt;' is not a legal processing instruction
+ target name. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Processing instruction target names may not be "XML"
+ in any combination of cases. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-ext-sa-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only one text declaration is permitted; a second one
+ looks like an illegal processing instruction (target names
+ of "xml" in any case are not allowed). </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P18-ibm18n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 18</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDSect. The CDStart is missing in the CDSect in the content of
+ element "student".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P18-ibm18n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 18</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDSect. The CDEnd is missing in the CDSect in the content of
+ element "student".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P19-ibm19n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 19</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDStart. The CDStart contains a lower case string "cdata".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P19-ibm19n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 19</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDStart. The CDStart contains an extra character "[".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P19-ibm19n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 19</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDStart. The CDStart contains a wrong character "?".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P20-ibm20n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 20</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDATA with an illegal sequence. The CDATA contains the string
+ "[[&gt;".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P21-ibm21n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 21</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDEnd. One "]" is missing in the CDEnd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P21-ibm21n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 21</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDEnd. An extra "]" is placed in the CDEnd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P21-ibm21n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 21</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDEnd. A wrong character ")" is placed in the CDEnd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 </td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-105</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid placement of CDATA section. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-017</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA sections need a terminating ']]&gt;'. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-051</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA is invalid at top level of document.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-128</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid CDATA syntax. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p18fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no space before "CDATA"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p18fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no space after "CDATA"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p18fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDSect's can't nest
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [19]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-018</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA sections begin with a literal '&lt;![CDATA[', no space.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [19]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-108</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No space in '&lt;![CDATA['.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [19]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-112</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA sections start '&lt;![CDATA[', not '&lt;!cdata['.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-160</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates the <em>PEs in Internal Subset</em> WFC
+ by using a PE reference within a declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-161</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates the <em>PEs in Internal Subset</em> WFC
+ by using a PE reference within a declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-162</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates the <em>PEs in Internal Subset</em> WFC
+ by using a PE reference within a declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-009</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates WFC:PE Between Declarations in Production 28a.
+ The last character of a markup declaration is not contained in the same
+ parameter-entity text replacement.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P22-ibm22n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with wrong field ordering. The XMLDecl occurs
+ after the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P22-ibm22n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with wrong field ordering. The Misc (comment)
+ occurs before the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P22-ibm22n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with wrong field ordering. The XMLDecl occurs
+ after the DTD and a comment. The other comment occurs before the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with a required field missing. The Versioninfo is
+ missing in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with wrong field ordering. The VersionInfo
+ occurs after the EncodingDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with wrong field ordering. The VersionInfo
+ occurs after the SDDecl and the SDDecl occurs after the VersionInfo.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with wrong key word. An upper case string "XML" is
+ used as the key word in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with a wrong closing sequence "&gt;".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with a wrong opening sequence "(less than)!".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with a required field missing. The VersionNum is
+ missing in the VersionInfo in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with a required field missing. The white space is
+ missing between the key word "xml" and the VersionInfo in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with a required field missing. The "="
+ (equal sign) is missing between the key word "version" and the VersionNum.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with wrong field ordering. The VersionNum
+ occurs before "=" and "version".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with wrong field ordering. The "=" occurs
+ after "version" and the VersionNum.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with the wrong key word "Version".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with the wrong key word "versioN".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with mismatched quotes around the VersionNum.
+ version = '1.0" is used as the VersionInfo.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with mismatched quotes around the VersionNum.
+ The closing bracket for the VersionNum is missing.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P25-ibm25n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests eq with a wrong key word "==".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P25-ibm25n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests eq with a wrong key word "eq".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P26-ibm26n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 26</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionNum with an illegal character "#".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P27-ibm27n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 27</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests type of Misc. An element declaration is used as a type of Misc
+ After the element "animal".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with a required field missing. The Name "animal"
+ is missing in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong field ordering. The Name
+ "animal" occurs after the markup declarations inside the "[]".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong field ordering. The Name
+ "animal" occurs after the markup declarations inside the "[]".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with general entity reference.The
+ "(ampersand)generalE" occurs in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong key word. A wrong key word "DOCtYPE"
+ occurs on line 2.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with mismatched brackets. The closing bracket "]"
+ of the DTD is missing.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong bracket. The opening bracket "}" occurs
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong opening sequence. The opening sequence
+ "(less than)?DOCTYPE" occurs in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28a-ibm28an01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates WFC:PE Between Declarations in Production 28a.
+ The last character of a markup declaration is not contained in the same
+ parameter-entity text replacement.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests markupdecl with an illegal markup declaration. A XMLDecl
+ occurs inside the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ ATTlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a PI in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a comment
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a
+ NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P30-ibm30n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">paramenter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 30</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extSubset with wrong field ordering. In the file "ibm30n01.dtd",
+ the TextDecl occurs after the extSubsetDecl (the element declaration).
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P31-ibm31n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">paramenter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 31</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extSubsetDecl with an illegal field. A general entity
+ reference occurs in file "ibm31n01.dtd".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 </td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declaration must be at the very beginning of a document;
+ it"s not a processing instruction</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-147</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML Declaration may not be preceded by whitespace.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-148</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML Declaration may not be preceded by comments or whitespace.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-152</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declarations must include the "version=..." string.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ prolog must start with XML decl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ prolog must start with XML decl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-095</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ VersionInfo must come before EncodingDecl. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-098</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only one "version=..." string may appear in an XML declaration.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-099</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only three pseudo-attributes are in the XML declaration,
+ and "valid=..." is not one of them. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ "xml" must be lower-case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ VersionInfo must be supplied
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ VersionInfo must come first
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SDDecl must come last
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no SGML-type PIs
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declarations must be correctly terminated </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declarations must be correctly terminated </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-094</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Prolog VERSION must be lowercase. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-097</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Both quotes surrounding VersionNum must be the same. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p24fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p24fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [25]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p25fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comment is illegal in VersionInfo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [26]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-102</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Provides an illegal XML version number; spaces are illegal.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [26]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p26fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character in VersionNum. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [26]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p26fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character in VersionNum. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-036</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text may not appear after the root element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-037</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character references may not appear after the root element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-040</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Provides two document elements.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-041</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Provides two document elements.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-043</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Provides #PCDATA text after the document element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-044</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Provides two document elements.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-048</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Provides a CDATA section after the roor element.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-151</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declarations may not follow document content.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p27fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ References aren't allowed in Misc,
+ even if they would resolve to valid Misc.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-055</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid Document Type Definition format. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-056</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid Document Type Definition format - misplaced comment. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-107</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid document type declaration. CDATA alone is invalid.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-149</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML Declaration may not be within a DTD.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p28fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only declarations in DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [29]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-063</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Conditional sections may only appear in the external
+ DTD subset. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [29]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p29fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A processor must not pass unknown declaration types.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [30]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p30fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An XML declaration is not the same as a TextDecl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [31]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p31fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ external subset excludes doctypedecl
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 2.6 [23, 17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-154</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&lt;?XML ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 2.6 [23, 17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-155</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&lt;?xmL ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 2.6 [23, 17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-156</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&lt;?xMl ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Entity Declared WFC, ensuring that
+ a reference to externally defined entity causes a well-formedness error.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with a required field missing. The leading white space
+ is missing with the SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with a required field missing. The "=" sign is missing
+ in the SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "Standalone" occurs in
+ the SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "Yes" occurs in the
+ SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "YES" occurs in the
+ SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "No" occurs in the
+ SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "NO" occurs in the
+ SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong field ordering. The "=" sign occurs
+ after the key word "yes" in the SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This is test violates WFC: Entity Declared in P68.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of an entity (other than amp, lt, gt, apos,
+ quot), and references to this entity appear in the document.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-096</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required before the standalone declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-100</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only "yes" and "no" are permitted as values of "standalone". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ initial S is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quotes are required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ yes or no must be lower case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-039</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Type Match WFC - end tag name must
+ match start tag name.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with a required field missing. The ETag is missing
+ for the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with a required field missing. The STag is missing
+ for the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with required fields missing. Both the content and
+ the ETag are missing in the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with required fields missing. Both the content and
+ the STag are missing in the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with wrong field ordering. The STag and the ETag are
+ swapped in the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with wrong field ordering. The content occurs after
+ the ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-038</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Unique Att Spec" WF constraint by providing
+ multiple values for an attribute.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-081</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This tests the <em>No External Entity References</em> WFC,
+ since the entity is referred to within an attribute. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-082</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This tests the <em>No External Entity References</em> WFC,
+ since the entity is referred to within an attribute. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests STag with a required field missing. The Name "root" is
+ in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests STag with a required field missing. The white space between
+ the Name "root" and the attribute "attr1" is missing in the STag of the
+ element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests STag with wrong field ordering. The Name "root" occurs after
+ the attribute "attr1" in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests STag with a wrong opening sequence. The string "(less than)!" is used
+ as the opening sequence for the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests STag with duplicate attribute names. The attribute name
+ "attr1" occurs twice in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The attribute name
+ is missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The "=" is missing
+ between the attribute name and the attribute value in the Attribute in the
+ STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The AttValue is
+ missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The Name and the
+ "=" are missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The "=" and the
+ AttValue are missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The Name and the
+ AttValue are missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with wrong field ordering. The "=" occurs after the
+ Name and the AttValue in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with wrong field ordering. The Name and the AttValue
+ are swapped in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with wrong field ordering. The "=" occurs before the
+ Name and the AttValue in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "no external entity references". A direct
+ references to the external entity "aExternal" is contained in the value of the
+ attribute "attr1".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "no external entity references". A indirect
+ references to the external entity "aExternal" is contained in the value of the
+ attribute "attr1".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "no external entity references". A direct
+ references to the external unparsed entity "aImage" is contained in the value
+ of the attribute "attr1".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "No (less that) character in Attribute
+ Values". The character "less than" is contained in the value of the
+ attribute "attr1".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "No (less than) in Attribute Values". The character
+ "less than" is contained in the value of the attribute "attr1" through indirect
+ internal entity reference.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ETag with a required field missing. The Name is missing in the
+ ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ETag with a wrong beginning sequence. The string "(less than)\" is used as
+ a beginning sequence of the ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ETag with a wrong beginning sequence. The string "less than" is used as
+ a beginning sequence of the ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ETag with a wrong structure. An white space occurs between The
+ beginning sequence and the Name of the ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ETag with a wrong structure. The ETag of the element "root"
+ contains an Attribute (attr1="any").
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P43-ibm43n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element content with a wrong option. A NotationDecl is used as
+ the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P43-ibm43n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element content with a wrong option. A elementdecl is used as
+ the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P43-ibm43n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element content with a wrong option. An elementdecl is used as
+ the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P43-ibm43n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element content with a wrong option. An AttlistDecl is used as
+ the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P44-ibm44n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag with a required field missing. The Name "root" is
+ missing in the EmptyElemTag.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P44-ibm44n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag with wrong field ordering. The Attribute (attri1 =
+ "any") occurs before the name of the element "root" in the EmptyElemTag.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P44-ibm44n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag with wrong closing sequence. The string "\&gt;" is used
+ as the closing sequence in the EmptyElemtag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P44-ibm44n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag which against the WFC "Unique Att Spec". The
+ attribute name "attr1" occurs twice in the EmptyElemTag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-046</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This start (or empty element) tag was not terminated correctly. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-049</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Missing start tag </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace required between attributes</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required between attributes
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ tags start with names, not nmtokens
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ tags start with names, not nmtokens
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no space before name
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values must start with attribute names, not "?". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-011</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML-ism: attribute values must be explicitly assigned a
+ value, it can't act as a boolean toggle. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-015</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values need a value, not just an equals sign. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-016</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values need an associated name.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-178</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax matching double quote is missing. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p41fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quotes are required (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p41fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ attribute name is required (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p41fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Eq required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-019</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ End tags may not be abbreviated as '&lt;/&gt;'.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-042</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid End Tag </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-053</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ End tag does not match start tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">element00</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ EOF in middle of incomplete ETAG</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">element01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ EOF in middle of incomplete ETAG</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p42fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no space before name
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p42fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ cannot end with "/&gt;"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p42fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no NET (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-035</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The '&lt;' character is a markup delimiter and must
+ start an element, CDATA section, PI, or comment. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-111</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entiry reference must be in content of element not Start-tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-150</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declarations may not be within element content. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">element02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal markup (&lt;%@ ... %&gt;)</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">element03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal markup (&lt;% ... %&gt;)</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">element04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal markup (&lt;!ELEMENT ... &gt;)</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p43fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no non-comment declarations
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p43fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no conditional sections
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p43fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no conditional sections
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-045</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid Empty Element Tag </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-047</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid empty element tag invalid whitespace </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-186</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is required between attribute/value pairs. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace required between attributes</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal space before Empty element tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal space after Empty element tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal comment in Empty element tag. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace required between attributes. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Duplicate attribute name is illegal. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The Name is missing
+ in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The white space is
+ missing between "aEle" and "(#PCDATA)" in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The contentspec is
+ missing in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The contentspec and
+ the white space is missing in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The Name, the white
+ space, and the contentspec are missing in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with wrong field ordering. The Name occurs after the
+ contentspec in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with wrong beginning sequence. The string
+ "(less than)ELEMENT" is used as the beginning sequence in the second
+ elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with wrong key word. The string "Element" is used as
+ the key word in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with wrong key word. The string "element" is used as
+ the key word in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests contentspec with wrong key word. the string "empty" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests contentspec with wrong key word. the string "Empty" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests contentspec with wrong key word. the string "Any" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests contentspec with wrong key word. the string "any" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests contentspec with a wrong option. The string "#CDATA" is used as
+ the contentspec in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-133</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal whitespace before optional character causes syntax error. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-134</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal whitespace before optional character causes syntax error. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests children with a required field missing. The "+" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests children with a required field missing. The "*" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests children with a required field missing. The "?" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests children with wrong field ordering. The "*" occurs before the
+ seq field (a,a) in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests children with wrong field ordering. The "+" occurs before the
+ choice field (a|a) in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests children with wrong key word. The "^" occurs after the seq field
+ in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the second cp in the choice field in the third elementdecl in the
+ DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the cp in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the first cp in the choice field in the third elementdecl in the
+ DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with wrong field ordering. The "+" occurs before the seq (a,a)
+ in the first cp in the choice field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with wrong field ordering. The "*" occurs before the choice
+ (a|b) in the first cp in the seq field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with wrong field ordering. The "?" occurs before the Name "a"
+ in the second cp in the seq field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with wrong key word. The "^" occurs after the Name "a" in the
+ first cp in the choice field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests choice with a required field missing. The two cps are missing in
+ the choice field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests choice with a required field missing. The third cp is missing in
+ the choice field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests choice with a wrong separator. The "!" is used as the separator
+ in the choice field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests choice with a required field missing. The separator "|" is
+ missing in the choice field (a b)+ in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests choice with an extra separator. An extra "|" occurs between a
+ and b in the choice field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests choice with a required field missing. The closing bracket ")" is
+ missing in the choice field (a |b * in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with a required field missing. The two cps are missing in
+ the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with a required field missing. The third cp is missing in
+ the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with a wrong separator. The "|" is used as the separator
+ between a and b in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with a wrong separator. The "." is used as the separator
+ between a and b in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with an extra separator. An extra "," occurs between (a|b)
+ and a in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with a required field missing. The separator between (a|b)
+ and (b|a) is missing in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with wrong closing bracket. The "]" is used as the closing
+ bracket in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-139</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The element-content model should not be empty. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-122</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax mixed connectors are used. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-135</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid character used as connector. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml13</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML Unordered content models not allowed</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p47fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid operator '|' must match previous operator ','</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p47fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character '-' in Element-content model </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p47fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Optional character must follow a name or list </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p47fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal space before optional character</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-123</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax mismatched parenthesis. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-138</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax for content particle. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">content01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No whitespace before "?" in content model</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">content02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No whitespace before "*" in content model</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">content03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No whitespace before "+" in content model</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p48fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal space before optional character </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p48fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal space before optional character </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [49]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p49fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ connectors must match </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [50]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-132</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax mixed connectors used. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [50]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p50fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ connectors must match </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [55]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">nwf-dtd00</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comma mandatory in content model</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [55]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">nwf-dtd01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Can't mix comma and vertical bar in content models</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with a wrong key word. The string "#pcdata" is used as the
+ key word in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with wrong field ordering. The field #PCDATA does not
+ occur as the first component in the Mixed field in the fourth elementdecl in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with a separator missing. The separator "|" is missing in
+ between #PCDATA and a in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with a wrong key word. The string "#CDATA" is used as the
+ key word in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with a required field missing. The "*" is missing after
+ the ")" in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with wrong closing bracket. The "]" is used as the closing
+ bracket in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with a required field missing. The closing bracket ")" is
+ missing after (#PCDATA in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-124</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid format of Mixed-content declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-125</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax extra set of parenthesis not necessary. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-126</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax Mixed-content must be defined as zero or more. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-127</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax Mixed-content must be defined as zero or more. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-183</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Mixed content declarations may not include content particles.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-184</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ In mixed content models, element names must not be
+ parenthesized. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ occurrence on #PCDATA group must be *
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ occurrence on #PCDATA group must be *
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ #PCDATA must come first
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ occurrence on #PCDATA group must be *
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only '|' connectors
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only '|' connectors and occurrence on #PCDATA group must be * </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no nested groups
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-057</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This isn't SGML; comments can't exist in declarations. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-129</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax for Element Type Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-130</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax for Element Type Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-131</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax for Element Type Declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-136</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tag omission is invalid in XML. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-137</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required before a content model. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ELEMENT declarations apply to only one element, unlike SGML</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML Tag minimization specifications are not allowed</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML Tag minimization specifications are not allowed</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml09</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML Content model exception specifications are not allowed</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML Content model exception specifications are not allowed</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p45fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ELEMENT must be upper case.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p45fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S before contentspec is required.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p45fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only one content spec
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p45fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no comments in declarations (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA is not a valid content model spec</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ RCDATA is not a valid content model spec</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no parens on declared content
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no inclusions (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no exclusions (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no space before occurrence
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ single group
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ can't be both declared and modeled
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with a required field missing. The Name is missing
+ in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with a required field missing. The white space is
+ missing between the beginning sequence and the name in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with wrong field ordering. The Name "a" occurs after
+ the first AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with wrong key word. The string "Attlist" is used as
+ the key word in the beginning sequence in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with a required field missing. The closing bracket
+ "greater than" is missing in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with wrong beginning sequence. The string
+ "(less than)ATTLIST" is used as the beginning sequence in the AttlistDecl in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The DefaultDecl is missing
+ in the AttDef for the name "attr1" in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The white space is missing
+ between (abc|def) and "def" in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The AttType is missing
+ for "attr1" in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The white space is missing
+ between "attr1" and (abc|def) in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The Name is missing in the
+ AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The white space before the
+ name "attr2" is missing in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with wrong field ordering. The Name "attr1" occurs after
+ the AttType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with wrong field ordering. The Name "attr1" occurs after
+ the AttType and "default" occurs before the AttType in the AttDef in the
+ AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P54-ibm54n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttType with a wrong option. The string "BOGUSATTR" is used as
+ the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P54-ibm54n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttType with a wrong option. The string "PCDATA" is used as
+ the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P55-ibm55n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 55</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests StringType with a wrong key word. The lower case string "cdata"
+ is used as the StringType in the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P55-ibm55n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 55</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests StringType with a wrong key word. The string "#CDATA" is used as
+ the StringType in the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P55-ibm55n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 55</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests StringType with a wrong key word. The string "CData" is used as
+ the StringType in the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "id" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "Idref" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "Idrefs" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "EntitY" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "nmTOKEN" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "NMtokens" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "#ID" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P57-ibm57n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 57</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EnumeratedType with an illegal option. The "NMTOKEN (a|b)"
+ is used in the EnumeratedType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with wrong key word. The lower case "notation" is
+ used as the key word in the NotationType in the AttDef in the AttlistDecl in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with a required field missing. The beginning bracket
+ "(" is missing in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with a required field missing. The Name is missing
+ in the "()" in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with a required field missing. The closing bracket
+ is missing in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with wrong field ordering. The key word "NOTATION"
+ occurs after "(this)" in the NotationType in the AttDef in the AttlistDecl in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with wrong separator. The "," is used as a separator
+ between "this" and "that" in the NotationType in the AttDef in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with a required field missing. The white space is
+ missing between "NOTATION" and "(this)" in the NotationType in the AttDef in the
+ AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with extra wrong characters. The double quote
+ character occurs after "(" and before ")" in the NotationType in the AttDef in
+ the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration with required fields missing. The Nmtokens and "|"s are
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration with a required field missing. The closing bracket ")" is
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration with wrong separator. The "," is used as the separator in
+ the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration with illegal presence. The double quotes occur around the
+ Enumeration value in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration with a required field missing. The white space is missing
+ between in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration with a required field missing. The beginning bracket "(" is
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [54]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-058</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid character , in ATTLIST enumeration </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [54]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p54fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ don't pass unknown attribute types
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [55]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p55fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-060</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid type NAME defined in ATTLIST.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's NUTOKEN is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's NUTOKENS attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's NUMBER attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's NUMBERS attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's NAME attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's NAMES attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's #CURRENT is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist09</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's #CONREF is not allowed.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p56fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no IDS type
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p56fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no NUMBER type
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p56fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no NAME type
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p56fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no ENTITYS type
+- types must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p56fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ types must be upper case </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [57]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p57fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no keyword for NMTOKEN enumeration
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-068</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required between NOTATION keyword and list of
+ enumerated choices in &lt;!ATTLIST...&gt; declarations. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ at least one value required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ separator must be '|'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ notations are NAMEs, not NMTOKENs -- note:
+ Leaving the invalid
+ notation undeclared would cause a validating parser to fail without
+ checking the name syntax, so the notation is declared with an
+ invalid name. A parser that reports error positions should report
+ an error at the AttlistDecl on line 6, before reaching the notation
+ declaration.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ NOTATION must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S after keyword is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ parentheses are require
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ values are unquoted
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ values are unquoted
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-059</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ String literal must be in quotes. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comma doesn't separate enumerations, unlike in SGML.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p59fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ at least one required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p59fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ separator must be ","
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p59fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ values are unquoted
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with wrong key word. The string "#required" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with wrong key word. The string "Implied" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with wrong key word. The string "!IMPLIED" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with a required field missing. There is no
+ attribute value specified after the key word "#FIXED" in the DefaultDecl in
+ the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with a required field missing. The white space is
+ missing between the key word "#FIXED" and the attribute value in the
+ DefaultDecl in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with wrong field ordering. The key word "#FIXED"
+ occurs after the attribute value "introduction" in the DefaultDecl in the
+ AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl against WFC of P60. The text replacement of the
+ entity "avalue" contains the "less than" character in the DefaultDecl in the
+ AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with more than one key word. The "#REQUIRED" and
+ the "#IMPLIED" are used as the key words in the DefaultDecl in the AttDef
+ in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p60fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ keywords must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p60fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required after #FIXED
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p60fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only #FIXED has both keyword and value
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p60fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ #FIXED required value
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p60fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only one default type
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-066</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Required whitespace is missing. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-158</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML-ism: "#NOTATION gif" can't have attributes. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ATTLIST declarations apply to only one element, unlike SGML</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ATTLIST declarations are never global, unlike in SGML</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p52fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A name is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p52fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A name is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-064</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required between attribute type and default values
+ in &lt;!ATTLIST...&gt; declarations. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-065</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required between attribute name and type
+ in &lt;!ATTLIST...&gt; declarations. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-067</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required between attribute type and default values
+ in &lt;!ATTLIST...&gt; declarations. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p53fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required before default
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p53fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required before type
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p53fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ type is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p53fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ default is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p53fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ name is requried
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P61-ibm61n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 61</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests conditionalSect with a wrong option. The word "NOTINCLUDE" is
+ used as part of an option which is wrong in the coditionalSect.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong key word. The string "include" is used
+ as a key word in the beginning sequence in the includeSect in the file
+ ibm62n01.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong beginning sequence. An extra "[" occurs
+ in the beginning sequence in the includeSect in the file ibm62n02.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong beginning sequence. A wrong character "?"
+ occurs in the beginning sequence in the includeSect in the file ibm62n03.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with a required field missing. The key word
+ "INCLUDE" is missing in the includeSect in the file ibm62n04.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with a required field missing. The "]" is missing
+ after the key word "INCLUDE" in the includeSect in the file ibm62n05.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong field ordering. The two external subset
+ declarations occur before the key word "INCLUDE" in the includeSect in the
+ file ibm62n06.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with a required field missing. The closing sequence
+ "]](greater than)" is missing in the includeSect in the file ibm62n07.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with a required field missing. One "]" is missing
+ in the closing sequence in the includeSect in the file ibm62n08.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with wrong key word. The string "ignore" is used
+ as a key word in the beginning sequence in the ignoreSect in the file
+ ibm63n01.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with wrong beginning sequence. An extra "[" occurs
+ in the beginning sequence in the ignoreSect in the file ibm63n02.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with wrong beginning sequence. A wrong character "?"
+ occurs in the beginning sequence in the ignoreSect in the file ibm63n03.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with a required field missing. The key word
+ "IGNORE" is missing in the ignoreSect in the file ibm63n04.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with a required field missing. The "]" is missing
+ after the key word "IGNORE" in the ignoreSect in the file ibm63n05.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong field ordering. The two external subset
+ declarations occur before the key word "IGNORE" in the ignoreSect in the
+ file ibm63n06.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with a required field missing. The closing sequence
+ "]](greater than)" is missing in the ignoreSect in the file ibm63n07.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P64-ibm64n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents with wrong beginning sequence. The "?" occurs
+ in beginning sequence the ignoreSectContents in the file ibm64n01.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P64-ibm64n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents with a required field missing.The closing
+ sequence is missing in the ignoreSectContents in the file ibm64n02.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P64-ibm64n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents with a required field missing.The beginning
+ sequence is missing in the ignoreSectContents in the file ibm64n03.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P65-ibm65n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 65</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ignore with illegal string included. The string
+ "]](greater than)" is contained before "this" in the Ignore in the
+ ignoreSectContents in the file ibm65n01.dtd
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P65-ibm65n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 65</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ignore with illegal string included. The string
+ "(less than)![" is contained before "this" in the Ignore in the
+ ignoreSectContents in the file ibm65n02.dtd
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [61]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">cond01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only INCLUDE and IGNORE are conditional section keywords</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [61]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">cond02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Must have keyword in conditional sections</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [61]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p61fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no other types, including TEMP, which is valid in SGML
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Conditional sections must be properly terminated ("]&gt;" used
+ instead of "]]&gt;"). </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Conditional sections must be properly terminated ("]]&gt;" omitted). </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-004</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Conditional sections must be properly terminated ("]]&gt;" omitted). </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Conditional sections need a '[' after the INCLUDE or IGNORE. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p62fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ INCLUDE must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p62fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no spaces in terminating delimiter
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [63]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p63fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ IGNORE must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [63]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p63fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ delimiters must be balanced
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [64]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p64fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ section delimiters must balance
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [64]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p64fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ section delimiters must balance
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-176</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Start tags must have matching end tags.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML-ism: omitted end tag for EMPTY content</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ start-tag requires end-tag
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ end-tag requires start-tag
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML documents contain one or more elements</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-084</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the <em>Parsed Entity</em> WFC by referring to an
+ unparsed entity. (This precedes the error of not declaring
+ that entity's notation, which may be detected any time before
+ the DTD parsing is completed.) </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-180</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The <em>Entity Declared</em> WFC requires entities to be declared
+ before they are used in an attribute list declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-185</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the <em>Entity Declared</em> WFC.
+ <em>Note:</em> a nonvalidating parser is permitted not to report
+ this WFC violation, since it would need to read an external
+ parameter entity to distinguish it from a violation of
+ the <em>Standalone Declaration</em> VC.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-ext-sa-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the <em>No Recursion</em> WFC by having an external general
+ entity be self-recursive.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#002f" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with the semicolon character missing. The semicolon
+ character is missing at the end of the CharRef in the attribute value in
+ the STag of element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "49" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#5~0" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x002g" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x006G" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#0=2f" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#56.0" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x00/2f"
+ is used as the referred character in the CharRef in the EntityDecl in the
+ DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#51)" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#00 2f"
+ is used as the referred character in the CharRef in the EntityDecl in the
+ DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x0000"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x001f"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#xfffe"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#xffff"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef with a required field missing. The Name is missing
+ in the EntityRef in the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef with a required field missing. The semicolon is
+ missing in the EntityRef in the attribute value in the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef with an extra white space. A white space occurs
+ after the ampersand in the EntityRef in the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Entity Declared. The name
+ "aAa" in the EntityRef in the AttValue in the STage of the element "root"
+ does not match the Name of any declared entity in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is not declared.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is externally declared, but standalone is "yes".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is referred before declared.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Parsed Entity. The
+ EntityRef in the AttValue in the STag of the element "root" contains the
+ name "aImage" of an unparsed entity.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: No Recursion. The
+ recursive entity reference occurs with the entity declarations for "aaa"
+ and "bbb" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: No Recursion. The
+ indirect recursive entity reference occurs with the entity declarations for
+ "aaa", "bbb", "ccc", "ddd", and "eee" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEReference with a required field missing. The Name "paaa" is
+ missing in the PEReference in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEReference with a required field missing. The semicolon is
+ missing in the PEReference "%paaa" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEReference with an extra white space. There is an extra
+ white space occurs before ";" in the PEReference in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEReference with an extra white space. There is an extra
+ white space occurs after "%" in the PEReference in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEReference which is against P69 WFC: No Recursion. The
+ recursive PE reference occurs with the entity declarations for "paaa" and
+ "bbb" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEReference which is against P69 WFC: No Recursion. The
+ indirect recursive PE reference occurs with the entity declarations for
+ "paaa", "bbb", "ccc", "ddd", and "eee" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-009</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character references may have only decimal or numeric strings.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-022</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character references end with semicolons, always!</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-052</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid character reference. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-093</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Hexadecimal character references may not use the uppercase 'X'.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-179</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax matching double quote is missing. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ terminating ';' is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no S after '&amp;#'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no hex digits in numeric reference
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only hex digits in hex references
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no references to non-characters
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no references to non-characters
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-007</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ General entity references have no whitespace after the
+ entity name and before the semicolon. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-010</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Ampersand may only appear as part of a general entity reference.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-071</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ENTITY can't reference itself directly or indirectly.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-072</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Undefined ENTITY foo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-073</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Undefined ENTITY f. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-075</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ENTITY can't reference itself directly or indirectly. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-076</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Undefined ENTITY foo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-078</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Undefined ENTITY foo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-079</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ENTITY can't reference itself directly or indirectly. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-080</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ENTITY can't reference itself directly or indirectly. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-110</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entity reference must be in content of element. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-118</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entity reference expansion is not recursive.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-121</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A name of an ENTITY was started with an invalid character. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p68fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ terminating ';' is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p68fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no S after '&amp;'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p68fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no S before ';'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-163</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid placement of Parameter entity reference. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-164</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid placement of Parameter entity reference. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-008</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ In DTDs, the '%' character must be part of a parameter
+ entity reference.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ PE name immediately after "%"</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ PE name immediately followed by ";"</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p69fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ terminating ';' is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p69fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no S after '%'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p69fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no S before ';'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-106</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid placement of entity declaration. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm70n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The white space is
+ missing between the beginning sequence and the Name "aaa" in the EntityDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The white space is
+ missing between the Name "aaa" and the EntityDef "aString" in the
+ EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The EntityDef is
+ missing in the EntityDecl with the Name "aaa" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The Name is missing
+ in the EntityDecl with the EntityDef "aString" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with wrong ordering. The Name "aaa" occurs after
+ the EntityDef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with wrong key word. The string "entity" is used
+ as the key word in the beginning sequence in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The closing bracket
+ (greater than) is missing in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The exclamation mark
+ is missing in the beginning sequence in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The white space is
+ missing between the beginning sequence and the "%" in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The Name is missing
+ in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The white space is
+ missing between the Name and the PEDef in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The PEDef is missing
+ after the Name "paaa" in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with wrong field ordering. The Name "paaa" occurs
+ after the PEDef in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with wrong field ordering. The "%" and the Name "paaa"
+ occurs after the PEDef in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with wrong key word. The string "entity" is used as
+ the key word in the beginning sequence in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The closing bracket
+ (greater than) is missing in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with wrong closing sequence. The string
+ "!(greater than)" is used as the closing sequence in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P73-ibm73n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 73</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDef with wrong field ordering. The NDataDecl "NDATA
+ JPGformat" occurs before the ExternalID in the EntityDef in the EntityDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P73-ibm73n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 73</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDef with a required field missing. The ExternalID is
+ missing before the NDataDecl in the EntityDef in the EntityDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P74-ibm74n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 74</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEDef with extra fields. The NDataDecl occurs after the
+ ExternalID in the PEDef in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong key word. The string "system" is used
+ as the key word in the ExternalID in the EntityDef in the EntityDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong key word. The string "public" is used
+ as the key word in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong key word. The string "Public" is used
+ as the key word in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PublicLiteral and the SystemLiteral in the ExternalID in
+ the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The white space
+ between "SYSTEM" and the Systemliteral is missing in the ExternalID in the
+ EntityDef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The Systemliteral
+ is missing after "SYSTEM" in the ExternalID in the EntityDef in the
+ EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The white space
+ between the PublicLiteral and the Systemliteral is missing in the ExternalID
+ in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The key word
+ "PUBLIC" is missing in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The white space
+ between "PUBLIC" and the PublicLiteral is missing in the ExternalID in the
+ doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The PublicLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The PublicLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The SystemLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PublicLiteral in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with wrong key word. The string "ndata" is used as
+ the key word in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with wrong key word. The string "NData" is used as
+ the key word in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with a required field missing. The leading white
+ space is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with a required field missing. The key word "NDATA"
+ is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with a required field missing. The Name after the
+ key word "NDATA" is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with a required field missing. The white space
+ between "NDATA" and the Name is missing in the NDataDecl in the EntityDef
+ in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with wrong field ordering. The key word "NDATA"
+ occurs after the Name in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-054</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ PUBLIC requires two literals.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-061</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ External entity declarations require whitespace between public
+ and system IDs.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ PUBLIC literal must be quoted</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SYSTEM identifier must be quoted</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S required after "PUBLIC"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S required after "SYSTEM"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S required between literals
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ "SYSTEM" implies only one literal
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only one keyword
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ "PUBLIC" requires two literals (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-069</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required before an NDATA entity annotation.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-083</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Undefined NOTATION n. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p76fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required before "NDATA"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p76fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ "NDATA" is upper-case
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p76fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ notation name is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p76fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ notation names are Names
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [70]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-109</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tags invalid within EntityDecl. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [70]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p70fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This is neither
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-062</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entity declarations need space after the entity name. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p71fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required before EntityDef
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p71fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entity name is a Name, not an NMToken
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p71fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no S after "&lt;!"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p71fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required after "&lt;!ENTITY"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-165</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter entity declarations must have a space before
+ the '%'. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p72fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required after "&lt;!ENTITY"
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p72fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required after '%'
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p72fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required after name
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p72fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entity name is a name, not an NMToken
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p73fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No typed replacement text
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p73fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only one replacement value
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p73fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No NDataDecl on replacement text
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p73fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Value is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p73fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No NDataDecl without value
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-089</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter entities "are" always parsed; NDATA annotations
+ are not permitted.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-091</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter entities "are" always parsed; NDATA annotations
+ are not permitted.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p74fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no NDataDecls on parameter entities
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p74fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ value is required
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p74fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only one value
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TextDecl with wrong field ordering. The VersionInfo occurs
+ after the EncodingDecl in the TextDecl in the file "ibm77n01.ent".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TextDecl with wrong key word. The string "XML" is used in the
+ beginning sequence in the TextDecl in the file "ibm77n02.ent".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TextDecl with wrong closing sequence. The character "greater
+ than" is used as the closing sequence in the TextDecl in the file
+ "ibm77n03.ent".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TextDecl with a required field missing. The closing sequence
+ is missing in the TextDecl in the file "ibm77n04.ent".
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1 [77]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">decl01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ External entities may not have standalone decls. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1 [77]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text declarations (which optionally begin any external entity)
+ are required to have "encoding=...". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1 [77]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text declarations (which optionally begin any external entity)
+ are required to have "encoding=...". </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1 4.3.2 [77, 78]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-ext-sa-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ External entities have "text declarations", which do
+ not permit the "standalone=..." attribute that's allowed
+ in XML declarations.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-074</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-103</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ End-tag required for element foo. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-104</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-116</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-117</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-119</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-153</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text declarations may not begin internal parsed entities;
+ they may only appear at the beginning of external parsed
+ (parameter or general) entities. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-181</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal parsed entities must match the <em>content</em>
+ production to be well formed. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-182</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal parsed entities must match the <em>content</em>
+ production to be well formed. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P78-ibm78n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 78</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extParsedEnt with wrong field ordering. The TextDecl occurs
+ after the content in the file ibm78n01.ent.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P78-ibm78n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 78</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extParsedEnt with extra field. A blank line occurs before the
+ TextDecl in the file ibm78n02.ent.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P79-ibm79n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 79</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extPE with wrong field ordering. The TextDecl occurs after
+ the extSubsetDecl (the white space and the comment) in the file
+ ibm79n01.ent.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P79-ibm79n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 79</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extPE with extra field. A blank line occurs before the
+ TextDecl in the file ibm78n02.ent.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2 [79]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-007</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A &lt;!DOCTYPE ...&gt; declaration may not begin any external
+ entity; it's only found once, in the document entity.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with a required field missing. The leading white
+ space is missing in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with a required field missing. The "=" sign is
+ missing in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with a required field missing. The double quoted
+ EncName are missing in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with wrong field ordering. The string "encoding=" occurs after the double quoted EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with wrong field ordering. The "encoding" occurs
+ after the double quoted EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with wrong key word. The string "Encoding" is
+ used as the key word in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "_" is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "-" is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "." is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with illegal characters. The "8-" is used as the
+ initial characters in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "~" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "#" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The ":" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "/" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The ";" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-101</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is not permitted in an encoding name. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character " " in encoding name</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character "/" in encoding name</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character reference in encoding name</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character ":" in encoding name</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character "@" in encoding name</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character "+" in encoding name</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-092</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The replacement text of this entity has an illegal reference,
+ because the character reference is expanded immediately. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-115</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The replacement text of this entity is an illegal character
+ reference, which must be rejected when it is parsed in the
+ context of an attribute value.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-120</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character references are expanded in the replacement text of
+ an internal entity, which is then parsed as usual. Accordingly,
+ &amp; must be doubly quoted - encoded either as <em>&amp;amp;</em>
+ or as <em>&amp;#38;#38;</em>. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with a required field missing. The white space
+ after the beginning sequence of the NotationDecl is missing in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with a required field missing. The Name in the
+ NotationDecl is missing in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with a required field missing. The externalID or
+ the PublicID is missing in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with wrong field ordering. The Name occurs after
+ the "SYSTEM" and the externalID in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with wrong key word. The string "notation" is
+ used as a key word in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with a required field missing. The closing
+ bracket (the greater than character) is missing in the NotationDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with wrong beginning sequence. The "!" is missing
+ in the beginning sequence in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with wrong closing sequence. The extra "!" occurs
+ in the closing sequence in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PublicID with wrong key word. The string "public" is used as
+ the key word in the PublicID in the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PublicID with wrong key word. The string "Public" is used as
+ the key word in the PublicID in the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PublicID with a required field missing. The key word "PUBLIC"
+ is missing in the PublicID in the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PublicID with a required field missing. The white space
+ between the "PUBLIC" and the PubidLiteral is missing in the PublicID in
+ the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PublicID with a required field missing. The PubidLiteral is
+ missing in the PublicID in the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PublicID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PubidLiteral in the PublicID in the NotationDcl.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">41. [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-077</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Undefined ENTITY bar. </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x00D7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x00F7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0132
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0133
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x013F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0140
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0149
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x017F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01c4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01CC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n100.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BB6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n101.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BBA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n102.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n103.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n104.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n105.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n106.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C5F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n107.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n108.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C8D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n109.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C91
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n110.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CA9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n111.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n112.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CBA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n113.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CDF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n114.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CE2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n115.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n116.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n117.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n118.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n119.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n120.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E2F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n121.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n122.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n123.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E46
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n124.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E83
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n125.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E85
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n126.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E89
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n127.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E8B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n128.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E8E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n129.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E98
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n130.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EA0
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n131.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EA4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n132.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EA6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n133.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EA8
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n134.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EAC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n135.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EAF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n136.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EB1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n137.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n138.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EBE
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n139.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EC5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n140.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0F48
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n141.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0F6A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n142.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x10C6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n143.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x10F7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n144.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1011
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n145.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1104
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n146.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1108
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n147.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x110A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n148.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x110D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n149.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x113B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n150.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x113F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n151.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1141
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n152.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x114D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n153.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x114f
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n154.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1151
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n155.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1156
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n156.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x115A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n157.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1162
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n158.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1164
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n159.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1166
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0230
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n160.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x116B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n161.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x116F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n162.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1174
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n163.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x119F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n164.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11AC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n165.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11B6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n166.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11B9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n167.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11BB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n168.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11C3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n169.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11F1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x02AF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n170.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11FA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n171.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1E9C
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n172.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1EFA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n173.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F16
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n174.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F1E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n175.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F46
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n176.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F4F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n177.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F58
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n178.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F5A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n179.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F5C
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x02CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n180.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F5E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n181.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #xF17E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n182.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FB5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n183.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FBD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n184.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FBF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n185.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FC5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n186.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FCD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n187.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FD5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n188.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FDC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n189.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FED
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n19.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0387
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n190.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FF5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n191.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FFD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n192.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x2127
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n193.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x212F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n194.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x2183
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n195.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x3095
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n196.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x30FB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n197.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x312D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n198.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #xD7A4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n20.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x038B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n21.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03A2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n22.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n23.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03D7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n24.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03DD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n25.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03E1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n26.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03F4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n27.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x040D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n28.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0450
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n29.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x045D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n30.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0482
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n31.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04C5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n32.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04C6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n33.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04C9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n34.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04EC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n35.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04ED
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n36.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04F6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n37.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04FA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n38.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0557
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n39.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0558
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n40.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0587
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n41.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x05EB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n42.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x05F3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n43.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0620
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n44.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x063B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n45.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x064B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n46.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06B8
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n47.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06BF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n48.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n49.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06D4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n50.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06D6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n51.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06E7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n52.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x093A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n53.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x093E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n54.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0962
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n55.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x098D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n56.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0991
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n57.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0992
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n58.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09A9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n59.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09B1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n60.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09B5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n61.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09BA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n62.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09DE
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n63.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09E2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n64.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09F2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n65.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A0B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n66.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n67.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n68.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n69.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n70.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A37
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n71.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n72.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A5B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n73.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A70
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n74.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A75
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n75.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n76.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0ABC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n77.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A92
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n78.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0AA9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n79.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0AB1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n80.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0AB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n81.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0ABA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n82.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B04
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n83.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n84.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n85.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n86.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n87.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n88.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n89.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B3E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n90.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B5E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n91.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n92.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B8B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n93.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B91
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n94.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B98
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n95.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B9B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n96.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B9D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n97.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BA0
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n98.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BA7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n99.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BAB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P86-ibm86n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ideographic with an illegal character. The character #x4CFF
+ occurs as the first character in the PITarget in the PI in the DTD.
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P86-ibm86n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ideographic with an illegal character. The character #x9FA6
+ occurs as the first character in the PITarget in the PI in the DTD.
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P86-ibm86n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ideographic with an illegal character. The character #x3008
+ occurs as the first character in the PITarget in the PI in the DTD.
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P86-ibm86n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ideographic with an illegal character. The character #x302A
+ occurs as the first character in the PITarget in the PI in the DTD.
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x02FF
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0346
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0362
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0487
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05A2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05BA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05BE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05C0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05C3
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0653
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x06B8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x06B9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x06E9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x06EE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0904
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x093B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x094E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0955
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n19.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0964
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n20.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0984
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n21.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09C5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n22.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09C9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n23.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09CE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n24.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09D8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n25.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09E4
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n26.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A03
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n27.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A3D
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n28.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A46
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n29.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n30.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n31.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A80
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n32.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n33.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0ABB
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n34.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0AC6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n35.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0ACA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n36.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0ACE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n37.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B04
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n38.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n39.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B44
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n40.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B4A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n41.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n42.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B58
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n43.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n44.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0BC3
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n45.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0BC9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n46.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0BD6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n47.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C0D
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n48.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C45
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n49.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n50.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C54
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n51.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C81
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n52.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n53.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0CC5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n54.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0CC9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n55.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0CD4
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n56.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0CD7
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n57.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D04
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n58.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D45
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n59.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n60.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n61.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D58
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n62.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0E3F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n63.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0E3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n64.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0E4F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n66.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0EBA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n67.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0EBE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n68.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0ECE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n69.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F1A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n70.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F36
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n71.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F38
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n72.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n73.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F3A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n74.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n75.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F85
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n76.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F8C
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n77.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F96
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n78.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F98
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n79.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0FB0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n80.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0FB8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n81.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0FBA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n82.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x20DD
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n83.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x20E2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n84.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x3030
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n85.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x309B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0029
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x003B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x066A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x06FA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0970
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x09F2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0AF0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0B70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0C65
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0CE5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0CF0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0D70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0E5A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0EDA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0F2A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x00B6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x00B8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x02D2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x03FE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x065F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x0EC7
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x3006
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x3030
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x3036
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x309C
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x309F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x30FF
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<a shape="rect" name="error"/>
+<h3>3.4 XML Documents with Optional Errors</h3>
+<p> Conforming XML 1.0 Processors are permitted to ignore
+ certain errors, or to report them at user option. In this
+ section of this test report are found descriptions of
+ test cases which fit into this category. </p>
+<p> Processor behavior on such test cases does not affect
+ conformance to the XML 1.0 (Second Edition) Recommendation, except as noted. </p>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3, 4.2.2 [11]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p11pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ system literals may not contain
+ URI fragments
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the <em>Entity Declared</em> VC by referring to an
+ undefined parameter entity within an external entity.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P68-ibm68i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge2" is referred in the file ibm68i01.dtd", but not declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P68-ibm68i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge1" is referred before declared in the file ibm68i01.dtd".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P68-ibm68i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge2" is referred in the file ibm68i03.ent", but not declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P68-ibm68i04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge1" is referred before declared in the file ibm68i04.ent".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P69-ibm69i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The Name
+ "pe2" in the PEReference in the file ibm69i01.dtd does not match the Name of
+ any declared PE.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P69-ibm69i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The PE with
+ the name "pe1" is referred before declared in the file ibm69i02.dtd
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P69-ibm69i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The Name
+ "pe3" in the PEReference in the file ibm69i03.ent does not match the Name of
+ any declared PE.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P69-ibm69i04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The PE with
+ the name "pe2" is referred before declared in the file ibm69i04.ent.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Based on E29 substantial source: minutes XML-Syntax 1999-02-24 E38 in
+ XML 1.0 Errata, this WFC does not apply to P69, but the VC Entity declared
+ still apply.
+ Tests PEReference which is against P69 WFC: Entity Declared. The PE
+ with the name "paaa" is referred before declared in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">uri01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SYSTEM ids may not have URI fragments</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pr-xml-euc-jp</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for the EUC-JP encoding, and for text
+ which relies on Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pr-xml-iso-2022-jp</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for the ISO-2022-JP encoding, and for text
+ which relies on Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pr-xml-shift_jis</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for the Shift_JIS encoding, and for text
+ which relies on Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">weekly-euc-jp</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for EUC-JP encoding, and
+ XML names which contain Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">weekly-iso-2022-jp</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for ISO-2022-JP encoding, and
+ XML names which contain Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+
+</p>
+</td>
+</tr>
+</table>
+<table width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">weekly-shift_jis</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for Shift_JIS encoding, and
+ XML names which contain Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+
+</p>
+</td>
+</tr>
+</table>
+<a shape="rect" name="contrib"/>
+<h3>4. Contributors (Non-normative)</h3>
+<p> A team of volunteer members have participated in the
+ development of this work. Contributions have come from:
+ </p>
+<ul>
+<li>Murry Altheim, Sun Microsystems</li>
+<li>Mary Brady, NIST</li>
+<li>Tim Boland, NIST</li>
+<li>David Brownell, Sun Microsystems</li>
+<li>James Clark</li>
+<li>Karin Donker, IBM</li>
+<li>Irina Golfman, Inera Incorporated</li>
+<li>Tony Graham, Mulberry Technologies</li>
+<li>G. Ken Holman, Crane Softwrights Ltd</li>
+<li>Alex Milowski, Veo Systems, Inc</li>
+<li>Makota Murata, Fuji Xerox</li>
+<li>Miles O'Reilly, Microstar Software, Ltd</li>
+<li>Matt Timmermans, Microstar Software, Ltd</li>
+<li>Richard Rivello, NIST</li>
+<li>Lynne Rosenthal, NIST</li>
+<li>Brian Schellar, Chrystal Software</li>
+<li>Bill Smith, Sun Microsystems</li>
+<li>Trevor Veary, Software AG</li>
+<li>Richard Tobin, University of Edinburgh</li>
+<li>Jonathan Marsh, Microsoft </li>
+<li>Daniel Veillard, Imaq</li>
+<li>Jonathan Marsh, Microsoft</li>
+<li>Paul Grosso, Arbortext</li>
+</ul>
+<p>End</p>
+</body>
+</html>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20031030.htm b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20031030.htm
new file mode 100644
index 0000000000..5b83c2a327
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf-20031030.htm
@@ -0,0 +1,54207 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title> XML Conformance Tests </title>
+<meta content="text/html;charset=utf-8" http-equiv="Content-Type"/>
+<style xml:space="preserve" type="text/css">
+
+ tr.premiere { background-color: #BEDCE6; }
+
+ th { text-align: left; vertical-align: top }
+
+ .editor { color: red; }
+
+ .countdown { color: white; background-color: red; }
+
+ blockquote, q { font-family: Arial, Helvetica, sans-serif; }
+
+ .quote { font-family: Arial, Helvetica, sans-serif; }
+
+ pre.quote { margin-left: 2.5em; }
+
+ ol.quote { font-family: Arial, Helvetica, sans-serif; margin-left: 3em; }
+
+ .diff-add { background-color: yellow; }
+
+ .diff-chg { background-color: lime; }
+
+ .diff-del { text-decoration: line-through; }
+
+ </style>
+</head>
+<body bgcolor="#ffffff">
+<p>
+<a href="http://www.w3.org/" shape="rect">
+<img src="http://www.w3.org/Icons/WWW/w3c_home" alt="W3C" height="48" width="72" border="0"/>
+</a>
+<a shape="rect" rel="in-domain" href="http://www.w3.org/Architecture/">
+<img border="0" alt="Architecture Domain" src="http://www.w3.org/Icons/arch"/>
+</a>
+<a shape="rect" rel="in-area" href="../"> XML</a> | <a shape="rect" href="/Member/#confidential">Member-Confidential!</a>
+</p>
+<h1 align="center">XML W3C Conformance Test Suite</h1>
+<h1 align="center">30 October 2003</h1>
+<dl>
+<dt>
+<b>This version:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<p>
+<a href="xmlconf-20031030.htm" shape="rect">
+ http://www.w3.org/XML/Test/xmlconf-20031030.htm</a>
+</p>
+</li>
+</ul>
+</dd>
+<dt>
+<b>Current Version:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<p>
+<a href="xmlconf-20031030.htm" shape="rect">
+ http://www.w3.org/XML/Test/xmlconf-20031030.htm</a>
+</p>
+</li>
+</ul>
+</dd>
+<dt>
+<b>Previous Version:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<p>
+<a href="xmlconf-20020606.htm" shape="rect">
+ http://www.w3.org/XML/Test/xmlconf-20020606.htm</a>
+</p>
+</li>
+</ul>
+</dd>
+<dt>
+<b>Test Archive:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<p>
+<a href="xmlts20031030.zip" shape="rect">http://www.w3.org/XML/Test/xmlts20031030.zip</a>
+</p>
+</li>
+<li>
+<p>
+<a href="xmlts20031030.tar" shape="rect">http://www.w3.org/XML/Test/xmlts20031030.tar</a>
+</p>
+</li>
+</ul>
+</dd>
+<dt>
+<b>W3C XML Core Working Group:</b>
+</dt>
+<dd>
+<ul>
+<li>
+<p>
+<a shape="rect" href="http://www.w3.org/XML/Group/Core">http://www.w3.org/XML/Group/Core</a>
+</p>
+</li>
+</ul>
+</dd>
+<dt>
+<b>Comments:</b>
+</dt>
+<dd>
+<ul>
+<li>Sandra I. Martinez, NIST <a shape="rect" href="mailto:public-xml-testsuite@w3.org"> public-xml-testsuite@w3.org</a>
+</li>
+</ul>
+</dd>
+</dl>
+<a shape="rect" name="contents"/>
+<h2>Table of Contents</h2>
+<ol>
+<li>
+<a shape="rect" href="#intro">Introduction</a>
+</li>
+<li>
+<a shape="rect" href="#matrix">Test Matrix</a>
+</li>
+<ol>
+<li>
+<a shape="rect" href="#binary">Binary Tests</a>
+</li>
+<li>
+<a shape="rect" href="#output">Output Tests</a>
+</li>
+</ol>
+<li>
+<a shape="rect" href="#listings">Test Case Descriptions</a>
+</li>
+<ol>
+<li>
+<a shape="rect" href="#valid">Valid Documents</a>
+</li>
+<li>
+<a shape="rect" href="#invalid">Invalid Documents</a>
+</li>
+<li>
+<a shape="rect" href="#not-wf">Not-WF Documents</a>
+</li>
+<li>
+<a shape="rect" href="#error">Optional Errors</a>
+</li>
+</ol>
+<li>
+<a shape="rect" href="#contrib">Contributors</a>
+</li>
+</ol>
+<a shape="rect" name="intro"/>
+<h2>1. Introduction </h2>
+<p>
+ The tests described in this document provide an initial set of metrics to determine how well a
+ particular implementation conforms to the following recommendations:
+ <a shape="rect" href="http://www.w3.org/TR/REC-xml">W3C XML
+ 1.0 (Second Edition) Recommendation</a>,
+ <a shape="rect" href="http://www.w3.org/XML/Group/2003/09/PER-xml-20030911">
+ Extensible Markup Language (XML) 1.0 (Third Edition)</a>,
+ <a shape="rect" href="http://www.w3.org/XML/Group/2003/10/PR-xml11-20031010/Overview.html">Extensible Markup Language (XML) 1.1 (First Edition)</a>,
+ and <a shape="rect" href="http://www.w3.org/XML/Group/2003/05/PR-xml-names11/">Namespaces in XML 1.1</a>.
+ The report properly identify the tests associated to each recommendation.
+ All interpretations of these Recommendations are subject to confirmation by the
+ <a shape="rect" href="http://www.w3.org/XML/">
+ W3C XML Group </a>.
+ </p>
+<p>
+ Conformance tests can be used by developers, content creators, and
+ users alike to increase their level of confidence in product quality. In
+ circumstances where interoperability is necessary, these tests can also
+ be used to determine that differing implementations support the same set
+ of features. </p>
+<p>The XML Test Suite was transferred from OASIS to W3C and is being augmented to reflect the
+ current work of the W3C XML Core Working Group,
+ This report provides supporting documentation for all the tests included in
+ the test suite. Sources from which these tests have been collected
+ include: <em>James Clark XMLTEST cases, 18-Nov-1998; Fuji Xerox Japanese Text Tests; Sun Microsystems XML Tests; OASIS/NIST TESTS, 1-Nov-1998; IBM XML Tests; Richard Tobin's XML test suite; </em>. </p>
+<a shape="rect" name="matrix"/>
+<h2>2. Test Matrix </h2>
+<p> Two basic types of test are presented here. These are
+ respectively <em>
+<a shape="rect" href="#binary">Binary Tests</a>
+</em>
+ and <em>
+<a shape="rect" href="#output">Output Tests</a>
+</em>. </p>
+<a shape="rect" name="binary"/>
+<h3>2.1 Binary Tests </h3>
+<p>
+<em>Binary</em> conformance tests are documents which
+ are grouped into one of four categories. Given a document
+ in a given category, each kind of XML parser must treat it
+ consistently and either accept it (a <em>positive test</em>)
+ or reject it (a <em>negative test</em>). It is in that sense
+ that the tests are termed "binary". The XML 1.0 (Second Edition) Recommendation
+ talks in terms of two types of XML processor:
+ <em>validating</em> ones, and <em>nonvalidating</em> ones.
+ There are two differences between these types of processors: </p>
+<ol>
+<li> Validating processors check special productions that
+ nonvalidating parsers don't, called <em>validity
+ constraints</em>. (Both must check a basic set of productions,
+ requiring XML documents to be <em>well formed</em>.) </li>
+<li> Nonvalidating processors are permitted to not
+ include <em>external entities</em>, such as files with
+ text. Accordingly, they may not report errors which
+ would have been detected had those entities been read.</li>
+</ol>
+<p> There are two types of such entity, <em>parameter
+ entities</em> holding definitions which affect validation
+ and other processing; and <em>general entities</em> which
+ hold marked up text. It will be appreciated that there are
+ then five kinds of XML processor: validating processors,
+ and four kinds of nonvalidating processor based on the
+ combinations of external entity which they include.</p>
+<center>
+<table cellpadding="4" bgcolor="#ffffff" border="1">
+<caption>
+<b>Basic XML Parsing Test Matrix</b>
+<br clear="none"/>
+ Test Document Type v. Parser Type
+ </caption>
+<tr bgcolor="#ffffcc">
+<th colspan="1" rowspan="2" widthH="5%"> </th>
+<th rowspan="1" colspan="2" widthH="20%">Nonvalidating</th>
+<th colspan="1" rowspan="2" widthH="5%">Validating</th>
+</tr>
+<tr bgcolor="#ffffcc">
+<th colspan="1" rowspan="1">External Entities<br clear="none"/>Ignored (3 cases)</th>
+<th colspan="1" rowspan="1">External Entities<br clear="none"/>Read</th>
+</tr>
+<tr>
+<th colspan="1" rowspan="1" bgcolor="#ffffcc">Valid Documents</th>
+<td colspan="1" rowspan="1" align="center">
+<b>accept</b>
+</td>
+<td colspan="1" rowspan="1" align="center">
+<b>accept</b>
+</td>
+<td colspan="1" rowspan="1" align="center">
+<b>accept</b>
+</td>
+</tr>
+<tr>
+<th colspan="1" rowspan="1" bgcolor="#ffffcc">Invalid Documents</th>
+<td colspan="1" rowspan="1" align="center">
+<b>accept</b>
+</td>
+<td colspan="1" rowspan="1" align="center">
+<b>accept</b>
+</td>
+<td colspan="1" rowspan="1" align="center">reject</td>
+</tr>
+<tr>
+<th colspan="1" rowspan="1" bgcolor="#ffffcc">Non-WF Documents</th>
+<td colspan="1" rowspan="1" align="center">reject</td>
+<td colspan="1" rowspan="1" align="center">reject</td>
+<td colspan="1" rowspan="1" align="center">reject</td>
+</tr>
+<tr>
+<th colspan="1" rowspan="1" bgcolor="#ffffcc">WF Errors tied<br clear="none"/>
+ to External Entity</th>
+<td colspan="1" rowspan="1" align="center">
+<b>accept</b>
+<br clear="none"/>(varies)</td>
+<td colspan="1" rowspan="1" align="center">reject</td>
+<td colspan="1" rowspan="1" align="center">reject</td>
+</tr>
+<tr>
+<th colspan="1" rowspan="1" bgcolor="#ffffcc">Documents with<br clear="none"/> Optional Errors</th>
+<td colspan="1" rowspan="1" align="center">(not specified)</td>
+<td colspan="1" rowspan="1" align="center">(not specified)</td>
+<td colspan="1" rowspan="1" align="center">(not specified)</td>
+</tr>
+</table>
+</center>
+<p> At this time, the XML community primarily uses parsers
+ which are in the rightmost two columns of this table, calling
+ them <em>Well Formed XML Parsers</em> (or "WF Parsers") and
+ <em>Validating XML Parsers</em>. A second test matrix
+ could be defined to address the variations in the types of
+ of XML processor which do not read all external entities.
+ That additional matrix is not provided here at this time. </p>
+<a shape="rect" name="output"/>
+<h3>2.2 Output Tests</h3>
+<p> The XML 1.0 (Second Edition) Recommendation places a number of requirements
+ on XML processors, to ensure that they report information to
+ applications as needed. Such requirements are testable.
+ Validating processors are required to report slightly more
+ information than nonvalidating ones, so some tests will
+ require separate output files. Some of the information that
+ must be reported will not be reportable without reading all
+ the external entities in a particular test. Many of the tests for
+ valid documents are paired with an output file as the canonical
+ representation of the input file, to ensure that the XML
+ processor provides the correct information. </p>
+<a shape="rect" name="listings"/>
+<h2>3. Test Case Descriptions</h2>
+<p> This section of this report contains descriptions of test
+ cases, each of which fits into the categories noted above.
+ Each test case includes a document of one of the types in the
+ binary test matrix above (e.g. valid or invalid documents).
+ </p>
+<p> In some cases, an <a shape="rect" href="#output">output file </a>, as
+ described in Section 2.2, will also be associated with
+ a valid document, which is used for output testing. If such
+ a file exists, it will be noted at the end of the description
+ of the input document. </p>
+<p> The description for each test case is presented as a two
+ part table. The right part describes what the test does.
+ This description is intended to have enough detail to evaluate
+ diagnostic messages. The left part includes: <ul>
+<li> An entry describing the <em>Sections and/or Rules</em>
+ from the <a shape="rect" href="http://www.w3.org/TR/2000/REC-xml-20001006">
+ XML 1.0 (Second Edition) Recommendation</a> which this case excercises.</li>
+<li> The unique <em>Test ID</em> within a given <em>Collection</em>
+ for this test. </li>
+<li> The <em>Collection</em> from which this test originated.
+ Given the <em>Test ID</em> and the <em>Collection</em>, each
+ test can be uniquely identified.</li>
+<li> Some tests may have a field identifying the kinds of
+ external <em>Entities</em> a nonvalidating processor must
+ include (parameter, general, or both) to be able to
+ detect any errors in that test case. </li>
+</ul>
+</p>
+<a shape="rect" name="valid"/>
+<h3>3.1 Valid XML Documents</h3>
+<p> All conforming <em> XML 1.0 Processors </em> are
+ <b>required</b> to accept valid documents, reporting no
+ errors. In this section of this test report are found
+ descriptions of test cases which fit into this category. </p><table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-007</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace inequality test: different capitalization
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-008</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace inequality test: different escaping
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace name test: a perfectly good http URI
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace name test: a syntactically plausible URI with a
+fictitious scheme
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace name test: a perfectly good http URI with a fragment
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P01-ibm01v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 1</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests with a xml document consisting of <em>prolog</em> followed by
+ <em>element</em> then <em>Misc</em>
+
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns11-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NS1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.1 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace name test: a perfectly good http IRI that is not a URI
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns11-006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NS1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.1 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Test whether non-Latin-1 characters are accepted in IRIs, and whether
+they are correctly distinguished
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-084</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that although whitespace can be used to set apart markup for greater readability it is not necessary. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-093</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace is not intended for inclusion in the delivered version of the document. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-116</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that a line break within CDATA will be normalized. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A combination of carriage return line feed in an external entity must
+ be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-004</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-009</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P03-ibm03v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The two character sequence #x0D #x85 in an external entity must be normalized to a
+ single newline.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P03-ibm03v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The single character sequence #x85 in an external entity must be normalized to a
+ single newline.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P03-ibm03v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The two character sequence #x0D #x85 in an external entity must be normalized to a
+ single newline.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P03-ibm03v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The single character sequence #x85 in an external entity must be normalized to a
+ single newline.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P03-ibm03v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The two character sequence #x0D #x85 in a document entity must be normalized to a
+ single newline.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P03-ibm03v06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The single character sequence #x85 in a document entity must be normalized to a
+ single newline.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P03-ibm03v07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The single character sequence #x2028 in a document entity must be normalized to a
+ single newline.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P03-ibm03v08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The single character sequence #x85 in the XMLDecl must be normalized to a
+ single newline.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P03-ibm03v09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The single character sequence #x2028 in the XMLDecl must be normalized to a
+ single newline. (This test is questionable)
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-022</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has a NEL character; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-023</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has a NEL character; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-024</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has an LSEP character; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-025</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has an LSEP character; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-026</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has CR-NEL; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-027</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has CR-NEL; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-028</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has CR-LSEP; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1.
+Note that CR and LSEP are not combined into a single LF
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-029</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has CR-LSEP; legal in both XML 1.0 and 1.1, but different
+canonical output because of normalization in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-031</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has a NEL character in an NMTOKENS attribute; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-033</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has an LSEP character in an NMTOKENS attribute; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-047</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has a NEL character in element content whitespace; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-049</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+has an LSEP character in element content whitespace; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11, 3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-108</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This tests normalization of end-of-line characters (CRLF)
+ within entities to LF, primarily as an output test. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11, 4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-068</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests definition of an internal entity holding a carriage return character
+ reference, which must not be normalized before reporting to the application. Line
+ break normalization only occurs when parsing external parsed entities.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11 3.2.1 3.2.2 4.2.2 [48] [51] [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of optional character and content particles within mixed element content. The test also shows the use of an external entity and that a carriage control line feed in an external entity must be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11 4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-011</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of a public identifier with and external entity.
+The test also show that a carriage control line feed combination in an external
+entity must be normalized to a single newline. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P33-ibm33v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 33</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests LanguageID with Langcode - Subcode
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P34-ibm34v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 34</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Duplicate Test as ibm33v01.xml
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P35-ibm35v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 35</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ISO639Code
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P36-ibm36v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 36</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests IanaCode
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P37-ibm37v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 37</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests UserCode
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P38-ibm38v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 38</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SubCode
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12 [35]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-lang01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a lowercase ISO language code.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12 [35]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-lang02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a ISO language code with a subcode.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12 [35]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-lang05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an uppercase ISO language code.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12 [36]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-lang03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a IANA language code with a subcode.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12 [37]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-lang04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a user language code with a subcode.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.12 [37]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-lang06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a user language code.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P02-ibm02v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers legal character ranges plus discrete legal characters for production 02.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P02-ibm02v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers legal character ranges plus discrete legal characters
+ for production 02 of the XML1.1 sepcification.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-010</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains a C1 control, legal in XML 1.0, illegal in XML 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-012</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains a DEL, legal in XML 1.0, illegal in XML 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-040</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains a C1 control character (partial line up), legal in
+XML 1.0 but not 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P02-ibm02v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers control characters x1 to x1F and x7F to x9F
+ which should only appear as character references.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P02-ibm02v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers control characters x1 to x1F and x7F to x9F
+ which appear as character references as an entity's replacement text.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P02-ibm02v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case contains embeded whitespace characters
+ some form the range 1 - 1F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P02-ibm02v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case contains valid char references that match the char production.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P02-ibm02v06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case contains valid char references in the CDATA section, comment and
+ processing instruction of an external entity that match the char production.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ various Misc items where they can occur
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-049</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that characters outside of normal ascii range can be used as element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-050</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that characters outside of normal ascii range can be used as element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-051</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The document is encoded in UTF-16 and uses some name
+ characters well outside of the normal ASCII range.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-052</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The document is encoded in UTF-8 and the text inside the
+ root element uses two non-ASCII characters, encoded in UTF-8
+ and each of which expands to a Unicode surrogate pair.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P03-ibm03v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all 4 legal white space characters - #x20 #x9 #xD #xA
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P09-ibm09v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Empty EntityValue is legal
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P09-ibm09v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a normal EnitityValue
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P09-ibm09v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EnitityValue referencing a Parameter Entity
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P09-ibm09v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EnitityValue referencing a General Entity
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P09-ibm09v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EnitityValue with combination of GE, PE and text, the GE used is
+ declared in the student.dtd
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty AttValue with double quotes as the delimiters
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty AttValue with single quotes as the delimiters
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test AttValue with double quotes as the delimiters and single quote inside
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test AttValue with single quotes as the delimiters and double quote inside
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test AttValue with a GE reference and double quotes as the delimiters
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test AttValue with a GE reference and single quotes as the delimiters
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ testing AttValue with mixed references and text content in double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P10-ibm10v08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ testing AttValue with mixed references and text content in single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P11-ibm11v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty systemliteral using the double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P11-ibm11v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty systemliteral using the single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P11-ibm11v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests regular systemliteral using the single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P11-ibm11v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests regular systemliteral using the double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P12-ibm12v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty systemliteral using the double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P12-ibm12v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty systemliteral using the single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P12-ibm12v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests regular systemliteral using the double quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P12-ibm12v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests regular systemliteral using the single quotes
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P13-ibm13v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 13</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Testing PubidChar with all legal PubidChar in a PubidLiteral
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P04-ibm04v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers legal NameStartChars character ranges plus discrete legal
+ characters for production 04.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P04-ibm04av01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers legal NameChars character ranges plus discrete legal
+ characters for production 04a.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P05-ibm05v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers legal Element Names as per production 5.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P05-ibm05v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers legal PITarget (Names) as per production 5.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P05-ibm05v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers legal Attribute (Names) as per production 5.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P05-ibm05v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers legal ID/IDREF (Names) as per production 5.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P05-ibm05v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers legal ENTITY (Names) as per production 5.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P047-ibm07v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 7</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers legal NMTOKEN Name character ranges plus discrete legal
+ characters for production 7.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns11-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NS1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.1 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace inequality test: different escaping of non-ascii letter
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-034</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has an NMTOKENS attribute containing a CR character that comes from a
+character reference in an internal entity. Because CR is in the
+S production, this is valid in both XML 1.0 and 1.1.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-035</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has an NMTOKENS attribute containing a CR character that comes from a
+character reference in an internal entity. Because CR is in the
+S production, this is valid in both XML 1.0 and 1.1.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-050</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has element content whitespace containing a CR character that comes from
+a character reference in an internal entity. Because CR is in the
+S production, this is valid in both XML 1.0 and 1.1.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-051</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has element content whitespace containing a CR character that comes from
+a character reference in an internal entity. Because CR is in the
+S production, this is valid in both XML 1.0 and 1.1.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-100</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Makes sure that PUBLIC identifiers may have some strange
+ characters. <em>NOTE: The XML editors have said that the XML
+ specification errata will specify that parameter entity expansion
+ does not occur in PUBLIC identifiers, so that the '%' character
+ will not flag a malformed parameter entity reference.</em>
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid public IDs.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-012</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Uses a legal XML 1.0 name consisting of a single colon
+ character (disallowed by the latest XML Namespaces draft).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-063</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The document is encoded in UTF-8 and the name of the
+ root element type uses non-ASCII characters. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [6]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p06pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ various satisfactions of the Names production in a NAMES
+ attribute
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [7]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p07pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ various valid Nmtoken 's in an attribute list declaration.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [8]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p08pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ various satisfaction of an NMTOKENS attribute value.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p09pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid EntityValue's. Except for entity references,
+ markup is not recognized.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 2.10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-092</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demostrates that extra whitespace is normalized into a single space character. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 3.1 [10][40][41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-109</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an attribute can have a null value. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 3.1 [13] [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-013</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that the Attribute in a Start-tag can consist of numerals along with special characters. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 3.1 [13] [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-014</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that all lower case letters are valid for the Attribute in a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 3.1 [13] [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-015</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that all upper case letters are valid for the Attribute in a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-009</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that PubidChar can be used for element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 4.1 [10] [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-023</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of a parameter entity reference within an attribute list declaration.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P14-ibm14v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Testing CharData with empty string
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P14-ibm14v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Testing CharData with white space character
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P14-ibm14v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Testing CharData with a general text string
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 2.5 2.6 2.7 [15] [16] [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p43pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid use of character data, comments, processing instructions and CDATA sections within the start and end tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 3.1 [14] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-048</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that character data is valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-008</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates character references can be used for element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-119</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comments may contain any legal XML characters;
+ only the string "--" is disallowed.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P15-ibm15v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests empty comment
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P15-ibm15v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment with regular text
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P15-ibm15v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment with one dash inside
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P15-ibm15v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment with more comprehensive content
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comments don't get parameter entity expansion</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 3.1 [15] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-021</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that comments are valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 3.1 [15] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-022</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that comments are valid element content and that all characters before the double-hypen right angle combination are considered part of thecomment. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P16-ibm16v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI definition with only PItarget name and nothing else
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P16-ibm16v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI definition with only PItarget name and a white space
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P16-ibm16v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI definition with PItarget name and text that contains
+ question mark and right angle
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P17-ibm17v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PITarget name
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-037</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid comment and that it may appear anywhere in the document including at the end. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-038</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid comment and that it may appear anywhere in the document including the beginning. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-036</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid processing instruction. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-039</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid processing instruction and that it may appear at the beginning of the document. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 2.10 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-055</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace within a processing instruction willnormalized into s single space character. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 2.10 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-098</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace within a processing instruction is converted into a single space character.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 3.1 [16] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-016</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that Processing Instructions are valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 3.1 [16] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-017</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that Processing Instructions are valid element content and there can be more than one. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-031</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Expands a general entity which contains a CDATA section with
+ what looks like a markup declaration (but is just text since
+ it's in a CDATA section).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P18-ibm18v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 18</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDSect with CDStart CData CDEnd
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P19-ibm19v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 19</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDStart
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P20-ibm20v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 20</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDATA with empty string
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P20-ibm20v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 20</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDATA with regular content
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P21-ibm21v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 21</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDEnd
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [20]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-114</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that all text within a valid CDATA section is considered text and not recognized as markup. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 3.1 [18] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-018</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that CDATA sections are valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 3.1 [18] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-019</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that CDATA sections are valid element content and that
+ampersands may occur in their literal form. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 3.1 [18] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-020</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstractes that CDATA sections are valid element content and that
+everyting between the CDStart and CDEnd is recognized as character data not markup. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-094</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute defaults with a DTD have special parsing rules, different
+ from other strings. That means that characters found there may look
+ like an undefined parameter entity reference "within a markup
+ declaration", but they aren't ... so they can't be violating
+ the <em>PEs in Internal Subset</em> WFC.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pe01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter entities references are NOT RECOGNIZED in default attribute
+ values.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with XMLDecl and doctypedecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with doctypedecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with Misc doctypedecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with doctypedecl Misc
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with XMLDecl Misc doctypedecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with XMLDecl doctypedecl Misc
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P22-ibm22v07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with XMLDecl Misc doctypedecl Misc
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P23-ibm23v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo only
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P23-ibm23v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo EncodingDecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P23-ibm23v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo SDDecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P23-ibm23v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VerstionInfo and a trailing whitespace char
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P23-ibm23v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo EncodingDecl SDDecl
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P23-ibm23v06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with VersionInfo EncodingDecl SDDecl and a trailing whitespace
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P24-ibm24v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with single quote
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P24-ibm24v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with double quote
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P25-ibm25v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EQ with =
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P25-ibm25v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EQ with = and spaces on both sides
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P25-ibm25v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EQ with = and space in front of it
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P25-ibm25v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EQ with = and space after it
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P26-ibm26v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 26</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionNum 1.0
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P27-ibm27v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 27</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Misc with comment
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P27-ibm27v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 27</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Misc with PI
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P27-ibm27v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 27</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Misc with white spaces
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P28-ibm28v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with internal DTD only
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P28-ibm28v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with external subset and combinations of different markup
+ declarations and PEReferences
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P29-ibm29v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests markupdecl with combinations of elementdecl, AttlistDecl,EntityDecl,
+ NotationDecl, PI and comment
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P29-ibm29v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC: PE in internal subset as a positive test
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P30-ibm30v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 30</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extSubset with extSubsetDecl only in the dtd file
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P30-ibm30v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 30</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extSubset with TextDecl and extSubsetDecl in the dtd file
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P31-ibm31v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 31</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extSubsetDecl with combinations of markupdecls, conditionalSects,
+ PEReferences and white spaces
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8, 4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-024</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Constructs an &lt;!ATTLIST...&gt; declaration from several PEs.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML decl and doctypedecl
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22pass5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ just doctypedecl
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22pass6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S between decls is not required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-033</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that both a EncodingDecl and SDDecl are valid within the prolog. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-028</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid prolog that uses double quotes as delimeters around the VersionNum. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-029</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid prolog that uses single quotes as delimters around the VersionNum. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [25]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-030</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid prolog that contains whitespace on both sides of the equal sign in the VersionInfo. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [29]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p29pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid types of markupdecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [31]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p31pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ external subset can be empty
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 3.4 4.2.2 [31] [62] [63] [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p31pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with EXternalID as Enternal Entity. The external entity contains a parameter entity reference and condtional sections.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.1 [28] [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p28pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with Parameter entity reference. The declaration of a parameter entity must precede any reference to it. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.1 [28] [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p28pass5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with ExternalID as an External Entity. A parameter entity reference is also used. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.2.2 [28] [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p28pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with ExternalID as an External Entity declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.2.2 [30] [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p30pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with ExternalID as an External Entity. The external entity has an element declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.2.2 4.3.1 [30] [75] [77]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p30pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid doctypedecl with ExternalID as an Enternal Entity. The external entity begins with a Text Declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Second-level external general entity has later version number than
+first-level, but not later than document, so not an error.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-007</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+A vanilla XML 1.1 document
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-sa01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A non-standalone document is valid if declared as such.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-sa02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A non-standalone document is valid if declared as such.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-sa03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A non-standalone document is valid if declared as such.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-sa04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A non-standalone document is valid if declared as such. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P32-ibm32v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC: Standalone Document Declaration with absent attribute that
+ has default value and standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P32-ibm32v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC: Standalone Document Declaration with external entity reference
+ and standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P32-ibm32v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC: Standalone Document Declaration with attribute values that need
+ to be normalized and standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P32-ibm32v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC: Standalone Document Declaration with whitespace in mixed content
+ and standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-032</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid SDDecl within the prolog. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sa01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A document may be marked 'standalone' if any optional
+ whitespace is defined within the internal DTD subset.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sa02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A document may be marked 'standalone' if any
+ attributes that need normalization are
+ defined within the internal DTD subset.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sa03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A document may be marked 'standalone' if any
+ the defined entities need expanding are internal,
+ and no attributes need defaulting or normalization.
+ On output, requires notations to be correctly reported.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sa04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Like sa03 but relies on attribute
+ defaulting defined in the internal subset.
+ On output, requires notations to be correctly reported.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sa05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Like sa01 but this document is standalone
+ since it has no optional whitespace.
+ On output, requires notations to be correctly reported.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">element</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests clauses 1, 3, and 4 of the Element Valid
+ validity constraint.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P39-ibm39v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with EmptyElemTag and STag content Etag, also tests the
+ VC: Element Valid with elements that have children, Mixed and ANY
+ contents
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P40-ibm40v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests STag with possible combinations of its fields, also tests WFC:
+ Unique Att Spec.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P41-ibm41v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with Name Eq AttValue and VC: Attribute Value Type
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P42-ibm42v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ETag with possible combinations of its fields
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P43-ibm43v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests content with all possible constructs: element, CharData, Reference,
+ CDSect, Comment
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P44-ibm44v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag with possible combinations of its fields
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is permitted after the tag name in a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid attribute specification within a Start-tag that
+contains whitespace on both sides of the equal sign. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-010</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is valid after the Attribute in a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-011</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates mutliple Attibutes within the Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-104</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace within an Attribute of a Start-tag is normalized to a single space character. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40] [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-054</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace within Start-tags and End-tags are nomalized into single spaces. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-004</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid attribute specification within a Start-tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that the AttValue within a Start-tag can use a single quote as a delimter. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is permitted after the tag name in an End-tag.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-023</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that Entity References are valid element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-047</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace is normalized into single space character. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43] [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p28pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Empty-element tag must be used for element which are declared EMPTY. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-034</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the correct syntax for an Empty element tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-035</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is permissible after the name in an Empty element tag. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-044</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that the empty-element tag must be use for an elements that are declared EMPTY. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 4.1 [43] [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-024</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that Entity References are valid element content and also demonstrates a valid Entity Declaration. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 4.1 [43] [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that the content of an element can be empty. In this case the external entity is an empty file. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 4.6 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-007</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates numeric character references can be used for element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P45-ibm45v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests both P45 elementDecl and P46 contentspec with possible combinations
+ of their constructs
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P47-ibm47v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all possible children,cp,choice,seq patterns in P47,P48,P49,P50
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P49-ibm49v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC:Proper Group/PE Nesting with PEs of choices that are properly nested
+ with parenthesized groups in external subsets
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P50-ibm50v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC:Proper Group/PE Nesting with PEs of seq that are properly nested
+ with parenthesized groups in external subsets
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-057</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an element content model whose element can occur zero or more times. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48][49]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-112</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates shows the use of content particles within the element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [50]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-081</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the optional character following a name or list to govern the number of times an element or content particles in the list occur. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 4.2.2 [48] [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of optional character and content particles within an element content. The test also show the use of external entity. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P51-ibm51v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with possible combinations of its fields amd VC: No
+ Duplicate Types
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P51-ibm51v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VC:Proper Group/PE Nesting with PEs of Mixed that are properly nested
+ with parenthesized groups in external subsets
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration with Mixed Content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd00</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests parsing of alternative forms of text-only mixed
+ content declaration.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid Mixed contentspec's.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p45pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid element declarations
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-025</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration and that the contentspec can be of mixed content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-026</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration and that EMPTY is a valid contentspec. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-027</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration and that ANY is a valid contenspec. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 3.2.1 [45] [46] [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p48pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, choices, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 3.2.1 [45] [46] [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p49pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, choices, and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Whitespace is also valid between choices. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 3.2.1 [45] [46] [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p50pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. Whitespace is also valid between sequences. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 3.2.1 [45] [46] [47] </td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p47pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, choices, sequences and content particles within an element type declaration. The optional character following a name or list governs the number of times the element or content particle may appear. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 3.2.1 3.2.2 [45] [46] [47] [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid use of contentspec, element content models, and mixed content within an element type declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 3.3 [46] [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-059</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Element Type Declaration that uses the contentspec of EMPTY. The element cannot have any contents and must always appear as an empty element in the document. The test also shows an Attribute-list declaration with multiple AttDef's. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-043</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An element's attributes may be declared before its content
+ model; and attribute values may contain newlines. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-097</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Basically an output test, this tests whether an externally
+ defined attribute declaration (with a default) takes proper
+ precedence over a subsequent internal declaration.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P52-ibm52v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all AttlistDecl and AttDef Patterns in P52 and P53
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-076</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Verifies that an XML parser will parse a NOTATION
+ attribute; the output phase of this test ensures that
+ both notations are reported to the application. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-090</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Verifies that an XML parser will parse a NOTATION
+ attribute; the output phase of this test ensures that
+ the notation is reported to the application. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-091</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Verifies that an XML parser will parse an ENTITY
+ attribute; the output phase of this test ensures that
+ the notation is reported to the application, and for
+ validating parsers it further tests that the entity
+ is so reported.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P54-ibm54v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all AttTypes : StringType, TokenizedTypes, EnumeratedTypes in
+ P55,P56,P57,P58,P59. Also tests all DefaultDecls in P60.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P54-ibm54v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all AttTypes : StringType, TokenizedType, EnumeratedTypes in
+ P55,P56,P57.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P54-ibm54v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttTypes with StringType in P55.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P55-ibm55v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 55</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests StringType for P55. The "CDATA" occurs in the StringType for the
+ attribute "att" for the element "a".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56. The "ID", "IDREF", "IDREFS", "ENTITY",
+ "ENTITIES", "NMTOKEN", and "NMTOKENS" occur in the TokenizedType for the
+ attribute "attr".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: ID Attribute Default. The value "AC1999" is
+ assigned to the ID attribute "attr" with "#REQUIRED" in the DeaultDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: ID Attribute Default. The value "AC1999" is
+ assigned to the ID attribute "attr" with "#IMPLIED" in the DeaultDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: ID. The ID attribute "UniqueName" appears
+ only once in the document.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: One ID per element type. The element "a" or
+ "b" has only one ID attribute.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: IDREF. The IDREF value "AC456" matches the
+ value assigned to an ID attribute "UniqueName".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: IDREF. The IDREFS value "AC456 Q123" matches
+ the values assigned to the ID attribute "UniqueName" and "Uname".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: Entity Name. The value "image" of the ENTITY
+ attribute "sun" matches the name of an unparsed entity declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: Name Token. The value of the NMTOKEN attribute
+ "thistoken" matches the Nmtoken production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P56-ibm56v10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType for P56 VC: Name Token. The value of the NMTOKENS
+ attribute "thistoken" matches the Nmtoken production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P57-ibm57v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 57</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EnumeratedType in the AttType. The attribute "att" has a type (a|b)
+ with the element "a".
+ the
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P58-ibm58v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType for P58. It shows different patterns fro the NOTATION
+ attribute "attr".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P58-ibm58v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType for P58: Notation Attributes. The value "base64" of the
+ NOTATION attribute "attr" matches one of the notation names declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P59-ibm59v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration in the EnumeratedType for P59. It shows different
+ patterns for the Enumeration attribute "attr".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P59-ibm59v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration for P59 VC: Enumeration. The value "one" of the
+ Enumeration attribute "attr" matches one of the element names declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [54]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p54pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ the three kinds of attribute types
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [55]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p55pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ StringType = "CDATA"
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p56pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ the 7 tokenized attribute types
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [57]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p57pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ enumerated types are NMTOKEN or NOTATION lists
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ NOTATION enumeration has on or more items
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-sgml01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML permits token reuse, while SGML does not.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p59pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ NMTOKEN enumerations haveon or more items
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 4.1 [54] [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-041</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 4.1 [54] [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-042</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. The test also shows that the leading zeros in the character reference are ignored. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 4.1 [54] [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-056</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. The test also shows that the leading zeros in the character reference are ignored. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P60-ibm60v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl for P60. It shows different options "#REQUIRED", "#FIXED",
+ "#IMPLIED", and default for the attribute "chapter".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P60-ibm60v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl for P60 VC: Required Attribute. In the element "one" and
+ "two" the value of the #REQUIRED attribute "chapter" is given.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P60-ibm60v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl for P60 VC: Fixed Attribute Default. The value of the
+ #FIXED attribute "chapter" is exactly the same as the default value.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P60-ibm60v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl for P60 VC: Attribute Default Legal. The default value
+ specified for the attribute "attr" meets the lexical constraints of the
+ declared attribute type.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">required00</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the #REQUIRED attribute declaration syntax, and
+ the associated validity constraint. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p60pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ the four types of default values
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-058</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace be normalized into a single space character in an attribute of type NMTOKENS. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-095</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires extra whitespace
+ to be normalized into a single space character in an
+ attribute of type NMTOKENS.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-096</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that extra whitespace is normalized into a single space character in an attribute of type NMTOKENS. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-102</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that a CDATA attribute can pass a double quote as its value. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-103</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an attribute can pass a less than sign as its value. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-105</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires a CDATA attribute
+ with a tab character to be passed through as one space.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-106</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires a CDATA attribute
+ with a newline character to be passed through as one space.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-107</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires a CDATA attribute
+ with a return character to be passed through as one space.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-110</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Basically an output test, this requires that a CDATA
+ attribute with a CRLF be normalized to one space.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-111</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character references expanding to spaces doesn't affect
+ treatment of attributes. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-115</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an entity reference is processed by recursively processing the replacement text of the entity. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-013</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that whitespace is handled by adding a single whitespace to the normalized value in the attribute list. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-045</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests whether more than one definition can be provided for the same attribute of a given element type with the first declaration being binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-046</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more than one AttlistDecl is provided for a given element type, the contents of all those provided are merged. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more than one definition is provided for the same attribute of a given element type only the first declaration is binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-007</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of an Attribute list declaration within an external entity. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-010</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more that one definition is provided for the same attribute of a given element type only the first declaration is binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-026</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more that one definition is provided for the same attribute of a given element type only the first declaration is binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p52pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid AttlistDecls: No AttDef's are required,
+ and the terminating
+ S is optional, multiple ATTLISTS per element are OK, and multiple
+ declarations of the same attribute are OK.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52][53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-113</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that it is not an error to have attributes declared for an element not itself declared.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p53pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a valid AttDef
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [54]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-040</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [54]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-077</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use an EnumeratedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [54]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-078</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that REQUIRED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-071</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use ID as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-072</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use IDREF as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-073</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use IDREFS as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-074</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use ENTITY as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.1 [52] [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-075</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use ENTITIES as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.2 [52] [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-079</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that FIXED is a valid DefaultDecl and that a value can be given to the attribute in the Start-tag as well as the AttListDecl. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 3.3.2 [52] [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-080</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that FIXED is a valid DefaultDecl and that an value can be given to the attribute. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P61-ibm61v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 61</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests conditionalSect for P61. It takes the option "invludeSect" in the file
+ ibm61v01.dtd.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P61-ibm61v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 61</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests conditionalSect for P61. It takes the option "ignoreSect" in the file
+ ibm61v02.dtd.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P62-ibm62v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The white space is not included before the key
+ word "INCLUDE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P62-ibm62v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The white space is not included after the key
+ word "INCLUDE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P62-ibm62v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The white space is included after the key
+ word "INCLUDE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P62-ibm62v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The white space is included before the key
+ word "INCLUDE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P62-ibm62v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect for P62. The extSubsetDecl is not included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P63-ibm63v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The white space is not included before the key
+ word "IGNORE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P63-ibm63v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The white space is not included after the key
+ word "IGNORE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P63-ibm63v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The white space is included after the key
+ word "IGNORE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P63-ibm63v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The ignireSectContents is included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P63-ibm63v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect for P63. The white space is included before and after the
+ key word "IGNORE" in the beginning sequence.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P64-ibm64v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents for P64. One "ignore" field is included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P64-ibm64v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents for P64. Two "ignore" and one "ignoreSectContents"
+ fields are included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P64-ibm64v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents for P64. Four "ignore" and three
+ "ignoreSectContents" fields are included.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P65-ibm65v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 65</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ignore for P65. An empty string occurs in the Ignore filed.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P65-ibm65v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 65</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ignore for P65. An string not including the brackets occurs in each of
+ the Ignore filed.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [61]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p61pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid conditional sections are INCLUDE and IGNORE
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-013</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-014</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. The keyword is a parameter-entity reference. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-016</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. The keyword is a parameter-entity reference.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-028</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-029</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being used. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-030</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being used. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p62pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid INCLUDE sections -- options S before and
+ after keyword, sections can nest
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [63]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-015</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being part of the DTD. The keyword is a parameter-entity reference. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [63]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p63pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid IGNORE sections
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [64]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p64pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ IGNOREd sections ignore everything except section delimiters
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests declarations of "children" content models, and
+ the validity constraints associated with them.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-085</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter and General entities use different namespaces,
+ so there can be an entity of each type with a given name.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P66-ibm66v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all legal CharRef's.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P67-ibm67v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 67</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Reference could be EntityRef or CharRef.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P68-ibm68v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests P68 VC:Entity Declared with Entities in External Subset
+ , standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P68-ibm68v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests P68 VC:Entity Declared with Entities in External Parameter Entities
+ , standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P69-ibm69v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests P68 VC:Entity Declared with Parameter Entities in External Subset
+ , standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P69-ibm69v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests P68 VC:Entity Declared with Parameter Entities in External Parameter
+ Entities, standalone is no
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-043</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains a character reference to a C0 control character (form-feed),
+legal in XML 1.1 but not 1.0
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-044</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains a character reference to a C1 control character (partial line
+up), legal in both XML 1.0 and 1.1 (but for different reasons)
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-045</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains a character reference to a C1 control character (partial line
+up), legal in both XML 1.0 and 1.1 (but for different reasons)
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-060</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of decimal Character References within element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-061</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of decimal Character References within element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-062</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of hexadecimal Character References within element. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-064</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests in-line handling of two legal character references, which
+ each expand to a Unicode surrogate pair.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-066</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Expands a CDATA attribute with a character reference.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-067</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of decimal character references within element content. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-089</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests entity expansion of three legal character references,
+ which each expand to a Unicode surrogate pair.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p68pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid entity references. Also ensures that a charref to
+ '&amp;' isn't interpreted as an entity reference open delimiter
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the expansion of an external parameter entity that declares an attribute. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-004</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Expands an external parameter entity in two different ways,
+ with one of them declaring an attribute.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the expansion of an external parameter entity that declares an attribute. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-027</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a parameter entity reference whose value is NULL. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p69pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid PEReferences.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 4.4.3 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-014</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates use of characters outside of normal ASCII range.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-086</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests whether entities may be declared more than once,
+ with the first declaration being the binding one. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-025</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that when more that one definition is provided for the same entity only the first declaration is binding. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P70-ibm70v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 70</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests all legal GEDecls and PEDecls constructs derived from P70-76
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.1 4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-012</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates both internal and external entities and that processing of entity references may be required to produce the correct replacement text.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of an ExternalID within a document type definition. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of an ExternalID within a document type definition. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-008</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an external identifier may include a public identifier. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-009</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that an external identifier may include a public identifier. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-018</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an EnternalID whose contents contain an parameter entity declaration and a attribute list definition. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p76pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid NDataDecls
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 4.3.3. 4.4.3 [75] [80]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-008</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p> Test demonstrates the use of external
+entity and how replacement text is retrieved and processed. Also tests the use of an
+EncodingDecl of UTF-16.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 4.4.3 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-ext-sa-007</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the use of external entity and how replacement
+text is retrieved and processed. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [70]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p70pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An EntityDecl is either a GEDecl or a PEDecl
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p71pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid GEDecls
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-082</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests that an external PE may be defined (but not referenced).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-083</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests that an external PE may be defined (but not referenced).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-017</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a parameter entity declaration that contains an attribute list declaration. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-021</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a parameter entity declaration that contains a partial attribute list declaration. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p72pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid PEDecls
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p73pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ EntityDef is either Entity value or an external id,
+ with an optional NDataDecl
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 4.2.1 [72] [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-011</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a parameter entity declaration whose parameter entity definition is an ExternalID. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1 [77]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-012</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates an enternal parsed entity that begins with a text declaration. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1 4.3.2 [77] [78]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ext01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests use of external parsed entities with and without content.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P78-ibm78v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 78</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExtParsedEnt, also TextDecl in P77 and EncodingDecl in P80
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P79-ibm79v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 79</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extPE
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-054</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains a character reference to a C0 control character (form-feed)
+in an entity value. This will be legal (in XML 1.1) when the entity
+declaration is parsed, but what about when it is used? According to
+the grammar in the CR spec, it should be illegal (because the
+replacement text must match "content"), but this is probably not
+intended. This will be fixed in the PR version.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2 [78]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ext02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests use of external parsed entities with different
+ encodings than the base document.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pr-xml-little</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for little-endian UTF-16 text
+ which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pr-xml-utf-16</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support UTF-16 text which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pr-xml-utf-8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for UTF-8 text which relies on Japanese characters.
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">weekly-little</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for little-endian UTF-16 encoding, and
+ XML names which contain Japanese characters.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">weekly-utf-16</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for UTF-16 encoding, and
+ XML names which contain Japanese characters.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">weekly-utf-8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for UTF-8 encoding and
+ XML names which contain Japanese characters.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [80]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-031</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates a valid EncodingDecl within the prolog. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-099</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates the name of the encoding can be composed of lowercase characters. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ DTD is 1.0. The character #xD7 which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ DTD is 1.0. The character #x1FFF which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ DTD is 1.0. The character #xF901 which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ entity is 1.0. The character #xD7 which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ entity is 1.0. The character #x1FFF which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 whereas the VersionNum of the external
+ entity is 1.0. The character #xF901 which is a valid XML 1.1 but an invalid XML 1.0
+ character is present in both documents.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document and external dtd is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #xD7.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document and external dtd is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #x1FFF.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document and external dtd is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #xF901.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document and external entity is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #xD7.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document and external entity is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #x1FFF.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document and external entity is 1.1 and both contain the
+ valid XML1.1 but invalid XML1.0 character #xF901.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 but the external dtd does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #xD7.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 but the external dtd does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #x1FFF.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 but the external dtd does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #xF901.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 but the external entity does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #xD7.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 but the external entity does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #x1FFF.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 but the external entity does not
+ contain a textDecl and both contain the valid XML1.1 but invalid XML1.0 character
+ #xF901.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v19.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document and external dtd is 1.1. The replacement
+ text of an entity declared in the external DTD contains a reference to the
+ character #x7F. This entity is not referenced in the document entity.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v20.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document and external dtd is 1.1. The replacement
+ text of an entity declared in the external DTD contains a reference to the
+ character #x80. This entity is not referenced in the document entity.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v21.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document and external dtd is 1.1. The replacement
+ text of an entity declared in the external DTD contains a reference to the
+ character #x9F. This entity is not referenced in the document entity.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v22.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document and the external entity is 1.1. The entity contains
+ a reference to the character #x7F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v23.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document and the external entity is 1.1. The entity contains
+ a reference to the character #x80.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v24.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document and the external entity is 1.1. The entity contains
+ a reference to the character #x9F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v25.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ DTD. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x7F, #x8F. This entity is not referenced in the
+ document entity.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v26.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ DTD. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x80, #x90. This entity is not referenced in the
+ document entity.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v27.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ DTD. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x81, #x9F. This entity is not referenced in the
+ document entity.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v28.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ entity. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x7F, #x80, #x9F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v29.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ entity. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x85, #x8F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P77-ibm77v30.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document is 1.1 and the textDecl is missing in the external
+ entity. The replacement text of an entity declared in the external DTD contains a
+ reference to the character #x1, #x7F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-053</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests inclusion of a well-formed internal entity, which
+ holds an element required by the content model.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.4.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-070</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Verifies that internal parameter entities are correctly
+ expanded within the internal subset.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.4.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-019</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that a parameter entity will be expanded with spaces on either side. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.4.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-not-sa-020</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter entities expand with spaces on either side.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-065</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ability to define an internal entity which can't
+ legally be expanded (contains an unquoted <b>&lt;</b>).</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-087</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests whether character references in internal entities are
+ expanded early enough, by relying on correct handling to
+ make the entity be well formed.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-088</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests whether entity references in internal entities are
+ expanded late enough, by relying on correct handling to
+ make the expanded text be valid. (If it's expanded too
+ early, the entity will parse as an element that's not
+ valid in that context.)</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-101</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This tests whether entity expansion is (incorrectly) done
+ while processing entity declarations; if it is, the entity
+ value literal will terminate prematurely.</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-117</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that entity expansion is done while processing entity declarations. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-118</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test demonstrates that entity expansion is done while processing entity declarations. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-pe00</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests construction of internal entity replacement text, using
+ an example in the XML specification. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-pe03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests construction of internal entity replacement text, using
+ an example in the XML specification. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">v-pe02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests construction of internal entity replacement text, using
+ a complex example in the XML specification. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">valid-sa-069</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Verifies that an XML parser will parse a NOTATION
+ declaration; the output phase of this test ensures that
+ it's reported to the application. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P82-ibm82v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl in P82 and PublicID in P83
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7 [82]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">notation01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ NOTATION declarations don't need SYSTEM IDs; and
+ externally declared notations may be used to declare
+ unparsed entities in the internal DTD subset.
+ The notation must be reported to the application.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P85-ibm85v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers 149 legal character ranges plus 51 single legal
+ characters for BaseChar in P85 using a PI target Name
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P86-ibm86v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers 2 legal character ranges plus 1 single legal
+ characters for IdeoGraphic in P86 using a PI target Name
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P87-ibm87v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers 65 legal character ranges plus 30 single legal
+ characters for CombiningChar in P87 using a PI target Name
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P88-ibm88v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers 15 legal character ranges for Digit in P88 using a PI
+ target Name
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P89-ibm89v01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test case covers 3 legal character ranges plus 8 single legal
+ characters for Extender in P89 using a PI target Name
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-15e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Element content can contain entity reference if replacement text is whitespace
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-15f</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Element content can contain entity reference if replacement text is whitespace,
+even if it came from a character reference in the literal entity value
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-15i</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Element content can contain a comment
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-15j</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Element content can contain a PI
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-15k</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Mixed content can contain a comment
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-15l</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Mixed content can contain a PI
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E18</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-18</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+External entity containing start of entity declaration is base URI
+for system identifier
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E19</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-19</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Parameter entities and character references are included-in-literal, but
+general entities are bypassed.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E22</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-22</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+UTF-8 entities may start with a BOM
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E24</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-24</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Either the built-in entity or a character reference can be used to
+represent greater-than after two close-square-brackets
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E29</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-29</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Three-letter language codes are allowed
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E36</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-36</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+An external ATTLIST declaration does not make a document non-standalone
+if the normalization would have been the same without the declaration
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E41</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-41</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+An xml:lang attribute may be empty
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E48</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-48</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ANY content allows character data
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E50</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-50</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+All line-ends are normalized, even those not passed to the application.
+NB this can only be tested effectively in XML 1.1, since CR is in the
+S production; in 1.1 we can use NEL which isn't.
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E60</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-60</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Conditional sections are allowed in external parameter entities referred
+to from the internal subset.
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-9a</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+An unused attribute default need only be syntactically correct
+</p>
+</td>
+</tr>
+</table>
+<a shape="rect" name="invalid"/>
+<h3>3.2 Invalid XML Documents</h3>
+<p> All conforming XML 1.0 <em> Validating Processors </em>
+ are <b>required</b> to report recoverable errors in the case
+ of documents which are <em>Invalid</em>. Such errors are
+ violations of some <em>validity constraint (VC)</em>. </p>
+<p> If a validating processor does not report an error when
+ given one of these test cases, or if the error reported is
+ a fatal error, it is not conformant. If the error reported
+ does not correspond to the problem listed in this test
+ description, that could also be a conformance problem; it
+ might instead be a faulty diagnostic. </p>
+<p> All conforming XML 1.0 <em> Nonvalidating Processors </em>
+ should accept these documents, reporting no errors. </p>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">-</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-017</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Simple legal case: no namespaces
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-027</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Reserved prefixes and namespaces: using the xml prefix undeclared
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no prolog
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Misc items after the document
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-030</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has a NEL character in an NMTOKENS attribute; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-032</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has an LSEP character in an NMTOKENS attribute; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-046</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has a NEL character in element content whitespace; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-048</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has an LSEP character in element content whitespace; well-formed in both
+XML 1.0 and 1.1, but valid only in 1.1
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-015</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has a multiply sign in a name, legal in XML 1.1, illegal in XML 1.0
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-017</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has a Byzantine Musical Symbol Kratimata in a name,
+legal in XML 1.1, illegal in XML 1.0
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-018</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has the last legal namechar in XML 1.1, illegal in XML 1.0
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-036</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has an NMTOKENS attribute containing a NEL character that comes from a
+character reference in an internal entity. Because NEL is not in the
+S production (even though real NELs are converted to LF on input),
+this is invalid in both XML 1.0 and 1.1.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-037</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has an NMTOKENS attribute containing a NEL character that comes from a
+character reference in an internal entity. Because NEL is not in the
+S production (even though real NELs are converted to LF on input),
+this is invalid in both XML 1.0 and 1.1.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-052</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has element content whitespace containing a NEL character that comes from
+a character reference in an internal entity. Because NEL is not in the
+S production (even though real NELs are converted to LF on input),
+this is invalid in both XML 1.0 and 1.1.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-053</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has element content whitespace containing a NEL character that comes from
+a character reference in an internal entity. Because NEL is not in the
+S production (even though real NELs are converted to LF on input),
+this is invalid in both XML 1.0 and 1.1.
+</p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p10pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid attribute values
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ all valid S characters
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p04pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ names with all valid ASCII characters, and one from each
+ other class in NameChar
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p05pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ various valid Name constructions
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [6]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p06fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Requires at least one name.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [8]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p08fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ at least one Nmtoken is required.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [8]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p08fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ an invalid Nmtoken character.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p14pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid CharData
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 2.7 [18] 3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">empty</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA section containing only white space does not match the nonterminal S, and cannot
+ appear in these positions. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p15pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid comments
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p16pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p16pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16] [17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p16pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid form of Processing Instruction. Shows that whitespace character data is valid before end of processing instruction. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p18pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid CDSect's. Note that a CDStart in a CDSect is not
+ recognized as such
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">invalid--005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Proper Declaration/PE Nesting" validity constraint by
+ fragmenting an element declaration between two parameter entities.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">invalid--006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Proper Declaration/PE Nesting" validity constraint by
+ fragmenting an element declaration between two parameter entities.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">root</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Root Element Type VC</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P28-ibm28i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The test violates VC:Root Element Type in P28. The Name in the document type
+ declaration does not match the element type of the root element.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ prolog can be empty
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declaration only
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML decl and Misc
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows a valid XML declaration along with version info. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows a valid XML declaration along with encoding declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows a valid XML declaration along with Standalone Document Declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows a valid XML declaration, encoding declarationand Standalone Document Declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p24pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows a prolog that has the VersionInfo delimited by double quotes. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p24pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows a prolog that has the VersionInfo delimited by single quotes. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p24pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows whitespace is allowed in prolog before version info. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p24pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows whitespace is allowed in prolog on both sides of equal sign. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [25]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p25pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows whitespace is NOT necessary before or after equal sign of versioninfo. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [25]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p25pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows whitespace can be used on both sides of equal sign of versioninfo. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [26]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p26pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The valid version number. We cannot test others because
+ a 1.0 processor is allowed to fail them.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p27pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comments are valid as the Misc part of the prolog. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p27pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Processing Instructions are valid as the Misc part of the prolog. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p27pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is valid as the Misc part of the prolog. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p27pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A combination of comments, whitespaces and processing instructions are valid as the Misc part of the prolog. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ optional whitespace causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ attributes needing normalization cause a validity error.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ attributes needing defaulting cause a validity error.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ a token attribute that needs normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ a NOTATION attribute that needs normalization
+ causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an NMTOKEN attribute needing normalization
+ causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an NMTOKENS attribute needing normalization
+ causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa09</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ID attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an IDREF attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an IDREFS attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ENTITY attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa13</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Standalone Document Declaration VC, ensuring that
+ an ENTITIES attribute needing normalization causes a validity error.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P32-ibm32i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of attributes with default values, and the
+ associated element appears in the document with specified values for those
+ attributes.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P32-ibm32i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of attributes with values that will change
+ if normalized.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P32-ibm32i04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Standalone Document Declaration in P32.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of element with element content, and white
+ space occurs directly within the mixed content.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Double quotes can be used as delimeters for the value of a Standalone Document Declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Single quotes can be used as delimeters for the value of a Standalone Document Declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-dtd03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Element Valid" VC (clause 2)
+ by omitting a required element. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">el01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 4)
+ by including an undeclared child element. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">el02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 1)
+ by including elements in an EMPTY content model. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">el03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 3) by including a child element
+ not permitted by a mixed content model. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">el06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 1),
+ using one of the predefined internal entities
+ inside an EMPTY content model.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-not-sa14</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA sections containing only whitespace do not match the nonterminal S, and cannot
+ appear in these positions.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing no children where
+ one is required.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ two children where one is required.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where two are required.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where two are required.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (one construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a second construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a third construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a fourth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional09</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or two are
+ required (a fifth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a basic construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a second construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a third construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional13</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a fourth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional14</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ three children where one or two are
+ required (a fifth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional20</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a sixth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional21</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a seventh construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional22</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (an eigth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional23</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a ninth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional24</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ no children where one or more are
+ required (a tenth construction of that model).</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">optional25</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Valid VC (clause 2) for one
+ instance of "children" content model, providing
+ text content where one or more elements are
+ required.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P39-ibm39i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Element Valid in P39. Element a is declared empty
+ in DTD, but has content in the document.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P39-ibm39i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Element Valid in P39. root is declared only having
+ element children in DTD, but have text content in the document.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P39-ibm39i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Element Valid in P39. Illegal elements are inserted
+ in b's content of Mixed type.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P39-ibm39i04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Element Valid in P39. Element c has undeclared
+ element as its content of ANY type
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P41-ibm41i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Attribute Value Type in P41. attr1 for Element b is
+ not declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P41-ibm41i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Attribute Value Type in P41. attr3 for Element b is
+ given a value that does not match the declaration in the DTD.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Elements content can be empty. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is valid within a Start-tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace and Multiple Attributes are valid within a Start-tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40] [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attributes are valid within a Start-tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p41pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attributes are valid within a Start-tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p41pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is valid within a Start-tags Attribute. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p42pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test shows proper syntax for an End-tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p42pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is valid after name in End-tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Valid display of an Empty Element Tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Empty Element Tags can contain an Attribute. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44pass3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is valid in an Empty Element Tag following the end of the attribute value. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44pass4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is valid after the name in an Empty Element Tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44pass5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace and Multiple Attributes are valid in an Empty Element Tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 2.10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-required01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Attribute Value Type (declared)
+ VC for the xml:space attribute</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 2.12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-required02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Attribute Value Type (declared)
+ VC for the xml:lang attribute</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">el04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Unique Element Type Declaration VC. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P45-ibm45i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates VC: Unique Element Type Declaration. Element not_unique
+ has been declared 3 time in the DTD.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">invalid--002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Proper Group/PE Nesting" validity constraint by
+ fragmenting a content model between two parameter entities.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P49-ibm49i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates VC:Proper Group/PE Nesting in P49. Open and close parenthesis for a
+ choice content model are in different PE replace Texts.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P50-ibm50i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates VC:Proper Group/PE Nesting in P50. Open and close parenthesis for a
+ seq content model are in different PE replace Texts.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1, 2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P46-ibm46i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An element with Element-Only content contains a ref to the character #x85 (not a
+ whitespace character).
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1, 2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-valid-P46-ibm46i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An element with Element-Only content contains a ref to the character #x2028 (not a
+ whitespace character).
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-dtd01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the No Duplicate Types VC</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">el05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the No Duplicate Types VC. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P51-ibm51i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates VC:Proper Group/PE Nesting in P51. Open and close parenthesis for a
+ Mixed content model are in different PE replace Texts.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P51-ibm51i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates VC:No Duplicate Types in P51. Element a appears twice in the Mixed
+ content model of Element e.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the ID (is a Name) VC</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the ID (appears once) VC</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the One ID per Element Type VC</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the ID Attribute Default VC</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the ID Attribute Default VC</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the IDREF (is a Name) VC</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the IDREFS (is a Names) VC</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the IDREF (matches an ID) VC</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">id09</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the IDREF (IDREFS matches an ID) VC</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Entity Name" VC for the ENTITY attribute type.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Entity Name" VC for the ENTITIES attribute type.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Notation Attributes" VC for the
+ NOTATION attribute type, first clause: value must be one
+ of the ones that's declared.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Notation Attributes" VC for the
+ NOTATION attribute type, second clause: the names in the
+ declaration must all be declared.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Name Token" VC for the NMTOKEN attribute type.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Name Token" VC for the NMTOKENS attribute type.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Enumeration" VC by providing
+ a value which wasn't one of the choices.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ID. The value of the ID
+ attribute "UniqueName" is "@999" which does not meet the Name production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ID. The two ID attributes
+ "attr" and "UniqueName" have the same value "Ac999" for the element "b" and
+ the element "tokenizer".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ID Attribute Default. The
+ "#FIXED" occurs in the DefaultDecl for the ID attribute "UniqueName".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ID Attribute Default. The
+ constant string "BOGUS" occurs in the DefaultDecl for the ID attribute
+ "UniqueName".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: One ID per Element Type. The
+ element "a" has two ID attributes "first" and "second".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: IDREF. The value of the
+ IDREF attribute "reference" is "@456" which does not meet the Name production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: IDREF. The value of the IDREF
+ attribute "reference" is "BC456" which does not match the value assigned to any
+ ID attributes.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: IDREFS. The value of the
+ IDREFS attribute "reference" is "AC456 #567" which does not meet the Names
+ production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: IDREFS. The value of the
+ IDREFS attribute "reference" is "EF456 DE355" which does not match the values
+ assigned to two ID attributes.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "ima ge" which does not meet the Name production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "notimage" which does not match the name of any
+ unparsed entity declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITY attribute "sun" is "parsedentity" which matches the name of a parsed
+ entity instead of an unparsed entity declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Entity Name. The value of
+ the ENTITIES attribute "sun" is "#image1 @image" which does not meet the Names
+ production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ENTITIES. The value of the
+ ENTITIES attribute "sun" is "image3 image4" which does not match the names of
+ two unparsed entities declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: ENTITIES. The value of the
+ ENTITIES attribute "sun" is "parsedentity1 parsedentity2" which matches the names
+ of two parsed entities instead of two unparsed entities declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Name Token. The value of the
+ NMTOKEN attribute "thistoken" is "x : image" which does not meet the Nmtoken
+ production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P56-ibm56i18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid TokenizedType which is against P56 VC: Name Token. The value of the
+ NMTOKENS attribute "thistoken" is "@lang y: #country" which does not meet the
+ Nmtokens production.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P58-ibm58i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid NotationType which is against P58 VC: Notation Attributes. The
+ attribute "content-encoding" with value "raw" is not a value from the list
+ "(base64|uuencode)".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P58-ibm58i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid NotationType which is against P58 VC: Notation Attributes. The
+ attribute "content-encoding" with value "raw" is a value from the list
+ "(base64|uuencode|raw|ascii)", but "raw" is not a declared notation.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P59-ibm59i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid Enumeration which is against P59 VC: Enumeration. The value of the
+ attribute is "ONE" which matches neither "one" nor "two" as declared in the
+ Enumeration in the AttDef in the AttlistDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58] [59] Errata [E2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-e2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Validity Constraint: No duplicate tokens
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-required00</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Required Attribute VC.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Fixed Attribute Default" VC by
+ providing the wrong value.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr09</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal IDREF value.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal IDREFS value.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal ENTITY value.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal ENTITIES value.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr13</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NMTOKEN value.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr14</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NMTOKENS value.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal NOTATIONS value.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attr16</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Attribute Default Legal" VC by
+ providing an illegal enumeration value.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P60-ibm60i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid DefaultDecl which is against P60 VC: Required Attribute. The
+ attribute "chapter" for the element "two" is declared as #REQUIRED in the
+ DefaultDecl in the AttlistDecl, but the value of this attribute is not given.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P60-ibm60i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid DefaultDecl which is against P60 VC: Fixed Attribute Default.. The
+ attribute "chapter" for the element "one" is declared as #FIXED with the given
+ value "Introduction" in the DefaultDecl in the AttlistDecl, but the value of a
+ instance of this attribute is assigned to "JavaBeans".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P60-ibm60i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid DefaultDecl which is against P60 VC: Attribute Default Legal. The
+ declared default value "c" is not legal for the type (a|b) in the AttDef in
+ the AttlistDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P60-ibm60i04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid DefaultDecl which is against P60 VC: Attribute Default Legal. The
+ declared default value "@#$" is not legal for the type NMTOKEN the AttDef in
+ the AttlistDecl.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">invalid-not-sa-022</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test the "Proper Conditional Section/ PE Nesting" validity constraint. </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 3.1 [39] [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39pass2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character data is valid element content. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 3.1 [39] [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Empty element tag may be used for any element which has no content. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-019</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Simple legal case: prefixed element
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-020</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Simple legal case: prefixed attribute
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid character references
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">inv-dtd02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Notation Declared" VC by using an undeclared
+ notation name.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P76-ibm76i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid NDataDecl which is against P76 VC: Notation declared. The Name
+ "JPGformat" in the NDataDecl in the EntityDecl for "ge2" does not match the
+ Name of any declared notation.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ valid external identifiers
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p74pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ PEDef is either an entity value or an external id
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">utf16b</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests reading an invalid "big endian" UTF-16 document</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">utf16l</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests reading an invalid "little endian" UTF-16 document</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">5.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-024</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Simple legal case: prefix rebinding
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">5.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-018</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Simple legal case: default namespace
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">5.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-021</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Simple legal case: default namespace and unbinding
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">5.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-022</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Simple legal case: default namespace and rebinding
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">5.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-037</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Attribute uniqueness: different attributes with same local name
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">5.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-038</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">5.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-039</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name, with default namespace
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">5.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-040</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name, with default namespace and element in default namespace
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">5.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-041</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name, element in same namespace as prefixed attribute
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">6.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns11-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NS1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.1 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+1.1 style prefix unbinding
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">6.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns11-004</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NS1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.1 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+1.1 style prefix unbinding and rebinding
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E14</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-14</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Declarations mis-nested wrt parameter entities are just validity
+errors (but note that some parsers treat some such errors as fatal)
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-15a</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Empty content can't contain an entity reference
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-15b</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Empty content can't contain a comment
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-15c</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Empty content can't contain a PI
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-15d</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Empty content can't contain whitespace
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-15g</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Element content can't contain character reference to whitespace
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-15h</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Element content can't contain entity reference if replacement text is
+character reference to whitespace
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-2a</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Duplicate token in enumerated attribute declaration
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-2b</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Duplicate token in NOTATION attribute declaration
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E20</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-20</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Tokens, after normalization, must be separated by space, not other
+whitespace characters
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-9b</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+An attribute default must be syntactically correct even if unused
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NE05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-028</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Reserved prefixes and namespaces: declaring the xml prefix correctly
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NE05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-034</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Reserved prefixes and namespaces: binding a reserved prefix
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NE08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-045</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Colon in ID attribute name
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NE08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-046</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Colon in ID attribute name
+</p>
+</td>
+</tr>
+</table>
+<a shape="rect" name="not-wf"/>
+<h3>3.3 Documents that are Not Well Formed</h3>
+<p> All conforming XML 1.0 Processors are <b>required</b> to
+ report fatal errors in the case of documents which are not
+ <em>Well Formed</em>. Such errors are basically of two types:
+ <em>(a)</em> the document violates the XML grammar; or else
+ <em>(b)</em> it violates a <em>well formedness constraint
+ (WFC)</em>. There is a single <em>exception to that
+ requirement</em>: nonvalidating processors which do not read
+ certain types of external entities are not required to detect
+ (and hence report) these errors. </p>
+<p> If a processor does not report a fatal error when given
+ one of these test cases, it is not conformant. If the error
+ reported does not correspond to the problem listed in this
+ test description, that could also be a conformance problem;
+ it might instead be a faulty diagnostic. </p>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-009</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace equality test: plain repetition
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-010</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace equality test: use of character reference
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-011</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace equality test: use of entity reference
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-012</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace inequality test: equal after attribute value normalization
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-016</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Bad QName syntax: xmlns:
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-023</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Illegal use of 1.1-style prefix unbinding in 1.0 document
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P01-ibm01n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 1</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a document with no element. A well-formed document should have at lease
+ one elements.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P01-ibm01n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 1</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a document with wrong ordering of its prolog and element. The
+ element occurs before the xml declaration and the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P01-ibm01n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 1</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a document with wrong combination of misc and element. One PI occurs
+ between two elements.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-050</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Empty document, with no root element. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S cannot occur before the prolog
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ comments cannot occur before the prolog
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only one document element
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.1 [1]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p01fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ document element must be complete.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x00
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x01
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x02
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x03
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x04
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x05
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x06
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x07
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x08
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x0B
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x0C
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x0E
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x0F
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x10
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x11
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x12
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x13
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x14
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n19.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x15
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n20.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x16
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n21.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x17
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n22.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x18
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n23.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x19
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n24.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1A </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n25.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1B
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n26.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1C
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n27.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1D
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n28.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1E
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n29.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #x1F
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n30.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #xD800
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n31.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #xDFFF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n32.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #xFFFE
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n33.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests a comment which contains an illegal Char: #xFFFF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-011</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains a C1 control, legal in XML 1.0, illegal in XML 1.1
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-013</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains a DEL, legal in XML 1.0, illegal in XML 1.1
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-038</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains a C0 control character (form-feed), illegal in
+both XML 1.0 and 1.1
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-039</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains a C0 control character (form-feed), illegal in
+both XML 1.0 and 1.1
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-041</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains a C1 control character (partial line up), legal in
+XML 1.0 but not 1.1
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x1.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x2.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x3.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x4.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x5.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x6.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x7.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x8.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x0.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n010.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x100.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n011.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x0B.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n012.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x0C.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n013.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x0D.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n014.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x0E.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n015.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x0F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n016.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x10.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n017.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x11.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n018.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x12.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n019.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x13.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n020.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x14.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n021.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x15.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n022.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x16.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n023.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x17.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n024.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x18.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n025.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x19.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n026.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x1A.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n027.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x1B.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n028.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x1C.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n029.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x1D.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n030.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x1E.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n031.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x1F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n032.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x7F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n033.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x80.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n034.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x81.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n035.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x82.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n036.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x83.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n037.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x84.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n038.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x86.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n039.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x86.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n040.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x87.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n041.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x88.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n042.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x89.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n043.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x8A.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n044.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x8B.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n045.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x8C.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n046.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x8D.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n047.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x8E.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n048.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x8F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n049.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x90.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n050.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x91.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n051.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x92.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n052.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x93.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n053.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x94.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n054.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x95.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n055.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x96.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n056.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x97.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n057.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x98.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n058.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x99.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n059.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x9A.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n060.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x9B.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n061.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x9C.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n062.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x9D.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n063.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control character 0x9E.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n064.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control characters present in an external entity.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n065.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control characters present in an external entity.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n066.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded control characters present in an external entity.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n067.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded character 0xD800. (Invalid UTF8 sequence)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n068.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded character 0xFFFE.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n069.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains embeded character 0xFFFF.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n070.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains a reference to character 0xFFFE.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2,4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P02-ibm02n071.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 2</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test contains a reference to character 0xFFFF.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-030</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A form feed is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-031</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A form feed is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-032</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A form feed is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-033</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An ESC (octal 033) is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-034</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A form feed is not a legal XML character. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-142</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character #x0000 is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-143</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character #x001F is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-144</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character #xFFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-145</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character #xD800 is not legal anywhere in an XML document. (If it
+ appeared in a UTF-16 surrogate pair, it'd represent half of a UCS-4
+ character and so wouldn't really be in the document.) </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-146</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character references must also refer to legal XML characters;
+ #x00110000 is one more than the largest legal character.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-166</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-167</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFE is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-168</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An unpaired surrogate (D800) is not legal anywhere
+ in an XML document.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-169</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An unpaired surrogate (DC00) is not legal anywhere
+ in an XML document.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-170</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Four byte UTF-8 encodings can encode UCS-4 characters
+ which are beyond the range of legal XML characters
+ (and can't be expressed in Unicode surrogate pairs).
+ This document holds such a character. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-171</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-172</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-173</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-174</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-175</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-177</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character FFFF is not legal anywhere in an XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail13</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail14</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail16</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail17</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail18</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail19</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail20</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail21</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail22</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail23</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail24</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail25</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail26</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail27</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail28</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail29</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail30</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail31</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.2 [2]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p02fail9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P03-ibm03n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 3</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an end tag which contains an illegal space character #x3000 which
+ follows the element name "book".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x21
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x28
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x29
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2B
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2C
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x2F
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3B
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3C
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3D
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x3F
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5B
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5C
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5D
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x5E
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x60
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7B
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7C
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which contains an illegal ASCII NameChar.
+ "IllegalNameChar" is followed by #x7D
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which has an illegal first character. An illegal
+ first character "." is followed by "A_name-starts_with.".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which has an illegal first character. An illegal
+ first character "-" is followed by "A_name-starts_with-".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element name which has an illegal first character. An illegal
+ first character "5" is followed by "A_name-starts_with_digit".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P09-ibm09n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains "%".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P09-ibm09n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains the ampersand character.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P09-ibm09n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an internal general entity with an invalid value. The entity
+ "Fullname" contains the double quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P09-ibm09n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 9</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an internal general entity with an invalid value. The closing bracket
+ (double quote) is missing with the value of the entity "FullName".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character "less than".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character ampersand.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the double quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The closing bracket (double quote) is
+ missing with The value of the attribute "first".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character "less than".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the character ampersand.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The value of the attribute "first"
+ contains the double quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P10-ibm10n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 10</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an attribute with an invalid value. The closing bracket (single quote) is
+ missing with the value of the attribute "first".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P11-ibm11n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SystemLiteral. The systemLiteral for the element "student" has
+ a double quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P11-ibm11n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SystemLiteral. The systemLiteral for the element "student" has
+ a single quote character in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P11-ibm11n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SystemLiteral. The closing bracket (double quote) is missing with
+ the systemLiteral for the element "student".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P11-ibm11n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 11</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SystemLiteral. The closing bracket (single quote) is missing with
+ the systemLiteral for the element "student".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P12-ibm12n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PubidLiteral. The closing bracket (double quote) is missing with
+ the value of the PubidLiteral for the entity "info".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P12-ibm12n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PubidLiteral. The value of the PubidLiteral for the entity
+ "info" has a single quote character in the middle..
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P12-ibm12n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 12</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PubidLiteral. The closing bracket (single quote) is missing with
+ the value of the PubidLiteral for the entity "info".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P13-ibm13n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 13</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character "{".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P13-ibm13n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 13</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character "~".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P13-ibm13n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 13</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PubidChar. The pubidChar of the PubidLiteral for the entity
+ "info" contains the character double quote in the middle.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #x300
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x333
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x369
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x37E
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x2000
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x2001
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x2002
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x2005
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x200B
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x200E
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x200F
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x2069
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x2190
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x23FF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x280F
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x2A00
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x2EDC
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x2FED
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n19.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x2FFF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n20.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0x3000
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n21.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0xD800
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n22.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0xD801
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n23.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0xDAFF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n24.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0xDFFF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n25.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0xEFFF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n26.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0xF1FF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n27.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0xF8FF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04-ibm04n28.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameStartChar: #0xFFFFF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #x300
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x333
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x369
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x37E
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x2000
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x2001
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x2002
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x2005
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x200B
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x200E
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x200F
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x2069
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x2190
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x23FF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x280F
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x2A00
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x2EDC
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x2FED
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an19.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x2FFF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an20.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0x3000
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an21.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0xD800
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an22.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0xD801
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an23.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0xDAFF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an24.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0xDFFF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an25.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0xEFFF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an26.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0xF1FF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an27.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0xF8FF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P04a-ibm04an28.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 4a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal NameChar: #0xFFFFF
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal Name containing #0x0B
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal Name containing #0x300
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal Name containing #0x36F
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal Name containing #0x203F
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal Name containing #x2040
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P05-ibm05n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 5</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests an element with an illegal Name containing #0xB7
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-014</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has a multiply sign in a name, legal in XML 1.1, illegal in XML 1.0
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-016</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has a Byzantine Musical Symbol Kratimata in a name,
+legal in XML 1.1, illegal in XML 1.0
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-019</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has the last legal namechar in XML 1.1, illegal in XML 1.0
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-020</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has the first character after the last legal namechar in XML 1.1,
+illegal in both XML 1.0 and 1.1
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-021</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has the first character after the last legal namechar in XML 1.1,
+illegal in both XML 1.0 and 1.1
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-012</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML-ism: attribute values must be quoted in all cases. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-013</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The quotes on both ends of an attribute value must match. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-014</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values may not contain literal '&lt;' characters. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-020</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values may not contain literal '&amp;'
+ characters except as part of an entity reference. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-021</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values may not contain literal '&amp;'
+ characters except as part of an entity reference. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-088</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values are terminated by literal quote characters,
+ and any entity expansion is done afterwards. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-090</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attributes may not contain a literal "&lt;" character;
+ this one has one because of reference expansion. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p10fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ attribute values exclude '&lt;'
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p10fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ attribute values exclude '&amp;'
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [10]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p10fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [11]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p11fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [11]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p11fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ cannot contain delimiting quotes
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pubid01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal entity ref in public ID</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pubid02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal characters in public ID</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pubid03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal characters in public ID</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pubid04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal characters in public ID</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pubid05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML-ism: public ID without system ID</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '"' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '\' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ entity references excluded
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&gt;' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&lt;' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [12]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ built-in entity refs excluded
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [13]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-085</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Public IDs may not contain "[". </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [13]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-086</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Public IDs may not contain "[". </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [13]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-087</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Public IDs may not contain "[". </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [13]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p12fail7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The public ID has a tab character, which is disallowed
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail13</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail14</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail15</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail16</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail17</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail18</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail19</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail20</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail21</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail22</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail23</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail24</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail25</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail26</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail27</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail28</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail29</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [3]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p03fail9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Use of illegal character within XML document. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Names may not start with "."; it's not a Letter. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-140</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character '&amp;#x309a;' is a CombiningChar, not a
+ Letter, and so may not begin a name.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p04fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Name contains invalid character. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p04fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Name contains invalid character. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [4]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p04fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Name contains invalid character. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-008</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entity references must include names, which don't begin
+ with '.' (it's not a Letter or other name start character). </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-023</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Digits are not valid name start characters. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-024</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Digits are not valid name start characters. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-141</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character #x0E5C is not legal in XML names. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p05fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a Name cannot start with a digit
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p05fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a Name cannot start with a '.'
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p05fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a Name cannot start with a "-"
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p05fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a Name cannot start with a CombiningChar
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [5]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p05fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a Name cannot start with an Extender
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-113</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter entity values must use valid reference syntax;
+ this reference is malformed.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-114</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ General entity values must use valid reference syntax;
+ this reference is malformed.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-159</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Uses '&amp;' unquoted in an entity declaration,
+ which is illegal syntax for an entity reference.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p09fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ EntityValue excludes '%'
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p09fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ EntityValue excludes '&amp;'
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p09fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ incomplete character reference
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p09fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3 [9]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p09fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P14-ibm14n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharData. The content of the element "student" contains the
+ character "[[&gt;".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P14-ibm14n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharData. The content of the element "student" contains the
+ character "less than".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P14-ibm14n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 14</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharData. The content of the element "student" contains the
+ character ampersand.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-025</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text may not contain a literal ']]&gt;' sequence. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-026</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text may not contain a literal ']]&gt;' sequence. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-029</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text may not contain a literal ']]&gt;' sequence. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p14fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&lt;' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p14fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&amp;' excluded
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.4 [14]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p14fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ "]]&gt;" excluded
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P15-ibm15n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment. The text of the second comment contains the character
+ "-".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P15-ibm15n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment. The second comment has a wrong closing sequence
+ "-(greater than)".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P15-ibm15n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment. The second comment has a wrong beginning sequence
+ "(less than)!-".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P15-ibm15n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 15</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests comment. The closing sequence is missing with the second
+ comment.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-027</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comments must be terminated with "--&gt;".</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comments may not contain "--"</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p15fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ comments can't end in '-'
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p15fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ one comment per comment (contrasted with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [15]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p15fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ can't include 2 or more adjacent '-'s
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML comments may not contain "--" </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.5 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-070</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML comments may not contain "--" </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P16-ibm16n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI. The content of the PI includes the sequence
+ "(less than)?".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P16-ibm16n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI. The PITarget is missing in the PI.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P16-ibm16n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI. The PI has a wrong closing sequence "&gt;".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P16-ibm16n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 16</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PI. The closing sequence is missing in the PI.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P17-ibm17n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PITarget. The PITarget contains the string "XML".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P17-ibm17n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PITarget. The PITarget contains the string "xML".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P17-ibm17n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PITarget. The PITarget contains the string "xml".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P17-ibm17n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 17</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PITarget. The PITarget contains the string "xmL".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Processing Instruction target name is required.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-004</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML-ism: processing instructions end in '?&gt;' not '&gt;'. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Processing instructions end in '?&gt;' not '?'. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-028</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Processing instructions must end with '?&gt;'. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pi</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No space between PI target name and data</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p16fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ "xml" is an invalid PITarget
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p16fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ a PITarget must be present
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [16]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p16fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S after PITarget is required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-157</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&lt;?xmL ...?&gt;' is not a legal processing instruction
+ target name. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Processing instruction target names may not be "XML"
+ in any combination of cases. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.6 [17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-ext-sa-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only one text declaration is permitted; a second one
+ looks like an illegal processing instruction (target names
+ of "xml" in any case are not allowed). </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P18-ibm18n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 18</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDSect. The CDStart is missing in the CDSect in the content of
+ element "student".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P18-ibm18n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 18</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDSect. The CDEnd is missing in the CDSect in the content of
+ element "student".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P19-ibm19n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 19</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDStart. The CDStart contains a lower case string "cdata".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P19-ibm19n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 19</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDStart. The CDStart contains an extra character "[".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P19-ibm19n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 19</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDStart. The CDStart contains a wrong character "?".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P20-ibm20n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 20</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDATA with an illegal sequence. The CDATA contains the string
+ "[[&gt;".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P21-ibm21n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 21</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDEnd. One "]" is missing in the CDEnd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P21-ibm21n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 21</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDEnd. An extra "]" is placed in the CDEnd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P21-ibm21n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 21</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CDEnd. A wrong character ")" is placed in the CDEnd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 </td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-105</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid placement of CDATA section. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-017</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA sections need a terminating ']]&gt;'. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-051</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA is invalid at top level of document.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-128</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid CDATA syntax. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p18fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no space before "CDATA"
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p18fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no space after "CDATA"
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [18]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p18fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDSect's can't nest
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [19]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-018</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA sections begin with a literal '&lt;![CDATA[', no space.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [19]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-108</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No space in '&lt;![CDATA['.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.7 [19]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-112</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA sections start '&lt;![CDATA[', not '&lt;!cdata['.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-160</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates the <em>PEs in Internal Subset</em> WFC
+ by using a PE reference within a declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-161</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates the <em>PEs in Internal Subset</em> WFC
+ by using a PE reference within a declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-162</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Violates the <em>PEs in Internal Subset</em> WFC
+ by using a PE reference within a declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-009</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates WFC:PE Between Declarations in Production 28a.
+ The last character of a markup declaration is not contained in the same
+ parameter-entity text replacement.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P22-ibm22n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with wrong field ordering. The XMLDecl occurs
+ after the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P22-ibm22n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with wrong field ordering. The Misc (comment)
+ occurs before the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P22-ibm22n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 22</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests prolog with wrong field ordering. The XMLDecl occurs
+ after the DTD and a comment. The other comment occurs before the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with a required field missing. The Versioninfo is
+ missing in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with wrong field ordering. The VersionInfo
+ occurs after the EncodingDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with wrong field ordering. The VersionInfo
+ occurs after the SDDecl and the SDDecl occurs after the VersionInfo.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with wrong key word. An upper case string "XML" is
+ used as the key word in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with a wrong closing sequence "&gt;".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P23-ibm23n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 23</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests XMLDecl with a wrong opening sequence "(less than)!".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with a required field missing. The VersionNum is
+ missing in the VersionInfo in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with a required field missing. The white space is
+ missing between the key word "xml" and the VersionInfo in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with a required field missing. The "="
+ (equal sign) is missing between the key word "version" and the VersionNum.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with wrong field ordering. The VersionNum
+ occurs before "=" and "version".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with wrong field ordering. The "=" occurs
+ after "version" and the VersionNum.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with the wrong key word "Version".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with the wrong key word "versioN".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with mismatched quotes around the VersionNum.
+ version = '1.0" is used as the VersionInfo.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P24-ibm24n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 24</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionInfo with mismatched quotes around the VersionNum.
+ The closing bracket for the VersionNum is missing.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P25-ibm25n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests eq with a wrong key word "==".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P25-ibm25n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 25</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests eq with a wrong key word "eq".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P26-ibm26n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 26</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests VersionNum with an illegal character "#".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P27-ibm27n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 27</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests type of Misc. An element declaration is used as a type of Misc
+ After the element "animal".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with a required field missing. The Name "animal"
+ is missing in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong field ordering. The Name
+ "animal" occurs after the markup declarations inside the "[]".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong field ordering. The Name
+ "animal" occurs after the markup declarations inside the "[]".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with general entity reference.The
+ "(ampersand)generalE" occurs in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong key word. A wrong key word "DOCtYPE"
+ occurs on line 2.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with mismatched brackets. The closing bracket "]"
+ of the DTD is missing.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong bracket. The opening bracket "}" occurs
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28-ibm28n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests doctypedecl with wrong opening sequence. The opening sequence
+ "(less than)?DOCTYPE" occurs in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P28a-ibm28an01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 28a</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This test violates WFC:PE Between Declarations in Production 28a.
+ The last character of a markup declaration is not contained in the same
+ parameter-entity text replacement.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests markupdecl with an illegal markup declaration. A XMLDecl
+ occurs inside the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ ATTlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside an
+ EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a PI in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a comment
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P29-ibm29n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 29</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests WFC "PEs in Internal Subset". A PE reference occurs inside a
+ NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P30-ibm30n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 30</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extSubset with wrong field ordering. In the file "ibm30n01.dtd",
+ the TextDecl occurs after the extSubsetDecl (the element declaration).
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P31-ibm31n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 31</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extSubsetDecl with an illegal field. A general entity
+ reference occurs in file "ibm31n01.dtd".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 </td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declaration must be at the very beginning of a document;
+ it"s not a processing instruction</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-147</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML Declaration may not be preceded by whitespace.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-148</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML Declaration may not be preceded by comments or whitespace.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-152</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declarations must include the "version=..." string.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ prolog must start with XML decl
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [22]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p22fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ prolog must start with XML decl
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-095</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ VersionInfo must come before EncodingDecl. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-098</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only one "version=..." string may appear in an XML declaration.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-099</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only three pseudo-attributes are in the XML declaration,
+ and "valid=..." is not one of them. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ "xml" must be lower-case
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ VersionInfo must be supplied
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ VersionInfo must come first
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SDDecl must come last
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p23fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no SGML-type PIs
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declarations must be correctly terminated </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [23]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declarations must be correctly terminated </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-094</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Prolog VERSION must be lowercase. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-097</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Both quotes surrounding VersionNum must be the same. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p24fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [24]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p24fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [25]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p25fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comment is illegal in VersionInfo. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [26]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-102</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Provides an illegal XML version number; spaces are illegal.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [26]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p26fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character in VersionNum. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [26]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p26fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character in VersionNum. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-036</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text may not appear after the root element. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-037</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character references may not appear after the root element. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-040</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Provides two document elements.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-041</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Provides two document elements.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-043</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Provides #PCDATA text after the document element. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-044</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Provides two document elements.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-048</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Provides a CDATA section after the roor element.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-151</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declarations may not follow document content.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [27]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p27fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ References aren't allowed in Misc,
+ even if they would resolve to valid Misc.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-055</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid Document Type Definition format. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-056</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid Document Type Definition format - misplaced comment. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-107</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid document type declaration. CDATA alone is invalid.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-149</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML Declaration may not be within a DTD.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [28]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p28fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only declarations in DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [29]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-063</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Conditional sections may only appear in the external
+ DTD subset. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [29]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p29fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A processor must not pass unknown declaration types.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [30]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p30fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ An XML declaration is not the same as a TextDecl
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 [31]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p31fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ external subset excludes doctypedecl
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 2.6 [23, 17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-154</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&lt;?XML ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 2.6 [23, 17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-155</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&lt;?xmL ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 2.6 [23, 17]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-156</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ '&lt;?xMl ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+External subset has later version number
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+External PE has later version number
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+External general entity has later version number
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-004</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+External general entity has later version number (no decl means 1.0)
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Indirect external general entity has later version number
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Entity Declared WFC, ensuring that
+ a reference to externally defined entity causes a well-formedness error.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with a required field missing. The leading white space
+ is missing with the SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with a required field missing. The "=" sign is missing
+ in the SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "Standalone" occurs in
+ the SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "Yes" occurs in the
+ SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "YES" occurs in the
+ SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "No" occurs in the
+ SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong key word. The word "NO" occurs in the
+ SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests SDDecl with wrong field ordering. The "=" sign occurs
+ after the key word "yes" in the SDDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P32-ibm32n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 32</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This is test violates WFC: Entity Declared in P68.
+ The standalone document declaration has the value yes, BUT there is an
+ external markup declaration of an entity (other than amp, lt, gt, apos,
+ quot), and references to this entity appear in the document.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-096</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required before the standalone declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-100</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only "yes" and "no" are permitted as values of "standalone". </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quote types must match
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ initial S is required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quotes are required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.9 [32]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p32fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ yes or no must be lower case
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-039</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the Element Type Match WFC - end tag name must
+ match start tag name.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with a required field missing. The ETag is missing
+ for the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with a required field missing. The STag is missing
+ for the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with required fields missing. Both the content and
+ the ETag are missing in the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with required fields missing. Both the content and
+ the STag are missing in the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with wrong field ordering. The STag and the ETag are
+ swapped in the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P39-ibm39n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 39</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element with wrong field ordering. The content occurs after
+ the ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-013</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Bad QName syntax: multiple colons
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-014</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Bad QName syntax: colon at end
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-015</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Bad QName syntax: colon at start
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-038</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the "Unique Att Spec" WF constraint by providing
+ multiple values for an attribute.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-081</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This tests the <em>No External Entity References</em> WFC,
+ since the entity is referred to within an attribute. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-082</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This tests the <em>No External Entity References</em> WFC,
+ since the entity is referred to within an attribute. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests STag with a required field missing. The Name "root" is
+ in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests STag with a required field missing. The white space between
+ the Name "root" and the attribute "attr1" is missing in the STag of the
+ element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests STag with wrong field ordering. The Name "root" occurs after
+ the attribute "attr1" in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests STag with a wrong opening sequence. The string "(less than)!" is used
+ as the opening sequence for the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P40-ibm40n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 40</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests STag with duplicate attribute names. The attribute name
+ "attr1" occurs twice in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The attribute name
+ is missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The "=" is missing
+ between the attribute name and the attribute value in the Attribute in the
+ STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The AttValue is
+ missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The Name and the
+ "=" are missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The "=" and the
+ AttValue are missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with a required field missing. The Name and the
+ AttValue are missing in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with wrong field ordering. The "=" occurs after the
+ Name and the AttValue in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with wrong field ordering. The Name and the AttValue
+ are swapped in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute with wrong field ordering. The "=" occurs before the
+ Name and the AttValue in the Attribute in the STag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "no external entity references". A direct
+ references to the external entity "aExternal" is contained in the value of the
+ attribute "attr1".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "no external entity references". A indirect
+ references to the external entity "aExternal" is contained in the value of the
+ attribute "attr1".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "no external entity references". A direct
+ references to the external unparsed entity "aImage" is contained in the value
+ of the attribute "attr1".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "No (less that) character in Attribute
+ Values". The character "less than" is contained in the value of the
+ attribute "attr1".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P41-ibm41n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 41</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Attribute against WFC "No (less than) in Attribute Values". The character
+ "less than" is contained in the value of the attribute "attr1" through indirect
+ internal entity reference.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ETag with a required field missing. The Name is missing in the
+ ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ETag with a wrong beginning sequence. The string "(less than)\" is used as
+ a beginning sequence of the ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ETag with a wrong beginning sequence. The string "less than" is used as
+ a beginning sequence of the ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ETag with a wrong structure. An white space occurs between The
+ beginning sequence and the Name of the ETag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P42-ibm42n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 42</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ETag with a wrong structure. The ETag of the element "root"
+ contains an Attribute (attr1="any").
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P43-ibm43n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element content with a wrong option. A NotationDecl is used as
+ the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P43-ibm43n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element content with a wrong option. A elementdecl is used as
+ the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P43-ibm43n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element content with a wrong option. An elementdecl is used as
+ the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P43-ibm43n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 43</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests element content with a wrong option. An AttlistDecl is used as
+ the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P44-ibm44n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag with a required field missing. The Name "root" is
+ missing in the EmptyElemTag.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P44-ibm44n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag with wrong field ordering. The Attribute (attri1 =
+ "any") occurs before the name of the element "root" in the EmptyElemTag.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P44-ibm44n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag with wrong closing sequence. The string "\&gt;" is used
+ as the closing sequence in the EmptyElemtag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P44-ibm44n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 44</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EmptyElemTag which against the WFC "Unique Att Spec". The
+ attribute name "attr1" occurs twice in the EmptyElemTag of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-046</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This start (or empty element) tag was not terminated correctly. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-049</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Missing start tag </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace required between attributes</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required between attributes
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ tags start with names, not nmtokens
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ tags start with names, not nmtokens
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [40]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p40fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no space before name
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values must start with attribute names, not "?". </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-011</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML-ism: attribute values must be explicitly assigned a
+ value, it can't act as a boolean toggle. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-015</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values need a value, not just an equals sign. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-016</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Attribute values need an associated name.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-178</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax matching double quote is missing. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p41fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ quotes are required (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p41fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ attribute name is required (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [41]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p41fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Eq required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-019</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ End tags may not be abbreviated as '&lt;/&gt;'.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-042</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid End Tag </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-053</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ End tag does not match start tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">element00</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ EOF in middle of incomplete ETAG</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">element01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ EOF in middle of incomplete ETAG</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p42fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no space before name
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p42fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ cannot end with "/&gt;"
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [42]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p42fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no NET (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-035</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The '&lt;' character is a markup delimiter and must
+ start an element, CDATA section, PI, or comment. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-111</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entiry reference must be in content of element not Start-tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-150</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML declarations may not be within element content. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">element02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal markup (&lt;%@ ... %&gt;)</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">element03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal markup (&lt;% ... %&gt;)</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">element04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal markup (&lt;!ELEMENT ... &gt;)</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p43fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no non-comment declarations
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p43fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no conditional sections
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [43]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p43fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no conditional sections
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-045</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid Empty Element Tag </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-047</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid empty element tag invalid whitespace </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-186</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace is required between attribute/value pairs. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace required between attributes</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal space before Empty element tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal space after Empty element tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal comment in Empty element tag. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Whitespace required between attributes. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.1 [44]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p44fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Duplicate attribute name is illegal. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The Name is missing
+ in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The white space is
+ missing between "aEle" and "(#PCDATA)" in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The contentspec is
+ missing in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The contentspec and
+ the white space is missing in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with a required field missing. The Name, the white
+ space, and the contentspec are missing in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with wrong field ordering. The Name occurs after the
+ contentspec in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with wrong beginning sequence. The string
+ "(less than)ELEMENT" is used as the beginning sequence in the second
+ elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with wrong key word. The string "Element" is used as
+ the key word in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P45-ibm45n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 45</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests elementdecl with wrong key word. The string "element" is used as
+ the key word in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests contentspec with wrong key word. the string "empty" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests contentspec with wrong key word. the string "Empty" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests contentspec with wrong key word. the string "Any" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests contentspec with wrong key word. the string "any" is used as
+ the key word in the contentspec of the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P46-ibm46n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 46</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests contentspec with a wrong option. The string "#CDATA" is used as
+ the contentspec in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-133</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal whitespace before optional character causes syntax error. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-134</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal whitespace before optional character causes syntax error. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests children with a required field missing. The "+" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests children with a required field missing. The "*" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests children with a required field missing. The "?" is used as the
+ choice or seq field in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests children with wrong field ordering. The "*" occurs before the
+ seq field (a,a) in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests children with wrong field ordering. The "+" occurs before the
+ choice field (a|a) in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P47-ibm47n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 47</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests children with wrong key word. The "^" occurs after the seq field
+ in the second elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the second cp in the choice field in the third elementdecl in the
+ DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the cp in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with a required fields missing. The field Name|choice|seq is
+ missing in the first cp in the choice field in the third elementdecl in the
+ DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with wrong field ordering. The "+" occurs before the seq (a,a)
+ in the first cp in the choice field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with wrong field ordering. The "*" occurs before the choice
+ (a|b) in the first cp in the seq field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with wrong field ordering. The "?" occurs before the Name "a"
+ in the second cp in the seq field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P48-ibm48n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 48</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests cp with wrong key word. The "^" occurs after the Name "a" in the
+ first cp in the choice field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests choice with a required field missing. The two cps are missing in
+ the choice field in the third elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests choice with a required field missing. The third cp is missing in
+ the choice field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests choice with a wrong separator. The "!" is used as the separator
+ in the choice field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests choice with a required field missing. The separator "|" is
+ missing in the choice field (a b)+ in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests choice with an extra separator. An extra "|" occurs between a
+ and b in the choice field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P49-ibm49n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 49</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests choice with a required field missing. The closing bracket ")" is
+ missing in the choice field (a |b * in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with a required field missing. The two cps are missing in
+ the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with a required field missing. The third cp is missing in
+ the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with a wrong separator. The "|" is used as the separator
+ between a and b in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with a wrong separator. The "." is used as the separator
+ between a and b in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with an extra separator. An extra "," occurs between (a|b)
+ and a in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with a required field missing. The separator between (a|b)
+ and (b|a) is missing in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P50-ibm50n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 50</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests seq with wrong closing bracket. The "]" is used as the closing
+ bracket in the seq field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-139</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The element-content model should not be empty. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-122</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax mixed connectors are used. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-135</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid character used as connector. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml13</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML Unordered content models not allowed</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p47fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid operator '|' must match previous operator ','</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p47fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character '-' in Element-content model </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p47fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Optional character must follow a name or list </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [47]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p47fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal space before optional character</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-123</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax mismatched parenthesis. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-138</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax for content particle. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">content01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No whitespace before "?" in content model</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">content02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No whitespace before "*" in content model</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">content03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No whitespace before "+" in content model</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p48fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal space before optional character </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [48]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p48fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal space before optional character </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [49]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p49fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ connectors must match </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [50]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-132</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax mixed connectors used. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [50]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p50fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ connectors must match </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [55]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">nwf-dtd00</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comma mandatory in content model</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.1 [55]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">nwf-dtd01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Can't mix comma and vertical bar in content models</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with a wrong key word. The string "#pcdata" is used as the
+ key word in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with wrong field ordering. The field #PCDATA does not
+ occur as the first component in the Mixed field in the fourth elementdecl in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with a separator missing. The separator "|" is missing in
+ between #PCDATA and a in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with a wrong key word. The string "#CDATA" is used as the
+ key word in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with a required field missing. The "*" is missing after
+ the ")" in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with wrong closing bracket. The "]" is used as the closing
+ bracket in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P51-ibm51n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 51</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Mixed with a required field missing. The closing bracket ")" is
+ missing after (#PCDATA in the Mixed field in the fourth elementdecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-124</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid format of Mixed-content declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-125</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax extra set of parenthesis not necessary. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-126</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax Mixed-content must be defined as zero or more. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-127</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax Mixed-content must be defined as zero or more. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-183</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Mixed content declarations may not include content particles.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-184</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ In mixed content models, element names must not be
+ parenthesized. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ occurrence on #PCDATA group must be *
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ occurrence on #PCDATA group must be *
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ #PCDATA must come first
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ occurrence on #PCDATA group must be *
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only '|' connectors
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only '|' connectors and occurrence on #PCDATA group must be * </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2.2 [51]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p51fail7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no nested groups
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-057</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This isn't SGML; comments can't exist in declarations. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-129</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax for Element Type Declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-130</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax for Element Type Declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-131</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax for Element Type Declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-136</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tag omission is invalid in XML. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-137</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required before a content model. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ELEMENT declarations apply to only one element, unlike SGML</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML Tag minimization specifications are not allowed</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML Tag minimization specifications are not allowed</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml09</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML Content model exception specifications are not allowed</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml10</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML Content model exception specifications are not allowed</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p45fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ELEMENT must be upper case.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p45fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S before contentspec is required.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p45fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only one content spec
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [45]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p45fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no comments in declarations (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ CDATA is not a valid content model spec</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml12</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ RCDATA is not a valid content model spec</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no parens on declared content
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no inclusions (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no exclusions (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no space before occurrence
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ single group
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.2 [46]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p46fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ can't be both declared and modeled
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with a required field missing. The Name is missing
+ in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with a required field missing. The white space is
+ missing between the beginning sequence and the name in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with wrong field ordering. The Name "a" occurs after
+ the first AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with wrong key word. The string "Attlist" is used as
+ the key word in the beginning sequence in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with a required field missing. The closing bracket
+ "greater than" is missing in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P52-ibm52n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 52</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttlistDecl with wrong beginning sequence. The string
+ "(less than)ATTLIST" is used as the beginning sequence in the AttlistDecl in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The DefaultDecl is missing
+ in the AttDef for the name "attr1" in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The white space is missing
+ between (abc|def) and "def" in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The AttType is missing
+ for "attr1" in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The white space is missing
+ between "attr1" and (abc|def) in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The Name is missing in the
+ AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with a required field missing. The white space before the
+ name "attr2" is missing in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with wrong field ordering. The Name "attr1" occurs after
+ the AttType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P53-ibm53n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 53</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttDef with wrong field ordering. The Name "attr1" occurs after
+ the AttType and "default" occurs before the AttType in the AttDef in the
+ AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P54-ibm54n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttType with a wrong option. The string "BOGUSATTR" is used as
+ the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P54-ibm54n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 54</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests AttType with a wrong option. The string "PCDATA" is used as
+ the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P55-ibm55n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 55</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests StringType with a wrong key word. The lower case string "cdata"
+ is used as the StringType in the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P55-ibm55n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 55</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests StringType with a wrong key word. The string "#CDATA" is used as
+ the StringType in the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P55-ibm55n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 55</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests StringType with a wrong key word. The string "CData" is used as
+ the StringType in the AttType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "id" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "Idref" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "Idrefs" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "EntitY" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "nmTOKEN" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "NMtokens" is used in
+ the TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P56-ibm56n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 56</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TokenizedType with wrong key word. The "#ID" is used in the
+ TokenizedType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P57-ibm57n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 57</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EnumeratedType with an illegal option. The "NMTOKEN (a|b)"
+ is used in the EnumeratedType in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with wrong key word. The lower case "notation" is
+ used as the key word in the NotationType in the AttDef in the AttlistDecl in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with a required field missing. The beginning bracket
+ "(" is missing in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with a required field missing. The Name is missing
+ in the "()" in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with a required field missing. The closing bracket
+ is missing in the NotationType in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with wrong field ordering. The key word "NOTATION"
+ occurs after "(this)" in the NotationType in the AttDef in the AttlistDecl in
+ the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with wrong separator. The "," is used as a separator
+ between "this" and "that" in the NotationType in the AttDef in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with a required field missing. The white space is
+ missing between "NOTATION" and "(this)" in the NotationType in the AttDef in the
+ AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P58-ibm58n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 58</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationType with extra wrong characters. The double quote
+ character occurs after "(" and before ")" in the NotationType in the AttDef in
+ the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration with required fields missing. The Nmtokens and "|"s are
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration with a required field missing. The closing bracket ")" is
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration with wrong separator. The "," is used as the separator in
+ the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration with illegal presence. The double quotes occur around the
+ Enumeration value in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration with a required field missing. The white space is missing
+ between in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P59-ibm59n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 59</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Enumeration with a required field missing. The beginning bracket "(" is
+ missing in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [54]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-058</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid character , in ATTLIST enumeration </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [54]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p54fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ don't pass unknown attribute types
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [55]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p55fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-060</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid type NAME defined in ATTLIST.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's NUTOKEN is not allowed.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's NUTOKENS attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's NUMBER attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's NUMBERS attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's NAME attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's NAMES attribute type is not allowed.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's #CURRENT is not allowed.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist09</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML's #CONREF is not allowed.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p56fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no IDS type
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p56fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no NUMBER type
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p56fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no NAME type
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p56fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no ENTITYS type
+- types must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [56]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p56fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ types must be upper case </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [57]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p57fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no keyword for NMTOKEN enumeration
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-068</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required between NOTATION keyword and list of
+ enumerated choices in &lt;!ATTLIST...&gt; declarations. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ at least one value required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ separator must be '|'
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ notations are NAMEs, not NMTOKENs -- note:
+ Leaving the invalid
+ notation undeclared would cause a validating parser to fail without
+ checking the name syntax, so the notation is declared with an
+ invalid name. A parser that reports error positions should report
+ an error at the AttlistDecl on line 6, before reaching the notation
+ declaration.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ NOTATION must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S after keyword is required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ parentheses are require
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ values are unquoted
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [58]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p58fail8</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ values are unquoted
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-059</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ String literal must be in quotes. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">attlist03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Comma doesn't separate enumerations, unlike in SGML.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p59fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ at least one required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p59fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ separator must be ","
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.1 [59]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p59fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ values are unquoted
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with wrong key word. The string "#required" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with wrong key word. The string "Implied" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with wrong key word. The string "!IMPLIED" is
+ used as the key word in the DefaultDecl in the AttDef in the AttlistDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with a required field missing. There is no
+ attribute value specified after the key word "#FIXED" in the DefaultDecl in
+ the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with a required field missing. The white space is
+ missing between the key word "#FIXED" and the attribute value in the
+ DefaultDecl in the AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with wrong field ordering. The key word "#FIXED"
+ occurs after the attribute value "introduction" in the DefaultDecl in the
+ AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl against WFC of P60. The text replacement of the
+ entity "avalue" contains the "less than" character in the DefaultDecl in the
+ AttDef in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P60-ibm60n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 60</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests DefaultDecl with more than one key word. The "#REQUIRED" and
+ the "#IMPLIED" are used as the key words in the DefaultDecl in the AttDef
+ in the AttlistDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p60fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ keywords must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p60fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required after #FIXED
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p60fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only #FIXED has both keyword and value
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p60fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ #FIXED required value
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3.2 [60]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p60fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only one default type
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-066</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Required whitespace is missing. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-158</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML-ism: "#NOTATION gif" can't have attributes. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ATTLIST declarations apply to only one element, unlike SGML</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ATTLIST declarations are never global, unlike in SGML</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p52fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A name is required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [52]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p52fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A name is required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-064</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required between attribute type and default values
+ in &lt;!ATTLIST...&gt; declarations. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-065</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required between attribute name and type
+ in &lt;!ATTLIST...&gt; declarations. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-067</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required between attribute type and default values
+ in &lt;!ATTLIST...&gt; declarations. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p53fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required before default
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p53fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required before type
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p53fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ type is required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p53fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ default is required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.3 [53]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p53fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ name is requried
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P61-ibm61n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 61</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests conditionalSect with a wrong option. The word "NOTINCLUDE" is
+ used as part of an option which is wrong in the coditionalSect.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong key word. The string "include" is used
+ as a key word in the beginning sequence in the includeSect in the file
+ ibm62n01.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong beginning sequence. An extra "[" occurs
+ in the beginning sequence in the includeSect in the file ibm62n02.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong beginning sequence. A wrong character "?"
+ occurs in the beginning sequence in the includeSect in the file ibm62n03.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with a required field missing. The key word
+ "INCLUDE" is missing in the includeSect in the file ibm62n04.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with a required field missing. The "]" is missing
+ after the key word "INCLUDE" in the includeSect in the file ibm62n05.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong field ordering. The two external subset
+ declarations occur before the key word "INCLUDE" in the includeSect in the
+ file ibm62n06.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with a required field missing. The closing sequence
+ "]](greater than)" is missing in the includeSect in the file ibm62n07.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P62-ibm62n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 62</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with a required field missing. One "]" is missing
+ in the closing sequence in the includeSect in the file ibm62n08.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with wrong key word. The string "ignore" is used
+ as a key word in the beginning sequence in the ignoreSect in the file
+ ibm63n01.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with wrong beginning sequence. An extra "[" occurs
+ in the beginning sequence in the ignoreSect in the file ibm63n02.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with wrong beginning sequence. A wrong character "?"
+ occurs in the beginning sequence in the ignoreSect in the file ibm63n03.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with a required field missing. The key word
+ "IGNORE" is missing in the ignoreSect in the file ibm63n04.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with a required field missing. The "]" is missing
+ after the key word "IGNORE" in the ignoreSect in the file ibm63n05.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests includeSect with wrong field ordering. The two external subset
+ declarations occur before the key word "IGNORE" in the ignoreSect in the
+ file ibm63n06.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P63-ibm63n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 63</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSect with a required field missing. The closing sequence
+ "]](greater than)" is missing in the ignoreSect in the file ibm63n07.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P64-ibm64n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents with wrong beginning sequence. The "?" occurs
+ in beginning sequence the ignoreSectContents in the file ibm64n01.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P64-ibm64n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents with a required field missing.The closing
+ sequence is missing in the ignoreSectContents in the file ibm64n02.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P64-ibm64n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 64</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ignoreSectContents with a required field missing.The beginning
+ sequence is missing in the ignoreSectContents in the file ibm64n03.dtd.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P65-ibm65n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 65</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ignore with illegal string included. The string
+ "]](greater than)" is contained before "this" in the Ignore in the
+ ignoreSectContents in the file ibm65n01.dtd
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P65-ibm65n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 65</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ignore with illegal string included. The string
+ "(less than)![" is contained before "this" in the Ignore in the
+ ignoreSectContents in the file ibm65n02.dtd
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [61]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">cond01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only INCLUDE and IGNORE are conditional section keywords</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [61]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">cond02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Must have keyword in conditional sections</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [61]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p61fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no other types, including TEMP, which is valid in SGML
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Conditional sections must be properly terminated ("]&gt;" used
+ instead of "]]&gt;"). </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-003</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Conditional sections must be properly terminated ("]]&gt;" omitted). </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-004</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Conditional sections must be properly terminated ("]]&gt;" omitted). </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Conditional sections need a '[' after the INCLUDE or IGNORE. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p62fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ INCLUDE must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [62]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p62fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no spaces in terminating delimiter
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [63]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p63fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ IGNORE must be upper case
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [63]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p63fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ delimiters must be balanced
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [64]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p64fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ section delimiters must balance
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3.4 [64]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p64fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ section delimiters must balance
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-176</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Start tags must have matching end tags.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">sgml01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SGML-ism: omitted end tag for EMPTY content</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ start-tag requires end-tag
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ end-tag requires start-tag
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">3 [39]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p39fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ XML documents contain one or more elements</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-025</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Unbound element prefix
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-026</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Unbound attribute prefix
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-084</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the <em>Parsed Entity</em> WFC by referring to an
+ unparsed entity. (This precedes the error of not declaring
+ that entity's notation, which may be detected any time before
+ the DTD parsing is completed.) </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-180</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The <em>Entity Declared</em> WFC requires entities to be declared
+ before they are used in an attribute list declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-185</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the <em>Entity Declared</em> WFC.
+ <em>Note:</em> a nonvalidating parser is permitted not to report
+ this WFC violation, since it would need to read an external
+ parameter entity to distinguish it from a violation of
+ the <em>Standalone Declaration</em> VC.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-ext-sa-001</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the <em>No Recursion</em> WFC by having an external general
+ entity be self-recursive.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#002f" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with the semicolon character missing. The semicolon
+ character is missing at the end of the CharRef in the attribute value in
+ the STag of element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "49" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#5~0" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x002g" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x006G" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#0=2f" is
+ used as the referred character in the CharRef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#56.0" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x00/2f"
+ is used as the referred character in the CharRef in the EntityDecl in the
+ DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#51)" is
+ used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#00 2f"
+ is used as the referred character in the CharRef in the EntityDecl in the
+ DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x0000"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#x001f"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#xfffe"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P66-ibm66n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 66</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CharRef with an illegal character referred to. The "#xffff"
+ is used as the referred character in the attribute value in the EmptyElemTag
+ of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef with a required field missing. The Name is missing
+ in the EntityRef in the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef with a required field missing. The semicolon is
+ missing in the EntityRef in the attribute value in the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef with an extra white space. A white space occurs
+ after the ampersand in the EntityRef in the content of the element "root".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Entity Declared. The name
+ "aAa" in the EntityRef in the AttValue in the STage of the element "root"
+ does not match the Name of any declared entity in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is not declared.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is externally declared, but standalone is "yes".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Entity Declared. The
+ entity with the name "aaa" in the EntityRef in the AttValue in the STag of
+ the element "root" is referred before declared.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: Parsed Entity. The
+ EntityRef in the AttValue in the STag of the element "root" contains the
+ name "aImage" of an unparsed entity.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: No Recursion. The
+ recursive entity reference occurs with the entity declarations for "aaa"
+ and "bbb" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P68-ibm68n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityRef which is against P68 WFC: No Recursion. The
+ indirect recursive entity reference occurs with the entity declarations for
+ "aaa", "bbb", "ccc", "ddd", and "eee" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEReference with a required field missing. The Name "paaa" is
+ missing in the PEReference in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEReference with a required field missing. The semicolon is
+ missing in the PEReference "%paaa" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEReference with an extra white space. There is an extra
+ white space occurs before ";" in the PEReference in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEReference with an extra white space. There is an extra
+ white space occurs after "%" in the PEReference in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEReference which is against P69 WFC: No Recursion. The
+ recursive PE reference occurs with the entity declarations for "paaa" and
+ "bbb" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEReference which is against P69 WFC: No Recursion. The
+ indirect recursive PE reference occurs with the entity declarations for
+ "paaa", "bbb", "ccc", "ddd", and "eee" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-042</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains a character reference to a C0 control character (form-feed),
+legal in XML 1.1 but not 1.0
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-009</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character references may have only decimal or numeric strings.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-022</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character references end with semicolons, always!</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-052</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid character reference. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-093</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Hexadecimal character references may not use the uppercase 'X'.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-179</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid syntax matching double quote is missing. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ terminating ';' is required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no S after '&amp;#'
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no hex digits in numeric reference
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only hex digits in hex references
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no references to non-characters
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [66]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p66fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no references to non-characters
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-007</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ General entity references have no whitespace after the
+ entity name and before the semicolon. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-010</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Ampersand may only appear as part of a general entity reference.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-071</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ENTITY can't reference itself directly or indirectly.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-072</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Undefined ENTITY foo. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-073</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Undefined ENTITY f. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-075</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ENTITY can't reference itself directly or indirectly. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-076</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Undefined ENTITY foo. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-078</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Undefined ENTITY foo. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-079</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ENTITY can't reference itself directly or indirectly. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-080</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ ENTITY can't reference itself directly or indirectly. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-110</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entity reference must be in content of element. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-118</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entity reference expansion is not recursive.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-121</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A name of an ENTITY was started with an invalid character. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p68fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ terminating ';' is required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p68fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no S after '&amp;'
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p68fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no S before ';'
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-163</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid placement of Parameter entity reference. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-164</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid placement of Parameter entity reference. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-008</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ In DTDs, the '%' character must be part of a parameter
+ entity reference.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ PE name immediately after "%"</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ PE name immediately followed by ";"</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p69fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ terminating ';' is required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p69fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no S after '%'
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1 [69]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p69fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no S before ';'
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-106</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Invalid placement of entity declaration. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm70n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The white space is
+ missing between the beginning sequence and the Name "aaa" in the EntityDecl
+ in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The white space is
+ missing between the Name "aaa" and the EntityDef "aString" in the
+ EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The EntityDef is
+ missing in the EntityDecl with the Name "aaa" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The Name is missing
+ in the EntityDecl with the EntityDef "aString" in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with wrong ordering. The Name "aaa" occurs after
+ the EntityDef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with wrong key word. The string "entity" is used
+ as the key word in the beginning sequence in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The closing bracket
+ (greater than) is missing in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P71-ibm71n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 71</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDecl with a required field missing. The exclamation mark
+ is missing in the beginning sequence in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The white space is
+ missing between the beginning sequence and the "%" in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The Name is missing
+ in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The white space is
+ missing between the Name and the PEDef in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The PEDef is missing
+ after the Name "paaa" in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with wrong field ordering. The Name "paaa" occurs
+ after the PEDef in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with wrong field ordering. The "%" and the Name "paaa"
+ occurs after the PEDef in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with wrong key word. The string "entity" is used as
+ the key word in the beginning sequence in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with a required field missing. The closing bracket
+ (greater than) is missing in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P72-ibm72n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 72</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEdecl with wrong closing sequence. The string
+ "!(greater than)" is used as the closing sequence in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P73-ibm73n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 73</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDef with wrong field ordering. The NDataDecl "NDATA
+ JPGformat" occurs before the ExternalID in the EntityDef in the EntityDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P73-ibm73n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 73</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EntityDef with a required field missing. The ExternalID is
+ missing before the NDataDecl in the EntityDef in the EntityDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P74-ibm74n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 74</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PEDef with extra fields. The NDataDecl occurs after the
+ ExternalID in the PEDef in the PEDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong key word. The string "system" is used
+ as the key word in the ExternalID in the EntityDef in the EntityDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong key word. The string "public" is used
+ as the key word in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong key word. The string "Public" is used
+ as the key word in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PublicLiteral and the SystemLiteral in the ExternalID in
+ the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The white space
+ between "SYSTEM" and the Systemliteral is missing in the ExternalID in the
+ EntityDef in the EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The Systemliteral
+ is missing after "SYSTEM" in the ExternalID in the EntityDef in the
+ EntityDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The white space
+ between the PublicLiteral and the Systemliteral is missing in the ExternalID
+ in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The key word
+ "PUBLIC" is missing in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The white space
+ between "PUBLIC" and the PublicLiteral is missing in the ExternalID in the
+ doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The PublicLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The PublicLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with a required field missing. The SystemLiteral
+ is missing in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P75-ibm75n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 75</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests ExternalID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PublicLiteral in the ExternalID in the doctypedecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with wrong key word. The string "ndata" is used as
+ the key word in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with wrong key word. The string "NData" is used as
+ the key word in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with a required field missing. The leading white
+ space is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with a required field missing. The key word "NDATA"
+ is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with a required field missing. The Name after the
+ key word "NDATA" is missing in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with a required field missing. The white space
+ between "NDATA" and the Name is missing in the NDataDecl in the EntityDef
+ in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P76-ibm76n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 76</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NDataDecl with wrong field ordering. The key word "NDATA"
+ occurs after the Name in the NDataDecl in the EntityDef in the GEDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-054</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ PUBLIC requires two literals.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-061</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ External entity declarations require whitespace between public
+ and system IDs.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ PUBLIC literal must be quoted</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SYSTEM identifier must be quoted</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S required after "PUBLIC"
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S required after "SYSTEM"
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S required between literals
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ "SYSTEM" implies only one literal
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only one keyword
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p75fail6</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ "PUBLIC" requires two literals (contrast with SGML)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-069</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is required before an NDATA entity annotation.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-083</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Undefined NOTATION n. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p76fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required before "NDATA"
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p76fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ "NDATA" is upper-case
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p76fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ notation name is required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [76]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p76fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ notation names are Names
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [70]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-109</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tags invalid within EntityDecl. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [70]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p70fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ This is neither
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-062</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entity declarations need space after the entity name. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p71fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required before EntityDef
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p71fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entity name is a Name, not an NMToken
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p71fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no S after "&lt;!"
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [71]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p71fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required after "&lt;!ENTITY"
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-165</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter entity declarations must have a space before
+ the '%'. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p72fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required after "&lt;!ENTITY"
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p72fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required after '%'
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p72fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ S is required after name
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [72]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p72fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Entity name is a name, not an NMToken
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p73fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No typed replacement text
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p73fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Only one replacement value
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p73fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No NDataDecl on replacement text
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p73fail4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Value is required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [73]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p73fail5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ No NDataDecl without value
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-089</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter entities "are" always parsed; NDATA annotations
+ are not permitted.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-091</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Parameter entities "are" always parsed; NDATA annotations
+ are not permitted.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p74fail1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ no NDataDecls on parameter entities
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p74fail2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ value is required
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2 [74]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p74fail3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ only one value
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TextDecl with wrong field ordering. The VersionInfo occurs
+ after the EncodingDecl in the TextDecl in the file "ibm77n01.ent".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TextDecl with wrong key word. The string "XML" is used in the
+ beginning sequence in the TextDecl in the file "ibm77n02.ent".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TextDecl with wrong closing sequence. The character "greater
+ than" is used as the closing sequence in the TextDecl in the file
+ "ibm77n03.ent".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests TextDecl with a required field missing. The closing sequence
+ is missing in the TextDecl in the file "ibm77n04.ent".
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1 [77]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">decl01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ External entities may not have standalone decls. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1 [77]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">dtd07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text declarations (which optionally begin any external entity)
+ are required to have "encoding=...". </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1 [77]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding07</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text declarations (which optionally begin any external entity)
+ are required to have "encoding=...". </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.1 4.3.2 [77, 78]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-ext-sa-002</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ External entities have "text declarations", which do
+ not permit the "standalone=..." attribute that's allowed
+ in XML declarations.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-074</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-103</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ End-tag required for element foo. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-104</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-116</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-117</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-119</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-153</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Text declarations may not begin internal parsed entities;
+ they may only appear at the beginning of external parsed
+ (parameter or general) entities. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-181</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal parsed entities must match the <em>content</em>
+ production to be well formed. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-182</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Internal parsed entities must match the <em>content</em>
+ production to be well formed. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P78-ibm78n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 78</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extParsedEnt with wrong field ordering. The TextDecl occurs
+ after the content in the file ibm78n01.ent.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P78-ibm78n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 78</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extParsedEnt with extra field. A blank line occurs before the
+ TextDecl in the file ibm78n02.ent.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P79-ibm79n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 79</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extPE with wrong field ordering. The TextDecl occurs after
+ the extSubsetDecl (the white space and the comment) in the file
+ ibm79n01.ent.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P79-ibm79n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">parameter</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 79</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests extPE with extra field. A blank line occurs before the
+ TextDecl in the file ibm78n02.ent.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.2 [79]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-007</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ A &lt;!DOCTYPE ...&gt; declaration may not begin any external
+ entity; it's only found once, in the document entity.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with a required field missing. The leading white
+ space is missing in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with a required field missing. The "=" sign is
+ missing in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with a required field missing. The double quoted
+ EncName are missing in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with wrong field ordering. The string "encoding=" occurs after the double quoted EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with wrong field ordering. The "encoding" occurs
+ after the double quoted EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P80-ibm80n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 80</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncodingDecl with wrong key word. The string "Encoding" is
+ used as the key word in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "_" is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "-" is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "." is used as the
+ first character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with illegal characters. The "8-" is used as the
+ initial characters in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "~" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "#" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The ":" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The "/" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P81-ibm81n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 81</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests EncName with an illegal character. The ";" is used as one
+ character in the EncName in the EncodingDecl in the XMLDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-101</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Space is not permitted in an encoding name. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character " " in encoding name</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding02</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character "/" in encoding name</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding03</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character reference in encoding name</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding04</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character ":" in encoding name</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character "@" in encoding name</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [81]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">encoding06</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Illegal character "+" in encoding name</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 and that of the external dtd 1.0.
+ The external dtd contains the invalid XML1.1 but valid XML 1.0 character #x7F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 and that of the external dtd 1.0.
+ The external dtd contains a comment with the invalid XML1.1 but valid XML 1.0
+ character #x80.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 and that of the external dtd 1.0.
+ The external dtd contains a PI with the invalid XML1.1 but valid XML 1.0
+ character #x9F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 and that of the external entity 1.0.
+ The external entity the contains invalid XML1.1 but valid XML 1.0 character #x89.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 and that of the external entity 1.0.
+ The external entity contains the invalid XML1.1 but valid XML 1.0 character #x94.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 and that of the external entity 1.0.
+ The external entity contains the invalid XML1.1 but valid XML 1.0 character #x9F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a textDecl. The external entity contains the invalid XML1.1 but valid XML 1.0
+ character #x7F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a VersionNum in the textDecl. The external entity contains the invalid XML1.1 but
+ valid XML 1.0 character #x9B.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a textDecl. The external entity contains the invalid XML1.1 but valid XML 1.0
+ character #x8D.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a VersionNum in the textDecl. The external entity contains the invalid XML 1.1 but
+ valid XML 1.0 character #x84.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a textDecl. The external entity contains the invalid XML 1.1 but
+ valid XML 1.0 character #x88.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the document entity is 1.1 and the external dtd does not contain
+ a textDecl. The external entity contains the invalid XML 1.1 but
+ valid XML 1.0 character #x8E.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the primary document entity is 1.1 and that of the external
+ dtd is 1.0. The external dtd contains an external entity whose VersionNum is 1.1
+ containing a valid XML1.0 but an invalid XML 1.1 character.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the primary document entity is 1.1 and that of the external
+ dtd is 1.0. The external dtd contains an element declaration with an invalid
+ XML 1.1 and 1.0 name.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the primary document entity is 1.1 and testDecl of the external
+ dtd is absent. The external dtd contains an external entity whose VersionNum is
+ 1.1 containing a valid XML1.0 but an invalid XML 1.1 character #x7F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the primary document entity is 1.0 and VersioNum of the external
+ entity is absent. The replacement text of the entity contains an element followed
+ by the valid XML 1.1 of line character NEL #x85 in its empty elem tag.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the primary document entity is absent and that of the external
+ entity is 1.0. The textDecl in the external entity contains an invalid XML1.0
+ but valid XML 1.1 enf of line character NEL #x85.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the primary document entity is absent and that of the external
+ entity is 1.0. The textDecl in the external entity contains an invalid XML1.0
+ but valid XML 1.1 of line character Unicode line separator #x2028.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n19.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the primary document entity is 1.1 and that of the external
+ dtd is absent. The external dtd contains an external entity whose VersionNum is
+ absent and it contains a valid XML 1.0 but an invalid XML 1.1 character #x94.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n20.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the primary document entity is 1.1 and that of the external
+ dtd is 1.1. The external dtd contains an external entity whose VersionNum is
+ absent and it contains a valid XML 1.0 but an invalid XML 1.1 character #x8F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P77-ibm77n21.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">both</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 77</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The VersionNum of the primary document entity is 1.1 and the texlDecl of the
+ external dtd is absent. The external dtd contains a reference to an external
+ parameter entity whose VersionNum is absent from the textDecl and it contains
+ an invalid XML 1.1 character #x8F.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-092</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The replacement text of this entity has an illegal reference,
+ because the character reference is expanded immediately. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-115</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ The replacement text of this entity is an illegal character
+ reference, which must be rejected when it is parsed in the
+ context of an attribute value.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-120</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Character references are expanded in the replacement text of
+ an internal entity, which is then parsed as usual. Accordingly,
+ &amp; must be doubly quoted - encoded either as <em>&amp;amp;</em>
+ or as <em>&amp;#38;#38;</em>. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with a required field missing. The white space
+ after the beginning sequence of the NotationDecl is missing in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with a required field missing. The Name in the
+ NotationDecl is missing in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with a required field missing. The externalID or
+ the PublicID is missing in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with wrong field ordering. The Name occurs after
+ the "SYSTEM" and the externalID in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with wrong key word. The string "notation" is
+ used as a key word in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with a required field missing. The closing
+ bracket (the greater than character) is missing in the NotationDecl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with wrong beginning sequence. The "!" is missing
+ in the beginning sequence in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P82-ibm82n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 82</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests NotationDecl with wrong closing sequence. The extra "!" occurs
+ in the closing sequence in the NotationDecl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PublicID with wrong key word. The string "public" is used as
+ the key word in the PublicID in the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PublicID with wrong key word. The string "Public" is used as
+ the key word in the PublicID in the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PublicID with a required field missing. The key word "PUBLIC"
+ is missing in the PublicID in the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PublicID with a required field missing. The white space
+ between the "PUBLIC" and the PubidLiteral is missing in the PublicID in
+ the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PublicID with a required field missing. The PubidLiteral is
+ missing in the PublicID in the NotationDcl in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.7</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P83-ibm83n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 83</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests PublicID with wrong field ordering. The key word "PUBLIC"
+ occurs after the PubidLiteral in the PublicID in the NotationDcl.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">41. [68]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-sa-077</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Undefined ENTITY bar. </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">5</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns11-005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NS1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.1 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Illegal use of prefix that has been unbound
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">5.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-035</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Attribute uniqueness: repeated identical attribute
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">5.3</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-036</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Attribute uniqueness: repeated attribute with different prefixes
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x00D7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x00F7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0132
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0133
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x013F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0140
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0149
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x017F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01c4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01CC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n100.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BB6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n101.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BBA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n102.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n103.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n104.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n105.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n106.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C5F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n107.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n108.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C8D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n109.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0C91
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n110.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CA9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n111.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n112.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CBA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n113.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CDF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n114.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0CE2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n115.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n116.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n117.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n118.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n119.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0D62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n120.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E2F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n121.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n122.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n123.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E46
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n124.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E83
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n125.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E85
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n126.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E89
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n127.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E8B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n128.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E8E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n129.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0E98
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n130.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EA0
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n131.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EA4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n132.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EA6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n133.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EA8
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n134.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EAC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n135.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EAF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n136.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EB1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n137.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n138.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EBE
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n139.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0EC5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n140.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0F48
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n141.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0F6A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n142.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x10C6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n143.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x10F7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n144.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1011
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n145.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1104
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n146.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1108
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n147.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x110A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n148.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x110D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n149.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x113B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x01F9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n150.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x113F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n151.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1141
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n152.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x114D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n153.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x114f
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n154.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1151
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n155.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1156
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n156.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x115A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n157.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1162
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n158.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1164
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n159.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1166
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0230
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n160.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x116B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n161.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x116F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n162.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1174
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n163.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x119F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n164.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11AC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n165.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11B6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n166.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11B9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n167.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11BB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n168.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11C3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n169.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11F1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x02AF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n170.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x11FA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n171.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1E9C
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n172.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1EFA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n173.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F16
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n174.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F1E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n175.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F46
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n176.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F4F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n177.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F58
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n178.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F5A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n179.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F5C
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x02CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n180.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1F5E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n181.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #xF17E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n182.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FB5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n183.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FBD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n184.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FBF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n185.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FC5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n186.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FCD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n187.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FD5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n188.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FDC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n189.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FED
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n19.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0387
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n190.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FF5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n191.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x1FFD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n192.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x2127
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n193.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x212F
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n194.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x2183
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n195.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x3095
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n196.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x30FB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n197.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x312D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n198.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #xD7A4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n20.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x038B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n21.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03A2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n22.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n23.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03D7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n24.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03DD
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n25.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03E1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n26.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x03F4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n27.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x040D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n28.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0450
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n29.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x045D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n30.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0482
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n31.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04C5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n32.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04C6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n33.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04C9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n34.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04EC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n35.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04ED
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n36.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04F6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n37.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x04FA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n38.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0557
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n39.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0558
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n40.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0587
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n41.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x05EB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n42.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x05F3
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n43.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0620
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n44.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x063B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n45.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x064B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n46.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06B8
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n47.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06BF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n48.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06CF
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n49.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06D4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n50.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06D6
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n51.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x06E7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n52.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x093A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n53.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x093E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n54.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0962
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n55.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x098D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n56.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0991
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n57.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0992
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n58.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09A9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n59.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09B1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n60.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09B5
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n61.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09BA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n62.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09DE
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n63.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09E2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n64.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x09F2
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n65.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A0B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n66.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n67.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n68.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n69.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n70.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A37
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n71.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n72.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A5B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n73.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A70
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n74.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A75
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n75.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n76.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0ABC
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n77.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0A92
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n78.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0AA9
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n79.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0AB1
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n80.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0AB4
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n81.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0ABA
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n82.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B04
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n83.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B0D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n84.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B11
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n85.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B29
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n86.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B31
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n87.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B34
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n88.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B3A
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n89.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B3E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n90.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B5E
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n91.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B62
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n92.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B8B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n93.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B91
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n94.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B98
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n95.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B9B
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n96.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0B9D
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n97.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BA0
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n98.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BA7
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P85-ibm85n99.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 85</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests BaseChar with an illegal character. The character #x0BAB
+ occurs as the first character of the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P86-ibm86n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ideographic with an illegal character. The character #x4CFF
+ occurs as the first character in the PITarget in the PI in the DTD.
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P86-ibm86n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ideographic with an illegal character. The character #x9FA6
+ occurs as the first character in the PITarget in the PI in the DTD.
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P86-ibm86n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ideographic with an illegal character. The character #x3008
+ occurs as the first character in the PITarget in the PI in the DTD.
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P86-ibm86n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 86</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Ideographic with an illegal character. The character #x302A
+ occurs as the first character in the PITarget in the PI in the DTD.
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x02FF
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0346
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0362
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0487
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05A2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05BA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05BE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05C0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x05C3
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0653
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x06B8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x06B9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x06E9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x06EE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0904
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x093B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n17.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x094E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n18.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0955
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n19.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0964
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n20.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0984
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n21.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09C5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n22.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09C9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n23.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09CE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n24.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09D8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n25.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x09E4
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n26.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A03
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n27.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A3D
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n28.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A46
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n29.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n30.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n31.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A80
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n32.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0A84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n33.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0ABB
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n34.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0AC6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n35.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0ACA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n36.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0ACE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n37.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B04
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n38.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n39.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B44
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n40.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B4A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n41.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n42.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B58
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n43.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0B84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n44.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0BC3
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n45.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0BC9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n46.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0BD6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n47.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C0D
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n48.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C45
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n49.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n50.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C54
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n51.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C81
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n52.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0C84
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n53.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0CC5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n54.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0CC9
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n55.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0CD4
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n56.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0CD7
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n57.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D04
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n58.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D45
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n59.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D49
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n60.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D4E
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n61.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0D58
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n62.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0E3F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n63.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0E3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n64.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0E4F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n66.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0EBA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n67.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0EBE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n68.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0ECE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n69.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F1A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n70.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F36
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n71.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F38
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n72.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F3B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n73.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F3A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n74.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n75.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F85
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n76.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F8C
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n77.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F96
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n78.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0F98
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n79.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0FB0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n80.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0FB8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n81.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x0FBA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n82.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x20DD
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n83.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x20E2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n84.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x3030
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P87-ibm87n85.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 87</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests CombiningChar with an illegal character. The character #x309B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0029
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x003B
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x066A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x06FA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0970
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x09F2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0AF0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0B70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0C65
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0CE5
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0CF0
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n13.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0D70
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n14.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0E5A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n15.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0EDA
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P88-ibm88n16.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 88</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Digit with an illegal character. The character #x0F2A
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x00B6
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x00B8
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x02D2
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x03FE
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x065F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n06.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x0EC7
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n07.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x3006
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n08.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x3030
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n09.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x3036
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n10.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x309C
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n11.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x309F
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">B.</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P89-ibm89n12.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 89</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests Extender with an illegal character. The character #x30FF
+ occurs as the second character in the PITarget in the PI in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E27</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-27</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Contains an irregular UTF-8 sequence (i.e. a surrogate pair)
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E38</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-38</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Entities:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc"><font color="blue">general</font></td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+XML 1.0 document refers to 1.1 entity
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E61</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-61</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+An encoding declaration using an encoding other than UTF-8.
+It should generate a fatal error.
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NE05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-029</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Reserved prefixes and namespaces: declaring the xml prefix incorrectly
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NE05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-030</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Reserved prefixes and namespaces: binding another prefix
+to the xml namespace
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NE05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-031</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Reserved prefixes and namespaces: declaring the xmlns prefix
+with its correct URI (illegal)
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NE05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-032</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Reserved prefixes and namespaces: declaring the xmlns prefix
+with an incorrect URI
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NE05</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-033</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Reserved prefixes and namespaces: binding another prefix
+to the xmlns namespace
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NE08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-042</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Colon in PI name
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NE08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-043</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Colon in entity name
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">NE08</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-044</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Colon in entity name
+</p>
+</td>
+</tr>
+</table>
+<a shape="rect" name="error"/>
+<h3>3.4 XML Documents with Optional Errors</h3>
+<p> Conforming XML 1.0 Processors are permitted to ignore
+ certain errors, or to report them at user option. In this
+ section of this test report are found descriptions of
+ test cases which fit into this category. </p>
+<p> Processor behavior on such test cases does not affect
+ conformance to the XML 1.0 (Second Edition) Recommendation, except as noted. </p>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-004</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace name test: a relative URI (deprecated)
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace name test: a same-document relative URI (deprecated)
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-ns10-006</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Namespace name test: an http IRI that is not a URI
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-055</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has a Latin-1 NEL in the XML declaration (to be made an error in PR)
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-056</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has a UTF-8 NEL in the XML declaration (to be made an error in PR)
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.11</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-057</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+Has a UTF-8 LSEP in the XML declaration (to be made an error in PR)
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.3, 4.2.2 [11]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">o-p11pass1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">OASIS/NIST TESTS, 1-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ system literals may not contain
+ URI fragments
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-008</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+an implausibly-versioned document
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">2.8 4.3.4</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-009</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.1 test suite 13 Feb 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+External general entity has implausible version number
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">not-wf-not-sa-005</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">James Clark XMLTEST cases, 18-Nov-1998</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests the <em>Entity Declared</em> VC by referring to an
+ undefined parameter entity within an external entity.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P68-ibm68i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge2" is referred in the file ibm68i01.dtd", but not declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P68-ibm68i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge1" is referred before declared in the file ibm68i01.dtd".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P68-ibm68i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge2" is referred in the file ibm68i03.ent", but not declared.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P68-ibm68i04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 68</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid EntityRef which is against P68 VC: Entity Declared. The GE with
+ the name "ge1" is referred before declared in the file ibm68i04.ent".
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P69-ibm69i01.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The Name
+ "pe2" in the PEReference in the file ibm69i01.dtd does not match the Name of
+ any declared PE.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P69-ibm69i02.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The PE with
+ the name "pe1" is referred before declared in the file ibm69i02.dtd
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P69-ibm69i03.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The Name
+ "pe3" in the PEReference in the file ibm69i03.ent does not match the Name of
+ any declared PE.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-invalid-P69-ibm69i04.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Tests invalid PEReference which is against P69 VC: Entity Declared. The PE with
+ the name "pe2" is referred before declared in the file ibm69i04.ent.
+ </p>
+<p>There is an output test associated with this
+ input file.</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.1</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">ibm-not-wf-P69-ibm69n05.xml</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">IBM XML Conformance Test Suite - Production 69</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Based on E29 substantial source: minutes XML-Syntax 1999-02-24 E38 in
+ XML 1.0 Errata, this WFC does not apply to P69, but the VC Entity declared
+ still apply.
+ Tests PEReference which is against P69 WFC: Entity Declared. The PE
+ with the name "paaa" is referred before declared in the DTD.
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.2.2 [75]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">uri01</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Sun Microsystems XML Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ SYSTEM ids may not have URI fragments</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pr-xml-euc-jp</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for the EUC-JP encoding, and for text
+ which relies on Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pr-xml-iso-2022-jp</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for the ISO-2022-JP encoding, and for text
+ which relies on Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">pr-xml-shift_jis</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for the Shift_JIS encoding, and for text
+ which relies on Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+ (Also requires ability to process a moderately complex DTD.)
+ </p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">weekly-euc-jp</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for EUC-JP encoding, and
+ XML names which contain Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">weekly-iso-2022-jp</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for ISO-2022-JP encoding, and
+ XML names which contain Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">4.3.3 [4,84]</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">weekly-shift_jis</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Fuji Xerox Japanese Text Tests</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+ Test support for Shift_JIS encoding, and
+ XML names which contain Japanese characters.
+ <em>If a processor does not support this encoding, it must
+ report a fatal error.</em>
+
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E34</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-34</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+A non-deterministic content model is an error even if the element type
+is not used.
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E55</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-55</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+A reference to an unparsed entity in an entity value is an error rather
+than forbidden (unless the entity is referenced, of course)
+</p>
+</td>
+</tr>
+</table>
+<table xmlns="" width="100%">
+<tr valign="top">
+<td colspan="1" rowspan="1" width="40%">
+<table height="100%" width="100%" border="1" bgcolor="#eeeeff">
+<tr>
+<td colspan="1" rowspan="1" width="50%"><b>Sections [Rules]:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">E57</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Test ID:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">rmt-e2e-57</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>RECOMMENDATION:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">XML1.0-errata2e</td>
+</tr>
+<tr valign="top">
+<td colspan="1" rowspan="1" width="50%"><b>Collection:</b></td><td colspan="1" rowspan="1" bgcolor="#ffffcc">Richard Tobin's XML 1.0 2nd edition errata test suite 21 Jul 2003</td>
+</tr>
+</table>
+</td><td colspan="1" rowspan="1" bgcolor="#ccffff">
+<p>
+A value other than preserve or default for xml:space is an error
+</p>
+</td>
+</tr>
+</table>
+<a shape="rect" name="contrib"/>
+<h3>4. Contributors (Non-normative)</h3>
+<p> A team of volunteer members have participated in the
+ development of this work. Contributions have come from:
+ </p>
+<ul>
+<li>Murry Altheim, Sun Microsystems</li>
+<li>Mary Brady, NIST</li>
+<li>Tim Boland, NIST</li>
+<li>David Brownell, Sun Microsystems</li>
+<li>James Clark</li>
+<li>Karin Donker, IBM</li>
+<li>Irina Golfman, Inera Incorporated</li>
+<li>Tony Graham, Mulberry Technologies</li>
+<li>G. Ken Holman, Crane Softwrights Ltd</li>
+<li>Alex Milowski, Veo Systems, Inc</li>
+<li>Makota Murata, Fuji Xerox</li>
+<li>Miles O'Reilly, Microstar Software, Ltd</li>
+<li>Matt Timmermans, Microstar Software, Ltd</li>
+<li>Richard Rivello, NIST</li>
+<li>Lynne Rosenthal, NIST</li>
+<li>Brian Schellar, Chrystal Software</li>
+<li>Bill Smith, Sun Microsystems</li>
+<li>Trevor Veary, Software AG</li>
+<li>Richard Tobin, University of Edinburgh</li>
+<li>Jonathan Marsh, Microsoft </li>
+<li>Daniel Veillard, Red Hat Network </li>
+<li>Jonathan Marsh, Microsoft</li>
+<li>Paul Grosso, Arbortext</li>
+</ul>
+<p>End</p>
+</body>
+</html>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf.xml
new file mode 100644
index 0000000000..6523e3f16d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconf.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)conformance.xml 1.1 98/12/20
+ Original version copyright 1998 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+ Modifications copyright 2001 by OASIS.
+-->
+<?xml-stylesheet href="xmlconformance.xsl" type="text/xsl"?>
+<!DOCTYPE TESTSUITE SYSTEM "testcases.dtd" [
+
+ <!-- Sun-written testcases -->
+ <!ENTITY sun-valid SYSTEM "sun/sun-valid.xml">
+ <!ENTITY sun-invalid SYSTEM "sun/sun-invalid.xml">
+ <!ENTITY sun-not-wf SYSTEM "sun/sun-not-wf.xml">
+ <!ENTITY sun-error SYSTEM "sun/sun-error.xml">
+
+ <!-- James Clark "XMLTEST" -->
+ <!ENTITY jclark-xmltest SYSTEM "xmltest/xmltest.xml">
+
+ <!-- Fuji Xerox "Japanese Documents" -->
+ <!ENTITY xerox-japanese SYSTEM "japanese/japanese.xml">
+
+ <!-- NIST/OASIS test suite -->
+ <!ENTITY nist-oasis SYSTEM "oasis/oasis.xml">
+
+ <!-- IBM tests -->
+ <!ENTITY ibm-invalid SYSTEM "ibm/ibm_oasis_invalid.xml">
+ <!ENTITY ibm-not-wf SYSTEM "ibm/ibm_oasis_not-wf.xml">
+ <!ENTITY ibm-valid SYSTEM "ibm/ibm_oasis_valid.xml">
+ <!ENTITY ibm-xml1.1-invalid SYSTEM "ibm/xml-1.1/ibm_invalid.xml">
+ <!ENTITY ibm-xml1.1-not-wf SYSTEM "ibm/xml-1.1/ibm_not-wf.xml">
+ <!ENTITY ibm-xml1.1-valid SYSTEM "ibm/xml-1.1/ibm_valid.xml">
+
+ <!-- Edinburgh University tests -->
+ <!ENTITY eduni-errata2e SYSTEM "eduni/errata-2e/errata2e.xml">
+ <!ENTITY eduni-xml11 SYSTEM "eduni/xml-1.1/xml11.xml">
+ <!ENTITY eduni-ns10 SYSTEM "eduni/namespaces/1.0/rmt-ns10.xml">
+ <!ENTITY eduni-ns11 SYSTEM "eduni/namespaces/1.1/rmt-ns11.xml">
+ <!ENTITY eduni-errata3e SYSTEM "eduni/errata-3e/errata3e.xml">
+ <!ENTITY eduni-nse SYSTEM "eduni/namespaces/errata-1e/errata1e.xml">
+] >
+<TESTSUITE PROFILE="XML 1.0 (2nd edition) W3C Conformance Test Suite, 6 October 2000">
+<TESTCASES PROFILE="James Clark XML 1.0 Tests" xml:base="xmltest/">
+ &jclark-xmltest;
+</TESTCASES>
+
+<TESTCASES PROFILE="Fuji Xerox Japanese Text Tests XML 1.0 Tests" xml:base="japanese/">
+ &xerox-japanese;
+</TESTCASES>
+
+<TESTCASES PROFILE="Sun Microsystems XML Tests" xml:base="sun/">
+ &sun-valid;
+ &sun-invalid;
+ &sun-not-wf;
+ &sun-error;
+</TESTCASES>
+
+<TESTCASES PROFILE="OASIS/NIST XML 1.0 Tests" xml:base="oasis/">
+ &nist-oasis;
+</TESTCASES>
+
+<TESTCASES PROFILE="IBM XML 1.0 Tests" xml:base="ibm/">
+ &ibm-invalid;
+ &ibm-not-wf;
+ &ibm-valid;
+</TESTCASES>
+<!-- Wrapping TESTCASES elements below added by Dieter Köhler -->
+<TESTCASES PROFILE="IBM XML 1.1 Tests" xml:base="ibm/xml-1.1/">
+ &ibm-xml1.1-invalid;
+ &ibm-xml1.1-not-wf;
+ &ibm-xml1.1-valid;
+</TESTCASES>
+
+<TESTCASES xml:base="eduni/errata-2e/">
+ &eduni-errata2e;
+</TESTCASES>
+<TESTCASES xml:base="eduni/xml-1.1/">
+ &eduni-xml11;
+</TESTCASES>
+<TESTCASES xml:base="eduni/namespaces/1.0/">
+ &eduni-ns10;
+</TESTCASES>
+<TESTCASES xml:base="eduni/namespaces/1.1/">
+ &eduni-ns11;
+</TESTCASES>
+<TESTCASES xml:base="eduni/errata-3e/">
+ &eduni-errata3e;
+</TESTCASES>
+<TESTCASES xml:base="eduni/namespaces/errata-1e/">
+ &eduni-nse;
+</TESTCASES>
+
+</TESTSUITE>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.msxsl b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.msxsl
new file mode 100644
index 0000000000..f33e647d25
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.msxsl
@@ -0,0 +1,527 @@
+<?xml version='1.0'?>
+<!--
+<<<<<<< conformance.msxsl
+ Original version copyright 1999 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+=======
+ XSL IE5 Stylesheet for documenting XML conformance tests.
+ Tested against IE5 5.00.2014.0216
+
+ 1999-06-05 20:10
+
+ XSL 12/16/1998 Stylesheet for documenting XML conformance tests.
+
+ This expects to be run on a document matching the DTD that Sun
+ defined and OASIS modified for merging collections of
+ self-descriptive XML tests.
+
+ Since all those collections will have (by design) the same test
+ architecture, this includes boilerplate describing that design,
+ to be used by all test documentation.
+
+ ISSUES:
+ - Sorting is a bit odd; section numbers can are like "3.3.3"
+ rather than straight numbers, so numeric sort can't work,
+ and yet neither does text sort (2.12 should be after 2.2).
+
+-->
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/TR/WD-xsl"
+ xmlns="http://www.w3.org/TR/WD-xhtml"
+ indent-result="yes"
+ >
+
+<!-- default behaviour - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+<xsl:template><xsl:apply-templates/></xsl:template>
+<xsl:template match="textnode()"><xsl:value-of/></xsl:template>
+
+<!-- selective behaviour - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+
+ <!-- ROOT: write an HTML wrapper -->
+ <xsl:template match="/">
+ <xsl:apply-templates select="TESTSUITE"/>
+ </xsl:template>
+
+ <xsl:template match="TESTSUITE">
+ <!-- XHTML namespace -->
+ <html><head>
+ <xsl:comment>Generated by an XSL stylesheet.</xsl:comment>
+ <title> XML Conformance Tests </title>
+ <meta http-equiv="Content-Type"
+ content="text/html;charset=utf-8"/>
+ <style>
+ <xsl:comment>
+ BODY {
+ font-family: Lucida, Helvetica, Univers, sans-serif;
+ }
+ H1, H2, H3, H4 {
+ text-align: left;
+ color: #0066CC;
+ }
+ </xsl:comment>
+ </style>
+ <style>
+ <xsl:comment>
+ a:hover {
+ color: white;
+ background-color: blue;
+ }
+ </xsl:comment>
+ </style>
+ </head><body bgcolor='#ffffff'>
+ <center>
+ <table border="4" width="90%">
+ <tr >
+ <td>
+ <table>
+ <tr >
+ <td width="40%"><img src="files/a_oasis-logo.gif" width="350" height="125"/></td>
+ <td width="30%"/>
+ <td width="40%" align="right"><img src="files/top3.jpe" width="400" height="125"/></td>
+ </tr>
+ </table>
+ <center>
+ <table>
+ <tr>
+ <td ><b><font size="+2">A Joint Development Effort</font></b></td>
+ </tr>
+ </table>
+ </center>
+ </td>
+ </tr>
+ </table>
+ </center>
+ <p/>
+
+ <p/>
+ <h4>OASIS XML Conformance Subcommittee<br/>XML 1.0 Test Suite, Second Edition<br/>Working Draft<br/>15 March 2001</h4>
+ <dl>
+ <dt><b>This version:</b></dt>
+ <dd><ul>
+ <li><a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.htm">
+ http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.htm</a>
+ (<a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.xml">XML</a>)
+ </li>
+ </ul>
+ </dd>
+ <p/>
+ <dt><b>Current Version:</b></dt>
+ <dd>
+ <ul>
+ <li><a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf.xml">
+ http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf.xml</a></li>
+ </ul>
+ </dd>
+ <p/>
+ <dt><b>Previous Version:</b></dt>
+ <dd>
+ <ul>
+ <li><a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1/xmlconf-19990712.xml">
+ http://www.oasis-open.org/committees/xml-conformance/suite-v1/xmlconf-19990712.xml</a></li>
+ </ul>
+ </dd>
+ <p/>
+ <dt><b>Test Archive:</b></dt>
+ <dd><ul>
+ <li><a href="http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.tar.gz">http://www.oasis-open.org/committees/xml-conformance/suite-v1se/xmlconf-20010315.tar.gz</a>
+ </li>
+ </ul></dd>
+ <p/>
+ <dt><b>OASIS XML Conformance Technical Committee:</b></dt>
+ <dd><ul><li><a href="http://www.oasis-open.org/committees/xml-conformance/">http://www.oasis-open.org/committees/xml-conformance/</a>
+ </li></ul></dd>
+ <p/>
+ <dt><b>Comments:</b></dt>
+ <dd><ul><li>Mary Brady, NIST <a href="mailto:mbrady@nist.gov">&lt;mbrady@nist.gov&gt;</a>
+ </li></ul></dd>
+ <p/>
+ </dl>
+ <hr/>
+
+ <a name="contents"/>
+ <h2>Table of Contents</h2>
+ <ol >
+ <li><a href="#intro">Introduction</a></li>
+ <li><a href="#matrix">Test Matrix</a></li>
+ <ol >
+ <li ><a href="#binary">Binary Tests</a></li>
+ <li><a href="#output">Output Tests</a></li>
+ </ol>
+ <li><a href="#listings">Test Case Descriptions</a></li>
+ <ol >
+ <li><a href="#valid">Valid Documents</a></li>
+ <li><a href="#invalid">Invalid Documents</a></li>
+ <li><a href="#not-wf">Not-WF Documents</a></li>
+ <li><a href="#error">Optional Errors</a></li>
+ </ol>
+ <li><a href="#contrib">Contributors</a></li>
+ </ol>
+ <a name="intro"/>
+ <h2>1. Introduction </h2>
+ <p> The <i>OASIS</i> XML Conformance Subcommittee is concerned with
+ improving the quality of XML processors. The tests described in this
+ document provide a set of metrics to determine how well a
+ particular implementation conforms to the
+ <a href="http://www.w3.org/TR/REC-xml">W3C XML 1.0 (Second Edition) Recommendation </a>.
+ The XML Conformance Test Suite is intended
+ to complement the W3C XML 1.0 (Second Edition) Recommendation. All interpretations of
+ this Recommendation are subject to confirmation by the
+ <a href="http://www.w3.org/XML/Activity.html">W3C XML Coordination Group</a>.
+ </p>
+ <p>
+ Conformance tests can be used by developers, content creators, and
+ users alike to increase their level of confidence in product quality. In
+ circumstances where interoperability is necessary, these tests can also
+ be used to determine that differing implementations support the same set
+ of features. </p>
+
+ <p>This report provides supporting documentation for all of the tests
+ contributed by members of the <i>OASIS</i> XML Conformance Subcommittee.
+ Sources from which these tests have been collected
+ include: <em>
+ <xsl:for-each select="./TESTCASES">
+ <xsl:value-of select="@PROFILE"/>;
+ </xsl:for-each>
+ </em>. Although the tests came from a variety of sources, the actual test
+ descriptions and references back to the recommendation were in many instances
+ added by members of this subcommittee. It is anticipated that this report
+ will supplement the actual tests, which are available from
+ <a href="http://www.oasis-open.org/committees/xml-conformance/xml-test-suite.html">
+ http://www.oasis-open.org/committees/xml-conformance/xml-test-suite.html</a>.</p>
+
+ <p>Comments/suggestions should be
+ forwarded to the XML Conformance Subcommittee Chair, Mary Brady <a href="mailto:mbrady@nist.gov">&lt;mbrady@nist.gov&gt;</a>.</p>
+
+
+ <a name="matrix"/>
+ <h2>2. Test Matrix </h2>
+
+ <p> Two basic types of test are presented here. These are
+ respectively <em><a href="#binary">Binary Tests</a></em>
+ and <em><a href="#output">Output Tests</a></em>. </p>
+
+ <a name="binary"/>
+ <h3>2.1 Binary Tests </h3>
+
+ <p> <em>Binary</em> conformance tests are documents which
+ are grouped into one of four categories. Given a document
+ in a given category, each kind of XML parser must treat it
+ consistently and either accept it (a <em>positive test</em>)
+ or reject it (a <em>negative test</em>). It is in that sense
+ that the tests are termed "binary". The XML 1.0 (Second Edition) Recommendation
+ talks in terms of two types of XML processor:
+ <em>validating</em> ones, and <em>nonvalidating</em> ones.
+ There are two differences between these types of processors: </p>
+
+ <ol>
+ <li> Validating processors check special productions that
+ nonvalidating parsers don't, called <em>validity
+ constraints</em>. (Both must check a basic set of productions,
+ requiring XML documents to be <em>well formed</em>.) </li>
+
+ <li> Nonvalidating processors are permitted to not
+ include <em>external entities</em>, such as files with
+ text. Accordingly, they may not report errors which
+ would have been detected had those entities been read.</li>
+ </ol>
+
+ <p> There are two types of such entity, <em>parameter
+ entities</em> holding definitions which affect validation
+ and other processing; and <em>general entities</em> which
+ hold marked up text. It will be appreciated that there are
+ then five kinds of XML processor: validating processors,
+ and four kinds of nonvalidating processor based on the
+ combinations of external entity which they include.</p>
+
+ <center>
+ <table border="1" bgcolor="#ffffff" cellpadding="4">
+
+ <caption>
+ <b>Basic XML Parsing Test Matrix</b><br/>
+ Test Document Type v. Parser Type
+ </caption>
+
+ <tr bgcolor="#ffffcc">
+ <th widthH="5%" rowspan="2">&#160;</th>
+ <th widthH="20%" colspan="2">Nonvalidating</th>
+ <th widthH="5%" rowspan="2">Validating</th>
+ </tr>
+
+ <tr bgcolor="#ffffcc">
+ <th>External Entities<br/>Ignored (3 cases)</th>
+ <th>External Entities<br/>Read</th>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Valid Documents</th>
+ <td align="center"><b>accept</b></td>
+ <td align="center"><b>accept</b></td>
+ <td align="center"><b>accept</b></td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Invalid Documents</th>
+ <td align="center"><b>accept</b></td>
+ <td align="center"><b>accept</b></td>
+ <td align="center">reject</td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Non-WF Documents</th>
+ <td align="center">reject</td>
+ <td align="center">reject</td>
+ <td align="center">reject</td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">WF Errors tied<br/>
+ to External Entity</th>
+ <td align="center"><b>accept</b><br/>(varies)</td>
+ <td align="center">reject</td>
+ <td align="center">reject</td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Documents with<br/> Optional Errors</th>
+ <td align="center">(not specified)</td>
+ <td align="center">(not specified)</td>
+ <td align="center">(not specified)</td>
+ </tr>
+
+ </table>
+ </center>
+
+ <p> At this time, the XML community primarily uses parsers
+ which are in the rightmost two columns of this table, calling
+ them <em>Well Formed XML Parsers</em> (or "WF Parsers") and
+ <em>Validating XML Parsers</em>. A second test matrix
+ could be defined to address the variations in the types of
+ of XML processor which do not read all external entities.
+ That additional matrix is not provided here at this time. </p>
+
+
+ <a name="output"/>
+ <h3>2.2 Output Tests</h3>
+
+ <p> The XML 1.0 (Second Edition) Recommendation places a number of requirements
+ on XML processors, to ensure that they report information to
+ applications as needed. Such requirements are testable.
+ Validating processors are required to report slightly more
+ information than nonvalidating ones, so some tests will
+ require separate output files. Some of the information that
+ must be reported will not be reportable without reading all
+ the external entities in a particular test. Many of the tests for
+ valid documents are paired with an output file to ensure that
+ the XML processor provides the correct information. </p>
+
+ <p>The output of these tests is provided in two forms, as
+ described in <a href="sun/cxml.html">SUN Microsystems XML
+ Canonical Forms</a>. At present, the <em>James Clark</em>
+ collection provides corresponding output in <em>First XML
+ Canonical Form</em>, and the <em>SUN Microsystems</em>
+ collection provides corresponding output in <em>Second XML
+ Canonical Form</em>. When the <a href="http://www.w3.org/XML/">
+ W3C XML Group </a>finalizes its work on Canonical XML, these
+ output files will be updated.
+ </p>
+
+ <a name="listings"/>
+ <h2>3. Test Case Descriptions</h2>
+
+ <p> This section of this report contains descriptions of test
+ cases, each of which fits into the categories noted above.
+ Each test case includes a document of one of the types in the
+ binary test matrix above (e.g. valid or invalid documents).
+ </p>
+
+ <p> In some cases, an <a href="#output">output file </a>, as
+ described in Section 2.2, will also be associated with
+ a valid document, which is used for output testing. If such
+ a file exists, it will be noted at the end of the description
+ of the input document. </p>
+
+ <p> The description for each test case is presented as a two
+ part table. The right part describes what the test does.
+ This description is intended to have enough detail to evaluate
+ diagnostic messages. The left part includes: <ul>
+
+ <li> An entry describing the <em>Sections and/or Rules</em>
+ from the <a href="http://www.w3.org/TR/2000/REC-xml-20001006">
+ XML 1.0 (Second Edition) Recommendation</a> which this case excercises.</li>
+
+ <li> The unique <em>Test ID</em> within a given <em>Collection</em>
+ for this test. </li>
+
+ <li> The <em>Collection</em> from which this test originated.
+ Given the <em>Test ID</em> and the <em>Collection</em>, each
+ test can be uniquely identified. </li>
+
+ <li> Some tests may have a field identifying the kinds of
+ external <em>Entities</em> a nonvalidating processor must
+ include (parameter, general, or both) to be able to
+ detect any errors in that test case. </li>
+
+ </ul></p>
+
+ <p><em>Note that the output format of this report is subject
+ to change. Also, since XSL does not currently support the
+ type of sorting rule necessary to make section numbers like
+ 2.12 appear after 2.2, the ordering is not quite what is
+ desired.</em></p>
+
+ <a name="valid"/>
+ <h3>3.1 Valid XML Documents</h3>
+
+ <p> All conforming <em> XML 1.0 Processors </em> are
+ <b>required</b> to accept valid documents, reporting no
+ errors. In this section of this test report are found
+ descriptions of test cases which fit into this category. </p>
+
+ <xsl:apply-templates select=".// TEST [ @TYPE = 'valid' ]"
+ order-by="@SECTIONS"/>
+
+ <a name="invalid"/>
+ <h3>3.2 Invalid XML Documents</h3>
+
+ <p> All conforming XML 1.0 <em> Validating Processors </em>
+ are <b>required</b> to report recoverable errors in the case
+ of documents which are <em>Invalid</em>. Such errors are
+ violations of some <em>validity constraint (VC)</em>. </p>
+
+ <p> If a validating processor does not report an error when
+ given one of these test cases, or if the error reported is
+ a fatal error, it is not conformant. If the error reported
+ does not correspond to the problem listed in this test
+ description, that could also be a conformance problem; it
+ might instead be a faulty diagnostic. </p>
+
+ <p> All conforming XML 1.0 <em> Nonvalidating Processors </em>
+ should accept these documents, reporting no errors. </p>
+
+ <xsl:apply-templates select=".//TEST[@TYPE='invalid']"
+ order-by="@SECTIONS"/>
+
+ <a name="not-wf"/>
+ <h3>3.3 Documents that are Not Well Formed</h3>
+
+ <p> All conforming XML 1.0 Processors are <b>required</b> to
+ report fatal errors in the case of documents which are not
+ <em>Well Formed</em>. Such errors are basically of two types:
+ <em>(a)</em> the document violates the XML grammar; or else
+ <em>(b)</em> it violates a <em>well formedness constraint
+ (WFC)</em>. There is a single <em>exception to that
+ requirement</em>: nonvalidating processors which do not read
+ certain types of external entities are not required to detect
+ (and hence report) these errors. </p>
+
+ <p> If a processor does not report a fatal error when given
+ one of these test cases, it is not conformant. If the error
+ reported does not correspond to the problem listed in this
+ test description, that could also be a conformance problem;
+ it might instead be a faulty diagnostic. </p>
+
+ <xsl:apply-templates select=".// TEST [ @TYPE = 'not-wf' ]"
+ order-by="@SECTIONS"/>
+
+ <a name="error"/>
+ <h3>3.4 XML Documents with Optional Errors</h3>
+
+ <p> Conforming XML 1.0 Processors are permitted to ignore
+ certain errors, or to report them at user option. In this
+ section of this test report are found descriptions of
+ test cases which fit into this category. </p>
+
+ <p> Processor behavior on such test cases does not affect
+ conformance to the XML 1.0 (Second Edition) Recommendation, except as noted. </p>
+
+ <xsl:apply-templates select=".//TEST[@TYPE='error']"
+ order-by="@SECTIONS"/>
+
+ <a name="contrib"/>
+ <h3>4. Contributors (Non-normative)</h3>
+
+ <p> A team of volunteer members have participated in the
+ development of this work. Contributions have come from:
+ </p>
+ <ul>
+ <li>Murry Altheim, Sun Microsystems</li>
+ <li>Mary Brady, NIST</li>
+ <li>Tim Boland, NIST</li>
+ <li>David Brownell, Sun Microsystems</li>
+ <li>James Clark</li>
+ <li>Karin Donker, IBM</li>
+ <li>Irina Golfman, Inera Incorporated</li>
+ <li>Tony Graham, Mulberry Technologies</li>
+ <li>G. Ken Holman, Crane Softwrights Ltd</li>
+ <li>Alex Milowski, Veo Systems, Inc</li>
+ <li>Makota Murata, Fuji Xerox</li>
+ <li>Miles O'Reilly, Microstar Software, Ltd</li>
+ <li>Matt Timmermans, Microstar Software, Ltd</li>
+ <li>Richard Rivello, NIST</li>
+ <li>Lynne Rosenthal, NIST</li>
+ <li>Brian Schellar, Chrystal Software</li>
+ <li>Bill Smith, Sun Microsystems</li>
+ <li>Trevor Veary, Software AG</li>
+ <li>Eric Ye, IBM</li>
+ </ul>
+ <p>End</p>
+
+ </body></html>
+ </xsl:template>
+
+ <xsl:template match="TEST">
+ <table width="100%">
+ <tr valign="top">
+ <td width='40%'><table bgcolor='#eeeeff'
+ border='1' width='100%' height="100%">
+ <tr>
+ <td width='50%'><b>Sections [Rules]:</b></td>
+ <td bgcolor='#ffffcc'>
+ <xsl:value-of select="@SECTIONS"/></td>
+ </tr>
+ <tr valign="top">
+ <td width='50%'><b>Test ID:</b></td>
+ <td bgcolor='#ffffcc'>
+ <xsl:value-of select="@ID"/></td>
+ </tr>
+ <xsl:if test=".[not ( @ENTITIES = 'none')
+ and ( @TYPE = 'not-wf' )]">
+ <tr valign="top">
+ <td width='50%'><b>Entities:</b></td>
+ <td bgcolor='#ffffcc'><font color='blue'>
+ <xsl:value-of select="@ENTITIES"/>
+ </font></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="../@PROFILE">
+ <tr valign="top">
+ <td width='50%'><b>Collection:</b></td>
+ <td bgcolor='#ffffcc'>
+ <xsl:value-of select="../@PROFILE"/>
+ </td>
+ </tr>
+ </xsl:if>
+ </table></td>
+ <td bgcolor='#ccffff'>
+ <p><xsl:apply-templates/></p>
+ <xsl:if test="@OUTPUT | @OUTPUT3">
+ <p>There is an output test associated with this
+ input file.</p>
+ </xsl:if>
+ </td>
+ </tr>
+ </table>
+ </xsl:template>
+
+ <!-- XT takes 'B|EM' and xsl:copy, IE5b2 doesn't -->
+ <xsl:template match="EM">
+ <em><xsl:apply-templates/></em>
+ </xsl:template>
+ <xsl:template match="B">
+ <b><xsl:apply-templates/></b>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.xsl b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.xsl
new file mode 100644
index 0000000000..8a7e54c6dd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmlconformance.xsl
@@ -0,0 +1,512 @@
+<?xml version='1.0'?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!--
+<<<<<<< conformance.xsl
+ Original version copyright 1999 by Sun Microsystems, Inc.
+ All Rights Reserved.
+ Modifications copyright 1999 by OASIS.
+ Modifications copyright 2001 by OASIS.
+ Modifications copyright 2002 by W3C.
+=======
+ XSL Stylesheet for documenting XML conformance tests.
+ Tested against LOTUS Xalan processor.
+>>>>>>> 1.3
+
+ XSL 2001-03-15 Stylesheet for documenting XML conformance tests.
+
+ This expects to be run on a document matching the DTD that Sun
+ defined for merging collections of self-descriptive XML tests.
+
+ Since all those collections will have (by design) the same test
+ architecture, this includes boilerplate describing that design,
+ to be used by all test documentation.
+
+ ISSUES:
+ - Sorting is a bit odd; section numbers can are like "3.3.3"
+ rather than straight numbers, so numeric sort can't work,
+ and yet neither does text sort (2.12 should be after 2.2).
+-->
+
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:output method="html" indent="yes"/>
+
+ <!-- ROOT: write an HTML wrapper -->
+ <xsl:template match="/TESTSUITE">
+ <!-- XHTML namespace -->
+
+ <html xmlns="http://www.w3.org/1999/xhtml"><head>
+ <title> XML Conformance Tests </title>
+ <meta http-equiv="Content-Type"
+ content="text/html;charset=utf-8"/>
+ <style type="text/css">
+
+ tr.premiere { background-color: #BEDCE6; }
+
+ th { text-align: left; vertical-align: top }
+
+ .editor { color: red; }
+
+ .countdown { color: white; background-color: red; }
+
+ blockquote, q { font-family: Arial, Helvetica, sans-serif; }
+
+ .quote { font-family: Arial, Helvetica, sans-serif; }
+
+ pre.quote { margin-left: 2.5em; }
+
+ ol.quote { font-family: Arial, Helvetica, sans-serif; margin-left: 3em; }
+
+ .diff-add { background-color: yellow; }
+
+ .diff-chg { background-color: lime; }
+
+ .diff-del { text-decoration: line-through; }
+
+ </style>
+
+ </head><body bgcolor='#ffffff'>
+ <p>
+ <a shape="rect" href="http://www.w3.org/">
+ <img border="0" width="72" height="48" alt="W3C" src="http://www.w3.org/Icons/WWW/w3c_home"/>
+ </a>
+
+ <a href="http://www.w3.org/Architecture/"
+
+ rel="in-domain"><img src="http://www.w3.org/Icons/arch" alt="Architecture Domain" border="0"/></a> <a
+
+ href="../" rel="in-area"> XML</a> | <a href="/Member/#confidential">Member-Confidential!</a></p>
+
+ <h1 align="center">XML W3C Conformance Test Suite</h1>
+ <h1 align="center">30 October 2003</h1> <dl>
+
+
+ <dt><b>This version:</b></dt>
+ <dd><ul>
+ <li><p><a shape="rect" href="xmlconf-20031030.htm">
+ http://www.w3.org/XML/Test/xmlconf-20031030.htm</a>
+ </p>
+ </li>
+ </ul>
+ </dd>
+
+ <dt><b>Current Version:</b></dt>
+ <dd>
+ <ul>
+ <li><p><a shape="rect" href="xmlconf-20031030.htm">
+ http://www.w3.org/XML/Test/xmlconf-20031030.htm</a>
+ </p></li>
+ </ul>
+ </dd>
+
+ <dt><b>Previous Version:</b></dt>
+ <dd>
+ <ul>
+ <li><p><a shape="rect" href="xmlconf-20020606.htm">
+ http://www.w3.org/XML/Test/xmlconf-20020606.htm</a>
+ </p></li>
+ </ul>
+ </dd>
+
+ <dt><b>Test Archive:</b></dt>
+ <dd><ul>
+ <li><p><a shape="rect" href="xmlts20031030.zip">http://www.w3.org/XML/Test/xmlts20031030.zip</a>
+ </p></li>
+ <li><p><a shape="rect" href="xmlts20031030.tar">http://www.w3.org/XML/Test/xmlts20031030.tar</a>
+ </p></li>
+ </ul></dd>
+
+ <dt><b>W3C XML Core Working Group:</b></dt>
+ <dd><ul><li><p><a href="http://www.w3.org/XML/Group/Core">http://www.w3.org/XML/Group/Core</a>
+ </p></li></ul></dd>
+
+ <dt><b>Comments:</b></dt>
+ <dd><ul><li>Sandra I. Martinez, NIST <a href="mailto:public-xml-testsuite@w3.org"> public-xml-testsuite@w3.org</a>
+ </li></ul></dd>
+
+ </dl>
+
+ <a name="contents"/>
+ <h2>Table of Contents</h2>
+ <ol >
+ <li><a href="#intro">Introduction</a></li>
+ <li><a href="#matrix">Test Matrix</a></li>
+ <ol >
+ <li ><a href="#binary">Binary Tests</a></li>
+ <li><a href="#output">Output Tests</a></li>
+ </ol>
+ <li><a href="#listings">Test Case Descriptions</a></li>
+ <ol >
+ <li><a href="#valid">Valid Documents</a></li>
+ <li><a href="#invalid">Invalid Documents</a></li>
+ <li><a href="#not-wf">Not-WF Documents</a></li>
+ <li><a href="#error">Optional Errors</a></li>
+ </ol>
+ <li><a href="#contrib">Contributors</a></li>
+ </ol>
+ <a name="intro"/>
+ <h2>1. Introduction </h2>
+ <p>
+ The tests described in this document provide an initial set of metrics to determine how well a
+ particular implementation conforms to the following recommendations:
+ <a href="http://www.w3.org/TR/REC-xml">W3C XML
+ 1.0 (Second Edition) Recommendation</a>,
+ <a href="http://www.w3.org/XML/Group/2003/09/PER-xml-20030911">
+ Extensible Markup Language (XML) 1.0 (Third Edition)</a>,
+ <a href="http://www.w3.org/XML/Group/2003/10/PR-xml11-20031010/Overview.html">Extensible Markup Language (XML) 1.1 (First Edition)</a>,
+ and <a href="http://www.w3.org/XML/Group/2003/05/PR-xml-names11/">Namespaces in XML 1.1</a>.
+ The report properly identify the tests associated to each recommendation.
+ All interpretations of these Recommendations are subject to confirmation by the
+ <a href="http://www.w3.org/XML/">
+ W3C XML Group </a>.
+ </p>
+ <p>
+ Conformance tests can be used by developers, content creators, and
+ users alike to increase their level of confidence in product quality. In
+ circumstances where interoperability is necessary, these tests can also
+ be used to determine that differing implementations support the same set
+ of features. </p>
+
+ <p>The XML Test Suite was transferred from OASIS to W3C and is being augmented to reflect the
+ current work of the W3C XML Core Working Group,
+ This report provides supporting documentation for all the tests included in
+ the test suite. Sources from which these tests have been collected
+ include: <em>
+ <xsl:for-each select="TESTCASES">
+ <xsl:value-of select="@PROFILE"/>
+ <xsl:text>; </xsl:text>
+ </xsl:for-each>
+ </em>. </p>
+
+ <a name="matrix"/>
+ <h2>2. Test Matrix </h2>
+
+ <p> Two basic types of test are presented here. These are
+ respectively <em><a href="#binary">Binary Tests</a></em>
+ and <em><a href="#output">Output Tests</a></em>. </p>
+
+ <a name="binary"/>
+ <h3>2.1 Binary Tests </h3>
+
+ <p> <em>Binary</em> conformance tests are documents which
+ are grouped into one of four categories. Given a document
+ in a given category, each kind of XML parser must treat it
+ consistently and either accept it (a <em>positive test</em>)
+ or reject it (a <em>negative test</em>). It is in that sense
+ that the tests are termed "binary". The XML 1.0 (Second Edition) Recommendation
+ talks in terms of two types of XML processor:
+ <em>validating</em> ones, and <em>nonvalidating</em> ones.
+ There are two differences between these types of processors: </p>
+
+ <ol>
+ <li> Validating processors check special productions that
+ nonvalidating parsers don't, called <em>validity
+ constraints</em>. (Both must check a basic set of productions,
+ requiring XML documents to be <em>well formed</em>.) </li>
+
+ <li> Nonvalidating processors are permitted to not
+ include <em>external entities</em>, such as files with
+ text. Accordingly, they may not report errors which
+ would have been detected had those entities been read.</li>
+ </ol>
+
+ <p> There are two types of such entity, <em>parameter
+ entities</em> holding definitions which affect validation
+ and other processing; and <em>general entities</em> which
+ hold marked up text. It will be appreciated that there are
+ then five kinds of XML processor: validating processors,
+ and four kinds of nonvalidating processor based on the
+ combinations of external entity which they include.</p>
+
+ <center>
+ <table border="1" bgcolor="#ffffff" cellpadding="4">
+
+ <caption>
+ <b>Basic XML Parsing Test Matrix</b><br/>
+ Test Document Type v. Parser Type
+ </caption>
+
+ <tr bgcolor="#ffffcc">
+ <th widthH="5%" rowspan="2"><xsl:text> </xsl:text></th>
+ <th widthH="20%" colspan="2">Nonvalidating</th>
+ <th widthH="5%" rowspan="2">Validating</th>
+ </tr>
+
+ <tr bgcolor="#ffffcc">
+ <th>External Entities<br/>Ignored (3 cases)</th>
+ <th>External Entities<br/>Read</th>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Valid Documents</th>
+ <td align="center"><b>accept</b></td>
+ <td align="center"><b>accept</b></td>
+ <td align="center"><b>accept</b></td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Invalid Documents</th>
+ <td align="center"><b>accept</b></td>
+ <td align="center"><b>accept</b></td>
+ <td align="center">reject</td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Non-WF Documents</th>
+ <td align="center">reject</td>
+ <td align="center">reject</td>
+ <td align="center">reject</td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">WF Errors tied<br/>
+ to External Entity</th>
+ <td align="center"><b>accept</b><br/>(varies)</td>
+ <td align="center">reject</td>
+ <td align="center">reject</td>
+ </tr>
+
+ <tr>
+ <th bgcolor="#ffffcc">Documents with<br/> Optional Errors</th>
+ <td align="center">(not specified)</td>
+ <td align="center">(not specified)</td>
+ <td align="center">(not specified)</td>
+ </tr>
+
+ </table>
+ </center>
+
+ <p> At this time, the XML community primarily uses parsers
+ which are in the rightmost two columns of this table, calling
+ them <em>Well Formed XML Parsers</em> (or "WF Parsers") and
+ <em>Validating XML Parsers</em>. A second test matrix
+ could be defined to address the variations in the types of
+ of XML processor which do not read all external entities.
+ That additional matrix is not provided here at this time. </p>
+
+
+ <a name="output"/>
+ <h3>2.2 Output Tests</h3>
+
+ <p> The XML 1.0 (Second Edition) Recommendation places a number of requirements
+ on XML processors, to ensure that they report information to
+ applications as needed. Such requirements are testable.
+ Validating processors are required to report slightly more
+ information than nonvalidating ones, so some tests will
+ require separate output files. Some of the information that
+ must be reported will not be reportable without reading all
+ the external entities in a particular test. Many of the tests for
+ valid documents are paired with an output file as the canonical
+ representation of the input file, to ensure that the XML
+ processor provides the correct information. </p>
+
+ <a name="listings"/>
+ <h2>3. Test Case Descriptions</h2>
+
+ <p> This section of this report contains descriptions of test
+ cases, each of which fits into the categories noted above.
+ Each test case includes a document of one of the types in the
+ binary test matrix above (e.g. valid or invalid documents).
+ </p>
+
+ <p> In some cases, an <a href="#output">output file </a>, as
+ described in Section 2.2, will also be associated with
+ a valid document, which is used for output testing. If such
+ a file exists, it will be noted at the end of the description
+ of the input document. </p>
+
+ <p> The description for each test case is presented as a two
+ part table. The right part describes what the test does.
+ This description is intended to have enough detail to evaluate
+ diagnostic messages. The left part includes: <ul>
+
+ <li> An entry describing the <em>Sections and/or Rules</em>
+ from the <a href="http://www.w3.org/TR/2000/REC-xml-20001006">
+ XML 1.0 (Second Edition) Recommendation</a> which this case excercises.</li>
+
+ <li> The unique <em>Test ID</em> within a given <em>Collection</em>
+ for this test. </li>
+
+ <li> The <em>Collection</em> from which this test originated.
+ Given the <em>Test ID</em> and the <em>Collection</em>, each
+ test can be uniquely identified.</li>
+
+ <li> Some tests may have a field identifying the kinds of
+ external <em>Entities</em> a nonvalidating processor must
+ include (parameter, general, or both) to be able to
+ detect any errors in that test case. </li>
+
+ </ul></p>
+
+ <a name="valid"/>
+ <h3>3.1 Valid XML Documents</h3>
+
+ <p> All conforming <em> XML 1.0 Processors </em> are
+ <b>required</b> to accept valid documents, reporting no
+ errors. In this section of this test report are found
+ descriptions of test cases which fit into this category. </p>
+
+ <xsl:apply-templates select="//TEST[@TYPE='valid']">
+ <xsl:sort select="@SECTIONS"/>
+ </xsl:apply-templates>
+
+ <a name="invalid"/>
+ <h3>3.2 Invalid XML Documents</h3>
+
+ <p> All conforming XML 1.0 <em> Validating Processors </em>
+ are <b>required</b> to report recoverable errors in the case
+ of documents which are <em>Invalid</em>. Such errors are
+ violations of some <em>validity constraint (VC)</em>. </p>
+
+ <p> If a validating processor does not report an error when
+ given one of these test cases, or if the error reported is
+ a fatal error, it is not conformant. If the error reported
+ does not correspond to the problem listed in this test
+ description, that could also be a conformance problem; it
+ might instead be a faulty diagnostic. </p>
+
+ <p> All conforming XML 1.0 <em> Nonvalidating Processors </em>
+ should accept these documents, reporting no errors. </p>
+
+ <xsl:apply-templates select="//TEST[@TYPE='invalid']">
+ <xsl:sort select="@SECTIONS"/>
+ </xsl:apply-templates>
+
+ <a name="not-wf"/>
+ <h3>3.3 Documents that are Not Well Formed</h3>
+
+ <p> All conforming XML 1.0 Processors are <b>required</b> to
+ report fatal errors in the case of documents which are not
+ <em>Well Formed</em>. Such errors are basically of two types:
+ <em>(a)</em> the document violates the XML grammar; or else
+ <em>(b)</em> it violates a <em>well formedness constraint
+ (WFC)</em>. There is a single <em>exception to that
+ requirement</em>: nonvalidating processors which do not read
+ certain types of external entities are not required to detect
+ (and hence report) these errors. </p>
+
+ <p> If a processor does not report a fatal error when given
+ one of these test cases, it is not conformant. If the error
+ reported does not correspond to the problem listed in this
+ test description, that could also be a conformance problem;
+ it might instead be a faulty diagnostic. </p>
+
+ <xsl:apply-templates select="//TEST[@TYPE='not-wf']">
+ <xsl:sort select="@SECTIONS"/>
+ </xsl:apply-templates>
+
+ <a name="error"/>
+ <h3>3.4 XML Documents with Optional Errors</h3>
+
+ <p> Conforming XML 1.0 Processors are permitted to ignore
+ certain errors, or to report them at user option. In this
+ section of this test report are found descriptions of
+ test cases which fit into this category. </p>
+
+ <p> Processor behavior on such test cases does not affect
+ conformance to the XML 1.0 (Second Edition) Recommendation, except as noted. </p>
+
+ <xsl:apply-templates select="//TEST[@TYPE='error']">
+ <xsl:sort select="@SECTIONS"/>
+ </xsl:apply-templates>
+
+ <a name="contrib"/>
+ <h3>4. Contributors (Non-normative)</h3>
+
+ <p> A team of volunteer members have participated in the
+ development of this work. Contributions have come from:
+ </p>
+ <ul>
+ <li>Murry Altheim, Sun Microsystems</li>
+ <li>Mary Brady, NIST</li>
+ <li>Tim Boland, NIST</li>
+ <li>David Brownell, Sun Microsystems</li>
+ <li>James Clark</li>
+ <li>Karin Donker, IBM</li>
+ <li>Irina Golfman, Inera Incorporated</li>
+ <li>Tony Graham, Mulberry Technologies</li>
+ <li>G. Ken Holman, Crane Softwrights Ltd</li>
+ <li>Alex Milowski, Veo Systems, Inc</li>
+ <li>Makota Murata, Fuji Xerox</li>
+ <li>Miles O'Reilly, Microstar Software, Ltd</li>
+ <li>Matt Timmermans, Microstar Software, Ltd</li>
+ <li>Richard Rivello, NIST</li>
+ <li>Lynne Rosenthal, NIST</li>
+ <li>Brian Schellar, Chrystal Software</li>
+ <li>Bill Smith, Sun Microsystems</li>
+ <li>Trevor Veary, Software AG</li>
+ <li>Richard Tobin, University of Edinburgh</li>
+ <li>Jonathan Marsh, Microsoft </li>
+ <li>Daniel Veillard, Red Hat Network </li>
+ <li>Jonathan Marsh, Microsoft</li>
+ <li>Paul Grosso, Arbortext</li>
+
+ </ul>
+
+ <p>End</p>
+ </body></html>
+ </xsl:template>
+
+ <xsl:template match="TEST">
+ <table width="100%">
+ <tr valign="top">
+ <td width='40%'><table bgcolor='#eeeeff'
+ border='1' width='100%' height="100%">
+ <tr>
+ <td width='50%'><b>Sections [Rules]:</b></td>
+ <td bgcolor='#ffffcc'>
+ <xsl:value-of select="@SECTIONS"/></td>
+ </tr>
+ <tr valign="top">
+ <td width='50%'><b>Test ID:</b></td>
+ <td bgcolor='#ffffcc'>
+ <xsl:value-of select="@ID"/></td>
+ </tr>
+ <tr valign="top">
+ <td width='50%'><b>RECOMMENDATION:</b></td>
+ <td bgcolor='#ffffcc'>
+ <xsl:value-of select="@RECOMMENDATION"/></td>
+ </tr>
+ <xsl:if test="not ( @ENTITIES = 'none')
+ and ( @TYPE = 'not-wf' )">
+ <tr valign="top">
+ <td width='50%'><b>Entities:</b></td>
+ <td bgcolor='#ffffcc'><font color='blue'>
+ <xsl:value-of select="@ENTITIES"/>
+ </font></td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="../@PROFILE">
+ <tr valign="top">
+ <td width='50%'><b>Collection:</b></td>
+ <td bgcolor='#ffffcc'>
+ <xsl:value-of select="../@PROFILE"/>
+ </td>
+ </tr>
+ </xsl:if>
+ </table></td>
+ <td bgcolor='#ccffff'>
+ <p>
+ <xsl:apply-templates/></p>
+ <xsl:if test="@OUTPUT | @OUTPUT3">
+ <p>There is an output test associated with this
+ input file.</p>
+ </xsl:if>
+ </td>
+ </tr>
+ </table>
+ </xsl:template>
+
+ <!-- XT takes 'B|EM' and xsl:copy, IE5b2 doesn't -->
+ <xsl:template match="EM">
+ <em><xsl:apply-templates/></em>
+ </xsl:template>
+ <xsl:template match="B">
+ <b><xsl:apply-templates/></b>
+ </xsl:template>
+</xsl:stylesheet>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries
new file mode 100644
index 0000000000..56dc3e5713
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries
@@ -0,0 +1,6 @@
+/canonxml.html/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/readme.html/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/xmltest.xml/1.11/Wed Apr 13 19:30:48 2005//
+D/invalid////
+D/not-wf////
+D/valid////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository
new file mode 100644
index 0000000000..e4b881877e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html
new file mode 100644
index 0000000000..2ba0edf6c6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html
@@ -0,0 +1,44 @@
+<HTML>
+<TITLE>Canonical XML</TITLE>
+<BODY>
+<H1>Canonical XML</H1>
+<P>
+This document defines a subset of XML called canonical XML.
+The intended use of canonical XML is in testing XML processors,
+as a representation of the result of parsing an XML document.
+<P>
+Every well-formed XML document has a unique structurally equivalent
+canonical XML document. Two structurally equivalent XML
+documents have a byte-for-byte identical canonical XML document.
+Canonicalizing an XML document requires only information that an XML
+processor is required to make available to an application.
+<P>
+A canonical XML document conforms to the following grammar:
+<PRE>
+CanonXML ::= Pi* element Pi*
+element ::= Stag (Datachar | Pi | element)* Etag
+Stag ::= '&lt;' Name Atts '&gt;'
+Etag ::= '&lt;/' Name '&gt;'
+Pi ::= '&lt;?' Name ' ' (((Char - S) Char*)? - (Char* '?&gt;' Char*)) '?&gt;'
+Atts ::= (' ' Name '=' '"' Datachar* '"')*
+Datachar ::= '&amp;amp;' | '&amp;lt;' | '&amp;gt;' | '&amp;quot;'
+ | '&amp;#9;'| '&amp;#10;'| '&amp;#13;'
+ | (Char - ('&amp;' | '&lt;' | '&gt;' | '"' | #x9 | #xA | #xD))
+Name ::= (see XML spec)
+Char ::= (see XML spec)
+S ::= (see XML spec)
+</PRE>
+<P>
+Attributes are in lexicographical order (in Unicode bit order).
+<P>
+A canonical XML document is encoded in UTF-8.
+<P>
+Ignorable white space is considered significant and is treated equivalently
+to data.
+<P>
+<ADDRESS>
+<A HREF="mailto:jjc@jclark.com">James Clark</A>
+</ADDRESS>
+
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent
new file mode 100644
index 0000000000..4cb848b438
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent
@@ -0,0 +1,2 @@
+<!ENTITY % e "(#PCDATA">
+<!ELEMENT doc %e;)>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml
new file mode 100644
index 0000000000..5a3a96d1ab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "002.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent
new file mode 100644
index 0000000000..85e16474a6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent
@@ -0,0 +1,2 @@
+<!ENTITY % e ">">
+<!ELEMENT doc (#PCDATA) %e;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml
new file mode 100644
index 0000000000..383553d24f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "005.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent
new file mode 100644
index 0000000000..116ca79657
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent
@@ -0,0 +1,2 @@
+<!ENTITY % e "(#PCDATA)>">
+<!ELEMENT doc %e;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml
new file mode 100644
index 0000000000..2f14e839e2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "006.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries
new file mode 100644
index 0000000000..04159c511f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries
@@ -0,0 +1,7 @@
+/002.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/006.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/not-sa////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository
new file mode 100644
index 0000000000..3df0ffe37c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/invalid
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent
new file mode 100644
index 0000000000..26f2d8beb2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent
@@ -0,0 +1,3 @@
+<!ENTITY % e "INCLUDE[">
+<!ELEMENT doc (#PCDATA)>
+<![ %e; <!ATTLIST doc a1 CDATA "v1"> ]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml
new file mode 100644
index 0000000000..b639f2551c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "022.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries
new file mode 100644
index 0000000000..104a6d8a5a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries
@@ -0,0 +1,3 @@
+/022.ent/1.1/Tue Feb 26 18:02:12 2002//
+/022.xml/1.1/Tue Feb 26 18:02:12 2002//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository
new file mode 100644
index 0000000000..f86b20a1d9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries
new file mode 100644
index 0000000000..9692ca4b59
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries
@@ -0,0 +1,2 @@
+/022.xml/1.1/Tue Feb 26 18:03:20 2002//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository
new file mode 100644
index 0000000000..54370965bc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries
new file mode 100644
index 0000000000..1784810501
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log
new file mode 100644
index 0000000000..818f7c93e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log
@@ -0,0 +1,3 @@
+A D/ext-sa////
+A D/not-sa////
+A D/sa////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository
new file mode 100644
index 0000000000..18854d8755
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/not-wf
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent
new file mode 100644
index 0000000000..378a2074b7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent
@@ -0,0 +1 @@
+&e; \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml
new file mode 100644
index 0000000000..aa624cbe71
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e SYSTEM "001.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent
new file mode 100644
index 0000000000..2cd184a213
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent
@@ -0,0 +1,3 @@
+<?xml version="1.0" standalone="yes"?>
+data
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml
new file mode 100644
index 0000000000..9eaf91724f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "002.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent
new file mode 100644
index 0000000000..ac292ee2f3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?><?xml version="1.0" encoding="UTF-8"?>
+data
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml
new file mode 100644
index 0000000000..bb60b663ef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "003.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries
new file mode 100644
index 0000000000..85dc74e395
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries
@@ -0,0 +1,7 @@
+/001.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/002.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/003.ent/1.2/Fri Feb 22 18:52:54 2002//
+/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository
new file mode 100644
index 0000000000..702914cf3a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent
new file mode 100644
index 0000000000..00096e572e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent
@@ -0,0 +1,3 @@
+<![ INCLUDE [
+<!ELEMENT doc (#PCDATA)>
+]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml
new file mode 100644
index 0000000000..36188451ae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "001.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml
new file mode 100644
index 0000000000..dd73174135
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e "<?xml version='1.0' encoding='UTF-8'?>">
+%e;
+]>
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent
new file mode 100644
index 0000000000..abf1b1a35e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent
@@ -0,0 +1,2 @@
+<!ELEMENT doc (#PCDATA)>
+<![ IGNORE [
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml
new file mode 100644
index 0000000000..dd01f41126
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "003.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent
new file mode 100644
index 0000000000..552e4f520a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent
@@ -0,0 +1,2 @@
+<!ELEMENT doc (#PCDATA)>
+<![ INCLUDE [
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml
new file mode 100644
index 0000000000..20cdf6d0e5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "004.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent
new file mode 100644
index 0000000000..9a369cef12
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent
@@ -0,0 +1,2 @@
+<!ELEMENT doc (#PCDATA)>
+%e;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml
new file mode 100644
index 0000000000..383553d24f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "005.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent
new file mode 100644
index 0000000000..771daf1915
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent
@@ -0,0 +1,3 @@
+<![INCLUDE
+<!ELEMENT doc (#PCDATA)>
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml
new file mode 100644
index 0000000000..2f14e839e2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "006.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent
new file mode 100644
index 0000000000..9e9866d2ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent
@@ -0,0 +1,3 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml
new file mode 100644
index 0000000000..38897e34ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "007.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent
new file mode 100644
index 0000000000..f8b1cd3dad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent
@@ -0,0 +1,2 @@
+<!ELEMENT doc ANY>
+<!ENTITY e "100%">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml
new file mode 100644
index 0000000000..54351009cd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "008.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent
new file mode 100644
index 0000000000..f70eaea9c4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent
@@ -0,0 +1,3 @@
+<!ELEMENT doc EMPTY>
+<!ENTITY % e "<!--">
+%e; -->
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml
new file mode 100644
index 0000000000..9aa72898c2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "009.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent
new file mode 100644
index 0000000000..54f3c821b8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent
@@ -0,0 +1,2 @@
+<!ENTITY % e "<!ELEMENT ">
+%e; doc (#PCDATA)>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml
new file mode 100644
index 0000000000..963e4c2f75
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "010.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent
new file mode 100644
index 0000000000..aae4cc2929
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent
@@ -0,0 +1,3 @@
+<!ENTITY % e1 "<!ELEMENT ">
+<!ENTITY % e2 ">">
+%e1; doc (#PCDATA) %e2;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml
new file mode 100644
index 0000000000..dd40c958c3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "011.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries
new file mode 100644
index 0000000000..bfc0687397
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries
@@ -0,0 +1,22 @@
+/001.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/003.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/004.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/006.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/007.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/008.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/009.ent/1.1/Mon Mar 25 18:59:43 2002//
+/009.xml/1.1/Mon Mar 25 18:59:17 2002//
+/010.ent/1.1/Mon Mar 25 18:34:47 2002//
+/010.xml/1.1/Mon Mar 25 18:33:57 2002//
+/011.ent/1.1/Mon Mar 25 19:08:52 2002//
+/011.xml/1.1/Mon Mar 25 19:08:40 2002//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository
new file mode 100644
index 0000000000..031f3dedd2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml
new file mode 100644
index 0000000000..d33ec68dcd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml
@@ -0,0 +1,5 @@
+<doc>
+<doc
+?
+<a</a>
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml
new file mode 100644
index 0000000000..0a64d52428
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml
@@ -0,0 +1,4 @@
+<doc>
+<.doc></.doc>
+</doc>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml
new file mode 100644
index 0000000000..e0b8bae4a4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml
@@ -0,0 +1 @@
+<doc><? ?></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml
new file mode 100644
index 0000000000..e85bc96e56
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml
@@ -0,0 +1 @@
+<doc><?target some data></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml
new file mode 100644
index 0000000000..7cd44ef10c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml
@@ -0,0 +1 @@
+<doc><?target some data?</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml
new file mode 100644
index 0000000000..8594c35cc7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml
@@ -0,0 +1 @@
+<doc><!-- a comment -- another --></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml
new file mode 100644
index 0000000000..286756fdd5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml
@@ -0,0 +1 @@
+<doc>&amp no refc</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml
new file mode 100644
index 0000000000..29ef40306b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml
@@ -0,0 +1 @@
+<doc>&.entity;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml
new file mode 100644
index 0000000000..8e3ff7de10
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml
@@ -0,0 +1 @@
+<doc>&#RE;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml
new file mode 100644
index 0000000000..a6790846c9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml
@@ -0,0 +1 @@
+<doc>A & B</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml
new file mode 100644
index 0000000000..57eaf9fc48
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml
@@ -0,0 +1 @@
+<doc a1></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml
new file mode 100644
index 0000000000..1b2539ffa6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml
@@ -0,0 +1 @@
+<doc a1=v1></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml
new file mode 100644
index 0000000000..3540df9143
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml
@@ -0,0 +1 @@
+<doc a1="v1'></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml
new file mode 100644
index 0000000000..a613115609
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml
@@ -0,0 +1 @@
+<doc a1="<foo>"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml
new file mode 100644
index 0000000000..f2baf947b5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml
@@ -0,0 +1 @@
+<doc a1=></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml
new file mode 100644
index 0000000000..22d4b2e265
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml
@@ -0,0 +1 @@
+<doc a1="v1" "v2"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml
new file mode 100644
index 0000000000..a76f5929e9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml
@@ -0,0 +1 @@
+<doc><![CDATA[</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml
new file mode 100644
index 0000000000..66e204acc4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml
@@ -0,0 +1 @@
+<doc><![CDATA [ stuff]]></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml
new file mode 100644
index 0000000000..b835c2d752
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml
@@ -0,0 +1 @@
+<doc></>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml
new file mode 100644
index 0000000000..b30cfcfc10
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml
@@ -0,0 +1 @@
+<doc a1="A & B"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml
new file mode 100644
index 0000000000..1bfa84aa64
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml
@@ -0,0 +1 @@
+<doc a1="a&b"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml
new file mode 100644
index 0000000000..44c803bf1b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml
@@ -0,0 +1 @@
+<doc a1="&#123:"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml
new file mode 100644
index 0000000000..b877ae2a6b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml
@@ -0,0 +1 @@
+<doc 12="34"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml
new file mode 100644
index 0000000000..cf68f2c073
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml
@@ -0,0 +1,3 @@
+<doc>
+<123></123>
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml
new file mode 100644
index 0000000000..6cba95cd78
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml
@@ -0,0 +1 @@
+<doc>]]></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml
new file mode 100644
index 0000000000..347984fa73
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml
@@ -0,0 +1 @@
+<doc>]]]></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml
new file mode 100644
index 0000000000..cfafaf0d70
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml
@@ -0,0 +1,3 @@
+<doc>
+<!-- abc
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml
new file mode 100644
index 0000000000..522714993a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml
@@ -0,0 +1,4 @@
+<doc>
+<?a pi that is not closed
+</doc>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml
new file mode 100644
index 0000000000..9a8008bc9f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml
@@ -0,0 +1 @@
+<doc>abc]]]>def</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml
new file mode 100644
index 0000000000..25861fa19b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml
@@ -0,0 +1 @@
+<doc>A form feed ( ) is not legal in data</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml
new file mode 100644
index 0000000000..f946536f39
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml
@@ -0,0 +1 @@
+<doc><?pi a form feed ( ) is not allowed in a pi?></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml
new file mode 100644
index 0000000000..75952017ca
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml
@@ -0,0 +1 @@
+<doc><!-- a form feed ( ) is not allowed in a comment --></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml
new file mode 100644
index 0000000000..afd2328402
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml
@@ -0,0 +1 @@
+<doc>abcdef</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml
new file mode 100644
index 0000000000..d74a77719b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml
@@ -0,0 +1 @@
+<doc >A form-feed is not white space or a name character</doc >
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml
new file mode 100644
index 0000000000..e1fc920522
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml
@@ -0,0 +1 @@
+<doc>1 < 2 but not in XML</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml
new file mode 100644
index 0000000000..b8ecb21ba1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml
@@ -0,0 +1,2 @@
+<doc></doc>
+Illegal data
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml
new file mode 100644
index 0000000000..2e02662926
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml
@@ -0,0 +1,2 @@
+<doc></doc>
+&#32;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml
new file mode 100644
index 0000000000..68b2803f82
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml
@@ -0,0 +1 @@
+<doc x="foo" y="bar" x="baz"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml
new file mode 100644
index 0000000000..80429e3e40
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml
@@ -0,0 +1 @@
+<doc><a></aa></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml
new file mode 100644
index 0000000000..dc8ba5a434
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml
@@ -0,0 +1,2 @@
+<doc></doc>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml
new file mode 100644
index 0000000000..30bcdd6bfe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml
@@ -0,0 +1,2 @@
+<doc/>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml
new file mode 100644
index 0000000000..4ae50efc7b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml
@@ -0,0 +1 @@
+<doc/></doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml
new file mode 100644
index 0000000000..41824eee4b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml
@@ -0,0 +1,2 @@
+<doc/>
+Illegal data
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml
new file mode 100644
index 0000000000..3fc232dc37
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml
@@ -0,0 +1 @@
+<doc/><doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml
new file mode 100644
index 0000000000..00c10f00bf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml
@@ -0,0 +1,4 @@
+<doc>
+<a/
+</doc>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml
new file mode 100644
index 0000000000..265cb15301
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml
@@ -0,0 +1,3 @@
+<doc>
+<a/</a>
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml
new file mode 100644
index 0000000000..d18a4a4440
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml
@@ -0,0 +1,3 @@
+<doc>
+<a / >
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml
new file mode 100644
index 0000000000..67419c1ed5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml
@@ -0,0 +1,3 @@
+<doc>
+</doc>
+<![CDATA[]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml
new file mode 100644
index 0000000000..3cf0e79422
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml
@@ -0,0 +1,4 @@
+<doc>
+<a><![CDATA[xyz]]]></a>
+<![CDATA[]]></a>
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml
new file mode 100644
index 0000000000..b52df12cc4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml
@@ -0,0 +1,3 @@
+<!-- a comment -->
+<![CDATA[]]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml
new file mode 100644
index 0000000000..8283895990
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml
@@ -0,0 +1,3 @@
+<!-- a comment -->
+&#32;
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml
new file mode 100644
index 0000000000..9d7f36920f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml
@@ -0,0 +1 @@
+<doc></DOC>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml
new file mode 100644
index 0000000000..eda553c6d3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY foo PUBLIC "some public id">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml
new file mode 100644
index 0000000000..cbb3683a9d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc [
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml
new file mode 100644
index 0000000000..a681684c58
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc -- a comment -- []>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml
new file mode 100644
index 0000000000..848d347120
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "whatever" -- a comment -->
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml
new file mode 100644
index 0000000000..daba266af2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 (foo,bar) #IMPLIED>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml
new file mode 100644
index 0000000000..316083dc25
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 NMTOKEN v1>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml
new file mode 100644
index 0000000000..9a610fd38f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 NAME #IMPLIED>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml
new file mode 100644
index 0000000000..59181e706f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e PUBLIC "whatever""e.ent">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml
new file mode 100644
index 0000000000..e62e9cd370
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY foo"some text">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml
new file mode 100644
index 0000000000..98675b9040
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<![INCLUDE[ ]]>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml
new file mode 100644
index 0000000000..3888c46b8b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST e a1 CDATA"foo">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml
new file mode 100644
index 0000000000..da9cafd137
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1(foo|bar) #IMPLIED>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml
new file mode 100644
index 0000000000..9c09eb4e5d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 (foo|bar)#IMPLIED>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml
new file mode 100644
index 0000000000..7e0809bd34
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 (foo)"foo">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml
new file mode 100644
index 0000000000..53a80a83a8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 NOTATION(foo) #IMPLIED>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml
new file mode 100644
index 0000000000..6f891dd5e1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!NOTATION eps SYSTEM "eps.exe">
+<!-- missing space before NDATA -->
+<!ENTITY foo SYSTEM "foo.eps"NDATA eps>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml
new file mode 100644
index 0000000000..faf4b0ae4c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml
@@ -0,0 +1,2 @@
+<!-- a comment ending with three dashes --->
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml
new file mode 100644
index 0000000000..5bd3908968
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ENTITY e1 "&e2;">
+<!ENTITY e2 "&e3;">
+<!ENTITY e3 "&e1;">
+]>
+<doc>&e1;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml
new file mode 100644
index 0000000000..743ba79429
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml
@@ -0,0 +1 @@
+<doc>&foo;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml
new file mode 100644
index 0000000000..2578af42ec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "whatever">
+]>
+<doc>&f;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml
new file mode 100644
index 0000000000..f8abaeb22c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ENTITY e "</foo><foo>">
+]>
+<doc>
+<foo>&e;</foo>
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml
new file mode 100644
index 0000000000..d3dbf50ed6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ENTITY e1 "&e2;">
+<!ENTITY e2 "&e3;">
+<!ENTITY e3 "&e1;">
+]>
+<doc a="&e1;"></doc>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml
new file mode 100644
index 0000000000..60546720e7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml
@@ -0,0 +1 @@
+<doc a="&foo;"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml
new file mode 100644
index 0000000000..f8ac23a5a2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY foo "&bar;">
+]>
+<doc a="&foo;"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml
new file mode 100644
index 0000000000..446cd85ef9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA "&foo;">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml
new file mode 100644
index 0000000000..da016fd3b2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc [
+<!ENTITY e1 "&e2;">
+<!ENTITY e2 "&e3;">
+<!ENTITY e3 "&e1;">
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA "&e1;">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml
new file mode 100644
index 0000000000..fa4b9e428d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc [
+<!ENTITY e1 "&e2;">
+<!ENTITY e2 "&e3;">
+<!ENTITY e3 "&e1;">
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA #FIXED "&e1;">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml
new file mode 100644
index 0000000000..d676100e8a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e SYSTEM "nul">
+]>
+<doc a="&e;"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml
new file mode 100644
index 0000000000..3217d6f8b4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ENTITY e SYSTEM "nul">
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA "&e;">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml
new file mode 100644
index 0000000000..469d43fd42
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e SYSTEM "nul" NDATA n>
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml
new file mode 100644
index 0000000000..abbbcdea69
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ENTITY e SYSTEM "nul" NDATA n>
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA "&e;">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml
new file mode 100644
index 0000000000..ac0aeca3e4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc PUBLIC "[" "null.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml
new file mode 100644
index 0000000000..df6adfd884
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY foo PUBLIC "[" "null.xml">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml
new file mode 100644
index 0000000000..ed49492a7a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!NOTATION foo PUBLIC "[" "null.ent">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml
new file mode 100644
index 0000000000..da0a68c401
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA #IMPLIED>
+<!ENTITY e '"'>
+]>
+<doc a="&e;></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml
new file mode 100644
index 0000000000..0c6cf404c2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY % foo SYSTEM "foo.xml" NDATA bar>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml
new file mode 100644
index 0000000000..3fb72f3cc0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "<foo a='&#60;'></foo>">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml
new file mode 100644
index 0000000000..a61d0914f8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!NOTATION n SYSTEM "n">
+<!ENTITY % foo SYSTEM "foo.xml" NDATA n>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml
new file mode 100644
index 0000000000..be5266dada
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "<foo a='&#38;'></foo>">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml
new file mode 100644
index 0000000000..4af61bc645
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml
@@ -0,0 +1 @@
+<doc>&#X58;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml
new file mode 100644
index 0000000000..bdec7a4660
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml
@@ -0,0 +1,2 @@
+<?xml VERSION="1.0"?>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml
new file mode 100644
index 0000000000..090b8b4eec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml
@@ -0,0 +1,2 @@
+<?xml encoding="UTF-8" version="1.0"?>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml
new file mode 100644
index 0000000000..d806c3b952
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0"encoding="UTF-8" ?>
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml
new file mode 100644
index 0000000000..d4def544b0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0' encoding="UTF-8" ?>
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml
new file mode 100644
index 0000000000..9798496aa3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" version="1.0"?>
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml
new file mode 100644
index 0000000000..d5be08eff0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" valid="no" ?>
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml
new file mode 100644
index 0000000000..51e06231c2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" standalone="YES" ?>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml
new file mode 100644
index 0000000000..afa5a455fc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding=" UTF-8"?>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml
new file mode 100644
index 0000000000..8734adaa6e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0 " ?>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml
new file mode 100644
index 0000000000..6c4716798f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "&#60;foo>">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml
new file mode 100644
index 0000000000..dd57396239
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "<foo>">
+]>
+<doc>&e;</foo></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml
new file mode 100644
index 0000000000..809e705870
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml
@@ -0,0 +1,4 @@
+<?pi stuff?>
+<![CDATA[]]>
+<doc>
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml
new file mode 100644
index 0000000000..d32319ef09
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml
@@ -0,0 +1,2 @@
+<?pi data?>
+&#32;<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml
new file mode 100644
index 0000000000..3dfd8200e2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<![CDATA[]]>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml
new file mode 100644
index 0000000000..af5cf50d48
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml
@@ -0,0 +1,3 @@
+<doc>
+<![CDATA [ ]]>
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml
new file mode 100644
index 0000000000..5afc03e8db
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "<doc></doc>">
+]>
+&e;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml
new file mode 100644
index 0000000000..cf54ebe5c0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY e "">
+]>
+<doc></doc>
+&e;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml
new file mode 100644
index 0000000000..84a469f5d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "foo='bar'">
+]>
+<doc &e;></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml
new file mode 100644
index 0000000000..0c5c1a4341
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml
@@ -0,0 +1,3 @@
+<doc>
+<![cdata[data]]>
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml
new file mode 100644
index 0000000000..04fc9d2318
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY % foo "&">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml
new file mode 100644
index 0000000000..1261ee49e1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY foo "&">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml
new file mode 100644
index 0000000000..f111dbe153
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "&#38;">
+]>
+<doc a="&e;"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml
new file mode 100644
index 0000000000..84bb762fdf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "&#38;#9">
+]>
+<doc>&e;7;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml
new file mode 100644
index 0000000000..e4a5e572ef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "&#38;">
+]>
+<doc>&e;#97;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml
new file mode 100644
index 0000000000..494d53d208
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "#">
+]>
+<doc>&&e;97;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml
new file mode 100644
index 0000000000..aefaa44a1c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ENTITY e "&#38;">
+]>
+<doc>
+&e;#38;
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml
new file mode 100644
index 0000000000..b7d6ff9ce9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ENTITY e "&#38;">
+]>
+<doc>
+&e;
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml
new file mode 100644
index 0000000000..2b4adcc6b4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY #DEFAULT "default">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml
new file mode 100644
index 0000000000..ef0b057cee
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a, (b) | c)?>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml
new file mode 100644
index 0000000000..06d65f045b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ((doc?)))>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml
new file mode 100644
index 0000000000..3bbe0f91a6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (doc|#PCDATA)*>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml
new file mode 100644
index 0000000000..5f9c22c0c6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ((#PCDATA))>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml
new file mode 100644
index 0000000000..13e74d6d5e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)+>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml
new file mode 100644
index 0000000000..a379b9e539
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)?>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml
new file mode 100644
index 0000000000..dd706bb21f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc CDATA>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml
new file mode 100644
index 0000000000..d4e4461a6d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc - - (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml
new file mode 100644
index 0000000000..fa7be641f1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (doc?) +(foo)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml
new file mode 100644
index 0000000000..f34ed453b5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (doc?) -(foo)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml
new file mode 100644
index 0000000000..ab6cc416e9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a, (b, c), (d, (e, f) | g))?>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml
new file mode 100644
index 0000000000..d2aa604e9f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a *)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml
new file mode 100644
index 0000000000..c8919c5ef8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a) *>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml
new file mode 100644
index 0000000000..e639e8b6ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a & b)?>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml
new file mode 100644
index 0000000000..499e68bcea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc O O (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml
new file mode 100644
index 0000000000..723b77f776
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc(#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml
new file mode 100644
index 0000000000..16934cc88e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (doc*?)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml
new file mode 100644
index 0000000000..34df52ed93
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ()>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml
new file mode 100644
index 0000000000..467d5ed301
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "<&#x309a;></&#x309a;>">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml
new file mode 100644
index 0000000000..409d0a7568
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "<X&#xe5c;></X&#xe5c;>">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml
new file mode 100644
index 0000000000..20e88f88b3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#0;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml
new file mode 100644
index 0000000000..0ee1c614f8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#31;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml
new file mode 100644
index 0000000000..437548c0ba
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#xFFFF;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml
new file mode 100644
index 0000000000..71b187a933
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#xD800;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml
new file mode 100644
index 0000000000..d0bfbca723
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#x110000;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml
new file mode 100644
index 0000000000..3b6145615f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml
@@ -0,0 +1,3 @@
+
+<?xml version="1.0"?>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml
new file mode 100644
index 0000000000..774dce18fd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml
@@ -0,0 +1,3 @@
+<!-- -->
+<?xml version="1.0"?>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml
new file mode 100644
index 0000000000..725eea0dec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<?xml version="1.0"?>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml
new file mode 100644
index 0000000000..44f6b6df92
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml
@@ -0,0 +1,3 @@
+<doc>
+<?xml version="1.0"?>
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml
new file mode 100644
index 0000000000..fecc4f24e3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml
@@ -0,0 +1,3 @@
+<doc>
+</doc>
+<?xml version="1.0"?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml
new file mode 100644
index 0000000000..b5c5cb26ae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml
@@ -0,0 +1,2 @@
+<?xml encoding="UTF-8"?>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml
new file mode 100644
index 0000000000..5e2973707e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e "<?xml encoding='UTF-8'?>">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml
new file mode 100644
index 0000000000..96e01d63f5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml
@@ -0,0 +1,2 @@
+<?XML version="1.0"?>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml
new file mode 100644
index 0000000000..4f16d0f163
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml
@@ -0,0 +1,2 @@
+<?xmL version="1.0"?>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml
new file mode 100644
index 0000000000..c6d93fd312
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml
@@ -0,0 +1,3 @@
+<doc>
+<?xMl version="1.0"?>
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml
new file mode 100644
index 0000000000..2f058dac3e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml
@@ -0,0 +1,3 @@
+<doc>
+<?xmL?>
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml
new file mode 100644
index 0000000000..32b90b722d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!NOTATION gif PUBLIC "image/gif" "">
+<!ATTLIST #NOTATION gif a1 CDATA #IMPLIED>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml
new file mode 100644
index 0000000000..066244cb91
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e "<![CDATA[Tim & Michael]]>">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml
new file mode 100644
index 0000000000..85424acb1b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e "">
+<!ENTITY foo "%e;">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml
new file mode 100644
index 0000000000..4f8a5b7b6b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY % e "#PCDATA">
+<!ELEMENT doc (%e;)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml
new file mode 100644
index 0000000000..efae4b190e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e1 "">
+<!ENTITY % e2 "%e1;">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml
new file mode 100644
index 0000000000..e14fb76c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e "">
+]>
+%e;
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml
new file mode 100644
index 0000000000..98dd267c21
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e "">
+] %e; >
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml
new file mode 100644
index 0000000000..36c04618ef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY% e "">
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml
new file mode 100644
index 0000000000..ee2ce28630
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml
@@ -0,0 +1 @@
+<doc>ï¿¿</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml
new file mode 100644
index 0000000000..9bdc6c1278
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml
@@ -0,0 +1 @@
+<doc>￾</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml
new file mode 100644
index 0000000000..f83221a3ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml
@@ -0,0 +1 @@
+<doc>í €</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml
new file mode 100644
index 0000000000..310029b976
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml
@@ -0,0 +1 @@
+<doc>í°€</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml
new file mode 100644
index 0000000000..cfa0aee155
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml
@@ -0,0 +1 @@
+<doc>÷€€€</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml
new file mode 100644
index 0000000000..48b5c7d3bc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml
@@ -0,0 +1,2 @@
+<!-- ï¿¿ -->
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml
new file mode 100644
index 0000000000..6651d4d299
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml
@@ -0,0 +1,2 @@
+<?pi ï¿¿?>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml
new file mode 100644
index 0000000000..f9f9f42023
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml
@@ -0,0 +1 @@
+<doc a="ï¿¿"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml
new file mode 100644
index 0000000000..42bef861c6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml
@@ -0,0 +1 @@
+<doc><![CDATA[ï¿¿]]></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml
new file mode 100644
index 0000000000..69912f36d2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e "ï¿¿">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml
new file mode 100644
index 0000000000..9c8e2e47d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml
new file mode 100644
index 0000000000..6bc8228879
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>Aï¿¿</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml
new file mode 100644
index 0000000000..e8f2d18eed
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc a="&#34;></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml
new file mode 100644
index 0000000000..e8f1f419db
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ENTITY e "&#34;>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml
new file mode 100644
index 0000000000..569d553a8c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA "&e;">
+<!ENTITY e "v">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml
new file mode 100644
index 0000000000..4341d99ee2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY e "&#60;![CDATA[">
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&e;]]></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml
new file mode 100644
index 0000000000..920f431666
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY e "&#60;!--">
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&e;--></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml
new file mode 100644
index 0000000000..7a5677de54
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA | foo*)* >
+<!ELEMENT foo EMPTY>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml
new file mode 100644
index 0000000000..103384a06e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA | (foo))* >
+<!ELEMENT foo EMPTY>
+]>
+<doc></doc>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent
new file mode 100644
index 0000000000..e557426454
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent
@@ -0,0 +1 @@
+<!ELEMENT doc (#PCDATA)>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml
new file mode 100644
index 0000000000..81d5ef4bcd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE doc SYSTEM "185.ent">
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml
new file mode 100644
index 0000000000..85b26ec0a2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE a [
+<!ELEMENT a EMPTY>
+<!ATTLIST a b CDATA #IMPLIED d CDATA #IMPLIED>
+]>
+<a b="c"d="e"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries
new file mode 100644
index 0000000000..aef1bd67df
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries
@@ -0,0 +1,189 @@
+/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/015.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/016.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/017.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/018.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/019.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/020.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/021.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/022.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/023.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/024.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/025.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/026.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/027.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/028.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/029.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/030.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/031.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/032.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/033.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/034.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/035.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/036.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/037.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/038.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/039.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/040.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/041.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/042.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/043.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/044.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/045.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/046.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/047.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/048.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/049.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/050.xml/1.1/Mon Feb 11 18:42:19 2002//
+/051.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/052.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/053.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/054.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/055.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/056.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/057.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/058.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/059.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/060.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/061.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/062.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/063.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/064.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/065.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/066.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/067.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/068.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/069.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/070.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/071.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/072.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/073.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/074.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/075.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/076.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/077.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/078.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/079.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/080.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/081.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/082.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/083.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/084.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/085.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/086.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/087.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/088.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/089.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/090.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/091.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/092.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/093.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/094.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/095.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/096.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/097.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/098.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/099.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/100.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/101.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/102.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/103.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/104.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/105.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/106.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/107.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/108.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/109.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/110.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/111.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/112.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/113.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/114.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/115.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/116.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/117.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/118.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/119.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/120.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/121.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/122.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/123.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/124.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/125.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/126.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/127.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/128.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/129.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/130.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/131.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/132.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/133.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/134.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/135.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/136.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/137.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/138.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/139.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/140.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/141.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/142.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/143.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/144.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/145.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/146.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/147.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/148.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/149.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/150.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/151.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/152.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/153.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/154.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/155.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/156.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/157.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/158.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/159.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/160.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/161.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/162.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/163.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/164.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/165.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/166.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/167.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/168.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/169.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/170.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/171.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/172.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/173.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/174.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/175.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/176.xml/1.2/Mon Apr 22 13:20:31 2002//
+/177.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/178.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/179.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/180.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/181.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/182.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/183.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/184.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/185.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/185.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/186.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/null.ent/1.1/Mon Feb 11 18:43:34 2002//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository
new file mode 100644
index 0000000000..ede48b429c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/not-wf/sa
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html
new file mode 100644
index 0000000000..fc7310c68e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html
@@ -0,0 +1,60 @@
+<HTML>
+<TITLE>XML Test Cases</TITLE>
+<BODY>
+<H1>XML Test Cases version 1998-11-18</H1>
+<P>
+Copyright (C) 1998 James Clark. All rights reserved. Permission is
+granted to copy and modify this collection in any way for internal use
+within a company or organization. Permission is granted to
+redistribute the file <code>xmltest.zip</code> containing this
+collection to third parties provided that no modifications of any kind
+are made to this file. Note that permission to distribute the
+collection in any other form is not granted.
+<P>
+The collection is structured into three directories:
+<DL>
+<DT><CODE>not-wf</CODE>
+<DD>this contains cases that are not well-formed XML documents
+<DT><CODE>valid</CODE>
+<DD>this contains cases that are valid XML documents
+<DT><CODE>invalid</CODE>
+<DD>this contains cases that are well-formed XML documents
+but are not valid XML documents
+</DL>
+<P>
+The <CODE>not-wf</CODE> and <CODE>valid</CODE> directories each have
+three subdirectories:
+<DL>
+<DT>
+<CODE>sa</CODE>
+<DD>
+this contains cases that are standalone (as defined in XML) and do not
+have references to external general entities
+<DT>
+<CODE>ext-sa</CODE>
+<DD>
+this contains case that are standalone and have references to external
+general entities
+<DT>
+<CODE>not-sa</CODE>
+<DD>
+this contains cases that are not standalone
+</DL>
+<P>
+In each directory, files with a <CODE>.xml</CODE> extension are the
+XML document test cases, and files with a <CODE>.ent</CODE> extension
+are external entities referenced by the test cases.
+<P>
+Within the <CODE>valid</CODE> directory, each of these three
+subdirectories has an <CODE>out</CODE> subdirectory which contains an
+equivalent <A HREF="canonxml.html">canonical XML</A> document for each
+of the cases.
+<P>
+<P>
+Bug reports and contributions of new test cases are welcome.
+<P>
+<ADDRESS>
+<A HREF="mailto:jjc@jclark.com">James Clark</A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries
new file mode 100644
index 0000000000..1784810501
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log
new file mode 100644
index 0000000000..818f7c93e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log
@@ -0,0 +1,3 @@
+A D/ext-sa////
+A D/not-sa////
+A D/sa////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository
new file mode 100644
index 0000000000..48324028e6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/valid
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent
new file mode 100644
index 0000000000..1cff3fd44f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent
@@ -0,0 +1 @@
+Data
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml
new file mode 100644
index 0000000000..147d70d2d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "001.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent
new file mode 100644
index 0000000000..45f6d8e74e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent
@@ -0,0 +1 @@
+Data \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml
new file mode 100644
index 0000000000..9eaf91724f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "002.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml
new file mode 100644
index 0000000000..bb60b663ef
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "003.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent
new file mode 100644
index 0000000000..3436f20001
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent
@@ -0,0 +1 @@
+Data \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml
new file mode 100644
index 0000000000..074498ce19
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "004.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent
new file mode 100644
index 0000000000..c6e97f821f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent
@@ -0,0 +1 @@
+<e/><e/><e/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml
new file mode 100644
index 0000000000..82a6228205
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (e*)>
+<!ELEMENT e EMPTY>
+<!ENTITY e SYSTEM "005.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent
new file mode 100644
index 0000000000..4df2f0c2ac
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent
@@ -0,0 +1,4 @@
+Data
+<e/>
+More data
+<e/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml
new file mode 100644
index 0000000000..0b326cad4c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA|e)*>
+<!ELEMENT e EMPTY>
+<!ENTITY e SYSTEM "006.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.ent
new file mode 100644
index 0000000000..ab1d696dd7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.ent
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml
new file mode 100644
index 0000000000..825e3b286a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "007.ent">
+]>
+<doc>X&e;Z</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.ent
new file mode 100644
index 0000000000..c6ca61f9c8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.ent
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml
new file mode 100644
index 0000000000..3c001b6cb3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "008.ent">
+]>
+<doc>X&e;Z</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent
new file mode 100644
index 0000000000..67c3297611
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml
new file mode 100644
index 0000000000..a5866e5a77
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "009.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml
new file mode 100644
index 0000000000..418e9b0141
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "010.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent
new file mode 100644
index 0000000000..b19be3a497
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent
@@ -0,0 +1 @@
+xyzzy
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml
new file mode 100644
index 0000000000..2ceefa1d21
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e PUBLIC "a not very interesting file" "011.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent
new file mode 100644
index 0000000000..8eb1fb9c41
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent
@@ -0,0 +1 @@
+&e4; \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml
new file mode 100644
index 0000000000..5a8f009b4a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml
@@ -0,0 +1,9 @@
+<!DOCTYPE doc [
+<!ENTITY e1 "&e2;">
+<!ENTITY e2 "&e3;">
+<!ENTITY e3 SYSTEM "012.ent">
+<!ENTITY e4 "&e5;">
+<!ENTITY e5 "(e5)">
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&e1;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent
new file mode 100644
index 0000000000..7f25c502dd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent
@@ -0,0 +1 @@
+<e/> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml
new file mode 100644
index 0000000000..7717c97afe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (e)>
+<!ELEMENT e (#PCDATA)>
+<!ATTLIST e
+ a1 CDATA "a1 default"
+ a2 NMTOKENS "a2 default"
+>
+<!ENTITY x SYSTEM "013.ent">
+]>
+<doc>&x;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.ent
new file mode 100644
index 0000000000..470fd6fe44
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.ent
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml
new file mode 100644
index 0000000000..816fd1e796
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e SYSTEM "014.ent">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries
new file mode 100644
index 0000000000..33a4a0da95
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries
@@ -0,0 +1,29 @@
+/001.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/002.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/003.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/004.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/006.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/007.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/008.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/009.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/010.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/011.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/012.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/013.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/014.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository
new file mode 100644
index 0000000000..3753e3a5c9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml
new file mode 100644
index 0000000000..0a7acf8ebe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml
@@ -0,0 +1 @@
+<doc>Data&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml
new file mode 100644
index 0000000000..d4a445e555
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml
@@ -0,0 +1 @@
+<doc>Data</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml
new file mode 100644
index 0000000000..0a7acf8ebe
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml
@@ -0,0 +1 @@
+<doc>Data&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml
new file mode 100644
index 0000000000..6e293aa70e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml
@@ -0,0 +1 @@
+<doc><e></e><e></e><e></e></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml
new file mode 100644
index 0000000000..04b6fc82ee
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml
@@ -0,0 +1 @@
+<doc>Data&#10;<e></e>&#10;More data&#10;<e></e>&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml
new file mode 100644
index 0000000000..ab2a74c9d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml
@@ -0,0 +1 @@
+<doc>XYZ</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml
new file mode 100644
index 0000000000..ab2a74c9d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml
@@ -0,0 +1 @@
+<doc>XYZ</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml
new file mode 100644
index 0000000000..a79dff65fd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml
@@ -0,0 +1 @@
+<doc>&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml
new file mode 100644
index 0000000000..bf275adb2b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml
@@ -0,0 +1 @@
+<doc>xyzzy&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml
new file mode 100644
index 0000000000..81a251cb4b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml
@@ -0,0 +1 @@
+<doc>(e5)</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml
new file mode 100644
index 0000000000..524d94ee6b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml
@@ -0,0 +1 @@
+<doc><e a1="a1 default" a2="a2 default"></e></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml
new file mode 100644
index 0000000000..71c6dc3e8e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml
@@ -0,0 +1 @@
+<doc>data</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries
new file mode 100644
index 0000000000..577936756f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries
@@ -0,0 +1,15 @@
+/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository
new file mode 100644
index 0000000000..889051e1ae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml
new file mode 100644
index 0000000000..2d6f41a137
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc SYSTEM "001.ent" [
+<!ELEMENT doc EMPTY>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent
new file mode 100644
index 0000000000..67c3297611
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml
new file mode 100644
index 0000000000..023fce8499
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc SYSTEM "002.ent" [
+<!ELEMENT doc EMPTY>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent
new file mode 100644
index 0000000000..931f3ad6d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent
@@ -0,0 +1,3 @@
+<!ELEMENT doc EMPTY>
+<!ENTITY % e SYSTEM "003-2.ent">
+<!ATTLIST doc a1 CDATA %e; "v1">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml
new file mode 100644
index 0000000000..63a5e8bdfc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "003-1.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent
new file mode 100644
index 0000000000..40f7ff58a2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent
@@ -0,0 +1,4 @@
+<!ELEMENT doc EMPTY>
+<!ENTITY % e1 SYSTEM "004-2.ent">
+<!ENTITY % e2 "%e1;">
+%e1;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent
new file mode 100644
index 0000000000..61def75cb7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent
@@ -0,0 +1 @@
+<!ATTLIST doc a1 CDATA "value">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml
new file mode 100644
index 0000000000..adc9201496
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "004-1.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent
new file mode 100644
index 0000000000..ade9599032
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent
@@ -0,0 +1,3 @@
+<!ELEMENT doc EMPTY>
+<!ENTITY % e SYSTEM "005-2.ent">
+%e;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent
new file mode 100644
index 0000000000..bef50b1f38
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent
@@ -0,0 +1 @@
+<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml
new file mode 100644
index 0000000000..6bd44cfee0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "005-1.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent
new file mode 100644
index 0000000000..8f305a82bd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent
@@ -0,0 +1,2 @@
+<!ELEMENT doc EMPTY>
+<!ATTLIST doc a1 CDATA "w1" a2 CDATA "w2">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml
new file mode 100644
index 0000000000..eb80bb7409
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc SYSTEM "006.ent" [
+<!ATTLIST doc a1 CDATA "v1">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent
new file mode 100644
index 0000000000..fbf4ca4947
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent
@@ -0,0 +1,2 @@
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml
new file mode 100644
index 0000000000..38897e34ea
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "007.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent
new file mode 100644
index 0000000000..fbf4ca4947
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent
@@ -0,0 +1,2 @@
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml
new file mode 100644
index 0000000000..bf777a7ff2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc PUBLIC "whatever" "008.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent
new file mode 100644
index 0000000000..fbf4ca4947
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent
@@ -0,0 +1,2 @@
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml
new file mode 100644
index 0000000000..c17562fe68
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc PUBLIC "whatever" "009.ent" [
+<!ATTLIST doc a2 CDATA "v2">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent
new file mode 100644
index 0000000000..52a28f5deb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent
@@ -0,0 +1,2 @@
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA "v2">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml
new file mode 100644
index 0000000000..2786b328f3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc SYSTEM "010.ent" [
+<!ATTLIST doc a1 CDATA "v1">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent
new file mode 100644
index 0000000000..fbf4ca4947
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent
@@ -0,0 +1,2 @@
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml
new file mode 100644
index 0000000000..03b482bbb6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY % e SYSTEM "011.ent">
+%e;
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent
new file mode 100644
index 0000000000..7e372e65e9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml
new file mode 100644
index 0000000000..1967edbba7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY % e SYSTEM "012.ent">
+%e;
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent
new file mode 100644
index 0000000000..a3691d9f08
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent
@@ -0,0 +1,4 @@
+<!ELEMENT doc (#PCDATA)>
+<![ INCLUDE [
+<!ATTLIST doc a1 CDATA "v1">
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml
new file mode 100644
index 0000000000..cf44f2600a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "013.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent
new file mode 100644
index 0000000000..6eaf779329
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent
@@ -0,0 +1,4 @@
+<!ELEMENT doc (#PCDATA)>
+<![ %e; [
+<!ATTLIST doc a1 CDATA "v1">
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml
new file mode 100644
index 0000000000..bd08502489
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc SYSTEM "014.ent" [
+<!ENTITY % e "INCLUDE">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent
new file mode 100644
index 0000000000..00d2f30e1d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent
@@ -0,0 +1,5 @@
+<!ELEMENT doc (#PCDATA)>
+<![ %e; [
+<!ATTLIST doc a1 CDATA "v1">
+]]>
+<!ATTLIST doc a2 CDATA "v2">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml
new file mode 100644
index 0000000000..e04e75ffca
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc SYSTEM "015.ent" [
+<!ENTITY % e "IGNORE">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent
new file mode 100644
index 0000000000..bf77ef8336
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent
@@ -0,0 +1,4 @@
+<!ELEMENT doc (#PCDATA)>
+<![%e;[
+<!ATTLIST doc a1 CDATA "v1">
+]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml
new file mode 100644
index 0000000000..4ccf4af350
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc SYSTEM "016.ent" [
+<!ENTITY % e "INCLUDE">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent
new file mode 100644
index 0000000000..ffd9adde61
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent
@@ -0,0 +1,3 @@
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e "<!ATTLIST doc a1 CDATA 'v1'>">
+%e;
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml
new file mode 100644
index 0000000000..7fe18f4c7a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "017.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent
new file mode 100644
index 0000000000..2d46f76fc3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent
@@ -0,0 +1,3 @@
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e "'v1'">
+<!ATTLIST doc a1 CDATA %e;>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml
new file mode 100644
index 0000000000..31e90f2405
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "018.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent
new file mode 100644
index 0000000000..d18201a98b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent
@@ -0,0 +1,3 @@
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e "'v1'">
+<!ATTLIST doc a1 CDATA%e;>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml
new file mode 100644
index 0000000000..b7a18faba0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "019.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent
new file mode 100644
index 0000000000..815291c6d2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent
@@ -0,0 +1,3 @@
+<!ENTITY % e "doc">
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST%e;a1 CDATA "v1">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml
new file mode 100644
index 0000000000..d70892f7ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "020.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent
new file mode 100644
index 0000000000..9f8f2afd2b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent
@@ -0,0 +1,3 @@
+<!ENTITY % e "doc a1 CDATA">
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST %e; "v1">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml
new file mode 100644
index 0000000000..70c28730db
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "021.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent
new file mode 100644
index 0000000000..e3268819f7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent
@@ -0,0 +1,5 @@
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e1 "do">
+<!ENTITY % e2 "c">
+<!ENTITY % e3 "%e1;%e2;">
+<!ATTLIST %e3; a1 CDATA "v1">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml
new file mode 100644
index 0000000000..1c2484b70b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "023.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent
new file mode 100644
index 0000000000..aa6d0eccac
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent
@@ -0,0 +1,4 @@
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e1 "'v1'">
+<!ENTITY % e2 'a1 CDATA %e1;'>
+<!ATTLIST doc %e2;>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml
new file mode 100644
index 0000000000..96e1ecb61b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "024.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent
new file mode 100644
index 0000000000..389d259eb1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent
@@ -0,0 +1,5 @@
+<!ELEMENT doc EMPTY>
+<!ENTITY % e "x">
+<!ENTITY % e "y">
+<!ENTITY % v "'%e;'">
+<!ATTLIST doc a1 CDATA %v;>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml
new file mode 100644
index 0000000000..8fdbc14c47
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "025.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent
new file mode 100644
index 0000000000..bdc93af639
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent
@@ -0,0 +1 @@
+<!ATTLIST doc a1 CDATA "w1">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml
new file mode 100644
index 0000000000..7b109c0913
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ANY>
+<!ENTITY % e SYSTEM "026.ent">
+%e;
+<!ATTLIST doc a1 CDATA "x1" a2 CDATA "x2">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent
new file mode 100644
index 0000000000..712cce3700
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent
@@ -0,0 +1,2 @@
+<!ENTITY % e "">
+<!ELEMENT doc (#PCDATA %e;)>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml
new file mode 100644
index 0000000000..d0c8c7abb5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "027.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent
new file mode 100644
index 0000000000..ac249d7b2c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent
@@ -0,0 +1,2 @@
+<!ELEMENT doc (#PCDATA)>
+<![INCLUDE[<!ATTLIST doc a1 CDATA "v1">]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml
new file mode 100644
index 0000000000..50e5248cbf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "028.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent
new file mode 100644
index 0000000000..df94df5560
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent
@@ -0,0 +1,3 @@
+<!ELEMENT doc (#PCDATA)>
+<![IGNORE[<!ATTLIST doc a1 CDATA "v1">]]>
+<!ATTLIST doc a1 CDATA "v2">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml
new file mode 100644
index 0000000000..07e226c1d7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "029.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent
new file mode 100644
index 0000000000..e3864460df
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent
@@ -0,0 +1,3 @@
+<!ELEMENT doc (#PCDATA)>
+<![IGNORE[]]>
+<![INCLUDE[]]>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml
new file mode 100644
index 0000000000..01fc2be4ca
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "030.ent">
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent
new file mode 100644
index 0000000000..f7f94ab152
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent
@@ -0,0 +1,3 @@
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e SYSTEM "031-2.ent">
+<!ENTITY e "<![CDATA[%e;]]>">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent
new file mode 100644
index 0000000000..bef50b1f38
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent
@@ -0,0 +1 @@
+<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml
new file mode 100644
index 0000000000..c3fe5fca71
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE doc SYSTEM "031-1.ent">
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries
new file mode 100644
index 0000000000..65ee741d6c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries
@@ -0,0 +1,65 @@
+/001.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/002.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/003-1.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/003-2.ent/1.1/Mon Feb 11 18:45:43 2002//
+/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/004-1.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/004-2.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005-1.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005-2.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/006.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/007.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/008.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/009.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/010.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/011.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/012.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/013.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/014.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/015.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/015.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/016.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/016.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/017.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/017.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/018.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/018.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/019.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/019.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/020.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/020.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/021.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/021.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/023.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/023.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/024.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/024.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/025.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/025.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/026.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/026.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/027.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/027.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/028.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/028.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/029.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/029.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/030.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/030.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/031-1.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/031-2.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/031.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository
new file mode 100644
index 0000000000..b16565a893
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/valid/not-sa
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml
new file mode 100644
index 0000000000..bdc39e2224
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml
@@ -0,0 +1 @@
+<doc a1="value"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml
new file mode 100644
index 0000000000..d07627d7a3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml
@@ -0,0 +1 @@
+<doc a1="v1" a2="w2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml
new file mode 100644
index 0000000000..7293fb63dc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml
@@ -0,0 +1 @@
+<doc a1="v1" a2="v2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml
new file mode 100644
index 0000000000..131a32fe69
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml
@@ -0,0 +1 @@
+<doc a2="v2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml
new file mode 100644
index 0000000000..eb3f9674e8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml
@@ -0,0 +1 @@
+<doc a1="x"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml
new file mode 100644
index 0000000000..71c02026e4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml
@@ -0,0 +1 @@
+<doc a1="w1" a2="x2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml
new file mode 100644
index 0000000000..7ac8b2b89d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml
@@ -0,0 +1 @@
+<doc a1="v2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml
new file mode 100644
index 0000000000..03a6c3f9cd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml
@@ -0,0 +1 @@
+<doc>&lt;!ATTLIST doc a1 CDATA &quot;v1&quot;&gt;&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries
new file mode 100644
index 0000000000..5c3b4ac876
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries
@@ -0,0 +1,32 @@
+/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/015.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/016.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/017.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/018.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/019.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/020.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/021.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/022.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/023.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/024.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/025.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/026.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/027.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/028.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/029.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/030.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/031.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository
new file mode 100644
index 0000000000..221d7aeedf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml
new file mode 100644
index 0000000000..7fbef49502
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml
new file mode 100644
index 0000000000..2e3f1d81dd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc ></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml
new file mode 100644
index 0000000000..c841b81784
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc >
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml
new file mode 100644
index 0000000000..a9c5756933
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA #IMPLIED>
+]>
+<doc a1="v1"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml
new file mode 100644
index 0000000000..b069efe727
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA #IMPLIED>
+]>
+<doc a1 = "v1"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml
new file mode 100644
index 0000000000..39a346342f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA #IMPLIED>
+]>
+<doc a1='v1'></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml
new file mode 100644
index 0000000000..cc3dc53166
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#32;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml
new file mode 100644
index 0000000000..b3370eb1cc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&amp;&lt;&gt;&quot;&apos;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml
new file mode 100644
index 0000000000..0fa183eccf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#x20;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml
new file mode 100644
index 0000000000..eb64d18590
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA #IMPLIED>
+]>
+<doc a1="v1" ></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml
new file mode 100644
index 0000000000..4cac44b4e4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA #IMPLIED a2 CDATA #IMPLIED>
+]>
+<doc a1="v1" a2="v2"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml
new file mode 100644
index 0000000000..6ce2a3eae2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc : CDATA #IMPLIED>
+]>
+<doc :="v1"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml
new file mode 100644
index 0000000000..2f4aae4e28
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc _.-0123456789 CDATA #IMPLIED>
+]>
+<doc _.-0123456789="v1"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml
new file mode 100644
index 0000000000..47f1f723e3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc abcdefghijklmnopqrstuvwxyz CDATA #IMPLIED>
+]>
+<doc abcdefghijklmnopqrstuvwxyz="v1"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml
new file mode 100644
index 0000000000..861df8a610
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc ABCDEFGHIJKLMNOPQRSTUVWXYZ CDATA #IMPLIED>
+]>
+<doc ABCDEFGHIJKLMNOPQRSTUVWXYZ="v1"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml
new file mode 100644
index 0000000000..66b1973c5d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc><?pi?></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml
new file mode 100644
index 0000000000..827ba963bf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc><?pi some data ? > <??></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml
new file mode 100644
index 0000000000..4570903fee
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc><![CDATA[<foo>]]></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml
new file mode 100644
index 0000000000..3e6b74cbf2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc><![CDATA[<&]]></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml
new file mode 100644
index 0000000000..f749551a1b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc><![CDATA[<&]>]]]></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml
new file mode 100644
index 0000000000..13dda8c8a5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc><!-- a comment --></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml
new file mode 100644
index 0000000000..41d300e950
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc><!-- a comment ->--></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml
new file mode 100644
index 0000000000..3837b831ad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e "">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml
new file mode 100644
index 0000000000..b0655c634c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (foo)>
+<!ELEMENT foo (#PCDATA)>
+<!ENTITY e "&#60;foo></foo>">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml
new file mode 100644
index 0000000000..ed01f36d89
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (foo*)>
+<!ELEMENT foo (#PCDATA)>
+]>
+<doc><foo/><foo></foo></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml
new file mode 100644
index 0000000000..1ba033c1a7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (foo*)>
+<!ELEMENT foo EMPTY>
+]>
+<doc><foo/><foo></foo></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml
new file mode 100644
index 0000000000..ee02439051
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (foo*)>
+<!ELEMENT foo ANY>
+]>
+<doc><foo/><foo></foo></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml
new file mode 100644
index 0000000000..3d95747913
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml
new file mode 100644
index 0000000000..909f6ff712
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml
new file mode 100644
index 0000000000..3a7ddaa716
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml
@@ -0,0 +1,5 @@
+<?xml version = "1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml
new file mode 100644
index 0000000000..a58e05867f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding="UTF-8"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml
new file mode 100644
index 0000000000..be55c8d721
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' standalone='yes'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml
new file mode 100644
index 0000000000..a3f9053868
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding="UTF-8" standalone='yes'?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml
new file mode 100644
index 0000000000..7d52f31c0e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml
new file mode 100644
index 0000000000..f109a8b782
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc />
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml
new file mode 100644
index 0000000000..8ab2b3fb16
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
+<?pi data?>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml
new file mode 100644
index 0000000000..f9b2113940
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
+<!-- comment -->
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml
new file mode 100644
index 0000000000..d14f41bfe2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml
@@ -0,0 +1,6 @@
+<!-- comment -->
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml
new file mode 100644
index 0000000000..0897316e46
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml
@@ -0,0 +1,5 @@
+<?pi data?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml
new file mode 100644
index 0000000000..12c419b65b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA #IMPLIED>
+]>
+<doc a1="&quot;&lt;&amp;&gt;&apos;"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml
new file mode 100644
index 0000000000..a59f536277
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA #IMPLIED>
+]>
+<doc a1="&#65;"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml
new file mode 100644
index 0000000000..5d7c650944
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#00000000000000000000000000000000065;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml
new file mode 100644
index 0000000000..a8095dfe28
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ATTLIST doc a1 CDATA #IMPLIED>
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc a1="foo
+bar"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml
new file mode 100644
index 0000000000..bee1d23e1a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (e*)>
+<!ELEMENT e EMPTY>
+<!ATTLIST e a1 CDATA "v1" a2 CDATA "v2" a3 CDATA #IMPLIED>
+]>
+<doc>
+<e a3="v3"/>
+<e a1="w1"/>
+<e a2="w2" a3="v3"/>
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml
new file mode 100644
index 0000000000..e2567f532d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA "v1">
+<!ATTLIST doc a1 CDATA "z1">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml
new file mode 100644
index 0000000000..c50a2846f9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA "v1">
+<!ATTLIST doc a2 CDATA "v2">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml
new file mode 100644
index 0000000000..a4c688cf1a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>X
+Y</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml
new file mode 100644
index 0000000000..c6b2dedbba
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>]</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xml
new file mode 100644
index 0000000000..c3cc797b59
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xml
new file mode 100644
index 0000000000..12303b1af2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xml
new file mode 100644
index 0000000000..7ae8f6c73a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml
new file mode 100644
index 0000000000..3f33a4c760
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>ð€€ô¿½</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml
new file mode 100644
index 0000000000..0d88f28718
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ENTITY e "<e/>">
+<!ELEMENT doc (e)>
+<!ELEMENT e EMPTY>
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml
new file mode 100644
index 0000000000..5d1c88b946
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+
+
+<doc
+></doc
+>
+
+
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml
new file mode 100644
index 0000000000..da0292c5bc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<?pi data?>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml
new file mode 100644
index 0000000000..144871b2a3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#x0000000000000000000000000000000000000041;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml
new file mode 100644
index 0000000000..c1ac849ed1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a*)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml
new file mode 100644
index 0000000000..2ff23b233f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ATTLIST doc a1 NMTOKENS #IMPLIED>
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc a1=" 1 2 "></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml
new file mode 100644
index 0000000000..2171480ecf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (e*)>
+<!ELEMENT e EMPTY>
+<!ATTLIST e a1 CDATA #IMPLIED a2 CDATA #IMPLIED a3 CDATA #IMPLIED>
+]>
+<doc>
+<e a1="v1" a2="v2" a3="v3"/>
+<e a1="w1" a2="v2"/>
+<e a1="v1" a2="w2" a3="v3"/>
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml
new file mode 100644
index 0000000000..6cd6b4386b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>X&#10;Y</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml
new file mode 100644
index 0000000000..bbdc152492
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#163;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml
new file mode 100644
index 0000000000..f4ba53090a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#xe40;&#xe08;&#xe21;ส์</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml
new file mode 100644
index 0000000000..9668f2da73
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE เจมส์ [
+<!ELEMENT เจมส์ (#PCDATA)>
+]>
+<เจมส์></เจมส์>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml
new file mode 100644
index 0000000000..74a97aa431
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#x10000;&#x10FFFD;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml
new file mode 100644
index 0000000000..f708f2bc17
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY e "&#60;">
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml
new file mode 100644
index 0000000000..a27340b9a7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA #IMPLIED>
+<!-- 34 is double quote -->
+<!ENTITY e1 "&#34;">
+]>
+<doc a1="&e1;"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml
new file mode 100644
index 0000000000..a0ccf772a5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#13;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml
new file mode 100644
index 0000000000..8ed806b9a3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e "&#13;">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml
new file mode 100644
index 0000000000..2437f60530
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!NOTATION n PUBLIC "whatever">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml
new file mode 100644
index 0000000000..eef097df76
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY % e "<!ELEMENT doc (#PCDATA)>">
+%e;
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml
new file mode 100644
index 0000000000..ebfba230a4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a ID #IMPLIED>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml
new file mode 100644
index 0000000000..6ef39dc49e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a IDREF #IMPLIED>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml
new file mode 100644
index 0000000000..217476d9a9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a IDREFS #IMPLIED>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml
new file mode 100644
index 0000000000..8b2354ff73
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a ENTITY #IMPLIED>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml
new file mode 100644
index 0000000000..33c012441a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a ENTITIES #IMPLIED>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml
new file mode 100644
index 0000000000..65b731cf6d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a NOTATION (n1|n2) #IMPLIED>
+<!NOTATION n1 SYSTEM "http://www.w3.org/">
+<!NOTATION n2 SYSTEM "http://www.w3.org/">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml
new file mode 100644
index 0000000000..e5f301eac8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a (1|2) #IMPLIED>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml
new file mode 100644
index 0000000000..b31f40f94e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA #REQUIRED>
+]>
+<doc a="v"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml
new file mode 100644
index 0000000000..a3290d6cbb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA #FIXED "v">
+]>
+<doc a="v"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml
new file mode 100644
index 0000000000..3208fa9aa5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA #FIXED "v">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml
new file mode 100644
index 0000000000..51ee1a375c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a, b, c)>
+<!ELEMENT a (a?)>
+<!ELEMENT b (b*)>
+<!ELEMENT c (a | b)+>
+]>
+<doc><a/><b/><c><a/></c></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml
new file mode 100644
index 0000000000..d5245ac51a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY % e SYSTEM "e.dtd">
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml
new file mode 100644
index 0000000000..937cfc0bdd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY % e PUBLIC 'whatever' "e.dtd">
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml
new file mode 100644
index 0000000000..82760767aa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml
@@ -0,0 +1 @@
+<!DOCTYPE doc [<!ELEMENT doc (#PCDATA)>]><doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml
new file mode 100644
index 0000000000..cf5834f2a5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e "<foo>">
+<!ENTITY e "">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml
new file mode 100644
index 0000000000..bbc3080db6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e "">
+<!ENTITY e "<foo>">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml
new file mode 100644
index 0000000000..34797a67d7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ENTITY e "<foo/&#62;">
+<!ELEMENT doc (foo)>
+<!ELEMENT foo EMPTY>
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml
new file mode 100644
index 0000000000..f97d96848d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e "&lt;foo>">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml
new file mode 100644
index 0000000000..42ffcb6782
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY e "&#x10000;&#x10FFFD;">
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml
new file mode 100644
index 0000000000..c392c96084
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ATTLIST e a NOTATION (n) #IMPLIED>
+<!ELEMENT doc (e)*>
+<!ELEMENT e (#PCDATA)>
+<!NOTATION n PUBLIC "whatever">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml
new file mode 100644
index 0000000000..7343d0f795
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!NOTATION n SYSTEM "http://www.w3.org/">
+<!ENTITY e SYSTEM "http://www.w3.org/" NDATA n>
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a ENTITY "e">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml
new file mode 100644
index 0000000000..627b74ecdf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml
@@ -0,0 +1,10 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a)*>
+<!ELEMENT a EMPTY>
+]>
+<doc>
+<a/>
+ <a/> <a/>
+
+
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml
new file mode 100644
index 0000000000..300578eb5c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>
+
+
+</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml
new file mode 100644
index 0000000000..5726e7db6f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ENTITY % e "foo">
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a1 CDATA "%e;">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml
new file mode 100644
index 0000000000..1fe69596da
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ATTLIST doc a1 CDATA #IMPLIED>
+<!ATTLIST doc a1 NMTOKENS #IMPLIED>
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc a1="1 2"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml
new file mode 100644
index 0000000000..a6f8f43620
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ATTLIST doc a1 NMTOKENS " 1 2 ">
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent
new file mode 100644
index 0000000000..e06554ace2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent
@@ -0,0 +1 @@
+<!ATTLIST doc a2 CDATA #IMPLIED>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml
new file mode 100644
index 0000000000..c606afa97f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e SYSTEM "097.ent">
+<!ATTLIST doc a1 CDATA "v1">
+%e;
+<!ATTLIST doc a2 CDATA "v2">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml
new file mode 100644
index 0000000000..33a64ce5ae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc><?pi x
+y?></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml
new file mode 100644
index 0000000000..1b7214a137
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml
new file mode 100644
index 0000000000..5b839e76bc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ENTITY e PUBLIC ";!*#@$_%" "100.xml">
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml
new file mode 100644
index 0000000000..f464484bf5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e "&#34;">
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml
new file mode 100644
index 0000000000..f239ff5fee
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc a="&#34;"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml
new file mode 100644
index 0000000000..1dbbd5bb7c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc>&#60;doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml
new file mode 100644
index 0000000000..666f43de0f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc a="x y"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml
new file mode 100644
index 0000000000..6b3af2b847
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc a="x&#9;y"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml
new file mode 100644
index 0000000000..8757c0a5ae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc a="x&#10;y"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml
new file mode 100644
index 0000000000..3d2c2566a7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc a="x&#13;y"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml
new file mode 100644
index 0000000000..e919bf229a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml
@@ -0,0 +1,7 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e "
+">
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc a="x&e;y"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml
new file mode 100644
index 0000000000..33fa38e13b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc a=""></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml
new file mode 100644
index 0000000000..0c61c65119
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e "&#13;&#10;">
+<!ATTLIST doc a CDATA #IMPLIED>
+]>
+<doc a="x&e;y"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml
new file mode 100644
index 0000000000..cb56f264b0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST doc a NMTOKENS #IMPLIED>
+]>
+<doc a="&#32;x&#32;&#32;y&#32;"></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml
new file mode 100644
index 0000000000..27b6a4c793
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (a | b)>
+<!ELEMENT a (#PCDATA)>
+]>
+<doc><a></a></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml
new file mode 100644
index 0000000000..d2edd0f01d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ATTLIST e a CDATA #IMPLIED>
+]>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml
new file mode 100644
index 0000000000..52e207096d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e "<![CDATA[&foo;]]>">
+]>
+<doc>&e;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml
new file mode 100644
index 0000000000..d939a67010
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY e1 "&e2;">
+<!ENTITY e2 "v">
+]>
+<doc>&e1;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml
new file mode 100644
index 0000000000..55ab49620b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+]>
+<doc><![CDATA[
+]]></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml
new file mode 100644
index 0000000000..e4f02b14c8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY rsqb "]">
+]>
+<doc>&rsqb;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml
new file mode 100644
index 0000000000..fba6c44668
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY rsqb "]]">
+]>
+<doc>&rsqb;</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml
new file mode 100644
index 0000000000..876e74730c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!ELEMENT doc ANY>
+]>
+<doc><!-- -á --></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries
new file mode 100644
index 0000000000..5d10c3447a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries
@@ -0,0 +1,121 @@
+/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/015.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/016.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/017.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/018.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/019.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/020.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/021.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/022.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/023.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/024.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/025.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/026.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/027.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/028.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/029.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/030.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/031.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/032.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/033.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/034.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/035.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/036.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/037.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/038.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/039.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/040.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/041.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/042.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/043.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/044.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/045.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/046.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/047.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/048.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/049.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/050.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/051.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/052.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/053.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/054.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/055.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/056.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/057.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/058.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/059.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/060.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/061.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/062.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/063.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/064.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/065.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/066.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/067.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/068.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/069.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/070.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/071.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/072.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/073.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/074.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/075.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/076.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/077.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/078.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/079.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/080.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/081.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/082.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/083.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/084.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/085.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/086.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/087.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/088.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/089.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/090.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/091.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/092.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/093.xml/1.2/Mon Apr 22 13:27:36 2002//
+/094.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/095.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/096.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/097.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/097.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/098.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/099.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/100.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/101.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/102.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/103.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/104.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/105.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/106.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/107.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/108.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/109.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/110.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/111.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/112.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/113.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/114.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/115.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/116.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/117.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/118.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/119.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D/out////
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository
new file mode 100644
index 0000000000..7dcbee54f2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/valid/sa
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml
new file mode 100644
index 0000000000..97cf3e3b86
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml
@@ -0,0 +1 @@
+<doc> </doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml
new file mode 100644
index 0000000000..3ea232c21a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml
@@ -0,0 +1 @@
+<doc>&amp;&lt;&gt;&quot;'</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml
new file mode 100644
index 0000000000..97cf3e3b86
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml
@@ -0,0 +1 @@
+<doc> </doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml
new file mode 100644
index 0000000000..7293fb63dc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml
@@ -0,0 +1 @@
+<doc a1="v1" a2="v2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml
new file mode 100644
index 0000000000..5a0c9831ae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml
@@ -0,0 +1 @@
+<doc :="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml
new file mode 100644
index 0000000000..c9c7ec5da8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml
@@ -0,0 +1 @@
+<doc _.-0123456789="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml
new file mode 100644
index 0000000000..ac6b28f97a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml
@@ -0,0 +1 @@
+<doc abcdefghijklmnopqrstuvwxyz="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml
new file mode 100644
index 0000000000..8e216eb99b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml
@@ -0,0 +1 @@
+<doc ABCDEFGHIJKLMNOPQRSTUVWXYZ="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml
new file mode 100644
index 0000000000..4fc76928b2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml
@@ -0,0 +1 @@
+<doc><?pi ?></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml
new file mode 100644
index 0000000000..3b9a2f8d4e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml
@@ -0,0 +1 @@
+<doc><?pi some data ? > <??></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml
new file mode 100644
index 0000000000..a5471011df
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml
@@ -0,0 +1 @@
+<doc>&lt;foo&gt;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml
new file mode 100644
index 0000000000..05d4e2fcf9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml
@@ -0,0 +1 @@
+<doc>&lt;&amp;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml
new file mode 100644
index 0000000000..95ae08a12e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml
@@ -0,0 +1 @@
+<doc>&lt;&amp;]&gt;]</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml
new file mode 100644
index 0000000000..a9aa2074ff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml
@@ -0,0 +1 @@
+<doc><foo></foo></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml
new file mode 100644
index 0000000000..de0f566020
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml
@@ -0,0 +1 @@
+<doc><foo></foo><foo></foo></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml
new file mode 100644
index 0000000000..de0f566020
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml
@@ -0,0 +1 @@
+<doc><foo></foo><foo></foo></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml
new file mode 100644
index 0000000000..de0f566020
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml
@@ -0,0 +1 @@
+<doc><foo></foo><foo></foo></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml
new file mode 100644
index 0000000000..2bcfb06cf1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml
@@ -0,0 +1 @@
+<doc></doc><?pi data?> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml
new file mode 100644
index 0000000000..82d117d492
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml
@@ -0,0 +1 @@
+<?pi data?><doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml
new file mode 100644
index 0000000000..d79cfe1493
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml
@@ -0,0 +1 @@
+<doc a1="&quot;&lt;&amp;&gt;'"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml
new file mode 100644
index 0000000000..6f2cd5832e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml
@@ -0,0 +1 @@
+<doc a1="A"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml
new file mode 100644
index 0000000000..f683039a80
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml
@@ -0,0 +1 @@
+<doc>A</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml
new file mode 100644
index 0000000000..e162b76504
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml
@@ -0,0 +1 @@
+<doc a1="foo bar"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml
new file mode 100644
index 0000000000..78028b704b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml
@@ -0,0 +1 @@
+<doc>&#10;<e a1="v1" a2="v2" a3="v3"></e>&#10;<e a1="w1" a2="v2"></e>&#10;<e a1="v1" a2="w2" a3="v3"></e>&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml
new file mode 100644
index 0000000000..7293fb63dc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml
@@ -0,0 +1 @@
+<doc a1="v1" a2="v2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml
new file mode 100644
index 0000000000..b327ebd67f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml
@@ -0,0 +1 @@
+<doc>X&#10;Y</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml
new file mode 100644
index 0000000000..ced7d02719
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml
@@ -0,0 +1 @@
+<doc>]</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml
new file mode 100644
index 0000000000..7cc53f9ea0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml
@@ -0,0 +1 @@
+<doc>£</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml
new file mode 100644
index 0000000000..33703c7925
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml
@@ -0,0 +1 @@
+<doc>เจมส์</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml
new file mode 100644
index 0000000000..cfeb5a5366
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml
@@ -0,0 +1 @@
+<เจมส์></เจมส์> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml
new file mode 100644
index 0000000000..f5a0484791
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml
@@ -0,0 +1 @@
+<doc>ð€€ô¿½</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml
new file mode 100644
index 0000000000..c4083843d9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml
@@ -0,0 +1 @@
+<doc><e></e></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml
new file mode 100644
index 0000000000..82d117d492
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml
@@ -0,0 +1 @@
+<?pi data?><doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml
new file mode 100644
index 0000000000..f683039a80
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml
@@ -0,0 +1 @@
+<doc>A</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml
new file mode 100644
index 0000000000..f898cc8c98
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml
@@ -0,0 +1 @@
+<doc a1="1 2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml
new file mode 100644
index 0000000000..78028b704b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml
@@ -0,0 +1 @@
+<doc>&#10;<e a1="v1" a2="v2" a3="v3"></e>&#10;<e a1="w1" a2="v2"></e>&#10;<e a1="v1" a2="w2" a3="v3"></e>&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml
new file mode 100644
index 0000000000..b327ebd67f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml
@@ -0,0 +1 @@
+<doc>X&#10;Y</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml
new file mode 100644
index 0000000000..7cc53f9ea0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml
@@ -0,0 +1 @@
+<doc>£</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml
new file mode 100644
index 0000000000..33703c7925
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml
@@ -0,0 +1 @@
+<doc>เจมส์</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml
new file mode 100644
index 0000000000..cfeb5a5366
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml
@@ -0,0 +1 @@
+<เจมส์></เจมส์> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml
new file mode 100644
index 0000000000..f5a0484791
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml
@@ -0,0 +1 @@
+<doc>ð€€ô¿½</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml
new file mode 100644
index 0000000000..7597d31bf9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml
@@ -0,0 +1 @@
+<doc a1="&quot;"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml
new file mode 100644
index 0000000000..4bbdad45ed
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml
@@ -0,0 +1 @@
+<doc>&#13;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml
new file mode 100644
index 0000000000..4bbdad45ed
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml
@@ -0,0 +1 @@
+<doc>&#13;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/069.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/069.xml
new file mode 100644
index 0000000000..41eed46727
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/069.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!NOTATION n PUBLIC 'whatever'>
+]>
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/076.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/076.xml
new file mode 100644
index 0000000000..b07019e90f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/076.xml
@@ -0,0 +1,5 @@
+<!DOCTYPE doc [
+<!NOTATION n1 SYSTEM 'http://www.w3.org/'>
+<!NOTATION n2 SYSTEM 'http://www.w3.org/'>
+]>
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml
new file mode 100644
index 0000000000..fcab0cd7ff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml
@@ -0,0 +1 @@
+<doc a="v"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml
new file mode 100644
index 0000000000..fcab0cd7ff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml
@@ -0,0 +1 @@
+<doc a="v"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml
new file mode 100644
index 0000000000..fcab0cd7ff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml
@@ -0,0 +1 @@
+<doc a="v"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml
new file mode 100644
index 0000000000..e356e7e4db
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml
@@ -0,0 +1 @@
+<doc><a></a><b></b><c><a></a></c></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml
new file mode 100644
index 0000000000..a9aa2074ff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml
@@ -0,0 +1 @@
+<doc><foo></foo></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml
new file mode 100644
index 0000000000..a5471011df
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml
@@ -0,0 +1 @@
+<doc>&lt;foo&gt;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml
new file mode 100644
index 0000000000..f5a0484791
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml
@@ -0,0 +1 @@
+<doc>ð€€ô¿½</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/090.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/090.xml
new file mode 100644
index 0000000000..41eed46727
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/090.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!NOTATION n PUBLIC 'whatever'>
+]>
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/091.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/091.xml
new file mode 100644
index 0000000000..c55a698bbb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/091.xml
@@ -0,0 +1,4 @@
+<!DOCTYPE doc [
+<!NOTATION n SYSTEM 'http://www.w3.org/'>
+]>
+<doc a="e"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml
new file mode 100644
index 0000000000..87269f79d9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml
@@ -0,0 +1 @@
+<doc>&#10;<a></a>&#10; <a></a>&#9;<a></a>&#10;&#10;&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml
new file mode 100644
index 0000000000..631bfde91e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml
@@ -0,0 +1 @@
+<doc>&#10;&#10;&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml
new file mode 100644
index 0000000000..636ab4729a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml
@@ -0,0 +1 @@
+<doc a1="%e;"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml
new file mode 100644
index 0000000000..a20706ee01
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml
@@ -0,0 +1 @@
+<doc a1="1 2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml
new file mode 100644
index 0000000000..f898cc8c98
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml
@@ -0,0 +1 @@
+<doc a1="1 2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml
new file mode 100644
index 0000000000..e05cfe6c31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml
@@ -0,0 +1 @@
+<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml
new file mode 100644
index 0000000000..f6408de9b8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml
@@ -0,0 +1,2 @@
+<doc><?pi x
+y?></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml
new file mode 100644
index 0000000000..6e66b8da21
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml
@@ -0,0 +1 @@
+<doc a="&quot;"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml
new file mode 100644
index 0000000000..96495d45c3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml
@@ -0,0 +1 @@
+<doc>&lt;doc&gt;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml
new file mode 100644
index 0000000000..cc3def3336
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml
@@ -0,0 +1 @@
+<doc a="x y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml
new file mode 100644
index 0000000000..5aed3d613b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml
@@ -0,0 +1 @@
+<doc a="x&#9;y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml
new file mode 100644
index 0000000000..1197d2ff9c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml
@@ -0,0 +1 @@
+<doc a="x&#10;y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml
new file mode 100644
index 0000000000..288f23cdf2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml
@@ -0,0 +1 @@
+<doc a="x&#13;y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml
new file mode 100644
index 0000000000..cc3def3336
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml
@@ -0,0 +1 @@
+<doc a="x y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml
new file mode 100644
index 0000000000..c43bdf9b9c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml
@@ -0,0 +1 @@
+<doc a=""></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml
new file mode 100644
index 0000000000..a92237b4ec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml
@@ -0,0 +1 @@
+<doc a="x y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml
new file mode 100644
index 0000000000..cc3def3336
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml
@@ -0,0 +1 @@
+<doc a="x y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml
new file mode 100644
index 0000000000..c82f47bca8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml
@@ -0,0 +1 @@
+<doc><a></a></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml
new file mode 100644
index 0000000000..8e0722abad
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml
@@ -0,0 +1 @@
+<doc>&amp;foo;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml
new file mode 100644
index 0000000000..682b8140ec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml
@@ -0,0 +1 @@
+<doc>v</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml
new file mode 100644
index 0000000000..a79dff65fd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml
@@ -0,0 +1 @@
+<doc>&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml
new file mode 100644
index 0000000000..ced7d02719
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml
@@ -0,0 +1 @@
+<doc>]</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml
new file mode 100644
index 0000000000..31e37a9398
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml
@@ -0,0 +1 @@
+<doc>]]</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml
new file mode 100644
index 0000000000..7e8f183484
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml
@@ -0,0 +1 @@
+<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries
new file mode 100644
index 0000000000..06b9ee385a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries
@@ -0,0 +1,120 @@
+/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/015.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/016.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/017.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/018.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/019.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/020.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/021.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/022.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/023.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/024.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/025.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/026.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/027.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/028.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/029.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/030.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/031.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/032.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/033.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/034.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/035.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/036.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/037.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/038.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/039.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/040.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/041.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/042.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/043.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/044.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/045.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/046.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/047.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/048.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/049.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/050.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/051.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/052.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/053.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/054.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/055.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/056.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/057.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/058.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/059.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/060.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/061.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/062.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/063.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/064.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/065.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/066.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/067.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/068.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/069.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/070.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/071.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/072.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/073.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/074.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/075.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/076.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/077.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/078.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/079.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/080.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/081.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/082.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/083.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/084.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/085.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/086.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/087.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/088.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/089.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/090.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/091.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/092.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/093.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/094.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/095.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/096.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/097.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/098.xml/1.2/Thu Feb 7 19:44:42 2002//
+/099.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/100.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/101.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/102.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/103.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/104.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/105.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/106.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/107.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/108.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/109.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/110.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/111.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/112.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/113.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/114.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/115.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/116.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/117.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/118.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+/119.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
+D
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository
new file mode 100644
index 0000000000..1e172d2e1b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository
@@ -0,0 +1 @@
+2001/XML-Test-Suite/xmlconf/xmltest/valid/sa/out
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root
new file mode 100644
index 0000000000..3c7177e4bb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml
new file mode 100644
index 0000000000..bf81c88eb9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml
@@ -0,0 +1,1433 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ @(#)xmltest.xml 1.12 99/02/12
+ Copyright 1998-1999 by Sun Microsystems, Inc.
+ All Rights Reserved.
+-->
+
+<TESTCASES PROFILE="James Clark XMLTEST cases, 18-Nov-1998">
+
+<!-- Start: not-wf/sa -->
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-001"
+ URI="not-wf/sa/001.xml" SECTIONS="3.1 [41]">
+ Attribute values must start with attribute names, not "?". </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-002"
+ URI="not-wf/sa/002.xml" SECTIONS="2.3 [4]">
+ Names may not start with "."; it's not a Letter. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-003"
+ URI="not-wf/sa/003.xml" SECTIONS="2.6 [16]">
+ Processing Instruction target name is required.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-004"
+ URI="not-wf/sa/004.xml" SECTIONS="2.6 [16]">
+ SGML-ism: processing instructions end in '?&gt;' not '&gt;'. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-005"
+ URI="not-wf/sa/005.xml" SECTIONS="2.6 [16]">
+ Processing instructions end in '?&gt;' not '?'. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-006"
+ URI="not-wf/sa/006.xml" SECTIONS="2.5 [16]">
+ XML comments may not contain "--" </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-007"
+ URI="not-wf/sa/007.xml" SECTIONS="4.1 [68]">
+ General entity references have no whitespace after the
+ entity name and before the semicolon. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-008"
+ URI="not-wf/sa/008.xml" SECTIONS="2.3 [5]">
+ Entity references must include names, which don't begin
+ with '.' (it's not a Letter or other name start character). </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-009"
+ URI="not-wf/sa/009.xml" SECTIONS="4.1 [66]">
+ Character references may have only decimal or numeric strings.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-010"
+ URI="not-wf/sa/010.xml" SECTIONS="4.1 [68]">
+ Ampersand may only appear as part of a general entity reference.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-011"
+ URI="not-wf/sa/011.xml" SECTIONS="3.1 [41]">
+ SGML-ism: attribute values must be explicitly assigned a
+ value, it can't act as a boolean toggle. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-012"
+ URI="not-wf/sa/012.xml" SECTIONS="2.3 [10]">
+ SGML-ism: attribute values must be quoted in all cases. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-013"
+ URI="not-wf/sa/013.xml" SECTIONS="2.3 [10]">
+ The quotes on both ends of an attribute value must match. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-014"
+ URI="not-wf/sa/014.xml" SECTIONS="2.3 [10]">
+ Attribute values may not contain literal '&lt;' characters. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-015"
+ URI="not-wf/sa/015.xml" SECTIONS="3.1 [41]">
+ Attribute values need a value, not just an equals sign. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-016"
+ URI="not-wf/sa/016.xml" SECTIONS="3.1 [41]">
+ Attribute values need an associated name.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-017"
+ URI="not-wf/sa/017.xml" SECTIONS="2.7 [18]">
+ CDATA sections need a terminating ']]&gt;'. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-018"
+ URI="not-wf/sa/018.xml" SECTIONS="2.7 [19]">
+ CDATA sections begin with a literal '&lt;![CDATA[', no space.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-019"
+ URI="not-wf/sa/019.xml" SECTIONS="3.1 [42]">
+ End tags may not be abbreviated as '&lt;/&gt;'.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-020"
+ URI="not-wf/sa/020.xml" SECTIONS="2.3 [10]">
+ Attribute values may not contain literal '&amp;'
+ characters except as part of an entity reference. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-021"
+ URI="not-wf/sa/021.xml" SECTIONS="2.3 [10]">
+ Attribute values may not contain literal '&amp;'
+ characters except as part of an entity reference. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-022"
+ URI="not-wf/sa/022.xml" SECTIONS="4.1 [66]">
+ Character references end with semicolons, always!</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-023"
+ URI="not-wf/sa/023.xml" SECTIONS="2.3 [5]">
+ Digits are not valid name start characters. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-024"
+ URI="not-wf/sa/024.xml" SECTIONS="2.3 [5]">
+ Digits are not valid name start characters. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-025"
+ URI="not-wf/sa/025.xml" SECTIONS="2.4 [14]">
+ Text may not contain a literal ']]&gt;' sequence. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-026"
+ URI="not-wf/sa/026.xml" SECTIONS="2.4 [14]">
+ Text may not contain a literal ']]&gt;' sequence. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-027"
+ URI="not-wf/sa/027.xml" SECTIONS="2.5 [15]">
+ Comments must be terminated with "--&gt;".</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-028"
+ URI="not-wf/sa/028.xml" SECTIONS="2.6 [16]">
+ Processing instructions must end with '?&gt;'. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-029"
+ URI="not-wf/sa/029.xml" SECTIONS="2.4 [14]">
+ Text may not contain a literal ']]&gt;' sequence. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-030"
+ URI="not-wf/sa/030.xml" SECTIONS="2.2 [2]">
+ A form feed is not a legal XML character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-031"
+ URI="not-wf/sa/031.xml" SECTIONS="2.2 [2]">
+ A form feed is not a legal XML character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-032"
+ URI="not-wf/sa/032.xml" SECTIONS="2.2 [2]">
+ A form feed is not a legal XML character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-033"
+ URI="not-wf/sa/033.xml" SECTIONS="2.2 [2]">
+ An ESC (octal 033) is not a legal XML character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-034"
+ URI="not-wf/sa/034.xml" SECTIONS="2.2 [2]">
+ A form feed is not a legal XML character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-035"
+ URI="not-wf/sa/035.xml" SECTIONS="3.1 [43]">
+ The '&lt;' character is a markup delimiter and must
+ start an element, CDATA section, PI, or comment. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-036"
+ URI="not-wf/sa/036.xml" SECTIONS="2.8 [27]">
+ Text may not appear after the root element. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-037"
+ URI="not-wf/sa/037.xml" SECTIONS="2.8 [27]">
+ Character references may not appear after the root element. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-038"
+ URI="not-wf/sa/038.xml" SECTIONS="3.1">
+ Tests the "Unique Att Spec" WF constraint by providing
+ multiple values for an attribute.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-039"
+ URI="not-wf/sa/039.xml" SECTIONS="3">
+ Tests the Element Type Match WFC - end tag name must
+ match start tag name.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-040"
+ URI="not-wf/sa/040.xml" SECTIONS="2.8 [27]">
+ Provides two document elements.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-041"
+ URI="not-wf/sa/041.xml" SECTIONS="2.8 [27]">
+ Provides two document elements.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-042"
+ URI="not-wf/sa/042.xml" SECTIONS="3.1 [42]">
+ Invalid End Tag </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-043"
+ URI="not-wf/sa/043.xml" SECTIONS="2.8 [27]">
+ Provides #PCDATA text after the document element. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-044"
+ URI="not-wf/sa/044.xml" SECTIONS="2.8 [27]">
+ Provides two document elements.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-045"
+ URI="not-wf/sa/045.xml" SECTIONS="3.1 [44]">
+ Invalid Empty Element Tag </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-046"
+ URI="not-wf/sa/046.xml" SECTIONS="3.1 [40]">
+ This start (or empty element) tag was not terminated correctly. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-047"
+ URI="not-wf/sa/047.xml" SECTIONS="3.1 [44]">
+ Invalid empty element tag invalid whitespace </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-048"
+ URI="not-wf/sa/048.xml" SECTIONS="2.8 [27]">
+ Provides a CDATA section after the root element.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-049"
+ URI="not-wf/sa/049.xml" SECTIONS="3.1 [40]">
+ Missing start tag </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-050"
+ URI="not-wf/sa/050.xml" SECTIONS="2.1 [1]">
+ Empty document, with no root element. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-051"
+ URI="not-wf/sa/051.xml" SECTIONS="2.7 [18]">
+ CDATA is invalid at top level of document.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-052"
+ URI="not-wf/sa/052.xml" SECTIONS="4.1 [66]">
+ Invalid character reference. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-053"
+ URI="not-wf/sa/053.xml" SECTIONS="3.1 [42]">
+ End tag does not match start tag. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-054"
+ URI="not-wf/sa/054.xml" SECTIONS="4.2.2 [75]">
+ PUBLIC requires two literals.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-055"
+ URI="not-wf/sa/055.xml" SECTIONS="2.8 [28]">
+ Invalid Document Type Definition format. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-056"
+ URI="not-wf/sa/056.xml" SECTIONS="2.8 [28]">
+ Invalid Document Type Definition format - misplaced comment. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-057"
+ URI="not-wf/sa/057.xml" SECTIONS="3.2 [45]">
+ This isn't SGML; comments can't exist in declarations. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-058"
+ URI="not-wf/sa/058.xml" SECTIONS="3.3.1 [54]">
+ Invalid character , in ATTLIST enumeration </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-059"
+ URI="not-wf/sa/059.xml" SECTIONS="3.3.1 [59]">
+ String literal must be in quotes. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-060"
+ URI="not-wf/sa/060.xml" SECTIONS="3.3.1 [56]">
+ Invalid type NAME defined in ATTLIST.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-061"
+ URI="not-wf/sa/061.xml" SECTIONS="4.2.2 [75]">
+ External entity declarations require whitespace between public
+ and system IDs.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-062"
+ URI="not-wf/sa/062.xml" SECTIONS="4.2 [71]">
+ Entity declarations need space after the entity name. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-063"
+ URI="not-wf/sa/063.xml" SECTIONS="2.8 [29]">
+ Conditional sections may only appear in the external
+ DTD subset. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-064"
+ URI="not-wf/sa/064.xml" SECTIONS="3.3 [53]">
+ Space is required between attribute type and default values
+ in &lt;!ATTLIST...&gt; declarations. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-065"
+ URI="not-wf/sa/065.xml" SECTIONS="3.3 [53]">
+ Space is required between attribute name and type
+ in &lt;!ATTLIST...&gt; declarations. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-066"
+ URI="not-wf/sa/066.xml" SECTIONS="3.3 [52]">
+ Required whitespace is missing. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-067"
+ URI="not-wf/sa/067.xml" SECTIONS="3.3 [53]">
+ Space is required between attribute type and default values
+ in &lt;!ATTLIST...&gt; declarations. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-068"
+ URI="not-wf/sa/068.xml" SECTIONS="3.3.1 [58]">
+ Space is required between NOTATION keyword and list of
+ enumerated choices in &lt;!ATTLIST...&gt; declarations. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-069"
+ URI="not-wf/sa/069.xml" SECTIONS="4.2.2 [76]">
+ Space is required before an NDATA entity annotation.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-070"
+ URI="not-wf/sa/070.xml" SECTIONS="2.5 [16]">
+ XML comments may not contain "--" </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-071"
+ URI="not-wf/sa/071.xml" SECTIONS="4.1 [68]">
+ ENTITY can't reference itself directly or indirectly.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-072"
+ URI="not-wf/sa/072.xml" SECTIONS="4.1 [68]">
+ Undefined ENTITY foo. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-073"
+ URI="not-wf/sa/073.xml" SECTIONS="4.1 [68]">
+ Undefined ENTITY f. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-074"
+ URI="not-wf/sa/074.xml" SECTIONS="4.3.2">
+ Internal general parsed entities are only well formed if
+ they match the "content" production. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-075"
+ URI="not-wf/sa/075.xml" SECTIONS="4.1 [68]">
+ ENTITY can't reference itself directly or indirectly. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-076"
+ URI="not-wf/sa/076.xml" SECTIONS="4.1 [68]">
+ Undefined ENTITY foo. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-077"
+ URI="not-wf/sa/077.xml" SECTIONS="41. [68]">
+ Undefined ENTITY bar. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-078"
+ URI="not-wf/sa/078.xml" SECTIONS="4.1 [68]">
+ Undefined ENTITY foo. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-079"
+ URI="not-wf/sa/079.xml" SECTIONS="4.1 [68]">
+ ENTITY can't reference itself directly or indirectly. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-080"
+ URI="not-wf/sa/080.xml" SECTIONS="4.1 [68]">
+ ENTITY can't reference itself directly or indirectly. </TEST>
+<TEST TYPE="not-wf" ENTITIES="general" ID="not-wf-sa-081"
+ URI="not-wf/sa/081.xml" SECTIONS="3.1">
+ This tests the <EM>No External Entity References</EM> WFC,
+ since the entity is referred to within an attribute. </TEST>
+<TEST TYPE="not-wf" ENTITIES="general" ID="not-wf-sa-082"
+ URI="not-wf/sa/082.xml" SECTIONS="3.1">
+ This tests the <EM>No External Entity References</EM> WFC,
+ since the entity is referred to within an attribute. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-083"
+ URI="not-wf/sa/083.xml" SECTIONS="4.2.2 [76]">
+ Undefined NOTATION n. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-084"
+ URI="not-wf/sa/084.xml" SECTIONS="4.1">
+ Tests the <EM>Parsed Entity</EM> WFC by referring to an
+ unparsed entity. (This precedes the error of not declaring
+ that entity's notation, which may be detected any time before
+ the DTD parsing is completed.) </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-085"
+ URI="not-wf/sa/085.xml" SECTIONS="2.3 [13]">
+ Public IDs may not contain "[". </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-086"
+ URI="not-wf/sa/086.xml" SECTIONS="2.3 [13]">
+ Public IDs may not contain "[". </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-087"
+ URI="not-wf/sa/087.xml" SECTIONS="2.3 [13]">
+ Public IDs may not contain "[". </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-088"
+ URI="not-wf/sa/088.xml" SECTIONS="2.3 [10]">
+ Attribute values are terminated by literal quote characters,
+ and any entity expansion is done afterwards. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-089"
+ URI="not-wf/sa/089.xml" SECTIONS="4.2 [74]">
+ Parameter entities "are" always parsed; NDATA annotations
+ are not permitted.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-090"
+ URI="not-wf/sa/090.xml" SECTIONS="2.3 [10]">
+ Attributes may not contain a literal "&lt;" character;
+ this one has one because of reference expansion. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-091"
+ URI="not-wf/sa/091.xml" SECTIONS="4.2 [74]">
+ Parameter entities "are" always parsed; NDATA annotations
+ are not permitted.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-092"
+ URI="not-wf/sa/092.xml" SECTIONS="4.5">
+ The replacement text of this entity has an illegal reference,
+ because the character reference is expanded immediately. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-093"
+ URI="not-wf/sa/093.xml" SECTIONS="4.1 [66]">
+ Hexadecimal character references may not use the uppercase 'X'.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-094"
+ URI="not-wf/sa/094.xml" SECTIONS="2.8 [24]">
+ Prolog VERSION must be lowercase. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-095"
+ URI="not-wf/sa/095.xml" SECTIONS="2.8 [23]">
+ VersionInfo must come before EncodingDecl. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-096"
+ URI="not-wf/sa/096.xml" SECTIONS="2.9 [32]">
+ Space is required before the standalone declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-097"
+ URI="not-wf/sa/097.xml" SECTIONS="2.8 [24]">
+ Both quotes surrounding VersionNum must be the same. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-098"
+ URI="not-wf/sa/098.xml" SECTIONS="2.8 [23]">
+ Only one "version=..." string may appear in an XML declaration.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-099"
+ URI="not-wf/sa/099.xml" SECTIONS="2.8 [23]">
+ Only three pseudo-attributes are in the XML declaration,
+ and "valid=..." is not one of them. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-100"
+ URI="not-wf/sa/100.xml" SECTIONS="2.9 [32]">
+ Only "yes" and "no" are permitted as values of "standalone". </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-101"
+ URI="not-wf/sa/101.xml" SECTIONS="4.3.3 [81]">
+ Space is not permitted in an encoding name. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-102"
+ URI="not-wf/sa/102.xml" SECTIONS="2.8 [26]">
+ Provides an illegal XML version number; spaces are illegal.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-103"
+ URI="not-wf/sa/103.xml" SECTIONS="4.3.2">
+ End-tag required for element foo. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-104"
+ URI="not-wf/sa/104.xml" SECTIONS="4.3.2">
+ Internal general parsed entities are only well formed if
+ they match the "content" production. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-105"
+ URI="not-wf/sa/105.xml" SECTIONS="2.7 ">
+ Invalid placement of CDATA section. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-106"
+ URI="not-wf/sa/106.xml" SECTIONS="4.2">
+ Invalid placement of entity declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-107"
+ URI="not-wf/sa/107.xml" SECTIONS="2.8 [28]">
+ Invalid document type declaration. CDATA alone is invalid.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-108"
+ URI="not-wf/sa/108.xml" SECTIONS="2.7 [19]">
+ No space in '&lt;![CDATA['.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-109"
+ URI="not-wf/sa/109.xml" SECTIONS="4.2 [70]">
+ Tags invalid within EntityDecl. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-110"
+ URI="not-wf/sa/110.xml" SECTIONS="4.1 [68]">
+ Entity reference must be in content of element. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-111"
+ URI="not-wf/sa/111.xml" SECTIONS="3.1 [43]">
+ Entiry reference must be in content of element not Start-tag. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-112"
+ URI="not-wf/sa/112.xml" SECTIONS="2.7 [19]">
+ CDATA sections start '&lt;![CDATA[', not '&lt;!cdata['.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-113"
+ URI="not-wf/sa/113.xml" SECTIONS="2.3 [9]">
+ Parameter entity values must use valid reference syntax;
+ this reference is malformed.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-114"
+ URI="not-wf/sa/114.xml" SECTIONS="2.3 [9]">
+ General entity values must use valid reference syntax;
+ this reference is malformed.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-115"
+ URI="not-wf/sa/115.xml" SECTIONS="4.5">
+ The replacement text of this entity is an illegal character
+ reference, which must be rejected when it is parsed in the
+ context of an attribute value.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-116"
+ URI="not-wf/sa/116.xml" SECTIONS="4.3.2">
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-117"
+ URI="not-wf/sa/117.xml" SECTIONS="4.3.2">
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-118"
+ URI="not-wf/sa/118.xml" SECTIONS="4.1 [68]">
+ Entity reference expansion is not recursive.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-119"
+ URI="not-wf/sa/119.xml" SECTIONS="4.3.2">
+ Internal general parsed entities are only well formed if
+ they match the "content" production. This is a partial
+ character reference, not a full one. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-120"
+ URI="not-wf/sa/120.xml" SECTIONS="4.5">
+ Character references are expanded in the replacement text of
+ an internal entity, which is then parsed as usual. Accordingly,
+ &amp; must be doubly quoted - encoded either as <EM>&amp;amp;</EM>
+ or as <EM>&amp;#38;#38;</EM>. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-121"
+ URI="not-wf/sa/121.xml" SECTIONS="4.1 [68]">
+ A name of an ENTITY was started with an invalid character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-122"
+ URI="not-wf/sa/122.xml" SECTIONS="3.2.1 [47]">
+ Invalid syntax mixed connectors are used. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-123"
+ URI="not-wf/sa/123.xml" SECTIONS="3.2.1 [48]">
+ Invalid syntax mismatched parenthesis. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-124"
+ URI="not-wf/sa/124.xml" SECTIONS="3.2.2 [51]">
+ Invalid format of Mixed-content declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-125"
+ URI="not-wf/sa/125.xml" SECTIONS="3.2.2 [51]">
+ Invalid syntax extra set of parenthesis not necessary. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-126"
+ URI="not-wf/sa/126.xml" SECTIONS="3.2.2 [51]">
+ Invalid syntax Mixed-content must be defined as zero or more. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-127"
+ URI="not-wf/sa/127.xml" SECTIONS="3.2.2 [51]">
+ Invalid syntax Mixed-content must be defined as zero or more. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-128"
+ URI="not-wf/sa/128.xml" SECTIONS="2.7 [18]">
+ Invalid CDATA syntax. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-129"
+ URI="not-wf/sa/129.xml" SECTIONS="3.2 [45]">
+ Invalid syntax for Element Type Declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-130"
+ URI="not-wf/sa/130.xml" SECTIONS="3.2 [45]">
+ Invalid syntax for Element Type Declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-131"
+ URI="not-wf/sa/131.xml" SECTIONS="3.2 [45]">
+ Invalid syntax for Element Type Declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-132"
+ URI="not-wf/sa/132.xml" SECTIONS="3.2.1 [50]">
+ Invalid syntax mixed connectors used. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-133"
+ URI="not-wf/sa/133.xml" SECTIONS="3.2.1">
+ Illegal whitespace before optional character causes syntax error. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-134"
+ URI="not-wf/sa/134.xml" SECTIONS="3.2.1">
+ Illegal whitespace before optional character causes syntax error. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-135"
+ URI="not-wf/sa/135.xml" SECTIONS="3.2.1 [47]">
+ Invalid character used as connector. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-136"
+ URI="not-wf/sa/136.xml" SECTIONS="3.2 [45]">
+ Tag omission is invalid in XML. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-137"
+ URI="not-wf/sa/137.xml" SECTIONS="3.2 [45]">
+ Space is required before a content model. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-138"
+ URI="not-wf/sa/138.xml" SECTIONS="3.2.1 [48]">
+ Invalid syntax for content particle. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-139"
+ URI="not-wf/sa/139.xml" SECTIONS="3.2.1 [46]">
+ The element-content model should not be empty. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-140"
+ URI="not-wf/sa/140.xml" SECTIONS="2.3 [4]">
+ Character '&amp;#x309a;' is a CombiningChar, not a
+ Letter, and so may not begin a name.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-141"
+ URI="not-wf/sa/141.xml" SECTIONS="2.3 [5]">
+ Character #x0E5C is not legal in XML names. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-142"
+ URI="not-wf/sa/142.xml" SECTIONS="2.2 [2]">
+ Character #x0000 is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-143"
+ URI="not-wf/sa/143.xml" SECTIONS="2.2 [2]">
+ Character #x001F is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-144"
+ URI="not-wf/sa/144.xml" SECTIONS="2.2 [2]">
+ Character #xFFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-145"
+ URI="not-wf/sa/145.xml" SECTIONS="2.2 [2]">
+ Character #xD800 is not legal anywhere in an XML document. (If it
+ appeared in a UTF-16 surrogate pair, it'd represent half of a UCS-4
+ character and so wouldn't really be in the document.) </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-146"
+ URI="not-wf/sa/146.xml" SECTIONS="2.2 [2]">
+ Character references must also refer to legal XML characters;
+ #x00110000 is one more than the largest legal character.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-147"
+ URI="not-wf/sa/147.xml" SECTIONS="2.8 [22]">
+ XML Declaration may not be preceded by whitespace.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-148"
+ URI="not-wf/sa/148.xml" SECTIONS="2.8 [22]">
+ XML Declaration may not be preceded by comments or whitespace.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-149"
+ URI="not-wf/sa/149.xml" SECTIONS="2.8 [28]">
+ XML Declaration may not be within a DTD.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-150"
+ URI="not-wf/sa/150.xml" SECTIONS="3.1 [43]">
+ XML declarations may not be within element content. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-151"
+ URI="not-wf/sa/151.xml" SECTIONS="2.8 [27]">
+ XML declarations may not follow document content.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-152"
+ URI="not-wf/sa/152.xml" SECTIONS="2.8 [22]">
+ XML declarations must include the "version=..." string.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-153"
+ URI="not-wf/sa/153.xml" SECTIONS="4.3.2">
+ Text declarations may not begin internal parsed entities;
+ they may only appear at the beginning of external parsed
+ (parameter or general) entities. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-154"
+ URI="not-wf/sa/154.xml" SECTIONS="2.8 2.6 [23, 17]">
+ '&lt;?XML ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-155"
+ URI="not-wf/sa/155.xml" SECTIONS="2.8 2.6 [23, 17]">
+ '&lt;?xmL ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-156"
+ URI="not-wf/sa/156.xml" SECTIONS="2.8 2.6 [23, 17]">
+ '&lt;?xMl ...?&gt;' is neither an XML declaration
+ nor a legal processing instruction target name. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-157"
+ URI="not-wf/sa/157.xml" SECTIONS="2.6 [17]">
+ '&lt;?xmL ...?&gt;' is not a legal processing instruction
+ target name. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-158"
+ URI="not-wf/sa/158.xml" SECTIONS="3.3 [52]">
+ SGML-ism: "#NOTATION gif" can't have attributes. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-159"
+ URI="not-wf/sa/159.xml" SECTIONS="2.3 [9]">
+ Uses '&amp;' unquoted in an entity declaration,
+ which is illegal syntax for an entity reference.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-160"
+ URI="not-wf/sa/160.xml" SECTIONS="2.8">
+ Violates the <EM>PEs in Internal Subset</EM> WFC
+ by using a PE reference within a declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-161"
+ URI="not-wf/sa/161.xml" SECTIONS="2.8">
+ Violates the <EM>PEs in Internal Subset</EM> WFC
+ by using a PE reference within a declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-162"
+ URI="not-wf/sa/162.xml" SECTIONS="2.8">
+ Violates the <EM>PEs in Internal Subset</EM> WFC
+ by using a PE reference within a declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-163"
+ URI="not-wf/sa/163.xml" SECTIONS="4.1 [69]">
+ Invalid placement of Parameter entity reference. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-164"
+ URI="not-wf/sa/164.xml" SECTIONS="4.1 [69]">
+ Invalid placement of Parameter entity reference. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-165"
+ URI="not-wf/sa/165.xml" SECTIONS="4.2 [72]">
+ Parameter entity declarations must have a space before
+ the '%'. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-166"
+ URI="not-wf/sa/166.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-167"
+ URI="not-wf/sa/167.xml" SECTIONS="2.2 [2]">
+ Character FFFE is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-168"
+ URI="not-wf/sa/168.xml" SECTIONS="2.2 [2]">
+ An unpaired surrogate (D800) is not legal anywhere
+ in an XML document.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-169"
+ URI="not-wf/sa/169.xml" SECTIONS="2.2 [2]">
+ An unpaired surrogate (DC00) is not legal anywhere
+ in an XML document.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-170"
+ URI="not-wf/sa/170.xml" SECTIONS="2.2 [2]">
+ Four byte UTF-8 encodings can encode UCS-4 characters
+ which are beyond the range of legal XML characters
+ (and can't be expressed in Unicode surrogate pairs).
+ This document holds such a character. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-171"
+ URI="not-wf/sa/171.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-172"
+ URI="not-wf/sa/172.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-173"
+ URI="not-wf/sa/173.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-174"
+ URI="not-wf/sa/174.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-175"
+ URI="not-wf/sa/175.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-176"
+ URI="not-wf/sa/176.xml" SECTIONS="3 [39]">
+ Start tags must have matching end tags.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-177"
+ URI="not-wf/sa/177.xml" SECTIONS="2.2 [2]">
+ Character FFFF is not legal anywhere in an XML document. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-178"
+ URI="not-wf/sa/178.xml" SECTIONS="3.1 [41]">
+ Invalid syntax matching double quote is missing. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-179"
+ URI="not-wf/sa/179.xml" SECTIONS="4.1 [66]">
+ Invalid syntax matching double quote is missing. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-180"
+ URI="not-wf/sa/180.xml" SECTIONS="4.1">
+ The <EM>Entity Declared</EM> WFC requires entities to be declared
+ before they are used in an attribute list declaration. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-181"
+ URI="not-wf/sa/181.xml" SECTIONS="4.3.2">
+ Internal parsed entities must match the <EM>content</EM>
+ production to be well formed. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-182"
+ URI="not-wf/sa/182.xml" SECTIONS="4.3.2">
+ Internal parsed entities must match the <EM>content</EM>
+ production to be well formed. </TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-183"
+ URI="not-wf/sa/183.xml" SECTIONS="3.2.2 [51]">
+ Mixed content declarations may not include content particles.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-184"
+ URI="not-wf/sa/184.xml" SECTIONS="3.2.2 [51]">
+ In mixed content models, element names must not be
+ parenthesized. </TEST>
+<TEST TYPE="not-wf" ENTITIES="parameter" ID="not-wf-sa-185"
+ URI="not-wf/sa/185.xml" SECTIONS="4.1">
+ Tests the <EM>Entity Declared</EM> WFC.
+ <EM>Note:</EM> a nonvalidating parser is permitted not to report
+ this WFC violation, since it would need to read an external
+ parameter entity to distinguish it from a violation of
+ the <EM>Standalone Declaration</EM> VC.</TEST>
+<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-186"
+ URI="not-wf/sa/186.xml" SECTIONS="3.1 [44]">
+ Whitespace is required between attribute/value pairs. </TEST>
+
+<!-- Start: not-wf/not-sa -->
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-001"
+ URI="not-wf/not-sa/001.xml" SECTIONS="3.4 [62]">
+ Conditional sections must be properly terminated ("]&gt;" used
+ instead of "]]&gt;"). </TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-002"
+ URI="not-wf/not-sa/002.xml" SECTIONS="2.6 [17]">
+ Processing instruction target names may not be "XML"
+ in any combination of cases. </TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-003"
+ URI="not-wf/not-sa/003.xml" SECTIONS="3.4 [62]">
+ Conditional sections must be properly terminated ("]]&gt;" omitted). </TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-004"
+ URI="not-wf/not-sa/004.xml" SECTIONS="3.4 [62]">
+ Conditional sections must be properly terminated ("]]&gt;" omitted). </TEST>
+<TEST TYPE="error" ENTITIES="both" ID="not-wf-not-sa-005"
+ URI="not-wf/not-sa/005.xml" SECTIONS="4.1">
+ Tests the <EM>Entity Declared</EM> VC by referring to an
+ undefined parameter entity within an external entity.</TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-006"
+ URI="not-wf/not-sa/006.xml" SECTIONS="3.4 [62]">
+ Conditional sections need a '[' after the INCLUDE or IGNORE. </TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-007"
+ URI="not-wf/not-sa/007.xml" SECTIONS="4.3.2 [79]">
+ A &lt;!DOCTYPE ...&gt; declaration may not begin any external
+ entity; it's only found once, in the document entity.</TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-008"
+ URI="not-wf/not-sa/008.xml" SECTIONS="4.1 [69]">
+ In DTDs, the '%' character must be part of a parameter
+ entity reference.</TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-009"
+ URI="not-wf/not-sa/009.xml" SECTIONS="2.8">
+ This test violates WFC:PE Between Declarations in Production 28a.
+ The last character of a markup declaration is not contained in the same
+ parameter-entity text replacement.</TEST>
+<!-- Start: not-wf/ext-sa -->
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-ext-sa-001"
+ URI="not-wf/ext-sa/001.xml" SECTIONS="4.1">
+ Tests the <EM>No Recursion</EM> WFC by having an external general
+ entity be self-recursive.</TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-ext-sa-002"
+ URI="not-wf/ext-sa/002.xml" SECTIONS="4.3.1 4.3.2 [77, 78]">
+ External entities have "text declarations", which do
+ not permit the "standalone=..." attribute that's allowed
+ in XML declarations.</TEST>
+<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-ext-sa-003"
+ URI="not-wf/ext-sa/003.xml" SECTIONS="2.6 [17]">
+ Only one text declaration is permitted; a second one
+ looks like an illegal processing instruction (target names
+ of "xml" in any case are not allowed). </TEST>
+
+
+<!-- Start: invalid/ -->
+
+<TEST TYPE="invalid" ENTITIES="both" ID="invalid--002"
+ URI="invalid/002.xml" SECTIONS="3.2.1">
+ Tests the "Proper Group/PE Nesting" validity constraint by
+ fragmenting a content model between two parameter entities.</TEST>
+<TEST TYPE="invalid" ENTITIES="both" ID="invalid--005"
+ URI="invalid/005.xml" SECTIONS="2.8">
+ Tests the "Proper Declaration/PE Nesting" validity constraint by
+ fragmenting an element declaration between two parameter entities.</TEST>
+<TEST TYPE="invalid" ENTITIES="both" ID="invalid--006"
+ URI="invalid/006.xml" SECTIONS="2.8">
+ Tests the "Proper Declaration/PE Nesting" validity constraint by
+ fragmenting an element declaration between two parameter entities.</TEST>
+<TEST TYPE="invalid" ENTITIES="both" ID="invalid-not-sa-022"
+ URI="invalid/not-sa/022.xml" SECTIONS="3.4 [62]"
+ OUTPUT="invalid/not-sa/out/022.xml">
+ Test the "Proper Conditional Section/ PE Nesting" validity constraint. </TEST>
+
+<!-- Start: valid/sa -->
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-001"
+ URI="valid/sa/001.xml" SECTIONS="3.2.2 [51]"
+ OUTPUT="valid/sa/out/001.xml">
+ Test demonstrates an Element Type Declaration with Mixed Content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-002"
+ URI="valid/sa/002.xml" SECTIONS="3.1 [40]"
+ OUTPUT="valid/sa/out/002.xml">
+ Test demonstrates that whitespace is permitted after the tag name in a Start-tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-003"
+ URI="valid/sa/003.xml" SECTIONS="3.1 [42]"
+ OUTPUT="valid/sa/out/003.xml">
+ Test demonstrates that whitespace is permitted after the tag name in an End-tag.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-004"
+ URI="valid/sa/004.xml" SECTIONS="3.1 [41]"
+ OUTPUT="valid/sa/out/004.xml">
+ Test demonstrates a valid attribute specification within a Start-tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-005"
+ URI="valid/sa/005.xml" SECTIONS="3.1 [40]"
+ OUTPUT="valid/sa/out/005.xml">
+ Test demonstrates a valid attribute specification within a Start-tag that
+contains whitespace on both sides of the equal sign. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-006"
+ URI="valid/sa/006.xml" SECTIONS="3.1 [41]"
+ OUTPUT="valid/sa/out/006.xml">
+ Test demonstrates that the AttValue within a Start-tag can use a single quote as a delimter. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-007"
+ URI="valid/sa/007.xml" SECTIONS="3.1 4.6 [43]"
+ OUTPUT="valid/sa/out/007.xml">
+ Test demonstrates numeric character references can be used for element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-008"
+ URI="valid/sa/008.xml" SECTIONS="2.4 3.1 [43]"
+ OUTPUT="valid/sa/out/008.xml">
+ Test demonstrates character references can be used for element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-009"
+ URI="valid/sa/009.xml" SECTIONS="2.3 3.1 [43]"
+ OUTPUT="valid/sa/out/009.xml">
+ Test demonstrates that PubidChar can be used for element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-010"
+ URI="valid/sa/010.xml" SECTIONS="3.1 [40]"
+ OUTPUT="valid/sa/out/010.xml">
+ Test demonstrates that whitespace is valid after the Attribute in a Start-tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-011"
+ URI="valid/sa/011.xml" SECTIONS="3.1 [40]"
+ OUTPUT="valid/sa/out/011.xml">
+ Test demonstrates mutliple Attibutes within the Start-tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-012"
+ URI="valid/sa/012.xml" SECTIONS="2.3 [4]"
+ OUTPUT="valid/sa/out/012.xml" NAMESPACE="no">
+ Uses a legal XML 1.0 name consisting of a single colon
+ character (disallowed by the latest XML Namespaces draft).</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-013"
+ URI="valid/sa/013.xml" SECTIONS="2.3 3.1 [13] [40]"
+ OUTPUT="valid/sa/out/013.xml">
+ Test demonstrates that the Attribute in a Start-tag can consist of numerals along with special characters. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-014"
+ URI="valid/sa/014.xml" SECTIONS="2.3 3.1 [13] [40]"
+ OUTPUT="valid/sa/out/014.xml">
+ Test demonstrates that all lower case letters are valid for the Attribute in a Start-tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-015"
+ URI="valid/sa/015.xml" SECTIONS="2.3 3.1 [13] [40]"
+ OUTPUT="valid/sa/out/015.xml">
+ Test demonstrates that all upper case letters are valid for the Attribute in a Start-tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-016"
+ URI="valid/sa/016.xml" SECTIONS="2.6 3.1 [16] [43]"
+ OUTPUT="valid/sa/out/016.xml">
+ Test demonstrates that Processing Instructions are valid element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-017"
+ URI="valid/sa/017.xml" SECTIONS="2.6 3.1 [16] [43]"
+ OUTPUT="valid/sa/out/017.xml">
+ Test demonstrates that Processing Instructions are valid element content and there can be more than one. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-018"
+ URI="valid/sa/018.xml" SECTIONS="2.7 3.1 [18] [43]"
+ OUTPUT="valid/sa/out/018.xml">
+ Test demonstrates that CDATA sections are valid element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-019"
+ URI="valid/sa/019.xml" SECTIONS="2.7 3.1 [18] [43]"
+ OUTPUT="valid/sa/out/019.xml">
+ Test demonstrates that CDATA sections are valid element content and that
+ampersands may occur in their literal form. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-020"
+ URI="valid/sa/020.xml" SECTIONS="2.7 3.1 [18] [43]"
+ OUTPUT="valid/sa/out/020.xml">
+ Test demonstractes that CDATA sections are valid element content and that
+everyting between the CDStart and CDEnd is recognized as character data not markup. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-021"
+ URI="valid/sa/021.xml" SECTIONS="2.5 3.1 [15] [43]"
+ OUTPUT="valid/sa/out/021.xml">
+ Test demonstrates that comments are valid element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-022"
+ URI="valid/sa/022.xml" SECTIONS="2.5 3.1 [15] [43]"
+ OUTPUT="valid/sa/out/022.xml">
+ Test demonstrates that comments are valid element content and that all characters before the double-hypen right angle combination are considered part of thecomment. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-023"
+ URI="valid/sa/023.xml" SECTIONS="3.1 [43]"
+ OUTPUT="valid/sa/out/023.xml">
+ Test demonstrates that Entity References are valid element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-024"
+ URI="valid/sa/024.xml" SECTIONS="3.1 4.1 [43] [66]"
+ OUTPUT="valid/sa/out/024.xml">
+ Test demonstrates that Entity References are valid element content and also demonstrates a valid Entity Declaration. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-025"
+ URI="valid/sa/025.xml" SECTIONS="3.2 [46]"
+ OUTPUT="valid/sa/out/025.xml">
+ Test demonstrates an Element Type Declaration and that the contentspec can be of mixed content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-026"
+ URI="valid/sa/026.xml" SECTIONS="3.2 [46]"
+ OUTPUT="valid/sa/out/026.xml">
+ Test demonstrates an Element Type Declaration and that EMPTY is a valid contentspec. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-027"
+ URI="valid/sa/027.xml" SECTIONS="3.2 [46]"
+ OUTPUT="valid/sa/out/027.xml">
+ Test demonstrates an Element Type Declaration and that ANY is a valid contenspec. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-028"
+ URI="valid/sa/028.xml" SECTIONS="2.8 [24]"
+ OUTPUT="valid/sa/out/028.xml">
+ Test demonstrates a valid prolog that uses double quotes as delimeters around the VersionNum. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-029"
+ URI="valid/sa/029.xml" SECTIONS="2.8 [24]"
+ OUTPUT="valid/sa/out/029.xml">
+ Test demonstrates a valid prolog that uses single quotes as delimters around the VersionNum. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-030"
+ URI="valid/sa/030.xml" SECTIONS="2.8 [25]"
+ OUTPUT="valid/sa/out/030.xml">
+ Test demonstrates a valid prolog that contains whitespace on both sides of the equal sign in the VersionInfo. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-031"
+ URI="valid/sa/031.xml" SECTIONS="4.3.3 [80]"
+ OUTPUT="valid/sa/out/031.xml">
+ Test demonstrates a valid EncodingDecl within the prolog. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-032"
+ URI="valid/sa/032.xml" SECTIONS="2.9 [32]"
+ OUTPUT="valid/sa/out/032.xml">
+ Test demonstrates a valid SDDecl within the prolog. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-033"
+ URI="valid/sa/033.xml" SECTIONS="2.8 [23]"
+ OUTPUT="valid/sa/out/033.xml">
+ Test demonstrates that both a EncodingDecl and SDDecl are valid within the prolog. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-034"
+ URI="valid/sa/034.xml" SECTIONS="3.1 [44]"
+ OUTPUT="valid/sa/out/034.xml">
+ Test demonstrates the correct syntax for an Empty element tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-035"
+ URI="valid/sa/035.xml" SECTIONS="3.1 [44]"
+ OUTPUT="valid/sa/out/035.xml">
+ Test demonstrates that whitespace is permissible after the name in an Empty element tag. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-036"
+ URI="valid/sa/036.xml" SECTIONS="2.6 [16]"
+ OUTPUT="valid/sa/out/036.xml">
+ Test demonstrates a valid processing instruction. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-037"
+ URI="valid/sa/037.xml" SECTIONS="2.6 [15]"
+ OUTPUT="valid/sa/out/037.xml">
+ Test demonstrates a valid comment and that it may appear anywhere in the document including at the end. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-038"
+ URI="valid/sa/038.xml" SECTIONS="2.6 [15]"
+ OUTPUT="valid/sa/out/038.xml">
+ Test demonstrates a valid comment and that it may appear anywhere in the document including the beginning. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-039"
+ URI="valid/sa/039.xml" SECTIONS="2.6 [16]"
+ OUTPUT="valid/sa/out/039.xml">
+ Test demonstrates a valid processing instruction and that it may appear at the beginning of the document. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-040"
+ URI="valid/sa/040.xml" SECTIONS="3.3 3.3.1 [52] [54]"
+ OUTPUT="valid/sa/out/040.xml">
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-041"
+ URI="valid/sa/041.xml" SECTIONS="3.3.1 4.1 [54] [66]"
+ OUTPUT="valid/sa/out/041.xml">
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-042"
+ URI="valid/sa/042.xml" SECTIONS="3.3.1 4.1 [54] [66]"
+ OUTPUT="valid/sa/out/042.xml">
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. The test also shows that the leading zeros in the character reference are ignored. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-043"
+ URI="valid/sa/043.xml" SECTIONS="3.3"
+ OUTPUT="valid/sa/out/043.xml">
+ An element's attributes may be declared before its content
+ model; and attribute values may contain newlines. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-044"
+ URI="valid/sa/044.xml" SECTIONS="3.1 [44]"
+ OUTPUT="valid/sa/out/044.xml">
+ Test demonstrates that the empty-element tag must be use for an elements that are declared EMPTY. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-045"
+ URI="valid/sa/045.xml" SECTIONS="3.3 [52]"
+ OUTPUT="valid/sa/out/045.xml">
+ Tests whether more than one definition can be provided for the same attribute of a given element type with the first declaration being binding. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-046"
+ URI="valid/sa/046.xml" SECTIONS="3.3 [52]"
+ OUTPUT="valid/sa/out/046.xml">
+ Test demonstrates that when more than one AttlistDecl is provided for a given element type, the contents of all those provided are merged. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-047"
+ URI="valid/sa/047.xml" SECTIONS="3.1 [43]"
+ OUTPUT="valid/sa/out/047.xml">
+ Test demonstrates that extra whitespace is normalized into single space character. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-048"
+ URI="valid/sa/048.xml" SECTIONS="2.4 3.1 [14] [43]"
+ OUTPUT="valid/sa/out/048.xml">
+ Test demonstrates that character data is valid element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-049"
+ URI="valid/sa/049.xml" SECTIONS="2.2 [2]"
+ OUTPUT="valid/sa/out/049.xml">
+ Test demonstrates that characters outside of normal ascii range can be used as element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-050"
+ URI="valid/sa/050.xml" SECTIONS="2.2 [2]"
+ OUTPUT="valid/sa/out/050.xml">
+ Test demonstrates that characters outside of normal ascii range can be used as element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-051"
+ URI="valid/sa/051.xml" SECTIONS="2.2 [2]"
+ OUTPUT="valid/sa/out/051.xml">
+ The document is encoded in UTF-16 and uses some name
+ characters well outside of the normal ASCII range.
+ </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-052"
+ URI="valid/sa/052.xml" SECTIONS="2.2 [2]"
+ OUTPUT="valid/sa/out/052.xml">
+ The document is encoded in UTF-8 and the text inside the
+ root element uses two non-ASCII characters, encoded in UTF-8
+ and each of which expands to a Unicode surrogate pair.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-053"
+ URI="valid/sa/053.xml" SECTIONS="4.4.2"
+ OUTPUT="valid/sa/out/053.xml">
+ Tests inclusion of a well-formed internal entity, which
+ holds an element required by the content model.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-054"
+ URI="valid/sa/054.xml" SECTIONS="3.1 [40] [42]"
+ OUTPUT="valid/sa/out/054.xml">
+ Test demonstrates that extra whitespace within Start-tags and End-tags are nomalized into single spaces. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-055"
+ URI="valid/sa/055.xml" SECTIONS="2.6 2.10 [16]"
+ OUTPUT="valid/sa/out/055.xml">
+ Test demonstrates that extra whitespace within a processing instruction willnormalized into s single space character. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-056"
+ URI="valid/sa/056.xml" SECTIONS="3.3.1 4.1 [54] [66]"
+ OUTPUT="valid/sa/out/056.xml">
+ Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. The test also shows that the leading zeros in the character reference are ignored. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-057"
+ URI="valid/sa/057.xml" SECTIONS="3.2.1 [47]"
+ OUTPUT="valid/sa/out/057.xml">
+ Test demonstrates an element content model whose element can occur zero or more times. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-058"
+ URI="valid/sa/058.xml" SECTIONS="3.3.3"
+ OUTPUT="valid/sa/out/058.xml">
+ Test demonstrates that extra whitespace be normalized into a single space character in an attribute of type NMTOKENS. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-059"
+ URI="valid/sa/059.xml" SECTIONS="3.2 3.3 [46] [53]"
+ OUTPUT="valid/sa/out/059.xml">
+ Test demonstrates an Element Type Declaration that uses the contentspec of EMPTY. The element cannot have any contents and must always appear as an empty element in the document. The test also shows an Attribute-list declaration with multiple AttDef's. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-060"
+ URI="valid/sa/060.xml" SECTIONS="4.1 [66]"
+ OUTPUT="valid/sa/out/060.xml">
+ Test demonstrates the use of decimal Character References within element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-061"
+ URI="valid/sa/061.xml" SECTIONS="4.1 [66]"
+ OUTPUT="valid/sa/out/061.xml">
+ Test demonstrates the use of decimal Character References within element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-062"
+ URI="valid/sa/062.xml" SECTIONS="4.1 [66]"
+ OUTPUT="valid/sa/out/062.xml">
+ Test demonstrates the use of hexadecimal Character References within element. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-063"
+ URI="valid/sa/063.xml" SECTIONS="2.3 [5]"
+ OUTPUT="valid/sa/out/063.xml">
+ The document is encoded in UTF-8 and the name of the
+ root element type uses non-ASCII characters. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-064"
+ URI="valid/sa/064.xml" SECTIONS="4.1 [66]"
+ OUTPUT="valid/sa/out/064.xml">
+ Tests in-line handling of two legal character references, which
+ each expand to a Unicode surrogate pair.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-065"
+ URI="valid/sa/065.xml" SECTIONS="4.5"
+ OUTPUT="valid/sa/out/065.xml">
+ Tests ability to define an internal entity which can't
+ legally be expanded (contains an unquoted <B>&lt;</B>).</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-066"
+ URI="valid/sa/066.xml" SECTIONS="4.1 [66]"
+ OUTPUT="valid/sa/out/066.xml">
+ Expands a CDATA attribute with a character reference.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-067"
+ URI="valid/sa/067.xml" SECTIONS="4.1 [66]"
+ OUTPUT="valid/sa/out/067.xml">
+ Test demonstrates the use of decimal character references within element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-068"
+ URI="valid/sa/068.xml" SECTIONS="2.11, 4.5"
+ OUTPUT="valid/sa/out/068.xml">
+ Tests definition of an internal entity holding a carriage return character
+ reference, which must not be normalized before reporting to the application. Line
+ break normalization only occurs when parsing external parsed entities.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-069"
+ URI="valid/sa/069.xml" SECTIONS="4.7"
+ OUTPUT="valid/sa/out/069.xml">
+ Verifies that an XML parser will parse a NOTATION
+ declaration; the output phase of this test ensures that
+ it's reported to the application. </TEST>
+<TEST TYPE="valid" ENTITIES="parameter" ID="valid-sa-070"
+ URI="valid/sa/070.xml" SECTIONS="4.4.8"
+ OUTPUT="valid/sa/out/070.xml">
+ Verifies that internal parameter entities are correctly
+ expanded within the internal subset.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-071"
+ URI="valid/sa/071.xml" SECTIONS="3.3 3.3.1 [52] [56]"
+ OUTPUT="valid/sa/out/071.xml">
+ Test demonstrates that an AttlistDecl can use ID as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-072"
+ URI="valid/sa/072.xml" SECTIONS="3.3 3.3.1 [52] [56]"
+ OUTPUT="valid/sa/out/072.xml">
+ Test demonstrates that an AttlistDecl can use IDREF as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-073"
+ URI="valid/sa/073.xml" SECTIONS="3.3 3.3.1 [52] [56]"
+ OUTPUT="valid/sa/out/073.xml">
+ Test demonstrates that an AttlistDecl can use IDREFS as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-074"
+ URI="valid/sa/074.xml" SECTIONS="3.3 3.3.1 [52] [56]"
+ OUTPUT="valid/sa/out/074.xml">
+ Test demonstrates that an AttlistDecl can use ENTITY as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-075"
+ URI="valid/sa/075.xml" SECTIONS="3.3 3.3.1 [52] [56]"
+ OUTPUT="valid/sa/out/075.xml">
+ Test demonstrates that an AttlistDecl can use ENTITIES as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-076"
+ URI="valid/sa/076.xml" SECTIONS="3.3.1"
+ OUTPUT="valid/sa/out/076.xml">
+ Verifies that an XML parser will parse a NOTATION
+ attribute; the output phase of this test ensures that
+ both notations are reported to the application. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-077"
+ URI="valid/sa/077.xml" SECTIONS="3.3 3.3.1 [52] [54]"
+ OUTPUT="valid/sa/out/077.xml">
+ Test demonstrates that an AttlistDecl can use an EnumeratedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-078"
+ URI="valid/sa/078.xml" SECTIONS="3.3 3.3.1 [52] [54]"
+ OUTPUT="valid/sa/out/078.xml">
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that REQUIRED is a valid DefaultDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-079"
+ URI="valid/sa/079.xml" SECTIONS="3.3 3.3.2 [52] [60]"
+ OUTPUT="valid/sa/out/079.xml">
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that FIXED is a valid DefaultDecl and that a value can be given to the attribute in the Start-tag as well as the AttListDecl. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-080"
+ URI="valid/sa/080.xml" SECTIONS="3.3 3.3.2 [52] [60]"
+ OUTPUT="valid/sa/out/080.xml">
+ Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that FIXED is a valid DefaultDecl and that an value can be given to the attribute. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-081"
+ URI="valid/sa/081.xml" SECTIONS="3.2.1 [50]"
+ OUTPUT="valid/sa/out/081.xml">
+ Test demonstrates the use of the optional character following a name or list to govern the number of times an element or content particles in the list occur. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-082"
+ URI="valid/sa/082.xml" SECTIONS="4.2 [72]"
+ OUTPUT="valid/sa/out/082.xml">
+ Tests that an external PE may be defined (but not referenced).</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-083"
+ URI="valid/sa/083.xml" SECTIONS="4.2 [72]"
+ OUTPUT="valid/sa/out/083.xml">
+ Tests that an external PE may be defined (but not referenced).</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-084"
+ URI="valid/sa/084.xml" SECTIONS="2.10"
+ OUTPUT="valid/sa/out/084.xml">
+ Test demonstrates that although whitespace can be used to set apart markup for greater readability it is not necessary. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-085"
+ URI="valid/sa/085.xml" SECTIONS="4"
+ OUTPUT="valid/sa/out/085.xml">
+ Parameter and General entities use different namespaces,
+ so there can be an entity of each type with a given name.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-086"
+ URI="valid/sa/086.xml" SECTIONS="4.2"
+ OUTPUT="valid/sa/out/086.xml">
+ Tests whether entities may be declared more than once,
+ with the first declaration being the binding one. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-087"
+ URI="valid/sa/087.xml" SECTIONS="4.5"
+ OUTPUT="valid/sa/out/087.xml">
+ Tests whether character references in internal entities are
+ expanded early enough, by relying on correct handling to
+ make the entity be well formed.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-088"
+ URI="valid/sa/088.xml" SECTIONS="4.5"
+ OUTPUT="valid/sa/out/088.xml">
+ Tests whether entity references in internal entities are
+ expanded late enough, by relying on correct handling to
+ make the expanded text be valid. (If it's expanded too
+ early, the entity will parse as an element that's not
+ valid in that context.)</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-089"
+ URI="valid/sa/089.xml" SECTIONS="4.1 [66]"
+ OUTPUT="valid/sa/out/089.xml">
+ Tests entity expansion of three legal character references,
+ which each expand to a Unicode surrogate pair.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-090"
+ URI="valid/sa/090.xml" SECTIONS="3.3.1"
+ OUTPUT="valid/sa/out/090.xml">
+ Verifies that an XML parser will parse a NOTATION
+ attribute; the output phase of this test ensures that
+ the notation is reported to the application. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-091"
+ URI="valid/sa/091.xml" SECTIONS="3.3.1"
+ OUTPUT="valid/sa/out/091.xml">
+ Verifies that an XML parser will parse an ENTITY
+ attribute; the output phase of this test ensures that
+ the notation is reported to the application, and for
+ validating parsers it further tests that the entity
+ is so reported.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-092"
+ URI="valid/sa/092.xml" SECTIONS="2.3 2.10"
+ OUTPUT="valid/sa/out/092.xml">
+ Test demostrates that extra whitespace is normalized into a single space character. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-093"
+ URI="valid/sa/093.xml" SECTIONS="2.10"
+ OUTPUT="valid/sa/out/093.xml">
+ Test demonstrates that extra whitespace is not intended for inclusion in the delivered version of the document. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-094"
+ OUTPUT="valid/sa/out/094.xml"
+ URI="valid/sa/094.xml" SECTIONS="2.8">
+ Attribute defaults with a DTD have special parsing rules, different
+ from other strings. That means that characters found there may look
+ like an undefined parameter entity reference "within a markup
+ declaration", but they aren't ... so they can't be violating
+ the <EM>PEs in Internal Subset</EM> WFC.
+ </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-095"
+ URI="valid/sa/095.xml" SECTIONS="3.3.3"
+ OUTPUT="valid/sa/out/095.xml">
+ Basically an output test, this requires extra whitespace
+ to be normalized into a single space character in an
+ attribute of type NMTOKENS.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-096"
+ URI="valid/sa/096.xml" SECTIONS="3.3.3"
+ OUTPUT="valid/sa/out/096.xml">
+ Test demonstrates that extra whitespace is normalized into a single space character in an attribute of type NMTOKENS. </TEST>
+<TEST TYPE="valid" ENTITIES="parameter" ID="valid-sa-097"
+ URI="valid/sa/097.xml" SECTIONS="3.3"
+ OUTPUT="valid/sa/out/097.xml">
+ Basically an output test, this tests whether an externally
+ defined attribute declaration (with a default) takes proper
+ precedence over a subsequent internal declaration.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-098"
+ URI="valid/sa/098.xml" SECTIONS="2.6 2.10 [16]"
+ OUTPUT="valid/sa/out/098.xml">
+ Test demonstrates that extra whitespace within a processing instruction is converted into a single space character.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-099"
+ URI="valid/sa/099.xml" SECTIONS="4.3.3 [81]"
+ OUTPUT="valid/sa/out/099.xml">
+ Test demonstrates the name of the encoding can be composed of lowercase characters. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-100"
+ URI="valid/sa/100.xml" SECTIONS="2.3 [12]"
+ OUTPUT="valid/sa/out/100.xml">
+ Makes sure that PUBLIC identifiers may have some strange
+ characters. <EM>NOTE: The XML editors have said that the XML
+ specification errata will specify that parameter entity expansion
+ does not occur in PUBLIC identifiers, so that the '%' character
+ will not flag a malformed parameter entity reference.</EM></TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-101"
+ URI="valid/sa/101.xml" SECTIONS="4.5"
+ OUTPUT="valid/sa/out/101.xml">
+ This tests whether entity expansion is (incorrectly) done
+ while processing entity declarations; if it is, the entity
+ value literal will terminate prematurely.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-102"
+ URI="valid/sa/102.xml" SECTIONS="3.3.3"
+ OUTPUT="valid/sa/out/102.xml">
+ Test demonstrates that a CDATA attribute can pass a double quote as its value. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-103"
+ URI="valid/sa/103.xml" SECTIONS="3.3.3"
+ OUTPUT="valid/sa/out/103.xml">
+ Test demonstrates that an attribute can pass a less than sign as its value. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-104"
+ URI="valid/sa/104.xml" SECTIONS="3.1 [40]"
+ OUTPUT="valid/sa/out/104.xml">
+ Test demonstrates that extra whitespace within an Attribute of a Start-tag is normalized to a single space character. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-105"
+ URI="valid/sa/105.xml" SECTIONS="3.3.3"
+ OUTPUT="valid/sa/out/105.xml">
+ Basically an output test, this requires a CDATA attribute
+ with a tab character to be passed through as one space.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-106"
+ URI="valid/sa/106.xml" SECTIONS="3.3.3"
+ OUTPUT="valid/sa/out/106.xml">
+ Basically an output test, this requires a CDATA attribute
+ with a newline character to be passed through as one space.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-107"
+ URI="valid/sa/107.xml" SECTIONS="3.3.3"
+ OUTPUT="valid/sa/out/107.xml">
+ Basically an output test, this requires a CDATA attribute
+ with a return character to be passed through as one space.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-108"
+ URI="valid/sa/108.xml" SECTIONS="2.11, 3.3.3"
+ OUTPUT="valid/sa/out/108.xml">
+ This tests normalization of end-of-line characters (CRLF)
+ within entities to LF, primarily as an output test. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-109"
+ URI="valid/sa/109.xml" SECTIONS="2.3 3.1 [10][40][41]"
+ OUTPUT="valid/sa/out/109.xml">
+ Test demonstrates that an attribute can have a null value. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-110"
+ URI="valid/sa/110.xml" SECTIONS="3.3.3"
+ OUTPUT="valid/sa/out/110.xml">
+ Basically an output test, this requires that a CDATA
+ attribute with a CRLF be normalized to one space.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-111"
+ URI="valid/sa/111.xml" SECTIONS="3.3.3"
+ OUTPUT="valid/sa/out/111.xml">
+ Character references expanding to spaces doesn't affect
+ treatment of attributes. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-112"
+ URI="valid/sa/112.xml" SECTIONS="3.2.1 [48][49]"
+ OUTPUT="valid/sa/out/112.xml">
+ Test demonstrates shows the use of content particles within the element content. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-113"
+ URI="valid/sa/113.xml" SECTIONS="3.3 [52][53]"
+ OUTPUT="valid/sa/out/113.xml">
+ Test demonstrates that it is not an error to have attributes declared for an element not itself declared.</TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-114"
+ URI="valid/sa/114.xml" SECTIONS="2.7 [20]"
+ OUTPUT="valid/sa/out/114.xml">
+ Test demonstrates that all text within a valid CDATA section is considered text and not recognized as markup. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-115"
+ URI="valid/sa/115.xml" SECTIONS="3.3.3"
+ OUTPUT="valid/sa/out/115.xml">
+ Test demonstrates that an entity reference is processed by recursively processing the replacement text of the entity. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-116"
+ URI="valid/sa/116.xml" SECTIONS="2.11"
+ OUTPUT="valid/sa/out/116.xml">
+ Test demonstrates that a line break within CDATA will be normalized. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-117"
+ URI="valid/sa/117.xml" SECTIONS="4.5"
+ OUTPUT="valid/sa/out/117.xml">
+ Test demonstrates that entity expansion is done while processing entity declarations. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-118"
+ URI="valid/sa/118.xml" SECTIONS="4.5"
+ OUTPUT="valid/sa/out/118.xml">
+ Test demonstrates that entity expansion is done while processing entity declarations. </TEST>
+<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-119"
+ URI="valid/sa/119.xml" SECTIONS="2.5"
+ OUTPUT="valid/sa/out/119.xml">
+ Comments may contain any legal XML characters;
+ only the string "--" is disallowed.</TEST>
+
+
+<!-- Start: valid/not-sa -->
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-001"
+ URI="valid/not-sa/001.xml" SECTIONS="4.2.2 [75]"
+ OUTPUT="valid/not-sa/out/001.xml">
+ Test demonstrates the use of an ExternalID within a document type definition. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-002"
+ URI="valid/not-sa/002.xml" SECTIONS="4.2.2 [75]"
+ OUTPUT="valid/not-sa/out/002.xml">
+ Test demonstrates the use of an ExternalID within a document type definition. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-003"
+ URI="valid/not-sa/003.xml" SECTIONS="4.1 [69]"
+ OUTPUT="valid/not-sa/out/003.xml">
+ Test demonstrates the expansion of an external parameter entity that declares an attribute. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-004"
+ URI="valid/not-sa/004.xml" SECTIONS="4.1 [69]"
+ OUTPUT="valid/not-sa/out/004.xml">
+ Expands an external parameter entity in two different ways,
+ with one of them declaring an attribute.</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-005"
+ URI="valid/not-sa/005.xml" SECTIONS="4.1 [69]"
+ OUTPUT="valid/not-sa/out/005.xml">
+ Test demonstrates the expansion of an external parameter entity that declares an attribute. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-006"
+ URI="valid/not-sa/006.xml" SECTIONS="3.3 [52]"
+ OUTPUT="valid/not-sa/out/006.xml">
+ Test demonstrates that when more than one definition is provided for the same attribute of a given element type only the first declaration is binding. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-007"
+ URI="valid/not-sa/007.xml" SECTIONS="3.3 [52]"
+ OUTPUT="valid/not-sa/out/007.xml">
+ Test demonstrates the use of an Attribute list declaration within an external entity. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-008"
+ URI="valid/not-sa/008.xml" SECTIONS="4.2.2 [75]"
+ OUTPUT="valid/not-sa/out/008.xml">
+ Test demonstrates that an external identifier may include a public identifier. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-009"
+ URI="valid/not-sa/009.xml" SECTIONS="4.2.2 [75]"
+ OUTPUT="valid/not-sa/out/009.xml">
+ Test demonstrates that an external identifier may include a public identifier. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-010"
+ URI="valid/not-sa/010.xml" SECTIONS="3.3 [52]"
+ OUTPUT="valid/not-sa/out/010.xml">
+ Test demonstrates that when more that one definition is provided for the same attribute of a given element type only the first declaration is binding. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-011"
+ URI="valid/not-sa/011.xml" SECTIONS="4.2 4.2.1 [72] [75]"
+ OUTPUT="valid/not-sa/out/011.xml">
+ Test demonstrates a parameter entity declaration whose parameter entity definition is an ExternalID. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-012"
+ URI="valid/not-sa/012.xml" SECTIONS="4.3.1 [77]"
+ OUTPUT="valid/not-sa/out/012.xml">
+ Test demonstrates an enternal parsed entity that begins with a text declaration. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-013"
+ URI="valid/not-sa/013.xml" SECTIONS="3.4 [62]"
+ OUTPUT="valid/not-sa/out/013.xml">
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-014"
+ URI="valid/not-sa/014.xml" SECTIONS="3.4 [62]"
+ OUTPUT="valid/not-sa/out/014.xml">
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. The keyword is a parameter-entity reference. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-015"
+ URI="valid/not-sa/015.xml" SECTIONS="3.4 [63]"
+ OUTPUT="valid/not-sa/out/015.xml">
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being part of the DTD. The keyword is a parameter-entity reference. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-016"
+ URI="valid/not-sa/016.xml" SECTIONS="3.4 [62]"
+ OUTPUT="valid/not-sa/out/016.xml">
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. The keyword is a parameter-entity reference.</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-017"
+ URI="valid/not-sa/017.xml" SECTIONS="4.2 [72]"
+ OUTPUT="valid/not-sa/out/017.xml">
+ Test demonstrates a parameter entity declaration that contains an attribute list declaration. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-018"
+ URI="valid/not-sa/018.xml" SECTIONS="4.2.2 [75]"
+ OUTPUT="valid/not-sa/out/018.xml">
+ Test demonstrates an EnternalID whose contents contain an parameter entity declaration and a attribute list definition. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-019"
+ URI="valid/not-sa/019.xml" SECTIONS="4.4.8"
+ OUTPUT="valid/not-sa/out/019.xml">
+ Test demonstrates that a parameter entity will be expanded with spaces on either side. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-020"
+ URI="valid/not-sa/020.xml" SECTIONS="4.4.8"
+ OUTPUT="valid/not-sa/out/020.xml">
+ Parameter entities expand with spaces on either side.</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-021"
+ URI="valid/not-sa/021.xml" SECTIONS="4.2 [72]"
+ OUTPUT="valid/not-sa/out/021.xml">
+ Test demonstrates a parameter entity declaration that contains a partial attribute list declaration. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-023"
+ URI="valid/not-sa/023.xml" SECTIONS="2.3 4.1 [10] [69]"
+ OUTPUT="valid/not-sa/out/023.xml">
+ Test demonstrates the use of a parameter entity reference within an attribute list declaration.
+</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-024"
+ URI="valid/not-sa/024.xml" SECTIONS="2.8, 4.1 [69]"
+ OUTPUT="valid/not-sa/out/024.xml">
+ Constructs an &lt;!ATTLIST...&gt; declaration from several PEs.</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-025"
+ URI="valid/not-sa/025.xml" SECTIONS="4.2"
+ OUTPUT="valid/not-sa/out/025.xml">
+ Test demonstrates that when more that one definition is provided for the same entity only the first declaration is binding. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-026"
+ URI="valid/not-sa/026.xml" SECTIONS="3.3 [52]"
+ OUTPUT="valid/not-sa/out/026.xml">
+ Test demonstrates that when more that one definition is provided for the same attribute of a given element type only the first declaration is binding. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-027"
+ URI="valid/not-sa/027.xml" SECTIONS="4.1 [69]"
+ OUTPUT="valid/not-sa/out/027.xml">
+ Test demonstrates a parameter entity reference whose value is NULL. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-028"
+ URI="valid/not-sa/028.xml" SECTIONS="3.4 [62]"
+ OUTPUT="valid/not-sa/out/028.xml">
+ Test demonstrates the use of the conditional section INCLUDE that will include its contents. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-029"
+ URI="valid/not-sa/029.xml" SECTIONS="3.4 [62]"
+ OUTPUT="valid/not-sa/out/029.xml">
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being used. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-030"
+ URI="valid/not-sa/030.xml" SECTIONS="3.4 [62]"
+ OUTPUT="valid/not-sa/out/030.xml">
+ Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being used. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-031"
+ URI="valid/not-sa/031.xml" SECTIONS="2.7"
+ OUTPUT="valid/not-sa/out/031.xml">
+ Expands a general entity which contains a CDATA section with
+ what looks like a markup declaration (but is just text since
+ it's in a CDATA section).</TEST>
+
+
+<!-- Start: valid/ext-sa -->
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-001"
+ URI="valid/ext-sa/001.xml" SECTIONS="2.11"
+ OUTPUT="valid/ext-sa/out/001.xml">
+ A combination of carriage return line feed in an external entity must
+ be normalized to a single newline. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-002"
+ URI="valid/ext-sa/002.xml" SECTIONS="2.11"
+ OUTPUT="valid/ext-sa/out/002.xml">
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-003"
+ URI="valid/ext-sa/003.xml" SECTIONS="3.1 4.1 [43] [68]"
+ OUTPUT="valid/ext-sa/out/003.xml">
+ Test demonstrates that the content of an element can be empty. In this case the external entity is an empty file. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-004"
+ URI="valid/ext-sa/004.xml" SECTIONS="2.11"
+ OUTPUT="valid/ext-sa/out/004.xml">
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-005"
+ URI="valid/ext-sa/005.xml" SECTIONS="3.2.1 4.2.2 [48] [75]"
+ OUTPUT="valid/ext-sa/out/005.xml">
+ Test demonstrates the use of optional character and content particles within an element content. The test also show the use of external entity. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-006"
+ URI="valid/ext-sa/006.xml" SECTIONS="2.11 3.2.1 3.2.2 4.2.2 [48] [51] [75]"
+ OUTPUT="valid/ext-sa/out/006.xml">
+ Test demonstrates the use of optional character and content particles within mixed element content. The test also shows the use of an external entity and that a carriage control line feed in an external entity must be normalized to a single newline. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-007"
+ URI="valid/ext-sa/007.xml" SECTIONS="4.2.2 4.4.3 [75]"
+ OUTPUT="valid/ext-sa/out/007.xml">
+ Test demonstrates the use of external entity and how replacement
+text is retrieved and processed. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-008"
+ URI="valid/ext-sa/008.xml" SECTIONS="4.2.2 4.3.3. 4.4.3 [75] [80]"
+ OUTPUT="valid/ext-sa/out/008.xml"> Test demonstrates the use of external
+entity and how replacement text is retrieved and processed. Also tests the use of an
+EncodingDecl of UTF-16.</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-009"
+ URI="valid/ext-sa/009.xml" SECTIONS="2.11"
+ OUTPUT="valid/ext-sa/out/009.xml">
+ A carriage return (also CRLF) in an external entity must
+ be normalized to a single newline. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-011"
+ URI="valid/ext-sa/011.xml" SECTIONS="2.11 4.2.2 [75]"
+ OUTPUT="valid/ext-sa/out/011.xml">
+ Test demonstrates the use of a public identifier with and external entity.
+The test also show that a carriage control line feed combination in an external
+entity must be normalized to a single newline. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-012"
+ URI="valid/ext-sa/012.xml" SECTIONS="4.2.1 4.2.2"
+ OUTPUT="valid/ext-sa/out/012.xml">
+ Test demonstrates both internal and external entities and that processing of entity references may be required to produce the correct replacement text.</TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-013"
+ URI="valid/ext-sa/013.xml" SECTIONS="3.3.3"
+ OUTPUT="valid/ext-sa/out/013.xml">
+ Test demonstrates that whitespace is handled by adding a single whitespace to the normalized value in the attribute list. </TEST>
+<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-014"
+ URI="valid/ext-sa/014.xml" SECTIONS="4.1 4.4.3 [68]"
+ OUTPUT="valid/ext-sa/out/014.xml">
+ Test demonstrates use of characters outside of normal ASCII range.</TEST>
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/001.ref b/tests/auto/corelib/xml/qxmlstream/data/001.ref
new file mode 100644
index 0000000000..82ea8c3dc8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/001.ref
@@ -0,0 +1,12 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Namespace name test: a perfectly good http URI " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>" dtdName="foo" )
+StartElement( name="foo" namespaceUri="http://example.org/namespace" qualifiedName="foo"
+ NamespaceDeclaration( namespaceUri="http://example.org/namespace" )
+ )
+EndElement( name="foo" namespaceUri="http://example.org/namespace" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/001.xml b/tests/auto/corelib/xml/qxmlstream/data/001.xml
new file mode 100644
index 0000000000..dca5e6705f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/001.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Namespace name test: a perfectly good http URI -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>
+<foo xmlns="http://example.org/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/002.ref b/tests/auto/corelib/xml/qxmlstream/data/002.ref
new file mode 100644
index 0000000000..45271c4502
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/002.ref
@@ -0,0 +1,13 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Namespace name test: a syntactically plausible URI with a
+ fictitious scheme " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>" dtdName="foo" )
+StartElement( name="foo" namespaceUri="zarquon://example.org/namespace" qualifiedName="foo"
+ NamespaceDeclaration( namespaceUri="zarquon://example.org/namespace" )
+ )
+EndElement( name="foo" namespaceUri="zarquon://example.org/namespace" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/002.xml b/tests/auto/corelib/xml/qxmlstream/data/002.xml
new file mode 100644
index 0000000000..3749bcbbb7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/002.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Namespace name test: a syntactically plausible URI with a
+ fictitious scheme -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>
+<foo xmlns="zarquon://example.org/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/003.ref b/tests/auto/corelib/xml/qxmlstream/data/003.ref
new file mode 100644
index 0000000000..6de9dccf22
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/003.ref
@@ -0,0 +1,12 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Namespace name test: a perfectly good http URI with a fragment " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>" dtdName="foo" )
+StartElement( name="foo" namespaceUri="http://example.org/namespace#apples" qualifiedName="foo"
+ NamespaceDeclaration( namespaceUri="http://example.org/namespace#apples" )
+ )
+EndElement( name="foo" namespaceUri="http://example.org/namespace#apples" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/003.xml b/tests/auto/corelib/xml/qxmlstream/data/003.xml
new file mode 100644
index 0000000000..66c5cb8191
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/003.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Namespace name test: a perfectly good http URI with a fragment -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>
+<foo xmlns="http://example.org/namespace#apples"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/004.ref b/tests/auto/corelib/xml/qxmlstream/data/004.ref
new file mode 100644
index 0000000000..052afffa6c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/004.ref
@@ -0,0 +1,12 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Namespace name test: a relative URI (deprecated) " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>]
+>" dtdName="foo" )
+StartElement( name="foo" namespaceUri="namespaces/zaphod" qualifiedName="foo"
+ NamespaceDeclaration( namespaceUri="namespaces/zaphod" )
+ )
+EndElement( name="foo" namespaceUri="namespaces/zaphod" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/004.xml b/tests/auto/corelib/xml/qxmlstream/data/004.xml
new file mode 100644
index 0000000000..e7d91d5d33
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/004.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Namespace name test: a relative URI (deprecated) -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>]
+>
+<foo xmlns="namespaces/zaphod"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/005.ref b/tests/auto/corelib/xml/qxmlstream/data/005.ref
new file mode 100644
index 0000000000..03269b280a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/005.ref
@@ -0,0 +1,12 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Namespace name test: a same-document relative URI (deprecated) " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>" dtdName="foo" )
+StartElement( name="foo" namespaceUri="#beeblebrox" qualifiedName="foo"
+ NamespaceDeclaration( namespaceUri="#beeblebrox" )
+ )
+EndElement( name="foo" namespaceUri="#beeblebrox" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/005.xml b/tests/auto/corelib/xml/qxmlstream/data/005.xml
new file mode 100644
index 0000000000..dc9c663649
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/005.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Namespace name test: a same-document relative URI (deprecated) -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>
+<foo xmlns="#beeblebrox"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/006.ref b/tests/auto/corelib/xml/qxmlstream/data/006.ref
new file mode 100644
index 0000000000..53080c298a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/006.ref
@@ -0,0 +1,12 @@
+StartDocument( documentVersion="1.0" documentEncoding="iso-8859-1" )
+Comment( text=" Namespace name test: an http IRI that is not a URI " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>" dtdName="foo" )
+StartElement( name="foo" namespaceUri="http://example.org/rosé" qualifiedName="foo"
+ NamespaceDeclaration( namespaceUri="http://example.org/rosé" )
+ )
+EndElement( name="foo" namespaceUri="http://example.org/rosé" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/006.xml b/tests/auto/corelib/xml/qxmlstream/data/006.xml
new file mode 100644
index 0000000000..80c8bf75d1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/006.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Namespace name test: an http IRI that is not a URI -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns CDATA #IMPLIED>
+]>
+<foo xmlns="http://example.org/rosé"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/007.ref b/tests/auto/corelib/xml/qxmlstream/data/007.ref
new file mode 100644
index 0000000000..8e53d0b9d7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/007.ref
@@ -0,0 +1,36 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Namespace inequality test: different capitalization " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>" dtdName="foo" )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/wine" )
+
+ NamespaceDeclaration( prefix="b" namespaceUri="http://Example.org/wine" )
+
+ NamespaceDeclaration( prefix="c" namespaceUri="http://example.org/Wine" )
+ )
+Characters( whitespace text="
+
+" )
+StartElement( name="bar" qualifiedName="bar"
+ Attribute( name="attr" namespaceUri="http://example.org/wine" qualifiedName="a:attr" prefix="a" value="1" )
+
+ Attribute( name="attr" namespaceUri="http://Example.org/wine" qualifiedName="b:attr" prefix="b" value="2" )
+
+ Attribute( name="attr" namespaceUri="http://example.org/Wine" qualifiedName="c:attr" prefix="c" value="3" )
+ )
+EndElement( name="bar" qualifiedName="bar" )
+Characters( whitespace text="
+
+" )
+EndElement( name="foo" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/007.xml b/tests/auto/corelib/xml/qxmlstream/data/007.xml
new file mode 100644
index 0000000000..667bd63d1b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/007.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!-- Namespace inequality test: different capitalization -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>
+<foo xmlns:a="http://example.org/wine"
+ xmlns:b="http://Example.org/wine"
+ xmlns:c="http://example.org/Wine">
+
+<bar a:attr="1" b:attr="2" c:attr="3"/>
+
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/data/008.ref b/tests/auto/corelib/xml/qxmlstream/data/008.ref
new file mode 100644
index 0000000000..b0477ea1fa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/008.ref
@@ -0,0 +1,36 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Namespace inequality test: different escaping " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>" dtdName="foo" )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/~wilbur" )
+
+ NamespaceDeclaration( prefix="b" namespaceUri="http://example.org/%7ewilbur" )
+
+ NamespaceDeclaration( prefix="c" namespaceUri="http://example.org/%7Ewilbur" )
+ )
+Characters( whitespace text="
+
+" )
+StartElement( name="bar" qualifiedName="bar"
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="a:attr" prefix="a" value="1" )
+
+ Attribute( name="attr" namespaceUri="http://example.org/%7ewilbur" qualifiedName="b:attr" prefix="b" value="2" )
+
+ Attribute( name="attr" namespaceUri="http://example.org/%7Ewilbur" qualifiedName="c:attr" prefix="c" value="3" )
+ )
+EndElement( name="bar" qualifiedName="bar" )
+Characters( whitespace text="
+
+" )
+EndElement( name="foo" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/008.xml b/tests/auto/corelib/xml/qxmlstream/data/008.xml
new file mode 100644
index 0000000000..d63bc3c45e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/008.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!-- Namespace inequality test: different escaping -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/%7ewilbur"
+ xmlns:c="http://example.org/%7Ewilbur">
+
+<bar a:attr="1" b:attr="2" c:attr="3"/>
+
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/data/009.ref b/tests/auto/corelib/xml/qxmlstream/data/009.ref
new file mode 100644
index 0000000000..1de530df1c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/009.ref
@@ -0,0 +1,27 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Namespace equality test: plain repetition " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>" dtdName="foo" )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/~wilbur" )
+
+ NamespaceDeclaration( prefix="b" namespaceUri="http://example.org/~wilbur" )
+ )
+Characters( whitespace text="
+
+" )
+Invalid( name="bar" qualifiedName="bar"
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="a:attr" prefix="a" value="1" )
+
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="b:attr" prefix="b" value="2" )
+ )
+ERROR: Attribute redefined.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/009.xml b/tests/auto/corelib/xml/qxmlstream/data/009.xml
new file mode 100644
index 0000000000..d67c066ec4
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/009.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!-- Namespace equality test: plain repetition -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/~wilbur">
+
+<bar a:attr="1" b:attr="2"/>
+
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/data/010.ref b/tests/auto/corelib/xml/qxmlstream/data/010.ref
new file mode 100644
index 0000000000..217f4963a1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/010.ref
@@ -0,0 +1,27 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Namespace equality test: use of character reference " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>" dtdName="foo" )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/~wilbur" )
+
+ NamespaceDeclaration( prefix="b" namespaceUri="http://example.org/~wilbur" )
+ )
+Characters( whitespace text="
+
+" )
+Invalid( name="bar" qualifiedName="bar"
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="a:attr" prefix="a" value="1" )
+
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="b:attr" prefix="b" value="2" )
+ )
+ERROR: Attribute redefined.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/010.xml b/tests/auto/corelib/xml/qxmlstream/data/010.xml
new file mode 100644
index 0000000000..2216fd6dce
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/010.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!-- Namespace equality test: use of character reference -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/&#x7E;wilbur">
+
+<bar a:attr="1" b:attr="2"/>
+
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/data/011.ref b/tests/auto/corelib/xml/qxmlstream/data/011.ref
new file mode 100644
index 0000000000..e3945324eb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/011.ref
@@ -0,0 +1,30 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Namespace equality test: use of entity reference " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+<!ENTITY tilde "~">
+]>" dtdName="foo"
+ EntityDeclaration( name="tilde" value="~" )
+ )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/~wilbur" )
+
+ NamespaceDeclaration( prefix="b" namespaceUri="http://example.org/~wilbur" )
+ )
+Characters( whitespace text="
+
+" )
+Invalid( name="bar" qualifiedName="bar"
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="a:attr" prefix="a" value="1" )
+
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="b:attr" prefix="b" value="2" )
+ )
+ERROR: Attribute redefined.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/011.xml b/tests/auto/corelib/xml/qxmlstream/data/011.xml
new file mode 100644
index 0000000000..f22269b2df
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/011.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!-- Namespace equality test: use of entity reference -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b CDATA #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+<!ENTITY tilde "~">
+]>
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/&tilde;wilbur">
+
+<bar a:attr="1" b:attr="2"/>
+
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/data/012.ref b/tests/auto/corelib/xml/qxmlstream/data/012.ref
new file mode 100644
index 0000000000..7a688b103d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/012.ref
@@ -0,0 +1,27 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Namespace inequality test: equal after attribute value normalization " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b NMTOKEN #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>" dtdName="foo" )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( prefix="a" namespaceUri="urn:xyzzy" )
+
+ NamespaceDeclaration( prefix="b" namespaceUri="urn:xyzzy" )
+ )
+Characters( whitespace text="
+
+" )
+Invalid( name="bar" qualifiedName="bar"
+ Attribute( name="attr" namespaceUri="urn:xyzzy" qualifiedName="a:attr" prefix="a" value="1" )
+
+ Attribute( name="attr" namespaceUri="urn:xyzzy" qualifiedName="b:attr" prefix="b" value="2" )
+ )
+ERROR: Attribute redefined.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/012.xml b/tests/auto/corelib/xml/qxmlstream/data/012.xml
new file mode 100644
index 0000000000..26d9b1bebb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/012.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!-- Namespace inequality test: equal after attribute value normalization -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo xmlns:a CDATA #IMPLIED
+ xmlns:b NMTOKEN #IMPLIED
+ xmlns:c CDATA #IMPLIED>
+<!ELEMENT bar ANY>
+<!ATTLIST bar a:attr CDATA #IMPLIED
+ b:attr CDATA #IMPLIED
+ c:attr CDATA #IMPLIED>
+]>
+<foo xmlns:a="urn:xyzzy"
+ xmlns:b=" urn:xyzzy ">
+
+<bar a:attr="1" b:attr="2"/>
+
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/data/013.ref b/tests/auto/corelib/xml/qxmlstream/data/013.ref
new file mode 100644
index 0000000000..3ac6049d5e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/013.ref
@@ -0,0 +1,7 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Bad QName syntax: multiple colons " )
+StartElement( name="foo" qualifiedName="foo" )
+Characters( whitespace text="
+" )
+Invalid( name="bar" qualifiedName="bar" )
+ERROR: Expected '=', but got ':'.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/013.xml b/tests/auto/corelib/xml/qxmlstream/data/013.xml
new file mode 100644
index 0000000000..e8770ea1cf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/013.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!-- Bad QName syntax: multiple colons -->
+<foo>
+<bar a:b:attr="1"/>
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/014.ref b/tests/auto/corelib/xml/qxmlstream/data/014.ref
new file mode 100644
index 0000000000..8125ea70e1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/014.ref
@@ -0,0 +1,4 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Bad QName syntax: colon at end " )
+Invalid( name="foo" qualifiedName="foo" )
+ERROR: Expected '>' or '/', but got ':'.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/014.xml b/tests/auto/corelib/xml/qxmlstream/data/014.xml
new file mode 100644
index 0000000000..7c8e9fa2a3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/014.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Bad QName syntax: colon at end -->
+<foo: />
diff --git a/tests/auto/corelib/xml/qxmlstream/data/015.ref b/tests/auto/corelib/xml/qxmlstream/data/015.ref
new file mode 100644
index 0000000000..02e9064f36
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/015.ref
@@ -0,0 +1,4 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Bad QName syntax: colon at start " )
+Invalid( )
+ERROR: Expected '?', '!', or '[a-zA-Z]', but got ':'.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/015.xml b/tests/auto/corelib/xml/qxmlstream/data/015.xml
new file mode 100644
index 0000000000..503018e705
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/015.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Bad QName syntax: colon at start -->
+<:foo />
diff --git a/tests/auto/corelib/xml/qxmlstream/data/016.ref b/tests/auto/corelib/xml/qxmlstream/data/016.ref
new file mode 100644
index 0000000000..dd97554eb7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/016.ref
@@ -0,0 +1,4 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Bad QName syntax: xmlns: " )
+Invalid( name="foo" qualifiedName="foo" )
+ERROR: Expected '=', but got ':'.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/016.xml b/tests/auto/corelib/xml/qxmlstream/data/016.xml
new file mode 100644
index 0000000000..8a3c44e45d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/016.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Bad QName syntax: xmlns: -->
+<foo xmlns:="http://example.org/namespace" />
diff --git a/tests/auto/corelib/xml/qxmlstream/data/017.ref b/tests/auto/corelib/xml/qxmlstream/data/017.ref
new file mode 100644
index 0000000000..3701247d96
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/017.ref
@@ -0,0 +1,5 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Simple legal case: no namespaces " )
+StartElement( name="foo" qualifiedName="foo" )
+EndElement( name="foo" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/017.xml b/tests/auto/corelib/xml/qxmlstream/data/017.xml
new file mode 100644
index 0000000000..65e754257d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/017.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: no namespaces -->
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/018.ref b/tests/auto/corelib/xml/qxmlstream/data/018.ref
new file mode 100644
index 0000000000..86b2a61ad6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/018.ref
@@ -0,0 +1,7 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Simple legal case: default namespace " )
+StartElement( name="foo" namespaceUri="http://example.org/namespace" qualifiedName="foo"
+ NamespaceDeclaration( namespaceUri="http://example.org/namespace" )
+ )
+EndElement( name="foo" namespaceUri="http://example.org/namespace" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/018.xml b/tests/auto/corelib/xml/qxmlstream/data/018.xml
new file mode 100644
index 0000000000..e795466550
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/018.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: default namespace -->
+<foo xmlns="http://example.org/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/019.ref b/tests/auto/corelib/xml/qxmlstream/data/019.ref
new file mode 100644
index 0000000000..314efb2b04
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/019.ref
@@ -0,0 +1,7 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Simple legal case: prefixed element " )
+StartElement( name="foo" namespaceUri="http://example.org/namespace" qualifiedName="a:foo" prefix="a"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/namespace" )
+ )
+EndElement( name="foo" namespaceUri="http://example.org/namespace" qualifiedName="a:foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/019.xml b/tests/auto/corelib/xml/qxmlstream/data/019.xml
new file mode 100644
index 0000000000..c4620bd097
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/019.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: prefixed element -->
+<a:foo xmlns:a="http://example.org/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/020.ref b/tests/auto/corelib/xml/qxmlstream/data/020.ref
new file mode 100644
index 0000000000..096a0316e2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/020.ref
@@ -0,0 +1,9 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Simple legal case: prefixed attribute " )
+StartElement( name="foo" qualifiedName="foo"
+ Attribute( name="attr" namespaceUri="http://example.org/namespace" qualifiedName="a:attr" prefix="a" value="1" )
+
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/namespace" )
+ )
+EndElement( name="foo" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/020.xml b/tests/auto/corelib/xml/qxmlstream/data/020.xml
new file mode 100644
index 0000000000..4e5fcad48d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/020.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: prefixed attribute -->
+<foo xmlns:a="http://example.org/namespace" a:attr="1"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/021.ref b/tests/auto/corelib/xml/qxmlstream/data/021.ref
new file mode 100644
index 0000000000..1d8f96b224
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/021.ref
@@ -0,0 +1,15 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Simple legal case: default namespace and unbinding " )
+StartElement( name="foo" namespaceUri="http://example.org/namespace" qualifiedName="foo"
+ NamespaceDeclaration( namespaceUri="http://example.org/namespace" )
+ )
+Characters( whitespace text="
+ " )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( )
+ )
+EndElement( name="foo" qualifiedName="foo" )
+Characters( whitespace text="
+" )
+EndElement( name="foo" namespaceUri="http://example.org/namespace" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/021.xml b/tests/auto/corelib/xml/qxmlstream/data/021.xml
new file mode 100644
index 0000000000..e56c240c42
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/021.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: default namespace and unbinding -->
+<foo xmlns="http://example.org/namespace">
+ <foo xmlns=""/>
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/data/022.ref b/tests/auto/corelib/xml/qxmlstream/data/022.ref
new file mode 100644
index 0000000000..620f51dc66
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/022.ref
@@ -0,0 +1,15 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Simple legal case: default namespace and rebinding " )
+StartElement( name="foo" namespaceUri="http://example.org/namespace" qualifiedName="foo"
+ NamespaceDeclaration( namespaceUri="http://example.org/namespace" )
+ )
+Characters( whitespace text="
+ " )
+StartElement( name="foo" namespaceUri="http://example.org/other-namespace" qualifiedName="foo"
+ NamespaceDeclaration( namespaceUri="http://example.org/other-namespace" )
+ )
+EndElement( name="foo" namespaceUri="http://example.org/other-namespace" qualifiedName="foo" )
+Characters( whitespace text="
+" )
+EndElement( name="foo" namespaceUri="http://example.org/namespace" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/022.xml b/tests/auto/corelib/xml/qxmlstream/data/022.xml
new file mode 100644
index 0000000000..31984e79bf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/022.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: default namespace and rebinding -->
+<foo xmlns="http://example.org/namespace">
+ <foo xmlns="http://example.org/other-namespace"/>
+</foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/data/023.ref b/tests/auto/corelib/xml/qxmlstream/data/023.ref
new file mode 100644
index 0000000000..513d85c710
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/023.ref
@@ -0,0 +1,9 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Illegal use of 1.1-style prefix unbinding in 1.0 document " )
+StartElement( name="foo" namespaceUri="http://example.org/namespace" qualifiedName="a:foo" prefix="a"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/namespace" )
+ )
+Characters( whitespace text="
+ " )
+Invalid( name="foo" qualifiedName="a:foo" prefix="a" )
+ERROR: Illegal namespace declaration.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/023.xml b/tests/auto/corelib/xml/qxmlstream/data/023.xml
new file mode 100644
index 0000000000..4d695ad38d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/023.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!-- Illegal use of 1.1-style prefix unbinding in 1.0 document -->
+<a:foo xmlns:a="http://example.org/namespace">
+ <a:foo xmlns:a=""/>
+</a:foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/data/024.ref b/tests/auto/corelib/xml/qxmlstream/data/024.ref
new file mode 100644
index 0000000000..83c3ac5315
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/024.ref
@@ -0,0 +1,15 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Simple legal case: prefix rebinding " )
+StartElement( name="foo" namespaceUri="http://example.org/namespace" qualifiedName="a:foo" prefix="a"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/namespace" )
+ )
+Characters( whitespace text="
+ " )
+StartElement( name="foo" namespaceUri="http://example.org/other-namespace" qualifiedName="a:foo" prefix="a"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/other-namespace" )
+ )
+EndElement( name="foo" namespaceUri="http://example.org/other-namespace" qualifiedName="a:foo" )
+Characters( whitespace text="
+" )
+EndElement( name="foo" namespaceUri="http://example.org/namespace" qualifiedName="a:foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/024.xml b/tests/auto/corelib/xml/qxmlstream/data/024.xml
new file mode 100644
index 0000000000..b68470afa6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/024.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!-- Simple legal case: prefix rebinding -->
+<a:foo xmlns:a="http://example.org/namespace">
+ <a:foo xmlns:a="http://example.org/other-namespace"/>
+</a:foo>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/data/025.ref b/tests/auto/corelib/xml/qxmlstream/data/025.ref
new file mode 100644
index 0000000000..44363e0d61
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/025.ref
@@ -0,0 +1,4 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Unbound element prefix " )
+Invalid( name="foo" qualifiedName="a:foo" prefix="a" )
+ERROR: Namespace prefix 'a' not declared
diff --git a/tests/auto/corelib/xml/qxmlstream/data/025.xml b/tests/auto/corelib/xml/qxmlstream/data/025.xml
new file mode 100644
index 0000000000..1277ab33da
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/025.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Unbound element prefix -->
+<a:foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/026.ref b/tests/auto/corelib/xml/qxmlstream/data/026.ref
new file mode 100644
index 0000000000..de7b326079
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/026.ref
@@ -0,0 +1,6 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Unbound attribute prefix " )
+Invalid( name="foo" qualifiedName="foo"
+ Attribute( name="attr" qualifiedName="a:attr" prefix="a" value="1" )
+ )
+ERROR: Namespace prefix 'a' not declared
diff --git a/tests/auto/corelib/xml/qxmlstream/data/026.xml b/tests/auto/corelib/xml/qxmlstream/data/026.xml
new file mode 100644
index 0000000000..689c75c666
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/026.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Unbound attribute prefix -->
+<foo a:attr="1"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/027.ref b/tests/auto/corelib/xml/qxmlstream/data/027.ref
new file mode 100644
index 0000000000..dcf5688e9f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/027.ref
@@ -0,0 +1,7 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Reserved prefixes and namespaces: using the xml prefix undeclared " )
+StartElement( name="foo" qualifiedName="foo"
+ Attribute( name="lang" namespaceUri="http://www.w3.org/XML/1998/namespace" qualifiedName="xml:lang" prefix="xml" value="en" )
+ )
+EndElement( name="foo" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/027.xml b/tests/auto/corelib/xml/qxmlstream/data/027.xml
new file mode 100644
index 0000000000..1bf048e7f9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/027.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: using the xml prefix undeclared -->
+<foo xml:lang="en"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/028.ref b/tests/auto/corelib/xml/qxmlstream/data/028.ref
new file mode 100644
index 0000000000..ed025eb289
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/028.ref
@@ -0,0 +1,7 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Reserved prefixes and namespaces: declaring the xml prefix correctly " )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( prefix="xml" namespaceUri="http://www.w3.org/XML/1998/namespace" )
+ )
+EndElement( name="foo" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/028.xml b/tests/auto/corelib/xml/qxmlstream/data/028.xml
new file mode 100644
index 0000000000..e461235571
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/028.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: declaring the xml prefix correctly -->
+<foo xmlns:xml="http://www.w3.org/XML/1998/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/029.ref b/tests/auto/corelib/xml/qxmlstream/data/029.ref
new file mode 100644
index 0000000000..10697d1723
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/029.ref
@@ -0,0 +1,4 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Reserved prefixes and namespaces: declaring the xml prefix incorrectly " )
+Invalid( name="foo" qualifiedName="foo" )
+ERROR: Illegal namespace declaration.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/029.xml b/tests/auto/corelib/xml/qxmlstream/data/029.xml
new file mode 100644
index 0000000000..2c05165d9d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/029.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: declaring the xml prefix incorrectly -->
+<foo xmlns:xml="http://example.org/namespace"/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/data/030.ref b/tests/auto/corelib/xml/qxmlstream/data/030.ref
new file mode 100644
index 0000000000..1e626263a3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/030.ref
@@ -0,0 +1,5 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Reserved prefixes and namespaces: binding another prefix
+ to the xml namespace " )
+Invalid( name="foo" qualifiedName="foo" )
+ERROR: Illegal namespace declaration.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/030.xml b/tests/auto/corelib/xml/qxmlstream/data/030.xml
new file mode 100644
index 0000000000..db5ab4dbc2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/030.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: binding another prefix
+ to the xml namespace -->
+<foo xmlns:yml="http://www.w3.org/XML/1998/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/031.ref b/tests/auto/corelib/xml/qxmlstream/data/031.ref
new file mode 100644
index 0000000000..c68e2ecf7f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/031.ref
@@ -0,0 +1,5 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Reserved prefixes and namespaces: declaring the xmlns prefix
+ with its correct URI (illegal) " )
+Invalid( name="foo" qualifiedName="foo" )
+ERROR: Illegal namespace declaration.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/031.xml b/tests/auto/corelib/xml/qxmlstream/data/031.xml
new file mode 100644
index 0000000000..2eec6cc6d0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/031.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: declaring the xmlns prefix
+ with its correct URI (illegal) -->
+<foo xmlns:xmlns="http://www.w3.org/2000/xmlns/"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/032.ref b/tests/auto/corelib/xml/qxmlstream/data/032.ref
new file mode 100644
index 0000000000..670afa49fb
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/032.ref
@@ -0,0 +1,5 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Reserved prefixes and namespaces: declaring the xmlns prefix
+ with an incorrect URI " )
+Invalid( name="foo" qualifiedName="foo" )
+ERROR: Illegal namespace declaration.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/032.xml b/tests/auto/corelib/xml/qxmlstream/data/032.xml
new file mode 100644
index 0000000000..94433263c5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/032.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: declaring the xmlns prefix
+ with an incorrect URI -->
+<foo xmlns:xmlns="http://example.org/namespace"/>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/data/033.ref b/tests/auto/corelib/xml/qxmlstream/data/033.ref
new file mode 100644
index 0000000000..ad83323de2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/033.ref
@@ -0,0 +1,5 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Reserved prefixes and namespaces: binding another prefix
+ to the xmlns namespace " )
+Invalid( name="foo" qualifiedName="foo" )
+ERROR: Illegal namespace declaration.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/033.xml b/tests/auto/corelib/xml/qxmlstream/data/033.xml
new file mode 100644
index 0000000000..d9ee72807c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/033.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: binding another prefix
+ to the xmlns namespace -->
+<foo xmlns:ymlns="http://www.w3.org/2000/xmlns/"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/034.ref b/tests/auto/corelib/xml/qxmlstream/data/034.ref
new file mode 100644
index 0000000000..c1aec14057
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/034.ref
@@ -0,0 +1,7 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Reserved prefixes and namespaces: binding a reserved prefix " )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( prefix="xml2" namespaceUri="http://example.org/namespace" )
+ )
+EndElement( name="foo" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/034.xml b/tests/auto/corelib/xml/qxmlstream/data/034.xml
new file mode 100644
index 0000000000..4fa2b8dbb0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/034.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!-- Reserved prefixes and namespaces: binding a reserved prefix -->
+<foo xmlns:xml2="http://example.org/namespace"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/035.ref b/tests/auto/corelib/xml/qxmlstream/data/035.ref
new file mode 100644
index 0000000000..e172fc90e1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/035.ref
@@ -0,0 +1,16 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Attribute uniqueness: repeated identical attribute " )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/~wilbur" )
+
+ NamespaceDeclaration( prefix="b" namespaceUri="http://example.org/~wilbur" )
+ )
+Characters( whitespace text="
+
+" )
+Invalid( name="bar" qualifiedName="bar"
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="a:attr" prefix="a" value="1" )
+
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="a:attr" prefix="a" value="2" )
+ )
+ERROR: Attribute redefined.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/035.xml b/tests/auto/corelib/xml/qxmlstream/data/035.xml
new file mode 100644
index 0000000000..97b14b3106
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/035.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: repeated identical attribute -->
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/~wilbur">
+
+<bar a:attr="1" a:attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/036.ref b/tests/auto/corelib/xml/qxmlstream/data/036.ref
new file mode 100644
index 0000000000..158e7361f9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/036.ref
@@ -0,0 +1,16 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Attribute uniqueness: repeated attribute with different prefixes " )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/~wilbur" )
+
+ NamespaceDeclaration( prefix="b" namespaceUri="http://example.org/~wilbur" )
+ )
+Characters( whitespace text="
+
+" )
+Invalid( name="bar" qualifiedName="bar"
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="a:attr" prefix="a" value="1" )
+
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="b:attr" prefix="b" value="2" )
+ )
+ERROR: Attribute redefined.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/036.xml b/tests/auto/corelib/xml/qxmlstream/data/036.xml
new file mode 100644
index 0000000000..c37894b5d7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/036.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: repeated attribute with different prefixes -->
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/~wilbur">
+
+<bar a:attr="1" b:attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/037.ref b/tests/auto/corelib/xml/qxmlstream/data/037.ref
new file mode 100644
index 0000000000..d7e402c5a0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/037.ref
@@ -0,0 +1,21 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Attribute uniqueness: different attributes with same local name " )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/~wilbur" )
+
+ NamespaceDeclaration( prefix="b" namespaceUri="http://example.org/~kipper" )
+ )
+Characters( whitespace text="
+
+" )
+StartElement( name="bar" qualifiedName="bar"
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="a:attr" prefix="a" value="1" )
+
+ Attribute( name="attr" namespaceUri="http://example.org/~kipper" qualifiedName="b:attr" prefix="b" value="2" )
+ )
+EndElement( name="bar" qualifiedName="bar" )
+Characters( whitespace text="
+
+" )
+EndElement( name="foo" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/037.xml b/tests/auto/corelib/xml/qxmlstream/data/037.xml
new file mode 100644
index 0000000000..30bc24b5b2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/037.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: different attributes with same local name -->
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/~kipper">
+
+<bar a:attr="1" b:attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/038.ref b/tests/auto/corelib/xml/qxmlstream/data/038.ref
new file mode 100644
index 0000000000..45f16782be
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/038.ref
@@ -0,0 +1,20 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Attribute uniqueness: prefixed and unprefixed attributes with same
+ local name " )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/~wilbur" )
+ )
+Characters( whitespace text="
+
+" )
+StartElement( name="bar" qualifiedName="bar"
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="a:attr" prefix="a" value="1" )
+
+ Attribute( name="attr" qualifiedName="attr" value="2" )
+ )
+EndElement( name="bar" qualifiedName="bar" )
+Characters( whitespace text="
+
+" )
+EndElement( name="foo" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/038.xml b/tests/auto/corelib/xml/qxmlstream/data/038.xml
new file mode 100644
index 0000000000..2b20a469e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/038.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: prefixed and unprefixed attributes with same
+ local name -->
+<foo xmlns:a="http://example.org/~wilbur">
+
+<bar a:attr="1" attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/039.ref b/tests/auto/corelib/xml/qxmlstream/data/039.ref
new file mode 100644
index 0000000000..63ee6b4def
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/039.ref
@@ -0,0 +1,24 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Attribute uniqueness: prefixed and unprefixed attributes with same
+ local name, with default namespace " )
+StartElement( name="foo" namespaceUri="http://example.org/~wilbur" qualifiedName="foo"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/~wilbur" )
+
+ NamespaceDeclaration( prefix="b" namespaceUri="http://example.org/~kipper" )
+
+ NamespaceDeclaration( namespaceUri="http://example.org/~wilbur" )
+ )
+Characters( whitespace text="
+
+" )
+StartElement( name="bar" namespaceUri="http://example.org/~kipper" qualifiedName="b:bar" prefix="b"
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="a:attr" prefix="a" value="1" )
+
+ Attribute( name="attr" qualifiedName="attr" value="2" )
+ )
+EndElement( name="bar" namespaceUri="http://example.org/~kipper" qualifiedName="b:bar" )
+Characters( whitespace text="
+
+" )
+EndElement( name="foo" namespaceUri="http://example.org/~wilbur" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/039.xml b/tests/auto/corelib/xml/qxmlstream/data/039.xml
new file mode 100644
index 0000000000..af7be31dc7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/039.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: prefixed and unprefixed attributes with same
+ local name, with default namespace -->
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns:b="http://example.org/~kipper"
+ xmlns="http://example.org/~wilbur">
+
+<b:bar a:attr="1" attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/040.ref b/tests/auto/corelib/xml/qxmlstream/data/040.ref
new file mode 100644
index 0000000000..ee47ca5aa8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/040.ref
@@ -0,0 +1,22 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Attribute uniqueness: prefixed and unprefixed attributes with same
+ local name, with default namespace and element in default namespace " )
+StartElement( name="foo" namespaceUri="http://example.org/~wilbur" qualifiedName="foo"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/~wilbur" )
+
+ NamespaceDeclaration( namespaceUri="http://example.org/~wilbur" )
+ )
+Characters( whitespace text="
+
+" )
+StartElement( name="bar" namespaceUri="http://example.org/~wilbur" qualifiedName="bar"
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="a:attr" prefix="a" value="1" )
+
+ Attribute( name="attr" qualifiedName="attr" value="2" )
+ )
+EndElement( name="bar" namespaceUri="http://example.org/~wilbur" qualifiedName="bar" )
+Characters( whitespace text="
+
+" )
+EndElement( name="foo" namespaceUri="http://example.org/~wilbur" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/040.xml b/tests/auto/corelib/xml/qxmlstream/data/040.xml
new file mode 100644
index 0000000000..cf02e22bfa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/040.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: prefixed and unprefixed attributes with same
+ local name, with default namespace and element in default namespace -->
+<foo xmlns:a="http://example.org/~wilbur"
+ xmlns="http://example.org/~wilbur">
+
+<bar a:attr="1" attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/041.ref b/tests/auto/corelib/xml/qxmlstream/data/041.ref
new file mode 100644
index 0000000000..3e7ca64208
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/041.ref
@@ -0,0 +1,20 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Attribute uniqueness: prefixed and unprefixed attributes with same
+ local name, element in same namespace as prefixed attribute " )
+StartElement( name="foo" qualifiedName="foo"
+ NamespaceDeclaration( prefix="a" namespaceUri="http://example.org/~wilbur" )
+ )
+Characters( whitespace text="
+
+" )
+StartElement( name="bar" namespaceUri="http://example.org/~wilbur" qualifiedName="a:bar" prefix="a"
+ Attribute( name="attr" namespaceUri="http://example.org/~wilbur" qualifiedName="a:attr" prefix="a" value="1" )
+
+ Attribute( name="attr" qualifiedName="attr" value="2" )
+ )
+EndElement( name="bar" namespaceUri="http://example.org/~wilbur" qualifiedName="a:bar" )
+Characters( whitespace text="
+
+" )
+EndElement( name="foo" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/041.xml b/tests/auto/corelib/xml/qxmlstream/data/041.xml
new file mode 100644
index 0000000000..80781e2e2b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/041.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!-- Attribute uniqueness: prefixed and unprefixed attributes with same
+ local name, element in same namespace as prefixed attribute -->
+<foo xmlns:a="http://example.org/~wilbur">
+
+<a:bar a:attr="1" attr="2"/>
+
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/042.ref b/tests/auto/corelib/xml/qxmlstream/data/042.ref
new file mode 100644
index 0000000000..e2fd9c6b7f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/042.ref
@@ -0,0 +1,4 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Colon in PI name " )
+Invalid( )
+ERROR: Expected ' ' or '?', but got ':'.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/042.xml b/tests/auto/corelib/xml/qxmlstream/data/042.xml
new file mode 100644
index 0000000000..045dcc23dc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/042.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<!-- Colon in PI name -->
+<?a:b bogus?>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/043.ref b/tests/auto/corelib/xml/qxmlstream/data/043.ref
new file mode 100644
index 0000000000..d147ecd9ec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/043.ref
@@ -0,0 +1,4 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Colon in entity name " )
+Invalid( )
+ERROR: Expected ' ', but got ':'.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/043.xml b/tests/auto/corelib/xml/qxmlstream/data/043.xml
new file mode 100644
index 0000000000..d800e2537b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/043.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Colon in entity name -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ENTITY a:b "bogus">
+]>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/044.ref b/tests/auto/corelib/xml/qxmlstream/data/044.ref
new file mode 100644
index 0000000000..d147ecd9ec
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/044.ref
@@ -0,0 +1,4 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Colon in entity name " )
+Invalid( )
+ERROR: Expected ' ', but got ':'.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/044.xml b/tests/auto/corelib/xml/qxmlstream/data/044.xml
new file mode 100644
index 0000000000..30922c8d2b
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/044.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Colon in entity name -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!NOTATION a:b SYSTEM "notation">
+]>
+<foo/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/045.ref b/tests/auto/corelib/xml/qxmlstream/data/045.ref
new file mode 100644
index 0000000000..0e4d785d40
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/045.ref
@@ -0,0 +1,12 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Colon in ID attribute name " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo id ID #REQUIRED>
+]>" dtdName="foo" )
+StartElement( name="foo" qualifiedName="foo"
+ Attribute( name="id" qualifiedName="id" value="a:b" )
+ )
+EndElement( name="foo" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/045.xml b/tests/auto/corelib/xml/qxmlstream/data/045.xml
new file mode 100644
index 0000000000..3235470923
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/045.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!-- Colon in ID attribute name -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo id ID #REQUIRED>
+]>
+<foo id="a:b"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/046.ref b/tests/auto/corelib/xml/qxmlstream/data/046.ref
new file mode 100644
index 0000000000..5019708c8c
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/046.ref
@@ -0,0 +1,21 @@
+StartDocument( documentVersion="1.0" )
+Comment( text=" Colon in ID attribute name " )
+DTD( text="
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo id ID #IMPLIED
+ ref IDREF #IMPLIED>
+]>" dtdName="foo" )
+StartElement( name="foo" qualifiedName="foo"
+ Attribute( name="ref" qualifiedName="ref" value="a:b" )
+ )
+Characters( whitespace text="
+ " )
+StartElement( name="foo" qualifiedName="foo"
+ Attribute( name="id" qualifiedName="id" value="a:b" )
+ )
+EndElement( name="foo" qualifiedName="foo" )
+Characters( whitespace text="
+" )
+EndElement( name="foo" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/046.xml b/tests/auto/corelib/xml/qxmlstream/data/046.xml
new file mode 100644
index 0000000000..8432a2faaa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/046.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!-- Colon in ID attribute name -->
+<!DOCTYPE foo [
+<!ELEMENT foo ANY>
+<!ATTLIST foo id ID #IMPLIED
+ ref IDREF #IMPLIED>
+]>
+<foo ref="a:b">
+ <foo id="a:b"/>
+</foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/047.ref b/tests/auto/corelib/xml/qxmlstream/data/047.ref
new file mode 100644
index 0000000000..c159d89c76
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/047.ref
@@ -0,0 +1,5 @@
+StartDocument( documentVersion="1.0" documentEncoding="UTF-8" )
+StartElement( name="foo" qualifiedName="foo" )
+Characters( text="<bar]>" )
+EndElement( name="foo" qualifiedName="foo" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/047.xml b/tests/auto/corelib/xml/qxmlstream/data/047.xml
new file mode 100644
index 0000000000..36e7b33072
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/047.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo>&lt;bar]></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/048.ref b/tests/auto/corelib/xml/qxmlstream/data/048.ref
new file mode 100644
index 0000000000..32e7243cc0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/048.ref
@@ -0,0 +1,4 @@
+StartDocument( documentVersion="1.0" documentEncoding="UTF-8" )
+StartElement( name="foo" qualifiedName="foo" )
+Invalid( )
+ERROR: Sequence ']]>' not allowed in content.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/048.xml b/tests/auto/corelib/xml/qxmlstream/data/048.xml
new file mode 100644
index 0000000000..2f5d6c8baf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/048.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo>illegal sequence]]></foo>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/051reduced.ref b/tests/auto/corelib/xml/qxmlstream/data/051reduced.ref
new file mode 100644
index 0000000000..d86fb64970
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/051reduced.ref
@@ -0,0 +1,4 @@
+StartDocument( )
+StartElement( name="เจมส์" qualifiedName="เจมส์" )
+EndElement( name="เจมส์" qualifiedName="เจมส์" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/051reduced.xml b/tests/auto/corelib/xml/qxmlstream/data/051reduced.xml
new file mode 100644
index 0000000000..0a53b0d503
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/051reduced.xml
Binary files differ
diff --git a/tests/auto/corelib/xml/qxmlstream/data/1.ref b/tests/auto/corelib/xml/qxmlstream/data/1.ref
new file mode 100644
index 0000000000..0288cf0e11
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/1.ref
@@ -0,0 +1,8 @@
+StartDocument( )
+StartElement( name="doc" namespaceUri="namespaceUri" qualifiedName="ns:doc" prefix="ns"
+ Attribute( name="space" namespaceUri="http://www.w3.org/XML/1998/namespace" qualifiedName="xml:space" prefix="xml" value="preserve" )
+
+ NamespaceDeclaration( prefix="ns" namespaceUri="namespaceUri" )
+ )
+EndElement( name="doc" namespaceUri="namespaceUri" qualifiedName="ns:doc" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/1.xml b/tests/auto/corelib/xml/qxmlstream/data/1.xml
new file mode 100644
index 0000000000..3ead71af7a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/1.xml
@@ -0,0 +1 @@
+<ns:doc xmlns:ns="namespaceUri" xml:space="preserve"/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/10.ref b/tests/auto/corelib/xml/qxmlstream/data/10.ref
new file mode 100644
index 0000000000..51ffb72ac3
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/10.ref
@@ -0,0 +1,6 @@
+StartDocument( )
+StartElement( name="error" qualifiedName="error" )
+Characters( text="broken xml declaration" )
+EndElement( name="error" qualifiedName="error" )
+Invalid( processingInstructionTarget="xml" processingInstructionData="version="1.0"" )
+ERROR: XML declaration not at start of document.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/10.xml b/tests/auto/corelib/xml/qxmlstream/data/10.xml
new file mode 100644
index 0000000000..19f9f9e8ff
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/10.xml
@@ -0,0 +1,2 @@
+<error>broken xml declaration</error>
+<?xml version="1.0"?>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/11.ref b/tests/auto/corelib/xml/qxmlstream/data/11.ref
new file mode 100644
index 0000000000..60387ac925
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/11.ref
@@ -0,0 +1,6 @@
+StartDocument( )
+StartElement( name="site" qualifiedName="site"
+ Attribute( name="attr" namespaceUri="http://www.w3.org/XML/1998/namespace" qualifiedName="xml:attr" prefix="xml" )
+ )
+EndElement( name="site" qualifiedName="site" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/11.xml b/tests/auto/corelib/xml/qxmlstream/data/11.xml
new file mode 100644
index 0000000000..619e917419
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/11.xml
@@ -0,0 +1 @@
+<site xml:attr=""/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/12.ref b/tests/auto/corelib/xml/qxmlstream/data/12.ref
new file mode 100644
index 0000000000..ede0967f31
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/12.ref
@@ -0,0 +1,19 @@
+StartDocument( )
+DTD( text="<!DOCTYPE doc
+[
+<!NOTATION not1 PUBLIC "0123456789-()+,.'/:=?;!*#@$_%">
+<!NOTATION not2 PUBLIC "'">
+<!NOTATION not3 PUBLIC "asd">
+<!NOTATION not4 PUBLIC 'asd'>
+]>" dtdName="doc"
+ NotationDeclaration( name="not1" publicId="0123456789-()+,.'/:=?;!*#@$_%" )
+
+ NotationDeclaration( name="not2" publicId="'" )
+
+ NotationDeclaration( name="not3" publicId="asd" )
+
+ NotationDeclaration( name="not4" publicId="asd" )
+ )
+StartElement( name="doc" qualifiedName="doc" )
+EndElement( name="doc" qualifiedName="doc" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/12.xml b/tests/auto/corelib/xml/qxmlstream/data/12.xml
new file mode 100644
index 0000000000..d2265f4ddf
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/12.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE doc
+[
+<!NOTATION not1 PUBLIC "0123456789-()+,.'/:=?;!*#@$_%">
+<!NOTATION not2 PUBLIC "'">
+<!NOTATION not3 PUBLIC "asd">
+<!NOTATION not4 PUBLIC 'asd'>
+]>
+<doc/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/13.ref b/tests/auto/corelib/xml/qxmlstream/data/13.ref
new file mode 100644
index 0000000000..10de0f3328
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/13.ref
@@ -0,0 +1,14 @@
+StartDocument( )
+StartElement( name="a" qualifiedName="a"
+ Attribute( name="attr1" qualifiedName="attr1" value="'" )
+
+ Attribute( name="attr2" qualifiedName="attr2" value=""" )
+
+ Attribute( name="attr3" qualifiedName="attr3" value="a"a" )
+
+ Attribute( name="attr4" qualifiedName="attr4" value="a'a" )
+
+ Attribute( name="attr5" qualifiedName="attr5" value="0123456789-()+,.'/:=?;!*#@$_%" )
+ )
+EndElement( name="a" qualifiedName="a" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/13.xml b/tests/auto/corelib/xml/qxmlstream/data/13.xml
new file mode 100644
index 0000000000..d0bda97207
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/13.xml
@@ -0,0 +1,6 @@
+<a attr1="'"
+ attr2='"'
+ attr3='a"a'
+ attr4="a'a"
+ attr5="0123456789-()+,.'/:=?;!*#@$_%"
+ />
diff --git a/tests/auto/corelib/xml/qxmlstream/data/14.ref b/tests/auto/corelib/xml/qxmlstream/data/14.ref
new file mode 100644
index 0000000000..47a1b1ae80
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/14.ref
@@ -0,0 +1,18 @@
+StartDocument( documentVersion="1.0" )
+DTD( text="
+<!DOCTYPE test [
+<!ELEMENT test (#PCDATA) >
+<!ENTITY % xx '%zz;'>
+<!ENTITY % zz '<!ENTITY tricky "error-prone" >' >
+<!ENTITY tricky "error-prone" >
+]>" dtdName="test"
+ EntityDeclaration( name="xx" value="%zz;" )
+
+ EntityDeclaration( name="zz" value="<!ENTITY tricky "error-prone" >" )
+
+ EntityDeclaration( name="tricky" value="error-prone" )
+ )
+StartElement( name="test" qualifiedName="test" )
+Characters( text="This sample shows a error-prone method." )
+EndElement( name="test" qualifiedName="test" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/14.xml b/tests/auto/corelib/xml/qxmlstream/data/14.xml
new file mode 100644
index 0000000000..922314beb9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/14.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0'?>
+<!DOCTYPE test [
+<!ELEMENT test (#PCDATA) >
+<!ENTITY % xx '&#37;zz;'>
+<!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
+%xx;
+]>
+<test>This sample shows a &tricky; method.</test>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/15.ref b/tests/auto/corelib/xml/qxmlstream/data/15.ref
new file mode 100644
index 0000000000..3097f1f84a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/15.ref
@@ -0,0 +1,67 @@
+StartDocument( )
+StartElement( name="root" qualifiedName="root" )
+Characters( whitespace text="
+
+ " )
+StartElement( name="element1" qualifiedName="element1" )
+Characters( CDATA text="ABC" )
+Characters( whitespace text=" " )
+EndElement( name="element1" qualifiedName="element1" )
+Characters( whitespace text="
+ " )
+StartElement( name="element2" qualifiedName="element2" )
+Characters( whitespace text=" " )
+Characters( CDATA text="ABC" )
+EndElement( name="element2" qualifiedName="element2" )
+Characters( whitespace text="
+ " )
+StartElement( name="element3" qualifiedName="element3" )
+Characters( whitespace text=" " )
+Characters( CDATA text="ABC" )
+Characters( whitespace text=" " )
+EndElement( name="element3" qualifiedName="element3" )
+Characters( whitespace text="
+
+ " )
+StartElement( name="element1" qualifiedName="element1" )
+Characters( CDATA text=" " )
+Characters( whitespace text=" " )
+EndElement( name="element1" qualifiedName="element1" )
+Characters( whitespace text="
+ " )
+StartElement( name="element2" qualifiedName="element2" )
+Characters( whitespace text=" " )
+Characters( CDATA text=" " )
+EndElement( name="element2" qualifiedName="element2" )
+Characters( whitespace text="
+ " )
+StartElement( name="element3" qualifiedName="element3" )
+Characters( whitespace text=" " )
+Characters( CDATA text=" " )
+Characters( whitespace text=" " )
+EndElement( name="element3" qualifiedName="element3" )
+Characters( whitespace text="
+
+ " )
+StartElement( name="element4" qualifiedName="element4" )
+Characters( text="abc" )
+Characters( CDATA text="def" )
+Characters( text="ghi" )
+EndElement( name="element4" qualifiedName="element4" )
+Characters( whitespace text="
+ " )
+StartElement( name="element5" qualifiedName="element5" )
+Characters( text="abc" )
+Characters( CDATA text="def" )
+EndElement( name="element5" qualifiedName="element5" )
+Characters( whitespace text="
+ " )
+StartElement( name="element6" qualifiedName="element6" )
+Characters( CDATA text="def" )
+Characters( text="ghi" )
+EndElement( name="element6" qualifiedName="element6" )
+Characters( whitespace text="
+
+" )
+EndElement( name="root" qualifiedName="root" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/15.xml b/tests/auto/corelib/xml/qxmlstream/data/15.xml
new file mode 100644
index 0000000000..81f8c2c7ba
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/15.xml
@@ -0,0 +1,15 @@
+<root>
+
+ <element1><![CDATA[ABC]]> </element1>
+ <element2> <![CDATA[ABC]]></element2>
+ <element3> <![CDATA[ABC]]> </element3>
+
+ <element1><![CDATA[ ]]> </element1>
+ <element2> <![CDATA[ ]]></element2>
+ <element3> <![CDATA[ ]]> </element3>
+
+ <element4>abc<![CDATA[def]]>ghi</element4>
+ <element5>abc<![CDATA[def]]></element5>
+ <element6><![CDATA[def]]>ghi</element6>
+
+</root>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/16.ref b/tests/auto/corelib/xml/qxmlstream/data/16.ref
new file mode 100644
index 0000000000..316304541a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/16.ref
@@ -0,0 +1,6 @@
+StartDocument( documentVersion="1.0" documentEncoding="ISO8859-1" )
+DTD( text="
+<!DOCTYPE test >" dtdName="test" )
+StartElement( name="germanüumlaut" qualifiedName="germanüumlaut" )
+EndElement( name="germanüumlaut" qualifiedName="germanüumlaut" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/16.xml b/tests/auto/corelib/xml/qxmlstream/data/16.xml
new file mode 100644
index 0000000000..6a69b9b3f5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/16.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="ISO8859-1"?>
+<!DOCTYPE test >
+<germanüumlaut/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/2.ref b/tests/auto/corelib/xml/qxmlstream/data/2.ref
new file mode 100644
index 0000000000..95d68efbd6
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/2.ref
@@ -0,0 +1,9 @@
+StartDocument( )
+StartElement( name="doc" namespaceUri="namespaceUri" qualifiedName="ns:doc" prefix="ns"
+ Attribute( name="space" namespaceUri="http://www.w3.org/XML/1998/namespace" qualifiedName="xml:space" prefix="xml" value="preserve" )
+
+ NamespaceDeclaration( prefix="ns" namespaceUri="namespaceUri" )
+ )
+Characters( text="The world goes round and round" )
+EndElement( name="doc" namespaceUri="namespaceUri" qualifiedName="ns:doc" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/2.xml b/tests/auto/corelib/xml/qxmlstream/data/2.xml
new file mode 100644
index 0000000000..095ebc63bd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/2.xml
@@ -0,0 +1 @@
+<ns:doc xmlns:ns="namespaceUri" xml:space="preserve">The world goes round and round</ns:doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/20.ref b/tests/auto/corelib/xml/qxmlstream/data/20.ref
new file mode 100644
index 0000000000..364eea62d2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/20.ref
@@ -0,0 +1,21 @@
+StartDocument( )
+DTD( text="<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">" dtdName="html" dtdPublicId="-//W3C//DTD XHTML 1.1//EN" dtdSystemId="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" )
+StartElement( name="form" qualifiedName="form"
+ Attribute( name="method" qualifiedName="method" value="get" )
+
+ Attribute( name="action" qualifiedName="action" value="#" )
+ )
+Characters( whitespace text=" " )
+StartElement( name="input" qualifiedName="input"
+ Attribute( name="type" qualifiedName="type" value="submit" )
+
+ Attribute( name="value" qualifiedName="value" value="&nbsp;<&rarr;&rArr;>&nbsp;" )
+
+ Attribute( name="id" qualifiedName="id" value="input" )
+ )
+EndElement( name="input" qualifiedName="input" )
+Characters( text="Test" )
+EntityReference( name="nbsp" )
+Characters( text="Test" )
+EndElement( name="form" qualifiedName="form" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/20.xml b/tests/auto/corelib/xml/qxmlstream/data/20.xml
new file mode 100644
index 0000000000..38a7212b03
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/20.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<form method="get" action="#"> <input type="submit" value="&nbsp;&lt;&rarr;&rArr;&gt;&nbsp;" id="input" />Test&nbsp;Test</form>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/21.ref b/tests/auto/corelib/xml/qxmlstream/data/21.ref
new file mode 100644
index 0000000000..1098c6800f
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/21.ref
@@ -0,0 +1,56 @@
+StartDocument( )
+DTD( text="<!DOCTYPE html:html [
+<!ENTITY ent1 'foo'>
+<!ENTITY ent2 'foo<br/>'>
+<!ELEMENT html:html (html:head, html:body)>
+<!ATTLIST html:html xmlns:html CDATA #IMPLIED>
+<!ELEMENT html:head (html:title,script*)>
+<!ATTLIST html:head xmlns CDATA #IMPLIED>
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+ src CDATA #IMPLIED
+ type CDATA #IMPLIED
+ charset CDATA #IMPLIED>
+<!ELEMENT html:title (#PCDATA)>
+<!ELEMENT html:body (html:p)>
+<!ELEMENT html:p (#PCDATA|html:br)*>
+<!ATTLIST html:p class CDATA #IMPLIED>
+<!ELEMENT html:br EMPTY>
+]>" dtdName="html"
+ EntityDeclaration( name="ent1" value="foo" )
+
+ EntityDeclaration( name="ent2" value="foo<br/>" )
+ )
+StartElement( name="html" namespaceUri="http://www.w3.org/1999/xhtml" qualifiedName="html:html" prefix="html"
+ NamespaceDeclaration( prefix="html" namespaceUri="http://www.w3.org/1999/xhtml" )
+ )
+Characters( whitespace text="
+" )
+StartElement( name="head" namespaceUri="http://www.w3.org/1999/xhtml" qualifiedName="html:head" prefix="html"
+ NamespaceDeclaration( namespaceUri="http://www.w3.org/1999/xhtml" )
+ )
+Characters( whitespace text="
+" )
+StartElement( name="title" namespaceUri="http://www.w3.org/1999/xhtml" qualifiedName="html:title" prefix="html" )
+Characters( text="test file" )
+EndElement( name="title" namespaceUri="http://www.w3.org/1999/xhtml" qualifiedName="html:title" )
+Characters( whitespace text="
+" )
+EndElement( name="head" namespaceUri="http://www.w3.org/1999/xhtml" qualifiedName="html:head" )
+Characters( whitespace text="
+" )
+StartElement( name="body" namespaceUri="http://www.w3.org/1999/xhtml" qualifiedName="html:body" prefix="html" )
+Characters( whitespace text="
+" )
+StartElement( name="p" namespaceUri="http://www.w3.org/1999/xhtml" qualifiedName="html:p" prefix="html"
+ Attribute( name="class" qualifiedName="class" value="visible:false" )
+ )
+Characters( text="bar" )
+EndElement( name="p" namespaceUri="http://www.w3.org/1999/xhtml" qualifiedName="html:p" )
+Characters( whitespace text="
+" )
+EndElement( name="body" namespaceUri="http://www.w3.org/1999/xhtml" qualifiedName="html:body" )
+Characters( whitespace text="
+" )
+EndElement( name="html" namespaceUri="http://www.w3.org/1999/xhtml" qualifiedName="html:html" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/21.xml b/tests/auto/corelib/xml/qxmlstream/data/21.xml
new file mode 100644
index 0000000000..7a4c26a1fa
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/21.xml
@@ -0,0 +1,26 @@
+<!DOCTYPE html:html [
+<!ENTITY ent1 'foo'>
+<!ENTITY ent2 'foo<br/>'>
+<!ELEMENT html:html (html:head, html:body)>
+<!ATTLIST html:html xmlns:html CDATA #IMPLIED>
+<!ELEMENT html:head (html:title,script*)>
+<!ATTLIST html:head xmlns CDATA #IMPLIED>
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+ src CDATA #IMPLIED
+ type CDATA #IMPLIED
+ charset CDATA #IMPLIED>
+<!ELEMENT html:title (#PCDATA)>
+<!ELEMENT html:body (html:p)>
+<!ELEMENT html:p (#PCDATA|html:br)*>
+<!ATTLIST html:p class CDATA #IMPLIED>
+<!ELEMENT html:br EMPTY>
+]>
+<html:html xmlns:html='http://www.w3.org/1999/xhtml'>
+<html:head xmlns='http://www.w3.org/1999/xhtml'>
+<html:title>test file</html:title>
+</html:head>
+<html:body>
+<html:p class="visible:false">bar</html:p>
+</html:body>
+</html:html>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/22.ref b/tests/auto/corelib/xml/qxmlstream/data/22.ref
new file mode 100644
index 0000000000..d6d30237e1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/22.ref
@@ -0,0 +1,4 @@
+StartDocument( )
+DTD( text="<!DOCTYPE test>" dtdName="test" )
+Invalid( name="germanüumlaut" qualifiedName="germanüumlaut" )
+ERROR: Invalid XML name.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/22.xml b/tests/auto/corelib/xml/qxmlstream/data/22.xml
new file mode 100644
index 0000000000..4b1dbe43ab
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/22.xml
@@ -0,0 +1,2 @@
+<!DOCTYPE test>
+<germanüumlaut/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/3.ref b/tests/auto/corelib/xml/qxmlstream/data/3.ref
new file mode 100644
index 0000000000..cc8b18b7d8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/3.ref
@@ -0,0 +1,6 @@
+StartDocument( standalone documentVersion="1.0" )
+Comment( text="comment me" )
+ProcessingInstruction( processingInstructionTarget="process" processingInstructionData="me" )
+StartElement( name="nothing" qualifiedName="nothing" )
+EndElement( name="nothing" qualifiedName="nothing" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/3.xml b/tests/auto/corelib/xml/qxmlstream/data/3.xml
new file mode 100644
index 0000000000..ab4abd3670
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/3.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="yes"?>
+<!--comment me-->
+<?process me?>
+<nothing/>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/4.ref b/tests/auto/corelib/xml/qxmlstream/data/4.ref
new file mode 100644
index 0000000000..80f4846070
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/4.ref
@@ -0,0 +1,21 @@
+StartDocument( documentVersion="1.0" )
+DTD( text="
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e SYSTEM "something">
+<!ENTITY replace "replace">
+<!ENTITY me "me">
+%e;
+]>" dtdName="doc"
+ EntityDeclaration( name="e" systemId="something" )
+
+ EntityDeclaration( name="replace" value="replace" )
+
+ EntityDeclaration( name="me" value="me" )
+ )
+StartElement( name="doc" qualifiedName="doc"
+ Attribute( name="a" qualifiedName="a" value="do replace me" )
+ )
+Characters( text="and me too" )
+EndElement( name="doc" qualifiedName="doc" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/4.xml b/tests/auto/corelib/xml/qxmlstream/data/4.xml
new file mode 100644
index 0000000000..2791fdca30
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/4.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e SYSTEM "something">
+<!ENTITY replace "replace">
+<!ENTITY me "me">
+%e;
+]>
+<doc a="do &replace; me">and &me; too</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/5.ref b/tests/auto/corelib/xml/qxmlstream/data/5.ref
new file mode 100644
index 0000000000..5d073094a7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/5.ref
@@ -0,0 +1,19 @@
+StartDocument( documentVersion="1.0" )
+DTD( text="
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e SYSTEM "something">
+%e;
+<!ENTITY not "not">
+<!ENTITY me "me">
+]>" dtdName="doc"
+ EntityDeclaration( name="e" systemId="something" )
+ )
+StartElement( name="doc" qualifiedName="doc"
+ Attribute( name="a" qualifiedName="a" value="do &not; replace me" )
+ )
+Characters( text="and " )
+EntityReference( name="me" )
+Characters( text=" neither" )
+EndElement( name="doc" qualifiedName="doc" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/5.xml b/tests/auto/corelib/xml/qxmlstream/data/5.xml
new file mode 100644
index 0000000000..5bf7dbc592
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/5.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE doc [
+<!ELEMENT doc (#PCDATA)>
+<!ENTITY % e SYSTEM "something">
+%e;
+<!ENTITY not "not">
+<!ENTITY me "me">
+]>
+<doc a="do &not; replace me">and &me; neither</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/6.ref b/tests/auto/corelib/xml/qxmlstream/data/6.ref
new file mode 100644
index 0000000000..3ba92e7d81
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/6.ref
@@ -0,0 +1,13 @@
+StartDocument( )
+StartElement( name="doc" qualifiedName="doc" )
+Characters( whitespace text=" " )
+StartElement( name="paragraph" qualifiedName="paragraph" )
+Characters( whitespace text=" " )
+EndElement( name="paragraph" qualifiedName="paragraph" )
+Characters( whitespace text=" " )
+StartElement( name="paragraph" qualifiedName="paragraph" )
+Characters( text=" this is not all whitepace " )
+EndElement( name="paragraph" qualifiedName="paragraph" )
+Characters( whitespace text=" " )
+EndElement( name="doc" qualifiedName="doc" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/6.xml b/tests/auto/corelib/xml/qxmlstream/data/6.xml
new file mode 100644
index 0000000000..8e2778b669
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/6.xml
@@ -0,0 +1 @@
+<doc> <paragraph> </paragraph> <paragraph> this is not all whitepace </paragraph> </doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/7.ref b/tests/auto/corelib/xml/qxmlstream/data/7.ref
new file mode 100644
index 0000000000..158eef0291
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/7.ref
@@ -0,0 +1,7 @@
+StartDocument( )
+StartElement( name="doc" qualifiedName="doc" )
+Characters( text="Text and " )
+Characters( CDATA text="text in a CDATA section" )
+Characters( text=" and normal text" )
+EndElement( name="doc" qualifiedName="doc" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/7.xml b/tests/auto/corelib/xml/qxmlstream/data/7.xml
new file mode 100644
index 0000000000..c9abc3a48e
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/7.xml
@@ -0,0 +1 @@
+<doc>Text and <![CDATA[text in a CDATA section]]> and normal text</doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/8.ref b/tests/auto/corelib/xml/qxmlstream/data/8.ref
new file mode 100644
index 0000000000..d1d4eebcf1
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/8.ref
@@ -0,0 +1,3 @@
+StartDocument( )
+Invalid( processingInstructionTarget="xml" )
+ERROR: XML declaration not at start of document.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/8.xml b/tests/auto/corelib/xml/qxmlstream/data/8.xml
new file mode 100644
index 0000000000..8b88a9d961
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/8.xml
@@ -0,0 +1,3 @@
+
+<?xml ?>
+<error>xml declaration not at start of document</error>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/9.ref b/tests/auto/corelib/xml/qxmlstream/data/9.ref
new file mode 100644
index 0000000000..e20ac827e7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/9.ref
@@ -0,0 +1,2 @@
+Invalid( )
+ERROR: Expected 'version', but got '?'.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/9.xml b/tests/auto/corelib/xml/qxmlstream/data/9.xml
new file mode 100644
index 0000000000..40c36f040a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/9.xml
@@ -0,0 +1,2 @@
+<?xml ?>
+<error>broken xml declaration</error>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/books.ref b/tests/auto/corelib/xml/qxmlstream/data/books.ref
new file mode 100644
index 0000000000..23a6616d12
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/books.ref
@@ -0,0 +1,18 @@
+StartDocument( documentVersion="1.0" documentEncoding="ISO-8859-1" )
+StartElement( name="bookstore" qualifiedName="bookstore" )
+Characters( whitespace text="
+ " )
+StartElement( name="title" qualifiedName="title"
+ Attribute( name="lang" qualifiedName="lang" value="en" )
+ )
+Characters( text="Everyday Italian" )
+EndElement( name="title" qualifiedName="title" )
+Characters( whitespace text="
+ " )
+StartElement( name="author" qualifiedName="author" )
+Characters( text="Giada De Laurentiis" )
+EndElement( name="author" qualifiedName="author" )
+Characters( whitespace text="
+" )
+EndElement( name="bookstore" qualifiedName="bookstore" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/books.xml b/tests/auto/corelib/xml/qxmlstream/data/books.xml
new file mode 100644
index 0000000000..1ea700d6bd
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/books.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<bookstore>
+ <title lang="en">Everyday Italian</title>
+ <author>Giada De Laurentiis</author>
+</bookstore>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/colonInPI.ref b/tests/auto/corelib/xml/qxmlstream/data/colonInPI.ref
new file mode 100644
index 0000000000..61d0e782b7
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/colonInPI.ref
@@ -0,0 +1,7 @@
+StartDocument( )
+Comment( text=" When including the namespaces spec, the colon is disallowed in processing
+ instructions. W3C's XML test suite appears as of this writing to not have
+ a test for this. " )
+StartElement( name="documentElement" qualifiedName="documentElement" )
+Invalid( )
+ERROR: Expected ' ' or '?', but got ':'.
diff --git a/tests/auto/corelib/xml/qxmlstream/data/colonInPI.xml b/tests/auto/corelib/xml/qxmlstream/data/colonInPI.xml
new file mode 100644
index 0000000000..831618626a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/colonInPI.xml
@@ -0,0 +1,4 @@
+<!-- When including the namespaces spec, the colon is disallowed in processing
+ instructions. W3C's XML test suite appears as of this writing to not have
+ a test for this. -->
+<documentElement><?target:withColon data?></documentElement>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.ref b/tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.ref
new file mode 100644
index 0000000000..ea85e32c1d
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.ref
@@ -0,0 +1,7 @@
+StartDocument( )
+Comment( text=" Empty markup declaration in a doctype. " )
+DTD( text="
+<!DOCTYPE doc []>" dtdName="doc" )
+StartElement( name="doc" qualifiedName="doc" )
+EndElement( name="doc" qualifiedName="doc" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.xml b/tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.xml
new file mode 100644
index 0000000000..1c66c0c3bc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/doctypeEmptyMarkupDecl.xml
@@ -0,0 +1,3 @@
+<!-- Empty markup declaration in a doctype. -->
+<!DOCTYPE doc []>
+<doc></doc>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/mixedContent.ref b/tests/auto/corelib/xml/qxmlstream/data/mixedContent.ref
new file mode 100644
index 0000000000..5607fd9e50
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/mixedContent.ref
@@ -0,0 +1,207 @@
+StartDocument( )
+StartElement( name="documentElement" qualifiedName="documentElement" )
+Characters( whitespace text="
+ " )
+StartElement( name="comments" qualifiedName="comments" )
+Characters( whitespace text="
+ " )
+StartElement( name="c1" qualifiedName="c1" )
+Comment( text=" comment " )
+EndElement( name="c1" qualifiedName="c1" )
+Characters( whitespace text="
+ " )
+StartElement( name="c1" qualifiedName="c1" )
+Comment( text=" comment " )
+Characters( text="AFTER" )
+EndElement( name="c1" qualifiedName="c1" )
+Characters( whitespace text="
+ " )
+StartElement( name="c1" qualifiedName="c1" )
+Characters( text="BEFORE" )
+Comment( text=" comment " )
+EndElement( name="c1" qualifiedName="c1" )
+Characters( whitespace text="
+ " )
+StartElement( name="c1" qualifiedName="c1" )
+Characters( text="BEFORE" )
+Comment( text=" comment " )
+Characters( text="AFTER" )
+EndElement( name="c1" qualifiedName="c1" )
+Characters( whitespace text="
+ " )
+StartElement( name="c1" qualifiedName="c1" )
+Characters( text="BEFORE" )
+Comment( text=" comment1 " )
+Characters( text="SPLIT" )
+Comment( text=" comment 2" )
+Characters( text="AFTER" )
+EndElement( name="c1" qualifiedName="c1" )
+Characters( whitespace text="
+ " )
+StartElement( name="c1" qualifiedName="c1" )
+Comment( text=" comment1 " )
+Characters( text="SPLIT" )
+Comment( text=" comment 2" )
+Characters( text="AFTER" )
+EndElement( name="c1" qualifiedName="c1" )
+Characters( whitespace text="
+ " )
+StartElement( name="c1" qualifiedName="c1" )
+Characters( text="BEFORE" )
+Comment( text=" comment1 " )
+Characters( text="SPLIT" )
+Comment( text=" comment 2" )
+EndElement( name="c1" qualifiedName="c1" )
+Characters( whitespace text="
+ " )
+StartElement( name="c1" qualifiedName="c1" )
+Characters( text="BEFORE" )
+Comment( text=" comment1 " )
+Comment( text=" comment 2" )
+Characters( text="AFTER" )
+EndElement( name="c1" qualifiedName="c1" )
+Characters( whitespace text="
+ " )
+EndElement( name="comments" qualifiedName="comments" )
+Characters( whitespace text="
+ " )
+StartElement( name="PIs" qualifiedName="PIs" )
+Characters( whitespace text="
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Comment( text=" comment " )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Comment( text=" comment " )
+Characters( text="AFTER" )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Characters( text="BEFORE" )
+Comment( text=" comment " )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Characters( text="BEFORE" )
+Comment( text=" comment " )
+Characters( text="AFTER" )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Characters( text="BEFORE" )
+Comment( text=" comment1 " )
+Characters( text="SPLIT" )
+Comment( text=" comment 2" )
+Characters( text="AFTER" )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Comment( text=" comment1 " )
+Characters( text="SPLIT" )
+Comment( text=" comment 2" )
+Characters( text="AFTER" )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Characters( text="BEFORE" )
+Comment( text=" comment1 " )
+Characters( text="SPLIT" )
+Comment( text=" comment 2" )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Characters( text="BEFORE" )
+Comment( text=" comment1 " )
+Comment( text=" comment 2" )
+Characters( text="AFTER" )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+ " )
+EndElement( name="PIs" qualifiedName="PIs" )
+Characters( whitespace text="
+ " )
+StartElement( name="mixed" qualifiedName="mixed" )
+Characters( whitespace text="
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Comment( text=" comment " )
+ProcessingInstruction( processingInstructionTarget="PI" )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+ProcessingInstruction( processingInstructionTarget="PI" )
+Comment( text=" comment " )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+ProcessingInstruction( processingInstructionTarget="Pi" )
+Comment( text=" comment " )
+ProcessingInstruction( processingInstructionTarget="PI" )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Comment( text=" comment " )
+ProcessingInstruction( processingInstructionTarget="PI" )
+Comment( text=" comment " )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Characters( text="A" )
+Comment( text=" comment " )
+Characters( text="B" )
+ProcessingInstruction( processingInstructionTarget="PI" )
+Characters( text="C" )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Characters( text="A" )
+ProcessingInstruction( processingInstructionTarget="PI" )
+Characters( text="B" )
+Comment( text=" comment " )
+Characters( text="C" )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Characters( text="A" )
+ProcessingInstruction( processingInstructionTarget="Pi" )
+Characters( text="B" )
+Comment( text=" comment " )
+Characters( text="C" )
+ProcessingInstruction( processingInstructionTarget="PI" )
+Characters( text="D" )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+ " )
+StartElement( name="p1" qualifiedName="p1" )
+Characters( text="A" )
+Comment( text=" comment " )
+Characters( text="B" )
+ProcessingInstruction( processingInstructionTarget="PI" )
+Characters( text="C" )
+Comment( text=" comment " )
+Characters( text="D" )
+EndElement( name="p1" qualifiedName="p1" )
+Characters( whitespace text="
+ " )
+EndElement( name="mixed" qualifiedName="mixed" )
+Characters( whitespace text="
+" )
+EndElement( name="documentElement" qualifiedName="documentElement" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/mixedContent.xml b/tests/auto/corelib/xml/qxmlstream/data/mixedContent.xml
new file mode 100644
index 0000000000..b6f66245a8
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/mixedContent.xml
@@ -0,0 +1,35 @@
+<documentElement>
+ <comments>
+ <c1><!-- comment --></c1>
+ <c1><!-- comment -->AFTER</c1>
+ <c1>BEFORE<!-- comment --></c1>
+ <c1>BEFORE<!-- comment -->AFTER</c1>
+ <c1>BEFORE<!-- comment1 -->SPLIT<!-- comment 2-->AFTER</c1>
+ <c1><!-- comment1 -->SPLIT<!-- comment 2-->AFTER</c1>
+ <c1>BEFORE<!-- comment1 -->SPLIT<!-- comment 2--></c1>
+ <c1>BEFORE<!-- comment1 --><!-- comment 2-->AFTER</c1>
+ </comments>
+ <PIs>
+ <p1><!-- comment --></p1>
+ <p1><!-- comment -->AFTER</p1>
+ <p1>BEFORE<!-- comment --></p1>
+ <p1>BEFORE<!-- comment -->AFTER</p1>
+ <p1>BEFORE<!-- comment1 -->SPLIT<!-- comment 2-->AFTER</p1>
+ <p1><!-- comment1 -->SPLIT<!-- comment 2-->AFTER</p1>
+ <p1>BEFORE<!-- comment1 -->SPLIT<!-- comment 2--></p1>
+ <p1>BEFORE<!-- comment1 --><!-- comment 2-->AFTER</p1>
+ </PIs>
+ <mixed>
+ <p1><!-- comment --><?PI?></p1>
+ <p1><?PI?><!-- comment --></p1>
+
+ <p1><?Pi?><!-- comment --><?PI?></p1>
+ <p1><!-- comment --><?PI?><!-- comment --></p1>
+
+ <p1>A<!-- comment -->B<?PI?>C</p1>
+ <p1>A<?PI?>B<!-- comment -->C</p1>
+
+ <p1>A<?Pi?>B<!-- comment -->C<?PI?>D</p1>
+ <p1>A<!-- comment -->B<?PI?>C<!-- comment -->D</p1>
+ </mixed>
+</documentElement>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.ref b/tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.ref
new file mode 100644
index 0000000000..9734d22276
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.ref
@@ -0,0 +1,22 @@
+StartDocument( )
+DTD( text="<!DOCTYPE footype [
+ <!ATTLIST foo xmlns CDATA #FIXED "http://qt.nokia.com">
+ <!ATTLIST pre:bar xmlns:pre CDATA #FIXED "http://qt.nokia.com">
+]>" dtdName="footype" )
+StartElement( name="body" qualifiedName="body" )
+Characters( whitespace text="
+" )
+StartElement( name="foo" namespaceUri="http://qt.nokia.com" qualifiedName="foo"
+ NamespaceDeclaration( namespaceUri="http://qt.nokia.com" )
+ )
+EndElement( name="foo" namespaceUri="http://qt.nokia.com" qualifiedName="foo" )
+Characters( whitespace text="
+" )
+StartElement( name="bar" namespaceUri="http://qt.nokia.com" qualifiedName="pre:bar" prefix="pre"
+ NamespaceDeclaration( prefix="pre" namespaceUri="http://qt.nokia.com" )
+ )
+EndElement( name="bar" namespaceUri="http://qt.nokia.com" qualifiedName="pre:bar" )
+Characters( whitespace text="
+" )
+EndElement( name="body" qualifiedName="body" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.xml b/tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.xml
new file mode 100644
index 0000000000..6475dbcdca
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/namespaceCDATA.xml
@@ -0,0 +1,8 @@
+<!DOCTYPE footype [
+ <!ATTLIST foo xmlns CDATA #FIXED "http://qt.nokia.com">
+ <!ATTLIST pre:bar xmlns:pre CDATA #FIXED "http://qt.nokia.com">
+]>
+<body>
+<foo/>
+<pre:bar/>
+</body>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/namespaces b/tests/auto/corelib/xml/qxmlstream/data/namespaces
new file mode 100644
index 0000000000..7cc985b5a9
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/namespaces
@@ -0,0 +1,151 @@
+<TESTCASES PROFILE="Richard Tobin's XML Namespaces 1.0 test suite 14 Feb 2003">
+
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="001.xml" ID="rmt-ns10-001" TYPE="valid">
+Namespace name test: a perfectly good http URI
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="002.xml" ID="rmt-ns10-002" TYPE="valid">
+Namespace name test: a syntactically plausible URI with a
+fictitious scheme
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="003.xml" ID="rmt-ns10-003" TYPE="valid">
+Namespace name test: a perfectly good http URI with a fragment
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="004.xml" ID="rmt-ns10-004" TYPE="error">
+Namespace name test: a relative URI (deprecated)
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="005.xml" ID="rmt-ns10-005" TYPE="error">
+Namespace name test: a same-document relative URI (deprecated)
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="006.xml" ID="rmt-ns10-006" TYPE="error">
+Namespace name test: an http IRI that is not a URI
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="007.xml" ID="rmt-ns10-007" TYPE="valid">
+Namespace inequality test: different capitalization
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="008.xml" ID="rmt-ns10-008" TYPE="valid">
+Namespace inequality test: different escaping
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="009.xml" ID="rmt-ns10-009" TYPE="not-wf">
+Namespace equality test: plain repetition
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="010.xml" ID="rmt-ns10-010" TYPE="not-wf">
+Namespace equality test: use of character reference
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="011.xml" ID="rmt-ns10-011" TYPE="not-wf">
+Namespace equality test: use of entity reference
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="1" URI="012.xml" ID="rmt-ns10-012" TYPE="not-wf">
+Namespace inequality test: equal after attribute value normalization
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="3" URI="013.xml" ID="rmt-ns10-013" TYPE="not-wf">
+Bad QName syntax: multiple colons
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="3" URI="014.xml" ID="rmt-ns10-014" TYPE="not-wf">
+Bad QName syntax: colon at end
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="3" URI="015.xml" ID="rmt-ns10-015" TYPE="not-wf">
+Bad QName syntax: colon at start
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="016.xml" ID="rmt-ns10-016" TYPE="not-wf">
+Bad QName syntax: xmlns:
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="-" URI="017.xml" ID="rmt-ns10-017" TYPE="invalid">
+Simple legal case: no namespaces
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.2" URI="018.xml" ID="rmt-ns10-018" TYPE="invalid">
+Simple legal case: default namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="4" URI="019.xml" ID="rmt-ns10-019" TYPE="invalid">
+Simple legal case: prefixed element
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="4" URI="020.xml" ID="rmt-ns10-020" TYPE="invalid">
+Simple legal case: prefixed attribute
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.2" URI="021.xml" ID="rmt-ns10-021" TYPE="invalid">
+Simple legal case: default namespace and unbinding
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.2" URI="022.xml" ID="rmt-ns10-022" TYPE="invalid">
+Simple legal case: default namespace and rebinding
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="023.xml" ID="rmt-ns10-023" TYPE="not-wf">
+Illegal use of 1.1-style prefix unbinding in 1.0 document
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.1" URI="024.xml" ID="rmt-ns10-024" TYPE="invalid">
+Simple legal case: prefix rebinding
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="4" URI="025.xml" ID="rmt-ns10-025" TYPE="not-wf">
+Unbound element prefix
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="4" URI="026.xml" ID="rmt-ns10-026" TYPE="not-wf">
+Unbound attribute prefix
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="2" URI="027.xml" ID="rmt-ns10-027" TYPE="invalid">
+Reserved prefixes and namespaces: using the xml prefix undeclared
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="028.xml" ID="rmt-ns10-028" TYPE="invalid">
+Reserved prefixes and namespaces: declaring the xml prefix correctly
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="029.xml" ID="rmt-ns10-029" TYPE="not-wf">
+Reserved prefixes and namespaces: declaring the xml prefix incorrectly
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="030.xml" ID="rmt-ns10-030" TYPE="not-wf">
+Reserved prefixes and namespaces: binding another prefix
+to the xml namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="031.xml" ID="rmt-ns10-031" TYPE="not-wf">
+Reserved prefixes and namespaces: declaring the xmlns prefix
+with its correct URI (illegal)
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="032.xml" ID="rmt-ns10-032" TYPE="not-wf">
+Reserved prefixes and namespaces: declaring the xmlns prefix
+with an incorrect URI
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="033.xml" ID="rmt-ns10-033" TYPE="not-wf">
+Reserved prefixes and namespaces: binding another prefix
+to the xmlns namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE05" URI="034.xml" ID="rmt-ns10-034" TYPE="invalid">
+Reserved prefixes and namespaces: binding a reserved prefix
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="035.xml" ID="rmt-ns10-035" TYPE="not-wf">
+Attribute uniqueness: repeated identical attribute
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="036.xml" ID="rmt-ns10-036" TYPE="not-wf">
+Attribute uniqueness: repeated attribute with different prefixes
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="037.xml" ID="rmt-ns10-037" TYPE="invalid">
+Attribute uniqueness: different attributes with same local name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="038.xml" ID="rmt-ns10-038" TYPE="invalid">
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="039.xml" ID="rmt-ns10-039" TYPE="invalid">
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name, with default namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="040.xml" ID="rmt-ns10-040" TYPE="invalid">
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name, with default namespace and element in default namespace
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="5.3" URI="041.xml" ID="rmt-ns10-041" TYPE="invalid">
+Attribute uniqueness: prefixed and unprefixed attributes with same
+local name, element in same namespace as prefixed attribute
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="042.xml" ID="rmt-ns10-042" TYPE="not-wf">
+Colon in PI name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="043.xml" ID="rmt-ns10-043" TYPE="not-wf">
+Colon in entity name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="044.xml" ID="rmt-ns10-044" TYPE="not-wf">
+Colon in entity name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="045.xml" ID="rmt-ns10-045" TYPE="invalid">
+Colon in ID attribute name
+</TEST>
+<TEST RECOMMENDATION="NS1.0" SECTIONS="NE08" URI="046.xml" ID="rmt-ns10-046" TYPE="invalid">
+Colon in ID attribute name
+</TEST>
+
+</TESTCASES>
diff --git a/tests/auto/corelib/xml/qxmlstream/data/org_module.ref b/tests/auto/corelib/xml/qxmlstream/data/org_module.ref
new file mode 100644
index 0000000000..591172aae5
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/org_module.ref
@@ -0,0 +1,2780 @@
+StartDocument( documentVersion="1.0" documentEncoding="UTF-8" )
+DTD( text="
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
+ <!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
+]>" dtdName="svg" dtdPublicId="-//W3C//DTD SVG 1.0//EN" dtdSystemId="http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" )
+Comment( text=" Generated by dot version 2.6 (Sun Aug 28 13:14:52 UTC 2005)
+ For user: Bill Gates " )
+Comment( text=" Title: G Pages: 1 " )
+StartElement( name="svg" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="svg"
+ Attribute( name="width" qualifiedName="width" value="1519pt" )
+
+ Attribute( name="height" qualifiedName="height" value="870pt" )
+
+ Attribute( name="viewBox" qualifiedName="viewBox" value="0 0 1519 870" )
+
+ NamespaceDeclaration( namespaceUri="http://www.w3.org/2000/svg" )
+
+ NamespaceDeclaration( prefix="xlink" namespaceUri="http://www.w3.org/1999/xlink" )
+
+ NamespaceDeclaration( prefix="xlink" namespaceUri="http://www.w3.org/1999/xlink" )
+ )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph0" )
+
+ Attribute( name="class" qualifiedName="class" value="graph" )
+
+ Attribute( name="style" qualifiedName="style" value="font-family:Times-Roman;font-size:14.00;" )
+ )
+Characters( whitespace text="
+" )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="G" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="759" )
+
+ Attribute( name="y" qualifiedName="y" value="858" )
+ )
+Characters( text="main overview" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph2" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster1" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="308,825 1184,825 1184,709 308,709 308,825" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="746" )
+
+ Attribute( name="y" qualifiedName="y" value="726" )
+ )
+Characters( text="Qt Library" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph3" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster1_01" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1096,817 1176,817 1176,741 1096,741 1096,817" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1136" )
+
+ Attribute( name="y" qualifiedName="y" value="758" )
+ )
+Characters( text="QtCore.dll" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph4" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster1_02" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="316,817 1088,817 1088,741 316,741 316,817" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="702" )
+
+ Attribute( name="y" qualifiedName="y" value="758" )
+ )
+Characters( text="QtGui.dll" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph5" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster2" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="342,561 489,561 489,271 342,271 342,561" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="416" )
+
+ Attribute( name="y" qualifiedName="y" value="288" )
+ )
+Characters( text="about" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph6" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster2_01" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="360,379 473,379 473,303 360,303 360,379" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="417" )
+
+ Attribute( name="y" qualifiedName="y" value="320" )
+ )
+Characters( text="about_dialog.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph7" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster2_02" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="350,553 481,553 481,477 350,477 350,553" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="416" )
+
+ Attribute( name="y" qualifiedName="y" value="494" )
+ )
+Characters( text="ui_about_dialog.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph8" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster3" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="604,677 761,677 761,271 604,271 604,677" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="683" )
+
+ Attribute( name="y" qualifiedName="y" value="288" )
+ )
+Characters( text="editor" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph9" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster3_01" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="616,379 730,379 730,303 616,303 616,379" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="673" )
+
+ Attribute( name="y" qualifiedName="y" value="320" )
+ )
+Characters( text="docked_edits.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph10" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster3_02" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="619,553 731,553 731,477 619,477 619,553" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="675" )
+
+ Attribute( name="y" qualifiedName="y" value="494" )
+ )
+Characters( text="tabbed_edits.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph11" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster3_03" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="612,669 753,669 753,593 612,593 612,669" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="683" )
+
+ Attribute( name="y" qualifiedName="y" value="610" )
+ )
+Characters( text="editor_component.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph12" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster4" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:#c1b2ff;stroke:#c1b2ff;" )
+
+ Attribute( name="points" qualifiedName="points" value="13,825 300,825 300,445 13,445 13,825" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="157" )
+
+ Attribute( name="y" qualifiedName="y" value="462" )
+ )
+Characters( text="highlightner" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph13" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster4_01" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:#c1b2ff;stroke:#c1b2ff;" )
+
+ Attribute( name="points" qualifiedName="points" value="73,669 177,669 177,593 73,593 73,669" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="125" )
+
+ Attribute( name="y" qualifiedName="y" value="610" )
+ )
+Characters( text="hml_reader.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph14" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster4_02" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:#c1b2ff;stroke:#c1b2ff;" )
+
+ Attribute( name="points" qualifiedName="points" value="59,553 194,553 194,477 59,477 59,553" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="127" )
+
+ Attribute( name="y" qualifiedName="y" value="494" )
+ )
+Characters( text="language_builder.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph15" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster4_03" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:#c1b2ff;stroke:#c1b2ff;" )
+
+ Attribute( name="points" qualifiedName="points" value="42,817 113,817 113,741 42,741 42,817" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="78" )
+
+ Attribute( name="y" qualifiedName="y" value="758" )
+ )
+Characters( text="entity.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph16" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster4_04" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:#c1b2ff;stroke:#c1b2ff;" )
+
+ Attribute( name="points" qualifiedName="points" value="185,669 292,669 292,593 185,593 185,669" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="239" )
+
+ Attribute( name="y" qualifiedName="y" value="610" )
+ )
+Characters( text="highlightner.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph17" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster5" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="720,239 855,239 855,123 720,123 720,239" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="788" )
+
+ Attribute( name="y" qualifiedName="y" value="140" )
+ )
+Characters( text="mainwindow" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph18" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster5_01" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="728,231 847,231 847,155 728,155 728,231" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="788" )
+
+ Attribute( name="y" qualifiedName="y" value="172" )
+ )
+Characters( text="main_window.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph19" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster6" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1192,833 1417,833 1417,413 1192,413 1192,833" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1305" )
+
+ Attribute( name="y" qualifiedName="y" value="430" )
+ )
+Characters( text="menubar_toolbar" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph20" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster6_01" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1200,553 1280,553 1280,477 1200,477 1200,553" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1240" )
+
+ Attribute( name="y" qualifiedName="y" value="494" )
+ )
+Characters( text="actions.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph21" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster6_02" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:#c1b2ff;stroke:#c1b2ff;" )
+
+ Attribute( name="points" qualifiedName="points" value="1288,825 1409,825 1409,445 1288,445 1288,825" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1349" )
+
+ Attribute( name="y" qualifiedName="y" value="462" )
+ )
+Characters( text="icons" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph22" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster6_02_001" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:#c1b2ff;stroke:#c1b2ff;" )
+
+ Attribute( name="points" qualifiedName="points" value="1296,553 1401,553 1401,477 1296,477 1296,553" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1349" )
+
+ Attribute( name="y" qualifiedName="y" value="494" )
+ )
+Characters( text="icon_loader.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph23" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster6_02_002" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:#c1b2ff;stroke:#c1b2ff;" )
+
+ Attribute( name="points" qualifiedName="points" value="1298,817 1391,817 1391,741 1298,741 1298,817" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1345" )
+
+ Attribute( name="y" qualifiedName="y" value="758" )
+ )
+Characters( text="ics_entity.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph24" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster6_02_003" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:#c1b2ff;stroke:#c1b2ff;" )
+
+ Attribute( name="points" qualifiedName="points" value="1296,669 1393,669 1393,593 1296,593 1296,669" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1345" )
+
+ Attribute( name="y" qualifiedName="y" value="610" )
+ )
+Characters( text="ics_reader.hpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="graph25" )
+
+ Attribute( name="class" qualifiedName="class" value="cluster" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="cluster7" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1198,89 1268,89 1268,13 1198,13 1198,89" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1233" )
+
+ Attribute( name="y" qualifiedName="y" value="30" )
+ )
+Characters( text="main.cpp" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" QObject " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node3" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="QObject" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1168,773 1104,773 1104,809 1168,809 1168,773" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1136" )
+
+ Attribute( name="y" qualifiedName="y" value="796" )
+ )
+Characters( text="QObject" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" QAction " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node5" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="QAction" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="900,773 836,773 836,809 900,809 900,773" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="868" )
+
+ Attribute( name="y" qualifiedName="y" value="796" )
+ )
+Characters( text="QAction" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" QApplication " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node6" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="QApplication" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1080,773 990,773 990,809 1080,809 1080,773" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1035" )
+
+ Attribute( name="y" qualifiedName="y" value="796" )
+ )
+Characters( text="QApplication" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" QDialog " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node7" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="QDialog" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="388,773 324,773 324,809 388,809 388,773" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="356" )
+
+ Attribute( name="y" qualifiedName="y" value="796" )
+ )
+Characters( text="QDialog" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" QDockWidget " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node8" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="QDockWidget" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="502,773 406,773 406,809 502,809 502,773" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="454" )
+
+ Attribute( name="y" qualifiedName="y" value="796" )
+ )
+Characters( text="QDockWidget" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" QIcon " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node9" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="QIcon" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="972,773 918,773 918,809 972,809 972,773" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="945" )
+
+ Attribute( name="y" qualifiedName="y" value="796" )
+ )
+Characters( text="QIcon" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" QMainWindow " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node10" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="QMainWindow" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="818,773 716,773 716,809 818,809 818,773" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="767" )
+
+ Attribute( name="y" qualifiedName="y" value="796" )
+ )
+Characters( text="QMainWindow" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" QTabWidget " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node11" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="QTabWidget" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="606,773 520,773 520,809 606,809 606,773" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="563" )
+
+ Attribute( name="y" qualifiedName="y" value="796" )
+ )
+Characters( text="QTabWidget" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" QTextEdit " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node12" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="QTextEdit" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="698,773 624,773 624,809 698,809 698,773" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="661" )
+
+ Attribute( name="y" qualifiedName="y" value="796" )
+ )
+Characters( text="QTextEdit" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" AboutDialog " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node15" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="AboutDialog" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="460,335 372,335 372,371 460,371 460,335" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="416" )
+
+ Attribute( name="y" qualifiedName="y" value="358" )
+ )
+Characters( text="AboutDialog" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" AboutDialog&#45;&gt;QDialog " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge26" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="AboutDialog->QDialog" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M385,371C370,381 354,396 346,413 291,533 329,698 347,763" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="350,762 350,773 344,764 350,762" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="340" )
+
+ Attribute( name="y" qualifiedName="y" value="582" )
+ )
+Characters( text="inherits" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" Ui_AboutDialog " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node17" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="Ui_AboutDialog" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="471,509 361,509 361,545 471,545 471,509" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="416" )
+
+ Attribute( name="y" qualifiedName="y" value="532" )
+ )
+Characters( text="Ui::AboutDialog" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" AboutDialog&#45;&gt;Ui_AboutDialog " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge28" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="AboutDialog->Ui_AboutDialog" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M416,371C416,402 416,463 416,499" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="420,499 416,509 413,499 420,499" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="437" )
+
+ Attribute( name="y" qualifiedName="y" value="402" )
+ )
+Characters( text="inherits" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" DockedEdits " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node20" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="DockedEdits" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="714,335 626,335 626,371 714,371 714,335" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="670" )
+
+ Attribute( name="y" qualifiedName="y" value="358" )
+ )
+Characters( text="DockedEdits" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" DockedEdits&#45;&gt;QDockWidget " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge30" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="DockedEdits->QDockWidget" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M652,371C641,383 626,398 615,413 531,531 479,697 462,763" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="465,764 459,773 459,762 465,764" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="552" )
+
+ Attribute( name="y" qualifiedName="y" value="582" )
+ )
+Characters( text="inherits" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" TabbedEdits " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node22" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="TabbedEdits" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="713,509 627,509 627,545 713,545 713,509" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="670" )
+
+ Attribute( name="y" qualifiedName="y" value="532" )
+ )
+Characters( text="TabbedEdits" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" DockedEdits&#45;&gt;TabbedEdits " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge32" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="DockedEdits->TabbedEdits" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M670,371C670,402 670,463 670,499" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="674,499 670,509 667,499 674,499" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="683" )
+
+ Attribute( name="y" qualifiedName="y" value="402" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" TabbedEdits&#45;&gt;QTabWidget " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge34" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="TabbedEdits->QTabWidget" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M627,543C605,554 580,570 567,593 537,647 547,723 556,763" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="559,763 558,773 553,764 559,763" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="591" )
+
+ Attribute( name="y" qualifiedName="y" value="648" )
+ )
+Characters( text="inherits" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" EditorComponent " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node24" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="EditorComponent" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="738,625 622,625 622,661 738,661 738,625" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="680" )
+
+ Attribute( name="y" qualifiedName="y" value="648" )
+ )
+Characters( text="EditorComponent" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" TabbedEdits&#45;&gt;EditorComponent " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge36" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="TabbedEdits->EditorComponent" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M672,545C673,564 675,593 677,615" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="680,615 678,625 674,615 680,615" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="689" )
+
+ Attribute( name="y" qualifiedName="y" value="582" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" EditorComponent&#45;&gt;QTextEdit " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge38" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="EditorComponent->QTextEdit" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M678,661C674,687 668,733 664,763" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="667,763 663,773 661,763 667,763" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="697" )
+
+ Attribute( name="y" qualifiedName="y" value="698" )
+ )
+Characters( text="inherits" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" HmlReader " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node27" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="HmlReader" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="166,625 86,625 86,661 166,661 166,625" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="126" )
+
+ Attribute( name="y" qualifiedName="y" value="648" )
+ )
+Characters( text="HmlReader" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" HmlReader&#45;&gt;QObject " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge40" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="HmlReader->QObject" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M150,661C159,667 170,673 181,677 289,713 322,695 434,701 453,702 1077,700 1092,709 1111,721 1123,744 1129,763" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1132,762 1132,773 1126,764 1132,762" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="455" )
+
+ Attribute( name="y" qualifiedName="y" value="698" )
+ )
+Characters( text="inherits" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" Entity " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node31" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="Entity" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="104,773 50,773 50,809 104,809 104,773" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="77" )
+
+ Attribute( name="y" qualifiedName="y" value="796" )
+ )
+Characters( text="Entity" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" HmlReader&#45;&gt;Entity " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge42" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="HmlReader->Entity" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M117,661C113,669 109,677 106,685 97,711 88,741 83,763" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="86,764 81,773 80,763 86,764" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="122" )
+
+ Attribute( name="y" qualifiedName="y" value="698" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" LanguageBuilder " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node29" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="LanguageBuilder" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="182,509 70,509 70,545 182,545 182,509" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="126" )
+
+ Attribute( name="y" qualifiedName="y" value="532" )
+ )
+Characters( text="LanguageBuilder" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" LanguageBuilder&#45;&gt;HmlReader " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge44" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="LanguageBuilder->HmlReader" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M126,545C126,564 126,593 126,615" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="130,615 126,625 123,615 130,615" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="139" )
+
+ Attribute( name="y" qualifiedName="y" value="582" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" LanguageBuilder&#45;&gt;Entity " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge46" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="LanguageBuilder->Entity" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M91,545C73,556 53,572 43,593 16,650 44,724 63,764" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="66,762 67,773 60,765 66,762" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="59" )
+
+ Attribute( name="y" qualifiedName="y" value="648" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" Highlightner " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node33" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="Highlightner" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="281,625 195,625 195,661 281,661 281,625" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="238" )
+
+ Attribute( name="y" qualifiedName="y" value="648" )
+ )
+Characters( text="Highlightner" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" LanguageBuilder&#45;&gt;Highlightner " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge48" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="LanguageBuilder->Highlightner" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M143,545C162,565 192,596 213,618" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="215,615 220,625 210,620 215,615" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="202" )
+
+ Attribute( name="y" qualifiedName="y" value="582" )
+ )
+Characters( text="creates" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" Highlightner&#45;&gt;QObject " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge50" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="Highlightner->QObject" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M281,651C353,665 502,691 629,701 642,703 1082,703 1092,709 1111,721 1123,744 1129,763" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1132,762 1132,773 1126,764 1132,762" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="650" )
+
+ Attribute( name="y" qualifiedName="y" value="698" )
+ )
+Characters( text="inherits" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" MainWindow " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node36" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="MainWindow" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="834,187 740,187 740,223 834,223 834,187" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="787" )
+
+ Attribute( name="y" qualifiedName="y" value="210" )
+ )
+Characters( text="MainWindow" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" MainWindow&#45;&gt;QMainWindow " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge52" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="MainWindow->QMainWindow" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M787,223C787,251 787,307 787,353 787,353 787,353 787,643 787,686 779,733 773,763" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="776,764 771,773 770,763 776,764" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="808" )
+
+ Attribute( name="y" qualifiedName="y" value="532" )
+ )
+Characters( text="inherits" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" MainWindow&#45;&gt;AboutDialog " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge58" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="MainWindow->AboutDialog" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M740,223C705,236 655,254 612,271 563,290 507,314 467,331" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="469,334 458,335 466,328 469,334" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="694" )
+
+ Attribute( name="y" qualifiedName="y" value="260" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" MainWindow&#45;&gt;DockedEdits " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge54" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="MainWindow->DockedEdits" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M769,223C762,231 754,239 747,247 726,273 703,305 688,327" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="691,329 682,335 685,325 691,329" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="763" )
+
+ Attribute( name="y" qualifiedName="y" value="260" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" Actions " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node39" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="Actions" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1268,509 1208,509 1208,545 1268,545 1268,509" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1238" )
+
+ Attribute( name="y" qualifiedName="y" value="532" )
+ )
+Characters( text="Actions" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" MainWindow&#45;&gt;Actions " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge56" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="MainWindow->Actions" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M812,223C888,278 1118,441 1205,503" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1207,500 1213,509 1203,506 1207,500" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1042" )
+
+ Attribute( name="y" qualifiedName="y" value="358" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" Actions&#45;&gt;QObject " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge60" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="Actions->QObject" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M1212,545C1197,557 1179,574 1169,593 1141,648 1136,723 1135,763" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1139,763 1135,773 1132,763 1139,763" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1193" )
+
+ Attribute( name="y" qualifiedName="y" value="648" )
+ )
+Characters( text="inherits" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" Actions&#45;&gt;QAction " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge62" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="Actions->QAction" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M1208,537C1145,558 998,616 909,709 894,725 884,746 877,763" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="880,764 874,773 874,762 880,764" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1089" )
+
+ Attribute( name="y" qualifiedName="y" value="648" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" IconLoader " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node42" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="IconLoader" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1384,509 1304,509 1304,545 1384,545 1384,509" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1344" )
+
+ Attribute( name="y" qualifiedName="y" value="532" )
+ )
+Characters( text="IconLoader" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" IconLoader&#45;&gt;QObject " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge64" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="IconLoader->QObject" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M1364,545C1376,557 1391,575 1397,593 1410,629 1412,643 1397,677 1378,721 1340,696 1294,709 1250,723 1203,749 1172,768" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1173,771 1163,773 1170,765 1173,771" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1430" )
+
+ Attribute( name="y" qualifiedName="y" value="648" )
+ )
+Characters( text="inherits" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" IconLoader&#45;&gt;QIcon " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge66" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="IconLoader->QIcon" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M1319,545C1303,557 1282,575 1266,593 1238,627 1251,654 1214,677 1127,734 1065,647 981,709 964,722 955,745 950,763" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="953,764 948,773 947,763 953,764" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1282" )
+
+ Attribute( name="y" qualifiedName="y" value="648" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" IcsReader " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node46" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="IcsReader" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1377,625 1305,625 1305,661 1377,661 1377,625" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1341" )
+
+ Attribute( name="y" qualifiedName="y" value="648" )
+ )
+Characters( text="IcsReader" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" IconLoader&#45;&gt;IcsReader " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge68" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="IconLoader->IcsReader" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M1344,545C1343,564 1342,593 1342,615" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1346,615 1342,625 1339,615 1346,615" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1357" )
+
+ Attribute( name="y" qualifiedName="y" value="582" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" IcsEntity " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node44" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="IcsEntity" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1374,773 1308,773 1308,809 1374,809 1374,773" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1341" )
+
+ Attribute( name="y" qualifiedName="y" value="796" )
+ )
+Characters( text="IcsEntity" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" IcsReader&#45;&gt;QObject " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge70" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="IcsReader->QObject" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M1316,661C1279,688 1210,738 1169,767" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1171,770 1161,773 1167,764 1171,770" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1303" )
+
+ Attribute( name="y" qualifiedName="y" value="698" )
+ )
+Characters( text="inherits" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" IcsReader&#45;&gt;IcsEntity " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge72" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="IcsReader->IcsEntity" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M1341,661C1341,687 1341,732 1341,763" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1345,763 1341,773 1338,763 1345,763" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1354" )
+
+ Attribute( name="y" qualifiedName="y" value="698" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" main " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="node48" )
+
+ Attribute( name="class" qualifiedName="class" value="node" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="main" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1260,45 1206,45 1206,81 1260,81 1260,45" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1233" )
+
+ Attribute( name="y" qualifiedName="y" value="68" )
+ )
+Characters( text="main" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" main&#45;&gt;QApplication " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge74" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="main->QApplication" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M1260,65C1326,73 1488,102 1488,205 1488,205 1488,205 1488,643 1488,702 1429,693 1371,701 1341,706 1120,695 1092,709 1071,721 1055,745 1046,764" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="1049,765 1042,773 1043,762 1049,765" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1501" )
+
+ Attribute( name="y" qualifiedName="y" value="402" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+Comment( text=" main&#45;&gt;MainWindow " )
+Characters( whitespace text="
+" )
+StartElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g"
+ Attribute( name="id" qualifiedName="id" value="edge76" )
+
+ Attribute( name="class" qualifiedName="class" value="edge" )
+ )
+StartElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( text="main->MainWindow" )
+EndElement( name="title" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="title" )
+Characters( whitespace text="
+" )
+StartElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path"
+ Attribute( name="style" qualifiedName="style" value="fill:none;stroke:black;" )
+
+ Attribute( name="d" qualifiedName="d" value="M1206,72C1134,94 940,156 844,187" )
+ )
+EndElement( name="path" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="path" )
+Characters( whitespace text="
+" )
+StartElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon"
+ Attribute( name="style" qualifiedName="style" value="fill:black;stroke:black;" )
+
+ Attribute( name="points" qualifiedName="points" value="845,190 834,190 843,184 845,190" )
+ )
+EndElement( name="polygon" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="polygon" )
+Characters( whitespace text="
+" )
+StartElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text"
+ Attribute( name="text-anchor" qualifiedName="text-anchor" value="middle" )
+
+ Attribute( name="x" qualifiedName="x" value="1127" )
+
+ Attribute( name="y" qualifiedName="y" value="112" )
+ )
+Characters( text="uses" )
+EndElement( name="text" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="text" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+EndElement( name="g" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="g" )
+Characters( whitespace text="
+" )
+EndElement( name="svg" namespaceUri="http://www.w3.org/2000/svg" qualifiedName="svg" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/org_module.xml b/tests/auto/corelib/xml/qxmlstream/data/org_module.xml
new file mode 100644
index 0000000000..44c90c9528
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/org_module.xml
@@ -0,0 +1,389 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
+ <!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
+]>
+<!-- Generated by dot version 2.6 (Sun Aug 28 13:14:52 UTC 2005)
+ For user: Bill Gates -->
+<!-- Title: G Pages: 1 -->
+<svg width="1519pt" height="870pt"
+ viewBox = "0 0 1519 870"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" style="font-family:Times-Roman;font-size:14.00;">
+<title>G</title>
+<text text-anchor="middle" x="759" y="858">main overview</text>
+<g id="graph2" class="cluster"><title>cluster1</title>
+<polygon style="fill:none;stroke:black;" points="308,825 1184,825 1184,709 308,709 308,825"/>
+<text text-anchor="middle" x="746" y="726">Qt Library</text>
+</g>
+<g id="graph3" class="cluster"><title>cluster1_01</title>
+<polygon style="fill:none;stroke:black;" points="1096,817 1176,817 1176,741 1096,741 1096,817"/>
+<text text-anchor="middle" x="1136" y="758">QtCore.dll</text>
+</g>
+<g id="graph4" class="cluster"><title>cluster1_02</title>
+<polygon style="fill:none;stroke:black;" points="316,817 1088,817 1088,741 316,741 316,817"/>
+<text text-anchor="middle" x="702" y="758">QtGui.dll</text>
+</g>
+<g id="graph5" class="cluster"><title>cluster2</title>
+<polygon style="fill:none;stroke:black;" points="342,561 489,561 489,271 342,271 342,561"/>
+<text text-anchor="middle" x="416" y="288">about</text>
+</g>
+<g id="graph6" class="cluster"><title>cluster2_01</title>
+<polygon style="fill:none;stroke:black;" points="360,379 473,379 473,303 360,303 360,379"/>
+<text text-anchor="middle" x="417" y="320">about_dialog.hpp</text>
+</g>
+<g id="graph7" class="cluster"><title>cluster2_02</title>
+<polygon style="fill:none;stroke:black;" points="350,553 481,553 481,477 350,477 350,553"/>
+<text text-anchor="middle" x="416" y="494">ui_about_dialog.hpp</text>
+</g>
+<g id="graph8" class="cluster"><title>cluster3</title>
+<polygon style="fill:none;stroke:black;" points="604,677 761,677 761,271 604,271 604,677"/>
+<text text-anchor="middle" x="683" y="288">editor</text>
+</g>
+<g id="graph9" class="cluster"><title>cluster3_01</title>
+<polygon style="fill:none;stroke:black;" points="616,379 730,379 730,303 616,303 616,379"/>
+<text text-anchor="middle" x="673" y="320">docked_edits.hpp</text>
+</g>
+<g id="graph10" class="cluster"><title>cluster3_02</title>
+<polygon style="fill:none;stroke:black;" points="619,553 731,553 731,477 619,477 619,553"/>
+<text text-anchor="middle" x="675" y="494">tabbed_edits.hpp</text>
+</g>
+<g id="graph11" class="cluster"><title>cluster3_03</title>
+<polygon style="fill:none;stroke:black;" points="612,669 753,669 753,593 612,593 612,669"/>
+<text text-anchor="middle" x="683" y="610">editor_component.hpp</text>
+</g>
+<g id="graph12" class="cluster"><title>cluster4</title>
+<polygon style="fill:#c1b2ff;stroke:#c1b2ff;" points="13,825 300,825 300,445 13,445 13,825"/>
+<text text-anchor="middle" x="157" y="462">highlightner</text>
+</g>
+<g id="graph13" class="cluster"><title>cluster4_01</title>
+<polygon style="fill:#c1b2ff;stroke:#c1b2ff;" points="73,669 177,669 177,593 73,593 73,669"/>
+<text text-anchor="middle" x="125" y="610">hml_reader.hpp</text>
+</g>
+<g id="graph14" class="cluster"><title>cluster4_02</title>
+<polygon style="fill:#c1b2ff;stroke:#c1b2ff;" points="59,553 194,553 194,477 59,477 59,553"/>
+<text text-anchor="middle" x="127" y="494">language_builder.hpp</text>
+</g>
+<g id="graph15" class="cluster"><title>cluster4_03</title>
+<polygon style="fill:#c1b2ff;stroke:#c1b2ff;" points="42,817 113,817 113,741 42,741 42,817"/>
+<text text-anchor="middle" x="78" y="758">entity.hpp</text>
+</g>
+<g id="graph16" class="cluster"><title>cluster4_04</title>
+<polygon style="fill:#c1b2ff;stroke:#c1b2ff;" points="185,669 292,669 292,593 185,593 185,669"/>
+<text text-anchor="middle" x="239" y="610">highlightner.hpp</text>
+</g>
+<g id="graph17" class="cluster"><title>cluster5</title>
+<polygon style="fill:none;stroke:black;" points="720,239 855,239 855,123 720,123 720,239"/>
+<text text-anchor="middle" x="788" y="140">mainwindow</text>
+</g>
+<g id="graph18" class="cluster"><title>cluster5_01</title>
+<polygon style="fill:none;stroke:black;" points="728,231 847,231 847,155 728,155 728,231"/>
+<text text-anchor="middle" x="788" y="172">main_window.hpp</text>
+</g>
+<g id="graph19" class="cluster"><title>cluster6</title>
+<polygon style="fill:none;stroke:black;" points="1192,833 1417,833 1417,413 1192,413 1192,833"/>
+<text text-anchor="middle" x="1305" y="430">menubar_toolbar</text>
+</g>
+<g id="graph20" class="cluster"><title>cluster6_01</title>
+<polygon style="fill:none;stroke:black;" points="1200,553 1280,553 1280,477 1200,477 1200,553"/>
+<text text-anchor="middle" x="1240" y="494">actions.hpp</text>
+</g>
+<g id="graph21" class="cluster"><title>cluster6_02</title>
+<polygon style="fill:#c1b2ff;stroke:#c1b2ff;" points="1288,825 1409,825 1409,445 1288,445 1288,825"/>
+<text text-anchor="middle" x="1349" y="462">icons</text>
+</g>
+<g id="graph22" class="cluster"><title>cluster6_02_001</title>
+<polygon style="fill:#c1b2ff;stroke:#c1b2ff;" points="1296,553 1401,553 1401,477 1296,477 1296,553"/>
+<text text-anchor="middle" x="1349" y="494">icon_loader.hpp</text>
+</g>
+<g id="graph23" class="cluster"><title>cluster6_02_002</title>
+<polygon style="fill:#c1b2ff;stroke:#c1b2ff;" points="1298,817 1391,817 1391,741 1298,741 1298,817"/>
+<text text-anchor="middle" x="1345" y="758">ics_entity.hpp</text>
+</g>
+<g id="graph24" class="cluster"><title>cluster6_02_003</title>
+<polygon style="fill:#c1b2ff;stroke:#c1b2ff;" points="1296,669 1393,669 1393,593 1296,593 1296,669"/>
+<text text-anchor="middle" x="1345" y="610">ics_reader.hpp</text>
+</g>
+<g id="graph25" class="cluster"><title>cluster7</title>
+<polygon style="fill:none;stroke:black;" points="1198,89 1268,89 1268,13 1198,13 1198,89"/>
+<text text-anchor="middle" x="1233" y="30">main.cpp</text>
+</g>
+<!-- QObject -->
+<g id="node3" class="node"><title>QObject</title>
+<polygon style="fill:none;stroke:black;" points="1168,773 1104,773 1104,809 1168,809 1168,773"/>
+<text text-anchor="middle" x="1136" y="796">QObject</text>
+</g>
+<!-- QAction -->
+<g id="node5" class="node"><title>QAction</title>
+<polygon style="fill:none;stroke:black;" points="900,773 836,773 836,809 900,809 900,773"/>
+<text text-anchor="middle" x="868" y="796">QAction</text>
+</g>
+<!-- QApplication -->
+<g id="node6" class="node"><title>QApplication</title>
+<polygon style="fill:none;stroke:black;" points="1080,773 990,773 990,809 1080,809 1080,773"/>
+<text text-anchor="middle" x="1035" y="796">QApplication</text>
+</g>
+<!-- QDialog -->
+<g id="node7" class="node"><title>QDialog</title>
+<polygon style="fill:none;stroke:black;" points="388,773 324,773 324,809 388,809 388,773"/>
+<text text-anchor="middle" x="356" y="796">QDialog</text>
+</g>
+<!-- QDockWidget -->
+<g id="node8" class="node"><title>QDockWidget</title>
+<polygon style="fill:none;stroke:black;" points="502,773 406,773 406,809 502,809 502,773"/>
+<text text-anchor="middle" x="454" y="796">QDockWidget</text>
+</g>
+<!-- QIcon -->
+<g id="node9" class="node"><title>QIcon</title>
+<polygon style="fill:none;stroke:black;" points="972,773 918,773 918,809 972,809 972,773"/>
+<text text-anchor="middle" x="945" y="796">QIcon</text>
+</g>
+<!-- QMainWindow -->
+<g id="node10" class="node"><title>QMainWindow</title>
+<polygon style="fill:none;stroke:black;" points="818,773 716,773 716,809 818,809 818,773"/>
+<text text-anchor="middle" x="767" y="796">QMainWindow</text>
+</g>
+<!-- QTabWidget -->
+<g id="node11" class="node"><title>QTabWidget</title>
+<polygon style="fill:none;stroke:black;" points="606,773 520,773 520,809 606,809 606,773"/>
+<text text-anchor="middle" x="563" y="796">QTabWidget</text>
+</g>
+<!-- QTextEdit -->
+<g id="node12" class="node"><title>QTextEdit</title>
+<polygon style="fill:none;stroke:black;" points="698,773 624,773 624,809 698,809 698,773"/>
+<text text-anchor="middle" x="661" y="796">QTextEdit</text>
+</g>
+<!-- AboutDialog -->
+<g id="node15" class="node"><title>AboutDialog</title>
+<polygon style="fill:none;stroke:black;" points="460,335 372,335 372,371 460,371 460,335"/>
+<text text-anchor="middle" x="416" y="358">AboutDialog</text>
+</g>
+<!-- AboutDialog&#45;&gt;QDialog -->
+<g id="edge26" class="edge"><title>AboutDialog&#45;&gt;QDialog</title>
+<path style="fill:none;stroke:black;" d="M385,371C370,381 354,396 346,413 291,533 329,698 347,763"/>
+<polygon style="fill:black;stroke:black;" points="350,762 350,773 344,764 350,762"/>
+<text text-anchor="middle" x="340" y="582">inherits</text>
+</g>
+<!-- Ui_AboutDialog -->
+<g id="node17" class="node"><title>Ui_AboutDialog</title>
+<polygon style="fill:none;stroke:black;" points="471,509 361,509 361,545 471,545 471,509"/>
+<text text-anchor="middle" x="416" y="532">Ui::AboutDialog</text>
+</g>
+<!-- AboutDialog&#45;&gt;Ui_AboutDialog -->
+<g id="edge28" class="edge"><title>AboutDialog&#45;&gt;Ui_AboutDialog</title>
+<path style="fill:none;stroke:black;" d="M416,371C416,402 416,463 416,499"/>
+<polygon style="fill:black;stroke:black;" points="420,499 416,509 413,499 420,499"/>
+<text text-anchor="middle" x="437" y="402">inherits</text>
+</g>
+<!-- DockedEdits -->
+<g id="node20" class="node"><title>DockedEdits</title>
+<polygon style="fill:none;stroke:black;" points="714,335 626,335 626,371 714,371 714,335"/>
+<text text-anchor="middle" x="670" y="358">DockedEdits</text>
+</g>
+<!-- DockedEdits&#45;&gt;QDockWidget -->
+<g id="edge30" class="edge"><title>DockedEdits&#45;&gt;QDockWidget</title>
+<path style="fill:none;stroke:black;" d="M652,371C641,383 626,398 615,413 531,531 479,697 462,763"/>
+<polygon style="fill:black;stroke:black;" points="465,764 459,773 459,762 465,764"/>
+<text text-anchor="middle" x="552" y="582">inherits</text>
+</g>
+<!-- TabbedEdits -->
+<g id="node22" class="node"><title>TabbedEdits</title>
+<polygon style="fill:none;stroke:black;" points="713,509 627,509 627,545 713,545 713,509"/>
+<text text-anchor="middle" x="670" y="532">TabbedEdits</text>
+</g>
+<!-- DockedEdits&#45;&gt;TabbedEdits -->
+<g id="edge32" class="edge"><title>DockedEdits&#45;&gt;TabbedEdits</title>
+<path style="fill:none;stroke:black;" d="M670,371C670,402 670,463 670,499"/>
+<polygon style="fill:black;stroke:black;" points="674,499 670,509 667,499 674,499"/>
+<text text-anchor="middle" x="683" y="402">uses</text>
+</g>
+<!-- TabbedEdits&#45;&gt;QTabWidget -->
+<g id="edge34" class="edge"><title>TabbedEdits&#45;&gt;QTabWidget</title>
+<path style="fill:none;stroke:black;" d="M627,543C605,554 580,570 567,593 537,647 547,723 556,763"/>
+<polygon style="fill:black;stroke:black;" points="559,763 558,773 553,764 559,763"/>
+<text text-anchor="middle" x="591" y="648">inherits</text>
+</g>
+<!-- EditorComponent -->
+<g id="node24" class="node"><title>EditorComponent</title>
+<polygon style="fill:none;stroke:black;" points="738,625 622,625 622,661 738,661 738,625"/>
+<text text-anchor="middle" x="680" y="648">EditorComponent</text>
+</g>
+<!-- TabbedEdits&#45;&gt;EditorComponent -->
+<g id="edge36" class="edge"><title>TabbedEdits&#45;&gt;EditorComponent</title>
+<path style="fill:none;stroke:black;" d="M672,545C673,564 675,593 677,615"/>
+<polygon style="fill:black;stroke:black;" points="680,615 678,625 674,615 680,615"/>
+<text text-anchor="middle" x="689" y="582">uses</text>
+</g>
+<!-- EditorComponent&#45;&gt;QTextEdit -->
+<g id="edge38" class="edge"><title>EditorComponent&#45;&gt;QTextEdit</title>
+<path style="fill:none;stroke:black;" d="M678,661C674,687 668,733 664,763"/>
+<polygon style="fill:black;stroke:black;" points="667,763 663,773 661,763 667,763"/>
+<text text-anchor="middle" x="697" y="698">inherits</text>
+</g>
+<!-- HmlReader -->
+<g id="node27" class="node"><title>HmlReader</title>
+<polygon style="fill:none;stroke:black;" points="166,625 86,625 86,661 166,661 166,625"/>
+<text text-anchor="middle" x="126" y="648">HmlReader</text>
+</g>
+<!-- HmlReader&#45;&gt;QObject -->
+<g id="edge40" class="edge"><title>HmlReader&#45;&gt;QObject</title>
+<path style="fill:none;stroke:black;" d="M150,661C159,667 170,673 181,677 289,713 322,695 434,701 453,702 1077,700 1092,709 1111,721 1123,744 1129,763"/>
+<polygon style="fill:black;stroke:black;" points="1132,762 1132,773 1126,764 1132,762"/>
+<text text-anchor="middle" x="455" y="698">inherits</text>
+</g>
+<!-- Entity -->
+<g id="node31" class="node"><title>Entity</title>
+<polygon style="fill:none;stroke:black;" points="104,773 50,773 50,809 104,809 104,773"/>
+<text text-anchor="middle" x="77" y="796">Entity</text>
+</g>
+<!-- HmlReader&#45;&gt;Entity -->
+<g id="edge42" class="edge"><title>HmlReader&#45;&gt;Entity</title>
+<path style="fill:none;stroke:black;" d="M117,661C113,669 109,677 106,685 97,711 88,741 83,763"/>
+<polygon style="fill:black;stroke:black;" points="86,764 81,773 80,763 86,764"/>
+<text text-anchor="middle" x="122" y="698">uses</text>
+</g>
+<!-- LanguageBuilder -->
+<g id="node29" class="node"><title>LanguageBuilder</title>
+<polygon style="fill:none;stroke:black;" points="182,509 70,509 70,545 182,545 182,509"/>
+<text text-anchor="middle" x="126" y="532">LanguageBuilder</text>
+</g>
+<!-- LanguageBuilder&#45;&gt;HmlReader -->
+<g id="edge44" class="edge"><title>LanguageBuilder&#45;&gt;HmlReader</title>
+<path style="fill:none;stroke:black;" d="M126,545C126,564 126,593 126,615"/>
+<polygon style="fill:black;stroke:black;" points="130,615 126,625 123,615 130,615"/>
+<text text-anchor="middle" x="139" y="582">uses</text>
+</g>
+<!-- LanguageBuilder&#45;&gt;Entity -->
+<g id="edge46" class="edge"><title>LanguageBuilder&#45;&gt;Entity</title>
+<path style="fill:none;stroke:black;" d="M91,545C73,556 53,572 43,593 16,650 44,724 63,764"/>
+<polygon style="fill:black;stroke:black;" points="66,762 67,773 60,765 66,762"/>
+<text text-anchor="middle" x="59" y="648">uses</text>
+</g>
+<!-- Highlightner -->
+<g id="node33" class="node"><title>Highlightner</title>
+<polygon style="fill:none;stroke:black;" points="281,625 195,625 195,661 281,661 281,625"/>
+<text text-anchor="middle" x="238" y="648">Highlightner</text>
+</g>
+<!-- LanguageBuilder&#45;&gt;Highlightner -->
+<g id="edge48" class="edge"><title>LanguageBuilder&#45;&gt;Highlightner</title>
+<path style="fill:none;stroke:black;" d="M143,545C162,565 192,596 213,618"/>
+<polygon style="fill:black;stroke:black;" points="215,615 220,625 210,620 215,615"/>
+<text text-anchor="middle" x="202" y="582">creates</text>
+</g>
+<!-- Highlightner&#45;&gt;QObject -->
+<g id="edge50" class="edge"><title>Highlightner&#45;&gt;QObject</title>
+<path style="fill:none;stroke:black;" d="M281,651C353,665 502,691 629,701 642,703 1082,703 1092,709 1111,721 1123,744 1129,763"/>
+<polygon style="fill:black;stroke:black;" points="1132,762 1132,773 1126,764 1132,762"/>
+<text text-anchor="middle" x="650" y="698">inherits</text>
+</g>
+<!-- MainWindow -->
+<g id="node36" class="node"><title>MainWindow</title>
+<polygon style="fill:none;stroke:black;" points="834,187 740,187 740,223 834,223 834,187"/>
+<text text-anchor="middle" x="787" y="210">MainWindow</text>
+</g>
+<!-- MainWindow&#45;&gt;QMainWindow -->
+<g id="edge52" class="edge"><title>MainWindow&#45;&gt;QMainWindow</title>
+<path style="fill:none;stroke:black;" d="M787,223C787,251 787,307 787,353 787,353 787,353 787,643 787,686 779,733 773,763"/>
+<polygon style="fill:black;stroke:black;" points="776,764 771,773 770,763 776,764"/>
+<text text-anchor="middle" x="808" y="532">inherits</text>
+</g>
+<!-- MainWindow&#45;&gt;AboutDialog -->
+<g id="edge58" class="edge"><title>MainWindow&#45;&gt;AboutDialog</title>
+<path style="fill:none;stroke:black;" d="M740,223C705,236 655,254 612,271 563,290 507,314 467,331"/>
+<polygon style="fill:black;stroke:black;" points="469,334 458,335 466,328 469,334"/>
+<text text-anchor="middle" x="694" y="260">uses</text>
+</g>
+<!-- MainWindow&#45;&gt;DockedEdits -->
+<g id="edge54" class="edge"><title>MainWindow&#45;&gt;DockedEdits</title>
+<path style="fill:none;stroke:black;" d="M769,223C762,231 754,239 747,247 726,273 703,305 688,327"/>
+<polygon style="fill:black;stroke:black;" points="691,329 682,335 685,325 691,329"/>
+<text text-anchor="middle" x="763" y="260">uses</text>
+</g>
+<!-- Actions -->
+<g id="node39" class="node"><title>Actions</title>
+<polygon style="fill:none;stroke:black;" points="1268,509 1208,509 1208,545 1268,545 1268,509"/>
+<text text-anchor="middle" x="1238" y="532">Actions</text>
+</g>
+<!-- MainWindow&#45;&gt;Actions -->
+<g id="edge56" class="edge"><title>MainWindow&#45;&gt;Actions</title>
+<path style="fill:none;stroke:black;" d="M812,223C888,278 1118,441 1205,503"/>
+<polygon style="fill:black;stroke:black;" points="1207,500 1213,509 1203,506 1207,500"/>
+<text text-anchor="middle" x="1042" y="358">uses</text>
+</g>
+<!-- Actions&#45;&gt;QObject -->
+<g id="edge60" class="edge"><title>Actions&#45;&gt;QObject</title>
+<path style="fill:none;stroke:black;" d="M1212,545C1197,557 1179,574 1169,593 1141,648 1136,723 1135,763"/>
+<polygon style="fill:black;stroke:black;" points="1139,763 1135,773 1132,763 1139,763"/>
+<text text-anchor="middle" x="1193" y="648">inherits</text>
+</g>
+<!-- Actions&#45;&gt;QAction -->
+<g id="edge62" class="edge"><title>Actions&#45;&gt;QAction</title>
+<path style="fill:none;stroke:black;" d="M1208,537C1145,558 998,616 909,709 894,725 884,746 877,763"/>
+<polygon style="fill:black;stroke:black;" points="880,764 874,773 874,762 880,764"/>
+<text text-anchor="middle" x="1089" y="648">uses</text>
+</g>
+<!-- IconLoader -->
+<g id="node42" class="node"><title>IconLoader</title>
+<polygon style="fill:none;stroke:black;" points="1384,509 1304,509 1304,545 1384,545 1384,509"/>
+<text text-anchor="middle" x="1344" y="532">IconLoader</text>
+</g>
+<!-- IconLoader&#45;&gt;QObject -->
+<g id="edge64" class="edge"><title>IconLoader&#45;&gt;QObject</title>
+<path style="fill:none;stroke:black;" d="M1364,545C1376,557 1391,575 1397,593 1410,629 1412,643 1397,677 1378,721 1340,696 1294,709 1250,723 1203,749 1172,768"/>
+<polygon style="fill:black;stroke:black;" points="1173,771 1163,773 1170,765 1173,771"/>
+<text text-anchor="middle" x="1430" y="648">inherits</text>
+</g>
+<!-- IconLoader&#45;&gt;QIcon -->
+<g id="edge66" class="edge"><title>IconLoader&#45;&gt;QIcon</title>
+<path style="fill:none;stroke:black;" d="M1319,545C1303,557 1282,575 1266,593 1238,627 1251,654 1214,677 1127,734 1065,647 981,709 964,722 955,745 950,763"/>
+<polygon style="fill:black;stroke:black;" points="953,764 948,773 947,763 953,764"/>
+<text text-anchor="middle" x="1282" y="648">uses</text>
+</g>
+<!-- IcsReader -->
+<g id="node46" class="node"><title>IcsReader</title>
+<polygon style="fill:none;stroke:black;" points="1377,625 1305,625 1305,661 1377,661 1377,625"/>
+<text text-anchor="middle" x="1341" y="648">IcsReader</text>
+</g>
+<!-- IconLoader&#45;&gt;IcsReader -->
+<g id="edge68" class="edge"><title>IconLoader&#45;&gt;IcsReader</title>
+<path style="fill:none;stroke:black;" d="M1344,545C1343,564 1342,593 1342,615"/>
+<polygon style="fill:black;stroke:black;" points="1346,615 1342,625 1339,615 1346,615"/>
+<text text-anchor="middle" x="1357" y="582">uses</text>
+</g>
+<!-- IcsEntity -->
+<g id="node44" class="node"><title>IcsEntity</title>
+<polygon style="fill:none;stroke:black;" points="1374,773 1308,773 1308,809 1374,809 1374,773"/>
+<text text-anchor="middle" x="1341" y="796">IcsEntity</text>
+</g>
+<!-- IcsReader&#45;&gt;QObject -->
+<g id="edge70" class="edge"><title>IcsReader&#45;&gt;QObject</title>
+<path style="fill:none;stroke:black;" d="M1316,661C1279,688 1210,738 1169,767"/>
+<polygon style="fill:black;stroke:black;" points="1171,770 1161,773 1167,764 1171,770"/>
+<text text-anchor="middle" x="1303" y="698">inherits</text>
+</g>
+<!-- IcsReader&#45;&gt;IcsEntity -->
+<g id="edge72" class="edge"><title>IcsReader&#45;&gt;IcsEntity</title>
+<path style="fill:none;stroke:black;" d="M1341,661C1341,687 1341,732 1341,763"/>
+<polygon style="fill:black;stroke:black;" points="1345,763 1341,773 1338,763 1345,763"/>
+<text text-anchor="middle" x="1354" y="698">uses</text>
+</g>
+<!-- main -->
+<g id="node48" class="node"><title>main</title>
+<polygon style="fill:none;stroke:black;" points="1260,45 1206,45 1206,81 1260,81 1260,45"/>
+<text text-anchor="middle" x="1233" y="68">main</text>
+</g>
+<!-- main&#45;&gt;QApplication -->
+<g id="edge74" class="edge"><title>main&#45;&gt;QApplication</title>
+<path style="fill:none;stroke:black;" d="M1260,65C1326,73 1488,102 1488,205 1488,205 1488,205 1488,643 1488,702 1429,693 1371,701 1341,706 1120,695 1092,709 1071,721 1055,745 1046,764"/>
+<polygon style="fill:black;stroke:black;" points="1049,765 1042,773 1043,762 1049,765"/>
+<text text-anchor="middle" x="1501" y="402">uses</text>
+</g>
+<!-- main&#45;&gt;MainWindow -->
+<g id="edge76" class="edge"><title>main&#45;&gt;MainWindow</title>
+<path style="fill:none;stroke:black;" d="M1206,72C1134,94 940,156 844,187"/>
+<polygon style="fill:black;stroke:black;" points="845,190 834,190 843,184 845,190"/>
+<text text-anchor="middle" x="1127" y="112">uses</text>
+</g>
+</g>
+</svg>
+
diff --git a/tests/auto/corelib/xml/qxmlstream/data/spaceBracket.ref b/tests/auto/corelib/xml/qxmlstream/data/spaceBracket.ref
new file mode 100644
index 0000000000..fa332856e0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/spaceBracket.ref
@@ -0,0 +1,5 @@
+StartDocument( )
+StartElement( name="p" qualifiedName="p" )
+Characters( text=" ]" )
+EndElement( name="p" qualifiedName="p" )
+EndDocument( )
diff --git a/tests/auto/corelib/xml/qxmlstream/data/spaceBracket.xml b/tests/auto/corelib/xml/qxmlstream/data/spaceBracket.xml
new file mode 100644
index 0000000000..85b46e84b2
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/data/spaceBracket.xml
@@ -0,0 +1 @@
+<p> ]</p>
diff --git a/tests/auto/corelib/xml/qxmlstream/qc14n.h b/tests/auto/corelib/xml/qxmlstream/qc14n.h
new file mode 100644
index 0000000000..f7c17b5a7a
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/qc14n.h
@@ -0,0 +1,199 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+QT_FORWARD_DECLARE_CLASS(QIODevice)
+QT_FORWARD_DECLARE_CLASS(QString)
+
+#include <QtCore/QFlags>
+
+class QC14N
+{
+public:
+ static bool isEqual(QIODevice *const firstDocument,
+ QIODevice *const secondDocument,
+ QString *const message = 0);
+
+private:
+ static bool isDifferent(const QXmlStreamReader &r1,
+ const QXmlStreamReader &r2,
+ QString *const message);
+ static bool isAttributesEqual(const QXmlStreamReader &r1,
+ const QXmlStreamReader &r2,
+ QString *const message);
+};
+
+#include <QXmlStreamReader>
+
+/*! \internal
+
+ \a firstDocument and \a secondDocument must be pointers to opened devices.
+ */
+bool QC14N::isEqual(QIODevice *const firstDocument,
+ QIODevice *const secondDocument,
+ QString *const message)
+{
+ qDebug() << Q_FUNC_INFO;
+ if (!firstDocument)
+ qFatal("%s: A valid firstDocument QIODevice pointer must be supplied", Q_FUNC_INFO);
+ if (!secondDocument)
+ qFatal("%s: A valid secondDocument QIODevice pointer must be supplied", Q_FUNC_INFO);
+ if (!firstDocument->isReadable())
+ qFatal("%s: The firstDocument device must be readable.", Q_FUNC_INFO);
+ if (!secondDocument->isReadable())
+ qFatal("%s: The secondDocument device must be readable.", Q_FUNC_INFO);
+
+ QXmlStreamReader r1(firstDocument);
+ QXmlStreamReader r2(secondDocument);
+
+ while(!r1.atEnd())
+ {
+ if(r1.error())
+ {
+ if(message)
+ *message = r1.errorString();
+
+ return false;
+ }
+ else if(r2.error())
+ {
+ if(message)
+ *message = r1.errorString();
+
+ return false;
+ }
+ else
+ {
+ if(isDifferent(r1, r2, message))
+ return true;
+ }
+
+ r1.readNext();
+ r2.readNext();
+ }
+
+ if(!r2.atEnd())
+ {
+ if(message)
+ *message = QLatin1String("Reached the end of the first document, while there was still content left in the second");
+
+ return false;
+ }
+
+ /* And they lived happily ever after. */
+ return true;
+}
+
+/*! \internal
+ */
+bool QC14N::isAttributesEqual(const QXmlStreamReader &r1,
+ const QXmlStreamReader &r2,
+ QString *const message)
+{
+ Q_UNUSED(message);
+
+ const QXmlStreamAttributes &attrs1 = r1.attributes();
+ const QXmlStreamAttributes &attrs2 = r2.attributes();
+ const int len = attrs1.size();
+
+ if(len != attrs2.size())
+ return false;
+
+ for(int i = 0; i < len; ++i)
+ {
+ if(!attrs2.contains(attrs1.at(i)))
+ return false;
+ }
+
+ return true;
+}
+
+bool QC14N::isDifferent(const QXmlStreamReader &r1,
+ const QXmlStreamReader &r2,
+ QString *const message)
+{
+ // TODO error reporting can be a lot better here.
+ if(r1.tokenType() != r2.tokenType())
+ return false;
+
+ switch(r1.tokenType())
+ {
+ case QXmlStreamReader::NoToken:
+ /* Fallthrough. */
+ case QXmlStreamReader::StartDocument:
+ /* Fallthrough. */
+ case QXmlStreamReader::EndDocument:
+ /* Fallthrough. */
+ case QXmlStreamReader::DTD:
+ return true;
+ case QXmlStreamReader::Invalid:
+ return false;
+ case QXmlStreamReader::StartElement:
+ {
+ return r1.qualifiedName() == r2.qualifiedName()
+ /* Yes, the namespace test below should be redundant, but with it we
+ * trap namespace bugs in QXmlStreamReader, if any. */
+ && r1.namespaceUri() == r2.namespaceUri()
+ && isAttributesEqual(r1, r2, message);
+
+ }
+ case QXmlStreamReader::EndElement:
+ {
+ return r1.qualifiedName() == r2.qualifiedName()
+ && r1.namespaceUri() == r2.namespaceUri()
+ && r1.name() == r2.name();
+ }
+ case QXmlStreamReader::Characters:
+ /* Fallthrough. */
+ case QXmlStreamReader::Comment:
+ return r1.text() == r2.text();
+ case QXmlStreamReader::EntityReference:
+ case QXmlStreamReader::ProcessingInstruction:
+ {
+ return r1.processingInstructionTarget() == r2.processingInstructionTarget() &&
+ r2.processingInstructionData() == r2.processingInstructionData();
+
+ }
+ default:
+ qFatal("%s: Unknown tokenType: %d", Q_FUNC_INFO, static_cast<int>(r1.tokenType()));
+ return false;
+ }
+}
+
diff --git a/tests/auto/corelib/xml/qxmlstream/qxmlstream.pro b/tests/auto/corelib/xml/qxmlstream/qxmlstream.pro
new file mode 100644
index 0000000000..894801d8dc
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/qxmlstream.pro
@@ -0,0 +1,14 @@
+load(qttest_p4)
+SOURCES += tst_qxmlstream.cpp
+
+QT = core xml network
+
+
+wince*|symbian: {
+ addFiles.files = data XML-Test-Suite
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+ wince*:DEFINES += SRCDIR=\\\"\\\"
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
diff --git a/tests/auto/corelib/xml/qxmlstream/setupSuite.sh b/tests/auto/corelib/xml/qxmlstream/setupSuite.sh
new file mode 100755
index 0000000000..5d4947e5ae
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/setupSuite.sh
@@ -0,0 +1,61 @@
+#!/bin/sh
+#############################################################################
+##
+## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (qt-info@nokia.com)
+##
+## This file is the build configuration utility of the Qt Toolkit.
+##
+## $QT_BEGIN_LICENSE:LGPL$
+## GNU Lesser General Public License Usage
+## This file may be used under the terms of the GNU Lesser General Public
+## License version 2.1 as published by the Free Software Foundation and
+## appearing in the file LICENSE.LGPL included in the packaging of this
+## file. Please review the following information to ensure the GNU Lesser
+## General Public License version 2.1 requirements will be met:
+## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## In addition, as a special exception, Nokia gives you certain additional
+## rights. These rights are described in the Nokia Qt LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## GNU General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU General
+## Public License version 3.0 as published by the Free Software Foundation
+## and appearing in the file LICENSE.GPL included in the packaging of this
+## file. Please review the following information to ensure the GNU General
+## Public License version 3.0 requirements will be met:
+## http://www.gnu.org/copyleft/gpl.html.
+##
+## Other Usage
+## Alternatively, this file may be used in accordance with the terms and
+## conditions contained in a signed written agreement between you and Nokia.
+##
+##
+##
+##
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+#
+# Hello!
+#
+# You don't have to run this script unless you are actually updating the test suite.
+# For precaution, we therefore have this exit call.
+
+
+# CVS is retarded when it comes to reverting changes. Remove files it has moved.
+find XML-Test-Suite/ -name ".*.?.*" | xargs rm
+
+cd XML-Test-Suite
+
+export CVSROOT=":pserver:anonymous@dev.w3.org:/sources/public"
+cvs -q up -C
+
+p4 edit ...
+p4 revert `find -name "Entries"` # They only contain CVS timestamps.
+xmllint --valid --noent xmlconf/xmlconf.xml --output xmlconf/finalCatalog.xml
+p4 revert -a ...
diff --git a/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp b/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp
new file mode 100644
index 0000000000..0ddbe990a0
--- /dev/null
+++ b/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp
@@ -0,0 +1,1650 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QDirIterator>
+#include <QEventLoop>
+#include <QNetworkAccessManager>
+#include <QNetworkReply>
+#include <QNetworkRequest>
+#include <QtTest/QtTest>
+#include <QUrl>
+#include <QXmlDefaultHandler>
+#include <QXmlStreamReader>
+
+#include "qc14n.h"
+
+//TESTED_CLASS=QXmlStreamReader QXmlStreamWriter
+//TESTED_FILES=corelib/xml/stream/qxmlutils.cpp corelib/xml/stream/qxmlstream.cpp corelib/xml/stream/qxmlstream_p.h
+
+#ifdef Q_OS_SYMBIAN
+#define SRCDIR ""
+#endif
+
+Q_DECLARE_METATYPE(QXmlStreamReader::ReadElementTextBehaviour)
+
+static const char *const catalogFile = SRCDIR "XML-Test-Suite/xmlconf/finalCatalog.xml";
+static const int expectedRunCount = 1646;
+static const int expectedSkipCount = 532;
+
+static inline int best(int a, int b)
+{
+ if (a < 0)
+ return b;
+ if (b < 0)
+ return a;
+ return qMin(a, b);
+}
+
+static inline int best(int a, int b, int c)
+{
+ if (a < 0)
+ return best(b, c);
+ if (b < 0)
+ return best(a, c);
+ if (c < 0)
+ return best(a, b);
+ return qMin(qMin(a, b), c);
+}
+
+/**
+ * Opens @p filename and returns content produced as per
+ * xmlconf/xmltest/canonxml.html.
+ *
+ * @p docType is the DOCTYPE name that the returned output should
+ * have, if it doesn't already have one.
+ */
+static QByteArray makeCanonical(const QString &filename,
+ const QString &docType,
+ bool &hasError,
+ bool testIncremental = false)
+{
+ QFile file(filename);
+ file.open(QIODevice::ReadOnly);
+
+ QXmlStreamReader reader;
+
+ QByteArray buffer;
+ int bufferPos = 0;
+
+ if (testIncremental)
+ buffer = file.readAll();
+ else
+ reader.setDevice(&file);
+
+ QByteArray outarray;
+ QXmlStreamWriter writer(&outarray);
+
+ forever {
+ while (!reader.atEnd()) {
+ reader.readNext();
+ if (reader.isDTD()) {
+ if (!reader.notationDeclarations().isEmpty()) {
+ QString dtd;
+ QTextStream writeDtd(&dtd);
+
+ writeDtd << "<!DOCTYPE ";
+ writeDtd << docType;
+ writeDtd << " [";
+ writeDtd << endl;
+ QMap<QString, QXmlStreamNotationDeclaration> sortedNotationDeclarations;
+ foreach (QXmlStreamNotationDeclaration notation, reader.notationDeclarations())
+ sortedNotationDeclarations.insert(notation.name().toString(), notation);
+ foreach (QXmlStreamNotationDeclaration notation, sortedNotationDeclarations.values()) {
+ writeDtd << "<!NOTATION ";
+ writeDtd << notation.name().toString();
+ if (notation.publicId().isEmpty()) {
+ writeDtd << " SYSTEM \'";
+ writeDtd << notation.systemId().toString();
+ writeDtd << "\'";
+ } else {
+ writeDtd << " PUBLIC \'";
+ writeDtd << notation.publicId().toString();
+ writeDtd << "\'";
+ if (!notation.systemId().isEmpty() ) {
+ writeDtd << " \'";
+ writeDtd << notation.systemId().toString();
+ writeDtd << "\'";
+ }
+ }
+ writeDtd << ">";
+ writeDtd << endl;
+ }
+
+ writeDtd << "]>";
+ writeDtd << endl;
+ writer.writeDTD(dtd);
+ }
+ } else if (reader.isStartElement()) {
+ writer.writeStartElement(reader.namespaceUri().toString(), reader.name().toString());
+
+ QMap<QString, QXmlStreamAttribute> sortedAttributes;
+ foreach(QXmlStreamAttribute attribute, reader.attributes())
+ sortedAttributes.insert(attribute.name().toString(), attribute);
+ foreach(QXmlStreamAttribute attribute, sortedAttributes.values())
+ writer.writeAttribute(attribute);
+ writer.writeCharacters(QString()); // write empty string to avoid having empty xml tags
+ } else if (reader.isCharacters()) {
+ // make canonical
+
+ QString text = reader.text().toString();
+ int i = 0;
+ int p = 0;
+ while ((i = best(text.indexOf(QLatin1Char(10), p),
+ text.indexOf(QLatin1Char(13), p),
+ text.indexOf(QLatin1Char(9), p))) >= 0) {
+ writer.writeCharacters(text.mid(p, i - p));
+ writer.writeEntityReference(QString("#%1").arg(text.at(i).unicode()));
+ p = i + 1;
+ }
+ writer.writeCharacters(text.mid(p));
+ } else if (reader.isStartDocument() || reader.isEndDocument() || reader.isComment()){
+ // canonical does not want any of those
+ } else if (reader.isProcessingInstruction() && reader.processingInstructionData().isEmpty()) {
+ // for some reason canonical wants a space
+ writer.writeProcessingInstruction(reader.processingInstructionTarget().toString(), QLatin1String(""));
+ } else if (!reader.hasError()){
+ writer.writeCurrentToken(reader);
+ }
+ }
+ if (testIncremental && bufferPos < buffer.size()) {
+ reader.addData(QByteArray(buffer.data() + (bufferPos++), 1));
+ } else {
+ break;
+ }
+ }
+
+ if (reader.hasError()) {
+ hasError = true;
+ outarray += "ERROR:";
+ outarray += reader.errorString().toLatin1();
+ }
+ else
+ hasError = false;
+
+ return outarray;
+}
+
+/**
+ * @short Returns the lexical QName of the document element in
+ * @p document.
+ *
+ * It is assumed that @p document is a well-formed XML document.
+ */
+static QString documentElement(const QByteArray &document)
+{
+ QXmlStreamReader reader(document);
+
+ while(!reader.atEnd())
+ {
+ if(reader.isStartElement())
+ return reader.qualifiedName().toString();
+
+ reader.readNext();
+ }
+
+ qFatal("The input %s didn't contain an element", document.constData());
+ return QString();
+}
+
+/**
+ * @short Loads W3C's XML conformance test suite and runs it on QXmlStreamReader.
+ *
+ * Since this suite is fairly large, it runs the tests sequentially in order to not
+ * have them all loaded into memory at once. In this way, the maximum memory usage stays
+ * low, which means one can run valgrind on this test. However, the drawback is that
+ * QTestLib's usual error reporting and testing mechanisms are slightly bypassed.
+ *
+ * Part of this code is a manual, ad-hoc implementation of xml:base.
+ *
+ * @see <a href="http://www.w3.org/XML/Test/">Extensible
+ * Markup Language (XML) Conformance Test Suites</a>
+ */
+class TestSuiteHandler : public QXmlDefaultHandler
+{
+public:
+ /**
+ * The first string is the test ID, the second is
+ * a description of what went wrong.
+ */
+ typedef QPair<QString, QString> GeneralFailure;
+
+ /**
+ * The string is the test ID.
+ */
+ QStringList successes;
+
+ /**
+ * The first value is the baseline, while the se
+ */
+ class MissedBaseline
+ {
+ public:
+ MissedBaseline(const QString &aId,
+ const QByteArray &aExpected,
+ const QByteArray &aOutput) : id(aId),
+ expected(aExpected),
+ output(aOutput)
+ {
+ if (aId.isEmpty())
+ qFatal("%s: aId must not be an empty string", Q_FUNC_INFO);
+ }
+
+ QString id;
+ QByteArray expected;
+ QByteArray output;
+ };
+
+ QList<GeneralFailure> failures;
+ QList<MissedBaseline> missedBaselines;
+
+ /**
+ * The count of how many tests that were run.
+ */
+ int runCount;
+
+ int skipCount;
+
+ /**
+ * @p baseURI is the the URI of where the catalog file resides.
+ */
+ TestSuiteHandler(const QUrl &baseURI) : runCount(0),
+ skipCount(0)
+ {
+ if (!baseURI.isValid())
+ qFatal("%s: baseURI must be valid", Q_FUNC_INFO);
+ m_baseURI.push(baseURI);
+ }
+
+ virtual bool characters(const QString &chars)
+ {
+ m_ch = chars;
+ return true;
+ }
+
+ virtual bool startElement(const QString &,
+ const QString &,
+ const QString &,
+ const QXmlAttributes &atts)
+ {
+ m_atts.push(atts);
+ const int i = atts.index(QLatin1String("xml:base"));
+
+ if(i != -1)
+ m_baseURI.push(m_baseURI.top().resolved(atts.value(i)));
+
+ return true;
+ }
+
+ virtual bool endElement(const QString &,
+ const QString &localName,
+ const QString &)
+ {
+ if(localName == QLatin1String("TEST"))
+ {
+ /* We don't want tests for XML 1.1.0, in fact). */
+ if(m_atts.top().value(QString(), QLatin1String("VERSION")) == QLatin1String("1.1"))
+ {
+ ++skipCount;
+ m_atts.pop();
+ return true;
+ }
+
+ /* We don't want tests that conflict with the namespaces spec. Our parser is a
+ * namespace-aware parser. */
+ else if(m_atts.top().value(QString(), QLatin1String("NAMESPACE")) == QLatin1String("no"))
+ {
+ ++skipCount;
+ m_atts.pop();
+ return true;
+ }
+
+ const QString inputFilePath(m_baseURI.top().resolved(m_atts.top().value(QString(), QLatin1String("URI")))
+ .toLocalFile());
+ const QString id(m_atts.top().value(QString(), QLatin1String("ID")));
+ const QString type(m_atts.top().value(QString(), QLatin1String("TYPE")));
+
+ QString expectedFilePath;
+ const int index = m_atts.top().index(QString(), QLatin1String("OUTPUT"));
+
+ //qDebug() << "Running test case:" << id;
+
+ if(index != -1)
+ {
+ expectedFilePath = m_baseURI.top().resolved(m_atts.top().value(QString(),
+ QLatin1String("OUTPUT"))).toLocalFile();
+ }
+
+ /* testcases.dtd: 'No parser should accept a "not-wf" testcase
+ * unless it's a nonvalidating parser and the test contains
+ * external entities that the parser doesn't read.'
+ *
+ * We also let this apply to "valid", "invalid" and "error" tests, although
+ * I'm not fully sure this is correct. */
+ const QString ents(m_atts.top().value(QString(), QLatin1String("ENTITIES")));
+ m_atts.pop();
+
+ if(ents == QLatin1String("both") ||
+ ents == QLatin1String("general") ||
+ ents == QLatin1String("parameter"))
+ {
+ ++skipCount;
+ return true;
+ }
+
+ ++runCount;
+
+ QFile inputFile(inputFilePath);
+ if(!inputFile.open(QIODevice::ReadOnly))
+ {
+ failures.append(qMakePair(id, QString::fromLatin1("Failed to open input file %1").arg(inputFilePath)));
+ return true;
+ }
+
+ if(type == QLatin1String("not-wf"))
+ {
+ if(isWellformed(&inputFile, ParseSinglePass))
+ {
+ failures.append(qMakePair(id, QString::fromLatin1("Failed to flag %1 as not well-formed.")
+ .arg(inputFilePath)));
+
+ /* Exit, the incremental test will fail as well, no need to flood the output. */
+ return true;
+ }
+ else
+ successes.append(id);
+
+ if(isWellformed(&inputFile, ParseIncrementally))
+ {
+ failures.append(qMakePair(id, QString::fromLatin1("Failed to flag %1 as not well-formed with incremental parsing.")
+ .arg(inputFilePath)));
+ }
+ else
+ successes.append(id);
+
+ return true;
+ }
+
+ QXmlStreamReader reader(&inputFile);
+
+ /* See testcases.dtd which reads: 'Nonvalidating parsers
+ * must also accept "invalid" testcases, but validating ones must reject them.' */
+ if(type == QLatin1String("invalid") || type == QLatin1String("valid"))
+ {
+ QByteArray expected;
+ QString docType;
+
+ /* We only want to compare against a baseline when we have
+ * one. Some "invalid"-tests, for instance, doesn't have baselines. */
+ if(!expectedFilePath.isEmpty())
+ {
+ QFile expectedFile(expectedFilePath);
+
+ if(!expectedFile.open(QIODevice::ReadOnly))
+ {
+ failures.append(qMakePair(id, QString::fromLatin1("Failed to open baseline %1").arg(expectedFilePath)));
+ return true;
+ }
+
+ expected = expectedFile.readAll();
+ docType = documentElement(expected);
+ }
+ else
+ docType = QLatin1String("dummy");
+
+ bool hasError = true;
+ bool incremental = false;
+
+ QByteArray input(makeCanonical(inputFilePath, docType, hasError, incremental));
+
+ if (!hasError && !expectedFilePath.isEmpty() && input == expected)
+ input = makeCanonical(inputFilePath, docType, hasError, (incremental = true));
+
+ if(hasError)
+ failures.append(qMakePair(id, QString::fromLatin1("Failed to parse %1%2")
+ .arg(incremental?"(incremental run only) ":"")
+ .arg(inputFilePath)));
+
+ if(!expectedFilePath.isEmpty() && input != expected)
+ {
+ missedBaselines.append(MissedBaseline(id, expected, input));
+ return true;
+ }
+ else
+ {
+ successes.append(id);
+ return true;
+ }
+ }
+ else if(type == QLatin1String("error"))
+ {
+ /* Not yet sure about this one. */
+ // TODO
+ return true;
+ }
+ else
+ {
+ qFatal("The input catalog is invalid.");
+ return false;
+ }
+ }
+ else if(localName == QLatin1String("TESTCASES") && m_atts.top().index(QLatin1String("xml:base")) != -1)
+ m_baseURI.pop();
+
+ m_atts.pop();
+
+ return true;
+ }
+
+ enum ParseMode
+ {
+ ParseIncrementally,
+ ParseSinglePass
+ };
+
+ static bool isWellformed(QIODevice *const inputFile, const ParseMode mode)
+ {
+ if (!inputFile)
+ qFatal("%s: inputFile must be a valid QIODevice pointer", Q_FUNC_INFO);
+ if (!inputFile->isOpen())
+ qFatal("%s: inputFile must be opened by the caller", Q_FUNC_INFO);
+ if (mode != ParseIncrementally && mode != ParseSinglePass)
+ qFatal("%s: mode must be either ParseIncrementally or ParseSinglePass", Q_FUNC_INFO);
+
+ if(mode == ParseIncrementally)
+ {
+ QXmlStreamReader reader;
+ QByteArray buffer;
+ int bufferPos = 0;
+
+ buffer = inputFile->readAll();
+
+ while(true)
+ {
+ while(!reader.atEnd())
+ reader.readNext();
+
+ if(bufferPos < buffer.size())
+ {
+ ++bufferPos;
+ reader.addData(QByteArray(buffer.data() + bufferPos, 1));
+ }
+ else
+ break;
+ }
+
+ return !reader.hasError();
+ }
+ else
+ {
+ QXmlStreamReader reader;
+ reader.setDevice(inputFile);
+
+ while(!reader.atEnd())
+ reader.readNext();
+
+ return !reader.hasError();
+ }
+ }
+
+private:
+ QStack<QXmlAttributes> m_atts;
+ QString m_ch;
+ QStack<QUrl> m_baseURI;
+};
+
+class tst_QXmlStream: public QObject
+{
+ Q_OBJECT
+public:
+ tst_QXmlStream() : m_handler(QUrl::fromLocalFile(QLatin1String(catalogFile)))
+ {
+ }
+
+private slots:
+ void initTestCase();
+ void reportFailures() const;
+ void reportFailures_data();
+ void checkBaseline() const;
+ void checkBaseline_data() const;
+ void testReader() const;
+ void testReader_data() const;
+ void reportSuccess() const;
+ void reportSuccess_data() const;
+ void parseXSLTTestSuite() const;
+ void writerHangs() const;
+ void writerAutoFormattingWithComments() const;
+ void writerAutoFormattingWithTabs() const;
+ void writerAutoFormattingWithProcessingInstructions() const;
+ void writerAutoEmptyTags() const;
+ void writeAttributesWithSpace() const;
+ void addExtraNamespaceDeclarations();
+ void setEntityResolver();
+ void readFromQBuffer() const;
+ void readFromQBufferInvalid() const;
+ void readNextStartElement() const;
+ void readElementText() const;
+ void readElementText_data() const;
+ void crashInUTF16Codec() const;
+ void hasAttributeSignature() const;
+ void hasAttribute() const;
+ void writeWithCodec() const;
+ void writeWithUtf8Codec() const;
+ void writeWithStandalone() const;
+ void entitiesAndWhitespace_1() const;
+ void entitiesAndWhitespace_2() const;
+ void testFalsePrematureError() const;
+ void garbageInXMLPrologDefaultCodec() const;
+ void garbageInXMLPrologUTF8Explicitly() const;
+ void clear() const;
+ void checkCommentIndentation() const;
+ void checkCommentIndentation_data() const;
+ void qtbug9196_crash() const;
+ void hasError() const;
+
+private:
+ static QByteArray readFile(const QString &filename);
+
+ TestSuiteHandler m_handler;
+};
+
+void tst_QXmlStream::initTestCase()
+{
+ QFile file(QString::fromLatin1(catalogFile));
+ QVERIFY2(file.open(QIODevice::ReadOnly),
+ qPrintable(QString::fromLatin1("Failed to open the test suite catalog; %1").arg(file.fileName())));
+
+ QXmlInputSource source(&file);
+ QXmlSimpleReader reader;
+ reader.setContentHandler(&m_handler);
+
+ QVERIFY(reader.parse(&source, false));
+}
+
+void tst_QXmlStream::reportFailures() const
+{
+ QFETCH(bool, isError);
+ QFETCH(QString, description);
+
+ QVERIFY2(!isError, qPrintable(description));
+}
+
+void tst_QXmlStream::reportFailures_data()
+{
+ const int len = m_handler.failures.count();
+
+ QTest::addColumn<bool>("isError");
+ QTest::addColumn<QString>("description");
+
+ /* We loop over all our failures(if any!), and output them such
+ * that they appear in the QTestLib log. */
+ for(int i = 0; i < len; ++i)
+ QTest::newRow(m_handler.failures.at(i).first.toLatin1().constData()) << true << m_handler.failures.at(i).second;
+
+ /* We need to add at least one column of test data, otherwise QTestLib complains. */
+ if(len == 0)
+ QTest::newRow("Whole test suite passed") << false << QString();
+
+ /* We compare the test case counts to ensure that we've actually run test cases, that
+ * the driver hasn't been broken or changed without updating the expected count, and
+ * similar reasons. */
+ QCOMPARE(m_handler.runCount, expectedRunCount);
+ QCOMPARE(m_handler.skipCount, expectedSkipCount);
+}
+
+void tst_QXmlStream::checkBaseline() const
+{
+ QFETCH(bool, isError);
+ QFETCH(QString, expected);
+ QFETCH(QString, output);
+
+ if(isError)
+ QCOMPARE(output, expected);
+}
+
+void tst_QXmlStream::checkBaseline_data() const
+{
+ QTest::addColumn<bool>("isError");
+ QTest::addColumn<QString>("expected");
+ QTest::addColumn<QString>("output");
+
+ const int len = m_handler.missedBaselines.count();
+
+ for(int i = 0; i < len; ++i)
+ {
+ const TestSuiteHandler::MissedBaseline &b = m_handler.missedBaselines.at(i);
+
+ /* We indeed don't know what encoding the content is in so in some cases fromUtf8
+ * is all wrong, but it's an acceptable guess for error reporting. */
+ QTest::newRow(b.id.toLatin1().constData())
+ << true
+ << QString::fromUtf8(b.expected.constData())
+ << QString::fromUtf8(b.output.constData());
+ }
+
+ if(len == 0)
+ QTest::newRow("dummy") << false << QString() << QString();
+}
+
+void tst_QXmlStream::reportSuccess() const
+{
+ QFETCH(bool, isError);
+
+ QVERIFY(!isError);
+}
+
+void tst_QXmlStream::reportSuccess_data() const
+{
+ QTest::addColumn<bool>("isError");
+
+ const int len = m_handler.successes.count();
+
+ for(int i = 0; i < len; ++i)
+ QTest::newRow(m_handler.successes.at(i).toLatin1().constData()) << false;
+
+ if(len == 0)
+ QTest::newRow("No test cases succeeded.") << true;
+}
+
+QByteArray tst_QXmlStream::readFile(const QString &filename)
+{
+ QFile file(filename);
+ file.open(QIODevice::ReadOnly);
+
+ QXmlStreamReader reader;
+
+ reader.setDevice(&file);
+ QByteArray outarray;
+ QTextStream writer(&outarray);
+ // We always want UTF-8, and not what the system picks up.
+ writer.setCodec("UTF-8");
+
+ while (!reader.atEnd()) {
+ reader.readNext();
+ writer << reader.tokenString() << "(";
+ if (reader.isWhitespace())
+ writer << " whitespace";
+ if (reader.isCDATA())
+ writer << " CDATA";
+ if (reader.isStartDocument() && reader.isStandaloneDocument())
+ writer << " standalone";
+ if (!reader.text().isEmpty())
+ writer << " text=\"" << reader.text().toString() << "\"";
+ if (!reader.processingInstructionTarget().isEmpty())
+ writer << " processingInstructionTarget=\"" << reader.processingInstructionTarget().toString() << "\"";
+ if (!reader.processingInstructionData().isEmpty())
+ writer << " processingInstructionData=\"" << reader.processingInstructionData().toString() << "\"";
+ if (!reader.dtdName().isEmpty())
+ writer << " dtdName=\"" << reader.dtdName().toString() << "\"";
+ if (!reader.dtdPublicId().isEmpty())
+ writer << " dtdPublicId=\"" << reader.dtdPublicId().toString() << "\"";
+ if (!reader.dtdSystemId().isEmpty())
+ writer << " dtdSystemId=\"" << reader.dtdSystemId().toString() << "\"";
+ if (!reader.documentVersion().isEmpty())
+ writer << " documentVersion=\"" << reader.documentVersion().toString() << "\"";
+ if (!reader.documentEncoding().isEmpty())
+ writer << " documentEncoding=\"" << reader.documentEncoding().toString() << "\"";
+ if (!reader.name().isEmpty())
+ writer << " name=\"" << reader.name().toString() << "\"";
+ if (!reader.namespaceUri().isEmpty())
+ writer << " namespaceUri=\"" << reader.namespaceUri().toString() << "\"";
+ if (!reader.qualifiedName().isEmpty())
+ writer << " qualifiedName=\"" << reader.qualifiedName().toString() << "\"";
+ if (!reader.prefix().isEmpty())
+ writer << " prefix=\"" << reader.prefix().toString() << "\"";
+ if (reader.attributes().size()) {
+ foreach(QXmlStreamAttribute attribute, reader.attributes()) {
+ writer << endl << " Attribute(";
+ if (!attribute.name().isEmpty())
+ writer << " name=\"" << attribute.name().toString() << "\"";
+ if (!attribute.namespaceUri().isEmpty())
+ writer << " namespaceUri=\"" << attribute.namespaceUri().toString() << "\"";
+ if (!attribute.qualifiedName().isEmpty())
+ writer << " qualifiedName=\"" << attribute.qualifiedName().toString() << "\"";
+ if (!attribute.prefix().isEmpty())
+ writer << " prefix=\"" << attribute.prefix().toString() << "\"";
+ if (!attribute.value().isEmpty())
+ writer << " value=\"" << attribute.value().toString() << "\"";
+ writer << " )" << endl;
+ }
+ }
+ if (reader.namespaceDeclarations().size()) {
+ foreach(QXmlStreamNamespaceDeclaration namespaceDeclaration, reader.namespaceDeclarations()) {
+ writer << endl << " NamespaceDeclaration(";
+ if (!namespaceDeclaration.prefix().isEmpty())
+ writer << " prefix=\"" << namespaceDeclaration.prefix().toString() << "\"";
+ if (!namespaceDeclaration.namespaceUri().isEmpty())
+ writer << " namespaceUri=\"" << namespaceDeclaration.namespaceUri().toString() << "\"";
+ writer << " )" << endl;
+ }
+ }
+ if (reader.notationDeclarations().size()) {
+ foreach(QXmlStreamNotationDeclaration notationDeclaration, reader.notationDeclarations()) {
+ writer << endl << " NotationDeclaration(";
+ if (!notationDeclaration.name().isEmpty())
+ writer << " name=\"" << notationDeclaration.name().toString() << "\"";
+ if (!notationDeclaration.systemId().isEmpty())
+ writer << " systemId=\"" << notationDeclaration.systemId().toString() << "\"";
+ if (!notationDeclaration.publicId().isEmpty())
+ writer << " publicId=\"" << notationDeclaration.publicId().toString() << "\"";
+ writer << " )" << endl;
+ }
+ }
+ if (reader.entityDeclarations().size()) {
+ foreach(QXmlStreamEntityDeclaration entityDeclaration, reader.entityDeclarations()) {
+ writer << endl << " EntityDeclaration(";
+ if (!entityDeclaration.name().isEmpty())
+ writer << " name=\"" << entityDeclaration.name().toString() << "\"";
+ if (!entityDeclaration.notationName().isEmpty())
+ writer << " notationName=\"" << entityDeclaration.notationName().toString() << "\"";
+ if (!entityDeclaration.systemId().isEmpty())
+ writer << " systemId=\"" << entityDeclaration.systemId().toString() << "\"";
+ if (!entityDeclaration.publicId().isEmpty())
+ writer << " publicId=\"" << entityDeclaration.publicId().toString() << "\"";
+ if (!entityDeclaration.value().isEmpty())
+ writer << " value=\"" << entityDeclaration.value().toString() << "\"";
+ writer << " )" << endl;
+ }
+ }
+ writer << " )" << endl;
+ }
+ if (reader.hasError())
+ writer << "ERROR: " << reader.errorString() << endl;
+ return outarray;
+}
+
+void tst_QXmlStream::testReader() const
+{
+ QFETCH(QString, xml);
+ QFETCH(QString, ref);
+ QFile file(ref);
+ if (!file.exists()) {
+ QByteArray reference = readFile(xml);
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ file.write(reference);
+ file.close();
+ } else {
+ QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
+ QString reference = QString::fromUtf8(file.readAll());
+ QString qxmlstream = QString::fromUtf8(readFile(xml));
+ QCOMPARE(qxmlstream, reference);
+ }
+}
+
+void tst_QXmlStream::testReader_data() const
+{
+ QTest::addColumn<QString>("xml");
+ QTest::addColumn<QString>("ref");
+ QDir dir;
+ dir.cd(SRCDIR "data/");
+ foreach(QString filename , dir.entryList(QStringList() << "*.xml")) {
+ QString reference = QFileInfo(filename).baseName() + ".ref";
+ QTest::newRow(dir.filePath(filename).toLatin1().data()) << dir.filePath(filename) << dir.filePath(reference);
+ }
+}
+
+void tst_QXmlStream::parseXSLTTestSuite() const
+{
+ /* We disable this test for now, so it doesn't show up as an XFAIL. */
+#if 0
+ QEXPECT_FAIL("", "Two problems needs to be solved in order to enable this test: \n"
+ "* The XSLT suite is 69 MB large, which is quite a lot compared to the existing XML suite on 2 mb.\n"
+ "* We need a c14n-like implementation in order to compare the outputs.", Abort);
+ QVERIFY(false);
+
+ /* We don't yet know this. TODO */
+ int xsltExpectedRunCount = -1;
+
+ QStringList nameFilters;
+ nameFilters.append("*.xsl");
+ nameFilters.append("*.xml");
+
+ QDirIterator dirIterator("XSLT-Test-Suite/", nameFilters,
+ QDir::AllEntries, QDirIterator::Subdirectories);
+
+ int filesParsed = 0;
+
+ while(dirIterator.hasNext())
+ {
+ dirIterator.next();
+
+ const QString fp(dirIterator.filePath());
+ qDebug() << "Found" << fp;
+
+ QFile inputFile(fp);
+ QVERIFY(inputFile.open(QIODevice::ReadOnly));
+
+ /* Read in and write out to the QByteArray. */
+ QByteArray outputArray;
+ {
+ QXmlStreamReader reader(&inputFile);
+
+ QXmlStreamWriter writer(&outputArray);
+
+ while(!reader.atEnd())
+ {
+ writer.writeCurrentToken(reader);
+ reader.readNext();
+
+ QVERIFY2(!reader.hasError(), qPrintable(reader.errorString()));
+ }
+ /* Might be we got an error here, but we don't care. */
+ }
+
+ /* Read in the two files, and compare them. */
+ {
+ QBuffer outputBuffer(&outputArray);
+ outputBuffer.open(QIODevice::ReadOnly);
+ inputFile.close();
+ inputFile.open(QIODevice::ReadOnly);
+
+ QString message;
+ const bool isEqual = QC14N::isEqual(&inputFile, &outputBuffer, &message);
+
+ QVERIFY2(isEqual, message.toLatin1().constData());
+
+ ++filesParsed;
+ }
+ }
+
+ QCOMPARE(xsltExpectedRunCount, filesParsed);
+#endif
+}
+
+void tst_QXmlStream::addExtraNamespaceDeclarations()
+{
+ const char *data = "<bla><undeclared:foo/><undeclared_too:foo/></bla>";
+ {
+ QXmlStreamReader xml(data);
+ while (!xml.atEnd()) {
+ xml.readNext();
+ }
+ QVERIFY2(xml.hasError(), "namespaces undeclared");
+ }
+ {
+ QXmlStreamReader xml(data);
+ xml.addExtraNamespaceDeclaration(QXmlStreamNamespaceDeclaration("undeclared", "blabla"));
+ xml.addExtraNamespaceDeclaration(QXmlStreamNamespaceDeclaration("undeclared_too", "foofoo"));
+ while (!xml.atEnd()) {
+ xml.readNext();
+ }
+ QVERIFY2(!xml.hasError(), xml.errorString().toLatin1().constData());
+ }
+}
+
+
+class EntityResolver : public QXmlStreamEntityResolver {
+public:
+ QString resolveUndeclaredEntity(const QString &name) {
+ static int count = 0;
+ return name.toUpper() + QString::number(++count);
+ }
+};
+void tst_QXmlStream::setEntityResolver()
+{
+ const char *data = "<bla foo=\"&undeclared;\">&undeclared_too;</bla>";
+ {
+ QXmlStreamReader xml(data);
+ while (!xml.atEnd()) {
+ xml.readNext();
+ }
+ QVERIFY2(xml.hasError(), "undeclared entities");
+ }
+ {
+ QString foo;
+ QString bla_text;
+ QXmlStreamReader xml(data);
+ EntityResolver resolver;
+ xml.setEntityResolver(&resolver);
+ while (!xml.atEnd()) {
+ xml.readNext();
+ if (xml.isStartElement())
+ foo = xml.attributes().value("foo").toString();
+ if (xml.isCharacters())
+ bla_text += xml.text().toString();
+ }
+ QVERIFY2(!xml.hasError(), xml.errorString().toLatin1().constData());
+ QCOMPARE(foo, QLatin1String("UNDECLARED1"));
+ QCOMPARE(bla_text, QLatin1String("UNDECLARED_TOO2"));
+ }
+}
+
+void tst_QXmlStream::testFalsePrematureError() const // task 179320
+{
+ const char *illegal_start = "illegal<sta";
+ const char *legal_start = "<sta";
+ const char* end = "rt/>";
+ {
+ QXmlStreamReader xml("");
+ while (!xml.atEnd()) {
+ xml.readNext();
+ }
+ QVERIFY(xml.error() == QXmlStreamReader::PrematureEndOfDocumentError);
+ QCOMPARE(xml.errorString(), QLatin1String("Premature end of document."));
+ xml.addData(legal_start);
+ while (!xml.atEnd()) {
+ xml.readNext();
+ }
+ QVERIFY(xml.error() == QXmlStreamReader::PrematureEndOfDocumentError);
+ QCOMPARE(xml.errorString(), QLatin1String("Premature end of document."));
+ xml.addData(end);
+ while (!xml.atEnd()) {
+ xml.readNext();
+ }
+ QVERIFY(!xml.hasError());
+ }
+ {
+ QXmlStreamReader xml(illegal_start);
+ while (!xml.atEnd()) {
+ xml.readNext();
+ }
+ QVERIFY(xml.hasError());
+ QCOMPARE(xml.errorString(), QLatin1String("Start tag expected."));
+ QVERIFY(xml.error() == QXmlStreamReader::NotWellFormedError);
+ }
+}
+
+/*!
+ See task 188737. Crash due to using empty QStack.
+ */
+void tst_QXmlStream::writerHangs() const
+{
+ QFile file("test.xml");
+
+ QVERIFY(file.open(QIODevice::WriteOnly));
+
+ QXmlStreamWriter writer(&file);
+ double radius = 4.0;
+ writer.setAutoFormatting(true);
+ writer.writeStartDocument();
+ writer.writeEmptyElement("circle");
+ writer.writeAttribute("radius", QString::number(radius));
+ writer.writeEndElement();
+ writer.writeEndDocument();
+}
+/*!
+ Task 189611
+*/
+void tst_QXmlStream::writerAutoFormattingWithComments() const
+{
+ QBuffer buffer;
+ buffer.open(QIODevice::WriteOnly);
+
+ QXmlStreamWriter writer(&buffer);
+ writer.setAutoFormatting(true);
+ writer.writeStartDocument();
+ writer.writeComment("This is a comment");
+ writer.writeEndDocument();
+ const char *str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--This is a comment-->\n";
+ QCOMPARE(buffer.buffer().data(), str);
+}
+
+
+/*!
+ Task 206782
+*/
+void tst_QXmlStream::writerAutoFormattingWithTabs() const
+{
+ QBuffer buffer;
+ buffer.open(QIODevice::WriteOnly);
+
+
+ QXmlStreamWriter writer(&buffer);
+ writer.setAutoFormatting(true);
+ writer.setAutoFormattingIndent(-1);
+ QCOMPARE(writer.autoFormattingIndent(), -1);
+ writer.writeStartDocument();
+ writer.writeStartElement("A");
+ writer.writeStartElement("B");
+ writer.writeEndDocument();
+ const char *str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<A>\n\t<B/>\n</A>\n";
+ QCOMPARE(buffer.buffer().data(), str);
+}
+
+void tst_QXmlStream::writerAutoFormattingWithProcessingInstructions() const
+{
+ QBuffer buffer;
+ buffer.open(QIODevice::WriteOnly);
+
+ QXmlStreamWriter writer(&buffer);
+ writer.setAutoFormatting(true);
+ writer.writeStartDocument();
+ writer.writeProcessingInstruction("B", "C");
+ writer.writeStartElement("A");
+ writer.writeEndElement();
+ writer.writeEndDocument();
+ const char *str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?B C?>\n<A/>\n";
+ QCOMPARE(buffer.buffer().data(), str);
+}
+
+/*!
+ Task 204822
+*/
+void tst_QXmlStream::writeAttributesWithSpace() const
+{
+ QBuffer buffer;
+ buffer.open(QIODevice::WriteOnly);
+
+
+ QXmlStreamWriter writer(&buffer);
+ writer.writeStartDocument();
+ writer.writeEmptyElement("A");
+ writer.writeAttribute("attribute", QString("value")+QChar::Nbsp);
+ writer.writeEndDocument();
+ QString s = QString("<?xml version=\"1.0\" encoding=\"UTF-8\"?><A attribute=\"value%1\"/>\n").arg(QChar(QChar::Nbsp));
+ QCOMPARE(buffer.buffer().data(), s.toUtf8().data());
+}
+
+/*!
+ Task 209340
+*/
+void tst_QXmlStream::writerAutoEmptyTags() const
+{
+ QBuffer buffer;
+ buffer.open(QIODevice::WriteOnly);
+
+
+ QXmlStreamWriter writer(&buffer);
+
+ writer.writeStartDocument();
+
+ writer.writeStartElement("Hans");
+ writer.writeAttribute("key", "value");
+ writer.writeEndElement();
+
+ writer.writeStartElement("Hans");
+ writer.writeAttribute("key", "value");
+ writer.writeEmptyElement("Leer");
+ writer.writeAttribute("key", "value");
+ writer.writeEndElement();
+
+ writer.writeStartElement("Hans");
+ writer.writeAttribute("key", "value");
+ writer.writeCharacters("stuff");
+ writer.writeEndElement();
+
+ writer.writeEndDocument();
+
+ QString s = QString("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Hans key=\"value\"/><Hans key=\"value\"><Leer key=\"value\"/></Hans><Hans key=\"value\">stuff</Hans>\n");
+ QCOMPARE(buffer.buffer().data(), s.toUtf8().data());
+}
+
+void tst_QXmlStream::readFromQBuffer() const
+{
+ QByteArray in("<e/>");
+ QBuffer buffer(&in);
+ QVERIFY(buffer.open(QIODevice::ReadOnly));
+
+ QXmlStreamReader reader(&buffer);
+
+ while(!reader.atEnd())
+ {
+ reader.readNext();
+ }
+
+ QVERIFY(!reader.hasError());
+}
+
+void tst_QXmlStream::readFromQBufferInvalid() const
+{
+ QByteArray in("<e/><e/>");
+ QBuffer buffer(&in);
+ QVERIFY(buffer.open(QIODevice::ReadOnly));
+
+ QXmlStreamReader reader(&buffer);
+
+ while(!reader.atEnd())
+ {
+ reader.readNext();
+ }
+
+ QVERIFY(reader.hasError());
+}
+
+void tst_QXmlStream::readNextStartElement() const
+{
+ QLatin1String in("<?xml version=\"1.0\"?><A><!-- blah --><B><C/></B><B attr=\"value\"/>text</A>");
+ QXmlStreamReader reader(in);
+
+ QVERIFY(reader.readNextStartElement());
+ QVERIFY(reader.isStartElement() && reader.name() == "A");
+
+ int amountOfB = 0;
+ while (reader.readNextStartElement()) {
+ QVERIFY(reader.isStartElement() && reader.name() == "B");
+ ++amountOfB;
+ reader.skipCurrentElement();
+ }
+
+ QCOMPARE(amountOfB, 2);
+}
+
+void tst_QXmlStream::readElementText() const
+{
+ QFETCH(QXmlStreamReader::ReadElementTextBehaviour, behaviour);
+ QFETCH(QString, input);
+ QFETCH(QString, expected);
+
+ QXmlStreamReader reader(input);
+
+ QVERIFY(reader.readNextStartElement());
+ QCOMPARE(reader.readElementText(behaviour), expected);
+}
+
+void tst_QXmlStream::readElementText_data() const
+{
+ QTest::addColumn<QXmlStreamReader::ReadElementTextBehaviour>("behaviour");
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<QString>("expected");
+
+ QString validInput("<p>He was <em>never</em> going to admit<!-- TODO: rephrase --> his mistake.</p>");
+ QString invalidInput("<p>invalid...<p>");
+ QString invalidOutput("invalid...");
+
+ QTest::newRow("ErrorOnUnexpectedElement")
+ << QXmlStreamReader::ErrorOnUnexpectedElement
+ << validInput << QString("He was ");
+
+ QTest::newRow("IncludeChildElements")
+ << QXmlStreamReader::IncludeChildElements
+ << validInput << QString("He was never going to admit his mistake.");
+
+ QTest::newRow("SkipChildElements")
+ << QXmlStreamReader::SkipChildElements
+ << validInput << QString("He was going to admit his mistake.");
+
+ QTest::newRow("ErrorOnUnexpectedElement Invalid")
+ << QXmlStreamReader::ErrorOnUnexpectedElement
+ << invalidInput << invalidOutput;
+
+ QTest::newRow("IncludeChildElements Invalid")
+ << QXmlStreamReader::IncludeChildElements
+ << invalidInput << invalidOutput;
+
+ QTest::newRow("SkipChildElements Invalid")
+ << QXmlStreamReader::SkipChildElements
+ << invalidInput << invalidOutput;
+}
+
+void tst_QXmlStream::crashInUTF16Codec() const
+{
+ QEventLoop eventLoop;
+
+ QNetworkAccessManager networkManager;
+ QNetworkRequest request(QUrl::fromLocalFile(QLatin1String(SRCDIR "data/051reduced.xml")));
+ QNetworkReply *const reply = networkManager.get(request);
+ eventLoop.connect(reply, SIGNAL(finished()), SLOT(quit()));
+
+ QCOMPARE(eventLoop.exec(), 0);
+
+ QXmlStreamReader reader(reply);
+ while(!reader.atEnd())
+ {
+ reader.readNext();
+ continue;
+ }
+
+ QVERIFY(!reader.hasError());
+}
+
+/*
+ In addition to QTestLib's flags, one can specify "-c <filename>" and have that file output in its canonical form.
+*/
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+
+ if (argc == 3 && QByteArray(argv[1]).startsWith("-c")) {
+ // output canonical only
+ bool error = false;
+ QByteArray canonical = makeCanonical(argv[2], "doc", error);
+ QTextStream myStdOut(stdout);
+ myStdOut << canonical << endl;
+ exit(0);
+ }
+
+ tst_QXmlStream tc;
+ return QTest::qExec(&tc, argc, argv);
+}
+
+void tst_QXmlStream::hasAttributeSignature() const
+{
+ /* These functions should be const so invoke all
+ * of them on a const object. */
+ const QXmlStreamAttributes atts;
+ atts.hasAttribute(QLatin1String("localName"));
+ atts.hasAttribute(QString::fromLatin1("localName"));
+ atts.hasAttribute(QString::fromLatin1("http://example.com/"), QLatin1String("localName"));
+
+ /* The input arguments should be const references, not mutable references
+ * so pass const references. */
+ const QLatin1String latin1StringLocalName(QLatin1String("localName"));
+ const QString qStringLocalname(QLatin1String("localName"));
+ const QString namespaceURI(QLatin1String("http://example.com/"));
+
+ /* QLatin1String overload. */
+ atts.hasAttribute(latin1StringLocalName);
+
+ /* QString overload. */
+ atts.hasAttribute(latin1StringLocalName);
+
+ /* namespace/local name overload. */
+ atts.hasAttribute(namespaceURI, qStringLocalname);
+}
+
+void tst_QXmlStream::hasAttribute() const
+{
+ QXmlStreamReader reader(QLatin1String("<e xmlns:p='http://example.com/2' xmlns='http://example.com/' "
+ "attr1='value' attr2='value2' p:attr3='value3' emptyAttr=''><noAttributes/></e>"));
+
+ QCOMPARE(reader.readNext(), QXmlStreamReader::StartDocument);
+ QCOMPARE(reader.readNext(), QXmlStreamReader::StartElement);
+ const QXmlStreamAttributes &atts = reader.attributes();
+
+ /* QLatin1String overload. */
+ QVERIFY(atts.hasAttribute(QLatin1String("attr1")));
+ QVERIFY(atts.hasAttribute(QLatin1String("attr2")));
+ QVERIFY(atts.hasAttribute(QLatin1String("p:attr3")));
+ QVERIFY(atts.hasAttribute(QLatin1String("emptyAttr")));
+ QVERIFY(!atts.hasAttribute(QLatin1String("DOESNOTEXIST")));
+
+ /* Test with an empty & null namespaces. */
+ QVERIFY(atts.hasAttribute(QString(), QLatin1String("attr2"))); /* A null string. */
+ QVERIFY(atts.hasAttribute(QLatin1String(""), QLatin1String("attr2"))); /* An empty string. */
+
+ /* QString overload. */
+ QVERIFY(atts.hasAttribute(QString::fromLatin1("attr1")));
+ QVERIFY(atts.hasAttribute(QString::fromLatin1("attr2")));
+ QVERIFY(atts.hasAttribute(QString::fromLatin1("p:attr3")));
+ QVERIFY(atts.hasAttribute(QString::fromLatin1("emptyAttr")));
+ QVERIFY(!atts.hasAttribute(QString::fromLatin1("DOESNOTEXIST")));
+
+ /* namespace/local name overload. */
+ QVERIFY(atts.hasAttribute(QString(), QString::fromLatin1("attr1")));
+ /* Attributes do not pick up the default namespace. */
+ QVERIFY(!atts.hasAttribute(QLatin1String("http://example.com/"), QString::fromLatin1("attr1")));
+ QVERIFY(atts.hasAttribute(QLatin1String("http://example.com/2"), QString::fromLatin1("attr3")));
+ QVERIFY(atts.hasAttribute(QString(), QString::fromLatin1("emptyAttr")));
+ QVERIFY(!atts.hasAttribute(QLatin1String("http://example.com/2"), QString::fromLatin1("DOESNOTEXIST")));
+ QVERIFY(!atts.hasAttribute(QLatin1String("WRONG_NAMESPACE"), QString::fromLatin1("attr3")));
+
+ /* Invoke on an QXmlStreamAttributes that has no attributes at all. */
+ QCOMPARE(reader.readNext(), QXmlStreamReader::StartElement);
+
+ const QXmlStreamAttributes &atts2 = reader.attributes();
+ QVERIFY(atts2.isEmpty());
+
+ /* QLatin1String overload. */
+ QVERIFY(!atts.hasAttribute(QLatin1String("arbitraryName")));
+
+ /* QString overload. */
+ QVERIFY(!atts.hasAttribute(QString::fromLatin1("arbitraryName")));
+
+ /* namespace/local name overload. */
+ QVERIFY(!atts.hasAttribute(QLatin1String("http://example.com/"), QString::fromLatin1("arbitraryName")));
+
+ while(!reader.atEnd())
+ reader.readNext();
+
+ QVERIFY(!reader.hasError());
+}
+
+
+void tst_QXmlStream::writeWithCodec() const
+{
+ QByteArray outarray;
+ QXmlStreamWriter writer(&outarray);
+ writer.setAutoFormatting(true);
+
+ QTextCodec *codec = QTextCodec::codecForName("ISO 8859-15");
+ QVERIFY(codec);
+ writer.setCodec(codec);
+
+ const char *latin2 = "hé hé";
+ const QString string = codec->toUnicode(latin2);
+
+
+ writer.writeStartDocument("1.0");
+
+ writer.writeTextElement("foo", string);
+ writer.writeEndElement();
+ writer.writeEndDocument();
+
+ QVERIFY(outarray.contains(latin2));
+ QVERIFY(outarray.contains(codec->name()));
+}
+
+void tst_QXmlStream::writeWithUtf8Codec() const
+{
+ QByteArray outarray;
+ QXmlStreamWriter writer(&outarray);
+
+ QTextCodec *codec = QTextCodec::codecForMib(106); // utf-8
+ QVERIFY(codec);
+ writer.setCodec(codec);
+
+ writer.writeStartDocument("1.0");
+ static const char begin[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
+ QVERIFY(outarray.startsWith(begin));
+}
+
+void tst_QXmlStream::writeWithStandalone() const
+{
+ {
+ QByteArray outarray;
+ QXmlStreamWriter writer(&outarray);
+ writer.setAutoFormatting(true);
+ writer.writeStartDocument("1.0", true);
+ writer.writeEndDocument();
+ const char *ref = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n";
+ QCOMPARE(outarray.constData(), ref);
+ }
+ {
+ QByteArray outarray;
+ QXmlStreamWriter writer(&outarray);
+ writer.setAutoFormatting(true);
+ writer.writeStartDocument("1.0", false);
+ writer.writeEndDocument();
+ const char *ref = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n";
+ QCOMPARE(outarray.constData(), ref);
+ }
+}
+
+void tst_QXmlStream::entitiesAndWhitespace_1() const
+{
+ QXmlStreamReader reader(QLatin1String("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\"><test>&extEnt;</test>"));
+
+ int entityCount = 0;
+ int characterCount = 0;
+ while(!reader.atEnd())
+ {
+ QXmlStreamReader::TokenType token = reader.readNext();
+ switch(token)
+ {
+ case QXmlStreamReader::Characters:
+ characterCount++;
+ break;
+ case QXmlStreamReader::EntityReference:
+ entityCount++;
+ break;
+ default:
+ ;
+ }
+ }
+
+ QCOMPARE(entityCount, 1);
+ QCOMPARE(characterCount, 0);
+ QVERIFY(!reader.hasError());
+}
+
+void tst_QXmlStream::entitiesAndWhitespace_2() const
+{
+ QXmlStreamReader reader(QLatin1String("<test>&extEnt;</test>"));
+
+ int entityCount = 0;
+ int characterCount = 0;
+ while(!reader.atEnd())
+ {
+ QXmlStreamReader::TokenType token = reader.readNext();
+ switch(token)
+ {
+ case QXmlStreamReader::Characters:
+ characterCount++;
+ break;
+ case QXmlStreamReader::EntityReference:
+ entityCount++;
+ break;
+ default:
+ ;
+ }
+ }
+
+ QCOMPARE(entityCount, 0);
+ QCOMPARE(characterCount, 0);
+ QVERIFY(reader.hasError());
+}
+
+void tst_QXmlStream::garbageInXMLPrologDefaultCodec() const
+{
+ QBuffer out;
+ QVERIFY(out.open(QIODevice::ReadWrite));
+
+ QXmlStreamWriter writer (&out);
+ writer.writeStartDocument();
+ writer.writeEmptyElement("Foo");
+ writer.writeEndDocument();
+
+ QCOMPARE(out.data(), QByteArray("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Foo/>\n"));
+}
+
+void tst_QXmlStream::garbageInXMLPrologUTF8Explicitly() const
+{
+ QBuffer out;
+ QVERIFY(out.open(QIODevice::ReadWrite));
+
+ QXmlStreamWriter writer (&out);
+ writer.setCodec("UTF-8");
+ writer.writeStartDocument();
+ writer.writeEmptyElement("Foo");
+ writer.writeEndDocument();
+
+ QCOMPARE(out.data(), QByteArray("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Foo/>\n"));
+}
+
+void tst_QXmlStream::clear() const // task 228768
+{
+ QString xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><body></body>";
+ QXmlStreamReader reader;
+
+ reader.addData(xml);
+ while (!reader.atEnd()) {
+ reader.readNext();
+ }
+ QCOMPARE(reader.tokenType(), QXmlStreamReader::EndDocument);
+
+ reader.clear();
+ reader.addData(xml);
+ while (!reader.atEnd()) {
+ reader.readNext();
+ }
+ QCOMPARE(reader.tokenType(), QXmlStreamReader::EndDocument);
+
+
+ // now we stop in the middle to check whether clear really works
+ reader.clear();
+ reader.addData(xml);
+ reader.readNext();
+ reader.readNext();
+ QCOMPARE(reader.tokenType(), QXmlStreamReader::StartElement);
+
+ // and here the final read
+ reader.clear();
+ reader.addData(xml);
+ while (!reader.atEnd()) {
+ reader.readNext();
+ }
+ QCOMPARE(reader.tokenType(), QXmlStreamReader::EndDocument);
+}
+
+void tst_QXmlStream::checkCommentIndentation_data() const
+{
+
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<QString>("expectedOutput");
+
+ QString simpleInput = "<a><!-- bla --></a>";
+ QString simpleOutput = "<?xml version=\"1.0\"?>\n"
+ "<a>\n"
+ " <!-- bla -->\n"
+ "</a>\n";
+ QTest::newRow("simple-comment") << simpleInput << simpleOutput;
+
+ QString advancedInput = "<a><!-- bla --><!-- bla --><b><!-- bla --><c><!-- bla --></c><!-- bla --></b></a>";
+ QString advancedOutput = "<?xml version=\"1.0\"?>\n"
+ "<a>\n"
+ " <!-- bla -->\n"
+ " <!-- bla -->\n"
+ " <b>\n"
+ " <!-- bla -->\n"
+ " <c>\n"
+ " <!-- bla -->\n"
+ " </c>\n"
+ " <!-- bla -->\n"
+ " </b>\n"
+ "</a>\n";
+ QTest::newRow("advanced-comment") << advancedInput << advancedOutput;
+}
+
+void tst_QXmlStream::checkCommentIndentation() const // task 256468
+{
+ QFETCH(QString, input);
+ QFETCH(QString, expectedOutput);
+ QString output;
+ QXmlStreamReader reader(input);
+ QXmlStreamWriter writer(&output);
+ writer.setAutoFormatting(true);
+ writer.setAutoFormattingIndent(3);
+
+ while (!reader.atEnd()) {
+ reader.readNext();
+ if (reader.error()) {
+ QFAIL("error reading XML input");
+ } else {
+ writer.writeCurrentToken(reader);
+ }
+ }
+ QCOMPARE(output, expectedOutput);
+}
+
+void tst_QXmlStream::qtbug9196_crash() const
+{
+ // the following input used to produce a crash in the stream reader
+ QByteArray ba("<a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a>"
+ "<a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a><a></a>");
+ QXmlStreamReader xml(ba);
+ while (!xml.atEnd()) {
+ xml.readNext();
+ }
+}
+
+class FakeBuffer : public QBuffer
+{
+protected:
+ qint64 writeData(const char *c, qint64 i)
+ {
+ qint64 ai = qMin(m_capacity, i);
+ m_capacity -= ai;
+ return ai ? QBuffer::writeData(c, ai) : 0;
+ }
+public:
+ void setCapacity(int capacity) { m_capacity = capacity; }
+private:
+ qint64 m_capacity;
+};
+
+void tst_QXmlStream::hasError() const
+{
+ {
+ FakeBuffer fb;
+ QVERIFY(fb.open(QBuffer::ReadWrite));
+ fb.setCapacity(1000);
+ QXmlStreamWriter writer(&fb);
+ writer.writeStartDocument();
+ writer.writeEndDocument();
+ QVERIFY(!writer.hasError());
+ QCOMPARE(fb.data(), QByteArray("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"));
+ }
+
+ {
+ // Failure caused by write(QString)
+ FakeBuffer fb;
+ QVERIFY(fb.open(QBuffer::ReadWrite));
+ fb.setCapacity(strlen("<?xml version=\""));
+ QXmlStreamWriter writer(&fb);
+ writer.writeStartDocument();
+ QVERIFY(writer.hasError());
+ QCOMPARE(fb.data(), QByteArray("<?xml version=\""));
+ }
+
+ {
+ // Failure caused by write(char *)
+ FakeBuffer fb;
+ QVERIFY(fb.open(QBuffer::ReadWrite));
+ fb.setCapacity(strlen("<?xml version=\"1.0"));
+ QXmlStreamWriter writer(&fb);
+ writer.writeStartDocument();
+ QVERIFY(writer.hasError());
+ QCOMPARE(fb.data(), QByteArray("<?xml version=\"1.0"));
+ }
+
+ {
+ // Failure caused by write(QStringRef)
+ FakeBuffer fb;
+ QVERIFY(fb.open(QBuffer::ReadWrite));
+ fb.setCapacity(strlen("<?xml version=\"1.0\" encoding=\"UTF-8\"?><test xmlns:"));
+ QXmlStreamWriter writer(&fb);
+ writer.writeStartDocument();
+ writer.writeStartElement("test");
+ writer.writeNamespace("http://foo.bar", "foo");
+ QVERIFY(writer.hasError());
+ QCOMPARE(fb.data(), QByteArray("<?xml version=\"1.0\" encoding=\"UTF-8\"?><test xmlns:"));
+ }
+
+ {
+ // Refusal to write after 1st failure
+ FakeBuffer fb;
+ QVERIFY(fb.open(QBuffer::ReadWrite));
+ fb.setCapacity(10);
+ QXmlStreamWriter writer(&fb);
+ writer.writeStartDocument();
+ QVERIFY(writer.hasError());
+ QCOMPARE(fb.data(), QByteArray("<?xml vers"));
+ fb.setCapacity(1000);
+ writer.writeStartElement("test"); // literal & qstring
+ writer.writeNamespace("http://foo.bar", "foo"); // literal & qstringref
+ QVERIFY(writer.hasError());
+ QCOMPARE(fb.data(), QByteArray("<?xml vers"));
+ }
+
+}
+
+#include "tst_qxmlstream.moc"
+// vim: et:ts=4:sw=4:sts=4
diff --git a/tests/auto/corelib/xml/xml.pro b/tests/auto/corelib/xml/xml.pro
new file mode 100644
index 0000000000..53836cb7f0
--- /dev/null
+++ b/tests/auto/corelib/xml/xml.pro
@@ -0,0 +1,3 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qxmlstream